From 94700d322c45e078a06731e8e5cfe408c526b513 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Thu, 12 Dec 2024 11:26:31 +0100 Subject: [PATCH 001/109] Fix last release, just to get a commit in here. --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index cdf4807ffb..244eee6dc7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,7 +16,7 @@ project = "GETTSIM" copyright = f"2019-{dt.datetime.today().year}, GETTSIM team" # noqa: A001 author = "GETTSIM team" -release = "0.5.1" +release = "0.7.0" version = ".".join(release.split(".")[:2]) # -- General configuration --------------------------------------------------- From 6c6c01551f739dc9cd921f264a6a1ccdea0d31f4 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Sat, 15 Feb 2025 20:32:29 +0100 Subject: [PATCH 002/109] Namespaces: Infrastructure (#780) This PR adds the namespace infrastructure to GETTSIM. - [x] Write `policy_function` decorator (rename `policy_info` and change behavior so that a `PolicyFunction` instance is returned). ~Apply to all TT functions.~ (that should be part of renamings) - [x] Check that functions in module with same simple_name have the correct start_date, end_date specs (this was removed from the policy_info decorator). - [x] Remove doubled levels in the functions tree automatically (to avoid writing functions in `__init__.py`). - [x] Go over type hints for aggregation functions. - [x] Refactor interface module. - [x] Implement some safety checks - [x] No function should have the same name as a module in the same directory - [x] No trailing underscores in module names (for [DAGS PR](https://github.com/OpenSourceEconomics/dags/pull/17)) --------- Co-authored-by: Marvin Immesberger Co-authored-by: Tim Mensinger Co-authored-by: Hans-Martin von Gaudecker --- .github/workflows/main.yaml | 4 +- .github/workflows/publish-to-pypi.yaml | 4 +- MANIFEST.in | 23 - docs/geps/gep-05.md | 12 +- docs/gettsim_developer/how-to-contribute.md | 5 +- .../calculating_elterngeld.ipynb | 6 +- docs/rtd_environment.yml | 2 + docs/tutorials/advanced_usage.ipynb | 33 +- docs/tutorials/basic_usage.ipynb | 14 +- docs/tutorials/debugging.ipynb | 4 +- docs/tutorials/parameters.ipynb | 6 +- docs/tutorials/policy_functions.ipynb | 10 +- pixi.lock | 11672 +++++----------- pyproject.toml | 32 +- src/_gettsim/aggregation.py | 23 + src/_gettsim/combine_functions_in_tree.py | 682 + src/_gettsim/config.py | 228 +- src/_gettsim/functions/derived_function.py | 23 +- src/_gettsim/functions/loader.py | 394 +- src/_gettsim/functions/policy_function.py | 183 +- src/_gettsim/gettsim_typing.py | 17 + src/_gettsim/groupings.py | 22 +- src/_gettsim/interface.py | 1067 +- src/_gettsim/policy_environment.py | 360 +- .../policy_environment_postprocessor.py | 626 - src/_gettsim/shared.py | 356 +- .../arbeitsl_v.py | 28 +- .../eink_grenzen.py | 38 +- .../ges_krankenv.py | 88 +- .../ges_pflegev.py | 72 +- .../ges_rentenv.py | 28 +- src/_gettsim/synthetic.py | 162 +- src/_gettsim/taxes/abgelt_st.py | 4 +- src/_gettsim/taxes/eink_st.py | 18 +- src/_gettsim/taxes/lohnst.py | 20 +- src/_gettsim/taxes/soli_st.py | 8 +- src/_gettsim/taxes/zu_verst_eink/eink.py | 6 +- .../taxes/zu_verst_eink/freibetraege.py | 16 +- .../taxes/zu_verst_eink/vorsorgeaufw.py | 34 +- .../taxes/zu_verst_eink/zu_verst_eink.py | 4 +- src/_gettsim/time_conversion.py | 128 +- .../arbeitsl_geld_2/arbeitsl_geld_2_eink.py | 10 +- .../transfers/arbeitsl_geld_2/bedarf.py | 10 +- .../arbeitsl_geld_2/kindergelduebertrag.py | 11 +- .../transfers/arbeitsl_geld_2/kost_unterk.py | 6 +- .../benefit_checks/vermoegens_checks.py | 12 +- src/_gettsim/transfers/elterngeld.py | 24 +- src/_gettsim/transfers/erwerbsm_rente.py | 18 +- src/_gettsim/transfers/erziehungsgeld.py | 32 +- src/_gettsim/transfers/grundrente.py | 14 +- src/_gettsim/transfers/grunds_im_alter.py | 6 +- src/_gettsim/transfers/kindergeld.py | 13 +- .../transfers/kinderzuschl/kinderzuschl.py | 8 +- .../kinderzuschl/kinderzuschl_eink.py | 10 +- src/_gettsim/transfers/rente.py | 150 +- src/_gettsim/transfers/unterhaltsvors.py | 35 +- src/_gettsim/transfers/wohngeld.py | 20 +- src/_gettsim/vectorization.py | 6 +- src/_gettsim/visualization.py | 92 +- src/_gettsim_tests/_helpers.py | 8 +- src/_gettsim_tests/test_aggregate_by_p_id.py | 1 + src/_gettsim_tests/test_arbeitsl_geld.py | 1 + src/_gettsim_tests/test_arbeitsl_geld_2.py | 1 + src/_gettsim_tests/test_benefit_checks.py | 1 + .../test_combine_functions_in_tree.py | 259 + .../test_data/namespaces/module1.py | 33 + .../test_data/namespaces/module2.py | 21 + src/_gettsim_tests/test_dates_active.py | 157 +- src/_gettsim_tests/test_demographic_vars.py | 1 + src/_gettsim_tests/test_docs.py | 34 +- src/_gettsim_tests/test_eink_st.py | 1 + src/_gettsim_tests/test_elterngeld.py | 1 + src/_gettsim_tests/test_erwerbsm_rente.py | 1 + src/_gettsim_tests/test_erziehungsgeld.py | 1 + src/_gettsim_tests/test_favorability_check.py | 1 + .../test_full_taxes_and_transfers.py | 8 +- src/_gettsim_tests/test_functions_loader.py | 123 - .../test_ges_rente_hinzuverdienst.py | 1 + src/_gettsim_tests/test_ges_rentenalter.py | 1 + src/_gettsim_tests/test_groupings.py | 2 + src/_gettsim_tests/test_grundrente.py | 3 + src/_gettsim_tests/test_grunds_im_alter.py | 1 + src/_gettsim_tests/test_interface.py | 695 +- src/_gettsim_tests/test_kindergeld.py | 1 + src/_gettsim_tests/test_kinderzuschl.py | 1 + src/_gettsim_tests/test_loader.py | 76 + src/_gettsim_tests/test_lohnst.py | 2 + src/_gettsim_tests/test_minijobgrenze.py | 1 + src/_gettsim_tests/test_namespaces.py | 91 + src/_gettsim_tests/test_naming_conventions.py | 88 - src/_gettsim_tests/test_policy_environment.py | 90 +- src/_gettsim_tests/test_policy_function.py | 35 + src/_gettsim_tests/test_renten_anspr.py | 1 + src/_gettsim_tests/test_rounding.py | 105 +- src/_gettsim_tests/test_shared.py | 123 + src/_gettsim_tests/test_soli_st.py | 1 + src/_gettsim_tests/test_sozialv_beitr.py | 1 + src/_gettsim_tests/test_synthetic.py | 134 +- src/_gettsim_tests/test_time_conversion.py | 77 +- src/_gettsim_tests/test_unterhalt.py | 1 + src/_gettsim_tests/test_unterhaltsvors.py | 1 + src/_gettsim_tests/test_vectorization.py | 26 +- src/_gettsim_tests/test_visualizations.py | 15 +- src/_gettsim_tests/test_vorsorgeaufw.py | 1 + src/_gettsim_tests/test_wohngeld.py | 1 + src/_gettsim_tests/test_zu_verst_eink.py | 1 + 106 files changed, 7417 insertions(+), 11751 deletions(-) delete mode 100644 MANIFEST.in create mode 100644 src/_gettsim/combine_functions_in_tree.py delete mode 100644 src/_gettsim/policy_environment_postprocessor.py create mode 100644 src/_gettsim_tests/test_combine_functions_in_tree.py create mode 100644 src/_gettsim_tests/test_data/namespaces/module1.py create mode 100644 src/_gettsim_tests/test_data/namespaces/module2.py delete mode 100644 src/_gettsim_tests/test_functions_loader.py create mode 100644 src/_gettsim_tests/test_loader.py create mode 100644 src/_gettsim_tests/test_namespaces.py delete mode 100644 src/_gettsim_tests/test_naming_conventions.py create mode 100644 src/_gettsim_tests/test_policy_function.py create mode 100644 src/_gettsim_tests/test_shared.py diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 35e8f7afc4..b94cfa8aa8 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -33,9 +33,9 @@ jobs: environment: py311 steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.1 + - uses: prefix-dev/setup-pixi@v0.8.2 with: - pixi-version: v0.34.0 + pixi-version: v0.41.1 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} frozen: true diff --git a/.github/workflows/publish-to-pypi.yaml b/.github/workflows/publish-to-pypi.yaml index 2a679f772e..c172b2a338 100644 --- a/.github/workflows/publish-to-pypi.yaml +++ b/.github/workflows/publish-to-pypi.yaml @@ -6,9 +6,9 @@ jobs: name: Build and publish Python 🐍 distributions 📦 to PyPI runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.12 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install pypa/build diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 886600f380..0000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,23 +0,0 @@ -include CHANGES.md -include CITATION -include CODE_OF_CONDUCT.md -include LICENSE - -recursive-include src py.typed -recursive-include src *.yaml -recursive-include src *.csv -recursive-include src *.py -recursive-include src/_gettsim_tests/test_data/original_testfaelle *.xlsx - -global-exclude __pycache__/**/* -global-exclude *.py[cod] -global-exclude *.ods -exclude .coveragerc -exclude tox.ini -exclude *environment.yml -exclude codecov.yml -exclude .pre-commit-config.yaml -exclude .readthedocs.yaml -exclude .yamllint.yml - -prune docs diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index ec3b549640..8c7c51afa4 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -71,17 +71,17 @@ following elements: In the same way as other policy parameters, the rounding parameters become part of the dictionary `policy_params`. -A function to be rounded must be decorated with `policy_info`. Set the +A function to be rounded must be decorated with `policy_function`. Set the `params_key_for_rounding` parameter to point to the key of the policy parameters dictionary containing the rounding parameters relating to the function that is decorated. In the above example, the rounding specification for `grundr_zuschlag_höchstwert_m` will be found in `policy_params["ges_rente"]` after {func}`set_up_policy_environment()` has been called (since it was specified in -`ges_rente.yaml`). Hence, the `params_key_for_rounding` argument of `policy_info` has to -be `"ges_rente"`: +`ges_rente.yaml`). Hence, the `params_key_for_rounding` argument of `policy_function` +has to be `"ges_rente"`: ```python -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_höchstwert_m(grundr_zeiten: int) -> float: ... return out @@ -138,8 +138,8 @@ This will be done after the policy environment has been set up and it is exactly same as for other parameters of the taxes and transfers system, see {ref}`gep-3`. If a user would like to add user-written functions which should be rounded, she will -need to decorate the respective functions with `policy_info` and adjust `policy_params` -accordingly. +need to decorate the respective functions with `policy_function` and adjust +`policy_params` accordingly. ## Advantages of this implementation diff --git a/docs/gettsim_developer/how-to-contribute.md b/docs/gettsim_developer/how-to-contribute.md index 09df879a1e..627fcf6fdd 100644 --- a/docs/gettsim_developer/how-to-contribute.md +++ b/docs/gettsim_developer/how-to-contribute.md @@ -69,9 +69,12 @@ To contribute to the project, adhere to the following process. they pass our test suite which can be started with the following command. ```shell-session - $ pixi run pytest + $ pixi run tests ``` + which will prompt you to choose a python version to run the tests with. You may choose + the most recent one; both will be checked in our CI testing. + Sometimes you want to push changes even if the tests fail because you need feedback. Then, skip this step. diff --git a/docs/how_to_guides/calculating_elterngeld.ipynb b/docs/how_to_guides/calculating_elterngeld.ipynb index a46df5627c..8fc10e3265 100644 --- a/docs/how_to_guides/calculating_elterngeld.ipynb +++ b/docs/how_to_guides/calculating_elterngeld.ipynb @@ -64,9 +64,9 @@ "outputs": [], "source": [ "from gettsim import (\n", - " PolicyEnvironment,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", + " set_up_policy_environment,\n", ")" ] }, @@ -128,7 +128,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment_2023 = PolicyEnvironment.for_date(2023)\n", + "environment_2023 = set_up_policy_environment(2023)\n", "\n", "net_wage_approximation = compute_taxes_and_transfers(\n", " data=data_before_birth,\n", @@ -208,7 +208,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment_2024 = PolicyEnvironment.for_date(\"2024-07-01\")\n", + "environment_2024 = set_up_policy_environment(\"2024-07-01\")\n", "\n", "# Compute Elterngeld\n", "results = compute_taxes_and_transfers(\n", diff --git a/docs/rtd_environment.yml b/docs/rtd_environment.yml index f2d3d324f8..a954ce879a 100644 --- a/docs/rtd_environment.yml +++ b/docs/rtd_environment.yml @@ -32,3 +32,5 @@ dependencies: - sphinx-copybutton - pip: - -e ../ + - git+https://github.com/OpenSourceEconomics/dags + - flatten_dict diff --git a/docs/tutorials/advanced_usage.ipynb b/docs/tutorials/advanced_usage.ipynb index 1efcceed92..90ce009b50 100644 --- a/docs/tutorials/advanced_usage.ipynb +++ b/docs/tutorials/advanced_usage.ipynb @@ -8,7 +8,7 @@ "\n", "This tutorial showcases advanced functionalities and applications of GETTSIM's interface. For an introductory tutorial see [here](basic_usage.ipynb). The introductory tutorial showcases GETTSIM's two main functions using a minimal working example:\n", "\n", - "1. `PolicyEnvironment.for_date` which loads a policy environment for a specified date.\n", + "1. `set_up_policy_environment` which loads a policy environment for a specified date.\n", "\n", "2. `compute_taxes_and_transfers` which allows you to compute taxes and transfers given a specified policy environment for household or individual observations.\n", "\n", @@ -29,10 +29,10 @@ "\n", "from gettsim import (\n", " FunctionsAndColumnsOverlapWarning,\n", - " PolicyEnvironment,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", " plot_dag,\n", + " set_up_policy_environment,\n", ")\n", "\n", "warnings.filterwarnings(\"ignore\", category=FunctionsAndColumnsOverlapWarning)" @@ -56,7 +56,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = PolicyEnvironment.for_date(2020)" + "environment = set_up_policy_environment(2020)" ] }, { @@ -287,33 +287,6 @@ ")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Error Messages and Warnings: Unused Inputs\n", - "\n", - "The function `compute_taxes_and_transfers` also has an option that allows you to check for unused inputs in your data. This functionality is controlled through the argument `check_minimal_specification`. By default, it is set to `ignore`, meaning no check is conduced. However, it can also be set to `warn` to trigger a warning or `raise` an error that includes a message stating the unused inputs." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "raises-exception" - ] - }, - "outputs": [], - "source": [ - "result = compute_taxes_and_transfers(\n", - " data=data,\n", - " environment=environment,\n", - " targets=\"kindergeld_m\",\n", - " check_minimal_specification=\"raise\",\n", - ")" - ] - }, { "cell_type": "markdown", "metadata": {}, diff --git a/docs/tutorials/basic_usage.ipynb b/docs/tutorials/basic_usage.ipynb index 5b00dd7c68..16aadde220 100644 --- a/docs/tutorials/basic_usage.ipynb +++ b/docs/tutorials/basic_usage.ipynb @@ -33,9 +33,9 @@ "import json\n", "\n", "from gettsim import (\n", - " PolicyEnvironment,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", + " set_up_policy_environment,\n", ")" ] }, @@ -44,7 +44,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Loading Policies with `PolicyEnvironment.for_date`" + "## Loading Policies with `set_up_policy_environment`" ] }, { @@ -52,11 +52,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The function `PolicyEnvironment.for_date` allows you to load the policy environment in Germany for a given date. The function returns an object that composes\n", - "\n", - "- `params` which is a dictionary containing date-specific parameters for the policy environment.\n", - "\n", - "- `functions` which is a dictionary containing functions that are necessary to compute quantities in the taxes and transfers system on the provided date and data.\n", + "The function `set_up_policy_environment` allows you to load the policy environment in Germany for a given date. The function returns an `PolicyEnvironment` object.\n", "\n", "Below, we load the policy environment for the year 2020. The exact date for this input will be January 1st, 2020. An exact date would be accepted as an input, too." ] @@ -67,7 +63,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = PolicyEnvironment.for_date(2020)" + "environment = set_up_policy_environment(2020)" ] }, { @@ -146,7 +142,7 @@ "source": [ "### Specifying the Date\n", "\n", - "Dates can be specified in various ways. The function `PolicyEnvironment.for_date` accepts objects of type str, int, and [datetime](https://docs.python.org/3/library/datetime.html) as inputs to specify a date. If only a year is specified, the policy date will be set to the first day of the year i.e. the inputs `\"2020\"` and `2020` will both return the policy environment for January 1st, 2020. The input `\"2020/03\"` on the other hand will set up the policy environment for March 1st, 2020 since a month and year are specified. Lastly, it is also possible to use a specific day such as `\"2020/03/21\"`, which will return the policy environment for March 21st, 2020." + "Dates can be specified in various ways. The function `set_up_policy_environment` accepts objects of type str, int, and [datetime](https://docs.python.org/3/library/datetime.html) as inputs to specify a date. If only a year is specified, the policy date will be set to the first day of the year i.e. the inputs `\"2020\"` and `2020` will both return the policy environment for January 1st, 2020. The input `\"2020/03\"` on the other hand will set up the policy environment for March 1st, 2020 since a month and year are specified. Lastly, it is also possible to use a specific day such as `\"2020/03/21\"`, which will return the policy environment for March 21st, 2020." ] }, { diff --git a/docs/tutorials/debugging.ipynb b/docs/tutorials/debugging.ipynb index a1ca421ef1..c7cc704e88 100644 --- a/docs/tutorials/debugging.ipynb +++ b/docs/tutorials/debugging.ipynb @@ -19,7 +19,7 @@ "source": [ "import pandas as pd\n", "\n", - "from gettsim import PolicyEnvironment, compute_taxes_and_transfers" + "from gettsim import compute_taxes_and_transfers, set_up_policy_environment" ] }, { @@ -53,7 +53,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = PolicyEnvironment.for_date(2020)" + "environment = set_up_policy_environment(2020)" ] }, { diff --git a/docs/tutorials/parameters.ipynb b/docs/tutorials/parameters.ipynb index 6605dd0a60..4762211c94 100644 --- a/docs/tutorials/parameters.ipynb +++ b/docs/tutorials/parameters.ipynb @@ -27,9 +27,9 @@ "import plotly.express as px\n", "\n", "from gettsim import (\n", - " PolicyEnvironment,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", + " set_up_policy_environment,\n", ")" ] }, @@ -52,7 +52,7 @@ "source": [ "## Finding the Relevant Parameter\n", "\n", - "Firstly, we can load the existing policy environment for the year 2020 using the function `PolicyEnvironment.for_date`." + "Firstly, we can load the existing policy environment for the year 2020 using the function `set_up_policy_environment`." ] }, { @@ -61,7 +61,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = PolicyEnvironment.for_date(2020)" + "environment = set_up_policy_environment(2020)" ] }, { diff --git a/docs/tutorials/policy_functions.ipynb b/docs/tutorials/policy_functions.ipynb index cb49564f28..d52312a716 100644 --- a/docs/tutorials/policy_functions.ipynb +++ b/docs/tutorials/policy_functions.ipynb @@ -26,9 +26,9 @@ "\n", "from gettsim import (\n", " FunctionsAndColumnsOverlapWarning,\n", - " PolicyEnvironment,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", + " set_up_policy_environment,\n", ")\n", "\n", "warnings.filterwarnings(\"ignore\", category=FunctionsAndColumnsOverlapWarning)" @@ -57,7 +57,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = PolicyEnvironment.for_date(2020)" + "environment = set_up_policy_environment(2020)" ] }, { @@ -338,11 +338,11 @@ "\n", "If we would like to add (or replace) such functions, we need to specify them in a\n", "dictionary which we provide to `compute_taxes_and_transfers` via the\n", - "`aggregate_by_group_specs` argument. An example dictionary is as follows:\n", + "`aggregate_by_group_specs_tree` argument. An example dictionary is as follows:\n", "\n", "\n", "```python\n", - "aggregate_by_group_specs = {\n", + "aggregate_by_group_specs_tree = {\n", " \"anz_erwachsene_sn\": {\"source_col\": \"erwachsen\", \"aggr\": \"sum\"},\n", " \"anz_personen_hh\": {\"aggr\": \"count\"},\n", "}\n", @@ -351,7 +351,7 @@ "### Aggregation Based on `p_id`\n", "\n", "Similarly to above, aggregation functions based on `p_id` are specified in a dictionary\n", - "which can be provided to `compute_taxes_and_transfers` via the `aggregate_by_p_id_specs`\n", + "which can be provided to `compute_taxes_and_transfers` via the `aggregate_by_p_id_specs_tree`\n", "argument. An example dictionary is as follows:\n", "\n", "```python\n", diff --git a/pixi.lock b/pixi.lock index d48d83c103..4fdf83c1a3 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,4 +1,4 @@ -version: 5 +version: 6 environments: default: channels: @@ -12,30 +12,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -43,6 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -64,23 +65,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda @@ -90,7 +92,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -102,7 +104,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -114,7 +116,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda @@ -126,9 +128,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-hb346dea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda @@ -136,17 +139,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py313ha87cce1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -157,34 +161,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_100_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py313h8e95178_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py313h920b4c0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -203,15 +211,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py313h536fd9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda @@ -230,47 +238,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py313h9ea2907_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -278,6 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -299,23 +309,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda @@ -325,7 +336,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -333,10 +344,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda @@ -346,7 +357,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda @@ -354,10 +364,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.4-h12808cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.3-hf78d878_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h25ec13a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda @@ -365,17 +375,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py313h7ca3f3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py313h38cdd20_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -386,35 +397,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py313hb558fbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py313heea633c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py313heea633c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h0608dab_100_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py313h0dfe02f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py313h3c055b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -433,15 +448,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py313ha37c0e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda @@ -452,47 +467,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-he4ceba3_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313hab0894d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py313h3579c5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -500,6 +516,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -521,23 +538,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda @@ -547,7 +565,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -555,10 +573,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda @@ -568,7 +586,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda @@ -576,10 +593,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313heb2b014_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda @@ -587,17 +604,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py313h47b39a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -608,35 +626,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py313h63a2874_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py313h33780c8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py313h33780c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-h75c3a9f_100_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py313h0e8b002_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py313hdde674f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -655,15 +677,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py313h20a7fcf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda @@ -674,47 +696,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.0-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -722,6 +745,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -742,24 +766,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda @@ -769,7 +794,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -778,7 +803,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda @@ -788,7 +813,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda @@ -797,7 +821,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda @@ -805,17 +829,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py313hf91d08e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -825,34 +850,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_100_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py313h5813708_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py313h2100fd5_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py313hf3b5b86_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -872,8 +901,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py313ha7868ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda @@ -881,13 +910,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_22.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -902,22 +931,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-h0e40799_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . py311: channels: @@ -938,7 +968,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda @@ -953,9 +983,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.4-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -985,11 +1014,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -999,9 +1028,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -1012,7 +1041,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -1024,7 +1053,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -1049,7 +1078,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-hb346dea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda @@ -1059,16 +1088,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py311h71ddf71_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py311hd18a35c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda @@ -1096,7 +1126,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -1109,9 +1139,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -1130,7 +1160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -1157,14 +1187,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -1178,7 +1212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda @@ -1193,9 +1227,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.4-py311h8b4e8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py311hd89902b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -1225,11 +1258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -1239,9 +1272,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -1252,7 +1285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -1260,10 +1293,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda @@ -1280,9 +1313,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.4-h12808cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.3-hf78d878_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311h8b4e8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -1291,16 +1324,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py311h14ed71f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py311h4e34fa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda @@ -1329,7 +1363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.10-ha513fb2_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -1342,9 +1376,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py311h3b9c2be_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py311h3b9c2be_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -1363,7 +1397,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py311h3336109_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -1382,14 +1416,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-he4ceba3_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -1403,7 +1441,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda @@ -1418,9 +1456,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.4-py311h56c23cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py311h3f08180_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -1450,11 +1487,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -1464,9 +1501,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -1477,7 +1514,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -1485,10 +1522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda @@ -1505,9 +1542,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -1516,16 +1553,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py311h649a571_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py311h2c37856_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda @@ -1554,7 +1592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -1567,9 +1605,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py311h3ff9189_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -1588,7 +1626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -1607,14 +1645,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -1627,7 +1669,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda @@ -1642,10 +1684,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.4-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py311h5082efb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.10-py311hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -1674,11 +1715,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -1689,9 +1730,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -1702,7 +1743,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -1711,7 +1752,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda @@ -1737,16 +1778,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py311h35ffc71_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py311h3257749_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda @@ -1772,7 +1814,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.10-hce54a09_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -1786,9 +1828,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py311h533ab2d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py311h533ab2d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -1808,7 +1850,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -1820,10 +1862,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_22.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -1838,19 +1880,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-h0e40799_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . py312: channels: @@ -1871,7 +1917,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda @@ -1886,9 +1932,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.4-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -1918,11 +1963,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -1932,9 +1977,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -1945,7 +1990,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -1957,7 +2002,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -1982,7 +2027,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-hb346dea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda @@ -1992,16 +2037,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda @@ -2029,7 +2075,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -2042,9 +2088,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -2063,7 +2109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -2090,14 +2136,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -2111,7 +2161,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda @@ -2126,9 +2176,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.4-py312hbe3f5e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py312h5861a67_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -2158,11 +2207,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -2172,9 +2221,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -2185,7 +2234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -2193,10 +2242,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda @@ -2213,9 +2262,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.4-h12808cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.3-hf78d878_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -2224,16 +2273,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda @@ -2262,7 +2312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -2275,9 +2325,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py312h0d0de52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -2296,7 +2346,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -2315,14 +2365,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-he4ceba3_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -2336,7 +2390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda @@ -2351,9 +2405,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.4-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py312hde4cb15_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -2383,11 +2436,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -2397,9 +2450,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -2410,7 +2463,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -2418,10 +2471,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda @@ -2438,9 +2491,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -2449,16 +2502,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda @@ -2487,7 +2541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -2500,9 +2554,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -2521,7 +2575,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -2540,14 +2594,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -2560,7 +2618,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda @@ -2575,10 +2633,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.4-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -2607,11 +2664,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda @@ -2622,9 +2679,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -2635,7 +2692,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -2644,7 +2701,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda @@ -2670,16 +2727,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda @@ -2705,7 +2763,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -2719,9 +2777,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py312h2615798_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -2741,7 +2799,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -2753,10 +2811,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_22.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -2771,19 +2829,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-h0e40799_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . py312-jax: channels: @@ -2804,12 +2866,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.2-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -2820,8 +2882,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -2829,6 +2891,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -2850,24 +2913,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -2878,7 +2942,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -2891,7 +2955,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda @@ -2919,7 +2983,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-hb346dea_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda @@ -2930,18 +2994,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda @@ -2953,6 +3018,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda @@ -2964,8 +3030,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -2979,10 +3048,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -3001,7 +3070,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -3028,17 +3097,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -3052,12 +3122,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.2-h32b1619_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -3068,8 +3138,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py312h5861a67_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -3077,6 +3147,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -3098,24 +3169,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.4.34-cpu_py312h2d9848c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -3126,7 +3198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -3135,10 +3207,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda @@ -3158,9 +3230,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.4-h12808cf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.3-hf78d878_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -3170,18 +3242,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda @@ -3193,6 +3266,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda @@ -3205,8 +3279,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -3220,10 +3297,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py312h0d0de52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -3242,7 +3319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -3261,17 +3338,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-he4ceba3_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda @@ -3285,12 +3363,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -3301,8 +3379,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py312hde4cb15_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -3310,6 +3388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -3331,24 +3410,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.4.34-cpu_py312h70eed8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -3359,7 +3439,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -3368,10 +3448,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda @@ -3391,9 +3471,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda @@ -3403,18 +3483,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda @@ -3426,6 +3507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda @@ -3438,8 +3520,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -3453,10 +3538,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -3475,7 +3560,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -3494,17 +3579,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -3517,7 +3603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda @@ -3532,9 +3618,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda @@ -3542,6 +3628,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 @@ -3562,23 +3649,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -3589,7 +3677,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda @@ -3598,7 +3686,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda @@ -3624,16 +3712,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda @@ -3644,6 +3733,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda @@ -3654,8 +3744,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda @@ -3669,9 +3762,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py312h2615798_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 @@ -3691,7 +3784,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda @@ -3703,10 +3796,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_22.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_22.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda @@ -3721,48 +3814,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-h0e40799_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/62/20/6c57c50c0ccc645fea1895950f1e5cd02f961ee44b3ffe83617fa46b0c1d/jax-0.4.35-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/97/05/093b3c511837ba514f0b97581f7b21e1bb79768b8b9c29013a406b00d484/jaxlib-0.4.35-cp312-cp312-win_amd64.whl + - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/aa/7d/43ab67228ef98c6b5dd42ab386eae2d7877036970a0d7e3dd3eb47a0d530/scipy-1.14.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 license: None purls: [] size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -3775,13 +3854,8 @@ packages: purls: [] size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda build_number: 8 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d md5: 37e16618af5c4851a3f3d66dd0e11141 depends: @@ -3795,13 +3869,7 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 -- kind: conda - name: alabaster - version: 1.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda sha256: a9e1092725561d9bff12d3a4d3bb46c43d3d0db3cbb2c63c9025d1c77e84840c md5: 7d78a232029458d0077ede6cda30ed0c depends: @@ -3812,13 +3880,7 @@ packages: - pkg:pypi/alabaster?source=hash-mapping size: 18522 timestamp: 1722035895436 -- kind: conda - name: anyio - version: 4.6.2.post1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 md5: 688697ec5e9588bdded167d19577625b depends: @@ -3836,13 +3898,7 @@ packages: - pkg:pypi/anyio?source=hash-mapping size: 109864 timestamp: 1728935803440 -- kind: conda - name: appnope - version: 0.1.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 md5: cc4834a9ee7cc49ce8d25177c47b10d8 depends: @@ -3853,13 +3909,7 @@ packages: - pkg:pypi/appnope?source=hash-mapping size: 10241 timestamp: 1707233195627 -- kind: conda - name: argon2-cffi - version: 23.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677 md5: 3afef1f55a1366b4d3b6a0d92e2235e4 depends: @@ -3874,54 +3924,7 @@ packages: - pkg:pypi/argon2-cffi?source=hash-mapping size: 18602 timestamp: 1692818472638 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py311h3336109_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - sha256: fa5eb633b320e10fc2138f3d842d8a8ca72815f106acbab49a68ec9783e4d70d - md5: 29b46bd410067f668c4cef7fdc78fe25 - depends: - - __osx >=10.13 - - cffi >=1.0.1 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 32275 - timestamp: 1725356815696 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py311h460d6c5_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - sha256: 6eabd1bcefc235b7943688d865519577d7668a2f4dc3a24ee34d81eb4bfe77d1 - md5: 1e8260965552c6ec86453b7d15a598de - depends: - - __osx >=11.0 - - cffi >=1.0.1 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 33008 - timestamp: 1725356833036 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py311h9ecbd09_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda sha256: d1af1fbcb698c2e07b0d1d2b98384dd6021fa55c8bcb920e3652e0b0c393881b md5: 18143eab7fcd6662c604b85850f0db1e depends: @@ -3936,78 +3939,7 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 35025 timestamp: 1725356735679 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py311he736701_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - sha256: 8bbce5e61e012a06e248f58bb675fdc82ba2900c78590696d185150fb9cea91f - md5: 8917bf795c40ec1839ed9d0ab3ad9735 - depends: - - cffi >=1.0.1 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 34883 - timestamp: 1725357113431 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312h024a12e_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - sha256: 0e32ddd41f273f505956254d81ffadaf982ed1cb7dfd70d9251a8c5b705c7267 - md5: 6ccaeafe1a52b0d0e7ebfbf53a374649 - depends: - - __osx >=11.0 - - cffi >=1.0.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 32838 - timestamp: 1725356954187 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312h4389bb4_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - sha256: 8764a8a9416d90264c7d36526de77240a454d0ee140841db545bdd5825ebd6f1 - md5: 53943e7ecba6b3e3744b292dc3fb4ae2 - depends: - - cffi >=1.0.1 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 34399 - timestamp: 1725357069475 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312h66e93f0_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda sha256: 3cbc3b026f5c3f26de696ead10607db8d80cbb003d87669ac3b02e884f711978 md5: 1505fc57c305c0a3174ea7aae0a0db25 depends: @@ -4022,13 +3954,21 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 34847 timestamp: 1725356749774 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py312hb553811_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda + sha256: fa5eb633b320e10fc2138f3d842d8a8ca72815f106acbab49a68ec9783e4d70d + md5: 29b46bd410067f668c4cef7fdc78fe25 + depends: + - __osx >=10.13 + - cffi >=1.0.1 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi-bindings?source=hash-mapping + size: 32275 + timestamp: 1725356815696 +- conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda sha256: 37d61df3778b99e12d8adbaf7f1c5e8b07616ef3ada4436ad995f25c25ae6fda md5: 033345df1d545bc40b52e03cb03db4e0 depends: @@ -4042,81 +3982,59 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 31898 timestamp: 1725356938246 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py313h20a7fcf_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - sha256: 2ced37cabe03f64f2ecc36a089576b79b27f3f2d4beefceb0d614bf40450d53a - md5: ba06ad3e96ea794fec0eddfa92e121b5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda + sha256: 6eabd1bcefc235b7943688d865519577d7668a2f4dc3a24ee34d81eb4bfe77d1 + md5: 1e8260965552c6ec86453b7d15a598de depends: - __osx >=11.0 - cffi >=1.0.1 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 32946 - timestamp: 1725356801521 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py313h536fd9c_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda - sha256: b17e5477dbc6a01286ea736216f49039d35335ea3283fa0f07d2c7cea57002ae - md5: 49fa2ed332b1239d6b0b2fe5e0393421 + size: 33008 + timestamp: 1725356833036 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + sha256: 0e32ddd41f273f505956254d81ffadaf982ed1cb7dfd70d9251a8c5b705c7267 + md5: 6ccaeafe1a52b0d0e7ebfbf53a374649 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.0.1 - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 34900 - timestamp: 1725356714671 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py313ha37c0e0_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - sha256: d8b9baae87e315b0106d85eb769d7dcff9691abce4b313d8ca410c26998217b2 - md5: 2a9ccef1e31a58c4a77ffc92d3cc9c55 + size: 32838 + timestamp: 1725356954187 +- conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda + sha256: 8bbce5e61e012a06e248f58bb675fdc82ba2900c78590696d185150fb9cea91f + md5: 8917bf795c40ec1839ed9d0ab3ad9735 depends: - - __osx >=10.13 - cffi >=1.0.1 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 32046 - timestamp: 1725356858173 -- kind: conda - name: argon2-cffi-bindings - version: 21.2.0 - build: py313ha7868ed_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - sha256: 36b79f862177b3a104762f68664e445615e7c831ca5fe76dc4596ad531ed46a3 - md5: 6d6dbb065c660e9e358b32bdab9ada31 + size: 34883 + timestamp: 1725357113431 +- conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + sha256: 8764a8a9416d90264c7d36526de77240a454d0ee140841db545bdd5825ebd6f1 + md5: 53943e7ecba6b3e3744b292dc3fb4ae2 depends: - cffi >=1.0.1 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -4124,15 +4042,9 @@ packages: license_family: MIT purls: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping - size: 34467 - timestamp: 1725357154522 -- kind: conda - name: arrow - version: 1.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + size: 34399 + timestamp: 1725357069475 +- conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db md5: b77d8c2313158e6e461ca0efb1c2c508 depends: @@ -4145,13 +4057,7 @@ packages: - pkg:pypi/arrow?source=hash-mapping size: 100096 timestamp: 1696129131844 -- kind: conda - name: astor - version: 0.8.1 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 sha256: cb4ae0e3055907983f21a24dc2ac47d5a77d7c1dd98b1e21fed06956437e52c7 md5: 6ae770689be59dc391ef974d2e849b56 depends: @@ -4162,13 +4068,7 @@ packages: - pkg:pypi/astor?source=hash-mapping size: 25792 timestamp: 1593610550883 -- kind: conda - name: asttokens - version: 2.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 md5: 5f25798dcefd8252ce5f9dc494d5f571 depends: @@ -4180,13 +4080,7 @@ packages: - pkg:pypi/asttokens?source=hash-mapping size: 28922 timestamp: 1698341257884 -- kind: conda - name: async-lru - version: 2.0.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518 md5: 3d081de3a6ea9f894bbb585e8e3a4dcb depends: @@ -4198,13 +4092,7 @@ packages: - pkg:pypi/async-lru?source=hash-mapping size: 15342 timestamp: 1690563152778 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: h04ea711_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e md5: f730d54ba9cd543666d7220c9f7ed563 depends: @@ -4218,13 +4106,7 @@ packages: purls: [] size: 355900 timestamp: 1713896169874 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: h4bec284_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda sha256: a5972a943764e46478c966b26be61de70dcd7d0cfda4bd0b0c46916ae32e0492 md5: d9684247c943d492d9aac8687bc5db77 depends: @@ -4239,13 +4121,7 @@ packages: purls: [] size: 349989 timestamp: 1713896423623 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: hd03087b_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1 md5: 57301986d02d30d6805fdce6c99074ee depends: @@ -4260,13 +4136,7 @@ packages: purls: [] size: 347530 timestamp: 1713896411580 -- kind: conda - name: attrs - version: 24.2.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 md5: 6732fa52eb8e66e5afeb32db8701a791 depends: @@ -4277,32 +4147,19 @@ packages: - pkg:pypi/attrs?source=hash-mapping size: 56048 timestamp: 1722977241383 -- kind: conda - name: babel - version: 2.14.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda - sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6 - md5: 9669586875baeced8fc30c0826c3270e +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 + md5: 6d4e9ecca8d88977147e109fc7053184 depends: - - python >=3.7 - - pytz - - setuptools + - python >=3.8 + - pytz >=2015.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/babel?source=hash-mapping - size: 7609750 - timestamp: 1702422720584 -- kind: conda - name: beautifulsoup4 - version: 4.12.3 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda + size: 6525614 + timestamp: 1730878929589 +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 md5: 332493000404d8411859539a5a630865 depends: @@ -4314,13 +4171,7 @@ packages: - pkg:pypi/beautifulsoup4?source=hash-mapping size: 118200 timestamp: 1705564819537 -- kind: conda - name: bleach - version: 6.2.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 md5: 461bcfab8e65c166e297222ae919a2d4 depends: @@ -4332,81 +4183,7 @@ packages: - pkg:pypi/bleach?source=hash-mapping size: 132652 timestamp: 1730286301829 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311h3f08180_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad - md5: c8793a23206344faa25f4e0b5d0e7908 - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 339584 - timestamp: 1725268241628 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311hd89902b_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 - md5: d75f06ee06001794aa83a05e885f1520 - depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - libbrotlicommon 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 363793 - timestamp: 1725267947069 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311hda3d55a_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 - md5: a0ea2839841a06740a1c110ba3317b42 - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - libbrotlicommon 1.1.0 h2466b09_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 322114 - timestamp: 1725268368720 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py311hfdbb021_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 md5: d21daab070d76490cb39a8f1d1729d79 depends: @@ -4423,36 +4200,7 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 350367 timestamp: 1725267768486 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h275cf98_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c - md5: a99aec1ac46794a5fb1cd3cf5d2b6110 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - libbrotlicommon 1.1.0 h2466b09_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 321874 - timestamp: 1725268491976 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: @@ -4469,13 +4217,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 349867 timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h5861a67_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 + md5: d75f06ee06001794aa83a05e885f1520 + depends: + - __osx >=10.13 + - libcxx >=17 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.1.0 h00291cd_2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 363793 + timestamp: 1725267947069 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 md5: b95025822e43128835826ec0cc45a551 depends: @@ -4491,87 +4249,46 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 363178 timestamp: 1725267893889 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad + md5: c8793a23206344faa25f4e0b5d0e7908 depends: - __osx >=11.0 - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 339360 - timestamp: 1725268143995 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h3579c5c_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h3579c5c_2.conda - sha256: b0a66572f44570ee7cc960e223ca8600d26bb20cfb76f16b95adf13ec4ee3362 - md5: f3bee63c7b5d041d841aff05785c28b7 + size: 339584 + timestamp: 1725268241628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d depends: - __osx >=11.0 - libcxx >=17 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 constrains: - libbrotlicommon 1.1.0 hd74edd7_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 339067 - timestamp: 1725268603536 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h46c70d0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_2.conda - sha256: da92e5e904465fce33a7a55658b13caa5963cc463c430356373deeda8b2dbc46 - md5: f6bb3742e17a4af0dc3c8ca942683ef6 + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 + md5: a0ea2839841a06740a1c110ba3317b42 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 350424 - timestamp: 1725267803672 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h5813708_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_2.conda - sha256: e89803147849d429f1ba3eec880b487c2cc4cac48a221079001a2ab1216f3709 - md5: c1a5d95bf18940d2b1d12f7bf2fb589b - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -4581,55 +4298,26 @@ packages: license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 322309 - timestamp: 1725268431915 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py313h9ea2907_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h9ea2907_2.conda - sha256: a8ff547af4de5d2d6cb84543a73f924dbbd60029920dbadc27298ea0b48f28bc - md5: 38ab121f341a1d8613c3898f36efecab + size: 322114 + timestamp: 1725268368720 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c + md5: a99aec1ac46794a5fb1cd3cf5d2b6110 depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h00291cd_2 + - libbrotlicommon 1.1.0 h2466b09_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 363156 - timestamp: 1725268004102 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h2466b09_7 - build_number: 7 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b - md5: 276e7ffe9ffe39688abc665ef0f45596 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: bzip2-1.0.6 - license_family: BSD - purls: [] - size: 54927 - timestamp: 1720974860185 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + size: 321874 + timestamp: 1725268491976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: @@ -4640,13 +4328,17 @@ packages: purls: [] size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 134188 + timestamp: 1720974491916 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: @@ -4656,124 +4348,79 @@ packages: purls: [] size: 122909 timestamp: 1720974522888 -- kind: conda - name: bzip2 - version: 1.0.8 - build: hfdf4475_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 - md5: 7ed4301d437b59045be7e051a0308211 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 depends: - - __osx >=10.13 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 134188 - timestamp: 1720974491916 -- kind: conda - name: c-ares - version: 1.34.2 - build: h32b1619_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.2-h32b1619_0.conda - sha256: 972d0403c92c9cd1d1c60e34d80991258125ee880cf5a9289ae83a443d8970cd - md5: 724edfea6dde646c1faf2ce1423e0faa + size: 54927 + timestamp: 1720974860185 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 182342 - timestamp: 1729006698430 -- kind: conda - name: c-ares - version: 1.34.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.2-h7ab814d_0.conda - sha256: 24d53d27397f9c2f0c168992690b5ec1bd62593fb4fc1f1e906ab91b10fd06c3 - md5: 8a8cfc11064b521bc54bd2d8591cb137 + size: 204857 + timestamp: 1732447031823 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda + sha256: 37c031f91bb4c7ebec248e283c453b24840764fb53b640768780dcd904093f17 + md5: 7d8083876d71fe1316fc18369ee0dc58 depends: - - __osx >=11.0 + - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 177487 - timestamp: 1729006763496 -- kind: conda - name: c-ares - version: 1.34.2 - build: heb4867d_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.2-heb4867d_0.conda - sha256: c2a515e623ac3e17a56027c06098fbd5ab47afefefbd386b4c21289f2ec55139 - md5: 2b780c0338fc0ffa678ac82c54af51fd - depends: - - __glibc >=2.28,<3.0.a0 - - libgcc >=13 + size: 184403 + timestamp: 1732447223773 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 + depends: + - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 205797 - timestamp: 1729006575652 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: h56e8100_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 - md5: 4c4fd67c18619be5aa65dc5b6c72e490 + size: 179318 + timestamp: 1732447193278 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea + md5: c27d1c142233b5bc9ca570c6e2e0c244 license: ISC purls: [] - size: 158773 - timestamp: 1725019107649 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: h8857fd0_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + size: 159003 + timestamp: 1725018903918 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae md5: b7e5424e7f06547a903d28e4651dbb21 license: ISC purls: [] size: 158665 timestamp: 1725019059295 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 - license: ISC - purls: [] - size: 159003 - timestamp: 1725018903918 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 md5: 40dec13fd8348dbe303e57be74bd3d35 license: ISC purls: [] size: 158482 timestamp: 1725019034582 -- kind: conda - name: cached-property - version: 1.5.2 - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 + md5: 4c4fd67c18619be5aa65dc5b6c72e490 + license: ISC + purls: [] + size: 158773 + timestamp: 1725019107649 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 md5: 9b347a7ec10940d3f7941ff6c460b551 depends: @@ -4783,14 +4430,7 @@ packages: purls: [] size: 4134 timestamp: 1615209571450 -- kind: conda - name: cached_property - version: 1.5.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 md5: 576d629e47797577ab0f1b351297ef4a depends: @@ -4801,39 +4441,33 @@ packages: - pkg:pypi/cached-property?source=hash-mapping size: 11065 timestamp: 1615209567874 -- kind: conda - name: cairo - version: 1.18.0 - build: h32b962e_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - sha256: 127101c9c2d1a56f8791c19141ceff13fd1d1a1da28cfaca549dc99d210cec6a - md5: 8f43723a4925c51e55c2d81725a97db4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 + md5: fceaedf1cdbcb02df9699a0d9b005292 depends: + - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 + - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - pixman >=0.43.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 - zlib license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 1516680 - timestamp: 1721139332360 -- kind: conda - name: cairo - version: 1.18.0 - build: h37bd5c4_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + size: 983604 + timestamp: 1721138900054 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda sha256: 8d70fbca4887b9b580de0f3715026e05f9e74fad8a652364aa0bccd795b1fa87 md5: 448aad56614db52338dc4fd4c758cfb6 depends: @@ -4852,13 +4486,7 @@ packages: purls: [] size: 892544 timestamp: 1721139116538 -- kind: conda - name: cairo - version: 1.18.0 - build: hb4a6bf7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 md5: 08bd0752f3de8a2d8a35fd012f09531f depends: @@ -4877,45 +4505,27 @@ packages: purls: [] size: 899126 timestamp: 1721139203735 -- kind: conda - name: cairo - version: 1.18.0 - build: hebfffa5_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 - md5: fceaedf1cdbcb02df9699a0d9b005292 +- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + sha256: 127101c9c2d1a56f8791c19141ceff13fd1d1a1da28cfaca549dc99d210cec6a + md5: 8f43723a4925c51e55c2d81725a97db4 depends: - - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.2,<1.0a0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 + - pixman >=0.43.4,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zlib license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 983604 - timestamp: 1721138900054 -- kind: conda - name: certifi - version: 2024.8.30 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + size: 1516680 + timestamp: 1721139332360 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f md5: 12f7d00853807b0531775e9be891cb11 depends: @@ -4925,78 +4535,11 @@ packages: - pkg:pypi/certifi?source=hash-mapping size: 163752 timestamp: 1725278204397 -- kind: conda - name: cffi - version: 1.17.1 - build: py311h137bacd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - sha256: 012ee7b1ed4f9b0490d6e90c72decf148d7575173c7eaf851cd87fd434d2cacc - md5: a4b0f531064fa3dd5e3afbb782ea2cd5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda + sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 + md5: 55553ecd5328336368db611f350b7039 depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 288762 - timestamp: 1725560945833 -- kind: conda - name: cffi - version: 1.17.1 - build: py311h3a79f62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 - md5: a42272c5dbb6ffbc1a5af70f24c7b448 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 288211 - timestamp: 1725560745212 -- kind: conda - name: cffi - version: 1.17.1 - build: py311he736701_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - sha256: 9689fbd8a31fdf273f826601e90146006f6631619767a67955048c7ad7798a1d - md5: e1c69be23bd05471a6c623e91680ad59 - depends: - - pycparser - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 297627 - timestamp: 1725561079708 -- kind: conda - name: cffi - version: 1.17.1 - build: py311hf29c0ef_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 - md5: 55553ecd5328336368db611f350b7039 - depends: - - __glibc >=2.17,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - pycparser @@ -5008,12 +4551,7 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 302115 timestamp: 1725560701719 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 depends: @@ -5029,54 +4567,22 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 294403 timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda + sha256: 012ee7b1ed4f9b0490d6e90c72decf148d7575173c7eaf851cd87fd434d2cacc + md5: a4b0f531064fa3dd5e3afbb782ea2cd5 depends: - - __osx >=11.0 + - __osx >=10.13 - libffi >=3.4,<4.0a0 - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/cffi?source=hash-mapping - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - sha256: ac007bf5fd56d13e16d95eea036433012f2e079dc015505c8a79efebbad1fcbc - md5: 08310c1a22ef957d537e547f8d484f92 - depends: - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 288142 - timestamp: 1725560896359 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hf857d28_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + size: 288762 + timestamp: 1725560945833 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902 md5: 5bbc69b8194fedc2792e451026cac34f depends: @@ -5091,96 +4597,71 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 282425 timestamp: 1725560725144 -- kind: conda - name: cffi - version: 1.17.1 - build: py313h49682b3_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - sha256: 660c8f8488f78c500a1bb4a803c31403104b1ee2cabf1476a222a3b8abf5a4d7 - md5: 98afc301e6601a3480f9e0b9f8867ee0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda + sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 + md5: a42272c5dbb6ffbc1a5af70f24c7b448 depends: - - __osx >=10.13 + - __osx >=11.0 - libffi >=3.4,<4.0a0 - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 284540 - timestamp: 1725560667915 -- kind: conda - name: cffi - version: 1.17.1 - build: py313ha7868ed_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff - md5: 519a29d7ac273f8c165efc0af099da42 + size: 288211 + timestamp: 1725560745212 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 291828 - timestamp: 1725561211547 -- kind: conda - name: cffi - version: 1.17.1 - build: py313hc845a76_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - sha256: 50650dfa70ccf12b9c4a117d7ef0b41895815bb7328d830d667a6ba3525b60e8 - md5: 6d24d5587a8615db33c961a4ca0a8034 + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda + sha256: 9689fbd8a31fdf273f826601e90146006f6631619767a67955048c7ad7798a1d + md5: e1c69be23bd05471a6c623e91680ad59 depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 282115 - timestamp: 1725560759157 -- kind: conda - name: cffi - version: 1.17.1 - build: py313hfab6e84_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - sha256: 73cd6199b143a8a6cbf733ce124ed57defc1b9a7eab9b10fd437448caf8eaa45 - md5: ce6386a5892ef686d6d680c345c40ad1 + size: 297627 + timestamp: 1725561079708 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + sha256: ac007bf5fd56d13e16d95eea036433012f2e079dc015505c8a79efebbad1fcbc + md5: 08310c1a22ef957d537e547f8d484f92 depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - pycparser - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 295514 - timestamp: 1725560706794 -- kind: conda - name: cfgv - version: 3.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + size: 288142 + timestamp: 1725560896359 +- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c md5: ebb5f5f7dc4f1a3780ef7ea7738db08c depends: @@ -5191,13 +4672,7 @@ packages: - pkg:pypi/cfgv?source=hash-mapping size: 10788 timestamp: 1629909423398 -- kind: conda - name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 md5: a374efa97290b8799046df7c5ca17164 depends: @@ -5208,13 +4683,7 @@ packages: - pkg:pypi/charset-normalizer?source=hash-mapping size: 47314 timestamp: 1728479405343 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 md5: 3faab06a954c2a04039983f2c4a50d99 depends: @@ -5225,13 +4694,7 @@ packages: - pkg:pypi/colorama?source=hash-mapping size: 25170 timestamp: 1666700778190 -- kind: conda - name: comm - version: 0.2.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe md5: 948d84721b578d426294e17a02e24cbb depends: @@ -5243,14 +4706,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12134 timestamp: 1710320435158 -- kind: conda - name: coverage - version: 7.6.4 - build: py311h2dc5d0c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.4-py311h2dc5d0c_0.conda - sha256: c4cde56626b863128f7f249073aa093aee885fe8d68415d7cec74877caa39ff8 - md5: 4d74dedf541d0f87fce0b5797b66e425 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py311h2dc5d0c_0.conda + sha256: 820f5d4119149f77995f10e0aefc587117b23501a55c69a026bfcb50fa6917ff + md5: 8d6a690e582941ee3161500d1982ea3e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5258,159 +4716,110 @@ packages: - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 373322 - timestamp: 1729610201298 -- kind: conda - name: coverage - version: 7.6.4 - build: py311h5082efb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.4-py311h5082efb_0.conda - sha256: fa8b16e32bf9b2dcc1a517a77aca49172d36489f707725cbcc4887f0839653ab - md5: c9501fe8c7975b95dc9a467ed020f83a + size: 374227 + timestamp: 1732426312331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda + sha256: f81fb017d0312a392d6454f374e69379650108bb5d709c635edf9dcbb9a39eef + md5: fe8c93f4c75908fe2a1cc45ed0c47edf depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - tomli - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 398671 - timestamp: 1729610502579 -- kind: conda - name: coverage - version: 7.6.4 - build: py311h56c23cb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.4-py311h56c23cb_0.conda - sha256: 44b3a9de067245302934dc85973bd2b29d56849332774d8dda3b0c2eb0f78e7c - md5: 3485c1ee29d72d316c427f872d0f368c + size: 364534 + timestamp: 1732426278362 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py311ha3cf9ac_0.conda + sha256: 712e003aa6c74c42110a1d3d3e6927b994226cc11b6b5f614175f3846209101b + md5: f79da3c5e65345b7c1e814a7fbd22fbb depends: - - __osx >=11.0 + - __osx >=10.13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 372411 - timestamp: 1729610328835 -- kind: conda - name: coverage - version: 7.6.4 - build: py311h8b4e8a7_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.4-py311h8b4e8a7_0.conda - sha256: 9bfc2f16c84b4b2e581fa81112c179d45a08db33818f0d7a63f15490ceb51a8d - md5: 47a50d72c245f4ce1a0ef7d6c801765c + size: 372157 + timestamp: 1732426338740 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda + sha256: d0eb9a85577b470e8bc0efad8e6bc480ee4153fdb7206e05bfef59cae54a8944 + md5: 407f22327e2934990bf6b36b080459d6 depends: - __osx >=10.13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - tomli license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 370977 - timestamp: 1729610261181 -- kind: conda - name: coverage - version: 7.6.4 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.4-py312h178313f_0.conda - sha256: 62ef1654898b67a1aae353c8910323c803db0dcf0c117d5796eb1cfb03a2d777 - md5: a32fbd2322865ac80c7db74c553f5306 + size: 363131 + timestamp: 1732426337446 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py311h4921393_0.conda + sha256: 8d259602e6d3b9ad25ec3be8c4e1d2603c6c9eb5cb2d6b2dab63524579a9428b + md5: 2225caba3f015750365040279e830c08 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 363969 - timestamp: 1729610283175 -- kind: conda - name: coverage - version: 7.6.4 - build: py312h31fea79_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.4-py312h31fea79_0.conda - sha256: f8dab11095b58ce898e63b958981a3c4e57e4a90c67fdf26897557943184180e - md5: e04090ead5d6f503e34ee225528a6229 + size: 373918 + timestamp: 1732426444969 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda + sha256: 71135e0a59806897059d60d184877bf581132b0148f492b5ad195dc36e714341 + md5: e5ca7c17efb98bf88fd764fc4544fa98 depends: + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - tomli - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 389323 - timestamp: 1729610585096 -- kind: conda - name: coverage - version: 7.6.4 - build: py312ha0ccf2a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.4-py312ha0ccf2a_0.conda - sha256: 4211bf3f5a2f9f45fbf7c73e40dfb6ad84f6123bbf77c3bee5ca04b85c8c400f - md5: ff7f61eae0c3bc906a37f0804208fd46 + size: 363034 + timestamp: 1732426393335 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py311h5082efb_0.conda + sha256: a394422eab4ef0ed7532db8ef2e9df2248ba58fc388d6cbdebb3f0636681ab5e + md5: 06f5b27c266b026247d671f66f690908 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 362479 - timestamp: 1729610313800 -- kind: conda - name: coverage - version: 7.6.4 - build: py312hbe3f5e4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.4-py312hbe3f5e4_0.conda - sha256: 59c715b5cea39fbcad43dc2000380a67ef904d3dfa6954d5af57fb23e71f7c29 - md5: 686d7971e78e94af94af94713853be60 + size: 399995 + timestamp: 1732426460465 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda + sha256: 205486352834826eb3c62a3fd25b16d5473ea7bdf15738635c75d641ae6c0edc + md5: 3cb203bad55b8ddc2b4c603172bd23d5 depends: - - __osx >=10.13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 362509 - timestamp: 1729610208953 -- kind: conda - name: cpython - version: 3.11.10 - build: py311hd8ed1ab_3 - build_number: 3 - subdir: noarch + size: 389589 + timestamp: 1732426591086 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.10-py311hd8ed1ab_3.conda noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.10-py311hd8ed1ab_3.conda sha256: 3b2460b6cce53ce95f1f3aeb8ef7a50b356226dc48d45265ce5e585fc5e8cbed md5: b6d1a583921c24bb45feef32262b10aa depends: @@ -5420,13 +4829,8 @@ packages: purls: [] size: 45741 timestamp: 1729041746101 -- kind: conda - name: cpython - version: 3.12.7 - build: py312hd8ed1ab_0 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda sha256: 9bbd08c83cc9c3142755b96dc5f3e0f0370d7afdb773c8285359b31e7ce96f0a md5: f0d1309310498284ab13c9fd73db4781 depends: @@ -5436,108 +4840,17 @@ packages: purls: [] size: 44632 timestamp: 1728057282977 -- kind: conda - name: cpython - version: 3.13.0 - build: py313hd8ed1ab_100 - build_number: 100 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.0-py313hd8ed1ab_100.conda - sha256: f75a981dbaadc0196a275ddeb10e1cf23340589ee49e6f494bc60247468f70b3 - md5: 150059fe488fb313446030b75672e5db - depends: - - python 3.13.0.* - - python_abi * *_cp313 - license: Python-2.0 - purls: [] - size: 46133 - timestamp: 1728417498093 -- kind: conda +- pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb name: dags - version: 0.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dags-0.2.3-pyhd8ed1ab_0.tar.bz2 - sha256: fe7451726ccd093ba16f8f87b7f77838526fb7dd8233e4025196e33e1051fdf4 - md5: 80f6757d160d4877999da21d4ec606f5 - depends: + version: 0.2.4.dev6+gd4e4b0b + requires_dist: + - flatten-dict - networkx - - python >=3.7 - license: MIT - license_family: MIT - purls: - - pkg:pypi/dags?source=hash-mapping - size: 12667 - timestamp: 1665313582721 -- kind: conda - name: debugpy - version: 1.8.7 - build: py311h3f08180_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py311h3f08180_0.conda - sha256: 88a6c8db209168a20e9e3c91db527f531b2994013852e6ac9f122b8ce28d88ea - md5: 6bea7745539923fc0facaa2cba50369c - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2493171 - timestamp: 1728594326810 -- kind: conda - name: debugpy - version: 1.8.7 - build: py311hd89902b_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py311hd89902b_0.conda - sha256: 4188b10fa63dff1cd6d3d05ee90fc2242be4f79a84a598785aa41b61fceaa0f2 - md5: e88d2e577bfb45271a4590cb9d010e5d - depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2487953 - timestamp: 1728594270483 -- kind: conda - name: debugpy - version: 1.8.7 - build: py311hda3d55a_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py311hda3d55a_0.conda - sha256: 714deaaa5ed757b259062f7979c2ed5e9fea66361ef72a5b63c644ea4b75232d - md5: 351ff5f8591856aa848a2cc89ca53957 - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 3548917 - timestamp: 1728594758491 -- kind: conda - name: debugpy - version: 1.8.7 - build: py311hfdbb021_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py311hfdbb021_0.conda - sha256: 540d6b509d68ba77f6ad06f3bc419ba42930f1b3139ab4fda0476e12de8d7f4d - md5: e02dac14097eb3605342cd35c13f0a26 + - types-networkx + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py311hfdbb021_0.conda + sha256: cc2e120f53571e19ee6ea062e85e256fce6550ee139d8127cfb24d7ba015f2ae + md5: e1d95dce136e7d0f6a9d7cd9b6dca985 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5548,138 +4861,102 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2544636 - timestamp: 1728594337523 -- kind: conda - name: debugpy - version: 1.8.7 - build: py312h275cf98_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py312h275cf98_0.conda - sha256: 09e3d6ce099093c95fea5e491aa3027f4a10a290ccea4a4b1f596adb682bdd31 - md5: d44035420f6e1aa2f1983e0860c14ce6 + size: 2567811 + timestamp: 1732236803227 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a + md5: c522fd70ca7a0c2fe1a861dd13987a57 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3502851 - timestamp: 1728594816374 -- kind: conda - name: debugpy - version: 1.8.7 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py312h2ec8cdc_0.conda - sha256: e03c74ba23342f580f4cc822e46623561206da4857fd47c84c482f36a121095d - md5: 13e4b568d8f94e2a38f9acd192149516 + size: 2605093 + timestamp: 1732236790708 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py311hc356e98_0.conda + sha256: 12b1bcdbc226966ad328fbfc48c605e82e7f8e28f58905611a4789cbcc33a41d + md5: fb00506b224d15fdc3851a8c9985d4e1 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=10.13 + - libcxx >=18 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2640727 - timestamp: 1728594265044 -- kind: conda - name: debugpy - version: 1.8.7 - build: py312h5861a67_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py312h5861a67_0.conda - sha256: ecb7d1747b9a29617a9ab6ce2b242b0a5fb6f106b7802adc1ecd4b9014f3eda5 - md5: ce833a8cb2ca51926ece65e1831694d8 + size: 2499942 + timestamp: 1732237016874 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda + sha256: 95b43839332c9bcd7da3f98ad322f371d8a3a40283945fadfecf8043d0a0cf38 + md5: 9e50ff5d80cdebeda0fe7eabba6d55e0 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2508736 - timestamp: 1728594477705 -- kind: conda - name: debugpy - version: 1.8.7 - build: py312hde4cb15_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py312hde4cb15_0.conda - sha256: 65f015c6c2a2c5f52f91cfb1622f9e82499e9d7f3c4ccb4fa255b16ae575c9a2 - md5: 1985200ccb082e68d47b4fdd0bacfe97 + size: 2581941 + timestamp: 1732236893783 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py311h155a34a_0.conda + sha256: 880c3de00402d6c5d61d3f64af9ecad8022f272225e3ae62fa8e9c4885b7f0e5 + md5: d619288803d5935f771f64a7924a6aad depends: - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libcxx >=18 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2555984 - timestamp: 1728594350396 -- kind: conda - name: debugpy - version: 1.8.7 - build: py313h3579c5c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.7-py313h3579c5c_0.conda - sha256: 87422f051688b517d893797f270b8a092a5ab2e833dd51627f2e9cf1747504ae - md5: ff16fef4de8ce20529af24ba787030c7 + size: 2531409 + timestamp: 1732237062084 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda + sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 + md5: 51085e5bb7f21019186cc88fd9a03164 depends: - __osx >=11.0 - - libcxx >=17 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2543084 - timestamp: 1728594324192 -- kind: conda - name: debugpy - version: 1.8.7 - build: py313h46c70d0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.7-py313h46c70d0_0.conda - sha256: a18ad8895deb52de9bf5969efbe98f6dad276ebd62d65666836bc4cbc90aa179 - md5: 20476f3c3a8a61560fa249e0d6514ab4 + size: 2512030 + timestamp: 1732236996277 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py311hda3d55a_0.conda + sha256: 04db57c1b8fa22d17399c8df03e0d62b365a1315318b59009980672762a6ed87 + md5: 0f21eefbe9b04632c4e0e17636be84d3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2679576 - timestamp: 1728594270223 -- kind: conda - name: debugpy - version: 1.8.7 - build: py313h5813708_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.7-py313h5813708_0.conda - sha256: d203fef84c2130ea0a4fe3d1c535cc4c6b2d48a275fca2ddf3f77ce522074fda - md5: 198042ea668cff413825bcaf34293574 - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + size: 3623627 + timestamp: 1732237179740 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda + sha256: 5a6b8e7d6cef17eb0e39c3a4261eeba293901445f4d5ddf8eae09ca775058acb + md5: 1300cbe0243cd21d23212fb654c4d434 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -5687,34 +4964,9 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3588809 - timestamp: 1728594850379 -- kind: conda - name: debugpy - version: 1.8.7 - build: py313h9ea2907_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.7-py313h9ea2907_0.conda - sha256: adccd8b43c325edc58a8361912a9d6819ffccb4c9a12d66280a211004742214c - md5: d4f7da1e1663ab4c3e9f601adfae9dc6 - depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2556108 - timestamp: 1728594286910 -- kind: conda - name: decorator - version: 5.1.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + size: 3518631 + timestamp: 1732237024268 +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 md5: 43afe5ab04e35e17ba28649471dd7364 depends: @@ -5725,13 +4977,7 @@ packages: - pkg:pypi/decorator?source=hash-mapping size: 12072 timestamp: 1641555714315 -- kind: conda - name: defusedxml - version: 0.7.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be md5: 961b3a227b437d82ad7054484cfa71b2 depends: @@ -5742,13 +4988,7 @@ packages: - pkg:pypi/defusedxml?source=hash-mapping size: 24062 timestamp: 1615232388757 -- kind: conda - name: distlib - version: 0.3.9 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda sha256: 300b2e714f59403df0560174f5ef6c19db8b4a3b74a7244862cf771f07dee8fb md5: fe521c1608280cc2803ebd26dc252212 depends: @@ -5759,13 +4999,7 @@ packages: - pkg:pypi/distlib?source=hash-mapping size: 276214 timestamp: 1728557312342 -- kind: conda - name: docutils - version: 0.21.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda sha256: 362bfe3afaac18298c48c0c6a935641544077ce5105a42a2d8ebe750ad07c574 md5: e8cd5d629f65bdf0f3bb312cde14659e depends: @@ -5775,13 +5009,7 @@ packages: - pkg:pypi/docutils?source=hash-mapping size: 403226 timestamp: 1713930478970 -- kind: conda - name: entrypoints - version: '0.4' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af md5: 3cf04868fee0a029769bd41f4b2fbf2d depends: @@ -5792,13 +5020,7 @@ packages: - pkg:pypi/entrypoints?source=hash-mapping size: 9199 timestamp: 1643888357950 -- kind: conda - name: et_xmlfile - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda sha256: 385e7f1cd141ce535f30bfefb49d6f21aaecfca710c8cfa49b5ce2fa88f1d27d md5: cdcdbe90dfab4075fc1f3c4cf2e4b4e5 depends: @@ -5809,13 +5031,7 @@ packages: - pkg:pypi/et-xmlfile?source=hash-mapping size: 21781 timestamp: 1729893031985 -- kind: conda - name: exceptiongroup - version: 1.2.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 md5: d02ae936e42063ca46af6cdad2dbd1e0 depends: @@ -5825,13 +5041,7 @@ packages: - pkg:pypi/exceptiongroup?source=hash-mapping size: 20418 timestamp: 1720869435725 -- kind: conda - name: execnet - version: 2.1.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda sha256: 564bc012d73ca29964e7acca18d60b2fa8d20eea6d258d98cfc24df5167beaf0 md5: 15dda3cdbf330abfe9f555d22f66db46 depends: @@ -5842,13 +5052,7 @@ packages: - pkg:pypi/execnet?source=hash-mapping size: 38883 timestamp: 1712591929944 -- kind: conda - name: executing - version: 2.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 md5: d0441db20c827c11721889a241df1220 depends: @@ -5859,13 +5063,7 @@ packages: - pkg:pypi/executing?source=hash-mapping size: 28337 timestamp: 1725214501850 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 depends: @@ -5875,13 +5073,16 @@ packages: - pkg:pypi/filelock?source=hash-mapping size: 17357 timestamp: 1726613593584 -- kind: conda - name: font-ttf-dejavu-sans-mono - version: '2.37' - build: hab24e00_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + name: flatten-dict + version: 0.4.2 + sha256: 7e245b20c4c718981212210eec4284a330c9f713e632e98765560e05421e48ad + requires_dist: + - importlib-metadata ; python_full_version < '3.8' + - pathlib2>=2.3,<3.0 ; python_full_version < '3.4' + - six>=1.12,<2.0 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 license: BSD-3-Clause @@ -5889,13 +5090,7 @@ packages: purls: [] size: 397370 timestamp: 1566932522327 -- kind: conda - name: font-ttf-inconsolata - version: '3.000' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c md5: 34893075a5c9e55cdafac56607368fc6 license: OFL-1.1 @@ -5903,13 +5098,7 @@ packages: purls: [] size: 96530 timestamp: 1620479909603 -- kind: conda - name: font-ttf-source-code-pro - version: '2.038' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 md5: 4d59c254e01d9cde7957100457e2d5fb license: OFL-1.1 @@ -5917,14 +5106,7 @@ packages: purls: [] size: 700814 timestamp: 1620479612257 -- kind: conda - name: font-ttf-ubuntu - version: '0.83' - build: h77eed37_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 md5: 49023d73832ef61042f6a237cb2687e7 license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 @@ -5932,32 +5114,22 @@ packages: purls: [] size: 1620504 timestamp: 1727511233259 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h1383a14_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc - md5: 7b29f48742cea5d1ccb5edd839cb5621 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 234227 - timestamp: 1730284037572 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h37eeddb_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda sha256: 61a9aa1d2dd115ffc1ab372966dc8b1ac7b69870e6b1744641da276b31ea5c0b md5: 84ccec5ee37eb03dd352db0a3f89ada3 depends: @@ -5970,13 +5142,20 @@ packages: purls: [] size: 232313 timestamp: 1730283983397 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h765892d_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 234227 + timestamp: 1730284037572 +- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda sha256: ed122fc858fb95768ca9ca77e73c8d9ddc21d4b2e13aaab5281e27593e840691 md5: 9bb0026a2131b09404c59c4290c697cd depends: @@ -5992,34 +5171,7 @@ packages: purls: [] size: 192355 timestamp: 1730284147944 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h7e30c49_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 - md5: 8f5b0b297b59e1ac160ad4beec99dbee - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - purls: [] - size: 265599 - timestamp: 1730283881107 -- kind: conda - name: fonts-conda-ecosystem - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 md5: fee5683a3f04bd15cbd8318b096a27ab depends: @@ -6029,13 +5181,7 @@ packages: purls: [] size: 3667 timestamp: 1566974674465 -- kind: conda - name: fonts-conda-forge - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 md5: f766549260d6815b0c52253f1fb1bb29 depends: @@ -6048,13 +5194,7 @@ packages: purls: [] size: 4102 timestamp: 1566932280397 -- kind: conda - name: fqdn - version: 1.5.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63 md5: 642d35437078749ef23a5dca2c9bb1f3 depends: @@ -6066,13 +5206,7 @@ packages: - pkg:pypi/fqdn?source=hash-mapping size: 14395 timestamp: 1638810388635 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: @@ -6083,13 +5217,7 @@ packages: purls: [] size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: h60636b9_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e md5: 25152fce119320c980e5470e64834b50 depends: @@ -6099,13 +5227,7 @@ packages: purls: [] size: 599300 timestamp: 1694616137838 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 md5: e6085e516a3e304ce41a8ee08b9b89ad depends: @@ -6115,13 +5237,7 @@ packages: purls: [] size: 596430 timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hdaf720e_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 md5: 3761b23693f768dc75a8fd0a73ca053f depends: @@ -6134,24 +5250,7 @@ packages: purls: [] size: 510306 timestamp: 1694616398888 -- kind: conda - name: fribidi - version: 1.0.10 - build: h27ca646_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 - md5: c64443234ff91d70cb9c7dc926c58834 - license: LGPL-2.1 - purls: [] - size: 60255 - timestamp: 1604417405528 -- kind: conda - name: fribidi - version: 1.0.10 - build: h36c2ea0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 md5: ac7bc6a654f8f41b352b38f4051135f8 depends: @@ -6160,12 +5259,21 @@ packages: purls: [] size: 114383 timestamp: 1604416621168 -- kind: conda - name: fribidi - version: 1.0.10 - build: h8d14728_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 + md5: f1c6b41e0f56998ecd9a3e210faa1dc0 + license: LGPL-2.1 + purls: [] + size: 65388 + timestamp: 1604417213 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 + md5: c64443234ff91d70cb9c7dc926c58834 + license: LGPL-2.1 + purls: [] + size: 60255 + timestamp: 1604417405528 +- conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 sha256: e0323e6d7b6047042970812ee810c6b1e1a11a3af4025db26d0965ae5d206104 md5: 807e81d915f2bb2e49951648615241f6 depends: @@ -6175,44 +5283,21 @@ packages: purls: [] size: 64567 timestamp: 1604417122064 -- kind: conda - name: fribidi - version: 1.0.10 - build: hbcb3906_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 - md5: f1c6b41e0f56998ecd9a3e210faa1dc0 - license: LGPL-2.1 - purls: [] - size: 65388 - timestamp: 1604417213 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: h7ddc832_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 - md5: 151309a7e1eb57a3c2ab8088a1d74f3e +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f depends: - - __osx >=11.0 + - libgcc-ng >=12 - libglib >=2.80.2,<3.0a0 - - libintl >=0.22.5,<1.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 509570 - timestamp: 1715783199780 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: ha587570_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + size: 528149 + timestamp: 1715782983957 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 md5: ee186d2e8db4605030753dc05025d4a0 depends: @@ -6227,32 +5312,22 @@ packages: purls: [] size: 516815 timestamp: 1715783154558 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: hb9ae30d_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb - md5: 201db6c2d9a3c5e46573ac4cb2e92f4f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 + md5: 151309a7e1eb57a3c2ab8088a1d74f3e depends: - - libgcc-ng >=12 + - __osx >=11.0 - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 528149 - timestamp: 1715782983957 -- kind: conda - name: getopt-win32 - version: '0.1' - build: hcfcfb64_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + size: 509570 + timestamp: 1715783199780 +- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c md5: 714d0882dc5e692ca4683d8e520f73c6 depends: @@ -6264,19 +5339,18 @@ packages: purls: [] size: 21903 timestamp: 1694400856979 -- kind: pypi +- pypi: . name: gettsim - version: 0.7.1.dev94+g408e0038.d20241105 - path: . - sha256: 4676de93206ae07ce676c2d106eee14b2d38c6e73fc3c7105f9ff03941ce222f + version: 0.7.1.dev305+gb67bbac0.d20250215 + sha256: 468d7ee73fd31c448cd102912b902342be58fb2b7298aacca19f8f4eca97a50d requires_dist: - astor - - dags - ipywidgets - networkx - numpy - numpy-groupies - openpyxl + - optree - pandas - plotly - pygments @@ -6285,13 +5359,7 @@ packages: - pyyaml requires_python: '>=3.11' editable: true -- kind: conda - name: graphite2 - version: 1.3.13 - build: h59595ed_1003 - build_number: 1003 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add md5: f87c7b7c2cb45f323ffbce941c78ab7c depends: @@ -6302,31 +5370,7 @@ packages: purls: [] size: 96855 timestamp: 1711634169756 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h63175ca_1003 - build_number: 1003 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f - md5: 3194499ee7d1a67404a87d0eefdd92c6 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 95406 - timestamp: 1711634622644 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h73e2aa4_1003 - build_number: 1003 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a md5: fc7124f86e1d359fc5d878accd9e814c depends: @@ -6336,13 +5380,7 @@ packages: purls: [] size: 84384 timestamp: 1711634311095 -- kind: conda - name: graphite2 - version: 1.3.13 - build: hebf3989_1003 - build_number: 1003 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 md5: 339991336eeddb70076d8ca826dac625 depends: @@ -6352,38 +5390,19 @@ packages: purls: [] size: 79774 timestamp: 1711634444608 -- kind: conda - name: graphviz - version: 12.0.0 - build: hb01754f_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda - sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced - md5: 8074641ca215d6f30b6152d9d79f0b9e +- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f + md5: 3194499ee7d1a67404a87d0eefdd92c6 depends: - - cairo >=1.18.0,<2.0a0 - - getopt-win32 >=0.1,<0.2.0a0 - - gts >=0.7.6,<0.8.0a0 - - libexpat >=2.6.2,<3.0a0 - - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.80.3,<3.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - pango >=1.50.14,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - license: EPL-1.0 - license_family: Other + license: LGPL-2.0-or-later + license_family: LGPL purls: [] - size: 1157652 - timestamp: 1722674488876 -- kind: conda - name: graphviz - version: 12.0.0 - build: hba01fac_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + size: 95406 + timestamp: 1711634622644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda sha256: 2eb794ae1de42b688f89811113ae3dcb63698272ee8f87029abce5f77c742c2a md5: 953e31ea00d46beb7e64a79fc291ec44 depends: @@ -6407,16 +5426,11 @@ packages: purls: [] size: 2303111 timestamp: 1722673717117 -- kind: conda - name: graphviz - version: 12.0.0 - build: hbf8cc41_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - sha256: 33867d6ebc54f290dfb511fdca0297b30ca06985ac4443e1fc9d7fe03bfbad05 - md5: 29c0dcbd4ec7135b7a55805aa3a5a331 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c + md5: ef49aa1e3614bfc6fb5369675129c09b depends: - - __osx >=11.0 + - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 @@ -6433,18 +5447,13 @@ packages: license: EPL-1.0 license_family: Other purls: [] - size: 5082874 - timestamp: 1722673934247 -- kind: conda - name: graphviz - version: 12.0.0 - build: he14ced1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c - md5: ef49aa1e3614bfc6fb5369675129c09b + size: 4984341 + timestamp: 1722673941539 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + sha256: 33867d6ebc54f290dfb511fdca0297b30ca06985ac4443e1fc9d7fe03bfbad05 + md5: 29c0dcbd4ec7135b7a55805aa3a5a331 depends: - - __osx >=10.13 + - __osx >=11.0 - cairo >=1.18.0,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 @@ -6461,36 +5470,30 @@ packages: license: EPL-1.0 license_family: Other purls: [] - size: 4984341 - timestamp: 1722673941539 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h2c15c3c_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda - sha256: 9d7a50dae4aef357473b16c5121c1803a0c9ee1b8f93c4d90dc0196ae5007208 - md5: 308376a1154bc0ab3bbeeccf6ff986be + size: 5082874 + timestamp: 1722673934247 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced + md5: 8074641ca215d6f30b6152d9d79f0b9e depends: - - __osx >=10.13 - - atk-1.0 >=2.38.0 - cairo >=1.18.0,<2.0a0 - - gdk-pixbuf >=2.42.12,<3.0a0 + - getopt-win32 >=0.1,<0.2.0a0 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 - libglib >=2.80.3,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - pango >=1.54.0,<2.0a0 - license: LGPL-2.1-or-later + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.50.14,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: EPL-1.0 + license_family: Other purls: [] - size: 6162947 - timestamp: 1721286459536 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h6470451_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + size: 1157652 + timestamp: 1722674488876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda sha256: 16644d036321b32635369c183502974c8b989fa516c313bd379f9aa4adcdf642 md5: 1483ba046164be27df7f6eddbcec3a12 depends: @@ -6512,13 +5515,22 @@ packages: purls: [] size: 6501561 timestamp: 1721285940408 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h91d5085_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + sha256: 9d7a50dae4aef357473b16c5121c1803a0c9ee1b8f93c4d90dc0196ae5007208 + md5: 308376a1154bc0ab3bbeeccf6ff986be + depends: + - __osx >=10.13 + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.80.3,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - pango >=1.54.0,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 6162947 + timestamp: 1721286459536 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda sha256: 26ca08e16bb530465370d94309bfb500438f6cff4d6cf85725db3b7afcd9eccd md5: 23558d38b8e80959b74cfe83acad7c66 depends: @@ -6533,13 +5545,19 @@ packages: purls: [] size: 6152068 timestamp: 1721286930050 -- kind: conda - name: gts - version: 0.7.6 - build: h53e17e3_4 - build_number: 4 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b + md5: 4d8df0b0db060d33c9a702ada998a8fe + depends: + - libgcc-ng >=12 + - libglib >=2.76.3,<3.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 318312 + timestamp: 1686545244763 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 md5: 848cc963fcfbd063c7a023024aa3bec0 depends: @@ -6550,13 +5568,18 @@ packages: purls: [] size: 280972 timestamp: 1686545425074 -- kind: conda - name: gts - version: 0.7.6 - build: h6b5321d_4 - build_number: 4 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba + md5: 21b4dd3098f63a74cf2aa9159cbef57d + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 304331 + timestamp: 1686545503242 +- conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda sha256: b79755d2f9fc2113b6949bfc170c067902bc776e2c20da26e746e780f4f5a2d4 md5: a41f14768d5e377426ad60c613f2923b depends: @@ -6569,48 +5592,7 @@ packages: purls: [] size: 188688 timestamp: 1686545648050 -- kind: conda - name: gts - version: 0.7.6 - build: h977cf35_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b - md5: 4d8df0b0db060d33c9a702ada998a8fe - depends: - - libgcc-ng >=12 - - libglib >=2.76.3,<3.0a0 - - libstdcxx-ng >=12 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 318312 - timestamp: 1686545244763 -- kind: conda - name: gts - version: 0.7.6 - build: he42f4ea_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba - md5: 21b4dd3098f63a74cf2aa9159cbef57d - depends: - - libcxx >=15.0.7 - - libglib >=2.76.3,<3.0a0 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 304331 - timestamp: 1686545503242 -- kind: conda - name: h11 - version: 0.14.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 md5: b21ed0883505ba1910994f1df031a428 depends: @@ -6622,13 +5604,7 @@ packages: - pkg:pypi/h11?source=hash-mapping size: 48251 timestamp: 1664132995560 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a md5: b748fbf7060927a6e82df7cb5ee8f097 depends: @@ -6641,58 +5617,40 @@ packages: - pkg:pypi/h2?source=hash-mapping size: 46754 timestamp: 1634280590080 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h098a298_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 - md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 + md5: 76b32dcf243444aea9c6b804bcfa40b8 depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=16 + - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 license: MIT license_family: MIT purls: [] - size: 1372588 - timestamp: 1721186294497 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h2bedf89_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 - md5: 254f119aaed2c0be271c1114ae18d09b + size: 1603653 + timestamp: 1721186240105 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 + md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 depends: + - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 + - libcxx >=16 - libglib >=2.80.3,<3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: [] - size: 1095620 - timestamp: 1721187287831 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h997cde5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + size: 1372588 + timestamp: 1721186294497 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f md5: 50f6825d3c4a6fca6fefdefa98081554 depends: @@ -6708,36 +5666,24 @@ packages: purls: [] size: 1317509 timestamp: 1721186764931 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: hda332d3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 - md5: 76b32dcf243444aea9c6b804bcfa40b8 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 + md5: 254f119aaed2c0be271c1114ae18d09b depends: - - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: [] - size: 1603653 - timestamp: 1721186240105 -- kind: conda - name: hpack - version: 4.0.0 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + size: 1095620 + timestamp: 1721187287831 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 md5: 914d6646c4dbb1fd3ff539830a12fd71 depends: @@ -6748,35 +5694,22 @@ packages: - pkg:pypi/hpack?source=hash-mapping size: 25341 timestamp: 1598856368685 -- kind: conda - name: httpcore - version: 1.0.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.6-pyhd8ed1ab_0.conda - sha256: 8952c3f1eb18bf4d7e813176c3b23e0af4e863e8b05087e73f74f371d73077ca - md5: b8e1901ef9a215fc41ecfb6bef7e0943 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: - - anyio >=3.0,<5.0 - - certifi + - python >=3.8 - h11 >=0.13,<0.15 - h2 >=3,<5 - - python >=3.8 - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/httpcore?source=hash-mapping - size: 45711 - timestamp: 1727821031365 -- kind: conda - name: httpx - version: 0.27.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + purls: [] + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 md5: 7e9ac3faeebdbd7b53b462c41891e7f7 depends: @@ -6792,13 +5725,7 @@ packages: - pkg:pypi/httpx?source=hash-mapping size: 65085 timestamp: 1724778453275 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 md5: 9f765cbfab6870c8435b9eefecd7a1f4 depends: @@ -6809,27 +5736,7 @@ packages: - pkg:pypi/hyperframe?source=hash-mapping size: 14646 timestamp: 1619110249723 -- kind: conda - name: icu - version: '75.1' - build: h120a0e1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 - md5: d68d48a3060eb5abdc1cdc8e2a3a5966 - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: [] - size: 11761697 - timestamp: 1720853679409 -- kind: conda - name: icu - version: '75.1' - build: he02047a_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 depends: @@ -6841,29 +5748,17 @@ packages: purls: [] size: 12129203 timestamp: 1720853576813 -- kind: conda - name: icu - version: '75.1' - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 - md5: 8579b6bb8d18be7c0b27fb08adeeeb40 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 14544252 - timestamp: 1720853966338 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + size: 11761697 + timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: @@ -6873,15 +5768,21 @@ packages: purls: [] size: 11857802 timestamp: 1720853997952 -- kind: conda - name: identify - version: 2.6.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.1-pyhd8ed1ab_0.conda - sha256: dc752392f327e64e32bc3122758b2d8951aec9d6e6aa888463c73d18a10e3c56 - md5: 43f629202f9eec21be5f71171fb5daf8 +- conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 + md5: 8579b6bb8d18be7c0b27fb08adeeeb40 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 14544252 + timestamp: 1720853966338 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda + sha256: 4e3f1c381ad65b476a98d03c0f6c73df04ae4095b501f51129ba6f2a7660179c + md5: 636950f839e065401e2031624a414f0b depends: - python >=3.6 - ukkonen @@ -6889,15 +5790,9 @@ packages: license_family: MIT purls: - pkg:pypi/identify?source=hash-mapping - size: 78078 - timestamp: 1726369674008 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + size: 78376 + timestamp: 1731187862708 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 md5: 7ba2ede0e7c795ff95088daf0dc59753 depends: @@ -6908,13 +5803,7 @@ packages: - pkg:pypi/idna?source=hash-mapping size: 49837 timestamp: 1726459583613 -- kind: conda - name: imagesize - version: 1.4.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 md5: 7de5386c8fea29e76b303f37dde4c352 depends: @@ -6925,13 +5814,7 @@ packages: - pkg:pypi/imagesize?source=hash-mapping size: 10164 timestamp: 1656939625410 -- kind: conda - name: importlib-metadata - version: 8.5.0 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c md5: 54198435fce4d64d8a89af22573012a8 depends: @@ -6943,13 +5826,7 @@ packages: - pkg:pypi/importlib-metadata?source=hash-mapping size: 28646 timestamp: 1726082927916 -- kind: conda - name: importlib_resources - version: 6.4.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 md5: c808991d29b9838fb4d96ce8267ec9ec depends: @@ -6963,19 +5840,7 @@ packages: - pkg:pypi/importlib-resources?source=hash-mapping size: 32725 timestamp: 1725921462405 -- kind: pypi - name: iniconfig - version: 2.0.0 - url: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl - sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 - requires_python: '>=3.7' -- kind: conda - name: iniconfig - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 md5: f800d2da156d08e289b14e87e43c1ae5 depends: @@ -6986,13 +5851,7 @@ packages: - pkg:pypi/iniconfig?source=hash-mapping size: 11101 timestamp: 1673103208955 -- kind: conda - name: intel-openmp - version: 2024.2.1 - build: h57928b3_1083 - build_number: 1083 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 md5: 2d89243bfb53652c182a7c73182cce4f license: LicenseRef-IntelSimplifiedSoftwareOct2022 @@ -7000,13 +5859,7 @@ packages: purls: [] size: 1852356 timestamp: 1723739573141 -- kind: conda - name: ipykernel - version: 6.29.5 - build: pyh3099207_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a md5: b40131ab6a36ac2c09b7c57d4d3fbf99 depends: @@ -7030,13 +5883,7 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119084 timestamp: 1719845605084 -- kind: conda - name: ipykernel - version: 6.29.5 - build: pyh4bbf305_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda sha256: dc569094125127c0078aa536f78733f383dd7e09507277ef8bcd1789786e7086 md5: 18df5fc4944a679e085e0e8f31775fc8 depends: @@ -7060,13 +5907,7 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119853 timestamp: 1719845858082 -- kind: conda - name: ipykernel - version: 6.29.5 - build: pyh57ce528_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 md5: 9eb15d654daa0ef5a98802f586bb4ffc depends: @@ -7091,13 +5932,7 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- kind: conda - name: ipython - version: 8.29.0 - build: pyh707e725_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda sha256: 606723272a208cca1036852e04fbb61741b78451784746e75edd1becb70347d2 md5: 56db21d7d51410fcfbfeca3d1a6b4269 depends: @@ -7120,13 +5955,7 @@ packages: - pkg:pypi/ipython?source=hash-mapping size: 599356 timestamp: 1729866495921 -- kind: conda - name: ipython - version: 8.29.0 - build: pyh7428d3b_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda sha256: 2208dbe96e94ba653c4e0a5f302e36f16df73eec1968cfb85eff2d9775c9ced1 md5: 9dc505b3569b4c26cffc241c50695f75 depends: @@ -7149,13 +5978,7 @@ packages: - pkg:pypi/ipython?source=hash-mapping size: 600237 timestamp: 1729866942619 -- kind: conda - name: ipywidgets - version: 8.1.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 md5: a022d34163147d16b27de86dc53e93fc depends: @@ -7171,13 +5994,7 @@ packages: - pkg:pypi/ipywidgets?source=hash-mapping size: 113497 timestamp: 1724334989324 -- kind: conda - name: isoduration - version: 20.11.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493 md5: 4cb68948e0b8429534380243d063a27a depends: @@ -7189,42 +6006,7 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 17189 timestamp: 1638811664194 -- kind: pypi - name: jax - version: 0.4.35 - url: https://files.pythonhosted.org/packages/62/20/6c57c50c0ccc645fea1895950f1e5cd02f961ee44b3ffe83617fa46b0c1d/jax-0.4.35-py3-none-any.whl - sha256: fa99e909a31424abfec750019a6dd36f6acc18a6e7d40e2c0086b932cc351325 - requires_dist: - - jaxlib<=0.4.35,>=0.4.34 - - ml-dtypes>=0.4.0 - - numpy>=1.24 - - opt-einsum - - scipy>=1.10 - - numpy>=1.26.0 ; python_full_version >= '3.12' - - scipy>=1.11.1 ; python_full_version >= '3.12' - - jaxlib==0.4.34 ; extra == 'ci' - - jaxlib==0.4.34 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.4.35,>=0.4.34 ; extra == 'cuda' - - jaxlib==0.4.34 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.4.35,>=0.4.34 ; extra == 'cuda12' - - jaxlib==0.4.34 ; extra == 'cuda12-local' - - jax-cuda12-plugin==0.4.34 ; extra == 'cuda12-local' - - jaxlib==0.4.34 ; extra == 'cuda12-pip' - - jax-cuda12-plugin[with-cuda]<=0.4.35,>=0.4.34 ; extra == 'cuda12-pip' - - kubernetes ; extra == 'k8s' - - jaxlib==0.4.34 ; extra == 'minimum-jaxlib' - - jaxlib<=0.4.35,>=0.4.34 ; extra == 'tpu' - - libtpu-nightly==0.1.dev20241010+nightly.cleanup ; extra == 'tpu' - - libtpu==0.0.2 ; extra == 'tpu' - - requests ; extra == 'tpu' - requires_python: '>=3.10' -- kind: conda - name: jax - version: 0.4.34 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda sha256: da3880afc35042b92e0ad214beee372e41162da374dfaa8b1164db1dcee671b2 md5: f0d3c57355acf3f06d93672e57c0c1e8 depends: @@ -7243,31 +6025,16 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1421248 timestamp: 1729336456855 -- kind: pypi - name: jaxlib - version: 0.4.35 - url: https://files.pythonhosted.org/packages/97/05/093b3c511837ba514f0b97581f7b21e1bb79768b8b9c29013a406b00d484/jaxlib-0.4.35-cp312-cp312-win_amd64.whl - sha256: dddffce48d7e6057008999aed2d8a9daecc57a48c45a4f8c475e00880eb2e41d - requires_dist: - - scipy>=1.10 - - numpy>=1.24 - - ml-dtypes>=0.2.0 - - scipy>=1.11.1 ; python_full_version >= '3.12' - requires_python: '>=3.10' -- kind: conda - name: jaxlib - version: 0.4.34 - build: cpu_py312h2d9848c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.4.34-cpu_py312h2d9848c_0.conda - sha256: 175eec267092cf89bf5192a35d81dc97a96970668123f00309ce926078538912 - md5: e91888eb7904797f734f295f665ff020 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda + sha256: 8e2dce1d39ccb4e6883444f71b7155168c0612d9d086b58616578448aeb33afe + md5: 08f587f0f6505671c7715163e18b6f3a depends: - - __osx >=10.14 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 - libgrpc >=1.65.5,<1.66.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 @@ -7281,18 +6048,13 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 55681004 - timestamp: 1729093432667 -- kind: conda - name: jaxlib - version: 0.4.34 - build: cpu_py312h70eed8f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.4.34-cpu_py312h70eed8f_0.conda - sha256: 6be479c82e7d7bf2723c52dd2b1f661b227b05e9841745b81dc12ad794acbe5f - md5: d7992140b69f14ecb0f371b0c0f3aa76 + size: 57258872 + timestamp: 1729096396952 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.4.34-cpu_py312h2d9848c_0.conda + sha256: 175eec267092cf89bf5192a35d81dc97a96970668123f00309ce926078538912 + md5: e91888eb7904797f734f295f665ff020 depends: - - __osx >=11.0 + - __osx >=10.14 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libcxx >=17 @@ -7302,7 +6064,6 @@ packages: - numpy >=1.19,<3 - openssl >=3.3.2,<4.0a0 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: @@ -7311,28 +6072,23 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 45370019 - timestamp: 1729094275915 -- kind: conda - name: jaxlib - version: 0.4.34 - build: cpu_py312haec0345_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda - sha256: 8e2dce1d39ccb4e6883444f71b7155168c0612d9d086b58616578448aeb33afe - md5: 08f587f0f6505671c7715163e18b6f3a + size: 55681004 + timestamp: 1729093432667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.4.34-cpu_py312h70eed8f_0.conda + sha256: 6be479c82e7d7bf2723c52dd2b1f661b227b05e9841745b81dc12ad794acbe5f + md5: d7992140b69f14ecb0f371b0c0f3aa76 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 + - libcxx >=17 - libgrpc >=1.65.5,<1.66.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - openssl >=3.3.2,<4.0a0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: @@ -7341,33 +6097,20 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 57258872 - timestamp: 1729096396952 -- kind: conda - name: jedi - version: 0.19.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda - sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a - md5: 81a3be0b2023e1ea8555781f0ad904a2 + size: 45370019 + timestamp: 1729094275915 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda + sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab + md5: 11ead81b00e0f7cc901fceb7ccfb92c1 depends: - parso >=0.8.3,<0.9.0 - - python >=3.6 - license: MIT - license_family: MIT + - python >=3.9 + license: Apache-2.0 AND MIT purls: - pkg:pypi/jedi?source=hash-mapping - size: 841312 - timestamp: 1696326218364 -- kind: conda - name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + size: 842916 + timestamp: 1731317305873 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d md5: 7b86ecb7d3557821c649b3c31e3eb9f2 depends: @@ -7379,85 +6122,42 @@ packages: - pkg:pypi/jinja2?source=hash-mapping size: 111565 timestamp: 1715127275924 -- kind: conda - name: json5 - version: 0.9.25 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.25-pyhd8ed1ab_0.conda - sha256: 0c75e428970e8bb72ba1dd3a6dc32b8d68f6534b4fe16b38e53364963fdc8e38 - md5: 5d8c241a9261e720a34a07a3e1ac4109 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + sha256: 402586e586761e0d51dd590fb71786f7f4e21c16353ca7d1c559358a1f849b26 + md5: b5fd1ac9269dd22e003eaac27e249d97 depends: - - python >=3.7,<4.0 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/json5?source=hash-mapping - size: 27995 - timestamp: 1712986338874 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py311h1ea47a8_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - sha256: 9a667eeae67936e710ff69ee7ce0e784d6052eeba9670b268c565a55178098c4 - md5: 943f7fab631e12750641efd7279a268c - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jsonpointer?source=hash-mapping - size: 42891 - timestamp: 1725303340467 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py311h267d04e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - sha256: 736304347653ed421b13c56ba6f4f87c1d78d24cd3fa74db0db6fb70c814fa65 - md5: 5bce88ac1bef7d47c62cb574b25891ae + size: 28525 + timestamp: 1731366079831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda + sha256: 2f082f7b12a7c6824e051321c1029452562ad6d496ad2e8c8b7b3dea1c8feb92 + md5: 5ca76f61b00a15a9be0612d4d883badc depends: - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 18253 - timestamp: 1725303181400 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py311h38be061_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - sha256: 2f082f7b12a7c6824e051321c1029452562ad6d496ad2e8c8b7b3dea1c8feb92 - md5: 5ca76f61b00a15a9be0612d4d883badc + size: 17645 + timestamp: 1725303065473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 + md5: 6b51f7459ea4073eeb5057207e2e1e3d depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 17645 - timestamp: 1725303065473 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py311h6eed73b_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda + size: 17277 + timestamp: 1725303032027 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda sha256: 2499e5ebb3efa4186d6922122224d16bac791a5c0adad5b48b2bcd1e1e2afc8d md5: b6c1710105dad14d47001a339cd14da6 depends: @@ -7469,15 +6169,9 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 17727 timestamp: 1725302991176 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h2e8e312_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - sha256: 6865b97780e795337f65592582aee6f25e5b96214c64ffd3f8cdf580fd64ba22 - md5: e3ceda014d8461a11ca8552830a978f9 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda + sha256: 52fcb1db44a935bba26988cc17247a0f71a8ad2fbc2b717274a8c8940856ee0d + md5: 5dcf96bca4649d496d818a0f5cfb962e depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -7485,33 +6179,22 @@ packages: license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 42235 - timestamp: 1725303419414 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h7900ff3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 - md5: 6b51f7459ea4073eeb5057207e2e1e3d + size: 17560 + timestamp: 1725303027769 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda + sha256: 736304347653ed421b13c56ba6f4f87c1d78d24cd3fa74db0db6fb70c814fa65 + md5: 5bce88ac1bef7d47c62cb574b25891ae depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 17277 - timestamp: 1725303032027 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h81bd7bf_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + size: 18253 + timestamp: 1725303181400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 md5: 80f403c03290e1662be03e026fb5f8ab depends: @@ -7524,104 +6207,31 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 17865 timestamp: 1725303130815 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312hb401068_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - sha256: 52fcb1db44a935bba26988cc17247a0f71a8ad2fbc2b717274a8c8940856ee0d - md5: 5dcf96bca4649d496d818a0f5cfb962e +- conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda + sha256: 9a667eeae67936e710ff69ee7ce0e784d6052eeba9670b268c565a55178098c4 + md5: 943f7fab631e12750641efd7279a268c depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jsonpointer?source=hash-mapping - size: 17560 - timestamp: 1725303027769 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py313h78bf25f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - sha256: 18d412dc91ee7560f0f94c19bb1c3c23f413b9a7f55948e2bb3ce44340439a58 - md5: 668d64b50e7ce7984cfe09ed7045b9fa - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jsonpointer?source=hash-mapping - size: 17568 - timestamp: 1725303033801 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py313h8f79df9_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - sha256: cc2f68ceb34bca53b7b9a3eb3806cc893ef8713a5a6df7edf7ff989f559ef81d - md5: f2757998237755a74a12680a4e6a6bd6 - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jsonpointer?source=hash-mapping - size: 18232 - timestamp: 1725303194596 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py313habf4b1d_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - sha256: f4fdd6b6451492d0b179efcd31b0b3b75ec6d6ee962ea50e693f5e71a94089b7 - md5: a93dd2fcffa0290ca107f3bda7bc68ac - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 17733 - timestamp: 1725303034373 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py313hfa70ccb_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - sha256: a0625cb0e86775b8996b4ee7117f1912b2fa3d76be8d10bf1d7b39578f5d99f7 - md5: 001efbf150f0ca5fd0a0c5e6e713c1d1 - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + size: 42891 + timestamp: 1725303340467 +- conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + sha256: 6865b97780e795337f65592582aee6f25e5b96214c64ffd3f8cdf580fd64ba22 + md5: e3ceda014d8461a11ca8552830a978f9 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jsonpointer?source=hash-mapping - size: 42805 - timestamp: 1725303293802 -- kind: conda - name: jsonschema - version: 4.23.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda + size: 42235 + timestamp: 1725303419414 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff md5: da304c192ad59975202859b367d0f6a2 depends: @@ -7638,13 +6248,7 @@ packages: - pkg:pypi/jsonschema?source=hash-mapping size: 74323 timestamp: 1720529611305 -- kind: conda - name: jsonschema-specifications - version: 2024.10.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 md5: 720745920222587ef942acfbc578b584 depends: @@ -7656,13 +6260,7 @@ packages: - pkg:pypi/jsonschema-specifications?source=hash-mapping size: 16165 timestamp: 1728418976382 -- kind: conda - name: jsonschema-with-format-nongpl - version: 4.23.0 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 md5: 16b37612b3a2fd77f409329e213b530c depends: @@ -7680,13 +6278,7 @@ packages: purls: [] size: 7143 timestamp: 1720529619500 -- kind: conda - name: jupyter-lsp - version: 2.2.5 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda sha256: 2151c2c63e0442a4c69ee0ad8a634195eedab10b7b74c0ec8266471842239a93 md5: 885867f6adab3d7ecdf8ab6ca0785f51 depends: @@ -7699,13 +6291,7 @@ packages: - pkg:pypi/jupyter-lsp?source=hash-mapping size: 55539 timestamp: 1712707521811 -- kind: conda - name: jupyter_client - version: 8.6.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 md5: a14218cfb29662b4a19ceb04e93e298e depends: @@ -7722,14 +6308,7 @@ packages: - pkg:pypi/jupyter-client?source=hash-mapping size: 106055 timestamp: 1726610805505 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh31011fe_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: @@ -7743,14 +6322,7 @@ packages: - pkg:pypi/jupyter-core?source=hash-mapping size: 57671 timestamp: 1727163547058 -- kind: conda - name: jupyter_core - version: 5.7.2 - build: pyh5737063_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd md5: 46d87d1c0ea5da0aae36f77fa406e20d depends: @@ -7766,13 +6338,7 @@ packages: - pkg:pypi/jupyter-core?source=hash-mapping size: 58269 timestamp: 1727164026641 -- kind: conda - name: jupyter_events - version: 0.10.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda sha256: cd3f41dc093162a41d4bae171e40a1b9b115c4d488e9bb837a8fa9d084931fb9 md5: ed45423c41b3da15ea1df39b1f80c2ca depends: @@ -7790,13 +6356,7 @@ packages: - pkg:pypi/jupyter-events?source=hash-mapping size: 21475 timestamp: 1710805759187 -- kind: conda - name: jupyter_server - version: 2.14.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda sha256: edab71a05feceac54bdb90e755a257545af7832b9911607c1a70f09be44ba985 md5: ca23c71f70a7c7935b3d03f0f1a5801d depends: @@ -7825,13 +6385,7 @@ packages: - pkg:pypi/jupyter-server?source=hash-mapping size: 323978 timestamp: 1720816754998 -- kind: conda - name: jupyter_server_terminals - version: 0.5.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db md5: 219b3833aa8ed91d47d1be6ca03f30be depends: @@ -7843,20 +6397,13 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19818 timestamp: 1710262791393 -- kind: conda - name: jupyterlab - version: 4.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.0-pyhd8ed1ab_0.conda - sha256: a27e5227a11c2ce7b299d02f2f2c99713df4c9bb0e78ddd6cf8ffc6a77593dc2 - md5: 4e51411b565d07405d7d3245b9a3b8c1 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda + sha256: ff1035eb0020dbaf4e332ef4b81a7068b595dfc57dde3313e9c4a37583772644 + md5: b4f3d579fc21a44518d52c52507461b4 depends: - async-lru >=1.0.0 - httpx >=0.25.0 - importlib-metadata >=4.8.3 - - importlib_resources >=1.4 - ipykernel >=6.5.0 - jinja2 >=3.0.3 - jupyter-lsp >=2.0.0 @@ -7865,7 +6412,7 @@ packages: - jupyterlab_server >=2.27.1,<3 - notebook-shim >=0.2 - packaging - - python >=3.8 + - python >=3.9 - setuptools >=40.1.0 - tomli >=1.2.2 - tornado >=6.2.0 @@ -7874,16 +6421,9 @@ packages: license_family: BSD purls: - pkg:pypi/jupyterlab?source=hash-mapping - size: 7327279 - timestamp: 1730308848803 -- kind: conda - name: jupyterlab_pygments - version: 0.3.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + size: 7101932 + timestamp: 1731776859245 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 md5: afcd1b53bcac8844540358e33f33d28f depends: @@ -7897,13 +6437,7 @@ packages: - pkg:pypi/jupyterlab-pygments?source=hash-mapping size: 18776 timestamp: 1707149279640 -- kind: conda - name: jupyterlab_server - version: 2.27.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda sha256: a23b26d1a35bccdb91b9232119e5f402624e1e1a252b0e64cc20c6eb5b87cefb md5: af8239bf1ba7e8c69b689f780f653488 depends: @@ -7924,13 +6458,7 @@ packages: - pkg:pypi/jupyterlab-server?source=hash-mapping size: 49355 timestamp: 1721163412436 -- kind: conda - name: jupyterlab_widgets - version: 3.0.13 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda sha256: 0e7ec7936d766f39d5a0a8eafc63f5543f488883ad3645246bc22db6d632566e md5: ccea946e6dce9f330fbf7fca97fe8de7 depends: @@ -7943,38 +6471,29 @@ packages: - pkg:pypi/jupyterlab-widgets?source=hash-mapping size: 186024 timestamp: 1724331451102 -- kind: pypi +- pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl name: kaleido version: 0.1.0.post1 - url: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl sha256: 2a942606a13c70dfd0a02e092ec140a1083e093ae06661c5e1b1179e477a9e44 -- kind: pypi +- pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl name: kaleido version: 0.2.1 - url: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl sha256: bb9a5d1f710357d5d432ee240ef6658a6d124c3e610935817b4b42da9c787c05 requires_dist: - pathlib ; python_full_version < '3.4' -- kind: pypi +- pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl name: kaleido version: 0.2.1 - url: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl sha256: aa21cf1bf1c78f8fa50a9f7d45e1003c387bd3d6fe0a767cfbbf344b95bdc3a8 requires_dist: - pathlib ; python_full_version < '3.4' -- kind: pypi +- pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl name: kaleido version: 0.2.1 - url: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl sha256: ca6f73e7ff00aaebf2843f73f1d3bacde1930ef5041093fe76b83a15785049a7 requires_dist: - pathlib ; python_full_version < '3.4' -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: @@ -7983,31 +6502,22 @@ packages: purls: [] size: 117831 timestamp: 1646151697040 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 license: MIT license_family: MIT purls: [] - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h37d8d59_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c md5: d4765c524b1d91567886bde656fb514b depends: @@ -8021,32 +6531,21 @@ packages: purls: [] size: 1185323 timestamp: 1719463492984 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 license: MIT license_family: MIT purls: [] - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: krb5 - version: 1.21.3 - build: hdf4eb48_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 md5: 31aec030344e962fbd7dbbbbd68e60a9 depends: @@ -8059,13 +6558,7 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: @@ -8077,12 +6570,7 @@ packages: purls: [] size: 669211 timestamp: 1729655358674 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: @@ -8093,28 +6581,17 @@ packages: purls: [] size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 - md5: 1900cb3cab5055833cfddb0ba233b074 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 depends: - - vc >=14.2,<15 - - vs2015_runtime >=14.29.30037 + - libcxx >=13.0.1 license: Apache-2.0 license_family: Apache purls: [] - size: 194365 - timestamp: 1657977692274 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + size: 290319 + timestamp: 1657977526749 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: @@ -8124,28 +6601,18 @@ packages: purls: [] size: 215721 timestamp: 1657977558796 -- kind: conda - name: lerc - version: 4.0.0 - build: hb486fe8_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 - md5: f9d6a4c82889d5ecedec1d90eb673c55 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 + md5: 1900cb3cab5055833cfddb0ba233b074 depends: - - libcxx >=13.0.1 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30037 license: Apache-2.0 license_family: Apache purls: [] - size: 290319 - timestamp: 1657977526749 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + size: 194365 + timestamp: 1657977692274 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 md5: e1f604644fe8d78e22660e2fec6756bc depends: @@ -8160,13 +6627,7 @@ packages: purls: [] size: 1310521 timestamp: 1727295454064 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hac325c4_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda sha256: b548e80280242ad1d93d8d7fb48a30af7e4124959ba2031c65c9675b98163652 md5: 40373920232a6ac0404eee9cf39a9f09 depends: @@ -8180,13 +6641,7 @@ packages: purls: [] size: 1170354 timestamp: 1727295597292 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 md5: 706da5e791c569a7b9814877098a6a0a depends: @@ -8200,13 +6655,8 @@ packages: purls: [] size: 1179072 timestamp: 1727295571173 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 md5: 8ea26d42ca88ec5258802715fe1ee10b depends: @@ -8222,13 +6672,8 @@ packages: purls: [] size: 15677 timestamp: 1729642900350 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_osx64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda sha256: 1b22b5322a311a775bca637b26317645cf07e35f125cede9278c6c45db6e7105 md5: da0a6f87958893e1d2e2bbc7e7a6541f depends: @@ -8244,13 +6689,8 @@ packages: purls: [] size: 15952 timestamp: 1729643159199 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 md5: f8cf4d920ff36ce471619010eff59cac depends: @@ -8266,13 +6706,8 @@ packages: purls: [] size: 15913 timestamp: 1729643265495 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_win64_mkl +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda sha256: 5468bb91c44b41ce060bbd997c797b2f91e2b7ce91a7cbf4ddf7e7b734a8dc98 md5: 499208e81242efb6e5abc7366c91c816 depends: @@ -8287,13 +6722,8 @@ packages: purls: [] size: 3736641 timestamp: 1729643534444 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 depends: @@ -8307,13 +6737,8 @@ packages: purls: [] size: 15613 timestamp: 1729642905619 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_osx64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda sha256: b04ae297aa5396df3135514866db72845b111c92524570f923625473f11cfbe2 md5: ab304b75ea67f850cf7adf9156e3f62f depends: @@ -8327,13 +6752,8 @@ packages: purls: [] size: 15842 timestamp: 1729643166929 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 md5: 4df0fae81f0b5bf47d48c882b086da11 depends: @@ -8347,13 +6767,8 @@ packages: purls: [] size: 15837 timestamp: 1729643270793 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_win64_mkl +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda sha256: 21528cdfe67dafdb2d21925515a167f13963e002c2b6d06d68984767f731850c md5: 3ed189ba03a9888a8013aaee0d67c49d depends: @@ -8367,42 +6782,38 @@ packages: purls: [] size: 3732258 timestamp: 1729643561581 -- kind: conda - name: libcxx - version: 19.1.3 - build: ha82da77_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.3-ha82da77_0.conda - sha256: 6d062760c6439e75b9a44d800d89aff60fe3441998d87506c62dc94c50412ef4 - md5: bf691071fba4734984231617783225bc +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda + sha256: 48c6d0ab9dd0c66693f79f4a032cd9ebb64fb88329dfa747aeac5299f9b3f33b + md5: 5f23923c08151687ff2fc3002b0a7234 depends: - - __osx >=11.0 + - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 520771 - timestamp: 1730314603920 -- kind: conda - name: libcxx - version: 19.1.3 - build: hf95d169_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.3-hf95d169_0.conda - sha256: 466f259bb13a8058fef28843977c090d21ad337b71a842ccc0407bccf8d27011 - md5: 86801fc56d4641e3ef7a63f5d996b960 + size: 529010 + timestamp: 1732060320836 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 + md5: a2d3d484d95889fccdd09498d8f6bf9a depends: - - __osx >=10.13 + - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 528991 - timestamp: 1730314340106 -- kind: conda - name: libdeflate - version: '1.22' - build: h00291cd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda + size: 520678 + timestamp: 1732060258949 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 72242 + timestamp: 1728177071251 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda sha256: 681035346974c3315685dc40898e26f65f1c00cbb0b5fd80cc2599e207a34b31 md5: a15785ccc62ae2a8febd299424081efb depends: @@ -8412,12 +6823,17 @@ packages: purls: [] size: 70407 timestamp: 1728177128525 -- kind: conda - name: libdeflate - version: '1.22' - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 54089 + timestamp: 1728177149927 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda sha256: 579c634b7de8869cb1d76eccd4c032dc275d5a017212128502ea4dc828a5b361 md5: a3439ce12d4e3cd887270d9436f9a4c8 depends: @@ -8429,44 +6845,18 @@ packages: purls: [] size: 155506 timestamp: 1728177485361 -- kind: conda - name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - purls: [] - size: 72242 - timestamp: 1728177071251 -- kind: conda - name: libdeflate - version: '1.22' - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 depends: - - __osx >=11.0 - license: MIT - license_family: MIT + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD purls: [] - size: 54089 - timestamp: 1728177149927 -- kind: conda - name: libedit - version: 3.1.20191231 - build: h0678c8f_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + size: 123878 + timestamp: 1597616541093 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 md5: 6016a8a1d0e63cac3de2c352cd40208b depends: @@ -8476,13 +6866,7 @@ packages: purls: [] size: 105382 timestamp: 1597616576726 -- kind: conda - name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca md5: 30e4362988a2623e9eb34337b83e01f9 depends: @@ -8492,101 +6876,68 @@ packages: purls: [] size: 96607 timestamp: 1597616630749 -- kind: conda - name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 - depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 123878 - timestamp: 1597616541093 -- kind: conda - name: libexpat - version: 2.6.3 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda - sha256: 4bb47bb2cd09898737a5211e2992d63c555d63715a07ba56eae0aff31fb89c22 - md5: 59f4c43bb1b5ef1c71946ff2cbf59524 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - - expat 2.6.3.* + - expat 2.6.4.* license: MIT license_family: MIT purls: [] - size: 73616 - timestamp: 1725568742634 -- kind: conda - name: libexpat - version: 2.6.3 - build: hac325c4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.3-hac325c4_0.conda - sha256: dd22dffad6731c352f4c14603868c9cce4d3b50ff5ff1e50f416a82dcb491947 - md5: c1db99b0a94a2f23bd6ce39e2d314e07 + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 + md5: 20307f4049a735a78a29073be1be2626 depends: - __osx >=10.13 constrains: - - expat 2.6.3.* + - expat 2.6.4.* + license: MIT + license_family: MIT + purls: [] + size: 70758 + timestamp: 1730967204736 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* license: MIT license_family: MIT purls: [] - size: 70517 - timestamp: 1725568864316 -- kind: conda - name: libexpat - version: 2.6.3 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.3-he0c23c2_0.conda - sha256: 9543965d155b8da96fc67dd81705fe5c2571c7c00becc8de5534c850393d4e3c - md5: 21415fbf4d0de6767a621160b43e5dea + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda + sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 + md5: eb383771c680aa792feb529eaf9df82f depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - expat 2.6.3.* + - expat 2.6.4.* license: MIT license_family: MIT purls: [] - size: 138992 - timestamp: 1725569106114 -- kind: conda - name: libexpat - version: 2.6.3 - build: hf9b8971_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.3-hf9b8971_0.conda - sha256: 5cbe5a199fba14ade55457a468ce663aac0b54832c39aa54470b3889b4c75c4a - md5: 5f22f07c2ab2dea8c66fe9585a062c96 + size: 139068 + timestamp: 1730967442102 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 depends: - - __osx >=11.0 - constrains: - - expat 2.6.3.* + - libgcc-ng >=9.4.0 license: MIT license_family: MIT purls: [] - size: 63895 - timestamp: 1725568783033 -- kind: conda - name: libffi - version: 3.4.2 - build: h0d85af4_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f md5: ccb34fb14960ad8b125962d3d79b31a9 license: MIT @@ -8594,13 +6945,7 @@ packages: purls: [] size: 51348 timestamp: 1636488394370 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 license: MIT @@ -8608,29 +6953,7 @@ packages: purls: [] size: 39020 timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 - license: MIT - license_family: MIT - purls: [] - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libffi - version: 3.4.2 - build: h8ffe710_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 md5: 2c96d1b6915b408893f9472569dee135 depends: @@ -8641,54 +6964,36 @@ packages: purls: [] size: 42063 timestamp: 1636489106777 -- kind: conda - name: libgcc - version: 14.2.0 - build: h1383e82_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d - md5: 75fdd34824997a0f9950a703b15d8ac5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: + - _libgcc_mutex 0.1 conda_forge - _openmp_mutex >=4.5 - - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: + - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 h1383e82_1 - - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 666386 - timestamp: 1729089506769 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df + size: 848745 + timestamp: 1729027721139 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda + sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d + md5: 75fdd34824997a0f9950a703b15d8ac5 depends: - - _libgcc_mutex 0.1 conda_forge - _openmp_mutex >=4.5 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h1383e82_1 + - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 848745 - timestamp: 1729027721139 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + size: 666386 + timestamp: 1729089506769 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: @@ -8698,42 +7003,28 @@ packages: purls: [] size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgd - version: 2.3.3 - build: h085315d_10 - build_number: 10 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c - md5: ac0cda3730da6013715a0d9e8e677d83 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 + md5: 30ee3a29c84cf7b842a8c5828c4b7c13 depends: + - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xorg-libxpm >=3.5.17,<4.0a0 license: GD license_family: BSD purls: [] - size: 344264 - timestamp: 1722928697150 -- kind: conda - name: libgd - version: 2.3.3 - build: h2e77e4f_10 - build_number: 10 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + size: 225113 + timestamp: 1722928278395 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda sha256: b5ae19078f96912058d0f96120bf56dae11a417178cfcf220219486778ef868d md5: a87f68ea91c66e1a9fb515f6aeba6ba2 depends: @@ -8754,13 +7045,7 @@ packages: purls: [] size: 200456 timestamp: 1722928713359 -- kind: conda - name: libgd - version: 2.3.3 - build: hac1b3a8_10 - build_number: 10 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda sha256: d15beaa2e862a09526e704f22f7d0b7fa73b114b868106dd686e167b9d65558e md5: c9e450ce5ced76f107c494fbd37325f5 depends: @@ -8781,40 +7066,42 @@ packages: purls: [] size: 200309 timestamp: 1722928354606 -- kind: conda - name: libgd - version: 2.3.3 - build: hd3e95f3_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 - md5: 30ee3a29c84cf7b842a8c5828c4b7c13 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c + md5: ac0cda3730da6013715a0d9e8e677d83 depends: - - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xorg-libxpm >=3.5.17,<4.0a0 license: GD license_family: BSD purls: [] - size: 225113 - timestamp: 1722928278395 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_h97931a8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + size: 344264 + timestamp: 1722928697150 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53997 + timestamp: 1729027752995 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 depends: @@ -8824,13 +7111,7 @@ packages: purls: [] size: 110106 timestamp: 1707328956438 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf depends: @@ -8840,31 +7121,19 @@ packages: purls: [] size: 110233 timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgcc >=14.2.0 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 53997 - timestamp: 1729027752995 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: h2873a65_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b md5: e4fb4d23ec2870ff3c40d10afe305aec depends: @@ -8876,13 +7145,7 @@ packages: purls: [] size: 1571379 timestamp: 1707328880361 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea depends: @@ -8894,34 +7157,27 @@ packages: purls: [] size: 997381 timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 + md5: 13e8e54035ddd2b91875ba399f0f7c04 depends: - - libgcc >=14.2.0 + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 constrains: - - libgfortran 14.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later purls: [] - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libglib - version: 2.82.2 - build: h07bd6cf_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 - md5: 890783f64502fa6bfcdc723cfbf581b4 + size: 3931898 + timestamp: 1729191404130 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda + sha256: d782be2d8d6784f0b8584ca3cfa93357cddc71b0975560a2bcabd174dac60fff + md5: 2e0511f82f1481210f148e1205fe2482 depends: - - __osx >=11.0 + - __osx >=10.13 - libffi >=3.4,<4.0a0 - libiconv >=1.17,<2.0a0 - libintl >=0.22.5,<1.0a0 @@ -8931,35 +7187,25 @@ packages: - glib 2.82.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3635416 - timestamp: 1729191799117 -- kind: conda - name: libglib - version: 2.82.2 - build: h2ff4ddf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 - md5: 13e8e54035ddd2b91875ba399f0f7c04 + size: 3692367 + timestamp: 1729191628049 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 + md5: 890783f64502fa6bfcdc723cfbf581b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - glib 2.82.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3931898 - timestamp: 1729191404130 -- kind: conda - name: libglib - version: 2.82.2 - build: h7025463_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda + size: 3635416 + timestamp: 1729191799117 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda sha256: 7dfbf492b736f8d379f8c3b32a823f0bf2167ff69963e4c940339b146a04c54a md5: 3e379c1b908a7101ecbc503def24613f depends: @@ -8977,34 +7223,17 @@ packages: purls: [] size: 3810166 timestamp: 1729192227078 -- kind: conda - name: libglib - version: 2.82.2 - build: hb6ef654_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - sha256: d782be2d8d6784f0b8584ca3cfa93357cddc71b0975560a2bcabd174dac60fff - md5: 2e0511f82f1481210f148e1205fe2482 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 - constrains: - - glib 2.82.2 *_0 - license: LGPL-2.1-or-later + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 3692367 - timestamp: 1729191628049 -- kind: conda - name: libgomp - version: 14.2.0 - build: h1383e82_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda + size: 460992 + timestamp: 1729027639220 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda sha256: d8739b834608f35775209b032f0c2be752ef187863c7ec847afcebe2f681be4e md5: 9e2d4d1214df6f21cba12f6eff4972f9 depends: @@ -9016,38 +7245,18 @@ packages: purls: [] size: 524249 timestamp: 1729089441747 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 - depends: - - _libgcc_mutex 0.1 conda_forge - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 460992 - timestamp: 1729027639220 -- kind: conda - name: libgrpc - version: 1.65.5 - build: h3d9cf25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.65.5-h3d9cf25_0.conda - sha256: a92096af0fa67bb03fe2d40dfb11e7746603842a78fddce9f06e3ced9d93b61e - md5: b829a3509f5d89b21fa481ebc8edd953 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.65.5-hf5c653b_0.conda + sha256: d279abd46262e817c7a00aeb4df9b5ed4de38130130b248e2c50875e982f30fa + md5: 3b0048cabc6815a4d8874a0240519d32 depends: - - __osx >=11.0 - - c-ares >=1.33.1,<2.0a0 + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libgcc >=13 - libprotobuf >=5.27.5,<5.27.6.0a0 - libre2-11 >=2023.9.1 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 - re2 @@ -9056,14 +7265,9 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 4614162 - timestamp: 1727200966365 -- kind: conda - name: libgrpc - version: 1.65.5 - build: hb88832f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda + size: 7229891 + timestamp: 1727200905306 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda sha256: b862af63c5b362743527fde9b7411b6a2d1270f858acbabc2beeee306465b405 md5: 8ef969b891fe57caf3acfb5495ec0ab9 depends: @@ -9084,23 +7288,17 @@ packages: purls: [] size: 5152392 timestamp: 1727200873427 -- kind: conda - name: libgrpc - version: 1.65.5 - build: hf5c653b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.65.5-hf5c653b_0.conda - sha256: d279abd46262e817c7a00aeb4df9b5ed4de38130130b248e2c50875e982f30fa - md5: 3b0048cabc6815a4d8874a0240519d32 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.65.5-h3d9cf25_0.conda + sha256: a92096af0fa67bb03fe2d40dfb11e7746603842a78fddce9f06e3ced9d93b61e + md5: b829a3509f5d89b21fa481ebc8edd953 depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.33.1,<2.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 + - libcxx >=17 - libprotobuf >=5.27.5,<5.27.6.0a0 - libre2-11 >=2023.9.1 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 - re2 @@ -9109,28 +7307,32 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 7229891 - timestamp: 1727200905306 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + size: 4614162 + timestamp: 1727200966365 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + purls: [] + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 + md5: 6c3628d047e151efba7cf08c5e54d1ca + license: LGPL-2.1-only + purls: [] + size: 666538 + timestamp: 1702682713201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 md5: 69bda57310071cf6d2b86caf11573d2d license: LGPL-2.1-only purls: [] size: 676469 timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: hcfcfb64_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b md5: e1eb10b1cca179f2baa3601e4efc8712 depends: @@ -9141,56 +7343,17 @@ packages: purls: [] size: 636146 timestamp: 1702682547199 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - purls: [] - size: 705775 - timestamp: 1702682170569 -- kind: conda - name: libiconv - version: '1.17' - build: hd75f5a5_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 - md5: 6c3628d047e151efba7cf08c5e54d1ca - license: LGPL-2.1-only - purls: [] - size: 666538 - timestamp: 1702682713201 -- kind: conda - name: libintl - version: 0.22.5 - build: h5728263_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 - md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af + md5: 52d4d643ed26c07599736326c46bf12f depends: + - __osx >=10.13 - libiconv >=1.17,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 95568 - timestamp: 1723629479451 -- kind: conda - name: libintl - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + size: 88086 + timestamp: 1723626826235 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 md5: 3b98ec32e91b3b59ad53dbb9c96dd334 depends: @@ -9200,29 +7363,27 @@ packages: purls: [] size: 81171 timestamp: 1723626968270 -- kind: conda - name: libintl - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af - md5: 52d4d643ed26c07599736326c46bf12f +- conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 + md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 depends: - - __osx >=10.13 - libiconv >=1.17,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 88086 - timestamp: 1723626826235 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h0dc2134_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + size: 95568 + timestamp: 1723629479451 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f md5: 72507f8e3961bc968af17435060b6dd6 constrains: @@ -9231,13 +7392,7 @@ packages: purls: [] size: 579748 timestamp: 1694475265912 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: @@ -9246,13 +7401,7 @@ packages: purls: [] size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hcfcfb64_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff md5: 3f1b948619c45b1ca714d60c7389092c depends: @@ -9265,30 +7414,8 @@ packages: purls: [] size: 822966 timestamp: 1694475223854 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - purls: [] - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e md5: 4dc03a53fc69371a6158d0ed37214cd3 depends: @@ -9302,13 +7429,8 @@ packages: purls: [] size: 15608 timestamp: 1729642910812 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_osx64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda sha256: 2a9a6143d103e7e21511cbf439521645bdd506bfabfcac9d6398dd0562c6905c md5: dda0e24b4605ebbd381e48606a107bed depends: @@ -9322,13 +7444,8 @@ packages: purls: [] size: 15852 timestamp: 1729643174413 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_osxarm64_openblas +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 md5: 19bbddfec972d401838330453186108d depends: @@ -9342,13 +7459,8 @@ packages: purls: [] size: 15823 timestamp: 1729643275943 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_win64_mkl +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda sha256: 98c13a28596389539abe3f608c6fbd2826df47671f77c58a331df878c6140c53 md5: f716ef84564c574e8e74ae725f5d5f93 depends: @@ -9362,75 +7474,7 @@ packages: purls: [] size: 3736560 timestamp: 1729643588182 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf - md5: 74860100b2029e2523cf480804c76b9b - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 88657 - timestamp: 1723861474602 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h4bc722e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 - md5: aeb98fdeb2e8f25d43ef71fbacbeec80 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 89991 - timestamp: 1723817448345 -- kind: conda - name: libmpdec - version: 4.0.0 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16 - md5: 7476305c35dd9acef48da8f754eedb40 - depends: - - __osx >=11.0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 69263 - timestamp: 1723817629767 -- kind: conda - name: libmpdec - version: 4.0.0 - build: hfdf4475_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - sha256: 791be3d30d8e37ec49bcc23eb8f1e1415d911a7c023fa93685f2ea485179e258 - md5: ed625b2e59dff82859c23dd24774156b - depends: - - __osx >=10.13 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 76561 - timestamp: 1723817691512 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: @@ -9440,13 +7484,22 @@ packages: purls: [] size: 33408 timestamp: 1697359010159 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hbf64a52_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5578513 + timestamp: 1730772671118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 md5: cd2c572c02a73b88c4d378eb31110e85 depends: @@ -9457,16 +7510,11 @@ packages: constrains: - openblas >=0.3.28,<0.3.29.0a0 license: BSD-3-Clause + license_family: BSD purls: [] size: 6165715 timestamp: 1730773348340 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 md5: 40803a48d947c8639da6704e9a44d3ce depends: @@ -9477,52 +7525,22 @@ packages: constrains: - openblas >=0.3.28,<0.3.29.0a0 license: BSD-3-Clause + license_family: BSD purls: [] size: 4165774 timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - license: BSD-3-Clause - purls: [] - size: 5578513 - timestamp: 1730772671118 -- kind: conda - name: libpng - version: 1.6.44 - build: h3ca93ac_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 - md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 - depends: + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 348933 - timestamp: 1726235196095 -- kind: conda - name: libpng - version: 1.6.44 - build: h4b8f8c9_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda + size: 290661 + timestamp: 1726234747153 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1 md5: f32ac2c8dd390dbf169f550887ed09d9 depends: @@ -9532,28 +7550,7 @@ packages: purls: [] size: 268073 timestamp: 1726234803010 -- kind: conda - name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 290661 - timestamp: 1726234747153 -- kind: conda - name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: @@ -9563,33 +7560,19 @@ packages: purls: [] size: 263385 timestamp: 1726234714421 -- kind: conda - name: libprotobuf - version: 5.27.5 - build: h53f8970_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.27.5-h53f8970_2.conda - sha256: 787d86c041c03d33b24e28df5f881f47c74c3fe9053b791f14616dc51f32a687 - md5: e9d021f82c48bb08b0b2c321b2f7778c +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 + md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement purls: [] - size: 2375066 - timestamp: 1727423411355 -- kind: conda - name: libprotobuf - version: 5.27.5 - build: h5b01275_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.27.5-h5b01275_2.conda + size: 348933 + timestamp: 1726235196095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.27.5-h5b01275_2.conda sha256: 79ac9726cd0a1cb1ba335f7fc7ccac5f679a66d71d9553ca88a805b8787d55ce md5: 66ed3107adbdfc25ba70454ba11e6d1e depends: @@ -9604,13 +7587,7 @@ packages: purls: [] size: 2940269 timestamp: 1727424395109 -- kind: conda - name: libprotobuf - version: 5.27.5 - build: h62b0dff_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda sha256: ac77bce3b9a58e6fa72bed339af0d47faf1dec3bc717e4e05e2e729dc42bd2b3 md5: e3b68d9a164d807f70df49e17bc54931 depends: @@ -9624,34 +7601,21 @@ packages: purls: [] size: 2332719 timestamp: 1727424047974 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: h2348fd5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.27.5-h53f8970_2.conda + sha256: 787d86c041c03d33b24e28df5f881f47c74c3fe9053b791f14616dc51f32a687 + md5: e9d021f82c48bb08b0b2c321b2f7778c depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libcxx >=17 - constrains: - - re2 2024.07.02.* + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 165956 - timestamp: 1728779107218 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hbbce691_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + size: 2375066 + timestamp: 1727423411355 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f md5: 2124de47357b7a516c0a3efd8f88c143 depends: @@ -9667,13 +7631,7 @@ packages: purls: [] size: 211096 timestamp: 1728778964655 -- kind: conda - name: libre2-11 - version: 2024.07.02 - build: hd530cb8_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda sha256: 2fac39fb704ded9584d1a9e7511163830016803f83852a724c2ccef1cc16e17b md5: 1e14c67a5e8a9273a98b83fbc0905b99 depends: @@ -9688,12 +7646,42 @@ packages: purls: [] size: 178580 timestamp: 1728779037721 -- kind: conda - name: librsvg - version: 2.58.4 - build: h2682814_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f + md5: 5a7065309a66097738be6a06fd04b7ef + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 165956 + timestamp: 1728779107218 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + sha256: fda3197ffb24512e719d55defa02f9f70286038e56cad8c1d580ed6460f417fa + md5: 83f045969988f5c7a65f3950b95a8b35 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc >=13 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libxml2 >=2.12.7,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __glibc >=2.17 + license: LGPL-2.1-or-later + purls: [] + size: 6390511 + timestamp: 1726227212382 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda sha256: ed2d08ef3647d1c10fa51a0480f215ddae04f73a2bd9bbd135d3f37d313d84a6 md5: 0022c69263e9bb8c530feff2dfc431f9 depends: @@ -9709,12 +7697,7 @@ packages: purls: [] size: 4919155 timestamp: 1726227702081 -- kind: conda - name: librsvg - version: 2.58.4 - build: h40956f1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda sha256: 88cd8603a6fe6c3299e9cd0a81f5e38cf431d20b7d3e2e6642c8a41113ede6db md5: 27c333944e11caae7bc3a35178d32ac5 depends: @@ -9730,37 +7713,7 @@ packages: purls: [] size: 4688893 timestamp: 1726228099207 -- kind: conda - name: librsvg - version: 2.58.4 - build: hc0ffecb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda - sha256: fda3197ffb24512e719d55defa02f9f70286038e56cad8c1d580ed6460f417fa - md5: 83f045969988f5c7a65f3950b95a8b35 - depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 - - freetype >=2.12.1,<3.0a0 - - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc >=13 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libxml2 >=2.12.7,<3.0a0 - - pango >=1.54.0,<2.0a0 - constrains: - - __glibc >=2.17 - license: LGPL-2.1-or-later - purls: [] - size: 6390511 - timestamp: 1726227212382 -- kind: conda - name: libsodium - version: 1.0.20 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 depends: @@ -9769,12 +7722,16 @@ packages: purls: [] size: 205978 timestamp: 1716828628198 -- kind: conda - name: libsodium - version: 1.0.20 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5 + md5: 6af4b059e26492da6013e79cbcb4d069 + depends: + - __osx >=10.13 + license: ISC + purls: [] + size: 210249 + timestamp: 1716828641383 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 md5: a7ce36e284c5faaf93c220dfc39e3abd depends: @@ -9783,12 +7740,7 @@ packages: purls: [] size: 164972 timestamp: 1716828607917 -- kind: conda - name: libsodium - version: 1.0.20 - build: hc70643c_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda sha256: 7bcb3edccea30f711b6be9601e083ecf4f435b9407d70fc48fbcf9e5d69a0fc6 md5: 198bb594f202b205c7d18b936fa4524f depends: @@ -9799,44 +7751,18 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- kind: conda - name: libsodium - version: 1.0.20 - build: hfdf4475_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5 - md5: 6af4b059e26492da6013e79cbcb4d069 - depends: - - __osx >=10.13 - license: ISC - purls: [] - size: 210249 - timestamp: 1716828641383 -- kind: conda - name: libsqlite - version: 3.47.0 - build: h2466b09_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe - md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 + md5: b6f02b52a174e612e89548f4663ce56a depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 892175 - timestamp: 1730208431651 -- kind: conda - name: libsqlite - version: 3.47.0 - build: h2f8c449_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda + size: 875349 + timestamp: 1730208050020 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda sha256: a0f7381c867898a45018b1e5cf1aca68659d292d58252e8f489a4270b010fed8 md5: af445c495253a871c3d809e1199bb12b depends: @@ -9846,30 +7772,7 @@ packages: purls: [] size: 915300 timestamp: 1730208101739 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 875349 - timestamp: 1730208050020 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e md5: 07a14fbe439eef078cc479deca321161 depends: @@ -9879,13 +7782,18 @@ packages: purls: [] size: 837683 timestamp: 1730208293578 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda + sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe + md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + purls: [] + size: 892175 + timestamp: 1730208431651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 md5: 234a5554c53625688d51062645337328 depends: @@ -9895,13 +7803,7 @@ packages: purls: [] size: 3893695 timestamp: 1729027746910 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: @@ -9911,36 +7813,7 @@ packages: purls: [] size: 54105 timestamp: 1729027780628 -- kind: conda - name: libtiff - version: 4.7.0 - build: h583c2ba_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - sha256: 4d58c695dfed6f308d0fd3ff552e0078bb98bc0be2ea0bf55820eb6e86fa5355 - md5: 4b78bcdcc8780cede8b3d090deba874d - depends: - - __osx >=10.13 - - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - - libdeflate >=1.22,<1.23.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: HPND - purls: [] - size: 395980 - timestamp: 1728232302162 -- kind: conda - name: libtiff - version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 md5: 63872517c98aa305da58a757c443698e depends: @@ -9958,36 +7831,24 @@ packages: purls: [] size: 428156 timestamp: 1728232228989 -- kind: conda - name: libtiff - version: 4.7.0 - build: hfc51747_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - sha256: 902cb9f7f54d17dcfd54ce050b1ce2bc944b9bbd1748913342c2ea1e1140f8bb - md5: eac317ed1cc6b9c0af0c27297e364665 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda + sha256: 4d58c695dfed6f308d0fd3ff552e0078bb98bc0be2ea0bf55820eb6e86fa5355 + md5: 4b78bcdcc8780cede8b3d090deba874d depends: + - __osx >=10.13 - lerc >=4.0.0,<5.0a0 + - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND purls: [] - size: 978865 - timestamp: 1728232594877 -- kind: conda - name: libtiff - version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + size: 395980 + timestamp: 1728232302162 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d md5: b9abf45f7c64caf3303725f1aa0e9a4d depends: @@ -10004,12 +7865,24 @@ packages: purls: [] size: 366323 timestamp: 1728232400072 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda + sha256: 902cb9f7f54d17dcfd54ce050b1ce2bc944b9bbd1748913342c2ea1e1140f8bb + md5: eac317ed1cc6b9c0af0c27297e364665 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 978865 + timestamp: 1728232594877 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: @@ -10019,12 +7892,19 @@ packages: purls: [] size: 33601 timestamp: 1680112270483 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: h10d778d_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438953 + timestamp: 1713199854503 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538 md5: b2c0047ea73819d992484faacbbe1c24 constrains: @@ -10034,12 +7914,7 @@ packages: purls: [] size: 355099 timestamp: 1713200298965 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: h93a5062_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 md5: c0af0edfebe780b19940e94871f1a765 constrains: @@ -10049,12 +7924,7 @@ packages: purls: [] size: 287750 timestamp: 1713200194013 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: hcfcfb64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda sha256: d0ca51cb1de9192be9a3238e71fbcca5a535619c499c4f4c9b2ed41c14d36770 md5: abd61d0ab127ec5cd68f62c2969e6f34 depends: @@ -10068,30 +7938,7 @@ packages: purls: [] size: 274359 timestamp: 1713200524021 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 - depends: - - libgcc-ng >=12 - constrains: - - libwebp 1.4.0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 438953 - timestamp: 1713199854503 -- kind: conda - name: libwinpthread - version: 12.0.0.r4.gg4f2fc60ca - build: h57928b3_8 - build_number: 8 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda sha256: 6d5e158813ab8d553fbb0fedd0abe7bf92970b0be3a9ddf12da0f6cbad78f506 md5: 03cccbba200ee0523bde1f3dad60b1f3 depends: @@ -10103,52 +7950,36 @@ packages: purls: [] size: 35433 timestamp: 1724681489463 -- kind: conda - name: libxcb - version: 1.17.0 - build: h0e4246c_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - sha256: 08dec73df0e161c96765468847298a420933a36bc4f09b50e062df8793290737 - md5: a69bbf778a462da324489976c84cfc8c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libwinpthread >=12.0.0.r4.gg4f2fc60ca - pthread-stubs - - ucrt >=10.0.20348.0 - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp license: MIT license_family: MIT purls: [] - size: 1208687 - timestamp: 1727279378819 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + sha256: 08dec73df0e161c96765468847298a420933a36bc4f09b50e062df8793290737 + md5: a69bbf778a462da324489976c84cfc8c depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca - pthread-stubs + - ucrt >=10.0.20348.0 - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp license: MIT license_family: MIT purls: [] - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + size: 1208687 + timestamp: 1727279378819 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: @@ -10157,37 +7988,26 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxml2 - version: 2.13.4 - build: h12808cf_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.4-h12808cf_2.conda - sha256: ce806e0f7430b709145ac406e7aacf3833adbdb91e085ed3f4dc8e78cf07038c - md5: 0649b977d9e3d2fd579148643884535e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 + md5: c81a9f1118541aaa418ccb22190c817e depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - libzlib >=1.3.1,<2.0a0 - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT purls: [] - size: 601997 - timestamp: 1730355958301 -- kind: conda - name: libxml2 - version: 2.13.4 - build: h8424949_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.4-h8424949_2.conda - sha256: 51048cd9d4d7ab3ab440bac01d1db8193ae1bd3e9502cdf6792a69c792fec2e5 - md5: 3f0764c38bc02720231d49d6035531f2 + size: 689626 + timestamp: 1731489608971 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + sha256: 66e1bf40699daf83b39e1281f06c64cf83499de3a9c05d59477fadded6d85b18 + md5: 8711bc6fb054192dc432741dcd233ac3 depends: - - __osx >=11.0 + - __osx >=10.13 - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -10195,74 +8015,23 @@ packages: license: MIT license_family: MIT purls: [] - size: 572400 - timestamp: 1730356085177 -- kind: conda - name: libxml2 - version: 2.13.4 - build: hb346dea_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.4-hb346dea_2.conda - sha256: a111cb7f2deb6e20ebb475e8426ce5291451476f55f0dec6c220aa51e5a5784f - md5: 69b90b70c434b916abf5a1d5ee5d55fb + size: 608931 + timestamp: 1731489767386 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 + md5: 967d4a9dadd710415ee008d862a07c99 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 - libzlib >=1.3.1,<2.0a0 - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT purls: [] - size: 690019 - timestamp: 1730355770718 -- kind: conda - name: libzlib - version: 1.3.1 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 - md5: 41fbfac52c601159df6c01f875de31b9 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - purls: [] - size: 55476 - timestamp: 1727963768015 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 - depends: - - __osx >=11.0 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - purls: [] - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + size: 583082 + timestamp: 1731489765442 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: @@ -10275,13 +8044,7 @@ packages: purls: [] size: 60963 timestamp: 1727963148474 -- kind: conda - name: libzlib - version: 1.3.1 - build: hd23fc13_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 md5: 003a54a4e32b02f7355b50a837e699da depends: @@ -10293,46 +8056,57 @@ packages: purls: [] size: 57133 timestamp: 1727963183990 -- kind: conda - name: llvm-openmp - version: 19.1.3 - build: hb52a8e5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.3-hb52a8e5_0.conda - sha256: 49a8940e727aa82ee034fa9a60b3fcababec41b3192d955772aab635a5374b82 - md5: dd695d23e78d1ca4fecce969b1e1db61 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 depends: - __osx >=11.0 constrains: - - openmp 19.1.3|19.1.3.* + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + purls: [] + size: 55476 + timestamp: 1727963768015 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + sha256: 69fca4a9318d7367ec3e0e7d6e6023a46ae1113dbd67da6d0f93fffa0ef54497 + md5: 193715d512f648fe0865f6f13b1957e3 + depends: + - __osx >=10.13 + constrains: + - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 280488 - timestamp: 1730364082380 -- kind: conda - name: llvm-openmp - version: 19.1.3 - build: hf78d878_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.3-hf78d878_0.conda - sha256: 3d28e9938ab1400322ba76968cdbee035009d611bbee94ec6b38a154551954b4 - md5: 18a8498d57d871da066beaa09263a638 + size: 305132 + timestamp: 1732102427054 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a + md5: 76ca179ec970bea6e275e2fa477c2d3c depends: - - __osx >=10.13 + - __osx >=11.0 constrains: - - openmp 19.1.3|19.1.3.* + - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 305524 - timestamp: 1730364180247 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h2dc5d0c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda + size: 281554 + timestamp: 1732102484807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda sha256: 364a0d55abc4c60bc575c81a4acc9e98ea27565147d4d4dc672bad4b2d069710 md5: 15e4dadd59e93baad7275249f10b9472 depends: @@ -10348,40 +8122,28 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 25591 timestamp: 1729351519326 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h5082efb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_0.conda - sha256: 8a2022af5237e0fdf7e646856f1122735b71e4cdeaf42684b533ec4bad5a885f - md5: 84e78e335b0f9292060f1ac6d8ce0e3e +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 + md5: a755704ea0e2503f8c227d84829a8e81 depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 28244 - timestamp: 1729351760960 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h56c23cb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 - md5: be48a4cc178a91af3b1ccd58c14efde2 + size: 24878 + timestamp: 1729351558563 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311h8b4e8a7_0.conda + sha256: dd3554cee0aedc19a0cd56b52555c26fb0392e97749ceb202ddac7de55e3acf2 + md5: 87074906abc091b40ac46e7881b7e45d depends: - - __osx >=11.0 + - __osx >=10.13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - jinja2 >=3.0.0 @@ -10389,77 +8151,40 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 25180 - timestamp: 1729351536390 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py311h8b4e8a7_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311h8b4e8a7_0.conda - sha256: dd3554cee0aedc19a0cd56b52555c26fb0392e97749ceb202ddac7de55e3acf2 - md5: 87074906abc091b40ac46e7881b7e45d + size: 24409 + timestamp: 1729351443593 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda + sha256: b2fb54718159055fdf89da7d9f0c6743ef84b31960617a56810920d17616d944 + md5: c6238833d7dc908ec295bc490b80d845 depends: - __osx >=10.13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24409 - timestamp: 1729351443593 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 24878 - timestamp: 1729351558563 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h31fea79_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - sha256: eb0f3768890291f2d5fb666ab31b32b37a821e4a30968c6b3cd332472957abe7 - md5: e2ff001440760f2cbac24765d8a3d84a + size: 23889 + timestamp: 1729351468966 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda + sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 + md5: be48a4cc178a91af3b1ccd58c14efde2 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 constrains: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 27358 - timestamp: 1729351504449 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312ha0ccf2a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda + size: 25180 + timestamp: 1729351536390 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d md5: c6ff9f291d011c9d4f0b840f49435c64 depends: @@ -10475,78 +8200,12 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24495 timestamp: 1729351534830 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312hbe3f5e4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - sha256: b2fb54718159055fdf89da7d9f0c6743ef84b31960617a56810920d17616d944 - md5: c6238833d7dc908ec295bc490b80d845 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 23889 - timestamp: 1729351468966 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313h25ec13a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h25ec13a_0.conda - sha256: d636b2f52d8bed3efbcc273d0e26f8ff1db26ad0134a39350f2edb74a41b1708 - md5: 86bc0676625162bc27dc2c81dc0a8393 - depends: - - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 24326 - timestamp: 1729351501551 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313h8060acc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_0.conda - sha256: 9158873dbd5b715d5683dd9241b3eab35e896e31ea7842052f1b4e8c3945bf45 - md5: ab825f8b676368beb91350c6a2da6e11 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_0.conda + sha256: 8a2022af5237e0fdf7e646856f1122735b71e4cdeaf42684b533ec4bad5a885f + md5: 84e78e335b0f9292060f1ac6d8ce0e3e depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - jinja2 >=3.0.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/markupsafe?source=hash-mapping - size: 25104 - timestamp: 1729351477153 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313hb4c8b1a_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_0.conda - sha256: 2b7500300aba9726f785781ded5fb1205c76d3047a93cd30868712e1e02f8c6e - md5: 4ab654528518cea7e94f53af79bd3171 - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -10556,36 +8215,26 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 27813 - timestamp: 1729351491668 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py313heb2b014_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313heb2b014_0.conda - sha256: 749b1f081ba6d327df6056387f54a7b1234e4bce483a809f44ea7882cbba0a0f - md5: 6d41ed5825393b6d408bae2c966c391a + size: 28244 + timestamp: 1729351760960 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda + sha256: eb0f3768890291f2d5fb666ab31b32b37a821e4a30968c6b3cd332472957abe7 + md5: e2ff001440760f2cbac24765d8a3d84a depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24620 - timestamp: 1729351507962 -- kind: conda - name: matplotlib-inline - version: 0.1.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda + size: 27358 + timestamp: 1729351504449 +- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab md5: 779345c95648be40d22aaa89de7d4254 depends: @@ -10597,13 +8246,7 @@ packages: - pkg:pypi/matplotlib-inline?source=hash-mapping size: 14599 timestamp: 1713250613726 -- kind: conda - name: mistune - version: 3.0.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c md5: 5cbee699846772cc939bef23a0d524ed depends: @@ -10614,13 +8257,7 @@ packages: - pkg:pypi/mistune?source=hash-mapping size: 66022 timestamp: 1698947249750 -- kind: conda - name: mkl - version: 2024.2.2 - build: h66d3029_14 - build_number: 14 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda sha256: 098ba4a3cb82f627bc79dc0ab1111b44859c9ef4aaa8d75ce043bce107770cb3 md5: f011e7cc21918dc9d1efe0209e27fa16 depends: @@ -10631,29 +8268,22 @@ packages: purls: [] size: 103019089 timestamp: 1727378392081 -- kind: pypi - name: ml-dtypes - version: 0.5.0 - url: https://files.pythonhosted.org/packages/00/3a/40c40b78a7eb456837817bfa2c5bc442db59aefdf21c5ecb94700037813d/ml_dtypes-0.5.0-cp312-cp312-win_amd64.whl - sha256: afa08343069874a30812871d639f9c02b4158ace065601406a493a8511180c02 - requires_dist: - - numpy>=1.21 - - numpy>=1.21.2 ; python_full_version >= '3.10' - - numpy>=1.23.3 ; python_full_version >= '3.11' - - numpy>=1.26.0 ; python_full_version >= '3.12' - - numpy>=2.1.0 ; python_full_version >= '3.13' - - absl-py ; extra == 'dev' - - pytest ; extra == 'dev' - - pytest-xdist ; extra == 'dev' - - pylint>=2.6.0 ; extra == 'dev' - - pyink ; extra == 'dev' - requires_python: '>=3.9' -- kind: conda - name: ml_dtypes - version: 0.5.0 - build: py312h98e817e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda + sha256: 559c14640ce8e3f2270da6130ba50ae624f3db56176fad29a5436b2dec3fc3b2 + md5: 8ca779f3f30b00181aeee820fe8b22d5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MPL-2.0 AND Apache-2.0 + purls: + - pkg:pypi/ml-dtypes?source=hash-mapping + size: 290054 + timestamp: 1726376440408 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda sha256: c2beb173a4acf71bde4739563f1625107300a7043b46459f614ca030cda4b113 md5: c51d9f4d91362d9c6777a9303119c55b depends: @@ -10667,12 +8297,7 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 224519 timestamp: 1726376562525 -- kind: conda - name: ml_dtypes - version: 0.5.0 - build: py312hcd31e36_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda sha256: b581ad4531beb3d782c2990ec1f5f5e36244b097337ac23598653fad3ff16e94 md5: 7bc100120bdda5fcb7c1f64589e07375 depends: @@ -10687,33 +8312,7 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 202179 timestamp: 1726376547204 -- kind: conda - name: ml_dtypes - version: 0.5.0 - build: py312hf9745cd_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - sha256: 559c14640ce8e3f2270da6130ba50ae624f3db56176fad29a5436b2dec3fc3b2 - md5: 8ca779f3f30b00181aeee820fe8b22d5 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MPL-2.0 AND Apache-2.0 - purls: - - pkg:pypi/ml-dtypes?source=hash-mapping - size: 290054 - timestamp: 1726376440408 -- kind: conda - name: nbclient - version: 0.10.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda sha256: 589d72d36d61a23b39d6fff2c488f93e29e20de4fc6f5d315b5f2c16e81028bf md5: 15b51397e0fe8ea7d7da60d83eb76ebc depends: @@ -10728,14 +8327,7 @@ packages: - pkg:pypi/nbclient?source=hash-mapping size: 27851 timestamp: 1710317767117 -- kind: conda - name: nbconvert-core - version: 7.16.4 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 md5: e2d2abb421c13456a9a9f80272fdf543 depends: @@ -10765,13 +8357,7 @@ packages: - pkg:pypi/nbconvert?source=hash-mapping size: 189599 timestamp: 1718135529468 -- kind: conda - name: nbformat - version: 5.10.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c md5: 0b57b5368ab7fc7cdc9e3511fa867214 depends: @@ -10786,28 +8372,7 @@ packages: - pkg:pypi/nbformat?source=hash-mapping size: 101232 timestamp: 1712239122969 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a - depends: - - __osx >=11.0 - license: X11 AND BSD-3-Clause - purls: [] - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: @@ -10817,13 +8382,7 @@ packages: purls: [] size: 889086 timestamp: 1724658547447 -- kind: conda - name: ncurses - version: '6.5' - build: hf036a51_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af md5: e102bbf8a6ceeaf429deab8032fc8977 depends: @@ -10832,13 +8391,16 @@ packages: purls: [] size: 822066 timestamp: 1724658603042 -- kind: conda - name: nest-asyncio - version: 1.6.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a md5: 6598c056f64dc8800d40add25e4e2c34 depends: @@ -10849,36 +8411,58 @@ packages: - pkg:pypi/nest-asyncio?source=hash-mapping size: 11638 timestamp: 1705850780510 -- kind: conda +- pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl name: networkx version: 3.4.2 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyhd8ed1ab_1.conda - sha256: ad3ac7c22d4f68a5a50ae584ae259af91fbf96f688bf2955750bbdb61bb88fc1 - md5: 1d4c088869f206413c59acdd309908b7 + sha256: df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f + requires_dist: + - numpy>=1.24 ; extra == 'default' + - scipy>=1.10,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.7 ; extra == 'default' + - pandas>=2.0 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7.3 ; extra == 'doc' + - pydata-sphinx-theme>=0.15 ; extra == 'doc' + - sphinx-gallery>=0.16 ; extra == 'doc' + - numpydoc>=1.8.0 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - osmnx>=1.9 ; extra == 'example' + - momepy>=0.7.2 ; extra == 'example' + - contextily>=1.6 ; extra == 'example' + - seaborn>=0.13 ; extra == 'example' + - cairocffi>=1.7 ; extra == 'example' + - igraph>=0.11 ; extra == 'example' + - scikit-learn>=1.5 ; extra == 'example' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.14 ; extra == 'extra' + - pydot>=3.0.1 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 depends: - python >=3.10 + - python constrains: + - numpy >=1.24 - scipy >=1.10,!=1.11.0,!=1.11.1 - matplotlib >=3.7 - pandas >=2.0 - - numpy >=1.24 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/networkx?source=hash-mapping - size: 1198024 - timestamp: 1730311574645 -- kind: conda - name: nodeenv - version: 1.9.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2 md5: dfe0528d0f1c16c1f7c528ea5536ab30 depends: @@ -10890,13 +8474,7 @@ packages: - pkg:pypi/nodeenv?source=hash-mapping size: 34489 timestamp: 1717585382642 -- kind: conda - name: notebook-shim - version: 0.2.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 md5: 3d85618e2c97ab896b5b5e298d32b5b3 depends: @@ -10908,20 +8486,16 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16880 timestamp: 1707957948029 -- kind: conda - name: numpy - version: 2.1.3 - build: py311h14ed71f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py311h14ed71f_0.conda - sha256: 2ddc0acaf8602eda5e555435a37641439aa7876425fe7b40214f15dab182e5e3 - md5: 220e4e917b6133e0cbb879c48c058adc +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py311h71ddf71_0.conda + sha256: d2fdae6b0e80c23248f0f6bf7b5e3b6e0f56f69f420e9f5da5a6aae2c95b1493 + md5: 1b3c543b0cc96310bcf0b825d5a68cb1 depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 + - libgcc >=13 - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: @@ -10930,74 +8504,38 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8262782 - timestamp: 1730588525361 -- kind: conda - name: numpy - version: 2.1.3 - build: py311h35ffc71_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py311h35ffc71_0.conda - sha256: 09b0b580e5c4e2eb5dd1b5c44487a274a444d7cc44caced61324a65a8cfa2741 - md5: aa627d29d5d1ed4192e70cd5a6cb1f4f + size: 8978113 + timestamp: 1730588531967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda + sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc + md5: dfdbc12e6d81889ba4c494a23f23eba8 depends: + - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7659216 - timestamp: 1730588918527 -- kind: conda - name: numpy - version: 2.1.3 - build: py311h649a571_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py311h649a571_0.conda - sha256: 5a95da4a8de64fb44b0045c92f579d3529b2cccbd5a38ec7901e03ee10f707d5 - md5: 3205b87adf34406ae1a83e8bf46cd987 + size: 8388631 + timestamp: 1730588649810 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py311h14ed71f_0.conda + sha256: 2ddc0acaf8602eda5e555435a37641439aa7876425fe7b40214f15dab182e5e3 + md5: 220e4e917b6133e0cbb879c48c058adc depends: - - __osx >=11.0 + - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7041966 - timestamp: 1730588523973 -- kind: conda - name: numpy - version: 2.1.3 - build: py311h71ddf71_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py311h71ddf71_0.conda - sha256: d2fdae6b0e80c23248f0f6bf7b5e3b6e0f56f69f420e9f5da5a6aae2c95b1493 - md5: 1b3c543b0cc96310bcf0b825d5a68cb1 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 @@ -11005,64 +8543,48 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8978113 - timestamp: 1730588531967 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h49bc9c5_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - sha256: f7e6648e2e55de450c8022008eb86158c55786f360aacc91fe3a5a53ba52d5d8 - md5: 4d03cad3ea6c6cc575f1fd811691432f + size: 8262782 + timestamp: 1730588525361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda + sha256: 2f120e958da2d6ab7e4785a42515b4f65f70422b8b722e1a75654962fcfb26e9 + md5: 011118baf131914d1cb48e07317f0946 depends: + - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6965471 - timestamp: 1730589010831 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h58c1407_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc - md5: dfdbc12e6d81889ba4c494a23f23eba8 + size: 7538388 + timestamp: 1730588494493 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py311h649a571_0.conda + sha256: 5a95da4a8de64fb44b0045c92f579d3529b2cccbd5a38ec7901e03ee10f707d5 + md5: 3205b87adf34406ae1a83e8bf46cd987 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 + - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8388631 - timestamp: 1730588649810 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h94ee1e1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda + size: 7041966 + timestamp: 1730588523973 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda sha256: cd287b6c270ee8af77d200c46d56fdfe1e2a9deeff68044439718b8d073214dd md5: a2af54c86582e08718805c69af737897 depends: @@ -11082,118 +8604,35 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6398123 timestamp: 1730588490904 -- kind: conda - name: numpy - version: 2.1.3 - build: py312hfc93d17_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - sha256: 2f120e958da2d6ab7e4785a42515b4f65f70422b8b722e1a75654962fcfb26e9 - md5: 011118baf131914d1cb48e07317f0946 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py311h35ffc71_0.conda + sha256: 09b0b580e5c4e2eb5dd1b5c44487a274a444d7cc44caced61324a65a8cfa2741 + md5: aa627d29d5d1ed4192e70cd5a6cb1f4f depends: - - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7538388 - timestamp: 1730588494493 -- kind: conda - name: numpy - version: 2.1.3 - build: py313h4bf6692_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py313h4bf6692_0.conda - sha256: e2e7451083c143cd61227d663e55712a7432239e9a9c758db0b66a26bc89a7f8 - md5: 17bcf851cceab793dad11ab8089d4bc4 + size: 7659216 + timestamp: 1730588918527 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda + sha256: f7e6648e2e55de450c8022008eb86158c55786f360aacc91fe3a5a53ba52d5d8 + md5: 4d03cad3ea6c6cc575f1fd811691432f depends: - - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8404824 - timestamp: 1730588549941 -- kind: conda - name: numpy - version: 2.1.3 - build: py313h7ca3f3b_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py313h7ca3f3b_0.conda - sha256: fe86adfc262259f1b156301d45d49d81801b1dec732e5b1dbc647cafe4659475 - md5: b827b0af2098c63435b27b7f4e4d50dd - depends: - - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7638660 - timestamp: 1730588470617 -- kind: conda - name: numpy - version: 2.1.3 - build: py313hca4752e_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py313hca4752e_0.conda - sha256: 3e8bb3474fc90e8c5c1799f4a4e8b887d31b50a0e94fd9f63e2725f7be2e3d4f - md5: c9d17b236cff44f7a24f19808842ec39 - depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6468921 - timestamp: 1730588494311 -- kind: conda - name: numpy - version: 2.1.3 - build: py313hee8cc43_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py313hee8cc43_0.conda - sha256: 79b8493c839cd4cc22e2a7024f289067b029ef2b09212973a98a39e5bbeecc03 - md5: 083a90ad306f544f6eeb9ad00c4d9879 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -11203,15 +8642,9 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7072965 - timestamp: 1730588905304 -- kind: conda - name: numpy_groupies - version: 0.11.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda + size: 6965471 + timestamp: 1730589010831 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda sha256: b042997131c5df079c904aee84d124ee7ede799f9bdbf720eda6d7d0a43a399a md5: f089393c03e9f3a28ac4f77eb775e17e depends: @@ -11223,13 +8656,7 @@ packages: - pkg:pypi/numpy-groupies?source=hash-mapping size: 37459 timestamp: 1722459217648 -- kind: conda - name: numpydoc - version: 1.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda sha256: 489a6d11f4eccbec21dac98bd7c3e8e59a4747fe95a437a32c249439fc447caa md5: 0a5522bdd3983c52102e75d1307ad8c4 depends: @@ -11243,32 +8670,7 @@ packages: - pkg:pypi/numpydoc?source=hash-mapping size: 57951 timestamp: 1723472341838 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py311h03bb54d_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - sha256: 7ac670b3c6b7b877555ab23c8de80a788c9c395e31c26989c9022984ada91b2d - md5: 4745570a97df2e827f8c706b2786532b - depends: - - et_xmlfile - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/openpyxl?source=hash-mapping - size: 671703 - timestamp: 1725461040108 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py311h50c5138_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 depends: @@ -11282,75 +8684,34 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 707974 timestamp: 1725460980858 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py311ha68e1ae_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - sha256: 91f7063cd6bee70a3ce46fdade2d658581bcbe2eeaebd0de49c28ee0ab1169a5 - md5: 6854279652cb238abfacb0bd993a745a +- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda + sha256: 1dd541ef7a1357594c3f4ecb1a0c86f42f58e09f18db8b9099b7bf01b52f07c5 + md5: 69a8838436435f59d72ddcb8dfd24a28 depends: - et_xmlfile - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/openpyxl?source=hash-mapping - size: 648112 - timestamp: 1725461291443 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py311hfb527b5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - sha256: 48ad14fdff3e40de359a1c422a3fe4a3147e3dcce655353da4cce980549c0364 - md5: 4ca778433ccd2f029f0e29e71fb799c0 + size: 695844 + timestamp: 1725461065535 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda + sha256: 7ac670b3c6b7b877555ab23c8de80a788c9c395e31c26989c9022984ada91b2d + md5: 4745570a97df2e827f8c706b2786532b depends: - et_xmlfile - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/openpyxl?source=hash-mapping - size: 673464 - timestamp: 1725461165095 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py312h710cb58_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - sha256: 1dd541ef7a1357594c3f4ecb1a0c86f42f58e09f18db8b9099b7bf01b52f07c5 - md5: 69a8838436435f59d72ddcb8dfd24a28 - depends: - - et_xmlfile - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/openpyxl?source=hash-mapping - size: 695844 - timestamp: 1725461065535 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py312h732d5f6_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda + size: 671703 + timestamp: 1725461040108 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda sha256: 2ac1cb340b7767aa6b22c2173b6e5f94efcefb4421bb78a4bdd0e32cc3fdfcaa md5: 5ff403ec5f54e5ab0246ed4aa080b5a1 depends: @@ -11363,35 +8724,21 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 654641 timestamp: 1725461063935 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py312he70551f_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - sha256: e1e33f94b2c18c3904f5fe7deafba092710bb6c104fd8a07b5b8896a696b1164 - md5: dae0fc7ab538dda92fb977c48ab7acd1 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda + sha256: 48ad14fdff3e40de359a1c422a3fe4a3147e3dcce655353da4cce980549c0364 + md5: 4ca778433ccd2f029f0e29e71fb799c0 depends: - et_xmlfile - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/openpyxl?source=hash-mapping - size: 627490 - timestamp: 1725461370219 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py312hf6e0af7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda + size: 673464 + timestamp: 1725461165095 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda sha256: 98d0df0744c8b6b80e1faa3cb020520c79740977f350c9fcac41e75508a67780 md5: f71b3a7b54f8988744ad6b5b210695ce depends: @@ -11405,78 +8752,29 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 652292 timestamp: 1725461042452 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py313h90caf49_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - sha256: 01c9d6e5e3c39c915ee531f37df62f81e374d5c0a0043a8e19eff9ba13479e80 - md5: d95e17c66b833ff87db71540cde0b28a - depends: - - et_xmlfile - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/openpyxl?source=hash-mapping - size: 486426 - timestamp: 1725461219833 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py313h9c9eb82_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - sha256: 940b03a15c0c0758b352078621ed8b2d982a29af6fccd27fe5c6764727a6f4de - md5: fa6ac78dbc7b71ca9f599f8a3f4b5b32 - depends: - - et_xmlfile - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/openpyxl?source=hash-mapping - size: 483786 - timestamp: 1725461014573 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py313hde07947_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - sha256: dd7bea83172cf6834900faefdd975bd24cba1f60d9e21dec40499abe72107850 - md5: 84d3df4316ae9b031c44fbdd1e0db98d +- conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda + sha256: 91f7063cd6bee70a3ce46fdade2d658581bcbe2eeaebd0de49c28ee0ab1169a5 + md5: 6854279652cb238abfacb0bd993a745a depends: - et_xmlfile - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/openpyxl?source=hash-mapping - size: 486781 - timestamp: 1725461093432 -- kind: conda - name: openpyxl - version: 3.1.5 - build: py313he57e174_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - sha256: 9c79a234b21e0e46cd710fcfd2458519b9503cddd91508006c7355a8c3c6495f - md5: 53bb97fa4d46a1bab5fa19560d08b989 + size: 648112 + timestamp: 1725461291443 +- conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + sha256: e1e33f94b2c18c3904f5fe7deafba092710bb6c104fd8a07b5b8896a696b1164 + md5: dae0fc7ab538dda92fb977c48ab7acd1 depends: - et_xmlfile - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -11484,88 +8782,56 @@ packages: license_family: MIT purls: - pkg:pypi/openpyxl?source=hash-mapping - size: 483476 - timestamp: 1725461014622 -- kind: conda - name: openssl - version: 3.3.2 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.2-h2466b09_0.conda - sha256: a45c42f3577294e22ac39ddb6ef5a64fd5322e8a6725afefbf4f2b4109340bf9 - md5: 1dc86753693df5e3326bb8a85b74c589 + size: 627490 + timestamp: 1725461370219 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 depends: + - __glibc >=2.17,<3.0.a0 - ca-certificates - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc >=13 license: Apache-2.0 license_family: Apache purls: [] - size: 8396053 - timestamp: 1725412961673 -- kind: conda - name: openssl - version: 3.3.2 - build: h8359307_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.2-h8359307_0.conda - sha256: 940fa01c4dc6152158fe8943e05e55a1544cab639df0994e3b35937839e4f4d1 - md5: 1773ebccdc13ec603356e8ff1db9e958 + size: 2947466 + timestamp: 1731377666602 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda + sha256: ba7e068ed469d6625e32ae60e6ad893e655b6695280dadf7e065ed0b6f3b885c + md5: ec99d2ce0b3033a75cbad01bbc7c5b71 depends: - - __osx >=11.0 + - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2882450 - timestamp: 1725410638874 -- kind: conda - name: openssl - version: 3.3.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda - sha256: cee91036686419f6dd6086902acf7142b4916e1c4ba042e9ca23e151da012b6d - md5: 4d638782050ab6faa27275bed57e9b4e + size: 2590683 + timestamp: 1731378034404 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 + md5: df307bbc703324722df0293c9ca2e418 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - ca-certificates - - libgcc >=13 license: Apache-2.0 license_family: Apache purls: [] - size: 2891789 - timestamp: 1725410790053 -- kind: conda - name: openssl - version: 3.3.2 - build: hd23fc13_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.2-hd23fc13_0.conda - sha256: 2b75d4b56e45992adf172b158143742daeb316c35274b36f385ccb6644e93268 - md5: 2ff47134c8e292868a4609519b1ea3b6 + size: 2935176 + timestamp: 1731377561525 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 + md5: d0d805d9b5524a14efb51b3bff965e83 depends: - - __osx >=10.13 - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache purls: [] - size: 2544654 - timestamp: 1725410973572 -- kind: pypi - name: opt-einsum - version: 3.4.0 - url: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - sha256: 69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd - requires_python: '>=3.8' -- kind: conda - name: opt-einsum - version: 3.4.0 - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda + size: 8491156 + timestamp: 1731379715927 +- conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda sha256: 583cb8748a9821e301a404806da0de62e8ba01607feecf12c0ef06d8bc77077e md5: 73d0b1d98a9030bdefe712648af583a0 depends: @@ -11575,13 +8841,7 @@ packages: purls: [] size: 6470 timestamp: 1727392480705 -- kind: conda - name: opt_einsum - version: 3.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda sha256: 69e979dfea8b8d82e51684f77d189e1d00cdcbc5c85868415b879719882e2df4 md5: ff80afedd76f436acddbd1e14f5c2909 depends: @@ -11592,13 +8852,133 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62487 timestamp: 1727392477628 -- kind: conda - name: overrides - version: 7.7.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py311hd18a35c_1.conda + sha256: 155aa42465674d6fc43df5476552907b55b72902d84dee4e8059b39bfb7378ab + md5: 121cc50f6d2d7e16eadb324133253f61 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 366107 + timestamp: 1731510674319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda + sha256: d20a58297ed89338e0c8f2a56e105a5a7467e5293d9f66bd101ebef9afef690e + md5: 44a7e5b0d3be21c0adf20d1c0866d649 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 360546 + timestamp: 1731510673737 +- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py311h4e34fa0_1.conda + sha256: db8464556aa5a83a041bc9239158243ab4adb02da795ae59824adbee2eafafec + md5: 2df65762f8c6bab1176836a20035be20 + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 340956 + timestamp: 1731510728872 +- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda + sha256: a41e54a30f54fc7b30d847ba63dab7be9f49301dfeb607ad925695de6e7a9c89 + md5: c0af3b69e46d989e49254285f68bdc62 + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 344701 + timestamp: 1731510839850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py311h2c37856_1.conda + sha256: 05d88094bf7429864e97a61eb46b6b415b341ff4c410904ce8c82fe52bfbb416 + md5: e9647a3961386058054aefe12e86cd7d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 298368 + timestamp: 1726072603819 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda + sha256: 7bf3f44530c504ed6bc59a45e39687b9d40242275d64c3bff038fc4af469639d + md5: 03b47c5d76e8959f1df17d9c902ece1e + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 296182 + timestamp: 1726072666761 +- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py311h3257749_1.conda + sha256: 92bccf056708263fedfb373ca6412a3973c825d3789f1571f3af010ebf3e98f2 + md5: cf3c91885da710c3e1e0875a8bfd2ef0 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.5 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 291877 + timestamp: 1731511131687 +- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda + sha256: 134736b0332fce064da0063e2e22d11e809e786ad0380a8793f02fa534ae803a + md5: 2aa246f16a1f3c94969d2dd0aff74d3c + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.5 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/optree?source=hash-mapping + size: 290786 + timestamp: 1731511131791 +- conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda sha256: 5e238e5e646414d517a13f6786c7227206ace58271e3ef63f6adca4d6a4c2839 md5: 24fba5a9d161ad8103d4e84c0e1a3ed4 depends: @@ -11610,30 +8990,18 @@ packages: - pkg:pypi/overrides?source=hash-mapping size: 30232 timestamp: 1706394723472 -- kind: conda - name: packaging - version: '24.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda - sha256: 36aca948219e2c9fdd6d80728bcc657519e02f06c2703d8db3446aec67f51d81 - md5: cbe1bb1f21567018ce595d9c2be0f0db +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 + md5: 8508b703977f4c4ada34d657d051972c depends: - python >=3.8 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/packaging?source=hash-mapping - size: 50290 - timestamp: 1718189540074 -- kind: conda - name: pandas - version: 2.2.3 - build: py311h7db5c69_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda + size: 60380 + timestamp: 1731802602808 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda sha256: dce121d3838996b77b810ca9097cc17068552075c761408a9b2eb788cf8fd1b0 md5: 643f8cb35133eb1be4919fb953f0a25f depends: @@ -11653,39 +9021,27 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 15695466 timestamp: 1726879158862 -- kind: conda - name: pandas - version: 2.2.3 - build: py311h9cb3ce9_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 - md5: 9ffa9dee175c76e68ea5de5aa1168d83 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 - numpy >=1.19,<3 - numpy >=1.22.4 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.1 - python-tzdata >=2022a - - python_abi 3.11.* *_cp311 + - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14807397 - timestamp: 1726879116250 -- kind: conda - name: pandas - version: 2.2.3 - build: py311haeb46be_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda sha256: ad35c52521f0946caf06e19fd3dfad55f7b30e46648f96214f59d8ca2dac95ad md5: ca32a9963a1b5c636b5131831ded81f3 depends: @@ -11704,90 +9060,46 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14864168 timestamp: 1726879042435 -- kind: conda - name: pandas - version: 2.2.3 - build: py311hcf9f919_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda - sha256: f5477bf3a2b7919481009ce87212d7bbd16c61a5bb05c692a7c336fb45646534 - md5: 5965b8926efba14e6fde98cc8713c083 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda + sha256: 86c252ce5718b55129303f7d5c9a8664d8f0b23e303579142d09fcfd701e4fbe + md5: a7f7c58bbbfcdf820edb6e544555fe8f depends: + - __osx >=10.13 + - libcxx >=17 - numpy >=1.19,<3 - numpy >=1.22.4 - - python >=3.11,<3.12.0a0 + - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.1 - python-tzdata >=2022a - - python_abi 3.11.* *_cp311 + - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14587131 - timestamp: 1726879538736 -- kind: conda - name: pandas - version: 2.2.3 - build: py312h72972c8_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - sha256: dfd30e665b1ced1b783ca303799e250d8acc40943bcefb3a9b2bb13c3b17911c - md5: bf6f01c03e0688523d4b5cff8fe8c977 - depends: - - numpy >=1.19,<3 - - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pandas?source=hash-mapping - size: 14218658 - timestamp: 1726879426348 -- kind: conda - name: pandas - version: 2.2.3 - build: py312h98e817e_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - sha256: 86c252ce5718b55129303f7d5c9a8664d8f0b23e303579142d09fcfd701e4fbe - md5: a7f7c58bbbfcdf820edb6e544555fe8f + size: 14575645 + timestamp: 1726879062042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda + sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 + md5: 9ffa9dee175c76e68ea5de5aa1168d83 depends: - - __osx >=10.13 + - __osx >=11.0 - libcxx >=17 - numpy >=1.19,<3 - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python-dateutil >=2.8.1 - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 + - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14575645 - timestamp: 1726879062042 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hcd31e36_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + size: 14807397 + timestamp: 1726879116250 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 md5: c68bfa69e6086c381c74e16fd72613a8 depends: @@ -11807,125 +9119,36 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14470437 timestamp: 1726878887799 -- kind: conda - name: pandas - version: 2.2.3 - build: py312hf9745cd_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda + sha256: f5477bf3a2b7919481009ce87212d7bbd16c61a5bb05c692a7c336fb45646534 + md5: 5965b8926efba14e6fde98cc8713c083 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - numpy >=1.19,<3 - numpy >=1.22.4 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pandas?source=hash-mapping - size: 15436913 - timestamp: 1726879054912 -- kind: conda - name: pandas - version: 2.2.3 - build: py313h38cdd20_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py313h38cdd20_1.conda - sha256: baf98a0c2a15a3169b7c0443c04b37b489575477f5cf443146f283e1259de01f - md5: ab61fb255c951a0514616e92dd2e18b2 - depends: - - __osx >=10.13 - - libcxx >=17 - - numpy >=1.21,<3 - - numpy >=1.22.4 - - python >=3.13.0rc2,<3.14.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.13.* *_cp313 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pandas?source=hash-mapping - size: 14632093 - timestamp: 1726878912764 -- kind: conda - name: pandas - version: 2.2.3 - build: py313h47b39a6_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py313h47b39a6_1.conda - sha256: b3ca1ad2ba2d43b964e804feeec9f6b737a2ecbe17b932ea6a954ff26a567b5c - md5: 59f9c74ce982d17b4534f10b6c1b3b1e - depends: - - __osx >=11.0 - - libcxx >=17 - - numpy >=1.21,<3 - - numpy >=1.22.4 - - python >=3.13.0rc2,<3.14.0a0 - - python >=3.13.0rc2,<3.14.0a0 *_cp313 + - python >=3.11,<3.12.0a0 - python-dateutil >=2.8.1 - python-tzdata >=2022a - - python_abi 3.13.* *_cp313 + - python_abi 3.11.* *_cp311 - pytz >=2020.1,<2024.2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14464446 - timestamp: 1726878986761 -- kind: conda - name: pandas - version: 2.2.3 - build: py313ha87cce1_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py313ha87cce1_1.conda - sha256: 6337d2fe918ba5f5bef21037c4539dfee2f58b25e84c5f9b1cf14b5db4ed23d5 - md5: c5d63dd501db554b84a30dea33824164 + size: 14587131 + timestamp: 1726879538736 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda + sha256: dfd30e665b1ced1b783ca303799e250d8acc40943bcefb3a9b2bb13c3b17911c + md5: bf6f01c03e0688523d4b5cff8fe8c977 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.21,<3 - - numpy >=1.22.4 - - python >=3.13.0rc2,<3.14.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.13.* *_cp313 - - pytz >=2020.1,<2024.2 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pandas?source=hash-mapping - size: 15407410 - timestamp: 1726878925082 -- kind: conda - name: pandas - version: 2.2.3 - build: py313hf91d08e_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py313hf91d08e_1.conda - sha256: 8fb218382be188497cbf549eb9de2825195cb076946e1f9929f3758b3f3b4e88 - md5: 9c6dab4d9b20463121faf04283b4d1a1 - depends: - - numpy >=1.21,<3 + - numpy >=1.19,<3 - numpy >=1.22.4 - - python >=3.13.0rc2,<3.14.0a0 + - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.1 - python-tzdata >=2022a - - python_abi 3.13.* *_cp313 + - python_abi 3.12.* *_cp312 - pytz >=2020.1,<2024.2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -11934,15 +9157,9 @@ packages: license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14215159 - timestamp: 1726879653675 -- kind: conda - name: pandocfilters - version: 1.5.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + size: 14218658 + timestamp: 1726879426348 +- conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 depends: @@ -11953,59 +9170,41 @@ packages: - pkg:pypi/pandocfilters?source=hash-mapping size: 11627 timestamp: 1631603397334 -- kind: conda - name: pango - version: 1.54.0 - build: h115fe74_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - sha256: ed400571a75027563b91bc48054a6599f22c8c2a7ee94a9c3d4e9932c02581ac - md5: 9bfd18e7d9292154b2b79ddb7145f9cf +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + sha256: d362237be82d5a0d532fe66ec8d68018c3b2a9705bad6d73c2b63dae2970da02 + md5: 7df02e445367703cd87a574046e3a6f0 depends: - - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 - libpng >=1.6.43,<1.7.0a0 license: LGPL-2.1-or-later purls: [] - size: 423324 - timestamp: 1723832327771 -- kind: conda - name: pango - version: 1.54.0 - build: h4c5309f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - sha256: d362237be82d5a0d532fe66ec8d68018c3b2a9705bad6d73c2b63dae2970da02 - md5: 7df02e445367703cd87a574046e3a6f0 + size: 447117 + timestamp: 1719839527713 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda + sha256: ed400571a75027563b91bc48054a6599f22c8c2a7ee94a9c3d4e9932c02581ac + md5: 9bfd18e7d9292154b2b79ddb7145f9cf depends: + - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 + - libglib >=2.80.3,<3.0a0 - libpng >=1.6.43,<1.7.0a0 license: LGPL-2.1-or-later purls: [] - size: 447117 - timestamp: 1719839527713 -- kind: conda - name: pango - version: 1.54.0 - build: h9ee27a3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda + size: 423324 + timestamp: 1723832327771 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda sha256: cfa2d11204bb75f6fbcfe1ff0cc1f6e4fc01185bf07b8eee8f698bfbd3702a79 md5: af2a2118261adf2d7a350d6767b450f2 depends: @@ -12022,13 +9221,7 @@ packages: purls: [] size: 417224 timestamp: 1723832458095 -- kind: conda - name: pango - version: 1.54.0 - build: hbb871f6_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda sha256: 90327dd606f78ae9c881e285f85bc2b0f57d11c807be58ee3f690742354918b2 md5: 409c0b778deee649c025b7106549a24f depends: @@ -12047,13 +9240,7 @@ packages: purls: [] size: 450610 timestamp: 1723832834434 -- kind: conda - name: parso - version: 0.8.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae md5: 81534b420deb77da8833f2289b8d47ac depends: @@ -12064,98 +9251,67 @@ packages: - pkg:pypi/parso?source=hash-mapping size: 75191 timestamp: 1712320447201 -- kind: conda - name: pcre2 - version: '10.44' - build: h297a79d_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 - md5: 147c83e5e44780c7492998acbacddf52 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 618973 - timestamp: 1723488853807 -- kind: conda - name: pcre2 - version: '10.44' - build: h3d7b363_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 - md5: a3a3baddcfb8c80db84bec3cb7746fb8 + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f + md5: 58cde0663f487778bcd7a0c8daf50293 depends: + - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: [] - size: 820831 - timestamp: 1723489427046 -- kind: conda - name: pcre2 - version: '10.44' - build: h7634a1b_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f - md5: 58cde0663f487778bcd7a0c8daf50293 + size: 854306 + timestamp: 1723488807216 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 depends: - - __osx >=10.13 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 854306 - timestamp: 1723488807216 -- kind: conda - name: pcre2 - version: '10.44' - build: hba22ea6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d - md5: df359c09c41cd186fffb93a2d87aa6f5 + size: 618973 + timestamp: 1723488853807 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 + md5: a3a3baddcfb8c80db84bec3cb7746fb8 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: [] - size: 952308 - timestamp: 1723488734144 -- kind: pypi + size: 820831 + timestamp: 1723489427046 +- pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl name: pdbp - version: 1.6.0 - url: https://files.pythonhosted.org/packages/d0/94/4899ce3a8518154718b784175e5a602d5050dd250ca45a5398d7436f0b57/pdbp-1.6.0-py3-none-any.whl - sha256: eea75f697ad5c402b9848457a059a94d519dcb6b8c7ae0db81db067ee4c60eb6 + version: 1.6.1 + sha256: f10bad2ee044c0e5c168cb0825abfdbdc01c50013e9755df5261b060bdd35c22 requires_dist: - pygments>=2.18.0 - tabcompleter>=1.4.0 - colorama>=0.4.6 ; platform_system == 'Windows' requires_python: '>=3.8' -- kind: conda - name: pexpect - version: 4.9.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e md5: 629f3203c99b32e0988910c93e77f3b6 depends: @@ -12166,14 +9322,7 @@ packages: - pkg:pypi/pexpect?source=hash-mapping size: 53600 timestamp: 1706113273252 -- kind: conda - name: pickleshare - version: 0.7.5 - build: py_1003 - build_number: 1003 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 md5: 415f0ebb6198cc2801c73438a9fb5761 depends: @@ -12184,12 +9333,7 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 9332 timestamp: 1602536313357 -- kind: conda - name: pixman - version: 0.43.2 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e md5: 71004cbf7924e19c02746ccde9fd7123 depends: @@ -12200,29 +9344,7 @@ packages: purls: [] size: 386826 timestamp: 1706549500138 -- kind: conda - name: pixman - version: 0.43.4 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 - md5: b98135614135d5f458b75ab9ebb9558c - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: [] - size: 461854 - timestamp: 1709239971654 -- kind: conda - name: pixman - version: 0.43.4 - build: h73e2aa4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda sha256: 3ab44e12e566c67a6e9fd831f557ab195456aa996b8dd9af19787ca80caa5cd1 md5: cb134c1e03fd32f4e6bea3f6de2614fd depends: @@ -12232,12 +9354,7 @@ packages: purls: [] size: 323904 timestamp: 1709239931160 -- kind: conda - name: pixman - version: 0.43.4 - build: hebf3989_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 md5: 0308c68e711cd295aaa026a4f8c4b1e5 depends: @@ -12247,14 +9364,19 @@ packages: purls: [] size: 198755 timestamp: 1709239846651 -- kind: conda - name: pkgutil-resolve-name - version: 1.3.10 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 + md5: b98135614135d5f458b75ab9ebb9558c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 461854 + timestamp: 1709239971654 +- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a md5: 405678b942f2481cecdb3e010f4925d9 depends: @@ -12264,13 +9386,7 @@ packages: - pkg:pypi/pkgutil-resolve-name?source=hash-mapping size: 10778 timestamp: 1694617398467 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f md5: fd8f2b18b65bbf62e8f653100690c8d2 depends: @@ -12281,13 +9397,7 @@ packages: - pkg:pypi/platformdirs?source=hash-mapping size: 20625 timestamp: 1726613611845 -- kind: conda - name: plotly - version: 5.24.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda sha256: 39cef6d3056211840709054b90badfa4efd6f61ea37935a89ab0b549a54cc83f md5: 81bb643d6c3ab4cbeaf724e9d68d0a6a depends: @@ -12302,24 +9412,7 @@ packages: - pkg:pypi/plotly?source=hash-mapping size: 6985343 timestamp: 1726179760565 -- kind: pypi - name: pluggy - version: 1.5.0 - url: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl - sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 - requires_dist: - - pre-commit ; extra == 'dev' - - tox ; extra == 'dev' - - pytest ; extra == 'testing' - - pytest-benchmark ; extra == 'testing' - requires_python: '>=3.8' -- kind: conda - name: pluggy - version: 1.5.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 md5: d3483c8fc2dc2cc3f5cf43e26d60cabf depends: @@ -12330,13 +9423,7 @@ packages: - pkg:pypi/pluggy?source=hash-mapping size: 23815 timestamp: 1713667175451 -- kind: conda - name: pre-commit - version: 4.0.1 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda sha256: 2490b18ec802d8f085f2de8298a3d275451f7db17769353080dfb121fe386675 md5: 5971cc64048943605f352f7f8612de6c depends: @@ -12352,13 +9439,7 @@ packages: - pkg:pypi/pre-commit?source=hash-mapping size: 194633 timestamp: 1728420305558 -- kind: conda - name: prometheus_client - version: 0.21.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 md5: 07e9550ddff45150bfc7da146268e165 depends: @@ -12369,13 +9450,7 @@ packages: - pkg:pypi/prometheus-client?source=hash-mapping size: 49024 timestamp: 1726902073034 -- kind: conda - name: prompt-toolkit - version: 3.0.48 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 md5: 4c05134c48b6a74f33bbb9938e4a115e depends: @@ -12389,12 +9464,35 @@ packages: - pkg:pypi/prompt-toolkit?source=hash-mapping size: 270271 timestamp: 1727341744544 -- kind: conda - name: psutil - version: 6.1.0 - build: py311h1314207_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py311h1314207_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py311h9ecbd09_0.conda + sha256: 2ac3f1ed6e6a2a0c67a3922f4b5faf382855ad02cc0c85c5d56291c7a94296d0 + md5: 0ffc1f53106a38f059b151c465891ed3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 505408 + timestamp: 1729847169876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096 + md5: 0524eb91d3d78d76d671c6e3cd7cee82 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 488462 + timestamp: 1729847159916 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py311h1314207_0.conda sha256: 340d19b16a2f5b663b4f000188467831b107dcaa5b15522e172d6a27820d3b01 md5: 446e328d89429c077ccd74d7e9d8853e depends: @@ -12407,31 +9505,20 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 512211 timestamp: 1729847190327 -- kind: conda - name: psutil - version: 6.1.0 - build: py311h9ecbd09_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py311h9ecbd09_0.conda - sha256: 2ac3f1ed6e6a2a0c67a3922f4b5faf382855ad02cc0c85c5d56291c7a94296d0 - md5: 0ffc1f53106a38f059b151c465891ed3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda + sha256: a2c2d8a8665cce8a1c2b186b2580e1ef3e3414aa67b2d48ac46f0582434910c3 + md5: 1df95544dc6aeb33af591146f44d9293 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 505408 - timestamp: 1729847169876 -- kind: conda - name: psutil - version: 6.1.0 - build: py311hae2e1ce_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py311hae2e1ce_0.conda + size: 493463 + timestamp: 1729847222797 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py311hae2e1ce_0.conda sha256: 6237f04371995fa8e8f16481dcd4e01d2733a82750180a362a9f4953ffbb3cde md5: e226eba0c52ecd6786e73c8ad7f41e79 depends: @@ -12445,12 +9532,21 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 514316 timestamp: 1729847396776 -- kind: conda - name: psutil - version: 6.1.0 - build: py311he736701_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py311he736701_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda + sha256: 143a40f9c72d803744ebd6a60801c5cd17af152b293f8d59e90111ce62b53569 + md5: 61566f5c6e1d29d1d12882eb93e28532 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 493431 + timestamp: 1729847279283 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py311he736701_0.conda sha256: 303c988247c4b1638f1cc90cd40465f5c74ca0ecfd83114033af637654dc2b6b md5: 307267e6a028bca3382d98e06a372ebf depends: @@ -12465,49 +9561,7 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 521434 timestamp: 1729847606018 -- kind: conda - name: psutil - version: 6.1.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - sha256: 143a40f9c72d803744ebd6a60801c5cd17af152b293f8d59e90111ce62b53569 - md5: 61566f5c6e1d29d1d12882eb93e28532 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 493431 - timestamp: 1729847279283 -- kind: conda - name: psutil - version: 6.1.0 - build: py312h3d0f464_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - sha256: a2c2d8a8665cce8a1c2b186b2580e1ef3e3414aa67b2d48ac46f0582434910c3 - md5: 1df95544dc6aeb33af591146f44d9293 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 493463 - timestamp: 1729847222797 -- kind: conda - name: psutil - version: 6.1.0 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda sha256: 49640ecea25367e46c89d7ee8556a1d96a0c2b82240b303415b39a29aaec7163 md5: ef327db3af50ec234214c3e7566510eb depends: @@ -12522,108 +9576,18 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 503151 timestamp: 1729847947592 -- kind: conda - name: psutil - version: 6.1.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096 - md5: 0524eb91d3d78d76d671c6e3cd7cee82 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 488462 - timestamp: 1729847159916 -- kind: conda - name: psutil - version: 6.1.0 - build: py313h536fd9c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py313h536fd9c_0.conda - sha256: 4afc1ebb9325389df1ff3260fcef8078c8552aba26d0fbefd3aa2b3f04a407b8 - md5: b50a00ebd2fda55306b8a095363ce27f +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 494158 - timestamp: 1729847232458 -- kind: conda - name: psutil - version: 6.1.0 - build: py313h63a2874_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py313h63a2874_0.conda - sha256: 06bc9b6eda080fea24e7948ace631b358a9994a6a84394a6c1cd14f1615ebbf4 - md5: 6f4dae78857fd194485497ed0a6762ab - depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 501427 - timestamp: 1729847280285 -- kind: conda - name: psutil - version: 6.1.0 - build: py313ha7868ed_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py313ha7868ed_0.conda - sha256: d58defe84d46da1a7e80283e165d6a9d09378fd830b48917751a318ab5a5d4ce - md5: d13841485f9159f317a4e8bb974e9c8e - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 508489 - timestamp: 1729847497486 -- kind: conda - name: psutil - version: 6.1.0 - build: py313hb558fbc_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py313hb558fbc_0.conda - sha256: 68f7069302768c93e0bce8233a00ba13c5c8ca069779a7d8c84ad81cf8d86542 - md5: 6b9bcae4917442ec9054a5b6a859452b - depends: - - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/psutil?source=hash-mapping - size: 501944 - timestamp: 1729847219864 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h0e40799_1002 - build_number: 1002 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda sha256: 7e446bafb4d692792310ed022fe284e848c6a868c861655a92435af7368bae7b md5: 3c8f2573569bb816483e5cf57efbbe29 depends: @@ -12635,30 +9599,7 @@ packages: purls: [] size: 9389 timestamp: 1726802555076 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - purls: [] - size: 8252 - timestamp: 1726802366959 -- kind: conda - name: ptyprocess - version: 0.7.0 - build: pyhd3deb0d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a md5: 359eeb6536da0e687af562ed265ec263 depends: @@ -12668,13 +9609,7 @@ packages: - pkg:pypi/ptyprocess?source=hash-mapping size: 16546 timestamp: 1609419417991 -- kind: conda - name: pure_eval - version: 0.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 md5: 0f051f09d992e0d08941706ad519ee0e depends: @@ -12685,13 +9620,7 @@ packages: - pkg:pypi/pure-eval?source=hash-mapping size: 16551 timestamp: 1721585805256 -- kind: conda - name: pycparser - version: '2.22' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 md5: 844d9eb3b43095b031874477f7d70088 depends: @@ -12702,13 +9631,7 @@ packages: - pkg:pypi/pycparser?source=hash-mapping size: 105098 timestamp: 1711811634025 -- kind: conda - name: pygments - version: 2.18.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b md5: b7f5c092b8f9800150d998a71b76d5a1 depends: @@ -12719,72 +9642,7 @@ packages: - pkg:pypi/pygments?source=hash-mapping size: 879295 timestamp: 1714846885370 -- kind: conda - name: pygraphviz - version: '1.14' - build: py311h228682d_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - sha256: 1c17ea4c275490b38b5749a5aac515dbfb7ac66e0f45839c7b511d71b6f4c2bb - md5: d13800ff226f1057834b7f912d0122ed - depends: - - graphviz >=12.0.0,<13.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pygraphviz?source=hash-mapping - size: 149286 - timestamp: 1727646492604 -- kind: conda - name: pygraphviz - version: '1.14' - build: py311ha9b10cb_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - sha256: cbcf37b305cc386ecbe3879eeccee682cbc34a021696fd0478a69b56542fcfa7 - md5: 846b2a1965c4d7b9cdc96bdf7961aa0b - depends: - - __osx >=10.13 - - graphviz >=12.0.0,<13.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pygraphviz?source=hash-mapping - size: 142763 - timestamp: 1727646207806 -- kind: conda - name: pygraphviz - version: '1.14' - build: py311hd3d57da_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - sha256: 698959fb86daadd8b3e1a7753f3b1867babb0e5d7e09857ae908963157c87fdb - md5: c279de4ce02ab14a92024b5aaefc8018 - depends: - - __osx >=11.0 - - graphviz >=12.0.0,<13.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pygraphviz?source=hash-mapping - size: 143522 - timestamp: 1727646230915 -- kind: conda - name: pygraphviz - version: '1.14' - build: py311hf885082_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda sha256: 0ddfbff3596d382b7498b42185d1852625cd949f77dab25f392329b2b61fdd1e md5: 7ec06aad0aaf2bbb04b3e97eebb95a3e depends: @@ -12799,12 +9657,7 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 146481 timestamp: 1727646138200 -- kind: conda - name: pygraphviz - version: '1.14' - build: py312h011e53f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda sha256: f423d359ed9e989dd48f9c4531acebb67b96a1eb7fd60257c8e08d77e741168f md5: bad112802852496a8a8e41fd3ae9128d depends: @@ -12819,53 +9672,21 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 145598 timestamp: 1727646199446 -- kind: conda - name: pygraphviz - version: '1.14' - build: py312h1fbede1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - sha256: 49496bce9ff96adfad0395f84f8f03ccc9906c8e811b126af93549d44493b454 - md5: 52e4b69726aa9e114f8a6fa24bd643d2 - depends: - - __osx >=11.0 - - graphviz >=12.0.0,<13.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pygraphviz?source=hash-mapping - size: 140852 - timestamp: 1727646245535 -- kind: conda - name: pygraphviz - version: '1.14' - build: py312h4c6beb1_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - sha256: d82a0534dd794a5683af0c34921f0238042314f13643eba7160d078347601008 - md5: 5b8d66b06632b1c0259dd74cee2af6b7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda + sha256: cbcf37b305cc386ecbe3879eeccee682cbc34a021696fd0478a69b56542fcfa7 + md5: 846b2a1965c4d7b9cdc96bdf7961aa0b depends: + - __osx >=10.13 - graphviz >=12.0.0,<13.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 147736 - timestamp: 1727646635489 -- kind: conda - name: pygraphviz - version: '1.14' - build: py312hc79309e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + size: 142763 + timestamp: 1727646207806 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda sha256: af9996bd040a0c1c5278777e1ed60efef38bea34dfcf61eefdef1022cd6073af md5: 6b31481865012bc097123faab8d2483a depends: @@ -12879,57 +9700,43 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 141223 timestamp: 1727646168866 -- kind: conda - name: pygraphviz - version: '1.14' - build: py313h3a8fdcd_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - sha256: 74f27bfadba6ceab7f62c137390cd1d6a5c9460380a09dbc4b43478dcdc2f2cb - md5: 1a8c6ec6aa900ec36f07a70a50c35e5c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda + sha256: 698959fb86daadd8b3e1a7753f3b1867babb0e5d7e09857ae908963157c87fdb + md5: c279de4ce02ab14a92024b5aaefc8018 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - graphviz >=12.0.0,<13.0a0 - - libgcc >=13 - - python >=3.13.0rc2,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 146981 - timestamp: 1727646139934 -- kind: conda - name: pygraphviz - version: '1.14' - build: py313h3af7c70_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - sha256: fff8589c4226a565f5801f1501e5c393a5a9ee05d3379c20fea43f0fcfc35bb4 - md5: 77b8d374b349f91e194a26c94e91e622 + size: 143522 + timestamp: 1727646230915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda + sha256: 49496bce9ff96adfad0395f84f8f03ccc9906c8e811b126af93549d44493b454 + md5: 52e4b69726aa9e114f8a6fa24bd643d2 depends: - - __osx >=10.13 + - __osx >=11.0 - graphviz >=12.0.0,<13.0a0 - - python >=3.13.0rc2,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 142780 - timestamp: 1727646181311 -- kind: conda - name: pygraphviz - version: '1.14' - build: py313h592568e_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - sha256: 92c0efa51b4d907376b3caaa4b5a268b4331cbe6c9b48c5f0a16faf153adefed - md5: 416751b1e17cfa1cd353be1c2a4daec1 + size: 140852 + timestamp: 1727646245535 +- conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda + sha256: 1c17ea4c275490b38b5749a5aac515dbfb7ac66e0f45839c7b511d71b6f4c2bb + md5: d13800ff226f1057834b7f912d0122ed depends: - graphviz >=12.0.0,<13.0a0 - - python >=3.13.0rc2,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -12937,57 +9744,25 @@ packages: license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 148154 - timestamp: 1727646741491 -- kind: conda - name: pygraphviz - version: '1.14' - build: py313hcb705dd_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda - sha256: 81d04df00d7fdaf6f3b93f0c9507b419922f296721e8944d510e5549bdda3645 - md5: c0b8ad301050cdec367e319e2d12d58d + size: 149286 + timestamp: 1727646492604 +- conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + sha256: d82a0534dd794a5683af0c34921f0238042314f13643eba7160d078347601008 + md5: 5b8d66b06632b1c0259dd74cee2af6b7 depends: - - __osx >=11.0 - graphviz >=12.0.0,<13.0a0 - - python >=3.13.0rc2,<3.14.0a0 - - python >=3.13.0rc2,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 141819 - timestamp: 1727646243823 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py311h09e6bbd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py311h09e6bbd_1.conda - sha256: 698b08ca54169a744a1a087130ece9528f18da5e3be33ff6799ac6337d2a5e7f - md5: a0a43da9ec3ffb6195e7621fd959f430 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - setuptools - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-core?source=hash-mapping - size: 485377 - timestamp: 1725739643057 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py311hd6939f8_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py311hd6939f8_1.conda + size: 147736 + timestamp: 1727646635489 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py311hd6939f8_1.conda sha256: 48de2a78d71e6c1a2681c1fbcf1f1503a29c58cc42cfc0fafa5c1b59a10eda94 md5: c8e529b8f6a408dfc6a2bc0c607e2338 depends: @@ -13002,13 +9777,7 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 491149 timestamp: 1725739585987 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py312hab44e94_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda sha256: 2cd47e3b011640115066d71a5266c825ab85854c1e5fff0fef2f24318f8c63e8 md5: a2259b39321aef5c0548de366cc9b861 depends: @@ -13023,100 +9792,39 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 499240 timestamp: 1725739564809 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 - md5: 1533727287f098e669d75f9c54dc1601 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py311h09e6bbd_1.conda + sha256: 698b08ca54169a744a1a087130ece9528f18da5e3be33ff6799ac6337d2a5e7f + md5: a0a43da9ec3ffb6195e7621fd959f430 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 - setuptools license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 490928 - timestamp: 1725739760349 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py313h33780c8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py313h33780c8_1.conda - sha256: 038d6b929212985c048784b836351ba812f72e3d7e54ccfe6b45b226fa450329 - md5: 3cee4f4434f7e49295d3c75afe409915 + size: 485377 + timestamp: 1725739643057 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda + sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 + md5: 1533727287f098e669d75f9c54dc1601 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - setuptools - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-core?source=hash-mapping - size: 494412 - timestamp: 1725739648990 -- kind: conda - name: pyobjc-core - version: 10.3.1 - build: py313heea633c_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py313heea633c_1.conda - sha256: 22aa983bb8fb4201ef058eed577ff588073f46c36a17e50b45f3bc42dc35e7c1 - md5: d7fdae7db08e0a111262cceb43fbdbd3 - depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 - setuptools license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 500344 - timestamp: 1725739580130 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py311h09e6bbd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py311h09e6bbd_1.conda - sha256: 1d9f2c68ba6c7812f0c1e4a9bf9a5ad0a691b7b7b7694cb7ec0f05f1c24906f1 - md5: 9c3fc1bf9718d8340f41b0fab06ecdaa - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 384333 - timestamp: 1725875205492 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py311hd6939f8_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py311hd6939f8_1.conda + size: 490928 + timestamp: 1725739760349 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py311hd6939f8_1.conda sha256: bf6179d71edb920cedf7ce4395f4447d5ae96a9deb5a44dcc1a6abffea0de4aa md5: f3f565f99289de1cd140bdbea51b94eb depends: @@ -13131,13 +9839,7 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 381020 timestamp: 1725875173947 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py312hab44e94_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda sha256: 0b6a7635467fb54d094fdeca82406ca6ecdffafc69a943066affe73431d505d5 md5: 2cd451bd736cd2273b766b709c5ab7fa depends: @@ -13152,75 +9854,41 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 377479 timestamp: 1725875154490 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d - md5: b1c63f8abafc9530a9259e0d6a70e984 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py311h09e6bbd_1.conda + sha256: 1d9f2c68ba6c7812f0c1e4a9bf9a5ad0a691b7b7b7694cb7ec0f05f1c24906f1 + md5: 9c3fc1bf9718d8340f41b0fab06ecdaa depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - pyobjc-core 10.3.1.* - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 381079 - timestamp: 1725875188776 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py313h33780c8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py313h33780c8_1.conda - sha256: 521d685c2b71d9c29a44462efe489cd7df5e19052edf2f6a5a2d4b1306e30450 - md5: fd09ebef81f4dce1ff1b22ddad647d67 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 378043 - timestamp: 1725875227020 -- kind: conda - name: pyobjc-framework-cocoa - version: 10.3.1 - build: py313heea633c_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py313heea633c_1.conda - sha256: 2c2e46fed7a1d621a95720bc672e717c2da6fcfedfdb17f9e624f0600df55829 - md5: eb1a5872166f87a20c37c7d72db7d67b + size: 384333 + timestamp: 1725875205492 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda + sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d + md5: b1c63f8abafc9530a9259e0d6a70e984 depends: - - __osx >=10.13 + - __osx >=11.0 - libffi >=3.4,<4.0a0 - pyobjc-core 10.3.1.* - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 379376 - timestamp: 1725875127514 -- kind: pypi + size: 381079 + timestamp: 1725875188776 +- pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl name: pyreadline3 version: 3.5.4 - url: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl sha256: eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6 requires_dist: - build ; extra == 'dev' @@ -13229,14 +9897,7 @@ packages: - pytest ; extra == 'dev' - twine ; extra == 'dev' requires_python: '>=3.8' -- kind: conda - name: pysocks - version: 1.7.1 - build: pyh0701188_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 md5: 56cd9fe388baac0e90c7149cfac95b60 depends: @@ -13249,14 +9910,7 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 19348 timestamp: 1661605138291 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b md5: 2a7de29fb590ca14b5243c4c812c8025 depends: @@ -13268,34 +9922,7 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 18981 timestamp: 1661604969727 -- kind: pypi - name: pytest - version: 8.3.3 - url: https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl - sha256: a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2 - requires_dist: - - iniconfig - - packaging - - pluggy<2,>=1.5 - - exceptiongroup>=1.0.0rc8 ; python_full_version < '3.11' - - tomli>=1 ; python_full_version < '3.11' - - colorama ; sys_platform == 'win32' - - argcomplete ; extra == 'dev' - - attrs>=19.2 ; extra == 'dev' - - hypothesis>=3.56 ; extra == 'dev' - - mock ; extra == 'dev' - - pygments>=2.7.2 ; extra == 'dev' - - requests ; extra == 'dev' - - setuptools ; extra == 'dev' - - xmlschema ; extra == 'dev' - requires_python: '>=3.8' -- kind: conda - name: pytest - version: 8.3.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815 md5: c03d61f31f38fdb9facf70c29958bf7a depends: @@ -13314,13 +9941,7 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 258293 timestamp: 1725977334143 -- kind: conda - name: pytest-cov - version: 6.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda sha256: 915323edaee9f6f3ebd8c2e5450b4865700edf2c85eb2bba61980e66c6f03c5d md5: cb8a11b6d209e3d85e5094bdbd9ebd9c depends: @@ -13334,13 +9955,7 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 26218 timestamp: 1730284385470 -- kind: conda - name: pytest-xdist - version: 3.6.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda sha256: c9f27ed55352bee2c9f7cc2fdaf12b322ee280b1989d7e763b4540d4fe7ec995 md5: b39568655c127a9c4a44d178ac99b6d0 depends: @@ -13355,69 +9970,8 @@ packages: - pkg:pypi/pytest-xdist?source=hash-mapping size: 38320 timestamp: 1718138508765 -- kind: conda - name: python - version: 3.11.10 - build: ha513fb2_3_cpython - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.10-ha513fb2_3_cpython.conda - sha256: 670ba83b2aab2204f3254ed47ac0e4b8cad82478e5821727aeab69a2912aa1a0 - md5: 1a88c32ab9e997380ba1f9306624f805 - depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 - - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.11.* *_cp311 - license: Python-2.0 - purls: [] - size: 15442415 - timestamp: 1729043110107 -- kind: conda - name: python - version: 3.11.10 - build: hc51fdd5_3_cpython - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b - md5: 2a47a0061d7d3030e45b66d23f01d101 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 - - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.11.* *_cp311 - license: Python-2.0 - purls: [] - size: 14598065 - timestamp: 1729042279642 -- kind: conda - name: python - version: 3.11.10 - build: hc5c86c4_3_cpython +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda sha256: b7fa3bd48e3a3d30f65608e07759cefd27885c6388b3f612af85ce40282e6936 md5: 9e1ad55c87368e662177661a998feed5 depends: @@ -13444,44 +9998,39 @@ packages: purls: [] size: 30543977 timestamp: 1729043512711 -- kind: conda - name: python - version: 3.11.10 - build: hce54a09_3_cpython - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python-3.11.10-hce54a09_3_cpython.conda - sha256: 3931c546219d069918389e4dbe12057af4cc68a1060577a04014c6b5fc618aa0 - md5: 5d54d429c0eb2273d1cc69763de6edaf +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d + md5: 0515111a9cdf69f83278f7c197db9807 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libnsl >=2.0.1,<2.1.0a0 - libsqlite >=3.46.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 - openssl >=3.3.2,<4.0a0 + - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 constrains: - - python_abi 3.11.* *_cp311 + - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 18206702 - timestamp: 1729041779073 -- kind: conda - name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + size: 31574780 + timestamp: 1728059777603 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.10-ha513fb2_3_cpython.conda + build_number: 3 + sha256: 670ba83b2aab2204f3254ed47ac0e4b8cad82478e5821727aeab69a2912aa1a0 + md5: 1a88c32ab9e997380ba1f9306624f805 depends: - - __osx >=11.0 + - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 @@ -13494,17 +10043,12 @@ packages: - tzdata - xz >=5.2.6,<6.0a0 constrains: - - python_abi 3.12.* *_cp312 + - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 12975439 - timestamp: 1728057819519 -- kind: conda - name: python - version: 3.12.7 - build: h8f8b54e_0_cpython - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda + size: 15442415 + timestamp: 1729043110107 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda sha256: 28172d94f7193c5075c0fc3c4b1bb617c512ffc991f4e2af0dbb6a2916872b76 md5: 7f81191b1ca1113e694e90e15c27a12f depends: @@ -13526,25 +10070,16 @@ packages: purls: [] size: 13761315 timestamp: 1728058247482 -- kind: conda - name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda + build_number: 3 + sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b + md5: 2a47a0061d7d3030e45b66d23f01d101 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.3.2,<4.0a0 @@ -13553,178 +10088,91 @@ packages: - tzdata - xz >=5.2.6,<6.0a0 constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - purls: [] - size: 31574780 - timestamp: 1728059777603 -- kind: conda - name: python - version: 3.12.7 - build: hce54a09_0_cpython - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - sha256: 2308cfa9ec563360d29ced7fd13a6b60b9a7b3cf8961a95c78c69f486211d018 - md5: 21f1f7c6ccf6b747c5086d2422c230e1 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 - - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - purls: [] - size: 15987537 - timestamp: 1728057382072 -- kind: conda - name: python - version: 3.13.0 - build: h0608dab_100_cp313 - build_number: 100 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h0608dab_100_cp313.conda - sha256: f4c8ca4c34cb2a508956cfc8c2130dc30f168a75ae8254da8c43b5dce10ed2ea - md5: 9603103619775a3f99fe4b58d278775e - depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 - - libffi >=3.4,<4.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - xz >=5.2.6,<6.0a0 + - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 13933848 - timestamp: 1729169951268 -- kind: conda - name: python - version: 3.13.0 - build: h75c3a9f_100_cp313 - build_number: 100 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-h75c3a9f_100_cp313.conda - sha256: be9464399b76ae1fef77853eed70267ef657a98a5f69f7df012b7c6a34792151 - md5: 94ae22ea862d056ad1bc095443d02d73 + size: 14598065 + timestamp: 1729042279642 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef + md5: e0d82e57ebb456077565e6d82cd4a323 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 - - libmpdec >=4.0.0,<5.0a0 - libsqlite >=3.46.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.3.2,<4.0a0 - - python_abi 3.13.* *_cp313 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 12804842 - timestamp: 1729168680448 -- kind: conda - name: python - version: 3.13.0 - build: h9ebbce0_100_cp313 - build_number: 100 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_100_cp313.conda - sha256: 6ab5179679f0909db828d8316f3b8b379014a82404807310fe7df5a6cf303646 - md5: 08e9aef080f33daeb192b2ddc7e4721f + size: 12975439 + timestamp: 1728057819519 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.10-hce54a09_3_cpython.conda + build_number: 3 + sha256: 3931c546219d069918389e4dbe12057af4cc68a1060577a04014c6b5fc618aa0 + md5: 5d54d429c0eb2273d1cc69763de6edaf depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libmpdec >=4.0.0,<5.0a0 - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - openssl >=3.3.2,<4.0a0 - - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 33112481 - timestamp: 1728419573472 -- kind: conda - name: python - version: 3.13.0 - build: hf5aa216_100_cp313 - build_number: 100 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_100_cp313.conda - sha256: 18f3f0bd514c9101d38d57835b2d027958f3ae4b3b65c22d187a857aa26b3a08 - md5: 3c2f7ad3f598480fe2a09e4e33cb1a2a + size: 18206702 + timestamp: 1729041779073 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda + sha256: 2308cfa9ec563360d29ced7fd13a6b60b9a7b3cf8961a95c78c69f486211d018 + md5: 21f1f7c6ccf6b747c5086d2422c230e1 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.3,<3.0a0 - libffi >=3.4,<4.0a0 - - libmpdec >=4.0.0,<5.0a0 - libsqlite >=3.46.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 - - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 16641177 - timestamp: 1728417810202 -- kind: conda - name: python-dateutil - version: 2.9.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda - sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 - md5: 2cf4264fffb9e6eff6031c5b6884d61c + size: 15987537 + timestamp: 1728057382072 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 + md5: b6dfd90a2141e573e4b6a81630b56df5 depends: - - python >=3.7 + - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping - size: 222742 - timestamp: 1709299922152 -- kind: conda - name: python-fastjsonschema - version: 2.20.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + size: 221925 + timestamp: 1731919374686 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda sha256: 7d8c931b89c9980434986b4deb22c2917b58d9936c3974139b9c10ae86fdfe60 md5: b98d2018c01ce9980c03ee2850690fab depends: @@ -13735,13 +10183,7 @@ packages: - pkg:pypi/fastjsonschema?source=hash-mapping size: 226165 timestamp: 1718477110630 -- kind: conda - name: python-json-logger - version: 2.0.7 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 depends: @@ -13752,13 +10194,7 @@ packages: - pkg:pypi/python-json-logger?source=hash-mapping size: 13383 timestamp: 1677079727691 -- kind: conda - name: python-tzdata - version: '2024.2' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 md5: 986287f89929b2d629bd6ef6497dc307 depends: @@ -13769,13 +10205,8 @@ packages: - pkg:pypi/tzdata?source=hash-mapping size: 142527 timestamp: 1727140688093 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de md5: 139a8d40c8a2f430df31048949e450de constrains: @@ -13785,93 +10216,52 @@ packages: purls: [] size: 6211 timestamp: 1723823324668 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-5_cp311.conda - sha256: 9b092850a268aca99600b724bae849f51209ecd5628e609b4699debc59ff1945 - md5: e6d62858c06df0be0e6255c753d74787 - constrains: - - python 3.11.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6303 - timestamp: 1723823062672 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a - md5: 3b855e3734344134cb56c410f729c340 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 constrains: - - python 3.11.* *_cpython + - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6308 - timestamp: 1723823096865 -- kind: conda - name: python_abi - version: '3.11' - build: 5_cp311 + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - sha256: 9b210e5807dd9c9ed71ff192a95f1872da597ddd10e7cefec93a922fe22e598a - md5: 895b873644c11ccc0ab7dba2d8513ae6 + sha256: 9b092850a268aca99600b724bae849f51209ecd5628e609b4699debc59ff1945 + md5: e6d62858c06df0be0e6255c753d74787 constrains: - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6707 - timestamp: 1723823225752 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6303 + timestamp: 1723823062672 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 + sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d + md5: c34dd4920e0addf7cfcc725809f25d8e constrains: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6238 - timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6312 + timestamp: 1723823137004 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d - md5: c34dd4920e0addf7cfcc725809f25d8e + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 constrains: - - python 3.12.* *_cpython + - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6312 - timestamp: 1723823137004 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 md5: b76f9b1c862128e56ac7aa8cd2333de9 constrains: @@ -13881,13 +10271,19 @@ packages: purls: [] size: 6278 timestamp: 1723823099686 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 +- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 9b210e5807dd9c9ed71ff192a95f1872da597ddd10e7cefec93a922fe22e598a + md5: 895b873644c11ccc0ab7dba2d8513ae6 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6707 + timestamp: 1723823225752 +- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda sha256: 9486662af81a219e96d343449eff242f38d7c5128ced5ce5acf85857265058d6 md5: e8681f534453af7afab4cd2bc1423eec constrains: @@ -13897,77 +10293,7 @@ packages: purls: [] size: 6730 timestamp: 1723823139725 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda - sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 - md5: 381bbd2a92c863f640a55b6ff3c35161 - constrains: - - python 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6217 - timestamp: 1723823393322 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda - sha256: 075ad768648e88b78d2a94099563b43d3082e7c35979f457164f26d1079b7b5c - md5: 927a2186f1f997ac018d67c4eece90a6 - constrains: - - python 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6291 - timestamp: 1723823083064 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda - sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199 - md5: b8e82d0a5c1664638f87f63cc5d241fb - constrains: - - python 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6322 - timestamp: 1723823058879 -- kind: conda - name: python_abi - version: '3.13' - build: 5_cp313 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda - sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756 - md5: 44b4fe6f22b57103afb2299935c8b68e - constrains: - - python 3.13.* *_cp313 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6716 - timestamp: 1723823166911 -- kind: conda - name: pytz - version: '2024.1' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad depends: @@ -13978,13 +10304,7 @@ packages: - pkg:pypi/pytz?source=hash-mapping size: 188538 timestamp: 1706886944988 -- kind: conda - name: pywin32 - version: '307' - build: py311hda3d55a_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda sha256: 78a4ede098bbc122a3dff4e0e27255e30b236101818e8f499779c89670c58cd6 md5: 1bc10dbe3b8d03071070c962a2bdf65f depends: @@ -13999,13 +10319,7 @@ packages: - pkg:pypi/pywin32?source=hash-mapping size: 6023110 timestamp: 1728636767562 -- kind: conda - name: pywin32 - version: '307' - build: py312h275cf98_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda sha256: 68f8781b83942b91dbc0df883f9edfd1a54a1e645ae2a97c48203ff6c2919de3 md5: 1747fbbdece8ab4358b584698b19c44d depends: @@ -14020,33 +10334,7 @@ packages: - pkg:pypi/pywin32?source=hash-mapping size: 6032183 timestamp: 1728636767192 -- kind: conda - name: pywin32 - version: '307' - build: py313h5813708_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - sha256: 0a68b324ea47ae720c62522c5d0bb5ea3e4987e1c5870d6490c7f954fbe14cbe - md5: 7113bd6cfe34e80d8211f7c019d14357 - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: PSF-2.0 - license_family: PSF - purls: - - pkg:pypi/pywin32?source=hash-mapping - size: 6060096 - timestamp: 1728636763526 -- kind: conda - name: pywinpty - version: 2.0.14 - build: py311hda3d55a_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py311hda3d55a_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py311hda3d55a_0.conda sha256: 337097e3f3b71f782c43fb702893f86f080e140da467415dcaf039a7fbb8e551 md5: 64553b300529aa8987f6ca92c914c844 depends: @@ -14062,12 +10350,7 @@ packages: - pkg:pypi/pywinpty?source=hash-mapping size: 210973 timestamp: 1729202625177 -- kind: conda - name: pywinpty - version: 2.0.14 - build: py312h275cf98_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda sha256: 20bc64c412b659b387ed12d73ca9138e4487abcfb3f1547b6d4cdb68753035e9 md5: 0e0aac13d306f0b016f4c85cbfbf87be depends: @@ -14083,75 +10366,7 @@ packages: - pkg:pypi/pywinpty?source=hash-mapping size: 210034 timestamp: 1729202671199 -- kind: conda - name: pywinpty - version: 2.0.14 - build: py313h5813708_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py313h5813708_0.conda - sha256: eeee0a592dbadeb5b54fc53194984f6b1698f073f49b0d2402e474a620069542 - md5: be81b7b3aa13aeffd1cc26a372ef5cfc - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - winpty - license: MIT - license_family: MIT - purls: - - pkg:pypi/pywinpty?source=hash-mapping - size: 210042 - timestamp: 1729202970817 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311h3336109_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda - sha256: d8f4513c53a7c0be9f1cdb9d1af31ac85cf8a6f0e4194715e36e915c03104662 - md5: b0132bec7165a53403dcc393ff761a9e - depends: - - __osx >=10.13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 193941 - timestamp: 1725456465818 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 - md5: d32590e7bd388f18b036c6fc402a0cb1 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 192321 - timestamp: 1725456528007 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311h9ecbd09_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda sha256: e721e5ff389a7b2135917c04b27391be3d3382e261bb60a369b1620655365c3d md5: abeb54d40f439b86f75ea57045ab8496 depends: @@ -14166,78 +10381,7 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 212644 timestamp: 1725456264282 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py311he736701_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda - sha256: 86608f1b4f6b1819a74b6b1344c34304745fd7e84bfc9900269f57cf28178d31 - md5: d0c5f3c595039890be0c9af47d23b9ba - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 187901 - timestamp: 1725456808581 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - sha256: fa3ede1fa2ed6ea0a51095aeea398f6f0f54af036c4bc525726107cfb49229d5 - md5: afb7809721516919c276b45f847c085f - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 181227 - timestamp: 1725456516473 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa md5: 549e5930e768548a89c23f595dac5a95 depends: @@ -14252,13 +10396,21 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 206553 timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb553811_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda + sha256: d8f4513c53a7c0be9f1cdb9d1af31ac85cf8a6f0e4194715e36e915c03104662 + md5: b0132bec7165a53403dcc393ff761a9e + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 193941 + timestamp: 1725456465818 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda sha256: 455ce40588b35df654cb089d29cc3f0d3c78365924ffdfc6ee93dba80cea5f33 md5: 66514594817d51c78db7109a23ad322f depends: @@ -14272,80 +10424,42 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 189347 timestamp: 1725456465705 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313h20a7fcf_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda - sha256: f9fbafcf30cfab591c67f7550c0fd58e2bff394b53864dcdc658f5abd27ce5d6 - md5: bf2ddf70a9ce8f899b1082d17cbb3d1d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda + sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 + md5: d32590e7bd388f18b036c6fc402a0cb1 depends: - __osx >=11.0 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 187550 - timestamp: 1725456463634 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313h536fd9c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda - sha256: 86ae34bf2bab82c0fff2e31a37318c8977297776436df780a83c6efa5f84749d - md5: 3789f360de131c345e96fbfc955ca80b + size: 192321 + timestamp: 1725456528007 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 205855 - timestamp: 1725456273924 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313ha37c0e0_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda - sha256: 79ca3a62f0f085e5f29f1614c0d509a20d3a34bb2ef956c079ee4cdf0e36dbfc - md5: cdaa065902c8bbf2975cf7744fb5c27d + size: 187143 + timestamp: 1725456547263 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda + sha256: 86608f1b4f6b1819a74b6b1344c34304745fd7e84bfc9900269f57cf28178d31 + md5: d0c5f3c595039890be0c9af47d23b9ba depends: - - __osx >=10.13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - yaml >=0.2.5,<0.3.0a0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyyaml?source=hash-mapping - size: 190014 - timestamp: 1725456352876 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py313ha7868ed_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - sha256: ffa21c4715aa139d20c96ae7274fbb7de12a546f3332eb8d07cc794741fcbde6 - md5: c1743e5c4c7402a14b515cf276778e59 - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -14354,44 +10468,32 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 181722 - timestamp: 1725456802746 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h484c95c_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py311h484c95c_3.conda - sha256: 4d3fc4cfac284efb83a903601586cc6ee18fb556d4bf84d3bd66af76517c463e - md5: 4836b00658e11b466b823216f6df2424 + size: 187901 + timestamp: 1725456808581 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda + sha256: fa3ede1fa2ed6ea0a51095aeea398f6f0f54af036c4bc525726107cfb49229d5 + md5: afb7809721516919c276b45f847c085f depends: - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zeromq >=4.3.5,<4.3.6.0a0 - license: BSD-3-Clause - license_family: BSD + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 371084 - timestamp: 1728642713666 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h4d3da15_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py311h4d3da15_3.conda - sha256: 6aa664170031e36302616978404175c6ada3bd4a14c71bac826fa6a7ec15f815 - md5: 48a614f384285254a3224d086dc84ce3 + - pkg:pypi/pyyaml?source=hash-mapping + size: 181227 + timestamp: 1725456516473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda + sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 + md5: e0897de1d8979a3bb20ef031ae1f7d28 depends: - - __osx >=10.13 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - zeromq >=4.3.5,<4.4.0a0 @@ -14399,45 +10501,32 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 366412 - timestamp: 1728642446264 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h730b646_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae - md5: b6f3e527de0c0384cd78cfa779bd6ddf + size: 389074 + timestamp: 1728642373938 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 depends: - - __osx >=11.0 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - zeromq >=4.3.5,<4.4.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365841 - timestamp: 1728642472021 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py311h7deb3e3_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 - md5: e0897de1d8979a3bb20ef031ae1f7d28 + size: 378126 + timestamp: 1728642454632 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py311h4d3da15_3.conda + sha256: 6aa664170031e36302616978404175c6ada3bd4a14c71bac826fa6a7ec15f815 + md5: 48a614f384285254a3224d086dc84ce3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 + - libcxx >=17 - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - zeromq >=4.3.5,<4.4.0a0 @@ -14445,15 +10534,9 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 389074 - timestamp: 1728642373938 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312h1060d5c_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda + size: 366412 + timestamp: 1728642446264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda sha256: 880b10ebbc563164d24adf51d2166ddd54a368627dc546cf89abc3e9c935e23c md5: fa167f6388357aeff8fd341b7bc9edd6 depends: @@ -14469,59 +10552,24 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 362749 timestamp: 1728642592082 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hbf22597_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda + sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae + md5: b6f3e527de0c0384cd78cfa779bd6ddf depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + - libcxx >=17 - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 - zeromq >=4.3.5,<4.4.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 378126 - timestamp: 1728642454632 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hd7027bb_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - sha256: 46a645f9482c9ca55716644dae85f6d3cf771b696379d1dd86841ca6007ee409 - md5: 1ff97de0753654c02e5195a710bbf05c - depends: - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - zeromq >=4.3.5,<4.3.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 360217 - timestamp: 1728642895644 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py312hf8a1cbd_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + size: 365841 + timestamp: 1728642472021 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e depends: @@ -14538,64 +10586,30 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 361674 timestamp: 1728642457661 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py313h0dfe02f_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py313h0dfe02f_3.conda - sha256: 1a2dc006161415088f824fecb12fcddee97be2a394ae6093ee4d3c9985876893 - md5: 0001baad29089ea50d0644e839cfef14 - depends: - - __osx >=10.13 - - libcxx >=17 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - zeromq >=4.3.5,<4.4.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 367756 - timestamp: 1728642498201 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py313h0e8b002_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py313h0e8b002_3.conda - sha256: 0fbe80ac4e6d110e82f84fb2466ceace16ba4b9cb175d5945cb9055454b3c06a - md5: 9fb8f1294d8c5a300c2f76e46f830b01 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py311h484c95c_3.conda + sha256: 4d3fc4cfac284efb83a903601586cc6ee18fb556d4bf84d3bd66af76517c463e + md5: 4836b00658e11b466b823216f6df2424 depends: - - __osx >=11.0 - - libcxx >=17 - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - zeromq >=4.3.5,<4.4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zeromq >=4.3.5,<4.3.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365164 - timestamp: 1728642544605 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py313h2100fd5_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py313h2100fd5_3.conda - sha256: 971bea2fd92920327f4a44e69393643193b435c37e7528d93c32071e531fc9ba - md5: d0ce06d0a38f8ad0dc9b71e14137deee + size: 371084 + timestamp: 1728642713666 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda + sha256: 46a645f9482c9ca55716644dae85f6d3cf771b696379d1dd86841ca6007ee409 + md5: 1ff97de0753654c02e5195a710bbf05c depends: - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -14604,38 +10618,19 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 367463 - timestamp: 1728643113504 -- kind: conda - name: pyzmq - version: 26.2.0 - build: py313h8e95178_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py313h8e95178_3.conda - sha256: 0b26fe1cf10d3511b1ef72faedebfe57256e464a51d23e07153f09c6300ec42c - md5: 8ab50c9c9c3824ac0ffac9e9dcf5619e + size: 360217 + timestamp: 1728642895644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 + md5: 01093ff37c1b5e6bf9f17c0116747d11 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - zeromq >=4.3.5,<4.4.0a0 + - libre2-11 2024.07.02 hbbce691_1 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 384582 - timestamp: 1728642439746 -- kind: conda - name: re2 - version: 2024.07.02 - build: h2fb0a26_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda + purls: [] + size: 26665 + timestamp: 1728778975855 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda sha256: 49ec4ed6249efe9cda173745e036137f8de1f0b22edf9b0ca4f9c6409b2b68f9 md5: aa8ea927cdbdf690efeae3e575716131 depends: @@ -14645,29 +10640,7 @@ packages: purls: [] size: 26864 timestamp: 1728779054104 -- kind: conda - name: re2 - version: 2024.07.02 - build: h77b4e00_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 - depends: - - libre2-11 2024.07.02 hbbce691_1 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 26665 - timestamp: 1728778975855 -- kind: conda - name: re2 - version: 2024.07.02 - build: hcd0e937_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 md5: 19e29f2ccc9168eb0a39dc40c04c0e21 depends: @@ -14677,13 +10650,7 @@ packages: purls: [] size: 26860 timestamp: 1728779123653 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: @@ -14694,45 +10661,27 @@ packages: purls: [] size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e depends: - ncurses >=6.3,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 250351 - timestamp: 1679532511311 -- kind: conda - name: readline - version: '8.2' - build: h9e318b2_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 - md5: f17f77f2acf4d344734bda76829ce14e + size: 255870 + timestamp: 1679532707590 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - ncurses >=6.3,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 255870 - timestamp: 1679532707590 -- kind: conda - name: referencing - version: 0.35.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 md5: 0fc8b52192a8898627c3efae1003e9f6 depends: @@ -14745,13 +10694,7 @@ packages: - pkg:pypi/referencing?source=hash-mapping size: 42210 timestamp: 1714619625532 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc md5: 5ede4753180c7a550a443c430dc8ab52 depends: @@ -14768,110 +10711,32 @@ packages: - pkg:pypi/requests?source=hash-mapping size: 58810 timestamp: 1717057174842 -- kind: conda - name: rfc3339-validator - version: 0.1.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - md5: fed45fc5ea0813240707998abe49f520 - depends: - - python >=3.5 - - six - license: MIT - license_family: MIT - purls: - - pkg:pypi/rfc3339-validator?source=hash-mapping - size: 8064 - timestamp: 1638811838081 -- kind: conda - name: rfc3986-validator - version: 0.1.1 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 - md5: 912a71cc01012ee38e6b90ddd561e36f - depends: - - python - license: MIT - license_family: MIT - purls: - - pkg:pypi/rfc3986-validator?source=hash-mapping - size: 7818 - timestamp: 1598024297745 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py311h3b9c2be_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py311h3b9c2be_0.conda - sha256: 6895f726fbab18b2a518762d5da3276e047443bbcc15accf4063749fa68a1741 - md5: 944348dd578e3959b290e5ccd1552c59 - depends: - - __osx >=10.13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 301778 - timestamp: 1730473103872 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py311h3ff9189_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py311h3ff9189_0.conda - sha256: d494535cdf7f5648c026cd230e88d8637aa6450f0027975c80507eb7bca84a53 - md5: b4918b6e76abf85fe284b9c539ba7a46 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - constrains: - - __osx >=11.0 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d + md5: fed45fc5ea0813240707998abe49f520 + depends: + - python >=3.5 + - six license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 293656 - timestamp: 1730473203388 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py311h533ab2d_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py311h533ab2d_0.conda - sha256: 8fa435861d8fb21e3c6ba3249ff0b04973431ae83ba0de1dd880bc2f0d1077b1 - md5: 2ad0ec4b1977b3828f55abf4ffdfb45f + - pkg:pypi/rfc3339-validator?source=hash-mapping + size: 8064 + timestamp: 1638811838081 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 + md5: 912a71cc01012ee38e6b90ddd561e36f depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 210991 - timestamp: 1730473236669 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py311h9e33e62_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py311h9e33e62_0.conda - sha256: e68466c94743a728f848d152e1088498c2d7d14d8f5034101a1c18c5211b10f2 - md5: 359aec32fd9f6b881f6f1e2b287608eb + - pkg:pypi/rfc3986-validator?source=hash-mapping + size: 7818 + timestamp: 1598024297745 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py311h9e33e62_0.conda + sha256: 41b1c00f08d2b09243ca184af6f4fe8ca9fee418a62aec1cf1555bfd0b1b2eac + md5: befdb32741d8686b860232ca80178d63 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14883,36 +10748,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 333315 - timestamp: 1730472933896 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py312h0d0de52_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py312h0d0de52_0.conda - sha256: aeebd41b5cced7dd27f14edddba70a89b5a5bd5f1d2319443776f47875ac9362 - md5: 5d97fbc8562b70f08edd06d0fa2152ff - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 303685 - timestamp: 1730473148114 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py312h12e396e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py312h12e396e_0.conda - sha256: 83357a44706569dd3224e142cf30d60749d2e7dc131b7cc3a2a05341ce27e2ff - md5: e72ffbd19c66b5396034fffe8a52bca6 + size: 334025 + timestamp: 1730922823065 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda + sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 + md5: 37f4ad7cb4214c799f32e5f411c6c69f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14924,122 +10764,76 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 337004 - timestamp: 1730472929182 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py312h2615798_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py312h2615798_0.conda - sha256: 2c6648bb19990072ca970a26275ec49599182c79d3c23384d0a3ac4ad09e1cda - md5: 98d30b1eeae081f85f214c32265168c7 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 210506 - timestamp: 1730473254450 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py312hcd83bfe_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py312hcd83bfe_0.conda - sha256: 7fdc34a6fcb362f78dacc2cf4d347762b81027d6bfbabd1c7678404a6b62ca55 - md5: 4cb748cb05fe339f709055c25430621f + size: 336759 + timestamp: 1730922756033 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py311h3b9c2be_0.conda + sha256: 234429609e71e568d1dcd7113e9a3c53c231079166ec89364b7c1158ea989776 + md5: 230b5b87921887039af74b783d8ff095 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 constrains: - - __osx >=11.0 + - __osx >=10.13 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 295554 - timestamp: 1730473370659 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py313h3c055b9_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.20.1-py313h3c055b9_0.conda - sha256: 6127d8278e96c8ee42d9d3de3609c363096f73c5105109c157f5983cbb0e2a4d - md5: dd16b46e929986ec25130b7b59190499 + size: 301356 + timestamp: 1730922990073 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda + sha256: ff4c1d70c78085a2abb8f8fc1dc283a60eafe61e03c3367d7cbface6190fe7ab + md5: dae0ad51ccb74a37f0b64ed6e6f82840 depends: - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - __osx >=10.13 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 303311 - timestamp: 1730473178023 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py313h920b4c0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.20.1-py313h920b4c0_0.conda - sha256: 45fca9a7c94167f1b4cb48e3ee11de04fea36df5d786860ca1f8c6ccc8c4f430 - md5: 25a1b691011d4d92bd2a19e115e3142d + size: 303838 + timestamp: 1730922939375 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py311h3ff9189_0.conda + sha256: 309be68ba0cac227dbc288576b1b35a4f57cea85ca8891689399c384ac04b254 + md5: ae72e9942de84200f16d91a1c3418116 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 constrains: - - __glibc >=2.17 + - __osx >=11.0 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 335403 - timestamp: 1730472988039 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py313hdde674f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.20.1-py313hdde674f_0.conda - sha256: f9f90096a8177d00b28ef90db21cf442f2d4275e03d933163d417cfe374366b4 - md5: b5f30fba1ddfb1ba0bb7a69c6d446f6b + size: 294014 + timestamp: 1730923248201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda + sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555 + md5: 8ea53395d5403ae5ec1adabb1a74719a depends: - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 295313 - timestamp: 1730473152996 -- kind: conda - name: rpds-py - version: 0.20.1 - build: py313hf3b5b86_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.20.1-py313hf3b5b86_0.conda - sha256: 9efc30f39667a36bed73d4c7764f616c040519ad515cbc015eb24719d36a50a5 - md5: c5e60426ff9a2336a9ba711924d4645b - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + size: 295817 + timestamp: 1730922974629 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py311h533ab2d_0.conda + sha256: 217c9ce9bcb50ea55ba1148a7b85ae945015c68ecae914707eff0fce5c175cdf + md5: 56ff25ebb744a6aa97ff02b8c263c892 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -15047,86 +10841,24 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 209868 - timestamp: 1730473337326 -- kind: pypi - name: scipy - version: 1.14.1 - url: https://files.pythonhosted.org/packages/aa/7d/43ab67228ef98c6b5dd42ab386eae2d7877036970a0d7e3dd3eb47a0d530/scipy-1.14.1-cp312-cp312-win_amd64.whl - sha256: 2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f - requires_dist: - - numpy<2.3,>=1.23.5 - - pytest ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-timeout ; extra == 'test' - - pytest-xdist ; extra == 'test' - - asv ; extra == 'test' - - mpmath ; extra == 'test' - - gmpy2 ; extra == 'test' - - threadpoolctl ; extra == 'test' - - scikit-umfpack ; extra == 'test' - - pooch ; extra == 'test' - - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.0 ; extra == 'test' - - cython ; extra == 'test' - - meson ; extra == 'test' - - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx<=7.3.7,>=5.0.0 ; extra == 'doc' - - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - - sphinx-design>=0.4.0 ; extra == 'doc' - - matplotlib>=3.5 ; extra == 'doc' - - numpydoc ; extra == 'doc' - - jupytext ; extra == 'doc' - - myst-nb ; extra == 'doc' - - pooch ; extra == 'doc' - - jupyterlite-sphinx>=0.13.1 ; extra == 'doc' - - jupyterlite-pyodide-kernel ; extra == 'doc' - - mypy==1.10.0 ; extra == 'dev' - - typing-extensions ; extra == 'dev' - - types-psutil ; extra == 'dev' - - pycodestyle ; extra == 'dev' - - ruff>=0.0.292 ; extra == 'dev' - - cython-lint>=0.12.2 ; extra == 'dev' - - rich-click ; extra == 'dev' - - doit>=0.36.0 ; extra == 'dev' - - pydevtool ; extra == 'dev' - requires_python: '>=3.10' -- kind: conda - name: scipy - version: 1.14.1 - build: py312h20deb59_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda - sha256: 1a4d655609bad7dbdbe9f44ba37fd100d01fb8e4e7060dfaed3c4a044ab40052 - md5: c60ad657cccb6c2b97513f87ae27f47a + size: 211208 + timestamp: 1730923228503 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda + sha256: 5c7492080f1db9a6def75193d8b296af50adb5ae390835432c095bc515cd19cc + md5: 6e9c028c46dddcbf97d6fc6f7b854811 depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=17 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 - - numpy >=1.19,<3 - - numpy >=1.23.5 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT purls: - - pkg:pypi/scipy?source=hash-mapping - size: 15132713 - timestamp: 1729481799441 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h62794b6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda + - pkg:pypi/rpds-py?source=hash-mapping + size: 210974 + timestamp: 1730923229667 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda sha256: d069a64edade554261672d8febf4756aeb56a6cb44bd91844eaa944e5d9f4eb9 md5: b43233a9e2f62fb94affe5607ea79473 depends: @@ -15149,13 +10881,7 @@ packages: - pkg:pypi/scipy?source=hash-mapping size: 17622722 timestamp: 1729481826601 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h888eae2_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda sha256: 5a28ea91c935513e6c5f64baac5a02ce43d9ba183b98e20127220b207ec96529 md5: ee7a4ffe9742d2df44caa858b36814b8 depends: @@ -15177,13 +10903,30 @@ packages: - pkg:pypi/scipy?source=hash-mapping size: 16032291 timestamp: 1729481615781 -- kind: conda - name: send2trash - version: 1.8.3 - build: pyh0d859eb_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda + sha256: 1a4d655609bad7dbdbe9f44ba37fd100d01fb8e4e7060dfaed3c4a044ab40052 + md5: c60ad657cccb6c2b97513f87ae27f47a + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=17 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.3 + - numpy >=1.19,<3 + - numpy >=1.23.5 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + size: 15132713 + timestamp: 1729481799441 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda sha256: c4401b071e86ddfa0ea4f34b85308db2516b6aeca50053535996864cfdee7b3f md5: 778594b20097b5a948c59e50ae42482a depends: @@ -15195,13 +10938,7 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 22868 timestamp: 1712585140895 -- kind: conda - name: send2trash - version: 1.8.3 - build: pyh31c8845_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda sha256: f911307db932c92510da6c3c15b461aef935720776643a1fbf3683f61001068b md5: c3cb67fc72fb38020fe7923dbbcf69b0 depends: @@ -15214,13 +10951,7 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23165 timestamp: 1712585504123 -- kind: conda - name: send2trash - version: 1.8.3 - build: pyh5737063_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda sha256: d8aa230501a33250af2deee03006a2579f0335e7240a9c7286834788dcdcfaa8 md5: 5a86a21050ca3831ec7f77fb302f1132 depends: @@ -15233,30 +10964,18 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23319 timestamp: 1712585816346 -- kind: conda - name: setuptools - version: 75.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.3.0-pyhd8ed1ab_0.conda - sha256: a36d020b9f32fc3f1a6488a1c4a9c13988c6468faf6895bf30ca69521a61230e - md5: 2ce9825396daf72baabaade36cee16da +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed + md5: 68d7d406366926b09a6a023e3d0f71d7 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/setuptools?source=hash-mapping - size: 779561 - timestamp: 1730382173961 -- kind: conda - name: six - version: 1.16.0 - build: pyh6c4a22f_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + size: 774304 + timestamp: 1732216189406 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 md5: e5f25f8dbc060e9a8d912e432202afc2 depends: @@ -15267,13 +10986,7 @@ packages: - pkg:pypi/six?source=hash-mapping size: 14259 timestamp: 1620240338595 -- kind: conda - name: sniffio - version: 1.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b md5: 490730480d76cf9c8f8f2849719c6e2b depends: @@ -15284,13 +10997,7 @@ packages: - pkg:pypi/sniffio?source=hash-mapping size: 15064 timestamp: 1708953086199 -- kind: conda - name: snowballstemmer - version: 2.2.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 md5: 4d22a9315e78c6827f806065957d566e depends: @@ -15301,14 +11008,7 @@ packages: - pkg:pypi/snowballstemmer?source=hash-mapping size: 58824 timestamp: 1637143137377 -- kind: conda - name: soupsieve - version: '2.5' - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c md5: 3f144b2c34f8cb5a9abd9ed23a39c561 depends: @@ -15319,13 +11019,7 @@ packages: - pkg:pypi/soupsieve?source=hash-mapping size: 36754 timestamp: 1693929424267 -- kind: conda - name: sphinx - version: 8.1.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda sha256: e9e3eaa7277934ba20314ffb92c941c4ec12c0c440e608b7b495c5ce579af1f7 md5: 05706dd5a145a9c91861495cd435409a depends: @@ -15353,13 +11047,7 @@ packages: - pkg:pypi/sphinx?source=hash-mapping size: 1401233 timestamp: 1728874101851 -- kind: conda - name: sphinxcontrib-applehelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda sha256: 8ac476358cf26098e3a360b2a9037bd809243f72934c103953e25f4fda4b9f31 md5: 9075bd8c033f0257122300db914e49c9 depends: @@ -15371,13 +11059,7 @@ packages: - pkg:pypi/sphinxcontrib-applehelp?source=hash-mapping size: 29617 timestamp: 1722244567894 -- kind: conda - name: sphinxcontrib-devhelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda sha256: 6790efe55f168816dfc9c14235054d5156e5150d28546c5baf2ff4973eff8f6b md5: b3bcc38c471ebb738854f52a36059b48 depends: @@ -15389,13 +11071,7 @@ packages: - pkg:pypi/sphinxcontrib-devhelp?source=hash-mapping size: 24138 timestamp: 1722245127289 -- kind: conda - name: sphinxcontrib-htmlhelp - version: 2.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda sha256: 55e14b77ed786ab6ff752b8d75f8448536f385ed250f432bd408d2eff5ea4a9e md5: e25640d692c02e8acfff0372f547e940 depends: @@ -15407,13 +11083,7 @@ packages: - pkg:pypi/sphinxcontrib-htmlhelp?source=hash-mapping size: 32798 timestamp: 1722248429933 -- kind: conda - name: sphinxcontrib-jsmath - version: 1.0.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 md5: da1d979339e2714c30a8e806a33ec087 depends: @@ -15424,13 +11094,7 @@ packages: - pkg:pypi/sphinxcontrib-jsmath?source=hash-mapping size: 10431 timestamp: 1691604844204 -- kind: conda - name: sphinxcontrib-qthelp - version: 2.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda sha256: 7ae639b729844de2ec74dbaf1acccc14843868a82fa46cd2ceb735bc8266af5b md5: d6e5ea5fe00164ac6c2dcc5d76a42192 depends: @@ -15442,13 +11106,7 @@ packages: - pkg:pypi/sphinxcontrib-qthelp?source=hash-mapping size: 26794 timestamp: 1722245959953 -- kind: conda - name: sphinxcontrib-serializinghtml - version: 1.1.10 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda sha256: bf80e4c0ff97d5e8e5f6db0831ba60007e820a3a438e8f1afd868aa516d67d6f md5: e507335cb4ca9cff4c3d0fa9cdab255e depends: @@ -15460,13 +11118,7 @@ packages: - pkg:pypi/sphinxcontrib-serializinghtml?source=hash-mapping size: 28776 timestamp: 1705118378942 -- kind: conda - name: stack_data - version: 0.6.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec md5: e7df0fdd404616638df5ece6e69ba7af depends: @@ -15480,22 +11132,14 @@ packages: - pkg:pypi/stack-data?source=hash-mapping size: 26205 timestamp: 1669632203115 -- kind: pypi +- pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl name: tabcompleter version: 1.4.0 - url: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl sha256: d744aa735b49c0a6cc2fb8fcd40077fec47425e4388301010b14e6ce3311368b requires_dist: - pyreadline3 ; platform_system == 'Windows' requires_python: '>=3.8' -- kind: conda - name: tabulate - version: 0.9.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 md5: 4759805cce2d914c38472f70bf4d8bcb depends: @@ -15506,12 +11150,7 @@ packages: - pkg:pypi/tabulate?source=hash-mapping size: 35912 timestamp: 1665138565317 -- kind: conda - name: tbb - version: 2021.7.0 - build: h91493d7_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 sha256: c3d607499a6e097f4b8b27048ee7166319fd3dfe98aea9e69a69a3d087b986e3 md5: f57be598137919e4f7e7d159960d66a1 depends: @@ -15523,13 +11162,7 @@ packages: purls: [] size: 178574 timestamp: 1668617991077 -- kind: conda - name: tenacity - version: 9.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda sha256: 0d33171e1d303b57867f0cfcffb8a35031700acb3c52b1862064d8f4e1085538 md5: 42af51ad3b654ece73572628ad2882ae depends: @@ -15540,13 +11173,7 @@ packages: - pkg:pypi/tenacity?source=hash-mapping size: 24683 timestamp: 1722278974784 -- kind: conda - name: terminado - version: 0.18.1 - build: pyh0d859eb_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 depends: @@ -15560,13 +11187,7 @@ packages: - pkg:pypi/terminado?source=hash-mapping size: 22452 timestamp: 1710262728753 -- kind: conda - name: terminado - version: 0.18.1 - build: pyh31c8845_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda sha256: 4daae56fc8da17784578fbdd064f17e3b3076b394730a14119e571707568dc8a md5: 00b54981b923f5aefcd5e8547de056d5 depends: @@ -15580,13 +11201,7 @@ packages: - pkg:pypi/terminado?source=hash-mapping size: 22717 timestamp: 1710265922593 -- kind: conda - name: terminado - version: 0.18.1 - build: pyh5737063_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda sha256: 8cb078291fd7882904e3de594d299c8de16dd3af7405787fce6919a385cfc238 md5: 4abd500577430a942a995fd0d09b76a2 depends: @@ -15600,13 +11215,7 @@ packages: - pkg:pypi/terminado?source=hash-mapping size: 22883 timestamp: 1710262943966 -- kind: conda - name: tinycss2 - version: 1.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 md5: f1acf5fdefa8300de697982bcb1761c9 depends: @@ -15618,13 +11227,18 @@ packages: - pkg:pypi/tinycss2?source=hash-mapping size: 28285 timestamp: 1729802975370 -- kind: conda - name: tk - version: 8.6.13 - build: h1abcd95_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 md5: bf830ba5afc507c6232d4ef0fb1a882d depends: @@ -15634,13 +11248,7 @@ packages: purls: [] size: 3270220 timestamp: 1699202389792 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: @@ -15650,13 +11258,7 @@ packages: purls: [] size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: h5226925_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 md5: fc048363eb8f03cd1737600a5d08aafe depends: @@ -15668,30 +11270,7 @@ packages: purls: [] size: 3503410 timestamp: 1699202577803 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: toml - version: 0.10.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 md5: f832c45a477c78bebd107098db465095 depends: @@ -15702,69 +11281,18 @@ packages: - pkg:pypi/toml?source=hash-mapping size: 18433 timestamp: 1604308660817 -- kind: conda - name: tomli - version: 2.0.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.2-pyhd8ed1ab_0.conda - sha256: 5e742ba856168b606ac3c814d247657b1c33b8042371f1a08000bdc5075bc0cc - md5: e977934e00b355ff55ed154904044727 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 + md5: 3fa1089b4722df3a900135925f4519d9 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/tomli?source=hash-mapping - size: 18203 - timestamp: 1727974767524 -- kind: conda - name: tornado - version: 6.4.1 - build: py311h3336109_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py311h3336109_1.conda - sha256: 2e54c0d478b8d0793f89b855749aa74acaa185d08d353d8e5aa95f8e89eb6123 - md5: 5e051c4c2b80c381173b2c1719265617 - depends: - - __osx >=10.13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 856251 - timestamp: 1724956238423 -- kind: conda - name: tornado - version: 6.4.1 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - sha256: bba4940ef7522c3b4ae6eacd296e5e110de3659f7e4c3654d4fc2bb213c2091c - md5: 8ba6d177509dc4fac7af09749556eed0 - depends: - - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 859139 - timestamp: 1724956356600 -- kind: conda - name: tornado - version: 6.4.1 - build: py311h9ecbd09_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda + size: 18741 + timestamp: 1731426862834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda sha256: 21390d0c5708581959ebd89702433c1d06a56ddd834797a194b217f98e38df53 md5: 616fed0b6f5c925250be779b05d1d7f7 depends: @@ -15778,75 +11306,7 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 856725 timestamp: 1724956239832 -- kind: conda - name: tornado - version: 6.4.1 - build: py311he736701_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_1.conda - sha256: 8e448bc682a6540a0aadc1f821c0d60f03d70272350caa2af519316fd1753f68 - md5: f361535f90629358e3ea8f2161b239f3 - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 860730 - timestamp: 1724956581349 -- kind: conda - name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 841722 - timestamp: 1724956439106 -- kind: conda - name: tornado - version: 6.4.1 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - sha256: 79a4155e4700aa188d6de36ed65b2923527864ad775bb156ed0a4067619e8ee0 - md5: e278437965b2420d567ba11b579668bc - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 841567 - timestamp: 1724956763418 -- kind: conda - name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 md5: af648b62462794649066366af4ecd5b0 depends: @@ -15860,13 +11320,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 837665 timestamp: 1724956252424 -- kind: conda - name: tornado - version: 6.4.1 - build: py312hb553811_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py311h3336109_1.conda + sha256: 2e54c0d478b8d0793f89b855749aa74acaa185d08d353d8e5aa95f8e89eb6123 + md5: 5e051c4c2b80c381173b2c1719265617 + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 856251 + timestamp: 1724956238423 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda sha256: 67711e308059fd4fd9ce2389b155ffcc52723d202b78cdfa01e7d6a3d42725b5 md5: 479bb06cef210f968f20866277acd8b9 depends: @@ -15879,77 +11346,55 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 841028 timestamp: 1724956347530 -- kind: conda - name: tornado - version: 6.4.1 - build: py313h20a7fcf_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py313h20a7fcf_1.conda - sha256: f8c455e8d0acb0f671b8b957a429629de1131253d3cd5ad1a76c08d5830c3939 - md5: 451759dc49f937714b9fa9fca8b86b7a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda + sha256: bba4940ef7522c3b4ae6eacd296e5e110de3659f7e4c3654d4fc2bb213c2091c + md5: 8ba6d177509dc4fac7af09749556eed0 depends: - __osx >=11.0 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 867065 - timestamp: 1724960911660 -- kind: conda - name: tornado - version: 6.4.1 - build: py313h536fd9c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py313h536fd9c_1.conda - sha256: 29630b1f5452628b661a7cdde2c54aa7d9e31874d4ddb8080ad060c10e79063d - md5: 70b5b6dfd7d1760cd59849e2271d937b + size: 859139 + timestamp: 1724956356600 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda + sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 + md5: 967bc97bb9e258993289546479af971f depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 863224 - timestamp: 1724960831827 -- kind: conda - name: tornado - version: 6.4.1 - build: py313ha37c0e0_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py313ha37c0e0_1.conda - sha256: 6e320b4f954853101ee7beba9de59760af1464ad26b3da89a20e57fc5994f8c7 - md5: 97e88d20d94ad24b7bf0d7b67b14fa90 + size: 841722 + timestamp: 1724956439106 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_1.conda + sha256: 8e448bc682a6540a0aadc1f821c0d60f03d70272350caa2af519316fd1753f68 + md5: f361535f90629358e3ea8f2161b239f3 depends: - - __osx >=10.13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 866888 - timestamp: 1724960870564 -- kind: conda - name: tornado - version: 6.4.1 - build: py313ha7868ed_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py313ha7868ed_1.conda - sha256: 63771acac59edb00920e69053e1452c2bea5906f12b9dfde2e7063ef5873e88a - md5: ef4504fee3b2345096fec32898bd0275 - depends: - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + size: 860730 + timestamp: 1724956581349 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda + sha256: 79a4155e4700aa188d6de36ed65b2923527864ad775bb156ed0a4067619e8ee0 + md5: e278437965b2420d567ba11b579668bc + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -15957,15 +11402,9 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 868535 - timestamp: 1724961251062 -- kind: conda - name: traitlets - version: 5.14.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + size: 841567 + timestamp: 1724956763418 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 md5: 3df84416a021220d8b5700c613af2dc5 depends: @@ -15976,13 +11415,14 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110187 timestamp: 1713535244513 -- kind: conda - name: types-python-dateutil - version: 2.9.0.20241003 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda +- pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + name: types-networkx + version: 3.4.2.20241227 + sha256: adb0e3f0a16c1481a2cfa97772a0b925b220dcf857f0def1c5ab4c4f349e309d + requires_dist: + - numpy>=1.20 + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 md5: 3d326f8a2aa2d14d51d8c513426b5def depends: @@ -15992,13 +11432,8 @@ packages: - pkg:pypi/types-python-dateutil?source=hash-mapping size: 21765 timestamp: 1727940339297 -- kind: conda - name: typing-extensions - version: 4.12.2 - build: hd8ed1ab_0 - subdir: noarch +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 md5: 52d648bd608f5737b123f510bb5514b5 depends: @@ -16008,13 +11443,7 @@ packages: purls: [] size: 10097 timestamp: 1717802659025 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb md5: ebe6952715e1d5eb567eeebf25250fa7 depends: @@ -16025,13 +11454,7 @@ packages: - pkg:pypi/typing-extensions?source=hash-mapping size: 39888 timestamp: 1717802653893 -- kind: conda - name: typing_utils - version: 0.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739 md5: eb67e3cace64c66233e2d35949e20f92 depends: @@ -16042,26 +11465,14 @@ packages: - pkg:pypi/typing-utils?source=hash-mapping size: 13829 timestamp: 1622899345711 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain purls: [] size: 122354 timestamp: 1728047496079 -- kind: conda - name: ucrt - version: 10.0.22621.0 - build: h57928b3_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 constrains: @@ -16070,79 +11481,39 @@ packages: purls: [] size: 559710 timestamp: 1728377334097 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py311h2c37856_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - sha256: f48499c8f639265c53dc794ff2f2d0aa163845eb31841c226ec172f64861654d - md5: d5fe38d502e3d758c8f0fed8ba9ea652 - depends: - - __osx >=11.0 - - cffi - - libcxx >=17 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 13603 - timestamp: 1725784278728 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py311h3257749_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - sha256: 7624abb32c075e234dad59acb5b580006adfef348cd1aefcbe0be31546aa5b73 - md5: 938a78ac20d6ed625b8d76015c6be88d +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda + sha256: 4542cc3093f480c7fa3e104bfd9e5b7daeff32622121be6847f9e839341b0790 + md5: 4e8447ca8558a203ec0577b4730073f3 depends: + - __glibc >=2.17,<3.0.a0 - cffi + - libgcc >=13 + - libstdcxx >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 17253 - timestamp: 1725784407361 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py311hd18a35c_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - sha256: 4542cc3093f480c7fa3e104bfd9e5b7daeff32622121be6847f9e839341b0790 - md5: 4e8447ca8558a203ec0577b4730073f3 + size: 13858 + timestamp: 1725784165345 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda + sha256: 9fb020083a7f4fee41f6ece0f4840f59739b3e249f157c8a407bb374ffb733b5 + md5: f9664ee31aed96c85b7319ab0a693341 depends: - __glibc >=2.17,<3.0.a0 - cffi - libgcc >=13 - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 13858 - timestamp: 1725784165345 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py311hf2f7c97_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda + size: 13904 + timestamp: 1725784191021 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda sha256: d1aaec2edf78eeb79407d907679a78ecc0c97f7390046a45d561e22b348de553 md5: 1b576e5588d90b82f96e3e21490b085d depends: @@ -16157,57 +11528,7 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 13060 timestamp: 1725784205661 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312h6142ec9_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - sha256: 1e4452b4a12d8a69c237f14b876fbf0cdc456914170b49ba805779c749c31eca - md5: 2b485a809d1572cbe7f0ad9ee107e4b0 - depends: - - __osx >=11.0 - - cffi - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 13605 - timestamp: 1725784243533 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312h68727a3_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - sha256: 9fb020083a7f4fee41f6ece0f4840f59739b3e249f157c8a407bb374ffb733b5 - md5: f9664ee31aed96c85b7319ab0a693341 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 13904 - timestamp: 1725784191021 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312hc5c4d5f_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda sha256: f6433143294c1ca52410bf8bbca6029a04f2061588d32e6d2b67c7fd886bc4e0 md5: f270aa502d8817e9cb3eb33541f78418 depends: @@ -16222,62 +11543,45 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 13031 timestamp: 1725784199719 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312hd5eb7cc_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - sha256: f1944f3d9645a6fa2770966ff010791136e7ce0eaa0c751822b812ac04fee7d6 - md5: d8c5ef1991a5121de95ea8e44c34e13a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda + sha256: f48499c8f639265c53dc794ff2f2d0aa163845eb31841c226ec172f64861654d + md5: d5fe38d502e3d758c8f0fed8ba9ea652 depends: + - __osx >=11.0 - cffi - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libcxx >=17 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 17213 - timestamp: 1725784449622 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313h0c4e38b_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - sha256: 6abf14f984a1fc3641908cb7e96ba8f2ce56e6f81069852b384e1755f8f5225e - md5: 6185cafe9e489071688304666923c2ad + size: 13603 + timestamp: 1725784278728 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + sha256: 1e4452b4a12d8a69c237f14b876fbf0cdc456914170b49ba805779c749c31eca + md5: 2b485a809d1572cbe7f0ad9ee107e4b0 depends: - - __osx >=10.13 + - __osx >=11.0 - cffi - libcxx >=17 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 13126 - timestamp: 1725784265187 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313h1ec8472_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0 - md5: 97337494471e4265a203327f9a194234 + size: 13605 + timestamp: 1725784243533 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda + sha256: 7624abb32c075e234dad59acb5b580006adfef348cd1aefcbe0be31546aa5b73 + md5: 938a78ac20d6ed625b8d76015c6be88d depends: - cffi - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -16285,59 +11589,25 @@ packages: license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 17210 - timestamp: 1725784604368 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313h33d0bda_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7 - md5: 5bcffe10a500755da4a71cc0fb62a420 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi - - libgcc >=13 - - libstdcxx >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/ukkonen?source=hash-mapping - size: 13916 - timestamp: 1725784177558 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py313hf9c7212_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - sha256: 482eac475928c031948790647ae10c2cb1d4a779c2e8f35f5fd1925561b13203 - md5: 8ddba23e26957f0afe5fc9236c73124a + size: 17253 + timestamp: 1725784407361 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + sha256: f1944f3d9645a6fa2770966ff010791136e7ce0eaa0c751822b812ac04fee7d6 + md5: d8c5ef1991a5121de95ea8e44c34e13a depends: - - __osx >=11.0 - cffi - - libcxx >=17 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: - pkg:pypi/ukkonen?source=hash-mapping - size: 13689 - timestamp: 1725784235751 -- kind: conda - name: uri-template - version: 1.3.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + size: 17213 + timestamp: 1725784449622 +- conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94 md5: 0944dc65cb4a9b5b68522c3bb585d41c depends: @@ -16348,13 +11618,7 @@ packages: - pkg:pypi/uri-template?source=hash-mapping size: 23999 timestamp: 1688655976471 -- kind: conda - name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 md5: 6b55867f385dd762ed99ea687af32a69 depends: @@ -16369,15 +11633,9 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 98076 timestamp: 1726496531769 -- kind: conda - name: vc - version: '14.3' - build: ha32ba9b_22 - build_number: 22 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_22.conda - sha256: 2a47c5bd8bec045959afada7063feacd074ad66b170c1ea92dd139b389fcf8fd - md5: 311c9ba1dfdd2895a8cb08346ff26259 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda + sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 + md5: 7c10ec3158d1eb4ddff7007c9101adb0 depends: - vc14_runtime >=14.38.33135 track_features: @@ -16385,33 +11643,21 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17447 - timestamp: 1728400826998 -- kind: conda - name: vc14_runtime - version: 14.40.33810 - build: hcc2c482_22 - build_number: 22 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-hcc2c482_22.conda - sha256: 4c669c65007f88a7cdd560192f7e6d5679d191ac71610db724e18b2410964d64 - md5: ce23a4b980ee0556a118ed96550ff3f3 + size: 17479 + timestamp: 1731710827215 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda + sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49 + md5: 32b37d0cfa80da34548501cdc913a832 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.40.33810.* *_22 + - vs2015_runtime 14.42.34433.* *_23 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 750719 - timestamp: 1728401055788 -- kind: conda - name: virtualenv - version: 20.27.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda + size: 754247 + timestamp: 1731710681163 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda sha256: 189b935224732267df10dc116bce0835bd76fcdb20c30f560591c92028d513b0 md5: dae21509d62aa7bf676279ced3edcb3f depends: @@ -16425,29 +11671,17 @@ packages: - pkg:pypi/virtualenv?source=hash-mapping size: 2965442 timestamp: 1730204927840 -- kind: conda - name: vs2015_runtime - version: 14.40.33810 - build: h3bf8584_22 - build_number: 22 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_22.conda - sha256: 80aa9932203d65a96f817b8be4fafc176fb2b3fe6cf6899ede678b8f0317fbff - md5: 8c6b061d44cafdfc8e8c6eb5f100caf0 - depends: - - vc14_runtime >=14.40.33810 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda + sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 + md5: 5c176975ca2b8366abad3c97b3cd1e83 + depends: + - vc14_runtime >=14.42.34433 license: BSD-3-Clause license_family: BSD purls: [] - size: 17453 - timestamp: 1728400827536 -- kind: conda - name: wcwidth - version: 0.2.13 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda + size: 17572 + timestamp: 1731710685291 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 md5: 68f0738df502a14213624b288c60c9ad depends: @@ -16458,13 +11692,7 @@ packages: - pkg:pypi/wcwidth?source=hash-mapping size: 32709 timestamp: 1704731373922 -- kind: conda - name: webcolors - version: 24.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac md5: eb48b812eb4fbb9ff238a6651fdbbcae depends: @@ -16475,14 +11703,7 @@ packages: - pkg:pypi/webcolors?source=hash-mapping size: 18378 timestamp: 1723294800217 -- kind: conda - name: webencodings - version: 0.5.1 - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 md5: daf5160ff9cde3a468556965329085b9 depends: @@ -16493,13 +11714,7 @@ packages: - pkg:pypi/webencodings?source=hash-mapping size: 15600 timestamp: 1694681458271 -- kind: conda - name: websocket-client - version: 1.8.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda sha256: 44a5e3b97feef24cd719f7851cca9af9799dc9c17d3e0298d5856baab2d682f5 md5: f372c576b8774922da83cda2b12f9d29 depends: @@ -16510,13 +11725,7 @@ packages: - pkg:pypi/websocket-client?source=hash-mapping size: 47066 timestamp: 1713923494501 -- kind: conda - name: widgetsnbextension - version: 4.0.13 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda sha256: d155adc10f8c96f76d4468dbe37b33b4334dadf5cd4a95841aa009ca9bced5fa md5: 6372cd99502721bd7499f8d16b56268d depends: @@ -16527,14 +11736,7 @@ packages: - pkg:pypi/widgetsnbextension?source=hash-mapping size: 898656 timestamp: 1724331433259 -- kind: conda - name: win_inet_pton - version: 1.1.0 - build: pyh7428d3b_7 - build_number: 7 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda sha256: c5297692ab34aade5e21107abaf623d6f93847662e25f655320038d2bfa1a812 md5: c998c13b2f998af57c3b88c7a47979e0 depends: @@ -16545,28 +11747,25 @@ packages: - pkg:pypi/win-inet-pton?source=hash-mapping size: 9602 timestamp: 1727796413384 -- kind: conda - name: winpty - version: 0.4.3 - build: '4' - build_number: 4 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 sha256: 9df10c5b607dd30e05ba08cbd940009305c75db242476f4e845ea06008b0a283 md5: 1cee351bf20b830d991dbe0bc8cd7dfe - arch: x86_64 - platform: win license: MIT license_family: MIT purls: [] size: 1176306 -- kind: conda - name: xorg-libice - version: 1.1.1 - build: h0e40799_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda + sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 + md5: 19608a9656912805b2b9a2f6bd257b04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 58159 + timestamp: 1727531850109 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda sha256: 786dc4b9ebaad7dfab8aaed700e4b79dfeaecaf89fef1815ff5c19055d9e2c8c md5: 78ef693fed85f1bf30d3a15983427c10 depends: @@ -16579,30 +11778,20 @@ packages: purls: [] size: 234740 timestamp: 1727532401173 -- kind: conda - name: xorg-libice - version: 1.1.1 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 - md5: 19608a9656912805b2b9a2f6bd257b04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c + md5: 05a8ea5f446de33006171a7afe6ae857 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 58159 - timestamp: 1727531850109 -- kind: conda - name: xorg-libsm - version: 1.2.4 - build: h0e40799_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda + size: 27516 + timestamp: 1727634669421 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda sha256: f9944a672b9e8a043fd8dc417c233ad4e30502e369def2a257cdbdcf5e9463e0 md5: 27c850e290d5d8c31336c5c5d8d43a88 depends: @@ -16615,31 +11804,7 @@ packages: purls: [] size: 96841 timestamp: 1727635068698 -- kind: conda - name: xorg-libsm - version: 1.2.4 - build: he73a12e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c - md5: 05a8ea5f446de33006171a7afe6ae857 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.1,<2.0a0 - license: MIT - license_family: MIT - purls: [] - size: 27516 - timestamp: 1727634669421 -- kind: conda - name: xorg-libx11 - version: 1.8.10 - build: h4f16b4b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 md5: 0b666058a179b744a622d0a4a0c56353 depends: @@ -16652,12 +11817,7 @@ packages: purls: [] size: 838308 timestamp: 1727356837875 -- kind: conda - name: xorg-libx11 - version: 1.8.10 - build: hf48077a_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda sha256: d1d6d2b5d33c35a39f7efacc3d2bc84332f0592d5435628dae89207bddeeaf5e md5: 97e52b3d384cc7d3be4873bec28f050e depends: @@ -16671,13 +11831,18 @@ packages: purls: [] size: 952088 timestamp: 1727357732462 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: h0e40799_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 14679 + timestamp: 1727034741045 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda sha256: f44bc6f568a9697b7e1eadc2d00ef5de0fe62efcf5e27e5ecc46f81046082faf md5: ca66d6f8fe86dd53664e8de5087ef6b1 depends: @@ -16689,29 +11854,18 @@ packages: purls: [] size: 107925 timestamp: 1727035280560 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 14679 - timestamp: 1727034741045 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h0e40799_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda sha256: 9075f98dcaa8e9957e4a3d9d30db05c7578a536950a31c200854c5c34e1edb2c md5: 8393c0f7e7870b4eb45553326f81f0ff depends: @@ -16723,28 +11877,19 @@ packages: purls: [] size: 69920 timestamp: 1727795651979 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT purls: [] - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: h0e40799_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda sha256: 7fdc3135a340893aa544921115c3994ef4071a385d47cc11232d818f006c63e4 md5: 4cd74e74f063fb6900d6eed2e9288112 depends: @@ -16757,30 +11902,7 @@ packages: purls: [] size: 284715 timestamp: 1727752838922 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 - md5: febbab7d15033c913d53c7a2c102309d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - license: MIT - license_family: MIT - purls: [] - size: 50060 - timestamp: 1727752228921 -- kind: conda - name: xorg-libxpm - version: 3.5.17 - build: h0e40799_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda sha256: a605b43b2622a4cae8df6edc148c02b527da4ea165ec67cabb5c9bc4f3f8ef13 md5: e8b816fb37bc61aa3f1c08034331ef53 depends: @@ -16795,13 +11917,7 @@ packages: purls: [] size: 236112 timestamp: 1727801849623 -- kind: conda - name: xorg-libxrender - version: 0.9.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 md5: a7a49a8b85122b49214798321e2e96b4 depends: @@ -16812,54 +11928,24 @@ packages: license: MIT license_family: MIT purls: [] - size: 37780 - timestamp: 1727529943015 -- kind: conda - name: xorg-libxt - version: 1.3.0 - build: h0e40799_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-h0e40799_2.conda - sha256: fa2e9147b22fb1e413cc25bd70aad0b51e70cc49e773dbce63da2ac1ea3436a4 - md5: eab65f90063f9e7db3c4577e81cf42de - depends: - - libgcc >=13 - - libwinpthread >=12.0.0.r4.gg4f2fc60ca - - ucrt >=10.0.20348.0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 - license: MIT - license_family: MIT - purls: [] - size: 917855 - timestamp: 1727663627424 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: h0e40799_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - sha256: 78a7211266821fd98c4a250f28dac7f8a6abbf8bff339990c6969d8d0712f11d - md5: de202fa8beaa5f5d4a085a82913143cd + size: 37780 + timestamp: 1727529943015 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda + sha256: c940a6b71a1e59450b01ebfb3e21f3bbf0a8e611e5fbfc7982145736b0f20133 + md5: 31baf0ce8ef19f5617be73aee0527618 depends: - libgcc >=13 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - ucrt >=10.0.20348.0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT purls: [] - size: 569140 - timestamp: 1726846656126 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + size: 918674 + timestamp: 1731861024233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 md5: 7c21106b851ec72c037b162c216d8f05 depends: @@ -16870,12 +11956,19 @@ packages: purls: [] size: 565425 timestamp: 1726846388217 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda + sha256: 78a7211266821fd98c4a250f28dac7f8a6abbf8bff339990c6969d8d0712f11d + md5: de202fa8beaa5f5d4a085a82913143cd + depends: + - libgcc >=13 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + - ucrt >=10.0.20348.0 + license: MIT + license_family: MIT + purls: [] + size: 569140 + timestamp: 1726846656126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 md5: 2161070d867d1b1204ea749c8eec4ef0 depends: @@ -16884,36 +11977,21 @@ packages: purls: [] size: 418368 timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h775f41a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 md5: a72f9d4ea13d55d745ff1ed594747f10 license: LGPL-2.1 and GPL-2.0 purls: [] size: 238119 timestamp: 1660346964847 -- kind: conda - name: xz - version: 5.2.6 - build: h8d14728_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec + md5: 39c6b54e94014701dd157f4f576ed211 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 235693 + timestamp: 1660346961024 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 md5: 515d77642eaa3639413c6b1bc3f94219 depends: @@ -16923,13 +12001,17 @@ packages: purls: [] size: 217804 timestamp: 1660346976440 -- kind: conda - name: yaml - version: 0.2.5 - build: h0d85af4_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 md5: d7e08fcf8259d742156188e8762b4d20 license: MIT @@ -16937,13 +12019,7 @@ packages: purls: [] size: 84237 timestamp: 1641347062780 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 md5: 4bb3f014845110883a3c5ee811fd84b4 license: MIT @@ -16951,29 +12027,7 @@ packages: purls: [] size: 88016 timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - license: MIT - license_family: MIT - purls: [] - size: 89141 - timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: h8ffe710_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 md5: adbfb9f45d1004a26763652246a33764 depends: @@ -16984,15 +12038,9 @@ packages: purls: [] size: 63274 timestamp: 1641347623319 -- kind: conda - name: zeromq - version: 4.3.5 - build: h3b0a872_6 - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_6.conda - sha256: e67288b1c98a31ee58a5c07bdd873dbe08e75f752e1ad605d5e8c0697339903e - md5: 113506c8d2d558e733f5c38f6bf08c50 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 @@ -17002,126 +12050,60 @@ packages: license: MPL-2.0 license_family: MOZILLA purls: [] - size: 335528 - timestamp: 1728364029042 -- kind: conda - name: zeromq - version: 4.3.5 - build: h9f5b81c_6 - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h9f5b81c_6.conda - sha256: 5c5061c976141eccbbb2aec21483ddd10fd1df4fd9bcf638e3fd57b2bd85721f - md5: 84121ef1717cdfbecedeae70142706cc + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + sha256: b932dce8c9de9a8ffbf0db0365d29677636e599f7763ca51e554c43a0c5f8389 + md5: 6a0a76cd2b3d575e1b7aaeb283b9c3ed depends: - - __osx >=11.0 + - __osx >=10.13 - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 license: MPL-2.0 license_family: MOZILLA purls: [] - size: 280870 - timestamp: 1728363954972 -- kind: conda - name: zeromq - version: 4.3.5 - build: ha9f60a1_6 - build_number: 6 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_6.conda - sha256: c37130692742cc43eedf4e23270c7d1634235acff50760025e9583f8b46b64e6 - md5: 33a78bbc44d6550c361abb058a0556e2 + size: 292112 + timestamp: 1731585246902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 depends: + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: MPL-2.0 license_family: MOZILLA purls: [] - size: 2701749 - timestamp: 1728364260886 -- kind: conda - name: zeromq - version: 4.3.5 - build: he4ceba3_6 - build_number: 6 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-he4ceba3_6.conda - sha256: 0e2a6ced111fd99b66b76ec797804ab798ec190a88a2779060f7a8787c343ee0 - md5: 00ec9f2a5e21bbbd22ffbbc12b3df286 + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + sha256: 15cc8e2162d0a33ffeb3f7b7c7883fd830c54a4b1be6a4b8c7ee1f4fef0088fb + md5: e03f2c245a5ee6055752465519363b1c depends: - - __osx >=10.13 - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=17 - libsodium >=1.0.20,<1.0.21.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MPL-2.0 license_family: MOZILLA purls: [] - size: 290634 - timestamp: 1728364170966 -- kind: conda - name: zipp - version: 3.20.2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.20.2-pyhd8ed1ab_0.conda - sha256: 1e84fcfa41e0afdd87ff41e6fbb719c96a0e098c1f79be342293ab0bd8dea322 - md5: 4daaed111c05672ae669f7036ee5bba3 + size: 2527503 + timestamp: 1731585151036 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec + md5: fee389bf8a4843bd7a2248ce11b7f188 depends: - python >=3.8 license: MIT license_family: MIT purls: - pkg:pypi/zipp?source=hash-mapping - size: 21409 - timestamp: 1726248679175 -- kind: conda - name: zlib - version: 1.3.1 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c - md5: be60c4e8efa55fddc17b4131aa47acbd - depends: - - libzlib 1.3.1 h2466b09_2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Zlib - license_family: Other - purls: [] - size: 107439 - timestamp: 1727963788936 -- kind: conda - name: zlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - license: Zlib - license_family: Other - purls: [] - size: 77606 - timestamp: 1727963209370 -- kind: conda - name: zlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + size: 21702 + timestamp: 1731262194278 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 depends: @@ -17133,13 +12115,7 @@ packages: purls: [] size: 92286 timestamp: 1727963153079 -- kind: conda - name: zlib - version: 1.3.1 - build: hd23fc13_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 md5: c989e0295dcbdc08106fe5d9e935f0b9 depends: @@ -17150,44 +12126,38 @@ packages: purls: [] size: 88544 timestamp: 1727963189976 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311h53056dc_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda - sha256: a93584e6167c3598854a47f3bf8276fa646a3bb4d12fcfc23a54e37d5879f35c - md5: 7d4c123cbb5e6293dd4dd2f8d30f0de4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 depends: - - cffi >=1.11 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c + md5: be60c4e8efa55fddc17b4131aa47acbd + depends: + - libzlib 1.3.1 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 321357 - timestamp: 1725305930669 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311ha60cc69_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 - md5: 29d320d6450b2948740a9be3761b2e9d + license: Zlib + license_family: Other + purls: [] + size: 107439 + timestamp: 1727963788936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda + sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f + md5: aec590674ba365e50ae83aa2d6e1efae depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - cffi >=1.11 + - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 @@ -17195,38 +12165,26 @@ packages: license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 332271 - timestamp: 1725305847224 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311hbc35293_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f - md5: aec590674ba365e50ae83aa2d6e1efae + size: 417923 + timestamp: 1725305669690 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.11 - libgcc >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 417923 - timestamp: 1725305669690 -- kind: conda - name: zstandard - version: 0.23.0 - build: py311hdf6fcd6_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda sha256: d9bf977b620750049eb60fffca299a701342a2df59bcc2586a79b2f7c5783fa1 md5: 4fc42d6f85a21b09ee6477f456554df3 depends: @@ -17242,36 +12200,7 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 411350 timestamp: 1725305723486 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 - depends: - - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h7122b0e_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda sha256: 2685dde42478fae0780fba5d1f8a06896a676ae105f215d32c9f9e76f3c6d8fd md5: bd132ba98f3fc0a6067f355f8efe4cb6 depends: @@ -17287,44 +12216,31 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 410873 timestamp: 1725305688706 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h7606c53_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - sha256: 3e0c718aa18dcac7f080844dbe0aea41a9cea75083019ce02e8a784926239826 - md5: a92cc3435b2fd6f51463f5a4db5c50b1 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda + sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 + md5: 29d320d6450b2948740a9be3761b2e9d depends: + - __osx >=11.0 - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 320624 - timestamp: 1725305934189 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 + size: 332271 + timestamp: 1725305847224 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cffi >=1.11 - - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 @@ -17332,21 +12248,15 @@ packages: license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313h574b89f_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313h574b89f_1.conda - sha256: 1d2744ec0e91da267ce749e19142081472539cb140a7dad0646cd249246691fe - md5: 8e017aca933f4dd25491151edd3e7820 + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda + sha256: a93584e6167c3598854a47f3bf8276fa646a3bb4d12fcfc23a54e37d5879f35c + md5: 7d4c123cbb5e6293dd4dd2f8d30f0de4 depends: - cffi >=1.11 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -17356,100 +12266,39 @@ packages: license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 325703 - timestamp: 1725305947138 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313h80202fe_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h80202fe_1.conda - sha256: ea82f2b8964150a3aa7373b4697e48e64f2200fe68ae554ee85c641c692d1c97 - md5: c178558ff516cd507763ffee230c20b2 - depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 424424 - timestamp: 1725305749031 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313hab0894d_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313hab0894d_1.conda - sha256: 4b976b0c6f5c1a2c94c5351fbc02b1cad44dbeaf2e288986827e8b2183a14ce6 - md5: 27fe151b0b0752c1ad1c47106855efd9 - depends: - - __osx >=10.13 - - cffi >=1.11 - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 417943 - timestamp: 1725305677487 -- kind: conda - name: zstandard - version: 0.23.0 - build: py313hf2da073_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313hf2da073_1.conda - sha256: 12b4e34acff24d291e2626c6610dfd819b8d99a461025ae59affcb6e84bc1d57 - md5: deebca66926691fadaaf16da05ecb5f9 + size: 321357 + timestamp: 1725305930669 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda + sha256: 3e0c718aa18dcac7f080844dbe0aea41a9cea75083019ce02e8a784926239826 + md5: a92cc3435b2fd6f51463f5a4db5c50b1 depends: - - __osx >=11.0 - cffi >=1.11 - - python >=3.13.0rc1,<3.14.0a0 - - python >=3.13.0rc1,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.5.7.0a0 - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 336496 - timestamp: 1725305912716 -- kind: conda - name: zstd - version: 1.5.6 - build: h0ea2cb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 - md5: 9a17230f95733c04dc40a2b1e5491d74 + size: 320624 + timestamp: 1725305934189 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: [] - size: 349143 - timestamp: 1714723445995 -- kind: conda - name: zstd - version: 1.5.6 - build: h915ae27_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 md5: 4cb2cd56f039b129bb0e491c1164167e depends: @@ -17460,29 +12309,7 @@ packages: purls: [] size: 498900 timestamp: 1714723303098 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: @@ -17493,3 +12320,16 @@ packages: purls: [] size: 405089 timestamp: 1714723101397 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 349143 + timestamp: 1714723445995 diff --git a/pyproject.toml b/pyproject.toml index 4c693fb387..2846a7801a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ classifiers = [ requires-python = ">=3.11" dependencies = [ "astor", - "dags", + #"dags", "ipywidgets", "networkx", "numpy", @@ -44,6 +44,7 @@ dependencies = [ "pandas", "openpyxl", "plotly", + "optree", "pygments", "pygraphviz", "pytest", @@ -96,22 +97,25 @@ platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] # -------------------------------------------------------------------------------------- [tool.pixi.dependencies] -python = ">=3.11" +python = ">=3.11,<3.13" pre-commit = "*" pandas = ">=2.1" numpy_groupies = "*" numpydoc = "*" openpyxl = "*" astor = "*" -dags = "*" ipywidgets = "*" jupyterlab = "*" -networkx = "*" +networkx = "*" # Remove once dags is a proper dependency plotly = ">=5.24,<6" +optree = "*" pygments = "*" pygraphviz = "*" pyyaml = "*" toml = "*" +pytest = "*" +pytest-cov = "*" +pytest-xdist = "*" # Development Dependencies (pypi) @@ -119,13 +123,18 @@ toml = "*" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -kaleido = "*" pdbp = "*" +dags = {git = "https://github.com/OpenSourceEconomics/dags"} +flatten_dict = "*" + + +[tool.pixi.target.unix.pypi-dependencies] +kaleido = "*" [tool.pixi.target.win-64.pypi-dependencies] kaleido = ">=0.1.0.post1,<=0.1.0.post1" -# Features and Tasks +# Features # -------------------------------------------------------------------------------------- [tool.pixi.feature.py311.dependencies] @@ -142,10 +151,11 @@ jaxlib = ">=0.4.20" jax = { version = ">=0.4.20", extras = ["cpu"] } jaxlib = ">=0.4.20" -[tool.pixi.feature.test.dependencies] -pytest = "*" -pytest-cov = "*" -pytest-xdist = "*" +# Tasks +# -------------------------------------------------------------------------------------- + +[tool.pixi.feature.test.tasks] +tests = "pytest" # Environments # -------------------------------------------------------------------------------------- @@ -296,6 +306,7 @@ ignore = [ # ====================================================================================== [tool.pytest.ini_options] +addopts = ["--pdbcls=pdbp:Pdb"] filterwarnings = [ "ignore:.*XMLParser*:DeprecationWarning", "ignore:.*'tree.iter()'*:PendingDeprecationWarning", @@ -316,7 +327,6 @@ testpaths = [ "src/_gettsim_tests", ] - # ====================================================================================== # yamlfix configuration # ====================================================================================== diff --git a/src/_gettsim/aggregation.py b/src/_gettsim/aggregation.py index 4d55da88a4..9fb4925a6d 100644 --- a/src/_gettsim/aggregation.py +++ b/src/_gettsim/aggregation.py @@ -1,3 +1,5 @@ +from dataclasses import dataclass + from _gettsim.aggregation_jax import all_by_p_id as all_by_p_id_jax from _gettsim.aggregation_jax import any_by_p_id as any_by_p_id_jax from _gettsim.aggregation_jax import count_by_p_id as count_by_p_id_jax @@ -29,6 +31,27 @@ from _gettsim.config import USE_JAX +@dataclass +class AggregateByGroupSpec: + """ + A container for aggregate by group specifications. + """ + + aggr: str + source_col: str | None = None + + +@dataclass +class AggregateByPIDSpec: + """ + A container for aggregate by p_id specifications. + """ + + p_id_to_aggregate_by: str + source_col: str + aggr: str + + def grouped_count(group_id): if USE_JAX: return grouped_count_jax(group_id) diff --git a/src/_gettsim/combine_functions_in_tree.py b/src/_gettsim/combine_functions_in_tree.py new file mode 100644 index 0000000000..c3df12e330 --- /dev/null +++ b/src/_gettsim/combine_functions_in_tree.py @@ -0,0 +1,682 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Literal + +import flatten_dict +import optree + +from _gettsim.aggregation import ( + AggregateByGroupSpec, + AggregateByPIDSpec, + all_by_p_id, + any_by_p_id, + count_by_p_id, + grouped_all, + grouped_any, + grouped_count, + grouped_max, + grouped_mean, + grouped_min, + grouped_sum, + max_by_p_id, + mean_by_p_id, + min_by_p_id, + sum_by_p_id, +) +from _gettsim.config import ( + QUALIFIED_NAME_SEPARATOR, + SUPPORTED_GROUPINGS, + TYPES_INPUT_VARIABLES, +) +from _gettsim.functions.derived_function import DerivedFunction +from _gettsim.groupings import create_groupings +from _gettsim.shared import ( + format_errors_and_warnings, + format_list_linewise, + get_names_of_arguments_without_defaults, + partition_tree_by_reference_tree, + remove_group_suffix, + rename_arguments_and_add_annotations, + upsert_path_and_value, + upsert_tree, +) +from _gettsim.time_conversion import create_time_conversion_functions + +if TYPE_CHECKING: + from _gettsim.gettsim_typing import ( + NestedAggregationSpecDict, + NestedDataDict, + NestedFunctionDict, + NestedTargetDict, + ) + from _gettsim.policy_environment import PolicyEnvironment + + +def combine_policy_functions_and_derived_functions( + environment: PolicyEnvironment, + targets_tree: NestedTargetDict, + data_tree: NestedDataDict, +) -> NestedFunctionDict: + """Create the functions tree including derived functions. + + Create the functions tree by vectorizing all functions, and adding time conversion + functions, aggregation functions, and combinations of these. + + Check that all targets have a corresponding function in the functions tree or can be + taken from the data. + + Parameters + ---------- + environment + The environment containing the functions tree and the specs for aggregation. + targets_tree + The targets which should be computed. They limit the DAG in the way that only + ancestors of these nodes need to be considered. + data_tree + Names of columns in the input data. + + Returns + ------- + The functions tree including derived functions. + + """ + # Create parent-child relationships + aggregate_by_p_id_functions = _create_aggregation_functions( + functions_tree=environment.functions_tree, + aggregations_tree=environment.aggregation_specs_tree, + aggregation_type="p_id", + ) + current_functions_tree = upsert_tree( + base=environment.functions_tree, + to_upsert=aggregate_by_p_id_functions, + ) + + # Create functions for different time units + time_conversion_functions = create_time_conversion_functions( + functions_tree=current_functions_tree, + data_tree=data_tree, + ) + current_functions_tree = upsert_tree( + base=current_functions_tree, + to_upsert=time_conversion_functions, + ) + + # Create aggregation functions + aggregate_by_group_functions = _create_aggregate_by_group_functions( + functions_tree=current_functions_tree, + targets_tree=targets_tree, + data_tree=data_tree, + aggregations_tree_provided_by_env=environment.aggregation_specs_tree, + ) + current_functions_tree = upsert_tree( + base=current_functions_tree, + to_upsert=aggregate_by_group_functions, + ) + + # Create groupings + groupings = create_groupings() + current_functions_tree = upsert_tree( + base=current_functions_tree, + to_upsert=groupings, + ) + + _fail_if_targets_not_in_functions_tree(current_functions_tree, targets_tree) + + return current_functions_tree + + +def _create_aggregate_by_group_functions( + functions_tree: NestedFunctionDict, + targets_tree: NestedTargetDict, + data_tree: NestedDataDict, + aggregations_tree_provided_by_env: dict[str, Any], +) -> dict[str, DerivedFunction]: + """Create aggregation functions.""" + + # Add automated aggregation specs to aggregations tree + automatically_created_aggregations_tree = _create_derived_aggregations_tree( + functions_tree=functions_tree, + target_tree=targets_tree, + data_tree=data_tree, + ) + + # Add automated aggregation specs to aggregations tree + full_aggregations_tree = upsert_tree( + base=automatically_created_aggregations_tree, + to_upsert=aggregations_tree_provided_by_env, + ) + + return _create_aggregation_functions( + functions_tree=functions_tree, + aggregations_tree=full_aggregations_tree, + aggregation_type="group", + ) + + +def _create_aggregation_functions( + functions_tree: NestedFunctionDict, + aggregations_tree: NestedAggregationSpecDict, + aggregation_type: Literal["group", "p_id"], +) -> NestedFunctionDict: + """Create aggregation functions.""" + + out_tree = {} + + _all_paths, _all_aggregation_specs = optree.tree_flatten_with_path( + aggregations_tree + )[:2] + + expected_aggregation_spec_type = ( + AggregateByGroupSpec if aggregation_type == "group" else AggregateByPIDSpec + ) + + for tree_path, aggregation_spec in zip(_all_paths, _all_aggregation_specs): + # Skip if aggregation spec is not the current aggregation type + if not isinstance(aggregation_spec, expected_aggregation_spec_type): + continue + + annotations = _annotations_for_aggregation( + aggregation_method=aggregation_spec.aggr, + source_col=aggregation_spec.source_col, + namespace=tree_path[:-1], + functions_tree=functions_tree, + types_input_variables=TYPES_INPUT_VARIABLES, + ) + + if aggregation_type == "group": + derived_func = _create_one_aggregate_by_group_func( + aggregation_target=tree_path[-1], + aggregation_method=aggregation_spec.aggr, + source_col=aggregation_spec.source_col, + annotations=annotations, + ) + else: + p_id_to_aggregate_by = aggregation_spec.p_id_to_aggregate_by + derived_func = _create_one_aggregate_by_p_id_func( + aggregation_target=tree_path[-1], + p_id_to_aggregate_by=p_id_to_aggregate_by, + source_col=aggregation_spec.source_col, + aggregation_method=aggregation_spec.aggr, + annotations=annotations, + ) + + out_tree = upsert_path_and_value( + base=out_tree, + path_to_upsert=tree_path, + value_to_upsert=derived_func, + ) + + return out_tree + + +def _create_derived_aggregations_tree( + functions_tree: NestedFunctionDict, + target_tree: NestedTargetDict, + data_tree: NestedDataDict, +) -> NestedAggregationSpecDict: + """Create automatic aggregation specs. + + Aggregation specifications are created automatically for summation aggregations. + + Parameters + ---------- + functions_tree + The functions tree. + target_tree + The target tree. + data_tree + The data tree. + + Returns + ------- + The aggregation specifications derived from the functions and data tree. + + Example + ------- + If + - `func_hh` is an argument of the functions in `functions_tree`, or a target + - and not represented by a function in `functions_tree` or a data column in + the input data + then an automatic aggregation specification is created for the sum aggregation of + `func` by household. + """ + # Create tree of potential aggregation function names + potential_aggregation_function_names = upsert_tree( + base=target_tree, + to_upsert=_get_potential_aggregation_function_names_from_function_arguments( + functions_tree + ), + ) + + # Create source tree for aggregations. Source can be any already existing function + # or data column. + aggregation_source_tree = upsert_tree( + base=functions_tree, + to_upsert=data_tree, + ) + + # Create aggregation specs. + derived_aggregations_tree = {} + for tree_path in optree.tree_paths( + potential_aggregation_function_names, none_is_leaf=True + ): + leaf_name = tree_path[-1] + + # Don't create aggregation functions for unsupported groupings or functions that + # already exist in the source tree. + aggregation_specs_needed = any( + leaf_name.endswith(f"_{g}") for g in SUPPORTED_GROUPINGS + ) and tree_path not in optree.tree_paths(aggregation_source_tree) + + if aggregation_specs_needed: + derived_aggregations_tree = upsert_path_and_value( + base=derived_aggregations_tree, + path_to_upsert=tree_path, + value_to_upsert=AggregateByGroupSpec( + aggr="sum", + source_col=remove_group_suffix(leaf_name), + ), + ) + else: + continue + + return derived_aggregations_tree + + +def _get_potential_aggregation_function_names_from_function_arguments( + functions_tree: NestedFunctionDict, +) -> dict[str, Any]: + """Get potential aggregation function names from function arguments. + + Note: Function accounts for namespaced function arguments, i.e. function arguments + that are specified via their qualified instead of their simple name. + + Parameters + ---------- + functions_tree + Dictionary containing functions to build the DAG. + + Returns + ------- + Dictionary containing potential aggregation targets. + """ + current_tree = {} + paths_of_functions_tree, flat_functions_tree = ( + optree.tree_flatten_with_path(functions_tree) + )[:2] + for func, tree_path in zip(flat_functions_tree, paths_of_functions_tree): + for name in get_names_of_arguments_without_defaults(func): + path_of_function_argument = _get_tree_path_from_source_col_name( + name=name, + namespace=tree_path[:-1], + ) + current_tree = upsert_path_and_value( + base=current_tree, + path_to_upsert=path_of_function_argument, + ) + return current_tree + + +def _annotations_for_aggregation( + aggregation_method: str, + source_col: str, + namespace: tuple[str], + functions_tree: NestedFunctionDict, + types_input_variables: dict[str, Any], +) -> dict[str, Any]: + """Create annotations for derived aggregation functions.""" + annotations = {} + + path_to_source_col = _get_tree_path_from_source_col_name( + name=source_col, + namespace=namespace, + ) + flat_functions = flatten_dict.flatten(functions_tree) + flat_types_input_variables = flatten_dict.flatten(types_input_variables) + + if aggregation_method == "count": + annotations["return"] = int + elif path_to_source_col in flat_functions: + # Source col is a function in the functions tree + source_function = flat_functions[path_to_source_col] + if "return" in source_function.__annotations__: + annotations[source_col] = source_function.__annotations__["return"] + annotations["return"] = _select_return_type( + aggregation_method, annotations[source_col] + ) + else: + # TODO(@hmgaudecker): Think about how type annotations of aggregations + # of user-provided input variables are handled + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + pass + elif path_to_source_col in flat_types_input_variables: + # Source col is a basic input variable + annotations[source_col] = flat_types_input_variables[path_to_source_col] + annotations["return"] = _select_return_type( + aggregation_method, annotations[source_col] + ) + else: + # TODO(@hmgaudecker): Think about how type annotations of aggregations of + # user-provided input variables are handled + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + pass + return annotations + + +def _select_return_type(aggregation_method: str, source_col_type: type) -> type: + # Find out return type + if (source_col_type == int) and (aggregation_method in ["any", "all"]): + return_type = bool + elif (source_col_type == bool) and (aggregation_method in ["sum"]): + return_type = int + else: + return_type = source_col_type + + return return_type + + +def _create_one_aggregate_by_group_func( # noqa: PLR0912 + aggregation_target: str, + aggregation_method: str, + source_col: str, + annotations: dict[str, Any], +) -> DerivedFunction: + """Create an aggregation function based on aggregation specification. + + Parameters + ---------- + aggregation_target + Name of the aggregation target. + aggregation_method + The aggregation method. + source_col + The source column. + annotations + The annotations for the derived function. + + Returns + ------- + The derived function. + + """ + # Identify grouping level + group_id = None + for g in SUPPORTED_GROUPINGS: + if aggregation_target.endswith(f"_{g}"): + group_id = f"groupings__{g}_id" + if not group_id: + msg = format_errors_and_warnings( + "Name of aggregated column needs to have a suffix " + "indicating the group over which it is aggregated. " + f"The name {aggregation_target} does not do so." + ) + raise ValueError(msg) + + if aggregation_method == "count": + + @rename_arguments_and_add_annotations( + mapper={"group_id": group_id}, annotations=annotations + ) + def aggregate_by_group_func(group_id): + return grouped_count(group_id) + + else: + mapper = { + "source_col": source_col, + "group_id": group_id, + } + if aggregation_method == "sum": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_sum(source_col, group_id) + + elif aggregation_method == "mean": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_mean(source_col, group_id) + + elif aggregation_method == "max": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_max(source_col, group_id) + + elif aggregation_method == "min": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_min(source_col, group_id) + + elif aggregation_method == "any": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_any(source_col, group_id) + + elif aggregation_method == "all": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_group_func(source_col, group_id): + return grouped_all(source_col, group_id) + + else: + msg = format_errors_and_warnings( + f"Aggregation method {aggregation_method} is not implemented." + ) + raise ValueError(msg) + + if aggregation_method == "count": + derived_from = group_id + else: + derived_from = (source_col, group_id) + + return DerivedFunction( + function=aggregate_by_group_func, + leaf_name=aggregation_target, + derived_from=derived_from, + ) + + +def _create_one_aggregate_by_p_id_func( + aggregation_target: str, + p_id_to_aggregate_by: str, + source_col: str, + aggregation_method: str, + annotations: dict[str, Any], +) -> DerivedFunction: + """Create one function that links variables across persons. + + Parameters + ---------- + aggregation_target + Name of the aggregation target. + p_id_to_aggregate_by + The column to aggregate by. + source_col + The source column. + aggregation_method + The aggregation method. + annotations + The annotations for the derived function. + + Returns + ------- + The derived function. + + """ + # Define aggregation func + if aggregation_method == "count": + + @rename_arguments_and_add_annotations( + mapper={ + "p_id_to_aggregate_by": p_id_to_aggregate_by, + "p_id_to_store_by": "groupings__p_id", + }, + annotations=annotations, + ) + def aggregate_by_p_id_func(p_id_to_aggregate_by, p_id_to_store_by): + return count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) + + else: + mapper = { + "p_id_to_aggregate_by": p_id_to_aggregate_by, + "p_id_to_store_by": "groupings__p_id", + "column": source_col, + } + + if aggregation_method == "sum": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "mean": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "max": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "min": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "any": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "all": + + @rename_arguments_and_add_annotations( + mapper=mapper, + annotations=annotations, + ) + def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + else: + msg = format_errors_and_warnings( + f"Aggregation method {aggregation_method} is not implemented." + ) + raise ValueError(msg) + + if aggregation_method == "count": + derived_from = p_id_to_aggregate_by + else: + derived_from = (source_col, p_id_to_aggregate_by) + + return DerivedFunction( + function=aggregate_by_p_id_func, + leaf_name=aggregation_target, + derived_from=derived_from, + ) + + +def _get_tree_path_from_source_col_name( + name: str, + namespace: tuple[str], +) -> tuple[str]: + """Get the tree path of a source column name that may be qualified or simple. + + This function returns the tree path of a source column name that may be a qualified + or simple name. If the name is qualified, the path implied by the name is returned. + Else, the current path plus the simple name is returned. + + Parameters + ---------- + name + The qualified or simple name. + namespace + The namespace where 'name' is located. + + Returns + ------- + The path of 'name' in the tree. + """ + if QUALIFIED_NAME_SEPARATOR in name: + # 'name' is already namespaced. + new_tree_path = name.split(QUALIFIED_NAME_SEPARATOR) + else: + # 'name' is not namespaced. + new_tree_path = [*namespace, name] + + return tuple(new_tree_path) + + +def _fail_if_targets_not_in_functions_tree( + functions_tree: NestedFunctionDict, targets_tree: NestedTargetDict +) -> None: + """Fail if some target is not among functions. + + Parameters + ---------- + functions_tree + Dictionary containing functions to build the DAG. + targets_tree + The targets which should be computed. They limit the DAG in the way that only + ancestors of these nodes need to be considered. + + Raises + ------ + ValueError + Raised if any member of `targets` is not among functions. + + """ + targets_not_in_functions_tree = partition_tree_by_reference_tree( + tree_to_partition=targets_tree, + reference_tree=functions_tree, + )[1] + names_of_targets_not_in_functions = [ + ".".join(path) + for path in optree.tree_paths(targets_not_in_functions_tree, none_is_leaf=True) + ] + if names_of_targets_not_in_functions: + formatted = format_list_linewise(names_of_targets_not_in_functions) + msg = format_errors_and_warnings( + f"The following targets have no corresponding function:\n{formatted}" + ) + raise ValueError(msg) diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index f63493476c..ad08013372 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -36,6 +36,8 @@ def set_array_backend(backend: str): GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS = 20 GEP_01_CHARACTER_LIMIT_OTHER_COLUMNS = 32 +QUALIFIED_NAME_SEPARATOR = "__" + # List of paths to internal functions. # If a path is a directory, all Python files are recursively collected from that folder. PATHS_TO_INTERNAL_FUNCTIONS = [ @@ -127,115 +129,127 @@ def set_array_backend(backend: str): }, } -DEFAULT_TARGETS = [ - "eink_st_y_sn", - "soli_st_y_sn", - "abgelt_st_y_sn", - "elterngeld_m", - "sozialv_beitr_arbeitnehmer_m", - "ges_rentenv_beitr_arbeitnehmer_m", - "arbeitsl_v_beitr_arbeitnehmer_m", - "ges_krankenv_beitr_arbeitnehmer_m", - "ges_pflegev_beitr_arbeitnehmer_m", - "arbeitsl_geld_m", - "kindergeld_m", - "arbeitsl_geld_2_m_bg", - "kinderzuschl_m_bg", - "wohngeld_m_wthh", - "unterhaltsvors_m", - "grunds_im_alter_m_eg", - "ges_rente_m", - "erwerbsm_rente_m", -] +DEFAULT_TARGETS = { + "taxes": { + "eink_st": {"eink_st_y_sn": None}, + "soli_st": {"soli_st_y_sn": None}, + "abgelt_st": {"abgelt_st_y_sn": None}, + }, + "transfers": { + "elterngeld": {"elterngeld_m": None}, + "arbeitsl_geld": {"arbeitsl_geld_m": None}, + "kindergeld": {"kindergeld_m": None}, + "arbeitsl_geld_2": {"arbeitsl_geld_2_m_bg": None}, + "kinderzuschl": {"kinderzuschl_m_bg": None}, + "wohngeld": {"wohngeld_m_wthh": None}, + "unterhaltsvors": {"unterhaltsvors_m": None}, + "grunds_im_alter": {"grunds_im_alter_m_eg": None}, + "rente": {"ges_rente_m": None}, + "erwerbsm_rente": {"erwerbsm_rente_m": None}, + }, + "social_insurance_contributions": { + "arbeitsl_v": { + "sozialv_beitr_arbeitnehmer_m": None, + "arbeitsl_v_beitr_arbeitnehmer_m": None, + }, + "ges_rentenv": {"ges_rentenv_beitr_arbeitnehmer_m": None}, + "ges_krankenv": {"ges_krankenv_beitr_arbeitnehmer_m": None}, + "ges_pflegev": {"ges_pflegev_beitr_arbeitnehmer_m": None}, + }, +} TYPES_INPUT_VARIABLES = { - "hh_id": int, - "p_id": int, - "p_id_elternteil_1": int, - "p_id_elternteil_2": int, - "p_id_kindergeld_empf": int, - "p_id_erziehgeld_empf": int, - "p_id_ehepartner": int, - "p_id_einstandspartner": int, - "vermögen_bedürft": float, - "eigenbedarf_gedeckt": bool, - # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once - # Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - "gemeinsam_veranlagt": bool, - "bruttolohn_m": float, - "alter": int, - "weiblich": bool, - "selbstständig": bool, - "wohnort_ost": bool, - "ges_pflegev_hat_kinder": bool, - "eink_selbst_m": float, - "in_priv_krankenv": bool, - "priv_rentenv_beitr_m": float, - "elterngeld_nettoeinkommen_vorjahr_m": float, - "elterngeld_zu_verst_eink_vorjahr_y_sn": float, - "bruttolohn_vorj_m": float, - "arbeitsstunden_w": float, - "geburtsjahr": int, - "geburtstag": int, - "geburtsmonat": int, - "mietstufe": int, - "entgeltp_ost": float, - "entgeltp_west": float, - "kind": bool, - "rentner": bool, - "betreuungskost_m": float, - "p_id_betreuungsk_träger": int, - "kapitaleink_brutto_m": float, - "eink_vermietung_m": float, - "bruttokaltmiete_m_hh": float, - "heizkosten_m_hh": float, - "jahr_renteneintr": int, - "monat_renteneintr": int, - "behinderungsgrad": int, - "wohnfläche_hh": float, - "monate_elterngeldbezug": int, - "elterngeld_claimed": bool, - "in_ausbildung": bool, - "alleinerz": bool, - "bewohnt_eigentum_hh": bool, - "immobilie_baujahr_hh": int, - "sonstig_eink_m": float, - "grundr_entgeltp": float, - "grundr_zeiten": int, - "grundr_bew_zeiten": int, - "priv_rente_m": float, - "schwerbeh_g": bool, - "m_pflichtbeitrag": float, - "m_freiw_beitrag": float, - "m_mutterschutz": float, - "m_arbeitsunfähig": float, - "m_krank_ab_16_bis_24": float, - "m_arbeitsl": float, - "m_ausbild_suche": float, - "m_schul_ausbild": float, - "m_geringf_beschäft": float, - "m_alg1_übergang": float, - "m_ersatzzeit": float, - "m_kind_berücks_zeit": float, - "m_pfleg_berücks_zeit": float, - "y_pflichtbeitr_ab_40": float, - "pflichtbeitr_8_in_10": bool, - "arbeitsl_1y_past_585": bool, - "vertra_arbeitsl_1997": bool, - "vertra_arbeitsl_2006": bool, - "höchster_bruttolohn_letzte_15_jahre_vor_rente_y": float, - "anwartschaftszeit": bool, - "arbeitssuchend": bool, - "m_durchg_alg1_bezug": float, - "sozialv_pflicht_5j": float, - "bürgerg_bezug_vorj": bool, - "kind_unterh_anspr_m": float, - "kind_unterh_erhalt_m": float, - "steuerklasse": int, - "budgetsatz_erzieh": bool, - "voll_erwerbsgemind": bool, - "teilw_erwerbsgemind": bool, + "groupings": { + "p_id": int, + "hh_id": int, + "p_id_elternteil_1": int, + "p_id_elternteil_2": int, + "p_id_kindergeld_empf": int, + "p_id_erziehgeld_empf": int, + "p_id_ehepartner": int, + "p_id_einstandspartner": int, + "p_id_betreuungsk_träger": int, + }, + "basic_inputs": { + "vermögen_bedürft": float, + "eigenbedarf_gedeckt": bool, + # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once + # Bedarfsgemeinschaften are fully endogenous + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + "gemeinsam_veranlagt": bool, + "bruttolohn_m": float, + "alter": int, + "weiblich": bool, + "selbstständig": bool, + "wohnort_ost": bool, + "ges_pflegev_hat_kinder": bool, + "eink_selbst_m": float, + "in_priv_krankenv": bool, + "priv_rentenv_beitr_m": float, + "elterngeld_nettoeinkommen_vorjahr_m": float, + "elterngeld_zu_verst_eink_vorjahr_y_sn": float, + "bruttolohn_vorj_m": float, + "arbeitsstunden_w": float, + "geburtsjahr": int, + "geburtstag": int, + "geburtsmonat": int, + "mietstufe": int, + "entgeltp_ost": float, + "entgeltp_west": float, + "kind": bool, + "rentner": bool, + "betreuungskost_m": float, + "kapitaleink_brutto_m": float, + "eink_vermietung_m": float, + "bruttokaltmiete_m_hh": float, + "heizkosten_m_hh": float, + "jahr_renteneintr": int, + "monat_renteneintr": int, + "behinderungsgrad": int, + "wohnfläche_hh": float, + "monate_elterngeldbezug": int, + "elterngeld_claimed": bool, + "in_ausbildung": bool, + "alleinerz": bool, + "bewohnt_eigentum_hh": bool, + "immobilie_baujahr_hh": int, + "sonstig_eink_m": float, + "grundr_entgeltp": float, + "grundr_zeiten": int, + "grundr_bew_zeiten": int, + "priv_rente_m": float, + "schwerbeh_g": bool, + "m_pflichtbeitrag": float, + "m_freiw_beitrag": float, + "m_mutterschutz": float, + "m_arbeitsunfähig": float, + "m_krank_ab_16_bis_24": float, + "m_arbeitsl": float, + "m_ausbild_suche": float, + "m_schul_ausbild": float, + "m_geringf_beschäft": float, + "m_alg1_übergang": float, + "m_ersatzzeit": float, + "m_kind_berücks_zeit": float, + "m_pfleg_berücks_zeit": float, + "y_pflichtbeitr_ab_40": float, + "pflichtbeitr_8_in_10": bool, + "arbeitsl_1y_past_585": bool, + "vertra_arbeitsl_1997": bool, + "vertra_arbeitsl_2006": bool, + "höchster_bruttolohn_letzte_15_jahre_vor_rente_y": float, + "anwartschaftszeit": bool, + "arbeitssuchend": bool, + "m_durchg_alg1_bezug": float, + "sozialv_pflicht_5j": float, + "bürgerg_bezug_vorj": bool, + "kind_unterh_anspr_m": float, + "kind_unterh_erhalt_m": float, + "steuerklasse": int, + "budgetsatz_erzieh": bool, + "voll_erwerbsgemind": bool, + "teilw_erwerbsgemind": bool, + }, } FOREIGN_KEYS = [ diff --git a/src/_gettsim/functions/derived_function.py b/src/_gettsim/functions/derived_function.py index 120c0e3eca..6e6480c674 100644 --- a/src/_gettsim/functions/derived_function.py +++ b/src/_gettsim/functions/derived_function.py @@ -10,15 +10,15 @@ class DerivedFunction(PolicyFunction): """ - A function that is derived from other functions. + A function that is derived from another via aggregation, time conversion, etc. Parameters ---------- function: - The function to wrap. Argument values of the `@policy_info` are reused unless - explicitly overwritten. - function_name: - The name of the function in the DAG + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + leaf_name: + The leaf name of the function in the functions tree. derived_from: The function from which the new function is derived. If the function is derived from a data column, this should be the column name. @@ -26,19 +26,14 @@ class DerivedFunction(PolicyFunction): def __init__( self, - function: Callable, - function_name: str, *, + function: Callable, + leaf_name: str, derived_from: PolicyFunction | str | tuple[str, str], ): super().__init__( - function, - module_name=( - derived_from.module_name - if isinstance(derived_from, PolicyFunction) - else "" - ), - function_name=function_name, + function=function, + leaf_name=leaf_name, start_date=( derived_from.start_date if isinstance(derived_from, PolicyFunction) diff --git a/src/_gettsim/functions/loader.py b/src/_gettsim/functions/loader.py index 09136005ca..06b842a0eb 100644 --- a/src/_gettsim/functions/loader.py +++ b/src/_gettsim/functions/loader.py @@ -1,20 +1,28 @@ import datetime import importlib.util import inspect +import itertools import sys -from collections.abc import Callable from pathlib import Path from types import ModuleType -from typing import Literal, TypeAlias -from _gettsim.config import PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from _gettsim.config import ( + PATHS_TO_INTERNAL_FUNCTIONS, + RESOURCE_DIR, +) +from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.gettsim_typing import NestedAggregationSpecDict, NestedFunctionDict +from _gettsim.shared import upsert_path_and_value -from .policy_function import PolicyFunction - -def load_functions_for_date(date: datetime.date) -> list[PolicyFunction]: +def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: """ - Load policy functions that are active at a specific date. + Load the functions tree for a given date. + + This function takes the list of root paths and searches for all modules containing + PolicyFunctions. Then it loads all PolicyFunctions that are active at the given date + and parses them into the functions tree. Parameters ---------- @@ -23,59 +31,131 @@ def load_functions_for_date(date: datetime.date) -> list[PolicyFunction]: Returns ------- - functions: - The policy functions that are active at the given date. + A tree of active PolicyFunctions. """ - return [f for f in _load_internal_functions() if f.is_active_at_date(date)] + paths_to_policy_functions = _find_python_files_recursively( + PATHS_TO_INTERNAL_FUNCTIONS + ) + functions_tree = {} -def _load_internal_functions() -> list[PolicyFunction]: - """ - Load all internal policy functions. + for path in paths_to_policy_functions: + active_functions_dict = get_active_policy_functions_from_module( + path=path, date=date, package_root=RESOURCE_DIR + ) - Returns - ------- - functions: - All internal policy functions. - """ - return _load_functions(PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR) + tree_path = _convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR) + + functions_tree = upsert_path_and_value( + base=functions_tree, + path_to_upsert=tree_path, + value_to_upsert=active_functions_dict, + ) + + return functions_tree -def _load_functions( - roots: Path | list[Path], +def get_active_policy_functions_from_module( + path: Path, package_root: Path, - include_imported_functions=False, -) -> list[PolicyFunction]: - """ - Load policy functions reachable from the given roots. + date: datetime.date, +) -> dict[str, PolicyFunction]: + """Extract all active PolicyFunctions from a module. Parameters ---------- - roots: - The roots from which to start the search for policy functions. - package_root: - The root of the package that contains the functions. This is required to assign - qualified names to the functions. It must contain all roots. - include_imported_functions: - Whether to load functions that are imported into the modules passed via - sources. + path + The path to the module from which to extract the active functions. + package_root + The root of the package that contains the functions. + date + The date for which to extract the active functions. Returns ------- - functions: - Loaded policy functions. + A dictionary of active PolicyFunctions with their leaf names as keys. """ - roots = roots if isinstance(roots, list) else [roots] - paths = _find_python_files_recursively(roots) + module = _load_module(path, package_root) + module_name = _convert_path_to_importable_module_name(path, package_root) - result = [] + all_functions_in_module = inspect.getmembers(module) - for path in paths: - result.extend( - _load_functions_in_module(path, package_root, include_imported_functions) - ) + policy_functions = [ + func for _, func in all_functions_in_module if isinstance(func, PolicyFunction) + ] - return result + _fail_if_multiple_policy_functions_are_active_at_the_same_time( + policy_functions, module_name + ) + + return {func.leaf_name: func for func in policy_functions if func.is_active(date)} + + +def _fail_if_multiple_policy_functions_are_active_at_the_same_time( + policy_functions: list[PolicyFunction], + module_name: str, +) -> None: + """Raises an ConflictingTimeDependentFunctionsError if multiple functions with the + same leaf name are active at the same time. + + Parameters + ---------- + policy_functions + List of PolicyFunctions to check for conflicts. + module_name + The name of the module from which the PolicyFunctions are extracted. + + Raises + ------ + ConflictingTimeDependentFunctionsError + If multiple functions with the same name are active at the same time. + """ + # Create mapping from leaf names to functions. + leaf_names_to_funcs = {} + for func in policy_functions: + if func.leaf_name in leaf_names_to_funcs: + leaf_names_to_funcs[func.leaf_name].append(func) + else: + leaf_names_to_funcs[func.leaf_name] = [func] + + # Check for overlapping start and end dates for time-dependent functions. + for leaf_name, funcs in leaf_names_to_funcs.items(): + dates_active = [(f.start_date, f.end_date) for f in funcs] + for (start1, end1), (start2, end2) in itertools.combinations(dates_active, 2): + if start1 <= end2 and start2 <= end1: + raise ConflictingTimeDependentFunctionsError( + affected_policy_functions=funcs, + leaf_name=leaf_name, + module_name=module_name, + overlap_start=max(start1, start2), + overlap_end=min(end1, end2), + ) + + +class ConflictingTimeDependentFunctionsError(Exception): + def __init__( + self, + affected_policy_functions: list[PolicyFunction], + leaf_name: str, + module_name: str, + overlap_start: datetime.date, + overlap_end: datetime.date, + ): + self.affected_policy_functions = affected_policy_functions + self.leaf_name = leaf_name + self.module_name = module_name + self.overlap_start = overlap_start + self.overlap_end = overlap_end + + def __str__(self): + overlapping_functions = [ + func.original_function_name for func in self.affected_policy_functions + ] + return f""" + Functions with leaf name {self.leaf_name} in module {self.module_name} have + overlapping start and end dates. The following functions are affected: \n\n + {", ".join(overlapping_functions)} \n Overlapping + from {self.overlap_start} to {self.overlap_end}.""" def _find_python_files_recursively(roots: list[Path]) -> list[Path]: @@ -89,14 +169,15 @@ def _find_python_files_recursively(roots: list[Path]) -> list[Path]: Returns ------- - absolute_paths: - Absolute paths to all discovered Python files. + Absolute paths to all discovered Python files. """ result = [] for root in roots: if root.is_dir(): - modules = list(root.rglob("*.py")) + modules = [ + file for file in root.rglob("*.py") if file.name != "__init__.py" + ] result.extend(modules) else: @@ -105,41 +186,8 @@ def _find_python_files_recursively(roots: list[Path]) -> list[Path]: return result -def _load_functions_in_module( - path: Path, - package_root: Path, - include_imported_functions: bool, -) -> list[PolicyFunction]: - """ - Load policy functions defined in a module. - - Parameters - ---------- - path: - The path to the module in which to search for policy functions. - include_imported_functions: - Whether to load functions that are imported into the modules passed via - sources. - - Returns - ------- - functions: - Loaded policy functions. - """ - module = _load_module(path, package_root) - - result = [ - _create_policy_function_from_decorated_callable(function, module.__name__) - for name, function in inspect.getmembers(module, inspect.isfunction) - if include_imported_functions - or _is_function_defined_in_module(function, module) - ] - - return result - - def _load_module(path: Path, package_root: Path) -> ModuleType: - module_name = _convert_path_to_module_name(path, package_root) + module_name = _convert_path_to_importable_module_name(path, package_root) spec = importlib.util.spec_from_file_location(module_name, path) module = importlib.util.module_from_spec(spec) sys.modules[module_name] = module @@ -148,125 +196,155 @@ def _load_module(path: Path, package_root: Path) -> ModuleType: return module -def _convert_path_to_module_name(path: Path, package_root: Path) -> str: +def _convert_path_to_importable_module_name(path: Path, package_root: Path) -> str: """ Convert an absolute path to a Python module name. Examples -------- - >>> _convert_path_to_module_name(RESOURCE_DIR / "taxes" / "functions.py") + >>> _convert_path_to_importable_module_name( + path=Path("/usr/gettsim/src/_gettsim/taxes/functions.py"), + package_root=Path("/usr/gettsim/src/_gettsim"), + ) "taxes.functions" """ - return ( - path.relative_to(package_root.parent) - .with_suffix("") - .as_posix() - .replace("/", ".") - ) + return path.relative_to(package_root).with_suffix("").as_posix().replace("/", ".") -def _create_policy_function_from_decorated_callable( - function: Callable, - module_name: str, -) -> PolicyFunction: +def _convert_path_to_tree_path(path: Path, package_root: Path) -> tuple[str, ...]: """ - Create a policy function from a callable with a `@policy_info` decorator. + Convert a system path to a tree path. + + The system path is the path to the python module on the user's system. The tree path + are the branches of the tree. Parameters ---------- - function: - The callable to wrap. - module_name: - The name of the module in which the callable is defined. + path: + The path to the python module on the user's system. + package_root: + The root of the package that contains the functions. Returns ------- - policy_function: - The policy function. - """ + The tree path. - # Only needed until the directory structure is cleaned up - clean_module_name = ( - module_name.removeprefix("_gettsim.") - .removeprefix("taxes.") - .removeprefix("transfers.") - ) - - return PolicyFunction( - function=function, - module_name=clean_module_name, + Examples + -------- + >>> _convert_path_to_tree_path(RESOURCE_DIR / "taxes" / "dir" + / "functions.py") + ("dir", "functions") + """ + # TODO(@MImmesberger): Simplify after changing directory structure + # https://github.com/iza-institute-of-labor-economics/gettsim/pull/805 + # tree_path = path.relative_to(package_root.parent).parts[1:] # noqa: ERA001 + tree_path = tuple( + path.relative_to(package_root.parent) + .with_suffix("") + .as_posix() + .removeprefix("_gettsim/") + .removeprefix("taxes/") + .removeprefix("transfers/") + .split("/") ) + return _simplify_tree_path_when_module_name_equals_dir_name(tree_path) -def _is_function_defined_in_module(function: Callable, module: ModuleType) -> bool: - """Check if a function is defined in a specific module or only imported.""" - return function.__module__ == module.__name__ +def load_aggregation_specs_tree() -> NestedAggregationSpecDict: + """ + Load the tree with aggregation specifications. + This function loads the tree with aggregation specifications from the internal + functions by searching and loading all aggregation specifications from GETTSIM's + modules. -_AggregationVariant: TypeAlias = Literal["aggregate_by_group", "aggregate_by_p_id"] + Returns + ------- + The aggregation tree. + """ + paths_to_aggregation_specs = _find_python_files_recursively( + PATHS_TO_INTERNAL_FUNCTIONS + ) + aggregation_specs_tree = {} -def load_internal_aggregation_dict(variant: _AggregationVariant): - """ - Load a dictionary with all aggregations by group or person that are defined for - internal functions. - """ - return _load_aggregation_dict(PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR, variant) + for path in paths_to_aggregation_specs: + aggregation_specs = _load_aggregation_specs_from_module( + path=path, + package_root=RESOURCE_DIR, + ) + tree_path = _convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR) -def _load_aggregation_dict( - roots: list[Path], package_root: Path, variant: _AggregationVariant -): - """ - Load a dictionary with all aggregations by group or person reachable from the given - roots. - """ - roots = roots if isinstance(roots, list) else [roots] - paths = _find_python_files_recursively(roots) - - # Load dictionaries - dicts = [] - - for path in paths: - dicts.extend(_load_dicts_in_module(path, package_root, f"{variant}_")) - - # Check for duplicate keys - all_keys = [k for dict_ in dicts for k in dict_] - if len(all_keys) != len(set(all_keys)): - duplicate_keys = list({x for x in all_keys if all_keys.count(x) > 1}) - raise ValueError( - "The following column names are used more " - f"than once in the {variant} dictionaries: {duplicate_keys}" + aggregation_specs_tree = upsert_path_and_value( + base=aggregation_specs_tree, + path_to_upsert=tree_path, + value_to_upsert=aggregation_specs, ) - # Combine dictionaries - return {k: v for dict_ in dicts for k, v in dict_.items()} + return aggregation_specs_tree -def _load_dicts_in_module( +def _load_aggregation_specs_from_module( path: Path, package_root: Path, - prefix_filter: str, -) -> list[dict]: +) -> dict[str, AggregateByGroupSpec | AggregateByPIDSpec]: """ - Load dictionaries defined in a module. + Load aggregation specifications from one module. + + Returns a dictionary with the name of the aggregation target as keys and the + aggregation specifications as values. Parameters ---------- path: The path to the module in which to search for dictionaries. - prefix_filter: - The prefix that the names of the dictionaries must have. Returns ------- - dictionaries: - Loaded dictionaries. + Loaded dictionaries. """ + # TODO(@MImmesberger): Temporary solution. Dataclasses will be applied to all + # modules in the renaming PR. Then, 'aggregation_specs_in_module' will be a list of + # dictionaries. + # https://github.com/iza-institute-of-labor-economics/gettsim/pull/805 module = _load_module(path, package_root) - - return [ - member + aggregation_specs_in_module = { # Will become a list in renamings PR + name: member for name, member in inspect.getmembers(module) - if isinstance(member, dict) and name.startswith(prefix_filter) - ] + if isinstance(member, dict) + and name.startswith(("aggregate_by_group_", "aggregate_by_p_id_")) + } + + out = {} + + # Temporary solution. + for type_name, specs_for_type in aggregation_specs_in_module.items(): + for name, spec in specs_for_type.items(): + out[name] = ( + AggregateByGroupSpec(**spec) + if type_name.startswith("aggregate_by_group_") + else AggregateByPIDSpec(**spec) + ) + + return out + + +def _simplify_tree_path_when_module_name_equals_dir_name( + tree_path: tuple[str, ...], +) -> tuple[str, ...]: + """ + Shorten path when a module lives a directory named the same way. + + This is done to avoid namespaces like arbeitslosengeld__arbeitslosengeld if the + file structure looks like: + arbeitslosengeld + | |- arbeitslosengeld.py + | |- ... + """ + if len(tree_path) >= 2: + out = tree_path[:-1] if tree_path[-1] == tree_path[-2] else tree_path + else: + out = tree_path + + return out diff --git a/src/_gettsim/functions/policy_function.py b/src/_gettsim/functions/policy_function.py index 100b1315fe..7887710cd3 100644 --- a/src/_gettsim/functions/policy_function.py +++ b/src/_gettsim/functions/policy_function.py @@ -1,10 +1,11 @@ from __future__ import annotations +import datetime import functools import inspect +import re from collections.abc import Callable -from datetime import date -from typing import Any, TypeVar +from typing import TypeVar import numpy @@ -19,12 +20,10 @@ class PolicyFunction(Callable): Parameters ---------- function: - The function to wrap. Argument values of the `@policy_info` are reused unless - explicitly overwritten. - module_name: - The name of the module where the function is defined. - function_name: - The name of the function in the DAG + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + leaf_name: + The leaf name of the function in the functions tree. start_date: The date from which the function is active (inclusive). end_date: @@ -37,48 +36,22 @@ class PolicyFunction(Callable): def __init__( # noqa: PLR0913 self, - function: Callable, *, - module_name: str = "", - function_name: str | None = None, - start_date: date | None = None, - end_date: date | None = None, - params_key_for_rounding: str | None = None, - skip_vectorization: bool | None = None, + function: Callable, + leaf_name: str, + start_date: datetime.date, + end_date: datetime.date, + params_key_for_rounding: str | None, + skip_vectorization: bool | None, ): - info: dict[str, Any] = getattr(function, "__info__", {}) - - self.skip_vectorization: bool = _first_not_none( - skip_vectorization, info.get("skip_vectorization"), False - ) - + self.skip_vectorization: bool = skip_vectorization self.function = ( function if self.skip_vectorization else _vectorize_func(function) ) - self.module_name = module_name - - self.name_in_dag: str = _first_not_none( - function_name, - info.get("name_in_dag"), - function.__name__, - ) - - self.start_date: date = _first_not_none( - start_date, - info.get("start_date"), - date(1, 1, 1), - ) - - self.end_date: date = _first_not_none( - end_date, - info.get("end_date"), - date(9999, 12, 31), - ) - - self.params_key_for_rounding: str | None = _first_not_none_or_none( - params_key_for_rounding, - info.get("params_key_for_rounding"), - ) + self.leaf_name: str = leaf_name if leaf_name else function.__name__ + self.start_date: datetime.date = start_date + self.end_date: datetime.date = end_date + self.params_key_for_rounding: str | None = params_key_for_rounding # Expose the signature of the wrapped function for dependency resolution self.__annotations__ = function.__annotations__ @@ -86,10 +59,6 @@ def __init__( # noqa: PLR0913 self.__name__ = function.__name__ self.__signature__ = inspect.signature(self.function) - # Temporary solution until the rest of the interface is updated - if hasattr(function, "__info__"): - self.__info__ = function.__info__ - def __call__(self, *args, **kwargs): return self.function(*args, **kwargs) @@ -103,57 +72,101 @@ def original_function_name(self) -> str: """The name of the wrapped function.""" return self.function.__name__ - def is_active_at_date(self, date: date) -> bool: + def is_active(self, date: datetime.date) -> bool: """Check if the function is active at a given date.""" return self.start_date <= date <= self.end_date -def _vectorize_func(func: Callable) -> Callable: - # What should work once that Jax backend is fully supported - signature = inspect.signature(func) - func_vec = numpy.vectorize(func) +def policy_function( + *, + start_date: str | datetime.date = "1900-01-01", + end_date: str | datetime.date = "2100-12-31", + leaf_name: str | None = None, + params_key_for_rounding: str | None = None, + skip_vectorization: bool = False, +) -> PolicyFunction: + """ + Decorator that makes a `PolicyFunction` from a function. - @functools.wraps(func) - def wrapper_vectorize_func(*args, **kwargs): - return func_vec(*args, **kwargs) + **Dates active (start_date, end_date, leaf_name):** - wrapper_vectorize_func.__signature__ = signature + Specifies that a PolicyFunction is only active between two dates, `start` and `end`. + By using the `leaf_name` argument, you can specify a different name for the + PolicyFunction in the functions tree. - return wrapper_vectorize_func + Note that even if you use this decorator with the `leaf_name` argument, you must + ensure that the function name is unique in the file where it is defined. Otherwise, + the function would be overwritten by the last function with the same name. + **Rounding spec (params_key_for_rounding):** -def _first_not_none(*values: T) -> T: - """ - Return the first value that is not None or raise if all values are None. + Adds the location of the rounding specification to a PolicyFunction. Parameters ---------- - values: - The values to check. - - Raises - ------ - ValueError: - If all values are None. + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + leaf_name + The name that should be used as the PolicyFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. + params_key_for_rounding + Key of the parameters dictionary where rounding specifications are found. For + functions that are not user-written this is just the name of the respective + .yaml file. + skip_vectorization + Whether the function is already vectorized and, thus, should not be vectorized + again. + + Returns + ------- + A PolicyFunction object. """ - for value in values: - if value is not None: - return value - raise ValueError("All values are None.") + _validate_dashed_iso_date(start_date) + _validate_dashed_iso_date(end_date) + start_date = datetime.date.fromisoformat(start_date) + end_date = datetime.date.fromisoformat(end_date) -def _first_not_none_or_none(*values: T) -> T | None: - """ - Return the first value that is not None or None if all values are None. + _validate_date_range(start_date, end_date) + + def inner(func: Callable) -> PolicyFunction: + return PolicyFunction( + function=func, + leaf_name=leaf_name if leaf_name else func.__name__, + start_date=start_date, + end_date=end_date, + params_key_for_rounding=params_key_for_rounding, + skip_vectorization=skip_vectorization, + ) + + return inner + + +_DASHED_ISO_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") + + +def _validate_dashed_iso_date(date: str | datetime.date): + if not _DASHED_ISO_DATE.match(date): + raise ValueError(f"Date {date} does not match the format YYYY-MM-DD.") + + +def _validate_date_range(start: datetime.date, end: datetime.date): + if start > end: + raise ValueError(f"The start date {start} must be before the end date {end}.") - Parameters - ---------- - values: - The values to check. - """ - for value in values: - if value is not None: - return value - return None +def _vectorize_func(func: Callable) -> Callable: + # What should work once that Jax backend is fully supported + signature = inspect.signature(func) + func_vec = numpy.vectorize(func) + + @functools.wraps(func) + def wrapper_vectorize_func(*args, **kwargs): + return func_vec(*args, **kwargs) + + wrapper_vectorize_func.__signature__ = signature + + return wrapper_vectorize_func diff --git a/src/_gettsim/gettsim_typing.py b/src/_gettsim/gettsim_typing.py index 64d10b9146..cdcbbb7afd 100644 --- a/src/_gettsim/gettsim_typing.py +++ b/src/_gettsim/gettsim_typing.py @@ -1,3 +1,5 @@ +from typing import Union + import numpy import pandas as pd from pandas.api.types import ( @@ -8,7 +10,22 @@ is_object_dtype, ) +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec from _gettsim.config import numpy_or_jax as np +from _gettsim.functions.derived_function import DerivedFunction +from _gettsim.functions.policy_function import PolicyFunction + +NestedFunctionDict = dict[ + str, Union[PolicyFunction, DerivedFunction, "NestedFunctionDict"] +] +NestedTargetDict = dict[str, Union[None, "NestedTargetDict"]] +NestedInputStructureDict = dict[str, Union[None, "NestedInputStructureDict"]] +NestedDataDict = dict[str, Union[pd.Series, "NestedDataDict"]] +NestedSeriesDict = dict[str, Union[pd.Series, "NestedSeriesDict"]] +NestedArrayDict = dict[str, Union[np.ndarray, "NestedArrayDict"]] +NestedAggregationSpecDict = dict[ + str, Union[AggregateByGroupSpec, AggregateByPIDSpec, "NestedAggregationSpecDict"] +] def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: diff --git a/src/_gettsim/groupings.py b/src/_gettsim/groupings.py index b0ab774e9b..1e5f8c4afb 100644 --- a/src/_gettsim/groupings.py +++ b/src/_gettsim/groupings.py @@ -3,18 +3,23 @@ import numpy +from _gettsim.functions.policy_function import policy_function + def create_groupings() -> dict[str, Callable]: return { - "wthh_id": wthh_id_numpy, - "fg_id": fg_id_numpy, - "bg_id": bg_id_numpy, - "eg_id": eg_id_numpy, - "ehe_id": ehe_id_numpy, - "sn_id": sn_id_numpy, + "groupings": { + "wthh_id": wthh_id_numpy, + "fg_id": fg_id_numpy, + "bg_id": bg_id_numpy, + "eg_id": eg_id_numpy, + "ehe_id": ehe_id_numpy, + "sn_id": sn_id_numpy, + }, } +@policy_function(skip_vectorization=True, leaf_name="bg_id") def bg_id_numpy( fg_id: numpy.ndarray[int], alter: numpy.ndarray[int], @@ -43,6 +48,7 @@ def bg_id_numpy( return numpy.asarray(result) +@policy_function(skip_vectorization=True, leaf_name="eg_id") def eg_id_numpy( p_id: numpy.ndarray[int], p_id_einstandspartner: numpy.ndarray[int], @@ -72,6 +78,7 @@ def eg_id_numpy( return numpy.asarray(result) +@policy_function(skip_vectorization=True, leaf_name="ehe_id") def ehe_id_numpy( p_id: numpy.ndarray[int], p_id_ehepartner: numpy.ndarray[int], @@ -98,6 +105,7 @@ def ehe_id_numpy( return numpy.asarray(result) +@policy_function(skip_vectorization=True, leaf_name="fg_id") def fg_id_numpy( # noqa: PLR0913 p_id: numpy.ndarray[int], hh_id: numpy.ndarray[int], @@ -174,6 +182,7 @@ def fg_id_numpy( # noqa: PLR0913 return numpy.asarray(result) +@policy_function(skip_vectorization=True, leaf_name="sn_id") def sn_id_numpy( p_id: numpy.ndarray[int], p_id_ehepartner: numpy.ndarray[int], @@ -217,6 +226,7 @@ def sn_id_numpy( return numpy.asarray(result) +@policy_function(skip_vectorization=True, leaf_name="wthh_id") def wthh_id_numpy( hh_id: numpy.ndarray[int], wohngeld_vorrang_bg: numpy.ndarray[bool], diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 9331027a28..659368759a 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -2,11 +2,17 @@ import functools import inspect import warnings -from typing import Literal, get_args +from typing import Any, Literal, get_args import dags +import flatten_dict +import networkx as nx +import optree import pandas as pd +from _gettsim.combine_functions_in_tree import ( + combine_policy_functions_and_derived_functions, +) from _gettsim.config import ( DEFAULT_TARGETS, FOREIGN_KEYS, @@ -14,223 +20,160 @@ TYPES_INPUT_VARIABLES, ) from _gettsim.config import numpy_or_jax as np +from _gettsim.functions.policy_function import PolicyFunction from _gettsim.gettsim_typing import ( + NestedArrayDict, + NestedDataDict, + NestedFunctionDict, + NestedInputStructureDict, + NestedSeriesDict, + NestedTargetDict, check_series_has_expected_type, convert_series_to_internal_type, ) -from _gettsim.groupings import create_groupings from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.policy_environment_postprocessor import ( - check_functions_and_differentiate_types, -) from _gettsim.shared import ( KeyErrorMessage, + assert_valid_gettsim_pytree, format_errors_and_warnings, format_list_linewise, get_names_of_arguments_without_defaults, - parse_to_list_of_strings, + partition_tree_by_reference_tree, + qualified_name_reducer, + qualified_name_splitter, + upsert_tree, ) -def compute_taxes_and_transfers( # noqa: PLR0913 - data, +def compute_taxes_and_transfers( + data_tree: NestedDataDict, environment: PolicyEnvironment, - targets=None, - check_minimal_specification="ignore", - rounding=True, - debug=False, -): + targets_tree: NestedTargetDict | None = None, + rounding: bool = True, + debug: bool = False, +) -> NestedDataDict: """Compute taxes and transfers. Parameters ---------- - data : pandas.Series or pandas.DataFrame or dict of pandas.Series + data_tree : NestedDataDict Data provided by the user. - environment: + environment: PolicyEnvironment The policy environment which contains all necessary functions and parameters. - targets : str, list of str, default None - String or list of strings with names of functions whose output is actually - needed by the user. By default, ``targets`` is ``None`` and all key outputs as - defined by `gettsim.config.DEFAULT_TARGETS` are returned. - check_minimal_specification : {"ignore", "warn", "raise"}, default "ignore" - Indicator for whether checks which ensure the most minimal configuration should - be silenced, emitted as warnings or errors. + targets_tree : NestedTargetDict | None + The targets tree. By default, ``targets_tree`` is ``None`` and all key outputs + as defined by `gettsim.config.DEFAULT_TARGETS` are returned. rounding : bool, default True Indicator for whether rounding should be applied as specified in the law. debug : bool The debug mode does the following: - - 1. All necessary inputs and all computed variables are returned. - 2. If an exception occurs while computing one variable, the exception is - skipped. + 1. All necessary inputs and all computed variables are returned. + 2. If an exception occurs while computing one variable, the exception is + skipped. Returns ------- - results : pandas.DataFrame - DataFrame containing computed variables. + results : NestedDataDict + The computed variables as a tree. """ - - targets = DEFAULT_TARGETS if targets is None else targets - targets = parse_to_list_of_strings(targets, "targets") - params = environment.params - - # Process data and load dictionaries with functions. - data = _process_and_check_data(data=data) - functions_not_overridden, functions_overridden = ( - check_functions_and_differentiate_types( - environment=environment, - targets=targets, - data_cols=list(data), - ) + # Check user inputs + _fail_if_targets_tree_not_valid(targets_tree) + _fail_if_data_tree_not_valid(data_tree) + _fail_if_environment_not_valid(environment) + + # Use default targets if no targets are provided. + targets_tree = targets_tree if targets_tree else DEFAULT_TARGETS + + # Add derived functions to the functions tree. + functions_tree = combine_policy_functions_and_derived_functions( + environment=environment, + targets_tree=targets_tree, + data_tree=data_tree, ) - data = _convert_data_to_correct_types(data, functions_overridden) - columns_overriding_functions = set(functions_overridden) - # Warn if columns override functions. - if columns_overriding_functions: - warnings.warn( - FunctionsAndColumnsOverlapWarning(columns_overriding_functions), - stacklevel=2, - ) - - # Select necessary nodes by creating a preliminary DAG. - nodes = set_up_dag( - all_functions=functions_not_overridden, - targets=targets, - columns_overriding_functions=columns_overriding_functions, - check_minimal_specification=check_minimal_specification, - ).nodes - necessary_functions = { - f_name: f for f_name, f in functions_not_overridden.items() if (f_name in nodes) - } - - processed_functions = _round_and_partial_parameters_to_functions( - necessary_functions, params, rounding + ( + functions_tree_overridden, + functions_tree_not_overridden, + ) = partition_tree_by_reference_tree( + tree_to_partition=functions_tree, + reference_tree=data_tree, ) - # Create input data. - input_data = _create_input_data( - data=data, - processed_functions=processed_functions, - targets=targets, - columns_overriding_functions=columns_overriding_functions, - check_minimal_specification=check_minimal_specification, + _warn_if_functions_overridden_by_data(functions_tree_overridden) + data_tree_with_correct_types = _convert_data_to_correct_types( + data_tree=data_tree, + functions_tree_overridden=functions_tree_overridden, ) - # Calculate results. - tax_transfer_function = dags.concatenate_functions( - processed_functions, - targets, - return_type="dict", - aggregator=None, - enforce_signature=True, + functions_tree_with_partialled_parameters = _partial_parameters_to_functions( + functions_tree=( + optree.tree_map_with_path( + lambda path, x: _add_rounding_to_function(x, environment.params, path), + functions_tree_not_overridden, + ) + if rounding + else functions_tree_not_overridden + ), + params=environment.params, ) - results = tax_transfer_function(**input_data) - - # Prepare results. - prepared_results = _prepare_results(results, data, debug) - - return prepared_results - - -def set_up_dag( - all_functions, - targets, - columns_overriding_functions, - check_minimal_specification, -): - """Set up the DAG. Partial functions before that and add rounding afterwards. - - Parameters - ---------- - all_functions : dict - All internal and user functions except the ones that are overridden by an input - column. - targets : list of str - List of strings with names of functions whose output is actually - needed by the user. By default, ``targets`` contains all key outputs as - defined by `gettsim.config.DEFAULT_TARGETS`. - columns_overriding_functions : list of str - Names of columns in the data which are preferred over function defined in the - tax and transfer system. - check_minimal_specification : {"ignore", "warn", "raise"}, default "ignore" - Indicator for whether checks which ensure the most minimal configuration should - be silenced, emitted as warnings or errors. - - Returns - ------- - dag : networkx.DiGraph - The DAG of the tax and transfer system. - - """ - # Create DAG and perform checks which depend on data which is not part of the DAG - # interface. - - dag = dags.dag.create_dag( - functions=all_functions, - targets=targets, - ) - _fail_if_columns_overriding_functions_are_not_in_dag( - dag, columns_overriding_functions, check_minimal_specification + input_structure = dags.create_input_structure_tree( + functions_tree_not_overridden, ) - return dag - + # Remove unnecessary elements from user-provided data. + input_data_tree = _create_input_data_for_concatenated_function( + data_tree=data_tree_with_correct_types, + functions_tree=functions_tree_with_partialled_parameters, + targets_tree=targets_tree, + input_structure=input_structure, + ) -def _process_and_check_data(data): - """Process data and perform several checks. + _fail_if_group_variables_not_constant_within_groups(input_data_tree) + _fail_if_foreign_keys_are_invalid( + data_tree=input_data_tree, + p_ids=data_tree_with_correct_types.get("groupings", {}).get("p_id", {}), + ) - Parameters - ---------- - data : pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. + tax_transfer_function = dags.concatenate_functions_tree( + functions=functions_tree_with_partialled_parameters, + targets=targets_tree, + input_structure=input_structure, + name_clashes="raise", + ) - Returns - ------- - data : dict of pandas.Series + results = tax_transfer_function(input_data_tree) - """ - if isinstance(data, pd.DataFrame): - _fail_if_duplicates_in_columns(data) - data = dict(data) - elif isinstance(data, pd.Series): - data = {data.name: data} - elif isinstance(data, dict) and all( - isinstance(i, pd.Series) for i in data.values() - ): - pass - else: - raise NotImplementedError( - "'data' is not a pd.DataFrame or a pd.Series or a dictionary of pd.Series." + if debug: + results = upsert_tree( + base=results, + to_upsert=data_tree_with_correct_types, ) - # Check that group variables are constant within groups - _fail_if_group_variables_not_constant_within_groups(data) - _fail_if_pid_is_non_unique(data) - _fail_if_foreign_keys_are_invalid(data) - return data + return results -def _convert_data_to_correct_types(data, functions_overridden): - """Convert all series of data to the type that is expected by GETTSIM. +def _convert_data_to_correct_types( + data_tree: NestedDataDict, functions_tree_overridden: NestedFunctionDict +) -> NestedDataDict: + """Convert all leafs of the data tree to the type that is expected by GETTSIM. Parameters ---------- - data : pandas.Series or pandas.DataFrame or dict of pandas.Series + data_tree Data provided by the user. - functions_overridden : dict of callable - Functions to be overridden. + functions_tree_overridden + Functions that are overridden by data. Returns ------- - data : dict of pandas.Series with correct type + Data with correct types. """ - collected_errors = ["The data types of the following columns are invalid: \n"] + collected_errors = ["The data types of the following columns are invalid:\n"] collected_conversions = [ - "The data types of the following input variables have been converted: \n" + "The data types of the following input variables have been converted:" ] general_warning = ( "Note that the automatic conversion of data types is unsafe and that" @@ -238,318 +181,163 @@ def _convert_data_to_correct_types(data, functions_overridden): " The best solution is to convert all columns to the expected data" " types yourself." ) - for column_name, series in data.items(): - # Find out if internal_type is defined + + flat_data = flatten_dict.flatten(data_tree, reducer=qualified_name_reducer) + flat_internal_types = flatten_dict.flatten( + TYPES_INPUT_VARIABLES, reducer=qualified_name_reducer + ) + flat_functions = flatten_dict.flatten( + functions_tree_overridden, reducer=qualified_name_reducer + ) + + flat_data_with_correct_types = {} + + for qualified_name, series in flat_data.items(): internal_type = None - if column_name in TYPES_INPUT_VARIABLES: - internal_type = TYPES_INPUT_VARIABLES[column_name] - elif ( - column_name in functions_overridden - and "return" in functions_overridden[column_name].__annotations__ - ): - func = functions_overridden[column_name] - if hasattr(func, "__info__") and func.__info__["skip_vectorization"]: + + # Look for column in TYPES_INPUT_VARIABLES + if qualified_name in flat_internal_types: + internal_type = flat_internal_types[qualified_name] + # Look for column in functions_tree_overridden + elif qualified_name in flat_functions: + func = flat_functions[qualified_name] + if hasattr(func, "__annotations__") and func.skip_vectorization: # Assumes that things are annotated with numpy.ndarray([dtype]), might # require a change if using proper numpy.typing. Not changing for now # as we will likely switch to JAX completely. internal_type = get_args(func.__annotations__["return"])[0] - elif func in create_groupings().values(): - # Functions that create a grouping ID - internal_type = get_args(func.__annotations__["return"])[0] else: internal_type = func.__annotations__["return"] + else: + pass # Make conversion if necessary - if internal_type and not check_series_has_expected_type(series, internal_type): + if internal_type and not check_series_has_expected_type( + series=series, internal_type=internal_type + ): try: - data[column_name] = convert_series_to_internal_type( - series, internal_type + converted_leaf = convert_series_to_internal_type( + series=series, internal_type=internal_type ) + flat_data_with_correct_types[qualified_name] = converted_leaf collected_conversions.append( - f" - {column_name} from {series.dtype} " + f" - {qualified_name} from {series.dtype} " f"to {internal_type.__name__}" ) - except ValueError as e: - collected_errors.append(f" - {column_name}: {e}") + collected_errors.append(f"\n - {qualified_name}: {e}") + else: + flat_data_with_correct_types[qualified_name] = series # If any error occured raise Error if len(collected_errors) > 1: - raise ValueError( - "\n".join(collected_errors) + "\n" + "\n" + "Note that conversion" - " from floating point to integers or Booleans inherently suffers from" - " approximation error. It might well be that your data seemingly obey the" - " restrictions when scrolling through them, but in fact they do not" - " (for example, because 1e-15 is displayed as 0.0)." - + "\n" - + "The best solution is to convert all columns" - " to the expected data types yourself." - ) + msg = """ + Note that conversion from floating point to integers or Booleans inherently + suffers from approximation error. It might well be that your data seemingly + obey the restrictions when scrolling through them, but in fact they do not + (for example, because 1e-15 is displayed as 0.0). \n The best solution is to + convert all columns to the expected data types yourself. + """ + collected_errors = "\n".join(collected_errors) + raise ValueError(format_errors_and_warnings(collected_errors + msg)) # Otherwise raise warning which lists all successful conversions elif len(collected_conversions) > 1: + collected_conversions = format_list_linewise(collected_conversions) warnings.warn( - "\n".join(collected_conversions) + "\n" + "\n" + general_warning, + collected_conversions + "\n" + "\n" + general_warning, stacklevel=2, ) - return data + return flatten_dict.unflatten( + flat_data_with_correct_types, + splitter=qualified_name_splitter, + ) -def _create_input_data( - data, - processed_functions, - targets, - columns_overriding_functions, - check_minimal_specification="ignore", -): - """Create input data for use in the calculation of taxes and transfers by: - - reducing to necessary data - - convert pandas.Series to numpy.array +def _create_input_data_for_concatenated_function( + data_tree: NestedSeriesDict, + functions_tree: NestedFunctionDict, + targets_tree: NestedTargetDict, + input_structure: NestedInputStructureDict, +) -> NestedArrayDict: + """Create input data for the concatenated function. + + 1. Check that all root nodes are present in the user-provided data tree. + 2. Get only part of the data tree that is needed for the concatenated function. + 3. Convert pandas.Series to numpy.array. Parameters ---------- - data : Dict of pandas.Series + data_tree Data provided by the user. - processed_functions : dict of callable - Dictionary mapping function names to callables. - targets : list of str - List of strings with names of functions whose output is actually needed by the - user. - columns_overriding_functions : str list of str - Names of columns in the data which are preferred over function defined in the - tax and transfer system. - check_minimal_specification : {"ignore", "warn", "raise"}, default "ignore" - Indicator for whether checks which ensure the most minimal configuration should - be silenced, emitted as warnings or errors. + functions_tree + Nested function dictionary. + targets_tree + Targets provided by the user. + input_structure + Tree representing the input structure. Returns ------- - input_data : Dict of numpy.array - Data which can be used to calculate taxes and transfers. + Data which can be used to calculate taxes and transfers. """ # Create dag using processed functions - dag = set_up_dag( - all_functions=processed_functions, - targets=targets, - columns_overriding_functions=columns_overriding_functions, - check_minimal_specification=check_minimal_specification, + dag = dags.dag_tree.create_dag_tree( + functions=functions_tree, + targets=targets_tree, + input_structure=input_structure, + name_clashes="raise", ) - root_nodes = {n for n in dag.nodes if list(dag.predecessors(n)) == []} - _fail_if_root_nodes_are_missing(root_nodes, data, processed_functions) - data = _reduce_to_necessary_data(root_nodes, data, check_minimal_specification) - - # Convert series to numpy arrays - data = {key: series.values for key, series in data.items()} - - # Restrict to root nodes - input_data = {k: v for k, v in data.items() if k in root_nodes} - return input_data - - -class FunctionsAndColumnsOverlapWarning(UserWarning): - """ - Warning that functions which compute columns overlap with existing columns. - - Parameters - ---------- - columns_overriding_functions : set[str] - Names of columns in the data that override hard-coded functions. - """ - - def __init__(self, columns_overriding_functions: set[str]) -> None: - n_cols = len(columns_overriding_functions) - if n_cols == 1: - first_part = format_errors_and_warnings("Your data provides the column:") - second_part = format_errors_and_warnings( - """ - This is already present among the hard-coded functions of the taxes and - transfers system. If you want this data column to be used instead of - calculating it within GETTSIM you need not do anything. If you want this - data column to be calculated by hard-coded functions, remove it from the - *data* you pass to GETTSIM. You need to pick one option for each column - that appears in the list above. - """ - ) - else: - first_part = format_errors_and_warnings("Your data provides the columns:") - second_part = format_errors_and_warnings( - """ - These are already present among the hard-coded functions of the taxes - and transfers system. If you want a data column to be used instead of - calculating it within GETTSIM you do not need to do anything. If you - want data columns to be calculated by hard-coded functions, remove them - from the *data* you pass to GETTSIM. You need to pick one option for - each column that appears in the list above. - """ - ) - formatted = format_list_linewise(list(columns_overriding_functions)) - how_to_ignore = format_errors_and_warnings( - """ - If you want to ignore this warning, add the following code to your script - before calling GETTSIM: - - import warnings - from gettsim import FunctionsAndColumnsOverlapWarning - - warnings.filterwarnings( - "ignore", - category=FunctionsAndColumnsOverlapWarning - ) - """ - ) - super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") + # Create root nodes tree + root_nodes_view = nx.subgraph_view(dag, filter_node=lambda n: dag.in_degree(n) == 0) + root_nodes_tree = flatten_dict.unflatten( + {node: None for node in root_nodes_view.nodes}, + splitter=qualified_name_splitter, + ) -def _fail_if_duplicates_in_columns(data): - """Check that all column names are unique.""" - if any(data.columns.duplicated()): - raise ValueError( - "The following columns are non-unique in the input data:\n\n" - f"{data.columns[data.columns.duplicated()]}" - ) - - -def _fail_if_group_variables_not_constant_within_groups(data): - """Check whether group variables have the same value within each group. - - Parameters - ---------- - data : dict of pandas.Series - Dictionary containing a series for each column. - - """ - exogenous_groupings = [ - level for level in SUPPORTED_GROUPINGS if f"{level}_id" in data - ] - for name, col in data.items(): - for level in exogenous_groupings: - if name.endswith(f"_{level}"): - max_value = col.groupby(data[f"{level}_id"]).transform("max") - if not (max_value == col).all(): - message = format_errors_and_warnings( - f""" - Column {name!r} has not one unique value per group defined by - `{level}_id`. - - This is expected if the variable name ends with '_{level}'. - - To fix the error, assign the same value to each group or remove - the indicator from the variable name. - """ - ) - raise ValueError(message) - return data - - -def _fail_if_pid_is_non_unique(data): - """Check that pid is unique.""" - if "p_id" not in data: - message = "The input data must contain the column p_id" - raise ValueError(message) - elif not data["p_id"].is_unique: - list_of_nunique_ids = list(data["p_id"].loc[data["p_id"].duplicated()]) - message = ( - "The following p_ids are non-unique in the input data:" - f"{list_of_nunique_ids}" - ) - raise ValueError(message) - - -def _fail_if_foreign_keys_are_invalid(data): - """ - Check that all foreign keys are valid. - - They must point to an existing `p_id` in the input data and may not refer to - the `p_id` of the same row. - """ - - p_ids = set(data["p_id"]) | {-1} - - for foreign_key in FOREIGN_KEYS: - if foreign_key not in data: - continue - - # Referenced `p_id` must exist in the input data - if not data[foreign_key].isin(p_ids).all(): - message = ( - f"The following {foreign_key}s are not a valid p_id in the input data:" - f" {list(data[foreign_key].loc[~data[foreign_key].isin(p_ids)])}" - ) - raise ValueError(message) - - # Referenced `p_id` must not be the same as the `p_id` of the same row - if (data[foreign_key] == data["p_id"]).any(): - message = ( - f"The following {foreign_key}s are equal to the p_id in the same row:" - f" {list(data[foreign_key].loc[data[foreign_key] == data['p_id']])}" - ) - raise ValueError(message) - - -def _fail_if_root_nodes_are_missing(root_nodes, data, functions): - # Identify functions that are part of the DAG, but do not depend - # on any other function - funcs_based_on_params_only = [ - func_name - for func_name, func in functions.items() - if len( - [a for a in inspect.signature(func).parameters if not a.endswith("_params")] - ) - == 0 - ] - - missing_nodes = [ - c for c in root_nodes if c not in data and c not in funcs_based_on_params_only - ] - if missing_nodes: - formatted = format_list_linewise(missing_nodes) - raise ValueError(f"The following data columns are missing.\n{formatted}") - + _fail_if_root_nodes_are_missing( + functions_tree=functions_tree, + data_tree=data_tree, + root_nodes_tree=root_nodes_tree, + ) -def _reduce_to_necessary_data(root_nodes, data, check_minimal_specification): - # Produce warning or fail if more than necessary data is given. - unnecessary_data = set(data) - root_nodes - formatted = format_list_linewise(unnecessary_data) - message = f"The following columns in 'data' are unused.\n\n{formatted}" - if unnecessary_data and check_minimal_specification == "warn": - warnings.warn(message, stacklevel=2) - elif unnecessary_data and check_minimal_specification == "raise": - raise ValueError(message) + # Get only part of the data tree that is needed + input_data_tree = partition_tree_by_reference_tree( + tree_to_partition=data_tree, + reference_tree=root_nodes_tree, + )[0] - return {k: v for k, v in data.items() if k not in unnecessary_data} + # Convert to numpy.ndarray + return optree.tree_map(lambda x: x.to_numpy(), input_data_tree) -def _round_and_partial_parameters_to_functions(functions, params, rounding): - """Create a dictionary of all functions that are available. +def _partial_parameters_to_functions( + functions_tree: NestedFunctionDict, + params: dict[str, Any], +) -> NestedFunctionDict: + """Round and partial parameters into functions. Parameters ---------- - functions : dict of callable - Dictionary of functions which are either internal or user provided functions. - params : dict - Dictionary of parameters which is partialed to the function such that `params` - are invisible to the DAG. - rounding : bool - Indicator for whether rounding should be applied as specified in the law. + functions_tree + The functions tree. + params + Dictionary of parameters. Returns ------- - processed_functions : dict of callable - Dictionary mapping function names to rounded callables with partialed - parameters. + Functions tree with parameters partialled. """ - # Add rounding to functions. - if rounding: - functions = _add_rounding_to_functions(functions, params) - # Partial parameters to functions such that they disappear in the DAG. # Note: Needs to be done after rounding such that dags recognizes partialled # parameters. - processed_functions = {} - for name, function in functions.items(): + function_leafs, tree_spec = optree.tree_flatten(functions_tree) + processed_functions = [] + for function in function_leafs: arguments = get_names_of_arguments_without_defaults(function) partial_params = { i: params[i[:-7]] @@ -557,106 +345,102 @@ def _round_and_partial_parameters_to_functions(functions, params, rounding): if i.endswith("_params") and i[:-7] in params } if partial_params: - partial_func = functools.partial(function, **partial_params) - - # Make sure any GETTSIM metadata is transferred to partial - # function. Otherwise, this information would get lost. - if hasattr(function, "__info__"): - partial_func.__info__ = function.__info__ - - processed_functions[name] = partial_func + processed_functions.append(functools.partial(function, **partial_params)) else: - processed_functions[name] = function + processed_functions.append(function) - return processed_functions + return optree.tree_unflatten(tree_spec, processed_functions) -def _add_rounding_to_functions(functions, params): - """Add appropriate rounding of outputs to functions. +def _add_rounding_to_function( + input_function: PolicyFunction, + params: dict[str, Any], + path: set[str], +) -> PolicyFunction: + """Add appropriate rounding of outputs to function. Parameters ---------- - functions : dict of callable - Dictionary of functions which are either internal or user provided functions. + input_function : PolicyFunction + Function to which rounding should be added. params : dict Dictionary of parameters Returns ------- - functions_new : dict of callable - Dictionary of rounded functions. + Function with rounding added. """ - functions_new = copy.deepcopy(functions) - - for func_name, func in functions.items(): - # If function has rounding params attribute, look for rounding specs in - # params dict. - if hasattr(func, "__info__") and "params_key_for_rounding" in func.__info__: - params_key = func.__info__["params_key_for_rounding"] - - # Check if there are any rounding specifications. - if not ( - params_key in params - and "rounding" in params[params_key] - and func_name in params[params_key]["rounding"] - ): - raise KeyError( - KeyErrorMessage( - f"Rounding specifications for function {func_name} are expected" - " in the parameter dictionary \n" - f" at [{params_key!r}]['rounding'][{func_name!r}]. These nested" - " keys do not exist. \n" - " If this function should not be rounded," - " remove the respective decorator." - ) + func = copy.deepcopy(input_function) + nice_name = ".".join(path) + leaf_name = path[-1] + + if input_function.params_key_for_rounding: + params_key = func.params_key_for_rounding + # Check if there are any rounding specifications. + if not ( + params_key in params + and "rounding" in params[params_key] + and leaf_name in params[params_key]["rounding"] + ): + raise KeyError( + KeyErrorMessage( + f""" + Rounding specifications for function {nice_name} are expected + in the parameter dictionary at:\n + [{params_key!r}]['rounding'][{leaf_name!r}].\n + These nested keys do not exist. If this function should not be + rounded, remove the respective decorator. + """ ) - - rounding_spec = params[params_key]["rounding"][func_name] - - # Check if expected parameters are present in rounding specifications. - if not ("base" in rounding_spec and "direction" in rounding_spec): - raise KeyError( - KeyErrorMessage( - "Both 'base' and 'direction' are expected as rounding " - "parameters in the parameter dictionary. \n " - "At least one of them " - f"is missing at [{params_key!r}]['rounding'][{func_name!r}]." - ) + ) + rounding_spec = params[params_key]["rounding"][leaf_name] + # Check if expected parameters are present in rounding specifications. + if not ("base" in rounding_spec and "direction" in rounding_spec): + raise KeyError( + KeyErrorMessage( + "Both 'base' and 'direction' are expected as rounding " + "parameters in the parameter dictionary. \n " + "At least one of them is missing at:\n" + f"[{params_key!r}]['rounding'][{leaf_name!r}]." ) + ) + # Add rounding. + func = _apply_rounding_spec( + base=rounding_spec["base"], + direction=rounding_spec["direction"], + to_add_after_rounding=rounding_spec.get("to_add_after_rounding", 0), + path=path, + )(func) - # Add rounding. - functions_new[func_name] = _add_rounding_to_one_function( - base=rounding_spec["base"], - direction=rounding_spec["direction"], - to_add_after_rounding=rounding_spec.get("to_add_after_rounding", 0), - )(func) - - return functions_new + return func -def _add_rounding_to_one_function( +def _apply_rounding_spec( base: float, direction: Literal["up", "down", "nearest"], to_add_after_rounding: float, + path: set[str], ) -> callable: """Decorator to round the output of a function. Parameters ---------- - base : float + base Precision of rounding (e.g. 0.1 to round to the first decimal place) - direction : str + direction Whether the series should be rounded up, down or to the nearest number - to_add_after_rounding : float + to_add_after_rounding Number to be added after the rounding step + path: + Path to the function to be rounded. Returns ------- - results : pandas.Series - Series with (potentially) rounded numbers + Series with (potentially) rounded numbers """ + nice_name = ".".join(path) def inner(func): # Make sure that signature is preserved. @@ -667,12 +451,12 @@ def wrapper(*args, **kwargs): # Check inputs. if type(base) not in [int, float]: raise ValueError( - f"base needs to be a number, got {base!r} for {func.__name__!r}" + f"base needs to be a number, got {base!r} for " f"{nice_name}" ) if type(to_add_after_rounding) not in [int, float]: raise ValueError( f"Additive part needs to be a number, got" - f" {to_add_after_rounding!r} for {func.__name__!r}" + f" {to_add_after_rounding!r} for {nice_name}" ) if direction == "up": @@ -684,7 +468,7 @@ def wrapper(*args, **kwargs): else: raise ValueError( "direction must be one of 'up', 'down', or 'nearest'" - f", got {direction!r} for {func.__name__!r}" + f", got {direction!r} for {nice_name}" ) rounded_out += to_add_after_rounding @@ -695,79 +479,274 @@ def wrapper(*args, **kwargs): return inner -def _fail_if_columns_overriding_functions_are_not_in_dag( - dag, columns_overriding_functions, check_minimal_specification -): - """Fail if ``columns_overriding_functions`` are not in the DAG. +def _fail_if_environment_not_valid(environment: Any) -> None: + """ + Validate that the environment is a PolicyEnvironment. + """ + if not isinstance(environment, PolicyEnvironment): + raise TypeError( + "The environment must be a PolicyEnvironment, got" f" {type(environment)}." + ) + + +def _fail_if_targets_tree_not_valid(targets_tree: NestedTargetDict) -> None: + """ + Validate that the targets tree is a dictionary with string keys and None leaves. + """ + assert_valid_gettsim_pytree( + tree=targets_tree, + leaf_checker=lambda leaf: leaf is None, + tree_name="targets_tree", + ) + + +def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: + """ + Validate that the data tree is a dictionary with string keys and pd.Series or + np.ndarray leaves. + """ + assert_valid_gettsim_pytree( + tree=data_tree, + leaf_checker=lambda leaf: isinstance(leaf, pd.Series | np.ndarray), + tree_name="data_tree", + ) + _fail_if_pid_is_non_unique(data_tree) + + +def _fail_if_group_variables_not_constant_within_groups( + data_tree: NestedDataDict, +) -> None: + """ + Check that group variables are constant within each group. + + If the user provides a supported grouping ID (see SUPPORTED_GROUPINGS in config.py), + the function checks that the corresponding data is constant within each group. Parameters ---------- - dag : networkx.DiGraph - The DAG which is limited to targets and their ancestors. - columns_overriding_functions : list of str - The nodes which are provided by columns in the data and do not need to be - computed. These columns limit the depth of the DAG. - check_minimal_specification : {"ignore", "warn", "raise"}, default "ignore" - Indicator for whether checks which ensure the most minimalistic configuration - should be silenced, emitted as warnings or errors. - - Warnings - -------- - UserWarning - Warns if there are columns in 'columns_overriding_functions' which are not - necessary and ``check_minimal_specification`` is set to "warn". - Raises - ------ - ValueError - Raised if there are columns in 'columns_overriding_functions' which are not - necessary and ``check_minimal_specification`` is set to "raise". + data_tree + Nested dictionary with pandas.Series as leaf nodes. + """ + # Extract group IDs from the 'groupings' branch. + grouping_ids_in_data_tree = data_tree.get("groupings", {}) + + def faulty_leaf(path, leaf): + leaf_name = path[-1] + for grouping in SUPPORTED_GROUPINGS: + id_name = f"{grouping}_id" + if leaf_name.endswith(grouping) and id_name in grouping_ids_in_data_tree: + # Retrieve the corresponding group ID series from the data tree. + group_id_series = grouping_ids_in_data_tree.get(id_name) + # Group the leaf's series by the group ID and count unique values. + unique_counts = leaf.groupby(group_id_series).nunique(dropna=False) + if not (unique_counts == 1).all(): + return True + # No further check is needed for this leaf. + break + return False + + faulty_leaves_tree = optree.tree_map_with_path(faulty_leaf, data_tree) + if optree.tree_any(faulty_leaves_tree): + paths, leaves = optree.tree_flatten_with_path(faulty_leaves_tree) + faulty = "\n".join( + f"{'.'.join(paths[i])}" for i, leaf in enumerate(leaves) if leaf + ) + msg = format_errors_and_warnings( + f"""The following data inputs do not have a unique value within + each group defined by the provided grouping IDs:\n + {faulty} + To fix this error, assign the same value to each group. + """ + ) + raise ValueError(msg) + + +def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: + """Check that pid is unique.""" + p_id_col = data_tree.get("groupings", {}).get("p_id", None) + if p_id_col is None: + raise ValueError("The input data must contain the p_id.") + + # Check for non-unique p_ids + p_id_counts = {} + for p_id in p_id_col: + if p_id in p_id_counts: + p_id_counts[p_id] += 1 + else: + p_id_counts[p_id] = 1 + + non_unique_p_ids = [p_id for p_id, count in p_id_counts.items() if count > 1] + + if non_unique_p_ids: + message = ( + "The following p_ids are non-unique in the input data:" + f"{non_unique_p_ids}" + ) + raise ValueError(message) + + +def _fail_if_foreign_keys_are_invalid( + data_tree: NestedDataDict, + p_ids: pd.Series, +) -> None: + """ + Check that all foreign keys are valid. + Foreign keys must point to an existing `p_id` in the input data and must not refer + to the `p_id` of the same row. """ - unused_columns = set(columns_overriding_functions) - set(dag.nodes) - formatted = format_list_linewise(unused_columns) - if unused_columns and check_minimal_specification == "warn": + grouping_ids = data_tree.get("groupings", {}) + valid_ids = set(p_ids) | {-1} + + def faulty_leaf(path, leaf): + leaf_name = path[-1] + foreign_key_col = leaf_name in FOREIGN_KEYS + if not foreign_key_col: + return leaf + + # Referenced `p_id` must exist in the input data + if not all(i in valid_ids for i in leaf): + message = format_errors_and_warnings( + f""" + The following {".".join(path)}s are not a valid p_id in the input + data: {[i for i in leaf if i not in valid_ids]}. + """ + ) + raise ValueError(message) + + # Referenced `p_id` must not be the same as the `p_id` of the same row + equal_to_pid_in_same_row = [i for i, j in zip(leaf, p_ids) if i == j] + if any(equal_to_pid_in_same_row): + message = format_errors_and_warnings( + f""" + The following {".".join(path)}s are equal to the p_id in the same + row: {[i for i, j in zip(leaf, p_ids) if i == j]}. + """ + ) + raise ValueError(message) + + optree.tree_map_with_path(faulty_leaf, grouping_ids) + + +def _warn_if_functions_overridden_by_data( + functions_tree_overridden: NestedFunctionDict, +) -> None: + """Warn if functions are overridden by data.""" + tree_paths = optree.tree_paths(functions_tree_overridden) + formatted_list = format_list_linewise([".".join(path) for path in tree_paths]) + if len(formatted_list) > 0: warnings.warn( - f"The following 'columns_overriding_functions' are unused:\n{formatted}", - stacklevel=2, - ) - elif unused_columns and check_minimal_specification == "raise": - raise ValueError( - f"The following 'columns_overriding_functions' are unused:\n{formatted}" + FunctionsAndColumnsOverlapWarning(formatted_list), + stacklevel=3, ) -def _prepare_results(results, data, debug): - """Prepare results after DAG was executed. +class FunctionsAndColumnsOverlapWarning(UserWarning): + """ + Warning that functions which compute columns overlap with existing columns. Parameters ---------- - results : dict - Dictionary of pd.Series with the results. - data : dict - Dictionary of pd.Series based on the input data provided by the user. - debug : bool - Indicates debug mode. + columns_overriding_functions : set[str] + Names of columns in the data that override hard-coded functions. + """ - Returns - ------- - results : pandas.DataFrame - Nicely formatted DataFrame of the results. + def __init__(self, columns_overriding_functions: set[str]) -> None: + n_cols = len(columns_overriding_functions) + if n_cols == 1: + first_part = format_errors_and_warnings("Your data provides the column:") + second_part = format_errors_and_warnings( + """ + This is already present among the hard-coded functions of the taxes and + transfers system. If you want this data column to be used instead of + calculating it within GETTSIM you need not do anything. If you want this + data column to be calculated by hard-coded functions, remove it from the + *data* you pass to GETTSIM. You need to pick one option for each column + that appears in the list above. + """ + ) + else: + first_part = format_errors_and_warnings("Your data provides the columns:") + second_part = format_errors_and_warnings( + """ + These are already present among the hard-coded functions of the taxes + and transfers system. If you want a data column to be used instead of + calculating it within GETTSIM you do not need to do anything. If you + want data columns to be calculated by hard-coded functions, remove them + from the *data* you pass to GETTSIM. You need to pick one option for + each column that appears in the list above. + """ + ) + formatted = format_list_linewise(list(columns_overriding_functions)) + how_to_ignore = format_errors_and_warnings( + """ + If you want to ignore this warning, add the following code to your script + before calling GETTSIM: - """ - if debug: - results = pd.DataFrame({**data, **results}) - else: - results = pd.DataFrame(results) - results = _reorder_columns(results) + import warnings + from gettsim import FunctionsAndColumnsOverlapWarning - return results + warnings.filterwarnings( + "ignore", + category=FunctionsAndColumnsOverlapWarning + ) + """ + ) + super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") + + +def _fail_if_root_nodes_are_missing( + functions_tree: NestedFunctionDict, + root_nodes_tree: NestedTargetDict, + data_tree: NestedDataDict, +) -> None: + """Fail if root nodes are missing. + Fails if there are root nodes in the DAG (i.e. nodes without predecessors that do + not depend on parameters only) that are not present in the data tree. -def _reorder_columns(results): - order_ids = {f"{g}_id": i for i, g in enumerate(SUPPORTED_GROUPINGS)} - order_ids["p_id"] = len(order_ids) - ids_in_data = order_ids.keys() & set(results.columns) - sorted_ids = sorted(ids_in_data, key=lambda x: order_ids[x]) - remaining_columns = [i for i in results if i not in sorted_ids] + Parameters + ---------- + functions_tree + Dictionary of functions. + root_nodes_tree + Dictionary of root nodes. + data_tree + Dictionary of data. + + Raises + ------ + ValueError + If root nodes are missing. + """ + flat_root_nodes = flatten_dict.flatten(root_nodes_tree) + flat_data = flatten_dict.flatten(data_tree) + flat_functions = flatten_dict.flatten(functions_tree) + missing_nodes = [] + + for node in flat_root_nodes: + if node in flat_functions: + func = flat_functions[node] + if _func_depends_on_parameters_only(func): + # Function depends on parameters only, so it does not have to be present + # in the data tree. + continue + elif node in flat_data: + # Root node is present in the data tree. + continue + else: + missing_nodes.append(".".join(node)) - return results[sorted_ids + remaining_columns] + if missing_nodes: + formatted = format_list_linewise(missing_nodes) + raise ValueError(f"The following data columns are missing.\n{formatted}") + + +def _func_depends_on_parameters_only(func: PolicyFunction) -> bool: + """Check if a function depends on parameters only.""" + return ( + len( + [a for a in inspect.signature(func).parameters if not a.endswith("_params")] + ) + == 0 + ) diff --git a/src/_gettsim/policy_environment.py b/src/_gettsim/policy_environment.py index 5992e0db74..c29cd6e255 100644 --- a/src/_gettsim/policy_environment.py +++ b/src/_gettsim/policy_environment.py @@ -2,122 +2,85 @@ import copy import datetime -import operator -from functools import reduce from typing import TYPE_CHECKING, Any import numpy +import optree import pandas as pd import yaml -from _gettsim.config import INTERNAL_PARAMS_GROUPS, RESOURCE_DIR +from _gettsim.config import ( + INTERNAL_PARAMS_GROUPS, + RESOURCE_DIR, +) from _gettsim.functions.loader import ( - load_functions_for_date, - load_internal_aggregation_dict, + load_aggregation_specs_tree, + load_functions_tree_for_date, ) -from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.functions.policy_function import PolicyFunction, policy_function from _gettsim.piecewise_functions import ( check_thresholds, get_piecewise_parameters, piecewise_polynomial, ) +from _gettsim.shared import ( + assert_valid_gettsim_pytree, + upsert_path_and_value, + upsert_tree, +) if TYPE_CHECKING: - from collections.abc import Callable + from pathlib import Path + + from _gettsim.gettsim_typing import NestedAggregationSpecDict, NestedFunctionDict class PolicyEnvironment: """ A container for policy functions and parameters. - Almost always, instances are created with :PolicyEnvironment.for_date()`. + Almost always, instances are created with `set_up_policy_environment()`. Parameters ---------- - functions: - A list of policy functions. - params: + functions_tree + The policy functions tree. + params A dictionary with policy parameters. - aggregate_by_group_specs: - A dictionary which contains specs for functions which aggregate variables on the - aggregation levels specified in config.py. The syntax is the same as for - aggregation specs in the code base and as specified in [GEP - 4](https://gettsim.readthedocs.io/en/stable/geps/gep-04.html). - aggregate_by_p_id_specs: - A dictionary which contains specs for linking aggregating taxes and by another - individual (for example, a parent). The syntax is the same as for aggregation - specs in the code base and as specified in [GEP - 4](https://gettsim.readthedocs.io/en/stable/geps/gep-04.html) + aggregation_specs_tree + The tree with aggregation specifications for aggregations on group levels + (defined in config.py) or aggregations by p_id (defined in config.py). The + aggregation tree is a nested dictionary with AggregateByGroupSpec or + AggregateByPIDSpec dataclasses as leafs. """ - @staticmethod - def for_date(date: datetime.date | str | int) -> PolicyEnvironment: - """ - Set up the policy environment for a particular date. - - Parameters - ---------- - date: - The date for which the policy system is set up. An integer is - interpreted as the year. - - Returns - ------- - environment: - The policy environment for the specified date. - """ - # Check policy date for correct format and convert to datetime.date - date = _parse_date(date) - - params = {} - for group in INTERNAL_PARAMS_GROUPS: - params_one_group = _load_parameter_group_from_yaml(date, group) - - # Align parameters for piecewise polynomial functions - params[group] = _parse_piecewise_parameters(params_one_group) - - # Extend dictionary with date-specific values which do not need an own function - params = _parse_kinderzuschl_max(date, params) - params = _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params) - params = _parse_vorsorgepauschale_rentenv_anteil(date, params) - functions = load_functions_for_date(date) - - # Load aggregation specs - aggregate_by_group_specs = load_internal_aggregation_dict("aggregate_by_group") - aggregate_by_p_id_specs = load_internal_aggregation_dict("aggregate_by_p_id") - - return PolicyEnvironment( - functions, params, aggregate_by_group_specs, aggregate_by_p_id_specs - ) - def __init__( self, - functions: list[PolicyFunction | Callable], + functions_tree: NestedFunctionDict, params: dict[str, Any] | None = None, - aggregate_by_group_specs: dict[str, dict[str, str]] | None = None, - aggregate_by_p_id_specs: dict[str, dict[str, str]] | None = None, + aggregation_specs_tree: NestedAggregationSpecDict | None = None, ): - self._functions = {} - for function in functions: - f = ( - function - if isinstance(function, PolicyFunction) - else PolicyFunction(function) - ) - self._functions[f.name_in_dag] = f + # Check functions tree and convert functions to PolicyFunction if necessary + assert_valid_gettsim_pytree( + functions_tree, + lambda leaf: isinstance(leaf, PolicyFunction), + "functions_tree", + ) + self._functions_tree = optree.tree_map( + func=_convert_function_to_policy_function, + tree=functions_tree, + ) + # Read in parameters and aggregation specs self._params = params if params is not None else {} - self._aggregate_by_group_specs = ( - aggregate_by_group_specs if aggregate_by_group_specs is not None else {} - ) - self._aggregate_by_p_id_specs = ( - aggregate_by_p_id_specs if aggregate_by_p_id_specs is not None else {} + self._aggregation_specs_tree = ( + aggregation_specs_tree if aggregation_specs_tree is not None else {} ) @property - def functions(self) -> dict[str, PolicyFunction]: - """The functions of the policy environment.""" - return self._functions + def functions_tree(self) -> NestedFunctionDict: + """The policy functions. Does not include aggregations or time conversions.""" + return self._functions_tree @property def params(self) -> dict[str, Any]: @@ -125,70 +88,53 @@ def params(self) -> dict[str, Any]: return self._params @property - def aggregate_by_group_specs(self) -> dict[str, dict[str, str]]: - """ - The specs for functions which aggregate variables on the aggregation levels - specified in config.py. - """ - return self._aggregate_by_group_specs - - @property - def aggregate_by_p_id_specs(self) -> dict[str, dict[str, str]]: - """ - The specs for linking aggregating taxes and by another individual (for example, - a parent). - """ - return self._aggregate_by_p_id_specs - - def get_function_by_name(self, name: str) -> PolicyFunction | None: + def aggregation_specs_tree(self) -> NestedAggregationSpecDict: """ - Return the function with a specific name or `None` if no such function exists. - - Parameters - ---------- - name: - The name of the functions. - - Returns - ------- - function: - The functions with the specified name, if it exists. + The tree with aggregation specifications for aggregations on group levels + (defined in config.py) or aggregations by p_id. """ - return self._functions.get(name) + return self._aggregation_specs_tree - def upsert_functions( - self, *functions: PolicyFunction | Callable + def upsert_policy_functions( + self, functions_tree_to_upsert: NestedFunctionDict ) -> PolicyEnvironment: - """ + """Upsert GETTSIM's function tree with (parts of) a new function tree. + Adds to or overwrites functions of the policy environment. Note that this method does not modify the current policy environment but returns a new one. Parameters ---------- - functions: + functions_tree The functions to add or overwrite. Returns ------- - new_environment: - The policy environment with the new functions. + The policy environment with the new functions. """ - new_functions = {**self._functions} - for function in functions: - f = ( - function - if isinstance(function, PolicyFunction) - else PolicyFunction(function) - ) - new_functions[f.name_in_dag] = f + new_functions_tree = {} + + # Add old functions tree to new functions tree + new_functions_tree = {**self._functions_tree} + + functions_tree_to_upsert = optree.tree_map( + func=_convert_function_to_policy_function, + tree=functions_tree_to_upsert, + ) + _fail_if_name_of_last_branch_element_not_leaf_name_of_function( + functions_tree_to_upsert + ) + + # Add functions tree to upsert to new functions tree + new_functions_tree = upsert_tree( + base=new_functions_tree, + to_upsert=functions_tree_to_upsert, + ) result = object.__new__(PolicyEnvironment) - result._functions = new_functions # noqa: SLF001 + result._functions_tree = new_functions_tree # noqa: SLF001 result._params = self._params # noqa: SLF001 - result._aggregate_by_group_specs = ( # noqa: SLF001 - self._aggregate_by_group_specs - ) - result._aggregate_by_p_id_specs = self._aggregate_by_p_id_specs # noqa: SLF001 + result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 return result @@ -204,16 +150,12 @@ def replace_all_parameters(self, params: dict[str, Any]): Returns ------- - new_environment: - The policy environment with the new parameters. + The policy environment with the new parameters. """ result = object.__new__(PolicyEnvironment) - result._functions = self._functions # noqa: SLF001 + result._functions_tree = self._functions_tree # noqa: SLF001 result._params = params # noqa: SLF001 - result._aggregate_by_group_specs = ( # noqa: SLF001 - self._aggregate_by_group_specs - ) - result._aggregate_by_p_id_specs = self._aggregate_by_p_id_specs # noqa: SLF001 + result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 return result @@ -224,30 +166,50 @@ def set_up_policy_environment(date: datetime.date | str | int) -> PolicyEnvironm Parameters ---------- - date: + date The date for which the policy system is set up. An integer is interpreted as the year. Returns ------- - environment: - The policy environment for the specified date. + The policy environment for the specified date. """ - return PolicyEnvironment.for_date(date) + # Check policy date for correct format and convert to datetime.date + date = _parse_date(date) + functions_tree = load_functions_tree_for_date(date) -def _parse_date(date): + params = {} + for group in INTERNAL_PARAMS_GROUPS: + params_one_group = _load_parameter_group_from_yaml(date, group) + + # Align parameters for piecewise polynomial functions + params[group] = _parse_piecewise_parameters(params_one_group) + # Extend dictionary with date-specific values which do not need an own function + params = _parse_kinderzuschl_max(date, params) + params = _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params) + params = _parse_vorsorgepauschale_rentenv_anteil(date, params) + + aggregation_specs_tree = load_aggregation_specs_tree() + + return PolicyEnvironment( + functions_tree, + params, + aggregation_specs_tree, + ) + + +def _parse_date(date: datetime.date | str | int) -> datetime.date: """Check the policy date for different input formats. Parameters ---------- - date : datetime.date, str, int + date The date for which the policy system is set up. Returns ------- - date : datetime.date - The date for which the policy system is set up. + The date for which the policy system is set up as datetime.date. """ if isinstance(date, str): @@ -257,19 +219,42 @@ def _parse_date(date): return date +def _convert_function_to_policy_function( + function: callable, +) -> PolicyFunction: + """Convert a function to a PolicyFunction. + + Parameters + ---------- + function + The function to convert. + + Returns + ------- + function + The converted function. + + """ + if isinstance(function, PolicyFunction): + converted_function = function + else: + converted_function = policy_function(leaf_name=function.__name__)(function) + + return converted_function + + def _parse_piecewise_parameters(tax_data): """Check if parameters are stored in implicit structures and align to general structure. Parameters ---------- - tax_data : dict + tax_data Loaded raw tax data. Returns ------- - tax_data : dict - Parsed parameters ready to use in gettsim. + Parsed parameters ready to use in gettsim. """ for param in tax_data: @@ -303,15 +288,14 @@ def _parse_kinderzuschl_max(date, params): Parameters ---------- - date: datetime.date + date The date for which the policy parameters are set up. - params: dict + params A dictionary with parameters from the policy environment. Returns ------- - params: dict - updated dictionary + updated dictionary """ @@ -339,15 +323,14 @@ def _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params): Parameters ---------- - date: datetime.date + date The date for which the policy parameters are set up. - params: dict + params A dictionary with parameters from the policy environment. Returns ------- - params: dict - updated dictionary + Updated dictionary. """ jahr = float(date.year) @@ -372,14 +355,14 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): Parameters ---------- - date: datetime.date + date The date for which the policy parameters are set up. - params: dict + params A dictionary with parameters from the policy environment. Returns ------- - out: dict + out """ @@ -403,26 +386,27 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): def _load_parameter_group_from_yaml( - date, group, parameters=None, yaml_path=RESOURCE_DIR / "parameters" -): + date: datetime.date, + group: str, + parameters: list[str] | None = None, + yaml_path: Path = RESOURCE_DIR / "parameters", +) -> dict[str, Any]: """Load data from raw yaml group file. Parameters ---------- - date : datetime.date + date The date for which the policy system is set up. - group : string + group Policy system compartment. - parameters : list + parameters List of parameters to be loaded. Only relevant for in function calls. - yaml_path : path + yaml_path Path to directory of yaml_file. (Used for testing of this function). Returns ------- - out_params : dict - Dictionary of parameters loaded from raw yaml file and striped of - unnecessary keys. + Dictionary of parameters loaded from raw yaml file and striped of unnecessary keys. """ @@ -564,21 +548,25 @@ def set_date_to_beginning_of_year(dt): return out_params -def _load_rounding_parameters(date, rounding_spec): +def _load_rounding_parameters( + date: datetime.date, + rounding_spec: dict[str, Any], +) -> dict[str, Any]: """Load rounding parameters for a specific date from a dictionary. Parameters ---------- - date : datetime.date + date The date for which the policy system is set up. - rounding_spec : dictionary + rounding_spec - Keys: Functions to be rounded. - Values: Rounding parameters for all dates - Returns: - dictionary: - - Keys: Functions to be rounded. - - Values: Rounding parameters for the specified date + Returns + ------- + Loaded rounding parameters. + - Keys: Functions to be rounded. + - Values: Rounding parameters for the specified date """ out = {} @@ -620,18 +608,28 @@ def transfer_dictionary(remaining_dict, new_dict, key_list): return remaining_dict else: # Now remaining dict is just a scalar - set_by_path(new_dict, key_list, remaining_dict) + new_dict = upsert_path_and_value( + base=new_dict, path_to_upsert=key_list, value_to_upsert=remaining_dict + ) return new_dict -def get_by_path(data_dict, key_list): - """Access a nested object in root by item sequence.""" - return reduce(operator.getitem, key_list, data_dict) - - -def set_by_path(data_dict, key_list, value): - """Set a value in a nested object in root by item sequence.""" - get_by_path(data_dict, key_list[:-1])[key_list[-1]] = value +def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( + functions_tree: NestedFunctionDict, +) -> None: + """Raise error if a PolicyFunction does not have the same leaf name as the last + branch element of the tree path. + """ + tree_paths, functions, _ = optree.tree_flatten_with_path(functions_tree) + for tree_path, function in zip(tree_paths, functions): + if tree_path[-1] != function.leaf_name: + raise KeyError( + f""" + The name of the last branch element of the functions tree must be the + same as the leaf name of the PolicyFunction. The tree path {tree_path} + is not compatible with the PolicyFunction {function.leaf_name}. + """ + ) def add_progressionsfaktor(params_dict, parameter): diff --git a/src/_gettsim/policy_environment_postprocessor.py b/src/_gettsim/policy_environment_postprocessor.py deleted file mode 100644 index ac573f9249..0000000000 --- a/src/_gettsim/policy_environment_postprocessor.py +++ /dev/null @@ -1,626 +0,0 @@ -from __future__ import annotations - -import functools -import inspect -from typing import TYPE_CHECKING - -import numpy - -from _gettsim.aggregation import ( - all_by_p_id, - any_by_p_id, - count_by_p_id, - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, - max_by_p_id, - mean_by_p_id, - min_by_p_id, - sum_by_p_id, -) -from _gettsim.config import ( - SUPPORTED_GROUPINGS, - TYPES_INPUT_VARIABLES, -) -from _gettsim.functions.derived_function import DerivedFunction -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.groupings import create_groupings -from _gettsim.shared import ( - format_list_linewise, - get_names_of_arguments_without_defaults, - remove_group_suffix, -) -from _gettsim.time_conversion import create_time_conversion_functions - -if TYPE_CHECKING: - from collections.abc import Callable - - from _gettsim.policy_environment import PolicyEnvironment - - -def check_functions_and_differentiate_types( - environment: PolicyEnvironment, - targets: list[str], - data_cols, -) -> tuple[dict[str, Callable], dict[str, Callable]]: - """Create the dict with all functions that may become part of the DAG by: - - - vectorizing all functions - - adding time conversion functions, aggregation functions, and combinations - - Check that: - all targets are in set of functions or in data_cols - - Parameters - ---------- - environment: - The policy environment. - targets: - Names of functions whose output is actually needed by the user. - data_cols : list - Data columns provided by the user. - - Returns - ------- - functions_not_overridden : dict - All functions except the ones that are overridden by an input column. - functions_overridden : dict - Functions that are overridden by an input column. - - """ - # Create derived functions - ( - time_conversion_functions, - aggregate_by_group_functions, - aggregate_by_p_id_functions, - ) = _create_derived_functions( - environment, - targets, - data_cols, - ) - - # Create groupings - groupings = create_groupings() - - all_functions = { - **environment.functions, - **aggregate_by_p_id_functions, - **time_conversion_functions, - **aggregate_by_group_functions, - **groupings, - } - - _fail_if_targets_are_not_among_functions(all_functions, targets) - - # Separate all functions by whether they will be used or not. - functions_overridden = {} - functions_not_overridden = {} - for k, v in all_functions.items(): - if k in data_cols: - functions_overridden[k] = v - else: - functions_not_overridden[k] = v - - return functions_not_overridden, functions_overridden - - -def _create_derived_functions( - environment: PolicyEnvironment, - targets: list[str], - data_cols: list[str], -) -> tuple[ - dict[str, DerivedFunction], dict[str, DerivedFunction], dict[str, DerivedFunction] -]: - """ - Create functions that are derived from the user and internal functions. - - This includes: - - functions for converting to different time units - - aggregation functions - - combinations of these - """ - # Create parent-child relationships - aggregate_by_p_id_functions = _create_aggregate_by_p_id_functions( - environment.functions, - environment.aggregate_by_p_id_specs, - data_cols, - ) - - # Create functions for different time units - time_conversion_functions = create_time_conversion_functions( - {**environment.functions, **aggregate_by_p_id_functions}, data_cols - ) - - # Create aggregation functions - aggregate_by_group_functions = _create_aggregate_by_group_functions( - { - **time_conversion_functions, - **environment.functions, - **aggregate_by_p_id_functions, - }, - targets, - data_cols, - environment.aggregate_by_group_specs, - ) - - return ( - time_conversion_functions, - aggregate_by_group_functions, - aggregate_by_p_id_functions, - ) - - -def _format_duplicated_functions(duplicated_functions, functions, source): - """Format an error message showing duplicated functions and their sources.""" - lines = [] - for name in duplicated_functions: - lines.append(f"{name!r} is defined in") - lines.append(" " + inspect.getfile(functions[name])) - lines.append(" " + inspect.getfile(source[name])) - - return "\n".join(lines) - - -def _create_aggregate_by_group_functions( - user_and_internal_functions: dict[str, PolicyFunction], - targets: list[str], - data_cols: list[str], - aggregate_by_group_specs: dict[str, dict[str, str]], -) -> dict[str, DerivedFunction]: - """Create aggregation functions.""" - - # Make specs for automated sum aggregation - potential_source_cols = list(user_and_internal_functions) + data_cols - potential_agg_cols = set( - [ - arg - for func in user_and_internal_functions.values() - for arg in get_names_of_arguments_without_defaults(func) - ] - + targets - ) - - automated_sum_aggregate_by_group_cols = [ - col - for col in potential_agg_cols - if (col not in user_and_internal_functions) - and any(col.endswith(f"_{g}") for g in SUPPORTED_GROUPINGS) - and (remove_group_suffix(col) in potential_source_cols) - ] - automated_sum_aggregate_by_group_specs = { - agg_col: {"aggr": "sum", "source_col": remove_group_suffix(agg_col)} - for agg_col in automated_sum_aggregate_by_group_cols - } - - # Add automated aggregation specs. - # Note: For duplicate keys, explicitly set specs are treated with higher priority - # than automated specs. - aggregate_by_group_dict = { - **automated_sum_aggregate_by_group_specs, - **aggregate_by_group_specs, - } - - # Check validity of aggregation specs - [ - _check_agg_specs_validity(agg_specs=v, agg_col=k) - for k, v in aggregate_by_group_dict.items() - ] - - # Create functions from specs - aggregate_by_group_functions = { - agg_col: _create_one_aggregate_by_group_func( - agg_col, agg_spec, user_and_internal_functions - ) - for agg_col, agg_spec in aggregate_by_group_dict.items() - } - return aggregate_by_group_functions - - -def rename_arguments(func=None, mapper=None, annotations=None): - if not annotations: - annotations = {} - - def decorator_rename_arguments(func): - old_parameters = dict(inspect.signature(func).parameters) - parameters = [] - for name, param in old_parameters.items(): - if name in mapper: - parameters.append(param.replace(name=mapper[name])) - else: - parameters.append(param) - - signature = inspect.Signature(parameters=parameters) - - reverse_mapper = {v: k for k, v in mapper.items()} - - @functools.wraps(func) - def wrapper_rename_arguments(*args, **kwargs): - internal_kwargs = {} - for name, value in kwargs.items(): - if name in reverse_mapper: - internal_kwargs[reverse_mapper[name]] = value - elif name not in mapper: - internal_kwargs[name] = value - return func(*args, **internal_kwargs) - - wrapper_rename_arguments.__signature__ = signature - wrapper_rename_arguments.__annotations__ = annotations - - return wrapper_rename_arguments - - if callable(func): - return decorator_rename_arguments(func) - else: - return decorator_rename_arguments - - -def _check_agg_specs_validity(agg_specs, agg_col): - if "aggr" not in agg_specs: - raise KeyError(f"`aggr` key is missing for aggregation column {agg_col}.") - - if agg_specs["aggr"] != "count": - if "source_col" not in agg_specs: - raise KeyError( - f"`source_col` key is missing for aggregation column {agg_col}." - ) - - -def _annotations_for_aggregation(agg_specs, user_and_internal_functions): - annotations = {} - if agg_specs["aggr"] == "count": - annotations["return"] = int - else: - source_col = agg_specs["source_col"] - if ( - source_col in user_and_internal_functions - and "return" in user_and_internal_functions[source_col].__annotations__ - ): - annotations[source_col] = user_and_internal_functions[ - source_col - ].__annotations__["return"] - - # Find out return type - annotations["return"] = _select_return_type( - agg_specs["aggr"], annotations[source_col] - ) - elif source_col in TYPES_INPUT_VARIABLES: - annotations[source_col] = TYPES_INPUT_VARIABLES[source_col] - - # Find out return type - annotations["return"] = _select_return_type( - agg_specs["aggr"], annotations[source_col] - ) - else: - # TODO(@hmgaudecker): Think about how type annotations of aggregations of - # user-provided input variables are handled - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - pass - return annotations - - -def _select_return_type(aggr, source_col_type): - # Find out return type - if (source_col_type == int) and (aggr in ["any", "all"]): - return_type = bool - elif (source_col_type == bool) and (aggr in ["sum"]): - return_type = int - else: - return_type = source_col_type - - return return_type - - -def _create_one_aggregate_by_group_func( # noqa: PLR0912 - agg_col: str, - agg_specs: dict[str, str], - user_and_internal_functions: dict[str, PolicyFunction], -) -> DerivedFunction: - """Create an aggregation function based on aggregation specification. - - Parameters - ---------- - agg_col : str - Name of the aggregated column. - agg_specs : dict - Dictionary of aggregation specifications. Can contain the source column - ("source_col") and the group ids ("group_id") Dictionary of aggregation - specifications. Must contain the aggregation type ("aggr"). Unless - `aggr == "count"`, it must contain the column to aggregate ("source_col"). - user_and_internal_functions: dict - Dictionary of functions. - - - Returns - ------- - aggregate_by_group_func : The aggregation func with the expected signature - - """ - - # Identify grouping level - group_id = None - for g in SUPPORTED_GROUPINGS: - if agg_col.endswith(f"_{g}"): - group_id = f"{g}_id" - if not group_id: - raise ValueError( - "Name of aggregated column needs to have a suffix " - "indicating the group over which it is aggregated. " - f"The name {agg_col} does not do so." - ) - - annotations = _annotations_for_aggregation( - agg_specs=agg_specs, - user_and_internal_functions=user_and_internal_functions, - ) - - if agg_specs["aggr"] == "count": - - @rename_arguments(mapper={"group_id": group_id}, annotations=annotations) - def aggregate_by_group_func(group_id): - return grouped_count(group_id) - - else: - mapper = {"source_col": agg_specs["source_col"], "group_id": group_id} - if agg_specs["aggr"] == "sum": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_sum(source_col, group_id) - - elif agg_specs["aggr"] == "mean": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_mean(source_col, group_id) - - elif agg_specs["aggr"] == "max": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_max(source_col, group_id) - - elif agg_specs["aggr"] == "min": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_min(source_col, group_id) - - elif agg_specs["aggr"] == "any": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_any(source_col, group_id) - - elif agg_specs["aggr"] == "all": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_all(source_col, group_id) - - else: - raise ValueError(f"Aggr {agg_specs['aggr']} is not implemented.") - - if agg_specs["aggr"] == "count": - derived_from = group_id - else: - derived_from = (agg_specs["source_col"], group_id) - - return DerivedFunction( - aggregate_by_group_func, - function_name=agg_col, - derived_from=derived_from, - ) - - -def _create_aggregate_by_p_id_functions( - user_and_internal_functions: dict[str, PolicyFunction], - aggregate_by_p_id_specs: dict[str, dict[str, str]], - data_cols: list[str], -) -> dict[str, DerivedFunction]: - """Create function dict with functions that link variables across persons.""" - - aggregate_by_p_id_dict = aggregate_by_p_id_specs - - for k, v in aggregate_by_p_id_dict.items(): - _check_agg_specs_validity(agg_specs=v, agg_col=k) - - aggregate_by_p_id_functions = { - agg_by_p_id_col: _create_one_aggregate_by_p_id_func( - agg_col=agg_by_p_id_col, - agg_specs=agg_by_p_id_spec, - user_and_internal_functions=user_and_internal_functions, - ) - for agg_by_p_id_col, agg_by_p_id_spec in aggregate_by_p_id_dict.items() - if ( - agg_by_p_id_spec["source_col"] in user_and_internal_functions - or agg_by_p_id_spec["source_col"] in data_cols - ) - } - - return aggregate_by_p_id_functions - - -def _create_one_aggregate_by_p_id_func( - agg_col: str, - agg_specs: dict[str, str], - user_and_internal_functions: dict[str, PolicyFunction], -) -> DerivedFunction: - """Create one function that links variables across persons. - - Parameters - ---------- - agg_col : str - Name of the aggregated column. - agg_specs : dict - Dictionary of aggregation specifications. Must contain the p_id by which to - aggregate ("p_id_to_aggregate_by") and the aggregation type ("aggr"). Unless - `aggr == "count"`, it must contain the column to aggregate ("source_col"). - user_and_internal_functions: dict - Dictionary of functions. - - - Returns - ------- - aggregate_by_p_id_func : The aggregation func with the expected signature - - """ - - annotations = _annotations_for_aggregation( - agg_specs=agg_specs, - user_and_internal_functions=user_and_internal_functions, - ) - - # Define aggregation func - if agg_specs["aggr"] == "count": - - @rename_arguments( - mapper={ - "p_id_to_aggregate_by": agg_specs["p_id_to_aggregate_by"], - "p_id_to_store_by": "p_id", - }, - annotations=annotations, - ) - def aggregate_by_p_id_func(p_id_to_aggregate_by, p_id_to_store_by): - return count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) - - else: - mapper = { - "p_id_to_aggregate_by": agg_specs["p_id_to_aggregate_by"], - "p_id_to_store_by": "p_id", - "column": agg_specs["source_col"], - } - - if agg_specs["aggr"] == "sum": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif agg_specs["aggr"] == "mean": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif agg_specs["aggr"] == "max": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif agg_specs["aggr"] == "min": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif agg_specs["aggr"] == "any": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif agg_specs["aggr"] == "all": - - @rename_arguments( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - else: - raise ValueError(f"Aggr {agg_specs['aggr']} is not implemented.") - - if agg_specs["aggr"] == "count": - derived_from = agg_specs["p_id_to_aggregate_by"] - else: - derived_from = (agg_specs["source_col"], agg_specs["p_id_to_aggregate_by"]) - - return DerivedFunction( - aggregate_by_p_id_func, - function_name=agg_col, - derived_from=derived_from, - ) - - -def _vectorize_func(func): - # If the function is already vectorized, return it as is - if hasattr(func, "__info__") and func.__info__.get("skip_vectorization", False): - return func - - if isinstance(func, PolicyFunction): - return func - - # What should work once that Jax backend is fully supported - signature = inspect.signature(func) - func_vec = numpy.vectorize(func) - - @functools.wraps(func) - def wrapper_vectorize_func(*args, **kwargs): - return func_vec(*args, **kwargs) - - wrapper_vectorize_func.__signature__ = signature - - return wrapper_vectorize_func - - -def _fail_if_targets_are_not_among_functions(functions, targets): - """Fail if some target is not among functions. - - Parameters - ---------- - functions : dict of callable - Dictionary containing functions to build the DAG. - targets : list of str - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. - - Raises - ------ - ValueError - Raised if any member of `targets` is not among functions. - - """ - targets_not_in_functions = set(targets) - set(functions) - if targets_not_in_functions: - formatted = format_list_linewise(targets_not_in_functions) - raise ValueError( - f"The following targets have no corresponding function:\n{formatted}" - ) diff --git a/src/_gettsim/shared.py b/src/_gettsim/shared.py index 4f99b1a34c..f74737368c 100644 --- a/src/_gettsim/shared.py +++ b/src/_gettsim/shared.py @@ -1,13 +1,17 @@ import inspect -import re import textwrap from collections.abc import Callable -from datetime import date -from typing import TypeVar +from typing import Any, TypeVar +import flatten_dict import numpy +from dags.signature import rename_arguments +from flatten_dict.reducers import make_reducer +from flatten_dict.splitters import make_splitter -from _gettsim.config import SUPPORTED_GROUPINGS +from _gettsim.config import QUALIFIED_NAME_SEPARATOR, SUPPORTED_GROUPINGS +from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.gettsim_typing import NestedDataDict, NestedFunctionDict class KeyErrorMessage(str): @@ -19,189 +23,135 @@ def __repr__(self): return str(self) -TIME_DEPENDENT_FUNCTIONS: dict[str, list[Callable]] = {} - - -def policy_info( - *, - start_date: str = "0001-01-01", - end_date: str = "9999-12-31", - name_in_dag: str | None = None, - params_key_for_rounding: str | None = None, - skip_vectorization: bool = False, -) -> Callable: - """ - A decorator to attach additional information to a policy function. +def format_list_linewise(list_): + formatted_list = '",\n "'.join(list_) + return textwrap.dedent( + """ + [ + "{formatted_list}", + ] + """ + ).format(formatted_list=formatted_list) - **Dates active (start_date, end_date, name_in_dag):** - Specifies that a function is only active between two dates, `start` and `end`. By - using the `change_name` argument, you can specify a different name for the function - in the DAG. +qualified_name_reducer = make_reducer(delimiter=QUALIFIED_NAME_SEPARATOR) +qualified_name_splitter = make_splitter(delimiter=QUALIFIED_NAME_SEPARATOR) - Note that even if you use this decorator with the `change_name` argument, you must - ensure that the function name is unique in the file where it is defined. Otherwise, - the function would be overwritten by the last function with the same name. - **Rounding spec (params_key_for_rounding):** +def create_tree_from_path_and_value(path: tuple[str], value: Any = None) -> dict: + """Create a nested dict with 'path' as keys and 'value' as leaf. - Adds the location of the rounding specification to a function. + Example: + Input: + path = ("a", "b", "c") + value = None + Result: + {"a": {"b": {"c": None}}} Parameters ---------- - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - name_in_dag - The name that should be used as the key for the function in the DAG. - If omitted, we use the name of the function as defined. - params_key_for_rounding - Key of the parameters dictionary where rounding specifications are found. For - functions that are not user-written this is just the name of the respective - .yaml file. - skip_vectorization - Whether the function is already vectorized and, thus, should not be vectorized - again. + path + The path to create the tree structure from. + value (Optional) + The value to insert into the tree structure. Returns ------- - The function with attributes __info__["start_date"], - __info__["end_date"], __info__["name_in_dag"], and - __info__["params_key_for_rounding"]. + The tree structure. """ + nested_dict = value + for entry in reversed(path): + nested_dict = {entry: nested_dict} + return nested_dict - _validate_dashed_iso_date(start_date) - _validate_dashed_iso_date(end_date) - - start_date = date.fromisoformat(start_date) - end_date = date.fromisoformat(end_date) - - _validate_date_range(start_date, end_date) - - def inner(func: Callable) -> Callable: - dag_key = name_in_dag if name_in_dag else func.__name__ - - _check_for_conflicts_in_time_dependent_functions( - dag_key, func.__name__, start_date, end_date - ) - - # Remember data from decorator - if not hasattr(func, "__info__"): - func.__info__ = {} - func.__info__["start_date"] = start_date - func.__info__["end_date"] = end_date - func.__info__["name_in_dag"] = dag_key - if params_key_for_rounding is not None: - func.__info__["params_key_for_rounding"] = params_key_for_rounding - func.__info__["skip_vectorization"] = skip_vectorization - # Register time-dependent function - if dag_key not in TIME_DEPENDENT_FUNCTIONS: - TIME_DEPENDENT_FUNCTIONS[dag_key] = [] - TIME_DEPENDENT_FUNCTIONS[dag_key].append(func) - - return func - - return inner - - -_dashed_iso_date = re.compile(r"\d{4}-\d{2}-\d{2}") - - -def _validate_dashed_iso_date(date_str: str): - if not _dashed_iso_date.match(date_str): - raise ValueError(f"Date {date_str} does not match the format YYYY-MM-DD.") +def upsert_tree(base: dict, to_upsert: dict) -> dict: + """ + Upsert a tree into another tree for trees defined by dictionaries only. + Note: In case of conflicting trees, the to_upsert takes precedence. -def _validate_date_range(start: date, end: date): - if start > end: - raise ValueError(f"The start date {start} must be before the end date {end}.") + Example: + Input: + base = {"a": {"b": {"c": None}}} + to_upsert = {"a": {"b": {"d": None}}} + Output: + {"a": {"b": {"c": None, "d": None}}} + Parameters + ---------- + base + The base dictionary. + to_upsert + The dictionary to update the base dictionary. -def _check_for_conflicts_in_time_dependent_functions( - dag_key: str, function_name: str, start: date, end: date -): - """ - Raises an error if a different time-dependent function has already been registered - for the given dag_key and their date ranges overlap. + Returns + ------- + The merged dictionary. """ + result = base.copy() - if dag_key not in TIME_DEPENDENT_FUNCTIONS: - return - - for f in TIME_DEPENDENT_FUNCTIONS[dag_key]: - # A function is not conflicting with itself. We compare names instead of - # identities since functions might get wrapped, which would change their - # identity but not their name. - if f.__name__ != function_name and ( - start <= f.__info__["start_date"] <= end - or f.__info__["start_date"] <= start <= f.__info__["end_date"] - ): - raise ConflictingTimeDependentFunctionsError( - dag_key, - function_name, - start, - end, - f.__name__, - f.__info__["start_date"], - f.__info__["end_date"], - ) + for key, value in to_upsert.items(): + base_value = result.get(key) + if key in result and isinstance(base_value, dict) and isinstance(value, dict): + result[key] = upsert_tree(base=base_value, to_upsert=value) + else: + result[key] = value + return result -class ConflictingTimeDependentFunctionsError(Exception): - """Raised when two time-dependent functions have overlapping time ranges.""" - - def __init__( # noqa: PLR0913 - self, - dag_key: str, - function_name_1: str, - start_1: date, - end_1: date, - function_name_2: str, - start_2: date, - end_2: date, - ): - super().__init__( - f"Conflicting functions for key {dag_key!r}: " - f"{function_name_1!r} ({start_1} to {end_1}) vs. " - f"{function_name_2!r} ({start_2} to {end_2}).\n\n" - f"Overlapping from {max(start_1, start_2)} to {min(end_1, end_2)}." - ) +def upsert_path_and_value( + base: dict[str, Any], path_to_upsert: tuple[str], value_to_upsert: Any = None +) -> dict[str, Any]: + """Update tree with a path and value. -def format_list_linewise(list_): - formatted_list = '",\n "'.join(list_) - return textwrap.dedent( - """ - [ - "{formatted_list}", - ] - """ - ).format(formatted_list=formatted_list) + The path is a list of strings that represent the keys in the nested dictionary. If + the path does not exist, it will be created. If the path already exists, the value + will be updated. + """ + to_upsert = create_tree_from_path_and_value( + path=path_to_upsert, value=value_to_upsert + ) + return upsert_tree(base=base, to_upsert=to_upsert) -def parse_to_list_of_strings(user_input, name): - """Parse None, str, and list of strings to list of strings. +def partition_tree_by_reference_tree( + tree_to_partition: NestedFunctionDict | NestedDataDict, + reference_tree: NestedFunctionDict | NestedDataDict, +) -> tuple[ + NestedFunctionDict | NestedDataDict, + NestedFunctionDict | NestedDataDict, +]: + """ + Partition a tree into two based on the presence of its paths in a reference tree. - Note that the function automatically removes duplicates. + Parameters + ---------- + tree_to_partition + The tree to be partitioned. + reference_tree + The reference tree used to determine the partitioning. + Returns + ------- + A tuple containing: + - The first tree with leaves present in both trees. + - The second tree with leaves absent in the reference tree. """ - if user_input is None: - user_input = [] - elif isinstance(user_input, str): - user_input = [user_input] - elif isinstance(user_input, list) and all(isinstance(i, str) for i in user_input): - pass - else: - raise NotImplementedError( - f"{name!r} needs to be None, a string or a list of strings." - ) + ref_paths = set(flatten_dict.flatten(reference_tree).keys()) + flat = flatten_dict.flatten(tree_to_partition) + intersection = flatten_dict.unflatten( + {path: leaf for path, leaf in flat.items() if path in ref_paths} + ) + difference = flatten_dict.unflatten( + {path: leaf for path, leaf in flat.items() if path not in ref_paths} + ) - return sorted(set(user_input)) + return intersection, difference -def format_errors_and_warnings(text, width=79): +def format_errors_and_warnings(text: str, width: int = 79) -> str: """Format our own exception messages and warnings by dedenting paragraphs and wrapping at the specified width. Mainly required because of messages are written as part of indented blocks in our source code. @@ -215,8 +165,7 @@ def format_errors_and_warnings(text, width=79): Returns ------- - formatted_text : str - Correctly dedented, wrapped text. + Correctly dedented, wrapped text. """ text = text.lstrip("\n") @@ -232,7 +181,7 @@ def format_errors_and_warnings(text, width=79): return formatted_text -def get_names_of_arguments_without_defaults(function): +def get_names_of_arguments_without_defaults(function: PolicyFunction) -> list[str]: """Get argument names without defaults. The detection of argument names also works for partialed functions. @@ -250,11 +199,7 @@ def get_names_of_arguments_without_defaults(function): """ parameters = inspect.signature(function).parameters - argument_names_without_defaults = [ - p for p in parameters if parameters[p].default == parameters[p].empty - ] - - return argument_names_without_defaults + return [p for p in parameters if parameters[p].default == parameters[p].empty] def remove_group_suffix(col): @@ -292,20 +237,25 @@ def join_numpy( Returns ------- - numpy.ndarray[Out] - The joined array. + The joined array. """ if len(numpy.unique(primary_key)) != len(primary_key): keys, counts = numpy.unique(primary_key, return_counts=True) duplicate_primary_keys = keys[counts > 1] - raise ValueError(f"Duplicate primary keys: {duplicate_primary_keys}") + msg = format_errors_and_warnings( + f"Duplicate primary keys: {duplicate_primary_keys}", + ) + raise ValueError(msg) invalid_foreign_keys = foreign_key[ (foreign_key >= 0) & (~numpy.isin(foreign_key, primary_key)) ] if len(invalid_foreign_keys) > 0: - raise ValueError(f"Invalid foreign keys: {invalid_foreign_keys}") + msg = format_errors_and_warnings( + f"Invalid foreign keys: {invalid_foreign_keys}", + ) + raise ValueError(msg) # For each foreign key and for each primary key, check if they match matches_foreign_key = foreign_key[:, None] == primary_key @@ -326,3 +276,75 @@ def join_numpy( # Return the target at the index of the first matching primary key return padded_targets.take(indices) + + +def rename_arguments_and_add_annotations( + function: Callable | None = None, + *, + mapper: dict | None = None, + annotations: dict | None = None, +): + wrapper = rename_arguments(function, mapper=mapper) + + if annotations: + wrapper.__annotations__ = annotations + + return wrapper + + +def assert_valid_gettsim_pytree( + tree: Any, leaf_checker: Callable, tree_name: str +) -> None: + """ + Recursively assert that a pytree meets the following conditions: + - The tree is a dictionary. + - All keys are strings. + - All leaves satisfy a provided condition (leaf_checker). + + Parameters + ---------- + tree : Any + The tree to validate. + leaf_checker : Callable + A function that takes a leaf and returns True if it is valid. + tree_name : str + The name of the tree (used for error messages). + + Raises + ------ + TypeError + If any branch or leaf does not meet the expected requirements. + """ + + def _assert_valid_gettsim_pytree( + subtree: Any, current_key: tuple[str, ...] + ) -> None: + def format_key_path(key_tuple: tuple[str, ...]) -> str: + return "".join(f"[{k}]" for k in key_tuple) + + if not isinstance(subtree, dict): + path_str = format_key_path(current_key) + msg = format_errors_and_warnings( + f"{tree_name}{path_str} must be a dict, got {type(subtree)}." + ) + raise TypeError(msg) + + for key, value in subtree.items(): + new_key_path = (*current_key, key) + if not isinstance(key, str): + msg = format_errors_and_warnings( + f"Key {key} in {tree_name}{format_key_path(current_key)} must be a " + f"string but got {type(key)}." + ) + raise TypeError(msg) + if isinstance(value, dict): + _assert_valid_gettsim_pytree(value, new_key_path) + else: + if not leaf_checker(value): + msg = format_errors_and_warnings( + f"Leaf at {tree_name}{format_key_path(new_key_path)} is " + f"invalid: got {value} of type {type(value)}." + ) + raise TypeError(msg) + + _assert_valid_gettsim_pytree(tree, current_key=()) diff --git a/src/_gettsim/social_insurance_contributions/arbeitsl_v.py b/src/_gettsim/social_insurance_contributions/arbeitsl_v.py index aaf2a2da16..fd0befd04b 100644 --- a/src/_gettsim/social_insurance_contributions/arbeitsl_v.py +++ b/src/_gettsim/social_insurance_contributions/arbeitsl_v.py @@ -1,6 +1,6 @@ """Functions for modeling unemployment and pension insurance.""" -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def sozialv_beitr_arbeitnehmer_m( @@ -87,7 +87,7 @@ def _sozialv_beitr_summe_m( return out -@policy_info(end_date="2003-03-31", name_in_dag="arbeitsl_v_beitr_arbeitnehmer_m") +@policy_function(end_date="2003-03-31", leaf_name="arbeitsl_v_beitr_arbeitnehmer_m") def arbeitsl_v_beitr_arbeitnehmer_m_vor_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_bruttolohn_m: float, @@ -122,7 +122,7 @@ def arbeitsl_v_beitr_arbeitnehmer_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="arbeitsl_v_beitr_arbeitnehmer_m") +@policy_function(start_date="2003-04-01", leaf_name="arbeitsl_v_beitr_arbeitnehmer_m") def arbeitsl_v_beitr_arbeitnehmer_m_mit_midijob( geringfügig_beschäftigt: bool, in_gleitzone: bool, @@ -165,7 +165,7 @@ def arbeitsl_v_beitr_arbeitnehmer_m_mit_midijob( return out -@policy_info(end_date="2003-03-31", name_in_dag="arbeitsl_v_beitr_arbeitgeber_m") +@policy_function(end_date="2003-03-31", leaf_name="arbeitsl_v_beitr_arbeitgeber_m") def arbeitsl_v_beitr_arbeitgeber_m_vor_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_bruttolohn_m: float, @@ -200,7 +200,7 @@ def arbeitsl_v_beitr_arbeitgeber_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="arbeitsl_v_beitr_arbeitgeber_m") +@policy_function(start_date="2003-04-01", leaf_name="arbeitsl_v_beitr_arbeitgeber_m") def arbeitsl_v_beitr_arbeitgeber_m_mit_midijob( geringfügig_beschäftigt: bool, in_gleitzone: bool, @@ -243,7 +243,7 @@ def arbeitsl_v_beitr_arbeitgeber_m_mit_midijob( return out -@policy_info(start_date="2003-04-01") +@policy_function(start_date="2003-04-01") def _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( midijob_bemessungsentgelt_m: float, sozialv_beitr_params: dict, @@ -270,10 +270,10 @@ def _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2022-09-30", - name_in_dag="_arbeitsl_v_beitr_midijob_arbeitgeber_m", + leaf_name="_arbeitsl_v_beitr_midijob_arbeitgeber_m", ) def _arbeitsl_v_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( bruttolohn_m: float, @@ -297,8 +297,8 @@ def _arbeitsl_v_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( return out -@policy_info( - start_date="2022-10-01", name_in_dag="_arbeitsl_v_beitr_midijob_arbeitgeber_m" +@policy_function( + start_date="2022-10-01", leaf_name="_arbeitsl_v_beitr_midijob_arbeitgeber_m" ) def _arbeitsl_v_beitr_midijob_arbeitgeber_m_residuum( _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -324,10 +324,10 @@ def _arbeitsl_v_beitr_midijob_arbeitgeber_m_residuum( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2022-09-30", - name_in_dag="_arbeitsl_v_beitr_midijob_arbeitnehmer_m", + leaf_name="_arbeitsl_v_beitr_midijob_arbeitnehmer_m", ) def _arbeitsl_v_beitr_midijob_arbeitnehmer_m_residuum( _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -354,8 +354,8 @@ def _arbeitsl_v_beitr_midijob_arbeitnehmer_m_residuum( return out -@policy_info( - start_date="2022-10-01", name_in_dag="_arbeitsl_v_beitr_midijob_arbeitnehmer_m" +@policy_function( + start_date="2022-10-01", leaf_name="_arbeitsl_v_beitr_midijob_arbeitnehmer_m" ) def _arbeitsl_v_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, diff --git a/src/_gettsim/social_insurance_contributions/eink_grenzen.py b/src/_gettsim/social_insurance_contributions/eink_grenzen.py index 66e8263271..663669bd61 100644 --- a/src/_gettsim/social_insurance_contributions/eink_grenzen.py +++ b/src/_gettsim/social_insurance_contributions/eink_grenzen.py @@ -1,9 +1,9 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info( +@policy_function( end_date="1999-12-31", - name_in_dag="minijob_grenze", + leaf_name="minijob_grenze", params_key_for_rounding="sozialv_beitr", ) def minijob_grenze_unterscheidung_ost_west( @@ -29,10 +29,10 @@ def minijob_grenze_unterscheidung_ost_west( return float(out) -@policy_info( +@policy_function( start_date="2000-01-01", end_date="2022-09-30", - name_in_dag="minijob_grenze", + leaf_name="minijob_grenze", params_key_for_rounding="sozialv_beitr", ) def minijob_grenze_einheitlich(sozialv_beitr_params: dict) -> float: @@ -52,9 +52,9 @@ def minijob_grenze_einheitlich(sozialv_beitr_params: dict) -> float: return float(sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]) -@policy_info( +@policy_function( start_date="2022-10-01", - name_in_dag="minijob_grenze", + leaf_name="minijob_grenze", params_key_for_rounding="sozialv_beitr", ) def minijob_grenze_from_minimum_wage(sozialv_beitr_params: dict) -> float: @@ -101,7 +101,7 @@ def geringfügig_beschäftigt(bruttolohn_m: float, minijob_grenze: float) -> boo return bruttolohn_m <= minijob_grenze -@policy_info(start_date="2003-04-01") +@policy_function(start_date="2003-04-01") def in_gleitzone( bruttolohn_m: float, geringfügig_beschäftigt: bool, @@ -134,10 +134,10 @@ def in_gleitzone( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2004-12-31", - name_in_dag="midijob_faktor_f", + leaf_name="midijob_faktor_f", params_key_for_rounding="sozialv_beitr", ) def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( @@ -190,10 +190,10 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( return out -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2022-09-30", - name_in_dag="midijob_faktor_f", + leaf_name="midijob_faktor_f", params_key_for_rounding="sozialv_beitr", ) def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( @@ -248,9 +248,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( return out -@policy_info( +@policy_function( start_date="2022-10-01", - name_in_dag="midijob_faktor_f", + leaf_name="midijob_faktor_f", params_key_for_rounding="sozialv_beitr", ) def midijob_faktor_f_ohne_minijob_steuerpauschale( @@ -306,10 +306,10 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2022-09-30", - name_in_dag="midijob_bemessungsentgelt_m", + leaf_name="midijob_bemessungsentgelt_m", ) def midijob_bemessungsentgelt_m_bis_09_2022( bruttolohn_m: float, @@ -364,7 +364,7 @@ def midijob_bemessungsentgelt_m_bis_09_2022( return minijob_anteil + lohn_über_mini * gewichtete_midijob_rate -@policy_info(start_date="2022-10-01", name_in_dag="midijob_bemessungsentgelt_m") +@policy_function(start_date="2022-10-01", leaf_name="midijob_bemessungsentgelt_m") def midijob_bemessungsentgelt_m_ab_10_2022( bruttolohn_m: float, midijob_faktor_f: float, @@ -451,7 +451,7 @@ def _midijob_beitragspfl_einnahme_arbeitnehmer_m( return out -@policy_info(end_date="2003-03-31", name_in_dag="regulär_beschäftigt") +@policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") def regulär_beschäftigt_vor_midijob(bruttolohn_m: float, minijob_grenze: float) -> bool: """Regular employment check until March 2003. @@ -475,7 +475,7 @@ def regulär_beschäftigt_vor_midijob(bruttolohn_m: float, minijob_grenze: float return out -@policy_info(start_date="2003-04-01", name_in_dag="regulär_beschäftigt") +@policy_function(start_date="2003-04-01", leaf_name="regulär_beschäftigt") def regulär_beschäftigt_mit_midijob( bruttolohn_m: float, sozialv_beitr_params: dict ) -> bool: diff --git a/src/_gettsim/social_insurance_contributions/ges_krankenv.py b/src/_gettsim/social_insurance_contributions/ges_krankenv.py index 69506582f6..f6464182ba 100644 --- a/src/_gettsim/social_insurance_contributions/ges_krankenv.py +++ b/src/_gettsim/social_insurance_contributions/ges_krankenv.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(end_date="2003-03-31", name_in_dag="ges_krankenv_beitr_arbeitnehmer_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_krankenv_beitr_arbeitnehmer_m") def ges_krankenv_beitr_arbeitnehmer_m_vor_midijob( geringfügig_beschäftigt: bool, ges_krankenv_beitr_rentner_m: float, @@ -43,7 +43,7 @@ def ges_krankenv_beitr_arbeitnehmer_m_vor_midijob( return out + ges_krankenv_beitr_rentner_m -@policy_info(start_date="2003-04-01", name_in_dag="ges_krankenv_beitr_arbeitnehmer_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_krankenv_beitr_arbeitnehmer_m") def ges_krankenv_beitr_arbeitnehmer_m_mit_midijob( # noqa: PLR0913 geringfügig_beschäftigt: bool, ges_krankenv_beitr_rentner_m: float, @@ -93,7 +93,7 @@ def ges_krankenv_beitr_arbeitnehmer_m_mit_midijob( # noqa: PLR0913 return out + ges_krankenv_beitr_rentner_m -@policy_info(end_date="2003-03-31", name_in_dag="ges_krankenv_beitr_arbeitgeber_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_krankenv_beitr_arbeitgeber_m") def ges_krankenv_beitr_arbeitgeber_m_vor_midijob( geringfügig_beschäftigt: bool, bruttolohn_m: float, @@ -137,7 +137,7 @@ def ges_krankenv_beitr_arbeitgeber_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="ges_krankenv_beitr_arbeitgeber_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_krankenv_beitr_arbeitgeber_m") def ges_krankenv_beitr_arbeitgeber_m_mit_midijob( geringfügig_beschäftigt: bool, in_gleitzone: bool, @@ -189,10 +189,10 @@ def ges_krankenv_beitr_arbeitgeber_m_mit_midijob( return out -@policy_info( +@policy_function( start_date="2005-07-01", end_date="2014-12-31", - name_in_dag="ges_krankenv_zusatzbeitr_satz", + leaf_name="ges_krankenv_zusatzbeitr_satz", ) def ges_krankenv_zusatzbeitr_satz_from_sonderbeitr_satz( sozialv_beitr_params: dict, @@ -213,9 +213,9 @@ def ges_krankenv_zusatzbeitr_satz_from_sonderbeitr_satz( return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["sonderbeitrag"] -@policy_info( +@policy_function( start_date="2015-01-01", - name_in_dag="ges_krankenv_zusatzbeitr_satz", + leaf_name="ges_krankenv_zusatzbeitr_satz", ) def ges_krankenv_zusatzbeitr_satz_from_mean_zusatzbeitrag( sozialv_beitr_params: dict, @@ -236,7 +236,7 @@ def ges_krankenv_zusatzbeitr_satz_from_mean_zusatzbeitrag( return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_zusatzbeitrag"] -@policy_info( +@policy_function( end_date="2005-06-30", ) def ges_krankenv_beitr_satz_arbeitnehmer( @@ -260,7 +260,7 @@ def ges_krankenv_beitr_satz_arbeitnehmer( return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 -@policy_info( +@policy_function( end_date="2005-06-30", ) def _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang( @@ -289,10 +289,10 @@ def _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang( ) -@policy_info( +@policy_function( start_date="2005-07-01", end_date="2008-12-31", - name_in_dag="ges_krankenv_beitr_satz_arbeitnehmer", + leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", ) def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer( ges_krankenv_zusatzbeitr_satz: float, @@ -324,10 +324,10 @@ def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer return mean_allgemein / 2 + ges_krankenv_zusatzbeitr_satz -@policy_info( +@policy_function( start_date="2005-07-01", end_date="2008-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", ) def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 ges_krankenv_zusatzbeitr_satz: float, @@ -359,10 +359,10 @@ def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer return mean_allgemein / 2 + ges_krankenv_zusatzbeitr_satz -@policy_info( +@policy_function( start_date="2009-01-01", end_date="2018-12-31", - name_in_dag="ges_krankenv_beitr_satz_arbeitnehmer", + leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", ) def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer( ges_krankenv_zusatzbeitr_satz: float, @@ -392,10 +392,10 @@ def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer( return allgemein / 2 + ges_krankenv_zusatzbeitr_satz -@policy_info( +@policy_function( start_date="2009-01-01", end_date="2018-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", ) def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( ges_krankenv_zusatzbeitr_satz: float, @@ -427,9 +427,9 @@ def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer_jahresanf return allgemein / 2 + ges_krankenv_zusatzbeitr_satz -@policy_info( +@policy_function( start_date="2019-01-01", - name_in_dag="ges_krankenv_beitr_satz_arbeitnehmer", + leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", ) def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch( ges_krankenv_zusatzbeitr_satz: float, @@ -454,9 +454,9 @@ def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch( return (allgemeiner_beitr_satz + ges_krankenv_zusatzbeitr_satz) / 2 -@policy_info( +@policy_function( start_date="2019-01-01", - name_in_dag="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", ) def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch_jahresanfang( ges_krankenv_zusatzbeitr_satz: float, @@ -481,9 +481,9 @@ def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch_jahresanfang return (allgemeiner_beitr_satz + ges_krankenv_zusatzbeitr_satz) / 2 -@policy_info( +@policy_function( end_date="2008-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", ) def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer( # noqa: E501 sozialv_beitr_params: dict, @@ -505,9 +505,9 @@ def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_ return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 -@policy_info( +@policy_function( end_date="2008-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", ) def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 sozialv_beitr_params: dict, @@ -534,10 +534,10 @@ def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_ ) -@policy_info( +@policy_function( start_date="2009-01-01", end_date="2018-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", ) def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehmer( sozialv_beitr_params: dict, @@ -560,10 +560,10 @@ def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehm return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] / 2 -@policy_info( +@policy_function( start_date="2009-01-01", end_date="2018-12-31", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", ) def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 sozialv_beitr_params: dict, @@ -588,9 +588,9 @@ def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehm ) -@policy_info( +@policy_function( start_date="2019-01-01", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", ) def _ges_krankenv_beitr_satz_arbeitgeber_zusatzbeitrag_paritätisch( ges_krankenv_beitr_satz_arbeitnehmer: float, @@ -612,9 +612,9 @@ def _ges_krankenv_beitr_satz_arbeitgeber_zusatzbeitrag_paritätisch( return ges_krankenv_beitr_satz_arbeitnehmer -@policy_info( +@policy_function( start_date="2019-01-01", - name_in_dag="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", + leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", ) def _ges_krankenv_beitr_satz_arbeitgeber_zusatzbeitrag_paritätisch_jahresanfang( _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang: float, @@ -840,7 +840,7 @@ def ges_krankenv_beitr_rentner_m( ) -@policy_info(start_date="2003-04-01") +@policy_function(start_date="2003-04-01") def _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( midijob_bemessungsentgelt_m: float, ges_krankenv_beitr_satz_arbeitnehmer: float, @@ -869,10 +869,10 @@ def _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2022-09-30", - name_in_dag="_ges_krankenv_beitr_midijob_arbeitgeber_m", + leaf_name="_ges_krankenv_beitr_midijob_arbeitgeber_m", ) def _ges_krankenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( bruttolohn_m: float, in_gleitzone: bool, _ges_krankenv_beitr_satz_arbeitgeber: float @@ -901,8 +901,8 @@ def _ges_krankenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( return out -@policy_info( - start_date="2022-10-01", name_in_dag="_ges_krankenv_beitr_midijob_arbeitgeber_m" +@policy_function( + start_date="2022-10-01", leaf_name="_ges_krankenv_beitr_midijob_arbeitgeber_m" ) def _ges_krankenv_beitr_midijob_arbeitgeber_m_residuum( _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -937,10 +937,10 @@ def _ges_krankenv_beitr_midijob_arbeitgeber_m_residuum( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2022-09-30", - name_in_dag="_ges_krankenv_beitr_midijob_arbeitnehmer_m", + leaf_name="_ges_krankenv_beitr_midijob_arbeitnehmer_m", ) def _ges_krankenv_beitr_midijob_arbeitnehmer_m_residuum( _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -964,8 +964,8 @@ def _ges_krankenv_beitr_midijob_arbeitnehmer_m_residuum( ) -@policy_info( - start_date="2022-10-01", name_in_dag="_ges_krankenv_beitr_midijob_arbeitnehmer_m" +@policy_function( + start_date="2022-10-01", leaf_name="_ges_krankenv_beitr_midijob_arbeitnehmer_m" ) def _ges_krankenv_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, diff --git a/src/_gettsim/social_insurance_contributions/ges_pflegev.py b/src/_gettsim/social_insurance_contributions/ges_pflegev.py index 758f75f75f..4609467f02 100644 --- a/src/_gettsim/social_insurance_contributions/ges_pflegev.py +++ b/src/_gettsim/social_insurance_contributions/ges_pflegev.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(start_date="2005-01-01") +@policy_function(start_date="2005-01-01") def ges_pflegev_zusatz_kinderlos( ges_pflegev_hat_kinder: bool, alter: int, @@ -29,10 +29,10 @@ def ges_pflegev_zusatz_kinderlos( return (not ges_pflegev_hat_kinder) and alter >= mindestalter -@policy_info( +@policy_function( start_date="1995-01-01", end_date="2004-12-31", - name_in_dag="ges_pflegev_beitr_satz_arbeitnehmer", + leaf_name="ges_pflegev_beitr_satz_arbeitnehmer", ) def ges_pflegev_beitr_satz_arbeitnehmer_ohne_zusatz_fuer_kinderlose( sozialv_beitr_params: dict, @@ -54,10 +54,10 @@ def ges_pflegev_beitr_satz_arbeitnehmer_ohne_zusatz_fuer_kinderlose( return sozialv_beitr_params["beitr_satz"]["ges_pflegev"] -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2023-06-30", - name_in_dag="ges_pflegev_beitr_satz_arbeitnehmer", + leaf_name="ges_pflegev_beitr_satz_arbeitnehmer", ) def ges_pflegev_beitr_satz_arbeitnehmer_zusatz_kinderlos_dummy( ges_pflegev_zusatz_kinderlos: bool, @@ -87,7 +87,9 @@ def ges_pflegev_beitr_satz_arbeitnehmer_zusatz_kinderlos_dummy( return out -@policy_info(start_date="2023-07-01", name_in_dag="ges_pflegev_beitr_satz_arbeitnehmer") +@policy_function( + start_date="2023-07-01", leaf_name="ges_pflegev_beitr_satz_arbeitnehmer" +) def ges_pflegev_beitr_satz_arbeitnehmer_mit_kinder_abschlag( ges_pflegev_anz_kinder_bis_24: int, ges_pflegev_zusatz_kinderlos: bool, @@ -126,7 +128,7 @@ def ges_pflegev_beitr_satz_arbeitnehmer_mit_kinder_abschlag( return out -@policy_info(end_date="2003-03-31", name_in_dag="ges_pflegev_beitr_arbeitnehmer_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_pflegev_beitr_arbeitnehmer_m") def ges_pflegev_beitr_arbeitnehmer_m_vor_midijob( _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m: float, geringfügig_beschäftigt: bool, @@ -166,7 +168,7 @@ def ges_pflegev_beitr_arbeitnehmer_m_vor_midijob( return out + ges_pflegev_beitr_rentner_m -@policy_info(start_date="2003-04-01", name_in_dag="ges_pflegev_beitr_arbeitnehmer_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_pflegev_beitr_arbeitnehmer_m") def ges_pflegev_beitr_arbeitnehmer_m_mit_midijob( # noqa: PLR0913 _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m: float, geringfügig_beschäftigt: bool, @@ -240,7 +242,7 @@ def _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m( return beitr_regulär_beschäftigt_m -@policy_info(end_date="2003-03-31", name_in_dag="ges_pflegev_beitr_arbeitgeber_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_pflegev_beitr_arbeitgeber_m") def ges_pflegev_beitr_arbeitgeber_m_vor_midijob( geringfügig_beschäftigt: bool, _ges_krankenv_bruttolohn_m: float, @@ -280,7 +282,7 @@ def ges_pflegev_beitr_arbeitgeber_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="ges_pflegev_beitr_arbeitgeber_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_pflegev_beitr_arbeitgeber_m") def ges_pflegev_beitr_arbeitgeber_m_mit_midijob( geringfügig_beschäftigt: bool, _ges_pflegev_beitr_midijob_arbeitgeber_m: float, @@ -329,10 +331,10 @@ def ges_pflegev_beitr_arbeitgeber_m_mit_midijob( return out -@policy_info( +@policy_function( start_date="1995-01-01", end_date="2004-12-31", - name_in_dag="ges_pflegev_beitr_selbstständig_m", + leaf_name="ges_pflegev_beitr_selbstständig_m", ) def ges_pflegev_beitr_selbstständig_m_ohne_zusatz_fuer_kinderlose( _ges_krankenv_bemessungsgrundlage_eink_selbständig: float, @@ -364,7 +366,7 @@ def ges_pflegev_beitr_selbstständig_m_ohne_zusatz_fuer_kinderlose( return out -@policy_info(start_date="2005-01-01", name_in_dag="ges_pflegev_beitr_selbstständig_m") +@policy_function(start_date="2005-01-01", leaf_name="ges_pflegev_beitr_selbstständig_m") def ges_pflegev_beitr_selbstständig_m_zusatz_kinderlos_dummy( _ges_krankenv_bemessungsgrundlage_eink_selbständig: float, ges_pflegev_beitr_satz_arbeitnehmer: float, @@ -400,10 +402,10 @@ def ges_pflegev_beitr_selbstständig_m_zusatz_kinderlos_dummy( return out -@policy_info( +@policy_function( start_date="1995-01-01", end_date="2004-03-31", - name_in_dag="ges_pflegev_beitr_rentner_m", + leaf_name="ges_pflegev_beitr_rentner_m", ) def ges_pflegev_beitr_rentner_m_reduz_beitrag( _ges_krankenv_bemessungsgrundlage_rente_m: float, @@ -433,10 +435,10 @@ def ges_pflegev_beitr_rentner_m_reduz_beitrag( return out -@policy_info( +@policy_function( start_date="2004-04-01", end_date="2004-12-31", - name_in_dag="ges_pflegev_beitr_rentner_m", + leaf_name="ges_pflegev_beitr_rentner_m", ) def ges_pflegev_beitr_rentner_m_ohne_zusatz_für_kinderlose( _ges_krankenv_bemessungsgrundlage_rente_m: float, @@ -465,7 +467,7 @@ def ges_pflegev_beitr_rentner_m_ohne_zusatz_für_kinderlose( return out -@policy_info(start_date="2005-01-01", name_in_dag="ges_pflegev_beitr_rentner_m") +@policy_function(start_date="2005-01-01", leaf_name="ges_pflegev_beitr_rentner_m") def ges_pflegev_beitr_rentner_m_zusatz_kinderlos_dummy( _ges_krankenv_bemessungsgrundlage_rente_m: float, ges_pflegev_beitr_satz_arbeitnehmer: float, @@ -498,10 +500,10 @@ def ges_pflegev_beitr_rentner_m_zusatz_kinderlos_dummy( return out -@policy_info( +@policy_function( start_date="2003-04-01", end_date="2004-12-31", - name_in_dag="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", + leaf_name="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", ) def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_bis_2004( midijob_bemessungsentgelt_m: float, @@ -534,9 +536,9 @@ def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_bis_2004( return gesamtbeitrag_midijob_m -@policy_info( +@policy_function( start_date="2005-01-01", - name_in_dag="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", + leaf_name="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", ) def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_ab_2005( midijob_bemessungsentgelt_m: float, @@ -568,9 +570,9 @@ def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_ab_2005( return gesamtbeitrag_midijob_m -@policy_info( +@policy_function( end_date="2004-12-31", - name_in_dag="_ges_pflegev_beitr_midijob_arbeitgeber_m", + leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m", ) def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_bis_2004( bruttolohn_m: float, @@ -598,10 +600,10 @@ def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_bis_2004( return out -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2022-09-30", - name_in_dag="_ges_pflegev_beitr_midijob_arbeitgeber_m", + leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m", ) def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_ab_2005( bruttolohn_m: float, @@ -627,8 +629,8 @@ def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_ab_2005( return out -@policy_info( - start_date="2022-10-01", name_in_dag="_ges_pflegev_beitr_midijob_arbeitgeber_m" +@policy_function( + start_date="2022-10-01", leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m" ) def _ges_pflegev_beitr_midijob_arbeitgeber_m_residuum( _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -656,9 +658,9 @@ def _ges_pflegev_beitr_midijob_arbeitgeber_m_residuum( return out -@policy_info( +@policy_function( end_date="2022-09-30", - name_in_dag="_ges_pflegev_beitr_midijob_arbeitnehmer_m", + leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m", ) def _ges_pflegev_beitr_midijob_arbeitnehmer_m_residuum( _ges_pflegev_beitr_midijob_arbeitgeber_m: float, @@ -687,10 +689,10 @@ def _ges_pflegev_beitr_midijob_arbeitnehmer_m_residuum( return out -@policy_info( +@policy_function( start_date="2022-10-01", end_date="2023-06-30", - name_in_dag="_ges_pflegev_beitr_midijob_arbeitnehmer_m", + leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m", ) def _ges_pflegev_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( ges_pflegev_zusatz_kinderlos: bool, @@ -733,8 +735,8 @@ def _ges_pflegev_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( return an_beitr_midijob_m -@policy_info( - start_date="2023-07-01", name_in_dag="_ges_pflegev_beitr_midijob_arbeitnehmer_m" +@policy_function( + start_date="2023-07-01", leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m" ) def _ges_pflegev_beitr_midijob_arbeitnehmer_m_anteil_mit_kinder_abschlag( ges_pflegev_anz_kinder_bis_24: int, diff --git a/src/_gettsim/social_insurance_contributions/ges_rentenv.py b/src/_gettsim/social_insurance_contributions/ges_rentenv.py index 4c5954e7ef..20a1f248f6 100644 --- a/src/_gettsim/social_insurance_contributions/ges_rentenv.py +++ b/src/_gettsim/social_insurance_contributions/ges_rentenv.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(end_date="2003-03-31", name_in_dag="ges_rentenv_beitr_arbeitnehmer_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_rentenv_beitr_arbeitnehmer_m") def ges_rentenv_beitr_arbeitnehmer_m_vor_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_bruttolohn_m: float, @@ -37,7 +37,7 @@ def ges_rentenv_beitr_arbeitnehmer_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="ges_rentenv_beitr_arbeitnehmer_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_rentenv_beitr_arbeitnehmer_m") def ges_rentenv_beitr_arbeitnehmer_m_mit_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_midijob_arbeitnehmer_m: float, @@ -81,7 +81,7 @@ def ges_rentenv_beitr_arbeitnehmer_m_mit_midijob( return out -@policy_info(end_date="2003-03-31", name_in_dag="ges_rentenv_beitr_arbeitgeber_m") +@policy_function(end_date="2003-03-31", leaf_name="ges_rentenv_beitr_arbeitgeber_m") def ges_rentenv_beitr_arbeitgeber_m_vor_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_bruttolohn_m: float, @@ -120,7 +120,7 @@ def ges_rentenv_beitr_arbeitgeber_m_vor_midijob( return out -@policy_info(start_date="2003-04-01", name_in_dag="ges_rentenv_beitr_arbeitgeber_m") +@policy_function(start_date="2003-04-01", leaf_name="ges_rentenv_beitr_arbeitgeber_m") def ges_rentenv_beitr_arbeitgeber_m_mit_midijob( geringfügig_beschäftigt: bool, _ges_rentenv_beitr_midijob_arbeitgeber_m: float, @@ -167,7 +167,7 @@ def ges_rentenv_beitr_arbeitgeber_m_mit_midijob( return out -@policy_info(start_date="2003-04-01") +@policy_function(start_date="2003-04-01") def _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( midijob_bemessungsentgelt_m: float, sozialv_beitr_params: dict, @@ -194,9 +194,9 @@ def _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( return ges_beitr_midijob -@policy_info( +@policy_function( end_date="2022-09-30", - name_in_dag="_ges_rentenv_beitr_midijob_arbeitgeber_m", + leaf_name="_ges_rentenv_beitr_midijob_arbeitgeber_m", ) def _ges_rentenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( bruttolohn_m: float, @@ -219,8 +219,8 @@ def _ges_rentenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( return out -@policy_info( - start_date="2022-10-01", name_in_dag="_ges_rentenv_beitr_midijob_arbeitgeber_m" +@policy_function( + start_date="2022-10-01", leaf_name="_ges_rentenv_beitr_midijob_arbeitgeber_m" ) def _ges_rentenv_beitr_midijob_arbeitgeber_m_residuum( _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, @@ -246,9 +246,9 @@ def _ges_rentenv_beitr_midijob_arbeitgeber_m_residuum( return out -@policy_info( +@policy_function( end_date="2022-09-30", - name_in_dag="_ges_rentenv_beitr_midijob_arbeitnehmer_m", + leaf_name="_ges_rentenv_beitr_midijob_arbeitnehmer_m", ) def _ges_rentenv_beitr_midijob_arbeitnehmer_m_residuum( _ges_rentenv_beitr_midijob_arbeitgeber_m: float, @@ -274,8 +274,8 @@ def _ges_rentenv_beitr_midijob_arbeitnehmer_m_residuum( return an_beitr_midijob -@policy_info( - start_date="2022-10-01", name_in_dag="_ges_rentenv_beitr_midijob_arbeitnehmer_m" +@policy_function( + start_date="2022-10-01", leaf_name="_ges_rentenv_beitr_midijob_arbeitnehmer_m" ) def _ges_rentenv_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index e0a76d2fe7..2196321a52 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -52,10 +52,13 @@ def create_synthetic_data( # noqa: PLR0913 raise ValueError("'n_children' must be between 0 and 10.") default_constant_specs = { - "weiblich": [bool(i % 2 == 1) for i in range(n_children + n_adults)], - "alter": [35] * n_adults + [8, 5, 3, 1, 10, 9, 7, 6, 4, 2][:n_children], - "kind": [False] * n_adults + [True] * n_children, - "in_ausbildung": [False] * n_adults + [True] * n_children, + "basic_inputs__weiblich": [ + bool(i % 2 == 1) for i in range(n_children + n_adults) + ], + "basic_inputs__alter": [35] * n_adults + + [8, 5, 3, 1, 10, 9, 7, 6, 4, 2][:n_children], + "basic_inputs__kind": [False] * n_adults + [True] * n_children, + "basic_inputs__in_ausbildung": [False] * n_adults + [True] * n_children, } if specs_constant_over_households: default_constant_specs.update(specs_constant_over_households) @@ -145,13 +148,14 @@ def create_basic_households( # Add specifications and create DataFrame all_households = [ { - "hh_id": [i] * (n_adults + n_children), - "hh_typ": [hh_typ_string] * (n_adults + n_children), - "ges_pflegev_hat_kinder": ges_pflegev_hat_kinder, - "alleinerz": alleinerziehend, + "groupings__hh_id": [i] * (n_adults + n_children), + "basic_inputs__hh_typ": [hh_typ_string] * (n_adults + n_children), + "basic_inputs__ges_pflegev_hat_kinder": ges_pflegev_hat_kinder, + "basic_inputs__alleinerz": alleinerziehend, # Assumption: All children are biological children of the adults, children # do not have children themselves - "ges_pflegev_anz_kinder_bis_24": [n_children] * n_adults + [0] * n_children, + "basic_inputs__ges_pflegev_anz_kinder_bis_24": [n_children] * n_adults + + [0] * n_children, **specs_constant_over_households, **{v: k[i] for v, k in specs_heterogeneous.items()}, } @@ -169,13 +173,16 @@ def create_basic_households( for key, value in SUPPORTED_GROUPINGS.items() if not value.get("potentially_endogenous", True) ] - group_ids = [f"{g}_id" for g in exogenous_groupings] - df["p_id"] = df.index + group_ids = [f"groupings__{g}_id" for g in exogenous_groupings] + df["groupings__p_id"] = df.index df = return_df_with_ids_for_aggregation(df, n_adults, n_children, adults_married) - df = df[["p_id", *group_ids] + [c for c in df if c not in [*group_ids, "p_id"]]] - df = df.sort_values(by=[*group_ids, "p_id"]) + df = df[ + ["groupings__p_id", *group_ids] + + [c for c in df if c not in [*group_ids, "groupings__p_id"]] + ] + df = df.sort_values(by=[*group_ids, "groupings__p_id"]) return df @@ -212,33 +219,38 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie if n_children > 0: data = return_p_id_elternteil(data=data, n_adults=n_adults) else: - data["p_id_elternteil_1"] = -1 - data["p_id_elternteil_2"] = -1 - data["p_id_kindergeld_empf"] = data["p_id_elternteil_1"] - data["p_id_erziehgeld_empf"] = data["p_id_elternteil_1"] - data["p_id_betreuungsk_träger"] = data["p_id_elternteil_1"] + data["groupings__p_id_elternteil_1"] = -1 + data["groupings__p_id_elternteil_2"] = -1 + data["groupings__p_id_kindergeld_empf"] = data["groupings__p_id_elternteil_1"] + data["groupings__p_id_erziehgeld_empf"] = data["groupings__p_id_elternteil_1"] + data["groupings__p_id_betreuungsk_träger"] = data["groupings__p_id_elternteil_1"] # Create other IDs if n_adults == 1: - data["p_id_ehepartner"] = -1 - data["p_id_einstandspartner"] = data["p_id_ehepartner"] + data["groupings__p_id_ehepartner"] = -1 + data["groupings__p_id_einstandspartner"] = data["groupings__p_id_ehepartner"] else: - data_adults = data.query("kind == False").copy() - for hh_id, group in data_adults.groupby("hh_id"): - relevant_rows = (data_adults["hh_id"] == hh_id).values - data_adults.loc[relevant_rows, "p_id_einstandspartner"] = group[ - "p_id" + data_adults = data.query("basic_inputs__kind == False").copy() + for hh_id, group in data_adults.groupby("groupings__hh_id"): + relevant_rows = (data_adults["groupings__hh_id"] == hh_id).values + data_adults.loc[relevant_rows, "groupings__p_id_einstandspartner"] = group[ + "groupings__p_id" ].tolist()[::-1] data = pd.merge( - data, data_adults[["p_id", "p_id_einstandspartner"]], on="p_id", how="left" + data, + data_adults[["groupings__p_id", "groupings__p_id_einstandspartner"]], + on="groupings__p_id", + how="left", ).fillna(-1) - data["p_id_einstandspartner"] = data["p_id_einstandspartner"].astype( - numpy.int64 - ) + data["groupings__p_id_einstandspartner"] = data[ + "groupings__p_id_einstandspartner" + ].astype(numpy.int64) if adults_married: - data["p_id_ehepartner"] = data["p_id_einstandspartner"] + data["groupings__p_id_ehepartner"] = data[ + "groupings__p_id_einstandspartner" + ] else: - data["p_id_ehepartner"] = -1 + data["groupings__p_id_ehepartner"] = -1 return data @@ -247,18 +259,25 @@ def return_p_id_elternteil(data, n_adults): """Find the p_id_elternteil_1 and p_id_elternteil_2.""" # p_id_elternteil_1 is the first adult in the household elternteil_1_candidate = { - hh_id: group["p_id"].iloc[0] for hh_id, group in data.groupby("hh_id") + hh_id: group["groupings__p_id"].iloc[0] + for hh_id, group in data.groupby("groupings__hh_id") } # Apply candidate id if kind, else -1 - data["p_id_elternteil_1"] = data.apply( - lambda x: elternteil_1_candidate[x["hh_id"]] if x["kind"] else -1, axis=1 + data["groupings__p_id_elternteil_1"] = data.apply( + lambda x: elternteil_1_candidate[x["groupings__hh_id"]] + if x["basic_inputs__kind"] + else -1, + axis=1, ) if n_adults == 2: - data["p_id_elternteil_2"] = data.apply( - lambda x: x["p_id_elternteil_1"] + 1 if x["kind"] else -1, axis=1 + data["groupings__p_id_elternteil_2"] = data.apply( + lambda x: x["groupings__p_id_elternteil_1"] + 1 + if x["basic_inputs__kind"] + else -1, + axis=1, ) else: - data["p_id_elternteil_2"] = -1 + data["groupings__p_id_elternteil_2"] = -1 return data @@ -282,39 +301,58 @@ def create_constant_across_households_variables(df, n_adults, n_children, policy hh_typ_string_lookup = create_hh_typ_string(n_adults, n_children_lookup) # Take care of bürgerg_bezug_vorj - if policy_year >= 2023 and "bürgerg_bezug_vorj" not in df: - df["bürgerg_bezug_vorj"] = True + if policy_year >= 2023 and "basic_inputs__bürgerg_bezug_vorj" not in df: + df["basic_inputs__bürgerg_bezug_vorj"] = True default_values = { - "gemeinsam_veranlagt": ( - df["kind"] == False if n_adults == 2 else False # noqa: E712 + "basic_inputs__gemeinsam_veranlagt": ( + df["basic_inputs__kind"] == False if n_adults == 2 else False # noqa: E712 + ), + "basic_inputs__eigenbedarf_gedeckt": False, + "basic_inputs__mietstufe": 3, + "basic_inputs__geburtsmonat": 1, + "basic_inputs__geburtstag": 1, + "basic_inputs__m_freiw_beitrag": 5.0, + "basic_inputs__m_schul_ausbild": 10.0, + "basic_inputs__m_kind_berücks_zeit": 24.0, + "basic_inputs__m_pfleg_berücks_zeit": 1.0, + "basic_inputs__elterngeld_nettoeinkommen_vorjahr_m": 20000.0, + "basic_inputs__geburtsjahr": policy_year - df["basic_inputs__alter"], + "basic_inputs__jahr_renteneintr": policy_year - df["basic_inputs__alter"] + 67, + "basic_inputs__grundr_zeiten": (df["basic_inputs__alter"] - 20).clip(lower=0) + * 12, + "basic_inputs__grundr_bew_zeiten": (df["basic_inputs__alter"] - 20).clip( + lower=0 + ) + * 12, + "basic_inputs__entgeltp": (df["basic_inputs__alter"] - 20) + .clip(lower=0) + .astype(float), + "basic_inputs__grundr_entgeltp": (df["basic_inputs__alter"] - 20) + .clip(lower=0) + .astype(float), + "basic_inputs__m_pflichtbeitrag": ( + (df["basic_inputs__alter"] - 25).clip(lower=0) * 12 + ).astype(float), + "basic_inputs__m_pflichtbeitrag_alt": ( + (df["basic_inputs__alter"] - 40).clip(lower=0) * 12 + ).astype(float), + "basic_inputs__wohnfläche_hh": float( + bg_daten["wohnfläche"][hh_typ_string_lookup] ), - "eigenbedarf_gedeckt": False, - "mietstufe": 3, - "geburtsmonat": 1, - "geburtstag": 1, - "m_freiw_beitrag": 5.0, - "m_schul_ausbild": 10.0, - "m_kind_berücks_zeit": 24.0, - "m_pfleg_berücks_zeit": 1.0, - "elterngeld_nettoeinkommen_vorjahr_m": 20000.0, - "geburtsjahr": policy_year - df["alter"], - "jahr_renteneintr": policy_year - df["alter"] + 67, - "grundr_zeiten": (df["alter"] - 20).clip(lower=0) * 12, - "grundr_bew_zeiten": (df["alter"] - 20).clip(lower=0) * 12, - "entgeltp": (df["alter"] - 20).clip(lower=0).astype(float), - "grundr_entgeltp": (df["alter"] - 20).clip(lower=0).astype(float), - "m_pflichtbeitrag": ((df["alter"] - 25).clip(lower=0) * 12).astype(float), - "m_pflichtbeitrag_alt": ((df["alter"] - 40).clip(lower=0) * 12).astype(float), - "wohnfläche_hh": float(bg_daten["wohnfläche"][hh_typ_string_lookup]), - "bruttokaltmiete_m_hh": float( + "basic_inputs__bruttokaltmiete_m_hh": float( bg_daten["bruttokaltmiete"][hh_typ_string_lookup] ), - "heizkosten_m_hh": float(bg_daten["heizkosten"][hh_typ_string_lookup]), + "basic_inputs__heizkosten_m_hh": float( + bg_daten["heizkosten"][hh_typ_string_lookup] + ), } # Set default values for new columns. - for input_col, col_type in TYPES_INPUT_VARIABLES.items(): + types_input_variables_with_qualified_names = tree_to_dict_with_qualified_name( # noqa: F821 + TYPES_INPUT_VARIABLES + ) + for input_col, col_type in types_input_variables_with_qualified_names.items(): if input_col not in df: if input_col in default_values: df[input_col] = default_values[input_col] diff --git a/src/_gettsim/taxes/abgelt_st.py b/src/_gettsim/taxes/abgelt_st.py index 38a89c24b0..ec0eafbcb3 100644 --- a/src/_gettsim/taxes/abgelt_st.py +++ b/src/_gettsim/taxes/abgelt_st.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(start_date="2009-01-01") +@policy_function(start_date="2009-01-01") def abgelt_st_y_sn(zu_verst_kapitaleink_y_sn: float, abgelt_st_params: dict) -> float: """Calculate abgeltungssteuer on Steuernummer level. diff --git a/src/_gettsim/taxes/eink_st.py b/src/_gettsim/taxes/eink_st.py index 057d5098d7..baf2608073 100644 --- a/src/_gettsim/taxes/eink_st.py +++ b/src/_gettsim/taxes/eink_st.py @@ -1,5 +1,5 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info aggregate_by_p_id_eink_st = { "eink_st_rel_kindergeld_anz_ansprüche_1": { @@ -44,12 +44,12 @@ def eink_st_ohne_kinderfreib_y_sn( return out -@policy_info(end_date="2001-12-31", name_in_dag="eink_st_mit_kinderfreib_y_sn") +@policy_function(end_date="2001-12-31", leaf_name="eink_st_mit_kinderfreib_y_sn") def eink_st_mit_kinderfreib_y_sn_bis_2001() -> float: raise NotImplementedError("Tax system before 2002 is not implemented yet.") -@policy_info(start_date="2002-01-01", name_in_dag="eink_st_mit_kinderfreib_y_sn") +@policy_function(start_date="2002-01-01", leaf_name="eink_st_mit_kinderfreib_y_sn") def eink_st_mit_kinderfreib_y_sn_ab_2002( _zu_verst_eink_mit_kinderfreib_y_sn: float, anz_personen_sn: int, @@ -104,8 +104,8 @@ def _eink_st_tarif(x: float, params: dict) -> float: return out -@policy_info( - end_date="1996-12-31", name_in_dag="eink_st_y_sn", params_key_for_rounding="eink_st" +@policy_function( + end_date="1996-12-31", leaf_name="eink_st_y_sn", params_key_for_rounding="eink_st" ) def eink_st_y_sn_kindergeld_kinderfreib_parallel( eink_st_mit_kinderfreib_y_sn: float, @@ -125,9 +125,9 @@ def eink_st_y_sn_kindergeld_kinderfreib_parallel( return eink_st_mit_kinderfreib_y_sn -@policy_info( +@policy_function( start_date="1997-01-01", - name_in_dag="eink_st_y_sn", + leaf_name="eink_st_y_sn", params_key_for_rounding="eink_st", ) def eink_st_y_sn_kindergeld_oder_kinderfreib( @@ -186,7 +186,7 @@ def kinderfreib_günstiger_sn( return out -@policy_info(start_date="2023-01-01", name_in_dag="eink_st_rel_kindergeld_m") +@policy_function(start_date="2023-01-01", leaf_name="eink_st_rel_kindergeld_m") def eink_st_rel_kindergeld_ohne_staffelung_m( eink_st_rel_kindergeld_anz_ansprüche_1: int, eink_st_rel_kindergeld_anz_ansprüche_2: int, @@ -216,7 +216,7 @@ def eink_st_rel_kindergeld_ohne_staffelung_m( return kindergeld_params["kindergeld"] * eink_st_rel_kindergeld_anz_ansprüche / 2 -@policy_info(end_date="2022-12-31", name_in_dag="eink_st_rel_kindergeld_m") +@policy_function(end_date="2022-12-31", leaf_name="eink_st_rel_kindergeld_m") def eink_st_rel_kindergeld_mit_staffelung_m( eink_st_rel_kindergeld_anz_ansprüche_1: int, eink_st_rel_kindergeld_anz_ansprüche_2: int, diff --git a/src/_gettsim/taxes/lohnst.py b/src/_gettsim/taxes/lohnst.py index 33e0bfacba..afd5636d34 100644 --- a/src/_gettsim/taxes/lohnst.py +++ b/src/_gettsim/taxes/lohnst.py @@ -1,8 +1,8 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function from _gettsim.taxes.eink_st import _eink_st_tarif -@policy_info(params_key_for_rounding="lohnst") +@policy_function(params_key_for_rounding="lohnst") def lohnst_eink_y( bruttolohn_m: float, steuerklasse: int, @@ -93,9 +93,9 @@ def _lohnsteuer_klasse5_6_basis_y(taxable_inc: float, eink_st_params: dict) -> f return out -@policy_info( +@policy_function( start_date="2019-01-01", - name_in_dag="vorsorge_krankenv_option_b", + leaf_name="vorsorge_krankenv_option_b", ) def vorsorge_krankenv_option_b_ab_2019( _ges_krankenv_bruttolohn_reg_beschäftigt_m: float, @@ -139,10 +139,10 @@ def vorsorge_krankenv_option_b_ab_2019( return out -@policy_info( +@policy_function( start_date="2015-01-01", end_date="2018-12-31", - name_in_dag="vorsorge_krankenv_option_b", + leaf_name="vorsorge_krankenv_option_b", ) def vorsorge_krankenv_option_b_ab_2015_bis_2018( _ges_krankenv_bruttolohn_reg_beschäftigt_m: float, @@ -229,9 +229,9 @@ def vorsorge_krankenv_option_a( return out -@policy_info( +@policy_function( start_date="2010-01-01", - name_in_dag="vorsorgepauschale_y", + leaf_name="vorsorgepauschale_y", params_key_for_rounding="lohnst", ) def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 @@ -301,10 +301,10 @@ def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 return out -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2009-12-31", - name_in_dag="vorsorgepauschale_y", + leaf_name="vorsorgepauschale_y", params_key_for_rounding="lohnst", ) def vorsorgepauschale_y_ab_2005_bis_2009() -> float: diff --git a/src/_gettsim/taxes/soli_st.py b/src/_gettsim/taxes/soli_st.py index c4d4f2c198..316d4f72ec 100644 --- a/src/_gettsim/taxes/soli_st.py +++ b/src/_gettsim/taxes/soli_st.py @@ -1,8 +1,8 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info -@policy_info(end_date="2008-12-31", name_in_dag="soli_st_y_sn") +@policy_function(end_date="2008-12-31", leaf_name="soli_st_y_sn") def soli_st_y_sn_ohne_abgelt_st( eink_st_mit_kinderfreib_y_sn: float, anz_personen_sn: int, @@ -40,7 +40,7 @@ def soli_st_y_sn_ohne_abgelt_st( return out -@policy_info(start_date="2009-01-01", name_in_dag="soli_st_y_sn") +@policy_function(start_date="2009-01-01", leaf_name="soli_st_y_sn") def soli_st_y_sn_mit_abgelt_st( eink_st_mit_kinderfreib_y_sn: float, anz_personen_sn: int, @@ -111,7 +111,7 @@ def _soli_st_tarif(st_per_individual: float, soli_st_params: dict) -> float: ---------- st_per_individual: the tax amount to be topped up - soli_st_params : + soli_st_params See params documentation :ref:`soli_st_params ` Returns solidarity surcharge diff --git a/src/_gettsim/taxes/zu_verst_eink/eink.py b/src/_gettsim/taxes/zu_verst_eink/eink.py index 37ad96f283..90f225739b 100644 --- a/src/_gettsim/taxes/zu_verst_eink/eink.py +++ b/src/_gettsim/taxes/zu_verst_eink/eink.py @@ -1,5 +1,5 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info def eink_selbst_y(eink_selbst_m: float) -> float: @@ -138,7 +138,7 @@ def eink_rente_zu_verst_y( return eink_rente_zu_verst_m * 12 -@policy_info(start_date="2009-01-01", name_in_dag="sum_eink_y") +@policy_function(start_date="2009-01-01", leaf_name="sum_eink_y") def sum_eink_ohne_kapital_eink_y( eink_selbst_y: float, _zu_verst_eink_abhängig_beschäftigt_y: float, @@ -198,7 +198,7 @@ def kapitaleink_y( return max(out, 0.0) -@policy_info(end_date="2008-12-31", name_in_dag="sum_eink_y") +@policy_function(end_date="2008-12-31", leaf_name="sum_eink_y") def sum_eink_mit_kapital_eink_y( eink_selbst_y: float, _zu_verst_eink_abhängig_beschäftigt_y: float, diff --git a/src/_gettsim/taxes/zu_verst_eink/freibetraege.py b/src/_gettsim/taxes/zu_verst_eink/freibetraege.py index 18721c0aa4..d7ad3aa276 100644 --- a/src/_gettsim/taxes/zu_verst_eink/freibetraege.py +++ b/src/_gettsim/taxes/zu_verst_eink/freibetraege.py @@ -1,5 +1,5 @@ from _gettsim.config import numpy_or_jax as np -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function aggregate_by_p_id_freibeträge = { "_eink_st_kinderfreib_anz_anspruch_1": { @@ -73,7 +73,7 @@ def _eink_st_behinderungsgrad_pauschbetrag_y( return float(out) -@policy_info(end_date="2014-12-31", name_in_dag="alleinerz_freib_y_sn") +@policy_function(end_date="2014-12-31", leaf_name="alleinerz_freib_y_sn") def eink_st_alleinerz_freib_y_sn_pauschal( alleinerz_sn: bool, eink_st_abzuege_params: dict ) -> float: @@ -100,7 +100,7 @@ def eink_st_alleinerz_freib_y_sn_pauschal( return out -@policy_info(start_date="2015-01-01", name_in_dag="alleinerz_freib_y_sn") +@policy_function(start_date="2015-01-01", leaf_name="alleinerz_freib_y_sn") def eink_st_alleinerz_freib_y_sn_nach_kinderzahl( alleinerz_sn: bool, kindergeld_anz_ansprüche_sn: int, @@ -137,7 +137,7 @@ def eink_st_alleinerz_freib_y_sn_nach_kinderzahl( return out -@policy_info(end_date="2004-12-31", name_in_dag="eink_st_altersfreib_y") +@policy_function(end_date="2004-12-31", leaf_name="eink_st_altersfreib_y") def eink_st_altersfreib_y_bis_2004( # noqa: PLR0913 bruttolohn_m: float, alter: int, @@ -184,7 +184,7 @@ def eink_st_altersfreib_y_bis_2004( # noqa: PLR0913 return out -@policy_info(start_date="2005-01-01", name_in_dag="eink_st_altersfreib_y") +@policy_function(start_date="2005-01-01", leaf_name="eink_st_altersfreib_y") def eink_st_altersfreib_y_ab_2005( # noqa: PLR0913 bruttolohn_m: float, geringfügig_beschäftigt: bool, @@ -251,7 +251,7 @@ def eink_st_altersfreib_y_ab_2005( # noqa: PLR0913 return out -@policy_info(end_date="2011-12-31", name_in_dag="eink_st_sonderausgaben_y_sn") +@policy_function(end_date="2011-12-31", leaf_name="eink_st_sonderausgaben_y_sn") def eink_st_sonderausgaben_y_sn_nur_pauschale( eink_st_abzuege_params: dict, anz_personen_sn: int, @@ -280,7 +280,7 @@ def eink_st_sonderausgaben_y_sn_nur_pauschale( return float(out) -@policy_info(start_date="2012-01-01", name_in_dag="eink_st_sonderausgaben_y_sn") +@policy_function(start_date="2012-01-01", leaf_name="eink_st_sonderausgaben_y_sn") def eink_st_sonderausgaben_y_sn_mit_betreuung( eink_st_abzuege_params: dict, sonderausgaben_betreuung_y_sn: float, @@ -338,7 +338,7 @@ def eink_st_abz_betreuungskost_y( return out -@policy_info(params_key_for_rounding="eink_st_abzuege") +@policy_function(params_key_for_rounding="eink_st_abzuege") def sonderausgaben_betreuung_y_sn( eink_st_abzuege_params: dict, eink_st_abz_betreuungskost_y_sn: float, diff --git a/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py b/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py index 75f2d7aab4..955a841649 100644 --- a/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py +++ b/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py @@ -1,10 +1,10 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2022-12-31", - name_in_dag="vorsorgeaufw_alter_y_sn", + leaf_name="vorsorgeaufw_alter_y_sn", ) def vorsorgeaufw_alter_y_sn_einfuehrung( ges_rentenv_beitr_arbeitnehmer_m_sn: float, @@ -43,7 +43,7 @@ def vorsorgeaufw_alter_y_sn_einfuehrung( return out -@policy_info(start_date="2023-01-01") +@policy_function(start_date="2023-01-01") def vorsorgeaufw_alter_y_sn( ges_rentenv_beitr_arbeitnehmer_m_sn: float, priv_rentenv_beitr_m_sn: float, @@ -73,10 +73,10 @@ def vorsorgeaufw_alter_y_sn( return min(out, max_value) -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2009-12-31", - name_in_dag="einführung_vorsorgeaufw_y_sn", + leaf_name="einführung_vorsorgeaufw_y_sn", ) def einführung_vorsorgeaufw_y_sn_ab_2005_bis_2009( # noqa: PLR0913 vorsorgeaufw_alter_y_sn: float, @@ -120,10 +120,10 @@ def einführung_vorsorgeaufw_y_sn_ab_2005_bis_2009( # noqa: PLR0913 return out -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2019-12-31", - name_in_dag="vorsorgeaufw_y_sn", + leaf_name="vorsorgeaufw_y_sn", params_key_for_rounding="eink_st_abzuege", ) def vorsorgeaufw_y_sn_guenstiger( @@ -158,10 +158,10 @@ def vorsorgeaufw_y_sn_guenstiger( return max(vorsorgeaufw_y_sn_bis_2004, einführung_vorsorgeaufw_y_sn) -@policy_info( +@policy_function( start_date="2010-01-01", end_date="2019-12-31", - name_in_dag="einführung_vorsorgeaufw_y_sn", + leaf_name="einführung_vorsorgeaufw_y_sn", ) def einführung_vorsorgeaufw_y_sn_ab_2010_bis_2019( vorsorgeaufw_y_sn_ab_2020: float, @@ -169,9 +169,9 @@ def einführung_vorsorgeaufw_y_sn_ab_2010_bis_2019( return vorsorgeaufw_y_sn_ab_2020 -@policy_info( +@policy_function( start_date="2020-01-01", - name_in_dag="vorsorgeaufw_y_sn", + leaf_name="vorsorgeaufw_y_sn", params_key_for_rounding="eink_st_abzuege", ) def _vorsorgeaufw_y_sn_ab_2020(vorsorgeaufw_y_sn_ab_2020: float) -> float: @@ -237,10 +237,10 @@ def vorsorgeaufw_y_sn_ab_2020( # noqa: PLR0913 return out -@policy_info( +@policy_function( start_date="2005-01-01", end_date="2019-12-31", - name_in_dag="vorsorgeaufw_y_sn_bis_2004", + leaf_name="vorsorgeaufw_y_sn_bis_2004", ) def _vorsorgeaufw_y_sn_bis_2004( _vorsorgeaufw_vom_lohn_y_sn_bis_2004: float, @@ -258,9 +258,9 @@ def _vorsorgeaufw_y_sn_bis_2004( ) -@policy_info( +@policy_function( end_date="2004-12-31", - name_in_dag="vorsorgeaufw_y_sn", + leaf_name="vorsorgeaufw_y_sn", params_key_for_rounding="eink_st_abzuege", ) def vorsorgeaufw_y_sn_bis_2004( @@ -324,7 +324,7 @@ def vorsorgeaufw_y_sn_bis_2004( return out -@policy_info(end_date="2019-12-31") +@policy_function(end_date="2019-12-31") def _vorsorgeaufw_vom_lohn_y_sn_bis_2004( bruttolohn_y_sn: float, anz_personen_sn: int, diff --git a/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py b/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py index 6749e46013..c678c8273f 100644 --- a/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py +++ b/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py @@ -14,7 +14,7 @@ applying the tax schedule. """ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def freibeträge_ind_y( @@ -117,7 +117,7 @@ def _zu_verst_eink_mit_kinderfreib_y_sn( return max(out, 0.0) -@policy_info(params_key_for_rounding="eink_st") +@policy_function(params_key_for_rounding="eink_st") def zu_verst_eink_y_sn( _zu_verst_eink_mit_kinderfreib_y_sn: float, _zu_verst_eink_ohne_kinderfreib_y_sn: float, diff --git a/src/_gettsim/time_conversion.py b/src/_gettsim/time_conversion.py index 618a92c96c..7dc606ad8d 100644 --- a/src/_gettsim/time_conversion.py +++ b/src/_gettsim/time_conversion.py @@ -2,11 +2,19 @@ import re from collections.abc import Callable -from dags.signature import rename_arguments +import optree -from _gettsim.config import SUPPORTED_GROUPINGS, SUPPORTED_TIME_UNITS +from _gettsim.config import ( + SUPPORTED_GROUPINGS, + SUPPORTED_TIME_UNITS, +) from _gettsim.functions.derived_function import DerivedFunction from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.gettsim_typing import NestedDataDict, NestedFunctionDict +from _gettsim.shared import ( + rename_arguments_and_add_annotations, + upsert_path_and_value, +) _M_PER_Y = 12 _W_PER_Y = 365.25 / 7 @@ -24,8 +32,7 @@ def y_to_m(value: float) -> float: Returns ------- - float - Monthly value. + Monthly value. """ return value / _M_PER_Y @@ -41,8 +48,7 @@ def y_to_w(value: float) -> float: Returns ------- - float - Weekly value. + Weekly value. """ return value / _W_PER_Y @@ -58,8 +64,7 @@ def y_to_d(value: float) -> float: Returns ------- - float - Daily value. + Daily value. """ return value / _D_PER_Y @@ -75,8 +80,7 @@ def m_to_y(value: float) -> float: Returns ------- - float - Yearly value. + Yearly value. """ return value * _M_PER_Y @@ -92,8 +96,7 @@ def m_to_w(value: float) -> float: Returns ------- - float - Weekly value. + Weekly value. """ return value * _M_PER_Y / _W_PER_Y @@ -109,8 +112,7 @@ def m_to_d(value: float) -> float: Returns ------- - float - Daily value. + Daily value. """ return value * _M_PER_Y / _D_PER_Y @@ -126,8 +128,7 @@ def w_to_y(value: float) -> float: Returns ------- - float - Yearly value. + Yearly value. """ return value * _W_PER_Y @@ -143,8 +144,7 @@ def w_to_m(value: float) -> float: Returns ------- - float - Monthly value. + Monthly value. """ return value * _W_PER_Y / _M_PER_Y @@ -160,8 +160,7 @@ def w_to_d(value: float) -> float: Returns ------- - float - Daily value. + Daily value. """ return value * _W_PER_Y / _D_PER_Y @@ -177,8 +176,7 @@ def d_to_y(value: float) -> float: Returns ------- - float - Yearly value. + Yearly value. """ return value * _D_PER_Y @@ -194,8 +192,7 @@ def d_to_m(value: float) -> float: Returns ------- - float - Monthly value. + Monthly value. """ return value * _D_PER_Y / _M_PER_Y @@ -211,8 +208,7 @@ def d_to_w(value: float) -> float: Returns ------- - float - Weekly value. + Weekly value. """ return value * _D_PER_Y / _W_PER_Y @@ -234,9 +230,9 @@ def d_to_w(value: float) -> float: def create_time_conversion_functions( - functions: dict[str, PolicyFunction], - data_cols: list[str], -) -> dict[str, DerivedFunction]: + functions_tree: NestedFunctionDict, + data_tree: NestedDataDict, +) -> NestedFunctionDict: """ Create functions that convert variables to different time units. @@ -263,44 +259,56 @@ def create_time_conversion_functions( Parameters ---------- - functions: - Dictionary of functions. - data_cols: - List of data columns. + functions_tree + The functions tree. + data + The data tree. Returns ------- - derived_functions: - Dictionary of created functions. + The functions tree with the new time conversion functions. """ - result: dict[str, DerivedFunction] = {} + converted_functions = {} + data_tree_paths = optree.tree_paths(data_tree, none_is_leaf=True) # Create time-conversions for existing functions - for name, func in functions.items(): - result.update( - { - der_name: der_func - for der_name, der_func in _create_time_conversion_functions( - name, func - ).items() - if der_name not in functions and der_name not in data_cols - } + for path, function in zip(*optree.tree_flatten_with_path(functions_tree)[:2]): + leaf_name = path[-1] + all_time_conversions_for_this_function = _create_time_conversion_functions( + name=leaf_name, func=function ) - - # Create time-conversions for data columns and overwrite existing functions - for name in data_cols: - result.update( - { - der_name: der_func - for der_name, der_func in _create_time_conversion_functions( - name - ).items() - if der_name not in data_cols - } + for der_name, der_func in all_time_conversions_for_this_function.items(): + new_path = [*path[:-1], der_name] + # Skip if the function already exists or the data column exists + if new_path in optree.tree_paths(converted_functions) + data_tree_paths: + continue + else: + converted_functions = upsert_path_and_value( + base=converted_functions, + path_to_upsert=new_path, + value_to_upsert=der_func, + ) + + # Create time-conversions for data columns + for path in data_tree_paths: + leaf_name = path[-1] + all_time_conversions_for_this_data_column = _create_time_conversion_functions( + name=leaf_name ) + for der_name, der_func in all_time_conversions_for_this_data_column.items(): + new_path = [*path[:-1], der_name] + # Skip if the function already exists or the data column exists + if new_path in optree.tree_paths(converted_functions) + data_tree_paths: + continue + else: + converted_functions = upsert_path_and_value( + base=converted_functions, + path_to_upsert=new_path, + value_to_upsert=der_func, + ) - return result + return converted_functions def _create_time_conversion_functions( @@ -340,11 +348,11 @@ def _create_time_conversion_functions( continue result[new_name] = DerivedFunction( - _create_function_for_time_unit( + function=_create_function_for_time_unit( name, _time_conversion_functions[f"{time_unit}_to_{missing_time_unit}"], ), - function_name=new_name, + leaf_name=new_name, derived_from=func or name, ) @@ -354,7 +362,7 @@ def _create_time_conversion_functions( def _create_function_for_time_unit( function_name: str, converter: Callable[[float], float] ) -> Callable[[float], float]: - @rename_arguments(mapper={"x": function_name}) + @rename_arguments_and_add_annotations(mapper={"x": function_name}) def func(x: float) -> float: return converter(x) diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py b/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py index 0e4879819b..a43adb6d84 100644 --- a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py +++ b/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py @@ -1,5 +1,5 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info def arbeitsl_geld_2_eink_m( @@ -164,7 +164,7 @@ def arbeitsl_geld_2_bruttoeink_m( # noqa: PLR0913 return out -@policy_info(end_date="2005-09-30") +@policy_function(end_date="2005-09-30") def arbeitsl_geld_2_nettoquote( # noqa: PLR0913 bruttolohn_m: float, eink_st_m_sn: float, @@ -212,9 +212,9 @@ def arbeitsl_geld_2_nettoquote( # noqa: PLR0913 return alg2_2005_bne / bruttolohn_m -@policy_info( +@policy_function( end_date="2005-09-30", - name_in_dag="arbeitsl_geld_2_eink_anr_frei_m", + leaf_name="arbeitsl_geld_2_eink_anr_frei_m", ) def arbeitsl_geld_2_eink_anr_frei_m_basierend_auf_nettoquote( bruttolohn_m: float, @@ -248,7 +248,7 @@ def arbeitsl_geld_2_eink_anr_frei_m_basierend_auf_nettoquote( return out -@policy_info(start_date="2005-10-01") +@policy_function(start_date="2005-10-01") def arbeitsl_geld_2_eink_anr_frei_m( bruttolohn_m: float, eink_selbst_m: float, diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py b/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py index 3211ff7b7d..65378a7fe8 100644 --- a/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py +++ b/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py @@ -1,7 +1,7 @@ """Functions to calculate basic needs according to SGB II (i.e., where Arbeitslosengeld 2 is defined).""" -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def arbeitsl_geld_2_regelbedarf_m( @@ -88,7 +88,7 @@ def _arbeitsl_geld_2_alleinerz_mehrbedarf_m( return out -@policy_info(end_date="2010-12-31", name_in_dag="arbeitsl_geld_2_kindersatz_m") +@policy_function(end_date="2010-12-31", leaf_name="arbeitsl_geld_2_kindersatz_m") def arbeitsl_geld_2_kindersatz_m_bis_2010( alter: int, same_fg_as_kindergeldempfänger: bool, @@ -137,7 +137,7 @@ def arbeitsl_geld_2_kindersatz_m_bis_2010( return float(out) -@policy_info(start_date="2011-01-01", name_in_dag="arbeitsl_geld_2_kindersatz_m") +@policy_function(start_date="2011-01-01", leaf_name="arbeitsl_geld_2_kindersatz_m") def arbeitsl_geld_2_kindersatz_m_ab_2011( alter: int, same_fg_as_kindergeldempfänger: bool, @@ -190,7 +190,7 @@ def arbeitsl_geld_2_kindersatz_m_ab_2011( return float(out) -@policy_info(end_date="2010-12-31", name_in_dag="arbeitsl_geld_2_erwachsenensatz_m") +@policy_function(end_date="2010-12-31", leaf_name="arbeitsl_geld_2_erwachsenensatz_m") def arbeitsl_geld_2_erwachsenensatz_bis_2010_m( _arbeitsl_geld_2_alleinerz_mehrbedarf_m: float, arbeitsl_geld_2_kindersatz_m: float, @@ -229,7 +229,7 @@ def arbeitsl_geld_2_erwachsenensatz_bis_2010_m( return out * (1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m) -@policy_info(start_date="2011-01-01", name_in_dag="arbeitsl_geld_2_erwachsenensatz_m") +@policy_function(start_date="2011-01-01", leaf_name="arbeitsl_geld_2_erwachsenensatz_m") def arbeitsl_geld_2_erwachsenensatz_ab_2011_m( _arbeitsl_geld_2_alleinerz_mehrbedarf_m: float, arbeitsl_geld_2_kindersatz_m: float, diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py b/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py index 0325f25672..e5edbf2ae1 100644 --- a/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py +++ b/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py @@ -2,7 +2,8 @@ import numpy -from _gettsim.shared import join_numpy, policy_info +from _gettsim.functions.policy_function import policy_function +from _gettsim.shared import join_numpy aggregate_by_p_id_kindergeldübertrag = { "kindergeldübertrag_m": { @@ -13,7 +14,7 @@ } -@policy_info(end_date="2022-12-31", name_in_dag="_mean_kindergeld_per_child_m") +@policy_function(end_date="2022-12-31", leaf_name="_mean_kindergeld_per_child_m") def _mean_kindergeld_per_child_gestaffelt_m( kindergeld_m: float, kindergeld_anz_ansprüche: int, @@ -41,7 +42,7 @@ def _mean_kindergeld_per_child_gestaffelt_m( return out -@policy_info(start_date="2023-01-01", name_in_dag="_mean_kindergeld_per_child_m") +@policy_function(start_date="2023-01-01", leaf_name="_mean_kindergeld_per_child_m") def _mean_kindergeld_per_child_ohne_staffelung_m( kindergeld_params: dict, kindergeld_anz_ansprüche: int, @@ -65,7 +66,7 @@ def _mean_kindergeld_per_child_ohne_staffelung_m( return kindergeld_params["kindergeld"] if kindergeld_anz_ansprüche > 0 else 0.0 -@policy_info(skip_vectorization=True) +@policy_function(skip_vectorization=True) def kindergeld_zur_bedarfsdeckung_m( _mean_kindergeld_per_child_m: float, p_id_kindergeld_empf: numpy.ndarray[int], @@ -160,7 +161,7 @@ def _diff_kindergeld_kindbedarf_m( # noqa: PLR0913 return out -@policy_info(skip_vectorization=True) +@policy_function(skip_vectorization=True) def _in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger( p_id: numpy.ndarray[int], p_id_kindergeld_empf: numpy.ndarray[int], diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py b/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py index c502a0ad70..9c3b13bded 100644 --- a/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py +++ b/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(end_date="2022-12-31", name_in_dag="arbeitsl_geld_2_kost_unterk_m") +@policy_function(end_date="2022-12-31", leaf_name="arbeitsl_geld_2_kost_unterk_m") def arbeitsl_geld_2_kost_unterk_m_bis_2022( _arbeitsl_geld_2_berechtigte_wohnfläche: float, _arbeitsl_geld_2_warmmiete_pro_qm_m: float, @@ -24,7 +24,7 @@ def arbeitsl_geld_2_kost_unterk_m_bis_2022( return _arbeitsl_geld_2_berechtigte_wohnfläche * _arbeitsl_geld_2_warmmiete_pro_qm_m -@policy_info(start_date="2023-01-01", name_in_dag="arbeitsl_geld_2_kost_unterk_m") +@policy_function(start_date="2023-01-01", leaf_name="arbeitsl_geld_2_kost_unterk_m") def arbeitsl_geld_2_kost_unterk_m_ab_2023( bruttokaltmiete_m: float, heizkosten_m: float, diff --git a/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py b/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py index 82ebf33ba8..b713a149a3 100644 --- a/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py +++ b/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py @@ -1,4 +1,4 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def _kinderzuschl_nach_vermög_check_m_bg( @@ -33,7 +33,7 @@ def _kinderzuschl_nach_vermög_check_m_bg( return out -@policy_info(end_date="2022-12-31", name_in_dag="kinderzuschl_vermög_freib_bg") +@policy_function(end_date="2022-12-31", leaf_name="kinderzuschl_vermög_freib_bg") def kinderzuschl_vermög_freib_bg_bis_2022( arbeitsl_geld_2_vermög_freib_bg: float, ) -> float: @@ -52,7 +52,7 @@ def kinderzuschl_vermög_freib_bg_bis_2022( return arbeitsl_geld_2_vermög_freib_bg -@policy_info(start_date="2023-01-01", name_in_dag="kinderzuschl_vermög_freib_bg") +@policy_function(start_date="2023-01-01", leaf_name="kinderzuschl_vermög_freib_bg") def kinderzuschl_vermög_freib_bg_ab_2023( _arbeitsl_geld_2_vermög_freib_karenzz_bg: float, ) -> float: @@ -160,7 +160,7 @@ def _arbeitsl_geld_2_max_grundfreib_vermög( return float(out) -@policy_info(end_date="2022-12-31", name_in_dag="arbeitsl_geld_2_vermög_freib_bg") +@policy_function(end_date="2022-12-31", leaf_name="arbeitsl_geld_2_vermög_freib_bg") def arbeitsl_geld_2_vermög_freib_bg_bis_2022( _arbeitsl_geld_2_grundfreib_vermög_bg: float, anz_kinder_bis_17_bg: int, @@ -195,7 +195,7 @@ def arbeitsl_geld_2_vermög_freib_bg_bis_2022( return out -@policy_info(start_date="2023-01-01") +@policy_function(start_date="2023-01-01") def _arbeitsl_geld_2_vermög_freib_karenzz_bg( arbeitsl_geld_2_params: dict, anz_personen_bg: int, @@ -226,7 +226,7 @@ def _arbeitsl_geld_2_vermög_freib_karenzz_bg( return out -@policy_info(start_date="2023-01-01", name_in_dag="arbeitsl_geld_2_vermög_freib_bg") +@policy_function(start_date="2023-01-01", leaf_name="arbeitsl_geld_2_vermög_freib_bg") def arbeitsl_geld_2_vermög_freib_bg_ab_2023( arbeitsl_geld_2_params: dict, anz_personen_bg: int, diff --git a/src/_gettsim/transfers/elterngeld.py b/src/_gettsim/transfers/elterngeld.py index 9049c813ad..2d275a9020 100644 --- a/src/_gettsim/transfers/elterngeld.py +++ b/src/_gettsim/transfers/elterngeld.py @@ -1,6 +1,6 @@ """This module provides functions to compute parental leave benefits (Elterngeld).""" -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function aggregate_by_group_elterngeld = { "kind_anspruchsberechtigt_fg": { @@ -21,7 +21,7 @@ } -@policy_info(start_date="2011-01-01", params_key_for_rounding="elterngeld") +@policy_function(start_date="2011-01-01", params_key_for_rounding="elterngeld") def elterngeld_m( elterngeld_anspruchsbedingungen_erfüllt: bool, elterngeld_anspruchshöhe_m: float, @@ -46,9 +46,9 @@ def elterngeld_m( return out -@policy_info( +@policy_function( end_date="2010-12-31", - name_in_dag="elterngeld_m", + leaf_name="elterngeld_m", params_key_for_rounding="elterngeld", ) def eltergeld_not_implemented() -> float: @@ -174,7 +174,9 @@ def monate_elterngeldbezug_unter_grenze_fg( return out -@policy_info(end_date="2024-03-31", name_in_dag="vorjahr_einkommen_unter_bezugsgrenze") +@policy_function( + end_date="2024-03-31", leaf_name="vorjahr_einkommen_unter_bezugsgrenze" +) def vorjahr_einkommen_unter_bezugsgrenze_mit_unterscheidung_single_paar( alleinerz: bool, elterngeld_zu_verst_eink_vorjahr_y_sn: float, @@ -208,8 +210,8 @@ def vorjahr_einkommen_unter_bezugsgrenze_mit_unterscheidung_single_paar( return out -@policy_info( - start_date="2024-04-01", name_in_dag="vorjahr_einkommen_unter_bezugsgrenze" +@policy_function( + start_date="2024-04-01", leaf_name="vorjahr_einkommen_unter_bezugsgrenze" ) def vorjahr_einkommen_unter_bezugsgrenze_ohne_unterscheidung_single_paar( elterngeld_zu_verst_eink_vorjahr_y_sn: float, @@ -284,7 +286,7 @@ def elterngeld_basisbetrag_m( ) * elterngeld_lohnersatzanteil -@policy_info(start_date="2011-01-01") +@policy_function(start_date="2011-01-01") def elterngeld_lohnersatzanteil( elterngeld_nettoeinkommen_vorjahr_m: float, _untere_lohnersatzanteil_grenze_minus_nettoeinkommen: float, @@ -344,7 +346,7 @@ def elterngeld_lohnersatzanteil( return out -@policy_info(params_key_for_rounding="elterngeld") +@policy_function(params_key_for_rounding="elterngeld") def _untere_lohnersatzanteil_grenze_minus_nettoeinkommen( elterngeld_nettoeinkommen_vorjahr_m: float, elterngeld_params: dict, @@ -369,7 +371,7 @@ def _untere_lohnersatzanteil_grenze_minus_nettoeinkommen( ) -@policy_info(params_key_for_rounding="elterngeld") +@policy_function(params_key_for_rounding="elterngeld") def _nettoeinkommen_minus_obere_lohnersatzanteil_grenze( elterngeld_nettoeinkommen_vorjahr_m: float, elterngeld_params: dict, @@ -552,7 +554,7 @@ def anrechenbares_elterngeld_m( return out -@policy_info(params_key_for_rounding="elterngeld") +@policy_function(params_key_for_rounding="elterngeld") def elterngeld_nettolohn_approximation_m( bruttolohn_m: float, lohnst_m: float, diff --git a/src/_gettsim/transfers/erwerbsm_rente.py b/src/_gettsim/transfers/erwerbsm_rente.py index 8aedc87639..1d642e67cb 100644 --- a/src/_gettsim/transfers/erwerbsm_rente.py +++ b/src/_gettsim/transfers/erwerbsm_rente.py @@ -1,7 +1,7 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def erwerbsm_rente_m( # noqa: PLR0913 erwerbsm_rente_zugangsfaktor: float, entgeltp_west_erwerbsm_rente: float, @@ -49,7 +49,7 @@ def erwerbsm_rente_m( # noqa: PLR0913 return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def ges_rente_vorauss_erwerbsm( voll_erwerbsgemind: bool, teilw_erwerbsgemind: bool, @@ -85,7 +85,7 @@ def ges_rente_vorauss_erwerbsm( return anspruch_erwerbsm_rente -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def entgeltp_west_erwerbsm_rente( entgeltp_west: float, entgeltp_zurechnungszeit: float, @@ -118,7 +118,7 @@ def entgeltp_west_erwerbsm_rente( return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def entgeltp_ost_erwerbsm_rente( entgeltp_ost: float, entgeltp_zurechnungszeit: float, @@ -151,7 +151,7 @@ def entgeltp_ost_erwerbsm_rente( return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def entgeltp_zurechnungszeit( durchschn_entgeltp: float, age_of_retirement: float, @@ -186,7 +186,7 @@ def entgeltp_zurechnungszeit( return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def rentenartfaktor( teilw_erwerbsgemind: bool, erwerbsm_rente_params: dict, @@ -218,7 +218,7 @@ def rentenartfaktor( return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def erwerbsm_rente_zugangsfaktor( age_of_retirement: float, _erwerbsm_rente_langj_versicherte_wartezeit: bool, @@ -277,7 +277,7 @@ def erwerbsm_rente_zugangsfaktor( return out -@policy_info(start_date="2001-01-01") +@policy_function(start_date="2001-01-01") def _erwerbsm_rente_langj_versicherte_wartezeit( # noqa: PLR0913 m_pflichtbeitrag: float, m_freiw_beitrag: float, diff --git a/src/_gettsim/transfers/erziehungsgeld.py b/src/_gettsim/transfers/erziehungsgeld.py index 47e5c2e8af..ee48316c5e 100644 --- a/src/_gettsim/transfers/erziehungsgeld.py +++ b/src/_gettsim/transfers/erziehungsgeld.py @@ -1,6 +1,6 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function aggregate_by_p_id_erziehungsgeld = { "erziehungsgeld_eltern_m": { @@ -11,7 +11,7 @@ } -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def erziehungsgeld_m( erziehungsgeld_eltern_m: int, erziehungsgeld_anspruch_eltern: bool, @@ -42,9 +42,9 @@ def erziehungsgeld_m( return out -@policy_info( +@policy_function( end_date="2003-12-31", - name_in_dag="erziehungsgeld_kind_m", + leaf_name="erziehungsgeld_kind_m", params_key_for_rounding="erziehungsgeld", ) def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: @@ -56,10 +56,10 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: ) -@policy_info( +@policy_function( start_date="2004-01-01", end_date="2008-12-31", - name_in_dag="erziehungsgeld_kind_m", + leaf_name="erziehungsgeld_kind_m", params_key_for_rounding="erziehungsgeld", ) def erziehungsgeld_kind_mit_budgetsatz_m( @@ -99,7 +99,7 @@ def erziehungsgeld_kind_mit_budgetsatz_m( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def erziehungsgeld_ohne_abzug_m( budgetsatz_erzieh: bool, erziehungsgeld_eink_relev_kind_y: float, @@ -142,7 +142,7 @@ def erziehungsgeld_ohne_abzug_m( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def erziehungsgeld_abzug_transfer( erziehungsgeld_eink_relev_kind_m: float, _erziehungsgeld_einkommensgrenze_kind_m: float, @@ -181,10 +181,10 @@ def erziehungsgeld_abzug_transfer( return out -@policy_info( +@policy_function( start_date="2004-01-01", end_date="2006-12-10", - name_in_dag="erziehungsgeld_anspruch_kind", + leaf_name="erziehungsgeld_anspruch_kind", ) def _erziehungsgeld_anspruch_kind_vor_abschaffung( kind: bool, @@ -222,10 +222,10 @@ def _erziehungsgeld_anspruch_kind_vor_abschaffung( return out -@policy_info( +@policy_function( start_date="2006-12-11", end_date="2008-12-31", - name_in_dag="erziehungsgeld_anspruch_kind", + leaf_name="erziehungsgeld_anspruch_kind", ) def _erziehungsgeld_anspruch_kind_nach_abschaffung( kind: bool, @@ -270,7 +270,7 @@ def _erziehungsgeld_anspruch_kind_nach_abschaffung( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def erziehungsgeld_anspruch_eltern( arbeitsstunden_w: float, erziehungsgeld_anspruch_kind_fg: bool, @@ -301,7 +301,7 @@ def erziehungsgeld_anspruch_eltern( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def erziehungsgeld_eink_relev_kind_y( bruttolohn_vorj_y_fg: float, anz_erwachsene_fg: int, @@ -344,7 +344,7 @@ def erziehungsgeld_eink_relev_kind_y( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def _erziehungsgeld_einkommensgrenze_kind_y( _erziehungsgeld_einkommensgrenze_vor_aufschl: float, anz_kinder_mit_kindergeld_fg: float, @@ -381,7 +381,7 @@ def _erziehungsgeld_einkommensgrenze_kind_y( return out -@policy_info(start_date="2004-01-01", end_date="2008-12-31") +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def _erziehungsgeld_einkommensgrenze_vor_aufschl( alleinerz_fg: bool, alter_monate: float, diff --git a/src/_gettsim/transfers/grundrente.py b/src/_gettsim/transfers/grundrente.py index 163d01f46c..9d25056d6b 100644 --- a/src/_gettsim/transfers/grundrente.py +++ b/src/_gettsim/transfers/grundrente.py @@ -1,8 +1,8 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_m( grundr_zuschlag_vor_eink_anr_m: float, grundr_zuschlag_eink_m: float ) -> float: @@ -81,7 +81,7 @@ def _grundr_zuschlag_eink_vor_freibetrag_m( return out -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_eink_m( _grundr_zuschlag_eink_vor_freibetrag_m_ehe: float, p_id_ehepartner: int, @@ -136,7 +136,7 @@ def grundr_zuschlag_eink_m( return out -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_vor_eink_anr_m( grundr_zuschlag_bonus_entgeltp: float, grundr_bew_zeiten: int, @@ -215,7 +215,7 @@ def grundr_bew_zeiten_avg_entgeltp( return out -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_höchstwert_m(grundr_zeiten: int, ges_rente_params: dict) -> float: """Calculate the maximum allowed number of average Entgeltpunkte (per month) after adding bonus of Entgeltpunkte for a given number of Grundrentenzeiten. @@ -246,7 +246,7 @@ def grundr_zuschlag_höchstwert_m(grundr_zeiten: int, ges_rente_params: dict) -> return out -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def grundr_zuschlag_bonus_entgeltp( grundr_bew_zeiten_avg_entgeltp: float, grundr_zuschlag_höchstwert_m: float, @@ -299,7 +299,7 @@ def grundr_zuschlag_bonus_entgeltp( return out -@policy_info(params_key_for_rounding="ges_rente") +@policy_function(params_key_for_rounding="ges_rente") def rente_vorj_vor_grundr_proxy_m( # noqa: PLR0913 rentner: bool, priv_rente_m: float, diff --git a/src/_gettsim/transfers/grunds_im_alter.py b/src/_gettsim/transfers/grunds_im_alter.py index 686c6f1707..fa92404e15 100644 --- a/src/_gettsim/transfers/grunds_im_alter.py +++ b/src/_gettsim/transfers/grunds_im_alter.py @@ -1,5 +1,5 @@ +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info def grunds_im_alter_m_eg( # noqa: PLR0913 @@ -306,7 +306,7 @@ def _grunds_im_alter_mehrbedarf_schwerbeh_g_m( return out -@policy_info(end_date="2020-12-31", name_in_dag="grunds_im_alter_ges_rente_m") +@policy_function(end_date="2020-12-31", leaf_name="grunds_im_alter_ges_rente_m") def grunds_im_alter_ges_rente_m_bis_2020( ges_rente_m: float, ) -> float: @@ -327,7 +327,7 @@ def grunds_im_alter_ges_rente_m_bis_2020( return ges_rente_m -@policy_info(start_date="2021-01-01", name_in_dag="grunds_im_alter_ges_rente_m") +@policy_function(start_date="2021-01-01", leaf_name="grunds_im_alter_ges_rente_m") def grunds_im_alter_ges_rente_m_ab_2021( ges_rente_m: float, grundr_berechtigt: bool, diff --git a/src/_gettsim/transfers/kindergeld.py b/src/_gettsim/transfers/kindergeld.py index b5b13ad4f3..9e1a445fca 100644 --- a/src/_gettsim/transfers/kindergeld.py +++ b/src/_gettsim/transfers/kindergeld.py @@ -1,6 +1,7 @@ import numpy -from _gettsim.shared import join_numpy, policy_info +from _gettsim.functions.policy_function import policy_function +from _gettsim.shared import join_numpy aggregate_by_group_kindergeld = { "anz_kinder_mit_kindergeld_fg": { @@ -18,7 +19,7 @@ } -@policy_info(start_date="2023-01-01", name_in_dag="kindergeld_m") +@policy_function(start_date="2023-01-01", leaf_name="kindergeld_m") def kindergeld_ohne_staffelung_m( kindergeld_anz_ansprüche: int, kindergeld_params: dict, @@ -43,7 +44,7 @@ def kindergeld_ohne_staffelung_m( return kindergeld_params["kindergeld"] * kindergeld_anz_ansprüche -@policy_info(end_date="2022-12-31", name_in_dag="kindergeld_m") +@policy_function(end_date="2022-12-31", leaf_name="kindergeld_m") def kindergeld_gestaffelt_m( kindergeld_anz_ansprüche: int, kindergeld_params: dict, @@ -78,7 +79,7 @@ def kindergeld_gestaffelt_m( return sum_kindergeld -@policy_info(end_date="2011-12-31", name_in_dag="kindergeld_anspruch") +@policy_function(end_date="2011-12-31", leaf_name="kindergeld_anspruch") def kindergeld_anspruch_nach_lohn( alter: int, in_ausbildung: bool, @@ -115,7 +116,7 @@ def kindergeld_anspruch_nach_lohn( return out -@policy_info(start_date="2012-01-01", name_in_dag="kindergeld_anspruch") +@policy_function(start_date="2012-01-01", leaf_name="kindergeld_anspruch") def kindergeld_anspruch_nach_stunden( alter: int, in_ausbildung: bool, @@ -174,7 +175,7 @@ def kind_bis_10_mit_kindergeld( return out -@policy_info(skip_vectorization=True) +@policy_function(skip_vectorization=True) def same_fg_as_kindergeldempfänger( p_id: numpy.ndarray[int], p_id_kindergeld_empf: numpy.ndarray[int], diff --git a/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py b/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py index cf53de0896..58eb639c35 100644 --- a/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py +++ b/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py @@ -1,6 +1,6 @@ """Kinderzuschlag / Additional Child Benefit.""" -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def kinderzuschl_m_bg( @@ -58,9 +58,9 @@ def _kinderzuschl_nach_vermög_check_m( return _kinderzuschl_nach_vermög_check_m_bg / anz_personen_bg -@policy_info( +@policy_function( end_date="2019-06-30", - name_in_dag="_kinderzuschl_vor_vermög_check_m_bg", + leaf_name="_kinderzuschl_vor_vermög_check_m_bg", ) def _kinderzuschl_vor_vermög_check_m_bg_check_eink_max( # noqa: PLR0913 kinderzuschl_bruttoeink_eltern_m_bg: float, @@ -117,7 +117,7 @@ def _kinderzuschl_vor_vermög_check_m_bg_check_eink_max( # noqa: PLR0913 return out -@policy_info(start_date="2019-07-01") +@policy_function(start_date="2019-07-01") def _kinderzuschl_vor_vermög_check_m_bg( kinderzuschl_bruttoeink_eltern_m_bg: float, kinderzuschl_eink_min_m_bg: float, diff --git a/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py b/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py index 08e657add8..beea41a02b 100644 --- a/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py +++ b/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py @@ -1,4 +1,4 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function aggregate_by_group_kinderzuschl_eink = { "_kinderzuschl_anz_kinder_anspruch_bg": { @@ -43,7 +43,7 @@ def kinderzuschl_bruttoeink_eltern_m( return out -@policy_info(params_key_for_rounding="kinderzuschl_eink") +@policy_function(params_key_for_rounding="kinderzuschl_eink") def kinderzuschl_eink_eltern_m( arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: float, kindergeld_anspruch: bool, @@ -75,7 +75,7 @@ def kinderzuschl_eink_eltern_m( return out -@policy_info(end_date="2010-12-31", name_in_dag="kinderzuschl_eink_regel_m_bg") +@policy_function(end_date="2010-12-31", leaf_name="kinderzuschl_eink_regel_m_bg") def kinderzuschl_eink_regel_m_bg_arbeitsl_geld_2_params_old( _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: float, alleinerz_bg: bool, @@ -110,7 +110,7 @@ def kinderzuschl_eink_regel_m_bg_arbeitsl_geld_2_params_old( return float(out) -@policy_info(start_date="2011-01-01") +@policy_function(start_date="2011-01-01") def kinderzuschl_eink_regel_m_bg( _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: float, alleinerz_bg: bool, @@ -160,7 +160,7 @@ def kinderzuschl_eink_relev_m_bg( return kinderzuschl_eink_regel_m_bg + kinderzuschl_kost_unterk_m_bg -@policy_info(end_date="2019-06-30") +@policy_function(end_date="2019-06-30") def kinderzuschl_eink_max_m_bg( kinderzuschl_eink_relev_m_bg: float, _kinderzuschl_anz_kinder_anspruch_bg: int, diff --git a/src/_gettsim/transfers/rente.py b/src/_gettsim/transfers/rente.py index 23b2a85323..02b72c83be 100644 --- a/src/_gettsim/transfers/rente.py +++ b/src/_gettsim/transfers/rente.py @@ -1,4 +1,4 @@ -from _gettsim.shared import policy_info +from _gettsim.functions.policy_function import policy_function def sum_ges_rente_priv_rente_m(priv_rente_m: float, ges_rente_m: float) -> float: @@ -19,15 +19,15 @@ def sum_ges_rente_priv_rente_m(priv_rente_m: float, ges_rente_m: float) -> float return out -@policy_info(end_date="2020-12-31") +@policy_function(end_date="2020-12-31") def ges_rente_m(bruttorente_m: float, rentner: bool) -> float: return bruttorente_m if rentner else 0.0 -@policy_info( +@policy_function( start_date="2021-01-01", params_key_for_rounding="ges_rente", - name_in_dag="ges_rente_m", + leaf_name="ges_rente_m", ) def ges_rente_mit_grundrente_m( bruttorente_m: float, @@ -53,9 +53,9 @@ def ges_rente_mit_grundrente_m( return out -@policy_info( +@policy_function( end_date="2016-12-31", - name_in_dag="bruttorente_m", + leaf_name="bruttorente_m", params_key_for_rounding="ges_rente", ) def bruttorente_mit_harter_hinzuverdienstgrenze_m( @@ -98,10 +98,10 @@ def bruttorente_mit_harter_hinzuverdienstgrenze_m( return out -@policy_info( +@policy_function( start_date="2017-01-01", end_date="2022-12-31", - name_in_dag="bruttorente_m", + leaf_name="bruttorente_m", params_key_for_rounding="ges_rente", ) def bruttorente_mit_hinzuverdienstdeckel_m( @@ -151,7 +151,7 @@ def bruttorente_mit_hinzuverdienstdeckel_m( return out -@policy_info( +@policy_function( start_date="2017-01-01", end_date="2022-12-31", ) @@ -204,7 +204,7 @@ def _ges_rente_zahlbetrag_ohne_deckel_m( return out -@policy_info( +@policy_function( start_date="2017-01-01", end_date="2022-12-31", ) @@ -228,7 +228,7 @@ def _differenz_bruttolohn_hinzuverdienstgrenze_y( return max(bruttolohn_y - ges_rente_params["hinzuverdienstgrenze"], 0.0) -@policy_info( +@policy_function( start_date="2017-01-01", end_date="2022-12-31", ) @@ -261,9 +261,9 @@ def _differenz_bruttolohn_hinzuverdienstdeckel_y( ) -@policy_info( +@policy_function( start_date="2023-01-01", - name_in_dag="bruttorente_m", + leaf_name="bruttorente_m", params_key_for_rounding="ges_rente", ) def bruttorente_ohne_einkommensanrechnung_m( @@ -283,7 +283,7 @@ def bruttorente_ohne_einkommensanrechnung_m( return bruttorente_basisbetrag_m -@policy_info(start_date="1992-01-01") +@policy_function(start_date="1992-01-01") def bruttorente_basisbetrag_m( ges_rente_zugangsfaktor: float, entgeltp_ost: float, @@ -596,7 +596,9 @@ def age_of_retirement( return jahr_renteneintr - geburtsjahr + (monat_renteneintr - geburtsmonat - 1) / 12 -@policy_info(end_date="2011-12-31", name_in_dag="_ges_rente_altersgrenze_abschlagsfrei") +@policy_function( + end_date="2011-12-31", leaf_name="_ges_rente_altersgrenze_abschlagsfrei" +) def _ges_rente_altersgrenze_abschlagsfrei_ohne_besond_langj( ges_rente_regelaltersgrenze: float, _ges_rente_frauen_altersgrenze: float, @@ -646,10 +648,10 @@ def _ges_rente_altersgrenze_abschlagsfrei_ohne_besond_langj( return out -@policy_info( +@policy_function( start_date="2012-01-01", end_date="2017-12-31", - name_in_dag="_ges_rente_altersgrenze_abschlagsfrei", + leaf_name="_ges_rente_altersgrenze_abschlagsfrei", ) def _ges_rente_altersgrenze_abschlagsfrei_mit_besond_langj( ges_rente_regelaltersgrenze: float, @@ -714,8 +716,8 @@ def _ges_rente_altersgrenze_abschlagsfrei_mit_besond_langj( return out -@policy_info( - start_date="2018-01-01", name_in_dag="_ges_rente_altersgrenze_abschlagsfrei" +@policy_function( + start_date="2018-01-01", leaf_name="_ges_rente_altersgrenze_abschlagsfrei" ) def _ges_rente_altersgrenze_abschlagsfrei_ohne_arbeitsl_frauen( ges_rente_regelaltersgrenze: float, @@ -759,7 +761,7 @@ def _ges_rente_altersgrenze_abschlagsfrei_ohne_arbeitsl_frauen( return out -@policy_info(end_date="2017-12-31", name_in_dag="referenzalter_abschlag") +@policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") def _referenzalter_abschlag_mit_rente_arbeitsl_frauen( ges_rente_regelaltersgrenze: float, _ges_rente_frauen_altersgrenze: float, @@ -826,7 +828,7 @@ def _referenzalter_abschlag_mit_rente_arbeitsl_frauen( return out -@policy_info(start_date="2018-01-01", name_in_dag="referenzalter_abschlag") +@policy_function(start_date="2018-01-01", leaf_name="referenzalter_abschlag") def _referenzalter_abschlag_ohne_rente_arbeitsl_frauen( ges_rente_regelaltersgrenze: float, _ges_rente_langj_altersgrenze: float, @@ -859,7 +861,7 @@ def _referenzalter_abschlag_ohne_rente_arbeitsl_frauen( return out -@policy_info(end_date="2007-04-19", name_in_dag="ges_rente_regelaltersgrenze") +@policy_function(end_date="2007-04-19", leaf_name="ges_rente_regelaltersgrenze") def ges_rente_regelaltersgrenze_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -895,7 +897,7 @@ def ges_rente_regelaltersgrenze_ohne_staffelung( return ges_rente_params["regelaltersgrenze"] -@policy_info(start_date="2007-04-20", name_in_dag="ges_rente_regelaltersgrenze") +@policy_function(start_date="2007-04-20", leaf_name="ges_rente_regelaltersgrenze") def ges_rente_regelaltersgrenze_mit_staffelung( geburtsjahr: int, ges_rente_params: dict ) -> float: @@ -934,7 +936,7 @@ def ges_rente_regelaltersgrenze_mit_staffelung( return out -@policy_info(end_date="1989-12-17", name_in_dag="_ges_rente_frauen_altersgrenze") +@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_frauen_altersgrenze") def ges_rente_frauen_altersgrenze_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -963,7 +965,7 @@ def ges_rente_frauen_altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] -@policy_info(start_date="1989-12-18", name_in_dag="_ges_rente_frauen_altersgrenze") +@policy_function(start_date="1989-12-18", leaf_name="_ges_rente_frauen_altersgrenze") def ges_rente_frauen_altersgrenze_mit_staffelung( geburtsjahr: int, geburtsmonat: int, @@ -1015,7 +1017,7 @@ def ges_rente_frauen_altersgrenze_mit_staffelung( return out -@policy_info(end_date="2017-12-31") +@policy_function(end_date="2017-12-31") def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung( geburtsjahr: int, geburtsmonat: int, @@ -1068,7 +1070,7 @@ def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung( return out -@policy_info(end_date="1989-12-17", name_in_dag="_ges_rente_arbeitsl_altersgrenze") +@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_arbeitsl_altersgrenze") def _ges_rente_arbeitsl_altersgrenze_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -1097,10 +1099,10 @@ def _ges_rente_arbeitsl_altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"] -@policy_info( +@policy_function( start_date="1989-12-18", end_date="1996-07-28", - name_in_dag="_ges_rente_arbeitsl_altersgrenze", + leaf_name="_ges_rente_arbeitsl_altersgrenze", ) def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: float, @@ -1122,10 +1124,10 @@ def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( return _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung -@policy_info( +@policy_function( start_date="1996-07-29", end_date="2009-12-31", - name_in_dag="_ges_rente_arbeitsl_altersgrenze", + leaf_name="_ges_rente_arbeitsl_altersgrenze", ) def _ges_rente_arbeitsl_altersgrenze_mit_vertrauensschutzprüfung( geburtsjahr: int, @@ -1180,10 +1182,10 @@ def _ges_rente_arbeitsl_altersgrenze_mit_vertrauensschutzprüfung( return out -@policy_info( +@policy_function( start_date="2010-01-01", end_date="2017-12-31", - name_in_dag="_ges_rente_arbeitsl_altersgrenze", + leaf_name="_ges_rente_arbeitsl_altersgrenze", ) def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: float, @@ -1208,7 +1210,7 @@ def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( return _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung -@policy_info(end_date="1989-12-17", name_in_dag="_ges_rente_langj_altersgrenze") +@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_langj_altersgrenze") def _ges_rente_langj_altersgrenze_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -1243,10 +1245,10 @@ def _ges_rente_langj_altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"] -@policy_info( +@policy_function( start_date="1989-12-18", end_date="2007-04-19", - name_in_dag="_ges_rente_langj_altersgrenze", + leaf_name="_ges_rente_langj_altersgrenze", ) def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsmonat( geburtsjahr: int, @@ -1304,7 +1306,7 @@ def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsmonat( return out -@policy_info(start_date="2007-04-20", name_in_dag="_ges_rente_langj_altersgrenze") +@policy_function(start_date="2007-04-20", leaf_name="_ges_rente_langj_altersgrenze") def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsjahr( geburtsjahr: int, geburtsmonat: int, @@ -1361,10 +1363,10 @@ def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsjahr( return out -@policy_info( +@policy_function( start_date="2012-01-01", end_date="2014-06-22", - name_in_dag="_ges_rente_besond_langj_altersgrenze", + leaf_name="_ges_rente_besond_langj_altersgrenze", ) def _ges_rente_besond_langj_altersgrenze_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 @@ -1398,8 +1400,8 @@ def _ges_rente_besond_langj_altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_besond_langj_versicherte"] -@policy_info( - start_date="2014-06-23", name_in_dag="_ges_rente_besond_langj_altersgrenze" +@policy_function( + start_date="2014-06-23", leaf_name="_ges_rente_besond_langj_altersgrenze" ) def _ges_rente_besond_langj_altersgrenze_mit_staffelung( geburtsjahr: int, @@ -1451,7 +1453,7 @@ def _ges_rente_besond_langj_altersgrenze_mit_staffelung( return out -@policy_info(end_date="2017-12-31", name_in_dag="_ges_rente_altersgrenze_vorzeitig") +@policy_function(end_date="2017-12-31", leaf_name="_ges_rente_altersgrenze_vorzeitig") def _ges_rente_altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( ges_rente_vorauss_frauen: bool, ges_rente_vorauss_langj: bool, @@ -1508,7 +1510,7 @@ def _ges_rente_altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( return out -@policy_info(start_date="2018-01-01", name_in_dag="_ges_rente_altersgrenze_vorzeitig") +@policy_function(start_date="2018-01-01", leaf_name="_ges_rente_altersgrenze_vorzeitig") def _ges_rente_altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( ges_rente_vorauss_langj: bool, ges_rente_regelaltersgrenze: float, @@ -1544,8 +1546,8 @@ def _ges_rente_altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( return out -@policy_info( - end_date="1989-12-17", name_in_dag="_ges_rente_frauen_altersgrenze_vorzeitig" +@policy_function( + end_date="1989-12-17", leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig" ) def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 @@ -1576,10 +1578,10 @@ def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung( return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] -@policy_info( +@policy_function( start_date="1989-12-18", end_date="1996-09-26", - name_in_dag="_ges_rente_frauen_altersgrenze_vorzeitig", + leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig", ) def _ges_rente_frauen_altersgrenze_vorzeitig_mit_staffelung( geburtsjahr: int, @@ -1632,8 +1634,8 @@ def _ges_rente_frauen_altersgrenze_vorzeitig_mit_staffelung( return out -@policy_info( - start_date="1996-09-27", name_in_dag="_ges_rente_frauen_altersgrenze_vorzeitig" +@policy_function( + start_date="1996-09-27", leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig" ) def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung_nach_96( geburtsjahr: int, # noqa: ARG001 @@ -1664,7 +1666,7 @@ def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung_nach_96( return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] -@policy_info(end_date="1989-12-17", name_in_dag="_ges_rente_langj_vorzeitig") +@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_langj_vorzeitig") def _ges_rente_langj_vorzeitig_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -1694,10 +1696,10 @@ def _ges_rente_langj_vorzeitig_ohne_staffelung( return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] -@policy_info( +@policy_function( start_date="1989-12-18", end_date="1996-09-26", - name_in_dag="_ges_rente_langj_vorzeitig", + leaf_name="_ges_rente_langj_vorzeitig", ) def _ges_rente_langj_vorzeitig_mit_staffelung( geburtsjahr: int, @@ -1738,7 +1740,7 @@ def _ges_rente_langj_vorzeitig_mit_staffelung( return out -@policy_info(start_date="1996-09-27", name_in_dag="_ges_rente_langj_vorzeitig") +@policy_function(start_date="1996-09-27", leaf_name="_ges_rente_langj_vorzeitig") def _ges_rente_langj_vorzeitig_ohne_staffelung_nach_96( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -1767,7 +1769,7 @@ def _ges_rente_langj_vorzeitig_ohne_staffelung_nach_96( return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] -@policy_info(end_date="1989-12-17", name_in_dag="_ges_rente_arbeitsl_vorzeitig") +@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_arbeitsl_vorzeitig") def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung( geburtsjahr: int, # noqa: ARG001 ges_rente_params: dict, @@ -1796,7 +1798,7 @@ def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung( return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] -@policy_info(end_date="2017-12-31") +@policy_function(end_date="2017-12-31") def _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss( geburtsjahr: int, geburtsmonat: int, @@ -1848,10 +1850,10 @@ def _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss( return arbeitsl_vorzeitig -@policy_info( +@policy_function( start_date="1989-12-18", end_date="1996-07-28", - name_in_dag="_ges_rente_arbeitsl_vorzeitig", + leaf_name="_ges_rente_arbeitsl_vorzeitig", ) def ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss_vor_1996( _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: float, @@ -1873,10 +1875,10 @@ def ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss_vor_1996( return _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss -@policy_info( +@policy_function( start_date="1996-07-29", end_date="1996-09-26", - name_in_dag="_ges_rente_arbeitsl_vorzeitig", + leaf_name="_ges_rente_arbeitsl_vorzeitig", ) def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_1996( vertra_arbeitsl_1997: bool, @@ -1914,10 +1916,10 @@ def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_1996( return arbeitsl_vorzeitig -@policy_info( +@policy_function( start_date="1996-09-27", end_date="2004-07-25", - name_in_dag="_ges_rente_arbeitsl_vorzeitig", + leaf_name="_ges_rente_arbeitsl_vorzeitig", ) def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung_nach_1997( geburtsjahr: int, # noqa: ARG001 @@ -1947,10 +1949,10 @@ def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung_nach_1997( return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] -@policy_info( +@policy_function( start_date="2004-07-26", end_date="2017-12-31", - name_in_dag="_ges_rente_arbeitsl_vorzeitig", + leaf_name="_ges_rente_arbeitsl_vorzeitig", ) def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2006( vertra_arbeitsl_2006: bool, @@ -1989,7 +1991,7 @@ def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2006( return arbeitsl_vorzeitig -@policy_info(end_date="2017-12-31", name_in_dag="ges_rente_vorauss_vorzeitig") +@policy_function(end_date="2017-12-31", leaf_name="ges_rente_vorauss_vorzeitig") def ges_rente_vorauss_vorzeitig_mit_rente_arbeitsl_frauen( ges_rente_vorauss_frauen: bool, ges_rente_vorauss_langj: bool, @@ -2027,7 +2029,7 @@ def ges_rente_vorauss_vorzeitig_mit_rente_arbeitsl_frauen( return out -@policy_info(start_date="2018-01-01", name_in_dag="ges_rente_vorauss_vorzeitig") +@policy_function(start_date="2018-01-01", leaf_name="ges_rente_vorauss_vorzeitig") def ges_rente_vorauss_vorzeitig_ohne_rente_arbeitsl_frauen( ges_rente_vorauss_langj: bool, ) -> bool: @@ -2066,7 +2068,7 @@ def ges_rente_vorauss_regelrente(ges_rente_wartezeit_5: bool) -> bool: return ges_rente_wartezeit_5 -@policy_info(end_date="1997-12-15", name_in_dag="ges_rente_vorauss_frauen") +@policy_function(end_date="1997-12-15", leaf_name="ges_rente_vorauss_frauen") def ges_rente_vorauss_frauen_ohne_prüfung_geburtsjahr( weiblich: bool, ges_rente_wartezeit_15: bool, @@ -2107,10 +2109,10 @@ def ges_rente_vorauss_frauen_ohne_prüfung_geburtsjahr( return out -@policy_info( +@policy_function( start_date="1997-12-16", end_date="2017-12-31", - name_in_dag="ges_rente_vorauss_frauen", + leaf_name="ges_rente_vorauss_frauen", ) def ges_rente_vorauss_frauen_mit_geburtsjahr_prüfung( weiblich: bool, @@ -2156,7 +2158,7 @@ def ges_rente_vorauss_frauen_mit_geburtsjahr_prüfung( return out -@policy_info(end_date="2007-04-29", name_in_dag="ges_rente_vorauss_arbeitsl") +@policy_function(end_date="2007-04-29", leaf_name="ges_rente_vorauss_arbeitsl") def _ges_rente_vorauss_arbeitsl_ohne_2007_reform( arbeitsl_1y_past_585: bool, ges_rente_wartezeit_15: bool, @@ -2191,10 +2193,10 @@ def _ges_rente_vorauss_arbeitsl_ohne_2007_reform( return out -@policy_info( +@policy_function( start_date="2007-04-30", end_date="2017-12-31", - name_in_dag="ges_rente_vorauss_arbeitsl", + leaf_name="ges_rente_vorauss_arbeitsl", ) def _ges_rente_vorauss_arbeitsl_mit_2007_reform( arbeitsl_1y_past_585: bool, @@ -2263,7 +2265,7 @@ def ges_rente_vorauss_langj( return ges_rente_wartezeit_35 -@policy_info(start_date="2012-01-01") +@policy_function(start_date="2012-01-01") def ges_rente_vorauss_besond_langj( ges_rente_wartezeit_45: bool, ) -> bool: @@ -2400,7 +2402,7 @@ def ges_rente_wartezeit_35( # noqa: PLR0913 return out -@policy_info(start_date="2012-01-01") +@policy_function(start_date="2012-01-01") def ges_rente_wartezeit_45( # noqa: PLR0913 m_pflichtbeitrag: float, m_freiw_beitrag: float, @@ -2503,7 +2505,7 @@ def ges_rente_anrechnungszeit( # noqa: PLR0913 return out -@policy_info(start_date="2012-01-01") +@policy_function(start_date="2012-01-01") def ges_rente_anrechnungszeit_45( m_arbeitsunfähig: float, m_alg1_übergang: float, diff --git a/src/_gettsim/transfers/unterhaltsvors.py b/src/_gettsim/transfers/unterhaltsvors.py index 002d88b99b..3eacbc7f3d 100644 --- a/src/_gettsim/transfers/unterhaltsvors.py +++ b/src/_gettsim/transfers/unterhaltsvors.py @@ -3,7 +3,8 @@ import numpy -from _gettsim.shared import join_numpy, policy_info +from _gettsim.functions.policy_function import policy_function +from _gettsim.shared import join_numpy aggregate_by_p_id_unterhaltsvors = { "unterhaltsvors_zahlbetrag_eltern_m": { @@ -14,7 +15,7 @@ } -@policy_info(start_date="2009-01-01", params_key_for_rounding="unterhaltsvors") +@policy_function(start_date="2009-01-01", params_key_for_rounding="unterhaltsvors") def unterhaltsvors_m( kind_unterh_erhalt_m: float, _unterhaltsvors_anspruch_kind_m: float, @@ -58,9 +59,9 @@ def unterhaltsvors_m( return out -@policy_info( +@policy_function( end_date="2008-12-31", - name_in_dag="unterhaltsvors_m", + leaf_name="unterhaltsvors_m", params_key_for_rounding="unterhaltsvors", ) def unterhaltsvors_not_implemented_m() -> float: @@ -71,7 +72,7 @@ def unterhaltsvors_not_implemented_m() -> float: ) -@policy_info(skip_vectorization=True) +@policy_function(skip_vectorization=True) def parent_alleinerz( p_id_kindergeld_empf: numpy.ndarray[int], p_id: numpy.ndarray[int], @@ -99,7 +100,7 @@ def parent_alleinerz( ) -@policy_info(start_date="2023-01-01", name_in_dag="_kindergeld_erstes_kind_m") +@policy_function(start_date="2023-01-01", leaf_name="_kindergeld_erstes_kind_m") def _kindergeld_erstes_kind_ohne_staffelung_m( kindergeld_params: dict, alter: int, # noqa: ARG001 @@ -121,7 +122,7 @@ def _kindergeld_erstes_kind_ohne_staffelung_m( return kindergeld_params["kindergeld"] -@policy_info(end_date="2022-12-31", name_in_dag="_kindergeld_erstes_kind_m") +@policy_function(end_date="2022-12-31", leaf_name="_kindergeld_erstes_kind_m") def _kindergeld_erstes_kind_gestaffelt_m( kindergeld_params: dict, alter: int, # noqa: ARG001 @@ -143,10 +144,10 @@ def _kindergeld_erstes_kind_gestaffelt_m( return kindergeld_params["kindergeld"][1] -@policy_info( +@policy_function( start_date="2009-01-01", end_date="2014-12-31", - name_in_dag="_unterhaltsvors_anspruch_kind_m", + leaf_name="_unterhaltsvors_anspruch_kind_m", ) def _unterhaltsvors_anspruch_kind_m_2009_bis_2014( alter: int, @@ -201,10 +202,10 @@ def _unterhaltsvors_anspruch_kind_m_2009_bis_2014( return out -@policy_info( +@policy_function( start_date="2015-01-01", end_date="2015-12-31", - name_in_dag="_unterhaltsvors_anspruch_kind_m", + leaf_name="_unterhaltsvors_anspruch_kind_m", ) def _unterhaltsvors_anspruch_kind_m_anwendungsvors( alter: int, @@ -241,10 +242,10 @@ def _unterhaltsvors_anspruch_kind_m_anwendungsvors( return out -@policy_info( +@policy_function( start_date="2016-01-01", end_date="2017-06-30", - name_in_dag="_unterhaltsvors_anspruch_kind_m", + leaf_name="_unterhaltsvors_anspruch_kind_m", ) def _unterhaltsvors_anspruch_kind_m_2016_bis_201706( alter: int, @@ -284,7 +285,7 @@ def _unterhaltsvors_anspruch_kind_m_2016_bis_201706( return out -@policy_info(start_date="2017-07-01", name_in_dag="_unterhaltsvors_anspruch_kind_m") +@policy_function(start_date="2017-07-01", leaf_name="_unterhaltsvors_anspruch_kind_m") def _unterhaltsvors_anspruch_kind_m_ab_201707( alter: int, _unterhaltsvorschuss_empf_eink_above_income_threshold: bool, @@ -328,7 +329,7 @@ def _unterhaltsvors_anspruch_kind_m_ab_201707( return out -@policy_info(start_date="2017-01-01", skip_vectorization=True) +@policy_function(start_date="2017-01-01", skip_vectorization=True) def _unterhaltsvorschuss_empf_eink_above_income_threshold( p_id_kindergeld_empf: numpy.ndarray[int], p_id: numpy.ndarray[int], @@ -357,7 +358,7 @@ def _unterhaltsvorschuss_empf_eink_above_income_threshold( ) -@policy_info(start_date="2017-01-01") +@policy_function(start_date="2017-01-01") def _unterhaltsvorschuss_eink_above_income_threshold( unterhaltsvorschuss_eink_m: float, unterhaltsvors_params: dict, @@ -378,7 +379,7 @@ def _unterhaltsvorschuss_eink_above_income_threshold( return unterhaltsvorschuss_eink_m >= unterhaltsvors_params["mindesteinkommen"] -@policy_info(start_date="2017-01-01") +@policy_function(start_date="2017-01-01") def unterhaltsvorschuss_eink_m( # noqa: PLR0913 bruttolohn_m: float, sonstig_eink_m: float, diff --git a/src/_gettsim/transfers/wohngeld.py b/src/_gettsim/transfers/wohngeld.py index ad4fc1e3cb..d9af5e195f 100644 --- a/src/_gettsim/transfers/wohngeld.py +++ b/src/_gettsim/transfers/wohngeld.py @@ -17,8 +17,8 @@ """ from _gettsim.config import numpy_or_jax as np +from _gettsim.functions.policy_function import policy_function from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.shared import policy_info aggregate_by_p_id_wohngeld = { "_wohngeld_eink_freib_alleinerz_bonus": { @@ -73,7 +73,7 @@ def wohngeld_m_wthh( return out -@policy_info(params_key_for_rounding="wohngeld") +@policy_function(params_key_for_rounding="wohngeld") def wohngeld_anspruchshöhe_m_wthh( anz_personen_wthh: int, wohngeld_eink_m_wthh: float, @@ -117,7 +117,7 @@ def wohngeld_anspruchshöhe_m_wthh( return out -@policy_info(params_key_for_rounding="wohngeld") +@policy_function(params_key_for_rounding="wohngeld") def wohngeld_anspruchshöhe_m_bg( anz_personen_bg: int, wohngeld_eink_m_bg: float, @@ -252,7 +252,7 @@ def wohngeld_abzüge_st_sozialv_m( return out -@policy_info(end_date="2006-12-31", name_in_dag="wohngeld_eink_vor_freib_m") +@policy_function(end_date="2006-12-31", leaf_name="wohngeld_eink_vor_freib_m") def wohngeld_eink_vor_freib_m_ohne_elterngeld( # noqa: PLR0913 eink_selbst_m: float, eink_abhängig_beschäftigt_m: float, @@ -315,7 +315,7 @@ def wohngeld_eink_vor_freib_m_ohne_elterngeld( # noqa: PLR0913 return out -@policy_info(start_date="2007-01-01", name_in_dag="wohngeld_eink_vor_freib_m") +@policy_function(start_date="2007-01-01", leaf_name="wohngeld_eink_vor_freib_m") def wohngeld_eink_vor_freib_m_mit_elterngeld( # noqa: PLR0913 eink_selbst_m: float, eink_abhängig_beschäftigt_m: float, @@ -403,7 +403,7 @@ def wohngeld_arbeitendes_kind(bruttolohn_m: float, kindergeld_anspruch: bool) -> return out -@policy_info(end_date="2015-12-31", name_in_dag="wohngeld_eink_freib_m") +@policy_function(end_date="2015-12-31", leaf_name="wohngeld_eink_freib_m") def wohngeld_eink_freib_m_bis_2015( # noqa: PLR0913 bruttolohn_m: float, wohngeld_arbeitendes_kind: bool, @@ -461,7 +461,7 @@ def wohngeld_eink_freib_m_bis_2015( # noqa: PLR0913 return freib_behinderung_m + freib_kinder_m -@policy_info(start_date="2016-01-01", name_in_dag="wohngeld_eink_freib_m") +@policy_function(start_date="2016-01-01", leaf_name="wohngeld_eink_freib_m") def wohngeld_eink_freib_m_ab_2016( bruttolohn_m: float, wohngeld_arbeitendes_kind: bool, @@ -649,7 +649,7 @@ def wohngeld_miete_m_bg( return wohngeld_miete_m_hh * (anz_personen_bg / anz_personen_hh) -@policy_info(end_date="2008-12-31", name_in_dag="wohngeld_miete_m_hh") +@policy_function(end_date="2008-12-31", leaf_name="wohngeld_miete_m_hh") def wohngeld_miete_bis_2008_m_hh( # noqa: PLR0913 mietstufe: int, immobilie_baujahr_hh: int, @@ -711,7 +711,7 @@ def wohngeld_miete_bis_2008_m_hh( # noqa: PLR0913 return out -@policy_info(start_date="2009-01-01", name_in_dag="wohngeld_miete_m_hh") +@policy_function(start_date="2009-01-01", leaf_name="wohngeld_miete_m_hh") def wohngeld_miete_ab_2009_m_hh( # noqa: PLR0912 (see #516) mietstufe: int, anz_personen_hh: int, @@ -759,7 +759,7 @@ def wohngeld_miete_ab_2009_m_hh( # noqa: PLR0912 (see #516) # Calc heating allowance. Until 2020, heating allowance was not # introduced yet. For this time frame, the respective parameter is # not part of wohngeld_params and heating allowance is set to 0. - # TODO(@MImmesberger): Apply policy_info decorator. + # TODO(@MImmesberger): Apply policy_function decorator. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/711 if "heizkostenentlastung_m" in wohngeld_params: max_def_hh_größe_heating = max( diff --git a/src/_gettsim/vectorization.py b/src/_gettsim/vectorization.py index 213feae2f4..aa118bded5 100644 --- a/src/_gettsim/vectorization.py +++ b/src/_gettsim/vectorization.py @@ -28,11 +28,11 @@ def make_vectorizable(func: callable, backend: str): module = _module_from_backend(backend) tree = _make_vectorizable_ast(func, module=module) - # recreate scope of function, add policy_info decorator and array library + # recreate scope of function, add policy_function decorator and array library scope = func.__globals__ - from _gettsim.shared import policy_info + from _gettsim.functions.policy_function import policy_function - scope["policy_info"] = policy_info + scope["policy_function"] = policy_function scope[module] = import_module(module) # execute new ast diff --git a/src/_gettsim/visualization.py b/src/_gettsim/visualization.py index f45e7db75a..fa2ba23d61 100644 --- a/src/_gettsim/visualization.py +++ b/src/_gettsim/visualization.py @@ -3,6 +3,7 @@ import operator from functools import reduce +import dags import networkx as nx import numpy import pandas as pd @@ -10,16 +11,18 @@ from pygments import highlight, lexers from pygments.formatters import HtmlFormatter -from _gettsim.config import DEFAULT_TARGETS, TYPES_INPUT_VARIABLES -from _gettsim.interface import set_up_dag -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.policy_environment_postprocessor import ( - check_functions_and_differentiate_types, +from _gettsim.combine_functions_in_tree import ( + combine_policy_functions_and_derived_functions, +) +from _gettsim.config import DEFAULT_TARGETS +from _gettsim.interface import ( + _partial_parameters_to_functions, ) +from _gettsim.policy_environment import PolicyEnvironment from _gettsim.shared import ( format_list_linewise, get_names_of_arguments_without_defaults, - parse_to_list_of_strings, + partition_tree_by_reference_tree, ) @@ -27,7 +30,6 @@ def plot_dag( environment: PolicyEnvironment, targets=None, columns_overriding_functions=None, - check_minimal_specification="ignore", selectors=None, orientation="v", show_labels=None, @@ -46,9 +48,6 @@ def plot_dag( columns_overriding_functions : str list of str Names of columns in the data which are preferred over function defined in the tax and transfer system. - check_minimal_specification : {"ignore", "warn", "raise"}, default "ignore" - Indicator for whether checks which ensure the most minimal configuration should - be silenced, emitted as warnings or errors. selectors : str or list of str or dict or list of dict or list of str and dict Selectors allow to you to select and de-select nodes in the graph for visualization. For the full list of options, see the tutorial about @@ -67,41 +66,62 @@ def plot_dag( a hover information. Sometimes, the tooltip is not properly displayed. """ - - targets = DEFAULT_TARGETS if targets is None else targets - targets = parse_to_list_of_strings(targets, "targets") - columns_overriding_functions = parse_to_list_of_strings( - columns_overriding_functions, "columns_overriding_functions" - ) + targets = build_targets_tree(DEFAULT_TARGETS if targets is None else targets) # noqa: F821 + + if isinstance(columns_overriding_functions, dict): + names_of_columns_overriding_functions = tree_to_dict_with_qualified_name( # noqa: F821 + columns_overriding_functions + ).keys() + elif isinstance(columns_overriding_functions, str): + names_of_columns_overriding_functions = [columns_overriding_functions] + elif columns_overriding_functions is None: + names_of_columns_overriding_functions = [] + else: + names_of_columns_overriding_functions = columns_overriding_functions # Load functions. - functions_not_overridden, functions_overridden = ( - check_functions_and_differentiate_types( - environment, - targets=targets, - data_cols=list(TYPES_INPUT_VARIABLES), - ) + all_functions = combine_policy_functions_and_derived_functions( + environment=environment, + targets=targets, + data=names_of_columns_overriding_functions, + ) + functions_not_overridden = partition_tree_by_reference_tree( + tree_to_partition=all_functions, + reference_tree=names_of_columns_overriding_functions, + )[1] + + # Create parameter input structure. + input_structure = dags.dag_tree.create_input_structure_tree( + functions=functions_not_overridden, + targets=None, # None because no functions should be filtered out ) # Select necessary nodes by creating a preliminary DAG. - nodes = set_up_dag( + dag = set_up_dag( # noqa: F821 all_functions=functions_not_overridden, targets=targets, - columns_overriding_functions=columns_overriding_functions, - check_minimal_specification=check_minimal_specification, - ).nodes - necessary_functions = { - f_name: f for f_name, f in functions_not_overridden.items() if (f_name in nodes) - } + names_of_columns_overriding_functions=names_of_columns_overriding_functions, + input_structure=input_structure, + ) - # Params should not show up in DAG. - processed_functions = _mock_parameters_arguments(necessary_functions) + processed_functions = _partial_parameters_to_functions( + functions=partition_tree_by_reference_tree( + tree_to_partition=functions_not_overridden, reference_tree=dag.nodes + )[0], + params=environment.params, + ) - dag = set_up_dag( - processed_functions, - targets, - columns_overriding_functions, - check_minimal_specification, + input_structure = dags.dag_tree.create_input_structure_tree( + functions=processed_functions, + targets=None, + ) + + # Calculate results. + dag = set_up_dag( # noqa: F821 + all_functions=processed_functions, + targets=targets, + names_of_columns_overriding_functions=names_of_columns_overriding_functions, + input_structure=input_structure, ) selectors = [] if selectors is None else _to_list(selectors) diff --git a/src/_gettsim_tests/_helpers.py b/src/_gettsim_tests/_helpers.py index 60c6ed7336..8c2baa6b29 100644 --- a/src/_gettsim_tests/_helpers.py +++ b/src/_gettsim_tests/_helpers.py @@ -3,7 +3,11 @@ from functools import lru_cache from typing import TYPE_CHECKING -from _gettsim.policy_environment import PolicyEnvironment, _parse_date +from _gettsim.policy_environment import ( + PolicyEnvironment, + _parse_date, + set_up_policy_environment, +) if TYPE_CHECKING: import datetime @@ -18,4 +22,4 @@ def cached_set_up_policy_environment( @lru_cache(maxsize=100) def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: - return PolicyEnvironment.for_date(date) + return set_up_policy_environment(date) diff --git a/src/_gettsim_tests/test_aggregate_by_p_id.py b/src/_gettsim_tests/test_aggregate_by_p_id.py index 013ffbbae0..a27f7bac48 100644 --- a/src/_gettsim_tests/test_aggregate_by_p_id.py +++ b/src/_gettsim_tests/test_aggregate_by_p_id.py @@ -10,6 +10,7 @@ data = load_policy_test_data("aggregate_by_p_id") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_arbeitsl_geld.py b/src/_gettsim_tests/test_arbeitsl_geld.py index 73fd41f0f1..810eb3a042 100644 --- a/src/_gettsim_tests/test_arbeitsl_geld.py +++ b/src/_gettsim_tests/test_arbeitsl_geld.py @@ -22,6 +22,7 @@ def prep_parametrize_data(data): return data +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), prep_parametrize_data(data.parametrize_args), diff --git a/src/_gettsim_tests/test_arbeitsl_geld_2.py b/src/_gettsim_tests/test_arbeitsl_geld_2.py index 856f9c1944..b0bd07e23f 100644 --- a/src/_gettsim_tests/test_arbeitsl_geld_2.py +++ b/src/_gettsim_tests/test_arbeitsl_geld_2.py @@ -8,6 +8,7 @@ data = load_policy_test_data("arbeitsl_geld_2") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_benefit_checks.py b/src/_gettsim_tests/test_benefit_checks.py index a5d4df7120..f57160d799 100644 --- a/src/_gettsim_tests/test_benefit_checks.py +++ b/src/_gettsim_tests/test_benefit_checks.py @@ -8,6 +8,7 @@ data = load_policy_test_data("benefit_checks") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_combine_functions_in_tree.py b/src/_gettsim_tests/test_combine_functions_in_tree.py new file mode 100644 index 0000000000..98aecb224a --- /dev/null +++ b/src/_gettsim_tests/test_combine_functions_in_tree.py @@ -0,0 +1,259 @@ +import optree +import pandas as pd +import pytest + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.combine_functions_in_tree import ( + _annotations_for_aggregation, + _create_aggregate_by_group_functions, + _fail_if_targets_not_in_functions_tree, + _get_tree_path_from_source_col_name, +) +from _gettsim.functions.derived_function import DerivedFunction +from _gettsim.functions.policy_function import PolicyFunction, policy_function + + +@pytest.fixture +@policy_function(leaf_name="foo") +def function_with_bool_return(x: bool) -> bool: + return x + + +@pytest.fixture +@policy_function(leaf_name="bar") +def function_with_int_return(x: int) -> int: + return x + + +@pytest.fixture +@policy_function(leaf_name="baz") +def function_with_float_return(x: int) -> float: + return x + + +@pytest.mark.parametrize( + ( + "functions_tree", + "targets_tree", + "data_tree", + "aggregations_specs_from_env", + "expected_tree_structure", + ), + [ + ( + # Aggregations derived from simple function arguments + {"namespace1": {"f": policy_function(leaf_name="f")(lambda x_hh: x_hh)}}, + {"namespace1": {"f": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "groupings": {"hh_id": pd.Series([0, 0, 0])}, + }, + {}, + { + "namespace1": { + "x_hh": None, + }, + }, + ), + ( + # Aggregations derived from namespaced function arguments + { + "namespace1": { + "f": policy_function(leaf_name="f")( + lambda inputs__x_hh: inputs__x_hh + ) + } + }, + {"namespace1": {"f": None}}, + { + "inputs": {"x": pd.Series([1, 1, 1])}, + "groupings": {"hh_id": pd.Series([0, 0, 0])}, + }, + {}, + { + "inputs": { + "x_hh": None, + }, + }, + ), + ( + # Aggregations derived from target + {"namespace1": {"f": policy_function(leaf_name="f")(lambda x: x)}}, + {"namespace1": {"f_hh": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "groupings": {"hh_id": pd.Series([0, 0, 0])}, + }, + {}, + { + "namespace1": { + "f_hh": None, + }, + }, + ), + ( + # Aggregations derived from simple environment specification + {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + {"namespace1": {"f": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "groupings": {"hh_id": pd.Series([0, 0, 0])}, + }, + { + "namespace1": { + "y_hh": AggregateByGroupSpec( + source_col="x", + aggr="sum", + ), + }, + }, + { + "namespace1": { + "y_hh": None, + }, + }, + ), + ( + # Aggregations derived from namespaced environment specification + {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + {"namespace1": {"f": None}}, + { + "inputs": {"x": pd.Series([1, 1, 1])}, + "groupings": {"hh_id": pd.Series([0, 0, 0])}, + }, + { + "namespace1": { + "y_hh": AggregateByGroupSpec( + source_col="inputs__x", + aggr="sum", + ), + }, + }, + { + "namespace1": { + "y_hh": None, + }, + }, + ), + ], +) +def test_create_aggregate_by_group_functions( + functions_tree, + targets_tree, + data_tree, + aggregations_specs_from_env, + expected_tree_structure, +): + derived_functions = _create_aggregate_by_group_functions( + functions_tree=functions_tree, + targets_tree=targets_tree, + data_tree=data_tree, + aggregations_tree_provided_by_env=aggregations_specs_from_env, + ) + + # Verify structure + existing_paths = optree.tree_paths(derived_functions) + expected_paths = optree.tree_paths(expected_tree_structure, none_is_leaf=True) + assert set(existing_paths) == set(expected_paths) + + assert all( + isinstance(func, PolicyFunction | DerivedFunction) + for func in optree.tree_leaves(derived_functions) + ) + + +@pytest.mark.parametrize( + "argument_name, current_namespace, expected", + [ + ("foo", ("dir", "module"), ("dir", "module", "foo")), + ("dir__module__foo", ("dir", "module"), ("dir", "module", "foo")), + ], +) +def test_get_tree_path_from_source_col_name(argument_name, current_namespace, expected): + assert ( + _get_tree_path_from_source_col_name(argument_name, current_namespace) + == expected + ) + + +@pytest.mark.parametrize( + ( + "aggregation_method", + "source_col", + "namespace_of_function_to_derive", + "functions_tree", + "types_input_variables", + "expected_return_type", + ), + [ + ("count", "foo", ("",), {}, {}, int), + ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": float}}, float), + ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": int}}, int), + ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": bool}}, int), + ( + "sum", + "foo", + ("namespace",), + {"namespace": {"foo": function_with_bool_return}}, + {}, + int, + ), + ( + "sum", + "foo", + ("namespace",), + {"namespace": {"foo": function_with_int_return}}, + {}, + int, + ), + ( + "sum", + "foo", + ("namespace",), + {"namespace": {"foo": function_with_float_return}}, + {}, + float, + ), + ( + "sum", + "other_namespace__foo", + ("namespace",), + {"other_namespace": {"foo": function_with_bool_return}}, + {}, + int, + ), + ], +) +def test_annotations_for_aggregation( # noqa: PLR0913 + aggregation_method, + source_col, + namespace_of_function_to_derive, + functions_tree, + types_input_variables, + expected_return_type, +): + assert ( + _annotations_for_aggregation( + aggregation_method=aggregation_method, + source_col=source_col, + namespace=namespace_of_function_to_derive, + functions_tree=functions_tree, + types_input_variables=types_input_variables, + )["return"] + == expected_return_type + ) + + +@pytest.mark.parametrize( + "functions, targets, expected_error_match", + [ + ({"foo": lambda x: x}, {"bar": None}, "bar"), + ({"foo": {"baz": lambda x: x}}, {"foo": {"bar": None}}, "foo.bar"), + ], +) +def test_fail_if_targets_are_not_among_functions( + functions, targets, expected_error_match +): + with pytest.raises(ValueError) as e: + _fail_if_targets_not_in_functions_tree(functions, targets) + assert expected_error_match in str(e.value) diff --git a/src/_gettsim_tests/test_data/namespaces/module1.py b/src/_gettsim_tests/test_data/namespaces/module1.py new file mode 100644 index 0000000000..f35d3334b9 --- /dev/null +++ b/src/_gettsim_tests/test_data/namespaces/module1.py @@ -0,0 +1,33 @@ +"""Test namespace.""" + +from _gettsim.functions.policy_function import policy_function + + +@policy_function() +def f(h: int, module1_params: dict[str, int]) -> int: # noqa: ARG001 + return module1_params["a"] + module1_params["b"] + + +@policy_function() +def g(f: int, module1_params: dict[str, int]) -> int: + return f + module1_params["c"] + + +@policy_function() +def h() -> int: + return 1 + + +@policy_function() +def some_unused_function(some_unused_param: int) -> int: + return some_unused_param + + +FUNCTIONS_MODULE1 = { + "module1": { + "f": f, + "g": g, + "h": h, + "some_unused_function": some_unused_function, + } +} diff --git a/src/_gettsim_tests/test_data/namespaces/module2.py b/src/_gettsim_tests/test_data/namespaces/module2.py new file mode 100644 index 0000000000..d624865905 --- /dev/null +++ b/src/_gettsim_tests/test_data/namespaces/module2.py @@ -0,0 +1,21 @@ +"""Test namespace.""" + +from _gettsim.functions.policy_function import policy_function + + +@policy_function() +def f(g: int, module2_params: dict[str, int]) -> int: # noqa: ARG001 + return module2_params["a"] + module2_params["b"] + + +@policy_function() +def g(module1__f: int, module2_params: dict[str, int]) -> int: + return module1__f + module2_params["c"] + + +FUNCTIONS_MODULE2 = { + "module2": { + "f": f, + "g": g, + } +} diff --git a/src/_gettsim_tests/test_dates_active.py b/src/_gettsim_tests/test_dates_active.py index 3d19a311a4..255910e328 100644 --- a/src/_gettsim_tests/test_dates_active.py +++ b/src/_gettsim_tests/test_dates_active.py @@ -2,21 +2,11 @@ import pytest -from _gettsim.shared import ( - TIME_DEPENDENT_FUNCTIONS, +from _gettsim.functions.loader import ( ConflictingTimeDependentFunctionsError, - policy_info, + _fail_if_multiple_policy_functions_are_active_at_the_same_time, ) - - -@pytest.fixture(autouse=True) -def _setup_and_teardown(): - # Invoke test - yield - - # Tear down - TIME_DEPENDENT_FUNCTIONS.clear() - +from _gettsim.functions.policy_function import policy_function # Start date ----------------------------------------------- @@ -28,11 +18,11 @@ def _setup_and_teardown(): ], ) def test_start_date_valid(date_string: str, expected: datetime.date): - @policy_info(start_date=date_string) + @policy_function(start_date=date_string) def test_func(): pass - assert test_func.__info__["start_date"] == expected + assert test_func.start_date == expected @pytest.mark.parametrize( @@ -46,17 +36,17 @@ def test_func(): def test_start_date_invalid(date_string: str): with pytest.raises(ValueError): - @policy_info(start_date=date_string) + @policy_function(start_date=date_string) def test_func(): pass def test_start_date_missing(): - @policy_info() + @policy_function() def test_func(): pass - assert test_func.__info__["start_date"] == datetime.date(1, 1, 1) + assert test_func.start_date == datetime.date(1900, 1, 1) # End date ------------------------------------------------- @@ -69,11 +59,11 @@ def test_func(): ], ) def test_end_date_valid(date_string: str, expected: datetime.date): - @policy_info(end_date=date_string) + @policy_function(end_date=date_string) def test_func(): pass - assert test_func.__info__["end_date"] == expected + assert test_func.end_date == expected @pytest.mark.parametrize( @@ -87,36 +77,36 @@ def test_func(): def test_end_date_invalid(date_string: str): with pytest.raises(ValueError): - @policy_info(end_date=date_string) + @policy_function(end_date=date_string) def test_func(): pass def test_end_date_missing(): - @policy_info() + @policy_function() def test_func(): pass - assert test_func.__info__["end_date"] == datetime.date(9999, 12, 31) + assert test_func.end_date == datetime.date(2100, 12, 31) # Change name ---------------------------------------------- def test_dates_active_change_name_given(): - @policy_info(name_in_dag="renamed_func") + @policy_function(leaf_name="renamed_func") def test_func(): pass - assert test_func.__info__["name_in_dag"] == "renamed_func" + assert test_func.leaf_name == "renamed_func" def test_dates_active_change_name_missing(): - @policy_info() + @policy_function() def test_func(): pass - assert test_func.__info__["name_in_dag"] == "test_func" + assert test_func.leaf_name == "test_func" # Empty interval ------------------------------------------- @@ -125,7 +115,7 @@ def test_func(): def test_dates_active_empty_interval(): with pytest.raises(ValueError): - @policy_info(start_date="2023-01-20", end_date="2023-01-19") + @policy_function(start_date="2023-01-20", end_date="2023-01-19") def test_func(): pass @@ -134,54 +124,83 @@ def test_func(): @pytest.mark.parametrize( - "dag_key_1, start_1, end_1, dag_key_2, start_2, end_2", + "functions", [ - ("func_1", "2023-01-01", "2023-01-31", "func_2", "2023-01-01", "2023-01-31"), - ("func_1", "2023-01-01", "2023-01-31", "func_1", "2023-02-01", "2023-02-28"), - ("func_1", "2023-02-01", "2023-02-28", "func_1", "2023-01-01", "2023-01-31"), + [ + policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(lambda x: x), + ], + [ + policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="g", + )(lambda x: x), + ], ], ) -def test_dates_active_no_conflict( # noqa: PLR0913 - dag_key_1: str, - start_1: str, - end_1: str, - dag_key_2: str, - start_2: str, - end_2: str, -): - @policy_info(name_in_dag=dag_key_1, start_date=start_1, end_date=end_1) - def func_1(): - pass - - # Using the decorator again should not raise an error - @policy_info(name_in_dag=dag_key_2, start_date=start_2, end_date=end_2) - def func_2(): - pass +def test_dates_active_no_conflicts(functions): + _fail_if_multiple_policy_functions_are_active_at_the_same_time( + policy_functions=functions, module_name="" + ) @pytest.mark.parametrize( - "start_1, end_1, start_2, end_2", + "functions", [ - ("2023-01-01", "2023-01-31", "2023-01-01", "2023-01-31"), - ("2023-01-01", "2023-01-31", "2022-01-02", "2023-01-30"), - ("2023-01-02", "2023-01-30", "2022-01-01", "2023-01-31"), - ("2023-01-01", "2023-01-31", "2022-01-02", "2023-02-01"), - ("2023-01-02", "2023-02-01", "2022-01-01", "2023-01-31"), + [ + policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + ], + [ + policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + policy_function( + start_date="2021-01-02", + end_date="2023-02-01", + leaf_name="f", + )(lambda x: x), + ], + [ + policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(lambda x: x), + policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(lambda x: x), + ], ], ) -def test_dates_active_conflict( - start_1: str, - end_1: str, - start_2: str, - end_2: str, -): - @policy_info(name_in_dag="func_1", start_date=start_1, end_date=end_1) - def func_1(): - pass - - # Using the decorator again should raise an error +def test_dates_active_with_conflicts(functions): with pytest.raises(ConflictingTimeDependentFunctionsError): - - @policy_info(name_in_dag="func_1", start_date=start_2, end_date=end_2) - def func_2(): - pass + _fail_if_multiple_policy_functions_are_active_at_the_same_time( + policy_functions=functions, module_name="" + ) diff --git a/src/_gettsim_tests/test_demographic_vars.py b/src/_gettsim_tests/test_demographic_vars.py index 68dd44e299..a19ecdf15d 100644 --- a/src/_gettsim_tests/test_demographic_vars.py +++ b/src/_gettsim_tests/test_demographic_vars.py @@ -8,6 +8,7 @@ data = load_policy_test_data("demographic_vars") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_docs.py b/src/_gettsim_tests/test_docs.py index 66864b3b98..871ce3a30e 100644 --- a/src/_gettsim_tests/test_docs.py +++ b/src/_gettsim_tests/test_docs.py @@ -11,11 +11,9 @@ TYPES_INPUT_VARIABLES, ) from _gettsim.functions.loader import ( - _load_functions, - _load_internal_functions, - load_internal_aggregation_dict, + load_aggregation_specs_tree, + load_functions_tree_for_date, ) -from _gettsim.policy_environment import load_functions_for_date from _gettsim.shared import remove_group_suffix @@ -31,23 +29,23 @@ def default_input_variables(): @pytest.fixture(scope="module") def all_function_names(): - functions = _load_internal_functions() - return sorted([func.name_in_dag for func in functions]) + functions = _load_internal_functions() # noqa: F821 + return sorted([func.leaf_name for func in functions]) @pytest.fixture(scope="module") def aggregation_dict(): - return load_internal_aggregation_dict() + return load_aggregation_specs_tree() @pytest.fixture(scope="module") def time_indep_function_names(all_function_names): time_dependent_functions = {} for year in range(1990, 2023): - year_functions = load_functions_for_date( + year_functions = load_functions_tree_for_date( datetime.date(year=year, month=1, day=1) ) - new_dict = {func.function.__name__: func.name_in_dag for func in year_functions} + new_dict = {func.function.__name__: func.leaf_name for func in year_functions} time_dependent_functions = {**time_dependent_functions, **new_dict} # Only use time dependent function names @@ -72,14 +70,14 @@ def test_all_input_vars_documented( ): """Test if arguments of all non-internal functions are either the name of another function, a documented input variable, or a parameter dictionary.""" - functions = _load_internal_functions() + functions = _load_internal_functions() # noqa: F821 # Collect arguments of all non-internal functions (do not start with underscore) arguments = [ i for f in functions for i in list(inspect.signature(f).parameters) - if not f.name_in_dag.startswith("_") + if not f.leaf_name.startswith("_") ] # Remove duplicates @@ -101,10 +99,11 @@ def test_all_input_vars_documented( assert not check, _nice_output_list_of_strings(check) +@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): documented_functions = { - f.name_in_dag - for f in _load_functions( + f.leaf_name + for f in _load_functions( # noqa: F821 RESOURCE_DIR / "functions" / "all_functions_for_docs.py", package_root=RESOURCE_DIR, include_imported_functions=True, @@ -116,8 +115,8 @@ def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): ] internal_functions = { - f.name_in_dag - for f in _load_functions( + f.leaf_name + for f in _load_functions( # noqa: F821 internal_function_files, package_root=RESOURCE_DIR, include_imported_functions=True, @@ -128,15 +127,16 @@ def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): assert documented_functions == internal_functions +@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") def test_type_hints(): # noqa: PLR0912 """Check if output and input types of all functions coincide.""" types = {} - for func in _load_internal_functions(): + for func in _load_internal_functions(): # noqa: F821 if func.skip_vectorization: continue - name = func.name_in_dag + name = func.leaf_name for var, internal_type in func.__annotations__.items(): if var == "return": diff --git a/src/_gettsim_tests/test_eink_st.py b/src/_gettsim_tests/test_eink_st.py index cdfe166f1c..e020519d1c 100644 --- a/src/_gettsim_tests/test_eink_st.py +++ b/src/_gettsim_tests/test_eink_st.py @@ -8,6 +8,7 @@ data = load_policy_test_data("eink_st") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_elterngeld.py b/src/_gettsim_tests/test_elterngeld.py index c889e1f168..a97448d0f2 100644 --- a/src/_gettsim_tests/test_elterngeld.py +++ b/src/_gettsim_tests/test_elterngeld.py @@ -8,6 +8,7 @@ data = load_policy_test_data("elterngeld") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_erwerbsm_rente.py b/src/_gettsim_tests/test_erwerbsm_rente.py index 85aaa51ad2..d67ec1056b 100644 --- a/src/_gettsim_tests/test_erwerbsm_rente.py +++ b/src/_gettsim_tests/test_erwerbsm_rente.py @@ -8,6 +8,7 @@ data = load_policy_test_data("erwerbsm_rente") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_erziehungsgeld.py b/src/_gettsim_tests/test_erziehungsgeld.py index c2d38fcc6e..109fa5f366 100644 --- a/src/_gettsim_tests/test_erziehungsgeld.py +++ b/src/_gettsim_tests/test_erziehungsgeld.py @@ -13,6 +13,7 @@ data = load_policy_test_data("erziehungsgeld") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_favorability_check.py b/src/_gettsim_tests/test_favorability_check.py index 0b051643ca..7879488106 100644 --- a/src/_gettsim_tests/test_favorability_check.py +++ b/src/_gettsim_tests/test_favorability_check.py @@ -8,6 +8,7 @@ data = load_policy_test_data("favorability_check") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index d99b46eeaa..146db2a893 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,7 +1,7 @@ import pytest from _gettsim.config import TYPES_INPUT_VARIABLES -from _gettsim.functions.loader import _load_internal_functions +from _gettsim.functions.loader import load_functions_tree_for_date from _gettsim.gettsim_typing import check_series_has_expected_type from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment @@ -26,6 +26,7 @@ data = load_policy_test_data("full_taxes_and_transfers") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( "test_data", data.test_data, @@ -48,6 +49,7 @@ def test_full_taxes_and_transfers( ) +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( "test_data", data.test_data, @@ -56,7 +58,9 @@ def test_full_taxes_and_transfers( def test_data_types( test_data: PolicyTestData, ): - functions = {f.name_in_dag: f.function for f in _load_internal_functions()} + functions = { + f.leaf_name: f.function for f in load_functions_tree_for_date(test_data.date) + } out = OUT_COLS.copy() if test_data.date.year <= 2008: diff --git a/src/_gettsim_tests/test_functions_loader.py b/src/_gettsim_tests/test_functions_loader.py deleted file mode 100644 index 3eb68ad4c8..0000000000 --- a/src/_gettsim_tests/test_functions_loader.py +++ /dev/null @@ -1,123 +0,0 @@ -from __future__ import annotations - -import textwrap -from typing import TYPE_CHECKING - -import numpy -import pytest - -from _gettsim.config import RESOURCE_DIR -from _gettsim.functions.loader import ( - _load_functions, -) -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.policy_environment_postprocessor import ( - _create_derived_functions, - _vectorize_func, -) -from _gettsim.shared import policy_info - -if TYPE_CHECKING: - from collections.abc import Callable - - -def test_load_path(): - assert _load_functions( - RESOURCE_DIR / "social_insurance_contributions" / "ges_krankenv.py", - RESOURCE_DIR, - ) - - -def test_load_paths(): - assert _load_functions( - [RESOURCE_DIR / "social_insurance_contributions" / "ges_krankenv.py"], - RESOURCE_DIR, - ) - - -def test_special_attribute_module_is_set(tmp_path): - py_file = """ - def func(): - pass - """ - - file_path = tmp_path.joinpath("functions.py") - file_path.write_text(textwrap.dedent(py_file)) - - out = _load_functions(file_path, file_path) - assert len(out) == 1 - assert out[0].__name__ == "func" - assert out[0].__module__ == "functions" - - -def test_special_attribute_module_is_set_for_internal_functions(): - a_few_functions = _load_functions( - RESOURCE_DIR / "social_insurance_contributions" / "eink_grenzen.py", - RESOURCE_DIR, - ) - function = next(iter(a_few_functions)) - assert function.__module__ == "_gettsim.social_insurance_contributions.eink_grenzen" - - -@pytest.mark.parametrize( - ("functions", "targets"), - [ - ({"foo_y": lambda: 1}, ["foo_d_hh"]), - ({"foo_y": lambda: 1}, ["foo_d", "foo_d_hh"]), - ], -) -def test_create_derived_functions( - functions: dict[str, Callable], targets: list[str] -) -> None: - environment = PolicyEnvironment( - [ - PolicyFunction( - function_name=name, - function=func, - ) - for name, func in functions.items() - ] - ) - - ( - time_conversion_functions, - aggregate_by_group_functions, - aggregate_by_p_id_functions, - ) = _create_derived_functions(environment, targets, []) - - derived_functions = { - **time_conversion_functions, - **aggregate_by_group_functions, - **aggregate_by_p_id_functions, - } - - for name in targets: - assert name in derived_functions - - -# vectorize_func -------------------------------------------------------------- - - -def scalar_func(x: int) -> int: - return x * 2 - - -@policy_info(skip_vectorization=True) -def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: - return numpy.asarray([xi * 2 for xi in x]) - - -@pytest.mark.parametrize( - "function", - [ - scalar_func, - already_vectorized_func, - ], -) -def test_vectorize_func(function: Callable) -> None: - vectorized_func = _vectorize_func(function) - - assert numpy.array_equal( - vectorized_func(numpy.array([1, 2, 3])), numpy.array([2, 4, 6]) - ) diff --git a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py index 379a3c99b3..7432aa7566 100644 --- a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py +++ b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py @@ -8,6 +8,7 @@ data = load_policy_test_data("ges_rente_hinzuverdienst") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_ges_rentenalter.py b/src/_gettsim_tests/test_ges_rentenalter.py index ef7bc71fd6..0bc9bd7adc 100644 --- a/src/_gettsim_tests/test_ges_rentenalter.py +++ b/src/_gettsim_tests/test_ges_rentenalter.py @@ -8,6 +8,7 @@ data = load_policy_test_data("ges_rentenalter") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index 41e853beda..845dbe7a29 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -11,6 +11,7 @@ data = load_policy_test_data("groupings") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, @@ -38,6 +39,7 @@ def test_groupings( ) +@pytest.mark.xfail(reason="Needs renamings PR.") def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): data = pd.DataFrame( { diff --git a/src/_gettsim_tests/test_grundrente.py b/src/_gettsim_tests/test_grundrente.py index 2880ed2ea2..4710a2c73b 100644 --- a/src/_gettsim_tests/test_grundrente.py +++ b/src/_gettsim_tests/test_grundrente.py @@ -18,6 +18,7 @@ data = load_policy_test_data("grundrente") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, @@ -79,6 +80,7 @@ def test_grundrente( data_proxy = load_policy_test_data("grundrente_proxy_rente") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data_proxy.parametrize_args, @@ -104,6 +106,7 @@ def test_proxy_rente_vorj( ) +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( "test_data", data_proxy.test_data, diff --git a/src/_gettsim_tests/test_grunds_im_alter.py b/src/_gettsim_tests/test_grunds_im_alter.py index b6f29c3893..fd13c52c72 100644 --- a/src/_gettsim_tests/test_grunds_im_alter.py +++ b/src/_gettsim_tests/test_grunds_im_alter.py @@ -8,6 +8,7 @@ data = load_policy_test_data("grunds_im_alter") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_interface.py b/src/_gettsim_tests/test_interface.py index e25362152c..94dcfb665a 100644 --- a/src/_gettsim_tests/test_interface.py +++ b/src/_gettsim_tests/test_interface.py @@ -1,11 +1,15 @@ +import copy +import re import warnings import numpy import pandas as pd import pytest +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec from _gettsim.config import FOREIGN_KEYS -from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.config import numpy_or_jax as np +from _gettsim.functions.policy_function import policy_function from _gettsim.gettsim_typing import convert_series_to_internal_type from _gettsim.groupings import bg_id_numpy, wthh_id_numpy from _gettsim.interface import ( @@ -13,96 +17,126 @@ _fail_if_foreign_keys_are_invalid, _fail_if_group_variables_not_constant_within_groups, _fail_if_pid_is_non_unique, - _round_and_partial_parameters_to_functions, + _partial_parameters_to_functions, compute_taxes_and_transfers, ) from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.shared import policy_info +from _gettsim.shared import assert_valid_gettsim_pytree from gettsim import FunctionsAndColumnsOverlapWarning @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 - out = pd.DataFrame( - { - "p_id": numpy.arange(n_individuals), - "hh_id": numpy.arange(n_individuals), - }, - index=numpy.arange(n_individuals), - ) + out = { + "groupings": { + "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), + "hh_id": pd.Series(numpy.arange(n_individuals), name="hh_id"), + } + } return out -@pytest.fixture -def input_data_aggregate_by_p_id(): - return pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], +@pytest.fixture(scope="module") +def minimal_input_data_shared_hh(): + n_individuals = 3 + out = { + "groupings": { + "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), + "hh_id": pd.Series([0, 0, 1], name="hh_id"), } - ) + } + return out -# Create a partial function which is used by some tests below +# Create a function which is used by some tests below +@policy_function() def func_before_partial(arg_1, arbeitsl_geld_2_params): return arg_1 + arbeitsl_geld_2_params["test_param_1"] -func_after_partial = _round_and_partial_parameters_to_functions( +func_after_partial = _partial_parameters_to_functions( {"test_func": func_before_partial}, {"arbeitsl_geld_2": {"test_param_1": 1}}, - rounding=False, )["test_func"] +def test_output_as_tree(minimal_input_data): + environment = PolicyEnvironment( + { + "module": { + "test_func": policy_function(leaf_name="test_func")( + lambda groupings__p_id: groupings__p_id + ) + } + } + ) + + out = compute_taxes_and_transfers( + data_tree=minimal_input_data, + environment=environment, + targets_tree={"module": {"test_func": None}}, + ) + + assert isinstance(out, dict) + assert "test_func" in out["module"] + assert isinstance(out["module"]["test_func"], np.ndarray) + + +@pytest.mark.xfail(reason="Needs renamings PR.") def test_warn_if_functions_and_columns_overlap(): - environment = PolicyEnvironment([PolicyFunction(lambda x: x, function_name="dupl")]) + environment = PolicyEnvironment( + {"dupl": policy_function(leaf_name="dupl")(lambda x: x)} + ) with pytest.warns(FunctionsAndColumnsOverlapWarning): compute_taxes_and_transfers( - data=pd.DataFrame({"p_id": [0], "dupl": [1]}), + data_tree={"groupings": {"p_id": pd.Series([0])}, "dupl": pd.Series([1])}, environment=environment, - targets=[], + targets_tree={}, ) +@pytest.mark.xfail(reason="Needs renamings PR.") def test_dont_warn_if_functions_and_columns_dont_overlap(): environment = PolicyEnvironment( - [PolicyFunction(lambda x: x, function_name="some_func")] + {"some_func": policy_function(leaf_name="some_func")(lambda x: x)} ) with warnings.catch_warnings(): warnings.filterwarnings("error", category=FunctionsAndColumnsOverlapWarning) compute_taxes_and_transfers( - data=pd.DataFrame({"p_id": [0]}), + data_tree={"groupings": {"p_id": pd.Series([0])}}, environment=environment, - targets=[], + targets_tree={}, ) +@pytest.mark.xfail(reason="Needs renamings PR.") def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): - environment = PolicyEnvironment([PolicyFunction(lambda x: x, function_name="dupl")]) + environment = PolicyEnvironment( + {"dupl": policy_function(leaf_name="dupl")(lambda x: x)} + ) with warnings.catch_warnings( category=FunctionsAndColumnsOverlapWarning, record=True ) as warning_list: warnings.filterwarnings("ignore", category=FunctionsAndColumnsOverlapWarning) compute_taxes_and_transfers( - data=pd.DataFrame({"p_id": [0], "dupl": [1]}), + data_tree={"groupings": {"p_id": pd.Series([0]), "dupl": pd.Series([1])}}, environment=environment, - targets=[], + targets_tree={}, ) assert len(warning_list) == 0 def test_fail_if_pid_does_not_exist(): - data = pd.Series(data=numpy.arange(8), name="hh_id").to_frame() + data = {"groupings__hh_id": pd.Series(data=numpy.arange(8), name="hh_id")} with pytest.raises(ValueError): _fail_if_pid_is_non_unique(data) def test_fail_if_pid_is_non_unique(): - data = pd.Series(data=numpy.arange(4).repeat(2), name="p_id").to_frame() + data = {"groupings__p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} with pytest.raises(ValueError): _fail_if_pid_is_non_unique(data) @@ -110,51 +144,63 @@ def test_fail_if_pid_is_non_unique(): @pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) def test_fail_if_foreign_key_points_to_non_existing_pid(foreign_key): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - foreign_key: [0, 1, 4], - } - ) + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + foreign_key: pd.Series([0, 1, 4], name=foreign_key), + }, + } with pytest.raises(ValueError, match="not a valid p_id"): - _fail_if_foreign_keys_are_invalid(data) + _fail_if_foreign_keys_are_invalid( + data_tree=data, + p_ids=data["groupings"]["p_id"], + ) @pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) def test_allow_minus_one_as_foreign_key(foreign_key): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - foreign_key: [-1, 1, 2], - } - ) + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + foreign_key: pd.Series([-1, 1, 2], name=foreign_key), + }, + } - _fail_if_foreign_keys_are_invalid(data) + _fail_if_foreign_keys_are_invalid( + data_tree=data, + p_ids=data["groupings"]["p_id"], + ) @pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) def test_fail_if_foreign_key_points_to_pid_of_same_row(foreign_key): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - foreign_key: [1, 3, 3], - } - ) + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + foreign_key: pd.Series([1, 3, 3], name=foreign_key), + }, + } - with pytest.raises(ValueError, match="are equal to the p_id in the same row"): - _fail_if_foreign_keys_are_invalid(data) + with pytest.raises(ValueError, match="are equal to the p_id in the same"): + _fail_if_foreign_keys_are_invalid( + data_tree=data, + p_ids=data["groupings"]["p_id"], + ) -def test_fail_if_group_variables_not_constant_within_groups(): - data = pd.DataFrame( +@pytest.mark.parametrize( + "data", + [ { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "arbeitsl_geld_2_m_hh": [100, 200, 300], - } - ) - + "foo_hh": pd.Series([1, 2, 2], name="foo_hh"), + "groupings": { + "hh_id": pd.Series([1, 1, 2], name="hh_id"), + }, + }, + ], +) +def test_fail_if_group_variables_not_constant_within_groups(data): with pytest.raises(ValueError): _fail_if_group_variables_not_constant_within_groups(data) @@ -166,203 +212,69 @@ def b(a): def c(b): return b - environment = PolicyEnvironment([PolicyFunction(b), PolicyFunction(c)]) - - with pytest.raises( - ValueError, - match="The following data columns are missing", - ): - compute_taxes_and_transfers(minimal_input_data, environment, targets="c") - - -def test_data_as_series(): - def c(p_id): - return p_id - - data = pd.Series([1, 2, 3]) - data.name = "p_id" - - environment = PolicyEnvironment([c]) - compute_taxes_and_transfers(data, environment, targets="c") - - -def test_data_as_dict(): - def c(b): - return b - - data = { - "p_id": pd.Series([1, 2, 3]), - "hh_id": pd.Series([1, 1, 2]), - "b": pd.Series([100, 200, 300]), - } - - environment = PolicyEnvironment([c]) - compute_taxes_and_transfers(data, environment, targets="c") - - -def test_wrong_data_type(): - def c(b): - return b - - data = "not_a_data_object" - with pytest.raises( - NotImplementedError, - match=( - "'data' is not a pd.DataFrame or a " - "pd.Series or a dictionary of pd.Series." - ), - ): - compute_taxes_and_transfers(data, PolicyEnvironment([]), ["c"]) - - -def test_check_minimal_spec_data(): - def c(b): - return b - - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "a": [100, 200, 300], - "b": [1, 2, 3], - } - ) - environment = PolicyEnvironment([c]) - with pytest.raises( - ValueError, - match="The following columns in 'data' are unused", - ): - compute_taxes_and_transfers( - data, environment, targets="c", check_minimal_specification="raise" - ) - - -def test_check_minimal_spec_data_warn(): - def c(b): - return b - - data = pd.DataFrame( + environment = PolicyEnvironment( { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "a": [100, 200, 300], - "b": [1, 2, 3], + "b": policy_function(leaf_name="b")(b), + "c": policy_function(leaf_name="c")(c), } ) - environment = PolicyEnvironment([c]) - with pytest.warns( - UserWarning, - match="The following columns in 'data' are unused", - ): - compute_taxes_and_transfers( - data, environment, targets="c", check_minimal_specification="warn" - ) - -def test_check_minimal_spec_columns_overriding(): - def b(a): - return a - - def c(a): - return a - - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "a": [100, 200, 300], - "b": [1, 2, 3], - } - ) - environment = PolicyEnvironment([b, c]) with pytest.raises( ValueError, - match="The following 'columns_overriding_functions' are unused", - ): - compute_taxes_and_transfers( - data, environment, targets="c", check_minimal_specification="raise" - ) - - -def test_check_minimal_spec_columns_overriding_warn(): - def b(a): - return a - - def c(a): - return a - - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "a": [100, 200, 300], - "b": [1, 2, 3], - } - ) - environment = PolicyEnvironment([b, c]) - with pytest.warns( - UserWarning, - match="The following 'columns_overriding_functions' are unused", + match="The following data columns are missing", ): compute_taxes_and_transfers( - data, environment, targets="c", check_minimal_specification="warn" + minimal_input_data, environment, targets_tree={"c": None} ) def test_function_without_data_dependency_is_not_mistaken_for_data(minimal_input_data): + @policy_function(leaf_name="a") def a(): - return pd.Series(range(minimal_input_data.shape[0])) + return pd.Series(range(minimal_input_data["groupings"]["p_id"].size)) + @policy_function(leaf_name="b") def b(a): return a - environment = PolicyEnvironment([a, b]) - compute_taxes_and_transfers(minimal_input_data, environment, targets="b") + environment = PolicyEnvironment({"a": a, "b": b}) + compute_taxes_and_transfers( + minimal_input_data, environment, targets_tree={"b": None} + ) def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions( minimal_input_data, ): - environment = PolicyEnvironment([]) + environment = PolicyEnvironment({}) with pytest.raises( ValueError, match="The following targets have no corresponding function", ): compute_taxes_and_transfers( - minimal_input_data, environment, targets="unknown_target" + minimal_input_data, environment, targets_tree={"unknown_target": None} ) -def test_fail_if_missing_pid(minimal_input_data): - data = minimal_input_data.drop("p_id", axis=1).copy() +def test_fail_if_missing_pid(): + data = {"groupings": {"hh_id": pd.Series([1, 2, 3], name="hh_id")}} with pytest.raises( ValueError, - match="The input data must contain the column p_id", + match="The input data must contain the p_id", ): - compute_taxes_and_transfers(data, PolicyEnvironment([]), targets=[]) + compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) def test_fail_if_non_unique_pid(minimal_input_data): - data = minimal_input_data.copy() - data["p_id"] = 1 + data = copy.deepcopy(minimal_input_data) + data["groupings"]["p_id"][:] = 1 with pytest.raises( ValueError, match="The following p_ids are non-unique", ): - compute_taxes_and_transfers(data, PolicyEnvironment([]), targets=[]) - - -def test_fail_if_non_unique_cols(minimal_input_data): - data = minimal_input_data.copy() - data["temp"] = data["hh_id"] - data = data.rename(columns={"temp": "hh_id"}) - with pytest.raises( - ValueError, - match="The following columns are non-unique", - ): - compute_taxes_and_transfers(data, PolicyEnvironment([]), targets=[]) + compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) def test_consecutive_internal_test_runs(): @@ -391,95 +303,113 @@ def test_partial_parameters_to_functions_removes_argument(): func_before_partial(2, {"test_param_1": 1}) -def test_partial_parameters_to_functions_keep_decorator(): - """Make sure that rounding decorator is kept for partial function.""" - - @policy_info(params_key_for_rounding="params_key_test") - def test_func(arg_1, arbeitsl_geld_2_params): - return arg_1 + arbeitsl_geld_2_params["test_param_1"] - - partial_func = _round_and_partial_parameters_to_functions( - {"test_func": test_func}, - {"arbeitsl_geld_2": {"test_param_1": 1}}, - rounding=False, - )["test_func"] - - assert partial_func.__info__["params_key_for_rounding"] == "params_key_test" - - def test_user_provided_aggregate_by_group_specs(): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "arbeitsl_geld_2_m": [100, 100, 100], - } - ) - aggregate_by_group_specs = { - "arbeitsl_geld_2_m_hh": { - "source_col": "arbeitsl_geld_2_m", - "aggr": "sum", + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), + }, + "module_name": { + "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), + }, + } + + aggregation_specs_tree = { + "module_name": { + "betrag_m_hh": AggregateByGroupSpec( + source_col="betrag_m", + aggr="sum", + ) } } expected_res = pd.Series([200, 200, 100]) out = compute_taxes_and_transfers( data, - PolicyEnvironment([], aggregate_by_group_specs=aggregate_by_group_specs), - targets="arbeitsl_geld_2_m_hh", + PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), + targets_tree={"module_name": {"betrag_m_hh": None}}, ) - numpy.testing.assert_array_almost_equal(out["arbeitsl_geld_2_m_hh"], expected_res) + numpy.testing.assert_array_almost_equal( + out["module_name"]["betrag_m_hh"], expected_res + ) -def test_user_provided_aggregate_by_group_specs_function(): - data = pd.DataFrame( +@pytest.mark.parametrize( + "aggregation_specs_tree", + [ { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "arbeitsl_geld_2_m": [200, 100, 100], - } - ) - aggregate_by_group_specs = { - "arbeitsl_geld_2_double_m_hh": { - "source_col": "arbeitsl_geld_2_m_double", - "aggr": "max", - } + "module_name": { + "betrag_double_m_hh": AggregateByGroupSpec( + source_col="betrag_m_double", + aggr="max", + ), + }, + }, + { + "module_name": { + "betrag_double_m_hh": AggregateByGroupSpec( + source_col="module_name__betrag_m_double", + aggr="max", + ), + }, + }, + ], +) +def test_user_provided_aggregate_by_group_specs_function(aggregation_specs_tree): + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), + }, + "module_name": { + "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), + }, } expected_res = pd.Series([400, 400, 200]) - def arbeitsl_geld_2_m_double(arbeitsl_geld_2_m): - return 2 * arbeitsl_geld_2_m + def betrag_m_double(betrag_m): + return 2 * betrag_m environment = PolicyEnvironment( - [arbeitsl_geld_2_m_double], - aggregate_by_group_specs=aggregate_by_group_specs, + { + "module_name": { + "betrag_m_double": policy_function(leaf_name="betrag_m_double")( + betrag_m_double + ) + }, + }, + aggregation_specs_tree=aggregation_specs_tree, ) out = compute_taxes_and_transfers( data, environment, - targets="arbeitsl_geld_2_double_m_hh", + targets_tree={"module_name": {"betrag_double_m_hh": None}}, ) numpy.testing.assert_array_almost_equal( - out["arbeitsl_geld_2_double_m_hh"], expected_res + out["module_name"]["betrag_double_m_hh"], expected_res ) def test_aggregate_by_group_specs_missing_group_sufix(): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "arbeitsl_geld_2_m": [100, 100, 100], - } - ) - aggregate_by_group_specs = { - "arbeitsl_geld_2_agg_m": { - "source_col": "arbeitsl_geld_2_m", - "aggr": "sum", - } + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), + }, + "module_name": { + "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), + }, + } + aggregation_specs_tree = { + "module_name": { + "betrag_agg_m": AggregateByGroupSpec( + source_col="betrag_m", + aggr="sum", + ) + }, } with pytest.raises( ValueError, @@ -487,111 +417,113 @@ def test_aggregate_by_group_specs_missing_group_sufix(): ): compute_taxes_and_transfers( data, - PolicyEnvironment([], aggregate_by_group_specs=aggregate_by_group_specs), - targets="arbeitsl_geld_2_agg_m", + PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), + targets_tree={"module_name": {"betrag_agg_m": None}}, ) def test_aggregate_by_group_specs_agg_not_impl(): - data = pd.DataFrame( - { - "p_id": [1, 2, 3], - "hh_id": [1, 1, 2], - "arbeitsl_geld_2_m": [100, 100, 100], - } - ) - aggregate_by_group_specs = { - "arbeitsl_geld_2_m_hh": { - "source_col": "arbeitsl_geld_2_m", - "aggr": "aggr_not_implemented", - } + data = { + "groupings": { + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), + }, + "module_name": { + "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), + }, + } + aggregation_specs_tree = { + "module_name": { + "betrag_m_hh": AggregateByGroupSpec( + source_col="betrag_m", + aggr="aggr_not_implemented", + ) + }, } with pytest.raises( ValueError, - match="Aggr aggr_not_implemented is not implemented.", + match="Aggregation method aggr_not_implemented is not implemented.", ): compute_taxes_and_transfers( data, - PolicyEnvironment([], aggregate_by_group_specs=aggregate_by_group_specs), - targets="arbeitsl_geld_2_m_hh", + PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), + targets_tree={"module_name": {"betrag_m_hh": None}}, ) @pytest.mark.parametrize( - ("df, aggregate_by_p_id_spec, target, expected"), + ("aggregation_specs_tree, leaf_name, target_tree, expected"), [ ( - "input_data_aggregate_by_p_id", { - "target_func": { - "p_id_to_aggregate_by": "hh_id", - "source_col": "source_func", - "aggr": "sum", - "func_return": 100, + "module": { + "target_func": AggregateByPIDSpec( + p_id_to_aggregate_by="groupings__hh_id", + source_col="source_func", + aggr="sum", + ) } }, - "target_func", + "source_func", + {"module": {"target_func": None}}, pd.Series([200, 100, 0]), ), ( - "input_data_aggregate_by_p_id", { - "target_func_m": { - "p_id_to_aggregate_by": "hh_id", - "source_col": "source_func_m", - "aggr": "sum", - "func_return": 100, + "module": { + "target_func_m": AggregateByPIDSpec( + p_id_to_aggregate_by="groupings__hh_id", + source_col="source_func_m", + aggr="sum", + ) } }, - "target_func_y", + "source_func_m", + {"module": {"target_func_y": None}}, pd.Series([2400, 1200, 0]), ), ( - "input_data_aggregate_by_p_id", { - "target_func_m": { - "p_id_to_aggregate_by": "hh_id", - "source_col": "source_func_m", - "aggr": "sum", - "func_return": 100, + "module": { + "target_func_m": AggregateByPIDSpec( + p_id_to_aggregate_by="groupings__hh_id", + source_col="source_func_m", + aggr="sum", + ) } }, - "target_func_y_hh", + "source_func_m", + {"module": {"target_func_y_hh": None}}, pd.Series([3600, 3600, 0]), ), ], ) def test_user_provided_aggregate_by_p_id_specs( - df, aggregate_by_p_id_spec, target, expected, request + aggregation_specs_tree, + leaf_name, + target_tree, + expected, + minimal_input_data_shared_hh, ): - df = request.getfixturevalue(df) + # TODO(@MImmesberger): Remove fake dependency. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + @policy_function(leaf_name=leaf_name) + def source_func(groupings__p_id: int) -> int: # noqa: ARG001 + return 100 - target_aggregate_by_p_id_spec = next(iter(aggregate_by_p_id_spec.keys())) - - def source_func(): - return numpy.array( - [aggregate_by_p_id_spec[target_aggregate_by_p_id_spec]["func_return"]] - * len(df) - ) + functions_tree = {"module": {leaf_name: source_func}} environment = PolicyEnvironment( - [ - PolicyFunction( - source_func, - function_name=aggregate_by_p_id_spec[target_aggregate_by_p_id_spec][ - "source_col" - ], - ), - ], - aggregate_by_p_id_specs=aggregate_by_p_id_spec, + functions_tree, + aggregation_specs_tree=aggregation_specs_tree, ) out = compute_taxes_and_transfers( - df, + minimal_input_data_shared_hh, environment, - targets=target, - ) + targets_tree=target_tree, + )["module"][next(iter(target_tree["module"].keys()))] - numpy.testing.assert_array_almost_equal(out[target], expected) + numpy.testing.assert_array_almost_equal(out, expected) @pytest.mark.parametrize( @@ -703,11 +635,11 @@ def test_fail_if_cannot_be_converted_to_internal_type( "data, functions_overridden", [ ( - pd.DataFrame({"bg_id": [1, 2, 3]}), + {"bg_id": pd.Series([1, 2, 3])}, {"bg_id": bg_id_numpy}, ), ( - pd.DataFrame({"wthh_id": [1, 2, 3]}), + {"wthh_id": pd.Series([1, 2, 3])}, {"wthh_id": wthh_id_numpy}, ), ], @@ -722,43 +654,50 @@ def test_provide_endogenous_groupings(data, functions_overridden): "data, functions_overridden, error_match", [ ( - pd.DataFrame({"hh_id": [1, 1.1, 2]}), + {"groupings": {"hh_id": pd.Series([1, 1.1, 2])}}, {}, - "The data types of the following columns are invalid: \n" - "\n - hh_id: Conversion from input type float64 to int failed." - " This conversion is only supported if all decimal places of input" - " data are equal to 0.", + "The data types of the following columns are invalid:\n" + "\n - groupings__hh_id: Conversion from input type float64 to int failed." + " This\nconversion is only supported if all decimal places of input" + " data are equal to\n0.", ), ( - pd.DataFrame({"wohnort_ost": [1.1, 0.0, 1.0]}), + {"basic_inputs": {"wohnort_ost": pd.Series([1.1, 0.0, 1.0])}}, {}, - "The data types of the following columns are invalid: \n" - "\n - wohnort_ost: Conversion from input type float64 to bool failed." - " This conversion is only supported if input data exclusively contains" - " the values 1.0 and 0.0.", + "The data types of the following columns are invalid:\n" + "\n - basic_inputs__wohnort_ost: Conversion from input type float64 to bool" + "\nfailed. This conversion is only supported if input data exclusively " + "contains\nthe values 1.0 and 0.0.", ), ( - pd.DataFrame({"wohnort_ost": [2, 0, 1], "hh_id": [1.0, 2.0, 3.0]}), + { + "basic_inputs": {"wohnort_ost": pd.Series([2, 0, 1])}, + "groupings": {"hh_id": pd.Series([1.0, 2.0, 3.0])}, + }, {}, - "The data types of the following columns are invalid: \n" - "\n - wohnort_ost: Conversion from input type int64 to bool failed." - " This conversion is only supported if input data exclusively contains" - " the values 1 and 0.", + "The data types of the following columns are invalid:\n" + "\n - basic_inputs__wohnort_ost: Conversion from input type int64 to bool " + "failed.\nThis conversion is only supported if input data exclusively " + "contains the values\n1 and 0.", ), ( - pd.DataFrame({"wohnort_ost": ["True", "False"]}), + {"basic_inputs": {"wohnort_ost": pd.Series(["True", "False"])}}, {}, - "The data types of the following columns are invalid: \n" - "\n - wohnort_ost: Conversion from input type object to bool failed." - " Object type is not supported as input.", + "The data types of the following columns are invalid:\n" + "\n - basic_inputs__wohnort_ost: Conversion from input type object to bool " + "failed.\nObject type is not supported as input.", ), ( - pd.DataFrame({"hh_id": [1, "1", 2], "bruttolohn_m": ["2000", 3000, 4000]}), + { + "groupings": {"hh_id": pd.Series([1, "1", 2])}, + "basic_inputs": {"bruttolohn_m": pd.Series(["2000", 3000, 4000])}, + }, {}, - "The data types of the following columns are invalid: \n" - "\n - hh_id: Conversion from input type object to int failed. " - "Object type is not supported as input." - "\n - bruttolohn_m: Conversion from input type object to float failed." + "The data types of the following columns are invalid:\n" + "\n - groupings__hh_id: Conversion from input type object to int failed. " + "Object\ntype is not supported as input." + "\n\n- basic_inputs__bruttolohn_m: Conversion from input type object to" + " float\nfailed." " Object type is not supported as input.", ), ], @@ -768,3 +707,33 @@ def test_fail_if_cannot_be_converted_to_correct_type( ): with pytest.raises(ValueError, match=error_match): _convert_data_to_correct_types(data, functions_overridden) + + +@pytest.mark.parametrize( + ("tree", "leaf_checker", "err_substr"), + [ + ( + {"a": 1, "b": 2}, + lambda leaf: leaf is None, + "Leaf at tree[a] is invalid: got 1 of type .", + ), + ( + {"a": None, "b": {"c": None, "d": 1}}, + lambda leaf: leaf is None, + "Leaf at tree[b][d] is invalid: got 1 of type .", + ), + ( + [1, 2, 3], + lambda leaf: leaf is None, + "tree must be a dict, got .", + ), + ( + {1: 2}, + lambda leaf: leaf is None, + "Key 1 in tree must be a string but got .", + ), + ], +) +def test_assert_valid_gettsim_pytree(tree, leaf_checker, err_substr): + with pytest.raises(TypeError, match=re.escape(err_substr)): + assert_valid_gettsim_pytree(tree, leaf_checker, "tree") diff --git a/src/_gettsim_tests/test_kindergeld.py b/src/_gettsim_tests/test_kindergeld.py index 5a1f88ca61..475f6bdcbb 100644 --- a/src/_gettsim_tests/test_kindergeld.py +++ b/src/_gettsim_tests/test_kindergeld.py @@ -8,6 +8,7 @@ data = load_policy_test_data("kindergeld") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_kinderzuschl.py b/src/_gettsim_tests/test_kinderzuschl.py index 21ca685869..3f09b4b877 100644 --- a/src/_gettsim_tests/test_kinderzuschl.py +++ b/src/_gettsim_tests/test_kinderzuschl.py @@ -8,6 +8,7 @@ data = load_policy_test_data("kinderzuschl") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_loader.py b/src/_gettsim_tests/test_loader.py new file mode 100644 index 0000000000..0fbd3db9e7 --- /dev/null +++ b/src/_gettsim_tests/test_loader.py @@ -0,0 +1,76 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy +import pytest + +from _gettsim.config import PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR +from _gettsim.functions.loader import ( + _find_python_files_recursively, + _load_module, + _simplify_tree_path_when_module_name_equals_dir_name, +) +from _gettsim.functions.policy_function import ( + _vectorize_func, + policy_function, +) + +if TYPE_CHECKING: + from collections.abc import Callable + + +def test_load_path(): + assert _load_module( + RESOURCE_DIR / "social_insurance_contributions" / "ges_krankenv.py", + RESOURCE_DIR, + ) + + +def test_dont_load_init_py(): + """Don't load __init__.py files as sources for PolicyFunctions and + AggregationSpecs.""" + all_files = _find_python_files_recursively(PATHS_TO_INTERNAL_FUNCTIONS) + assert "__init__.py" not in [file.name for file in all_files] + + +def scalar_func(x: int) -> int: + return x * 2 + + +@policy_function(skip_vectorization=True) +def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: + return numpy.asarray([xi * 2 for xi in x]) + + +@pytest.mark.parametrize( + "vectorized_function", + [ + _vectorize_func(scalar_func), + already_vectorized_func, + ], +) +def test_vectorize_func(vectorized_function: Callable) -> None: + assert numpy.array_equal( + vectorized_function(numpy.array([1, 2, 3])), numpy.array([2, 4, 6]) + ) + + +@pytest.mark.parametrize( + ( + "path", + "expected_tree_path", + ), + [ + (("foo", "bar", "bar"), ("foo", "bar")), + (("foo", "bar", "baz"), ("foo", "bar", "baz")), + (("foo", "bar", "bar", "bar"), ("foo", "bar", "bar")), + (("foo", "bar", "bar", "baz"), ("foo", "bar", "bar", "baz")), + ], +) +def test_remove_recurring_branch_names( + path: str, expected_tree_path: tuple[str, ...] +) -> None: + assert ( + _simplify_tree_path_when_module_name_equals_dir_name(path) == expected_tree_path + ) diff --git a/src/_gettsim_tests/test_lohnst.py b/src/_gettsim_tests/test_lohnst.py index 119c5dd85e..69da4a8538 100644 --- a/src/_gettsim_tests/test_lohnst.py +++ b/src/_gettsim_tests/test_lohnst.py @@ -25,6 +25,7 @@ data = load_policy_test_data("lohnst") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, @@ -46,6 +47,7 @@ def test_lohnsteuer( ) +@pytest.mark.xfail(reason="Needs renamings PR.") def test_lohnsteuer_rv_anteil(): environment = set_up_policy_environment(2018) diff --git a/src/_gettsim_tests/test_minijobgrenze.py b/src/_gettsim_tests/test_minijobgrenze.py index 402f93844c..19d373448a 100644 --- a/src/_gettsim_tests/test_minijobgrenze.py +++ b/src/_gettsim_tests/test_minijobgrenze.py @@ -10,6 +10,7 @@ data = load_policy_test_data("minijobgrenze") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_namespaces.py b/src/_gettsim_tests/test_namespaces.py new file mode 100644 index 0000000000..26fe638945 --- /dev/null +++ b/src/_gettsim_tests/test_namespaces.py @@ -0,0 +1,91 @@ +"""Test namespace-specific function processing.""" + +import pandas as pd +import pytest + +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim.policy_environment import PolicyEnvironment +from _gettsim_tests.test_data.namespaces.module1 import FUNCTIONS_MODULE1 +from _gettsim_tests.test_data.namespaces.module2 import FUNCTIONS_MODULE2 + + +@pytest.fixture +def functions_tree(): + return { + **FUNCTIONS_MODULE1, + **FUNCTIONS_MODULE2, + } + + +@pytest.fixture +def parameters(): + return { + "module1": { + "a": 1, + "b": 1, + "c": 1, + }, + "module2": { + "a": 1, + "b": 1, + "c": 1, + }, + } + + +@pytest.fixture +def aggregation_tree(): + return { + "module1": { + "group_mean_bg": AggregateByGroupSpec( + source_col="f", + aggr="sum", + ), + }, + "module2": { + "p_id_aggregation_target": AggregateByPIDSpec( + p_id_to_aggregate_by="groupings__some_foreign_keys", + source_col="g_hh", + aggr="sum", + ), + }, + } + + +def test_compute_taxes_and_transfers_with_tree( + functions_tree, parameters, aggregation_tree +): + """Test compute_taxes_and_transfers with function tree input.""" + policy_env = PolicyEnvironment( + functions_tree=functions_tree, + params=parameters, + aggregation_specs_tree=aggregation_tree, + ) + targets = { + "module1": { + "g_hh": None, + "group_mean_bg": None, + }, + "module2": { + "g_hh": None, + "p_id_aggregation_target": None, + }, + } + data = { + "groupings": { + "p_id": pd.Series([0, 1, 2]), + "hh_id": pd.Series([0, 0, 1]), + "bg_id": pd.Series([0, 1, 2]), + "eg_id": pd.Series([0, 1, 2]), + "ehe_id": pd.Series([0, 1, 2]), + "wthh_id": pd.Series([0, 1, 2]), + "sn_id": pd.Series([0, 1, 2]), + "fg_id": pd.Series([0, 1, 2]), + "some_foreign_keys": pd.Series([2, 0, 1]), + }, + "module1": { + "f": pd.Series([1, 2, 3]), + }, + } + compute_taxes_and_transfers(data, policy_env, targets) diff --git a/src/_gettsim_tests/test_naming_conventions.py b/src/_gettsim_tests/test_naming_conventions.py deleted file mode 100644 index 6983469baa..0000000000 --- a/src/_gettsim_tests/test_naming_conventions.py +++ /dev/null @@ -1,88 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import pytest - -from _gettsim.config import ( - DEFAULT_TARGETS, - GEP_01_CHARACTER_LIMIT_OTHER_COLUMNS, - GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS, - TYPES_INPUT_VARIABLES, -) -from _gettsim.functions.loader import _load_internal_functions -from _gettsim.shared import remove_group_suffix - -if TYPE_CHECKING: - from _gettsim.functions.policy_function import PolicyFunction - - -def _nice_output_list_of_strings(list_of_strings): - my_str = "\n".join(sorted(list_of_strings)) - return f"\n\n{my_str}\n\n" - - -@pytest.fixture(scope="module") -def default_input_variables(): - return sorted(TYPES_INPUT_VARIABLES.keys()) - - -@pytest.fixture(scope="module") -def all_functions() -> list[PolicyFunction]: - return _load_internal_functions() - - -@pytest.fixture(scope="module") -def function_names(all_functions: list[PolicyFunction]) -> list[str]: - return sorted({func.name_in_dag for func in all_functions}) - - -def check_length(column_names, limit): - over_limit = [ - f"{name:40} ({len(name)})" for name in column_names if len(name) > limit - ] - assert not over_limit, ( - _nice_output_list_of_strings(over_limit) + f"limit is {limit}" - ) - - -def test_all_default_targets_among_function_names(function_names): - check = [ - c - for c in DEFAULT_TARGETS - if (c not in function_names) and (remove_group_suffix(c) not in function_names) - ] - assert not check, _nice_output_list_of_strings(check) - - -@pytest.mark.skip(reason="Target names will change very soon.") -def test_length_column_names_default_targets(): - # TODO(@MImmesberger): Unskip test once target names are updated after updating DAG - # to include Namespaces. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/760 - check_length( - column_names=DEFAULT_TARGETS, limit=GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS - ) - - -def skip_test_length_column_names_input_variables(default_input_variables): - check_length( - column_names=default_input_variables, - limit=GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS, - ) - - -@pytest.mark.skip(reason="Target names will change very soon.") -def test_length_column_names_other_functions(function_names): - # TODO(@MImmesberger): Unskip test once target names are updated after updating DAG - # to include Namespaces. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/760 - # Consider all functions that are not purely internal (starting with an underscore) - # and not part of default targets - other_function_names = [ - c for c in function_names if c not in DEFAULT_TARGETS and not c.startswith("_") - ] - - check_length( - column_names=other_function_names, limit=GEP_01_CHARACTER_LIMIT_OTHER_COLUMNS - ) diff --git a/src/_gettsim_tests/test_policy_environment.py b/src/_gettsim_tests/test_policy_environment.py index a10c5763ce..74484a8317 100644 --- a/src/_gettsim_tests/test_policy_environment.py +++ b/src/_gettsim_tests/test_policy_environment.py @@ -1,60 +1,60 @@ """Some tests for the policy_environment module.""" from datetime import date, timedelta +from typing import Any +import optree import pandas as pd import pytest -from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.functions.policy_function import policy_function +from _gettsim.gettsim_typing import NestedFunctionDict from _gettsim.policy_environment import ( PolicyEnvironment, + _fail_if_name_of_last_branch_element_not_leaf_name_of_function, _load_parameter_group_from_yaml, - load_functions_for_date, + load_functions_tree_for_date, set_up_policy_environment, ) from _gettsim_tests import TEST_DIR class TestPolicyEnvironment: - def test_get_function_by_name_exists(self): - function = PolicyFunction(lambda: 1, function_name="foo") - environment = PolicyEnvironment([function]) + def test_func_exists_in_tree(self): + function = policy_function(leaf_name="foo")(lambda: 1) + environment = PolicyEnvironment({"foo": function}) - assert environment.get_function_by_name("foo") == function + assert environment.functions_tree["foo"] == function - def test_get_function_by_name_does_not_exist(self): - environment = PolicyEnvironment([], {}) + def test_func_does_not_exist_in_tree(self): + environment = PolicyEnvironment({}, {}) - assert environment.get_function_by_name("foo") is None + assert "foo" not in environment.functions_tree @pytest.mark.parametrize( "environment", [ - PolicyEnvironment([], {}), + PolicyEnvironment({}, {}), + PolicyEnvironment({"foo": policy_function(leaf_name="foo")(lambda: 1)}), PolicyEnvironment( - [ - PolicyFunction(lambda: 1, function_name="foo"), - ] - ), - PolicyEnvironment( - [ - PolicyFunction(lambda: 1, function_name="foo"), - PolicyFunction(lambda: 2, function_name="bar"), - ] + { + "foo": policy_function(leaf_name="foo")(lambda: 1), + "bar": policy_function(leaf_name="bar")(lambda: 2), + } ), ], ) def test_upsert_functions(self, environment: PolicyEnvironment): - new_function = PolicyFunction(lambda: 3, function_name="foo") - new_environment = environment.upsert_functions(new_function) + new_function = policy_function(leaf_name="foo")(lambda: 3) + new_environment = environment.upsert_policy_functions({"foo": new_function}) - assert new_environment.get_function_by_name("foo") == new_function + assert new_environment.functions_tree["foo"] == new_function @pytest.mark.parametrize( "environment", [ - PolicyEnvironment([], {}), - PolicyEnvironment([], {"foo": {"bar": 1}}), + PolicyEnvironment({}, {}), + PolicyEnvironment({}, {"foo": {"bar": 1}}), ], ) def test_replace_all_parameters(self, environment: PolicyEnvironment): @@ -106,41 +106,51 @@ def test_access_different_date_jahresanfang(): @pytest.mark.parametrize( - "dag_key, last_day, function_name_last_day, function_name_next_day", + "tree, last_day, function_name_last_day, function_name_next_day", [ ( - "eink_st_altersfreib_y", + {"zu_verst_eink": {"freibetraege": {"eink_st_altersfreib_y": None}}}, date(2004, 12, 31), "eink_st_altersfreib_y_bis_2004", "eink_st_altersfreib_y_ab_2005", ), ( - "alleinerz_freib_y_sn", + {"zu_verst_eink": {"freibetraege": {"alleinerz_freib_y_sn": None}}}, date(2014, 12, 31), "eink_st_alleinerz_freib_y_sn_pauschal", "eink_st_alleinerz_freib_y_sn_nach_kinderzahl", ), ( - "sum_eink_y", + {"zu_verst_eink": {"eink": {"sum_eink_y": None}}}, date(2008, 12, 31), "sum_eink_mit_kapital_eink_y", "sum_eink_ohne_kapital_eink_y", ), ], ) -def test_load_functions_for_date( - dag_key: str, +def test_load_functions_tree_for_date( + tree: dict[str, Any], last_day: date, function_name_last_day: str, function_name_next_day: str, ): - functions_last_day = { - f.name_in_dag: f.function for f in load_functions_for_date(date=last_day) - } - functions_next_day = { - f.name_in_dag: f.function - for f in load_functions_for_date(date=last_day + timedelta(days=1)) - } - - assert functions_last_day[dag_key].__name__ == function_name_last_day - assert functions_next_day[dag_key].__name__ == function_name_next_day + functions_last_day = load_functions_tree_for_date(date=last_day) + functions_next_day = load_functions_tree_for_date(date=last_day + timedelta(days=1)) + + accessor = optree.tree_accessors(tree, none_is_leaf=True)[0] + + assert accessor(functions_last_day).__name__ == function_name_last_day + assert accessor(functions_next_day).__name__ == function_name_next_day + + +@pytest.mark.parametrize( + "functions_tree", + [ + {"foo": policy_function(leaf_name="bar")(lambda: 1)}, + ], +) +def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( + functions_tree: NestedFunctionDict, +): + with pytest.raises(KeyError): + _fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) diff --git a/src/_gettsim_tests/test_policy_function.py b/src/_gettsim_tests/test_policy_function.py new file mode 100644 index 0000000000..19d4fd9899 --- /dev/null +++ b/src/_gettsim_tests/test_policy_function.py @@ -0,0 +1,35 @@ +import pytest + +from _gettsim.functions.policy_function import PolicyFunction, policy_function + + +@policy_function() +def simple_policy_function(x): + return x + + +@policy_function(leaf_name="simple_policy_function") +def policy_function_with_internal_name(x): + return x + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_function_type(function): + assert isinstance(function, PolicyFunction) + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_function_name(function): + assert function.leaf_name == "simple_policy_function" diff --git a/src/_gettsim_tests/test_renten_anspr.py b/src/_gettsim_tests/test_renten_anspr.py index 4a681ea3f2..15d132225e 100644 --- a/src/_gettsim_tests/test_renten_anspr.py +++ b/src/_gettsim_tests/test_renten_anspr.py @@ -14,6 +14,7 @@ data = load_policy_test_data("renten_anspr") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_rounding.py b/src/_gettsim_tests/test_rounding.py index ab75c7b0b6..deb0b72b57 100644 --- a/src/_gettsim_tests/test_rounding.py +++ b/src/_gettsim_tests/test_rounding.py @@ -3,20 +3,21 @@ import pandas as pd import pytest import yaml +from optree import tree_flatten from pandas._testing import assert_series_equal from _gettsim.config import ( INTERNAL_PARAMS_GROUPS, RESOURCE_DIR, ) -from _gettsim.functions.loader import _load_internal_functions +from _gettsim.functions.loader import load_functions_tree_for_date +from _gettsim.functions.policy_function import policy_function from _gettsim.interface import ( - _add_rounding_to_functions, - _add_rounding_to_one_function, + _add_rounding_to_function, + _apply_rounding_spec, compute_taxes_and_transfers, ) -from _gettsim.policy_environment import PolicyEnvironment, load_functions_for_date -from _gettsim.shared import policy_info +from _gettsim.policy_environment import PolicyEnvironment rounding_specs_and_exp_results = [ (1, "up", None, [100.24, 100.78], [101.0, 101.0]), @@ -32,11 +33,11 @@ def test_decorator(): - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func(): return 0 - assert test_func.__info__["params_key_for_rounding"] == "params_key_test" + assert test_func.params_key_for_rounding == "params_key_test" @pytest.mark.parametrize( @@ -51,16 +52,16 @@ def test_func(): def test_no_rounding_specs(rounding_specs): with pytest.raises(KeyError): - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func(): return 0 - environment = PolicyEnvironment([test_func], rounding_specs) + environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) compute_taxes_and_transfers( - data=pd.DataFrame([{"p_id": 1}, {"p_id": 2}]), + data_tree={"groupings": {"p_id": pd.Series([1, 2])}}, environment=environment, - targets=["test_func"], + targets_tree={"test_func": None}, ) @@ -76,7 +77,7 @@ def test_func(): def test_rounding_specs_wrong_format(base, direction, to_add_after_rounding): with pytest.raises(ValueError): - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func(): return 0 @@ -92,12 +93,12 @@ def test_func(): } } - environment = PolicyEnvironment([test_func], rounding_specs) + environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) compute_taxes_and_transfers( - data=pd.DataFrame([{"p_id": 1}, {"p_id": 2}]), + data_tree={"groupings": {"p_id": pd.Series([1, 2])}}, environment=environment, - targets=["test_func"], + targets_tree={"test_func": None}, ) @@ -109,12 +110,12 @@ def test_rounding(base, direction, to_add_after_rounding, input_values, exp_outp """Check if rounding is correct.""" # Define function that should be rounded - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func(income): return income - data = pd.DataFrame([{"p_id": 1}, {"p_id": 2}]) - data["income"] = input_values + data = {"groupings": {"p_id": pd.Series([1, 2])}} + data["income"] = pd.Series(input_values) rounding_specs = { "params_key_test": { "rounding": { @@ -131,13 +132,13 @@ def test_func(income): "to_add_after_rounding" ] = to_add_after_rounding - environment = PolicyEnvironment([test_func], rounding_specs) + environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) calc_result = compute_taxes_and_transfers( - data=data, environment=environment, targets=["test_func"] + data_tree=data, environment=environment, targets_tree={"test_func": None} ) assert_series_equal( - calc_result["test_func"], pd.Series(exp_output), check_names=False + pd.Series(calc_result["test_func"]), pd.Series(exp_output), check_names=False ) @@ -145,11 +146,11 @@ def test_rounding_with_time_conversion(): """Check if rounding is correct for time-converted functions.""" # Define function that should be rounded - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func_m(income): return income - data = pd.DataFrame({"p_id": [1, 2], "income": [1.2, 1.5]}) + data = {"groupings": {"p_id": pd.Series([1, 2])}, "income": pd.Series([1.2, 1.5])} rounding_specs = { "params_key_test": { "rounding": { @@ -160,15 +161,17 @@ def test_func_m(income): } } } - environment = PolicyEnvironment([test_func_m], rounding_specs) + environment = PolicyEnvironment({"test_func_m": test_func_m}, rounding_specs) calc_result = compute_taxes_and_transfers( - data=data, + data_tree=data, environment=environment, - targets=["test_func_y"], + targets_tree={"test_func_y": None}, ) assert_series_equal( - calc_result["test_func_y"], pd.Series([12.0, 12.0]), check_names=False + pd.Series(calc_result["test_func_y"]), + pd.Series([12.0, 12.0]), + check_names=False, ) @@ -180,18 +183,18 @@ def test_no_rounding( base, direction, to_add_after_rounding, input_values_exp_output, _ignore ): # Define function that should be rounded - @policy_info(params_key_for_rounding="params_key_test") + @policy_function(params_key_for_rounding="params_key_test") def test_func(income): return income - data = pd.DataFrame([{"p_id": 1}, {"p_id": 2}]) - data["income"] = input_values_exp_output + data = {"groupings": {"p_id": pd.Series([1, 2])}} + data["income"] = pd.Series(input_values_exp_output) rounding_specs = { "params_key_test": { "rounding": {"test_func": {"base": base, "direction": direction}} } } - environment = PolicyEnvironment([test_func], rounding_specs) + environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) if to_add_after_rounding: rounding_specs["params_key_test"]["rounding"]["test_func"][ @@ -199,13 +202,15 @@ def test_func(income): ] = to_add_after_rounding calc_result = compute_taxes_and_transfers( - data=data, + data_tree=data, environment=environment, - targets=["test_func"], + targets_tree={"test_func": None}, rounding=False, ) assert_series_equal( - calc_result["test_func"], pd.Series(input_values_exp_output), check_names=False + pd.Series(calc_result["test_func"]), + pd.Series(input_values_exp_output), + check_names=False, ) @@ -218,16 +223,17 @@ def test_rounding_callable( ): """Check if callable is rounded correctly. - Tests `_add_rounding_to_one_function` directly. + Tests `_apply_rounding_spec` directly. """ def test_func(income): return income - func_with_rounding = _add_rounding_to_one_function( + func_with_rounding = _apply_rounding_spec( base=base, direction=direction, to_add_after_rounding=to_add_after_rounding if to_add_after_rounding else 0, + path=("test_func",), )(test_func) assert_series_equal( @@ -237,6 +243,7 @@ def test_func(income): ) +@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") def test_decorator_for_all_functions_with_rounding_spec(): """Check if all functions for which rounding parameters are specified have an attribute which indicates rounding.""" @@ -259,11 +266,16 @@ def test_decorator_for_all_functions_with_rounding_spec(): # addressed. time_dependent_functions = {} for year in range(1990, 2023): - year_functions = load_functions_for_date( - datetime.date(year=year, month=1, day=1) - ) - new_dict = {func.function.__name__: func.name_in_dag for func in year_functions} - time_dependent_functions = {**time_dependent_functions, **new_dict} + year_functions = tree_flatten( + load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) + )[0] + function_name_to_leaf_name_dict = { + func.function.__name__: func.leaf_name for func in year_functions + } + time_dependent_functions = { + **time_dependent_functions, + **function_name_to_leaf_name_dict, + } # Add time dependent functions for which rounding specs for new name exist # and remove new name from list @@ -280,15 +292,14 @@ def test_decorator_for_all_functions_with_rounding_spec(): functions_to_check = [ f - for f in _load_internal_functions() + for f in _load_internal_functions() # noqa: F821 if f.original_function_name in function_names_to_check ] for f in functions_to_check: assert f.params_key_for_rounding, ( f"For the function {f.original_function_name}, rounding parameters are" - f" specified. But the function is missing the policy_info decorator or its " - "params_key_for_rounding parameter is not set." + f" specified. However, its `params_key_for_rounding` attribute is not set." ) @@ -305,11 +316,11 @@ def test_decorator_for_all_functions_with_rounding_spec(): ], ) def test_raise_if_missing_rounding_spec(params, match): - @policy_info(params_key_for_rounding="eink_st") + @policy_function(params_key_for_rounding="eink_st") def eink_st_func(arg_1: float) -> float: return arg_1 with pytest.raises(KeyError, match=match): - _add_rounding_to_functions( - functions={"eink_st_func": eink_st_func}, params=params + _add_rounding_to_function( + input_function=eink_st_func, params=params, path=("eink_st_func",) ) diff --git a/src/_gettsim_tests/test_shared.py b/src/_gettsim_tests/test_shared.py new file mode 100644 index 0000000000..170ca023df --- /dev/null +++ b/src/_gettsim_tests/test_shared.py @@ -0,0 +1,123 @@ +from dataclasses import dataclass + +import pytest + +from _gettsim.shared import ( + create_tree_from_path_and_value, + partition_tree_by_reference_tree, + upsert_path_and_value, + upsert_tree, +) + + +@dataclass +class SampleDataClass: + a: int + + +@pytest.mark.parametrize( + "base, path_to_upsert, value_to_upsert, expected", + [ + ({}, ["a"], 1, {"a": 1}), + ({"a": 1}, ["a"], 2, {"a": 2}), + ({}, ["a", "b"], 2, {"a": {"b": 2}}), + ({"a": {"b": 1}}, ["a", "c"], 2, {"a": {"b": 1, "c": 2}}), + ], +) +def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): + result = upsert_path_and_value( + base=base, path_to_upsert=path_to_upsert, value_to_upsert=value_to_upsert + ) + assert result == expected + + +@pytest.mark.parametrize( + "paths, expected", + [ + ("a", {"a": None}), + (("a", "b"), {"a": {"b": None}}), + (("a", "b", "c"), {"a": {"b": {"c": None}}}), + ], +) +def test_create_tree_from_path_and_value(paths, expected): + assert create_tree_from_path_and_value(paths) == expected + + +@pytest.mark.parametrize( + "base_dict, update_dict, expected", + [ + ({}, {"a": 1}, {"a": 1}), + ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), + ({"a": 1}, {"a": 2}, {"a": 2}), + ({"a": {"b": 1}}, {"a": {"c": 2}}, {"a": {"b": 1, "c": 2}}), + ({"a": {"b": 1}}, {"a": 3}, {"a": 3}), + ({"a": 3}, {"a": {"b": 1}}, {"a": {"b": 1}}), + ({"a": SampleDataClass(a=1)}, {}, {"a": SampleDataClass(a=1)}), + ], +) +def test_upsert_tree(base_dict, update_dict, expected): + assert upsert_tree(base=base_dict, to_upsert=update_dict) == expected + + +@pytest.mark.parametrize( + "tree_to_partition, reference_tree, expected", + [ + ( + { + "a": { + "b": 1, + "c": 1, + }, + "b": 1, + }, + { + "a": { + "b": 1, + }, + "b": 1, + }, + ( + {"a": {"b": 1}, "b": 1}, + {"a": {"c": 1}}, + ), + ), + ( + { + "a": { + "c": 1, + }, + }, + {}, + ( + {}, + {"a": {"c": 1}}, + ), + ), + ( + { + "a": { + "b": None, + "c": None, + }, + "b": None, + }, + { + "a": { + "b": None, + }, + "b": None, + }, + ( + {"a": {"b": None}, "b": None}, + {"a": {"c": None}}, + ), + ), + ], +) +def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, expected): + in_reference_tree, not_in_reference_tree = partition_tree_by_reference_tree( + tree_to_partition=tree_to_partition, reference_tree=reference_tree + ) + + assert in_reference_tree == expected[0] + assert not_in_reference_tree == expected[1] diff --git a/src/_gettsim_tests/test_soli_st.py b/src/_gettsim_tests/test_soli_st.py index 43a0333515..9c8290abe9 100644 --- a/src/_gettsim_tests/test_soli_st.py +++ b/src/_gettsim_tests/test_soli_st.py @@ -8,6 +8,7 @@ data = load_policy_test_data("soli_st") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_sozialv_beitr.py b/src/_gettsim_tests/test_sozialv_beitr.py index fd16ac7d7a..218b7f1f82 100644 --- a/src/_gettsim_tests/test_sozialv_beitr.py +++ b/src/_gettsim_tests/test_sozialv_beitr.py @@ -8,6 +8,7 @@ data = load_policy_test_data("sozialv_beitr") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py index dc1ff00741..22be927052 100644 --- a/src/_gettsim_tests/test_synthetic.py +++ b/src/_gettsim_tests/test_synthetic.py @@ -36,8 +36,8 @@ def synthetic_data_spec_variables(): n_adults=2, n_children=1, specs_constant_over_households={ - "alter": [50, 30, 5], - "bruttolohn_m": [1000, 2000, 0], + "basic_inputs__alter": [50, 30, 5], + "basic_inputs__bruttolohn_m": [1000, 2000, 0], }, ) return df @@ -49,9 +49,11 @@ def synthetic_data_spec_heterogeneous_married(): n_adults=2, n_children=1, adults_married=True, - specs_constant_over_households={"alter": [50, 30, 5]}, + specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, specs_heterogeneous={ - "bruttolohn_m": [[i / 2, i / 2, 0] for i in range(0, 1001, 100)] + "basic_inputs__bruttolohn_m": [ + [i / 2, i / 2, 0] for i in range(0, 1001, 100) + ] }, ) return df @@ -63,9 +65,11 @@ def synthetic_data_spec_heterogeneous_not_married(): n_adults=2, n_children=1, adults_married=False, - specs_constant_over_households={"alter": [50, 30, 5]}, + specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, specs_heterogeneous={ - "bruttolohn_m": [[i / 2, i / 2, 0] for i in range(0, 1001, 100)] + "basic_inputs__bruttolohn_m": [ + [i / 2, i / 2, 0] for i in range(0, 1001, 100) + ] }, ) return df @@ -84,42 +88,47 @@ def synthetic_data_spec_heterogeneous_not_married(): ] +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "df", synthetic_data_fixtures, ) def test_positive_rent(df, request): df = request.getfixturevalue(df) - assert df["bruttokaltmiete_m_hh"].min() > 0 + assert df["basic_inputs__bruttokaltmiete_m_hh"].min() > 0 +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "df", synthetic_data_fixtures, ) def test_no_nans(df, request): df = request.getfixturevalue(df) - assert df["bruttokaltmiete_m_hh"].notna().all().all() + assert df["basic_inputs__bruttokaltmiete_m_hh"].notna().all().all() +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "df", synthetic_data_fixtures_not_heterogeneous, ) def test_unique_p_id(df, request): df = request.getfixturevalue(df) - assert df["p_id"].is_unique + assert df["groupings__p_id"].is_unique +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "df", synthetic_data_fixtures_not_heterogeneous, ) def test_constant_hh_id(df, request): df = request.getfixturevalue(df) - assert (df["hh_id"].max() == df["hh_id"]).all() + assert (df["groupings__hh_id"].max() == df["groupings__hh_id"]).all() +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "df, exp_n_rows", [ @@ -134,22 +143,24 @@ def test_correct_size(df, exp_n_rows, request): assert df.shape[0] == exp_n_rows +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") def test_alleinerziehend(synthetic_data_alleinerziehend): pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["alleinerz"], - pd.Series([True, False], name="alleinerz"), + synthetic_data_alleinerziehend["basic_inputs__alleinerz"], + pd.Series([True, False], name="basic_inputs__alleinerz"), ) pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["gemeinsam_veranlagt"], - pd.Series([False, False], name="gemeinsam_veranlagt"), + synthetic_data_alleinerziehend["basic_inputs__gemeinsam_veranlagt"], + pd.Series([False, False], name="basic_inputs__gemeinsam_veranlagt"), ) +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "col, expected", [ - ("alter", [50, 30, 5]), - ("bruttolohn_m", [1000, 2000, 0]), + ("basic_inputs__alter", [50, 30, 5]), + ("basic_inputs__bruttolohn_m", [1000, 2000, 0]), ], ) def test_specs_constant_over_households(col, expected, synthetic_data_spec_variables): @@ -158,15 +169,16 @@ def test_specs_constant_over_households(col, expected, synthetic_data_spec_varia ) +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "col, expected", [ - ("alter", [50, 30, 5] * 11), + ("basic_inputs__alter", [50, 30, 5] * 11), ( - "bruttolohn_m", + "basic_inputs__bruttolohn_m", numpy.concatenate([[i / 2, i / 2, 0] for i in range(0, 1001, 100)]), ), - ("gemeinsam_veranlagt", [True, True, False] * 11), + ("basic_inputs__gemeinsam_veranlagt", [True, True, False] * 11), ], ) def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_married): @@ -175,6 +187,7 @@ def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_ma ) +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "n_adults, n_children, specs_constant_over_households," " specs_heterogeneous, expectation", @@ -187,7 +200,10 @@ def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_ma 2, 0, None, - {"alter": [[30, 20], [40, 30]], "bruttolohn_m": [[300, 200]]}, + { + "basic_inputs__alter": [[30, 20], [40, 30]], + "basic_inputs__bruttolohn_m": [[300, 200]], + }, pytest.raises(ValueError, match="Length of"), ), ], @@ -208,27 +224,32 @@ def test_fail_if_functions_and_columns_overlap( ) +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "fixture, expected", [ ( "synthetic_data_spec_heterogeneous_not_married", { - "p_id": list(range(33)), - "p_id_elternteil_1": [-1 if i % 3 != 2 else i - 2 for i in range(33)], - "p_id_elternteil_2": [-1 if i % 3 != 2 else i - 1 for i in range(33)], - "p_id_kindergeld_empf": [ + "groupings__p_id": list(range(33)), + "groupings__p_id_elternteil_1": [ + -1 if i % 3 != 2 else i - 2 for i in range(33) + ], + "groupings__p_id_elternteil_2": [ + -1 if i % 3 != 2 else i - 1 for i in range(33) + ], + "groupings__p_id_kindergeld_empf": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "p_id_erziehgeld_empf": [ + "groupings__p_id_erziehgeld_empf": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "p_id_ehepartner": [-1 for i in range(33)], - "p_id_einstandspartner": [ + "groupings__p_id_ehepartner": [-1 for i in range(33)], + "groupings__p_id_einstandspartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "p_id_betreuungsk_träger": [ + "groupings__p_id_betreuungsk_träger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -236,24 +257,28 @@ def test_fail_if_functions_and_columns_overlap( ( "synthetic_data_spec_heterogeneous_married", { - "p_id": list(range(33)), - "p_id_elternteil_1": [-1 if i % 3 != 2 else i - 2 for i in range(33)], - "p_id_elternteil_2": [-1 if i % 3 != 2 else i - 1 for i in range(33)], - "p_id_kindergeld_empf": [ + "groupings__p_id": list(range(33)), + "groupings__p_id_elternteil_1": [ + -1 if i % 3 != 2 else i - 2 for i in range(33) + ], + "groupings__p_id_elternteil_2": [ + -1 if i % 3 != 2 else i - 1 for i in range(33) + ], + "groupings__p_id_kindergeld_empf": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "p_id_erziehgeld_empf": [ + "groupings__p_id_erziehgeld_empf": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "p_id_ehepartner": [ + "groupings__p_id_ehepartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "p_id_einstandspartner": [ + "groupings__p_id_einstandspartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "p_id_betreuungsk_träger": [ + "groupings__p_id_betreuungsk_träger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -261,27 +286,27 @@ def test_fail_if_functions_and_columns_overlap( ( "synthetic_data_alleinerziehend", { - "p_id": [0, 1], - "p_id_elternteil_1": [-1, 0], - "p_id_elternteil_2": [-1, -1], - "p_id_kindergeld_empf": [-1, 0], - "p_id_erziehgeld_empf": [-1, 0], - "p_id_ehepartner": [-1, -1], - "p_id_einstandspartner": [-1, -1], - "p_id_betreuungsk_träger": [-1, 0], + "groupings__p_id": [0, 1], + "groupings__p_id_elternteil_1": [-1, 0], + "groupings__p_id_elternteil_2": [-1, -1], + "groupings__p_id_kindergeld_empf": [-1, 0], + "groupings__p_id_erziehgeld_empf": [-1, 0], + "groupings__p_id_ehepartner": [-1, -1], + "groupings__p_id_einstandspartner": [-1, -1], + "groupings__p_id_betreuungsk_träger": [-1, 0], }, ), ( "synthetic_data_no_children", { - "p_id": [0, 1], - "p_id_elternteil_1": [-1, -1], - "p_id_elternteil_2": [-1, -1], - "p_id_kindergeld_empf": [-1, -1], - "p_id_erziehgeld_empf": [-1, -1], - "p_id_ehepartner": [1, 0], - "p_id_einstandspartner": [1, 0], - "p_id_betreuungsk_träger": [-1, -1], + "groupings__p_id": [0, 1], + "groupings__p_id_elternteil_1": [-1, -1], + "groupings__p_id_elternteil_2": [-1, -1], + "groupings__p_id_kindergeld_empf": [-1, -1], + "groupings__p_id_erziehgeld_empf": [-1, -1], + "groupings__p_id_ehepartner": [1, 0], + "groupings__p_id_einstandspartner": [1, 0], + "groupings__p_id_betreuungsk_träger": [-1, -1], }, ), ], @@ -292,6 +317,7 @@ def test_p_id_groups(fixture, expected, request): pd.testing.assert_series_equal(df[col], pd.Series(values, name=col)) +@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @pytest.mark.parametrize( "fixture, policy_date", [("synthetic_data_couple_with_children", y) for y in range(2015, 2024)], @@ -299,7 +325,7 @@ def test_p_id_groups(fixture, expected, request): def test_default_targets(fixture, policy_date, request): environment = set_up_policy_environment(policy_date) compute_taxes_and_transfers( - data=request.getfixturevalue(fixture), - targets=DEFAULT_TARGETS, + data_tree=request.getfixturevalue(fixture), + targets_tree=DEFAULT_TARGETS, environment=environment, ) diff --git a/src/_gettsim_tests/test_time_conversion.py b/src/_gettsim_tests/test_time_conversion.py index 3556d61160..ffa26436d9 100644 --- a/src/_gettsim_tests/test_time_conversion.py +++ b/src/_gettsim_tests/test_time_conversion.py @@ -1,8 +1,9 @@ import inspect import pytest +from optree import tree_paths -from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.functions.policy_function import policy_function from _gettsim.time_conversion import ( _create_function_for_time_unit, create_time_conversion_functions, @@ -175,7 +176,7 @@ def test_should_create_functions_for_other_time_units_for_functions( self, name: str, expected: list[str] ) -> None: time_conversion_functions = create_time_conversion_functions( - {name: PolicyFunction(lambda: 1, function_name="test")}, [] + {name: policy_function(leaf_name="test")(lambda: 1)}, {} ) for expected_name in expected: @@ -201,14 +202,15 @@ def test_should_create_functions_for_other_time_units_for_functions( def test_should_create_functions_for_other_time_units_for_data_cols( self, name: str, expected: list[str] ) -> None: - time_conversion_functions = create_time_conversion_functions({}, [name]) + time_conversion_functions = create_time_conversion_functions({}, {name: None}) for expected_name in expected: assert expected_name in time_conversion_functions def test_should_not_create_functions_automatically_that_exist_already(self) -> None: time_conversion_functions = create_time_conversion_functions( - {"test1_d": PolicyFunction(lambda: 1, function_name="test1_d")}, ["test2_y"] + {"test1_d": policy_function(leaf_name="test1_d")(lambda: 1)}, + {"test2_y": None}, ) assert "test1_d" not in time_conversion_functions @@ -218,11 +220,73 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri self, ) -> None: time_conversion_functions = create_time_conversion_functions( - {"test_d": PolicyFunction(lambda: 1, function_name="test_d")}, ["test_y"] + {"test_d": policy_function(leaf_name="test_d")(lambda: 1)}, + {"test_y": None}, ) assert "test_d" in time_conversion_functions + @pytest.mark.parametrize( + "functions_tree, expected", + [ + ( + { + "module1": { + "function1_y": policy_function(leaf_name="function1_y")( + lambda: 1 + ) + } + }, + { + "module1": { + "function1_m": policy_function(leaf_name="function1_m")( + lambda: 1 + ), + "function1_w": policy_function(leaf_name="function1_w")( + lambda: 1 + ), + "function1_d": policy_function(leaf_name="function1_d")( + lambda: 1 + ), + }, + }, + ), + ( + { + "module1": { + "module2": { + "function1_y_hh": policy_function( + leaf_name="function1_y_hh" + )(lambda: 1) + } + } + }, + { + "module1": { + "module2": { + "function1_m_hh": policy_function( + leaf_name="function1_m_hh" + )(lambda: 1), + "function1_w_hh": policy_function( + leaf_name="function1_w_hh" + )(lambda: 1), + "function1_d_hh": policy_function( + leaf_name="function1_d_hh" + )(lambda: 1), + }, + }, + }, + ), + ], + ) + def test_should_return_nested_dict(self, functions_tree, expected) -> None: + time_conversion_functions = create_time_conversion_functions(functions_tree, {}) + + expected_path = tree_paths(expected) + result_path = tree_paths(time_conversion_functions) + + assert expected_path == result_path + class TestCreateFunctionForTimeUnit: def test_should_rename_parameter(self): @@ -245,7 +309,8 @@ def test_should_apply_converter(self): # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def test_should_not_create_cycle(): time_conversion_functions = create_time_conversion_functions( - {"test_d": PolicyFunction(lambda test_m: test_m, function_name="test")}, [] + {"test_d": policy_function(leaf_name="test_d")(lambda test_m: test_m)}, + {}, ) assert "test_m" not in time_conversion_functions diff --git a/src/_gettsim_tests/test_unterhalt.py b/src/_gettsim_tests/test_unterhalt.py index d64128cd55..e57311d921 100644 --- a/src/_gettsim_tests/test_unterhalt.py +++ b/src/_gettsim_tests/test_unterhalt.py @@ -8,6 +8,7 @@ data = load_policy_test_data("unterhalt") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_unterhaltsvors.py b/src/_gettsim_tests/test_unterhaltsvors.py index b98a1544e9..5eb3ecaa32 100644 --- a/src/_gettsim_tests/test_unterhaltsvors.py +++ b/src/_gettsim_tests/test_unterhaltsvors.py @@ -8,6 +8,7 @@ data = load_policy_test_data("unterhaltsvors") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_vectorization.py b/src/_gettsim_tests/test_vectorization.py index bd755a6226..d545c493f2 100644 --- a/src/_gettsim_tests/test_vectorization.py +++ b/src/_gettsim_tests/test_vectorization.py @@ -1,8 +1,10 @@ +import datetime import inspect import string import numpy import pytest +from optree import tree_flatten from _gettsim.config import USE_JAX @@ -10,7 +12,7 @@ import jax.numpy from numpy.testing import assert_array_equal -from _gettsim.functions.loader import _load_internal_functions +from _gettsim.functions.loader import load_functions_tree_for_date from _gettsim.transfers.elterngeld import ( elterngeld_anspruchsbedingungen_erfüllt, # noqa: PLC2403 elterngeld_geschwisterbonus_m, @@ -367,16 +369,20 @@ def test_unallowed_operation_wrapper(func): # ====================================================================================== -gettsim_functions = _load_internal_functions() +for year in range(1990, 2023): - -@pytest.mark.parametrize( - "func", - [policy_function.function for policy_function in gettsim_functions], -) -@pytest.mark.parametrize("backend", backends) -def test_convertible(func, backend): - make_vectorizable(func, backend=backend) + @pytest.mark.parametrize( + "func", + [ + pf.function + for pf in tree_flatten( + load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) + )[0] + ], + ) + @pytest.mark.parametrize("backend", backends) + def test_convertible(func, backend): + make_vectorizable(func, backend=backend) # ====================================================================================== diff --git a/src/_gettsim_tests/test_visualizations.py b/src/_gettsim_tests/test_visualizations.py index e012999e97..f306673bf4 100644 --- a/src/_gettsim_tests/test_visualizations.py +++ b/src/_gettsim_tests/test_visualizations.py @@ -15,6 +15,7 @@ environment = cached_set_up_policy_environment(date=2020) +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3, 4}), (5, 1, 2, {0, 1, 2, 3})], @@ -25,6 +26,7 @@ def test_kth_order_neighbors(n_nodes, node, order, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {0, 1, 2, 3}), (5, 1, None, {0, 1})], @@ -35,6 +37,7 @@ def test_node_and_ancestors(n_nodes, node, order, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3}), (5, 1, 2, {0, 1})], @@ -45,6 +48,7 @@ def test_node_and_ancestors_order(n_nodes, node, order, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {3, 4, 5}), (5, 1, None, {1, 2, 3, 4, 5})], @@ -55,6 +59,7 @@ def test_node_and_descendants(n_nodes, node, order, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {3, 4}), (5, 1, 2, {1, 2, 3})], @@ -65,6 +70,7 @@ def test_node_and_descendants_order(n_nodes, node, order, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selector, expected", [ @@ -83,6 +89,7 @@ def test_get_selected_nodes(n_nodes, selector, expected): assert nodes == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selectors, expected", [ @@ -109,26 +116,30 @@ def test_select_nodes_in_dag(n_nodes, selectors, expected): assert set(dag.nodes) == expected +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_plot_dag(): """Make sure that minimal example doesn't produce an error.""" plot_dag(environment=environment, targets=["erwachsene_alle_rentner_hh"]) +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_should_fail_if_target_is_missing(): with pytest.raises( ValueError, match="The following targets have no corresponding function" ): plot_dag( - environment=PolicyEnvironment([]), targets=["erwachsene_alle_rentner_hh"] + environment=PolicyEnvironment({}), targets=["erwachsene_alle_rentner_hh"] ) +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_one_dot_plot_dag(): """Make sure that the one dot graph example doesn't produce an error.""" selectors = "kapitaleink_brutto_y_sn" plot_dag(environment=environment, selectors=selectors) +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_10_dots_plot_dag(): """Make sure that when No.of nodes is larger than 10 or show_labels is false, the graph example doesn't produce an error and hover information works properly.""" @@ -136,6 +147,7 @@ def test_10_dots_plot_dag(): plot_dag(environment=environment, selectors=selector, orientation="h") +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_horizontal_plot_dag(): """Make sure that when we choose horizontal orientation, the graph example doesn't produce an error.""" @@ -146,6 +158,7 @@ def test_horizontal_plot_dag(): ) +@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_hover_source_code_plot_dag(): """Make sure that when hover information is source code, the graph example doesn't produce an error and works properly.""" diff --git a/src/_gettsim_tests/test_vorsorgeaufw.py b/src/_gettsim_tests/test_vorsorgeaufw.py index 84e65f21e2..11fcf3b72e 100644 --- a/src/_gettsim_tests/test_vorsorgeaufw.py +++ b/src/_gettsim_tests/test_vorsorgeaufw.py @@ -8,6 +8,7 @@ data = load_policy_test_data("vorsorgeaufw") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_wohngeld.py b/src/_gettsim_tests/test_wohngeld.py index 028193972c..37e21b7d40 100644 --- a/src/_gettsim_tests/test_wohngeld.py +++ b/src/_gettsim_tests/test_wohngeld.py @@ -8,6 +8,7 @@ data = load_policy_test_data("wohngeld") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, diff --git a/src/_gettsim_tests/test_zu_verst_eink.py b/src/_gettsim_tests/test_zu_verst_eink.py index c9002867ff..164de72a10 100644 --- a/src/_gettsim_tests/test_zu_verst_eink.py +++ b/src/_gettsim_tests/test_zu_verst_eink.py @@ -8,6 +8,7 @@ data = load_policy_test_data("zu_verst_eink") +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( ("test_data", "column"), data.parametrize_args, From e31e924419d78213e9198bf437663b6de569738c Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Sat, 22 Feb 2025 19:07:08 +0100 Subject: [PATCH 003/109] Change behaviour of namespaces so they are at the module level. (#818) The way we implemented the loading of namespaces in #780 does not quite work. We want to have them at the directory level to balance use of namespaces and reducing the amount of qualified names. Additionally, we had to change the order of the upsert operations in `combine_policy_functions_and_derived_functions`. Doesn't affect the happy path, but in case of conflicts the previous behaviour did not make sense. --------- Co-authored-by: Marvin Immesberger --- pixi.lock | 143 ++++++++++++++++++ src/_gettsim/combine_functions_in_tree.py | 34 ++--- src/_gettsim/functions/loader.py | 96 +++++------- src/_gettsim/interface.py | 8 +- src/_gettsim/shared.py | 37 +++++ src/_gettsim/time_conversion.py | 9 +- src/_gettsim_tests/test_loader.py | 19 ++- src/_gettsim_tests/test_policy_environment.py | 1 + src/_gettsim_tests/test_shared.py | 53 +++++++ 9 files changed, 312 insertions(+), 88 deletions(-) diff --git a/pixi.lock b/pixi.lock index 4fdf83c1a3..bdb100b6e0 100644 --- a/pixi.lock +++ b/pixi.lock @@ -3825,10 +3825,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/58/cc0721a1030fcbab0984beea0bf3c4610ec103f738423cdfa9c4ceb40598/jax-0.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/cb/11bb92324afb6ba678f388e10b78d6b02196bc8887eb5aa0d85ce398edf9/jaxlib-0.5.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl - pypi: . @@ -5339,6 +5344,26 @@ packages: purls: [] size: 21903 timestamp: 1694400856979 +- pypi: . + name: gettsim + version: 0.7.1.dev82+g6c6c0155.d20250222 + sha256: 468d7ee73fd31c448cd102912b902342be58fb2b7298aacca19f8f4eca97a50d + requires_dist: + - astor + - ipywidgets + - networkx + - numpy + - numpy-groupies + - openpyxl + - optree + - pandas + - plotly + - pygments + - pygraphviz + - pytest + - pyyaml + requires_python: '>=3.11' + editable: true - pypi: . name: gettsim version: 0.7.1.dev305+gb67bbac0.d20250215 @@ -6006,6 +6031,35 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 17189 timestamp: 1638811664194 +- pypi: https://files.pythonhosted.org/packages/f4/58/cc0721a1030fcbab0984beea0bf3c4610ec103f738423cdfa9c4ceb40598/jax-0.5.0-py3-none-any.whl + name: jax + version: 0.5.0 + sha256: b3907aa87ae2c340b39cdbf80c07a74550369cafcaf7398fb60ba58d167345ab + requires_dist: + - jaxlib<=0.5.0,>=0.5.0 + - ml-dtypes>=0.4.0 + - numpy>=1.25 + - numpy>=1.26.0 ; python_full_version >= '3.12' + - opt-einsum + - scipy>=1.11.1 + - jaxlib==0.5.0 ; extra == 'minimum-jaxlib' + - jaxlib==0.4.38 ; extra == 'ci' + - jaxlib<=0.5.0,>=0.5.0 ; extra == 'tpu' + - libtpu-nightly==0.1.dev20241010+nightly.cleanup ; extra == 'tpu' + - libtpu==0.0.8 ; extra == 'tpu' + - requests ; extra == 'tpu' + - jaxlib==0.5.0 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda' + - jaxlib==0.5.0 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda12' + - jaxlib==0.5.0 ; extra == 'cuda12-pip' + - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda12-pip' + - jaxlib==0.5.0 ; extra == 'cuda12-local' + - jax-cuda12-plugin==0.5.0 ; extra == 'cuda12-local' + - jaxlib==0.5.0 ; extra == 'rocm' + - jax-rocm60-plugin<=0.5.0,>=0.5.0 ; extra == 'rocm' + - kubernetes ; extra == 'k8s' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda sha256: da3880afc35042b92e0ad214beee372e41162da374dfaa8b1164db1dcee671b2 md5: f0d3c57355acf3f06d93672e57c0c1e8 @@ -6025,6 +6079,15 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1421248 timestamp: 1729336456855 +- pypi: https://files.pythonhosted.org/packages/2d/cb/11bb92324afb6ba678f388e10b78d6b02196bc8887eb5aa0d85ce398edf9/jaxlib-0.5.0-cp312-cp312-win_amd64.whl + name: jaxlib + version: 0.5.0 + sha256: 5baedbeeb60fa493c7528783254f04c6e986a2826266b198ed37e9336af2ef8c + requires_dist: + - scipy>=1.11.1 + - numpy>=1.25 + - ml-dtypes>=0.2.0 + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda sha256: 8e2dce1d39ccb4e6883444f71b7155168c0612d9d086b58616578448aeb33afe md5: 08f587f0f6505671c7715163e18b6f3a @@ -8268,6 +8331,22 @@ packages: purls: [] size: 103019089 timestamp: 1727378392081 +- pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl + name: ml-dtypes + version: 0.5.1 + sha256: 9626d0bca1fb387d5791ca36bacbba298c5ef554747b7ebeafefb4564fc83566 + requires_dist: + - numpy>=1.21 + - numpy>=1.21.2 ; python_full_version >= '3.10' + - numpy>=1.23.3 ; python_full_version >= '3.11' + - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=2.1.0 ; python_full_version >= '3.13' + - absl-py ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pylint>=2.6.0 ; extra == 'dev' + - pyink ; extra == 'dev' + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda sha256: 559c14640ce8e3f2270da6130ba50ae624f3db56176fad29a5436b2dec3fc3b2 md5: 8ca779f3f30b00181aeee820fe8b22d5 @@ -8831,6 +8910,11 @@ packages: purls: [] size: 8491156 timestamp: 1731379715927 +- pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + name: opt-einsum + version: 3.4.0 + sha256: 69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda sha256: 583cb8748a9821e301a404806da0de62e8ba01607feecf12c0ef06d8bc77077e md5: 73d0b1d98a9030bdefe712648af583a0 @@ -9311,6 +9395,15 @@ packages: - tabcompleter>=1.4.0 - colorama>=0.4.6 ; platform_system == 'Windows' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + name: pdbp + version: 1.6.1 + sha256: f10bad2ee044c0e5c168cb0825abfdbdc01c50013e9755df5261b060bdd35c22 + requires_dist: + - pygments>=2.18.0 + - tabcompleter>=1.4.0 + - colorama>=0.4.6 ; sys_platform == 'win32' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e md5: 629f3203c99b32e0988910c93e77f3b6 @@ -10858,6 +10951,49 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 210974 timestamp: 1730923229667 +- pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl + name: scipy + version: 1.15.2 + sha256: e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded + requires_dist: + - numpy>=1.23.5,<2.5 + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.0,<2.1.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - sphinx>=5.0.0,<8.0.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.16.5 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - mypy==1.10.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.0.292 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + - rich-click ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' + - pydevtool ; extra == 'dev' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda sha256: d069a64edade554261672d8febf4756aeb56a6cb44bd91844eaa944e5d9f4eb9 md5: b43233a9e2f62fb94affe5607ea79473 @@ -11139,6 +11275,13 @@ packages: requires_dist: - pyreadline3 ; platform_system == 'Windows' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + name: tabcompleter + version: 1.4.0 + sha256: d744aa735b49c0a6cc2fb8fcd40077fec47425e4388301010b14e6ce3311368b + requires_dist: + - pyreadline3 ; sys_platform == 'win32' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 md5: 4759805cce2d914c38472f70bf4d8bcb diff --git a/src/_gettsim/combine_functions_in_tree.py b/src/_gettsim/combine_functions_in_tree.py index c3df12e330..ab912c457d 100644 --- a/src/_gettsim/combine_functions_in_tree.py +++ b/src/_gettsim/combine_functions_in_tree.py @@ -34,10 +34,10 @@ format_errors_and_warnings, format_list_linewise, get_names_of_arguments_without_defaults, + insert_path_and_value, partition_tree_by_reference_tree, remove_group_suffix, rename_arguments_and_add_annotations, - upsert_path_and_value, upsert_tree, ) from _gettsim.time_conversion import create_time_conversion_functions @@ -87,8 +87,8 @@ def combine_policy_functions_and_derived_functions( aggregation_type="p_id", ) current_functions_tree = upsert_tree( - base=environment.functions_tree, - to_upsert=aggregate_by_p_id_functions, + base=aggregate_by_p_id_functions, + to_upsert=environment.functions_tree, ) # Create functions for different time units @@ -97,8 +97,8 @@ def combine_policy_functions_and_derived_functions( data_tree=data_tree, ) current_functions_tree = upsert_tree( - base=current_functions_tree, - to_upsert=time_conversion_functions, + base=time_conversion_functions, + to_upsert=current_functions_tree, ) # Create aggregation functions @@ -109,15 +109,15 @@ def combine_policy_functions_and_derived_functions( aggregations_tree_provided_by_env=environment.aggregation_specs_tree, ) current_functions_tree = upsert_tree( - base=current_functions_tree, - to_upsert=aggregate_by_group_functions, + base=aggregate_by_group_functions, + to_upsert=current_functions_tree, ) # Create groupings groupings = create_groupings() current_functions_tree = upsert_tree( - base=current_functions_tree, - to_upsert=groupings, + base=groupings, + to_upsert=current_functions_tree, ) _fail_if_targets_not_in_functions_tree(current_functions_tree, targets_tree) @@ -200,10 +200,10 @@ def _create_aggregation_functions( annotations=annotations, ) - out_tree = upsert_path_and_value( + out_tree = insert_path_and_value( base=out_tree, - path_to_upsert=tree_path, - value_to_upsert=derived_func, + path_to_insert=tree_path, + value_to_insert=derived_func, ) return out_tree @@ -269,10 +269,10 @@ def _create_derived_aggregations_tree( ) and tree_path not in optree.tree_paths(aggregation_source_tree) if aggregation_specs_needed: - derived_aggregations_tree = upsert_path_and_value( + derived_aggregations_tree = insert_path_and_value( base=derived_aggregations_tree, - path_to_upsert=tree_path, - value_to_upsert=AggregateByGroupSpec( + path_to_insert=tree_path, + value_to_insert=AggregateByGroupSpec( aggr="sum", source_col=remove_group_suffix(leaf_name), ), @@ -310,9 +310,9 @@ def _get_potential_aggregation_function_names_from_function_arguments( name=name, namespace=tree_path[:-1], ) - current_tree = upsert_path_and_value( + current_tree = insert_path_and_value( base=current_tree, - path_to_upsert=path_of_function_argument, + path_to_insert=path_of_function_argument, ) return current_tree diff --git a/src/_gettsim/functions/loader.py b/src/_gettsim/functions/loader.py index 06b842a0eb..c8a93f3053 100644 --- a/src/_gettsim/functions/loader.py +++ b/src/_gettsim/functions/loader.py @@ -13,7 +13,11 @@ ) from _gettsim.functions.policy_function import PolicyFunction from _gettsim.gettsim_typing import NestedAggregationSpecDict, NestedFunctionDict -from _gettsim.shared import upsert_path_and_value +from _gettsim.shared import ( + create_tree_from_path_and_value, + insert_path_and_value, + merge_trees, +) def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: @@ -22,7 +26,9 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: This function takes the list of root paths and searches for all modules containing PolicyFunctions. Then it loads all PolicyFunctions that are active at the given date - and parses them into the functions tree. + and constructs the functions tree. + + Namespaces are at the directory level. Parameters ---------- @@ -40,22 +46,19 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: functions_tree = {} for path in paths_to_policy_functions: - active_functions_dict = get_active_policy_functions_from_module( + new_functions_tree = get_active_policy_functions_tree_from_module( path=path, date=date, package_root=RESOURCE_DIR ) - tree_path = _convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR) - - functions_tree = upsert_path_and_value( - base=functions_tree, - path_to_upsert=tree_path, - value_to_upsert=active_functions_dict, + functions_tree = merge_trees( + left=functions_tree, + right=new_functions_tree, ) return functions_tree -def get_active_policy_functions_from_module( +def get_active_policy_functions_tree_from_module( path: Path, package_root: Path, date: datetime.date, @@ -73,7 +76,7 @@ def get_active_policy_functions_from_module( Returns ------- - A dictionary of active PolicyFunctions with their leaf names as keys. + A nested dictionary of active PolicyFunctions with their leaf names as keys. """ module = _load_module(path, package_root) module_name = _convert_path_to_importable_module_name(path, package_root) @@ -88,7 +91,13 @@ def get_active_policy_functions_from_module( policy_functions, module_name ) - return {func.leaf_name: func for func in policy_functions if func.is_active(date)} + active_policy_functions = { + func.leaf_name: func for func in policy_functions if func.is_active(date) + } + return create_tree_from_path_and_value( + path=_convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR), + value=active_policy_functions, + ) def _fail_if_multiple_policy_functions_are_active_at_the_same_time( @@ -213,41 +222,36 @@ def _convert_path_to_importable_module_name(path: Path, package_root: Path) -> s def _convert_path_to_tree_path(path: Path, package_root: Path) -> tuple[str, ...]: """ - Convert a system path to a tree path. + Convert the path from the package root to a tree path. - The system path is the path to the python module on the user's system. The tree path - are the branches of the tree. + Removes the package root and module name from the path. Parameters ---------- path: - The path to the python module on the user's system. + The path to a Python module. package_root: - The root of the package that contains the functions. + GETTSIM's package root. Returns ------- - The tree path. + The tree path, to be used as a key in the functions tree. Examples -------- - >>> _convert_path_to_tree_path(RESOURCE_DIR / "taxes" / "dir" - / "functions.py") - ("dir", "functions") + >>> _convert_path_to_tree_path( + ... path=RESOURCE_DIR / "taxes" / "dir" / "functions.py", + ... package_root=RESOURCE_DIR, + ... ) + ("dir") """ - # TODO(@MImmesberger): Simplify after changing directory structure + parts = path.relative_to(package_root.parent / "_gettsim").parts + + # TODO(@MImmesberger): Remove the subsequent line after changing directory structure # https://github.com/iza-institute-of-labor-economics/gettsim/pull/805 - # tree_path = path.relative_to(package_root.parent).parts[1:] # noqa: ERA001 - tree_path = tuple( - path.relative_to(package_root.parent) - .with_suffix("") - .as_posix() - .removeprefix("_gettsim/") - .removeprefix("taxes/") - .removeprefix("transfers/") - .split("/") - ) - return _simplify_tree_path_when_module_name_equals_dir_name(tree_path) + parts = parts[1:] if parts[0] in {"taxes", "transfers"} else parts + + return parts[:-1] def load_aggregation_specs_tree() -> NestedAggregationSpecDict: @@ -276,10 +280,10 @@ def load_aggregation_specs_tree() -> NestedAggregationSpecDict: tree_path = _convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR) - aggregation_specs_tree = upsert_path_and_value( + aggregation_specs_tree = insert_path_and_value( base=aggregation_specs_tree, - path_to_upsert=tree_path, - value_to_upsert=aggregation_specs, + path_to_insert=tree_path, + value_to_insert=aggregation_specs, ) return aggregation_specs_tree @@ -328,23 +332,3 @@ def _load_aggregation_specs_from_module( ) return out - - -def _simplify_tree_path_when_module_name_equals_dir_name( - tree_path: tuple[str, ...], -) -> tuple[str, ...]: - """ - Shorten path when a module lives a directory named the same way. - - This is done to avoid namespaces like arbeitslosengeld__arbeitslosengeld if the - file structure looks like: - arbeitslosengeld - | |- arbeitslosengeld.py - | |- ... - """ - if len(tree_path) >= 2: - out = tree_path[:-1] if tree_path[-1] == tree_path[-2] else tree_path - else: - out = tree_path - - return out diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 659368759a..c1f5aea7a2 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -38,10 +38,10 @@ format_errors_and_warnings, format_list_linewise, get_names_of_arguments_without_defaults, + merge_trees, partition_tree_by_reference_tree, qualified_name_reducer, qualified_name_splitter, - upsert_tree, ) @@ -146,9 +146,9 @@ def compute_taxes_and_transfers( results = tax_transfer_function(input_data_tree) if debug: - results = upsert_tree( - base=results, - to_upsert=data_tree_with_correct_types, + results = merge_trees( + left=results, + right=data_tree_with_correct_types, ) return results diff --git a/src/_gettsim/shared.py b/src/_gettsim/shared.py index f74737368c..3f3533e93b 100644 --- a/src/_gettsim/shared.py +++ b/src/_gettsim/shared.py @@ -5,6 +5,7 @@ import flatten_dict import numpy +import optree from dags.signature import rename_arguments from flatten_dict.reducers import make_reducer from flatten_dict.splitters import make_splitter @@ -65,6 +66,28 @@ def create_tree_from_path_and_value(path: tuple[str], value: Any = None) -> dict return nested_dict +def merge_trees(left: dict, right: dict) -> dict: + """ + Merge two pytrees, raising an error if a path is present in both trees. + + Parameters + ---------- + left + The first tree to be merged. + right + The second tree to be merged. + + Returns + ------- + The merged pytree. + """ + + if set(optree.tree_paths(left)) & set(optree.tree_paths(right)): + raise ValueError("Conflicting paths in trees to merge.") + + return upsert_tree(base=left, to_upsert=right) + + def upsert_tree(base: dict, to_upsert: dict) -> dict: """ Upsert a tree into another tree for trees defined by dictionaries only. @@ -116,6 +139,20 @@ def upsert_path_and_value( return upsert_tree(base=base, to_upsert=to_upsert) +def insert_path_and_value( + base: dict[str, Any], path_to_insert: tuple[str], value_to_insert: Any = None +) -> dict[str, Any]: + """Insert a path and value into a tree. + + The path is a list of strings that represent the keys in the nested dictionary. The + path must not exist in base. + """ + to_insert = create_tree_from_path_and_value( + path=path_to_insert, value=value_to_insert + ) + return merge_trees(left=base, right=to_insert) + + def partition_tree_by_reference_tree( tree_to_partition: NestedFunctionDict | NestedDataDict, reference_tree: NestedFunctionDict | NestedDataDict, diff --git a/src/_gettsim/time_conversion.py b/src/_gettsim/time_conversion.py index 7dc606ad8d..668ba4c6ea 100644 --- a/src/_gettsim/time_conversion.py +++ b/src/_gettsim/time_conversion.py @@ -12,6 +12,7 @@ from _gettsim.functions.policy_function import PolicyFunction from _gettsim.gettsim_typing import NestedDataDict, NestedFunctionDict from _gettsim.shared import ( + insert_path_and_value, rename_arguments_and_add_annotations, upsert_path_and_value, ) @@ -284,10 +285,10 @@ def create_time_conversion_functions( if new_path in optree.tree_paths(converted_functions) + data_tree_paths: continue else: - converted_functions = upsert_path_and_value( + converted_functions = insert_path_and_value( base=converted_functions, - path_to_upsert=new_path, - value_to_upsert=der_func, + path_to_insert=new_path, + value_to_insert=der_func, ) # Create time-conversions for data columns @@ -302,6 +303,8 @@ def create_time_conversion_functions( if new_path in optree.tree_paths(converted_functions) + data_tree_paths: continue else: + # Upsert because derived functions based on data should overwrite + # derived functions based on other functions. converted_functions = upsert_path_and_value( base=converted_functions, path_to_upsert=new_path, diff --git a/src/_gettsim_tests/test_loader.py b/src/_gettsim_tests/test_loader.py index 0fbd3db9e7..e10267cdfe 100644 --- a/src/_gettsim_tests/test_loader.py +++ b/src/_gettsim_tests/test_loader.py @@ -7,9 +7,9 @@ from _gettsim.config import PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR from _gettsim.functions.loader import ( + _convert_path_to_tree_path, _find_python_files_recursively, _load_module, - _simplify_tree_path_when_module_name_equals_dir_name, ) from _gettsim.functions.policy_function import ( _vectorize_func, @@ -18,6 +18,7 @@ if TYPE_CHECKING: from collections.abc import Callable + from pathlib import Path def test_load_path(): @@ -59,18 +60,20 @@ def test_vectorize_func(vectorized_function: Callable) -> None: @pytest.mark.parametrize( ( "path", + "package_root", "expected_tree_path", ), [ - (("foo", "bar", "bar"), ("foo", "bar")), - (("foo", "bar", "baz"), ("foo", "bar", "baz")), - (("foo", "bar", "bar", "bar"), ("foo", "bar", "bar")), - (("foo", "bar", "bar", "baz"), ("foo", "bar", "bar", "baz")), + (RESOURCE_DIR / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), + (RESOURCE_DIR / "foo" / "spam" / "bar.py", RESOURCE_DIR, ("foo", "spam")), + (RESOURCE_DIR / "taxes" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), + (RESOURCE_DIR / "transfers" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), ], ) -def test_remove_recurring_branch_names( - path: str, expected_tree_path: tuple[str, ...] +def test_convert_path_to_tree_path( + path: Path, package_root: Path, expected_tree_path: tuple[str, ...] ) -> None: assert ( - _simplify_tree_path_when_module_name_equals_dir_name(path) == expected_tree_path + _convert_path_to_tree_path(path=path, package_root=package_root) + == expected_tree_path ) diff --git a/src/_gettsim_tests/test_policy_environment.py b/src/_gettsim_tests/test_policy_environment.py index 74484a8317..27bf9d248e 100644 --- a/src/_gettsim_tests/test_policy_environment.py +++ b/src/_gettsim_tests/test_policy_environment.py @@ -105,6 +105,7 @@ def test_access_different_date_jahresanfang(): assert params["foo_jahresanfang"] == 2020 +@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( "tree, last_day, function_name_last_day, function_name_next_day", [ diff --git a/src/_gettsim_tests/test_shared.py b/src/_gettsim_tests/test_shared.py index 170ca023df..e449bb2a4d 100644 --- a/src/_gettsim_tests/test_shared.py +++ b/src/_gettsim_tests/test_shared.py @@ -4,6 +4,8 @@ from _gettsim.shared import ( create_tree_from_path_and_value, + insert_path_and_value, + merge_trees, partition_tree_by_reference_tree, upsert_path_and_value, upsert_tree, @@ -31,6 +33,33 @@ def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): assert result == expected +@pytest.mark.parametrize( + "base, path_to_insert, value_to_insert, expected", + [ + ({}, ("a",), 1, {"a": 1}), + ({"a": 1}, ("b",), 2, {"a": 1, "b": 2}), + ], +) +def test_insert_path_and_value(base, path_to_insert, value_to_insert, expected): + result = insert_path_and_value( + base=base, path_to_insert=path_to_insert, value_to_insert=value_to_insert + ) + assert result == expected + + +@pytest.mark.parametrize( + "base, path_to_insert, value_to_insert", + [ + ({"a": 1}, ("a",), 2), + ], +) +def test_insert_path_and_value_invalid(base, path_to_insert, value_to_insert): + with pytest.raises(ValueError, match="Conflicting paths in trees to merge."): + insert_path_and_value( + base=base, path_to_insert=path_to_insert, value_to_insert=value_to_insert + ) + + @pytest.mark.parametrize( "paths, expected", [ @@ -43,6 +72,30 @@ def test_create_tree_from_path_and_value(paths, expected): assert create_tree_from_path_and_value(paths) == expected +@pytest.mark.parametrize( + "left, right, expected", + [ + ({}, {"a": 1}, {"a": 1}), + ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), + ({"a": {"b": 1}}, {"a": {"c": 2}}, {"a": {"b": 1, "c": 2}}), + ({"a": {"b": 1}}, {"a": 3}, {"a": 3}), + ({"a": 3}, {"a": {"b": 1}}, {"a": {"b": 1}}), + ({"a": SampleDataClass(a=1)}, {}, {"a": SampleDataClass(a=1)}), + ], +) +def test_merge_trees_valid(left, right, expected): + assert merge_trees(left=left, right=right) == expected + + +@pytest.mark.parametrize( + "left, right", + [({"a": 1}, {"a": 2}), ({"a": 1}, {"a": 1}), ({"a": {"b": 1}}, {"a": {"b": 5}})], +) +def test_merge_trees_invalid(left, right): + with pytest.raises(ValueError, match="Conflicting paths in trees to merge."): + merge_trees(left=left, right=right) + + @pytest.mark.parametrize( "base_dict, update_dict, expected", [ From fd2d6963219c4199ea2ced2dd684cabbfe3bf271 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Thu, 19 Dec 2024 18:36:45 +0100 Subject: [PATCH 004/109] Commit to create PR. --- src/_gettsim/transfers/wohngeld.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_gettsim/transfers/wohngeld.py b/src/_gettsim/transfers/wohngeld.py index d9af5e195f..25d00692b4 100644 --- a/src/_gettsim/transfers/wohngeld.py +++ b/src/_gettsim/transfers/wohngeld.py @@ -29,7 +29,7 @@ } -def wohngeld_m_wthh( +def betrag_m_wthh( wohngeld_anspruchshöhe_m_wthh: float, erwachsene_alle_rentner_hh: bool, wohngeld_kinderzuschl_vorrang_wthh: bool, From 8ee530824783ac808f830159345b4841a13374dc Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Tue, 11 Mar 2025 11:34:30 +0100 Subject: [PATCH 005/109] Revert "Commit to create PR." This reverts commit fd2d6963219c4199ea2ced2dd684cabbfe3bf271. --- src/_gettsim/transfers/wohngeld.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_gettsim/transfers/wohngeld.py b/src/_gettsim/transfers/wohngeld.py index 25d00692b4..d9af5e195f 100644 --- a/src/_gettsim/transfers/wohngeld.py +++ b/src/_gettsim/transfers/wohngeld.py @@ -29,7 +29,7 @@ } -def betrag_m_wthh( +def wohngeld_m_wthh( wohngeld_anspruchshöhe_m_wthh: float, erwachsene_alle_rentner_hh: bool, wohngeld_kinderzuschl_vorrang_wthh: bool, From b2bdda03c31ffd0be87d2421003dd7d6d700590e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 11 Mar 2025 14:07:46 +0100 Subject: [PATCH 006/109] Use qualified name for rounding keys in params files (#824) ### What problem do you want to solve? Uses the qualified name instead of the leaf name to look for rounding specs in the params file. This is a temporary solution until we have tackled #823. --- src/_gettsim/interface.py | 10 +++++----- src/_gettsim_tests/test_rounding.py | 22 +++++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index c1f5aea7a2..509b4cb4aa 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -373,7 +373,7 @@ def _add_rounding_to_function( """ func = copy.deepcopy(input_function) nice_name = ".".join(path) - leaf_name = path[-1] + qualified_name = "__".join(path) if input_function.params_key_for_rounding: params_key = func.params_key_for_rounding @@ -381,20 +381,20 @@ def _add_rounding_to_function( if not ( params_key in params and "rounding" in params[params_key] - and leaf_name in params[params_key]["rounding"] + and qualified_name in params[params_key]["rounding"] ): raise KeyError( KeyErrorMessage( f""" Rounding specifications for function {nice_name} are expected in the parameter dictionary at:\n - [{params_key!r}]['rounding'][{leaf_name!r}].\n + [{params_key!r}]['rounding'][{qualified_name!r}].\n These nested keys do not exist. If this function should not be rounded, remove the respective decorator. """ ) ) - rounding_spec = params[params_key]["rounding"][leaf_name] + rounding_spec = params[params_key]["rounding"][qualified_name] # Check if expected parameters are present in rounding specifications. if not ("base" in rounding_spec and "direction" in rounding_spec): raise KeyError( @@ -402,7 +402,7 @@ def _add_rounding_to_function( "Both 'base' and 'direction' are expected as rounding " "parameters in the parameter dictionary. \n " "At least one of them is missing at:\n" - f"[{params_key!r}]['rounding'][{leaf_name!r}]." + f"[{params_key!r}]['rounding'][{qualified_name!r}]." ) ) # Add rounding. diff --git a/src/_gettsim_tests/test_rounding.py b/src/_gettsim_tests/test_rounding.py index deb0b72b57..6188e60338 100644 --- a/src/_gettsim_tests/test_rounding.py +++ b/src/_gettsim_tests/test_rounding.py @@ -114,12 +114,14 @@ def test_rounding(base, direction, to_add_after_rounding, input_values, exp_outp def test_func(income): return income - data = {"groupings": {"p_id": pd.Series([1, 2])}} - data["income"] = pd.Series(input_values) + data = { + "groupings": {"p_id": pd.Series([1, 2])}, + "namespace": {"income": pd.Series(input_values)}, + } rounding_specs = { "params_key_test": { "rounding": { - "test_func": { + "namespace__test_func": { "base": base, "direction": direction, } @@ -128,17 +130,23 @@ def test_func(income): } if to_add_after_rounding: - rounding_specs["params_key_test"]["rounding"]["test_func"][ + rounding_specs["params_key_test"]["rounding"]["namespace__test_func"][ "to_add_after_rounding" ] = to_add_after_rounding - environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) + environment = PolicyEnvironment( + {"namespace": {"test_func": test_func}}, rounding_specs + ) calc_result = compute_taxes_and_transfers( - data_tree=data, environment=environment, targets_tree={"test_func": None} + data_tree=data, + environment=environment, + targets_tree={"namespace": {"test_func": None}}, ) assert_series_equal( - pd.Series(calc_result["test_func"]), pd.Series(exp_output), check_names=False + pd.Series(calc_result["namespace"]["test_func"]), + pd.Series(exp_output), + check_names=False, ) From dab7a6667c543c21ff76190faa9e4ce7cb23c2e7 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sun, 23 Mar 2025 16:02:43 +0100 Subject: [PATCH 007/109] Namespaces: Renamings (#805) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? This PR provides the necessary renamings of taxes and transfers functions for #804. ToDo: - [x] Create new directory structure - [x] Rename all function arguments - [x] Set namespace of basic input variables - [x] Update `pyproject.toml` to reflect new file structure - [x] Make sure tests run (#841) - [x] `kinderfreibetragempfänger` $\rightarrow$ `kinderfreibetragsempfänger` - [x] Link issue #842 in relevant docstrings --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Hans-Martin von Gaudecker --- .gitignore | 1 + docs/conf.py | 4 +- docs/geps/gep-01.md | 57 +- docs/geps/gep-03.md | 10 +- docs/geps/gep-04.md | 143 +- docs/geps/gep-05.md | 43 +- docs/gettsim_developer/hh_concepts.md | 90 +- docs/gettsim_objects/input_variables.md | 310 +- docs/gettsim_objects/means_testing.md | 4 +- docs/gettsim_objects/variables_out.md | 36 +- .../calculating_elterngeld.ipynb | 40 +- ...ferent_ways_to_load_policy_functions.ipynb | 34 +- .../visualizing_the_system.ipynb | 94 +- docs/rtd_environment.yml | 4 +- docs/tutorials/advanced_usage.ipynb | 94 +- docs/tutorials/basic_usage.ipynb | 16 +- docs/tutorials/debugging.ipynb | 14 +- docs/tutorials/parameters.ipynb | 38 +- docs/tutorials/policy_functions.ipynb | 106 +- pixi.lock | 11740 ++++++++-------- pyproject.toml | 42 +- src/_gettsim/aggregation.py | 4 +- src/_gettsim/combine_functions.py | 690 + src/_gettsim/combine_functions_in_tree.py | 682 - src/_gettsim/config.py | 284 +- src/_gettsim/demographic_vars.py | 332 - src/_gettsim/function_types/__init__.py | 15 + .../function_types/derived_function.py | 94 + .../function_types/group_by_function.py | 49 + .../policy_function.py | 0 .../functions/all_functions_for_docs.py | 40 - src/_gettsim/functions/derived_function.py | 51 - src/_gettsim/gettsim_typing.py | 154 - src/_gettsim/groupings.py | 245 - src/_gettsim/interface.py | 571 +- src/_gettsim/{functions => }/loader.py | 67 +- src/_gettsim/parameters/eink_st.yaml | 26 +- src/_gettsim/parameters/eink_st_abzuege.yaml | 8 +- src/_gettsim/parameters/elterngeld.yaml | 8 +- src/_gettsim/parameters/erwerbsm_rente.yaml | 4 +- src/_gettsim/parameters/erziehungsgeld.yaml | 10 +- src/_gettsim/parameters/ges_rente.yaml | 38 +- src/_gettsim/parameters/grunds_im_alter.yaml | 2 +- .../parameters/kinderzuschl_eink.yaml | 6 +- src/_gettsim/parameters/lohnst.yaml | 20 +- src/_gettsim/parameters/sozialv_beitr.yaml | 68 +- src/_gettsim/parameters/unterhaltsvors.yaml | 4 +- src/_gettsim/parameters/wohngeld.yaml | 14 +- src/_gettsim/policy_environment.py | 53 +- src/_gettsim/shared.py | 195 +- .../arbeitsl_v.py | 381 - .../beitr_bemess_grenzen.py | 72 - .../eink_grenzen.py | 501 - .../ges_krankenv.py | 989 -- .../ges_pflegev.py | 787 -- .../ges_rentenv.py | 323 - src/_gettsim/synthetic.py | 196 +- .../synthetic_data/bedarfsgemeinschaften.yaml | 6 +- src/_gettsim/taxes/abgelt_st.py | 47 - src/_gettsim/taxes/eink_st.py | 261 - .../einkommensteuer}/__init__.py | 0 .../abgeltungssteuer}/__init__.py | 0 .../abgeltungssteuer/abgeltungssteuer.py | 60 + .../abz\303\274ge/__init__.py" | 0 .../abz\303\274ge/abz\303\274ge.py" | 56 + .../abz\303\274ge/alleinerziehend.py" | 67 + .../abz\303\274ge/altersfreibetrag.py" | 128 + .../pauschbetrag_behinderung.py" | 37 + .../abz\303\274ge/sonderausgaben.py" | 132 + .../abz\303\274ge/vorsorgeaufwendungen.py" | 400 + .../taxes/einkommensteuer/einkommen.py | 165 + .../taxes/einkommensteuer/einkommensteuer.py | 269 + .../aus_kapitalverm\303\266gen/__init__.py" | 0 .../aus_kapitalverm\303\266gen.py" | 29 + .../__init__.py" | 0 ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 58 + .../taxes/einkommensteuer/group_by_ids.py | 60 + .../taxes/einkommensteuer/kinderfreibetrag.py | 101 + .../zu_versteuerndes_einkommen.py | 55 + src/_gettsim/taxes/familie/familie.py | 157 + .../taxes/household_characteristics.py | 36 + .../taxes/individual_characteristics.py | 78 + src/_gettsim/taxes/lohnst.py | 451 - .../lohnsteuer}/__init__.py | 0 src/_gettsim/taxes/lohnsteuer/einkommen.py | 265 + src/_gettsim/taxes/lohnsteuer/lohnsteuer.py | 259 + src/_gettsim/taxes/soli_st.py | 131 - .../solidarit\303\244tszuschlag/__init__.py" | 0 .../solidarit\303\244tszuschlag.py" | 123 + .../taxes/sozialversicherung/__init__.py | 0 .../arbeitslosen/__init__.py | 0 .../arbeitslosen/arbeitslosengeld.py | 232 + .../arbeitslosen/beitrag/__init__.py | 0 .../arbeitslosen/beitrag/beitrag.py | 285 + .../sozialversicherung/beitr\303\244ge.py" | 87 + .../geringf\303\274gig_besch\303\244ftigt.py" | 110 + .../sozialversicherung/kranken/__init__.py | 0 .../kranken/beitrag/__init__.py | 0 .../kranken/beitrag/beitrag.py | 411 + .../kranken/beitrag/beitragssatz.py | 450 + .../kranken/beitrag/einkommen.py | 195 + .../taxes/sozialversicherung/midijob.py | 381 + .../sozialversicherung/pflege/__init__.py | 0 .../pflege/beitrag/__init__.py | 0 .../pflege/beitrag/beitrag.py | 647 + .../pflege/beitrag/beitragssatz.py | 161 + .../regul\303\244r_besch\303\244ftigt.py" | 63 + .../sozialversicherung/rente/__init__.py | 0 .../rente/alter_bei_renteneintritt.py | 42 + .../rente/altersrente/__init__.py | 0 .../rente/altersrente/altersgrenzen.py | 474 + .../rente/altersrente/altersrente.py | 631 + .../besonders_langj\303\244hrig/__init__.py" | 0 .../besonders_langj\303\244hrig.py" | 113 + .../f\303\274r_frauen/__init__.py" | 0 .../f\303\274r_frauen/f\303\274r_frauen.py" | 295 + .../langj\303\244hrig/__init__.py" | 0 .../langj\303\244hrig/langj\303\244hrig.py" | 281 + .../altersrente/regelaltersrente/__init__.py | 0 .../regelaltersrente/regelaltersrente.py | 96 + .../wegen_arbeitslosigkeit/__init__.py | 0 .../wegen_arbeitslosigkeit.py | 511 + .../rente/beitrag/__init__.py | 0 .../rente/beitrag/beitrag.py | 339 + .../rente/erwerbsminderung/__init__.py | 0 .../erwerbsminderung/erwerbsminderung.py | 405 + .../rente/grundrente/__init__.py | 0 .../rente/grundrente/grundrente.py | 398 + .../sozialversicherung/rente/wartezeit.py | 253 + src/_gettsim/taxes/zu_verst_eink/eink.py | 259 - .../taxes/zu_verst_eink/freibetraege.py | 426 - .../taxes/zu_verst_eink/vorsorgeaufw.py | 353 - .../taxes/zu_verst_eink/zu_verst_eink.py | 146 - src/_gettsim/time_conversion.py | 79 +- src/_gettsim/transfers/arbeitsl_geld.py | 217 - .../arbeitsl_geld_2/arbeitsl_geld_2.py | 85 - .../arbeitsl_geld_2/arbeitsl_geld_2_eink.py | 306 - .../transfers/arbeitsl_geld_2/bedarf.py | 290 - .../arbeitsl_geld_2/kindergelduebertrag.py | 196 - .../transfers/arbeitsl_geld_2/kost_unterk.py | 215 - .../transfers/arbeitslosengeld_2/__init__.py | 0 .../arbeitslosengeld_2/arbeitslosengeld_2.py | 94 + .../transfers/arbeitslosengeld_2/einkommen.py | 318 + .../freibetr\303\244ge_verm\303\266gen.py" | 201 + .../arbeitslosengeld_2/group_by_ids.py | 198 + .../kindergeld\303\274bertrag.py" | 198 + .../arbeitslosengeld_2/regelbedarf.py | 508 + .../benefit_checks/benefit_checks.py | 97 - .../benefit_checks/vermoegens_checks.py | 264 - src/_gettsim/transfers/elterngeld.py | 584 - src/_gettsim/transfers/elterngeld/__init__.py | 0 .../transfers/elterngeld/einkommen.py | 182 + .../transfers/elterngeld/elterngeld.py | 377 + .../transfers/elterngeld/geschwisterbonus.py | 104 + src/_gettsim/transfers/erwerbsm_rente.py | 336 - src/_gettsim/transfers/erziehungsgeld.py | 435 - .../transfers/erziehungsgeld/__init__.py | 0 .../erziehungsgeld/erziehungsgeld.py | 445 + src/_gettsim/transfers/grundrente.py | 375 - src/_gettsim/transfers/grunds_im_alter.py | 402 - .../transfers/grundsicherung/__init__.py | 0 .../grundsicherung/im_alter/__init__.py | 0 .../grundsicherung/im_alter/einkommen.py | 265 + .../grundsicherung/im_alter/im_alter.py | 164 + src/_gettsim/transfers/kinderbonus.py | 24 - .../transfers/kinderbonus/__init__.py | 0 .../transfers/kinderbonus/kinderbonus.py | 30 + src/_gettsim/transfers/kindergeld.py | 206 - src/_gettsim/transfers/kindergeld/__init__.py | 0 .../transfers/kindergeld/kindergeld.py | 206 + .../transfers/kinderzuschl/kinderzuschl.py | 165 - .../kinderzuschl/kinderzuschl_eink.py | 304 - .../transfers/kinderzuschl/kost_unterk.py | 75 - .../transfers/kinderzuschlag/__init__.py | 0 .../transfers/kinderzuschlag/einkommen.py | 355 + .../kinderzuschlag/kinderzuschlag.py | 284 + src/_gettsim/transfers/rente.py | 2600 ---- src/_gettsim/transfers/unterhalt.py | 31 - src/_gettsim/transfers/unterhalt/__init__.py | 0 src/_gettsim/transfers/unterhalt/unterhalt.py | 35 + src/_gettsim/transfers/unterhaltsvors.py | 425 - .../transfers/unterhaltsvorschuss/__init__.py | 0 .../unterhaltsvorschuss.py | 432 + .../vorrangpr\303\274fungen/__init__.py" | 0 .../vorrangpr\303\274fungen.py" | 106 + src/_gettsim/transfers/wohngeld.py | 1127 -- src/_gettsim/transfers/wohngeld/__init__.py | 0 src/_gettsim/transfers/wohngeld/einkommen.py | 427 + .../transfers/wohngeld/group_by_ids.py | 38 + src/_gettsim/transfers/wohngeld/miete.py | 267 + .../transfers/wohngeld/voraussetzungen.py | 255 + src/_gettsim/transfers/wohngeld/wohngeld.py | 210 + src/_gettsim/typing.py | 185 + src/_gettsim/vectorization.py | 2 +- src/_gettsim/visualization.py | 14 +- src/_gettsim_tests/_policy_test_utils.py | 232 +- src/_gettsim_tests/test_aggregate_by_p_id.py | 42 +- src/_gettsim_tests/test_arbeitsl_geld.py | 49 - src/_gettsim_tests/test_arbeitsl_geld_2.py | 37 - src/_gettsim_tests/test_arbeitslosengeld.py | 28 + src/_gettsim_tests/test_arbeitslosengeld_2.py | 28 + src/_gettsim_tests/test_benefit_checks.py | 34 - src/_gettsim_tests/test_combine_functions.py | 619 + .../test_combine_functions_in_tree.py | 259 - .../2007/eltern_getrennt_1_kind.yaml | 123 +- .../2007/eltern_verheiratet_1_kind.yaml | 115 +- .../2007/eltern_verheiratet_2_kinder.yaml | 133 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 145 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 89 +- .../2024/eltern_getrennt_1_kind.yaml | 93 +- .../2024/eltern_verheiratet_1_kind.yaml | 89 +- .../2024/eltern_verheiratet_2_kinder.yaml | 101 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 101 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 89 +- .../test_data/arbeitsl_geld/2010/hh_id_6.yaml | 61 - .../test_data/arbeitsl_geld/2011/hh_id_7.yaml | 44 - .../test_data/arbeitsl_geld/2015/hh_id_5.yaml | 61 - .../test_data/arbeitsl_geld/2019/hh_id_1.yaml | 44 - .../test_data/arbeitsl_geld/2019/hh_id_2.yaml | 44 - .../test_data/arbeitsl_geld/2019/hh_id_3.yaml | 61 - .../test_data/arbeitsl_geld/2019/hh_id_4.yaml | 61 - .../arbeitsl_geld_2/2005/hh_id_8.yaml | 94 - ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 82 - ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 79 - ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 102 - ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 102 - .../2005/regelsatz_multiple_children.yaml | 94 - .../2005/regelsatz_no_adult_in_bg.yaml | 38 - .../arbeitsl_geld_2/2006/hh_id_4.yaml | 272 - .../arbeitsl_geld_2/2009/hh_id_3.yaml | 137 - .../2009/kind_20_jahre_in_bg.yaml | 137 - .../arbeitsl_geld_2/2013/hh_id_12.yaml | 137 - .../arbeitsl_geld_2/2013/hh_id_13.yaml | 137 - .../arbeitsl_geld_2/2013/hh_id_14.yaml | 142 - .../arbeitsl_geld_2/2013/hh_id_15.yaml | 139 - .../arbeitsl_geld_2/2013/hh_id_2.yaml | 137 - .../arbeitsl_geld_2/2018/hh_id_9.yaml | 266 - .../arbeitsl_geld_2/2019/hh_id_6.yaml | 180 - .../2019/test_age_limits_13_14.yaml | 180 - .../2019/test_age_limits_5_6.yaml | 180 - .../arbeitsl_geld_2/2022/hh_id_10.yaml | 182 - .../arbeitsl_geld_2/2022/hh_id_11.yaml | 182 - .../arbeitsl_geld_2/2023-01/hh_id_16.yaml | 94 - .../arbeitsl_geld_2/2023-01/hh_id_19.yaml | 186 - .../arbeitsl_geld_2/2023-01/hh_id_25.yaml | 186 - .../2023-01/test_age_limits_17_18.yaml | 225 - .../2023-01/test_family_high_wealth.yaml | 182 - .../test_family_wealth_below_threshold.yaml | 182 - .../arbeitsl_geld_2/2023-07/hh_id_20.yaml | 95 - .../arbeitsl_geld_2/2023-07/hh_id_21.yaml | 182 - .../arbeitsl_geld_2/2023-07/hh_id_22.yaml | 182 - .../arbeitsl_geld_2/2023-07/hh_id_23.yaml | 186 - .../arbeitsl_geld_2/2023-07/hh_id_24.yaml | 95 - .../alleinerz_kein_kindergelduebertrag.yaml | 186 - .../alleinerz_teilw_kindergelduebertrag.yaml | 200 - .../alleinerz_voller_kindergelduebertrag.yaml | 200 - .../2024/kost_unterk_one_bg_in_hh.yaml | 93 - ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 85 - ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 82 - ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 106 - ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 106 - .../2024/regelsatz_multiple_children.yaml | 100 - .../2024/regelsatz_no_adult_in_bg.yaml | 38 - .../2024/single_no_income.yaml | 102 - .../2024/skip_single_no_children.yaml | 102 - .../arbeitslosengeld/2010/hh_id_6.yaml | 58 + .../arbeitslosengeld/2011/hh_id_7.yaml | 41 + .../arbeitslosengeld/2015/skip_hh_id_5.yaml | 59 + .../arbeitslosengeld/2019/hh_id_1.yaml | 41 + .../arbeitslosengeld/2019/hh_id_2.yaml | 41 + .../arbeitslosengeld/2019/hh_id_3.yaml | 58 + .../arbeitslosengeld/2019/hh_id_4.yaml | 58 + .../arbeitslosengeld_2/2005/hh_id_8.yaml | 96 + ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 82 + ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 79 + ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 102 + ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 102 + .../2005/regelsatz_multiple_children.yaml | 94 + .../2005/regelsatz_no_adult_in_bg.yaml | 38 + .../arbeitslosengeld_2/2006/hh_id_4.yaml | 278 + .../arbeitslosengeld_2/2009/hh_id_3.yaml | 140 + .../2009/kind_20_jahre_in_bg.yaml | 140 + .../arbeitslosengeld_2/2013/hh_id_12.yaml | 140 + .../arbeitslosengeld_2/2013/hh_id_13.yaml | 140 + .../arbeitslosengeld_2/2013/hh_id_14.yaml | 145 + .../arbeitslosengeld_2/2013/hh_id_15.yaml | 142 + .../arbeitslosengeld_2/2013/hh_id_2.yaml | 140 + .../arbeitslosengeld_2/2018/hh_id_9.yaml | 272 + .../arbeitslosengeld_2/2019/hh_id_6.yaml | 184 + .../2019/test_age_limits_13_14.yaml | 184 + .../2019/test_age_limits_5_6.yaml | 184 + .../arbeitslosengeld_2/2022/hh_id_10.yaml | 186 + .../arbeitslosengeld_2/2022/hh_id_11.yaml | 186 + .../arbeitslosengeld_2/2023-01/hh_id_16.yaml | 96 + .../arbeitslosengeld_2/2023-01/hh_id_19.yaml | 190 + .../arbeitslosengeld_2/2023-01/hh_id_25.yaml | 190 + .../2023-01/test_age_limits_17_18.yaml | 230 + .../2023-01/test_family_high_wealth.yaml | 186 + .../test_family_wealth_below_threshold.yaml | 186 + .../arbeitslosengeld_2/2023-07/hh_id_20.yaml | 96 + .../arbeitslosengeld_2/2023-07/hh_id_21.yaml | 186 + .../arbeitslosengeld_2/2023-07/hh_id_22.yaml | 186 + .../arbeitslosengeld_2/2023-07/hh_id_23.yaml | 190 + .../arbeitslosengeld_2/2023-07/hh_id_24.yaml | 96 + .../alleinerz_kein_kindergelduebertrag.yaml | 190 + .../alleinerz_teilw_kindergelduebertrag.yaml | 203 + .../alleinerz_voller_kindergelduebertrag.yaml | 204 + .../2024/kost_unterk_multiple_bg_in_hh.yaml | 108 +- .../2024/kost_unterk_one_bg_in_hh.yaml | 93 + ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 85 + ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 82 + ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 106 + ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 106 + .../2024/regelsatz_multiple_children.yaml | 100 + .../2024/regelsatz_no_adult_in_bg.yaml | 38 + .../2024/single_no_income.yaml | 104 + .../2024/skip_single_no_children.yaml | 106 + .../benefit_checks/2006/hh_id_4.yaml | 152 - .../benefit_checks/2009/hh_id_3.yaml | 92 - .../benefit_checks/2013/hh_id_2.yaml | 80 - .../benefit_checks/2014/hh_id_7.yaml | 80 - .../benefit_checks/2016/hh_id_1.yaml | 104 - .../benefit_checks/2019/hh_id_6.yaml | 83 - .../benefit_checks/2019/hh_id_8.yaml | 56 - .../2024/pflegev_anz_kinder_bis_24.yaml | 30 +- .../test_data/eink_st/2009/hh_id_4.yaml | 32 - .../test_data/eink_st/2012/hh_id_3.yaml | 32 - .../test_data/eink_st/2015/hh_id_2.yaml | 56 - .../eink_st/2018/couple_1_child.yaml | 64 - .../test_data/eink_st/2018/hh_id_1.yaml | 32 - .../test_data/eink_st/2018/hh_id_5.yaml | 32 - .../test_data/eink_st/2023/hh_id_6.yaml | 32 - .../eink_st/2024/couple_1_child.yaml | 64 - .../2024/couple_above_soli_freibetrag.yaml | 47 - .../2024/single_above_soli_freibetrag.yaml | 32 - .../2024/single_below_soli_freibetrag.yaml | 32 - .../einkommensteuer/2009/hh_id_4.yaml | 32 + .../einkommensteuer/2012/hh_id_3.yaml | 32 + .../einkommensteuer/2015/hh_id_2.yaml | 56 + .../einkommensteuer/2018/couple_1_child.yaml | 64 + .../einkommensteuer/2018/hh_id_1.yaml | 32 + .../einkommensteuer/2018/hh_id_5.yaml | 32 + .../einkommensteuer/2023/hh_id_6.yaml | 32 + .../einkommensteuer/2024/couple_1_child.yaml | 64 + .../2024/couple_above_soli_freibetrag.yaml | 47 + .../2024/single_above_soli_freibetrag.yaml | 32 + .../2024/single_below_soli_freibetrag.yaml | 32 + .../test_data/elterngeld/2017/hh_id_2.yaml | 90 +- .../test_data/elterngeld/2018/hh_id_1.yaml | 80 +- .../test_data/elterngeld/2018/hh_id_2.yaml | 108 +- .../test_data/elterngeld/2018/hh_id_3.yaml | 108 +- .../test_data/elterngeld/2018/hh_id_4.yaml | 108 +- .../test_data/elterngeld/2018/hh_id_6.yaml | 80 +- .../test_data/elterngeld/2019/hh_id_1.yaml | 108 +- .../test_data/elterngeld/2019/hh_id_3.yaml | 140 +- .../test_data/elterngeld/2019/hh_id_5.yaml | 110 +- .../test_data/elterngeld/2019/hh_id_6.yaml | 144 +- .../test_data/elterngeld/2019/hh_id_7.yaml | 142 +- .../test_data/elterngeld/2019/hh_id_8.yaml | 164 +- .../2024-04-01/taxable_income_low.yaml | 128 +- .../2024-04-01/taxable_income_too_high.yaml | 128 +- .../2024/income_during_elterngeld.yaml | 148 +- .../elterngeld/2024/maximum_elterngeld.yaml | 110 +- .../elterngeld/2024/minimum_elterngeld.yaml | 108 +- .../2024/net_income_approximation.yaml | 48 +- .../2024/net_income_before_birth_1000.yaml | 140 +- .../2024/net_income_before_birth_790.yaml | 140 +- .../2024/replacement_rate_decrease.yaml | 120 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 47 - ...erwerbsgemindert_birthyear_1940_claim.yaml | 23 - ...t_birthyear_1940_preliminary_products.yaml | 47 - ...erwerbsgemindert_birthyear_1941_claim.yaml | 23 - ...t_birthyear_1941_preliminary_products.yaml | 47 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 47 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 47 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1943_claim.yaml | 23 - ...t_birthyear_1943_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1945_claim.yaml | 23 - ...t_birthyear_1945_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1950_claim.yaml | 23 - ...t_birthyear_1950_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1960_claim.yaml | 23 - ...t_birthyear_1960_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...werbsgemindert_birthyear_1990_2_claim.yaml | 23 - ...birthyear_1990_2_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1960_claim.yaml | 23 - ...t_birthyear_1960_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1990_claim.yaml | 23 - ...t_birthyear_1990_preliminary_products.yaml | 49 - .../2018/langj_versicherte_wartezeit_1.yaml | 27 - .../2018/langj_versicherte_wartezeit_2.yaml | 27 - .../2018/langj_versicherte_wartezeit_3.yaml | 27 - .../2018/langj_versicherte_wartezeit_4.yaml | 27 - .../2018/langj_versicherte_wartezeit_5.yaml | 27 - ...erwerbsgemindert_birthyear_1995_claim.yaml | 23 - ...t_birthyear_1995_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1960_claim.yaml | 23 - ...t_birthyear_1960_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 23 - ...t_birthyear_1980_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1990_claim.yaml | 23 - ...t_birthyear_1990_preliminary_products.yaml | 49 - ...werbsgemindert_birthyear_2000_2_claim.yaml | 23 - ...birthyear_2000_2_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_2000_claim.yaml | 23 - ...t_birthyear_2000_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1957_claim.yaml | 23 - ...t_birthyear_1957_preliminary_products.yaml | 49 - ...werbsgemindert_birthyear_1970_2_claim.yaml | 23 - ...birthyear_1970_2_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1970_claim.yaml | 23 - ...t_birthyear_1970_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1995_claim.yaml | 23 - ...t_birthyear_1995_preliminary_products.yaml | 49 - ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 48 + ...erwerbsgemindert_birthyear_1940_claim.yaml | 24 + ...t_birthyear_1940_preliminary_products.yaml | 48 + ...erwerbsgemindert_birthyear_1941_claim.yaml | 24 + ...t_birthyear_1941_preliminary_products.yaml | 48 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 48 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 48 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1943_claim.yaml | 24 + ...t_birthyear_1943_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1945_claim.yaml | 24 + ...t_birthyear_1945_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1950_claim.yaml | 24 + ...t_birthyear_1950_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1960_claim.yaml | 24 + ...t_birthyear_1960_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...werbsgemindert_birthyear_1990_2_claim.yaml | 24 + ...birthyear_1990_2_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1960_claim.yaml | 24 + ...t_birthyear_1960_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1990_claim.yaml | 24 + ...t_birthyear_1990_preliminary_products.yaml | 50 + .../2018/langj_versicherte_wartezeit_1.yaml | 27 + .../2018/langj_versicherte_wartezeit_2.yaml | 27 + .../2018/langj_versicherte_wartezeit_3.yaml | 27 + .../2018/langj_versicherte_wartezeit_4.yaml | 27 + .../2018/langj_versicherte_wartezeit_5.yaml | 27 + ...erwerbsgemindert_birthyear_1995_claim.yaml | 24 + ...t_birthyear_1995_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1960_claim.yaml | 24 + ...t_birthyear_1960_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 24 + ...t_birthyear_1980_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1990_claim.yaml | 24 + ...t_birthyear_1990_preliminary_products.yaml | 50 + ...werbsgemindert_birthyear_2000_2_claim.yaml | 24 + ...birthyear_2000_2_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_2000_claim.yaml | 24 + ...t_birthyear_2000_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1957_claim.yaml | 24 + ...t_birthyear_1957_preliminary_products.yaml | 50 + ...werbsgemindert_birthyear_1970_2_claim.yaml | 24 + ...birthyear_1970_2_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1970_claim.yaml | 24 + ...t_birthyear_1970_preliminary_products.yaml | 50 + ...erwerbsgemindert_birthyear_1995_claim.yaml | 24 + ...t_birthyear_1995_preliminary_products.yaml | 50 + .../2005/alleinerz_one_child_budgetsatz.yaml | 83 +- ...inerz_one_child_regelsatz_high_income.yaml | 89 +- ...einerz_one_child_regelsatz_low_income.yaml | 81 +- ...ried_one_child_budgetsatz_high_income.yaml | 113 +- ...rried_one_child_budgetsatz_low_income.yaml | 113 +- .../2005/married_one_child_regelsatz.yaml | 113 +- ..._budgetsatz_and_regelsatz_high_income.yaml | 135 +- ...n_budgetsatz_and_regelsatz_low_income.yaml | 145 +- .../2007/born_after_abolishment.yaml | 79 +- ..._budgetsatz_and_regelsatz_high_income.yaml | 135 +- ...n_budgetsatz_and_regelsatz_low_income.yaml | 135 +- .../favorability_check/2010/hh_id_4.yaml | 78 - .../favorability_check/2012/hh_id_2.yaml | 36 - .../favorability_check/2016/hh_id_1.yaml | 64 - .../favorability_check/skip_2019/hh_id_5.yaml | 64 - .../2008/hh_id_1.yaml | 393 - .../2019/hh_id_1.yaml | 485 +- .../2019/hh_id_2.yaml | 485 +- .../2019/hh_id_3.yaml | 230 +- .../2019/hh_id_4.yaml | 230 +- .../2019/hh_id_5.yaml | 230 +- .../2019/hh_id_6.yaml | 232 +- .../2019/hh_id_7.yaml | 232 +- .../2019/hh_id_8.yaml | 230 +- .../2016/einkommen_unter_grenze.yaml | 38 +- .../2016/einkommen_\303\274ber_grenze.yaml" | 38 +- .../2018/hohes_einkommen.yaml | 42 +- .../2018/kein_einkommen.yaml | 42 +- .../2018/mittleres_einkommen.yaml | 42 +- .../2018/niedriges_einkommen.yaml | 42 +- .../2021/hohes_einkommen.yaml | 42 +- .../2021/kein_einkommen.yaml | 42 +- .../2021/mittleres_einkommen.yaml | 42 +- .../2021/niedriges_einkommen.yaml | 42 +- .../2023/hohes_einkommen.yaml | 32 +- .../2023/kein_einkommen.yaml | 32 +- .../2023/mittleres_einkommen.yaml | 32 +- .../2023/niedriges_einkommen.yaml | 32 +- .../1989/cohort_1936_female.yaml | 170 - .../1989/cohort_1936_male.yaml | 93 - .../1989/cohort_1953_female.yaml | 170 - .../1989/cohort_1953_male.yaml | 93 - .../1992/cohort_1936_female.yaml | 170 - .../1992/cohort_1936_male.yaml | 93 - .../1992/cohort_1937_female.yaml | 170 - .../1992/cohort_1937_male.yaml | 93 - .../1992/cohort_1938_female.yaml | 170 - .../1992/cohort_1938_male.yaml | 93 - .../1992/cohort_1939_female.yaml | 170 - .../1992/cohort_1939_male.yaml | 93 - .../1992/cohort_1940_female.yaml | 170 - .../1992/cohort_1940_male.yaml | 93 - .../1992/cohort_1941_female.yaml | 170 - .../1992/cohort_1941_male.yaml | 93 - .../1992/cohort_1942_female.yaml | 170 - .../1992/cohort_1942_male.yaml | 93 - .../1992/cohort_1943_female.yaml | 170 - .../1992/cohort_1943_male.yaml | 93 - .../1992/cohort_1944_female.yaml | 170 - .../1992/cohort_1944_male.yaml | 93 - .../1992/cohort_1945_female.yaml | 170 - .../1992/cohort_1945_male.yaml | 93 - .../1992/cohort_1946_female.yaml | 170 - .../1992/cohort_1946_male.yaml | 93 - .../1992/cohort_1947_female.yaml | 170 - .../1992/cohort_1947_male.yaml | 93 - .../1992/cohort_1948_female.yaml | 170 - .../1992/cohort_1948_male.yaml | 93 - .../1992/cohort_1949_female.yaml | 170 - .../1992/cohort_1949_male.yaml | 93 - .../1992/cohort_1950_female.yaml | 170 - .../1992/cohort_1950_male.yaml | 93 - .../1992/cohort_1951_female.yaml | 170 - .../1992/cohort_1951_male.yaml | 93 - .../1992/cohort_1952_female.yaml | 170 - .../1992/cohort_1952_male.yaml | 93 - .../1992/cohort_1953_female.yaml | 170 - .../1992/cohort_1953_male.yaml | 93 - .../1996-07-29/cohort_1936_female.yaml | 170 - .../1996-07-29/cohort_1936_male.yaml | 93 - .../1996-07-29/cohort_1937_female.yaml | 170 - .../1996-07-29/cohort_1937_male.yaml | 93 - .../1996-07-29/cohort_1938_female.yaml | 170 - .../1996-07-29/cohort_1938_male.yaml | 93 - .../1996-07-29/cohort_1939_female.yaml | 170 - .../1996-07-29/cohort_1939_male.yaml | 93 - .../1996-07-29/cohort_1940_female.yaml | 170 - .../1996-07-29/cohort_1940_male.yaml | 93 - .../1996-07-29/cohort_1941_female.yaml | 170 - .../1996-07-29/cohort_1941_male.yaml | 93 - .../1996-07-29/cohort_1942_female.yaml | 170 - .../1996-07-29/cohort_1942_male.yaml | 93 - .../1996-07-29/cohort_1943_female.yaml | 170 - .../1996-07-29/cohort_1943_male.yaml | 93 - .../1996-07-29/cohort_1944_female.yaml | 170 - .../1996-07-29/cohort_1944_male.yaml | 93 - .../1996-07-29/cohort_1945_female.yaml | 170 - .../1996-07-29/cohort_1945_male.yaml | 93 - .../1996-07-29/cohort_1946_female.yaml | 170 - .../1996-07-29/cohort_1946_male.yaml | 93 - .../1996-07-29/cohort_1947_female.yaml | 170 - .../1996-07-29/cohort_1947_male.yaml | 93 - .../1996-07-29/cohort_1948_female.yaml | 170 - .../1996-07-29/cohort_1948_male.yaml | 93 - .../1996-07-29/cohort_1949_female.yaml | 170 - .../1996-07-29/cohort_1949_male.yaml | 93 - .../1996-07-29/cohort_1950_female.yaml | 170 - .../1996-07-29/cohort_1950_male.yaml | 93 - .../1996-07-29/cohort_1951_female.yaml | 170 - .../1996-07-29/cohort_1951_male.yaml | 93 - .../1996-07-29/cohort_1952_female.yaml | 170 - .../1996-07-29/cohort_1952_male.yaml | 93 - .../1996-07-29/cohort_1953_female.yaml | 170 - .../1996-07-29/cohort_1953_male.yaml | 93 - .../2012/cohort_1936_female.yaml | 281 - .../2012/cohort_1936_male.yaml | 148 - .../2012/cohort_1937_female.yaml | 281 - .../2012/cohort_1937_male.yaml | 148 - .../2012/cohort_1938_female.yaml | 281 - .../2012/cohort_1938_male.yaml | 148 - .../2012/cohort_1939_female.yaml | 281 - .../2012/cohort_1939_male.yaml | 148 - .../2012/cohort_1940_female.yaml | 281 - .../2012/cohort_1940_male.yaml | 148 - .../2012/cohort_1941_female.yaml | 281 - .../2012/cohort_1941_male.yaml | 148 - .../2012/cohort_1942_female.yaml | 281 - .../2012/cohort_1942_male.yaml | 148 - .../2012/cohort_1943_female.yaml | 281 - .../2012/cohort_1943_male.yaml | 148 - .../2012/cohort_1944_female.yaml | 281 - .../2012/cohort_1944_male.yaml | 148 - .../2012/cohort_1945_female.yaml | 281 - .../2012/cohort_1945_male.yaml | 148 - .../2012/cohort_1946_female.yaml | 281 - .../2012/cohort_1946_male.yaml | 148 - .../2012/cohort_1947_female.yaml | 281 - .../2012/cohort_1947_male.yaml | 148 - .../2012/cohort_1948_female.yaml | 281 - .../2012/cohort_1948_male.yaml | 148 - .../2024/cohort_1946_female.yaml | 64 - .../2024/cohort_1946_male.yaml | 64 - .../2024/cohort_1947_female.yaml | 64 - .../2024/cohort_1947_male.yaml | 64 - .../2024/cohort_1948_female.yaml | 64 - .../2024/cohort_1948_male.yaml | 64 - .../2024/cohort_1949_female.yaml | 274 - .../2024/cohort_1949_male.yaml | 274 - .../2024/cohort_1950_female.yaml | 64 - .../2024/cohort_1950_male.yaml | 64 - .../2024/cohort_1951_female.yaml | 64 - .../2024/cohort_1951_male.yaml | 64 - .../2024/cohort_1952_female.yaml | 64 - .../2024/cohort_1952_male.yaml | 64 - .../2024/cohort_1953_female.yaml | 64 - .../2024/cohort_1953_male.yaml | 64 - .../2024/cohort_1954_female.yaml | 64 - .../2024/cohort_1954_male.yaml | 64 - .../2024/cohort_1955_female.yaml | 64 - .../2024/cohort_1955_male.yaml | 64 - .../2024/cohort_1956_female.yaml | 64 - .../2024/cohort_1956_male.yaml | 64 - .../2024/cohort_1957_female.yaml | 64 - .../2024/cohort_1957_male.yaml | 64 - .../2024/cohort_1958_female.yaml | 64 - .../2024/cohort_1958_male.yaml | 64 - .../2024/cohort_1959_female.yaml | 64 - .../2024/cohort_1959_male.yaml | 64 - .../2024/cohort_1960_female.yaml | 64 - .../2024/cohort_1960_male.yaml | 64 - .../2024/cohort_1961_female.yaml | 64 - .../2024/cohort_1961_male.yaml | 64 - .../2024/cohort_1962_female.yaml | 64 - .../2024/cohort_1962_male.yaml | 64 - .../2024/cohort_1963_female.yaml | 64 - .../2024/cohort_1963_male.yaml | 64 - .../2024/cohort_1964_female.yaml | 64 - .../2024/cohort_1964_male.yaml | 64 - ...nderer_elternteil_in_anderem_haushalt.yaml | 87 +- ...rziehend_anderer_elternteil_unbekannt.yaml | 65 +- .../2023/eltern_unverheiratet_2_kinder.yaml | 82 +- ...rheiratet_1_junges_1_erwachsenes_kind.yaml | 86 +- ...verheiratet_1_kind_anderer_verwandter.yaml | 94 +- ...heiratet_1_kind_bis24_1_kind_ueber_24.yaml | 100 +- ...rn_verheiratet_1_kind_grosselternteil.yaml | 94 +- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 99 +- ...eltern_verheiratet_1_kind_verheiratet.yaml | 92 +- ...eltern_verheiratet_1_kind_with_income.yaml | 83 +- .../2023/eltern_verheiratet_2_kinder.yaml | 86 +- ...rheiratet_getrennt_veranlagt_2_kinder.yaml | 82 +- ...eltern_verheiratet_kinder_verheiratet.yaml | 92 +- .../groupings/2023/eltern_viele_kinder.yaml | 95 +- .../2023/mehrere_haushalte_durchmischt.yaml | 125 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 95 +- ...haushalt_anderer_elternteil_unbekannt.yaml | 75 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 99 +- ...epartner_einmal_sgb_ii_einmal_sgb_xii.yaml | 4 +- ...er_widerspruechliche_einstandspartner.yaml | 8 +- ..._kinder_widerspruechliche_veranlagung.yaml | 8 +- ...skip_enkelkind_und_sgb_ii_grossmutter.yaml | 4 +- ...kip_enkelkind_und_sgb_xii_grossmutter.yaml | 4 +- ...ner_gemeinsam_veranlagt_unverheiratet.yaml | 8 +- ...r_widerspruechliche_veranlagungs_info.yaml | 12 +- .../verschiedene_haushalte_nur_sn_id.yaml | 8 +- ...her_teilhaushalt_mehrere_generationen.yaml | 115 +- ...licher_teilhaushalt_mehrere_haushalte.yaml | 119 +- .../grundrente/2021-07-01/hh_id_1.yaml | 77 +- .../grundrente/2021-07-01/hh_id_10.yaml | 72 +- .../grundrente/2021-07-01/hh_id_11.yaml | 78 +- .../grundrente/2021-07-01/hh_id_12.yaml | 68 +- .../grundrente/2021-07-01/hh_id_2.yaml | 77 +- .../grundrente/2021-07-01/hh_id_3.yaml | 74 +- .../grundrente/2021-07-01/hh_id_4.yaml | 81 +- .../grundrente/2021-07-01/hh_id_5.yaml | 81 +- .../grundrente/2021-07-01/hh_id_6.yaml | 74 +- .../grundrente/2021-07-01/hh_id_7.yaml | 74 +- .../grundrente/2021-07-01/hh_id_8.yaml | 76 +- .../grundrente/2021-07-01/hh_id_9.yaml | 78 +- .../2021-07-01/hh_id_1.yaml | 96 +- .../2021-07-01/hh_id_10.yaml | 86 +- .../2021-07-01/hh_id_2.yaml | 86 +- .../2021-07-01/hh_id_3.yaml | 90 +- .../2021-07-01/hh_id_4.yaml | 90 +- .../2021-07-01/hh_id_5.yaml | 98 +- .../2021-07-01/hh_id_6.yaml | 88 +- .../2021-07-01/hh_id_7.yaml | 88 +- .../2021-07-01/hh_id_8.yaml | 84 +- .../2021-07-01/hh_id_9.yaml | 88 +- .../grunds_im_alter/2017-07-01/hh_id_13.yaml | 132 - .../grunds_im_alter/2017-07-01/hh_id_16.yaml | 88 - .../grunds_im_alter/2017-07-01/hh_id_17.yaml | 88 - .../grunds_im_alter/2017-07-01/hh_id_6.yaml | 128 - .../grunds_im_alter/2018-07-01/hh_id_12.yaml | 92 - .../grunds_im_alter/2018-07-01/hh_id_20.yaml | 88 - .../grunds_im_alter/2018-07-01/hh_id_22.yaml | 88 - .../grunds_im_alter/2018-07-01/hh_id_3.yaml | 88 - .../grunds_im_alter/2020-07-01/hh_id_18.yaml | 88 - .../grunds_im_alter/2020-07-01/hh_id_19.yaml | 128 - .../grunds_im_alter/2021-07-01/hh_id_1.yaml | 128 - .../grunds_im_alter/2021-07-01/hh_id_14.yaml | 90 - .../grunds_im_alter/2021-07-01/hh_id_15.yaml | 88 - .../grunds_im_alter/2021-07-01/hh_id_2.yaml | 88 - .../grunds_im_alter/2021-07-01/hh_id_21.yaml | 130 - .../grunds_im_alter/2021-07-01/hh_id_23.yaml | 130 - .../grunds_im_alter/2021-07-01/hh_id_5.yaml | 88 - .../grunds_im_alter/2021-07-01/hh_id_7.yaml | 88 - .../grunds_im_alter/2021-07-01/hh_id_9.yaml | 130 - .../grunds_im_alter/2022-07-01/hh_id_10.yaml | 90 - .../grunds_im_alter/2022-07-01/hh_id_11.yaml | 90 - .../grunds_im_alter/2022-07-01/hh_id_24.yaml | 128 - .../grunds_im_alter/2022-07-01/hh_id_25.yaml | 132 - .../grunds_im_alter/2022-07-01/hh_id_4.yaml | 128 - .../grunds_im_alter/2022-07-01/hh_id_8.yaml | 88 - .../2017-07-01/hh_id_13.yaml | 132 + .../2017-07-01/hh_id_16.yaml | 88 + .../2017-07-01/hh_id_17.yaml | 88 + .../2017-07-01/hh_id_6.yaml | 128 + .../2018-07-01/hh_id_12.yaml | 92 + .../2018-07-01/hh_id_20.yaml | 88 + .../2018-07-01/hh_id_22.yaml | 88 + .../2018-07-01/hh_id_3.yaml | 88 + .../2020-07-01/hh_id_18.yaml | 88 + .../2020-07-01/hh_id_19.yaml | 128 + .../2021-07-01/hh_id_1.yaml | 128 + .../2021-07-01/hh_id_14.yaml | 90 + .../2021-07-01/hh_id_15.yaml | 88 + .../2021-07-01/hh_id_2.yaml | 88 + .../2021-07-01/hh_id_21.yaml | 130 + .../2021-07-01/hh_id_23.yaml | 130 + .../2021-07-01/hh_id_5.yaml | 88 + .../2021-07-01/hh_id_7.yaml | 88 + .../2021-07-01/hh_id_9.yaml | 130 + .../2022-07-01/hh_id_10.yaml | 90 + .../2022-07-01/hh_id_11.yaml | 90 + .../2022-07-01/hh_id_24.yaml | 128 + .../2022-07-01/hh_id_25.yaml | 130 + .../2022-07-01/hh_id_4.yaml | 128 + .../2022-07-01/hh_id_8.yaml | 88 + .../2010/hh_id_4.yaml" | 78 + .../2012/hh_id_2.yaml" | 36 + .../2016/hh_id_1.yaml" | 64 + .../skip_2019/hh_id_5.yaml" | 64 + .../test_data/kindergeld/2002/hh_id_2.yaml | 86 +- .../test_data/kindergeld/2010/hh_id_4.yaml | 34 +- .../test_data/kindergeld/2010/hh_id_6.yaml | 32 +- .../test_data/kindergeld/2011/hh_id_7.yaml | 92 +- .../test_data/kindergeld/2013/hh_id_8.yaml | 74 +- .../test_data/kindergeld/2019/hh_id_0.yaml | 78 +- .../test_data/kindergeld/2019/hh_id_1.yaml | 84 +- .../test_data/kindergeld/2019/hh_id_3.yaml | 34 +- .../test_data/kindergeld/2019/hh_id_5.yaml | 32 +- .../test_data/kindergeld/2020/hh_id_10.yaml | 46 +- .../test_data/kindergeld/2021/3_children.yaml | 68 +- .../test_data/kindergeld/2021/hh_id_11.yaml | 56 +- .../test_data/kindergeld/2021/hh_id_12.yaml | 36 +- .../test_data/kindergeld/2023/hh_id_13.yaml | 72 +- .../2024/alleinerz_1_child_low_unterhalt.yaml | 36 +- .../2024/alleinerz_1_child_no_unterhalt.yaml | 36 +- .../alleinerz_2_children_low_unterhalt.yaml | 46 +- .../alleinerz_2_children_no_unterhalt.yaml | 46 +- .../test_data/kinderzuschl/2013/hh_id_2.yaml | 95 - .../test_data/kinderzuschl/2016/hh_id_1.yaml | 124 - .../test_data/kinderzuschl/2016/hh_id_11.yaml | 124 - .../test_data/kinderzuschl/2016/hh_id_12.yaml | 126 - .../test_data/kinderzuschl/2016/hh_id_13.yaml | 124 - .../test_data/kinderzuschl/2016/hh_id_7.yaml | 124 - .../test_data/kinderzuschl/2017/hh_id_9.yaml | 153 - .../test_data/kinderzuschl/2019/hh_id_6.yaml | 95 - .../test_data/kinderzuschl/2020/hh_id_8.yaml | 95 - .../test_data/kinderzuschl/2021/hh_id_10.yaml | 124 - .../test_data/kinderzuschl/2023/hh_id_14.yaml | 95 - .../kinderzuschl/2023/test_child_income.yaml | 98 - .../2023/test_family_high_wealth.yaml | 97 - .../2023/test_higher_wealth_exemptions.yaml | 97 - ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 128 - .../kinderzuschl/2024/test_max_transfer.yaml | 98 - .../kinderzuschl/skip_2006/hh_id_4.yaml | 173 - .../kinderzuschl/skip_2009/hh_id_3.yaml | 92 - .../kinderzuschlag/2013/hh_id_2.yaml | 95 + .../kinderzuschlag/2016/hh_id_1.yaml | 124 + .../kinderzuschlag/2016/hh_id_11.yaml | 124 + .../kinderzuschlag/2016/hh_id_12.yaml | 126 + .../kinderzuschlag/2016/hh_id_13.yaml | 124 + .../kinderzuschlag/2016/hh_id_7.yaml | 124 + .../kinderzuschlag/2017/hh_id_9.yaml | 153 + .../kinderzuschlag/2019/hh_id_6.yaml | 95 + .../kinderzuschlag/2020/hh_id_8.yaml | 95 + .../kinderzuschlag/2021/hh_id_10.yaml | 124 + .../kinderzuschlag/2023/hh_id_14.yaml | 95 + .../2023/test_child_income.yaml | 97 + .../2023/test_family_high_wealth.yaml | 97 + .../2023/test_higher_wealth_exemptions.yaml | 97 + ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 128 + .../2024/test_max_transfer.yaml | 98 + .../kinderzuschlag/skip_2006/hh_id_4.yaml | 173 + .../kinderzuschlag/skip_2009/hh_id_3.yaml | 92 + .../test_data/lohnst/2015/hh_id_1045.yaml | 38 - .../test_data/lohnst/2015/hh_id_1051.yaml | 38 - .../test_data/lohnst/2015/hh_id_1081.yaml | 38 - .../test_data/lohnst/2015/hh_id_1134.yaml | 38 - .../test_data/lohnst/2015/hh_id_121.yaml | 38 - .../test_data/lohnst/2015/hh_id_1214.yaml | 38 - .../test_data/lohnst/2015/hh_id_1219.yaml | 38 - .../test_data/lohnst/2015/hh_id_1435.yaml | 38 - .../test_data/lohnst/2015/hh_id_1462.yaml | 38 - .../test_data/lohnst/2015/hh_id_1476.yaml | 38 - .../test_data/lohnst/2015/hh_id_1555.yaml | 38 - .../test_data/lohnst/2015/hh_id_1627.yaml | 38 - .../test_data/lohnst/2015/hh_id_1793.yaml | 38 - .../test_data/lohnst/2015/hh_id_1796.yaml | 38 - .../test_data/lohnst/2015/hh_id_1915.yaml | 38 - .../test_data/lohnst/2015/hh_id_1982.yaml | 38 - .../test_data/lohnst/2015/hh_id_2042.yaml | 38 - .../test_data/lohnst/2015/hh_id_2174.yaml | 38 - .../test_data/lohnst/2015/hh_id_2224.yaml | 38 - .../test_data/lohnst/2015/hh_id_2451.yaml | 38 - .../test_data/lohnst/2015/hh_id_2552.yaml | 38 - .../test_data/lohnst/2015/hh_id_2593.yaml | 38 - .../test_data/lohnst/2015/hh_id_2601.yaml | 38 - .../test_data/lohnst/2015/hh_id_2639.yaml | 38 - .../test_data/lohnst/2015/hh_id_2726.yaml | 38 - .../test_data/lohnst/2015/hh_id_2732.yaml | 38 - .../test_data/lohnst/2015/hh_id_2861.yaml | 38 - .../test_data/lohnst/2015/hh_id_2924.yaml | 38 - .../test_data/lohnst/2015/hh_id_400.yaml | 38 - .../test_data/lohnst/2015/hh_id_470.yaml | 38 - .../test_data/lohnst/2015/hh_id_561.yaml | 38 - .../test_data/lohnst/2015/hh_id_583.yaml | 38 - .../test_data/lohnst/2015/hh_id_72.yaml | 38 - .../test_data/lohnst/2015/hh_id_736.yaml | 38 - .../test_data/lohnst/2015/hh_id_76.yaml | 38 - .../test_data/lohnst/2015/hh_id_765.yaml | 38 - .../test_data/lohnst/2015/hh_id_769.yaml | 38 - .../test_data/lohnst/2015/hh_id_786.yaml | 38 - .../test_data/lohnst/2015/hh_id_790.yaml | 38 - .../test_data/lohnst/2015/hh_id_802.yaml | 38 - .../test_data/lohnst/2015/hh_id_830.yaml | 38 - .../test_data/lohnst/2015/hh_id_856.yaml | 38 - .../test_data/lohnst/2015/hh_id_857.yaml | 38 - .../test_data/lohnst/2015/hh_id_891.yaml | 38 - .../test_data/lohnst/2015/hh_id_925.yaml | 38 - .../test_data/lohnst/2016/hh_id_1000.yaml | 38 - .../test_data/lohnst/2016/hh_id_1086.yaml | 38 - .../test_data/lohnst/2016/hh_id_1115.yaml | 38 - .../test_data/lohnst/2016/hh_id_1133.yaml | 38 - .../test_data/lohnst/2016/hh_id_1175.yaml | 38 - .../test_data/lohnst/2016/hh_id_123.yaml | 38 - .../test_data/lohnst/2016/hh_id_1281.yaml | 38 - .../test_data/lohnst/2016/hh_id_1335.yaml | 38 - .../test_data/lohnst/2016/hh_id_1367.yaml | 38 - .../test_data/lohnst/2016/hh_id_1532.yaml | 38 - .../test_data/lohnst/2016/hh_id_1700.yaml | 38 - .../test_data/lohnst/2016/hh_id_1705.yaml | 38 - .../test_data/lohnst/2016/hh_id_1822.yaml | 38 - .../test_data/lohnst/2016/hh_id_1958.yaml | 38 - .../test_data/lohnst/2016/hh_id_2065.yaml | 38 - .../test_data/lohnst/2016/hh_id_2151.yaml | 38 - .../test_data/lohnst/2016/hh_id_2220.yaml | 38 - .../test_data/lohnst/2016/hh_id_2289.yaml | 38 - .../test_data/lohnst/2016/hh_id_2358.yaml | 38 - .../test_data/lohnst/2016/hh_id_2396.yaml | 38 - .../test_data/lohnst/2016/hh_id_2645.yaml | 38 - .../test_data/lohnst/2016/hh_id_2693.yaml | 38 - .../test_data/lohnst/2016/hh_id_2724.yaml | 38 - .../test_data/lohnst/2016/hh_id_2744.yaml | 38 - .../test_data/lohnst/2016/hh_id_2932.yaml | 38 - .../test_data/lohnst/2016/hh_id_2961.yaml | 38 - .../test_data/lohnst/2016/hh_id_307.yaml | 38 - .../test_data/lohnst/2016/hh_id_435.yaml | 38 - .../test_data/lohnst/2016/hh_id_444.yaml | 38 - .../test_data/lohnst/2016/hh_id_583.yaml | 38 - .../test_data/lohnst/2016/hh_id_699.yaml | 38 - .../test_data/lohnst/2016/hh_id_765.yaml | 38 - .../test_data/lohnst/2016/hh_id_779.yaml | 38 - .../test_data/lohnst/2016/hh_id_807.yaml | 38 - .../test_data/lohnst/2016/hh_id_821.yaml | 38 - .../test_data/lohnst/2016/hh_id_898.yaml | 38 - .../test_data/lohnst/2016/hh_id_9.yaml | 38 - .../test_data/lohnst/2016/hh_id_950.yaml | 38 - .../test_data/lohnst/2016/hh_id_965.yaml | 38 - .../test_data/lohnst/2016/hh_id_968.yaml | 38 - .../test_data/lohnst/2017/hh_id_1019.yaml | 38 - .../test_data/lohnst/2017/hh_id_1088.yaml | 38 - .../test_data/lohnst/2017/hh_id_1134.yaml | 38 - .../test_data/lohnst/2017/hh_id_1164.yaml | 38 - .../test_data/lohnst/2017/hh_id_1279.yaml | 38 - .../test_data/lohnst/2017/hh_id_146.yaml | 38 - .../test_data/lohnst/2017/hh_id_1503.yaml | 38 - .../test_data/lohnst/2017/hh_id_151.yaml | 38 - .../test_data/lohnst/2017/hh_id_1532.yaml | 38 - .../test_data/lohnst/2017/hh_id_1549.yaml | 38 - .../test_data/lohnst/2017/hh_id_1615.yaml | 38 - .../test_data/lohnst/2017/hh_id_1705.yaml | 38 - .../test_data/lohnst/2017/hh_id_1788.yaml | 38 - .../test_data/lohnst/2017/hh_id_1841.yaml | 38 - .../test_data/lohnst/2017/hh_id_1866.yaml | 38 - .../test_data/lohnst/2017/hh_id_1878.yaml | 38 - .../test_data/lohnst/2017/hh_id_1923.yaml | 38 - .../test_data/lohnst/2017/hh_id_1945.yaml | 38 - .../test_data/lohnst/2017/hh_id_2005.yaml | 38 - .../test_data/lohnst/2017/hh_id_2151.yaml | 38 - .../test_data/lohnst/2017/hh_id_2177.yaml | 38 - .../test_data/lohnst/2017/hh_id_2226.yaml | 38 - .../test_data/lohnst/2017/hh_id_2293.yaml | 38 - .../test_data/lohnst/2017/hh_id_2512.yaml | 38 - .../test_data/lohnst/2017/hh_id_266.yaml | 38 - .../test_data/lohnst/2017/hh_id_2677.yaml | 38 - .../test_data/lohnst/2017/hh_id_2729.yaml | 38 - .../test_data/lohnst/2017/hh_id_2881.yaml | 38 - .../test_data/lohnst/2017/hh_id_2918.yaml | 38 - .../test_data/lohnst/2017/hh_id_2934.yaml | 38 - .../test_data/lohnst/2017/hh_id_2956.yaml | 38 - .../test_data/lohnst/2017/hh_id_2974.yaml | 38 - .../test_data/lohnst/2017/hh_id_2991.yaml | 38 - .../test_data/lohnst/2017/hh_id_30.yaml | 38 - .../test_data/lohnst/2017/hh_id_416.yaml | 38 - .../test_data/lohnst/2017/hh_id_455.yaml | 38 - .../test_data/lohnst/2017/hh_id_496.yaml | 38 - .../test_data/lohnst/2017/hh_id_506.yaml | 38 - .../test_data/lohnst/2017/hh_id_528.yaml | 38 - .../test_data/lohnst/2017/hh_id_568.yaml | 38 - .../test_data/lohnst/2017/hh_id_575.yaml | 38 - .../test_data/lohnst/2017/hh_id_588.yaml | 38 - .../test_data/lohnst/2017/hh_id_659.yaml | 38 - .../test_data/lohnst/2017/hh_id_743.yaml | 38 - .../test_data/lohnst/2017/hh_id_881.yaml | 38 - .../test_data/lohnst/2017/hh_id_910.yaml | 38 - .../test_data/lohnst/2017/hh_id_933.yaml | 38 - .../test_data/lohnst/2017/hh_id_996.yaml | 38 - .../test_data/lohnst/2018/hh_id_1159.yaml | 38 - .../test_data/lohnst/2018/hh_id_1213.yaml | 38 - .../test_data/lohnst/2018/hh_id_130.yaml | 38 - .../test_data/lohnst/2018/hh_id_1314.yaml | 38 - .../test_data/lohnst/2018/hh_id_152.yaml | 38 - .../test_data/lohnst/2018/hh_id_1632.yaml | 38 - .../test_data/lohnst/2018/hh_id_1727.yaml | 38 - .../test_data/lohnst/2018/hh_id_174.yaml | 38 - .../test_data/lohnst/2018/hh_id_1786.yaml | 38 - .../test_data/lohnst/2018/hh_id_1802.yaml | 38 - .../test_data/lohnst/2018/hh_id_184.yaml | 38 - .../test_data/lohnst/2018/hh_id_1935.yaml | 38 - .../test_data/lohnst/2018/hh_id_2098.yaml | 38 - .../test_data/lohnst/2018/hh_id_2156.yaml | 38 - .../test_data/lohnst/2018/hh_id_2186.yaml | 38 - .../test_data/lohnst/2018/hh_id_2395.yaml | 38 - .../test_data/lohnst/2018/hh_id_2491.yaml | 38 - .../test_data/lohnst/2018/hh_id_2575.yaml | 38 - .../test_data/lohnst/2018/hh_id_2649.yaml | 38 - .../test_data/lohnst/2018/hh_id_2720.yaml | 38 - .../test_data/lohnst/2018/hh_id_2828.yaml | 38 - .../test_data/lohnst/2018/hh_id_2904.yaml | 38 - .../test_data/lohnst/2018/hh_id_2999.yaml | 38 - .../test_data/lohnst/2018/hh_id_315.yaml | 38 - .../test_data/lohnst/2018/hh_id_375.yaml | 38 - .../test_data/lohnst/2018/hh_id_417.yaml | 38 - .../test_data/lohnst/2018/hh_id_559.yaml | 38 - .../test_data/lohnst/2018/hh_id_624.yaml | 38 - .../test_data/lohnst/2018/hh_id_791.yaml | 38 - .../test_data/lohnst/2018/hh_id_796.yaml | 38 - .../test_data/lohnst/2018/hh_id_81.yaml | 38 - .../test_data/lohnst/2018/hh_id_835.yaml | 38 - .../test_data/lohnst/2018/hh_id_851.yaml | 38 - .../test_data/lohnst/2018/hh_id_947.yaml | 38 - .../test_data/lohnst/2018/hh_id_959.yaml | 38 - .../test_data/lohnst/2018/hh_id_98.yaml | 38 - .../test_data/lohnst/2019/hh_id_1014.yaml | 38 - .../test_data/lohnst/2019/hh_id_1093.yaml | 38 - .../test_data/lohnst/2019/hh_id_1098.yaml | 38 - .../test_data/lohnst/2019/hh_id_111.yaml | 38 - .../test_data/lohnst/2019/hh_id_1180.yaml | 38 - .../test_data/lohnst/2019/hh_id_1210.yaml | 38 - .../test_data/lohnst/2019/hh_id_1354.yaml | 38 - .../test_data/lohnst/2019/hh_id_1629.yaml | 38 - .../test_data/lohnst/2019/hh_id_1695.yaml | 38 - .../test_data/lohnst/2019/hh_id_1709.yaml | 38 - .../test_data/lohnst/2019/hh_id_180.yaml | 38 - .../test_data/lohnst/2019/hh_id_1825.yaml | 38 - .../test_data/lohnst/2019/hh_id_1846.yaml | 38 - .../test_data/lohnst/2019/hh_id_2025.yaml | 38 - .../test_data/lohnst/2019/hh_id_2070.yaml | 38 - .../test_data/lohnst/2019/hh_id_2159.yaml | 38 - .../test_data/lohnst/2019/hh_id_2204.yaml | 38 - .../test_data/lohnst/2019/hh_id_2375.yaml | 38 - .../test_data/lohnst/2019/hh_id_2393.yaml | 38 - .../test_data/lohnst/2019/hh_id_2469.yaml | 38 - .../test_data/lohnst/2019/hh_id_2516.yaml | 38 - .../test_data/lohnst/2019/hh_id_265.yaml | 38 - .../test_data/lohnst/2019/hh_id_2708.yaml | 38 - .../test_data/lohnst/2019/hh_id_2729.yaml | 38 - .../test_data/lohnst/2019/hh_id_2736.yaml | 38 - .../test_data/lohnst/2019/hh_id_2760.yaml | 38 - .../test_data/lohnst/2019/hh_id_2818.yaml | 38 - .../test_data/lohnst/2019/hh_id_286.yaml | 38 - .../test_data/lohnst/2019/hh_id_2900.yaml | 38 - .../test_data/lohnst/2019/hh_id_2904.yaml | 38 - .../test_data/lohnst/2019/hh_id_2942.yaml | 38 - .../test_data/lohnst/2019/hh_id_317.yaml | 38 - .../test_data/lohnst/2019/hh_id_331.yaml | 38 - .../test_data/lohnst/2019/hh_id_396.yaml | 38 - .../test_data/lohnst/2019/hh_id_420.yaml | 38 - .../test_data/lohnst/2019/hh_id_605.yaml | 38 - .../test_data/lohnst/2019/hh_id_646.yaml | 38 - .../test_data/lohnst/2019/hh_id_65.yaml | 38 - .../test_data/lohnst/2019/hh_id_664.yaml | 38 - .../test_data/lohnst/2019/hh_id_698.yaml | 38 - .../test_data/lohnst/2019/hh_id_710.yaml | 38 - .../test_data/lohnst/2019/hh_id_715.yaml | 38 - .../test_data/lohnst/2019/hh_id_809.yaml | 38 - .../test_data/lohnst/2019/hh_id_816.yaml | 38 - .../test_data/lohnst/2019/hh_id_832.yaml | 38 - .../test_data/lohnst/2019/hh_id_879.yaml | 38 - .../test_data/lohnst/2019/hh_id_882.yaml | 38 - .../test_data/lohnst/2019/hh_id_949.yaml | 38 - .../test_data/lohnst/2019/hh_id_978.yaml | 38 - .../test_data/lohnst/2020/hh_id_1015.yaml | 38 - .../test_data/lohnst/2020/hh_id_1096.yaml | 38 - .../test_data/lohnst/2020/hh_id_1118.yaml | 38 - .../test_data/lohnst/2020/hh_id_1273.yaml | 38 - .../test_data/lohnst/2020/hh_id_13.yaml | 38 - .../test_data/lohnst/2020/hh_id_1310.yaml | 38 - .../test_data/lohnst/2020/hh_id_1378.yaml | 38 - .../test_data/lohnst/2020/hh_id_1417.yaml | 38 - .../test_data/lohnst/2020/hh_id_1468.yaml | 38 - .../test_data/lohnst/2020/hh_id_160.yaml | 38 - .../test_data/lohnst/2020/hh_id_161.yaml | 38 - .../test_data/lohnst/2020/hh_id_1705.yaml | 38 - .../test_data/lohnst/2020/hh_id_1767.yaml | 38 - .../test_data/lohnst/2020/hh_id_1775.yaml | 38 - .../test_data/lohnst/2020/hh_id_1788.yaml | 38 - .../test_data/lohnst/2020/hh_id_1790.yaml | 38 - .../test_data/lohnst/2020/hh_id_1928.yaml | 38 - .../test_data/lohnst/2020/hh_id_2106.yaml | 38 - .../test_data/lohnst/2020/hh_id_2182.yaml | 38 - .../test_data/lohnst/2020/hh_id_2184.yaml | 38 - .../test_data/lohnst/2020/hh_id_2230.yaml | 38 - .../test_data/lohnst/2020/hh_id_2320.yaml | 38 - .../test_data/lohnst/2020/hh_id_2389.yaml | 38 - .../test_data/lohnst/2020/hh_id_2439.yaml | 38 - .../test_data/lohnst/2020/hh_id_2527.yaml | 38 - .../test_data/lohnst/2020/hh_id_2562.yaml | 38 - .../test_data/lohnst/2020/hh_id_2587.yaml | 38 - .../test_data/lohnst/2020/hh_id_266.yaml | 38 - .../test_data/lohnst/2020/hh_id_2888.yaml | 38 - .../test_data/lohnst/2020/hh_id_2898.yaml | 38 - .../test_data/lohnst/2020/hh_id_2920.yaml | 38 - .../test_data/lohnst/2020/hh_id_2953.yaml | 38 - .../test_data/lohnst/2020/hh_id_2998.yaml | 38 - .../test_data/lohnst/2020/hh_id_367.yaml | 38 - .../test_data/lohnst/2020/hh_id_400.yaml | 38 - .../test_data/lohnst/2020/hh_id_409.yaml | 38 - .../test_data/lohnst/2020/hh_id_481.yaml | 38 - .../test_data/lohnst/2020/hh_id_513.yaml | 38 - .../test_data/lohnst/2020/hh_id_630.yaml | 38 - .../test_data/lohnst/2020/hh_id_648.yaml | 38 - .../test_data/lohnst/2020/hh_id_70.yaml | 38 - .../test_data/lohnst/2020/hh_id_798.yaml | 38 - .../test_data/lohnst/2020/hh_id_835.yaml | 38 - .../test_data/lohnst/2020/hh_id_901.yaml | 38 - .../test_data/lohnst/2020/hh_id_926.yaml | 38 - .../test_data/lohnst/2020/hh_id_949.yaml | 38 - .../test_data/lohnst/2021/hh_id_111.yaml | 38 - .../test_data/lohnst/2021/hh_id_1186.yaml | 38 - .../test_data/lohnst/2021/hh_id_1204.yaml | 38 - .../test_data/lohnst/2021/hh_id_1237.yaml | 38 - .../test_data/lohnst/2021/hh_id_1255.yaml | 38 - .../test_data/lohnst/2021/hh_id_1380.yaml | 38 - .../test_data/lohnst/2021/hh_id_1385.yaml | 38 - .../test_data/lohnst/2021/hh_id_1402.yaml | 38 - .../test_data/lohnst/2021/hh_id_145.yaml | 38 - .../test_data/lohnst/2021/hh_id_1538.yaml | 38 - .../test_data/lohnst/2021/hh_id_1610.yaml | 38 - .../test_data/lohnst/2021/hh_id_165.yaml | 38 - .../test_data/lohnst/2021/hh_id_1714.yaml | 38 - .../test_data/lohnst/2021/hh_id_1762.yaml | 38 - .../test_data/lohnst/2021/hh_id_1853.yaml | 38 - .../test_data/lohnst/2021/hh_id_1908.yaml | 38 - .../test_data/lohnst/2021/hh_id_1999.yaml | 38 - .../test_data/lohnst/2021/hh_id_2022.yaml | 38 - .../test_data/lohnst/2021/hh_id_2208.yaml | 38 - .../test_data/lohnst/2021/hh_id_225.yaml | 38 - .../test_data/lohnst/2021/hh_id_2258.yaml | 38 - .../test_data/lohnst/2021/hh_id_2295.yaml | 38 - .../test_data/lohnst/2021/hh_id_238.yaml | 38 - .../test_data/lohnst/2021/hh_id_2400.yaml | 38 - .../test_data/lohnst/2021/hh_id_2416.yaml | 38 - .../test_data/lohnst/2021/hh_id_2476.yaml | 38 - .../test_data/lohnst/2021/hh_id_262.yaml | 38 - .../test_data/lohnst/2021/hh_id_2766.yaml | 38 - .../test_data/lohnst/2021/hh_id_2782.yaml | 38 - .../test_data/lohnst/2021/hh_id_2836.yaml | 38 - .../test_data/lohnst/2021/hh_id_2886.yaml | 38 - .../test_data/lohnst/2021/hh_id_2945.yaml | 38 - .../test_data/lohnst/2021/hh_id_2946.yaml | 38 - .../test_data/lohnst/2021/hh_id_299.yaml | 38 - .../test_data/lohnst/2021/hh_id_318.yaml | 38 - .../test_data/lohnst/2021/hh_id_321.yaml | 38 - .../test_data/lohnst/2021/hh_id_33.yaml | 38 - .../test_data/lohnst/2021/hh_id_417.yaml | 38 - .../test_data/lohnst/2021/hh_id_479.yaml | 38 - .../test_data/lohnst/2021/hh_id_519.yaml | 38 - .../test_data/lohnst/2021/hh_id_522.yaml | 38 - .../test_data/lohnst/2021/hh_id_618.yaml | 38 - .../test_data/lohnst/2021/hh_id_620.yaml | 38 - .../test_data/lohnst/2021/hh_id_651.yaml | 38 - .../test_data/lohnst/2021/hh_id_738.yaml | 38 - .../test_data/lohnst/2021/hh_id_761.yaml | 38 - .../test_data/lohnst/2021/hh_id_788.yaml | 38 - .../test_data/lohnst/2021/hh_id_798.yaml | 38 - .../test_data/lohnst/2021/hh_id_810.yaml | 38 - .../test_data/lohnst/2021/hh_id_864.yaml | 38 - .../test_data/lohnst/2021/hh_id_867.yaml | 38 - .../test_data/lohnst/2021/hh_id_883.yaml | 38 - .../test_data/lohnst/2021/hh_id_885.yaml | 38 - .../test_data/lohnst/2021/hh_id_9.yaml | 38 - .../test_data/lohnst/2021/hh_id_946.yaml | 38 - .../test_data/lohnst/2021/hh_id_948.yaml | 38 - .../test_data/lohnst/2022/hh_id_1019.yaml | 38 - .../test_data/lohnst/2022/hh_id_1166.yaml | 38 - .../test_data/lohnst/2022/hh_id_1209.yaml | 38 - .../test_data/lohnst/2022/hh_id_1305.yaml | 38 - .../test_data/lohnst/2022/hh_id_1364.yaml | 38 - .../test_data/lohnst/2022/hh_id_1473.yaml | 38 - .../test_data/lohnst/2022/hh_id_1519.yaml | 38 - .../test_data/lohnst/2022/hh_id_1667.yaml | 38 - .../test_data/lohnst/2022/hh_id_1770.yaml | 38 - .../test_data/lohnst/2022/hh_id_1784.yaml | 38 - .../test_data/lohnst/2022/hh_id_1881.yaml | 38 - .../test_data/lohnst/2022/hh_id_1904.yaml | 38 - .../test_data/lohnst/2022/hh_id_1907.yaml | 38 - .../test_data/lohnst/2022/hh_id_1918.yaml | 38 - .../test_data/lohnst/2022/hh_id_2099.yaml | 38 - .../test_data/lohnst/2022/hh_id_2111.yaml | 38 - .../test_data/lohnst/2022/hh_id_2118.yaml | 38 - .../test_data/lohnst/2022/hh_id_2129.yaml | 38 - .../test_data/lohnst/2022/hh_id_224.yaml | 38 - .../test_data/lohnst/2022/hh_id_241.yaml | 38 - .../test_data/lohnst/2022/hh_id_2410.yaml | 38 - .../test_data/lohnst/2022/hh_id_2423.yaml | 38 - .../test_data/lohnst/2022/hh_id_2428.yaml | 38 - .../test_data/lohnst/2022/hh_id_2439.yaml | 38 - .../test_data/lohnst/2022/hh_id_2447.yaml | 38 - .../test_data/lohnst/2022/hh_id_2868.yaml | 38 - .../test_data/lohnst/2022/hh_id_2962.yaml | 38 - .../test_data/lohnst/2022/hh_id_664.yaml | 38 - .../test_data/lohnst/2022/hh_id_688.yaml | 38 - .../test_data/lohnst/2022/hh_id_720.yaml | 38 - .../test_data/lohnst/2022/hh_id_840.yaml | 38 - .../test_data/lohnst/2022/hh_id_848.yaml | 38 - .../test_data/lohnst/2022/hh_id_963.yaml | 38 - .../test_data/lohnst/2023/hh_id_1019.yaml | 38 - .../test_data/lohnst/2023/hh_id_1166.yaml | 38 - .../test_data/lohnst/2023/hh_id_1209.yaml | 38 - .../test_data/lohnst/2023/hh_id_1305.yaml | 38 - .../test_data/lohnst/2023/hh_id_1364.yaml | 38 - .../test_data/lohnst/2023/hh_id_1473.yaml | 38 - .../test_data/lohnst/2023/hh_id_1519.yaml | 38 - .../test_data/lohnst/2023/hh_id_1667.yaml | 38 - .../test_data/lohnst/2023/hh_id_1770.yaml | 38 - .../test_data/lohnst/2023/hh_id_1784.yaml | 38 - .../test_data/lohnst/2023/hh_id_1881.yaml | 38 - .../test_data/lohnst/2023/hh_id_1904.yaml | 38 - .../test_data/lohnst/2023/hh_id_1907.yaml | 38 - .../test_data/lohnst/2023/hh_id_1918.yaml | 38 - .../test_data/lohnst/2023/hh_id_2099.yaml | 38 - .../test_data/lohnst/2023/hh_id_2111.yaml | 38 - .../test_data/lohnst/2023/hh_id_2118.yaml | 38 - .../test_data/lohnst/2023/hh_id_2129.yaml | 38 - .../test_data/lohnst/2023/hh_id_224.yaml | 38 - .../test_data/lohnst/2023/hh_id_241.yaml | 38 - .../test_data/lohnst/2023/hh_id_2410.yaml | 38 - .../test_data/lohnst/2023/hh_id_2423.yaml | 38 - .../test_data/lohnst/2023/hh_id_2428.yaml | 38 - .../test_data/lohnst/2023/hh_id_2439.yaml | 38 - .../test_data/lohnst/2023/hh_id_2447.yaml | 38 - .../test_data/lohnst/2023/hh_id_2868.yaml | 38 - .../test_data/lohnst/2023/hh_id_2962.yaml | 38 - .../test_data/lohnst/2023/hh_id_664.yaml | 38 - .../test_data/lohnst/2023/hh_id_688.yaml | 38 - .../test_data/lohnst/2023/hh_id_720.yaml | 38 - .../test_data/lohnst/2023/hh_id_840.yaml | 38 - .../test_data/lohnst/2023/hh_id_848.yaml | 38 - .../test_data/lohnst/2023/hh_id_963.yaml | 38 - .../test_data/lohnsteuer/2015/hh_id_1045.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1051.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1081.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1134.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_121.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1214.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1219.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1435.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1462.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1476.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1555.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1627.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1793.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1796.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1915.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_1982.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2042.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2174.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2224.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2451.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2552.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2593.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2601.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2639.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2726.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2732.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2861.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_2924.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_400.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_470.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_561.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_583.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_72.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_736.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_76.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_765.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_769.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_786.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_790.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_802.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_830.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_856.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_857.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_891.yaml | 38 + .../test_data/lohnsteuer/2015/hh_id_925.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1000.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1086.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1115.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1133.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1175.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_123.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1281.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1335.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1367.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1532.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1700.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1705.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1822.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_1958.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2065.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2151.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2220.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2289.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2358.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2396.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2645.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2693.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2724.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2744.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2932.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_2961.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_307.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_435.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_444.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_583.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_699.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_765.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_779.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_807.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_821.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_898.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_9.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_950.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_965.yaml | 38 + .../test_data/lohnsteuer/2016/hh_id_968.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1019.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1088.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1134.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1164.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1279.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_146.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1503.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_151.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1532.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1549.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1615.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1705.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1788.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1841.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1866.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1878.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1923.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_1945.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2005.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2151.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2177.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2226.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2293.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2512.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_266.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2677.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2729.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2881.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2918.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2934.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2956.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2974.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_2991.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_30.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_416.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_455.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_496.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_506.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_528.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_568.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_575.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_588.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_659.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_743.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_881.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_910.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_933.yaml | 38 + .../test_data/lohnsteuer/2017/hh_id_996.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1159.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1213.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_130.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1314.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_152.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1632.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1727.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_174.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1786.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1802.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_184.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_1935.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2098.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2156.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2186.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2395.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2491.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2575.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2649.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2720.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2828.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2904.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_2999.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_315.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_375.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_417.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_559.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_624.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_791.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_796.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_81.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_835.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_851.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_947.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_959.yaml | 38 + .../test_data/lohnsteuer/2018/hh_id_98.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1014.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1093.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1098.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_111.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1180.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1210.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1354.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1629.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1695.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1709.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_180.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1825.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_1846.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2025.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2070.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2159.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2204.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2375.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2393.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2469.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2516.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_265.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2708.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2729.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2736.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2760.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2818.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_286.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2900.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2904.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_2942.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_317.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_331.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_396.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_420.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_605.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_646.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_65.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_664.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_698.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_710.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_715.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_809.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_816.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_832.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_879.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_882.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_949.yaml | 38 + .../test_data/lohnsteuer/2019/hh_id_978.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1015.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1096.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1118.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1273.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_13.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1310.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1378.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1417.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1468.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_160.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_161.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1705.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1767.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1775.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1788.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1790.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_1928.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2106.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2182.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2184.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2230.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2320.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2389.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2439.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2527.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2562.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2587.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_266.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2888.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2898.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2920.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2953.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_2998.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_367.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_400.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_409.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_481.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_513.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_630.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_648.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_70.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_798.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_835.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_901.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_926.yaml | 38 + .../test_data/lohnsteuer/2020/hh_id_949.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_111.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1186.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1204.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1237.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1255.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1380.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1385.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1402.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_145.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1538.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1610.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_165.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1714.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1762.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1853.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1908.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_1999.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2022.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2208.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_225.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2258.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2295.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_238.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2400.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2416.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2476.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_262.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2766.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2782.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2836.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2886.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2945.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_2946.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_299.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_318.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_321.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_33.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_417.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_479.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_519.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_522.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_618.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_620.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_651.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_738.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_761.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_788.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_798.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_810.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_864.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_867.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_883.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_885.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_9.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_946.yaml | 38 + .../test_data/lohnsteuer/2021/hh_id_948.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1019.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1166.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1209.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1305.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1364.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1473.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1519.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1667.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1770.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1784.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1881.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1904.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1907.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_1918.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2099.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2111.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2118.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2129.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_224.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_241.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2410.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2423.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2428.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2439.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2447.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2868.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_2962.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_664.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_688.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_720.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_840.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_848.yaml | 38 + .../test_data/lohnsteuer/2022/hh_id_963.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1019.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1166.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1209.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1305.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1364.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1473.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1519.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1667.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1770.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1784.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1881.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1904.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1907.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_1918.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2099.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2111.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2118.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2129.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_224.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_241.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2410.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2423.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2428.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2439.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2447.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2868.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_2962.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_664.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_688.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_720.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_840.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_848.yaml | 38 + .../test_data/lohnsteuer/2023/hh_id_963.yaml | 38 + .../2022-01-01/skip_minijobgrenze.yaml | 4 +- .../2023/skip_minijobgrenze.yaml | 4 +- .../2024/skip_minijobgrenze.yaml | 4 +- .../test_data/namespaces/module1.py | 2 +- .../test_data/namespaces/module2.py | 2 +- .../1991/cohort_1930_frauen.yaml | 64 + .../1991/cohort_1930_langj.yaml | 64 + .../1991/cohort_1930_langj_and_arbeitsl.yaml | 64 + .../1991/cohort_1930_langj_and_frauen.yaml | 64 + .../1991/cohort_1930_ohne_vorzeitig.yaml | 60 + .../1991/cohort_1930_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1937_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1938_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1939_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1940_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1941_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1942_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1943_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1944_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1945_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1946_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1947_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1948_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1949_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1950_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1951_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1952_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1953_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1954_wegen_arbeitsl.yaml | 60 + .../1991/cohort_1955_wegen_arbeitsl.yaml | 60 + .../1991/eligibility_pathways.yaml | 297 + .../1992/cohort_1930_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1937_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1938_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1939_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1940_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1941_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1942_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1943_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1944_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1945_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1946_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1947_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1948_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1949_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1950_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1951_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1952_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1953_wegen_arbeitsl.yaml | 64 + .../1992/cohort_1954_wegen_arbeitsl.yaml | 66 + .../1992/cohort_1955_wegen_arbeitsl.yaml | 66 + .../cohort_1936_wegen_arbeitsl.yaml | 64 + .../cohort_1930_wegen_arbeitsl.yaml | 68 + .../cohort_1937_wegen_arbeitsl.yaml | 68 + .../cohort_1938_wegen_arbeitsl.yaml | 68 + .../cohort_1939_wegen_arbeitsl.yaml | 68 + ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 68 + .../cohort_1940_wegen_arbeitsl.yaml | 68 + ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 68 + .../cohort_1941_wegen_arbeitsl.yaml | 68 + ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 68 + .../cohort_1942_wegen_arbeitsl.yaml | 68 + ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 68 + .../cohort_1943_wegen_arbeitsl.yaml | 68 + ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 68 + .../cohort_1944_wegen_arbeitsl.yaml | 68 + .../cohort_1945_wegen_arbeitsl.yaml | 68 + .../cohort_1946_wegen_arbeitsl.yaml | 68 + .../cohort_1947_wegen_arbeitsl.yaml | 68 + .../cohort_1948_wegen_arbeitsl.yaml | 68 + .../cohort_1949_wegen_arbeitsl.yaml | 68 + .../cohort_1950_wegen_arbeitsl.yaml | 68 + .../cohort_1951_wegen_arbeitsl.yaml | 68 + .../cohort_1952_wegen_arbeitsl.yaml | 68 + .../cohort_1953_wegen_arbeitsl.yaml | 66 + .../cohort_1954_wegen_arbeitsl.yaml | 68 + .../cohort_1955_wegen_arbeitsl.yaml | 68 + .../1997/cohort_1930_wegen_arbeitsl.yaml | 66 + ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 64 + ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 64 + .../1997/cohort_1937_wegen_arbeitsl.yaml | 66 + .../1997/cohort_1938_wegen_arbeitsl.yaml | 66 + .../1997/cohort_1939_wegen_arbeitsl.yaml | 66 + ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 66 + .../1997/cohort_1940_wegen_arbeitsl.yaml | 66 + ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 66 + .../1997/cohort_1941_wegen_arbeitsl.yaml | 66 + ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 66 + .../1997/cohort_1942_wegen_arbeitsl.yaml | 66 + ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 66 + ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 66 + .../cohort_1930_wegen_arbeitsl.yaml | 70 + ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 68 + ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 68 + .../cohort_1937_wegen_arbeitsl.yaml | 70 + .../cohort_1938_wegen_arbeitsl.yaml | 70 + .../cohort_1939_wegen_arbeitsl.yaml | 70 + ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 + .../cohort_1940_wegen_arbeitsl.yaml | 70 + ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 + .../cohort_1941_wegen_arbeitsl.yaml | 70 + ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 + .../cohort_1942_wegen_arbeitsl.yaml | 70 + ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 + ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 + .../cohort_1945_wegen_arbeitsl.yaml | 70 + .../cohort_1946_wegen_arbeitsl.yaml | 70 + .../cohort_1947_wegen_arbeitsl.yaml | 70 + .../cohort_1948_wegen_arbeitsl.yaml | 70 + .../cohort_1949_wegen_arbeitsl.yaml | 70 + ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 70 + .../cohort_1952_wegen_arbeitsl.yaml | 66 + .../2010-07-01/hh_id_1.yaml | 74 + .../2010-07-01/hh_id_19.yaml | 76 + .../2010-07-01/hh_id_2.yaml | 74 + .../2010-07-01/hh_id_24.yaml | 74 + .../2010-07-01/hh_id_25.yaml | 74 + .../2010-07-01/hh_id_3.yaml | 76 + .../2010-07-01/hh_id_30.yaml | 72 + .../2010-07-01/hh_id_4.yaml | 74 + .../2010-07-01/hh_id_5.yaml | 74 + .../2010-07-01/hh_id_6.yaml | 74 + .../2010-07-01/hh_id_7.yaml | 76 + .../2012-07-01/hh_id_10.yaml | 74 + .../2012-07-01/hh_id_11.yaml | 74 + .../2012-07-01/hh_id_8.yaml | 74 + .../2012-07-01/hh_id_9.yaml | 74 + .../2014-07-01/hh_id_25.yaml | 78 + .../cohort_1951_wegen_arbeitsl.yaml | 52 + .../2015-07-01/eligibility_pathways.yaml | 331 + .../2015-07-01/hh_id_12.yaml | 74 + .../2015-07-01/hh_id_13.yaml | 74 + .../2015-07-01/hh_id_14.yaml | 74 + .../2015-07-01/hh_id_15.yaml | 74 + .../2015-07-01/hh_id_16.yaml | 74 + .../2015-07-01/hh_id_17.yaml | 74 + .../2015-07-01/hh_id_18.yaml | 74 + .../2015-07-01/hh_id_19.yaml | 74 + .../2015-07-01/hh_id_25.yaml | 74 + .../2015-07-01/hh_id_26.yaml | 76 + .../2015-07-01/hh_id_27.yaml | 76 + .../2015-07-01/hh_id_28.yaml | 80 + .../2015-07-01/hh_id_29.yaml | 86 + .../2018-07-01/age_at_retirement.yaml | 32 +- ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 52 + ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 52 + ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 52 + ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 52 + .../2018-07-01/cohort_1955_vorzeitig.yaml | 56 + .../2018-07-01/cohort_1958_vorzeitig.yaml | 56 + .../2018-07-01/eligibility_pathways.yaml | 116 + .../2018-07-01/hh_id_20.yaml | 74 + .../2018-07-01/hh_id_21.yaml | 76 + .../2018-07-01/hh_id_22.yaml | 76 + .../2018-07-01/hh_id_23.yaml | 74 + .../2018-07-01/hh_id_24.yaml | 70 + .../2018-07-01/hh_id_25.yaml | 70 + .../zero_entgeltpunkte_anteil_ost.yaml | 17 + .../1989/cohort_1936_female.yaml | 170 + .../rente_anspruch/1989/cohort_1936_male.yaml | 93 + .../1989/cohort_1953_female.yaml | 170 + .../rente_anspruch/1989/cohort_1953_male.yaml | 93 + .../1992/cohort_1936_female.yaml | 170 + .../rente_anspruch/1992/cohort_1936_male.yaml | 93 + .../1992/cohort_1937_female.yaml | 170 + .../rente_anspruch/1992/cohort_1937_male.yaml | 93 + .../1992/cohort_1938_female.yaml | 170 + .../rente_anspruch/1992/cohort_1938_male.yaml | 93 + .../1992/cohort_1939_female.yaml | 170 + .../rente_anspruch/1992/cohort_1939_male.yaml | 93 + .../1992/cohort_1940_female.yaml | 170 + .../rente_anspruch/1992/cohort_1940_male.yaml | 93 + .../1992/cohort_1941_female.yaml | 170 + .../rente_anspruch/1992/cohort_1941_male.yaml | 93 + .../1992/cohort_1942_female.yaml | 170 + .../rente_anspruch/1992/cohort_1942_male.yaml | 93 + .../1992/cohort_1943_female.yaml | 170 + .../rente_anspruch/1992/cohort_1943_male.yaml | 93 + .../1992/cohort_1944_female.yaml | 170 + .../rente_anspruch/1992/cohort_1944_male.yaml | 93 + .../1992/cohort_1945_female.yaml | 170 + .../rente_anspruch/1992/cohort_1945_male.yaml | 93 + .../1992/cohort_1946_female.yaml | 170 + .../rente_anspruch/1992/cohort_1946_male.yaml | 93 + .../1992/cohort_1947_female.yaml | 170 + .../rente_anspruch/1992/cohort_1947_male.yaml | 93 + .../1992/cohort_1948_female.yaml | 170 + .../rente_anspruch/1992/cohort_1948_male.yaml | 93 + .../1992/cohort_1949_female.yaml | 170 + .../rente_anspruch/1992/cohort_1949_male.yaml | 93 + .../1992/cohort_1950_female.yaml | 170 + .../rente_anspruch/1992/cohort_1950_male.yaml | 93 + .../1992/cohort_1951_female.yaml | 170 + .../rente_anspruch/1992/cohort_1951_male.yaml | 93 + .../1992/cohort_1952_female.yaml | 170 + .../rente_anspruch/1992/cohort_1952_male.yaml | 93 + .../1992/cohort_1953_female.yaml | 170 + .../rente_anspruch/1992/cohort_1953_male.yaml | 93 + .../1996-07-29/cohort_1936_female.yaml | 170 + .../1996-07-29/cohort_1936_male.yaml | 93 + .../1996-07-29/cohort_1937_female.yaml | 170 + .../1996-07-29/cohort_1937_male.yaml | 93 + .../1996-07-29/cohort_1938_female.yaml | 170 + .../1996-07-29/cohort_1938_male.yaml | 93 + .../1996-07-29/cohort_1939_female.yaml | 170 + .../1996-07-29/cohort_1939_male.yaml | 93 + .../1996-07-29/cohort_1940_female.yaml | 170 + .../1996-07-29/cohort_1940_male.yaml | 93 + .../1996-07-29/cohort_1941_female.yaml | 170 + .../1996-07-29/cohort_1941_male.yaml | 93 + .../1996-07-29/cohort_1942_female.yaml | 170 + .../1996-07-29/cohort_1942_male.yaml | 93 + .../1996-07-29/cohort_1943_female.yaml | 170 + .../1996-07-29/cohort_1943_male.yaml | 93 + .../1996-07-29/cohort_1944_female.yaml | 170 + .../1996-07-29/cohort_1944_male.yaml | 93 + .../1996-07-29/cohort_1945_female.yaml | 170 + .../1996-07-29/cohort_1945_male.yaml | 93 + .../1996-07-29/cohort_1946_female.yaml | 170 + .../1996-07-29/cohort_1946_male.yaml | 93 + .../1996-07-29/cohort_1947_female.yaml | 170 + .../1996-07-29/cohort_1947_male.yaml | 93 + .../1996-07-29/cohort_1948_female.yaml | 170 + .../1996-07-29/cohort_1948_male.yaml | 93 + .../1996-07-29/cohort_1949_female.yaml | 170 + .../1996-07-29/cohort_1949_male.yaml | 93 + .../1996-07-29/cohort_1950_female.yaml | 170 + .../1996-07-29/cohort_1950_male.yaml | 93 + .../1996-07-29/cohort_1951_female.yaml | 170 + .../1996-07-29/cohort_1951_male.yaml | 93 + .../1996-07-29/cohort_1952_female.yaml | 170 + .../1996-07-29/cohort_1952_male.yaml | 93 + .../1996-07-29/cohort_1953_female.yaml | 170 + .../1996-07-29/cohort_1953_male.yaml | 93 + .../2012/cohort_1936_female.yaml | 281 + .../rente_anspruch/2012/cohort_1936_male.yaml | 148 + .../2012/cohort_1937_female.yaml | 281 + .../rente_anspruch/2012/cohort_1937_male.yaml | 148 + .../2012/cohort_1938_female.yaml | 281 + .../rente_anspruch/2012/cohort_1938_male.yaml | 148 + .../2012/cohort_1939_female.yaml | 281 + .../rente_anspruch/2012/cohort_1939_male.yaml | 148 + .../2012/cohort_1940_female.yaml | 281 + .../rente_anspruch/2012/cohort_1940_male.yaml | 148 + .../2012/cohort_1941_female.yaml | 281 + .../rente_anspruch/2012/cohort_1941_male.yaml | 148 + .../2012/cohort_1942_female.yaml | 281 + .../rente_anspruch/2012/cohort_1942_male.yaml | 148 + .../2012/cohort_1943_female.yaml | 281 + .../rente_anspruch/2012/cohort_1943_male.yaml | 148 + .../2012/cohort_1944_female.yaml | 281 + .../rente_anspruch/2012/cohort_1944_male.yaml | 148 + .../2012/cohort_1945_female.yaml | 281 + .../rente_anspruch/2012/cohort_1945_male.yaml | 148 + .../2012/cohort_1946_female.yaml | 281 + .../rente_anspruch/2012/cohort_1946_male.yaml | 148 + .../2012/cohort_1947_female.yaml | 281 + .../rente_anspruch/2012/cohort_1947_male.yaml | 148 + .../2012/cohort_1948_female.yaml | 281 + .../rente_anspruch/2012/cohort_1948_male.yaml | 148 + .../2024/cohort_1946_female.yaml | 64 + .../rente_anspruch/2024/cohort_1946_male.yaml | 64 + .../2024/cohort_1947_female.yaml | 64 + .../rente_anspruch/2024/cohort_1947_male.yaml | 64 + .../2024/cohort_1948_female.yaml | 64 + .../rente_anspruch/2024/cohort_1948_male.yaml | 64 + .../2024/cohort_1949_female.yaml | 274 + .../rente_anspruch/2024/cohort_1949_male.yaml | 274 + .../2024/cohort_1950_female.yaml | 64 + .../rente_anspruch/2024/cohort_1950_male.yaml | 64 + .../2024/cohort_1951_female.yaml | 64 + .../rente_anspruch/2024/cohort_1951_male.yaml | 64 + .../2024/cohort_1952_female.yaml | 64 + .../rente_anspruch/2024/cohort_1952_male.yaml | 64 + .../2024/cohort_1953_female.yaml | 64 + .../rente_anspruch/2024/cohort_1953_male.yaml | 64 + .../2024/cohort_1954_female.yaml | 64 + .../rente_anspruch/2024/cohort_1954_male.yaml | 64 + .../2024/cohort_1955_female.yaml | 64 + .../rente_anspruch/2024/cohort_1955_male.yaml | 64 + .../2024/cohort_1956_female.yaml | 64 + .../rente_anspruch/2024/cohort_1956_male.yaml | 64 + .../2024/cohort_1957_female.yaml | 64 + .../rente_anspruch/2024/cohort_1957_male.yaml | 64 + .../2024/cohort_1958_female.yaml | 64 + .../rente_anspruch/2024/cohort_1958_male.yaml | 64 + .../2024/cohort_1959_female.yaml | 64 + .../rente_anspruch/2024/cohort_1959_male.yaml | 64 + .../2024/cohort_1960_female.yaml | 64 + .../rente_anspruch/2024/cohort_1960_male.yaml | 64 + .../2024/cohort_1961_female.yaml | 64 + .../rente_anspruch/2024/cohort_1961_male.yaml | 64 + .../2024/cohort_1962_female.yaml | 64 + .../rente_anspruch/2024/cohort_1962_male.yaml | 64 + .../2024/cohort_1963_female.yaml | 64 + .../rente_anspruch/2024/cohort_1963_male.yaml | 64 + .../2024/cohort_1964_female.yaml | 64 + .../rente_anspruch/2024/cohort_1964_male.yaml | 64 + .../renten_anspr/1991/cohort_1930_frauen.yaml | 64 - .../renten_anspr/1991/cohort_1930_langj.yaml | 64 - .../1991/cohort_1930_langj_and_arbeitsl.yaml | 64 - .../1991/cohort_1930_langj_and_frauen.yaml | 64 - .../1991/cohort_1930_ohne_vorzeitig.yaml | 60 - .../1991/cohort_1930_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1937_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1938_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1939_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1940_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1941_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1942_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1943_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1944_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1945_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1946_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1947_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1948_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1949_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1950_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1951_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1952_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1953_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1954_wegen_arbeitsl.yaml | 60 - .../1991/cohort_1955_wegen_arbeitsl.yaml | 60 - .../1991/eligibility_pathways.yaml | 297 - .../1992/cohort_1930_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1937_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1938_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1939_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1940_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1941_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1942_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1943_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1944_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1945_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1946_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1947_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1948_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1949_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1950_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1951_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1952_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1953_wegen_arbeitsl.yaml | 64 - .../1992/cohort_1954_wegen_arbeitsl.yaml | 66 - .../1992/cohort_1955_wegen_arbeitsl.yaml | 66 - .../cohort_1936_wegen_arbeitsl.yaml | 64 - .../cohort_1930_wegen_arbeitsl.yaml | 68 - .../cohort_1937_wegen_arbeitsl.yaml | 68 - .../cohort_1938_wegen_arbeitsl.yaml | 68 - .../cohort_1939_wegen_arbeitsl.yaml | 68 - ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 68 - .../cohort_1940_wegen_arbeitsl.yaml | 68 - ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 68 - .../cohort_1941_wegen_arbeitsl.yaml | 68 - ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 68 - .../cohort_1942_wegen_arbeitsl.yaml | 68 - ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 68 - .../cohort_1943_wegen_arbeitsl.yaml | 68 - ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 68 - .../cohort_1944_wegen_arbeitsl.yaml | 68 - .../cohort_1945_wegen_arbeitsl.yaml | 68 - .../cohort_1946_wegen_arbeitsl.yaml | 68 - .../cohort_1947_wegen_arbeitsl.yaml | 68 - .../cohort_1948_wegen_arbeitsl.yaml | 68 - .../cohort_1949_wegen_arbeitsl.yaml | 68 - .../cohort_1950_wegen_arbeitsl.yaml | 68 - .../cohort_1951_wegen_arbeitsl.yaml | 68 - .../cohort_1952_wegen_arbeitsl.yaml | 68 - .../cohort_1953_wegen_arbeitsl.yaml | 66 - .../cohort_1954_wegen_arbeitsl.yaml | 68 - .../cohort_1955_wegen_arbeitsl.yaml | 68 - .../1997/cohort_1930_wegen_arbeitsl.yaml | 66 - ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 64 - ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 64 - .../1997/cohort_1937_wegen_arbeitsl.yaml | 66 - .../1997/cohort_1938_wegen_arbeitsl.yaml | 66 - .../1997/cohort_1939_wegen_arbeitsl.yaml | 66 - ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 66 - .../1997/cohort_1940_wegen_arbeitsl.yaml | 66 - ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 66 - .../1997/cohort_1941_wegen_arbeitsl.yaml | 66 - ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 66 - .../1997/cohort_1942_wegen_arbeitsl.yaml | 66 - ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 66 - ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 66 - .../cohort_1930_wegen_arbeitsl.yaml | 70 - ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 68 - ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 68 - .../cohort_1937_wegen_arbeitsl.yaml | 70 - .../cohort_1938_wegen_arbeitsl.yaml | 70 - .../cohort_1939_wegen_arbeitsl.yaml | 70 - ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 - .../cohort_1940_wegen_arbeitsl.yaml | 70 - ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 - .../cohort_1941_wegen_arbeitsl.yaml | 70 - ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 - .../cohort_1942_wegen_arbeitsl.yaml | 70 - ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 - ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 70 - .../cohort_1945_wegen_arbeitsl.yaml | 70 - .../cohort_1946_wegen_arbeitsl.yaml | 70 - .../cohort_1947_wegen_arbeitsl.yaml | 70 - .../cohort_1948_wegen_arbeitsl.yaml | 70 - .../cohort_1949_wegen_arbeitsl.yaml | 70 - ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 70 - .../cohort_1952_wegen_arbeitsl.yaml | 66 - .../renten_anspr/2010-07-01/hh_id_1.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_19.yaml | 76 - .../renten_anspr/2010-07-01/hh_id_2.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_24.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_25.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_3.yaml | 77 - .../renten_anspr/2010-07-01/hh_id_30.yaml | 72 - .../renten_anspr/2010-07-01/hh_id_4.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_5.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_6.yaml | 74 - .../renten_anspr/2010-07-01/hh_id_7.yaml | 77 - .../renten_anspr/2012-07-01/hh_id_10.yaml | 74 - .../renten_anspr/2012-07-01/hh_id_11.yaml | 74 - .../renten_anspr/2012-07-01/hh_id_8.yaml | 74 - .../renten_anspr/2012-07-01/hh_id_9.yaml | 74 - .../renten_anspr/2014-07-01/hh_id_25.yaml | 78 - .../cohort_1951_wegen_arbeitsl.yaml | 52 - .../2015-07-01/eligibility_pathways.yaml | 331 - .../renten_anspr/2015-07-01/hh_id_12.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_13.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_14.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_15.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_16.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_17.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_18.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_19.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_25.yaml | 74 - .../renten_anspr/2015-07-01/hh_id_26.yaml | 76 - .../renten_anspr/2015-07-01/hh_id_27.yaml | 76 - .../renten_anspr/2015-07-01/hh_id_28.yaml | 80 - .../renten_anspr/2015-07-01/hh_id_29.yaml | 86 - ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 52 - ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 52 - ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 52 - ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 52 - .../2018-07-01/cohort_1955_vorzeitig.yaml | 56 - .../2018-07-01/cohort_1958_vorzeitig.yaml | 56 - .../2018-07-01/eligibility_pathways.yaml | 116 - .../renten_anspr/2018-07-01/hh_id_20.yaml | 74 - .../renten_anspr/2018-07-01/hh_id_21.yaml | 76 - .../renten_anspr/2018-07-01/hh_id_22.yaml | 76 - .../renten_anspr/2018-07-01/hh_id_23.yaml | 74 - .../renten_anspr/2018-07-01/hh_id_24.yaml | 70 - .../renten_anspr/2018-07-01/hh_id_25.yaml | 70 - .../zero_entgeltpunkte_anteil_ost.yaml | 17 - .../test_data/soli_st/1991/hh_id_2.yaml | 24 - .../test_data/soli_st/1993/hh_id_5.yaml | 24 - .../test_data/soli_st/1996/hh_id_6.yaml | 24 - .../test_data/soli_st/1999/hh_id_4.yaml | 24 - .../test_data/soli_st/2003/hh_id_3.yaml | 24 - .../test_data/soli_st/2022/hh_id_1.yaml | 24 - .../test_data/soli_st/2023/hh_id_7.yaml | 24 - .../soli_st/2024/couple_above_threshold.yaml | 38 - .../soli_st/2024/couple_below_threshold.yaml | 35 - .../soli_st/2024/single_above_threshold.yaml | 24 - .../soli_st/2024/single_below_threshold.yaml | 24 - .../1991/hh_id_2.yaml" | 24 + .../1993/hh_id_5.yaml" | 24 + .../1996/hh_id_6.yaml" | 24 + .../1999/hh_id_4.yaml" | 24 + .../2003/hh_id_3.yaml" | 24 + .../2022/hh_id_1.yaml" | 24 + .../2023/hh_id_7.yaml" | 24 + .../2024/couple_above_threshold.yaml" | 38 + .../2024/couple_below_threshold.yaml" | 35 + .../2024/single_above_threshold.yaml" | 24 + .../2024/single_below_threshold.yaml" | 24 + ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 77 - ...eringf\303\274gig_besch\303\244ftigt.yaml" | 52 - .../regul\303\244r_besch\303\244ftigt.yaml" | 44 - .../selbst\303\244ndig_viel_einkommen.yaml" | 44 - .../selbst\303\244ndig_wenig_einkommen.yaml" | 44 - .../sozialv_beitr/2004-04-01/rentner.yaml | 32 - .../sozialv_beitr/2010/hh_id_10.yaml | 44 - .../sozialv_beitr/2010/hh_id_11.yaml | 44 - .../sozialv_beitr/2010/hh_id_12.yaml | 44 - .../test_data/sozialv_beitr/2010/hh_id_7.yaml | 44 - .../test_data/sozialv_beitr/2010/hh_id_8.yaml | 44 - .../test_data/sozialv_beitr/2010/hh_id_9.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_1.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_2.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_3.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_4.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_5.yaml | 44 - .../test_data/sozialv_beitr/2018/hh_id_6.yaml | 44 - .../sozialv_beitr/2019/hh_id_23.yaml | 44 - .../sozialv_beitr/2019/hh_id_24.yaml | 44 - .../sozialv_beitr/2020/hh_id_15.yaml | 44 - .../sozialv_beitr/2020/hh_id_25.yaml | 44 - .../sozialv_beitr/2022-10/hh_id_18.yaml | 44 - .../sozialv_beitr/2022-10/hh_id_19.yaml | 44 - .../sozialv_beitr/2022-10/hh_id_20.yaml | 44 - .../sozialv_beitr/2022-10/hh_id_21.yaml | 44 - .../sozialv_beitr/2022-10/hh_id_22.yaml | 46 - .../sozialv_beitr/2022/hh_id_16.yaml | 44 - .../sozialv_beitr/2022/hh_id_17.yaml | 44 - .../sozialv_beitr/2023-07/hh_id_23.yaml | 50 - .../sozialv_beitr/2023-07/hh_id_24.yaml | 50 - .../sozialv_beitr/2023-07/hh_id_25.yaml | 50 - .../sozialv_beitr/2023-07/hh_id_26.yaml | 50 - .../sozialv_beitr/2023-07/hh_id_27.yaml | 50 - .../above_new_beitragsbemessungsgrenze.yaml | 43 - .../above_old_beitragsbemessungsgrenze.yaml | 43 - .../2024/below_beitragsbemessungsgrenze.yaml | 43 - ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 80 + ...eringf\303\274gig_besch\303\244ftigt.yaml" | 54 + .../regul\303\244r_besch\303\244ftigt.yaml" | 46 + .../selbst\303\244ndig_viel_einkommen.yaml" | 46 + .../selbst\303\244ndig_wenig_einkommen.yaml" | 46 + .../2004-04-01/rentner.yaml" | 34 + .../2010/hh_id_10.yaml" | 46 + .../2010/hh_id_11.yaml" | 46 + .../2010/hh_id_12.yaml" | 46 + .../2010/hh_id_7.yaml" | 46 + .../2010/hh_id_8.yaml" | 46 + .../2010/hh_id_9.yaml" | 46 + .../2018/hh_id_1.yaml" | 46 + .../2018/hh_id_2.yaml" | 46 + .../2018/hh_id_3.yaml" | 46 + .../2018/hh_id_4.yaml" | 46 + .../2018/hh_id_5.yaml" | 46 + .../2018/hh_id_6.yaml" | 46 + .../2019/hh_id_23.yaml" | 46 + .../2019/hh_id_24.yaml" | 46 + .../2020/hh_id_15.yaml" | 46 + .../2020/hh_id_25.yaml" | 46 + .../2022-10/hh_id_18.yaml" | 46 + .../2022-10/hh_id_19.yaml" | 46 + .../2022-10/hh_id_20.yaml" | 46 + .../2022-10/hh_id_21.yaml" | 46 + .../2022-10/hh_id_22.yaml" | 48 + .../2022/hh_id_16.yaml" | 46 + .../2022/hh_id_17.yaml" | 46 + .../2023-07/hh_id_23.yaml" | 51 + .../2023-07/hh_id_24.yaml" | 51 + .../2023-07/hh_id_25.yaml" | 51 + .../2023-07/hh_id_26.yaml" | 51 + .../2023-07/hh_id_27.yaml" | 51 + .../above_new_beitragsbemessungsgrenze.yaml" | 44 + .../above_old_beitragsbemessungsgrenze.yaml" | 44 + .../2024/below_beitragsbemessungsgrenze.yaml" | 44 + .../test_data/unterhalt/2023/hh_id_1.yaml | 20 +- .../test_data/unterhalt/2023/hh_id_2.yaml | 20 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 35 - .../anspruchshoehe_untere_altergruppe.yaml | 35 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../unterhaltsvors/2018-1/hh_id_5.yaml | 68 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../older_child_parent_with_income.yaml | 88 - .../older_child_parent_without_income.yaml | 88 - .../young_child_parent_without_income.yaml | 88 - .../unterhaltsvors/2019-8/hh_id_1.yaml | 68 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 38 - ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 - .../anspruchshoehe_untere_altergruppe.yaml | 38 - ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 - .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 35 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 35 + .../anspruchshoehe_untere_altergruppe.yaml | 35 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../unterhaltsvorschuss/2018-1/hh_id_5.yaml | 71 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../older_child_parent_with_income.yaml | 92 + .../older_child_parent_without_income.yaml | 92 + .../young_child_parent_without_income.yaml | 92 + .../unterhaltsvorschuss/2019-8/hh_id_1.yaml | 71 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + .../anspruchshoehe_mittlere_altergruppe.yaml | 38 + ...oehe_obere_altergruppe_kein_einkommen.yaml | 38 + .../anspruchshoehe_untere_altergruppe.yaml | 38 + ...kein_einkommen_ueber_einkommensgrenze.yaml | 38 + .../2006/hh_id_4.yaml" | 152 + .../2009/hh_id_3.yaml" | 92 + .../2013/hh_id_2.yaml" | 80 + .../2014/hh_id_7.yaml" | 80 + .../2016/hh_id_1.yaml" | 104 + .../2019/hh_id_6.yaml" | 83 + .../2019/hh_id_8.yaml" | 56 + .../test_data/vorsorgeaufw/2004/hh_id_11.yaml | 34 - .../test_data/vorsorgeaufw/2005/hh_id_2.yaml | 47 - .../test_data/vorsorgeaufw/2005/hh_id_5.yaml | 34 - .../test_data/vorsorgeaufw/2005/hh_id_8.yaml | 34 - .../test_data/vorsorgeaufw/2005/hh_id_9.yaml | 34 - .../test_data/vorsorgeaufw/2010/hh_id_16.yaml | 34 - .../test_data/vorsorgeaufw/2010/hh_id_3.yaml | 34 - .../test_data/vorsorgeaufw/2010/hh_id_6.yaml | 47 - .../test_data/vorsorgeaufw/2018/hh_id_15.yaml | 34 - .../test_data/vorsorgeaufw/2020/hh_id_13.yaml | 34 - .../test_data/vorsorgeaufw/2021/hh_id_12.yaml | 34 - .../test_data/vorsorgeaufw/2022/hh_id_17.yaml | 47 - .../test_data/vorsorgeaufw/2022/hh_id_18.yaml | 47 - .../test_data/vorsorgeaufw/2023/hh_id_4.yaml | 34 - .../test_data/vorsorgeaufw/2023/hh_id_7.yaml | 34 - .../vorsorgeaufwand/2004/hh_id_11.yaml | 34 + .../vorsorgeaufwand/2005/hh_id_2.yaml | 47 + .../vorsorgeaufwand/2005/hh_id_5.yaml | 34 + .../vorsorgeaufwand/2005/hh_id_8.yaml | 34 + .../vorsorgeaufwand/2005/hh_id_9.yaml | 34 + .../vorsorgeaufwand/2010/hh_id_16.yaml | 34 + .../vorsorgeaufwand/2010/hh_id_3.yaml | 34 + .../vorsorgeaufwand/2010/hh_id_6.yaml | 47 + .../vorsorgeaufwand/2018/hh_id_15.yaml | 34 + .../vorsorgeaufwand/2020/hh_id_13.yaml | 34 + .../vorsorgeaufwand/2021/hh_id_12.yaml | 34 + .../vorsorgeaufwand/2022/hh_id_17.yaml | 47 + .../vorsorgeaufwand/2022/hh_id_18.yaml | 47 + .../vorsorgeaufwand/2023/hh_id_4.yaml | 34 + .../vorsorgeaufwand/2023/hh_id_7.yaml | 34 + .../test_data/wohngeld/2006/hh_id_15.yaml | 435 +- .../test_data/wohngeld/2006/hh_id_4.yaml | 306 +- .../wohngeld/2009/vermoegen_zu_hoch.yaml | 193 +- .../test_data/wohngeld/2013/hh_id_2.yaml | 185 +- .../test_data/wohngeld/2013/hh_id_9.yaml | 185 +- .../test_data/wohngeld/2016/hh_id_1.yaml | 236 +- .../test_data/wohngeld/2018/hh_id_7.yaml | 686 +- .../test_data/wohngeld/2018/hh_id_8.yaml | 355 +- .../wohngeld/2018/vermoegen_zu_hoch.yaml | 371 +- .../test_data/wohngeld/2019/hh_id_5.yaml | 138 +- .../test_data/wohngeld/2021/hh_id_10.yaml | 150 +- .../test_data/wohngeld/2023/hh_id_11.yaml | 158 +- .../test_data/wohngeld/2023/hh_id_12.yaml | 162 +- .../test_data/wohngeld/2023/hh_id_13.yaml | 252 +- .../test_data/wohngeld/2023/hh_id_14.yaml | 391 +- .../test_data/wohngeld/2023/hh_id_16.yaml | 285 +- .../test_data/wohngeld/2023/hh_id_17.yaml | 344 +- .../wohngeld/2023/mindesteinkommen.yaml | 375 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 352 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 446 +- .../test_data/zu_verst_eink/2010/hh_id_1.yaml | 80 - .../test_data/zu_verst_eink/2010/hh_id_2.yaml | 80 - .../test_data/zu_verst_eink/2010/hh_id_3.yaml | 80 - .../test_data/zu_verst_eink/2010/hh_id_4.yaml | 80 - .../test_data/zu_verst_eink/2010/hh_id_5.yaml | 80 - .../zu_verst_eink/2015/hh_id_16.yaml | 80 - .../zu_verst_eink/2015/hh_id_17.yaml | 116 - .../zu_verst_eink/2017/hh_id_18.yaml | 116 - .../zu_verst_eink/2018/hh_id_10.yaml | 80 - .../zu_verst_eink/2018/hh_id_11.yaml | 80 - .../zu_verst_eink/2018/hh_id_12.yaml | 80 - .../test_data/zu_verst_eink/2018/hh_id_7.yaml | 80 - .../test_data/zu_verst_eink/2018/hh_id_8.yaml | 80 - .../test_data/zu_verst_eink/2018/hh_id_9.yaml | 80 - .../zu_verst_eink/2019/hh_id_13.yaml | 116 - .../zu_verst_eink/2020/hh_id_14.yaml | 188 - .../zu_verst_eink/2020/hh_id_19.yaml | 188 - .../zu_verst_eink/2020/hh_id_20.yaml | 188 - .../2010/hh_id_1.yaml | 82 + .../2010/hh_id_2.yaml | 82 + .../2010/hh_id_3.yaml | 82 + .../2010/hh_id_4.yaml | 82 + .../2010/hh_id_5.yaml | 82 + .../2015/hh_id_16.yaml | 82 + .../2015/hh_id_17.yaml | 119 + .../2017/hh_id_18.yaml | 119 + .../2018/hh_id_10.yaml | 82 + .../2018/hh_id_11.yaml | 82 + .../2018/hh_id_12.yaml | 82 + .../2018/hh_id_7.yaml | 82 + .../2018/hh_id_8.yaml | 82 + .../2018/hh_id_9.yaml | 82 + .../2019/hh_id_13.yaml | 119 + .../2020/hh_id_14.yaml | 193 + .../2020/hh_id_19.yaml | 193 + .../2020/hh_id_20.yaml | 193 + src/_gettsim_tests/test_dates_active.py | 4 +- src/_gettsim_tests/test_demographic_vars.py | 34 - src/_gettsim_tests/test_demographics.py | 28 + src/_gettsim_tests/test_docs.py | 2 +- src/_gettsim_tests/test_eink_st.py | 31 - src/_gettsim_tests/test_einkommensteuer.py | 28 + src/_gettsim_tests/test_elterngeld.py | 41 +- src/_gettsim_tests/test_erwerbsm_rente.py | 35 - .../test_erwerbsminderungsrente.py | 28 + src/_gettsim_tests/test_erziehungsgeld.py | 45 +- src/_gettsim_tests/test_favorability_check.py | 34 - .../test_full_taxes_and_transfers.py | 117 +- .../test_ges_rente_hinzuverdienst.py | 40 +- src/_gettsim_tests/test_ges_rentenalter.py | 34 - src/_gettsim_tests/test_groupings.py | 68 +- src/_gettsim_tests/test_grundrente.py | 166 +- src/_gettsim_tests/test_grunds_im_alter.py | 34 - .../test_grundsicherung_im_alter.py | 28 + .../test_g\303\274nstigerpr\303\274fungen.py" | 28 + src/_gettsim_tests/test_interface.py | 273 +- src/_gettsim_tests/test_kindergeld.py | 36 +- src/_gettsim_tests/test_kinderzuschl.py | 34 - src/_gettsim_tests/test_kinderzuschlag.py | 28 + src/_gettsim_tests/test_loader.py | 18 +- src/_gettsim_tests/test_lohnst.py | 63 - src/_gettsim_tests/test_lohnsteuer.py | 44 + src/_gettsim_tests/test_minijobgrenze.py | 42 +- src/_gettsim_tests/test_namespaces.py | 26 +- .../invalid_access_diff_date.yaml | 2 +- src/_gettsim_tests/test_policy_environment.py | 37 +- src/_gettsim_tests/test_policy_function.py | 2 +- .../test_rente_altersgrenzen.py | 28 + src/_gettsim_tests/test_rente_anspruch.py | 28 + src/_gettsim_tests/test_renten_anspr.py | 34 - src/_gettsim_tests/test_rounding.py | 32 +- src/_gettsim_tests/test_shared.py | 109 + src/_gettsim_tests/test_soli_st.py | 34 - .../test_solidarit\303\244tszuschlag.py" | 28 + src/_gettsim_tests/test_sozialv_beitr.py | 34 - ...est_sozialversicherungsbeitr\303\244ge.py" | 28 + src/_gettsim_tests/test_synthetic.py | 120 +- src/_gettsim_tests/test_time_conversion.py | 64 +- src/_gettsim_tests/test_unterhalt.py | 36 +- src/_gettsim_tests/test_unterhaltsvors.py | 30 - .../test_unterhaltsvorschuss.py | 28 + src/_gettsim_tests/test_vectorization.py | 143 +- src/_gettsim_tests/test_visualizations.py | 29 +- .../test_vorrangpr\303\274fungen.py" | 28 + src/_gettsim_tests/test_vorsorgeaufw.py | 30 - src/_gettsim_tests/test_vorsorgeaufwand.py | 28 + src/_gettsim_tests/test_wohngeld.py | 38 +- src/_gettsim_tests/test_zu_verst_eink.py | 43 - .../test_zu_versteuerndes_einkommen.py | 28 + src/gettsim/__init__.py | 6 +- 2429 files changed, 101132 insertions(+), 99387 deletions(-) create mode 100644 src/_gettsim/combine_functions.py delete mode 100644 src/_gettsim/combine_functions_in_tree.py delete mode 100644 src/_gettsim/demographic_vars.py create mode 100644 src/_gettsim/function_types/__init__.py create mode 100644 src/_gettsim/function_types/derived_function.py create mode 100644 src/_gettsim/function_types/group_by_function.py rename src/_gettsim/{functions => function_types}/policy_function.py (100%) delete mode 100644 src/_gettsim/functions/all_functions_for_docs.py delete mode 100644 src/_gettsim/functions/derived_function.py delete mode 100644 src/_gettsim/gettsim_typing.py delete mode 100644 src/_gettsim/groupings.py rename src/_gettsim/{functions => }/loader.py (83%) delete mode 100644 src/_gettsim/social_insurance_contributions/arbeitsl_v.py delete mode 100644 src/_gettsim/social_insurance_contributions/beitr_bemess_grenzen.py delete mode 100644 src/_gettsim/social_insurance_contributions/eink_grenzen.py delete mode 100644 src/_gettsim/social_insurance_contributions/ges_krankenv.py delete mode 100644 src/_gettsim/social_insurance_contributions/ges_pflegev.py delete mode 100644 src/_gettsim/social_insurance_contributions/ges_rentenv.py delete mode 100644 src/_gettsim/taxes/abgelt_st.py delete mode 100644 src/_gettsim/taxes/eink_st.py rename src/_gettsim/{functions => taxes/einkommensteuer}/__init__.py (100%) rename src/_gettsim/{social_insurance_contributions => taxes/einkommensteuer/abgeltungssteuer}/__init__.py (100%) create mode 100644 src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py rename src/_gettsim/taxes/zu_verst_eink/__init__.py => "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" (100%) create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" create mode 100644 "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" create mode 100644 src/_gettsim/taxes/einkommensteuer/einkommen.py create mode 100644 src/_gettsim/taxes/einkommensteuer/einkommensteuer.py rename src/_gettsim/transfers/arbeitsl_geld_2/__init__.py => "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" (100%) create mode 100644 "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" rename src/_gettsim/transfers/benefit_checks/__init__.py => "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" (100%) create mode 100644 "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" create mode 100644 src/_gettsim/taxes/einkommensteuer/group_by_ids.py create mode 100644 src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py create mode 100644 src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py create mode 100644 src/_gettsim/taxes/familie/familie.py create mode 100644 src/_gettsim/taxes/household_characteristics.py create mode 100644 src/_gettsim/taxes/individual_characteristics.py delete mode 100644 src/_gettsim/taxes/lohnst.py rename src/_gettsim/{transfers/kinderzuschl => taxes/lohnsteuer}/__init__.py (100%) create mode 100644 src/_gettsim/taxes/lohnsteuer/einkommen.py create mode 100644 src/_gettsim/taxes/lohnsteuer/lohnsteuer.py delete mode 100644 src/_gettsim/taxes/soli_st.py create mode 100644 "src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" create mode 100644 "src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" create mode 100644 src/_gettsim/taxes/sozialversicherung/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/arbeitslosen/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py create mode 100644 src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py create mode 100644 "src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" create mode 100644 src/_gettsim/taxes/sozialversicherung/kranken/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/kranken/beitrag/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py create mode 100644 src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py create mode 100644 src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py create mode 100644 src/_gettsim/taxes/sozialversicherung/midijob.py create mode 100644 src/_gettsim/taxes/sozialversicherung/pflege/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py create mode 100644 src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py create mode 100644 "src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" create mode 100644 "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/beitrag/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py create mode 100644 src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py delete mode 100644 src/_gettsim/taxes/zu_verst_eink/eink.py delete mode 100644 src/_gettsim/taxes/zu_verst_eink/freibetraege.py delete mode 100644 src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py delete mode 100644 src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py delete mode 100644 src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py create mode 100644 src/_gettsim/transfers/arbeitslosengeld_2/__init__.py create mode 100644 src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py create mode 100644 src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py create mode 100644 "src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" create mode 100644 src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py create mode 100644 "src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" create mode 100644 src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py delete mode 100644 src/_gettsim/transfers/benefit_checks/benefit_checks.py delete mode 100644 src/_gettsim/transfers/benefit_checks/vermoegens_checks.py delete mode 100644 src/_gettsim/transfers/elterngeld.py create mode 100644 src/_gettsim/transfers/elterngeld/__init__.py create mode 100644 src/_gettsim/transfers/elterngeld/einkommen.py create mode 100644 src/_gettsim/transfers/elterngeld/elterngeld.py create mode 100644 src/_gettsim/transfers/elterngeld/geschwisterbonus.py delete mode 100644 src/_gettsim/transfers/erwerbsm_rente.py delete mode 100644 src/_gettsim/transfers/erziehungsgeld.py create mode 100644 src/_gettsim/transfers/erziehungsgeld/__init__.py create mode 100644 src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py delete mode 100644 src/_gettsim/transfers/grundrente.py delete mode 100644 src/_gettsim/transfers/grunds_im_alter.py create mode 100644 src/_gettsim/transfers/grundsicherung/__init__.py create mode 100644 src/_gettsim/transfers/grundsicherung/im_alter/__init__.py create mode 100644 src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py create mode 100644 src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py delete mode 100644 src/_gettsim/transfers/kinderbonus.py create mode 100644 src/_gettsim/transfers/kinderbonus/__init__.py create mode 100644 src/_gettsim/transfers/kinderbonus/kinderbonus.py delete mode 100644 src/_gettsim/transfers/kindergeld.py create mode 100644 src/_gettsim/transfers/kindergeld/__init__.py create mode 100644 src/_gettsim/transfers/kindergeld/kindergeld.py delete mode 100644 src/_gettsim/transfers/kinderzuschl/kinderzuschl.py delete mode 100644 src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py delete mode 100644 src/_gettsim/transfers/kinderzuschl/kost_unterk.py create mode 100644 src/_gettsim/transfers/kinderzuschlag/__init__.py create mode 100644 src/_gettsim/transfers/kinderzuschlag/einkommen.py create mode 100644 src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py delete mode 100644 src/_gettsim/transfers/rente.py delete mode 100644 src/_gettsim/transfers/unterhalt.py create mode 100644 src/_gettsim/transfers/unterhalt/__init__.py create mode 100644 src/_gettsim/transfers/unterhalt/unterhalt.py delete mode 100644 src/_gettsim/transfers/unterhaltsvors.py create mode 100644 src/_gettsim/transfers/unterhaltsvorschuss/__init__.py create mode 100644 src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py create mode 100644 "src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" create mode 100644 "src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" delete mode 100644 src/_gettsim/transfers/wohngeld.py create mode 100644 src/_gettsim/transfers/wohngeld/__init__.py create mode 100644 src/_gettsim/transfers/wohngeld/einkommen.py create mode 100644 src/_gettsim/transfers/wohngeld/group_by_ids.py create mode 100644 src/_gettsim/transfers/wohngeld/miete.py create mode 100644 src/_gettsim/transfers/wohngeld/voraussetzungen.py create mode 100644 src/_gettsim/transfers/wohngeld/wohngeld.py create mode 100644 src/_gettsim/typing.py delete mode 100644 src/_gettsim_tests/test_arbeitsl_geld.py delete mode 100644 src/_gettsim_tests/test_arbeitsl_geld_2.py create mode 100644 src/_gettsim_tests/test_arbeitslosengeld.py create mode 100644 src/_gettsim_tests/test_arbeitslosengeld_2.py delete mode 100644 src/_gettsim_tests/test_benefit_checks.py create mode 100644 src/_gettsim_tests/test_combine_functions.py delete mode 100644 src/_gettsim_tests/test_combine_functions_in_tree.py delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2010/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2011/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2015/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_multiple_children.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_no_adult_in_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2006/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/kind_20_jahre_in_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_14.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_15.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2018/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_13_14.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_5_6.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_age_limits_17_18.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_high_wealth.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_wealth_below_threshold.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_20.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_21.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_22.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_23.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_kein_kindergelduebertrag.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_voller_kindergelduebertrag.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_one_bg_in_hh.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_multiple_children.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_no_adult_in_bg.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/single_no_income.yaml delete mode 100644 src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/skip_single_no_children.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml rename src/_gettsim_tests/test_data/{arbeitsl_geld_2 => arbeitslosengeld_2}/2024/kost_unterk_multiple_bg_in_hh.yaml (81%) create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2006/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2009/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2013/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2014/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2016/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_8.yaml rename src/_gettsim_tests/test_data/{demographic_vars => demographics}/2024/pflegev_anz_kinder_bis_24.yaml (76%) delete mode 100644 src/_gettsim_tests/test_data/eink_st/2009/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2012/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2015/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2018/couple_1_child.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2018/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2018/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2023/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2024/couple_1_child.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2024/couple_above_soli_freibetrag.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2024/single_above_soli_freibetrag.yaml delete mode 100644 src/_gettsim_tests/test_data/eink_st/2024/single_below_soli_freibetrag.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml create mode 100644 src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_1.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_2.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_3.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_4.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_5.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml delete mode 100644 src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml create mode 100644 src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml delete mode 100644 src/_gettsim_tests/test_data/favorability_check/2010/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/favorability_check/2012/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/favorability_check/2016/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/favorability_check/skip_2019/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/full_taxes_and_transfers/2008/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_male.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_female.yaml delete mode 100644 src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_male.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_17.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_20.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_22.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_18.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_14.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_15.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_21.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_23.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml create mode 100644 "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" create mode 100644 "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" create mode 100644 "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" create mode 100644 "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2013/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2017/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2019/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2020/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2021/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2023/hh_id_14.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2023/test_child_income.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2023/test_family_high_wealth.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2023/test_higher_wealth_exemptions.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/2024/test_max_transfer.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/skip_2006/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/kinderzuschl/skip_2009/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1045.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1051.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1081.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1134.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_121.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1214.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1219.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1435.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1462.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1476.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1555.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1627.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1793.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1796.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1915.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_1982.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2042.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2174.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2224.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2451.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2552.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2593.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2601.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2639.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2726.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2732.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2861.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_2924.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_400.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_470.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_561.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_583.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_72.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_736.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_76.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_765.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_769.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_786.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_790.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_802.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_830.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_856.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_857.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_891.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2015/hh_id_925.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1000.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1086.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1115.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1133.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1175.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_123.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1281.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1335.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1367.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1532.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1700.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1705.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1822.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_1958.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2065.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2151.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2220.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2289.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2358.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2396.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2645.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2693.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2724.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2744.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2932.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_2961.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_307.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_435.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_444.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_583.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_699.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_765.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_779.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_807.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_821.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_898.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_950.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_965.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2016/hh_id_968.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1019.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1088.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1134.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1164.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1279.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_146.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1503.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_151.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1532.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1549.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1615.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1705.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1788.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1841.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1866.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1878.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1923.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_1945.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2005.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2151.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2177.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2226.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2293.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2512.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_266.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2677.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2729.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2881.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2918.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2934.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2956.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2974.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_2991.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_30.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_416.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_455.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_496.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_506.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_528.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_568.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_575.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_588.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_659.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_743.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_881.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_910.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_933.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2017/hh_id_996.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1159.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1213.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_130.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1314.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_152.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1632.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1727.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_174.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1786.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1802.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_184.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_1935.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2098.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2156.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2186.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2395.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2491.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2575.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2649.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2720.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2828.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2904.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_2999.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_315.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_375.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_417.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_559.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_624.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_791.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_796.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_81.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_835.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_851.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_947.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_959.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2018/hh_id_98.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1014.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1093.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1098.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_111.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1180.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1210.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1354.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1629.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1695.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1709.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_180.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1825.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_1846.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2025.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2070.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2159.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2204.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2375.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2393.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2469.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2516.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_265.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2708.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2729.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2736.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2760.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2818.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_286.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2900.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2904.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_2942.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_317.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_331.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_396.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_420.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_605.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_646.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_65.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_664.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_698.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_710.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_715.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_809.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_816.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_832.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_879.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_882.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_949.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2019/hh_id_978.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1015.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1096.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1118.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1273.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1310.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1378.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1417.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1468.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_160.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_161.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1705.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1767.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1775.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1788.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1790.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_1928.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2106.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2182.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2184.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2230.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2320.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2389.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2439.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2527.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2562.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2587.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_266.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2888.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2898.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2920.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2953.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_2998.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_367.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_400.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_409.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_481.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_513.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_630.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_648.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_70.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_798.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_835.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_901.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_926.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2020/hh_id_949.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_111.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1186.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1204.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1237.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1255.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1380.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1385.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1402.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_145.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1538.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1610.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_165.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1714.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1762.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1853.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1908.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_1999.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2022.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2208.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_225.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2258.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2295.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_238.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2400.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2416.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2476.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_262.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2766.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2782.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2836.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2886.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2945.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_2946.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_299.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_318.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_321.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_33.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_417.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_479.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_519.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_522.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_618.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_620.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_651.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_738.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_761.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_788.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_798.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_810.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_864.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_867.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_883.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_885.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_946.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2021/hh_id_948.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1019.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1166.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1209.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1305.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1364.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1473.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1519.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1667.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1770.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1784.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1881.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1904.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1907.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_1918.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2099.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2111.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2118.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2129.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_224.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_241.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2410.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2423.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2428.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2439.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2447.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2868.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_2962.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_664.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_688.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_720.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_840.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_848.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2022/hh_id_963.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1019.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1166.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1209.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1305.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1364.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1473.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1519.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1667.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1770.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1784.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1881.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1904.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1907.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_1918.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2099.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2111.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2118.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2129.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_224.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_241.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2410.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2423.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2428.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2439.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2447.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2868.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_2962.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_664.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_688.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_720.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_840.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_848.yaml delete mode 100644 src/_gettsim_tests/test_data/lohnst/2023/hh_id_963.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml create mode 100644 src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml rename src/_gettsim_tests/test_data/{renten_anspr => rente_altersgrenzen}/2018-07-01/age_at_retirement.yaml (77%) create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml create mode 100644 src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml create mode 100644 src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_frauen.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_frauen.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_ohne_vorzeitig.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1937_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1938_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1939_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1940_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1941_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1942_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1943_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1944_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1945_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1946_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1947_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1948_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1949_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1950_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1951_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1952_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1953_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1954_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1955_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1991/eligibility_pathways.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1930_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1937_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1938_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1939_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1940_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1941_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1942_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1943_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1944_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1945_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1946_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1947_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1948_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1949_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1950_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1951_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1952_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1953_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1954_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1955_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-07-01/cohort_1936_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1930_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1937_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1938_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1939_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1945_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1946_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1947_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1948_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1949_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1950_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1951_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1952_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1953_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1954_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1955_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1930_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1937_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1938_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1939_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1930_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1937_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1938_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1939_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1945_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1946_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1947_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1948_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1949_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1952_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_30.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2014-07-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/cohort_1951_wegen_arbeitsl.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/eligibility_pathways.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_14.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_15.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_17.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_18.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_26.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_27.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_28.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_29.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_vorzeitig.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1958_vorzeitig.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/eligibility_pathways.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_20.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_21.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_22.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_23.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/renten_anspr/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/1991/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/1993/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/1996/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/1999/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2003/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2022/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2023/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2024/couple_above_threshold.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2024/couple_below_threshold.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2024/single_above_threshold.yaml delete mode 100644 src/_gettsim_tests/test_data/soli_st/2024/single_below_threshold.yaml create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" create mode 100644 "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialv_beitr/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialv_beitr/2002/geringf\303\274gig_besch\303\244ftigt.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialv_beitr/2002/regul\303\244r_besch\303\244ftigt.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_viel_einkommen.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_wenig_einkommen.yaml" delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2004-04-01/rentner.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_23.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_15.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_18.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_20.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_21.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_22.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_17.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_23.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_24.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_25.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_26.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_27.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2024/above_new_beitragsbemessungsgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2024/above_old_beitragsbemessungsgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialv_beitr/2024/below_beitragsbemessungsgrenze.yaml create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2018-1/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_with_income.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_without_income.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-1/young_child_parent_without_income.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2019-8/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_mittlere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_untere_altergruppe.yaml delete mode 100644 src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml create mode 100644 src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" create mode 100644 "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2004/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2018/hh_id_15.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2020/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2021/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_17.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_18.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_16.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_17.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2017/hh_id_18.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_11.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_12.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2019/hh_id_13.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_14.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_19.yaml delete mode 100644 src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_20.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml create mode 100644 src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml delete mode 100644 src/_gettsim_tests/test_demographic_vars.py create mode 100644 src/_gettsim_tests/test_demographics.py delete mode 100644 src/_gettsim_tests/test_eink_st.py create mode 100644 src/_gettsim_tests/test_einkommensteuer.py delete mode 100644 src/_gettsim_tests/test_erwerbsm_rente.py create mode 100644 src/_gettsim_tests/test_erwerbsminderungsrente.py delete mode 100644 src/_gettsim_tests/test_favorability_check.py delete mode 100644 src/_gettsim_tests/test_ges_rentenalter.py delete mode 100644 src/_gettsim_tests/test_grunds_im_alter.py create mode 100644 src/_gettsim_tests/test_grundsicherung_im_alter.py create mode 100644 "src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" delete mode 100644 src/_gettsim_tests/test_kinderzuschl.py create mode 100644 src/_gettsim_tests/test_kinderzuschlag.py delete mode 100644 src/_gettsim_tests/test_lohnst.py create mode 100644 src/_gettsim_tests/test_lohnsteuer.py create mode 100644 src/_gettsim_tests/test_rente_altersgrenzen.py create mode 100644 src/_gettsim_tests/test_rente_anspruch.py delete mode 100644 src/_gettsim_tests/test_renten_anspr.py delete mode 100644 src/_gettsim_tests/test_soli_st.py create mode 100644 "src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" delete mode 100644 src/_gettsim_tests/test_sozialv_beitr.py create mode 100644 "src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" delete mode 100644 src/_gettsim_tests/test_unterhaltsvors.py create mode 100644 src/_gettsim_tests/test_unterhaltsvorschuss.py create mode 100644 "src/_gettsim_tests/test_vorrangpr\303\274fungen.py" delete mode 100644 src/_gettsim_tests/test_vorsorgeaufw.py create mode 100644 src/_gettsim_tests/test_vorsorgeaufwand.py delete mode 100644 src/_gettsim_tests/test_zu_verst_eink.py create mode 100644 src/_gettsim_tests/test_zu_versteuerndes_einkommen.py diff --git a/.gitignore b/.gitignore index 9a7cab4753..ba675fc8fe 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ docs/_build docs/tutorials/sandbox_cz.ipynb _version.py .pixi/ +prof/ diff --git a/docs/conf.py b/docs/conf.py index 244eee6dc7..7973aee266 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -5,16 +5,16 @@ # If extensions (or modules to document with autodoc) are in another directory, add # these directories to sys.path here. If the directory is relative to the documentation # root, use os.path.abspath to make it absolute, like shown here. -import datetime as dt import pathlib import sys +from datetime import datetime sys.path.insert(0, str(pathlib.Path("../src").resolve())) # -- Project information ----------------------------------------------------- project = "GETTSIM" -copyright = f"2019-{dt.datetime.today().year}, GETTSIM team" # noqa: A001 +copyright = f"2019-{datetime.today().year}, GETTSIM team" # noqa: A001 author = "GETTSIM team" release = "0.7.0" version = ".".join(release.split(".")[:2]) diff --git a/docs/geps/gep-01.md b/docs/geps/gep-01.md index 3b15d1bc53..b04e42a768 100644 --- a/docs/geps/gep-01.md +++ b/docs/geps/gep-01.md @@ -42,8 +42,9 @@ a nutshell and without explanations, these conventions are: Internal variables should be used sparingly. 1. If names need to be concatenated for making clear what a column name refers to (e.g., - `arbeitsl_geld_2_vermög_freib_bg` vs. `grunds_im_alter_vermög_freib_eg`), the group - (i.e., the tax or transfer) that a variable refers to appears first. + `arbeitslosengeld_2__freibetrag_vermögen_bg` vs. + `grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or + transfer) that a variable refers to appears first. 1. Because of the necessity of concatenated column names, there will be conflicts between readability (1.) and variable length (2.). If such conflicts arise, they need @@ -108,12 +109,13 @@ no restriction on the number of characters. Internal columns should be used spar Across variations that include the same identifier, this identifier should not be changed, even if it leads to long variable names (e.g., `kinderfreib`, -`_zu_verst_eink_ohne_kinderfreib_y_sn`). This makes searching for identifiers easier and +`einkommensteuer__gesamteinkommen_y`). This makes searching for identifiers easier and less error-prone. If names need to be concatenated for making clear what a column name refers to (e.g., -`arbeitsl_geld_2_vermög_freib_bg` vs. `grunds_im_alter_vermög_freib_eg`), the group -(i.e., the tax or transfer) that a variable refers to appears first. +`arbeitslosengeld_2__freibetrag_vermögen_bg` vs. +`grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or +transfer) that a variable refers to appears first. If a column has a reference to a time unit (i.e., any flow variable like earnings or transfers), a column is indicated by an underscore plus one of {`y`, `m`, `w`, `d`}. @@ -127,23 +129,24 @@ GETTSIM knows about the following units: - `p_id`: person identifier - `hh_id`: Haushalt, individuals living together in a household in the Wohngeld sense (§5 WoGG). -- `wthh_id`: Wohngeldrechtlicher Teilhaushalt, i.e. members of a household for whom the - priority check for Wohngeld/ALG2 yields the same result ∈ {True, False}. This unit is - based on the priority check via `wohngeld_vorrang_bg` and - `wohngeld_kinderzuschl_vorrang_bg`. -- `fg_id`: Familiengemeinschaft. Maximum of two generations, the relevant unit for - Bürgergeld / Arbeitslosengeld 2. Another way to think about this is the potential - Bedarfsgemeinschaft before making checks for whether children have enough income fend - for themselves. Subset of `hh`. -- `bg_id`: Bedarfsgemeinschaft, i.e., Familiengemeinschaft excluding children who have - enough income to fend for themselves (they will form separate `bg`s). Subset of - `fg_id`. -- `eg_id`: Einstandsgemeinschaft, a couple whose members are deemed to be responsible - for each other. This includes couples that live together and may or may not be married - or in a civil union. -- `ehe_id`: Ehegemeinschaft, i.e. couples that are married or in a civil union. -- `sn_id`: Steuernummer (same for spouses filing taxes jointly, not the same as the - Germany-wide Steuer-ID) +- `wohngeld__wthh_id`: Wohngeldrechtlicher Teilhaushalt, i.e. members of a household for + whom the priority check for Wohngeld/ALG2 yields the same result ∈ {True, False}. This + unit is based on the priority check via + `vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg` and + `vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. +- `arbeitslosengeld_2__fg_id`: Familiengemeinschaft. Maximum of two generations, the + relevant unit for Bürgergeld / Arbeitslosengeld 2. Another way to think about this is + the potential Bedarfsgemeinschaft before making checks for whether children have + enough income fend for themselves. Subset of `hh`. +- `arbeitslosengeld_2__bg_id`: Bedarfsgemeinschaft, i.e., Familiengemeinschaft excluding + children who have enough income to fend for themselves (they will form separate + `bg`s). Subset of `arbeitslosengeld_2__fg_id`. +- `arbeitslosengeld_2__eg_id`: Einstandsgemeinschaft, a couple whose members are deemed + to be responsible for each other. This includes couples that live together and may or + may not be married or in a civil union. +- `familie__ehe_id`: Ehegemeinschaft, i.e. couples that are married or in a civil union. +- `einkommensteuer__sn_id`: Steuernummer (same for spouses filing taxes jointly, not the + same as the Germany-wide Steuer-ID) Note that households do not include flat shares etc.. Such broader definition are currently not relevant in GETTSIM but may be added in the future (e.g., capping rules @@ -151,11 +154,11 @@ for costs of dwelling in SGB II depend on this). Open questions: -- Can we use bg_id for both SGB II and SGB XII at the same time or do we need to - differentiate once we add serious support for SGB XII? +- Can we use `arbeitslosengeld_2__bg_id` for both SGB II and SGB XII at the same time or + do we need to differentiate once we add serious support for SGB XII? Time unit identifiers always appear before unit identifiers (e.g., -`arbeitsl_geld_2_m_bg`). +`arbeitslosengeld_2__betrag_m_bg`). ## Parameters of the taxes and transfers system @@ -163,12 +166,12 @@ The structure of these parameters are laid out in \; we just note general naming considerations here. - There is a hierarchical structure to these parameters in that each of them is - associated with a group (e.g., `arbeitsl_geld`, `kinderzuschlag`). These groups or + associated with a group (e.g., `arbeitslosengeld`, `kinderzuschlag`). These groups or abbreviations thereof do not re-appear in the name of the parameter. - Parameter names should be generally be aligned with relevant column names. However, since the group is not repeated for the parameter, it is often better not to abbreviate them (e.g., `wohngeld_params["vermögensgrundfreibetrag"]` for the parameter - and `wohngeld_anspruchshöhe_m_wthh` for a column derived from it). + and `wohngeld__anspruchshöhe_m_wthh` for a column derived from it). ## Other Python identifiers (Functions, Variables) diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index fdbaf5e22b..ebc01f103e 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -333,15 +333,15 @@ The following goes through the details using an example from the basic pension a (Grundrente). The law on the public pension insurance specifies that the maximum possible -Grundrentenzuschlag `grundr_zuschlag_höchstwert_m` be rounded to the nearest fourth -decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für langjährige Versicherung). -The example below contains GETTSIM's encoding of this fact. +Grundrentenzuschlag `sozialversicherung__rente__grundrente__höchstbetrag_m` be rounded +to the nearest fourth decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für +langjährige Versicherung). The example below contains GETTSIM's encoding of this fact. The snippet is taken from `ges_rente.yaml`, which contains the following code: ```yaml rounding: - grundr_zuschlag_höchstwert_m: + höchstbetrag_m: 2020-01-01: base: 0.0001 direction: nearest @@ -393,7 +393,7 @@ necessary inside the functions. The important changes include: - Parameters for piecewise polynomials are parsed. - Parameters that are derived from other parameters are calculated (examples include `kinderzuschlag_max` starting in 2021 or calculating the phasing in of - `vorsorgeaufw_alter` over the 2005-2025 period). + `vorsorgeaufwendungen_alter` over the 2005-2025 period). These functions will be avaiable to users en bloque or one-by-one so they can specify parameters as in the YAML file for their own policy parameters. diff --git a/docs/geps/gep-04.md b/docs/geps/gep-04.md index 10986b7dc6..f944ce3c9a 100644 --- a/docs/geps/gep-04.md +++ b/docs/geps/gep-04.md @@ -62,8 +62,10 @@ GETTSIM; this is irrelevant for the DAG. Function arguments can be of three kinds: -- User-provided input variables (e.g., `bruttolohn_m`). -- Outputs of other functions in the taxes and transfers system (e.g., `eink_st_y_sn`). +- User-provided input variables (e.g., + `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`). +- Outputs of other functions in the taxes and transfers system (e.g., + `einkommensteuer__betrag_y_sn`). - Parameters of the taxes and transfers system, which are pre-defined and always end in `_params` (e.g., `ges_rentenv_params`). @@ -77,16 +79,19 @@ why we use functions when programming: readability, simplicity, lower maintenanc potential entry point for a researcher to change the taxes and transfers system if she is able to replace this function with her own version. -See the following example for capital income taxes. +See the following example for capital income taxes (Abgeltungssteuer). ```python -def abgelt_st_y_sn(zu_verst_kapitaleink_y_sn: float, abgelt_st_params: dict) -> float: +def einkommensteuer__abgeltungssteuer__betrag_y_sn( + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn: float, + abgelt_st_params: dict, +) -> float: """Calculate Abgeltungssteuer on Steuernummer-level. Parameters ---------- - zu_verst_kapitaleink_y_sn - See :func:`zu_verst_kapitaleink_y_sn`. + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`. abgelt_st_params See params documentation :ref:`abgelt_st_params `. @@ -94,30 +99,39 @@ def abgelt_st_y_sn(zu_verst_kapitaleink_y_sn: float, abgelt_st_params: dict) -> ------- """ - return abgelt_st_params["satz"] * zu_verst_kapitaleink_y_sn + return ( + abgelt_st_params["satz"] + * einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn + ) ``` -The function {func}`abgelt_st_y_sn` requires the variable `zu_verst_kapital_eink_y_sn`, -which is the amount of taxable capital income on the Steuernummer-level (the latter is -implied by the `_sn` suffix, see {ref}`gep-1`). `zu_verst_kapital_eink_y_sn` must be -provided by the user as a column of the input data or it has to be the name of another -function. It is also possible to specify `zu_verst_kapital_eink_y` and aggregation to -the `sn`-level will happen automatically. `abgelt_st_params` is a dictionary of -parameters related to the calculation of `abgelt_st_y_sn`. +The function `einkommensteuer__abgeltungssteuer__betrag_y_sn` requires the variable +`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`, which is the amount of +taxable capital income on the Steuernummer-level (the latter is implied by the `_sn` +suffix, see {ref}`gep-1`). +`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn` must be provided by the +user as a column of the input data or it has to be the name of another function. +`abgelt_st_params` is a dictionary of parameters related to the calculation of +`betrag_y_sn`. + +> Note: In the source code, the prefix `einkommensteuer__abgeltungssteuer__` is missing. +> This is because it is inferred from the path the function is defined in. For more +> details, see {ref}`gep-6`. Another function, say ```python -def soli_st_y_sn( - eink_st_mit_kinderfreib_y_sn: float, - anz_personen_sn: int, - abgelt_st_y_sn: float, +def solidaritätszuschlag__betrag_y_sn( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + einkommensteuer__abgeltungssteuer__betrag_y_sn: float, soli_st_params: dict, ) -> float: ... ``` -may use `abgelt_st_y_sn` as an input argument. The DAG backend ensures that the function -`abgelt_st_y_sn` will be executed first. +may use `einkommensteuer__abgeltungssteuer__betrag_y_sn` as an input argument. The DAG +backend ensures that the function `einkommensteuer__abgeltungssteuer__betrag_y_sn` will +be executed first. Note that the type annotations (e.g. `float`) indicate the expected type of each input and the output of a function, see {ref}`gep-2`. @@ -216,21 +230,26 @@ data. This section describes how to specify them. In order to inject aggregation functions at the group level into the graph, scripts with functions of the taxes and transfer system should define a dictionary -`aggregate_by_group_[script_name]` at the module level. This dictionary must specify the -aggregated columns as keys and a dictionary with keys `source_col` and `aggr` as values. -If `aggr` is `count`, `source_col` is not needed. +`aggregation_specs` at the module level. This dictionary must specify the aggregated +columns as keys and the AggregateByGroupSpec data class as values. The data class +specifies the `source` (i.e. the column which is being aggregated) and the aggregation +method `aggr`. -For example, in `demographic_vars.py`, we could have: +For example, in `household_characteristics.py`, we could have: ``` -aggregate_by_group_demographic_vars = { - "anz_kinder_hh": {"source_col": "kind", "aggr": "sum"}, - "anz_personen_hh": {"aggr": "count"}, +from _gettsim.aggregation import AggregateByGroupSpec + +aggregation_specs = { + "anzahl_kinder_hh": AggregateByGroupSpec(source="familie__kind", aggr="sum"), + "anzahl_personen_hh": AggregateByGroupSpec(aggr="count"), } ``` -The group identifier (`hh_id`, `wthh_id`, `fg_id`, `bg_id`, `eg_id`, `ehe_id`, `sn_id`) -will be automatically included as an argument; for `count` nothing else is necessary. +The group identifier (`hh_id`, `wohngeld__wthh_id`, `arbeitslosengeld_2__fg_id`, +`arbeitslosengeld_2__bg_id`, `arbeitslosengeld_2__eg_id`, `familie__ehe_id`, +`einkommensteuer__sn_id`) will be automatically included as an argument; for `count` +nothing else is necessary. The output type will be the same as the input type. Exceptions: @@ -249,29 +268,33 @@ Automatic summation will only happen in case no column `my_col_hh` is explicitly Using a different reduction function than the sum is as easy as explicitly specifying `my_col_hh`. -Consider the following example: the function `kindergeld_m` calculates the -individual-level child benefit payment. `arbeitsl_geld_2_m_bg` calculates +Consider the following example: the function `kindergeld__betrag_m` calculates the +individual-level child benefit payment. `arbeitslosengeld_2__betrag_m_bg` calculates Arbeitslosengeld 2 on the Bedarfsgemeinschaft (bg) level (as indicated by the suffix). One necessary input of this function is the sum of all child benefits on the -Bedarfsgemeinschaft level. There is no function or input column `kindergeld_m_bg`. +Bedarfsgemeinschaft level. There is no function or input column +`kindergeld__betrag_m_bg`. -By including `kindergeld_m_bg` as an argument in the definition of -`arbeitsl_geld_2_m_bg` as follows: +By including `kindergeld__betrag_m_bg` as an argument in the definition of +`arbeitslosengeld_2__betrag_m_bg` as follows: ```python -def arbeitsl_geld_2_m_bg(kindergeld_m_bg, other_arguments): ... +def arbeitslosengeld_2__betrag_m_bg(kindergeld__betrag_m_bg, other_arguments): ... ``` -a node `kindergeld_m_bg` containing the Bedarfsgemeinschaft-level sum of `kindergeld_m` -will be automatically added to the graph. Its parents in the graph will be -`kindergeld_m` and `bg_id`. This is the same as specifying: +a node `kindergeld__betrag_m_bg` containing the Bedarfsgemeinschaft-level sum of +`kindergeld__betrag_m` will be automatically added to the graph. Its parents in the +graph will be `kindergeld__betrag_m` and `arbeitslosengeld_2__bg_id`. This is the same +as specifying: ``` -aggregate_by_group_kindergeld = = { - "kindergeld_m_bg": { - "source_col": "kindergeld_m", - "aggr": "sum" - } +from _gettsim.aggregation import AggregateByGroupSpec + +aggregation_specs = { + "kindergeld__betrag_m_bg": AggregateByGroupSpec( + source="kindergeld__betrag_m", + aggr="sum" + ) } ``` @@ -287,31 +310,31 @@ column. This section describes how to specify such taxes and transfers. The implementation is similar to aggregations to the level of groupings: In order to specify new aggregation functions, scripts with functions of the taxes and transfer -system should define a dictionary `aggregate_by_p_id_[script_name]` at the module level. -This dictionary must specify the aggregated columns as keys and a dictionary with keys -`source_col`, `p_id_to_aggregate_by` and `aggr` as values. If `aggr` is `count`, -`source_col` is not needed. +system should define a dictionary `aggregation_specs` at the module level. This +dictionary must specify the aggregated columns as keys and the `AggregateByPIDSpec` data +class as values. The class specifies the `source`, `p_id_to_aggregate_by`, and `aggr`. +If `aggr` is `count`, `source` is not needed. -The key `source_col` specifies which column is the source of the aggregation operation. -The key `p_id_to_aggregate_by` specifies the column that indicates to which `p_id` the -values in `source_col` should be ascribed to. The key `aggr` gives the aggregation -method. +The key `source` specifies which column is the source of the aggregation operation. The +key `p_id_to_aggregate_by` specifies the column that indicates to which `p_id` the +values in `source` should be ascribed to. The key `aggr` gives the aggregation method. For example, in `kindergeld.py`, we could have: ``` -aggregate_by_p_id_kindergeld = { - "kindergeld_anz_ansprüche": { - "p_id_to_aggregate_by": "p_id_kindergeld_empf", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, +aggregation_specs = { + "kindergeld__anzahl_ansprüche": AggregateByPIDSpec( + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + source="kindergeld__grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), } ``` -This dict creates a target function `kindergeld_anz_ansprüche` which gives the amount of -claims that a person has on Kindergeld, based on the `kindergeld_anspruch` function -which returns Booleans, which show whether a child is a reason for a Kindergeld claim. +This dict creates a target function `kindergeld__anzahl_ansprüche` which gives the +amount of claims that a person has on Kindergeld, based on the +`kindergeld__grundsätzlich_anspruchsberechtigt` function which returns Booleans, which +show whether a child is a reason for a Kindergeld claim. The output type will be the same as the input type. Exceptions: diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index 8c7c51afa4..cf294c828e 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -40,15 +40,15 @@ specified in the `.yaml`-files. The following goes through the details using an from the basic pension allowance (Grundrente). The law on the public pension insurance specifies that the maximum possible -Grundrentenzuschlag `grundr_zuschlag_höchstwert_m` be rounded to the nearest fourth -decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für langjährige Versicherung). -The example below contains GETTSIM's encoding of this fact. +Grundrentenzuschlag `sozialversicherung__rente__grundrente__höchstbetrag_m` be rounded +to the nearest fourth decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für +langjährige Versicherung). The example below contains GETTSIM's encoding of this fact. The snippet is taken from `ges_rente.yaml`, which contains the following code: ```yaml rounding: - grundr_zuschlag_höchstwert_m: + sozialversicherung__rente__grundrente__höchstbetrag_m: 2020-01-01: base: 0.0001 direction: nearest @@ -75,14 +75,16 @@ A function to be rounded must be decorated with `policy_function`. Set the `params_key_for_rounding` parameter to point to the key of the policy parameters dictionary containing the rounding parameters relating to the function that is decorated. In the above example, the rounding specification for -`grundr_zuschlag_höchstwert_m` will be found in `policy_params["ges_rente"]` after -{func}`set_up_policy_environment()` has been called (since it was specified in -`ges_rente.yaml`). Hence, the `params_key_for_rounding` argument of `policy_function` -has to be `"ges_rente"`: +`sozialversicherung__rente__grundrente__höchstbetrag_m` will be found in +`policy_params["ges_rente"]` after {func}`set_up_policy_environment()` has been called +(since it was specified in `ges_rente.yaml`). Hence, the `params_key_for_rounding` +argument of `policy_function` has to be `"ges_rente"`: ```python @policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_höchstwert_m(grundr_zeiten: int) -> float: +def sozialversicherung__rente__grundrente__höchstbetrag_m( + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: int, +) -> float: ... return out ``` @@ -91,12 +93,14 @@ When calling {func}`compute_taxes_and_transfers <_gettsim.interface.compute_taxes_and_transfers>` with `rounding=True`, GETTSIM will look for a key `"rounding"` in `policy_params["params_key"]` and within that, for another key containing the decorated -function's name (here: `"grundr_zuschlag_höchstwert_m"`). That is, by the machinery -outlined in {ref}`GEP 3 `, the following indexing of the `policy_params` -dictionary +function's name (here: `"sozialversicherung__rente__grundrente__höchstbetrag_m"`). That +is, by the machinery outlined in {ref}`GEP 3 `, the following indexing of the +`policy_params` dictionary ```python -policy_params["ges_rente"]["rounding"]["grundr_zuschlag_höchstwert_m"] +policy_params["ges_rente"]["rounding"][ + "sozialversicherung__rente__grundrente__höchstbetrag_m" +] ``` needs to be possible and yield the `"base"` and `"direction"` keys as described above. @@ -124,14 +128,15 @@ never happen in the GETTSIM codebase, however, due to a suitable test. If a user wants to change rounding of a specified function, she will need to adjust the rounding parameters in `policy_params`. -Suppose one would like to specify a reform in which `grundr_zuschlag_höchstwert_m` is -rounded to the next-lowest fourth decimal point instead of to the nearest. In that case, -the rounding parameters will need to be changed as follows +Suppose one would like to specify a reform in which +`sozialversicherung__rente__grundrente__höchstbetrag_m` is rounded to the next-lowest +fourth decimal point instead of to the nearest. In that case, the rounding parameters +will need to be changed as follows ```python -policy_params["ges_rente"]["rounding"]["grundr_zuschlag_höchstwert_m"]["direction"] = ( - "down" -) +policy_params["ges_rente"]["rounding"][ + "sozialversicherung__rente__grundrente__höchstbetrag_m" +]["direction"] = "down" ``` This will be done after the policy environment has been set up and it is exactly the diff --git a/docs/gettsim_developer/hh_concepts.md b/docs/gettsim_developer/hh_concepts.md index 1ce6aa101b..41ebe84170 100644 --- a/docs/gettsim_developer/hh_concepts.md +++ b/docs/gettsim_developer/hh_concepts.md @@ -8,21 +8,21 @@ individuals (e.g. Kindergeld). If transfers are calculated on the unit level, the unit is specified under "Aggregation unit". Under "Pointers", we describe the pointer columns (columns that contain the `p_id` of another individual) that are used to i) determine endogenous units (like -`bg_id`, `sn_id`,...) and/or ii) connect individuals because their relationship makes -them eligible for some transfer (i.e. parent-child relationships create eligibility for -child allowances). +`arbeitslosengeld_2__bg_id`, `einkommensteuer__sn_id`,...) and/or ii) connect +individuals because their relationship makes them eligible for some transfer (i.e. +parent-child relationships create eligibility for child allowances). The units are: -| Unit | ID | Description | Endogenous | -| -------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -| Haushalt | hh_id | Individuals that live together in one household in the Wohngeld sense (§5 WoGG). | no | -| wohngeldrechtlicher Teilhaushalt | wthh_id | The relevant unit for Wohngeld. Encompasses all members of a household for whom the Vorrangprüfung of Wohngeld against ALG2/Kinderzuschlag has the same result ∈ {True, False}. | yes | -| Familiengemeinschaft | fg_id | Maximum of two generations, the relevant base unit for Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough income fend for themselves. | yes | -| Bedarfsgemeinschaft | bg_id | Familiengemeinschaft except for children who have enough income to fend for themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2. | yes | -| Steuernummer | sn_id | Spouses filing taxes jointly or individuals. | yes | -| Ehepartner | ehe_id | Couples that are either married or in a civil union. | yes | -| Einstandsgemeinschaft | eg_id | A couple whose members are deemed to be responsible for each other. | yes | +| Unit | ID | Description | Endogenous | +| -------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | +| Haushalt | hh_id | Individuals that live together in one household in the Wohngeld sense (§5 WoGG). | no | +| wohngeldrechtlicher Teilhaushalt | wohngeld\_\_wthh_id | The relevant unit for Wohngeld. Encompasses all members of a household for whom the Vorrangprüfung of Wohngeld against ALG2/Kinderzuschlag has the same result ∈ {True, False}. | yes | +| Familiengemeinschaft | familie\_\_fg_id | Maximum of two generations, the relevant base unit for Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough income fend for themselves. | yes | +| Bedarfsgemeinschaft | arbeitslosengeld_2\_\_bg_id | Familiengemeinschaft except for children who have enough income to fend for themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2. | yes | +| Steuernummer | einkommensteuer\_\_sn_id | Spouses filing taxes jointly or individuals. | yes | +| Ehepartner | familie\_\_ehe_id | Couples that are either married or in a civil union. | yes | +| Einstandsgemeinschaft | arbeitslosengeld_2\_\_eg_id | A couple whose members are deemed to be responsible for each other. | yes | ## Taxes @@ -34,11 +34,11 @@ The units are: #### Aggregation unit -- `sn_id` (endogenous) +- `einkommensteuer__sn_id` (endogenous) #### Pointers -- `p_id_ehepartner` +- `familie__p_id_ehepartner` ### Kinderfreibeträge @@ -52,19 +52,21 @@ The units are: #### Pointers -- `p_id_kinderfreib_empfänger_1` and `p_id_kinderfreib_empfänger_2` (either set by the - user or calculated endogenously via `p_id_elternteil_1` and `p_id_elternteil_2`) +- `einkommensteuer__p_id_kinderfreibetragsempfänger_1` and + `einkommensteuer__p_id_kinderfreibetragsempfänger_2` (either set by the user or + calculated endogenously via `familie__p_id_elternteil_1` and + `familie__p_id_elternteil_2`) ## Kindergeld #### Description -- Only one parent receives child allowances (specified via `p_id_kindergeld_empf`) +- Only one parent receives child allowances (specified via `kindergeld__p_id_empfänger`) - Relevant for alimony payment of the other parent, if separate #### Pointers -- `p_id_kindergeld_empf` (exogenous) +- `kindergeld__p_id_empfänger` (exogenous) ## Kinderzuschlag @@ -76,11 +78,12 @@ The units are: #### Aggregation unit -- `bg_id` (endogenous) +- `arbeitslosengeld_2__bg_id` (endogenous) #### Pointers -- `p_id_einstandspartner`, `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, + `familie__p_id_elternteil_2` (exogenous) ## Elterngeld @@ -92,7 +95,7 @@ The units are: #### Pointers -- `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `familie__p_id_elternteil_1`, `familie__p_id_elternteil_2` (exogenous) ## Unterhalt / Unterhaltsvorschuss @@ -103,7 +106,7 @@ The units are: #### Pointers -- `p_id_kindergeld_empf` (exogenous) +- `kindergeld__p_id_empfänger` (exogenous) ## Pflegeversicherung @@ -116,7 +119,7 @@ The units are: #### Pointers -- `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `familie__p_id_elternteil_1`, `familie__p_id_elternteil_2` (exogenous) ## Rente @@ -128,11 +131,11 @@ The units are: #### Aggregation unit -- `ehe_id` (endogenous) +- `familie__ehe_id` (endogenous) #### Pointers -- `p_id_ehepartner` (exogenous) +- `familie__p_id_ehepartner` (exogenous) ### Verwitwetenrente @@ -143,11 +146,11 @@ The units are: #### Aggregation unit -- `ehe_id` (endogenous) +- `familie__ehe_id` (endogenous) #### Pointers -- `p_id_ehepartner` (exogenous) +- `familie__p_id_ehepartner` (exogenous) ## Bürgergeld und Sozialhilfe @@ -167,11 +170,12 @@ The units are: #### Aggregation unit -- `bg_id` (endogenous) +- `arbeitslosengeld_2__bg_id` (endogenous) #### Pointers -- `p_id_einstandspartner`, `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, + `familie__p_id_elternteil_2` (exogenous) ### SGB XII (Hilfe zum Lebensunterhalt) @@ -201,13 +205,14 @@ Regarding the household definition: #### Aggregation unit -- Not implemented yet. The current `eg_id` is not sufficient as it doesn't include - children (it follows the SGB II definition). -- Potentially, `bg_id` could be used as the aggregation unit. +- Not implemented yet. The current `arbeitslosengeld_2__eg_id` is not sufficient as it + doesn't include children (it follows the SGB II definition). +- Potentially, `arbeitslosengeld_2__bg_id` could be used as the aggregation unit. #### Pointers -- `hh_id`, `p_id_einstandspartner`, `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `hh_id`, `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, + `familie__p_id_elternteil_2` (exogenous) ### SGB XII (Grundsicherung im Alter / bei Erwerbsminderung) @@ -225,14 +230,15 @@ Government expenditures: 7 Mrd € #### Aggregation unit -- Currently: `eg_id` (endogenous) -- The current implementation of `eg_id` is not sufficient as it doesn't include children - (it follows the SGB II definition). -- Potentially, `bg_id` could be used as the aggregation unit. +- Currently: `arbeitslosengeld_2__eg_id` (endogenous) +- The current implementation of `arbeitslosengeld_2__eg_id` is not sufficient as it + doesn't include children (it follows the SGB II definition). +- Potentially, `arbeitslosengeld_2__bg_id` could be used as the aggregation unit. #### Pointers -- `p_id_einstandspartner`, `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, + `familie__p_id_elternteil_2` (exogenous) ### SGB XII (Eingliederungshilfe für Menschen mit Behinderung) @@ -284,17 +290,19 @@ Government expenditures: 4 Mrd € - Wohngeld has priority over SGB II transfers. The Vorrangprüfung decides which Bedarfsgemeinschaft gets Wohngeld and which gets SGB II. - If no or all household members receive Bürgergeld instead of an SGB II transfer, the - wohngeldrechtlicher Teilhaushalt equals the Haushalt, i.e. `wthh_id = hh_id`. + wohngeldrechtlicher Teilhaushalt equals the Haushalt, i.e. + `wohngeld__wthh_id = hh_id`. - Households that consist of at least one Bedarfsgemeinschaft and one wohngeldrechtlicher Teilhaushalt are called "Mischhaushalte". #### Aggregation unit -- `wthh_id` (endogenous) +- `wohngeld__wthh_id` (endogenous) #### Pointers -- `hh_id`, `p_id_einstandspartner`, `p_id_elternteil_1`, `p_id_elternteil_2` (exogenous) +- `hh_id`, `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, + `familie__p_id_elternteil_2` (exogenous) ### Kinderwohngeld diff --git a/docs/gettsim_objects/input_variables.md b/docs/gettsim_objects/input_variables.md index 3c51eb2b5f..9b06f13729 100644 --- a/docs/gettsim_objects/input_variables.md +++ b/docs/gettsim_objects/input_variables.md @@ -14,17 +14,17 @@ Household identifier following §5 WoGG Type: int -(kind)= +(familie__kind)= -## `kind` +## `familie__kind` Dependent child living with parents Type: bool -(bruttolohn_m)= +(einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m)= -## `bruttolohn_m` +## `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m` Monthly wage @@ -46,65 +46,65 @@ Female Type: bool -(rentner)= +(sozialversicherung__rente__bezieht_rente)= -## `rentner` +## `sozialversicherung__rente__bezieht_rente` -Pensioner employment status +Draws public pension benefits. Type: bool -(alleinerz)= +(familie__alleinerziehend)= -## `alleinerz` +## `familie__alleinerziehend` Single parent Type: bool -(gemeinsam_veranlagt)= +(einkommensteuer__gemeinsam_veranlagt)= -## `gemeinsam_veranlagt` +## `einkommensteuer__gemeinsam_veranlagt` Taxes are filed jointly Type: bool -(p_id_elternteil_1)= +(familie__p_id_elternteil_1)= -## `p_id_elternteil_1` +## `familie__p_id_elternteil_1` Identifier of the first parent Type: int -(p_id_elternteil_2)= +(familie__p_id_elternteil_2)= -## `p_id_elternteil_2` +## `familie__p_id_elternteil_2` Identifier of the second parent Type: int -(p_id_ehepartner)= +(familie__p_id_ehepartner)= -## `p_id_ehepartner` +## `familie__p_id_ehepartner` Identifier of married partner Type: int -(p_id_einstandspartner)= +(arbeitslosengeld_2__p_id_einstandspartner)= -## `p_id_einstandspartner` +## `arbeitslosengeld_2__p_id_einstandspartner` Identifier of Einstandspartner Type: int -(p_id_einstandspartner)= +(arbeitslosengeld_2__p_id_einstandspartner)= -## `p_id_kindergeld_empf` +## `kindergeld__p_id_empfänger` Identifier of person that claims Kindergeld for the particular child @@ -118,122 +118,122 @@ Living in former East Germany Type: bool -(in_priv_krankenv)= +(sozialversicherung__kranken__beitrag__privat_versichert)= -## `in_priv_krankenv` +## `sozialversicherung__kranken__beitrag__privat_versichert` In private health insurance Type: bool -(priv_rentenv_beitr_m)= +(einkommensteuer__abzüge__beitrag_private_rentenversicherung_m)= -## `priv_rentenv_beitr_m` +## `einkommensteuer__abzüge__beitrag_private_rentenversicherung_m` Monthly private pension contribution Type: float -(in_ausbildung)= +(kindergeld__in_ausbildung)= -## `in_ausbildung` +## `kindergeld__in_ausbildung` Employment status “in education” Type: bool -(selbstständig)= +(einkommensteuer__einkünfte__ist_selbstständig)= -## `selbstständig` +## `einkommensteuer__einkünfte__ist_selbstständig` Self-employed (main profession) Type: bool -(ges_pflegev_hat_kinder)= +(sozialversicherung__pflege__beitrag__hat_kinder)= -## `ges_pflegev_hat_kinder` +## `sozialversicherung__pflege__beitrag__hat_kinder` Has kids (incl. not in hh) Type: bool -(betreuungskost_m)= +(einkommensteuer__abzüge__betreuungskosten_m)= -## `betreuungskost_m` +## `einkommensteuer__abzüge__betreuungskosten_m` Monthly childcare expenses for a particular child under the age of 14 Type: float -(p_id_betreuungsk_träger)= +(einkommensteuer__abzüge__p_id_betreuungskosten_träger)= -## `p_id_betreuungsk_träger` +## `einkommensteuer__abzüge__p_id_betreuungskosten_träger` Identifier of the person who paid childcare expenses. Type: float -(sonstig_eink_m)= +(einkommensteuer__einkünfte__sonstige__betrag_m)= -## `sonstig_eink_m` +## `einkommensteuer__einkünfte__sonstige__betrag_m` Additional income: includes private and public transfers that are not yet implemented in GETTSIM (e.g., BAföG, Kriegsopferfürsorge) Type: float -(eink_selbst_m)= +(einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m)= -## `eink_selbst_m` +## `einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m` Monthly income from self-employment Type: float -(eink_vermietung_m)= +(einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m)= -## `eink_vermietung_m` +## `einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m` Monthly rental income net of deductions Type: float -(kapitaleink_brutto_m)= +(einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m)= -## `kapitaleink_brutto_m` +## `einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m` Monthly capital income Type: float -(bruttokaltmiete_m_hh)= +(wohnen__bruttokaltmiete_m_hh)= -## `bruttokaltmiete_m_hh` +## `wohnen__bruttokaltmiete_m_hh` Monthly rent expenses for household Type: float -(heizkosten_m_hh)= +(wohnen__heizkosten_m_hh)= -## `heizkosten_m_hh` +## `wohnen__heizkosten_m_hh` Monthly heating expenses for household Type: float -(wohnfläche_hh)= +(wohnen__wohnfläche_hh)= -## `wohnfläche_hh` +## `wohnen__wohnfläche_hh` Size of household dwelling in square meters Type: float -(bewohnt_eigentum_hh)= +(wohnen__bewohnt_eigentum_hh)= -## `bewohnt_eigentum_hh` +## `wohnen__bewohnt_eigentum_hh` Owner-occupied housing @@ -247,38 +247,39 @@ Weekly working hours of individual Type: float -(elterngeld_claimed)= +(elterngeld__claimed)= -## `elterngeld_claimed` +## `elterngeld__claimed` Individual claims Elterngeld Type: bool -(elterngeld_nettoeinkommen_vorjahr_m)= +(elterngeld__nettoeinkommen_vorjahr_m)= -## `elterngeld_nettoeinkommen_vorjahr_m` +## `elterngeld__nettoeinkommen_vorjahr_m` Approximation of the net wage in the 12 months before birth of youngest child (according to simplified calculation rules). You may let GETTSIM compute this variable via the -`elterngeld_nettolohn_approximation_m` target in a separate run, which would typically -be for the previous calendar year. +`elterngeld__nettoeinkommen_approximation_m` target in a separate run, which would +typically be for the previous calendar year. Type: float -(elterngeld_zu_verst_eink_vorjahr_y_sn)= +(elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn)= -## `elterngeld_zu_verst_eink_vorjahr_y_sn` +## `elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn` -Taxable income in the 12 months before birth of youngest child. You may let GETTSIM -compute this variable via the `_zu_verst_eink_mit_kinderfreib_y_sn` target in a separate -run, which would typically be for the previous calendar year. +Taxable income in the calendar year prior to the youngest child's birth year. You may +let GETTSIM compute this variable via the +`einkommensteuer__zu_versteuerndes_einkommen_y_sn` target in a separate run, which would +typically be for the previous calendar year. Type: float -(bruttolohn_vorj_m)= +(einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m)= -## `bruttolohn_vorj_m` +## `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m` Gross wage in the previous year @@ -308,25 +309,25 @@ Year of birth Type: int -(jahr_renteneintr)= +(sozialversicherung__rente__jahr_renteneintritt)= -## `jahr_renteneintr` +## `sozialversicherung__rente__jahr_renteneintritt` Year of retirement Type: int -(monat_renteneintr)= +(sozialversicherung__rente__monat_renteneintritt)= -## `monat_renteneintr` +## `sozialversicherung__rente__monat_renteneintritt` Month of retirement Type: int -(monate_elterngeldbezug)= +(elterngeld__bisherige_bezugsmonate)= -## `monate_elterngeldbezug` +## `elterngeld__bisherige_bezugsmonate` Number of months the individual received Elterngeld for the current youngest child. @@ -340,318 +341,319 @@ Handicap degree (between 0 and 100) Type: int -(schwerbeh_g)= +(schwerbehindert_grad_g)= -## `schwerbeh_g` +## `schwerbehindert_grad_g` Severerly handicapped, with flag "G" Type: bool -(mietstufe)= +(wohngeld__mietstufe)= -## `mietstufe` +## `wohngeld__mietstufe` Level of rents in city (1: low, 3: average) Type: int -(immobilie_baujahr_hh)= +(wohnen__baujahr_immobilie_hh)= -## `immobilie_baujahr_hh` +## `wohnen__baujahr_immobilie_hh` Construction year of dwelling Type: int -(vermögen_bedürft)= +(vermögen)= -## `vermögen_bedürft` +## `vermögen` Assets for means testing on individual level.{ref}`See this page for more details. ` Type: float -(entgeltp_west)= +(sozialversicherung__rente__entgeltpunkte_west)= -## `entgeltp_west` +## `sozialversicherung__rente__entgeltpunkte_west` Earnings points for pension claim accumulated in western states Type: float -(entgeltp_ost)= +(sozialversicherung__rente__entgeltpunkte_ost)= -## `entgeltp_ost` +## `sozialversicherung__rente__entgeltpunkte_ost` Earnings points for pension claim accumulated in eastern states Type: float -(grundr_zeiten)= +(sozialversicherung__rente__grundrente__grundrentenzeiten_monate)= -## `grundr_zeiten` +## `sozialversicherung__rente__grundrente__grundrentenzeiten_monate` -Number of months determining Grundrenteeligibility +Number of months determining eligibility for Grundrente. Type: int -(grundr_bew_zeiten)= +(sozialversicherung__rente__grundrente__bewertungszeiten_monate)= -## `grundr_bew_zeiten` +## `sozialversicherung__rente__grundrente__bewertungszeiten_monate` Number of months determining Grundrentepayments Type: int -(grundr_entgeltp)= +(sozialversicherung__rente__grundrente__mean_entgeltpunkte)= -## `grundr_entgeltp` +## `sozialversicherung__rente__grundrente__mean_entgeltpunkte` -Average `entgeltp` during`grundr_bew_zeiten` +Average `entgeltpunkte` during +`sozialversicherung__rente__grundrente__bewertungszeiten_monate` Type: float -(priv_rente_m)= +(sozialversicherung__rente__private_rente_betrag_m)= -## `priv_rente_m` +## `sozialversicherung__rente__private_rente_betrag_m` Amount of monthly private pension Type: float -(m_pflichtbeitrag)= +(sozialversicherung__rente__pflichtbeitragsmonate)= -## `m_pflichtbeitrag` +## `sozialversicherung__rente__pflichtbeitragsmonate` -Total months of mandatory pensioninsurance contributions +Total months of mandatory pension insurance contributions Type: float -(m_freiw_beitrag)= +(sozialversicherung__rente__freiwillige_beitragsmonate)= -## `m_freiw_beitrag` +## `sozialversicherung__rente__freiwillige_beitragsmonate` Total months of voluntary pensioninsurance contributions Type: float -(m_mutterschutz)= +(sozialversicherung__rente__monate_in_mutterschutz)= -## `m_mutterschutz` +## `sozialversicherung__rente__monate_in_mutterschutz` Total months of maternal protections Type: float -(m_arbeitsunfähig)= +(sozialversicherung__rente__monate_in_arbeitsunfähigkeit)= -## `m_arbeitsunfähig` +## `sozialversicherung__rente__monate_in_arbeitsunfähigkeit` Total months of sickness, rehabilitation,measures for worklife participation(Teilhabe) Type: float -(m_krank_ab_16_bis_24)= +(sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate)= -## `m_krank_ab_16_bis_24` +## `sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate` Months of sickness between age 16 and 24 Type: float -(m_arbeitsl)= +(sozialversicherung__rente__monate_in_arbeitslosigkeit)= -## `m_arbeitsl` +## `sozialversicherung__rente__monate_in_arbeitslosigkeit` Total months of unemployment (registered) Type: float -(m_ausbild_suche)= +(sozialversicherung__rente__monate_in_ausbildungssuche)= -## `m_ausbild_suche` +## `sozialversicherung__rente__monate_in_ausbildungssuche` Total months of apprenticeship search Type: float -(m_schul_ausbild)= +(sozialversicherung__rente__monate_in_schulausbildung)= -## `m_schul_ausbild` +## `sozialversicherung__rente__monate_in_schulausbildung` Months of schooling (incl college, unifrom age 17, max. 8 years) Type: float -(m_alg1_übergang)= +(sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit)= -## `m_alg1_übergang` +## `sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit` Total months of unemployment (only timeof Entgeltersatzleistungen, not ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld Type: float -(m_geringf_beschäft)= +(sozialversicherung__rente__monate_geringfügiger_beschäftigung)= -## `m_geringf_beschäft` +## `sozialversicherung__rente__monate_geringfügiger_beschäftigung` Total months of marginal employment (w/o mandatory contributions) Type: float -(m_ersatzzeit)= +(sozialversicherung__rente__ersatzzeiten_monate)= -## `m_ersatzzeit` +## `sozialversicherung__rente__ersatzzeiten_monate` Total months during military, persecution/escape, internment, and consecutive sickness Type: float -(m_kind_berücks_zeit)= +(sozialversicherung__rente__kinderberücksichtigungszeiten_monate)= -## `m_kind_berücks_zeit` +## `sozialversicherung__rente__kinderberücksichtigungszeiten_monate` Total months of childcare till age 10 Type: float -(m_pfleg_berücks_zeit)= +(sozialversicherung__rente__pflegeberücksichtigungszeiten_monate)= -## `m_pfleg_berücks_zeit` +## `sozialversicherung__rente__pflegeberücksichtigungszeiten_monate` Total months of home care provision (01.01.1992-31.03.1995) Type: float -(y_pflichtbeitr_ab_40)= +(sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40)= -## `y_pflichtbeitr_ab_40` +## `sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40` Total years of mandatory contributions after age 40 Type: float -(pflichtbeitr_8_in_10)= +(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10)= -## `pflichtbeitr_8_in_10` +## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10` Has at least 8 contribution years in past 10 years Type: bool -(arbeitsl_1y_past_585)= +(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb)= -## `arbeitsl_1y_past_585` +## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb` Has been unemployed at least 1 year after age 58.5 Type: bool -(vertra_arbeitsl_1997)= +(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997)= -## `vertra_arbeitsl_1997` +## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997` Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit implemented in 1997 (§ 237 SGB VI Abs. 4). Type: bool -(vertra_arbeitsl_2006)= +(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004)= -## `vertra_arbeitsl_2006` +## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004` -Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit -implemented in 2006 (§ 237 SGB VI Abs. 5). +Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit enacted +in July 2004 (§ 237 SGB VI Abs. 5). Type: bool -(höchster_bruttolohn_letzte_15_jahre_vor_rente_y)= +(sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y)= -## `höchster_bruttolohn_letzte_15_jahre_vor_rente_y` +## `sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y` Highest gross income from regular employment in the last 15 years before pension benefit claiming. Relevant to determine pension benefit deductions for retirees in early retirement. -(bürgerg_bezug_vorj)= +(arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr)= -## `bürgerg_bezug_vorj` +## `arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr` Received Bürgergeld in previous year Type: bool -(anwartschaftszeit)= +(sozialversicherung__arbeitslosen__anwartschaftszeit)= -## `anwartschaftszeit` +## `sozialversicherung__arbeitslosen__anwartschaftszeit` At least 12 months of unemployment contributions in the 30 months before claiming unemployment insurance Type: bool -(arbeitssuchend)= +(sozialversicherung__arbeitslosen__arbeitssuchend)= -## `arbeitssuchend` +## `sozialversicherung__arbeitslosen__arbeitssuchend` Looking for employment Type: bool -(m_durchg_alg1_bezug)= +(sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld)= -## `m_durchg_alg1_bezug` +## `sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld` -Months the individual already uninterruptedly receives Arbeitslosengeld +Number of months the individual already receives Arbeitslosengeld without interruption. Type: float -(sozialv_pflicht_5j)= +(sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren)= -## `sozialv_pflicht_5j` +## `sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren` Months of subjection to compulsory insurance in the 5 years before claiming unemployment insurance Type: float -## `kind_unterh_anspr_m` +## `unterhalt__anspruch_m` -Monthly gross child alimony payments to be received as determined by the court on child -level +Monthly gross child alimony payments to be received by the child as determined by the +court. Type: float -## `kind_unterh_erhalt_m` +## `unterhalt__tatsächlich_erhaltener_betrag_m` -Monthly actual child alimony payments received on child level +Child alimony payments the child actually receives. Type: float -(steuerklasse)= +(lohnsteuer__steuerklasse)= -## `steuerklasse` +## `lohnsteuer__steuerklasse` Tax Bracket (1 to 5) for withholding tax Type: int -## `budgetsatz_erzieh` +## `erziehungsgeld__budgetsatz` Applied for "Budgetsatz" of parental leave benefit Type: bool -## `voll_erwerbsgemind` +## `sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert` Unable to provide more than 3 hours of market labor per day. Type: bool -## `teilw_erwerbsgemind` +## `sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert` Able to provide at least 3 but no more than 6 hours of market labor per day. diff --git a/docs/gettsim_objects/means_testing.md b/docs/gettsim_objects/means_testing.md index 8d248140a7..174e5fcab3 100644 --- a/docs/gettsim_objects/means_testing.md +++ b/docs/gettsim_objects/means_testing.md @@ -10,8 +10,8 @@ This documentation shall help to understand the composition of the {ref}`basic input variable ` -'vermögen_bedürft'. Despite small differences over the transfers, we decided, for now, -to require only one wealth variable as input and use it for all transfers. +'vermögen'. Despite small differences over the transfers, we decided, for now, to +require only one wealth variable as input and use it for all transfers. Note that GETTSIM requests wealth on the individual level as input. This variable is then aggregated on the respective grouping level for each transfer (some transfers are diff --git a/docs/gettsim_objects/variables_out.md b/docs/gettsim_objects/variables_out.md index 2727ec1a90..bc8abdc076 100644 --- a/docs/gettsim_objects/variables_out.md +++ b/docs/gettsim_objects/variables_out.md @@ -8,40 +8,40 @@ You can find their individual calculation in the documentation of all {ref}`func ```{list-table} * - Variables - Description -* - {func}`ges_rentenv_beitr_arbeitnehmer_m <_gettsim.functions.all_functions_for_docs.ges_rentenv_beitr_arbeitnehmer_m>` +* - {func}`sozialversicherung__rente__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__rente__beitrag__betrag_versicherter_m>` - Monthly amount employee old-age pensions contributions -* - {func}`arbeitsl_v_beitr_arbeitnehmer_m <_gettsim.functions.all_functions_for_docs.arbeitsl_v_beitr_arbeitnehmer_m>` +* - {func}`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m>` - Monthly amount employee unempl. insurance contributions -* - {func}`ges_krankenv_beitr_arbeitnehmer_m <_gettsim.functions.all_functions_for_docs.ges_krankenv_beitr_arbeitnehmer_m>` +* - {func}`sozialversicherung__kranken__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__kranken__beitrag__betrag_versicherter_m>` - Monthly amount employee health insurance contributions -* - {func}`ges_pflegev_beitr_arbeitnehmer_m <_gettsim.functions.all_functions_for_docs.ges_pflegev_beitr_arbeitnehmer_m>` +* - {func}`sozialversicherung__pflege__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__pflege__beitrag__betrag_versicherter_m>` - Monthly amount of long term care insurance -* - {func}`arbeitsl_geld_m <_gettsim.functions.all_functions_for_docs.arbeitsl_geld_m>` +* - {func}`sozialversicherung__arbeitslosen__betrag_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__arbeitslosen__betrag_m>` - Monthly amount of unemployment assistance -* - {func}`entgeltp_update <_gettsim.functions.all_functions_for_docs.entgeltp_update>` +* - {func}`neue_entgeltpunkte <_gettsim.functions.all_functions_for_docs.neue_entgeltpunkte>` - Updated earning points for pension claim -* - {func}`abgelt_st_y_sn <_gettsim.functions.all_functions_for_docs.abgelt_st_y_sn>` +* - {func}`einkommensteuer__abgeltungssteuer__betrag_y_sn <_gettsim.functions.all_functions_for_docs.einkommensteuer__abgeltungssteuer__betrag_y_sn>` - Capital income tax on Steuernummer level -* - {func}`soli_st_y_sn <_gettsim.functions.all_functions_for_docs.soli_st_y_sn>` +* - {func}`solidaritätszuschlag__betrag_y_sn <_gettsim.functions.all_functions_for_docs.solidaritätszuschlag__betrag_y_sn>` - Solidarity surcharge on Steuernummer level -* - {func}`kindergeld_m <_gettsim.functions.all_functions_for_docs.kindergeld_m>` +* - {func}`kindergeld__betrag_m <_gettsim.functions.all_functions_for_docs.kindergeld__betrag_m>` - Monthly child benefit -* - {func}`eink_st_y_sn <_gettsim.functions.all_functions_for_docs.eink_st_y_sn>` +* - {func}`einkommensteuer__betrag_y_sn <_gettsim.functions.all_functions_for_docs.einkommensteuer__betrag_y_sn>` - Income Tax on Steuernummer level -* - {func}`lohnst_m` <_gettsim.functions.all_functions_for_docs.lohnst_m>` +* - {func}`lohnsteuer__betrag_m` <_gettsim.functions.all_functions_for_docs.lohnsteuer__betrag_m>` - Withholding tax -* - {func}`soli_st_lohnst_m <_gettsim.functions.all_functions_for_docs.soli_st_lohnst_m>` +* - {func}`lohnsteuer__betrag_soli_m <_gettsim.functions.all_functions_for_docs.lohnsteuer__betrag_soli_m>` - Solidarity surcharge on withholding tax -* - {func}`unterhaltsvors_m <_gettsim.functions.all_functions_for_docs.unterhaltsvors_m>` +* - {func}`unterhaltsvorschuss__betrag_m <_gettsim.functions.all_functions_for_docs.unterhaltsvorschuss__betrag_m>` - Alimony advance payment -* - {func}`arbeitsl_geld_2_m_bg <_gettsim.functions.all_functions_for_docs.arbeitsl_geld_2_m_bg>` +* - {func}`arbeitslosengeld_2__betrag_m_bg <_gettsim.functions.all_functions_for_docs.arbeitslosengeld_2__betrag_m_bg>` - Monthly subsistence payment on household level -* - {func}`kinderzuschl_m_bg <_gettsim.functions.all_functions_for_docs.kinderzuschl_m_bg>` +* - {func}`kinderzuschlag__betrag_m_bg <_gettsim.functions.all_functions_for_docs.kinderzuschlag__betrag_m_bg>` - Monthly additional child benefit, household sum -* - {func}`elterngeld_m <_gettsim.functions.all_functions_for_docs.elterngeld_m>` +* - {func}`elterngeld__betrag_m <_gettsim.functions.all_functions_for_docs.elterngeld__betrag_m>` - Monthly parental leave benefit -* - {func}`wohngeld_m_wthh <_gettsim.functions.all_functions_for_docs.wohngeld_m_wthh>` +* - {func}`wohngeld__betrag_m_wthh <_gettsim.functions.all_functions_for_docs.wohngeld__betrag_m_wthh>` - Monthly housing benefit on household level -* - {func}`grunds_im_alter_m_eg <_gettsim.functions.all_functions_for_docs.grunds_im_alter_m_eg>` +* - {func}`grundsicherung__im_alter__betrag_m_eg <_gettsim.functions.all_functions_for_docs.grundsicherung__im_alter__betrag_m_eg>` - Monthly subsistence payment for retirees on household level ``` diff --git a/docs/how_to_guides/calculating_elterngeld.ipynb b/docs/how_to_guides/calculating_elterngeld.ipynb index 8fc10e3265..6829743e3a 100644 --- a/docs/how_to_guides/calculating_elterngeld.ipynb +++ b/docs/how_to_guides/calculating_elterngeld.ipynb @@ -14,10 +14,10 @@ "\n", "In principle, one can compute Elterngeld in three steps:\n", "1. Compute the average monthly gross income before birth in the data.\n", - "2. Call GETTSIM with the target `elterngeld_nettolohn_approximation_m` using the policy\n", + "2. Call GETTSIM with the target `elterngeld__nettoeinkommen_approximation_m` using the policy\n", " environment of the year **before** the child was born.\n", - "3. Call GETTSIM with the target `elterngeld_m` using the outcome of step 2 as the input\n", - " for `elterngeld_nettoeinkommen_vorjahr_m` and the policy environment of the year the\n", + "3. Call GETTSIM with the target `elterngeld__betrag_m` using the outcome of step 2 as the input\n", + " for `elterngeld__nettoeinkommen_vorjahr_m` and the policy environment of the year the\n", " child was born.\n", "\n", "In the following, we will explain some more details." @@ -82,11 +82,11 @@ "> Grundsätzlich sind die Abzugsmerkmale maßgeblich, die in der überwiegenden Zahl der\n", "> Monate des Bemessungszeitraums vor Geburt des Kindes gegolten haben.\n", "\n", - "So it is up to the data preparer to find out which tax class (Lohnsteuerklasse), church\n", - "tax (Kirchensteuer), health insurance, etc. to set. The Lohnsteuerklasse, for example, is always set\n", + "So it is up to the data preparer to find out which tax class (Steuerklasse), church\n", + "tax (Kirchensteuer), health insurance, etc. to set. The Steuerklasse, for example, is always set\n", "on a yearly basis; if it changes with the start of the calendar year a child is born,\n", - "the date of birth matters. Up to June, the Lohnsteuerklasse from the previous calendar\n", - "year will be relevant; for July or later, the Lohnsteuerklasse from the current calendar\n", + "the date of birth matters. Up to June, the Steuerklasse from the previous calendar\n", + "year will be relevant; for July or later, the Steuerklasse from the current calendar\n", "year will be relevant." ] }, @@ -100,7 +100,9 @@ " n_adults=2,\n", " n_children=0,\n", " specs_heterogeneous={\n", - " \"bruttolohn_m\": [[2000.0, 0.0]],\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " [2000.0, 0.0]\n", + " ],\n", " },\n", ")" ] @@ -112,8 +114,8 @@ "### Step 2: Approximate net wage before birth\n", "\n", "GETTSIM provides an easy way to compute the relevant net wage\n", - "`elterngeld_nettoeinkommen_vorjahr_m` based on step 1 using the target\n", - "`elterngeld_nettolohn_approximation_m`.\n", + "`elterngeld__nettoeinkommen_vorjahr_m` based on step 1 using the target\n", + "`elterngeld__nettoeinkommen_approximation_m`.\n", "\n", "We use the policy environment of January 1st of the year before the child was born (§2e\n", "Abs. 1 S. 2 BEEG). Note that this is correct regardless of the point in time when the\n", @@ -133,7 +135,7 @@ "net_wage_approximation = compute_taxes_and_transfers(\n", " data=data_before_birth,\n", " environment=environment_2023,\n", - " targets=[\"elterngeld_nettolohn_approximation_m\"],\n", + " targets=[\"elterngeld__nettoeinkommen_approximation_m\"],\n", ")\n", "\n", "net_wage_approximation" @@ -145,7 +147,7 @@ "source": [ "### Step 3: Compute Elterngeld\n", "\n", - "Finally, we can compute Elterngeld using the target `elterngeld_m` and the net wage\n", + "Finally, we can compute Elterngeld using the target `elterngeld__betrag_m` and the net wage\n", "information from step 2.\n", "\n", "The reason for not doing this in one GETTSIM call (together with step 2) is that \n", @@ -167,11 +169,13 @@ " n_adults=2,\n", " n_children=1,\n", " specs_heterogeneous={\n", - " \"bruttolohn_m\": [[0.0, 0.0, 0.0]],\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " [0.0, 0.0, 0.0]\n", + " ],\n", " \"geburtsjahr\": [[1980, 1980, 2024]],\n", " \"geburtsmonat\": [[1, 1, 7]],\n", " \"alter\": [[44, 44, 0]],\n", - " \"elterngeld_claimed\": [[True, False, False]], # First adult claims Elterngeld\n", + " \"elterngeld__claimed\": [[True, False, False]], # First adult claims Elterngeld\n", " },\n", ")" ] @@ -180,7 +184,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then, we add `elterngeld_nettoeinkommen_vorjahr_m` to the data based on step 2." + "Then, we add `elterngeld__nettoeinkommen_vorjahr_m` to the data based on step 2." ] }, { @@ -190,8 +194,8 @@ "outputs": [], "source": [ "# Add net wage approximation\n", - "data_after_birth[\"elterngeld_nettoeinkommen_vorjahr_m\"] = net_wage_approximation[\n", - " \"elterngeld_nettolohn_approximation_m\"\n", + "data_after_birth[\"elterngeld__nettoeinkommen_vorjahr_m\"] = net_wage_approximation[\n", + " \"elterngeld__nettoeinkommen_approximation_m\"\n", "]" ] }, @@ -214,7 +218,7 @@ "results = compute_taxes_and_transfers(\n", " data=data_after_birth,\n", " environment=environment_2024,\n", - " targets=[\"elterngeld_m\"],\n", + " targets=[\"elterngeld__betrag_m\"],\n", ")\n", "\n", "results" diff --git a/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb b/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb index 5aaf3e4ff4..b5d5492a44 100644 --- a/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb +++ b/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb @@ -42,7 +42,7 @@ "source": [ "## A Single Function\n", "\n", - "One way to pass a single function to the tax and transfer system is alongside the `policy_functions`. As an example, we create a function called `kindergeld_m`. The function has no body because it is irrelevant for this guide. The function can be passed to `compute_taxes_and_transfers` alongside the `policy_functions` by placing both objects in a list." + "One way to pass a single function to the tax and transfer system is alongside the `policy_functions`. As an example, we create a function called `kindergeld__betrag_m`. The function has no body because it is irrelevant for this guide. The function can be passed to `compute_taxes_and_transfers` alongside the `policy_functions` by placing both objects in a list." ] }, { @@ -51,7 +51,7 @@ "metadata": {}, "outputs": [], "source": [ - "def kindergeld_m():\n", + "def kindergeld__betrag_m():\n", " pass" ] }, @@ -65,37 +65,37 @@ "df = compute_taxes_and_transfers(\n", " data=data,\n", " params=policy_params,\n", - " functions=[policy_functions, kindergeld_m],\n", - " targets=\"kindergeld_m_hh\",\n", + " functions=[policy_functions, kindergeld__betrag_m],\n", + " targets=\"kindergeld__betrag_m_hh\",\n", ")\n", "```\n", "\n", "There are three important points.\n", "\n", - "1. Note that, `kindergeld_m_hh` has the same function name as a [pre-defined function](https://gettsim.readthedocs.io/en/stable/gettsim_objects/functions.html#gettsim.functions.kindergeld_m_hh) inside gettsim. Thus, the internal function will be replaced with this version.\n", + "1. Note that, `kindergeld__betrag_m_hh` has the same function name as a [pre-defined function](https://gettsim.readthedocs.io/en/stable/gettsim_objects/functions.html#gettsim.functions.kindergeld__betrag_m_hh) inside gettsim. Thus, the internal function will be replaced with this version.\n", "\n", "2. In general, if there are multiple functions with the same name, internal functions have the lowest precedence. After that, the elements in the list passed to the `functions` argument are evaluated element by element. The leftmost element has the lowest precedence and the rightmost element the highest.\n", "\n", - "3. If `policy_functions` would not be necessary for this example, you can also directly pass the `kindergeld_m` function to the `functions` argument.\n", + "3. If `policy_functions` would not be necessary for this example, you can also directly pass the `kindergeld__betrag_m` function to the `functions` argument.\n", "\n", " ```python\n", " df = compute_taxes_and_transfers(\n", " ...,\n", - " functions=kindergeld_m,\n", + " functions=kindergeld__betrag_m,\n", " ...,\n", " )\n", " ```\n", " \n", "## Multiple Functions\n", "\n", - "If you want to pass multiple functions to `compute_taxes_and_transfers`, add all functions to the list. Assume we also want to override `kindergeld_m` and have a function for that as well. Then, the call looks like this:\n", + "If you want to pass multiple functions to `compute_taxes_and_transfers`, add all functions to the list. Assume we also want to override `kindergeld__betrag_m` and have a function for that as well. Then, the call looks like this:\n", "\n", "```python\n", "df = compute_taxes_and_transfers(\n", " data=data,\n", " params=policy_params,\n", - " functions=[policy_functions, kindergeld_m_hh, kindergeld_m],\n", - " targets=\"kindergeld_m\",\n", + " functions=[policy_functions, kindergeld__betrag_m_hh, kindergeld__betrag_m],\n", + " targets=\"kindergeld__betrag_m\",\n", ")\n", "```" ] @@ -118,11 +118,11 @@ "# Content of kindergeld.py\n", "\n", "\n", - "def kindergeld_m_hh_constant_per_hh():\n", + "def kindergeld__betrag_m_hh_constant_per_hh():\n", " pass\n", "\n", "\n", - "def kindergeld_m_hh_constant_per_child():\n", + "def kindergeld__betrag_m_hh_constant_per_child():\n", " pass" ] }, @@ -130,21 +130,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Since the functions do not have the same name as the original function `kindergeld_m_hh`, they would not override this function if we pass one of them to `compute_taxes_and_transfers`. To solve this issue, we can use dictionaries.\n", + "Since the functions do not have the same name as the original function `kindergeld__betrag_m_hh`, they would not override this function if we pass one of them to `compute_taxes_and_transfers`. To solve this issue, we can use dictionaries.\n", "\n", "The keys of the dictionary are the names which will be used for the functions which are the values of the dictionary. The following code snippet shows the pseudo-code for the task (note that the index of `simulated_data` would eventually contain repeated values, in an actual application you would want to add a level indicating the type of function used):\n", "\n", "```python\n", "simulated_data = []\n", "for func in [\n", - " kindergeld_m_hh_constant_per_hh,\n", - " kindergeld_m_hh_constant_per_child,\n", + " kindergeld__betrag_m_hh_constant_per_hh,\n", + " kindergeld__betrag_m_hh_constant_per_child,\n", "]:\n", " df = compute_taxes_and_transfers(\n", " data=data,\n", " params=policy_params,\n", - " functions=[policy_functions, {\"kindergeld_m_hh\": func}],\n", - " targets=\"kindergeld_m\",\n", + " functions=[policy_functions, {\"kindergeld__betrag_m_hh\": func}],\n", + " targets=\"kindergeld__betrag_m\",\n", " )\n", " simulated_data = pd.concat(objs=[simulated_data, df])\n", "```" diff --git a/docs/how_to_guides/visualizing_the_system.ipynb b/docs/how_to_guides/visualizing_the_system.ipynb index 8a81205239..6f9ed09edf 100644 --- a/docs/how_to_guides/visualizing_the_system.ipynb +++ b/docs/how_to_guides/visualizing_the_system.ipynb @@ -61,13 +61,13 @@ "id": "6", "metadata": {}, "source": [ - "Functions inside GETTSIM are a little bit special. Take for example `abgelt_st_y_sn`\n", + "Functions inside GETTSIM are a little bit special. Take for example `einkommensteuer__abgeltungssteuer__betrag_y_sn`\n", "which is documented\n", - "[here](https://gettsim.readthedocs.io/en/stable/gettsim_objects/functions.html#gettsim.functions.abgelt_st_y_sn).\n", + "[here](https://gettsim.readthedocs.io/en/stable/gettsim_objects/functions.html#gettsim.functions.einkommensteuer__abgeltungssteuer__betrag_y_sn).\n", "The signature of the function is\n", "\n", "```python\n", - "def abgelt_st_y_sn(zu_verst_kapitaleink_y_sn, abgelt_st_params):\n", + "def einkommensteuer__abgeltungssteuer__betrag_y_sn(einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn, abgelt_st_params):\n", " pass\n", "```\n", "\n", @@ -77,15 +77,15 @@ "which, in turn, also relies on some arguments.\n", "\n", "Here, ``abgelt_st_params`` is a paramter file which includes paramters needed to\n", - "calculate the capital income tax. ``zu_verst_kapitaleink_y_sn`` on the other hand is\n", + "calculate the capital income tax. ``einkommensteuer__abgeltungssteuer__betrag_y_sn`` on the other hand is\n", "itself a function which is documented\n", "[here](https://gettsim.readthedocs.io/en/stable/gettsim_objects/functions.html#gettsim.functions.zu_verst_kapital_eink_sn).\n", - "By using ``zu_verst_kapitaleink_y_sn`` as an argument name, GETTSIM knows to pass the\n", - "data computed by the function ``zu_verst_kapitaleink_y_sn`` to ``abgelt_st_y_sn``.\n", + "By using ``einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`` as an argument name, GETTSIM knows to pass the\n", + "data computed by the function ``einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`` to ``einkommensteuer__abgeltungssteuer__betrag_y_sn``.\n", "\n", "This dependency relationship can be analyzed for all functions passed to GETTSIM and be\n", "visualized in a dag. Below you can see a plot of all variables which are directly\n", - "connected to ``zu_verst_kapitaleink_y_sn``. The arrows point from dependencies to\n", + "connected to ``einkommensteuer__abgeltungssteuer__betrag_y_sn``. The arrows point from dependencies to\n", "dependents. Each node is either a functions or a variable." ] }, @@ -98,7 +98,12 @@ "source": [ "plot_dag(\n", " environment=environment,\n", - " selectors=[{\"node\": \"zu_verst_kapitaleink_y_sn\", \"type\": \"neighbors\"}],\n", + " selectors=[\n", + " {\n", + " \"node\": \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + " \"type\": \"neighbors\",\n", + " }\n", + " ],\n", ").show()" ] }, @@ -153,7 +158,12 @@ "source": [ "plot_dag(\n", " environment=environment,\n", - " selectors=[{\"node\": \"zu_verst_kapitaleink_y_sn\", \"type\": \"neighbors\"}],\n", + " selectors=[\n", + " {\n", + " \"node\": \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + " \"type\": \"neighbors\",\n", + " }\n", + " ],\n", " orientation=\"h\",\n", ").show()" ] @@ -183,7 +193,9 @@ "source": [ "plot_dag(\n", " environment=environment,\n", - " selectors=[{\"node\": \"geringfügig_beschäftigt\", \"type\": \"descendants\"}],\n", + " selectors=[\n", + " {\"node\": \"sozialversicherung__geringfügig_beschäftigt\", \"type\": \"descendants\"}\n", + " ],\n", " orientation=\"h\",\n", ").show()" ] @@ -203,7 +215,10 @@ "metadata": {}, "outputs": [], "source": [ - "selector = {\"type\": \"descendants\", \"node\": \"geringfügig_beschäftigt\"}\n", + "selector = {\n", + " \"type\": \"descendants\",\n", + " \"node\": \"sozialversicherung__geringfügig_beschäftigt\",\n", + "}\n", "plot_dag(\n", " environment=environment, show_labels=False, selectors=selector, orientation=\"h\"\n", ").show()" @@ -234,7 +249,12 @@ "source": [ "plot_dag(\n", " environment=environment,\n", - " selectors=[{\"node\": \"zu_verst_kapitaleink_y_sn\", \"type\": \"neighbors\"}],\n", + " selectors=[\n", + " {\n", + " \"node\": \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + " \"type\": \"neighbors\",\n", + " }\n", + " ],\n", " orientation=\"h\",\n", " hover_source_code=True,\n", ").show()" @@ -261,7 +281,7 @@ "metadata": {}, "outputs": [], "source": [ - "selectors = \"kapitaleink_brutto_y_sn\"\n", + "selectors = \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\"\n", "\n", "plot_dag(environment=environment, selectors=selectors, orientation=\"h\").show()" ] @@ -281,7 +301,10 @@ "metadata": {}, "outputs": [], "source": [ - "selectors = [\"kapitaleink_brutto_y_sn\", \"zu_verst_kapitaleink_y_sn\"]\n", + "selectors = [\n", + " \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\",\n", + " \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + "]\n", "\n", "plot_dag(environment=environment, selectors=selectors, orientation=\"h\").show()" ] @@ -303,7 +326,10 @@ "source": [ "selector = {\n", " \"type\": \"nodes\",\n", - " \"node\": [\"kapitaleink_brutto_y_sn\", \"zu_verst_kapitaleink_y_sn\"],\n", + " \"node\": [\n", + " \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\",\n", + " \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + " ],\n", " \"select\": True, # optional\n", "}" ] @@ -333,9 +359,9 @@ "- If no selectors are provided, de-selectors de-select nodes from the complete DAG.\n", "- Selection and de-selection works for all selector types which follow.\n", "\n", - "For a simple and silly example, we want to reproduce the graph with the single node for `kapitaleink_brutto_y_sn` after, but starting from the last plot which also showed `zu_verst_kapitaleink_y_sn`.\n", + "For a simple and silly example, we want to reproduce the graph with the single node for `einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn` after, but starting from the last plot which also showed `einkommensteuer__abgeltungssteuer__betrag_y_sn`.\n", "\n", - "First, we define the selectors. The first selector or dictionary in the list selects the two nodes. Note that the `\"select\"` key is `True` by default. The second key in the de-selects `\"zu_verst_kapitaleink_y_sn\"`." + "First, we define the selectors. The first selector or dictionary in the list selects the two nodes. Note that the `\"select\"` key is `True` by default. The second key in the de-selects `\"einkommensteuer__abgeltungssteuer__betrag_y_sn\"`." ] }, { @@ -348,11 +374,14 @@ "selectors = [\n", " {\n", " \"type\": \"nodes\",\n", - " \"node\": [\"kapitaleink_brutto_y_sn\", \"zu_verst_kapitaleink_y_sn\"],\n", + " \"node\": [\n", + " \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\",\n", + " \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + " ],\n", " },\n", " {\n", " \"type\": \"nodes\",\n", - " \"node\": \"zu_verst_kapitaleink_y_sn\",\n", + " \"node\": \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", " \"select\": False,\n", " },\n", "]\n", @@ -366,7 +395,7 @@ "source": [ "### Ancestors and Descendants\n", "\n", - "Two other types of selectors allow you to pick one node and all nodes which appear before or after this node. We call the nodes ancestors or descendants, respectively. To select `\"zu_verst_kapitaleink_y_sn\"` which is the calculated taxable capital income per Steuernummer and all its ancestors, do the following." + "Two other types of selectors allow you to pick one node and all nodes which appear before or after this node. We call the nodes ancestors or descendants, respectively. To select `\"einkommensteuer__abgeltungssteuer__betrag_y_sn\"` which is the calculated taxable capital income per Steuernummer and all its ancestors, do the following." ] }, { @@ -376,7 +405,10 @@ "metadata": {}, "outputs": [], "source": [ - "selector = {\"type\": \"ancestors\", \"node\": \"zu_verst_kapitaleink_y_sn\"}\n", + "selector = {\n", + " \"type\": \"ancestors\",\n", + " \"node\": \"einkommensteuer__abgeltungssteuer__betrag_y_sn\",\n", + "}\n", "plot_dag(environment=environment, selectors=selector, orientation=\"h\").show()" ] }, @@ -385,7 +417,7 @@ "id": "33", "metadata": {}, "source": [ - "To see the variables which are explicitly and implicitly dependent on the information in `\"geringfügig_beschäftigt\"` use the type `\"descendants\"`." + "To see the variables which are explicitly and implicitly dependent on the information in `\"sozialversicherung__geringfügig_beschäftigt\"` use the type `\"descendants\"`." ] }, { @@ -395,7 +427,10 @@ "metadata": {}, "outputs": [], "source": [ - "selector = {\"type\": \"descendants\", \"node\": \"geringfügig_beschäftigt\"}\n", + "selector = {\n", + " \"type\": \"descendants\",\n", + " \"node\": \"sozialversicherung__geringfügig_beschäftigt\",\n", + "}\n", "plot_dag(environment=environment, selectors=selector, orientation=\"h\").show()" ] }, @@ -406,7 +441,7 @@ "source": [ "### Neighbors\n", "\n", - "Another common way to look at a graph is to visualize a node and its neighbors, its ancestors and descendants. Let us take a look at `\"kapitaleink_brutto_y_sn\"` again and visualize its direct neighbors." + "Another common way to look at a graph is to visualize a node and its neighbors, its ancestors and descendants. Let us take a look at `\"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\"` again and visualize its direct neighbors." ] }, { @@ -416,7 +451,10 @@ "metadata": {}, "outputs": [], "source": [ - "selector = {\"type\": \"neighbors\", \"node\": \"kapitaleink_brutto_y_sn\"}\n", + "selector = {\n", + " \"type\": \"neighbors\",\n", + " \"node\": \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\",\n", + "}\n", "plot_dag(environment=environment, selectors=selector, orientation=\"h\").show()" ] }, @@ -435,7 +473,11 @@ "metadata": {}, "outputs": [], "source": [ - "selector = {\"type\": \"neighbors\", \"node\": \"kapitaleink_brutto_y_sn\", \"order\": 2}\n", + "selector = {\n", + " \"type\": \"neighbors\",\n", + " \"node\": \"einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn\",\n", + " \"order\": 2,\n", + "}\n", "plot_dag(environment=environment, selectors=selector, orientation=\"h\").show()" ] } diff --git a/docs/rtd_environment.yml b/docs/rtd_environment.yml index 2a8e760ea6..810a77a09e 100644 --- a/docs/rtd_environment.yml +++ b/docs/rtd_environment.yml @@ -11,7 +11,7 @@ dependencies: # gettsim dependencies - astor - - dags + - dags>=0.3.0 - ipywidgets - networkx - numpy @@ -33,5 +33,3 @@ dependencies: - sphinx-copybutton - pip: - -e ../ - - git+https://github.com/OpenSourceEconomics/dags - - flatten_dict diff --git a/docs/tutorials/advanced_usage.ipynb b/docs/tutorials/advanced_usage.ipynb index 90ce009b50..c6a59fb983 100644 --- a/docs/tutorials/advanced_usage.ipynb +++ b/docs/tutorials/advanced_usage.ipynb @@ -92,14 +92,14 @@ "metadata": {}, "outputs": [], "source": [ - "selectors = {\"type\": \"ancestors\", \"node\": \"kindergeld_m\"}" + "selectors = {\"type\": \"ancestors\", \"node\": \"kindergeld__betrag_m\"}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Since we are interested in the child benefits, we select the node `kindergeld_m` and plot its `ancestors`, which are all the nodes `kindergeld_m` directly or indirectly depends on. As the plot below shows, the variable depends on many other nodes and generates a very large DAG. Clicking on a node links to the according function or variable." + "Since we are interested in the child benefits, we select the node `kindergeld__betrag_m` and plot its `ancestors`, which are all the nodes `kindergeld__betrag_m` directly or indirectly depends on. As the plot below shows, the variable depends on many other nodes and generates a very large DAG. Clicking on a node links to the according function or variable." ] }, { @@ -117,8 +117,8 @@ "source": [ "An alternative way to inspect the variable is by looking at its neighbors in the DAG.\n", "This depiction shows the related variables and functions up to two nodes away from\n", - "`kindergeld_m`. It reveals `descendants` of `kindergeld_m`: `kindergeld_m_bg` and\n", - "`kindergeld_m_eg`. These variables contain the child benefits on Bedarfsgemeinschaften\n", + "`kindergeld__betrag_m`. It reveals `descendants` of `kindergeld__betrag_m`: `kindergeld__betrag_m_bg` and\n", + "`kindergeld__betrag_m_eg`. These variables contain the child benefits on Bedarfsgemeinschaften\n", "level and Einstandsgemeinschaften level." ] }, @@ -128,7 +128,7 @@ "metadata": {}, "outputs": [], "source": [ - "selectors = {\"type\": \"neighbors\", \"node\": \"kindergeld_m\", \"order\": 2}\n", + "selectors = {\"type\": \"neighbors\", \"node\": \"kindergeld__betrag_m\", \"order\": 2}\n", "plot_dag(environment, selectors=selectors).show()" ] }, @@ -150,7 +150,7 @@ "\n", "We simulate a dataset using `create_synthetic_data`. We can easily specify a few variables while all other necessary input variabels will be filled with defaults. \n", "\n", - "The specification chosen here creates a set of households with two adults and two children. The households vary in the variable `bruttolohn_m` and are otherwise identical." + "The specification chosen here creates a set of households with two adults and two children. The households vary in the variable `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m` and are otherwise identical." ] }, { @@ -163,7 +163,9 @@ " n_adults=2,\n", " n_children=2,\n", " specs_heterogeneous={\n", - " \"bruttolohn_m\": [[i, 0, 0, 0] for i in np.linspace(1000, 8000, 701)]\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " [i, 0, 0, 0] for i in np.linspace(1000, 8000, 701)\n", + " ]\n", " },\n", ")" ] @@ -174,7 +176,15 @@ "metadata": {}, "outputs": [], "source": [ - "data[[\"hh_id\", \"hh_typ\", \"alter\", \"kind\", \"bruttolohn_m\"]]" + "data[\n", + " [\n", + " \"hh_id\",\n", + " \"hh_typ\",\n", + " \"alter\",\n", + " \"familie__kind\",\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\",\n", + " ]\n", + "]" ] }, { @@ -182,7 +192,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Adults' monthly gross earnings range between €1,000 and €8,000. It is captured in the variable `bruttolohn_m`. We can use the pandas function [pandas.DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.describe.html) to assess the variable in detail." + "Adults' monthly gross earnings range between €1,000 and €8,000. It is captured in the variable `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. We can use the pandas function [pandas.DataFrame.describe](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.describe.html) to assess the variable in detail." ] }, { @@ -191,14 +201,16 @@ "metadata": {}, "outputs": [], "source": [ - "data[\"bruttolohn_m\"].describe()" + "data[\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\"\n", + "].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The columns contain all the input variables needed to compute `kindergeld_m`." + "The columns contain all the input variables needed to compute `kindergeld__betrag_m`." ] }, { @@ -230,7 +242,7 @@ "outputs": [], "source": [ "result = compute_taxes_and_transfers(\n", - " data=data, environment=environment, targets=\"kindergeld_m\"\n", + " data=data, environment=environment, targets=\"kindergeld__betrag_m\"\n", ")\n", "result.head(3)" ] @@ -259,7 +271,7 @@ "result = compute_taxes_and_transfers(\n", " data=incomplete_data,\n", " environment=environment,\n", - " targets=\"kindergeld_m\",\n", + " targets=\"kindergeld__betrag_m\",\n", ")" ] }, @@ -283,7 +295,7 @@ "result = compute_taxes_and_transfers(\n", " data=pd.DataFrame({\"p_id\": []}),\n", " environment=environment,\n", - " targets=\"kindergeld_m\",\n", + " targets=\"kindergeld__betrag_m\",\n", ")" ] }, @@ -312,7 +324,7 @@ "source": [ "#### Income Taxes\n", "\n", - "The income tax of a household depends on the child benefit since the tax credit is only claimed if it more beneficial than the child benefit. To compare, we can additionally compute the income taxes for our data set `eink_st_y_hh`. We also compute the variable `bruttolohn_y_hh`, which gives the monthly gross income per household (in our case, this is the combined income of the two adults in the household). " + "The income tax of a household depends on the child benefit since the tax credit is only claimed if it more beneficial than the child benefit. To compare, we can additionally compute the income taxes for our data set `einkommensteuer__betrag_y_hh`. We also compute the variable `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh`, which gives the monthly gross income per household (in our case, this is the combined income of the two adults in the household). " ] }, { @@ -324,7 +336,11 @@ "df = compute_taxes_and_transfers(\n", " data=data,\n", " environment=environment,\n", - " targets=[\"eink_st_y_sn\", \"bruttolohn_y_hh\", \"kindergeld_y_hh\"],\n", + " targets=[\n", + " \"einkommensteuer__betrag_y_sn\",\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh\",\n", + " \"kindergeld_y_hh\",\n", + " ],\n", ")" ] }, @@ -332,7 +348,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we aggregate `eink_st_y_sn` to the household level and drop unused variables as\n", + "Next, we aggregate `einkommensteuer__betrag_y_sn` to the household level and drop unused variables as\n", "well as duplicates from our DataFrame. The final DataFrame contains the yearly gross\n", "income, income tax, child benefit, and number of children in the household." ] @@ -343,11 +359,19 @@ "metadata": {}, "outputs": [], "source": [ - "# Aggregate eink_st_y_hh on the household level.\n", + "# Aggregate einkommensteuer__betrag_y_hh on the household level.\n", "df = df.join(data[\"hh_id\"])\n", - "df[\"eink_st_y_hh\"] = df.groupby(\"hh_id\")[\"eink_st_y_sn\"].transform(\"sum\")\n", + "df[\"einkommensteuer__betrag_y_hh\"] = df.groupby(\"hh_id\")[\n", + " \"einkommensteuer__betrag_y_sn\"\n", + "].transform(\"sum\")\n", "# Select variables of interest for further steps.\n", - "df = df[[\"bruttolohn_y_hh\", \"eink_st_y_hh\", \"kindergeld_y_hh\"]].drop_duplicates()\n", + "df = df[\n", + " [\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh\",\n", + " \"einkommensteuer__betrag_y_hh\",\n", + " \"kindergeld_y_hh\",\n", + " ]\n", + "].drop_duplicates()\n", "df.head().round(2)" ] }, @@ -370,8 +394,8 @@ "\n", " return px.line(\n", " data_frame=df,\n", - " x=\"bruttolohn_y_hh\",\n", - " y=[\"eink_st_y_hh\", \"kindergeld_y_hh\"],\n", + " x=\"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh\",\n", + " y=[\"einkommensteuer__betrag_y_hh\", \"kindergeld_y_hh\"],\n", " )" ] }, @@ -392,7 +416,7 @@ "\n", "Lastly, it is also possible to substitute internally computed variables using input columns in the data.\n", "\n", - "For instance, for this application we could override the internal function `kindergeld_m` and set the child benefit to 0. " + "For instance, for this application we could override the internal function `kindergeld__betrag_m` and set the child benefit to 0. " ] }, { @@ -402,7 +426,7 @@ "outputs": [], "source": [ "new_data = data.copy()\n", - "new_data[\"kindergeld_m\"] = 0.0" + "new_data[\"kindergeld__betrag_m\"] = 0.0" ] }, { @@ -421,7 +445,11 @@ "outputs = compute_taxes_and_transfers(\n", " data=new_data,\n", " environment=environment,\n", - " targets=[\"kindergeld_y_hh\", \"eink_st_y_sn\", \"bruttolohn_y_hh\"],\n", + " targets=[\n", + " \"kindergeld_y_hh\",\n", + " \"einkommensteuer__betrag_y_sn\",\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh\",\n", + " ],\n", ")" ] }, @@ -431,13 +459,19 @@ "metadata": {}, "outputs": [], "source": [ - "# Aggregate eink_st_y_hh on the household level.\n", + "# Aggregate einkommensteuer__betrag_y_hh on the household level.\n", "outputs = outputs.join(new_data[\"hh_id\"])\n", - "outputs[\"eink_st_y_hh\"] = outputs.groupby(\"hh_id\")[\"eink_st_y_sn\"].transform(\"sum\")\n", + "outputs[\"einkommensteuer__betrag_y_hh\"] = outputs.groupby(\"hh_id\")[\n", + " \"einkommensteuer__betrag_y_sn\"\n", + "].transform(\"sum\")\n", "\n", "df_new = outputs.set_index(new_data.hh_id)\n", "df_new = df_new[\n", - " [\"bruttolohn_y_hh\", \"eink_st_y_hh\", \"kindergeld_y_hh\"]\n", + " [\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_hh\",\n", + " \"einkommensteuer__betrag_y_hh\",\n", + " \"kindergeld_y_hh\",\n", + " ]\n", "].drop_duplicates()" ] }, @@ -475,9 +509,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Retirement earnings (`ges_rente_m`) can be calculated by GETTSIM which requires several input variables including `entgeltp` or `grundr_zeiten`. \n", + "Retirement earnings (`sozialversicherung__rente__altersrente__betrag_m`) can be calculated by GETTSIM which requires several input variables including `entgeltp` or `sozialversicherung__rente__grundrente__grundrentenzeiten_monate`. \n", "\n", - "However, in most data sets (e.g. the SOEP) retirement earnings are observed and those input variables are not. For some applications, it is, hence, more straight-forward to specify `ges_rente_m` directly as an input variable. Then the pension-specific input variables like `entgeltp` or `grundr_zeiten` are not needed as input variables.\n", + "However, in most data sets (e.g. the SOEP) retirement earnings are observed and those input variables are not. For some applications, it is, hence, more straight-forward to specify `sozialversicherung__rente__altersrente__betrag_m` directly as an input variable. Then the pension-specific input variables like `entgeltp` or `sozialversicherung__rente__grundrente__grundrentenzeiten_monate` are not needed as input variables.\n", "\n" ] } diff --git a/docs/tutorials/basic_usage.ipynb b/docs/tutorials/basic_usage.ipynb index 16aadde220..da88fc9a49 100644 --- a/docs/tutorials/basic_usage.ipynb +++ b/docs/tutorials/basic_usage.ipynb @@ -184,7 +184,13 @@ "data = create_synthetic_data(\n", " n_adults=2,\n", " n_children=1,\n", - " specs_constant_over_households={\"bruttolohn_m\": [2000.0, 1000.0, 0.0]},\n", + " specs_constant_over_households={\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " 2000.0,\n", + " 1000.0,\n", + " 0.0,\n", + " ]\n", + " },\n", ")\n", "# Transpose data for better readability\n", "data.T" @@ -223,10 +229,10 @@ "source": [ "# Create list of target variables.\n", "targets = [\n", - " \"ges_krankenv_beitr_arbeitnehmer_m\",\n", - " \"ges_rentenv_beitr_arbeitnehmer_m\",\n", - " \"arbeitsl_v_beitr_arbeitnehmer_m\",\n", - " \"ges_pflegev_beitr_arbeitnehmer_m\",\n", + " \"sozialversicherung__kranken__beitrag__betrag_versicherter_m\",\n", + " \"sozialversicherung__rente__beitrag__betrag_versicherter_m\",\n", + " \"sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m\",\n", + " \"sozialversicherung__pflege__beitrag__betrag_versicherter_m\",\n", "]" ] }, diff --git a/docs/tutorials/debugging.ipynb b/docs/tutorials/debugging.ipynb index c7cc704e88..cb20737f98 100644 --- a/docs/tutorials/debugging.ipynb +++ b/docs/tutorials/debugging.ipynb @@ -8,7 +8,7 @@ "\n", "Eventually, all code will fail. Even GETTSIM's and your code is no exception. Therefore, GETTSIM offers a debug mode for the function `compute_taxes_and_transfers` which helps you to find the source of the error.\n", "\n", - "Let us take the same example as used in the [tutorial on basic usage](basic_usage.ipynb), but reduced to the computation of `ges_rentenv_beitr_arbeitnehmer_m` which are the monthly contribution to the pension insurance." + "Let us take the same example as used in the [tutorial on basic usage](basic_usage.ipynb), but reduced to the computation of `sozialversicherung__rente__beitrag__betrag_versicherter_m` which are the monthly contribution to the pension insurance." ] }, { @@ -39,7 +39,7 @@ " {\n", " \"p_id\": 1,\n", " \"hh_id\": 1,\n", - " \"bruttolohn_m\": 1000.0,\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": 1000.0, # noqa: E501\n", " \"wohnort_ost\": False,\n", " },\n", " index=[0],\n", @@ -77,7 +77,7 @@ "df = compute_taxes_and_transfers(\n", " data=data,\n", " environment=environment,\n", - " targets=\"ges_rentenv_beitr_arbeitnehmer_m\",\n", + " targets=\"sozialversicherung__rente__beitrag__betrag_versicherter_m\",\n", " debug=True,\n", ")" ] @@ -104,7 +104,7 @@ "source": [ "## Debug Mode with an Exception\n", "\n", - "What happens when an exception is raised while producing the target? We artificially produce an error with a modified user function. For exemplary purposes we modify GETTSIM's function `minijob_grenze` which is called when computing the pension contributions. Instead of its usual functionality of returning the income threshold for marginal employment, we overwrite it to raise an error when called (note that we could do so with any other function as well)." + "What happens when an exception is raised while producing the target? We artificially produce an error with a modified user function. For exemplary purposes we modify GETTSIM's function `sozialversicherung__minijob_grenze` which is called when computing the pension contributions. Instead of its usual functionality of returning the income threshold for marginal employment, we overwrite it to raise an error when called (note that we could do so with any other function as well)." ] }, { @@ -113,7 +113,7 @@ "metadata": {}, "outputs": [], "source": [ - "def minijob_grenze():\n", + "def sozialversicherung__minijob_grenze():\n", " raise ValueError" ] }, @@ -129,8 +129,8 @@ "source": [ "df = compute_taxes_and_transfers(\n", " data=data,\n", - " environment=environment.upsert_functions(minijob_grenze),\n", - " targets=\"ges_rentenv_beitr_arbeitnehmer_m\",\n", + " environment=environment.upsert_functions(sozialversicherung__minijob_grenze),\n", + " targets=\"sozialversicherung__rente__beitrag__betrag_versicherter_m\",\n", " debug=True,\n", ")" ] diff --git a/docs/tutorials/parameters.ipynb b/docs/tutorials/parameters.ipynb index 4762211c94..e8543ff588 100644 --- a/docs/tutorials/parameters.ipynb +++ b/docs/tutorials/parameters.ipynb @@ -204,7 +204,9 @@ " n_adults=2,\n", " n_children=2,\n", " specs_heterogeneous={\n", - " \"bruttolohn_m\": [[i, 0, 0, 0] for i in np.linspace(1000, 8000, 701)]\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " [i, 0, 0, 0] for i in np.linspace(1000, 8000, 701)\n", + " ]\n", " },\n", ")\n", "\n", @@ -215,15 +217,19 @@ " targets=\"anz_kinder_bis_17_hh\",\n", ")\n", "# Compute sum of pension contributions in household and add it to data.\n", - "sum_ges_rente_priv_rente_m = compute_taxes_and_transfers(\n", - " data=data,\n", - " environment=environment,\n", - " targets=\"sum_ges_rente_priv_rente_m\",\n", + "sozialversicherung__rente__summe_private_gesetzliche_rente_m = (\n", + " compute_taxes_and_transfers(\n", + " data=data,\n", + " environment=environment,\n", + " targets=\"sozialversicherung__rente__summe_private_gesetzliche_rente_m\",\n", + " )\n", ")\n", "data[\"anz_kinder_bis_17_hh\"] = children[\"anz_kinder_bis_17_hh\"]\n", - "data[\"sum_ges_rente_priv_rente_m\"] = sum_ges_rente_priv_rente_m[\n", - " \"sum_ges_rente_priv_rente_m\"\n", - "]\n", + "data[\"sozialversicherung__rente__summe_private_gesetzliche_rente_m\"] = (\n", + " sozialversicherung__rente__summe_private_gesetzliche_rente_m[\n", + " \"sozialversicherung__rente__summe_private_gesetzliche_rente_m\"\n", + " ]\n", + ")\n", "data.head()" ] }, @@ -246,10 +252,10 @@ "kindergeld_status_quo = compute_taxes_and_transfers(\n", " data=data,\n", " environment=environment,\n", - " targets=\"kindergeld_m_hh\",\n", + " targets=\"kindergeld__betrag_m_hh\",\n", ")\n", "\n", - "kindergeld_status_quo[[\"kindergeld_m_hh\"]]" + "kindergeld_status_quo[[\"kindergeld__betrag_m_hh\"]]" ] }, { @@ -269,9 +275,9 @@ "kindergeld_new = compute_taxes_and_transfers(\n", " data=data,\n", " environment=environment_new,\n", - " targets=\"kindergeld_m_hh\",\n", + " targets=\"kindergeld__betrag_m_hh\",\n", ")\n", - "kindergeld_new[[\"kindergeld_m_hh\"]]" + "kindergeld_new[[\"kindergeld__betrag_m_hh\"]]" ] }, { @@ -290,7 +296,9 @@ "outputs": [], "source": [ "# Group data by household id and sum the gross monthly income.\n", - "total_income_m_hh = data.groupby(\"hh_id\")[\"bruttolohn_m\"].sum()\n", + "total_income_m_hh = data.groupby(\"hh_id\")[\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\"\n", + "].sum()\n", "total_income_m_hh.tail(10)" ] }, @@ -302,8 +310,8 @@ "source": [ "# Create DataFrame with relevant columns for plotting.\n", "df = pd.DataFrame()\n", - "df[\"Status Quo\"] = kindergeld_status_quo[\"kindergeld_m_hh\"]\n", - "df[\"After raise\"] = kindergeld_new[\"kindergeld_m_hh\"]\n", + "df[\"Status Quo\"] = kindergeld_status_quo[\"kindergeld__betrag_m_hh\"]\n", + "df[\"After raise\"] = kindergeld_new[\"kindergeld__betrag_m_hh\"]\n", "df[\"hh_id\"] = data[\"hh_id\"]\n", "df = df.drop_duplicates(\"hh_id\").set_index(\"hh_id\")\n", "df[\"Income (per household)\"] = total_income_m_hh" diff --git a/docs/tutorials/policy_functions.ipynb b/docs/tutorials/policy_functions.ipynb index d52312a716..d00d41ea06 100644 --- a/docs/tutorials/policy_functions.ipynb +++ b/docs/tutorials/policy_functions.ipynb @@ -75,22 +75,14 @@ "metadata": {}, "outputs": [], "source": [ - "def arbeitsl_geld_2_m_bg(\n", - " arbeitsl_geld_2_vor_vorrang_m_bg,\n", - " # wohngeld_vorrang_bg,\n", - " # kinderzuschl_vorrang_bg,\n", - " # wohngeld_kinderzuschl_vorrang_bg,\n", - " erwachsene_alle_rentner_hh,\n", + "def arbeitslosengeld_2__betrag_m_bg(\n", + " arbeitslosengeld_2__anspruchshöhe_m_bg,\n", + " erwachsene_alle_rentenbezieher_hh,\n", "):\n", - " if (\n", - " # wohngeld_vorrang_bg\n", - " # | kinderzuschl_vorrang_bg\n", - " # | wohngeld_kinderzuschl_vorrang_bg\n", - " erwachsene_alle_rentner_hh\n", - " ):\n", + " if erwachsene_alle_rentenbezieher_hh:\n", " out = 0.0\n", " else:\n", - " out = arbeitsl_geld_2_vor_vorrang_m_bg\n", + " out = arbeitslosengeld_2__anspruchshöhe_m_bg\n", "\n", " return out" ] @@ -112,7 +104,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment_no_check = environment.upsert_functions(arbeitsl_geld_2_m_bg)" + "environment_no_check = environment.upsert_functions(arbeitslosengeld_2__betrag_m_bg)" ] }, { @@ -137,20 +129,26 @@ " n_adults=2,\n", " n_children=2,\n", " specs_heterogeneous={\n", - " \"bruttolohn_m\": [[i, 0, 0, 0] for i in np.linspace(500, 5000, 250)]\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": [\n", + " [i, 0, 0, 0] for i in np.linspace(500, 5000, 250)\n", + " ]\n", " },\n", ")\n", "\n", "# Compute sum of pension contributions in household and add it to data.\n", - "sum_ges_rente_priv_rente_m = compute_taxes_and_transfers(\n", - " data=data,\n", - " environment=environment,\n", - " targets=\"sum_ges_rente_priv_rente_m\",\n", + "sozialversicherung__rente__summe_private_gesetzliche_rente_m = (\n", + " compute_taxes_and_transfers(\n", + " data=data,\n", + " environment=environment,\n", + " targets=\"sozialversicherung__rente__summe_private_gesetzliche_rente_m\",\n", + " )\n", ")\n", "\n", - "data[\"sum_ges_rente_priv_rente_m\"] = sum_ges_rente_priv_rente_m[\n", - " \"sum_ges_rente_priv_rente_m\"\n", - "]\n", + "data[\"sozialversicherung__rente__summe_private_gesetzliche_rente_m\"] = (\n", + " sozialversicherung__rente__summe_private_gesetzliche_rente_m[\n", + " \"sozialversicherung__rente__summe_private_gesetzliche_rente_m\"\n", + " ]\n", + ")\n", "data.head(5)" ] }, @@ -160,13 +158,13 @@ "source": [ "For this data we can now compare the results of using GETTSIM with the `environment_no_check` and the usual `environment`. \n", "\n", - "We should expect to see positive values for `wohngeld_m_wthh`, `kinderzuschl_m_bg` and\n", - "`arbeitsl_geld_2_m_bg` at the same time if we do not check which combination of\n", + "We should expect to see positive values for `wohngeld__betrag_m_wthh`, `kinderzuschlag__betrag_m_bg` and\n", + "`arbeitslosengeld_2__betrag_m_bg` at the same time if we do not check which combination of\n", "transfers is optimal (`environment_no_check`).\n", "\n", "On the other hand, if we use the default version of the `environment`,\n", - "`wohngeld_m_wthh` and `kinderzuschl_m_bg` should be zero as long as\n", - "`arbeitsl_geld_2_m_bg` is positive (and the other way around), as it is a characteristic\n", + "`wohngeld__betrag_m_wthh` and `kinderzuschlag__betrag_m_bg` should be zero as long as\n", + "`arbeitslosengeld_2__betrag_m_bg` is positive (and the other way around), as it is a characteristic\n", "of the German taxes and transfers system that *Wohngeld* and *Kinderzuschlag* cannot be\n", "received in combination with *Arbeitslosengeld 2*." ] @@ -177,7 +175,11 @@ "metadata": {}, "outputs": [], "source": [ - "targets = [\"wohngeld_m_wthh\", \"kinderzuschl_m_bg\", \"arbeitsl_geld_2_m_bg\"]" + "targets = [\n", + " \"wohngeld__betrag_m_wthh\",\n", + " \"kinderzuschlag__betrag_m_bg\",\n", + " \"arbeitslosengeld_2__betrag_m_bg\",\n", + "]" ] }, { @@ -207,19 +209,27 @@ " targets=targets,\n", " )\n", " # Add earnings and index to result DataFrame.\n", - " result[\"bruttolohn_m\"] = data[\"bruttolohn_m\"]\n", + " result[\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\"\n", + " ] = data[\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\"\n", + " ]\n", " result.index = data[\"hh_id\"]\n", " # Create DataFrame that contains the maximum value of the target variables\n", " # in the household and the household gross income.\n", " result = (\n", " result.groupby(\"hh_id\")[targets]\n", " .max()\n", - " .join(result.groupby(\"hh_id\")[\"bruttolohn_m\"].sum())\n", + " .join(\n", + " result.groupby(\"hh_id\")[\n", + " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\"\n", + " ].sum()\n", + " )\n", " )\n", " # Plot the results.\n", " fig = px.line(\n", " data_frame=result,\n", - " x=\"bruttolohn_m\",\n", + " x=\"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\",\n", " y=targets,\n", " title=k,\n", " )\n", @@ -234,7 +244,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On first glance, both figures look quite confusing because of the complexity of the German taxes and transfers system. But if we take a closer look, the figures confirm our expectations. If we let GETTSIM check for the most favorable combination of transfers, ```wohngeld_m_wthh``` and ```kinderzuschl_m_bg``` are zero as long as `arbeitsl_geld_2_m_bg` is positive (i.e. the best option for the household) and the other way around. \n", + "On first glance, both figures look quite confusing because of the complexity of the German taxes and transfers system. But if we take a closer look, the figures confirm our expectations. If we let GETTSIM check for the most favorable combination of transfers, ```wohngeld__betrag_m_wthh``` and ```kinderzuschlag__betrag_m_bg``` are zero as long as `arbeitslosengeld_2__betrag_m_bg` is positive (i.e. the best option for the household) and the other way around. \n", "\n", "If we do not let GETTSIM do this check, this does not hold any longer and all transfers can be positive at the same time (which is what we were trying to achieve). " ] @@ -255,8 +265,8 @@ "metadata": {}, "outputs": [], "source": [ - "def kindergeld_m(\n", - " kindergeld_anz_ansprüche: bool,\n", + "def kindergeld__betrag_m(\n", + " kindergeld__anzahl_ansprüche: bool,\n", " kindergeld_params: dict,\n", ") -> float:\n", " \"\"\"Sum of Kindergeld for eligible children.\n", @@ -266,8 +276,8 @@ "\n", " Parameters\n", " ----------\n", - " kindergeld_anz_ansprüche\n", - " See :func:`kindergeld_anz_ansprüche`.\n", + " kindergeld__anzahl_ansprüche\n", + " See :func:`kindergeld__anzahl_ansprüche`.\n", " kindergeld_params\n", " See params documentation :ref:`kindergeld_params `.\n", "\n", @@ -276,14 +286,14 @@ "\n", " \"\"\"\n", "\n", - " if kindergeld_anz_ansprüche == 0:\n", + " if kindergeld__anzahl_ansprüche == 0:\n", " sum_kindergeld = 0.0\n", " else:\n", " sum_kindergeld = sum(\n", " kindergeld_params[\"kindergeld\"][\n", " (min(i, max(kindergeld_params[\"kindergeld\"])))\n", " ]\n", - " for i in range(1, kindergeld_anz_ansprüche + 1)\n", + " for i in range(1, kindergeld__anzahl_ansprüche + 1)\n", " )\n", "\n", " return sum_kindergeld * 2" @@ -293,7 +303,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you edit ```arbeitsl_geld_2_m_bg``` and ```kindergeld_m```, your way to make GETTSIM incorporate your changes would be:" + "If you edit ```arbeitslosengeld_2__betrag_m_bg``` and ```kindergeld__betrag_m```, your way to make GETTSIM incorporate your changes would be:" ] }, { @@ -304,12 +314,14 @@ "source": [ "df = compute_taxes_and_transfers(\n", " data=data,\n", - " environment=environment.upsert_functions(arbeitsl_geld_2_m_bg, kindergeld_m),\n", + " environment=environment.upsert_functions(\n", + " arbeitslosengeld_2__betrag_m_bg, kindergeld__betrag_m\n", + " ),\n", " targets=[\n", - " \"wohngeld_m_wthh\",\n", - " \"kinderzuschl_m_bg\",\n", - " \"arbeitsl_geld_2_m_bg\",\n", - " \"kindergeld_m\",\n", + " \"wohngeld__betrag_m_wthh\",\n", + " \"kinderzuschlag__betrag_m_bg\",\n", + " \"arbeitslosengeld_2__betrag_m_bg\",\n", + " \"kindergeld__betrag_m\",\n", " ],\n", ")" ] @@ -343,7 +355,7 @@ "\n", "```python\n", "aggregate_by_group_specs_tree = {\n", - " \"anz_erwachsene_sn\": {\"source_col\": \"erwachsen\", \"aggr\": \"sum\"},\n", + " \"anzahl_erwachsene_fg\": {\"source\": \"familie__erwachsen\", \"aggr\": \"sum\"},\n", " \"anz_personen_hh\": {\"aggr\": \"count\"},\n", "}\n", "```\n", @@ -356,9 +368,9 @@ "\n", "```python\n", "aggregate_by_p_id_kindergeld = {\n", - " \"kindergeld_anz_ansprüche\": {\n", - " \"p_id_to_aggregate_by\": \"p_id_kindergeld_empf\",\n", - " \"source_col\": \"kindergeld_anspruch\",\n", + " \"kindergeld__anzahl_ansprüche\": {\n", + " \"p_id_to_aggregate_by\": \"kindergeld__p_id_empfänger\",\n", + " \"source\": \"kindergeld__grundsätzlich_anspruchsberechtigt\",\n", " \"aggr\": \"sum\",\n", " },\n", "}\n", diff --git a/pixi.lock b/pixi.lock index bdb100b6e0..4a98ab20ff 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,43 +9,49 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -53,243 +59,262 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -297,228 +322,236 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -526,228 +559,234 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -755,199 +794,204 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py311: channels: @@ -958,43 +1002,49 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py311hfdbb021_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1002,243 +1052,262 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py311h71ddf71_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py311h5d046bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py311hd18a35c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py311hd18a35c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py311h687327b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py311ha3cf9ac_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py311hc356e98_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py311hc356e98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1246,228 +1315,236 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311h8b4e8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py311h14ed71f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py311h27c81cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py311h4e34fa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py311h4e34fa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py311h1314207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py311hd6939f8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py311hd6939f8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.10-ha513fb2_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.11-h9ccd52b_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py311h4d3da15_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py311hb21797c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py311h3b9c2be_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py311hab9d7c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py311h3336109_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py311h155a34a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py311h155a34a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1475,228 +1552,234 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py311h649a571_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py311h762c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py311h2c37856_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py311h210dab8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py311h09e6bbd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py311h09e6bbd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py311h3ff9189_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py311hc9d6b66_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.10-py311hd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py311hda3d55a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1704,199 +1787,204 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py311h35ffc71_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py311h5e411d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py311h3257749_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py311h3257749_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.10-hce54a09_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.11-h3f84c4b_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py311hda3d55a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py311h484c95c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py311h484c95c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py311h533ab2d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py311ha250665_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py312: channels: @@ -1907,43 +1995,49 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -1951,243 +2045,262 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2195,228 +2308,236 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2424,228 +2545,234 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2653,199 +2780,204 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py312-jax: channels: @@ -2856,44 +2988,50 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -2901,255 +3039,273 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.0-cxx17_hbbce691_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.65.5-hf5c653b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.27.5-h5b01275_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -3157,240 +3313,247 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.4.34-cpu_py312h2d9848c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.2-cpu_py312ha70eef1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.0-cxx17_h0e468a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -3398,239 +3561,244 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.4.34-cpu_py312h70eed8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py312he253ca6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.0-cxx17_h07bc746_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.65.5-h3d9cf25_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.27.5-h53f8970_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -3638,195 +3806,200 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - - pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f4/58/cc0721a1030fcbab0984beea0bf3c4610ec103f738423cdfa9c4ceb40598/jax-0.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2d/cb/11bb92324afb6ba678f388e10b78d6b02196bc8887eb5aa0d85ce398edf9/jaxlib-0.5.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/77/6f/0da6e0bc90e738fc63c584d65bef326f76a6550343ae1c243647bd1880fd/jax-0.5.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/3b/68981550dc34b86deb8e50b8cb14fd8bd620876276cfce2218ef7f11be90/jaxlib-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3835,7 +4008,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -3874,52 +4047,65 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 -- conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_0.conda - sha256: a9e1092725561d9bff12d3a4d3bb46c43d3d0db3cbb2c63c9025d1c77e84840c - md5: 7d78a232029458d0077ede6cda30ed0c +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + sha256: 63e532087119112c81d81c067e00d1fd49ff1b842ffea4469b78b505be63c042 + md5: 11539f9e49efaa281da735ded100b152 depends: - - python >=3.9 + - __unix + - hicolor-icon-theme + - librsvg + license: LGPL-3.0-or-later OR CC-BY-SA-3.0 + license_family: LGPL + purls: [] + size: 610380 + timestamp: 1741999835753 +- conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea + md5: 1fd9696649f65fd6611fcdb4ffec738a + depends: + - python >=3.10 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/alabaster?source=hash-mapping - size: 18522 - timestamp: 1722035895436 -- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + size: 18684 + timestamp: 1733750512696 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + sha256: b28e0f78bb0c7962630001e63af25a89224ff504e135a02e50d4d80b6155d386 + md5: 9749a2c77a7c40d432ea0927662d7e52 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 + - python constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT purls: - pkg:pypi/anyio?source=hash-mapping - size: 109864 - timestamp: 1728935803440 -- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 - md5: cc4834a9ee7cc49ce8d25177c47b10d8 + size: 126346 + timestamp: 1742243108743 +- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf + md5: 54898d0f524c9dee622d44bbb081a8ab depends: - - python >=3.7 + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/appnope?source=hash-mapping - size: 10241 - timestamp: 1707233195627 -- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677 - md5: 3afef1f55a1366b4d3b6a0d92e2235e4 + size: 10076 + timestamp: 1733332433806 +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba depends: - argon2-cffi-bindings - - python >=3.7 + - python >=3.9 - typing-extensions constrains: - argon2_cffi ==999 @@ -3927,8 +4113,8 @@ packages: license_family: MIT purls: - pkg:pypi/argon2-cffi?source=hash-mapping - size: 18602 - timestamp: 1692818472638 + size: 18594 + timestamp: 1733311166338 - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda sha256: d1af1fbcb698c2e07b0d1d2b98384dd6021fa55c8bcb920e3652e0b0c393881b md5: 18143eab7fcd6662c604b85850f0db1e @@ -4049,54 +4235,85 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 34399 timestamp: 1725357069475 -- conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db - md5: b77d8c2313158e6e461ca0efb1c2c508 +- conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 + md5: 46b53236fdd990271b03c3978d4218a9 depends: - - python >=3.8 + - python >=3.9 - python-dateutil >=2.7.0 - types-python-dateutil >=2.8.10 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/arrow?source=hash-mapping - size: 100096 - timestamp: 1696129131844 -- conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyh9f0ad1d_0.tar.bz2 - sha256: cb4ae0e3055907983f21a24dc2ac47d5a77d7c1dd98b1e21fed06956437e52c7 - md5: 6ae770689be59dc391ef974d2e849b56 + size: 99951 + timestamp: 1733584345583 +- conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda + sha256: 2e4e6d0d3aaee26415f910658ed55a53cc3210e8c30ae9a0dd35826cf7a3423f + md5: 860c9e08463a3af84d7da76bc0baf84b depends: - - python + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/astor?source=hash-mapping - size: 25792 - timestamp: 1593610550883 -- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 - md5: 5f25798dcefd8252ce5f9dc494d5f571 + size: 29393 + timestamp: 1733838731992 +- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b depends: - - python >=3.5 - - six >=1.12.0 + - python >=3.9 + constrains: + - astroid >=2,<4 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/asttokens?source=hash-mapping - size: 28922 - timestamp: 1698341257884 -- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518 - md5: 3d081de3a6ea9f894bbb585e8e3a4dcb + size: 28206 + timestamp: 1733250564754 +- conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + sha256: 3b7233041e462d9eeb93ea1dfe7b18aca9c358832517072054bb8761df0c324b + md5: d9d0f99095a9bb7e3641bca8c6ad2ac7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0 + - python license: MIT license_family: MIT purls: - pkg:pypi/async-lru?source=hash-mapping - size: 15342 - timestamp: 1690563152778 + size: 17335 + timestamp: 1742153708859 +- conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + sha256: 26ab9386e80bf196e51ebe005da77d57decf6d989b4f34d96130560bc133479c + md5: 6b889f174df1e0f816276ae69281af4d + depends: + - at-spi2-core >=2.40.0,<2.41.0a0 + - atk-1.0 >=2.36.0 + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=9.3.0 + - libglib >=2.68.1,<3.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 339899 + timestamp: 1619122953439 +- conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + sha256: c4f9b66bd94c40d8f1ce1fad2d8b46534bdefda0c86e3337b28f6c25779f258d + md5: 8cb2fc4cd6cc63f1369cfa318f581cc3 + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=9.3.0 + - libglib >=2.68.3,<3.0a0 + - xorg-libx11 + - xorg-libxi + - xorg-libxtst + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 658390 + timestamp: 1625848454791 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e md5: f730d54ba9cd543666d7220c9f7ed563 @@ -4141,53 +4358,66 @@ packages: purls: [] size: 347530 timestamp: 1713896411580 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + sha256: 99c53ffbcb5dc58084faf18587b215f9ac8ced36bbfb55fa807c00967e419019 + md5: a10d11958cadc13fdb43df75f8b1903f depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/attrs?source=hash-mapping - size: 56048 - timestamp: 1722977241383 -- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 - md5: 6d4e9ecca8d88977147e109fc7053184 + - pkg:pypi/attrs?source=compressed-mapping + size: 57181 + timestamp: 1741918625732 +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac + md5: 0a01c169f0ab0f91b26e77a3301fbfe4 depends: - - python >=3.8 + - python >=3.9 - pytz >=2015.7 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=hash-mapping - size: 6525614 - timestamp: 1730878929589 -- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 - md5: 332493000404d8411859539a5a630865 + - pkg:pypi/babel?source=compressed-mapping + size: 6938256 + timestamp: 1738490268466 +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + sha256: 4ce42860292a57867cfc81a5d261fb9886fc709a34eca52164cc8bbf6d03de9f + md5: 373374a3ed20141090504031dc7b693e depends: - - python >=3.6 + - python >=3.9 - soupsieve >=1.2 + - typing-extensions license: MIT license_family: MIT purls: - - pkg:pypi/beautifulsoup4?source=hash-mapping - size: 118200 - timestamp: 1705564819537 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 - md5: 461bcfab8e65c166e297222ae919a2d4 + - pkg:pypi/beautifulsoup4?source=compressed-mapping + size: 145482 + timestamp: 1738740460562 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd + md5: f0b4c8e370446ef89797608d60a564b3 depends: - python >=3.9 - webencodings + - python + constrains: + - tinycss >=1.1.0,<1.5 license: Apache-2.0 AND MIT - license_family: Apache purls: - pkg:pypi/bleach?source=hash-mapping - size: 132652 - timestamp: 1730286301829 + size: 141405 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 + md5: a30e9406c873940383555af4c873220d + depends: + - bleach ==6.2.0 pyh29332c3_4 + - tinycss2 + license: Apache-2.0 AND MIT + purls: [] + size: 4213 + timestamp: 1737382993425 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 md5: d21daab070d76490cb39a8f1d1729d79 @@ -4365,65 +4595,65 @@ packages: purls: [] size: 54927 timestamp: 1720974860185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 204857 - timestamp: 1732447031823 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda - sha256: 37c031f91bb4c7ebec248e283c453b24840764fb53b640768780dcd904093f17 - md5: 7d8083876d71fe1316fc18369ee0dc58 + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + sha256: 8dcc1628d34fe7d759f3a7dee52e09c5162a3f9669dddd6100bff965450f4a0a + md5: 133255af67aaf1e0c0468cc753fd800b depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 184403 - timestamp: 1732447223773 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + size: 184455 + timestamp: 1734208242547 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 179318 - timestamp: 1732447193278 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 license: ISC purls: [] - size: 159003 - timestamp: 1725018903918 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae - md5: b7e5424e7f06547a903d28e4651dbb21 + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + sha256: 42e911ee2d8808eacedbec46d99b03200a6138b8e8a120bd8acabe1cac41c63b + md5: 3418b6c8cac3e71c0bc089fc5ea53042 license: ISC purls: [] - size: 158665 - timestamp: 1725019059295 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + size: 158408 + timestamp: 1738298385933 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 license: ISC purls: [] - size: 158482 - timestamp: 1725019034582 -- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 - md5: 4c4fd67c18619be5aa65dc5b6c72e490 + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + sha256: 1bedccdf25a3bd782d6b0e57ddd97cdcda5501716009f2de4479a779221df155 + md5: 5304a31607974dfc2110dfbb662ed092 license: ISC purls: [] - size: 158773 - timestamp: 1725019107649 + size: 158690 + timestamp: 1738298232550 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -4446,100 +4676,100 @@ packages: - pkg:pypi/cached-property?source=hash-mapping size: 11065 timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 - md5: fceaedf1cdbcb02df9699a0d9b005292 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + sha256: 3bd6a391ad60e471de76c0e9db34986c4b5058587fbf2efa5a7f54645e28c2c7 + md5: 09262e66b19567aff4f592fb53b28760 depends: - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.2,<1.0a0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.5,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 983604 - timestamp: 1721138900054 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - sha256: 8d70fbca4887b9b580de0f3715026e05f9e74fad8a652364aa0bccd795b1fa87 - md5: 448aad56614db52338dc4fd4c758cfb6 + size: 978114 + timestamp: 1741554591855 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + sha256: d4297c3a9bcff9add3c5a46c6e793b88567354828bcfdb6fc9f6b1ab34aa4913 + md5: 32403b4ef529a2018e4d8c4f2a719f16 depends: - __osx >=10.13 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 892544 - timestamp: 1721139116538 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 - md5: 08bd0752f3de8a2d8a35fd012f09531f + size: 893252 + timestamp: 1741554808521 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + sha256: 00439d69bdd94eaf51656fdf479e0c853278439d22ae151cabf40eb17399d95f + md5: 38f6df8bc8c668417b904369a01ba2e2 depends: - __osx >=11.0 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 899126 - timestamp: 1721139203735 -- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - sha256: 127101c9c2d1a56f8791c19141ceff13fd1d1a1da28cfaca549dc99d210cec6a - md5: 8f43723a4925c51e55c2d81725a97db4 + size: 896173 + timestamp: 1741554795915 +- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + sha256: b9f577bddb033dba4533e851853924bfe7b7c1623d0697df382eef177308a917 + md5: 20e32ced54300292aff690a69c5e7b97 depends: - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 + - pixman >=0.44.2,<1.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zlib license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 1516680 - timestamp: 1721139332360 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 + size: 1524254 + timestamp: 1741555212198 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d depends: - - python >=3.7 + - python >=3.9 license: ISC purls: - - pkg:pypi/certifi?source=hash-mapping - size: 163752 - timestamp: 1725278204397 + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -4666,54 +4896,54 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 288142 timestamp: 1725560896359 -- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c - md5: ebb5f5f7dc4f1a3780ef7ea7738db08c +- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f + md5: 57df494053e17dce2ac3a0b33e1b2a2e depends: - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/cfgv?source=hash-mapping - size: 10788 - timestamp: 1629909423398 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + size: 12973 + timestamp: 1734267180483 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/charset-normalizer?source=hash-mapping - size: 47314 - timestamp: 1728479405343 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/colorama?source=hash-mapping - size: 25170 - timestamp: 1666700778190 -- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe - md5: 948d84721b578d426294e17a02e24cbb + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - python >=3.6 + - python >=3.9 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/comm?source=hash-mapping - size: 12134 - timestamp: 1710320435158 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py311h2dc5d0c_0.conda - sha256: 820f5d4119149f77995f10e0aefc587117b23501a55c69a026bfcb50fa6917ff - md5: 8d6a690e582941ee3161500d1982ea3e + size: 12103 + timestamp: 1733503053903 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py311h2dc5d0c_0.conda + sha256: 350b0c1eb54d38aa9631255f11a5b83ec924ffd20776d9a2e903f5c58f3d5904 + md5: 1923a8a1fd2b87318804f118273c1ab2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4721,13 +4951,14 @@ packages: - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 374227 - timestamp: 1732426312331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.8-py312h178313f_0.conda - sha256: f81fb017d0312a392d6454f374e69379650108bb5d709c635edf9dcbb9a39eef - md5: fe8c93f4c75908fe2a1cc45ed0c47edf + size: 380562 + timestamp: 1742157291267 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + sha256: 00b0153cc58e638713d8297000761d4b8ab2b75d4c7096192d802e5f362de716 + md5: ec7b7abbdcfbac99336fadde6b75213c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4735,39 +4966,42 @@ packages: - python_abi 3.12.* *_cp312 - tomli license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 364534 - timestamp: 1732426278362 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py311ha3cf9ac_0.conda - sha256: 712e003aa6c74c42110a1d3d3e6927b994226cc11b6b5f614175f3846209101b - md5: f79da3c5e65345b7c1e814a7fbd22fbb + size: 371584 + timestamp: 1742157074273 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py311ha3cf9ac_0.conda + sha256: 1b243a121dd4f56ad7b4c71ad283511d4c492e2e55ad64a5461d374879d149eb + md5: 46e5fae4dbf3503f061084b3fe87776c depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 372157 - timestamp: 1732426338740 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.8-py312h3520af0_0.conda - sha256: d0eb9a85577b470e8bc0efad8e6bc480ee4153fdb7206e05bfef59cae54a8944 - md5: 407f22327e2934990bf6b36b080459d6 + - pkg:pypi/coverage?source=compressed-mapping + size: 379300 + timestamp: 1742157009156 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda + sha256: a75b8edba44ab4c5013577845bac3114224c6893ad439e4ea061ed7d6185445f + md5: 775dc51b9aa865782c1a5138a0339a6a depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tomli license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 363131 - timestamp: 1732426337446 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py311h4921393_0.conda - sha256: 8d259602e6d3b9ad25ec3be8c4e1d2603c6c9eb5cb2d6b2dab63524579a9428b - md5: 2225caba3f015750365040279e830c08 + - pkg:pypi/coverage?source=compressed-mapping + size: 369042 + timestamp: 1742157030736 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py311h4921393_0.conda + sha256: a5114f6fca6c02f996685c296e47db0a052d387f2122b7c6474d1cf5a4a3115a + md5: 1d83dbdbeda66e8cb469e1325e9dc950 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -4775,13 +5009,14 @@ packages: - python_abi 3.11.* *_cp311 - tomli license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 373918 - timestamp: 1732426444969 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.8-py312h998013c_0.conda - sha256: 71135e0a59806897059d60d184877bf581132b0148f492b5ad195dc36e714341 - md5: e5ca7c17efb98bf88fd764fc4544fa98 + size: 380437 + timestamp: 1742157099485 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda + sha256: 54f4c61f12caa277b2555080b03ab320fc342f1295d01254498adcfdd012292f + md5: 5021d17d7b543fa94744ba18a13bca16 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -4789,13 +5024,14 @@ packages: - python_abi 3.12.* *_cp312 - tomli license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 363034 - timestamp: 1732426393335 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py311h5082efb_0.conda - sha256: a394422eab4ef0ed7532db8ef2e9df2248ba58fc388d6cbdebb3f0636681ab5e - md5: 06f5b27c266b026247d671f66f690908 + size: 369999 + timestamp: 1742157070531 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py311h5082efb_0.conda + sha256: 05b35904afac394868753abe745bdefe6c595f7fc5bc304bc8559c3faab6f05b + md5: a2a2feae26268f73c8ab06818b99b56c depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -4804,13 +5040,14 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 399995 - timestamp: 1732426460465 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.8-py312h31fea79_0.conda - sha256: 205486352834826eb3c62a3fd25b16d5473ea7bdf15738635c75d641ae6c0edc - md5: 3cb203bad55b8ddc2b4c603172bd23d5 + size: 407182 + timestamp: 1742157374397 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda + sha256: fba20ba73ff712a93c36d806492edb9f71a8453e3224301db03d6e0748dbf118 + md5: f2a8dc053d6523645333097a20710f97 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -4819,43 +5056,56 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 389589 - timestamp: 1732426591086 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.10-py311hd8ed1ab_3.conda + size: 397115 + timestamp: 1742157326530 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_2.conda noarch: generic - sha256: 3b2460b6cce53ce95f1f3aeb8ef7a50b356226dc48d45265ce5e585fc5e8cbed - md5: b6d1a583921c24bb45feef32262b10aa + sha256: 52e462716ff6b062bf6992f9e95fcb65a0b95a47db73f0478bd0ceab8a37036a + md5: fb7bc3f1bccb39021a53309e83bce28d depends: - - python 3.11.10.* + - python 3.11.11.* - python_abi * *_cp311 license: Python-2.0 purls: [] - size: 45741 - timestamp: 1729041746101 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.7-py312hd8ed1ab_0.conda + size: 46889 + timestamp: 1741034069952 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda noarch: generic - sha256: 9bbd08c83cc9c3142755b96dc5f3e0f0370d7afdb773c8285359b31e7ce96f0a - md5: f0d1309310498284ab13c9fd73db4781 + sha256: 58a637bc8328b115c9619de3fcd664ec26662083319e3c106917a1b3ee4d7594 + md5: f0f8087079679f3ae375fca13327b17f depends: - - python 3.12.7.* + - python 3.12.9.* - python_abi * *_cp312 license: Python-2.0 purls: [] - size: 44632 - timestamp: 1728057282977 -- pypi: git+https://github.com/opensourceeconomics/dags#d4e4b0b268be13472444cd9e291202513d0b1bcb + size: 45728 + timestamp: 1741128060593 +- pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d name: dags - version: 0.2.4.dev6+gd4e4b0b + version: 0.2.4.dev16+g00d92a9 requires_dist: - flatten-dict - networkx - types-networkx requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py311hfdbb021_0.conda - sha256: cc2e120f53571e19ee6ea062e85e256fce6550ee139d8127cfb24d7ba015f2ae - md5: e1d95dce136e7d0f6a9d7cd9b6dca985 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py311hfdbb021_0.conda + sha256: 5400b19311cefe11fcad1f758ec4341945f0bf1793d5501355d2e51260932a73 + md5: f343a9dfe2dd89abbdb1984aa435ca73 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4866,11 +5116,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2567811 - timestamp: 1732236803227 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a - md5: c522fd70ca7a0c2fe1a861dd13987a57 + size: 2548797 + timestamp: 1741148528729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + sha256: 3370f9c9a94146a4136ca57ae6e13b789572ff41804cd949cccad70945ae7fb0 + md5: cfad89e517e83c4927fffdbaaf0a30ef depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4881,11 +5131,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2605093 - timestamp: 1732236790708 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py311hc356e98_0.conda - sha256: 12b1bcdbc226966ad328fbfc48c605e82e7f8e28f58905611a4789cbcc33a41d - md5: fb00506b224d15fdc3851a8c9985d4e1 + size: 2650523 + timestamp: 1741148587127 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py311hc356e98_0.conda + sha256: 16032f7427694dc2197172e281ecf6a08fc2805f5d982f42510b89458d3f8b53 + md5: dbd5e659c10a9bb81e3d3f962cc9705f depends: - __osx >=10.13 - libcxx >=18 @@ -4895,11 +5145,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2499942 - timestamp: 1732237016874 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - sha256: 95b43839332c9bcd7da3f98ad322f371d8a3a40283945fadfecf8043d0a0cf38 - md5: 9e50ff5d80cdebeda0fe7eabba6d55e0 + size: 2509032 + timestamp: 1741148643393 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + sha256: ceef18f81b4b6f2f3c22df66df328deb673d1134245eea50cff9015851aaa44c + md5: cfa5d55e1840d33ef2fc5fa168a6e702 depends: - __osx >=10.13 - libcxx >=18 @@ -4909,11 +5159,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2581941 - timestamp: 1732236893783 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py311h155a34a_0.conda - sha256: 880c3de00402d6c5d61d3f64af9ecad8022f272225e3ae62fa8e9c4885b7f0e5 - md5: d619288803d5935f771f64a7924a6aad + size: 2534988 + timestamp: 1741148736172 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py311h155a34a_0.conda + sha256: c17592ec9d2fdffdcb5c1a8324c586344610686a4feac99c8a03a8461c0ee9ab + md5: 4a6f619085657d78f32e8b3688ad9172 depends: - __osx >=11.0 - libcxx >=18 @@ -4924,11 +5174,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2531409 - timestamp: 1732237062084 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 - md5: 51085e5bb7f21019186cc88fd9a03164 + size: 2449753 + timestamp: 1741148640482 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + sha256: aff8062e58906578b8006455beba45d4293708795fd534f01ca08d79cccaf6e3 + md5: 806d93a7b4e47961d7459dc880087673 depends: - __osx >=11.0 - libcxx >=18 @@ -4939,11 +5189,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2512030 - timestamp: 1732236996277 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py311hda3d55a_0.conda - sha256: 04db57c1b8fa22d17399c8df03e0d62b365a1315318b59009980672762a6ed87 - md5: 0f21eefbe9b04632c4e0e17636be84d3 + size: 2571308 + timestamp: 1741148638740 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py311hda3d55a_0.conda + sha256: 4a26009dfb681e79eb1c0e4c1b9f70496b39bc849862baa3b7d3ce01b5b5ead8 + md5: f95dea661bf83b77246fc1ade349b0f0 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -4954,11 +5204,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3623627 - timestamp: 1732237179740 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - sha256: 5a6b8e7d6cef17eb0e39c3a4261eeba293901445f4d5ddf8eae09ca775058acb - md5: 1300cbe0243cd21d23212fb654c4d434 + size: 3625877 + timestamp: 1741148780378 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + sha256: 24e793d78bb5f2129be7a485c72d6d485d1abff30d90cdcedfa24bad1cf00208 + md5: a2e7abdc87c10567ad1fdaf05c47a728 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -4969,19 +5219,19 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3518631 - timestamp: 1732237024268 -- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 - md5: 43afe5ab04e35e17ba28649471dd7364 + size: 3608339 + timestamp: 1741149007361 +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 + md5: 9ce473d1d1be1cc3810856a48b3fab32 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/decorator?source=hash-mapping - size: 12072 - timestamp: 1641555714315 + - pkg:pypi/decorator?source=compressed-mapping + size: 14129 + timestamp: 1740385067843 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be md5: 961b3a227b437d82ad7054484cfa71b2 @@ -4993,91 +5243,118 @@ packages: - pkg:pypi/defusedxml?source=hash-mapping size: 24062 timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - sha256: 300b2e714f59403df0560174f5ef6c19db8b4a3b74a7244862cf771f07dee8fb - md5: fe521c1608280cc2803ebd26dc252212 +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + sha256: 0e160c21776bd881b79ce70053e59736f51036784fa43a50da10a04f0c1b9c45 + md5: 8d88f4a2242e6b96f9ecff9a6a05b2f1 depends: - - python 2.7|>=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/distlib?source=hash-mapping - size: 276214 - timestamp: 1728557312342 -- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda - sha256: 362bfe3afaac18298c48c0c6a935641544077ce5105a42a2d8ebe750ad07c574 - md5: e8cd5d629f65bdf0f3bb312cde14659e + size: 274151 + timestamp: 1733238487461 +- conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 + md5: 24c1ca34138ee57de72a943237cde4cc depends: - python >=3.9 license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 purls: - pkg:pypi/docutils?source=hash-mapping - size: 403226 - timestamp: 1713930478970 -- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af - md5: 3cf04868fee0a029769bd41f4b2fbf2d + size: 402700 + timestamp: 1733217860944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + sha256: 1e58ee2ed0f4699be202f23d49b9644b499836230da7dd5b2f63e6766acff89e + md5: a089d06164afd2d511347d3f87214e0b depends: - - python >=3.6 + - libgcc-ng >=10.3.0 license: MIT license_family: MIT - purls: - - pkg:pypi/entrypoints?source=hash-mapping - size: 9199 - timestamp: 1643888357950 -- conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_0.conda - sha256: 385e7f1cd141ce535f30bfefb49d6f21aaecfca710c8cfa49b5ce2fa88f1d27d - md5: cdcdbe90dfab4075fc1f3c4cf2e4b4e5 + purls: [] + size: 1440699 + timestamp: 1648505042260 +- conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + sha256: 0e344e8490237565a5685736421e06b47a1b46dee7151c0973dd48130f8e583a + md5: 721a46794b9ad1301115068189acb750 + license: MIT + license_family: MIT + purls: [] + size: 342235 + timestamp: 1648505306288 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + sha256: 8b93dbebab0fe12ece4767e6a2dc53a6600319ece0b8ba5121715f28c7b0f8d1 + md5: 20dd7359a6052120d52e1e13b4c818b9 + license: MIT + license_family: MIT + purls: [] + size: 355201 + timestamp: 1648505273975 +- conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + sha256: 2209534fbf2f70c20661ff31f57ab6a97b82ee98812e8a2dcb2b36a0d345727c + md5: 71bf9646cbfabf3022c8da4b6b4da737 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/et-xmlfile?source=hash-mapping - size: 21781 - timestamp: 1729893031985 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + size: 21908 + timestamp: 1733749746332 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 purls: - pkg:pypi/exceptiongroup?source=hash-mapping - size: 20418 - timestamp: 1720869435725 -- conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda - sha256: 564bc012d73ca29964e7acca18d60b2fa8d20eea6d258d98cfc24df5167beaf0 - md5: 15dda3cdbf330abfe9f555d22f66db46 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + sha256: 9abc6c128cd40733e9b24284d0462e084d4aff6afe614f0754aa8533ebe505e4 + md5: a71efeae2c160f6789900ba2631a2c90 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/execnet?source=hash-mapping - size: 38883 - timestamp: 1712591929944 -- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 - md5: d0441db20c827c11721889a241df1220 + size: 38835 + timestamp: 1733231086305 +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/executing?source=hash-mapping - size: 28337 - timestamp: 1725214501850 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + size: 28348 + timestamp: 1733569440265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a depends: - - python >=3.7 + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 138145 + timestamp: 1730967050578 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + sha256: de7b6d4c4f865609ae88db6fa03c8b7544c2452a1aa5451eb7700aad16824570 + md5: 4547b39256e296bb758166893e909a7c + depends: + - python >=3.9 license: Unlicense purls: - - pkg:pypi/filelock?source=hash-mapping - size: 17357 - timestamp: 1726613593584 + - pkg:pypi/filelock?source=compressed-mapping + size: 17887 + timestamp: 1741969612334 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl name: flatten-dict version: 0.4.2 @@ -5199,62 +5476,65 @@ packages: purls: [] size: 4102 timestamp: 1566932280397 -- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63 - md5: 642d35437078749ef23a5dca2c9bb1f3 +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - cached-property >=1.3.0 - - python >=2.7,<4 + - python >=3.9,<4 license: MPL-2.0 license_family: MOZILLA purls: - pkg:pypi/fqdn?source=hash-mapping - size: 14395 - timestamp: 1638810388635 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + size: 16705 + timestamp: 1733327494780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + sha256: 7385577509a9c4730130f54bb6841b9b416249d5f4e9f74bf313e6378e313c57 + md5: 9ecfd6f2ca17077dd9c2d24770bb9ccd depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: GPL-2.0-only OR FTL purls: [] - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda - sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e - md5: 25152fce119320c980e5470e64834b50 + size: 639682 + timestamp: 1741863789964 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + sha256: 66cc36a313accf28f4ab9b40ad11e4a8ff757c11314cd499435d9b8df1fa0150 + md5: e391f0c2d07df272cf7c6df235e97bb9 depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=10.13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: GPL-2.0-only OR FTL purls: [] - size: 599300 - timestamp: 1694616137838 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad + size: 602964 + timestamp: 1741863884014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + sha256: 2c273de32431c431a118a8cd33afb6efc616ddbbab9e5ba0fe31e3b4d1ff57a3 + md5: 630445a505ea6e59f55714853d8c9ed0 depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: GPL-2.0-only OR FTL purls: [] - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda - sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 - md5: 3761b23693f768dc75a8fd0a73ca053f + size: 590002 + timestamp: 1741863913870 +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + sha256: 67e3af0fbe6c25f5ab1af9a3d3000464c5e88a8a0b4b06602f4a5243a8a1fd42 + md5: 9c461ed7b07fb360d2c8cfe726c7d521 depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: GPL-2.0-only OR FTL purls: [] - size: 510306 - timestamp: 1694616398888 + size: 510718 + timestamp: 1741864688363 - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 md5: ac7bc6a654f8f41b352b38f4051135f8 @@ -5346,28 +5626,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev82+g6c6c0155.d20250222 - sha256: 468d7ee73fd31c448cd102912b902342be58fb2b7298aacca19f8f4eca97a50d - requires_dist: - - astor - - ipywidgets - - networkx - - numpy - - numpy-groupies - - openpyxl - - optree - - pandas - - plotly - - pygments - - pygraphviz - - pytest - - pyyaml - requires_python: '>=3.11' - editable: true -- pypi: . - name: gettsim - version: 0.7.1.dev305+gb67bbac0.d20250215 - sha256: 468d7ee73fd31c448cd102912b902342be58fb2b7298aacca19f8f4eca97a50d + version: 0.7.1.dev328+g5efedc19 + sha256: bc465d41282649a15c4e694bc23d8d1b8dd9408e10dd6f61b26efbc16b155913 requires_dist: - astor - ipywidgets @@ -5384,6 +5644,50 @@ packages: - pyyaml requires_python: '>=3.11' editable: true +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + sha256: 5d8a48abdb1bc2b54f1380d2805cb9cd6cd9609ed0e5c3ed272aef92ab53b190 + md5: e2e44caeaef6e4b107577aa46c95eb12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libglib 2.82.2 h2ff4ddf_1 + license: LGPL-2.1-or-later + purls: [] + size: 115452 + timestamp: 1737037532892 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + sha256: d626c650d320ca14c259a7aa12283c452b3ca1e58191c29b820001725822285e + md5: 9c64be7c2dbbdde429d12a84c538ef1e + depends: + - __osx >=10.13 + - libglib 2.82.2 h5c976ab_1 + - libintl >=0.22.5,<1.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 100685 + timestamp: 1737038130 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + sha256: b6874fea5674855149f929899126e4298d020945f3d9c6a7955d14ede1855e3a + md5: bdc35b7b75b7cd2bcfd288e399333f29 + depends: + - __osx >=11.0 + - libglib 2.82.2 hdff4504_1 + - libintl >=0.22.5,<1.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 101008 + timestamp: 1737037840312 +- conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + sha256: 04093c9aafba033f55e4145336cff8f41809681dc6a61530dbd1016924cb4ded + md5: b750a0ed3904efe3d9a42e7015b92e75 + depends: + - python >=3.9 + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gprof2dot?source=hash-mapping + size: 39376 + timestamp: 1734700339768 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add md5: f87c7b7c2cb45f323ffbce941c78ab7c @@ -5427,149 +5731,189 @@ packages: purls: [] size: 95406 timestamp: 1711634622644 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - sha256: 2eb794ae1de42b688f89811113ae3dcb63698272ee8f87029abce5f77c742c2a - md5: 953e31ea00d46beb7e64a79fc291ec44 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + sha256: e6866409ba03df392ac5ec6f0d6ff9751a685ed917bfbcd8a73f550c5fe83c2b + md5: df7835d2c73cd1889d377cfd6694ada4 depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 + - adwaita-icon-theme + - cairo >=1.18.2,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 - - gtk2 + - gtk3 >=3.24.43,<4.0a0 - gts >=0.7.6,<0.8.0a0 - - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.80.3,<3.0a0 - - librsvg >=2.58.2,<3.0a0 - - libstdcxx-ng >=12 - - libwebp-base >=1.4.0,<2.0a0 + - libglib >=2.82.2,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libstdcxx >=13 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.50.14,<2.0a0 + - pango >=1.56.1,<2.0a0 license: EPL-1.0 license_family: Other purls: [] - size: 2303111 - timestamp: 1722673717117 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c - md5: ef49aa1e3614bfc6fb5369675129c09b + size: 2413095 + timestamp: 1738602910851 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + sha256: 3a8eef238000e8fcb8f4f31a035869d7b5ad0466f69c72e9064786b54d1812cc + md5: f1e519616cb1c137cff9849cfa1beb93 depends: - __osx >=10.13 - - cairo >=1.18.0,<2.0a0 + - adwaita-icon-theme + - cairo >=1.18.2,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 - - gtk2 + - gtk3 >=3.24.43,<4.0a0 - gts >=0.7.6,<0.8.0a0 - - libcxx >=16 - - libexpat >=2.6.2,<3.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.80.3,<3.0a0 - - librsvg >=2.58.2,<3.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libglib >=2.82.2,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.50.14,<2.0a0 + - pango >=1.56.1,<2.0a0 license: EPL-1.0 license_family: Other purls: [] - size: 4984341 - timestamp: 1722673941539 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - sha256: 33867d6ebc54f290dfb511fdca0297b30ca06985ac4443e1fc9d7fe03bfbad05 - md5: 29c0dcbd4ec7135b7a55805aa3a5a331 + size: 2269263 + timestamp: 1738603378351 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + sha256: 54e3ce5668b17ea41fed515e57fbd9e805969df468eaf7ff65389d7f53b46d54 + md5: b0b656550a16dfba7efa1479756c5b63 depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 + - adwaita-icon-theme + - cairo >=1.18.2,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 - - gtk2 + - gtk3 >=3.24.43,<4.0a0 - gts >=0.7.6,<0.8.0a0 - - libcxx >=16 - - libexpat >=2.6.2,<3.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.80.3,<3.0a0 - - librsvg >=2.58.2,<3.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libglib >=2.82.2,<3.0a0 + - librsvg >=2.58.4,<3.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.50.14,<2.0a0 + - pango >=1.56.1,<2.0a0 license: EPL-1.0 license_family: Other purls: [] - size: 5082874 - timestamp: 1722673934247 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda - sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced - md5: 8074641ca215d6f30b6152d9d79f0b9e + size: 2189259 + timestamp: 1738603343083 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda + sha256: f68aa78450917dd0e3c18340b249bdaed05425e0ab5d64e1ebbe16c1416b807c + md5: 981641a62e6786479ac4d425dc853989 depends: - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - getopt-win32 >=0.1,<0.2.0a0 - gts >=0.7.6,<0.8.0a0 - - libexpat >=2.6.2,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.80.3,<3.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libglib >=2.82.2,<3.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.50.14,<2.0a0 + - pango >=1.56.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: EPL-1.0 license_family: Other purls: [] - size: 1157652 - timestamp: 1722674488876 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda - sha256: 16644d036321b32635369c183502974c8b989fa516c313bd379f9aa4adcdf642 - md5: 1483ba046164be27df7f6eddbcec3a12 + size: 1172679 + timestamp: 1738603383430 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda + sha256: fc8abccb4b0d454891847bdd8163332ff8607aa33ea9cf1e43b3828fc88c42ce + md5: a891e341072432fafb853b3762957cbf depends: - __glibc >=2.17,<3.0.a0 + - at-spi2-atk >=2.38.0,<3.0a0 - atk-1.0 >=2.38.0 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - pango >=1.54.0,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - license: LGPL-2.1-or-later + - glib-tools + - harfbuzz >=10.4.0,<11.0a0 + - hicolor-icon-theme + - libcups >=2.3.3,<2.4.0a0 + - libcups >=2.3.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - liblzma >=5.6.4,<6.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.1,<2.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcomposite >=0.4.6,<1.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxdamage >=1.1.6,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxi >=1.8.2,<2.0a0 + - xorg-libxinerama >=1.1.5,<1.2.0a0 + - xorg-libxrandr >=1.5.4,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.0-or-later + license_family: LGPL purls: [] - size: 6501561 - timestamp: 1721285940408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda - sha256: 9d7a50dae4aef357473b16c5121c1803a0c9ee1b8f93c4d90dc0196ae5007208 - md5: 308376a1154bc0ab3bbeeccf6ff986be + size: 5563940 + timestamp: 1741694746664 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda + sha256: fc74cae058d39dc25697572b39d97cf2a39b3b37d6d9a557a1b9f95b75d39b3a + md5: 522364f052b5e18bfea181e33d1eed1b depends: - __osx >=10.13 - atk-1.0 >=2.38.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - pango >=1.54.0,<2.0a0 - license: LGPL-2.1-or-later + - glib-tools + - harfbuzz >=10.4.0,<11.0a0 + - hicolor-icon-theme + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libintl >=0.23.1,<1.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.1,<2.0a0 + license: LGPL-2.0-or-later + license_family: LGPL purls: [] - size: 6162947 - timestamp: 1721286459536 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda - sha256: 26ca08e16bb530465370d94309bfb500438f6cff4d6cf85725db3b7afcd9eccd - md5: 23558d38b8e80959b74cfe83acad7c66 + size: 4910558 + timestamp: 1741695295277 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda + sha256: 5adbee61709811186022ba0013cdda2029ae340be4de95c909a718045ec79d00 + md5: a01d2dd60413e43f581445d1b2ed8d5d depends: - __osx >=11.0 - atk-1.0 >=2.38.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.4,<2.0a0 + - epoxy >=1.5.10,<1.6.0a0 + - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - pango >=1.54.0,<2.0a0 - license: LGPL-2.1-or-later + - glib-tools + - harfbuzz >=10.4.0,<11.0a0 + - hicolor-icon-theme + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libintl >=0.23.1,<1.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.1,<2.0a0 + license: LGPL-2.0-or-later + license_family: LGPL purls: [] - size: 6152068 - timestamp: 1721286930050 + size: 4773126 + timestamp: 1741695489897 - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b md5: 4d8df0b0db060d33c9a702ada998a8fe @@ -5617,108 +5961,140 @@ packages: purls: [] size: 188688 timestamp: 1686545648050 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT purls: - pkg:pypi/h11?source=hash-mapping - size: 48251 - timestamp: 1664132995560 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 - depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 - - python >=3.6.1 + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/h2?source=hash-mapping - size: 46754 - timestamp: 1634280590080 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 - md5: 76b32dcf243444aea9c6b804bcfa40b8 + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + sha256: 3b4ccabf170e1bf98c593f724cc4defe286d64cb19288751a50c63809ca32d5f + md5: 81f137b4153cf111ff8e3188b6fb8e73 depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1603653 - timestamp: 1721186240105 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 - md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 + size: 1694183 + timestamp: 1741016164622 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + sha256: 87e47de769f93f756e61e40555796382fb1dc3cb754e2e068958a949b3df33f7 + md5: 05493515d0b4467f8229f1e154ec80c3 depends: - __osx >=10.13 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1372588 - timestamp: 1721186294497 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f - md5: 50f6825d3c4a6fca6fefdefa98081554 + size: 1442847 + timestamp: 1741016606354 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + sha256: 5c0ba63cdc0ccda3309923deff839528cf870daf4ae0173ab07e275698236321 + md5: c13f50a1000cc3adadb2d93c76dcedab depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1317509 - timestamp: 1721186764931 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 - md5: 254f119aaed2c0be271c1114ae18d09b + size: 1380378 + timestamp: 1741016758098 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + sha256: 4e8a5219328697247b682b161e02577613b50d20237d4b3e575713d811036895 + md5: 63185f1b04a3f5ebd728cf1bec2dbedc depends: - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libglib >=2.80.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: [] - size: 1095620 - timestamp: 1721187287831 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + size: 1112646 + timestamp: 1741017842033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 + md5: bbf6f174dcd3254e19a2f5d2295ce808 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 13841 + timestamp: 1605162808667 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + sha256: a5cb0c03d731bfb09b4262a3afdeae33bef98bc73972f1bd6b7e3fcd240bea41 + md5: f64218f19d9a441e80343cea13be1afb + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 13821 + timestamp: 1605162984889 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + sha256: 286e33fb452f61133a3a61d002890235d1d1378554218ab063d6870416440281 + md5: 237b05b7eb284d7eebc3c5d93f5e4bca + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 13800 + timestamp: 1611053664863 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - - python + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/hpack?source=hash-mapping - size: 25341 - timestamp: 1598856368685 + size: 30731 + timestamp: 1737618390337 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df md5: 2ca8e6dbc86525c8b95e3c0ffa26442e @@ -5731,36 +6107,36 @@ packages: - certifi license: BSD-3-Clause license_family: BSD - purls: [] + purls: + - pkg:pypi/httpcore?source=hash-mapping size: 48959 timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/httpx?source=hash-mapping - size: 65085 - timestamp: 1724778453275 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/hyperframe?source=hash-mapping - size: 14646 - timestamp: 1619110249723 + size: 17397 + timestamp: 1737618427549 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 @@ -5805,29 +6181,29 @@ packages: purls: [] size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.2-pyhd8ed1ab_0.conda - sha256: 4e3f1c381ad65b476a98d03c0f6c73df04ae4095b501f51129ba6f2a7660179c - md5: 636950f839e065401e2031624a414f0b +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + sha256: b74a2ffa7be9278d7b8770b6870c360747149c683865e63476b0e1db23038429 + md5: 542f45bf054c6b9cf8d00a3b1976f945 depends: - - python >=3.6 + - python >=3.9 - ukkonen license: MIT license_family: MIT purls: - pkg:pypi/identify?source=hash-mapping - size: 78376 - timestamp: 1731187862708 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + size: 78600 + timestamp: 1741502780749 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/idna?source=hash-mapping - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 md5: 7de5386c8fea29e76b303f37dde4c352 @@ -5839,43 +6215,43 @@ packages: - pkg:pypi/imagesize?source=hash-mapping size: 10164 timestamp: 1656939625410 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_0.conda - sha256: 7194700ce1a5ad2621fd68e894dd8c1ceaff9a38723e6e0e5298fdef13017b1c - md5: 54198435fce4d64d8a89af22573012a8 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c depends: - - python >=3.8 + - python >=3.9 - zipp >=0.5 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/importlib-metadata?source=hash-mapping - size: 28646 - timestamp: 1726082927916 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 - md5: c808991d29b9838fb4d96ce8267ec9ec + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 depends: - - python >=3.8 + - python >=3.9 - zipp >=3.1.0 constrains: - - importlib-resources >=6.4.5,<6.4.6.0a0 + - importlib-resources >=6.5.2,<6.5.3.0a0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/importlib-resources?source=hash-mapping - size: 32725 - timestamp: 1725921462405 -- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda - sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 - md5: f800d2da156d08e289b14e87e43c1ae5 + size: 33781 + timestamp: 1736252433366 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/iniconfig?source=hash-mapping - size: 11101 - timestamp: 1673103208955 + size: 11474 + timestamp: 1733223232820 - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 md5: 2d89243bfb53652c182a7c73182cce4f @@ -5957,245 +6333,260 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - sha256: 606723272a208cca1036852e04fbb61741b78451784746e75edd1becb70347d2 - md5: 56db21d7d51410fcfbfeca3d1a6b4269 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + sha256: 72ad5d59719d7639641f21032de870fadd43ec2349229161728b736f1df720d1 + md5: e5ba968166136311157765e8b2ccb9d0 depends: - - __unix + - __win + - colorama - decorator - exceptiongroup + - ipython_pygments_lexers - jedi >=0.16 - matplotlib-inline - - pexpect >4.3 - pickleshare - prompt-toolkit >=3.0.41,<3.1.0 - pygments >=2.4.0 - - python >=3.10 + - python >=3.11 - stack_data - traitlets >=5.13.0 - typing_extensions >=4.6 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 599356 - timestamp: 1729866495921 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh7428d3b_0.conda - sha256: 2208dbe96e94ba653c4e0a5f302e36f16df73eec1968cfb85eff2d9775c9ced1 - md5: 9dc505b3569b4c26cffc241c50695f75 + size: 614763 + timestamp: 1741457145171 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + sha256: 98f14471e0f492d290c4882f1e2c313fffc67a0f9a3a36e699d7b0c5d42a5196 + md5: b031bcd65b260a0a3353531eab50d465 depends: - - __win - - colorama + - __unix + - pexpect >4.3 - decorator - exceptiongroup + - ipython_pygments_lexers - jedi >=0.16 - matplotlib-inline - pickleshare - prompt-toolkit >=3.0.41,<3.1.0 - pygments >=2.4.0 - - python >=3.10 + - python >=3.11 - stack_data - traitlets >=5.13.0 - typing_extensions >=4.6 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 600237 - timestamp: 1729866942619 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_0.conda - sha256: ae27447f300c85a184d5d4fa08674eaa93931c12275daca981eb986f5d7795b3 - md5: a022d34163147d16b27de86dc53e93fc + size: 615519 + timestamp: 1741457126430 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 + md5: bd80ba060603cc228d9d81c257093119 depends: - - comm >=0.1.3 - - ipython >=6.1.0 - - jupyterlab_widgets >=3.0.13,<3.1.0 - - python >=3.7 - - traitlets >=4.3.1 + - pygments + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython-pygments-lexers?source=hash-mapping + size: 13993 + timestamp: 1737123723464 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + sha256: f419657566e3d9bea85b288a0ce3a8e42d76cd82ac1697c6917891df3ae149ab + md5: bb19ad65196475ab6d0bb3532d7f8d96 + depends: + - comm >=0.1.3 + - ipython >=6.1.0 + - jupyterlab_widgets >=3.0.13,<3.1.0 + - python >=3.9 + - traitlets >=4.3.1 - widgetsnbextension >=4.0.13,<4.1.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/ipywidgets?source=hash-mapping - size: 113497 - timestamp: 1724334989324 -- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493 - md5: 4cb68948e0b8429534380243d063a27a + size: 113982 + timestamp: 1733493669268 +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a depends: - arrow >=0.15.0 - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/isoduration?source=hash-mapping - size: 17189 - timestamp: 1638811664194 -- pypi: https://files.pythonhosted.org/packages/f4/58/cc0721a1030fcbab0984beea0bf3c4610ec103f738423cdfa9c4ceb40598/jax-0.5.0-py3-none-any.whl + size: 19832 + timestamp: 1733493720346 +- pypi: https://files.pythonhosted.org/packages/77/6f/0da6e0bc90e738fc63c584d65bef326f76a6550343ae1c243647bd1880fd/jax-0.5.2-py3-none-any.whl name: jax - version: 0.5.0 - sha256: b3907aa87ae2c340b39cdbf80c07a74550369cafcaf7398fb60ba58d167345ab + version: 0.5.2 + sha256: d80954d90e2cce57498b6e9c23a6402c2c39edf86d4f808813ab1d1e97672e34 requires_dist: - - jaxlib<=0.5.0,>=0.5.0 + - jaxlib>=0.5.1,<=0.5.2 - ml-dtypes>=0.4.0 - numpy>=1.25 - numpy>=1.26.0 ; python_full_version >= '3.12' - opt-einsum - scipy>=1.11.1 - - jaxlib==0.5.0 ; extra == 'minimum-jaxlib' - - jaxlib==0.4.38 ; extra == 'ci' - - jaxlib<=0.5.0,>=0.5.0 ; extra == 'tpu' - - libtpu-nightly==0.1.dev20241010+nightly.cleanup ; extra == 'tpu' - - libtpu==0.0.8 ; extra == 'tpu' + - jaxlib==0.5.1 ; extra == 'minimum-jaxlib' + - jaxlib==0.5.0 ; extra == 'ci' + - jaxlib>=0.5.1,<=0.5.2 ; extra == 'tpu' + - libtpu==0.0.10.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib==0.5.0 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda' - - jaxlib==0.5.0 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda12' - - jaxlib==0.5.0 ; extra == 'cuda12-pip' - - jax-cuda12-plugin[with-cuda]<=0.5.0,>=0.5.0 ; extra == 'cuda12-pip' - - jaxlib==0.5.0 ; extra == 'cuda12-local' - - jax-cuda12-plugin==0.5.0 ; extra == 'cuda12-local' - - jaxlib==0.5.0 ; extra == 'rocm' - - jax-rocm60-plugin<=0.5.0,>=0.5.0 ; extra == 'rocm' + - jaxlib==0.5.1 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda' + - jaxlib==0.5.1 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda12' + - jaxlib==0.5.1 ; extra == 'cuda12-pip' + - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda12-pip' + - jaxlib==0.5.1 ; extra == 'cuda12-local' + - jax-cuda12-plugin==0.5.1 ; extra == 'cuda12-local' + - jaxlib==0.5.1 ; extra == 'rocm' + - jax-rocm60-plugin>=0.5.1,<=0.5.2 ; extra == 'rocm' - kubernetes ; extra == 'k8s' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.4.34-pyhd8ed1ab_0.conda - sha256: da3880afc35042b92e0ad214beee372e41162da374dfaa8b1164db1dcee671b2 - md5: f0d3c57355acf3f06d93672e57c0c1e8 +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + sha256: be7644c955cd4be330a13a8f64c0b73d520f8b3ab6bb64b8b1d3a17945345684 + md5: f19f3d281603af8e67d533dbeac279ce depends: - importlib-metadata >=4.6 - - jaxlib >=0.4.34,<=0.4.34 - - ml_dtypes >=0.2.0 - - numpy >=1.26 - - opt-einsum + - jaxlib >=0.5.1,<=0.5.2 + - ml_dtypes >=0.4.0 + - numpy >=1.25 + - opt_einsum - python >=3.10 - scipy >=1.11.1 constrains: - - cudnn >=9.2.1.18 + - cudnn >=9.2.1.18,<10.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jax?source=hash-mapping - size: 1421248 - timestamp: 1729336456855 -- pypi: https://files.pythonhosted.org/packages/2d/cb/11bb92324afb6ba678f388e10b78d6b02196bc8887eb5aa0d85ce398edf9/jaxlib-0.5.0-cp312-cp312-win_amd64.whl + size: 1556886 + timestamp: 1741182198677 +- pypi: https://files.pythonhosted.org/packages/b8/3b/68981550dc34b86deb8e50b8cb14fd8bd620876276cfce2218ef7f11be90/jaxlib-0.5.1-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.5.0 - sha256: 5baedbeeb60fa493c7528783254f04c6e986a2826266b198ed37e9336af2ef8c + version: 0.5.1 + sha256: 0ed6fc1fbee91be70979f05dd523f11ca9de2a14d81a7f7d5aa5e783580587c2 requires_dist: - scipy>=1.11.1 - numpy>=1.25 - ml-dtypes>=0.2.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.34-cpu_py312haec0345_0.conda - sha256: 8e2dce1d39ccb4e6883444f71b7155168c0612d9d086b58616578448aeb33afe - md5: 08f587f0f6505671c7715163e18b6f3a +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_1.conda + sha256: 1fcc1bf0bef2ff4a072744d57e4f9cb5b7a4c75191d2a18767b4fcfbac76fc8c + md5: 338663f410794bf924e6264060071cfb depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libgcc >=13 - - libgrpc >=1.65.5,<1.66.0a0 + - libgrpc >=1.71.0,<1.72.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.4.34 + - jax >=0.5.2 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 57258872 - timestamp: 1729096396952 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.4.34-cpu_py312h2d9848c_0.conda - sha256: 175eec267092cf89bf5192a35d81dc97a96970668123f00309ce926078538912 - md5: e91888eb7904797f734f295f665ff020 + size: 69281416 + timestamp: 1741977510646 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.2-cpu_py312ha70eef1_1.conda + sha256: e26cfe941231bf5a6938b7e95872142359728adc72cc719138dada4f1dbf56b8 + md5: be79d44592d3eb64d4cf5df217ab3d7f depends: - - __osx >=10.14 + - __osx >=10.15 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libgrpc >=1.65.5,<1.66.0a0 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.4.34 + - jax >=0.5.2 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 55681004 - timestamp: 1729093432667 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.4.34-cpu_py312h70eed8f_0.conda - sha256: 6be479c82e7d7bf2723c52dd2b1f661b227b05e9841745b81dc12ad794acbe5f - md5: d7992140b69f14ecb0f371b0c0f3aa76 + size: 66101366 + timestamp: 1741980061933 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py312he253ca6_1.conda + sha256: 640a214bed664c901cd632693aa22148184ae5b405d92162d822e6d2e0339e17 + md5: cf9f54f9fddc99b08136c288ad1955a1 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libgrpc >=1.65.5,<1.66.0a0 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.4.34 + - jax >=0.5.2 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 45370019 - timestamp: 1729094275915 -- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab - md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + size: 55675574 + timestamp: 1741976863101 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: - parso >=0.8.3,<0.9.0 - python >=3.9 license: Apache-2.0 AND MIT purls: - pkg:pypi/jedi?source=hash-mapping - size: 842916 - timestamp: 1731317305873 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + size: 843646 + timestamp: 1733300981994 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + sha256: f1ac18b11637ddadc05642e8185a851c7fab5998c6f5470d716812fae943b2af + md5: 446bd6c8cb26050d528881df495ce646 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=hash-mapping - size: 111565 - timestamp: 1715127275924 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - sha256: 402586e586761e0d51dd590fb71786f7f4e21c16353ca7d1c559358a1f849b26 - md5: b5fd1ac9269dd22e003eaac27e249d97 + - pkg:pypi/jinja2?source=compressed-mapping + size: 112714 + timestamp: 1741263433881 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/json5?source=hash-mapping - size: 28525 - timestamp: 1731366079831 + size: 31573 + timestamp: 1733272196759 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda sha256: 2f082f7b12a7c6824e051321c1029452562ad6d496ad2e8c8b7b3dea1c8feb92 md5: 5ca76f61b00a15a9be0612d4d883badc @@ -6294,38 +6685,38 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42235 timestamp: 1725303419414 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff - md5: da304c192ad59975202859b367d0f6a2 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 - jsonschema-specifications >=2023.03.6 - pkgutil-resolve-name >=1.3.10 - - python >=3.8 + - python >=3.9 - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT license_family: MIT purls: - pkg:pypi/jsonschema?source=hash-mapping - size: 74323 - timestamp: 1720529611305 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 - md5: 720745920222587ef942acfbc578b584 + size: 74256 + timestamp: 1733472818764 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - python >=3.8 + - python >=3.9 - referencing >=0.31.0 license: MIT license_family: MIT purls: - pkg:pypi/jsonschema-specifications?source=hash-mapping - size: 16165 - timestamp: 1728418976382 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 - md5: 16b37612b3a2fd77f409329e213b530c + size: 16170 + timestamp: 1733493624968 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - fqdn - idna @@ -6339,28 +6730,28 @@ packages: license: MIT license_family: MIT purls: [] - size: 7143 - timestamp: 1720529619500 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - sha256: 2151c2c63e0442a4c69ee0ad8a634195eedab10b7b74c0ec8266471842239a93 - md5: 885867f6adab3d7ecdf8ab6ca0785f51 + size: 7135 + timestamp: 1733472820035 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyter-lsp?source=hash-mapping - size: 55539 - timestamp: 1712707521811 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + size: 55221 + timestamp: 1733493006611 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 @@ -6369,8 +6760,8 @@ packages: license_family: BSD purls: - pkg:pypi/jupyter-client?source=hash-mapping - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd md5: 0a2980dada0dd7fd0998f0342308b1b1 @@ -6401,41 +6792,43 @@ packages: - pkg:pypi/jupyter-core?source=hash-mapping size: 58269 timestamp: 1727164026641 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - sha256: cd3f41dc093162a41d4bae171e40a1b9b115c4d488e9bb837a8fa9d084931fb9 - md5: ed45423c41b3da15ea1df39b1f80c2ca +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 + md5: f56000b36f09ab7533877e695e4e8cb0 depends: - jsonschema-with-format-nongpl >=4.18.0 - - python >=3.8 + - packaging + - python >=3.9 - python-json-logger >=2.0.4 - pyyaml >=5.3 - referencing - rfc3339-validator - rfc3986-validator >=0.1.1 - traitlets >=5.3 + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-events?source=hash-mapping - size: 21475 - timestamp: 1710805759187 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - sha256: edab71a05feceac54bdb90e755a257545af7832b9911607c1a70f09be44ba985 - md5: ca23c71f70a7c7935b3d03f0f1a5801d + - pkg:pypi/jupyter-events?source=compressed-mapping + size: 23647 + timestamp: 1738765986736 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a + md5: 6ba8c206b5c6f52b82435056cf74ee46 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 - jinja2 >=3.0.3 - jupyter_client >=7.4.4 - jupyter_core >=4.12,!=5.0.* - - jupyter_events >=0.9.0 + - jupyter_events >=0.11.0 - jupyter_server_terminals >=0.4.4 - nbconvert-core >=6.4.4 - nbformat >=5.3.0 - overrides >=5.0 - packaging >=22.0 - prometheus_client >=0.9 - - python >=3.8 + - python >=3.9 - pyzmq >=24 - send2trash >=1.8.2 - terminado >=0.8.3 @@ -6446,23 +6839,23 @@ packages: license_family: BSD purls: - pkg:pypi/jupyter-server?source=hash-mapping - size: 323978 - timestamp: 1720816754998 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db - md5: 219b3833aa8ed91d47d1be6ca03f30be + size: 327747 + timestamp: 1734702771032 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - python >=3.8 + - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyter-server-terminals?source=hash-mapping - size: 19818 - timestamp: 1710262791393 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - sha256: ff1035eb0020dbaf4e332ef4b81a7068b595dfc57dde3313e9c4a37583772644 - md5: b4f3d579fc21a44518d52c52507461b4 + size: 19711 + timestamp: 1733428049134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + sha256: cf10c9b4158c4ef2796fde546f2bbe45f43c1402a0c2a175939ebbb308846ada + md5: 8b91a10c966aa65b9ad1a2702e6ef121 depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -6476,33 +6869,33 @@ packages: - notebook-shim >=0.2 - packaging - python >=3.9 - - setuptools >=40.1.0 + - setuptools >=40.8.0 - tomli >=1.2.2 - tornado >=6.2.0 - traitlets license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab?source=hash-mapping - size: 7101932 - timestamp: 1731776859245 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 - md5: afcd1b53bcac8844540358e33f33d28f + - pkg:pypi/jupyterlab?source=compressed-mapping + size: 7641308 + timestamp: 1741964212957 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d depends: - pygments >=2.4.1,<3 - - python >=3.7 + - python >=3.9 constrains: - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyterlab-pygments?source=hash-mapping - size: 18776 - timestamp: 1707149279640 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - sha256: a23b26d1a35bccdb91b9232119e5f402624e1e1a252b0e64cc20c6eb5b87cefb - md5: af8239bf1ba7e8c69b689f780f653488 + size: 18711 + timestamp: 1733328194037 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 depends: - babel >=2.10 - importlib-metadata >=4.8.3 @@ -6511,7 +6904,7 @@ packages: - jsonschema >=4.18 - jupyter_server >=1.21,<3 - packaging >=21.3 - - python >=3.8 + - python >=3.9 - requests >=2.31 constrains: - openapi-core >=0.18.0,<0.19.0 @@ -6519,21 +6912,21 @@ packages: license_family: BSD purls: - pkg:pypi/jupyterlab-server?source=hash-mapping - size: 49355 - timestamp: 1721163412436 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_0.conda - sha256: 0e7ec7936d766f39d5a0a8eafc63f5543f488883ad3645246bc22db6d632566e - md5: ccea946e6dce9f330fbf7fca97fe8de7 + size: 49449 + timestamp: 1733599666357 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + sha256: 206489e417408d2ffc2a7b245008b4735a8beb59df6c9109d4f77e7bc5969d5d + md5: b26e487434032d7f486277beb0cead3a depends: - - python >=3.7 + - python >=3.9 constrains: - jupyterlab >=3,<5 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyterlab-widgets?source=hash-mapping - size: 186024 - timestamp: 1724331451102 + size: 186358 + timestamp: 1733428156991 - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl name: kaleido version: 0.1.0.post1 @@ -6621,9 +7014,9 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -6631,8 +7024,8 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - size: 669211 - timestamp: 1729655358674 + size: 671240 + timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f @@ -6675,230 +7068,246 @@ packages: purls: [] size: 194365 timestamp: 1657977692274 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.0-cxx17_hbbce691_0.conda + sha256: 7bf2a7a2db78b10a6e51c9474409338190df7fea1e470fcf9d2efad85abce533 + md5: 0aee9a1135a184211163c192ecc81652 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 + - abseil-cpp =20250127.0 + - libabseil-static =20250127.0=cxx17* license: Apache-2.0 license_family: Apache purls: [] - size: 1310521 - timestamp: 1727295454064 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda - sha256: b548e80280242ad1d93d8d7fb48a30af7e4124959ba2031c65c9675b98163652 - md5: 40373920232a6ac0404eee9cf39a9f09 + size: 1322939 + timestamp: 1741093907243 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.0-cxx17_h0e468a2_0.conda + sha256: 3b48ae53bc79e23ca2711a5ee0108fecd0970f491b1ee0db222f54e190012ccf + md5: f21e8b9b49288f22425221a48026ec8d depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20250127.0 + - libabseil-static =20250127.0=cxx17* license: Apache-2.0 license_family: Apache purls: [] - size: 1170354 - timestamp: 1727295597292 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + size: 1179064 + timestamp: 1741094067702 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.0-cxx17_h07bc746_0.conda + sha256: b8fb5e23e1ec8fd981f05f6812833f3b83a57833470bcc464ac3c812a6b91e3d + md5: fc8e122b60122397da917df25e101c2a depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 + - abseil-cpp =20250127.0 + - libabseil-static =20250127.0=cxx17* license: Apache-2.0 license_family: Apache purls: [] - size: 1179072 - timestamp: 1727295571173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - build_number: 25 - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b + size: 1193042 + timestamp: 1741094304276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas - - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15677 - timestamp: 1729642900350 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - build_number: 25 - sha256: 1b22b5322a311a775bca637b26317645cf07e35f125cede9278c6c45db6e7105 - md5: da0a6f87958893e1d2e2bbc7e7a6541f + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + build_number: 31 + sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d + md5: a8c1c9f95d1c46d67028a6146c1ea77c depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapack 3.9.0 25_osx64_openblas - - liblapacke 3.9.0 25_osx64_openblas - - blas * openblas - - libcblas 3.9.0 25_osx64_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15952 - timestamp: 1729643159199 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - build_number: 25 - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + size: 17105 + timestamp: 1740087945188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15913 - timestamp: 1729643265495 -- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - build_number: 25 - sha256: 5468bb91c44b41ce060bbd997c797b2f91e2b7ce91a7cbf4ddf7e7b734a8dc98 - md5: 499208e81242efb6e5abc7366c91c816 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + build_number: 31 + sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8 + md5: d05563c577fe2f37693a554b3f271e8f depends: - - mkl 2024.2.2 h66d3029_14 + - mkl 2024.2.2 h66d3029_15 constrains: - - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl + - libcblas =3.9.0=31*_mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl + - liblapack =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3736641 - timestamp: 1729643534444 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - build_number: 25 - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + size: 3733728 + timestamp: 1740088452830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas - - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15613 - timestamp: 1729642905619 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - build_number: 25 - sha256: b04ae297aa5396df3135514866db72845b111c92524570f923625473f11cfbe2 - md5: ab304b75ea67f850cf7adf9156e3f62f + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + build_number: 31 + sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c + md5: c655cc2b0c48ec454f7a4db92415d012 depends: - - libblas 3.9.0 25_osx64_openblas + - libblas 3.9.0 31_h7f60823_openblas constrains: - - liblapack 3.9.0 25_osx64_openblas - - liblapacke 3.9.0 25_osx64_openblas - - blas * openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15842 - timestamp: 1729643166929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - build_number: 25 - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + size: 17006 + timestamp: 1740087955460 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15837 - timestamp: 1729643270793 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - build_number: 25 - sha256: 21528cdfe67dafdb2d21925515a167f13963e002c2b6d06d68984767f731850c - md5: 3ed189ba03a9888a8013aaee0d67c49d + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + build_number: 31 + sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8 + md5: 43c100b94ad2607382b0cf0f3a6b0bf3 depends: - - libblas 3.9.0 25_win64_mkl + - libblas 3.9.0 31_h641d27c_mkl constrains: - - blas * mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl + - liblapack =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3732258 - timestamp: 1729643561581 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - sha256: 48c6d0ab9dd0c66693f79f4a032cd9ebb64fb88329dfa747aeac5299f9b3f33b - md5: 5f23923c08151687ff2fc3002b0a7234 + size: 3733549 + timestamp: 1740088502127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 + md5: d4529f4dff3057982a7617c7ac58fde3 + depends: + - krb5 >=1.21.1,<1.22.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 4519402 + timestamp: 1689195353551 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda + sha256: 6b2fa3fb1e8cd2000b0ed259e0c4e49cbef7b76890157fac3e494bc659a20330 + md5: 4b8f8dc448d814169dbc58fc7286057d depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 529010 - timestamp: 1732060320836 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + size: 527924 + timestamp: 1736877256721 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 520678 - timestamp: 1732060258949 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 72242 - timestamp: 1728177071251 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - sha256: 681035346974c3315685dc40898e26f65f1c00cbb0b5fd80cc2599e207a34b31 - md5: a15785ccc62ae2a8febd299424081efb + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e + md5: 120f8f7ba6a8defb59f4253447db4bb4 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 70407 - timestamp: 1728177128525 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + size: 69309 + timestamp: 1734374105905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 54089 - timestamp: 1728177149927 -- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - sha256: 579c634b7de8869cb1d76eccd4c032dc275d5a017212128502ea4dc828a5b361 - md5: a3439ce12d4e3cd887270d9436f9a4c8 + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 + md5: a9624935147a25b06013099d3038e467 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -6906,39 +7315,45 @@ packages: license: MIT license_family: MIT purls: [] - size: 155506 - timestamp: 1728177485361 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf - md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + size: 155723 + timestamp: 1734374084110 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - - libgcc-ng >=7.5.0 - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause license_family: BSD purls: [] - size: 123878 - timestamp: 1597616541093 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 - md5: 6016a8a1d0e63cac3de2c352cd40208b + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause license_family: BSD purls: [] - size: 105382 - timestamp: 1597616576726 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + size: 115563 + timestamp: 1738479554273 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - - ncurses >=6.2,<7.0.0a0 + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 license: BSD-2-Clause license_family: BSD purls: [] - size: 96607 - timestamp: 1597616630749 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c @@ -6990,24 +7405,27 @@ packages: purls: [] size: 139068 timestamp: 1730967442102 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f - md5: ccb34fb14960ad8b125962d3d79b31a9 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + sha256: 7805fdc536a3da7fb63dc48e040105cd4260c69a1d2bf5804dadd31bde8bab51 + md5: b8667b0d0400b8dcb6844d8e06b2027d + depends: + - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 51348 - timestamp: 1636488394370 + size: 47258 + timestamp: 1739260651925 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -7016,132 +7434,133 @@ packages: purls: [] size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 - md5: 2c96d1b6915b408893f9472569dee135 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + sha256: 77922d8dd2faf88ac6accaeebf06409d1820486fde710cff6b554d12273e46be + md5: 31d5107f75b2f204937728417e2e39e5 depends: - - vc >=14.1,<15.0a0 - - vs2015_runtime >=14.16.27012 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: MIT license_family: MIT purls: [] - size: 42063 - timestamp: 1636489106777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df + size: 40830 + timestamp: 1739260917585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_1.conda - sha256: ef840e797714440bb10b69446d815966fff41fdac79f79c4e19c475d81cd375d - md5: 75fdd34824997a0f9950a703b15d8ac5 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + sha256: fddf2fc037bc95adb3b369e8866da8a71b6a67ebcfc4d7035ac4208309dc9e72 + md5: 4a74c1461a0ba47a3346c04bdccbe2ad depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 h1383e82_1 - msys2-conda-epoch <0.0a0 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 h1383e82_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 666386 - timestamp: 1729089506769 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 666343 + timestamp: 1740240717807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 - md5: 30ee3a29c84cf7b842a8c5828c4b7c13 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd + md5: 68fc66282364981589ef36868b1a7c78 depends: - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: GD license_family: BSD purls: [] - size: 225113 - timestamp: 1722928278395 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - sha256: b5ae19078f96912058d0f96120bf56dae11a417178cfcf220219486778ef868d - md5: a87f68ea91c66e1a9fb515f6aeba6ba2 + size: 177082 + timestamp: 1737548051015 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + sha256: af8ca696b229236e4a692220a26421a4f3d28a6ceff16723cd1fe12bc7e6517c + md5: 0eea404372aa41cf95e71c604534b2a2 depends: - __osx >=10.13 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libexpat >=2.6.2,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libiconv >=1.17,<2.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: GD license_family: BSD purls: [] - size: 200456 - timestamp: 1722928713359 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda - sha256: d15beaa2e862a09526e704f22f7d0b7fa73b114b868106dd686e167b9d65558e - md5: c9e450ce5ced76f107c494fbd37325f5 + size: 162601 + timestamp: 1737548422107 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + sha256: be038eb8dfe296509aee2df21184c72cb76285b0340448525664bc396aa6146d + md5: 4581aa3cfcd1a90967ed02d4a9f3db4b depends: - __osx >=11.0 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libexpat >=2.6.2,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libiconv >=1.17,<2.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: GD license_family: BSD purls: [] - size: 200309 - timestamp: 1722928354606 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c - md5: ac0cda3730da6013715a0d9e8e677d83 + size: 156868 + timestamp: 1737548290283 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + sha256: 485a30af9e710feeda8d5b537b2db1e32e41f29ef24683bbe7deb6f7fd915825 + md5: 2070a706123b2d5e060b226a00e96488 depends: - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libexpat >=2.6.2,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -7150,20 +7569,20 @@ packages: license: GD license_family: BSD purls: [] - size: 344264 - timestamp: 1722928697150 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 165838 + timestamp: 1737548342665 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 53997 - timestamp: 1729027752995 + size: 53733 + timestamp: 1740240690977 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 @@ -7184,18 +7603,19 @@ packages: purls: [] size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1462645 - timestamp: 1729027735353 + size: 1461978 + timestamp: 1740240671964 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b md5: e4fb4d23ec2870ff3c40d10afe305aec @@ -7220,9 +7640,9 @@ packages: purls: [] size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda - sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 - md5: 13e8e54035ddd2b91875ba399f0f7c04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4,<4.0a0 @@ -7231,14 +7651,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 license: LGPL-2.1-or-later purls: [] - size: 3931898 - timestamp: 1729191404130 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda - sha256: d782be2d8d6784f0b8584ca3cfa93357cddc71b0975560a2bcabd174dac60fff - md5: 2e0511f82f1481210f148e1205fe2482 + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + sha256: 78fab559eefc52856331462304a4c55c054fa8f0b0feb31ff5496d06c08342ba + md5: 05e05255a2e9c5e9c1b6322d84b4999b depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 @@ -7247,14 +7667,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 license: LGPL-2.1-or-later purls: [] - size: 3692367 - timestamp: 1729191628049 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 - md5: 890783f64502fa6bfcdc723cfbf581b4 + size: 3716906 + timestamp: 1737037999440 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + sha256: d002aeaa51424e331f8504a54b6ba4388a6011a0ebcac29296f3d14282bf733b + md5: 849da57c370384ce48bef2e050488882 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -7263,14 +7683,14 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 license: LGPL-2.1-or-later purls: [] - size: 3635416 - timestamp: 1729191799117 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - sha256: 7dfbf492b736f8d379f8c3b32a823f0bf2167ff69963e4c940339b146a04c54a - md5: 3e379c1b908a7101ecbc503def24613f + size: 3643364 + timestamp: 1737037789629 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + sha256: 77c4e6af9cc4e966a5100f48378ea3fb4ab7ed913f24af9217cc3a43242d65d5 + md5: 40596e78a77327f271acea904efdc911 depends: - libffi >=3.4,<4.0a0 - libiconv >=1.17,<2.0a0 @@ -7281,24 +7701,24 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.82.2 *_0 + - glib 2.82.2 *_1 license: LGPL-2.1-or-later purls: [] - size: 3810166 - timestamp: 1729192227078 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 + size: 3783933 + timestamp: 1737038122172 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_1.conda - sha256: d8739b834608f35775209b032f0c2be752ef187863c7ec847afcebe2f681be4e - md5: 9e2d4d1214df6f21cba12f6eff4972f9 + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + sha256: 674ec5f1bf319eac98d0d6ecb9c38e0192f3cf41969a5621d62a7e695e1aa9f3 + md5: dd6b1ab49e28bcb6154cd131acec985b depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: @@ -7306,126 +7726,145 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 524249 - timestamp: 1729089441747 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.65.5-hf5c653b_0.conda - sha256: d279abd46262e817c7a00aeb4df9b5ed4de38130130b248e2c50875e982f30fa - md5: 3b0048cabc6815a4d8874a0240519d32 + size: 524548 + timestamp: 1740240660967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.conda + sha256: bd8686a8aa0f840e7a7e63b3be57200d36c136cf1c6280b44a98b89ffac06186 + md5: 65e3fc5e73aa153bb069c1baec51fc12 depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libgcc >=13 - - libprotobuf >=5.27.5,<5.27.6.0a0 - - libre2-11 >=2023.9.1 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - re2 constrains: - - grpc-cpp =1.65.5 + - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 7229891 - timestamp: 1727200905306 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.65.5-hb88832f_0.conda - sha256: b862af63c5b362743527fde9b7411b6a2d1270f858acbabc2beeee306465b405 - md5: 8ef969b891fe57caf3acfb5495ec0ab9 + size: 8228423 + timestamp: 1741431701085 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.conda + sha256: 966ba2eb5ccd871d8ac5fd8ad60edf63bc4d063fa81a1cf88b1edb748481ec9a + md5: a216708030647d270390de778510e6c9 depends: - - __osx >=10.13 - - c-ares >=1.33.1,<2.0a0 + - __osx >=10.14 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.27.5,<5.27.6.0a0 - - libre2-11 >=2023.9.1 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - re2 constrains: - - grpc-cpp =1.65.5 + - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 5152392 - timestamp: 1727200873427 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.65.5-h3d9cf25_0.conda - sha256: a92096af0fa67bb03fe2d40dfb11e7746603842a78fddce9f06e3ced9d93b61e - md5: b829a3509f5d89b21fa481ebc8edd953 + size: 5280478 + timestamp: 1741432715289 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + sha256: c10eeef0a1152452fbda7299ca1dfb41e9435aa3a7fee9d169cbceb27b109fb6 + md5: 4c0d9b0ade1b4e01ee5a37c00cdb538d depends: - __osx >=11.0 - - c-ares >=1.33.1,<2.0a0 + - c-ares >=1.34.4,<2.0a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libprotobuf >=5.27.5,<5.27.6.0a0 - - libre2-11 >=2023.9.1 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 + - libprotobuf >=5.29.3,<5.29.4.0a0 + - libre2-11 >=2024.7.2 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - re2 constrains: - - grpc-cpp =1.65.5 + - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 4614162 - timestamp: 1727200966365 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e + size: 5210004 + timestamp: 1741422151125 +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 + md5: b87a0ac5ab6495d8225db5dc72dd21cd depends: - - libgcc-ng >=12 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + - libxml2 >=2.13.4,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2390021 + timestamp: 1731375651179 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: LGPL-2.1-only purls: [] - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 - md5: 6c3628d047e151efba7cf08c5e54d1ca + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + sha256: c2a9c65a245c7bcb8c17c94dd716dad2d42b7c98e0c17cc5553a5c60242c4dda + md5: 6283140d7b2b55b6b095af939b71b13f + depends: + - __osx >=10.13 license: LGPL-2.1-only purls: [] - size: 666538 - timestamp: 1702682713201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d + size: 669052 + timestamp: 1740128415026 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 license: LGPL-2.1-only purls: [] - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b - md5: e1eb10b1cca179f2baa3601e4efc8712 + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda + sha256: ea5ed2b362b6dbc4ba7188eb4eaf576146e3dfc6f4395e9f0db76ad77465f786 + md5: 21fc5dba2cbcd8e5e26ff976a312122c depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: LGPL-2.1-only purls: [] - size: 636146 - timestamp: 1702682547199 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af - md5: 52d4d643ed26c07599736326c46bf12f + size: 638142 + timestamp: 1740128665984 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + sha256: 1bce54e6c76064032129ba138898a5b188d9415c533eb585f89d48b04e00e576 + md5: 4182fe11073548596723d9cd2c23b1ac depends: - __osx >=10.13 - libiconv >=1.17,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 88086 - timestamp: 1723626826235 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 - md5: 3b98ec32e91b3b59ad53dbb9c96dd334 + size: 87157 + timestamp: 1739039171974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc + md5: 7b8faf3b5fc52744bda99c4cd1d6438d depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 81171 - timestamp: 1723626968270 + size: 78921 + timestamp: 1739039271409 - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 @@ -7477,66 +7916,105 @@ packages: purls: [] size: 822966 timestamp: 1694475223854 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - build_number: 25 - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas - - blas * openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15608 - timestamp: 1729642910812 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - build_number: 25 - sha256: 2a9a6143d103e7e21511cbf439521645bdd506bfabfcac9d6398dd0562c6905c - md5: dda0e24b4605ebbd381e48606a107bed + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + build_number: 31 + sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 + md5: d0f3bc17e0acef003cb9d9195a205888 depends: - - libblas 3.9.0 25_osx64_openblas + - libblas 3.9.0 31_h7f60823_openblas constrains: - - liblapacke 3.9.0 25_osx64_openblas - - blas * openblas - - libcblas 3.9.0 25_osx64_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15852 - timestamp: 1729643174413 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - build_number: 25 - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d + size: 17033 + timestamp: 1740087965941 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 15823 - timestamp: 1729643275943 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - build_number: 25 - sha256: 98c13a28596389539abe3f608c6fbd2826df47671f77c58a331df878c6140c53 - md5: f716ef84564c574e8e74ae725f5d5f93 + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + build_number: 31 + sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad + md5: 40b47ee720a185289760960fc6185750 depends: - - libblas 3.9.0 25_win64_mkl + - libblas 3.9.0 31_h641d27c_mkl constrains: - - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl + - libcblas =3.9.0=31*_mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3736560 - timestamp: 1729643588182 + size: 3732648 + timestamp: 1740088548986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + sha256: a895b5b16468a6ed436f022d72ee52a657f9b58214b91fabfab6230e3592a6dd + md5: db9d7b0152613f097cdb61ccf9f70ef5 + depends: + - __osx >=10.13 + license: 0BSD + purls: [] + size: 103749 + timestamp: 1738525448522 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + sha256: 3f552b0bdefdd1459ffc827ea3bf70a6a6920c7879d22b6bfd0d73015b55227b + md5: c48f6ad0ef0a555b27b233dfcab46a90 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: 0BSD + purls: [] + size: 104465 + timestamp: 1738525557254 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -7547,85 +8025,85 @@ packages: purls: [] size: 33408 timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 - md5: cd2c572c02a73b88c4d378eb31110e85 + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a + md5: a30dc52b2a8b6300f17eaabd2f940d41 depends: - __osx >=10.13 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 6165715 - timestamp: 1730773348340 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 6170847 + timestamp: 1739826107594 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - libgfortran 5.* - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 290661 - timestamp: 1726234747153 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1 - md5: f32ac2c8dd390dbf169f550887ed09d9 + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 + md5: 8461ab86d2cdb76d6e971aab225be73f depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 268073 - timestamp: 1726234803010 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 - md5: fb36e93f0ea6a6f5d2b99984f34b049e + size: 266874 + timestamp: 1739953034029 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 263385 - timestamp: 1726234714421 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 - md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + sha256: cf8a594b697de103025dcae2c917ec9c100609caf7c917a94c64a683cb1db1ac + md5: 7d717163d9dab337c65f2bf21a676b8f depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -7633,58 +8111,58 @@ packages: - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 348933 - timestamp: 1726235196095 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.27.5-h5b01275_2.conda - sha256: 79ac9726cd0a1cb1ba335f7fc7ccac5f679a66d71d9553ca88a805b8787d55ce - md5: 66ed3107adbdfc25ba70454ba11e6d1e + size: 346101 + timestamp: 1739953426806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.conda + sha256: 9965b1ada1f997202ad8c5a960e69057280b7b926c718df9b07c62924d9c1d73 + md5: 452518a9744fbac05fb45531979bdf29 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 2940269 - timestamp: 1727424395109 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.27.5-h62b0dff_2.conda - sha256: ac77bce3b9a58e6fa72bed339af0d47faf1dec3bc717e4e05e2e729dc42bd2b3 - md5: e3b68d9a164d807f70df49e17bc54931 + size: 3352450 + timestamp: 1741126291267 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.conda + sha256: 7e863ceaade6c466c2f2adf8a1c21b0c8e2181c7ab1cf407e58325c1a122d613 + md5: c4295aae4cc8918f85c574800267cde9 depends: - - __osx >=10.13 + - __osx >=10.14 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 2332719 - timestamp: 1727424047974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.27.5-h53f8970_2.conda - sha256: 787d86c041c03d33b24e28df5f881f47c74c3fe9053b791f14616dc51f32a687 - md5: e9d021f82c48bb08b0b2c321b2f7778c + size: 2666126 + timestamp: 1741126025811 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.conda + sha256: 49d424913d018f3849c4153088889cb5ac4a37e5acedc35336b78c8a8450f764 + md5: 243704f59b7c09aab5b3070538026c92 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 2375066 - timestamp: 1727423411355 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f - md5: 2124de47357b7a516c0a3efd8f88c143 + size: 2630681 + timestamp: 1741125634671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda + sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668 + md5: 545e93a513c10603327c76c15485e946 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 constrains: @@ -7692,90 +8170,90 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 211096 - timestamp: 1728778964655 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-hd530cb8_1.conda - sha256: 2fac39fb704ded9584d1a9e7511163830016803f83852a724c2ccef1cc16e17b - md5: 1e14c67a5e8a9273a98b83fbc0905b99 + size: 210073 + timestamp: 1741121121238 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda + sha256: 2bdf91b94486a06bdcc2aedcae4f0b9280301b0bb39e3168e29767c0c7b8bd85 + md5: 93ff94e5535b7051133b980d2ab1c858 depends: - - __osx >=10.13 + - __osx >=10.14 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD purls: [] - size: 178580 - timestamp: 1728779037721 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f - md5: 5a7065309a66097738be6a06fd04b7ef + size: 179620 + timestamp: 1741121212954 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda + sha256: 038db1da2b9f353df6532af224c20d985228d3408d2af25aa34974f6dbee76e1 + md5: 1466284c71c62f7a9c4fa08ed8940f20 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 + - libabseil >=20250127.0,<20250128.0a0 + - libcxx >=18 constrains: - re2 2024.07.02.* license: BSD-3-Clause license_family: BSD purls: [] - size: 165956 - timestamp: 1728779107218 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda - sha256: fda3197ffb24512e719d55defa02f9f70286038e56cad8c1d580ed6460f417fa - md5: 83f045969988f5c7a65f3950b95a8b35 + size: 167268 + timestamp: 1741121355716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + sha256: 475013475a3209c24a82f9e80c545d56ccca2fa04df85952852f3d73caa38ff9 + md5: b9846db0abffb09847e2cb0fec4b4db6 depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - freetype >=2.12.1,<3.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 + - harfbuzz >=10.1.0,<11.0a0 - libgcc >=13 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 constrains: - __glibc >=2.17 license: LGPL-2.1-or-later purls: [] - size: 6390511 - timestamp: 1726227212382 -- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda - sha256: ed2d08ef3647d1c10fa51a0480f215ddae04f73a2bd9bbd135d3f37d313d84a6 - md5: 0022c69263e9bb8c530feff2dfc431f9 + size: 6342757 + timestamp: 1734902068235 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + sha256: 482cde0a3828935edc31c529e15c2686425f64b07a7e52551b6ed672360f2a15 + md5: 0aa68f5a6ebfd2254daae40170439f03 depends: - __osx >=10.13 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 constrains: - __osx >=10.13 license: LGPL-2.1-or-later purls: [] - size: 4919155 - timestamp: 1726227702081 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda - sha256: 88cd8603a6fe6c3299e9cd0a81f5e38cf431d20b7d3e2e6642c8a41113ede6db - md5: 27c333944e11caae7bc3a35178d32ac5 + size: 4841346 + timestamp: 1734902391160 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + sha256: c1ef2c5855166001967952d7525aa2f29707214495c74c2bbb60e691aee45ef0 + md5: 82c31ce77bac095b5700b1fdaad9a628 depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 constrains: - __osx >=11.0 license: LGPL-2.1-or-later purls: [] - size: 4688893 - timestamp: 1726228099207 + size: 4728552 + timestamp: 1734903448902 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -7814,137 +8292,138 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + sha256: a086289bf75c33adc1daed3f1422024504ffb5c3c8b3285c49f025c29708ed16 + md5: 962d6ac93c30b1dfc54c9cccafd1003e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 875349 - timestamp: 1730208050020 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - sha256: a0f7381c867898a45018b1e5cf1aca68659d292d58252e8f489a4270b010fed8 - md5: af445c495253a871c3d809e1199bb12b + size: 918664 + timestamp: 1742083674731 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + sha256: 82695c9b16a702de615c8303387384c6ec5cf8b98e16458e5b1935b950e4ec38 + md5: 1819e770584a7e83a81541d8253cbabe depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 915300 - timestamp: 1730208101739 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + size: 977701 + timestamp: 1742083869897 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + sha256: 907a95f73623c343fc14785cbfefcb7a6b4f2bcf9294fcb295c121611c3a590d + md5: 3b1e330d775170ac46dff9a94c253bd0 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 837683 - timestamp: 1730208293578 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe - md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 + size: 900188 + timestamp: 1742083865246 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + sha256: c092d42d00fd85cf609cc58574ba2b03c141af5762283f36f5dd445ef7c0f4fe + md5: b58b66d4ad1aaf1c2543cbbd6afb1a59 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Unlicense purls: [] - size: 892175 - timestamp: 1730208431651 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 + size: 1081292 + timestamp: 1742083956001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND purls: [] - size: 428156 - timestamp: 1728232228989 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - sha256: 4d58c695dfed6f308d0fd3ff552e0078bb98bc0be2ea0bf55820eb6e86fa5355 - md5: 4b78bcdcc8780cede8b3d090deba874d + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 + md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 depends: - __osx >=10.13 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - - libdeflate >=1.22,<1.23.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND purls: [] - size: 395980 - timestamp: 1728232302162 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + size: 400099 + timestamp: 1734398943635 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - - libdeflate >=1.22,<1.23.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND purls: [] - size: 366323 - timestamp: 1728232400072 -- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - sha256: 902cb9f7f54d17dcfd54ce050b1ce2bc944b9bbd1748913342c2ea1e1140f8bb - md5: eac317ed1cc6b9c0af0c27297e364665 + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768 + md5: defed79ff7a9164ad40320e3f116a138 depends: - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND purls: [] - size: 978865 - timestamp: 1728232594877 + size: 978878 + timestamp: 1734399004259 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -7955,55 +8434,60 @@ packages: purls: [] size: 33601 timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause license_family: BSD purls: [] - size: 438953 - timestamp: 1713199854503 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538 - md5: b2c0047ea73819d992484faacbbe1c24 + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 + md5: 5e0cefc99a231ac46ba21e27ae44689f + depends: + - __osx >=10.13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause license_family: BSD purls: [] - size: 355099 - timestamp: 1713200298965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + size: 357662 + timestamp: 1734777539822 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause license_family: BSD purls: [] - size: 287750 - timestamp: 1713200194013 -- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - sha256: d0ca51cb1de9192be9a3238e71fbcca5a535619c499c4f4c9b2ed41c14d36770 - md5: abd61d0ab127ec5cd68f62c2969e6f34 + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f + md5: 33f7313967072c6e6d8f865f5493c7ae depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 license: BSD-3-Clause license_family: BSD purls: [] - size: 274359 - timestamp: 1713200524021 -- conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_8.conda - sha256: 6d5e158813ab8d553fbb0fedd0abe7bf92970b0be3a9ddf12da0f6cbad78f506 - md5: 03cccbba200ee0523bde1f3dad60b1f3 + size: 273661 + timestamp: 1734777665516 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 + md5: 08bfa5da6e242025304b206d152479ef depends: - ucrt constrains: @@ -8011,8 +8495,8 @@ packages: - msys2-conda-epoch <0.0a0 license: MIT AND BSD-3-Clause-Clear purls: [] - size: 35433 - timestamp: 1724681489463 + size: 35794 + timestamp: 1737099561703 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa md5: 92ed62436b625154323d40d5f2f11dd7 @@ -8051,49 +8535,79 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 - md5: c81a9f1118541aaa418ccb22190c817e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda + sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb + md5: e7e5b0652227d646b44abdcbd989da7b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.6,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + license: MIT/X11 Derivative + license_family: MIT + purls: [] + size: 644992 + timestamp: 1741762262672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT purls: [] - size: 689626 - timestamp: 1731489608971 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - sha256: 66e1bf40699daf83b39e1281f06c64cf83499de3a9c05d59477fadded6d85b18 - md5: 8711bc6fb054192dc432741dcd233ac3 + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda + sha256: 3962cce8158ce6ebb9239fe58bbc1ce49b0ac4997827e932e70dd6e4ab335c40 + md5: f27851d50ccddf3c3234dd0efc78fdbd depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT purls: [] - size: 608931 - timestamp: 1731489767386 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 - md5: 967d4a9dadd710415ee008d862a07c99 + size: 609155 + timestamp: 1739953148585 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda + sha256: 1d2ebce1a16db1017e3892a67cb7ced4aa2858f549dba6852a60d02a4925c205 + md5: 277864577d514bea4b30f8a9335b8d26 depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT purls: [] - size: 583082 - timestamp: 1731489765442 + size: 583389 + timestamp: 1739953062282 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + sha256: 2919f4e9fffefbf3ff6ecd8ebe81584d573c069b2b82eaeed797b1f56ac8d97b + md5: c66d5bece33033a9c028bbdf1e627ec5 + depends: + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 1669569 + timestamp: 1739953461426 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -8145,33 +8659,33 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - sha256: 69fca4a9318d7367ec3e0e7d6e6023a46ae1113dbd67da6d0f93fffa0ef54497 - md5: 193715d512f648fe0865f6f13b1957e3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + sha256: b5b06821b0d4143f66ba652ffe6f535696dc3a4096175d9be8b19b1a7350c86d + md5: 65d08c50518999e69f421838c1d5b91f depends: - __osx >=10.13 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.7|19.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 305132 - timestamp: 1732102427054 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + size: 304885 + timestamp: 1736986327031 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.7|19.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 281554 - timestamp: 1732102484807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - sha256: 364a0d55abc4c60bc575c81a4acc9e98ea27565147d4d4dc672bad4b2d069710 - md5: 15e4dadd59e93baad7275249f10b9472 + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8183,11 +8697,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 25591 - timestamp: 1729351519326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + size: 25354 + timestamp: 1733219879408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8199,11 +8713,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24878 - timestamp: 1729351558563 -- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311h8b4e8a7_0.conda - sha256: dd3554cee0aedc19a0cd56b52555c26fb0392e97749ceb202ddac7de55e3acf2 - md5: 87074906abc091b40ac46e7881b7e45d + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda + sha256: e9965b5d4c29b17b1512035b24a7c126ed7bdb6b39103b52cae099d5bb4194a9 + md5: 1d6596ca7c7b66215c5c0d58b3cb0dd3 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -8214,11 +8728,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24409 - timestamp: 1729351443593 -- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - sha256: b2fb54718159055fdf89da7d9f0c6743ef84b31960617a56810920d17616d944 - md5: c6238833d7dc908ec295bc490b80d845 + size: 24688 + timestamp: 1733219887972 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + sha256: d521e272f7789ca62e7617058a4ea3bd79efa73de1a39732df209ca5299e64e2 + md5: 32d6bc2407685d7e2d8db424f42018c6 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -8229,11 +8743,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 23889 - timestamp: 1729351468966 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 - md5: be48a4cc178a91af3b1ccd58c14efde2 + size: 23888 + timestamp: 1733219886634 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -8245,11 +8759,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 25180 - timestamp: 1729351536390 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + size: 24976 + timestamp: 1733219849253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -8261,11 +8775,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24495 - timestamp: 1729351534830 -- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_0.conda - sha256: 8a2022af5237e0fdf7e646856f1122735b71e4cdeaf42684b533ec4bad5a885f - md5: 84e78e335b0f9292060f1ac6d8ce0e3e + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_1.conda + sha256: 6f756e13ccf1a521d3960bd3cadddf564e013e210eaeced411c5259f070da08e + md5: c1f2ddad665323278952a453912dc3bd depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -8278,11 +8792,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 28244 - timestamp: 1729351760960 -- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - sha256: eb0f3768890291f2d5fb666ab31b32b37a821e4a30968c6b3cd332472957abe7 - md5: e2ff001440760f2cbac24765d8a3d84a + size: 28238 + timestamp: 1733220208800 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + sha256: bbb9595fe72231a8fbc8909cfa479af93741ecd2d28dfe37f8f205fef5df2217 + md5: 944fdd848abfbd6929e57c790b8174dd depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -8295,42 +8809,43 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 27358 - timestamp: 1729351504449 -- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab - md5: 779345c95648be40d22aaa89de7d4254 + size: 27582 + timestamp: 1733220007802 +- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b depends: - - python >=3.6 + - python >=3.9 - traitlets license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/matplotlib-inline?source=hash-mapping - size: 14599 - timestamp: 1713250613726 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c - md5: 5cbee699846772cc939bef23a0d524ed + size: 14467 + timestamp: 1733417051523 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 + md5: 0982b0f06168fe3421d09f70596ca1f0 depends: - - python >=3.7 + - python >=3.9 + - typing_extensions license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/mistune?source=hash-mapping - size: 66022 - timestamp: 1698947249750 -- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - sha256: 098ba4a3cb82f627bc79dc0ab1111b44859c9ef4aaa8d75ce043bce107770cb3 - md5: f011e7cc21918dc9d1efe0209e27fa16 + - pkg:pypi/mistune?source=compressed-mapping + size: 68903 + timestamp: 1739952304731 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd + md5: 302dff2807f2927b3e9e0d19d60121de depends: - intel-openmp 2024.* - tbb 2021.* license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary purls: [] - size: 103019089 - timestamp: 1727378392081 + size: 103106385 + timestamp: 1730232843711 - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl name: ml-dtypes version: 0.5.1 @@ -8347,9 +8862,9 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.0-py312hf9745cd_0.conda - sha256: 559c14640ce8e3f2270da6130ba50ae624f3db56176fad29a5436b2dec3fc3b2 - md5: 8ca779f3f30b00181aeee820fe8b22d5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda + sha256: 87928a36d350c470455a322c4c2b82266b88322d0fd5187ae8cc6fb5e3aad61f + md5: c45ac8395a27736c27b2e50b53ffe62c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8360,28 +8875,28 @@ packages: license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 290054 - timestamp: 1726376440408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.0-py312h98e817e_0.conda - sha256: c2beb173a4acf71bde4739563f1625107300a7043b46459f614ca030cda4b113 - md5: c51d9f4d91362d9c6777a9303119c55b + size: 290991 + timestamp: 1736538940686 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda + sha256: 7a8fa9ae4dee10c522211734be6e53397b14deddd861826b5163f2358e9cb903 + md5: f14f61abbbb6a7882dfb5835d21a0f32 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 224519 - timestamp: 1726376562525 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.0-py312hcd31e36_0.conda - sha256: b581ad4531beb3d782c2990ec1f5f5e36244b097337ac23598653fad3ff16e94 - md5: 7bc100120bdda5fcb7c1f64589e07375 + size: 227886 + timestamp: 1736539035640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda + sha256: 17f70a0f345722e67f7437895a78cce84b758419f1c373186cec671607270747 + md5: d7a33fc18bf71480224e069be3072bbf depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -8389,11 +8904,11 @@ packages: license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 202179 - timestamp: 1726376547204 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - sha256: 589d72d36d61a23b39d6fff2c488f93e29e20de4fc6f5d315b5f2c16e81028bf - md5: 15b51397e0fe8ea7d7da60d83eb76ebc + size: 200130 + timestamp: 1736539205286 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 + md5: 6bb0d77277061742744176ab555b723c depends: - jupyter_client >=6.1.12 - jupyter_core >=4.12,!=5.0.* @@ -8404,92 +8919,92 @@ packages: license_family: BSD purls: - pkg:pypi/nbclient?source=hash-mapping - size: 27851 - timestamp: 1710317767117 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 - md5: e2d2abb421c13456a9a9f80272fdf543 + size: 28045 + timestamp: 1734628936013 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + sha256: dcccb07c5a1acb7dc8be94330e62d54754c0e9c9cb2bb6865c8e3cfe44cf5a58 + md5: d24beda1d30748afcc87c429454ece1b depends: - beautifulsoup4 - - bleach + - bleach-with-css !=5.0.0 - defusedxml - - entrypoints >=0.2.2 + - importlib-metadata >=3.6 - jinja2 >=3.0 - jupyter_core >=4.7 - jupyterlab_pygments - markupsafe >=2.0 - mistune >=2.0.3,<4 - nbclient >=0.5.0 - - nbformat >=5.1 + - nbformat >=5.7 - packaging - pandocfilters >=1.4.1 - pygments >=2.4.1 - - python >=3.8 - - tinycss2 - - traitlets >=5.0 + - python >=3.9 + - traitlets >=5.1 + - python constrains: - - nbconvert =7.16.4=*_1 - pandoc >=2.9.2,<4.0.0 + - nbconvert ==7.16.6 *_0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/nbconvert?source=hash-mapping - size: 189599 - timestamp: 1718135529468 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c - md5: 0b57b5368ab7fc7cdc9e3511fa867214 + size: 200601 + timestamp: 1738067871724 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea depends: - jsonschema >=2.6 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/nbformat?source=hash-mapping - size: 101232 - timestamp: 1712239122969 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + size: 100945 + timestamp: 1733402844974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 license: X11 AND BSD-3-Clause purls: [] - size: 889086 - timestamp: 1724658547447 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af - md5: e102bbf8a6ceeaf429deab8032fc8977 + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + sha256: ea4a5d27ded18443749aefa49dc79f6356da8506d508b5296f60b8d51e0c4bd9 + md5: ced34dd9929f491ca6dab6a2927aff25 depends: - __osx >=10.13 license: X11 AND BSD-3-Clause purls: [] - size: 822066 - timestamp: 1724658603042 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 822259 + timestamp: 1738196181298 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae depends: - __osx >=11.0 license: X11 AND BSD-3-Clause purls: [] - size: 802321 - timestamp: 1724658775723 -- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a - md5: 6598c056f64dc8800d40add25e4e2c34 + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 + md5: 598fd7d4d0de2455fb74f56063969a97 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/nest-asyncio?source=hash-mapping - size: 11638 - timestamp: 1705850780510 + size: 11543 + timestamp: 1733325673691 - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl name: networkx version: 3.4.2 @@ -8541,33 +9056,33 @@ packages: purls: [] size: 1265008 timestamp: 1731521053408 -- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2 - md5: dfe0528d0f1c16c1f7c528ea5536ab30 +- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 + md5: 7ba3f09fceae6a120d664217e58fe686 depends: - - python 2.7|>=3.7 + - python >=3.9 - setuptools license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/nodeenv?source=hash-mapping - size: 34489 - timestamp: 1717585382642 -- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 - md5: 3d85618e2c97ab896b5b5e298d32b5b3 + size: 34574 + timestamp: 1734112236147 +- conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 depends: - jupyter_server >=1.8,<3 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/notebook-shim?source=hash-mapping - size: 16880 - timestamp: 1707957948029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py311h71ddf71_0.conda - sha256: d2fdae6b0e80c23248f0f6bf7b5e3b6e0f56f69f420e9f5da5a6aae2c95b1493 - md5: 1b3c543b0cc96310bcf0b825d5a68cb1 + size: 16817 + timestamp: 1733408419340 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py311h5d046bc_0.conda + sha256: 4ff5f5ab2e0205d712fdc8b2950a2a4b2a063c47d0c9b08f7ea71ae246e47ac1 + md5: 16ad2b996ea8064e0a7cb8b392d924fd depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -8582,12 +9097,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8978113 - timestamp: 1730588531967 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc - md5: dfdbc12e6d81889ba4c494a23f23eba8 + - pkg:pypi/numpy?source=compressed-mapping + size: 9005152 + timestamp: 1742255389691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + sha256: 47b3b2ae21efb227db7410f2701291cf47d816fd96461bdede415d7d75d8a436 + md5: 3f2871f111d8c0abd9c3150a8627507e depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -8602,12 +9117,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8388631 - timestamp: 1730588649810 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py311h14ed71f_0.conda - sha256: 2ddc0acaf8602eda5e555435a37641439aa7876425fe7b40214f15dab182e5e3 - md5: 220e4e917b6133e0cbb879c48c058adc + - pkg:pypi/numpy?source=compressed-mapping + size: 8424727 + timestamp: 1742255434709 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py311h27c81cd_0.conda + sha256: 9a6a463e5dc101a5bd80e1684a3d51b2f12cc6fd3dd353fb8b976826b72c5171 + md5: 8cc792914f85f8a0f52eb010e1bc2841 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -8622,11 +9137,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8262782 - timestamp: 1730588525361 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - sha256: 2f120e958da2d6ab7e4785a42515b4f65f70422b8b722e1a75654962fcfb26e9 - md5: 011118baf131914d1cb48e07317f0946 + size: 8221057 + timestamp: 1742255647365 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + sha256: 21fe25afa23299c02b88114f1f774d124d4b52517f6b275359c281ac06f0996e + md5: 5ac6821ebd39e56eb3e32149340ab51c depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -8641,11 +9156,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7538388 - timestamp: 1730588494493 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py311h649a571_0.conda - sha256: 5a95da4a8de64fb44b0045c92f579d3529b2cccbd5a38ec7901e03ee10f707d5 - md5: 3205b87adf34406ae1a83e8bf46cd987 + size: 7565004 + timestamp: 1742255412208 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py311h762c074_0.conda + sha256: 87c8b96560398a4f39dab87dee3c4aab3e7296744302dab2915c223094c0159d + md5: 602a97eb615fcf5c7d94da0282a35bb5 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -8661,11 +9176,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7041966 - timestamp: 1730588523973 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - sha256: cd287b6c270ee8af77d200c46d56fdfe1e2a9deeff68044439718b8d073214dd - md5: a2af54c86582e08718805c69af737897 + size: 7112931 + timestamp: 1742255398013 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + sha256: 68eafd2b7beca8467fe84a8a03767680be686d601a0771d3414c7019f3302ee0 + md5: 001a57e8f4cc0c12841d341b94ef8787 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -8680,12 +9195,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6398123 - timestamp: 1730588490904 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py311h35ffc71_0.conda - sha256: 09b0b580e5c4e2eb5dd1b5c44487a274a444d7cc44caced61324a65a8cfa2741 - md5: aa627d29d5d1ed4192e70cd5a6cb1f4f + - pkg:pypi/numpy?source=compressed-mapping + size: 6559671 + timestamp: 1742255398662 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py311h5e411d1_0.conda + sha256: 02d9b03a27c932c8409f2670b0fc0003d1c2d153c61950f72f3a45e9ab24bf86 + md5: 3c1ffee6e6824f3281335dd3b48fab9d depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -8700,12 +9215,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7659216 - timestamp: 1730588918527 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - sha256: f7e6648e2e55de450c8022008eb86158c55786f360aacc91fe3a5a53ba52d5d8 - md5: 4d03cad3ea6c6cc575f1fd811691432f + - pkg:pypi/numpy?source=compressed-mapping + size: 7812453 + timestamp: 1742255882246 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + sha256: 477bd925070dd7122c3d2d8be57e06338f1e946c403a1044908aaf68a5e27cdf + md5: e668b8543944b4d80aaa9c904f3821ee depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -8720,12 +9235,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6965471 - timestamp: 1730589010831 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_0.conda - sha256: b042997131c5df079c904aee84d124ee7ede799f9bdbf720eda6d7d0a43a399a - md5: f089393c03e9f3a28ac4f77eb775e17e + - pkg:pypi/numpy?source=compressed-mapping + size: 7058478 + timestamp: 1742255793694 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + sha256: bc453d60a0eff86f500a0c114fe3996543731b019e5998e664347d2ab52ee880 + md5: 7ec5afe3dc4c585abd49bb40edc96428 depends: - numpy - python >=3.9 @@ -8733,11 +9248,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping - size: 37459 - timestamp: 1722459217648 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda - sha256: 489a6d11f4eccbec21dac98bd7c3e8e59a4747fe95a437a32c249439fc447caa - md5: 0a5522bdd3983c52102e75d1307ad8c4 + size: 37633 + timestamp: 1734512747767 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 + md5: 5af206d64d18d6c8dfb3122b4d9e643b depends: - python >=3.9 - sphinx >=6 @@ -8747,8 +9262,8 @@ packages: license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping - size: 57951 - timestamp: 1723472341838 + size: 58041 + timestamp: 1733650959971 - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 @@ -8863,9 +9378,9 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 627490 timestamp: 1725461370219 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -8873,33 +9388,33 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 2947466 - timestamp: 1731377666602 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - sha256: ba7e068ed469d6625e32ae60e6ad893e655b6695280dadf7e065ed0b6f3b885c - md5: ec99d2ce0b3033a75cbad01bbc7c5b71 + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + sha256: 505a46671dab5d66df8e684f99a9ae735a607816b12810b572d63caa512224df + md5: a7d63f8e7ab23f71327ea6d27e2d5eae depends: - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2590683 - timestamp: 1731378034404 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + size: 2591479 + timestamp: 1739302628009 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2935176 - timestamp: 1731377561525 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 - md5: d0d805d9b5524a14efb51b3bff965e83 + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + sha256: 56dcc2b4430bfc1724e32661c34b71ae33a23a14149866fc5645361cfd3b3a6a + md5: 0730f8094f7088592594f9bf3ae62b3f depends: - ca-certificates - ucrt >=10.0.20348.0 @@ -8908,37 +9423,27 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 8491156 - timestamp: 1731379715927 + size: 8515197 + timestamp: 1739304103653 - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl name: opt-einsum version: 3.4.0 sha256: 69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.4.0-hd8ed1ab_0.conda - sha256: 583cb8748a9821e301a404806da0de62e8ba01607feecf12c0ef06d8bc77077e - md5: 73d0b1d98a9030bdefe712648af583a0 - depends: - - opt_einsum >=3.4.0,<3.4.1.0a0 - license: MIT - license_family: MIT - purls: [] - size: 6470 - timestamp: 1727392480705 -- conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_0.conda - sha256: 69e979dfea8b8d82e51684f77d189e1d00cdcbc5c85868415b879719882e2df4 - md5: ff80afedd76f436acddbd1e14f5c2909 +- conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + sha256: af71aabb2bfa4b2c89b7b06403e5cec23b418452cae9f9772bd7ac3f9ea1ff44 + md5: 52919815cd35c4e1a0298af658ccda04 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/opt-einsum?source=hash-mapping - size: 62487 - timestamp: 1727392477628 -- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py311hd18a35c_1.conda - sha256: 155aa42465674d6fc43df5476552907b55b72902d84dee4e8059b39bfb7378ab - md5: 121cc50f6d2d7e16eadb324133253f61 + size: 62479 + timestamp: 1733688053334 +- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py311hd18a35c_1.conda + sha256: 108576661023d94e2afdf1f35a7db3ffff0914b61a70d53e6a62f1984e1c88ad + md5: 136e1edaedabc60d75cab9ad3aeec462 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8950,11 +9455,11 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 366107 - timestamp: 1731510674319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.13.1-py312h68727a3_1.conda - sha256: d20a58297ed89338e0c8f2a56e105a5a7467e5293d9f66bd101ebef9afef690e - md5: 44a7e5b0d3be21c0adf20d1c0866d649 + size: 382304 + timestamp: 1741963965104 +- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda + sha256: 0216b69ce7df9f9c08a13ec72a2c4dce4c4209bab930bf66d6ec3c938f8db897 + md5: 4ed63830e154792e3226f1b20154bf4b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8966,11 +9471,11 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 360546 - timestamp: 1731510673737 -- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py311h4e34fa0_1.conda - sha256: db8464556aa5a83a041bc9239158243ab4adb02da795ae59824adbee2eafafec - md5: 2df65762f8c6bab1176836a20035be20 + size: 375340 + timestamp: 1741964030223 +- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py311h4e34fa0_1.conda + sha256: da55a60763217b9cfab9956fccbc84d3c0a965c6112eba590615adff1f4cbd22 + md5: 70ca6ee4aa911d396331e3f8ed71b36e depends: - __osx >=10.13 - libcxx >=18 @@ -8981,11 +9486,11 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 340956 - timestamp: 1731510728872 -- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.13.1-py312hc47a885_1.conda - sha256: a41e54a30f54fc7b30d847ba63dab7be9f49301dfeb607ad925695de6e7a9c89 - md5: c0af3b69e46d989e49254285f68bdc62 + size: 359336 + timestamp: 1741964083462 +- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda + sha256: b1926ae8477dfb66051e029c1a1ed665b596c37b0cffc60a5ccec8ad154b370d + md5: 935c337cb6dff0f57b7984186fc2d265 depends: - __osx >=10.13 - libcxx >=18 @@ -8996,14 +9501,14 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 344701 - timestamp: 1731510839850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py311h2c37856_1.conda - sha256: 05d88094bf7429864e97a61eb46b6b415b341ff4c410904ce8c82fe52bfbb416 - md5: e9647a3961386058054aefe12e86cd7d + size: 360644 + timestamp: 1741964258663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py311h210dab8_1.conda + sha256: da4f0ac733ebf0777ed9f3a889bdf0401618f12ea3472db3ec10d639b22b448b + md5: dd8df33acee102c1bf2e8b22e02b60b8 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -9012,14 +9517,14 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 298368 - timestamp: 1726072603819 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.12.1-py312h6142ec9_1.conda - sha256: 7bf3f44530c504ed6bc59a45e39687b9d40242275d64c3bff038fc4af469639d - md5: 03b47c5d76e8959f1df17d9c902ece1e + size: 342512 + timestamp: 1741964152064 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda + sha256: 3340523b40338fc7090ecebd8b43e8df1faacb52c3ff172b7384156bce79cf93 + md5: 796665195ab1cebbfee8b1dbc950d1b3 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -9028,11 +9533,11 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 296182 - timestamp: 1726072666761 -- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py311h3257749_1.conda - sha256: 92bccf056708263fedfb373ca6412a3973c825d3789f1571f3af010ebf3e98f2 - md5: cf3c91885da710c3e1e0875a8bfd2ef0 + size: 343510 + timestamp: 1741964219203 +- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py311h3257749_1.conda + sha256: 043d51cd0f87815e814a8c493b8dcd20aaadaa47276ac326bbf4c071006249fc + md5: 33cc0287a7dad4bdf37b3470e43e9956 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -9044,11 +9549,11 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 291877 - timestamp: 1731511131687 -- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.13.1-py312hd5eb7cc_1.conda - sha256: 134736b0332fce064da0063e2e22d11e809e786ad0380a8793f02fa534ae803a - md5: 2aa246f16a1f3c94969d2dd0aff74d3c + size: 303166 + timestamp: 1741964404287 +- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda + sha256: 5f41c3d43a00f9bbab03d8036ce726237e4c198c9d5c2e5c7bf7721f46574780 + md5: 4209f22201a94da479b9c4d33a5580af depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -9060,31 +9565,31 @@ packages: license_family: Apache purls: - pkg:pypi/optree?source=hash-mapping - size: 290786 - timestamp: 1731511131791 -- conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - sha256: 5e238e5e646414d517a13f6786c7227206ace58271e3ef63f6adca4d6a4c2839 - md5: 24fba5a9d161ad8103d4e84c0e1a3ed4 + size: 302061 + timestamp: 1741964395630 +- conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + md5: e51f1e4089cad105b6cac64bd8166587 depends: - - python >=3.6 + - python >=3.9 - typing_utils license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/overrides?source=hash-mapping - size: 30232 - timestamp: 1706394723472 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + size: 30139 + timestamp: 1734587755455 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/packaging?source=hash-mapping - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda sha256: dce121d3838996b77b810ca9097cc17068552075c761408a9b2eb788cf8fd1b0 md5: 643f8cb35133eb1be4919fb953f0a25f @@ -9254,87 +9759,96 @@ packages: - pkg:pypi/pandocfilters?source=hash-mapping size: 11627 timestamp: 1631603397334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - sha256: d362237be82d5a0d532fe66ec8d68018c3b2a9705bad6d73c2b63dae2970da02 - md5: 7df02e445367703cd87a574046e3a6f0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + sha256: 6bc073dc2759cb00bc9e94c7142acab58432245c6e04d1cef179e8afd3b58d6f + md5: 6d853ca33bc46bce99ce16ccd83d0466 depends: - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - harfbuzz >=10.4.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 447117 - timestamp: 1719839527713 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - sha256: ed400571a75027563b91bc48054a6599f22c8c2a7ee94a9c3d4e9932c02581ac - md5: 9bfd18e7d9292154b2b79ddb7145f9cf + size: 454553 + timestamp: 1742223788507 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + sha256: db1de2f9f004b8b7d743dbd073728a9b119955eded54d81b23f4de30fddaee1a + md5: 97db8d75606bc6923a0f5cc7fb9bbff3 depends: - __osx >=10.13 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - harfbuzz >=10.4.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 423324 - timestamp: 1723832327771 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - sha256: cfa2d11204bb75f6fbcfe1ff0cc1f6e4fc01185bf07b8eee8f698bfbd3702a79 - md5: af2a2118261adf2d7a350d6767b450f2 + size: 430760 + timestamp: 1742223943355 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + sha256: dac976052589a8a0778db1c1b6f279da200572ed9f265f3a6b7a1f217af4a5f0 + md5: aef5caa7ce0af969bfab789900982918 depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - harfbuzz >=10.4.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 417224 - timestamp: 1723832458095 -- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - sha256: 90327dd606f78ae9c881e285f85bc2b0f57d11c807be58ee3f690742354918b2 - md5: 409c0b778deee649c025b7106549a24f + size: 425760 + timestamp: 1742224136308 +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + sha256: 33a89f2adeaedb8e55844d592cdaf0e3a3a79056f4c4a89d8ca24374b355a909 + md5: 7b64b640506109dd3cd6ccbd07748593 depends: - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - harfbuzz >=10.4.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: LGPL-2.1-or-later purls: [] - size: 450610 - timestamp: 1723832834434 -- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae - md5: 81534b420deb77da8833f2289b8d47ac + size: 455359 + timestamp: 1742224127188 +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/parso?source=hash-mapping - size: 75191 - timestamp: 1712320447201 + size: 75295 + timestamp: 1733271352153 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d md5: df359c09c41cd186fffb93a2d87aa6f5 @@ -9386,15 +9900,6 @@ packages: purls: [] size: 820831 timestamp: 1723489427046 -- pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - name: pdbp - version: 1.6.1 - sha256: f10bad2ee044c0e5c168cb0825abfdbdc01c50013e9755df5261b060bdd35c22 - requires_dist: - - pygments>=2.18.0 - - tabcompleter>=1.4.0 - - colorama>=0.4.6 ; platform_system == 'Windows' - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl name: pdbp version: 1.6.1 @@ -9404,62 +9909,65 @@ packages: - tabcompleter>=1.4.0 - colorama>=0.4.6 ; sys_platform == 'win32' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e - md5: 629f3203c99b32e0988910c93e77f3b6 +- conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea depends: - ptyprocess >=0.5 - - python >=3.7 + - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=hash-mapping - size: 53600 - timestamp: 1706113273252 -- conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 - md5: 415f0ebb6198cc2801c73438a9fb5761 + - pkg:pypi/pexpect?source=compressed-mapping + size: 53561 + timestamp: 1733302019362 +- conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 depends: - - python >=3 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/pickleshare?source=hash-mapping - size: 9332 - timestamp: 1602536313357 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e - md5: 71004cbf7924e19c02746ccde9fd7123 + size: 11748 + timestamp: 1733327448200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: MIT license_family: MIT purls: [] - size: 386826 - timestamp: 1706549500138 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - sha256: 3ab44e12e566c67a6e9fd831f557ab195456aa996b8dd9af19787ca80caa5cd1 - md5: cb134c1e03fd32f4e6bea3f6de2614fd + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + sha256: 7e5a9823e7e759355b954037f97d4aa53c26db1d73408571e749f8375b363743 + md5: 9d3ed4c1a6e21051bf4ce53851acdc96 depends: - - libcxx >=16 + - __osx >=10.13 + - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 323904 - timestamp: 1709239931160 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 - md5: 0308c68e711cd295aaa026a4f8c4b1e5 + size: 328548 + timestamp: 1733699069146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b depends: - - libcxx >=16 - license: MIT + - __osx >=11.0 + - libcxx >=18 + license: MIT license_family: MIT purls: [] - size: 198755 - timestamp: 1709239846651 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 - md5: b98135614135d5f458b75ab9ebb9558c + size: 201076 + timestamp: 1733699127167 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + sha256: 6648bd6e050f37c062ced1bbd4201dee617c3dacda1fc3a0de70335cf736f11b + md5: c720ac9a3bd825bf8b4dc7523ea49be4 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -9467,35 +9975,35 @@ packages: license: MIT license_family: MIT purls: [] - size: 461854 - timestamp: 1709239971654 -- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a - md5: 405678b942f2481cecdb3e010f4925d9 + size: 455582 + timestamp: 1733699458861 +- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - python >=3.6 + - python >=3.9 license: MIT AND PSF-2.0 purls: - pkg:pypi/pkgutil-resolve-name?source=hash-mapping - size: 10778 - timestamp: 1694617398467 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + size: 10693 + timestamp: 1733344619659 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/platformdirs?source=hash-mapping - size: 20625 - timestamp: 1726613611845 -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_0.conda - sha256: 39cef6d3056211840709054b90badfa4efd6f61ea37935a89ab0b549a54cc83f - md5: 81bb643d6c3ab4cbeaf724e9d68d0a6a + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + sha256: d1bbf2d80105bfc8a7ed9817888f4a1686ed393d6435572921add09cc9347c1c + md5: 71ac632876630091c81c50a05ec5e030 depends: - packaging - - python >=3.6 + - python >=3.9 - tenacity >=6.2.0 constrains: - ipywidgets >=7.6 @@ -9503,22 +10011,22 @@ packages: license_family: MIT purls: - pkg:pypi/plotly?source=hash-mapping - size: 6985343 - timestamp: 1726179760565 -- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 - md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + size: 8022748 + timestamp: 1733733328161 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/pluggy?source=hash-mapping - size: 23815 - timestamp: 1713667175451 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - sha256: 2490b18ec802d8f085f2de8298a3d275451f7db17769353080dfb121fe386675 - md5: 5971cc64048943605f352f7f8612de6c + size: 23595 + timestamp: 1733222855563 +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + sha256: b260b4b47956b654232f698be1b757935268830a808040aff2006d08953e9e32 + md5: 5353f5eb201a9415b12385e35ed1148d depends: - cfgv >=2.0.0 - identify >=1.0.0 @@ -9530,36 +10038,36 @@ packages: license_family: MIT purls: - pkg:pypi/pre-commit?source=hash-mapping - size: 194633 - timestamp: 1728420305558 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + size: 195101 + timestamp: 1737408051494 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/prometheus-client?source=hash-mapping - size: 49024 - timestamp: 1726902073034 -- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 - md5: 4c05134c48b6a74f33bbb9938e4a115e + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + sha256: 0749c49a349bf55b8539ce5addce559b77592165da622944a51c630e94d97889 + md5: 7d823138f550b14ecae927a5ff3286de depends: - - python >=3.7 + - python >=3.9 - wcwidth constrains: - - prompt_toolkit 3.0.48 + - prompt_toolkit 3.0.50 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/prompt-toolkit?source=hash-mapping - size: 270271 - timestamp: 1727341744544 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py311h9ecbd09_0.conda - sha256: 2ac3f1ed6e6a2a0c67a3922f4b5faf382855ad02cc0c85c5d56291c7a94296d0 - md5: 0ffc1f53106a38f059b151c465891ed3 + size: 271905 + timestamp: 1737453457168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda + sha256: 50d0944b59a9c6dfa6b99cc2632bf8bc9bef9c7c93710390ded6eac953f0182d + md5: 1a390a54b2752169f5ba4ada5a8108e4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9569,11 +10077,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 505408 - timestamp: 1729847169876 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - sha256: 0f309b435174e037d5cfe5ed26c1c5ad8152c68cfe61af17709ec31ec3d9f096 - md5: 0524eb91d3d78d76d671c6e3cd7cee82 + size: 484778 + timestamp: 1740663319335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9583,11 +10091,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 488462 - timestamp: 1729847159916 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py311h1314207_0.conda - sha256: 340d19b16a2f5b663b4f000188467831b107dcaa5b15522e172d6a27820d3b01 - md5: 446e328d89429c077ccd74d7e9d8853e + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda + sha256: e290563f61f810f745b32d4c1ebe4ec87827323134f6bee2e8cc894391cbc548 + md5: 7b5cdf63ced6576ead40a82ea0616322 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -9596,11 +10104,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 512211 - timestamp: 1729847190327 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.1.0-py312h3d0f464_0.conda - sha256: a2c2d8a8665cce8a1c2b186b2580e1ef3e3414aa67b2d48ac46f0582434910c3 - md5: 1df95544dc6aeb33af591146f44d9293 + size: 490169 + timestamp: 1740663371249 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + sha256: bdfa40a1ef3a80c3bec425a5ed507ebda2bdebce2a19bccb000db9d5c931750c + md5: fcad6b89f4f7faa999fa4d887eab14ba depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -9609,11 +10117,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 493463 - timestamp: 1729847222797 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py311hae2e1ce_0.conda - sha256: 6237f04371995fa8e8f16481dcd4e01d2733a82750180a362a9f4953ffbb3cde - md5: e226eba0c52ecd6786e73c8ad7f41e79 + size: 473946 + timestamp: 1740663466925 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda + sha256: 3ea107f769b3ac99411f6bd6d86f946566ba3983894cbeb0e43439934a90c2f5 + md5: 12f8d65fb5a6bd03aedd5ac74391f1ea depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -9623,11 +10131,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 514316 - timestamp: 1729847396776 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - sha256: 143a40f9c72d803744ebd6a60801c5cd17af152b293f8d59e90111ce62b53569 - md5: 61566f5c6e1d29d1d12882eb93e28532 + size: 492006 + timestamp: 1740663355030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9637,11 +10145,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 493431 - timestamp: 1729847279283 -- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py311he736701_0.conda - sha256: 303c988247c4b1638f1cc90cd40465f5c74ca0ecfd83114033af637654dc2b6b - md5: 307267e6a028bca3382d98e06a372ebf + size: 476376 + timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda + sha256: e3844e26821651f744ea57a1538a8f970872f15a1c6eb38fc208f0efd1c3706c + md5: fc2a628caa77146532ee4747894bccd5 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -9652,11 +10160,11 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 521434 - timestamp: 1729847606018 -- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.1.0-py312h4389bb4_0.conda - sha256: 49640ecea25367e46c89d7ee8556a1d96a0c2b82240b303415b39a29aaec7163 - md5: ef327db3af50ec234214c3e7566510eb + size: 499375 + timestamp: 1740663711326 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + sha256: 088451ee2c9a349e1168f70afe275e58f86350faffb09c032cff76f97d4fb7bb + md5: f5b86d6e2e645ee276febe79a310b640 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -9667,8 +10175,8 @@ packages: license_family: BSD purls: - pkg:pypi/psutil?source=hash-mapping - size: 503151 - timestamp: 1729847947592 + size: 484682 + timestamp: 1740663813103 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -9692,49 +10200,49 @@ packages: purls: [] size: 9389 timestamp: 1726802555076 -- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - md5: 359eeb6536da0e687af562ed265ec263 +- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: - - python + - python >=3.9 license: ISC purls: - pkg:pypi/ptyprocess?source=hash-mapping - size: 16546 - timestamp: 1609419417991 -- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 - md5: 0f051f09d992e0d08941706ad519ee0e + size: 19457 + timestamp: 1733302371990 +- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/pure-eval?source=hash-mapping - size: 16551 - timestamp: 1721585805256 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + size: 16668 + timestamp: 1733569518868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/pycparser?source=hash-mapping - size: 105098 - timestamp: 1711811634025 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/pygments?source=hash-mapping - size: 879295 - timestamp: 1714846885370 + size: 888600 + timestamp: 1736243563082 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda sha256: 0ddfbff3596d382b7498b42185d1852625cd949f77dab25f392329b2b61fdd1e md5: 7ec06aad0aaf2bbb04b3e97eebb95a3e @@ -9855,9 +10363,9 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 147736 timestamp: 1727646635489 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py311hd6939f8_1.conda - sha256: 48de2a78d71e6c1a2681c1fbcf1f1503a29c58cc42cfc0fafa5c1b59a10eda94 - md5: c8e529b8f6a408dfc6a2bc0c607e2338 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda + sha256: 7cc9dd5c836631c733173c88187231bfc0438135e0ddf94e866e45b3d10592bd + md5: 3b2f520d27fa7cf9c6c73fb43c69a321 depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 @@ -9868,11 +10376,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 491149 - timestamp: 1725739585987 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.3.1-py312hab44e94_1.conda - sha256: 2cd47e3b011640115066d71a5266c825ab85854c1e5fff0fef2f24318f8c63e8 - md5: a2259b39321aef5c0548de366cc9b861 + size: 489258 + timestamp: 1736891091428 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + sha256: 91a27ede294fec129d115f2e0b0ce881f0c12332ee5e9c33ba522c037ad14bbb + md5: 0925c0e6ee32098c461423ea93490b97 depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 @@ -9883,11 +10391,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 499240 - timestamp: 1725739564809 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py311h09e6bbd_1.conda - sha256: 698b08ca54169a744a1a087130ece9528f18da5e3be33ff6799ac6337d2a5e7f - md5: a0a43da9ec3ffb6195e7621fd959f430 + size: 489634 + timestamp: 1736891165910 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda + sha256: 7eb9c40a460ea769f024aaf45dae9fde7ca41137ca82154c50c8aead8a32ff88 + md5: cc865b09e7a02328840b163fb8856731 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -9899,11 +10407,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 485377 - timestamp: 1725739643057 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 - md5: 1533727287f098e669d75f9c54dc1601 + size: 480994 + timestamp: 1736891387770 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 + md5: 0726db04477a28c51d1a260afb356b67 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -9915,45 +10423,45 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 490928 - timestamp: 1725739760349 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py311hd6939f8_1.conda - sha256: bf6179d71edb920cedf7ce4395f4447d5ae96a9deb5a44dcc1a6abffea0de4aa - md5: f3f565f99289de1cd140bdbea51b94eb + size: 478921 + timestamp: 1736891272846 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda + sha256: 94e00e4c9b5c5d8b2374321a0f908b7812b06ac8c9cb99242ddaa4ea0091f0be + md5: d16654f6b3f602bb0acab446c55bcafb depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 11.0.* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 381020 - timestamp: 1725875173947 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.3.1-py312hab44e94_1.conda - sha256: 0b6a7635467fb54d094fdeca82406ca6ecdffafc69a943066affe73431d505d5 - md5: 2cd451bd736cd2273b766b709c5ab7fa + size: 385111 + timestamp: 1736927116099 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + sha256: 974fc6659f162a6e9cf201e5544f32d5c38d795a1141b327f87be2821dc7bf07 + md5: 2486dd4f176f772531e0ecf22a8b85bd depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 11.0.* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 377479 - timestamp: 1725875154490 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py311h09e6bbd_1.conda - sha256: 1d9f2c68ba6c7812f0c1e4a9bf9a5ad0a691b7b7b7694cb7ec0f05f1c24906f1 - md5: 9c3fc1bf9718d8340f41b0fab06ecdaa + size: 381786 + timestamp: 1736927108218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda + sha256: 33635759c626103696963a4d439f01cc534fe94c318ce5a14c7b9ddbe8dfb78c + md5: 39da4013010bd559600f775ebf6a5915 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 11.0.* - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -9961,15 +10469,15 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 384333 - timestamp: 1725875205492 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d - md5: b1c63f8abafc9530a9259e0d6a70e984 + size: 389214 + timestamp: 1736927161972 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + sha256: 53d099865f8f758029708f4365ee7c9184d9ffcc8fc8210971b723a3936f9c00 + md5: dc263e6e18b32318a43252dbb0596ad4 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 11.0.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -9977,8 +10485,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 381079 - timestamp: 1725875188776 + size: 383608 + timestamp: 1736927118445 - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl name: pyreadline3 version: 3.5.4 @@ -9990,41 +10498,41 @@ packages: - pytest ; extra == 'dev' - twine ; extra == 'dev' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 - md5: 56cd9fe388baac0e90c7149cfac95b60 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 depends: - __win - - python >=3.8 + - python >=3.9 - win_inet_pton license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pysocks?source=hash-mapping - size: 19348 - timestamp: 1661605138291 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + size: 21784 + timestamp: 1733217448189 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pysocks?source=hash-mapping - size: 18981 - timestamp: 1661604969727 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.3-pyhd8ed1ab_0.conda - sha256: e99376d0068455712109d233f5790458ff861aeceb458bfda74e353338e4d815 - md5: c03d61f31f38fdb9facf70c29958bf7a + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 + md5: c3c9316209dec74a705a36797970c6be depends: - colorama - exceptiongroup >=1.0.0rc8 - iniconfig - packaging - pluggy <2,>=1.5 - - python >=3.8 + - python >=3.9 - tomli >=1 constrains: - pytest-faulthandler >=2 @@ -10032,11 +10540,11 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=hash-mapping - size: 258293 - timestamp: 1725977334143 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_0.conda - sha256: 915323edaee9f6f3ebd8c2e5450b4865700edf2c85eb2bba61980e66c6f03c5d - md5: cb8a11b6d209e3d85e5094bdbd9ebd9c + size: 259816 + timestamp: 1740946648058 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + sha256: 09acac1974e10a639415be4be326dd21fa6d66ca51a01fb71532263fba6dccf6 + md5: 79963c319d1be62c8fd3e34555816e01 depends: - coverage >=7.5 - pytest >=4.6 @@ -10046,216 +10554,234 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-cov?source=hash-mapping - size: 26218 - timestamp: 1730284385470 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda - sha256: c9f27ed55352bee2c9f7cc2fdaf12b322ee280b1989d7e763b4540d4fe7ec995 - md5: b39568655c127a9c4a44d178ac99b6d0 + size: 26256 + timestamp: 1733223113491 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + sha256: b6fed61a0f6aba248fe4ad590427d92ed94a85c3a2fd238362f4c1d3b5d900a4 + md5: 07ab2b7111d3e814cfd73581e34cb9a1 + depends: + - gprof2dot + - pytest + - python >=3.9 + - six + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-profiling?source=hash-mapping + size: 15889 + timestamp: 1740145872989 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 + md5: 59aad4fb37cabc0bacc73cf344612ddd depends: - execnet >=2.1 - pytest >=7.0.0 - - python >=3.8 + - python >=3.9 constrains: - psutil >=3.0 license: MIT license_family: MIT purls: - pkg:pypi/pytest-xdist?source=hash-mapping - size: 38320 - timestamp: 1718138508765 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - build_number: 3 - sha256: b7fa3bd48e3a3d30f65608e07759cefd27885c6388b3f612af85ce40282e6936 - md5: 9e1ad55c87368e662177661a998feed5 + size: 38147 + timestamp: 1733240891538 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_2_cpython.conda + build_number: 2 + sha256: e0be7ad95a034d10e021f15317bf5c70fc1161564fa47844984c245505cde36c + md5: 81dd3e521f9b9eaa58d06213e28aaa9b depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 30543977 - timestamp: 1729043512711 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + size: 30594389 + timestamp: 1741036299726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 + md5: d82342192dfc9145185190e651065aa9 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 31574780 - timestamp: 1728059777603 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.10-ha513fb2_3_cpython.conda - build_number: 3 - sha256: 670ba83b2aab2204f3254ed47ac0e4b8cad82478e5821727aeab69a2912aa1a0 - md5: 1a88c32ab9e997380ba1f9306624f805 + size: 31670716 + timestamp: 1741130026152 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.11-h9ccd52b_2_cpython.conda + build_number: 2 + sha256: 2c34d988cdb364665478ca3d93a43b2a5bf149e822215ad3fa6a5342627374a9 + md5: 8d73135b48597cc13715a34bc79654b7 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15442415 - timestamp: 1729043110107 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.7-h8f8b54e_0_cpython.conda - sha256: 28172d94f7193c5075c0fc3c4b1bb617c512ffc991f4e2af0dbb6a2916872b76 - md5: 7f81191b1ca1113e694e90e15c27a12f + size: 15472260 + timestamp: 1741035097532 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + build_number: 1 + sha256: c394f7068a714cad7853992f18292bb34c6d99fe7c21025664b05069c86b9450 + md5: b878567b6b749f993dbdbc2834115bc3 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13761315 - timestamp: 1728058247482 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - build_number: 3 - sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b - md5: 2a47a0061d7d3030e45b66d23f01d101 + size: 13833024 + timestamp: 1741129416409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_2_cpython.conda + build_number: 2 + sha256: 6f3c20b8666301fc27e6d1095f1e0f12a093bacf483e992cb56169127e989630 + md5: 4bd51247ba4dd5958eb8f1e593edfe00 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 14598065 - timestamp: 1729042279642 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + size: 14579450 + timestamp: 1741035010673 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + build_number: 1 + sha256: fe804fc462396baab8abe525a722d0254c839533c98c47abd2c6d1248ad45e93 + md5: d9fac7b334ff6e5f93abd27509a53060 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 12975439 - timestamp: 1728057819519 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.10-hce54a09_3_cpython.conda - build_number: 3 - sha256: 3931c546219d069918389e4dbe12057af4cc68a1060577a04014c6b5fc618aa0 - md5: 5d54d429c0eb2273d1cc69763de6edaf + size: 13042031 + timestamp: 1741128584924 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.11-h3f84c4b_2_cpython.conda + build_number: 2 + sha256: d9a31998083225dcbef7c10cf0d379b1f64176cf1d0f8ad7f29941d2eb293d25 + md5: 8959f363205d55bb6ada26bdfd6ce8c7 depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 18206702 - timestamp: 1729041779073 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.7-hce54a09_0_cpython.conda - sha256: 2308cfa9ec563360d29ced7fd13a6b60b9a7b3cf8961a95c78c69f486211d018 - md5: 21f1f7c6ccf6b747c5086d2422c230e1 + size: 18221686 + timestamp: 1741034476958 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + build_number: 1 + sha256: 320acd0095442a451c4e0f0f896bed2f52b3b8f05df41774e5b0b433d9fa08e0 + md5: f0a0ad168b815fee4ce9718d4e6c1925 depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.1,<4.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 15987537 - timestamp: 1728057382072 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + size: 15935206 + timestamp: 1741128459438 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 @@ -10263,19 +10789,19 @@ packages: license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping - size: 221925 - timestamp: 1731919374686 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - sha256: 7d8c931b89c9980434986b4deb22c2917b58d9936c3974139b9c10ae86fdfe60 - md5: b98d2018c01ce9980c03ee2850690fab + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - - python >=3.3 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/fastjsonschema?source=hash-mapping - size: 226165 - timestamp: 1718477110630 + size: 226259 + timestamp: 1733236073335 - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 @@ -10287,17 +10813,17 @@ packages: - pkg:pypi/python-json-logger?source=hash-mapping size: 13383 timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/tzdata?source=hash-mapping - size: 142527 - timestamp: 1727140688093 + size: 143794 + timestamp: 1737541204030 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda build_number: 5 sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de @@ -10427,9 +10953,9 @@ packages: - pkg:pypi/pywin32?source=hash-mapping size: 6032183 timestamp: 1728636767192 -- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py311hda3d55a_0.conda - sha256: 337097e3f3b71f782c43fb702893f86f080e140da467415dcaf039a7fbb8e551 - md5: 64553b300529aa8987f6ca92c914c844 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda + sha256: fbf3e3f2d5596e755bd4b83b5007fa629b184349781f46e137a4e80b6754c7c0 + md5: 8a142e0fcd43513c2e876d97ba98c0fa depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -10441,11 +10967,11 @@ packages: license_family: MIT purls: - pkg:pypi/pywinpty?source=hash-mapping - size: 210973 - timestamp: 1729202625177 -- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.14-py312h275cf98_0.conda - sha256: 20bc64c412b659b387ed12d73ca9138e4487abcfb3f1547b6d4cdb68753035e9 - md5: 0e0aac13d306f0b016f4c85cbfbf87be + size: 217009 + timestamp: 1738661736085 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + sha256: 22b901606eda476a19fcc9376a906ef2e16fc6690186bc1d9a213f6c8e93d061 + md5: 1fb4bbe58100be45b37781a367c92fe8 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -10457,11 +10983,11 @@ packages: license_family: MIT purls: - pkg:pypi/pywinpty?source=hash-mapping - size: 210034 - timestamp: 1729202671199 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h9ecbd09_1.conda - sha256: e721e5ff389a7b2135917c04b27391be3d3382e261bb60a369b1620655365c3d - md5: abeb54d40f439b86f75ea57045ab8496 + size: 215864 + timestamp: 1738661787591 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 + md5: 014417753f948da1f70d132b2de573be depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10472,11 +10998,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 212644 - timestamp: 1725456264282 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 + size: 213136 + timestamp: 1737454846598 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10487,11 +11013,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 206553 - timestamp: 1725456256213 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h3336109_1.conda - sha256: d8f4513c53a7c0be9f1cdb9d1af31ac85cf8a6f0e4194715e36e915c03104662 - md5: b0132bec7165a53403dcc393ff761a9e + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda + sha256: 4855c51eedcde05f3d9666a0766050c7cbdff29b150d63c1adc4071637ba61d7 + md5: f49b0da3b1e172263f4f1e2f261a490d depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -10501,11 +11027,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 193941 - timestamp: 1725456465818 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - sha256: 455ce40588b35df654cb089d29cc3f0d3c78365924ffdfc6ee93dba80cea5f33 - md5: 66514594817d51c78db7109a23ad322f + size: 197287 + timestamp: 1737454852180 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + sha256: de96d83b805dba03422d39e855fb33cbeedc8827235d6f76407a3b42dc085910 + md5: 4a2d83ac55752681d54f781534ddd209 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -10515,11 +11041,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 189347 - timestamp: 1725456465705 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h460d6c5_1.conda - sha256: 9ae182eef4e96a7c2f46cc9add19496276612663e17429500432631dce31a831 - md5: d32590e7bd388f18b036c6fc402a0cb1 + size: 193577 + timestamp: 1737454858212 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f + md5: 250b2ee8777221153fd2de9c279a7efa depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -10530,11 +11056,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 192321 - timestamp: 1725456528007 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 196951 + timestamp: 1737454935552 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -10545,11 +11071,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 187143 - timestamp: 1725456547263 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_1.conda - sha256: 86608f1b4f6b1819a74b6b1344c34304745fd7e84bfc9900269f57cf28178d31 - md5: d0c5f3c595039890be0c9af47d23b9ba + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda + sha256: 6095e1d58c666f6a06c55338df09485eac34c76e43d92121d5786794e195aa4d + md5: e474ba674d780f0fa3b979ae9e81ba91 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -10561,11 +11087,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 187901 - timestamp: 1725456808581 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - sha256: fa3ede1fa2ed6ea0a51095aeea398f6f0f54af036c4bc525726107cfb49229d5 - md5: afb7809721516919c276b45f847c085f + size: 187430 + timestamp: 1737454904007 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + sha256: 76fec03ef7e67e37724873e1f805131fb88efb57f19e9a77b4da616068ef5c28 + md5: ba00a2e5059c1fde96459858537cc8f5 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -10577,11 +11103,11 @@ packages: license_family: MIT purls: - pkg:pypi/pyyaml?source=hash-mapping - size: 181227 - timestamp: 1725456516473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py311h7deb3e3_3.conda - sha256: 3fdef7b3c43474b7225868776a373289a8fd92787ffdf8bed11cf7f39b4ac741 - md5: e0897de1d8979a3bb20ef031ae1f7d28 + size: 181734 + timestamp: 1737455207230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py311h7deb3e3_0.conda + sha256: a53a33de9f4dab1a3129324b4b4e7da2c6c642d8555fe591d3f6bc9772054389 + md5: 1ca9cbd0e1d3db5f4fda183977c8ae01 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10593,12 +11119,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 389074 - timestamp: 1728642373938 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 - md5: 746ce19f0829ec3e19c93007b1a224d3 + - pkg:pypi/pyzmq?source=compressed-mapping + size: 393603 + timestamp: 1741805320840 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + sha256: aa96b9d13bc74f514ccbc3ad275d23bb837ec63894e6e7fb43786c7c41959bfd + md5: ec243006dd2b7dc72f1fba385e59f693 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10611,14 +11137,14 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 378126 - timestamp: 1728642454632 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py311h4d3da15_3.conda - sha256: 6aa664170031e36302616978404175c6ada3bd4a14c71bac826fa6a7ec15f815 - md5: 48a614f384285254a3224d086dc84ce3 + size: 381353 + timestamp: 1741805281237 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py311hb21797c_0.conda + sha256: 84922355958d44752b59c19d73f6faa202e83b47f14228674392120532dd841d + md5: fc8c9792aeea51848d389b1b422b2e26 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -10627,14 +11153,14 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 366412 - timestamp: 1728642446264 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.0-py312h1060d5c_3.conda - sha256: 880b10ebbc563164d24adf51d2166ddd54a368627dc546cf89abc3e9c935e23c - md5: fa167f6388357aeff8fd341b7bc9edd6 + size: 370387 + timestamp: 1741805577001 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + sha256: fbada9f6bdd477c6eba4bf0fbeb5d4dcdde8ccdd54df58e0e8a3e7e45f4fc146 + md5: 64faf394b4c93ad0e53e5e7d24cda358 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -10643,14 +11169,14 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 362749 - timestamp: 1728642592082 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py311h730b646_3.conda - sha256: 7e75589d9c3723ecf314435f15a7b486cebafa89ebf00bb616354e37587dc7ae - md5: b6f3e527de0c0384cd78cfa779bd6ddf + size: 365891 + timestamp: 1741805479302 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py311h01f2145_0.conda + sha256: 17a10143081dc1f8415fc2187e518c24f22d8a115ebd190b325bb1b2f1b843c7 + md5: 3f67ae0bef4dd392fd61573681d6c79b depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython @@ -10659,15 +11185,15 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 365841 - timestamp: 1728642472021 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 - md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + - pkg:pypi/pyzmq?source=compressed-mapping + size: 369792 + timestamp: 1741805476216 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + sha256: 060ae4b599c14f1f2a54fe9e1693503085f8889e3b440586a282199dc03e2044 + md5: 9a37ca625fba18b908c1071d133109c5 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -10677,11 +11203,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 361674 - timestamp: 1728642457661 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py311h484c95c_3.conda - sha256: 4d3fc4cfac284efb83a903601586cc6ee18fb556d4bf84d3bd66af76517c463e - md5: 4836b00658e11b466b823216f6df2424 + size: 363241 + timestamp: 1741805459823 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py311h484c95c_0.conda + sha256: 38fea35b67252e56e308f1af6e7694a414ff5e7d55d74cbcfb22a5b9aa344d9f + md5: e01cddfa1ebe1376589fa2f331030744 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 @@ -10694,11 +11220,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 371084 - timestamp: 1728642713666 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.2.0-py312hd7027bb_3.conda - sha256: 46a645f9482c9ca55716644dae85f6d3cf771b696379d1dd86841ca6007ee409 - md5: 1ff97de0753654c02e5195a710bbf05c + size: 373573 + timestamp: 1741805733860 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + sha256: 39e0fb384a516bbff9ee0ffdfbb765d0ee1180ad5d6cbdcf75140fe871b4f615 + md5: 5795400c7af6fcc8dc30b72e77e52dca depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 @@ -10711,90 +11237,92 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 360217 - timestamp: 1728642895644 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 - md5: 01093ff37c1b5e6bf9f17c0116747d11 + size: 365047 + timestamp: 1741805733926 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda + sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486 + md5: 6f445fb139c356f903746b2b91bbe786 depends: - - libre2-11 2024.07.02 hbbce691_1 + - libre2-11 2024.07.02 hba17884_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 26665 - timestamp: 1728778975855 -- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-h2fb0a26_1.conda - sha256: 49ec4ed6249efe9cda173745e036137f8de1f0b22edf9b0ca4f9c6409b2b68f9 - md5: aa8ea927cdbdf690efeae3e575716131 + size: 26811 + timestamp: 1741121137599 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda + sha256: 291ebc1f3c6d479077399298c42c5e510e354664212cba74c04b9ab13ad811de + md5: 11dae9af12311eee952f3431282c822d depends: - - libre2-11 2024.07.02 hd530cb8_1 + - libre2-11 2024.07.02 h08ce7b7_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 26864 - timestamp: 1728779054104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 - md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + size: 26925 + timestamp: 1741121237531 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda + sha256: 248af2869bf54f77f5b4c6e144b535bbc2a6d4c27228f4fb2ed689f8df9f071b + md5: d4e82bd66b71c29da35e1f634548e039 depends: - - libre2-11 2024.07.02 h2348fd5_1 + - libre2-11 2024.07.02 hd41c47c_3 license: BSD-3-Clause license_family: BSD purls: [] - size: 26860 - timestamp: 1728779123653 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 + size: 26954 + timestamp: 1741121389739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 - md5: f17f77f2acf4d344734bda76829ce14e + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + sha256: 53017e80453c4c1d97aaf78369040418dea14cf8f46a2fa999f31bd70b36c877 + md5: 342570f8e02f2f022147a7f841475784 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 255870 - timestamp: 1679532707590 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 256712 + timestamp: 1740379577668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 license: GPL-3.0-only license_family: GPL purls: [] - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 - md5: 0fc8b52192a8898627c3efae1003e9f6 + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + sha256: e20909f474a6cece176dfc0dc1addac265deb5fa92ea90e975fbca48085b20c3 + md5: 9140f1c09dd5489549c6a33931b943c7 depends: - attrs >=22.2.0 - - python >=3.8 + - python >=3.9 - rpds-py >=0.7.0 + - typing_extensions >=4.4.0 + - python license: MIT license_family: MIT purls: - pkg:pypi/referencing?source=hash-mapping - size: 42210 - timestamp: 1714619625532 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + size: 51668 + timestamp: 1737836872415 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 @@ -10802,20 +11330,20 @@ packages: license_family: APACHE purls: - pkg:pypi/requests?source=hash-mapping - size: 58810 - timestamp: 1717057174842 -- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - md5: fed45fc5ea0813240707998abe49f520 + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 depends: - - python >=3.5 + - python >=3.9 - six license: MIT license_family: MIT purls: - pkg:pypi/rfc3339-validator?source=hash-mapping - size: 8064 - timestamp: 1638811838081 + size: 10209 + timestamp: 1733600040800 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 md5: 912a71cc01012ee38e6b90ddd561e36f @@ -10827,13 +11355,23 @@ packages: - pkg:pypi/rfc3986-validator?source=hash-mapping size: 7818 timestamp: 1598024297745 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py311h9e33e62_0.conda - sha256: 41b1c00f08d2b09243ca184af6f4fe8ca9fee418a62aec1cf1555bfd0b1b2eac - md5: befdb32741d8686b860232ca80178d63 +- conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + sha256: 0116a9ca9bf3487e18979b58b2f280116dba55cb53475af7a6d835f7aa133db8 + md5: 5f0f24f8032c2c1bb33f59b75974f5fc + depends: + - python >=3.9 + license: 0BSD OR CC0-1.0 + purls: + - pkg:pypi/roman-numerals-py?source=hash-mapping + size: 13348 + timestamp: 1740240332327 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py311h687327b_0.conda + sha256: 754d8eff118a6a01f4eb0e8bc6be7be8872f54826d6ff0402eac08d308b01099 + md5: d35b446856b4d6644a469fd01838baff depends: + - python - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 @@ -10841,15 +11379,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 334025 - timestamp: 1730922823065 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 - md5: 37f4ad7cb4214c799f32e5f411c6c69f + size: 391827 + timestamp: 1740153282893 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + sha256: 0378f8010ef166cea7fcb0d502e3c85fd96442e445aab7e66f8702deb9ab1e26 + md5: b9cb8c7bcbe3df8e640b244ed096b8e2 depends: - - __glibc >=2.17,<3.0.a0 + - python - libgcc >=13 - - python >=3.12,<3.13.0a0 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -10857,14 +11395,14 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 336759 - timestamp: 1730922756033 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py311h3b9c2be_0.conda - sha256: 234429609e71e568d1dcd7113e9a3c53c231079166ec89364b7c1158ea989776 - md5: 230b5b87921887039af74b783d8ff095 + size: 394314 + timestamp: 1740153296343 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py311hab9d7c2_0.conda + sha256: d83ef060f75ea5b87ee1142c6e54140fcd7f34b21cd7cd55c78bdcce457f19af + md5: d4d43afca6dd6e0667ce236df9d942e3 depends: + - python - __osx >=10.13 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - __osx >=10.13 @@ -10872,14 +11410,14 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 301356 - timestamp: 1730922990073 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.21.0-py312h0d0de52_0.conda - sha256: ff4c1d70c78085a2abb8f8fc1dc283a60eafe61e03c3367d7cbface6190fe7ab - md5: dae0ad51ccb74a37f0b64ed6e6f82840 + size: 383768 + timestamp: 1740153197689 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + sha256: 06cdca020bab7af6724ffeecfde488cda902867a991611ff41e35c56b533ec48 + md5: b77397ede545ef388c85d795a986b40a depends: + - python - __osx >=10.13 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __osx >=10.13 @@ -10887,15 +11425,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 303838 - timestamp: 1730922939375 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py311h3ff9189_0.conda - sha256: 309be68ba0cac227dbc288576b1b35a4f57cea85ca8891689399c384ac04b254 - md5: ae72e9942de84200f16d91a1c3418116 + size: 377000 + timestamp: 1740153175904 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py311hc9d6b66_0.conda + sha256: 2f97abcca90080703b8f9a8975c72c2d7bf7b67b2c7bc3467b63ed0f7bdb6c59 + md5: 743cfbdfbf99ca9edf519514acde5efa depends: + - python + - python 3.11.* *_cpython - __osx >=11.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - __osx >=11.0 @@ -10903,15 +11441,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 294014 - timestamp: 1730923248201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555 - md5: 8ea53395d5403ae5ec1adabb1a74719a + size: 374118 + timestamp: 1740153123035 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + sha256: 9b68bfd5dcd50a0e6c67a2aee42e15bb6d344357361e936fd6b93c9e4eaf0d69 + md5: 21bfb8afb20f48a6c60e83a2f01d7034 depends: + - python - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python 3.12.* *_cpython - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 @@ -10919,38 +11457,44 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 295817 - timestamp: 1730922974629 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py311h533ab2d_0.conda - sha256: 217c9ce9bcb50ea55ba1148a7b85ae945015c68ecae914707eff0fce5c175cdf - md5: 56ff25ebb744a6aa97ff02b8c263c892 + size: 367762 + timestamp: 1740153151756 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py311ha250665_0.conda + sha256: 72ca8e7d54f79e6a99827576e53a277796ab8f4d912eba33e3b949cd757a77f7 + md5: 8fd1344d7369c84eb7cf4c316ab86518 depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 211208 - timestamp: 1730923228503 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.21.0-py312h2615798_0.conda - sha256: 5c7492080f1db9a6def75193d8b296af50adb5ae390835432c095bc515cd19cc - md5: 6e9c028c46dddcbf97d6fc6f7b854811 + size: 251649 + timestamp: 1740153100034 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + sha256: 10bbbaea04c8f7f6ab784360be4c9cc9f439017114dd97ee6b99657d57ac6577 + md5: f0410386ac90b39f953a0313ad111a31 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 210974 - timestamp: 1730923229667 + size: 255235 + timestamp: 1740153104261 - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl name: scipy version: 1.15.2 @@ -10994,9 +11538,9 @@ packages: - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda - sha256: d069a64edade554261672d8febf4756aeb56a6cb44bd91844eaa944e5d9f4eb9 - md5: b43233a9e2f62fb94affe5607ea79473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda + sha256: b9faaa024b77a3678a988c5a490f02c4029c0d5903998b585100e05bc7d4ff36 + md5: 00b999c5f9d01fb633db819d79186bd4 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -11006,7 +11550,7 @@ packages: - libgfortran5 >=13.3.0 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - numpy <2.3 + - numpy <2.5 - numpy >=1.19,<3 - numpy >=1.23.5 - python >=3.12,<3.13.0a0 @@ -11015,20 +11559,20 @@ packages: license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 17622722 - timestamp: 1729481826601 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda - sha256: 5a28ea91c935513e6c5f64baac5a02ce43d9ba183b98e20127220b207ec96529 - md5: ee7a4ffe9742d2df44caa858b36814b8 + size: 17064784 + timestamp: 1739791925628 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda + sha256: 4c34ef6a688c3ea99a11a9c32941133800f4e10ff5af0074998abed80392c75a + md5: cea880e674e00193c7fb915eea6c8200 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=17 + - libcxx >=18 - libgfortran 5.* - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 + - numpy <2.5 - numpy >=1.19,<3 - numpy >=1.23.5 - python >=3.12,<3.13.0a0 @@ -11037,20 +11581,20 @@ packages: license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 16032291 - timestamp: 1729481615781 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda - sha256: 1a4d655609bad7dbdbe9f44ba37fd100d01fb8e4e7060dfaed3c4a044ab40052 - md5: c60ad657cccb6c2b97513f87ae27f47a + size: 15547115 + timestamp: 1739791861956 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda + sha256: af61f6e29a0d3d4c66699a35b19ce6849d6e0fa15017d7a9ef6268cc1c4e1264 + md5: b1d324bf5018b451152bbdc4ffd3d378 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=17 + - libcxx >=18 - libgfortran 5.* - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 + - numpy <2.5 - numpy >=1.19,<3 - numpy >=1.23.5 - python >=3.12,<3.13.0a0 @@ -11060,79 +11604,91 @@ packages: license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 15132713 - timestamp: 1729481799441 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - sha256: c4401b071e86ddfa0ea4f34b85308db2516b6aeca50053535996864cfdee7b3f - md5: 778594b20097b5a948c59e50ae42482a + size: 14394729 + timestamp: 1739792424558 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - __linux - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/send2trash?source=hash-mapping - size: 22868 - timestamp: 1712585140895 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - sha256: f911307db932c92510da6c3c15b461aef935720776643a1fbf3683f61001068b - md5: c3cb67fc72fb38020fe7923dbbcf69b0 + size: 22736 + timestamp: 1733322148326 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 depends: - __osx - pyobjc-framework-cocoa - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/send2trash?source=hash-mapping - size: 23165 - timestamp: 1712585504123 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_0.conda - sha256: d8aa230501a33250af2deee03006a2579f0335e7240a9c7286834788dcdcfaa8 - md5: 5a86a21050ca3831ec7f77fb302f1132 + size: 23100 + timestamp: 1733322309409 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + sha256: ba8b93df52e0d625177907852340d735026c81118ac197f61f1f5baea19071ad + md5: e6a4e906051565caf5fdae5b0415b654 depends: - __win - - python >=3.7 + - python >=3.9 - pywin32 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/send2trash?source=hash-mapping - size: 23319 - timestamp: 1712585816346 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed - md5: 68d7d406366926b09a6a023e3d0f71d7 + size: 23359 + timestamp: 1733322590167 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/setuptools?source=hash-mapping - size: 774304 - timestamp: 1732216189406 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/six?source=hash-mapping - size: 14259 - timestamp: 1620240338595 -- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + sha256: 833326122c18887b338262c13365cb146b6702c79d72da74a1c6b8af4c50e162 + md5: 421b7a950e384949ca1b0f04f0751ce0 depends: - - python >=3.7 + - python >=3.9 + - tornado >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/snakeviz?source=hash-mapping + size: 171545 + timestamp: 1735289409501 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/sniffio?source=hash-mapping - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 md5: 4d22a9315e78c6827f806065957d566e @@ -11155,9 +11711,9 @@ packages: - pkg:pypi/soupsieve?source=hash-mapping size: 36754 timestamp: 1693929424267 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.1.3-pyhd8ed1ab_0.conda - sha256: e9e3eaa7277934ba20314ffb92c941c4ec12c0c440e608b7b495c5ce579af1f7 - md5: 05706dd5a145a9c91861495cd435409a +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + sha256: 995f58c662db0197d681fa345522fd9e7ac5f05330d3dff095ab2f102e260ab0 + md5: f7af826063ed569bb13f7207d6f949b0 depends: - alabaster >=0.7.14 - babel >=2.13 @@ -11167,8 +11723,9 @@ packages: - jinja2 >=3.1 - packaging >=23.0 - pygments >=2.17 - - python >=3.10 + - python >=3.11 - requests >=2.30.0 + - roman-numerals-py >=1.0.0 - snowballstemmer >=2.2 - sphinxcontrib-applehelp >=1.0.7 - sphinxcontrib-devhelp >=1.0.6 @@ -11176,16 +11733,15 @@ packages: - sphinxcontrib-jsmath >=1.0.1 - sphinxcontrib-qthelp >=1.0.6 - sphinxcontrib-serializinghtml >=1.1.9 - - tomli >=2.0 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/sphinx?source=hash-mapping - size: 1401233 - timestamp: 1728874101851 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 8ac476358cf26098e3a360b2a9037bd809243f72934c103953e25f4fda4b9f31 - md5: 9075bd8c033f0257122300db914e49c9 + size: 1424416 + timestamp: 1740956642838 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba + md5: 16e3f039c0aa6446513e94ab18a8784b depends: - python >=3.9 - sphinx >=5 @@ -11193,11 +11749,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-applehelp?source=hash-mapping - size: 29617 - timestamp: 1722244567894 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 6790efe55f168816dfc9c14235054d5156e5150d28546c5baf2ff4973eff8f6b - md5: b3bcc38c471ebb738854f52a36059b48 + size: 29752 + timestamp: 1733754216334 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + sha256: 55d5076005d20b84b20bee7844e686b7e60eb9f683af04492e598a622b12d53d + md5: 910f28a05c178feba832f842155cbfff depends: - python >=3.9 - sphinx >=5 @@ -11205,11 +11761,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-devhelp?source=hash-mapping - size: 24138 - timestamp: 1722245127289 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda - sha256: 55e14b77ed786ab6ff752b8d75f8448536f385ed250f432bd408d2eff5ea4a9e - md5: e25640d692c02e8acfff0372f547e940 + size: 24536 + timestamp: 1733754232002 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + sha256: c1492c0262ccf16694bdcd3bb62aa4627878ea8782d5cd3876614ffeb62b3996 + md5: e9fb3fe8a5b758b4aff187d434f94f03 depends: - python >=3.9 - sphinx >=5 @@ -11217,22 +11773,22 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-htmlhelp?source=hash-mapping - size: 32798 - timestamp: 1722248429933 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda - sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 - md5: da1d979339e2714c30a8e806a33ec087 + size: 32895 + timestamp: 1733754385092 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + sha256: 578bef5ec630e5b2b8810d898bbbf79b9ae66d49b7938bcc3efc364e679f2a62 + md5: fa839b5ff59e192f411ccc7dae6588bb depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - pkg:pypi/sphinxcontrib-jsmath?source=hash-mapping - size: 10431 - timestamp: 1691604844204 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda - sha256: 7ae639b729844de2ec74dbaf1acccc14843868a82fa46cd2ceb735bc8266af5b - md5: d6e5ea5fe00164ac6c2dcc5d76a42192 + size: 10462 + timestamp: 1733753857224 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + sha256: c664fefae4acdb5fae973bdde25836faf451f41d04342b64a358f9a7753c92ca + md5: 00534ebcc0375929b45c3039b5ba7636 depends: - python >=3.9 - sphinx >=5 @@ -11240,11 +11796,11 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-qthelp?source=hash-mapping - size: 26794 - timestamp: 1722245959953 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda - sha256: bf80e4c0ff97d5e8e5f6db0831ba60007e820a3a438e8f1afd868aa516d67d6f - md5: e507335cb4ca9cff4c3d0fa9cdab255e + size: 26959 + timestamp: 1733753505008 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + sha256: 64d89ecc0264347486971a94487cb8d7c65bfc0176750cf7502b8a272f4ab557 + md5: 3bc61f7161d28137797e038263c04c54 depends: - python >=3.9 - sphinx >=5 @@ -11252,29 +11808,22 @@ packages: license_family: BSD purls: - pkg:pypi/sphinxcontrib-serializinghtml?source=hash-mapping - size: 28776 - timestamp: 1705118378942 -- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec - md5: e7df0fdd404616638df5ece6e69ba7af + size: 28669 + timestamp: 1733750596111 +- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc depends: - asttokens - executing - pure_eval - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/stack-data?source=hash-mapping - size: 26205 - timestamp: 1669632203115 -- pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - name: tabcompleter - version: 1.4.0 - sha256: d744aa735b49c0a6cc2fb8fcd40077fec47425e4388301010b14e6ce3311368b - requires_dist: - - pyreadline3 ; platform_system == 'Windows' - requires_python: '>=3.8' + size: 26988 + timestamp: 1733569565672 - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl name: tabcompleter version: 1.4.0 @@ -11282,40 +11831,41 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 - sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 - md5: 4759805cce2d914c38472f70bf4d8bcb +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/tabulate?source=hash-mapping - size: 35912 - timestamp: 1665138565317 -- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.7.0-h91493d7_0.tar.bz2 - sha256: c3d607499a6e097f4b8b27048ee7166319fd3dfe98aea9e69a69a3d087b986e3 - md5: f57be598137919e4f7e7d159960d66a1 + size: 37554 + timestamp: 1733589854804 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 + md5: 9190dd0a23d925f7602f9628b3aed511 depends: + - libhwloc >=2.11.2,<2.11.3.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - - vs2015_runtime >=14.29.30139 + - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: APACHE purls: [] - size: 178574 - timestamp: 1668617991077 -- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_0.conda - sha256: 0d33171e1d303b57867f0cfcffb8a35031700acb3c52b1862064d8f4e1085538 - md5: 42af51ad3b654ece73572628ad2882ae + size: 151460 + timestamp: 1732982860332 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + sha256: dcf2155fb959773fb102066bfab8e7d79aff67054d142716979274a43fc85735 + md5: a09f66fe95a54a92172e56a4a97ba271 depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/tenacity?source=hash-mapping - size: 24683 - timestamp: 1722278974784 + size: 24808 + timestamp: 1733649153624 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -11413,31 +11963,31 @@ packages: purls: [] size: 3503410 timestamp: 1699202577803 -- conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 - md5: f832c45a477c78bebd107098db465095 +- conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 + md5: b0dd904de08b7db706167240bf37b164 depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/toml?source=hash-mapping - size: 18433 - timestamp: 1604308660817 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 - md5: 3fa1089b4722df3a900135925f4519d9 + size: 22132 + timestamp: 1734091907682 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/tomli?source=hash-mapping - size: 18741 - timestamp: 1731426862834 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - sha256: 21390d0c5708581959ebd89702433c1d06a56ddd834797a194b217f98e38df53 - md5: 616fed0b6f5c925250be779b05d1d7f7 + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11447,11 +11997,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 856725 - timestamp: 1724956239832 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11461,11 +12011,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 837665 - timestamp: 1724956252424 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py311h3336109_1.conda - sha256: 2e54c0d478b8d0793f89b855749aa74acaa185d08d353d8e5aa95f8e89eb6123 - md5: 5e051c4c2b80c381173b2c1719265617 + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py311h4d7f069_0.conda + sha256: 5273ba307489570df61d82a6b3365b2a27862765099cf4ef3830569fa4a30f27 + md5: 073c42a2b6b7e4219325b1f5983c7579 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -11474,11 +12024,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 856251 - timestamp: 1724956238423 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.1-py312hb553811_1.conda - sha256: 67711e308059fd4fd9ce2389b155ffcc52723d202b78cdfa01e7d6a3d42725b5 - md5: 479bb06cef210f968f20866277acd8b9 + size: 858750 + timestamp: 1732616082798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + sha256: a7b0796b9f8a02121a866ee396f0f8674c302504ccb9a3a2830699eedbc000b0 + md5: 1b977164053085b356297127d3d6be49 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -11487,11 +12037,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 841028 - timestamp: 1724956347530 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - sha256: bba4940ef7522c3b4ae6eacd296e5e110de3659f7e4c3654d4fc2bb213c2091c - md5: 8ba6d177509dc4fac7af09749556eed0 + size: 837113 + timestamp: 1732616134981 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -11501,11 +12051,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 859139 - timestamp: 1724956356600 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -11515,11 +12065,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 841722 - timestamp: 1724956439106 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py311he736701_1.conda - sha256: 8e448bc682a6540a0aadc1f821c0d60f03d70272350caa2af519316fd1753f68 - md5: f361535f90629358e3ea8f2161b239f3 + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py311he736701_0.conda + sha256: 7e313f1724e5eb7d13f7a1ebd6026a378f3f58a638ba7cdc3bd452c01323bb29 + md5: 7e33077ce1bc0bf45c45a92e37432f16 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -11530,11 +12080,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 860730 - timestamp: 1724956581349 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.1-py312h4389bb4_1.conda - sha256: 79a4155e4700aa188d6de36ed65b2923527864ad775bb156ed0a4067619e8ee0 - md5: e278437965b2420d567ba11b579668bc + size: 859456 + timestamp: 1732616376731 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + sha256: e21f24e5d598d9a31c604f510c82fbe73d756696bc70a69f11811a2ea9dd5d95 + md5: f06104f71f496b0784b35b23e30e7990 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -11545,76 +12095,76 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 841567 - timestamp: 1724956763418 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + size: 844347 + timestamp: 1732616435803 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/traitlets?source=hash-mapping - size: 110187 - timestamp: 1713535244513 -- pypi: https://files.pythonhosted.org/packages/31/c1/d73ff5900c6b462879039ac92f89424ad1eb544b1f6bd77f12f9c3013e20/types_networkx-3.4.2.20241227-py3-none-any.whl + size: 110051 + timestamp: 1733367480074 +- pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl name: types-networkx - version: 3.4.2.20241227 - sha256: adb0e3f0a16c1481a2cfa97772a0b925b220dcf857f0def1c5ab4c4f349e309d + version: 3.4.2.20250312 + sha256: 3d2a61fc4c57d8a2032607b60c13ee4a7dd9cc5750667ecc882dbba2d57dbdfd requires_dist: - numpy>=1.20 - requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 - md5: 3d326f8a2aa2d14d51d8c513426b5def + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 + md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 AND MIT purls: - pkg:pypi/types-python-dateutil?source=hash-mapping - size: 21765 - timestamp: 1727940339297 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + size: 22104 + timestamp: 1733612458611 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda noarch: python - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF purls: [] - size: 10097 - timestamp: 1717802659025 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF purls: - pkg:pypi/typing-extensions?source=hash-mapping - size: 39888 - timestamp: 1717802653893 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739 - md5: eb67e3cace64c66233e2d35949e20f92 + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c depends: - - python >=3.6.1 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/typing-utils?source=hash-mapping - size: 13829 - timestamp: 1622899345711 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf - md5: 8ac3367aafb1cc0a068483c580af8015 + size: 15183 + timestamp: 1733331395943 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 license: LicenseRef-Public-Domain purls: [] - size: 122354 - timestamp: 1728047496079 + size: 122921 + timestamp: 1737119101255 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 @@ -11750,146 +12300,160 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 17213 timestamp: 1725784449622 -- conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94 - md5: 0944dc65cb4a9b5b68522c3bb585d41c +- conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/uri-template?source=hash-mapping - size: 23999 - timestamp: 1688655976471 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + size: 23990 + timestamp: 1733323714454 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 98076 - timestamp: 1726496531769 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 - md5: 7c10ec3158d1eb4ddff7007c9101adb0 + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda + sha256: 8ef83b62f9f0b885882d0dd41cbe47c2308f7ac0537fd508a5bbe6d3953a176e + md5: 9098c5cfb418fc0b0204bf2efc1e9afa depends: - - vc14_runtime >=14.38.33135 + - vc14_runtime >=14.42.34438 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17479 - timestamp: 1731710827215 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda - sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49 - md5: 32b37d0cfa80da34548501cdc913a832 + size: 17469 + timestamp: 1741043406253 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + sha256: fb36814355ac12dcb4a55b75b5ef0d49ec219ad9df30d7955f2ace88bd6919c4 + md5: 5fceb7d965d59955888d9a9732719aa8 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34433.* *_23 + - vs2015_runtime 14.42.34438.* *_24 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 754247 - timestamp: 1731710681163 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.27.1-pyhd8ed1ab_0.conda - sha256: 189b935224732267df10dc116bce0835bd76fcdb20c30f560591c92028d513b0 - md5: dae21509d62aa7bf676279ced3edcb3f + size: 751362 + timestamp: 1741043402335 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + sha256: f7b2cd8ee05769e57dab1f2e2206360cb03d15d4290ddb30442711700c430ba6 + md5: 87a2061465e55be9a997dd8cf8b5a578 depends: - - distlib <1,>=0.3.7 - - filelock <4,>=3.12.2 - - platformdirs <5,>=3.9.1 - - python >=3.8 + - distlib >=0.3.7,<1 + - filelock >=3.12.2,<4 + - platformdirs >=3.9.1,<5 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 2965442 - timestamp: 1730204927840 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 - md5: 5c176975ca2b8366abad3c97b3cd1e83 + size: 3520880 + timestamp: 1741337922189 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + sha256: a7104d3d605d191c8ee8d85d4175df3630d61830583494a5d1e62cd9f1260420 + md5: 1dd2e838eb13190ae1f1e2760c036fdc depends: - - vc14_runtime >=14.42.34433 + - vc14_runtime >=14.42.34438 license: BSD-3-Clause license_family: BSD purls: [] - size: 17572 - timestamp: 1731710685291 -- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 - md5: 68f0738df502a14213624b288c60c9ad + size: 17474 + timestamp: 1741043406612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 depends: - - python >=3.8 + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + license: MIT + license_family: MIT + purls: [] + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 + depends: + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/wcwidth?source=hash-mapping - size: 32709 - timestamp: 1704731373922 -- conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac - md5: eb48b812eb4fbb9ff238a6651fdbbcae + size: 32581 + timestamp: 1733231433877 +- conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 + md5: b49f7b291e15494aafb0a7d74806f337 depends: - - python >=3.5 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/webcolors?source=hash-mapping - size: 18378 - timestamp: 1723294800217 -- conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 - md5: daf5160ff9cde3a468556965329085b9 + size: 18431 + timestamp: 1733359823938 +- conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 2841eb5bfc75ce15e9a0054b98dcd64d depends: - - python >=2.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/webencodings?source=hash-mapping - size: 15600 - timestamp: 1694681458271 -- conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - sha256: 44a5e3b97feef24cd719f7851cca9af9799dc9c17d3e0298d5856baab2d682f5 - md5: f372c576b8774922da83cda2b12f9d29 + size: 15496 + timestamp: 1733236131358 +- conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e + md5: 84f8f77f0a9c6ef401ee96611745da8f depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/websocket-client?source=hash-mapping - size: 47066 - timestamp: 1713923494501 -- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_0.conda - sha256: d155adc10f8c96f76d4468dbe37b33b4334dadf5cd4a95841aa009ca9bced5fa - md5: 6372cd99502721bd7499f8d16b56268d + size: 46718 + timestamp: 1733157432924 +- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + sha256: a750202ae2a31d8e5ee5a5c127fcc7fa783cd0fbedbc0bf1ab549a109881fa9f + md5: 237db148cc37a466e4222d589029b53e depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/widgetsnbextension?source=hash-mapping - size: 898656 - timestamp: 1724331433259 -- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_7.conda - sha256: c5297692ab34aade5e21107abaf623d6f93847662e25f655320038d2bfa1a812 - md5: c998c13b2f998af57c3b88c7a47979e0 + size: 898402 + timestamp: 1733128654300 +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 depends: - __win - - python >=3.6 + - python >=3.9 license: LicenseRef-Public-Domain purls: - pkg:pypi/win-inet-pton?source=hash-mapping - size: 9602 - timestamp: 1727796413384 + size: 9555 + timestamp: 1733130678956 - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 sha256: 9df10c5b607dd30e05ba08cbd940009305c75db242476f4e845ea06008b0a283 md5: 1cee351bf20b830d991dbe0bc8cd7dfe @@ -11897,20 +12461,32 @@ packages: license_family: MIT purls: [] size: 1176306 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 - md5: 19608a9656912805b2b9a2f6bd257b04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT purls: [] - size: 58159 - timestamp: 1727531850109 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-h0e40799_1.conda - sha256: 786dc4b9ebaad7dfab8aaed700e4b79dfeaecaf89fef1815ff5c19055d9e2c8c - md5: 78ef693fed85f1bf30d3a15983427c10 + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + purls: [] + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + sha256: bf1d34142b1bf9b5a4eed96bcc77bc4364c0e191405fd30d2f9b48a04d783fd3 + md5: 105cb93a47df9c548e88048dc9cbdbc9 depends: - libgcc >=13 - libwinpthread >=12.0.0.r4.gg4f2fc60ca @@ -11919,75 +12495,73 @@ packages: license: MIT license_family: MIT purls: [] - size: 234740 - timestamp: 1727532401173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c - md5: 05a8ea5f446de33006171a7afe6ae857 + size: 236306 + timestamp: 1734228116846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 + md5: 1c74ff8c35dcadf952a16f752ca5aa49 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.1,<2.0a0 + - xorg-libice >=1.1.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 27516 - timestamp: 1727634669421 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-h0e40799_1.conda - sha256: f9944a672b9e8a043fd8dc417c233ad4e30502e369def2a257cdbdcf5e9463e0 - md5: 27c850e290d5d8c31336c5c5d8d43a88 + size: 27590 + timestamp: 1741896361728 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + sha256: 065d49b0d1e6873ed1238e962f56cb8204c585cdc5c9bd4ae2bf385cadb5bd65 + md5: 570c9a6d9b4909e45d49e9a5daa528de depends: - libgcc >=13 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - ucrt >=10.0.20348.0 - - xorg-libice >=1.1.1,<2.0a0 + - xorg-libice >=1.1.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 96841 - timestamp: 1727635068698 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 - md5: 0b666058a179b744a622d0a4a0c56353 + size: 97096 + timestamp: 1741896840170 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + sha256: 51909270b1a6c5474ed3978628b341b4d4472cd22610e5f22b506855a5e20f67 + md5: db038ce880f100acc74dba10302b5630 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto license: MIT license_family: MIT purls: [] - size: 838308 - timestamp: 1727356837875 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.10-hf48077a_0.conda - sha256: d1d6d2b5d33c35a39f7efacc3d2bc84332f0592d5435628dae89207bddeeaf5e - md5: 97e52b3d384cc7d3be4873bec28f050e + size: 835896 + timestamp: 1741901112627 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + sha256: 3f0854bc592d31a5742c6c4550914a976c89d73b74d052545b418521d21b3043 + md5: c4f435ac09fd41606bba9f0deb12e412 depends: - libgcc >=13 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - libxcb >=1.17.0,<2.0a0 - ucrt >=10.0.20348.0 - - xorg-xorgproto license: MIT license_family: MIT purls: [] - size: 952088 - timestamp: 1727357732462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + size: 951392 + timestamp: 1741902072732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 14679 - timestamp: 1727034741045 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-h0e40799_1.conda - sha256: f44bc6f568a9697b7e1eadc2d00ef5de0fe62efcf5e27e5ecc46f81046082faf - md5: ca66d6f8fe86dd53664e8de5087ef6b1 + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda + sha256: 047836241b2712aab1e29474a6f728647bff3ab57de2806b0bb0a6cf9a2d2634 + md5: 2ffbfae4548098297c033228256eb96e depends: - libgcc >=13 - libwinpthread >=12.0.0.r4.gg4f2fc60ca @@ -11995,8 +12569,49 @@ packages: license: MIT license_family: MIT purls: [] - size: 107925 - timestamp: 1727035280560 + size: 108013 + timestamp: 1734229474049 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + sha256: 753f73e990c33366a91fd42cc17a3d19bb9444b9ca5ff983605fa9e953baf57f + md5: d3c295b50f092ab525ffe3c2aa4b7413 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: MIT + license_family: MIT + purls: [] + size: 13603 + timestamp: 1727884600744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: MIT + license_family: MIT + purls: [] + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + sha256: 43b9772fd6582bf401846642c4635c47a9b0e36ca08116b3ec3df36ab96e0ec0 + md5: b5fcc7172d22516e1f965490e65e33a4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: MIT + license_family: MIT + purls: [] + size: 13217 + timestamp: 1727891438799 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee md5: 8035c64cb77ed555e3f150b7b3972480 @@ -12045,6 +12660,46 @@ packages: purls: [] size: 284715 timestamp: 1727752838922 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a + md5: 17dcc85db3c7886650b8908b183d6876 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + license: MIT + license_family: MIT + purls: [] + size: 47179 + timestamp: 1727799254088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + sha256: 1b9141c027f9d84a9ee5eb642a0c19457c788182a5a73c5a9083860ac5c20a8c + md5: 5e2eb9bf77394fc2e5918beefec9f9ab + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 13891 + timestamp: 1727908521531 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda sha256: a605b43b2622a4cae8df6edc148c02b527da4ea165ec67cabb5c9bc4f3f8ef13 md5: e8b816fb37bc61aa3f1c08034331ef53 @@ -12060,19 +12715,32 @@ packages: purls: [] size: 236112 timestamp: 1727801849623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 - md5: a7a49a8b85122b49214798321e2e96b4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + sha256: ac0f037e0791a620a69980914a77cb6bb40308e26db11698029d6708f5aa8e0d + md5: 2de7f99d6581a4a7adbff607b5c278ca depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-xorgproto + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 license: MIT license_family: MIT purls: [] - size: 37780 - timestamp: 1727529943015 + size: 29599 + timestamp: 1727794874300 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 33005 + timestamp: 1734229037766 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda sha256: c940a6b71a1e59450b01ebfb3e21f3bbf0a8e611e5fbfc7982145736b0f20133 md5: 31baf0ce8ef19f5617be73aee0527618 @@ -12088,62 +12756,20 @@ packages: purls: [] size: 918674 timestamp: 1731861024233 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 - md5: 7c21106b851ec72c037b162c216d8f05 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a + md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxi >=1.7.10,<2.0a0 license: MIT license_family: MIT purls: [] - size: 565425 - timestamp: 1726846388217 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xorgproto-2024.1-h0e40799_1.conda - sha256: 78a7211266821fd98c4a250f28dac7f8a6abbf8bff339990c6969d8d0712f11d - md5: de202fa8beaa5f5d4a085a82913143cd - depends: - - libgcc >=13 - - libwinpthread >=12.0.0.r4.gg4f2fc60ca - - ucrt >=10.0.20348.0 - license: MIT - license_family: MIT - purls: [] - size: 569140 - timestamp: 1726846656126 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 418368 - timestamp: 1660346797927 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 - md5: a72f9d4ea13d55d745ff1ed594747f10 - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 238119 - timestamp: 1660346964847 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 235693 - timestamp: 1660346961024 -- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 - md5: 515d77642eaa3639413c6b1bc3f94219 - depends: - - vc >=14.1,<15 - - vs2015_runtime >=14.16.27033 - license: LGPL-2.1 and GPL-2.0 - purls: [] - size: 217804 - timestamp: 1660346976440 + size: 32808 + timestamp: 1727964811275 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae @@ -12235,167 +12861,108 @@ packages: purls: [] size: 2527503 timestamp: 1731585151036 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/zipp?source=hash-mapping - size: 21702 - timestamp: 1731262194278 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - license: Zlib - license_family: Other - purls: [] - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 - md5: c989e0295dcbdc08106fe5d9e935f0b9 - depends: - - __osx >=10.13 - - libzlib 1.3.1 hd23fc13_2 - license: Zlib - license_family: Other - purls: [] - size: 88544 - timestamp: 1727963189976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - license: Zlib - license_family: Other - purls: [] - size: 77606 - timestamp: 1727963209370 -- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c - md5: be60c4e8efa55fddc17b4131aa47acbd - depends: - - libzlib 1.3.1 h2466b09_2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Zlib - license_family: Other - purls: [] - size: 107439 - timestamp: 1727963788936 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - sha256: a5cf0eef1ffce0d710eb3dffcb07d9d5922d4f7a141abc96f6476b98600f718f - md5: aec590674ba365e50ae83aa2d6e1efae + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda + sha256: 1a824220227f356f35acec5ff6a4418b1ccd0238fd752ceebeb04a0bd37acf0f + md5: 6d229edd907b6bb39961b74e3d52de9c depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.11 - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 417923 - timestamp: 1725305669690 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 + - pkg:pypi/zstandard?source=compressed-mapping + size: 732182 + timestamp: 1741853419018 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + sha256: b4fd6bd1cb87a183a8bbe85b4e87a1e7c51473309d0d82cd88d38fb021bcf41e + md5: d28b82fcc8d1b462b595af4b15a6cdcf depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.11 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 419552 - timestamp: 1725305670210 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311hdf6fcd6_1.conda - sha256: d9bf977b620750049eb60fffca299a701342a2df59bcc2586a79b2f7c5783fa1 - md5: 4fc42d6f85a21b09ee6477f456554df3 + size: 731658 + timestamp: 1741853415477 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda + sha256: 7810fa3c45a93679eb78b49f1a4db0397e644dbb0edc7ff6e956668343f4f67f + md5: 11d2b64d86f2e63f7233335a23936151 depends: - __osx >=10.13 - cffi >=1.11 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 411350 - timestamp: 1725305723486 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - sha256: 2685dde42478fae0780fba5d1f8a06896a676ae105f215d32c9f9e76f3c6d8fd - md5: bd132ba98f3fc0a6067f355f8efe4cb6 + size: 690324 + timestamp: 1741853501630 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + sha256: 5d2635e81ff5d61c87383c62824988154acefeae63f408d03dbefcb80cba5f02 + md5: 493516415601e57f73bda23e91dda742 depends: - __osx >=10.13 - cffi >=1.11 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 410873 - timestamp: 1725305688706 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - sha256: d2f2f1a408e2353fc61d2bf064313270be2260ee212fe827dcf3cfd3754f1354 - md5: 29d320d6450b2948740a9be3761b2e9d + size: 688202 + timestamp: 1741853531183 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda + sha256: 496189ea504358088128df526e545a96d7c8b597bea0747f09bc0e081a67a69b + md5: be18ca5f35d991ab12342a6fc3f7a6f8 depends: - __osx >=11.0 - cffi >=1.11 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 332271 - timestamp: 1725305847224 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 + size: 532580 + timestamp: 1741853536042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + sha256: db7ed45ce0ed42de5b799c094f15c064e5e7e88bbee128f8d15a0565367f3c41 + md5: b0af1b749dbf9621fbea742c2de68ff8 depends: - __osx >=11.0 - cffi >=1.11 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 330788 - timestamp: 1725305806565 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311h53056dc_1.conda - sha256: a93584e6167c3598854a47f3bf8276fa646a3bb4d12fcfc23a54e37d5879f35c - md5: 7d4c123cbb5e6293dd4dd2f8d30f0de4 + - pkg:pypi/zstandard?source=compressed-mapping + size: 531069 + timestamp: 1741853718145 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda + sha256: 78afa8ce76763993a76da1b0120b690cba8926271cc9e0462f66155866817c84 + md5: a4c147aaaf7e284762d7a6acc49e35e5 depends: - cffi >=1.11 - python >=3.11,<3.12.0a0 @@ -12403,17 +12970,15 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 321357 - timestamp: 1725305930669 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - sha256: 3e0c718aa18dcac7f080844dbe0aea41a9cea75083019ce02e8a784926239826 - md5: a92cc3435b2fd6f51463f5a4db5c50b1 + - pkg:pypi/zstandard?source=compressed-mapping + size: 444456 + timestamp: 1741853849446 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + sha256: 17f2abbda821be146b549498fab3d0eb9cafb210e163b983524db91524b8dcb5 + md5: 5028543ffb67666ca4fc3ebd620c97b8 depends: - cffi >=1.11 - python >=3.12,<3.13.0a0 @@ -12421,58 +12986,57 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 320624 - timestamp: 1725305934189 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 + - pkg:pypi/zstandard?source=compressed-mapping + size: 444958 + timestamp: 1741853730076 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 554846 - timestamp: 1714722996770 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda - sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 - md5: 4cb2cd56f039b129bb0e491c1164167e + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + sha256: 60042f68a56124b72c7fedc3c45bf8da7a53665175fcebdf1e248f6d9a59f339 + md5: b6931d7aedc272edf329a632d840e3d9 depends: - - __osx >=10.9 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 498900 - timestamp: 1714723303098 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda - sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 - md5: d96942c06c3e84bfcc5efb038724a7fd + size: 486288 + timestamp: 1740255318890 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 depends: - __osx >=11.0 - - libzlib >=1.2.13,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 405089 - timestamp: 1714723101397 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 - md5: 9a17230f95733c04dc40a2b1e5491d74 + size: 399981 + timestamp: 1740255382232 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + sha256: a59b096b95f20910158c927797e9144ed9c7970f1b4aca58e6d6c8db9f653006 + md5: bf190adcc22f146d8ec66da215c9d78b depends: - - libzlib >=1.2.13,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD purls: [] - size: 349143 - timestamp: 1714723445995 + size: 353182 + timestamp: 1740255407949 diff --git a/pyproject.toml b/pyproject.toml index 4488e0e739..8d4c5d097d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ classifiers = [ requires-python = ">=3.11" dependencies = [ "astor", - "dags", + #"dags", "ipywidgets", "networkx", "numpy", @@ -113,6 +113,11 @@ pygments = "*" pygraphviz = "*" pyyaml = "*" toml = "*" +pytest = "*" +pytest-cov = "*" +pytest-profiling = "*" +pytest-xdist = "*" +snakeviz = ">=2.2.2,<3" # Development Dependencies (pypi) @@ -120,8 +125,12 @@ toml = "*" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -kaleido = "*" pdbp = "*" +dags = {git = "https://github.com/OpenSourceEconomics/dags", rev="00d92a9a080f8a9df5d567ffba2f99604e896b2d"} + + +[tool.pixi.target.unix.pypi-dependencies] +kaleido = "*" [tool.pixi.target.win-64.pypi-dependencies] kaleido = ">=0.1.0.post1,<=0.1.0.post1" @@ -143,10 +152,11 @@ jaxlib = ">=0.4.20" jax = { version = ">=0.4.20", extras = ["cpu"] } jaxlib = ">=0.4.20" -[tool.pixi.feature.test.dependencies] -pytest = "*" -pytest-cov = "*" -pytest-xdist = "*" +# Tasks +# -------------------------------------------------------------------------------------- + +[tool.pixi.feature.test.tasks] +tests = "pytest" # Environments # -------------------------------------------------------------------------------------- @@ -205,6 +215,8 @@ extend-ignore = [ "TRY003", # Avoid specifying long messages outside the exception class "FIX002", # Line contains TODO -- Use stuff from TD area. "PLC2401", # Allow non-ASCII characters in variable names. + "PLC2403", # Allow non-ASCII function names for imports. + "N999", # Allow non-ASCII characters in file names. # Things we are not sure we want # ============================== @@ -232,20 +244,16 @@ exclude = [] [tool.ruff.lint.per-file-ignores] "src/_gettsim_tests/test_rounding.py" = ["PT019"] -"src/_gettsim/benefits/elterngeld.py" = ["E501"] -"src/_gettsim/benefits/kinderzuschl.py" = ["ARG001"] -"src/_gettsim/benefits/unterhalt.py" = ["E501"] -"src/_gettsim/benefits/wohngeld.py" = ["ARG001"] -"src/_gettsim/functions/all_functions_for_docs.py" = ["F401"] -"src/_gettsim/gettsim_typing.py" = ["PGH", "PLR", "SIM114"] +"src/_gettsim/functions/all_functions_for_docs.py" = ["F401", "E501", "F403"] +"src/_gettsim/typing.py" = ["PGH", "PLR", "SIM114"] "src/_gettsim/piecewise_functions.py" = ["PLR"] "src/_gettsim/policy_environment.py" = ["S506", "PLR"] -"src/_gettsim/rente.py" = ["N806", "ARG001"] -"src/_gettsim/social_insurance_contributions/ges_krankenv.py" = ["SIM401"] -"src/_gettsim/tax_transfer.py" = ["ARG001"] -"src/_gettsim/taxes/zu_versteuerndes_eink.py" = ["E501", "ARG001"] -"src/_gettsim/tests/test_tax_transfer.py" = ["E501"] +"src/_gettsim/transfers/*" = ["E501"] +"src/_gettsim/taxes/*" = ["E501"] +"src/_gettsim/taxes/familie/familie.py" = ["E501"] "src/_gettsim/visualization.py" = ["PLR"] +"src/_gettsim_tests/test_synthetic.py" = ["E501"] +"src/_gettsim/config.py" = ["E501"] "docs/**/*.ipynb" = ["T201"] [tool.ruff.lint.pydocstyle] diff --git a/src/_gettsim/aggregation.py b/src/_gettsim/aggregation.py index 9fb4925a6d..1b7c778496 100644 --- a/src/_gettsim/aggregation.py +++ b/src/_gettsim/aggregation.py @@ -38,7 +38,7 @@ class AggregateByGroupSpec: """ aggr: str - source_col: str | None = None + source: str | None = None @dataclass @@ -48,7 +48,7 @@ class AggregateByPIDSpec: """ p_id_to_aggregate_by: str - source_col: str + source: str aggr: str diff --git a/src/_gettsim/combine_functions.py b/src/_gettsim/combine_functions.py new file mode 100644 index 0000000000..b1c75acb45 --- /dev/null +++ b/src/_gettsim/combine_functions.py @@ -0,0 +1,690 @@ +from __future__ import annotations + +import inspect +from typing import TYPE_CHECKING, Literal + +import dags +import dags.tree as dt + +from _gettsim.aggregation import ( + AggregateByGroupSpec, + AggregateByPIDSpec, + all_by_p_id, + any_by_p_id, + count_by_p_id, + grouped_all, + grouped_any, + grouped_count, + grouped_max, + grouped_mean, + grouped_min, + grouped_sum, + max_by_p_id, + mean_by_p_id, + min_by_p_id, + sum_by_p_id, +) +from _gettsim.config import ( + SUPPORTED_GROUPINGS, + TYPES_INPUT_VARIABLES, +) +from _gettsim.function_types import DerivedAggregationFunction, GroupByFunction +from _gettsim.shared import ( + format_errors_and_warnings, + format_list_linewise, + get_name_of_group_by_id, + get_names_of_arguments_without_defaults, + remove_group_suffix, +) +from _gettsim.time_conversion import create_time_conversion_functions + +if TYPE_CHECKING: + from collections.abc import Callable + + from _gettsim.typing import ( + QualNameAggregationSpecsDict, + QualNameDataDict, + QualNameFunctionsDict, + QualNameTargetList, + ) + + +def combine_policy_functions_and_derived_functions( + functions: QualNameFunctionsDict, + aggregation_specs_from_environment: QualNameAggregationSpecsDict, + targets: QualNameTargetList, + data: QualNameDataDict, + top_level_namespace: set[str], +) -> QualNameFunctionsDict: + """Add derived functions to the qualified functions dict. + + Derived functions are time converted functions and aggregation functions (aggregate + by p_id or by group). + + Checks that all targets have a corresponding function in the functions tree or can + be taken from the data. + + Parameters + ---------- + functions + Dict with qualified function names as keys and functions with qualified + arguments as values. + aggregation_specs_from_environment + Dict with qualified aggregation spec names as keys and aggregation specs as + values. + targets + The list of targets with qualified names. + data + Dict with qualified data names as keys and pandas Series as values. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The qualified functions dict with derived functions. + + """ + # Create parent-child relationships + aggregate_by_p_id_functions = _create_aggregation_functions( + functions=functions, + aggregation_functions_to_create=aggregation_specs_from_environment, + top_level_namespace=top_level_namespace, + aggregation_type="p_id", + ) + current_functions = {**aggregate_by_p_id_functions, **functions} + + # Create functions for different time units + time_conversion_functions = create_time_conversion_functions( + functions=current_functions, + data=data, + ) + current_functions = {**time_conversion_functions, **current_functions} + + # Create aggregation functions + aggregate_by_group_functions = _create_aggregate_by_group_functions( + functions=current_functions, + targets=targets, + data=data, + aggregations_from_environment=aggregation_specs_from_environment, + top_level_namespace=top_level_namespace, + ) + current_functions = {**aggregate_by_group_functions, **current_functions} + + _fail_if_targets_not_in_functions(functions=current_functions, targets=targets) + + return current_functions + + +def _create_aggregate_by_group_functions( + functions: QualNameFunctionsDict, + targets: QualNameTargetList, + data: QualNameDataDict, + aggregations_from_environment: QualNameAggregationSpecsDict, + top_level_namespace: set[str], +) -> QualNameFunctionsDict: + """Create aggregation functions.""" + # Create the aggregation functions that were explicitly specified. + aggregation_functions_from_environment = _create_aggregation_functions( + functions=functions, + aggregation_functions_to_create=aggregations_from_environment, + aggregation_type="group", + top_level_namespace=top_level_namespace, + ) + + functions_with_aggregation_functions_from_environment = { + **aggregation_functions_from_environment, + **functions, + } + + # Create derived aggregation functions. + derived_aggregation_specs = _create_derived_aggregations_specs( + functions=functions_with_aggregation_functions_from_environment, + targets=targets, + data=data, + top_level_namespace=top_level_namespace, + ) + aggregation_functions_derived_from_names = _create_aggregation_functions( + functions=functions_with_aggregation_functions_from_environment, + aggregation_functions_to_create=derived_aggregation_specs, + aggregation_type="group", + top_level_namespace=top_level_namespace, + ) + return { + **aggregation_functions_derived_from_names, + **aggregation_functions_from_environment, + } + + +def _create_aggregation_functions( + functions: QualNameFunctionsDict, + aggregation_functions_to_create: QualNameAggregationSpecsDict, + aggregation_type: Literal["group", "p_id"], + top_level_namespace: set[str], +) -> QualNameFunctionsDict: + """Create aggregation functions for one aggregation type. + + Parameters + ---------- + functions + Dict with qualified function names as keys and functions with qualified + arguments as values. + aggregation_functions_to_create + Dict with qualified aggregation spec names as keys and aggregation specs as + values. + aggregation_type + The aggregation type. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The qualified functions dict with derived functions. + """ + + group_by_functions = { + name: func + for name, func in functions.items() + if isinstance(getattr(func, "__wrapped__", func), GroupByFunction) + } + + expected_aggregation_spec_type = ( + AggregateByGroupSpec if aggregation_type == "group" else AggregateByPIDSpec + ) + + aggregation_functions = {} + for target_name, aggregation_spec in aggregation_functions_to_create.items(): + # Skip if aggregation spec is not the current aggregation type + if not isinstance(aggregation_spec, expected_aggregation_spec_type): + continue + + if aggregation_type == "group": + group_by_id_name = get_name_of_group_by_id( + target_name=target_name, + group_by_functions=group_by_functions, + ) + + if not group_by_id_name: + msg = format_errors_and_warnings( + "Name of aggregated column needs to have a suffix " + "indicating the group over which it is aggregated. " + f"{dt.tree_path_from_qual_name(target_name)} does not do so." + ) + raise ValueError(msg) + + derived_func = _create_one_aggregate_by_group_func( + aggregation_target=target_name, + aggregation_spec=aggregation_spec, + group_by_id=group_by_id_name, + functions=functions, + top_level_namespace=top_level_namespace, + ) + else: + derived_func = _create_one_aggregate_by_p_id_func( + aggregation_target=target_name, + aggregation_spec=aggregation_spec, + functions=functions, + top_level_namespace=top_level_namespace, + ) + + aggregation_functions[target_name] = derived_func + + return _annotate_aggregation_functions( + functions=functions, + aggregation_functions=aggregation_functions, + types_input_variables=dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES), + ) + + +def _create_derived_aggregations_specs( + functions: QualNameFunctionsDict, + targets: QualNameTargetList, + data: QualNameDataDict, + top_level_namespace: set[str], +) -> QualNameAggregationSpecsDict: + """Create automatic aggregation specs derived from functions and data. + + Aggregation specifications are created automatically for summation aggregations. + + Example + ------- + If + - `func_hh` is an argument of the functions in `functions`, or a target + - and not represented by a function in `functions` or a data column in + the input data + then an automatic aggregation specification is created for the sum aggregation of + `func` by household. + + Parameters + ---------- + functions + The functions dict with qualified function names as keys and functions as + values. + targets + The list of targets with qualified names. + data + The data dict with qualified data names as keys and pandas Series as values. + + Returns + ------- + The aggregation specifications derived from the functions and data. + """ + potential_aggregation_function_names = { + *targets, + *_get_potential_aggregation_function_names_from_function_arguments( + functions=functions, + ), + } + + # Create source tree for aggregations. Source can be any already existing function + # or data column. + aggregation_sources = { + **functions, + **data, + } + + # Create aggregation specs. + derived_aggregations_specs = {} + for target_name in potential_aggregation_function_names: + # Don't create aggregation functions for unsupported groupings or functions that + # already exist in the source tree. + aggregation_specs_needed = ( + any(target_name.endswith(f"_{g}") for g in SUPPORTED_GROUPINGS) + and target_name not in aggregation_sources + ) + + if aggregation_specs_needed: + derived_aggregations_specs[target_name] = AggregateByGroupSpec( + aggr="sum", + source=_get_name_of_aggregation_source( + target_name=target_name, + top_level_namespace=top_level_namespace, + ), + ) + else: + continue + + return derived_aggregations_specs + + +def _get_potential_aggregation_function_names_from_function_arguments( + functions: QualNameFunctionsDict, +) -> set[str]: + """Get potential aggregation function names from function arguments. + + Parameters + ---------- + functions + Dictionary containing functions to build the DAG. + + Returns + ------- + Set of potential aggregation targets. + """ + current_set = set() + for func in functions.values(): + for name in get_names_of_arguments_without_defaults(func): + current_set.add(name) + return current_set + + +def _select_return_type(aggregation_method: str, source_col_type: type) -> type: + # Find out return type + if (source_col_type == int) and (aggregation_method in ["any", "all"]): + return_type = bool + elif (source_col_type == bool) and (aggregation_method in ["sum"]): + return_type = int + else: + return_type = source_col_type + + return return_type + + +def _create_one_aggregate_by_group_func( + aggregation_target: str, + aggregation_spec: AggregateByGroupSpec, + group_by_id: str, + functions: QualNameFunctionsDict, + top_level_namespace: set[str], +) -> DerivedAggregationFunction: + """Create an aggregation function based on aggregation specification. + + Parameters + ---------- + aggregation_target + Leaf name of the aggregation target. + aggregation_spec + The aggregation specification. + annotations + The annotations for the derived function. + group_by_id + The group-by-identifier. + functions + The functions dict with qualified function names as keys and functions as + values. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The derived function. + + """ + + aggregation_method = aggregation_spec.aggr + source = aggregation_spec.source + + if aggregation_method == "count": + mapper = {"group_by_id": group_by_id} + + def agg_func(group_by_id): + return grouped_count(group_by_id) + + else: + mapper = { + "source": source, + "group_by_id": group_by_id, + } + if aggregation_method == "sum": + + def agg_func(source, group_by_id): + return grouped_sum(source, group_by_id) + + elif aggregation_method == "mean": + + def agg_func(source, group_by_id): + return grouped_mean(source, group_by_id) + + elif aggregation_method == "max": + + def agg_func(source, group_by_id): + return grouped_max(source, group_by_id) + + elif aggregation_method == "min": + + def agg_func(source, group_by_id): + return grouped_min(source, group_by_id) + + elif aggregation_method == "any": + + def agg_func(source, group_by_id): + return grouped_any(source, group_by_id) + + elif aggregation_method == "all": + + def agg_func(source, group_by_id): + return grouped_all(source, group_by_id) + + else: + msg = format_errors_and_warnings( + f"Aggregation method {aggregation_method} is not implemented." + ) + raise ValueError(msg) + + wrapped_func = dt.one_function_without_tree_logic( + function=dags.rename_arguments( + func=agg_func, + mapper=mapper, + ), + tree_path=dt.tree_path_from_qual_name(aggregation_target), + top_level_namespace=top_level_namespace, + ) + + qual_name_source = ( + _get_qual_name_of_source_col( + source=source, + wrapped_func=wrapped_func, + ) + if source + else None + ) + + return DerivedAggregationFunction( + function=wrapped_func, + source=qual_name_source, + source_function=functions.get(qual_name_source, None), + aggregation_target=aggregation_target, + aggregation_method=aggregation_method, + ) + + +def _create_one_aggregate_by_p_id_func( + aggregation_target: str, + aggregation_spec: AggregateByPIDSpec, + functions: QualNameFunctionsDict, + top_level_namespace: set[str], +) -> DerivedAggregationFunction: + """Create one function that links variables across persons. + + Parameters + ---------- + aggregation_target + Name of the aggregation target. + aggregation_spec + The aggregation specification. + functions + The functions dict with qualified function names as keys and functions as + values. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The derived function. + + """ + aggregation_method = aggregation_spec.aggr + p_id_to_aggregate_by = aggregation_spec.p_id_to_aggregate_by + source = aggregation_spec.source if aggregation_method != "count" else None + + if aggregation_method == "count": + mapper = { + "p_id_to_aggregate_by": p_id_to_aggregate_by, + "p_id_to_store_by": "p_id", + } + + def agg_func(p_id_to_aggregate_by, p_id_to_store_by): + return count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) + + else: + mapper = { + "p_id_to_aggregate_by": p_id_to_aggregate_by, + "p_id_to_store_by": "p_id", + "column": source, + } + + if aggregation_method == "sum": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "mean": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "max": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "min": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "any": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + elif aggregation_method == "all": + + def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): + return all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) + + else: + msg = format_errors_and_warnings( + f"Aggregation method {aggregation_method} is not implemented." + ) + raise ValueError(msg) + + wrapped_func = dt.one_function_without_tree_logic( + function=dags.rename_arguments( + func=agg_func, + mapper=mapper, + ), + tree_path=dt.tree_path_from_qual_name(aggregation_target), + top_level_namespace=top_level_namespace, + ) + + qual_name_source = ( + _get_qual_name_of_source_col( + source=source, + wrapped_func=wrapped_func, + ) + if source + else None + ) + + return DerivedAggregationFunction( + function=wrapped_func, + source=qual_name_source, + source_function=functions.get(qual_name_source, None), + aggregation_target=aggregation_target, + aggregation_method=aggregation_method, + ) + + +def _annotate_aggregation_functions( + functions: QualNameFunctionsDict, + types_input_variables: dict[str, type], + aggregation_functions: QualNameFunctionsDict, +) -> QualNameFunctionsDict: + """Annotate aggregation functions. + + Add type annotations to the aggregation functions based on the type annotations of + the source columns and the aggregation method. + + Parameters + ---------- + functions + Dict with qualified function names as keys and functions with qualified + arguments as values. + aggregation_functions + Dict with qualified aggregation function names as keys and aggregation functions + as values. + types_input_variables + Dict with qualified data names as keys and types as values. + + Returns + ------- + The annotated aggregation functions. + + """ + annotated_functions = {} + for aggregation_target, aggregation_function in aggregation_functions.items(): + source = aggregation_function.source + aggregation_method = aggregation_function.aggregation_method + + annotations = {} + if aggregation_method == "count": + annotations["return"] = int + elif source in functions: + source_function = functions[source] + if "return" in source_function.__annotations__: + annotations[source] = source_function.__annotations__["return"] + annotations["return"] = _select_return_type( + aggregation_method, annotations[source] + ) + else: + # TODO(@hmgaudecker): Think about how type annotations of aggregations + # of user-provided input variables are handled + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + pass + elif source in types_input_variables: + annotations[source] = types_input_variables[source] + annotations["return"] = _select_return_type( + aggregation_method, annotations[source] + ) + else: + # TODO(@hmgaudecker): Think about how type annotations of aggregations of + # user-provided input variables are handled + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + pass + + aggregation_function.__annotations__ = annotations + annotated_functions[aggregation_target] = aggregation_function + + return annotated_functions + + +def _fail_if_targets_not_in_functions( + functions: QualNameFunctionsDict, targets: QualNameTargetList +) -> None: + """Fail if some target is not among functions. + + Parameters + ---------- + functions + Dictionary containing functions to build the DAG. + targets + The targets which should be computed. They limit the DAG in the way that only + ancestors of these nodes need to be considered. + + Raises + ------ + ValueError + Raised if any member of `targets` is not among functions. + + """ + targets_not_in_functions_tree = [ + str(dt.tree_path_from_qual_name(n)) for n in targets if n not in functions + ] + if targets_not_in_functions_tree: + formatted = format_list_linewise(targets_not_in_functions_tree) + msg = format_errors_and_warnings( + f"The following targets have no corresponding function:\n\n{formatted}" + ) + raise ValueError(msg) + + +def _get_qual_name_of_source_col( + source: str, + wrapped_func: Callable, +) -> str | None: + """Get the qualified source column name.""" + parameters = inspect.signature(wrapped_func).parameters + matches = [p for p in parameters if p.endswith(source)] + if len(matches) == 1: + return matches[0] + else: + return None + + +def _get_name_of_aggregation_source( + target_name: str, + top_level_namespace: set[str], +) -> str: + """Get the name of the source column for an aggregation target. + + This function allows for source and target name to be from different namespaces. + + Example 1 + --------- + > target_name = "arbeitslosengeld_2__vermögen_bg" + > top_level_namespace = {"vermögen", "arbeitslosengeld_2"} + > _get_name_of_aggregation_source(target_name, top_level_namespace) + "vermögen" + + Example 2 + --------- + > target_name = "arbeitslosengeld_2__vermögen_bg" + > top_level_namespace = {"arbeitslosengeld_2"} + > _get_name_of_aggregation_source(target_name, top_level_namespace) + "arbeitslosengeld_2__vermögen" + """ + leaf_name = remove_group_suffix(dt.tree_path_from_qual_name(target_name)[-1]) + if leaf_name in top_level_namespace: + return leaf_name + else: + return remove_group_suffix(target_name) diff --git a/src/_gettsim/combine_functions_in_tree.py b/src/_gettsim/combine_functions_in_tree.py deleted file mode 100644 index ab912c457d..0000000000 --- a/src/_gettsim/combine_functions_in_tree.py +++ /dev/null @@ -1,682 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Literal - -import flatten_dict -import optree - -from _gettsim.aggregation import ( - AggregateByGroupSpec, - AggregateByPIDSpec, - all_by_p_id, - any_by_p_id, - count_by_p_id, - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, - max_by_p_id, - mean_by_p_id, - min_by_p_id, - sum_by_p_id, -) -from _gettsim.config import ( - QUALIFIED_NAME_SEPARATOR, - SUPPORTED_GROUPINGS, - TYPES_INPUT_VARIABLES, -) -from _gettsim.functions.derived_function import DerivedFunction -from _gettsim.groupings import create_groupings -from _gettsim.shared import ( - format_errors_and_warnings, - format_list_linewise, - get_names_of_arguments_without_defaults, - insert_path_and_value, - partition_tree_by_reference_tree, - remove_group_suffix, - rename_arguments_and_add_annotations, - upsert_tree, -) -from _gettsim.time_conversion import create_time_conversion_functions - -if TYPE_CHECKING: - from _gettsim.gettsim_typing import ( - NestedAggregationSpecDict, - NestedDataDict, - NestedFunctionDict, - NestedTargetDict, - ) - from _gettsim.policy_environment import PolicyEnvironment - - -def combine_policy_functions_and_derived_functions( - environment: PolicyEnvironment, - targets_tree: NestedTargetDict, - data_tree: NestedDataDict, -) -> NestedFunctionDict: - """Create the functions tree including derived functions. - - Create the functions tree by vectorizing all functions, and adding time conversion - functions, aggregation functions, and combinations of these. - - Check that all targets have a corresponding function in the functions tree or can be - taken from the data. - - Parameters - ---------- - environment - The environment containing the functions tree and the specs for aggregation. - targets_tree - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. - data_tree - Names of columns in the input data. - - Returns - ------- - The functions tree including derived functions. - - """ - # Create parent-child relationships - aggregate_by_p_id_functions = _create_aggregation_functions( - functions_tree=environment.functions_tree, - aggregations_tree=environment.aggregation_specs_tree, - aggregation_type="p_id", - ) - current_functions_tree = upsert_tree( - base=aggregate_by_p_id_functions, - to_upsert=environment.functions_tree, - ) - - # Create functions for different time units - time_conversion_functions = create_time_conversion_functions( - functions_tree=current_functions_tree, - data_tree=data_tree, - ) - current_functions_tree = upsert_tree( - base=time_conversion_functions, - to_upsert=current_functions_tree, - ) - - # Create aggregation functions - aggregate_by_group_functions = _create_aggregate_by_group_functions( - functions_tree=current_functions_tree, - targets_tree=targets_tree, - data_tree=data_tree, - aggregations_tree_provided_by_env=environment.aggregation_specs_tree, - ) - current_functions_tree = upsert_tree( - base=aggregate_by_group_functions, - to_upsert=current_functions_tree, - ) - - # Create groupings - groupings = create_groupings() - current_functions_tree = upsert_tree( - base=groupings, - to_upsert=current_functions_tree, - ) - - _fail_if_targets_not_in_functions_tree(current_functions_tree, targets_tree) - - return current_functions_tree - - -def _create_aggregate_by_group_functions( - functions_tree: NestedFunctionDict, - targets_tree: NestedTargetDict, - data_tree: NestedDataDict, - aggregations_tree_provided_by_env: dict[str, Any], -) -> dict[str, DerivedFunction]: - """Create aggregation functions.""" - - # Add automated aggregation specs to aggregations tree - automatically_created_aggregations_tree = _create_derived_aggregations_tree( - functions_tree=functions_tree, - target_tree=targets_tree, - data_tree=data_tree, - ) - - # Add automated aggregation specs to aggregations tree - full_aggregations_tree = upsert_tree( - base=automatically_created_aggregations_tree, - to_upsert=aggregations_tree_provided_by_env, - ) - - return _create_aggregation_functions( - functions_tree=functions_tree, - aggregations_tree=full_aggregations_tree, - aggregation_type="group", - ) - - -def _create_aggregation_functions( - functions_tree: NestedFunctionDict, - aggregations_tree: NestedAggregationSpecDict, - aggregation_type: Literal["group", "p_id"], -) -> NestedFunctionDict: - """Create aggregation functions.""" - - out_tree = {} - - _all_paths, _all_aggregation_specs = optree.tree_flatten_with_path( - aggregations_tree - )[:2] - - expected_aggregation_spec_type = ( - AggregateByGroupSpec if aggregation_type == "group" else AggregateByPIDSpec - ) - - for tree_path, aggregation_spec in zip(_all_paths, _all_aggregation_specs): - # Skip if aggregation spec is not the current aggregation type - if not isinstance(aggregation_spec, expected_aggregation_spec_type): - continue - - annotations = _annotations_for_aggregation( - aggregation_method=aggregation_spec.aggr, - source_col=aggregation_spec.source_col, - namespace=tree_path[:-1], - functions_tree=functions_tree, - types_input_variables=TYPES_INPUT_VARIABLES, - ) - - if aggregation_type == "group": - derived_func = _create_one_aggregate_by_group_func( - aggregation_target=tree_path[-1], - aggregation_method=aggregation_spec.aggr, - source_col=aggregation_spec.source_col, - annotations=annotations, - ) - else: - p_id_to_aggregate_by = aggregation_spec.p_id_to_aggregate_by - derived_func = _create_one_aggregate_by_p_id_func( - aggregation_target=tree_path[-1], - p_id_to_aggregate_by=p_id_to_aggregate_by, - source_col=aggregation_spec.source_col, - aggregation_method=aggregation_spec.aggr, - annotations=annotations, - ) - - out_tree = insert_path_and_value( - base=out_tree, - path_to_insert=tree_path, - value_to_insert=derived_func, - ) - - return out_tree - - -def _create_derived_aggregations_tree( - functions_tree: NestedFunctionDict, - target_tree: NestedTargetDict, - data_tree: NestedDataDict, -) -> NestedAggregationSpecDict: - """Create automatic aggregation specs. - - Aggregation specifications are created automatically for summation aggregations. - - Parameters - ---------- - functions_tree - The functions tree. - target_tree - The target tree. - data_tree - The data tree. - - Returns - ------- - The aggregation specifications derived from the functions and data tree. - - Example - ------- - If - - `func_hh` is an argument of the functions in `functions_tree`, or a target - - and not represented by a function in `functions_tree` or a data column in - the input data - then an automatic aggregation specification is created for the sum aggregation of - `func` by household. - """ - # Create tree of potential aggregation function names - potential_aggregation_function_names = upsert_tree( - base=target_tree, - to_upsert=_get_potential_aggregation_function_names_from_function_arguments( - functions_tree - ), - ) - - # Create source tree for aggregations. Source can be any already existing function - # or data column. - aggregation_source_tree = upsert_tree( - base=functions_tree, - to_upsert=data_tree, - ) - - # Create aggregation specs. - derived_aggregations_tree = {} - for tree_path in optree.tree_paths( - potential_aggregation_function_names, none_is_leaf=True - ): - leaf_name = tree_path[-1] - - # Don't create aggregation functions for unsupported groupings or functions that - # already exist in the source tree. - aggregation_specs_needed = any( - leaf_name.endswith(f"_{g}") for g in SUPPORTED_GROUPINGS - ) and tree_path not in optree.tree_paths(aggregation_source_tree) - - if aggregation_specs_needed: - derived_aggregations_tree = insert_path_and_value( - base=derived_aggregations_tree, - path_to_insert=tree_path, - value_to_insert=AggregateByGroupSpec( - aggr="sum", - source_col=remove_group_suffix(leaf_name), - ), - ) - else: - continue - - return derived_aggregations_tree - - -def _get_potential_aggregation_function_names_from_function_arguments( - functions_tree: NestedFunctionDict, -) -> dict[str, Any]: - """Get potential aggregation function names from function arguments. - - Note: Function accounts for namespaced function arguments, i.e. function arguments - that are specified via their qualified instead of their simple name. - - Parameters - ---------- - functions_tree - Dictionary containing functions to build the DAG. - - Returns - ------- - Dictionary containing potential aggregation targets. - """ - current_tree = {} - paths_of_functions_tree, flat_functions_tree = ( - optree.tree_flatten_with_path(functions_tree) - )[:2] - for func, tree_path in zip(flat_functions_tree, paths_of_functions_tree): - for name in get_names_of_arguments_without_defaults(func): - path_of_function_argument = _get_tree_path_from_source_col_name( - name=name, - namespace=tree_path[:-1], - ) - current_tree = insert_path_and_value( - base=current_tree, - path_to_insert=path_of_function_argument, - ) - return current_tree - - -def _annotations_for_aggregation( - aggregation_method: str, - source_col: str, - namespace: tuple[str], - functions_tree: NestedFunctionDict, - types_input_variables: dict[str, Any], -) -> dict[str, Any]: - """Create annotations for derived aggregation functions.""" - annotations = {} - - path_to_source_col = _get_tree_path_from_source_col_name( - name=source_col, - namespace=namespace, - ) - flat_functions = flatten_dict.flatten(functions_tree) - flat_types_input_variables = flatten_dict.flatten(types_input_variables) - - if aggregation_method == "count": - annotations["return"] = int - elif path_to_source_col in flat_functions: - # Source col is a function in the functions tree - source_function = flat_functions[path_to_source_col] - if "return" in source_function.__annotations__: - annotations[source_col] = source_function.__annotations__["return"] - annotations["return"] = _select_return_type( - aggregation_method, annotations[source_col] - ) - else: - # TODO(@hmgaudecker): Think about how type annotations of aggregations - # of user-provided input variables are handled - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - pass - elif path_to_source_col in flat_types_input_variables: - # Source col is a basic input variable - annotations[source_col] = flat_types_input_variables[path_to_source_col] - annotations["return"] = _select_return_type( - aggregation_method, annotations[source_col] - ) - else: - # TODO(@hmgaudecker): Think about how type annotations of aggregations of - # user-provided input variables are handled - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - pass - return annotations - - -def _select_return_type(aggregation_method: str, source_col_type: type) -> type: - # Find out return type - if (source_col_type == int) and (aggregation_method in ["any", "all"]): - return_type = bool - elif (source_col_type == bool) and (aggregation_method in ["sum"]): - return_type = int - else: - return_type = source_col_type - - return return_type - - -def _create_one_aggregate_by_group_func( # noqa: PLR0912 - aggregation_target: str, - aggregation_method: str, - source_col: str, - annotations: dict[str, Any], -) -> DerivedFunction: - """Create an aggregation function based on aggregation specification. - - Parameters - ---------- - aggregation_target - Name of the aggregation target. - aggregation_method - The aggregation method. - source_col - The source column. - annotations - The annotations for the derived function. - - Returns - ------- - The derived function. - - """ - # Identify grouping level - group_id = None - for g in SUPPORTED_GROUPINGS: - if aggregation_target.endswith(f"_{g}"): - group_id = f"groupings__{g}_id" - if not group_id: - msg = format_errors_and_warnings( - "Name of aggregated column needs to have a suffix " - "indicating the group over which it is aggregated. " - f"The name {aggregation_target} does not do so." - ) - raise ValueError(msg) - - if aggregation_method == "count": - - @rename_arguments_and_add_annotations( - mapper={"group_id": group_id}, annotations=annotations - ) - def aggregate_by_group_func(group_id): - return grouped_count(group_id) - - else: - mapper = { - "source_col": source_col, - "group_id": group_id, - } - if aggregation_method == "sum": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_sum(source_col, group_id) - - elif aggregation_method == "mean": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_mean(source_col, group_id) - - elif aggregation_method == "max": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_max(source_col, group_id) - - elif aggregation_method == "min": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_min(source_col, group_id) - - elif aggregation_method == "any": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_any(source_col, group_id) - - elif aggregation_method == "all": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_group_func(source_col, group_id): - return grouped_all(source_col, group_id) - - else: - msg = format_errors_and_warnings( - f"Aggregation method {aggregation_method} is not implemented." - ) - raise ValueError(msg) - - if aggregation_method == "count": - derived_from = group_id - else: - derived_from = (source_col, group_id) - - return DerivedFunction( - function=aggregate_by_group_func, - leaf_name=aggregation_target, - derived_from=derived_from, - ) - - -def _create_one_aggregate_by_p_id_func( - aggregation_target: str, - p_id_to_aggregate_by: str, - source_col: str, - aggregation_method: str, - annotations: dict[str, Any], -) -> DerivedFunction: - """Create one function that links variables across persons. - - Parameters - ---------- - aggregation_target - Name of the aggregation target. - p_id_to_aggregate_by - The column to aggregate by. - source_col - The source column. - aggregation_method - The aggregation method. - annotations - The annotations for the derived function. - - Returns - ------- - The derived function. - - """ - # Define aggregation func - if aggregation_method == "count": - - @rename_arguments_and_add_annotations( - mapper={ - "p_id_to_aggregate_by": p_id_to_aggregate_by, - "p_id_to_store_by": "groupings__p_id", - }, - annotations=annotations, - ) - def aggregate_by_p_id_func(p_id_to_aggregate_by, p_id_to_store_by): - return count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) - - else: - mapper = { - "p_id_to_aggregate_by": p_id_to_aggregate_by, - "p_id_to_store_by": "groupings__p_id", - "column": source_col, - } - - if aggregation_method == "sum": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "mean": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "max": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "min": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "any": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "all": - - @rename_arguments_and_add_annotations( - mapper=mapper, - annotations=annotations, - ) - def aggregate_by_p_id_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - else: - msg = format_errors_and_warnings( - f"Aggregation method {aggregation_method} is not implemented." - ) - raise ValueError(msg) - - if aggregation_method == "count": - derived_from = p_id_to_aggregate_by - else: - derived_from = (source_col, p_id_to_aggregate_by) - - return DerivedFunction( - function=aggregate_by_p_id_func, - leaf_name=aggregation_target, - derived_from=derived_from, - ) - - -def _get_tree_path_from_source_col_name( - name: str, - namespace: tuple[str], -) -> tuple[str]: - """Get the tree path of a source column name that may be qualified or simple. - - This function returns the tree path of a source column name that may be a qualified - or simple name. If the name is qualified, the path implied by the name is returned. - Else, the current path plus the simple name is returned. - - Parameters - ---------- - name - The qualified or simple name. - namespace - The namespace where 'name' is located. - - Returns - ------- - The path of 'name' in the tree. - """ - if QUALIFIED_NAME_SEPARATOR in name: - # 'name' is already namespaced. - new_tree_path = name.split(QUALIFIED_NAME_SEPARATOR) - else: - # 'name' is not namespaced. - new_tree_path = [*namespace, name] - - return tuple(new_tree_path) - - -def _fail_if_targets_not_in_functions_tree( - functions_tree: NestedFunctionDict, targets_tree: NestedTargetDict -) -> None: - """Fail if some target is not among functions. - - Parameters - ---------- - functions_tree - Dictionary containing functions to build the DAG. - targets_tree - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. - - Raises - ------ - ValueError - Raised if any member of `targets` is not among functions. - - """ - targets_not_in_functions_tree = partition_tree_by_reference_tree( - tree_to_partition=targets_tree, - reference_tree=functions_tree, - )[1] - names_of_targets_not_in_functions = [ - ".".join(path) - for path in optree.tree_paths(targets_not_in_functions_tree, none_is_leaf=True) - ] - if names_of_targets_not_in_functions: - formatted = format_list_linewise(names_of_targets_not_in_functions) - msg = format_errors_and_warnings( - f"The following targets have no corresponding function:\n{formatted}" - ) - raise ValueError(msg) diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index ad08013372..a25203c18d 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -36,15 +36,12 @@ def set_array_backend(backend: str): GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS = 20 GEP_01_CHARACTER_LIMIT_OTHER_COLUMNS = 32 -QUALIFIED_NAME_SEPARATOR = "__" # List of paths to internal functions. # If a path is a directory, all Python files are recursively collected from that folder. PATHS_TO_INTERNAL_FUNCTIONS = [ - RESOURCE_DIR / "social_insurance_contributions", RESOURCE_DIR / "transfers", RESOURCE_DIR / "taxes", - RESOURCE_DIR / "demographic_vars.py", ] INTERNAL_PARAMS_GROUPS = [ @@ -72,12 +69,14 @@ def set_array_backend(backend: str): SUPPORTED_GROUPINGS = { "hh": { "name": "Haushalt", + "namespace": "top-level", "description": "Individuals living together in a household in the Wohngeld" " sense (§5 WoGG).", "potentially_endogenous": False, }, "wthh": { "name": "wohngeldrechtlicher Teilhaushalt", + "namespace": "wohngeld", "description": "The relevant unit for Wohngeld. Members of a household for whom" " the Wohngeld priority check compared to Bürgergeld yields the same result" " ∈ {True, False}.", @@ -85,6 +84,7 @@ def set_array_backend(backend: str): }, "fg": { "name": "Familiengemeinschaft", + "namespace": "arbeitslosengeld_2", "description": "Maximum of two generations, the relevant base unit for" " Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough" " income fend for themselves.", @@ -92,28 +92,33 @@ def set_array_backend(backend: str): }, "bg": { "name": "Bedarfsgemeinschaft", + "namespace": "arbeitslosengeld_2", "description": "Familiengemeinschaft except for children who have enough income" " to fend for themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2", "potentially_endogenous": True, }, "eg": { "name": "Einstandsgemeinschaft / Einstandspartner", + "namespace": "arbeitslosengeld_2", "description": "A couple whose members are deemed to be responsible for each" " other.", "potentially_endogenous": True, }, "ehe": { "name": "Ehepartner", + "namespace": "familie", "description": "Couples that are either married or in a civil union.", "potentially_endogenous": True, }, "sn": { "name": "Steuernummer", + "namespace": "einkommensteuer", "description": "Spouses filing taxes jointly or individuals.", "potentially_endogenous": True, }, } + SUPPORTED_TIME_UNITS = { "y": { "name": "year", @@ -130,131 +135,186 @@ def set_array_backend(backend: str): } DEFAULT_TARGETS = { - "taxes": { - "eink_st": {"eink_st_y_sn": None}, - "soli_st": {"soli_st_y_sn": None}, - "abgelt_st": {"abgelt_st_y_sn": None}, - }, - "transfers": { - "elterngeld": {"elterngeld_m": None}, - "arbeitsl_geld": {"arbeitsl_geld_m": None}, - "kindergeld": {"kindergeld_m": None}, - "arbeitsl_geld_2": {"arbeitsl_geld_2_m_bg": None}, - "kinderzuschl": {"kinderzuschl_m_bg": None}, - "wohngeld": {"wohngeld_m_wthh": None}, - "unterhaltsvors": {"unterhaltsvors_m": None}, - "grunds_im_alter": {"grunds_im_alter_m_eg": None}, - "rente": {"ges_rente_m": None}, - "erwerbsm_rente": {"erwerbsm_rente_m": None}, + "einkommensteuer": { + "betrag_y_sn": None, + "abgeltungssteuer": {"betrag_y_sn": None}, }, - "social_insurance_contributions": { - "arbeitsl_v": { - "sozialv_beitr_arbeitnehmer_m": None, - "arbeitsl_v_beitr_arbeitnehmer_m": None, + "solidaritätszuschlag": {"betrag_y_sn": None}, + "sozialversicherung": { + "arbeitslosen": { + "beitrag": {"betrag_versicherter_m": None}, + "betrag_m": None, + }, + "kranken": {"beitrag": {"betrag_versicherter_m": None}}, + "pflege": {"beitrag": {"betrag_versicherter_m": None}}, + "rente": { + "beitrag": {"betrag_versicherter_m": None}, + "altersrente": {"betrag_m": None}, + "erwerbsminderung": {"betrag_m": None}, }, - "ges_rentenv": {"ges_rentenv_beitr_arbeitnehmer_m": None}, - "ges_krankenv": {"ges_krankenv_beitr_arbeitnehmer_m": None}, - "ges_pflegev": {"ges_pflegev_beitr_arbeitnehmer_m": None}, + "beiträge_versicherter_m": None, }, + "elterngeld": {"betrag_m": None}, + "kindergeld": {"betrag_m": None}, + "arbeitslosengeld_2": {"betrag_m_bg": None}, + "kinderzuschlag": {"betrag_m_bg": None}, + "wohngeld": {"betrag_m_wthh": None}, + "unterhaltsvorschuss": {"betrag_m": None}, + "grundsicherung": {"im_alter": {"betrag_m_eg": None}}, } + TYPES_INPUT_VARIABLES = { - "groupings": { - "p_id": int, - "hh_id": int, - "p_id_elternteil_1": int, - "p_id_elternteil_2": int, - "p_id_kindergeld_empf": int, - "p_id_erziehgeld_empf": int, - "p_id_ehepartner": int, - "p_id_einstandspartner": int, - "p_id_betreuungsk_träger": int, - }, - "basic_inputs": { - "vermögen_bedürft": float, - "eigenbedarf_gedeckt": bool, + "arbeitslosengeld_2": { + "arbeitslosengeld_2_bezug_im_vorjahr": bool, # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once # Bedarfsgemeinschaften are fully endogenous # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + "eigenbedarf_gedeckt": bool, + "p_id_einstandspartner": int, + }, + "familie": { + "alleinerziehend": bool, + "kind": bool, + "p_id_ehepartner": int, + "p_id_elternteil_1": int, + "p_id_elternteil_2": int, + }, + "alter": int, + "arbeitsstunden_w": float, + "behinderungsgrad": int, + "geburtsjahr": int, + "geburtsmonat": int, + "geburtstag": int, + "schwerbehindert_grad_g": bool, + "vermögen": float, + "weiblich": bool, + "wohnort_ost": bool, + "einkommensteuer": { + "abzüge": { + "beitrag_private_rentenversicherung_m": float, + "betreuungskosten_m": float, + "p_id_betreuungskosten_träger": int, + }, + "einkünfte": { + "aus_kapitalvermögen": { + "kapitalerträge_m": float, + }, + "aus_nichtselbstständiger_arbeit": { + "bruttolohn_m": float, + "bruttolohn_vorjahr_m": float, + }, + "aus_selbstständiger_arbeit": { + "betrag_m": float, + }, + "aus_vermietung_und_verpachtung": { + "betrag_m": float, + }, + "ist_selbstständig": bool, + "sonstige": { + "betrag_m": float, + }, + }, "gemeinsam_veranlagt": bool, - "bruttolohn_m": float, - "alter": int, - "weiblich": bool, - "selbstständig": bool, - "wohnort_ost": bool, - "ges_pflegev_hat_kinder": bool, - "eink_selbst_m": float, - "in_priv_krankenv": bool, - "priv_rentenv_beitr_m": float, - "elterngeld_nettoeinkommen_vorjahr_m": float, - "elterngeld_zu_verst_eink_vorjahr_y_sn": float, - "bruttolohn_vorj_m": float, - "arbeitsstunden_w": float, - "geburtsjahr": int, - "geburtstag": int, - "geburtsmonat": int, + }, + "elterngeld": { + "bisherige_bezugsmonate": int, + "claimed": bool, + "nettoeinkommen_vorjahr_m": float, + "zu_versteuerndes_einkommen_vorjahr_y_sn": float, + }, + "erziehungsgeld": { + "budgetsatz": bool, + "p_id_empfänger": int, + }, + "hh_id": int, + "kindergeld": { + "in_ausbildung": bool, + "p_id_empfänger": int, + }, + "lohnsteuer": { + "steuerklasse": int, + }, + "p_id": int, + "sozialversicherung": { + "arbeitslosen": { + "anwartschaftszeit": bool, + "arbeitssuchend": bool, + "monate_durchgängigen_bezugs_von_arbeitslosengeld": float, + "monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren": float, + }, + "kranken": { + "beitrag": { + "privat_versichert": bool, + } + }, + "pflege": { + "beitrag": { + "hat_kinder": bool, + } + }, + "rente": { + "altersrente": { + "für_frauen": { + "pflichtsbeitragsjahre_ab_alter_40": float, + }, + "höchster_bruttolohn_letzte_15_jahre_vor_rente_y": float, + "wegen_arbeitslosigkeit": { + "arbeitslos_für_1_jahr_nach_alter_58_ein_halb": bool, + "pflichtbeitragsjahre_8_von_10": bool, + "vertrauensschutz_1997": bool, + "vertrauensschutz_2004": bool, + }, + }, + "bezieht_rente": bool, + "entgeltpunkte_ost": float, + "entgeltpunkte_west": float, + "erwerbsminderung": { + "teilweise_erwerbsgemindert": bool, + "voll_erwerbsgemindert": bool, + }, + "ersatzzeiten_monate": float, + "freiwillige_beitragsmonate": float, + "grundrente": { + "bewertungszeiten_monate": int, + "grundrentenzeiten_monate": int, + "mean_entgeltpunkte": float, + }, + "jahr_renteneintritt": int, + "kinderberücksichtigungszeiten_monate": float, + "krankheitszeiten_ab_16_bis_24_monate": float, + "monat_renteneintritt": int, + "monate_geringfügiger_beschäftigung": float, + "monate_in_arbeitslosigkeit": float, + "monate_in_arbeitsunfähigkeit": float, + "monate_in_ausbildungssuche": float, + "monate_in_mutterschutz": float, + "monate_in_schulausbildung": float, + "monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit": float, + "pflichtbeitragsmonate": float, + "private_rente_betrag_m": float, + "pflegeberücksichtigungszeiten_monate": float, + }, + }, + "unterhalt": { + "anspruch_m": float, + "tatsächlich_erhaltener_betrag_m": float, + }, + "wohngeld": { "mietstufe": int, - "entgeltp_ost": float, - "entgeltp_west": float, - "kind": bool, - "rentner": bool, - "betreuungskost_m": float, - "kapitaleink_brutto_m": float, - "eink_vermietung_m": float, + }, + "wohnen": { + "baujahr_immobilie_hh": int, + "bewohnt_eigentum_hh": bool, "bruttokaltmiete_m_hh": float, "heizkosten_m_hh": float, - "jahr_renteneintr": int, - "monat_renteneintr": int, - "behinderungsgrad": int, "wohnfläche_hh": float, - "monate_elterngeldbezug": int, - "elterngeld_claimed": bool, - "in_ausbildung": bool, - "alleinerz": bool, - "bewohnt_eigentum_hh": bool, - "immobilie_baujahr_hh": int, - "sonstig_eink_m": float, - "grundr_entgeltp": float, - "grundr_zeiten": int, - "grundr_bew_zeiten": int, - "priv_rente_m": float, - "schwerbeh_g": bool, - "m_pflichtbeitrag": float, - "m_freiw_beitrag": float, - "m_mutterschutz": float, - "m_arbeitsunfähig": float, - "m_krank_ab_16_bis_24": float, - "m_arbeitsl": float, - "m_ausbild_suche": float, - "m_schul_ausbild": float, - "m_geringf_beschäft": float, - "m_alg1_übergang": float, - "m_ersatzzeit": float, - "m_kind_berücks_zeit": float, - "m_pfleg_berücks_zeit": float, - "y_pflichtbeitr_ab_40": float, - "pflichtbeitr_8_in_10": bool, - "arbeitsl_1y_past_585": bool, - "vertra_arbeitsl_1997": bool, - "vertra_arbeitsl_2006": bool, - "höchster_bruttolohn_letzte_15_jahre_vor_rente_y": float, - "anwartschaftszeit": bool, - "arbeitssuchend": bool, - "m_durchg_alg1_bezug": float, - "sozialv_pflicht_5j": float, - "bürgerg_bezug_vorj": bool, - "kind_unterh_anspr_m": float, - "kind_unterh_erhalt_m": float, - "steuerklasse": int, - "budgetsatz_erzieh": bool, - "voll_erwerbsgemind": bool, - "teilw_erwerbsgemind": bool, }, } FOREIGN_KEYS = [ - "p_id_ehepartner", - "p_id_einstandspartner", - "p_id_elternteil_1", - "p_id_elternteil_2", + ("arbeitslosengeld_2", "p_id_einstandspartner"), + ("familie", "p_id_ehepartner"), + ("familie", "p_id_elternteil_1"), + ("familie", "p_id_elternteil_2"), ] diff --git a/src/_gettsim/demographic_vars.py b/src/_gettsim/demographic_vars.py deleted file mode 100644 index a32ecd2b32..0000000000 --- a/src/_gettsim/demographic_vars.py +++ /dev/null @@ -1,332 +0,0 @@ -"""This module computes demographic variables directly on the data. - -These information are used throughout modules of gettsim. - -""" - -import datetime - -import numpy - -from _gettsim.config import SUPPORTED_GROUPINGS - -aggregate_by_p_id_demographic_vars = { - "ges_pflegev_anz_kinder_bis_24_elternteil_1": { - "p_id_to_aggregate_by": "p_id_kinderfreib_empfänger_1", - "source_col": "kind_bis_24", - "aggr": "sum", - }, - "ges_pflegev_anz_kinder_bis_24_elternteil_2": { - "p_id_to_aggregate_by": "p_id_kinderfreib_empfänger_2", - "source_col": "kind_bis_24", - "aggr": "sum", - }, -} - - -def _add_grouping_suffixes_to_keys(group_dict: dict[str, dict]) -> dict[str, dict]: - """Add grouping suffixes to keys of a dictionary. - - Parameters - ---------- - group_dict - Dictionary with keys to be suffixed. - - Returns - ------- - Dictionary with suffixed keys. - """ - out = {} - - for key, value in group_dict.items(): - for suffix in SUPPORTED_GROUPINGS: - new_key = key + "_" + suffix - out[new_key] = value - - return out - - -aggregate_by_group_demographic_vars = _add_grouping_suffixes_to_keys( - { - "anz_erwachsene": {"source_col": "erwachsen", "aggr": "sum"}, - "anz_rentner": {"source_col": "rentner", "aggr": "sum"}, - "anz_kinder": {"source_col": "kind", "aggr": "sum"}, - "anz_personen": {"aggr": "count"}, - "anz_kinder_bis_2": {"source_col": "kind_bis_2", "aggr": "sum"}, - "anz_kinder_bis_5": {"source_col": "kind_bis_5", "aggr": "sum"}, - "anz_kinder_bis_6": {"source_col": "kind_bis_6", "aggr": "sum"}, - "anz_kinder_bis_15": {"source_col": "kind_bis_15", "aggr": "sum"}, - "anz_kinder_bis_17": {"source_col": "kind_bis_17", "aggr": "sum"}, - "alleinerz": {"source_col": "alleinerz", "aggr": "any"}, - "alter_monate_jüngstes_mitglied": {"source_col": "alter_monate", "aggr": "min"}, - "anz_mehrlinge_jüngstes_kind": { - "source_col": "jüngstes_kind_oder_mehrling", - "aggr": "sum", - }, - } -) - - -def kind_bis_2(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 3. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = kind and (alter <= 2) - return out - - -def kind_bis_5(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 6. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = kind and (alter <= 5) - return out - - -def kind_bis_6(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 7. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = kind and (alter <= 6) - return out - - -def kind_bis_15(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 16. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = kind and (alter <= 15) - return out - - -def kind_bis_17(alter: int, kind: bool) -> bool: - """Calculate if underage person. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = kind and (alter <= 17) - return out - - -def kind_bis_24(alter: int) -> bool: - """Child below the age of 25. - - Relevant for the calculation of the long-term care insurance contribution. It does - not matter whether children have a claim on Kindergeld. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - - Returns - ------- - """ - return alter <= 24 - - -def ges_pflegev_anz_kinder_bis_24( - ges_pflegev_anz_kinder_bis_24_elternteil_1: int, - ges_pflegev_anz_kinder_bis_24_elternteil_2: int, -) -> int: - """Number of children under 25 years of age. - Parameters - ---------- - ges_pflegev_anz_kinder_bis_24_elternteil_1 - See :func:`ges_pflegev_anz_kinder_bis_24_elternteil_1`. - ges_pflegev_anz_kinder_bis_24_elternteil_2 - See :func:`ges_pflegev_anz_kinder_bis_24_elternteil_2`. - - Returns - ------- - """ - return ( - ges_pflegev_anz_kinder_bis_24_elternteil_1 - + ges_pflegev_anz_kinder_bis_24_elternteil_2 - ) - - -def erwachsen(kind: bool) -> bool: - """Calculate if adult. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = not kind - return out - - -def erwachsene_alle_rentner_hh(anz_erwachsene_hh: int, anz_rentner_hh: int) -> bool: - """Calculate if all adults in the household are pensioners. - - Parameters - ---------- - anz_erwachsene_hh - See :func:`anz_erwachsene_hh`. - anz_rentner_hh - See :func:`anz_rentner_hh`. - - Returns - ------- - - """ - return anz_erwachsene_hh == anz_rentner_hh - - -def geburtsdatum( - geburtsjahr: int, geburtsmonat: int, geburtstag: int -) -> numpy.datetime64: - """Create date of birth datetime variable. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - geburtstag - See basic input variable :ref:`geburtstag `. - - Returns - ------- - - """ - out = numpy.datetime64( - datetime.datetime(geburtsjahr, geburtsmonat, geburtstag) - ).astype("datetime64[D]") - return out - - -def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> float: - """Calculate age of youngest child in months. - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id `. - geburtsdatum - See :func:`geburtsdatum`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - Returns - ------- - - """ - - # TODO(@hmgaudecker): Remove explicit cast when vectorisation is enabled. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 - age_in_days = elterngeld_params["datum"] - numpy.datetime64(geburtsdatum) - - out = age_in_days / 30.436875 - return out.astype(float) - - -def jüngstes_kind_oder_mehrling( - alter_monate: float, - alter_monate_jüngstes_mitglied_fg: float, - kind: bool, -) -> bool: - """Check if person is the youngest child in the household or a twin, triplet, etc. - of the youngest child. - - # ToDo: replace kind by some age restriction - # ToDo: Check definition as relevant for Elterngeld. Currently, it is calculated as - # ToDo: age not being larger than 0.1 of a month - - Parameters - ---------- - alter_monate - See :func:`alter_monate`. - alter_monate_jüngstes_mitglied_fg - See :func:`alter_monate_jüngstes_mitglied_fg`. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - - """ - out = (alter_monate - alter_monate_jüngstes_mitglied_fg < 0.1) and kind - return out - - -def birthdate_decimal( - geburtsjahr: int, - geburtsmonat: int, -) -> float: - """Combines birthyear and birth month to decimal number of - birthdate with monthly precision, as required for pension - benefit calculation - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - - Returns - ------- - Birthdate with monthly precision as float. - - """ - out = geburtsjahr + (geburtsmonat - 1) / 12 - - return out diff --git a/src/_gettsim/function_types/__init__.py b/src/_gettsim/function_types/__init__.py new file mode 100644 index 0000000000..68b6229c62 --- /dev/null +++ b/src/_gettsim/function_types/__init__.py @@ -0,0 +1,15 @@ +from _gettsim.function_types.derived_function import ( + DerivedAggregationFunction, + DerivedTimeConversionFunction, +) +from _gettsim.function_types.group_by_function import GroupByFunction, group_by_function +from _gettsim.function_types.policy_function import PolicyFunction, policy_function + +__all__ = [ + "policy_function", + "PolicyFunction", + "DerivedAggregationFunction", + "DerivedTimeConversionFunction", + "group_by_function", + "GroupByFunction", +] diff --git a/src/_gettsim/function_types/derived_function.py b/src/_gettsim/function_types/derived_function.py new file mode 100644 index 0000000000..6de0fd7b07 --- /dev/null +++ b/src/_gettsim/function_types/derived_function.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Literal + +import dags.tree as dt + +from _gettsim.function_types.policy_function import PolicyFunction + +if TYPE_CHECKING: + from collections.abc import Callable + + +class DerivedAggregationFunction(PolicyFunction): + """ + A function that is an aggregation of another function. + + Parameters + ---------- + function: + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + aggregation_target: + The qualified name of the aggregation target. + source_function: + The function from which the new function is derived. + source: + The name of the source function or data column. + aggregation_method: + The method of aggregation used. + """ + + def __init__( + self, + *, + function: Callable, + source_function: PolicyFunction + | DerivedTimeConversionFunction + | DerivedAggregationFunction + | None = None, + source: str, + aggregation_target: str, + aggregation_method: Literal["count", "sum", "mean", "min", "max", "any", "all"], + ): + super().__init__( + function=function, + leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], + start_date=source_function.start_date if source_function else None, + end_date=source_function.end_date if source_function else None, + params_key_for_rounding=None, + skip_vectorization=True, + ) + + self.source = source + self.aggregation_method = aggregation_method + + +class DerivedTimeConversionFunction(PolicyFunction): + """ + A function that is a time conversion of another function. + + Parameters + ---------- + function: + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + source_function: + The function from which the new function is derived. + source: + The name of the source function or data column. + conversion_target: + The qualified name of the conversion target. + """ + + def __init__( + self, + *, + function: Callable, + source_function: PolicyFunction + | DerivedTimeConversionFunction + | DerivedAggregationFunction + | None = None, + source: str, + conversion_target: str, + ): + super().__init__( + function=function, + leaf_name=dt.tree_path_from_qual_name(conversion_target)[-1], + start_date=source_function.start_date if source_function else None, + end_date=source_function.end_date if source_function else None, + params_key_for_rounding=None, + skip_vectorization=True, + ) + + self.source = source diff --git a/src/_gettsim/function_types/group_by_function.py b/src/_gettsim/function_types/group_by_function.py new file mode 100644 index 0000000000..9d2e96ce15 --- /dev/null +++ b/src/_gettsim/function_types/group_by_function.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +import inspect +from collections.abc import Callable + + +class GroupByFunction(Callable): + """ + A function that computes endogenous group_by IDs. + + Parameters + ---------- + function: + The group_by function. + """ + + def __init__( + self, + *, + function: Callable, + leaf_name: str | None = None, + ): + self.function = function + self.leaf_name = leaf_name if leaf_name else function.__name__ + + # Expose the signature of the wrapped function for dependency resolution + self.__annotations__ = function.__annotations__ + self.__module__ = function.__module__ + self.__name__ = function.__name__ + self.__signature__ = inspect.signature(self.function) + + def __call__(self, *args, **kwargs): + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> set[str]: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + +def group_by_function() -> GroupByFunction: + """ + Decorator that creates a group_by function from a function. + """ + + def decorator(func: Callable) -> GroupByFunction: + return GroupByFunction(function=func) + + return decorator diff --git a/src/_gettsim/functions/policy_function.py b/src/_gettsim/function_types/policy_function.py similarity index 100% rename from src/_gettsim/functions/policy_function.py rename to src/_gettsim/function_types/policy_function.py diff --git a/src/_gettsim/functions/all_functions_for_docs.py b/src/_gettsim/functions/all_functions_for_docs.py deleted file mode 100644 index b7230459c7..0000000000 --- a/src/_gettsim/functions/all_functions_for_docs.py +++ /dev/null @@ -1,40 +0,0 @@ -"""Import all functions to a central place in order to automatically create the overview -in the documentation.""" - -from _gettsim.demographic_vars import * # noqa: F403 -from _gettsim.social_insurance_contributions.arbeitsl_v import * # noqa: F403 -from _gettsim.social_insurance_contributions.beitr_bemess_grenzen import * # noqa: F403 -from _gettsim.social_insurance_contributions.eink_grenzen import * # noqa: F403 -from _gettsim.social_insurance_contributions.ges_krankenv import * # noqa: F403 -from _gettsim.social_insurance_contributions.ges_pflegev import * # noqa: F403 -from _gettsim.social_insurance_contributions.ges_rentenv import * # noqa: F403 -from _gettsim.taxes.abgelt_st import * # noqa: F403 -from _gettsim.taxes.eink_st import * # noqa: F403 -from _gettsim.taxes.lohnst import * # noqa: F403 -from _gettsim.taxes.soli_st import * # noqa: F403 -from _gettsim.taxes.zu_verst_eink.eink import * # noqa: F403 -from _gettsim.taxes.zu_verst_eink.freibetraege import * # noqa: F403 -from _gettsim.taxes.zu_verst_eink.vorsorgeaufw import * # noqa: F403 -from _gettsim.taxes.zu_verst_eink.zu_verst_eink import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld_2.arbeitsl_geld_2 import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld_2.arbeitsl_geld_2_eink import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld_2.bedarf import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld_2.kindergelduebertrag import * # noqa: F403 -from _gettsim.transfers.arbeitsl_geld_2.kost_unterk import * # noqa: F403 -from _gettsim.transfers.benefit_checks.benefit_checks import * # noqa: F403 -from _gettsim.transfers.benefit_checks.vermoegens_checks import * # noqa: F403 -from _gettsim.transfers.elterngeld import * # noqa: F403 -from _gettsim.transfers.erwerbsm_rente import * # noqa: F403 -from _gettsim.transfers.erziehungsgeld import * # noqa: F403 -from _gettsim.transfers.grundrente import * # noqa: F403 -from _gettsim.transfers.grunds_im_alter import * # noqa: F403 -from _gettsim.transfers.kinderbonus import * # noqa: F403 -from _gettsim.transfers.kindergeld import * # noqa: F403 -from _gettsim.transfers.kinderzuschl.kinderzuschl import * # noqa: F403 -from _gettsim.transfers.kinderzuschl.kinderzuschl_eink import * # noqa: F403 -from _gettsim.transfers.kinderzuschl.kost_unterk import * # noqa: F403 -from _gettsim.transfers.rente import * # noqa: F403 -from _gettsim.transfers.unterhalt import * # noqa: F403 -from _gettsim.transfers.unterhaltsvors import * # noqa: F403 -from _gettsim.transfers.wohngeld import * # noqa: F403 diff --git a/src/_gettsim/functions/derived_function.py b/src/_gettsim/functions/derived_function.py deleted file mode 100644 index 6e6480c674..0000000000 --- a/src/_gettsim/functions/derived_function.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from _gettsim.functions.policy_function import PolicyFunction - -if TYPE_CHECKING: - from collections.abc import Callable - - -class DerivedFunction(PolicyFunction): - """ - A function that is derived from another via aggregation, time conversion, etc. - - Parameters - ---------- - function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - leaf_name: - The leaf name of the function in the functions tree. - derived_from: - The function from which the new function is derived. If the function is derived - from a data column, this should be the column name. - """ - - def __init__( - self, - *, - function: Callable, - leaf_name: str, - derived_from: PolicyFunction | str | tuple[str, str], - ): - super().__init__( - function=function, - leaf_name=leaf_name, - start_date=( - derived_from.start_date - if isinstance(derived_from, PolicyFunction) - else None - ), - end_date=( - derived_from.end_date - if isinstance(derived_from, PolicyFunction) - else None - ), - params_key_for_rounding=None, - skip_vectorization=True, - ) - - self.derived_from = derived_from diff --git a/src/_gettsim/gettsim_typing.py b/src/_gettsim/gettsim_typing.py deleted file mode 100644 index cdcbbb7afd..0000000000 --- a/src/_gettsim/gettsim_typing.py +++ /dev/null @@ -1,154 +0,0 @@ -from typing import Union - -import numpy -import pandas as pd -from pandas.api.types import ( - is_bool_dtype, - is_datetime64_any_dtype, - is_float_dtype, - is_integer_dtype, - is_object_dtype, -) - -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec -from _gettsim.config import numpy_or_jax as np -from _gettsim.functions.derived_function import DerivedFunction -from _gettsim.functions.policy_function import PolicyFunction - -NestedFunctionDict = dict[ - str, Union[PolicyFunction, DerivedFunction, "NestedFunctionDict"] -] -NestedTargetDict = dict[str, Union[None, "NestedTargetDict"]] -NestedInputStructureDict = dict[str, Union[None, "NestedInputStructureDict"]] -NestedDataDict = dict[str, Union[pd.Series, "NestedDataDict"]] -NestedSeriesDict = dict[str, Union[pd.Series, "NestedSeriesDict"]] -NestedArrayDict = dict[str, Union[np.ndarray, "NestedArrayDict"]] -NestedAggregationSpecDict = dict[ - str, Union[AggregateByGroupSpec, AggregateByPIDSpec, "NestedAggregationSpecDict"] -] - - -def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: - """Checks whether used series has already expected internal type. - - Parameters - ---------- - series : pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. - internal_type : TypeVar - One of the internal gettsim types. - - Returns - ------- - Bool - - """ - if (internal_type == float) & (is_float_dtype(series)): - out = True - elif (internal_type == int) & (is_integer_dtype(series)): - out = True - elif (internal_type == bool) & (is_bool_dtype(series)): - out = True - elif (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)): - out = True - else: - out = False - - return out - - -def convert_series_to_internal_type( - series: pd.Series, internal_type: np.dtype -) -> pd.Series: - """Check if data type of series fits to the internal type of gettsim and otherwise - convert data type of series to the internal type of gettsim. - - Parameters - ---------- - series : pd.Series - Some data series. - internal_type : TypeVar - One of the internal gettsim types. - - Returns - ------- - out : adjusted pd.Series - - """ - # Copy input series in out - out = series.copy() - - basic_error_msg = ( - f"Conversion from input type {out.dtype} to {internal_type.__name__} failed." - ) - if is_object_dtype(out): - raise ValueError(basic_error_msg + " Object type is not supported as input.") - else: - # Conversion to float - if internal_type == float: - # Conversion from boolean to float fails - if is_bool_dtype(out): - raise ValueError(basic_error_msg + " This conversion is not supported.") - else: - try: - out = out.astype(float) - except ValueError as e: - raise ValueError(basic_error_msg) from e - - # Conversion to int - elif internal_type == int: - if is_float_dtype(out): - # checking if decimal places are equal to 0, if not return error - if np.array_equal(out, out.astype(np.int64)): - out = out.astype(np.int64) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if all" - " decimal places of input data are equal to 0." - ) - else: - try: - out = out.astype(np.int64) - except ValueError as e: - raise ValueError(basic_error_msg) from e - - # Conversion to boolean - elif internal_type == bool: - # if input data type is integer - if is_integer_dtype(out): - # check if series consists only of 1 or 0 - if len([v for v in out.unique() if v not in [1, 0]]) == 0: - out = out.astype(bool) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if" - " input data exclusively contains the values 1 and 0." - ) - # if input data type is float - elif is_float_dtype(out): - # check if series consists only of 1.0 or 0.0 - if len([v for v in out.unique() if v not in [1, 0]]) == 0: - out = out.astype(bool) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if" - " input data exclusively contains the values 1.0 and 0.0." - ) - - else: - raise ValueError( - basic_error_msg + " Conversion to boolean is only supported for" - " int and float columns." - ) - - # Conversion to DateTime - elif internal_type == np.datetime64: - if not is_datetime64_any_dtype(out): - try: - out = out.astype(np.datetime64) - except ValueError as e: - raise ValueError(basic_error_msg) from e - else: - raise ValueError(f"The internal type {internal_type} is not yet supported.") - - return out diff --git a/src/_gettsim/groupings.py b/src/_gettsim/groupings.py deleted file mode 100644 index 1e5f8c4afb..0000000000 --- a/src/_gettsim/groupings.py +++ /dev/null @@ -1,245 +0,0 @@ -from collections import Counter -from collections.abc import Callable - -import numpy - -from _gettsim.functions.policy_function import policy_function - - -def create_groupings() -> dict[str, Callable]: - return { - "groupings": { - "wthh_id": wthh_id_numpy, - "fg_id": fg_id_numpy, - "bg_id": bg_id_numpy, - "eg_id": eg_id_numpy, - "ehe_id": ehe_id_numpy, - "sn_id": sn_id_numpy, - }, - } - - -@policy_function(skip_vectorization=True, leaf_name="bg_id") -def bg_id_numpy( - fg_id: numpy.ndarray[int], - alter: numpy.ndarray[int], - eigenbedarf_gedeckt: numpy.ndarray[bool], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Bedarfsgemeinschaft for each person. - """ - # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once - # Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - counter = Counter() - result = [] - - for index, current_fg_id in enumerate(fg_id): - current_alter = alter[index] - current_eigenbedarf_gedeckt = eigenbedarf_gedeckt[index] - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - if current_alter < 25 and current_eigenbedarf_gedeckt: - counter[current_fg_id] += 1 - result.append(current_fg_id * 100 + counter[current_fg_id]) - else: - result.append(current_fg_id * 100) - - return numpy.asarray(result) - - -@policy_function(skip_vectorization=True, leaf_name="eg_id") -def eg_id_numpy( - p_id: numpy.ndarray[int], - p_id_einstandspartner: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Einstandsgemeinschaft for each person. - """ - p_id_to_eg_id = {} - next_eg_id = 0 - result = [] - - for index, current_p_id in enumerate(p_id): - current_p_id_einstandspartner = p_id_einstandspartner[index] - - if ( - current_p_id_einstandspartner >= 0 - and current_p_id_einstandspartner in p_id_to_eg_id - ): - result.append(p_id_to_eg_id[current_p_id_einstandspartner]) - continue - - # New Einstandsgemeinschaft - result.append(next_eg_id) - p_id_to_eg_id[current_p_id] = next_eg_id - next_eg_id += 1 - - return numpy.asarray(result) - - -@policy_function(skip_vectorization=True, leaf_name="ehe_id") -def ehe_id_numpy( - p_id: numpy.ndarray[int], - p_id_ehepartner: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Ehe for each person. - """ - p_id_to_ehe_id = {} - next_ehe_id = 0 - result = [] - - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = p_id_ehepartner[index] - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: - result.append(p_id_to_ehe_id[current_p_id_ehepartner]) - continue - - # New Steuersubjekt - result.append(next_ehe_id) - p_id_to_ehe_id[current_p_id] = next_ehe_id - next_ehe_id += 1 - - return numpy.asarray(result) - - -@policy_function(skip_vectorization=True, leaf_name="fg_id") -def fg_id_numpy( # noqa: PLR0913 - p_id: numpy.ndarray[int], - hh_id: numpy.ndarray[int], - alter: numpy.ndarray[int], - p_id_einstandspartner: numpy.ndarray[int], - p_id_elternteil_1: numpy.ndarray[int], - p_id_elternteil_2: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Familiengemeinschaft for each person. - """ - # Build indexes - p_id_to_index = {} - p_id_to_p_ids_children = {} - - for index, current_p_id in enumerate(p_id): - # Fast access from p_id to index - p_id_to_index[current_p_id] = index - - # Fast access from p_id to p_ids of children - current_p_id_elternteil_1 = p_id_elternteil_1[index] - current_p_id_elternteil_2 = p_id_elternteil_2[index] - - if current_p_id_elternteil_1 >= 0: - if current_p_id_elternteil_1 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_p_id_elternteil_1] = [] - p_id_to_p_ids_children[current_p_id_elternteil_1].append(current_p_id) - - if current_p_id_elternteil_2 >= 0: - if current_p_id_elternteil_2 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_p_id_elternteil_2] = [] - p_id_to_p_ids_children[current_p_id_elternteil_2].append(current_p_id) - - p_id_to_fg_id = {} - next_fg_id = 0 - - for index, current_p_id in enumerate(p_id): - # Already assigned a fg_id to this p_id via einstandspartner / parent - if current_p_id in p_id_to_fg_id: - continue - - p_id_to_fg_id[current_p_id] = next_fg_id - - current_hh_id = hh_id[index] - current_p_id_einstandspartner = p_id_einstandspartner[index] - current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) - - # Assign fg to einstandspartner - if current_p_id_einstandspartner >= 0: - p_id_to_fg_id[current_p_id_einstandspartner] = next_fg_id - - # Assign fg to children - for current_p_id_child in current_p_id_children: - child_index = p_id_to_index[current_p_id_child] - child_hh_id = hh_id[child_index] - child_alter = alter[child_index] - child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) - - if ( - child_hh_id == current_hh_id - # TODO (@MImmesberger): Check correct conditions for grown up children - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/509 - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - and child_alter < 25 - and len(child_p_id_children) == 0 - ): - p_id_to_fg_id[current_p_id_child] = next_fg_id - - next_fg_id += 1 - - # Compute result vector - result = [p_id_to_fg_id[current_p_id] for current_p_id in p_id] - return numpy.asarray(result) - - -@policy_function(skip_vectorization=True, leaf_name="sn_id") -def sn_id_numpy( - p_id: numpy.ndarray[int], - p_id_ehepartner: numpy.ndarray[int], - gemeinsam_veranlagt: numpy.ndarray[bool], -) -> numpy.ndarray[int]: - """ - Compute a Steuernummer (ID) for each person / couple. - """ - p_id_to_sn_id = {} - p_id_to_gemeinsam_veranlagt = {} - next_sn_id = 0 - result = [] - - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = p_id_ehepartner[index] - current_gemeinsam_veranlagt = gemeinsam_veranlagt[index] - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: - gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ - current_p_id_ehepartner - ] - - if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner: - message = ( - f"{current_p_id_ehepartner} and {current_p_id} are " - "married, but have different values for " - "gemeinsam_veranlagt." - ) - raise ValueError(message) - - if current_gemeinsam_veranlagt: - result.append(p_id_to_sn_id[current_p_id_ehepartner]) - continue - - # New Steuersubjekt - result.append(next_sn_id) - p_id_to_sn_id[current_p_id] = next_sn_id - p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt - next_sn_id += 1 - - return numpy.asarray(result) - - -@policy_function(skip_vectorization=True, leaf_name="wthh_id") -def wthh_id_numpy( - hh_id: numpy.ndarray[int], - wohngeld_vorrang_bg: numpy.ndarray[bool], - wohngeld_kinderzuschl_vorrang_bg: numpy.ndarray[bool], -) -> numpy.ndarray[int]: - """ - Compute the ID of the wohngeldrechtlicher Teilhaushalt. - """ - result = [] - for index, current_hh_id in enumerate(hh_id): - if wohngeld_vorrang_bg[index] or wohngeld_kinderzuschl_vorrang_bg[index]: - result.append(current_hh_id * 100 + 1) - else: - result.append(current_hh_id * 100) - - return numpy.asarray(result) diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 509b4cb4aa..04f1575eba 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -1,35 +1,29 @@ -import copy +from __future__ import annotations + import functools import inspect import warnings -from typing import Any, Literal, get_args +from typing import TYPE_CHECKING, Any, Literal, get_args import dags -import flatten_dict +import dags.tree as dt import networkx as nx -import optree import pandas as pd -from _gettsim.combine_functions_in_tree import ( +from _gettsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) from _gettsim.config import ( DEFAULT_TARGETS, FOREIGN_KEYS, - SUPPORTED_GROUPINGS, TYPES_INPUT_VARIABLES, ) from _gettsim.config import numpy_or_jax as np -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.gettsim_typing import ( - NestedArrayDict, - NestedDataDict, - NestedFunctionDict, - NestedInputStructureDict, - NestedSeriesDict, - NestedTargetDict, - check_series_has_expected_type, - convert_series_to_internal_type, +from _gettsim.function_types import ( + DerivedAggregationFunction, + DerivedTimeConversionFunction, + GroupByFunction, + PolicyFunction, ) from _gettsim.policy_environment import PolicyEnvironment from _gettsim.shared import ( @@ -37,13 +31,25 @@ assert_valid_gettsim_pytree, format_errors_and_warnings, format_list_linewise, + get_name_of_group_by_id, get_names_of_arguments_without_defaults, merge_trees, - partition_tree_by_reference_tree, - qualified_name_reducer, - qualified_name_splitter, + partition_by_reference_dict, +) +from _gettsim.typing import ( + check_series_has_expected_type, + convert_series_to_internal_type, ) +if TYPE_CHECKING: + from _gettsim.typing import ( + NestedDataDict, + NestedTargetDict, + QualNameDataDict, + QualNameFunctionsDict, + QualNameTargetList, + ) + def compute_taxes_and_transfers( data_tree: NestedDataDict, @@ -66,10 +72,8 @@ def compute_taxes_and_transfers( rounding : bool, default True Indicator for whether rounding should be applied as specified in the law. debug : bool - The debug mode does the following: - 1. All necessary inputs and all computed variables are returned. - 2. If an exception occurs while computing one variable, the exception is - skipped. + If debug is 'True', `compute_taxes_and_transfers` returns the input data tree + along with the computed targets. Returns ------- @@ -77,93 +81,109 @@ def compute_taxes_and_transfers( The computed variables as a tree. """ + # Use default targets if no targets are provided. + targets_tree = targets_tree if targets_tree else DEFAULT_TARGETS + # Check user inputs _fail_if_targets_tree_not_valid(targets_tree) _fail_if_data_tree_not_valid(data_tree) _fail_if_environment_not_valid(environment) - # Use default targets if no targets are provided. - targets_tree = targets_tree if targets_tree else DEFAULT_TARGETS - - # Add derived functions to the functions tree. - functions_tree = combine_policy_functions_and_derived_functions( - environment=environment, - targets_tree=targets_tree, - data_tree=data_tree, + # Transform functions tree to qualified names dict with qualified arguments + top_level_namespace = ( + set(environment.functions_tree.keys()) + | set(data_tree.keys()) + | set(TYPES_INPUT_VARIABLES.keys()) + | set(environment.aggregation_specs_tree.keys()) + ) + functions = dt.functions_without_tree_logic( + functions=environment.functions_tree, top_level_namespace=top_level_namespace ) - ( - functions_tree_overridden, - functions_tree_not_overridden, - ) = partition_tree_by_reference_tree( - tree_to_partition=functions_tree, - reference_tree=data_tree, + targets = dt.qual_names(targets_tree) + data = dt.flatten_to_qual_names(data_tree) + aggregation_specs = dt.flatten_to_qual_names(environment.aggregation_specs_tree) + + # Add derived functions to the qualified functions tree. + functions = combine_policy_functions_and_derived_functions( + functions=functions, + aggregation_specs_from_environment=aggregation_specs, + targets=targets, + data=data, + top_level_namespace=top_level_namespace, ) - _warn_if_functions_overridden_by_data(functions_tree_overridden) - data_tree_with_correct_types = _convert_data_to_correct_types( - data_tree=data_tree, - functions_tree_overridden=functions_tree_overridden, + functions_overridden, functions_not_overridden = partition_by_reference_dict( + to_partition=functions, + reference_dict=data, ) - functions_tree_with_partialled_parameters = _partial_parameters_to_functions( - functions_tree=( - optree.tree_map_with_path( - lambda path, x: _add_rounding_to_function(x, environment.params, path), - functions_tree_not_overridden, - ) - if rounding - else functions_tree_not_overridden - ), - params=environment.params, + _warn_if_functions_overridden_by_data(functions_overridden) + data_with_correct_types = _convert_data_to_correct_types( + data=data, + functions_overridden=functions_overridden, ) - input_structure = dags.create_input_structure_tree( - functions_tree_not_overridden, + functions_with_rounding_specs = ( + _add_rounding_to_functions( + functions=functions_not_overridden, + params=environment.params, + ) + if rounding + else functions_not_overridden + ) + functions_with_partialled_parameters = _partial_parameters_to_functions( + functions=functions_with_rounding_specs, + params=environment.params, ) # Remove unnecessary elements from user-provided data. - input_data_tree = _create_input_data_for_concatenated_function( - data_tree=data_tree_with_correct_types, - functions_tree=functions_tree_with_partialled_parameters, - targets_tree=targets_tree, - input_structure=input_structure, + input_data = _create_input_data_for_concatenated_function( + data=data_with_correct_types, + functions=functions_with_partialled_parameters, + targets=targets, ) - _fail_if_group_variables_not_constant_within_groups(input_data_tree) + _fail_if_group_variables_not_constant_within_groups( + data=input_data, + functions=functions, + ) _fail_if_foreign_keys_are_invalid( - data_tree=input_data_tree, - p_ids=data_tree_with_correct_types.get("groupings", {}).get("p_id", {}), + data=input_data, + p_id=data.get("p_id", None), ) - tax_transfer_function = dags.concatenate_functions_tree( - functions=functions_tree_with_partialled_parameters, - targets=targets_tree, - input_structure=input_structure, - name_clashes="raise", + tax_transfer_function = dags.concatenate_functions( + functions=functions_with_partialled_parameters, + targets=targets, + return_type="dict", + aggregator=None, + enforce_signature=True, ) - results = tax_transfer_function(input_data_tree) + results = tax_transfer_function(**input_data) + + result_tree = dt.unflatten_from_qual_names(results) if debug: - results = merge_trees( - left=results, - right=data_tree_with_correct_types, + result_tree = merge_trees( + left=result_tree, + right=dt.unflatten_from_qual_names(input_data), ) - return results + return result_tree def _convert_data_to_correct_types( - data_tree: NestedDataDict, functions_tree_overridden: NestedFunctionDict -) -> NestedDataDict: - """Convert all leafs of the data tree to the type that is expected by GETTSIM. + data: QualNameDataDict, functions_overridden: QualNameFunctionsDict +) -> QualNameDataDict: + """Convert all data columns to the type that is expected by GETTSIM. Parameters ---------- - data_tree + data Data provided by the user. - functions_tree_overridden + functions_overridden Functions that are overridden by data. Returns @@ -182,32 +202,43 @@ def _convert_data_to_correct_types( " types yourself." ) - flat_data = flatten_dict.flatten(data_tree, reducer=qualified_name_reducer) - flat_internal_types = flatten_dict.flatten( - TYPES_INPUT_VARIABLES, reducer=qualified_name_reducer - ) - flat_functions = flatten_dict.flatten( - functions_tree_overridden, reducer=qualified_name_reducer - ) - - flat_data_with_correct_types = {} + data_with_correct_types = {} - for qualified_name, series in flat_data.items(): + for name, series in data.items(): internal_type = None # Look for column in TYPES_INPUT_VARIABLES - if qualified_name in flat_internal_types: - internal_type = flat_internal_types[qualified_name] + types_qualified_input_variables = dt.flatten_to_qual_names( + TYPES_INPUT_VARIABLES + ) + if name in types_qualified_input_variables: + internal_type = types_qualified_input_variables[name] # Look for column in functions_tree_overridden - elif qualified_name in flat_functions: - func = flat_functions[qualified_name] - if hasattr(func, "__annotations__") and func.skip_vectorization: + elif name in functions_overridden: + func = functions_overridden[name] + func_is_group_by_function = isinstance( + getattr(func, "__wrapped__", func), GroupByFunction + ) + func_is_policy_function = isinstance( + getattr(func, "__wrapped__", func), PolicyFunction + ) and not isinstance( + getattr(func, "__wrapped__", func), DerivedAggregationFunction + ) + skip_vectorization = ( + func.skip_vectorization if func_is_policy_function else True + ) + return_annotation_is_array = ( + func_is_group_by_function or func_is_policy_function + ) and skip_vectorization + if return_annotation_is_array: # Assumes that things are annotated with numpy.ndarray([dtype]), might # require a change if using proper numpy.typing. Not changing for now # as we will likely switch to JAX completely. internal_type = get_args(func.__annotations__["return"])[0] - else: + elif "return" in func.__annotations__: internal_type = func.__annotations__["return"] + else: + pass else: pass @@ -219,15 +250,14 @@ def _convert_data_to_correct_types( converted_leaf = convert_series_to_internal_type( series=series, internal_type=internal_type ) - flat_data_with_correct_types[qualified_name] = converted_leaf + data_with_correct_types[name] = converted_leaf collected_conversions.append( - f" - {qualified_name} from {series.dtype} " - f"to {internal_type.__name__}" + f" - {name} from {series.dtype} " f"to {internal_type.__name__}" ) except ValueError as e: - collected_errors.append(f"\n - {qualified_name}: {e}") + collected_errors.append(f"\n - {name}: {e}") else: - flat_data_with_correct_types[qualified_name] = series + data_with_correct_types[name] = series # If any error occured raise Error if len(collected_errors) > 1: @@ -240,7 +270,6 @@ def _convert_data_to_correct_types( """ collected_errors = "\n".join(collected_errors) raise ValueError(format_errors_and_warnings(collected_errors + msg)) - # Otherwise raise warning which lists all successful conversions elif len(collected_conversions) > 1: collected_conversions = format_list_linewise(collected_conversions) @@ -249,81 +278,64 @@ def _convert_data_to_correct_types( stacklevel=2, ) - return flatten_dict.unflatten( - flat_data_with_correct_types, - splitter=qualified_name_splitter, - ) + return data_with_correct_types def _create_input_data_for_concatenated_function( - data_tree: NestedSeriesDict, - functions_tree: NestedFunctionDict, - targets_tree: NestedTargetDict, - input_structure: NestedInputStructureDict, -) -> NestedArrayDict: + data: QualNameDataDict, + functions: QualNameFunctionsDict, + targets: QualNameTargetList, +) -> QualNameDataDict: """Create input data for the concatenated function. - 1. Check that all root nodes are present in the user-provided data tree. - 2. Get only part of the data tree that is needed for the concatenated function. + 1. Check that all root nodes are present in the user-provided data. + 2. Get only part of the data that is needed for the concatenated function. 3. Convert pandas.Series to numpy.array. Parameters ---------- - data_tree + data Data provided by the user. - functions_tree + functions Nested function dictionary. - targets_tree + targets Targets provided by the user. - input_structure - Tree representing the input structure. + Returns ------- - Data which can be used to calculate taxes and transfers. + Inputs for the concatenated function. """ # Create dag using processed functions - dag = dags.dag_tree.create_dag_tree( - functions=functions_tree, - targets=targets_tree, - input_structure=input_structure, - name_clashes="raise", - ) + dag = dags.create_dag(functions=functions, targets=targets) # Create root nodes tree - root_nodes_view = nx.subgraph_view(dag, filter_node=lambda n: dag.in_degree(n) == 0) - root_nodes_tree = flatten_dict.unflatten( - {node: None for node in root_nodes_view.nodes}, - splitter=qualified_name_splitter, - ) + root_nodes = nx.subgraph_view( + dag, filter_node=lambda n: dag.in_degree(n) == 0 + ).nodes _fail_if_root_nodes_are_missing( - functions_tree=functions_tree, - data_tree=data_tree, - root_nodes_tree=root_nodes_tree, + functions=functions, + data=data, + root_nodes=root_nodes, ) # Get only part of the data tree that is needed - input_data_tree = partition_tree_by_reference_tree( - tree_to_partition=data_tree, - reference_tree=root_nodes_tree, - )[0] - - # Convert to numpy.ndarray - return optree.tree_map(lambda x: x.to_numpy(), input_data_tree) + return {k: np.array(v) for k, v in data.items() if k in root_nodes} def _partial_parameters_to_functions( - functions_tree: NestedFunctionDict, + functions: QualNameFunctionsDict, params: dict[str, Any], -) -> NestedFunctionDict: +) -> QualNameFunctionsDict: """Round and partial parameters into functions. Parameters ---------- - functions_tree - The functions tree. + functions + The functions dict with qualified function names as keys and functions as + values. params Dictionary of parameters. @@ -335,34 +347,33 @@ def _partial_parameters_to_functions( # Partial parameters to functions such that they disappear in the DAG. # Note: Needs to be done after rounding such that dags recognizes partialled # parameters. - function_leafs, tree_spec = optree.tree_flatten(functions_tree) - processed_functions = [] - for function in function_leafs: + processed_functions = {} + for name, function in functions.items(): arguments = get_names_of_arguments_without_defaults(function) partial_params = { - i: params[i[:-7]] - for i in arguments - if i.endswith("_params") and i[:-7] in params + arg: params[key] + for arg in arguments + for key in params + if arg.endswith(f"{key}_params") } if partial_params: - processed_functions.append(functools.partial(function, **partial_params)) + processed_functions[name] = functools.partial(function, **partial_params) else: - processed_functions.append(function) + processed_functions[name] = function - return optree.tree_unflatten(tree_spec, processed_functions) + return processed_functions -def _add_rounding_to_function( - input_function: PolicyFunction, +def _add_rounding_to_functions( + functions: QualNameFunctionsDict, params: dict[str, Any], - path: set[str], -) -> PolicyFunction: +) -> QualNameFunctionsDict: """Add appropriate rounding of outputs to function. Parameters ---------- - input_function : PolicyFunction - Function to which rounding should be added. + functions + Functions to which rounding should be added. params : dict Dictionary of parameters @@ -371,56 +382,60 @@ def _add_rounding_to_function( Function with rounding added. """ - func = copy.deepcopy(input_function) - nice_name = ".".join(path) - qualified_name = "__".join(path) - - if input_function.params_key_for_rounding: - params_key = func.params_key_for_rounding - # Check if there are any rounding specifications. - if not ( - params_key in params - and "rounding" in params[params_key] - and qualified_name in params[params_key]["rounding"] - ): - raise KeyError( - KeyErrorMessage( - f""" - Rounding specifications for function {nice_name} are expected - in the parameter dictionary at:\n - [{params_key!r}]['rounding'][{qualified_name!r}].\n - These nested keys do not exist. If this function should not be - rounded, remove the respective decorator. - """ + rounded_functions = {} + for name, func in functions.items(): + if getattr(func, "params_key_for_rounding", False): + params_key = func.params_key_for_rounding + # Check if there are any rounding specifications in params files. + if not ( + params_key in params + and "rounding" in params[params_key] + and name in params[params_key]["rounding"] + ): + path = dt.tree_path_from_qual_name(name) + raise KeyError( + KeyErrorMessage( + f""" + Rounding specifications for function + + {path} + + are expected in the parameter dictionary at:\n + [{params_key!r}]['rounding'][{name!r}].\n + These nested keys do not exist. If this function should not be + rounded, remove the respective decorator. + """ + ) ) - ) - rounding_spec = params[params_key]["rounding"][qualified_name] - # Check if expected parameters are present in rounding specifications. - if not ("base" in rounding_spec and "direction" in rounding_spec): - raise KeyError( - KeyErrorMessage( - "Both 'base' and 'direction' are expected as rounding " - "parameters in the parameter dictionary. \n " - "At least one of them is missing at:\n" - f"[{params_key!r}]['rounding'][{qualified_name!r}]." + rounding_spec = params[params_key]["rounding"][name] + # Check if expected parameters are present in rounding specifications. + if not ("base" in rounding_spec and "direction" in rounding_spec): + raise KeyError( + KeyErrorMessage( + "Both 'base' and 'direction' are expected as rounding " + "parameters in the parameter dictionary. \n " + "At least one of them is missing at:\n" + f"[{params_key!r}]['rounding'][{name!r}]." + ) ) - ) - # Add rounding. - func = _apply_rounding_spec( - base=rounding_spec["base"], - direction=rounding_spec["direction"], - to_add_after_rounding=rounding_spec.get("to_add_after_rounding", 0), - path=path, - )(func) + # Add rounding. + rounded_functions[name] = _apply_rounding_spec( + base=rounding_spec["base"], + direction=rounding_spec["direction"], + to_add_after_rounding=rounding_spec.get("to_add_after_rounding", 0), + name=name, + )(func) + else: + rounded_functions[name] = func - return func + return rounded_functions def _apply_rounding_spec( base: float, direction: Literal["up", "down", "nearest"], to_add_after_rounding: float, - path: set[str], + name: str, ) -> callable: """Decorator to round the output of a function. @@ -432,15 +447,16 @@ def _apply_rounding_spec( Whether the series should be rounded up, down or to the nearest number to_add_after_rounding Number to be added after the rounding step - path: - Path to the function to be rounded. + name: + Name of the function to be rounded. Returns ------- Series with (potentially) rounded numbers """ - nice_name = ".".join(path) + + path = dt.tree_path_from_qual_name(name) def inner(func): # Make sure that signature is preserved. @@ -450,13 +466,11 @@ def wrapper(*args, **kwargs): # Check inputs. if type(base) not in [int, float]: - raise ValueError( - f"base needs to be a number, got {base!r} for " f"{nice_name}" - ) + raise ValueError(f"base needs to be a number, got {base!r} for {path}") if type(to_add_after_rounding) not in [int, float]: raise ValueError( f"Additive part needs to be a number, got" - f" {to_add_after_rounding!r} for {nice_name}" + f" {to_add_after_rounding!r} for {path}" ) if direction == "up": @@ -468,7 +482,7 @@ def wrapper(*args, **kwargs): else: raise ValueError( "direction must be one of 'up', 'down', or 'nearest'" - f", got {direction!r} for {nice_name}" + f", got {direction!r} for {path}" ) rounded_out += to_add_after_rounding @@ -514,7 +528,8 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: def _fail_if_group_variables_not_constant_within_groups( - data_tree: NestedDataDict, + data: QualNameDataDict, + functions: QualNameFunctionsDict, ) -> None: """ Check that group variables are constant within each group. @@ -524,37 +539,41 @@ def _fail_if_group_variables_not_constant_within_groups( Parameters ---------- - data_tree - Nested dictionary with pandas.Series as leaf nodes. + data + Dictionary of data. + functions + Dictionary of functions. """ - # Extract group IDs from the 'groupings' branch. - grouping_ids_in_data_tree = data_tree.get("groupings", {}) - - def faulty_leaf(path, leaf): - leaf_name = path[-1] - for grouping in SUPPORTED_GROUPINGS: - id_name = f"{grouping}_id" - if leaf_name.endswith(grouping) and id_name in grouping_ids_in_data_tree: - # Retrieve the corresponding group ID series from the data tree. - group_id_series = grouping_ids_in_data_tree.get(id_name) - # Group the leaf's series by the group ID and count unique values. - unique_counts = leaf.groupby(group_id_series).nunique(dropna=False) - if not (unique_counts == 1).all(): - return True - # No further check is needed for this leaf. - break - return False - - faulty_leaves_tree = optree.tree_map_with_path(faulty_leaf, data_tree) - if optree.tree_any(faulty_leaves_tree): - paths, leaves = optree.tree_flatten_with_path(faulty_leaves_tree) - faulty = "\n".join( - f"{'.'.join(paths[i])}" for i, leaf in enumerate(leaves) if leaf + group_by_functions = { + k: v + for k, v in functions.items() + if isinstance(getattr(v, "__wrapped__", v), GroupByFunction) + } + + faulty_data_columns = [] + + for name, data_column in data.items(): + group_by_id = get_name_of_group_by_id( + target_name=name, + group_by_functions=group_by_functions, ) + if group_by_id in data: + group_by_id_series = pd.Series(data[group_by_id]) + leaf_series = pd.Series(data_column) + unique_counts = leaf_series.groupby(group_by_id_series).nunique( + dropna=False + ) + if not (unique_counts == 1).all(): + faulty_data_columns.append(name) + + if faulty_data_columns: + formatted = format_list_linewise(faulty_data_columns) msg = format_errors_and_warnings( f"""The following data inputs do not have a unique value within - each group defined by the provided grouping IDs:\n - {faulty} + each group defined by the provided grouping IDs: + + {formatted} + To fix this error, assign the same value to each group. """ ) @@ -563,19 +582,19 @@ def faulty_leaf(path, leaf): def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: """Check that pid is unique.""" - p_id_col = data_tree.get("groupings", {}).get("p_id", None) - if p_id_col is None: + p_id = data_tree.get("p_id", None) + if p_id is None: raise ValueError("The input data must contain the p_id.") # Check for non-unique p_ids p_id_counts = {} - for p_id in p_id_col: - if p_id in p_id_counts: - p_id_counts[p_id] += 1 + for i in p_id: + if i in p_id_counts: + p_id_counts[i] += 1 else: - p_id_counts[p_id] = 1 + p_id_counts[i] = 1 - non_unique_p_ids = [p_id for p_id, count in p_id_counts.items() if count > 1] + non_unique_p_ids = [i for i, count in p_id_counts.items() if count > 1] if non_unique_p_ids: message = ( @@ -586,8 +605,8 @@ def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: def _fail_if_foreign_keys_are_invalid( - data_tree: NestedDataDict, - p_ids: pd.Series, + data: QualNameDataDict, + p_id: pd.Series, ) -> None: """ Check that all foreign keys are valid. @@ -595,48 +614,42 @@ def _fail_if_foreign_keys_are_invalid( Foreign keys must point to an existing `p_id` in the input data and must not refer to the `p_id` of the same row. """ - grouping_ids = data_tree.get("groupings", {}) - valid_ids = set(p_ids) | {-1} + valid_ids = set(p_id) | {-1} - def faulty_leaf(path, leaf): - leaf_name = path[-1] - foreign_key_col = leaf_name in FOREIGN_KEYS + for name, data_column in data.items(): + foreign_key_col = dt.tree_path_from_qual_name(name) in FOREIGN_KEYS + path = dt.tree_path_from_qual_name(name) if not foreign_key_col: - return leaf + continue # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in leaf): + if not all(i in valid_ids for i in data_column): message = format_errors_and_warnings( f""" - The following {".".join(path)}s are not a valid p_id in the input - data: {[i for i in leaf if i not in valid_ids]}. + For {path}, the following are not a valid p_id in the input + data: {[i for i in data_column if i not in valid_ids]}. """ ) raise ValueError(message) - # Referenced `p_id` must not be the same as the `p_id` of the same row - equal_to_pid_in_same_row = [i for i, j in zip(leaf, p_ids) if i == j] + equal_to_pid_in_same_row = [i for i, j in zip(data_column, p_id) if i == j] if any(equal_to_pid_in_same_row): message = format_errors_and_warnings( f""" - The following {".".join(path)}s are equal to the p_id in the same - row: {[i for i, j in zip(leaf, p_ids) if i == j]}. + For {path}, the following are equal to the p_id in the same + row: {[i for i, j in zip(data_column, p_id) if i == j]}. """ ) raise ValueError(message) - optree.tree_map_with_path(faulty_leaf, grouping_ids) - def _warn_if_functions_overridden_by_data( - functions_tree_overridden: NestedFunctionDict, + functions_overridden: QualNameFunctionsDict, ) -> None: """Warn if functions are overridden by data.""" - tree_paths = optree.tree_paths(functions_tree_overridden) - formatted_list = format_list_linewise([".".join(path) for path in tree_paths]) - if len(formatted_list) > 0: + if len(functions_overridden) > 0: warnings.warn( - FunctionsAndColumnsOverlapWarning(formatted_list), + FunctionsAndColumnsOverlapWarning(functions_overridden.keys()), stacklevel=3, ) @@ -696,9 +709,9 @@ def __init__(self, columns_overriding_functions: set[str]) -> None: def _fail_if_root_nodes_are_missing( - functions_tree: NestedFunctionDict, - root_nodes_tree: NestedTargetDict, - data_tree: NestedDataDict, + functions: QualNameFunctionsDict, + data: QualNameDataDict, + root_nodes: list[str], ) -> None: """Fail if root nodes are missing. @@ -707,11 +720,11 @@ def _fail_if_root_nodes_are_missing( Parameters ---------- - functions_tree - Dictionary of functions. - root_nodes_tree - Dictionary of root nodes. - data_tree + functions + Dictionary of functions that are overridden by data. + root_nodes + List of root nodes. + data Dictionary of data. Raises @@ -719,30 +732,32 @@ def _fail_if_root_nodes_are_missing( ValueError If root nodes are missing. """ - flat_root_nodes = flatten_dict.flatten(root_nodes_tree) - flat_data = flatten_dict.flatten(data_tree) - flat_functions = flatten_dict.flatten(functions_tree) missing_nodes = [] - for node in flat_root_nodes: - if node in flat_functions: - func = flat_functions[node] + for node in root_nodes: + if node in functions: + func = functions[node] if _func_depends_on_parameters_only(func): # Function depends on parameters only, so it does not have to be present # in the data tree. continue - elif node in flat_data: + elif node in data: # Root node is present in the data tree. continue else: - missing_nodes.append(".".join(node)) + missing_nodes.append(str(node)) if missing_nodes: formatted = format_list_linewise(missing_nodes) raise ValueError(f"The following data columns are missing.\n{formatted}") -def _func_depends_on_parameters_only(func: PolicyFunction) -> bool: +def _func_depends_on_parameters_only( + func: PolicyFunction + | DerivedAggregationFunction + | DerivedTimeConversionFunction + | GroupByFunction, +) -> bool: """Check if a function depends on parameters only.""" return ( len( diff --git a/src/_gettsim/functions/loader.py b/src/_gettsim/loader.py similarity index 83% rename from src/_gettsim/functions/loader.py rename to src/_gettsim/loader.py index c8a93f3053..a71be0636d 100644 --- a/src/_gettsim/functions/loader.py +++ b/src/_gettsim/loader.py @@ -1,24 +1,30 @@ -import datetime +from __future__ import annotations + import importlib.util import inspect import itertools import sys -from pathlib import Path -from types import ModuleType +from typing import TYPE_CHECKING -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec from _gettsim.config import ( PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR, ) -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.gettsim_typing import NestedAggregationSpecDict, NestedFunctionDict +from _gettsim.function_types import GroupByFunction, PolicyFunction from _gettsim.shared import ( create_tree_from_path_and_value, insert_path_and_value, merge_trees, ) +if TYPE_CHECKING: + import datetime + from pathlib import Path + from types import ModuleType + + from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec + from _gettsim.typing import NestedAggregationSpecDict, NestedFunctionDict + def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: """ @@ -39,14 +45,12 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: ------- A tree of active PolicyFunctions. """ - paths_to_policy_functions = _find_python_files_recursively( - PATHS_TO_INTERNAL_FUNCTIONS - ) + paths_to_functions = _find_python_files_recursively(PATHS_TO_INTERNAL_FUNCTIONS) functions_tree = {} - for path in paths_to_policy_functions: - new_functions_tree = get_active_policy_functions_tree_from_module( + for path in paths_to_functions: + new_functions_tree = get_active_functions_tree_from_module( path=path, date=date, package_root=RESOURCE_DIR ) @@ -58,12 +62,12 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: return functions_tree -def get_active_policy_functions_tree_from_module( +def get_active_functions_tree_from_module( path: Path, package_root: Path, date: datetime.date, -) -> dict[str, PolicyFunction]: - """Extract all active PolicyFunctions from a module. +) -> dict[str, PolicyFunction | GroupByFunction]: + """Extract all active PolicyFunctions and GroupByFunctions from a module. Parameters ---------- @@ -76,7 +80,7 @@ def get_active_policy_functions_tree_from_module( Returns ------- - A nested dictionary of active PolicyFunctions with their leaf names as keys. + The tree of active PolicyFunctions and GroupByFunctions. """ module = _load_module(path, package_root) module_name = _convert_path_to_importable_module_name(path, package_root) @@ -94,9 +98,16 @@ def get_active_policy_functions_tree_from_module( active_policy_functions = { func.leaf_name: func for func in policy_functions if func.is_active(date) } + + group_by_functions = { + func.leaf_name: func + for _, func in all_functions_in_module + if isinstance(func, GroupByFunction) + } + return create_tree_from_path_and_value( path=_convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR), - value=active_policy_functions, + value={**active_policy_functions, **group_by_functions}, ) @@ -308,27 +319,5 @@ def _load_aggregation_specs_from_module( ------- Loaded dictionaries. """ - # TODO(@MImmesberger): Temporary solution. Dataclasses will be applied to all - # modules in the renaming PR. Then, 'aggregation_specs_in_module' will be a list of - # dictionaries. - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/805 module = _load_module(path, package_root) - aggregation_specs_in_module = { # Will become a list in renamings PR - name: member - for name, member in inspect.getmembers(module) - if isinstance(member, dict) - and name.startswith(("aggregate_by_group_", "aggregate_by_p_id_")) - } - - out = {} - - # Temporary solution. - for type_name, specs_for_type in aggregation_specs_in_module.items(): - for name, spec in specs_for_type.items(): - out[name] = ( - AggregateByGroupSpec(**spec) - if type_name.startswith("aggregate_by_group_") - else AggregateByPIDSpec(**spec) - ) - - return out + return getattr(module, "aggregation_specs", {}) diff --git a/src/_gettsim/parameters/eink_st.yaml b/src/_gettsim/parameters/eink_st.yaml index 4cda46225d..e03748465d 100644 --- a/src/_gettsim/parameters/eink_st.yaml +++ b/src/_gettsim/parameters/eink_st.yaml @@ -286,9 +286,11 @@ rente_ertragsanteil: rate_linear: 0.0 intercept_at_lower_threshold: 1 rounding: - eink_st_y_sn: - note: - en: Starting date unclear + einkommensteuer__betrag_y_sn: + 1900-01-01: + base: 1 + direction: down + reference: Added temporarily, remove when fixing # 823. 1984-01-01: base: 1 direction: down @@ -297,12 +299,14 @@ rounding: base: 1 direction: down reference: § 32a Abs. 1 S. 6 EStG - zu_verst_eink_y_sn: + einkommensteuer__zu_versteuerndes_einkommen_y_sn: note: en: before 2002 base and to_add_after_rounding were converted from DM to EUR - 1981-01-01: + 1900-01-01: base: 27.609762 direction: down + to_add_after_rounding: 13.804881 + reference: Added temporarily, remove when fixing # 823. 2001-01-01: base: 27.609762 direction: down @@ -317,12 +321,20 @@ rounding: base: 1 direction: down reference: § 32a Abs. 1 S. 1 EStG - eink_st_ohne_kinderfreib_y: + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + 1900-01-01: + base: 1 + direction: down + reference: Added temporarily, remove when fixing # 823. 2002-01-01: base: 1 direction: down reference: § 32a Abs. 1 S. 6 EStG - eink_st_mit_kinderfreib_y: + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + 1900-01-01: + base: 1 + direction: down + reference: Added temporarily, remove when fixing # 823. 2002-01-01: base: 1 direction: down diff --git a/src/_gettsim/parameters/eink_st_abzuege.yaml b/src/_gettsim/parameters/eink_st_abzuege.yaml index a4eb0314b7..10f1ad5565 100644 --- a/src/_gettsim/parameters/eink_st_abzuege.yaml +++ b/src/_gettsim/parameters/eink_st_abzuege.yaml @@ -446,7 +446,7 @@ einführungsfaktor: upper_threshold: inf rate_linear: 0 reference: G. v. 20.12.2022 BGBl. I S. 2294. -alleinerz_freibetrag: +alleinerziehendenfreibetrag: name: de: Entlastungsbetrag für Alleinerziehende en: Income Tax Allowance for Single Parents @@ -482,7 +482,7 @@ alleinerz_freibetrag: 2023-01-01: scalar: 4260 reference: G. v. 20.12.2022 BGBl. I S. 2294. -alleinerz_freibetrag_zusatz: +alleinerziehendenfreibetrag_zusatz: name: de: Entlastungsbetrag für Alleinerziehende, Zusatzbetrag en: Income Tax Allowance for Single Parents; additional amount @@ -752,14 +752,14 @@ vorsorgepauschale_kv_max: steuerklasse_nicht3: 1900 reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 rounding: - vorsorgeaufw_y_sn: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: note: en: Starting date unclear reference: § 10 Abs. 3 EStG 1984-01-01: base: 1 direction: up - sonderausgaben_betreuung_y_sn: + einkommensteuer__abzüge__absetzbare_betreuungskosten_y_sn: note: en: Starting date unclear 1984-01-01: diff --git a/src/_gettsim/parameters/elterngeld.yaml b/src/_gettsim/parameters/elterngeld.yaml index 12a1aa51fc..f263e0b540 100644 --- a/src/_gettsim/parameters/elterngeld.yaml +++ b/src/_gettsim/parameters/elterngeld.yaml @@ -238,21 +238,21 @@ max_arbeitsstunden_w: scalar: 32.0 reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 rounding: - elterngeld_m: + elterngeld__betrag_m: 1980-01-01: base: 0.01 direction: down - _untere_lohnersatzanteil_grenze_minus_nettoeinkommen: + elterngeld__lohnersatzanteil_einkommen_untere_grenze: 1980-01-01: base: 2 direction: down reference: §2 (2) BEEG - _nettoeinkommen_minus_obere_lohnersatzanteil_grenze: + elterngeld__lohnersatzanteil_einkommen_obere_grenze: 1980-01-01: base: 2 direction: down reference: §2 (2) BEEG - elterngeld_nettolohn_approximation_m: + elterngeld__nettoeinkommen_approximation_m: 1980-01-01: base: 0.01 direction: down diff --git a/src/_gettsim/parameters/erwerbsm_rente.yaml b/src/_gettsim/parameters/erwerbsm_rente.yaml index bf0644fa52..69d59edb4d 100644 --- a/src/_gettsim/parameters/erwerbsm_rente.yaml +++ b/src/_gettsim/parameters/erwerbsm_rente.yaml @@ -72,7 +72,7 @@ altersgrenze_langj_versicherte_abschlagsfrei: reference: § 77 Abs. 4 SGB VI Zugangsfaktor 2001-01-01: scalar: 63 -wartezeitgrenze_langj_versicherte_abschlagsfrei: +wartezeitgrenze_langjährig_versicherte_abschlagsfrei: name: de: Wartezeitgrenze für abschlagsfreie Erwerbsminderungsrente en: Waiting time limit for public disability pension without deductions @@ -233,7 +233,7 @@ min_zugangsfaktor: scalar: 0.892 rentenartfaktor: name: - de: Rentenartfaktor für teilweise Erwerbsminderungsrente + de: rentenartfaktor für teilweise Erwerbsminderungsrente en: Pension type factor for partial reduction in public disability insurance description: de: >- diff --git a/src/_gettsim/parameters/erziehungsgeld.yaml b/src/_gettsim/parameters/erziehungsgeld.yaml index 87ffdf8b24..af8363d636 100644 --- a/src/_gettsim/parameters/erziehungsgeld.yaml +++ b/src/_gettsim/parameters/erziehungsgeld.yaml @@ -16,14 +16,14 @@ einkommensgrenze: note: Reduced income limit for children older than 6 months. start_age_m_reduced_income_limit: 7 limit: - alleinerz: + alleinerziehend: regelsatz: 23000 budgetsatz: 19086 paar: regelsatz: 30000 budgetsatz: 22086 reduced_limit: - alleinerz: + alleinerziehend: regelsatz: 13500 budgetsatz: 13500 paar: @@ -134,7 +134,11 @@ end_age_m_budgetsatz: 2004-01-01: scalar: 12 rounding: - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: + 1900-01-01: + base: 0.01 + direction: nearest + reference: Added temporarily, remove when fixing # 823. 2004-01-01: base: 0.01 direction: nearest diff --git a/src/_gettsim/parameters/ges_rente.yaml b/src/_gettsim/parameters/ges_rente.yaml index d2241a245c..764d0b5d31 100644 --- a/src/_gettsim/parameters/ges_rente.yaml +++ b/src/_gettsim/parameters/ges_rente.yaml @@ -274,7 +274,7 @@ beitragspflichtiges_durchschnittsentgelt: scalar: 50493 reference: §3 V. v. 25.11.2024 BGBl. 2024 I Nr. 365. note: Vorläufiges Durchschnittsentgelt -umrechnung_entgeltp_beitrittsgebiet: +umrechnung_entgeltpunkte_beitrittsgebiet: name: de: Umrechnung der Beitragsbemessungsgrundlagen des Beitrittgebietes en: Conversion of the Beitragsbemessungsgrundlage in former GDR @@ -648,7 +648,7 @@ grundr_höchstwert: base: 0.0334 increment: 0.001389 reference: § 76g Abs. 4 S. 3, 4 SGB VI -grundr_zugangsfaktor_max: +grundrente_zugangsfaktor_max: name: de: Zugangsfaktor bei Grundrente en: Access factor for basic pension @@ -658,7 +658,7 @@ grundr_zugangsfaktor_max: reference: § 77 Abs. 2 SGB VI 2021-01-01: scalar: 1 -grundr_zeiten: +grundrentenzeiten_monate: name: de: Grundrentenzeiten en: Months needed for basic pension @@ -1150,7 +1150,7 @@ first_birthyear_without_rente_für_frauen: note: https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html 1997-12-16: scalar: 1952 -rente_für_frauen_pflichtbeitr_y: +rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40: name: de: Mindestpflichbeitragsjahre ab 40 für Rente für Frauen en: Minimum contribution since 40 pension for women. @@ -2361,42 +2361,42 @@ altersgrenze_besond_langj_versicherte: 1962: 64.666667 1963: 64.833333 rounding: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: 1980-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: 1980-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: 2021-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - grundr_zuschlag_eink_m: + sozialversicherung__rente__grundrente__anzurechnendes_einkommen_m: 2021-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__grundrente__basisbetrag_m: 2021-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: 2021-01-01: base: 0.01 direction: nearest reference: §123 SGB VI Abs. 1 - grundr_zuschlag_höchstwert_m: + sozialversicherung__rente__grundrente__höchstbetrag_m: 2021-01-01: base: 0.0001 direction: nearest reference: §76g SGB VI Abs. 4 Nr. 4 - grundr_zuschlag_bonus_entgeltp: + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: 2021-01-01: base: 0.0001 direction: nearest @@ -2422,21 +2422,17 @@ thresholds_wartezeiten: wartezeit_15: 15 wartezeit_35: 35 wartezeit_45: 45 -wartezeit_45_pflichtbeitragsmonate: +mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge: name: - de: Mindestpflichtbeitragsmonate für Wartezeit 45 - en: Minimum statutory contribution months for wartezeit 45 - description: de: >- - Anzahl der Mindestpflichtbeitragsminate, die für die - Erfüllung der Wartezeit von 45 Jahren notwendig sind. + Anzahl der Mindestpflichtbeitragsjahre, von der an freiwillige Beiträge + angerechnet werden. en: >- - Number of statutory contribution months required to - fullfill the waiting time of 45 years + Minimum statutory contribution years for the inclusion of voluntary contributions reference: § 51 Abs. 3a SGB VI note: https://www.gesetze-im-internet.de/sgb_6/__51.html 1980-01-01: - scalar: 216 + scalar: 18 abzugsrate_hinzuverdienst: name: de: Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze diff --git a/src/_gettsim/parameters/grunds_im_alter.yaml b/src/_gettsim/parameters/grunds_im_alter.yaml index 0d42b1dcaa..998d92e493 100644 --- a/src/_gettsim/parameters/grunds_im_alter.yaml +++ b/src/_gettsim/parameters/grunds_im_alter.yaml @@ -130,7 +130,7 @@ priv_rente_anr_frei: 2: upper_threshold: inf rate: 0.3 -mehrbedarf_schwerbeh_g: +mehrbedarf_bei_schwerbehinderungsgrad_g: name: de: Mehrbedarf bei Schwerbehinderung en: Additional requirement when severely disabled diff --git a/src/_gettsim/parameters/kinderzuschl_eink.yaml b/src/_gettsim/parameters/kinderzuschl_eink.yaml index 4d093b0c78..e168338814 100644 --- a/src/_gettsim/parameters/kinderzuschl_eink.yaml +++ b/src/_gettsim/parameters/kinderzuschl_eink.yaml @@ -1,6 +1,10 @@ --- rounding: - kinderzuschl_eink_eltern_m: + kinderzuschlag__nettoeinkommen_eltern_m: + 1900-01-01: + base: 10 + direction: down + reference: Added temporarily, remove when fixing # 823. 2005-01-01: base: 10 direction: down diff --git a/src/_gettsim/parameters/lohnst.yaml b/src/_gettsim/parameters/lohnst.yaml index 84c1c35c71..ca2e836fb2 100644 --- a/src/_gettsim/parameters/lohnst.yaml +++ b/src/_gettsim/parameters/lohnst.yaml @@ -1,14 +1,14 @@ --- lohnst_einkommensgrenzen: name: - de: Einkommensgrenzen für Steuerklasse 5 und 6 - en: Thresholds for Steuerklasse 5 and 6 + de: Einkommensgrenzen für Steuerklassen 5 und 6 + en: Thresholds for withholding tax classes 5 and 6 description: de: >- - Einkommensgrenzen für Steuerklasse 5 und 6, innerhalb derer + Einkommensgrenzen für Steuerklassen 5 und 6, innerhalb derer Mindest- und Maximalsteuern festgelegt sind. en: >- - Thresholds for Steuerklasse 5 and 6, where + Thresholds for withholding tax classes 5 and 6, where minimum and maximum tax rates apply. reference: § 39b Absatz 2 Satz 7 EStG unit: Euros @@ -74,12 +74,20 @@ lohnst_einkommensgrenzen: 1: 31404 2: 222260 rounding: - lohnst_eink_y: + lohnsteuer__einkommen_y: + 1900-01-01: + base: 1 + direction: down + reference: None. Reference missing. 1990-01-01: base: 1 direction: down reference: null - vorsorgepauschale_y: + lohnsteuer__vorsorgepauschale_y: + 1900-01-01: + base: 1 + direction: up + reference: None. Reference missing. 1990-01-01: base: 1 direction: up diff --git a/src/_gettsim/parameters/sozialv_beitr.yaml b/src/_gettsim/parameters/sozialv_beitr.yaml index 958107c578..a26c50ccde 100644 --- a/src/_gettsim/parameters/sozialv_beitr.yaml +++ b/src/_gettsim/parameters/sozialv_beitr.yaml @@ -16,8 +16,10 @@ beitr_satz: Beitragssatz für Arbeitnehmer zusatz_kinderlos - Beitragszuschlag für kinderlose Versicherte, die das 23. Lebensjahr vollendet haben. Wird vom Arbeitnehmer alleine getragen. Eingeführt 2005. - arbeitsl_v: Beitragssätze zur Arbeitslosenversicherung für Arbeitnehmer. - ges_rentenv: Beitragssätze zur allgemeinen Rentenversicherung für Arbeitnehmer. + arbeitslosenversicherung: >- + Beitragssätze zur Arbeitslosenversicherung für Arbeitnehmer. + ges_rentenv: >- + Beitragssätze zur allgemeinen Rentenversicherung für Arbeitnehmer. en: ges_krankenv: >- Statury Contribution Rates for mandatory health insurance. mean_allgemein - @@ -28,29 +30,29 @@ beitr_satz: Statury Contribution Rates for mandatory care insurance (since 1995). standard - employees contribution rate zusatz_kinderlos - contribution rate for insured people without children and at least 23 years old. paid by employees. est. 2005 - arbeitsl_v: employees contribution rate for unemployment insurance. + arbeitslosenversicherung: employees contribution rate for unemployment insurance. ges_rentenv: employees contribution rate for pension insurance. unit: Share access_different_date: jahresanfang 1984-01-01: ges_krankenv: mean_allgemein: 0.1144 - arbeitsl_v: 0.023 + arbeitslosenversicherung: 0.023 ges_rentenv: 0.0925 1985-01-01: ges_krankenv: mean_allgemein: 0.118 - arbeitsl_v: 0.022 + arbeitslosenversicherung: 0.022 ges_rentenv: 0.0935 1986-01-01: ges_krankenv: mean_allgemein: 0.122 - arbeitsl_v: 0.0205 + arbeitslosenversicherung: 0.0205 ges_rentenv: 0.096 1987-01-01: ges_krankenv: mean_allgemein: 0.1248 - arbeitsl_v: 0.0215 + arbeitslosenversicherung: 0.0215 ges_rentenv: 0.0935 1988-01-01: deviation_from: previous @@ -70,18 +72,18 @@ beitr_satz: mean_allgemein: .128 1992-01-01: deviation_from: previous - arbeitsl_v: 0.0315 + arbeitslosenversicherung: 0.0315 ges_rentenv: 0.0885 1993-01-01: ges_krankenv: mean_allgemein: 0.134 - arbeitsl_v: 0.0325 + arbeitslosenversicherung: 0.0325 ges_rentenv: 0.0875 1994-01-01: deviation_from: previous ges_rentenv: 0.096 1995-01-01: - arbeitsl_v: 0.0325 + arbeitslosenversicherung: 0.0325 ges_krankenv: mean_allgemein: 0.132 ges_pflegev: 0.005 @@ -93,7 +95,7 @@ beitr_satz: ges_krankenv: mean_allgemein: 0.134 ges_pflegev: 0.0085 - arbeitsl_v: 0.0325 + arbeitslosenversicherung: 0.0325 ges_rentenv: 0.1015 1998-01-01: deviation_from: previous @@ -128,7 +130,7 @@ beitr_satz: ges_pflegev: standard: 0.0085 zusatz_kinderlos: 0.0025 - arbeitsl_v: 0.0325 + arbeitslosenversicherung: 0.0325 ges_rentenv: 0.0975 2005-07-01: deviation_from: previous @@ -143,7 +145,7 @@ beitr_satz: deviation_from: previous ges_krankenv: mean_allgemein: 0.139 - arbeitsl_v: 0.021 + arbeitslosenversicherung: 0.021 ges_rentenv: 0.0995 2008-01-01: ges_krankenv: @@ -152,7 +154,7 @@ beitr_satz: ges_pflegev: standard: 0.00975 zusatz_kinderlos: 0.0025 - arbeitsl_v: 0.016 + arbeitslosenversicherung: 0.016 ges_rentenv: 0.0995 2009-01-01: deviation_from: previous @@ -160,7 +162,7 @@ beitr_satz: allgemein: 0.146 sonderbeitrag: 0.009 ermäßigt: 0.140 - arbeitsl_v: 0.014 + arbeitslosenversicherung: 0.014 2009-07-01: deviation_from: previous ges_krankenv: @@ -173,7 +175,7 @@ beitr_satz: allgemein: 0.146 ermäßigt: 0.14 reference: Art. 1 G. v. 22.12.2010 BGBl. I S. 2309 - arbeitsl_v: 0.015 + arbeitslosenversicherung: 0.015 2012-01-01: deviation_from: previous ges_rentenv: 0.098 @@ -193,7 +195,7 @@ beitr_satz: ges_pflegev: standard: 0.01175 zusatz_kinderlos: 0.0025 - arbeitsl_v: 0.015 + arbeitslosenversicherung: 0.015 ges_rentenv: 0.0935 note: Abschaffung Sonderbeitrag, Einführung kassenabhängiger Zusatzbeitrag 2016-01-01: @@ -218,23 +220,23 @@ beitr_satz: ges_pflegev: standard: 0.01525 zusatz_kinderlos: 0.0025 - arbeitsl_v: 0.0125 + arbeitslosenversicherung: 0.0125 ges_rentenv: 0.093 note: >- Wieder-Einführung der Parität. Art. 2 G. v. 11.12.2018, BGBl. I S. 2387 - (arbeitsl_v:) Set to 0.026 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651. - Temporarily reduced to 0.025 in BeiSaV 2019. + (arbeitslosenversicherung:) Set to 0.026 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I + S. 2651. Temporarily reduced to 0.025 in BeiSaV 2019. reference: >- - (arbeitsl_v:) V. v. 21.12.2018 BGBl. I S. 2663 + (arbeitslosenversicherung:) V. v. 21.12.2018 BGBl. I S. 2663 2020-01-01: deviation_from: previous ges_krankenv: mean_zusatzbeitrag: 0.011 - arbeitsl_v: 0.012 - note: (arbeitsl_v:) Temporarily reduced to 0.024 in BeiSaV 2019. + arbeitslosenversicherung: 0.012 + note: (arbeitslosenversicherung:) Temporarily reduced to 0.024 in BeiSaV 2019. reference: >- (ges_krankenv mean_zusatzbeitrag:) BAnz AT 28.10.2019 B3 - (arbeitsl_v:) V. v. 02.12.2019 BGBl. I S. 1998 + (arbeitslosenversicherung:) V. v. 02.12.2019 BGBl. I S. 1998 2021-01-01: deviation_from: previous ges_krankenv: @@ -248,14 +250,14 @@ beitr_satz: reference: Art. 2 Nr. 14 G. v. 11.07.2021, BGBl. I S. 2754. 2023-01-01: deviation_from: previous - arbeitsl_v: 0.013 + arbeitslosenversicherung: 0.013 ges_krankenv: mean_zusatzbeitrag: 0.016 note: >- - Contribution rate for arbeitsl_v was temporarily reduced from 2019 to 2022 in - BeiSaV 2019. Now back to level specified in § 341 Abs. 2 SGB III. + Contribution rate for arbeitslosenversicherung was temporarily reduced from 2019 + to 2022 in BeiSaV 2019. Now back to level specified in § 341 Abs. 2 SGB III. reference: >- - (arbeitsl_v:) Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 + (arbeitslosenversicherung:) Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 (ges_krankenv mean_zusatzbeitrag:) BAnz AT 31.10.2022 B5 2023-07-01: deviation_from: previous @@ -926,12 +928,16 @@ mindestlohn: scalar: 12.82 reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 rounding: - midijob_faktor_f: - 1990-01-01: + sozialversicherung__midijob_faktor_f: + 1900-01-01: base: 0.0001 direction: nearest reference: null - minijob_grenze: + sozialversicherung__minijob_grenze: + 1900-01-01: + base: 1 + direction: up + reference: None. Reference missing. 1990-01-01: base: 1 direction: up diff --git a/src/_gettsim/parameters/unterhaltsvors.yaml b/src/_gettsim/parameters/unterhaltsvors.yaml index 37b7e63398..d5ca130c6f 100644 --- a/src/_gettsim/parameters/unterhaltsvors.yaml +++ b/src/_gettsim/parameters/unterhaltsvors.yaml @@ -47,7 +47,7 @@ faktor_jüngste_altersgruppe: 2009-01-01: scalar: 0.87 reference: § 1612a Abs. 1 BGB -unterhaltsvors_anwendungsvors: +anwendungsvorschrift: name: de: Unterhaltsvorschuss für Kinder entsprechend Anwendungsvorschriften en: Advance Child Alimony according to application regulations @@ -102,7 +102,7 @@ unterhaltsvors_anwendungsvors: Euro). Ab 2016 orientiert sich der Unterhaltsvorschuss wieder an den regulären Mindestunterhaltsbeträgen. rounding: - unterhaltsvors_m: + unterhaltsvorschuss__betrag_m: note: en: Rounding rules since implementation in 1980 via BGBl. I 1979 S. 1184. 1980-01-01: diff --git a/src/_gettsim/parameters/wohngeld.yaml b/src/_gettsim/parameters/wohngeld.yaml index d0f060e302..6680382858 100644 --- a/src/_gettsim/parameters/wohngeld.yaml +++ b/src/_gettsim/parameters/wohngeld.yaml @@ -701,7 +701,7 @@ min_eink: 10: 2200 11: 2400 12: 2600 -freib_kinder_m: +freibetrag_kinder_m: name: de: Monatlicher Freibetrag für Alleinerziehende und arbeitende Kinder en: null @@ -711,22 +711,22 @@ freib_kinder_m: unit: Euro reference_period: Month 1984-01-01: - alleinerz: 51 + alleinerziehend: 51 arbeitendes_kind: 0 2001-01-01: deviation_from: previous arbeitendes_kind: 51 2002-01-01: - alleinerz: 50 + alleinerziehend: 50 arbeitendes_kind: 50 2016-01-01: note: >- neu §17 3. WoGG a) Alleinerziehend b) Kind unter 18 und neu §17 4. WoGG Kind noch nicht 25J. reference: Art. 1 G. v. 08.10.2015 BGBl Nr.38, S.1617 - alleinerz: 110 + alleinerziehend: 110 arbeitendes_kind: 100 -freib_behinderung: +freibetrag_behinderung: name: de: Jährlicher Freibetrag pro behindertes Haushaltsmitglied en: null @@ -1970,12 +1970,12 @@ klimakomponente_m: 5: 39.20 jede_weitere_person: 4.8 rounding: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: 1970-01-01: base: 1 direction: nearest reference: § 19 WoGG Abs.2 Anlage 3 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: 1970-01-01: base: 1 direction: nearest diff --git a/src/_gettsim/policy_environment.py b/src/_gettsim/policy_environment.py index c29cd6e255..9a7377df50 100644 --- a/src/_gettsim/policy_environment.py +++ b/src/_gettsim/policy_environment.py @@ -4,6 +4,7 @@ import datetime from typing import TYPE_CHECKING, Any +import dags.tree as dt import numpy import optree import pandas as pd @@ -13,11 +14,11 @@ INTERNAL_PARAMS_GROUPS, RESOURCE_DIR, ) -from _gettsim.functions.loader import ( +from _gettsim.function_types import GroupByFunction, PolicyFunction, policy_function +from _gettsim.loader import ( load_aggregation_specs_tree, load_functions_tree_for_date, ) -from _gettsim.functions.policy_function import PolicyFunction, policy_function from _gettsim.piecewise_functions import ( check_thresholds, get_piecewise_parameters, @@ -32,7 +33,7 @@ if TYPE_CHECKING: from pathlib import Path - from _gettsim.gettsim_typing import NestedAggregationSpecDict, NestedFunctionDict + from _gettsim.typing import NestedAggregationSpecDict, NestedFunctionDict class PolicyEnvironment: @@ -63,12 +64,14 @@ def __init__( # Check functions tree and convert functions to PolicyFunction if necessary assert_valid_gettsim_pytree( functions_tree, - lambda leaf: isinstance(leaf, PolicyFunction), + lambda leaf: isinstance(leaf, PolicyFunction | GroupByFunction), "functions_tree", ) self._functions_tree = optree.tree_map( - func=_convert_function_to_policy_function, - tree=functions_tree, + lambda leaf: leaf + if isinstance(leaf, GroupByFunction) + else _convert_function_to_policy_function(leaf), + functions_tree, ) # Read in parameters and aggregation specs @@ -118,8 +121,10 @@ def upsert_policy_functions( new_functions_tree = {**self._functions_tree} functions_tree_to_upsert = optree.tree_map( - func=_convert_function_to_policy_function, - tree=functions_tree_to_upsert, + lambda leaf: leaf + if isinstance(leaf, GroupByFunction) + else _convert_function_to_policy_function(leaf), + functions_tree_to_upsert, ) _fail_if_name_of_last_branch_element_not_leaf_name_of_function( functions_tree_to_upsert @@ -187,7 +192,7 @@ def set_up_policy_environment(date: datetime.date | str | int) -> PolicyEnvironm params[group] = _parse_piecewise_parameters(params_one_group) # Extend dictionary with date-specific values which do not need an own function params = _parse_kinderzuschl_max(date, params) - params = _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params) + params = _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params) params = _parse_vorsorgepauschale_rentenv_anteil(date, params) aggregation_specs_tree = load_aggregation_specs_tree() @@ -221,7 +226,7 @@ def _parse_date(date: datetime.date | str | int) -> datetime.date: def _convert_function_to_policy_function( function: callable, -) -> PolicyFunction: +) -> PolicyFunction | GroupByFunction: """Convert a function to a PolicyFunction. Parameters @@ -235,7 +240,7 @@ def _convert_function_to_policy_function( The converted function. """ - if isinstance(function, PolicyFunction): + if isinstance(function, PolicyFunction | GroupByFunction): converted_function = function else: converted_function = policy_function(leaf_name=function.__name__)(function) @@ -312,7 +317,7 @@ def _parse_kinderzuschl_max(date, params): return params -def _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params): +def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): """Calculate introductory factor for pension expense deductions which depends on the current year as follows: @@ -343,9 +348,9 @@ def _parse_einführungsfaktor_vorsorgeaufw_alter_ab_2005(date, params): "einführungsfaktor" ]["intercepts_at_lower_thresholds"], ) - params["eink_st_abzuege"]["einführungsfaktor_vorsorgeaufw_alter_ab_2005"] = ( - out.loc[0] - ) + params["eink_st_abzuege"][ + "einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005" + ] = out.loc[0] return params @@ -410,22 +415,22 @@ def _load_parameter_group_from_yaml( """ - def subtract_years_from_date(dt, years): + def subtract_years_from_date(date, years): """Subtract one or more years from a date object.""" try: - dt = dt.replace(year=dt.year - years) + date = date.replace(year=date.year - years) # Take care of leap years except ValueError: - dt = dt.replace(year=dt.year - years, day=dt.day - 1) - return dt + date = date.replace(year=date.year - years, day=date.day - 1) + return date - def set_date_to_beginning_of_year(dt): + def set_date_to_beginning_of_year(date): """Set date to the beginning of the year.""" - dt = dt.replace(month=1, day=1) + date = date.replace(month=1, day=1) - return dt + return date raw_group_data = yaml.load( (yaml_path / f"{group}.yaml").read_text(encoding="utf-8"), @@ -620,8 +625,8 @@ def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( """Raise error if a PolicyFunction does not have the same leaf name as the last branch element of the tree path. """ - tree_paths, functions, _ = optree.tree_flatten_with_path(functions_tree) - for tree_path, function in zip(tree_paths, functions): + + for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): if tree_path[-1] != function.leaf_name: raise KeyError( f""" diff --git a/src/_gettsim/shared.py b/src/_gettsim/shared.py index 3f3533e93b..e4da03dda9 100644 --- a/src/_gettsim/shared.py +++ b/src/_gettsim/shared.py @@ -1,18 +1,23 @@ +from __future__ import annotations + import inspect import textwrap -from collections.abc import Callable -from typing import Any, TypeVar +from typing import TYPE_CHECKING, Any, TypeVar -import flatten_dict +import dags.tree as dt import numpy import optree -from dags.signature import rename_arguments -from flatten_dict.reducers import make_reducer -from flatten_dict.splitters import make_splitter -from _gettsim.config import QUALIFIED_NAME_SEPARATOR, SUPPORTED_GROUPINGS -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.gettsim_typing import NestedDataDict, NestedFunctionDict +from _gettsim.config import SUPPORTED_GROUPINGS + +if TYPE_CHECKING: + from _gettsim.function_types import PolicyFunction + from _gettsim.typing import ( + GenericCallable, + NestedDataDict, + NestedFunctionDict, + QualNameFunctionsDict, + ) class KeyErrorMessage(str): @@ -35,10 +40,6 @@ def format_list_linewise(list_): ).format(formatted_list=formatted_list) -qualified_name_reducer = make_reducer(delimiter=QUALIFIED_NAME_SEPARATOR) -qualified_name_splitter = make_splitter(delimiter=QUALIFIED_NAME_SEPARATOR) - - def create_tree_from_path_and_value(path: tuple[str], value: Any = None) -> dict: """Create a nested dict with 'path' as keys and 'value' as leaf. @@ -176,18 +177,42 @@ def partition_tree_by_reference_tree( - The first tree with leaves present in both trees. - The second tree with leaves absent in the reference tree. """ - ref_paths = set(flatten_dict.flatten(reference_tree).keys()) - flat = flatten_dict.flatten(tree_to_partition) - intersection = flatten_dict.unflatten( + ref_paths = set(dt.tree_paths(reference_tree)) + flat = dt.flatten_to_tree_paths(tree_to_partition) + intersection = dt.unflatten_from_tree_paths( {path: leaf for path, leaf in flat.items() if path in ref_paths} ) - difference = flatten_dict.unflatten( + difference = dt.unflatten_from_tree_paths( {path: leaf for path, leaf in flat.items() if path not in ref_paths} ) return intersection, difference +def partition_by_reference_dict( + to_partition: dict[str, Any], + reference_dict: dict[str, Any], +) -> tuple[dict[str, Any], dict[str, Any]]: + """Partition a dictionary into two based on the presence of its keys in a reference + dictionary. + + Parameters + ---------- + to_partition + The dictionary to be partitioned. + reference_dict + The reference dictionary used to determine the partitioning. + + Returns + ------- + A tuple containing: - The first dictionary with keys present in both dictionaries. - + The second dictionary with keys absent in the reference dictionary. + """ + intersection = {k: v for k, v in to_partition.items() if k in reference_dict} + difference = {k: v for k, v in to_partition.items() if k not in reference_dict} + return intersection, difference + + def format_errors_and_warnings(text: str, width: int = 79) -> str: """Format our own exception messages and warnings by dedenting paragraphs and wrapping at the specified width. Mainly required because of messages are written as @@ -315,22 +340,8 @@ def join_numpy( return padded_targets.take(indices) -def rename_arguments_and_add_annotations( - function: Callable | None = None, - *, - mapper: dict | None = None, - annotations: dict | None = None, -): - wrapper = rename_arguments(function, mapper=mapper) - - if annotations: - wrapper.__annotations__ = annotations - - return wrapper - - def assert_valid_gettsim_pytree( - tree: Any, leaf_checker: Callable, tree_name: str + tree: Any, leaf_checker: GenericCallable, tree_name: str ) -> None: """ Recursively assert that a pytree meets the following conditions: @@ -342,7 +353,7 @@ def assert_valid_gettsim_pytree( ---------- tree : Any The tree to validate. - leaf_checker : Callable + leaf_checker : GenericCallable A function that takes a leaf and returns True if it is valid. tree_name : str The name of the tree (used for error messages). @@ -385,3 +396,121 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: raise TypeError(msg) _assert_valid_gettsim_pytree(tree, current_key=()) + + +def get_name_of_group_by_id( + target_name: str, + group_by_functions: QualNameFunctionsDict, +) -> str: + """Get the group-by-identifier name for some target. + + The group-by-identifier is the name of the group identifier that is embedded in the + name of the target. E.g., "einkommen_hh" has "hh_id" as its group-by-identifier. In + this sense, the group-by-identifiers live in a global namespace. We generally expect + them to be unique. + + There is an exception, though: It is enough for them to be unique within the + uppermost namespace. In that case, however, they cannot be used outside of that + namespace. + + Parameters + ---------- + target_name + The name of the target. + group_by_functions + The group-by functions. + + Returns + ------- + The group-by-identifier, or an empty tuple if it is an individual-level variable. + """ + for g in SUPPORTED_GROUPINGS: + if target_name.endswith(f"_{g}") and g == "hh": + # Hardcode because hh_id is not part of the functions tree + return "hh_id" + elif target_name.endswith(f"_{g}"): + return _select_group_by_id_from_candidates( + candidate_names=[ + p for p in group_by_functions if p.endswith(f"{g}_id") + ], + target_name=target_name, + ) + return None + + +def _select_group_by_id_from_candidates( + candidate_names: list[str], + target_name: str, +) -> str: + """Select the group-by-identifier name from the candidates. + + If there are multiple candidates, the function takes the one that shares the + first part of the path (uppermost level of namespace) with the aggregation target. + + Raises + ------ + ValueError + Raised if the group-by-identifier is ambiguous. + + Parameters + ---------- + candidates + The candidates. + target_path + The target path. + nice_target_name + The nice target name. + + Returns + ------- + The group-by-identifier. + """ + if len(candidate_names) > 1: + candidate_names_in_matching_namespace = [ + p + for p in candidate_names + if dt.tree_path_from_qual_name(p)[0] + == dt.tree_path_from_qual_name(target_name)[0] + ] + if len(candidate_names_in_matching_namespace) == 1: + return candidate_names_in_matching_namespace[0] + else: + _fail_because_of_ambiguous_group_by_identifier( + candidate_names_in_matching_namespace=candidate_names_in_matching_namespace, + all_candidate_names=candidate_names, + target_name=target_name, + ) + else: + return candidate_names[0] + + +def _fail_because_of_ambiguous_group_by_identifier( + candidate_names_in_matching_namespace: list[str], + all_candidate_names: list[str], + target_name: str, +): + if len(candidate_names_in_matching_namespace) == 0: + paths = "\n ".join( + [str(dt.tree_path_from_qual_name(p)) for p in all_candidate_names] + ) + else: + paths = "\n ".join( + [ + str(dt.tree_path_from_qual_name(p)) + for p in candidate_names_in_matching_namespace + ] + ) + + target_path = dt.tree_path_from_qual_name(target_name) + msg = format_errors_and_warnings( + f""" + Group-by-identifier for target:\n\n {target_path}\n + is ambiguous. Group-by-identifiers must be + + 1. unique at the uppermost level of the functions tree. + 2. inside the uppermost namespace if there are namespaced identifiers + + Found candidates:\n\n {paths} + """ + ) + raise ValueError(msg) diff --git a/src/_gettsim/social_insurance_contributions/arbeitsl_v.py b/src/_gettsim/social_insurance_contributions/arbeitsl_v.py deleted file mode 100644 index fd0befd04b..0000000000 --- a/src/_gettsim/social_insurance_contributions/arbeitsl_v.py +++ /dev/null @@ -1,381 +0,0 @@ -"""Functions for modeling unemployment and pension insurance.""" - -from _gettsim.functions.policy_function import policy_function - - -def sozialv_beitr_arbeitnehmer_m( - ges_pflegev_beitr_arbeitnehmer_m: float, - ges_krankenv_beitr_arbeitnehmer_m: float, - ges_rentenv_beitr_arbeitnehmer_m: float, - arbeitsl_v_beitr_arbeitnehmer_m: float, -) -> float: - """Sum of employee's social insurance contributions. - - Parameters - ---------- - ges_pflegev_beitr_arbeitnehmer_m - See :func:`ges_pflegev_beitr_arbeitnehmer_m`. - ges_krankenv_beitr_arbeitnehmer_m - See :func:`ges_krankenv_beitr_arbeitnehmer_m`. - ges_rentenv_beitr_arbeitnehmer_m - See :func:`ges_rentenv_beitr_arbeitnehmer_m`. - arbeitsl_v_beitr_arbeitnehmer_m - See :func:`arbeitsl_v_beitr_arbeitnehmer_m`. - - Returns - ------- - - """ - out = ( - ges_pflegev_beitr_arbeitnehmer_m - + ges_krankenv_beitr_arbeitnehmer_m - + ges_rentenv_beitr_arbeitnehmer_m - + arbeitsl_v_beitr_arbeitnehmer_m - ) - return out - - -def sozialv_beitr_arbeitgeber_m( - ges_pflegev_beitr_arbeitgeber_m: float, - ges_krankenv_beitr_arbeitgeber_m: float, - ges_rentenv_beitr_arbeitgeber_m: float, - arbeitsl_v_beitr_arbeitgeber_m: float, -) -> float: - """Sum of employer's social insurance contributions. - - Parameters - ---------- - ges_pflegev_beitr_arbeitgeber_m - See :func:`ges_pflegev_beitr_arbeitgeber_m`. - ges_krankenv_beitr_arbeitgeber_m - See :func:`ges_krankenv_beitr_arbeitgeber_m`. - ges_rentenv_beitr_arbeitgeber_m - See :func:`ges_rentenv_beitr_arbeitgeber_m`. - arbeitsl_v_beitr_arbeitgeber_m - See :func:`arbeitsl_v_beitr_arbeitgeber_m`. - - Returns - ------- - - """ - out = ( - ges_pflegev_beitr_arbeitgeber_m - + ges_krankenv_beitr_arbeitgeber_m - + ges_rentenv_beitr_arbeitgeber_m - + arbeitsl_v_beitr_arbeitgeber_m - ) - return out - - -def _sozialv_beitr_summe_m( - sozialv_beitr_arbeitnehmer_m: float, - sozialv_beitr_arbeitgeber_m: float, -) -> float: - """Sum of employer's and employee's social insurance contributions. - - Parameters - ---------- - sozialv_beitr_arbeitnehmer_m - See :func:`sozialv_beitr_arbeitnehmer_m`. - sozialv_beitr_arbeitgeber_m - See :func:`sozialv_beitr_arbeitgeber_m`. - Returns - ------- - - """ - out = sozialv_beitr_arbeitnehmer_m + sozialv_beitr_arbeitgeber_m - return out - - -@policy_function(end_date="2003-03-31", leaf_name="arbeitsl_v_beitr_arbeitnehmer_m") -def arbeitsl_v_beitr_arbeitnehmer_m_vor_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's unemployment insurance contribution. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - arbeitsl_v_regulär_beschäftigt_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - - # Set to 0 for minijobs - if geringfügig_beschäftigt: - out = 0.0 - else: - out = arbeitsl_v_regulär_beschäftigt_m - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="arbeitsl_v_beitr_arbeitnehmer_m") -def arbeitsl_v_beitr_arbeitnehmer_m_mit_midijob( - geringfügig_beschäftigt: bool, - in_gleitzone: bool, - _arbeitsl_v_beitr_midijob_arbeitnehmer_m: float, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's unemployment insurance contribution. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - in_gleitzone - See :func:`in_gleitzone`. - _arbeitsl_v_beitr_midijob_arbeitnehmer_m - See :func:`_arbeitsl_v_beitr_midijob_arbeitnehmer_m`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - arbeitsl_v_regulär_beschäftigt_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - - # Set to 0 for minijobs - if geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _arbeitsl_v_beitr_midijob_arbeitnehmer_m - else: - out = arbeitsl_v_regulär_beschäftigt_m - - return out - - -@policy_function(end_date="2003-03-31", leaf_name="arbeitsl_v_beitr_arbeitgeber_m") -def arbeitsl_v_beitr_arbeitgeber_m_vor_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employer's unemployment insurance contribution until March 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - arbeitsl_v_regulär_beschäftigt_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - - # Set to 0 for minijobs - if geringfügig_beschäftigt: - out = 0.0 - else: - out = arbeitsl_v_regulär_beschäftigt_m - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="arbeitsl_v_beitr_arbeitgeber_m") -def arbeitsl_v_beitr_arbeitgeber_m_mit_midijob( - geringfügig_beschäftigt: bool, - in_gleitzone: bool, - _arbeitsl_v_beitr_midijob_arbeitgeber_m: float, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employer's unemployment insurance contribution since April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - in_gleitzone - See :func:`in_gleitzone`. - _arbeitsl_v_beitr_midijob_arbeitgeber_m - See :func:`_arbeitsl_v_beitr_midijob_arbeitgeber_m`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - arbeitsl_v_regulär_beschäftigt_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - - # Set to 0 for minijobs - if geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _arbeitsl_v_beitr_midijob_arbeitgeber_m - else: - out = arbeitsl_v_regulär_beschäftigt_m - - return out - - -@policy_function(start_date="2003-04-01") -def _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( - midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, -) -> float: - """Sum of employee's and employer's unemployment insurance contribution - for midijobs. - - Parameters - ---------- - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = ( - midijob_bemessungsentgelt_m - * 2 - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2022-09-30", - leaf_name="_arbeitsl_v_beitr_midijob_arbeitgeber_m", -) -def _arbeitsl_v_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( - bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employers' unemployment insurance contribution for Midijobs until September - 2022. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - - Returns - ------- - - """ - out = bruttolohn_m * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - return out - - -@policy_function( - start_date="2022-10-01", leaf_name="_arbeitsl_v_beitr_midijob_arbeitgeber_m" -) -def _arbeitsl_v_beitr_midijob_arbeitgeber_m_residuum( - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _arbeitsl_v_beitr_midijob_arbeitnehmer_m: float, -) -> float: - """Employer's unemployment insurance contribution since October 2022. - - Parameters - ---------- - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _arbeitsl_v_beitr_midijob_arbeitnehmer_m - See :func:`_arbeitsl_v_beitr_midijob_arbeitnehmer_m`. - - Returns - ------- - - """ - out = ( - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _arbeitsl_v_beitr_midijob_arbeitnehmer_m - ) - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2022-09-30", - leaf_name="_arbeitsl_v_beitr_midijob_arbeitnehmer_m", -) -def _arbeitsl_v_beitr_midijob_arbeitnehmer_m_residuum( - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _arbeitsl_v_beitr_midijob_arbeitgeber_m: float, -) -> float: - """Employee's unemployment insurance contribution for Midijobs until September - 2022. - - Parameters - ---------- - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _arbeitsl_v_beitr_midijob_arbeitgeber_m - See :func:`_arbeitsl_v_beitr_midijob_arbeitgeber_m`. - - Returns - ------- - - """ - out = ( - _arbeitsl_v_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _arbeitsl_v_beitr_midijob_arbeitgeber_m - ) - return out - - -@policy_function( - start_date="2022-10-01", leaf_name="_arbeitsl_v_beitr_midijob_arbeitnehmer_m" -) -def _arbeitsl_v_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( - _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's unemployment insurance contribution since October 2022. - - Parameters - ---------- - _midijob_beitragspfl_einnahme_arbeitnehmer_m - See :func:`_midijob_beitragspfl_einnahme_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = ( - _midijob_beitragspfl_einnahme_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["arbeitsl_v"] - ) - return out diff --git a/src/_gettsim/social_insurance_contributions/beitr_bemess_grenzen.py b/src/_gettsim/social_insurance_contributions/beitr_bemess_grenzen.py deleted file mode 100644 index 1ed04f3799..0000000000 --- a/src/_gettsim/social_insurance_contributions/beitr_bemess_grenzen.py +++ /dev/null @@ -1,72 +0,0 @@ -def _ges_rentenv_beitr_bemess_grenze_m( - wohnort_ost: bool, sozialv_beitr_params: dict -) -> float: - """Income threshold up to which pension insurance payments apply. - - Parameters - ---------- - wohnort_ost - See :func:`wohnort_ost`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"] - out = params["ost"] if wohnort_ost else params["west"] - - return float(out) - - -def _ges_krankenv_beitr_bemess_grenze_m( - wohnort_ost: bool, sozialv_beitr_params: dict -) -> float: - """Income threshold up to which health insurance payments apply. - - Parameters - ---------- - wohnort_ost - See :func:`wohnort_ost`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - The income threshold up to which the rate of health insurance contributions apply. - - """ - params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_krankenv"] - - out = params["ost"] if wohnort_ost else params["west"] - - return float(out) - - -def _ges_krankenv_bezugsgröße_selbst_m( - wohnort_ost: bool, sozialv_beitr_params: dict -) -> float: - """Threshold for self employment income subject to health insurance. - - Selecting by place of living the income threshold for self employed up to which the - rate of health insurance contributions apply. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = ( - sozialv_beitr_params["bezugsgröße_selbst_m"]["ost"] - if wohnort_ost - else sozialv_beitr_params["bezugsgröße_selbst_m"]["west"] - ) - - return float(out) diff --git a/src/_gettsim/social_insurance_contributions/eink_grenzen.py b/src/_gettsim/social_insurance_contributions/eink_grenzen.py deleted file mode 100644 index 663669bd61..0000000000 --- a/src/_gettsim/social_insurance_contributions/eink_grenzen.py +++ /dev/null @@ -1,501 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function( - end_date="1999-12-31", - leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", -) -def minijob_grenze_unterscheidung_ost_west( - wohnort_ost: bool, sozialv_beitr_params: dict -) -> float: - """Minijob income threshold depending on place of living (East or West Germany). - - Until 1999, the threshold is different for East and West Germany. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - Returns - ------- - - """ - west = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["west"] - ost = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["ost"] - out = ost if wohnort_ost else west - return float(out) - - -@policy_function( - start_date="2000-01-01", - end_date="2022-09-30", - leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", -) -def minijob_grenze_einheitlich(sozialv_beitr_params: dict) -> float: - """Minijob income threshold depending on place of living. - - From 2000 onwards, the threshold is the same for all of Germany. Until September - 2022, the threshold is exogenously set. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - Returns - ------- - - """ - return float(sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]) - - -@policy_function( - start_date="2022-10-01", - leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", -) -def minijob_grenze_from_minimum_wage(sozialv_beitr_params: dict) -> float: - """Minijob income threshold since 10/2022. Since then, it is calculated endogenously - from the statutory minimum wage. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Marginal Job Threshold - - """ - return ( - sozialv_beitr_params["mindestlohn"] - * sozialv_beitr_params["geringf_eink_faktor"] - / sozialv_beitr_params["geringf_eink_divisor"] - ) - - -def geringfügig_beschäftigt(bruttolohn_m: float, minijob_grenze: float) -> bool: - """Individual earns less than marginal employment threshold. - - Marginal employed pay no social insurance contributions. - - Legal reference: § 8 Abs. 1 Satz 1 and 2 SGB IV - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - minijob_grenze - See :func:`minijob_grenze`. - - - Returns - ------- - Whether person earns less than marginal employment threshold. - - """ - return bruttolohn_m <= minijob_grenze - - -@policy_function(start_date="2003-04-01") -def in_gleitzone( - bruttolohn_m: float, - geringfügig_beschäftigt: bool, - sozialv_beitr_params: dict, -) -> bool: - """Individual's income is in midi-job range. - - Employed people with their wage in the range of gleitzone pay reduced social - insurance contributions. - - Legal reference: § 20 Abs. 2 SGB IV - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Whether individual's income is in midi-job range. - - """ - out = ( - bruttolohn_m <= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - ) and (not geringfügig_beschäftigt) - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2004-12-31", - leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", -) -def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( - sozialv_beitr_params: dict, - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang: float, - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang: float, -) -> float: - """Midijob Faktor F until December 2004. - - Legal reference: § 163 Abs. 10 SGB VI - - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang`. - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang`. - - Returns - ------- - Income subject to social insurance contributions for midijob. - - """ - # First calculate the factor F from the formula in § 163 (10) SGB VI - # Therefore sum the contributions which are the same for employee and employer - allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitsl_v"] - ) - - allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"] - - # Then calculate specific shares - an_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - ag_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - - # Sum over the shares which are specific for midijobs. - pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] - ) - - # Now calculate final factor - out = pausch_mini / (an_anteil + ag_anteil) - - return out - - -@policy_function( - start_date="2005-01-01", - end_date="2022-09-30", - leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", -) -def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( - sozialv_beitr_params: dict, - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang: float, - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang: float, -) -> float: - """Midijob Faktor F between 2005 and September 2025. - - Legal reference: § 163 Abs. 10 SGB VI - - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang`. - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang`. - - Returns - ------- - Income subject to social insurance contributions for midijob. - - """ - # First calculate the factor F from the formula in § 163 (10) SGB VI - # Therefore sum the contributions which are the same for employee and employer - allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitsl_v"] - ) - - allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"][ - "ges_pflegev" - ]["standard"] - - # Then calculate specific shares - an_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - ag_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - - # Sum over the shares which are specific for midijobs. - pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] - ) - - # Now calculate final factor - out = pausch_mini / (an_anteil + ag_anteil) - - return out - - -@policy_function( - start_date="2022-10-01", - leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", -) -def midijob_faktor_f_ohne_minijob_steuerpauschale( - sozialv_beitr_params: dict, - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang: float, - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang: float, -) -> float: - """Midijob Faktor F since October 2022. - - Legal reference: § 163 Abs. 10 SGB VI - - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang`. - _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - See :func:`_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang`. - - Returns - ------- - Income subject to social insurance contributions for midijob. - - """ - # Calculate the Gesamtsozialversicherungsbeitragssatz by summing social - # insurance contributions for employer and employee and - # adding the mean Zusatzbeitrag - # First calculate the factor F from the formula in § 163 (10) SGB VI - # Therefore sum the contributions which are the same for employee and employer - allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"]["standard"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitsl_v"] - ) - - # Then calculate specific shares - an_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - ag_anteil = allg_sozialv_beitr + _ges_krankenv_beitr_satz_arbeitgeber_jahresanfang - - # Sum over the shares which are specific for midijobs. - # New formula only inludes the lump-sum contributions to health care - # and pension insurance - pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] - ) - - # Now calculate final factor f - out = pausch_mini / (an_anteil + ag_anteil) - - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2022-09-30", - leaf_name="midijob_bemessungsentgelt_m", -) -def midijob_bemessungsentgelt_m_bis_09_2022( - bruttolohn_m: float, - midijob_faktor_f: float, - minijob_grenze: float, - sozialv_beitr_params: dict, -) -> float: - """Income subject to social insurance contributions for midijob until September - 2022. - - Bemessungsgeld (Gleitzonenentgelt) is the reference income for midijobs subject to - social insurance contribution. - - Legal reference: § 163 Abs. 10 SGB VI - - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - midijob_faktor_f - See :func:`midijob_faktor_f`. - minijob_grenze - See :func:`minijob_grenze`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - Income subject to social insurance contributions for midijob. - - """ - # Now use the factor to calculate the overall bemessungsentgelt - minijob_anteil = midijob_faktor_f * minijob_grenze - lohn_über_mini = bruttolohn_m - minijob_grenze - gewichtete_midijob_rate = ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - / ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - minijob_grenze - ) - ) - ( - minijob_grenze - / ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - minijob_grenze - ) - * midijob_faktor_f - ) - - return minijob_anteil + lohn_über_mini * gewichtete_midijob_rate - - -@policy_function(start_date="2022-10-01", leaf_name="midijob_bemessungsentgelt_m") -def midijob_bemessungsentgelt_m_ab_10_2022( - bruttolohn_m: float, - midijob_faktor_f: float, - minijob_grenze: float, - sozialv_beitr_params: dict, -) -> float: - """Total income subject to social insurance contributions for midijobs since October - 2022. - - In the law, the considered income is referred to as "beitragspflichtige Einnahme". - - Beitragspflichtige Einnahme is the reference income for midijobs subject to employer - and employee social insurance contribution. - - Legal reference: Changes in § 20 SGB IV from 01.10.2022 - - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - midijob_faktor_f - See :func:`midijob_faktor_f`. - minijob_grenze - See :func:`minijob_grenze`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - Income subject to social insurance contributions for midijob. - - """ - midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - quotient1 = (midijob_grenze) / (midijob_grenze - minijob_grenze) - quotient2 = (minijob_grenze) / (midijob_grenze - minijob_grenze) - einkommen_diff = bruttolohn_m - minijob_grenze - - faktor1 = midijob_faktor_f * minijob_grenze - faktor2 = (quotient1 - quotient2 * midijob_faktor_f) * einkommen_diff - out = faktor1 + faktor2 - - return out - - -def _midijob_beitragspfl_einnahme_arbeitnehmer_m( - bruttolohn_m: float, - sozialv_beitr_params: dict, - minijob_grenze: float, -) -> float: - """Income subject to employee social insurance contributions for midijob since - October 2022. - - Gesonderte Beitragspflichtige Einnahme is the reference income for midijobs subject - to employee social insurance contribution. - - Legal reference: Changes in § 20 SGB IV from 01.10.2022 - - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - minijob_grenze - See :func:`minijob_grenze`. - - - Returns - ------- - Income subject to employee social insurance contributions for midijob. - - """ - midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - quotient = midijob_grenze / (midijob_grenze - minijob_grenze) - einkommen_diff = bruttolohn_m - minijob_grenze - - out = quotient * einkommen_diff - - return out - - -@policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") -def regulär_beschäftigt_vor_midijob(bruttolohn_m: float, minijob_grenze: float) -> bool: - """Regular employment check until March 2003. - - Employees earning more than the minijob threshold, are subject to all ordinary - income and social insurance contribution regulations. In gettsim we call these - regular employed. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Whether regular employed persons. - - """ - out = bruttolohn_m >= minijob_grenze - return out - - -@policy_function(start_date="2003-04-01", leaf_name="regulär_beschäftigt") -def regulär_beschäftigt_mit_midijob( - bruttolohn_m: float, sozialv_beitr_params: dict -) -> bool: - """Regular employment check since April 2003. - - Employees earning more than the midijob threshold, are subject to all ordinary - income and social insurance contribution regulations. In gettsim we call these - regular employed. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Whether regular employed persons. - - """ - out = bruttolohn_m >= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - return out diff --git a/src/_gettsim/social_insurance_contributions/ges_krankenv.py b/src/_gettsim/social_insurance_contributions/ges_krankenv.py deleted file mode 100644 index f6464182ba..0000000000 --- a/src/_gettsim/social_insurance_contributions/ges_krankenv.py +++ /dev/null @@ -1,989 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(end_date="2003-03-31", leaf_name="ges_krankenv_beitr_arbeitnehmer_m") -def ges_krankenv_beitr_arbeitnehmer_m_vor_midijob( - geringfügig_beschäftigt: bool, - ges_krankenv_beitr_rentner_m: float, - ges_krankenv_beitr_selbstständig_m: float, - _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m: float, - selbstständig: bool, -) -> float: - """Employee's public health insurance contribution. - - Before Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - ges_krankenv_beitr_rentner_m - See :func:`ges_krankenv_beitr_rentner_m`. - ges_krankenv_beitr_selbstständig_m - See :func:`ges_krankenv_beitr_selbstständig_m`. - _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m - See :func:`_ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m`. - selbstständig - See basic input variable :ref:`selbstständig `. - - - Returns - ------- - - """ - - if selbstständig: - out = ges_krankenv_beitr_selbstständig_m - elif geringfügig_beschäftigt: - out = 0.0 - else: - out = _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m - - # Add the health insurance contribution for pensions - return out + ges_krankenv_beitr_rentner_m - - -@policy_function(start_date="2003-04-01", leaf_name="ges_krankenv_beitr_arbeitnehmer_m") -def ges_krankenv_beitr_arbeitnehmer_m_mit_midijob( # noqa: PLR0913 - geringfügig_beschäftigt: bool, - ges_krankenv_beitr_rentner_m: float, - ges_krankenv_beitr_selbstständig_m: float, - in_gleitzone: bool, - _ges_krankenv_beitr_midijob_arbeitnehmer_m: float, - _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m: float, - selbstständig: bool, -) -> float: - """Employee's public health insurance contribution. - - After Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - ges_krankenv_beitr_rentner_m - See :func:`ges_krankenv_beitr_rentner_m`. - ges_krankenv_beitr_selbstständig_m - See :func:`ges_krankenv_beitr_selbstständig_m`. - _ges_krankenv_beitr_midijob_arbeitnehmer_m - See :func:`_ges_krankenv_beitr_midijob_arbeitnehmer_m`. - _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m - See :func:`_ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m`. - in_gleitzone - See :func:`in_gleitzone`. - selbstständig - See basic input variable :ref:`selbstständig `. - - - Returns - ------- - - """ - - if selbstständig: - out = ges_krankenv_beitr_selbstständig_m - elif geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _ges_krankenv_beitr_midijob_arbeitnehmer_m - else: - out = _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m - - # Add the health insurance contribution for pensions - return out + ges_krankenv_beitr_rentner_m - - -@policy_function(end_date="2003-03-31", leaf_name="ges_krankenv_beitr_arbeitgeber_m") -def ges_krankenv_beitr_arbeitgeber_m_vor_midijob( - geringfügig_beschäftigt: bool, - bruttolohn_m: float, - _ges_krankenv_bruttolohn_m: float, - selbstständig: bool, - sozialv_beitr_params: dict, - _ges_krankenv_beitr_satz_arbeitgeber: float, -) -> float: - """Employer's public health insurance contribution. - - Before Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_krankenv_bruttolohn_m - See :func:`_ges_krankenv_bruttolohn_m`. - _ges_krankenv_beitr_satz_arbeitgeber - See :func:`_ges_krankenv_beitr_satz_arbeitgeber`. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - selbstständig - See basic input variable :ref:`selbstständig `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - - """ - - if selbstständig: - out = 0.0 - elif geringfügig_beschäftigt: - out = bruttolohn_m * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] - else: - out = _ges_krankenv_bruttolohn_m * _ges_krankenv_beitr_satz_arbeitgeber - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="ges_krankenv_beitr_arbeitgeber_m") -def ges_krankenv_beitr_arbeitgeber_m_mit_midijob( - geringfügig_beschäftigt: bool, - in_gleitzone: bool, - bruttolohn_m: float, - _ges_krankenv_beitr_midijob_arbeitgeber_m: float, - _ges_krankenv_bruttolohn_m: float, - selbstständig: bool, - sozialv_beitr_params: dict, - _ges_krankenv_beitr_satz_arbeitgeber: float, -) -> float: - """Employer's public health insurance contribution. - - After Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_krankenv_beitr_midijob_arbeitgeber_m - See :func:`_ges_krankenv_beitr_midijob_arbeitgeber_m`. - _ges_krankenv_bruttolohn_m - See :func:`_ges_krankenv_bruttolohn_m`. - _ges_krankenv_beitr_satz_arbeitgeber - See :func:`_ges_krankenv_beitr_satz_arbeitgeber`. - in_gleitzone - See :func:`in_gleitzone`. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - selbstständig - See basic input variable :ref:`selbstständig `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - - """ - - if selbstständig: - out = 0.0 - elif geringfügig_beschäftigt: - out = bruttolohn_m * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] - elif in_gleitzone: - out = _ges_krankenv_beitr_midijob_arbeitgeber_m - else: - out = _ges_krankenv_bruttolohn_m * _ges_krankenv_beitr_satz_arbeitgeber - - return out - - -@policy_function( - start_date="2005-07-01", - end_date="2014-12-31", - leaf_name="ges_krankenv_zusatzbeitr_satz", -) -def ges_krankenv_zusatzbeitr_satz_from_sonderbeitr_satz( - sozialv_beitr_params: dict, -) -> float: - """Health insurance top-up (Zusatzbeitrag) rate until December 2014. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Zusatzbeitragssatz (based on Sonderbeitrag) - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["sonderbeitrag"] - - -@policy_function( - start_date="2015-01-01", - leaf_name="ges_krankenv_zusatzbeitr_satz", -) -def ges_krankenv_zusatzbeitr_satz_from_mean_zusatzbeitrag( - sozialv_beitr_params: dict, -) -> float: - """Health insurance top-up rate (Zusatzbeitrag) since January 2015. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Zusatzbeitragssatz (based on mean value of Zusatzbeitragssatz) - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_zusatzbeitrag"] - - -@policy_function( - end_date="2005-06-30", -) -def ges_krankenv_beitr_satz_arbeitnehmer( - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate until June 2005. - - Basic split between employees and employers. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance. - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 - - -@policy_function( - end_date="2005-06-30", -) -def _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang( - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate for the beginning of the year until - June 2005. - - Basic split between employees and employers. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance at the begging of the year. - - """ - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] - / 2 - ) - - -@policy_function( - start_date="2005-07-01", - end_date="2008-12-31", - leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", -) -def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer( - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate. - - From July 2005 until December 2008. The contribution rates consists of a general - rate (split equally between employers and employees, differs across sickness funds) - and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - ges_krankenv_zusatzbeitr_satz - See :func:`ges_krankenv_zusatzbeitr_satz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance. - - """ - - mean_allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ - "mean_allgemein" - ] - - return mean_allgemein / 2 + ges_krankenv_zusatzbeitr_satz - - -@policy_function( - start_date="2005-07-01", - end_date="2008-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", -) -def ges_krankenv_beitr_satz_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate at the beginning of the year. - - From July 2005 until December 2008. The contribution rates consists of a general - rate (split equally between employers and employees, differs across sickness funds) - and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - ges_krankenv_zusatzbeitr_satz - See :func:`ges_krankenv_zusatzbeitr_satz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance at the beginning of the year. - - """ - - mean_allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] - - return mean_allgemein / 2 + ges_krankenv_zusatzbeitr_satz - - -@policy_function( - start_date="2009-01-01", - end_date="2018-12-31", - leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", -) -def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer( - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate. - - From January 2009 until December 2018. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - ges_krankenv_zusatzbeitr_satz - See :func:`ges_krankenv_zusatzbeitr_satz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance. - - """ - - allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] - - return allgemein / 2 + ges_krankenv_zusatzbeitr_satz - - -@policy_function( - start_date="2009-01-01", - end_date="2018-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", -) -def ges_krankenv_beitr_satz_einheitlich_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate at the beginning of the year. - - From January 2009 until December 2018. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - ges_krankenv_zusatzbeitr_satz - See :func:`ges_krankenv_zusatzbeitr_satz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Beitragssatz for statutory health insurance at the beginning of the year. - - """ - - allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "allgemein" - ] - - return allgemein / 2 + ges_krankenv_zusatzbeitr_satz - - -@policy_function( - start_date="2019-01-01", - leaf_name="ges_krankenv_beitr_satz_arbeitnehmer", -) -def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch( - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate. - - Since 2019. Zusatzbeitrag is split equally between employers and employees. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ - "allgemein" - ] - return (allgemeiner_beitr_satz + ges_krankenv_zusatzbeitr_satz) / 2 - - -@policy_function( - start_date="2019-01-01", - leaf_name="_ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang", -) -def ges_krankenv_beitr_satz_zusatzbeitrag_arbeitnehmer_paritätisch_jahresanfang( - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's health insurance contribution rate at the beginning of the year. - - Zusatzbeitrag is now split equally between employers and employees. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz_jahresanfang"][ - "ges_krankenv" - ]["allgemein"] - return (allgemeiner_beitr_satz + ges_krankenv_zusatzbeitr_satz) / 2 - - -@policy_function( - end_date="2008-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", -) -def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer( # noqa: E501 - sozialv_beitr_params: dict, -) -> float: - """Employer's health insurance contribution rate. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 - - -@policy_function( - end_date="2008-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", -) -def ges_krankenv_beitr_satz_arbeitgeber_mean_kassenspezifisch_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 - sozialv_beitr_params: dict, -) -> float: - """Employer's health insurance contribution rate at the begging of the year. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] - / 2 - ) - - -@policy_function( - start_date="2009-01-01", - end_date="2018-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", -) -def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehmer( - sozialv_beitr_params: dict, -) -> float: - """Employer's health insurance contribution rate. - - From 2009 until 2018, the contribution rate was uniform for all health insurers, - Zusatzbeitrag irrelevant. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] / 2 - - -@policy_function( - start_date="2009-01-01", - end_date="2018-12-31", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", -) -def ges_krankenv_beitr_satz_arbeitgeber_einheitlich_zusatzbeitrag_nur_arbeitnehmer_jahresanfang( # noqa: E501 - sozialv_beitr_params: dict, -) -> float: - """Employer's health insurance contribution rate at the beginning of the year. - - From 2009 until 2018, the contribution rate was uniform for all health insurers, - Zusatzbeitrag irrelevant. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"]["allgemein"] / 2 - ) - - -@policy_function( - start_date="2019-01-01", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber", -) -def _ges_krankenv_beitr_satz_arbeitgeber_zusatzbeitrag_paritätisch( - ges_krankenv_beitr_satz_arbeitnehmer: float, -) -> float: - """Employer's health insurance contribution rate. - - Since 2019, the full contribution rate is now split equally between employers and - employees. - - Parameters - ---------- - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - - Returns - ------- - - """ - return ges_krankenv_beitr_satz_arbeitnehmer - - -@policy_function( - start_date="2019-01-01", - leaf_name="_ges_krankenv_beitr_satz_arbeitgeber_jahresanfang", -) -def _ges_krankenv_beitr_satz_arbeitgeber_zusatzbeitrag_paritätisch_jahresanfang( - _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang: float, -) -> float: - """Employer's health insurance contribution rate at the beginning of the year. - - Since 2019, the full contribution rate is now split equally between employers and - employees. - - Parameters - ---------- - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - - Returns - ------- - - """ - return _ges_krankenv_beitr_satz_arbeitnehmer_jahresanfang - - -def _ges_krankenv_bruttolohn_reg_beschäftigt_m( - bruttolohn_m: float, - _ges_krankenv_beitr_bemess_grenze_m: float, -) -> float: - """Income subject to public health insurance contributions. - - This does not consider reduced contributions for Mini- and Midijobs. Relevant for - the computation of payroll taxes. - - Parameters - ---------- - bruttolohn_m - See :func:`bruttolohn_m`. - _ges_krankenv_beitr_bemess_grenze_m - See :func:`_ges_krankenv_beitr_bemess_grenze_m`. - - Returns - ------- - Income subject to public health insurance contributions. - """ - - return min(bruttolohn_m, _ges_krankenv_beitr_bemess_grenze_m) - - -def _ges_krankenv_bruttolohn_m( - _ges_krankenv_bruttolohn_reg_beschäftigt_m: float, - regulär_beschäftigt: bool, -) -> float: - """Wage subject to public health insurance contributions. - - This affects marginally employed persons and high wages for above the assessment - ceiling. - - Parameters - ---------- - bruttolohn_m - See :func:`bruttolohn_m`. - regulär_beschäftigt - See :func:`regulär_beschäftigt`. - _ges_krankenv_beitr_bemess_grenze_m - See :func:`_ges_krankenv_beitr_bemess_grenze_m`. - - - Returns - ------- - - """ - if regulär_beschäftigt: - out = _ges_krankenv_bruttolohn_reg_beschäftigt_m - else: - out = 0.0 - return out - - -def _ges_krankenv_beitr_arbeitnehmer_reg_beschäftigt_m( - _ges_krankenv_bruttolohn_m: float, ges_krankenv_beitr_satz_arbeitnehmer: float -) -> float: - """Employee's health insurance contributions for regular jobs. - - Parameters - ---------- - _ges_krankenv_bruttolohn_m - See :func:`_ges_krankenv_bruttolohn_m`. - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - Returns - ------- - - """ - - return ges_krankenv_beitr_satz_arbeitnehmer * _ges_krankenv_bruttolohn_m - - -def _ges_krankenv_bemessungsgrundlage_eink_selbständig( - eink_selbst_m: float, - _ges_krankenv_bezugsgröße_selbst_m: float, - selbstständig: bool, - in_priv_krankenv: bool, - _ges_krankenv_beitr_bemess_grenze_m: float, - sozialv_beitr_params: dict, -) -> float: - """Self-employed income which is subject to health insurance contributions. - - The value is bounded from below and from above. Only affects those self-employed who - voluntarily contribute to the public health system. - - Reference: §240 SGB V Abs. 4 - - Parameters - ---------- - eink_selbst_m - See basic input variable :ref:`eink_selbst_m `. - _ges_krankenv_bezugsgröße_selbst_m - See :func:`_ges_krankenv_bezugsgröße_selbst_m`. - selbstständig - See basic input variable :ref:`selbstständig `. - in_priv_krankenv - See basic input variable :ref:`in_priv_krankenv `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - _ges_krankenv_beitr_bemess_grenze_m - See :func:`_ges_krankenv_beitr_bemess_grenze_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - # Calculate if self employed insures via public health insurance. - if selbstständig and not in_priv_krankenv: - out = min( - _ges_krankenv_beitr_bemess_grenze_m, - max( - _ges_krankenv_bezugsgröße_selbst_m - * sozialv_beitr_params[ - "mindestanteil_bezugsgröße_beitragspf_einnahme_selbst" - ], - eink_selbst_m, - ), - ) - else: - out = 0.0 - - return out - - -def ges_krankenv_beitr_selbstständig_m( - _ges_krankenv_bemessungsgrundlage_eink_selbständig: float, - sozialv_beitr_params: dict, -) -> float: - """Health insurance contributions for self-employed's income. The self-employed - pay the full reduced contribution. - - Parameters - ---------- - _ges_krankenv_bemessungsgrundlage_eink_selbständig - See :func:`_ges_krankenv_bemessungsgrundlage_eink_selbständig`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - params = sozialv_beitr_params["beitr_satz"]["ges_krankenv"] - ermäßigter_beitrag = ( - params["ermäßigt"] if ("ermäßigt" in params) else params["mean_allgemein"] - ) - zusatzbeitrag = ( - params["mean_zusatzbeitrag"] if "mean_zusatzbeitrag" in params else 0.0 - ) - ges_krankenv_beitr_satz_selbst = ermäßigter_beitrag + zusatzbeitrag - - out = ( - ges_krankenv_beitr_satz_selbst - * _ges_krankenv_bemessungsgrundlage_eink_selbständig - ) - return out - - -def _ges_krankenv_bemessungsgrundlage_rente_m( - sum_ges_rente_priv_rente_m: float, - _ges_krankenv_beitr_bemess_grenze_m: float, -) -> float: - """Pension income which is subject to health insurance contribution. - - Parameters - ---------- - sum_ges_rente_priv_rente_m - See :func:`sum_ges_rente_priv_rente_m`. - _ges_krankenv_beitr_bemess_grenze_m - See :func:`_ges_krankenv_beitr_bemess_grenze_m`. - - Returns - ------- - - """ - return min(sum_ges_rente_priv_rente_m, _ges_krankenv_beitr_bemess_grenze_m) - - -def ges_krankenv_beitr_rentner_m( - _ges_krankenv_bemessungsgrundlage_rente_m: float, - ges_krankenv_beitr_satz_arbeitnehmer: float, -) -> float: - """Health insurance contributions for pension incomes. - - Parameters - ---------- - _ges_krankenv_bemessungsgrundlage_rente_m - See :func:`_ges_krankenv_bemessungsgrundlage_rente_m`. - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - Returns - ------- - - """ - - return ( - ges_krankenv_beitr_satz_arbeitnehmer * _ges_krankenv_bemessungsgrundlage_rente_m - ) - - -@policy_function(start_date="2003-04-01") -def _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( - midijob_bemessungsentgelt_m: float, - ges_krankenv_beitr_satz_arbeitnehmer: float, - _ges_krankenv_beitr_satz_arbeitgeber: float, -) -> float: - """Sum of employee and employer health insurance contribution for midijobs. - - Midijobs were introduced in April 2003. - - Parameters - ---------- - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - _ges_krankenv_beitr_satz_arbeitgeber - See :func:`_ges_krankenv_beitr_satz_arbeitgeber`. - - Returns - ------- - - """ - out = ( - ges_krankenv_beitr_satz_arbeitnehmer + _ges_krankenv_beitr_satz_arbeitgeber - ) * midijob_bemessungsentgelt_m - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2022-09-30", - leaf_name="_ges_krankenv_beitr_midijob_arbeitgeber_m", -) -def _ges_krankenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( - bruttolohn_m: float, in_gleitzone: bool, _ges_krankenv_beitr_satz_arbeitgeber: float -) -> float: - """Employers' health insurance contribution for midijobs until September 2022. - - Midijobs were introduced in April 2003. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - in_gleitzone - See :func:`in_gleitzone`. - _ges_krankenv_beitr_satz_arbeitgeber - See :func:`_ges_krankenv_beitr_satz_arbeitgeber`. - Returns - ------- - - """ - if in_gleitzone: - out = _ges_krankenv_beitr_satz_arbeitgeber * bruttolohn_m - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2022-10-01", leaf_name="_ges_krankenv_beitr_midijob_arbeitgeber_m" -) -def _ges_krankenv_beitr_midijob_arbeitgeber_m_residuum( - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _ges_krankenv_beitr_midijob_arbeitnehmer_m: float, - in_gleitzone: bool, -) -> float: - """Employer's health insurance contribution for midijobs since October - 2022. - - Parameters - ---------- - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _ges_krankenv_beitr_midijob_arbeitnehmer_m - See :func:`_ges_krankenv_beitr_midijob_arbeitnehmer_m`. - in_gleitzone - See :func:`in_gleitzone`. - _ges_krankenv_beitr_satz_arbeitgeber - See :func:`_ges_krankenv_beitr_satz_arbeitgeber`. - Returns - ------- - - """ - if in_gleitzone: - out = ( - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_krankenv_beitr_midijob_arbeitnehmer_m - ) - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2022-09-30", - leaf_name="_ges_krankenv_beitr_midijob_arbeitnehmer_m", -) -def _ges_krankenv_beitr_midijob_arbeitnehmer_m_residuum( - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _ges_krankenv_beitr_midijob_arbeitgeber_m: float, -) -> float: - """Employee's health insurance contribution for midijobs until September 2022. - - Parameters - ---------- - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _ges_krankenv_beitr_midijob_arbeitgeber_m - See :func:`_ges_krankenv_beitr_midijob_arbeitgeber_m`. - Returns - ------- - - """ - return ( - _ges_krankenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_krankenv_beitr_midijob_arbeitgeber_m - ) - - -@policy_function( - start_date="2022-10-01", leaf_name="_ges_krankenv_beitr_midijob_arbeitnehmer_m" -) -def _ges_krankenv_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( - _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, - ges_krankenv_beitr_satz_arbeitnehmer: float, -) -> float: - """Employee's health insurance contribution for midijobs since October 2022. - - Parameters - ---------- - _midijob_beitragspfl_einnahme_arbeitnehmer_m - See :func:`_midijob_beitragspfl_einnahme_arbeitnehmer_m`. - ges_krankenv_beitr_satz_arbeitnehmer - See :func:`ges_krankenv_beitr_satz_arbeitnehmer`. - Returns - ------- - - """ - return ( - _midijob_beitragspfl_einnahme_arbeitnehmer_m - * ges_krankenv_beitr_satz_arbeitnehmer - ) diff --git a/src/_gettsim/social_insurance_contributions/ges_pflegev.py b/src/_gettsim/social_insurance_contributions/ges_pflegev.py deleted file mode 100644 index 4609467f02..0000000000 --- a/src/_gettsim/social_insurance_contributions/ges_pflegev.py +++ /dev/null @@ -1,787 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(start_date="2005-01-01") -def ges_pflegev_zusatz_kinderlos( - ges_pflegev_hat_kinder: bool, - alter: int, - sozialv_beitr_params: dict, -) -> bool: - """Whether additional care insurance contribution for childless individuals applies. - - Not relevant before 2005 because the contribution rate was independent of the number - of children. - - Parameters - ---------- - ges_pflegev_hat_kinder - See basic input variable :ref:`ges_pflegev_hat_kinder `. - alter - See basic input variable :ref:`alter `. - sozialv_beitr_params: dict, - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - mindestalter = sozialv_beitr_params["ges_pflegev_zusatz_kinderlos_mindestalter"] - return (not ges_pflegev_hat_kinder) and alter >= mindestalter - - -@policy_function( - start_date="1995-01-01", - end_date="2004-12-31", - leaf_name="ges_pflegev_beitr_satz_arbeitnehmer", -) -def ges_pflegev_beitr_satz_arbeitnehmer_ohne_zusatz_fuer_kinderlose( - sozialv_beitr_params: dict, -) -> float: - """Employee's long-term care insurance contribution rate. - - Before 2005, the contribution rate was independent of the number of children. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - - return sozialv_beitr_params["beitr_satz"]["ges_pflegev"] - - -@policy_function( - start_date="2005-01-01", - end_date="2023-06-30", - leaf_name="ges_pflegev_beitr_satz_arbeitnehmer", -) -def ges_pflegev_beitr_satz_arbeitnehmer_zusatz_kinderlos_dummy( - ges_pflegev_zusatz_kinderlos: bool, - sozialv_beitr_params: dict, -) -> float: - """Employee's long-term care insurance contribution rate. - - Since 2005, the contribution rate is increased for childless individuals. - - Parameters - ---------- - ges_pflegev_zusatz_kinderlos - See :func:`ges_pflegev_zusatz_kinderlos`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - - # Add additional contribution for childless individuals - if ges_pflegev_zusatz_kinderlos: - out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] - - return out - - -@policy_function( - start_date="2023-07-01", leaf_name="ges_pflegev_beitr_satz_arbeitnehmer" -) -def ges_pflegev_beitr_satz_arbeitnehmer_mit_kinder_abschlag( - ges_pflegev_anz_kinder_bis_24: int, - ges_pflegev_zusatz_kinderlos: bool, - sozialv_beitr_params: dict, -) -> float: - """Employee's long-term care insurance contribution rate. - - Since July 2023, the contribution rate is reduced for individuals with children - younger than 25. - - Parameters - ---------- - ges_pflegev_anz_kinder_bis_24: int, - See :func:`ges_pflegev_anz_kinder_bis_24`. - ges_pflegev_zusatz_kinderlos - See :func:`ges_pflegev_zusatz_kinderlos`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - - # Add additional contribution for childless individuals - if ges_pflegev_zusatz_kinderlos: - out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] - - # Reduced contribution for individuals with two or more children under 25 - if ges_pflegev_anz_kinder_bis_24 >= 2: - out -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ - "abschlag_kinder" - ] * min(ges_pflegev_anz_kinder_bis_24 - 1, 4) - - return out - - -@policy_function(end_date="2003-03-31", leaf_name="ges_pflegev_beitr_arbeitnehmer_m") -def ges_pflegev_beitr_arbeitnehmer_m_vor_midijob( - _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m: float, - geringfügig_beschäftigt: bool, - ges_pflegev_beitr_rentner_m: float, - ges_pflegev_beitr_selbstständig_m: float, - selbstständig: bool, -) -> float: - """Employee's long-term care insurance contribution until March 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - ges_pflegev_beitr_rentner_m - See :func:`ges_pflegev_beitr_rentner_m`. - ges_pflegev_beitr_selbstständig_m - See :func:`ges_pflegev_beitr_selbstständig_m`. - ges_pflegev_beitr_regulär_besch_m - See :func:`ges_pflegev_beitr_regulär_besch_m`. - selbstständig - See basic input variable :ref:`selbstständig `. - - Returns - ------- - Employee's long-term care insurance contributions. - - """ - - if selbstständig: - out = ges_pflegev_beitr_selbstständig_m - elif geringfügig_beschäftigt: - out = 0.0 - else: - out = _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m - - # Add the care insurance contribution for pensions - return out + ges_pflegev_beitr_rentner_m - - -@policy_function(start_date="2003-04-01", leaf_name="ges_pflegev_beitr_arbeitnehmer_m") -def ges_pflegev_beitr_arbeitnehmer_m_mit_midijob( # noqa: PLR0913 - _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m: float, - geringfügig_beschäftigt: bool, - ges_pflegev_beitr_rentner_m: float, - ges_pflegev_beitr_selbstständig_m: float, - _ges_pflegev_beitr_midijob_arbeitnehmer_m: float, - in_gleitzone: bool, - selbstständig: bool, -) -> float: - """Employee's long-term care insurance contribution since April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - ges_pflegev_beitr_rentner_m - See :func:`ges_pflegev_beitr_rentner_m`. - ges_pflegev_beitr_selbstständig_m - See :func:`ges_pflegev_beitr_selbstständig_m`. - _ges_pflegev_beitr_midijob_arbeitnehmer_m - See :func:`_ges_pflegev_beitr_midijob_arbeitnehmer_m`. - ges_pflegev_beitr_regulär_besch_m - See :func:`ges_pflegev_beitr_regulär_besch_m`. - in_gleitzone - See :func:`in_gleitzone`. - selbstständig - See basic input variable :ref:`selbstständig `. - - Returns - ------- - Employee's long-term care insurance contributions. - - """ - - if selbstständig: - out = ges_pflegev_beitr_selbstständig_m - elif geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _ges_pflegev_beitr_midijob_arbeitnehmer_m - else: - out = _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m - - # Add the care insurance contribution for pensions - return out + ges_pflegev_beitr_rentner_m - - -def _ges_pflegev_beitr_arbeitnehmer_reg_beschäftigt_m( - _ges_krankenv_bruttolohn_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """Employee's long-term care insurance contribution if regularly employed. - - Parameters - ---------- - _ges_krankenv_bruttolohn_m: - See :func:`_ges_krankenv_bruttolohn_m`. - ges_pflegev_beitr_satz_arbeitnehmer: - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - - Returns - ------- - Long-term care insurance contributions of employer and employee. - - """ - - beitr_regulär_beschäftigt_m = ( - _ges_krankenv_bruttolohn_m * ges_pflegev_beitr_satz_arbeitnehmer - ) - - return beitr_regulär_beschäftigt_m - - -@policy_function(end_date="2003-03-31", leaf_name="ges_pflegev_beitr_arbeitgeber_m") -def ges_pflegev_beitr_arbeitgeber_m_vor_midijob( - geringfügig_beschäftigt: bool, - _ges_krankenv_bruttolohn_m: float, - sozialv_beitr_params: dict, - selbstständig: bool, -) -> float: - """Employer's long-term care insurance contribution. - - Before Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_krankenv_bruttolohn_m - See :func:`_ges_krankenv_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - selbstständig - See basic input variable :ref:`selbstständig `. - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - # Calculate care insurance contributions for regular jobs. - beitr_regulär_beschäftigt_m = ( - _ges_krankenv_bruttolohn_m * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] - ) - - if selbstständig or geringfügig_beschäftigt: - out = 0.0 - else: - out = beitr_regulär_beschäftigt_m - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="ges_pflegev_beitr_arbeitgeber_m") -def ges_pflegev_beitr_arbeitgeber_m_mit_midijob( - geringfügig_beschäftigt: bool, - _ges_pflegev_beitr_midijob_arbeitgeber_m: float, - _ges_krankenv_bruttolohn_m: float, - sozialv_beitr_params: dict, - in_gleitzone: bool, - selbstständig: bool, -) -> float: - """Employer's long-term care insurance contribution. - - After Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_pflegev_beitr_midijob_arbeitgeber_m - See :func:`_ges_pflegev_beitr_midijob_arbeitgeber_m`. - _ges_krankenv_bruttolohn_m - See :func:`_ges_krankenv_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - in_gleitzone - See :func:`in_gleitzone`. - selbstständig - See basic input variable :ref:`selbstständig `. - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - # Calculate care insurance contributions for regular jobs. - beitr_regulär_beschäftigt_m = ( - _ges_krankenv_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - ) - - if selbstständig or geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _ges_pflegev_beitr_midijob_arbeitgeber_m - else: - out = beitr_regulär_beschäftigt_m - - return out - - -@policy_function( - start_date="1995-01-01", - end_date="2004-12-31", - leaf_name="ges_pflegev_beitr_selbstständig_m", -) -def ges_pflegev_beitr_selbstständig_m_ohne_zusatz_fuer_kinderlose( - _ges_krankenv_bemessungsgrundlage_eink_selbständig: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """Self-employed individuals' long-term care insurance contribution until 2004. - - Self-employed pay the full contribution (employer + employee), which is either - assessed on their self-employement income or 3/4 of the 'Bezugsgröße' - - Parameters - ---------- - - _ges_krankenv_bemessungsgrundlage_eink_selbständig - See :func:`_ges_krankenv_bemessungsgrundlage_eink_selbständig`. - - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - - Returns - ------- - Self-employed long-term care insurance contributions. - - """ - out = _ges_krankenv_bemessungsgrundlage_eink_selbständig * ( - ges_pflegev_beitr_satz_arbeitnehmer * 2 - ) - - return out - - -@policy_function(start_date="2005-01-01", leaf_name="ges_pflegev_beitr_selbstständig_m") -def ges_pflegev_beitr_selbstständig_m_zusatz_kinderlos_dummy( - _ges_krankenv_bemessungsgrundlage_eink_selbständig: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, - sozialv_beitr_params: dict, -) -> float: - """Self-employed individuals' long-term care insurance contribution since 2005. - - Self-employed pay the full contribution (employer + employee), which is either - assessed on their self-employement income or 3/4 of the 'Bezugsgröße' - - Parameters - ---------- - - _ges_krankenv_bemessungsgrundlage_eink_selbständig - See :func:`_ges_krankenv_bemessungsgrundlage_eink_selbständig`. - - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Self-employed long-term care insurance contributions. - - """ - out = _ges_krankenv_bemessungsgrundlage_eink_selbständig * ( - ges_pflegev_beitr_satz_arbeitnehmer - + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - ) - - return out - - -@policy_function( - start_date="1995-01-01", - end_date="2004-03-31", - leaf_name="ges_pflegev_beitr_rentner_m", -) -def ges_pflegev_beitr_rentner_m_reduz_beitrag( - _ges_krankenv_bemessungsgrundlage_rente_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """Long-term care insurance contribution from pension income from 1995 until March - 2004. - - Pensioners pay the same contribution as employees. - - Parameters - ---------- - _ges_krankenv_bemessungsgrundlage_rente_m - See :func:`_ges_krankenv_bemessungsgrundlage_rente_m`. - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - - Returns - ------- - Retiree's long-term care insurance contributions. - - """ - out = ( - _ges_krankenv_bemessungsgrundlage_rente_m * ges_pflegev_beitr_satz_arbeitnehmer - ) - - return out - - -@policy_function( - start_date="2004-04-01", - end_date="2004-12-31", - leaf_name="ges_pflegev_beitr_rentner_m", -) -def ges_pflegev_beitr_rentner_m_ohne_zusatz_für_kinderlose( - _ges_krankenv_bemessungsgrundlage_rente_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """Health insurance contribution from pension income from April until December 2004. - - Pensioners pay twice the contribution of employees. - - Parameters - ---------- - _ges_krankenv_bemessungsgrundlage_rente_m - See :func:`_ges_krankenv_bemessungsgrundlage_rente_m`. - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - - Returns - ------- - Retiree's long-term care insurance contributions. - - """ - out = _ges_krankenv_bemessungsgrundlage_rente_m * ( - ges_pflegev_beitr_satz_arbeitnehmer * 2 - ) - - return out - - -@policy_function(start_date="2005-01-01", leaf_name="ges_pflegev_beitr_rentner_m") -def ges_pflegev_beitr_rentner_m_zusatz_kinderlos_dummy( - _ges_krankenv_bemessungsgrundlage_rente_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, - sozialv_beitr_params: dict, -) -> float: - """Health insurance contribution from pension income since 2005. - - Pensioners pay twice the contribution of employees, but only once the additional - charge for childless individuals. - - Parameters - ---------- - _ges_krankenv_bemessungsgrundlage_rente_m - See :func:`_ges_krankenv_bemessungsgrundlage_rente_m`. - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Retiree's long-term care insurance contributions. - - """ - out = _ges_krankenv_bemessungsgrundlage_rente_m * ( - ges_pflegev_beitr_satz_arbeitnehmer - + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - ) - - return out - - -@policy_function( - start_date="2003-04-01", - end_date="2004-12-31", - leaf_name="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", -) -def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_bis_2004( - midijob_bemessungsentgelt_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, - sozialv_beitr_params: dict, -) -> float: - """Sum of employee and employer long-term care insurance contributions until 2004. - - Parameters - ---------- - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Long-term care insurance contributions of employer and employee. - - - """ - - gesamtbeitrag_midijob_m = midijob_bemessungsentgelt_m * ( - ges_pflegev_beitr_satz_arbeitnehmer - + sozialv_beitr_params["beitr_satz"]["ges_pflegev"] - ) - - return gesamtbeitrag_midijob_m - - -@policy_function( - start_date="2005-01-01", - leaf_name="_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m", -) -def _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m_ab_2005( - midijob_bemessungsentgelt_m: float, - ges_pflegev_beitr_satz_arbeitnehmer: float, - sozialv_beitr_params: dict, -) -> float: - """Sum of employee and employer long-term care insurance contributions since 2005. - - Parameters - ---------- - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - ges_pflegev_beitr_satz_arbeitnehmer - See :func:`ges_pflegev_beitr_satz_arbeitnehmer`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Long-term care insurance contributions of employer and employee. - - """ - - gesamtbeitrag_midijob_m = midijob_bemessungsentgelt_m * ( - ges_pflegev_beitr_satz_arbeitnehmer - + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - ) - - return gesamtbeitrag_midijob_m - - -@policy_function( - end_date="2004-12-31", - leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m", -) -def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_bis_2004( - bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employer's long-term care insurance contribution until December 2004. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - Employer's long-term care insurance contributions. - - - """ - - out = bruttolohn_m * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] - - return out - - -@policy_function( - start_date="2005-01-01", - end_date="2022-09-30", - leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m", -) -def _ges_pflegev_beitr_midijob_arbeitgeber_m_anteil_bruttolohn_ab_2005( - bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employers' contribution to long-term care insurance between 2005 and September - 2022. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - out = bruttolohn_m * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - return out - - -@policy_function( - start_date="2022-10-01", leaf_name="_ges_pflegev_beitr_midijob_arbeitgeber_m" -) -def _ges_pflegev_beitr_midijob_arbeitgeber_m_residuum( - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _ges_pflegev_beitr_midijob_arbeitnehmer_m: float, -) -> float: - """Employer's long-term care insurance contribution since October 2022. - - Parameters - ---------- - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _ges_pflegev_beitr_midijob_arbeitnehmer_m - See :func:`_ges_pflegev_beitr_midijob_arbeitnehmer_m`. - - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - out = ( - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_pflegev_beitr_midijob_arbeitnehmer_m - ) - return out - - -@policy_function( - end_date="2022-09-30", - leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m", -) -def _ges_pflegev_beitr_midijob_arbeitnehmer_m_residuum( - _ges_pflegev_beitr_midijob_arbeitgeber_m: float, - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, -) -> float: - """Employee's long-term care insurance contribution for Midijobs - until September 2022. - - Parameters - ---------- - _ges_pflegev_beitr_midijob_arbeitgeber_m - See :func:`_ges_pflegev_beitr_midijob_arbeitgeber_m`. - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - - Returns - ------- - Employee's long-term care insurance contributions. - - """ - out = ( - _ges_pflegev_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_pflegev_beitr_midijob_arbeitgeber_m - ) - - return out - - -@policy_function( - start_date="2022-10-01", - end_date="2023-06-30", - leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m", -) -def _ges_pflegev_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( - ges_pflegev_zusatz_kinderlos: bool, - _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, - midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's long-term care insurance contribution since between October 2022 and - June 2023. - - Parameters - ---------- - ges_pflegev_zusatz_kinderlos - See :func:`ges_pflegev_zusatz_kinderlos`. - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - _midijob_beitragspfl_einnahme_arbeitnehmer_m - See :func:`_midijob_beitragspfl_einnahme_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Employee's long-term care insurance contributions. - - """ - # Calculate the employee care insurance contribution - an_beitr_midijob_m = ( - _midijob_beitragspfl_einnahme_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - ) - - # Add additional contribution for childless individuals - if ges_pflegev_zusatz_kinderlos: - an_beitr_midijob_m += ( - midijob_bemessungsentgelt_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] - ) - - return an_beitr_midijob_m - - -@policy_function( - start_date="2023-07-01", leaf_name="_ges_pflegev_beitr_midijob_arbeitnehmer_m" -) -def _ges_pflegev_beitr_midijob_arbeitnehmer_m_anteil_mit_kinder_abschlag( - ges_pflegev_anz_kinder_bis_24: int, - ges_pflegev_zusatz_kinderlos: bool, - _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, - midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's long-term care insurance contribution since July 2023. - - Parameters - ---------- - ges_pflegev_anz_kinder_bis_24 - See :func:`ges_pflegev_anz_kinder_bis_24`. - ges_pflegev_zusatz_kinderlos - See :func:`ges_pflegev_zusatz_kinderlos`. - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - _midijob_beitragspfl_einnahme_arbeitnehmer_m - See :func:`_midijob_beitragspfl_einnahme_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - Employee's long-term care insurance contributions. - - """ - # Calculate the employee care insurance rate - ges_pflegev_rate = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] - - # Reduced contribution for individuals with two or more children under 25 - if ges_pflegev_anz_kinder_bis_24 >= 2: - ges_pflegev_rate -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ - "abschlag_kinder" - ] * min(ges_pflegev_anz_kinder_bis_24 - 1, 4) - - # Calculate the employee care insurance contribution - an_beitr_midijob_m = _midijob_beitragspfl_einnahme_arbeitnehmer_m * ges_pflegev_rate - - # Add additional contribution for childless individuals - if ges_pflegev_zusatz_kinderlos: - an_beitr_midijob_m += ( - midijob_bemessungsentgelt_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] - ) - - return an_beitr_midijob_m diff --git a/src/_gettsim/social_insurance_contributions/ges_rentenv.py b/src/_gettsim/social_insurance_contributions/ges_rentenv.py deleted file mode 100644 index 20a1f248f6..0000000000 --- a/src/_gettsim/social_insurance_contributions/ges_rentenv.py +++ /dev/null @@ -1,323 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(end_date="2003-03-31", leaf_name="ges_rentenv_beitr_arbeitnehmer_m") -def ges_rentenv_beitr_arbeitnehmer_m_vor_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's public pension insurance contribution. - - Before Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - ges_rentenv_beitr_regular_job_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - - if geringfügig_beschäftigt: - out = 0.0 - else: - out = ges_rentenv_beitr_regular_job_m - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="ges_rentenv_beitr_arbeitnehmer_m") -def ges_rentenv_beitr_arbeitnehmer_m_mit_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_midijob_arbeitnehmer_m: float, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, - in_gleitzone: bool, -) -> float: - """Employee's public pension insurance contribution. - - After Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_midijob_arbeitnehmer_m - See :func:`_ges_rentenv_beitr_midijob_arbeitnehmer_m`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - in_gleitzone - See :func:`in_gleitzone`. - - Returns - ------- - - """ - ges_rentenv_beitr_regular_job_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - - if geringfügig_beschäftigt: - out = 0.0 - elif in_gleitzone: - out = _ges_rentenv_beitr_midijob_arbeitnehmer_m - else: - out = ges_rentenv_beitr_regular_job_m - - return out - - -@policy_function(end_date="2003-03-31", leaf_name="ges_rentenv_beitr_arbeitgeber_m") -def ges_rentenv_beitr_arbeitgeber_m_vor_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, - bruttolohn_m: float, -) -> float: - """Employer's public pension insurance contribution. - - Before Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - - Returns - ------- - - """ - ges_rentenv_beitr_regular_job_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - - if geringfügig_beschäftigt: - out = bruttolohn_m * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] - else: - out = ges_rentenv_beitr_regular_job_m - - return out - - -@policy_function(start_date="2003-04-01", leaf_name="ges_rentenv_beitr_arbeitgeber_m") -def ges_rentenv_beitr_arbeitgeber_m_mit_midijob( - geringfügig_beschäftigt: bool, - _ges_rentenv_beitr_midijob_arbeitgeber_m: float, - _ges_rentenv_beitr_bruttolohn_m: float, - sozialv_beitr_params: dict, - in_gleitzone: bool, - bruttolohn_m: float, -) -> float: - """Employer's public pension insurance contribution. - - After Midijob introduction in April 2003. - - Parameters - ---------- - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - _ges_rentenv_beitr_midijob_arbeitgeber_m - See :func:`_ges_rentenv_beitr_midijob_arbeitgeber_m`. - _ges_rentenv_beitr_bruttolohn_m - See :func:`_ges_rentenv_beitr_bruttolohn_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - in_gleitzone - See :func:`in_gleitzone`. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - - Returns - ------- - - """ - ges_rentenv_beitr_regular_job_m = ( - _ges_rentenv_beitr_bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - - if geringfügig_beschäftigt: - out = bruttolohn_m * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] - elif in_gleitzone: - out = _ges_rentenv_beitr_midijob_arbeitgeber_m - else: - out = ges_rentenv_beitr_regular_job_m - - return out - - -@policy_function(start_date="2003-04-01") -def _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m( - midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, -) -> float: - """Sum of employer and employee pension insurance contribution for midijobs. - Midijobs were introduced in April 2003. - - Parameters - ---------- - midijob_bemessungsentgelt_m - See :func:`midijob_bemessungsentgelt_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - ges_beitr_midijob = ( - midijob_bemessungsentgelt_m - * 2 - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - return ges_beitr_midijob - - -@policy_function( - end_date="2022-09-30", - leaf_name="_ges_rentenv_beitr_midijob_arbeitgeber_m", -) -def _ges_rentenv_beitr_midijob_arbeitgeber_m_anteil_bruttolohn( - bruttolohn_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employer's unemployment insurance contribution until September 2022. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - out = bruttolohn_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - return out - - -@policy_function( - start_date="2022-10-01", leaf_name="_ges_rentenv_beitr_midijob_arbeitgeber_m" -) -def _ges_rentenv_beitr_midijob_arbeitgeber_m_residuum( - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, - _ges_rentenv_beitr_midijob_arbeitnehmer_m: float, -) -> float: - """Employer's unemployment insurance contribution since October 2022. - - Parameters - ---------- - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - _ges_rentenv_beitr_midijob_arbeitnehmer_m - See :func:`_ges_rentenv_beitr_midijob_arbeitnehmer_m`. - - Returns - ------- - - """ - out = ( - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_rentenv_beitr_midijob_arbeitnehmer_m - ) - return out - - -@policy_function( - end_date="2022-09-30", - leaf_name="_ges_rentenv_beitr_midijob_arbeitnehmer_m", -) -def _ges_rentenv_beitr_midijob_arbeitnehmer_m_residuum( - _ges_rentenv_beitr_midijob_arbeitgeber_m: float, - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m: float, -) -> float: - """Employee's unemployment insurance contribution for midijobs until September 2022. - - Parameters - ---------- - _ges_rentenv_beitr_midijob_arbeitgeber_m - See :func:`_ges_rentenv_beitr_midijob_arbeitgeber_m`. - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - See :func:`_ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m`. - - Returns - ------- - - """ - an_beitr_midijob = ( - _ges_rentenv_beitr_midijob_sum_arbeitnehmer_arbeitgeber_m - - _ges_rentenv_beitr_midijob_arbeitgeber_m - ) - return an_beitr_midijob - - -@policy_function( - start_date="2022-10-01", leaf_name="_ges_rentenv_beitr_midijob_arbeitnehmer_m" -) -def _ges_rentenv_beitr_midijob_arbeitnehmer_m_anteil_beitragspfl_einnahme( - _midijob_beitragspfl_einnahme_arbeitnehmer_m: float, - sozialv_beitr_params: dict, -) -> float: - """Employee's unemployment insurance contribution for midijobs since October 2022. - - Parameters - ---------- - _midijob_beitragspfl_einnahme_arbeitnehmer_m - See :func:`_midijob_beitragspfl_einnahme_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params `. - - Returns - ------- - - """ - an_beitr_midijob = ( - _midijob_beitragspfl_einnahme_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) - return an_beitr_midijob - - -def _ges_rentenv_beitr_bruttolohn_m( - bruttolohn_m: float, - _ges_rentenv_beitr_bemess_grenze_m: float, -) -> float: - """Wage subject to pension and unemployment insurance contributions. - - Parameters - ---------- - bruttolohn_m - See params documentation :ref:`sozialv_beitr_params `. - _ges_rentenv_beitr_bemess_grenze_m - See :func:`_ges_rentenv_beitr_bemess_grenze_m`. - - - Returns - ------- - - """ - out = min(bruttolohn_m, _ges_rentenv_beitr_bemess_grenze_m) - return out diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index 2196321a52..d0013f860e 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -2,6 +2,7 @@ import datetime +import dags.tree as dt import numpy import pandas as pd @@ -52,13 +53,10 @@ def create_synthetic_data( # noqa: PLR0913 raise ValueError("'n_children' must be between 0 and 10.") default_constant_specs = { - "basic_inputs__weiblich": [ - bool(i % 2 == 1) for i in range(n_children + n_adults) - ], - "basic_inputs__alter": [35] * n_adults - + [8, 5, 3, 1, 10, 9, 7, 6, 4, 2][:n_children], - "basic_inputs__kind": [False] * n_adults + [True] * n_children, - "basic_inputs__in_ausbildung": [False] * n_adults + [True] * n_children, + "weiblich": [bool(i % 2 == 1) for i in range(n_children + n_adults)], + "alter": [35] * n_adults + [8, 5, 3, 1, 10, 9, 7, 6, 4, 2][:n_children], + "familie__kind": [False] * n_adults + [True] * n_children, + "in_ausbildung": [False] * n_adults + [True] * n_children, } if specs_constant_over_households: default_constant_specs.update(specs_constant_over_households) @@ -138,23 +136,26 @@ def create_basic_households( ) if n_adults == 1 and n_children > 0: - alleinerziehend = [True] + [False] * n_children + familie__alleinerziehend = [True] + [False] * n_children else: - alleinerziehend = [False] * (n_children + n_adults) + familie__alleinerziehend = [False] * (n_children + n_adults) if n_children > 0: - ges_pflegev_hat_kinder = [True] * n_adults + [False] * n_children + sozialversicherung__pflege__beitrag__hat_kinder = [True] * n_adults + [ + False + ] * n_children else: - ges_pflegev_hat_kinder = [False] * (n_adults) + sozialversicherung__pflege__beitrag__hat_kinder = [False] * (n_adults) # Add specifications and create DataFrame all_households = [ { - "groupings__hh_id": [i] * (n_adults + n_children), - "basic_inputs__hh_typ": [hh_typ_string] * (n_adults + n_children), - "basic_inputs__ges_pflegev_hat_kinder": ges_pflegev_hat_kinder, - "basic_inputs__alleinerz": alleinerziehend, + "hh_id": [i] * (n_adults + n_children), + "hh_typ": [hh_typ_string] * (n_adults + n_children), + "sozialversicherung__pflege__beitrag__hat_kinder": sozialversicherung__pflege__beitrag__hat_kinder, # noqa: E501 + "familie__alleinerziehend": familie__alleinerziehend, # Assumption: All children are biological children of the adults, children # do not have children themselves - "basic_inputs__ges_pflegev_anz_kinder_bis_24": [n_children] * n_adults + "sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24": [n_children] + * n_adults + [0] * n_children, **specs_constant_over_households, **{v: k[i] for v, k in specs_heterogeneous.items()}, @@ -173,16 +174,13 @@ def create_basic_households( for key, value in SUPPORTED_GROUPINGS.items() if not value.get("potentially_endogenous", True) ] - group_ids = [f"groupings__{g}_id" for g in exogenous_groupings] - df["groupings__p_id"] = df.index + group_ids = [f"{g}_id" for g in exogenous_groupings] + df["p_id"] = df.index df = return_df_with_ids_for_aggregation(df, n_adults, n_children, adults_married) - df = df[ - ["groupings__p_id", *group_ids] - + [c for c in df if c not in [*group_ids, "groupings__p_id"]] - ] - df = df.sort_values(by=[*group_ids, "groupings__p_id"]) + df = df[["p_id", *group_ids] + [c for c in df if c not in [*group_ids, "p_id"]]] + df = df.sort_values(by=[*group_ids, "p_id"]) return df @@ -191,13 +189,13 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie """Create IDs for different groupings. Creates the following IDs: - - p_id_elternteil_1 - - p_id_elternteil_2 - - p_id_kindergeld_empf - - p_id_erziehgeld_empf - - p_id_einstandspartner - - p_id_ehepartner - - p_id_betreuungsk_träger + - familie__p_id_elternteil_1 + - familie__p_id_elternteil_2 + - kindergeld__p_id_empfänger + - erziehungsgeld__p_id_empfänger + - arbeitslosengeld_2__p_id_einstandspartner + - familie__p_id_ehepartner + - einkommensteuer__abzüge__p_id_betreuungskosten_träger Parameters ---------- @@ -219,65 +217,64 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie if n_children > 0: data = return_p_id_elternteil(data=data, n_adults=n_adults) else: - data["groupings__p_id_elternteil_1"] = -1 - data["groupings__p_id_elternteil_2"] = -1 - data["groupings__p_id_kindergeld_empf"] = data["groupings__p_id_elternteil_1"] - data["groupings__p_id_erziehgeld_empf"] = data["groupings__p_id_elternteil_1"] - data["groupings__p_id_betreuungsk_träger"] = data["groupings__p_id_elternteil_1"] + data["familie__p_id_elternteil_1"] = -1 + data["familie__p_id_elternteil_2"] = -1 + data["kindergeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] + data["erziehungsgeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] + data["einkommensteuer__abzüge__p_id_betreuungskosten_träger"] = data[ + "familie__p_id_elternteil_1" + ] # Create other IDs if n_adults == 1: - data["groupings__p_id_ehepartner"] = -1 - data["groupings__p_id_einstandspartner"] = data["groupings__p_id_ehepartner"] + data["familie__p_id_ehepartner"] = -1 + data["arbeitslosengeld_2__p_id_einstandspartner"] = data[ + "familie__p_id_ehepartner" + ] else: - data_adults = data.query("basic_inputs__kind == False").copy() - for hh_id, group in data_adults.groupby("groupings__hh_id"): - relevant_rows = (data_adults["groupings__hh_id"] == hh_id).values - data_adults.loc[relevant_rows, "groupings__p_id_einstandspartner"] = group[ - "groupings__p_id" - ].tolist()[::-1] + data_adults = data.query("familie__kind == False").copy() + for hh_id, group in data_adults.groupby("hh_id"): + relevant_rows = (data_adults["hh_id"] == hh_id).values + data_adults.loc[ + relevant_rows, "arbeitslosengeld_2__p_id_einstandspartner" + ] = group["p_id"].tolist()[::-1] data = pd.merge( data, - data_adults[["groupings__p_id", "groupings__p_id_einstandspartner"]], - on="groupings__p_id", + data_adults[["p_id", "arbeitslosengeld_2__p_id_einstandspartner"]], + on="p_id", how="left", ).fillna(-1) - data["groupings__p_id_einstandspartner"] = data[ - "groupings__p_id_einstandspartner" + data["arbeitslosengeld_2__p_id_einstandspartner"] = data[ + "arbeitslosengeld_2__p_id_einstandspartner" ].astype(numpy.int64) if adults_married: - data["groupings__p_id_ehepartner"] = data[ - "groupings__p_id_einstandspartner" + data["familie__p_id_ehepartner"] = data[ + "arbeitslosengeld_2__p_id_einstandspartner" ] else: - data["groupings__p_id_ehepartner"] = -1 + data["familie__p_id_ehepartner"] = -1 return data def return_p_id_elternteil(data, n_adults): - """Find the p_id_elternteil_1 and p_id_elternteil_2.""" - # p_id_elternteil_1 is the first adult in the household + """Find the familie__p_id_elternteil_1 and familie__p_id_elternteil_2.""" + # familie__p_id_elternteil_1 is the first adult in the household elternteil_1_candidate = { - hh_id: group["groupings__p_id"].iloc[0] - for hh_id, group in data.groupby("groupings__hh_id") + hh_id: group["p_id"].iloc[0] for hh_id, group in data.groupby("hh_id") } - # Apply candidate id if kind, else -1 - data["groupings__p_id_elternteil_1"] = data.apply( - lambda x: elternteil_1_candidate[x["groupings__hh_id"]] - if x["basic_inputs__kind"] - else -1, + # Apply candidate id if familie__kind, else -1 + data["familie__p_id_elternteil_1"] = data.apply( + lambda x: elternteil_1_candidate[x["hh_id"]] if x["familie__kind"] else -1, axis=1, ) if n_adults == 2: - data["groupings__p_id_elternteil_2"] = data.apply( - lambda x: x["groupings__p_id_elternteil_1"] + 1 - if x["basic_inputs__kind"] - else -1, + data["familie__p_id_elternteil_2"] = data.apply( + lambda x: x["familie__p_id_elternteil_1"] + 1 if x["familie__kind"] else -1, axis=1, ) else: - data["groupings__p_id_elternteil_2"] = -1 + data["familie__p_id_elternteil_2"] = -1 return data @@ -300,59 +297,54 @@ def create_constant_across_households_variables(df, n_adults, n_children, policy n_children_lookup = min(n_children, 2) hh_typ_string_lookup = create_hh_typ_string(n_adults, n_children_lookup) - # Take care of bürgerg_bezug_vorj - if policy_year >= 2023 and "basic_inputs__bürgerg_bezug_vorj" not in df: - df["basic_inputs__bürgerg_bezug_vorj"] = True + # Take care of arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr + if ( + policy_year >= 2023 + and "arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr" not in df + ): + df["arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr"] = True default_values = { - "basic_inputs__gemeinsam_veranlagt": ( - df["basic_inputs__kind"] == False if n_adults == 2 else False # noqa: E712 + "einkommensteuer__gemeinsam_veranlagt": ( + df["familie__kind"] == False if n_adults == 2 else False # noqa: E712 ), - "basic_inputs__eigenbedarf_gedeckt": False, - "basic_inputs__mietstufe": 3, - "basic_inputs__geburtsmonat": 1, - "basic_inputs__geburtstag": 1, - "basic_inputs__m_freiw_beitrag": 5.0, - "basic_inputs__m_schul_ausbild": 10.0, - "basic_inputs__m_kind_berücks_zeit": 24.0, - "basic_inputs__m_pfleg_berücks_zeit": 1.0, - "basic_inputs__elterngeld_nettoeinkommen_vorjahr_m": 20000.0, - "basic_inputs__geburtsjahr": policy_year - df["basic_inputs__alter"], - "basic_inputs__jahr_renteneintr": policy_year - df["basic_inputs__alter"] + 67, - "basic_inputs__grundr_zeiten": (df["basic_inputs__alter"] - 20).clip(lower=0) + "eigenbedarf_gedeckt": False, + "mietstufe": 3, + "geburtsmonat": 1, + "geburtstag": 1, + "rente__altersrente__freiwillige_beitragsmonate": 5.0, + "rente__altersrente__schulausbildung_m": 10.0, + "rente__altersrente__kinderberücksichtigungszeiten_monate": 24.0, + "rente__altersrente__pflegeberücksichtigungszeiten_monate": 1.0, + "elterngeld__nettoeinkommen_vorjahr_m": 20000.0, + "geburtsjahr": policy_year - df["alter"], + "jahr_renteneintr": policy_year - df["alter"] + 67, + "rente__grundrente__sozialversicherung__rente__grundrente__grundrentenzeiten_monate": ( # noqa: E501 + df["alter"] - 20 + ).clip(lower=0) * 12, - "basic_inputs__grundr_bew_zeiten": (df["basic_inputs__alter"] - 20).clip( - lower=0 - ) + "rente__grundrente__bewertungszeiten_monate": (df["alter"] - 20).clip(lower=0) * 12, - "basic_inputs__entgeltp": (df["basic_inputs__alter"] - 20) + "entgeltp": (df["alter"] - 20).clip(lower=0).astype(float), + "rente__grundrente__entgeltpunkte": (df["alter"] - 20) .clip(lower=0) .astype(float), - "basic_inputs__grundr_entgeltp": (df["basic_inputs__alter"] - 20) - .clip(lower=0) - .astype(float), - "basic_inputs__m_pflichtbeitrag": ( - (df["basic_inputs__alter"] - 25).clip(lower=0) * 12 + "rente__altersrente__pflichtbeitragsmonate": ( + (df["alter"] - 25).clip(lower=0) * 12 ).astype(float), - "basic_inputs__m_pflichtbeitrag_alt": ( - (df["basic_inputs__alter"] - 40).clip(lower=0) * 12 + "rente__altersrente__pflichtbeitragsmonate_alt": ( + (df["alter"] - 40).clip(lower=0) * 12 ).astype(float), - "basic_inputs__wohnfläche_hh": float( - bg_daten["wohnfläche"][hh_typ_string_lookup] - ), - "basic_inputs__bruttokaltmiete_m_hh": float( + "wohnfläche_hh": float(bg_daten["wohnfläche"][hh_typ_string_lookup]), + "wohnen__bruttokaltmiete_m_hh": float( bg_daten["bruttokaltmiete"][hh_typ_string_lookup] ), - "basic_inputs__heizkosten_m_hh": float( + "arbeitslosengeld_2__heizkosten_m_hh": float( bg_daten["heizkosten"][hh_typ_string_lookup] ), } - # Set default values for new columns. - types_input_variables_with_qualified_names = tree_to_dict_with_qualified_name( # noqa: F821 - TYPES_INPUT_VARIABLES - ) - for input_col, col_type in types_input_variables_with_qualified_names.items(): + for input_col, col_type in dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES).items(): if input_col not in df: if input_col in default_values: df[input_col] = default_values[input_col] diff --git a/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml b/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml index b94196c3a2..39c5a49a56 100644 --- a/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml +++ b/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml @@ -4,8 +4,10 @@ wohnfläche: de: Durchschnittliche Wohnfläche en: Average Appartment Size description: - de: Durchschnittliche Wohnfläche pro SGB II - Bedarfsgemeinschaft - en: Average Appartement Size of households living from unemployment benefit + de: >- + Durchschnittliche Wohnfläche pro SGB II - Bedarfsgemeinschaft + en: >- + Average Appartement Size of households living from unemployment benefit unit: Square Meter 2018-01-01: single_0_children: 44 diff --git a/src/_gettsim/taxes/abgelt_st.py b/src/_gettsim/taxes/abgelt_st.py deleted file mode 100644 index ec0eafbcb3..0000000000 --- a/src/_gettsim/taxes/abgelt_st.py +++ /dev/null @@ -1,47 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(start_date="2009-01-01") -def abgelt_st_y_sn(zu_verst_kapitaleink_y_sn: float, abgelt_st_params: dict) -> float: - """Calculate abgeltungssteuer on Steuernummer level. - - Parameters - ---------- - zu_verst_kapitaleink_y_sn - See :func:`zu_verst_kapitaleink_y_sn`. - abgelt_st_params - See params documentation :ref:`abgelt_st_params `. - - Returns - ------- - - """ - return abgelt_st_params["satz"] * zu_verst_kapitaleink_y_sn - - -def zu_verst_kapitaleink_y_sn( - kapitaleink_brutto_y_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate taxable income on Steuernummer level. - - Parameters - ---------- - kapitaleink_brutto_y_sn - See :func:`kapitaleink_brutto_y_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = kapitaleink_brutto_y_sn - anz_personen_sn * ( - eink_st_abzuege_params["sparerpauschbetrag"] - + eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] - ) - - return max(out, 0.0) diff --git a/src/_gettsim/taxes/eink_st.py b/src/_gettsim/taxes/eink_st.py deleted file mode 100644 index a3cf1fe9d6..0000000000 --- a/src/_gettsim/taxes/eink_st.py +++ /dev/null @@ -1,261 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - -aggregate_by_p_id_eink_st = { - "eink_st_rel_kindergeld_anz_ansprüche_1": { - "p_id_to_aggregate_by": "p_id_elternteil_1", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, - "eink_st_rel_kindergeld_anz_ansprüche_2": { - "p_id_to_aggregate_by": "p_id_elternteil_2", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, -} - - -@policy_function(params_key_for_rounding="eink_st") -def eink_st_ohne_kinderfreib_y( - _zu_verst_eink_ohne_kinderfreib_y_sn: float, - anz_personen_sn: int, - eink_st_params: dict, -) -> float: - """Taxes without child allowance on Steuernummer level. Also referred to as - "tarifliche ESt II". - - Parameters - ---------- - _zu_verst_eink_ohne_kinderfreib_y_sn - See :func:`_zu_verst_eink_ohne_kinderfreib_y_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_params - See params documentation :ref:`eink_st_params `. - - Returns - ------- - - """ - zu_verst_eink_per_indiv = _zu_verst_eink_ohne_kinderfreib_y_sn / anz_personen_sn - out = _eink_st_tarif(zu_verst_eink_per_indiv, params=eink_st_params) - - return out - - -@policy_function( - end_date="2001-12-31", - leaf_name="eink_st_mit_kinderfreib_y_sn", - params_key_for_rounding="eink_st", -) -def eink_st_mit_kinderfreib_y_sn_bis_2001() -> float: - raise NotImplementedError("Tax system before 2002 is not implemented yet.") - - -@policy_function( - start_date="2002-01-01", - leaf_name="eink_st_mit_kinderfreib_y_sn", - params_key_for_rounding="eink_st", -) -def eink_st_mit_kinderfreib_y_sn_ab_2002( - _zu_verst_eink_mit_kinderfreib_y_sn: float, - anz_personen_sn: int, - eink_st_params: dict, -) -> float: - """Taxes with child allowance on Steuernummer level. Also referred to as "tarifliche - ESt I". - - Parameters - ---------- - _zu_verst_eink_mit_kinderfreib_y_sn - See :func:`_zu_verst_eink_mit_kinderfreib_y_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_params - See params documentation :ref:`eink_st_params `. - - Returns - ------- - - """ - zu_verst_eink_per_indiv = _zu_verst_eink_mit_kinderfreib_y_sn / anz_personen_sn - out = _eink_st_tarif(zu_verst_eink_per_indiv, params=eink_st_params) - - return out - - -def _eink_st_tarif(x: float, params: dict) -> float: - """The German income tax tariff. - - Parameters - ---------- - x : float - The series of floats which the income tax schedule is applied to. - params : dict - Dictionary created in respy.piecewise_functions. - - Returns - ------- - - """ - out = piecewise_polynomial( - x=x, - thresholds=params["eink_st_tarif"]["thresholds"], - rates=params["eink_st_tarif"]["rates"], - intercepts_at_lower_thresholds=params["eink_st_tarif"][ - "intercepts_at_lower_thresholds" - ], - ) - return out - - -@policy_function( - end_date="1996-12-31", leaf_name="eink_st_y_sn", params_key_for_rounding="eink_st" -) -def eink_st_y_sn_kindergeld_kinderfreib_parallel( - eink_st_mit_kinderfreib_y_sn: float, -) -> float: - """Income tax calculation on Steuernummer level allowing for claiming - Kinderfreibetrag and receiving Kindergeld at the same time. - - Parameters - ---------- - eink_st_mit_kinderfreib_y_sn - See :func:`eink_st_mit_kinderfreib_y_sn`. - - Returns - ------- - - """ - return eink_st_mit_kinderfreib_y_sn - - -@policy_function( - start_date="1997-01-01", - leaf_name="eink_st_y_sn", - params_key_for_rounding="eink_st", -) -def eink_st_y_sn_kindergeld_oder_kinderfreib( - eink_st_ohne_kinderfreib_y_sn: float, - eink_st_mit_kinderfreib_y_sn: float, - kinderfreib_günstiger_sn: bool, - eink_st_rel_kindergeld_y_sn: float, -) -> float: - """Income tax calculation on Steuernummer level since 1997. - - Parameters - ---------- - eink_st_ohne_kinderfreib_y_sn - See :func:`eink_st_ohne_kinderfreib_y_sn`. - eink_st_mit_kinderfreib_y_sn - See :func:`eink_st_mit_kinderfreib_y_sn`. - kinderfreib_günstiger_sn - See :func:`kinderfreib_günstiger_sn`. - eink_st_rel_kindergeld_y_sn - See :func:`eink_st_rel_kindergeld_y_sn`. - - Returns - ------- - - """ - if kinderfreib_günstiger_sn: - out = eink_st_mit_kinderfreib_y_sn + eink_st_rel_kindergeld_y_sn - else: - out = eink_st_ohne_kinderfreib_y_sn - - return out - - -def kinderfreib_günstiger_sn( - eink_st_ohne_kinderfreib_y_sn: float, - eink_st_mit_kinderfreib_y_sn: float, - eink_st_rel_kindergeld_y_sn: float, -) -> bool: - """Kinderfreibetrag more favorable than Kindergeld. - - Parameters - ---------- - eink_st_ohne_kinderfreib_y_sn - See :func:`eink_st_ohne_kinderfreib_y_sn`. - eink_st_mit_kinderfreib_y_sn - See :func:`eink_st_mit_kinderfreib_y_sn`. - eink_st_rel_kindergeld_y_sn - See :func:`eink_st_rel_kindergeld_y_sn`. - Returns - ------- - - """ - unterschiedsbeitrag = eink_st_ohne_kinderfreib_y_sn - eink_st_mit_kinderfreib_y_sn - - out = unterschiedsbeitrag > eink_st_rel_kindergeld_y_sn - return out - - -@policy_function(start_date="2023-01-01", leaf_name="eink_st_rel_kindergeld_m") -def eink_st_rel_kindergeld_ohne_staffelung_m( - eink_st_rel_kindergeld_anz_ansprüche_1: int, - eink_st_rel_kindergeld_anz_ansprüche_2: int, - kindergeld_params: dict, -) -> float: - """Kindergeld relevant for income tax. For each parent, half of the actual - Kindergeld claim is considered. - - Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der - Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." - - Parameters - ---------- - eink_st_rel_kindergeld_anz_ansprüche_1 - See :func:`eink_st_rel_kindergeld_anz_ansprüche_1`. - eink_st_rel_kindergeld_anz_ansprüche_2 - See :func:`eink_st_rel_kindergeld_anz_ansprüche_2`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - Returns - ------- - - """ - eink_st_rel_kindergeld_anz_ansprüche = ( - eink_st_rel_kindergeld_anz_ansprüche_1 + eink_st_rel_kindergeld_anz_ansprüche_2 - ) - return kindergeld_params["kindergeld"] * eink_st_rel_kindergeld_anz_ansprüche / 2 - - -@policy_function(end_date="2022-12-31", leaf_name="eink_st_rel_kindergeld_m") -def eink_st_rel_kindergeld_mit_staffelung_m( - eink_st_rel_kindergeld_anz_ansprüche_1: int, - eink_st_rel_kindergeld_anz_ansprüche_2: int, - kindergeld_params: dict, -) -> float: - """Kindergeld relevant for income tax. For each parent, half of the actual - Kindergeld claim is considered. - - Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der - Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." - - Parameters - ---------- - eink_st_rel_kindergeld_anz_ansprüche_1 - See :func:`eink_st_rel_kindergeld_anz_ansprüche_1`. - eink_st_rel_kindergeld_anz_ansprüche_2 - See :func:`eink_st_rel_kindergeld_anz_ansprüche_2`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - Returns - ------- - """ - eink_st_rel_kindergeld_anz_ansprüche = ( - eink_st_rel_kindergeld_anz_ansprüche_1 + eink_st_rel_kindergeld_anz_ansprüche_2 - ) - - if eink_st_rel_kindergeld_anz_ansprüche == 0: - sum_eink_st_rel_kindergeld = 0.0 - else: - sum_eink_st_rel_kindergeld = sum( - kindergeld_params["kindergeld"][ - (min(i, max(kindergeld_params["kindergeld"]))) - ] - for i in range(1, eink_st_rel_kindergeld_anz_ansprüche + 1) - ) - - return sum_eink_st_rel_kindergeld / 2 diff --git a/src/_gettsim/functions/__init__.py b/src/_gettsim/taxes/einkommensteuer/__init__.py similarity index 100% rename from src/_gettsim/functions/__init__.py rename to src/_gettsim/taxes/einkommensteuer/__init__.py diff --git a/src/_gettsim/social_insurance_contributions/__init__.py b/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/__init__.py similarity index 100% rename from src/_gettsim/social_insurance_contributions/__init__.py rename to src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/__init__.py diff --git a/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py b/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py new file mode 100644 index 0000000000..d919620fa0 --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py @@ -0,0 +1,60 @@ +"""Taxes on capital income (Abgeltungssteuer).""" + +from _gettsim.function_types import policy_function + + +@policy_function(start_date="2009-01-01") +def betrag_y_sn( + zu_versteuerndes_einkommen_y_sn: float, + abgelt_st_params: dict, +) -> float: + """Abgeltungssteuer on Steuernummer level. + + Parameters + ---------- + zu_versteuerndes_einkommen_y_sn + See :func:`zu_versteuerndes_einkommen_y_sn`. + abgelt_st_params + See params documentation :ref:`abgelt_st_params `. + + Returns + ------- + + """ + return abgelt_st_params["satz"] * zu_versteuerndes_einkommen_y_sn + + +@policy_function(start_date="2009-01-01") +def zu_versteuerndes_einkommen_y_sn( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn: float, + einkommensteuer__anzahl_personen_sn: float, + eink_st_abzuege_params: dict, +) -> float: + """Taxable capital income for Abgeltungssteuer. + + TODO(@MImmesberger): Find out whether Sparerpauschbetrag and + Sparer-Werbungskostenpauschbetrag are transferable to partner with same sn_id. + https://github.com/iza-institute-of-labor-economics/gettsim/issues/843 + + Parameters + ---------- + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = ( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn + - einkommensteuer__anzahl_personen_sn + * ( + eink_st_abzuege_params["sparerpauschbetrag"] + + eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] + ) + ) + return max(out, 0.0) diff --git a/src/_gettsim/taxes/zu_verst_eink/__init__.py "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" similarity index 100% rename from src/_gettsim/taxes/zu_verst_eink/__init__.py rename to "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" new file mode 100644 index 0000000000..183f8ab683 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" @@ -0,0 +1,56 @@ +"""Tax allowances.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_y_sn( + sonderausgaben_y_sn: float, + vorsorgeaufwendungen_y_sn: float, + betrag_ind_y_sn: float, +) -> float: + """Calculate total allowances on Steuernummer level. + + Parameters + ---------- + + sonderausgaben_y_sn + See :func:`sonderausgaben_y_sn`. + vorsorgeaufwendungen_y_sn + See :func:`vorsorgeaufwendungen_y_sn`. + betrag_ind_y_sn + See :func:`betrag_ind_y_sn`. + + Returns + ------- + + """ + out = sonderausgaben_y_sn + vorsorgeaufwendungen_y_sn + betrag_ind_y_sn + + return out + + +@policy_function() +def betrag_ind_y( + pauschbetrag_behinderung_y: float, + alleinerziehend_betrag_y: float, + altersfreibetrag_y: float, +) -> float: + """Sum up all tax-deductible allowances applicable at the individual level. + + Parameters + ---------- + + pauschbetrag_behinderung_y + See :func:`pauschbetrag_behinderung_y`. + alleinerziehend_betrag_y + See :func:`alleinerziehend_betrag_y`. + altersfreibetrag_y + See :func:`altersfreibetrag_y`. + + Returns + ------- + + """ + out = pauschbetrag_behinderung_y + alleinerziehend_betrag_y + altersfreibetrag_y + return out diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" new file mode 100644 index 0000000000..d1b0e27343 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" @@ -0,0 +1,67 @@ +"""Tax allowances for single parents.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2014-12-31", leaf_name="alleinerziehend_betrag_y") +def alleinerziehend_betrag_y_pauschal( + einkommensteuer__alleinerziehend_sn: bool, eink_st_abzuege_params: dict +) -> float: + """Calculate tax deduction allowance for single parents until 2014. + + This used to be called 'Haushaltsfreibetrag'. + + Parameters + ---------- + einkommensteuer__alleinerziehend_sn + See :func:`einkommensteuer__alleinerziehend_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + if einkommensteuer__alleinerziehend_sn: + out = eink_st_abzuege_params["alleinerziehendenfreibetrag"] + else: + out = 0.0 + + return out + + +@policy_function(start_date="2015-01-01", leaf_name="alleinerziehend_betrag_y") +def alleinerziehend_betrag_y_nach_kinderzahl( + einkommensteuer__alleinerziehend_sn: bool, + kindergeld__anzahl_ansprüche_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Calculate tax deduction allowance for single parents since 2015. + + Since 2015, it increases with + number of children. Used to be called 'Haushaltsfreibetrag' + + Parameters + ---------- + einkommensteuer__alleinerziehend_sn + See :func:`einkommensteuer__alleinerziehend_sn`. + kindergeld__anzahl_ansprüche_sn + See :func:`kindergeld__anzahl_ansprüche_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + betrag_y = ( + eink_st_abzuege_params["alleinerziehendenfreibetrag"] + + (kindergeld__anzahl_ansprüche_sn - 1) + * eink_st_abzuege_params["alleinerziehendenfreibetrag_zusatz"] + ) + if einkommensteuer__alleinerziehend_sn: + out = betrag_y + else: + out = 0.0 + + return out diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" new file mode 100644 index 0000000000..0d48882432 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" @@ -0,0 +1,128 @@ +"""Tax allowances for the elderly.""" + +from _gettsim.config import numpy_or_jax as np +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") +def altersfreibetrag_y_bis_2004( # noqa: PLR0913 + alter: int, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Calculate tax deduction allowance for elderly until 2004. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + alter + See basic input variable :ref:`alter `. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y `. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + altersgrenze = eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"] + weiteres_einkommen = max( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, + 0.0, + ) + if alter > altersgrenze: + out = min( + eink_st_abzuege_params["altersentlastung_quote"] + * ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + + weiteres_einkommen + ), + eink_st_abzuege_params["altersentlastungsbetrag_max"], + ) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2005-01-01", leaf_name="altersfreibetrag_y") +def altersfreibetrag_y_ab_2005( # noqa: PLR0913 + alter: int, + geburtsjahr: int, + sozialversicherung__geringfügig_beschäftigt: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Calculate tax deduction allowance for elderly since 2005. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + alter + See basic input variable :ref:`alter `. + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y `. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + + Returns + ------- + + """ + # Maximum tax credit by birth year. + bins = sorted(eink_st_abzuege_params["altersentlastungsbetrag_max"]) + if geburtsjahr <= 1939: + selected_bin = 1940 + else: + # Select corresponding bin. + selected_bin = bins[ + np.searchsorted(np.asarray([*bins, np.inf]), geburtsjahr, side="right") - 1 + ] + + # Select appropriate tax credit threshold and quota. + out_max = eink_st_abzuege_params["altersentlastungsbetrag_max"][selected_bin] + + einkommen_lohn = ( + 0 + if sozialversicherung__geringfügig_beschäftigt + else einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + ) + weiteres_einkommen = max( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, + 0.0, + ) + out_quote = eink_st_abzuege_params["altersentlastung_quote"][selected_bin] * ( + einkommen_lohn + weiteres_einkommen + ) + + if alter > eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"]: + out = min(out_quote, out_max) + else: + out = 0.0 + + return out diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" new file mode 100644 index 0000000000..7086859c58 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" @@ -0,0 +1,37 @@ +"""Tax allowances for the disabled.""" + +from _gettsim.config import numpy_or_jax as np +from _gettsim.function_types import policy_function + + +@policy_function() +def pauschbetrag_behinderung_y( + behinderungsgrad: int, eink_st_abzuege_params: dict +) -> float: + """Assign tax deduction allowance for handicaped to different handicap degrees. + + Parameters + ---------- + behinderungsgrad + See basic input variable :ref:`behinderungsgrad `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + + # Get disability degree thresholds + bins = sorted(eink_st_abzuege_params["behinderten_pauschbetrag"]) + + # Select corresponding bin. + selected_bin_index = ( + np.searchsorted(np.asarray([*bins, np.inf]), behinderungsgrad, side="right") - 1 + ) + selected_bin = bins[selected_bin_index] + + # Select appropriate pauschbetrag. + out = eink_st_abzuege_params["behinderten_pauschbetrag"][selected_bin] + + return float(out) diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" new file mode 100644 index 0000000000..f45fb4848e --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -0,0 +1,132 @@ +"""Tax allowances for special expenses.""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "betreuungskosten_elternteil_m": AggregateByPIDSpec( + p_id_to_aggregate_by="p_id_betreuungskosten_träger", + source="betreuungskosten_m", + aggr="sum", + ), +} + + +@policy_function(end_date="2011-12-31", leaf_name="sonderausgaben_y_sn") +def sonderausgaben_y_sn_nur_pauschale( + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Sonderausgaben on Steuernummer level until 2011. + + Only a lump sum payment is implemented. + + Parameters + ---------- + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + # so far, only the Sonderausgabenpauschale is considered + + out = ( + eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] + * einkommensteuer__anzahl_personen_sn + ) + + return float(out) + + +@policy_function(start_date="2012-01-01", leaf_name="sonderausgaben_y_sn") +def sonderausgaben_y_sn_mit_betreuung( + absetzbare_betreuungskosten_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Sonderausgaben on Steuernummer level since 2012. + + We follow 10 Abs.1 Nr. 5 EStG. You can find + details here https://www.buzer.de/s1.htm?a=10&g=estg. + + Parameters + ---------- + absetzbare_betreuungskosten_y_sn + See :func:`absetzbare_betreuungskosten_y_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + + Returns + ------- + + """ + sonderausgaben_gesamt = absetzbare_betreuungskosten_y_sn + pauschale = ( + eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] + * einkommensteuer__anzahl_personen_sn + ) + + out = max(sonderausgaben_gesamt, pauschale) + + return float(out) + + +@policy_function() +def ausgaben_für_betreuung_y( + betreuungskosten_elternteil_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Individual deductable childcare cost for each individual child under 14. + + Parameters + ---------- + betreuungskosten_elternteil_y + See :func:`betreuungskosten_elternteil_y`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = min( + betreuungskosten_elternteil_y, + eink_st_abzuege_params["kinderbetreuungskosten_abz_maximum"], + ) + return out + + +@policy_function(params_key_for_rounding="eink_st_abzuege") +def absetzbare_betreuungskosten_y_sn( + ausgaben_für_betreuung_y_sn: float, + eink_st_abzuege_params: dict, +) -> float: + """Sonderausgaben for childcare on Steuernummer level. + + We follow 10 Abs.1 Nr. 5 EStG. You can + details here https://www.buzer.de/s1.htm?a=10&g=estg. + + Parameters + ---------- + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + ausgaben_für_betreuung_y_sn + See :func:`ausgaben_für_betreuung_y_sn`. + + Returns + ------- + + """ + + out = ( + ausgaben_für_betreuung_y_sn + * eink_st_abzuege_params["kinderbetreuungskosten_abz_anteil"] + ) + + return float(out) diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" new file mode 100644 index 0000000000..3ff0c1eed1 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" @@ -0,0 +1,400 @@ +from _gettsim.function_types import policy_function + + +@policy_function( + end_date="2004-12-31", + leaf_name="vorsorgeaufwendungen_y_sn", + params_key_for_rounding="eink_st_abzuege", +) +def vorsorgeaufwendungen_y_sn_bis_2004( + vorsorgeaufwendungen_regime_bis_2004_y_sn: float, +) -> float: + """Vorsorgeaufwendungen until 2004. + + Parameters + ---------- + vorsorgeaufwendungen_regime_bis_2004_y_sn + See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. + + Returns + ------- + + """ + return vorsorgeaufwendungen_regime_bis_2004_y_sn + + +@policy_function( + start_date="2005-01-01", + end_date="2009-12-31", + leaf_name="vorsorgeaufwendungen_y_sn", + params_key_for_rounding="eink_st_abzuege", +) +def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( + vorsorgeaufwendungen_regime_bis_2004_y_sn: float, + vorsorgeaufwendungen_globale_kappung_y_sn: float, +) -> float: + """Vorsorgeaufwendungen from 2005 to 2009. + + Günstigerprüfung against the pre-2005 regime. + + Parameters + ---------- + vorsorgeaufwendungen_regime_bis_2004_y_sn + See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. + vorsorgeaufwendungen_globale_kappung_y_sn + See :func:`vorsorgeaufwendungen_globale_kappung_y_sn`. + + Returns + ------- + + """ + + return max( + vorsorgeaufwendungen_regime_bis_2004_y_sn, + vorsorgeaufwendungen_globale_kappung_y_sn, + ) + + +@policy_function( + start_date="2010-01-01", + end_date="2019-12-31", + leaf_name="vorsorgeaufwendungen_y_sn", + params_key_for_rounding="eink_st_abzuege", +) +def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( + vorsorgeaufwendungen_regime_bis_2004_y_sn: float, + vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn: float, +) -> float: + """Vorsorgeaufwendungen from 2010 to 2019. + + Günstigerprüfung against the pre-2005 regime. + + Parameters + ---------- + vorsorgeaufwendungen_regime_bis_2004_y_sn + See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. + vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn + See :func:`vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn`. + + Returns + ------- + + """ + + return max( + vorsorgeaufwendungen_regime_bis_2004_y_sn, + vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn, + ) + + +@policy_function( + start_date="2020-01-01", + leaf_name="vorsorgeaufwendungen_y_sn", + params_key_for_rounding="eink_st_abzuege", +) +def vorsorgeaufwendungen_y_sn_ab_2020( + vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn: float, +) -> float: + """Vorsorgeaufwendungen since 2020. + + Günstigerprüfung against the regime before 2005 revoked. + + Parameters + ---------- + vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn + See :func:`vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn`. + + Returns + ------- + + """ + return vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn + + +@policy_function( + end_date="2019-12-31", +) +def vorsorgeaufwendungen_regime_bis_2004_y_sn( + vorwegabzug_lohnsteuer_y_sn: float, + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Vorsorgeaufwendungen calculated using the pre-2005 regime. + + Parameters + ---------- + vorwegabzug_lohnsteuer_y_sn + See :func:`vorwegabzug_lohnsteuer_y_sn`. + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + multiplikator1 = max( + ( + ( + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + ) + - vorwegabzug_lohnsteuer_y_sn + ), + 0.0, + ) + + item_1 = (1 / einkommensteuer__anzahl_personen_sn) * multiplikator1 + + höchstbetrag = eink_st_abzuege_params["vorsorge_2004_grundhöchstbetrag"] + + if item_1 > höchstbetrag: + multiplikator2 = höchstbetrag + else: + multiplikator2 = item_1 + + item_2 = (1 / einkommensteuer__anzahl_personen_sn) * multiplikator2 + + höchstgrenze_item3 = einkommensteuer__anzahl_personen_sn * höchstbetrag + + if (item_1 - item_2) > höchstgrenze_item3: + item_3 = 0.5 * höchstgrenze_item3 + else: + item_3 = 0.5 * (item_1 - item_2) + + out = vorwegabzug_lohnsteuer_y_sn + item_2 + item_3 + + return out + + +@policy_function( + start_date="2005-01-01", + end_date="2009-12-31", +) +def vorsorgeaufwendungen_globale_kappung_y_sn( # noqa: PLR0913 + altersvorsorge_y_sn: float, + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn: float, + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Vorsorgeaufwendungen before favorability checks from 2005 to 2009. + + All deductions for social insurance contributions are capped. + + Parameters + ---------- + altersvorsorge_y_sn + See :func:`altersvorsorge_y_sn`. + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn`. + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + sum_vorsorge = ( + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn + + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn + ) + max_value = ( + einkommensteuer__anzahl_personen_sn + * eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] + ) + + sum_vorsorge = min(sum_vorsorge, max_value) + out = sum_vorsorge + altersvorsorge_y_sn + + return out + + +@policy_function( + start_date="2010-01-01", +) +def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( # noqa: PLR0913 + altersvorsorge_y_sn: float, + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn: float, + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Vorsorgeaufwendungen. + + Expenses for health insurance contributions are not subject to any caps. + + Parameters + ---------- + altersvorsorge_y_sn + See :func:`altersvorsorge_y_sn`. + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn`. + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + basiskrankenversicherung = ( + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn + + (1 - eink_st_abzuege_params["vorsorge_kranken_minderung"]) + * sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + ) + + sonst_vors_max = ( + eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] + * einkommensteuer__anzahl_personen_sn + ) + sonst_vors_before_basiskrankenv = min( + ( + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn + + sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn + + sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn + ), + sonst_vors_max, + ) + + # Basiskrankenversicherung can always be deducted even if above sonst_vors_max + sonst_vors = max(basiskrankenversicherung, sonst_vors_before_basiskrankenv) + + out = sonst_vors + altersvorsorge_y_sn + return out + + +@policy_function( + start_date="2005-01-01", + end_date="2022-12-31", + leaf_name="altersvorsorge_y_sn", +) +def altersvorsorge_y_sn_phase_in( + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, + beitrag_private_rentenversicherung_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Contributions to retirement savings deductible from taxable income. + + The share of deductible contributions increases each year from 60% in 2005 to 100% + in 2025. + + Parameters + ---------- + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. + beitrag_private_rentenversicherung_y_sn + See :func:`beitrag_private_rentenversicherung_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = ( + eink_st_abzuege_params["einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005"] + * ( + 2 * sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + + beitrag_private_rentenversicherung_y_sn + ) + - sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + ) + max_value = ( + einkommensteuer__anzahl_personen_sn + * eink_st_abzuege_params["vorsorge_altersaufw_max"] + ) + out = min(out, max_value) + + return out + + +@policy_function(start_date="2023-01-01", leaf_name="altersvorsorge_y_sn") +def altersvorsorge_y_sn_volle_anrechnung( + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, + beitrag_private_rentenversicherung_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Contributions to retirement savings deductible from taxable income. + + Parameters + ---------- + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. + beitrag_private_rentenversicherung_y_sn + See :func:`beitrag_private_rentenversicherung_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = ( + sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + + beitrag_private_rentenversicherung_y_sn + ) + max_value = ( + einkommensteuer__anzahl_personen_sn + * eink_st_abzuege_params["vorsorge_altersaufw_max"] + ) + + return min(out, max_value) + + +@policy_function(end_date="2019-12-31") +def vorwegabzug_lohnsteuer_y_sn( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + eink_st_abzuege_params: dict, +) -> float: + """Vorwegabzug for Vorsorgeaufwendungen via Lohnsteuer. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = (1 / einkommensteuer__anzahl_personen_sn) * ( + einkommensteuer__anzahl_personen_sn + * eink_st_abzuege_params["vorsorge2004_vorwegabzug"] + - eink_st_abzuege_params["vorsorge2004_kürzung_vorwegabzug"] + * einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn + ) + + return max(out, 0.0) diff --git a/src/_gettsim/taxes/einkommensteuer/einkommen.py b/src/_gettsim/taxes/einkommensteuer/einkommen.py new file mode 100644 index 0000000000..4cc16ed6ee --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/einkommen.py @@ -0,0 +1,165 @@ +"""Einkommen. + +Einkommen are Einkünfte minus Sonderausgaben, Vorsorgeaufwendungen, außergewöhnliche +Belastungen and sonstige Abzüge.""" + +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + + +@policy_function() +def gesamteinkommen_y( + gesamteinkommen_ohne_abzüge_y_sn: float, + einkommensteuer__abzüge__betrag_y_sn: float, +) -> float: + """Calculate taxable income without child allowance on Steuernummer level. + + Parameters + ---------- + gesamteinkommen_ohne_abzüge_y_sn + See :func:`gesamteinkommen_ohne_abzüge_y_sn`. + einkommensteuer__abzüge__betrag_y_sn + See :func:`einkommensteuer__abzüge__betrag_y_sn`. + + + Returns + ------- + + """ + out = gesamteinkommen_ohne_abzüge_y_sn - einkommensteuer__abzüge__betrag_y_sn + + return max(out, 0.0) + + +@policy_function(end_date="2008-12-31", leaf_name="gesamteinkommen_ohne_abzüge_y") +def gesamteinkommen_ohne_abzüge_mit_kapitaleinkünften_y( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + renteneinkommen_y: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y: float, +) -> float: + """Sum of gross incomes with capital income. + + # TODO(@MImmesberger): Use this function to compute sum of Einkünfte instead. In + particular, don't add Renteneinkommen here, but Renteneinkünfte. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/842 + + Parameters + ---------- + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y`. + renteneinkommen_y + See :func:`renteneinkommen_y`. + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y`. + + Returns + ------- + + """ + out = ( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + + renteneinkommen_y + + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y + ) + return out + + +@policy_function(start_date="2009-01-01", leaf_name="gesamteinkommen_ohne_abzüge_y") +def gesamteinkommen_ohne_abzüge_ohne_kapitaleinkünfte_y( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + renteneinkommen_y: float, +) -> float: + """Sum of gross incomes without capital income. + + Since 2009 capital income is not subject to normal taxation. + Parameters + ---------- + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y`. + renteneinkommen_y + See :func:`renteneinkommen_y`. + + Returns + ------- + + """ + out = ( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y + + renteneinkommen_y + ) + return out + + +@policy_function() +def renteneinkommen_m( + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__private_rente_betrag_m: float, + rente_ertragsanteil: float, +) -> float: + """Calculate monthly pension payment subject to taxation. + + # TODO(@MImmesberger): Add Renteneinkünfte to Einkünfte/Sonstige namespace. + # Calculate deduction from Renteneinkünfte in Abzüge dir instead of Renteneinkommen + # here directly. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/842 + + Parameters + ---------- + sozialversicherung__rente__altersrente__betrag_m + See :func:`sozialversicherung__rente__altersrente__betrag_m`. + sozialversicherung__rente__private_rente_betrag_m + See :func:`sozialversicherung__rente__private_rente_betrag_m`. + rente_ertragsanteil + See :func:`rente_ertragsanteil`. + + Returns + ------- + + """ + return rente_ertragsanteil * ( + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__private_rente_betrag_m + ) + + +@policy_function() +def rente_ertragsanteil( + sozialversicherung__rente__jahr_renteneintritt: int, eink_st_params: dict +) -> float: + """Share of pensions subject to income taxation. + + Parameters + ---------- + sozialversicherung__rente__jahr_renteneintritt + See basic input variable :ref:`sozialversicherung__rente__jahr_renteneintritt `. + eink_st_params + See params documentation :ref:`eink_st_params `. + Returns + ------- + + """ + out = piecewise_polynomial( + x=sozialversicherung__rente__jahr_renteneintritt, + thresholds=eink_st_params["rente_ertragsanteil"]["thresholds"], + rates=eink_st_params["rente_ertragsanteil"]["rates"], + intercepts_at_lower_thresholds=eink_st_params["rente_ertragsanteil"][ + "intercepts_at_lower_thresholds" + ], + ) + return out diff --git a/src/_gettsim/taxes/einkommensteuer/einkommensteuer.py b/src/_gettsim/taxes/einkommensteuer/einkommensteuer.py new file mode 100644 index 0000000000..fda6a31f9a --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/einkommensteuer.py @@ -0,0 +1,269 @@ +"""Income taxes.""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + +aggregation_specs = { + "anzahl_kindergeld_ansprüche_1": AggregateByPIDSpec( + p_id_to_aggregate_by="familie__p_id_elternteil_1", + source="kindergeld__grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), + "anzahl_kindergeld_ansprüche_2": AggregateByPIDSpec( + p_id_to_aggregate_by="familie__p_id_elternteil_2", + source="kindergeld__grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), +} + + +@policy_function( + end_date="1996-12-31", leaf_name="betrag_y_sn", params_key_for_rounding="eink_st" +) +def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( + betrag_mit_kinderfreibetrag_y_sn: float, +) -> float: + """Income tax calculation on Steuernummer level allowing for claiming + Kinderfreibetrag and receiving Kindergeld at the same time. + + Parameters + ---------- + betrag_mit_kinderfreibetrag_y_sn + See :func:`betrag_mit_kinderfreibetrag_y_sn`. + + Returns + ------- + + """ + return betrag_mit_kinderfreibetrag_y_sn + + +@policy_function( + start_date="1997-01-01", + leaf_name="betrag_y_sn", + params_key_for_rounding="eink_st", +) +def betrag_y_sn_kindergeld_oder_kinderfreibetrag( + betrag_ohne_kinderfreibetrag_y_sn: float, + betrag_mit_kinderfreibetrag_y_sn: float, + kinderfreibetrag_günstiger_sn: bool, + relevantes_kindergeld_y_sn: float, +) -> float: + """Income tax calculation on Steuernummer level since 1997. + + Parameters + ---------- + betrag_ohne_kinderfreibetrag_y_sn + See :func:`betrag_ohne_kinderfreibetrag_y_sn`. + betrag_mit_kinderfreibetrag_y_sn + See :func:`betrag_mit_kinderfreibetrag_y_sn`. + kinderfreibetrag_günstiger_sn + See :func:`kinderfreibetrag_günstiger_sn`. + relevantes_kindergeld_y_sn + See :func:`relevantes_kindergeld_y_sn`. + + Returns + ------- + + """ + if kinderfreibetrag_günstiger_sn: + out = betrag_mit_kinderfreibetrag_y_sn + relevantes_kindergeld_y_sn + else: + out = betrag_ohne_kinderfreibetrag_y_sn + + return out + + +@policy_function() +def kinderfreibetrag_günstiger_sn( + betrag_ohne_kinderfreibetrag_y_sn: float, + betrag_mit_kinderfreibetrag_y_sn: float, + relevantes_kindergeld_y_sn: float, +) -> bool: + """Kinderfreibetrag more favorable than Kindergeld. + + Parameters + ---------- + betrag_ohne_kinderfreibetrag_y_sn + See :func:`betrag_ohne_kinderfreibetrag_y_sn`. + betrag_mit_kinderfreibetrag_y_sn + See :func:`betrag_mit_kinderfreibetrag_y_sn`. + relevantes_kindergeld_y_sn + See :func:`relevantes_kindergeld_y_sn`. + Returns + ------- + + """ + unterschiedsbeitrag = ( + betrag_ohne_kinderfreibetrag_y_sn - betrag_mit_kinderfreibetrag_y_sn + ) + + out = unterschiedsbeitrag > relevantes_kindergeld_y_sn + return out + + +@policy_function( + end_date="2001-12-31", + leaf_name="betrag_mit_kinderfreibetrag_y_sn", + params_key_for_rounding="eink_st", +) +def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: + raise NotImplementedError("Tax system before 2002 is not implemented yet.") + + +@policy_function( + start_date="2002-01-01", + leaf_name="betrag_mit_kinderfreibetrag_y_sn", + params_key_for_rounding="eink_st", +) +def betrag_mit_kinderfreibetrag_y_sn_ab_2002( + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, + anzahl_personen_sn: int, + eink_st_params: dict, +) -> float: + """Taxes with child allowance on Steuernummer level. Also referred to as "tarifliche + ESt I". + + Parameters + ---------- + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. + anzahl_personen_sn + See :func:`anzahl_personen_sn`. + eink_st_params + See params documentation :ref:`eink_st_params `. + + Returns + ------- + + """ + zu_verst_eink_per_indiv = ( + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn / anzahl_personen_sn + ) + out = anzahl_personen_sn * einkommensteuertarif( + zu_verst_eink_per_indiv, params=eink_st_params + ) + + return out + + +@policy_function(params_key_for_rounding="eink_st") +def betrag_ohne_kinderfreibetrag_y_sn( + gesamteinkommen_y: float, + anzahl_personen_sn: int, + eink_st_params: dict, +) -> float: + """Taxes without child allowance on Steuernummer level. Also referred to as + "tarifliche ESt II". + + Parameters + ---------- + gesamteinkommen_y + See :func:`gesamteinkommen_y`. + anzahl_personen_sn + See :func:`anzahl_personen_sn`. + eink_st_params + See params documentation :ref:`eink_st_params `. + + Returns + ------- + + """ + zu_verst_eink_per_indiv = gesamteinkommen_y / anzahl_personen_sn + out = anzahl_personen_sn * einkommensteuertarif( + zu_verst_eink_per_indiv, params=eink_st_params + ) + + return out + + +@policy_function(end_date="2022-12-31", leaf_name="relevantes_kindergeld_m") +def relevantes_kindergeld_mit_staffelung_m( + anzahl_kindergeld_ansprüche_1: int, + anzahl_kindergeld_ansprüche_2: int, + kindergeld_params: dict, +) -> float: + """Kindergeld relevant for income tax. For each parent, half of the actual + Kindergeld claim is considered. + + Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der + Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." + + Parameters + ---------- + anzahl_kindergeld_ansprüche_1 + See :func:`anzahl_kindergeld_ansprüche_1`. + anzahl_kindergeld_ansprüche_2 + See :func:`anzahl_kindergeld_ansprüche_2`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + Returns + ------- + """ + kindergeld_ansprüche = anzahl_kindergeld_ansprüche_1 + anzahl_kindergeld_ansprüche_2 + + if kindergeld_ansprüche == 0: + relevantes_kindergeld = 0.0 + else: + relevantes_kindergeld = sum( + kindergeld_params["kindergeld"][ + (min(i, max(kindergeld_params["kindergeld"]))) + ] + for i in range(1, kindergeld_ansprüche + 1) + ) + + return relevantes_kindergeld / 2 + + +@policy_function(start_date="2023-01-01", leaf_name="relevantes_kindergeld_m") +def relevantes_kindergeld_ohne_staffelung_m( + anzahl_kindergeld_ansprüche_1: int, + anzahl_kindergeld_ansprüche_2: int, + kindergeld_params: dict, +) -> float: + """Kindergeld relevant for income tax. For each parent, half of the actual + Kindergeld claim is considered. + + Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der + Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." + + Parameters + ---------- + anzahl_kindergeld_ansprüche_1 + See :func:`anzahl_kindergeld_ansprüche_1`. + anzahl_kindergeld_ansprüche_2 + See :func:`anzahl_kindergeld_ansprüche_2`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + Returns + ------- + + """ + kindergeld_ansprüche = anzahl_kindergeld_ansprüche_1 + anzahl_kindergeld_ansprüche_2 + return kindergeld_params["kindergeld"] * kindergeld_ansprüche / 2 + + +def einkommensteuertarif(x: float, params: dict) -> float: + """The German income tax tariff. + + Parameters + ---------- + x : float + The series of floats which the income tax schedule is applied to. + params : dict + Dictionary created in respy.piecewise_functions. + + Returns + ------- + + """ + out = piecewise_polynomial( + x=x, + thresholds=params["eink_st_tarif"]["thresholds"], + rates=params["eink_st_tarif"]["rates"], + intercepts_at_lower_thresholds=params["eink_st_tarif"][ + "intercepts_at_lower_thresholds" + ], + ) + return out diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/__init__.py "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" similarity index 100% rename from src/_gettsim/transfers/arbeitsl_geld_2/__init__.py rename to "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" new file mode 100644 index 0000000000..7e46f3e426 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" @@ -0,0 +1,29 @@ +"""Einkünfte aus Kapitalvermögen.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_y( + kapitalerträge_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Calculate taxable capital income on Steuernummer level. + + Parameters + ---------- + kapitalerträge_y + See :func:`kapitalerträge_y`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + out = kapitalerträge_y - ( + eink_st_abzuege_params["sparerpauschbetrag"] + + eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] + ) + + return max(out, 0.0) diff --git a/src/_gettsim/transfers/benefit_checks/__init__.py "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" similarity index 100% rename from src/_gettsim/transfers/benefit_checks/__init__.py rename to "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" new file mode 100644 index 0000000000..8b9aff3696 --- /dev/null +++ "b/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -0,0 +1,58 @@ +"""Einkünfte aus nichtselbstständiger Arbeit.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_y( + betrag_ohne_minijob_y: float, + sozialversicherung__geringfügig_beschäftigt: bool, +) -> float: + """Taxable income from dependent employment. In particular, taxable income is set to + 0 for marginally employed persons. + + Parameters + ---------- + betrag_ohne_minijob_y + See :func:`betrag_ohne_minijob_y`. + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + + Returns + ------- + + """ + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_ohne_minijob_y + + return out + + +@policy_function() +def betrag_ohne_minijob_y( + bruttolohn_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Aggregate monthly gross wage to yearly income and deduct + 'Werbungskostenpauschale'. + + The wage is reducted by a lump sum payment for 'Werbungskosten' + + Parameters + ---------- + bruttolohn_y + See basic input variable :ref:`bruttolohn_y `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + abzug = eink_st_abzuege_params["werbungskostenpauschale"] + + out = bruttolohn_y - abzug + + return max(out, 0.0) diff --git a/src/_gettsim/taxes/einkommensteuer/group_by_ids.py b/src/_gettsim/taxes/einkommensteuer/group_by_ids.py new file mode 100644 index 0000000000..9961daf0f7 --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/group_by_ids.py @@ -0,0 +1,60 @@ +"""Steuernummer ID.""" + +import numpy + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import group_by_function + +aggregation_specs = { + "anzahl_personen_sn": AggregateByGroupSpec( + aggr="count", + ), + "alleinerziehend_sn": AggregateByGroupSpec( + source="familie__alleinerziehend", + aggr="any", + ), +} + + +@group_by_function() +def sn_id( + p_id: numpy.ndarray[int], + familie__p_id_ehepartner: numpy.ndarray[int], + gemeinsam_veranlagt: numpy.ndarray[bool], +) -> numpy.ndarray[int]: + """ + Compute a Steuernummer (ID) for each person / couple. + """ + p_id_to_sn_id = {} + p_id_to_gemeinsam_veranlagt = {} + next_sn_id = 0 + result = [] + + for index, current_p_id in enumerate(p_id): + current_p_id_ehepartner = familie__p_id_ehepartner[index] + current_gemeinsam_veranlagt = gemeinsam_veranlagt[index] + + if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: + gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ + current_p_id_ehepartner + ] + + if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner: + message = ( + f"{current_p_id_ehepartner} and {current_p_id} are " + "married, but have different values for " + "gemeinsam_veranlagt." + ) + raise ValueError(message) + + if current_gemeinsam_veranlagt: + result.append(p_id_to_sn_id[current_p_id_ehepartner]) + continue + + # New Steuersubjekt + result.append(next_sn_id) + p_id_to_sn_id[current_p_id] = next_sn_id + p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt + next_sn_id += 1 + + return numpy.asarray(result) diff --git a/src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py new file mode 100644 index 0000000000..256d5046a1 --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py @@ -0,0 +1,101 @@ +"""Tax allowances for individuals or couples with children.""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "anzahl_kinderfreibeträge_1": AggregateByPIDSpec( + p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_1", + source="kindergeld__grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), + "anzahl_kinderfreibeträge_2": AggregateByPIDSpec( + p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_2", + source="kindergeld__grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), +} + + +@policy_function() +def kinderfreibetrag_y( + anzahl_kinderfreibeträge: int, + eink_st_abzuege_params: dict, +) -> float: + """Individual child allowance. + + Parameters + ---------- + anzahl_kinderfreibeträge + See :func:`anzahl_kinderfreibeträge`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + + """ + + return float( + sum(eink_st_abzuege_params["kinderfreib"].values()) * anzahl_kinderfreibeträge + ) + + +@policy_function() +def anzahl_kinderfreibeträge( + anzahl_kinderfreibeträge_1: int, + anzahl_kinderfreibeträge_2: int, +) -> int: + """Return the number of Kinderfreibeträge a person is entitled to. + + The person could be a parent or legal custodian. + + Note: Users should overwrite this function if there are single parents in the data + who should receive two instead of one Kinderfreibeträge. GETTSIM does not + automatically do this, even if the p_id of the other parent is set to missing (-1). + + Parameters + ---------- + anzahl_kinderfreibeträge_1 + See :func:`p_id_kinderfreibetr_empfänger_1 `. + anzahl_kinderfreibeträge_2 + See :func:`p_id_kinderfreibetr_empfänger_2 `. + + """ + return anzahl_kinderfreibeträge_1 + anzahl_kinderfreibeträge_2 + + +@policy_function() +def p_id_kinderfreibetragsempfänger_1( + familie__p_id_elternteil_1: int, +) -> int: + """Assigns child allowance to parent 1. + + Parameters + ---------- + familie__p_id_elternteil_1 + See :func:`familie__p_id_elternteil_1`. + + Returns + ------- + + """ + return familie__p_id_elternteil_1 + + +@policy_function() +def p_id_kinderfreibetragsempfänger_2( + familie__p_id_elternteil_2: int, +) -> int: + """Assigns child allowance to parent 2. + + Parameters + ---------- + familie__p_id_elternteil_2 + See :func:`familie__p_id_elternteil_2`. + + Returns + ------- + + """ + return familie__p_id_elternteil_2 diff --git a/src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py new file mode 100644 index 0000000000..94986b0e87 --- /dev/null +++ b/src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py @@ -0,0 +1,55 @@ +"""Taxable income.""" + +from _gettsim.function_types import policy_function + + +@policy_function(params_key_for_rounding="eink_st") +def zu_versteuerndes_einkommen_y_sn( + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__gesamteinkommen_y: float, + kinderfreibetrag_günstiger_sn: bool, +) -> float: + """Calculate taxable income on Steuernummer level. + + Parameters + ---------- + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. + einkommensteuer__gesamteinkommen_y + See :func:`einkommensteuer__gesamteinkommen_y`. + kinderfreibetrag_günstiger_sn + See :func:`kinderfreibetrag_günstiger_sn`. + + Returns + ------- + + """ + if kinderfreibetrag_günstiger_sn: + out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + else: + out = einkommensteuer__gesamteinkommen_y + + return out + + +@policy_function() +def zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn( + einkommensteuer__gesamteinkommen_y: float, + kinderfreibetrag_y_sn: float, +) -> float: + """Calculate taxable income with child allowance on Steuernummer level. + + Parameters + ---------- + einkommensteuer__gesamteinkommen_y + See :func:`einkommensteuer__gesamteinkommen_y`. + kinderfreibetrag_y_sn + See :func:`kinderfreibetrag_y_sn`. + + Returns + ------- + + """ + + out = einkommensteuer__gesamteinkommen_y - kinderfreibetrag_y_sn + return max(out, 0.0) diff --git a/src/_gettsim/taxes/familie/familie.py b/src/_gettsim/taxes/familie/familie.py new file mode 100644 index 0000000000..7cfe7ecb29 --- /dev/null +++ b/src/_gettsim/taxes/familie/familie.py @@ -0,0 +1,157 @@ +"""This module computes demographic variables directly on the data. + +These information are used throughout modules of gettsim. + +""" + +import numpy + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import group_by_function, policy_function + +aggregation_specs = { + "anzahl_personen_ehe": AggregateByGroupSpec( + aggr="count", + ), +} + + +@policy_function() +def kind_bis_2(alter: int, kind: bool) -> bool: + """Calculate if child under the age of 3. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = kind and (alter <= 2) + return out + + +@policy_function() +def kind_bis_5(alter: int, kind: bool) -> bool: + """Calculate if child under the age of 6. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = kind and (alter <= 5) + return out + + +@policy_function() +def kind_bis_6(alter: int, kind: bool) -> bool: + """Calculate if child under the age of 7. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = kind and (alter <= 6) + return out + + +@policy_function() +def kind_bis_15(alter: int, kind: bool) -> bool: + """Calculate if child under the age of 16. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = kind and (alter <= 15) + return out + + +@policy_function() +def kind_bis_17(alter: int, kind: bool) -> bool: + """Calculate if underage person. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = kind and (alter <= 17) + return out + + +@policy_function() +def erwachsen(kind: bool) -> bool: + """Calculate if adult. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kind + See basic input variable :ref:`kind `. + + Returns + ------- + + """ + out = not kind + return out + + +@group_by_function() +def ehe_id( + p_id: numpy.ndarray[int], + p_id_ehepartner: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the ID of the Ehe for each person. + """ + p_id_to_ehe_id = {} + next_ehe_id = 0 + result = [] + + for index, current_p_id in enumerate(p_id): + current_p_id_ehepartner = p_id_ehepartner[index] + + if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: + result.append(p_id_to_ehe_id[current_p_id_ehepartner]) + continue + + # New married couple + result.append(next_ehe_id) + p_id_to_ehe_id[current_p_id] = next_ehe_id + next_ehe_id += 1 + + return numpy.asarray(result) diff --git a/src/_gettsim/taxes/household_characteristics.py b/src/_gettsim/taxes/household_characteristics.py new file mode 100644 index 0000000000..8426b96aba --- /dev/null +++ b/src/_gettsim/taxes/household_characteristics.py @@ -0,0 +1,36 @@ +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "anzahl_erwachsene_hh": AggregateByGroupSpec( + source="familie__erwachsen", + aggr="sum", + ), + "anzahl_rentenbezieher_hh": AggregateByGroupSpec( + source="sozialversicherung__rente__bezieht_rente", + aggr="sum", + ), + "anzahl_personen_hh": AggregateByGroupSpec( + aggr="count", + ), +} + + +@policy_function() +def erwachsene_alle_rentenbezieher_hh( + anzahl_erwachsene_hh: int, anzahl_rentenbezieher_hh: int +) -> bool: + """Calculate if all adults in the household are pensioners. + + Parameters + ---------- + anzahl_erwachsene_hh + See :func:`anzahl_erwachsene_hh`. + anzahl_rentenbezieher_hh + See :func:`anzahl_rentenbezieher_hh`. + + Returns + ------- + + """ + return anzahl_erwachsene_hh == anzahl_rentenbezieher_hh diff --git a/src/_gettsim/taxes/individual_characteristics.py b/src/_gettsim/taxes/individual_characteristics.py new file mode 100644 index 0000000000..e3467fc6fd --- /dev/null +++ b/src/_gettsim/taxes/individual_characteristics.py @@ -0,0 +1,78 @@ +import datetime + +import numpy + +from _gettsim.function_types import policy_function + + +@policy_function() +def geburtsdatum( + geburtsjahr: int, + geburtsmonat: int, + geburtstag: int, +) -> numpy.datetime64: + """Create date of birth datetime variable. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + geburtstag + See basic input variable :ref:`geburtstag `. + + Returns + ------- + + """ + out = numpy.datetime64( + datetime.datetime( + geburtsjahr, + geburtsmonat, + geburtstag, + ) + ).astype("datetime64[D]") + return out + + +@policy_function() +def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> float: + """Calculate age of youngest child in months. + + Parameters + ---------- + hh_id + See basic input variable :ref:`hh_id `. + geburtsdatum + See :func:`geburtsdatum`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + Returns + ------- + + """ + + # TODO(@hmgaudecker): Remove explicit cast when vectorisation is enabled. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 + age_in_days = elterngeld_params["datum"] - numpy.datetime64(geburtsdatum) + + out = age_in_days / 30.436875 + return out.astype(float) + + +@policy_function() +def alter_bis_24(alter: int) -> bool: + """Age is 24 years at most. + + Trivial, but necessary in order to use the target for aggregation. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + + Returns + ------- + """ + return alter <= 24 diff --git a/src/_gettsim/taxes/lohnst.py b/src/_gettsim/taxes/lohnst.py deleted file mode 100644 index afd5636d34..0000000000 --- a/src/_gettsim/taxes/lohnst.py +++ /dev/null @@ -1,451 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.taxes.eink_st import _eink_st_tarif - - -@policy_function(params_key_for_rounding="lohnst") -def lohnst_eink_y( - bruttolohn_m: float, - steuerklasse: int, - eink_st_abzuege_params: dict, - vorsorgepauschale_y: float, -) -> float: - """Calculate tax base for Lohnsteuer (withholding tax on earnings). - - Parameters - ---------- - bruttolohn_m: - See basic input variable :ref:`bruttolohn_m `. - steuerklasse: - See :func:`steuerklasse` - eink_st_abzuege_params: - See :func:`eink_st_abzuege_params` - vorsorgepauschale_y - See :func:`vorsorgepauschale_y` - - Returns - ------- - - """ - entlastung_freibetrag_alleinerz = (steuerklasse == 2) * eink_st_abzuege_params[ - "alleinerz_freibetrag" - ] - - if steuerklasse == 6: - werbungskosten = 0 - else: - werbungskosten = eink_st_abzuege_params["werbungskostenpauschale"] - - if steuerklasse == 6: - sonderausgaben = 0 - else: - sonderausgaben = eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] - - # Zu versteuerndes Einkommen / tax base for Lohnsteuer. - out = max( - 12 * bruttolohn_m - - werbungskosten - - sonderausgaben - - entlastung_freibetrag_alleinerz - - vorsorgepauschale_y, - 0.0, - ) - - return out - - -def _lohnsteuer_klasse5_6_basis_y(taxable_inc: float, eink_st_params: dict) -> float: - """Calculate base for Lohnsteuer for Steuerklasse 5 and 6, by applying - obtaining twice the difference between applying the factors 1.25 and 0.75 - to the lohnsteuer payment. There is a also a minimum amount, which is checked - afterwards. - - §39 b Absatz 2 Satz 7 (part 1): - - Jahreslohnsteuer die sich aus dem Zweifachen des Unterschiedsbetrags zwischen - dem Steuerbetrag für das Eineinviertelfache und dem Steuerbetrag für das - Dreiviertelfache des zu versteuernden Jahresbetrags nach § 32a Absatz 1 ergibt; - die Jahreslohnsteuer beträgt jedoch mindestens 14 Prozent des zu versteuernden - Jahresbetrags. - - Parameters - ---------- - - taxable_inc: - Taxable Income used in function (not necessarily the same as lohnst_eink_y) - eink_st_params - See params documentation :ref:`eink_st_params ` - - Returns - ------- - Base for Lohnsteuer for Steuerklasse 5 and 6 - - """ - - out = max( - 2 - * ( - _eink_st_tarif(taxable_inc * 1.25, eink_st_params) - - _eink_st_tarif(taxable_inc * 0.75, eink_st_params) - ), - taxable_inc * eink_st_params["eink_st_tarif"]["rates"][0][1], - ) - - return out - - -@policy_function( - start_date="2019-01-01", - leaf_name="vorsorge_krankenv_option_b", -) -def vorsorge_krankenv_option_b_ab_2019( - _ges_krankenv_bruttolohn_reg_beschäftigt_m: float, - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """For health care deductions, there are two ways to calculate - the deductions: "Option a" and "Option b". - This function calculates option b where the actual contributions - are used. - - Parameters - ---------- - _ges_krankenv_bruttolohn_reg_beschäftigt_m: - See basic input variable :ref:`_ges_krankenv_bruttolohn_reg_beschäftigt_m` - ges_krankenv_zusatzbeitr_satz - See :func:ges_krankenv_zusatzbeitr_satz`. - sozialv_beitr_params: - See params documentation :ref:`sozialv_beitr_params` - ges_pflegev_beitr_satz_arbeitnehmer: - See :func:ges_pflegev_beitr_satz_arbeitnehmer`. - - - Returns - ------- - Health care deductions for withholding taxes option b - - """ - - out = ( - _ges_krankenv_bruttolohn_reg_beschäftigt_m - * 12 - * ( - sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 - + ges_krankenv_zusatzbeitr_satz / 2 - + ges_pflegev_beitr_satz_arbeitnehmer - ) - ) - - return out - - -@policy_function( - start_date="2015-01-01", - end_date="2018-12-31", - leaf_name="vorsorge_krankenv_option_b", -) -def vorsorge_krankenv_option_b_ab_2015_bis_2018( - _ges_krankenv_bruttolohn_reg_beschäftigt_m: float, - ges_krankenv_zusatzbeitr_satz: float, - sozialv_beitr_params: dict, - ges_pflegev_beitr_satz_arbeitnehmer: float, -) -> float: - """For health care deductions, there are two ways to calculate - the deductions: "Option a" and "Option b". - This function calculates option b where the actual contributions - are used. - - Parameters - ---------- - _ges_krankenv_bruttolohn_reg_beschäftigt_m: - See basic input variable :ref:`_ges_krankenv_bruttolohn_reg_beschäftigt_m` - ges_krankenv_zusatzbeitr_satz - See :func:ges_krankenv_zusatzbeitr_satz`. - ges_pflegev_beitr_satz_arbeitnehmer: - See :func:ges_pflegev_beitr_satz_arbeitnehmer`. - - - Returns - ------- - Health care deductions for withholding taxes option b - - """ - - out = ( - _ges_krankenv_bruttolohn_reg_beschäftigt_m - * 12 - * ( - sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 - + ges_krankenv_zusatzbeitr_satz - + ges_pflegev_beitr_satz_arbeitnehmer - ) - ) - - return out - - -def vorsorge_krankenv_option_a( - _ges_krankenv_bruttolohn_reg_beschäftigt_y: float, - eink_st_abzuege_params: dict, - steuerklasse: int, -) -> float: - """For health care deductions, there are two ways to calculate - the deuctions. - This function calculates option a where at least 12% of earnings - of earnings can be deducted, but only up to a certain threshold. - - Parameters - ---------- - _ges_krankenv_bruttolohn_reg_beschäftigt_m: - See basic input variable :ref:`_ges_krankenv_bruttolohn_reg_beschäftigt_m` - eink_st_abzuege_params: - See params documentation :ref:`eink_st_abzuege_params` - steuerklasse: - See basic input variable :ref:`steuerklasse `. - - - Returns - ------- - Health care deductions for withholding taxes option a - - """ - - vorsorge_krankenv_option_a_basis = ( - eink_st_abzuege_params["vorsorgepauschale_mindestanteil"] - * _ges_krankenv_bruttolohn_reg_beschäftigt_y - ) - - if steuerklasse == 3: - vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ - "vorsorgepauschale_kv_max" - ]["steuerklasse_3"] - else: - vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ - "vorsorgepauschale_kv_max" - ]["steuerklasse_nicht3"] - - out = min(vorsorge_krankenv_option_a_max, vorsorge_krankenv_option_a_basis) - - return out - - -@policy_function( - start_date="2010-01-01", - leaf_name="vorsorgepauschale_y", - params_key_for_rounding="lohnst", -) -def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 - bruttolohn_m: float, - wohnort_ost: bool, - eink_st_abzuege_params: dict, - sozialv_beitr_params: dict, - vorsorge_krankenv_option_a: float, - vorsorge_krankenv_option_b: float, -) -> float: - """Calculate Vorsorgepauschale for Lohnsteuer valid since 2010. Those are deducted - from gross earnings. Idea is similar, but not identical, to Vorsorgeaufwendungen - used when calculating Einkommensteuer. - - Parameters - ---------- - bruttolohn_m: - See basic input variable :ref:`bruttolohn_m `. - wohnort_ost: - See basic input variable :ref:`wohnort_ost `. - eink_st_abzuege_params: - See params documentation :ref:`eink_st_abzuege_params` - sozialv_beitr_params: - See params documentation :ref:`sozialv_beitr_params` - vorsorge_krankenv_option_a: - See :func:`vorsorge_krankenv_option_a` - vorsorge_krankenv_option_b: - See :func:`vorsorge_krankenv_option_b` - - - Returns - ------- - Individual Vorsorgepauschale on annual basis - - """ - - # 1. Rentenversicherungsbeiträge, §39b (2) Nr. 3a EStG. - if wohnort_ost: - bruttolohn_rente = min( - 12 * bruttolohn_m, - 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["ost"], - ) - else: - bruttolohn_rente = min( - 12 * bruttolohn_m, - 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["west"], - ) - - vorsorg_rentenv = ( - bruttolohn_rente - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - * eink_st_abzuege_params["vorsorgepauschale_rentenv_anteil"] - ) - - # 2. Krankenversicherungsbeiträge, §39b (2) Nr. 3b EStG. - # For health care deductions, there are two ways to calculate - # the deuctions. - # a) at least 12% of earnings of earnings can be deducted, - # but only up to a certain threshold - # b) Take the actual contributions (usually the better option), - # but apply the reduced rate - - vorsorg_krankenv = max(vorsorge_krankenv_option_a, vorsorge_krankenv_option_b) - - # add both RV and KV deductions. For KV, take the larger amount. - out = vorsorg_rentenv + vorsorg_krankenv - return out - - -@policy_function( - start_date="2005-01-01", - end_date="2009-12-31", - leaf_name="vorsorgepauschale_y", - params_key_for_rounding="lohnst", -) -def vorsorgepauschale_y_ab_2005_bis_2009() -> float: - out = 0.0 - return out - - -def kinderfreib_für_soli_st_lohnst_y( - steuerklasse: int, - _eink_st_kinderfreib_anz_ansprüche: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate Child Allowance for Lohnsteuer-Soli. - - For the purpose of Soli on Lohnsteuer, the child allowance not only depends on the - number of children, but also on the steuerklasse - - """ - - kinderfreib_basis = ( - eink_st_abzuege_params["kinderfreib"]["sächl_existenzmin"] - + eink_st_abzuege_params["kinderfreib"]["beitr_erz_ausb"] - ) - - # For certain tax brackets, twice the child allowance can be deducted - if steuerklasse in {1, 2, 3}: - out = kinderfreib_basis * 2 * _eink_st_kinderfreib_anz_ansprüche - elif steuerklasse == 4: - out = kinderfreib_basis * _eink_st_kinderfreib_anz_ansprüche - else: - out = 0 - return out - - -def _lohnst_m( - lohnst_eink_y: float, eink_st_params: dict, lohnst_params: dict, steuerklasse: int -) -> float: - """ - Calculates Lohnsteuer (withholding tax on earnings), paid monthly by the employer on - behalf of the employee. Apply the income tax tariff, but individually and with - different exemptions, determined by the 'Steuerklasse'. Source: §39b EStG - - Calculation is differentiated by steuerklasse - - 1,2,4: Standard tariff (§32a (1) EStG) 3: Splitting tariff (§32a (5) EStG) 5,6: Take - twice the difference between applying the tariff on 5/4 and 3/4 of taxable income. - Tax rate may not be lower than the starting statutory one. - - Parameters - ---------- - lohnst_eink_y - See :func:`lohnst_eink_y`. - eink_st_params - See params documentation :ref:`eink_st_params ` - lohnst_params - See params documentation :ref:`lohnst_params ` - steuerklasse: - See basic input variable :ref:`steuerklasse `. - - - Returns - ------- - Individual withholding tax on monthly basis - - """ - - lohnsteuer_basistarif = _eink_st_tarif(lohnst_eink_y, eink_st_params) - lohnsteuer_splittingtarif = 2 * _eink_st_tarif(lohnst_eink_y / 2, eink_st_params) - lohnsteuer_5_6_basis = _lohnsteuer_klasse5_6_basis_y(lohnst_eink_y, eink_st_params) - - grenze_1 = lohnst_params["lohnst_einkommensgrenzen"][0] - grenze_2 = lohnst_params["lohnst_einkommensgrenzen"][1] - grenze_3 = lohnst_params["lohnst_einkommensgrenzen"][2] - - lohnsteuer_grenze_1 = _lohnsteuer_klasse5_6_basis_y(grenze_1, eink_st_params) - max_lohnsteuer = ( - lohnsteuer_grenze_1 - + (lohnst_eink_y - grenze_1) * eink_st_params["eink_st_tarif"]["rates"][0][3] - ) - lohnsteuer_grenze_2 = _lohnsteuer_klasse5_6_basis_y(grenze_2, eink_st_params) - lohnsteuer_zw_grenze_2_3 = (grenze_3 - grenze_2) * eink_st_params["eink_st_tarif"][ - "rates" - ][0][3] - lohnsteuer_klasse5_6_tmp = lohnsteuer_grenze_2 + lohnsteuer_zw_grenze_2_3 - - if lohnst_eink_y < grenze_1: - lohnsteuer_klasse5_6 = lohnsteuer_5_6_basis - elif grenze_1 <= lohnst_eink_y < grenze_2: - lohnsteuer_klasse5_6 = min( - max_lohnsteuer, _lohnsteuer_klasse5_6_basis_y(lohnst_eink_y, eink_st_params) - ) - elif grenze_2 <= lohnst_eink_y < grenze_3: - lohnsteuer_klasse5_6 = ( - lohnsteuer_grenze_2 - + (lohnst_eink_y - grenze_2) - * eink_st_params["eink_st_tarif"]["rates"][0][3] - ) - else: - lohnsteuer_klasse5_6 = ( - lohnsteuer_klasse5_6_tmp - + (lohnst_eink_y - grenze_3) - * eink_st_params["eink_st_tarif"]["rates"][0][4] - ) - - if steuerklasse in {1, 2, 4}: - out = lohnsteuer_basistarif - elif steuerklasse == 3: - out = lohnsteuer_splittingtarif - else: - out = lohnsteuer_klasse5_6 - - out = out / 12 - - return max(out, 0.0) - - -def lohnst_m( - lohnst_eink_y: float, - eink_st_params: dict, - lohnst_params: dict, - steuerklasse: int, -) -> float: - """ - Calls _lohnst_m with individual income - """ - return _lohnst_m(lohnst_eink_y, eink_st_params, lohnst_params, steuerklasse) - - -def lohnst_mit_kinderfreib_m( - lohnst_eink_y: float, - kinderfreib_für_soli_st_lohnst_y: float, - eink_st_params: dict, - lohnst_params: dict, - steuerklasse: int, -) -> float: - """ - Same as lohnst_m, but with an alternative income definition that - takes child allowance into account. Important only for calculation - of soli on Lohnsteuer! - """ - - eink = max(lohnst_eink_y - kinderfreib_für_soli_st_lohnst_y, 0) - - return _lohnst_m(eink, eink_st_params, lohnst_params, steuerklasse) diff --git a/src/_gettsim/transfers/kinderzuschl/__init__.py b/src/_gettsim/taxes/lohnsteuer/__init__.py similarity index 100% rename from src/_gettsim/transfers/kinderzuschl/__init__.py rename to src/_gettsim/taxes/lohnsteuer/__init__.py diff --git a/src/_gettsim/taxes/lohnsteuer/einkommen.py b/src/_gettsim/taxes/lohnsteuer/einkommen.py new file mode 100644 index 0000000000..a1c335ad89 --- /dev/null +++ b/src/_gettsim/taxes/lohnsteuer/einkommen.py @@ -0,0 +1,265 @@ +"""Income relevant for withholding tax on earnings (Lohnsteuer).""" + +from _gettsim.function_types import policy_function + + +@policy_function(params_key_for_rounding="lohnst") +def einkommen_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + steuerklasse: int, + vorsorgepauschale_y: float, + eink_st_abzuege_params: dict, +) -> float: + """Calculate tax base for Lohnsteuer (withholding tax on earnings). + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + steuerklasse: + See :func:`steuerklasse` + eink_st_abzuege_params: + See :func:`eink_st_abzuege_params` + vorsorgepauschale_y + See :func:`vorsorgepauschale_y` + + Returns + ------- + + """ + entlastung_freibetrag_alleinerz = (steuerklasse == 2) * eink_st_abzuege_params[ + "alleinerziehendenfreibetrag" + ] + + if steuerklasse == 6: + werbungskosten = 0 + else: + werbungskosten = eink_st_abzuege_params["werbungskostenpauschale"] + + if steuerklasse == 6: + sonderausgaben = 0 + else: + sonderausgaben = eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] + + # Zu versteuerndes Einkommen / tax base for Lohnsteuer. + out = max( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + - werbungskosten + - sonderausgaben + - entlastung_freibetrag_alleinerz + - vorsorgepauschale_y, + 0.0, + ) + + return out + + +@policy_function( + start_date="2015-01-01", + end_date="2018-12-31", + leaf_name="vorsorge_krankenv_option_b", +) +def vorsorge_krankenv_option_b_ab_2015_bis_2018( + sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, + sozialversicherung__pflege__beitrag__beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """For health care deductions, there are two ways to calculate + the deductions: "Option a" and "Option b". + This function calculates option b where the actual contributions + are used. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: + See :func:`sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y`. + sozialversicherung__kranken__beitrag__zusatzbeitragssatz + See :func:`sozialversicherung__kranken__beitrag__zusatzbeitragssatz`. + sozialversicherung__pflege__beitrag__beitragssatz: + See :func:`sozialversicherung__pflege__beitrag__beitragssatz`. + + + Returns + ------- + Health care deductions for withholding taxes option b + + """ + + out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( + sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 + + sozialversicherung__kranken__beitrag__zusatzbeitragssatz + + sozialversicherung__pflege__beitrag__beitragssatz + ) + + return out + + +@policy_function( + start_date="2019-01-01", + leaf_name="vorsorge_krankenv_option_b", +) +def vorsorge_krankenv_option_b_ab_2019( + sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, + sozialversicherung__pflege__beitrag__beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """For health care deductions, there are two ways to calculate + the deductions: "Option a" and "Option b". + This function calculates option b where the actual contributions + are used. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: + See :func:`sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y`. + sozialversicherung__kranken__beitrag__zusatzbeitragssatz + See :func:`sozialversicherung__kranken__beitrag__zusatzbeitragssatz`. + sozialversicherung__pflege__beitrag__beitragssatz: + See :func:`sozialversicherung__pflege__beitrag__beitragssatz`. + sozialv_beitr_params: + See params documentation :ref:`sozialv_beitr_params` + + + Returns + ------- + Health care deductions for withholding taxes option b + + """ + + out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( + sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 + + sozialversicherung__kranken__beitrag__zusatzbeitragssatz / 2 + + sozialversicherung__pflege__beitrag__beitragssatz + ) + + return out + + +@policy_function() +def vorsorge_krankenv_option_a( + sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, + steuerklasse: int, + eink_st_abzuege_params: dict, +) -> float: + """For health care deductions, there are two ways to calculate + the deuctions. + This function calculates option a where at least 12% of earnings + of earnings can be deducted, but only up to a certain threshold. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__betrag_regulär_beschäftigt_m: + See :func:`sozialversicherung__kranken__beitrag__betrag_regulär_beschäftigt_m` + steuerklasse: + See basic input variable :ref:`steuerklasse `. + eink_st_abzuege_params: + See params documentation :ref:`eink_st_abzuege_params` + + + Returns + ------- + Health care deductions for withholding taxes option a + + """ + + vorsorge_krankenv_option_a_basis = ( + eink_st_abzuege_params["vorsorgepauschale_mindestanteil"] + * sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y + ) + + if steuerklasse == 3: + vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ + "vorsorgepauschale_kv_max" + ]["steuerklasse_3"] + else: + vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ + "vorsorgepauschale_kv_max" + ]["steuerklasse_nicht3"] + + out = min(vorsorge_krankenv_option_a_max, vorsorge_krankenv_option_a_basis) + + return out + + +@policy_function( + start_date="2010-01-01", + leaf_name="vorsorgepauschale_y", + params_key_for_rounding="lohnst", +) +def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + wohnort_ost: bool, + sozialv_beitr_params: dict, + vorsorge_krankenv_option_a: float, + vorsorge_krankenv_option_b: float, + eink_st_abzuege_params: dict, +) -> float: + """Calculate Vorsorgepauschale for Lohnsteuer valid since 2010. Those are deducted + from gross earnings. Idea is similar, but not identical, to Vorsorgeaufwendungen + used when calculating Einkommensteuer. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + wohnort_ost: + See basic input variable :ref:`wohnort_ost `. + sozialv_beitr_params: + See params documentation :ref:`sozialv_beitr_params` + vorsorge_krankenv_option_a: + See :func:`vorsorge_krankenv_option_a` + vorsorge_krankenv_option_b: + See :func:`vorsorge_krankenv_option_b` + eink_st_abzuege_params: + See params documentation :ref:`eink_st_abzuege_params` + + + Returns + ------- + Individual Vorsorgepauschale on annual basis + + """ + + # 1. Rentenversicherungsbeiträge, §39b (2) Nr. 3a EStG. + if wohnort_ost: + bruttolohn_rente = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, + 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["ost"], + ) + else: + bruttolohn_rente = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, + 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["west"], + ) + + vorsorg_rentenv = ( + bruttolohn_rente + * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + * eink_st_abzuege_params["vorsorgepauschale_rentenv_anteil"] + ) + + # 2. Krankenversicherungsbeiträge, §39b (2) Nr. 3b EStG. + # For health care deductions, there are two ways to calculate + # the deuctions. + # a) at least 12% of earnings of earnings can be deducted, + # but only up to a certain threshold + # b) Take the actual contributions (usually the better option), + # but apply the reduced rate + + vorsorg_krankenv = max(vorsorge_krankenv_option_a, vorsorge_krankenv_option_b) + + # add both RV and KV deductions. For KV, take the larger amount. + out = vorsorg_rentenv + vorsorg_krankenv + return out + + +@policy_function( + start_date="2005-01-01", + end_date="2009-12-31", + leaf_name="vorsorgepauschale_y", + params_key_for_rounding="lohnst", +) +def vorsorgepauschale_y_ab_2005_bis_2009() -> float: + return 0.0 diff --git a/src/_gettsim/taxes/lohnsteuer/lohnsteuer.py b/src/_gettsim/taxes/lohnsteuer/lohnsteuer.py new file mode 100644 index 0000000000..c691094a3e --- /dev/null +++ b/src/_gettsim/taxes/lohnsteuer/lohnsteuer.py @@ -0,0 +1,259 @@ +"""Withholding tax on earnings (Lohnsteuer).""" + +from _gettsim.function_types import policy_function +from _gettsim.taxes.einkommensteuer.einkommensteuer import einkommensteuertarif +from _gettsim.taxes.solidaritätszuschlag.solidaritätszuschlag import ( + solidaritätszuschlagstarif, +) + + +@policy_function() +def betrag_m( + einkommen_y: float, + eink_st_params: dict, + steuerklasse: int, + lohnst_params: dict, +) -> float: + """ + Withholding tax on earnings (Lohnsteuer). + + Parameters + ---------- + einkommen_y + See :func:`einkommen_y`. + steuerklasse + See :func:`steuerklasse`. + eink_st_params + See params documentation :ref:`eink_st_params`. + lohnst_params + See params documentation :ref:`lohnst_params`. + + """ + return lohnsteuerformel(einkommen_y, eink_st_params, lohnst_params, steuerklasse) + + +@policy_function() +def betrag_mit_kinderfreibetrag_m( + einkommen_y: float, + kinderfreibetrag_soli_y: float, + steuerklasse: int, + eink_st_params: dict, + lohnst_params: dict, +) -> float: + """Withholding tax taking child allowances into account. + + Same as betrag_m, but with an alternative income definition that + takes child allowance into account. Important only for calculation + of soli on Lohnsteuer! + + Parameters + ---------- + einkommen_y + See :func:`einkommen_y`. + kinderfreibetrag_soli_y + See :func:`kinderfreibetrag_soli_y`. + steuerklasse + See :func:`steuerklasse`. + eink_st_params + See params documentation :ref:`eink_st_params`. + lohnst_params + See params documentation :ref:`lohnst_params`. + """ + + eink = max(einkommen_y - kinderfreibetrag_soli_y, 0) + + return lohnsteuerformel(eink, eink_st_params, lohnst_params, steuerklasse) + + +@policy_function() +def betrag_soli_y(betrag_mit_kinderfreibetrag_y: float, soli_st_params: dict) -> float: + """Solidarity surcharge on Lohnsteuer (withholding tax on earnings). + + Parameters + ---------- + betrag_mit_kinderfreibetrag_y + See :func:`betrag_mit_kinderfreibetrag_y`. + soli_st_params + See params documentation :ref:`soli_st_params `. + + Returns + Solidarity Surcharge on Lohnsteuer + ------- + + """ + + return solidaritätszuschlagstarif(betrag_mit_kinderfreibetrag_y, soli_st_params) + + +@policy_function() +def kinderfreibetrag_soli_y( + steuerklasse: int, + einkommensteuer__anzahl_kinderfreibeträge: int, + eink_st_abzuege_params: dict, +) -> float: + """Child Allowance (Kinderfreibetrag) for Lohnsteuer-Soli. + + For the purpose of Soli on Lohnsteuer, the child allowance not only depends on the + number of children, but also on the steuerklasse + + Parameters + ---------- + steuerklasse + See :func:`steuerklasse`. + einkommensteuer__anzahl_kinderfreibeträge + See :func:`einkommensteuer__anzahl_kinderfreibeträge`. + eink_st_abzuege_params + See params documenation :ref:`eink_st_abzuege_params `. + + Returns + ------- + Kinderfreibetrag for Lohnsteuer-Soli. + """ + + kinderfreibetrag_basis = ( + eink_st_abzuege_params["kinderfreib"]["sächl_existenzmin"] + + eink_st_abzuege_params["kinderfreib"]["beitr_erz_ausb"] + ) + + # For certain tax brackets, twice the child allowance can be deducted + if steuerklasse in {1, 2, 3}: + out = kinderfreibetrag_basis * 2 * einkommensteuer__anzahl_kinderfreibeträge + elif steuerklasse == 4: + out = kinderfreibetrag_basis * einkommensteuer__anzahl_kinderfreibeträge + else: + out = 0 + return out + + +def lohnsteuerformel( + einkommen_y: float, + eink_st_params: dict, + lohnst_params: dict, + steuerklasse: int, +) -> float: + """ + Calculates Lohnsteuer (withholding tax on earnings), paid monthly by the employer on + behalf of the employee. Apply the income tax tariff, but individually and with + different exemptions, determined by the 'steuerklasse'. Source: §39b EStG + + Calculation is differentiated by steuerklasse + + 1,2,4: Standard tariff (§32a (1) EStG) 3: Splitting tariff (§32a (5) EStG) 5,6: Take + twice the difference between applying the tariff on 5/4 and 3/4 of taxable income. + Tax rate may not be lower than the starting statutory one. + + Parameters + ---------- + einkommen_y + See :func:`einkommen_y`. + eink_st_params + See params documentation :ref:`eink_st_params ` + lohnst_params + See params documentation :ref:`lohnst_params ` + steuerklasse: + See basic input variable :ref:`steuerklasse `. + + + Returns + ------- + Individual withholding tax on monthly basis + + """ + + lohnsteuer_basistarif = einkommensteuertarif(einkommen_y, eink_st_params) + lohnsteuer_splittingtarif = 2 * einkommensteuertarif( + einkommen_y / 2, eink_st_params + ) + lohnsteuer_5_6_basis = basis_für_klassen_5_6( + einkommen_y=einkommen_y, eink_st_params=eink_st_params + ) + + grenze_1 = lohnst_params["lohnst_einkommensgrenzen"][0] + grenze_2 = lohnst_params["lohnst_einkommensgrenzen"][1] + grenze_3 = lohnst_params["lohnst_einkommensgrenzen"][2] + + lohnsteuer_grenze_1 = basis_für_klassen_5_6( + einkommen_y=grenze_1, eink_st_params=eink_st_params + ) + max_lohnsteuer = ( + lohnsteuer_grenze_1 + + (einkommen_y - grenze_1) * eink_st_params["eink_st_tarif"]["rates"][0][3] + ) + lohnsteuer_grenze_2 = basis_für_klassen_5_6( + einkommen_y=grenze_2, eink_st_params=eink_st_params + ) + lohnsteuer_zw_grenze_2_3 = (grenze_3 - grenze_2) * eink_st_params["eink_st_tarif"][ + "rates" + ][0][3] + lohnsteuer_klasse5_6_tmp = lohnsteuer_grenze_2 + lohnsteuer_zw_grenze_2_3 + + if einkommen_y < grenze_1: + lohnsteuer_klasse5_6 = lohnsteuer_5_6_basis + elif grenze_1 <= einkommen_y < grenze_2: + lohnsteuer_klasse5_6 = min( + max_lohnsteuer, + basis_für_klassen_5_6( + einkommen_y=einkommen_y, eink_st_params=eink_st_params + ), + ) + elif grenze_2 <= einkommen_y < grenze_3: + lohnsteuer_klasse5_6 = ( + lohnsteuer_grenze_2 + + (einkommen_y - grenze_2) * eink_st_params["eink_st_tarif"]["rates"][0][3] + ) + else: + lohnsteuer_klasse5_6 = ( + lohnsteuer_klasse5_6_tmp + + (einkommen_y - grenze_3) * eink_st_params["eink_st_tarif"]["rates"][0][4] + ) + + if steuerklasse in {1, 2, 4}: + out = lohnsteuer_basistarif + elif steuerklasse == 3: + out = lohnsteuer_splittingtarif + else: + out = lohnsteuer_klasse5_6 + + out = out / 12 + + return max(out, 0.0) + + +def basis_für_klassen_5_6(einkommen_y: float, eink_st_params: dict) -> float: + """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying + obtaining twice the difference between applying the factors 1.25 and 0.75 + to the lohnsteuer payment. There is a also a minimum amount, which is checked + afterwards. + + §39 b Absatz 2 Satz 7 (part 1): + + Jahreslohnsteuer die sich aus dem Zweifachen des Unterschiedsbetrags zwischen + dem Steuerbetrag für das Eineinviertelfache und dem Steuerbetrag für das + Dreiviertelfache des zu versteuernden Jahresbetrags nach § 32a Absatz 1 ergibt; + die Jahreslohnsteuer beträgt jedoch mindestens 14 Prozent des zu versteuernden + Jahresbetrags. + + Parameters + ---------- + + einkommen_y: + Taxable Income. + eink_st_params + See params documentation :ref:`eink_st_params ` + + Returns + ------- + Base for Lohnsteuer for steuerklasse 5 and 6 + + """ + + out = max( + 2 + * ( + einkommensteuertarif(einkommen_y * 1.25, eink_st_params) + - einkommensteuertarif(einkommen_y * 0.75, eink_st_params) + ), + einkommen_y * eink_st_params["eink_st_tarif"]["rates"][0][1], + ) + + return out diff --git a/src/_gettsim/taxes/soli_st.py b/src/_gettsim/taxes/soli_st.py deleted file mode 100644 index 316d4f72ec..0000000000 --- a/src/_gettsim/taxes/soli_st.py +++ /dev/null @@ -1,131 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - - -@policy_function(end_date="2008-12-31", leaf_name="soli_st_y_sn") -def soli_st_y_sn_ohne_abgelt_st( - eink_st_mit_kinderfreib_y_sn: float, - anz_personen_sn: int, - soli_st_params: dict, -) -> float: - """Calculate the Solidarity Surcharge on Steuernummer level. - - Solidaritätszuschlaggesetz (SolZG) in 1991 and 1992. - Solidaritätszuschlaggesetz 1995 (SolZG 1995) since 1995. - - The Solidarity Surcharge is an additional tax on top of the income tax which - is the tax base. As opposed to the 'standard' income tax, child allowance is - always deducted for tax base calculation. - - There is also Solidarity Surcharge on the Capital Income Tax, but always - with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 - SolzG 1995. - - Parameters - ---------- - eink_st_mit_kinderfreib_y_sn - See :func:`eink_st_mit_kinderfreib_y_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - soli_st_params - See params documentation :ref:`soli_st_params `. - - Returns - ------- - - """ - eink_st_per_individual = eink_st_mit_kinderfreib_y_sn / anz_personen_sn - out = anz_personen_sn * _soli_st_tarif(eink_st_per_individual, soli_st_params) - - return out - - -@policy_function(start_date="2009-01-01", leaf_name="soli_st_y_sn") -def soli_st_y_sn_mit_abgelt_st( - eink_st_mit_kinderfreib_y_sn: float, - anz_personen_sn: int, - abgelt_st_y_sn: float, - soli_st_params: dict, -) -> float: - """Calculate the Solidarity Surcharge on Steuernummer level. - - Solidaritätszuschlaggesetz (SolZG) in 1991 and 1992. - Solidaritätszuschlaggesetz 1995 (SolZG 1995) since 1995. - - The Solidarity Surcharge is an additional tax on top of the income tax which - is the tax base. As opposed to the 'standard' income tax, child allowance is - always deducted for tax base calculation. - - There is also Solidarity Surcharge on the Capital Income Tax, but always - with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 - SolzG 1995. - - Parameters - ---------- - eink_st_mit_kinderfreib_y_sn - See :func:`eink_st_mit_kinderfreib_y_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - abgelt_st_y_sn - See :func:`abgelt_st_y_sn`. - soli_st_params - See params documentation :ref:`soli_st_params `. - - Returns - ------- - - """ - eink_st_per_individual = eink_st_mit_kinderfreib_y_sn / anz_personen_sn - out = ( - anz_personen_sn * _soli_st_tarif(eink_st_per_individual, soli_st_params) - + soli_st_params["soli_st"]["rates"][0, -1] * abgelt_st_y_sn - ) - - return out - - -def soli_st_lohnst_m(lohnst_mit_kinderfreib_m: float, soli_st_params: dict) -> float: - """Calculates the monthly Solidarity Surcharge on Lohnsteuer - (withholding tax on earnings). - - Parameters - ---------- - lohnst_mit_kinderfreib_m - See :func:`lohnst_mit_kinderfreib_m`. - soli_st_params - See params documentation :ref:`soli_st_params `. - - Returns - Solidarity Surcharge on Lohnsteuer - ------- - - """ - - return _soli_st_tarif(12 * lohnst_mit_kinderfreib_m, soli_st_params) / 12 - - -def _soli_st_tarif(st_per_individual: float, soli_st_params: dict) -> float: - """The isolated function for Solidaritätszuschlag. - - Parameters - ---------- - st_per_individual: - the tax amount to be topped up - soli_st_params - See params documentation :ref:`soli_st_params ` - Returns - solidarity surcharge - ------- - - """ - - out = piecewise_polynomial( - st_per_individual, - thresholds=soli_st_params["soli_st"]["thresholds"], - rates=soli_st_params["soli_st"]["rates"], - intercepts_at_lower_thresholds=soli_st_params["soli_st"][ - "intercepts_at_lower_thresholds" - ], - ) - - return out diff --git "a/src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" "b/src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" new file mode 100644 index 0000000000..ee4861159f --- /dev/null +++ "b/src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -0,0 +1,123 @@ +"""Solidarity Surcharge (Solidaritätszuschlag).""" + +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + + +@policy_function(end_date="2008-12-31", leaf_name="betrag_y_sn") +def betrag_y_sn_ohne_abgelt_st( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + soli_st_params: dict, +) -> float: + """Calculate the Solidarity Surcharge on Steuernummer level. + + Solidaritätszuschlaggesetz (SolZG) in 1991 and 1992. + Solidaritätszuschlaggesetz 1995 (SolZG 1995) since 1995. + + The Solidarity Surcharge is an additional tax on top of the income tax which + is the tax base. As opposed to the 'standard' income tax, child allowance is + always deducted for tax base calculation. + + There is also Solidarity Surcharge on the Capital Income Tax, but always + with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 + SolzG 1995. + + Parameters + ---------- + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + See :func:`einkommensteuer__betrag_mit_kinderfreibetrag_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + soli_st_params + See params documentation :ref:`soli_st_params `. + + Returns + ------- + + """ + eink_st_per_individual = ( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + / einkommensteuer__anzahl_personen_sn + ) + out = einkommensteuer__anzahl_personen_sn * solidaritätszuschlagstarif( + eink_st_per_individual, soli_st_params + ) + + return out + + +@policy_function(start_date="2009-01-01", leaf_name="betrag_y_sn") +def betrag_y_sn_mit_abgelt_st( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + einkommensteuer__abgeltungssteuer__betrag_y_sn: float, + soli_st_params: dict, +) -> float: + """Calculate the Solidarity Surcharge on Steuernummer level. + + Solidaritätszuschlaggesetz (SolZG) in 1991 and 1992. + Solidaritätszuschlaggesetz 1995 (SolZG 1995) since 1995. + + The Solidarity Surcharge is an additional tax on top of the income tax which + is the tax base. As opposed to the 'standard' income tax, child allowance is + always deducted for tax base calculation. + + There is also Solidarity Surcharge on the Capital Income Tax, but always + with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 + SolzG 1995. + + Parameters + ---------- + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + See :func:`einkommensteuer__betrag_mit_kinderfreibetrag_y_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + einkommensteuer__abgeltungssteuer__betrag_y_sn + See :func:`einkommensteuer__abgeltungssteuer__betrag_y_sn`. + soli_st_params + See params documentation :ref:`soli_st_params `. + + Returns + ------- + + """ + eink_st_per_individual = ( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + / einkommensteuer__anzahl_personen_sn + ) + out = ( + einkommensteuer__anzahl_personen_sn + * solidaritätszuschlagstarif(eink_st_per_individual, soli_st_params) + + soli_st_params["soli_st"]["rates"][0, -1] + * einkommensteuer__abgeltungssteuer__betrag_y_sn + ) + + return out + + +def solidaritätszuschlagstarif(st_per_individual: float, soli_st_params: dict) -> float: + """The isolated function for Solidaritätszuschlag. + + Parameters + ---------- + st_per_individual: + the tax amount to be topped up + soli_st_params + See params documentation :ref:`soli_st_params ` + Returns + solidarity surcharge + ------- + + """ + + out = piecewise_polynomial( + st_per_individual, + thresholds=soli_st_params["soli_st"]["thresholds"], + rates=soli_st_params["soli_st"]["rates"], + intercepts_at_lower_thresholds=soli_st_params["soli_st"][ + "intercepts_at_lower_thresholds" + ], + ) + + return out diff --git a/src/_gettsim/taxes/sozialversicherung/__init__.py b/src/_gettsim/taxes/sozialversicherung/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/__init__.py b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py new file mode 100644 index 0000000000..613f394e3f --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -0,0 +1,232 @@ +"""Unemployment benefits (Arbeitslosengeld).""" + +from _gettsim.config import numpy_or_jax as np +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial +from _gettsim.taxes.einkommensteuer.einkommensteuer import einkommensteuertarif + + +@policy_function() +def betrag_m( + einkommensteuer__anzahl_kinderfreibeträge: int, + grundsätzlich_anspruchsberechtigt: bool, + einkommen_vorjahr_proxy_m: float, + arbeitsl_geld_params: dict, +) -> float: + """Calculate individual unemployment benefit. + + Parameters + ---------- + einkommensteuer__anzahl_kinderfreibeträge + See :func: + `einkommensteuer__anzahl_kinderfreibeträge`. + grundsätzlich_anspruchsberechtigt + See :func:`grundsätzlich_anspruchsberechtigt`. + einkommen_vorjahr_proxy_m + See :func:`einkommen_vorjahr_proxy_m`. + arbeitsl_geld_params + See params documentation :ref:`arbeitsl_geld_params `. + + Returns + ------- + + """ + + if einkommensteuer__anzahl_kinderfreibeträge == 0: + arbeitsl_geld_satz = arbeitsl_geld_params["satz_ohne_kinder"] + elif einkommensteuer__anzahl_kinderfreibeträge > 0: + arbeitsl_geld_satz = arbeitsl_geld_params["satz_mit_kindern"] + + if grundsätzlich_anspruchsberechtigt: + out = einkommen_vorjahr_proxy_m * arbeitsl_geld_satz + else: + out = 0.0 + + return out + + +@policy_function() +def monate_verbleibender_anspruchsdauer( + alter: int, + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, + anwartschaftszeit: bool, + monate_durchgängigen_bezugs_von_arbeitslosengeld: float, + arbeitsl_geld_params: dict, +) -> int: + """Calculate the remaining amount of months a person can receive unemployment + benefit this year. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren + See basic input variable :ref:`monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren `. + anwartschaftszeit + See basic input variable :ref:`anwartschaftszeit `. + monate_durchgängigen_bezugs_von_arbeitslosengeld + See basic input variable :ref:`monate_durchgängigen_bezugs_von_arbeitslosengeld `. + arbeitsl_geld_params + See params documentation :ref:`arbeitsl_geld_params `. + + Returns + ------- + + """ + nach_alter = piecewise_polynomial( + alter, + thresholds=[ + *list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"]), + np.inf, + ], + rates=np.array( + [[0] * len(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"])] + ), + intercepts_at_lower_thresholds=list( + arbeitsl_geld_params["anspruchsdauer"]["nach_alter"].values() + ), + ) + nach_versich_pfl = piecewise_polynomial( + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, + thresholds=[ + *list( + arbeitsl_geld_params["anspruchsdauer"][ + "nach_versicherungspflichtige_monate" + ] + ), + np.inf, + ], + rates=np.array( + [ + [0] + * len( + arbeitsl_geld_params["anspruchsdauer"][ + "nach_versicherungspflichtige_monate" + ] + ) + ] + ), + intercepts_at_lower_thresholds=list( + arbeitsl_geld_params["anspruchsdauer"][ + "nach_versicherungspflichtige_monate" + ].values() + ), + ) + if anwartschaftszeit: + anspruchsdauer_gesamt = min(nach_alter, nach_versich_pfl) + + if anwartschaftszeit: + out = max( + anspruchsdauer_gesamt - monate_durchgängigen_bezugs_von_arbeitslosengeld, + 0, + ) + else: + out = 0 + + return out + + +@policy_function() +def grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 + alter: int, + arbeitssuchend: bool, + monate_verbleibender_anspruchsdauer: int, + arbeitsstunden_w: float, + arbeitsl_geld_params: dict, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> bool: + """Check eligibility for unemployment benefit. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + arbeitssuchend + See basic input variable :ref:`arbeitssuchend `. + monate_verbleibender_anspruchsdauer + See :func:`monate_verbleibender_anspruchsdauer`. + arbeitsstunden_w + See basic input variable :ref:`arbeitsstunden_w `. + arbeitsl_geld_params + See params documentation :ref:`arbeitsl_geld_params `. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + + """ + regelaltersgrenze = ( + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) + + out = ( + arbeitssuchend + and (monate_verbleibender_anspruchsdauer > 0) + and (alter < regelaltersgrenze) + and (arbeitsstunden_w < arbeitsl_geld_params["stundengrenze"]) + ) + + return out + + +@policy_function() +def einkommen_vorjahr_proxy_m( # noqa: PLR0913 + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, + arbeitsl_geld_params: dict, + eink_st_params: dict, + eink_st_abzuege_params: dict, + soli_st_params: dict, +) -> float: + """Approximate last years income for unemployment benefit. + + Parameters + ---------- + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + See :func: + `sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m `. + arbeitsl_geld_params + See params documentation :ref:`arbeitsl_geld_params `. + eink_st_params + See params documentation :ref:`eink_st_params `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + soli_st_params + See params documentation :ref:`soli_st_params `. + + Returns + ------- + + """ + # Relevant wage is capped at the contribution thresholds + max_wage = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m, + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m, + ) + + # We need to deduct lump-sum amounts for contributions, taxes and soli + prox_ssc = arbeitsl_geld_params["sozialv_pausch"] * max_wage + + # Fictive taxes (Lohnsteuer) are approximated by applying the wage to the tax tariff + # Caution: currently wrong calculation due to + # 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"] not being + # the same as zu versteuerndes einkommen + # waiting for PR Lohnsteuer #150 to be merged to correct this problem + prox_tax = einkommensteuertarif( + 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"], + eink_st_params, + ) + prox_soli = piecewise_polynomial( + prox_tax, + thresholds=soli_st_params["soli_st"]["thresholds"], + rates=soli_st_params["soli_st"]["rates"], + intercepts_at_lower_thresholds=soli_st_params["soli_st"][ + "intercepts_at_lower_thresholds" + ], + ) + out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 + out = max(out, 0.0) + return out diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/__init__.py b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py new file mode 100644 index 0000000000..267f41aa36 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -0,0 +1,285 @@ +"""Contributions to the unemployment insurance.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__rente__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, +) -> float: + """Unemployment insurance contributions paid by the insured person. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + sozialversicherung__rente__beitrag__einkommen_m + See :func:`sozialversicherung__rente__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + betrag_arbeitgeber_regulär_beschäftigt_m = ( + sozialversicherung__rente__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + # Set to 0 for minijobs + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_arbeitgeber_regulär_beschäftigt_m + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_mit_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__in_gleitzone: bool, + betrag_versicherter_midijob_m: float, + sozialversicherung__rente__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, +) -> float: + """Unemployment insurance contributions paid by the insured person. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + betrag_versicherter_midijob_m + See :func:`betrag_versicherter_midijob_m`. + sozialversicherung__rente__beitrag__einkommen_m + See :func:`sozialversicherung__rente__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + betrag_arbeitgeber_regulär_beschäftigt_m = ( + sozialversicherung__rente__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + # Set to 0 for minijobs + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_versicherter_midijob_m + else: + out = betrag_arbeitgeber_regulär_beschäftigt_m + + return out + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__rente__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employer's unemployment insurance contribution until March 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + sozialversicherung__rente__beitrag__einkommen_m + See :func:`sozialversicherung__rente__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + betrag_arbeitgeber_regulär_beschäftigt_m = ( + sozialversicherung__rente__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + # Set to 0 for minijobs + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_arbeitgeber_regulär_beschäftigt_m + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_mit_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__in_gleitzone: bool, + betrag_arbeitgeber_midijob_m: float, + sozialversicherung__rente__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employer's unemployment insurance contribution since April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + sozialversicherung__rente__beitrag__einkommen_m + See :func:`sozialversicherung__rente__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + betrag_arbeitgeber_regulär_beschäftigt_m = ( + sozialversicherung__rente__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + # Set to 0 for minijobs + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_arbeitgeber_midijob_m + else: + out = betrag_arbeitgeber_regulär_beschäftigt_m + + return out + + +@policy_function(start_date="2003-04-01") +def betrag_gesamt_midijob_m( + sozialversicherung__midijob_bemessungsentgelt_m: float, + sozialv_beitr_params: dict, +) -> float: + """Sum of employee's and employer's unemployment insurance contribution + for midijobs. + + Parameters + ---------- + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + return ( + sozialversicherung__midijob_bemessungsentgelt_m + * 2 + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + +@policy_function( + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="betrag_arbeitgeber_midijob_m", +) +def betrag_arbeitgeber_midijob_m_anteil_bruttolohn( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employers' unemployment insurance contribution for Midijobs until September + 2022. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + + Returns + ------- + + """ + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") +def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( + betrag_gesamt_midijob_m: float, + betrag_versicherter_midijob_m: float, +) -> float: + """Employer's unemployment insurance contribution since October 2022. + + Parameters + ---------- + betrag_gesamt_midijob_m + See :func:`betrag_gesamt_midijob_m`. + betrag_versicherter_midijob_m + See :func:`betrag_versicherter_midijob_m`. + + Returns + ------- + + """ + return betrag_gesamt_midijob_m - betrag_versicherter_midijob_m + + +@policy_function( + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="betrag_versicherter_midijob_m", +) +def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_gesamt_midijob_m: float, + betrag_arbeitgeber_midijob_m: float, +) -> float: + """Employee's unemployment insurance contribution for Midijobs until September + 2022. + + Parameters + ---------- + betrag_gesamt_midijob_m + See :func:`betrag_gesamt_midijob_m`. + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + + Returns + ------- + + """ + return betrag_gesamt_midijob_m - betrag_arbeitgeber_midijob_m + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_versicherter_midijob_m") +def betrag_versicherter_midijob_m_mit_festem_beitragssatz( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's unemployment insurance contribution since October 2022. + + Parameters + ---------- + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + return ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + ) diff --git "a/src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" new file mode 100644 index 0000000000..235f5a92f4 --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" @@ -0,0 +1,87 @@ +"""Social insurance contributions.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def beiträge_versicherter_m( + sozialversicherung__pflege__beitrag__betrag_versicherter_m: float, + sozialversicherung__kranken__beitrag__betrag_versicherter_m: float, + sozialversicherung__rente__beitrag__betrag_versicherter_m: float, + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: float, +) -> float: + """Sum of social insurance contributions paid by the insured person. + Parameters + ---------- + sozialversicherung__pflege__beitrag__betrag_versicherter_m + See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_m`. + sozialversicherung__kranken__beitrag__betrag_versicherter_m + See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_m`. + sozialversicherung__rente__beitrag__betrag_versicherter_m + See :func: + `sozialversicherung__rente__beitrag__betrag_versicherter_m`. + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m + See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m`. + + Returns + ------- + + """ + return ( + sozialversicherung__pflege__beitrag__betrag_versicherter_m + + sozialversicherung__kranken__beitrag__betrag_versicherter_m + + sozialversicherung__rente__beitrag__betrag_versicherter_m + + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m + ) + + +@policy_function() +def beiträge_arbeitgeber_m( + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: float, + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: float, + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: float, + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: float, +) -> float: + """Sum of employer's social insurance contributions. + + Parameters + ---------- + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m + See :func:`sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m`. + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m + See :func:`sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m`. + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m + See :func:`sozialversicherung__rente__beitrag__betrag_arbeitgeber_m`. + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m + See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m`. + + Returns + ------- + + """ + return ( + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m + + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m + + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m + + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m + ) + + +@policy_function() +def beitrag_gesamt_m( + beiträge_versicherter_m: float, + beiträge_arbeitgeber_m: float, +) -> float: + """Sum of employer's and insured person's social insurance contributions. + + Parameters + ---------- + beiträge_versicherter_m + See :func:`beiträge_versicherter_m`. + beiträge_arbeitgeber_m + See :func:`beiträge_arbeitgeber_m`. + Returns + ------- + + """ + return beiträge_versicherter_m + beiträge_arbeitgeber_m diff --git "a/src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" new file mode 100644 index 0000000000..e772b52d10 --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -0,0 +1,110 @@ +"""Marginally employed.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def geringfügig_beschäftigt( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijob_grenze: float, +) -> bool: + """Individual earns less than marginal employment threshold. + + Marginal employed pay no social insurance contributions. + + Legal reference: § 8 Abs. 1 Satz 1 and 2 SGB IV + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + minijob_grenze + See :func:`minijob_grenze`. + + + Returns + ------- + Whether person earns less than marginal employment threshold. + + """ + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= minijob_grenze + ) + + +@policy_function( + end_date="1999-12-31", + leaf_name="minijob_grenze", + params_key_for_rounding="sozialv_beitr", +) +def minijob_grenze_unterscheidung_ost_west( + wohnort_ost: bool, sozialv_beitr_params: dict +) -> float: + """Minijob income threshold depending on place of living (East or West Germany). + + Until 1999, the threshold is different for East and West Germany. + + Parameters + ---------- + wohnort_ost + See basic input variable :ref:`wohnort_ost `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + Returns + ------- + + """ + west = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["west"] + ost = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["ost"] + out = ost if wohnort_ost else west + return float(out) + + +@policy_function( + start_date="2000-01-01", + end_date="2022-09-30", + leaf_name="minijob_grenze", + params_key_for_rounding="sozialv_beitr", +) +def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: + """Minijob income threshold depending on place of living. + + From 2000 onwards, the threshold is the same for all of Germany. Until September + 2022, the threshold is exogenously set. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + Returns + ------- + + """ + return float(sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]) + + +@policy_function( + start_date="2022-10-01", + leaf_name="minijob_grenze", + params_key_for_rounding="sozialv_beitr", +) +def minijob_grenze_abgeleitet_von_mindestlohn(sozialv_beitr_params: dict) -> float: + """Minijob income threshold since 10/2022. Since then, it is calculated endogenously + from the statutory minimum wage. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Marginal Job Threshold + + """ + return ( + sozialv_beitr_params["mindestlohn"] + * sozialv_beitr_params["geringf_eink_faktor"] + / sozialv_beitr_params["geringf_eink_divisor"] + ) diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/__init__.py b/src/_gettsim/taxes/sozialversicherung/kranken/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/__init__.py b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py new file mode 100644 index 0000000000..3d3984faab --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py @@ -0,0 +1,411 @@ +"""Public health insurance contributions.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_rentner_m: float, + betrag_selbstständig_m: float, + betrag_versicherter_regulär_beschäftigt_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Public health insurance contributions paid by the insured person. + + Before Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_rentner_m + See :func:`betrag_rentner_m`. + betrag_selbstständig_m + See :func:`betrag_selbstständig_m`. + betrag_versicherter_regulär_beschäftigt_m + See :func:`betrag_versicherter_regulär_beschäftigt_m`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + + Returns + ------- + + """ + if einkommensteuer__einkünfte__ist_selbstständig: + out = betrag_selbstständig_m + elif sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_versicherter_regulär_beschäftigt_m + + # Add the health insurance contribution for pensions + return out + betrag_rentner_m + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_mit_midijob( # noqa: PLR0913 + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_rentner_m: float, + betrag_selbstständig_m: float, + sozialversicherung__in_gleitzone: bool, + betrag_versicherter_midijob_m: float, + betrag_versicherter_regulär_beschäftigt_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Public health insurance contributions paid by the insured person. + + After Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_rentner_m + See :func:`betrag_rentner_m`. + betrag_selbstständig_m + See :func:`betrag_selbstständig_m`. + betrag_versicherter_midijob_m + See :func:`betrag_versicherter_midijob_m`. + betrag_versicherter_regulär_beschäftigt_m + See :func:`betrag_versicherter_regulär_beschäftigt_m`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + + Returns + ------- + + """ + if einkommensteuer__einkünfte__ist_selbstständig: + out = betrag_selbstständig_m + elif sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_versicherter_midijob_m + else: + out = betrag_versicherter_regulär_beschäftigt_m + + # Add the health insurance contribution for pensions + return out + betrag_rentner_m + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_ohne_midijob( # noqa: PLR0913 + sozialversicherung__geringfügig_beschäftigt: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommen_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, + sozialv_beitr_params: dict, + beitragssatz_arbeitgeber: float, +) -> float: + """Employer's public health insurance contribution. + + Before Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + einkommen_m + See :func:`einkommen_m`. + beitragssatz_arbeitgeber + See :func:`beitragssatz_arbeitgeber`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + + """ + if einkommensteuer__einkünfte__ist_selbstständig: + out = 0.0 + elif sozialversicherung__geringfügig_beschäftigt: + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] + ) + else: + out = einkommen_m * beitragssatz_arbeitgeber + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__in_gleitzone: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + betrag_arbeitgeber_midijob_m: float, + einkommen_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, + sozialv_beitr_params: dict, + beitragssatz_arbeitgeber: float, +) -> float: + """Employer's public health insurance contribution. + + After Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + einkommen_m + See :func:`einkommen_m`. + beitragssatz_arbeitgeber + See :func:`beitragssatz_arbeitgeber`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + + """ + if einkommensteuer__einkünfte__ist_selbstständig: + out = 0.0 + elif sozialversicherung__geringfügig_beschäftigt: + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] + ) + elif sozialversicherung__in_gleitzone: + out = betrag_arbeitgeber_midijob_m + else: + out = einkommen_m * beitragssatz_arbeitgeber + + return out + + +@policy_function() +def betrag_versicherter_regulär_beschäftigt_m( + einkommen_m: float, + beitragssatz_arbeitnehmer: float, +) -> float: + """Employee's health insurance contributions for regular jobs. + + Parameters + ---------- + einkommen_m + See :func:`einkommen_m`. + beitragssatz_arbeitnehmer + See :func:`beitragssatz_arbeitnehmer`. + Returns + ------- + + """ + return beitragssatz_arbeitnehmer * einkommen_m + + +@policy_function() +def betrag_selbstständig_m( + bemessungsgrundlage_selbstständig_m: float, + sozialv_beitr_params: dict, +) -> float: + """Health insurance contributions for self-employed's income. The self-employed + pay the full reduced contribution. + + Parameters + ---------- + bemessungsgrundlage_selbstständig_m + See :func:`bemessungsgrundlage_selbstständig_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + params = sozialv_beitr_params["beitr_satz"]["ges_krankenv"] + ermäßigter_beitrag = ( + params["ermäßigt"] if ("ermäßigt" in params) else params["mean_allgemein"] + ) + zusatzbeitrag = params.get("mean_zusatzbeitrag", 0.0) + ges_krankenv_beitr_satz_selbst = ermäßigter_beitrag + zusatzbeitrag + + return ges_krankenv_beitr_satz_selbst * bemessungsgrundlage_selbstständig_m + + +@policy_function() +def betrag_rentner_m( + bemessungsgrundlage_rente_m: float, + beitragssatz_arbeitnehmer: float, +) -> float: + """Health insurance contributions for pension incomes. + + Parameters + ---------- + bemessungsgrundlage_rente_m + See :func:`bemessungsgrundlage_rente_m`. + beitragssatz_arbeitnehmer + See :func:`beitragssatz_arbeitnehmer`. + Returns + ------- + + """ + + return beitragssatz_arbeitnehmer * bemessungsgrundlage_rente_m + + +@policy_function(start_date="2003-04-01") +def betrag_gesamt_midijob_m( + sozialversicherung__midijob_bemessungsentgelt_m: float, + beitragssatz_arbeitnehmer: float, + beitragssatz_arbeitgeber: float, +) -> float: + """Sum of employee and employer health insurance contribution for midijobs. + + Midijobs were introduced in April 2003. + + Parameters + ---------- + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + beitragssatz_arbeitnehmer + See + :func:`beitragssatz_arbeitnehmer`. + beitragssatz_arbeitgeber + See + :func:`beitragssatz_arbeitgeber`. + + Returns + ------- + + """ + return ( + beitragssatz_arbeitnehmer + beitragssatz_arbeitgeber + ) * sozialversicherung__midijob_bemessungsentgelt_m + + +@policy_function( + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="betrag_arbeitgeber_midijob_m", +) +def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialversicherung__in_gleitzone: bool, + beitragssatz_arbeitgeber: float, +) -> float: + """Employers' health insurance contribution for midijobs until September 2022. + + Midijobs were introduced in April 2003. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + beitragssatz_arbeitgeber + See + :func:`beitragssatz_arbeitgeber`. + Returns + ------- + + """ + if sozialversicherung__in_gleitzone: + out = ( + beitragssatz_arbeitgeber + * einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") +def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( + betrag_gesamt_midijob_m: float, + betrag_versicherter_midijob_m: float, + sozialversicherung__in_gleitzone: bool, +) -> float: + """Employer's health insurance contribution for midijobs since October + 2022. + + Parameters + ---------- + betrag_gesamt_midijob_m + See :func:`betrag_gesamt_midijob_m`. + betrag_versicherter_midijob_m + See :func:`betrag_versicherter_midijob_m`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + beitragssatz_arbeitgeber + See + :func:`beitragssatz_arbeitgeber`. + Returns + ------- + + """ + if sozialversicherung__in_gleitzone: + out = betrag_gesamt_midijob_m - betrag_versicherter_midijob_m + else: + out = 0.0 + + return out + + +@policy_function( + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="betrag_versicherter_midijob_m", +) +def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_gesamt_midijob_m: float, + betrag_arbeitgeber_midijob_m: float, +) -> float: + """Employee's health insurance contribution for midijobs until September 2022. + + Parameters + ---------- + betrag_gesamt_midijob_m + See :func:`betrag_gesamt_midijob_m`. + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + Returns + ------- + + """ + return betrag_gesamt_midijob_m - betrag_arbeitgeber_midijob_m + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_versicherter_midijob_m") +def betrag_versicherter_midijob_m_mit_festem_beitragssatz( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + beitragssatz_arbeitnehmer: float, +) -> float: + """Employee's health insurance contribution for midijobs since October 2022. + + Parameters + ---------- + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. + beitragssatz_arbeitnehmer + See + :func:`beitragssatz_arbeitnehmer`. + Returns + ------- + + """ + return ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * beitragssatz_arbeitnehmer + ) diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py new file mode 100644 index 0000000000..033f409430 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -0,0 +1,450 @@ +"""Contribution rate for health insurance.""" + +from _gettsim.function_types import policy_function + + +@policy_function( + end_date="2005-06-30", +) +def beitragssatz_arbeitnehmer( + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate until June 2005. + + Basic split between employees and employers. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance. + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 + + +@policy_function( + end_date="2005-06-30", +) +def beitragssatz_arbeitnehmer_jahresanfang( + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate for the beginning of the year until + June 2005. + + Basic split between employees and employers. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance at the begging of the year. + + """ + return ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ + "mean_allgemein" + ] + / 2 + ) + + +@policy_function( + start_date="2005-07-01", + end_date="2008-12-31", + leaf_name="beitragssatz_arbeitnehmer", +) +def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate. + + From July 2005 until December 2008. The contribution rates consists of a general + rate (split equally between employers and employees, differs across sickness funds) + and a top-up rate, which is fully paid by employees. + + Parameters + ---------- + zusatzbeitragssatz + See :func:`zusatzbeitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance. + + """ + + mean_allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ + "mean_allgemein" + ] + + return mean_allgemein / 2 + zusatzbeitragssatz + + +@policy_function( + start_date="2005-07-01", + end_date="2008-12-31", + leaf_name="beitragssatz_arbeitnehmer_jahresanfang", +) +def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate at the beginning of the year. + + From July 2005 until December 2008. The contribution rates consists of a general + rate (split equally between employers and employees, differs across sickness funds) + and a top-up rate, which is fully paid by employees. + + Parameters + ---------- + zusatzbeitragssatz + See :func:`zusatzbeitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance at the beginning of the year. + + """ + + mean_allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ + "mean_allgemein" + ] + + return mean_allgemein / 2 + zusatzbeitragssatz + + +@policy_function( + start_date="2009-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitnehmer", +) +def beitragssatz_arbeitnehmer_einheitlicher_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate. + + From January 2009 until December 2018. The contribution rates consists of a general + rate (split equally between employers and employees, same for all sickness funds) + and a top-up rate, which is fully paid by employees. + + Parameters + ---------- + zusatzbeitragssatz + See :func:`zusatzbeitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance. + + """ + + allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] + + return allgemein / 2 + zusatzbeitragssatz + + +@policy_function( + start_date="2009-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitnehmer_jahresanfang", +) +def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate at the beginning of the year. + + From January 2009 until December 2018. The contribution rates consists of a general + rate (split equally between employers and employees, same for all sickness funds) + and a top-up rate, which is fully paid by employees. + + Parameters + ---------- + zusatzbeitragssatz + See :func:`zusatzbeitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Beitragssatz for statutory health insurance at the beginning of the year. + + """ + + allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ + "allgemein" + ] + + return allgemein / 2 + zusatzbeitragssatz + + +@policy_function( + start_date="2019-01-01", + leaf_name="beitragssatz_arbeitnehmer", +) +def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate. + + Since 2019. Zusatzbeitrag is split equally between employers and employees. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ + "allgemein" + ] + return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 + + +@policy_function( + start_date="2019-01-01", + leaf_name="beitragssatz_arbeitnehmer_jahresanfang", +) +def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( + zusatzbeitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's health insurance contribution rate at the beginning of the year. + + Zusatzbeitrag is now split equally between employers and employees. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz_jahresanfang"][ + "ges_krankenv" + ]["allgemein"] + return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 + + +@policy_function( + end_date="2008-12-31", + leaf_name="beitragssatz_arbeitgeber", +) +def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( + sozialv_beitr_params: dict, +) -> float: + """Employer's health insurance contribution rate. + + Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 + + +@policy_function( + end_date="2008-12-31", + leaf_name="beitragssatz_arbeitgeber_jahresanfang", +) +def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( + sozialv_beitr_params: dict, +) -> float: + """Employer's health insurance contribution rate at the begging of the year. + + Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + + return ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ + "mean_allgemein" + ] + / 2 + ) + + +@policy_function( + start_date="2009-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitgeber", +) +def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( + sozialv_beitr_params: dict, +) -> float: + """Employer's health insurance contribution rate. + + From 2009 until 2018, the contribution rate was uniform for all health insurers, + Zusatzbeitrag irrelevant. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] / 2 + + +@policy_function( + start_date="2009-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitgeber_jahresanfang", +) +def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( + sozialv_beitr_params: dict, +) -> float: + """Employer's health insurance contribution rate at the beginning of the year. + + From 2009 until 2018, the contribution rate was uniform for all health insurers, + Zusatzbeitrag irrelevant. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + + return ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"]["allgemein"] / 2 + ) + + +@policy_function( + start_date="2019-01-01", + leaf_name="beitragssatz_arbeitgeber", +) +def beitragssatz_arbeitgeber_paritätischer_zusatzbeitrag( + beitragssatz_arbeitnehmer: float, +) -> float: + """Employer's health insurance contribution rate. + + Since 2019, the full contribution rate is now split equally between employers and + employees. + + Parameters + ---------- + beitragssatz_arbeitnehmer + See :func:`beitragssatz_arbeitnehmer`. + + Returns + ------- + + """ + return beitragssatz_arbeitnehmer + + +@policy_function( + start_date="2019-01-01", + leaf_name="beitragssatz_arbeitgeber_jahresanfang", +) +def beitragssatz_arbeitgeber_jahresanfang_paritätischer_zusatzbeitrag( + beitragssatz_arbeitnehmer_jahresanfang: float, +) -> float: + """Employer's health insurance contribution rate at the beginning of the year. + + Since 2019, the full contribution rate is now split equally between employers and + employees. + + Parameters + ---------- + beitragssatz_arbeitnehmer + See :func:`beitragssatz_arbeitnehmer`. + + Returns + ------- + + """ + return beitragssatz_arbeitnehmer_jahresanfang + + +@policy_function( + start_date="2005-07-01", + end_date="2014-12-31", + leaf_name="zusatzbeitragssatz", +) +def zusatzbeitragssatz_von_sonderbeitrag( + sozialv_beitr_params: dict, +) -> float: + """Health insurance top-up (Zusatzbeitrag) rate until December 2014. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Zusatzbeitragssatz (based on Sonderbeitrag) + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["sonderbeitrag"] + + +@policy_function( + start_date="2015-01-01", + leaf_name="zusatzbeitragssatz", +) +def zusatzbeitragssatz_von_mean_zusatzbeitrag( + sozialv_beitr_params: dict, +) -> float: + """Health insurance top-up rate (Zusatzbeitrag) since January 2015. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Zusatzbeitragssatz (based on mean value of Zusatzbeitragssatz) + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_zusatzbeitrag"] diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py new file mode 100644 index 0000000000..e9a4a24002 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py @@ -0,0 +1,195 @@ +"""Income relevant for public health insurance contributions.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def einkommen_m( + einkommen_regulär_beschäftigt_m: float, + sozialversicherung__regulär_beschäftigt: bool, +) -> float: + """Wage subject to public health insurance contributions. + + This affects marginally employed persons and high wages for above the assessment + ceiling. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. + sozialversicherung__regulär_beschäftigt + See :func:`sozialversicherung__regulär_beschäftigt`. + beitragsbemessungsgrenze_m + See :func:`beitragsbemessungsgrenze_m`. + + + Returns + ------- + + """ + if sozialversicherung__regulär_beschäftigt: + out = einkommen_regulär_beschäftigt_m + else: + out = 0.0 + return out + + +@policy_function() +def einkommen_regulär_beschäftigt_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + beitragsbemessungsgrenze_m: float, +) -> float: + """Income subject to public health insurance contributions. + + This does not consider reduced contributions for Mini- and Midijobs. Relevant for + the computation of payroll taxes. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. + beitragsbemessungsgrenze_m + See :func:`beitragsbemessungsgrenze_m`. + + Returns + ------- + Income subject to public health insurance contributions. + """ + + return min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, + beitragsbemessungsgrenze_m, + ) + + +@policy_function() +def bemessungsgrundlage_selbstständig_m( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + bezugsgröße_selbstständig_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, + privat_versichert: bool, + beitragsbemessungsgrenze_m: float, + sozialv_beitr_params: dict, +) -> float: + """Self-employed income which is subject to health insurance contributions. + + The value is bounded from below and from above. Only affects those self-employed who + voluntarily contribute to the public health system. + + Reference: §240 SGB V Abs. 4 + + Parameters + ---------- + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m `. + bezugsgröße_selbstständig_m + See :func:`bezugsgröße_selbstständig_m`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + privat_versichert + See basic input variable :ref:`privat_versichert `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + beitragsbemessungsgrenze_m + See :func:`beitragsbemessungsgrenze_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + # Calculate if self employed insures via public health insurance. + if einkommensteuer__einkünfte__ist_selbstständig and not privat_versichert: + out = min( + beitragsbemessungsgrenze_m, + max( + bezugsgröße_selbstständig_m + * sozialv_beitr_params[ + "mindestanteil_bezugsgröße_beitragspf_einnahme_selbst" + ], + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m, + ), + ) + else: + out = 0.0 + + return out + + +@policy_function() +def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: + """Income threshold up to which health insurance payments apply. + + Parameters + ---------- + wohnort_ost + See :func:`wohnort_ost`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + The income threshold up to which the rate of health insurance contributions apply. + + """ + params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_krankenv"] + + out = params["ost"] if wohnort_ost else params["west"] + + return float(out) + + +@policy_function() +def bezugsgröße_selbstständig_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: + """Threshold for self employment income subject to health insurance. + + Selecting by place of living the income threshold for self employed up to which the + rate of health insurance contributions apply. + + Parameters + ---------- + wohnort_ost + See basic input variable :ref:`wohnort_ost `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + out = ( + sozialv_beitr_params["bezugsgröße_selbst_m"]["ost"] + if wohnort_ost + else sozialv_beitr_params["bezugsgröße_selbst_m"]["west"] + ) + + return float(out) + + +@policy_function() +def bemessungsgrundlage_rente_m( + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__private_rente_betrag_m: float, + beitragsbemessungsgrenze_m: float, +) -> float: + """Pension income which is subject to health insurance contribution. + + Parameters + ---------- + sozialversicherung__rente__altersrente__betrag_m: float, + See :func:`sozialversicherung__rente__altersrente__betrag_m`. + sozialversicherung__rente__private_rente_betrag_m: float, + See :func:`sozialversicherung__rente__private_rente_betrag_m`. + beitragsbemessungsgrenze_m + See :func:`beitragsbemessungsgrenze_m`. + + Returns + ------- + + """ + return min( + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__private_rente_betrag_m, + beitragsbemessungsgrenze_m, + ) diff --git a/src/_gettsim/taxes/sozialversicherung/midijob.py b/src/_gettsim/taxes/sozialversicherung/midijob.py new file mode 100644 index 0000000000..3014dc5a5e --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/midijob.py @@ -0,0 +1,381 @@ +"""Midijob.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijob_grenze: float, + sozialv_beitr_params: dict, +) -> float: + """Income subject to employee social insurance contributions for midijob since + October 2022. + + Gesonderte Beitragspflichtige Einnahme is the reference income for midijobs subject + to employee social insurance contribution. + + Legal reference: Changes in § 20 SGB IV from 01.10.2022 + + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + minijob_grenze + See :func:`minijob_grenze`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + Income subject to employee social insurance contributions for midijob. + + """ + midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + + quotient = midijob_grenze / (midijob_grenze - minijob_grenze) + einkommen_diff = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - minijob_grenze + ) + + out = quotient * einkommen_diff + + return out + + +@policy_function( + start_date="2003-04-01", + end_date="2004-12-31", + leaf_name="midijob_faktor_f", + params_key_for_rounding="sozialv_beitr", +) +def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + sozialv_beitr_params: dict, +) -> float: + """Midijob Faktor F until December 2004. + + Legal reference: § 163 Abs. 10 SGB VI + + + Parameters + ---------- + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + Returns + ------- + Income subject to social insurance contributions for midijob. + + """ + # First calculate the factor F from the formula in § 163 (10) SGB VI + # Therefore sum the contributions which are the same for employee and employer + allg_sozialv_beitr = ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] + + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ) + + allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"] + + # Then calculate specific shares + an_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + ) + ag_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + ) + + # Sum over the shares which are specific for midijobs. + pausch_mini = ( + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] + + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] + + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] + ) + + # Now calculate final factor + out = pausch_mini / (an_anteil + ag_anteil) + + return out + + +@policy_function( + start_date="2005-01-01", + end_date="2022-09-30", + leaf_name="midijob_faktor_f", + params_key_for_rounding="sozialv_beitr", +) +def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + sozialv_beitr_params: dict, +) -> float: + """Midijob Faktor F between 2005 and September 2025. + + Legal reference: § 163 Abs. 10 SGB VI + + + Parameters + ----------. + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params ` + + Returns + ------- + Income subject to social insurance contributions for midijob. + + """ + # First calculate the factor F from the formula in § 163 (10) SGB VI + # Therefore sum the contributions which are the same for employee and employer + allg_sozialv_beitr = ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] + + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ) + + allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"][ + "ges_pflegev" + ]["standard"] + + # Then calculate specific shares + an_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + ) + ag_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + ) + + # Sum over the shares which are specific for midijobs. + pausch_mini = ( + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] + + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] + + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] + ) + + # Now calculate final factor + out = pausch_mini / (an_anteil + ag_anteil) + + return out + + +@policy_function( + start_date="2022-10-01", + leaf_name="midijob_faktor_f", + params_key_for_rounding="sozialv_beitr", +) +def midijob_faktor_f_ohne_minijob_steuerpauschale( + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + sozialv_beitr_params: dict, +) -> float: + """Midijob Faktor F since October 2022. + + Legal reference: § 163 Abs. 10 SGB VI + + + Parameters + ---------- + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Income subject to social insurance contributions for midijob. + + """ + # Calculate the Gesamtsozialversicherungsbeitragssatz by summing social + # insurance contributions for employer and employee and + # adding the mean Zusatzbeitrag + # First calculate the factor F from the formula in § 163 (10) SGB VI + # Therefore sum the contributions which are the same for employee and employer + allg_sozialv_beitr = ( + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] + + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"]["standard"] + + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ) + + # Then calculate specific shares + an_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + ) + ag_anteil = ( + allg_sozialv_beitr + + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + ) + + # Sum over the shares which are specific for midijobs. + # New formula only inludes the lump-sum contributions to health care + # and pension insurance + pausch_mini = ( + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] + + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] + ) + + # Now calculate final factor f + out = pausch_mini / (an_anteil + ag_anteil) + + return out + + +@policy_function( + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="midijob_bemessungsentgelt_m", +) +def midijob_bemessungsentgelt_m_bis_09_2022( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + midijob_faktor_f: float, + minijob_grenze: float, + sozialv_beitr_params: dict, +) -> float: + """Income subject to social insurance contributions for midijob until September + 2022. + + Bemessungsgeld (Gleitzonenentgelt) is the reference income for midijobs subject to + social insurance contribution. + + Legal reference: § 163 Abs. 10 SGB VI + + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + midijob_faktor_f + See :func:`midijob_faktor_f`. + minijob_grenze + See :func:`minijob_grenze`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + Income subject to social insurance contributions for midijob. + + """ + # Now use the factor to calculate the overall bemessungsentgelt + minijob_anteil = midijob_faktor_f * minijob_grenze + lohn_über_mini = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - minijob_grenze + ) + gewichtete_midijob_rate = ( + sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + / ( + sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + - minijob_grenze + ) + ) - ( + minijob_grenze + / ( + sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + - minijob_grenze + ) + * midijob_faktor_f + ) + + return minijob_anteil + lohn_über_mini * gewichtete_midijob_rate + + +@policy_function(start_date="2022-10-01", leaf_name="midijob_bemessungsentgelt_m") +def midijob_bemessungsentgelt_m_ab_10_2022( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + midijob_faktor_f: float, + minijob_grenze: float, + sozialv_beitr_params: dict, +) -> float: + """Total income subject to social insurance contributions for midijobs since October + 2022. + + In the law, the considered income is referred to as "beitragspflichtige Einnahme". + + Beitragspflichtige Einnahme is the reference income for midijobs subject to employer + and employee social insurance contribution. + + Legal reference: Changes in § 20 SGB IV from 01.10.2022 + + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + midijob_faktor_f + See :func:`midijob_faktor_f`. + minijob_grenze + See :func:`minijob_grenze`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + Income subject to social insurance contributions for midijob. + + """ + midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + + quotient1 = (midijob_grenze) / (midijob_grenze - minijob_grenze) + quotient2 = (minijob_grenze) / (midijob_grenze - minijob_grenze) + einkommen_diff = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - minijob_grenze + ) + + faktor1 = midijob_faktor_f * minijob_grenze + faktor2 = (quotient1 - quotient2 * midijob_faktor_f) * einkommen_diff + out = faktor1 + faktor2 + + return out + + +@policy_function(start_date="2003-04-01") +def in_gleitzone( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + geringfügig_beschäftigt: bool, + sozialv_beitr_params: dict, +) -> bool: + """Individual's income is in midi-job range. + + Employed people with their wage in the range of gleitzone pay reduced social + insurance contributions. + + Legal reference: § 20 Abs. 2 SGB IV + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + geringfügig_beschäftigt + See :func:`geringfügig_beschäftigt`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Whether individual's income is in midi-job range. + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + ) and (not geringfügig_beschäftigt) + return out diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/__init__.py b/src/_gettsim/taxes/sozialversicherung/pflege/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py b/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py new file mode 100644 index 0000000000..1a394fba31 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py @@ -0,0 +1,647 @@ +"""Contributions to public long-term care insurance.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_ohne_midijob( + betrag_versicherter_regulär_beschäftigt_m: float, + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_rentner_m: float, + betrag_selbstständig_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Long-term care insurance contributions paid by the insured person. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_rentner_m + See :func:`betrag_rentner_m`. + betrag_selbstständig_m + See :func:`betrag_selbstständig_m`. + betrag_versicherter_regulär_beschäftigt_m + See :func:`betrag_versicherter_regulär_beschäftigt_m`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + Returns + ------- + Long-term care insurance contributions paid by the insured person. + + """ + + if einkommensteuer__einkünfte__ist_selbstständig: + out = betrag_selbstständig_m + elif sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_versicherter_regulär_beschäftigt_m + + # Add the care insurance contribution for pensions + return out + betrag_rentner_m + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_mit_midijob( # noqa: PLR0913 + betrag_versicherter_regulär_beschäftigt_m: float, + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_rentner_m: float, + betrag_selbstständig_m: float, + betrag_versicherter_midijob_m: float, + sozialversicherung__in_gleitzone: bool, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Long-term care insurance contributions paid by the insured person. + + Parameters + ---------- + betrag_versicherter_regulär_beschäftigt_m + See :func:`betrag_versicherter_regulär_beschäftigt_m`. + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_rentner_m + See :func:`betrag_rentner_m`. + betrag_selbstständig_m + See :func:`betrag_selbstständig_m`. + betrag_versicherter_midijob_m + See :func:`betrag_versicherter_midijob_m`. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + Returns + ------- + Long-term care insurance contributions paid by the insured person. + + """ + + if einkommensteuer__einkünfte__ist_selbstständig: + out = betrag_selbstständig_m + elif sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_versicherter_midijob_m + else: + out = betrag_versicherter_regulär_beschäftigt_m + + # Add the care insurance contribution for pensions + return out + betrag_rentner_m + + +@policy_function() +def betrag_versicherter_regulär_beschäftigt_m( + sozialversicherung__kranken__beitrag__einkommen_m: float, + beitragssatz: float, +) -> float: + """Long-term care insurance contributions paid by the insured person if regularly employed. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__einkommen_m: + See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. + beitragssatz: + See :func:`beitragssatz`. + + Returns + ------- + Long-term care insurance contributions of employer and employee. + + """ + + return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + sozialversicherung__kranken__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Employer's long-term care insurance contribution. + + Before Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + sozialversicherung__kranken__beitrag__einkommen_m + See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + Returns + ------- + Employer's long-term care insurance contributions. + + """ + # Calculate care insurance contributions for regular jobs. + beitr_regulär_beschäftigt_m = ( + sozialversicherung__kranken__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + ) + + if ( + einkommensteuer__einkünfte__ist_selbstständig + or sozialversicherung__geringfügig_beschäftigt + ): + out = 0.0 + else: + out = beitr_regulär_beschäftigt_m + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_arbeitgeber_midijob_m: float, + sozialversicherung__kranken__beitrag__einkommen_m: float, + sozialv_beitr_params: dict, + sozialversicherung__in_gleitzone: bool, + einkommensteuer__einkünfte__ist_selbstständig: bool, +) -> float: + """Employer's long-term care insurance contribution. + + After Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + sozialversicherung__kranken__beitrag__einkommen_m + See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + einkommensteuer__einkünfte__ist_selbstständig + See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig `. + + Returns + ------- + Employer's long-term care insurance contributions. + + """ + # Calculate care insurance contributions for regular jobs. + beitr_regulär_beschäftigt_m = ( + sozialversicherung__kranken__beitrag__einkommen_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + + if ( + einkommensteuer__einkünfte__ist_selbstständig + or sozialversicherung__geringfügig_beschäftigt + ): + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_arbeitgeber_midijob_m + else: + out = beitr_regulär_beschäftigt_m + + return out + + +@policy_function( + start_date="1995-01-01", + end_date="2004-12-31", + leaf_name="betrag_selbstständig_m", +) +def betrag_selbstständig_m_ohne_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, + beitragssatz: float, +) -> float: + """Self-employed individuals' long-term care insurance contribution until 2004. + + Self-employed pay the full contribution (employer + employee), which is either + assessed on their self-employement income or 3/4 of the 'Bezugsgröße' + + Parameters + ---------- + + sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m + See :func: `sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m`. + + beitragssatz + See :func: `beitragssatz`. + + Returns + ------- + Self-employed long-term care insurance contributions. + + """ + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m * ( + beitragssatz * 2 + ) + + +@policy_function(start_date="2005-01-01", leaf_name="betrag_selbstständig_m") +def betrag_selbstständig_m_mit_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, + beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Self-employed individuals' long-term care insurance contribution since 2005. + + Self-employed pay the full contribution (employer + employee), which is either + assessed on their self-employement income or 3/4 of the 'Bezugsgröße' + + Parameters + ---------- + + sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m + See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m`. + + beitragssatz + See :func:`beitragssatz`. + + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Self-employed long-term care insurance contributions. + + """ + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m * ( + beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + + +@policy_function( + start_date="1995-01-01", + end_date="2004-03-31", + leaf_name="betrag_rentner_m", +) +def betrag_rentner_m_reduzierter_beitrag( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz: float, +) -> float: + """Long-term care insurance contribution from pension income from 1995 until March + 2004. + + Pensioners pay the same contribution as employees. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m + See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. + beitragssatz + See :func:`beitragssatz`. + + Returns + ------- + Retiree's long-term care insurance contributions. + + """ + return ( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * beitragssatz + ) + + +@policy_function( + start_date="2004-04-01", + end_date="2004-12-31", + leaf_name="betrag_rentner_m", +) +def betrag_rentner_m_ohne_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz: float, +) -> float: + """Health insurance contribution from pension income from April until December 2004. + + Pensioners pay twice the contribution of employees. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m + See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. + beitragssatz + See :func:`beitragssatz`. + + Returns + ------- + Retiree's long-term care insurance contributions. + + """ + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( + beitragssatz * 2 + ) + + +@policy_function(start_date="2005-01-01", leaf_name="betrag_rentner_m") +def betrag_rentner_m_mit_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Health insurance contribution from pension income since 2005. + + Pensioners pay twice the contribution of employees, but only once the additional + charge for childless individuals. + + Parameters + ---------- + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m + See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. + beitragssatz + See :func:`beitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Retiree's long-term care insurance contributions. + + """ + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( + beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + + +@policy_function( + start_date="2003-04-01", + end_date="2004-12-31", + leaf_name="betrag_gesamt_m", +) +def betrag_gesamt_m_bis_2004( + sozialversicherung__midijob_bemessungsentgelt_m: float, + beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Sum of employee and employer long-term care insurance contributions until 2004. + + Parameters + ---------- + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + beitragssatz + See :func:`beitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Long-term care insurance contributions of employer and employee. + + + """ + + return sozialversicherung__midijob_bemessungsentgelt_m * ( + beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + ) + + +@policy_function( + start_date="2005-01-01", + leaf_name="betrag_gesamt_m", +) +def betrag_gesamt_m_ab_2005( + sozialversicherung__midijob_bemessungsentgelt_m: float, + beitragssatz: float, + sozialv_beitr_params: dict, +) -> float: + """Sum of employee and employer long-term care insurance contributions since 2005. + + Parameters + ---------- + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + beitragssatz + See :func:`beitragssatz`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Long-term care insurance contributions of employer and employee. + + """ + + return sozialversicherung__midijob_bemessungsentgelt_m * ( + beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + + +@policy_function( + end_date="2004-12-31", + leaf_name="betrag_arbeitgeber_midijob_m", +) +def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employer's long-term care insurance contribution until December 2004. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + Employer's long-term care insurance contributions. + + + """ + + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + ) + + return out + + +@policy_function( + start_date="2005-01-01", + end_date="2022-09-30", + leaf_name="betrag_arbeitgeber_midijob_m", +) +def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_ab_2005( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employers' contribution to long-term care insurance between 2005 and September + 2022. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + + Returns + ------- + Employer's long-term care insurance contributions. + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + return out + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") +def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( + betrag_gesamt_m: float, + betrag_versicherter_m: float, +) -> float: + """Employer's long-term care insurance contribution since October 2022. + + Parameters + ---------- + betrag_gesamt_m + See :func:`betrag_gesamt_m`. + betrag_versicherter_m + See :func:`betrag_versicherter_m`. + + + Returns + ------- + Employer's long-term care insurance contributions. + + """ + out = betrag_gesamt_m - betrag_versicherter_m + return out + + +@policy_function( + end_date="2022-09-30", + leaf_name="betrag_versicherter_midijob_m", +) +def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_arbeitgeber_midijob_m: float, + betrag_gesamt_m: float, +) -> float: + """Employee's long-term care insurance contribution for Midijobs + until September 2022. + + Parameters + ---------- + betrag_arbeitgeber_midijob_m + See :func:`betrag_arbeitgeber_midijob_m`. + betrag_gesamt_m + See :func:`betrag_gesamt_m`. + + Returns + ------- + Employee's long-term care insurance contributions. + + """ + out = betrag_gesamt_m - betrag_arbeitgeber_midijob_m + + return out + + +@policy_function( + start_date="2022-10-01", + end_date="2023-06-30", + leaf_name="betrag_versicherter_midijob_m", +) +def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( + zusatzbetrag_kinderlos: bool, + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + sozialversicherung__midijob_bemessungsentgelt_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's long-term care insurance contribution between October 2022 and + June 2023. + + Parameters + ---------- + zusatzbetrag_kinderlos + See :func:`zusatzbetrag_kinderlos`. + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Employee's long-term care insurance contributions. + + """ + # Calculate the employee care insurance contribution + an_beitr_midijob_m = ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ) + + # Add additional contribution for childless individuals + if zusatzbetrag_kinderlos: + an_beitr_midijob_m += ( + sozialversicherung__midijob_bemessungsentgelt_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + ) + + return an_beitr_midijob_m + + +@policy_function(start_date="2023-07-01", leaf_name="betrag_versicherter_midijob_m") +def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehreren_kindern( + anzahl_kinder_bis_24: int, + zusatzbetrag_kinderlos: bool, + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + sozialversicherung__midijob_bemessungsentgelt_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's long-term care insurance contribution since July 2023. + + Parameters + ---------- + anzahl_kinder_bis_24 + See :func:`anzahl_kinder_bis_24`. + zusatzbetrag_kinderlos + See :func:`zusatzbetrag_kinderlos`. + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Employee's long-term care insurance contributions. + + """ + # Calculate the employee care insurance rate + ges_pflegev_rate = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + + # Reduced contribution for individuals with two or more children under 25 + if anzahl_kinder_bis_24 >= 2: + ges_pflegev_rate -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ + "abschlag_kinder" + ] * min(anzahl_kinder_bis_24 - 1, 4) + + # Calculate the employee care insurance contribution + an_beitr_midijob_m = ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * ges_pflegev_rate + ) + + # Add additional contribution for childless individuals + if zusatzbetrag_kinderlos: + an_beitr_midijob_m += ( + sozialversicherung__midijob_bemessungsentgelt_m + * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + ) + + return an_beitr_midijob_m diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py new file mode 100644 index 0000000000..4671e77be1 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -0,0 +1,161 @@ +"""Contribution rate to public long-term care insurance.""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "anzahl_kinder_bis_24_elternteil_1": AggregateByPIDSpec( + p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_1"), + source="alter_bis_24", + aggr="sum", + ), + "anzahl_kinder_bis_24_elternteil_2": AggregateByPIDSpec( + p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_2"), + source="alter_bis_24", + aggr="sum", + ), +} + + +@policy_function( + start_date="1995-01-01", + end_date="2004-12-31", + leaf_name="beitragssatz", +) +def beitragssatz_ohne_zusatz_für_kinderlose( + sozialv_beitr_params: dict, +) -> float: + """Employee's long-term care insurance contribution rate. + + Before 2005, the contribution rate was independent of the number of children. + + Parameters + ---------- + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + + return sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + + +@policy_function( + start_date="2005-01-01", + end_date="2023-06-30", + leaf_name="beitragssatz", +) +def beitragssatz_zusatz_kinderlos_dummy( + zusatzbetrag_kinderlos: bool, + sozialv_beitr_params: dict, +) -> float: + """Employee's long-term care insurance contribution rate. + + Since 2005, the contribution rate is increased for childless individuals. + + Parameters + ---------- + zusatzbetrag_kinderlos + See :func:`zusatzbetrag_kinderlos`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + + # Add additional contribution for childless individuals + if zusatzbetrag_kinderlos: + out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + + return out + + +@policy_function(start_date="2023-07-01", leaf_name="beitragssatz") +def beitragssatz_mit_kinder_abschlag( + anzahl_kinder_bis_24: int, + zusatzbetrag_kinderlos: bool, + sozialv_beitr_params: dict, +) -> float: + """Employee's long-term care insurance contribution rate. + + Since July 2023, the contribution rate is reduced for individuals with children + younger than 25. + + Parameters + ---------- + anzahl_kinder_bis_24: int, + See :func:`anzahl_kinder_bis_24`. + zusatzbetrag_kinderlos + See :func:`zusatzbetrag_kinderlos`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + + # Add additional contribution for childless individuals + if zusatzbetrag_kinderlos: + out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + + # Reduced contribution for individuals with two or more children under 25 + if anzahl_kinder_bis_24 >= 2: + out -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ + "abschlag_kinder" + ] * min(anzahl_kinder_bis_24 - 1, 4) + + return out + + +@policy_function(start_date="2005-01-01") +def zusatzbetrag_kinderlos( + hat_kinder: bool, + alter: int, + sozialv_beitr_params: dict, +) -> bool: + """Whether additional care insurance contribution for childless individuals applies. + + Not relevant before 2005 because the contribution rate was independent of the number + of children. + + Parameters + ---------- + hat_kinder + See basic input variable :ref:`hat_kinder `. + alter + See basic input variable :ref:`alter `. + sozialv_beitr_params: dict, + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + mindestalter = sozialv_beitr_params["ges_pflegev_zusatz_kinderlos_mindestalter"] + return (not hat_kinder) and alter >= mindestalter + + +@policy_function() +def anzahl_kinder_bis_24( + anzahl_kinder_bis_24_elternteil_1: int, + anzahl_kinder_bis_24_elternteil_2: int, +) -> int: + """Number of children under 25 years of age. + Parameters + ---------- + anzahl_kinder_bis_24_elternteil_1 + See :func:`anzahl_kinder_bis_24_elternteil_1`. + anzahl_kinder_bis_24_elternteil_2 + See :func:`anzahl_kinder_bis_24_elternteil_2`. + + Returns + ------- + """ + return anzahl_kinder_bis_24_elternteil_1 + anzahl_kinder_bis_24_elternteil_2 diff --git "a/src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" new file mode 100644 index 0000000000..021274afe5 --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -0,0 +1,63 @@ +"""Regularly employed.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") +def regulär_beschäftigt_vor_midijob( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijob_grenze: float, +) -> bool: + """Regular employment check until March 2003. + + Employees earning more than the minijob threshold, are subject to all ordinary + income and social insurance contribution regulations. In gettsim we call these + regular employed. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Whether regular employed persons. + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + >= minijob_grenze + ) + return out + + +@policy_function(start_date="2003-04-01", leaf_name="regulär_beschäftigt") +def regulär_beschäftigt_mit_midijob( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialv_beitr_params: dict, +) -> bool: + """Regular employment check since April 2003. + + Employees earning more than the midijob threshold, are subject to all ordinary + income and social insurance contribution regulations. In gettsim we call these + regular employed. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + Whether regular employed persons. + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + >= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + ) + return out diff --git a/src/_gettsim/taxes/sozialversicherung/rente/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py b/src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py new file mode 100644 index 0000000000..646b874268 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py @@ -0,0 +1,42 @@ +"""Public pension benefits.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def alter_bei_renteneintritt( + jahr_renteneintritt: int, + monat_renteneintritt: int, + geburtsjahr: int, + geburtsmonat: int, +) -> float: + """Age at retirement in monthly precision. + + Calculates the age of person's retirement in monthly precision. + As retirement is only possible at first day of month and as + persons eligible for pension at first of month after reaching the + age threshold (§ 99 SGB VI) persons who retire in same month will + be considered a month too young. Hence, subtract 1/12. + + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + jahr_renteneintritt + See basic input variable :ref:`jahr_renteneintritt `. + monat_renteneintritt + See basic input variable :ref:`monat_renteneintritt `. + + Returns + ------- + Age at retirement. + + """ + return ( + jahr_renteneintritt + - geburtsjahr + + (monat_renteneintritt - geburtsmonat - 1) / 12 + ) diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py new file mode 100644 index 0000000000..67e84acc1d --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -0,0 +1,474 @@ +"""Age thresholds for public pension eligibility.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2011-12-31", leaf_name="altersgrenze_abschlagsfrei") +def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( # noqa: PLR0913 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Full retirement age after eligibility checks, assuming eligibility for + Regelaltersrente. + + Age at which pension can be claimed without deductions. This age is smaller or equal + to the normal retirement age (FRA<=NRA) and depends on personal characteristics as + gender, insurance duration, health/disability, employment status. + + Parameters + ---------- + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__für_frauen__altersgrenze + See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Full retirement age. + + """ + + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + out = min( + [out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze] + ) + if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = min( + [ + out, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + ] + ) + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = min( + [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + ) + + return out + + +@policy_function( + start_date="2012-01-01", + end_date="2017-12-31", + leaf_name="altersgrenze_abschlagsfrei", +) +def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( # noqa: PLR0913 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Full retirement age after eligibility checks, assuming eligibility for + Regelaltersrente. + + Age at which pension can be claimed without deductions. This age is smaller or equal + to the normal retirement age (FRA<=NRA) and depends on personal characteristics as + gender, insurance duration, health/disability, employment status. + + Starting in 2012, the pension for the very long term insured (Altersrente für + besonders langjährig Versicherte) is introduced. Policy becomes inactive in 2018 + because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and + Rente für Frauen have reached the normal retirement age. + + Parameters + ---------- + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__für_frauen__altersgrenze + See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Full retirement age. + + """ + + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + out = min( + [out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze] + ) + if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = min( + [ + out, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + ] + ) + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = min( + [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + ) + if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + out = min( + [ + out, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, + ] + ) + + return out + + +@policy_function(start_date="2018-01-01", leaf_name="altersgrenze_abschlagsfrei") +def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Full retirement age after eligibility checks, assuming eligibility for + Regelaltersrente. + + Age at which pension can be claimed without deductions. This age is smaller or equal + to the normal retirement age (FRA<=NRA) and depends on personal characteristics as + gender, insurance duration, health/disability, employment status. + + Parameters + ---------- + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Full retirement age. + + """ + + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = min( + [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + ) + if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + out = min( + [ + out, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, + ] + ) + + return out + + +@policy_function(end_date="2017-12-31", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( # noqa: PLR0913 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig: float, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Earliest possible retirement age after checking for eligibility. + + Early retirement age depends on personal characteristics as gender, insurance + duration, health/disability, employment status. Policy becomes inactive in 2018 + because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente + für Frauen have reached the normal retirement age. + + Parameters + ---------- + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig`. + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig + See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Early retirement age (potentially with deductions). + + """ + frauen_vorzeitig = ( + sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig + ) + + arbeitsl_vorzeitig = sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig + + langjährig_vorzeitig = ( + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig + ) + + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = langjährig_vorzeitig + if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + out = min([out, frauen_vorzeitig]) + if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = min([out, arbeitsl_vorzeitig]) + + return out + + +@policy_function(start_date="2018-01-01", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Earliest possible retirement age after checking for eligibility. + + Early retirement age depends on personal characteristics as gender, insurance + duration, health/disability, employment status. + + Parameters + ---------- + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Early retirement age (potentially with deductions). + + """ + + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig + else: + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + + return out + + +@policy_function( + end_date="2017-12-31", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" +) +def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_rente_arbeitsl_frauen( + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, +) -> bool: + """Eligibility for some form ofearly retirement. + + Can only be claimed if eligible for "Rente für langjährig Versicherte" or "Rente für + Frauen" or "Rente für Arbeitslose" (or -not yet implemented - for disabled). Policy + becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. + Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. + + Parameters + ---------- + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. + + + Returns + ------- + Eligibility as bool. + + """ + + out = ( + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + or sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + or sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + ) + + return out + + +@policy_function( + start_date="2018-01-01", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" +) +def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_rente_arbeitsl_frauen( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, +) -> bool: + """Eligibility for early retirement. + + Can only be claimed if eligible for "Rente für langjährig Versicherte". + + Parameters + ---------- + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + + Returns + ------- + Eligibility as bool. + + """ + + return sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + + +@policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") +def referenzalter_abschlag_mit_rente_arbeitsl_frauen( # noqa: PLR0913 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Reference age for deduction calculation in case of early retirement + (Zugangsfaktor). + + Normal retirement age if not eligible for early retirement. Policy becomes inactive + in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit + and Rente für Frauen have reached the normal retirement age. + + Parameters + ---------- + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze + See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__für_frauen__altersgrenze + See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Reference age for deduction calculation. + + """ + if ( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + and sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + and sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + ): + out = min( + [ + sozialversicherung__rente__altersrente__für_frauen__altersgrenze, + sozialversicherung__rente__altersrente__langjährig__altersgrenze, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + ] + ) + elif ( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + and sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + ): + out = min( + [ + sozialversicherung__rente__altersrente__für_frauen__altersgrenze, + sozialversicherung__rente__altersrente__langjährig__altersgrenze, + ] + ) + elif ( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + and sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + ): + out = min( + [ + sozialversicherung__rente__altersrente__langjährig__altersgrenze, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + ] + ) + elif sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = sozialversicherung__rente__altersrente__langjährig__altersgrenze + elif sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + out = sozialversicherung__rente__altersrente__für_frauen__altersgrenze + elif sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = ( + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze + ) + else: + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + + return out + + +@policy_function(start_date="2018-01-01", leaf_name="referenzalter_abschlag") +def referenzalter_abschlag_ohne_rente_arbeitsl_frauen( + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, +) -> float: + """Reference age for deduction calculation in case of early retirement + (Zugangsfaktor). + + Normal retirement age if not eligible for early retirement. + + Parameters + ---------- + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__langjährig__altersgrenze + See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + + Returns + ------- + Reference age for deduction calculation. + + """ + if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + out = sozialversicherung__rente__altersrente__langjährig__altersgrenze + else: + out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + + return out diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py new file mode 100644 index 0000000000..f74cf2be53 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py @@ -0,0 +1,631 @@ +"""Public pension benefits for retirement due to age.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2020-12-31") +def betrag_m( + bruttorente_m: float, sozialversicherung__rente__bezieht_rente: bool +) -> float: + return bruttorente_m if sozialversicherung__rente__bezieht_rente else 0.0 + + +@policy_function( + start_date="2021-01-01", + params_key_for_rounding="ges_rente", + leaf_name="betrag_m", +) +def betrag_m_mit_grundrente( + bruttorente_m: float, + sozialversicherung__rente__grundrente__betrag_m: float, + sozialversicherung__rente__bezieht_rente: bool, +) -> float: + """Calculate total individual public pension including Grundrentenzuschlag. + + Parameters + ---------- + bruttorente_m + See :func:`bruttorente_m`. + sozialversicherung__rente__grundrente__betrag_m + See :func:`sozialversicherung__rente__grundrente__betrag_m`. + sozialversicherung__rente__bezieht_rente + See basic input variable :ref:. + + Returns + ------- + + """ + out = ( + bruttorente_m + sozialversicherung__rente__grundrente__betrag_m + if sozialversicherung__rente__bezieht_rente + else 0.0 + ) + return out + + +@policy_function( + end_date="2016-12-31", + leaf_name="bruttorente_m", + params_key_for_rounding="ges_rente", +) +def bruttorente_m_mit_harter_hinzuverdienstgrenze( + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + bruttorente_basisbetrag_m: float, + ges_rente_params: dict, +) -> float: + """Pension benefits after earnings test for early retirees. + + If earnings are above an earnings limit, the pension is fully deducted. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + bruttorente_basisbetrag_m + See :func:`bruttorente_basisbetrag_m`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + if ( + alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) or ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + <= ges_rente_params["hinzuverdienstgrenze"] + ): + out = bruttorente_basisbetrag_m + else: + out = 0.0 + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", + leaf_name="bruttorente_m", + params_key_for_rounding="ges_rente", +) +def bruttorente_m_mit_hinzuverdienstdeckel( + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + differenz_bruttolohn_hinzuverdienstdeckel_m: float, + zahlbetrag_ohne_deckel_m: float, +) -> float: + """Pension benefits after earnings test for early retirees. + + If sum of earnings and pension is larger than the highest income in the last 15 + years, the pension is fully deducted (Hinzuverdienstdeckel). + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + differenz_bruttolohn_hinzuverdienstdeckel_m + See :func:`differenz_bruttolohn_hinzuverdienstdeckel_m`. + zahlbetrag_ohne_deckel_m + See :func:`zahlbetrag_ohne_deckel_m`. + + Returns + ------- + + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + if ( + differenz_bruttolohn_hinzuverdienstdeckel_m > 0 + and alter + <= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + and einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + > 0 + ): + out = max( + zahlbetrag_ohne_deckel_m - differenz_bruttolohn_hinzuverdienstdeckel_m, + 0.0, + ) + else: + out = zahlbetrag_ohne_deckel_m + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def zahlbetrag_ohne_deckel_m( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + bruttorente_basisbetrag_m: float, + differenz_bruttolohn_hinzuverdienstgrenze_m: float, + ges_rente_params: dict, +) -> float: + """Pension benefits after earnings test without accounting for the earnings cap + (Hinzuverdienstdeckel). + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + alter + See basic input variable :ref:`alter `. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + bruttorente_basisbetrag_m + See :func:`bruttorente_basisbetrag_m`. + differenz_bruttolohn_hinzuverdienstgrenze_m + See :func:`differenz_bruttolohn_hinzuverdienstgrenze_m`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + # No deduction because of age or low earnings + if ( + alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) or ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + <= ges_rente_params["hinzuverdienstgrenze"] + ): + out = bruttorente_basisbetrag_m + # Basis deduction of 40% + else: + out = max( + bruttorente_basisbetrag_m + - ges_rente_params["abzugsrate_hinzuverdienst"] + * differenz_bruttolohn_hinzuverdienstgrenze_m, + 0.0, + ) + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def differenz_bruttolohn_hinzuverdienstgrenze_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + ges_rente_params: dict, +) -> float: + """Earnings that are subject to pension deductions. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + return max( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + - ges_rente_params["hinzuverdienstgrenze"], + 0.0, + ) + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def differenz_bruttolohn_hinzuverdienstdeckel_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + zahlbetrag_ohne_deckel_y: float, + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: float, +) -> float: + """Income above the earnings cap (Hinzuverdienstdeckel). + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y `. + zahlbetrag_ohne_deckel_y + See :func:`zahlbetrag_ohne_deckel_y`. + höchster_bruttolohn_letzte_15_jahre_vor_rente_y + See basic input variable :ref:`höchster_bruttolohn_letzte_15_jahre_vor_rente_y + `. + + Returns + ------- + + """ + return max( + zahlbetrag_ohne_deckel_y + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + - höchster_bruttolohn_letzte_15_jahre_vor_rente_y, + 0.0, + ) + + +@policy_function( + start_date="2023-01-01", + leaf_name="bruttorente_m", + params_key_for_rounding="ges_rente", +) +def bruttorente_m_ohne_einkommensanrechnung( + bruttorente_basisbetrag_m: float, +) -> float: + """Public pension claim before Grundrentenzuschlag. + + Parameters + ---------- + bruttorente_basisbetrag_m + See :func:`bruttorente_basisbetrag_m`. + + Returns + ------- + + """ + return bruttorente_basisbetrag_m + + +@policy_function(start_date="1992-01-01") +def bruttorente_basisbetrag_m( + zugangsfaktor: float, + sozialversicherung__rente__entgeltpunkte_ost: float, + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__bezieht_rente: bool, + ges_rente_params: dict, +) -> float: + """Old-Age Pensions claim. The function follows the following equation: + + .. math:: + + R = EP * ZF * Rw + + models 'Rentenformel': + https://de.wikipedia.org/wiki/Rentenformel + https://de.wikipedia.org/wiki/Rentenanpassungsformel + + + Parameters + ---------- + zugangsfaktor + See :func:`zugangsfaktor`. + sozialversicherung__rente__entgeltpunkte_ost + See :func:`sozialversicherung__rente__entgeltpunkte_ost`. + sozialversicherung__rente__entgeltpunkte_west + See :func:`sozialversicherung__rente__entgeltpunkte_west`. + sozialversicherung__rente__bezieht_rente + See basic input variable :ref:`sozialversicherung__rente__bezieht_rente `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + + if sozialversicherung__rente__bezieht_rente: + out = ( + sozialversicherung__rente__entgeltpunkte_west + * ges_rente_params["rentenwert"]["west"] + + sozialversicherung__rente__entgeltpunkte_ost + * ges_rente_params["rentenwert"]["ost"] + ) * zugangsfaktor + else: + out = 0.0 + + return out + + +@policy_function() +def rentenwert(wohnort_ost: bool, ges_rente_params: dict) -> float: + """Select the rentenwert depending on place of living. + + Parameters + ---------- + wohnort_ost + See basic input variable :ref:`wohnort_ost `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + params = ges_rente_params["rentenwert"] + + out = params["ost"] if wohnort_ost else params["west"] + + return float(out) + + +@policy_function() +def zugangsfaktor( # noqa: PLR0913 + sozialversicherung__rente__alter_bei_renteneintritt: float, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + referenzalter_abschlag: float, + altersgrenze_abschlagsfrei: float, + altersgrenze_vorzeitig: float, + vorzeitig_grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: bool, + ges_rente_params: dict, +) -> float: + """Zugangsfaktor (pension adjustment factor). + + Factor by which the pension claim is multiplied to calculate the pension payment. + The Zugangsfaktor is larger than 1 if the agent retires after the normal retirement + age (NRA) and smaller than 1 if the agent retires earlier than the full retirement + age (FRA). + + At the regelaltersgrenze - normal retirement age (NRA), the agent is allowed to get + pensions with his full claim. In general, if the agent retires earlier or later, the + Zugangsfaktor and therefore the pension claim is higher or lower. The Zugangsfaktor + is 1.0 in [FRA, NRA]. + + Legal reference: § 77 Abs. 2 Nr. 2 SGB VI + + Since pension payments of the GRV always start at 1st day of month, day of birth + within month does not matter. The eligibility always starts in the month after + reaching the required age. + + Returns 0 of the person is not eligible for receiving pension benefits because + either i) the person is younger than the earliest possible retirement age or ii) the + person is not eligible for pension benefits because + `sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt` is False. + + Parameters + ---------- + sozialversicherung__rente__alter_bei_renteneintritt + See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. + referenzalter_abschlag + See :func:`referenzalter_abschlag`. + altersgrenze_abschlagsfrei + See :func:`altersgrenze_abschlagsfrei`. + altersgrenze_vorzeitig + See :func:`altersgrenze_vorzeitig`. + vorzeitig_grundsätzlich_anspruchsberechtigt + See :func:`vorzeitig_grundsätzlich_anspruchsberechtigt`. + sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Zugangsfaktor + + """ + + if sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: + # Early retirement (before full retirement age): Zugangsfaktor < 1 + if ( + sozialversicherung__rente__alter_bei_renteneintritt + < altersgrenze_abschlagsfrei + ): # [ERA,FRA) + if vorzeitig_grundsätzlich_anspruchsberechtigt and ( + sozialversicherung__rente__alter_bei_renteneintritt + >= altersgrenze_vorzeitig + ): + # Calc difference to FRA of pensions with early retirement options + # (Altersgrenze langjährig Versicherte, Altersrente für Frauen + # /Arbeitslose). + # checks whether older than possible era + out = ( + 1 + + ( + sozialversicherung__rente__alter_bei_renteneintritt + - referenzalter_abschlag + ) + * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ + "vorzeitiger_renteneintritt" + ] + ) + else: + # Early retirement although not eligible to do so. + out = 0.0 + + # Late retirement (after normal retirement age/Regelaltersgrenze): + # Zugangsfaktor > 1 + elif ( + sozialversicherung__rente__alter_bei_renteneintritt + > sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ): + out = ( + 1 + + ( + sozialversicherung__rente__alter_bei_renteneintritt + - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) + * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ + "späterer_renteneintritt" + ] + ) + + # Retirement between full retirement age and normal retirement age: + else: # [FRA,NRA] + out = 1.0 + + # Claiming pension is not possible if + # sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt is + # 'False'. Return 0 in this case. Then, the pension payment is 0 as well. + else: + out = 0.0 + + out = max(out, 0.0) + + return out + + +@policy_function() +def entgeltpunkte_west_updated( + wohnort_ost: bool, + sozialversicherung__rente__entgeltpunkte_west: float, + neue_entgeltpunkte: float, +) -> float: + """Update western earning points. + + Given earnings, social insurance rules, average + earnings in a particular year and potentially other + variables (e.g., benefits for raising children, + informal care), return the new earnings points. + + Parameters + ---------- + wohnort_ost + See basic input variable :ref:`wohnort_ost `. + sozialversicherung__rente__entgeltpunkte_west + See basic input variable :ref:`ententgeltpunkte_westgeltp `. + neue_entgeltpunkte + See :func:`neue_entgeltpunkte`. + + Returns + ------- + + """ + if wohnort_ost: + out = sozialversicherung__rente__entgeltpunkte_west + else: + out = sozialversicherung__rente__entgeltpunkte_west + neue_entgeltpunkte + return out + + +@policy_function() +def entgeltpunkte_ost_updated( + wohnort_ost: bool, + sozialversicherung__rente__entgeltpunkte_ost: float, + neue_entgeltpunkte: float, +) -> float: + """Update eastern earning points. + + Given earnings, social insurance rules, average + earnings in a particular year and potentially other + variables (e.g., benefits for raising children, + informal care), return the new earnings points. + + Parameters + ---------- + wohnort_ost + See basic input variable :ref:`wohnort_ost `. + sozialversicherung__rente__entgeltpunkte_ost + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost `. + neue_entgeltpunkte + See :func:`neue_entgeltpunkte`. + + Returns + ------- + + """ + if wohnort_ost: + out = sozialversicherung__rente__entgeltpunkte_ost + neue_entgeltpunkte + else: + out = sozialversicherung__rente__entgeltpunkte_ost + return out + + +@policy_function() +def neue_entgeltpunkte( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + wohnort_ost: bool, + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, + ges_rente_params: dict, +) -> float: + """Return earning points for the wages earned in the last year. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + wohnort_ost + See :func:`wohnort_ost`. + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + See :func: + `sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + Returns + ------- + + """ + + # Scale bruttolohn up if earned in eastern Germany + if wohnort_ost: + bruttolohn_scaled_east = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * ges_rente_params["umrechnung_entgeltpunkte_beitrittsgebiet"] + ) + else: + bruttolohn_scaled_east = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + + # Calculate the (scaled) wage, which is subject to pension contributions. + if ( + bruttolohn_scaled_east + > sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + ): + bruttolohn_scaled_rentenv = ( + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + ) + else: + bruttolohn_scaled_rentenv = bruttolohn_scaled_east + + # Calculate monthly mean wage in Germany + durchschnittslohn_m = (1 / 12) * ges_rente_params[ + "beitragspflichtiges_durchschnittsentgelt" + ] + + out = bruttolohn_scaled_rentenv / durchschnittslohn_m + return out + + +@policy_function() +def anteil_entgeltpunkte_ost( + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__entgeltpunkte_ost: float, +) -> float: + """Proportion of Entgeltpunkte accumulated in East Germany + + Parameters + ---------- + sozialversicherung__rente__entgeltpunkte_west + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west + sozialversicherung__rente__entgeltpunkte_ost + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost + + Returns + ------- + Proportion of Entgeltpunkte accumulated in East Germany + + """ + if ( + sozialversicherung__rente__entgeltpunkte_west + == sozialversicherung__rente__entgeltpunkte_ost + == 0.0 + ): + out = 0.0 + else: + out = sozialversicherung__rente__entgeltpunkte_ost / ( + sozialversicherung__rente__entgeltpunkte_west + + sozialversicherung__rente__entgeltpunkte_ost + ) + + return out diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" new file mode 100644 index 0000000000..4f4701d2bb --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -0,0 +1,113 @@ +"""Pathway for the very long-term insured.""" + +from _gettsim.function_types import policy_function + + +@policy_function( + start_date="2012-01-01", + end_date="2014-06-22", + leaf_name="altersgrenze", +) +def altersgrenze_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """ + Full retirement age (FRA) for very long term insured. + + FRA is the same for each birth year. + + Calculate the threshold from which very long term insured people (at least 45 + years) can claim their full pension without deductions. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age (without deductions) for very long term insured. + + """ + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_besond_langj_versicherte"] + + +@policy_function(start_date="2014-06-23", leaf_name="altersgrenze") +def altersgrenze_mit_staffelung( + geburtsjahr: int, + ges_rente_params: dict, +) -> float: + """ + Full retirement age (FRA) for very long term insured. + + FRA depends on birth year and month. + + Calculate the threshold from which very long term insured people (at least 45 + years) can claim their full pension without deductions. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age (without deductions) for very long term insured. + + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_besond_langj_versicherte"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_besond_langj_versicherte"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_besond_langj_versicherte"][geburtsjahr] + + return out + + +@policy_function(start_date="2012-01-01") +def grundsätzlich_anspruchsberechtigt( + sozialversicherung__rente__wartezeit_45_jahre_erfüllt: bool, +) -> bool: + """Determining the eligibility for Altersrente für besonders langjährig Versicherte + (pension for very long-term insured). Wartezeit 45 years. aka "Rente mit 63". + + Parameters + ---------- + sozialversicherung__rente__wartezeit_45_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_45_jahre_erfüllt` + + + Returns + ------- + Eligibility as bool. + + """ + + return sozialversicherung__rente__wartezeit_45_jahre_erfüllt diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" new file mode 100644 index 0000000000..e6fc2b95b9 --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -0,0 +1,295 @@ +"""Pathway for women. + +Revoked for birth cohorts after 1951. +""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") +def altersgrenze_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Full retirement age (FRA) for women. + + FRA is the same for each birth cohort. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age for women. + + """ + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] + + +@policy_function(start_date="1989-12-18", leaf_name="altersgrenze") +def altersgrenze_mit_staffelung( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """Full retirement age (FRA) for women. + + FRA differs by birth cohort. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age for women. + + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][geburtsjahr][ + geburtsmonat + ] + + return out + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Renten für Frauen. + + ERA does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] + + +@policy_function( + start_date="1989-12-18", + end_date="1996-09-26", + leaf_name="altersgrenze_vorzeitig", +) +def altersgrenze_vorzeitig_mit_staffelung( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Renten für Frauen. + + ERA depends on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][geburtsjahr][ + geburtsmonat + ] + + return out + + +@policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Renten für Frauen. + + ERA does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] + + +@policy_function(end_date="1997-12-15", leaf_name="grundsätzlich_anspruchsberechtigt") +def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( + weiblich: bool, + sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, + pflichtsbeitragsjahre_ab_alter_40: float, + ges_rente_params: dict, +) -> bool: + """Eligibility for Altersrente für Frauen (pension for women). + + Eligibility does not depend on birth year. + + Policy becomes inactive in 2018 because then all potential beneficiaries have + reached the normal retirement age. + + Parameters + ---------- + weiblich + See basic input variable :ref:`weiblich `. + sozialversicherung__rente__wartezeit_15_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` + pflichtsbeitragsjahre_ab_alter_40 + See basic input variable :ref:`pflichtsbeitragsjahre_ab_alter_40 + `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Eligibility as bool. + + """ + + out = ( + weiblich + and sozialversicherung__rente__wartezeit_15_jahre_erfüllt + and pflichtsbeitragsjahre_ab_alter_40 + > ges_rente_params["rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40"] + ) + + return out + + +@policy_function( + start_date="1997-12-16", + end_date="2017-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt", +) +def grundsätzlich_anspruchsberechtigt_mit_geburtsjahr_prüfung( + weiblich: bool, + sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, + pflichtsbeitragsjahre_ab_alter_40: float, + geburtsjahr: int, + ges_rente_params: dict, +) -> bool: + """Eligibility for Altersrente für Frauen (pension for women). + + Only individuals born before a certain year are eligible. + + Wartezeit 15 years, contributions for 10 years after age 40, being a woman. Policy + becomes inactive in 2018 because then all potential beneficiaries have reached the + normal retirement age. + + Parameters + ---------- + weiblich + See basic input variable :ref:`weiblich `. + sozialversicherung__rente__wartezeit_15_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` + pflichtsbeitragsjahre_ab_alter_40 + See basic input variable :ref:`pflichtsbeitragsjahre_ab_alter_40 `. + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Eligibility as bool. + + """ + + out = ( + weiblich + and sozialversicherung__rente__wartezeit_15_jahre_erfüllt + and pflichtsbeitragsjahre_ab_alter_40 + > ges_rente_params["rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40"] + and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_frauen"] + ) + + return out diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" new file mode 100644 index 0000000000..c08d3559ac --- /dev/null +++ "b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -0,0 +1,281 @@ +"""Pathway for the long-term insured.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") +def altersgrenze_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """ + Full retirement age (FRA) for long term insured. + + FRA is the same for each birth year. + + Calculate the age, at which a long term insured person (at least 35 years) is + eligible to claim the full pension (without deductions). This pension scheme allows + for early retirement (e.g. age 63) with deductions. Hence this threshold is needed + as reference for calculating the zugangsfaktor. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age for long term insured. + + """ + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"] + + +@policy_function( + start_date="1989-12-18", + end_date="2007-04-19", + leaf_name="altersgrenze", +) +def altersgrenze_mit_staffelung_nach_geburtsmonat( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """ + Full retirement age (FRA) for long term insured. + + FRA depends on birth year and month. + + Calculate the age, at which a long term insured person (at least 35 years) is + eligible to claim the full pension (without deductions). This pension scheme allows + for early retirement (e.g. age 63) with deductions. Hence this threshold is needed + as reference for calculating the zugangsfaktor. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age (without deductions) for long term insured. + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + geburtsjahr + ][geburtsmonat] + + return out + + +@policy_function(start_date="2007-04-20", leaf_name="altersgrenze") +def altersgrenze_mit_staffelung_nach_geburtsjahr( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """ + Full retirement age (FRA) for long term insured. + + FRA depends on birth year. + + Calculate the age, at which a long term insured person (at least 35 years) is + eligible to claim the full pension (without deductions). This pension scheme allows + for early retirement (e.g. age 63) with deductions. Hence this threshold is needed + as reference for calculating the zugangsfaktor. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age (without deductions) for long term insured. + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ + geburtsjahr + ][geburtsmonat] + + return out + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Rente für langjährig Versicherte. + + ERA does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] + + +@policy_function( + start_date="1989-12-18", + end_date="1996-09-26", + leaf_name="altersgrenze_vorzeitig", +) +def altersgrenze_vorzeitig_mit_staffelung( + geburtsjahr: int, + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Renten für Frauen. + + ERA depends on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ + "entry_age_old_regime" + ] + else: + out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ + "entry_age_new_regime" + ] + + return out + + +@policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age (ERA) for Rente für langjährig Versicherte. + + ERA does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] + + +@policy_function() +def grundsätzlich_anspruchsberechtigt( + sozialversicherung__rente__wartezeit_35_jahre_erfüllt: bool, +) -> bool: + """Determining the eligibility for Altersrente für langjährig + Versicherte (pension for long-term insured). Wartezeit 35 years and + crossing the age threshold. + + Parameters + ---------- + sozialversicherung__rente__wartezeit_35_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_35_jahre_erfüllt`. + + Returns + ------- + Eligibility as bool. + + """ + + return sozialversicherung__rente__wartezeit_35_jahre_erfüllt diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py new file mode 100644 index 0000000000..037869709b --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -0,0 +1,96 @@ +"""Regular pathway.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2007-04-19", leaf_name="altersgrenze") +def altersgrenze_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Normal retirement age (NRA). + + NRA is the same for every birth cohort. + + The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does + not serve as reference for calculating deductions. However, it serves as reference + for calculating gains in the Zugangsfakor in case of later retirement. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + + Returns + ------- + Normal retirement age (NRA). + + """ + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["regelaltersgrenze"] + + +@policy_function(start_date="2007-04-20", leaf_name="altersgrenze") +def altersgrenze_mit_staffelung(geburtsjahr: int, ges_rente_params: dict) -> float: + """Normal retirement age (NRA). + + NRA differs by birth cohort. + + The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does + not serve as reference for calculating deductions. However, it serves as reference + for calculating gains in the Zugangsfakor in case of later retirement. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + + Returns + ------- + Normal retirement age (NRA). + + """ + if geburtsjahr <= ges_rente_params["regelaltersgrenze"]["max_birthyear_old_regime"]: + out = ges_rente_params["regelaltersgrenze"]["entry_age_old_regime"] + elif ( + geburtsjahr >= ges_rente_params["regelaltersgrenze"]["min_birthyear_new_regime"] + ): + out = ges_rente_params["regelaltersgrenze"]["entry_age_new_regime"] + else: + out = ges_rente_params["regelaltersgrenze"][geburtsjahr] + + return out + + +@policy_function() +def grundsätzlich_anspruchsberechtigt( + sozialversicherung__rente__mindestwartezeit_erfüllt: bool, +) -> bool: + """Determining the eligibility for the Regelaltersrente. + + Parameters + ---------- + sozialversicherung__rente__mindestwartezeit_erfüllt + See :func:`sozialversicherung__rente__mindestwartezeit_erfüllt`. + + Returns + ------- + Eligibility as bool. + + """ + + return sozialversicherung__rente__mindestwartezeit_erfüllt diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py new file mode 100644 index 0000000000..c804606466 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -0,0 +1,511 @@ +"""Pathway for unemployed individuals. + +Revoked for birth cohorts after 1951. +""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") +def altersgrenze_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Full retirement age for unemployed. + + Before the WFG (Gesetz für Wachstum und Beschäftigung) was implemented in 1997 the + full retirement age was the same for every birth cohort. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + ges_rente_params + See params documentation + :ref:`ges_rente_params `. + + Returns + ------- + lowest full retirement age for unemployed. + + """ + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"] + + +@policy_function( + start_date="1989-12-18", + end_date="1996-07-28", + leaf_name="altersgrenze", +) +def altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( + altersgrenze_ohne_vertrauensschutzprüfung: float, +) -> float: + """Full retirement age for unemployed without Vertrauensschutz. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + altersgrenze_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. + + Returns + ------- + Full retirement age for unemployed. + + """ + return altersgrenze_ohne_vertrauensschutzprüfung + + +@policy_function( + start_date="1996-07-29", + end_date="2009-12-31", + leaf_name="altersgrenze", +) +def altersgrenze_mit_vertrauensschutzprüfung( + geburtsjahr: int, + geburtsmonat: int, + vertrauensschutz_1997: bool, + altersgrenze_ohne_vertrauensschutzprüfung: float, + ges_rente_params: dict, +) -> float: + """Full retirement age for unemployed with Vertrauensschutz. + + Full retirement age depends on birth year and month. Policy becomes inactive in 2010 + because then all potential beneficiaries have reached the normal retirement age. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + vertrauensschutz_1997 + See basic input variable :ref:`vertrauensschutz_1997 `. + altersgrenze_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age for unemployed. + + """ + if ( + vertrauensschutz_1997 + and geburtsjahr + <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"]["vertrauensschutz"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "vertrauensschutz" + ]["entry_age_old_regime"] + + elif vertrauensschutz_1997: + out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "vertrauensschutz" + ][geburtsjahr][geburtsmonat] + else: + out = altersgrenze_ohne_vertrauensschutzprüfung + + return out + + +@policy_function( + start_date="2010-01-01", + end_date="2017-12-31", + leaf_name="altersgrenze", +) +def altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( + altersgrenze_ohne_vertrauensschutzprüfung: float, +) -> float: + """Full retirement age for unemployed without Vertrauensschutz. + + Full retirement age depends on birth year and month. Policy becomes inactive in 2017 + because then all potential beneficiaries have reached the normal retirement age. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + altersgrenze_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. + + Returns + ------- + Full retirement age for unemployed. + + """ + return altersgrenze_ohne_vertrauensschutzprüfung + + +@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") +def altersgrenze_vorzeitig_ohne_staffelung( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age of pension for unemployed. + + Early retirement age does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + ges_rente_params + See params documentation + :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age for unemployed. + + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] + + +@policy_function( + start_date="1989-12-18", + end_date="1996-07-28", + leaf_name="altersgrenze_vorzeitig", +) +def altersgrenze_vorzeitig_ohne_vertrauensschutz_bis_1996_07( + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, +) -> float: + """Early retirement age of pension for unemployed. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. + + Returns + ------- + Early retirement age for unemployed. + """ + + return altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + + +@policy_function( + start_date="1996-07-29", + end_date="1996-09-26", + leaf_name="altersgrenze_vorzeitig", +) +def altersgrenze_vorzeitig_mit_vertrauensschutz_ab_1996_07_bis_1996_09( + vertrauensschutz_1997: bool, + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, + ges_rente_params: dict, +) -> float: + """Early retirement age of pension for unemployed. + + Includes Vertrauensschutz rules implemented from July to September 1996. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + + vertrauensschutz_2004 + See basic input variable :ref:`vertrauensschutz_2004 `. + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age for unemployed. + """ + + if vertrauensschutz_1997: + arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "vertrauensschutz" + ] + else: + arbeitsl_vorzeitig = altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + + return arbeitsl_vorzeitig + + +@policy_function( + start_date="1996-09-27", + end_date="2004-07-25", + leaf_name="altersgrenze_vorzeitig", +) +def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09( + geburtsjahr: int, # noqa: ARG001 + ges_rente_params: dict, +) -> float: + """Early retirement age of pension for unemployed. + + Early retirement age does not depend on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + ges_rente_params + See params documentation + :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age for unemployed. + + """ + + # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + + return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] + + +@policy_function( + start_date="2004-07-26", + end_date="2017-12-31", + leaf_name="altersgrenze_vorzeitig", +) +def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2004_07( + vertrauensschutz_2004: bool, + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, + ges_rente_params: dict, +) -> float: + """Early retirement age of pension for unemployed. + + Includes Vertrauensschutz rules implemented in July 2004. Policy becomes inactive in + 2018 because then all potential beneficiaries have reached the normal retirement + age. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + vertrauensschutz_2004 + See basic input variable :ref:`vertrauensschutz_2004 `. + altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age for unemployed. + """ + + if vertrauensschutz_2004: + arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "vertrauensschutz" + ] + else: + arbeitsl_vorzeitig = altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + + return arbeitsl_vorzeitig + + +@policy_function(end_date="2017-12-31") +def altersgrenze_ohne_vertrauensschutzprüfung( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """Full retirement age for unemployed without Vertrauensschutz. + + Full retirement age depends on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation + :ref:`ges_rente_params `. + + Returns + ------- + Full retirement age for unemployed. + + """ + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "max_birthyear_old_regime" + ] + ): + out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "min_birthyear_new_regime" + ] + ): + out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ + "entry_age_new_regime" + ] + else: + out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][geburtsjahr][ + geburtsmonat + ] + + return out + + +@policy_function(end_date="2017-12-31") +def altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung( + geburtsjahr: int, + geburtsmonat: int, + ges_rente_params: dict, +) -> float: + """Early retirement age of pension for unemployed without Vertrauensschutz. + + Relevant if the early retirement age depends on birth year and month. + + Does not check for eligibility for this pathway into retirement. + + Parameters + ---------- + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + geburtsmonat + See basic input variable :ref:`geburtsmonat `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Early retirement age for unemployed. + """ + + if ( + geburtsjahr + <= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "max_birthyear_old_regime" + ] + ): + arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "entry_age_old_regime" + ] + elif ( + geburtsjahr + >= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "min_birthyear_new_regime" + ] + ): + arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + "entry_age_new_regime" + ] + else: + arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ + geburtsjahr + ][geburtsmonat] + + return arbeitsl_vorzeitig + + +@policy_function(end_date="2007-04-29", leaf_name="grundsätzlich_anspruchsberechtigt") +def grundsätzlich_anspruchsberechtigt_bis_2007( + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: bool, + sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, + pflichtbeitragsjahre_8_von_10: bool, +) -> bool: + """Eligibility for Altersrente für Arbeitslose (pension for unemployed). + + Wartezeit 15 years, 8 contribution years past 10 years, being unemployed for at + least 1 year after age 58 and 6 months. The person is also required to be + unemployed at the time of claiming the pension. As there are no restrictions + regarding voluntary unemployment this requirement may be viewed as always satisfied + and is therefore not included when checking for eligibility. + + Parameters + ---------- + arbeitslos_für_1_jahr_nach_alter_58_ein_halb + See basic input variable + :ref:`arbeitslos_für_1_jahr_nach_alter_58_ein_halb `. + sozialversicherung__rente__wartezeit_15_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` + pflichtbeitragsjahre_8_von_10 + See basic input variable :ref:`pflichtbeitragsjahre_8_von_10 `. + + Returns + ------- + Eligibility as bool. + + """ + + out = ( + arbeitslos_für_1_jahr_nach_alter_58_ein_halb + and sozialversicherung__rente__wartezeit_15_jahre_erfüllt + and pflichtbeitragsjahre_8_von_10 + ) + + return out + + +@policy_function( + start_date="2007-04-30", + end_date="2017-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt", +) +def grundsätzlich_anspruchsberechtigt_ab_2007( + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: bool, + sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, + pflichtbeitragsjahre_8_von_10: bool, + geburtsjahr: int, + ges_rente_params: dict, +) -> bool: + """Eligibility for Altersrente für Arbeitslose (pension for unemployed). + + Wartezeit 15 years, 8 contributionyears past 10 years, being at least 1 year + unemployed after age 58 and 6 months and being born before 1952. The person is also + required to be unemployed at the time of claiming the pension. As there are no + restrictions regarding voluntary unemployment this requirement may be viewed as + always satisfied and is therefore not included when checking for eligibility. Policy + becomes inactive in 2018 because then all potential beneficiaries have reached the + normal retirement age. + + Parameters + ---------- + arbeitslos_für_1_jahr_nach_alter_58_ein_halb + See basic input variable :ref:`arbeitslos_für_1_jahr_nach_alter_58_ein_halb `. + sozialversicherung__rente__wartezeit_15_jahre_erfüllt + See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` + pflichtbeitragsjahre_8_von_10 + See basic input variable :ref:`pflichtbeitragsjahre_8_von_10 `. + geburtsjahr + See :func:`geburtsjahr` + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Eligibility as bool. + + """ + + out = ( + arbeitslos_für_1_jahr_nach_alter_58_ein_halb + and sozialversicherung__rente__wartezeit_15_jahre_erfüllt + and pflichtbeitragsjahre_8_von_10 + and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_arbeitsl"] + ) + + return out diff --git a/src/_gettsim/taxes/sozialversicherung/rente/beitrag/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/beitrag/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py new file mode 100644 index 0000000000..ed5550eb1c --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py @@ -0,0 +1,339 @@ +"""Public pension insurance contributions.""" + +from _gettsim.function_types import policy_function + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + einkommen_m: float, + sozialv_beitr_params: dict, +) -> float: + """Public pension insurance contributions paid by the insured person. + + Before Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + einkommen_m + See :func:`einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + ges_rentenv_beitr_regular_job_m = ( + einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = ges_rentenv_beitr_regular_job_m + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_mit_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_midijob_arbeitnehmer_m: float, + einkommen_m: float, + sozialv_beitr_params: dict, + sozialversicherung__in_gleitzone: bool, +) -> float: + """Public pension insurance contributions paid by the insured person. + + After Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_midijob_arbeitnehmer_m + See :func:`betrag_midijob_arbeitnehmer_m`. + einkommen_m + See :func:`einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + + Returns + ------- + + """ + ges_rentenv_beitr_regular_job_m = ( + einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + elif sozialversicherung__in_gleitzone: + out = betrag_midijob_arbeitnehmer_m + else: + out = ges_rentenv_beitr_regular_job_m + + return out + + +@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_ohne_midijob( + sozialversicherung__geringfügig_beschäftigt: bool, + einkommen_m: float, + sozialv_beitr_params: dict, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, +) -> float: + """Employer's public pension insurance contribution. + + Before Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + einkommen_m + See :func:`einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + + Returns + ------- + + """ + ges_rentenv_beitr_regular_job_m = ( + einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + if sozialversicherung__geringfügig_beschäftigt: + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] + ) + else: + out = ges_rentenv_beitr_regular_job_m + + return out + + +@policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_midijob_arbeitgeber_m: float, + einkommen_m: float, + sozialv_beitr_params: dict, + sozialversicherung__in_gleitzone: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, +) -> float: + """Employer's public pension insurance contribution. + + After Midijob introduction in April 2003. + + Parameters + ---------- + sozialversicherung__geringfügig_beschäftigt + See :func:`sozialversicherung__geringfügig_beschäftigt`. + betrag_midijob_arbeitgeber_m + See :func:`betrag_midijob_arbeitgeber_m`. + einkommen_m + See :func:`einkommen_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + sozialversicherung__in_gleitzone + See :func:`sozialversicherung__in_gleitzone`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + + Returns + ------- + + """ + ges_rentenv_beitr_regular_job_m = ( + einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + if sozialversicherung__geringfügig_beschäftigt: + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] + ) + elif sozialversicherung__in_gleitzone: + out = betrag_midijob_arbeitgeber_m + else: + out = ges_rentenv_beitr_regular_job_m + + return out + + +@policy_function() +def einkommen_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + beitragsbemessungsgrenze_m: float, +) -> float: + """Wage subject to pension and unemployment insurance contributions. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See params documentation :ref:`sozialv_beitr_params `. + beitragsbemessungsgrenze_m + See :func:`beitragsbemessungsgrenze_m`. + + + Returns + ------- + + """ + return min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, + beitragsbemessungsgrenze_m, + ) + + +@policy_function() +def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: + """Income threshold up to which pension insurance payments apply. + + Parameters + ---------- + wohnort_ost + See :func:`wohnort_ost`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"] + out = params["ost"] if wohnort_ost else params["west"] + + return float(out) + + +@policy_function(start_date="2003-04-01") +def betrag_midijob_gesamt_m( + sozialversicherung__midijob_bemessungsentgelt_m: float, + sozialv_beitr_params: dict, +) -> float: + """Sum of employer and employee pension insurance contribution for midijobs. + Midijobs were introduced in April 2003. + + Parameters + ---------- + sozialversicherung__midijob_bemessungsentgelt_m + See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + return ( + sozialversicherung__midijob_bemessungsentgelt_m + * 2 + * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + +@policy_function( + end_date="2022-09-30", + leaf_name="betrag_midijob_arbeitgeber_m", +) +def betrag_midijob_arbeitgeber_m_mit_festem_beitragssatz( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employer's unemployment insurance contribution until September 2022. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_midijob_arbeitgeber_m") +def betrag_midijob_arbeitgeber_m_als_differenz_von_gesamt_und_arbeitnehmerbeitrag( + betrag_midijob_gesamt_m: float, + betrag_midijob_arbeitnehmer_m: float, +) -> float: + """Employer's unemployment insurance contribution since October 2022. + + Parameters + ---------- + betrag_midijob_gesamt_m + See :func:`betrag_midijob_gesamt_m`. + betrag_midijob_arbeitnehmer_m + See :func:`betrag_midijob_arbeitnehmer_m`. + + Returns + ------- + + """ + return betrag_midijob_gesamt_m - betrag_midijob_arbeitnehmer_m + + +@policy_function( + end_date="2022-09-30", + leaf_name="betrag_midijob_arbeitnehmer_m", +) +def betrag_midijob_arbeitnehmer_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_midijob_arbeitgeber_m: float, + betrag_midijob_gesamt_m: float, +) -> float: + """Employee's unemployment insurance contribution for midijobs until September 2022. + + Parameters + ---------- + betrag_midijob_arbeitgeber_m + See :func:`betrag_midijob_arbeitgeber_m`. + betrag_midijob_gesamt_m + See :func:`betrag_midijob_gesamt_m`. + + Returns + ------- + + """ + return betrag_midijob_gesamt_m - betrag_midijob_arbeitgeber_m + + +@policy_function(start_date="2022-10-01", leaf_name="betrag_midijob_arbeitnehmer_m") +def betrag_midijob_arbeitnehmer_m_mit_festem_beitragssatz( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + sozialv_beitr_params: dict, +) -> float: + """Employee's unemployment insurance contribution for midijobs since October 2022. + + Parameters + ---------- + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. + sozialv_beitr_params + See params documentation :ref:`sozialv_beitr_params `. + + Returns + ------- + + """ + return ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + ) diff --git a/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py new file mode 100644 index 0000000000..8d31abe1c2 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -0,0 +1,405 @@ +"""Public pension benefits for retirement due to reduced earnings potential.""" + +from _gettsim.function_types import policy_function + + +@policy_function(start_date="2001-01-01") +def betrag_m( # noqa: PLR0913 + zugangsfaktor: float, + entgeltpunkte_west: float, + entgeltpunkte_ost: float, + rentenartfaktor: float, + grundsätzlich_anspruchsberechtigt: bool, + ges_rente_params: dict, +) -> float: + """Erwerbsminderungsrente (amount paid by public disability insurance if claimed) + + Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente + + + Parameters + ---------- + zugangsfaktor + See :func:`zugangsfaktor`. + entgeltpunkte_west + See :func:`entgeltpunkte_west`. + entgeltpunkte_ost + See :func:`entgeltpunkte_ost`. + rentenwert + See :func:`rentenwert`. + rentenartfaktor + See :func:`rentenartfaktor`. + grundsätzlich_anspruchsberechtigt + See :func:`grundsätzlich_anspruchsberechtigt`. + Returns + ------- + Erwerbsminderungsrente (amount paid by public disability insurance if claimed) + + """ + + if grundsätzlich_anspruchsberechtigt: + out = ( + ( + entgeltpunkte_west * ges_rente_params["rentenwert"]["west"] + + entgeltpunkte_ost * ges_rente_params["rentenwert"]["ost"] + ) + * zugangsfaktor + * rentenartfaktor + ) + else: + out = 0.0 + return out + + +@policy_function(start_date="2001-01-01") +def grundsätzlich_anspruchsberechtigt( + voll_erwerbsgemindert: bool, + teilweise_erwerbsgemindert: bool, + sozialversicherung__rente__pflichtbeitragsmonate: float, + sozialversicherung__rente__mindestwartezeit_erfüllt: bool, +) -> bool: + """ + Eligibility for Erwerbsminderungsrente (public disability insurance claim). + + Legal reference: § 43 Abs. 1 SGB VI + + Parameters + ---------- + voll_erwerbsgemindert + See basic input variable :ref:`voll_erwerbsgemindert . + teilweise_erwerbsgemindert + See basic input variable :ref:`teilweise_erwerbsgemindert . + sozialversicherung__rente__pflichtbeitragsmonate + See basic input variable :ref:`sozialversicherung__rente__pflichtbeitragsmonate . + sozialversicherung__rente__mindestwartezeit_erfüllt + See :func:`sozialversicherung__rente__mindestwartezeit_erfüllt`. + Returns + ------- + Eligibility for Erwerbsminderungsrente (public disability insurance claim) as a bool + """ + + anspruch_erwerbsm_rente = ( + (voll_erwerbsgemindert or teilweise_erwerbsgemindert) + and sozialversicherung__rente__mindestwartezeit_erfüllt + and sozialversicherung__rente__pflichtbeitragsmonate >= 36 + ) + + return anspruch_erwerbsm_rente + + +@policy_function(start_date="2001-01-01") +def entgeltpunkte_west( + sozialversicherung__rente__entgeltpunkte_west: float, + zurechnungszeit: float, + sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: float, +) -> float: + """Entgeltpunkte accumulated in Western Germany which Erwerbsminderungsrente + is based on (public disability insurance) + In the case of the public disability insurance, + pensioners are credited with additional earning points. + They receive their average earned income points for + each year between their age of retirement and the "zurechnungszeitgrenze". + + Parameters + ---------- + sozialversicherung__rente__entgeltpunkte_west + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west + zurechnungszeit + See :func:`zurechnungszeit`. + sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost + See :func:`sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost`. + + Returns + ------- + Final pension points for Erwerbsminderungsrente (public disability insurance) + + """ + + out = sozialversicherung__rente__entgeltpunkte_west + ( + zurechnungszeit + * (1 - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost) + ) + + return out + + +@policy_function(start_date="2001-01-01") +def entgeltpunkte_ost( + sozialversicherung__rente__entgeltpunkte_ost: float, + zurechnungszeit: float, + sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: float, +) -> float: + """Entgeltpunkte accumulated in Eastern Germany which Erwerbsminderungsrente + is based on (public disability insurance) + In the case of the public disability insurance, + pensioners are credited with additional earning points. + They receive their average earned income points for + each year between their age of retirement and the "zurechnungszeitgrenze". + + Parameters + ---------- + sozialversicherung__rente__entgeltpunkte_ost + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost + zurechnungszeit + See :func:`zurechnungszeit`. + sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost + See :func:`sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost`. + + Returns + ------- + Final pension points for Erwerbsminderungsrente (public disability insurance) + + """ + + out = sozialversicherung__rente__entgeltpunkte_ost + ( + zurechnungszeit + * sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost + ) + + return out + + +@policy_function(start_date="2001-01-01") +def zurechnungszeit( + durchschnittliche_entgeltpunkte: float, + sozialversicherung__rente__alter_bei_renteneintritt: float, + erwerbsm_rente_params: dict, +) -> float: + """Additional Entgeltpunkte accumulated through "Zurechnungszeit" for + Erwerbsminderungsrente (public disability insurance) + In the case of the public disability insurance, + pensioners are credited with additional earning points. + They receive their average earned income points for + each year between their age of retirement and the "zurechnungszeitgrenze". + + Parameters + ---------- + durchschnittliche_entgeltpunkte + See :func:`durchschnittliche_entgeltpunkte`. + sozialversicherung__rente__alter_bei_renteneintritt + See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. + erwerbsm_rente_params + See params documentation :ref:`erwerbsm_rente_params . + + + Returns + ------- + Final pension points for Erwerbsminderungsrente (public disability insurance) + + """ + zurechnungszeitgrenze = erwerbsm_rente_params["zurechnungszeitgrenze"] + + out = ( + zurechnungszeitgrenze - (sozialversicherung__rente__alter_bei_renteneintritt) + ) * durchschnittliche_entgeltpunkte + + return out + + +@policy_function(start_date="2001-01-01") +def rentenartfaktor( + teilweise_erwerbsgemindert: bool, + erwerbsm_rente_params: dict, +) -> float: + """rentenartfaktor for Erwerbsminderungsrente + (public disability insurance) + + Legal reference: SGB VI § 67: rentenartfaktor + + Parameters + ---------- + teilweise_erwerbsgemindert + See basic input variable :ref:`teilweise_erwerbsgemindert . + erwerbsm_rente_params + See params documentation :ref:`erwerbsm_rente_params . + + Returns + ------- + rentenartfaktor + + """ + + if teilweise_erwerbsgemindert: + out = erwerbsm_rente_params["rentenartfaktor"]["teilw"] + + else: + out = erwerbsm_rente_params["rentenartfaktor"]["voll"] + + return out + + +@policy_function(start_date="2001-01-01") +def zugangsfaktor( + sozialversicherung__rente__alter_bei_renteneintritt: float, + wartezeit_langjährig_versichert_erfüllt: bool, + ges_rente_params: dict, + erwerbsm_rente_params: dict, +) -> float: + """Zugangsfaktor for Erwerbsminderungsrente (public disability insurance) + + For each month that a pensioner retires before the age limit, a fraction of the + pension is deducted. The maximum deduction is capped. This max deduction is the norm + for the public disability insurance. + + Legal reference: § 77 Abs. 2-4 SGB VI + + Paragraph 4 regulates an exceptional case in which pensioners can already retire at + 63 without deductions if they can prove 40 years of (Pflichtbeiträge, + Berücksichtigungszeiten and certain Anrechnungszeiten or Ersatzzeiten). + + Parameters + ---------- + sozialversicherung__rente__alter_bei_renteneintritt + See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. + wartezeit_langjährig_versichert_erfüllt + See :func:`wartezeit_langjährig_versichert_erfüllt`. + ges_rente_params + See params documentation :ref:`ges_rente_params . + erwerbsm_rente_params + See params documentation :ref:`erwerbsm_rente_params . + + + Returns + ------- + Zugangsfaktor for Erwerbsminderungsrente (public disability insurance) + + """ + + if wartezeit_langjährig_versichert_erfüllt: + altersgrenze_abschlagsfrei = erwerbsm_rente_params[ + "altersgrenze_langj_versicherte_abschlagsfrei" + ] + else: + altersgrenze_abschlagsfrei = erwerbsm_rente_params["altersgrenze_abschlagsfrei"] + + zugangsfaktor = ( + 1 + + ( + sozialversicherung__rente__alter_bei_renteneintritt + - altersgrenze_abschlagsfrei + ) + * ( + ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ + "vorzeitiger_renteneintritt" + ] + ) + ) + out = max(zugangsfaktor, erwerbsm_rente_params["min_zugangsfaktor"]) + + return out + + +# TODO(@MImmesberger): Reuse Altersrente Wartezeiten for Erwerbsminderungsrente +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/838 +@policy_function(start_date="2001-01-01") +def wartezeit_langjährig_versichert_erfüllt( # noqa: PLR0913 + sozialversicherung__rente__pflichtbeitragsmonate: float, + sozialversicherung__rente__freiwillige_beitragsmonate: float, + sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: float, + sozialversicherung__rente__ersatzzeiten_monate: float, + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: float, + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: float, + ges_rente_params: dict, + erwerbsm_rente_params: dict, +) -> bool: + """Wartezeit for Rente für langjährige Versicherte (Erwerbsminderung) is fulfilled. + + Eligibility criteria differ in comparison to Altersrente für langjährige + Versicherte. In particular, freiwillige Beitragszeiten are not always considered (§ + 51 Abs. 3a SGB VI). + + This pathway makes it possible to claim pension benefits without deductions at the + age of 63. + + Parameters + ---------- + sozialversicherung__rente__pflichtbeitragsmonate + See basic input variable + :ref:`. + sozialversicherung__rente__freiwillige_beitragsmonate + See basic input variable + :ref:`. + sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit + See :func:`sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit`. + sozialversicherung__rente__ersatzzeiten_monate + See basic input variable :ref:`. + sozialversicherung__rente__kinderberücksichtigungszeiten_monate + See basic input variable + :ref:`. + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate + See basic input variable + :ref:`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + erwerbsm_rente_params + See params documentation :ref:`erwerbsm_rente_params `. + + Returns + ------- + Wartezeit for Rente für langjährige Versicherte (Erwerbsminderung) is fulfilled + + """ + if ( + sozialversicherung__rente__pflichtbeitragsmonate / 12 + >= ges_rente_params[ + "mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge" + ] + ): + freiwillige_beitragszeiten = ( + sozialversicherung__rente__freiwillige_beitragsmonate + ) + else: + freiwillige_beitragszeiten = 0 + + return ( + sozialversicherung__rente__pflichtbeitragsmonate + + freiwillige_beitragszeiten + + sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit + + sozialversicherung__rente__ersatzzeiten_monate + + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate + + sozialversicherung__rente__kinderberücksichtigungszeiten_monate + ) / 12 >= erwerbsm_rente_params[ + "wartezeitgrenze_langjährig_versicherte_abschlagsfrei" + ] + + +@policy_function() +def durchschnittliche_entgeltpunkte( + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__entgeltpunkte_ost: float, + sozialversicherung__rente__alter_bei_renteneintritt: float, + erwerbsm_rente_params: dict, +) -> float: + """Average earning points as part of the "Grundbewertung". + Earnings points are divided by "belegungsfähige Gesamtzeitraum" which is + the period from the age of 17 until the start of the pension. + + Legal reference: SGB VI § 72: Grundbewertung + + Parameters + ---------- + sozialversicherung__rente__entgeltpunkte_west + See basic input variable :ref: + sozialversicherung__rente__entgeltpunkte_ost + See basic input variable :ref: + sozialversicherung__rente__alter_bei_renteneintritt + See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. + erwerbsm_rente_params + See params documentation :ref:`erwerbsm_rente_params . + + Returns + ------- + average entgeltp + """ + + belegungsfähiger_gesamtzeitraum = ( + sozialversicherung__rente__alter_bei_renteneintritt + - erwerbsm_rente_params["altersgrenze_grundbewertung"] + ) + + durchschnittliche_entgeltpunkte = ( + sozialversicherung__rente__entgeltpunkte_west + + sozialversicherung__rente__entgeltpunkte_ost + ) / belegungsfähiger_gesamtzeitraum + + return durchschnittliche_entgeltpunkte diff --git a/src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py b/src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py new file mode 100644 index 0000000000..dfa2cdb2b5 --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py @@ -0,0 +1,398 @@ +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: + """Calculate Grundrentenzuschlag (additional monthly pensions payments resulting + from Grundrente) + + Parameters + ---------- + basisbetrag_m + See :func:`basisbetrag_m`. + anzurechnendes_einkommen_m + See :func:`anzurechnendes_einkommen_m`. + + Returns + ------- + + """ + out = basisbetrag_m - anzurechnendes_einkommen_m + return max(out, 0.0) + + +@policy_function(start_date="2021-01-01") +def einkommen_m( + proxy_rente_vorjahr_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m: float, +) -> float: + """Calculate total income relevant for Grundrentenzuschlag before deductions are + subtracted. + + Some notes: + + - The Grundrentenzuschlag (in previous years) is not part of the relevant income and + does not lower the Grundrentenzuschlag (reference: § 97a Abs. 2 S. 7 SGB VI). + - The Deutsche Rentenversicherung uses the income of the year two to three years ago + to be able to use administrative data on this income for the calculation: "It can + be assumed that the tax office regularly has the data two years after the end of + the assessment period, which can be retrieved from the pension insurance." + - Warning: Currently, earnings of dependent work and pensions are based on the last + year, and other income on the current year instead of the year two years ago to + avoid the need for several new input variables. + - Warning: Freibeträge for income are currently not considered as `freibeträge_y` + depends on pension income through + `sozialversicherung__kranken__beitrag__betrag_versicherter_m` -> + `vorsorgeaufw` -> `freibeträge` + + Reference: § 97a Abs. 2 S. 1 SGB VI + + Parameters + ---------- + proxy_rente_vorjahr_m + See :func:`proxy_rente_vorjahr_m`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m`. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m`. + + Returns + ------- + + """ + + # Sum income over different income sources. + out = ( + proxy_rente_vorjahr_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m # income from self-employment + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m # rental income + + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m + ) + + return out + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def anzurechnendes_einkommen_m( + einkommen_m_ehe: float, + familie__anzahl_personen_ehe: int, + sozialversicherung__rente__altersrente__rentenwert: float, + ges_rente_params: dict, +) -> float: + """Calculate income which is deducted from Grundrentenzuschlag. + + Apply allowances. There are upper and lower thresholds for singles and + couples. 60% of income between the upper and lower threshold is credited against + the Grundrentenzuschlag. All the income above the upper threshold is credited + against the Grundrentenzuschlag. + + Reference: § 97a Abs. 4 S. 2, 4 SGB VI + + Parameters + ---------- + einkommen_m_ehe + See :func:`einkommen_m_ehe`. + familie__anzahl_personen_ehe + See :func:`familie__anzahl_personen_ehe`. + sozialversicherung__rente__altersrente__rentenwert + See :func:`sozialversicherung__rente__altersrente__rentenwert`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + Returns + ------- + + """ + + # Calculate relevant income following the crediting rules using the values for + # singles and those for married subjects + # Note: Thresholds are defined relativ to rentenwert which is implemented by + # dividing the income by rentenwert and multiply rentenwert to the result. + if familie__anzahl_personen_ehe == 2: + einkommensanr_params = ges_rente_params["grundr_einkommensanr_verheiratet"] + else: + einkommensanr_params = ges_rente_params["grundr_einkommensanr_single"] + + out = ( + piecewise_polynomial( + x=einkommen_m_ehe / sozialversicherung__rente__altersrente__rentenwert, + thresholds=einkommensanr_params["thresholds"], + rates=einkommensanr_params["rates"], + intercepts_at_lower_thresholds=einkommensanr_params[ + "intercepts_at_lower_thresholds" + ], + ) + * sozialversicherung__rente__altersrente__rentenwert + ) + + return out + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def basisbetrag_m( + mean_entgeltpunkte_zuschlag: float, + bewertungszeiten_monate: int, + sozialversicherung__rente__altersrente__rentenwert: float, + sozialversicherung__rente__altersrente__zugangsfaktor: float, + ges_rente_params: dict, +) -> float: + """Calculate additional monthly pensions payments resulting from Grundrente, without + taking into account income crediting rules. + + The Zugangsfaktor is limited to 1 and considered Grundrentezeiten + are limited to 35 years (420 months). + + Parameters + ---------- + mean_entgeltpunkte_zuschlag + See :func:`mean_entgeltpunkte_zuschlag`. + bewertungszeiten_monate + See basic input variable + :ref:`bewertungszeiten_monate `. + sozialversicherung__rente__altersrente__rentenwert + See :func:`sozialversicherung__rente__altersrente__rentenwert`. + sozialversicherung__rente__altersrente__zugangsfaktor + See :func:`sozialversicherung__rente__altersrente__zugangsfaktor`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + + # Winsorize Bewertungszeiten and Zugangsfaktor at maximum values + bewertungszeiten_monate_wins = min( + bewertungszeiten_monate, + ges_rente_params["grundrentenzeiten_monate"]["max"], + ) + ges_rente_zugangsfaktor_wins = min( + sozialversicherung__rente__altersrente__zugangsfaktor, + ges_rente_params["grundrente_zugangsfaktor_max"], + ) + + out = ( + mean_entgeltpunkte_zuschlag + * bewertungszeiten_monate_wins + * sozialversicherung__rente__altersrente__rentenwert + * ges_rente_zugangsfaktor_wins + ) + return out + + +@policy_function(start_date="2021-01-01") +def durchschnittliche_entgeltpunkte( + mean_entgeltpunkte: float, bewertungszeiten_monate: int +) -> float: + """Compute average number of Entgeltpunkte earned per month of + Grundrentenbewertungszeiten. + + Parameters + ---------- + mean_entgeltpunkte + See basic input variable + :ref:`mean_entgeltpunkte `. + bewertungszeiten_monate + See basic input variable + :ref:`bewertungszeiten_monate `. + + Returns + ------- + + """ + if bewertungszeiten_monate > 0: + out = mean_entgeltpunkte / bewertungszeiten_monate + + # Return 0 if bewertungszeiten_monate is 0. Then, mean_entgeltpunkte should be 0, too. + else: + out = 0 + + return out + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def höchstbetrag_m( + grundrentenzeiten_monate: int, + ges_rente_params: dict, +) -> float: + """Calculate the maximum allowed number of average Entgeltpunkte (per month) after + adding bonus of Entgeltpunkte for a given number of Grundrentenzeiten. + + Parameters + ---------- + grundrentenzeiten_monate + See basic input variable :ref:`grundrentenzeiten_monate `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + # Calculate number of months above minimum threshold + months_above_thresh = ( + min( + grundrentenzeiten_monate, + ges_rente_params["grundrentenzeiten_monate"]["max"], + ) + - ges_rente_params["grundrentenzeiten_monate"]["min"] + ) + + # Calculate höchstwert + out = ( + ges_rente_params["grundr_höchstwert"]["base"] + + ges_rente_params["grundr_höchstwert"]["increment"] * months_above_thresh + ) + + return out + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def mean_entgeltpunkte_zuschlag( + durchschnittliche_entgeltpunkte: float, + höchstbetrag_m: float, + grundrentenzeiten_monate: int, + ges_rente_params: dict, +) -> float: + """Calculate additional Entgeltpunkte for pensioner. + + In general, the average of monthly Entgeltpunkte earnd in Grundrentenzeiten is + doubled, or extended to the individual Höchstwert if doubling would exceed the + Höchstwert. Then, the value is multiplied by 0.875. + + Legal reference: § 76g SGB VI + + Parameters + ---------- + durchschnittliche_entgeltpunkte + See :func:`durchschnittliche_entgeltpunkte`. + höchstbetrag_m + See :func:`höchstbetrag_m`. + grundrentenzeiten_monate + See basic input variable :ref:`grundrentenzeiten_monate `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + + # Return 0 if Grundrentenzeiten below minimum + if grundrentenzeiten_monate < ges_rente_params["grundrentenzeiten_monate"]["min"]: + out = 0.0 + else: + # Case 1: Entgeltpunkte less than half of Höchstwert + if durchschnittliche_entgeltpunkte <= (0.5 * höchstbetrag_m): + out = durchschnittliche_entgeltpunkte + + # Case 2: Entgeltpunkte more than half of Höchstwert, but below Höchstwert + elif durchschnittliche_entgeltpunkte < höchstbetrag_m: + out = höchstbetrag_m - durchschnittliche_entgeltpunkte + + # Case 3: Entgeltpunkte above Höchstwert + elif durchschnittliche_entgeltpunkte > höchstbetrag_m: + out = 0.0 + + # Multiply additional Engeltpunkte by factor + out = out * ges_rente_params["grundr_faktor_bonus"] + + return out + + +@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +def proxy_rente_vorjahr_m( # noqa: PLR0913 + sozialversicherung__rente__bezieht_rente: bool, + sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__rente__jahr_renteneintritt: int, + geburtsjahr: int, + alter: int, + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__entgeltpunkte_ost: float, + sozialversicherung__rente__altersrente__zugangsfaktor: float, + ges_rente_params: dict, +) -> float: + """Estimated amount of public pensions of last year excluding Grundrentenzuschlag. + + Parameters + ---------- + sozialversicherung__rente__bezieht_rente + See basic input variable :ref:`sozialversicherung__rente__bezieht_rente `. + sozialversicherung__rente__private_rente_betrag_m + See basic input variable :ref:`sozialversicherung__rente__private_rente_betrag_m `. Assume this did not + change from last year. + sozialversicherung__rente__jahr_renteneintritt + See basic input variable :ref:`sozialversicherung__rente__jahr_renteneintritt `. + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + alter + See basic input variable :ref:`alter `. + sozialversicherung__rente__entgeltpunkte_west + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west `. + sozialversicherung__rente__entgeltpunkte_ost + See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost `. + sozialversicherung__rente__altersrente__zugangsfaktor + See :func:`sozialversicherung__rente__altersrente__zugangsfaktor`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + + # Calculate if subect was retired last year + if sozialversicherung__rente__bezieht_rente: + rentner_vorjahr = ( + sozialversicherung__rente__jahr_renteneintritt < geburtsjahr + alter + ) + else: + rentner_vorjahr = False + + if rentner_vorjahr: + out = ( + ( + sozialversicherung__rente__entgeltpunkte_west + * ges_rente_params["rentenwert_vorjahr"]["west"] + + sozialversicherung__rente__entgeltpunkte_ost + * ges_rente_params["rentenwert_vorjahr"]["ost"] + ) + * sozialversicherung__rente__altersrente__zugangsfaktor + + sozialversicherung__rente__private_rente_betrag_m + ) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2021-01-01") +def grundsätzlich_anspruchsberechtigt( + grundrentenzeiten_monate: int, + ges_rente_params: dict, +) -> bool: + """Whether person has accumulated enough insured years to be eligible. + + Parameters + ---------- + grundrentenzeiten_monate + See :func:`grundrentenzeiten_monate`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + + """ + out = ( + grundrentenzeiten_monate >= ges_rente_params["grundrentenzeiten_monate"]["min"] + ) + return out diff --git a/src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py b/src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py new file mode 100644 index 0000000000..5fea24067a --- /dev/null +++ b/src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py @@ -0,0 +1,253 @@ +"""Pension-relevant periods.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def mindestwartezeit_erfüllt( + pflichtbeitragsmonate: float, + freiwillige_beitragsmonate: float, + ersatzzeiten_monate: float, + ges_rente_params: dict, +) -> bool: + """Whether Allgemeine Wartezeit has been completed. Aggregates time + periods that are relevant for the general eligibility of the + regular pension (regelaltersrente). "Allgemeine Wartezeit". + + Parameters + ---------- + pflichtbeitragsmonate + See :func:`pflichtbeitragsmonate`. + freiwillige_beitragsmonate + See :func:`freiwillige_beitragsmonate`. + ersatzzeiten_monate + See :func:`ersatzzeiten_monate`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Fulfilled Wartezeit von 5 Jahren. + + """ + return ( + pflichtbeitragsmonate + freiwillige_beitragsmonate + ersatzzeiten_monate + ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_5"] + + +@policy_function() +def wartezeit_15_jahre_erfüllt( + pflichtbeitragsmonate: float, + freiwillige_beitragsmonate: float, + ersatzzeiten_monate: float, + ges_rente_params: dict, +) -> bool: + """Whether Wartezeit von 15 Jahren Wartezeit has been completed. + Aggregates time periods that are relevant for the Altersrente für Frauen + and Leistungen zur Teilhabe. Wartezeit von 15 Jahren. + + Parameters + ---------- + pflichtbeitragsmonate + See :func:`pflichtbeitragsmonate`. + freiwillige_beitragsmonate + See :func:`freiwillige_beitragsmonate`. + ersatzzeiten_monate + See :func:`ersatzzeiten_monate`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Fulfilled Wartezeit von 15 Jahren + + """ + return ( + pflichtbeitragsmonate + freiwillige_beitragsmonate + ersatzzeiten_monate + ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_15"] + + +@policy_function() +def wartezeit_35_jahre_erfüllt( # noqa: PLR0913 + pflichtbeitragsmonate: float, + freiwillige_beitragsmonate: float, + anrechnungsmonate_35_jahre_wartezeit: float, + ersatzzeiten_monate: float, + kinderberücksichtigungszeiten_monate: float, + pflegeberücksichtigungszeiten_monate: float, + ges_rente_params: dict, +) -> bool: + """Whether Wartezeit von 35 Jahren Wartezeit has been completed. + Aggregates time periods that are relevant for the eligibility of Altersrente für + langjährig Versicherte (pension for long-term insured). Wartezeit von 35 Jahren. All + "rentenrechtliche Zeiten" are considered. + + Parameters + ---------- + pflichtbeitragsmonate + See :func:`pflichtbeitragsmonate`. + freiwillige_beitragsmonate + See :func:`freiwillige_beitragsmonate`. + ersatzzeiten_monate + See :func:`ersatzzeiten_monate`. + anrechnungsmonate_35_jahre_wartezeit + See :func:`anrechnungsmonate_35_jahre_wartezeit`. + kinderberücksichtigungszeiten_monate + See :func:`kinderberücksichtigungszeiten_monate`. + pflegeberücksichtigungszeiten_monate + See :func:`pflegeberücksichtigungszeiten_monate`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Fulfilled Wartezeit von 35 Jahren + + """ + return ( + pflichtbeitragsmonate + + freiwillige_beitragsmonate + + anrechnungsmonate_35_jahre_wartezeit + + ersatzzeiten_monate + + kinderberücksichtigungszeiten_monate + + pflegeberücksichtigungszeiten_monate + ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_35"] + + +@policy_function(start_date="2012-01-01") +def wartezeit_45_jahre_erfüllt( # noqa: PLR0913 + pflichtbeitragsmonate: float, + freiwillige_beitragsmonate: float, + anrechnungsmonate_45_jahre_wartezeit: float, + ersatzzeiten_monate: float, + kinderberücksichtigungszeiten_monate: float, + pflegeberücksichtigungszeiten_monate: float, + ges_rente_params: dict, +) -> bool: + """Whether Wartezeit von 45 Jahren Wartezeit has been completed. + Aggregates time periods that are relevant for the eligibility of Altersrente für + besonders langjährig Versicherte (pension for very long-term insured). Wartezeit von + 45 Jahren. Not all "rentenrechtliche Zeiten" are considered. Years with voluntary + contributions are only considered if at least 18 years of mandatory contributions + (pflichtbeitragsmonate). Not all anrechnungszeiten are considered, but only + specific ones (e.g. ALG I, Kurzarbeit but not ALG II). + + Parameters + ---------- + pflichtbeitragsmonate + See basic input variable :ref:`pflichtbeitragsmonate `. + freiwillige_beitragsmonate + See basic input variable :ref:`freiwillige_beitragsmonate `. + anrechnungsmonate_45_jahre_wartezeit + See :func:`anrechnungsmonate_45_jahre_wartezeit`. + ersatzzeiten_monate + See basic input variable :ref:`ersatzzeiten_monate `. + kinderberücksichtigungszeiten_monate + See basic input variable :ref:`kinderberücksichtigungszeiten_monate `. + pflegeberücksichtigungszeiten_monate + See basic input variable :ref:`pflegeberücksichtigungszeiten_monate `. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + + Returns + ------- + Fulfilled Wartezeit von 45 Jahren + + """ + if ( + pflichtbeitragsmonate / 12 + >= ges_rente_params[ + "mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge" + ] + ): + freiwillige_beitragszeiten = freiwillige_beitragsmonate + else: + freiwillige_beitragszeiten = 0 + + return ( + pflichtbeitragsmonate + + freiwillige_beitragszeiten + + anrechnungsmonate_45_jahre_wartezeit + + ersatzzeiten_monate + + pflegeberücksichtigungszeiten_monate + + kinderberücksichtigungszeiten_monate + ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_45"] + + +@policy_function() +def anrechnungsmonate_35_jahre_wartezeit( # noqa: PLR0913 + monate_in_arbeitsunfähigkeit: float, + krankheitszeiten_ab_16_bis_24_monate: float, + monate_in_mutterschutz: float, + monate_in_arbeitslosigkeit: float, + monate_in_ausbildungssuche: float, + monate_in_schulausbildung: float, +) -> float: + """Adds up all times that are accounted for in "Anrechnungszeiten" + relevant for "Wartezeit von 35 Jahren" i.e. for Altersrente für + langjährig Versicherte (pension for long term insured). + (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, + Wartezeiten, Ausgabe 2021, S. 24.) + + + Parameters + ---------- + monate_in_arbeitsunfähigkeit + See :func:`monate_in_arbeitsunfähigkeit`. + krankheitszeiten_ab_16_bis_24_monate + See :func:`krankheitszeiten_ab_16_bis_24_monate`. + monate_in_mutterschutz + See :func:`monate_in_mutterschutz`. + monate_in_arbeitslosigkeit + See :func:`monate_in_arbeitslosigkeit`. + monate_in_ausbildungssuche + See :func:`monate_in_ausbildungssuche`. + monate_in_schulausbildung + See :func:`monate_in_schulausbildung`. + + Returns + ------- + Anrechnungszeit in months + """ + return ( + monate_in_arbeitsunfähigkeit + + krankheitszeiten_ab_16_bis_24_monate + + monate_in_mutterschutz + + monate_in_arbeitslosigkeit + + monate_in_ausbildungssuche + + monate_in_schulausbildung + ) + + +@policy_function(start_date="2012-01-01") +def anrechnungsmonate_45_jahre_wartezeit( + monate_in_arbeitsunfähigkeit: float, + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: float, + monate_geringfügiger_beschäftigung: float, +) -> float: + """Adds up all times NOT included in Beitragszeiten, Berücksichtigungszeiten, + Ersatzzeiten (a variant of Anrechnungszeiten) that are accounted for in "Wartezeit + von 45 Jahren" i.e. for Altersrente für besonders langjährig Versicherte (pension + for very long term insured). "nur Anrechnungszeiten mit Bezug von + Entgeltersatzleistungen der Arbeitsförderung, Leistungen bei Krankheit und + Übergangsgeld". (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, + Wartezeiten, Ausgabe 2021, S. 24) + + Parameters + ---------- + monate_in_arbeitsunfähigkeit + See :func:`monate_in_arbeitsunfähigkeit`. + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit + See :func:`monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit`. + monate_geringfügiger_beschäftigung + See :func:`monate_geringfügiger_beschäftigung`. + Returns + ------- + Anrechnungszeit in months. + + """ + return ( + monate_in_arbeitsunfähigkeit + + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit + + monate_geringfügiger_beschäftigung + ) diff --git a/src/_gettsim/taxes/zu_verst_eink/eink.py b/src/_gettsim/taxes/zu_verst_eink/eink.py deleted file mode 100644 index 90f225739b..0000000000 --- a/src/_gettsim/taxes/zu_verst_eink/eink.py +++ /dev/null @@ -1,259 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - - -def eink_selbst_y(eink_selbst_m: float) -> float: - """Aggregate gross income from self-employment to full year income. - - Parameters - ---------- - eink_selbst_m - See basic input variable :ref:`eink_selbst_m `. - - Returns - ------- - - """ - return 12 * eink_selbst_m - - -def eink_abhängig_beschäftigt_y( - bruttolohn_m: float, - eink_st_abzuege_params: dict, -) -> float: - """Aggregate monthly gross wage to yearly income and deduct - 'Werbungskostenpauschale'. - - The wage is reducted by a lump sum payment for 'Werbungskosten' - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - abzug = eink_st_abzuege_params["werbungskostenpauschale"] - - out = 12 * bruttolohn_m - abzug - - return max(out, 0.0) - - -def _zu_verst_eink_abhängig_beschäftigt_y( - eink_abhängig_beschäftigt_y: float, - geringfügig_beschäftigt: bool, -) -> float: - """Calculate taxable income from dependent employment. In particular, taxable - income is set to 0 for marginally employed persons. - - Parameters - ---------- - eink_abhängig_beschäftigt_y - See basic input variable :ref:`eink_abhängig_beschäftigt_y - `. - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - - Returns - ------- - - """ - if geringfügig_beschäftigt: - out = 0.0 - else: - out = eink_abhängig_beschäftigt_y - - return out - - -def kapitaleink_brutto_y(kapitaleink_brutto_m: float) -> float: - """Aggregate monthly gross capital income to yearly income. - - Parameters - ---------- - kapitaleink_brutto_m - See basic input variable :ref:`kapitaleink_brutto_m `. - - Returns - ------- - - """ - return 12 * kapitaleink_brutto_m - - -def eink_vermietung_y(eink_vermietung_m: float) -> float: - """Aggregate monthly gross rental income to yearly income. - - Parameters - ---------- - eink_vermietung_m - See basic input variable :ref:`eink_vermietung_m `. - - Returns - ------- - - """ - return 12 * eink_vermietung_m - - -def eink_rente_zu_verst_m( - sum_ges_rente_priv_rente_m: float, rente_ertragsanteil: float -) -> float: - """Calculate monthly pension payment subject to taxation. - - Parameters - ---------- - sum_ges_rente_priv_rente_m - See basic input variable :ref:`sum_ges_rente_priv_rente_m - `. - rente_ertragsanteil - See :func:`rente_ertragsanteil`. - - Returns - ------- - - """ - return rente_ertragsanteil * sum_ges_rente_priv_rente_m - - -def eink_rente_zu_verst_y( - eink_rente_zu_verst_m: float, -) -> float: - """Aggregate monthly gross pension income subject to taxation to yearly income. - - Parameters - ---------- - eink_rente_zu_verst_m - See :func:`eink_rente_zu_verst_m`. - - Returns - ------- - - """ - return eink_rente_zu_verst_m * 12 - - -@policy_function(start_date="2009-01-01", leaf_name="sum_eink_y") -def sum_eink_ohne_kapital_eink_y( - eink_selbst_y: float, - _zu_verst_eink_abhängig_beschäftigt_y: float, - eink_vermietung_y: float, - eink_rente_zu_verst_y: float, -) -> float: - """Sum of gross incomes without capital income. - - Since 2009 capital income is not subject to normal taxation. - Parameters - ---------- - eink_selbst_y - See :func:`eink_selbst_y`. - _zu_verst_eink_abhängig_beschäftigt_y - See :func:`_zu_verst_eink_abhängig_beschäftigt_y`. - eink_vermietung_y - See :func:`eink_vermietung_y`. - eink_rente_zu_verst_y - See :func:`eink_rente_zu_verst_y`. - - Returns - ------- - - """ - out = ( - eink_selbst_y - + _zu_verst_eink_abhängig_beschäftigt_y - + eink_vermietung_y - + eink_rente_zu_verst_y - ) - return out - - -def kapitaleink_y( - kapitaleink_brutto_y: float, - eink_st_abzuege_params: dict, -) -> float: - """Capital income minus Sparerpauschbetrag. - - Parameters - ---------- - kapitaleink_brutto_y - See :func:`kapitaleink_brutto_y`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = ( - kapitaleink_brutto_y - - eink_st_abzuege_params["sparerpauschbetrag"] - - eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] - ) - - return max(out, 0.0) - - -@policy_function(end_date="2008-12-31", leaf_name="sum_eink_y") -def sum_eink_mit_kapital_eink_y( - eink_selbst_y: float, - _zu_verst_eink_abhängig_beschäftigt_y: float, - eink_vermietung_y: float, - eink_rente_zu_verst_y: float, - kapitaleink_y: float, -) -> float: - """Sum of gross incomes with capital income. - - Parameters - ---------- - eink_selbst_y - See :func:`eink_selbst_y`. - _zu_verst_eink_abhängig_beschäftigt_y - See :func:`_zu_verst_eink_abhängig_beschäftigt_y`. - eink_vermietung_y - See :func:`eink_vermietung_y`. - eink_rente_zu_verst_y - See :func:`eink_rente_zu_verst_y`. - kapitaleink_y - See :func:`kapitaleink_y`. - - Returns - ------- - - """ - out = ( - eink_selbst_y - + _zu_verst_eink_abhängig_beschäftigt_y - + eink_vermietung_y - + eink_rente_zu_verst_y - + kapitaleink_y - ) - return out - - -def rente_ertragsanteil(jahr_renteneintr: int, eink_st_params: dict) -> float: - """Calculate the share of pensions subject to income taxation. - - Parameters - ---------- - jahr_renteneintr - See basic input variable :ref:`jahr_renteneintr `. - eink_st_params - See params documentation :ref:`eink_st_params `. - Returns - ------- - - """ - out = piecewise_polynomial( - x=jahr_renteneintr, - thresholds=eink_st_params["rente_ertragsanteil"]["thresholds"], - rates=eink_st_params["rente_ertragsanteil"]["rates"], - intercepts_at_lower_thresholds=eink_st_params["rente_ertragsanteil"][ - "intercepts_at_lower_thresholds" - ], - ) - return out diff --git a/src/_gettsim/taxes/zu_verst_eink/freibetraege.py b/src/_gettsim/taxes/zu_verst_eink/freibetraege.py deleted file mode 100644 index d7ad3aa276..0000000000 --- a/src/_gettsim/taxes/zu_verst_eink/freibetraege.py +++ /dev/null @@ -1,426 +0,0 @@ -from _gettsim.config import numpy_or_jax as np -from _gettsim.functions.policy_function import policy_function - -aggregate_by_p_id_freibeträge = { - "_eink_st_kinderfreib_anz_anspruch_1": { - "p_id_to_aggregate_by": "p_id_kinderfreib_empfänger_1", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, - "_eink_st_kinderfreib_anz_anspruch_2": { - "p_id_to_aggregate_by": "p_id_kinderfreib_empfänger_2", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, - "betreuungskost_elternteil_m": { - "p_id_to_aggregate_by": "p_id_betreuungsk_träger", - "source_col": "betreuungskost_m", - "aggr": "sum", - }, -} - - -def _eink_st_kinderfreib_anz_ansprüche( - _eink_st_kinderfreib_anz_anspruch_1: int, - _eink_st_kinderfreib_anz_anspruch_2: int, -) -> int: - """Return the number of Kinderfreibeträge a person is entitled to. - - The person could be a parent or legal custodian. - - Parameters - ---------- - _eink_st_kinderfreib_anz_anspruch_1 - Helper function based on aggregating - :ref:`p_id_kinderfreibetr_empfänger_1 `. - _eink_st_kinderfreib_anz_anspruch_2 - Helper function based on aggregating - :ref:`p_id_kinderfreibetr_empfänger_2 `. - - """ - return _eink_st_kinderfreib_anz_anspruch_1 + _eink_st_kinderfreib_anz_anspruch_2 - - -def _eink_st_behinderungsgrad_pauschbetrag_y( - behinderungsgrad: int, eink_st_abzuege_params: dict -) -> float: - """Assign tax deduction allowance for handicaped to different handicap degrees. - - Parameters - ---------- - behinderungsgrad - See basic input variable :ref:`behinderungsgrad `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - - # Get disability degree thresholds - bins = sorted(eink_st_abzuege_params["behinderten_pauschbetrag"]) - - # Select corresponding bin. - selected_bin_index = ( - np.searchsorted(np.asarray([*bins, np.inf]), behinderungsgrad, side="right") - 1 - ) - selected_bin = bins[selected_bin_index] - - # Select appropriate pauschbetrag. - out = eink_st_abzuege_params["behinderten_pauschbetrag"][selected_bin] - - return float(out) - - -@policy_function(end_date="2014-12-31", leaf_name="alleinerz_freib_y_sn") -def eink_st_alleinerz_freib_y_sn_pauschal( - alleinerz_sn: bool, eink_st_abzuege_params: dict -) -> float: - """Calculate tax deduction allowance for single parents until 2014. - - This used to be called 'Haushaltsfreibetrag'. - - Parameters - ---------- - alleinerz_sn - See :func:`alleinerz_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - if alleinerz_sn: - out = eink_st_abzuege_params["alleinerz_freibetrag"] - else: - out = 0.0 - - return out - - -@policy_function(start_date="2015-01-01", leaf_name="alleinerz_freib_y_sn") -def eink_st_alleinerz_freib_y_sn_nach_kinderzahl( - alleinerz_sn: bool, - kindergeld_anz_ansprüche_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate tax deduction allowance for single parents since 2015. - - Since 2015, it increases with - number of children. Used to be called 'Haushaltsfreibetrag' - - Parameters - ---------- - alleinerz_sn - See :func:`alleinerz_sn`. - kindergeld_anz_ansprüche_sn - See :func:`kindergeld_anz_ansprüche_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - alleinerz_freib_y_sn = ( - eink_st_abzuege_params["alleinerz_freibetrag"] - + (kindergeld_anz_ansprüche_sn - 1) - * eink_st_abzuege_params["alleinerz_freibetrag_zusatz"] - ) - if alleinerz_sn: - out = alleinerz_freib_y_sn - else: - out = 0.0 - - return out - - -@policy_function(end_date="2004-12-31", leaf_name="eink_st_altersfreib_y") -def eink_st_altersfreib_y_bis_2004( # noqa: PLR0913 - bruttolohn_m: float, - alter: int, - kapitaleink_brutto_m: float, - eink_selbst_m: float, - eink_vermietung_m: float, - eink_st_abzuege_params: dict, -) -> float: - """Calculate tax deduction allowance for elderly until 2004. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - alter - See basic input variable :ref:`alter `. - kapitaleink_brutto_m - See basic input variable :ref:`kapitaleink_brutto_m `. - eink_selbst_m - See :func:`eink_selbst_m`. - eink_vermietung_m - See basic input variable :ref:`eink_vermietung_m `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - altersgrenze = eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"] - weiteres_einkommen = max( - kapitaleink_brutto_m + eink_selbst_m + eink_vermietung_m, 0.0 - ) - if alter > altersgrenze: - out = min( - eink_st_abzuege_params["altersentlastung_quote"] - * 12 - * (bruttolohn_m + weiteres_einkommen), - eink_st_abzuege_params["altersentlastungsbetrag_max"], - ) - else: - out = 0.0 - - return out - - -@policy_function(start_date="2005-01-01", leaf_name="eink_st_altersfreib_y") -def eink_st_altersfreib_y_ab_2005( # noqa: PLR0913 - bruttolohn_m: float, - geringfügig_beschäftigt: bool, - alter: int, - geburtsjahr: int, - kapitaleink_brutto_m: float, - eink_selbst_m: float, - eink_vermietung_m: float, - eink_st_abzuege_params: dict, -) -> float: - """Calculate tax deduction allowance for elderly since 2005. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - alter - See basic input variable :ref:`alter `. - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - kapitaleink_brutto_m - See basic input variable :ref:`kapitaleink_brutto_m `. - eink_selbst_m - See :func:`eink_selbst_m`. - eink_vermietung_m - See basic input variable :ref:`eink_vermietung_m `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - - Returns - ------- - - """ - # Maximum tax credit by birth year. - bins = sorted(eink_st_abzuege_params["altersentlastungsbetrag_max"]) - if geburtsjahr <= 1939: - selected_bin = 1940 - else: - # Select corresponding bin. - selected_bin = bins[ - np.searchsorted(np.asarray([*bins, np.inf]), geburtsjahr, side="right") - 1 - ] - - # Select appropriate tax credit threshold and quota. - out_max = eink_st_abzuege_params["altersentlastungsbetrag_max"][selected_bin] - - einkommen_lohn = 0 if geringfügig_beschäftigt else bruttolohn_m - weiteres_einkommen = max( - kapitaleink_brutto_m + eink_selbst_m + eink_vermietung_m, 0.0 - ) - out_quote = ( - eink_st_abzuege_params["altersentlastung_quote"][selected_bin] - * 12 - * (einkommen_lohn + weiteres_einkommen) - ) - - if alter > eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"]: - out = min(out_quote, out_max) - else: - out = 0.0 - - return out - - -@policy_function(end_date="2011-12-31", leaf_name="eink_st_sonderausgaben_y_sn") -def eink_st_sonderausgaben_y_sn_nur_pauschale( - eink_st_abzuege_params: dict, - anz_personen_sn: int, -) -> float: - """Sonderausgaben on Steuernummer level until 2011. - - Only a lump sum payment is implemented. - - Parameters - ---------- - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - anz_personen_sn - See func `anz_personen_sn `. - - Returns - ------- - - """ - # so far, only the Sonderausgabenpauschale is considered - - out = ( - eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] * anz_personen_sn - ) - - return float(out) - - -@policy_function(start_date="2012-01-01", leaf_name="eink_st_sonderausgaben_y_sn") -def eink_st_sonderausgaben_y_sn_mit_betreuung( - eink_st_abzuege_params: dict, - sonderausgaben_betreuung_y_sn: float, - anz_personen_sn: int, -) -> float: - """Sonderausgaben on Steuernummer level since 2012. - - We follow 10 Abs.1 Nr. 5 EStG. You can find - details here https://www.buzer.de/s1.htm?a=10&g=estg. - - Parameters - ---------- - sonderausgaben_betreuung_y_sn - See :func:`sonderausgaben_betreuung_y_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - anz_personen_sn - See :func:`anz_personen_sn`. - - Returns - ------- - - """ - sonderausgaben_gesamt = sonderausgaben_betreuung_y_sn - pauschale = ( - eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] * anz_personen_sn - ) - - out = max(sonderausgaben_gesamt, pauschale) - - return float(out) - - -def eink_st_abz_betreuungskost_y( - eink_st_abzuege_params: dict, - betreuungskost_elternteil_y: float, -) -> float: - """Individual deductable childcare cost for each individual child under 14. - - Parameters - ---------- - betreuungskost_elternteil_y - See :func:`betreuungskost_elternteil_y`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = min( - betreuungskost_elternteil_y, - eink_st_abzuege_params["kinderbetreuungskosten_abz_maximum"], - ) - return out - - -@policy_function(params_key_for_rounding="eink_st_abzuege") -def sonderausgaben_betreuung_y_sn( - eink_st_abzuege_params: dict, - eink_st_abz_betreuungskost_y_sn: float, -) -> float: - """Sonderausgaben for childcare on Steuernummer level. - - We follow 10 Abs.1 Nr. 5 EStG. You can - details here https://www.buzer.de/s1.htm?a=10&g=estg. - - Parameters - ---------- - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - eink_st_abz_betreuungskost_y_sn - See :func:`eink_st_abz_betreuungskost_y_sn`. - - Returns - ------- - - """ - - out = ( - eink_st_abz_betreuungskost_y_sn - * eink_st_abzuege_params["kinderbetreuungskosten_abz_anteil"] - ) - - return float(out) - - -def eink_st_kinderfreib_y( - _eink_st_kinderfreib_anz_ansprüche: int, - eink_st_abzuege_params: dict, -) -> float: - """Individual child allowance. - - Parameters - ---------- - _eink_st_kinderfreib_anz_ansprüche - See :func:`_eink_st_kinderfreib_anz_ansprüche`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - - return float( - sum(eink_st_abzuege_params["kinderfreib"].values()) - * _eink_st_kinderfreib_anz_ansprüche - ) - - -def p_id_kinderfreib_empfänger_1( - p_id_elternteil_1: int, -) -> int: - """Assigns child allowance to parent 1. - - Parameters - ---------- - p_id_elternteil_1 - See :func:`p_id_elternteil_1`. - - Returns - ------- - - """ - return p_id_elternteil_1 - - -def p_id_kinderfreib_empfänger_2( - p_id_elternteil_2: int, -) -> int: - """Assigns child allowance to parent 2. - - Parameters - ---------- - p_id_elternteil_2 - See :func:`p_id_elternteil_2`. - - Returns - ------- - - """ - return p_id_elternteil_2 diff --git a/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py b/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py deleted file mode 100644 index 955a841649..0000000000 --- a/src/_gettsim/taxes/zu_verst_eink/vorsorgeaufw.py +++ /dev/null @@ -1,353 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function( - start_date="2005-01-01", - end_date="2022-12-31", - leaf_name="vorsorgeaufw_alter_y_sn", -) -def vorsorgeaufw_alter_y_sn_einfuehrung( - ges_rentenv_beitr_arbeitnehmer_m_sn: float, - priv_rentenv_beitr_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Determine contributions to retirement savings deductible from taxable income. - - The share of deductible contributions increases each year from 60% in 2005 to 100% - in 2025. - - Parameters - ---------- - ges_rentenv_beitr_arbeitnehmer_m_sn - See :func:`ges_rentenv_beitr_arbeitnehmer_m_sn`. - priv_rentenv_beitr_m_sn - See :func:`priv_rentenv_beitr_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = ( - eink_st_abzuege_params["einführungsfaktor_vorsorgeaufw_alter_ab_2005"] - * (2 * ges_rentenv_beitr_arbeitnehmer_m_sn + priv_rentenv_beitr_m_sn) - - ges_rentenv_beitr_arbeitnehmer_m_sn - ) * 12 - max_value = anz_personen_sn * eink_st_abzuege_params["vorsorge_altersaufw_max"] - out = min(out, max_value) - - return out - - -@policy_function(start_date="2023-01-01") -def vorsorgeaufw_alter_y_sn( - ges_rentenv_beitr_arbeitnehmer_m_sn: float, - priv_rentenv_beitr_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Determine contributions to retirement savings deductible from taxable income. - - Parameters - ---------- - ges_rentenv_beitr_arbeitnehmer_m_sn - See :func:`ges_rentenv_beitr_arbeitnehmer_m_sn`. - priv_rentenv_beitr_m_sn - See :func:`priv_rentenv_beitr_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = (ges_rentenv_beitr_arbeitnehmer_m_sn + priv_rentenv_beitr_m_sn) * 12 - max_value = anz_personen_sn * eink_st_abzuege_params["vorsorge_altersaufw_max"] - - return min(out, max_value) - - -@policy_function( - start_date="2005-01-01", - end_date="2009-12-31", - leaf_name="einführung_vorsorgeaufw_y_sn", -) -def einführung_vorsorgeaufw_y_sn_ab_2005_bis_2009( # noqa: PLR0913 - vorsorgeaufw_alter_y_sn: float, - ges_krankenv_beitr_arbeitnehmer_m_sn: float, - arbeitsl_v_beitr_arbeitnehmer_m_sn: float, - ges_pflegev_beitr_arbeitnehmer_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate Vorsorgeaufwendungen from 2005 to 2009, new mode. - - Parameters - ---------- - vorsorgeaufw_alter_y_sn - See :func:`vorsorgeaufw_alter_y_sn`. - ges_krankenv_beitr_arbeitnehmer_m_sn - See :func:`ges_krankenv_beitr_arbeitnehmer_m_sn`. - arbeitsl_v_beitr_arbeitnehmer_m_sn - See :func:`arbeitsl_v_beitr_arbeitnehmer_m_sn`. - ges_pflegev_beitr_arbeitnehmer_m_sn - See :func:`ges_pflegev_beitr_arbeitnehmer_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - sum_vorsorge = 12 * ( - ges_krankenv_beitr_arbeitnehmer_m_sn - + arbeitsl_v_beitr_arbeitnehmer_m_sn - + ges_pflegev_beitr_arbeitnehmer_m_sn - ) - max_value = anz_personen_sn * eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] - - sum_vorsorge = min(sum_vorsorge, max_value) - out = sum_vorsorge + vorsorgeaufw_alter_y_sn - - return out - - -@policy_function( - start_date="2005-01-01", - end_date="2019-12-31", - leaf_name="vorsorgeaufw_y_sn", - params_key_for_rounding="eink_st_abzuege", -) -def vorsorgeaufw_y_sn_guenstiger( - vorsorgeaufw_y_sn_bis_2004: float, - einführung_vorsorgeaufw_y_sn: float, -) -> float: - """Calculate Vorsorgeaufwendungen from 2005 to 2019. - - With the 2005 reform, no taxpayer was supposed to be affected negatively. - Therefore, one needs to compute amounts under the 2004 and 2005 regimes - and take the more favourable one. - - After a supreme court ruling, the 2005 rule had to be changed in 2010. - Therefore, one needs to compute amounts under the 2004 and 2010 regimes - and take the more favourable one. (§10 (3a) EStG). - - Sidenote: The 2010 rules are by construction at least as beneficial as - the 2005 regime, so there is no need for a separate check. - - Parameters - ---------- - vorsorgeaufw_y_sn - See :func:`vorsorgeaufw_y_sn`. - vorsorgeaufw_y_sn_bis_2004 - See :func:`vorsorgeaufw_y_sn_bis_2004`. - - Returns - ------- - - """ - - return max(vorsorgeaufw_y_sn_bis_2004, einführung_vorsorgeaufw_y_sn) - - -@policy_function( - start_date="2010-01-01", - end_date="2019-12-31", - leaf_name="einführung_vorsorgeaufw_y_sn", -) -def einführung_vorsorgeaufw_y_sn_ab_2010_bis_2019( - vorsorgeaufw_y_sn_ab_2020: float, -) -> float: - return vorsorgeaufw_y_sn_ab_2020 - - -@policy_function( - start_date="2020-01-01", - leaf_name="vorsorgeaufw_y_sn", - params_key_for_rounding="eink_st_abzuege", -) -def _vorsorgeaufw_y_sn_ab_2020(vorsorgeaufw_y_sn_ab_2020: float) -> float: - return vorsorgeaufw_y_sn_ab_2020 - - -def vorsorgeaufw_y_sn_ab_2020( # noqa: PLR0913 - vorsorgeaufw_alter_y_sn: float, - ges_pflegev_beitr_arbeitnehmer_m_sn: float, - ges_krankenv_beitr_arbeitnehmer_m_sn: float, - arbeitsl_v_beitr_arbeitnehmer_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate Vorsorgeaufwendungen since 2020. - - Vorsorgeaufwendungen after the regime implemented in 2010 is in full effect, - see § 10 (3) EStG. - - Parameters - ---------- - vorsorgeaufw_alter_y_sn - See :func:`vorsorgeaufw_alter_y_sn`. - ges_pflegev_beitr_arbeitnehmer_m_sn - See :func:`ges_pflegev_beitr_arbeitnehmer_m_sn`. - ges_krankenv_beitr_arbeitnehmer_m_sn - See :func:`ges_krankenv_beitr_arbeitnehmer_m_sn`. - arbeitsl_v_beitr_arbeitnehmer_m_sn - See :func:`arbeitsl_v_beitr_arbeitnehmer_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - - basiskrankenversicherung = 12 * ( - ges_pflegev_beitr_arbeitnehmer_m_sn - + (1 - eink_st_abzuege_params["vorsorge_kranken_minderung"]) - * ges_krankenv_beitr_arbeitnehmer_m_sn - ) - - sonst_vors_max = ( - eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] * anz_personen_sn - ) - sonst_vors_before_basiskrankenv = min( - 12 - * ( - arbeitsl_v_beitr_arbeitnehmer_m_sn - + ges_pflegev_beitr_arbeitnehmer_m_sn - + ges_krankenv_beitr_arbeitnehmer_m_sn - ), - sonst_vors_max, - ) - - # Basiskrankenversicherung can always be deducted even if above sonst_vors_max - sonst_vors = max(basiskrankenversicherung, sonst_vors_before_basiskrankenv) - - out = sonst_vors + vorsorgeaufw_alter_y_sn - return out - - -@policy_function( - start_date="2005-01-01", - end_date="2019-12-31", - leaf_name="vorsorgeaufw_y_sn_bis_2004", -) -def _vorsorgeaufw_y_sn_bis_2004( - _vorsorgeaufw_vom_lohn_y_sn_bis_2004: float, - ges_krankenv_beitr_arbeitnehmer_m_sn: float, - ges_rentenv_beitr_arbeitnehmer_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - return vorsorgeaufw_y_sn_bis_2004( - _vorsorgeaufw_vom_lohn_y_sn_bis_2004=_vorsorgeaufw_vom_lohn_y_sn_bis_2004, - ges_krankenv_beitr_arbeitnehmer_m_sn=ges_krankenv_beitr_arbeitnehmer_m_sn, - ges_rentenv_beitr_arbeitnehmer_m_sn=ges_rentenv_beitr_arbeitnehmer_m_sn, - anz_personen_sn=anz_personen_sn, - eink_st_abzuege_params=eink_st_abzuege_params, - ) - - -@policy_function( - end_date="2004-12-31", - leaf_name="vorsorgeaufw_y_sn", - params_key_for_rounding="eink_st_abzuege", -) -def vorsorgeaufw_y_sn_bis_2004( - _vorsorgeaufw_vom_lohn_y_sn_bis_2004: float, - ges_krankenv_beitr_arbeitnehmer_m_sn: float, - ges_rentenv_beitr_arbeitnehmer_m_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate Vorsorgeaufwendungen until 2004. - - Parameters - ---------- - _vorsorgeaufw_vom_lohn_y_sn_bis_2004 - See :func:`_vorsorgeaufw_vom_lohn_y_sn_bis_2004`. - ges_krankenv_beitr_arbeitnehmer_m_sn - See :func:`ges_krankenv_beitr_arbeitnehmer_m_sn`. - ges_rentenv_beitr_arbeitnehmer_m_sn - See :func:`ges_rentenv_beitr_arbeitnehmer_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - multiplikator1 = max( - ( - 12 - * ( - ges_rentenv_beitr_arbeitnehmer_m_sn - + ges_krankenv_beitr_arbeitnehmer_m_sn - ) - - _vorsorgeaufw_vom_lohn_y_sn_bis_2004 - ), - 0.0, - ) - - item_1 = (1 / anz_personen_sn) * multiplikator1 - - if item_1 > eink_st_abzuege_params["vorsorge_2004_grundhöchstbetrag"]: - multiplikator2 = eink_st_abzuege_params["vorsorge_2004_grundhöchstbetrag"] - else: - multiplikator2 = item_1 - - item_2 = (1 / anz_personen_sn) * multiplikator2 - - hoechstgrenze_item3 = ( - anz_personen_sn * eink_st_abzuege_params["vorsorge_2004_grundhöchstbetrag"] - ) - - if (item_1 - item_2) > hoechstgrenze_item3: - item_3 = 0.5 * hoechstgrenze_item3 - else: - item_3 = 0.5 * (item_1 - item_2) - - out = _vorsorgeaufw_vom_lohn_y_sn_bis_2004 + item_2 + item_3 - - return out - - -@policy_function(end_date="2019-12-31") -def _vorsorgeaufw_vom_lohn_y_sn_bis_2004( - bruttolohn_y_sn: float, - anz_personen_sn: int, - eink_st_abzuege_params: dict, -) -> float: - """Calculate precautionary expenditures until 2019 for singles. - - Parameters - ---------- - bruttolohn_m_sn - See :func:`bruttolohn_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - - """ - out = (1 / anz_personen_sn) * ( - anz_personen_sn * eink_st_abzuege_params["vorsorge2004_vorwegabzug"] - - eink_st_abzuege_params["vorsorge2004_kürzung_vorwegabzug"] * bruttolohn_y_sn - ) - - return max(out, 0.0) diff --git a/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py b/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py deleted file mode 100644 index c678c8273f..0000000000 --- a/src/_gettsim/taxes/zu_verst_eink/zu_verst_eink.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -Calculate taxable income (zve = zu versteuerndes Einkommen). The calculation -of the 7 branches of income is according to -https://de.wikipedia.org/wiki/Einkommensteuer_(Deutschland)#Rechenschema - -The income types 1 to 3 according to the law are subsumed under the first income typ -(business income). The distinction is important as there are different deduction rules -for each income type. In fact, you need several taxable incomes because of - -- child allowance vs. child benefit -- abgeltungssteuer vs. taxing capital income in the tariff ( not implemented yet, #81) - -It's always the most favorable for the taxpayer, but you know that only after -applying the tax schedule. -""" - -from _gettsim.functions.policy_function import policy_function - - -def freibeträge_ind_y( - _eink_st_behinderungsgrad_pauschbetrag_y: float, - eink_st_altersfreib_y: float, - alleinerz_freib_y_sn: float, -) -> float: - """Sum up all tax-deductible allowances applicable at the individual level. - - #ToDo: Check whether these columns are really calculated at the individual level. - Parameters - ---------- - - _eink_st_behinderungsgrad_pauschbetrag_y - See :func:`_eink_st_behinderungsgrad_pauschbetrag_y`. - eink_st_altersfreib_y - See :func:`eink_st_altersfreib_y`. - alleinerz_freib_y_sn - See :func:`alleinerz_freib_y_sn`. - - Returns - ------- - - """ - out = ( - _eink_st_behinderungsgrad_pauschbetrag_y - + eink_st_altersfreib_y - + alleinerz_freib_y_sn - ) - return out - - -def freibeträge_y_sn( - eink_st_sonderausgaben_y_sn: float, - vorsorgeaufw_y_sn: float, - freibeträge_ind_y_sn: float, -) -> float: - """Calculate total allowances on Steuernummer level. - - Parameters - ---------- - - eink_st_sonderausgaben_y_sn - See :func:`eink_st_sonderausgaben_y_sn`. - vorsorgeaufw_y_sn - See :func:`vorsorgeaufw_y_sn`. - freibeträge_ind_y_sn - See :func:`freibeträge_ind_y_sn`. - - Returns - ------- - - """ - out = eink_st_sonderausgaben_y_sn + vorsorgeaufw_y_sn + freibeträge_ind_y_sn - - return out - - -def _zu_verst_eink_ohne_kinderfreib_y_sn( - sum_eink_y_sn: float, - freibeträge_y_sn: float, -) -> float: - """Calculate taxable income without child allowance on Steuernummer level. - - Parameters - ---------- - sum_eink_y_sn - See :func:`sum_eink_y_sn`. - freibeträge_y_sn - See :func:`freibeträge_y_sn`. - - - Returns - ------- - - """ - out = sum_eink_y_sn - freibeträge_y_sn - - return max(out, 0.0) - - -def _zu_verst_eink_mit_kinderfreib_y_sn( - _zu_verst_eink_ohne_kinderfreib_y_sn: float, eink_st_kinderfreib_y_sn: float -) -> float: - """Calculate taxable income with child allowance on Steuernummer level. - - Parameters - ---------- - _zu_verst_eink_ohne_kinderfreib_y_sn - See :func:`_zu_verst_eink_ohne_kinderfreib_y_sn`. - eink_st_kinderfreib_y_sn - See :func:`eink_st_kinderfreib_y_sn`. - - Returns - ------- - - """ - - out = _zu_verst_eink_ohne_kinderfreib_y_sn - eink_st_kinderfreib_y_sn - return max(out, 0.0) - - -@policy_function(params_key_for_rounding="eink_st") -def zu_verst_eink_y_sn( - _zu_verst_eink_mit_kinderfreib_y_sn: float, - _zu_verst_eink_ohne_kinderfreib_y_sn: float, - kinderfreib_günstiger_sn: bool, -) -> float: - """Calculate taxable income on Steuernummer level. - - Parameters - ---------- - _zu_verst_eink_mit_kinderfreib_y_sn - See :func:`_zu_verst_eink_mit_kinderfreib_y_sn`. - _zu_verst_eink_ohne_kinderfreib_y_sn - See :func:`_zu_verst_eink_ohne_kinderfreib_y_sn`. - kinderfreib_günstiger_sn - See :func:`kinderfreib_günstiger_sn`. - - Returns - ------- - - """ - if kinderfreib_günstiger_sn: - out = _zu_verst_eink_mit_kinderfreib_y_sn - else: - out = _zu_verst_eink_ohne_kinderfreib_y_sn - - return out diff --git a/src/_gettsim/time_conversion.py b/src/_gettsim/time_conversion.py index 668ba4c6ea..06cad0b530 100644 --- a/src/_gettsim/time_conversion.py +++ b/src/_gettsim/time_conversion.py @@ -1,21 +1,21 @@ +from __future__ import annotations + import inspect import re -from collections.abc import Callable +from typing import TYPE_CHECKING -import optree +from dags import rename_arguments from _gettsim.config import ( SUPPORTED_GROUPINGS, SUPPORTED_TIME_UNITS, ) -from _gettsim.functions.derived_function import DerivedFunction -from _gettsim.functions.policy_function import PolicyFunction -from _gettsim.gettsim_typing import NestedDataDict, NestedFunctionDict -from _gettsim.shared import ( - insert_path_and_value, - rename_arguments_and_add_annotations, - upsert_path_and_value, -) +from _gettsim.function_types import DerivedTimeConversionFunction, PolicyFunction + +if TYPE_CHECKING: + from collections.abc import Callable + + from _gettsim.typing import QualNameDataDict, QualNameFunctionsDict _M_PER_Y = 12 _W_PER_Y = 365.25 / 7 @@ -231,9 +231,9 @@ def d_to_w(value: float) -> float: def create_time_conversion_functions( - functions_tree: NestedFunctionDict, - data_tree: NestedDataDict, -) -> NestedFunctionDict: + functions: QualNameFunctionsDict, + data: QualNameDataDict, +) -> QualNameFunctionsDict: """ Create functions that convert variables to different time units. @@ -260,64 +260,50 @@ def create_time_conversion_functions( Parameters ---------- - functions_tree - The functions tree. + functions + The functions dict with qualified function names as keys and functions as + values. data - The data tree. + The data dict with qualified data names as keys and pandas Series as values. Returns ------- - The functions tree with the new time conversion functions. + The functions dict with the new time conversion functions. """ converted_functions = {} - data_tree_paths = optree.tree_paths(data_tree, none_is_leaf=True) # Create time-conversions for existing functions - for path, function in zip(*optree.tree_flatten_with_path(functions_tree)[:2]): - leaf_name = path[-1] + for name, function in functions.items(): all_time_conversions_for_this_function = _create_time_conversion_functions( - name=leaf_name, func=function + name=name, func=function ) for der_name, der_func in all_time_conversions_for_this_function.items(): - new_path = [*path[:-1], der_name] # Skip if the function already exists or the data column exists - if new_path in optree.tree_paths(converted_functions) + data_tree_paths: + if der_name in converted_functions or der_name in data: continue else: - converted_functions = insert_path_and_value( - base=converted_functions, - path_to_insert=new_path, - value_to_insert=der_func, - ) + converted_functions[der_name] = der_func # Create time-conversions for data columns - for path in data_tree_paths: - leaf_name = path[-1] + for name in data: all_time_conversions_for_this_data_column = _create_time_conversion_functions( - name=leaf_name + name=name ) for der_name, der_func in all_time_conversions_for_this_data_column.items(): - new_path = [*path[:-1], der_name] # Skip if the function already exists or the data column exists - if new_path in optree.tree_paths(converted_functions) + data_tree_paths: + if der_name in converted_functions or der_name in data: continue else: - # Upsert because derived functions based on data should overwrite - # derived functions based on other functions. - converted_functions = upsert_path_and_value( - base=converted_functions, - path_to_upsert=new_path, - value_to_upsert=der_func, - ) + converted_functions[der_name] = der_func return converted_functions def _create_time_conversion_functions( name: str, func: PolicyFunction | None = None -) -> dict[str, DerivedFunction]: - result: dict[str, DerivedFunction] = {} +) -> dict[str, DerivedTimeConversionFunction]: + result: dict[str, DerivedTimeConversionFunction] = {} all_time_units = list(SUPPORTED_TIME_UNITS) @@ -350,13 +336,14 @@ def _create_time_conversion_functions( if new_name in dependencies: continue - result[new_name] = DerivedFunction( + result[new_name] = DerivedTimeConversionFunction( function=_create_function_for_time_unit( name, _time_conversion_functions[f"{time_unit}_to_{missing_time_unit}"], ), - leaf_name=new_name, - derived_from=func or name, + source=name, + source_function=func, + conversion_target=new_name, ) return result @@ -365,7 +352,7 @@ def _create_time_conversion_functions( def _create_function_for_time_unit( function_name: str, converter: Callable[[float], float] ) -> Callable[[float], float]: - @rename_arguments_and_add_annotations(mapper={"x": function_name}) + @rename_arguments(mapper={"x": function_name}) def func(x: float) -> float: return converter(x) diff --git a/src/_gettsim/transfers/arbeitsl_geld.py b/src/_gettsim/transfers/arbeitsl_geld.py deleted file mode 100644 index 5ee0dfcf73..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld.py +++ /dev/null @@ -1,217 +0,0 @@ -"""Functions to compute unemployment benefits (Arbeitslosengeld).""" - -from _gettsim.config import numpy_or_jax as np -from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.taxes.eink_st import _eink_st_tarif - - -def arbeitsl_geld_m( - _eink_st_kinderfreib_anz_ansprüche: int, - arbeitsl_geld_berechtigt: bool, - arbeitsl_geld_eink_vorj_proxy_m: float, - arbeitsl_geld_params: dict, -) -> float: - """Calculate individual unemployment benefit. - - Parameters - ---------- - _eink_st_kinderfreib_anz_ansprüche - See :func:`_eink_st_kinderfreib_anz_ansprüche`. - arbeitsl_geld_berechtigt - See :func:`arbeitsl_geld_berechtigt`. - arbeitsl_geld_eink_vorj_proxy_m - See :func:`arbeitsl_geld_eink_vorj_proxy_m`. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params `. - - Returns - ------- - - """ - - if _eink_st_kinderfreib_anz_ansprüche == 0: - arbeitsl_geld_satz = arbeitsl_geld_params["satz_ohne_kinder"] - elif _eink_st_kinderfreib_anz_ansprüche > 0: - arbeitsl_geld_satz = arbeitsl_geld_params["satz_mit_kindern"] - - if arbeitsl_geld_berechtigt: - out = arbeitsl_geld_eink_vorj_proxy_m * arbeitsl_geld_satz - else: - out = 0.0 - - return out - - -def arbeitsl_geld_restl_anspruchsd( - alter: int, - sozialv_pflicht_5j: float, - anwartschaftszeit: bool, - m_durchg_alg1_bezug: float, - arbeitsl_geld_params: dict, -) -> int: - """Calculate the remaining amount of months a person can receive unemployment - benefit this year. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - sozialv_pflicht_5j - See basic input variable :ref:`sozialv_pflicht_5j `. - anwartschaftszeit - See basic input variable :ref:`anwartschaftszeit `. - m_durchg_alg1_bezug - See basic input variable :ref:`m_durchg_alg1_bezug `. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params `. - - Returns - ------- - - """ - nach_alter = piecewise_polynomial( - alter, - thresholds=[ - *list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"]), - np.inf, - ], - rates=np.array( - [[0] * len(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"])] - ), - intercepts_at_lower_thresholds=list( - arbeitsl_geld_params["anspruchsdauer"]["nach_alter"].values() - ), - ) - nach_versich_pfl = piecewise_polynomial( - sozialv_pflicht_5j, - thresholds=[ - *list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" - ] - ), - np.inf, - ], - rates=np.array( - [ - [0] - * len( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" - ] - ) - ] - ), - intercepts_at_lower_thresholds=list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" - ].values() - ), - ) - if anwartschaftszeit: - anspruchsdauer_gesamt = min(nach_alter, nach_versich_pfl) - - if anwartschaftszeit: - out = max(anspruchsdauer_gesamt - m_durchg_alg1_bezug, 0) - else: - out = 0 - - return out - - -def arbeitsl_geld_berechtigt( # noqa: PLR0913 - alter: int, - arbeitssuchend: bool, - arbeitsl_geld_restl_anspruchsd: int, - arbeitsstunden_w: float, - arbeitsl_geld_params: dict, - ges_rente_regelaltersgrenze: float, -) -> bool: - """Check eligibility for unemployment benefit. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - arbeitssuchend - See basic input variable :ref:`arbeitssuchend `. - arbeitsl_geld_restl_anspruchsd - See :func:`arbeitsl_geld_restl_anspruchsd`. - arbeitsstunden_w - See basic input variable :ref:`arbeitsstunden_w `. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params `. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - - Returns - ------- - - """ - regelaltersgrenze = ges_rente_regelaltersgrenze - - out = ( - arbeitssuchend - and (arbeitsl_geld_restl_anspruchsd > 0) - and (alter < regelaltersgrenze) - and (arbeitsstunden_w < arbeitsl_geld_params["stundengrenze"]) - ) - - return out - - -def arbeitsl_geld_eink_vorj_proxy_m( - _ges_rentenv_beitr_bemess_grenze_m: float, - bruttolohn_vorj_m: float, - arbeitsl_geld_params: dict, - eink_st_params: dict, - eink_st_abzuege_params: dict, - soli_st_params: dict, -) -> float: - """Approximate last years income for unemployment benefit. - - Parameters - ---------- - _ges_rentenv_beitr_bemess_grenze_m - See :func:`_ges_rentenv_beitr_bemess_grenze_m`. - bruttolohn_vorj_m - See basic input variable :ref:`bruttolohn_vorj_m `. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params `. - eink_st_params - See params documentation :ref:`eink_st_params `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - soli_st_params - See params documentation :ref:`soli_st_params `. - - Returns - ------- - - """ - # Relevant wage is capped at the contribution thresholds - max_wage = min(bruttolohn_vorj_m, _ges_rentenv_beitr_bemess_grenze_m) - - # We need to deduct lump-sum amounts for contributions, taxes and soli - prox_ssc = arbeitsl_geld_params["sozialv_pausch"] * max_wage - - # Fictive taxes (Lohnsteuer) are approximated by applying the wage to the tax tariff - # Caution: currently wrong calculation due to - # 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"] not being - # the same as zu versteuerndes einkommen - # waiting for PR Lohnsteuer #150 to be merged to correct this problem - prox_tax = _eink_st_tarif( - 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"], - eink_st_params, - ) - prox_soli = piecewise_polynomial( - prox_tax, - thresholds=soli_st_params["soli_st"]["thresholds"], - rates=soli_st_params["soli_st"]["rates"], - intercepts_at_lower_thresholds=soli_st_params["soli_st"][ - "intercepts_at_lower_thresholds" - ], - ) - out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 - out = max(out, 0.0) - return out diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2.py b/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2.py deleted file mode 100644 index 449270ece7..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2.py +++ /dev/null @@ -1,85 +0,0 @@ -def arbeitsl_geld_2_m_bg( - arbeitsl_geld_2_vor_vorrang_m_bg: float, - wohngeld_vorrang_bg: bool, - kinderzuschl_vorrang_bg: bool, - wohngeld_kinderzuschl_vorrang_bg: bool, - erwachsene_alle_rentner_hh: bool, -) -> float: - """Calculate final monthly subsistence payment on household level. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_vor_vorrang_m_bg - See :func:`arbeitsl_geld_2_vor_vorrang_m_bg`. - wohngeld_vorrang_bg - See :func:`wohngeld_vorrang_bg`. - kinderzuschl_vorrang_bg - See :func:`kinderzuschl_vorrang_bg`. - wohngeld_kinderzuschl_vorrang_bg - See :func:`wohngeld_kinderzuschl_vorrang_bg`. - erwachsene_alle_rentner_hh - See :func:`erwachsene_alle_rentner_hh`. - - Returns - ------- - float with the income by unemployment insurance on household level. - - """ - # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im - # Alter (SGB XII) is implemented yet. We assume for now that households with only - # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All - # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is - # resolved, remove the `erwachsene_alle_rentner_hh` condition. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 - if ( - wohngeld_vorrang_bg - or kinderzuschl_vorrang_bg - or wohngeld_kinderzuschl_vorrang_bg - or erwachsene_alle_rentner_hh - ): - out = 0.0 - else: - out = arbeitsl_geld_2_vor_vorrang_m_bg - - return out - - -def arbeitsl_geld_2_vor_vorrang_m_bg( - arbeitsl_geld_2_regelbedarf_m_bg: float, - arbeitsl_geld_2_eink_m_bg: float, - vermögen_bedürft_bg: float, - arbeitsl_geld_2_vermög_freib_bg: float, -) -> float: - """Calculate potential basic subsistence (after income deduction and wealth check). - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - arbeitsl_geld_2_eink_m_bg - See :func:`arbeitsl_geld_2_eink_m_bg`. - arbeitsl_geld_2_vermög_freib_bg - See :func:`arbeitsl_geld_2_vermög_freib_bg`. - vermögen_bedürft_bg - See basic input variable :ref:`vermögen_bedürft_bg `. - - Returns - ------- - - """ - - # Check wealth exemption - if vermögen_bedürft_bg > arbeitsl_geld_2_vermög_freib_bg: - out = 0.0 - else: - # Deduct income from various sources - out = max( - 0.0, - arbeitsl_geld_2_regelbedarf_m_bg - arbeitsl_geld_2_eink_m_bg, - ) - - return out diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py b/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py deleted file mode 100644 index a43adb6d84..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld_2/arbeitsl_geld_2_eink.py +++ /dev/null @@ -1,306 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - - -def arbeitsl_geld_2_eink_m( - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - kindergeld_zur_bedarfsdeckung_m: float, - kindergeldübertrag_m: float, -) -> float: - """SGB II income. - - Relevant income according to SGB II. Includes child benefit transfer - (Kindergeldübertrag). - - Note: When aggregating this target to the household level, deduct - `_diff_kindergeld_kindbedarf_m_hh`. This is necessary because the Kindergeld - received by the child may enter `arbeitsl_geld_2_eink_m_hh` twice: once as - Kindergeld and once as Kindergeldübertrag. - - Parameters - ---------- - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - See :func:`arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m`. - kind_unterh_erhalt_m - See :func:`kind_unterh_erhalt_m`. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - kindergeld_zur_bedarfsdeckung_m - See :func:`kindergeld_zur_bedarfsdeckung_m`. - kindergeldübertrag_m - See :func:`kindergeldübertrag_m`. - - Returns - ------- - Income according to SGB II. - - """ - return ( - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - + kind_unterh_erhalt_m - + unterhaltsvors_m - + kindergeld_zur_bedarfsdeckung_m - + kindergeldübertrag_m - ) - - -def arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m( - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m: float, - arbeitsl_geld_2_eink_anr_frei_m: float, -) -> float: - """Net income after deductions for calculation of basic subsistence - (Arbeitslosengeld II / Bürgergeld). - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m - See :func:`arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m`. - arbeitsl_geld_2_eink_anr_frei_m - See :func:`arbeitsl_geld_2_eink_anr_frei_m`. - - Returns - ------- - Income after taxes, social insurance contributions, and other deductions. - - """ - return ( - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m - - arbeitsl_geld_2_eink_anr_frei_m - ) - - -def arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m( - arbeitsl_geld_2_bruttoeink_m: float, - eink_st_m_sn: float, - soli_st_m_sn: float, - anz_personen_sn: int, - sozialv_beitr_arbeitnehmer_m: float, -) -> float: - """Net income for calculation of basic subsistence (Arbeitslosengeld II / - Bürgergeld). - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_bruttoeink_m - See :func:`arbeitsl_geld_2_bruttoeink_m`. - eink_st_m_sn - See :func:`eink_st_m_sn`. - soli_st_m_sn - See :func:`soli_st_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - sozialv_beitr_arbeitnehmer_m - See :func:`sozialv_beitr_arbeitnehmer_m`. - - Returns - ------- - Income after taxes, social insurance contributions, and other deductions. - - """ - return ( - arbeitsl_geld_2_bruttoeink_m - - (eink_st_m_sn / anz_personen_sn) - - (soli_st_m_sn / anz_personen_sn) - - sozialv_beitr_arbeitnehmer_m - ) - - -def arbeitsl_geld_2_bruttoeink_m( # noqa: PLR0913 - bruttolohn_m: float, - sonstig_eink_m: float, - eink_selbst_m: float, - eink_vermietung_m: float, - kapitaleink_brutto_m: float, - sum_ges_rente_priv_rente_m: float, - arbeitsl_geld_m: float, - elterngeld_m: float, -) -> float: - """Sum up the gross income for calculation of basic subsistence. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`hh_id `. - sonstig_eink_m - See basic input variable :ref:`sonstig_eink_m `. - eink_selbst_m - See basic input variable :ref:`eink_selbst_m `. - eink_vermietung_m - See basic input variable :ref:`eink_vermietung_m `. - kapitaleink_brutto_m - See basic input variable :ref:`kapitaleink_brutto_m `. - sum_ges_rente_priv_rente_m - See basic input variable :ref:`sum_ges_rente_priv_rente_m - `. - arbeitsl_geld_m - See :func:`arbeitsl_geld_m`. - elterngeld_m - See :func:`elterngeld_m`. - - Returns - ------- - Income by unemployment insurance before tax. - - """ - out = ( - bruttolohn_m - + sonstig_eink_m - + eink_selbst_m - + eink_vermietung_m - + kapitaleink_brutto_m - + sum_ges_rente_priv_rente_m - + arbeitsl_geld_m - + elterngeld_m - ) - - return out - - -@policy_function(end_date="2005-09-30") -def arbeitsl_geld_2_nettoquote( # noqa: PLR0913 - bruttolohn_m: float, - eink_st_m_sn: float, - soli_st_m_sn: float, - anz_personen_sn: int, - sozialv_beitr_arbeitnehmer_m: float, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate share of net to gross wage. - - Quotienten von bereinigtem Nettoeinkommen und Bruttoeinkommen. § 3 Abs. 2 Alg II-V. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - eink_st_m_sn - See :func:`eink_st_m_sn`. - soli_st_m_sn - See :func:`soli_st_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - sozialv_beitr_arbeitnehmer_m - See :func:`sozialv_beitr_arbeitnehmer_m`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - # Bereinigtes monatliches Einkommen aus Erwerbstätigkeit nach § 11 Abs. 2 Nr. 1-5. - alg2_2005_bne = max( - ( - bruttolohn_m - - (eink_st_m_sn / anz_personen_sn) - - (soli_st_m_sn / anz_personen_sn) - - sozialv_beitr_arbeitnehmer_m - - arbeitsl_geld_2_params["abzugsfähige_pausch"]["werbung"] - - arbeitsl_geld_2_params["abzugsfähige_pausch"]["versicherung"] - ), - 0, - ) - - return alg2_2005_bne / bruttolohn_m - - -@policy_function( - end_date="2005-09-30", - leaf_name="arbeitsl_geld_2_eink_anr_frei_m", -) -def arbeitsl_geld_2_eink_anr_frei_m_basierend_auf_nettoquote( - bruttolohn_m: float, - arbeitsl_geld_2_nettoquote: float, - arbeitsl_geld_2_params: dict, -) -> float: - """Share of income which remains to the individual. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - arbeitsl_geld_2_nettoquote - See :func:`arbeitsl_geld_2_nettoquote`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - out = piecewise_polynomial( - x=bruttolohn_m, - thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ - "intercepts_at_lower_thresholds" - ], - rates_multiplier=arbeitsl_geld_2_nettoquote, - ) - return out - - -@policy_function(start_date="2005-10-01") -def arbeitsl_geld_2_eink_anr_frei_m( - bruttolohn_m: float, - eink_selbst_m: float, - anz_kinder_bis_17_bg: int, - _eink_st_kinderfreib_anz_ansprüche: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate share of income, which remains to the individual since 10/2005. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - Sozialgesetzbuch (SGB) Zweites Buch (II) - Bürgergeld, Grundsicherung für - Arbeitsuchende. SGB II §11b Abs 3 - https://www.gesetze-im-internet.de/sgb_2/__11b.html - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - eink_selbst_m - See basic input variable :ref:`eink_selbst_m `. - anz_kinder_bis_17_bg - See :func:`anz_kinder_bis_17_bg`. - _eink_st_kinderfreib_anz_ansprüche - See :func:`_eink_st_kinderfreib_anz_ansprüche`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - # Beneficiaries who live with a minor child in a group home or who have a minor - # child have slightly different thresholds. We currently do not consider the second - # condition. - eink_erwerbstätigkeit = bruttolohn_m + eink_selbst_m - - if anz_kinder_bis_17_bg > 0 or _eink_st_kinderfreib_anz_ansprüche > 0: - out = piecewise_polynomial( - x=eink_erwerbstätigkeit, - thresholds=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params[ - "eink_anr_frei_kinder" - ]["intercepts_at_lower_thresholds"], - ) - else: - out = piecewise_polynomial( - x=eink_erwerbstätigkeit, - thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ - "intercepts_at_lower_thresholds" - ], - ) - return out diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py b/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py deleted file mode 100644 index 65378a7fe8..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld_2/bedarf.py +++ /dev/null @@ -1,290 +0,0 @@ -"""Functions to calculate basic needs according to SGB II -(i.e., where Arbeitslosengeld 2 is defined).""" - -from _gettsim.functions.policy_function import policy_function - - -def arbeitsl_geld_2_regelbedarf_m( - arbeitsl_geld_2_regelsatz_m: float, - arbeitsl_geld_2_kost_unterk_m: float, -) -> float: - """Basic monthly subsistence level on individual level. - - This includes cost of dwelling. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld.: - - Parameters - ---------- - arbeitsl_geld_2_regelsatz_m - See :func:`arbeitsl_geld_2_regelsatz_m`. - arbeitsl_geld_2_kost_unterk_m - See :func:`arbeitsl_geld_2_kost_unterk_m`. - - Returns - ------- - float checks the minimum monthly needs of an household. - - """ - return arbeitsl_geld_2_regelsatz_m + arbeitsl_geld_2_kost_unterk_m - - -def _arbeitsl_geld_2_alleinerz_mehrbedarf_m( - alleinerz: bool, - anz_kinder_fg: int, - anz_kinder_bis_6_fg: int, - anz_kinder_bis_15_fg: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Compute additional SGB II need for single parents. - - Additional need for single parents. Maximum 60% of the standard amount on top if - you have at least one kid below 6 or two or three below 15, you get 36% - on top alternatively, you get 12% per kid, depending on what's higher. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - alleinerz - See :func:`alleinerz`. - anz_kinder_fg - See :func:`anz_kinder_fg`. - anz_kinder_bis_6_fg - See :func:`anz_kinder_bis_6_fg`. - anz_kinder_bis_15_fg - See :func:`anz_kinder_bis_15_fg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - - Returns - ------- - float checks how much more a single parent need. - - """ - if alleinerz: - # Clip value at calculated minimal share and given upper share - # Note that upper limit is applied last (for many children lower - # could be greater than upper) - out = min( - max( - # Minimal Mehrbedarf share. Minimal rate times number of children - arbeitsl_geld_2_params["mehrbedarf_anteil"]["min_1_kind"] - * anz_kinder_fg, - # Increased rated if children up to 6 and/or 2-3 up to 15 are present. - ( - arbeitsl_geld_2_params["mehrbedarf_anteil"][ - "kind_bis_6_oder_mehrere_bis_15" - ] - if (anz_kinder_bis_6_fg >= 1) or (2 <= anz_kinder_bis_15_fg <= 3) - else 0.0 - ), - ), - arbeitsl_geld_2_params["mehrbedarf_anteil"]["max"], - ) - else: - out = 0.0 - return out - - -@policy_function(end_date="2010-12-31", leaf_name="arbeitsl_geld_2_kindersatz_m") -def arbeitsl_geld_2_kindersatz_m_bis_2010( - alter: int, - same_fg_as_kindergeldempfänger: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Basic monthly subsistence / SGB II needs of children until 2010. - - Parameters - ---------- - alter - See basic input variable :ref:`alter`. - same_fg_as_kindergeldempfänger - See :func:`same_fg_as_kindergeldempfänger`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - float with SGB II needs of children until year 2010. - - """ - anteile = arbeitsl_geld_2_params["anteil_regelsatz_kinder"] - regelsatz = arbeitsl_geld_2_params["regelsatz"] - - if ( - alter >= anteile["kind_zwischen_14_und_24"]["min_alter"] - and alter <= anteile["kind_zwischen_14_und_24"]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out = regelsatz * anteile["kind_zwischen_14_und_24"]["anteil"] - elif ( - alter >= anteile["kind_zwischen_6_und_13"]["min_alter"] - and alter <= anteile["kind_zwischen_6_und_13"]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out = regelsatz * anteile["kind_zwischen_6_und_13"]["anteil"] - elif ( - alter >= anteile["kind_bis_5"]["min_alter"] - and alter <= anteile["kind_bis_5"]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out = regelsatz * anteile["kind_bis_5"]["anteil"] - else: - out = 0.0 - - return float(out) - - -@policy_function(start_date="2011-01-01", leaf_name="arbeitsl_geld_2_kindersatz_m") -def arbeitsl_geld_2_kindersatz_m_ab_2011( - alter: int, - same_fg_as_kindergeldempfänger: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Basic monthly subsistence / SGB II needs of children since 2011. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - alter - See basic input variable :ref:`alter`. - same_fg_as_kindergeldempfänger - See :func:`same_fg_as_kindergeldempfänger`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - SGB II needs of child - - """ - - out = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) - - if ( - alter >= arbeitsl_geld_2_params["regelsatz"][6]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][6]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out += arbeitsl_geld_2_params["regelsatz"][6]["betrag"] - elif ( - alter >= arbeitsl_geld_2_params["regelsatz"][5]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][5]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out += arbeitsl_geld_2_params["regelsatz"][5]["betrag"] - elif ( - alter >= arbeitsl_geld_2_params["regelsatz"][4]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][4]["max_alter"] - and same_fg_as_kindergeldempfänger - ): - out += arbeitsl_geld_2_params["regelsatz"][4]["betrag"] - elif same_fg_as_kindergeldempfänger: # adult children with parents in FG - out += arbeitsl_geld_2_params["regelsatz"][3] - else: - out = 0.0 - - return float(out) - - -@policy_function(end_date="2010-12-31", leaf_name="arbeitsl_geld_2_erwachsenensatz_m") -def arbeitsl_geld_2_erwachsenensatz_bis_2010_m( - _arbeitsl_geld_2_alleinerz_mehrbedarf_m: float, - arbeitsl_geld_2_kindersatz_m: float, - p_id_einstandspartner: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Basic monthly subsistence / SGB II needs for adults without dwelling. - - Parameters - ---------- - _arbeitsl_geld_2_alleinerz_mehrbedarf_m - See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m`. - arbeitsl_geld_2_kindersatz_m - See :func:`arbeitsl_geld_2_kindersatz_m`. - p_id_einstandspartner - See basic input variable :ref:`p_id_einstandspartner`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - # BG has 2 adults - if p_id_einstandspartner >= 0: - out = ( - arbeitsl_geld_2_params["regelsatz"] - * (arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"]) - ) - # This observation is not a child, so BG has 1 adult - elif arbeitsl_geld_2_kindersatz_m == 0.0: - out = arbeitsl_geld_2_params["regelsatz"] - else: - out = 0.0 - - return out * (1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m) - - -@policy_function(start_date="2011-01-01", leaf_name="arbeitsl_geld_2_erwachsenensatz_m") -def arbeitsl_geld_2_erwachsenensatz_ab_2011_m( - _arbeitsl_geld_2_alleinerz_mehrbedarf_m: float, - arbeitsl_geld_2_kindersatz_m: float, - p_id_einstandspartner: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Basic monthly subsistence / SGB II needs for adults without dwelling since 2011. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - _arbeitsl_geld_2_alleinerz_mehrbedarf_m - See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m`. - arbeitsl_geld_2_kindersatz_m - See :func:`arbeitsl_geld_2_kindersatz_m`. - p_id_einstandspartner - See basic input variable :ref:`p_id_einstandspartner`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - float with the minimum needs of an household in Euro. - - """ - # BG has 2 adults - if p_id_einstandspartner >= 0: - out = arbeitsl_geld_2_params["regelsatz"][2] - # This observation is not a child, so BG has 1 adult - elif arbeitsl_geld_2_kindersatz_m == 0.0: - out = arbeitsl_geld_2_params["regelsatz"][1] - else: - out = 0.0 - - return out * (1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m) - - -def arbeitsl_geld_2_regelsatz_m( - arbeitsl_geld_2_erwachsenensatz_m: float, - arbeitsl_geld_2_kindersatz_m: float, -) -> float: - """Calculate basic monthly subsistence without dwelling until 2010. - - Parameters - ---------- - arbeitsl_geld_2_erwachsenensatz_m - See :func:`arbeitsl_geld_2_erwachsenensatz_m`. - arbeitsl_geld_2_kindersatz_m - See :func:`arbeitsl_geld_2_kindersatz_m`. - - Returns - ------- - - - """ - - return arbeitsl_geld_2_erwachsenensatz_m + arbeitsl_geld_2_kindersatz_m diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py b/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py deleted file mode 100644 index e5edbf2ae1..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld_2/kindergelduebertrag.py +++ /dev/null @@ -1,196 +0,0 @@ -"""Module for the calculation of the Kindergeldübertrag.""" - -import numpy - -from _gettsim.functions.policy_function import policy_function -from _gettsim.shared import join_numpy - -aggregate_by_p_id_kindergeldübertrag = { - "kindergeldübertrag_m": { - "p_id_to_aggregate_by": "p_id_kindergeld_empf", - "source_col": "_diff_kindergeld_kindbedarf_m", - "aggr": "sum", - }, -} - - -@policy_function(end_date="2022-12-31", leaf_name="_mean_kindergeld_per_child_m") -def _mean_kindergeld_per_child_gestaffelt_m( - kindergeld_m: float, - kindergeld_anz_ansprüche: int, -) -> float: - """Kindergeld per child. - - Returns the average Kindergeld per child. If there are no children, the function - returns 0. Helper function for `kindergeld_zur_bedarfsdeckung_m`. - - Parameters - ---------- - kindergeld_m - See :func:`kindergeld_m`. - kindergeld_anz_ansprüche - See :func:`kindergeld_anz_ansprüche`. - - Returns - ------- - - """ - if kindergeld_anz_ansprüche > 0: - out = kindergeld_m / kindergeld_anz_ansprüche - else: - out = 0.0 - return out - - -@policy_function(start_date="2023-01-01", leaf_name="_mean_kindergeld_per_child_m") -def _mean_kindergeld_per_child_ohne_staffelung_m( - kindergeld_params: dict, - kindergeld_anz_ansprüche: int, -) -> float: - """Kindergeld per child. - - Returns the (average) Kindergeld per child. Helper function for - `kindergeld_zur_bedarfsdeckung_m`. - - Parameters - ---------- - kindergeld_params - See params documentation :ref:`kindergeld_params `. - alter - See basic input variable :ref:`alter`. - - Returns - ------- - - """ - return kindergeld_params["kindergeld"] if kindergeld_anz_ansprüche > 0 else 0.0 - - -@policy_function(skip_vectorization=True) -def kindergeld_zur_bedarfsdeckung_m( - _mean_kindergeld_per_child_m: float, - p_id_kindergeld_empf: numpy.ndarray[int], - p_id: numpy.ndarray[int], -) -> numpy.ndarray[float]: - """Kindergeld that is used to cover the SGB II Regelbedarf of the child. - - Even though the Kindergeld is paid to the parent (see function - :func:`kindergeld_m`), the child that gives rise to the Kindergeld claim is entitled - to it to cover its needs (§ 11 Abs. 1 Satz 5 SGB II). The amount of Kindergeld for - which the child is entitled to is the sum of the Kindergeld for all children divided - by the amount of children. Hence, the age of the child (in comparison to siblings) - does not matter. - - Parameters - ---------- - kindergeld_m - See :func:`kindergeld_m`. - p_id_kindergeld_empf - See :func:`p_id_kindergeld_empf`. - p_id - See :func:`p_id`. - - Returns - ------- - - """ - return join_numpy( - p_id_kindergeld_empf, - p_id, - _mean_kindergeld_per_child_m, - value_if_foreign_key_is_missing=0.0, - ) - - -def _diff_kindergeld_kindbedarf_m( # noqa: PLR0913 - arbeitsl_geld_2_regelbedarf_m_bg: float, - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: float, - wohngeld_anspruchshöhe_m_bg: float, - kindergeld_zur_bedarfsdeckung_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - _in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger: bool, -) -> float: - """Kindergeld that is used to cover the needs (SGB II) of the parent. - - If a child does not need all of the Kindergeld to cover its own needs (SGB II), the - remaining Kindergeld is used to cover the needs of the parent (§ 11 Abs. 1 Satz 5 - SGB II). - - Kindergeldübertrag (`kindergeldübertrag_m`) is obtained by aggregating this function - to the parental level. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - See :func:`_arbeitsl_geld_2 - wohngeld_anspruchshöhe_m_bg - See :func:`wohngeld_anspruchshöhe_m_bg`. - kindergeld_zur_bedarfsdeckung_m - See :func:`kindergeld_zur_bedarfsdeckung_m`. - kind_unterh_erhalt_m - See :func:`kind_unterh_erhalt_m`. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - _in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger - See :func:`_in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger`. - - Returns - ------- - - """ - fehlbetrag = max( - arbeitsl_geld_2_regelbedarf_m_bg - - wohngeld_anspruchshöhe_m_bg - - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - - kind_unterh_erhalt_m - - unterhaltsvors_m, - 0.0, - ) - # Bedarf not covered or same Bedarfsgemeinschaft as parents - if ( - not _in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger - or fehlbetrag > kindergeld_zur_bedarfsdeckung_m - ): - out = 0.0 - # Bedarf is covered - else: - out = kindergeld_zur_bedarfsdeckung_m - fehlbetrag - return out - - -@policy_function(skip_vectorization=True) -def _in_anderer_bedarfsgemeinschaft_als_kindergeldempfänger( - p_id: numpy.ndarray[int], - p_id_kindergeld_empf: numpy.ndarray[int], - bg_id: numpy.ndarray[int], -) -> numpy.ndarray[bool]: - """True if the person is in a different Bedarfsgemeinschaft than the - Kindergeldempfänger of that person. - - Parameters - ---------- - p_id - See basic input variable :ref:`p_id ` - p_id_kindergeld_empf - See basic input variable :ref:`p_id_kindergeld_empf ` - bg_id - See :func:`bg_id`. - - Returns - ------- - - """ - # Create a dictionary to map p_id to bg_id - p_id_to_bg_id = dict(zip(p_id, bg_id)) - - # Map each p_id_kindergeld_empf to its corresponding bg_id - empf_bg_id = [ - p_id_to_bg_id[empfänger_id] if empfänger_id >= 0 else -1 - for empfänger_id in p_id_kindergeld_empf - ] - - # Compare bg_id array with the mapped bg_ids of p_id_kindergeld_empf - return bg_id != empf_bg_id diff --git a/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py b/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py deleted file mode 100644 index 9c3b13bded..0000000000 --- a/src/_gettsim/transfers/arbeitsl_geld_2/kost_unterk.py +++ /dev/null @@ -1,215 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(end_date="2022-12-31", leaf_name="arbeitsl_geld_2_kost_unterk_m") -def arbeitsl_geld_2_kost_unterk_m_bis_2022( - _arbeitsl_geld_2_berechtigte_wohnfläche: float, - _arbeitsl_geld_2_warmmiete_pro_qm_m: float, -) -> float: - """Calculate costs of living eligible to claim until 2022. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - Parameters - ---------- - _arbeitsl_geld_2_berechtigte_wohnfläche - See :func:`_arbeitsl_geld_2_berechtigte_wohnfläche`. - _arbeitsl_geld_2_warmmiete_pro_qm_m - See :func:`_arbeitsl_geld_2_warmmiete_pro_qm_m`. - - Returns - ------- - float with total monthly cost of rent. - - """ - return _arbeitsl_geld_2_berechtigte_wohnfläche * _arbeitsl_geld_2_warmmiete_pro_qm_m - - -@policy_function(start_date="2023-01-01", leaf_name="arbeitsl_geld_2_kost_unterk_m") -def arbeitsl_geld_2_kost_unterk_m_ab_2023( - bruttokaltmiete_m: float, - heizkosten_m: float, - bürgerg_bezug_vorj: bool, - _arbeitsl_geld_2_berechtigte_wohnfläche: float, - _arbeitsl_geld_2_warmmiete_pro_qm_m: float, -) -> float: - """Calculate costs of living eligible to claim since 2023. During the first year, - the waiting period (Karenzzeit), only the appropriateness of the heating costs is - tested, while the living costs are fully considered in Bürgergeld. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttokaltmiete_m - See :func:`bruttokaltmiete_m`. - heizkosten_m - See :func:`heizkosten_m`. - bürgerg_bezug_vorj - See basic input variable :ref:`bürgerg_bezug_vorj `. - _arbeitsl_geld_2_berechtigte_wohnfläche - See :func:`_arbeitsl_geld_2_berechtigte_wohnfläche`. - _arbeitsl_geld_2_warmmiete_pro_qm_m - See :func:`_arbeitsl_geld_2_warmmiete_pro_qm_m`. - - Returns - ------- - float with total monthly cost of rent. - - """ - if bürgerg_bezug_vorj: - out = ( - _arbeitsl_geld_2_berechtigte_wohnfläche - * _arbeitsl_geld_2_warmmiete_pro_qm_m - ) - else: - out = bruttokaltmiete_m + heizkosten_m - - return out - - -def _arbeitsl_geld_2_warmmiete_pro_qm_m( - bruttokaltmiete_m: float, - heizkosten_m: float, - wohnfläche: float, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate rent per square meter. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttokaltmiete_m - See :func:`bruttokaltmiete_m`. - heizkosten_m - See :func:`heizkosten_m`. - wohnfläche - See function :func:`wohnfläche`. - - Returns - ------- - Integer with the total amount of rental costs per squaremeter. - - """ - out = (bruttokaltmiete_m + heizkosten_m) / wohnfläche - - # Consider maximum considered rent per square meter - out = min(out, arbeitsl_geld_2_params["max_miete_pro_qm"]["max"]) - - return out - - -def _arbeitsl_geld_2_berechtigte_wohnfläche( - wohnfläche: float, - bewohnt_eigentum_hh: bool, - anz_personen_hh: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate size of dwelling eligible to claim. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - wohnfläche - See function :func:`wohnfläche`. - bewohnt_eigentum_hh - See basic input variable :ref:`bewohnt_eigentum_hh `. - anz_personen_hh - See :func:`anz_personen_hh`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - Integer with the number of squaremeters. - - """ - - params = arbeitsl_geld_2_params["berechtigte_wohnfläche_eigentum"] - max_anzahl_direkt = params["max_anzahl_direkt"] - if bewohnt_eigentum_hh: - if anz_personen_hh <= max_anzahl_direkt: - maximum = params[anz_personen_hh] - else: - maximum = ( - params[max_anzahl_direkt] - + (anz_personen_hh - max_anzahl_direkt) * params["je_weitere_person"] - ) - else: - maximum = ( - arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"]["single"] - + max(anz_personen_hh - 1, 0) - * arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"][ - "je_weitere_person" - ] - ) - return min(wohnfläche, maximum / anz_personen_hh) - - -def bruttokaltmiete_m( - bruttokaltmiete_m_hh: float, - anz_personen_hh: int, -) -> float: - """Monthly rent attributed to a single person. - - Reference: - BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. - BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. - - Parameters - ---------- - bruttokaltmiete_m_hh - See basic input variable :ref:`bruttokaltmiete_m_hh `. - anz_personen_hh - See :func:`anz_personen_hh`. - - Returns - ------- - - """ - return bruttokaltmiete_m_hh / anz_personen_hh - - -def heizkosten_m( - heizkosten_m_hh: float, - anz_personen_hh: int, -) -> float: - """Monthly heating expenses attributed to a single person. - - Reference: - BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. - BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. - - Parameters - ---------- - heizkosten_m_hh - See basic input variable :ref:`heizkosten_m_hh `. - anz_personen_hh - See :func:`anz_personen_hh`. - - Returns - ------- - - """ - return heizkosten_m_hh / anz_personen_hh - - -def wohnfläche( - wohnfläche_hh: float, - anz_personen_hh: int, -) -> float: - """Share of household's dwelling size attributed to a single person. - - Parameters - ---------- - wohnfläche_hh - See basic input variable :ref:`wohnfläche_hh `. - anz_personen_hh - See :func:`anz_personen_hh`. - - Returns - ------- - - """ - return wohnfläche_hh / anz_personen_hh diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/__init__.py b/src/_gettsim/transfers/arbeitslosengeld_2/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py new file mode 100644 index 0000000000..954257f8a8 --- /dev/null +++ b/src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -0,0 +1,94 @@ +"""Monthly SGB II subsitence payment (Arbeitslosengeld II). + +Note: Since 2023, Arbeitslosengeld II is referred to as Bürgergeld. +""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_m_bg( + anspruchshöhe_m_bg: float, + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, + vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, + erwachsene_alle_rentenbezieher_hh: bool, +) -> float: + """Calculate final monthly subsistence payment on household level. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + anspruchshöhe_m_bg + See :func:`anspruchshöhe_m_bg`. + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg + See :func:`vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg`. + vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + See :func:`vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + See :func:`vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. + erwachsene_alle_rentenbezieher_hh + See :func:`erwachsene_alle_rentenbezieher_hh`. + + Returns + ------- + float with the income by unemployment insurance on household level. + + """ + # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im + # Alter (SGB XII) is implemented yet. We assume for now that households with only + # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All + # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is + # resolved, remove the `erwachsene_alle_rentenbezieher_hh` condition. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + if ( + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg + or vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + or erwachsene_alle_rentenbezieher_hh + ): + out = 0.0 + else: + out = anspruchshöhe_m_bg + + return out + + +@policy_function() +def anspruchshöhe_m_bg( + regelbedarf_m_bg: float, + anzurechnendes_einkommen_m_bg: float, + vermögen_bg: float, + freibetrag_vermögen_bg: float, +) -> float: + """Calculate potential basic subsistence (after income deduction and wealth check). + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + regelbedarf_m_bg + See :func:`regelbedarf_m_bg`. + anzurechnendes_einkommen_m_bg + See :func:`anzurechnendes_einkommen_m_bg`. + freibetrag_vermögen_bg + See :func:`freibetrag_vermögen_bg`. + vermögen_bg + See basic input variable :ref:`vermögen_bg `. + + Returns + ------- + + """ + # Check wealth exemption + if vermögen_bg > freibetrag_vermögen_bg: + out = 0.0 + else: + # Deduct income from various sources + out = max( + 0.0, + regelbedarf_m_bg - anzurechnendes_einkommen_m_bg, + ) + + return out diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py b/src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py new file mode 100644 index 0000000000..9aef2dbb56 --- /dev/null +++ b/src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py @@ -0,0 +1,318 @@ +"""Income relevant for calculation of Arbeitslosengeld II / Bürgergeld.""" + +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + + +@policy_function() +def anzurechnendes_einkommen_m( + nettoeinkommen_nach_abzug_freibetrag_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + kindergeld_zur_bedarfsdeckung_m: float, + kindergeldübertrag_m: float, +) -> float: + """Relevant income according to SGB II. + + Note: If you are using GETTSIM and want to aggregate to BG/HH level (which is never + required by the rules of the taxes and transfers system), you need to deduct + `differenz_kindergeld_kindbedarf_m_hh` from the result of this function. This is + necessary because the Kindergeld received by the child may enter + `anzurechnendes_einkommen_m_hh` twice: once as Kindergeld and once as + Kindergeldübertrag. + + Parameters + ---------- + nettoeinkommen_nach_abzug_freibetrag_m + See :func:`nettoeinkommen_nach_abzug_freibetrag_m`. + unterhalt__tatsächlich_erhaltener_betrag_m + See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + kindergeld_zur_bedarfsdeckung_m + See :func:`kindergeld_zur_bedarfsdeckung_m`. + kindergeldübertrag_m + See :func:`kindergeldübertrag_m`. + + Returns + ------- + Income according to SGB II. + + """ + return ( + nettoeinkommen_nach_abzug_freibetrag_m + + unterhalt__tatsächlich_erhaltener_betrag_m + + unterhaltsvorschuss__betrag_m + + kindergeld_zur_bedarfsdeckung_m + + kindergeldübertrag_m + ) + + +@policy_function() +def nettoeinkommen_nach_abzug_freibetrag_m( + nettoeinkommen_vor_abzug_freibetrag_m: float, + anrechnungsfreies_einkommen_m: float, +) -> float: + """Net income after deductions for calculation of basic subsistence + (Arbeitslosengeld II / Bürgergeld). + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + nettoeinkommen_vor_abzug_freibetrag_m + See :func:`nettoeinkommen_vor_abzug_freibetrag_m`. + anrechnungsfreies_einkommen_m + See :func:`anrechnungsfreies_einkommen_m`. + + Returns + ------- + Income after taxes, social insurance contributions, and other deductions. + + """ + return nettoeinkommen_vor_abzug_freibetrag_m - anrechnungsfreies_einkommen_m + + +@policy_function() +def nettoeinkommen_vor_abzug_freibetrag_m( + bruttoeinkommen_m: float, + einkommensteuer__betrag_m_sn: float, + solidaritätszuschlag__betrag_m_sn: float, + einkommensteuer__anzahl_personen_sn: int, + sozialversicherung__beiträge_versicherter_m: float, +) -> float: + """Net income for calculation of basic subsistence (Arbeitslosengeld II / + Bürgergeld). + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + bruttoeinkommen_m + See :func:`bruttoeinkommen_m`. + einkommensteuer__betrag_m_sn + See :func:`einkommensteuer__betrag_m_sn`. + solidaritätszuschlag__betrag_m_sn + See :func:`solidaritätszuschlag__betrag_m_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + sozialversicherung__beiträge_versicherter_m + See :func:`sozialversicherung__beiträge_versicherter_m`. + + Returns + ------- + Income after taxes, social insurance contributions, and other deductions. + + """ + return ( + bruttoeinkommen_m + - (einkommensteuer__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - (solidaritätszuschlag__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - sozialversicherung__beiträge_versicherter_m + ) + + +@policy_function() +def bruttoeinkommen_m( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__arbeitslosen__betrag_m: float, + elterngeld__betrag_m: float, +) -> float: + """Sum up the gross income for calculation of basic subsistence. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`hh_id `. + einkommensteuer__einkünfte__sonstige__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__sonstige__betrag_m `. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m `. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m `. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. + sozialversicherung__rente__altersrente__betrag_m + See :func:`sozialversicherung__rente__altersrente__betrag_m`. + sozialversicherung__rente__private_rente_betrag_m + See :func:`sozialversicherung__rente__private_rente_betrag_m`. + sozialversicherung__arbeitslosen__betrag_m + See :func:`sozialversicherung__arbeitslosen__betrag_m`. + elterngeld__betrag_m + See :func:`elterngeld__betrag_m`. + + Returns + ------- + Income by unemployment insurance before tax. + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__private_rente_betrag_m + + sozialversicherung__arbeitslosen__betrag_m + + elterngeld__betrag_m + ) + + return out + + +@policy_function(end_date="2005-09-30") +def nettoquote_m( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommensteuer__betrag_m_sn: float, + solidaritätszuschlag__betrag_m_sn: float, + einkommensteuer__anzahl_personen_sn: int, + sozialversicherung__beiträge_versicherter_m: float, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate share of net to gross wage. + + Quotienten von bereinigtem Nettoeinkommen und Bruttoeinkommen. § 3 Abs. 2 Alg II-V. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + einkommensteuer__betrag_m_sn + See :func:`einkommensteuer__betrag_m_sn`. + solidaritätszuschlag__betrag_m_sn + See :func:`solidaritätszuschlag__betrag_m_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + sozialversicherung__beiträge_versicherter_m + See :func:`sozialversicherung__beiträge_versicherter_m`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + # Bereinigtes monatliches Einkommen aus Erwerbstätigkeit nach § 11 Abs. 2 Nr. 1-5. + alg2_2005_bne = max( + ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - (einkommensteuer__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - (solidaritätszuschlag__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - sozialversicherung__beiträge_versicherter_m + - arbeitsl_geld_2_params["abzugsfähige_pausch"]["werbung"] + - arbeitsl_geld_2_params["abzugsfähige_pausch"]["versicherung"] + ), + 0, + ) + + return ( + alg2_2005_bne + / einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + + +@policy_function( + end_date="2005-09-30", + leaf_name="anrechnungsfreies_einkommen_m", +) +def anrechnungsfreies_einkommen_m_basierend_auf_nettoquote( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + nettoquote_m: float, + arbeitsl_geld_2_params: dict, +) -> float: + """Share of income which remains to the individual. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + nettoquote_m + See :func:`nettoquote_m`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + out = piecewise_polynomial( + x=einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, + thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], + rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], + intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ + "intercepts_at_lower_thresholds" + ], + rates_multiplier=nettoquote_m, + ) + return out + + +@policy_function(start_date="2005-10-01") +def anrechnungsfreies_einkommen_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + anzahl_kinder_bis_17_bg: int, + einkommensteuer__anzahl_kinderfreibeträge: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate share of income, which remains to the individual since 10/2005. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + Sozialgesetzbuch (SGB) Zweites Buch (II) - Bürgergeld, Grundsicherung für + Arbeitsuchende. SGB II §11b Abs 3 + https://www.gesetze-im-internet.de/sgb_2/__11b.html + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m `. + anzahl_kinder_bis_17_bg + See :func:`anzahl_kinder_bis_17_bg`. + einkommensteuer__anzahl_kinderfreibeträge + See :func: + `einkommensteuer__anzahl_kinderfreibeträge`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + # Beneficiaries who live with a minor child in a group home or who have a minor + # child have slightly different thresholds. We currently do not consider the second + # condition. + eink_erwerbstätigkeit = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + ) + + if anzahl_kinder_bis_17_bg > 0 or einkommensteuer__anzahl_kinderfreibeträge > 0: + out = piecewise_polynomial( + x=eink_erwerbstätigkeit, + thresholds=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["thresholds"], + rates=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["rates"], + intercepts_at_lower_thresholds=arbeitsl_geld_2_params[ + "eink_anr_frei_kinder" + ]["intercepts_at_lower_thresholds"], + ) + else: + out = piecewise_polynomial( + x=eink_erwerbstätigkeit, + thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], + rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], + intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ + "intercepts_at_lower_thresholds" + ], + ) + return out diff --git "a/src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" new file mode 100644 index 0000000000..6f7ad8a300 --- /dev/null +++ "b/src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -0,0 +1,201 @@ +"""Wealth checks for Arbeitslosengeld II/Bürgergeld.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def grundfreibetrag_vermögen( + familie__kind: bool, + alter: int, + geburtsjahr: int, + maximaler_grundfreibetrag_vermögen: float, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate wealth exemptions based on individuals age. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + familie__kind + See basic input variable :ref:`familie__kind `. + alter + See basic input variable :ref:`alter `. + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + maximaler_grundfreibetrag_vermögen + See :func:`maximaler_grundfreibetrag_vermögen`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + threshold_years = list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].keys()) + if geburtsjahr <= threshold_years[0]: + out = ( + next(iter(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())) + * alter + ) + elif (geburtsjahr >= threshold_years[1]) and (not familie__kind): + out = ( + list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())[1] * alter + ) + else: + out = 0.0 + + return float(min(out, maximaler_grundfreibetrag_vermögen)) + + +@policy_function() +def maximaler_grundfreibetrag_vermögen( + geburtsjahr: int, + familie__kind: bool, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate maximal wealth exemptions by year of birth. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + hh_id + See basic input variable :ref:`hh_id `. + geburtsjahr + See basic input variable :ref:`geburtsjahr `. + familie__kind + See basic input variable :ref:`familie__kind `. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + threshold_years = list( + arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].keys() + ) + obergrenzen = list( + arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].values() + ) + if familie__kind: + out = 0.0 + else: + if geburtsjahr < threshold_years[1]: + out = obergrenzen[0] + elif geburtsjahr < threshold_years[2]: + out = obergrenzen[1] + elif geburtsjahr < threshold_years[3]: + out = obergrenzen[2] + else: + out = obergrenzen[3] + + return float(out) + + +@policy_function(start_date="2023-01-01") +def freibetrag_vermögen_in_karenzzeit_bg( + arbeitsl_geld_2_params: dict, + anzahl_personen_bg: int, +) -> float: + """Calculate wealth exemptions since 2023 during Karenzzeit. This variable is also + reffered to as 'erhebliches Vermögen'. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params + `. + anzahl_personen_bg + See :func:`anzahl_personen_bg`. + arbeitslosengeld_2_bezug_im_vorjahr + See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr `. + + + Returns + ------- + + """ + params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] + out = ( + params["während_karenzzeit"] + + (anzahl_personen_bg - 1) * params["normaler_satz"] + ) + + return out + + +@policy_function(end_date="2022-12-31", leaf_name="freibetrag_vermögen_bg") +def freibetrag_vermögen_bg_bis_2022( + grundfreibetrag_vermögen_bg: float, + anzahl_kinder_bis_17_bg: int, + anzahl_personen_bg: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate actual exemptions until 2022. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + grundfreibetrag_vermögen_bg + See :func:`grundfreibetrag_vermögen_bg`. + anzahl_kinder_bis_17_bg + See :func:`anzahl_kinder_bis_17_bg`. + anzahl_personen_bg + See :func:`anzahl_personen_bg`. + + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + out = ( + grundfreibetrag_vermögen_bg + + anzahl_kinder_bis_17_bg * arbeitsl_geld_2_params["vermögensfreibetrag_kind"] + + anzahl_personen_bg * arbeitsl_geld_2_params["vermögensfreibetrag_austattung"] + ) + return out + + +@policy_function(start_date="2023-01-01", leaf_name="freibetrag_vermögen_bg") +def freibetrag_vermögen_bg_ab_2023( + arbeitsl_geld_2_params: dict, + anzahl_personen_bg: int, + freibetrag_vermögen_in_karenzzeit_bg: float, + arbeitslosengeld_2_bezug_im_vorjahr: bool, +) -> float: + """Calculate actual wealth exemptions since 2023. + + During the first year (Karenzzeit), the wealth exemption is substantially larger. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + anzahl_personen_bg + See :func:`anzahl_personen_bg`. + freibetrag_vermögen_in_karenzzeit_bg + See :func:`freibetrag_vermögen_in_karenzzeit_bg`. + arbeitslosengeld_2_bezug_im_vorjahr + See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr `. + + + Returns + ------- + + """ + params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] + if arbeitslosengeld_2_bezug_im_vorjahr: + out = anzahl_personen_bg * params["normaler_satz"] + else: + out = freibetrag_vermögen_in_karenzzeit_bg + + return out diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py new file mode 100644 index 0000000000..d256cc9db6 --- /dev/null +++ b/src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py @@ -0,0 +1,198 @@ +from collections import Counter + +import numpy + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import group_by_function + +# TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 +aggregation_specs = { + "anzahl_erwachsene_fg": AggregateByGroupSpec( + source="familie__erwachsen", + aggr="sum", + ), + "anzahl_kinder_fg": AggregateByGroupSpec( + source="familie__kind", + aggr="sum", + ), + "anzahl_kinder_bis_6_fg": AggregateByGroupSpec( + source="familie__kind_bis_6", + aggr="sum", + ), + "anzahl_kinder_bis_15_fg": AggregateByGroupSpec( + source="familie__kind_bis_15", + aggr="sum", + ), + "anzahl_erwachsene_bg": AggregateByGroupSpec( + source="familie__erwachsen", + aggr="sum", + ), + "anzahl_kinder_bg": AggregateByGroupSpec( + source="familie__kind", + aggr="sum", + ), + "anzahl_personen_bg": AggregateByGroupSpec( + aggr="count", + ), + "anzahl_kinder_bis_17_bg": AggregateByGroupSpec( + source="familie__kind_bis_17", + aggr="sum", + ), + "alleinerziehend_bg": AggregateByGroupSpec( + source="familie__alleinerziehend", + aggr="any", + ), + "anzahl_erwachsene_eg": AggregateByGroupSpec( + source="familie__erwachsen", + aggr="sum", + ), + "anzahl_kinder_eg": AggregateByGroupSpec( + source="familie__kind", + aggr="sum", + ), + "anzahl_personen_eg": AggregateByGroupSpec( + aggr="count", + ), +} + + +@group_by_function() +def bg_id( + fg_id: numpy.ndarray[int], + eigenbedarf_gedeckt: numpy.ndarray[bool], + alter: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the ID of the Bedarfsgemeinschaft for each person. + """ + # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt + # once Bedarfsgemeinschaften are fully endogenous + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + counter = Counter() + result = [] + + for index, current_fg_id in enumerate(fg_id): + current_alter = alter[index] + current_eigenbedarf_gedeckt = eigenbedarf_gedeckt[index] + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + if current_alter < 25 and current_eigenbedarf_gedeckt: + counter[current_fg_id] += 1 + result.append(current_fg_id * 100 + counter[current_fg_id]) + else: + result.append(current_fg_id * 100) + + return numpy.asarray(result) + + +@group_by_function() +def fg_id( # noqa: PLR0913 + p_id_einstandspartner: numpy.ndarray[int], + p_id: numpy.ndarray[int], + hh_id: numpy.ndarray[int], + alter: numpy.ndarray[int], + familie__p_id_elternteil_1: numpy.ndarray[int], + familie__p_id_elternteil_2: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the ID of the Familiengemeinschaft for each person. + """ + # Build indexes + p_id_to_index = {} + p_id_to_p_ids_children = {} + + for index, current_p_id in enumerate(p_id): + # Fast access from p_id to index + p_id_to_index[current_p_id] = index + + # Fast access from p_id to p_ids of children + current_familie__p_id_elternteil_1 = familie__p_id_elternteil_1[index] + current_familie__p_id_elternteil_2 = familie__p_id_elternteil_2[index] + + if current_familie__p_id_elternteil_1 >= 0: + if current_familie__p_id_elternteil_1 not in p_id_to_p_ids_children: + p_id_to_p_ids_children[current_familie__p_id_elternteil_1] = [] + p_id_to_p_ids_children[current_familie__p_id_elternteil_1].append( + current_p_id + ) + + if current_familie__p_id_elternteil_2 >= 0: + if current_familie__p_id_elternteil_2 not in p_id_to_p_ids_children: + p_id_to_p_ids_children[current_familie__p_id_elternteil_2] = [] + p_id_to_p_ids_children[current_familie__p_id_elternteil_2].append( + current_p_id + ) + + p_id_to_fg_id = {} + next_fg_id = 0 + + for index, current_p_id in enumerate(p_id): + # Already assigned a fg_id to this p_id via einstandspartner / + # parent + if current_p_id in p_id_to_fg_id: + continue + + p_id_to_fg_id[current_p_id] = next_fg_id + + current_hh_id = hh_id[index] + current_p_id_einstandspartner = p_id_einstandspartner[index] + current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) + + # Assign fg to einstandspartner + if current_p_id_einstandspartner >= 0: + p_id_to_fg_id[current_p_id_einstandspartner] = next_fg_id + + # Assign fg to children + for current_p_id_child in current_p_id_children: + child_index = p_id_to_index[current_p_id_child] + child_hh_id = hh_id[child_index] + child_alter = alter[child_index] + child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) + + if ( + child_hh_id == current_hh_id + # TODO (@MImmesberger): Check correct conditions for grown up children + # https://github.com/iza-institute-of-labor-economics/gettsim/pull/509 + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + and child_alter < 25 + and len(child_p_id_children) == 0 + ): + p_id_to_fg_id[current_p_id_child] = next_fg_id + + next_fg_id += 1 + + # Compute result vector + result = [p_id_to_fg_id[current_p_id] for current_p_id in p_id] + return numpy.asarray(result) + + +@group_by_function() +def eg_id( + p_id_einstandspartner: numpy.ndarray[int], + p_id: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the ID of the Einstandsgemeinschaft for each person. + """ + p_id_to_eg_id = {} + next_eg_id = 0 + result = [] + + for index, current_p_id in enumerate(p_id): + current_p_id_einstandspartner = p_id_einstandspartner[index] + + if ( + current_p_id_einstandspartner >= 0 + and current_p_id_einstandspartner in p_id_to_eg_id + ): + result.append(p_id_to_eg_id[current_p_id_einstandspartner]) + continue + + # New Einstandsgemeinschaft + result.append(next_eg_id) + p_id_to_eg_id[current_p_id] = next_eg_id + next_eg_id += 1 + + return numpy.asarray(result) diff --git "a/src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" new file mode 100644 index 0000000000..683eba6b0e --- /dev/null +++ "b/src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -0,0 +1,198 @@ +"""Module for the calculation of the Kindergeldübertrag.""" + +import numpy + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function +from _gettsim.shared import join_numpy + +aggregation_specs = { + "kindergeldübertrag_m": AggregateByPIDSpec( + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + source="differenz_kindergeld_kindbedarf_m", + aggr="sum", + ), +} + + +@policy_function(end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m") +def _mean_kindergeld_per_child_gestaffelt_m( + kindergeld__betrag_m: float, + kindergeld__anzahl_ansprüche: int, +) -> float: + """Kindergeld per child. + + Returns the average Kindergeld per child. If there are no children, the function + returns 0. Helper function for `kindergeld_zur_bedarfsdeckung_m`. + + Parameters + ---------- + kindergeld__betrag_m + See :func:`kindergeld__betrag_m`. + kindergeld__anzahl_ansprüche + See :func:`kindergeld__anzahl_ansprüche`. + + Returns + ------- + + """ + if kindergeld__anzahl_ansprüche > 0: + out = kindergeld__betrag_m / kindergeld__anzahl_ansprüche + else: + out = 0.0 + return out + + +@policy_function(start_date="2023-01-01", leaf_name="kindergeld_pro_kind_m") +def _mean_kindergeld_per_child_ohne_staffelung_m( + kindergeld_params: dict, + kindergeld__anzahl_ansprüche: int, +) -> float: + """Kindergeld per child. + + Returns the (average) Kindergeld per child. Helper function for + `kindergeld_zur_bedarfsdeckung_m`. + + Parameters + ---------- + kindergeld_params + See params documentation :ref:`kindergeld_params `. + alter + See basic input variable :ref:`alter`. + + Returns + ------- + + """ + return kindergeld_params["kindergeld"] if kindergeld__anzahl_ansprüche > 0 else 0.0 + + +@policy_function(skip_vectorization=True) +def kindergeld_zur_bedarfsdeckung_m( + kindergeld_pro_kind_m: float, + kindergeld__p_id_empfänger: numpy.ndarray[int], + p_id: numpy.ndarray[int], +) -> numpy.ndarray[float]: + """Kindergeld that is used to cover the SGB II Regelbedarf of the child. + + Even though the Kindergeld is paid to the parent (see function + :func:`kindergeld__betrag_m`), the child that gives rise to the Kindergeld claim is + entitled to it to cover its needs (§ 11 Abs. 1 Satz 5 SGB II). The amount of + Kindergeld for which the child is entitled to is the sum of the Kindergeld for all + children divided by the amount of children. Hence, the age of the child (in + comparison to siblings) does not matter. + + Parameters + ---------- + kindergeld__betrag_m + See :func:`kindergeld__betrag_m`. + kindergeld__p_id_empfänger + See :func:`kindergeld__p_id_empfänger`. + p_id + See :func:`p_id`. + + Returns + ------- + + """ + return join_numpy( + kindergeld__p_id_empfänger, + p_id, + kindergeld_pro_kind_m, + value_if_foreign_key_is_missing=0.0, + ) + + +@policy_function() +def differenz_kindergeld_kindbedarf_m( # noqa: PLR0913 + regelbedarf_m_bg: float, + nettoeinkommen_nach_abzug_freibetrag_m: float, + wohngeld__anspruchshöhe_m_bg: float, + kindergeld_zur_bedarfsdeckung_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + in_anderer_bg_als_kindergeldempfänger: bool, +) -> float: + """Kindergeld that is used to cover the needs (SGB II) of the parent. + + If a child does not need all of the Kindergeld to cover its own needs (SGB II), the + remaining Kindergeld is used to cover the needs of the parent (§ 11 Abs. 1 Satz 5 + SGB II). + + Kindergeldübertrag (`kindergeldübertrag_m`) is obtained by aggregating this function + to the parental level. + + Parameters + ---------- + regelbedarf_m_bg + See :func:`regelbedarf_m_bg`. + nettoeinkommen_nach_abzug_freibetrag_m + See :func:`_arbeitsl_geld_2 + wohngeld__anspruchshöhe_m_bg + See :func:`wohngeld__anspruchshöhe_m_bg`. + kindergeld_zur_bedarfsdeckung_m + See :func:`kindergeld_zur_bedarfsdeckung_m`. + unterhalt__tatsächlich_erhaltener_betrag_m + See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + in_anderer_bg_als_kindergeldempfänger + See :func:`in_anderer_bg_als_kindergeldempfänger`. + + Returns + ------- + + """ + fehlbetrag = max( + regelbedarf_m_bg + - wohngeld__anspruchshöhe_m_bg + - nettoeinkommen_nach_abzug_freibetrag_m + - unterhalt__tatsächlich_erhaltener_betrag_m + - unterhaltsvorschuss__betrag_m, + 0.0, + ) + # Bedarf not covered or same Bedarfsgemeinschaft as parents + if ( + not in_anderer_bg_als_kindergeldempfänger + or fehlbetrag > kindergeld_zur_bedarfsdeckung_m + ): + out = 0.0 + # Bedarf is covered + else: + out = kindergeld_zur_bedarfsdeckung_m - fehlbetrag + return out + + +@policy_function(skip_vectorization=True) +def in_anderer_bg_als_kindergeldempfänger( + p_id: numpy.ndarray[int], + kindergeld__p_id_empfänger: numpy.ndarray[int], + bg_id: numpy.ndarray[int], +) -> numpy.ndarray[bool]: + """True if the person is in a different Bedarfsgemeinschaft than the + Kindergeldempfänger of that person. + + Parameters + ---------- + p_id + See basic input variable :ref:`p_id ` + kindergeld__p_id_empfänger + See basic input variable :ref:`kindergeld__p_id_empfänger ` + bg_id + See :func:`bg_id`. + + Returns + ------- + + """ + # Create a dictionary to map p_id to bg_id + p_id_to_bg_id = dict(zip(p_id, bg_id)) + + # Map each kindergeld__p_id_empfänger to its corresponding bg_id + empf_bg_id = [ + p_id_to_bg_id[empfänger_id] if empfänger_id >= 0 else -1 + for empfänger_id in kindergeld__p_id_empfänger + ] + + # Compare bg_id array with the mapped bg_ids of kindergeld__p_id_empfänger + return bg_id != empf_bg_id diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py new file mode 100644 index 0000000000..709e7c4685 --- /dev/null +++ b/src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py @@ -0,0 +1,508 @@ +"""Basic needs following SGB II.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def regelbedarf_m( + regelsatz_m: float, + kosten_der_unterkunft_m: float, +) -> float: + """Basic monthly subsistence level on individual level. + + This includes cost of dwelling. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld.: + + Parameters + ---------- + regelsatz_m + See :func:`regelsatz_m`. + kosten_der_unterkunft_m + See :func:`kosten_der_unterkunft_m`. + + Returns + ------- + float checks the minimum monthly needs of an household. + + """ + return regelsatz_m + kosten_der_unterkunft_m + + +@policy_function() +def mehrbedarf_alleinerziehend_m( + familie__alleinerziehend: bool, + anzahl_kinder_fg: int, + anzahl_kinder_bis_6_fg: int, + anzahl_kinder_bis_15_fg: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Compute additional SGB II need for single parents. + + Additional need for single parents. Maximum 60% of the standard amount on top if + you have at least one kid below 6 or two or three below 15, you get 36% + on top alternatively, you get 12% per kid, depending on what's higher. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + familie__alleinerziehend + See :func:`familie__alleinerziehend`. + anzahl_kinder_fg + See :func:`anzahl_kinder_fg`. + anzahl_kinder_bis_6_fg + See :func:`anzahl_kinder_bis_6_fg`. + anzahl_kinder_bis_15_fg + See :func:`anzahl_kinder_bis_15_fg`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + + Returns + ------- + float checks how much more a single parent need. + + """ + if familie__alleinerziehend: + # Clip value at calculated minimal share and given upper share + # Note that upper limit is applied last (for many children lower + # could be greater than upper) + out = min( + max( + # Minimal Mehrbedarf share. Minimal rate times number of children + arbeitsl_geld_2_params["mehrbedarf_anteil"]["min_1_kind"] + * anzahl_kinder_fg, + # Increased rated if children up to 6 and/or 2-3 up to 15 are present. + ( + arbeitsl_geld_2_params["mehrbedarf_anteil"][ + "kind_bis_6_oder_mehrere_bis_15" + ] + if (anzahl_kinder_bis_6_fg >= 1) + or (2 <= anzahl_kinder_bis_15_fg <= 3) + else 0.0 + ), + ), + arbeitsl_geld_2_params["mehrbedarf_anteil"]["max"], + ) + else: + out = 0.0 + return out + + +@policy_function(end_date="2010-12-31", leaf_name="kindersatz_m") +def kindersatz_m_bis_2010( + alter: int, + kindergeld__gleiche_fg_wie_empfänger: bool, + arbeitsl_geld_2_params: dict, +) -> float: + """Basic monthly subsistence / SGB II needs of children until 2010. + + Parameters + ---------- + alter + See basic input variable :ref:`alter`. + kindergeld__gleiche_fg_wie_empfänger + See :func:`kindergeld__gleiche_fg_wie_empfänger`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + float with SGB II needs of children until year 2010. + + """ + anteile = arbeitsl_geld_2_params["anteil_regelsatz_kinder"] + regelsatz = arbeitsl_geld_2_params["regelsatz"] + + if ( + alter >= anteile["kind_zwischen_14_und_24"]["min_alter"] + and alter <= anteile["kind_zwischen_14_und_24"]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz * anteile["kind_zwischen_14_und_24"]["anteil"] + elif ( + alter >= anteile["kind_zwischen_6_und_13"]["min_alter"] + and alter <= anteile["kind_zwischen_6_und_13"]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz * anteile["kind_zwischen_6_und_13"]["anteil"] + elif ( + alter >= anteile["kind_bis_5"]["min_alter"] + and alter <= anteile["kind_bis_5"]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz * anteile["kind_bis_5"]["anteil"] + else: + out = 0.0 + + return float(out) + + +@policy_function(start_date="2011-01-01", leaf_name="kindersatz_m") +def kindersatz_m_ab_2011( + alter: int, + kindergeld__gleiche_fg_wie_empfänger: bool, + arbeitsl_geld_2_params: dict, +) -> float: + """Basic monthly subsistence / SGB II needs of children since 2011. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + alter + See basic input variable :ref:`alter`. + kindergeld__gleiche_fg_wie_empfänger + See :func:`kindergeld__gleiche_fg_wie_empfänger`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + SGB II needs of child + + """ + + out = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) + + if ( + alter >= arbeitsl_geld_2_params["regelsatz"][6]["min_alter"] + and alter <= arbeitsl_geld_2_params["regelsatz"][6]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out += arbeitsl_geld_2_params["regelsatz"][6]["betrag"] + elif ( + alter >= arbeitsl_geld_2_params["regelsatz"][5]["min_alter"] + and alter <= arbeitsl_geld_2_params["regelsatz"][5]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out += arbeitsl_geld_2_params["regelsatz"][5]["betrag"] + elif ( + alter >= arbeitsl_geld_2_params["regelsatz"][4]["min_alter"] + and alter <= arbeitsl_geld_2_params["regelsatz"][4]["max_alter"] + and kindergeld__gleiche_fg_wie_empfänger + ): + out += arbeitsl_geld_2_params["regelsatz"][4]["betrag"] + elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG + out += arbeitsl_geld_2_params["regelsatz"][3] + else: + out = 0.0 + + return float(out) + + +@policy_function(end_date="2010-12-31", leaf_name="erwachsenensatz_m") +def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( + mehrbedarf_alleinerziehend_m: float, + kindersatz_m: float, + p_id_einstandspartner: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Basic monthly subsistence / SGB II needs for adults without dwelling. + + Parameters + ---------- + mehrbedarf_alleinerziehend_m + See :func:`mehrbedarf_alleinerziehend_m`. + kindersatz_m + See :func:`kindersatz_m`. + p_id_einstandspartner + See basic input variable :ref:`p_id_einstandspartner`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + # BG has 2 adults + if p_id_einstandspartner >= 0: + out = ( + arbeitsl_geld_2_params["regelsatz"] + * (arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"]) + ) + # This observation is not a child, so BG has 1 adult + elif kindersatz_m == 0.0: + out = arbeitsl_geld_2_params["regelsatz"] + else: + out = 0.0 + + return out * (1 + mehrbedarf_alleinerziehend_m) + + +@policy_function(start_date="2011-01-01", leaf_name="erwachsenensatz_m") +def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( + mehrbedarf_alleinerziehend_m: float, + kindersatz_m: float, + p_id_einstandspartner: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Basic monthly subsistence / SGB II needs for adults without dwelling since 2011. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + mehrbedarf_alleinerziehend_m + See :func:`mehrbedarf_alleinerziehend_m`. + kindersatz_m + See :func:`kindersatz_m`. + p_id_einstandspartner + See basic input variable :ref:`p_id_einstandspartner`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + float with the minimum needs of an household in Euro. + + """ + # BG has 2 adults + if p_id_einstandspartner >= 0: + out = arbeitsl_geld_2_params["regelsatz"][2] + # This observation is not a child, so BG has 1 adult + elif kindersatz_m == 0.0: + out = arbeitsl_geld_2_params["regelsatz"][1] + else: + out = 0.0 + + return out * (1 + mehrbedarf_alleinerziehend_m) + + +@policy_function() +def regelsatz_m( + erwachsenensatz_m: float, + kindersatz_m: float, +) -> float: + """Calculate basic monthly subsistence without dwelling until 2010. + + Parameters + ---------- + erwachsenensatz_m + See :func:`erwachsenensatz_m`. + kindersatz_m + See :func:`kindersatz_m`. + + Returns + ------- + + + """ + return erwachsenensatz_m + kindersatz_m + + +@policy_function(end_date="2022-12-31", leaf_name="kosten_der_unterkunft_m") +def kosten_der_unterkunft_m_bis_2022( + berechtigte_wohnfläche: float, + anerkannte_warmmiete_je_qm_m: float, +) -> float: + """Calculate costs of living eligible to claim until 2022. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + Parameters + ---------- + berechtigte_wohnfläche + See :func:`berechtigte_wohnfläche`. + anerkannte_warmmiete_je_qm_m + See :func:`anerkannte_warmmiete_je_qm_m`. + + Returns + ------- + float with total monthly cost of rent. + + """ + return berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m + + +@policy_function(start_date="2023-01-01", leaf_name="kosten_der_unterkunft_m") +def kosten_der_unterkunft_m_ab_2023( + bruttokaltmiete_m: float, + heizkosten_m: float, + arbeitslosengeld_2_bezug_im_vorjahr: bool, + berechtigte_wohnfläche: float, + anerkannte_warmmiete_je_qm_m: float, +) -> float: + """Calculate costs of living eligible to claim since 2023. During the first year, + the waiting period (Karenzzeit), only the appropriateness of the heating costs is + tested, while the living costs are fully considered in Bürgergeld. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + bruttokaltmiete_m + See :func:`bruttokaltmiete_m`. + heizkosten_m + See :func:`heizkosten_m`. + arbeitslosengeld_2_bezug_im_vorjahr + See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr `. + berechtigte_wohnfläche + See :func:`berechtigte_wohnfläche`. + anerkannte_warmmiete_je_qm_m + See :func:`anerkannte_warmmiete_je_qm_m`. + + Returns + ------- + float with total monthly cost of rent. + + """ + if arbeitslosengeld_2_bezug_im_vorjahr: + out = berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m + else: + out = bruttokaltmiete_m + heizkosten_m + + return out + + +@policy_function() +def anerkannte_warmmiete_je_qm_m( + bruttokaltmiete_m: float, + heizkosten_m: float, + wohnfläche: float, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate rent per square meter. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + bruttokaltmiete_m + See :func:`bruttokaltmiete_m`. + heizkosten_m + See :func:`heizkosten_m`. + wohnfläche + See function :func:`wohnfläche`. + + Returns + ------- + Integer with the total amount of rental costs per squaremeter. + + """ + out = (bruttokaltmiete_m + heizkosten_m) / wohnfläche + + # Consider maximum considered rent per square meter + out = min(out, arbeitsl_geld_2_params["max_miete_pro_qm"]["max"]) + + return out + + +@policy_function() +def berechtigte_wohnfläche( + wohnfläche: float, + wohnen__bewohnt_eigentum_hh: bool, + anzahl_personen_hh: int, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate size of dwelling eligible to claim. + + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + + Parameters + ---------- + wohnfläche + See function :func:`wohnfläche`. + wohnen__bewohnt_eigentum_hh + See basic input variable :ref:`wohnen__bewohnt_eigentum_hh `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + Integer with the number of squaremeters. + + """ + + params = arbeitsl_geld_2_params["berechtigte_wohnfläche_eigentum"] + max_anzahl_direkt = params["max_anzahl_direkt"] + if wohnen__bewohnt_eigentum_hh: + if anzahl_personen_hh <= max_anzahl_direkt: + maximum = params[anzahl_personen_hh] + else: + maximum = ( + params[max_anzahl_direkt] + + (anzahl_personen_hh - max_anzahl_direkt) * params["je_weitere_person"] + ) + else: + maximum = ( + arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"]["single"] + + max(anzahl_personen_hh - 1, 0) + * arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"][ + "je_weitere_person" + ] + ) + return min(wohnfläche, maximum / anzahl_personen_hh) + + +@policy_function() +def bruttokaltmiete_m( + wohnen__bruttokaltmiete_m_hh: float, + anzahl_personen_hh: int, +) -> float: + """Monthly rent attributed to a single person. + + Reference: + BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. + BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. + + Parameters + ---------- + wohnen__bruttokaltmiete_m_hh + See basic input variable :ref:`wohnen__bruttokaltmiete_m_hh `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + + Returns + ------- + + """ + return wohnen__bruttokaltmiete_m_hh / anzahl_personen_hh + + +@policy_function() +def heizkosten_m( + wohnen__heizkosten_m_hh: float, + anzahl_personen_hh: int, +) -> float: + """Monthly heating expenses attributed to a single person. + + Reference: + BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. + BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. + + Parameters + ---------- + wohnen__heizkosten_m_hh + See basic input variable :ref:`wohnen__heizkosten_m_hh `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + + Returns + ------- + + """ + return wohnen__heizkosten_m_hh / anzahl_personen_hh + + +@policy_function() +def wohnfläche( + wohnen__wohnfläche_hh: float, + anzahl_personen_hh: int, +) -> float: + """Share of household's dwelling size attributed to a single person. + + Parameters + ---------- + wohnen__wohnfläche_hh + See basic input variable :ref:`wohnen__wohnfläche_hh `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + + Returns + ------- + + """ + return wohnen__wohnfläche_hh / anzahl_personen_hh diff --git a/src/_gettsim/transfers/benefit_checks/benefit_checks.py b/src/_gettsim/transfers/benefit_checks/benefit_checks.py deleted file mode 100644 index 4ef0d23573..0000000000 --- a/src/_gettsim/transfers/benefit_checks/benefit_checks.py +++ /dev/null @@ -1,97 +0,0 @@ -aggregate_by_group_benefit_checks = { - "wohngeld_vorrang_wthh": { - "source_col": "wohngeld_vorrang_bg", - "aggr": "any", - }, - "wohngeld_kinderzuschl_vorrang_wthh": { - "source_col": "wohngeld_kinderzuschl_vorrang_bg", - "aggr": "any", - }, -} - - -def wohngeld_vorrang_bg( - arbeitsl_geld_2_regelbedarf_m_bg: float, - arbeitsl_geld_2_eink_m_bg: float, - wohngeld_anspruchshöhe_m_bg: float, -) -> bool: - """Check if housing benefit has priority. - - Housing benefit has priority if the sum of housing benefit and income covers the - needs according to SGB II of the Bedarfsgemeinschaft. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - arbeitsl_geld_2_eink_m_bg - See :func:`arbeitsl_geld_2_eink_m_bg`. - wohngeld_anspruchshöhe_m_bg - See :func:`wohngeld_anspruchshöhe_m_bg`. - - Returns - ------- - - """ - return ( - arbeitsl_geld_2_eink_m_bg + wohngeld_anspruchshöhe_m_bg - >= arbeitsl_geld_2_regelbedarf_m_bg - ) - - -def kinderzuschl_vorrang_bg( - arbeitsl_geld_2_regelbedarf_m_bg: float, - arbeitsl_geld_2_eink_m_bg: float, - _kinderzuschl_nach_vermög_check_m_bg: float, -) -> bool: - """Check if child benefit has priority. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - arbeitsl_geld_2_eink_m_bg - See :func:`arbeitsl_geld_2_eink_m_bg`. - _kinderzuschl_nach_vermög_check_m_bg - See :func:`_kinderzuschl_nach_vermög_check_m_bg`. - - Returns - ------- - - """ - return ( - arbeitsl_geld_2_eink_m_bg + _kinderzuschl_nach_vermög_check_m_bg - >= arbeitsl_geld_2_regelbedarf_m_bg - ) - - -def wohngeld_kinderzuschl_vorrang_bg( - arbeitsl_geld_2_regelbedarf_m_bg: float, - arbeitsl_geld_2_eink_m_bg: float, - _kinderzuschl_nach_vermög_check_m_bg: float, - wohngeld_anspruchshöhe_m_bg: float, -) -> bool: - """Check if housing and child benefit have priority. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - arbeitsl_geld_2_eink_m_bg - See :func:`arbeitsl_geld_2_eink_m_bg`. - _kinderzuschl_nach_vermög_check_m_bg - See :func:`_kinderzuschl_nach_vermög_check_m_bg`. - wohngeld_anspruchshöhe_m_bg - See :func:`wohngeld_anspruchshöhe_m_bg`. - - Returns - ------- - - """ - - return ( - arbeitsl_geld_2_eink_m_bg - + wohngeld_anspruchshöhe_m_bg - + _kinderzuschl_nach_vermög_check_m_bg - >= arbeitsl_geld_2_regelbedarf_m_bg - ) diff --git a/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py b/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py deleted file mode 100644 index b713a149a3..0000000000 --- a/src/_gettsim/transfers/benefit_checks/vermoegens_checks.py +++ /dev/null @@ -1,264 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -def _kinderzuschl_nach_vermög_check_m_bg( - _kinderzuschl_vor_vermög_check_m_bg: float, - vermögen_bedürft_bg: float, - kinderzuschl_vermög_freib_bg: float, -) -> float: - """Set preliminary child benefit to zero if it exceeds the wealth exemption. - - Parameters - ---------- - _kinderzuschl_vor_vermög_check_m_bg - See :func:`_kinderzuschl_vor_vermög_check_m_bg`. - vermögen_bedürft_bg - See basic input variable :ref:`vermögen_bedürft_bg `. - kinderzuschl_vermög_freib_bg - See :func:`kinderzuschl_vermög_freib_bg`. - - Returns - ------- - - """ - - if vermögen_bedürft_bg > kinderzuschl_vermög_freib_bg: - out = max( - _kinderzuschl_vor_vermög_check_m_bg - - (vermögen_bedürft_bg - kinderzuschl_vermög_freib_bg), - 0.0, - ) - else: - out = _kinderzuschl_vor_vermög_check_m_bg - return out - - -@policy_function(end_date="2022-12-31", leaf_name="kinderzuschl_vermög_freib_bg") -def kinderzuschl_vermög_freib_bg_bis_2022( - arbeitsl_geld_2_vermög_freib_bg: float, -) -> float: - """Wealth exemptions for Kinderzuschlag until 2022. - - Parameters - ---------- - arbeitsl_geld_2_vermög_freib_bg - See :func:`arbeitsl_geld_2_vermög_freib_bg`. - - Returns - ------- - - """ - - return arbeitsl_geld_2_vermög_freib_bg - - -@policy_function(start_date="2023-01-01", leaf_name="kinderzuschl_vermög_freib_bg") -def kinderzuschl_vermög_freib_bg_ab_2023( - _arbeitsl_geld_2_vermög_freib_karenzz_bg: float, -) -> float: - """Wealth exemptions for Kinderzuschlag since 2023. - - Parameters - ---------- - _arbeitsl_geld_2_vermög_freib_karenzz_bg - See :func:`_arbeitsl_geld_2_vermög_freib_karenzz_bg`. - - Returns - ------- - - """ - - return _arbeitsl_geld_2_vermög_freib_karenzz_bg - - -def _arbeitsl_geld_2_grundfreib_vermög( - kind: bool, - alter: int, - geburtsjahr: int, - _arbeitsl_geld_2_max_grundfreib_vermög: float, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate wealth exemptions based on individuals age. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - kind - See basic input variable :ref:`kind `. - alter - See basic input variable :ref:`alter `. - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - _arbeitsl_geld_2_max_grundfreib_vermög - See :func:`_arbeitsl_geld_2_max_grundfreib_vermög`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - threshold_years = list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].keys()) - if geburtsjahr <= threshold_years[0]: - out = ( - next(iter(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())) - * alter - ) - elif (geburtsjahr >= threshold_years[1]) and (not kind): - out = ( - list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())[1] * alter - ) - else: - out = 0.0 - - return float(min(out, _arbeitsl_geld_2_max_grundfreib_vermög)) - - -def _arbeitsl_geld_2_max_grundfreib_vermög( - geburtsjahr: int, - kind: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate maximal wealth exemptions by year of birth. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id `. - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - kind - See basic input variable :ref:`kind `. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - threshold_years = list( - arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].keys() - ) - obergrenzen = list( - arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].values() - ) - if kind: - out = 0.0 - else: - if geburtsjahr < threshold_years[1]: - out = obergrenzen[0] - elif geburtsjahr < threshold_years[2]: - out = obergrenzen[1] - elif geburtsjahr < threshold_years[3]: - out = obergrenzen[2] - else: - out = obergrenzen[3] - - return float(out) - - -@policy_function(end_date="2022-12-31", leaf_name="arbeitsl_geld_2_vermög_freib_bg") -def arbeitsl_geld_2_vermög_freib_bg_bis_2022( - _arbeitsl_geld_2_grundfreib_vermög_bg: float, - anz_kinder_bis_17_bg: int, - anz_personen_bg: int, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate actual exemptions until 2022. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - _arbeitsl_geld_2_grundfreib_vermög_bg - See :func:`_arbeitsl_geld_2_grundfreib_vermög_bg`. - anz_kinder_bis_17_bg - See :func:`anz_kinder_bis_17_bg`. - anz_personen_bg - See :func:`anz_personen_bg`. - - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - out = ( - _arbeitsl_geld_2_grundfreib_vermög_bg - + anz_kinder_bis_17_bg * arbeitsl_geld_2_params["vermögensfreibetrag_kind"] - + anz_personen_bg * arbeitsl_geld_2_params["vermögensfreibetrag_austattung"] - ) - return out - - -@policy_function(start_date="2023-01-01") -def _arbeitsl_geld_2_vermög_freib_karenzz_bg( - arbeitsl_geld_2_params: dict, - anz_personen_bg: int, -) -> float: - """Calculate wealth exemptions since 2023 during Karenzzeit. This variable is also - reffered to as 'erhebliches Vermögen'. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - `. - anz_personen_bg - See :func:`anz_personen_bg`. - bürgerg_bezug_vorj - See basic input variable :ref:`bürgerg_bezug_vorj `. - - - Returns - ------- - - """ - params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] - out = params["während_karenzzeit"] + (anz_personen_bg - 1) * params["normaler_satz"] - - return out - - -@policy_function(start_date="2023-01-01", leaf_name="arbeitsl_geld_2_vermög_freib_bg") -def arbeitsl_geld_2_vermög_freib_bg_ab_2023( - arbeitsl_geld_2_params: dict, - anz_personen_bg: int, - _arbeitsl_geld_2_vermög_freib_karenzz_bg: float, - bürgerg_bezug_vorj: bool, -) -> float: - """Calculate actual wealth exemptions since 2023. - - During the first year (Karenzzeit), the wealth exemption is substantially larger. - - Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - anz_personen_bg - See :func:`anz_personen_bg`. - _arbeitsl_geld_2_vermög_freib_karenzz_bg - See :func:`_arbeitsl_geld_2_vermög_freib_karenzz_bg`. - bürgerg_bezug_vorj - See basic input variable :ref:`bürgerg_bezug_vorj `. - - - Returns - ------- - - """ - params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] - if bürgerg_bezug_vorj: - out = anz_personen_bg * params["normaler_satz"] - else: - out = _arbeitsl_geld_2_vermög_freib_karenzz_bg - - return out diff --git a/src/_gettsim/transfers/elterngeld.py b/src/_gettsim/transfers/elterngeld.py deleted file mode 100644 index 2d275a9020..0000000000 --- a/src/_gettsim/transfers/elterngeld.py +++ /dev/null @@ -1,584 +0,0 @@ -"""This module provides functions to compute parental leave benefits (Elterngeld).""" - -from _gettsim.functions.policy_function import policy_function - -aggregate_by_group_elterngeld = { - "kind_anspruchsberechtigt_fg": { - "source_col": "kind_anspruchsberechtigt", - "aggr": "any", - }, - "elterngeld_anzahl_claims_fg": { - "source_col": "elterngeld_claimed", - "aggr": "sum", - }, -} -aggregate_by_p_id_elterngeld = { - "monate_elterngeld_partner": { - "p_id_to_aggregate_by": "p_id_einstandspartner", - "source_col": "monate_elterngeldbezug", - "aggr": "sum", - }, -} - - -@policy_function(start_date="2011-01-01", params_key_for_rounding="elterngeld") -def elterngeld_m( - elterngeld_anspruchsbedingungen_erfüllt: bool, - elterngeld_anspruchshöhe_m: float, -) -> float: - """Parental leave benefit (Elterngeld). - - Parameters - ---------- - elterngeld_anspruchsbedingungen_erfüllt - See :func:`elterngeld_anspruchsbedingungen_erfüllt`. - elterngeld_anspruchshöhe_m - See :func:`elterngeld_anspruchshöhe_m`. - - Returns - ------- - - """ - if elterngeld_anspruchsbedingungen_erfüllt: - out = elterngeld_anspruchshöhe_m - else: - out = 0.0 - return out - - -@policy_function( - end_date="2010-12-31", - leaf_name="elterngeld_m", - params_key_for_rounding="elterngeld", -) -def eltergeld_not_implemented() -> float: - raise NotImplementedError("Elterngeld is not implemented prior to 2011.") - - -def elterngeld_anspruchshöhe_m( - elterngeld_basisbetrag_m: float, - elterngeld_geschwisterbonus_m: float, - elterngeld_mehrlingsbonus_m: float, - elterngeld_params: dict, -) -> float: - """Elterngeld before checking eligibility. - - Parameters - ---------- - elterngeld_basisbetrag_m - See :func:`elterngeld_basisbetrag_m`. - elterngeld_geschwisterbonus_m - See :func:`elterngeld_geschwisterbonus_m`. - elterngeld_mehrlingsbonus_m - See :func:`elterngeld_mehrlingsbonus_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return ( - min( - max( - elterngeld_basisbetrag_m, - elterngeld_params["mindestbetrag"], - ), - elterngeld_params["höchstbetrag"], - ) - + elterngeld_geschwisterbonus_m - + elterngeld_mehrlingsbonus_m - ) - - -def elterngeld_anspruchsbedingungen_erfüllt( # noqa: PLR0913 - elterngeld_claimed: bool, - arbeitsstunden_w: float, - kind_anspruchsberechtigt_fg: bool, - vorjahr_einkommen_unter_bezugsgrenze: bool, - monate_elterngeldbezug_unter_grenze_fg: bool, - elterngeld_params: dict, -) -> bool: - """Individual is eligible to receive Elterngeld. - - Parameters - ---------- - elterngeld_claimed - See basic input variable :ref:`elterngeld_claimed `. - arbeitsstunden_w - See basic input variable :ref:`arbeitsstunden_w `. - kind_anspruchsberechtigt_fg - See :func:`kind_anspruchsberechtigt_fg`. - vorjahr_einkommen_unter_bezugsgrenze - See :func:`vorjahr_einkommen_unter_bezugsgrenze`. - monate_elterngeldbezug_unter_grenze_fg - See :func:`monate_elterngeldbezug_unter_grenze_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return ( - elterngeld_claimed - and arbeitsstunden_w <= elterngeld_params["max_arbeitsstunden_w"] - and vorjahr_einkommen_unter_bezugsgrenze - and kind_anspruchsberechtigt_fg - and monate_elterngeldbezug_unter_grenze_fg - ) - - -def monate_elterngeldbezug_unter_grenze_fg( - monate_elterngeldbezug_fg: int, - monate_elterngeld_partner: int, - alleinerz: bool, - elterngeld_anzahl_claims_fg: int, - elterngeld_params: dict, -) -> bool: - """Elterngeld has been claimed for less than the maximum number of months in the - past. - - Parameters - ---------- - monate_elterngeldbezug_fg - See :func:`monate_elterngeldbezug_fg`. - monate_elterngeld_partner - See function :func:`monate_elterngeld_partner`. - alleinerz - See basic input variable :ref:`alleinerz `. - elterngeld_anzahl_claims_fg - See :func:`elterngeld_anzahl_claims_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - if alleinerz or monate_elterngeld_partner >= 2: - out = ( - monate_elterngeldbezug_fg - < elterngeld_params["max_monate_mit_partnermonate"] - ) - elif elterngeld_anzahl_claims_fg > 1: - out = ( - monate_elterngeldbezug_fg + 1 - < elterngeld_params["max_monate_mit_partnermonate"] - ) - else: - out = ( - monate_elterngeldbezug_fg - < elterngeld_params["max_monate_ohne_partnermonate"] - ) - return out - - -@policy_function( - end_date="2024-03-31", leaf_name="vorjahr_einkommen_unter_bezugsgrenze" -) -def vorjahr_einkommen_unter_bezugsgrenze_mit_unterscheidung_single_paar( - alleinerz: bool, - elterngeld_zu_verst_eink_vorjahr_y_sn: float, - elterngeld_params: dict, -) -> bool: - """Income before birth is below income threshold for Elterngeld. - - Parameters - ---------- - alleinerz - See basic input variable :ref:`alleinerz `. - elterngeld_zu_verst_eink_vorjahr_y_sn - See :func:`elterngeld_zu_verst_eink_vorjahr_y_sn`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - if alleinerz: - out = ( - elterngeld_zu_verst_eink_vorjahr_y_sn - <= elterngeld_params["max_eink_vorj"]["single"] - ) - else: - out = ( - elterngeld_zu_verst_eink_vorjahr_y_sn - <= elterngeld_params["max_eink_vorj"]["paar"] - ) - return out - - -@policy_function( - start_date="2024-04-01", leaf_name="vorjahr_einkommen_unter_bezugsgrenze" -) -def vorjahr_einkommen_unter_bezugsgrenze_ohne_unterscheidung_single_paar( - elterngeld_zu_verst_eink_vorjahr_y_sn: float, - elterngeld_params: dict, -) -> bool: - """Income before birth is below income threshold for Elterngeld. - - Parameters - ---------- - elterngeld_zu_verst_eink_vorjahr_y_sn - See :func:`elterngeld_zu_verst_eink_vorjahr_y_sn`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return elterngeld_zu_verst_eink_vorjahr_y_sn <= elterngeld_params["max_eink_vorj"] - - -def kind_anspruchsberechtigt( - alter: int, - elterngeld_params: dict, -) -> bool: - """Child is young enough to give rise to Elterngeld claim. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return alter <= elterngeld_params["max_monate_mit_partnermonate"] - - -def elterngeld_basisbetrag_m( - elterngeld_nettoeinkommen_vorjahr_m: float, - elterngeld_lohnersatzanteil: float, - elterngeld_anrechenbares_nettoeinkommen_m: float, - elterngeld_params: dict, -) -> float: - """Base parental leave benefit without accounting for floor and ceiling. - - Parameters - ---------- - elterngeld_nettoeinkommen_vorjahr_m - See basic input variable :ref:`elterngeld_nettoeinkommen_vorjahr_m - `. - elterngeld_lohnersatzanteil - See :func:`elterngeld_lohnersatzanteil`. - elterngeld_anrechenbares_nettoeinkommen_m - See :func:`elterngeld_anrechenbares_nettoeinkommen_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - berücksichtigtes_einkommen = min( - elterngeld_nettoeinkommen_vorjahr_m, - elterngeld_params["max_zu_berücksichtigendes_einkommen"], - ) - return ( - berücksichtigtes_einkommen - elterngeld_anrechenbares_nettoeinkommen_m - ) * elterngeld_lohnersatzanteil - - -@policy_function(start_date="2011-01-01") -def elterngeld_lohnersatzanteil( - elterngeld_nettoeinkommen_vorjahr_m: float, - _untere_lohnersatzanteil_grenze_minus_nettoeinkommen: float, - _nettoeinkommen_minus_obere_lohnersatzanteil_grenze: float, - elterngeld_params: dict, -) -> float: - """Replacement rate of Elterngeld (before applying floor and ceiling rules). - - According to § 2 (2) BEEG the percentage increases below the first step and - decreases above the second step until prozent_minimum. - - Parameters - ---------- - elterngeld_nettoeinkommen_vorjahr_m - See basic input variable - :ref:`elterngeld_nettoeinkommen_vorjahr_m`. - _untere_lohnersatzanteil_grenze_minus_nettoeinkommen - See :func:`_untere_lohnersatzanteil_grenze_minus_nettoeinkommen`. - _nettoeinkommen_minus_obere_lohnersatzanteil_grenze - See :func:`_nettoeinkommen_minus_obere_lohnersatzanteil_grenze`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - Returns - ------- - - """ - - # Higher replacement rate if considered income is below a threshold - if ( - elterngeld_nettoeinkommen_vorjahr_m - < elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] - and elterngeld_nettoeinkommen_vorjahr_m > 0 - ): - out = elterngeld_params["faktor"] + ( - _untere_lohnersatzanteil_grenze_minus_nettoeinkommen - / elterngeld_params["eink_schritt_korrektur"] - * elterngeld_params["prozent_korrektur"] - ) - # Lower replacement rate if considered income is above a threshold - elif ( - elterngeld_nettoeinkommen_vorjahr_m - > elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] - ): - # Replacement rate is only lowered up to a specific value - out = max( - elterngeld_params["faktor"] - - ( - _nettoeinkommen_minus_obere_lohnersatzanteil_grenze - / elterngeld_params["eink_schritt_korrektur"] - * elterngeld_params["prozent_korrektur"] - ), - elterngeld_params["prozent_minimum"], - ) - else: - out = elterngeld_params["faktor"] - - return out - - -@policy_function(params_key_for_rounding="elterngeld") -def _untere_lohnersatzanteil_grenze_minus_nettoeinkommen( - elterngeld_nettoeinkommen_vorjahr_m: float, - elterngeld_params: dict, -) -> float: - """Lower threshold for replacement rate adjustment minus net income. - - Parameters - ---------- - elterngeld_nettoeinkommen_vorjahr_m - See basic input variable - :ref:`elterngeld_nettoeinkommen_vorjahr_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return ( - elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] - - elterngeld_nettoeinkommen_vorjahr_m - ) - - -@policy_function(params_key_for_rounding="elterngeld") -def _nettoeinkommen_minus_obere_lohnersatzanteil_grenze( - elterngeld_nettoeinkommen_vorjahr_m: float, - elterngeld_params: dict, -) -> float: - """Net income minus upper threshold for replacement rate adjustment. - - Parameters - ---------- - elterngeld_nettoeinkommen_vorjahr_m - See basic input variable - :ref:`elterngeld_nettoeinkommen_vorjahr_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return ( - elterngeld_nettoeinkommen_vorjahr_m - - elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] - ) - - -def elterngeld_geschwisterbonus_m( - elterngeld_basisbetrag_m: float, - geschwisterbonus_anspruchsberechtigt_fg: bool, - elterngeld_params: dict, -) -> float: - """Elterngeld bonus for (older) siblings. - - According to § 2a parents of siblings get a bonus. - - Parameters - ---------- - elterngeld_basisbetrag_m - See :func:`elterngeld_basisbetrag_m`. - geschwisterbonus_anspruchsberechtigt_fg - See :func:`geschwisterbonus_anspruchsberechtigt_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - if geschwisterbonus_anspruchsberechtigt_fg: - out = max( - elterngeld_params["geschwisterbonus_aufschlag"] * elterngeld_basisbetrag_m, - elterngeld_params["geschwisterbonus_minimum"], - ) - else: - out = 0.0 - return out - - -def elterngeld_mehrlingsbonus_m( - _elterngeld_anz_mehrlinge_fg: int, elterngeld_params: dict -) -> float: - """Elterngeld bonus for multiples. - - Parameters - ---------- - _elterngeld_anz_mehrlinge_fg - See :func:`_elterngeld_anz_mehrlinge_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - return _elterngeld_anz_mehrlinge_fg * elterngeld_params["mehrlingbonus"] - - -def geschwisterbonus_anspruchsberechtigt_fg( - anz_kinder_bis_2_fg: int, - anz_kinder_bis_5_fg: int, - elterngeld_params: dict, -) -> bool: - """Siblings that give rise to Elterngeld siblings bonus. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - - Returns - ------- - - """ - geschwister_unter_3 = ( - anz_kinder_bis_2_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][3] - ) - geschwister_unter_6 = ( - anz_kinder_bis_5_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][6] - ) - - return geschwister_unter_3 or geschwister_unter_6 - - -def _elterngeld_anz_mehrlinge_fg( - anz_mehrlinge_jüngstes_kind_fg: int, -) -> int: - """Number of multiples of the youngest child. - - Parameters - ---------- - anz_mehrlinge_jüngstes_kind_fg - See :func:`anz_mehrlinge_jüngstes_kind_fg`. - - Returns - ------- - - """ - out = anz_mehrlinge_jüngstes_kind_fg - 1 - return max(out, 0) - - -def elterngeld_anrechenbares_nettoeinkommen_m( - bruttolohn_m: float, - lohnst_m: float, - soli_st_lohnst_m: float, -) -> float: - """Income that reduces the Elterngeld claim. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - lohnst_m - See :func:`lohnst_m`. - soli_st_lohnst_m - See :func:`soli_st_lohnst_m`. - - Returns - ------- - - """ - # TODO(@MImmesberger): In this case, lohnst_m should be calculated without taking - # into account adaptions to the standard care insurance rate. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/792 - return bruttolohn_m - lohnst_m - soli_st_lohnst_m - - -def anrechenbares_elterngeld_m( - elterngeld_m: float, - _elterngeld_anz_mehrlinge_fg: int, - elterngeld_params: dict, -) -> float: - """Elterngeld that can be considered as income for other transfers. - - Relevant for Wohngeld and Grundsicherung im Alter. - - For Arbeitslosengeld II / Bürgergeld as well as Kinderzuschlag the whole amount of - Elterngeld is considered as income, except for the case in which the parents still - worked right before they had children. See: - https://www.kindergeld.org/elterngeld-einkommen/ - - Parameters - ---------- - elterngeld_m - See :func:`elterngeld_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - _elterngeld_anz_mehrlinge_fg - See :func:`_elterngeld_anz_mehrlinge_fg`. - - Returns - ------- - - """ - out = max( - elterngeld_m - - ((1 + _elterngeld_anz_mehrlinge_fg) * elterngeld_params["mindestbetrag"]), - 0, - ) - return out - - -@policy_function(params_key_for_rounding="elterngeld") -def elterngeld_nettolohn_approximation_m( - bruttolohn_m: float, - lohnst_m: float, - soli_st_lohnst_m: float, - elterngeld_params: dict, -) -> float: - """Approximation of net wage used to calculate Elterngeld. - - This target can be used as an input in another GETTSIM call to compute Elterngeld. - In principle, the relevant gross wage for this target is the sum of the gross wages - in the 12 months before the birth of the child. For most datasets, except those with - monthly income date (IAB, DRV data), the best approximation will likely be the gross - wage in the calendar year before the birth of the child. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - lohnst_m - See :func:`lohnst_m`. - soli_st_lohnst_m - See :func:`soli_st_lohnst_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params `. - """ - prox_ssc = elterngeld_params["sozialv_pausch"] * bruttolohn_m - return bruttolohn_m - prox_ssc - lohnst_m - soli_st_lohnst_m diff --git a/src/_gettsim/transfers/elterngeld/__init__.py b/src/_gettsim/transfers/elterngeld/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/elterngeld/einkommen.py b/src/_gettsim/transfers/elterngeld/einkommen.py new file mode 100644 index 0000000000..29883af7b7 --- /dev/null +++ b/src/_gettsim/transfers/elterngeld/einkommen.py @@ -0,0 +1,182 @@ +"""Relevant income for parental leave benefits.""" + +from _gettsim.function_types import policy_function + + +@policy_function(start_date="2007-01-01") +def anzurechnendes_nettoeinkommen_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + lohnsteuer__betrag_m: float, + lohnsteuer__betrag_soli_m: float, +) -> float: + """Income that reduces the Elterngeld claim. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + lohnsteuer__betrag_m + See :func:`lohnsteuer__betrag_m`. + lohnsteuer__betrag_soli_m + See :func:`lohnsteuer__betrag_soli_m`. + + Returns + ------- + + """ + # TODO(@MImmesberger): In this case, lohnsteuer__betrag_m should be calculated + # without taking into account adaptions to the standard care insurance rate. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/792 + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - lohnsteuer__betrag_m + - lohnsteuer__betrag_soli_m + ) + + +@policy_function(start_date="2007-01-01", params_key_for_rounding="elterngeld") +def lohnersatzanteil_einkommen_untere_grenze( + nettoeinkommen_vorjahr_m: float, + elterngeld_params: dict, +) -> float: + """Lower threshold for replacement rate adjustment minus net income. + + Parameters + ---------- + nettoeinkommen_vorjahr_m + See basic input variable :ref:`nettoeinkommen_vorjahr_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return ( + elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] + - nettoeinkommen_vorjahr_m + ) + + +@policy_function(start_date="2007-01-01", params_key_for_rounding="elterngeld") +def lohnersatzanteil_einkommen_obere_grenze( + nettoeinkommen_vorjahr_m: float, + elterngeld_params: dict, +) -> float: + """Net income minus upper threshold for replacement rate adjustment. + + Parameters + ---------- + nettoeinkommen_vorjahr_m + See basic input variable + :ref:`nettoeinkommen_vorjahr_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return ( + nettoeinkommen_vorjahr_m + - elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] + ) + + +@policy_function( + start_date="2007-01-01", + end_date="2024-03-31", + leaf_name="einkommen_vorjahr_unter_bezugsgrenze", +) +def einkommen_vorjahr_unter_bezugsgrenze_mit_unterscheidung_single_paar( + familie__alleinerziehend: bool, + zu_versteuerndes_einkommen_vorjahr_y_sn: float, + elterngeld_params: dict, +) -> bool: + """Income before birth is below income threshold for Elterngeld. + + Parameters + ---------- + familie__alleinerziehend + See basic input variable :ref:`familie__alleinerziehend `. + zu_versteuerndes_einkommen_vorjahr_y_sn + See :func:`zu_versteuerndes_einkommen_vorjahr_y_sn`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + if familie__alleinerziehend: + out = ( + zu_versteuerndes_einkommen_vorjahr_y_sn + <= elterngeld_params["max_eink_vorj"]["single"] + ) + else: + out = ( + zu_versteuerndes_einkommen_vorjahr_y_sn + <= elterngeld_params["max_eink_vorj"]["paar"] + ) + return out + + +@policy_function( + start_date="2024-04-01", leaf_name="einkommen_vorjahr_unter_bezugsgrenze" +) +def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( + zu_versteuerndes_einkommen_vorjahr_y_sn: float, + elterngeld_params: dict, +) -> bool: + """Income before birth is below income threshold for Elterngeld. + + Parameters + ---------- + zu_versteuerndes_einkommen_vorjahr_y_sn + See :func:`zu_versteuerndes_einkommen_vorjahr_y_sn`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return zu_versteuerndes_einkommen_vorjahr_y_sn <= elterngeld_params["max_eink_vorj"] + + +@policy_function(start_date="2006-01-01", params_key_for_rounding="elterngeld") +def nettoeinkommen_approximation_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + lohnsteuer__betrag_m: float, + lohnsteuer__betrag_soli_m: float, + elterngeld_params: dict, +) -> float: + """Approximation of net wage used to calculate Elterngeld. + + This target can be used as an input in another GETTSIM call to compute Elterngeld. + In principle, the relevant gross wage for this target is the sum of the gross wages + in the 12 months before the birth of the child. For most datasets, except those with + monthly income date (IAB, DRV data), the best approximation will likely be the gross + wage in the calendar year before the birth of the child. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + lohnsteuer__betrag_m + See :func:`lohnsteuer__betrag_m`. + lohnsteuer__betrag_soli_m + See :func:`lohnsteuer__betrag_soli_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + """ + prox_ssc = ( + elterngeld_params["sozialv_pausch"] + * einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - prox_ssc + - lohnsteuer__betrag_m + - lohnsteuer__betrag_soli_m + ) diff --git a/src/_gettsim/transfers/elterngeld/elterngeld.py b/src/_gettsim/transfers/elterngeld/elterngeld.py new file mode 100644 index 0000000000..8355dd2b2b --- /dev/null +++ b/src/_gettsim/transfers/elterngeld/elterngeld.py @@ -0,0 +1,377 @@ +"""Parental leave benefits.""" + +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "kind_grundsätzlich_anspruchsberechtigt_fg": AggregateByGroupSpec( + source="kind_grundsätzlich_anspruchsberechtigt", + aggr="any", + ), + "anzahl_anträge_fg": AggregateByGroupSpec( + source="claimed", + aggr="sum", + ), + "bezugsmonate_partner": AggregateByPIDSpec( + p_id_to_aggregate_by="arbeitslosengeld_2__p_id_einstandspartner", + source="bisherige_bezugsmonate", + aggr="sum", + ), + "alter_monate_jüngstes_mitglied_fg": AggregateByGroupSpec( + source="alter_monate", + aggr="min", + ), + "anzahl_kinder_bis_2_fg": AggregateByGroupSpec( + source="familie__kind_bis_2", + aggr="sum", + ), + "anzahl_kinder_bis_5_fg": AggregateByGroupSpec( + source="familie__kind_bis_5", + aggr="sum", + ), + "anzahl_mehrlinge_jüngstes_kind_fg": AggregateByGroupSpec( + source="jüngstes_kind_oder_mehrling", + aggr="sum", + ), +} + + +@policy_function(start_date="2011-01-01", params_key_for_rounding="elterngeld") +def betrag_m( + grundsätzlich_anspruchsberechtigt: bool, + anspruchshöhe_m: float, +) -> float: + """Parental leave benefit (Elterngeld) received by the parent. + + Parameters + ---------- + grundsätzlich_anspruchsberechtigt + See :func:`grundsätzlich_anspruchsberechtigt`. + anspruchshöhe_m + See :func:`anspruchshöhe_m`. + + Returns + ------- + + """ + if grundsätzlich_anspruchsberechtigt: + out = anspruchshöhe_m + else: + out = 0.0 + return out + + +@policy_function(start_date="2007-01-01") +def basisbetrag_m( + nettoeinkommen_vorjahr_m: float, + lohnersatzanteil: float, + anzurechnendes_nettoeinkommen_m: float, + elterngeld_params: dict, +) -> float: + """Base parental leave benefit without accounting for floor and ceiling. + + Basisbetrag is calculated on the parental level. + + Parameters + ---------- + nettoeinkommen_vorjahr_m + See basic input variable :ref:`nettoeinkommen_vorjahr_m + `. + lohnersatzanteil + See :func:`lohnersatzanteil`. + anzurechnendes_nettoeinkommen_m + See :func:`anzurechnendes_nettoeinkommen_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + berücksichtigtes_einkommen = min( + nettoeinkommen_vorjahr_m, + elterngeld_params["max_zu_berücksichtigendes_einkommen"], + ) + return ( + berücksichtigtes_einkommen - anzurechnendes_nettoeinkommen_m + ) * lohnersatzanteil + + +@policy_function( + start_date="2007-01-01", + end_date="2010-12-31", + leaf_name="betrag_m", + params_key_for_rounding="elterngeld", +) +def elterngeld_not_implemented() -> float: + raise NotImplementedError("Elterngeld is not implemented prior to 2011.") + + +@policy_function(start_date="2007-01-01") +def anspruchshöhe_m( + basisbetrag_m: float, + geschwisterbonus_m: float, + mehrlingsbonus_m: float, + elterngeld_params: dict, +) -> float: + """Elterngeld before checking eligibility. + + Anspruchshöhe is calculated on the parental level. + + Parameters + ---------- + basisbetrag_m + See :func:`basisbetrag_m`. + geschwisterbonus_m + See :func:`geschwisterbonus_m`. + mehrlingsbonus_m + See :func:`mehrlingsbonus_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return ( + min( + max( + basisbetrag_m, + elterngeld_params["mindestbetrag"], + ), + elterngeld_params["höchstbetrag"], + ) + + geschwisterbonus_m + + mehrlingsbonus_m + ) + + +@policy_function(start_date="2007-01-01") +def grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 + claimed: bool, + arbeitsstunden_w: float, + kind_grundsätzlich_anspruchsberechtigt_fg: bool, + einkommen_vorjahr_unter_bezugsgrenze: bool, + bezugsmonate_unter_grenze_fg: bool, + elterngeld_params: dict, +) -> bool: + """Parent is eligible to receive Elterngeld. + + Parameters + ---------- + claimed + See basic input variable :ref:`claimed `. + arbeitsstunden_w + See basic input variable :ref:`arbeitsstunden_w `. + kind_grundsätzlich_anspruchsberechtigt_fg + See :func:`kind_grundsätzlich_anspruchsberechtigt_fg`. + einkommen_vorjahr_unter_bezugsgrenze + See :func:`einkommen_vorjahr_unter_bezugsgrenze`. + bezugsmonate_unter_grenze_fg + See :func:`bezugsmonate_unter_grenze_fg`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return ( + claimed + and arbeitsstunden_w <= elterngeld_params["max_arbeitsstunden_w"] + and einkommen_vorjahr_unter_bezugsgrenze + and kind_grundsätzlich_anspruchsberechtigt_fg + and bezugsmonate_unter_grenze_fg + ) + + +@policy_function(start_date="2007-01-01") +def bezugsmonate_unter_grenze_fg( + bisherige_bezugsmonate_fg: int, + bezugsmonate_partner: int, + familie__alleinerziehend: bool, + anzahl_anträge_fg: int, + elterngeld_params: dict, +) -> bool: + """Elterngeld claimed for less than the maximum number of months in the past by the + parent. + + Parameters + ---------- + bisherige_bezugsmonate_fg + See :func:`bisherige_bezugsmonate_fg`. + bezugsmonate_partner + See function :func:`bezugsmonate_partner`. + familie__alleinerziehend + See basic input variable :ref:`familie__alleinerziehend`. + anzahl_anträge_fg + See :func:`anzahl_anträge_fg`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + if familie__alleinerziehend or bezugsmonate_partner >= 2: + out = ( + bisherige_bezugsmonate_fg + < elterngeld_params["max_monate_mit_partnermonate"] + ) + elif anzahl_anträge_fg > 1: + out = ( + bisherige_bezugsmonate_fg + 1 + < elterngeld_params["max_monate_mit_partnermonate"] + ) + else: + out = ( + bisherige_bezugsmonate_fg + < elterngeld_params["max_monate_ohne_partnermonate"] + ) + return out + + +@policy_function(start_date="2007-01-01") +def kind_grundsätzlich_anspruchsberechtigt( + alter: int, + elterngeld_params: dict, +) -> bool: + """Child is young enough to give rise to Elterngeld claim. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return alter <= elterngeld_params["max_monate_mit_partnermonate"] + + +@policy_function(start_date="2011-01-01") +def lohnersatzanteil( + nettoeinkommen_vorjahr_m: float, + lohnersatzanteil_einkommen_untere_grenze: float, + lohnersatzanteil_einkommen_obere_grenze: float, + elterngeld_params: dict, +) -> float: + """Replacement rate of Elterngeld (before applying floor and ceiling rules). + + According to § 2 (2) BEEG the percentage increases below the first step and + decreases above the second step until prozent_minimum. + + Parameters + ---------- + nettoeinkommen_vorjahr_m + See basic input variable + :ref:`nettoeinkommen_vorjahr_m`. + lohnersatzanteil_einkommen_untere_grenze + See :func:`lohnersatzanteil_einkommen_untere_grenze`. + lohnersatzanteil_einkommen_obere_grenze + See :func:`lohnersatzanteil_einkommen_obere_grenze`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + Returns + ------- + + """ + + # Higher replacement rate if considered income is below a threshold + if ( + nettoeinkommen_vorjahr_m + < elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] + and nettoeinkommen_vorjahr_m > 0 + ): + out = elterngeld_params["faktor"] + ( + lohnersatzanteil_einkommen_untere_grenze + / elterngeld_params["eink_schritt_korrektur"] + * elterngeld_params["prozent_korrektur"] + ) + # Lower replacement rate if considered income is above a threshold + elif ( + nettoeinkommen_vorjahr_m + > elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] + ): + # Replacement rate is only lowered up to a specific value + out = max( + elterngeld_params["faktor"] + - ( + lohnersatzanteil_einkommen_obere_grenze + / elterngeld_params["eink_schritt_korrektur"] + * elterngeld_params["prozent_korrektur"] + ), + elterngeld_params["prozent_minimum"], + ) + else: + out = elterngeld_params["faktor"] + + return out + + +@policy_function(start_date="2007-01-01") +def anrechenbarer_betrag_m( + betrag_m: float, + anzahl_mehrlinge_fg: int, + elterngeld_params: dict, +) -> float: + """Elterngeld that can be considered as income for other transfers. + + Relevant for Wohngeld and Grundsicherung im Alter. + + For Arbeitslosengeld II / Bürgergeld as well as Kinderzuschlag the whole amount of + Elterngeld is considered as income, except for the case in which the parents still + worked right before they had children. See: + https://www.kindergeld.org/elterngeld-einkommen/ + + Parameters + ---------- + betrag_m + See :func:`betrag_m`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + anzahl_mehrlinge_fg + See :func:`anzahl_mehrlinge_fg`. + + Returns + ------- + + """ + out = max( + betrag_m - ((1 + anzahl_mehrlinge_fg) * elterngeld_params["mindestbetrag"]), + 0, + ) + return out + + +@policy_function() +def jüngstes_kind_oder_mehrling( + alter_monate: float, + alter_monate_jüngstes_mitglied_fg: float, + familie__kind: bool, +) -> bool: + """Check if person is the youngest child in the household or a twin, triplet, etc. + of the youngest child. + + # ToDo: replace familie__kind by some age restriction + # ToDo: Check definition as relevant for Elterngeld. Currently, it is calculated as + # ToDo: age not being larger than 0.1 of a month + + Parameters + ---------- + alter_monate + See :func:`alter_monate`. + alter_monate_jüngstes_mitglied_fg + See :func:`alter_monate_jüngstes_mitglied_fg`. + familie__kind + See basic input variable :ref:`familie__kind `. + + Returns + ------- + + """ + out = ((alter_monate - alter_monate_jüngstes_mitglied_fg) < 0.1) and familie__kind + return out diff --git a/src/_gettsim/transfers/elterngeld/geschwisterbonus.py b/src/_gettsim/transfers/elterngeld/geschwisterbonus.py new file mode 100644 index 0000000000..924068c67b --- /dev/null +++ b/src/_gettsim/transfers/elterngeld/geschwisterbonus.py @@ -0,0 +1,104 @@ +"""Parental leave bonus for siblings.""" + +from _gettsim.function_types import policy_function + + +@policy_function(start_date="2007-01-01") +def geschwisterbonus_m( + basisbetrag_m: float, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: bool, + elterngeld_params: dict, +) -> float: + """Elterngeld bonus for (older) siblings. + + According to § 2a parents of siblings get a bonus. + + Parameters + ---------- + basisbetrag_m + See :func:`basisbetrag_m`. + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg + See :func:`geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + if geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + out = max( + elterngeld_params["geschwisterbonus_aufschlag"] * basisbetrag_m, + elterngeld_params["geschwisterbonus_minimum"], + ) + else: + out = 0.0 + return out + + +@policy_function(start_date="2007-01-01") +def mehrlingsbonus_m(anzahl_mehrlinge_fg: int, elterngeld_params: dict) -> float: + """Elterngeld bonus for multiples. + + Parameters + ---------- + anzahl_mehrlinge_fg + See :func:`anzahl_mehrlinge_fg`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + return anzahl_mehrlinge_fg * elterngeld_params["mehrlingbonus"] + + +@policy_function(start_date="2007-01-01") +def geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg( + anzahl_kinder_bis_2_fg: int, + anzahl_kinder_bis_5_fg: int, + elterngeld_params: dict, +) -> bool: + """Siblings that give rise to Elterngeld siblings bonus. + + Parameters + ---------- + anzahl_kinder_bis_2_fg + See :func:`anzahl_kinder_bis_2_fg`. + anzahl_kinder_bis_5_fg + See :func:`anzahl_kinder_bis_5_fg`. + elterngeld_params + See params documentation :ref:`elterngeld_params `. + + Returns + ------- + + """ + geschwister_unter_3 = ( + anzahl_kinder_bis_2_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][3] + ) + geschwister_unter_6 = ( + anzahl_kinder_bis_5_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][6] + ) + + return geschwister_unter_3 or geschwister_unter_6 + + +@policy_function(start_date="2007-01-01") +def anzahl_mehrlinge_fg( + anzahl_mehrlinge_jüngstes_kind_fg: int, +) -> int: + """Number of multiples of the youngest child. + + Parameters + ---------- + anzahl_mehrlinge_jüngstes_kind_fg + See :func:`anzahl_mehrlinge_jüngstes_kind_fg`. + + Returns + ------- + + """ + out = anzahl_mehrlinge_jüngstes_kind_fg - 1 + return max(out, 0) diff --git a/src/_gettsim/transfers/erwerbsm_rente.py b/src/_gettsim/transfers/erwerbsm_rente.py deleted file mode 100644 index 1d642e67cb..0000000000 --- a/src/_gettsim/transfers/erwerbsm_rente.py +++ /dev/null @@ -1,336 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -@policy_function(start_date="2001-01-01") -def erwerbsm_rente_m( # noqa: PLR0913 - erwerbsm_rente_zugangsfaktor: float, - entgeltp_west_erwerbsm_rente: float, - entgeltp_ost_erwerbsm_rente: float, - rentenartfaktor: float, - ges_rente_vorauss_erwerbsm: bool, - ges_rente_params: dict, -) -> float: - """Erwerbsminderungsrente (amount paid by public disability insurance if claimed) - - Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente - - - Parameters - ---------- - erwerbsm_rente_zugangsfaktor - See :func:`erwerbsm_rente_zugangsfaktor`. - entgeltp_west_erwerbsm_rente - See :func:`entgeltp_west_erwerbsm_rente`. - entgeltp_ost_erwerbsm_rente - See :func:`entgeltp_ost_erwerbsm_rente`. - rentenwert - See :func:`rentenwert`. - rentenartfaktor - See :func:`rentenartfaktor`. - ges_rente_vorauss_erwerbsm - See :func:`ges_rente_vorauss_erwerbsm`. - Returns - ------- - Erwerbsminderungsrente (amount paid by public disability insurance if claimed) - - """ - - if ges_rente_vorauss_erwerbsm: - out = ( - ( - entgeltp_west_erwerbsm_rente * ges_rente_params["rentenwert"]["west"] - + entgeltp_ost_erwerbsm_rente * ges_rente_params["rentenwert"]["ost"] - ) - * erwerbsm_rente_zugangsfaktor - * rentenartfaktor - ) - else: - out = 0.0 - return out - - -@policy_function(start_date="2001-01-01") -def ges_rente_vorauss_erwerbsm( - voll_erwerbsgemind: bool, - teilw_erwerbsgemind: bool, - m_pflichtbeitrag: float, - ges_rente_wartezeit_5: bool, -) -> bool: - """ - Eligibility for Erwerbsminderungsrente (public disability insurance claim). - - Legal reference: § 43 Abs. 1 SGB VI - - Parameters - ---------- - voll_erwerbsgemind - See basic input variable :ref:`voll_erwerbsgemind . - teilw_erwerbsgemind - See basic input variable :ref:`teilw_erwerbsgemind . - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag . - ges_rente_wartezeit_5 - See :func:`ges_rente_wartezeit_5`. - Returns - ------- - Eligibility for Erwerbsminderungsrente (public disability insurance claim) as a bool - """ - - anspruch_erwerbsm_rente = ( - (voll_erwerbsgemind or teilw_erwerbsgemind) - and ges_rente_wartezeit_5 - and m_pflichtbeitrag >= 36 - ) - - return anspruch_erwerbsm_rente - - -@policy_function(start_date="2001-01-01") -def entgeltp_west_erwerbsm_rente( - entgeltp_west: float, - entgeltp_zurechnungszeit: float, - anteil_entgeltp_ost: float, -) -> float: - """Entgeltpunkte accumulated in Western Germany which Erwerbsminderungsrente - is based on (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - entgeltp_west - See basic input variable :ref:`entgeltp_west - entgeltp_zurechnungszeit - See :func:`entgeltp_zurechnungszeit`. - anteil_entgeltp_ost - See :func:`anteil_entgeltp_ost`. - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) - - """ - - out = entgeltp_west + (entgeltp_zurechnungszeit * (1 - anteil_entgeltp_ost)) - - return out - - -@policy_function(start_date="2001-01-01") -def entgeltp_ost_erwerbsm_rente( - entgeltp_ost: float, - entgeltp_zurechnungszeit: float, - anteil_entgeltp_ost: float, -) -> float: - """Entgeltpunkte accumulated in Eastern Germany which Erwerbsminderungsrente - is based on (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - entgeltp_ost - See basic input variable :ref:`entgeltp_ost - entgeltp_zurechnungszeit - See :func:`entgeltp_zurechnungszeit`. - anteil_entgeltp_ost - See :func:`anteil_entgeltp_ost`. - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) - - """ - - out = entgeltp_ost + (entgeltp_zurechnungszeit * anteil_entgeltp_ost) - - return out - - -@policy_function(start_date="2001-01-01") -def entgeltp_zurechnungszeit( - durchschn_entgeltp: float, - age_of_retirement: float, - erwerbsm_rente_params: dict, -) -> float: - """Additional Entgeltpunkte accumulated through "Zurechnungszeit" for - Erwerbsminderungsrente (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - durchschn_entgeltp - See :func:`durchschn_entgeltp`. - age_of_retirement - See :func:`age_of_retirement`. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params . - - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) - - """ - zurechnungszeitgrenze = erwerbsm_rente_params["zurechnungszeitgrenze"] - - out = (zurechnungszeitgrenze - (age_of_retirement)) * durchschn_entgeltp - - return out - - -@policy_function(start_date="2001-01-01") -def rentenartfaktor( - teilw_erwerbsgemind: bool, - erwerbsm_rente_params: dict, -) -> float: - """Rentenartfaktor for Erwerbsminderungsrente - (public disability insurance) - - Legal reference: SGB VI § 67: Rentenartfaktor - - Parameters - ---------- - teilw_erwerbsgemind - See basic input variable :ref:`teilw_erwerbsgemind . - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params . - - Returns - ------- - Rentenartfaktor - - """ - - if teilw_erwerbsgemind: - out = erwerbsm_rente_params["rentenartfaktor"]["teilw"] - - else: - out = erwerbsm_rente_params["rentenartfaktor"]["voll"] - - return out - - -@policy_function(start_date="2001-01-01") -def erwerbsm_rente_zugangsfaktor( - age_of_retirement: float, - _erwerbsm_rente_langj_versicherte_wartezeit: bool, - ges_rente_params: dict, - erwerbsm_rente_params: dict, -) -> float: - """Zugangsfaktor for Erwerbsminderungsrente - (public disability insurance) - For each month that a pensioner retires before the age limit, a fraction of - the pension is deducted. The maximum deduction is capped. - This max deduction is the norm for the public disability insurance. - - Legal reference: § 77 Abs. 2-4 SGB VI - - Paragraph 4 regulates an exceptional case in which pensioners can already - retire at 63 without deductions if they can prove 40 years of - (Pflichtbeiträge, Berücksichtigungszeiten and - certain Anrechnungszeiten or Ersatzzeiten). - - Parameters - ---------- - age_of_retirement - See :func:`age_of_retirement`. - _erwerbsm_rente_langj_versicherte_wartezeit - See :func:`_erwerbsm_rente_langj_versicherte_wartezeit`. - ges_rente_params - See params documentation :ref:`ges_rente_params . - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params . - - - Returns - ------- - Zugangsfaktor for Erwerbsminderungsrente (public disability insurance) - - """ - - if _erwerbsm_rente_langj_versicherte_wartezeit: - altersgrenze_abschlagsfrei = erwerbsm_rente_params[ - "altersgrenze_langj_versicherte_abschlagsfrei" - ] - else: - altersgrenze_abschlagsfrei = erwerbsm_rente_params["altersgrenze_abschlagsfrei"] - - zugangsfaktor = ( - 1 - + (age_of_retirement - altersgrenze_abschlagsfrei) - * ( - ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ - "vorzeitiger_renteneintritt" - ] - ) - ) - out = max(zugangsfaktor, erwerbsm_rente_params["min_zugangsfaktor"]) - - return out - - -@policy_function(start_date="2001-01-01") -def _erwerbsm_rente_langj_versicherte_wartezeit( # noqa: PLR0913 - m_pflichtbeitrag: float, - m_freiw_beitrag: float, - ges_rente_anrechnungszeit_45: float, - m_ersatzzeit: float, - m_kind_berücks_zeit: float, - m_pfleg_berücks_zeit: float, - ges_rente_params: dict, - erwerbsm_rente_params: dict, -) -> bool: - """Whether Wartezeit of 35 or 40 years according to § 51 Abs. 3a SGB VI is fulfilled - - Parameters - ---------- - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag `. - m_freiw_beitrag - See basic input variable :ref:`m_freiw_beitrag `. - ges_rente_anrechnungszeit_45 - See :func:`ges_rente_anrechnungszeit_45`. - m_ersatzzeit - See basic input variable :ref:`m_ersatzzeit `. - m_kind_berücks_zeit - See basic input variable :ref:`m_kind_berücks_zeit `. - m_pfleg_berücks_zeit - See basic input variable :ref:`m_pfleg_berücks_zeit `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params `. - - Returns - ------- - Wartezeit of 35 or 40 years according to § 51 Abs. 3a SGB VI is fulfilled - - """ - if m_pflichtbeitrag >= ges_rente_params["wartezeit_45_pflichtbeitragsmonate"]: - freiwilligbeitr = m_freiw_beitrag - else: - freiwilligbeitr = 0 - - m_zeiten = ( - m_pflichtbeitrag - + freiwilligbeitr - + ges_rente_anrechnungszeit_45 - + m_ersatzzeit - + m_pfleg_berücks_zeit - + m_kind_berücks_zeit - ) / 12 - - out = ( - m_zeiten - >= erwerbsm_rente_params["wartezeitgrenze_langj_versicherte_abschlagsfrei"] - ) - - return out diff --git a/src/_gettsim/transfers/erziehungsgeld.py b/src/_gettsim/transfers/erziehungsgeld.py deleted file mode 100644 index ee48316c5e..0000000000 --- a/src/_gettsim/transfers/erziehungsgeld.py +++ /dev/null @@ -1,435 +0,0 @@ -"""Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" - -from _gettsim.functions.policy_function import policy_function - -aggregate_by_p_id_erziehungsgeld = { - "erziehungsgeld_eltern_m": { - "p_id_to_aggregate_by": "p_id_erziehgeld_empf", - "source_col": "erziehungsgeld_kind_m", - "aggr": "sum", - }, -} - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def erziehungsgeld_m( - erziehungsgeld_eltern_m: int, - erziehungsgeld_anspruch_eltern: bool, -) -> bool: - """Total parental leave benefits (Erziehungsgeld). - - Parental leave benefits for the parent that claims the benefit. - - Legal reference: BErzGG (BGBl. I 1985 S. 2154; BGBl. I 2004 S. 206) - - Parameters - ---------- - erziehungsgeld_eltern_m - See :func:`erziehungsgeld_eltern_m`. - erziehungsgeld_anspruch_eltern - See :func:`erziehungsgeld_anspruch_eltern`. - - Returns - ------- - Parental leave benefits (Erziehungsgeld). - - """ - if erziehungsgeld_anspruch_eltern: - out = erziehungsgeld_eltern_m - else: - out = 0.0 - - return out - - -@policy_function( - end_date="2003-12-31", - leaf_name="erziehungsgeld_kind_m", - params_key_for_rounding="erziehungsgeld", -) -def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: - raise NotImplementedError( - """ - Erziehungsgeld is not implemented yet prior to 2004, see - https://github.com/iza-institute-of-labor-economics/gettsim/issues/673 - """ - ) - - -@policy_function( - start_date="2004-01-01", - end_date="2008-12-31", - leaf_name="erziehungsgeld_kind_m", - params_key_for_rounding="erziehungsgeld", -) -def erziehungsgeld_kind_mit_budgetsatz_m( - erziehungsgeld_anspruch_kind: bool, - erziehungsgeld_abzug_transfer: float, - erziehungsgeld_ohne_abzug_m: float, -) -> float: - """Parental leave benefit (Erziehungsgeld) on child level. - - For the calculation, the relevant income, the age of the youngest child, the income - threshold and the eligibility for erziehungsgeld is needed. - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 - - Parameters - ---------- - erziehungsgeld_anspruch_kind - See :func:`erziehungsgeld_anspruch_kind`. - erziehungsgeld_abzug_transfer - See :func:`erziehungsgeld_abzug_transfer`. - erziehungsgeld_ohne_abzug_m - See :func:`erziehungsgeld_ohne_abzug`. - - - Returns - ------- - Monthly claim of parental leave benefit (Erziehungsgeld) on child level - """ - if erziehungsgeld_anspruch_kind: - out = max( - erziehungsgeld_ohne_abzug_m - erziehungsgeld_abzug_transfer, - 0.0, - ) - else: - out = 0.0 - - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def erziehungsgeld_ohne_abzug_m( - budgetsatz_erzieh: bool, - erziehungsgeld_eink_relev_kind_y: float, - _erziehungsgeld_einkommensgrenze_kind_y: float, - alter_monate: float, - erziehungsgeld_params: dict, -) -> float: - """Parental leave benefit (Erziehungsgeld) without means-test on child level. - - Parameters - ---------- - budgetsatz_erzieh - See :See basic input variable :ref:`budgetsatz_erzieh - `. - erziehungsgeld_eink_relev_kind_y - See :func:`erziehungsgeld_eink_relev_kind_y`. - _erziehungsgeld_einkommensgrenze_kind_y - See :func:`_erziehungsgeld_einkommensgrenze_kind_y`. - alter_monate - See :func:`alter_monate`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - Parental leave benefit (Erziehungsgeld) without means-test - """ - # no benefit if income is above threshold and child is younger than threshold - if ( - erziehungsgeld_eink_relev_kind_y > _erziehungsgeld_einkommensgrenze_kind_y - and alter_monate - < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] - ): - out = 0.0 - elif budgetsatz_erzieh: - out = erziehungsgeld_params["erziehungsgeld_satz"]["budgetsatz"] - else: - out = erziehungsgeld_params["erziehungsgeld_satz"]["regelsatz"] - - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def erziehungsgeld_abzug_transfer( - erziehungsgeld_eink_relev_kind_m: float, - _erziehungsgeld_einkommensgrenze_kind_m: float, - alter_monate: float, - erziehungsgeld_params: dict, -) -> float: - """Reduction of parental leave benefits (means-test). - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) - - Parameters - ---------- - erziehungsgeld_eink_relev_kind_m - See :func:`erziehungsgeld_eink_relev_kind_y`. - _erziehungsgeld_einkommensgrenze_kind_m - See :func:`_erziehungsgeld_einkommensgrenze_kind_y`. - alter_monate - See :func:`alter_monate`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - Income reduction for parental leave benefit (Erziehungsgeld) - """ - if ( - erziehungsgeld_eink_relev_kind_m > _erziehungsgeld_einkommensgrenze_kind_m - and alter_monate - >= erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] - ): - out = ( - erziehungsgeld_eink_relev_kind_m * erziehungsgeld_params["abschlag_faktor"] - ) - else: - out = 0.0 - return out - - -@policy_function( - start_date="2004-01-01", - end_date="2006-12-10", - leaf_name="erziehungsgeld_anspruch_kind", -) -def _erziehungsgeld_anspruch_kind_vor_abschaffung( - kind: bool, - alter_monate: float, - budgetsatz_erzieh: bool, - erziehungsgeld_params: dict, -) -> bool: - """Eligibility for parental leave benefit (Erziehungsgeld) on child level. - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) - - Parameters - ---------- - kind - See :See basic input variable :ref:`kind `. - alter_monate - See :func:`alter_monate`. - budgetsatz_erzieh - See :See basic input variable :ref:`budgetsatz_erzieh - `. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - eligibility of (Erziehungsgeld) as a bool - - """ - if budgetsatz_erzieh: - out = kind and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] - - else: - out = kind and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] - - return out - - -@policy_function( - start_date="2006-12-11", - end_date="2008-12-31", - leaf_name="erziehungsgeld_anspruch_kind", -) -def _erziehungsgeld_anspruch_kind_nach_abschaffung( - kind: bool, - geburtsjahr: int, - alter_monate: float, - budgetsatz_erzieh: bool, - erziehungsgeld_params: dict, -) -> bool: - """Eligibility for parental leave benefit (Erziehungsgeld) on child level. Abolished - for children born after the cut-off date. - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) - - Parameters - ---------- - kind - See :See basic input variable :ref:`kind `. - geburtsjahr - See :func:`geburtsjahr`. - alter_monate - See :func:`alter_monate`. - budgetsatz_erzieh - See :See basic input variable :ref:`budgetsatz_erzieh - `. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - eligibility of (Erziehungsgeld) as a bool - - """ - if budgetsatz_erzieh and geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: - out = kind and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] - - elif geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: - out = kind and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] - - else: - out = False - - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def erziehungsgeld_anspruch_eltern( - arbeitsstunden_w: float, - erziehungsgeld_anspruch_kind_fg: bool, - erziehungsgeld_params: dict, -) -> bool: - """Eligibility for parental leave benefit (Erziehungsgeld) on parental level. - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.207) - - Parameters - ---------- - arbeitsstunden_w - See :See basic input variable :ref:`arbeitsstunden_w `. - erziehungsgeld_anspruch_kind_fg - See :func:`erziehungsgeld_anspruch_kind_fg`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - eligibility of parental leave benefit (Erziehungsgeld) as a bool - - """ - out = erziehungsgeld_anspruch_kind_fg and ( - arbeitsstunden_w <= erziehungsgeld_params["arbeitsstunden_w_grenze"] - ) - - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def erziehungsgeld_eink_relev_kind_y( - bruttolohn_vorj_y_fg: float, - anz_erwachsene_fg: int, - erziehungsgeld_anspruch_kind: bool, - erziehungsgeld_params: dict, - eink_st_abzuege_params: dict, -) -> float: - """Income relevant for means testing for parental leave benefit (Erziehungsgeld). - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) - - There is special rule for "Beamte, Soldaten und Richter" which is not - implemented yet. - - Parameters - ---------- - bruttolohn_vorj_y_fg - See :func:`bruttolohn_vorj_y_fg`. - anz_erwachsene_fg - See :func:`anz_erwachsene_fg`. - erziehungsgeld_anspruch_kind - See :func:`erziehungsgeld_anspruch_kind`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - - Returns - ------- - Relevant income - """ - - if erziehungsgeld_anspruch_kind: - out = ( - bruttolohn_vorj_y_fg - - eink_st_abzuege_params["werbungskostenpauschale"] * anz_erwachsene_fg - ) * erziehungsgeld_params["pauschal_abzug_auf_einkommen"] - else: - out = 0.0 - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def _erziehungsgeld_einkommensgrenze_kind_y( - _erziehungsgeld_einkommensgrenze_vor_aufschl: float, - anz_kinder_mit_kindergeld_fg: float, - erziehungsgeld_anspruch_kind: bool, - erziehungsgeld_params: dict, -) -> float: - """Income threshold for parental leave benefit (Erziehungsgeld). - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) - - Parameters - ---------- - _erziehungsgeld_einkommensgrenze_vor_aufschl - See :func:`_erziehungsgeld_einkommensgrenze_vor_aufschl`. - anz_kinder_mit_kindergeld_fg - See :func:`anz_kinder_mit_kindergeld_fg`. - erziehungsgeld_anspruch_kind - See :func:`erziehungsgeld_anspruch_kind`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - - Returns - ------- - income threshold for parental leave benefit (Erziehungsgeld) on child level - """ - - out = ( - _erziehungsgeld_einkommensgrenze_vor_aufschl - + (anz_kinder_mit_kindergeld_fg - 1) - * erziehungsgeld_params["aufschlag_einkommen"] - ) - if not erziehungsgeld_anspruch_kind: - out = 0.0 - return out - - -@policy_function(start_date="2004-01-01", end_date="2008-12-31") -def _erziehungsgeld_einkommensgrenze_vor_aufschl( - alleinerz_fg: bool, - alter_monate: float, - budgetsatz_erzieh: bool, - erziehungsgeld_params: dict, -) -> float: - """Income threshold for parental leave benefit (Erziehungsgeld) on child level - before adding the bonus for additional children - - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) - - Parameters - ---------- - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params `. - alleinerz_fg - See :func:`alleinerz_fg`. - alter_monate - See :func:`alter_monate`. - budgetsatz_erzieh - See :See basic input variable :ref:`budgetsatz_erzieh - `. - - Returns - ------- - Income threshold for parental leave benefit (Erziehungsgeld) before child bonus - """ - # There are different income thresholds depending on the age of the child, - # the fact if a person is a single parent, and if regelsatz or budgetsatz is applied - - if ( - alter_monate - < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] - ): - limit = "limit" - else: - limit = "reduced_limit" - - if alleinerz_fg: - status_eltern = "alleinerz" - else: - status_eltern = "paar" - - if budgetsatz_erzieh: - satz = "budgetsatz" - else: - satz = "regelsatz" - - out = erziehungsgeld_params["einkommensgrenze"][limit][status_eltern][satz] - - return out diff --git a/src/_gettsim/transfers/erziehungsgeld/__init__.py b/src/_gettsim/transfers/erziehungsgeld/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py new file mode 100644 index 0000000000..e316a97263 --- /dev/null +++ b/src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py @@ -0,0 +1,445 @@ +"""Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "anspruchshöhe_m": AggregateByPIDSpec( + p_id_to_aggregate_by="p_id_empfänger", + source="anspruchshöhe_kind_m", + aggr="sum", + ), +} + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def betrag_m( + anspruchshöhe_m: int, + grundsätzlich_anspruchsberechtigt: bool, +) -> bool: + """Total parental leave benefits (Erziehungsgeld) received by the parent. + + Legal reference: BErzGG (BGBl. I 1985 S. 2154; BGBl. I 2004 S. 206) + + Parameters + ---------- + anspruchshöhe_m + See :func:`anspruchshöhe_m`. + grundsätzlich_anspruchsberechtigt + See :func:`grundsätzlich_anspruchsberechtigt`. + + Returns + ------- + Parental leave benefits (Erziehungsgeld). + + """ + if grundsätzlich_anspruchsberechtigt: + out = anspruchshöhe_m + else: + out = 0.0 + + return out + + +@policy_function( + end_date="2003-12-31", + leaf_name="anspruchshöhe_kind_m", + params_key_for_rounding="erziehungsgeld", +) +def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: + raise NotImplementedError( + """ + Erziehungsgeld is not implemented yet prior to 2004, see + https://github.com/iza-institute-of-labor-economics/gettsim/issues/673 + """ + ) + + +@policy_function( + start_date="2004-01-01", + end_date="2008-12-31", + leaf_name="anspruchshöhe_kind_m", + params_key_for_rounding="erziehungsgeld", +) +def anspruchshöhe_kind_mit_budgetsatz_m( + kind_grundsätzlich_anspruchsberechtigt: bool, + abzug_durch_einkommen_m: float, + basisbetrag_m: float, +) -> float: + """Parental leave benefit (Erziehungsgeld) on child level. + + For the calculation, the relevant income, the age of the youngest child, the income + threshold and the eligibility for erziehungsgeld is needed. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 + + Parameters + ---------- + kind_grundsätzlich_anspruchsberechtigt + See :func:`kind_grundsätzlich_anspruchsberechtigt`. + abzug_durch_einkommen_m + See :func:`abzug_durch_einkommen_m`. + basisbetrag_m + See :func:`erziehungsgeld_ohne_abzug`. + + + Returns + ------- + Monthly claim of parental leave benefit (Erziehungsgeld) on child level + """ + if kind_grundsätzlich_anspruchsberechtigt: + out = max( + basisbetrag_m - abzug_durch_einkommen_m, + 0.0, + ) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def basisbetrag_m( + budgetsatz: bool, + anzurechnendes_einkommen_y: float, + einkommensgrenze_y: float, + alter_monate: float, + erziehungsgeld_params: dict, +) -> float: + """Parental leave benefit (Erziehungsgeld) without means-test on child level. + + Parameters + ---------- + budgetsatz + See :See basic input variable :ref:`budgetsatz + `. + anzurechnendes_einkommen_y + See :func:`anzurechnendes_einkommen_y`. + einkommensgrenze_y + See :func:`einkommensgrenze_y`. + alter_monate + See :func:`alter_monate`. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + Parental leave benefit (Erziehungsgeld) without means-test + """ + # no benefit if income is above threshold and child is younger than threshold + if ( + anzurechnendes_einkommen_y > einkommensgrenze_y + and alter_monate + < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] + ): + out = 0.0 + elif budgetsatz: + out = erziehungsgeld_params["erziehungsgeld_satz"]["budgetsatz"] + else: + out = erziehungsgeld_params["erziehungsgeld_satz"]["regelsatz"] + + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def abzug_durch_einkommen_m( + anzurechnendes_einkommen_m: float, + einkommensgrenze_m: float, + alter_monate: float, + erziehungsgeld_params: dict, +) -> float: + """Reduction of parental leave benefits (means-test). + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) + + Parameters + ---------- + anzurechnendes_einkommen_m + See :func:`anzurechnendes_einkommen_y`. + einkommensgrenze_m + See :func:`einkommensgrenze_y`. + alter_monate + See :func:`alter_monate`. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + Income reduction for parental leave benefit (Erziehungsgeld) + """ + if ( + anzurechnendes_einkommen_m > einkommensgrenze_m + and alter_monate + >= erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] + ): + out = anzurechnendes_einkommen_m * erziehungsgeld_params["abschlag_faktor"] + else: + out = 0.0 + return out + + +@policy_function( + start_date="2004-01-01", + end_date="2006-12-10", + leaf_name="kind_grundsätzlich_anspruchsberechtigt", +) +def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( + familie__kind: bool, + alter_monate: float, + budgetsatz: bool, + erziehungsgeld_params: dict, +) -> bool: + """Eligibility for parental leave benefit (Erziehungsgeld) on child level. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) + + Parameters + ---------- + familie__kind + See :See basic input variable :ref:`familie__kind `. + alter_monate + See :func:`alter_monate`. + budgetsatz + See :See basic input variable :ref:`budgetsatz + `. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + eligibility of (Erziehungsgeld) as a bool + + """ + if budgetsatz: + out = ( + familie__kind + and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] + ) + + else: + out = ( + familie__kind + and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] + ) + + return out + + +@policy_function( + start_date="2006-12-11", + end_date="2008-12-31", + leaf_name="kind_grundsätzlich_anspruchsberechtigt", +) +def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( + familie__kind: bool, + geburtsjahr: int, + alter_monate: float, + budgetsatz: bool, + erziehungsgeld_params: dict, +) -> bool: + """Eligibility for parental leave benefit (Erziehungsgeld) on child level. Abolished + for children born after the cut-off date. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) + + Parameters + ---------- + familie__kind + See :See basic input variable :ref:`familie__kind `. + geburtsjahr + See :func:`geburtsjahr`. + alter_monate + See :func:`alter_monate`. + budgetsatz + See :See basic input variable :ref:`budgetsatz + `. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + eligibility of (Erziehungsgeld) as a bool + + """ + if budgetsatz and geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: + out = ( + familie__kind + and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] + ) + + elif geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: + out = ( + familie__kind + and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] + ) + + else: + out = False + + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def grundsätzlich_anspruchsberechtigt( + arbeitsstunden_w: float, + kind_grundsätzlich_anspruchsberechtigt_fg: bool, + erziehungsgeld_params: dict, +) -> bool: + """Eligibility for parental leave benefit (Erziehungsgeld) on parental level. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.207) + + Parameters + ---------- + arbeitsstunden_w + See :See basic input variable :ref:`arbeitsstunden_w `. + kind_grundsätzlich_anspruchsberechtigt_fg + See :func:`kind_grundsätzlich_anspruchsberechtigt_fg`. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + eligibility of parental leave benefit (Erziehungsgeld) as a bool + + """ + out = kind_grundsätzlich_anspruchsberechtigt_fg and ( + arbeitsstunden_w <= erziehungsgeld_params["arbeitsstunden_w_grenze"] + ) + + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def anzurechnendes_einkommen_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg: float, + arbeitslosengeld_2__anzahl_erwachsene_fg: int, + kind_grundsätzlich_anspruchsberechtigt: bool, + erziehungsgeld_params: dict, + eink_st_abzuege_params: dict, +) -> float: + """Income relevant for means testing for parental leave benefit (Erziehungsgeld). + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) + + There is special rule for "Beamte, Soldaten und Richter" which is not + implemented yet. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg`. + arbeitslosengeld_2__anzahl_erwachsene_fg + See :func:`arbeitslosengeld_2__anzahl_erwachsene_fg`. + kind_grundsätzlich_anspruchsberechtigt + See :func:`kind_grundsätzlich_anspruchsberechtigt`. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + + Returns + ------- + Relevant income + """ + + if kind_grundsätzlich_anspruchsberechtigt: + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg + - eink_st_abzuege_params["werbungskostenpauschale"] + * arbeitslosengeld_2__anzahl_erwachsene_fg + ) * erziehungsgeld_params["pauschal_abzug_auf_einkommen"] + else: + out = 0.0 + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def einkommensgrenze_y( + einkommensgrenze_ohne_geschwisterbonus: float, + arbeitslosengeld_2__anzahl_kinder_fg: float, + kind_grundsätzlich_anspruchsberechtigt: bool, + erziehungsgeld_params: dict, +) -> float: + """Income threshold for parental leave benefit (Erziehungsgeld). + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + + Parameters + ---------- + einkommensgrenze_ohne_geschwisterbonus + See :func:`einkommensgrenze_ohne_geschwisterbonus`. + arbeitslosengeld_2__anzahl_kinder_fg + See :func:`arbeitslosengeld_2__anzahl_kinder_fg`. + kind_grundsätzlich_anspruchsberechtigt + See :func:`kind_grundsätzlich_anspruchsberechtigt`. + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + + Returns + ------- + income threshold for parental leave benefit (Erziehungsgeld) on child level + """ + + out = ( + einkommensgrenze_ohne_geschwisterbonus + + (arbeitslosengeld_2__anzahl_kinder_fg - 1) + * erziehungsgeld_params["aufschlag_einkommen"] + ) + if not kind_grundsätzlich_anspruchsberechtigt: + out = 0.0 + return out + + +@policy_function(start_date="2004-01-01", end_date="2008-12-31") +def einkommensgrenze_ohne_geschwisterbonus( + familie__alleinerziehend_fg: bool, + alter_monate: float, + budgetsatz: bool, + erziehungsgeld_params: dict, +) -> float: + """Income threshold for parental leave benefit (Erziehungsgeld) on child level + before adding the bonus for additional children + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + + Parameters + ---------- + erziehungsgeld_params + See params documentation :ref:`erziehungsgeld_params `. + familie__alleinerziehend_fg + See :func:`familie__alleinerziehend_fg`. + alter_monate + See :func:`alter_monate`. + budgetsatz + See :See basic input variable :ref:`budgetsatz + `. + + Returns + ------- + Income threshold for parental leave benefit (Erziehungsgeld) before child bonus + """ + # There are different income thresholds depending on the age of the child, + # the fact if a person is a single parent, and if regelsatz or budgetsatz is applied + + if ( + alter_monate + < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] + ): + limit = "limit" + else: + limit = "reduced_limit" + + if familie__alleinerziehend_fg: + status_eltern = "alleinerziehend" + else: + status_eltern = "paar" + + if budgetsatz: + satz = "budgetsatz" + else: + satz = "regelsatz" + + out = erziehungsgeld_params["einkommensgrenze"][limit][status_eltern][satz] + + return out diff --git a/src/_gettsim/transfers/grundrente.py b/src/_gettsim/transfers/grundrente.py deleted file mode 100644 index 9d25056d6b..0000000000 --- a/src/_gettsim/transfers/grundrente.py +++ /dev/null @@ -1,375 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - - -@policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_m( - grundr_zuschlag_vor_eink_anr_m: float, grundr_zuschlag_eink_m: float -) -> float: - """Calculate Grundrentenzuschlag (additional monthly pensions payments resulting - from Grundrente) - - Parameters - ---------- - grundr_zuschlag_vor_eink_anr_m - See :func:`grundr_zuschlag_vor_eink_anr_m`. - grundr_zuschlag_eink_m - See :func:`grundr_zuschlag_eink_m`. - - Returns - ------- - - """ - out = grundr_zuschlag_vor_eink_anr_m - grundr_zuschlag_eink_m - return max(out, 0.0) - - -def _grundr_zuschlag_eink_vor_freibetrag_m( - rente_vorj_vor_grundr_proxy_m: float, - bruttolohn_vorj_m: float, - eink_selbst_y: float, - eink_vermietung_y: float, - kapitaleink_y: float, -) -> float: - """Calculate total income relevant for Grundrentenzuschlag before deductions are - subtracted. - - Some notes: - - - The Grundrentenzuschlag (in previous years) is not part of the relevant income and - does not lower the Grundrentenzuschlag (reference: § 97a Abs. 2 S. 7 SGB VI). - - The Deutsche Rentenversicherung uses the income of the year two to three years ago - to be able to use administrative data on this income for the calculation: "It can - be assumed that the tax office regularly has the data two years after the end of - the assessment period, which can be retrieved from the pension insurance." - - Warning: Currently, earnings of dependent work and pensions are based on the last - year, and other income on the current year instead of the year two years ago to - avoid the need for several new input variables. - - Warning: Freibeträge for income are currently not considered as `freibeträge_y` - depends on pension income through `ges_krankenv_beitr_arbeitnehmer_m` -> - `vorsorgeaufw` -> `freibeträge` - - Reference: § 97a Abs. 2 S. 1 SGB VI - - Parameters - ---------- - rente_vorj_vor_grundr_proxy_m - See :func:`rente_vorj_vor_grundr_proxy_m`. - bruttolohn_vorj_m - See :func:`bruttolohn_vorj_m`. - eink_selbst_y - See :func:`eink_selbst_y`. - eink_vermietung_y - See :func:`eink_vermietung_y`. - kapitaleink_y - See :func:`kapitaleink_y`. - - Returns - ------- - - """ - - # Sum income over different income sources. - out = ( - rente_vorj_vor_grundr_proxy_m - + bruttolohn_vorj_m - + eink_selbst_y / 12 # income from self-employment - + eink_vermietung_y / 12 # rental income - + kapitaleink_y / 12 - ) - - return out - - -@policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_eink_m( - _grundr_zuschlag_eink_vor_freibetrag_m_ehe: float, - p_id_ehepartner: int, - rentenwert: float, - ges_rente_params: dict, -) -> float: - """Calculate income which is deducted from Grundrentenzuschlag. - - Apply allowances. There are upper and lower thresholds for singles and - couples. 60% of income between the upper and lower threshold is credited against - the Grundrentenzuschlag. All the income above the upper threshold is credited - against the Grundrentenzuschlag. - - Reference: § 97a Abs. 4 S. 2, 4 SGB VI - - Parameters - ---------- - _grundr_zuschlag_eink_vor_freibetrag_m_ehe - See :func:`_grundr_zuschlag_eink_vor_freibetrag_m_ehe`. - p_id_ehepartner - See :func:`p_id_ehepartner`. - rentenwert - See :func:`rentenwert`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - Returns - ------- - - """ - - # Calculate relevant income following the crediting rules using the values for - # singles and those for married subjects - # Note: Thresholds are defined relativ to rentenwert which is implemented by - # dividing the income by rentenwert and multiply rentenwert to the result. - if p_id_ehepartner >= 0: - einkommensanr_params = ges_rente_params["grundr_einkommensanr_verheiratet"] - else: - einkommensanr_params = ges_rente_params["grundr_einkommensanr_single"] - - out = ( - piecewise_polynomial( - x=_grundr_zuschlag_eink_vor_freibetrag_m_ehe / rentenwert, - thresholds=einkommensanr_params["thresholds"], - rates=einkommensanr_params["rates"], - intercepts_at_lower_thresholds=einkommensanr_params[ - "intercepts_at_lower_thresholds" - ], - ) - * rentenwert - ) - - return out - - -@policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_vor_eink_anr_m( - grundr_zuschlag_bonus_entgeltp: float, - grundr_bew_zeiten: int, - rentenwert: float, - ges_rente_zugangsfaktor: float, - ges_rente_params: dict, -) -> float: - """Calculate additional monthly pensions payments resulting from Grundrente, without - taking into account income crediting rules. - - The Zugangsfaktor is limited to 1 and considered Grundrentezeiten - are limited to 35 years (420 months). - - Parameters - ---------- - grundr_zuschlag_bonus_entgeltp - See :func:`grundr_zuschlag_bonus_entgeltp`. - grundr_bew_zeiten - See basic input variable - :ref:`grundr_bew_zeiten `. - rentenwert - See :func:`rentenwert`. - ges_rente_zugangsfaktor - See :func:`ges_rente_zugangsfaktor`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - - # Winsorize Bewertungszeiten and Zugangsfaktor at maximum values - grundr_bew_zeiten_wins = min( - grundr_bew_zeiten, ges_rente_params["grundr_zeiten"]["max"] - ) - ges_rente_zugangsfaktor_wins = min( - ges_rente_zugangsfaktor, ges_rente_params["grundr_zugangsfaktor_max"] - ) - - out = ( - grundr_zuschlag_bonus_entgeltp - * grundr_bew_zeiten_wins - * rentenwert - * ges_rente_zugangsfaktor_wins - ) - return out - - -def grundr_bew_zeiten_avg_entgeltp( - grundr_entgeltp: float, grundr_bew_zeiten: int -) -> float: - """Compute average number of Entgeltpunkte earned per month of - Grundrentenbewertungszeiten. - - Parameters - ---------- - grundr_entgeltp - See basic input variable - :ref:`grundr_entgeltp `. - grundr_bew_zeiten - See basic input variable - :ref:`grundr_bew_zeiten `. - - Returns - ------- - - """ - if grundr_bew_zeiten > 0: - out = grundr_entgeltp / grundr_bew_zeiten - - # Return 0 if grundr_bew_zeiten is 0. Then, grundr_entgeltp should be 0, too. - else: - out = 0 - - return out - - -@policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_höchstwert_m(grundr_zeiten: int, ges_rente_params: dict) -> float: - """Calculate the maximum allowed number of average Entgeltpunkte (per month) after - adding bonus of Entgeltpunkte for a given number of Grundrentenzeiten. - - Parameters - ---------- - grundr_zeiten - See basic input variable :ref:`grundr_zeiten `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - # Calculate number of months above minimum threshold - months_above_thresh = ( - min(grundr_zeiten, ges_rente_params["grundr_zeiten"]["max"]) - - ges_rente_params["grundr_zeiten"]["min"] - ) - - # Calculate höchstwert - out = ( - ges_rente_params["grundr_höchstwert"]["base"] - + ges_rente_params["grundr_höchstwert"]["increment"] * months_above_thresh - ) - - return out - - -@policy_function(params_key_for_rounding="ges_rente") -def grundr_zuschlag_bonus_entgeltp( - grundr_bew_zeiten_avg_entgeltp: float, - grundr_zuschlag_höchstwert_m: float, - grundr_zeiten: int, - ges_rente_params: dict, -) -> float: - """Calculate additional Entgeltpunkte for pensioner. - - In general, the average of monthly Entgeltpunkte earnd in Grundrentenzeiten is - doubled, or extended to the individual Höchstwert if doubling would exceed the - Höchstwert. Then, the value is multiplied by 0.875. - - Legal reference: § 76g SGB VI - - Parameters - ---------- - grundr_bew_zeiten_avg_entgeltp - See :func:`grundr_bew_zeiten_avg_entgeltp`. - grundr_zuschlag_höchstwert_m - See :func:`grundr_zuschlag_höchstwert_m`. - grundr_zeiten - See basic input variable :ref:`grundr_zeiten `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - - # Return 0 if Grundrentenzeiten below minimum - if grundr_zeiten < ges_rente_params["grundr_zeiten"]["min"]: - out = 0.0 - else: - # Case 1: Entgeltpunkte less than half of Höchstwert - if grundr_bew_zeiten_avg_entgeltp <= (0.5 * grundr_zuschlag_höchstwert_m): - out = grundr_bew_zeiten_avg_entgeltp - - # Case 2: Entgeltpunkte more than half of Höchstwert, but below Höchstwert - elif grundr_bew_zeiten_avg_entgeltp < grundr_zuschlag_höchstwert_m: - out = grundr_zuschlag_höchstwert_m - grundr_bew_zeiten_avg_entgeltp - - # Case 3: Entgeltpunkte above Höchstwert - elif grundr_bew_zeiten_avg_entgeltp > grundr_zuschlag_höchstwert_m: - out = 0.0 - - # Multiply additional Engeltpunkte by factor - out = out * ges_rente_params["grundr_faktor_bonus"] - - return out - - -@policy_function(params_key_for_rounding="ges_rente") -def rente_vorj_vor_grundr_proxy_m( # noqa: PLR0913 - rentner: bool, - priv_rente_m: float, - jahr_renteneintr: int, - geburtsjahr: int, - alter: int, - entgeltp_west: float, - entgeltp_ost: float, - ges_rente_zugangsfaktor: float, - ges_rente_params: dict, -) -> float: - """Estimated amount of public pensions of last year excluding Grundrentenzuschlag. - - Parameters - ---------- - rentner - See basic input variable :ref:`rentner `. - priv_rente_m - See basic input variable :ref:`priv_rente_m `. Assume this did not - change from last year. - jahr_renteneintr - See basic input variable :ref:`jahr_renteneintr `. - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - alter - See basic input variable :ref:`alter `. - entgeltp_west - See basic input variable :ref:`entgeltp_west `. - entgeltp_ost - See basic input variable :ref:`entgeltp_ost `. - ges_rente_zugangsfaktor - See :func:`ges_rente_zugangsfaktor`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - - # Calculate if subect was retired last year - if rentner: - rentner_vorjahr = jahr_renteneintr < geburtsjahr + alter - else: - rentner_vorjahr = False - - if rentner_vorjahr: - out = ( - entgeltp_west * ges_rente_params["rentenwert_vorjahr"]["west"] - + entgeltp_ost * ges_rente_params["rentenwert_vorjahr"]["ost"] - ) * ges_rente_zugangsfaktor + priv_rente_m - else: - out = 0.0 - - return out - - -def grundr_berechtigt(grundr_zeiten: int, ges_rente_params: dict) -> bool: - """Whether person has accumulated enough insured years to be eligible. - - Parameters - ---------- - grundr_zeiten - See :func:`grundr_zeiten`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - out = grundr_zeiten >= ges_rente_params["grundr_zeiten"]["min"] - return out diff --git a/src/_gettsim/transfers/grunds_im_alter.py b/src/_gettsim/transfers/grunds_im_alter.py deleted file mode 100644 index fa92404e15..0000000000 --- a/src/_gettsim/transfers/grunds_im_alter.py +++ /dev/null @@ -1,402 +0,0 @@ -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - - -def grunds_im_alter_m_eg( # noqa: PLR0913 - arbeitsl_geld_2_regelbedarf_m_bg: float, - _grunds_im_alter_mehrbedarf_schwerbeh_g_m_eg: float, - kindergeld_m_eg: float, - kind_unterh_erhalt_m_eg: float, - unterhaltsvors_m_eg: float, - grunds_im_alter_eink_m_eg: float, - erwachsene_alle_rentner_hh: bool, - vermögen_bedürft_eg: float, - grunds_im_alter_vermög_freib_eg: float, - anz_kinder_eg: int, - anz_personen_eg: int, -) -> float: - """Calculate Grundsicherung im Alter on household level. - - # ToDo: There is no check for Wohngeld included as Wohngeld is - # ToDo: currently not implemented for retirees. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - _grunds_im_alter_mehrbedarf_schwerbeh_g_m_eg - See :func:`_grunds_im_alter_mehrbedarf_schwerbeh_g_m_eg`. - kindergeld_m_eg - See :func:`kindergeld_m_eg`. - kind_unterh_erhalt_m_eg - See basic input variable - :ref:`kind_unterh_erhalt_m_eg `. - unterhaltsvors_m_eg - See :func:`unterhaltsvors_m_eg`. - grunds_im_alter_eink_m_eg - See :func:`grunds_im_alter_eink_m_eg`. - erwachsene_alle_rentner_hh - See :func:`erwachsene_alle_rentner_hh`. - vermögen_bedürft_eg - See basic input variable :ref:`vermögen_bedürft_eg`. - grunds_im_alter_vermög_freib_eg - See :func:`grunds_im_alter_vermög_freib_eg`. - anz_kinder_eg - See :func:`anz_kinder_eg`. - anz_personen_eg - See :func:`anz_personen_eg`. - Returns - ------- - - """ - - # TODO(@ChristianZimpelmann): Treatment of Bedarfsgemeinschaften with both retirees - # and unemployed job seekers probably incorrect - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 - - # TODO(@MImmesberger): Check which variable is the correct Regelbedarf in place of - # `arbeitsl_geld_2_regelbedarf_m_bg` - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/702 - - # TODO (@MImmesberger): Remove `anz_kinder_eg == anz_personen_eg` condition once - # `erwachsene_alle_rentner_hh`` is replaced by a more accurate variable. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/696 - - # Wealth check - # Only pay Grundsicherung im Alter if all adults are retired (see docstring) - if ( - (vermögen_bedürft_eg >= grunds_im_alter_vermög_freib_eg) - or (not erwachsene_alle_rentner_hh) - or (anz_kinder_eg == anz_personen_eg) - ): - out = 0.0 - else: - # Subtract income - out = ( - arbeitsl_geld_2_regelbedarf_m_bg - + _grunds_im_alter_mehrbedarf_schwerbeh_g_m_eg - - grunds_im_alter_eink_m_eg - - kind_unterh_erhalt_m_eg - - unterhaltsvors_m_eg - - kindergeld_m_eg - ) - - return max(out, 0.0) - - -def grunds_im_alter_eink_m( # noqa: PLR0913 - grunds_im_alter_erwerbseink_m: float, - grunds_im_alter_priv_rente_m: float, - grunds_im_alter_ges_rente_m: float, - sonstig_eink_m: float, - eink_vermietung_m: float, - _grunds_im_alter_kapitaleink_brutto_m: float, - eink_st_m_sn: float, - soli_st_m_sn: float, - anz_personen_sn: int, - sozialv_beitr_arbeitnehmer_m: float, - anrechenbares_elterngeld_m: float, -) -> float: - """Calculate individual income considered in the calculation of Grundsicherung im - Alter. - - Parameters - ---------- - grunds_im_alter_erwerbseink_m - See :func:`grunds_im_alter_erwerbseink_m`. - grunds_im_alter_priv_rente_m - See :func:`grunds_im_alter_priv_rente_m`. - grunds_im_alter_ges_rente_m - See :func:`grunds_im_alter_ges_rente_m`. - sonstig_eink_m - See :func:`sonstig_eink_m`. - eink_vermietung_m - See :func:`eink_vermietung_m`. - _grunds_im_alter_kapitaleink_brutto_m - See :func:`_grunds_im_alter_kapitaleink_brutto_m`. - eink_st_m_sn - See :func:`eink_st_m_sn`. - soli_st_m_sn - See :func:`soli_st_m_sn`. - anz_personen_sn - See :func:`anz_personen_sn`. - sozialv_beitr_arbeitnehmer_m - See :func:`sozialv_beitr_arbeitnehmer_m`. - anrechenbares_elterngeld_m - See :func:`anrechenbares_elterngeld_m`. - - Returns - ------- - - """ - - # Income - total_income = ( - grunds_im_alter_erwerbseink_m - + grunds_im_alter_ges_rente_m - + grunds_im_alter_priv_rente_m - + sonstig_eink_m - + eink_vermietung_m - + _grunds_im_alter_kapitaleink_brutto_m - + anrechenbares_elterngeld_m - ) - - out = ( - total_income - - (eink_st_m_sn / anz_personen_sn) - - (soli_st_m_sn / anz_personen_sn) - - sozialv_beitr_arbeitnehmer_m - ) - - return max(out, 0.0) - - -def grunds_im_alter_erwerbseink_m( - bruttolohn_m: float, - eink_selbst_m: float, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, -) -> float: - """Calculate individual earnings considered in the calculation of Grundsicherung im - Alter. - - Legal reference: § 82 SGB XII Abs. 3 - - Note: Freibeträge for income are currently not considered - Note: the cap at 1/2 of Regelbedarf was only introduced in 2006 (which is currently - not implemented): https://www.buzer.de/gesetz/3415/al3764-0.htm - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - eink_selbst_m - See basic input variable :ref:`eink_selbst_m `. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params `. - - Returns - ------- - - """ - earnings = bruttolohn_m + eink_selbst_m - - # Can deduct 30% of earnings (but no more than 1/2 of regelbedarf) - earnings_after_max_deduction = earnings - arbeitsl_geld_2_params["regelsatz"][1] / 2 - earnings = (1 - grunds_im_alter_params["erwerbseink_anr_frei"]) * earnings - - out = max(earnings, earnings_after_max_deduction) - - return out - - -def _grunds_im_alter_kapitaleink_brutto_m( - kapitaleink_brutto_y: float, - grunds_im_alter_params: dict, -) -> float: - """Calculate individual capital income considered in the calculation of - Grundsicherung im Alter. - - Legal reference: § 82 SGB XII Abs. 2 - - - Parameters - ---------- - kapitaleink_brutto_y - See :func:`kapitaleink_brutto_y`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params - `. - - Returns - ------- - - """ - # Can deduct allowance from yearly capital income - capital_income_y = ( - kapitaleink_brutto_y - grunds_im_alter_params["kapitaleink_anr_frei"] - ) - - # Calculate and return monthly capital income (after deduction) - out = max(0.0, capital_income_y / 12) - - return out - - -def grunds_im_alter_priv_rente_m( - priv_rente_m: float, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, -) -> float: - """Calculate individual private pension benefits considered in the calculation of - Grundsicherung im Alter. - - Legal reference: § 82 SGB XII Abs. 4 - - Parameters - ---------- - priv_rente_m - See basic input variable :ref:`priv_rente_m `. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - `. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params `. - - Returns - ------- - - """ - priv_rente_m_amount_exempt = piecewise_polynomial( - x=priv_rente_m, - thresholds=grunds_im_alter_params["priv_rente_anr_frei"]["thresholds"], - rates=grunds_im_alter_params["priv_rente_anr_frei"]["rates"], - intercepts_at_lower_thresholds=grunds_im_alter_params["priv_rente_anr_frei"][ - "intercepts_at_lower_thresholds" - ], - ) - upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 - - out = priv_rente_m - min(priv_rente_m_amount_exempt, upper) - - return out - - -def _grunds_im_alter_mehrbedarf_schwerbeh_g_m( - schwerbeh_g: bool, - anz_erwachsene_eg: int, - grunds_im_alter_params: dict, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate additional allowance for individuals with disabled person's pass G. - - Parameters - ---------- - schwerbeh_g - See basic input variable :ref:`behinderungsgrad `. - anz_erwachsene_eg - See :func:`anz_erwachsene_eg`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - Returns - ------- - - """ - # mehrbedarf for disabilities = % of regelsatz of the person getting the mehrbedarf - mehrbedarf_single = ( - (arbeitsl_geld_2_params["regelsatz"][1]) - * (grunds_im_alter_params["mehrbedarf_schwerbeh_g"]) - ) - mehrbedarf_in_couple = ( - (arbeitsl_geld_2_params["regelsatz"][2]) - * (grunds_im_alter_params["mehrbedarf_schwerbeh_g"]) - ) - - if (schwerbeh_g) and (anz_erwachsene_eg == 1): - out = mehrbedarf_single - elif (schwerbeh_g) and (anz_erwachsene_eg > 1): - out = mehrbedarf_in_couple - else: - out = 0.0 - - return out - - -@policy_function(end_date="2020-12-31", leaf_name="grunds_im_alter_ges_rente_m") -def grunds_im_alter_ges_rente_m_bis_2020( - ges_rente_m: float, -) -> float: - """Calculate individual public pension benefits which are considered in the - calculation of Grundsicherung im Alter until 2020. - - Until 2020: No deduction is possible. - - Parameters - ---------- - ges_rente_m - See basic input variable :ref:`ges_rente_m `. - - Returns - ------- - - """ - return ges_rente_m - - -@policy_function(start_date="2021-01-01", leaf_name="grunds_im_alter_ges_rente_m") -def grunds_im_alter_ges_rente_m_ab_2021( - ges_rente_m: float, - grundr_berechtigt: bool, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, -) -> float: - """Calculate individual public pension benefits which are considered in the - calculation of Grundsicherung im Alter since 2021. - - Starting from 2021: If eligible for Grundrente, can deduct 100€ completely and 30% - of private pension above 100 (but no more than 1/2 of regelbedarf) - - Parameters - ---------- - ges_rente_m - See basic input variable :ref:`ges_rente_m `. - grundr_berechtigt - See :func:`grundr_berechtigt`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - `. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params `. - - Returns - ------- - - """ - - angerechnete_rente = piecewise_polynomial( - x=ges_rente_m, - thresholds=grunds_im_alter_params["ges_rente_anr_frei"]["thresholds"], - rates=grunds_im_alter_params["ges_rente_anr_frei"]["rates"], - intercepts_at_lower_thresholds=grunds_im_alter_params["ges_rente_anr_frei"][ - "intercepts_at_lower_thresholds" - ], - ) - - upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 - if grundr_berechtigt: - angerechnete_rente = min(angerechnete_rente, upper) - else: - angerechnete_rente = 0.0 - - return ges_rente_m - angerechnete_rente - - -def grunds_im_alter_vermög_freib_eg( - anz_erwachsene_fg: int, - anz_kinder_fg: int, - grunds_im_alter_params: dict, -) -> float: - """Calculate wealth not considered for Grundsicherung im Alter on household level. - - Parameters - ---------- - anz_erwachsene_fg - See :func:`anz_erwachsene_fg`. - anz_kinder_fg - See :func:`anz_kinder_fg`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params `. - - Returns - ------- - - """ - out = ( - grunds_im_alter_params["vermögensfreibetrag"]["adult"] * anz_erwachsene_fg - + grunds_im_alter_params["vermögensfreibetrag"]["child"] * anz_kinder_fg - ) - return out diff --git a/src/_gettsim/transfers/grundsicherung/__init__.py b/src/_gettsim/transfers/grundsicherung/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/__init__.py b/src/_gettsim/transfers/grundsicherung/im_alter/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py b/src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py new file mode 100644 index 0000000000..d3135ce849 --- /dev/null +++ b/src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py @@ -0,0 +1,265 @@ +"""Income considered in the calculation of Grundsicherung im Alter.""" + +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + + +@policy_function() +def einkommen_m( # noqa: PLR0913 + erwerbseinkommen_m: float, + private_rente_betrag_m: float, + gesetzliche_rente_m: float, + einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + kapitaleinkommen_brutto_m: float, + einkommensteuer__betrag_m_sn: float, + solidaritätszuschlag__betrag_m_sn: float, + einkommensteuer__anzahl_personen_sn: int, + sozialversicherung__beiträge_versicherter_m: float, + elterngeld__anrechenbarer_betrag_m: float, +) -> float: + """Calculate individual income considered in the calculation of Grundsicherung im + Alter. + + Parameters + ---------- + erwerbseinkommen_m + See :func:`erwerbseinkommen_m`. + private_rente_betrag_m + See :func:`private_rente_betrag_m`. + gesetzliche_rente_m + See :func:`gesetzliche_rente_m`. + einkommensteuer__einkünfte__sonstige__betrag_m + See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. + kapitaleinkommen_brutto_m + See :func:`kapitaleinkommen_brutto_m`. + einkommensteuer__betrag_m_sn + See :func:`einkommensteuer__betrag_m_sn`. + solidaritätszuschlag__betrag_m_sn + See :func:`solidaritätszuschlag__betrag_m_sn`. + einkommensteuer__anzahl_personen_sn + See :func:`einkommensteuer__anzahl_personen_sn`. + sozialversicherung__beiträge_versicherter_m + See :func:`sozialversicherung__beiträge_versicherter_m`. + elterngeld__anrechenbarer_betrag_m + See :func:`elterngeld__anrechenbarer_betrag_m`. + + Returns + ------- + + """ + + # Income + total_income = ( + erwerbseinkommen_m + + gesetzliche_rente_m + + private_rente_betrag_m + + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + + kapitaleinkommen_brutto_m + + elterngeld__anrechenbarer_betrag_m + ) + + out = ( + total_income + - (einkommensteuer__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - (solidaritätszuschlag__betrag_m_sn / einkommensteuer__anzahl_personen_sn) + - sozialversicherung__beiträge_versicherter_m + ) + + return max(out, 0.0) + + +@policy_function() +def erwerbseinkommen_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + arbeitsl_geld_2_params: dict, + grunds_im_alter_params: dict, +) -> float: + """Calculate individual earnings considered in the calculation of Grundsicherung im + Alter. + + Legal reference: § 82 SGB XII Abs. 3 + + Note: Freibeträge for income are currently not considered + Note: the cap at 1/2 of Regelbedarf was only introduced in 2006 (which is currently + not implemented): https://www.buzer.de/gesetz/3415/al3764-0.htm + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m `. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + grunds_im_alter_params + See params documentation :ref:`grunds_im_alter_params `. + + Returns + ------- + + """ + earnings = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + ) + + # Can deduct 30% of earnings (but no more than 1/2 of regelbedarf) + earnings_after_max_deduction = earnings - arbeitsl_geld_2_params["regelsatz"][1] / 2 + earnings = (1 - grunds_im_alter_params["erwerbseink_anr_frei"]) * earnings + + out = max(earnings, earnings_after_max_deduction) + + return out + + +@policy_function() +def kapitaleinkommen_brutto_m( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + grunds_im_alter_params: dict, +) -> float: + """Calculate individual capital income considered in the calculation of + Grundsicherung im Alter. + + Legal reference: § 82 SGB XII Abs. 2 + + + Parameters + ---------- + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y`. + grunds_im_alter_params + See params documentation :ref:`grunds_im_alter_params + `. + + Returns + ------- + + """ + # Can deduct allowance from yearly capital income + capital_income_y = ( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + - grunds_im_alter_params["kapitaleink_anr_frei"] + ) + + # Calculate and return monthly capital income (after deduction) + out = max(0.0, capital_income_y / 12) + + return out + + +@policy_function() +def private_rente_betrag_m( + sozialversicherung__rente__private_rente_betrag_m: float, + arbeitsl_geld_2_params: dict, + grunds_im_alter_params: dict, +) -> float: + """Calculate individual private pension benefits considered in the calculation of + Grundsicherung im Alter. + + Legal reference: § 82 SGB XII Abs. 4 + + Parameters + ---------- + sozialversicherung__rente__private_rente_betrag_m + See basic input variable :ref:`sozialversicherung__rente__private_rente_betrag_m `. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params + `. + grunds_im_alter_params + See params documentation :ref:`grunds_im_alter_params `. + + Returns + ------- + + """ + sozialversicherung__rente__private_rente_betrag_m_amount_exempt = ( + piecewise_polynomial( + x=sozialversicherung__rente__private_rente_betrag_m, + thresholds=grunds_im_alter_params["priv_rente_anr_frei"]["thresholds"], + rates=grunds_im_alter_params["priv_rente_anr_frei"]["rates"], + intercepts_at_lower_thresholds=grunds_im_alter_params[ + "priv_rente_anr_frei" + ]["intercepts_at_lower_thresholds"], + ) + ) + upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 + + out = sozialversicherung__rente__private_rente_betrag_m - min( + sozialversicherung__rente__private_rente_betrag_m_amount_exempt, upper + ) + + return out + + +@policy_function(end_date="2020-12-31", leaf_name="gesetzliche_rente_m") +def gesetzliche_rente_m_bis_2020( + sozialversicherung__rente__altersrente__betrag_m: float, +) -> float: + """Calculate individual public pension benefits which are considered in the + calculation of Grundsicherung im Alter until 2020. + + Until 2020: No deduction is possible. + + Parameters + ---------- + sozialversicherung__rente__altersrente__betrag_m + See basic input variable :ref:`sozialversicherung__rente__altersrente__betrag_m `. + + Returns + ------- + + """ + return sozialversicherung__rente__altersrente__betrag_m + + +@policy_function(start_date="2021-01-01", leaf_name="gesetzliche_rente_m") +def gesetzliche_rente_m_ab_2021( + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: bool, + arbeitsl_geld_2_params: dict, + grunds_im_alter_params: dict, +) -> float: + """Calculate individual public pension benefits which are considered in the + calculation of Grundsicherung im Alter since 2021. + + Starting from 2021: If eligible for Grundrente, can deduct 100€ completely and 30% + of private pension above 100 (but no more than 1/2 of regelbedarf) + + Parameters + ---------- + sozialversicherung__rente__altersrente__betrag_m + See basic input variable :ref:`sozialversicherung__rente__altersrente__betrag_m `. + sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt + See :func:`sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params + `. + grunds_im_alter_params + See params documentation :ref:`grunds_im_alter_params `. + + Returns + ------- + + """ + + angerechnete_rente = piecewise_polynomial( + x=sozialversicherung__rente__altersrente__betrag_m, + thresholds=grunds_im_alter_params["ges_rente_anr_frei"]["thresholds"], + rates=grunds_im_alter_params["ges_rente_anr_frei"]["rates"], + intercepts_at_lower_thresholds=grunds_im_alter_params["ges_rente_anr_frei"][ + "intercepts_at_lower_thresholds" + ], + ) + + upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 + if sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: + angerechnete_rente = min(angerechnete_rente, upper) + else: + angerechnete_rente = 0.0 + + return sozialversicherung__rente__altersrente__betrag_m - angerechnete_rente diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py b/src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py new file mode 100644 index 0000000000..f6d78ea729 --- /dev/null +++ b/src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py @@ -0,0 +1,164 @@ +"""Subsistence transfer for the elderly (Grundsicherung im Alter).""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_m_eg( # noqa: PLR0913 + arbeitslosengeld_2__regelbedarf_m_bg: float, + mehrbedarf_schwerbehinderung_g_m_eg: float, + kindergeld__betrag_m_eg: float, + unterhalt__tatsächlich_erhaltener_betrag_m_eg: float, + unterhaltsvorschuss__betrag_m_eg: float, + einkommen_m_eg: float, + erwachsene_alle_rentenbezieher_hh: bool, + vermögen_eg: float, + vermögensfreibetrag_eg: float, + arbeitslosengeld_2__anzahl_kinder_eg: int, + arbeitslosengeld_2__anzahl_personen_eg: int, +) -> float: + """Calculate Grundsicherung im Alter on household level. + + # ToDo: There is no check for Wohngeld included as Wohngeld is + # ToDo: currently not implemented for retirees. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_bg + See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. + mehrbedarf_schwerbehinderung_g_m_eg + See :func:`mehrbedarf_schwerbehinderung_g_m_eg`. + kindergeld__betrag_m_eg + See :func:`kindergeld__betrag_m_eg`. + unterhalt__tatsächlich_erhaltener_betrag_m_eg + See basic input variable + :ref:`unterhalt__tatsächlich_erhaltener_betrag_m_eg `. + unterhaltsvorschuss__betrag_m_eg + See :func:`unterhaltsvorschuss__betrag_m_eg`. + einkommen_m_eg + See :func:`einkommen_m_eg`. + erwachsene_alle_rentenbezieher_hh + See :func:`erwachsene_alle_rentenbezieher_hh`. + vermögen_eg + See basic input variable :ref:`vermögen_eg`. + vermögensfreibetrag_eg + See :func:`vermögensfreibetrag_eg`. + arbeitslosengeld_2__anzahl_kinder_eg + See :func:`arbeitslosengeld_2__anzahl_kinder_eg`. + arbeitslosengeld_2__anzahl_personen_eg + See :func:`arbeitslosengeld_2__anzahl_personen_eg`. + Returns + ------- + + """ + + # TODO(@ChristianZimpelmann): Treatment of Bedarfsgemeinschaften with both retirees + # and unemployed job seekers probably incorrect + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + + # TODO(@MImmesberger): Check which variable is the correct Regelbedarf in place of + # `arbeitslosengeld_2__regelbedarf_m_bg` + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/702 + + # TODO (@MImmesberger): Remove `arbeitslosengeld_2__anzahl_kinder_eg == + # arbeitslosengeld_2__anzahl_personen_eg` condition once + # `erwachsene_alle_rentenbezieher_hh`` is replaced by a more accurate + # variable. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/696 + + # Wealth check + # Only pay Grundsicherung im Alter if all adults are retired (see docstring) + if ( + (vermögen_eg >= vermögensfreibetrag_eg) + or (not erwachsene_alle_rentenbezieher_hh) + or ( + arbeitslosengeld_2__anzahl_kinder_eg + == arbeitslosengeld_2__anzahl_personen_eg + ) + ): + out = 0.0 + else: + # Subtract income + out = ( + arbeitslosengeld_2__regelbedarf_m_bg + + mehrbedarf_schwerbehinderung_g_m_eg + - einkommen_m_eg + - unterhalt__tatsächlich_erhaltener_betrag_m_eg + - unterhaltsvorschuss__betrag_m_eg + - kindergeld__betrag_m_eg + ) + + return max(out, 0.0) + + +@policy_function() +def mehrbedarf_schwerbehinderung_g_m( + schwerbehindert_grad_g: bool, + arbeitslosengeld_2__anzahl_erwachsene_eg: int, + grunds_im_alter_params: dict, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate additional allowance for individuals with disabled person's pass G. + + Parameters + ---------- + schwerbehindert_grad_g + See basic input variable :ref:`behinderungsgrad `. + arbeitslosengeld_2__anzahl_erwachsene_eg + See :func:`arbeitslosengeld_2__anzahl_erwachsene_eg`. + ges_rente_params + See params documentation :ref:`ges_rente_params `. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + Returns + ------- + + """ + # mehrbedarf for disabilities = % of regelsatz of the person getting the mehrbedarf + mehrbedarf_single = ( + (arbeitsl_geld_2_params["regelsatz"][1]) + * (grunds_im_alter_params["mehrbedarf_bei_schwerbehinderungsgrad_g"]) + ) + mehrbedarf_in_couple = ( + (arbeitsl_geld_2_params["regelsatz"][2]) + * (grunds_im_alter_params["mehrbedarf_bei_schwerbehinderungsgrad_g"]) + ) + + if (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg == 1): + out = mehrbedarf_single + elif (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg > 1): + out = mehrbedarf_in_couple + else: + out = 0.0 + + return out + + +@policy_function() +def vermögensfreibetrag_eg( + arbeitslosengeld_2__anzahl_erwachsene_fg: int, + arbeitslosengeld_2__anzahl_kinder_fg: int, + grunds_im_alter_params: dict, +) -> float: + """Calculate wealth not considered for Grundsicherung im Alter on household level. + + Parameters + ---------- + arbeitslosengeld_2__anzahl_erwachsene_fg + See :func:`arbeitslosengeld_2__anzahl_erwachsene_fg`. + arbeitslosengeld_2__anzahl_kinder_fg + See :func:`arbeitslosengeld_2__anzahl_kinder_fg`. + grunds_im_alter_params + See params documentation :ref:`grunds_im_alter_params `. + + Returns + ------- + + """ + out = ( + grunds_im_alter_params["vermögensfreibetrag"]["adult"] + * arbeitslosengeld_2__anzahl_erwachsene_fg + + grunds_im_alter_params["vermögensfreibetrag"]["child"] + * arbeitslosengeld_2__anzahl_kinder_fg + ) + return out diff --git a/src/_gettsim/transfers/kinderbonus.py b/src/_gettsim/transfers/kinderbonus.py deleted file mode 100644 index 0ddd8017b7..0000000000 --- a/src/_gettsim/transfers/kinderbonus.py +++ /dev/null @@ -1,24 +0,0 @@ -def kinderbonus_m(kindergeld_m: float, kindergeld_params: dict) -> float: - """Calculate Kinderbonus for an individual child. - - (one-time payment, non-allowable against transfer payments) - - Parameters - ---------- - kindergeld_m - See :func:`kindergeld_m`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - - """ - # Kinderbonus parameter is specified on the yearly level - # kindergeld_m is zero for all adults - if kindergeld_m > 0: - out = kindergeld_params["kinderbonus"] / 12 - else: - out = 0.0 - - return out diff --git a/src/_gettsim/transfers/kinderbonus/__init__.py b/src/_gettsim/transfers/kinderbonus/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/kinderbonus/kinderbonus.py b/src/_gettsim/transfers/kinderbonus/kinderbonus.py new file mode 100644 index 0000000000..08cd125c4b --- /dev/null +++ b/src/_gettsim/transfers/kinderbonus/kinderbonus.py @@ -0,0 +1,30 @@ +"""Kinderbonus.""" + +from _gettsim.function_types import policy_function + + +@policy_function(start_date="2020-01-01", end_date="2021-12-31") +def betrag_y(kindergeld__betrag_y: float, kindergeld_params: dict) -> float: + """Calculate Kinderbonus for an individual child. + + (one-time payment, non-allowable against transfer payments) + + Parameters + ---------- + kindergeld__betrag_y + See :func:`kindergeld__betrag_y`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + + """ + # Kinderbonus parameter is specified on the yearly level + # kindergeld__betrag_y is zero for all adults + if kindergeld__betrag_y > 0: + out = kindergeld_params["kinderbonus"] + else: + out = 0.0 + + return out diff --git a/src/_gettsim/transfers/kindergeld.py b/src/_gettsim/transfers/kindergeld.py deleted file mode 100644 index 9e1a445fca..0000000000 --- a/src/_gettsim/transfers/kindergeld.py +++ /dev/null @@ -1,206 +0,0 @@ -import numpy - -from _gettsim.functions.policy_function import policy_function -from _gettsim.shared import join_numpy - -aggregate_by_group_kindergeld = { - "anz_kinder_mit_kindergeld_fg": { - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, -} - -aggregate_by_p_id_kindergeld = { - "kindergeld_anz_ansprüche": { - "p_id_to_aggregate_by": "p_id_kindergeld_empf", - "source_col": "kindergeld_anspruch", - "aggr": "sum", - }, -} - - -@policy_function(start_date="2023-01-01", leaf_name="kindergeld_m") -def kindergeld_ohne_staffelung_m( - kindergeld_anz_ansprüche: int, - kindergeld_params: dict, -) -> float: - """Sum of Kindergeld for eligible children. - - Kindergeld claim is the same for each child, i.e. increases linearly with the number - of children. - - Parameters - ---------- - kindergeld_anz_ansprüche - See :func:`kindergeld_anz_ansprüche`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - - """ - - return kindergeld_params["kindergeld"] * kindergeld_anz_ansprüche - - -@policy_function(end_date="2022-12-31", leaf_name="kindergeld_m") -def kindergeld_gestaffelt_m( - kindergeld_anz_ansprüche: int, - kindergeld_params: dict, -) -> float: - """Sum of Kindergeld for eligible children. - - Kindergeld claim for each child depends on the number of children Kindergeld is - being claimed for. - - Parameters - ---------- - kindergeld_anz_ansprüche - See :func:`kindergeld_anz_ansprüche`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - - """ - - if kindergeld_anz_ansprüche == 0: - sum_kindergeld = 0.0 - else: - sum_kindergeld = sum( - kindergeld_params["kindergeld"][ - (min(i, max(kindergeld_params["kindergeld"]))) - ] - for i in range(1, kindergeld_anz_ansprüche + 1) - ) - - return sum_kindergeld - - -@policy_function(end_date="2011-12-31", leaf_name="kindergeld_anspruch") -def kindergeld_anspruch_nach_lohn( - alter: int, - in_ausbildung: bool, - bruttolohn_m: float, - kindergeld_params: dict, -) -> bool: - """Determine kindergeld eligibility for an individual child depending on kids wage. - - Until 2011, there was an income ceiling for children - returns a boolean variable whether a specific person is a child eligible for - child benefit - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - in_ausbildung - See basic input variable :ref:`in_ausbildung `. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - - Returns - ------- - - """ - out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( - (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) - and in_ausbildung - and (bruttolohn_m <= kindergeld_params["einkommensgrenze"] / 12) - ) - - return out - - -@policy_function(start_date="2012-01-01", leaf_name="kindergeld_anspruch") -def kindergeld_anspruch_nach_stunden( - alter: int, - in_ausbildung: bool, - arbeitsstunden_w: float, - kindergeld_params: dict, -) -> bool: - """Determine kindergeld eligibility for an individual child depending on working - hours. - - The current eligibility rule is, that kids must not work more than 20 - hour and are below 25. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - in_ausbildung - See :func:`in_ausbildung`. - arbeitsstunden_w - See :func:`arbeitsstunden_w`. - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - Boolean indiciating kindergeld eligibility. - - """ - out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( - (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) - and in_ausbildung - and (arbeitsstunden_w <= kindergeld_params["stundengrenze"]) - ) - - return out - - -def kind_bis_10_mit_kindergeld( - alter: int, - kindergeld_anspruch: bool, -) -> bool: - """Child under the age of 11 and eligible for Kindergeld. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - kindergeld_anspruch - See :func:`kindergeld_anspruch_nach_stunden`. - - Returns - ------- - - """ - out = kindergeld_anspruch and (alter <= 10) - return out - - -@policy_function(skip_vectorization=True) -def same_fg_as_kindergeldempfänger( - p_id: numpy.ndarray[int], - p_id_kindergeld_empf: numpy.ndarray[int], - fg_id: numpy.ndarray[int], -) -> numpy.ndarray[bool]: - """The child's Kindergeldempfänger is in the same Familiengemeinschaft. - - Parameters - ---------- - p_id - See basic input variable :ref:`p_id `. - p_id_kindergeld_empf - See basic input variable :ref:`p_id_kindergeld_empf `. - fg_id - See basic input variable :ref:`fg_id `. - - Returns - ------- - - """ - fg_id_kindergeldempfänger = join_numpy( - p_id_kindergeld_empf, - p_id, - fg_id, - value_if_foreign_key_is_missing=-1, - ) - - return fg_id_kindergeldempfänger == fg_id diff --git a/src/_gettsim/transfers/kindergeld/__init__.py b/src/_gettsim/transfers/kindergeld/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/kindergeld/kindergeld.py b/src/_gettsim/transfers/kindergeld/kindergeld.py new file mode 100644 index 0000000000..784cb48287 --- /dev/null +++ b/src/_gettsim/transfers/kindergeld/kindergeld.py @@ -0,0 +1,206 @@ +"""Basic child allowance (Kindergeld).""" + +import numpy + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function +from _gettsim.shared import join_numpy + +aggregation_specs = { + "anzahl_ansprüche": AggregateByPIDSpec( + p_id_to_aggregate_by="p_id_empfänger", + source="grundsätzlich_anspruchsberechtigt", + aggr="sum", + ), +} + + +@policy_function(start_date="2023-01-01", leaf_name="betrag_m") +def betrag_ohne_staffelung_m( + anzahl_ansprüche: int, + kindergeld_params: dict, +) -> float: + """Sum of Kindergeld for eligible children. + + Kindergeld claim is the same for each child, i.e. increases linearly with the number + of children. + + Parameters + ---------- + anzahl_ansprüche + See :func:`anzahl_ansprüche`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + + """ + + return kindergeld_params["kindergeld"] * anzahl_ansprüche + + +@policy_function(end_date="2022-12-31", leaf_name="betrag_m") +def betrag_gestaffelt_m( + anzahl_ansprüche: int, + kindergeld_params: dict, +) -> float: + """Sum of Kindergeld that parents receive for their children. + + Kindergeld claim for each child depends on the number of children Kindergeld is + being claimed for. + + Parameters + ---------- + anzahl_ansprüche + See :func:`anzahl_ansprüche`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + + """ + + if anzahl_ansprüche == 0: + sum_kindergeld = 0.0 + else: + sum_kindergeld = sum( + kindergeld_params["kindergeld"][ + (min(i, max(kindergeld_params["kindergeld"]))) + ] + for i in range(1, anzahl_ansprüche + 1) + ) + + return sum_kindergeld + + +@policy_function(end_date="2011-12-31", leaf_name="grundsätzlich_anspruchsberechtigt") +def grundsätzlich_anspruchsberechtigt_nach_lohn( + alter: int, + in_ausbildung: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + kindergeld_params: dict, +) -> bool: + """Determine kindergeld eligibility for an individual child depending on kids wage. + + Until 2011, there was an income ceiling for children + returns a boolean variable whether a specific person is a child eligible for + child benefit + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + in_ausbildung + See basic input variable :ref:`in_ausbildung `. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + + Returns + ------- + + """ + out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( + (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) + and in_ausbildung + and ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= kindergeld_params["einkommensgrenze"] / 12 + ) + ) + + return out + + +@policy_function(start_date="2012-01-01", leaf_name="grundsätzlich_anspruchsberechtigt") +def grundsätzlich_anspruchsberechtigt_nach_stunden( + alter: int, + in_ausbildung: bool, + arbeitsstunden_w: float, + kindergeld_params: dict, +) -> bool: + """Determine kindergeld eligibility for an individual child depending on working + hours. + + The current eligibility rule is, that kids must not work more than 20 + hour and are below 25. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + in_ausbildung + See :func:`in_ausbildung`. + arbeitsstunden_w + See :func:`arbeitsstunden_w`. + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + Boolean indiciating kindergeld eligibility. + + """ + out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( + (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) + and in_ausbildung + and (arbeitsstunden_w <= kindergeld_params["stundengrenze"]) + ) + + return out + + +@policy_function() +def kind_bis_10_mit_kindergeld( + alter: int, + grundsätzlich_anspruchsberechtigt: bool, +) -> bool: + """Child under the age of 11 and eligible for Kindergeld. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + grundsätzlich_anspruchsberechtigt + See :func:`grundsätzlich_anspruchsberechtigt_nach_stunden`. + + Returns + ------- + + """ + out = grundsätzlich_anspruchsberechtigt and (alter <= 10) + return out + + +@policy_function(skip_vectorization=True) +def gleiche_fg_wie_empfänger( + p_id: numpy.ndarray[int], + p_id_empfänger: numpy.ndarray[int], + arbeitslosengeld_2__fg_id: numpy.ndarray[int], +) -> numpy.ndarray[bool]: + """The child's Kindergeldempfänger is in the same Familiengemeinschaft. + + Parameters + ---------- + p_id + See basic input variable :ref:`p_id `. + p_id_empfänger + See basic input variable :ref:`p_id_empfänger `. + arbeitslosengeld_2__fg_id + See basic input variable :ref:`arbeitslosengeld_2__fg_id `. + + Returns + ------- + + """ + fg_id_kindergeldempfänger = join_numpy( + p_id_empfänger, + p_id, + arbeitslosengeld_2__fg_id, + value_if_foreign_key_is_missing=-1, + ) + + return fg_id_kindergeldempfänger == arbeitslosengeld_2__fg_id diff --git a/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py b/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py deleted file mode 100644 index 58eb639c35..0000000000 --- a/src/_gettsim/transfers/kinderzuschl/kinderzuschl.py +++ /dev/null @@ -1,165 +0,0 @@ -"""Kinderzuschlag / Additional Child Benefit.""" - -from _gettsim.functions.policy_function import policy_function - - -def kinderzuschl_m_bg( - _kinderzuschl_nach_vermög_check_m_bg: float, - kinderzuschl_vorrang_bg: bool, - wohngeld_kinderzuschl_vorrang_bg: bool, - anz_rentner_hh: int, -) -> float: - """Aggregate child benefit on household level. - - Parameters - ---------- - _kinderzuschl_nach_vermög_check_m_bg - See :func:`_kinderzuschl_nach_vermög_check_m_bg`. - kinderzuschl_vorrang_bg - See :func:`kinderzuschl_vorrang_bg`. - wohngeld_kinderzuschl_vorrang_bg - See :func:`wohngeld_kinderzuschl_vorrang_bg`. - anz_rentner_hh - See :func:`anz_rentner_hh`. - - Returns - ------- - - """ - if ((not kinderzuschl_vorrang_bg) and (not wohngeld_kinderzuschl_vorrang_bg)) or ( - anz_rentner_hh > 0 - ): - out = 0.0 - else: - out = _kinderzuschl_nach_vermög_check_m_bg - - return out - - -def _kinderzuschl_nach_vermög_check_m( - _kinderzuschl_nach_vermög_check_m_bg: float, - anz_personen_bg: int, -) -> float: - """Kinderzuschlag on individual level. - - Target necessary for aggregation to wthh level. - - Parameters - ---------- - _kinderzuschl_nach_vermög_check_m_bg - See :func:`_kinderzuschl_nach_vermög_check_m_bg`. - anz_personen_bg - See :func:`anz_personen_bg`. - - Returns - ------- - - """ - return _kinderzuschl_nach_vermög_check_m_bg / anz_personen_bg - - -@policy_function( - end_date="2019-06-30", - leaf_name="_kinderzuschl_vor_vermög_check_m_bg", -) -def _kinderzuschl_vor_vermög_check_m_bg_check_eink_max( # noqa: PLR0913 - kinderzuschl_bruttoeink_eltern_m_bg: float, - kinderzuschl_eink_eltern_m_bg: float, - kinderzuschl_eink_min_m_bg: float, - kinderzuschl_eink_max_m_bg: float, - kinderzuschl_kindereink_abzug_m_bg: float, - kinderzuschl_eink_anrechn_m_bg: float, - anz_personen_bg: int, -) -> float: - """Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or - Arbeitslosengeld 2 applies will be checked later. - - To be eligible for Kinderzuschlag, gross income of parents needs to exceed the - minimum income threshold and net income needs to be below the maximum income - threshold. - - Kinderzuschlag is only paid out if parents are part of the BG (anz_personen_bg > 1). - - Parameters - ---------- - kinderzuschl_bruttoeink_eltern_m_bg - See :func:`kinderzuschl_bruttoeink_eltern_m_bg`. - kinderzuschl_eink_eltern_m_bg - See :func:`kinderzuschl_eink_eltern_m_bg`. - kinderzuschl_eink_min_m_bg - See :func:`kinderzuschl_eink_min_m_bg`. - kinderzuschl_eink_max_m_bg - See :func:`kinderzuschl_eink_max_m_bg`. - kinderzuschl_kindereink_abzug_m_bg - See :func:`kinderzuschl_kindereink_abzug_m_bg`. - kinderzuschl_eink_anrechn_m_bg - See :func:`kinderzuschl_eink_anrechn_m_bg`. - anz_personen_bg - See :func:`anz_personen_bg`. - - Returns - ------- - - """ - - # Check if parental income is in income range for child benefit. - if ( - (kinderzuschl_bruttoeink_eltern_m_bg >= kinderzuschl_eink_min_m_bg) - and (kinderzuschl_eink_eltern_m_bg <= kinderzuschl_eink_max_m_bg) - and anz_personen_bg > 1 - ): - out = max( - kinderzuschl_kindereink_abzug_m_bg - kinderzuschl_eink_anrechn_m_bg, 0.0 - ) - else: - out = 0.0 - - return out - - -@policy_function(start_date="2019-07-01") -def _kinderzuschl_vor_vermög_check_m_bg( - kinderzuschl_bruttoeink_eltern_m_bg: float, - kinderzuschl_eink_min_m_bg: float, - kinderzuschl_kindereink_abzug_m_bg: float, - kinderzuschl_eink_anrechn_m_bg: float, - anz_personen_bg: int, -) -> float: - """Calculate Kinderzuschlag since 07/2019. Whether Kinderzuschlag or - Arbeitslosengeld 2 applies will be checked later. - - To be eligible for Kinderzuschlag, gross income of parents needs to exceed the - minimum income threshold. - - Kinderzuschlag is only paid out if parents are part of the BG (anz_personen_bg > 1). - - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id `. - kinderzuschl_bruttoeink_eltern_m_bg - See :func:`kinderzuschl_bruttoeink_eltern_m_bg`. - kinderzuschl_eink_min_m_bg - See :func:`kinderzuschl_eink_min_m_bg`. - kinderzuschl_kindereink_abzug_m_bg - See :func:`kinderzuschl_kindereink_abzug_m_bg`. - kinderzuschl_eink_anrechn_m_bg - See :func:`kinderzuschl_eink_anrechn_m_bg`. - anz_personen_bg - See :func:`anz_personen_bg`. - - Returns - ------- - - """ - if ( - kinderzuschl_bruttoeink_eltern_m_bg >= kinderzuschl_eink_min_m_bg - ) and anz_personen_bg > 1: - out = max( - kinderzuschl_kindereink_abzug_m_bg - kinderzuschl_eink_anrechn_m_bg, 0.0 - ) - else: - out = 0.0 - - return out diff --git a/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py b/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py deleted file mode 100644 index beea41a02b..0000000000 --- a/src/_gettsim/transfers/kinderzuschl/kinderzuschl_eink.py +++ /dev/null @@ -1,304 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - -aggregate_by_group_kinderzuschl_eink = { - "_kinderzuschl_anz_kinder_anspruch_bg": { - "source_col": "kindergeld_anz_ansprüche", - "aggr": "sum", - }, -} - - -def kinderzuschl_bruttoeink_eltern_m( - arbeitsl_geld_2_bruttoeink_m: float, - kindergeld_anspruch: bool, - erwachsen: bool, -) -> float: - """Calculate parental gross income for calculation of child benefit. - - This variable is used to check whether the minimum income threshold for child - benefit is met. - - Parameters - ---------- - arbeitsl_geld_2_bruttoeink_m - See :func:`arbeitsl_geld_2_bruttoeink_m`. - kindergeld_anspruch - See :func:`kindergeld_anspruch`. - erwachsen - See basic input variable :ref:`erwachsen `. - - - Returns - ------- - - """ - # TODO(@MImmesberger): Redesign the conditions in this function: False for adults - # who do not have Kindergeld claims. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 - if erwachsen and (not kindergeld_anspruch): - out = arbeitsl_geld_2_bruttoeink_m - else: - out = 0.0 - - return out - - -@policy_function(params_key_for_rounding="kinderzuschl_eink") -def kinderzuschl_eink_eltern_m( - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: float, - kindergeld_anspruch: bool, - erwachsen: bool, -) -> float: - """Parental income (after deduction of taxes, social insurance contributions, and - other deductions) for calculation of child benefit. - - Parameters - ---------- - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - See :func:`arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m`. - kindergeld_anspruch - See :func:`kindergeld_anspruch`. - erwachsen - See basic input variable :ref:`erwachsen `. - - Returns - ------- - - """ - # TODO(@MImmesberger): Redesign the conditions in this function: False for adults - # who do not have Kindergeld claims. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 - if erwachsen and (not kindergeld_anspruch): - out = arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m - else: - out = 0.0 - return out - - -@policy_function(end_date="2010-12-31", leaf_name="kinderzuschl_eink_regel_m_bg") -def kinderzuschl_eink_regel_m_bg_arbeitsl_geld_2_params_old( - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: float, - alleinerz_bg: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate income relevant for calculation of child benefit until 2010. - - Parameters - ---------- - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg - See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg`. - alleinerz_bg - See :func:`alleinerz_bg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - if alleinerz_bg: - out = arbeitsl_geld_2_params["regelsatz"] * ( - 1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg - ) - else: - out = ( - arbeitsl_geld_2_params["regelsatz"] - * arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"] - * 2 - ) - - return float(out) - - -@policy_function(start_date="2011-01-01") -def kinderzuschl_eink_regel_m_bg( - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: float, - alleinerz_bg: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate income relevant for calculation of child benefit since 2011. - - Parameters - ---------- - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg - See :func:`_arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg`. - alleinerz_bg - See :func:`alleinerz_bg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params `. - - Returns - ------- - - """ - if alleinerz_bg: - out = arbeitsl_geld_2_params["regelsatz"][1] * ( - 1 + _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg - ) - else: - out = arbeitsl_geld_2_params["regelsatz"][2] * 2 - - return float(out) - - -def kinderzuschl_eink_relev_m_bg( - kinderzuschl_eink_regel_m_bg: float, kinderzuschl_kost_unterk_m_bg: float -) -> float: - """Aggregate relevant income and rental costs. - - Parameters - ---------- - kinderzuschl_eink_regel_m_bg - See :func:`kinderzuschl_eink_regel_m_bg`. - kinderzuschl_kost_unterk_m_bg - See :func:`kinderzuschl_kost_unterk_m_bg`. - - Returns - ------- - - """ - return kinderzuschl_eink_regel_m_bg + kinderzuschl_kost_unterk_m_bg - - -@policy_function(end_date="2019-06-30") -def kinderzuschl_eink_max_m_bg( - kinderzuschl_eink_relev_m_bg: float, - _kinderzuschl_anz_kinder_anspruch_bg: int, - kinderzuschl_params: dict, -) -> float: - """Calculate maximum income to be eligible for additional child benefit - (Kinderzuschlag). - - There is a maximum income threshold, depending on the need, plus the potential kiz - receipt (§6a (1) Nr. 3 BKGG). - - Parameters - ---------- - kinderzuschl_eink_relev_m_bg - See :func:`kinderzuschl_eink_relev_m_bg`. - _kinderzuschl_anz_kinder_anspruch_bg - See :func:`_kinderzuschl_anz_kinder_anspruch_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params `. - - Returns - ------- - - """ - out = ( - kinderzuschl_eink_relev_m_bg - + kinderzuschl_params["maximum"] * _kinderzuschl_anz_kinder_anspruch_bg - ) - - kindersofortzuschl = kinderzuschl_params.get("kindersofortzuschl", 0.0) - out += kindersofortzuschl * _kinderzuschl_anz_kinder_anspruch_bg - - return out - - -def kinderzuschl_eink_min_m_bg( - _kinderzuschl_anz_kinder_anspruch_bg: int, - alleinerz_bg: bool, - kinderzuschl_params: dict, -) -> float: - """Calculate minimal claim of child benefit (kinderzuschlag). - - Min income to be eligible for KIZ (different for singles and couples) (§6a (1) Nr. 2 - BKGG). - - Parameters - ---------- - _kinderzuschl_anz_kinder_anspruch_bg - See :func:`_kinderzuschl_anz_kinder_anspruch_bg - <_kinderzuschl_anz_kinder_anspruch_bg>`. - alleinerz_bg - See basic input variable :ref:`alleinerz_bg `. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params `. - - Returns - ------- - - """ - if _kinderzuschl_anz_kinder_anspruch_bg == 0: - out = 0.0 - elif alleinerz_bg: - out = kinderzuschl_params["min_eink_alleinerz"] - else: - out = kinderzuschl_params["min_eink_paare"] - - return out - - -def kinderzuschl_kindereink_abzug_m( # noqa: PLR0913 - kindergeld_anspruch: bool, - bruttolohn_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - arbeitsl_geld_2_eink_anr_frei_m: float, - kinderzuschl_params: dict, -) -> float: - """Child benefit after children income for each eligible child is considered. - - (§6a (3) S.3 BKGG) - - Parameters - ---------- - kindergeld_anspruch - See :func:`kindergeld_anspruch`. - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - kind_unterh_erhalt_m - See basic input variable :ref:`kind_unterh_erhalt_m `. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - arbeitsl_geld_2_eink_anr_frei_m - See :func:`arbeitsl_geld_2_eink_anr_frei_m`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params `. - - Returns - ------- - - """ - out = kindergeld_anspruch * ( - kinderzuschl_params["maximum"] - - kinderzuschl_params["entzugsrate_kind"] - * ( - bruttolohn_m - + kind_unterh_erhalt_m - + unterhaltsvors_m - - arbeitsl_geld_2_eink_anr_frei_m - ) - ) - - return max(out, 0.0) - - -def kinderzuschl_eink_anrechn_m_bg( - kinderzuschl_eink_eltern_m_bg: float, - kinderzuschl_eink_relev_m_bg: float, - kinderzuschl_params: dict, -) -> float: - """Calculate parental income subtracted from child benefit. - - (§6a (6) S. 3 BKGG) - - Parameters - ---------- - kinderzuschl_eink_eltern_m_bg - See :func:`kinderzuschl_eink_eltern_m_bg`. - kinderzuschl_eink_relev_m_bg - See :func:`kinderzuschl_eink_relev_m_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params `. - - Returns - ------- - - """ - out = kinderzuschl_params["entzugsrate_eltern"] * ( - kinderzuschl_eink_eltern_m_bg - kinderzuschl_eink_relev_m_bg - ) - - return max(out, 0.0) diff --git a/src/_gettsim/transfers/kinderzuschl/kost_unterk.py b/src/_gettsim/transfers/kinderzuschl/kost_unterk.py deleted file mode 100644 index 63921e6771..0000000000 --- a/src/_gettsim/transfers/kinderzuschl/kost_unterk.py +++ /dev/null @@ -1,75 +0,0 @@ -def kinderzuschl_kost_unterk_m_bg( - _kinderzuschl_wohnbedarf_eltern_anteil_bg: float, - bruttokaltmiete_m_bg: float, - heizkosten_m_bg: float, -) -> float: - """Calculate costs of living eligible to claim. - - Unlike ALG2, there is no check on whether living costs are "appropriate". - - Parameters - ---------- - _kinderzuschl_wohnbedarf_eltern_anteil_bg - See :func:`_kinderzuschl_wohnbedarf_eltern_anteil_bg`. - bruttokaltmiete_m_bg - See :func:`bruttokaltmiete_m_bg`. - heizkosten_m_bg - See :func:`heizkosten_m_bg`. - - Returns - ------- - - """ - warmmiete_m_bg = bruttokaltmiete_m_bg + heizkosten_m_bg - - out = _kinderzuschl_wohnbedarf_eltern_anteil_bg * warmmiete_m_bg - - return out - - -def _kinderzuschl_wohnbedarf_eltern_anteil_bg( - _kinderzuschl_anz_kinder_anspruch_bg: int, - anz_erwachsene_bg: int, - kinderzuschl_params: dict, -) -> float: - """Calculate living needs broken down to the parents. Defined as parents' - subsistence level on housing, divided by sum of subsistence level from parents and - children. - - Reference: § 6a Abs. 5 S. 3 BKGG - - Parameters - ---------- - _kinderzuschl_anz_kinder_anspruch_bg - See :func:`_kinderzuschl_anz_kinder_anspruch_bg`. - anz_erwachsene_bg - See :func:`anz_erwachsene_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params `. - - Returns - ------- - - """ - ex_min = kinderzuschl_params["existenzminimum"] - - # Up to 10 children are considered - considered_children = min(_kinderzuschl_anz_kinder_anspruch_bg, 10) - single_oder_paar = "single" if anz_erwachsene_bg == 1 else "paare" - - out = ( - ex_min["kosten_der_unterkunft"][single_oder_paar] - + ex_min["heizkosten"][single_oder_paar] - ) / ( - ex_min["kosten_der_unterkunft"][single_oder_paar] - + ex_min["heizkosten"][single_oder_paar] - + ( - considered_children - * ( - ex_min["kosten_der_unterkunft"]["kinder"] - + ex_min["heizkosten"]["kinder"] - ) - ) - ) - - return out diff --git a/src/_gettsim/transfers/kinderzuschlag/__init__.py b/src/_gettsim/transfers/kinderzuschlag/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/kinderzuschlag/einkommen.py b/src/_gettsim/transfers/kinderzuschlag/einkommen.py new file mode 100644 index 0000000000..9cb0da7743 --- /dev/null +++ b/src/_gettsim/transfers/kinderzuschlag/einkommen.py @@ -0,0 +1,355 @@ +"""Income relevant for calculation of Kinderzuschlag.""" + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "arbeitslosengeld_2__anzahl_kinder_bg": AggregateByGroupSpec( + source="kindergeld__anzahl_ansprüche", + aggr="sum", + ), +} + + +@policy_function() +def bruttoeinkommen_eltern_m( + arbeitslosengeld_2__bruttoeinkommen_m: float, + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + familie__erwachsen: bool, +) -> float: + """Calculate parental gross income for calculation of child benefit. + + This variable is used to check whether the minimum income threshold for child + benefit is met. + + Parameters + ---------- + arbeitslosengeld_2__bruttoeinkommen_m + See :func:`arbeitslosengeld_2__bruttoeinkommen_m`. + kindergeld__grundsätzlich_anspruchsberechtigt + See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. + familie__erwachsen + See :func:`familie__erwachsen`. + + + Returns + ------- + + """ + # TODO(@MImmesberger): Redesign the conditions in this function: False for adults + # who do not have Kindergeld claims. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 + if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + out = arbeitslosengeld_2__bruttoeinkommen_m + else: + out = 0.0 + + return out + + +@policy_function(params_key_for_rounding="kinderzuschl_eink") +def nettoeinkommen_eltern_m( + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + familie__erwachsen: bool, +) -> float: + """Parental income (after deduction of taxes, social insurance contributions, and + other deductions) for calculation of child benefit. + + Parameters + ---------- + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m + See :func:`arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m`. + kindergeld__grundsätzlich_anspruchsberechtigt + See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. + familie__erwachsen + See :func:`familie__erwachsen`. + + Returns + ------- + + """ + # TODO(@MImmesberger): Redesign the conditions in this function: False for adults + # who do not have Kindergeld claims. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 + if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m + else: + out = 0.0 + return out + + +@policy_function(end_date="2019-06-30") +def maximales_nettoeinkommen_m_bg( + erwachsenenbedarf_m_bg: float, + arbeitslosengeld_2__anzahl_kinder_bg: int, + kinderzuschl_params: dict, +) -> float: + """Calculate maximum income to be eligible for additional child benefit + (Kinderzuschlag). + + There is a maximum income threshold, depending on the need, plus the potential kiz + receipt (§6a (1) Nr. 3 BKGG). + + Parameters + ---------- + erwachsenenbedarf_m_bg + See :func:`erwachsenenbedarf_m_bg`. + arbeitslosengeld_2__anzahl_kinder_bg + See :func:`arbeitslosengeld_2__anzahl_kinder_bg`. + kinderzuschl_params + See params documentation :ref:`kinderzuschl_params `. + + Returns + ------- + + """ + out = ( + erwachsenenbedarf_m_bg + + kinderzuschl_params["maximum"] * arbeitslosengeld_2__anzahl_kinder_bg + ) + + kindersofortzuschl = kinderzuschl_params.get("kindersofortzuschl", 0.0) + out += kindersofortzuschl * arbeitslosengeld_2__anzahl_kinder_bg + + return out + + +@policy_function() +def mindestbruttoeinkommen_m_bg( + arbeitslosengeld_2__anzahl_kinder_bg: int, + familie__alleinerziehend_bg: bool, + kinderzuschl_params: dict, +) -> float: + """Calculate minimal claim of child benefit (kinderzuschlag). + + Min income to be eligible for KIZ (different for singles and couples) (§6a (1) Nr. 2 + BKGG). + + Parameters + ---------- + arbeitslosengeld_2__anzahl_kinder_bg + See :func:`arbeitslosengeld_2__anzahl_kinder_bg + `. + familie__alleinerziehend_bg + See :func:`familie__alleinerziehend_bg`. + kinderzuschl_params + See params documentation :ref:`kinderzuschl_params `. + + Returns + ------- + + """ + if arbeitslosengeld_2__anzahl_kinder_bg == 0: + out = 0.0 + elif familie__alleinerziehend_bg: + out = kinderzuschl_params["min_eink_alleinerz"] + else: + out = kinderzuschl_params["min_eink_paare"] + + return out + + +@policy_function() +def anzurechnendes_einkommen_eltern_m_bg( + nettoeinkommen_eltern_m_bg: float, + erwachsenenbedarf_m_bg: float, + kinderzuschl_params: dict, +) -> float: + """Calculate parental income subtracted from child benefit. + + (§6a (6) S. 3 BKGG) + + Parameters + ---------- + nettoeinkommen_eltern_m_bg + See :func:`nettoeinkommen_eltern_m_bg`. + erwachsenenbedarf_m_bg + See :func:`erwachsenenbedarf_m_bg`. + kinderzuschl_params + See params documentation :ref:`kinderzuschl_params `. + + Returns + ------- + + """ + out = kinderzuschl_params["entzugsrate_eltern"] * ( + nettoeinkommen_eltern_m_bg - erwachsenenbedarf_m_bg + ) + + return max(out, 0.0) + + +@policy_function() +def kosten_der_unterkunft_m_bg( + wohnbedarf_anteil_eltern_bg: float, + arbeitslosengeld_2__bruttokaltmiete_m_bg: float, + arbeitslosengeld_2__heizkosten_m_bg: float, +) -> float: + """Calculate costs of living eligible to claim. + + Unlike ALG2, there is no check on whether living costs are "appropriate". + + Parameters + ---------- + wohnbedarf_anteil_eltern_bg + See :func:`wohnbedarf_anteil_eltern_bg`. + arbeitslosengeld_2__bruttokaltmiete_m_bg + See :func:`arbeitslosengeld_2__bruttokaltmiete_m_bg`. + arbeitslosengeld_2__heizkosten_m_bg + See :func:`arbeitslosengeld_2__heizkosten_m_bg`. + + Returns + ------- + + """ + warmmiete_m_bg = ( + arbeitslosengeld_2__bruttokaltmiete_m_bg + arbeitslosengeld_2__heizkosten_m_bg + ) + + out = wohnbedarf_anteil_eltern_bg * warmmiete_m_bg + + return out + + +@policy_function() +def wohnbedarf_anteil_eltern_bg( + arbeitslosengeld_2__anzahl_kinder_bg: int, + arbeitslosengeld_2__anzahl_erwachsene_bg: int, + kinderzuschl_params: dict, +) -> float: + """Calculate living needs broken down to the parents. Defined as parents' + subsistence level on housing, divided by sum of subsistence level from parents and + children. + + Reference: § 6a Abs. 5 S. 3 BKGG + + Parameters + ---------- + arbeitslosengeld_2__anzahl_kinder_bg + See :func:`arbeitslosengeld_2__anzahl_kinder_bg`. + arbeitslosengeld_2__anzahl_erwachsene_bg + See :func:`arbeitslosengeld_2__anzahl_erwachsene_bg`. + kinderzuschl_params + See params documentation :ref:`kinderzuschl_params `. + + Returns + ------- + + """ + ex_min = kinderzuschl_params["existenzminimum"] + + # Up to 10 children are considered + considered_children = min(arbeitslosengeld_2__anzahl_kinder_bg, 10) + single_oder_paar = ( + "single" if arbeitslosengeld_2__anzahl_erwachsene_bg == 1 else "paare" + ) + + out = ( + ex_min["kosten_der_unterkunft"][single_oder_paar] + + ex_min["heizkosten"][single_oder_paar] + ) / ( + ex_min["kosten_der_unterkunft"][single_oder_paar] + + ex_min["heizkosten"][single_oder_paar] + + ( + considered_children + * ( + ex_min["kosten_der_unterkunft"]["kinder"] + + ex_min["heizkosten"]["kinder"] + ) + ) + ) + + return out + + +# TODO(@MImmesberger): The regelsatz is already calculated in the ALG2 modules. We +# should remove this function. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/826 +@policy_function(end_date="2010-12-31", leaf_name="regelsatz_m_bg") +def regelsatz_m_bg_arbeitsl_geld_2_params_bis_2010( + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: float, + familie__alleinerziehend_bg: bool, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate income relevant for calculation of child benefit until 2010. + + Parameters + ---------- + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg + See :func:`arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg`. + familie__alleinerziehend_bg + See :func:`familie__alleinerziehend_bg`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + if familie__alleinerziehend_bg: + out = arbeitsl_geld_2_params["regelsatz"] * ( + 1 + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg + ) + else: + out = ( + arbeitsl_geld_2_params["regelsatz"] + * arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"] + * 2 + ) + + return float(out) + + +# TODO(@MImmesberger): The regelsatz is already calculated in the ALG2 modules. We +# should remove this function. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/826 +@policy_function(start_date="2011-01-01") +def regelsatz_m_bg( + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: float, + familie__alleinerziehend_bg: bool, + arbeitsl_geld_2_params: dict, +) -> float: + """Calculate income relevant for calculation of child benefit since 2011. + + Parameters + ---------- + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg + See :func:`arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg`. + familie__alleinerziehend_bg + See :func:`familie__alleinerziehend_bg`. + arbeitsl_geld_2_params + See params documentation :ref:`arbeitsl_geld_2_params `. + + Returns + ------- + + """ + if familie__alleinerziehend_bg: + out = arbeitsl_geld_2_params["regelsatz"][1] * ( + 1 + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg + ) + else: + out = arbeitsl_geld_2_params["regelsatz"][2] * 2 + + return float(out) + + +@policy_function() +def erwachsenenbedarf_m_bg( + regelsatz_m_bg: float, kosten_der_unterkunft_m_bg: float +) -> float: + """Aggregate relevant income and rental costs. + + Parameters + ---------- + regelsatz_m_bg + See :func:`regelsatz_m_bg`. + kosten_der_unterkunft_m_bg + See :func:`kosten_der_unterkunft_m_bg`. + + Returns + ------- + + """ + return regelsatz_m_bg + kosten_der_unterkunft_m_bg diff --git a/src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py new file mode 100644 index 0000000000..a1cbf5ca13 --- /dev/null +++ b/src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py @@ -0,0 +1,284 @@ +"""Kinderzuschlag.""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_m_bg( + anspruchshöhe_m_bg: float, + vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, + anzahl_rentenbezieher_hh: int, +) -> float: + """Aggregate child benefit on household level. + + Parameters + ---------- + anspruchshöhe_m_bg + See :func:`anspruchshöhe_m_bg`. + vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + See :func:`vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + See :func:`vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. + anzahl_rentenbezieher_hh + See :func:`anzahl_rentenbezieher_hh`. + + Returns + ------- + + """ + if ( + (not vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg) + and ( + not vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg + ) + ) or (anzahl_rentenbezieher_hh > 0): + out = 0.0 + else: + out = anspruchshöhe_m_bg + + return out + + +@policy_function() +def anspruchshöhe_m( + anspruchshöhe_m_bg: float, + arbeitslosengeld_2__anzahl_personen_bg: int, +) -> float: + """Kinderzuschlag on individual level. + + Target necessary for aggregation to wthh level. + + Parameters + ---------- + anspruchshöhe_m_bg + See :func:`anspruchshöhe_m_bg`. + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + + Returns + ------- + + """ + return anspruchshöhe_m_bg / arbeitslosengeld_2__anzahl_personen_bg + + +@policy_function() +def anspruchshöhe_m_bg( + basisbetrag_m_bg: float, + vermögen_bg: float, + vermögensfreibetrag_bg: float, +) -> float: + """Set preliminary child benefit to zero if it exceeds the wealth exemption. + + Parameters + ---------- + basisbetrag_m_bg + See :func:`basisbetrag_m_bg`. + vermögen_bg + See basic input variable :ref:`vermögen_bg `. + vermögensfreibetrag_bg + See :func:`vermögensfreibetrag_bg`. + + Returns + ------- + + """ + + if vermögen_bg > vermögensfreibetrag_bg: + out = max( + basisbetrag_m_bg - (vermögen_bg - vermögensfreibetrag_bg), + 0.0, + ) + else: + out = basisbetrag_m_bg + return out + + +@policy_function(end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg") +def vermögensfreibetrag_bg_bis_2022( + arbeitslosengeld_2__freibetrag_vermögen_bg: float, +) -> float: + """Wealth exemptions for Kinderzuschlag until 2022. + + Parameters + ---------- + arbeitslosengeld_2__freibetrag_vermögen_bg + See :func:`arbeitslosengeld_2__freibetrag_vermögen_bg`. + + Returns + ------- + + """ + + return arbeitslosengeld_2__freibetrag_vermögen_bg + + +@policy_function(start_date="2023-01-01", leaf_name="vermögensfreibetrag_bg") +def vermögensfreibetrag_bg_ab_2023( + arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg: float, +) -> float: + """Wealth exemptions for Kinderzuschlag since 2023. + + Parameters + ---------- + arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg + See :func:`arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg`. + + Returns + ------- + + """ + + return arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg + + +@policy_function( + end_date="2019-06-30", + leaf_name="basisbetrag_m_bg", +) +def basisbetrag_m_bg_check_eink_max( # noqa: PLR0913 + bruttoeinkommen_eltern_m_bg: float, + nettoeinkommen_eltern_m_bg: float, + mindestbruttoeinkommen_m_bg: float, + maximales_nettoeinkommen_m_bg: float, + basisbetrag_kind_m_bg: float, + anzurechnendes_einkommen_eltern_m_bg: float, + arbeitslosengeld_2__anzahl_personen_bg: int, +) -> float: + """Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or + Arbeitslosengeld 2 applies will be checked later. + + To be eligible for Kinderzuschlag, gross income of parents needs to exceed the + minimum income threshold and net income needs to be below the maximum income + threshold. + + Kinderzuschlag is only paid out if parents are part of the BG + (arbeitslosengeld_2__anzahl_personen_bg > 1). + + Parameters + ---------- + bruttoeinkommen_eltern_m_bg + See :func:`bruttoeinkommen_eltern_m_bg`. + nettoeinkommen_eltern_m_bg + See :func:`nettoeinkommen_eltern_m_bg`. + mindestbruttoeinkommen_m_bg + See :func:`mindestbruttoeinkommen_m_bg`. + maximales_nettoeinkommen_m_bg + See :func:`maximales_nettoeinkommen_m_bg`. + basisbetrag_kind_m_bg + See :func:`basisbetrag_kind_m_bg`. + anzurechnendes_einkommen_eltern_m_bg + See :func:`anzurechnendes_einkommen_eltern_m_bg`. + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + + Returns + ------- + + """ + + # Check if parental income is in income range for child benefit. + if ( + (bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg) + and (nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg) + and arbeitslosengeld_2__anzahl_personen_bg > 1 + ): + out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2019-07-01") +def basisbetrag_m_bg( + bruttoeinkommen_eltern_m_bg: float, + mindestbruttoeinkommen_m_bg: float, + basisbetrag_kind_m_bg: float, + anzurechnendes_einkommen_eltern_m_bg: float, + arbeitslosengeld_2__anzahl_personen_bg: int, +) -> float: + """Calculate Kinderzuschlag since 07/2019. Whether Kinderzuschlag or + Arbeitslosengeld 2 applies will be checked later. + + To be eligible for Kinderzuschlag, gross income of parents needs to exceed the + minimum income threshold. + + Kinderzuschlag is only paid out if parents are part of the BG + (arbeitslosengeld_2__anzahl_personen_bg > 1). + + + Parameters + ---------- + hh_id + See basic input variable :ref:`hh_id `. + bruttoeinkommen_eltern_m_bg + See :func:`bruttoeinkommen_eltern_m_bg`. + mindestbruttoeinkommen_m_bg + See :func:`mindestbruttoeinkommen_m_bg`. + basisbetrag_kind_m_bg + See :func:`basisbetrag_kind_m_bg`. + anzurechnendes_einkommen_eltern_m_bg + See :func:`anzurechnendes_einkommen_eltern_m_bg`. + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + + Returns + ------- + + """ + if ( + bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg + ) and arbeitslosengeld_2__anzahl_personen_bg > 1: + out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) + else: + out = 0.0 + + return out + + +@policy_function() +def basisbetrag_kind_m( # noqa: PLR0913 + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: float, + kinderzuschl_params: dict, +) -> float: + """Child benefit after children income for each eligible child is considered. + + (§6a (3) S.3 BKGG) + + Parameters + ---------- + kindergeld__grundsätzlich_anspruchsberechtigt + See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + unterhalt__tatsächlich_erhaltener_betrag_m + See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m `. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + arbeitslosengeld_2__anrechnungsfreies_einkommen_m + See :func:`arbeitslosengeld_2__anrechnungsfreies_einkommen_m`. + kinderzuschl_params + See params documentation :ref:`kinderzuschl_params `. + + Returns + ------- + + """ + out = kindergeld__grundsätzlich_anspruchsberechtigt * ( + kinderzuschl_params["maximum"] + - kinderzuschl_params["entzugsrate_kind"] + * ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + + unterhalt__tatsächlich_erhaltener_betrag_m + + unterhaltsvorschuss__betrag_m + - arbeitslosengeld_2__anrechnungsfreies_einkommen_m + ) + ) + + return max(out, 0.0) diff --git a/src/_gettsim/transfers/rente.py b/src/_gettsim/transfers/rente.py deleted file mode 100644 index 02b72c83be..0000000000 --- a/src/_gettsim/transfers/rente.py +++ /dev/null @@ -1,2600 +0,0 @@ -from _gettsim.functions.policy_function import policy_function - - -def sum_ges_rente_priv_rente_m(priv_rente_m: float, ges_rente_m: float) -> float: - """Calculate total individual pension as sum of private and public pension. - - Parameters - ---------- - priv_rente_m - See basic input variable :ref:`priv_rente_m `. - ges_rente_m - See :func:`ges_rente_m`. - - Returns - ------- - - """ - out = priv_rente_m + ges_rente_m - return out - - -@policy_function(end_date="2020-12-31") -def ges_rente_m(bruttorente_m: float, rentner: bool) -> float: - return bruttorente_m if rentner else 0.0 - - -@policy_function( - start_date="2021-01-01", - params_key_for_rounding="ges_rente", - leaf_name="ges_rente_m", -) -def ges_rente_mit_grundrente_m( - bruttorente_m: float, - grundr_zuschlag_m: float, - rentner: bool, -) -> float: - """Calculate total individual public pension including Grundrentenzuschlag. - - Parameters - ---------- - bruttorente_m - See :func:`bruttorente_m`. - grundr_zuschlag_m - See :func:`grundr_zuschlag_m`. - rentner - See basic input variable :ref:`rentner `. - - Returns - ------- - - """ - out = bruttorente_m + grundr_zuschlag_m if rentner else 0.0 - return out - - -@policy_function( - end_date="2016-12-31", - leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", -) -def bruttorente_mit_harter_hinzuverdienstgrenze_m( - alter: int, - ges_rente_regelaltersgrenze: float, - bruttolohn_y: float, - bruttorente_basisbetrag_m: float, - ges_rente_params: dict, -) -> float: - """Pension benefits after earnings test for early retirees. - - If earnings are above an earnings limit, the pension is fully deducted. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - bruttolohn_y - See basic input variable :ref:`bruttolohn_y `. - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - if (alter >= ges_rente_regelaltersgrenze) or ( - bruttolohn_y <= ges_rente_params["hinzuverdienstgrenze"] - ): - out = bruttorente_basisbetrag_m - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", - leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", -) -def bruttorente_mit_hinzuverdienstdeckel_m( - alter: int, - ges_rente_regelaltersgrenze: float, - bruttolohn_y: float, - _differenz_bruttolohn_hinzuverdienstdeckel_m: float, - _ges_rente_zahlbetrag_ohne_deckel_m: float, -) -> float: - """Pension benefits after earnings test for early retirees. - - If sum of earnings and pension is larger than the highest income in the last 15 - years, the pension is fully deducted (Hinzuverdienstdeckel). - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - bruttolohn_y - See basic input variable :ref:`bruttolohn_y `. - _differenz_bruttolohn_hinzuverdienstdeckel_m - See :func:`_differenz_bruttolohn_hinzuverdienstdeckel_m`. - _ges_rente_zahlbetrag_ohne_deckel_m - See :func:`_ges_rente_zahlbetrag_ohne_deckel_m`. - - Returns - ------- - - """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - if ( - _differenz_bruttolohn_hinzuverdienstdeckel_m > 0 - and alter <= ges_rente_regelaltersgrenze - and bruttolohn_y > 0 - ): - out = max( - _ges_rente_zahlbetrag_ohne_deckel_m - - _differenz_bruttolohn_hinzuverdienstdeckel_m, - 0.0, - ) - else: - out = _ges_rente_zahlbetrag_ohne_deckel_m - - return out - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def _ges_rente_zahlbetrag_ohne_deckel_m( - bruttolohn_y: float, - alter: int, - ges_rente_regelaltersgrenze: float, - bruttorente_basisbetrag_m: float, - _differenz_bruttolohn_hinzuverdienstgrenze_m: float, - ges_rente_params: dict, -) -> float: - """Pension benefits after earnings test without accounting for the earnings cap - (Hinzuverdienstdeckel). - - Parameters - ---------- - bruttolohn_y - See basic input variable :ref:`bruttolohn_y `. - alter - See basic input variable :ref:`alter `. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - _differenz_bruttolohn_hinzuverdienstgrenze_m - See :func:`_differenz_bruttolohn_hinzuverdienstgrenze_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - # No deduction because of age or low earnings - if (alter >= ges_rente_regelaltersgrenze) or ( - bruttolohn_y <= ges_rente_params["hinzuverdienstgrenze"] - ): - out = bruttorente_basisbetrag_m - # Basis deduction of 40% - else: - out = max( - bruttorente_basisbetrag_m - - ges_rente_params["abzugsrate_hinzuverdienst"] - * _differenz_bruttolohn_hinzuverdienstgrenze_m, - 0.0, - ) - - return out - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def _differenz_bruttolohn_hinzuverdienstgrenze_y( - bruttolohn_y: float, - ges_rente_params: dict, -) -> float: - """Earnings that are subject to pension deductions. - - Parameters - ---------- - bruttolohn_y - See basic input variable :ref:`bruttolohn_y `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - return max(bruttolohn_y - ges_rente_params["hinzuverdienstgrenze"], 0.0) - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def _differenz_bruttolohn_hinzuverdienstdeckel_y( - bruttolohn_y: float, - _ges_rente_zahlbetrag_ohne_deckel_y: float, - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: float, -) -> float: - """Income above the earnings cap (Hinzuverdienstdeckel). - - Parameters - ---------- - bruttolohn_y - See basic input variable :ref:`bruttolohn_y `. - _ges_rente_zahlbetrag_ohne_deckel_y - See :func:`_ges_rente_zahlbetrag_ohne_deckel_y`. - höchster_bruttolohn_letzte_15_jahre_vor_rente_y - See basic input variable :ref:`höchster_bruttolohn_letzte_15_jahre_vor_rente_y - `. - - Returns - ------- - - """ - return max( - _ges_rente_zahlbetrag_ohne_deckel_y - + bruttolohn_y - - höchster_bruttolohn_letzte_15_jahre_vor_rente_y, - 0.0, - ) - - -@policy_function( - start_date="2023-01-01", - leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", -) -def bruttorente_ohne_einkommensanrechnung_m( - bruttorente_basisbetrag_m: float, -) -> float: - """Public pension claim before Grundrentenzuschlag. - - Parameters - ---------- - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - - Returns - ------- - - """ - return bruttorente_basisbetrag_m - - -@policy_function(start_date="1992-01-01") -def bruttorente_basisbetrag_m( - ges_rente_zugangsfaktor: float, - entgeltp_ost: float, - entgeltp_west: float, - rentner: bool, - ges_rente_params: dict, -) -> float: - """Old-Age Pensions claim. The function follows the following equation: - - .. math:: - - R = EP * ZF * Rw - - models 'Rentenformel': - https://de.wikipedia.org/wiki/Rentenformel - https://de.wikipedia.org/wiki/Rentenanpassungsformel - - - Parameters - ---------- - ges_rente_zugangsfaktor - See :func:`ges_rente_zugangsfaktor`. - entgeltp_ost - See :func:`entgeltp_ost`. - entgeltp_west - See :func:`entgeltp_west`. - rentner - See basic input variable :ref:`rentner `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - - if rentner: - out = ( - entgeltp_west * ges_rente_params["rentenwert"]["west"] - + entgeltp_ost * ges_rente_params["rentenwert"]["ost"] - ) * ges_rente_zugangsfaktor - else: - out = 0.0 - - return out - - -def rentenwert(wohnort_ost: bool, ges_rente_params: dict) -> float: - """Select the rentenwert depending on place of living. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - - """ - params = ges_rente_params["rentenwert"] - - out = params["ost"] if wohnort_ost else params["west"] - - return float(out) - - -def entgeltp_west_updated( - wohnort_ost: bool, entgeltp_west: float, entgeltp_update_lohn: float -) -> float: - """Update western earning points. - - Given earnings, social insurance rules, average - earnings in a particular year and potentially other - variables (e.g., benefits for raising children, - informal care), return the new earnings points. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost `. - entgeltp_west - See basic input variable :ref:`ententgeltp_westgeltp `. - entgeltp_update_lohn - See :func:`entgeltp_update_lohn`. - - Returns - ------- - - """ - if wohnort_ost: - out = entgeltp_west - else: - out = entgeltp_west + entgeltp_update_lohn - return out - - -def entgeltp_ost_updated( - wohnort_ost: bool, entgeltp_ost: float, entgeltp_update_lohn: float -) -> float: - """Update eastern earning points. - - Given earnings, social insurance rules, average - earnings in a particular year and potentially other - variables (e.g., benefits for raising children, - informal care), return the new earnings points. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost `. - entgeltp_ost - See basic input variable :ref:`entgeltp_ost `. - entgeltp_update_lohn - See :func:`entgeltp_update_lohn`. - - Returns - ------- - - """ - if wohnort_ost: - out = entgeltp_ost + entgeltp_update_lohn - else: - out = entgeltp_ost - return out - - -def entgeltp_update_lohn( - bruttolohn_m: float, - wohnort_ost: bool, - _ges_rentenv_beitr_bemess_grenze_m: float, - ges_rente_params: dict, -) -> float: - """Return earning points for the wages earned in the last year. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - wohnort_ost - See :func:`wohnort_ost`. - _ges_rentenv_beitr_bemess_grenze_m - See :func:`_ges_rentenv_beitr_bemess_grenze_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - Returns - ------- - - """ - - # Scale bruttolohn up if earned in eastern Germany - if wohnort_ost: - bruttolohn_scaled_east = ( - bruttolohn_m * ges_rente_params["umrechnung_entgeltp_beitrittsgebiet"] - ) - else: - bruttolohn_scaled_east = bruttolohn_m - - # Calculate the (scaled) wage, which is subject to pension contributions. - if bruttolohn_scaled_east > _ges_rentenv_beitr_bemess_grenze_m: - bruttolohn_scaled_rentenv = _ges_rentenv_beitr_bemess_grenze_m - else: - bruttolohn_scaled_rentenv = bruttolohn_scaled_east - - # Calculate monthly mean wage in Germany - durchschnittslohn_m = (1 / 12) * ges_rente_params[ - "beitragspflichtiges_durchschnittsentgelt" - ] - - out = bruttolohn_scaled_rentenv / durchschnittslohn_m - return out - - -def ges_rente_zugangsfaktor( # noqa: PLR0913 - age_of_retirement: float, - ges_rente_regelaltersgrenze: float, - referenzalter_abschlag: float, - _ges_rente_altersgrenze_abschlagsfrei: float, - _ges_rente_altersgrenze_vorzeitig: float, - ges_rente_vorauss_vorzeitig: bool, - ges_rente_vorauss_regelrente: bool, - ges_rente_params: dict, -) -> float: - """Zugangsfaktor (pension adjustment factor). - - Factor by which the pension claim is multiplied to calculate the pension payment. - The Zugangsfaktor is larger than 1 if the agent retires after the normal retirement - age (NRA) and smaller than 1 if the agent retires earlier than the full retirement - age (FRA). - - At the regelaltersgrenze - normal retirement age (NRA), the agent is allowed to get - pensions with his full claim. In general, if the agent retires earlier or later, the - Zugangsfaktor and therefore the pension claim is higher or lower. The Zugangsfaktor - is 1.0 in [FRA, NRA]. - - Legal reference: § 77 Abs. 2 Nr. 2 SGB VI - - Since pension payments of the GRV always start at 1st day of month, day of birth - within month does not matter. The eligibility always starts in the month after - reaching the required age. - - Returns 0 of the person is not eligible for receiving pension benefits because - either i) the person is younger than the earliest possible retirement age or ii) the - person is not eligible for pension benefits because `ges_rente_vorauss_regelrente` - is False. - - Parameters - ---------- - age_of_retirement - See :func:`age_of_retirement`. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - referenzalter_abschlag - See :func:`referenzalter_abschlag`. - _ges_rente_altersgrenze_abschlagsfrei - See :func:`_ges_rente_altersgrenze_abschlagsfrei`. - _ges_rente_altersgrenze_vorzeitig - See :func:`_ges_rente_altersgrenze_vorzeitig`. - ges_rente_vorauss_vorzeitig - See :func:`ges_rente_vorauss_vorzeitig`. - ges_rente_vorauss_regelrente - See :func:`ges_rente_vorauss_regelrente`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Zugangsfaktor - - """ - - if ges_rente_vorauss_regelrente: - # Early retirement (before full retirement age): Zugangsfaktor < 1 - if age_of_retirement < _ges_rente_altersgrenze_abschlagsfrei: # [ERA,FRA) - if ges_rente_vorauss_vorzeitig and ( - age_of_retirement >= _ges_rente_altersgrenze_vorzeitig - ): - # Calc difference to FRA of pensions with early retirement options - # (Altersgrenze langjährig Versicherte, Altersrente für Frauen - # /Arbeitslose). - # checks whether older than possible era - out = ( - 1 - + (age_of_retirement - referenzalter_abschlag) - * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ - "vorzeitiger_renteneintritt" - ] - ) - else: - # Early retirement although not eligible to do so. - out = 0.0 - - # Late retirement (after normal retirement age/Regelaltersgrenze): - # Zugangsfaktor > 1 - elif age_of_retirement > ges_rente_regelaltersgrenze: - out = ( - 1 - + (age_of_retirement - ges_rente_regelaltersgrenze) - * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ - "späterer_renteneintritt" - ] - ) - - # Retirement between full retirement age and normal retirement age: - else: # [FRA,NRA] - out = 1.0 - - # Claiming pension is not possible if ges_rente_vorauss_regelrente is 'False'. - # Return 0 in this case. Then, the pension payment is 0 as well. - else: - out = 0.0 - - out = max(out, 0.0) - - return out - - -def age_of_retirement( - jahr_renteneintr: int, - monat_renteneintr: int, - geburtsjahr: int, - geburtsmonat: int, -) -> float: - """Age at retirement in monthly precision. - - Calculates the age of person's retirement in monthly precision. - As retirement is only possible at first day of month and as - persons eligible for pension at first of month after reaching the - age threshold (§ 99 SGB VI) persons who retire in same month will - be considered a month too young: Substraction of 1/12. - - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - jahr_renteneintr - See basic input variable :ref:`jahr_renteneintr `. - monat_renteneintr - See basic input variable :ref:`monat_renteneintr `. - - Returns - ------- - Age at retirement. - - """ - return jahr_renteneintr - geburtsjahr + (monat_renteneintr - geburtsmonat - 1) / 12 - - -@policy_function( - end_date="2011-12-31", leaf_name="_ges_rente_altersgrenze_abschlagsfrei" -) -def _ges_rente_altersgrenze_abschlagsfrei_ohne_besond_langj( - ges_rente_regelaltersgrenze: float, - _ges_rente_frauen_altersgrenze: float, - _ges_rente_langj_altersgrenze: float, - _ges_rente_arbeitsl_altersgrenze: float, - ges_rente_vorauss_frauen: bool, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_arbeitsl: bool, -) -> float: - """Full retirement age after eligibility checks, assuming eligibility for - Regelaltersrente. - - Age at which pension can be claimed without deductions. This age is smaller or equal - to the normal retirement age (FRA<=NRA) and depends on personal characteristics as - gender, insurance duration, health/disability, employment status. - - Parameters - ---------- - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_frauen_altersgrenze - See :func:`_ges_rente_frauen_altersgrenze`. - _ges_rente_langj_altersgrenze - See :func:`_ges_rente_langj_altersgrenze`. - _ges_rente_arbeitsl_altersgrenze - See :func:`_ges_rente_arbeitsl_altersgrenze`. - ges_rente_vorauss_frauen - See :func:`ges_rente_vorauss_frauen`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_arbeitsl: - See :func:`ges_rente_vorauss_arbeitsl`. - Returns - ------- - Full retirement age. - - """ - - out = ges_rente_regelaltersgrenze - if ges_rente_vorauss_frauen: - out = min([out, _ges_rente_frauen_altersgrenze]) - if ges_rente_vorauss_arbeitsl: - out = min([out, _ges_rente_arbeitsl_altersgrenze]) - if ges_rente_vorauss_langj: - out = min([out, _ges_rente_langj_altersgrenze]) - - return out - - -@policy_function( - start_date="2012-01-01", - end_date="2017-12-31", - leaf_name="_ges_rente_altersgrenze_abschlagsfrei", -) -def _ges_rente_altersgrenze_abschlagsfrei_mit_besond_langj( - ges_rente_regelaltersgrenze: float, - _ges_rente_frauen_altersgrenze: float, - _ges_rente_langj_altersgrenze: float, - _ges_rente_besond_langj_altersgrenze: float, - _ges_rente_arbeitsl_altersgrenze: float, - ges_rente_vorauss_frauen: bool, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_besond_langj: bool, - ges_rente_vorauss_arbeitsl: bool, -) -> float: - """Full retirement age after eligibility checks, assuming eligibility for - Regelaltersrente. - - Age at which pension can be claimed without deductions. This age is smaller or equal - to the normal retirement age (FRA<=NRA) and depends on personal characteristics as - gender, insurance duration, health/disability, employment status. - - Starting in 2012, the pension for the very long term insured (Altersrente für - besonders langjährig Versicherte) is introduced. Policy becomes inactive in 2018 - because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and - Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_frauen_altersgrenze - See :func:`_ges_rente_frauen_altersgrenze`. - _ges_rente_langj_altersgrenze - See :func:`_ges_rente_langj_altersgrenze`. - _ges_rente_besond_langj_altersgrenze - See :func:`_ges_rente_besond_langj_altersgrenze`. - _ges_rente_arbeitsl_altersgrenze - See :func:`_ges_rente_arbeitsl_altersgrenze`. - ges_rente_vorauss_frauen - See :func:`ges_rente_vorauss_frauen`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_besond_langj - See :func:`ges_rente_vorauss_besond_langj`. - ges_rente_vorauss_arbeitsl - See :func:`ges_rente_vorauss_arbeitsl`. - - Returns - ------- - Full retirement age. - - """ - - out = ges_rente_regelaltersgrenze - if ges_rente_vorauss_frauen: - out = min([out, _ges_rente_frauen_altersgrenze]) - if ges_rente_vorauss_arbeitsl: - out = min([out, _ges_rente_arbeitsl_altersgrenze]) - if ges_rente_vorauss_langj: - out = min([out, _ges_rente_langj_altersgrenze]) - if ges_rente_vorauss_besond_langj: - out = min([out, _ges_rente_besond_langj_altersgrenze]) - - return out - - -@policy_function( - start_date="2018-01-01", leaf_name="_ges_rente_altersgrenze_abschlagsfrei" -) -def _ges_rente_altersgrenze_abschlagsfrei_ohne_arbeitsl_frauen( - ges_rente_regelaltersgrenze: float, - _ges_rente_langj_altersgrenze: float, - _ges_rente_besond_langj_altersgrenze: float, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_besond_langj: bool, -) -> float: - """Full retirement age after eligibility checks, assuming eligibility for - Regelaltersrente. - - Age at which pension can be claimed without deductions. This age is smaller or equal - to the normal retirement age (FRA<=NRA) and depends on personal characteristics as - gender, insurance duration, health/disability, employment status. - - Parameters - ---------- - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_langj_altersgrenze - See :func:`_ges_rente_langj_altersgrenze`. - _ges_rente_besond_langj_altersgrenze - See :func:`_ges_rente_besond_langj_altersgrenze`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_besond_langj - See :func:`ges_rente_vorauss_besond_langj`. - - Returns - ------- - Full retirement age. - - """ - - out = ges_rente_regelaltersgrenze - if ges_rente_vorauss_langj: - out = min([out, _ges_rente_langj_altersgrenze]) - if ges_rente_vorauss_besond_langj: - out = min([out, _ges_rente_besond_langj_altersgrenze]) - - return out - - -@policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") -def _referenzalter_abschlag_mit_rente_arbeitsl_frauen( - ges_rente_regelaltersgrenze: float, - _ges_rente_frauen_altersgrenze: float, - _ges_rente_langj_altersgrenze: float, - _ges_rente_arbeitsl_altersgrenze: float, - ges_rente_vorauss_frauen: bool, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_arbeitsl: bool, -) -> float: - """Reference age for deduction calculation in case of early retirement - (Zugangsfaktor). - - Normal retirement age if not eligible for early retirement. Policy becomes inactive - in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit - and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_frauen_altersgrenze - See :func:`_ges_rente_frauen_altersgrenze`. - _ges_rente_langj_altersgrenze - See :func:`_ges_rente_langj_altersgrenze`. - _ges_rente_arbeitsl_altersgrenze - See :func:`_ges_rente_arbeitsl_altersgrenze`. - ges_rente_vorauss_frauen - See :func:`ges_rente_vorauss_frauen`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_arbeitsl - See :func:`ges_rente_vorauss_arbeitsl`. - - Returns - ------- - Reference age for deduction calculation. - - """ - if ( - ges_rente_vorauss_langj - and ges_rente_vorauss_frauen - and ges_rente_vorauss_arbeitsl - ): - out = min( - [ - _ges_rente_frauen_altersgrenze, - _ges_rente_langj_altersgrenze, - _ges_rente_arbeitsl_altersgrenze, - ] - ) - elif ges_rente_vorauss_langj and ges_rente_vorauss_frauen: - out = min([_ges_rente_frauen_altersgrenze, _ges_rente_langj_altersgrenze]) - elif ges_rente_vorauss_langj and ges_rente_vorauss_arbeitsl: - out = min([_ges_rente_langj_altersgrenze, _ges_rente_arbeitsl_altersgrenze]) - elif ges_rente_vorauss_langj: - out = _ges_rente_langj_altersgrenze - elif ges_rente_vorauss_frauen: - out = _ges_rente_frauen_altersgrenze - elif ges_rente_vorauss_arbeitsl: - out = _ges_rente_arbeitsl_altersgrenze - else: - out = ges_rente_regelaltersgrenze - - return out - - -@policy_function(start_date="2018-01-01", leaf_name="referenzalter_abschlag") -def _referenzalter_abschlag_ohne_rente_arbeitsl_frauen( - ges_rente_regelaltersgrenze: float, - _ges_rente_langj_altersgrenze: float, - ges_rente_vorauss_langj: bool, -) -> float: - """Reference age for deduction calculation in case of early retirement - (Zugangsfaktor). - - Normal retirement age if not eligible for early retirement. - - Parameters - ---------- - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_langj_altersgrenze - See :func:`_ges_rente_langj_altersgrenze`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - - Returns - ------- - Reference age for deduction calculation. - - """ - if ges_rente_vorauss_langj: - out = _ges_rente_langj_altersgrenze - else: - out = ges_rente_regelaltersgrenze - - return out - - -@policy_function(end_date="2007-04-19", leaf_name="ges_rente_regelaltersgrenze") -def ges_rente_regelaltersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Normal retirement age (NRA). - - NRA is the same for every birth cohort. - - The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does - not serve as reference for calculating deductions. However, it serves as reference - for calculating gains in the Zugangsfakor in case of later retirement. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - - Returns - ------- - Normal retirement age (NRA). - - """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["regelaltersgrenze"] - - -@policy_function(start_date="2007-04-20", leaf_name="ges_rente_regelaltersgrenze") -def ges_rente_regelaltersgrenze_mit_staffelung( - geburtsjahr: int, ges_rente_params: dict -) -> float: - """Normal retirement age (NRA). - - NRA differs by birth cohort. - - The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does - not serve as reference for calculating deductions. However, it serves as reference - for calculating gains in the Zugangsfakor in case of later retirement. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - - Returns - ------- - Normal retirement age (NRA). - - """ - if geburtsjahr <= ges_rente_params["regelaltersgrenze"]["max_birthyear_old_regime"]: - out = ges_rente_params["regelaltersgrenze"]["entry_age_old_regime"] - elif ( - geburtsjahr >= ges_rente_params["regelaltersgrenze"]["min_birthyear_new_regime"] - ): - out = ges_rente_params["regelaltersgrenze"]["entry_age_new_regime"] - else: - out = ges_rente_params["regelaltersgrenze"][geburtsjahr] - - return out - - -@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_frauen_altersgrenze") -def ges_rente_frauen_altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Full retirement age (FRA) for women. - - FRA is the same for each birth cohort. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age for women. - - """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] - - -@policy_function(start_date="1989-12-18", leaf_name="_ges_rente_frauen_altersgrenze") -def ges_rente_frauen_altersgrenze_mit_staffelung( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """Full retirement age (FRA) for women. - - FRA differs by birth cohort. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age for women. - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][geburtsjahr][ - geburtsmonat - ] - - return out - - -@policy_function(end_date="2017-12-31") -def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """Full retirement age for unemployed without Vertrauensschutz. - - Full retirement age depends on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation - :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age for unemployed. - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][geburtsjahr][ - geburtsmonat - ] - - return out - - -@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_arbeitsl_altersgrenze") -def _ges_rente_arbeitsl_altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Full retirement age for unemployed. - - Before the WFG (Gesetz für Wachstum und Beschäftigung) was implemented in 1997 the - full retirement age was the same for every birth cohort. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params `. - - Returns - ------- - lowest full retirement age for unemployed. - - """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"] - - -@policy_function( - start_date="1989-12-18", - end_date="1996-07-28", - leaf_name="_ges_rente_arbeitsl_altersgrenze", -) -def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: float, -) -> float: - """Full retirement age for unemployed without Vertrauensschutz. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - See :func:`_ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung`. - - Returns - ------- - Full retirement age for unemployed. - - """ - return _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - - -@policy_function( - start_date="1996-07-29", - end_date="2009-12-31", - leaf_name="_ges_rente_arbeitsl_altersgrenze", -) -def _ges_rente_arbeitsl_altersgrenze_mit_vertrauensschutzprüfung( - geburtsjahr: int, - geburtsmonat: int, - vertra_arbeitsl_1997: bool, - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: float, - ges_rente_params: dict, -) -> float: - """Full retirement age for unemployed with Vertrauensschutz. - - Full retirement age depends on birth year and month. Policy becomes inactive in 2010 - because then all potential beneficiaries have reached the normal retirement age. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - vertra_arbeitsl_1997 - See basic input variable :ref:`vertra_arbeitsl_1997 `. - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - See :func:`_ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age for unemployed. - - """ - if ( - vertra_arbeitsl_1997 - and geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"]["vertrauensschutz"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "vertrauensschutz" - ]["entry_age_old_regime"] - - elif vertra_arbeitsl_1997: - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "vertrauensschutz" - ][geburtsjahr][geburtsmonat] - else: - out = _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - - return out - - -@policy_function( - start_date="2010-01-01", - end_date="2017-12-31", - leaf_name="_ges_rente_arbeitsl_altersgrenze", -) -def _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: float, -) -> float: - """Full retirement age for unemployed without Vertrauensschutz. - - Full retirement age depends on birth year and month. Policy becomes inactive in 2017 - because then all potential beneficiaries have reached the normal retirement age. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - See :func:`_ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung`. - - Returns - ------- - Full retirement age for unemployed. - - """ - return _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung - - -@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_langj_altersgrenze") -def _ges_rente_langj_altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for long term insured. - - FRA is the same for each birth year. - - Calculate the age, at which a long term insured person (at least 35 years) is - eligible to claim the full pension (without deductions). This pension scheme allows - for early retirement (e.g. age 63) with deductions. Hence this threshold is needed - as reference for calculating the zugangsfaktor. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age for long term insured. - - """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"] - - -@policy_function( - start_date="1989-12-18", - end_date="2007-04-19", - leaf_name="_ges_rente_langj_altersgrenze", -) -def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsmonat( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for long term insured. - - FRA depends on birth year and month. - - Calculate the age, at which a long term insured person (at least 35 years) is - eligible to claim the full pension (without deductions). This pension scheme allows - for early retirement (e.g. age 63) with deductions. Hence this threshold is needed - as reference for calculating the zugangsfaktor. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age (without deductions) for long term insured. - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - geburtsjahr - ][geburtsmonat] - - return out - - -@policy_function(start_date="2007-04-20", leaf_name="_ges_rente_langj_altersgrenze") -def _ges_rente_langj_altersgrenze_mit_staffelung_nach_geburtsjahr( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for long term insured. - - FRA depends on birth year. - - Calculate the age, at which a long term insured person (at least 35 years) is - eligible to claim the full pension (without deductions). This pension scheme allows - for early retirement (e.g. age 63) with deductions. Hence this threshold is needed - as reference for calculating the zugangsfaktor. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age (without deductions) for long term insured. - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - geburtsjahr - ][geburtsmonat] - - return out - - -@policy_function( - start_date="2012-01-01", - end_date="2014-06-22", - leaf_name="_ges_rente_besond_langj_altersgrenze", -) -def _ges_rente_besond_langj_altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for very long term insured. - - FRA is the same for each birth year. - - Calculate the threshold from which very long term insured people (at least 45 - years) can claim their full pension without deductions. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age (without deductions) for very long term insured. - - """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_besond_langj_versicherte"] - - -@policy_function( - start_date="2014-06-23", leaf_name="_ges_rente_besond_langj_altersgrenze" -) -def _ges_rente_besond_langj_altersgrenze_mit_staffelung( - geburtsjahr: int, - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for very long term insured. - - FRA depends on birth year and month. - - Calculate the threshold from which very long term insured people (at least 45 - years) can claim their full pension without deductions. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Full retirement age (without deductions) for very long term insured. - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][geburtsjahr] - - return out - - -@policy_function(end_date="2017-12-31", leaf_name="_ges_rente_altersgrenze_vorzeitig") -def _ges_rente_altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( - ges_rente_vorauss_frauen: bool, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_arbeitsl: bool, - ges_rente_regelaltersgrenze: float, - _ges_rente_frauen_altersgrenze_vorzeitig: float, - _ges_rente_arbeitsl_vorzeitig: float, - _ges_rente_langj_vorzeitig: float, -) -> float: - """Earliest possible retirement age after checking for eligibility. - - Early retirement age depends on personal characteristics as gender, insurance - duration, health/disability, employment status. Policy becomes inactive in 2018 - because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente - für Frauen have reached the normal retirement age. - - Parameters - ---------- - ges_rente_vorauss_frauen - See :func:`ges_rente_vorauss_frauen`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_arbeitsl: - See :func:`ges_rente_vorauss_arbeitsl`. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_frauen_altersgrenze_vorzeitig - See :func:`_ges_rente_frauen_altersgrenze_vorzeitig`. - _ges_rente_arbeitsl_vorzeitig - See :func:`_ges_rente_arbeitsl_vorzeitig`. - _ges_rente_langj_vorzeitig - See :func:`_ges_rente_langj_vorzeitig`. - - Returns - ------- - Early retirement age (potentially with deductions). - - """ - frauen_vorzeitig = _ges_rente_frauen_altersgrenze_vorzeitig - - arbeitsl_vorzeitig = _ges_rente_arbeitsl_vorzeitig - - langjährig_vorzeitig = _ges_rente_langj_vorzeitig - - out = ges_rente_regelaltersgrenze - - if ges_rente_vorauss_langj: - out = langjährig_vorzeitig - if ges_rente_vorauss_frauen: - out = min([out, frauen_vorzeitig]) - if ges_rente_vorauss_arbeitsl: - out = min([out, arbeitsl_vorzeitig]) - - return out - - -@policy_function(start_date="2018-01-01", leaf_name="_ges_rente_altersgrenze_vorzeitig") -def _ges_rente_altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( - ges_rente_vorauss_langj: bool, - ges_rente_regelaltersgrenze: float, - _ges_rente_langj_vorzeitig: float, -) -> float: - """Earliest possible retirement age after checking for eligibility. - - Early retirement age depends on personal characteristics as gender, insurance - duration, health/disability, employment status. - - Parameters - ---------- - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_regelaltersgrenze - See :func:`ges_rente_regelaltersgrenze`. - _ges_rente_langj_vorzeitig - See :func:`_ges_rente_langj_vorzeitig`. - - Returns - ------- - Early retirement age (potentially with deductions). - - """ - - out = ges_rente_regelaltersgrenze - - if ges_rente_vorauss_langj: - out = _ges_rente_langj_vorzeitig - else: - out = ges_rente_regelaltersgrenze - - return out - - -@policy_function( - end_date="1989-12-17", leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig" -) -def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] - - -@policy_function( - start_date="1989-12-18", - end_date="1996-09-26", - leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig", -) -def _ges_rente_frauen_altersgrenze_vorzeitig_mit_staffelung( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA depends on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][geburtsjahr][ - geburtsmonat - ] - - return out - - -@policy_function( - start_date="1996-09-27", leaf_name="_ges_rente_frauen_altersgrenze_vorzeitig" -) -def _ges_rente_frauen_altersgrenze_vorzeitig_ohne_staffelung_nach_96( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] - - -@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_langj_vorzeitig") -def _ges_rente_langj_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Rente für langjährig Versicherte. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] - - -@policy_function( - start_date="1989-12-18", - end_date="1996-09-26", - leaf_name="_ges_rente_langj_vorzeitig", -) -def _ges_rente_langj_vorzeitig_mit_staffelung( - geburtsjahr: int, - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA depends on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "entry_age_old_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "entry_age_new_regime" - ] - - return out - - -@policy_function(start_date="1996-09-27", leaf_name="_ges_rente_langj_vorzeitig") -def _ges_rente_langj_vorzeitig_ohne_staffelung_nach_96( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age (ERA) for Rente für langjährig Versicherte. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] - - -@policy_function(end_date="1989-12-17", leaf_name="_ges_rente_arbeitsl_vorzeitig") -def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age of pension for unemployed. - - Early retirement age does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age for unemployed. - - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] - - -@policy_function(end_date="2017-12-31") -def _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """Early retirement age of pension for unemployed without Vertrauensschutz. - - Relevant if the early retirement age depends on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - geburtsmonat - See basic input variable :ref:`geburtsmonat `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age for unemployed. - """ - - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "min_birthyear_new_regime" - ] - ): - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "entry_age_new_regime" - ] - else: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - geburtsjahr - ][geburtsmonat] - - return arbeitsl_vorzeitig - - -@policy_function( - start_date="1989-12-18", - end_date="1996-07-28", - leaf_name="_ges_rente_arbeitsl_vorzeitig", -) -def ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss_vor_1996( - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: float, -) -> float: - """Early retirement age of pension for unemployed. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - See :func:`_ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss`. - - Returns - ------- - Early retirement age for unemployed. - """ - - return _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - - -@policy_function( - start_date="1996-07-29", - end_date="1996-09-26", - leaf_name="_ges_rente_arbeitsl_vorzeitig", -) -def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_1996( - vertra_arbeitsl_1997: bool, - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: float, - ges_rente_params: dict, -) -> float: - """Early retirement age of pension for unemployed. - - Includes Vertrauensschutz rules implemented from July to September 1996. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - - vertra_arbeitsl_2006 - See basic input variable :ref:`vertra_arbeitsl_2006 `. - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - See :func:`_ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age for unemployed. - """ - - if vertra_arbeitsl_1997: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "vertrauensschutz" - ] - else: - arbeitsl_vorzeitig = _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - - return arbeitsl_vorzeitig - - -@policy_function( - start_date="1996-09-27", - end_date="2004-07-25", - leaf_name="_ges_rente_arbeitsl_vorzeitig", -) -def _ges_rente_arbeitsl_vorzeitig_ohne_staffelung_nach_1997( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: - """Early retirement age of pension for unemployed. - - Early retirement age does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age for unemployed. - - """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] - - -@policy_function( - start_date="2004-07-26", - end_date="2017-12-31", - leaf_name="_ges_rente_arbeitsl_vorzeitig", -) -def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2006( - vertra_arbeitsl_2006: bool, - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: float, - ges_rente_params: dict, -) -> float: - """Early retirement age of pension for unemployed. - - Includes Vertrauensschutz rules implemented in 2006. Policy becomes inactive in 2018 - because then all potential beneficiaries have reached the normal retirement age. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - vertra_arbeitsl_2006 - See basic input variable :ref:`vertra_arbeitsl_2006 - `. - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - See :func:`_ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss`. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Early retirement age for unemployed. - """ - - if vertra_arbeitsl_2006: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "vertrauensschutz" - ] - else: - arbeitsl_vorzeitig = _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss - - return arbeitsl_vorzeitig - - -@policy_function(end_date="2017-12-31", leaf_name="ges_rente_vorauss_vorzeitig") -def ges_rente_vorauss_vorzeitig_mit_rente_arbeitsl_frauen( - ges_rente_vorauss_frauen: bool, - ges_rente_vorauss_langj: bool, - ges_rente_vorauss_arbeitsl: bool, -) -> bool: - """Eligibility for early retirement. - - Can only be claimed if eligible for "Rente für langjährig Versicherte" or "Rente für - Frauen" or "Rente für Arbeitslose" (or -not yet implemented - for disabled). Policy - becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. - Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - ges_rente_vorauss_frauen - See :func:`ges_rente_vorauss_frauen`. - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - ges_rente_vorauss_arbeitsl - See :func:`ges_rente_vorauss_arbeitsl`. - - - Returns - ------- - Eligibility as bool. - - """ - - out = ( - ges_rente_vorauss_frauen - or ges_rente_vorauss_langj - or ges_rente_vorauss_arbeitsl - ) - - return out - - -@policy_function(start_date="2018-01-01", leaf_name="ges_rente_vorauss_vorzeitig") -def ges_rente_vorauss_vorzeitig_ohne_rente_arbeitsl_frauen( - ges_rente_vorauss_langj: bool, -) -> bool: - """Eligibility for early retirement. - - Can only be claimed if eligible for "Rente für langjährig Versicherte". - - Parameters - ---------- - ges_rente_vorauss_langj - See :func:`ges_rente_vorauss_langj`. - - Returns - ------- - Eligibility as bool. - - """ - - return ges_rente_vorauss_langj - - -def ges_rente_vorauss_regelrente(ges_rente_wartezeit_5: bool) -> bool: - """Determining the eligibility for the Regelaltersrente. - - Parameters - ---------- - ges_rente_wartezeit_5 - See :func:`ges_rente_wartezeit_5`. - - Returns - ------- - Eligibility as bool. - - """ - - return ges_rente_wartezeit_5 - - -@policy_function(end_date="1997-12-15", leaf_name="ges_rente_vorauss_frauen") -def ges_rente_vorauss_frauen_ohne_prüfung_geburtsjahr( - weiblich: bool, - ges_rente_wartezeit_15: bool, - y_pflichtbeitr_ab_40: float, - ges_rente_params: dict, -) -> bool: - """Eligibility for Altersrente für Frauen (pension for women). - - Eligibility does not depend on birth year. - - Wartezeit 15 years, contributions for 10 years after age 40, being a woman. Policy - becomes inactive in 2018 because then all potential beneficiaries have reached the - normal retirement age. - - Parameters - ---------- - weiblich - See basic input variable :ref:`weiblich `. - ges_rente_wartezeit_15 - See :func:`ges_rente_wartezeit_15` - y_pflichtbeitr_ab_40 - See basic input variable :ref:`y_pflichtbeitr_ab_40 `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Eligibility as bool. - - """ - - out = ( - weiblich - and ges_rente_wartezeit_15 - and y_pflichtbeitr_ab_40 > ges_rente_params["rente_für_frauen_pflichtbeitr_y"] - ) - - return out - - -@policy_function( - start_date="1997-12-16", - end_date="2017-12-31", - leaf_name="ges_rente_vorauss_frauen", -) -def ges_rente_vorauss_frauen_mit_geburtsjahr_prüfung( - weiblich: bool, - ges_rente_wartezeit_15: bool, - y_pflichtbeitr_ab_40: float, - geburtsjahr: int, - ges_rente_params: dict, -) -> bool: - """Eligibility for Altersrente für Frauen (pension for women). - - Only individuals born before a certain year are eligible. - - Wartezeit 15 years, contributions for 10 years after age 40, being a woman. Policy - becomes inactive in 2018 because then all potential beneficiaries have reached the - normal retirement age. - - Parameters - ---------- - weiblich - See basic input variable :ref:`weiblich `. - ges_rente_wartezeit_15 - See :func:`ges_rente_wartezeit_15` - y_pflichtbeitr_ab_40 - See basic input variable :ref:`y_pflichtbeitr_ab_40 `. - geburtsjahr - See basic input variable :ref:`geburtsjahr `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Eligibility as bool. - - """ - - out = ( - weiblich - and ges_rente_wartezeit_15 - and y_pflichtbeitr_ab_40 > ges_rente_params["rente_für_frauen_pflichtbeitr_y"] - and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_frauen"] - ) - - return out - - -@policy_function(end_date="2007-04-29", leaf_name="ges_rente_vorauss_arbeitsl") -def _ges_rente_vorauss_arbeitsl_ohne_2007_reform( - arbeitsl_1y_past_585: bool, - ges_rente_wartezeit_15: bool, - pflichtbeitr_8_in_10: bool, -) -> bool: - """Eligibility for Altersrente für Arbeitslose (pension for unemployed). - - Wartezeit 15 years, 8 contribution years past 10 years, being unemployed for at - least 1 year after age 58 and 6 months. The person is also required to be - unemployed at the time of claiming the pension. As there are no restrictions - regarding voluntary unemployment this requirement may be viewed as always satisfied - and is therefore not included when checking for eligibility. - - Parameters - ---------- - arbeitsl_1y_past_585 - See basic input variable - :ref:`arbeitsl_1y_past_585 `. - ges_rente_wartezeit_15 - See :func:`ges_rente_wartezeit_15` - pflichtbeitr_8_in_10 - See basic input variable :ref:`pflichtbeitr_8_in_10 `. - - Returns - ------- - Eligibility as bool. - - """ - - out = arbeitsl_1y_past_585 and ges_rente_wartezeit_15 and pflichtbeitr_8_in_10 - - return out - - -@policy_function( - start_date="2007-04-30", - end_date="2017-12-31", - leaf_name="ges_rente_vorauss_arbeitsl", -) -def _ges_rente_vorauss_arbeitsl_mit_2007_reform( - arbeitsl_1y_past_585: bool, - ges_rente_wartezeit_15: bool, - pflichtbeitr_8_in_10: bool, - geburtsjahr: int, - ges_rente_params: dict, -) -> bool: - """Eligibility for Altersrente für Arbeitslose (pension for unemployed). - - Wartezeit 15 years, 8 contributionyears past 10 years, being at least 1 year - unemployed after age 58 and 6 months and being born before 1952. The person is also - required to be unemployed at the time of claiming the pension. As there are no - restrictions regarding voluntary unemployment this requirement may be viewed as - always satisfied and is therefore not included when checking for eligibility. Policy - becomes inactive in 2018 because then all potential beneficiaries have reached the - normal retirement age. - - Parameters - ---------- - arbeitsl_1y_past_585 - See basic input variable :ref:`arbeitsl_1y_past_585 `. - ges_rente_wartezeit_15 - See :func:`ges_rente_wartezeit_15` - pflichtbeitr_8_in_10 - See basic input variable :ref:`pflichtbeitr_8_in_10 `. - geburtsjahr - See :func:`geburtsjahr` - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Eligibility as bool. - - """ - - out = ( - arbeitsl_1y_past_585 - and ges_rente_wartezeit_15 - and pflichtbeitr_8_in_10 - and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_arbeitsl"] - ) - - return out - - -def ges_rente_vorauss_langj( - ges_rente_wartezeit_35: bool, -) -> bool: - """Determining the eligibility for Altersrente für langjährig - Versicherte (pension for long-term insured). Wartezeit 35 years and - crossing the age threshold. - - Parameters - ---------- - ges_rente_wartezeit_35 - See :func:`ges_rente_wartezeit_35`. - - Returns - ------- - Eligibility as bool. - - """ - - return ges_rente_wartezeit_35 - - -@policy_function(start_date="2012-01-01") -def ges_rente_vorauss_besond_langj( - ges_rente_wartezeit_45: bool, -) -> bool: - """Determining the eligibility for Altersrente für besonders langjährig Versicherte - (pension for very long-term insured). Wartezeit 45 years. aka "Rente mit 63". - - Parameters - ---------- - ges_rente_wartezeit_45 - See :func:`ges_rente_wartezeit_45` - - - Returns - ------- - Eligibility as bool. - - """ - - return ges_rente_wartezeit_45 - - -def ges_rente_wartezeit_5( - m_pflichtbeitrag: float, - m_freiw_beitrag: float, - m_ersatzzeit: float, - ges_rente_params: dict, -) -> bool: - """Whether Allgemeine Wartezeit has been completed. Aggregates time - periods that are relevant for the general eligibility of the - regular pension (regelaltersrente). "Allgemeine Wartezeit". - - Parameters - ---------- - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag `. - m_freiw_beitrag - See basic input variable :ref:`m_freiw_beitrag `. - m_ersatzzeit - See basic input variable :ref:`m_ersatzzeit `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Fulfilled Wartezeit von 5 Jahren. - - """ - m_zeiten = (m_pflichtbeitrag + m_freiw_beitrag + m_ersatzzeit) / 12 - - out = m_zeiten >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_5"] - - return out - - -def ges_rente_wartezeit_15( - m_pflichtbeitrag: float, - m_freiw_beitrag: float, - m_ersatzzeit: float, - ges_rente_params: dict, -) -> bool: - """Whether Wartezeit von 15 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the Altersrente für Frauen - and Leistungen zur Teilhabe. Wartezeit von 15 Jahren. - - Parameters - ---------- - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag `. - m_freiw_beitrag - See basic input variable :ref:`m_freiw_beitrag `. - m_ersatzzeit - See basic input variable :ref:`m_ersatzzeit `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Fulfilled Wartezeit von 15 Jahren - - """ - m_zeiten = (m_pflichtbeitrag + m_freiw_beitrag + m_ersatzzeit) / 12 - - out = m_zeiten >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_15"] - - return out - - -def ges_rente_wartezeit_35( # noqa: PLR0913 - m_pflichtbeitrag: float, - m_freiw_beitrag: float, - ges_rente_anrechnungszeit: float, - m_ersatzzeit: float, - m_kind_berücks_zeit: float, - m_pfleg_berücks_zeit: float, - ges_rente_params: dict, -) -> bool: - """Whether Wartezeit von 35 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the eligibility of Altersrente für - langjährig Versicherte (pension for long-term insured). Wartezeit von 35 Jahren. All - "rentenrechtliche Zeiten" are considered. - - Parameters - ---------- - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag `. - m_freiw_beitrag - See basic input variable :ref:`m_freiw_beitrag `. - m_ersatzzeit - See basic input variable :ref:`m_ersatzzeit `. - ges_rente_anrechnungszeit - See :func:`ges_rente_anrechnungszeit` - m_kind_berücks_zeit - See basic input variable :ref:`m_kind_berücks_zeit `. - m_pfleg_berücks_zeit - See basic input variable :ref:`m_pfleg_berücks_zeit ` - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Fulfilled Wartezeit von 35 Jahren - - """ - m_zeiten = ( - m_pflichtbeitrag - + m_freiw_beitrag - + ges_rente_anrechnungszeit - + m_ersatzzeit - + m_pfleg_berücks_zeit - + m_kind_berücks_zeit - ) / 12 - out = m_zeiten >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_35"] - - return out - - -@policy_function(start_date="2012-01-01") -def ges_rente_wartezeit_45( # noqa: PLR0913 - m_pflichtbeitrag: float, - m_freiw_beitrag: float, - ges_rente_anrechnungszeit_45: float, - m_ersatzzeit: float, - m_kind_berücks_zeit: float, - m_pfleg_berücks_zeit: float, - ges_rente_params: dict, -) -> bool: - """Whether Wartezeit von 45 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the eligibility of Altersrente für - besonders langjährig Versicherte (pension for very long-term insured). Wartezeit von - 45 Jahren. Not all "rentenrechtliche Zeiten" are considered. Years with voluntary - contributions are only considered if at least 18 years of mandatory contributions - (m_pflichtbeitrag). Not all ges_rente_anrechnungszeiten are considered, but only - specific ones (e.g. ALG I, Kurzarbeit but not ALG II). - - Parameters - ---------- - m_pflichtbeitrag - See basic input variable :ref:`m_pflichtbeitrag `. - m_freiw_beitrag - See basic input variable :ref:`m_freiw_beitrag `. - ges_rente_anrechnungszeit_45 - See :func:`ges_rente_anrechnungszeit_45`. - m_ersatzzeit - See basic input variable :ref:`m_ersatzzeit `. - m_kind_berücks_zeit - See basic input variable :ref:`m_kind_berücks_zeit `. - m_pfleg_berücks_zeit - See basic input variable :ref:`m_pfleg_berücks_zeit `. - ges_rente_params - See params documentation :ref:`ges_rente_params `. - - Returns - ------- - Fulfilled Wartezeit von 45 Jahren - - """ - if m_pflichtbeitrag >= ges_rente_params["wartezeit_45_pflichtbeitragsmonate"]: - freiwilligbeitr = m_freiw_beitrag - else: - freiwilligbeitr = 0 - - m_zeiten = ( - m_pflichtbeitrag - + freiwilligbeitr - + ges_rente_anrechnungszeit_45 - + m_ersatzzeit - + m_pfleg_berücks_zeit - + m_kind_berücks_zeit - ) / 12 - out = m_zeiten >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_45"] - - return out - - -def ges_rente_anrechnungszeit( # noqa: PLR0913 - m_arbeitsunfähig: float, - m_krank_ab_16_bis_24: float, - m_mutterschutz: float, - m_arbeitsl: float, - m_ausbild_suche: float, - m_schul_ausbild: float, -) -> float: - """Adds up all times that are accounted for in "Anrechnungszeiten" - relevant for "Wartezeit von 35 Jahren" i.e. for Altersrente für - langjährig Versicherte (pension for long term insured). - (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, - Wartezeiten, Ausgabe 2021, S. 24.) - - - Parameters - ---------- - m_arbeitsunfähig - See basic input variable :ref:`m_arbeitsunfähig `. - m_krank_ab_16_bis_24 - See basic input variable :ref:`m_krank_ab_16_bis_24 `. - m_mutterschutz - See basic input variable :ref:`m_mutterschutz `. - m_arbeitsl - See basic input variable :ref:`m_arbeitsl `. - m_ausbild_suche - See basic input variable :ref:`m_ausbild_suche `. - m_schul_ausbild - See basic input variable :ref:`m_schul_ausbild `. - - Returns - ------- - Anrechnungszeit in months - """ - out = ( - m_arbeitsunfähig - + m_krank_ab_16_bis_24 - + m_mutterschutz - + m_arbeitsl - + m_ausbild_suche - + m_schul_ausbild - ) - return out - - -@policy_function(start_date="2012-01-01") -def ges_rente_anrechnungszeit_45( - m_arbeitsunfähig: float, - m_alg1_übergang: float, - m_geringf_beschäft: float, -) -> float: - """Adds up all times NOT included in Beitragszeiten, Berücksichtigungszeiten, - Ersatzzeiten (a variant of Anrechnungszeiten) that are accounted for in "Wartezeit - von 45 Jahren" i.e. for Altersrente für besonders langjährig Versicherte (pension - for very long term insured). "nur Anrechnungszeiten mit Bezug von - Entgeltersatzleistungen der Arbeitsförderung, Leistungen bei Krankheit und - Übergangsgeld". (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, - Wartezeiten, Ausgabe 2021, S. 24) - - Parameters - ---------- - m_arbeitsunfähig - See basic input variable :ref:`m_arbeitsunfähig `. - m_alg1_übergang - See basic input variable :ref:`m_alg1_übergang `. - m_geringf_beschäft - See basic input variable :ref:`m_geringf_beschäft `. - Returns - ------- - Anrechnungszeit in months. - - """ - out = m_arbeitsunfähig + m_alg1_übergang + m_geringf_beschäft - - return out - - -def anteil_entgeltp_ost( - entgeltp_west: float, - entgeltp_ost: float, -) -> float: - """Proportion of Entgeltpunkte accumulated in East Germany - - Parameters - ---------- - entgeltp_west - See basic input variable :ref:`entgeltp_west - entgeltp_ost - See basic input variable :ref:`entgeltp_ost - - Returns - ------- - Proportion of Entgeltpunkte accumulated in East Germany - - """ - if entgeltp_west == entgeltp_ost == 0.0: - out = 0.0 - else: - out = entgeltp_ost / (entgeltp_west + entgeltp_ost) - - return out - - -def durchschn_entgeltp( - entgeltp_west: float, - entgeltp_ost: float, - age_of_retirement: float, - erwerbsm_rente_params: dict, -) -> float: - """Average earning points as part of the "Grundbewertung". - Earnings points are divided by "belegungsfähige Gesamtzeitraum" which is - the period from the age of 17 until the start of the pension. - - Legal reference: SGB VI § 72: Grundbewertung - - Parameters - ---------- - entgeltp_west - See basic input variable :ref:`entgeltp_west - entgeltp_ost - See basic input variable :ref:`entgeltp_ost - age_of_retirement - See :func:`age_of_retirement`. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params . - - Returns - ------- - average entgeltp - """ - - beleg_gesamtzeitr = ( - age_of_retirement - erwerbsm_rente_params["altersgrenze_grundbewertung"] - ) - - durchschn_entgeltp = (entgeltp_west + entgeltp_ost) / beleg_gesamtzeitr - - return durchschn_entgeltp diff --git a/src/_gettsim/transfers/unterhalt.py b/src/_gettsim/transfers/unterhalt.py deleted file mode 100644 index d028b34139..0000000000 --- a/src/_gettsim/transfers/unterhalt.py +++ /dev/null @@ -1,31 +0,0 @@ -"""This module provides functions to compute alimony payments (Unterhalt).""" - - -def kind_unterh_zahlbetr_m( - kind_unterh_anspr_m: float, - kindergeld_m: float, - unterhalt_params: dict, - kind: bool, -) -> float: - """Monthly actual child alimony payments to be received after deductions. - - Parameters - ---------- - kind_unterh_anspr_m - See basic input variable :ref:`kind_unterh_anspr_m `. - kindergeld_m - See :func:`kindergeld_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params `. - kind - See basic input variable :ref:`kind `. - - Returns - ------- - """ - if kind: - abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["kind"] - else: - abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["erwachsener"] - - return kind_unterh_anspr_m - abzugsrate * kindergeld_m diff --git a/src/_gettsim/transfers/unterhalt/__init__.py b/src/_gettsim/transfers/unterhalt/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/unterhalt/unterhalt.py b/src/_gettsim/transfers/unterhalt/unterhalt.py new file mode 100644 index 0000000000..4e2fe9eb80 --- /dev/null +++ b/src/_gettsim/transfers/unterhalt/unterhalt.py @@ -0,0 +1,35 @@ +"""Alimony payments (Unterhalt).""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def kind_festgelegter_zahlbetrag_m( + anspruch_m: float, + kindergeld__betrag_m: float, + unterhalt_params: dict, + familie__kind: bool, +) -> float: + """Monthly actual child alimony payments to be received by the child after + deductions. + + Parameters + ---------- + anspruch_m + See basic input variable :ref:`anspruch_m `. + kindergeld__betrag_m + See :func:`kindergeld__betrag_m`. + unterhalt_params + See params documentation :ref:`unterhalt_params `. + familie__kind + See basic input variable :ref:`familie__kind `. + + Returns + ------- + """ + if familie__kind: + abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["kind"] + else: + abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["erwachsener"] + + return anspruch_m - abzugsrate * kindergeld__betrag_m diff --git a/src/_gettsim/transfers/unterhaltsvors.py b/src/_gettsim/transfers/unterhaltsvors.py deleted file mode 100644 index 3eacbc7f3d..0000000000 --- a/src/_gettsim/transfers/unterhaltsvors.py +++ /dev/null @@ -1,425 +0,0 @@ -"""This module provides functions to compute advance alimony payments -(Unterhaltsvorschuss).""" - -import numpy - -from _gettsim.functions.policy_function import policy_function -from _gettsim.shared import join_numpy - -aggregate_by_p_id_unterhaltsvors = { - "unterhaltsvors_zahlbetrag_eltern_m": { - "p_id_to_aggregate_by": "p_id_kindergeld_empf", - "source_col": "unterhaltsvors_m", - "aggr": "sum", - }, -} - - -@policy_function(start_date="2009-01-01", params_key_for_rounding="unterhaltsvors") -def unterhaltsvors_m( - kind_unterh_erhalt_m: float, - _unterhaltsvors_anspruch_kind_m: float, - parent_alleinerz: bool, -) -> float: - """Advance alimony payments (Unterhaltsvorschuss) on child level after deducting - alimonies. - - Single Parents get alimony payments for themselves and for their child from the ex - partner. If the ex partner is not able to pay the child alimony, the government pays - the child alimony to the mother (or the father, if he has the kids). - - According to §1 Abs.1 Nr.3 UhVorschG those single parents are entitled to - advance alimony payments, who do not or not regularly receive child alimony - payments or orphans' benefits (Waisenbezüge) in at least the amount specified in - §2 Abs.1 and 2 UhVorschG. The child alimonay payment paid by the other parent - is credited against the amount of the advance alimony payments - (§2 Abs.3 Nr.1 UhVorschG). - - The amount is specified in §1612a BGB and, ultimately, in - Mindestunterhaltsverordnung. - - Parameters - ---------- - kind_unterh_erhalt_m - See basic input variable `kind_unterh_erhalt_m`. - _unterhaltsvors_anspruch_kind_m - See :func:`_unterhaltsvors_anspruch_kind_m`. - parent_alleinerz - See :func:`parent_alleinerz`. - - Returns - ------- - - """ - if parent_alleinerz: - out = max(_unterhaltsvors_anspruch_kind_m - kind_unterh_erhalt_m, 0.0) - else: - out = 0.0 - - return out - - -@policy_function( - end_date="2008-12-31", - leaf_name="unterhaltsvors_m", - params_key_for_rounding="unterhaltsvors", -) -def unterhaltsvors_not_implemented_m() -> float: - raise NotImplementedError( - """ - Unterhaltsvorschuss is not implemented prior to 2009. - """ - ) - - -@policy_function(skip_vectorization=True) -def parent_alleinerz( - p_id_kindergeld_empf: numpy.ndarray[int], - p_id: numpy.ndarray[int], - alleinerz: numpy.ndarray[bool], -) -> numpy.ndarray[bool]: - """Check if parent that receives Unterhaltsvorschuss is a single parent. - - Only single parents receive Unterhaltsvorschuss. - - Parameters - ---------- - p_id_kindergeld_empf - See basic input variable :ref:`p_id_kindergeld_empf`. - p_id - See basic input variable :ref:`p_id`. - alleinerz - See basic input variable :ref:`alleinerz`. - - Returns - ------- - - """ - return join_numpy( - p_id_kindergeld_empf, p_id, alleinerz, value_if_foreign_key_is_missing=False - ) - - -@policy_function(start_date="2023-01-01", leaf_name="_kindergeld_erstes_kind_m") -def _kindergeld_erstes_kind_ohne_staffelung_m( - kindergeld_params: dict, - alter: int, # noqa: ARG001 -) -> float: - """Kindergeld for first child when Kindergeld does not depend on number of children. - - Parameters - ---------- - - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - - """ - # TODO(@MImmesberger): Remove fake dependency (alter). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return kindergeld_params["kindergeld"] - - -@policy_function(end_date="2022-12-31", leaf_name="_kindergeld_erstes_kind_m") -def _kindergeld_erstes_kind_gestaffelt_m( - kindergeld_params: dict, - alter: int, # noqa: ARG001 -) -> float: - """Kindergeld for first child when Kindergeld does depend on number of children. - - Parameters - ---------- - - kindergeld_params - See params documentation :ref:`kindergeld_params `. - - Returns - ------- - - """ - # TODO(@MImmesberger): Remove fake dependency (alter). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return kindergeld_params["kindergeld"][1] - - -@policy_function( - start_date="2009-01-01", - end_date="2014-12-31", - leaf_name="_unterhaltsvors_anspruch_kind_m", -) -def _unterhaltsvors_anspruch_kind_m_2009_bis_2014( - alter: int, - _kindergeld_erstes_kind_m: float, - unterhaltsvors_params: dict, - eink_st_abzuege_params: dict, -) -> float: - """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. - - Relevant parameter is directly 'steuerfrei zu stellenden sächlichen Existenzminimum - des minderjährigen Kindes' § 1612a (1). Modeling relative to the child allowance for - this. The amout for the lower age group is defined relative to the middle age group - with a factor of 0.87. - - Rule was in priciple also active for 2015 but has been overwritten by an - Anwendungsvorschrift as Kinderfreibetrag and Kindergeld changed on July 2015. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - _kindergeld_erstes_kind_m - See :func:`_kindergeld_erstes_kind_m`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params `. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params `. - - Returns - ------- - - """ - # TODO(@MImmesberger): Remove explicit parameter conversion. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/575 - altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] - - kinderfreib_sächl_existenzmin = eink_st_abzuege_params["kinderfreib"][ - "sächl_existenzmin" - ] - - if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: - out = ( - unterhaltsvors_params["faktor_jüngste_altersgruppe"] - * (2 * kinderfreib_sächl_existenzmin / 12) - - _kindergeld_erstes_kind_m - ) - elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: - out = 2 * kinderfreib_sächl_existenzmin / 12 - _kindergeld_erstes_kind_m - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2015-01-01", - end_date="2015-12-31", - leaf_name="_unterhaltsvors_anspruch_kind_m", -) -def _unterhaltsvors_anspruch_kind_m_anwendungsvors( - alter: int, - unterhaltsvors_params: dict, -) -> float: - """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. - - Rule _unterhaltsvors_anspruch_kind_m_2009_bis_2014 was in priciple also active for - 2015 but has been overwritten by an Anwendungsvorschrift as Kinderfreibetrag and - Kindergeld changed in July 2015. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params `. - - Returns - ------- - - """ - altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] - - unterhaltsvors = unterhaltsvors_params["unterhaltsvors_anwendungsvors"] - - if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: - out = unterhaltsvors[1] - elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: - out = unterhaltsvors[2] - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2016-01-01", - end_date="2017-06-30", - leaf_name="_unterhaltsvors_anspruch_kind_m", -) -def _unterhaltsvors_anspruch_kind_m_2016_bis_201706( - alter: int, - _kindergeld_erstes_kind_m: float, - unterhalt_params: dict, -) -> float: - """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. - - § 2 Unterhaltsvorschussgesetz refers to Section § 1612a BGB. There still is the - reference to 'steuerfrei zu stellenden sächlichen Existenzminimum des minderjährigen - Kindes' (§ 1612a (1)) as well as a Verordnungsermächtigung (§ 1612a (4)). The § 1 - Mindesunterhaltsverordnung applies fixed amounts and no relative definition as - before. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - _kindergeld_erstes_kind_m - See :func:`_kindergeld_erstes_kind_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params `. - - Returns - ------- - - """ - mindestunterhalt = unterhalt_params["mindestunterhalt"] - - if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: - out = mindestunterhalt[1]["betrag"] - _kindergeld_erstes_kind_m - elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: - out = mindestunterhalt[2]["betrag"] - _kindergeld_erstes_kind_m - else: - out = 0.0 - - return out - - -@policy_function(start_date="2017-07-01", leaf_name="_unterhaltsvors_anspruch_kind_m") -def _unterhaltsvors_anspruch_kind_m_ab_201707( - alter: int, - _unterhaltsvorschuss_empf_eink_above_income_threshold: bool, - _kindergeld_erstes_kind_m: float, - unterhalt_params: dict, -) -> float: - """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. - - Introduction of a minimum income threshold if child is older than some threshold and - third age group (12-17) via Artikel 23 G. v. 14.08.2017 BGBl. I S. 3122. - - Parameters - ---------- - alter - See basic input variable :ref:`alter `. - _unterhaltsvorschuss_empf_eink_above_income_threshold - See :func:`_unterhaltsvorschuss_empf_eink_above_income_threshold`. - _kindergeld_erstes_kind_m - See :func:`_kindergeld_erstes_kind_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params `. - - Returns - ------- - - """ - mindestunterhalt = unterhalt_params["mindestunterhalt"] - - if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: - out = mindestunterhalt[1]["betrag"] - _kindergeld_erstes_kind_m - elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: - out = mindestunterhalt[2]["betrag"] - _kindergeld_erstes_kind_m - elif ( - mindestunterhalt[3]["min_alter"] <= alter <= mindestunterhalt[3]["max_alter"] - and _unterhaltsvorschuss_empf_eink_above_income_threshold - ): - out = mindestunterhalt[3]["betrag"] - _kindergeld_erstes_kind_m - else: - out = 0.0 - - return out - - -@policy_function(start_date="2017-01-01", skip_vectorization=True) -def _unterhaltsvorschuss_empf_eink_above_income_threshold( - p_id_kindergeld_empf: numpy.ndarray[int], - p_id: numpy.ndarray[int], - _unterhaltsvorschuss_eink_above_income_threshold: numpy.ndarray[bool], -) -> numpy.ndarray[bool]: - """Income of Unterhaltsvorschuss recipient above threshold (this variable is - defined on child level). - - Parameters - ---------- - p_id_kindergeld_empf - See basic input variable :ref:`p_id_kindergeld_empf`. - p_id - See basic input variable :ref:`p_id`. - _unterhaltsvorschuss_eink_above_income_threshold - See :func:`_unterhaltsvorschuss_eink_above_income_threshold`. - - Returns - ------- - """ - return join_numpy( - p_id_kindergeld_empf, - p_id, - _unterhaltsvorschuss_eink_above_income_threshold, - value_if_foreign_key_is_missing=False, - ) - - -@policy_function(start_date="2017-01-01") -def _unterhaltsvorschuss_eink_above_income_threshold( - unterhaltsvorschuss_eink_m: float, - unterhaltsvors_params: dict, -) -> bool: - """Check if income is above the threshold for advance alimony payments. - - Parameters - ---------- - unterhaltsvorschuss_eink_m - See :func:`unterhaltsvorschuss_eink_m`. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params `. - - Returns - ------- - - """ - return unterhaltsvorschuss_eink_m >= unterhaltsvors_params["mindesteinkommen"] - - -@policy_function(start_date="2017-01-01") -def unterhaltsvorschuss_eink_m( # noqa: PLR0913 - bruttolohn_m: float, - sonstig_eink_m: float, - eink_selbst_m: float, - eink_vermietung_m: float, - kapitaleink_brutto_m: float, - sum_ges_rente_priv_rente_m: float, - arbeitsl_geld_m: float, -) -> float: - """Calculate relevant income for advance on alimony payment. - - Parameters - ---------- - bruttolohn_m - See :func:`bruttolohn_m`. - sonstig_eink_m - See :func:`sonstig_eink_m`. - eink_selbst_m - See :func:`eink_selbst_m`. - eink_vermietung_m - See :func:`eink_vermietung_m`. - kapitaleink_brutto_m - See :func:`kapitaleink_brutto_m`. - sum_ges_rente_priv_rente_m - See :func:`sum_ges_rente_priv_rente_m`. - arbeitsl_geld_m - See :func:`arbeitsl_geld_m`. - - Returns - ------- - - """ - out = ( - bruttolohn_m - + sonstig_eink_m - + eink_selbst_m - + eink_vermietung_m - + kapitaleink_brutto_m - + sum_ges_rente_priv_rente_m - + arbeitsl_geld_m - ) - - return out diff --git a/src/_gettsim/transfers/unterhaltsvorschuss/__init__.py b/src/_gettsim/transfers/unterhaltsvorschuss/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py new file mode 100644 index 0000000000..a7d2990757 --- /dev/null +++ b/src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -0,0 +1,432 @@ +"""Advance alimony payments (Unterhaltsvorschuss).""" + +import numpy + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.function_types import policy_function +from _gettsim.shared import join_numpy + +aggregation_specs = { + "an_elternteil_auszuzahlender_betrag_m": AggregateByPIDSpec( + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + source="betrag_m", + aggr="sum", + ), +} + + +@policy_function(start_date="2009-01-01", params_key_for_rounding="unterhaltsvors") +def betrag_m( + unterhalt__tatsächlich_erhaltener_betrag_m: float, + anspruchshöhe_m: float, + elternteil_alleinerziehend: bool, +) -> float: + """Advance alimony payments (Unterhaltsvorschuss) on child level after deducting + alimonies. + + Single Parents get alimony payments for themselves and for their child from the ex + partner. If the ex partner is not able to pay the child alimony, the government pays + the child alimony to the mother (or the father, if he has the kids). + + According to §1 Abs.1 Nr.3 UhVorschG those single parents are entitled to + advance alimony payments, who do not or not regularly receive child alimony + payments or orphans' benefits (Waisenbezüge) in at least the amount specified in + §2 Abs.1 and 2 UhVorschG. The child alimonay payment paid by the other parent + is credited against the amount of the advance alimony payments + (§2 Abs.3 Nr.1 UhVorschG). + + The amount is specified in §1612a BGB and, ultimately, in + Mindestunterhaltsverordnung. + + Parameters + ---------- + unterhalt__tatsächlich_erhaltener_betrag_m + See basic input variable `unterhalt__tatsächlich_erhaltener_betrag_m`. + anspruchshöhe_m + See :func:`anspruchshöhe_m`. + elternteil_alleinerziehend + See :func:`elternteil_alleinerziehend`. + + Returns + ------- + + """ + if elternteil_alleinerziehend: + out = max(anspruchshöhe_m - unterhalt__tatsächlich_erhaltener_betrag_m, 0.0) + else: + out = 0.0 + + return out + + +@policy_function(skip_vectorization=True) +def elternteil_alleinerziehend( + kindergeld__p_id_empfänger: numpy.ndarray[int], + p_id: numpy.ndarray[int], + familie__alleinerziehend: numpy.ndarray[bool], +) -> numpy.ndarray[bool]: + """Check if parent that receives Kindergeld is a single parent. + + Only single parents receive Kindergeld. + + Parameters + ---------- + kindergeld__p_id_empfänger + See basic input variable :ref:`kindergeld__p_id_empfänger`. + p_id + See basic input variable :ref:`p_id`. + familie__alleinerziehend + See basic input variable :ref:`familie__alleinerziehend`. + + Returns + ------- + + """ + return join_numpy( + foreign_key=kindergeld__p_id_empfänger, + primary_key=p_id, + target=familie__alleinerziehend, + value_if_foreign_key_is_missing=False, + ) + + +@policy_function( + end_date="2008-12-31", + leaf_name="betrag_m", + params_key_for_rounding="unterhaltsvors", +) +def not_implemented_m() -> float: + raise NotImplementedError( + """ + Unterhaltsvorschuss is not implemented prior to 2009. + """ + ) + + +@policy_function(start_date="2023-01-01", leaf_name="kindergeld_erstes_kind_m") +def kindergeld_erstes_kind_ohne_staffelung_m( + kindergeld_params: dict, + alter: int, # noqa: ARG001 +) -> float: + """Kindergeld for first child when Kindergeld does not depend on number of children. + + Parameters + ---------- + + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + + """ + # TODO(@MImmesberger): Remove fake dependency (alter). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + return kindergeld_params["kindergeld"] + + +@policy_function(end_date="2022-12-31", leaf_name="kindergeld_erstes_kind_m") +def kindergeld_erstes_kind_gestaffelt_m( + kindergeld_params: dict, + alter: int, # noqa: ARG001 +) -> float: + """Kindergeld for first child when Kindergeld does depend on number of children. + + Parameters + ---------- + + kindergeld_params + See params documentation :ref:`kindergeld_params `. + + Returns + ------- + + """ + # TODO(@MImmesberger): Remove fake dependency (alter). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 + return kindergeld_params["kindergeld"][1] + + +@policy_function( + start_date="2009-01-01", + end_date="2014-12-31", + leaf_name="anspruchshöhe_m", +) +def unterhaltsvorschuss_anspruch_m_2009_bis_2014( + alter: int, + kindergeld_erstes_kind_m: float, + unterhaltsvors_params: dict, + eink_st_abzuege_params: dict, +) -> float: + """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. + + Relevant parameter is directly 'steuerfrei zu stellenden sächlichen Existenzminimum + des minderjährigen Kindes' § 1612a (1). Modeling relative to the child allowance for + this. The amout for the lower age group is defined relative to the middle age group + with a factor of 0.87. + + Rule was in priciple also active for 2015 but has been overwritten by an + Anwendungsvorschrift as Kinderfreibetrag and Kindergeld changed on July 2015. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kindergeld_erstes_kind_m + See :func:`kindergeld_erstes_kind_m`. + eink_st_abzuege_params + See params documentation :ref:`eink_st_abzuege_params `. + unterhaltsvors_params + See params documentation :ref:`unterhaltsvors_params `. + + Returns + ------- + + """ + # TODO(@MImmesberger): Remove explicit parameter conversion. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/575 + altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] + + kinderfreibetrag_sächl_existenzmin = eink_st_abzuege_params["kinderfreib"][ + "sächl_existenzmin" + ] + + if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: + out = ( + unterhaltsvors_params["faktor_jüngste_altersgruppe"] + * (2 * kinderfreibetrag_sächl_existenzmin / 12) + - kindergeld_erstes_kind_m + ) + elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: + out = 2 * kinderfreibetrag_sächl_existenzmin / 12 - kindergeld_erstes_kind_m + else: + out = 0.0 + + return out + + +@policy_function( + start_date="2015-01-01", + end_date="2015-12-31", + leaf_name="anspruchshöhe_m", +) +def anspruchshöhe_m_anwendungsvors( + alter: int, + unterhaltsvors_params: dict, +) -> float: + """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. + + Rule anspruchshöhe_m_2009_bis_2014 was in priciple also active for + 2015 but has been overwritten by an Anwendungsvorschrift as Kinderfreibetrag and + Kindergeld changed in July 2015. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + unterhaltsvors_params + See params documentation :ref:`unterhaltsvors_params `. + + Returns + ------- + + """ + altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] + + unterhaltsvors = unterhaltsvors_params["anwendungsvorschrift"] + + if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: + out = unterhaltsvors[1] + elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: + out = unterhaltsvors[2] + else: + out = 0.0 + + return out + + +@policy_function( + start_date="2016-01-01", + end_date="2017-06-30", + leaf_name="anspruchshöhe_m", +) +def anspruchshöhe_m_2016_bis_2017_06( + alter: int, + kindergeld_erstes_kind_m: float, + unterhalt_params: dict, +) -> float: + """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. + + § 2 Unterhaltsvorschussgesetz refers to Section § 1612a BGB. There still is the + reference to 'steuerfrei zu stellenden sächlichen Existenzminimum des minderjährigen + Kindes' (§ 1612a (1)) as well as a Verordnungsermächtigung (§ 1612a (4)). The § 1 + Mindesunterhaltsverordnung applies fixed amounts and no relative definition as + before. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + kindergeld_erstes_kind_m + See :func:`kindergeld_erstes_kind_m`. + unterhalt_params + See params documentation :ref:`unterhalt_params `. + + Returns + ------- + + """ + mindestunterhalt = unterhalt_params["mindestunterhalt"] + + if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: + out = mindestunterhalt[1]["betrag"] - kindergeld_erstes_kind_m + elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: + out = mindestunterhalt[2]["betrag"] - kindergeld_erstes_kind_m + else: + out = 0.0 + + return out + + +@policy_function(start_date="2017-07-01", leaf_name="anspruchshöhe_m") +def anspruchshöhe_m_ab_201707( + alter: int, + elternteil_mindesteinkommen_erreicht: bool, + kindergeld_erstes_kind_m: float, + unterhalt_params: dict, +) -> float: + """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. + + Introduction of a minimum income threshold if child is older than some threshold and + third age group (12-17) via Artikel 23 G. v. 14.08.2017 BGBl. I S. 3122. + + Parameters + ---------- + alter + See basic input variable :ref:`alter `. + elternteil_mindesteinkommen_erreicht + See :func:`elternteil_mindesteinkommen_erreicht`. + kindergeld_erstes_kind_m + See :func:`kindergeld_erstes_kind_m`. + unterhalt_params + See params documentation :ref:`unterhalt_params `. + + Returns + ------- + + """ + mindestunterhalt = unterhalt_params["mindestunterhalt"] + + if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: + out = mindestunterhalt[1]["betrag"] - kindergeld_erstes_kind_m + elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: + out = mindestunterhalt[2]["betrag"] - kindergeld_erstes_kind_m + elif ( + mindestunterhalt[3]["min_alter"] <= alter <= mindestunterhalt[3]["max_alter"] + and elternteil_mindesteinkommen_erreicht + ): + out = mindestunterhalt[3]["betrag"] - kindergeld_erstes_kind_m + else: + out = 0.0 + + return out + + +@policy_function(start_date="2017-01-01", skip_vectorization=True) +def elternteil_mindesteinkommen_erreicht( + kindergeld__p_id_empfänger: numpy.ndarray[int], + p_id: numpy.ndarray[int], + mindesteinkommen_erreicht: numpy.ndarray[bool], +) -> numpy.ndarray[bool]: + """Income of Unterhaltsvorschuss recipient above threshold (this variable is + defined on child level). + + Parameters + ---------- + kindergeld__p_id_empfänger + See basic input variable :ref:`kindergeld__p_id_empfänger`. + p_id + See basic input variable :ref:`p_id`. + mindesteinkommen_erreicht + See :func:`mindesteinkommen_erreicht`. + + Returns + ------- + """ + return join_numpy( + kindergeld__p_id_empfänger, + p_id, + mindesteinkommen_erreicht, + value_if_foreign_key_is_missing=False, + ) + + +@policy_function(start_date="2017-01-01") +def mindesteinkommen_erreicht( + einkommen_m: float, + unterhaltsvors_params: dict, +) -> bool: + """Check if income is above the threshold for advance alimony payments. + + Parameters + ---------- + einkommen_m + See :func:`einkommen_m`. + unterhaltsvors_params + See params documentation :ref:`unterhaltsvors_params `. + + Returns + ------- + + """ + return einkommen_m >= unterhaltsvors_params["mindesteinkommen"] + + +@policy_function(start_date="2017-01-01") +def einkommen_m( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__arbeitslosen__betrag_m: float, +) -> float: + """Calculate relevant income for advance on alimony payment. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. + einkommensteuer__einkünfte__sonstige__betrag_m + See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. + sozialversicherung__rente__altersrente__betrag_m + See :func:`sozialversicherung__rente__altersrente__betrag_m`. + sozialversicherung__rente__private_rente_betrag_m + See :func:`sozialversicherung__rente__private_rente_betrag_m`. + sozialversicherung__arbeitslosen__betrag_m + See :func:`sozialversicherung__arbeitslosen__betrag_m`. + + Returns + ------- + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__private_rente_betrag_m + + sozialversicherung__arbeitslosen__betrag_m + ) + + return out diff --git "a/src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" "b/src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" new file mode 100644 index 0000000000..a0cd19f2c3 --- /dev/null +++ "b/src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -0,0 +1,106 @@ +"""Priority checks of transfers against each other.""" + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import policy_function + +aggregation_specs = { + "wohngeld_vorrang_wthh": AggregateByGroupSpec( + source="wohngeld_vorrang_vor_arbeitslosengeld_2_bg", + aggr="any", + ), + "wohngeld_kinderzuschlag_vorrang_wthh": AggregateByGroupSpec( + source="wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg", + aggr="any", + ), +} + + +@policy_function() +def wohngeld_vorrang_vor_arbeitslosengeld_2_bg( + arbeitslosengeld_2__regelbedarf_m_bg: float, + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg: float, + wohngeld__anspruchshöhe_m_bg: float, +) -> bool: + """Check if housing benefit has priority. + + Housing benefit has priority if the sum of housing benefit and income covers the + needs according to SGB II of the Bedarfsgemeinschaft. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_bg + See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. + wohngeld__anspruchshöhe_m_bg + See :func:`wohngeld__anspruchshöhe_m_bg`. + + Returns + ------- + + """ + return ( + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + wohngeld__anspruchshöhe_m_bg + >= arbeitslosengeld_2__regelbedarf_m_bg + ) + + +@policy_function() +def kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg( + arbeitslosengeld_2__regelbedarf_m_bg: float, + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg: float, + kinderzuschlag__anspruchshöhe_m_bg: float, +) -> bool: + """Check if child benefit has priority. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_bg + See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. + kinderzuschlag__anspruchshöhe_m_bg + See :func:`kinderzuschlag__anspruchshöhe_m_bg`. + + Returns + ------- + + """ + return ( + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + + kinderzuschlag__anspruchshöhe_m_bg + >= arbeitslosengeld_2__regelbedarf_m_bg + ) + + +@policy_function() +def wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg( + arbeitslosengeld_2__regelbedarf_m_bg: float, + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg: float, + kinderzuschlag__anspruchshöhe_m_bg: float, + wohngeld__anspruchshöhe_m_bg: float, +) -> bool: + """Check if housing and child benefit have priority. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_bg + See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. + kinderzuschlag__anspruchshöhe_m_bg + See :func:`kinderzuschlag__anspruchshöhe_m_bg`. + wohngeld__anspruchshöhe_m_bg + See :func:`wohngeld__anspruchshöhe_m_bg`. + + Returns + ------- + + """ + + return ( + arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + + wohngeld__anspruchshöhe_m_bg + + kinderzuschlag__anspruchshöhe_m_bg + >= arbeitslosengeld_2__regelbedarf_m_bg + ) diff --git a/src/_gettsim/transfers/wohngeld.py b/src/_gettsim/transfers/wohngeld.py deleted file mode 100644 index d9af5e195f..0000000000 --- a/src/_gettsim/transfers/wohngeld.py +++ /dev/null @@ -1,1127 +0,0 @@ -"""This module provides functions to compute residence allowance (Wohngeld). - -Wohngeld has priority over ALG2 if the recipients can cover their needs according to -SGB II when receiving Wohngeld. The priority check follows the following logic: - -1. Calculate Wohngeld on the Bedarfsgemeinschaft level. -2. Check whether the Bedarfsgemeinschaft can cover its own needs (Regelbedarf) with - Wohngeld. If not, the Bedarfsgemeinschaft is eligible for ALG2. -3. Compute Wohngeld again for all individuals in the household that can cover their - own needs with Wohngeld. This is the final Wohngeld amount that is paid out to - the wohngeldrechtlicher Teilhaushalt. - -Note: Because Wohngeld is nonlinear in the number of people in the -wohngeldrechtlicher Teilhaushalt, there may be some individuals that pass the -priority check, but cannot cover their needs with the Wohngeld calculated in point -3. In this sense, this implementation is an approximation of the actual Wohngeld. -""" - -from _gettsim.config import numpy_or_jax as np -from _gettsim.functions.policy_function import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial - -aggregate_by_p_id_wohngeld = { - "_wohngeld_eink_freib_alleinerz_bonus": { - "p_id_to_aggregate_by": "p_id_kindergeld_empf", - "source_col": "kind_bis_10_mit_kindergeld", - "aggr": "sum", - }, -} - - -def wohngeld_m_wthh( - wohngeld_anspruchshöhe_m_wthh: float, - erwachsene_alle_rentner_hh: bool, - wohngeld_kinderzuschl_vorrang_wthh: bool, - wohngeld_vorrang_wthh: bool, -) -> float: - """Housing benefit after wealth and priority checks. - - Parameters - ---------- - wohngeld_anspruchshöhe_m_wthh - See :func:`wohngeld_anspruchshöhe_m_wthh`. - erwachsene_alle_rentner_hh - See :func:`erwachsene_alle_rentner_hh `. - wohngeld_kinderzuschl_vorrang_wthh - See :func:`wohngeld_kinderzuschl_vorrang_wthh`. - wohngeld_vorrang_wthh - See :func:`wohngeld_vorrang_wthh`. - - Returns - ------- - - """ - # TODO (@MImmesberger): This implementation may be only an approximation of the - # actual rules for individuals that are on the margin of the priority check. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/752 - - # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im - # Alter (SGB XII) is implemented yet. We assume for now that households with only - # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All - # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is - # resolved, remove the `erwachsene_alle_rentner_hh` condition. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 - - if not erwachsene_alle_rentner_hh and ( - wohngeld_vorrang_wthh or wohngeld_kinderzuschl_vorrang_wthh - ): - out = wohngeld_anspruchshöhe_m_wthh - else: - out = 0.0 - - return out - - -@policy_function(params_key_for_rounding="wohngeld") -def wohngeld_anspruchshöhe_m_wthh( - anz_personen_wthh: int, - wohngeld_eink_m_wthh: float, - wohngeld_miete_m_wthh: float, - wohngeld_anspruchsbedingungen_erfüllt_wthh: bool, - wohngeld_params: dict, -) -> float: - """Housing benefit after wealth and income check. - - This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften in - the household that passed the priority check against Arbeitslosengeld 2. Returns - zero if not eligible. - - Parameters - ---------- - anz_personen_wthh - See :func:`anz_personen_wthh`. - wohngeld_eink_m_wthh - See :func:`wohngeld_eink_m_wthh`. - wohngeld_miete_m_wthh - See :func:`wohngeld_miete_m_wthh`. - wohngeld_anspruchsbedingungen_erfüllt_wthh - See :func:`wohngeld_anspruchsbedingungen_erfüllt_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - if wohngeld_anspruchsbedingungen_erfüllt_wthh: - out = _wohngeld_basisformel( - anz_personen=anz_personen_wthh, - einkommen_m=wohngeld_eink_m_wthh, - miete_m=wohngeld_miete_m_wthh, - params=wohngeld_params, - ) - else: - out = 0.0 - - return out - - -@policy_function(params_key_for_rounding="wohngeld") -def wohngeld_anspruchshöhe_m_bg( - anz_personen_bg: int, - wohngeld_eink_m_bg: float, - wohngeld_miete_m_bg: float, - wohngeld_anspruchsbedingungen_erfüllt_bg: bool, - wohngeld_params: dict, -) -> float: - """Housing benefit after wealth and income check. - - This target is used for the priority check calculation against Arbeitslosengeld 2. - - Parameters - ---------- - anz_personen_bg - See :func:`anz_personen_bg`. - wohngeld_eink_m_bg - See :func:`wohngeld_eink_m_bg`. - wohngeld_miete_m_bg - See :func:`wohngeld_miete_m_bg`. - wohngeld_anspruchsbedingungen_erfüllt_bg - See :func:`wohngeld_anspruchsbedingungen_erfüllt_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - if wohngeld_anspruchsbedingungen_erfüllt_bg: - out = _wohngeld_basisformel( - anz_personen=anz_personen_bg, - einkommen_m=wohngeld_eink_m_bg, - miete_m=wohngeld_miete_m_bg, - params=wohngeld_params, - ) - else: - out = 0.0 - - return out - - -def wohngeld_anspruchsbedingungen_erfüllt_wthh( - wohngeld_mindesteinkommen_erreicht_wthh: bool, - wohngeld_vermögensgrenze_unterschritten_wthh: bool, -) -> bool: - """Check whether the household meets the conditions for Wohngeld. - - This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften - that passed the priority check against Arbeitslosengeld II / Bürgergeld. - - Parameters - ---------- - wohngeld_mindesteinkommen_erreicht_wthh - See :func:`wohngeld_mindesteinkommen_erreicht_wthh`. - wohngeld_vermögensgrenze_unterschritten_wthh - See :func:`wohngeld_vermögensgrenze_unterschritten_wthh`. - - Returns - ------- - - """ - return ( - wohngeld_vermögensgrenze_unterschritten_wthh - and wohngeld_mindesteinkommen_erreicht_wthh - ) - - -def wohngeld_anspruchsbedingungen_erfüllt_bg( - wohngeld_mindesteinkommen_erreicht_bg: bool, - wohngeld_vermögensgrenze_unterschritten_bg: bool, -) -> bool: - """Check whether the household meets the conditions for Wohngeld. - - This target is used for the priority check calculation against Arbeitslosengeld II / - Bürgergeld on the Bedarfsgemeinschaft level. - - Parameters - ---------- - wohngeld_mindesteinkommen_erreicht_bg - See :func:`wohngeld_mindesteinkommen_erreicht_bg`. - wohngeld_vermögensgrenze_unterschritten_bg - See :func:`wohngeld_vermögensgrenze_unterschritten_bg`. - - Returns - ------- - - """ - return ( - wohngeld_mindesteinkommen_erreicht_bg - and wohngeld_vermögensgrenze_unterschritten_bg - ) - - -def wohngeld_abzüge_st_sozialv_m( - eink_st_y_sn: float, - ges_rentenv_beitr_arbeitnehmer_m: float, - ges_krankenv_beitr_arbeitnehmer_m: float, - kind: bool, - wohngeld_params: dict, -) -> float: - """Calculate housing benefit subtractions on the individual level. - - Note that eink_st_y_sn is used as an approximation for taxes on income (as mentioned - in § 16 WoGG Satz 1 Nr. 1). - - Parameters - ---------- - eink_st_y_sn - See :func:`eink_st_y_sn`. - ges_rentenv_beitr_arbeitnehmer_m - See :func:`ges_rentenv_beitr_arbeitnehmer_m`. - ges_krankenv_beitr_arbeitnehmer_m - See :func:`ges_krankenv_beitr_arbeitnehmer_m`. - kind - See basic input variable :ref:`kind `. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - abzug_stufen = ( - (eink_st_y_sn > 0) - + (ges_rentenv_beitr_arbeitnehmer_m > 0) - + (ges_krankenv_beitr_arbeitnehmer_m > 0) - ) - if kind: - out = 0.0 - else: - out = wohngeld_params["abzug_stufen"][abzug_stufen] - return out - - -@policy_function(end_date="2006-12-31", leaf_name="wohngeld_eink_vor_freib_m") -def wohngeld_eink_vor_freib_m_ohne_elterngeld( # noqa: PLR0913 - eink_selbst_m: float, - eink_abhängig_beschäftigt_m: float, - kapitaleink_brutto_m: float, - eink_vermietung_m: float, - arbeitsl_geld_m: float, - sonstig_eink_m: float, - eink_rente_zu_verst_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - wohngeld_abzüge_st_sozialv_m: float, -) -> float: - """Sum gross incomes relevant for housing benefit calculation on individual level - and deducting individual housing benefit subtractions. - Reference: § 14 WoGG - - Parameters - ---------- - eink_selbst_m - See :func:`_eink_selbst`. - eink_abhängig_beschäftigt_m - See :func:`eink_abhängig_beschäftigt_m`. - kapitaleink_brutto_m - See :func:`kapitaleink_brutto_m`. - eink_vermietung_m - See :func:`eink_vermietung_m`. - arbeitsl_geld_m - See :func:`arbeitsl_geld_m`. - sonstig_eink_m - See :func:`sonstig_eink_m`. - eink_rente_zu_verst_m - See :func:`eink_rente_zu_verst_m`. - kind_unterh_erhalt_m - See basic input variable :ref:`kind_unterh_erhalt_m `. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - wohngeld_abzüge_st_sozialv_m - See :func:`wohngeld_abzüge_st_sozialv_m`. - - Returns - ------- - - """ - einkommen = ( - eink_selbst_m - + eink_abhängig_beschäftigt_m - + kapitaleink_brutto_m - + eink_vermietung_m - ) - - transfers = ( - arbeitsl_geld_m - + eink_rente_zu_verst_m - + kind_unterh_erhalt_m - + unterhaltsvors_m - ) - - eink_ind = einkommen + transfers + sonstig_eink_m - out = (1 - wohngeld_abzüge_st_sozialv_m) * eink_ind - return out - - -@policy_function(start_date="2007-01-01", leaf_name="wohngeld_eink_vor_freib_m") -def wohngeld_eink_vor_freib_m_mit_elterngeld( # noqa: PLR0913 - eink_selbst_m: float, - eink_abhängig_beschäftigt_m: float, - kapitaleink_brutto_m: float, - eink_vermietung_m: float, - arbeitsl_geld_m: float, - sonstig_eink_m: float, - eink_rente_zu_verst_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - anrechenbares_elterngeld_m: float, - wohngeld_abzüge_st_sozialv_m: float, -) -> float: - """Sum gross incomes relevant for housing benefit calculation on individual level - and deducting individual housing benefit subtractions. - Reference: § 14 WoGG - - Parameters - ---------- - eink_selbst_m - See :func:`_eink_selbst`. - eink_abhängig_beschäftigt_m - See :func:`eink_abhängig_beschäftigt_m`. - kapitaleink_brutto_m - See :func:`kapitaleink_brutto_m`. - eink_vermietung_m - See :func:`eink_vermietung_m`. - arbeitsl_geld_m - See :func:`arbeitsl_geld_m`. - sonstig_eink_m - See :func:`sonstig_eink_m`. - eink_rente_zu_verst_m - See :func:`eink_rente_zu_verst_m`. - kind_unterh_erhalt_m - See basic input variable :ref:`kind_unterh_erhalt_m `. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - anrechenbares_elterngeld_m - See :func:`anrechenbares_elterngeld_m`. - wohngeld_abzüge_st_sozialv_m - See :func:`wohngeld_abzüge_st_sozialv_m`. - - Returns - ------- - - """ - # TODO(@MImmesberger): Find out whether kind_unterh_erhalt_m and unterhaltsvors_m - # are counted as income for Wohngeld income check. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/357 - einkommen = ( - eink_selbst_m - + eink_abhängig_beschäftigt_m - + kapitaleink_brutto_m - + eink_vermietung_m - ) - - transfers = ( - arbeitsl_geld_m - + eink_rente_zu_verst_m - + kind_unterh_erhalt_m - + unterhaltsvors_m - + anrechenbares_elterngeld_m - ) - - eink_ind = einkommen + transfers + sonstig_eink_m - out = (1 - wohngeld_abzüge_st_sozialv_m) * eink_ind - return out - - -def wohngeld_arbeitendes_kind(bruttolohn_m: float, kindergeld_anspruch: bool) -> bool: - """Check if children are working. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - kindergeld_anspruch - See :func:`kindergeld_anspruch`. - - Returns - ------- - - """ - out = (bruttolohn_m > 0) and kindergeld_anspruch - return out - - -@policy_function(end_date="2015-12-31", leaf_name="wohngeld_eink_freib_m") -def wohngeld_eink_freib_m_bis_2015( # noqa: PLR0913 - bruttolohn_m: float, - wohngeld_arbeitendes_kind: bool, - behinderungsgrad: int, - alleinerz: bool, - kind: bool, - _wohngeld_eink_freib_alleinerz_bonus: int, - wohngeld_params: dict, -) -> float: - """Calculate housing benefit subtractions for one individual until 2015. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - wohngeld_arbeitendes_kind - See :func:`wohngeld_arbeitendes_kind`. - behinderungsgrad - See basic input variable :ref:`behinderungsgrad `. - alleinerz - See basic input variable :ref:`alleinerz `. - kind - See basic input variable :ref:`kind `. - _wohngeld_eink_freib_alleinerz_bonus - See :func:`_wohngeld_eink_freib_alleinerz_bonus`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - freib_behinderung_m = piecewise_polynomial( - behinderungsgrad, - thresholds=[*list(wohngeld_params["freib_behinderung"]), np.inf], - rates=np.array([[0] * len(wohngeld_params["freib_behinderung"])]), - intercepts_at_lower_thresholds=[ - yearly_v / 12 for yearly_v in wohngeld_params["freib_behinderung"].values() - ], - ) - - # Subtraction for single parents and working children - if wohngeld_arbeitendes_kind: - freib_kinder_m = min( - bruttolohn_m, wohngeld_params["freib_kinder_m"]["arbeitendes_kind"] - ) - - elif alleinerz and (not kind): - freib_kinder_m = ( - _wohngeld_eink_freib_alleinerz_bonus - * wohngeld_params["freib_kinder_m"]["alleinerz"] - ) - else: - freib_kinder_m = 0.0 - return freib_behinderung_m + freib_kinder_m - - -@policy_function(start_date="2016-01-01", leaf_name="wohngeld_eink_freib_m") -def wohngeld_eink_freib_m_ab_2016( - bruttolohn_m: float, - wohngeld_arbeitendes_kind: bool, - behinderungsgrad: int, - alleinerz: bool, - wohngeld_params: dict, -) -> float: - """Calculate housing benefit subtracting for one individual since 2016. - - Parameters - ---------- - bruttolohn_m - See basic input variable :ref:`bruttolohn_m `. - wohngeld_arbeitendes_kind - See :func:`wohngeld_arbeitendes_kind`. - behinderungsgrad - See basic input variable :ref:`behinderungsgrad `. - alleinerz - See basic input variable :ref:`alleinerz `. - kind - See basic input variable :ref:`kind `. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - Returns - ------- - - """ - freib_behinderung_m = ( - wohngeld_params["freib_behinderung"] / 12 if behinderungsgrad > 0 else 0 - ) - - if wohngeld_arbeitendes_kind: - freib_kinder_m = min( - bruttolohn_m, wohngeld_params["freib_kinder_m"]["arbeitendes_kind"] - ) - elif alleinerz: - freib_kinder_m = wohngeld_params["freib_kinder_m"]["alleinerz"] - else: - freib_kinder_m = 0.0 - - return freib_behinderung_m + freib_kinder_m - - -def wohngeld_eink_m_wthh( - anz_personen_wthh: int, - wohngeld_eink_freib_m_wthh: float, - wohngeld_eink_vor_freib_m_wthh: float, - wohngeld_params: dict, -) -> float: - """Income relevant for Wohngeld calculation. - - Reference: § 13 WoGG - - This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften - that passed the priority check against Arbeitslosengeld II / Bürgergeld. - - Parameters - ---------- - anz_personen_wthh - See :func:`anz_personen_wthh`. - wohngeld_eink_freib_m_wthh - See :func:`wohngeld_eink_freib_m_wthh`. - wohngeld_eink_vor_freib_m_wthh - See :func:`wohngeld_eink_vor_freib_m_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - return _wohngeld_einkommen_formel( - anz_personen=anz_personen_wthh, - einkommen_freibetrag=wohngeld_eink_freib_m_wthh, - einkommen_vor_freibetrag=wohngeld_eink_vor_freib_m_wthh, - params=wohngeld_params, - ) - - -def wohngeld_eink_m_bg( - anz_personen_bg: int, - wohngeld_eink_freib_m_bg: float, - wohngeld_eink_vor_freib_m_bg: float, - wohngeld_params: dict, -) -> float: - """Income relevant for Wohngeld calculation. - - Reference: § 13 WoGG - - This target is used for the priority check calculation against Arbeitslosengeld II / - Bürgergeld on the Bedarfsgemeinschaft level. - - Parameters - ---------- - anz_personen_bg - See :func:`anz_personen_bg`. - wohngeld_eink_freib_m_bg - See :func:`wohngeld_eink_freib_m_bg`. - wohngeld_eink_vor_freib_m_bg - See :func:`wohngeld_eink_vor_freib_m_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - return _wohngeld_einkommen_formel( - anz_personen=anz_personen_bg, - einkommen_freibetrag=wohngeld_eink_freib_m_bg, - einkommen_vor_freibetrag=wohngeld_eink_vor_freib_m_bg, - params=wohngeld_params, - ) - - -def wohngeld_min_miete_m_hh(anz_personen_hh: int, wohngeld_params: dict) -> float: - """Minimum rent considered in Wohngeld calculation. - - Parameters - ---------- - anz_personen_hh - See :func:`anz_personen_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - Returns - ------- - - """ - out = wohngeld_params["min_miete"][ - min(anz_personen_hh, max(wohngeld_params["min_miete"])) - ] - return float(out) - - -def wohngeld_miete_m_wthh( - wohngeld_miete_m_hh: float, - anz_personen_wthh: int, - anz_personen_hh: int, -) -> float: - """Rent considered in housing benefit calculation on wohngeldrechtlicher - Teilhaushalt level. - - This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften - that passed the priority check against Arbeitslosengeld II / Bürgergeld. - - Parameters - ---------- - wohngeld_miete_m_hh - See :func:`wohngeld_miete_m_hh`. - anz_personen_wthh - See :func:`anz_personen_wthh`. - anz_personen_hh - See :func:`anz_personen_hh`. - - Returns - ------- - - """ - return wohngeld_miete_m_hh * (anz_personen_wthh / anz_personen_hh) - - -def wohngeld_miete_m_bg( - wohngeld_miete_m_hh: float, - anz_personen_bg: int, - anz_personen_hh: int, -) -> float: - """Rent considered in housing benefit calculation on BG level. - - This target is used for the priority check calculation against Arbeitslosengeld II / - Bürgergeld on the Bedarfsgemeinschaft level. - - Parameters - ---------- - wohngeld_miete_m_hh - See :func:`wohngeld_miete_m_hh`. - anz_personen_bg - See :func:`anz_personen_bg`. - anz_personen_hh - See :func:`anz_personen_hh`. - - Returns - ------- - - """ - return wohngeld_miete_m_hh * (anz_personen_bg / anz_personen_hh) - - -@policy_function(end_date="2008-12-31", leaf_name="wohngeld_miete_m_hh") -def wohngeld_miete_bis_2008_m_hh( # noqa: PLR0913 - mietstufe: int, - immobilie_baujahr_hh: int, - anz_personen_hh: int, - bruttokaltmiete_m_hh: float, - wohngeld_min_miete_m_hh: float, - wohngeld_params: dict, -) -> float: - """Rent considered in housing benefit calculation on household level until 2008. - - Parameters - ---------- - mietstufe - See basic input variable :ref:`mietstufe `. - immobilie_baujahr_hh - See basic input variable :ref:`immobilie_baujahr_hh `. - anz_personen_hh - See :func:`anz_personen_hh`. - bruttokaltmiete_m_hh - See :func:`bruttokaltmiete_m_hh `. - wohngeld_min_miete_m_hh - See :func:`wohngeld_min_miete_m_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" - ] - berücks_personen = min(anz_personen_hh, max_berücks_personen) - - # Get yearly cutoff in params which is closest and above the construction year - # of the property. We assume that the same cutoffs exist for each household - # size. - params_max_miete = wohngeld_params["max_miete"] - selected_bin_index = np.searchsorted( - np.asarray(sorted(params_max_miete[1])), immobilie_baujahr_hh, side="left" - ) - - constr_year = list(params_max_miete[1])[selected_bin_index] - - # Calc maximal considered rent - max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) - if anz_personen_hh <= max_definierte_hh_größe: - max_miete_m = params_max_miete[anz_personen_hh][constr_year][mietstufe] - else: - max_miete_m = params_max_miete[max_definierte_hh_größe][constr_year][ - mietstufe - ] + params_max_miete["jede_weitere_person"][constr_year][mietstufe] * ( - berücks_personen - max_definierte_hh_größe - ) - - out = min(bruttokaltmiete_m_hh, max_miete_m) - out = max(out, wohngeld_min_miete_m_hh) - - return out - - -@policy_function(start_date="2009-01-01", leaf_name="wohngeld_miete_m_hh") -def wohngeld_miete_ab_2009_m_hh( # noqa: PLR0912 (see #516) - mietstufe: int, - anz_personen_hh: int, - bruttokaltmiete_m_hh: float, - wohngeld_min_miete_m_hh: float, - wohngeld_params: dict, -) -> float: - """Rent considered in housing benefit since 2009. - - Parameters - ---------- - mietstufe - See basic input variable :ref:`mietstufe `. - anz_personen_hh - See :func:`anz_personen_hh`. - bruttokaltmiete_m_hh - See :func:`bruttokaltmiete_m_hh `. - wohngeld_min_miete_m_hh - See :func:`wohngeld_min_miete_m_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - params_max_miete = wohngeld_params["max_miete"] - - max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" - ] - berücks_personen = min(anz_personen_hh, max_berücks_personen) - - # Calc maximal considered rent - max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) - if anz_personen_hh <= max_definierte_hh_größe: - max_miete_m = params_max_miete[anz_personen_hh][mietstufe] - else: - max_miete_m = ( - params_max_miete[max_definierte_hh_größe][mietstufe] - + (berücks_personen - max_definierte_hh_größe) - * params_max_miete["jede_weitere_person"][mietstufe] - ) - - # Calc heating allowance. Until 2020, heating allowance was not - # introduced yet. For this time frame, the respective parameter is - # not part of wohngeld_params and heating allowance is set to 0. - # TODO(@MImmesberger): Apply policy_function decorator. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/711 - if "heizkostenentlastung_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i for i in wohngeld_params["heizkostenentlastung_m"] if isinstance(i, int) - ) - if "heizkostenentlastung_m" in wohngeld_params: - if anz_personen_hh <= max_def_hh_größe_heating: - heating_allowance_m = wohngeld_params["heizkostenentlastung_m"][ - anz_personen_hh - ] - else: - heating_allowance_m = ( - wohngeld_params["heizkostenentlastung_m"][max_def_hh_größe_heating] - + (berücks_personen - max_def_hh_größe_heating) - * (wohngeld_params["heizkostenentlastung_m"]["jede_weitere_person"]) - ) - else: - heating_allowance_m = 0 - - # Calc heating cost component. Until 2022, heating cost component was not - # introduced yet. For this time frame, the respective parameter is not part - # of params and heating cost component is set to 0. - if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i - for i in wohngeld_params["dauerhafte_heizkostenkomponente_m"] - if isinstance(i, int) - ) - if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: - if anz_personen_hh <= max_def_hh_größe_heating: - heating_component_m = wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - anz_personen_hh - ] - else: - heating_component_m = ( - wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - max_def_hh_größe_heating - ] - + (berücks_personen - max_def_hh_größe_heating) - * ( - wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - "jede_weitere_person" - ] - ) - ) - else: - heating_component_m = 0 - - # Calc climate component. Until 2022, climate component was not - # introduced yet. For this time frame, the respective parameter is not - # part of params and climate component is set to 0. - if "klimakomponente_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i for i in wohngeld_params["klimakomponente_m"] if isinstance(i, int) - ) - if "klimakomponente_m" in wohngeld_params: - if anz_personen_hh <= max_def_hh_größe_heating: - climate_component_m = wohngeld_params["klimakomponente_m"][anz_personen_hh] - else: - climate_component_m = ( - wohngeld_params["klimakomponente_m"][max_def_hh_größe_heating] - + (berücks_personen - max_def_hh_größe_heating) - * (wohngeld_params["klimakomponente_m"]["jede_weitere_person"]) - ) - else: - climate_component_m = 0 - - out = min(bruttokaltmiete_m_hh, max_miete_m + climate_component_m) - out = max(out, wohngeld_min_miete_m_hh) + heating_allowance_m + heating_component_m - - return out - - -def wohngeld_vermögensgrenze_unterschritten_wthh( - vermögen_bedürft_wthh: float, - anz_personen_wthh: int, - wohngeld_params: dict, -) -> bool: - """Wealth is below the eligibility threshold for housing benefits. - - Parameters - ---------- - vermögen_bedürft_wthh - See :func:`vermögen_bedürft_wthh `. - anz_personen_wthh - See :func:`anz_personen_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - - return _wohngeld_vermögensprüfung_formel( - vermögen=vermögen_bedürft_wthh, - anz_personen=anz_personen_wthh, - params=wohngeld_params, - ) - - -def wohngeld_vermögensgrenze_unterschritten_bg( - vermögen_bedürft_bg: float, - anz_personen_bg: int, - wohngeld_params: dict, -) -> bool: - """Wealth is below the eligibility threshold for housing benefits. - - Parameters - ---------- - vermögen_bedürft_bg - See :func:`vermögen_bedürft_bg `. - anz_personen_bg - See :func:`anz_personen_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params `. - - Returns - ------- - - """ - - return _wohngeld_vermögensprüfung_formel( - vermögen=vermögen_bedürft_bg, - anz_personen=anz_personen_bg, - params=wohngeld_params, - ) - - -def wohngeld_mindesteinkommen_erreicht_wthh( - arbeitsl_geld_2_regelbedarf_m_wthh: float, - wohngeld_einkommen_für_mindesteinkommen_check_m_wthh: float, -) -> bool: - """Minimum income requirement for housing benefits is met. - - Note: The Wohngeldstelle can make a discretionary judgment if the applicant does not - meet the Mindesteinkommen: - - 1. Savings may partly cover the Regelbedarf, making the applicant eligible again. - 2. The Wohngeldstelle may reduce the Regelsatz by 20% (but not KdU or private - insurance contributions). - - The allowance for discretionary judgment is ignored here. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_wthh - See :func:`arbeitsl_geld_2_regelbedarf_m_wthh`. - wohngeld_einkommen_für_mindesteinkommen_check_m_wthh - See :func:`wohngeld_einkommen_für_mindesteinkommen_check_m_wthh`. - - Returns - ------- - - """ - return ( - wohngeld_einkommen_für_mindesteinkommen_check_m_wthh - >= arbeitsl_geld_2_regelbedarf_m_wthh - ) - - -def wohngeld_mindesteinkommen_erreicht_bg( - arbeitsl_geld_2_regelbedarf_m_bg: float, - wohngeld_einkommen_für_mindesteinkommen_check_m_bg: float, -) -> bool: - """Minimum income requirement for housing benefits is met. - - Note: The Wohngeldstelle can make a discretionary judgment if the applicant does not - meet the Mindesteinkommen: - - 1. Savings may partly cover the Regelbedarf, making the applicant eligible again. - 2. The Wohngeldstelle may reduce the Regelsatz by 20% (but not KdU or private - insurance contributions). - - The allowance for discretionary judgment is ignored here. - - Parameters - ---------- - arbeitsl_geld_2_regelbedarf_m_bg - See :func:`arbeitsl_geld_2_regelbedarf_m_bg`. - wohngeld_einkommen_für_mindesteinkommen_check_m_bg - See :func:`wohngeld_einkommen_für_mindesteinkommen_check_m_bg`. - - Returns - ------- - - """ - return ( - wohngeld_einkommen_für_mindesteinkommen_check_m_bg - >= arbeitsl_geld_2_regelbedarf_m_bg - ) - - -def wohngeld_einkommen_für_mindesteinkommen_check_m( - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m: float, - kind_unterh_erhalt_m: float, - unterhaltsvors_m: float, - kindergeld_m: float, - _kinderzuschl_nach_vermög_check_m: float, -) -> float: - """Income for the Mindesteinkommen check. - - Minimum income is defined via VwV 15.01 ff § 15 WoGG. - - According to BMI Erlass of 11.03.2020, Unterhaltsvorschuss, Kinderzuschlag and - Kindergeld count as income for this check. - - Parameters - ---------- - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m - See :func:`arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m`. - kind_unterh_erhalt_m - See :func:`kind_unterh_erhalt_m`. - unterhaltsvors_m - See :func:`unterhaltsvors_m`. - kindergeld_m - See :func:`kindergeld_m`. - _kinderzuschl_nach_vermög_check_m - See :func:`_kinderzuschl_nach_vermög_check_m`. - - Returns - ------- - - """ - - return ( - arbeitsl_geld_2_nettoeink_vor_abzug_freibetrag_m - + kind_unterh_erhalt_m - + unterhaltsvors_m - + kindergeld_m - + _kinderzuschl_nach_vermög_check_m - ) - - -def _wohngeld_basisformel( - anz_personen: int, - einkommen_m: float, - miete_m: float, - params: dict, -) -> float: - """Basic formula for housing benefit calculation. - - Note: This function is not a direct target in the DAG, but a helper function to - store the code for Wohngeld calculation. - - Parameters - ---------- - anz_personen - Number of people Wohngeld is being calculated for. - einkommen_m - Sum of income of people Wohngeld should be calculated for. - miete_m - Sum of rent. - params - See params documentation :ref:`params `. - - Returns - ------- - - """ - max_berücks_personen = params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" - ] - - koeffizienten = params["koeffizienten_berechnungsformel"][ - min(anz_personen, max_berücks_personen) - ] - out = params["faktor_berechnungsformel"] * ( - miete_m - - ( - ( - koeffizienten["a"] - + (koeffizienten["b"] * miete_m) - + (koeffizienten["c"] * einkommen_m) - ) - * einkommen_m - ) - ) - out = max(out, 0.0) - - if anz_personen > max_berücks_personen: - # If more than 12 persons, there is a lump-sum on top. - # The maximum is still capped at `miete_m`. - out = min( - out - + params["bonus_sehr_große_haushalte"]["bonus_jede_weitere_person"] - * (anz_personen - max_berücks_personen), - miete_m, - ) - - return out - - -def _wohngeld_vermögensprüfung_formel( - vermögen: float, - anz_personen: int, - params: dict, -) -> float: - """Wealth check for housing benefit calculation. - - The payment depends on the wealth of the household and the number of household - members. - - Note: This function is not a direct target in the DAG, but a helper function to - store the code for Wohngeld calculation. - - Parameters - ---------- - vermögen - Relevant wealth of the Wohngeld recipients. - anz_personen - Number of people Wohngeld is being calculated for. - params - See params documentation :ref:`params `. - - Returns - ------- - - """ - - if anz_personen == 1: - vermögensfreibetrag = params["vermögensgrundfreibetrag"] - else: - vermögensfreibetrag = params["vermögensgrundfreibetrag"] + params[ - "vermögensfreibetrag_pers" - ] * (anz_personen - 1) - - if vermögen <= vermögensfreibetrag: - out = True - else: - out = False - - return out - - -def _wohngeld_einkommen_formel( - anz_personen: int, - einkommen_freibetrag: float, - einkommen_vor_freibetrag: float, - params: dict, -) -> float: - """Calculate final income relevant for calculation of housing benefit on household - level. - Reference: § 13 WoGG - - Parameters - ---------- - anz_personen - Number of people Wohngeld is being calculated for. - einkommen_freibetrag - Income that is not considered for Wohngeld calculation. - einkommen_vor_freibetrag - Sum of income. - params - See params documentation :ref:`params `. - - Returns - ------- - - """ - eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommen_freibetrag - unteres_eink = params["min_eink"][min(anz_personen, max(params["min_eink"]))] - - out = max(eink_nach_abzug_m_hh, unteres_eink) - return float(out) diff --git a/src/_gettsim/transfers/wohngeld/__init__.py b/src/_gettsim/transfers/wohngeld/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/transfers/wohngeld/einkommen.py b/src/_gettsim/transfers/wohngeld/einkommen.py new file mode 100644 index 0000000000..19e07c458e --- /dev/null +++ b/src/_gettsim/transfers/wohngeld/einkommen.py @@ -0,0 +1,427 @@ +"""Income relevant for housing benefit calculation.""" + +from _gettsim.aggregation import AggregateByPIDSpec +from _gettsim.config import numpy_or_jax as np +from _gettsim.function_types import policy_function +from _gettsim.piecewise_functions import piecewise_polynomial + +aggregation_specs = { + "alleinerziehendenbonus": AggregateByPIDSpec( + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + source="kindergeld__kind_bis_10_mit_kindergeld", + aggr="sum", + ), +} + + +@policy_function() +def einkommen_m_wthh( + anzahl_personen_wthh: int, + freibetrag_m_wthh: float, + einkommen_vor_freibetrag_m_wthh: float, + wohngeld_params: dict, +) -> float: + """Income relevant for Wohngeld calculation. + + Reference: § 13 WoGG + + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften + that passed the priority check against Arbeitslosengeld II / Bürgergeld. + + Parameters + ---------- + anzahl_personen_wthh + See :func:`anzahl_personen_wthh`. + freibetrag_m_wthh + See :func:`freibetrag_m_wthh`. + einkommen_vor_freibetrag_m_wthh + See :func:`einkommen_vor_freibetrag_m_wthh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + return einkommen( + anzahl_personen=anzahl_personen_wthh, + einkommen_freibetrag=freibetrag_m_wthh, + einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_wthh, + params=wohngeld_params, + ) + + +@policy_function() +def einkommen_m_bg( + arbeitslosengeld_2__anzahl_personen_bg: int, + freibetrag_m_bg: float, + einkommen_vor_freibetrag_m_bg: float, + wohngeld_params: dict, +) -> float: + """Income relevant for Wohngeld calculation. + + Reference: § 13 WoGG + + This target is used for the priority check calculation against Arbeitslosengeld II / + Bürgergeld on the Bedarfsgemeinschaft level. + + Parameters + ---------- + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + freibetrag_m_bg + See :func:`freibetrag_m_bg`. + einkommen_vor_freibetrag_m_bg + See :func:`einkommen_vor_freibetrag_m_bg`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + return einkommen( + anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, + einkommen_freibetrag=freibetrag_m_bg, + einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_bg, + params=wohngeld_params, + ) + + +@policy_function() +def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( + einkommensteuer__betrag_y_sn: float, + sozialversicherung__rente__beitrag__betrag_versicherter_y: float, + sozialversicherung__kranken__beitrag__betrag_versicherter_y: float, + familie__kind: bool, + wohngeld_params: dict, +) -> float: + """Calculate housing benefit subtractions on the individual level. + + Note that einkommensteuer__betrag_y_sn is used as an approximation for taxes + on income (as mentioned in § 16 WoGG Satz 1 Nr. 1). + + Parameters + ---------- + einkommensteuer__betrag_y_sn + See :func: + `einkommensteuer__betrag_y_sn`. + sozialversicherung__rente__beitrag__betrag_versicherter_y + See :func: + `sozialversicherung__rente__beitrag__betrag_versicherter_y`. + sozialversicherung__kranken__beitrag__betrag_versicherter_y + See :func: + `sozialversicherung__kranken__beitrag__betrag_versicherter_y`. + familie__kind + See basic input variable :ref:`familie__kind `. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + abzug_stufen = ( + (einkommensteuer__betrag_y_sn > 0) + + (sozialversicherung__rente__beitrag__betrag_versicherter_y > 0) + + (sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0) + ) + if familie__kind: + out = 0.0 + else: + out = wohngeld_params["abzug_stufen"][abzug_stufen] + return out + + +@policy_function(end_date="2006-12-31", leaf_name="einkommen_vor_freibetrag_m") +def einkommen_vor_freibetrag_m_ohne_elterngeld( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + sozialversicherung__arbeitslosen__betrag_m: float, + einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__renteneinkommen_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + abzugsanteil_vom_einkommen_für_steuern_sozialversicherung: float, +) -> float: + """Sum gross incomes relevant for housing benefit calculation on individual level + and deducting individual housing benefit subtractions. + Reference: § 14 WoGG + + Parameters + ---------- + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See :func:`_eink_selbst`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m`. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. + sozialversicherung__arbeitslosen__betrag_m + See :func:`sozialversicherung__arbeitslosen__betrag_m`. + einkommensteuer__einkünfte__sonstige__betrag_m + See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__renteneinkommen_m + See :func:`einkommensteuer__renteneinkommen_m`. + unterhalt__tatsächlich_erhaltener_betrag_m + See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m `. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + abzugsanteil_vom_einkommen_für_steuern_sozialversicherung + See :func:`abzugsanteil_vom_einkommen_für_steuern_sozialversicherung`. + + Returns + ------- + + """ + einkommen = ( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + ) + + transfers = ( + sozialversicherung__arbeitslosen__betrag_m + + einkommensteuer__renteneinkommen_m + + unterhalt__tatsächlich_erhaltener_betrag_m + + unterhaltsvorschuss__betrag_m + ) + + eink_ind = einkommen + transfers + einkommensteuer__einkünfte__sonstige__betrag_m + out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind + return out + + +@policy_function(start_date="2007-01-01", leaf_name="einkommen_vor_freibetrag_m") +def einkommen_vor_freibetrag_m_mit_elterngeld( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + sozialversicherung__arbeitslosen__betrag_m: float, + einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__renteneinkommen_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + elterngeld__anrechenbarer_betrag_m: float, + abzugsanteil_vom_einkommen_für_steuern_sozialversicherung: float, +) -> float: + """Sum gross incomes relevant for housing benefit calculation on individual level + and deducting individual housing benefit subtractions. + Reference: § 14 WoGG + + Parameters + ---------- + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + See :func:`_eink_selbst`. + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m`. + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. + sozialversicherung__arbeitslosen__betrag_m + See :func:`sozialversicherung__arbeitslosen__betrag_m`. + einkommensteuer__einkünfte__sonstige__betrag_m + See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__renteneinkommen_m + See :func:`einkommensteuer__renteneinkommen_m`. + unterhalt__tatsächlich_erhaltener_betrag_m + See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m `. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + elterngeld__anrechenbarer_betrag_m + See :func:`elterngeld__anrechenbarer_betrag_m`. + abzugsanteil_vom_einkommen_für_steuern_sozialversicherung + See :func:`abzugsanteil_vom_einkommen_für_steuern_sozialversicherung`. + + Returns + ------- + + """ + # TODO(@MImmesberger): Find out whether unterhalt__tatsächlich_erhaltener_betrag_m and + # unterhaltsvorschuss__betrag_m are counted as income for Wohngeld income check. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/357 + einkommen = ( + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + ) + + transfers = ( + sozialversicherung__arbeitslosen__betrag_m + + einkommensteuer__renteneinkommen_m + + unterhalt__tatsächlich_erhaltener_betrag_m + + unterhaltsvorschuss__betrag_m + + elterngeld__anrechenbarer_betrag_m + ) + + eink_ind = einkommen + transfers + einkommensteuer__einkünfte__sonstige__betrag_m + out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind + return out + + +@policy_function(end_date="2015-12-31", leaf_name="freibetrag_m") +def freibetrag_m_bis_2015( # noqa: PLR0913 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + ist_kind_mit_erwerbseinkommen: bool, + behinderungsgrad: int, + familie__alleinerziehend: bool, + familie__kind: bool, + alleinerziehendenbonus: int, + wohngeld_params: dict, +) -> float: + """Calculate housing benefit subtractions for one individual until 2015. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + ist_kind_mit_erwerbseinkommen + See :func:`ist_kind_mit_erwerbseinkommen`. + behinderungsgrad + See basic input variable :ref:`behinderungsgrad `. + familie__alleinerziehend + See basic input variable :ref:`familie__alleinerziehend `. + familie__kind + See basic input variable :ref:`familie__kind `. + alleinerziehendenbonus + See :func:`alleinerziehendenbonus`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + freibetrag_behinderung_m = piecewise_polynomial( + behinderungsgrad, + thresholds=[*list(wohngeld_params["freibetrag_behinderung"]), np.inf], + rates=np.array([[0] * len(wohngeld_params["freibetrag_behinderung"])]), + intercepts_at_lower_thresholds=[ + yearly_v / 12 + for yearly_v in wohngeld_params["freibetrag_behinderung"].values() + ], + ) + + # Subtraction for single parents and working children + if ist_kind_mit_erwerbseinkommen: + freibetrag_kinder_m = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, + wohngeld_params["freibetrag_kinder_m"]["arbeitendes_kind"], + ) + + elif familie__alleinerziehend and (not familie__kind): + freibetrag_kinder_m = ( + alleinerziehendenbonus + * wohngeld_params["freibetrag_kinder_m"]["alleinerziehend"] + ) + else: + freibetrag_kinder_m = 0.0 + return freibetrag_behinderung_m + freibetrag_kinder_m + + +@policy_function(start_date="2016-01-01", leaf_name="freibetrag_m") +def freibetrag_m_ab_2016( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + ist_kind_mit_erwerbseinkommen: bool, + behinderungsgrad: int, + familie__alleinerziehend: bool, + wohngeld_params: dict, +) -> float: + """Calculate housing benefit subtracting for one individual since 2016. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + ist_kind_mit_erwerbseinkommen + See :func:`ist_kind_mit_erwerbseinkommen`. + behinderungsgrad + See basic input variable :ref:`behinderungsgrad `. + familie__alleinerziehend + See basic input variable :ref:`familie__alleinerziehend `. + familie__kind + See basic input variable :ref:`familie__kind `. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + Returns + ------- + + """ + freibetrag_behinderung_m = ( + wohngeld_params["freibetrag_behinderung"] / 12 if behinderungsgrad > 0 else 0 + ) + + if ist_kind_mit_erwerbseinkommen: + freibetrag_kinder_m = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, + wohngeld_params["freibetrag_kinder_m"]["arbeitendes_kind"], + ) + elif familie__alleinerziehend: + freibetrag_kinder_m = wohngeld_params["freibetrag_kinder_m"]["alleinerziehend"] + else: + freibetrag_kinder_m = 0.0 + + return freibetrag_behinderung_m + freibetrag_kinder_m + + +def einkommen( + anzahl_personen: int, + einkommen_freibetrag: float, + einkommen_vor_freibetrag: float, + params: dict, +) -> float: + """Calculate final income relevant for calculation of housing benefit on household + level. + Reference: § 13 WoGG + + Parameters + ---------- + anzahl_personen + Number of people Wohngeld is being calculated for. + einkommen_freibetrag + Income that is not considered for Wohngeld calculation. + einkommen_vor_freibetrag + Sum of income. + params + See params documentation :ref:`params `. + + Returns + ------- + + """ + eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommen_freibetrag + unteres_eink = params["min_eink"][min(anzahl_personen, max(params["min_eink"]))] + + out = max(eink_nach_abzug_m_hh, unteres_eink) + return float(out) + + +@policy_function() +def ist_kind_mit_erwerbseinkommen( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + kindergeld__grundsätzlich_anspruchsberechtigt: bool, +) -> bool: + """Check if children are working. + + Parameters + ---------- + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m `. + kindergeld__grundsätzlich_anspruchsberechtigt + See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. + + Returns + ------- + + """ + out = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m > 0 + ) and kindergeld__grundsätzlich_anspruchsberechtigt + return out diff --git a/src/_gettsim/transfers/wohngeld/group_by_ids.py b/src/_gettsim/transfers/wohngeld/group_by_ids.py new file mode 100644 index 0000000000..c001e7af24 --- /dev/null +++ b/src/_gettsim/transfers/wohngeld/group_by_ids.py @@ -0,0 +1,38 @@ +"""Wohngeldrechtlicher Teilhaushalt ID.""" + +import numpy + +from _gettsim.aggregation import AggregateByGroupSpec +from _gettsim.function_types import group_by_function + +aggregation_specs = { + "anzahl_personen_wthh": AggregateByGroupSpec( + aggr="count", + ), +} + + +@group_by_function() +def wthh_id( + hh_id: numpy.ndarray[int], + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[bool], + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[ + bool + ], +) -> numpy.ndarray[int]: + """ + Compute the ID of the wohngeldrechtlicher Teilhaushalt. + """ + result = [] + for index, current_hh_id in enumerate(hh_id): + if ( + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] + or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ + index + ] + ): + result.append(current_hh_id * 100 + 1) + else: + result.append(current_hh_id * 100) + + return numpy.asarray(result) diff --git a/src/_gettsim/transfers/wohngeld/miete.py b/src/_gettsim/transfers/wohngeld/miete.py new file mode 100644 index 0000000000..9ca1834bb3 --- /dev/null +++ b/src/_gettsim/transfers/wohngeld/miete.py @@ -0,0 +1,267 @@ +"""Renting costs relevant for housing benefit calculation.""" + +from _gettsim.config import numpy_or_jax as np +from _gettsim.function_types import policy_function + + +@policy_function() +def miete_m_wthh( + miete_m_hh: float, + anzahl_personen_wthh: int, + anzahl_personen_hh: int, +) -> float: + """Rent considered in housing benefit calculation on wohngeldrechtlicher + Teilhaushalt level. + + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften + that passed the priority check against Arbeitslosengeld II / Bürgergeld. + + Parameters + ---------- + miete_m_hh + See :func:`miete_m_hh`. + anzahl_personen_wthh + See :func:`anzahl_personen_wthh`. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + + Returns + ------- + + """ + return miete_m_hh * (anzahl_personen_wthh / anzahl_personen_hh) + + +@policy_function() +def miete_m_bg( + miete_m_hh: float, + arbeitslosengeld_2__anzahl_personen_bg: int, + anzahl_personen_hh: int, +) -> float: + """Rent considered in housing benefit calculation on BG level. + + This target is used for the priority check calculation against Arbeitslosengeld II / + Bürgergeld on the Bedarfsgemeinschaft level. + + Parameters + ---------- + miete_m_hh + See :func:`miete_m_hh`. + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + + Returns + ------- + + """ + return miete_m_hh * (arbeitslosengeld_2__anzahl_personen_bg / anzahl_personen_hh) + + +@policy_function() +def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: + """Minimum rent considered in Wohngeld calculation. + + Parameters + ---------- + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + Returns + ------- + + """ + out = wohngeld_params["min_miete"][ + min(anzahl_personen_hh, max(wohngeld_params["min_miete"])) + ] + return float(out) + + +@policy_function(end_date="2008-12-31", leaf_name="miete_m_hh") +def miete_m_hh_bis_2008( # noqa: PLR0913 + mietstufe: int, + wohnen__baujahr_immobilie_hh: int, + anzahl_personen_hh: int, + wohnen__bruttokaltmiete_m_hh: float, + min_miete_m_hh: float, + wohngeld_params: dict, +) -> float: + """Rent considered in housing benefit calculation on household level until 2008. + + Parameters + ---------- + mietstufe + See basic input variable :ref:`mietstufe `. + wohnen__baujahr_immobilie_hh + See basic input variable :ref:`wohnen__baujahr_immobilie_hh `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + wohnen__bruttokaltmiete_m_hh + See :func:`wohnen__bruttokaltmiete_m_hh`. + min_miete_m_hh + See :func:`min_miete_m_hh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ + "max_anz_personen_normale_berechnung" + ] + berücks_personen = min(anzahl_personen_hh, max_berücks_personen) + + # Get yearly cutoff in params which is closest and above the construction year + # of the property. We assume that the same cutoffs exist for each household + # size. + params_max_miete = wohngeld_params["max_miete"] + selected_bin_index = np.searchsorted( + np.asarray(sorted(params_max_miete[1])), + wohnen__baujahr_immobilie_hh, + side="left", + ) + + constr_year = list(params_max_miete[1])[selected_bin_index] + + # Calc maximal considered rent + max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) + if anzahl_personen_hh <= max_definierte_hh_größe: + max_miete_m = params_max_miete[anzahl_personen_hh][constr_year][mietstufe] + else: + max_miete_m = params_max_miete[max_definierte_hh_größe][constr_year][ + mietstufe + ] + params_max_miete["jede_weitere_person"][constr_year][mietstufe] * ( + berücks_personen - max_definierte_hh_größe + ) + + out = min(wohnen__bruttokaltmiete_m_hh, max_miete_m) + out = max(out, min_miete_m_hh) + + return out + + +@policy_function(start_date="2009-01-01", leaf_name="miete_m_hh") +def miete_m_hh_ab_2009( # noqa: PLR0912 (see #516) + mietstufe: int, + anzahl_personen_hh: int, + wohnen__bruttokaltmiete_m_hh: float, + min_miete_m_hh: float, + wohngeld_params: dict, +) -> float: + """Rent considered in housing benefit since 2009. + + Parameters + ---------- + mietstufe + See basic input variable :ref:`mietstufe `. + anzahl_personen_hh + See :func:`anzahl_personen_hh`. + wohnen__bruttokaltmiete_m_hh + See :func:`wohnen__bruttokaltmiete_m_hh`. + min_miete_m_hh + See :func:`min_miete_m_hh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + params_max_miete = wohngeld_params["max_miete"] + + max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ + "max_anz_personen_normale_berechnung" + ] + berücks_personen = min(anzahl_personen_hh, max_berücks_personen) + + # Calc maximal considered rent + max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) + if anzahl_personen_hh <= max_definierte_hh_größe: + max_miete_m = params_max_miete[anzahl_personen_hh][mietstufe] + else: + max_miete_m = ( + params_max_miete[max_definierte_hh_größe][mietstufe] + + (berücks_personen - max_definierte_hh_größe) + * params_max_miete["jede_weitere_person"][mietstufe] + ) + + # Calc heating allowance. Until 2020, heating allowance was not + # introduced yet. For this time frame, the respective parameter is + # not part of wohngeld_params and heating allowance is set to 0. + # TODO(@MImmesberger): Apply policy_function decorator. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/711 + if "heizkostenentlastung_m" in wohngeld_params: + max_def_hh_größe_heating = max( + i for i in wohngeld_params["heizkostenentlastung_m"] if isinstance(i, int) + ) + if "heizkostenentlastung_m" in wohngeld_params: + if anzahl_personen_hh <= max_def_hh_größe_heating: + heating_allowance_m = wohngeld_params["heizkostenentlastung_m"][ + anzahl_personen_hh + ] + else: + heating_allowance_m = ( + wohngeld_params["heizkostenentlastung_m"][max_def_hh_größe_heating] + + (berücks_personen - max_def_hh_größe_heating) + * (wohngeld_params["heizkostenentlastung_m"]["jede_weitere_person"]) + ) + else: + heating_allowance_m = 0 + + # Calc heating cost component. Until 2022, heating cost component was not + # introduced yet. For this time frame, the respective parameter is not part + # of params and heating cost component is set to 0. + if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: + max_def_hh_größe_heating = max( + i + for i in wohngeld_params["dauerhafte_heizkostenkomponente_m"] + if isinstance(i, int) + ) + if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: + if anzahl_personen_hh <= max_def_hh_größe_heating: + heating_component_m = wohngeld_params["dauerhafte_heizkostenkomponente_m"][ + anzahl_personen_hh + ] + else: + heating_component_m = ( + wohngeld_params["dauerhafte_heizkostenkomponente_m"][ + max_def_hh_größe_heating + ] + + (berücks_personen - max_def_hh_größe_heating) + * ( + wohngeld_params["dauerhafte_heizkostenkomponente_m"][ + "jede_weitere_person" + ] + ) + ) + else: + heating_component_m = 0 + + # Calc climate component. Until 2022, climate component was not + # introduced yet. For this time frame, the respective parameter is not + # part of params and climate component is set to 0. + if "klimakomponente_m" in wohngeld_params: + max_def_hh_größe_heating = max( + i for i in wohngeld_params["klimakomponente_m"] if isinstance(i, int) + ) + if "klimakomponente_m" in wohngeld_params: + if anzahl_personen_hh <= max_def_hh_größe_heating: + climate_component_m = wohngeld_params["klimakomponente_m"][ + anzahl_personen_hh + ] + else: + climate_component_m = ( + wohngeld_params["klimakomponente_m"][max_def_hh_größe_heating] + + (berücks_personen - max_def_hh_größe_heating) + * (wohngeld_params["klimakomponente_m"]["jede_weitere_person"]) + ) + else: + climate_component_m = 0 + + out = min(wohnen__bruttokaltmiete_m_hh, max_miete_m + climate_component_m) + out = max(out, min_miete_m_hh) + heating_allowance_m + heating_component_m + + return out diff --git a/src/_gettsim/transfers/wohngeld/voraussetzungen.py b/src/_gettsim/transfers/wohngeld/voraussetzungen.py new file mode 100644 index 0000000000..48b88a57cb --- /dev/null +++ b/src/_gettsim/transfers/wohngeld/voraussetzungen.py @@ -0,0 +1,255 @@ +"""Eligibility checks for housing benefits (Wohngeld).""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def grundsätzlich_anspruchsberechtigt_wthh( + mindesteinkommen_erreicht_wthh: bool, + vermögensgrenze_unterschritten_wthh: bool, +) -> bool: + """Check whether the household meets the conditions for Wohngeld. + + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften + that passed the priority check against Arbeitslosengeld II / Bürgergeld. + + Parameters + ---------- + mindesteinkommen_erreicht_wthh + See :func:`mindesteinkommen_erreicht_wthh`. + vermögensgrenze_unterschritten_wthh + See :func:`vermögensgrenze_unterschritten_wthh`. + + Returns + ------- + + """ + return mindesteinkommen_erreicht_wthh and vermögensgrenze_unterschritten_wthh + + +@policy_function() +def grundsätzlich_anspruchsberechtigt_bg( + mindesteinkommen_erreicht_bg: bool, + vermögensgrenze_unterschritten_bg: bool, +) -> bool: + """Check whether the household meets the conditions for Wohngeld. + + This target is used for the priority check calculation against Arbeitslosengeld II / + Bürgergeld on the Bedarfsgemeinschaft level. + + Parameters + ---------- + mindesteinkommen_erreicht_bg + See :func:`mindesteinkommen_erreicht_bg`. + vermögensgrenze_unterschritten_bg + See :func:`vermögensgrenze_unterschritten_bg`. + + Returns + ------- + + """ + return mindesteinkommen_erreicht_bg and vermögensgrenze_unterschritten_bg + + +@policy_function() +def vermögensgrenze_unterschritten_wthh( + vermögen_wthh: float, + anzahl_personen_wthh: int, + wohngeld_params: dict, +) -> bool: + """Wealth is below the eligibility threshold for housing benefits. + + Parameters + ---------- + vermögen_wthh + See :func:`vermögen_wthh `. + anzahl_personen_wthh + See :func:`anzahl_personen_wthh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + + return vermögensprüfung( + vermögen=vermögen_wthh, + anzahl_personen=anzahl_personen_wthh, + params=wohngeld_params, + ) + + +@policy_function() +def vermögensgrenze_unterschritten_bg( + vermögen_bg: float, + arbeitslosengeld_2__anzahl_personen_bg: int, + wohngeld_params: dict, +) -> bool: + """Wealth is below the eligibility threshold for housing benefits. + + Parameters + ---------- + vermögen_bg + See :func:`vermögen_bg `. + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + + return vermögensprüfung( + vermögen=vermögen_bg, + anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, + params=wohngeld_params, + ) + + +@policy_function() +def mindesteinkommen_erreicht_wthh( + arbeitslosengeld_2__regelbedarf_m_wthh: float, + einkommen_für_mindesteinkommen_m_wthh: float, +) -> bool: + """Minimum income requirement for housing benefits is met. + + Note: The Wohngeldstelle can make a discretionary judgment if the applicant does not + meet the Mindesteinkommen: + + 1. Savings may partly cover the Regelbedarf, making the applicant eligible again. + 2. The Wohngeldstelle may reduce the Regelsatz by 20% (but not KdU or private + insurance contributions). + + The allowance for discretionary judgment is ignored here. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_wthh + See :func:`arbeitslosengeld_2__regelbedarf_m_wthh`. + einkommen_für_mindesteinkommen_m_wthh + See :func:`einkommen_für_mindesteinkommen_m_wthh`. + + Returns + ------- + + """ + return ( + einkommen_für_mindesteinkommen_m_wthh >= arbeitslosengeld_2__regelbedarf_m_wthh + ) + + +@policy_function() +def mindesteinkommen_erreicht_bg( + arbeitslosengeld_2__regelbedarf_m_bg: float, + einkommen_für_mindesteinkommen_m_bg: float, +) -> bool: + """Minimum income requirement for housing benefits is met. + + Note: The Wohngeldstelle can make a discretionary judgment if the applicant does not + meet the Mindesteinkommen: + + 1. Savings may partly cover the Regelbedarf, making the applicant eligible again. + 2. The Wohngeldstelle may reduce the Regelsatz by 20% (but not KdU or private + insurance contributions). + + The allowance for discretionary judgment is ignored here. + + Parameters + ---------- + arbeitslosengeld_2__regelbedarf_m_bg + See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. + einkommen_für_mindesteinkommen_m_bg + See :func:`einkommen_für_mindesteinkommen_m_bg`. + + Returns + ------- + + """ + return einkommen_für_mindesteinkommen_m_bg >= arbeitslosengeld_2__regelbedarf_m_bg + + +@policy_function() +def einkommen_für_mindesteinkommen_m( + arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m: float, + unterhalt__tatsächlich_erhaltener_betrag_m: float, + unterhaltsvorschuss__betrag_m: float, + kindergeld__betrag_m: float, + kinderzuschlag__anspruchshöhe_m: float, +) -> float: + """Income for the Mindesteinkommen check. + + Minimum income is defined via VwV 15.01 ff § 15 WoGG. + + According to BMI Erlass of 11.03.2020, Unterhaltsvorschuss, Kinderzuschlag and + Kindergeld count as income for this check. + + Parameters + ---------- + arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m + See :func:`arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m`. + unterhalt__tatsächlich_erhaltener_betrag_m + See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. + unterhaltsvorschuss__betrag_m + See :func:`unterhaltsvorschuss__betrag_m`. + kindergeld__betrag_m + See :func:`kindergeld__betrag_m`. + kinderzuschlag__anspruchshöhe_m + See :func:`kinderzuschlag__anspruchshöhe_m`. + + Returns + ------- + + """ + + return ( + arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m + + unterhalt__tatsächlich_erhaltener_betrag_m + + unterhaltsvorschuss__betrag_m + + kindergeld__betrag_m + + kinderzuschlag__anspruchshöhe_m + ) + + +def vermögensprüfung( + vermögen: float, + anzahl_personen: int, + params: dict, +) -> float: + """Wealth check for housing benefit calculation. + + The payment depends on the wealth of the household and the number of household + members. + + Note: This function is not a direct target in the DAG, but a helper function to + store the code for Wohngeld calculation. + + Parameters + ---------- + vermögen + Relevant wealth of the Wohngeld recipients. + anzahl_personen + Number of people Wohngeld is being calculated for. + params + See params documentation :ref:`params `. + + Returns + ------- + + """ + + if anzahl_personen == 1: + vermögensfreibetrag = params["vermögensgrundfreibetrag"] + else: + vermögensfreibetrag = params["vermögensgrundfreibetrag"] + params[ + "vermögensfreibetrag_pers" + ] * (anzahl_personen - 1) + + if vermögen <= vermögensfreibetrag: + out = True + else: + out = False + + return out diff --git a/src/_gettsim/transfers/wohngeld/wohngeld.py b/src/_gettsim/transfers/wohngeld/wohngeld.py new file mode 100644 index 0000000000..e4db0eae85 --- /dev/null +++ b/src/_gettsim/transfers/wohngeld/wohngeld.py @@ -0,0 +1,210 @@ +"""Housing benefits (Wohngeld). + +Wohngeld has priority over ALG2 if the recipients can cover their needs according to +SGB II when receiving Wohngeld. The priority check follows the following logic: + +1. Calculate Wohngeld on the Bedarfsgemeinschaft level. +2. Check whether the Bedarfsgemeinschaft can cover its own needs (Regelbedarf) with + Wohngeld. If not, the Bedarfsgemeinschaft is eligible for ALG2. +3. Compute Wohngeld again for all individuals in the household that can cover their + own needs with Wohngeld. This is the final Wohngeld amount that is paid out to + the wohngeldrechtlicher Teilhaushalt. + +Note: Because Wohngeld is nonlinear in the number of people in the +wohngeldrechtlicher Teilhaushalt, there may be some individuals that pass the +priority check, but cannot cover their needs with the Wohngeld calculated in point +3. In this sense, this implementation is an approximation of the actual Wohngeld. +""" + +from _gettsim.function_types import policy_function + + +@policy_function() +def betrag_m_wthh( + anspruchshöhe_m_wthh: float, + erwachsene_alle_rentenbezieher_hh: bool, + vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh: bool, + vorrangprüfungen__wohngeld_vorrang_wthh: bool, +) -> float: + """Housing benefit after wealth and priority checks. + + Parameters + ---------- + anspruchshöhe_m_wthh + See :func:`anspruchshöhe_m_wthh`. + erwachsene_alle_rentenbezieher_hh + See :func:`erwachsene_alle_rentenbezieher_hh `. + vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh + See :func:`vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh`. + vorrangprüfungen__wohngeld_vorrang_wthh + See :func:`vorrangprüfungen__wohngeld_vorrang_wthh`. + + Returns + ------- + + """ + # TODO (@MImmesberger): This implementation may be only an approximation of the + # actual rules for individuals that are on the margin of the priority check. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/752 + + # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im + # Alter (SGB XII) is implemented yet. We assume for now that households with only + # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All + # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is + # resolved, remove the `erwachsene_alle_rentenbezieher_hh` condition. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + + if not erwachsene_alle_rentenbezieher_hh and ( + vorrangprüfungen__wohngeld_vorrang_wthh + or vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh + ): + out = anspruchshöhe_m_wthh + else: + out = 0.0 + + return out + + +@policy_function(params_key_for_rounding="wohngeld") +def anspruchshöhe_m_wthh( + anzahl_personen_wthh: int, + einkommen_m_wthh: float, + miete_m_wthh: float, + grundsätzlich_anspruchsberechtigt_wthh: bool, + wohngeld_params: dict, +) -> float: + """Housing benefit after wealth and income check. + + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften in + the household that passed the priority check against Arbeitslosengeld 2. Returns + zero if not eligible. + + Parameters + ---------- + anzahl_personen_wthh + See :func:`anzahl_personen_wthh`. + einkommen_m_wthh + See :func:`einkommen_m_wthh`. + miete_m_wthh + See :func:`miete_m_wthh`. + grundsätzlich_anspruchsberechtigt_wthh + See :func:`grundsätzlich_anspruchsberechtigt_wthh`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + if grundsätzlich_anspruchsberechtigt_wthh: + out = basisformel( + anzahl_personen=anzahl_personen_wthh, + einkommen_m=einkommen_m_wthh, + miete_m=miete_m_wthh, + params=wohngeld_params, + ) + else: + out = 0.0 + + return out + + +@policy_function(params_key_for_rounding="wohngeld") +def anspruchshöhe_m_bg( + arbeitslosengeld_2__anzahl_personen_bg: int, + einkommen_m_bg: float, + miete_m_bg: float, + grundsätzlich_anspruchsberechtigt_bg: bool, + wohngeld_params: dict, +) -> float: + """Housing benefit after wealth and income check. + + This target is used for the priority check calculation against Arbeitslosengeld 2. + + Parameters + ---------- + arbeitslosengeld_2__anzahl_personen_bg + See :func:`arbeitslosengeld_2__anzahl_personen_bg`. + einkommen_m_bg + See :func:`einkommen_m_bg`. + miete_m_bg + See :func:`miete_m_bg`. + grundsätzlich_anspruchsberechtigt_bg + See :func:`grundsätzlich_anspruchsberechtigt_bg`. + wohngeld_params + See params documentation :ref:`wohngeld_params `. + + Returns + ------- + + """ + if grundsätzlich_anspruchsberechtigt_bg: + out = basisformel( + anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, + einkommen_m=einkommen_m_bg, + miete_m=miete_m_bg, + params=wohngeld_params, + ) + else: + out = 0.0 + + return out + + +def basisformel( + anzahl_personen: int, + einkommen_m: float, + miete_m: float, + params: dict, +) -> float: + """Basic formula for housing benefit calculation. + + Note: This function is not a direct target in the DAG, but a helper function to + store the code for Wohngeld calculation. + + Parameters + ---------- + anzahl_personen + Number of people Wohngeld is being calculated for. + einkommen_m + Sum of income of people Wohngeld should be calculated for. + miete_m + Sum of rent. + params + See params documentation :ref:`params `. + + Returns + ------- + + """ + max_berücks_personen = params["bonus_sehr_große_haushalte"][ + "max_anz_personen_normale_berechnung" + ] + + koeffizienten = params["koeffizienten_berechnungsformel"][ + min(anzahl_personen, max_berücks_personen) + ] + out = params["faktor_berechnungsformel"] * ( + miete_m + - ( + ( + koeffizienten["a"] + + (koeffizienten["b"] * miete_m) + + (koeffizienten["c"] * einkommen_m) + ) + * einkommen_m + ) + ) + out = max(out, 0.0) + + if anzahl_personen > max_berücks_personen: + # If more than 12 persons, there is a lump-sum on top. + # The maximum is still capped at `miete_m`. + out = min( + out + + params["bonus_sehr_große_haushalte"]["bonus_jede_weitere_person"] + * (anzahl_personen - max_berücks_personen), + miete_m, + ) + + return out diff --git a/src/_gettsim/typing.py b/src/_gettsim/typing.py new file mode 100644 index 0000000000..0d54408a09 --- /dev/null +++ b/src/_gettsim/typing.py @@ -0,0 +1,185 @@ +from typing import TYPE_CHECKING + +import numpy +import pandas as pd +from pandas.api.types import ( + is_bool_dtype, + is_datetime64_any_dtype, + is_float_dtype, + is_integer_dtype, + is_object_dtype, +) + +from _gettsim.config import numpy_or_jax as np + +if TYPE_CHECKING: + from collections.abc import Mapping + + # Make these available for import from other modules. + from dags.tree.typing import ( # noqa: F401 + GenericCallable, + NestedInputStructureDict, + NestedTargetDict, + QualNameTargetList, + ) + + from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec + from _gettsim.function_types import ( + DerivedAggregationFunction, + DerivedTimeConversionFunction, + GroupByFunction, + PolicyFunction, + ) + + # Specialise from dags' GenericCallable types to GETTSIM's functions. + NestedFunctionDict = Mapping[ + str, + PolicyFunction + | DerivedAggregationFunction + | DerivedTimeConversionFunction + | GroupByFunction + | "NestedFunctionDict", + ] + QualNameFunctionsDict = Mapping[ + str, + PolicyFunction + | DerivedAggregationFunction + | DerivedTimeConversionFunction + | GroupByFunction, + ] + + # Specialise from dags' NestedInputDict to GETTSIM's types. + NestedDataDict = Mapping[str, pd.Series | "NestedDataDict"] + QualNameDataDict = Mapping[str, pd.Series] + NestedArrayDict = Mapping[str, np.ndarray | "NestedArrayDict"] + NestedAggregationSpecDict = Mapping[ + str, AggregateByGroupSpec | AggregateByPIDSpec | "NestedAggregationSpecDict" + ] + QualNameAggregationSpecsDict = Mapping[ + str, AggregateByGroupSpec | AggregateByPIDSpec + ] + + +def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: + """Checks whether used series has already expected internal type. + + Parameters + ---------- + series : pandas.Series or pandas.DataFrame or dict of pandas.Series + Data provided by the user. + internal_type : TypeVar + One of the internal gettsim types. + + Returns + ------- + Bool + + """ + if ( + (internal_type == float) & (is_float_dtype(series)) + or (internal_type == int) & (is_integer_dtype(series)) + or (internal_type == bool) & (is_bool_dtype(series)) + or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) + ): + out = True + else: + out = False + + return out + + +def convert_series_to_internal_type( + series: pd.Series, internal_type: np.dtype +) -> pd.Series: + """Check if data type of series fits to the internal type of gettsim and otherwise + convert data type of series to the internal type of gettsim. + + Parameters + ---------- + series : pd.Series + Some data series. + internal_type : TypeVar + One of the internal gettsim types. + + Returns + ------- + out : adjusted pd.Series + + """ + # Copy input series in out + out = series.copy() + + basic_error_msg = ( + f"Conversion from input type {out.dtype} to {internal_type.__name__} failed." + ) + if is_object_dtype(out): + raise ValueError(basic_error_msg + " Object type is not supported as input.") + else: + # Conversion to float + if internal_type == float: + # Conversion from boolean to float fails + if is_bool_dtype(out): + raise ValueError(basic_error_msg + " This conversion is not supported.") + else: + try: + out = out.astype(float) + except ValueError as e: + raise ValueError(basic_error_msg) from e + + # Conversion to int + elif internal_type == int: + if is_float_dtype(out): + # checking if decimal places are equal to 0, if not return error + if np.array_equal(out, out.astype(np.int64)): + out = out.astype(np.int64) + else: + raise ValueError( + basic_error_msg + " This conversion is only supported if all" + " decimal places of input data are equal to 0." + ) + else: + try: + out = out.astype(np.int64) + except ValueError as e: + raise ValueError(basic_error_msg) from e + + # Conversion to boolean + elif internal_type == bool: + # if input data type is integer + if is_integer_dtype(out): + # check if series consists only of 1 or 0 + if len([v for v in out.unique() if v not in [1, 0]]) == 0: + out = out.astype(bool) + else: + raise ValueError( + basic_error_msg + " This conversion is only supported if" + " input data exclusively contains the values 1 and 0." + ) + # if input data type is float + elif is_float_dtype(out): + # check if series consists only of 1.0 or 0.0 + if len([v for v in out.unique() if v not in [1, 0]]) == 0: + out = out.astype(bool) + else: + raise ValueError( + basic_error_msg + " This conversion is only supported if" + " input data exclusively contains the values 1.0 and 0.0." + ) + + else: + raise ValueError( + basic_error_msg + " Conversion to boolean is only supported for" + " int and float columns." + ) + + # Conversion to DateTime + elif internal_type == np.datetime64: + if not is_datetime64_any_dtype(out): + try: + out = out.astype(np.datetime64) + except ValueError as e: + raise ValueError(basic_error_msg) from e + else: + raise ValueError(f"The internal type {internal_type} is not yet supported.") + + return out diff --git a/src/_gettsim/vectorization.py b/src/_gettsim/vectorization.py index aa118bded5..e5060997f8 100644 --- a/src/_gettsim/vectorization.py +++ b/src/_gettsim/vectorization.py @@ -30,7 +30,7 @@ def make_vectorizable(func: callable, backend: str): # recreate scope of function, add policy_function decorator and array library scope = func.__globals__ - from _gettsim.functions.policy_function import policy_function + from _gettsim.function_types import policy_function scope["policy_function"] = policy_function scope[module] = import_module(module) diff --git a/src/_gettsim/visualization.py b/src/_gettsim/visualization.py index fa2ba23d61..5a2415b3b1 100644 --- a/src/_gettsim/visualization.py +++ b/src/_gettsim/visualization.py @@ -3,7 +3,7 @@ import operator from functools import reduce -import dags +import dags.tree as dt import networkx as nx import numpy import pandas as pd @@ -11,7 +11,7 @@ from pygments import highlight, lexers from pygments.formatters import HtmlFormatter -from _gettsim.combine_functions_in_tree import ( +from _gettsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) from _gettsim.config import DEFAULT_TARGETS @@ -69,7 +69,7 @@ def plot_dag( targets = build_targets_tree(DEFAULT_TARGETS if targets is None else targets) # noqa: F821 if isinstance(columns_overriding_functions, dict): - names_of_columns_overriding_functions = tree_to_dict_with_qualified_name( # noqa: F821 + names_of_columns_overriding_functions = dt.flatten_to_qual_names( columns_overriding_functions ).keys() elif isinstance(columns_overriding_functions, str): @@ -91,7 +91,7 @@ def plot_dag( )[1] # Create parameter input structure. - input_structure = dags.dag_tree.create_input_structure_tree( + input_structure = dt.create_input_structure_tree( functions=functions_not_overridden, targets=None, # None because no functions should be filtered out ) @@ -111,7 +111,7 @@ def plot_dag( params=environment.params, ) - input_structure = dags.dag_tree.create_input_structure_tree( + input_structure = dt.create_input_structure_tree( functions=processed_functions, targets=None, ) @@ -323,8 +323,8 @@ def _add_url_to_dag(dag): for node in dag.nodes: # Retrieve the name from the function because some functions are defined for # time periods and the node name will point to a non-existent function, but the - # function name is a valid target. E.g., wohngeld_eink_freib_m and - # wohngeld_eink_freib_m_bis_2015. + # function name is a valid target. E.g., freibetrag_m and + # freibetrag_m_bis_2015. if "function" in dag.nodes[node]: # Fix for partialed functions. try: diff --git a/src/_gettsim_tests/_policy_test_utils.py b/src/_gettsim_tests/_policy_test_utils.py index aaa552a4bb..c7f0dc7115 100644 --- a/src/_gettsim_tests/_policy_test_utils.py +++ b/src/_gettsim_tests/_policy_test_utils.py @@ -1,158 +1,162 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING +import dags.tree as dt import pandas as pd import yaml -from _gettsim_tests import TEST_DATA_DIR - -_ValueDict = dict[str, list[Any]] +from _gettsim.shared import merge_trees if TYPE_CHECKING: from pathlib import Path + from _gettsim.typing import NestedDataDict, NestedInputStructureDict -class PolicyTestSet: - def __init__(self, policy_name: str, test_data: list[PolicyTestData]): - self.policy_name = policy_name - self.test_data = test_data - - @property - def parametrize_args(self) -> list[tuple[PolicyTestData, str]]: - return [(test, column) for test in self.test_data for column in test.output_df] - def merged_input_df(self) -> pd.DataFrame: - return pd.concat([test.input_df for test in self.test_data], ignore_index=True) +class PolicyTest: + """A class for a single policy test.""" - def merged_output_df(self) -> pd.DataFrame: - return pd.concat([test.output_df for test in self.test_data], ignore_index=True) + def __init__( + self, + input_tree: NestedDataDict, + expected_output_tree: NestedDataDict, + path: Path, + date: datetime.date, + ) -> None: + self.input_tree = input_tree + self.expected_output_tree = expected_output_tree + self.path = path + self.date = date - def filter_test_data( - self, *, test_name: str | None = None, date: datetime.date | str | None = None - ) -> PolicyTestSet: - """ - Filter the test data in this PolicyTestSet. + @property + def target_structure(self) -> NestedInputStructureDict: + flat_target_structure = { + k: None for k in dt.flatten_to_tree_paths(self.expected_output_tree) + } + return dt.unflatten_from_tree_paths(flat_target_structure) - Note that you must pass all arguments of this function by name (and not by - position). + @property + def test_name(self) -> str: + return self.path.stem - Parameters - ---------- - test_name : str | None - If provided, only instances of `PolicyTestData` with this name are included - in the result. If None, no filtering is done on test name. - date : datetime.date | str | None - If provided, only instances of `PolicyTestData` with this date are - included in the result. If None, no filtering is done on date. - Returns - ------- - PolicyTestSet - A new PolicyTestSet with the filtered test data. +def load_policy_test_data(policy_name: str) -> list[PolicyTest]: + from _gettsim_tests import TEST_DATA_DIR - Examples - -------- - >>> data = load_policy_test_data("soli_st") - >>> filtered_by_name = data.filter_test_data(test_name="hh_id_2") + root = TEST_DATA_DIR / policy_name - >>> filtered_by_date = data.filter_test_data(date="1991") - """ + out = [] - if isinstance(date, str): - date = _parse_date(date) + for path_of_test_file in root.glob("**/*.yaml"): + if _is_skipped(path_of_test_file): + continue - filtered_test_data = [ - test - for test in self.test_data - if (test_name is None or test.test_name == test_name) - and (date is None or test.date == date) - ] + with path_of_test_file.open("r", encoding="utf-8") as file: + raw_test_data: NestedDataDict = yaml.safe_load(file) - return PolicyTestSet(self.policy_name, filtered_test_data) + # TODO(@MImmesberger): Remove this before merging this PR. + raw_test_data = get_test_data_as_tree(raw_test_data) + out.extend( + _get_policy_tests_from_raw_test_data( + raw_test_data=raw_test_data, + path_of_test_file=path_of_test_file, + ) + ) -class PolicyTestData: - def __init__( # noqa: PLR0913 - self, - policy_name: str, - test_file: Path, - test_name: str, - date: str, - inputs_provided: _ValueDict, - inputs_assumed: _ValueDict, - outputs: _ValueDict, - ): - self.policy_name = policy_name - self.test_file = test_file - self.test_name = test_name - self.date = _parse_date(date) - self._inputs_provided = inputs_provided - self._inputs_assumed = inputs_assumed - self._outputs = outputs + return out - @property - def input_df(self) -> pd.DataFrame: - return pd.DataFrame.from_dict( - {**self._inputs_provided, **self._inputs_assumed} - ).reset_index(drop=True) - @property - def output_df(self) -> pd.DataFrame: - return pd.DataFrame.from_dict(self._outputs).reset_index(drop=True) +def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: + provided_inputs = test_data["inputs"].get("provided", {}) + assumed_inputs = test_data["inputs"].get("assumed", {}) - def __repr__(self) -> str: - return ( - f"PolicyTestData({self.policy_name}, {self.test_file.name}, " - f"{self.test_name})" + unflattened_dict = {} + unflattened_dict["inputs"] = {} + unflattened_dict["outputs"] = {} + if provided_inputs: + unflattened_dict["inputs"]["provided"] = dt.unflatten_from_qual_names( + provided_inputs ) + else: + unflattened_dict["inputs"]["provided"] = {} + if assumed_inputs: + unflattened_dict["inputs"]["assumed"] = dt.unflatten_from_qual_names( + assumed_inputs + ) + else: + unflattened_dict["inputs"]["assumed"] = {} - def __str__(self) -> str: - relative_path = self.test_file.relative_to(TEST_DATA_DIR) - backslash = "\\" - return f"{str(relative_path).replace(backslash, '/')}" - - -def load_policy_test_data(policy_name: str) -> PolicyTestSet: - from _gettsim_tests import TEST_DATA_DIR - - root = TEST_DATA_DIR / policy_name + unflattened_dict["outputs"] = dt.unflatten_from_qual_names(test_data["outputs"]) - out = [] + return unflattened_dict - for test_file in root.glob("**/*.yaml"): - if _is_skipped(test_file): - continue - with test_file.open("r", encoding="utf-8") as file: - test_data: dict[str, dict] = yaml.safe_load(file) +def _is_skipped(test_file: Path) -> bool: + return "skip" in test_file.stem or "skip" in test_file.parent.name - date = test_file.parent.name - test_name = test_file.stem - inputs: dict[str, dict] = test_data["inputs"] - inputs_provided: _ValueDict = inputs.get("provided", {}) - inputs_assumed: _ValueDict = inputs.get("assumed", {}) - outputs: _ValueDict = test_data["outputs"] +def _get_policy_tests_from_raw_test_data( + raw_test_data: NestedDataDict, path_of_test_file: Path +) -> list[PolicyTest]: + """Get a list of PolicyTest objects from raw test data. + + Args: + raw_test_data: The raw test data. + + Returns: + A list of PolicyTest objects. + """ + inputs: NestedDataDict = raw_test_data.get("inputs", {}) + input_tree: NestedDataDict = dt.unflatten_from_tree_paths( + { + k: pd.Series(v) + for k, v in dt.flatten_to_tree_paths( + merge_trees(inputs.get("provided", {}), inputs.get("assumed", {})) + ).items() + } + ) + + expected_output_tree: NestedDataDict = dt.unflatten_from_tree_paths( + { + k: pd.Series(v) + for k, v in dt.flatten_to_tree_paths( + raw_test_data.get("outputs", {}) + ).items() + } + ) + + date: datetime.date = _parse_date(path_of_test_file.parent.name) + out = [] + if expected_output_tree == {}: out.append( - PolicyTestData( - policy_name=policy_name, - test_file=test_file, - test_name=test_name, + PolicyTest( + input_tree=input_tree, + expected_output_tree={}, + path=path_of_test_file, date=date, - inputs_provided=inputs_provided, - inputs_assumed=inputs_assumed, - outputs=outputs, ) ) + else: + for target_name, output_data in dt.flatten_to_tree_paths( + expected_output_tree + ).items(): + one_expected_output: NestedDataDict = dt.unflatten_from_tree_paths( + {target_name: output_data} + ) + out.append( + PolicyTest( + input_tree=input_tree, + expected_output_tree=one_expected_output, + path=path_of_test_file, + date=date, + ) + ) - return PolicyTestSet(policy_name, out) - - -def _is_skipped(test_file: Path) -> bool: - return "skip" in test_file.stem or "skip" in test_file.parent.name + return out def _parse_date(date: str) -> datetime.date: diff --git a/src/_gettsim_tests/test_aggregate_by_p_id.py b/src/_gettsim_tests/test_aggregate_by_p_id.py index a27f7bac48..b09b7efeef 100644 --- a/src/_gettsim_tests/test_aggregate_by_p_id.py +++ b/src/_gettsim_tests/test_aggregate_by_p_id.py @@ -1,36 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -OVERRIDE_COLS = [] +test_data = load_policy_test_data("aggregate_by_p_id") -data = load_policy_test_data("aggregate_by_p_id") - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_aggregate_by_p_id( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_aggregate_by_p_id(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_arbeitsl_geld.py b/src/_gettsim_tests/test_arbeitsl_geld.py deleted file mode 100644 index 810eb3a042..0000000000 --- a/src/_gettsim_tests/test_arbeitsl_geld.py +++ /dev/null @@ -1,49 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("arbeitsl_geld") - - -def prep_parametrize_data(data): - """Mark test data for 2015 with xfail.""" - for i, args in enumerate(data): - if args[0].date.year == 2015: - data[i] = pytest.param( - *args, - marks=pytest.mark.xfail( - reason="Arbeitslosengeld 2015 calculation is not correct due " - "to change in Grundfreibetrag in July 2015." - ), - ) - return data - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - prep_parametrize_data(data.parametrize_args), - ids=str, -) -def test_arbeitsl_geld( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - # to prevent errors from rounding, allow deviations after the 3rd digit. - assert_series_equal( - result[column], - test_data.output_df[column], - atol=1e-2, - rtol=0, - check_dtype=False, - ) diff --git a/src/_gettsim_tests/test_arbeitsl_geld_2.py b/src/_gettsim_tests/test_arbeitsl_geld_2.py deleted file mode 100644 index b0bd07e23f..0000000000 --- a/src/_gettsim_tests/test_arbeitsl_geld_2.py +++ /dev/null @@ -1,37 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("arbeitsl_geld_2") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_arbeitsl_geld_2( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, - environment=environment, - targets=column, - rounding=True, - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_arbeitslosengeld.py b/src/_gettsim_tests/test_arbeitslosengeld.py new file mode 100644 index 0000000000..b7eab64abb --- /dev/null +++ b/src/_gettsim_tests/test_arbeitslosengeld.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("arbeitslosengeld") + + +@pytest.mark.parametrize("test", test_data) +def test_arbeitslosengeld(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_arbeitslosengeld_2.py b/src/_gettsim_tests/test_arbeitslosengeld_2.py new file mode 100644 index 0000000000..c036a7a364 --- /dev/null +++ b/src/_gettsim_tests/test_arbeitslosengeld_2.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("arbeitslosengeld_2") + + +@pytest.mark.parametrize("test", test_data) +def test_arbeitslosengeld_2(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_benefit_checks.py b/src/_gettsim_tests/test_benefit_checks.py deleted file mode 100644 index f57160d799..0000000000 --- a/src/_gettsim_tests/test_benefit_checks.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("benefit_checks") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_benefit_checks( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_combine_functions.py b/src/_gettsim_tests/test_combine_functions.py new file mode 100644 index 0000000000..016fb3a308 --- /dev/null +++ b/src/_gettsim_tests/test_combine_functions.py @@ -0,0 +1,619 @@ +import inspect + +import pandas as pd +import pytest + +from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from _gettsim.combine_functions import ( + _annotate_aggregation_functions, + _create_aggregate_by_group_functions, + _create_aggregation_functions, + _create_one_aggregate_by_group_func, + _create_one_aggregate_by_p_id_func, + _fail_if_targets_not_in_functions, + _get_name_of_aggregation_source, +) +from _gettsim.function_types import ( + DerivedAggregationFunction, + group_by_function, + policy_function, +) +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim.policy_environment import PolicyEnvironment + + +@pytest.fixture +@policy_function(leaf_name="foo") +def function_with_bool_return(x: bool) -> bool: + return x + + +@pytest.fixture +@policy_function(leaf_name="bar") +def function_with_int_return(x: int) -> int: + return x + + +@pytest.fixture +@policy_function(leaf_name="baz") +def function_with_float_return(x: int) -> float: + return x + + +@pytest.mark.parametrize( + ( + "functions_tree", + "targets_tree", + "data_tree", + "aggregations_specs_from_env", + ), + [ + ( + # Aggregations derived from simple function arguments + {"namespace1": {"f": policy_function(leaf_name="f")(lambda x_hh: x_hh)}}, + {"namespace1": {"f": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "hh_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + {}, + ), + ( + # Aggregations derived from namespaced function arguments + { + "namespace1": { + "f": policy_function(leaf_name="f")( + lambda inputs__x_hh: inputs__x_hh + ) + } + }, + {"namespace1": {"f": None}}, + { + "inputs": {"x": pd.Series([1, 1, 1])}, + "hh_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + {}, + ), + ( + # Aggregations derived from target + {"namespace1": {"f": policy_function(leaf_name="f")(lambda x: x)}}, + {"namespace1": {"f_hh": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "hh_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + {}, + ), + ( + # Aggregations derived from simple environment specification + {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + {"namespace1": {"f": None}}, + { + "namespace1": {"x": pd.Series([1, 1, 1])}, + "hh_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + { + "namespace1": { + "y_hh": AggregateByGroupSpec( + source="x", + aggr="sum", + ), + }, + }, + ), + ( + # Aggregations derived from namespaced environment specification + {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + {"namespace1": {"f": None}}, + { + "inputs": {"x": pd.Series([1, 1, 1])}, + "hh_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + { + "namespace1": { + "y_hh": AggregateByGroupSpec( + source="inputs__x", + aggr="sum", + ), + }, + }, + ), + ], +) +def test_create_aggregate_by_group_functions( + functions_tree, + targets_tree, + data_tree, + aggregations_specs_from_env, +): + environment = PolicyEnvironment( + functions_tree=functions_tree, + aggregation_specs_tree=aggregations_specs_from_env, + ) + compute_taxes_and_transfers( + environment=environment, + data_tree=data_tree, + targets_tree=targets_tree, + ) + + +@pytest.mark.parametrize( + ( + "functions", + "aggregation_functions", + "types_input_variables", + "expected_return_type", + ), + [ + ( + {}, + { + "foo": DerivedAggregationFunction( + function=lambda x: x, + source="x", + aggregation_target="foo", + aggregation_method="count", + ) + }, + {}, + int, + ), + ( + {}, + { + "foo": DerivedAggregationFunction( + function=lambda x: x, + source="x", + aggregation_target="foo", + aggregation_method="sum", + ) + }, + {"x": int}, + int, + ), + ( + {}, + { + "foo": DerivedAggregationFunction( + function=lambda x: x, + source="x", + aggregation_target="foo", + aggregation_method="sum", + ) + }, + {"x": float}, + float, + ), + ( + {}, + { + "foo": DerivedAggregationFunction( + function=lambda x: x, + source="x", + aggregation_target="foo", + aggregation_method="sum", + ) + }, + {"x": bool}, + int, + ), + ( + {"n1__foo": function_with_bool_return}, + { + "n1__foo_hh": DerivedAggregationFunction( + function=function_with_bool_return, + source="n1__foo", + aggregation_target="foo_hh", + aggregation_method="sum", + ) + }, + {}, + int, + ), + ( + {"n1__foo": function_with_float_return}, + { + "n1__foo_hh": DerivedAggregationFunction( + function=function_with_float_return, + source="n1__foo", + aggregation_target="foo_hh", + aggregation_method="sum", + ) + }, + {}, + float, + ), + ( + {"n1__foo": function_with_int_return}, + { + "n1__foo_hh": DerivedAggregationFunction( + function=function_with_int_return, + source="n1__foo", + aggregation_target="foo_hh", + aggregation_method="sum", + ) + }, + {}, + int, + ), + ], +) +def test_annotations_for_aggregation( + functions, + aggregation_functions, + types_input_variables, + expected_return_type, +): + name_of_aggregation_function = next(iter(aggregation_functions.keys())) + annotation_of_aggregation_function = _annotate_aggregation_functions( + functions=functions, + aggregation_functions=aggregation_functions, + types_input_variables=types_input_variables, + )[name_of_aggregation_function].__annotations__["return"] + assert annotation_of_aggregation_function == expected_return_type + + +@pytest.mark.parametrize( + "functions, targets, expected_error_match", + [ + ({"foo": lambda x: x}, {"bar": None}, "('bar',)"), + ({"foo__baz": lambda x: x}, {"foo__bar": None}, "('foo', 'bar')"), + ], +) +def test_fail_if_targets_are_not_among_functions( + functions, targets, expected_error_match +): + with pytest.raises(ValueError) as e: + _fail_if_targets_not_in_functions(functions, targets) + assert expected_error_match in str(e.value) + + +@pytest.mark.parametrize( + ( + "functions", + "aggregations", + "aggregation_type", + "top_level_namespace", + "expected_annotations", + ), + [ + ( + {"foo": function_with_bool_return}, + {"foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + "group", + ["foo"], + {"foo": bool, "return": int}, + ), + ( + {"foo": function_with_float_return}, + {"foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + "group", + ["foo"], + {"foo": float, "return": float}, + ), + ( + {"foo": function_with_int_return}, + { + "foo_hh": AggregateByPIDSpec( + p_id_to_aggregate_by="foreign_id_col", source="foo", aggr="sum" + ) + }, + "p_id", + ["foo"], + {"foo": int, "return": int}, + ), + ], +) +def test_annotations_are_applied_to_derived_functions( + functions, aggregations, aggregation_type, top_level_namespace, expected_annotations +): + """Test that the annotations are applied to the derived functions.""" + result_func = next( + iter( + _create_aggregation_functions( + functions=functions, + aggregation_functions_to_create=aggregations, + aggregation_type=aggregation_type, + top_level_namespace=top_level_namespace, + ).values() + ) + ) + assert result_func.__annotations__ == expected_annotations + + +@pytest.mark.parametrize( + ( + "functions", + "targets", + "data", + "aggregations_from_environment", + "top_level_namespace", + "expected", + ), + [ + ( + {"foo": policy_function(leaf_name="foo")(lambda x_hh: x_hh)}, + {}, + {"x": pd.Series([1])}, + {}, + ["foo", "x"], + ("x_hh"), + ), + ( + {"n1__foo": policy_function(leaf_name="foo")(lambda n2__x_hh: n2__x_hh)}, + {}, + {"n2": {"x": pd.Series([1])}}, + {}, + ["n1", "n2"], + ("n2__x_hh"), + ), + ( + {}, + {"x_hh": None}, + {"x": pd.Series([1])}, + {}, + ["x"], + ("x_hh"), + ), + ( + {"foo": policy_function(leaf_name="foo")(lambda x: x)}, + {}, + {"x": pd.Series([1])}, + {"n1__foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + ["x", "foo", "n1"], + ("n1__foo_hh"), + ), + ], +) +def test_derived_aggregation_functions_are_in_correct_namespace( # noqa: PLR0913 + functions, + targets, + data, + aggregations_from_environment, + top_level_namespace, + expected, +): + """Test that the derived aggregation functions are in the correct namespace. + + The namespace of the derived aggregation functions should be the same as the + namespace of the function that is being aggregated. + """ + result = _create_aggregate_by_group_functions( + functions=functions, + targets=targets, + data=data, + aggregations_from_environment=aggregations_from_environment, + top_level_namespace=top_level_namespace, + ) + assert expected in result + + +def test_create_aggregation_with_derived_soure_column(): + aggregation_spec_dict = { + "foo_hh": AggregateByGroupSpec( + source="bar_bg", + aggr="sum", + ) + } + result = _create_aggregate_by_group_functions( + functions={"bg_id": group_by_function()(lambda x: x)}, + targets={}, + data={"bar": pd.Series([1])}, + aggregations_from_environment=aggregation_spec_dict, + top_level_namespace=["foo", "bar", "bg_id"], + ) + assert "foo_hh" in result + assert "bar_bg" in inspect.signature(result["foo_hh"]).parameters + + +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "group_by_id", + "top_level_namespace", + "expected_arg_names", + ), + [ + ( + "foo_hh", + AggregateByGroupSpec(aggr="count"), + "hh_id", + ["foo", "hh_id"], + ["hh_id"], + ), + ( + "foo_hh", + AggregateByGroupSpec(aggr="sum", source="foo"), + "hh_id", + ["foo", "hh_id"], + ["hh_id", "foo"], + ), + ( + "foo__bar_hh", + AggregateByGroupSpec(aggr="sum", source="bar"), + "hh_id", + ["foo", "hh_id"], + ["hh_id", "foo__bar"], + ), + ], +) +def test_function_arguments_are_namespaced_for_derived_group_funcs( + aggregation_target, + aggregation_spec, + group_by_id, + top_level_namespace, + expected_arg_names, +): + result = _create_one_aggregate_by_group_func( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + group_by_id=group_by_id, + functions={}, + top_level_namespace=top_level_namespace, + ) + assert all( + arg_name in inspect.signature(result).parameters + for arg_name in expected_arg_names + ) + + +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "top_level_namespace", + "expected_arg_names", + ), + [ + ( + "foo", + AggregateByPIDSpec( + aggr="sum", source="bar", p_id_to_aggregate_by="foreign_id_col" + ), + ["foo", "foreign_id_col", "bar"], + ["foreign_id_col", "bar"], + ), + ( + "foo__fünc", + AggregateByPIDSpec( + aggr="sum", source="bär", p_id_to_aggregate_by="foreign_id_col" + ), + ["foo", "foreign_id_col"], + ["foreign_id_col", "foo__bär"], + ), + ], +) +def test_function_arguments_are_namespaced_for_derived_p_id_funcs( + aggregation_target, + aggregation_spec, + top_level_namespace, + expected_arg_names, +): + result = _create_one_aggregate_by_p_id_func( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + functions={}, + top_level_namespace=top_level_namespace, + ) + assert all( + arg_name in inspect.signature(result).parameters + for arg_name in expected_arg_names + ) + + +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "group_by_id", + "top_level_namespace", + "source_col_name", + ), + [ + ( + "foo_hh", + AggregateByGroupSpec(aggr="sum", source="foo"), + "hh_id", + ["foo", "hh_id"], + "foo", + ), + ( + "foo__bar_hh", + AggregateByGroupSpec(aggr="sum", source="bar"), + "hh_id", + ["foo", "hh_id"], + "foo__bar", + ), + ], +) +def test_source_column_name_of_aggregate_by_group_func_is_qualified( + aggregation_target, + aggregation_spec, + group_by_id, + top_level_namespace, + source_col_name, +): + result = _create_one_aggregate_by_group_func( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + group_by_id=group_by_id, + functions={}, + top_level_namespace=top_level_namespace, + ) + assert result.source == source_col_name + + +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "top_level_namespace", + "source_col_name", + ), + [ + ( + "foo", + AggregateByPIDSpec( + aggr="sum", source="bar", p_id_to_aggregate_by="foreign_id_col" + ), + ["foo", "foreign_id_col", "bar"], + "bar", + ), + ( + "foo__fünc", + AggregateByPIDSpec( + aggr="sum", source="bär", p_id_to_aggregate_by="foreign_id_col" + ), + ["foo", "foreign_id_col"], + "foo__bär", + ), + ], +) +def test_source_column_name_of_aggregate_by_p_id_func_is_qualified( + aggregation_target, + aggregation_spec, + top_level_namespace, + source_col_name, +): + result = _create_one_aggregate_by_p_id_func( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + functions={}, + top_level_namespace=top_level_namespace, + ) + assert result.source == source_col_name + + +@pytest.mark.parametrize( + ( + "target_name", + "top_level_namespace", + "expected", + ), + [ + ( + "arbeitslosengeld_2__vermögen_bg", + {"vermögen", "arbeitslosengeld_2"}, + "vermögen", + ), + ( + "arbeitslosengeld_2__vermögen_bg", + {"arbeitslosengeld_2"}, + "arbeitslosengeld_2__vermögen", + ), + ], +) +def test_get_name_of_aggregation_source(target_name, top_level_namespace, expected): + assert ( + _get_name_of_aggregation_source( + target_name=target_name, + top_level_namespace=top_level_namespace, + ) + == expected + ) diff --git a/src/_gettsim_tests/test_combine_functions_in_tree.py b/src/_gettsim_tests/test_combine_functions_in_tree.py deleted file mode 100644 index 98aecb224a..0000000000 --- a/src/_gettsim_tests/test_combine_functions_in_tree.py +++ /dev/null @@ -1,259 +0,0 @@ -import optree -import pandas as pd -import pytest - -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.combine_functions_in_tree import ( - _annotations_for_aggregation, - _create_aggregate_by_group_functions, - _fail_if_targets_not_in_functions_tree, - _get_tree_path_from_source_col_name, -) -from _gettsim.functions.derived_function import DerivedFunction -from _gettsim.functions.policy_function import PolicyFunction, policy_function - - -@pytest.fixture -@policy_function(leaf_name="foo") -def function_with_bool_return(x: bool) -> bool: - return x - - -@pytest.fixture -@policy_function(leaf_name="bar") -def function_with_int_return(x: int) -> int: - return x - - -@pytest.fixture -@policy_function(leaf_name="baz") -def function_with_float_return(x: int) -> float: - return x - - -@pytest.mark.parametrize( - ( - "functions_tree", - "targets_tree", - "data_tree", - "aggregations_specs_from_env", - "expected_tree_structure", - ), - [ - ( - # Aggregations derived from simple function arguments - {"namespace1": {"f": policy_function(leaf_name="f")(lambda x_hh: x_hh)}}, - {"namespace1": {"f": None}}, - { - "namespace1": {"x": pd.Series([1, 1, 1])}, - "groupings": {"hh_id": pd.Series([0, 0, 0])}, - }, - {}, - { - "namespace1": { - "x_hh": None, - }, - }, - ), - ( - # Aggregations derived from namespaced function arguments - { - "namespace1": { - "f": policy_function(leaf_name="f")( - lambda inputs__x_hh: inputs__x_hh - ) - } - }, - {"namespace1": {"f": None}}, - { - "inputs": {"x": pd.Series([1, 1, 1])}, - "groupings": {"hh_id": pd.Series([0, 0, 0])}, - }, - {}, - { - "inputs": { - "x_hh": None, - }, - }, - ), - ( - # Aggregations derived from target - {"namespace1": {"f": policy_function(leaf_name="f")(lambda x: x)}}, - {"namespace1": {"f_hh": None}}, - { - "namespace1": {"x": pd.Series([1, 1, 1])}, - "groupings": {"hh_id": pd.Series([0, 0, 0])}, - }, - {}, - { - "namespace1": { - "f_hh": None, - }, - }, - ), - ( - # Aggregations derived from simple environment specification - {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, - {"namespace1": {"f": None}}, - { - "namespace1": {"x": pd.Series([1, 1, 1])}, - "groupings": {"hh_id": pd.Series([0, 0, 0])}, - }, - { - "namespace1": { - "y_hh": AggregateByGroupSpec( - source_col="x", - aggr="sum", - ), - }, - }, - { - "namespace1": { - "y_hh": None, - }, - }, - ), - ( - # Aggregations derived from namespaced environment specification - {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, - {"namespace1": {"f": None}}, - { - "inputs": {"x": pd.Series([1, 1, 1])}, - "groupings": {"hh_id": pd.Series([0, 0, 0])}, - }, - { - "namespace1": { - "y_hh": AggregateByGroupSpec( - source_col="inputs__x", - aggr="sum", - ), - }, - }, - { - "namespace1": { - "y_hh": None, - }, - }, - ), - ], -) -def test_create_aggregate_by_group_functions( - functions_tree, - targets_tree, - data_tree, - aggregations_specs_from_env, - expected_tree_structure, -): - derived_functions = _create_aggregate_by_group_functions( - functions_tree=functions_tree, - targets_tree=targets_tree, - data_tree=data_tree, - aggregations_tree_provided_by_env=aggregations_specs_from_env, - ) - - # Verify structure - existing_paths = optree.tree_paths(derived_functions) - expected_paths = optree.tree_paths(expected_tree_structure, none_is_leaf=True) - assert set(existing_paths) == set(expected_paths) - - assert all( - isinstance(func, PolicyFunction | DerivedFunction) - for func in optree.tree_leaves(derived_functions) - ) - - -@pytest.mark.parametrize( - "argument_name, current_namespace, expected", - [ - ("foo", ("dir", "module"), ("dir", "module", "foo")), - ("dir__module__foo", ("dir", "module"), ("dir", "module", "foo")), - ], -) -def test_get_tree_path_from_source_col_name(argument_name, current_namespace, expected): - assert ( - _get_tree_path_from_source_col_name(argument_name, current_namespace) - == expected - ) - - -@pytest.mark.parametrize( - ( - "aggregation_method", - "source_col", - "namespace_of_function_to_derive", - "functions_tree", - "types_input_variables", - "expected_return_type", - ), - [ - ("count", "foo", ("",), {}, {}, int), - ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": float}}, float), - ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": int}}, int), - ("sum", "foo", ("namespace",), {}, {"namespace": {"foo": bool}}, int), - ( - "sum", - "foo", - ("namespace",), - {"namespace": {"foo": function_with_bool_return}}, - {}, - int, - ), - ( - "sum", - "foo", - ("namespace",), - {"namespace": {"foo": function_with_int_return}}, - {}, - int, - ), - ( - "sum", - "foo", - ("namespace",), - {"namespace": {"foo": function_with_float_return}}, - {}, - float, - ), - ( - "sum", - "other_namespace__foo", - ("namespace",), - {"other_namespace": {"foo": function_with_bool_return}}, - {}, - int, - ), - ], -) -def test_annotations_for_aggregation( # noqa: PLR0913 - aggregation_method, - source_col, - namespace_of_function_to_derive, - functions_tree, - types_input_variables, - expected_return_type, -): - assert ( - _annotations_for_aggregation( - aggregation_method=aggregation_method, - source_col=source_col, - namespace=namespace_of_function_to_derive, - functions_tree=functions_tree, - types_input_variables=types_input_variables, - )["return"] - == expected_return_type - ) - - -@pytest.mark.parametrize( - "functions, targets, expected_error_match", - [ - ({"foo": lambda x: x}, {"bar": None}, "bar"), - ({"foo": {"baz": lambda x: x}}, {"foo": {"bar": None}}, "foo.bar"), - ], -) -def test_fail_if_targets_are_not_among_functions( - functions, targets, expected_error_match -): - with pytest.raises(ValueError) as e: - _fail_if_targets_not_in_functions_tree(functions, targets) - assert expected_error_match in str(e.value) diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml index 52b509098d..a460664c74 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml @@ -3,107 +3,106 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 37 + - 37 + - 3 + geburtsjahr: + - 1970 + - 1970 + - 2004 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 2004 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 37 - - 37 - - 3 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - alleinerz: - - true + einkommensteuer__gemeinsam_veranlagt: - false - false - eigenbedarf_gedeckt: - false - - false - - false - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - p_id_erziehgeld_empf: + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + erziehungsgeld__p_id_empfänger: - -1 - -1 - 0 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true - erziehungsgeld_anspruch_eltern: - - true - - true - - true - erziehungsgeld_kind_m: - - 0.0 - - 0.0 - - 150.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 2904.0 + - 2904.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anz_ansprüche: - - 1 - - 0 - - 0 - kindergeld_m: - - 154.0 + erziehungsgeld__betrag_m: + - 150.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 1 + kindergeld__anzahl_ansprüche: - 1 - 0 - eink_st_kinderfreib_y: - - 2904.0 - - 2904.0 - - 0.0 - erziehungsgeld_m: - - 150.0 + - 0 + kindergeld__betrag_m: + - 154.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml index ab679c7d42..e5b875ff45 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml @@ -3,103 +3,102 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + alter: + - 37 + - 37 + - 3 + geburtsjahr: + - 1970 + - 1970 + - 2004 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 2004 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 37 - - 37 - - 3 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - p_id_erziehgeld_empf: + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + erziehungsgeld__p_id_empfänger: - -1 - -1 - 0 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true - erziehungsgeld_anspruch_eltern: - - true - - true - - true - erziehungsgeld_kind_m: - - 0.0 - - 0.0 - - 150.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 2904.0 + - 2904.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anz_ansprüche: - - 1 - - 0 - - 0 - kindergeld_m: - - 154.0 + erziehungsgeld__betrag_m: + - 150.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 1 + kindergeld__anzahl_ansprüche: - 1 - 0 - eink_st_kinderfreib_y: - - 2904.0 - - 2904.0 - - 0.0 - erziehungsgeld_m: - - 150.0 + - 0 + kindergeld__betrag_m: + - 154.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml index 3f153a725c..d974eaa206 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml @@ -3,127 +3,126 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 + - -1 + - -1 + alter: + - 37 + - 37 - 3 - geburtstag: + - 3 + geburtsjahr: + - 1970 + - 1970 + - 2004 + - 2004 + geburtsmonat: - 1 - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 2004 - - 2004 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 37 - - 37 - - 3 - - 3 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - - 0 - p_id_erziehgeld_empf: + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + - true + erziehungsgeld__p_id_empfänger: - -1 - -1 - 0 - 0 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true - true - erziehungsgeld_anspruch_eltern: - - true - - true - - true - - true - erziehungsgeld_kind_m: - - 0.0 - - 0.0 - - 150.0 - - 150.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 + - 0 outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 2 + - 2 + - 0 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 5808.0 + - 5808.0 + - 0.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - 1 - kindergeld_anz_ansprüche: - - 2 - - 0 - - 0 - - 0 - kindergeld_m: - - 308.0 + erziehungsgeld__betrag_m: + - 300.0 - 0.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 2 + kindergeld__anzahl_ansprüche: - 2 - 0 - 0 - eink_st_kinderfreib_y: - - 5808.0 - - 5808.0 - - 0.0 - - 0.0 - erziehungsgeld_m: - - 300.0 + - 0 + kindergeld__betrag_m: + - 308.0 - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index b9367a5ee1..24c15f2dc3 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -3,132 +3,131 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 37 + - 37 - 3 - geburtstag: + - 3 + geburtsjahr: + - 1970 + - 1970 + - 2004 + - 2004 + geburtsmonat: - 1 - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 2004 - - 2004 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 37 - - 37 - - 3 - - 3 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - alleinerz: - - false - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - - 1 - p_id_erziehgeld_empf: + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + - true + erziehungsgeld__p_id_empfänger: - -1 - -1 - 0 - 1 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true - true - erziehungsgeld_anspruch_eltern: - - true - - true - - true - - true - erziehungsgeld_kind_m: - - 0.0 - - 0.0 - - 150.0 - - 150.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 + - 1 outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 2 + - 1 + - 0 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 5808.0 + - 2904.0 + - 0.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - -1 - kindergeld_anz_ansprüche: + erziehungsgeld__betrag_m: + - 150.0 + - 150.0 + - 0.0 + - 0.0 + kindergeld__anzahl_ansprüche: - 1 - 1 - 0 - 0 - kindergeld_m: + kindergeld__betrag_m: - 154.0 - 154.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 2 - - 1 - - 0 - - 0 - eink_st_kinderfreib_y: - - 5808.0 - - 2904.0 - - 0.0 - - 0.0 - erziehungsgeld_m: - - 150.0 - - 150.0 - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index f4e6e8b050..6f9f90e049 100644 --- "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -3,87 +3,86 @@ info: note: Overwriting the recipients of Kinderfreibetrag. source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + alter: + - 74 + - 74 + - 10 + geburtsjahr: + - 1933 + - 1933 + - 1997 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1933 - - 1933 - - 1997 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 74 - - 74 - - 10 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - p_id_ehepartner: + familie__p_id_elternteil_1: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_2: - -1 - -1 - -1 - p_id_elternteil_2: - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - p_id_kindergeld_empf: + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_1: - - -1 - - -1 - - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 outputs: - kindergeld_anz_ansprüche: - - 1 - - 0 - - 0 - kindergeld_m: - - 154.0 - - 0.0 - - 0.0 - _eink_st_kinderfreib_anz_ansprüche: + einkommensteuer__anzahl_kinderfreibeträge: - 1 - 1 - 0 - eink_st_kinderfreib_y: + einkommensteuer__kinderfreibetrag_y: - 2904.0 - 2904.0 - 0.0 + kindergeld__anzahl_ansprüche: + - 1 + - 0 + - 0 + kindergeld__betrag_m: + - 154.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml index 3cd5d7c300..aa98bc7032 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml @@ -3,91 +3,90 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 34 + - 34 + - 10 + geburtsjahr: + - 1990 + - 1990 + - 2014 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1990 - - 1990 - - 2014 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 34 - - 34 - - 10 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - alleinerz: - - true + einkommensteuer__gemeinsam_veranlagt: - false - false - eigenbedarf_gedeckt: - false + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - p_id_kindergeld_empf: + - true + kindergeld__p_id_empfänger: - -1 - -1 - 0 - kindergeld_anspruch: - - false - - false - - true outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 4770.0 + - 4770.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anz_ansprüche: + kindergeld__anzahl_ansprüche: - 1 - 0 - 0 - kindergeld_m: + kindergeld__betrag_m: - 250.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 1 - - 1 - - 0 - eink_st_kinderfreib_y: - - 4770.0 - - 4770.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml index 3095df4a6c..4669fc1699 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml @@ -3,87 +3,86 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + alter: + - 34 + - 34 + - 10 + geburtsjahr: + - 1990 + - 1990 + - 2014 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1990 - - 1990 - - 2014 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 34 - - 34 - - 10 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: - - -1 + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - p_id_ehepartner: - -1 - - -1 - - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 4770.0 + - 4770.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anz_ansprüche: + kindergeld__anzahl_ansprüche: - 1 - 0 - 0 - kindergeld_m: + kindergeld__betrag_m: - 250.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 1 - - 1 - - 0 - eink_st_kinderfreib_y: - - 4770.0 - - 4770.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml index 003b89fd9d..c81b8d54ba 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml @@ -3,107 +3,106 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 - - 3 - geburtstag: + - 0 + - -1 + - -1 + alter: + - 34 + - 34 + - 10 + - 10 + geburtsjahr: + - 1990 + - 1990 + - 2014 + - 2014 + geburtsmonat: - 1 - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - 1 - geburtsjahr: - - 1990 - - 1990 - - 2014 - - 2014 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 34 - - 34 - - 10 - - 10 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - p_id_kindergeld_empf: + - true + - true + kindergeld__p_id_empfänger: - -1 - -1 - 0 - 0 - kindergeld_anspruch: - - false - - false - - true - - true outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 2 + - 2 + - 0 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 9540.0 + - 9540.0 + - 0.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - 1 - kindergeld_anz_ansprüche: + kindergeld__anzahl_ansprüche: - 2 - 0 - 0 - 0 - kindergeld_m: + kindergeld__betrag_m: - 500.0 - 0.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 2 - - 2 - - 0 - - 0 - eink_st_kinderfreib_y: - - 9540.0 - - 9540.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index dd4f21af11..5ac962bacb 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -3,107 +3,106 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 - - 3 - geburtstag: + - 0 + - -1 + - -1 + alter: + - 34 + - 34 + - 10 + - 10 + geburtsjahr: + - 1990 + - 1990 + - 2014 + - 2014 + geburtsmonat: - 1 - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - 1 - geburtsjahr: - - 1990 - - 1990 - - 2014 - - 2014 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 34 - - 34 - - 10 - - 10 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - p_id_kindergeld_empf: + - true + - true + kindergeld__p_id_empfänger: - -1 - -1 - 0 - 1 - kindergeld_anspruch: - - false - - false - - true - - true outputs: - p_id_kinderfreib_empfänger_1: + einkommensteuer__anzahl_kinderfreibeträge: + - 2 + - 1 + - 0 + - 0 + einkommensteuer__kinderfreibetrag_y: + - 9540.0 + - 4770.0 + - 0.0 + - 0.0 + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - -1 - kindergeld_anz_ansprüche: + kindergeld__anzahl_ansprüche: - 1 - 1 - 0 - 0 - kindergeld_m: + kindergeld__betrag_m: - 250.0 - 250.0 - 0.0 - 0.0 - _eink_st_kinderfreib_anz_ansprüche: - - 2 - - 1 - - 0 - - 0 - eink_st_kinderfreib_y: - - 9540.0 - - 4770.0 - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 7c7355455e..d7b1e8638b 100644 --- "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -3,87 +3,86 @@ info: note: Overwriting the recipients of Kinderfreibetrag. source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + alter: + - 74 + - 74 + - 10 + geburtsjahr: + - 1950 + - 1950 + - 2014 + geburtsmonat: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 - geburtsjahr: - - 1950 - - 1950 - - 2014 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 74 - - 74 - - 10 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - p_id_ehepartner: + familie__p_id_elternteil_1: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_2: - -1 - -1 - -1 - p_id_elternteil_2: - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - p_id_kindergeld_empf: + einkommensteuer__p_id_kinderfreibetragsempfänger_1: - -1 - -1 - 0 - p_id_kinderfreib_empfänger_1: - - -1 - - -1 - - 0 - p_id_kinderfreib_empfänger_2: + einkommensteuer__p_id_kinderfreibetragsempfänger_2: - -1 - -1 - 1 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 outputs: - kindergeld_anz_ansprüche: - - 1 - - 0 - - 0 - kindergeld_m: - - 250.0 - - 0.0 - - 0.0 - _eink_st_kinderfreib_anz_ansprüche: + einkommensteuer__anzahl_kinderfreibeträge: - 1 - 1 - 0 - eink_st_kinderfreib_y: + einkommensteuer__kinderfreibetrag_y: - 4770.0 - 4770.0 - 0.0 + kindergeld__anzahl_ansprüche: + - 1 + - 0 + - 0 + kindergeld__betrag_m: + - 250.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2010/hh_id_6.yaml deleted file mode 100644 index cc44c41b79..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2010/hh_id_6.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 9 - - 10 - hh_id: - - 6 - - 6 - p_id_elternteil_1: - - -1 - - 9 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_vorj_m: - - 2500.0 - - 0.0 - wohnort_ost: - - false - - false - kind: - - false - - true - arbeitsstunden_w: - - 0.0 - - 0.0 - alter: - - 40 - - 6 - geburtsjahr: - - 1970 - - 2004 - jahr: - - 2010 - - 2010 - assumed: - anwartschaftszeit: - - true - - false - arbeitssuchend: - - true - - false - kindergeld_anspruch: - - false - - true - m_durchg_alg1_bezug: - - 0.0 - - 0.0 - sozialv_pflicht_5j: - - 12.0 - - 0.0 -outputs: - arbeitsl_geld_m: - - 1021.87 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2011/hh_id_7.yaml deleted file mode 100644 index 1c223a40bf..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2011/hh_id_7.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 11 - hh_id: - - 7 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_vorj_m: - - 2300.0 - wohnort_ost: - - false - kind: - - false - arbeitsstunden_w: - - 0.0 - alter: - - 66 - geburtsjahr: - - 1945 - jahr: - - 2011 - assumed: - anwartschaftszeit: - - true - arbeitssuchend: - - true - kindergeld_anspruch: - - false - m_durchg_alg1_bezug: - - 0.0 - sozialv_pflicht_5j: - - 12.0 -outputs: - arbeitsl_geld_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2015/hh_id_5.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2015/hh_id_5.yaml deleted file mode 100644 index 9006b02bed..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2015/hh_id_5.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 7 - - 8 - hh_id: - - 5 - - 5 - p_id_elternteil_1: - - -1 - - 7 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_vorj_m: - - 7000.0 - - 0.0 - wohnort_ost: - - true - - true - kind: - - false - - true - arbeitsstunden_w: - - 0.0 - - 0.0 - alter: - - 30 - - 5 - geburtsjahr: - - 1985 - - 1985 - jahr: - - 2015 - - 2015 - assumed: - anwartschaftszeit: - - true - - false - arbeitssuchend: - - true - - false - kindergeld_anspruch: - - false - - true - m_durchg_alg1_bezug: - - 0.0 - - 0.0 - sozialv_pflicht_5j: - - 12.0 - - 0.0 -outputs: - arbeitsl_geld_m: - - 1719.96 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_1.yaml deleted file mode 100644 index 64e5b22f4d..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_1.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_vorj_m: - - 1000.0 - wohnort_ost: - - true - kind: - - false - arbeitsstunden_w: - - 0.0 - alter: - - 30 - geburtsjahr: - - 1989 - jahr: - - 2019 - assumed: - anwartschaftszeit: - - true - arbeitssuchend: - - true - kindergeld_anspruch: - - false - m_durchg_alg1_bezug: - - 0.0 - sozialv_pflicht_5j: - - 12.0 -outputs: - arbeitsl_geld_m: - - 465.54 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_2.yaml deleted file mode 100644 index 21994c2dba..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_2.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_vorj_m: - - 2000.0 - wohnort_ost: - - true - kind: - - false - arbeitsstunden_w: - - 0.0 - alter: - - 30 - geburtsjahr: - - 1989 - jahr: - - 2019 - assumed: - anwartschaftszeit: - - true - arbeitssuchend: - - true - kindergeld_anspruch: - - false - m_durchg_alg1_bezug: - - 0.0 - sozialv_pflicht_5j: - - 12.0 -outputs: - arbeitsl_geld_m: - - 789.76 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_3.yaml deleted file mode 100644 index c31f7c501c..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_3.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 3 - - 4 - hh_id: - - 3 - - 3 - p_id_elternteil_1: - - 4 - - -1 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_vorj_m: - - 0.0 - - 3000.0 - wohnort_ost: - - false - - false - kind: - - true - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - alter: - - 5 - - 30 - geburtsjahr: - - 2014 - - 1989 - jahr: - - 2019 - - 2019 - assumed: - anwartschaftszeit: - - false - - true - arbeitssuchend: - - false - - true - kindergeld_anspruch: - - true - - false - m_durchg_alg1_bezug: - - 0.0 - - 12.0 - sozialv_pflicht_5j: - - 0.0 - - 0.0 -outputs: - arbeitsl_geld_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_4.yaml deleted file mode 100644 index f72d0676b5..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld/2019/hh_id_4.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -info: - note: >- - old test data - anwartschaftszeit, arbeitssuchend, m_durchg_alg1_bezug and - sozialv_pflicht_5j were added manually - source: none -inputs: - provided: - p_id: - - 5 - - 6 - hh_id: - - 4 - - 4 - p_id_elternteil_1: - - -1 - - 5 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_vorj_m: - - 4000.0 - - 0.0 - wohnort_ost: - - false - - false - kind: - - false - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - alter: - - 30 - - 5 - geburtsjahr: - - 1989 - - 2014 - jahr: - - 2019 - - 2019 - assumed: - anwartschaftszeit: - - true - - false - arbeitssuchend: - - true - - false - kindergeld_anspruch: - - false - - true - m_durchg_alg1_bezug: - - 0.0 - - 0.0 - sozialv_pflicht_5j: - - 12.0 - - 0.0 -outputs: - arbeitsl_geld_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/hh_id_8.yaml deleted file mode 100644 index 4ce48e3cba..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/hh_id_8.yaml +++ /dev/null @@ -1,94 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 8 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 45 - bruttokaltmiete_m_hh: - - 300.0 - heizkosten_m_hh: - - 100.0 - wohnfläche_hh: - - 20.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 600.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 92.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - jahr: - - '2005' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 0.0 - geburtsjahr: - - 1960 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 92.534 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 415.466 - arbeitsl_geld_2_regelsatz_m_bg: - - 338.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 200.0 - arbeitsl_geld_2_m_bg: - - 122.53 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml deleted file mode 100644 index cc35ebb99c..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ /dev/null @@ -1,82 +0,0 @@ ---- -info: - note: >- - Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - bg_id: - - 0 - - 0 - bewohnt_eigentum_hh: - - false - - false - gemeinsam_veranlagt: - - false - - false - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2005 - - 2005 - kind: - - false - - true - alleinerz: - - true - - false - alter: - - 40 - - 10 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 40.0 - - 40.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 378.56 - - 202.80 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 202.80 - arbeitsl_geld_2_erwachsenensatz_m: - - 378.56 - - 0.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 8.75 - - 8.75 - arbeitsl_geld_2_kost_unterk_m: - - 175.0 - - 175.0 - arbeitsl_geld_2_regelbedarf_m: - - 553.56 - - 377.80 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml deleted file mode 100644 index 45b4ff66e0..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ /dev/null @@ -1,79 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two - Bedarfsgemeinschaften. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - bg_id: - - 0 - - 0 - bewohnt_eigentum_hh: - - false - - false - eigenbedarf_gedeckt: - - false - - true - jahr: - - 2005 - - 2005 - kind: - - false - - true - alleinerz: - - true - - false - alter: - - 40 - - 10 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 40.0 - - 40.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 378.56 - - 202.80 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 202.80 - arbeitsl_geld_2_erwachsenensatz_m: - - 378.56 - - 0.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 8.75 - - 8.75 - arbeitsl_geld_2_kost_unterk_m: - - 175.0 - - 175.0 - arbeitsl_geld_2_regelbedarf_m: - - 553.56 - - 377.80 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml deleted file mode 100644 index dbbcf3777d..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ /dev/null @@ -1,102 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_einstandspartner: - - 2 - - -1 - - 0 - p_id_elternteil_1: - - -1 - - 0 - - -1 - p_id_elternteil_2: - - -1 - - 2 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - -1 - bg_id: - - 0 - - 0 - - 0 - bewohnt_eigentum_hh: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - jahr: - - 2005 - - 2005 - - 2005 - kind: - - false - - true - - false - alleinerz: - - false - - false - - false - alter: - - 40 - - 10 - - 45 - bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 304.20 - - 202.80 - - 304.20 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 202.80 - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 304.20 - - 0.0 - - 304.20 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitsl_geld_2_kost_unterk_m: - - 200.0 - - 200.0 - - 200.0 - arbeitsl_geld_2_regelbedarf_m: - - 504.20 - - 402.80 - - 504.20 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml deleted file mode 100644 index f2ff11474c..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ /dev/null @@ -1,102 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two - Bedarfsgemeinschaften. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_einstandspartner: - - 2 - - -1 - - 0 - p_id_elternteil_1: - - -1 - - 0 - - -1 - p_id_elternteil_2: - - -1 - - 2 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - -1 - bg_id: - - 0 - - 1 - - 0 - bewohnt_eigentum_hh: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - true - - false - jahr: - - 2005 - - 2005 - - 2005 - kind: - - false - - true - - false - alleinerz: - - false - - false - - false - alter: - - 40 - - 10 - - 45 - bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 304.20 - - 202.80 - - 304.20 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 202.80 - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 304.20 - - 0.0 - - 304.20 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitsl_geld_2_kost_unterk_m: - - 200.0 - - 200.0 - - 200.0 - arbeitsl_geld_2_regelbedarf_m: - - 504.20 - - 402.80 - - 504.20 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_multiple_children.yaml deleted file mode 100644 index b615a97bbd..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_multiple_children.yaml +++ /dev/null @@ -1,94 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - - 0 - - 0 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - jahr: - - 2005 - - 2005 - - 2005 - - 2005 - - 2005 - kind: - - false - - true - - true - - true - - true - alleinerz: - - true - - false - - false - - false - - false - alter: - - 40 - - 5 - - 10 - - 14 - - 19 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 500.24 - - 202.80 - - 202.80 - - 270.40 - - 270.40 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 202.80 - - 202.80 - - 270.40 - - 270.40 - arbeitsl_geld_2_erwachsenensatz_m: - - 500.24 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_no_adult_in_bg.yaml deleted file mode 100644 index 1cc906bc19..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2005/regelsatz_no_adult_in_bg.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the - adult Regelsatz. - source: Made up. -inputs: - assumed: - p_id: - - 0 - hh_id: - - 0 - p_id_einstandspartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - eigenbedarf_gedeckt: - - false - jahr: - - 2018 - kind: - - true - alleinerz: - - false - alter: - - 17 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 338.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 338.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2006/hh_id_4.yaml deleted file mode 100644 index cbe3d2e5dd..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2006/hh_id_4.yaml +++ /dev/null @@ -1,272 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 5 - - 6 - - 7 - - 8 - - 9 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 - p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 5 - - 5 - - 5 - p_id_elternteil_2: - - -1 - - -1 - - 6 - - 6 - - 6 - p_id_einstandspartner: - - 6 - - 5 - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 5 - - 5 - - 5 - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - alter: - - 33 - - 30 - - 12 - - 10 - - 2 - bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - wohnfläche_hh: - - 110.0 - - 110.0 - - 110.0 - - 110.0 - - 110.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 462.0 - - 462.0 - - 462.0 - - 462.0 - - 462.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2006' - - '2006' - - '2006' - - '2006' - - '2006' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - rentner: - - false - - false - - false - - false - - false - in_ausbildung: - - false - - false - - true - - true - - true - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - _mean_kindergeld_per_child_m: - - 154.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1216.8 - - 1216.8 - - 1216.8 - - 1216.8 - - 1216.8 - arbeitsl_geld_2_kost_unterk_m_bg: - - 925.91 - - 925.91 - - 925.91 - - 925.91 - - 925.91 - arbeitsl_geld_2_m_bg: - - 1680.71 - - 1680.71 - - 1680.71 - - 1680.71 - - 1680.71 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/hh_id_3.yaml deleted file mode 100644 index 7707acd336..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/hh_id_3.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 10 - - 11 - hh_id: - - 3 - - 3 - p_id_ehepartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 10 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 10 - gemeinsam_veranlagt: - - false - - false - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 28 - - 1 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 58.0 - - 58.0 - bewohnt_eigentum_hh: - - false - - false - alleinerz: - - true - - false - bruttolohn_m: - - 1000.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 250.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 1200.0 - - 0.0 - soli_st_y_sn: - - 66.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 200.0 - - 0.0 - kindergeld_m: - - 164.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2009' - - '2009' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - geburtsjahr: - - 1981 - - 2008 - rentner: - - false - - false - in_ausbildung: - - false - - true - arbeitsstunden_w: - - 40.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 260.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 684.5 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 687.96 - - 687.96 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 319.46 - - 319.46 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/kind_20_jahre_in_bg.yaml deleted file mode 100644 index a487a2ab78..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2009/kind_20_jahre_in_bg.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -info: - note: Regression test. - source: '' -inputs: - provided: - p_id: - - 10 - - 11 - hh_id: - - 3 - - 3 - p_id_ehepartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 10 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 10 - gemeinsam_veranlagt: - - false - - false - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 38 - - 20 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 58.0 - - 58.0 - bewohnt_eigentum_hh: - - false - - false - alleinerz: - - true - - false - bruttolohn_m: - - 1000.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 250.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 1200.0 - - 0.0 - soli_st_y_sn: - - 66.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 200.0 - - 0.0 - kindergeld_m: - - 164.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2009' - - '2009' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - geburtsjahr: - - 1981 - - 2008 - rentner: - - false - - false - in_ausbildung: - - false - - true - arbeitsstunden_w: - - 40.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 260.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 684.5 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 673.92 - - 673.92 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 305.42 - - 305.42 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_12.yaml deleted file mode 100644 index 3db677dba0..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_12.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -info: - note: Test if household with all partners being retired does not get ALG 2 - source: '' -inputs: - provided: - p_id: - - 25 - - 26 - hh_id: - - 12 - - 12 - kind: - - false - - false - p_id_ehepartner: - - 26 - - 25 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 26 - - 25 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - alter: - - 70 - - 70 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - true - - true - alleinerz: - - false - - false - bruttolohn_m: - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 300.0 - - 300.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 100.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - kindergeld_m_bg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2013' - - '2013' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - geburtsjahr: - - 1943 - - 1943 - rentner: - - true - - true - in_ausbildung: - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 350.0 - - 250.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 690.0 - - 690.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_13.yaml deleted file mode 100644 index 94989ff6d0..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_13.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -info: - note: Test if household with retired and non-retired adults do get ALG 2 - source: '' -inputs: - provided: - p_id: - - 27 - - 28 - hh_id: - - 13 - - 13 - p_id_ehepartner: - - 28 - - 27 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 28 - - 27 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - alter: - - 40 - - 70 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - true - - true - alleinerz: - - false - - false - bruttolohn_m: - - 300.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 300.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 100.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - kindergeld_m_bg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2013' - - '2013' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - geburtsjahr: - - 1973 - - 1943 - rentner: - - false - - true - in_ausbildung: - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 140.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 210.0 - - 250.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 690.0 - - 690.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 710.0 - - 710.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_14.yaml deleted file mode 100644 index d6750831dd..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_14.yaml +++ /dev/null @@ -1,142 +0,0 @@ ---- -info: - note: >- - Test with wealth (calculated wealth allowance using - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) - source: '' -inputs: - provided: - p_id: - - 35 - - 36 - hh_id: - - 14 - - 14 - p_id_ehepartner: - - 36 - - 35 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 36 - - 35 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - alter: - - 40 - - 40 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - true - - true - alleinerz: - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 100.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 160.0 - - 0.0 - kindergeld_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2013' - - '2013' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 12900.0 - - 0.0 - geburtsjahr: - - 1973 - - 1973 - rentner: - - false - - false - in_ausbildung: - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 690.0 - - 690.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 670.0 - - 670.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 35.0 - - 35.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_15.yaml deleted file mode 100644 index b7de31fef3..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_15.yaml +++ /dev/null @@ -1,139 +0,0 @@ ---- -info: - note: >- - Test with wealth (calculated wealth allowance using - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) - source: '' -inputs: - provided: - p_id: - - 37 - - 38 - hh_id: - - 15 - - 15 - p_id_ehepartner: - - 38 - - 37 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 38 - - 37 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - alter: - - 40 - - 40 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - true - - true - alleinerz: - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 100.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 160.0 - - 0.0 - kindergeld_m_bg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2013' - - '2013' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 14000.0 - - 0.0 - geburtsjahr: - - 1973 - - 1973 - rentner: - - false - - false - in_ausbildung: - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 690.0 - - 690.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_2.yaml deleted file mode 100644 index 80a60d41f4..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2013/hh_id_2.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 15 - - 16 - hh_id: - - 2 - - 2 - p_id_ehepartner: - - 16 - - 15 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 16 - - 15 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - alter: - - 40 - - 40 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - true - - true - alleinerz: - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 100.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 160.0 - - 0.0 - kindergeld_m_bg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - jahr: - - '2013' - - '2013' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - geburtsjahr: - - 1973 - - 1973 - rentner: - - false - - false - in_ausbildung: - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 690.0 - - 690.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 480.0 - - 480.0 - arbeitsl_geld_2_m_bg: - - 670.0 - - 670.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2018/hh_id_9.yaml deleted file mode 100644 index b5238f427c..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2018/hh_id_9.yaml +++ /dev/null @@ -1,266 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 17 - - 18 - - 19 - - 20 - - 21 - hh_id: - - 9 - - 9 - - 9 - - 9 - - 9 - p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 17 - - 17 - - 17 - - 17 - p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 17 - - 17 - - 17 - - 17 - gemeinsam_veranlagt: - - false - - false - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - kind: - - false - - true - - true - - true - - true - alter: - - 30 - - 8 - - 3 - - 8 - - 3 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - alleinerz: - - true - - false - - false - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m: - - 388.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 372.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2018' - - '2018' - - '2018' - - '2018' - - '2018' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1988 - - 2010 - - 2015 - - 2010 - - 2015 - rentner: - - false - - false - - false - - false - - false - in_ausbildung: - - false - - true - - true - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 796.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1687.68 - - 1687.68 - - 1687.68 - - 1687.68 - - 1687.68 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 1021.68 - - 1021.68 - - 1021.68 - - 1021.68 - - 1021.68 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/hh_id_6.yaml deleted file mode 100644 index dc95b28e34..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/hh_id_6.yaml +++ /dev/null @@ -1,180 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 22 - - 23 - - 24 - hh_id: - - 6 - - 6 - - 6 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 22 - - 22 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 22 - - 22 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 30 - - 8 - - 3 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 388.0 - - 388.0 - - 388.0 - kind_unterh_erhalt_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2019' - - '2019' - - '2019' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1989 - - 2011 - - 2016 - rentner: - - false - - false - - false - in_ausbildung: - - false - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1123.64 - - 1123.64 - - 1123.64 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 457.64 - - 457.64 - - 457.64 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_13_14.yaml deleted file mode 100644 index e9dac891b3..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_13_14.yaml +++ /dev/null @@ -1,180 +0,0 @@ ---- -info: - note: Test to check the age cutoff at the age of 14. - source: '' -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 7 - - 7 - - 7 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 30 - - 14 - - 13 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 388.0 - - 388.0 - - 388.0 - kind_unterh_erhalt_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2019' - - '2019' - - '2019' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1989 - - 2005 - - 2006 - rentner: - - false - - false - - false - in_ausbildung: - - false - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1200.64 - - 1200.64 - - 1200.64 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 534.64 - - 534.64 - - 534.64 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_5_6.yaml deleted file mode 100644 index 6a555620d4..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2019/test_age_limits_5_6.yaml +++ /dev/null @@ -1,180 +0,0 @@ ---- -info: - note: Test to check the age cutoff at the age of 6. - source: '' -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 7 - - 7 - - 7 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 30 - - 6 - - 5 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 388.0 - - 388.0 - - 388.0 - kind_unterh_erhalt_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2019' - - '2019' - - '2019' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1989 - - 2013 - - 2014 - rentner: - - false - - false - - false - in_ausbildung: - - false - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1123.64 - - 1123.64 - - 1123.64 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 457.64 - - 457.64 - - 457.64 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_10.yaml deleted file mode 100644 index ed9d6312d6..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_10.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with wealth, calculated wealth allowance with: - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html - source: '' -inputs: - provided: - p_id: - - 29 - - 30 - - 31 - hh_id: - - 10 - - 10 - - 10 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 29 - - 29 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 29 - - 29 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 30 - - 8 - - 3 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - kindergeld_m: - - 388.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2022' - - '2022' - - '2022' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 10000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1992 - - 2014 - - 2019 - rentner: - - false - - false - - false - in_ausbildung: - - false - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1206.64 - - 1206.64 - - 1206.64 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 540.64 - - 540.64 - - 540.64 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_11.yaml deleted file mode 100644 index f74a6ec58b..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2022/hh_id_11.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with wealth, calculated wealth allowance with: - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html - source: '' -inputs: - provided: - p_id: - - 32 - - 33 - - 34 - hh_id: - - 11 - - 11 - - 11 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 32 - - 32 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 32 - - 32 - gemeinsam_veranlagt: - - true - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 30 - - 8 - - 3 - bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 136.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 388.0 - - 388.0 - - 388.0 - kind_unterh_erhalt_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - '2022' - - '2022' - - '2022' - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 13000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1992 - - 2014 - - 2019 - rentner: - - false - - false - - false - in_ausbildung: - - false - - true - - true - arbeitsstunden_w: - - 20.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 240.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1206.64 - - 1206.64 - - 1206.64 - arbeitsl_geld_2_kost_unterk_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_16.yaml deleted file mode 100644 index 9dc62a3477..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_16.yaml +++ /dev/null @@ -1,94 +0,0 @@ ---- -info: - note: Test with old income thresholds - source: https://www.buerger-geld.org/rechner/ergebnis/index.php -inputs: - provided: - p_id: - - 39 - hh_id: - - 16 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 45 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 60.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 1200.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - jahr: - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 40000.0 - geburtsjahr: - - 1978 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 300.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 696.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 502.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 450.0 - arbeitsl_geld_2_m_bg: - - 256.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_19.yaml deleted file mode 100644 index b879a2e590..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_19.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -info: - note: >- - Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test - case after Karenzzeit with cost for living from testcase in 2011. - source: '' -inputs: - provided: - p_id: - - 46 - - 47 - - 48 - hh_id: - - 19 - - 19 - - 19 - p_id_ehepartner: - - 48 - - -1 - - 46 - p_id_elternteil_1: - - -1 - - 46 - - -1 - p_id_elternteil_2: - - -1 - - 48 - - -1 - p_id_einstandspartner: - - 48 - - -1 - - 46 - p_id_kindergeld_empf: - - -1 - - 46 - - -1 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - false - alter: - - 30 - - 3 - - 35 - bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 1200.0 - - 0.0 - - 700.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - - 0.0 - - 140.0 - kindergeld_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld_anz_ansprüche: - - 0 - - 0 - - 0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - - 20.0 - bürgerg_bezug_vorj: - - true - - true - - true - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 300.0 - - 0.0 - - 220.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 696.0 - - 0.0 - - 340.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitsl_geld_2_m_bg: - - 796.86 - - 796.86 - - 796.86 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_25.yaml deleted file mode 100644 index 84707c335e..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/hh_id_25.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -info: - note: >- - Test with old income thresholds with income from self employment, adjusted for - Kindersofortzuschlag. Constructed test based on hh 19. - source: '' -inputs: - provided: - p_id: - - 46 - - 47 - - 48 - hh_id: - - 19 - - 19 - - 19 - p_id_ehepartner: - - 47 - - 46 - - -1 - p_id_elternteil_1: - - -1 - - 46 - - -1 - p_id_elternteil_2: - - -1 - - 48 - - -1 - p_id_einstandspartner: - - 47 - - -1 - - 46 - p_id_kindergeld_empf: - - -1 - - 46 - - -1 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - false - alter: - - 30 - - 3 - - 35 - bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 1000.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 200.0 - - 0.0 - - 700.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - - 0.0 - - 140.0 - kindergeld_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld_anz_ansprüche: - - 0 - - 0 - - 0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - - 20.0 - bürgerg_bezug_vorj: - - true - - true - - true - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 300.0 - - 0.0 - - 220.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 696.0 - - 0.0 - - 340.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitsl_geld_2_m_bg: - - 796.86 - - 796.86 - - 796.86 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_age_limits_17_18.yaml deleted file mode 100644 index 504a67a6e8..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_age_limits_17_18.yaml +++ /dev/null @@ -1,225 +0,0 @@ ---- -info: - note: >- - Test with old income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€). Test cutoff around 18 years. - source: https://www.buerger-geld.org/rechner -inputs: - provided: - p_id: - - 43 - - 44 - - 45 - - 46 - hh_id: - - 18 - - 18 - - 18 - - 18 - p_id_ehepartner: - - 44 - - 43 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 43 - - 43 - p_id_elternteil_2: - - -1 - - -1 - - 44 - - 44 - p_id_einstandspartner: - - 44 - - 43 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 43 - - 43 - gemeinsam_veranlagt: - - false - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - - false - kind: - - false - - false - - true - - true - alter: - - 40 - - 38 - - 18 - - 17 - bruttokaltmiete_m_hh: - - 750.0 - - 750.0 - - 750.0 - - 750.0 - heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - wohnfläche_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 140.0 - - 0.0 - - 0.0 - kindergeld_m_bg: - - 500.0 - - 500.0 - - 500.0 - - 500.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2005 - - 2006 - rentner: - - false - - false - - false - - false - in_ausbildung: - - false - - false - - true - - true - arbeitsstunden_w: - - 0.0 - - 12.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 220.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1764.0 - - 1764.0 - - 1764.0 - - 1764.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 870.0 - - 870.0 - - 870.0 - - 870.0 - arbeitsl_geld_2_m_bg: - - 1794.0 - - 1794.0 - - 1794.0 - - 1794.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_high_wealth.yaml deleted file mode 100644 index 0c16e29b27..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_high_wealth.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with old income thresholds and new Kindergeld, (adjusted for - Kindersofortzuschlag of 20€). Household with wealth. - source: https://www.hartziv.org/rechner/ -inputs: - provided: - p_id: - - 40 - - 41 - - 42 - hh_id: - - 17 - - 17 - - 17 - p_id_ehepartner: - - 41 - - 40 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 40 - p_id_elternteil_2: - - -1 - - -1 - - 41 - p_id_einstandspartner: - - 41 - - 40 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 40 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 38 - - 3 - bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 140.0 - - 0.0 - kindergeld_m_bg: - - 250.0 - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 85000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 12.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 220.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_wealth_below_threshold.yaml deleted file mode 100644 index 8d69c2d894..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-01/test_family_wealth_below_threshold.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with old income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€) - source: https://www.hartziv.org/rechner/ -inputs: - provided: - p_id: - - 43 - - 44 - - 45 - hh_id: - - 18 - - 18 - - 18 - p_id_ehepartner: - - 44 - - 43 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 43 - p_id_elternteil_2: - - -1 - - -1 - - 44 - p_id_einstandspartner: - - 44 - - 43 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 43 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 38 - - 3 - bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 140.0 - - 0.0 - kindergeld_m_bg: - - 250.0 - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 50000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 12.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 220.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitsl_geld_2_m_bg: - - 1400.0 - - 1400.0 - - 1400.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_20.yaml deleted file mode 100644 index 94ae6c0f2c..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_20.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: >- - Test with new income thresholds - source: https://www.buerger-geld.org/rechner/ergebnis/index.php -inputs: - provided: - p_id: - - 49 - hh_id: - - 20 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 45 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 60.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 1200.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - jahr: - - 2023-07 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 40000.0 - geburtsjahr: - - 1978 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 348.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 648.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 502.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 450.0 - arbeitsl_geld_2_m_bg: - - 304.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_21.yaml deleted file mode 100644 index 75a9291fbc..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_21.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with new income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€. https://buergergeld-rechner.org/ - source: '' -inputs: - provided: - p_id: - - 50 - - 51 - - 52 - hh_id: - - 21 - - 21 - - 21 - p_id_ehepartner: - - 51 - - 50 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 50 - p_id_elternteil_2: - - -1 - - -1 - - 51 - p_id_einstandspartner: - - 51 - - 50 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 50 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 38 - - 3 - bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 140.0 - - 0.0 - kindergeld_m_bg: - - 250.0 - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 85000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 12.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 238.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 322.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_22.yaml deleted file mode 100644 index 8433d1d634..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_22.yaml +++ /dev/null @@ -1,182 +0,0 @@ ---- -info: - note: >- - Test with new income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€. - source: https://buergergeld-rechner.org/ -inputs: - provided: - p_id: - - 53 - - 54 - - 55 - hh_id: - - 22 - - 22 - - 22 - p_id_ehepartner: - - 54 - - 53 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 53 - p_id_elternteil_2: - - -1 - - -1 - - 54 - p_id_einstandspartner: - - 54 - - 53 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 53 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 38 - - 3 - bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 140.0 - - 0.0 - kindergeld_m_bg: - - 250.0 - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 50000.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 12.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 238.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - - 322.0 - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitsl_geld_2_m_bg: - - 1418.0 - - 1418.0 - - 1418.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_23.yaml deleted file mode 100644 index bab9e9d95e..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_23.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -info: - note: >- - Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test - case after Karenzzeit with cost for living from 2011 testcase. - source: '' -inputs: - provided: - p_id: - - 56 - - 57 - - 58 - hh_id: - - 23 - - 23 - - 23 - p_id_ehepartner: - - 58 - - -1 - - 56 - p_id_elternteil_1: - - -1 - - 56 - - -1 - p_id_elternteil_2: - - -1 - - 58 - - -1 - p_id_einstandspartner: - - 57 - - -1 - - 56 - p_id_kindergeld_empf: - - -1 - - 56 - - -1 - gemeinsam_veranlagt: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - true - - false - alter: - - 30 - - 3 - - 35 - bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - bruttolohn_m: - - 1200.0 - - 0.0 - - 700.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - - 0.0 - - 140.0 - kindergeld_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld_anz_ansprüche: - - 0 - - 0 - - 0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 20.0 - - 0.0 - - 20.0 - bürgerg_bezug_vorj: - - true - - true - - true - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 348.0 - - 0.0 - - 238.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 648.0 - - 0.0 - - 322.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitsl_geld_2_m_bg: - - 862.86 - - 862.86 - - 862.86 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_24.yaml deleted file mode 100644 index a2c7942c0d..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2023-07/hh_id_24.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: >- - Test with new income thresholds w/ income from self-employment. - source: https://www.buerger-geld.org/rechner/ergebnis/index.php -inputs: - provided: - p_id: - - 60 - hh_id: - - 25 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 42 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 60.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 1200.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 204.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - jahr: - - 2023-07 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 40000.0 - geburtsjahr: - - 1978 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 348.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 648.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 502.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 450.0 - arbeitsl_geld_2_m_bg: - - 304.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_kein_kindergelduebertrag.yaml deleted file mode 100644 index bf9f7396eb..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_kein_kindergelduebertrag.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -info: - note: >- - Household with 2 children, where child income does not exceed needs. Hence, child - stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. - source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - gemeinsam_veranlagt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 40 - - 10 - - 8 - bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2024 - - 2024 - - 2024 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: - bg_id: - - 0 - - 0 - - 0 -outputs: - kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - _diff_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_kindersatz_m_bg: - - 820.0 - - 820.0 - - 820.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1585.68 - - 1585.68 - - 1585.68 - arbeitsl_geld_2_kost_unterk_m_bg: - - 650.0 - - 650.0 - - 650.0 - _mean_kindergeld_per_child_m: - - 250.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_m_bg: - - 1455.68 - - 1455.68 - - 1455.68 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml deleted file mode 100644 index c3b1704003..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml +++ /dev/null @@ -1,200 +0,0 @@ ---- -info: - note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. - source: >- - Made up. -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - gemeinsam_veranlagt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 40 - - 10 - - 8 - bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 450.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2024 - - 2024 - - 2024 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - bg_id: - - 0 - - 0 - - 1 - assumed: {} -outputs: - kindergeldübertrag_m: - - 73.33 - - 0.0 - - 0.0 - _diff_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 73.33 - arbeitsl_geld_2_kindersatz_m_bg: - - 410.0 - - 410.0 - - 410.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1175.68 - - 1175.68 - - 410.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1609.01 - - 1609.01 - - 626.67 - arbeitsl_geld_2_kost_unterk_m_bg: - - 433.33 - - 433.33 - - 216.67 - arbeitsl_geld_2_eink_m: - - 353.33 - - 250.0 - - 700.0 - arbeitsl_geld_2_eink_anr_frei_m: - - 170.0 - - 0.0 - - 0.0 - _mean_kindergeld_per_child_m: - - 250.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_m_bg: - - 1005.68 - - 1005.68 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_voller_kindergelduebertrag.yaml deleted file mode 100644 index 34b6332975..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/alleinerz_voller_kindergelduebertrag.yaml +++ /dev/null @@ -1,200 +0,0 @@ ---- -info: - note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. - source: >- - Made up. -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - gemeinsam_veranlagt: - - false - - false - - false - kind: - - false - - true - - true - alter: - - 40 - - 10 - - 8 - bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - true - - false - - false - bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 800.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2024 - - 2024 - - 2024 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - rentner: - - false - - false - - false - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: - bg_id: - - 0 - - 0 - - 1 -outputs: - kindergeldübertrag_m: - - 250.0 - - 0.0 - - 0.0 - _diff_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 250.0 - arbeitsl_geld_2_kindersatz_m_bg: - - 410.0 - - 410.0 - - 410.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 1175.68 - - 1175.68 - - 410.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1609.01 - - 1609.01 - - 626.67 - arbeitsl_geld_2_kost_unterk_m_bg: - - 433.33 - - 433.33 - - 216.67 - arbeitsl_geld_2_eink_m: - - 530.0 - - 250.0 - - 1050.0 - arbeitsl_geld_2_eink_anr_frei_m: - - 170.0 - - 0.0 - - 0.0 - _mean_kindergeld_per_child_m: - - 250.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_m_bg: - - 829.01 - - 829.01 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_one_bg_in_hh.yaml deleted file mode 100644 index 1356b0ae1a..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_one_bg_in_hh.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 0 - - 0 - - 0 - p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - gemeinsam_veranlagt: - - false - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - - false - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - kind: - - false - - false - - true - - true - alter: - - 30 - - 30 - - 10 - - 10 - bruttokaltmiete_m_hh: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - provided: {} -outputs: - bg_id: - - 0 - - 0 - - 0 - - 0 - bruttokaltmiete_m_bg: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - heizkosten_m_bg: - - 100.0 - - 100.0 - - 100.0 - - 100.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml deleted file mode 100644 index 2e92aeaaa7..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ /dev/null @@ -1,85 +0,0 @@ ---- -info: - note: >- - Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - bg_id: - - 0 - - 0 - bürgerg_bezug_vorj: - - false - - false - bewohnt_eigentum_hh: - - false - - false - gemeinsam_veranlagt: - - false - - false - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2005 - - 2005 - kind: - - false - - true - alleinerz: - - true - - false - alter: - - 40 - - 10 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 40.0 - - 40.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 630.56 - - 410.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 410.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 630.56 - - 0.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 8.75 - - 8.75 - arbeitsl_geld_2_kost_unterk_m: - - 175.0 - - 175.0 - arbeitsl_geld_2_regelbedarf_m: - - 805.56 - - 585.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml deleted file mode 100644 index b1124442ed..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ /dev/null @@ -1,82 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two - Bedarfsgemeinschaften. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - bg_id: - - 0 - - 1 - bewohnt_eigentum_hh: - - false - - false - bürgerg_bezug_vorj: - - false - - false - eigenbedarf_gedeckt: - - false - - true - jahr: - - 2005 - - 2005 - kind: - - false - - true - alleinerz: - - true - - false - alter: - - 40 - - 10 - bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - wohnfläche_hh: - - 40.0 - - 40.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 630.56 - - 410.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 410.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 630.56 - - 0.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 10.0 - - 10.0 - arbeitsl_geld_2_kost_unterk_m: - - 350.0 - - 350.0 - arbeitsl_geld_2_regelbedarf_m: - - 980.56 - - 760.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml deleted file mode 100644 index 87661482c5..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ /dev/null @@ -1,106 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_einstandspartner: - - 2 - - -1 - - 0 - p_id_elternteil_1: - - -1 - - 0 - - -1 - p_id_elternteil_2: - - -1 - - 2 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - -1 - bg_id: - - 0 - - 0 - - 0 - bewohnt_eigentum_hh: - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - false - - false - jahr: - - 2005 - - 2005 - - 2005 - kind: - - false - - true - - false - alleinerz: - - false - - false - - false - alter: - - 40 - - 10 - - 45 - bruttokaltmiete_m_hh: - - 900.0 - - 900.0 - - 900.0 - heizkosten_m_hh: - - 150.0 - - 150.0 - - 150.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 506.0 - - 410.0 - - 506.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 410.0 - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 506.0 - - 0.0 - - 506.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitsl_geld_2_kost_unterk_m: - - 350.0 - - 350.0 - - 350.0 - arbeitsl_geld_2_regelbedarf_m: - - 856.0 - - 760.0 - - 856.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml deleted file mode 100644 index d64b977592..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ /dev/null @@ -1,106 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two - Bedarfsgemeinschaften. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 0 - - 0 - p_id_einstandspartner: - - 2 - - -1 - - 0 - p_id_elternteil_1: - - -1 - - 0 - - -1 - p_id_elternteil_2: - - -1 - - 2 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - -1 - bg_id: - - 0 - - 1 - - 0 - bewohnt_eigentum_hh: - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - eigenbedarf_gedeckt: - - false - - true - - false - jahr: - - 2005 - - 2005 - - 2005 - kind: - - false - - true - - false - alleinerz: - - false - - false - - false - alter: - - 40 - - 10 - - 45 - bruttokaltmiete_m_hh: - - 900.0 - - 900.0 - - 900.0 - heizkosten_m_hh: - - 150.0 - - 150.0 - - 150.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 506.0 - - 410.0 - - 506.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 410.0 - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 506.0 - - 0.0 - - 506.0 - _arbeitsl_geld_2_berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - _arbeitsl_geld_2_warmmiete_pro_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitsl_geld_2_kost_unterk_m: - - 350.0 - - 350.0 - - 350.0 - arbeitsl_geld_2_regelbedarf_m: - - 856.0 - - 760.0 - - 856.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_multiple_children.yaml deleted file mode 100644 index 183cf65a69..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_multiple_children.yaml +++ /dev/null @@ -1,100 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. - source: Made up. -inputs: - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 0 - - 0 - - 0 - - 0 - p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 - - 0 - - 0 - bg_id: - - 0 - - 0 - - 0 - - 0 - - 0 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - jahr: - - 2024 - - 2024 - - 2024 - - 2024 - - 2024 - kind: - - false - - true - - true - - true - - true - alleinerz: - - true - - false - - false - - false - - false - alter: - - 40 - - 5 - - 10 - - 14 - - 19 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 833.24 - - 377.0 - - 410.0 - - 491.0 - - 471.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - - 377.0 - - 410.0 - - 491.0 - - 471.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 833.24 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_no_adult_in_bg.yaml deleted file mode 100644 index 4e172f39b8..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/regelsatz_no_adult_in_bg.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the - adult Regelsatz. - source: Made up. -inputs: - assumed: - p_id: - - 0 - hh_id: - - 0 - p_id_einstandspartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - eigenbedarf_gedeckt: - - false - jahr: - - 2005 - kind: - - true - alleinerz: - - false - alter: - - 17 - provided: {} -outputs: - arbeitsl_geld_2_regelsatz_m: - - 563.0 - arbeitsl_geld_2_kindersatz_m: - - 0.0 - arbeitsl_geld_2_erwachsenensatz_m: - - 563.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/single_no_income.yaml deleted file mode 100644 index ba8684ab95..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/single_no_income.yaml +++ /dev/null @@ -1,102 +0,0 @@ ---- -info: - note: >- - Test with new Regelbedarf. `arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m` is - wrong. - source: https://www.buerger-geld.org/rechner/ergebnis/index.php -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 45 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 60.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 0.0 - geburtsjahr: - - 1978 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - selbstständig: - - false - wohnort_ost: - - false - anz_kinder_bis_24: - - 0 - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 563.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 450.0 - arbeitsl_geld_2_m_bg: - - 1013.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/skip_single_no_children.yaml deleted file mode 100644 index 152f57836d..0000000000 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/skip_single_no_children.yaml +++ /dev/null @@ -1,102 +0,0 @@ ---- -info: - note: >- - Test with new Regelbedarf. `arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m` is - wrong. - source: https://www.buerger-geld.org/rechner/ergebnis/index.php -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - kind: - - false - alter: - - 45 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 60.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - bruttolohn_m: - - 600.0 - sum_ges_rente_priv_rente_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - kindergeld_m_bg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - elterngeld_m: - - 0.0 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - vermögen_bedürft: - - 0.0 - geburtsjahr: - - 1978 - rentner: - - false - in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - bürgerg_bezug_vorj: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - selbstständig: - - false - wohnort_ost: - - false - ges_pflegev_anz_kinder_bis_24: - - 0 - assumed: {} -outputs: - arbeitsl_geld_2_eink_anr_frei_m: - - 208.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 392.0 - arbeitsl_geld_2_regelsatz_m_bg: - - 563.0 - arbeitsl_geld_2_kost_unterk_m_bg: - - 450.0 - arbeitsl_geld_2_m_bg: - - 621.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml new file mode 100644 index 0000000000..7190c7773c --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml @@ -0,0 +1,58 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + - false + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + - false + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + - 0.0 + provided: + alter: + - 40 + - 6 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1970 + - 2004 + hh_id: + - 6 + - 6 + familie__kind: + - false + - true + p_id: + - 9 + - 10 + familie__p_id_elternteil_1: + - -1 + - 9 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2500.0 + - 0.0 + jahr: + - 2010 + - 2010 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 1021.87 + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml new file mode 100644 index 0000000000..49c1cc8f92 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml @@ -0,0 +1,41 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + provided: + alter: + - 66 + arbeitsstunden_w: + - 0.0 + geburtsjahr: + - 1945 + hh_id: + - 7 + familie__kind: + - false + p_id: + - 11 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2300.0 + jahr: + - 2011 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml new file mode 100644 index 0000000000..e6aa017d23 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml @@ -0,0 +1,59 @@ +--- +info: + source: none + note: Calculation is not correct due to change in Grundfreibetrag in July 2015. +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + - false + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + - false + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + - 0.0 + provided: + alter: + - 30 + - 5 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1985 + - 1985 + hh_id: + - 5 + - 5 + familie__kind: + - false + - true + p_id: + - 7 + - 8 + familie__p_id_elternteil_1: + - -1 + - 7 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - true + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 7000.0 + - 0.0 + jahr: + - 2015 + - 2015 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 1719.96 + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml new file mode 100644 index 0000000000..127e87b7b2 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml @@ -0,0 +1,41 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + provided: + alter: + - 30 + arbeitsstunden_w: + - 0.0 + geburtsjahr: + - 1989 + hh_id: + - 1 + familie__kind: + - false + p_id: + - 1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 1000.0 + jahr: + - 2019 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 465.54 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml new file mode 100644 index 0000000000..5702991531 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml @@ -0,0 +1,41 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + provided: + alter: + - 30 + arbeitsstunden_w: + - 0.0 + geburtsjahr: + - 1989 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 2 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2000.0 + jahr: + - 2019 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 789.76 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml new file mode 100644 index 0000000000..dfc3fa755e --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml @@ -0,0 +1,58 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - true + - false + sozialversicherung__arbeitslosen__anwartschaftszeit: + - false + - true + sozialversicherung__arbeitslosen__arbeitssuchend: + - false + - true + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 12.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 0.0 + - 0.0 + provided: + alter: + - 5 + - 30 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 2014 + - 1989 + hh_id: + - 3 + - 3 + familie__kind: + - true + - false + p_id: + - 3 + - 4 + familie__p_id_elternteil_1: + - 4 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 0.0 + - 3000.0 + jahr: + - 2019 + - 2019 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml new file mode 100644 index 0000000000..79c6ee8fad --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml @@ -0,0 +1,58 @@ +--- +info: + source: none +inputs: + assumed: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + - false + sozialversicherung__arbeitslosen__arbeitssuchend: + - true + - false + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + - 0.0 + provided: + alter: + - 30 + - 5 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1989 + - 2014 + hh_id: + - 4 + - 4 + familie__kind: + - false + - true + p_id: + - 5 + - 6 + familie__p_id_elternteil_1: + - -1 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 4000.0 + - 0.0 + jahr: + - 2019 + - 2019 +outputs: + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml new file mode 100644 index 0000000000..3928a1be79 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml @@ -0,0 +1,96 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 45 + arbeitsstunden_w: + - 20.0 + geburtsjahr: + - 1960 + hh_id: + - 8 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - '2005' + kindergeld__betrag_m_bg: + - 0.0 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 92.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + wohnen__heizkosten_m_hh: + - 100.0 + wohnen__wohnfläche_hh: + - 20.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 92.534 + arbeitslosengeld_2__betrag_m_bg: + - 122.53 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 200.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 415.466 + arbeitslosengeld_2__regelsatz_m_bg: + - 338.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml new file mode 100644 index 0000000000..8c74bd192d --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -0,0 +1,82 @@ +--- +info: + note: >- + Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 10 + hh_id: + - 0 + - 0 + familie__kind: + - false + - true + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + jahr: + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + - 40.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 378.56 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 202.8 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 175.0 + - 175.0 + arbeitslosengeld_2__regelbedarf_m: + - 553.56 + - 377.8 + arbeitslosengeld_2__regelsatz_m: + - 378.56 + - 202.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml new file mode 100644 index 0000000000..519f02a16e --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -0,0 +1,79 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two + Bedarfsgemeinschaften. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - true + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 10 + hh_id: + - 0 + - 0 + familie__kind: + - false + - true + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + jahr: + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + - 40.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 378.56 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 202.8 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 175.0 + - 175.0 + arbeitslosengeld_2__regelbedarf_m: + - 553.56 + - 377.8 + arbeitslosengeld_2__regelsatz_m: + - 378.56 + - 202.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml new file mode 100644 index 0000000000..59eb311c9b --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -0,0 +1,102 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 10 + - 45 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - false + p_id: + - 0 + - 1 + - 2 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 + jahr: + - 2005 + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + - -1 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 304.2 + - 0.0 + - 304.2 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 202.8 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 200.0 + - 200.0 + - 200.0 + arbeitslosengeld_2__regelbedarf_m: + - 504.2 + - 402.8 + - 504.2 + arbeitslosengeld_2__regelsatz_m: + - 304.2 + - 202.8 + - 304.2 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml new file mode 100644 index 0000000000..186d1adafa --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -0,0 +1,102 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two + Bedarfsgemeinschaften. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 1 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - true + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 10 + - 45 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - false + p_id: + - 0 + - 1 + - 2 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 + jahr: + - 2005 + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + - -1 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 304.2 + - 0.0 + - 304.2 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 202.8 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 200.0 + - 200.0 + - 200.0 + arbeitslosengeld_2__regelbedarf_m: + - 504.2 + - 402.8 + - 504.2 + arbeitslosengeld_2__regelsatz_m: + - 304.2 + - 202.8 + - 304.2 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml new file mode 100644 index 0000000000..c3b87f2a44 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml @@ -0,0 +1,94 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + - false + - false + alter: + - 40 + - 5 + - 10 + - 14 + - 19 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - true + - true + - true + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + jahr: + - 2005 + - 2005 + - 2005 + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + - 0 + - 0 + provided: {} +outputs: + arbeitslosengeld_2__erwachsenensatz_m: + - 500.24 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 202.8 + - 202.8 + - 270.4 + - 270.4 + arbeitslosengeld_2__regelsatz_m: + - 500.24 + - 202.8 + - 202.8 + - 270.4 + - 270.4 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml new file mode 100644 index 0000000000..5852df0bd8 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml @@ -0,0 +1,38 @@ +--- +info: + note: >- + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the + adult Regelsatz. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 17 + hh_id: + - 0 + familie__kind: + - true + p_id: + - 0 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + jahr: + - 2018 + kindergeld__p_id_empfänger: + - -1 + provided: {} +outputs: + arbeitslosengeld_2__erwachsenensatz_m: + - 338.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + arbeitslosengeld_2__regelsatz_m: + - 338.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml new file mode 100644 index 0000000000..4da1e27616 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml @@ -0,0 +1,278 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 6 + - 5 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + alter: + - 33 + - 30 + - 12 + - 10 + - 2 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + - true + - true + p_id: + - 5 + - 6 + - 7 + - 8 + - 9 + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + - 5 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + - 6 + - 6 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2006' + - '2006' + - '2006' + - '2006' + - '2006' + kindergeld__betrag_m_bg: + - 462.0 + - 462.0 + - 462.0 + - 462.0 + - 462.0 + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 5 + - 5 + - 5 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + wohnen__heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohnen__wohnfläche_hh: + - 110.0 + - 110.0 + - 110.0 + - 110.0 + - 110.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1680.71 + - 1680.71 + - 1680.71 + - 1680.71 + - 1680.71 + arbeitslosengeld_2__kindergeld_pro_kind_m: + - 154.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 925.91 + - 925.91 + - 925.91 + - 925.91 + - 925.91 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1216.8 + - 1216.8 + - 1216.8 + - 1216.8 + - 1216.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml new file mode 100644 index 0000000000..174b87c5e5 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml @@ -0,0 +1,140 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 28 + - 1 + arbeitsstunden_w: + - 40.0 + - 0.0 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 + familie__kind: + - false + - true + p_id: + - 10 + - 11 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 10 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 1200.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 250.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2009' + - '2009' + kindergeld__betrag_m: + - 164.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 10 + solidaritätszuschlag__betrag_y_sn: + - 66.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 200.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 58.0 + - 58.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 260.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 319.46 + - 319.46 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 684.5 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 687.96 + - 687.96 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml new file mode 100644 index 0000000000..a32aa9b00d --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml @@ -0,0 +1,140 @@ +--- +info: + note: Regression test. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 38 + - 20 + arbeitsstunden_w: + - 40.0 + - 0.0 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 + familie__kind: + - false + - true + p_id: + - 10 + - 11 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 10 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 1200.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 250.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2009' + - '2009' + kindergeld__betrag_m: + - 164.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 10 + solidaritätszuschlag__betrag_y_sn: + - 66.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 200.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 58.0 + - 58.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 260.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 305.42 + - 305.42 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 684.5 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 673.92 + - 673.92 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml new file mode 100644 index 0000000000..368c53ad4c --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml @@ -0,0 +1,140 @@ +--- +info: + note: Test if household with all partners being retired does not get ALG 2 + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 26 + - 25 + familie__alleinerziehend: + - false + - false + alter: + - 70 + - 70 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1943 + - 1943 + hh_id: + - 12 + - 12 + familie__kind: + - false + - false + p_id: + - 25 + - 26 + familie__p_id_ehepartner: + - 26 + - 25 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2013' + - '2013' + kindergeld__betrag_m_bg: + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 50.0 + - 50.0 + sozialversicherung__rente__altersrente__betrag_m: + - 300.0 + - 300.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - true + - true + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 350.0 + - 250.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml new file mode 100644 index 0000000000..b78720f553 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml @@ -0,0 +1,140 @@ +--- +info: + note: Test if household with retired and non-retired adults do get ALG 2 + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 28 + - 27 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 70 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1973 + - 1943 + hh_id: + - 13 + - 13 + familie__kind: + - false + - false + p_id: + - 27 + - 28 + familie__p_id_ehepartner: + - 28 + - 27 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2013' + - '2013' + kindergeld__betrag_m_bg: + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 50.0 + - 50.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 300.0 + sozialversicherung__rente__bezieht_rente: + - false + - true + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - true + - true + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 140.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 710.0 + - 710.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 210.0 + - 250.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml new file mode 100644 index 0000000000..9a6744aca5 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml @@ -0,0 +1,145 @@ +--- +info: + note: >- + Test with wealth (calculated wealth allowance using + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 36 + - 35 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 40 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 14 + - 14 + familie__kind: + - false + - false + p_id: + - 35 + - 36 + familie__p_id_ehepartner: + - 36 + - 35 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 12900.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2013' + - '2013' + kindergeld__betrag_m: + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 160.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - true + - true + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 35.0 + - 35.0 + arbeitslosengeld_2__betrag_m_bg: + - 670.0 + - 670.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml new file mode 100644 index 0000000000..b7c6040534 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml @@ -0,0 +1,142 @@ +--- +info: + note: >- + Test with wealth (calculated wealth allowance using + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 38 + - 37 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 40 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 15 + - 15 + familie__kind: + - false + - false + p_id: + - 37 + - 38 + familie__p_id_ehepartner: + - 38 + - 37 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 14000.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2013' + - '2013' + kindergeld__betrag_m_bg: + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 160.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - true + - true + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml new file mode 100644 index 0000000000..d903f96a7c --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml @@ -0,0 +1,140 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 16 + - 15 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 40 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 + familie__kind: + - false + - false + p_id: + - 15 + - 16 + familie__p_id_ehepartner: + - 16 + - 15 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - '2013' + - '2013' + kindergeld__betrag_m_bg: + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 160.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - true + - true + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 670.0 + - 670.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml new file mode 100644 index 0000000000..b2acf44cce --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml @@ -0,0 +1,272 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + - false + - false + alter: + - 30 + - 8 + - 3 + - 8 + - 3 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1988 + - 2010 + - 2015 + - 2010 + - 2015 + hh_id: + - 9 + - 9 + - 9 + - 9 + - 9 + familie__kind: + - false + - true + - true + - true + - true + p_id: + - 17 + - 18 + - 19 + - 20 + - 21 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 17 + - 17 + - 17 + - 17 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + - false + elterngeld__betrag_m: + - 372.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2018' + - '2018' + - '2018' + - '2018' + - '2018' + kindergeld__betrag_m: + - 388.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - true + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 17 + - 17 + - 17 + - 17 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1021.68 + - 1021.68 + - 1021.68 + - 1021.68 + - 1021.68 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 796.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1687.68 + - 1687.68 + - 1687.68 + - 1687.68 + - 1687.68 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml new file mode 100644 index 0000000000..4457252f08 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml @@ -0,0 +1,184 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 30 + - 8 + - 3 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1989 + - 2011 + - 2016 + hh_id: + - 6 + - 6 + - 6 + familie__kind: + - false + - true + - true + p_id: + - 22 + - 23 + - 24 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 22 + - 22 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2019' + - '2019' + - '2019' + kindergeld__betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 22 + - 22 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 457.64 + - 457.64 + - 457.64 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1123.64 + - 1123.64 + - 1123.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml new file mode 100644 index 0000000000..2c4d08125f --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml @@ -0,0 +1,184 @@ +--- +info: + note: Test to check the age cutoff at the age of 14. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 30 + - 14 + - 13 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1989 + - 2005 + - 2006 + hh_id: + - 7 + - 7 + - 7 + familie__kind: + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2019' + - '2019' + - '2019' + kindergeld__betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 534.64 + - 534.64 + - 534.64 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1200.64 + - 1200.64 + - 1200.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml new file mode 100644 index 0000000000..fc8d5ad0e9 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml @@ -0,0 +1,184 @@ +--- +info: + note: Test to check the age cutoff at the age of 6. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 30 + - 6 + - 5 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1989 + - 2013 + - 2014 + hh_id: + - 7 + - 7 + - 7 + familie__kind: + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2019' + - '2019' + - '2019' + kindergeld__betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 457.64 + - 457.64 + - 457.64 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1123.64 + - 1123.64 + - 1123.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml new file mode 100644 index 0000000000..6a6c1f78c9 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with wealth, calculated wealth allowance with: + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 30 + - 8 + - 3 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1992 + - 2014 + - 2019 + hh_id: + - 10 + - 10 + - 10 + familie__kind: + - false + - true + - true + p_id: + - 29 + - 30 + - 31 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 29 + - 29 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 10000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2022' + - '2022' + - '2022' + kindergeld__betrag_m: + - 388.0 + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 29 + - 29 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 540.64 + - 540.64 + - 540.64 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1206.64 + - 1206.64 + - 1206.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml new file mode 100644 index 0000000000..a83877045f --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with wealth, calculated wealth allowance with: + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 30 + - 8 + - 3 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1992 + - 2014 + - 2019 + hh_id: + - 11 + - 11 + - 11 + familie__kind: + - false + - true + - true + p_id: + - 32 + - 33 + - 34 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 32 + - 32 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 13000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - '2022' + - '2022' + - '2022' + kindergeld__betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 32 + - 32 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1206.64 + - 1206.64 + - 1206.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml new file mode 100644 index 0000000000..f2e5a270a9 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml @@ -0,0 +1,96 @@ +--- +info: + note: Test with old income thresholds + source: https://www.buerger-geld.org/rechner/ergebnis/index.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 45 + arbeitsstunden_w: + - 20.0 + geburtsjahr: + - 1978 + hh_id: + - 16 + familie__kind: + - false + p_id: + - 39 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 40000.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2023-01 + kindergeld__betrag_m_bg: + - 0.0 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 300.0 + arbeitslosengeld_2__betrag_m_bg: + - 256.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 502.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml new file mode 100644 index 0000000000..76401372d2 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml @@ -0,0 +1,190 @@ +--- +info: + note: >- + Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test + case after Karenzzeit with cost for living from testcase in 2011. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 48 + - -1 + - 46 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 3 + - 35 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 20.0 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 19 + - 19 + - 19 + familie__kind: + - false + - true + - false + p_id: + - 46 + - 47 + - 48 + familie__p_id_ehepartner: + - 48 + - -1 + - 46 + familie__p_id_elternteil_1: + - -1 + - 46 + - -1 + familie__p_id_elternteil_2: + - -1 + - 48 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + - 0.0 + - 700.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-01 + - 2023-01 + - 2023-01 + kindergeld__anzahl_ansprüche: + - 0 + - 0 + - 0 + kindergeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 46 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + wohnen__heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnen__wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 300.0 + - 0.0 + - 220.0 + arbeitslosengeld_2__betrag_m_bg: + - 796.86 + - 796.86 + - 796.86 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + - 0.0 + - 340.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml new file mode 100644 index 0000000000..28525f563f --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml @@ -0,0 +1,190 @@ +--- +info: + note: >- + Test with old income thresholds with income from self employment, adjusted for + Kindersofortzuschlag. Constructed test based on hh 19. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 47 + - -1 + - 46 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 3 + - 35 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 20.0 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 19 + - 19 + - 19 + familie__kind: + - false + - true + - false + p_id: + - 46 + - 47 + - 48 + familie__p_id_ehepartner: + - 47 + - 46 + - -1 + familie__p_id_elternteil_1: + - -1 + - 46 + - -1 + familie__p_id_elternteil_2: + - -1 + - 48 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 200.0 + - 0.0 + - 700.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-01 + - 2023-01 + - 2023-01 + kindergeld__anzahl_ansprüche: + - 0 + - 0 + - 0 + kindergeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 46 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + wohnen__heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnen__wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 300.0 + - 0.0 + - 220.0 + arbeitslosengeld_2__betrag_m_bg: + - 796.86 + - 796.86 + - 796.86 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + - 0.0 + - 340.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml new file mode 100644 index 0000000000..037d35a317 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml @@ -0,0 +1,230 @@ +--- +info: + note: >- + Test with old income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€). Test cutoff around 18 years. + source: https://www.buerger-geld.org/rechner +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 44 + - 43 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 38 + - 18 + - 17 + arbeitsstunden_w: + - 0.0 + - 12.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1983 + - 1985 + - 2005 + - 2006 + hh_id: + - 18 + - 18 + - 18 + - 18 + familie__kind: + - false + - false + - true + - true + p_id: + - 43 + - 44 + - 45 + - 46 + familie__p_id_ehepartner: + - 44 + - 43 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 43 + - 43 + familie__p_id_elternteil_2: + - -1 + - -1 + - 44 + - 44 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-01 + - 2023-01 + - 2023-01 + - 2023-01 + kindergeld__betrag_m_bg: + - 500.0 + - 500.0 + - 500.0 + - 500.0 + kindergeld__in_ausbildung: + - false + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 43 + - 43 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 750.0 + - 750.0 + - 750.0 + - 750.0 + wohnen__heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohnen__wohnfläche_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 220.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1794.0 + - 1794.0 + - 1794.0 + - 1794.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 870.0 + - 870.0 + - 870.0 + - 870.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 340.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1764.0 + - 1764.0 + - 1764.0 + - 1764.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml new file mode 100644 index 0000000000..810849735d --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with old income thresholds and new Kindergeld, (adjusted for + Kindersofortzuschlag of 20€). Household with wealth. + source: https://www.hartziv.org/rechner/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 41 + - 40 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 38 + - 3 + arbeitsstunden_w: + - 0.0 + - 12.0 + - 0.0 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 17 + - 17 + - 17 + familie__kind: + - false + - false + - true + p_id: + - 40 + - 41 + - 42 + familie__p_id_ehepartner: + - 41 + - 40 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 40 + familie__p_id_elternteil_2: + - -1 + - -1 + - 41 + vermögen: + - 85000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-01 + - 2023-01 + - 2023-01 + kindergeld__betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 40 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 220.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 340.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml new file mode 100644 index 0000000000..9d3dd58f18 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with old income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. + source: https://www.hartziv.org/rechner/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 44 + - 43 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 38 + - 3 + arbeitsstunden_w: + - 0.0 + - 12.0 + - 0.0 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 18 + - 18 + - 18 + familie__kind: + - false + - false + - true + p_id: + - 43 + - 44 + - 45 + familie__p_id_ehepartner: + - 44 + - 43 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 43 + familie__p_id_elternteil_2: + - -1 + - -1 + - 44 + vermögen: + - 50000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-01 + - 2023-01 + - 2023-01 + kindergeld__betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 43 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 220.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1400.0 + - 1400.0 + - 1400.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 340.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml new file mode 100644 index 0000000000..ff6e314a5e --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml @@ -0,0 +1,96 @@ +--- +info: + note: Test with new income thresholds + source: https://www.buerger-geld.org/rechner/ergebnis/index.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 45 + arbeitsstunden_w: + - 20.0 + geburtsjahr: + - 1978 + hh_id: + - 20 + familie__kind: + - false + p_id: + - 49 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 40000.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2023-07 + kindergeld__betrag_m_bg: + - 0.0 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 348.0 + arbeitslosengeld_2__betrag_m_bg: + - 304.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 502.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml new file mode 100644 index 0000000000..e989fdf7ce --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with new income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. https://buergergeld-rechner.org/ + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 51 + - 50 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 38 + - 3 + arbeitsstunden_w: + - 0.0 + - 12.0 + - 0.0 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 21 + - 21 + - 21 + familie__kind: + - false + - false + - true + p_id: + - 50 + - 51 + - 52 + familie__p_id_ehepartner: + - 51 + - 50 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 50 + familie__p_id_elternteil_2: + - -1 + - -1 + - 51 + vermögen: + - 85000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-07 + - 2023-07 + - 2023-07 + kindergeld__betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 50 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 238.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 322.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml new file mode 100644 index 0000000000..7d5c9b3af6 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml @@ -0,0 +1,186 @@ +--- +info: + note: >- + Test with new income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. + source: https://buergergeld-rechner.org/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 54 + - 53 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 38 + - 3 + arbeitsstunden_w: + - 0.0 + - 12.0 + - 0.0 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 22 + - 22 + - 22 + familie__kind: + - false + - false + - true + p_id: + - 53 + - 54 + - 55 + familie__p_id_ehepartner: + - 54 + - 53 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 53 + familie__p_id_elternteil_2: + - -1 + - -1 + - 54 + vermögen: + - 50000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-07 + - 2023-07 + - 2023-07 + kindergeld__betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 53 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 238.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1418.0 + - 1418.0 + - 1418.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 322.0 + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml new file mode 100644 index 0000000000..4bf73809e3 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml @@ -0,0 +1,190 @@ +--- +info: + note: >- + Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test + case after Karenzzeit with cost for living from 2011 testcase. + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 57 + - -1 + - 56 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 3 + - 35 + arbeitsstunden_w: + - 20.0 + - 0.0 + - 20.0 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 23 + - 23 + - 23 + familie__kind: + - false + - true + - false + p_id: + - 56 + - 57 + - 58 + familie__p_id_ehepartner: + - 58 + - -1 + - 56 + familie__p_id_elternteil_1: + - -1 + - 56 + - -1 + familie__p_id_elternteil_2: + - -1 + - 58 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + - 0.0 + - 700.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2023-07 + - 2023-07 + - 2023-07 + kindergeld__anzahl_ansprüche: + - 0 + - 0 + - 0 + kindergeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 56 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + wohnen__heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnen__wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 348.0 + - 0.0 + - 238.0 + arbeitslosengeld_2__betrag_m_bg: + - 862.86 + - 862.86 + - 862.86 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + - 0.0 + - 322.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml new file mode 100644 index 0000000000..0201a443c0 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml @@ -0,0 +1,96 @@ +--- +info: + note: Test with new income thresholds w/ income from self-employment. + source: https://www.buerger-geld.org/rechner/ergebnis/index.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 42 + arbeitsstunden_w: + - 20.0 + geburtsjahr: + - 1978 + hh_id: + - 25 + familie__kind: + - false + p_id: + - 60 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 40000.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 1200.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2023-07 + kindergeld__betrag_m_bg: + - 0.0 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 204.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 348.0 + arbeitslosengeld_2__betrag_m_bg: + - 304.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 502.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml new file mode 100644 index 0000000000..6d417b3a88 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml @@ -0,0 +1,190 @@ +--- +info: + note: >- + Household with 2 children, where child income does not exceed needs. Hence, child + stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. + source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 0 + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 40 + - 10 + - 8 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2024 + - 2024 + - 2024 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 1455.68 + - 1455.68 + - 1455.68 + arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeld_pro_kind_m: + - 250.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindersatz_m_bg: + - 820.0 + - 820.0 + - 820.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 650.0 + - 650.0 + - 650.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 1585.68 + - 1585.68 + - 1585.68 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml new file mode 100644 index 0000000000..0dc7281d26 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml @@ -0,0 +1,203 @@ +--- +info: + note: >- + Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the + parent via Kindergeldübertrag. + source: Made up. +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 40 + - 10 + - 8 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2024 + - 2024 + - 2024 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 450.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 170.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1005.68 + - 1005.68 + - 0.0 + arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: + - 0.0 + - 0.0 + - 73.33 + arbeitslosengeld_2__kindergeld_pro_kind_m: + - 250.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 73.33 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindersatz_m_bg: + - 410.0 + - 410.0 + - 410.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 433.33 + - 433.33 + - 216.67 + arbeitslosengeld_2__anzurechnendes_einkommen_m: + - 353.33 + - 250.0 + - 700.0 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1609.01 + - 1609.01 + - 626.67 + arbeitslosengeld_2__regelsatz_m_bg: + - 1175.68 + - 1175.68 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml new file mode 100644 index 0000000000..ef172775ee --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml @@ -0,0 +1,204 @@ +--- +info: + note: >- + Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the + parent via Kindergeldübertrag. + via Kindergeldübertrag. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 1 + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 40 + - 10 + - 8 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2024 + - 2024 + - 2024 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 800.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 170.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 829.01 + - 829.01 + - 0.0 + arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: + - 0.0 + - 0.0 + - 250.0 + arbeitslosengeld_2__kindergeld_pro_kind_m: + - 250.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 250.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindersatz_m_bg: + - 410.0 + - 410.0 + - 410.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 433.33 + - 433.33 + - 216.67 + arbeitslosengeld_2__anzurechnendes_einkommen_m: + - 530.0 + - 250.0 + - 1050.0 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1609.01 + - 1609.01 + - 626.67 + arbeitslosengeld_2__regelsatz_m_bg: + - 1175.68 + - 1175.68 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml similarity index 81% rename from src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_multiple_bg_in_hh.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml index a4dc7c99bf..6c9a22589b 100644 --- a/src/_gettsim_tests/test_data/arbeitsl_geld_2/2024/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml @@ -4,16 +4,36 @@ info: source: Made up. inputs: assumed: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - - 4 - - 5 - - 6 - - 7 + - 2 + - -1 + - -1 + - -1 - 8 + - 7 + alter: + - 30 + - 30 + - 30 + - 30 + - 10 + - 10 + - 10 + - 30 + - 30 hh_id: - 0 - 0 @@ -24,17 +44,27 @@ inputs: - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + familie__kind: + - false + - false + - false + - false + - true + - true + - true + - false + - false + p_id: - 0 - - 3 + - 1 - 2 - - -1 - - -1 - - -1 - - 8 + - 3 + - 4 + - 5 + - 6 - 7 - p_id_ehepartner: + - 8 + familie__p_id_ehepartner: - -1 - -1 - -1 @@ -44,7 +74,7 @@ inputs: - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 @@ -54,7 +84,7 @@ inputs: - 0 - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 @@ -64,17 +94,7 @@ inputs: - 1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false @@ -94,27 +114,7 @@ inputs: - 2018 - 2018 - 2018 - kind: - - false - - false - - false - - false - - true - - true - - true - - false - - false - alter: - - 30 - - 30 - - 30 - - 30 - - 10 - - 10 - - 10 - - 30 - - 30 - bruttokaltmiete_m_hh: + wohnen__bruttokaltmiete_m_hh: - 1000.0 - 1000.0 - 1000.0 @@ -124,7 +124,7 @@ inputs: - 1000.0 - 1000.0 - 1000.0 - heizkosten_m_hh: + wohnen__heizkosten_m_hh: - 100.0 - 100.0 - 100.0 @@ -134,7 +134,7 @@ inputs: - 100.0 - 100.0 - 100.0 - wohnfläche_hh: + wohnen__wohnfläche_hh: - 100.0 - 100.0 - 100.0 @@ -146,7 +146,7 @@ inputs: - 100.0 provided: {} outputs: - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 @@ -156,7 +156,7 @@ outputs: - 0 - 200 - 200 - bruttokaltmiete_m_bg: + arbeitslosengeld_2__bruttokaltmiete_m_bg: - 555.56 - 555.56 - 222.22 @@ -166,7 +166,7 @@ outputs: - 555.56 - 222.22 - 222.22 - heizkosten_m_bg: + arbeitslosengeld_2__heizkosten_m_bg: - 55.56 - 55.56 - 22.22 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml new file mode 100644 index 0000000000..534fc138d8 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + alter: + - 30 + - 30 + - 10 + - 10 + hh_id: + - 0 + - 0 + - 0 + - 0 + familie__kind: + - false + - false + - true + - true + p_id: + - 0 + - 1 + - 2 + - 3 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + jahr: + - 2018 + - 2018 + - 2018 + - 2018 + wohnen__bruttokaltmiete_m_hh: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + provided: {} +outputs: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 0 + - 0 + arbeitslosengeld_2__bruttokaltmiete_m_bg: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + arbeitslosengeld_2__heizkosten_m_bg: + - 100.0 + - 100.0 + - 100.0 + - 100.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml new file mode 100644 index 0000000000..4efbc409dd --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -0,0 +1,85 @@ +--- +info: + note: >- + Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__bg_id: + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 10 + hh_id: + - 0 + - 0 + familie__kind: + - false + - true + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + jahr: + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + - 40.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 630.56 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 410.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 175.0 + - 175.0 + arbeitslosengeld_2__regelbedarf_m: + - 805.56 + - 585.0 + arbeitslosengeld_2__regelsatz_m: + - 630.56 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml new file mode 100644 index 0000000000..be249af0c0 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -0,0 +1,82 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two + Bedarfsgemeinschaften. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__bg_id: + - 0 + - 1 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - true + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 10 + hh_id: + - 0 + - 0 + familie__kind: + - false + - true + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + jahr: + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 40.0 + - 40.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 630.56 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 410.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 350.0 + - 350.0 + arbeitslosengeld_2__regelbedarf_m: + - 980.56 + - 760.0 + arbeitslosengeld_2__regelsatz_m: + - 630.56 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml new file mode 100644 index 0000000000..a06d17ed27 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -0,0 +1,106 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 10 + - 45 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - false + p_id: + - 0 + - 1 + - 2 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 + jahr: + - 2005 + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + - -1 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 900.0 + - 900.0 + - 900.0 + wohnen__heizkosten_m_hh: + - 150.0 + - 150.0 + - 150.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 506.0 + - 0.0 + - 506.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 410.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 350.0 + - 350.0 + - 350.0 + arbeitslosengeld_2__regelbedarf_m: + - 856.0 + - 760.0 + - 856.0 + arbeitslosengeld_2__regelsatz_m: + - 506.0 + - 410.0 + - 506.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml new file mode 100644 index 0000000000..5f1a48303e --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -0,0 +1,106 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two + Bedarfsgemeinschaften. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__bg_id: + - 0 + - 1 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - true + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 10 + - 45 + hh_id: + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - false + p_id: + - 0 + - 1 + - 2 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 + jahr: + - 2005 + - 2005 + - 2005 + kindergeld__p_id_empfänger: + - -1 + - 0 + - -1 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 900.0 + - 900.0 + - 900.0 + wohnen__heizkosten_m_hh: + - 150.0 + - 150.0 + - 150.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + provided: {} +outputs: + arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + arbeitslosengeld_2__berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + arbeitslosengeld_2__erwachsenensatz_m: + - 506.0 + - 0.0 + - 506.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 410.0 + - 0.0 + arbeitslosengeld_2__kosten_der_unterkunft_m: + - 350.0 + - 350.0 + - 350.0 + arbeitslosengeld_2__regelbedarf_m: + - 856.0 + - 760.0 + - 856.0 + arbeitslosengeld_2__regelsatz_m: + - 506.0 + - 410.0 + - 506.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml new file mode 100644 index 0000000000..4470ee0c36 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml @@ -0,0 +1,100 @@ +--- +info: + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__bg_id: + - 0 + - 0 + - 0 + - 0 + - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + - false + - false + alter: + - 40 + - 5 + - 10 + - 14 + - 19 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + familie__kind: + - false + - true + - true + - true + - true + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + jahr: + - 2024 + - 2024 + - 2024 + - 2024 + - 2024 + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 + - 0 + - 0 + provided: {} +outputs: + arbeitslosengeld_2__erwachsenensatz_m: + - 833.24 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + - 377.0 + - 410.0 + - 491.0 + - 471.0 + arbeitslosengeld_2__regelsatz_m: + - 833.24 + - 377.0 + - 410.0 + - 491.0 + - 471.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml new file mode 100644 index 0000000000..eb2aeea233 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml @@ -0,0 +1,38 @@ +--- +info: + note: >- + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the + adult Regelsatz. + source: Made up. +inputs: + assumed: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 17 + hh_id: + - 0 + familie__kind: + - true + p_id: + - 0 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + jahr: + - 2005 + kindergeld__p_id_empfänger: + - -1 + provided: {} +outputs: + arbeitslosengeld_2__erwachsenensatz_m: + - 563.0 + arbeitslosengeld_2__kindersatz_m: + - 0.0 + arbeitslosengeld_2__regelsatz_m: + - 563.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml new file mode 100644 index 0000000000..5d0d17dce0 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml @@ -0,0 +1,104 @@ +--- +info: + note: >- + Test with new Regelbedarf. + `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. + source: https://www.buerger-geld.org/rechner/ergebnis/index.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 45 + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + arbeitsstunden_w: + - 20.0 + geburtsjahr: + - 1978 + hh_id: + - 0 + familie__kind: + - false + p_id: + - 0 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 0.0 + wohnort_ost: + - false + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + kindergeld__betrag_m_bg: + - 0.0 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + arbeitslosengeld_2__betrag_m_bg: + - 1013.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 563.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml new file mode 100644 index 0000000000..be590c1e73 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml @@ -0,0 +1,106 @@ +--- +info: + note: >- + Test with new Regelbedarf. + `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. + source: https://www.buerger-geld.org/rechner/ergebnis/index.php +inputs: + provided: + p_id: + - 0 + hh_id: + - 0 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + kindergeld__p_id_empfänger: + - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + familie__kind: + - false + alter: + - 45 + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohnen__bewohnt_eigentum_hh: + - false + familie__alleinerziehend: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + kindergeld__betrag_m_bg: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + elterngeld__betrag_m: + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + vermögen: + - 0.0 + geburtsjahr: + - 1978 + sozialversicherung__rente__bezieht_rente: + - false + kindergeld__in_ausbildung: + - false + arbeitsstunden_w: + - 20.0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__kranken__beitrag__privat_versichert: + - false + einkommensteuer__einkünfte__ist_selbstständig: + - false + wohnort_ost: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + assumed: {} +outputs: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 208.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 392.0 + arbeitslosengeld_2__regelsatz_m_bg: + - 563.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 + arbeitslosengeld_2__betrag_m_bg: + - 621.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/benefit_checks/2006/hh_id_4.yaml deleted file mode 100644 index 4d971f2c4c..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2006/hh_id_4.yaml +++ /dev/null @@ -1,152 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 8 - - 9 - - 10 - - 11 - - 12 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 - p_id_elternteil_1: - - -1 - - -1 - - 8 - - 8 - - 8 - p_id_elternteil_2: - - -1 - - -1 - - 9 - - 9 - - 9 - p_id_einstandspartner: - - 9 - - 8 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - rentner: - - false - - false - - false - - false - - false - alter: - - 33 - - 30 - - 12 - - 10 - - 2 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 280.0 - - 280.0 - - 280.0 - - 280.0 - - 280.0 - wohngeld_anspruchshöhe_m_wthh: - - 650.0 - - 650.0 - - 650.0 - - 650.0 - - 650.0 - wohngeld_anspruchshöhe_m_bg: - - 650.0 - - 650.0 - - 650.0 - - 650.0 - - 650.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 2281.0 - - 2281.0 - - 2281.0 - - 2281.0 - - 2281.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 362.0 - - 100.0 - - 0.0 - - 0.0 - - 0.0 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 0 - - 0 - - 0 - - 0 - - 0 - wohngeld_m_wthh: - - 0 - - 0 - - 0 - - 0 - - 0 - arbeitsl_geld_2_m_bg: - - 1819.0 - - 1819.0 - - 1819.0 - - 1819.0 - - 1819.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/benefit_checks/2009/hh_id_3.yaml deleted file mode 100644 index 2cd1f0fd13..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2009/hh_id_3.yaml +++ /dev/null @@ -1,92 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 6 - - 7 - hh_id: - - 3 - - 3 - p_id_elternteil_1: - - -1 - - 6 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 6 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - rentner: - - false - - false - alter: - - 28 - - 1 - vermögen_bedürft: - - 0.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - wohngeld_anspruchshöhe_m_wthh: - - 500.0 - - 500.0 - wohngeld_anspruchshöhe_m_bg: - - 500.0 - - 500.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1183.64 - - 1183.64 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - kindergeldübertrag_m_bg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 555.0 - - 0.0 - geburtsjahr: - - 1981 - - 2008 - jahr: - - 2009 - - 2009 - assumed: {} -outputs: - wohngeld_vorrang_bg: - - false - - false - kinderzuschl_vorrang_bg: - - false - - false - wohngeld_kinderzuschl_vorrang_bg: - - true - - true - kinderzuschl_m_bg: - - 140 - - 140 - wohngeld_m_wthh: - - 500 - - 500 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/benefit_checks/2013/hh_id_2.yaml deleted file mode 100644 index 41143aa3a7..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2013/hh_id_2.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - - 5 - hh_id: - - 2 - - 2 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 5 - - 4 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - rentner: - - false - - false - alter: - - 40 - - 40 - vermögen_bedürft: - - 0.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - - 0.0 - wohngeld_anspruchshöhe_m_wthh: - - 400.0 - - 400.0 - wohngeld_anspruchshöhe_m_bg: - - 400.0 - - 400.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1170.0 - - 1170.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - kindergeldübertrag_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 700.0 - - 0.0 - geburtsjahr: - - 1973 - - 1973 - jahr: - - 2013 - - 2013 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 0 - - 0 - wohngeld_m_wthh: - - 0 - - 0 - arbeitsl_geld_2_m_bg: - - 470.0 - - 470.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2014/hh_id_7.yaml b/src/_gettsim_tests/test_data/benefit_checks/2014/hh_id_7.yaml deleted file mode 100644 index 1b25ac6561..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2014/hh_id_7.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 18 - - 19 - hh_id: - - 7 - - 7 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - 19 - - 18 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - rentner: - - false - - false - alter: - - 75 - - 50 - vermögen_bedürft: - - 78000.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - - 0.0 - wohngeld_anspruchshöhe_m_wthh: - - 0.0 - - 0.0 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - - 0.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1046.0 - - 1046.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - kindergeldübertrag_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 300.0 - - 0.0 - geburtsjahr: - - 1939 - - 1964 - jahr: - - 2014 - - 2014 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 0 - - 0 - wohngeld_m_wthh: - - 0 - - 0 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/benefit_checks/2016/hh_id_1.yaml deleted file mode 100644 index 392e82d942..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2016/hh_id_1.yaml +++ /dev/null @@ -1,104 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 1 - - 2 - - 3 - hh_id: - - 1 - - 1 - - 1 - p_id_elternteil_1: - - -1 - - -1 - - 1 - p_id_elternteil_2: - - -1 - - -1 - - 2 - p_id_einstandspartner: - - 2 - - 1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - rentner: - - false - - false - - false - alter: - - 30 - - 30 - - 2 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 - wohngeld_anspruchshöhe_m_wthh: - - 350.0 - - 350.0 - - 350.0 - wohngeld_anspruchshöhe_m_bg: - - 350.0 - - 350.0 - - 350.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1765.0 - - 1765.0 - - 1765.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - - 0.0 - kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 1100.0 - - 200.0 - - 0.0 - geburtsjahr: - - 1986 - - 1986 - - 2014 - jahr: - - 2016 - - 2016 - - 2016 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 140 - - 140 - - 140 - wohngeld_m_wthh: - - 350 - - 350 - - 350 - arbeitsl_geld_2_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_6.yaml deleted file mode 100644 index 5bc43e1534..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_6.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 16 - - 17 - hh_id: - - 6 - - 6 - p_id_elternteil_1: - - -1 - - 16 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - rentner: - - false - - false - alter: - - 28 - - 1 - vermögen_bedürft: - - 0.0 - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - - 0.0 - wohngeld_anspruchshöhe_m_wthh: - - 356.0 - - 356.0 - wohngeld_anspruchshöhe_m_bg: - - 356.0 - - 356.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1183.64 - - 1183.64 - kindergeld_m: - - 0.0 - - 0.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - kindergeldübertrag_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 555.0 - - 0.0 - geburtsjahr: - - 1991 - - 2018 - jahr: - - 2019 - - 2019 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 0 - - 0 - wohngeld_m_wthh: - - 0 - - 0 - arbeitsl_geld_2_m_bg: - - 628.64 - - 628.64 diff --git a/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_8.yaml deleted file mode 100644 index 7c8d588c9a..0000000000 --- a/src/_gettsim_tests/test_data/benefit_checks/2019/hh_id_8.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 8 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: - - false - kind: - - false - rentner: - - true - alter: - - 80 - vermögen_bedürft: - - 0.0 - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - wohngeld_anspruchshöhe_m_wthh: - - 0.0 - wohngeld_anspruchshöhe_m_bg: - - 0.0 - arbeitsl_geld_2_regelbedarf_m_bg: - - 1000.0 - kindergeld_zur_bedarfsdeckung_m: - - 0.0 - kindergeldübertrag_m: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m: - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 0.0 - geburtsjahr: - - 1939 - jahr: - - 2019 - assumed: {} -outputs: - kinderzuschl_m_bg: - - 0 - wohngeld_m_wthh: - - 0 - arbeitsl_geld_2_m_bg: - - 0.0 diff --git a/src/_gettsim_tests/test_data/demographic_vars/2024/pflegev_anz_kinder_bis_24.yaml b/src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml similarity index 76% rename from src/_gettsim_tests/test_data/demographic_vars/2024/pflegev_anz_kinder_bis_24.yaml rename to src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml index 64f7cfb0b1..9435be628f 100644 --- a/src/_gettsim_tests/test_data/demographic_vars/2024/pflegev_anz_kinder_bis_24.yaml +++ b/src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml @@ -5,40 +5,40 @@ info: insurance contribution. Does not depend on Kindergeld eligibility. source: '' inputs: - provided: {} assumed: - p_id: - - 0 - - 1 - - 2 - - 3 + alter: + - 50 + - 50 + - 24 + - 24 hh_id: - 0 - 0 - 0 - 0 - p_id_elternteil_1: + p_id: + - 0 + - 1 + - 2 + - 3 + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - alter: - - 50 - - 50 - - 24 - - 24 - kindergeld_anspruch: + kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - false - true + provided: {} outputs: - ges_pflegev_anz_kinder_bis_24: + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - 2 - 1 - 0 diff --git a/src/_gettsim_tests/test_data/eink_st/2009/hh_id_4.yaml b/src/_gettsim_tests/test_data/eink_st/2009/hh_id_4.yaml deleted file mode 100644 index bafda0b209..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2009/hh_id_4.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 50000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 42000.0 - kapitaleink_brutto_y: - - 2500.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 12950 - eink_st_mit_kinderfreib_y_sn: - - 9830 - abgelt_st_y_sn: - - 424.75 - soli_st_y_sn: - - 564.01 diff --git a/src/_gettsim_tests/test_data/eink_st/2012/hh_id_3.yaml b/src/_gettsim_tests/test_data/eink_st/2012/hh_id_3.yaml deleted file mode 100644 index 74afb89c76..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2012/hh_id_3.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 20000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 20000.0 - kapitaleink_brutto_y: - - 1000.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 2700 - eink_st_mit_kinderfreib_y_sn: - - 2700 - abgelt_st_y_sn: - - 49.75 - soli_st_y_sn: - - 151.24 diff --git a/src/_gettsim_tests/test_data/eink_st/2015/hh_id_2.yaml b/src/_gettsim_tests/test_data/eink_st/2015/hh_id_2.yaml deleted file mode 100644 index deaf3dcb4f..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2015/hh_id_2.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 2 - - 32 - - 123 - hh_id: - - 2 - - 2 - - 2 - p_id_ehepartner: - - 32 - - 2 - - -1 - gemeinsam_veranlagt: - - true - - true - - false - kind: - - false - - false - - true - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 5000.0 - - 5000.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 5000.0 - - 5000.0 - - 0.0 - kapitaleink_brutto_y: - - 1300.0 - - 500.0 - - 0.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 0 - - 0 - - 0 - eink_st_mit_kinderfreib_y_sn: - - 0 - - 0 - - 0 - abgelt_st_y_sn: - - 49.5 - - 49.5 - - 0.0 - soli_st_y_sn: - - 2.72 - - 2.72 - - 0.0 diff --git a/src/_gettsim_tests/test_data/eink_st/2018/couple_1_child.yaml b/src/_gettsim_tests/test_data/eink_st/2018/couple_1_child.yaml deleted file mode 100644 index a19df2c00d..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2018/couple_1_child.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: https://www.smart-rechner.de/einkommensteuer/rechner.php -inputs: - provided: - p_id: - - 5 - - 6 - - 7 - hh_id: - - 4 - - 4 - - 4 - p_id_ehepartner: - - 6 - - 5 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 5 - p_id_elternteil_2: - - -1 - - -1 - - 6 - kind: - - false - - false - - true - kindergeld_anspruch: - - false - - false - - true - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - kapitaleink_brutto_y: - - 0.0 - - 0.0 - - 0.0 - gemeinsam_veranlagt: - - true - - true - - false - assumed: {} -outputs: - eink_st_rel_kindergeld_anz_ansprüche_1: - - 1 - - 0 - - 0 - eink_st_rel_kindergeld_anz_ansprüche_2: - - 0 - - 1 - - 0 - eink_st_rel_kindergeld_m: - - 97 - - 97 - - 0 diff --git a/src/_gettsim_tests/test_data/eink_st/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/eink_st/2018/hh_id_1.yaml deleted file mode 100644 index 485e6c7cfd..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2018/hh_id_1.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 5000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 5000.0 - kapitaleink_brutto_y: - - 500.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 0 - eink_st_mit_kinderfreib_y_sn: - - 0 - abgelt_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 diff --git a/src/_gettsim_tests/test_data/eink_st/2018/hh_id_5.yaml b/src/_gettsim_tests/test_data/eink_st/2018/hh_id_5.yaml deleted file mode 100644 index c0f3383fea..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2018/hh_id_5.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 200000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 180000.0 - kapitaleink_brutto_y: - - 0.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 75378 - eink_st_mit_kinderfreib_y_sn: - - 66978 - abgelt_st_y_sn: - - 0.0 - soli_st_y_sn: - - 3683.79 diff --git a/src/_gettsim_tests/test_data/eink_st/2023/hh_id_6.yaml b/src/_gettsim_tests/test_data/eink_st/2023/hh_id_6.yaml deleted file mode 100644 index c4fca7f5a8..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2023/hh_id_6.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: https://www.smart-rechner.de/einkommensteuer/rechner.php -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 36000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 36000.0 - kapitaleink_brutto_y: - - 0.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 6531 - eink_st_mit_kinderfreib_y_sn: - - 6531 - abgelt_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 diff --git a/src/_gettsim_tests/test_data/eink_st/2024/couple_1_child.yaml b/src/_gettsim_tests/test_data/eink_st/2024/couple_1_child.yaml deleted file mode 100644 index aa2cbe2ea9..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2024/couple_1_child.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Regression test. -inputs: - provided: - p_id: - - 5 - - 6 - - 7 - hh_id: - - 4 - - 4 - - 4 - p_id_ehepartner: - - 6 - - 5 - - -1 - p_id_elternteil_1: - - -1 - - -1 - - 5 - p_id_elternteil_2: - - -1 - - -1 - - 6 - kind: - - false - - false - - true - kindergeld_anspruch: - - false - - false - - true - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - kapitaleink_brutto_y: - - 0.0 - - 0.0 - - 0.0 - gemeinsam_veranlagt: - - true - - true - - false - assumed: {} -outputs: - eink_st_rel_kindergeld_anz_ansprüche_1: - - 1 - - 0 - - 0 - eink_st_rel_kindergeld_anz_ansprüche_2: - - 0 - - 1 - - 0 - eink_st_rel_kindergeld_m: - - 125 - - 125 - - 0 diff --git a/src/_gettsim_tests/test_data/eink_st/2024/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/eink_st/2024/couple_above_soli_freibetrag.yaml deleted file mode 100644 index 9d89b5cdc5..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2024/couple_above_soli_freibetrag.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: https://www.bmf-steuerrechner.de -inputs: - provided: - p_id: - - 3 - - 4 - hh_id: - - 3 - - 3 - p_id_ehepartner: - - 4 - - 3 - kind: - - false - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 200000.0 - - 200000.0 - kapitaleink_brutto_y: - - 0.0 - - 0.0 - gemeinsam_veranlagt: - - true - - true - assumed: {} -outputs: - anz_personen_sn: - - 2 - - 2 - eink_st_ohne_kinderfreib_y_sn: - - 62726.0 - - 62726.0 - eink_st_mit_kinderfreib_y_sn: - - 62726.0 - - 62726.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 3149.45 - - 3149.45 diff --git a/src/_gettsim_tests/test_data/eink_st/2024/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/eink_st/2024/single_above_soli_freibetrag.yaml deleted file mode 100644 index cdd47a3512..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2024/single_above_soli_freibetrag.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: https://www.bmf-steuerrechner.de -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 100000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 100000.0 - kapitaleink_brutto_y: - - 0.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 31363.0 - eink_st_mit_kinderfreib_y_sn: - - 31363.0 - abgelt_st_y_sn: - - 0.0 - soli_st_y_sn: - - 1574.72 diff --git a/src/_gettsim_tests/test_data/eink_st/2024/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/eink_st/2024/single_below_soli_freibetrag.yaml deleted file mode 100644 index 0c55563a61..0000000000 --- a/src/_gettsim_tests/test_data/eink_st/2024/single_below_soli_freibetrag.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: https://www.bmf-steuerrechner.de -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 50000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 50000.0 - kapitaleink_brutto_y: - - 0.0 - assumed: {} -outputs: - eink_st_ohne_kinderfreib_y_sn: - - 10872.0 - eink_st_mit_kinderfreib_y_sn: - - 10872.0 - abgelt_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml new file mode 100644 index 0000000000..e107204c11 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + hh_id: + - 4 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 2500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 50000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 42000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 424.75 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 9830 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 12950 + solidaritätszuschlag__betrag_y_sn: + - 564.01 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml new file mode 100644 index 0000000000..8b518968d2 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + hh_id: + - 3 + familie__kind: + - false + p_id: + - 3 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 1000.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 20000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 20000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 49.75 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 2700 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 2700 + solidaritätszuschlag__betrag_y_sn: + - 151.24 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml new file mode 100644 index 0000000000..1917d08d73 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml @@ -0,0 +1,56 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + hh_id: + - 2 + - 2 + - 2 + familie__kind: + - false + - false + - true + p_id: + - 2 + - 32 + - 123 + familie__p_id_ehepartner: + - 32 + - 2 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 1300.0 + - 500.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__gesamteinkommen_y: + - 5000.0 + - 5000.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 + - 5000.0 + - 0.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 49.5 + - 49.5 + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 0 + - 0 + - 0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 0 + - 0 + - 0 + solidaritätszuschlag__betrag_y_sn: + - 2.72 + - 2.72 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml new file mode 100644 index 0000000000..4c3a6860e9 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: https://www.smart-rechner.de/einkommensteuer/rechner.php +inputs: + assumed: {} + provided: + hh_id: + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + p_id: + - 5 + - 6 + - 7 + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 + - 0.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true +outputs: + einkommensteuer__anzahl_kindergeld_ansprüche_1: + - 1 + - 0 + - 0 + einkommensteuer__anzahl_kindergeld_ansprüche_2: + - 0 + - 1 + - 0 + einkommensteuer__relevantes_kindergeld_m: + - 97 + - 97 + - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml new file mode 100644 index 0000000000..02a0570894 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + hh_id: + - 1 + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 5000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml new file mode 100644 index 0000000000..e1a26ebb13 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + hh_id: + - 5 + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 200000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 180000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 66978 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 75378 + solidaritätszuschlag__betrag_y_sn: + - 3683.79 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml new file mode 100644 index 0000000000..41dbf53490 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: https://www.smart-rechner.de/einkommensteuer/rechner.php +inputs: + assumed: {} + provided: + hh_id: + - 6 + familie__kind: + - false + p_id: + - 6 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 36000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 6531 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 6531 + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml new file mode 100644 index 0000000000..0f0959eeaf --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Regression test. +inputs: + assumed: {} + provided: + hh_id: + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + p_id: + - 5 + - 6 + - 7 + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 + - 0.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true +outputs: + einkommensteuer__anzahl_kindergeld_ansprüche_1: + - 1 + - 0 + - 0 + einkommensteuer__anzahl_kindergeld_ansprüche_2: + - 0 + - 1 + - 0 + einkommensteuer__relevantes_kindergeld_m: + - 125 + - 125 + - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml new file mode 100644 index 0000000000..908bf1fc27 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml @@ -0,0 +1,47 @@ +--- +info: + note: '' + source: https://www.bmf-steuerrechner.de +inputs: + assumed: {} + provided: + hh_id: + - 3 + - 3 + familie__kind: + - false + - false + p_id: + - 3 + - 4 + familie__p_id_ehepartner: + - 4 + - 3 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + einkommensteuer__gesamteinkommen_y: + - 200000.0 + - 200000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__anzahl_personen_sn: + - 2 + - 2 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 62726.0 + - 62726.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 62726.0 + - 62726.0 + solidaritätszuschlag__betrag_y_sn: + - 3149.45 + - 3149.45 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml new file mode 100644 index 0000000000..b40f9c7263 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: https://www.bmf-steuerrechner.de +inputs: + assumed: {} + provided: + hh_id: + - 2 + familie__kind: + - false + p_id: + - 2 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 100000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 100000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 31363.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 31363.0 + solidaritätszuschlag__betrag_y_sn: + - 1574.72 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml new file mode 100644 index 0000000000..f993fb0af1 --- /dev/null +++ b/src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml @@ -0,0 +1,32 @@ +--- +info: + note: '' + source: https://www.bmf-steuerrechner.de +inputs: + assumed: {} + provided: + hh_id: + - 1 + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 50000.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 50000.0 +outputs: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 10872.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 10872.0 + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml index 9614e6f9b6..2f695ecda2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml @@ -3,68 +3,68 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - hh_id: - - 2 - p_id: - - 42 - p_id_ehepartner: - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - steuerklasse: - - 1 - ges_pflegev_hat_kinder: + familie__alleinerziehend: - false alter: - 43 - gemeinsam_veranlagt: - - false - alleinerz: - - false - kind: - - false arbeitsstunden_w: - 22.5 - bruttolohn_m: - - 1800.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 1800.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 18260.0 - elterngeld_claimed: - - false - in_ausbildung: - - false - wohnort_ost: - - false - eink_st_y_sn: - - 218.96 - soli_st_y_sn: - - 12.04 - sozialv_beitr_arbeitnehmer_m: - - 378.0 geburtsjahr: - 1974 geburtsmonat: - 3 geburtstag: - 3 - monate_elterngeldbezug: + hh_id: + - 2 + familie__kind: + - false + p_id: + - 42 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__betrag_y_sn: + - 218.96 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1800.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__bisherige_bezugsmonate: - 0 + elterngeld__claimed: + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 1800.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 18260.0 jahr: - 2017 - assumed: {} + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + solidaritätszuschlag__betrag_y_sn: + - 12.04 + sozialversicherung__beiträge_versicherter_m: + - 378.0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + elterngeld__betrag_m: - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - _elterngeld_anz_mehrlinge_fg: - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml index 37f16da344..0f9118366b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml @@ -3,62 +3,62 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - hh_id: - - 1 - p_id: - - 23 - p_id_ehepartner: - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - steuerklasse: - - 1 - ges_pflegev_hat_kinder: - - true + familie__alleinerziehend: + - false alter: - 43 - elterngeld_claimed: - - false - in_ausbildung: - - false - gemeinsam_veranlagt: - - false - alleinerz: - - false - kind: - - false arbeitsstunden_w: - 0.0 - bruttolohn_m: - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 0.0 - wohnort_ost: - - false geburtsjahr: - 1972 geburtsmonat: - 1 geburtstag: - 1 - monate_elterngeldbezug: + hh_id: + - 1 + familie__kind: + - false + p_id: + - 23 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__bisherige_bezugsmonate: - 0 + elterngeld__claimed: + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 jahr: - 2018 - assumed: {} + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + elterngeld__betrag_m: - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - _elterngeld_anz_mehrlinge_fg: - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml index fdbc7106c9..146fc224ac 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml @@ -3,90 +3,90 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 0 + arbeitsstunden_w: + - 3.0 + - 0.0 + geburtsjahr: + - 1974 + - 2017 + geburtsmonat: + - 4 + - 6 + geburtstag: + - 4 + - 12 hh_id: - 2 - 2 + familie__kind: + - false + - true p_id: - 42 - 43 - p_id_ehepartner: - - -1 + familie__p_id_ehepartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 42 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - alter: - - 43 - - 0 - elterngeld_claimed: - - true - - false - in_ausbildung: + wohnort_ost: - false - false - gemeinsam_veranlagt: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 100.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + elterngeld__claimed: - true - false - kind: - - false - - true - arbeitsstunden_w: - - 3.0 - - 0.0 - bruttolohn_m: - - 100.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1800.0 - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 18260.0 - 0.0 - wohnort_ost: - - false - - false - geburtsjahr: - - 1974 - - 2017 - geburtsmonat: - - 4 - - 6 - geburtstag: - - 4 - - 12 - monate_elterngeldbezug: - - 0 - - 0 jahr: - 2018 - 2018 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 1105.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml index 3153ffb921..00f5804a7a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml @@ -3,90 +3,90 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - 55 + familie__alleinerziehend: + - false + - false + alter: + - 43 + - 43 + arbeitsstunden_w: + - 9.0 + - 30.0 + geburtsjahr: + - 1976 + - 1976 + geburtsmonat: + - 5 + - 7 + geburtstag: + - 5 + - 7 hh_id: - 3 - 3 + familie__kind: + - false + - false p_id: - 55 - 56 - p_id_ehepartner: + familie__p_id_ehepartner: - 56 - 55 - p_id_einstandspartner: - - 56 - - 55 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - false - - false - alter: - - 43 - - 43 - elterngeld_claimed: - - false - - false - in_ausbildung: - - false - - false - gemeinsam_veranlagt: + wohnort_ost: - false - false - alleinerz: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + - 3400.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + elterngeld__claimed: - false - false - arbeitsstunden_w: - - 9.0 - - 30.0 - bruttolohn_m: - - 900.0 - - 3400.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 900.0 - 3600.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 7406.0 - 39806.0 - wohnort_ost: - - false - - false - geburtsjahr: - - 1976 - - 1976 - geburtsmonat: - - 5 - - 7 - geburtstag: - - 5 - - 7 - monate_elterngeldbezug: - - 0 - - 0 jahr: - 2018 - 2018 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml index 8ad87ba60c..f842b1655e 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml @@ -3,90 +3,90 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - false + - true + alter: + - 0 + - 42 + arbeitsstunden_w: + - 0.0 + - 33.0 + geburtsjahr: + - 2017 + - 1976 + geburtsmonat: + - 6 + - 9 + geburtstag: + - 12 + - 9 hh_id: - 4 - 4 + familie__kind: + - true + - false p_id: - 59 - 57 - p_id_ehepartner: - - -1 + familie__p_id_ehepartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - 57 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - false - - true - alter: - - 0 - - 42 - elterngeld_claimed: - - false - - true - in_ausbildung: + wohnort_ost: - false - false - gemeinsam_veranlagt: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + elterngeld__claimed: - false - true - kind: - - true - - false - arbeitsstunden_w: - - 0.0 - - 33.0 - bruttolohn_m: - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 0.0 - 3400.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 37406.0 - wohnort_ost: - - false - - false - geburtsjahr: - - 2017 - - 1976 - geburtsmonat: - - 6 - - 9 - geburtstag: - - 12 - - 9 - monate_elterngeldbezug: - - 0 - - 0 jahr: - 2018 - 2018 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml index 120b138271..d80c9fdd72 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml @@ -3,62 +3,62 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - hh_id: - - 6 - p_id: - - 19 - p_id_ehepartner: - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - steuerklasse: - - 1 - ges_pflegev_hat_kinder: - - true + familie__alleinerziehend: + - false alter: - 43 - elterngeld_claimed: - - false - in_ausbildung: - - false - gemeinsam_veranlagt: - - false - alleinerz: - - false - kind: - - false arbeitsstunden_w: - 10.0 - bruttolohn_m: - - 900.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 900.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 7406.0 - wohnort_ost: - - false geburtsjahr: - 1980 geburtsmonat: - 11 geburtstag: - 11 - monate_elterngeldbezug: + hh_id: + - 6 + familie__kind: + - false + p_id: + - 19 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__bisherige_bezugsmonate: - 0 + elterngeld__claimed: + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 900.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 7406.0 jahr: - 2018 - assumed: {} + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + elterngeld__betrag_m: - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - _elterngeld_anz_mehrlinge_fg: - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml index caa3f8b74e..83a5621629 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml @@ -3,90 +3,90 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 0 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1972 + - 2018 + geburtsmonat: + - 2 + - 10 + geburtstag: + - 2 + - 12 hh_id: - 1 - 1 + familie__kind: + - false + - true p_id: - 23 - 18 - p_id_ehepartner: - - -1 + familie__p_id_ehepartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 23 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - alter: - - 43 - - 0 - gemeinsam_veranlagt: + wohnort_ost: - false - false - alleinerz: - - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + elterngeld__claimed: - true - elterngeld_claimed: - - true - - false - in_ausbildung: - - false - false - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 0.0 + elterngeld__nettoeinkommen_vorjahr_m: - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - 0.0 - - 0.0 - wohnort_ost: - - false - - false - geburtsjahr: - - 1972 - - 2018 - geburtsmonat: - - 2 - - 10 - geburtstag: - - 2 - - 12 - monate_elterngeldbezug: - - 0 - - 0 jahr: - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 300.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml index 812bfc27d2..3c437fc39d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml @@ -3,118 +3,118 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 39.83 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 hh_id: - 3 - 3 - 3 + familie__kind: + - false + - true + - false p_id: - 55 - 50 - 56 - p_id_ehepartner: - - 56 - - -1 - - 55 - p_id_einstandspartner: + familie__p_id_ehepartner: - 56 - -1 - 55 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 55 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 56 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - - true - alter: - - 43 - - 0 - - 43 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false + wohnort_ost: - false - false - alleinerz: - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: - true - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 39.83 - bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + - false + elterngeld__nettoeinkommen_vorjahr_m: - 900.0 - 0.0 - 3400.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 5760.0 - - 0.00 + - 0.0 - 35760.0 - wohnort_ost: - - false - - false - - false - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - monate_elterngeldbezug: - - 0 - - 0 - - 0 jahr: - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__betrag_m: - 648.0 - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml index fb1e8f156a..b820a60650 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml @@ -3,64 +3,20 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - hh_id: - - 5 - - 5 - p_id: - - 58 - - 60 - p_id_ehepartner: - - -1 - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - p_id_elternteil_1: - - -1 - - 58 - p_id_elternteil_2: - - -1 - - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: + familie__alleinerziehend: - true - false alter: - 43 - 0 - elterngeld_claimed: - - true - - false - in_ausbildung: - - false - - false - gemeinsam_veranlagt: - - false - - false - alleinerz: - - true - - false - kind: - - false - - true arbeitsstunden_w: - 0.0 - 0.0 - bruttolohn_m: - - 0.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 3600.0 - - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 38160.00 - - 0.0 - wohnort_ost: - - false - - false geburtsjahr: - 1978 - 2018 @@ -70,23 +26,67 @@ inputs: geburtstag: - 10 - 12 - monate_elterngeldbezug: + hh_id: + - 5 + - 5 + familie__kind: + - false + - true + p_id: + - 58 + - 60 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 58 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + elterngeld__bisherige_bezugsmonate: - 0 - 0 + elterngeld__claimed: + - true + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 3600.0 + - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 38160.0 + - 0.0 jahr: - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 1800.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml index ee968f3cdb..8c1a77c72d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml @@ -3,122 +3,122 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - true + alter: + - 2 + - 0 + - 37 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 2017 + - 2018 + - 1982 + geburtsmonat: + - 2 + - 10 + - 2 + geburtstag: + - 12 + - 12 + - 13 hh_id: - 6 - 6 - 6 + familie__kind: + - true + - true + - false p_id: - 20 - 21 - 19 - p_id_ehepartner: - - -1 - - -1 - - -1 - p_id_einstandspartner: + familie__p_id_ehepartner: - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - 19 - 19 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - false - - false - - true - alter: - - 2 - - 0 - - 37 - gemeinsam_veranlagt: + wohnort_ost: - false - false - false - alleinerz: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - - true - kind: - - true - - true - false - elterngeld_claimed: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 2 + elterngeld__claimed: - false - false - true - in_ausbildung: - - false - - false - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 0.0 - 0.0 - 900.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 0.0 - 5760.0 - wohnort_ost: - - false - - false - - false - geburtsjahr: - - 2017 - - 2018 - - 1982 - geburtsmonat: - - 2 - - 10 - - 2 - geburtstag: - - 12 - - 12 - - 13 - monate_elterngeldbezug: - - 0 - - 0 - - 2 jahr: - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__basisbetrag_m: + - 0.0 + - 0.0 + - 648.0 + elterngeld__betrag_m: - 0.0 - 0.0 - 723.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - true - true - true - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false - false - true - elterngeld_basisbetrag_m: - - 0.0 - - 0.0 - - 648.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml index e40b2f5327..2c2a222744 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml @@ -3,118 +3,118 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 72 + - 71 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 43 + - 0 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 5 + - 6 + - 12 + geburtstag: + - 5 + - 6 + - 1 hh_id: - 7 - 7 - 7 + familie__kind: + - false + - false + - true p_id: - 71 - 72 - 73 - p_id_ehepartner: + familie__p_id_ehepartner: - 72 - 71 - -1 - p_id_einstandspartner: - - 72 - - 71 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 71 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 72 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - true - - false - alter: - - 43 - - 43 - - 0 - elterngeld_claimed: - - true - - true - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false - - false - - false - alleinerz: - - false - - false + wohnort_ost: - false - kind: - false - false - - true - arbeitsstunden_w: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 - 0.0 - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 1800.0 - - 1800.0 - - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 16560.00 - - 16560.00 - - 0.0 - wohnort_ost: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 5 - - 6 - - 12 - geburtstag: - - 5 - - 6 - - 1 - monate_elterngeldbezug: + elterngeld__bisherige_bezugsmonate: - 0 - 0 - 0 + elterngeld__claimed: + - true + - true + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 1800.0 + - 1800.0 + - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 16560.0 + - 16560.0 + - 0.0 jahr: - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__betrag_m: - 1170.0 - 1170.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml index f47cc33b55..fccf414ea8 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml @@ -3,145 +3,145 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - true + alter: + - 1 + - 0 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 2017 + - 2018 + - 2018 + - 1982 + geburtsmonat: + - 2 + - 10 + - 10 + - 2 + geburtstag: + - 12 + - 12 + - 12 + - 13 hh_id: - 8 - 8 - 8 - 8 + familie__kind: + - true + - true + - true + - false p_id: - 25 - 26 - 27 - 28 - p_id_ehepartner: - - -1 - - -1 + familie__p_id_ehepartner: - -1 - -1 - p_id_einstandspartner: - -1 - -1 - - -1 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - 28 - 28 - 28 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - -1 - steuerklasse: - - 1 - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - false - - false - - false - - true - alter: - - 1 - - 0 - - 0 - - 43 - elterngeld_claimed: - - false - - false - - false - - true - in_ausbildung: + wohnort_ost: - false - false - false - false - gemeinsam_veranlagt: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - false - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + - 2 + elterngeld__claimed: - false - false - false - true - kind: - - true - - true - - true - - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 0.0 - 0.0 - 0.0 - 900.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 0.0 - 0.0 - 5760.0 - wohnort_ost: - - false - - false - - false - - false - geburtsjahr: - - 2017 - - 2018 - - 2018 - - 1982 - geburtsmonat: - - 2 - - 10 - - 10 - - 2 - geburtstag: - - 12 - - 12 - - 12 - - 13 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - - 2 jahr: - 2019 - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 1 + - 1 + - 1 + - 1 + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 1023.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - true - true - true - true - _elterngeld_anz_mehrlinge_fg: - - 1 - - 1 - - 1 - - 1 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index 18283f4a9c..56bde7edae 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -3,110 +3,110 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 1 + - 0 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 43 + - 0 + arbeitsstunden_w: + - 0.0 + - 39.83 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 8 + - 12 hh_id: - 0 - 0 - 0 + familie__kind: + - false + - false + - true p_id: - 0 - 1 - 2 - p_id_ehepartner: + familie__p_id_ehepartner: - 1 - 0 - -1 - p_id_einstandspartner: - - 1 - - 0 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - true - - false - alter: - - 43 - - 43 - - 0 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: + wohnort_ost: - false - false - false - alleinerz: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 190000.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - false - kind: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: + - true - false - false - - true - arbeitsstunden_w: - - 0.0 - - 39.83 - - 0.0 - bruttolohn_m: - - 0.0 - - 190000.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 2000.0 - 13000.0 - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 100000.0 - 100000.0 - - 0.00 - lohnst_m: - 0.0 + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__betrag_m: - 0.0 - 0.0 + - 0.0 + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 soli_lohst_m: - 0.0 - 0.0 - 0.0 - wohnort_ost: - - false - - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true - false - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 8 - - 12 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - assumed: {} outputs: - elterngeld_m: + elterngeld__betrag_m: - 1300.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index 296e679c91..3ad688c0ec 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -3,110 +3,110 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 1 + - 0 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 43 + - 0 + arbeitsstunden_w: + - 0.0 + - 39.83 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 8 + - 12 hh_id: - 0 - 0 - 0 + familie__kind: + - false + - false + - true p_id: - 0 - 1 - 2 - p_id_ehepartner: + familie__p_id_ehepartner: - 1 - 0 - -1 - p_id_einstandspartner: - - 1 - - 0 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - true - - false - alter: - - 43 - - 43 - - 0 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: + wohnort_ost: - false - false - false - alleinerz: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 190000.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - false - kind: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: + - true - false - false - - true - arbeitsstunden_w: - - 0.0 - - 39.83 - - 0.0 - bruttolohn_m: - - 0.0 - - 190000.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 2000.0 - 13000.0 - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 2000000.0 - 2000000.0 - - 0.00 - lohnst_m: - 0.0 + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__betrag_m: - 0.0 - 0.0 + - 0.0 + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 soli_lohst_m: - 0.0 - 0.0 - 0.0 - wohnort_ost: - - false - - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true - false - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 8 - - 12 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - assumed: {} outputs: - elterngeld_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml index ae11785f42..3ae1e83ed8 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml @@ -3,126 +3,126 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 39.83 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 hh_id: - 3 - 3 - 3 + familie__kind: + - false + - true + - false p_id: - 55 - 50 - 56 - p_id_ehepartner: + familie__p_id_ehepartner: - 56 - -1 - 55 - p_id_einstandspartner: - - 56 + familie__p_id_elternteil_1: - -1 - 55 - p_id_elternteil_1: - -1 - - 55 - - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 56 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - - true - alter: - - 43 - - 0 - - 43 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false + wohnort_ost: - false - false - alleinerz: - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 200.0 + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: - true - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 39.83 - bruttolohn_m: - - 200.0 - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + - false + elterngeld__nettoeinkommen_vorjahr_m: - 1000.0 - 0.0 - 3400.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 5760.0 - - 0.00 + - 0.0 - 35760.0 - lohnst_m: + jahr: + - 2019 + - 2019 + - 2019 + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__betrag_m: - 0.0 - 0.0 - 0.0 + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 soli_lohst_m: - 0.0 - 0.0 - 0.0 - wohnort_ost: - - false - - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true - false - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - jahr: - - 2019 - - 2019 - - 2019 - assumed: {} + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__betrag_m: - 536.0 - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml index fb1e8f156a..b820a60650 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml @@ -3,64 +3,20 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - hh_id: - - 5 - - 5 - p_id: - - 58 - - 60 - p_id_ehepartner: - - -1 - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - p_id_elternteil_1: - - -1 - - 58 - p_id_elternteil_2: - - -1 - - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: + familie__alleinerziehend: - true - false alter: - 43 - 0 - elterngeld_claimed: - - true - - false - in_ausbildung: - - false - - false - gemeinsam_veranlagt: - - false - - false - alleinerz: - - true - - false - kind: - - false - - true arbeitsstunden_w: - 0.0 - 0.0 - bruttolohn_m: - - 0.0 - - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 3600.0 - - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 38160.00 - - 0.0 - wohnort_ost: - - false - - false geburtsjahr: - 1978 - 2018 @@ -70,23 +26,67 @@ inputs: geburtstag: - 10 - 12 - monate_elterngeldbezug: + hh_id: + - 5 + - 5 + familie__kind: + - false + - true + p_id: + - 58 + - 60 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 58 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + elterngeld__bisherige_bezugsmonate: - 0 - 0 + elterngeld__claimed: + - true + - false + elterngeld__nettoeinkommen_vorjahr_m: + - 3600.0 + - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 38160.0 + - 0.0 jahr: - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 1800.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml index caa3f8b74e..83a5621629 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml @@ -3,90 +3,90 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 0 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1972 + - 2018 + geburtsmonat: + - 2 + - 10 + geburtstag: + - 2 + - 12 hh_id: - 1 - 1 + familie__kind: + - false + - true p_id: - 23 - 18 - p_id_ehepartner: - - -1 + familie__p_id_ehepartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 23 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - alter: - - 43 - - 0 - gemeinsam_veranlagt: + wohnort_ost: - false - false - alleinerz: - - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + elterngeld__claimed: - true - elterngeld_claimed: - - true - - false - in_ausbildung: - - false - false - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 0.0 + elterngeld__nettoeinkommen_vorjahr_m: - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: - 0.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: - 0.0 - - 0.0 - wohnort_ost: - - false - - false - geburtsjahr: - - 1972 - - 2018 - geburtsmonat: - - 2 - - 10 - geburtstag: - - 2 - - 12 - monate_elterngeldbezug: - - 0 - - 0 jahr: - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + elterngeld__betrag_m: - 300.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml index 12f86bf1b4..348e604e10 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml @@ -3,51 +3,51 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + alter: + - 43 + - 43 + arbeitsstunden_w: + - 40.0 + - 10.0 hh_id: - 0 - 0 p_id: - 0 - 1 - p_id_ehepartner: - - -1 - - -1 - p_id_einstandspartner: + familie__p_id_ehepartner: - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - steuerklasse: - - 1 - - 1 - ges_pflegev_hat_kinder: - - false - - false - alter: - - 43 - - 43 - gemeinsam_veranlagt: + wohnort_ost: - false - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 - 200.0 - wohnort_ost: + einkommensteuer__gemeinsam_veranlagt: - false - false - in_ausbildung: + kindergeld__in_ausbildung: + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: - false - false - arbeitsstunden_w: - - 40.0 - - 10.0 - assumed: {} outputs: - elterngeld_nettolohn_approximation_m: + elterngeld__nettoeinkommen_approximation_m: - 790.0 - 158.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml index e6ce7dfe27..5d3ff3ccfb 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml @@ -3,118 +3,118 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 39.83 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 hh_id: - 3 - 3 - 3 + familie__kind: + - false + - true + - false p_id: - 55 - 50 - 56 - p_id_ehepartner: - - 56 - - -1 - - 55 - p_id_einstandspartner: + familie__p_id_ehepartner: - 56 - -1 - 55 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 55 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 56 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - - true - alter: - - 43 - - 0 - - 43 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false + wohnort_ost: - false - false - alleinerz: - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: - true - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 39.83 - bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + - false + elterngeld__nettoeinkommen_vorjahr_m: - 1000.0 - 0.0 - 3400.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 5760.0 - - 0.00 + - 0.0 - 35760.0 - wohnort_ost: - - false - - false - - false - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - monate_elterngeldbezug: - - 0 - - 0 - - 0 jahr: - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__betrag_m: - 670.0 - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml index 45e53a73fa..ea4c646524 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml @@ -3,118 +3,118 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 39.83 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 hh_id: - 3 - 3 - 3 + familie__kind: + - false + - true + - false p_id: - 55 - 50 - 56 - p_id_ehepartner: - - 56 - - -1 - - 55 - p_id_einstandspartner: + familie__p_id_ehepartner: - 56 - -1 - 55 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 55 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 56 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - - true - alter: - - 43 - - 0 - - 43 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false + wohnort_ost: - false - false - alleinerz: - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: - true - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 39.83 - bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + - false + elterngeld__nettoeinkommen_vorjahr_m: - 790.0 - 0.0 - 3400.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 5760.0 - - 0.00 + - 0.0 - 35760.0 - wohnort_ost: - - false - - false - - false - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - monate_elterngeldbezug: - - 0 - - 0 - - 0 jahr: - 2019 - 2019 - 2019 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false + - true outputs: - elterngeld_m: + elterngeld__anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + elterngeld__betrag_m: - 612.25 - 0.0 - 0.0 - geschwisterbonus_anspruchsberechtigt_fg: + elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - false - false - false - _elterngeld_anz_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld_anspruchsbedingungen_erfüllt: + elterngeld__grundsätzlich_anspruchsberechtigt: - true - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml index 4f99fe6074..3675897f71 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml @@ -3,102 +3,102 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 + familie__alleinerziehend: + - false + - false + - false + alter: + - 43 + - 0 + - 43 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 39.83 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 hh_id: - 0 - 0 - 0 + familie__kind: + - false + - true + - false p_id: - 0 - 1 - 2 - p_id_ehepartner: - - 2 - - -1 - - 0 - p_id_einstandspartner: + familie__p_id_ehepartner: - 2 - -1 - 0 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 2 - -1 - steuerklasse: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - false - - true - alter: - - 43 - - 0 - - 43 - elterngeld_claimed: - - true - - false - - false - in_ausbildung: - - false - - false - - false - gemeinsam_veranlagt: - - false + wohnort_ost: - false - false - alleinerz: - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - kind: - false + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + elterngeld__claimed: - true - false - arbeitsstunden_w: - - 0.0 - - 0.0 - - 39.83 - bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - elterngeld_nettoeinkommen_vorjahr_m: + - false + elterngeld__nettoeinkommen_vorjahr_m: - 1220.0 - 0.0 - 0.0 - elterngeld_zu_verst_eink_vorjahr_y_sn: + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 0.0 - 0.0 - wohnort_ost: + kindergeld__in_ausbildung: - false - false - false - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - assumed: {} + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - false + - true outputs: - elterngeld_lohnersatzanteil: + elterngeld__lohnersatzanteil: - 0.661 - 0.67 - 0.67 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index e93906c19b..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 44.15686275 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 5 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 425.5864865 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index ff0e1517c6..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 10 - jahr_renteneintr: - - 2001 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 5 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 44.15686275 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml deleted file mode 100644 index b672383a13..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.43875686 - erwerbsm_rente_zugangsfaktor: - - 0.949 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 1 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 363.9402804 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml deleted file mode 100644 index d69f3b4c96..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1940 - geburtsmonat: - - 2 - jahr_renteneintr: - - 2001 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 1 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.43875686 - erwerbsm_rente_zugangsfaktor: - - 0.949 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml deleted file mode 100644 index a010fd12f5..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 19.08474576 - erwerbsm_rente_zugangsfaktor: - - 0.901 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 2 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 427.1326353 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml deleted file mode 100644 index 325cc54ae7..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1941 - geburtsmonat: - - 4 - jahr_renteneintr: - - 2001 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 2 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 19.08474576 - erwerbsm_rente_zugangsfaktor: - - 0.901 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index 5189f004e5..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 44.03351955 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 3 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 975.6630083 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index 20cd5e4958..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 6 - jahr_renteneintr: - - 2001 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 3 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 44.03351955 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index 514cd645e9..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 30.70909091 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 4 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 591.952113 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 7d6af9ae52..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 8 - jahr_renteneintr: - - 2001 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 4 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 30.70909091 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index 778ee64b38..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 24.27586207 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 10 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 248.6969821 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 12ceea19ca..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.45 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 10 - jahr_renteneintr: - - 2004 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 10 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 24.27586207 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml deleted file mode 100644 index eecd96463f..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.14340344 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 6 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 352.9618417 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml deleted file mode 100644 index 1cd4799bd3..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.72 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1943 - geburtsmonat: - - 4 - jahr_renteneintr: - - 2004 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 7 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 17.50276243 - erwerbsm_rente_zugangsfaktor: - - 0.937 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml deleted file mode 100644 index bb8646085e..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 17.50276243 - erwerbsm_rente_zugangsfaktor: - - 0.937 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 7 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 428.5343098 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml deleted file mode 100644 index fa83da1343..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.45 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1945 - geburtsmonat: - - 2 - jahr_renteneintr: - - 2004 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 6 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.14340344 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index f2fdaafd65..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 34.38139535 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 8 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 801.3601875 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index fec26fa85f..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 1.2 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 6 - jahr_renteneintr: - - 2004 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 8 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 34.38139535 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index c34c7956b2..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 17.40659341 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 9 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 356.6478699 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 47a0a55dab..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.8 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 8 - jahr_renteneintr: - - 2004 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 9 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 17.40659341 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index 6bfcd91251..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 15.64444444 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 15 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 161.1086791 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 947d1c4c1a..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 10 - jahr: - - 2008 - jahr_renteneintr: - - 2008 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 15 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.64444444 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml deleted file mode 100644 index 8c229b57f9..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.49902153 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 11 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 363.1860916 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml deleted file mode 100644 index c5c2c59940..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1950 - geburtsmonat: - - 2 - jahr: - - 2008 - jahr_renteneintr: - - 2008 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 11 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 15.49902153 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml deleted file mode 100644 index 13530ef621..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 24.55813953 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 12 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 575.4669544 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml deleted file mode 100644 index d4faf4e9e2..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1960 - geburtsmonat: - - 4 - jahr: - - 2008 - jahr_renteneintr: - - 2008 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 12 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 24.55813953 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index 85106d2cb2..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 28.10646388 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 13 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 658.614271 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index d5bf55c832..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 6 - jahr: - - 2008 - jahr_renteneintr: - - 2008 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 13 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 28.10646388 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index ee72b0755d..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 11.39568345 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 14 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 234.7086872 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 5ce3848089..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 8 - jahr: - - 2008 - jahr_renteneintr: - - 2008 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 14 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 11.39568345 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml deleted file mode 100644 index 52757c197b..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 33.52380952 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 20 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 364.3709562 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml deleted file mode 100644 index 1a5e530ab1..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.45 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 1990 - geburtsmonat: - - 10 - jahr_renteneintr: - - 2012 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 20 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 33.52380952 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml deleted file mode 100644 index 24b2947114..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 18.04100228 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 16 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 442.0630087 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml deleted file mode 100644 index 38259d20d7..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.45 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1960 - geburtsmonat: - - 2 - jahr_renteneintr: - - 2012 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 16 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 18.04100228 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index 78ee200c1f..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 30.17142857 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 17 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 739.2977554 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index 83db9fcd91..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.72 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 4 - jahr_renteneintr: - - 2012 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 17 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 30.17142857 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index aa1ecba6dd..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 38.70157068 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 18 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 948.3138748 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index ced6a67bd1..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 1.2 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 6 - jahr_renteneintr: - - 2012 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 18 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 38.70157068 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml deleted file mode 100644 index dc96bd65da..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 23.64179104 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 19 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 513.9261994 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml deleted file mode 100644 index 14ba07ce95..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - durchschn_entgeltp_y: - - 0.8 - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1990 - geburtsmonat: - - 8 - jahr_renteneintr: - - 2012 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 19 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 23.64179104 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_1.yaml deleted file mode 100644 index f53c672fad..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_1.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -info: - note: test for _erwerbsm_rente_langj_versicherte_wartezeit - source: Own calculations -inputs: - assumed: - m_alg1_übergang: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_geringf_beschäft: - - 0.0 - m_kind_berücks_zeit: - - 108.0 - m_pfleg_berücks_zeit: - - 0.0 - m_pflichtbeitrag: - - 380.0 - p_id: - - 21 -outputs: - _erwerbsm_rente_langj_versicherte_wartezeit: - - true diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_2.yaml deleted file mode 100644 index d558f56065..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_2.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -info: - note: test for _erwerbsm_rente_langj_versicherte_wartezeit - source: Own calculations -inputs: - assumed: - m_alg1_übergang: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_geringf_beschäft: - - 100.0 - m_kind_berücks_zeit: - - 120.0 - m_pfleg_berücks_zeit: - - 0.0 - m_pflichtbeitrag: - - 200.0 - p_id: - - 22 -outputs: - _erwerbsm_rente_langj_versicherte_wartezeit: - - true diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_3.yaml deleted file mode 100644 index 852da82eeb..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_3.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -info: - note: test for _erwerbsm_rente_langj_versicherte_wartezeit - source: Own calculations -inputs: - assumed: - m_alg1_übergang: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 100.0 - m_geringf_beschäft: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 100.0 - m_pflichtbeitrag: - - 250.0 - p_id: - - 23 -outputs: - _erwerbsm_rente_langj_versicherte_wartezeit: - - true diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_4.yaml deleted file mode 100644 index 801f8d8fb3..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_4.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -info: - note: test for _erwerbsm_rente_langj_versicherte_wartezeit - source: Own calculations -inputs: - assumed: - m_alg1_übergang: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_geringf_beschäft: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_pflichtbeitrag: - - 60.0 - p_id: - - 24 -outputs: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_5.yaml deleted file mode 100644 index d06003af24..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/langj_versicherte_wartezeit_5.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -info: - note: test for _erwerbsm_rente_langj_versicherte_wartezeit - source: Own calculations -inputs: - assumed: - m_alg1_übergang: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_geringf_beschäft: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_pflichtbeitrag: - - 60.0 - p_id: - - 25 -outputs: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml deleted file mode 100644 index 9346f1eecc..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 29.44 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 25 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 389.8368256 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml deleted file mode 100644 index ff24a60fc2..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 1995 - geburtsmonat: - - 10 - jahr: - - 2018 - jahr_renteneintr: - - 2018 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 25 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 29.44 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml deleted file mode 100644 index 6e01ef2dcd..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 16.2035225 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 21 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 448.4934106 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml deleted file mode 100644 index 829ceb62f5..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1960 - geburtsmonat: - - 2 - jahr: - - 2018 - jahr_renteneintr: - - 2018 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 21 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 16.2035225 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index 026b7149dd..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 25.6744186 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 22 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 710.6360707 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index ba48c8b03f..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 4 - jahr: - - 2018 - jahr_renteneintr: - - 2018 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 22 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 25.6744186 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml deleted file mode 100644 index e06297b6d6..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 29.38403042 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 23 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 813.3135258 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml deleted file mode 100644 index 73537b7520..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 6 - jahr: - - 2018 - jahr_renteneintr: - - 2018 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 23 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 29.38403042 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml deleted file mode 100644 index 712900fc42..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 11.91366906 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 24 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 315.5154164 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml deleted file mode 100644 index d279dbd6f1..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1990 - geburtsmonat: - - 8 - jahr: - - 2018 - jahr_renteneintr: - - 2018 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 24 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 11.91366906 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml deleted file mode 100644 index 337943b340..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 61.23076923 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - false - rentenartfaktor: - - 0.5 - p_id: - - 31 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml deleted file mode 100644 index 63fb7c799f..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 2000 - geburtsmonat: - - 10 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 20.0 - monat_renteneintr: - - 2 - p_id: - - 31 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 61.23076923 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - false - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml deleted file mode 100644 index 739c281277..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 61.23076923 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 - p_id: - - 30 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 870.8815569 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml deleted file mode 100644 index 2592abe4ba..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 4.0 - geburtsjahr: - - 2000 - geburtsmonat: - - 10 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 2 - p_id: - - 30 - rentner: - - true - teilw_erwerbsgemind: - - true - voll_erwerbsgemind: - - false - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 61.23076923 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 0.5 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml deleted file mode 100644 index ace6c9954c..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 14.84547069 - erwerbsm_rente_zugangsfaktor: - - 0.997 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 28 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 489.170878 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml deleted file mode 100644 index 1ced261885..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - true - entgeltp_ost: - - 0.0 - entgeltp_west: - - 14.0 - geburtsjahr: - - 1957 - geburtsmonat: - - 6 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 6 - p_id: - - 28 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 14.84547069 - erwerbsm_rente_zugangsfaktor: - - 0.997 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml deleted file mode 100644 index 8c57a87a06..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 26.1459854 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 27 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 770.7993372 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml deleted file mode 100644 index ba2f7814f5..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 18.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 4 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 8 - p_id: - - 27 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 26.1459854 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml deleted file mode 100644 index c6ffa3ba90..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 21.57831325 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 26 - wohnort_ost: - - false -outputs: - erwerbsm_rente_m: - - 636.1416217 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml deleted file mode 100644 index adb38b8fa1..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 15.0 - geburtsjahr: - - 1970 - geburtsmonat: - - 2 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 10 - p_id: - - 26 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - false -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 21.57831325 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml deleted file mode 100644 index 131d704019..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - entgeltp_ost_erwerbsm_rente: - - 17.38834951 - entgeltp_west_erwerbsm_rente: - - 0.0 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 - p_id: - - 29 - wohnort_ost: - - true -outputs: - erwerbsm_rente_m: - - 494.6269037 diff --git a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml deleted file mode 100644 index e0409ebe12..0000000000 --- a/src/_gettsim_tests/test_data/erwerbsm_rente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -info: - note: '' - source: Own calculations -inputs: - assumed: - _erwerbsm_rente_langj_versicherte_wartezeit: - - false - entgeltp_ost: - - 0.0 - entgeltp_west: - - 3.0 - geburtsjahr: - - 1995 - geburtsmonat: - - 8 - jahr: - - 2020 - jahr_renteneintr: - - 2020 - m_ersatzzeit: - - 0.0 - m_freiw_beitrag: - - 0.0 - m_pflichtbeitrag: - - 60.0 - monat_renteneintr: - - 4 - p_id: - - 29 - rentner: - - true - teilw_erwerbsgemind: - - false - voll_erwerbsgemind: - - true - wohnort_ost: - - true -outputs: - entgeltp_ost_erwerbsm_rente: - - 0.0 - entgeltp_west_erwerbsm_rente: - - 17.38834951 - erwerbsm_rente_zugangsfaktor: - - 0.892 - ges_rente_vorauss_erwerbsm: - - true - rentenartfaktor: - - 1.0 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..131fab0766 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 5 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 44.15686275 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 425.5864865 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..22132514dc --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,48 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 10 + p_id: + - 5 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2001 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 44.15686275 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml new file mode 100644 index 0000000000..a05545af94 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 1 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.43875686 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.949 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 363.9402804 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml new file mode 100644 index 0000000000..142a060f35 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -0,0 +1,48 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1940 + geburtsmonat: + - 2 + p_id: + - 1 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2001 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.43875686 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.949 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml new file mode 100644 index 0000000000..a707697265 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 2 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 19.08474576 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.901 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 427.1326353 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml new file mode 100644 index 0000000000..6f7f5fe0db --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -0,0 +1,48 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1941 + geburtsmonat: + - 4 + p_id: + - 2 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2001 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 19.08474576 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.901 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..8642508b05 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 3 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 44.03351955 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 975.6630083 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..fcf7422db1 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,48 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 6 + p_id: + - 3 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2001 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 44.03351955 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..9b3e96883b --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 4 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 30.70909091 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 591.952113 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..0b1ad80e11 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,48 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 8 + p_id: + - 4 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2001 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 30.70909091 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..ab9f4a6bff --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 10 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 24.27586207 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 248.6969821 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..5eef43da7e --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 10 + p_id: + - 10 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.45 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2004 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 24.27586207 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml new file mode 100644 index 0000000000..0cad46197b --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 6 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.14340344 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 352.9618417 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml new file mode 100644 index 0000000000..afc4114afc --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1943 + geburtsmonat: + - 4 + p_id: + - 7 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.72 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2004 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 17.50276243 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.937 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml new file mode 100644 index 0000000000..e4e5b2838c --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 7 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 17.50276243 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.937 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 428.5343098 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml new file mode 100644 index 0000000000..5b2aa37d56 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1945 + geburtsmonat: + - 2 + p_id: + - 6 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.45 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2004 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.14340344 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..a0ab314b43 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 8 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 34.38139535 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 801.3601875 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..b932e02139 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 6 + p_id: + - 8 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 1.2 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2004 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 34.38139535 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..b95387e515 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 9 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 17.40659341 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 356.6478699 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..2e18c4bb63 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 8 + p_id: + - 9 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.8 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2004 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 17.40659341 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..1e4f47ccad --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 15 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 15.64444444 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 161.1086791 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..480a11cbc0 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 10 + p_id: + - 15 + wohnort_ost: + - true + jahr: + - 2008 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2008 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.64444444 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml new file mode 100644 index 0000000000..c77c515e6f --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 11 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.49902153 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 363.1860916 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml new file mode 100644 index 0000000000..4af95f32fb --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1950 + geburtsmonat: + - 2 + p_id: + - 11 + wohnort_ost: + - false + jahr: + - 2008 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2008 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 15.49902153 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml new file mode 100644 index 0000000000..99c1a7b7fd --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 12 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 24.55813953 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 575.4669544 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml new file mode 100644 index 0000000000..296fc0ebe7 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1960 + geburtsmonat: + - 4 + p_id: + - 12 + wohnort_ost: + - false + jahr: + - 2008 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2008 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 24.55813953 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..faf3e09f8f --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 13 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 28.10646388 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 658.614271 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..72e8805293 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 6 + p_id: + - 13 + wohnort_ost: + - false + jahr: + - 2008 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2008 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 28.10646388 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..5aeb342009 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 14 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 11.39568345 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 234.7086872 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..ef8a34e6ba --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 8 + p_id: + - 14 + wohnort_ost: + - true + jahr: + - 2008 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2008 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 11.39568345 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml new file mode 100644 index 0000000000..08a851d609 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 20 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 33.52380952 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 364.3709562 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml new file mode 100644 index 0000000000..9edd1a169c --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1990 + geburtsmonat: + - 10 + p_id: + - 20 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.45 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2012 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 33.52380952 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml new file mode 100644 index 0000000000..f4a94b668a --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 16 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 18.04100228 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 442.0630087 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml new file mode 100644 index 0000000000..4a0cf75674 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1960 + geburtsmonat: + - 2 + p_id: + - 16 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.45 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2012 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 18.04100228 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..665053d3c9 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 17 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 30.17142857 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 739.2977554 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..27f8cc8776 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 4 + p_id: + - 17 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.72 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2012 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 30.17142857 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..df6fe1ad84 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 18 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 38.70157068 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 948.3138748 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..cfda89f870 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 6 + p_id: + - 18 + wohnort_ost: + - false + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 1.2 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2012 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 38.70157068 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml new file mode 100644 index 0000000000..ec5cf3d3df --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 19 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 23.64179104 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 513.9261994 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml new file mode 100644 index 0000000000..08c5b4fefb --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1990 + geburtsmonat: + - 8 + p_id: + - 19 + wohnort_ost: + - true + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + - 0.8 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2012 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 23.64179104 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml new file mode 100644 index 0000000000..6e5e528f7c --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml @@ -0,0 +1,27 @@ +--- +info: + source: Own calculations +inputs: + assumed: + p_id: + - 21 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 108.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 380.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml new file mode 100644 index 0000000000..6b5abf6bed --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml @@ -0,0 +1,27 @@ +--- +info: + source: Own calculations +inputs: + assumed: + p_id: + - 22 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 120.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 200.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 100.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml new file mode 100644 index 0000000000..29e37ae9b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml @@ -0,0 +1,27 @@ +--- +info: + source: Own calculations +inputs: + assumed: + p_id: + - 23 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 100.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 100.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 250.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml new file mode 100644 index 0000000000..be9fc59bcf --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml @@ -0,0 +1,27 @@ +--- +info: + source: Own calculations +inputs: + assumed: + p_id: + - 24 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml new file mode 100644 index 0000000000..9af7006478 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml @@ -0,0 +1,27 @@ +--- +info: + source: Own calculations +inputs: + assumed: + p_id: + - 25 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml new file mode 100644 index 0000000000..5c392b5087 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 25 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 29.44 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 389.8368256 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml new file mode 100644 index 0000000000..fd280e9921 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1995 + geburtsmonat: + - 10 + p_id: + - 25 + wohnort_ost: + - true + jahr: + - 2018 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2018 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 29.44 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml new file mode 100644 index 0000000000..746ff27abd --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 21 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 16.2035225 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 448.4934106 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml new file mode 100644 index 0000000000..1ffb260105 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1960 + geburtsmonat: + - 2 + p_id: + - 21 + wohnort_ost: + - false + jahr: + - 2018 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2018 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 16.2035225 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..1c45716670 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 22 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 25.6744186 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 710.6360707 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..e6c31ad6f7 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 4 + p_id: + - 22 + wohnort_ost: + - false + jahr: + - 2018 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2018 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 25.6744186 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml new file mode 100644 index 0000000000..cf60a61429 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 23 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 29.38403042 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 813.3135258 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml new file mode 100644 index 0000000000..83a18dfacd --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1980 + geburtsmonat: + - 6 + p_id: + - 23 + wohnort_ost: + - false + jahr: + - 2018 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2018 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 29.38403042 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml new file mode 100644 index 0000000000..512768c9a2 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 24 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 11.91366906 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 315.5154164 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml new file mode 100644 index 0000000000..9c6e8b1300 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1990 + geburtsmonat: + - 8 + p_id: + - 24 + wohnort_ost: + - true + jahr: + - 2018 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2018 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 11.91366906 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml new file mode 100644 index 0000000000..5cd0f66ca5 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 31 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 61.23076923 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml new file mode 100644 index 0000000000..caec23e679 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 2000 + geburtsmonat: + - 10 + p_id: + - 31 + wohnort_ost: + - true + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 20.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 61.23076923 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml new file mode 100644 index 0000000000..ce7e43ecb1 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 30 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 61.23076923 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 870.8815569 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml new file mode 100644 index 0000000000..831f647160 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 2000 + geburtsmonat: + - 10 + p_id: + - 30 + wohnort_ost: + - true + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 4.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 61.23076923 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 0.5 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml new file mode 100644 index 0000000000..506c8c3bea --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 28 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 14.84547069 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.997 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 489.170878 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml new file mode 100644 index 0000000000..26a757081a --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1957 + geburtsmonat: + - 6 + p_id: + - 28 + wohnort_ost: + - false + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 14.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - true + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 6 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 14.84547069 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.997 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml new file mode 100644 index 0000000000..130050a25e --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 27 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 26.1459854 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 770.7993372 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml new file mode 100644 index 0000000000..40d0caccc5 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 4 + p_id: + - 27 + wohnort_ost: + - false + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 8 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 26.1459854 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml new file mode 100644 index 0000000000..17f9af6639 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 26 + wohnort_ost: + - false + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 21.57831325 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 636.1416217 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml new file mode 100644 index 0000000000..497b7d72ca --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1970 + geburtsmonat: + - 2 + p_id: + - 26 + wohnort_ost: + - false + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 15.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 10 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 21.57831325 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml new file mode 100644 index 0000000000..850738251b --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + p_id: + - 29 + wohnort_ost: + - true + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 17.38834951 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__betrag_m: + - 494.6269037 diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml new file mode 100644 index 0000000000..6e21743205 --- /dev/null +++ b/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -0,0 +1,50 @@ +--- +info: + note: '' + source: Own calculations +inputs: + assumed: + geburtsjahr: + - 1995 + geburtsmonat: + - 8 + p_id: + - 29 + wohnort_ost: + - true + jahr: + - 2020 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 3.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: + - false + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__monat_renteneintritt: + - 4 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + provided: {} +outputs: + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: + - 17.38834951 + sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__erwerbsminderung__rentenartfaktor: + - 1.0 + sozialversicherung__rente__erwerbsminderung__zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml index 2926ec331c..574f3b1eda 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml @@ -4,73 +4,74 @@ info: source: own calculations inputs: assumed: - p_id: - - 26 - - 27 - p_id_elternteil_1: - - -1 - - 26 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - p_id_erziehgeld_empf: - - -1 - - 26 - hh_id: - - 9 - - 9 + familie__alleinerziehend: + - true + - false alter: - 30 - 1 + arbeitsstunden_w: + - 20.0 + - 0.0 geburtsjahr: - 1975 - 2004 - geburtstag: + geburtsmonat: - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - arbeitsstunden_w: - - 20.0 - - 0.0 - in_ausbildung: - - false + hh_id: + - 9 + - 9 + familie__kind: - false - bruttolohn_m: + - true + p_id: + - 26 + - 27 + familie__p_id_elternteil_1: + - -1 + - 26 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1500.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1500.0 - 0.0 - ges_pflegev_hat_kinder: - - true - - false - kind: + erziehungsgeld__budgetsatz: - false - true - alleinerz: - - true + erziehungsgeld__p_id_empfänger: + - -1 + - 26 + kindergeld__in_ausbildung: - false - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: - true + - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 12980.8 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 13500 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 450.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 12980.8 + erziehungsgeld__betrag_m: - 450.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml index 1e0604f849..af0202b11b 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml @@ -4,73 +4,74 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 25 + - 1 + arbeitsstunden_w: + - 29.0 + - 0.0 + geburtsjahr: + - 1980 + - 2004 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 hh_id: - 3 - 3 + familie__kind: + - false + - true p_id: - 6 - 7 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 6 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - 6 - alter: - - 25 - - 1 - arbeitsstunden_w: - - 29.0 - - 0.0 - in_ausbildung: - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1700.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1700.0 - 0.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - ges_pflegev_hat_kinder: - - true + erziehungsgeld__budgetsatz: - false - kind: - false - - true - alleinerz: - - true + erziehungsgeld__p_id_empfänger: + - -1 + - 6 + kindergeld__in_ausbildung: - false - geburtsjahr: - - 1980 - - 2004 - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 14804.8 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 13500 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 235.8 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 14804.8 + erziehungsgeld__betrag_m: - 235.8 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml index 9111faa592..f4b7ff9f1a 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml @@ -4,73 +4,74 @@ info: source: own calculations inputs: assumed: - p_id: - - 1 - - 2 - p_id_elternteil_1: - - -1 - - 1 - p_id_elternteil_2: - - -1 + arbeitslosengeld_2__p_id_einstandspartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - 1 - hh_id: - - 1 - - 1 + familie__alleinerziehend: + - true + - false alter: - 30 - 1 + arbeitsstunden_w: + - 20.0 + - 0.0 geburtsjahr: - 1975 - 2004 + geburtsmonat: + - 1 + - 1 geburtstag: - 1 - 1 - geburtsmonat: + hh_id: - 1 - 1 - arbeitsstunden_w: - - 20.0 - - 0.0 - in_ausbildung: - - false + familie__kind: - false - bruttolohn_m: + - true + p_id: + - 1 + - 2 + familie__p_id_elternteil_1: + - -1 + - 1 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1500.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1500.0 - 0.0 - ges_pflegev_hat_kinder: - - true + erziehungsgeld__budgetsatz: - false - kind: - false - - true - alleinerz: - - true + erziehungsgeld__p_id_empfänger: + - -1 + - 1 + kindergeld__in_ausbildung: - false - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 12980.8 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 13500 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 300.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 12980.8 + erziehungsgeld__betrag_m: - 300.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml index 952a0e80d3..a6696e98c6 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml @@ -4,96 +4,97 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 12 + - 11 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 40 + - 0 + arbeitsstunden_w: + - 29.0 + - 40.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2004 + geburtsmonat: + - 1 + - 1 + - 8 + geburtstag: + - 1 + - 1 + - 1 hh_id: - 5 - 5 - 5 + familie__kind: + - false + - false + - true p_id: - 11 - 12 - 13 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 11 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 12 - p_id_einstandspartner: - - 12 - - 11 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 11 - alter: - - 40 - - 40 - - 0 - arbeitsstunden_w: - - 29.0 - - 40.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 5000.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1400.0 - 5000.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1400.0 - 5000.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 8 - ges_pflegev_hat_kinder: - - true - - true - - false - kind: + erziehungsgeld__budgetsatz: - false - false - true - alleinerz: - - false - - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 11 + kindergeld__in_ausbildung: - false - geburtsjahr: - - 1965 - - 1965 - - 2004 - budgetsatz_erzieh: - false - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true - true + - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 56969.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 22086 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 0.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 56969.6 + erziehungsgeld__betrag_m: - 0.0 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml index 0f7bb15665..a0f41e50ba 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml @@ -4,96 +4,97 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 9 + - 8 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 40 + - 0 + arbeitsstunden_w: + - 29.0 + - 40.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2004 + geburtsmonat: + - 1 + - 1 + - 8 + geburtstag: + - 1 + - 1 + - 1 hh_id: - 4 - 4 - 4 + familie__kind: + - false + - false + - true p_id: - 8 - 9 - 10 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 8 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 9 - p_id_einstandspartner: - - 9 - - 8 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 8 - alter: - - 40 - - 40 - - 0 - arbeitsstunden_w: - - 29.0 - - 40.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 3000.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1400.0 - 3000.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1400.0 - 3000.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 8 - ges_pflegev_hat_kinder: - - true - - true - - false - kind: + erziehungsgeld__budgetsatz: - false - false - true - alleinerz: - - false - - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 8 + kindergeld__in_ausbildung: - false - geburtsjahr: - - 1965 - - 1965 - - 2004 - budgetsatz_erzieh: - false - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true - true + - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 38729.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 22086 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 0.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 38729.6 + erziehungsgeld__betrag_m: - 0.0 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml index 0a73728e93..ce8d3e8b07 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml @@ -4,96 +4,97 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 4 + - 3 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 30 + - 1 + arbeitsstunden_w: + - 20.0 + - 40.0 + - 0.0 + geburtsjahr: + - 1975 + - 1975 + - 2004 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 hh_id: - 2 - 2 - 2 + familie__kind: + - false + - false + - true p_id: - 3 - 4 - 5 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 3 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 4 - p_id_einstandspartner: - - 4 - - 3 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 3 - alter: - - 30 - - 30 - - 1 - kind: - - false - - false - - true - arbeitsstunden_w: - - 20.0 - - 40.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2500.0 - 2500.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 2500.0 - 2500.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 2500.0 - 2500.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - ges_pflegev_hat_kinder: - - true - - true + erziehungsgeld__budgetsatz: - false - alleinerz: - false - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 3 + kindergeld__in_ausbildung: - false - geburtsjahr: - - 1975 - - 1975 - - 2004 - budgetsatz_erzieh: - false - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 44201.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 16500 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 108.4597333 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 44201.6 + erziehungsgeld__betrag_m: - 108.4597333 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 16500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 6d3eca3a81..973bedccf6 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -4,119 +4,120 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 40 + - 0 + - 0 + arbeitsstunden_w: + - 29.0 + - 29.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2004 + - 2004 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 8 - 8 - 8 - 8 + familie__kind: + - false + - false + - true + - true p_id: - 22 - 23 - 24 - 25 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 22 - 22 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 23 - 23 - p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 22 - - 22 - alter: - - 40 - - 40 - - 0 - - 0 - arbeitsstunden_w: - - 29.0 - - 29.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - ges_pflegev_hat_kinder: - - true - - true + erziehungsgeld__budgetsatz: - false - false - kind: - - false - - false - - true - true - alleinerz: - - false - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + kindergeld__in_ausbildung: - false - false - geburtsjahr: - - 1965 - - 1965 - - 2004 - - 2004 - budgetsatz_erzieh: - false - false + sozialversicherung__pflege__beitrag__hat_kinder: - true + - true + - false - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 26873.6 - - 26873.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 19640 - - 33140 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 333.55 - 300.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 26873.6 + - 26873.6 + erziehungsgeld__betrag_m: - 633.55 - 0.0 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 33140 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 2e44718ab0..1576e40c72 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -4,124 +4,125 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 40 + - 0 + - 0 + arbeitsstunden_w: + - 29.0 + - 40.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2004 + - 2004 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 6 - 6 - 6 - 6 + familie__kind: + - false + - false + - true + - true p_id: - 14 - 15 - 16 - 17 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 14 - 14 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 15 - 15 - p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 14 - - 14 - alter: - - 40 - - 40 - - 0 - - 0 - arbeitsstunden_w: - - 29.0 - - 40.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 400.0 - 1300.0 - 0.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 400.0 - 1300.0 - 0.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 400.0 - 1300.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - ges_pflegev_hat_kinder: - - true - - true + erziehungsgeld__budgetsatz: - false - false - kind: - false - - false - - true - true - alleinerz: - - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 14 + - 14 + kindergeld__in_ausbildung: - false - false - false - geburtsjahr: - - 1965 - - 1965 - - 2004 - - 2004 - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true - false - false - - true + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 14105.6 - - 14105.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 19640 - - 25226 - erziehungsgeld_kind_m: + arbeitslosengeld_2__anzahl_kinder_fg: + - 2 + - 2 + - 2 + - 2 + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 300.0 - 450.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 14105.6 + - 14105.6 + erziehungsgeld__betrag_m: - 750.0 - 0.0 - 0.0 - 0.0 - anz_kinder_mit_kindergeld_fg: - - 2 - - 2 - - 2 - - 2 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 25226 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml index b46b749b83..54eed281cb 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml @@ -4,73 +4,74 @@ info: source: own calculations inputs: assumed: - p_id: - - 30 - - 31 - p_id_elternteil_1: - - -1 - - 30 - p_id_elternteil_2: - - -1 + arbeitslosengeld_2__p_id_einstandspartner: - -1 - p_id_einstandspartner: - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - 30 - hh_id: - - 11 - - 11 + familie__alleinerziehend: + - true + - false alter: - 30 - 1 + arbeitsstunden_w: + - 20.0 + - 0.0 geburtsjahr: - 1975 - 2007 - geburtstag: + geburtsmonat: - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - arbeitsstunden_w: - - 20.0 - - 0.0 - in_ausbildung: - - false + hh_id: + - 11 + - 11 + familie__kind: - false - bruttolohn_m: + - true + p_id: + - 30 + - 31 + familie__p_id_elternteil_1: + - -1 + - 30 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1500.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1500.0 - 0.0 - ges_pflegev_hat_kinder: - - true - - false - kind: + erziehungsgeld__budgetsatz: - false - true - alleinerz: - - true + erziehungsgeld__p_id_empfänger: + - -1 + - 30 + kindergeld__in_ausbildung: - false - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: - true + - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - 0.0 - erziehungsgeld_kind_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 - 0.0 + erziehungsgeld__betrag_m: - 0.0 - erziehungsgeld_m: - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 - 0.0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 8473f5a7b3..58106e60da 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -4,119 +4,120 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 40 + - 0 + - 0 + arbeitsstunden_w: + - 29.0 + - 29.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2006 + - 2006 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 8 - 8 - 8 - 8 + familie__kind: + - false + - false + - true + - true p_id: - 22 - 23 - 24 - 25 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 22 - 22 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 23 - 23 - p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 22 - - 22 - alter: - - 40 - - 40 - - 0 - - 0 - arbeitsstunden_w: - - 29.0 - - 29.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 1400.0 - 1700.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - ges_pflegev_hat_kinder: - - true - - true + erziehungsgeld__budgetsatz: - false - false - kind: - - false - - false - - true - true - alleinerz: - - false - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + kindergeld__in_ausbildung: - false - false - geburtsjahr: - - 1965 - - 1965 - - 2006 - - 2006 - budgetsatz_erzieh: - false - false + sozialversicherung__pflege__beitrag__hat_kinder: - true + - true + - false - false + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 26873.6 - - 26873.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 19640 - - 33140 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 333.55 - 300.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 26873.6 + - 26873.6 + erziehungsgeld__betrag_m: - 633.55 - 0.0 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 33140 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 2fdbf0116c..4be2f14c9c 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -4,119 +4,120 @@ info: source: own calculations inputs: assumed: + arbeitslosengeld_2__p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 40 + - 0 + - 0 + arbeitsstunden_w: + - 29.0 + - 40.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1965 + - 1965 + - 2006 + - 2006 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 6 - 6 - 6 - 6 + familie__kind: + - false + - false + - true + - true p_id: - 14 - 15 - 16 - 17 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 14 - 14 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 15 - 15 - p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 - p_id_erziehgeld_empf: - - -1 - - -1 - - 14 - - 14 - alter: - - 40 - - 40 - - 0 - - 0 - arbeitsstunden_w: - - 29.0 - - 40.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 400.0 - 1300.0 - 0.0 - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 400.0 - 1300.0 - 0.0 - 0.0 - elterngeld_nettoeinkommen_vorjahr_m: + elterngeld__nettoeinkommen_vorjahr_m: - 400.0 - 1300.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - ges_pflegev_hat_kinder: - - true - - true + erziehungsgeld__budgetsatz: - false - false - kind: - false - - false - - true - true - alleinerz: - - false + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 14 + - 14 + kindergeld__in_ausbildung: - false - false - false - geburtsjahr: - - 1965 - - 1965 - - 2006 - - 2006 - budgetsatz_erzieh: - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true - false - false - - true + provided: {} outputs: - erziehungsgeld_eink_relev_kind_y: - - 0 - - 0 - - 14105.6 - - 14105.6 - _erziehungsgeld_einkommensgrenze_kind_y: - - 0 - - 0 - - 19640 - - 25226 - erziehungsgeld_kind_m: + erziehungsgeld__anspruchshöhe_kind_m: - 0.0 - 0.0 - 300.0 - 450.0 - erziehungsgeld_m: + erziehungsgeld__anzurechnendes_einkommen_y: + - 0 + - 0 + - 14105.6 + - 14105.6 + erziehungsgeld__betrag_m: - 750.0 - 0.0 - 0.0 - 0.0 + erziehungsgeld__einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 25226 diff --git a/src/_gettsim_tests/test_data/favorability_check/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/favorability_check/2010/hh_id_4.yaml deleted file mode 100644 index 90f78cee30..0000000000 --- a/src/_gettsim_tests/test_data/favorability_check/2010/hh_id_4.yaml +++ /dev/null @@ -1,78 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - hh_id: - - 4 - - 4 - - 4 - - 4 - p_id: - - 5 - - 6 - - 7 - - 8 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 - kind: - - false - - false - - true - - true - eink_st_ohne_kinderfreib_y_sn: - - 20000.0 - - 20000.0 - - 0.0 - - 0.0 - eink_st_mit_kinderfreib_y_sn: - - 18000.0 - - 18000.0 - - 0.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 142992.0 - - 142992.0 - - 10.0 - - 10.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 150000.0 - - 150000.0 - - 10.0 - - 10.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_st_rel_kindergeld_m: - - 194.0 - - 194.0 - - 0.0 - - 0.0 - jahr: - - 2010 - - 2010 - - 2010 - - 2010 - assumed: {} -outputs: - eink_st_y_sn: - - 20000.0 - - 20000.0 - - 0.0 - - 0.0 - zu_verst_eink_y_sn: - - 150000.0 - - 150000.0 - - 10.0 - - 10.0 diff --git a/src/_gettsim_tests/test_data/favorability_check/2012/hh_id_2.yaml b/src/_gettsim_tests/test_data/favorability_check/2012/hh_id_2.yaml deleted file mode 100644 index 6c3a773995..0000000000 --- a/src/_gettsim_tests/test_data/favorability_check/2012/hh_id_2.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - hh_id: - - 2 - p_id: - - 4 - gemeinsam_veranlagt: - - false - p_id_ehepartner: - - -1 - kind: - - false - eink_st_ohne_kinderfreib_y_sn: - - 5000.0 - eink_st_mit_kinderfreib_y_sn: - - 5000.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 5000.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 5000.0 - abgelt_st_y_sn: - - 3000.0 - eink_st_rel_kindergeld_m: - - 0.0 - jahr: - - 2012 - assumed: {} -outputs: - eink_st_y_sn: - - 5000 - zu_verst_eink_y_sn: - - 5000 diff --git a/src/_gettsim_tests/test_data/favorability_check/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/favorability_check/2016/hh_id_1.yaml deleted file mode 100644 index 76ac562923..0000000000 --- a/src/_gettsim_tests/test_data/favorability_check/2016/hh_id_1.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - hh_id: - - 1 - - 1 - - 1 - p_id: - - 1 - - 2 - - 3 - kind: - - false - - false - - true - gemeinsam_veranlagt: - - true - - true - - false - p_id_ehepartner: - - 2 - - 1 - - -1 - eink_st_ohne_kinderfreib_y_sn: - - 10000.0 - - 10000.0 - - 0.0 - eink_st_mit_kinderfreib_y_sn: - - 7000.0 - - 7000.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 92752.0 - - 92752.0 - - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 10000.0 - - 10000.0 - - 0.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - eink_st_rel_kindergeld_m: - - 97.0 - - 97.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - assumed: {} -outputs: - eink_st_y_sn: - - 9328 - - 9328 - - 0 - zu_verst_eink_y_sn: - - 92752 - - 92752 - - 0 diff --git a/src/_gettsim_tests/test_data/favorability_check/skip_2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/favorability_check/skip_2019/hh_id_5.yaml deleted file mode 100644 index 6a84aea78d..0000000000 --- a/src/_gettsim_tests/test_data/favorability_check/skip_2019/hh_id_5.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - hh_id: - - 5 - - 5 - - 5 - p_id: - - 9 - - 10 - - 11 - gemeinsam_veranlagt: - - true - - true - - false - p_id_ehepartner: - - 10 - - 9 - - -1 - kind: - - false - - false - - true - eink_st_ohne_kinderfreib_y_sn: - - 12000.0 - - 12000.0 - - 0.0 - eink_st_mit_kinderfreib_y_sn: - - 10000.0 - - 10000.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 109740.0 - - 109740.0 - - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 120000.0 - - 120000.0 - - 0.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - eink_st_rel_kindergeld_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - - 2019 - assumed: {} -outputs: - eink_st_y_sn: - - 19344.0 - - 19344.0 - - 0.0 - zu_verst_eink_y_sn: - - 109740.0 - - 109740.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2008/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2008/hh_id_1.yaml deleted file mode 100644 index 14c5b9be3b..0000000000 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2008/hh_id_1.yaml +++ /dev/null @@ -1,393 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - hh_id: - - 1 - - 1 - - 1 - - 1 - p_id: - - 1 - - 2 - - 3 - - 4 - p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - gemeinsam_veranlagt: - - false - - false - - false - - false - p_id_kindergeld_empf: - - -1 - - -1 - - -1 - - -1 - vermögen_bedürft: - - 5500.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 300.0 - - 600.0 - - 900.0 - - 1200.0 - alter: - - 61 - - 62 - - 37 - - 49 - weiblich: - - false - - true - - false - - true - selbstständig: - - false - - false - - false - - false - wohnort_ost: - - false - - false - - false - - true - ges_pflegev_hat_kinder: - - false - - false - - false - - true - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - in_priv_krankenv: - - false - - false - - false - - false - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_vorj_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - elterngeld_claimed: - - true - - true - - true - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 013176.0 - - 025188.0 - - 037200.0 - - 049212.0 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - - 20.0 - geburtsjahr: - - 1958 - - 1957 - - 1982 - - 1970 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - mietstufe: - - 3 - - 3 - - 3 - - 3 - entgeltp_west: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - entgeltp_ost: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kind: - - false - - false - - false - - false - rentner: - - false - - false - - false - - false - betreuungskost_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - - -1 - - -1 - kapitaleink_brutto_m: - - 200.0 - - 200.0 - - 200.0 - - 200.0 - eink_vermietung_m: - - 0.0 - - 1.0 - - 2.0 - - 3.0 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - jahr_renteneintr: - - 2061 - - 2062 - - 2063 - - 2064 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - - 0 - in_ausbildung: - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - bewohnt_eigentum_hh: - - false - - false - - false - - false - immobilie_baujahr_hh: - - 3 - - 3 - - 3 - - 3 - sonstig_eink_m: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - grundr_entgeltp: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - grundr_zeiten: - - 43 - - 44 - - 19 - - 31 - grundr_bew_zeiten: - - 43 - - 44 - - 19 - - 31 - priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - schwerbeh_g: - - false - - false - - false - - false - m_pflichtbeitrag: - - 456.0 - - 468.0 - - 168.0 - - 312.0 - m_freiw_beitrag: - - 5.0 - - 5.0 - - 5.0 - - 5.0 - m_mutterschutz: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_arbeitsunfähig: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_arbeitsl: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_ausbild_suche: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_schul_ausbild: - - 12.0 - - 12.0 - - 12.0 - - 12.0 - m_geringf_beschäft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_alg1_übergang: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_ersatzzeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_kind_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - y_pflichtbeitr_ab_40: - - 3.0 - - 4.0 - - 0.0 - - 0.0 - anwartschaftszeit: - - true - - true - - true - - true - arbeitssuchend: - - false - - false - - false - - false - m_durchg_alg1_bezug: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialv_pflicht_5j: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - kind_unterh_anspr_m: - - 177.0 - - 177.0 - - 177.0 - - 177.0 - kind_unterh_erhalt_m: - - 177.0 - - 177.0 - - 177.0 - - 177.0 - steuerklasse: - - 4 - - 4 - - 1 - - 1 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - assumed: {} -outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml index 779ab85337..c3b9502a36 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml @@ -3,381 +3,396 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 1 - - 1 - - 1 - - 1 - p_id: - - 1 - - 2 - - 3 - - 4 - p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false - false - false - gemeinsam_veranlagt: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - false - false - p_id_kindergeld_empf: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - -1 - -1 - vermögen_bedürft: - - 5500.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 300.0 - - 600.0 - - 900.0 - - 1200.0 + familie__alleinerziehend: + - false + - false + - false + - false alter: - 61 - 62 - 37 - 49 - weiblich: - - false - - true - - false - - true - selbstständig: - - false - - false - - false - - false - wohnort_ost: - - false - - false - - false - - true - ges_pflegev_hat_kinder: - - false - - false - - false - - true - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - in_priv_krankenv: - - false - - false - - false - - false - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_vorj_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - elterngeld_claimed: - - true - - true - - true - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 012606.0 - - 024618.0 - - 036630.0 - - 048642.0 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 20.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 geburtsjahr: - 1958 - 1957 - 1982 - 1970 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 geburtstag: - 1 - 1 - 1 - 1 - geburtsmonat: + hh_id: - 1 - 1 - 1 - 1 - mietstufe: - - 3 - - 3 - - 3 + familie__kind: + - false + - false + - false + - false + p_id: + - 1 + - 2 - 3 - entgeltp_west: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - entgeltp_ost: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kind: + - 4 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + schwerbehindert_grad_g: - false - false - false - false - rentner: + vermögen: + - 5500.0 + - 0.0 + - 0.0 + - 0.0 + weiblich: + - false + - true - false + - true + wohnort_ost: - false - false - false - betreuungskost_m: + - true + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 - 0.0 - 0.0 - p_id_betreuungsk_träger: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - -1 - -1 - -1 - kapitaleink_brutto_m: + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 200.0 - 200.0 - 200.0 - 200.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + - 600.0 + - 900.0 + - 1200.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 1000.0 + - 2000.0 + - 3000.0 + - 4000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 1.0 - 2.0 - 3.0 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - jahr_renteneintr: - - 2061 - - 2062 - - 2063 - - 2064 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - 50.0 - 50.0 - 50.0 - monate_elterngeldbezug: + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + elterngeld__bisherige_bezugsmonate: - 0 - 0 - 0 - 0 - in_ausbildung: + elterngeld__claimed: + - true + - true + - true + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 1000.0 + - 2000.0 + - 3000.0 + - 4000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 12606.0 + - 24618.0 + - 36630.0 + - 48642.0 + kindergeld__in_ausbildung: - false - false - false - false - alleinerz: + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + lohnsteuer__steuerklasse: + - 4 + - 4 + - 1 + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + - true + - true + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - false - false - false - bewohnt_eigentum_hh: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - false - false - false - immobilie_baujahr_hh: - - 3 - - 3 - - 3 - - 3 - sonstig_eink_m: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - grundr_entgeltp: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - grundr_zeiten: - - 43 - - 44 - - 19 - - 31 - grundr_bew_zeiten: - - 43 - - 44 - - 19 - - 31 - priv_rente_m: + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false + - false + - true + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 3.0 + - 4.0 + - 0.0 + - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - schwerbeh_g: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: - false - false - false - false - m_pflichtbeitrag: - - 456.0 - - 468.0 - - 168.0 - - 312.0 - m_freiw_beitrag: - - 5.0 - - 5.0 - - 5.0 - - 5.0 - m_mutterschutz: + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - 0.0 - 0.0 - 0.0 - m_arbeitsunfähig: - - 0.0 - - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + - false + - true + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - 0.0 - m_krank_ab_16_bis_24: - 0.0 - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + sozialversicherung__rente__entgeltpunkte_west: + - 6.2776 + - 6.2776 + - 6.2776 + - 6.2776 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - 0.0 - m_arbeitsl: - 0.0 - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + - 5.0 + - 5.0 + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 43 + - 44 + - 19 + - 31 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 43 + - 44 + - 19 + - 31 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 6.2776 + - 6.2776 + - 6.2776 + - 6.2776 + sozialversicherung__rente__jahr_renteneintritt: + - 2061 + - 2062 + - 2063 + - 2064 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - 0.0 - m_ausbild_suche: - 0.0 - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - 0.0 - m_schul_ausbild: - - 12.0 - - 12.0 - - 12.0 - - 12.0 - m_geringf_beschäft: - 0.0 - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - 0.0 - m_alg1_übergang: - 0.0 - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - 0.0 - m_ersatzzeit: - 0.0 - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 456.0 + - 468.0 + - 168.0 + - 312.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - m_kind_berücks_zeit: - 0.0 - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + - 12.0 + - 12.0 + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - 0.0 - m_pfleg_berücks_zeit: - 0.0 - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - 0.0 - y_pflichtbeitr_ab_40: - - 3.0 - - 4.0 - 0.0 - 0.0 - anwartschaftszeit: - - true - - true - - true - - true - arbeitssuchend: - - false - - false - - false - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_pflicht_5j: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - kind_unterh_anspr_m: + unterhalt__anspruch_m: - 177.0 - 177.0 - 177.0 - 177.0 - kind_unterh_erhalt_m: + unterhalt__tatsächlich_erhaltener_betrag_m: - 177.0 - 177.0 - 177.0 - 177.0 - steuerklasse: - - 4 - - 4 - - 1 - - 1 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - assumed: {} + wohnen__baujahr_immobilie_hh: + - 3 + - 3 + - 3 + - 3 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml index c2eb8ce54d..4905bf1131 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml @@ -3,381 +3,396 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 67 + - 34 + - 37 + - 48 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1952 + - 1985 + - 1982 + - 1971 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 2 - 2 - 2 - 2 + familie__kind: + - false + - false + - false + - false p_id: - 5 - 6 - 7 - 8 - p_id_elternteil_1: - - -1 - - -1 - - -1 + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: - -1 - -1 - -1 + familie__p_id_elternteil_1: - -1 - p_id_ehepartner: - -1 - -1 - -1 + familie__p_id_elternteil_2: - -1 - p_id_einstandspartner: - -1 - -1 - -1 - - -1 - eigenbedarf_gedeckt: - - false + schwerbehindert_grad_g: - false - false - false - gemeinsam_veranlagt: - false + vermögen: + - 5500.0 + - 0.0 + - 0.0 + - 0.0 + weiblich: - false + - true - false - false - p_id_kindergeld_empf: + wohnort_ost: + - true + - true + - true + - true + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - -1 - -1 - -1 - vermögen_bedürft: - - 5500.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 - 0.0 - 0.0 - 0.0 - bruttolohn_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 200.0 + - 201.0 + - 202.0 + - 203.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 5000.0 - 300.0 - 600.0 - alter: - - 67 - - 34 - - 37 - - 48 - weiblich: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 7000.0 + - 2500.0 + - 2300.0 + - 1000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 4.0 + - 5.0 + - 6.0 + - 7.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false - false - - true - false - false - selbstständig: + einkommensteuer__einkünfte__sonstige__betrag_m: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + einkommensteuer__gemeinsam_veranlagt: - false - false - false - false - wohnort_ost: + elterngeld__bisherige_bezugsmonate: + - 0 + - 0 + - 0 + - 0 + elterngeld__claimed: - true - true - true - true - ges_pflegev_hat_kinder: + elterngeld__nettoeinkommen_vorjahr_m: + - 7000.0 + - 2500.0 + - 2300.0 + - 1000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 84654.0 + - 30678.0 + - 28302.0 + - 12726.0 + kindergeld__in_ausbildung: + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + lohnsteuer__steuerklasse: + - 1 + - 1 + - 1 + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + - true - true - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - false - eink_selbst_m: + - false + - false + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - 0.0 - 0.0 - 0.0 - in_priv_krankenv: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - false - false - false - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_vorj_m: - - 7000.0 - - 2500.0 - - 2300.0 - - 1000.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 7000.0 - - 2500.0 - - 2300.0 - - 1000.0 - elterngeld_claimed: - - true + sozialversicherung__pflege__beitrag__hat_kinder: - true - true - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 084654.0 - - 030678.0 - - 028302.0 - - 012726.0 - arbeitsstunden_w: + - false + - false + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + - false + - false + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1952 - - 1985 - - 1982 - - 1971 - geburtstag: + sozialversicherung__rente__monat_renteneintritt: - 1 - 1 - 1 - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - mietstufe: - - 3 - - 3 - - 3 - - 3 - entgeltp_west: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 8.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - entgeltp_ost: - - 6.2776 - - 6.2776 - - 1.7936 - - 1.7936 - kind: - - false - - false - - false - - false - rentner: - - false - - false - - false - - false - betreuungskost_m: - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - - -1 - - -1 - kapitaleink_brutto_m: - - 200.0 - - 201.0 - - 202.0 - - 203.0 - eink_vermietung_m: - - 4.0 - - 5.0 - - 6.0 - - 7.0 - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - jahr_renteneintr: - - 2065 - - 2066 - - 2067 - - 2068 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - monate_elterngeldbezug: - - 0 - - 0 - - 0 - - 0 - in_ausbildung: - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - bewohnt_eigentum_hh: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: - false - false - false - false - immobilie_baujahr_hh: - - 3 - - 3 - - 3 - - 3 - sonstig_eink_m: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: - 6.2776 - 6.2776 - 1.7936 - 1.7936 - grundr_zeiten: - - 49 - - 16 - - 19 - - 30 - grundr_bew_zeiten: - - 49 - - 16 - - 19 - - 30 - priv_rente_m: + sozialversicherung__rente__entgeltpunkte_west: - 0.0 - 0.0 - 0.0 - 0.0 - schwerbeh_g: - - false - - false - - false - - false - m_pflichtbeitrag: - - 528.0 - - 132.0 - - 168.0 - - 300.0 - m_freiw_beitrag: + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 - 5.0 - 5.0 - 5.0 - m_mutterschutz: + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 49 + - 16 + - 19 + - 30 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 49 + - 16 + - 19 + - 30 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 6.2776 + - 6.2776 + - 1.7936 + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2065 + - 2066 + - 2067 + - 2068 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - 0.0 - 0.0 - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - 0.0 - 0.0 - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - 0.0 - 0.0 - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - 0.0 - 0.0 - 0.0 - m_ausbild_suche: + sozialversicherung__rente__pflichtbeitragsmonate: + - 528.0 + - 132.0 + - 168.0 + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - m_schul_ausbild: + sozialversicherung__rente__monate_in_schulausbildung: - 12.0 - 12.0 - 12.0 - 12.0 - m_geringf_beschäft: - - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - 0.0 - 0.0 - m_alg1_übergang: - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - 0.0 - 0.0 - m_ersatzzeit: - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_kind_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - y_pflichtbeitr_ab_40: - - 8.0 - - 0.0 - - 0.0 - - 0.0 - anwartschaftszeit: - - true - - true - - true - - true - arbeitssuchend: - - false - - false - - false - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_pflicht_5j: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - kind_unterh_anspr_m: + unterhalt__anspruch_m: - 177.0 - 177.0 - 177.0 - 0.0 - kind_unterh_erhalt_m: + unterhalt__tatsächlich_erhaltener_betrag_m: - 177.0 - 177.0 - 177.0 - 0.0 - steuerklasse: - - 1 - - 1 - - 1 - - 1 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - assumed: {} + wohnen__baujahr_immobilie_hh: + - 3 + - 3 + - 3 + - 3 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml index 6b654a6452..0718d73c38 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 3 - p_id: - - 9 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_ehepartner: - - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - gemeinsam_veranlagt: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id_kindergeld_empf: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - vermögen_bedürft: - - 5500.0 - bruttolohn_m: - - 900.0 + familie__alleinerziehend: + - false alter: - 51 - weiblich: - - true - selbstständig: - - false - wohnort_ost: - - true - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - in_priv_krankenv: - - false - priv_rentenv_beitr_m: - - 0.0 - bruttolohn_vorj_m: - - 2000.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 2000.0 - elterngeld_claimed: - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 024750.0 arbeitsstunden_w: - 0.0 + behinderungsgrad: + - 0 geburtsjahr: - 1968 - geburtstag: - - 1 geburtsmonat: - 1 - mietstufe: + geburtstag: + - 1 + hh_id: - 3 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 1.7936 - kind: + familie__kind: - false - rentner: + p_id: + - 9 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: - false - betreuungskost_m: + vermögen: + - 5500.0 + weiblich: + - true + wohnort_ost: + - true + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - p_id_betreuungsk_träger: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - kapitaleink_brutto_m: + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 204.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 8.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2069 - behinderungsgrad: - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + einkommensteuer__gemeinsam_veranlagt: - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 2000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 24750.0 + kindergeld__in_ausbildung: - false - bewohnt_eigentum_hh: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: - - 1.7936 - grundr_zeiten: - - 33 - grundr_bew_zeiten: - - 33 - priv_rente_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - schwerbeh_g: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - m_pflichtbeitrag: - - 336.0 - m_freiw_beitrag: - - 5.0 - m_mutterschutz: + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_arbeitsl: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: + - 1.7936 + sozialversicherung__rente__entgeltpunkte_west: - 0.0 - m_schul_ausbild: - - 12.0 - m_geringf_beschäft: + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 33 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 33 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2069 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - y_pflichtbeitr_ab_40: + sozialversicherung__rente__pflichtbeitragsmonate: + - 336.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: - - false - kind_unterh_anspr_m: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - kind_unterh_erhalt_m: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: + unterhalt__anspruch_m: - 0.0 - assumed: {} + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml index 9fe314c90c..a3c1a2636d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 55 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1964 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 4 + familie__kind: + - false p_id: - 10 - p_id_elternteil_1: + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: + familie__p_id_elternteil_1: - -1 - p_id_ehepartner: + familie__p_id_elternteil_2: - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: - - false - gemeinsam_veranlagt: + schwerbehindert_grad_g: - false - p_id_kindergeld_empf: - - -1 - vermögen_bedürft: + vermögen: - 5500.0 - bruttolohn_m: - - 1200.0 - alter: - - 55 weiblich: - false - selbstständig: - - false wohnort_ost: - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - in_priv_krankenv: - - false - priv_rentenv_beitr_m: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - bruttolohn_vorj_m: - - 3000.0 - elterngeld_nettoeinkommen_vorjahr_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 205.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 3000.0 - elterngeld_claimed: - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 036774.0 - arbeitsstunden_w: - - 0.0 - geburtsjahr: - - 1964 - geburtstag: - - 1 - geburtsmonat: - - 1 - mietstufe: - - 3 - entgeltp_west: - - 1.7936 - entgeltp_ost: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - kind: - - false - rentner: - - false - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - kapitaleink_brutto_m: - - 205.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 9.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2070 - behinderungsgrad: - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + einkommensteuer__gemeinsam_veranlagt: - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 3000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 36774.0 + kindergeld__in_ausbildung: - false - bewohnt_eigentum_hh: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: - - 1.7936 - grundr_zeiten: - - 37 - grundr_bew_zeiten: - - 37 - priv_rente_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - schwerbeh_g: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - m_pflichtbeitrag: - - 384.0 - m_freiw_beitrag: - - 5.0 - m_mutterschutz: + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_arbeitsl: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_schul_ausbild: - - 12.0 - m_geringf_beschäft: + sozialversicherung__rente__entgeltpunkte_west: + - 1.7936 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 37 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 37 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2070 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - y_pflichtbeitr_ab_40: + sozialversicherung__rente__pflichtbeitragsmonate: + - 384.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: - - false - kind_unterh_anspr_m: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - kind_unterh_erhalt_m: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: + unterhalt__anspruch_m: - 0.0 - assumed: {} + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml index f985340d56..4bab06c976 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 52 + arbeitsstunden_w: + - 20.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 5 + familie__kind: + - false p_id: - 11 - p_id_elternteil_1: + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: + familie__p_id_elternteil_1: - -1 - p_id_ehepartner: + familie__p_id_elternteil_2: - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: - - false - gemeinsam_veranlagt: + schwerbehindert_grad_g: - false - p_id_kindergeld_empf: - - -1 - vermögen_bedürft: + vermögen: - 5500.0 - bruttolohn_m: - - 1500.0 - alter: - - 52 weiblich: - true - selbstständig: - - false wohnort_ost: - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - in_priv_krankenv: - - false - priv_rentenv_beitr_m: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - bruttolohn_vorj_m: - - 4000.0 - elterngeld_nettoeinkommen_vorjahr_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 206.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 4000.0 - elterngeld_claimed: - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 048798.0 - arbeitsstunden_w: - - 20.0 - geburtsjahr: - - 1967 - geburtstag: - - 1 - geburtsmonat: - - 1 - mietstufe: - - 3 - entgeltp_west: - - 1.7936 - entgeltp_ost: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - kind: - - false - rentner: - - false - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - kapitaleink_brutto_m: - - 206.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 10.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2071 - behinderungsgrad: - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + einkommensteuer__gemeinsam_veranlagt: - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 4000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 48798.0 + kindergeld__in_ausbildung: - false - bewohnt_eigentum_hh: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: - - 1.7936 - grundr_zeiten: - - 34 - grundr_bew_zeiten: - - 34 - priv_rente_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - schwerbeh_g: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - m_pflichtbeitrag: - - 348.0 - m_freiw_beitrag: - - 5.0 - m_mutterschutz: + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_arbeitsl: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_schul_ausbild: - - 12.0 - m_geringf_beschäft: + sozialversicherung__rente__entgeltpunkte_west: + - 1.7936 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 34 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 34 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2071 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - y_pflichtbeitr_ab_40: + sozialversicherung__rente__pflichtbeitragsmonate: + - 348.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: - - false - kind_unterh_anspr_m: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - kind_unterh_erhalt_m: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: + unterhalt__anspruch_m: - 0.0 - assumed: {} + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml index 12167982fd..886fa8154d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 6 + familie__kind: + - false p_id: - 12 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: + familie__p_id_ehepartner: - -1 - p_id_ehepartner: + familie__p_id_elternteil_1: - -1 - p_id_einstandspartner: + familie__p_id_elternteil_2: - -1 - eigenbedarf_gedeckt: + schwerbehindert_grad_g: - false - gemeinsam_veranlagt: - - false - p_id_kindergeld_empf: - - -1 - vermögen_bedürft: + vermögen: - 5500.0 - bruttolohn_m: - - 8000.0 - alter: - - 68 weiblich: - false - selbstständig: - - false wohnort_ost: - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - in_priv_krankenv: - - false - priv_rentenv_beitr_m: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - bruttolohn_vorj_m: - - 7000.0 - elterngeld_nettoeinkommen_vorjahr_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 207.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 7000.0 - elterngeld_claimed: - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 084822.0 - arbeitsstunden_w: - - 0.0 - geburtsjahr: - - 1951 - geburtstag: - - 1 - geburtsmonat: - - 1 - mietstufe: - - 3 - entgeltp_west: - - 1.7936 - entgeltp_ost: - - 0.0 - kind: - - false - rentner: - - false - betreuungskost_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - p_id_betreuungsk_träger: - - -1 - kapitaleink_brutto_m: - - 207.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 11.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2072 - behinderungsgrad: - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + einkommensteuer__gemeinsam_veranlagt: - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 7000.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 84822.0 + kindergeld__in_ausbildung: - false - bewohnt_eigentum_hh: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: - - 1.7936 - grundr_zeiten: - - 50 - grundr_bew_zeiten: - - 50 - priv_rente_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - schwerbeh_g: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - m_pflichtbeitrag: - - 540.0 - m_freiw_beitrag: - - 5.0 - m_mutterschutz: + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 10.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsl: + sozialversicherung__rente__entgeltpunkte_west: + - 1.7936 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 50 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 50 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2072 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_schul_ausbild: - - 12.0 - m_geringf_beschäft: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - y_pflichtbeitr_ab_40: - - 10.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: - - false - kind_unterh_anspr_m: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - kind_unterh_erhalt_m: + unterhalt__anspruch_m: - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - assumed: {} + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml index eafed8c0bd..1fe0b358dd 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 59 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1960 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 7 + familie__kind: + - false p_id: - 13 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: + familie__p_id_ehepartner: - -1 - p_id_ehepartner: + familie__p_id_elternteil_1: - -1 - p_id_einstandspartner: + familie__p_id_elternteil_2: - -1 - eigenbedarf_gedeckt: + schwerbehindert_grad_g: - false - gemeinsam_veranlagt: - - false - p_id_kindergeld_empf: - - -1 - vermögen_bedürft: + vermögen: - 5500.0 - bruttolohn_m: - - 700.0 - alter: - - 59 weiblich: - true - selbstständig: - - false wohnort_ost: - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: + einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - in_priv_krankenv: - - false - priv_rentenv_beitr_m: + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - bruttolohn_vorj_m: - - 2500.0 - elterngeld_nettoeinkommen_vorjahr_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 208.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 700.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 2500.0 - elterngeld_claimed: - - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 030804.0 - arbeitsstunden_w: - - 0.0 - geburtsjahr: - - 1960 - geburtstag: - - 1 - geburtsmonat: - - 1 - mietstufe: - - 3 - entgeltp_west: - - 1.7936 - entgeltp_ost: - - 0.0 - kind: - - false - rentner: - - false - betreuungskost_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - p_id_betreuungsk_träger: - - -1 - kapitaleink_brutto_m: - - 208.0 - eink_vermietung_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 12.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2073 - behinderungsgrad: - - 0 - wohnfläche_hh: + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + einkommensteuer__gemeinsam_veranlagt: - false - alleinerz: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: + - true + elterngeld__nettoeinkommen_vorjahr_m: + - 2500.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 30804.0 + kindergeld__in_ausbildung: - false - bewohnt_eigentum_hh: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: + - true + sozialversicherung__arbeitslosen__arbeitssuchend: - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: - - 1.7936 - grundr_zeiten: - - 41 - grundr_bew_zeiten: - - 41 - priv_rente_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - schwerbeh_g: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: - false - m_pflichtbeitrag: - - 432.0 - m_freiw_beitrag: - - 5.0 - m_mutterschutz: + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 1.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsl: + sozialversicherung__rente__entgeltpunkte_west: + - 1.7936 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 5.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 41 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 41 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 1.7936 + sozialversicherung__rente__jahr_renteneintritt: + - 2073 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_schul_ausbild: - - 12.0 - m_geringf_beschäft: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__pflichtbeitragsmonate: + - 432.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - y_pflichtbeitr_ab_40: - - 1.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: - - false - kind_unterh_anspr_m: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - kind_unterh_erhalt_m: + unterhalt__anspruch_m: - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - assumed: {} + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml index 0131656636..ab81322b99 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml @@ -3,156 +3,162 @@ info: note: '' source: '' inputs: + assumed: {} provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 60 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 8 + familie__kind: + - false p_id: - 14 - p_id_elternteil_1: + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: + familie__p_id_elternteil_1: - -1 - p_id_ehepartner: + familie__p_id_elternteil_2: - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: + schwerbehindert_grad_g: + - false + vermögen: + - 0.0 + weiblich: - false - gemeinsam_veranlagt: + wohnort_ost: - false - p_id_kindergeld_empf: + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - vermögen_bedürft: + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - bruttolohn_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - alter: - - 60 - weiblich: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 2500.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 13.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + einkommensteuer__einkünfte__sonstige__betrag_m: + - 50.0 + einkommensteuer__gemeinsam_veranlagt: - false - selbstständig: + elterngeld__bisherige_bezugsmonate: + - 0 + elterngeld__claimed: - true - wohnort_ost: + elterngeld__nettoeinkommen_vorjahr_m: + - 2300.0 + elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: + - 25962.0 + kindergeld__in_ausbildung: - false - ges_pflegev_hat_kinder: + kindergeld__p_id_empfänger: + - -1 + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__arbeitslosen__anwartschaftszeit: - true - eink_selbst_m: - - 2500.0 - in_priv_krankenv: + sozialversicherung__arbeitslosen__arbeitssuchend: - false - priv_rentenv_beitr_m: + sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - 0.0 - bruttolohn_vorj_m: - - 2300.0 - elterngeld_nettoeinkommen_vorjahr_m: - - 2300.0 - elterngeld_claimed: + sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: - true - elterngeld_zu_verst_eink_vorjahr_y_sn: - - 025962.0 - arbeitsstunden_w: + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - geburtsjahr: - - 1959 - geburtstag: - - 1 - geburtsmonat: + sozialversicherung__rente__monat_renteneintritt: - 1 - mietstufe: - - 3 - entgeltp_west: - - 19.7296 - entgeltp_ost: - - 0.0 - kind: - - false - rentner: - - false - betreuungskost_m: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 2.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - p_id_betreuungsk_träger: - - -1 - kapitaleink_brutto_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - eink_vermietung_m: - - 13.0 - bruttokaltmiete_m_hh: - - 400.0 - heizkosten_m_hh: - - 80.0 - jahr_renteneintr: - - 2074 - behinderungsgrad: - - 0 - wohnfläche_hh: - - 50.0 - monate_elterngeldbezug: - - 0 - in_ausbildung: + sozialversicherung__rente__bezieht_rente: - false - alleinerz: - - false - bewohnt_eigentum_hh: - - false - immobilie_baujahr_hh: - - 3 - sonstig_eink_m: - - 50.0 - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 19.7296 - grundr_zeiten: - - 42 - grundr_bew_zeiten: - - 42 - priv_rente_m: + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - schwerbeh_g: - - false - m_pflichtbeitrag: - - 444.0 - m_freiw_beitrag: + sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 - m_mutterschutz: + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 42 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 42 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 19.7296 + sozialversicherung__rente__jahr_renteneintritt: + - 2074 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__pflichtbeitragsmonate: + - 444.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_schul_ausbild: + sozialversicherung__rente__monate_in_schulausbildung: - 12.0 - m_geringf_beschäft: - - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_ersatzzeit: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - m_pfleg_berücks_zeit: + unterhalt__anspruch_m: - 0.0 - y_pflichtbeitr_ab_40: - - 2.0 - anwartschaftszeit: - - true - arbeitssuchend: - - false - m_durchg_alg1_bezug: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - sozialv_pflicht_5j: - - 60.0 - bürgerg_bezug_vorj: + wohnen__baujahr_immobilie_hh: + - 3 + wohnen__bewohnt_eigentum_hh: - false - kind_unterh_anspr_m: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - steuerklasse: - - 1 - sum_ges_rente_priv_rente_m: - - 0.0 - assumed: {} + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + wohnen__wohnfläche_hh: + - 50.0 + wohngeld__mietstufe: + - 3 outputs: {} diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml index be54a901dc..2952729c1c 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml @@ -3,34 +3,34 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 0.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: - - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - rentner: + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1168.4 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1168.4 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1168.4 diff --git "a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" index 25c519a8ba..97a88f4ff4 100644 --- "a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" +++ "b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" @@ -3,34 +3,34 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 1000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1168.4 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml index f052a27953..43a929a48d 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml @@ -3,36 +3,36 @@ info: note: High income and low Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 6000.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1241.2 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml index 250d533330..0d27ecd6c5 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml @@ -3,36 +3,36 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: - - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - rentner: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1241.2 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1241.2 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1241.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml index 5518e69a55..97f609e151 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml @@ -3,36 +3,36 @@ info: note: Middle income and high Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 1000.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 8000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 8000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1051.2 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1241.2 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1051.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml index c2321fa8dd..75ba309d81 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml @@ -3,36 +3,36 @@ info: note: Low income and high Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 500.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 500.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1241.2 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1241.2 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1241.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml index 3622adf771..c53f7361ee 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml @@ -3,36 +3,36 @@ info: note: High income and low Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 6000.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1367.6 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml index d4c561d87d..b3ec1f1e88 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml @@ -3,36 +3,36 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: - - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - rentner: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1367.6 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1367.6 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1367.6 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml index 3f40b072de..db26474c78 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml @@ -3,36 +3,36 @@ info: note: Middle income and high Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 4000.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 8000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4000.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 8000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1302.93 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1367.6 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1302.93 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml index 90e1db31ea..62dae0d21f 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml @@ -3,36 +3,36 @@ info: note: Low income and high Hinzuverdienstdeckel. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 + geburtsjahr: + - 1957 hh_id: - 0 - bruttolohn_m: - - 500.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 + p_id: + - 0 wohnort_ost: - false - geburtsjahr: - - 1957 - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 500.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1367.6 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1367.6 - bruttorente_m: + sozialversicherung__rente__altersrente__bruttorente_m: - 1367.6 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml index 4550e7aa8a..7553e17274 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml @@ -3,30 +3,30 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 hh_id: - 0 - bruttolohn_m: - - 5000.0 + p_id: + - 0 wohnort_ost: - false - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1440.8 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml index 5d8363fa32..68c43941a7 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml @@ -3,30 +3,30 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 hh_id: - 0 - bruttolohn_m: - - 0.0 + p_id: + - 0 wohnort_ost: - false - alter: - - 64 - ges_rente_zugangsfaktor: - - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - rentner: + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1440.8 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml index 3882d7b660..67b61dd292 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml @@ -3,30 +3,30 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 hh_id: - 0 - bruttolohn_m: - - 1600.0 + p_id: + - 0 wohnort_ost: - false - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1600.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1440.8 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml index 0fe511cd73..9796a8cd66 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml @@ -3,30 +3,30 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + alter: + - 64 hh_id: - 0 - bruttolohn_m: - - 600.0 + p_id: + - 0 wohnort_ost: - false - alter: - - 64 - ges_rente_zugangsfaktor: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - entgeltp_west: - - 40.0 - entgeltp_ost: - - 0.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_zuschlag_m: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 40.0 + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - assumed: {} outputs: - ges_rente_m: + sozialversicherung__rente__altersrente__betrag_m: - 1440.8 - bruttorente_basisbetrag_m: + sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_female.yaml deleted file mode 100644 index 463b9b5f93..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_male.yaml deleted file mode 100644 index 658c528a2d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1936_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_female.yaml deleted file mode 100644 index 4554c917d7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_male.yaml deleted file mode 100644 index 83178f7fcc..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1989/cohort_1953_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_female.yaml deleted file mode 100644 index 463b9b5f93..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_male.yaml deleted file mode 100644 index 658c528a2d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1936_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_female.yaml deleted file mode 100644 index 7c5024f93c..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_male.yaml deleted file mode 100644 index 113221d508..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1937_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_female.yaml deleted file mode 100644 index 6ca02e8129..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_male.yaml deleted file mode 100644 index 4e095fe816..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1938_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_female.yaml deleted file mode 100644 index 590bd2a429..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_male.yaml deleted file mode 100644 index 43ac9fb143..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1939_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_female.yaml deleted file mode 100644 index d0b2f64870..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_male.yaml deleted file mode 100644 index be6f076824..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1940_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_female.yaml deleted file mode 100644 index 30e8352ad5..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_male.yaml deleted file mode 100644 index 2c46f13e11..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1941_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_female.yaml deleted file mode 100644 index d7a4f95334..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_male.yaml deleted file mode 100644 index 8183ab57bd..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1942_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_female.yaml deleted file mode 100644 index 9dd3606002..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_male.yaml deleted file mode 100644 index df2bd5caad..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1943_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_female.yaml deleted file mode 100644 index 320439250b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_male.yaml deleted file mode 100644 index d129a51497..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1944_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_female.yaml deleted file mode 100644 index f416781e39..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_male.yaml deleted file mode 100644 index b9e4da38ff..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1945_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_female.yaml deleted file mode 100644 index 7bf9d226f7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_male.yaml deleted file mode 100644 index 7a2432591c..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1946_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_female.yaml deleted file mode 100644 index 6acb2bae02..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_male.yaml deleted file mode 100644 index 8cca61d006..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1947_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_female.yaml deleted file mode 100644 index c63b4152c3..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_arbeitsl_altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_male.yaml deleted file mode 100644 index d49f9426ff..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1948_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_female.yaml deleted file mode 100644 index de295b6c2e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_frauen_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_male.yaml deleted file mode 100644 index 383841d1b1..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1949_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_female.yaml deleted file mode 100644 index 68d911a584..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_frauen_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_male.yaml deleted file mode 100644 index 8aacaa48fa..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1950_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1950 - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_female.yaml deleted file mode 100644 index a32397d5c2..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_frauen_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_male.yaml deleted file mode 100644 index 75190201c7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1951_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_female.yaml deleted file mode 100644 index 90e51ca9c1..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_frauen_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_male.yaml deleted file mode 100644 index 0193d8b4cb..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1952_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1952 - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_female.yaml deleted file mode 100644 index 99d93bae9e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_male.yaml deleted file mode 100644 index fa41aa77bf..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1992/cohort_1953_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_female.yaml deleted file mode 100644 index 463b9b5f93..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_male.yaml deleted file mode 100644 index 658c528a2d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1936_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_female.yaml deleted file mode 100644 index bc163ffd7e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_male.yaml deleted file mode 100644 index e11dde789b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1937_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_female.yaml deleted file mode 100644 index d4f8402675..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_male.yaml deleted file mode 100644 index fa6305ba18..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1938_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_female.yaml deleted file mode 100644 index f35575ecb5..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_male.yaml deleted file mode 100644 index 3d0ce8fd82..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1939_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_female.yaml deleted file mode 100644 index 9eec93468b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_male.yaml deleted file mode 100644 index 155991c276..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1940_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_female.yaml deleted file mode 100644 index 3b6282615d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_male.yaml deleted file mode 100644 index add21512e7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1941_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_female.yaml deleted file mode 100644 index 630d984071..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_male.yaml deleted file mode 100644 index 00e01b9c4b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1942_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_female.yaml deleted file mode 100644 index 9fdf11db58..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_male.yaml deleted file mode 100644 index 8639e4357f..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1943_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_female.yaml deleted file mode 100644 index 1c0c8e0db8..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_male.yaml deleted file mode 100644 index 91e8bfc5d0..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1944_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_female.yaml deleted file mode 100644 index e16d3022ef..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_male.yaml deleted file mode 100644 index 05fbbbdf83..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1945_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_female.yaml deleted file mode 100644 index 030d81a8ba..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_male.yaml deleted file mode 100644 index 3a71c07d75..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1946_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_female.yaml deleted file mode 100644 index 59d01c387f..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_male.yaml deleted file mode 100644 index 73acab9610..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1947_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_female.yaml deleted file mode 100644 index d1aaba3a30..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_male.yaml deleted file mode 100644 index 7a8d511c52..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1948_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_female.yaml deleted file mode 100644 index de295b6c2e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_frauen_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_male.yaml deleted file mode 100644 index 383841d1b1..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1949_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_female.yaml deleted file mode 100644 index 68d911a584..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_frauen_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_male.yaml deleted file mode 100644 index 8aacaa48fa..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1950_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1950 - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_female.yaml deleted file mode 100644 index a32397d5c2..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_frauen_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_male.yaml deleted file mode 100644 index 75190201c7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1951_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_female.yaml deleted file mode 100644 index 90e51ca9c1..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_frauen_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_male.yaml deleted file mode 100644 index 0193d8b4cb..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1952_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1952 - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_female.yaml deleted file mode 100644 index 99d93bae9e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_female.yaml +++ /dev/null @@ -1,170 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - true - - false - - true - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_male.yaml deleted file mode 100644 index fa41aa77bf..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/1996-07-29/cohort_1953_male.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - hh_id: - - 0 - - 1 - - 2 - - 3 - geburtsjahr: - - 1953 - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - - false - ges_rente_vorauss_langj: - - false - - true - - false - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_female.yaml deleted file mode 100644 index a13dd96102..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_male.yaml deleted file mode 100644 index 53e9761473..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1936_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - - 1936 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_female.yaml deleted file mode 100644 index e83cbb643a..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_male.yaml deleted file mode 100644 index aaa31e9740..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1937_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - - 1937 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_female.yaml deleted file mode 100644 index b853758c43..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_male.yaml deleted file mode 100644 index becfbe7596..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1938_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - - 1938 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_female.yaml deleted file mode 100644 index f6c822c25d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_male.yaml deleted file mode 100644 index d167ecf827..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1939_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - - 1939 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 62.166667 - - 62.166667 - - 62.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 62.166667 - - 62.166667 - - 62.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_female.yaml deleted file mode 100644 index 987e0f38f4..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_male.yaml deleted file mode 100644 index 6d14a7fc85..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1940_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - - 1940 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_female.yaml deleted file mode 100644 index 58edb7caf5..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_male.yaml deleted file mode 100644 index cd845c2c80..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1941_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - - 1941 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 64.166667 - - 64.166667 - - 64.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 64.166667 - - 64.166667 - - 64.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_female.yaml deleted file mode 100644 index e18b029cfe..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_male.yaml deleted file mode 100644 index 424cf593d0..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1942_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - - 1942 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_female.yaml deleted file mode 100644 index 37c043687b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_male.yaml deleted file mode 100644 index 96e33dc329..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1943_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - - 1943 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_female.yaml deleted file mode 100644 index 35d76f9f97..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_male.yaml deleted file mode 100644 index 444864c257..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1944_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - - 1944 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_female.yaml deleted file mode 100644 index c2c7a857c7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_male.yaml deleted file mode 100644 index 3152129626..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1945_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - - 1945 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_female.yaml deleted file mode 100644 index 5127bac301..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_male.yaml deleted file mode 100644 index c408b5c76b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1946_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_female.yaml deleted file mode 100644 index c9872b080f..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_male.yaml deleted file mode 100644 index e11b3074c9..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1947_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_female.yaml deleted file mode 100644 index f93b6ac7f5..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_female.yaml +++ /dev/null @@ -1,281 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_frauen_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_male.yaml deleted file mode 100644 index 9a32350707..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2012/cohort_1948_male.yaml +++ /dev/null @@ -1,148 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - geburtsjahr: - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - weiblich: - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_1997: - - false - - false - - false - - false - - false - - false - vertra_arbeitsl_2006: - - false - - false - - false - - false - - false - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - - 62.166667 - - 62.166667 - - 62.166667 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_female.yaml deleted file mode 100644 index 52d39a379a..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_male.yaml deleted file mode 100644 index 192e98cfc7..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1946_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1946 - - 1946 - - 1946 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_female.yaml deleted file mode 100644 index 6a841ecd0b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_male.yaml deleted file mode 100644 index 06cb91052e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1947_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1947 - - 1947 - - 1947 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.083333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_female.yaml deleted file mode 100644 index 644c7ba414..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_male.yaml deleted file mode 100644 index 5b7afb957d..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1948_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1948 - - 1948 - - 1948 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - - 63.0 - - 65.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - _ges_rente_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_female.yaml deleted file mode 100644 index 45084011dd..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_female.yaml +++ /dev/null @@ -1,274 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 2 - - 2 - - 2 - - 3 - - 3 - - 3 - - 4 - - 4 - - 4 - - 5 - - 5 - - 5 - - 6 - - 6 - - 6 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.083333 - - 63.0 - - 65.25 - - 65.166667 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - _ges_rente_langj_altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.083333 - - 65.083333 - - 65.25 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_male.yaml deleted file mode 100644 index bf0152e0b4..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1949_male.yaml +++ /dev/null @@ -1,274 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - geburtsjahr: - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - - 1949 - geburtsmonat: - - 1 - - 1 - - 1 - - 2 - - 2 - - 2 - - 3 - - 3 - - 3 - - 4 - - 4 - - 4 - - 5 - - 5 - - 5 - - 6 - - 6 - - 6 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.083333 - - 63.0 - - 65.25 - - 65.166667 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - _ges_rente_langj_altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.083333 - - 65.083333 - - 65.25 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_female.yaml deleted file mode 100644 index fb3b10d63f..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.333333 - - 63.0 - - 65.333333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.333333 - _ges_rente_langj_altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.333333 - - 65.333333 - - 65.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_male.yaml deleted file mode 100644 index 4c21263289..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1950_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1950 - - 1950 - - 1950 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.333333 - - 63.0 - - 65.333333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.333333 - _ges_rente_langj_altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.333333 - - 65.333333 - - 65.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_female.yaml deleted file mode 100644 index 35b30d136c..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.416667 - - 63.0 - - 65.416667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.416667 - _ges_rente_langj_altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.416667 - - 65.416667 - - 65.416667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_male.yaml deleted file mode 100644 index c9d92bc9f6..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1951_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1951 - - 1951 - - 1951 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.416667 - - 63.0 - - 65.416667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.416667 - _ges_rente_langj_altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.416667 - - 65.416667 - - 65.416667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_female.yaml deleted file mode 100644 index 674304be43..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.5 - - 65.5 - - 65.5 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 - - 63.0 - - 65.5 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.5 - _ges_rente_langj_altersgrenze: - - 65.5 - - 65.5 - - 65.5 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.5 - - 65.5 - - 65.5 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_male.yaml deleted file mode 100644 index 96decb74e0..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1952_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1952 - - 1952 - - 1952 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.5 - - 65.5 - - 65.5 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 - - 63.0 - - 65.5 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.5 - _ges_rente_langj_altersgrenze: - - 65.5 - - 65.5 - - 65.5 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.0 - - 63.0 - - 63.0 - referenzalter_abschlag: - - 65.5 - - 65.5 - - 65.5 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_female.yaml deleted file mode 100644 index ab03a6f7dd..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.583333 - - 63.166667 - - 65.583333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.583333 - _ges_rente_langj_altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - referenzalter_abschlag: - - 65.583333 - - 65.583333 - - 65.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_male.yaml deleted file mode 100644 index ada3c9117b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1953_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1953 - - 1953 - - 1953 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.583333 - - 63.166667 - - 65.583333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.583333 - _ges_rente_langj_altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - referenzalter_abschlag: - - 65.583333 - - 65.583333 - - 65.583333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_female.yaml deleted file mode 100644 index 9cecc126ec..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1954 - - 1954 - - 1954 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.666667 - - 63.333333 - - 65.666667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.666667 - _ges_rente_langj_altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - referenzalter_abschlag: - - 65.666667 - - 65.666667 - - 65.666667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_male.yaml deleted file mode 100644 index fd6c9b4f9e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1954_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1954 - - 1954 - - 1954 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.666667 - - 63.333333 - - 65.666667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.666667 - _ges_rente_langj_altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - referenzalter_abschlag: - - 65.666667 - - 65.666667 - - 65.666667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_female.yaml deleted file mode 100644 index 7c4196ab98..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1955 - - 1955 - - 1955 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.75 - - 65.75 - - 65.75 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.75 - - 63.5 - - 65.75 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.75 - _ges_rente_langj_altersgrenze: - - 65.75 - - 65.75 - - 65.75 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.5 - - 63.5 - - 63.5 - referenzalter_abschlag: - - 65.75 - - 65.75 - - 65.75 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_male.yaml deleted file mode 100644 index 907e3a8d5b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1955_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1955 - - 1955 - - 1955 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.75 - - 65.75 - - 65.75 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.75 - - 63.5 - - 65.75 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.75 - _ges_rente_langj_altersgrenze: - - 65.75 - - 65.75 - - 65.75 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.5 - - 63.5 - - 63.5 - referenzalter_abschlag: - - 65.75 - - 65.75 - - 65.75 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_female.yaml deleted file mode 100644 index d6e4f72365..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1956 - - 1956 - - 1956 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.833333 - - 63.666667 - - 65.833333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.833333 - _ges_rente_langj_altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.666667 - - 63.666667 - - 63.666667 - referenzalter_abschlag: - - 65.833333 - - 65.833333 - - 65.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_male.yaml deleted file mode 100644 index e3b0a67ced..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1956_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1956 - - 1956 - - 1956 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.833333 - - 63.666667 - - 65.833333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.833333 - _ges_rente_langj_altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.666667 - - 63.666667 - - 63.666667 - referenzalter_abschlag: - - 65.833333 - - 65.833333 - - 65.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_female.yaml deleted file mode 100644 index 67f83b94d4..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1957 - - 1957 - - 1957 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.916667 - - 63.833333 - - 65.916667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.916667 - _ges_rente_langj_altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - referenzalter_abschlag: - - 65.916667 - - 65.916667 - - 65.916667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_male.yaml deleted file mode 100644 index 99cb9b1282..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1957_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1957 - - 1957 - - 1957 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.916667 - - 63.833333 - - 65.916667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.916667 - _ges_rente_langj_altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - referenzalter_abschlag: - - 65.916667 - - 65.916667 - - 65.916667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_female.yaml deleted file mode 100644 index 7ae26f1129..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1958 - - 1958 - - 1958 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.0 - - 66.0 - - 66.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.0 - - 64.0 - - 66.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.0 - _ges_rente_langj_altersgrenze: - - 66.0 - - 66.0 - - 66.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.0 - - 64.0 - - 64.0 - referenzalter_abschlag: - - 66.0 - - 66.0 - - 66.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_male.yaml deleted file mode 100644 index 320d164709..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1958_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1958 - - 1958 - - 1958 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.0 - - 66.0 - - 66.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.0 - - 64.0 - - 66.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.0 - _ges_rente_langj_altersgrenze: - - 66.0 - - 66.0 - - 66.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.0 - - 64.0 - - 64.0 - referenzalter_abschlag: - - 66.0 - - 66.0 - - 66.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_female.yaml deleted file mode 100644 index 98351a960f..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1959 - - 1959 - - 1959 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.166667 - - 64.166667 - - 66.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.166667 - _ges_rente_langj_altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - referenzalter_abschlag: - - 66.166667 - - 66.166667 - - 66.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_male.yaml deleted file mode 100644 index d2ff7d767a..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1959_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1959 - - 1959 - - 1959 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.166667 - - 64.166667 - - 66.166667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.166667 - _ges_rente_langj_altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - referenzalter_abschlag: - - 66.166667 - - 66.166667 - - 66.166667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_female.yaml deleted file mode 100644 index 8368e5ac09..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1960 - - 1960 - - 1960 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.333333 - - 64.333333 - - 66.333333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.333333 - _ges_rente_langj_altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.333333 - - 64.333333 - - 64.333333 - referenzalter_abschlag: - - 66.333333 - - 66.333333 - - 66.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_male.yaml deleted file mode 100644 index e089c27858..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1960_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1960 - - 1960 - - 1960 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.333333 - - 64.333333 - - 66.333333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.333333 - _ges_rente_langj_altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.333333 - - 64.333333 - - 64.333333 - referenzalter_abschlag: - - 66.333333 - - 66.333333 - - 66.333333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_female.yaml deleted file mode 100644 index af269a27c0..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1961 - - 1961 - - 1961 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.5 - - 66.5 - - 66.5 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.5 - - 64.5 - - 66.5 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.5 - _ges_rente_langj_altersgrenze: - - 66.5 - - 66.5 - - 66.5 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.5 - - 64.5 - - 64.5 - referenzalter_abschlag: - - 66.5 - - 66.5 - - 66.5 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_male.yaml deleted file mode 100644 index e6e5bf3a75..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1961_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1961 - - 1961 - - 1961 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.5 - - 66.5 - - 66.5 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.5 - - 64.5 - - 66.5 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.5 - _ges_rente_langj_altersgrenze: - - 66.5 - - 66.5 - - 66.5 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.5 - - 64.5 - - 64.5 - referenzalter_abschlag: - - 66.5 - - 66.5 - - 66.5 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_female.yaml deleted file mode 100644 index 207741b675..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1962 - - 1962 - - 1962 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.666667 - - 64.666667 - - 66.666667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.666667 - _ges_rente_langj_altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.666667 - - 64.666667 - - 64.666667 - referenzalter_abschlag: - - 66.666667 - - 66.666667 - - 66.666667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_male.yaml deleted file mode 100644 index 930ef5bbdb..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1962_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1962 - - 1962 - - 1962 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.666667 - - 64.666667 - - 66.666667 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.666667 - _ges_rente_langj_altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.666667 - - 64.666667 - - 64.666667 - referenzalter_abschlag: - - 66.666667 - - 66.666667 - - 66.666667 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_female.yaml deleted file mode 100644 index 36f149be91..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1963 - - 1963 - - 1963 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.833333 - - 64.833333 - - 66.833333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.833333 - _ges_rente_langj_altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.833333 - - 64.833333 - - 64.833333 - referenzalter_abschlag: - - 66.833333 - - 66.833333 - - 66.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_male.yaml deleted file mode 100644 index 0818740746..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1963_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1963 - - 1963 - - 1963 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.833333 - - 64.833333 - - 66.833333 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.833333 - _ges_rente_langj_altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 64.833333 - - 64.833333 - - 64.833333 - referenzalter_abschlag: - - 66.833333 - - 66.833333 - - 66.833333 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_female.yaml deleted file mode 100644 index 23631b951e..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_female.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1964 - - 1964 - - 1964 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - true - - true - - true - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 67.0 - - 67.0 - - 67.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 - - 65.0 - - 67.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 67.0 - _ges_rente_langj_altersgrenze: - - 67.0 - - 67.0 - - 67.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 67.0 - - 67.0 - - 67.0 diff --git a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_male.yaml deleted file mode 100644 index 1ea287633b..0000000000 --- a/src/_gettsim_tests/test_data/ges_rentenalter/2024/cohort_1964_male.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: '' - source: Made up from the law -inputs: - provided: - p_id: - - 0 - - 1 - - 2 - hh_id: - - 0 - - 1 - - 2 - geburtsjahr: - - 1964 - - 1964 - - 1964 - geburtsmonat: - - 1 - - 1 - - 1 - weiblich: - - false - - false - - false - ges_rente_vorauss_langj: - - true - - true - - false - ges_rente_vorauss_besond_langj: - - false - - true - - false - assumed: {} -outputs: - ges_rente_regelaltersgrenze: - - 67.0 - - 67.0 - - 67.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 - - 65.0 - - 67.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 67.0 - _ges_rente_langj_altersgrenze: - - 67.0 - - 67.0 - - 67.0 - _ges_rente_langj_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - _ges_rente_besond_langj_altersgrenze: - - 65.0 - - 65.0 - - 65.0 - referenzalter_abschlag: - - 67.0 - - 67.0 - - 67.0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 51d66f7325..8e9a42f728 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,87 +1,78 @@ --- info: note: >- - CZ: In case the other parent does not pay child support, the parent with p_id==0 can - request full kinderfreibetrag (Add this as input?) + CZ: In case the other parent does not pay child support, the parent with + p_id==0 can request full kinderfreibetrag (Add this as input?) source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: - - 14 - - 1 - - 24 - geburtsmonat: - - 7 - - 3 - - 12 - geburtsjahr: - - 1984 - - 2010 - - 1971 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 alter: - 39 - 13 - 52 + geburtsjahr: + - 1984 + - 2010 + - 1971 + geburtsmonat: + - 7 + - 3 + - 12 + geburtstag: + - 14 + - 1 + - 24 hh_id: - 0 - 0 - 1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - 2 - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false outputs: - fg_id: - - 0 - - 0 - - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 - eg_id: + arbeitslosengeld_2__eg_id: - 0 - 1 - 2 - ehe_id: + arbeitslosengeld_2__fg_id: + - 0 + - 0 + - 1 + familie__ehe_id: - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 0 -# - 1 -# potentieller_unterhaltsvors: -# - 0 -# - 0 -# - (potentially > 0) diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml index 8316ff47da..0352648f0f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml @@ -3,64 +3,57 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - geburtstag: - - 14 - - 1 - geburtsmonat: - - 7 - - 3 - geburtsjahr: - - 1984 - - 2010 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 alter: - 39 - 13 + geburtsjahr: + - 1984 + - 2010 + geburtsmonat: + - 7 + - 3 + geburtstag: + - 14 + - 1 hh_id: - 0 - 0 - p_id_einstandspartner: - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + familie__p_id_ehepartner: - -1 - -1 - gemeinsam_veranlagt: - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 + - 1 + arbeitslosengeld_2__fg_id: - 0 - eg_id: - 0 - - 1 - ehe_id: + familie__ehe_id: - 0 - 1 - sn_id: + einkommensteuer__sn_id: - 0 - 1 -# - potentielle_kinderfreibeträge: -# - 2 -# - 0 -# - potentieller_unterhaltsvors: -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml index efea8d159c..15dcf0884b 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 21 - geburtsmonat: - - 7 - - 7 - - 3 + - 0 + - -1 + - -1 + alter: + - 39 + - 42 + - 13 - 10 geburtsjahr: - 1984 - 1981 - 2010 - 2013 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 42 - - 13 + geburtsmonat: + - 7 + - 7 + - 3 - 10 + geburtstag: + - 14 + - 14 + - 1 + - 21 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - -1 - -1 - p_id_ehepartner: - -1 - -1 - - -1 - - -1 - gemeinsam_veranlagt: - - false - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - 0 - eg_id: - 0 - 0 - - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 1 - 2 - 3 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml index 1ae930c390..71c3ff4a66 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 21 - geburtsmonat: - - 7 - - 7 - - 3 + - 0 + - -1 + - -1 + alter: + - 49 + - 52 + - 23 - 10 geburtsjahr: - 1974 - 1971 - 2000 - 2013 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 49 - - 52 - - 23 + geburtsmonat: + - 7 + - 7 + - 3 - 10 + geburtstag: + - 14 + - 14 + - 1 + - 21 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - 0 - eg_id: - 0 - 0 - - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml index 9564d48be9..68ee4d0ad8 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 12 - geburtsmonat: - - 7 - - 7 - - 3 - - 5 - geburtsjahr: - - 1984 - - 1981 - - 2010 - - 2013 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + - 0 + - -1 + - -1 alter: - 39 - 42 - 13 - 10 - p_id_einstandspartner: + geburtsjahr: + - 1984 + - 1981 + - 2010 + - 2013 + geburtsmonat: + - 7 + - 7 + - 3 + - 5 + geburtstag: + - 14 + - 14 - 1 + - 12 + hh_id: - 0 - - -1 - - -1 - p_id_ehepartner: - - 1 - 0 - - -1 - - -1 - hh_id: - 0 - 0 + p_id: - 0 + - 1 + - 2 + - 3 + familie__p_id_ehepartner: + - 1 - 0 - p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_1: - -1 - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - gemeinsam_veranlagt: + einkommensteuer__gemeinsam_veranlagt: - true - true - false - false - eigenbedarf_gedeckt: - - false - - false - - false - - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - - 1 - bg_id: + - 100 + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - - 100 - eg_id: - 0 - 0 - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml index b9862359ee..a5ff461abc 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml @@ -3,97 +3,91 @@ info: note: One child is in separate Familiengemeinschaft since over 24 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 21 - geburtsmonat: - - 7 - - 7 - - 3 - - 10 - geburtsjahr: - - 1974 - - 1971 - - 1996 - - 2000 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + - 0 + - -1 + - -1 alter: - 49 - 52 - 27 - 23 - p_id_einstandspartner: + geburtsjahr: + - 1974 + - 1971 + - 1996 + - 2000 + geburtsmonat: + - 7 + - 7 + - 3 + - 10 + geburtstag: + - 14 + - 14 - 1 + - 21 + hh_id: - 0 - - -1 - - -1 - p_id_ehepartner: - - 1 - 0 - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - hh_id: - 0 - 0 + p_id: - 0 + - 1 + - 2 + - 3 + familie__p_id_ehepartner: + - 1 - 0 - p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false outputs: - fg_id: - - 0 - - 0 - - 1 - - 0 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 - 0 - eg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 - 1 - 2 - ehe_id: + arbeitslosengeld_2__fg_id: + - 0 + - 0 + - 1 + - 0 + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml index 5b709cb9a8..3ade8e8309 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 12 - geburtsmonat: - - 7 - - 7 - - 3 - - 5 - geburtsjahr: - - 1984 - - 1981 - - 2010 - - 1953 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + - 0 + - -1 + - -1 alter: - 39 - 42 - 13 - 70 - p_id_einstandspartner: + geburtsjahr: + - 1984 + - 1981 + - 2010 + - 1953 + geburtsmonat: + - 7 + - 7 + - 3 + - 5 + geburtstag: + - 14 + - 14 - 1 + - 12 + hh_id: - 0 - - -1 - - -1 - p_id_ehepartner: - - 1 - 0 - - -1 - - -1 - hh_id: - 0 - 0 + p_id: - 0 + - 1 + - 2 + - 3 + familie__p_id_ehepartner: + - 1 - 0 - p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_1: - 3 - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - gemeinsam_veranlagt: + einkommensteuer__gemeinsam_veranlagt: - true - true - false - false - eigenbedarf_gedeckt: - - false - - false - - false - - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - - 1 - bg_id: + - 100 + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - - 100 - eg_id: - 0 - 0 - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index c1bde4b5e0..71e04e3359 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -5,115 +5,108 @@ info: covers more than 2 generations) source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 - - 3 + - 0 + - -1 - 4 - geburtstag: - - 14 - - 14 - - 1 - - 13 - - 2 - geburtsmonat: - - 7 - - 7 - 3 - - 2 + alter: + - 19 + - 22 - 1 + - 49 + - 50 geburtsjahr: - 2004 - 2001 - 2022 - 1974 - 1973 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 19 - - 22 + geburtsmonat: + - 7 + - 7 + - 3 + - 2 - 1 - - 49 - - 50 + geburtstag: + - 14 + - 14 + - 1 + - 13 + - 2 hh_id: - 0 - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - 4 + - 1 + - 2 - 3 - p_id_ehepartner: + - 4 + familie__p_id_ehepartner: - -1 - -1 - -1 - 4 - 3 - gemeinsam_veranlagt: - - false - - false - - false - - true - - true - p_id_elternteil_1: + familie__p_id_elternteil_1: - 3 - -1 - 0 - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - 4 - -1 - 1 - -1 - -1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: - false - false - false + - true + - true outputs: - fg_id: - - 0 - - 0 - - 0 - - 1 - - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - 100 - 100 - eg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 - 1 - 2 - 2 - ehe_id: + arbeitslosengeld_2__fg_id: + - 0 + - 0 + - 0 + - 1 + - 1 + familie__ehe_id: - 0 - 1 - 2 - 3 - 3 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - 3 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 1 -# - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml index c97d5037bc..01f8c41302 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml @@ -3,97 +3,91 @@ info: note: Child in separate Familiengemeinschaft if he/she is married source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - geburtstag: - - 13 - - 2 - - 14 - - 14 - geburtsmonat: - 2 - - 1 - - 7 - - 7 - geburtsjahr: - - 1974 - - 1973 - - 2004 - - 2001 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 alter: - 49 - 50 - 19 - 22 + geburtsjahr: + - 1974 + - 1973 + - 2004 + - 2001 + geburtsmonat: + - 2 + - 1 + - 7 + - 7 + geburtstag: + - 13 + - 2 + - 14 + - 14 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - 3 + - 1 - 2 - p_id_ehepartner: + - 3 + familie__p_id_ehepartner: - 1 - 0 - 3 - 2 - gemeinsam_veranlagt: - - true - - true - - true - - true - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - 1 - eigenbedarf_gedeckt: - - false - - false - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true outputs: - fg_id: - - 0 - - 0 - - 1 - - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 - 100 - eg_id: + arbeitslosengeld_2__eg_id: + - 0 + - 0 + - 1 + - 1 + arbeitslosengeld_2__fg_id: - 0 - 0 - 1 - 1 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 1 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 1 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml index 6ccc3df49a..02e8a700ef 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml @@ -5,79 +5,74 @@ info: him/herself source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: - - 13 - - 2 - - 14 - geburtsmonat: - - 2 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - true + - true + - true + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 7 - geburtsjahr: - - 1974 - - 1973 - - 2001 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + - 0 + - -1 alter: - 49 - 50 - 22 - p_id_einstandspartner: + geburtsjahr: + - 1974 + - 1973 + - 2001 + geburtsmonat: + - 2 - 1 + - 7 + geburtstag: + - 13 + - 2 + - 14 + hh_id: - 0 - - -1 - p_id_ehepartner: - - 1 - 0 - - -1 - gemeinsam_veranlagt: - - true - - true - - false - eigenbedarf_gedeckt: - - true - - true - - true - hh_id: - 0 + p_id: - 0 + - 1 + - 2 + familie__p_id_ehepartner: + - 1 - 0 - p_id_elternteil_1: + - -1 + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false outputs: - fg_id: - - 0 + arbeitslosengeld_2__bg_id: - 0 - 0 - bg_id: + - 1 + arbeitslosengeld_2__eg_id: - 0 - 0 - 1 - eg_id: + arbeitslosengeld_2__fg_id: - 0 - 0 - - 1 - ehe_id: + - 0 + familie__ehe_id: - 0 - 0 - 1 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml index 6c02db104f..cce14b0df2 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 21 - geburtsmonat: - - 7 - - 7 - - 3 + - 0 + - -1 + - -1 + alter: + - 39 + - 42 + - 13 - 10 geburtsjahr: - 1984 - 1981 - 2010 - 2013 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 42 - - 13 + geburtsmonat: + - 7 + - 7 + - 3 - 10 + geburtstag: + - 14 + - 14 + - 1 + - 21 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - 0 - eg_id: - 0 - 0 - - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml index a6084bd1a1..4770cac0a1 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 21 - geburtsmonat: - - 7 - - 7 - - 3 + - 0 + - -1 + - -1 + alter: + - 39 + - 42 + - 13 - 10 geburtsjahr: - 1984 - 1981 - 2010 - 2013 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 42 - - 13 + geburtsmonat: + - 7 + - 7 + - 3 - 10 + geburtstag: + - 14 + - 14 + - 1 + - 21 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - 0 - eg_id: - 0 - 0 - - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml index 50cfbce2c3..c3545583de 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml @@ -3,97 +3,91 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 + - 0 + - 3 - 2 + alter: + - 49 + - 52 + - 23 + - 20 + geburtsjahr: + - 1974 + - 1971 + - 2000 + - 2003 + geburtsmonat: + - 7 + - 7 - 3 + - 10 geburtstag: - 14 - 14 - 1 - 21 - geburtsmonat: - - 7 - - 7 - - 3 - - 10 - geburtsjahr: - - 1974 - - 1971 - - 2000 - - 2003 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 49 - - 52 - - 23 - - 20 hh_id: - 0 - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - 3 + - 1 - 2 - p_id_ehepartner: + - 3 + familie__p_id_ehepartner: - 1 - 0 - 3 - 2 - gemeinsam_veranlagt: - - true - - true - - true - - true - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true outputs: - fg_id: - - 0 - - 0 - - 1 - - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 - 100 - eg_id: + arbeitslosengeld_2__eg_id: + - 0 + - 0 + - 1 + - 1 + arbeitslosengeld_2__fg_id: - 0 - 0 - 1 - 1 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 1 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 1 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml index 143f95e7b8..6e1b0554d1 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml @@ -3,25 +3,26 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 # Parent 1 - - 1 # Parent 2 - - 2 # Child 1 (different household) - - 3 # Child 2 - - 4 # Child 3 (too old) - - 5 # Child 4 (own child) - - 6 # Child 5 (too much income) - - 7 # Child of Child 4 - hh_id: - - 0 - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - 0 - - 0 - - 0 - - 0 - - 0 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 alter: - 50 - 48 @@ -31,16 +32,25 @@ inputs: - 24 - 24 - 2 - p_id_ehepartner: + hh_id: + - 0 + - 0 - 1 - 0 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_einstandspartner: + - 0 + - 0 + - 0 + - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + familie__p_id_ehepartner: - 1 - 0 - -1 @@ -49,7 +59,7 @@ inputs: - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 @@ -58,7 +68,7 @@ inputs: - 0 - 0 - 5 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 @@ -67,26 +77,8 @@ inputs: - 1 - 1 - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - true - - false outputs: - fg_id: - - 0 - - 0 - - 1 - - 0 - - 2 - - 3 - - 0 - - 3 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 @@ -95,7 +87,7 @@ outputs: - 300 - 1 - 300 - eg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 - 1 @@ -104,7 +96,16 @@ outputs: - 4 - 5 - 6 - ehe_id: + arbeitslosengeld_2__fg_id: + - 0 + - 0 + - 1 + - 0 + - 2 + - 3 + - 0 + - 3 + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml index c481081235..4abc4b11b8 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml @@ -1,16 +1,47 @@ --- info: - note: A later implementation may rely on the order of p_id or hh_id. + note: >- + A later implementation may rely on the order of p_id or + hh_id. source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 4 - - 2 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + alter: + - 39 + - 39 + - 13 + - 39 + - 13 + - 13 + geburtsjahr: + - 1984 + - 1984 + - 2010 + - 1984 + - 2010 + - 2010 + geburtsmonat: + - 7 + - 7 + - 3 + - 7 + - 3 - 3 - - 5 geburtstag: - 14 - 14 @@ -18,29 +49,6 @@ inputs: - 14 - 1 - 1 - geburtsmonat: - - 7 - - 7 - - 3 - - 7 - - 3 - - 3 - geburtsjahr: - - 1984 - - 1984 - - 2010 - - 1984 - - 2010 - - 2010 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 39 - - 13 - - 39 - - 13 - - 13 hh_id: - 0 - 1 @@ -48,42 +56,35 @@ inputs: - 2 - 2 - 1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_ehepartner: + p_id: + - 0 + - 1 + - 4 + - 2 + - 3 + - 5 + familie__p_id_ehepartner: - -1 - -1 - -1 - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - -1 - 2 - 1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - -1 - -1 - -1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false @@ -91,44 +92,38 @@ inputs: - false - false outputs: - fg_id: - - 0 - - 1 - - 0 - - 2 - - 2 - - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 100 - 0 - 200 - 200 - 100 - eg_id: + arbeitslosengeld_2__eg_id: - 0 - 1 - 2 - 3 - 4 - 5 - ehe_id: + arbeitslosengeld_2__fg_id: + - 0 + - 1 + - 0 + - 2 + - 2 + - 1 + familie__ehe_id: - 0 - 1 - 2 - 3 - 4 - 5 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - 4 - 5 -# - potentielle_kinderfreibeträge: -# - 2 -# - 0 -# - potentieller_unterhaltsvors: -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index c192550d78..e5934fa71d 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -5,102 +5,91 @@ info: request full kinderfreibetrag (Add this as input?) source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 + - -1 + - -1 + alter: + - 39 + - 42 + - 13 + - 52 + geburtsjahr: + - 1984 + - 1981 + - 2010 + - 1971 + geburtsmonat: + - 7 + - 7 - 3 + - 12 geburtstag: - 14 - 14 - 1 - 24 - geburtsmonat: - - 7 - - 7 - - 3 - - 12 - geburtsjahr: - - 1984 - - 1981 - - 2010 - - 1971 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 42 - - 13 - - 52 hh_id: - 0 - 0 - 0 - 1 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - -1 - -1 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 3 - -1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - - 1 - bg_id: + - 100 + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - - 100 - eg_id: - 0 - 0 - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 1 - 2 - 3 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 -# potentielle_kinderfreibeträge: -# - 1 -# - 0 -# - 0 -# - 1 -# potentieller_unterhaltsvors: -# - 0 -# - 0 -# - (potentially > 0) -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml index 461c1d1ec6..8e64088086 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml @@ -3,83 +3,74 @@ info: note: '' source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - geburtstag: - - 14 - - 14 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - geburtsmonat: - - 7 - - 7 - - 3 - geburtsjahr: - - 1984 - - 1981 - - 2010 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 + - 0 + - -1 alter: - 39 - 42 - 13 + geburtsjahr: + - 1984 + - 1981 + - 2010 + geburtsmonat: + - 7 + - 7 + - 3 + geburtstag: + - 14 + - 14 + - 1 hh_id: - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - p_id_ehepartner: + - 1 + - 2 + familie__p_id_ehepartner: - -1 - -1 - -1 - gemeinsam_veranlagt: - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - eigenbedarf_gedeckt: + einkommensteuer__gemeinsam_veranlagt: - false - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - bg_id: + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + arbeitslosengeld_2__fg_id: - 0 - eg_id: - 0 - 0 - - 1 - ehe_id: + familie__ehe_id: - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 0 -# - 0 -# potentieller_unterhaltsvors: -# - 0 -# - 0 -# - '> 0' diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index 1c611f5a76..34c1a4c571 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,106 +1,95 @@ --- info: note: >- - not eligible for potentieller_unterhaltsvorschuss if parent in same household is - married to new partner (kind_unterh_anspr_m unaffected) + not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is + married to new partner (unterhalt__anspruch_m unaffected) source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 + - -1 + - -1 + alter: + - 39 + - 42 + - 13 + - 52 + geburtsjahr: + - 1984 + - 1981 + - 2010 + - 1971 + geburtsmonat: + - 7 + - 7 - 3 + - 12 geburtstag: - 14 - 14 - 1 - 24 - geburtsmonat: - - 7 - - 7 - - 3 - - 12 - geburtsjahr: - - 1984 - - 1981 - - 2010 - - 1971 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 39 - - 42 - - 13 - - 52 hh_id: - 0 - 0 - 0 - 1 - p_id_einstandspartner: - - 1 + p_id: - 0 - - -1 - - -1 - p_id_ehepartner: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: - 1 - 0 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 0 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 1 - -1 - eigenbedarf_gedeckt: - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true - false - false outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 0 - - 1 - bg_id: + - 100 + arbeitslosengeld_2__eg_id: - 0 - 0 + - 1 + - 2 + arbeitslosengeld_2__fg_id: - 0 - - 100 - eg_id: - 0 - 0 - 1 - - 2 - ehe_id: + familie__ehe_id: - 0 - 0 - 1 - 2 - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 -# potentielle_kinderfreibeträge: -# - 1 -# - 1 # CZ: I think so -# - 0 -# - 1 -# potentieller_unterhaltsvors: -# - 0 -# - 0 -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml index b530f46434..d851e71465 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml @@ -23,10 +23,10 @@ inputs: - 0 - 0 outputs: - sn_id: + einkommensteuer__sn_id: - 0 - 0 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 # potentielle_kinderfreibeträge: diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml index aa3ff4c1ed..22e9fcf360 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml @@ -5,16 +5,16 @@ info: inputs: - id: 0 geburtstag: 1984-07-14 - p_id_einstandspartner: 1 - gemeinsam_veranlagt: false + arbeitslosengeld_2__p_id_einstandspartner: 1 + einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 - id: 1 geburtstag: 1981-07-14 - gemeinsam_veranlagt: false + einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 - id: 2 geburtstag: 2010-03-01 - p_id_einstandspartner: 0 + arbeitslosengeld_2__p_id_einstandspartner: 0 hh_id: 0 id_eltern: - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml index d1b7d96a01..f1b9e21f04 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml @@ -5,16 +5,16 @@ info: inputs: - id: 0 geburtstag: 1984-07-14 - p_id_einstandspartner: 1 - gemeinsam_veranlagt: false + arbeitslosengeld_2__p_id_einstandspartner: 1 + einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 - id: 1 geburtstag: 1981-07-14 - p_id_einstandspartner: 0 + arbeitslosengeld_2__p_id_einstandspartner: 0 hh_id: 0 - id: 2 geburtstag: 2010-03-01 - gemeinsam_veranlagt: false + einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 id_eltern: - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml index baa6675804..b825d6ac72 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml @@ -20,10 +20,10 @@ inputs: - 0 - 0 outputs: - sn_id: + einkommensteuer__sn_id: - 0 - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 1 # potentielle_kinderfreibeträge: diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml index d0c4a07d60..01fa09983d 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml @@ -20,10 +20,10 @@ inputs: - 0 - 0 outputs: - sn_id: + einkommensteuer__sn_id: - 0 - 1 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 1 # potentielle_kinderfreibeträge: diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml index 93a2a2f508..adf9899b86 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml @@ -5,13 +5,13 @@ info: inputs: - id: 0 geburtstag: 1984-07-14 - p_id_einstandspartner: 1 - gemeinsam_veranlagt: true + arbeitslosengeld_2__p_id_einstandspartner: 1 + einkommensteuer__gemeinsam_veranlagt: true hh_id: 0 - id: 1 geburtstag: 1981-07-14 - p_id_einstandspartner: 0 - gemeinsam_veranlagt: true + arbeitslosengeld_2__p_id_einstandspartner: 0 + einkommensteuer__gemeinsam_veranlagt: true hh_id: 0 outputs: - error: Personen sind nicht verheiratet, aber gemeinsam veranlagt diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml index 8ca6fb1fdb..9461aa6c31 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml @@ -5,15 +5,15 @@ info: inputs: - id: 0 geburtstag: 1984-07-14 - p_id_einstandspartner: 1 - p_id_ehepartner: 1 - gemeinsam_veranlagt: true + arbeitslosengeld_2__p_id_einstandspartner: 1 + familie__p_id_ehepartner: 1 + einkommensteuer__gemeinsam_veranlagt: true hh_id: 0 - id: 1 geburtstag: 1981-07-14 - p_id_einstandspartner: 0 - p_id_ehepartner: 0 - gemeinsam_veranlagt: false + arbeitslosengeld_2__p_id_einstandspartner: 0 + familie__p_id_ehepartner: 0 + einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 outputs: - error: >- diff --git a/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml b/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml index 446af601b3..ad8f5c23e8 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml @@ -3,6 +3,7 @@ info: note: '' source: '' inputs: + assumed: {} provided: p_id: - 0 @@ -12,7 +13,7 @@ inputs: - 4 - 5 - 6 - p_id_ehepartner: + familie__p_id_ehepartner: - 1 - 0 - -1 @@ -20,7 +21,7 @@ inputs: - -1 - 6 - 5 - gemeinsam_veranlagt: + einkommensteuer__gemeinsam_veranlagt: - true - true - false @@ -28,9 +29,8 @@ inputs: - false - false - false - assumed: {} outputs: - sn_id: + einkommensteuer__sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml index 5639821799..f01c241bed 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml @@ -3,16 +3,41 @@ info: note: Couple with three children and two grandparents. One child outside of parent BG. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - - 4 - - 5 - - 6 - geburtstag: + - 2 + - -1 + - -1 + - -1 + alter: + - 53 + - 53 + - 53 + - 53 + - 13 + - 13 + - 13 + geburtsjahr: + - 1970 + - 1970 + - 1970 + - 1970 + - 2010 + - 2010 + - 2010 + geburtsmonat: - 1 - 1 - 1 @@ -20,7 +45,7 @@ inputs: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 @@ -28,24 +53,6 @@ inputs: - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 1970 - - 1970 - - 2010 - - 2010 - - 2010 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 53 - - 53 - - 53 - - 53 - - 13 - - 13 - - 13 hh_id: - 0 - 0 @@ -54,15 +61,15 @@ inputs: - 0 - 0 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - 3 + - 1 - 2 - - -1 - - -1 - - -1 - p_id_ehepartner: + - 3 + - 4 + - 5 + - 6 + familie__p_id_ehepartner: - 1 - 0 - 3 @@ -70,15 +77,7 @@ inputs: - -1 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 @@ -86,7 +85,7 @@ inputs: - 0 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 @@ -94,15 +93,15 @@ inputs: - 1 - 1 - -1 - eigenbedarf_gedeckt: - - false - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true - false - false - false - - true - wohngeld_vorrang_bg: + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - false - false - true @@ -110,7 +109,7 @@ inputs: - false - false - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - false - false - true @@ -119,23 +118,23 @@ inputs: - false - true outputs: - fg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - - 1 - - 1 + - 100 + - 100 - 0 - 0 + - 1 + arbeitslosengeld_2__fg_id: - 0 - bg_id: - 0 + - 1 + - 1 - 0 - - 100 - - 100 - 0 - 0 - - 1 - wthh_id: + wohngeld__wthh_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml index 867b424a6b..e7dd97e1d5 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml @@ -3,16 +3,41 @@ info: note: Multiple households with mutliple Bedarfsgemeinschaften. source: '' inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - - 4 - - 5 - - 6 - geburtstag: + - 2 + - -1 + - -1 + - -1 + alter: + - 53 + - 53 + - 53 + - 53 + - 23 + - 23 + - 13 + geburtsjahr: + - 1970 + - 1970 + - 1970 + - 1970 + - 2000 + - 2000 + - 2010 + geburtsmonat: - 1 - 1 - 1 @@ -20,7 +45,7 @@ inputs: - 1 - 1 - 1 - geburtsmonat: + geburtstag: - 1 - 1 - 1 @@ -28,24 +53,6 @@ inputs: - 1 - 1 - 1 - geburtsjahr: - - 1970 - - 1970 - - 1970 - - 1970 - - 2000 - - 2000 - - 2010 - # TODO (@hmgaudecker): Remove again. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 - alter: - - 53 - - 53 - - 53 - - 53 - - 23 - - 23 - - 13 hh_id: - 0 - 0 @@ -54,15 +61,15 @@ inputs: - 2 - 2 - 0 - p_id_einstandspartner: - - 1 + p_id: - 0 - - 3 + - 1 - 2 - - -1 - - -1 - - -1 - p_id_ehepartner: + - 3 + - 4 + - 5 + - 6 + familie__p_id_ehepartner: - 1 - 0 - 3 @@ -70,15 +77,7 @@ inputs: - -1 - -1 - -1 - gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 @@ -86,7 +85,7 @@ inputs: - 0 - 0 - 0 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 @@ -94,15 +93,15 @@ inputs: - 1 - 1 - -1 - eigenbedarf_gedeckt: - - false - - false - - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true - false - false - false - - true - wohngeld_vorrang_bg: + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - false - false - true @@ -110,7 +109,7 @@ inputs: - false - false - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - false - false - true @@ -119,15 +118,7 @@ inputs: - false - true outputs: - fg_id: - - 0 - - 0 - - 1 - - 1 - - 2 - - 3 - - 0 - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 @@ -135,7 +126,15 @@ outputs: - 200 - 300 - 1 - wthh_id: + arbeitslosengeld_2__fg_id: + - 0 + - 0 + - 1 + - 1 + - 2 + - 3 + - 0 + wohngeld__wthh_id: - 0 - 0 - 101 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml index caa48a4d32..61ad588c49 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml @@ -1,63 +1,62 @@ --- info: - note: '' - source: >- + note: >- Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: + assumed: {} provided: - p_id: - - 1 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 1 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 420 - grundr_bew_zeiten: - - 420 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 14.014 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 14.014 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 420 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 420 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 14.014 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.029166667 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 897.97 + sozialversicherung__rente__grundrente__basisbetrag_m: - 418.83 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 418.83 - ges_rente_m: - - 897.97 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.029166667 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml index 24769b52b4..65bf1804f3 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml @@ -4,58 +4,58 @@ info: source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html (Alexander Langkowski) inputs: + assumed: {} provided: - p_id: - - 10 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 10 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 10 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 492 - grundr_bew_zeiten: - - 492 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: - - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - kapitaleink_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 41.0 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 41.0 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 492 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 492 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 41.0 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: + sozialversicherung__rente__altersrente__betrag_m: + - 1402.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 0.0 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - 0.0 - ges_rente_m: - - 1402.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml index 5768463d71..a154b2f518 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml @@ -1,64 +1,64 @@ --- info: note: >- - adjusted grundr_zuschlag_bonus_entgeltp since test case uses 0.8 as maximum instead - of 0.8004 + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + test case uses 0.8 as maximum instead of 0.8004. source: >- Beispiel Alexander Langkowski / Hatice Yilmaz aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: + assumed: {} provided: - p_id: - - 11 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 11 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 11 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 516 - grundr_bew_zeiten: - - 372 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 18.5 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.5 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 372 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 516 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.5 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.021875 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 911.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 279.0 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 279.0 - ges_rente_m: - - 911.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.021875 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml index ff60853e91..f9f29b7fbf 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml @@ -3,58 +3,58 @@ info: note: Person with zero Grundrente Bewertungszeiten source: '' inputs: + assumed: {} provided: - p_id: - - 12 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1990 hh_id: - 12 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 12 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 0 - grundr_bew_zeiten: - - 0 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - kapitaleink_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1990 - bruttolohn_m: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - entgeltp_west: + sozialversicherung__rente__entgeltpunkte_west: - 0.0 - entgeltp_ost: + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 0 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 0.0 - ges_rente_zugangsfaktor: - - 1.0 - rentner: - - false - grundr_entgeltp: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 - kind: - - false - assumed: {} outputs: - grundr_zuschlag_bonus_entgeltp: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__grundrente__basisbetrag_m: - 0.0 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - ges_rente_m: + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml index a1e24291f1..94dcf3bab2 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml @@ -1,63 +1,62 @@ --- info: - note: '' - source: >- + note: >- Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: + assumed: {} provided: - p_id: - - 2 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 2 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 2 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 420 - grundr_bew_zeiten: - - 420 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 17.5 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 17.5 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 420 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 420 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 17.5 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.021908333 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 912.93 + sozialversicherung__rente__grundrente__basisbetrag_m: - 314.6 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 314.6 - ges_rente_m: - - 912.93 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.021908333 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml index 89b6d6d7af..fd764c427e 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml @@ -6,58 +6,58 @@ info: Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: + assumed: {} provided: - p_id: - - 3 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 3 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 3 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 420 - grundr_bew_zeiten: - - 420 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 21.0 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 21.0 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 420 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 420 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 21.0 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.014616667 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 927.88 + sozialversicherung__rente__grundrente__basisbetrag_m: - 209.89 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 209.89 - ges_rente_m: - - 927.88 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.014616667 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml index 0d999b6d6a..0a73d4a7a1 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml @@ -1,63 +1,62 @@ --- info: note: >- - adjusted grundr_zuschlag_bonus_entgeltp since test case uses 0.8 as maximum instead - of 0.8004. Beispiel Sabine M. aus: - source: >- - https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + test case uses 0.8 as maximum instead of 0.8004. Beispiel Sabine M. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: + assumed: {} provided: - p_id: - - 4 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 4 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 480 - grundr_bew_zeiten: - - 480 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 28.8 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: - 28.8 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 480 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 480 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 28.8 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.0058625 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 1069.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 83.77 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 83.77 - ges_rente_m: - - 1069.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.0058625 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml index 4ed6ec47ff..e4eecb8b5a 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml @@ -1,63 +1,62 @@ --- info: note: >- - Adjusted grundr_zuschlag_bonus_entgeltp since test case uses 0.8 as maximum instead - of 0.8004. Beispiel Martin S. - source: >- - https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html + Adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: + assumed: {} provided: - p_id: - - 5 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 5 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 408 - grundr_bew_zeiten: - - 408 wohnort_ost: - true - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - entgeltp_ost: - - 18.7 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: - 18.7 - kind: - - false - assumed: {} + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 408 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 408 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 18.7 + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.003698333 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 677.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 50.98 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 50.98 - ges_rente_m: - - 677.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.003698333 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml index 461644cf9e..3f3489a301 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml @@ -4,58 +4,58 @@ info: source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) inputs: + assumed: {} provided: - p_id: - - 6 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 6 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 6 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 480 - grundr_bew_zeiten: - - 300 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: - - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - true - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 19.2 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 19.2 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 300 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 480 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.014583333 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 806.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 149.72 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 149.72 - ges_rente_m: - - 806.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml index 8e1e21114d..893b75a810 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml @@ -4,58 +4,58 @@ info: source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K. + Dieter P.) inputs: + assumed: {} provided: - p_id: - - 7 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 7 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 7 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 480 - grundr_bew_zeiten: - - 300 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1400.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - kapitaleink_y: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - alter: - - 70 - alleinstehend: + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - geburtsjahr: - - 1951 - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - entgeltp_west: + sozialversicherung__rente__entgeltpunkte_west: - 19.2 - entgeltp_ost: - - 0.0 - ges_rente_zugangsfaktor: - - 1.0 - rentner: - - true - grundr_entgeltp: + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 300 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 480 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.014583333 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 716.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 149.72 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 59.72 - ges_rente_m: - - 716.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml index 4942424e86..9b275b518c 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml @@ -4,58 +4,58 @@ info: source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) + Dieter P.MonikaL inputs: + assumed: {} provided: - p_id: - - 8 + alleinstehend: + - false + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 8 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 8 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 480 - grundr_bew_zeiten: - - 300 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bruttolohn_vorj_m: - - 2400.0 - eink_selbst_y: - - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - kapitaleink_y: - - 0.0 - alter: - - 70 - alleinstehend: - - false - geburtsjahr: - - 1951 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2400.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - entgeltp_west: - - 19.2 - entgeltp_ost: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - ges_rente_zugangsfaktor: + sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 - rentner: + sozialversicherung__rente__bezieht_rente: - true - grundr_entgeltp: + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 19.2 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 300 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 480 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.014583333 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 656.0 + sozialversicherung__rente__grundrente__basisbetrag_m: - 149.72 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - ges_rente_m: - - 656.0 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml index 24773e3fa9..58830b524a 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml @@ -1,64 +1,64 @@ --- info: note: >- - adjusted grundr_zuschlag_bonus_entgeltp since test case uses 0.8 as maximum instead - of 0.8004 + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + test case uses 0.8 as maximum instead of 0.8004 source: >- Beispiel Richard Frenzel aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: + assumed: {} provided: - p_id: - - 9 + alleinstehend: + - true + alter: + - 70 + geburtsjahr: + - 1951 hh_id: - 9 - p_id_ehepartner: + familie__kind: + - false + p_id: + - 9 + familie__p_id_ehepartner: - -1 - grundr_zeiten: - - 552 - grundr_bew_zeiten: - - 552 wohnort_ost: - false - rente_vorj_vor_grundr_proxy_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - bruttolohn_vorj_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 1380.0 - eink_selbst_y: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - 0.0 - eink_vermietung_y: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 - kapitaleink_y: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - alter: - - 70 - alleinstehend: + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + sozialversicherung__rente__bezieht_rente: - true - geburtsjahr: - - 1951 - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - entgeltp_west: + sozialversicherung__rente__entgeltpunkte_west: - 34.5 - entgeltp_ost: - - 0.0 - ges_rente_zugangsfaktor: - - 1.0 - rentner: - - true - grundr_entgeltp: + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 552 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 552 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 34.5 - kind: - - false - assumed: {} + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 0.0 outputs: - grundr_zuschlag_bonus_entgeltp: - - 0.0037 - grundr_zuschlag_vor_eink_anr_m: + sozialversicherung__rente__altersrente__betrag_m: + - 1179.55 + sozialversicherung__rente__grundrente__basisbetrag_m: - 53.0 - grundr_zuschlag_m: + sozialversicherung__rente__grundrente__betrag_m: - 0.0 - ges_rente_m: - - 1179.55 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.0037 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml index b00a4f6aa8..6177ede27a 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml @@ -3,80 +3,80 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 1 - hh_id: - - 1 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: - - 2 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - ges_rente_vorauss_langj: - - true - _ges_rente_altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.41666666 - _ges_rente_altersgrenze_vorzeitig: + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 63.0 - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 673.54 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml index 2b2aa8d904..ce88734338 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 2 - hh_id: - - 2 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 30.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: + hh_id: + - 2 + p_id: - 2 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 24.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__entgeltpunkte_west: + - 30.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml index 6fdd707143..a6d47f0b43 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 2 - hh_id: - - 2 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 30.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: + hh_id: + - 2 + p_id: - 2 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 240.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - weiblich: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - y_pflichtbeitr_ab_40: - - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__entgeltpunkte_west: + - 30.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1010.31 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml index ffa8e50472..827ecc683c 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 3 - hh_id: - - 3 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 20.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: - - 2 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false wohnort_ost: - true - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 20.0 + sozialversicherung__rente__entgeltpunkte_west: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 654.63 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml index 7a5f961f9c..0b2e690eea 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 4 - hh_id: - - 4 alter: - 70 - priv_rente_m: - - 1000.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: - - 2 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: - - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 1000.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1673.54 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml index d1297355a9..f5ae855321 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml @@ -3,80 +3,80 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 5 - hh_id: - - 5 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2014 - monat_renteneintr: - - 2 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2014 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_mutterschutz: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: - - 624.31 - ges_rente_vorauss_langj: - - true - _ges_rente_altersgrenze_vorzeitig: + sozialversicherung__rente__alter_bei_renteneintritt: - 63.0 - age_of_retirement: + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 63.0 + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + - 624.31 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml index e86e80f62d..57e8587a94 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 6 - hh_id: - - 6 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2020 - monat_renteneintr: - - 2 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2020 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 830.82 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml index d37646bfbc..15c397bbba 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 7 - hh_id: - - 7 alter: - 90 - priv_rente_m: - - 0.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1931 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 1996 - monat_renteneintr: - - 2 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 1996 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 683.8 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml index 91106765b7..1a864ea13a 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 8 - hh_id: - - 8 alter: - 50 - priv_rente_m: - - 0.0 - entgeltp_west: - - 20.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1971 geburtsmonat: - 1 - rentner: + hh_id: + - 8 + p_id: + - 8 + weiblich: - false - jahr_renteneintr: - - 2033 - monat_renteneintr: - - 2 wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 120.0 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - weiblich: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false - y_pflichtbeitr_ab_40: - - 120.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__bezieht_rente: - false - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_schul_ausbild: - - 63.0 - m_kind_berücks_zeit: + sozialversicherung__rente__entgeltpunkte_west: + - 20.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2033 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__monat_renteneintritt: + - 2 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 63.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml index 86b0d6b774..5d7d34b5d0 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml @@ -3,74 +3,74 @@ info: note: made up, regression test source: '' inputs: + assumed: {} provided: - p_id: - - 2 - hh_id: - - 2 alter: - 70 - priv_rente_m: - - 0.0 - entgeltp_west: - - 30.0 - entgeltp_ost: - - 0.0 geburtsjahr: - 1951 geburtsmonat: - 1 - rentner: - - true - jahr_renteneintr: - - 2016 - monat_renteneintr: - - 7 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false wohnort_ost: - false - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 - pflichtbeitr_8_in_10: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true - arbeitsl_1y_past_585: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - vertra_arbeitsl_1997: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - vertra_arbeitsl_2006: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - m_pflichtbeitrag: - - 480.0 - m_freiw_beitrag: - - 6.0 - m_ersatzzeit: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - m_schul_ausbild: - - 36.0 - m_kind_berücks_zeit: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - m_pfleg_berücks_zeit: + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__entgeltpunkte_ost: - 0.0 - m_arbeitsunfähig: + sozialversicherung__rente__entgeltpunkte_west: + - 30.0 + sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - m_krank_ab_16_bis_24: + sozialversicherung__rente__freiwillige_beitragsmonate: + - 6.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2016 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monat_renteneintritt: + - 7 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - m_mutterschutz: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - m_arbeitsl: + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - m_ausbild_suche: + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - m_alg1_übergang: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - m_geringf_beschäft: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - assumed: {} outputs: - rente_vorj_vor_grundr_proxy_m: + sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1025.7 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_13.yaml deleted file mode 100644 index 23aed7de00..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_13.yaml +++ /dev/null @@ -1,132 +0,0 @@ ---- -info: - note: >- - Added capital income of 10 euros for household (expected difference in - grunds_im_alter_m_eg ((10*12)-26)/12)=7.83333333) - source: >- - Adjusted test case based on - https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele -inputs: - provided: - p_id: - - 17 - - 18 - hh_id: - - 13 - - 13 - p_id_einstandspartner: - - 18 - - 17 - p_id_ehepartner: - - 18 - - 17 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2017 - - 2017 - kind: - - false - - false - alter: - - 72 - - 67 - bruttokaltmiete_m_hh: - - 460.0 - - 460.0 - heizkosten_m_hh: - - 60.0 - - 60.0 - wohnfläche_hh: - - 60.0 - - 60.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 10.0 - - 0.0 - grundr_zeiten: - - 300 - - 48 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 860.6 - - 73.4 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1945 - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 314.1666667 - - 314.1666667 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_16.yaml deleted file mode 100644 index 79b2f123b6..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_16.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele -inputs: - provided: - p_id: - - 21 - hh_id: - - 16 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2017 - kind: - - false - alter: - - 50 - bruttokaltmiete_m_hh: - - 252.5 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 35.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 120 - rentner: - - true - schwerbeh_g: - - true - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 425.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1967 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 356.03 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_17.yaml deleted file mode 100644 index 37fb9d9aaa..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_17.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele -inputs: - provided: - p_id: - - 22 - hh_id: - - 17 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2017 - kind: - - false - alter: - - 82 - bruttokaltmiete_m_hh: - - 300.0 - heizkosten_m_hh: - - 40.5 - wohnfläche_hh: - - 36.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 36 - rentner: - - true - schwerbeh_g: - - true - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 583.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1935 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 236.03 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_6.yaml deleted file mode 100644 index 86088dcd52..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2017-07-01/hh_id_6.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: '' - source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele -inputs: - provided: - p_id: - - 8 - - 9 - hh_id: - - 6 - - 6 - p_id_einstandspartner: - - 9 - - 8 - p_id_ehepartner: - - 9 - - 8 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2017 - - 2017 - kind: - - false - - false - alter: - - 72 - - 67 - bruttokaltmiete_m_hh: - - 460.0 - - 460.0 - heizkosten_m_hh: - - 60.0 - - 60.0 - wohnfläche_hh: - - 60.0 - - 60.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 300 - - 48 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 860.6 - - 73.4 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1945 - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 322.0 - - 322.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_12.yaml deleted file mode 100644 index de42a4d99b..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_12.yaml +++ /dev/null @@ -1,92 +0,0 @@ ---- -info: - note: >- - Added minor capital income of 2 euros (no deduction from claim since below allowance - of 26 euros per year) - source: >- - Adjusted test case based on - https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 -inputs: - provided: - p_id: - - 16 - hh_id: - - 12 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2018 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 344.0 - heizkosten_m_hh: - - 92.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 2.0 - grundr_zeiten: - - 300 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 400.0 - ges_rente_m: - - 440.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 202.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_20.yaml deleted file mode 100644 index ef7101d565..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_20.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: Test with positive wealth above wealth allowance - source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 -inputs: - provided: - p_id: - - 26 - hh_id: - - 20 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2018 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 344.0 - heizkosten_m_hh: - - 92.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 300 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 5600.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 400.0 - ges_rente_m: - - 440.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 0.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_22.yaml deleted file mode 100644 index 3e21c742ec..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_22.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: Test with positive wealth below wealth allowance - source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 -inputs: - provided: - p_id: - - 29 - hh_id: - - 22 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2018 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 344.0 - heizkosten_m_hh: - - 92.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 300 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 4900.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 400.0 - ges_rente_m: - - 440.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 202.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_3.yaml deleted file mode 100644 index 0e59105d8a..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2018-07-01/hh_id_3.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 -inputs: - provided: - p_id: - - 4 - hh_id: - - 3 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2018 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 344.0 - heizkosten_m_hh: - - 92.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 300 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 400.0 - ges_rente_m: - - 440.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 202.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_18.yaml deleted file mode 100644 index 1cabfe4023..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_18.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii -inputs: - provided: - p_id: - - 23 - hh_id: - - 18 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2020 - kind: - - false - alter: - - 80 - bruttokaltmiete_m_hh: - - 250.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 35.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 120 - rentner: - - true - schwerbeh_g: - - true - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 200.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1940 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 605.44 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_19.yaml deleted file mode 100644 index 98cfda3f7d..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2020-07-01/hh_id_19.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: 'Calculation error on the website: should be 210.13 instead of 209.13' - source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii -inputs: - provided: - p_id: - - 24 - - 25 - hh_id: - - 19 - - 19 - p_id_einstandspartner: - - 25 - - 24 - p_id_ehepartner: - - 25 - - 24 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2020 - - 2020 - kind: - - false - - false - alter: - - 67 - - 70 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 66.0 - - 66.0 - wohnfläche_hh: - - 40.0 - - 40.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 144 - - 300 - rentner: - - true - - true - schwerbeh_g: - - false - - true - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 300.0 - - 700.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1953 - - 1950 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 210.13 - - 210.13 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_1.yaml deleted file mode 100644 index db17b899f6..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_1.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: Beispielpersonen Max B. und Inge M. - source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 -inputs: - provided: - p_id: - - 1 - - 2 - hh_id: - - 1 - - 1 - p_id_einstandspartner: - - 2 - - 1 - p_id_ehepartner: - - 2 - - 1 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2021 - - 2021 - kind: - - false - - false - alter: - - 70 - - 67 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 66.0 - - 66.0 - wohnfläche_hh: - - 50.0 - - 50.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 240 - - 240 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 350.0 - - 590.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1951 - - 1954 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 228.0 - - 228.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_14.yaml deleted file mode 100644 index ec2befcc5e..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_14.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -info: - note: >- - Adjusted test case by adding capital income of 50 euros (expected difference in - grunds_im_alter_m_eg (50*12 - 26) / 12) = 47.83333333) - source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ -inputs: - provided: - p_id: - - 19 - hh_id: - - 14 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2021 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 350.0 - heizkosten_m_hh: - - 35.0 - wohnfläche_hh: - - 40.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 50.0 - grundr_zeiten: - - 0 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 430.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1953 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 353.17 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_15.yaml deleted file mode 100644 index 63cde099f2..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_15.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: Beispielperson Gerda M. - source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 -inputs: - provided: - p_id: - - 20 - hh_id: - - 15 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2021 - kind: - - false - alter: - - 67 - bruttokaltmiete_m_hh: - - 335.0 - heizkosten_m_hh: - - 35.0 - wohnfläche_hh: - - 40.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 0 - rentner: - - true - schwerbeh_g: - - true - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 325.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1954 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 566.82 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_2.yaml deleted file mode 100644 index c996fc805c..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_2.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: Beispielperson Harald F. - source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 -inputs: - provided: - p_id: - - 3 - hh_id: - - 2 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2021 - kind: - - false - alter: - - 70 - bruttokaltmiete_m_hh: - - 405.0 - heizkosten_m_hh: - - 40.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 420 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 94.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 850.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1951 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 358.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_21.yaml deleted file mode 100644 index c1568c5739..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_21.yaml +++ /dev/null @@ -1,130 +0,0 @@ ---- -info: - note: >- - Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge - M. - source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 -inputs: - provided: - p_id: - - 27 - - 28 - hh_id: - - 21 - - 21 - p_id_einstandspartner: - - 28 - - 27 - p_id_ehepartner: - - 28 - - 27 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2021 - - 2021 - kind: - - false - - false - alter: - - 70 - - 67 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 66.0 - - 66.0 - wohnfläche_hh: - - 50.0 - - 50.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 240 - - 240 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 10500.0 - - 10500.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 350.0 - - 590.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1951 - - 1954 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_23.yaml deleted file mode 100644 index ecdc684566..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_23.yaml +++ /dev/null @@ -1,130 +0,0 @@ ---- -info: - note: >- - Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge - M. - source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 -inputs: - provided: - p_id: - - 30 - - 31 - hh_id: - - 23 - - 23 - p_id_einstandspartner: - - 31 - - 30 - p_id_ehepartner: - - 31 - - 30 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2021 - - 2021 - kind: - - false - - false - alter: - - 70 - - 67 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 66.0 - - 66.0 - wohnfläche_hh: - - 50.0 - - 50.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 240 - - 240 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 8250.0 - - 8250.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 350.0 - - 590.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1951 - - 1954 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 228.0 - - 228.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_5.yaml deleted file mode 100644 index f0274c04c0..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_5.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ -inputs: - provided: - p_id: - - 7 - hh_id: - - 5 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2021 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 350.0 - heizkosten_m_hh: - - 35.0 - wohnfläche_hh: - - 40.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 0 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 430.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1953 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 401.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_7.yaml deleted file mode 100644 index be91c2a29c..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_7.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ -inputs: - provided: - p_id: - - 10 - hh_id: - - 7 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2021 - kind: - - false - alter: - - 68 - bruttokaltmiete_m_hh: - - 350.0 - heizkosten_m_hh: - - 35.0 - wohnfläche_hh: - - 40.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 0 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 430.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1953 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 401.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_9.yaml deleted file mode 100644 index b49b87a3a0..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2021-07-01/hh_id_9.yaml +++ /dev/null @@ -1,130 +0,0 @@ ---- -info: - note: >- - Test if households with non-retired adult do not get Grundsicherung im Alter (as - currently implemented those households get ALG 2) - source: '' -inputs: - provided: - p_id: - - 12 - - 13 - hh_id: - - 9 - - 9 - p_id_einstandspartner: - - 13 - - 12 - p_id_ehepartner: - - 13 - - 12 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2021 - - 2021 - kind: - - false - - false - alter: - - 70 - - 60 - bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - heizkosten_m_hh: - - 66.0 - - 66.0 - wohnfläche_hh: - - 50.0 - - 50.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 240 - - 240 - rentner: - - true - - false - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 350.0 - - 0.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1951 - - 1961 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_10.yaml deleted file mode 100644 index 78ded8e069..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_10.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -info: - note: >- - Capital income of 20 euros (monthly amount deducted from claim due to capital income - (20*12 - 26) / 12 = 17.83333333) - source: Self-created test case -inputs: - provided: - p_id: - - 14 - hh_id: - - 10 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2022 - kind: - - false - alter: - - 73 - bruttokaltmiete_m_hh: - - 300.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 20.0 - grundr_zeiten: - - 120 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 250.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1949 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 531.17 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_11.yaml deleted file mode 100644 index 2da233033d..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_11.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -info: - note: >- - Capital income of 50 euros (monthly amount deducted from claim due to capital income - (50*12 - 26) / 12 = 47.83333333) - source: Self-created test case -inputs: - provided: - p_id: - - 15 - hh_id: - - 11 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2022 - kind: - - false - alter: - - 69 - bruttokaltmiete_m_hh: - - 300.0 - heizkosten_m_hh: - - 70.0 - wohnfläche_hh: - - 45.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 50.0 - grundr_zeiten: - - 216 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 50.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 0.0 - ges_rente_m: - - 400.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1953 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 421.17 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_24.yaml deleted file mode 100644 index 5015a4735d..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_24.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: Test with child and positive wealth above wealth allowance - source: https://www.smart-rechner.de/grundsicherung/rechner.php -inputs: - provided: - p_id: - - 32 - - 33 - hh_id: - - 24 - - 24 - p_id_einstandspartner: - - 33 - - 32 - p_id_ehepartner: - - 33 - - 32 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2022 - - 2022 - kind: - - false - - true - alter: - - 50 - - 16 - bruttokaltmiete_m_hh: - - 252.5 - - 252.5 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 35.0 - - 35.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 120 - - 0 - rentner: - - true - - false - schwerbeh_g: - - true - - false - vermögen_bedürft_eg: - - 5600.0 - - 5600.0 - alleinerz: - - true - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 425.0 - - 0.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1972 - - 2006 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_25.yaml deleted file mode 100644 index 79b428d5a4..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_25.yaml +++ /dev/null @@ -1,132 +0,0 @@ ---- -info: - note: >- - Test with child and positive wealth below wealth allowance (website did not add - general amount for child) - source: https://www.smart-rechner.de/grundsicherung/rechner.php -inputs: - provided: - p_id: - - 34 - - 35 - hh_id: - - 25 - - 25 - p_id_einstandspartner: - - -1 - - -1 - p_id_ehepartner: - - -1 - - -1 - p_id_elternteil_1: - - -1 - - 34 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 34 - gemeinsam_veranlagt: - - false - - false - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2022 - - 2022 - kind: - - false - - true - alter: - - 50 - - 16 - bruttokaltmiete_m_hh: - - 252.5 - - 252.5 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 35.0 - - 35.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 120 - - 0 - rentner: - - true - - false - schwerbeh_g: - - true - - false - vermögen_bedürft_eg: - - 5400.0 - - 0.0 - alleinerz: - - true - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 425.0 - - 0.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1972 - - 2006 - assumed: {} -outputs: - # TODO (@MImmesberger): Unskip this test once the issue is resolved - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/696 - grunds_im_alter_m_eg: - - 852.71 - - 0.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_4.yaml deleted file mode 100644 index 1e0cac5a74..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_4.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: '' - source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner -inputs: - provided: - p_id: - - 5 - - 6 - hh_id: - - 4 - - 4 - p_id_einstandspartner: - - 6 - - 5 - p_id_ehepartner: - - 6 - - 5 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - eigenbedarf_gedeckt: - - false - - false - jahr: - - 2022 - - 2022 - kind: - - false - - false - alter: - - 76 - - 70 - bruttokaltmiete_m_hh: - - 430.0 - - 430.0 - heizkosten_m_hh: - - 70.0 - - 70.0 - wohnfläche_hh: - - 55.0 - - 55.0 - bruttolohn_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - grundr_zeiten: - - 240 - - 120 - rentner: - - true - - true - schwerbeh_g: - - false - - false - vermögen_bedürft_eg: - - 0.0 - - 0.0 - alleinerz: - - false - - false - bewohnt_eigentum_hh: - - false - - false - arbeitsl_geld_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_st_y_sn: - - 0.0 - - 0.0 - soli_st_y_sn: - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - kindergeld_m_eg: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - - 0.0 - elterngeld_m: - - 0.0 - - 0.0 - priv_rente_m: - - 0.0 - - 0.0 - ges_rente_m: - - 360.0 - - 120.0 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1946 - - 1952 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 928.0 - - 928.0 diff --git a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_8.yaml deleted file mode 100644 index 25cd524a5e..0000000000 --- a/src/_gettsim_tests/test_data/grunds_im_alter/2022-07-01/hh_id_8.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner -inputs: - provided: - p_id: - - 11 - hh_id: - - 8 - p_id_einstandspartner: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - eigenbedarf_gedeckt: - - false - jahr: - - 2022 - kind: - - false - alter: - - 77 - bruttokaltmiete_m_hh: - - 300.0 - heizkosten_m_hh: - - 45.0 - wohnfläche_hh: - - 40.0 - bruttolohn_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - grundr_zeiten: - - 120 - rentner: - - true - schwerbeh_g: - - false - vermögen_bedürft_eg: - - 0.0 - alleinerz: - - false - bewohnt_eigentum_hh: - - false - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: - - 0.0 - eink_selbst_m: - - 0.0 - eink_vermietung_m: - - 0.0 - eink_st_y_sn: - - 0.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 50.0 - kindergeld_m_eg: - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - unterhaltsvors_m_eg: - - 0.0 - elterngeld_m: - - 0.0 - priv_rente_m: - - 400.0 - ges_rente_m: - - 250.0 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1945 - assumed: {} -outputs: - grunds_im_alter_m_eg: - - 384.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml new file mode 100644 index 0000000000..f236504898 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml @@ -0,0 +1,132 @@ +--- +info: + note: >- + Added capital income of 10 euros for household (expected difference in + grundsicherung__im_alter__betrag_m_eg ((10*12)-26)/12)=7.83333333) + source: >- + Adjusted test case based on + https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 18 + - 17 + familie__alleinerziehend: + - false + - false + alter: + - 72 + - 67 + geburtsjahr: + - 1945 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 13 + - 13 + familie__kind: + - false + - false + p_id: + - 17 + - 18 + familie__p_id_ehepartner: + - 18 + - 17 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 10.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2017 + - 2017 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 860.6 + - 73.4 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + - 48 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 460.0 + - 460.0 + wohnen__heizkosten_m_hh: + - 60.0 + - 60.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 314.1666667 + - 314.1666667 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml new file mode 100644 index 0000000000..75dbd695e3 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 50 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 16 + familie__kind: + - false + p_id: + - 21 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - true + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2017 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 425.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 252.5 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 35.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 356.03 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml new file mode 100644 index 0000000000..543ca04854 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 82 + geburtsjahr: + - 1935 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 17 + familie__kind: + - false + p_id: + - 22 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - true + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2017 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 583.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 36 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + wohnen__heizkosten_m_hh: + - 40.5 + wohnen__wohnfläche_hh: + - 36.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 236.03 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml new file mode 100644 index 0000000000..2ecdead849 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml @@ -0,0 +1,128 @@ +--- +info: + note: '' + source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 9 + - 8 + familie__alleinerziehend: + - false + - false + alter: + - 72 + - 67 + geburtsjahr: + - 1945 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 6 + - 6 + familie__kind: + - false + - false + p_id: + - 8 + - 9 + familie__p_id_ehepartner: + - 9 + - 8 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2017 + - 2017 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 860.6 + - 73.4 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + - 48 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 460.0 + - 460.0 + wohnen__heizkosten_m_hh: + - 60.0 + - 60.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 322.0 + - 322.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml new file mode 100644 index 0000000000..c2e3fe60af --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml @@ -0,0 +1,92 @@ +--- +info: + note: >- + Added minor capital income of 2 euros (no deduction from claim since below allowance + of 26 euros per year) + source: >- + Adjusted test case based on + https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 12 + familie__kind: + - false + p_id: + - 16 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 2.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2018 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 440.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + sozialversicherung__rente__private_rente_betrag_m: + - 400.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 344.0 + wohnen__heizkosten_m_hh: + - 92.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml new file mode 100644 index 0000000000..fad2c63e9c --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml @@ -0,0 +1,88 @@ +--- +info: + note: Test with positive wealth above wealth allowance + source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 20 + familie__kind: + - false + p_id: + - 26 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 5600.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2018 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 440.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + sozialversicherung__rente__private_rente_betrag_m: + - 400.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 344.0 + wohnen__heizkosten_m_hh: + - 92.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml new file mode 100644 index 0000000000..5d0ccc036c --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml @@ -0,0 +1,88 @@ +--- +info: + note: Test with positive wealth below wealth allowance + source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 22 + familie__kind: + - false + p_id: + - 29 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 4900.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2018 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 440.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + sozialversicherung__rente__private_rente_betrag_m: + - 400.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 344.0 + wohnen__heizkosten_m_hh: + - 92.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml new file mode 100644 index 0000000000..6146ffe404 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 3 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2018 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 440.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 300 + sozialversicherung__rente__private_rente_betrag_m: + - 400.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 344.0 + wohnen__heizkosten_m_hh: + - 92.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml new file mode 100644 index 0000000000..d9d8b1f41f --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 80 + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 18 + familie__kind: + - false + p_id: + - 23 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - true + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2020 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 200.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 250.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 35.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 605.44 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml new file mode 100644 index 0000000000..80605e3e49 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml @@ -0,0 +1,128 @@ +--- +info: + note: 'Calculation error on the website: should be 210.13 instead of 209.13' + source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 25 + - 24 + familie__alleinerziehend: + - false + - false + alter: + - 67 + - 70 + geburtsjahr: + - 1953 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 19 + - 19 + familie__kind: + - false + - false + p_id: + - 24 + - 25 + familie__p_id_ehepartner: + - 25 + - 24 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - true + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2020 + - 2020 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 300.0 + - 700.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 144 + - 300 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 66.0 + - 66.0 + wohnen__wohnfläche_hh: + - 40.0 + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 210.13 + - 210.13 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml new file mode 100644 index 0000000000..f31f065d1e --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml @@ -0,0 +1,128 @@ +--- +info: + note: Beispielpersonen Max B. und Inge M. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - 1 + familie__alleinerziehend: + - false + - false + alter: + - 70 + - 67 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 1 + - 1 + familie__kind: + - false + - false + p_id: + - 1 + - 2 + familie__p_id_ehepartner: + - 2 + - 1 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2021 + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 350.0 + - 590.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 240 + - 240 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 66.0 + - 66.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 228.0 + - 228.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml new file mode 100644 index 0000000000..5caf38db2b --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml @@ -0,0 +1,90 @@ +--- +info: + note: >- + Adjusted test case by adding capital income of 50 euros (expected difference in + grundsicherung__im_alter__betrag_m_eg (50*12 - 26) / 12) = 47.83333333) + source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 14 + familie__kind: + - false + p_id: + - 19 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 50.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 430.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 350.0 + wohnen__heizkosten_m_hh: + - 35.0 + wohnen__wohnfläche_hh: + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 353.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml new file mode 100644 index 0000000000..61cf0cf698 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml @@ -0,0 +1,88 @@ +--- +info: + note: Beispielperson Gerda M. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 67 + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 15 + familie__kind: + - false + p_id: + - 20 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - true + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 325.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 335.0 + wohnen__heizkosten_m_hh: + - 35.0 + wohnen__wohnfläche_hh: + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 566.82 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml new file mode 100644 index 0000000000..4e1b515771 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml @@ -0,0 +1,88 @@ +--- +info: + note: Beispielperson Harald F. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 70 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 3 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 94.0 + sozialversicherung__rente__altersrente__betrag_m: + - 850.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 420 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 405.0 + wohnen__heizkosten_m_hh: + - 40.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 358.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml new file mode 100644 index 0000000000..38d543c9c6 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml @@ -0,0 +1,130 @@ +--- +info: + note: >- + Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge + M. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 28 + - 27 + familie__alleinerziehend: + - false + - false + alter: + - 70 + - 67 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 21 + - 21 + familie__kind: + - false + - false + p_id: + - 27 + - 28 + familie__p_id_ehepartner: + - 28 + - 27 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 10500.0 + - 10500.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2021 + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 350.0 + - 590.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 240 + - 240 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 66.0 + - 66.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml new file mode 100644 index 0000000000..94315ece0e --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml @@ -0,0 +1,130 @@ +--- +info: + note: >- + Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge + M. + source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 31 + - 30 + familie__alleinerziehend: + - false + - false + alter: + - 70 + - 67 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 23 + - 23 + familie__kind: + - false + - false + p_id: + - 30 + - 31 + familie__p_id_ehepartner: + - 31 + - 30 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 8250.0 + - 8250.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2021 + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 350.0 + - 590.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 240 + - 240 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 66.0 + - 66.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 228.0 + - 228.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml new file mode 100644 index 0000000000..ca74e6c7dd --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 5 + familie__kind: + - false + p_id: + - 7 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 430.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 350.0 + wohnen__heizkosten_m_hh: + - 35.0 + wohnen__wohnfläche_hh: + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 401.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml new file mode 100644 index 0000000000..d3ec531803 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 68 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 7 + familie__kind: + - false + p_id: + - 10 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 430.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 350.0 + wohnen__heizkosten_m_hh: + - 35.0 + wohnen__wohnfläche_hh: + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 401.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml new file mode 100644 index 0000000000..2efa577358 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml @@ -0,0 +1,130 @@ +--- +info: + note: >- + Test if households with non-retired adult do not get Grundsicherung im Alter (as + currently implemented those households get ALG 2) + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 13 + - 12 + familie__alleinerziehend: + - false + - false + alter: + - 70 + - 60 + geburtsjahr: + - 1951 + - 1961 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 9 + - 9 + familie__kind: + - false + - false + p_id: + - 12 + - 13 + familie__p_id_ehepartner: + - 13 + - 12 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2021 + - 2021 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 350.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + - false + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 240 + - 240 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + wohnen__heizkosten_m_hh: + - 66.0 + - 66.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml new file mode 100644 index 0000000000..4e79c03255 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml @@ -0,0 +1,90 @@ +--- +info: + note: >- + Capital income of 20 euros (monthly amount deducted from claim due to capital income + (20*12 - 26) / 12 = 17.83333333) + source: Self-created test case +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 73 + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 10 + familie__kind: + - false + p_id: + - 14 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 20.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 250.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 531.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml new file mode 100644 index 0000000000..1420e7fb13 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml @@ -0,0 +1,90 @@ +--- +info: + note: >- + Capital income of 50 euros (monthly amount deducted from claim due to capital income + (50*12 - 26) / 12 = 47.83333333) + source: Self-created test case +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 69 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 11 + familie__kind: + - false + p_id: + - 15 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 50.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 50.0 + sozialversicherung__rente__altersrente__betrag_m: + - 400.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 216 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + wohnen__heizkosten_m_hh: + - 70.0 + wohnen__wohnfläche_hh: + - 45.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 421.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml new file mode 100644 index 0000000000..176798f879 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml @@ -0,0 +1,128 @@ +--- +info: + note: Test with child and positive wealth above wealth allowance + source: https://www.smart-rechner.de/grundsicherung/rechner.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 33 + - 32 + familie__alleinerziehend: + - true + - false + alter: + - 50 + - 16 + geburtsjahr: + - 1972 + - 2006 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 24 + - 24 + familie__kind: + - false + - true + p_id: + - 32 + - 33 + familie__p_id_ehepartner: + - 33 + - 32 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - true + - false + vermögen_eg: + - 5600.0 + - 5600.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2022 + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 425.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + - false + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 252.5 + - 252.5 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 35.0 + - 35.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml new file mode 100644 index 0000000000..cd019fbc4b --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml @@ -0,0 +1,130 @@ +--- +info: + note: >- + Test with child and positive wealth below wealth allowance (website did not add + general amount for child) + source: https://www.smart-rechner.de/grundsicherung/rechner.php +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 50 + - 16 + geburtsjahr: + - 1972 + - 2006 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 25 + - 25 + familie__kind: + - false + - true + p_id: + - 34 + - 35 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 34 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - true + - false + vermögen_eg: + - 5400.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2022 + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - 34 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 425.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + - false + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + - 0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 252.5 + - 252.5 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 35.0 + - 35.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 852.71 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml new file mode 100644 index 0000000000..fd29acf06d --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml @@ -0,0 +1,128 @@ +--- +info: + note: '' + source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 6 + - 5 + familie__alleinerziehend: + - false + - false + alter: + - 76 + - 70 + geburtsjahr: + - 1946 + - 1952 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 4 + - 4 + familie__kind: + - false + - false + p_id: + - 5 + - 6 + familie__p_id_ehepartner: + - 6 + - 5 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + schwerbehindert_grad_g: + - false + - false + vermögen_eg: + - 0.0 + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + elterngeld__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2022 + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + - 0.0 + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 50.0 + - 50.0 + sozialversicherung__rente__altersrente__betrag_m: + - 360.0 + - 120.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 240 + - 120 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 430.0 + - 430.0 + wohnen__heizkosten_m_hh: + - 70.0 + - 70.0 + wohnen__wohnfläche_hh: + - 55.0 + - 55.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 928.0 + - 928.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml new file mode 100644 index 0000000000..d2fecce8c2 --- /dev/null +++ b/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml @@ -0,0 +1,88 @@ +--- +info: + note: '' + source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 77 + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 8 + familie__kind: + - false + p_id: + - 11 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + schwerbehindert_grad_g: + - false + vermögen_eg: + - 0.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: + - 0.0 + jahr: + - 2022 + kindergeld__betrag_m_eg: + - 0.0 + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: + - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + sozialversicherung__beiträge_versicherter_m: + - 50.0 + sozialversicherung__rente__altersrente__betrag_m: + - 250.0 + sozialversicherung__rente__bezieht_rente: + - true + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 120 + sozialversicherung__rente__private_rente_betrag_m: + - 400.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m_eg: + - 0.0 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 300.0 + wohnen__heizkosten_m_hh: + - 45.0 + wohnen__wohnfläche_hh: + - 40.0 +outputs: + grundsicherung__im_alter__betrag_m_eg: + - 384.0 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" new file mode 100644 index 0000000000..b20c32b32f --- /dev/null +++ "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" @@ -0,0 +1,78 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + hh_id: + - 4 + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + - true + p_id: + - 5 + - 6 + - 7 + - 8 + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 18000.0 + - 18000.0 + - 0.0 + - 0.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 20000.0 + - 20000.0 + - 0.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + einkommensteuer__gesamteinkommen_y: + - 150000.0 + - 150000.0 + - 10.0 + - 10.0 + einkommensteuer__relevantes_kindergeld_m: + - 194.0 + - 194.0 + - 0.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 142992.0 + - 142992.0 + - 10.0 + - 10.0 + jahr: + - 2010 + - 2010 + - 2010 + - 2010 +outputs: + einkommensteuer__betrag_y_sn: + - 20000.0 + - 20000.0 + - 0.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_y_sn: + - 150000.0 + - 150000.0 + - 10.0 + - 10.0 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" new file mode 100644 index 0000000000..fb22cf3fa7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" @@ -0,0 +1,36 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 3000.0 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 5000.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 5000.0 + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__gesamteinkommen_y: + - 5000.0 + einkommensteuer__relevantes_kindergeld_m: + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 + jahr: + - 2012 +outputs: + einkommensteuer__betrag_y_sn: + - 5000 + einkommensteuer__zu_versteuerndes_einkommen_y_sn: + - 5000 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" new file mode 100644 index 0000000000..bb66ef56ca --- /dev/null +++ "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + hh_id: + - 1 + - 1 + - 1 + familie__kind: + - false + - false + - true + p_id: + - 1 + - 2 + - 3 + familie__p_id_ehepartner: + - 2 + - 1 + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 7000.0 + - 7000.0 + - 0.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 10000.0 + - 10000.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__gesamteinkommen_y: + - 10000.0 + - 10000.0 + - 0.0 + einkommensteuer__relevantes_kindergeld_m: + - 97.0 + - 97.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 92752.0 + - 92752.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 +outputs: + einkommensteuer__betrag_y_sn: + - 9328 + - 9328 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_y_sn: + - 92752 + - 92752 + - 0 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" new file mode 100644 index 0000000000..640f47979f --- /dev/null +++ "b/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + hh_id: + - 5 + - 5 + - 5 + familie__kind: + - false + - false + - true + p_id: + - 9 + - 10 + - 11 + familie__p_id_ehepartner: + - 10 + - 9 + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 10000.0 + - 10000.0 + - 0.0 + einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: + - 12000.0 + - 12000.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__gesamteinkommen_y: + - 120000.0 + - 120000.0 + - 0.0 + einkommensteuer__relevantes_kindergeld_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 109740.0 + - 109740.0 + - 0.0 + jahr: + - 2019 + - 2019 + - 2019 +outputs: + einkommensteuer__betrag_y_sn: + - 19344.0 + - 19344.0 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_y_sn: + - 109740.0 + - 109740.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml index 02f53c5a98..7fa1c6935e 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml @@ -3,28 +3,8 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - p_id: - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - p_id_kindergeld_empf: - - -1 - - -1 - - 12 - - 12 - - 12 - - 12 alter: - 45 - 40 @@ -32,13 +12,6 @@ inputs: - 18 - 17 - 15 - kind: - - false - - false - - false - - false - - true - - true arbeitsstunden_w: - 40.0 - 0.0 @@ -46,54 +19,67 @@ inputs: - 0.0 - 2.0 - 0.0 - in_ausbildung: + hh_id: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + familie__kind: + - false + - false - false - false - true - true - - true - - true - bruttolohn_m: + p_id: + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 - 700.0 - 200.0 - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 12 + - 12 + - 12 + - 12 outputs: - kindergeld_m: + kindergeld__betrag_m: - 462 - 0 - 0 - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 462 - 462 - 462 - 462 - 462 - 462 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml index 1bf901d081..2020e3c10b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml @@ -3,32 +3,28 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 4 - p_id: - - 19 - p_id_kindergeld_empf: - - -1 alter: - 21 - kind: - - false arbeitsstunden_w: - 10.0 - in_ausbildung: - - true - bruttolohn_m: + hh_id: + - 4 + familie__kind: + - false + p_id: + - 19 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 700.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - true + kindergeld__p_id_empfänger: + - -1 outputs: - kindergeld_m: + kindergeld__betrag_m: - 0 - kinderbonus_m: - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 0 - kinderbonus_m_hh: - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml index 100fd7e7fe..edc4bfe981 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml @@ -3,32 +3,28 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 6 - p_id: - - 21 - p_id_kindergeld_empf: - - -1 alter: - 21 - kind: - - false arbeitsstunden_w: - 0.0 - in_ausbildung: + hh_id: + - 6 + familie__kind: - false - bruttolohn_m: + p_id: + - 21 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 outputs: - kindergeld_m: + kindergeld__betrag_m: - 0 - kinderbonus_m: - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 0 - kinderbonus_m_hh: - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml index a2b7c5960c..a41028e8d9 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml @@ -3,31 +3,8 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - p_id: - - 22 - - 23 - - 24 - - 25 - - 26 - - 27 - - 28 - p_id_kindergeld_empf: - - -1 - - 22 - - 22 - - 22 - - 22 - - 22 - - 22 alter: - 50 - 1 @@ -36,14 +13,6 @@ inputs: - 4 - 5 - 6 - kind: - - false - - true - - true - - true - - true - - true - - true arbeitsstunden_w: - 0.0 - 0.0 @@ -52,7 +21,15 @@ inputs: - 0.0 - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + familie__kind: - false - true - true @@ -60,7 +37,15 @@ inputs: - true - true - true - bruttolohn_m: + p_id: + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 28 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 - 0.0 @@ -68,7 +53,7 @@ inputs: - 0.0 - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - 0.0 - 0.0 @@ -76,9 +61,24 @@ inputs: - 0.0 - 0.0 - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - true + - true + - true + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 22 + - 22 + - 22 + - 22 + - 22 + - 22 outputs: - kindergeld_m: + kindergeld__betrag_m: - 1203 - 0 - 0 @@ -86,15 +86,7 @@ outputs: - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 1203 - 1203 - 1203 @@ -102,11 +94,3 @@ outputs: - 1203 - 1203 - 1203 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml index db1d8e11b6..5ec703f0e3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml @@ -3,84 +3,72 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 8 - - 8 - - 8 - - 8 - - 8 - p_id: - - 29 - - 30 - - 31 - - 32 - - 33 - p_id_kindergeld_empf: - - -1 - - -1 - - 29 - - 29 - - 29 alter: - 50 - 50 - 12 - 14 - 15 - kind: - - false - - false - - true - - true - - true arbeitsstunden_w: - 40.0 - 40.0 - 0.0 - 25.0 - 0.0 - in_ausbildung: - - false + hh_id: + - 8 + - 8 + - 8 + - 8 + - 8 + familie__kind: - false - false - true - true - bruttolohn_m: + - true + p_id: + - 29 + - 30 + - 31 + - 32 + - 33 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 - 0.0 - 800.0 - 300.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 200000.0 - 200000.0 - 200000.0 - 200000.0 - 200000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 29 + - 29 + - 29 outputs: - kindergeld_m: + kindergeld__betrag_m: - 558 - 0 - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 558 - 558 - 558 - 558 - 558 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml index 6535d542e0..2ddd21c703 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml @@ -3,84 +3,72 @@ info: note: check age cut-offs at 18 and 25. source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id: - - 1 - - 2 - - 3 - - 4 - - 5 - p_id_kindergeld_empf: - - -1 - - -1 - - 1 - - 1 - - 1 alter: - 45 - 40 - 25 - 18 - 18 - kind: - - false - - false - - false - - false - - false arbeitsstunden_w: - 40.0 - 0.0 - 10.0 - 10.0 - 30.0 - in_ausbildung: + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + familie__kind: - false - false - - true - - true - - true - bruttolohn_m: + - false + - false + - false + p_id: + - 1 + - 2 + - 3 + - 4 + - 5 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 - 700.0 - 200.0 - 200.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 1 + - 1 + - 1 outputs: - kindergeld_m: + kindergeld__betrag_m: - 194 - 0 - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 194 - 194 - 194 - 194 - 194 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml index 5cd38cb745..4be177fb07 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml @@ -3,28 +3,8 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - p_id: - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - p_id_kindergeld_empf: - - -1 - - -1 - - 6 - - 6 - - 6 - - 6 alter: - 45 - 40 @@ -32,13 +12,6 @@ inputs: - 18 - 17 - 15 - kind: - - false - - false - - false - - true - - true - - true arbeitsstunden_w: - 40.0 - 0.0 @@ -46,54 +19,67 @@ inputs: - 0.0 - 2.0 - 0.0 - in_ausbildung: + hh_id: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + familie__kind: + - false - false - false - true - true - true - - true - bruttolohn_m: + p_id: + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 - 700.0 - 200.0 - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 6 + - 6 + - 6 + - 6 outputs: - kindergeld_m: + kindergeld__betrag_m: - 588 - 0 - 0 - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 588 - 588 - 588 - 588 - 588 - 588 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml index f664a5b542..fdf2b1274c 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml @@ -3,32 +3,28 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 3 - p_id: - - 18 - p_id_kindergeld_empf: - - 18 alter: - 21 - kind: - - false arbeitsstunden_w: - 10.0 - in_ausbildung: - - true - bruttolohn_m: + hh_id: + - 3 + familie__kind: + - false + p_id: + - 18 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 700.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - true + kindergeld__p_id_empfänger: + - 18 outputs: - kindergeld_m: + kindergeld__betrag_m: - 194 - kinderbonus_m: - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 194 - kinderbonus_m_hh: - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml index 6db33dc219..3f1eff3461 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml @@ -3,32 +3,28 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 5 - p_id: - - 20 - p_id_kindergeld_empf: - - 20 alter: - 21 - kind: - - false arbeitsstunden_w: - 0.0 - in_ausbildung: + hh_id: + - 5 + familie__kind: - false - bruttolohn_m: + p_id: + - 20 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - 20 outputs: - kindergeld_m: + kindergeld__betrag_m: - 0 - kinderbonus_m: - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 0 - kinderbonus_m_hh: - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml index 3bd254f345..fb7b4e027e 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml @@ -3,45 +3,45 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 10 - - 10 - p_id: - - 34 - - 35 - p_id_kindergeld_empf: - - -1 - - 34 alter: - 35 - 12 - kind: - - false - - true arbeitsstunden_w: - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 10 + - 10 + familie__kind: - false - true - bruttolohn_m: + p_id: + - 34 + - 35 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 34 outputs: - kindergeld_m: - - 204 + kinderbonus__betrag_m: + - 25.0 - 0 - kinderbonus_m: + kinderbonus__betrag_m_hh: + - 25.0 - 25.0 + kindergeld__betrag_m: + - 204 - 0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 204 - 204 - kinderbonus_m_hh: - - 25.0 - - 25.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml index 5f8c26d70a..fc7fb63fa6 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml @@ -3,72 +3,72 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - p_id_kindergeld_empf: - - -1 - - -1 - - 0 - - 0 - - 0 alter: - 35 - 35 - 12 - 10 - 8 - kind: - - false - - false - - true - - true - - true arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + familie__kind: - false - false - true - true - true - bruttolohn_m: + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 - 0.0 - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y: + einkommensteuer__gesamteinkommen_y: - 200000.0 - 200000.0 - 0.0 - 0.0 - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 0 + - 0 + - 0 outputs: - kindergeld_m: - - 663.0 + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 - 0.0 + - 221.0 + - 221.0 + - 221.0 + kindergeld__betrag_m: + - 663.0 - 0.0 - 0.0 - kindergeld_zur_bedarfsdeckung_m: - 0.0 - 0.0 - - 221.0 - - 221.0 - - 221.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml index 2d4099a7fc..494746681f 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml @@ -3,58 +3,58 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 11 - - 11 - - 11 - p_id: - - 36 - - 37 - - 38 - p_id_kindergeld_empf: - - -1 - - -1 - - 36 alter: - 35 - 35 - 12 - kind: - - false - - false - - true arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 11 + - 11 + - 11 + familie__kind: - false - false - true - bruttolohn_m: + p_id: + - 36 + - 37 + - 38 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 200000.0 - 200000.0 - 200000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 36 outputs: - kindergeld_m: - - 219 + kinderbonus__betrag_m: + - 12.5 - 0 - 0 - kinderbonus_m: + kinderbonus__betrag_m_hh: + - 12.5 + - 12.5 - 12.5 + kindergeld__betrag_m: + - 219 - 0 - 0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 219 - 219 - 219 - kinderbonus_m_hh: - - 12.5 - - 12.5 - - 12.5 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml index c2a15199b3..332839f2da 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml @@ -3,32 +3,32 @@ info: note: '' source: '' inputs: + assumed: {} provided: - hh_id: - - 12 - p_id: - - 39 - p_id_kindergeld_empf: - - -1 alter: - 35 - kind: - - false arbeitsstunden_w: - 0.0 - in_ausbildung: + hh_id: + - 12 + familie__kind: - false - bruttolohn_m: + p_id: + - 39 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 0.0 - assumed: {} + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 outputs: - kindergeld_m: - - 0 - kinderbonus_m: + kinderbonus__betrag_m: - 0.0 - kindergeld_m_hh: - - 0 - kinderbonus_m_hh: + kinderbonus__betrag_m_hh: - 0.0 + kindergeld__betrag_m: + - 0 + kindergeld__betrag_m_hh: + - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml index 7a0e0332f4..f0473a2294 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml @@ -3,84 +3,72 @@ info: note: https://www.kindergeld.org/kindergeldrechner/ source: '' inputs: + assumed: {} provided: - hh_id: - - 13 - - 13 - - 13 - - 13 - - 13 - p_id: - - 40 - - 41 - - 43 - - 44 - - 45 - p_id_kindergeld_empf: - - -1 - - -1 - - 40 - - 40 - - 40 alter: - 45 - 40 - 18 - 17 - 15 - kind: - - false - - false - - true - - true - - true arbeitsstunden_w: - 40.0 - 0.0 - 0.0 - 2.0 - 0.0 - in_ausbildung: + hh_id: + - 13 + - 13 + - 13 + - 13 + - 13 + familie__kind: - false - false - true - true - true - bruttolohn_m: + p_id: + - 40 + - 41 + - 43 + - 44 + - 45 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 - 200.0 - 0.0 - 0.0 - _zu_verst_eink_ohne_kinderfreib_y_sn: + einkommensteuer__gesamteinkommen_y: - 3000.0 - 3000.0 - 3000.0 - 3000.0 - 3000.0 - assumed: {} + kindergeld__in_ausbildung: + - false + - false + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 40 + - 40 + - 40 outputs: - kindergeld_m: + kindergeld__betrag_m: - 750 - 0 - 0 - 0 - 0 - kinderbonus_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: + kindergeld__betrag_m_hh: - 750 - 750 - 750 - 750 - 750 - kinderbonus_m_hh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml index 8e4592f6e7..f3977fc6e3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml @@ -3,33 +3,33 @@ info: note: https://www.kindergeld.org/kindergeldrechner/ source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_kindergeld_empf: - - -1 - - 0 alter: - 45 - 15 - kind: - - false - - true arbeitsstunden_w: - 40.0 - 0.0 - in_ausbildung: + hh_id: + - 0 + - 0 + familie__kind: - false - true - assumed: {} + p_id: + - 0 + - 1 + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 0 outputs: - kindergeld_m: - - 250.0 - - 0.0 - kindergeld_zur_bedarfsdeckung_m: + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 - 250.0 + kindergeld__betrag_m: + - 250.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml index 8e4592f6e7..f3977fc6e3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml @@ -3,33 +3,33 @@ info: note: https://www.kindergeld.org/kindergeldrechner/ source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_kindergeld_empf: - - -1 - - 0 alter: - 45 - 15 - kind: - - false - - true arbeitsstunden_w: - 40.0 - 0.0 - in_ausbildung: + hh_id: + - 0 + - 0 + familie__kind: - false - true - assumed: {} + p_id: + - 0 + - 1 + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 0 outputs: - kindergeld_m: - - 250.0 - - 0.0 - kindergeld_zur_bedarfsdeckung_m: + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 - 250.0 + kindergeld__betrag_m: + - 250.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml index c4a96718e4..5085da9d34 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml @@ -3,42 +3,42 @@ info: note: https://www.kindergeld.org/kindergeldrechner/ source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 alter: - 45 - 15 - 10 - kind: - - false - - true - - true arbeitsstunden_w: - 40.0 - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 0 + - 0 + - 0 + familie__kind: - false - true - true - assumed: {} + p_id: + - 0 + - 1 + - 2 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 outputs: - kindergeld_m: - - 500.0 - - 0.0 - - 0.0 - kindergeld_zur_bedarfsdeckung_m: + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 - 250.0 - 250.0 + kindergeld__betrag_m: + - 500.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml index c4a96718e4..5085da9d34 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml @@ -3,42 +3,42 @@ info: note: https://www.kindergeld.org/kindergeldrechner/ source: '' inputs: + assumed: {} provided: - hh_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_kindergeld_empf: - - -1 - - 0 - - 0 alter: - 45 - 15 - 10 - kind: - - false - - true - - true arbeitsstunden_w: - 40.0 - 0.0 - 0.0 - in_ausbildung: + hh_id: + - 0 + - 0 + - 0 + familie__kind: - false - true - true - assumed: {} + p_id: + - 0 + - 1 + - 2 + kindergeld__in_ausbildung: + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - 0 + - 0 outputs: - kindergeld_m: - - 500.0 - - 0.0 - - 0.0 - kindergeld_zur_bedarfsdeckung_m: + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 - 250.0 - 250.0 + kindergeld__betrag_m: + - 500.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2013/hh_id_2.yaml deleted file mode 100644 index 157c574717..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2013/hh_id_2.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - - 5 - hh_id: - - 2 - - 2 - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - false - alter: - - 40 - - 40 - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - alleinerz: - - false - - false - kindergeld_anspruch: - - false - - false - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 800.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 512.0 - - 0.0 - kindergeld_m_hh: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2013 - - 2013 - geburtsjahr: - - 1973 - - 1973 - vermögen_bedürft: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - - 0.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_1.yaml deleted file mode 100644 index ce8d7c9db4..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_1.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 1 - - 2 - - 3 - hh_id: - - 1 - - 1 - - 1 - p_id_elternteil_1: - - -1 - - -1 - - 1 - p_id_elternteil_2: - - -1 - - -1 - - 2 - p_id_einstandspartner: - - 2 - - 1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 1 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 30 - - 30 - - 2 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 600.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 322.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 190.0 - - 190.0 - - 190.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - geburtsjahr: - - 1986 - - 1986 - - 2014 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 0.0 - - 0.0 - - 0.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_11.yaml deleted file mode 100644 index 27d716a149..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_11.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -info: - note: Wealth below wealth allowance leading to no deduction in Kinderzuschlag - source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf -inputs: - provided: - p_id: - - 30 - - 31 - - 32 - hh_id: - - 11 - - 11 - - 11 - p_id_elternteil_1: - - -1 - - -1 - - 30 - p_id_elternteil_2: - - -1 - - -1 - - 31 - p_id_einstandspartner: - - 31 - - 30 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 30 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 40 - - 11 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 644.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 190.0 - - 190.0 - - 190.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - geburtsjahr: - - 1976 - - 1976 - - 2005 - vermögen_bedürft: - - 4000.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_12.yaml deleted file mode 100644 index 8be63c6eba..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_12.yaml +++ /dev/null @@ -1,126 +0,0 @@ ---- -info: - note: >- - Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first - month - source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf -inputs: - provided: - p_id: - - 33 - - 34 - - 35 - hh_id: - - 12 - - 12 - - 12 - p_id_elternteil_1: - - -1 - - -1 - - 33 - p_id_elternteil_2: - - -1 - - -1 - - 34 - p_id_einstandspartner: - - 34 - - 33 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 33 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 40 - - 11 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 644.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 190.0 - - 190.0 - - 190.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - geburtsjahr: - - 1976 - - 1976 - - 2005 - vermögen_bedürft: - - 17400.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 90.0 - - 90.0 - - 90.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_13.yaml deleted file mode 100644 index c03874010c..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_13.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -info: - note: Wealth significantly above wealth allowance leading to no claim - source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf -inputs: - provided: - p_id: - - 36 - - 37 - - 38 - hh_id: - - 13 - - 13 - - 13 - p_id_elternteil_1: - - -1 - - -1 - - 36 - p_id_elternteil_2: - - -1 - - -1 - - 37 - p_id_einstandspartner: - - 37 - - 36 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 36 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 40 - - 40 - - 11 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 644.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 190.0 - - 190.0 - - 190.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - geburtsjahr: - - 1976 - - 1976 - - 2005 - vermögen_bedürft: - - 25000.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_7.yaml deleted file mode 100644 index 7b2b17d851..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2016/hh_id_7.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 18 - - 19 - - 20 - hh_id: - - 7 - - 7 - - 7 - p_id_elternteil_1: - - -1 - - -1 - - 18 - p_id_elternteil_2: - - -1 - - -1 - - 19 - p_id_einstandspartner: - - 19 - - 18 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 18 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 30 - - 30 - - 2 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 644.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 190.0 - - 190.0 - - 190.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2016 - - 2016 - - 2016 - geburtsjahr: - - 1986 - - 1986 - - 2014 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 140.0 - - 140.0 - - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2017/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2017/hh_id_9.yaml deleted file mode 100644 index 1a7b7e5209..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2017/hh_id_9.yaml +++ /dev/null @@ -1,153 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 23 - - 24 - - 25 - - 26 - hh_id: - - 9 - - 9 - - 9 - - 9 - p_id_elternteil_1: - - -1 - - -1 - - 23 - - 23 - p_id_elternteil_2: - - -1 - - -1 - - 24 - - 24 - p_id_einstandspartner: - - 24 - - 23 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 23 - - 23 - eigenbedarf_gedeckt: - - false - - false - - false - - false - kind: - - false - - false - - true - - true - alter: - - 40 - - 38 - - 15 - - 13 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 1300.0 - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - true - - true - bruttokaltmiete_m_hh: - - 800.0 - - 800.0 - - 800.0 - - 800.0 - heizkosten_m_hh: - - 90.0 - - 90.0 - - 90.0 - - 90.0 - alleinerz: - - false - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1300.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 900.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 384.0 - - 384.0 - - 384.0 - - 384.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2017 - - 2017 - - 2017 - - 2017 - geburtsjahr: - - 1977 - - 1979 - - 2002 - - 2004 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 340.0 - - 340.0 - - 340.0 - - 340.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 340.0 - - 340.0 - - 340.0 - - 340.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2019/hh_id_6.yaml deleted file mode 100644 index 5cdcc65dba..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2019/hh_id_6.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 16 - - 17 - hh_id: - - 6 - - 6 - p_id_elternteil_1: - - -1 - - 16 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 16 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 28 - - 1 - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1000.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 719.0 - - 0.0 - kindergeld_m_hh: - - 194.0 - - 194.0 - kind_unterh_erhalt_m: - - 0.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - geburtsjahr: - - 1991 - - 2018 - vermögen_bedürft: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 10.0 - - 10.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 10.0 - - 10.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2020/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2020/hh_id_8.yaml deleted file mode 100644 index 283cacedc4..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2020/hh_id_8.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 21 - - 22 - hh_id: - - 8 - - 8 - p_id_elternteil_1: - - -1 - - 21 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 21 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 38 - - 15 - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1000.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 719.0 - - 0.0 - kindergeld_m_hh: - - 204.0 - - 204.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2020 - - 2020 - geburtsjahr: - - 1982 - - 2005 - vermögen_bedürft: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 185 - - 185 - _kinderzuschl_nach_vermög_check_m_bg: - - 185 - - 185 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2021/hh_id_10.yaml deleted file mode 100644 index eeb79831b4..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2021/hh_id_10.yaml +++ /dev/null @@ -1,124 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 27 - - 28 - - 29 - hh_id: - - 10 - - 10 - - 10 - p_id_elternteil_1: - - -1 - - -1 - - 27 - p_id_elternteil_2: - - -1 - - -1 - - 28 - p_id_einstandspartner: - - 28 - - 27 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 27 - eigenbedarf_gedeckt: - - false - - false - - false - kind: - - false - - false - - true - alter: - - 35 - - 33 - - 12 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 1600.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - true - bruttokaltmiete_m_hh: - - 750.0 - - 750.0 - - 750.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - alleinerz: - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 1600.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 219.0 - - 219.0 - - 219.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2021 - - 2021 - - 2021 - geburtsjahr: - - 1986 - - 1988 - - 2009 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 205.0 - - 205.0 - - 205.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 205.0 - - 205.0 - - 205.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2023/hh_id_14.yaml deleted file mode 100644 index 1bb65b9a5e..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2023/hh_id_14.yaml +++ /dev/null @@ -1,95 +0,0 @@ ---- -info: - note: '' - source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart -inputs: - provided: - p_id: - - 39 - - 40 - hh_id: - - 14 - - 14 - p_id_elternteil_1: - - -1 - - 39 - p_id_elternteil_2: - - -1 - - 39 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 39 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 43 - - 11 - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 1500.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1660.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1160.0 - - 0.0 - kindergeld_m_hh: - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2023 - - 2023 - geburtsjahr: - - 1980 - - 2012 - vermögen_bedürft: - - 5000.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 178.0 - - 178.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 178.0 - - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2023/test_child_income.yaml deleted file mode 100644 index 8a2846242e..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_child_income.yaml +++ /dev/null @@ -1,98 +0,0 @@ ---- -info: - note: >- - Caution: Regression test for child income. - Same as hh_id_14.yaml but with made up child income, so the results are not based on - any source. - source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart -inputs: - provided: - p_id: - - 45 - - 46 - hh_id: - - 17 - - 17 - p_id_elternteil_1: - - -1 - - 45 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 45 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 38 - - 15 - arbeitsstunden_w: - - 40.0 - - 2.0 - bruttolohn_m: - - 2000.0 - - 150.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1660.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1160.0 - - 0.0 - kindergeld_m_hh: - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2023 - - 2023 - geburtsjahr: - - 1980 - - 2012 - vermögen_bedürft: - - 5000.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 160.0 - - 160.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 160.0 - - 160.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2023/test_family_high_wealth.yaml deleted file mode 100644 index ba9c3f5512..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_family_high_wealth.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -info: - note: >- - Same as hh_id_14.yaml but higher made up vermögen_bedürft_bg - to test wealth exemptions (above _arbeitsl_geld_2_vermög_freib_karenzz_bg). - source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart -inputs: - provided: - p_id: - - 43 - - 44 - hh_id: - - 16 - - 16 - p_id_elternteil_1: - - -1 - - 43 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 43 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 43 - - 11 - arbeitsstunden_w: - - 20.0 - - 0.0 - bruttolohn_m: - - 1500.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - true - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1660.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1160.0 - - 0.0 - kindergeld_m_hh: - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2023 - - 2023 - geburtsjahr: - - 1980 - - 2012 - vermögen_bedürft: - - 60000.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 178.0 - - 178.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2023/test_higher_wealth_exemptions.yaml deleted file mode 100644 index a974d6a3d6..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2023/test_higher_wealth_exemptions.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -info: - note: >- - Same as hh_id_14.yaml but higher made up vermögen_bedürft_bg - to test wealth exemptions (still below _arbeitsl_geld_2_vermög_freib_karenzz_bg). - source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart -inputs: - provided: - p_id: - - 41 - - 42 - hh_id: - - 15 - - 15 - p_id_elternteil_1: - - -1 - - 41 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 41 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 43 - - 11 - arbeitsstunden_w: - - 20.0 - - 0.0 - bruttolohn_m: - - 1500.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - in_ausbildung: - - false - - true - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1660.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1160.0 - - 0.0 - kindergeld_m_hh: - - 250.0 - - 250.0 - kind_unterh_erhalt_m: - - 0.0 - - 160.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2023 - - 2023 - geburtsjahr: - - 1980 - - 2012 - vermögen_bedürft: - - 30000.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 178.0 - - 178.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 178.0 - - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml deleted file mode 100644 index 6bec97f332..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml +++ /dev/null @@ -1,128 +0,0 @@ ---- -info: - note: '' - source: Made up. -inputs: - provided: - p_id: - - 49 - - 50 - - 51 - hh_id: - - 18 - - 18 - - 18 - p_id_elternteil_1: - - -1 - - 49 - - -1 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 49 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - alter: - - 40 - - 10 - - 40 - kind: - - false - - true - - false - in_ausbildung: - - false - - false - - false - rentner: - - false - - false - - false - alleinerz: - - true - - false - - false - arbeitsstunden_w: - - 40.0 - - 0.0 - - 40.0 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 1000.0 - - 0.0 - - 1000.0 - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_bruttoeink_m: - - 1000.0 - - 0.0 - - 1000.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 1000.0 - - 0.0 - - 1000.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - ges_rente_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_2_vor_vorrang_m_bg: - - 0.0 - - 0.0 - - 0.0 - wohngeld_kinderzuschl_vorrang_bg: - - true - - true - - true - assumed: {} -outputs: - _kinderzuschl_nach_vermög_check_m_bg: - - 292.0 - - 292.0 - - 0.0 - bruttokaltmiete_m_bg: - - 466.67 - - 466.67 - - 233.33 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/2024/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschl/2024/test_max_transfer.yaml deleted file mode 100644 index ad695499b2..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/2024/test_max_transfer.yaml +++ /dev/null @@ -1,98 +0,0 @@ ---- -info: - note: '' - source: Made up. -inputs: - provided: - p_id: - - 47 - - 48 - hh_id: - - 18 - - 18 - p_id_elternteil_1: - - -1 - - 47 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 47 - eigenbedarf_gedeckt: - - false - - false - alter: - - 40 - - 10 - kind: - - false - - true - in_ausbildung: - - false - - false - rentner: - - false - - false - alleinerz: - - true - - false - arbeitsstunden_w: - - 40.0 - - 0.0 - vermögen_bedürft: - - 0.0 - - 0.0 - bruttolohn_m: - - 1000.0 - - 0.0 - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - heizkosten_m_hh: - - 100.0 - - 100.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_eink_anr_frei_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_bruttoeink_m: - - 1000.0 - - 0.0 - arbeitsl_geld_2_nettoeink_nach_abzug_freibetrag_m: - - 1000.0 - - 0.0 - ges_rente_m: - - 0.0 - - 0.0 - arbeitsl_geld_2_vor_vorrang_m_bg: - - 0.0 - - 0.0 - wohngeld_kinderzuschl_vorrang_bg: - - true - - true - wohnfläche_hh: - - 70.0 - - 70.0 - bewohnt_eigentum_hh: - - false - - false - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_nach_vermög_check_m_bg: - - 292.0 - - 292.0 - bruttokaltmiete_m_bg: - - 700.0 - - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschl/skip_2006/hh_id_4.yaml deleted file mode 100644 index e601da093e..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/skip_2006/hh_id_4.yaml +++ /dev/null @@ -1,173 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 8 - - 9 - - 10 - - 11 - - 12 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 - p_id_elternteil_1: - - -1 - - -1 - - 8 - - 8 - - 8 - p_id_elternteil_2: - - -1 - - -1 - - 9 - - 9 - - 9 - p_id_einstandspartner: - - 9 - - 8 - p_id_kindergeld_empf: - - -1 - - -1 - - 8 - - 8 - - 8 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - alter: - - 33 - - 30 - - 12 - - 10 - - 2 - arbeitsstunden_w: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - - false - bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - alleinerz: - - false - - false - - false - - false - - false - kindergeld_anspruch: - - false - - false - - true - - true - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_bruttoeink_eltern_m: - - 2000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 1500.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld_m_hh: - - 462.0 - - 462.0 - - 462.0 - - 462.0 - - 462.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - vermögen_bedürft: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 216.65 - - 216.65 - - 216.65 - - 216.65 - - 216.65 - _kinderzuschl_nach_vermög_check_m_bg: - - 216.65 - - 216.65 - - 216.65 - - 216.65 - - 216.65 diff --git a/src/_gettsim_tests/test_data/kinderzuschl/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschl/skip_2009/hh_id_3.yaml deleted file mode 100644 index a8bc350a8e..0000000000 --- a/src/_gettsim_tests/test_data/kinderzuschl/skip_2009/hh_id_3.yaml +++ /dev/null @@ -1,92 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 6 - - 7 - hh_id: - - 3 - - 3 - p_id_elternteil_1: - - -1 - - 6 - p_id_elternteil_2: - - -1 - - -1 - p_id_einstandspartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 6 - eigenbedarf_gedeckt: - - false - - false - kind: - - false - - true - alter: - - 28 - - 1 - arbeitsstunden_w: - - 0.0 - - 0.0 - bruttolohn_m: - - 2000.0 - - 0.0 - in_ausbildung: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 80.0 - - 80.0 - alleinerz: - - true - - false - kindergeld_anspruch: - - false - - true - _arbeitsl_geld_2_alleinerz_mehrbedarf_m_bg: - - 0.36 - - 0.36 - kinderzuschl_bruttoeink_eltern_m: - - 1000.0 - - 0.0 - kinderzuschl_eink_eltern_m: - - 719.0 - - 0.0 - kindergeld_m_hh: - - 164.0 - - 164.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - unterhaltsvors_m: - - 0.0 - - 0.0 - jahr: - - 2009 - - 2009 - geburtsjahr: - - 1981 - - 2008 - vermögen_bedürft: - - 0.0 - - 0.0 - bürgerg_bezug_vorj: - - false - - false - assumed: {} -outputs: - _kinderzuschl_vor_vermög_check_m_bg: - - 140.0 - - 140.0 - _kinderzuschl_nach_vermög_check_m_bg: - - 140.0 - - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml new file mode 100644 index 0000000000..9ea5911324 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml @@ -0,0 +1,95 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 40 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 + familie__kind: + - false + - false + p_id: + - 4 + - 5 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2013 + - 2013 + kindergeld__betrag_m_hh: + - 0.0 + - 0.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 800.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 512.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml new file mode 100644 index 0000000000..9a46ae9552 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml @@ -0,0 +1,124 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - 1 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 30 + - 2 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 1 + - 1 + - 1 + familie__kind: + - false + - false + - true + p_id: + - 1 + - 2 + - 3 + familie__p_id_elternteil_1: + - -1 + - -1 + - 1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 2 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 1 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 600.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 322.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml new file mode 100644 index 0000000000..17c05246e5 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml @@ -0,0 +1,124 @@ +--- +info: + note: Wealth below wealth allowance leading to no deduction in Kinderzuschlag + source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 31 + - 30 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 40 + - 11 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 11 + - 11 + - 11 + familie__kind: + - false + - false + - true + p_id: + - 30 + - 31 + - 32 + familie__p_id_elternteil_1: + - -1 + - -1 + - 30 + familie__p_id_elternteil_2: + - -1 + - -1 + - 31 + vermögen: + - 4000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 30 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 140.0 + - 140.0 + - 140.0 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml new file mode 100644 index 0000000000..0ad24affc7 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml @@ -0,0 +1,126 @@ +--- +info: + note: >- + Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first + month + source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 34 + - 33 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 40 + - 11 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 12 + - 12 + - 12 + familie__kind: + - false + - false + - true + p_id: + - 33 + - 34 + - 35 + familie__p_id_elternteil_1: + - -1 + - -1 + - 33 + familie__p_id_elternteil_2: + - -1 + - -1 + - 34 + vermögen: + - 17400.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 33 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 90.0 + - 90.0 + - 90.0 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml new file mode 100644 index 0000000000..fbdb2534e8 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml @@ -0,0 +1,124 @@ +--- +info: + note: Wealth significantly above wealth allowance leading to no claim + source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 37 + - 36 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 40 + - 40 + - 11 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 13 + - 13 + - 13 + familie__kind: + - false + - false + - true + p_id: + - 36 + - 37 + - 38 + familie__p_id_elternteil_1: + - -1 + - -1 + - 36 + familie__p_id_elternteil_2: + - -1 + - -1 + - 37 + vermögen: + - 25000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 36 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml new file mode 100644 index 0000000000..761368040d --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml @@ -0,0 +1,124 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 19 + - 18 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 30 + - 30 + - 2 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 7 + - 7 + - 7 + familie__kind: + - false + - false + - true + p_id: + - 18 + - 19 + - 20 + familie__p_id_elternteil_1: + - -1 + - -1 + - 18 + familie__p_id_elternteil_2: + - -1 + - -1 + - 19 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 18 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 140.0 + - 140.0 + - 140.0 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml new file mode 100644 index 0000000000..6e7954d342 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml @@ -0,0 +1,153 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 24 + - 23 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 40 + - 38 + - 15 + - 13 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1977 + - 1979 + - 2002 + - 2004 + hh_id: + - 9 + - 9 + - 9 + - 9 + familie__kind: + - false + - false + - true + - true + p_id: + - 23 + - 24 + - 25 + - 26 + familie__p_id_elternteil_1: + - -1 + - -1 + - 23 + - 23 + familie__p_id_elternteil_2: + - -1 + - -1 + - 24 + - 24 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1300.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2017 + - 2017 + - 2017 + - 2017 + kindergeld__betrag_m_hh: + - 384.0 + - 384.0 + - 384.0 + - 384.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + kindergeld__in_ausbildung: + - false + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 23 + - 23 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1300.0 + - 0.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 900.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 800.0 + - 800.0 + - 800.0 + - 800.0 + wohnen__heizkosten_m_hh: + - 90.0 + - 90.0 + - 90.0 + - 90.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 340.0 + - 340.0 + - 340.0 + - 340.0 + kinderzuschlag__basisbetrag_m_bg: + - 340.0 + - 340.0 + - 340.0 + - 340.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml new file mode 100644 index 0000000000..b82721bda1 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml @@ -0,0 +1,95 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 28 + - 1 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1991 + - 2018 + hh_id: + - 6 + - 6 + familie__kind: + - false + - true + p_id: + - 16 + - 17 + familie__p_id_elternteil_1: + - -1 + - 16 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + kindergeld__betrag_m_hh: + - 194.0 + - 194.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 16 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 719.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 10.0 + - 10.0 + kinderzuschlag__basisbetrag_m_bg: + - 10.0 + - 10.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml new file mode 100644 index 0000000000..e0bcfab516 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml @@ -0,0 +1,95 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 38 + - 15 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1982 + - 2005 + hh_id: + - 8 + - 8 + familie__kind: + - false + - true + p_id: + - 21 + - 22 + familie__p_id_elternteil_1: + - -1 + - 21 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2020 + - 2020 + kindergeld__betrag_m_hh: + - 204.0 + - 204.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 21 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 719.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 185 + - 185 + kinderzuschlag__basisbetrag_m_bg: + - 185 + - 185 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml new file mode 100644 index 0000000000..91ead7390d --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml @@ -0,0 +1,124 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 28 + - 27 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 35 + - 33 + - 12 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1986 + - 1988 + - 2009 + hh_id: + - 10 + - 10 + - 10 + familie__kind: + - false + - false + - true + p_id: + - 27 + - 28 + - 29 + familie__p_id_elternteil_1: + - -1 + - -1 + - 27 + familie__p_id_elternteil_2: + - -1 + - -1 + - 28 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1600.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2021 + - 2021 + - 2021 + kindergeld__betrag_m_hh: + - 219.0 + - 219.0 + - 219.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__in_ausbildung: + - false + - false + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 27 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1600.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 750.0 + - 750.0 + - 750.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 205.0 + - 205.0 + - 205.0 + kinderzuschlag__basisbetrag_m_bg: + - 205.0 + - 205.0 + - 205.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml new file mode 100644 index 0000000000..4891d06e8f --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml @@ -0,0 +1,95 @@ +--- +info: + note: '' + source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 11 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 14 + - 14 + familie__kind: + - false + - true + p_id: + - 39 + - 40 + familie__p_id_elternteil_1: + - -1 + - 39 + familie__p_id_elternteil_2: + - -1 + - 39 + vermögen: + - 5000.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2023 + - 2023 + kindergeld__betrag_m_hh: + - 250.0 + - 250.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 39 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 178.0 + - 178.0 + kinderzuschlag__basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml new file mode 100644 index 0000000000..456ee24815 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml @@ -0,0 +1,97 @@ +--- +info: + note: >- + Caution: Regression test for child income. Same as hh_id_14.yaml but with made up + child income, so the results are not based on any source. + source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 38 + - 15 + arbeitsstunden_w: + - 40.0 + - 2.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 17 + - 17 + familie__kind: + - false + - true + p_id: + - 45 + - 46 + familie__p_id_elternteil_1: + - -1 + - 45 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 5000.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 150.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2023 + - 2023 + kindergeld__betrag_m_hh: + - 250.0 + - 250.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 45 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 160.0 + - 160.0 + kinderzuschlag__basisbetrag_m_bg: + - 160.0 + - 160.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml new file mode 100644 index 0000000000..70ddf676d8 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml @@ -0,0 +1,97 @@ +--- +info: + note: >- + Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth + exemptions (above freibetrag_vermögen_in_karenzzeit_bg). + source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 11 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 16 + - 16 + familie__kind: + - false + - true + p_id: + - 43 + - 44 + familie__p_id_elternteil_1: + - -1 + - 43 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 60000.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2023 + - 2023 + kindergeld__betrag_m_hh: + - 250.0 + - 250.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 43 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + kinderzuschlag__basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml new file mode 100644 index 0000000000..bc1806ce55 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml @@ -0,0 +1,97 @@ +--- +info: + note: >- + Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth + exemptions (still below freibetrag_vermögen_in_karenzzeit_bg). + source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 43 + - 11 + arbeitsstunden_w: + - 20.0 + - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 15 + - 15 + familie__kind: + - false + - true + p_id: + - 41 + - 42 + familie__p_id_elternteil_1: + - -1 + - 41 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 30000.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2023 + - 2023 + kindergeld__betrag_m_hh: + - 250.0 + - 250.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 41 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 178.0 + - 178.0 + kinderzuschlag__basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml new file mode 100644 index 0000000000..b08f21f70e --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml @@ -0,0 +1,128 @@ +--- +info: + note: '' + source: Made up. +inputs: + assumed: {} + provided: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__bruttoeinkommen_m: + - 1000.0 + - 0.0 + - 1000.0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 1000.0 + - 0.0 + - 1000.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 40 + - 10 + - 40 + arbeitsstunden_w: + - 40.0 + - 0.0 + - 40.0 + hh_id: + - 18 + - 18 + - 18 + familie__kind: + - false + - true + - false + p_id: + - 49 + - 50 + - 51 + familie__p_id_elternteil_1: + - -1 + - 49 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + - 1000.0 + kindergeld__in_ausbildung: + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 49 + - -1 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 +outputs: + arbeitslosengeld_2__bruttokaltmiete_m_bg: + - 466.67 + - 466.67 + - 233.33 + kinderzuschlag__anspruchshöhe_m_bg: + - 292.0 + - 292.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml new file mode 100644 index 0000000000..703802f3d6 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml @@ -0,0 +1,98 @@ +--- +info: + note: '' + source: Made up. +inputs: + assumed: {} + provided: + arbeitslosengeld_2__anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__bruttoeinkommen_m: + - 1000.0 + - 0.0 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 1000.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 10 + arbeitsstunden_w: + - 40.0 + - 0.0 + hh_id: + - 18 + - 18 + familie__kind: + - false + - true + p_id: + - 47 + - 48 + familie__p_id_elternteil_1: + - -1 + - 47 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 47 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 100.0 + - 100.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 +outputs: + arbeitslosengeld_2__bruttokaltmiete_m_bg: + - 700.0 + - 700.0 + kinderzuschlag__anspruchshöhe_m_bg: + - 292.0 + - 292.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml new file mode 100644 index 0000000000..c4fe72a0dd --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -0,0 +1,173 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 9 + - 8 + familie__alleinerziehend: + - false + - false + - false + - false + - false + alter: + - 33 + - 30 + - 12 + - 10 + - 2 + arbeitsstunden_w: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + - true + - true + p_id: + - 8 + - 9 + - 10 + - 11 + - 12 + familie__p_id_elternteil_1: + - -1 + - -1 + - 8 + - 8 + - 8 + familie__p_id_elternteil_2: + - -1 + - -1 + - 9 + - 9 + - 9 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + kindergeld__betrag_m_hh: + - 462.0 + - 462.0 + - 462.0 + - 462.0 + - 462.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + kindergeld__in_ausbildung: + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 8 + - 8 + - 8 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 2000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 1500.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + wohnen__heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 216.65 + - 216.65 + - 216.65 + - 216.65 + - 216.65 + kinderzuschlag__basisbetrag_m_bg: + - 216.65 + - 216.65 + - 216.65 + - 216.65 + - 216.65 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml new file mode 100644 index 0000000000..e8c63885e5 --- /dev/null +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -0,0 +1,92 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 28 + - 1 + arbeitsstunden_w: + - 0.0 + - 0.0 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 + familie__kind: + - false + - true + p_id: + - 6 + - 7 + familie__p_id_elternteil_1: + - -1 + - 6 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + jahr: + - 2009 + - 2009 + kindergeld__betrag_m_hh: + - 164.0 + - 164.0 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 6 + kinderzuschlag__bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + kinderzuschlag__nettoeinkommen_eltern_m: + - 719.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 80.0 + - 80.0 +outputs: + kinderzuschlag__anspruchshöhe_m_bg: + - 140.0 + - 140.0 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1045.yaml deleted file mode 100644 index 6e8ebfc00a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1045.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1616.0142857142855 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1045 - in_ausbildung: - - false - p_id: - - 1045 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 309.0 - soli_st_lohnst_m: - - 17.014285714285716 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1051.yaml deleted file mode 100644 index 05a07dd585..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1051.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1625.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0111 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1051 - in_ausbildung: - - false - p_id: - - 1051 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 347.0 - soli_st_lohnst_m: - - 18.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1081.yaml deleted file mode 100644 index 58d3fbb75d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1081.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1645.2 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1081 - in_ausbildung: - - false - p_id: - - 1081 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 321.0 - soli_st_lohnst_m: - - 17.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1134.yaml deleted file mode 100644 index 23b596f430..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1134.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7339.585 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1134 - in_ausbildung: - - false - p_id: - - 1134 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2511.0 - soli_st_lohnst_m: - - 138.1325 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_121.yaml deleted file mode 100644 index 96a06ad688..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_121.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5890.408333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 121 - in_ausbildung: - - false - p_id: - - 121 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1879.0 - soli_st_lohnst_m: - - 103.39083333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1214.yaml deleted file mode 100644 index efd168ffbf..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1214.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4583.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0091 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1214 - in_ausbildung: - - false - p_id: - - 1214 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1388.0 - soli_st_lohnst_m: - - 76.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1219.yaml deleted file mode 100644 index b330745d37..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1219.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6027.814285714286 - ges_krankenv_zusatzbeitr_satz: - - 0.011000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1219 - in_ausbildung: - - false - p_id: - - 1219 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1981.0 - soli_st_lohnst_m: - - 108.98571428571428 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1435.yaml deleted file mode 100644 index 37ba3410ce..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1435.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6083.808333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0060999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1435 - in_ausbildung: - - false - p_id: - - 1435 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1973.0 - soli_st_lohnst_m: - - 108.5375 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1462.yaml deleted file mode 100644 index f9aad5144f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1462.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4618.82 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1462 - in_ausbildung: - - false - p_id: - - 1462 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1372.0 - soli_st_lohnst_m: - - 75.48 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1476.yaml deleted file mode 100644 index 3f0d975a93..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1476.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2957.9541666666664 - ges_krankenv_zusatzbeitr_satz: - - 0.0108 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1476 - in_ausbildung: - - false - p_id: - - 1476 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 754.0 - soli_st_lohnst_m: - - 41.52 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1555.yaml deleted file mode 100644 index 451e68736a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1555.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3159.12 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1555 - in_ausbildung: - - false - p_id: - - 1555 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - true -outputs: - lohnst_m: - - 252.0 - soli_st_lohnst_m: - - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1627.yaml deleted file mode 100644 index b863356a53..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1627.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6069.3 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1627 - in_ausbildung: - - false - p_id: - - 1627 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1547.0 - soli_st_lohnst_m: - - 84.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1793.yaml deleted file mode 100644 index bf1c34a4f6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1793.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5900.91 - ges_krankenv_zusatzbeitr_satz: - - 0.0102 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1793 - in_ausbildung: - - false - p_id: - - 1793 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1913.0 - soli_st_lohnst_m: - - 105.24 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1796.yaml deleted file mode 100644 index aa3d89e4a4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1796.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7528.871666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.011399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1796 - in_ausbildung: - - false - p_id: - - 1796 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2587.0 - soli_st_lohnst_m: - - 142.30333333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1915.yaml deleted file mode 100644 index 477a522062..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1915.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6044.18 - ges_krankenv_zusatzbeitr_satz: - - 0.0066 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1915 - in_ausbildung: - - false - p_id: - - 1915 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1960.0 - soli_st_lohnst_m: - - 107.81 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1982.yaml deleted file mode 100644 index efb20d899d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_1982.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2966.4 - ges_krankenv_zusatzbeitr_satz: - - 0.0116 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1982 - in_ausbildung: - - false - p_id: - - 1982 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 756.0 - soli_st_lohnst_m: - - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2042.yaml deleted file mode 100644 index 311add44a3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2042.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 77.52857142857142 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2042 - in_ausbildung: - - false - p_id: - - 2042 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 8.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2174.yaml deleted file mode 100644 index c8390037e3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2174.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1631.8508333333332 - ges_krankenv_zusatzbeitr_satz: - - 0.011899999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2174 - in_ausbildung: - - false - p_id: - - 2174 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 349.0 - soli_st_lohnst_m: - - 19.2225 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2224.yaml deleted file mode 100644 index a9eedabddd..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2224.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4384.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0074 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2224 - in_ausbildung: - - false - p_id: - - 2224 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1317.0 - soli_st_lohnst_m: - - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2451.yaml deleted file mode 100644 index e3b7cf5218..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2451.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7532.46 - ges_krankenv_zusatzbeitr_satz: - - 0.0066 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2451 - in_ausbildung: - - false - p_id: - - 2451 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2601.0 - soli_st_lohnst_m: - - 143.08 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2552.yaml deleted file mode 100644 index 9f3749bfb3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2552.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1575.0857142857142 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2552 - in_ausbildung: - - false - p_id: - - 2552 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 293.0 - soli_st_lohnst_m: - - 16.114285714285714 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2593.yaml deleted file mode 100644 index 729499590f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2593.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6051.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0101 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2593 - in_ausbildung: - - false - p_id: - - 2593 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1936.0 - soli_st_lohnst_m: - - 106.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2601.yaml deleted file mode 100644 index 4adda78055..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2601.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 40.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2601 - in_ausbildung: - - false - p_id: - - 2601 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2639.yaml deleted file mode 100644 index 99768eb51d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2639.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3018.7714285714283 - ges_krankenv_zusatzbeitr_satz: - - 0.0074 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2639 - in_ausbildung: - - false - p_id: - - 2639 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 814.0 - soli_st_lohnst_m: - - 44.74285714285714 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2726.yaml deleted file mode 100644 index 527f2b54b6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2726.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7493.541666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2726 - in_ausbildung: - - false - p_id: - - 2726 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2559.0 - soli_st_lohnst_m: - - 140.795 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2732.yaml deleted file mode 100644 index 4637255406..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2732.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4471.500000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.009899999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2732 - in_ausbildung: - - false - p_id: - - 2732 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1347.0 - soli_st_lohnst_m: - - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2861.yaml deleted file mode 100644 index 88936ba6a0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2861.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4617.042857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0116 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2861 - in_ausbildung: - - false - p_id: - - 2861 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1365.0 - soli_st_lohnst_m: - - 75.08571428571427 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2924.yaml deleted file mode 100644 index b667e31fde..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_2924.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1484.7 - ges_krankenv_zusatzbeitr_satz: - - 0.011699999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2924 - in_ausbildung: - - false - p_id: - - 2924 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 294.0 - soli_st_lohnst_m: - - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_400.yaml deleted file mode 100644 index 8f97cc5c59..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_400.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4425.514285714285 - ges_krankenv_zusatzbeitr_satz: - - 0.0091 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 400 - in_ausbildung: - - false - p_id: - - 400 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1326.0 - soli_st_lohnst_m: - - 72.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_470.yaml deleted file mode 100644 index c1d63ad61c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_470.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 45.342857142857135 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 470 - in_ausbildung: - - false - p_id: - - 470 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_561.yaml deleted file mode 100644 index 8f614bf097..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_561.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4493.36 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 561 - in_ausbildung: - - false - p_id: - - 561 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1357.0 - soli_st_lohnst_m: - - 74.68 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_583.yaml deleted file mode 100644 index d60463a083..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_583.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7448.75 - ges_krankenv_zusatzbeitr_satz: - - 0.011399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 583 - in_ausbildung: - - false - p_id: - - 583 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2553.0 - soli_st_lohnst_m: - - 140.45 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_72.yaml deleted file mode 100644 index 12ab063b10..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_72.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7543.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 72 - in_ausbildung: - - false - p_id: - - 72 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2601.0 - soli_st_lohnst_m: - - 143.05714285714285 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_736.yaml deleted file mode 100644 index 351701b02e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_736.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1612.88 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 736 - in_ausbildung: - - false - p_id: - - 736 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 343.0 - soli_st_lohnst_m: - - 18.88 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_76.yaml deleted file mode 100644 index 2ec40867bc..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_76.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2924.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0076 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 76 - in_ausbildung: - - false - p_id: - - 76 - regulär_beschäftigt: - - true - steuerklasse: - - 4 - wohnort_ost: - - true -outputs: - lohnst_m: - - 435.0 - soli_st_lohnst_m: - - 23.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_765.yaml deleted file mode 100644 index 95116bc881..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_765.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6033.59 - ges_krankenv_zusatzbeitr_satz: - - 0.0083 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 765 - in_ausbildung: - - false - p_id: - - 765 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1989.0 - soli_st_lohnst_m: - - 109.39 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_769.yaml deleted file mode 100644 index 8941911269..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_769.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4492.9325 - ges_krankenv_zusatzbeitr_satz: - - 0.011699999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 769 - in_ausbildung: - - false - p_id: - - 769 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1316.0 - soli_st_lohnst_m: - - 72.4075 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_786.yaml deleted file mode 100644 index 9c249d0fa3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_786.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 241.62857142857143 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 786 - in_ausbildung: - - false - p_id: - - 786 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 27.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_790.yaml deleted file mode 100644 index 497d60b6a5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_790.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5937.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0086 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 790 - in_ausbildung: - - false - p_id: - - 790 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1926.0 - soli_st_lohnst_m: - - 105.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_802.yaml deleted file mode 100644 index f17d579816..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_802.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4625.3275 - ges_krankenv_zusatzbeitr_satz: - - 0.0108 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 802 - in_ausbildung: - - false - p_id: - - 802 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1406.0 - soli_st_lohnst_m: - - 77.37583333333333 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_830.yaml deleted file mode 100644 index 4c7ae117f1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_830.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1478.27 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 830 - in_ausbildung: - - false - p_id: - - 830 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 291.0 - soli_st_lohnst_m: - - 16.03 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_856.yaml deleted file mode 100644 index 8f37570c6c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_856.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1520.4 - ges_krankenv_zusatzbeitr_satz: - - 0.012 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 856 - in_ausbildung: - - false - p_id: - - 856 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 271.0 - soli_st_lohnst_m: - - 14.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_857.yaml deleted file mode 100644 index e2ce8fe3e5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_857.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 97.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 857 - in_ausbildung: - - false - p_id: - - 857 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_891.yaml deleted file mode 100644 index 11960a3e3a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_891.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1595.7058333333334 - ges_krankenv_zusatzbeitr_satz: - - 0.009399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 891 - in_ausbildung: - - false - p_id: - - 891 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 337.0 - soli_st_lohnst_m: - - 18.5625 diff --git a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnst/2015/hh_id_925.yaml deleted file mode 100644 index 8ce5a38e00..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2015/hh_id_925.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1515.42 - ges_krankenv_zusatzbeitr_satz: - - 0.0102 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 925 - in_ausbildung: - - false - p_id: - - 925 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 270.0 - soli_st_lohnst_m: - - 14.85 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1000.yaml deleted file mode 100644 index 59b642e278..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1000.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4483.499999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0098 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1000 - in_ausbildung: - - false - p_id: - - 1000 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1336.0 - soli_st_lohnst_m: - - 73.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1086.yaml deleted file mode 100644 index 80e87e49c7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1086.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 68.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1086 - in_ausbildung: - - false - p_id: - - 1086 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 7.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1115.yaml deleted file mode 100644 index 139a15aab9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1115.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1493.4658333333334 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1115 - in_ausbildung: - - false - p_id: - - 1115 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 251.0 - soli_st_lohnst_m: - - 13.850833333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1133.yaml deleted file mode 100644 index b9b30eb6f0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1133.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6057.2425 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1133 - in_ausbildung: - - false - p_id: - - 1133 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1955.0 - soli_st_lohnst_m: - - 107.56166666666668 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1175.yaml deleted file mode 100644 index a7fe471338..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1175.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1530.66 - ges_krankenv_zusatzbeitr_satz: - - 0.012 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1175 - in_ausbildung: - - false - p_id: - - 1175 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 266.0 - soli_st_lohnst_m: - - 14.65 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_123.yaml deleted file mode 100644 index 86f0c5672e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_123.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5882.06 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 123 - in_ausbildung: - - false - p_id: - - 123 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1856.0 - soli_st_lohnst_m: - - 102.09 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1281.yaml deleted file mode 100644 index ac9bba0c44..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1281.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6033.557142857142 - ges_krankenv_zusatzbeitr_satz: - - 0.0084 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1281 - in_ausbildung: - - false - p_id: - - 1281 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1931.0 - soli_st_lohnst_m: - - 106.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1335.yaml deleted file mode 100644 index 16d76c5452..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1335.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1575.08 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1335 - in_ausbildung: - - false - p_id: - - 1335 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 284.0 - soli_st_lohnst_m: - - 15.62 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1367.yaml deleted file mode 100644 index 1fd66000b6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1367.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 217.17 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1367 - in_ausbildung: - - false - p_id: - - 1367 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 24.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1532.yaml deleted file mode 100644 index 4c6346071b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1532.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6006.257142857144 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1532 - in_ausbildung: - - false - p_id: - - 1532 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1915.0 - soli_st_lohnst_m: - - 105.34285714285714 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1700.yaml deleted file mode 100644 index a7540bb1c0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1700.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1596.27 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1700 - in_ausbildung: - - false - p_id: - - 1700 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 292.0 - soli_st_lohnst_m: - - 16.08 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1705.yaml deleted file mode 100644 index 09fffce47c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1705.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4566.9925 - ges_krankenv_zusatzbeitr_satz: - - 0.008 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1705 - in_ausbildung: - - false - p_id: - - 1705 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1368.0 - soli_st_lohnst_m: - - 75.27666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1822.yaml deleted file mode 100644 index fbb15f1404..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1822.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1468.05 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1822 - in_ausbildung: - - false - p_id: - - 1822 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 278.0 - soli_st_lohnst_m: - - 15.29 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1958.yaml deleted file mode 100644 index 8c7ff0ac51..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_1958.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3028.37 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1958 - in_ausbildung: - - false - p_id: - - 1958 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 807.0 - soli_st_lohnst_m: - - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2065.yaml deleted file mode 100644 index 2aec3ac9d3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2065.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4603.77 - ges_krankenv_zusatzbeitr_satz: - - 0.011200000000000002 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2065 - in_ausbildung: - - false - p_id: - - 2065 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1377.0 - soli_st_lohnst_m: - - 75.76 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2151.yaml deleted file mode 100644 index 0eced0d23e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2151.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1664.7 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2151 - in_ausbildung: - - false - p_id: - - 2151 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 355.0 - soli_st_lohnst_m: - - 19.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2220.yaml deleted file mode 100644 index 5800b07db4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2220.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1649.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2220 - in_ausbildung: - - false - p_id: - - 2220 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 313.0 - soli_st_lohnst_m: - - 17.099999999999998 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2289.yaml deleted file mode 100644 index dff45a89f9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2289.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5871.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0066 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2289 - in_ausbildung: - - false - p_id: - - 2289 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1849.0 - soli_st_lohnst_m: - - 101.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2358.yaml deleted file mode 100644 index 5cd0d3bffe..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2358.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6011.990000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2358 - in_ausbildung: - - false - p_id: - - 2358 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1901.0 - soli_st_lohnst_m: - - 104.56416666666668 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2396.yaml deleted file mode 100644 index 2985c7fa08..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2396.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4525.457142857143 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2396 - in_ausbildung: - - false - p_id: - - 2396 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1353.0 - soli_st_lohnst_m: - - 74.44285714285715 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2645.yaml deleted file mode 100644 index ff86cdb12d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2645.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1494.6 - ges_krankenv_zusatzbeitr_satz: - - 0.0097 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2645 - in_ausbildung: - - false - p_id: - - 2645 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 288.0 - soli_st_lohnst_m: - - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2693.yaml deleted file mode 100644 index b85068b8c9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2693.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1560.194166666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2693 - in_ausbildung: - - false - p_id: - - 2693 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 278.0 - soli_st_lohnst_m: - - 15.299166666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2724.yaml deleted file mode 100644 index cf7c4d839e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2724.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 99.36 - ges_krankenv_zusatzbeitr_satz: - - 0.011699999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2724 - in_ausbildung: - - false - p_id: - - 2724 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2744.yaml deleted file mode 100644 index 72801eb885..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2744.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6066.561666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0104 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2744 - in_ausbildung: - - false - p_id: - - 2744 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1977.0 - soli_st_lohnst_m: - - 108.77166666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2932.yaml deleted file mode 100644 index 285fdc8eab..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2932.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4521.870833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2932 - in_ausbildung: - - false - p_id: - - 2932 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1312.0 - soli_st_lohnst_m: - - 72.17333333333333 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2961.yaml deleted file mode 100644 index 2f6677137b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_2961.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4451.304166666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0115 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2961 - in_ausbildung: - - false - p_id: - - 2961 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1284.0 - soli_st_lohnst_m: - - 70.67 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_307.yaml deleted file mode 100644 index a0d351a0a2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_307.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 206.74285714285716 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 307 - in_ausbildung: - - false - p_id: - - 307 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 23.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_435.yaml deleted file mode 100644 index e9d149d236..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_435.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5911.495 - ges_krankenv_zusatzbeitr_satz: - - 0.0086 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 435 - in_ausbildung: - - false - p_id: - - 435 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1866.0 - soli_st_lohnst_m: - - 102.66666666666669 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_444.yaml deleted file mode 100644 index bbb0539c48..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_444.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3126.98 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 444 - in_ausbildung: - - false - p_id: - - 444 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 809.0 - soli_st_lohnst_m: - - 44.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_583.yaml deleted file mode 100644 index af393be9a6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_583.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5930.696666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.011899999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 583 - in_ausbildung: - - false - p_id: - - 583 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1918.0 - soli_st_lohnst_m: - - 105.49 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_699.yaml deleted file mode 100644 index e39a2f31eb..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_699.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4523.385 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 699 - in_ausbildung: - - false - p_id: - - 699 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1354.0 - soli_st_lohnst_m: - - 74.49249999999999 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_765.yaml deleted file mode 100644 index 299b2173d9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_765.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7536.900000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 765 - in_ausbildung: - - false - p_id: - - 765 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2542.0 - soli_st_lohnst_m: - - 139.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_779.yaml deleted file mode 100644 index 82baa16b69..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_779.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3146.6825000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0113 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 779 - in_ausbildung: - - false - p_id: - - 779 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 809.0 - soli_st_lohnst_m: - - 44.5225 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_807.yaml deleted file mode 100644 index 17f45db296..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_807.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7434.730833333334 - ges_krankenv_zusatzbeitr_satz: - - 0.0113 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 807 - in_ausbildung: - - false - p_id: - - 807 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2550.0 - soli_st_lohnst_m: - - 140.29083333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_821.yaml deleted file mode 100644 index c126bdc56b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_821.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3143.8714285714286 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 821 - in_ausbildung: - - false - p_id: - - 821 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 808.0 - soli_st_lohnst_m: - - 44.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_898.yaml deleted file mode 100644 index 5a2b35c8f9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_898.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1657.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0069 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 898 - in_ausbildung: - - false - p_id: - - 898 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 353.0 - soli_st_lohnst_m: - - 19.41 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_9.yaml deleted file mode 100644 index 6659509a52..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_9.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5947.886666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 9 - in_ausbildung: - - false - p_id: - - 9 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1875.0 - soli_st_lohnst_m: - - 103.175 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_950.yaml deleted file mode 100644 index 8fd9c94005..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_950.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 69.9 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 950 - in_ausbildung: - - false - p_id: - - 950 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_965.yaml deleted file mode 100644 index 79597f11f3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_965.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4586.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0104 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 965 - in_ausbildung: - - false - p_id: - - 965 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1376.0 - soli_st_lohnst_m: - - 75.60000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnst/2016/hh_id_968.yaml deleted file mode 100644 index ee934908b2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2016/hh_id_968.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4500.0 - ges_krankenv_zusatzbeitr_satz: - - 0.009300000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 968 - in_ausbildung: - - false - p_id: - - 968 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1303.0 - soli_st_lohnst_m: - - 71.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1019.yaml deleted file mode 100644 index 2adb54e473..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1019.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4512.942857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0146 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1019 - in_ausbildung: - - false - p_id: - - 1019 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1324.0 - soli_st_lohnst_m: - - 72.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1088.yaml deleted file mode 100644 index be4dd50296..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1088.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1502.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0075 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1088 - in_ausbildung: - - false - p_id: - - 1088 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 285.0 - soli_st_lohnst_m: - - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1134.yaml deleted file mode 100644 index 15c14ba29a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1134.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 168.74 - ges_krankenv_zusatzbeitr_satz: - - 0.0096 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1134 - in_ausbildung: - - false - p_id: - - 1134 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 19.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1164.yaml deleted file mode 100644 index e5137a629c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1164.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4541.228571428571 - ges_krankenv_zusatzbeitr_satz: - - 0.0124 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1164 - in_ausbildung: - - false - p_id: - - 1164 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1339.0 - soli_st_lohnst_m: - - 73.67142857142858 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1279.yaml deleted file mode 100644 index 28c8010ba6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1279.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6067.799999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1279 - in_ausbildung: - - false - p_id: - - 1279 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1906.0 - soli_st_lohnst_m: - - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_146.yaml deleted file mode 100644 index e5b462c805..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_146.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2943.71 - ges_krankenv_zusatzbeitr_satz: - - 0.0077 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 146 - in_ausbildung: - - false - p_id: - - 146 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 734.0 - soli_st_lohnst_m: - - 40.37 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1503.yaml deleted file mode 100644 index bd10faa487..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1503.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2926.5857142857144 - ges_krankenv_zusatzbeitr_satz: - - 0.006999999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1503 - in_ausbildung: - - false - p_id: - - 1503 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 768.0 - soli_st_lohnst_m: - - 42.25714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_151.yaml deleted file mode 100644 index f67773c484..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_151.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5880.86 - ges_krankenv_zusatzbeitr_satz: - - 0.0132 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 151 - in_ausbildung: - - false - p_id: - - 151 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1865.0 - soli_st_lohnst_m: - - 102.58 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1532.yaml deleted file mode 100644 index 0d9c62f1f0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1532.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6083.400000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.013000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1532 - in_ausbildung: - - false - p_id: - - 1532 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1908.0 - soli_st_lohnst_m: - - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1549.yaml deleted file mode 100644 index e599571f1f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1549.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1582.96 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1549 - in_ausbildung: - - false - p_id: - - 1549 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1615.yaml deleted file mode 100644 index 6fd03d3644..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1615.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3150.6 - ges_krankenv_zusatzbeitr_satz: - - 0.009399999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1615 - in_ausbildung: - - false - p_id: - - 1615 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 844.0 - soli_st_lohnst_m: - - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1705.yaml deleted file mode 100644 index 2e3147a366..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1705.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7352.785 - ges_krankenv_zusatzbeitr_satz: - - 0.0111 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1705 - in_ausbildung: - - false - p_id: - - 1705 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2433.0 - soli_st_lohnst_m: - - 133.865 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1788.yaml deleted file mode 100644 index 3ba7925cc8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1788.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6034.5 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1788 - in_ausbildung: - - false - p_id: - - 1788 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1898.0 - soli_st_lohnst_m: - - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1841.yaml deleted file mode 100644 index 367f775050..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1841.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3046.2000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0146 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1841 - in_ausbildung: - - false - p_id: - - 1841 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 797.0 - soli_st_lohnst_m: - - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1866.yaml deleted file mode 100644 index f27c5fc203..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1866.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7458.8425 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1866 - in_ausbildung: - - false - p_id: - - 1866 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2515.0 - soli_st_lohnst_m: - - 138.32916666666668 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1878.yaml deleted file mode 100644 index e52ce47b34..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1878.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 170.51666666666668 - ges_krankenv_zusatzbeitr_satz: - - 0.014199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1878 - in_ausbildung: - - false - p_id: - - 1878 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 7.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1923.yaml deleted file mode 100644 index 96d6da3beb..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1923.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6000.728571428572 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1923 - in_ausbildung: - - false - p_id: - - 1923 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1923.0 - soli_st_lohnst_m: - - 105.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1945.yaml deleted file mode 100644 index 323c2ffdb8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_1945.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5930.400000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1945 - in_ausbildung: - - false - p_id: - - 1945 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1900.0 - soli_st_lohnst_m: - - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2005.yaml deleted file mode 100644 index eed1f55505..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2005.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 127.94 - ges_krankenv_zusatzbeitr_satz: - - 0.0147 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2005 - in_ausbildung: - - false - p_id: - - 2005 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 14.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2151.yaml deleted file mode 100644 index 6765e972a5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2151.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 79.07142857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0074 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2151 - in_ausbildung: - - false - p_id: - - 2151 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 9.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2177.yaml deleted file mode 100644 index 1cda58ff34..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2177.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5933.099999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.013300000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2177 - in_ausbildung: - - false - p_id: - - 2177 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1885.0 - soli_st_lohnst_m: - - 103.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2226.yaml deleted file mode 100644 index 4a89088937..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2226.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1553.5424999999998 - ges_krankenv_zusatzbeitr_satz: - - 0.015 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2226 - in_ausbildung: - - false - p_id: - - 2226 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 269.0 - soli_st_lohnst_m: - - 14.804166666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2293.yaml deleted file mode 100644 index e10a3991f0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2293.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3013.3058333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.011699999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2293 - in_ausbildung: - - false - p_id: - - 2293 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 790.0 - soli_st_lohnst_m: - - 43.45 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2512.yaml deleted file mode 100644 index 14c0473c66..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2512.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1513.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0092 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2512 - in_ausbildung: - - false - p_id: - - 2512 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 289.0 - soli_st_lohnst_m: - - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_266.yaml deleted file mode 100644 index 97735c239a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_266.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5958.49 - ges_krankenv_zusatzbeitr_satz: - - 0.0144 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 266 - in_ausbildung: - - false - p_id: - - 266 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1852.0 - soli_st_lohnst_m: - - 101.89 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2677.yaml deleted file mode 100644 index ab13352704..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2677.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5940.009999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0124 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2677 - in_ausbildung: - - false - p_id: - - 2677 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1860.0 - soli_st_lohnst_m: - - 102.30416666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2729.yaml deleted file mode 100644 index adf2077b7d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2729.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6000.06 - ges_krankenv_zusatzbeitr_satz: - - 0.013600000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2729 - in_ausbildung: - - false - p_id: - - 2729 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1870.0 - soli_st_lohnst_m: - - 102.87 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2881.yaml deleted file mode 100644 index 93908ed648..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2881.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7491.471428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2881 - in_ausbildung: - - false - p_id: - - 2881 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2554.0 - soli_st_lohnst_m: - - 140.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2918.yaml deleted file mode 100644 index dc7b91cded..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2918.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 247.2 - ges_krankenv_zusatzbeitr_satz: - - 0.012 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2918 - in_ausbildung: - - false - p_id: - - 2918 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 27.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2934.yaml deleted file mode 100644 index 7d87bfd379..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2934.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7380.342857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.011699999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2934 - in_ausbildung: - - false - p_id: - - 2934 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2444.0 - soli_st_lohnst_m: - - 134.39999999999998 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2956.yaml deleted file mode 100644 index fe18a66c2d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2956.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7320.214285714285 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2956 - in_ausbildung: - - false - p_id: - - 2956 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2457.0 - soli_st_lohnst_m: - - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2974.yaml deleted file mode 100644 index 8199b91cb6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2974.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 106.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2974 - in_ausbildung: - - false - p_id: - - 2974 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2991.yaml deleted file mode 100644 index 5602e0175d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_2991.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7449.2825 - ges_krankenv_zusatzbeitr_satz: - - 0.0137 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2991 - in_ausbildung: - - false - p_id: - - 2991 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2487.0 - soli_st_lohnst_m: - - 136.785 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_30.yaml deleted file mode 100644 index 621125c93a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_30.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4555.81 - ges_krankenv_zusatzbeitr_satz: - - 0.013500000000000002 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 30 - in_ausbildung: - - false - p_id: - - 30 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1343.0 - soli_st_lohnst_m: - - 73.89 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_416.yaml deleted file mode 100644 index a323e33d1f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_416.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1624.763333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 416 - in_ausbildung: - - false - p_id: - - 416 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 333.0 - soli_st_lohnst_m: - - 18.3425 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_455.yaml deleted file mode 100644 index 195a86740a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_455.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7401.342857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.011399999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 455 - in_ausbildung: - - false - p_id: - - 455 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2458.0 - soli_st_lohnst_m: - - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_496.yaml deleted file mode 100644 index 9fb1ee52e0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_496.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1526.8 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 496 - in_ausbildung: - - false - p_id: - - 496 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 294.0 - soli_st_lohnst_m: - - 16.22 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_506.yaml deleted file mode 100644 index bf6d57a0f4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_506.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7485.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0089 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 506 - in_ausbildung: - - false - p_id: - - 506 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1446.0 - soli_st_lohnst_m: - - 79.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_528.yaml deleted file mode 100644 index b1db0402e1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_528.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1582.72 - ges_krankenv_zusatzbeitr_satz: - - 0.0143 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 528 - in_ausbildung: - - false - p_id: - - 528 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 316.0 - soli_st_lohnst_m: - - 17.43 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_568.yaml deleted file mode 100644 index a22e89f37d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_568.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 52.25 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 568 - in_ausbildung: - - false - p_id: - - 568 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 5.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_575.yaml deleted file mode 100644 index d468811936..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_575.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2989.045 - ges_krankenv_zusatzbeitr_satz: - - 0.0084 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 575 - in_ausbildung: - - false - p_id: - - 575 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 785.0 - soli_st_lohnst_m: - - 43.20666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_588.yaml deleted file mode 100644 index c2c48699e9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_588.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5868.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0123 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 588 - in_ausbildung: - - false - p_id: - - 588 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1825.0 - soli_st_lohnst_m: - - 100.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_659.yaml deleted file mode 100644 index 91877bc265..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_659.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4579.8 - ges_krankenv_zusatzbeitr_satz: - - 0.014199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 659 - in_ausbildung: - - false - p_id: - - 659 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1351.0 - soli_st_lohnst_m: - - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_743.yaml deleted file mode 100644 index d430541e6a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_743.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4563.1475 - ges_krankenv_zusatzbeitr_satz: - - 0.012199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 743 - in_ausbildung: - - false - p_id: - - 743 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1344.0 - soli_st_lohnst_m: - - 73.92916666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_881.yaml deleted file mode 100644 index 6ef0a485e2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_881.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3096.6 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 881 - in_ausbildung: - - false - p_id: - - 881 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 821.0 - soli_st_lohnst_m: - - 45.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_910.yaml deleted file mode 100644 index a41facf389..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_910.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2987.71 - ges_krankenv_zusatzbeitr_satz: - - 0.0095 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 910 - in_ausbildung: - - false - p_id: - - 910 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 783.0 - soli_st_lohnst_m: - - 43.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_933.yaml deleted file mode 100644 index 1a8ca876fb..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_933.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1647.428571428571 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 933 - in_ausbildung: - - false - p_id: - - 933 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 306.0 - soli_st_lohnst_m: - - 16.799999999999997 diff --git a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnst/2017/hh_id_996.yaml deleted file mode 100644 index 631789bf99..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2017/hh_id_996.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 93.865 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 996 - in_ausbildung: - - false - p_id: - - 996 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 10.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1159.yaml deleted file mode 100644 index 04f78a8abe..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1159.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 163.5 - ges_krankenv_zusatzbeitr_satz: - - 0.011899999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1159 - in_ausbildung: - - false - p_id: - - 1159 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 6.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1213.yaml deleted file mode 100644 index b1b3773b1b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1213.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3146.2450000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1213 - in_ausbildung: - - false - p_id: - - 1213 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 799.0 - soli_st_lohnst_m: - - 43.97666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_130.yaml deleted file mode 100644 index e519096e1a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_130.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4388.33 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 130 - in_ausbildung: - - false - p_id: - - 130 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1233.0 - soli_st_lohnst_m: - - 67.85 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1314.yaml deleted file mode 100644 index d142304e69..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1314.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 182.92583333333332 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1314 - in_ausbildung: - - false - p_id: - - 1314 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 8.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_152.yaml deleted file mode 100644 index 54fd5edfbb..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_152.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7371.771428571428 - ges_krankenv_zusatzbeitr_satz: - - 0.011000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 152 - in_ausbildung: - - false - p_id: - - 152 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2481.0 - soli_st_lohnst_m: - - 136.45714285714288 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1632.yaml deleted file mode 100644 index 7b4e4b199d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1632.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4440.64 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1632 - in_ausbildung: - - false - p_id: - - 1632 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1252.0 - soli_st_lohnst_m: - - 68.89 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1727.yaml deleted file mode 100644 index a4009a07c7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1727.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4541.09 - ges_krankenv_zusatzbeitr_satz: - - 0.013500000000000002 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1727 - in_ausbildung: - - false - p_id: - - 1727 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1323.0 - soli_st_lohnst_m: - - 72.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_174.yaml deleted file mode 100644 index d6437511f8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_174.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7360.929166666666 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 174 - in_ausbildung: - - false - p_id: - - 174 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2423.0 - soli_st_lohnst_m: - - 133.27416666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1786.yaml deleted file mode 100644 index 762657664a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1786.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6056.13 - ges_krankenv_zusatzbeitr_satz: - - 0.0139 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1786 - in_ausbildung: - - false - p_id: - - 1786 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1887.0 - soli_st_lohnst_m: - - 103.81 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1802.yaml deleted file mode 100644 index a36b1d4223..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1802.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1687.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0095 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1802 - in_ausbildung: - - false - p_id: - - 1802 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 314.0 - soli_st_lohnst_m: - - 17.27 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_184.yaml deleted file mode 100644 index 11bfec10b5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_184.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6010.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0111 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 184 - in_ausbildung: - - false - p_id: - - 184 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1899.0 - soli_st_lohnst_m: - - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1935.yaml deleted file mode 100644 index a4925127e4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_1935.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4563.08 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1935 - in_ausbildung: - - false - p_id: - - 1935 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1304.0 - soli_st_lohnst_m: - - 71.77 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2098.yaml deleted file mode 100644 index 2941992c13..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2098.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1597.79 - ges_krankenv_zusatzbeitr_satz: - - 0.011200000000000002 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2098 - in_ausbildung: - - false - p_id: - - 2098 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 315.0 - soli_st_lohnst_m: - - 17.37 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2156.yaml deleted file mode 100644 index 94fe569f7c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2156.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2946.0857142857144 - ges_krankenv_zusatzbeitr_satz: - - 0.0066 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2156 - in_ausbildung: - - false - p_id: - - 2156 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 730.0 - soli_st_lohnst_m: - - 40.15714285714285 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2186.yaml deleted file mode 100644 index 1710f6f9f2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2186.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7371.23 - ges_krankenv_zusatzbeitr_satz: - - 0.0147 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2186 - in_ausbildung: - - false - p_id: - - 2186 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2414.0 - soli_st_lohnst_m: - - 132.77 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2395.yaml deleted file mode 100644 index a0241f50b4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2395.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2954.142857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0069 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2395 - in_ausbildung: - - false - p_id: - - 2395 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 766.0 - soli_st_lohnst_m: - - 42.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2491.yaml deleted file mode 100644 index 5f24998b43..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2491.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3000.8425 - ges_krankenv_zusatzbeitr_satz: - - 0.011899999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2491 - in_ausbildung: - - false - p_id: - - 2491 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 743.0 - soli_st_lohnst_m: - - 40.8875 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2575.yaml deleted file mode 100644 index 5649bdface..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2575.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7519.978333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0075 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2575 - in_ausbildung: - - false - p_id: - - 2575 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2489.0 - soli_st_lohnst_m: - - 136.945 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2649.yaml deleted file mode 100644 index ac337839fa..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2649.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1662.4191666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.006999999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2649 - in_ausbildung: - - false - p_id: - - 2649 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 305.0 - soli_st_lohnst_m: - - 16.775000000000002 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2720.yaml deleted file mode 100644 index 66a1cac046..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2720.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4467.29 - ges_krankenv_zusatzbeitr_satz: - - 0.0143 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2720 - in_ausbildung: - - false - p_id: - - 2720 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1252.0 - soli_st_lohnst_m: - - 68.87 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2828.yaml deleted file mode 100644 index d3770c618e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2828.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 105.8142857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2828 - in_ausbildung: - - false - p_id: - - 2828 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 12.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2904.yaml deleted file mode 100644 index e9de19fe00..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2904.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7479.557142857143 - ges_krankenv_zusatzbeitr_satz: - - 0.0132 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2904 - in_ausbildung: - - false - p_id: - - 2904 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2025.0 - soli_st_lohnst_m: - - 111.38571428571429 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2999.yaml deleted file mode 100644 index 84afa6858b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_2999.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5995.8 - ges_krankenv_zusatzbeitr_satz: - - 0.013500000000000002 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2999 - in_ausbildung: - - false - p_id: - - 2999 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1888.0 - soli_st_lohnst_m: - - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_315.yaml deleted file mode 100644 index a3989f7e75..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_315.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7479.900000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0108 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 315 - in_ausbildung: - - false - p_id: - - 315 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2522.0 - soli_st_lohnst_m: - - 138.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_375.yaml deleted file mode 100644 index c42cd6e8b8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_375.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3004.2000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0076 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 375 - in_ausbildung: - - false - p_id: - - 375 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 786.0 - soli_st_lohnst_m: - - 43.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_417.yaml deleted file mode 100644 index 5f65f262e0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_417.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1521.3100000000002 - ges_krankenv_zusatzbeitr_satz: - - 0.0139 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 417 - in_ausbildung: - - false - p_id: - - 417 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 249.0 - soli_st_lohnst_m: - - 13.731666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_559.yaml deleted file mode 100644 index 94de72a549..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_559.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 72.9 - ges_krankenv_zusatzbeitr_satz: - - 0.0128 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 559 - in_ausbildung: - - false - p_id: - - 559 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_624.yaml deleted file mode 100644 index b99f6e3459..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_624.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5990.524166666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 624 - in_ausbildung: - - false - p_id: - - 624 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1851.0 - soli_st_lohnst_m: - - 101.8325 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_791.yaml deleted file mode 100644 index f328459b4b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_791.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1689.428571428571 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 791 - in_ausbildung: - - false - p_id: - - 791 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 351.0 - soli_st_lohnst_m: - - 19.328571428571426 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_796.yaml deleted file mode 100644 index 6f2e863b02..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_796.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7317.895 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 796 - in_ausbildung: - - false - p_id: - - 796 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2451.0 - soli_st_lohnst_m: - - 134.8325 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_81.yaml deleted file mode 100644 index 072074eb4f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_81.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 113.93 - ges_krankenv_zusatzbeitr_satz: - - 0.008199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 81 - in_ausbildung: - - false - p_id: - - 81 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 12.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_835.yaml deleted file mode 100644 index dc6b5c7638..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_835.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4523.12 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 835 - in_ausbildung: - - false - p_id: - - 835 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1322.0 - soli_st_lohnst_m: - - 72.71 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_851.yaml deleted file mode 100644 index 64d592d67b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_851.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5955.24 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 851 - in_ausbildung: - - false - p_id: - - 851 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1886.0 - soli_st_lohnst_m: - - 103.73 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_947.yaml deleted file mode 100644 index 143ccc187d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_947.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7437.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0060999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 947 - in_ausbildung: - - false - p_id: - - 947 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2493.0 - soli_st_lohnst_m: - - 137.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_959.yaml deleted file mode 100644 index 8422bb092c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_959.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4503.0 - ges_krankenv_zusatzbeitr_satz: - - 0.010700000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 959 - in_ausbildung: - - false - p_id: - - 959 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1313.0 - soli_st_lohnst_m: - - 72.25714285714285 diff --git a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnst/2018/hh_id_98.yaml deleted file mode 100644 index baa36a037d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2018/hh_id_98.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7488.9325 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 98 - in_ausbildung: - - false - p_id: - - 98 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2478.0 - soli_st_lohnst_m: - - 136.3125 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1014.yaml deleted file mode 100644 index 3d5adb5572..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1014.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1643.1428571428569 - ges_krankenv_zusatzbeitr_satz: - - 0.009899999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1014 - in_ausbildung: - - false - p_id: - - 1014 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 326.0 - soli_st_lohnst_m: - - 17.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1093.yaml deleted file mode 100644 index 56991ccc4c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1093.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7512.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1093 - in_ausbildung: - - false - p_id: - - 1093 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2505.0 - soli_st_lohnst_m: - - 137.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1098.yaml deleted file mode 100644 index f55770f07e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1098.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5838.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0124 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1098 - in_ausbildung: - - false - p_id: - - 1098 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1781.0 - soli_st_lohnst_m: - - 97.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_111.yaml deleted file mode 100644 index 72223f7cb5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_111.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7376.400000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 111 - in_ausbildung: - - false - p_id: - - 111 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2452.0 - soli_st_lohnst_m: - - 134.70000000000002 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1180.yaml deleted file mode 100644 index 0dfd177e54..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1180.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7517.742857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.012199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1180 - in_ausbildung: - - false - p_id: - - 1180 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2497.0 - soli_st_lohnst_m: - - 137.35714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1210.yaml deleted file mode 100644 index 3287e70237..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1210.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1682.571428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.012199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1210 - in_ausbildung: - - false - p_id: - - 1210 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1354.yaml deleted file mode 100644 index 3987d61567..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1354.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 34.49333333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0147 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1354 - in_ausbildung: - - false - p_id: - - 1354 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1629.yaml deleted file mode 100644 index b09638554a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1629.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1656.5716666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1629 - in_ausbildung: - - false - p_id: - - 1629 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 331.0 - soli_st_lohnst_m: - - 18.245833333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1695.yaml deleted file mode 100644 index 08d60014c5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1695.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2921.442857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.0092 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1695 - in_ausbildung: - - false - p_id: - - 1695 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 747.0 - soli_st_lohnst_m: - - 41.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1709.yaml deleted file mode 100644 index 50df0cfdb2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1709.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5849.6033333333335 - ges_krankenv_zusatzbeitr_satz: - - 0.009300000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1709 - in_ausbildung: - - false - p_id: - - 1709 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1825.0 - soli_st_lohnst_m: - - 100.37916666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_180.yaml deleted file mode 100644 index 465405b3fe..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_180.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5892.3 - ges_krankenv_zusatzbeitr_satz: - - 0.009399999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 180 - in_ausbildung: - - false - p_id: - - 180 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1846.0 - soli_st_lohnst_m: - - 101.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1825.yaml deleted file mode 100644 index d4ca8b0fad..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1825.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5998.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0086 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1825 - in_ausbildung: - - false - p_id: - - 1825 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1888.0 - soli_st_lohnst_m: - - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1846.yaml deleted file mode 100644 index 1a72a16105..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_1846.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3072.5466666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.006999999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1846 - in_ausbildung: - - false - p_id: - - 1846 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 799.0 - soli_st_lohnst_m: - - 43.9675 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2025.yaml deleted file mode 100644 index 03853ffc08..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2025.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 242.2225 - ges_krankenv_zusatzbeitr_satz: - - 0.0134 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2025 - in_ausbildung: - - false - p_id: - - 2025 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 15.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2070.yaml deleted file mode 100644 index 94aeb7cfce..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2070.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4625.142857142858 - ges_krankenv_zusatzbeitr_satz: - - 0.0084 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2070 - in_ausbildung: - - false - p_id: - - 2070 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1311.0 - soli_st_lohnst_m: - - 72.12857142857142 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2159.yaml deleted file mode 100644 index 6234455a86..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2159.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1505.9208333333331 - ges_krankenv_zusatzbeitr_satz: - - 0.0083 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2159 - in_ausbildung: - - false - p_id: - - 2159 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 236.0 - soli_st_lohnst_m: - - 13.020833333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2204.yaml deleted file mode 100644 index f96f04edad..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2204.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6060.8425 - ges_krankenv_zusatzbeitr_satz: - - 0.006 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2204 - in_ausbildung: - - false - p_id: - - 2204 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1879.0 - soli_st_lohnst_m: - - 103.35416666666669 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2375.yaml deleted file mode 100644 index 02b20a2b27..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2375.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7363.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0125 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2375 - in_ausbildung: - - false - p_id: - - 2375 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2432.0 - soli_st_lohnst_m: - - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2393.yaml deleted file mode 100644 index 3a8afb83b2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2393.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3108.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0092 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2393 - in_ausbildung: - - false - p_id: - - 2393 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 774.0 - soli_st_lohnst_m: - - 42.3 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2469.yaml deleted file mode 100644 index b20974944e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2469.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1546.38 - ges_krankenv_zusatzbeitr_satz: - - 0.0072 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2469 - in_ausbildung: - - false - p_id: - - 2469 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 252.0 - soli_st_lohnst_m: - - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2516.yaml deleted file mode 100644 index c21402a71e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2516.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2922.6891666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.011200000000000002 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2516 - in_ausbildung: - - false - p_id: - - 2516 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 707.0 - soli_st_lohnst_m: - - 38.935 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_265.yaml deleted file mode 100644 index 7cf43eb774..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_265.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1523.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 265 - in_ausbildung: - - false - p_id: - - 265 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 279.0 - soli_st_lohnst_m: - - 15.385714285714284 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2708.yaml deleted file mode 100644 index fa02ca9f3b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2708.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 130.3714285714286 - ges_krankenv_zusatzbeitr_satz: - - 0.0074 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2708 - in_ausbildung: - - false - p_id: - - 2708 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2729.yaml deleted file mode 100644 index 8fcc94c4d1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2729.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3164.2 - ges_krankenv_zusatzbeitr_satz: - - 0.014199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2729 - in_ausbildung: - - false - p_id: - - 2729 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 790.0 - soli_st_lohnst_m: - - 43.48 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2736.yaml deleted file mode 100644 index a499fcf866..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2736.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3111.6 - ges_krankenv_zusatzbeitr_satz: - - 0.015 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2736 - in_ausbildung: - - false - p_id: - - 2736 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 811.0 - soli_st_lohnst_m: - - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2760.yaml deleted file mode 100644 index 56103af5ce..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2760.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1501.4142857142854 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2760 - in_ausbildung: - - false - p_id: - - 2760 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 271.0 - soli_st_lohnst_m: - - 14.871428571428572 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2818.yaml deleted file mode 100644 index b5a5fa2af0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2818.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1467.9 - ges_krankenv_zusatzbeitr_satz: - - 0.0127 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2818 - in_ausbildung: - - false - p_id: - - 2818 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 258.0 - soli_st_lohnst_m: - - 14.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_286.yaml deleted file mode 100644 index aa4aff1c62..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_286.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 76.37142857142858 - ges_krankenv_zusatzbeitr_satz: - - 0.011000000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 286 - in_ausbildung: - - false - p_id: - - 286 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2900.yaml deleted file mode 100644 index 40cee20f32..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2900.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 123.56 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2900 - in_ausbildung: - - false - p_id: - - 2900 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2904.yaml deleted file mode 100644 index eddcf54c99..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2904.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7360.12 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2904 - in_ausbildung: - - false - p_id: - - 2904 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2393.0 - soli_st_lohnst_m: - - 131.63 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2942.yaml deleted file mode 100644 index 1108808915..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_2942.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1558.1999999999998 - ges_krankenv_zusatzbeitr_satz: - - 0.0137 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2942 - in_ausbildung: - - false - p_id: - - 2942 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 293.0 - soli_st_lohnst_m: - - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_317.yaml deleted file mode 100644 index 22129b203c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_317.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5961.814285714285 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 317 - in_ausbildung: - - false - p_id: - - 317 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1827.0 - soli_st_lohnst_m: - - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_331.yaml deleted file mode 100644 index f80072b849..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_331.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5884.19 - ges_krankenv_zusatzbeitr_satz: - - 0.006 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 331 - in_ausbildung: - - false - p_id: - - 331 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1805.0 - soli_st_lohnst_m: - - 99.29 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_396.yaml deleted file mode 100644 index 2219520c54..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_396.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7315.6475 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 396 - in_ausbildung: - - false - p_id: - - 396 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2381.0 - soli_st_lohnst_m: - - 130.99166666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_420.yaml deleted file mode 100644 index 77c519b666..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_420.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 100.94166666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 420 - in_ausbildung: - - false - p_id: - - 420 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 11.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_605.yaml deleted file mode 100644 index 937008f1fa..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_605.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1647.86 - ges_krankenv_zusatzbeitr_satz: - - 0.0076 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 605 - in_ausbildung: - - false - p_id: - - 605 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 328.0 - soli_st_lohnst_m: - - 18.06 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_646.yaml deleted file mode 100644 index bfa5918070..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_646.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4621.500000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 646 - in_ausbildung: - - false - p_id: - - 646 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1316.0 - soli_st_lohnst_m: - - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_65.yaml deleted file mode 100644 index c2f13d1e2b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_65.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3056.7000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 65 - in_ausbildung: - - false - p_id: - - 65 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 760.0 - soli_st_lohnst_m: - - 41.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_664.yaml deleted file mode 100644 index d6b2f06e3d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_664.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 113.06 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 664 - in_ausbildung: - - false - p_id: - - 664 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - true -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_698.yaml deleted file mode 100644 index b059d1f43f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_698.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 193.36666666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.008 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 698 - in_ausbildung: - - false - p_id: - - 698 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 9.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_710.yaml deleted file mode 100644 index bf52ae792c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_710.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5892.900000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0085 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 710 - in_ausbildung: - - false - p_id: - - 710 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1811.0 - soli_st_lohnst_m: - - 99.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_715.yaml deleted file mode 100644 index 40a9a2a678..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_715.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1593.3 - ges_krankenv_zusatzbeitr_satz: - - 0.011200000000000002 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 715 - in_ausbildung: - - false - p_id: - - 715 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 306.0 - soli_st_lohnst_m: - - 16.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_809.yaml deleted file mode 100644 index b4ce4a2e60..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_809.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4459.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0060999999999999995 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 809 - in_ausbildung: - - false - p_id: - - 809 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1293.0 - soli_st_lohnst_m: - - 71.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_816.yaml deleted file mode 100644 index 86383b103c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_816.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7359.214285714286 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 816 - in_ausbildung: - - false - p_id: - - 816 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2393.0 - soli_st_lohnst_m: - - 131.65714285714287 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_832.yaml deleted file mode 100644 index 8bed06c90a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_832.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1484.9571428571428 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 832 - in_ausbildung: - - false - p_id: - - 832 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 264.0 - soli_st_lohnst_m: - - 14.52857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_879.yaml deleted file mode 100644 index 7170cc0dc0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_879.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4560.0633333333335 - ges_krankenv_zusatzbeitr_satz: - - 0.0075 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 879 - in_ausbildung: - - false - p_id: - - 879 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1291.0 - soli_st_lohnst_m: - - 71.05499999999999 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_882.yaml deleted file mode 100644 index 93a2979176..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_882.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2940.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 882 - in_ausbildung: - - false - p_id: - - 882 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 753.0 - soli_st_lohnst_m: - - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_949.yaml deleted file mode 100644 index d2f684858a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_949.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 87.30000000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 949 - in_ausbildung: - - false - p_id: - - 949 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 9.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnst/2019/hh_id_978.yaml deleted file mode 100644 index 3a5b75cac4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2019/hh_id_978.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5982.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0113 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 978 - in_ausbildung: - - false - p_id: - - 978 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1874.0 - soli_st_lohnst_m: - - 102.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1015.yaml deleted file mode 100644 index 205e4b8eb7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1015.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1477.2325 - ges_krankenv_zusatzbeitr_satz: - - 0.0101 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1015 - in_ausbildung: - - false - p_id: - - 1015 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 253.0 - soli_st_lohnst_m: - - 13.933333333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1096.yaml deleted file mode 100644 index 06d1d7f9d8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1096.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5872.39 - ges_krankenv_zusatzbeitr_satz: - - 0.0109 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1096 - in_ausbildung: - - false - p_id: - - 1096 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1780.0 - soli_st_lohnst_m: - - 97.92 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1118.yaml deleted file mode 100644 index e726005102..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1118.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7334.400000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1118 - in_ausbildung: - - false - p_id: - - 1118 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2365.0 - soli_st_lohnst_m: - - 129.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1273.yaml deleted file mode 100644 index 1aa2e7fe28..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1273.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7337.276666666668 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1273 - in_ausbildung: - - false - p_id: - - 1273 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2397.0 - soli_st_lohnst_m: - - 131.83916666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_13.yaml deleted file mode 100644 index ad84f8ee9c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_13.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7524.431666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0121 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 13 - in_ausbildung: - - false - p_id: - - 13 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2436.0 - soli_st_lohnst_m: - - 133.98416666666665 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1310.yaml deleted file mode 100644 index 49bdbbeba3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1310.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 58.68 - ges_krankenv_zusatzbeitr_satz: - - 0.013000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1310 - in_ausbildung: - - false - p_id: - - 1310 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 6.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1378.yaml deleted file mode 100644 index f7907e5972..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1378.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7411.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1378 - in_ausbildung: - - false - p_id: - - 1378 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2429.0 - soli_st_lohnst_m: - - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1417.yaml deleted file mode 100644 index dd5c577f67..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1417.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4439.8133333333335 - ges_krankenv_zusatzbeitr_satz: - - 0.0097 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1417 - in_ausbildung: - - false - p_id: - - 1417 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1229.0 - soli_st_lohnst_m: - - 67.61749999999999 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1468.yaml deleted file mode 100644 index 33b9305b5a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1468.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 83.99999999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0143 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1468 - in_ausbildung: - - false - p_id: - - 1468 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 9.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_160.yaml deleted file mode 100644 index 998c5e5778..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_160.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1657.285714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 160 - in_ausbildung: - - false - p_id: - - 160 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 323.0 - soli_st_lohnst_m: - - 17.742857142857144 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_161.yaml deleted file mode 100644 index 8d55dfa186..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_161.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7321.994166666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 161 - in_ausbildung: - - false - p_id: - - 161 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2357.0 - soli_st_lohnst_m: - - 129.67583333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1705.yaml deleted file mode 100644 index b59b0d4826..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1705.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7393.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1705 - in_ausbildung: - - false - p_id: - - 1705 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2441.0 - soli_st_lohnst_m: - - 134.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1767.yaml deleted file mode 100644 index 3f17d86c03..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1767.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1706.4583333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0143 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1767 - in_ausbildung: - - false - p_id: - - 1767 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 342.0 - soli_st_lohnst_m: - - 18.8375 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1775.yaml deleted file mode 100644 index e4cc4b005b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1775.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4402.885714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.014199999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1775 - in_ausbildung: - - false - p_id: - - 1775 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1248.0 - soli_st_lohnst_m: - - 68.65714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1788.yaml deleted file mode 100644 index 5ffa704072..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1788.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4415.733333333334 - ges_krankenv_zusatzbeitr_satz: - - 0.0068000000000000005 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1788 - in_ausbildung: - - false - p_id: - - 1788 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1223.0 - soli_st_lohnst_m: - - 67.30166666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1790.yaml deleted file mode 100644 index f2b587220e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1790.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1660.4571428571428 - ges_krankenv_zusatzbeitr_satz: - - 0.0069 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1790 - in_ausbildung: - - false - p_id: - - 1790 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 324.0 - soli_st_lohnst_m: - - 17.82857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1928.yaml deleted file mode 100644 index d8e2b5c46a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_1928.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4515.385714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1928 - in_ausbildung: - - false - p_id: - - 1928 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1299.0 - soli_st_lohnst_m: - - 71.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2106.yaml deleted file mode 100644 index b62d0c9033..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2106.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7439.99 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2106 - in_ausbildung: - - false - p_id: - - 2106 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2452.0 - soli_st_lohnst_m: - - 134.88 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2182.yaml deleted file mode 100644 index b7532d683e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2182.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 32.142857142857146 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2182 - in_ausbildung: - - false - p_id: - - 2182 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2184.yaml deleted file mode 100644 index 1c7bcc174d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2184.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3118.816666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.013600000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2184 - in_ausbildung: - - false - p_id: - - 2184 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 804.0 - soli_st_lohnst_m: - - 44.22916666666666 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2230.yaml deleted file mode 100644 index c2f1afa4ce..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2230.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5944.242857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.008 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2230 - in_ausbildung: - - false - p_id: - - 2230 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1351.0 - soli_st_lohnst_m: - - 74.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2320.yaml deleted file mode 100644 index ee46afd11a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2320.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1683.9 - ges_krankenv_zusatzbeitr_satz: - - 0.0064 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2320 - in_ausbildung: - - false - p_id: - - 2320 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 297.0 - soli_st_lohnst_m: - - 16.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2389.yaml deleted file mode 100644 index 1d2b53dd7d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2389.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 107.4 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2389 - in_ausbildung: - - false - p_id: - - 2389 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 12.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2439.yaml deleted file mode 100644 index a268e67aff..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2439.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7502.544166666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0064 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2439 - in_ausbildung: - - false - p_id: - - 2439 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2487.0 - soli_st_lohnst_m: - - 136.82583333333335 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2527.yaml deleted file mode 100644 index c3d4c5a880..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2527.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5989.17 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2527 - in_ausbildung: - - false - p_id: - - 2527 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1864.0 - soli_st_lohnst_m: - - 102.52 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2562.yaml deleted file mode 100644 index 20039a3085..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2562.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5884.177500000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0129 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2562 - in_ausbildung: - - false - p_id: - - 2562 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1819.0 - soli_st_lohnst_m: - - 100.06333333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2587.yaml deleted file mode 100644 index 15c997fff6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2587.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7518.0 - ges_krankenv_zusatzbeitr_satz: - - 0.013500000000000002 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2587 - in_ausbildung: - - false - p_id: - - 2587 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2468.0 - soli_st_lohnst_m: - - 135.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_266.yaml deleted file mode 100644 index 3958c495c2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_266.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1472.0142857142855 - ges_krankenv_zusatzbeitr_satz: - - 0.0104 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 266 - in_ausbildung: - - false - p_id: - - 266 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 215.0 - soli_st_lohnst_m: - - 11.828571428571427 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2888.yaml deleted file mode 100644 index 423cb8aebb..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2888.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5947.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2888 - in_ausbildung: - - false - p_id: - - 2888 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1808.0 - soli_st_lohnst_m: - - 99.46 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2898.yaml deleted file mode 100644 index b9dcef8b3f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2898.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1484.35 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2898 - in_ausbildung: - - false - p_id: - - 2898 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 219.0 - soli_st_lohnst_m: - - 12.090833333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2920.yaml deleted file mode 100644 index d8e02351cf..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2920.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5943.534166666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0113 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2920 - in_ausbildung: - - false - p_id: - - 2920 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1839.0 - soli_st_lohnst_m: - - 101.145 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2953.yaml deleted file mode 100644 index 8240f5ad7d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2953.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5910.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0134 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2953 - in_ausbildung: - - false - p_id: - - 2953 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1828.0 - soli_st_lohnst_m: - - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2998.yaml deleted file mode 100644 index 722255c476..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_2998.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7359.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0084 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2998 - in_ausbildung: - - false - p_id: - - 2998 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2411.0 - soli_st_lohnst_m: - - 132.6 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_367.yaml deleted file mode 100644 index 08debb33a2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_367.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4459.240833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 367 - in_ausbildung: - - false - p_id: - - 367 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1232.0 - soli_st_lohnst_m: - - 67.76416666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_400.yaml deleted file mode 100644 index bfd68c7b23..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_400.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3063.0 - ges_krankenv_zusatzbeitr_satz: - - 0.013000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 400 - in_ausbildung: - - false - p_id: - - 400 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 784.0 - soli_st_lohnst_m: - - 42.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_409.yaml deleted file mode 100644 index dfb7949658..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_409.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7384.743333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0111 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 409 - in_ausbildung: - - false - p_id: - - 409 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2428.0 - soli_st_lohnst_m: - - 133.57666666666668 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_481.yaml deleted file mode 100644 index 7f3a5e9a12..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_481.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1495.1033333333337 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 481 - in_ausbildung: - - false - p_id: - - 481 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 260.0 - soli_st_lohnst_m: - - 14.318333333333332 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_513.yaml deleted file mode 100644 index 4469791f52..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_513.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4554.2716666666665 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 513 - in_ausbildung: - - false - p_id: - - 513 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1271.0 - soli_st_lohnst_m: - - 69.91416666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_630.yaml deleted file mode 100644 index ed20f71ccc..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_630.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1612.8033333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 630 - in_ausbildung: - - false - p_id: - - 630 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 306.0 - soli_st_lohnst_m: - - 16.834166666666665 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_648.yaml deleted file mode 100644 index 8de737a9cf..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_648.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3075.685714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.014499999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 648 - in_ausbildung: - - false - p_id: - - 648 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 752.0 - soli_st_lohnst_m: - - 41.35714285714285 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_70.yaml deleted file mode 100644 index 8b68487c26..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_70.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7321.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0127 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 70 - in_ausbildung: - - false - p_id: - - 70 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2391.0 - soli_st_lohnst_m: - - 131.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_798.yaml deleted file mode 100644 index 0f5803ba43..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_798.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1664.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0063 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 798 - in_ausbildung: - - false - p_id: - - 798 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 325.0 - soli_st_lohnst_m: - - 17.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_835.yaml deleted file mode 100644 index d74756e371..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_835.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5888.61 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 835 - in_ausbildung: - - false - p_id: - - 835 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1782.0 - soli_st_lohnst_m: - - 98.04 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_901.yaml deleted file mode 100644 index fb166485b1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_901.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4541.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0125 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 901 - in_ausbildung: - - false - p_id: - - 901 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1302.0 - soli_st_lohnst_m: - - 71.39999999999999 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_926.yaml deleted file mode 100644 index 6a54e8993e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_926.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 86.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0079 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 926 - in_ausbildung: - - false - p_id: - - 926 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnst/2020/hh_id_949.yaml deleted file mode 100644 index 896be3f3f2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2020/hh_id_949.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4446.9375 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 949 - in_ausbildung: - - false - p_id: - - 949 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1234.0 - soli_st_lohnst_m: - - 67.90666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_111.yaml deleted file mode 100644 index 0530cbe5a8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_111.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2939.78 - ges_krankenv_zusatzbeitr_satz: - - 0.013300000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 111 - in_ausbildung: - - false - p_id: - - 111 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 696.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1186.yaml deleted file mode 100644 index 878cfd9a55..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1186.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5956.41 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1186 - in_ausbildung: - - false - p_id: - - 1186 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1792.0 - soli_st_lohnst_m: - - 45.16 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1204.yaml deleted file mode 100644 index 3f31a98f11..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1204.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7384.15 - ges_krankenv_zusatzbeitr_satz: - - 0.014499999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1204 - in_ausbildung: - - false - p_id: - - 1204 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2360.0 - soli_st_lohnst_m: - - 112.72 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1237.yaml deleted file mode 100644 index 7d1d8dd591..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1237.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4455.695833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1237 - in_ausbildung: - - false - p_id: - - 1237 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1226.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1255.yaml deleted file mode 100644 index e49492ff4b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1255.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6082.799999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.009000000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1255 - in_ausbildung: - - false - p_id: - - 1255 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1880.0 - soli_st_lohnst_m: - - 55.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1380.yaml deleted file mode 100644 index e7348dbdda..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1380.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4382.057142857143 - ges_krankenv_zusatzbeitr_satz: - - 0.014499999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1380 - in_ausbildung: - - false - p_id: - - 1380 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1193.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1385.yaml deleted file mode 100644 index 70904fb05c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1385.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 149.5285714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.0134 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1385 - in_ausbildung: - - false - p_id: - - 1385 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 16.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1402.yaml deleted file mode 100644 index 58f0687d13..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1402.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4587.52 - ges_krankenv_zusatzbeitr_satz: - - 0.0148 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1402 - in_ausbildung: - - false - p_id: - - 1402 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1300.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_145.yaml deleted file mode 100644 index 4c786d9e2f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_145.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4483.14 - ges_krankenv_zusatzbeitr_satz: - - 0.0064 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 145 - in_ausbildung: - - false - p_id: - - 145 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1277.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1538.yaml deleted file mode 100644 index 65e63d1004..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1538.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 229.84 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1538 - in_ausbildung: - - false - p_id: - - 1538 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 25.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1610.yaml deleted file mode 100644 index 01c4ba93a6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1610.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6054.72 - ges_krankenv_zusatzbeitr_satz: - - 0.0086 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1610 - in_ausbildung: - - false - p_id: - - 1610 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - true -outputs: - lohnst_m: - - 867.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_165.yaml deleted file mode 100644 index 2510f642b3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_165.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2973.4216666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0144 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 165 - in_ausbildung: - - false - p_id: - - 165 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 743.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1714.yaml deleted file mode 100644 index 7d8affe439..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1714.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3106.880833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1714 - in_ausbildung: - - false - p_id: - - 1714 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 754.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1762.yaml deleted file mode 100644 index 67663c0ac1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1762.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7386.214285714286 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1762 - in_ausbildung: - - false - p_id: - - 1762 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2359.0 - soli_st_lohnst_m: - - 112.62857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1853.yaml deleted file mode 100644 index 3346256eac..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1853.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4412.828571428571 - ges_krankenv_zusatzbeitr_satz: - - 0.006500000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1853 - in_ausbildung: - - false - p_id: - - 1853 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1247.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1908.yaml deleted file mode 100644 index bf0e873619..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1908.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7311.471428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.009300000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1908 - in_ausbildung: - - false - p_id: - - 1908 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2321.0 - soli_st_lohnst_m: - - 108.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1999.yaml deleted file mode 100644 index 8c9ec9c535..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_1999.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3048.61 - ges_krankenv_zusatzbeitr_satz: - - 0.0076 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1999 - in_ausbildung: - - false - p_id: - - 1999 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 771.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2022.yaml deleted file mode 100644 index b52c1bfc05..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2022.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 186.17142857142855 - ges_krankenv_zusatzbeitr_satz: - - 0.0108 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2022 - in_ausbildung: - - false - p_id: - - 2022 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 20.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2208.yaml deleted file mode 100644 index bc5fc7f61d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2208.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7495.215833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.013300000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2208 - in_ausbildung: - - false - p_id: - - 2208 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2395.0 - soli_st_lohnst_m: - - 116.8575 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_225.yaml deleted file mode 100644 index 0e60b8b4b7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_225.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6003.833333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.008 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 225 - in_ausbildung: - - false - p_id: - - 225 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1851.0 - soli_st_lohnst_m: - - 52.16166666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2258.yaml deleted file mode 100644 index 44ab84b40f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2258.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3098.85 - ges_krankenv_zusatzbeitr_satz: - - 0.0138 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2258 - in_ausbildung: - - false - p_id: - - 2258 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 751.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2295.yaml deleted file mode 100644 index ac1c8a6e51..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2295.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 134.87 - ges_krankenv_zusatzbeitr_satz: - - 0.0086 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2295 - in_ausbildung: - - false - p_id: - - 2295 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_238.yaml deleted file mode 100644 index 23e38e7064..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_238.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3077.4 - ges_krankenv_zusatzbeitr_satz: - - 0.0067 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 238 - in_ausbildung: - - false - p_id: - - 238 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 748.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2400.yaml deleted file mode 100644 index abefe6bade..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2400.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2938.465 - ges_krankenv_zusatzbeitr_satz: - - 0.0103 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2400 - in_ausbildung: - - false - p_id: - - 2400 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - false -outputs: - lohnst_m: - - 381.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2416.yaml deleted file mode 100644 index a74be02dfa..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2416.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5887.885714285715 - ges_krankenv_zusatzbeitr_satz: - - 0.0147 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2416 - in_ausbildung: - - false - p_id: - - 2416 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1758.0 - soli_st_lohnst_m: - - 41.05714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2476.yaml deleted file mode 100644 index da924ab58b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2476.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7544.785714285715 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2476 - in_ausbildung: - - false - p_id: - - 2476 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2465.0 - soli_st_lohnst_m: - - 125.2714285714286 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_262.yaml deleted file mode 100644 index b8c527e69e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_262.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5905.285714285715 - ges_krankenv_zusatzbeitr_satz: - - 0.0124 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 262 - in_ausbildung: - - false - p_id: - - 262 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1803.0 - soli_st_lohnst_m: - - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2766.yaml deleted file mode 100644 index f100b82c73..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2766.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 99.17142857142856 - ges_krankenv_zusatzbeitr_satz: - - 0.014199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2766 - in_ausbildung: - - false - p_id: - - 2766 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 11.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2782.yaml deleted file mode 100644 index cc3ecc8ad5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2782.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5871.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0125 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2782 - in_ausbildung: - - false - p_id: - - 2782 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1753.0 - soli_st_lohnst_m: - - 40.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2836.yaml deleted file mode 100644 index c7761fdc27..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2836.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6070.115833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.0132 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2836 - in_ausbildung: - - false - p_id: - - 2836 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1866.0 - soli_st_lohnst_m: - - 53.97583333333333 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2886.yaml deleted file mode 100644 index a9560ffcc7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2886.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7525.357499999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0096 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2886 - in_ausbildung: - - false - p_id: - - 2886 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2465.0 - soli_st_lohnst_m: - - 125.29666666666668 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2945.yaml deleted file mode 100644 index 51e0c29a73..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2945.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3039.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2945 - in_ausbildung: - - false - p_id: - - 2945 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 731.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2946.yaml deleted file mode 100644 index c0fd94e1b0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_2946.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5923.221666666667 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2946 - in_ausbildung: - - false - p_id: - - 2946 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1819.0 - soli_st_lohnst_m: - - 48.36333333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_299.yaml deleted file mode 100644 index 6373c138a4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_299.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 25.36 - ges_krankenv_zusatzbeitr_satz: - - 0.0060999999999999995 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 299 - in_ausbildung: - - false - p_id: - - 299 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_318.yaml deleted file mode 100644 index 90b761f054..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_318.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1635.6428571428569 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 318 - in_ausbildung: - - false - p_id: - - 318 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 268.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_321.yaml deleted file mode 100644 index 227fb5eed7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_321.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4485.771428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 321 - in_ausbildung: - - false - p_id: - - 321 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1276.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_33.yaml deleted file mode 100644 index 2c8d585498..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_33.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1650.9857142857145 - ges_krankenv_zusatzbeitr_satz: - - 0.010700000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 33 - in_ausbildung: - - false - p_id: - - 33 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - false -outputs: - lohnst_m: - - 90.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_417.yaml deleted file mode 100644 index 5523b04db3..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_417.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4588.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0098 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 417 - in_ausbildung: - - false - p_id: - - 417 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1310.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_479.yaml deleted file mode 100644 index de84367ec6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_479.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 170.4 - ges_krankenv_zusatzbeitr_satz: - - 0.0141 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 479 - in_ausbildung: - - false - p_id: - - 479 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 18.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_519.yaml deleted file mode 100644 index ab519cb7c8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_519.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7332.599999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0116 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 519 - in_ausbildung: - - false - p_id: - - 519 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2346.0 - soli_st_lohnst_m: - - 111.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_522.yaml deleted file mode 100644 index 28e1acde47..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_522.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5997.257142857143 - ges_krankenv_zusatzbeitr_satz: - - 0.0138 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 522 - in_ausbildung: - - false - p_id: - - 522 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1801.0 - soli_st_lohnst_m: - - 46.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_618.yaml deleted file mode 100644 index e711b76377..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_618.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6001.071428571428 - ges_krankenv_zusatzbeitr_satz: - - 0.0074 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 618 - in_ausbildung: - - false - p_id: - - 618 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1809.0 - soli_st_lohnst_m: - - 47.14285714285714 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_620.yaml deleted file mode 100644 index 56de5134ff..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_620.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4424.4 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 620 - in_ausbildung: - - false - p_id: - - 620 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1250.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_651.yaml deleted file mode 100644 index 761b65fa19..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_651.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1618.1999999999998 - ges_krankenv_zusatzbeitr_satz: - - 0.0092 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 651 - in_ausbildung: - - false - p_id: - - 651 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 261.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_738.yaml deleted file mode 100644 index 9cd9871621..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_738.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4581.16 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 738 - in_ausbildung: - - false - p_id: - - 738 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1307.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_761.yaml deleted file mode 100644 index 563cedec18..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_761.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4388.243333333333 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 761 - in_ausbildung: - - false - p_id: - - 761 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1201.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_788.yaml deleted file mode 100644 index 0d9c76e97f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_788.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4518.591666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 788 - in_ausbildung: - - false - p_id: - - 788 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1288.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_798.yaml deleted file mode 100644 index 72bbdb9ac2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_798.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 143.27142857142857 - ges_krankenv_zusatzbeitr_satz: - - 0.010700000000000001 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 798 - in_ausbildung: - - false - p_id: - - 798 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 3.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_810.yaml deleted file mode 100644 index de56325d79..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_810.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1509.5141666666666 - ges_krankenv_zusatzbeitr_satz: - - 0.009399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 810 - in_ausbildung: - - false - p_id: - - 810 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 255.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_864.yaml deleted file mode 100644 index e15970ca20..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_864.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5862.53 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 864 - in_ausbildung: - - false - p_id: - - 864 - regulär_beschäftigt: - - true - steuerklasse: - - 1 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1280.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_867.yaml deleted file mode 100644 index 51ccaafdc0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_867.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 194.45416666666665 - ges_krankenv_zusatzbeitr_satz: - - 0.0087 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 867 - in_ausbildung: - - false - p_id: - - 867 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 21.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_883.yaml deleted file mode 100644 index b1868dd021..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_883.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3019.6714285714293 - ges_krankenv_zusatzbeitr_satz: - - 0.0147 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 883 - in_ausbildung: - - false - p_id: - - 883 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 720.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_885.yaml deleted file mode 100644 index e5a8751eee..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_885.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1597.49 - ges_krankenv_zusatzbeitr_satz: - - 0.0116 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 885 - in_ausbildung: - - false - p_id: - - 885 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 253.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_9.yaml deleted file mode 100644 index 265fc42fe6..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_9.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7505.94 - ges_krankenv_zusatzbeitr_satz: - - 0.012 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 9 - in_ausbildung: - - false - p_id: - - 9 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2419.0 - soli_st_lohnst_m: - - 119.72333333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_946.yaml deleted file mode 100644 index 05ee00dd8c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_946.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 227.07 - ges_krankenv_zusatzbeitr_satz: - - 0.0149 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 946 - in_ausbildung: - - false - p_id: - - 946 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 13.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnst/2021/hh_id_948.yaml deleted file mode 100644 index bb00a70c46..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2021/hh_id_948.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3147.6 - ges_krankenv_zusatzbeitr_satz: - - 0.013600000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 948 - in_ausbildung: - - false - p_id: - - 948 - regulär_beschäftigt: - - true - steuerklasse: - - 3 - wohnort_ost: - - false -outputs: - lohnst_m: - - 174.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1019.yaml deleted file mode 100644 index dbe0d99cc1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1019.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1461.0 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1019 - in_ausbildung: - - false - p_id: - - 1019 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 178.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1166.yaml deleted file mode 100644 index 6ba6dc92ee..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1166.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4581.860833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.012199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1166 - in_ausbildung: - - false - p_id: - - 1166 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1295.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1209.yaml deleted file mode 100644 index 61c547774c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1209.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6023.53 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1209 - in_ausbildung: - - false - p_id: - - 1209 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1839.0 - soli_st_lohnst_m: - - 50.76 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1305.yaml deleted file mode 100644 index b35c005e45..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1305.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4504.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1305 - in_ausbildung: - - false - p_id: - - 1305 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1218.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1364.yaml deleted file mode 100644 index 7bde7b9f3b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1364.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5890.971428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.013300000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1364 - in_ausbildung: - - false - p_id: - - 1364 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1789.0 - soli_st_lohnst_m: - - 44.78571428571428 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1473.yaml deleted file mode 100644 index fbbf84a149..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1473.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5989.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0075 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1473 - in_ausbildung: - - false - p_id: - - 1473 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1782.0 - soli_st_lohnst_m: - - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1519.yaml deleted file mode 100644 index c421e52bf8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1519.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6007.200000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0139 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1519 - in_ausbildung: - - false - p_id: - - 1519 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1783.0 - soli_st_lohnst_m: - - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1667.yaml deleted file mode 100644 index 31c5a8663a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1667.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 152.99999999999997 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1667 - in_ausbildung: - - false - p_id: - - 1667 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1770.yaml deleted file mode 100644 index c4c897c070..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1770.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1621.95 - ges_krankenv_zusatzbeitr_satz: - - 0.0104 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1770 - in_ausbildung: - - false - p_id: - - 1770 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 283.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1784.yaml deleted file mode 100644 index 79ce1eb846..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1784.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4582.43 - ges_krankenv_zusatzbeitr_satz: - - 0.0123 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1784 - in_ausbildung: - - false - p_id: - - 1784 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1289.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1881.yaml deleted file mode 100644 index 294157dd8b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1881.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4547.98 - ges_krankenv_zusatzbeitr_satz: - - 0.0089 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1881 - in_ausbildung: - - false - p_id: - - 1881 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1287.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1904.yaml deleted file mode 100644 index 2ea0bf6f7f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1904.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1512.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0129 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1904 - in_ausbildung: - - false - p_id: - - 1904 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 198.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1907.yaml deleted file mode 100644 index 93c4f223db..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1907.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 139.99 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1907 - in_ausbildung: - - false - p_id: - - 1907 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1918.yaml deleted file mode 100644 index 9c16757935..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_1918.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6012.0428571428565 - ges_krankenv_zusatzbeitr_satz: - - 0.0137 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1918 - in_ausbildung: - - false - p_id: - - 1918 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1785.0 - soli_st_lohnst_m: - - 44.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2099.yaml deleted file mode 100644 index 41da06986d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2099.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2987.7000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0097 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2099 - in_ausbildung: - - false - p_id: - - 2099 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 700.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2111.yaml deleted file mode 100644 index f6210740ea..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2111.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4500.68 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2111 - in_ausbildung: - - false - p_id: - - 2111 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1217.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2118.yaml deleted file mode 100644 index 005d7b9efc..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2118.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7352.099999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2118 - in_ausbildung: - - false - p_id: - - 2118 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2366.0 - soli_st_lohnst_m: - - 113.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2129.yaml deleted file mode 100644 index 0c7e41ef13..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2129.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 79.45 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2129 - in_ausbildung: - - false - p_id: - - 2129 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 8.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_224.yaml deleted file mode 100644 index 491ecc20b1..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_224.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7538.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0069 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 224 - in_ausbildung: - - false - p_id: - - 224 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2451.0 - soli_st_lohnst_m: - - 123.3 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_241.yaml deleted file mode 100644 index ca300da376..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_241.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 118.84285714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.0129 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 241 - in_ausbildung: - - false - p_id: - - 241 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 13.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2410.yaml deleted file mode 100644 index 76ee5c4f2d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2410.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1638.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0098 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2410 - in_ausbildung: - - false - p_id: - - 2410 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 289.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2423.yaml deleted file mode 100644 index d480b85dd4..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2423.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5988.849999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2423 - in_ausbildung: - - false - p_id: - - 2423 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1826.0 - soli_st_lohnst_m: - - 49.17666666666667 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2428.yaml deleted file mode 100644 index c47886a9dd..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2428.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7378.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2428 - in_ausbildung: - - false - p_id: - - 2428 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2381.0 - soli_st_lohnst_m: - - 115.2 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2439.yaml deleted file mode 100644 index 92cfb51c4f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2439.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1480.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0146 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2439 - in_ausbildung: - - false - p_id: - - 2439 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 186.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2447.yaml deleted file mode 100644 index 9eb98c2a42..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2447.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 183.9 - ges_krankenv_zusatzbeitr_satz: - - 0.011399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2447 - in_ausbildung: - - false - p_id: - - 2447 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 20.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2868.yaml deleted file mode 100644 index c6ca877b77..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2868.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6071.195833333334 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2868 - in_ausbildung: - - false - p_id: - - 2868 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1859.0 - soli_st_lohnst_m: - - 53.09333333333333 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2962.yaml deleted file mode 100644 index dbf0032fd8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_2962.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5895.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0134 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2962 - in_ausbildung: - - false - p_id: - - 2962 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1790.0 - soli_st_lohnst_m: - - 44.7 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_664.yaml deleted file mode 100644 index f6f1a0e59a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_664.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 66.55714285714285 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 664 - in_ausbildung: - - false - p_id: - - 664 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 7.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_688.yaml deleted file mode 100644 index 6afb960c52..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_688.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5878.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 688 - in_ausbildung: - - false - p_id: - - 688 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1790.0 - soli_st_lohnst_m: - - 44.88 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_720.yaml deleted file mode 100644 index 39d4006ee5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_720.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6084.329166666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0138 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 720 - in_ausbildung: - - false - p_id: - - 720 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1856.0 - soli_st_lohnst_m: - - 52.76583333333334 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_840.yaml deleted file mode 100644 index aeef88ef6c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_840.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3067.2000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0095 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 840 - in_ausbildung: - - false - p_id: - - 840 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 771.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_848.yaml deleted file mode 100644 index 7196d8f252..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_848.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 101.92583333333332 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 848 - in_ausbildung: - - false - p_id: - - 848 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnst/2022/hh_id_963.yaml deleted file mode 100644 index 3f9ed12d4c..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2022/hh_id_963.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1537.98 - ges_krankenv_zusatzbeitr_satz: - - 0.0106 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 963 - in_ausbildung: - - false - p_id: - - 963 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 208.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1019.yaml deleted file mode 100644 index 22a7634fc5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1019.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1461.0 - ges_krankenv_zusatzbeitr_satz: - - 0.008100000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1019 - in_ausbildung: - - false - p_id: - - 1019 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 154.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1166.yaml deleted file mode 100644 index 38776795a8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1166.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4581.860833333333 - ges_krankenv_zusatzbeitr_satz: - - 0.012199999999999999 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1166 - in_ausbildung: - - false - p_id: - - 1166 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1252.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1209.yaml deleted file mode 100644 index a7af7a2678..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1209.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6023.53 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1209 - in_ausbildung: - - false - p_id: - - 1209 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1784.0 - soli_st_lohnst_m: - - 38.36 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1305.yaml deleted file mode 100644 index c4d255697d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1305.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4504.5 - ges_krankenv_zusatzbeitr_satz: - - 0.0126 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1305 - in_ausbildung: - - false - p_id: - - 1305 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1175.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1364.yaml deleted file mode 100644 index 51c317c8d7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1364.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5890.971428571429 - ges_krankenv_zusatzbeitr_satz: - - 0.013300000000000001 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1364 - in_ausbildung: - - false - p_id: - - 1364 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1734.0 - soli_st_lohnst_m: - - 32.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1473.yaml deleted file mode 100644 index 441cd6e9b5..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1473.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5989.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0075 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1473 - in_ausbildung: - - false - p_id: - - 1473 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1726.0 - soli_st_lohnst_m: - - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1519.yaml deleted file mode 100644 index b2472c8ad9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1519.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6007.200000000001 - ges_krankenv_zusatzbeitr_satz: - - 0.0139 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1519 - in_ausbildung: - - false - p_id: - - 1519 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1726.0 - soli_st_lohnst_m: - - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1667.yaml deleted file mode 100644 index f705675a9a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1667.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 152.99999999999997 - ges_krankenv_zusatzbeitr_satz: - - 0.0070999999999999995 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1667 - in_ausbildung: - - false - p_id: - - 1667 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1770.yaml deleted file mode 100644 index 2e731c7d03..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1770.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1621.95 - ges_krankenv_zusatzbeitr_satz: - - 0.0104 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1770 - in_ausbildung: - - false - p_id: - - 1770 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 259.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1784.yaml deleted file mode 100644 index 067251f6d9..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1784.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4582.43 - ges_krankenv_zusatzbeitr_satz: - - 0.0123 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1784 - in_ausbildung: - - false - p_id: - - 1784 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1246.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1881.yaml deleted file mode 100644 index 54b7f8e74b..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1881.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4547.98 - ges_krankenv_zusatzbeitr_satz: - - 0.0089 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1881 - in_ausbildung: - - false - p_id: - - 1881 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1244.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1904.yaml deleted file mode 100644 index 855b28f4fc..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1904.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1512.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0129 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1904 - in_ausbildung: - - false - p_id: - - 1904 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 173.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1907.yaml deleted file mode 100644 index abb1aa9d5f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1907.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 139.99 - ges_krankenv_zusatzbeitr_satz: - - 0.0105 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 1907 - in_ausbildung: - - false - p_id: - - 1907 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1918.yaml deleted file mode 100644 index 97a7f2256a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_1918.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6012.0428571428565 - ges_krankenv_zusatzbeitr_satz: - - 0.0137 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 1918 - in_ausbildung: - - false - p_id: - - 1918 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1728.0 - soli_st_lohnst_m: - - 31.757142857142853 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2099.yaml deleted file mode 100644 index e8c3bdc4ea..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2099.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 2987.7000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0097 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2099 - in_ausbildung: - - false - p_id: - - 2099 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 667.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2111.yaml deleted file mode 100644 index 116e9b3d5d..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2111.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 4500.68 - ges_krankenv_zusatzbeitr_satz: - - 0.0118 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2111 - in_ausbildung: - - false - p_id: - - 2111 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1174.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2118.yaml deleted file mode 100644 index 432468981f..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2118.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7352.099999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.01 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2118 - in_ausbildung: - - false - p_id: - - 2118 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2296.0 - soli_st_lohnst_m: - - 99.3 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2129.yaml deleted file mode 100644 index 0c7e41ef13..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2129.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 79.45 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2129 - in_ausbildung: - - false - p_id: - - 2129 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 8.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_224.yaml deleted file mode 100644 index 65d9ecd9f7..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_224.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7538.7 - ges_krankenv_zusatzbeitr_satz: - - 0.0069 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 224 - in_ausbildung: - - false - p_id: - - 224 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 2379.0 - soli_st_lohnst_m: - - 108.9 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_241.yaml deleted file mode 100644 index ca300da376..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_241.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 118.84285714285714 - ges_krankenv_zusatzbeitr_satz: - - 0.0129 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 241 - in_ausbildung: - - false - p_id: - - 241 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 13.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2410.yaml deleted file mode 100644 index b4a6a11236..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2410.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1638.3 - ges_krankenv_zusatzbeitr_satz: - - 0.0098 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2410 - in_ausbildung: - - false - p_id: - - 2410 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 266.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2423.yaml deleted file mode 100644 index 75229498d8..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2423.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5988.849999999999 - ges_krankenv_zusatzbeitr_satz: - - 0.0073 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2423 - in_ausbildung: - - false - p_id: - - 2423 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1771.0 - soli_st_lohnst_m: - - 36.8 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2428.yaml deleted file mode 100644 index ffb88717f0..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2428.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 7378.2 - ges_krankenv_zusatzbeitr_satz: - - 0.0062 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2428 - in_ausbildung: - - false - p_id: - - 2428 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 2311.0 - soli_st_lohnst_m: - - 101.1 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2439.yaml deleted file mode 100644 index 5a773ee613..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2439.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1480.8 - ges_krankenv_zusatzbeitr_satz: - - 0.0146 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2439 - in_ausbildung: - - false - p_id: - - 2439 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - false -outputs: - lohnst_m: - - 161.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2447.yaml deleted file mode 100644 index 9eb98c2a42..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2447.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 183.9 - ges_krankenv_zusatzbeitr_satz: - - 0.011399999999999999 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 2447 - in_ausbildung: - - false - p_id: - - 2447 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 20.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2868.yaml deleted file mode 100644 index a4b86e9dee..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2868.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6071.195833333334 - ges_krankenv_zusatzbeitr_satz: - - 0.0131 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2868 - in_ausbildung: - - false - p_id: - - 2868 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - true -outputs: - lohnst_m: - - 1803.0 - soli_st_lohnst_m: - - 40.6775 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2962.yaml deleted file mode 100644 index 657df9be66..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_2962.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5895.0 - ges_krankenv_zusatzbeitr_satz: - - 0.0134 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 2962 - in_ausbildung: - - false - p_id: - - 2962 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1736.0 - soli_st_lohnst_m: - - 32.4 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_664.yaml deleted file mode 100644 index f6f1a0e59a..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_664.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 66.55714285714285 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 664 - in_ausbildung: - - false - p_id: - - 664 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 7.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_688.yaml deleted file mode 100644 index cf6744f1f2..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_688.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 5878.1 - ges_krankenv_zusatzbeitr_satz: - - 0.0078000000000000005 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 688 - in_ausbildung: - - false - p_id: - - 688 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1735.0 - soli_st_lohnst_m: - - 32.58 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_720.yaml deleted file mode 100644 index b2b0111887..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_720.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 6084.329166666666 - ges_krankenv_zusatzbeitr_satz: - - 0.0138 - ges_pflegev_zusatz_kinderlos: - - true - ges_pflegev_hat_kinder: - - false - hh_id: - - 720 - in_ausbildung: - - false - p_id: - - 720 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 1800.0 - soli_st_lohnst_m: - - 40.310833333333335 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_840.yaml deleted file mode 100644 index 623abe75af..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_840.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 3067.2000000000003 - ges_krankenv_zusatzbeitr_satz: - - 0.0095 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 840 - in_ausbildung: - - false - p_id: - - 840 - regulär_beschäftigt: - - true - steuerklasse: - - 6 - wohnort_ost: - - false -outputs: - lohnst_m: - - 736.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_848.yaml deleted file mode 100644 index 7196d8f252..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_848.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 101.92583333333332 - ges_krankenv_zusatzbeitr_satz: - - 0.0088 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 848 - in_ausbildung: - - false - p_id: - - 848 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 0.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnst/2023/hh_id_963.yaml deleted file mode 100644 index d7cfeae15e..0000000000 --- a/src/_gettsim_tests/test_data/lohnst/2023/hh_id_963.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - assumed: - p_id_elternteil_1: -1 - p_id_elternteil_2: -1 - provided: - alter: - - 25 - arbeitsstunden_w: - - 40.0 - bruttolohn_m: - - 1537.98 - ges_krankenv_zusatzbeitr_satz: - - 0.0106 - ges_pflegev_zusatz_kinderlos: - - false - ges_pflegev_hat_kinder: - - false - hh_id: - - 963 - in_ausbildung: - - false - p_id: - - 963 - regulär_beschäftigt: - - true - steuerklasse: - - 5 - wohnort_ost: - - true -outputs: - lohnst_m: - - 183.0 - soli_st_lohnst_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml new file mode 100644 index 0000000000..bb6c73eab5 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1045 + p_id: + - 1045 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1616.0142857142855 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 309.0 + lohnsteuer__betrag_soli_m: + - 17.014285714285716 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml new file mode 100644 index 0000000000..53289969fd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1051 + p_id: + - 1051 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1625.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0111 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 347.0 + lohnsteuer__betrag_soli_m: + - 18.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml new file mode 100644 index 0000000000..87aaeb4434 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1081 + p_id: + - 1081 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1645.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 321.0 + lohnsteuer__betrag_soli_m: + - 17.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml new file mode 100644 index 0000000000..4f17ffbd25 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1134 + p_id: + - 1134 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7339.585 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2511.0 + lohnsteuer__betrag_soli_m: + - 138.1325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml new file mode 100644 index 0000000000..04e792b857 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 121 + p_id: + - 121 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5890.408333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1879.0 + lohnsteuer__betrag_soli_m: + - 103.39083333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml new file mode 100644 index 0000000000..43a8fa77f4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1214 + p_id: + - 1214 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4583.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0091 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1388.0 + lohnsteuer__betrag_soli_m: + - 76.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml new file mode 100644 index 0000000000..5a1f737d93 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1219 + p_id: + - 1219 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6027.814285714286 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1981.0 + lohnsteuer__betrag_soli_m: + - 108.98571428571428 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml new file mode 100644 index 0000000000..d44b695faa --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1435 + p_id: + - 1435 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6083.808333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0060999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1973.0 + lohnsteuer__betrag_soli_m: + - 108.5375 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml new file mode 100644 index 0000000000..8d6856d5e7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1462 + p_id: + - 1462 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4618.82 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1372.0 + lohnsteuer__betrag_soli_m: + - 75.48 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml new file mode 100644 index 0000000000..1382de0e34 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1476 + p_id: + - 1476 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2957.9541666666664 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0108 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 754.0 + lohnsteuer__betrag_soli_m: + - 41.52 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml new file mode 100644 index 0000000000..7a05ed1c64 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1555 + p_id: + - 1555 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3159.12 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 252.0 + lohnsteuer__betrag_soli_m: + - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml new file mode 100644 index 0000000000..56bcc58927 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1627 + p_id: + - 1627 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6069.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1547.0 + lohnsteuer__betrag_soli_m: + - 84.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml new file mode 100644 index 0000000000..c413bd59ed --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1793 + p_id: + - 1793 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5900.91 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0102 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1913.0 + lohnsteuer__betrag_soli_m: + - 105.24 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml new file mode 100644 index 0000000000..6b9a78f86b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1796 + p_id: + - 1796 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7528.871666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2587.0 + lohnsteuer__betrag_soli_m: + - 142.30333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml new file mode 100644 index 0000000000..fdd69acf04 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1915 + p_id: + - 1915 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6044.18 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0066 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1960.0 + lohnsteuer__betrag_soli_m: + - 107.81 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml new file mode 100644 index 0000000000..59f02bba67 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1982 + p_id: + - 1982 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2966.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0116 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 756.0 + lohnsteuer__betrag_soli_m: + - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml new file mode 100644 index 0000000000..f400e2cfac --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2042 + p_id: + - 2042 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 77.52857142857142 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 8.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml new file mode 100644 index 0000000000..3e31f12742 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2174 + p_id: + - 2174 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1631.8508333333332 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 349.0 + lohnsteuer__betrag_soli_m: + - 19.2225 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml new file mode 100644 index 0000000000..e86f773e0f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2224 + p_id: + - 2224 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4384.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0074 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1317.0 + lohnsteuer__betrag_soli_m: + - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml new file mode 100644 index 0000000000..adb182753d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2451 + p_id: + - 2451 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7532.46 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0066 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2601.0 + lohnsteuer__betrag_soli_m: + - 143.08 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml new file mode 100644 index 0000000000..c69eaf1390 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2552 + p_id: + - 2552 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1575.0857142857142 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 293.0 + lohnsteuer__betrag_soli_m: + - 16.114285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml new file mode 100644 index 0000000000..4a63d34cb9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2593 + p_id: + - 2593 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6051.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0101 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1936.0 + lohnsteuer__betrag_soli_m: + - 106.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml new file mode 100644 index 0000000000..eccad32b31 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2601 + p_id: + - 2601 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 40.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml new file mode 100644 index 0000000000..7877ac0187 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2639 + p_id: + - 2639 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3018.7714285714283 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0074 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 814.0 + lohnsteuer__betrag_soli_m: + - 44.74285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml new file mode 100644 index 0000000000..fb8dd575ee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2726 + p_id: + - 2726 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7493.541666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2559.0 + lohnsteuer__betrag_soli_m: + - 140.795 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml new file mode 100644 index 0000000000..cc44422bd3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2732 + p_id: + - 2732 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4471.500000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1347.0 + lohnsteuer__betrag_soli_m: + - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml new file mode 100644 index 0000000000..052f82df7f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2861 + p_id: + - 2861 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4617.042857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0116 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1365.0 + lohnsteuer__betrag_soli_m: + - 75.08571428571427 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml new file mode 100644 index 0000000000..084a8e72e9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2924 + p_id: + - 2924 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1484.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011699999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 294.0 + lohnsteuer__betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml new file mode 100644 index 0000000000..e8e759e04b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 400 + p_id: + - 400 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4425.514285714285 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0091 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1326.0 + lohnsteuer__betrag_soli_m: + - 72.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml new file mode 100644 index 0000000000..f93d6b8b93 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 470 + p_id: + - 470 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 45.342857142857135 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml new file mode 100644 index 0000000000..a32ee7882d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 561 + p_id: + - 561 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4493.36 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1357.0 + lohnsteuer__betrag_soli_m: + - 74.68 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml new file mode 100644 index 0000000000..47caa02c55 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 583 + p_id: + - 583 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7448.75 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2553.0 + lohnsteuer__betrag_soli_m: + - 140.45 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml new file mode 100644 index 0000000000..b9fb094bd6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 72 + p_id: + - 72 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7543.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2601.0 + lohnsteuer__betrag_soli_m: + - 143.05714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml new file mode 100644 index 0000000000..21415667cd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 736 + p_id: + - 736 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1612.88 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 343.0 + lohnsteuer__betrag_soli_m: + - 18.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml new file mode 100644 index 0000000000..bba671f463 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 76 + p_id: + - 76 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2924.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 4 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0076 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 435.0 + lohnsteuer__betrag_soli_m: + - 23.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml new file mode 100644 index 0000000000..2744a1b2c6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 765 + p_id: + - 765 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6033.59 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0083 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1989.0 + lohnsteuer__betrag_soli_m: + - 109.39 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml new file mode 100644 index 0000000000..f90da96b88 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 769 + p_id: + - 769 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4492.9325 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011699999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1316.0 + lohnsteuer__betrag_soli_m: + - 72.4075 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml new file mode 100644 index 0000000000..3330c7cb9d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 786 + p_id: + - 786 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 241.62857142857143 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 27.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml new file mode 100644 index 0000000000..b6b7b0e864 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 790 + p_id: + - 790 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5937.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0086 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1926.0 + lohnsteuer__betrag_soli_m: + - 105.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml new file mode 100644 index 0000000000..e25929c45d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 802 + p_id: + - 802 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4625.3275 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0108 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1406.0 + lohnsteuer__betrag_soli_m: + - 77.37583333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml new file mode 100644 index 0000000000..5ea891a3e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 830 + p_id: + - 830 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1478.27 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 291.0 + lohnsteuer__betrag_soli_m: + - 16.03 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml new file mode 100644 index 0000000000..cd8274258c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 856 + p_id: + - 856 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1520.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 271.0 + lohnsteuer__betrag_soli_m: + - 14.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml new file mode 100644 index 0000000000..351f07e1b9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 857 + p_id: + - 857 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 97.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml new file mode 100644 index 0000000000..03f2e3f03e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 891 + p_id: + - 891 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1595.7058333333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 337.0 + lohnsteuer__betrag_soli_m: + - 18.5625 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml new file mode 100644 index 0000000000..cd787f149b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 925 + p_id: + - 925 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1515.42 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0102 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 270.0 + lohnsteuer__betrag_soli_m: + - 14.85 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml new file mode 100644 index 0000000000..7d068f788b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1000 + p_id: + - 1000 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4483.499999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0098 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1336.0 + lohnsteuer__betrag_soli_m: + - 73.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml new file mode 100644 index 0000000000..f625231ee2 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1086 + p_id: + - 1086 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 68.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 7.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml new file mode 100644 index 0000000000..b0e29afbcb --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1115 + p_id: + - 1115 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1493.4658333333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 251.0 + lohnsteuer__betrag_soli_m: + - 13.850833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml new file mode 100644 index 0000000000..fd73cdc894 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1133 + p_id: + - 1133 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6057.2425 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1955.0 + lohnsteuer__betrag_soli_m: + - 107.56166666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml new file mode 100644 index 0000000000..8efbfa02a3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1175 + p_id: + - 1175 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1530.66 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 266.0 + lohnsteuer__betrag_soli_m: + - 14.65 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml new file mode 100644 index 0000000000..5efaabb08e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 123 + p_id: + - 123 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5882.06 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1856.0 + lohnsteuer__betrag_soli_m: + - 102.09 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml new file mode 100644 index 0000000000..67df046330 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1281 + p_id: + - 1281 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6033.557142857142 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0084 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1931.0 + lohnsteuer__betrag_soli_m: + - 106.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml new file mode 100644 index 0000000000..1081e4338f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1335 + p_id: + - 1335 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1575.08 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 284.0 + lohnsteuer__betrag_soli_m: + - 15.62 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml new file mode 100644 index 0000000000..885904485d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1367 + p_id: + - 1367 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 217.17 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 24.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml new file mode 100644 index 0000000000..53e4c39cb6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1532 + p_id: + - 1532 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6006.257142857144 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1915.0 + lohnsteuer__betrag_soli_m: + - 105.34285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml new file mode 100644 index 0000000000..8f333473be --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1700 + p_id: + - 1700 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1596.27 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 292.0 + lohnsteuer__betrag_soli_m: + - 16.08 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml new file mode 100644 index 0000000000..2871108bad --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1705 + p_id: + - 1705 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4566.9925 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1368.0 + lohnsteuer__betrag_soli_m: + - 75.27666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml new file mode 100644 index 0000000000..a4e37ae059 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1822 + p_id: + - 1822 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1468.05 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 278.0 + lohnsteuer__betrag_soli_m: + - 15.29 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml new file mode 100644 index 0000000000..19ef0e1278 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1958 + p_id: + - 1958 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3028.37 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 807.0 + lohnsteuer__betrag_soli_m: + - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml new file mode 100644 index 0000000000..ef9fad1860 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2065 + p_id: + - 2065 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4603.77 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011200000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1377.0 + lohnsteuer__betrag_soli_m: + - 75.76 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml new file mode 100644 index 0000000000..a890795d83 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2151 + p_id: + - 2151 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1664.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 355.0 + lohnsteuer__betrag_soli_m: + - 19.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml new file mode 100644 index 0000000000..9fa297d152 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2220 + p_id: + - 2220 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1649.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 313.0 + lohnsteuer__betrag_soli_m: + - 17.099999999999998 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml new file mode 100644 index 0000000000..82c11515b2 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2289 + p_id: + - 2289 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5871.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0066 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1849.0 + lohnsteuer__betrag_soli_m: + - 101.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml new file mode 100644 index 0000000000..a8ac5a271c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2358 + p_id: + - 2358 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6011.990000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1901.0 + lohnsteuer__betrag_soli_m: + - 104.56416666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml new file mode 100644 index 0000000000..d9d668a24a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2396 + p_id: + - 2396 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4525.457142857143 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1353.0 + lohnsteuer__betrag_soli_m: + - 74.44285714285715 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml new file mode 100644 index 0000000000..a16efd094b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2645 + p_id: + - 2645 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1494.6 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0097 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 288.0 + lohnsteuer__betrag_soli_m: + - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml new file mode 100644 index 0000000000..7a7bc30c1d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2693 + p_id: + - 2693 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1560.194166666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 278.0 + lohnsteuer__betrag_soli_m: + - 15.299166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml new file mode 100644 index 0000000000..ad8a7b498d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2724 + p_id: + - 2724 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 99.36 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011699999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml new file mode 100644 index 0000000000..596905b412 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2744 + p_id: + - 2744 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6066.561666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0104 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1977.0 + lohnsteuer__betrag_soli_m: + - 108.77166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml new file mode 100644 index 0000000000..4472b5230a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2932 + p_id: + - 2932 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4521.870833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1312.0 + lohnsteuer__betrag_soli_m: + - 72.17333333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml new file mode 100644 index 0000000000..9e37ae5821 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2961 + p_id: + - 2961 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4451.304166666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0115 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1284.0 + lohnsteuer__betrag_soli_m: + - 70.67 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml new file mode 100644 index 0000000000..481a13781c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 307 + p_id: + - 307 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 206.74285714285716 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 23.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml new file mode 100644 index 0000000000..21fe0b921a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 435 + p_id: + - 435 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5911.495 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0086 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1866.0 + lohnsteuer__betrag_soli_m: + - 102.66666666666669 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml new file mode 100644 index 0000000000..95d8dc76fe --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 444 + p_id: + - 444 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3126.98 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 809.0 + lohnsteuer__betrag_soli_m: + - 44.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml new file mode 100644 index 0000000000..3dbcb7239e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 583 + p_id: + - 583 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5930.696666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1918.0 + lohnsteuer__betrag_soli_m: + - 105.49 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml new file mode 100644 index 0000000000..605bf0bf7d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 699 + p_id: + - 699 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4523.385 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1354.0 + lohnsteuer__betrag_soli_m: + - 74.49249999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml new file mode 100644 index 0000000000..8dce83450b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 765 + p_id: + - 765 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7536.900000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2542.0 + lohnsteuer__betrag_soli_m: + - 139.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml new file mode 100644 index 0000000000..23a0a0386a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 779 + p_id: + - 779 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3146.6825000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0113 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 809.0 + lohnsteuer__betrag_soli_m: + - 44.5225 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml new file mode 100644 index 0000000000..89c37858f3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 807 + p_id: + - 807 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7434.730833333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0113 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2550.0 + lohnsteuer__betrag_soli_m: + - 140.29083333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml new file mode 100644 index 0000000000..c96e4187af --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 821 + p_id: + - 821 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3143.8714285714286 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 808.0 + lohnsteuer__betrag_soli_m: + - 44.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml new file mode 100644 index 0000000000..aa2de687ee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 898 + p_id: + - 898 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1657.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0069 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 353.0 + lohnsteuer__betrag_soli_m: + - 19.41 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml new file mode 100644 index 0000000000..372cc881b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 9 + p_id: + - 9 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5947.886666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1875.0 + lohnsteuer__betrag_soli_m: + - 103.175 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml new file mode 100644 index 0000000000..2d0701b3c5 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 950 + p_id: + - 950 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 69.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml new file mode 100644 index 0000000000..965296ff2b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 965 + p_id: + - 965 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4586.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0104 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1376.0 + lohnsteuer__betrag_soli_m: + - 75.60000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml new file mode 100644 index 0000000000..0480f1bf61 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 968 + p_id: + - 968 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4500.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1303.0 + lohnsteuer__betrag_soli_m: + - 71.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml new file mode 100644 index 0000000000..7c18d5799d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1019 + p_id: + - 1019 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4512.942857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0146 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1324.0 + lohnsteuer__betrag_soli_m: + - 72.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml new file mode 100644 index 0000000000..557101d77b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1088 + p_id: + - 1088 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1502.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0075 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 285.0 + lohnsteuer__betrag_soli_m: + - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml new file mode 100644 index 0000000000..58de98ce42 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1134 + p_id: + - 1134 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 168.74 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0096 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 19.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml new file mode 100644 index 0000000000..57fe7b979c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1164 + p_id: + - 1164 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4541.228571428571 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0124 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1339.0 + lohnsteuer__betrag_soli_m: + - 73.67142857142858 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml new file mode 100644 index 0000000000..9b24c4a14b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1279 + p_id: + - 1279 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6067.799999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1906.0 + lohnsteuer__betrag_soli_m: + - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml new file mode 100644 index 0000000000..7eb7b72e79 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 146 + p_id: + - 146 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2943.71 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0077 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 734.0 + lohnsteuer__betrag_soli_m: + - 40.37 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml new file mode 100644 index 0000000000..9957a42e07 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1503 + p_id: + - 1503 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2926.5857142857144 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006999999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 768.0 + lohnsteuer__betrag_soli_m: + - 42.25714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml new file mode 100644 index 0000000000..73535db3cd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 151 + p_id: + - 151 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5880.86 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0132 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1865.0 + lohnsteuer__betrag_soli_m: + - 102.58 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml new file mode 100644 index 0000000000..32d87d71e3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1532 + p_id: + - 1532 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6083.400000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1908.0 + lohnsteuer__betrag_soli_m: + - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml new file mode 100644 index 0000000000..7a613654cb --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1549 + p_id: + - 1549 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1582.96 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml new file mode 100644 index 0000000000..6dca57111f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1615 + p_id: + - 1615 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3150.6 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 844.0 + lohnsteuer__betrag_soli_m: + - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml new file mode 100644 index 0000000000..4390747010 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1705 + p_id: + - 1705 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7352.785 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0111 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2433.0 + lohnsteuer__betrag_soli_m: + - 133.865 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml new file mode 100644 index 0000000000..94964730c3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1788 + p_id: + - 1788 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6034.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1898.0 + lohnsteuer__betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml new file mode 100644 index 0000000000..7e98da24ee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1841 + p_id: + - 1841 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3046.2000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0146 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 797.0 + lohnsteuer__betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml new file mode 100644 index 0000000000..bff10006b0 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1866 + p_id: + - 1866 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7458.8425 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2515.0 + lohnsteuer__betrag_soli_m: + - 138.32916666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml new file mode 100644 index 0000000000..989e94288c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1878 + p_id: + - 1878 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 170.51666666666668 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 7.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml new file mode 100644 index 0000000000..c176b0ce85 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1923 + p_id: + - 1923 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.728571428572 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1923.0 + lohnsteuer__betrag_soli_m: + - 105.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml new file mode 100644 index 0000000000..2981cdb6f6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1945 + p_id: + - 1945 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5930.400000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1900.0 + lohnsteuer__betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml new file mode 100644 index 0000000000..98da3ce4df --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2005 + p_id: + - 2005 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 127.94 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0147 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 14.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml new file mode 100644 index 0000000000..8b607928c8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2151 + p_id: + - 2151 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 79.07142857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0074 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 9.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml new file mode 100644 index 0000000000..26c156438c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2177 + p_id: + - 2177 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5933.099999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1885.0 + lohnsteuer__betrag_soli_m: + - 103.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml new file mode 100644 index 0000000000..4d12079dd9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2226 + p_id: + - 2226 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1553.5424999999998 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.015 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 269.0 + lohnsteuer__betrag_soli_m: + - 14.804166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml new file mode 100644 index 0000000000..caa11d3125 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2293 + p_id: + - 2293 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3013.3058333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011699999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 790.0 + lohnsteuer__betrag_soli_m: + - 43.45 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml new file mode 100644 index 0000000000..85743686f4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2512 + p_id: + - 2512 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1513.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0092 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 289.0 + lohnsteuer__betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml new file mode 100644 index 0000000000..30a99e45b3 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 266 + p_id: + - 266 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5958.49 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0144 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1852.0 + lohnsteuer__betrag_soli_m: + - 101.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml new file mode 100644 index 0000000000..0ea8046909 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2677 + p_id: + - 2677 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5940.009999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0124 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1860.0 + lohnsteuer__betrag_soli_m: + - 102.30416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml new file mode 100644 index 0000000000..b0acb46c00 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2729 + p_id: + - 2729 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.06 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013600000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1870.0 + lohnsteuer__betrag_soli_m: + - 102.87 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml new file mode 100644 index 0000000000..3e5f865474 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2881 + p_id: + - 2881 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7491.471428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2554.0 + lohnsteuer__betrag_soli_m: + - 140.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml new file mode 100644 index 0000000000..d04002fc74 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2918 + p_id: + - 2918 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 247.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 27.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml new file mode 100644 index 0000000000..7914757a9e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2934 + p_id: + - 2934 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7380.342857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011699999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2444.0 + lohnsteuer__betrag_soli_m: + - 134.39999999999998 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml new file mode 100644 index 0000000000..f58a5e0aba --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2956 + p_id: + - 2956 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7320.214285714285 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2457.0 + lohnsteuer__betrag_soli_m: + - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml new file mode 100644 index 0000000000..14229d5492 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2974 + p_id: + - 2974 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 106.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml new file mode 100644 index 0000000000..b315c2ae5a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2991 + p_id: + - 2991 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7449.2825 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0137 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2487.0 + lohnsteuer__betrag_soli_m: + - 136.785 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml new file mode 100644 index 0000000000..56986f1e03 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 30 + p_id: + - 30 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4555.81 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013500000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1343.0 + lohnsteuer__betrag_soli_m: + - 73.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml new file mode 100644 index 0000000000..3fd7498476 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 416 + p_id: + - 416 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1624.763333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 333.0 + lohnsteuer__betrag_soli_m: + - 18.3425 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml new file mode 100644 index 0000000000..7499a11d9c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 455 + p_id: + - 455 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7401.342857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2458.0 + lohnsteuer__betrag_soli_m: + - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml new file mode 100644 index 0000000000..2b611c7265 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 496 + p_id: + - 496 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1526.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 294.0 + lohnsteuer__betrag_soli_m: + - 16.22 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml new file mode 100644 index 0000000000..a3a86d4c0a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 506 + p_id: + - 506 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7485.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0089 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1446.0 + lohnsteuer__betrag_soli_m: + - 79.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml new file mode 100644 index 0000000000..c0906ff229 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 528 + p_id: + - 528 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1582.72 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0143 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 316.0 + lohnsteuer__betrag_soli_m: + - 17.43 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml new file mode 100644 index 0000000000..52cb5af368 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 568 + p_id: + - 568 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 52.25 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 5.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml new file mode 100644 index 0000000000..3464aaf6c2 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 575 + p_id: + - 575 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2989.045 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0084 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 785.0 + lohnsteuer__betrag_soli_m: + - 43.20666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml new file mode 100644 index 0000000000..9cd2afe883 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 588 + p_id: + - 588 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5868.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0123 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1825.0 + lohnsteuer__betrag_soli_m: + - 100.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml new file mode 100644 index 0000000000..e63ee93fb1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 659 + p_id: + - 659 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4579.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1351.0 + lohnsteuer__betrag_soli_m: + - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml new file mode 100644 index 0000000000..ac8a445eed --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 743 + p_id: + - 743 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4563.1475 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1344.0 + lohnsteuer__betrag_soli_m: + - 73.92916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml new file mode 100644 index 0000000000..a5bbfa80b7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 881 + p_id: + - 881 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3096.6 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 821.0 + lohnsteuer__betrag_soli_m: + - 45.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml new file mode 100644 index 0000000000..9e1f54f863 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 910 + p_id: + - 910 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2987.71 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0095 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 783.0 + lohnsteuer__betrag_soli_m: + - 43.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml new file mode 100644 index 0000000000..47f45f2cea --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 933 + p_id: + - 933 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1647.428571428571 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 306.0 + lohnsteuer__betrag_soli_m: + - 16.799999999999997 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml new file mode 100644 index 0000000000..e3037ae611 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 996 + p_id: + - 996 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 93.865 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 10.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml new file mode 100644 index 0000000000..4532f578d8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1159 + p_id: + - 1159 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 163.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 6.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml new file mode 100644 index 0000000000..23451bf749 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1213 + p_id: + - 1213 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3146.2450000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 799.0 + lohnsteuer__betrag_soli_m: + - 43.97666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml new file mode 100644 index 0000000000..f7ed9b7cbd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 130 + p_id: + - 130 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4388.33 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1233.0 + lohnsteuer__betrag_soli_m: + - 67.85 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml new file mode 100644 index 0000000000..27b4976759 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1314 + p_id: + - 1314 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 182.92583333333332 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 8.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml new file mode 100644 index 0000000000..49e5abed0c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 152 + p_id: + - 152 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7371.771428571428 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2481.0 + lohnsteuer__betrag_soli_m: + - 136.45714285714288 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml new file mode 100644 index 0000000000..0ae7fc4012 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1632 + p_id: + - 1632 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4440.64 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1252.0 + lohnsteuer__betrag_soli_m: + - 68.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml new file mode 100644 index 0000000000..edb0072c68 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1727 + p_id: + - 1727 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4541.09 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013500000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1323.0 + lohnsteuer__betrag_soli_m: + - 72.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml new file mode 100644 index 0000000000..86c8cfc6d7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 174 + p_id: + - 174 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7360.929166666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2423.0 + lohnsteuer__betrag_soli_m: + - 133.27416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml new file mode 100644 index 0000000000..2f08ffb99c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1786 + p_id: + - 1786 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6056.13 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0139 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1887.0 + lohnsteuer__betrag_soli_m: + - 103.81 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml new file mode 100644 index 0000000000..f435a79bd1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1802 + p_id: + - 1802 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1687.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0095 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 314.0 + lohnsteuer__betrag_soli_m: + - 17.27 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml new file mode 100644 index 0000000000..7baf3de8b6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 184 + p_id: + - 184 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6010.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0111 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1899.0 + lohnsteuer__betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml new file mode 100644 index 0000000000..059d361422 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1935 + p_id: + - 1935 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4563.08 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1304.0 + lohnsteuer__betrag_soli_m: + - 71.77 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml new file mode 100644 index 0000000000..38fa065a7a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2098 + p_id: + - 2098 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1597.79 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011200000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 315.0 + lohnsteuer__betrag_soli_m: + - 17.37 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml new file mode 100644 index 0000000000..8cf2c71d0b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2156 + p_id: + - 2156 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2946.0857142857144 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0066 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 730.0 + lohnsteuer__betrag_soli_m: + - 40.15714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml new file mode 100644 index 0000000000..73fd905b52 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2186 + p_id: + - 2186 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7371.23 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0147 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2414.0 + lohnsteuer__betrag_soli_m: + - 132.77 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml new file mode 100644 index 0000000000..31300b695e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2395 + p_id: + - 2395 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2954.142857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0069 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 766.0 + lohnsteuer__betrag_soli_m: + - 42.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml new file mode 100644 index 0000000000..96ce9f4c24 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2491 + p_id: + - 2491 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.8425 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 743.0 + lohnsteuer__betrag_soli_m: + - 40.8875 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml new file mode 100644 index 0000000000..c5033f3dee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2575 + p_id: + - 2575 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7519.978333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0075 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2489.0 + lohnsteuer__betrag_soli_m: + - 136.945 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml new file mode 100644 index 0000000000..ecd4467305 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2649 + p_id: + - 2649 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1662.4191666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006999999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 305.0 + lohnsteuer__betrag_soli_m: + - 16.775000000000002 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml new file mode 100644 index 0000000000..d732cc3389 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2720 + p_id: + - 2720 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4467.29 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0143 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1252.0 + lohnsteuer__betrag_soli_m: + - 68.87 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml new file mode 100644 index 0000000000..2b35d1cbfc --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2828 + p_id: + - 2828 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 105.8142857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 12.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml new file mode 100644 index 0000000000..38a6307323 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2904 + p_id: + - 2904 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7479.557142857143 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0132 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2025.0 + lohnsteuer__betrag_soli_m: + - 111.38571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml new file mode 100644 index 0000000000..f649d32b9f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2999 + p_id: + - 2999 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5995.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013500000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1888.0 + lohnsteuer__betrag_soli_m: + - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml new file mode 100644 index 0000000000..7c9ab8384c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 315 + p_id: + - 315 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7479.900000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0108 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2522.0 + lohnsteuer__betrag_soli_m: + - 138.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml new file mode 100644 index 0000000000..c97aa6f4be --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 375 + p_id: + - 375 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3004.2000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0076 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 786.0 + lohnsteuer__betrag_soli_m: + - 43.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml new file mode 100644 index 0000000000..bd9575b0e9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 417 + p_id: + - 417 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1521.3100000000002 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0139 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 249.0 + lohnsteuer__betrag_soli_m: + - 13.731666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml new file mode 100644 index 0000000000..14149c61fb --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 559 + p_id: + - 559 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 72.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0128 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml new file mode 100644 index 0000000000..e1e5d5e67e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 624 + p_id: + - 624 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5990.524166666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1851.0 + lohnsteuer__betrag_soli_m: + - 101.8325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml new file mode 100644 index 0000000000..4b9599c372 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 791 + p_id: + - 791 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1689.428571428571 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 351.0 + lohnsteuer__betrag_soli_m: + - 19.328571428571426 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml new file mode 100644 index 0000000000..427ca70006 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 796 + p_id: + - 796 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7317.895 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2451.0 + lohnsteuer__betrag_soli_m: + - 134.8325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml new file mode 100644 index 0000000000..52ebb3c7fa --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 81 + p_id: + - 81 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 113.93 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 12.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml new file mode 100644 index 0000000000..c622cd9283 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 835 + p_id: + - 835 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4523.12 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1322.0 + lohnsteuer__betrag_soli_m: + - 72.71 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml new file mode 100644 index 0000000000..be49e9cf0e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 851 + p_id: + - 851 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5955.24 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1886.0 + lohnsteuer__betrag_soli_m: + - 103.73 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml new file mode 100644 index 0000000000..2c9deade56 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 947 + p_id: + - 947 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7437.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0060999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2493.0 + lohnsteuer__betrag_soli_m: + - 137.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml new file mode 100644 index 0000000000..bc7d4f3435 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 959 + p_id: + - 959 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4503.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.010700000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1313.0 + lohnsteuer__betrag_soli_m: + - 72.25714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml new file mode 100644 index 0000000000..221f828f8f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 98 + p_id: + - 98 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7488.9325 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2478.0 + lohnsteuer__betrag_soli_m: + - 136.3125 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml new file mode 100644 index 0000000000..ab84f9f75b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1014 + p_id: + - 1014 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1643.1428571428569 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009899999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 326.0 + lohnsteuer__betrag_soli_m: + - 17.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml new file mode 100644 index 0000000000..55644a2c30 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1093 + p_id: + - 1093 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7512.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2505.0 + lohnsteuer__betrag_soli_m: + - 137.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml new file mode 100644 index 0000000000..03331e31ec --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1098 + p_id: + - 1098 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5838.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0124 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1781.0 + lohnsteuer__betrag_soli_m: + - 97.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml new file mode 100644 index 0000000000..e76cccbf12 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 111 + p_id: + - 111 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7376.400000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2452.0 + lohnsteuer__betrag_soli_m: + - 134.70000000000002 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml new file mode 100644 index 0000000000..c1ca366ab0 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1180 + p_id: + - 1180 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7517.742857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2497.0 + lohnsteuer__betrag_soli_m: + - 137.35714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml new file mode 100644 index 0000000000..2186cc8ba4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1210 + p_id: + - 1210 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1682.571428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml new file mode 100644 index 0000000000..54ef1723dd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1354 + p_id: + - 1354 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 34.49333333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0147 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml new file mode 100644 index 0000000000..441cb9f182 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1629 + p_id: + - 1629 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1656.5716666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 331.0 + lohnsteuer__betrag_soli_m: + - 18.245833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml new file mode 100644 index 0000000000..3c79008b07 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1695 + p_id: + - 1695 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2921.442857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0092 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 747.0 + lohnsteuer__betrag_soli_m: + - 41.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml new file mode 100644 index 0000000000..ce161a6749 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1709 + p_id: + - 1709 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5849.6033333333335 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1825.0 + lohnsteuer__betrag_soli_m: + - 100.37916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml new file mode 100644 index 0000000000..546164ca2f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 180 + p_id: + - 180 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5892.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1846.0 + lohnsteuer__betrag_soli_m: + - 101.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml new file mode 100644 index 0000000000..c767d721ba --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1825 + p_id: + - 1825 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5998.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0086 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1888.0 + lohnsteuer__betrag_soli_m: + - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml new file mode 100644 index 0000000000..fff1b8d8f4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1846 + p_id: + - 1846 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3072.5466666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006999999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 799.0 + lohnsteuer__betrag_soli_m: + - 43.9675 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml new file mode 100644 index 0000000000..c2c59f4b89 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2025 + p_id: + - 2025 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 242.2225 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0134 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 15.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml new file mode 100644 index 0000000000..3d95a60173 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2070 + p_id: + - 2070 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4625.142857142858 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0084 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1311.0 + lohnsteuer__betrag_soli_m: + - 72.12857142857142 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml new file mode 100644 index 0000000000..adf4de6091 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2159 + p_id: + - 2159 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1505.9208333333331 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0083 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 236.0 + lohnsteuer__betrag_soli_m: + - 13.020833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml new file mode 100644 index 0000000000..58908bb482 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2204 + p_id: + - 2204 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6060.8425 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1879.0 + lohnsteuer__betrag_soli_m: + - 103.35416666666669 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml new file mode 100644 index 0000000000..32e753cf25 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2375 + p_id: + - 2375 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7363.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0125 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2432.0 + lohnsteuer__betrag_soli_m: + - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml new file mode 100644 index 0000000000..16064f384a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2393 + p_id: + - 2393 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3108.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0092 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 774.0 + lohnsteuer__betrag_soli_m: + - 42.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml new file mode 100644 index 0000000000..b1e7eb64c4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2469 + p_id: + - 2469 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1546.38 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0072 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 252.0 + lohnsteuer__betrag_soli_m: + - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml new file mode 100644 index 0000000000..d4649de913 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2516 + p_id: + - 2516 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2922.6891666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011200000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 707.0 + lohnsteuer__betrag_soli_m: + - 38.935 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml new file mode 100644 index 0000000000..33356a51a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 265 + p_id: + - 265 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1523.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 279.0 + lohnsteuer__betrag_soli_m: + - 15.385714285714284 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml new file mode 100644 index 0000000000..832bdae015 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2708 + p_id: + - 2708 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 130.3714285714286 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0074 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml new file mode 100644 index 0000000000..9ce1930f4f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2729 + p_id: + - 2729 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3164.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 790.0 + lohnsteuer__betrag_soli_m: + - 43.48 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml new file mode 100644 index 0000000000..a8931b5cd7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2736 + p_id: + - 2736 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3111.6 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.015 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 811.0 + lohnsteuer__betrag_soli_m: + - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml new file mode 100644 index 0000000000..717419c5d2 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2760 + p_id: + - 2760 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1501.4142857142854 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 271.0 + lohnsteuer__betrag_soli_m: + - 14.871428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml new file mode 100644 index 0000000000..4cd49cb703 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2818 + p_id: + - 2818 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1467.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0127 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 258.0 + lohnsteuer__betrag_soli_m: + - 14.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml new file mode 100644 index 0000000000..66f5d80e95 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 286 + p_id: + - 286 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 76.37142857142858 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml new file mode 100644 index 0000000000..04751ebf24 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2900 + p_id: + - 2900 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 123.56 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml new file mode 100644 index 0000000000..bf042bf85f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2904 + p_id: + - 2904 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7360.12 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2393.0 + lohnsteuer__betrag_soli_m: + - 131.63 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml new file mode 100644 index 0000000000..937d75cb7e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2942 + p_id: + - 2942 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1558.1999999999998 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0137 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 293.0 + lohnsteuer__betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml new file mode 100644 index 0000000000..35fbea6074 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 317 + p_id: + - 317 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5961.814285714285 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1827.0 + lohnsteuer__betrag_soli_m: + - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml new file mode 100644 index 0000000000..7cdb4bf14b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 331 + p_id: + - 331 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5884.19 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1805.0 + lohnsteuer__betrag_soli_m: + - 99.29 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml new file mode 100644 index 0000000000..ef7fcf73bc --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 396 + p_id: + - 396 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7315.6475 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2381.0 + lohnsteuer__betrag_soli_m: + - 130.99166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml new file mode 100644 index 0000000000..33c0adcf83 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 420 + p_id: + - 420 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 100.94166666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 11.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml new file mode 100644 index 0000000000..7a809a5c77 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 605 + p_id: + - 605 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1647.86 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0076 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 328.0 + lohnsteuer__betrag_soli_m: + - 18.06 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml new file mode 100644 index 0000000000..a9132a81db --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 646 + p_id: + - 646 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4621.500000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1316.0 + lohnsteuer__betrag_soli_m: + - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml new file mode 100644 index 0000000000..a9d123a4ec --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 65 + p_id: + - 65 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3056.7000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 760.0 + lohnsteuer__betrag_soli_m: + - 41.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml new file mode 100644 index 0000000000..29e577ba4a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 664 + p_id: + - 664 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 113.06 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml new file mode 100644 index 0000000000..ebcfe8e58f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 698 + p_id: + - 698 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 193.36666666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 9.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml new file mode 100644 index 0000000000..620519c981 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 710 + p_id: + - 710 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5892.900000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0085 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1811.0 + lohnsteuer__betrag_soli_m: + - 99.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml new file mode 100644 index 0000000000..dcdf0035e6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 715 + p_id: + - 715 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1593.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011200000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 306.0 + lohnsteuer__betrag_soli_m: + - 16.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml new file mode 100644 index 0000000000..16247011be --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 809 + p_id: + - 809 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4459.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0060999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1293.0 + lohnsteuer__betrag_soli_m: + - 71.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml new file mode 100644 index 0000000000..64d952ea83 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 816 + p_id: + - 816 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7359.214285714286 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2393.0 + lohnsteuer__betrag_soli_m: + - 131.65714285714287 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml new file mode 100644 index 0000000000..15fe9fb509 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 832 + p_id: + - 832 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1484.9571428571428 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 264.0 + lohnsteuer__betrag_soli_m: + - 14.52857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml new file mode 100644 index 0000000000..c0bedb480f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 879 + p_id: + - 879 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4560.0633333333335 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0075 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1291.0 + lohnsteuer__betrag_soli_m: + - 71.05499999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml new file mode 100644 index 0000000000..a678ad22ee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 882 + p_id: + - 882 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2940.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 753.0 + lohnsteuer__betrag_soli_m: + - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml new file mode 100644 index 0000000000..fa07b97445 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 949 + p_id: + - 949 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 87.30000000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 9.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml new file mode 100644 index 0000000000..6cca79daf6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 978 + p_id: + - 978 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5982.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0113 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1874.0 + lohnsteuer__betrag_soli_m: + - 102.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml new file mode 100644 index 0000000000..f53c88c991 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1015 + p_id: + - 1015 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1477.2325 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0101 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 253.0 + lohnsteuer__betrag_soli_m: + - 13.933333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml new file mode 100644 index 0000000000..a43b78e8b7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1096 + p_id: + - 1096 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5872.39 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0109 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1780.0 + lohnsteuer__betrag_soli_m: + - 97.92 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml new file mode 100644 index 0000000000..8ca0e8299c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1118 + p_id: + - 1118 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7334.400000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2365.0 + lohnsteuer__betrag_soli_m: + - 129.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml new file mode 100644 index 0000000000..f49a2cd027 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1273 + p_id: + - 1273 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7337.276666666668 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2397.0 + lohnsteuer__betrag_soli_m: + - 131.83916666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml new file mode 100644 index 0000000000..b6b0ae733b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 13 + p_id: + - 13 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7524.431666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0121 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2436.0 + lohnsteuer__betrag_soli_m: + - 133.98416666666665 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml new file mode 100644 index 0000000000..6e8b2e8131 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1310 + p_id: + - 1310 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 58.68 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 6.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml new file mode 100644 index 0000000000..13ea2cbb2d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1378 + p_id: + - 1378 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7411.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2429.0 + lohnsteuer__betrag_soli_m: + - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml new file mode 100644 index 0000000000..eb2eb6045f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1417 + p_id: + - 1417 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4439.8133333333335 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0097 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1229.0 + lohnsteuer__betrag_soli_m: + - 67.61749999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml new file mode 100644 index 0000000000..1aa55b0c11 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1468 + p_id: + - 1468 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 83.99999999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0143 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 9.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml new file mode 100644 index 0000000000..81f1a0b9ac --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 160 + p_id: + - 160 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1657.285714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 323.0 + lohnsteuer__betrag_soli_m: + - 17.742857142857144 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml new file mode 100644 index 0000000000..362a764631 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 161 + p_id: + - 161 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7321.994166666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2357.0 + lohnsteuer__betrag_soli_m: + - 129.67583333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml new file mode 100644 index 0000000000..7f3b7ea4a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1705 + p_id: + - 1705 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7393.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2441.0 + lohnsteuer__betrag_soli_m: + - 134.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml new file mode 100644 index 0000000000..20e27e4f93 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1767 + p_id: + - 1767 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1706.4583333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0143 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 342.0 + lohnsteuer__betrag_soli_m: + - 18.8375 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml new file mode 100644 index 0000000000..ece9bdf547 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1775 + p_id: + - 1775 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4402.885714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1248.0 + lohnsteuer__betrag_soli_m: + - 68.65714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml new file mode 100644 index 0000000000..39e51b5025 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1788 + p_id: + - 1788 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4415.733333333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0068000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1223.0 + lohnsteuer__betrag_soli_m: + - 67.30166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml new file mode 100644 index 0000000000..c995f0f6c4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1790 + p_id: + - 1790 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1660.4571428571428 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0069 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 324.0 + lohnsteuer__betrag_soli_m: + - 17.82857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml new file mode 100644 index 0000000000..e03632ac33 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1928 + p_id: + - 1928 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4515.385714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1299.0 + lohnsteuer__betrag_soli_m: + - 71.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml new file mode 100644 index 0000000000..6d0f633816 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2106 + p_id: + - 2106 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7439.99 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2452.0 + lohnsteuer__betrag_soli_m: + - 134.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml new file mode 100644 index 0000000000..eea891bf7f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2182 + p_id: + - 2182 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 32.142857142857146 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml new file mode 100644 index 0000000000..41865ad0b4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2184 + p_id: + - 2184 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3118.816666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013600000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 804.0 + lohnsteuer__betrag_soli_m: + - 44.22916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml new file mode 100644 index 0000000000..df5aab6849 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2230 + p_id: + - 2230 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5944.242857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1351.0 + lohnsteuer__betrag_soli_m: + - 74.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml new file mode 100644 index 0000000000..0a188c42ac --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2320 + p_id: + - 2320 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1683.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0064 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 297.0 + lohnsteuer__betrag_soli_m: + - 16.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml new file mode 100644 index 0000000000..a0a19bf646 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2389 + p_id: + - 2389 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 107.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 12.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml new file mode 100644 index 0000000000..6bc39ba9cf --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2439 + p_id: + - 2439 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7502.544166666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0064 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2487.0 + lohnsteuer__betrag_soli_m: + - 136.82583333333335 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml new file mode 100644 index 0000000000..9e079474a4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2527 + p_id: + - 2527 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5989.17 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1864.0 + lohnsteuer__betrag_soli_m: + - 102.52 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml new file mode 100644 index 0000000000..79efe26e9c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2562 + p_id: + - 2562 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5884.177500000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0129 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1819.0 + lohnsteuer__betrag_soli_m: + - 100.06333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml new file mode 100644 index 0000000000..32870b4852 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2587 + p_id: + - 2587 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7518.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013500000000000002 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2468.0 + lohnsteuer__betrag_soli_m: + - 135.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml new file mode 100644 index 0000000000..4903508eb7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 266 + p_id: + - 266 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1472.0142857142855 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0104 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 215.0 + lohnsteuer__betrag_soli_m: + - 11.828571428571427 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml new file mode 100644 index 0000000000..379bf2b2c7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2888 + p_id: + - 2888 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5947.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1808.0 + lohnsteuer__betrag_soli_m: + - 99.46 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml new file mode 100644 index 0000000000..f74153b323 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2898 + p_id: + - 2898 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1484.35 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 219.0 + lohnsteuer__betrag_soli_m: + - 12.090833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml new file mode 100644 index 0000000000..e6c3793447 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2920 + p_id: + - 2920 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5943.534166666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0113 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1839.0 + lohnsteuer__betrag_soli_m: + - 101.145 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml new file mode 100644 index 0000000000..5e867221cb --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2953 + p_id: + - 2953 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5910.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0134 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1828.0 + lohnsteuer__betrag_soli_m: + - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml new file mode 100644 index 0000000000..7bac24fa2d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2998 + p_id: + - 2998 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7359.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0084 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2411.0 + lohnsteuer__betrag_soli_m: + - 132.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml new file mode 100644 index 0000000000..d287c469db --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 367 + p_id: + - 367 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4459.240833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1232.0 + lohnsteuer__betrag_soli_m: + - 67.76416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml new file mode 100644 index 0000000000..cfcedea54d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 400 + p_id: + - 400 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3063.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 784.0 + lohnsteuer__betrag_soli_m: + - 42.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml new file mode 100644 index 0000000000..b3d6ee72fd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 409 + p_id: + - 409 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7384.743333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0111 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2428.0 + lohnsteuer__betrag_soli_m: + - 133.57666666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml new file mode 100644 index 0000000000..18a711e638 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 481 + p_id: + - 481 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1495.1033333333337 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 260.0 + lohnsteuer__betrag_soli_m: + - 14.318333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml new file mode 100644 index 0000000000..150dc5a41b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 513 + p_id: + - 513 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4554.2716666666665 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1271.0 + lohnsteuer__betrag_soli_m: + - 69.91416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml new file mode 100644 index 0000000000..3f30f47153 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 630 + p_id: + - 630 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1612.8033333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 306.0 + lohnsteuer__betrag_soli_m: + - 16.834166666666665 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml new file mode 100644 index 0000000000..912b8a2703 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 648 + p_id: + - 648 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3075.685714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014499999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 752.0 + lohnsteuer__betrag_soli_m: + - 41.35714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml new file mode 100644 index 0000000000..0230f0121c --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 70 + p_id: + - 70 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7321.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0127 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2391.0 + lohnsteuer__betrag_soli_m: + - 131.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml new file mode 100644 index 0000000000..b80130eb75 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 798 + p_id: + - 798 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1664.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0063 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 325.0 + lohnsteuer__betrag_soli_m: + - 17.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml new file mode 100644 index 0000000000..39aaf96e60 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 835 + p_id: + - 835 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5888.61 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1782.0 + lohnsteuer__betrag_soli_m: + - 98.04 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml new file mode 100644 index 0000000000..38487faf7d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 901 + p_id: + - 901 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4541.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0125 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1302.0 + lohnsteuer__betrag_soli_m: + - 71.39999999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml new file mode 100644 index 0000000000..2db24909c9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 926 + p_id: + - 926 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 86.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0079 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml new file mode 100644 index 0000000000..77a37f43f8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 949 + p_id: + - 949 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4446.9375 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1234.0 + lohnsteuer__betrag_soli_m: + - 67.90666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml new file mode 100644 index 0000000000..f781ab4a84 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 111 + p_id: + - 111 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2939.78 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 696.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml new file mode 100644 index 0000000000..dffc5d0020 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1186 + p_id: + - 1186 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5956.41 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1792.0 + lohnsteuer__betrag_soli_m: + - 45.16 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml new file mode 100644 index 0000000000..109c2618f9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1204 + p_id: + - 1204 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7384.15 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014499999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2360.0 + lohnsteuer__betrag_soli_m: + - 112.72 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml new file mode 100644 index 0000000000..eb85658b76 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1237 + p_id: + - 1237 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4455.695833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1226.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml new file mode 100644 index 0000000000..b8fa9bab8d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1255 + p_id: + - 1255 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6082.799999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009000000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1880.0 + lohnsteuer__betrag_soli_m: + - 55.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml new file mode 100644 index 0000000000..390c6bd21a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1380 + p_id: + - 1380 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4382.057142857143 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014499999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1193.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml new file mode 100644 index 0000000000..c5acf28f3b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1385 + p_id: + - 1385 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 149.5285714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0134 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 16.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml new file mode 100644 index 0000000000..63a1d2f6bb --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1402 + p_id: + - 1402 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4587.52 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0148 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1300.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml new file mode 100644 index 0000000000..bbe3a1fd4e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 145 + p_id: + - 145 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4483.14 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0064 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1277.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml new file mode 100644 index 0000000000..8f0ab3d184 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1538 + p_id: + - 1538 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 229.84 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 25.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml new file mode 100644 index 0000000000..f03cb8f8ba --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1610 + p_id: + - 1610 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6054.72 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0086 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 867.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml new file mode 100644 index 0000000000..5f9656b615 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 165 + p_id: + - 165 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2973.4216666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0144 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 743.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml new file mode 100644 index 0000000000..3e939d6e30 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1714 + p_id: + - 1714 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3106.880833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 754.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml new file mode 100644 index 0000000000..3326139b0e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1762 + p_id: + - 1762 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7386.214285714286 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2359.0 + lohnsteuer__betrag_soli_m: + - 112.62857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml new file mode 100644 index 0000000000..07375b99c5 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1853 + p_id: + - 1853 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4412.828571428571 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.006500000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1247.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml new file mode 100644 index 0000000000..8b3dff8bff --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1908 + p_id: + - 1908 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7311.471428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2321.0 + lohnsteuer__betrag_soli_m: + - 108.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml new file mode 100644 index 0000000000..e063f3dc0b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1999 + p_id: + - 1999 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3048.61 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0076 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 771.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml new file mode 100644 index 0000000000..a9438e4608 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2022 + p_id: + - 2022 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 186.17142857142855 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0108 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 20.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml new file mode 100644 index 0000000000..fecac1192a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2208 + p_id: + - 2208 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7495.215833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2395.0 + lohnsteuer__betrag_soli_m: + - 116.8575 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml new file mode 100644 index 0000000000..05be370354 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 225 + p_id: + - 225 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6003.833333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1851.0 + lohnsteuer__betrag_soli_m: + - 52.16166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml new file mode 100644 index 0000000000..fb183f3e1a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2258 + p_id: + - 2258 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3098.85 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0138 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 751.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml new file mode 100644 index 0000000000..0f76d1206b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2295 + p_id: + - 2295 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 134.87 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0086 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml new file mode 100644 index 0000000000..8756142801 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 238 + p_id: + - 238 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3077.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0067 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 748.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml new file mode 100644 index 0000000000..6fb1f57d9b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2400 + p_id: + - 2400 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2938.465 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0103 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 381.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml new file mode 100644 index 0000000000..559aff184b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2416 + p_id: + - 2416 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5887.885714285715 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0147 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1758.0 + lohnsteuer__betrag_soli_m: + - 41.05714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml new file mode 100644 index 0000000000..1ef0994edd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2476 + p_id: + - 2476 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7544.785714285715 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2465.0 + lohnsteuer__betrag_soli_m: + - 125.2714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml new file mode 100644 index 0000000000..33fea09594 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 262 + p_id: + - 262 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5905.285714285715 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0124 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1803.0 + lohnsteuer__betrag_soli_m: + - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml new file mode 100644 index 0000000000..c70da181cd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2766 + p_id: + - 2766 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 99.17142857142856 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.014199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 11.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml new file mode 100644 index 0000000000..baf6aa0953 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2782 + p_id: + - 2782 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5871.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0125 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1753.0 + lohnsteuer__betrag_soli_m: + - 40.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml new file mode 100644 index 0000000000..b0ab2ab1b7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2836 + p_id: + - 2836 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6070.115833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0132 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1866.0 + lohnsteuer__betrag_soli_m: + - 53.97583333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml new file mode 100644 index 0000000000..15a2e98fe5 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2886 + p_id: + - 2886 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7525.357499999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0096 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2465.0 + lohnsteuer__betrag_soli_m: + - 125.29666666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml new file mode 100644 index 0000000000..164e1df536 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2945 + p_id: + - 2945 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3039.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 731.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml new file mode 100644 index 0000000000..709b20f2b2 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2946 + p_id: + - 2946 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5923.221666666667 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1819.0 + lohnsteuer__betrag_soli_m: + - 48.36333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml new file mode 100644 index 0000000000..6ecc2859a7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 299 + p_id: + - 299 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 25.36 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0060999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml new file mode 100644 index 0000000000..33a64ee1a4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 318 + p_id: + - 318 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1635.6428571428569 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 268.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml new file mode 100644 index 0000000000..70e08eac79 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 321 + p_id: + - 321 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4485.771428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1276.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml new file mode 100644 index 0000000000..70128f6057 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 33 + p_id: + - 33 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1650.9857142857145 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.010700000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 90.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml new file mode 100644 index 0000000000..91c3a103cd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 417 + p_id: + - 417 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4588.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0098 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1310.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml new file mode 100644 index 0000000000..65d9607f58 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 479 + p_id: + - 479 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 170.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0141 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 18.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml new file mode 100644 index 0000000000..72c5d2a1d0 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 519 + p_id: + - 519 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7332.599999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0116 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2346.0 + lohnsteuer__betrag_soli_m: + - 111.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml new file mode 100644 index 0000000000..a20fd2bf60 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 522 + p_id: + - 522 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5997.257142857143 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0138 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1801.0 + lohnsteuer__betrag_soli_m: + - 46.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml new file mode 100644 index 0000000000..19075ed403 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 618 + p_id: + - 618 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6001.071428571428 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0074 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1809.0 + lohnsteuer__betrag_soli_m: + - 47.14285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml new file mode 100644 index 0000000000..49f4147991 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 620 + p_id: + - 620 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4424.4 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1250.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml new file mode 100644 index 0000000000..3bce34839d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 651 + p_id: + - 651 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1618.1999999999998 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0092 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 261.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml new file mode 100644 index 0000000000..90b8a55a97 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 738 + p_id: + - 738 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4581.16 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1307.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml new file mode 100644 index 0000000000..b7d8aa47ff --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 761 + p_id: + - 761 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4388.243333333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1201.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml new file mode 100644 index 0000000000..2cfacbadb9 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 788 + p_id: + - 788 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4518.591666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1288.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml new file mode 100644 index 0000000000..a22201cdd4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 798 + p_id: + - 798 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 143.27142857142857 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.010700000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 3.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml new file mode 100644 index 0000000000..e12deef6c4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 810 + p_id: + - 810 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1509.5141666666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.009399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 255.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml new file mode 100644 index 0000000000..7ecdd4be7b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 864 + p_id: + - 864 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5862.53 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 1 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1280.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml new file mode 100644 index 0000000000..ab316ac4a8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 867 + p_id: + - 867 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 194.45416666666665 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0087 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 21.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml new file mode 100644 index 0000000000..bc3a870830 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 883 + p_id: + - 883 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3019.6714285714293 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0147 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 720.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml new file mode 100644 index 0000000000..37732d78a8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 885 + p_id: + - 885 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1597.49 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0116 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 253.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml new file mode 100644 index 0000000000..e9641a7de6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 9 + p_id: + - 9 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7505.94 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2419.0 + lohnsteuer__betrag_soli_m: + - 119.72333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml new file mode 100644 index 0000000000..9012f492e4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 946 + p_id: + - 946 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 227.07 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0149 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 13.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml new file mode 100644 index 0000000000..4a889966ad --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 948 + p_id: + - 948 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3147.6 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 3 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013600000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 174.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml new file mode 100644 index 0000000000..2c53d4a4e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1019 + p_id: + - 1019 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1461.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 178.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml new file mode 100644 index 0000000000..2fe3d202a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1166 + p_id: + - 1166 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4581.860833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1295.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml new file mode 100644 index 0000000000..7893ae22ba --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1209 + p_id: + - 1209 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6023.53 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1839.0 + lohnsteuer__betrag_soli_m: + - 50.76 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml new file mode 100644 index 0000000000..8124829a62 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1305 + p_id: + - 1305 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4504.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1218.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml new file mode 100644 index 0000000000..8efd64d601 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1364 + p_id: + - 1364 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5890.971428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1789.0 + lohnsteuer__betrag_soli_m: + - 44.78571428571428 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml new file mode 100644 index 0000000000..5d71ceed82 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1473 + p_id: + - 1473 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5989.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0075 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1782.0 + lohnsteuer__betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml new file mode 100644 index 0000000000..3fdbcad1f4 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1519 + p_id: + - 1519 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6007.200000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0139 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1783.0 + lohnsteuer__betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml new file mode 100644 index 0000000000..3d186633ea --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1667 + p_id: + - 1667 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 152.99999999999997 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml new file mode 100644 index 0000000000..6796dad687 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1770 + p_id: + - 1770 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1621.95 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0104 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 283.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml new file mode 100644 index 0000000000..d8c8638ffc --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1784 + p_id: + - 1784 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4582.43 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0123 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1289.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml new file mode 100644 index 0000000000..c032490f2e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1881 + p_id: + - 1881 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4547.98 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0089 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1287.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml new file mode 100644 index 0000000000..88311ef182 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1904 + p_id: + - 1904 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1512.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0129 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 198.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml new file mode 100644 index 0000000000..d22d8458d7 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1907 + p_id: + - 1907 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 139.99 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml new file mode 100644 index 0000000000..e05c09a4a0 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1918 + p_id: + - 1918 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6012.0428571428565 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0137 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1785.0 + lohnsteuer__betrag_soli_m: + - 44.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml new file mode 100644 index 0000000000..1e51219f29 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2099 + p_id: + - 2099 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2987.7000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0097 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 700.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml new file mode 100644 index 0000000000..c02a7d298f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2111 + p_id: + - 2111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4500.68 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1217.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml new file mode 100644 index 0000000000..2439f8d584 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2118 + p_id: + - 2118 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7352.099999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2366.0 + lohnsteuer__betrag_soli_m: + - 113.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml new file mode 100644 index 0000000000..b5536e0e42 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2129 + p_id: + - 2129 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 79.45 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 8.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml new file mode 100644 index 0000000000..d45f671a10 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 224 + p_id: + - 224 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7538.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0069 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2451.0 + lohnsteuer__betrag_soli_m: + - 123.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml new file mode 100644 index 0000000000..2dec4265cf --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 241 + p_id: + - 241 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 118.84285714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0129 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 13.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml new file mode 100644 index 0000000000..ac75dceaa0 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2410 + p_id: + - 2410 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1638.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0098 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 289.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml new file mode 100644 index 0000000000..14b98ac439 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2423 + p_id: + - 2423 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5988.849999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1826.0 + lohnsteuer__betrag_soli_m: + - 49.17666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml new file mode 100644 index 0000000000..066fe51433 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2428 + p_id: + - 2428 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7378.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2381.0 + lohnsteuer__betrag_soli_m: + - 115.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml new file mode 100644 index 0000000000..df1d083e30 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2439 + p_id: + - 2439 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1480.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0146 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 186.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml new file mode 100644 index 0000000000..39ec261104 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2447 + p_id: + - 2447 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 183.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 20.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml new file mode 100644 index 0000000000..351f80db7e --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2868 + p_id: + - 2868 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6071.195833333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1859.0 + lohnsteuer__betrag_soli_m: + - 53.09333333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml new file mode 100644 index 0000000000..f769467934 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2962 + p_id: + - 2962 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5895.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0134 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1790.0 + lohnsteuer__betrag_soli_m: + - 44.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml new file mode 100644 index 0000000000..64a3d5ea8f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 664 + p_id: + - 664 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 66.55714285714285 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 7.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml new file mode 100644 index 0000000000..deb6bb1d7b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 688 + p_id: + - 688 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5878.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1790.0 + lohnsteuer__betrag_soli_m: + - 44.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml new file mode 100644 index 0000000000..abdeb856ce --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 720 + p_id: + - 720 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6084.329166666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0138 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1856.0 + lohnsteuer__betrag_soli_m: + - 52.76583333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml new file mode 100644 index 0000000000..24c5fdc80d --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 840 + p_id: + - 840 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3067.2000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0095 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 771.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml new file mode 100644 index 0000000000..8f75344101 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 848 + p_id: + - 848 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 101.92583333333332 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml new file mode 100644 index 0000000000..aed56ce564 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 963 + p_id: + - 963 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1537.98 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0106 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 208.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml new file mode 100644 index 0000000000..3c25d9b3d6 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1019 + p_id: + - 1019 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1461.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.008100000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 154.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml new file mode 100644 index 0000000000..11c346c742 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1166 + p_id: + - 1166 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4581.860833333333 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.012199999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1252.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml new file mode 100644 index 0000000000..4c098dd14a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1209 + p_id: + - 1209 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6023.53 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1784.0 + lohnsteuer__betrag_soli_m: + - 38.36 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml new file mode 100644 index 0000000000..7912d11b44 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1305 + p_id: + - 1305 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4504.5 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0126 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1175.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml new file mode 100644 index 0000000000..f272c45eaf --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1364 + p_id: + - 1364 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5890.971428571429 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013300000000000001 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1734.0 + lohnsteuer__betrag_soli_m: + - 32.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml new file mode 100644 index 0000000000..0dca990849 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1473 + p_id: + - 1473 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5989.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0075 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1726.0 + lohnsteuer__betrag_soli_m: + - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml new file mode 100644 index 0000000000..f5a12fafa8 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1519 + p_id: + - 1519 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6007.200000000001 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0139 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1726.0 + lohnsteuer__betrag_soli_m: + - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml new file mode 100644 index 0000000000..d828dde691 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1667 + p_id: + - 1667 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 152.99999999999997 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0070999999999999995 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml new file mode 100644 index 0000000000..056cbc8cdd --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1770 + p_id: + - 1770 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1621.95 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0104 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 259.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml new file mode 100644 index 0000000000..43db7c4828 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1784 + p_id: + - 1784 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4582.43 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0123 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1246.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml new file mode 100644 index 0000000000..42c9833a7b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1881 + p_id: + - 1881 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4547.98 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0089 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1244.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml new file mode 100644 index 0000000000..472920f4ee --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1904 + p_id: + - 1904 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1512.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0129 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 173.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml new file mode 100644 index 0000000000..5f7c5fa06b --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1907 + p_id: + - 1907 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 139.99 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0105 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml new file mode 100644 index 0000000000..b6c511fd93 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 1918 + p_id: + - 1918 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6012.0428571428565 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0137 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1728.0 + lohnsteuer__betrag_soli_m: + - 31.757142857142853 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml new file mode 100644 index 0000000000..42bc903a4f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2099 + p_id: + - 2099 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2987.7000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0097 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 667.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml new file mode 100644 index 0000000000..c850549513 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2111 + p_id: + - 2111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4500.68 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0118 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1174.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml new file mode 100644 index 0000000000..30bdfbe680 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2118 + p_id: + - 2118 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7352.099999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.01 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2296.0 + lohnsteuer__betrag_soli_m: + - 99.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml new file mode 100644 index 0000000000..b5536e0e42 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2129 + p_id: + - 2129 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 79.45 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 8.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml new file mode 100644 index 0000000000..d0dd5a0721 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 224 + p_id: + - 224 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7538.7 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0069 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2379.0 + lohnsteuer__betrag_soli_m: + - 108.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml new file mode 100644 index 0000000000..2dec4265cf --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 241 + p_id: + - 241 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 118.84285714285714 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0129 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 13.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml new file mode 100644 index 0000000000..6b864cfc61 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2410 + p_id: + - 2410 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1638.3 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0098 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 266.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml new file mode 100644 index 0000000000..805bc22e44 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2423 + p_id: + - 2423 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5988.849999999999 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0073 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1771.0 + lohnsteuer__betrag_soli_m: + - 36.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml new file mode 100644 index 0000000000..75d1a15d80 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2428 + p_id: + - 2428 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 7378.2 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0062 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 2311.0 + lohnsteuer__betrag_soli_m: + - 101.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml new file mode 100644 index 0000000000..2cd2cd977a --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2439 + p_id: + - 2439 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1480.8 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0146 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 161.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml new file mode 100644 index 0000000000..39ec261104 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2447 + p_id: + - 2447 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 183.9 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.011399999999999999 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 20.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml new file mode 100644 index 0000000000..94799a8b46 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2868 + p_id: + - 2868 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6071.195833333334 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0131 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1803.0 + lohnsteuer__betrag_soli_m: + - 40.6775 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml new file mode 100644 index 0000000000..e1d909a299 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 2962 + p_id: + - 2962 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5895.0 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0134 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1736.0 + lohnsteuer__betrag_soli_m: + - 32.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml new file mode 100644 index 0000000000..64a3d5ea8f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 664 + p_id: + - 664 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 66.55714285714285 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 7.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml new file mode 100644 index 0000000000..71dd4078b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 688 + p_id: + - 688 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5878.1 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0078000000000000005 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1735.0 + lohnsteuer__betrag_soli_m: + - 32.58 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml new file mode 100644 index 0000000000..daf49179e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 720 + p_id: + - 720 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6084.329166666666 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0138 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - true + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 1800.0 + lohnsteuer__betrag_soli_m: + - 40.310833333333335 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml new file mode 100644 index 0000000000..3a0997fb0f --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 840 + p_id: + - 840 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3067.2000000000003 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 6 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0095 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 736.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml new file mode 100644 index 0000000000..8f75344101 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 848 + p_id: + - 848 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 101.92583333333332 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0088 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 0.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml new file mode 100644 index 0000000000..49c8c0b608 --- /dev/null +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: + familie__p_id_elternteil_1: -1 + familie__p_id_elternteil_2: -1 + provided: + alter: + - 25 + arbeitsstunden_w: + - 40.0 + hh_id: + - 963 + p_id: + - 963 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1537.98 + kindergeld__in_ausbildung: + - false + lohnsteuer__steuerklasse: + - 5 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.0106 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + - false + sozialversicherung__regulär_beschäftigt: + - true +outputs: + lohnsteuer__betrag_m: + - 183.0 + lohnsteuer__betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml b/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml index 1fbf4f754b..2749f2114f 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml +++ b/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml @@ -8,10 +8,10 @@ inputs: - 0 p_id: - 0 - ges_pflegev_hat_kinder: + sozialversicherung__pflege__beitrag__hat_kinder: - false outputs: - minijob_grenze: + sozialversicherung__minijob_grenze: - 450.0 # TODO(@MImmesberger): Unskip test when issue is resolved # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml b/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml index 8f3b4fdf9a..c969eb5f3e 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml +++ b/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml @@ -8,10 +8,10 @@ inputs: - 0 p_id: - 0 - ges_pflegev_hat_kinder: + sozialversicherung__pflege__beitrag__hat_kinder: - false outputs: - minijob_grenze: + sozialversicherung__minijob_grenze: - 520.0 # TODO(@MImmesberger): Unskip test when issue is resolved # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml b/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml index fb803ab172..2e617e11ed 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml +++ b/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml @@ -8,10 +8,10 @@ inputs: - 0 p_id: - 0 - ges_pflegev_hat_kinder: + sozialversicherung__pflege__beitrag__hat_kinder: - false outputs: - minijob_grenze: + sozialversicherung__minijob_grenze: - 538.0 # TODO(@MImmesberger): Unskip test when issue is resolved # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/namespaces/module1.py b/src/_gettsim_tests/test_data/namespaces/module1.py index f35d3334b9..943cee8d5f 100644 --- a/src/_gettsim_tests/test_data/namespaces/module1.py +++ b/src/_gettsim_tests/test_data/namespaces/module1.py @@ -1,6 +1,6 @@ """Test namespace.""" -from _gettsim.functions.policy_function import policy_function +from _gettsim.function_types import policy_function @policy_function() diff --git a/src/_gettsim_tests/test_data/namespaces/module2.py b/src/_gettsim_tests/test_data/namespaces/module2.py index d624865905..75abb689ba 100644 --- a/src/_gettsim_tests/test_data/namespaces/module2.py +++ b/src/_gettsim_tests/test_data/namespaces/module2.py @@ -1,6 +1,6 @@ """Test namespace.""" -from _gettsim.functions.policy_function import policy_function +from _gettsim.function_types import policy_function @policy_function() diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml new file mode 100644 index 0000000000..5d7194251b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 21 + p_id: + - 21 + weiblich: + - true + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 180.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__wartezeit_15_jahre_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml new file mode 100644 index 0000000000..02f6e53bfa --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 24 + p_id: + - 24 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml new file mode 100644 index 0000000000..33e1a02686 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 22 + p_id: + - 22 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml new file mode 100644 index 0000000000..4320afc422 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - true + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 12.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml new file mode 100644 index 0000000000..520981f8f5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 25 + p_id: + - 25 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 100.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..321048ea85 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..077458cce5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..29c633d452 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b30731a280 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..9370648f28 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..bb78dfa625 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4bde2dfe67 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.333333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..e8bbc301ed --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..3e46fa761e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.833333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b1d6f3631d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..df46d6bf90 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + geburtsmonat: + - 1 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..5038768bfd --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..6cb74f8edd --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..2a25794e86 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..0d95d61a2b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + hh_id: + - 15 + p_id: + - 15 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..f24b42c0a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 16 + p_id: + - 16 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c403a052c4 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 17 + p_id: + - 17 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..f73d32ce56 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..7427246870 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + hh_id: + - 19 + p_id: + - 19 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c5c6389af3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml @@ -0,0 +1,60 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + geburtsmonat: + - 1 + hh_id: + - 20 + p_id: + - 20 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml new file mode 100644 index 0000000000..041452ff5b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml @@ -0,0 +1,297 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1952 + - 1952 + - 1952 + - 1952 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + - 0.0 + - 0.0 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + provided: {} +outputs: + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b893c7e10b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..cf9ab50b7c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..2a035efa77 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..d852d6f4cf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b048ca11d6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..8e71813a66 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..ca0ef847a7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.333333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b8ae95b4f5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4bb741eb44 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.833333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..6cffb40a3c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..5222d06a40 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + geburtsmonat: + - 1 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..5429bb78a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..63b4da351a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 62.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..0a1de9f575 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..5f0a99dcb9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + hh_id: + - 15 + p_id: + - 15 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..06cd92866e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 16 + p_id: + - 16 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..50be8105d9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 17 + p_id: + - 17 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..7cb7e881e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..dddb0ebfbb --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + hh_id: + - 19 + p_id: + - 19 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..f321eceb26 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + geburtsmonat: + - 1 + hh_id: + - 20 + p_id: + - 20 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..8a60067d0a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -0,0 +1,64 @@ +--- +info: + note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + source: '' +inputs: + assumed: {} + provided: + alter: + - 62 + geburtsjahr: + - 1936 + geburtsmonat: + - 2 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + entgeltp: + - 31.0625 + jahr: + - 1996 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..07913274be --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..e7c91fab3c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..0da992b569 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..8d6edd23be --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..708f6c80e5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 21 + p_id: + - 21 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..3b09d24da1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..3f653ecee7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 22 + p_id: + - 22 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..eb2aa0da59 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..ac7a466616 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.333333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4b09dd40a5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..13587b541e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c307c460c2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..34d4d1d601 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 2 + hh_id: + - 24 + p_id: + - 24 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.833333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c4def7e7bf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..347531f6ea --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4eb7d79f6c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + geburtsmonat: + - 1 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..387d2916b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..484caf064a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..1974cf03df --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..ea71453e72 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + hh_id: + - 15 + p_id: + - 15 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..d32e33bad8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 16 + p_id: + - 16 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c0858bf055 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 17 + p_id: + - 17 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..0ce7c9addc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..466ace606b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + hh_id: + - 19 + p_id: + - 19 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..1bcee0992d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + geburtsmonat: + - 1 + hh_id: + - 20 + p_id: + - 20 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..850f360f33 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..66cc7ad812 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1933 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..2885fb4237 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -0,0 +1,64 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..bbfe26cbcf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..8f5189bdc5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..3b8f415880 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..0485a12c34 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b442f47a88 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b80d3b4294 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..66286d0093 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..7947229c43 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.333333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..c0823e0fc9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..cf367dbf08 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..d20cf85f5a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 2 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.833333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b48165b4e8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1930 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4ac76ffb8d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1933 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..29ef8ea94b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -0,0 +1,68 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..2854c47682 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..54b702b58e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 61.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..8fb4c829dc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 62.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..72cb23c0a6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..65eb73581c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 63.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..ee49357312 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..d0e24d6ad8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 64.083333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..22e0e98839 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.333333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..ae4945c556 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..b44936749f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.583333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4f15b99cdc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + geburtsmonat: + - 2 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 60.833333 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4acac0615a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + hh_id: + - 15 + p_id: + - 15 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..1a630dcc54 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + geburtsmonat: + - 1 + hh_id: + - 16 + p_id: + - 16 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..9d4eca44bb --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + geburtsmonat: + - 1 + hh_id: + - 17 + p_id: + - 17 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..d16b9f7430 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + geburtsmonat: + - 1 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 62.083333 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..9207dd687c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + hh_id: + - 19 + p_id: + - 19 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..1199c2899c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml @@ -0,0 +1,70 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + hh_id: + - 20 + p_id: + - 20 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..4ea36d4f3f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -0,0 +1,66 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 21 + p_id: + - 21 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml new file mode 100644 index 0000000000..384a31b5ec --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 39 + geburtsjahr: + - 1971 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 18.2826 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 18.51378418 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.231184177 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml new file mode 100644 index 0000000000..5f67e58985 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml @@ -0,0 +1,76 @@ +--- +info: + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Kurz-vor-der-Rente/Wann-kann-ich-in-Rente-gehen/Wann-kann-ich-in-Rente-gehen_detailseite.html" +inputs: + assumed: {} + provided: + alter: + - 59 + geburtsjahr: + - 1956 + geburtsmonat: + - 1 + hh_id: + - 19 + p_id: + - 19 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 35.2067 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.83333333 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 36.99837737 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml new file mode 100644 index 0000000000..1e8de69a2f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 42 + geburtsjahr: + - 1968 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 21.3696 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 21.71637627 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.346776265 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml new file mode 100644 index 0000000000..474c63d137 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml @@ -0,0 +1,74 @@ +--- +info: + note: 'Beispiel: Erna Rüstig (Altersrente für Frauen)' + source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ +inputs: + assumed: {} + provided: + alter: + - 71 + geburtsjahr: + - 1938 + geburtsmonat: + - 12 + hh_id: + - 24 + p_id: + - 24 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 22.42 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 108.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 9.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 22.99796044 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml new file mode 100644 index 0000000000..298aaf3f0d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1940 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml new file mode 100644 index 0000000000..1c0a34a592 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml @@ -0,0 +1,76 @@ +--- +info: + note: >- + From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected + based on source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 42 + geburtsjahr: + - 1968 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 21.3696 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 21.77622985 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.406629848 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml new file mode 100644 index 0000000000..c1661a982d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml @@ -0,0 +1,72 @@ +--- +info: + note: >- + based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a mixed(east/west) + earning biography + source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ +inputs: + assumed: {} + provided: + alter: + - 71 + geburtsjahr: + - 1938 + geburtsmonat: + - 12 + hh_id: + - 30 + p_id: + - 30 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 10.0 + sozialversicherung__rente__entgeltpunkte_west: + - 12.42 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 108.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 9.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 60.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 10.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 12.99796044 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml new file mode 100644 index 0000000000..19f7e6b438 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 46 + geburtsjahr: + - 1964 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 25.3484 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 25.81076835 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.462368353 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml new file mode 100644 index 0000000000..21623ae0a8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 43 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 22.42 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 22.99796044 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml new file mode 100644 index 0000000000..231ac34bc1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 59 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 35.2067 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.41666667 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 37.32588829 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 2.119188287 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml new file mode 100644 index 0000000000..aafbd85f22 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml @@ -0,0 +1,76 @@ +--- +info: + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 59 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 7 + p_id: + - 7 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + jahr: + - 2010 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 35.2067 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.41666667 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 36.99837737 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml new file mode 100644 index 0000000000..0ccd5a1102 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 52 + geburtsjahr: + - 1960 + geburtsmonat: + - 1 + hh_id: + - 10 + p_id: + - 10 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 700.0 + jahr: + - 2012 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 30.5626 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.33333333 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 30.81713003 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.254530028 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml new file mode 100644 index 0000000000..e724b1a631 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 53 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + hh_id: + - 11 + p_id: + - 11 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + jahr: + - 2012 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 31.0625 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.16666667 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 31.0625 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml new file mode 100644 index 0000000000..32413557e6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 27 + geburtsjahr: + - 1985 + geburtsmonat: + - 1 + hh_id: + - 8 + p_id: + - 8 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 + jahr: + - 2012 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 5.9814 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 7.799471632 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 1.818071632 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml new file mode 100644 index 0000000000..2fcbd4af8f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml @@ -0,0 +1,74 @@ +--- +info: + note: Verified or corrected using source. + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 30 + geburtsjahr: + - 1982 + geburtsmonat: + - 1 + hh_id: + - 9 + p_id: + - 9 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + jahr: + - 2012 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 8.5572 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 8.666284298 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.109084298 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml new file mode 100644 index 0000000000..8ff45a0d33 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml @@ -0,0 +1,78 @@ +--- +info: + note: >- + Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) + https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ + source: '' +inputs: + assumed: {} + provided: + alter: + - 65 + geburtsjahr: + - 1948 + geburtsmonat: + - 12 + hh_id: + - 25 + p_id: + - 25 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2014 + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 22.42 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 108.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 9.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 22.99796044 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml new file mode 100644 index 0000000000..6d508d7615 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml @@ -0,0 +1,52 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml new file mode 100644 index 0000000000..4a87f172b8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml @@ -0,0 +1,331 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1952 + - 1952 + - 1952 + - 1952 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + - 0.0 + - 0.0 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 420.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + provided: {} +outputs: + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - false + - false + - false + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml new file mode 100644 index 0000000000..193935fcaa --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 57 + geburtsjahr: + - 1958 + geburtsmonat: + - 1 + hh_id: + - 12 + p_id: + - 12 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 34.9752 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 35.07700132 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.101801318 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml new file mode 100644 index 0000000000..5cf34157df --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 58 + geburtsjahr: + - 1957 + geburtsmonat: + - 1 + hh_id: + - 13 + p_id: + - 13 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 36.084 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.91666667 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 36.28760264 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.203602636 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml new file mode 100644 index 0000000000..dd5b44b756 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 33 + geburtsjahr: + - 1982 + geburtsmonat: + - 1 + hh_id: + - 14 + p_id: + - 14 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 10.6965 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 11.00190395 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.305403953 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml new file mode 100644 index 0000000000..6c1daf0835 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml @@ -0,0 +1,74 @@ +--- +info: + note: 'From eastern Germany: earns more Entgeltpunkte for same wage.' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 33 + geburtsjahr: + - 1982 + geburtsmonat: + - 1 + hh_id: + - 15 + p_id: + - 15 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 10.6965 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 11.04777563 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.351275627 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml new file mode 100644 index 0000000000..a7fb7d9aa0 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 45 + geburtsjahr: + - 1970 + geburtsmonat: + - 1 + hh_id: + - 16 + p_id: + - 16 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 23.6979 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 24.10510527 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.407205271 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml new file mode 100644 index 0000000000..7ac9ab28ac --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 17 + p_id: + - 17 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml new file mode 100644 index 0000000000..3de2a3f6bf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1944 + geburtsmonat: + - 1 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml new file mode 100644 index 0000000000..c831e9278d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1940 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml new file mode 100644 index 0000000000..c831e9278d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml @@ -0,0 +1,74 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1940 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 64.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml new file mode 100644 index 0000000000..41df968829 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml @@ -0,0 +1,76 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1940 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 61.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml new file mode 100644 index 0000000000..fcfbe56fd6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml @@ -0,0 +1,76 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 63 + geburtsjahr: + - 1952 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml new file mode 100644 index 0000000000..6ef5d7b00d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml @@ -0,0 +1,80 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 62 + geburtsjahr: + - 1948 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml new file mode 100644 index 0000000000..dfdcc08f37 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml @@ -0,0 +1,86 @@ +--- +info: + note: '' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html +inputs: + assumed: {} + provided: + alter: + - 62 + geburtsjahr: + - 1948 + geburtsmonat: + - 12 + hh_id: + - 18 + p_id: + - 18 + weiblich: + - true + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + jahr: + - 2015 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 39.3795 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 430.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 60.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 39.88850659 + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.509006589 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/age_at_retirement.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml similarity index 77% rename from src/_gettsim_tests/test_data/renten_anspr/2018-07-01/age_at_retirement.yaml rename to src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml index 822713a656..8dac484835 100644 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/age_at_retirement.yaml +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml @@ -3,20 +3,7 @@ info: note: null source: '' inputs: - provided: {} assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 geburtsjahr: - 1952 - 1952 @@ -29,20 +16,33 @@ inputs: - 1 - 3 - 1 - jahr_renteneintr: + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + sozialversicherung__rente__jahr_renteneintritt: - 2018 - 2018 - 2018 - 2018 - 2018 - monat_renteneintr: + sozialversicherung__rente__monat_renteneintritt: - 1 - 1 - 1 - 1 - 1 + provided: {} outputs: - age_of_retirement: + sozialversicherung__rente__alter_bei_renteneintritt: - 65.916667 - 65.833333 - 64.916667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml new file mode 100644 index 0000000000..ec608b84be --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml @@ -0,0 +1,52 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 3 + p_id: + - 3 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml new file mode 100644 index 0000000000..6c9bb6d103 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml @@ -0,0 +1,52 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + hh_id: + - 4 + p_id: + - 4 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.166667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml new file mode 100644 index 0000000000..d138baa498 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml @@ -0,0 +1,52 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + hh_id: + - 5 + p_id: + - 5 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml new file mode 100644 index 0000000000..96ce9a43ea --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml @@ -0,0 +1,52 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + geburtsmonat: + - 1 + hh_id: + - 6 + p_id: + - 6 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 63.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml new file mode 100644 index 0000000000..c7c3905d41 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml @@ -0,0 +1,56 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + geburtsmonat: + - 1 + hh_id: + - 1 + p_id: + - 1 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.75 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.75 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml new file mode 100644 index 0000000000..6942fbf6b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml @@ -0,0 +1,56 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: {} + provided: + geburtsjahr: + - 1958 + geburtsmonat: + - 1 + hh_id: + - 2 + p_id: + - 2 + weiblich: + - false + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - true + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 66.0 + sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml new file mode 100644 index 0000000000..d7afa20ab1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml @@ -0,0 +1,116 @@ +--- +info: + note: Made up using the text of the law + source: '' +inputs: + assumed: + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 420.0 + - 120.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 + provided: {} +outputs: + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml new file mode 100644 index 0000000000..6820ec2f3d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml @@ -0,0 +1,74 @@ +--- +info: + note: https://www.smart-rechner.de/rentenbeginn/rechner.php + source: '' +inputs: + assumed: {} + provided: + alter: + - 53 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + hh_id: + - 20 + p_id: + - 20 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 31.0625 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.16666667 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 31.0625 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml new file mode 100644 index 0000000000..adfe38d98d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml @@ -0,0 +1,76 @@ +--- +info: + note: >- + from eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower + source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html +inputs: + assumed: {} + provided: + alter: + - 59 + geburtsjahr: + - 1952 + geburtsmonat: + - 1 + hh_id: + - 21 + p_id: + - 21 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 35.2067 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 36.99837737 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml new file mode 100644 index 0000000000..306e0e668e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml @@ -0,0 +1,76 @@ +--- +info: + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower + source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html +inputs: + assumed: {} + provided: + alter: + - 59 + geburtsjahr: + - 1947 + geburtsmonat: + - 1 + hh_id: + - 22 + p_id: + - 22 + weiblich: + - false + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 35.2067 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.08333333 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 36.99837737 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 0.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml new file mode 100644 index 0000000000..5acf4e3993 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml @@ -0,0 +1,74 @@ +--- +info: + note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + source: '' +inputs: + assumed: {} + provided: + alter: + - 53 + geburtsjahr: + - 1958 + geburtsmonat: + - 1 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 31.0625 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.0 + sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: + - 0.0 + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 31.0625 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml new file mode 100644 index 0000000000..165283cba3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml @@ -0,0 +1,70 @@ +--- +info: + note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + source: '' +inputs: + assumed: {} + provided: + alter: + - 53 + geburtsjahr: + - 1944 + geburtsmonat: + - 2 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 31.0625 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 31.0625 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml new file mode 100644 index 0000000000..165283cba3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml @@ -0,0 +1,70 @@ +--- +info: + note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + source: '' +inputs: + assumed: {} + provided: + alter: + - 53 + geburtsjahr: + - 1944 + geburtsmonat: + - 2 + hh_id: + - 23 + p_id: + - 23 + weiblich: + - false + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + jahr: + - 2018 + sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 31.0625 + sozialversicherung__rente__ersatzzeiten_monate: + - 0.0 + sozialversicherung__rente__freiwillige_beitragsmonate: + - 0.0 + sozialversicherung__rente__kinderberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: + - 31.0625 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + sozialversicherung__rente__altersrente__neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml new file mode 100644 index 0000000000..02a00eccfe --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml @@ -0,0 +1,17 @@ +--- +info: + note: '' +inputs: + assumed: {} + provided: + hh_id: + - 0 + p_id: + - 0 + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 0.0 +outputs: + sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: + - 0.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml new file mode 100644 index 0000000000..f870a958cc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml new file mode 100644 index 0000000000..b17b233388 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml new file mode 100644 index 0000000000..4e1970e81d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml new file mode 100644 index 0000000000..77804a7240 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml new file mode 100644 index 0000000000..f870a958cc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml new file mode 100644 index 0000000000..b17b233388 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml new file mode 100644 index 0000000000..e51fa439ef --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml new file mode 100644 index 0000000000..36a0366a32 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml new file mode 100644 index 0000000000..359e0a70b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml new file mode 100644 index 0000000000..46c5c2d8e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml new file mode 100644 index 0000000000..72491bb9a3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml new file mode 100644 index 0000000000..28d0b5ec83 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml new file mode 100644 index 0000000000..5f2ff263c6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml new file mode 100644 index 0000000000..a13cb9eab1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml new file mode 100644 index 0000000000..6af5b16dfc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml new file mode 100644 index 0000000000..5aa29e2f8f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml new file mode 100644 index 0000000000..d7a4655b12 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml new file mode 100644 index 0000000000..0f65f50308 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml new file mode 100644 index 0000000000..cf1ec34cd4 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml new file mode 100644 index 0000000000..57b91572c2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml new file mode 100644 index 0000000000..f2a2dcc969 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml new file mode 100644 index 0000000000..1ae38a33e2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml new file mode 100644 index 0000000000..9544da75c2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml new file mode 100644 index 0000000000..f87aa93de1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml new file mode 100644 index 0000000000..511f270fc6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml new file mode 100644 index 0000000000..290d47c6d9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml new file mode 100644 index 0000000000..a857c8fb89 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml new file mode 100644 index 0000000000..dc430a0c11 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml new file mode 100644 index 0000000000..28b069fb8d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml new file mode 100644 index 0000000000..3baddc4a6e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml new file mode 100644 index 0000000000..e854a0bc24 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml new file mode 100644 index 0000000000..eaf060ad2c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml new file mode 100644 index 0000000000..7ae06eaaed --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml new file mode 100644 index 0000000000..890564043d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml new file mode 100644 index 0000000000..97cb991f63 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml new file mode 100644 index 0000000000..66ced63c96 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml new file mode 100644 index 0000000000..4632082177 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml new file mode 100644 index 0000000000..1d74a69a63 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml new file mode 100644 index 0000000000..191d368119 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml new file mode 100644 index 0000000000..6781e3124e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml new file mode 100644 index 0000000000..f870a958cc --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml new file mode 100644 index 0000000000..b17b233388 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml new file mode 100644 index 0000000000..72f4a54447 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml new file mode 100644 index 0000000000..08d45c8437 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml new file mode 100644 index 0000000000..5956b1e8bd --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml new file mode 100644 index 0000000000..37ab0288c3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml new file mode 100644 index 0000000000..124f4ed6ed --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml new file mode 100644 index 0000000000..1c3d08fe98 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml new file mode 100644 index 0000000000..0398e327f2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml new file mode 100644 index 0000000000..537f13e090 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml new file mode 100644 index 0000000000..c8e6ec5abb --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml new file mode 100644 index 0000000000..616f402ecb --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml new file mode 100644 index 0000000000..e7b5551103 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml new file mode 100644 index 0000000000..b6cdf9261c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml new file mode 100644 index 0000000000..37fe3deadf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml new file mode 100644 index 0000000000..0d99415244 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml new file mode 100644 index 0000000000..8a8ac55fe3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml new file mode 100644 index 0000000000..3ff9d94fb3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml new file mode 100644 index 0000000000..630e6f62b0 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml new file mode 100644 index 0000000000..41a06927c9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml new file mode 100644 index 0000000000..89ffcd9c09 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml new file mode 100644 index 0000000000..4c24dd14f3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml new file mode 100644 index 0000000000..d97197980e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml new file mode 100644 index 0000000000..d96c0ebed7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml new file mode 100644 index 0000000000..c013b27552 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml new file mode 100644 index 0000000000..7793f84bf6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml new file mode 100644 index 0000000000..e854a0bc24 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml new file mode 100644 index 0000000000..eaf060ad2c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml new file mode 100644 index 0000000000..7ae06eaaed --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml new file mode 100644 index 0000000000..890564043d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml new file mode 100644 index 0000000000..97cb991f63 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml new file mode 100644 index 0000000000..66ced63c96 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml new file mode 100644 index 0000000000..4632082177 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml new file mode 100644 index 0000000000..1d74a69a63 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml new file mode 100644 index 0000000000..191d368119 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml @@ -0,0 +1,170 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml new file mode 100644 index 0000000000..6781e3124e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml @@ -0,0 +1,93 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + p_id: + - 0 + - 1 + - 2 + - 3 + weiblich: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml new file mode 100644 index 0000000000..e022e7579d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml new file mode 100644 index 0000000000..7e75ea0b88 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + - 1936 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml new file mode 100644 index 0000000000..5c8b33dbbe --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml new file mode 100644 index 0000000000..2e9a5be27c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + - 1937 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml new file mode 100644 index 0000000000..a3bd83e9ec --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml new file mode 100644 index 0000000000..57886e44a9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + - 1938 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml new file mode 100644 index 0000000000..59df25119d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml new file mode 100644 index 0000000000..fa17837286 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + - 1939 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 62.166667 + - 62.166667 + - 62.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 62.166667 + - 62.166667 + - 62.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml new file mode 100644 index 0000000000..186c2017f3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml new file mode 100644 index 0000000000..8f7a8dc1d5 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + - 1940 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml new file mode 100644 index 0000000000..a076b37738 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml new file mode 100644 index 0000000000..18a0c61b34 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + - 1941 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 64.166667 + - 64.166667 + - 64.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 64.166667 + - 64.166667 + - 64.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml new file mode 100644 index 0000000000..b4f0da9fb2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml new file mode 100644 index 0000000000..6f38324fb1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + - 1942 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml new file mode 100644 index 0000000000..9b9fffba71 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml new file mode 100644 index 0000000000..faa63d5da2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + - 1943 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml new file mode 100644 index 0000000000..5676805684 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml new file mode 100644 index 0000000000..617534a32c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + - 1944 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml new file mode 100644 index 0000000000..4df93bc6fd --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml new file mode 100644 index 0000000000..ed0e876223 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + - 1945 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml new file mode 100644 index 0000000000..3f5bf77d04 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml new file mode 100644 index 0000000000..01460bdfc9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml new file mode 100644 index 0000000000..a57eaeb5f7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml new file mode 100644 index 0000000000..02691cc114 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml new file mode 100644 index 0000000000..6240ceaeb8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml @@ -0,0 +1,281 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__für_frauen__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml new file mode 100644 index 0000000000..24debeacd6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml @@ -0,0 +1,148 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + weiblich: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + - 62.166667 + - 62.166667 + - 62.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml new file mode 100644 index 0000000000..898719bd6f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml new file mode 100644 index 0000000000..908bbd2cea --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1946 + - 1946 + - 1946 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.0 + - 65.0 + - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml new file mode 100644 index 0000000000..c9f80093d9 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml new file mode 100644 index 0000000000..30ec142a19 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1947 + - 1947 + - 1947 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.083333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml new file mode 100644 index 0000000000..93a5f91506 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml new file mode 100644 index 0000000000..bcaa6207a1 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1948 + - 1948 + - 1948 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.0 + - 63.0 + - 65.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml new file mode 100644 index 0000000000..8860d4ae7a --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml @@ -0,0 +1,274 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 2 + - 2 + - 2 + - 3 + - 3 + - 3 + - 4 + - 4 + - 4 + - 5 + - 5 + - 5 + - 6 + - 6 + - 6 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.083333 + - 63.0 + - 65.25 + - 65.166667 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.083333 + - 65.083333 + - 65.25 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml new file mode 100644 index 0000000000..79adaa2ac6 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml @@ -0,0 +1,274 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + - 1949 + geburtsmonat: + - 1 + - 1 + - 1 + - 2 + - 2 + - 2 + - 3 + - 3 + - 3 + - 4 + - 4 + - 4 + - 5 + - 5 + - 5 + - 6 + - 6 + - 6 + hh_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.083333 + - 63.0 + - 65.25 + - 65.166667 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.083333 + - 65.083333 + - 65.25 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml new file mode 100644 index 0000000000..690ec4dbaf --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.333333 + - 63.0 + - 65.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.333333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.333333 + - 65.333333 + - 65.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml new file mode 100644 index 0000000000..1f1753e2b7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1950 + - 1950 + - 1950 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.333333 + - 63.0 + - 65.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.333333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.333333 + - 65.333333 + - 65.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml new file mode 100644 index 0000000000..b0c42a6ec3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.416667 + - 63.0 + - 65.416667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.416667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.416667 + - 65.416667 + - 65.416667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml new file mode 100644 index 0000000000..97756fbba8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1951 + - 1951 + - 1951 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.416667 + - 63.0 + - 65.416667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.416667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.416667 + - 65.416667 + - 65.416667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml new file mode 100644 index 0000000000..768a7ad7f8 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + - 63.0 + - 65.5 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.5 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.5 + - 65.5 + - 65.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.5 + - 65.5 + - 65.5 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.5 + - 65.5 + - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml new file mode 100644 index 0000000000..e368a29483 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1952 + - 1952 + - 1952 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.5 + - 63.0 + - 65.5 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.5 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.5 + - 65.5 + - 65.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.5 + - 65.5 + - 65.5 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.5 + - 65.5 + - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml new file mode 100644 index 0000000000..c06e45fdff --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.583333 + - 63.166667 + - 65.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.583333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.583333 + - 65.583333 + - 65.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml new file mode 100644 index 0000000000..2aad8e89ff --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1953 + - 1953 + - 1953 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.583333 + - 63.166667 + - 65.583333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.583333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.583333 + - 65.583333 + - 65.583333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml new file mode 100644 index 0000000000..3032543bae --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + - 1954 + - 1954 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.666667 + - 63.333333 + - 65.666667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.666667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.666667 + - 65.666667 + - 65.666667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml new file mode 100644 index 0000000000..727cf17fca --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1954 + - 1954 + - 1954 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.666667 + - 63.333333 + - 65.666667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.666667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.666667 + - 65.666667 + - 65.666667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml new file mode 100644 index 0000000000..599c76195c --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + - 1955 + - 1955 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.75 + - 63.5 + - 65.75 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.75 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.5 + - 63.5 + - 63.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.75 + - 65.75 + - 65.75 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.75 + - 65.75 + - 65.75 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.75 + - 65.75 + - 65.75 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml new file mode 100644 index 0000000000..670f096b25 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1955 + - 1955 + - 1955 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.75 + - 63.5 + - 65.75 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.75 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.5 + - 63.5 + - 63.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.75 + - 65.75 + - 65.75 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.75 + - 65.75 + - 65.75 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.75 + - 65.75 + - 65.75 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml new file mode 100644 index 0000000000..81b262f39f --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1956 + - 1956 + - 1956 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.833333 + - 63.666667 + - 65.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.833333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.666667 + - 63.666667 + - 63.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.833333 + - 65.833333 + - 65.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml new file mode 100644 index 0000000000..b386b91844 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1956 + - 1956 + - 1956 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.833333 + - 63.666667 + - 65.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.833333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.666667 + - 63.666667 + - 63.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.833333 + - 65.833333 + - 65.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml new file mode 100644 index 0000000000..c1710db0c3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1957 + - 1957 + - 1957 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.916667 + - 63.833333 + - 65.916667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.916667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.916667 + - 65.916667 + - 65.916667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml new file mode 100644 index 0000000000..7ee6c24c11 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1957 + - 1957 + - 1957 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 65.916667 + - 63.833333 + - 65.916667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.916667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 65.916667 + - 65.916667 + - 65.916667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml new file mode 100644 index 0000000000..83c7fcf5cb --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1958 + - 1958 + - 1958 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.0 + - 64.0 + - 66.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.0 + - 64.0 + - 64.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.0 + - 66.0 + - 66.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.0 + - 66.0 + - 66.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.0 + - 66.0 + - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml new file mode 100644 index 0000000000..f04d61049d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1958 + - 1958 + - 1958 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.0 + - 64.0 + - 66.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.0 + - 64.0 + - 64.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.0 + - 66.0 + - 66.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.0 + - 66.0 + - 66.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.0 + - 66.0 + - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml new file mode 100644 index 0000000000..e54c55ccd3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1959 + - 1959 + - 1959 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.166667 + - 64.166667 + - 66.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.166667 + - 66.166667 + - 66.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml new file mode 100644 index 0000000000..c611e79252 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1959 + - 1959 + - 1959 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.166667 + - 64.166667 + - 66.166667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.166667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.166667 + - 66.166667 + - 66.166667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml new file mode 100644 index 0000000000..dac8f19a4b --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1960 + - 1960 + - 1960 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.333333 + - 64.333333 + - 66.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.333333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.333333 + - 64.333333 + - 64.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.333333 + - 66.333333 + - 66.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml new file mode 100644 index 0000000000..17b5d75e4d --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1960 + - 1960 + - 1960 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.333333 + - 64.333333 + - 66.333333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.333333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.333333 + - 64.333333 + - 64.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.333333 + - 66.333333 + - 66.333333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml new file mode 100644 index 0000000000..439ce6e4a2 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1961 + - 1961 + - 1961 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.5 + - 64.5 + - 66.5 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.5 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.5 + - 64.5 + - 64.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.5 + - 66.5 + - 66.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.5 + - 66.5 + - 66.5 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.5 + - 66.5 + - 66.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml new file mode 100644 index 0000000000..4bcaff1662 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1961 + - 1961 + - 1961 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.5 + - 64.5 + - 66.5 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.5 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.5 + - 64.5 + - 64.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.5 + - 66.5 + - 66.5 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.5 + - 66.5 + - 66.5 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.5 + - 66.5 + - 66.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml new file mode 100644 index 0000000000..08f92b64b0 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1962 + - 1962 + - 1962 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.666667 + - 64.666667 + - 66.666667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.666667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.666667 + - 64.666667 + - 64.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.666667 + - 66.666667 + - 66.666667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml new file mode 100644 index 0000000000..699d6bebb3 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1962 + - 1962 + - 1962 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.666667 + - 64.666667 + - 66.666667 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.666667 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.666667 + - 64.666667 + - 64.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.666667 + - 66.666667 + - 66.666667 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml new file mode 100644 index 0000000000..d50ce19ae7 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1963 + - 1963 + - 1963 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.833333 + - 64.833333 + - 66.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.833333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.833333 + - 64.833333 + - 64.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.833333 + - 66.833333 + - 66.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml new file mode 100644 index 0000000000..8566cb84ff --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1963 + - 1963 + - 1963 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 66.833333 + - 64.833333 + - 66.833333 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.833333 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 64.833333 + - 64.833333 + - 64.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 66.833333 + - 66.833333 + - 66.833333 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml new file mode 100644 index 0000000000..0af0b3f30e --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1964 + - 1964 + - 1964 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - true + - true + - true + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + - 65.0 + - 67.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 67.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 67.0 + - 67.0 + - 67.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 67.0 + - 67.0 + - 67.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 67.0 + - 67.0 + - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml new file mode 100644 index 0000000000..41c4e7ac41 --- /dev/null +++ b/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml @@ -0,0 +1,64 @@ +--- +info: + note: '' + source: Made up from the law +inputs: + assumed: {} + provided: + geburtsjahr: + - 1964 + - 1964 + - 1964 + geburtsmonat: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + weiblich: + - false + - false + - false + sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + - false + - true + - false + sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + - true + - true + - false +outputs: + sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + - 67.0 + - 65.0 + - 67.0 + sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 67.0 + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: + - 65.0 + - 65.0 + - 65.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze: + - 67.0 + - 67.0 + - 67.0 + sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + sozialversicherung__rente__altersrente__referenzalter_abschlag: + - 67.0 + - 67.0 + - 67.0 + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: + - 67.0 + - 67.0 + - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_frauen.yaml deleted file mode 100644 index 3cf0cbf2a6..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_frauen.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 21 - hh_id: - - 21 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - true - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 180.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 11.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - true - ges_rente_wartezeit_15: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj.yaml deleted file mode 100644 index d98899382d..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 24 - hh_id: - - 24 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_langj: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_arbeitsl.yaml deleted file mode 100644 index bde7204034..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_arbeitsl.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 22 - hh_id: - - 22 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_langj: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_frauen.yaml deleted file mode 100644 index 4e049fd2b2..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_langj_and_frauen.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - true - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 12.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_langj: - - true - ges_rente_vorauss_frauen: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_ohne_vorzeitig.yaml deleted file mode 100644 index 20b9376b88..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_ohne_vorzeitig.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 25 - hh_id: - - 25 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 100.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_wegen_arbeitsl.yaml deleted file mode 100644 index fd2545b904..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1930_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1937_wegen_arbeitsl.yaml deleted file mode 100644 index fdc97890cc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1937_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1937 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1938_wegen_arbeitsl.yaml deleted file mode 100644 index 9dcac71a51..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1938_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1938 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1939_wegen_arbeitsl.yaml deleted file mode 100644 index f058c43d05..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1939_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1939 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1940_wegen_arbeitsl.yaml deleted file mode 100644 index b50bef8fee..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1940_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1941_wegen_arbeitsl.yaml deleted file mode 100644 index 86045b6fc9..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1941_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1942_wegen_arbeitsl.yaml deleted file mode 100644 index 301ece70f7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1942_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.333333 - referenzalter_abschlag: - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1943_wegen_arbeitsl.yaml deleted file mode 100644 index 1136336ba1..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1943_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.583333 - referenzalter_abschlag: - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1944_wegen_arbeitsl.yaml deleted file mode 100644 index e2034b9137..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1944_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - geburtsjahr: - - 1944 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.833333 - referenzalter_abschlag: - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1945_wegen_arbeitsl.yaml deleted file mode 100644 index 92fcf0044f..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1945_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.083333 - referenzalter_abschlag: - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1946_wegen_arbeitsl.yaml deleted file mode 100644 index 2fc123d7b8..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1946_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - geburtsjahr: - - 1946 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.583333 - referenzalter_abschlag: - - 61.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1947_wegen_arbeitsl.yaml deleted file mode 100644 index 186bd17642..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1947_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - geburtsjahr: - - 1947 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.083333 - referenzalter_abschlag: - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1948_wegen_arbeitsl.yaml deleted file mode 100644 index 68c193dc63..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1948_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - geburtsjahr: - - 1948 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.583333 - referenzalter_abschlag: - - 62.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1949_wegen_arbeitsl.yaml deleted file mode 100644 index 686899662b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1949_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - geburtsjahr: - - 1949 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.083333 - referenzalter_abschlag: - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1950_wegen_arbeitsl.yaml deleted file mode 100644 index 8413ca0e5c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1950_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 15 - hh_id: - - 15 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.583333 - referenzalter_abschlag: - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1951_wegen_arbeitsl.yaml deleted file mode 100644 index 522e4aeb35..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1951_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 16 - hh_id: - - 16 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.083333 - referenzalter_abschlag: - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1952_wegen_arbeitsl.yaml deleted file mode 100644 index 094b75d414..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1952_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 17 - hh_id: - - 17 - geburtsjahr: - - 1952 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.583333 - referenzalter_abschlag: - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1953_wegen_arbeitsl.yaml deleted file mode 100644 index 4fa4c90278..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1953_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1954_wegen_arbeitsl.yaml deleted file mode 100644 index 169832e526..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1954_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - geburtsjahr: - - 1954 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1955_wegen_arbeitsl.yaml deleted file mode 100644 index bfe7127c18..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/cohort_1955_wegen_arbeitsl.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - geburtsjahr: - - 1955 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/1991/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/renten_anspr/1991/eligibility_pathways.yaml deleted file mode 100644 index a49b7f1cdc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1991/eligibility_pathways.yaml +++ /dev/null @@ -1,297 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: {} - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1952 - - 1952 - - 1952 - - 1952 - m_pflichtbeitrag: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_freiw_beitrag: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_ersatzzeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - ges_rente_anrechnungszeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_kind_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_pfleg_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - y_pflichtbeitr_ab_40: - - 0.0 - - 0.0 - - 0.0 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - arbeitsl_1y_past_585: - - true - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - pflichtbeitr_8_in_10: - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true -outputs: - ges_rente_vorauss_regelrente: - - false - - true - - true - - true - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1930_wegen_arbeitsl.yaml deleted file mode 100644 index ed0b9c17e2..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1930_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1937_wegen_arbeitsl.yaml deleted file mode 100644 index f6845d2db7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1937_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1937 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1938_wegen_arbeitsl.yaml deleted file mode 100644 index b75d67f072..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1938_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1938 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1939_wegen_arbeitsl.yaml deleted file mode 100644 index 3bb4050abc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1939_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1939 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1940_wegen_arbeitsl.yaml deleted file mode 100644 index f76d90f49a..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1940_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1941_wegen_arbeitsl.yaml deleted file mode 100644 index fc440940ed..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1941_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1942_wegen_arbeitsl.yaml deleted file mode 100644 index 4417706bdd..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1942_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.333333 - referenzalter_abschlag: - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.333333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1943_wegen_arbeitsl.yaml deleted file mode 100644 index 8e85d17221..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1943_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.583333 - referenzalter_abschlag: - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1944_wegen_arbeitsl.yaml deleted file mode 100644 index 42b4840b0e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1944_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - geburtsjahr: - - 1944 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.833333 - referenzalter_abschlag: - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.833333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1945_wegen_arbeitsl.yaml deleted file mode 100644 index b114cc2237..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1945_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.083333 - referenzalter_abschlag: - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 61.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1946_wegen_arbeitsl.yaml deleted file mode 100644 index 58f898b059..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1946_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - geburtsjahr: - - 1946 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.583333 - referenzalter_abschlag: - - 61.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 61.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1947_wegen_arbeitsl.yaml deleted file mode 100644 index f536c6794a..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1947_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - geburtsjahr: - - 1947 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.083333 - referenzalter_abschlag: - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 62.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1948_wegen_arbeitsl.yaml deleted file mode 100644 index dcd1e00abe..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1948_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - geburtsjahr: - - 1948 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.583333 - referenzalter_abschlag: - - 62.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 62.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1949_wegen_arbeitsl.yaml deleted file mode 100644 index d48fa28349..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1949_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - geburtsjahr: - - 1949 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.083333 - referenzalter_abschlag: - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1950_wegen_arbeitsl.yaml deleted file mode 100644 index 49ffda7b0f..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1950_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 15 - hh_id: - - 15 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.583333 - referenzalter_abschlag: - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1951_wegen_arbeitsl.yaml deleted file mode 100644 index 4fffe75be0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1951_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 16 - hh_id: - - 16 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.083333 - referenzalter_abschlag: - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1952_wegen_arbeitsl.yaml deleted file mode 100644 index 2bffa118b7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1952_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 17 - hh_id: - - 17 - geburtsjahr: - - 1952 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.583333 - referenzalter_abschlag: - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 61.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1953_wegen_arbeitsl.yaml deleted file mode 100644 index 0d06b82c66..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1953_wegen_arbeitsl.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1954_wegen_arbeitsl.yaml deleted file mode 100644 index 83866c2466..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1954_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - geburtsjahr: - - 1954 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1955_wegen_arbeitsl.yaml deleted file mode 100644 index 68370b411e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1992/cohort_1955_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - geburtsjahr: - - 1955 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-07-01/cohort_1936_wegen_arbeitsl.yaml deleted file mode 100644 index 2faaa00d17..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 62 - jahr: - - 1996 - geburtsjahr: - - 1936 - entgeltp: - - 31.0625 - geburtsmonat: - - 2 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - _ges_rente_langj_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1930_wegen_arbeitsl.yaml deleted file mode 100644 index 8524671b89..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1930_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1937_wegen_arbeitsl.yaml deleted file mode 100644 index 9e8d14bc2a..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1937_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1937 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1938_wegen_arbeitsl.yaml deleted file mode 100644 index 217bdf3cee..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1938_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1938 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.083333 - referenzalter_abschlag: - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 61.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1939_wegen_arbeitsl.yaml deleted file mode 100644 index a230799902..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1939_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1939 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.083333 - referenzalter_abschlag: - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 62.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 84f6098cab..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 21 - hh_id: - - 21 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_wegen_arbeitsl.yaml deleted file mode 100644 index b50d96a544..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1940_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 31688b9803..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 22 - hh_id: - - 22 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_wegen_arbeitsl.yaml deleted file mode 100644 index 83d2d8858b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1941_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index e09df33c56..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.333333 - referenzalter_abschlag: - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_wegen_arbeitsl.yaml deleted file mode 100644 index 15ab76af43..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1942_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 60058d6529..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.583333 - referenzalter_abschlag: - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_wegen_arbeitsl.yaml deleted file mode 100644 index 04db3f3ded..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1943_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index dadbea810d..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 24 - hh_id: - - 24 - geburtsjahr: - - 1944 - geburtsmonat: - - 2 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.833333 - referenzalter_abschlag: - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_wegen_arbeitsl.yaml deleted file mode 100644 index 16049b5e01..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1944_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - geburtsjahr: - - 1944 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1945_wegen_arbeitsl.yaml deleted file mode 100644 index 2af595c03c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1945_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1946_wegen_arbeitsl.yaml deleted file mode 100644 index 2a0943a437..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1946_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - geburtsjahr: - - 1946 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1947_wegen_arbeitsl.yaml deleted file mode 100644 index fa4193a0cc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1947_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - geburtsjahr: - - 1947 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1948_wegen_arbeitsl.yaml deleted file mode 100644 index 6224ff65c3..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1948_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - geburtsjahr: - - 1948 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 - referenzalter_abschlag: - - 63.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1949_wegen_arbeitsl.yaml deleted file mode 100644 index 55902f412c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1949_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - geburtsjahr: - - 1949 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.083333 - referenzalter_abschlag: - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1950_wegen_arbeitsl.yaml deleted file mode 100644 index 3bca54c55b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1950_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 15 - hh_id: - - 15 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.583333 - referenzalter_abschlag: - - 63.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.583333 - _ges_rente_arbeitsl_vorzeitig: - - 60.583333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze: - - 63.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1951_wegen_arbeitsl.yaml deleted file mode 100644 index 1fbd804cb4..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1951_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 16 - hh_id: - - 16 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.083333 - referenzalter_abschlag: - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1952_wegen_arbeitsl.yaml deleted file mode 100644 index 97db3fd82c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1952_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 17 - hh_id: - - 17 - geburtsjahr: - - 1952 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.583333 - referenzalter_abschlag: - - 64.583333 - _ges_rente_altersgrenze_vorzeitig: - - 61.583333 - _ges_rente_arbeitsl_vorzeitig: - - 61.583333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 61.583333 - _ges_rente_arbeitsl_altersgrenze: - - 64.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.583333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1953_wegen_arbeitsl.yaml deleted file mode 100644 index 8486f4fdc8..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1953_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1954_wegen_arbeitsl.yaml deleted file mode 100644 index 48fdc08049..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1954_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - geburtsjahr: - - 1954 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1955_wegen_arbeitsl.yaml deleted file mode 100644 index 08f8102c12..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1996-08-01/cohort_1955_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - geburtsjahr: - - 1955 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig: - - 62.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1930_wegen_arbeitsl.yaml deleted file mode 100644 index 48e67de46c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1930_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml deleted file mode 100644 index fafd3858c0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - geburtsjahr: - - 1933 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - false - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml deleted file mode 100644 index aaa0dbcaf0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - geburtsjahr: - - 1936 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1937_wegen_arbeitsl.yaml deleted file mode 100644 index b680f63e07..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1937_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1937 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1938_wegen_arbeitsl.yaml deleted file mode 100644 index 9349c43ea6..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1938_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1938 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.083333 - referenzalter_abschlag: - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 61.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1939_wegen_arbeitsl.yaml deleted file mode 100644 index 5d40290744..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1939_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1939 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.083333 - referenzalter_abschlag: - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 62.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index dcf729fa47..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_wegen_arbeitsl.yaml deleted file mode 100644 index 31bf8d2f13..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1940_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.083333 - referenzalter_abschlag: - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 232d1d01b0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_wegen_arbeitsl.yaml deleted file mode 100644 index f3b56c9413..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1941_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.083333 - referenzalter_abschlag: - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 0e33f95758..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.333333 - referenzalter_abschlag: - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_wegen_arbeitsl.yaml deleted file mode 100644 index b2eaaebf02..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1942_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index 55e343d292..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.583333 - referenzalter_abschlag: - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml deleted file mode 100644 index fd0bb3d85d..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - geburtsjahr: - - 1944 - geburtsmonat: - - 2 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.833333 - referenzalter_abschlag: - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1930_wegen_arbeitsl.yaml deleted file mode 100644 index e17513851b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1930_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1930 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml deleted file mode 100644 index b8d1ee7647..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - geburtsjahr: - - 1933 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - false - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml deleted file mode 100644 index 20c7985776..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - geburtsjahr: - - 1936 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1937_wegen_arbeitsl.yaml deleted file mode 100644 index 0f27e78ebc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1937_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1937 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 60.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1938_wegen_arbeitsl.yaml deleted file mode 100644 index cfcabaa659..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1938_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1938 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 61.083333 - referenzalter_abschlag: - - 61.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 61.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1939_wegen_arbeitsl.yaml deleted file mode 100644 index 2de7094f5e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1939_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1939 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 62.083333 - referenzalter_abschlag: - - 62.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 62.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 62.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml deleted file mode 100644 index 8ea2639e04..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 - referenzalter_abschlag: - - 60.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_wegen_arbeitsl.yaml deleted file mode 100644 index ddc39ed3ea..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1940_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.083333 - referenzalter_abschlag: - - 63.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 63.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 63.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml deleted file mode 100644 index 19c8235c05..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.083333 - referenzalter_abschlag: - - 60.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_wegen_arbeitsl.yaml deleted file mode 100644 index a083849c02..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1941_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1941 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 64.083333 - referenzalter_abschlag: - - 64.083333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 64.083333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 64.083333 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml deleted file mode 100644 index 1752988f16..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.333333 - referenzalter_abschlag: - - 60.333333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.333333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_wegen_arbeitsl.yaml deleted file mode 100644 index c241675984..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1942_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - geburtsjahr: - - 1942 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml deleted file mode 100644 index f2e626e541..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - geburtsjahr: - - 1943 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.583333 - referenzalter_abschlag: - - 60.583333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.583333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml deleted file mode 100644 index 78485bccf5..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - geburtsjahr: - - 1944 - geburtsmonat: - - 2 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 60.833333 - referenzalter_abschlag: - - 60.833333 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 60.833333 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1945_wegen_arbeitsl.yaml deleted file mode 100644 index 1f37232fe7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1945_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 15 - hh_id: - - 15 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1946_wegen_arbeitsl.yaml deleted file mode 100644 index 7b97b22fe1..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1946_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 16 - hh_id: - - 16 - geburtsjahr: - - 1946 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig: - - 60.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1947_wegen_arbeitsl.yaml deleted file mode 100644 index b62757f975..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1947_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 17 - hh_id: - - 17 - geburtsjahr: - - 1947 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig: - - 61.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 61.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1948_wegen_arbeitsl.yaml deleted file mode 100644 index 8ac215989b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1948_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - geburtsjahr: - - 1948 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 62.083333 - _ges_rente_arbeitsl_vorzeitig: - - 62.083333 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 62.083333 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1949_wegen_arbeitsl.yaml deleted file mode 100644 index eb40a617c0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1949_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - geburtsjahr: - - 1949 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 63.0 - _ges_rente_arbeitsl_vorzeitig: - - 63.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml deleted file mode 100644 index 2d3aa08e47..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - true - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - referenzalter_abschlag: - - 65.0 - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig: - - 60.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 60.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1952_wegen_arbeitsl.yaml deleted file mode 100644 index e6e559aa23..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2007-08-01/cohort_1952_wegen_arbeitsl.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 21 - hh_id: - - 21 - geburtsjahr: - - 1952 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 - _ges_rente_arbeitsl_vorzeitig: - - 63.0 - _ges_rente_arbeitsl_vorzeitig_ohne_vertrauenss: - - 63.0 - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - ges_rente_vorauss_vorzeitig: - - false - ges_rente_vorauss_arbeitsl: - - false - ges_rente_vorauss_frauen: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_1.yaml deleted file mode 100644 index 8699b9eebb..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_1.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - bruttolohn_m: - - 600.0 - wohnort_ost: - - false - alter: - - 39 - jahr: - - 2010 - geburtsjahr: - - 1971 - entgeltp_west: - - 18.2826 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 18.51378418 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.231184177 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_19.yaml deleted file mode 100644 index a85ee2dc76..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_19.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Kurz-vor-der-Rente/Wann-kann-ich-in-Rente-gehen/Wann-kann-ich-in-Rente-gehen_detailseite.html" -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - true - alter: - - 59 - jahr: - - 2010 - geburtsjahr: - - 1956 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 35.2067 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 36.99837737 - entgeltp_update_lohn: - - 1.79167737 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.83333333 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_2.yaml deleted file mode 100644 index b12e4be590..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_2.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - bruttolohn_m: - - 900.0 - wohnort_ost: - - false - alter: - - 42 - jahr: - - 2010 - geburtsjahr: - - 1968 - entgeltp_west: - - 21.3696 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 21.71637627 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.346776265 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_24.yaml deleted file mode 100644 index efd95e8caa..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_24.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: 'Beispiel: Erna Rüstig (Altersrente für Frauen)' - source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ -inputs: - provided: - p_id: - - 24 - hh_id: - - 24 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 71 - jahr: - - 2010 - geburtsjahr: - - 1938 - entgeltp_west: - - 22.42 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 9.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 60.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 15.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 108.0 - m_pfleg_berücks_zeit: - - 10.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 22.99796044 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.577960442 - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_25.yaml deleted file mode 100644 index a7734f0a24..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_25.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2010 - geburtsjahr: - - 1940 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 64.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_3.yaml deleted file mode 100644 index 30311b95de..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_3.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: >- - From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected - based on source. - source: >- - https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - bruttolohn_m: - - 900.0 - wohnort_ost: - - true - alter: - - 42 - jahr: - - 2010 - geburtsjahr: - - 1968 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 21.3696 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 21.77622985 - entgeltp_update_lohn: - - 0.406629848 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_30.yaml deleted file mode 100644 index 6ef410e9bd..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_30.yaml +++ /dev/null @@ -1,72 +0,0 @@ ---- -info: - note: >- - 'based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a - mixed(east/west) earning biography' - source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ -inputs: - provided: - p_id: - - 30 - hh_id: - - 30 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 71 - jahr: - - 2010 - geburtsjahr: - - 1938 - entgeltp_west: - - 12.42 - entgeltp_ost: - - 10.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 9.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 60.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 15.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 108.0 - m_pfleg_berücks_zeit: - - 10.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 12.99796044 - entgeltp_ost_updated: - - 10.0 - entgeltp_update_lohn: - - 0.577960442 - _ges_rente_altersgrenze_abschlagsfrei: - - 60.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_4.yaml deleted file mode 100644 index aa5d52a36e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_4.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - bruttolohn_m: - - 1200.0 - wohnort_ost: - - false - alter: - - 46 - jahr: - - 2010 - geburtsjahr: - - 1964 - entgeltp_west: - - 25.3484 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 25.81076835 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.462368353 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_5.yaml deleted file mode 100644 index 7653d900c2..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_5.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 43 - jahr: - - 2010 - geburtsjahr: - - 1967 - entgeltp_west: - - 22.42 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 22.99796044 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.577960442 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_6.yaml deleted file mode 100644 index c47807c6bc..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_6.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - false - alter: - - 59 - jahr: - - 2010 - geburtsjahr: - - 1951 - entgeltp_west: - - 35.2067 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 37.32588829 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 2.119188287 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.41666667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_7.yaml deleted file mode 100644 index 5efb66f9b6..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2010-07-01/hh_id_7.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower. Verified or corrected using source. - source: >- - https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - true - alter: - - 59 - jahr: - - 2010 - geburtsjahr: - - 1951 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 35.2067 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 36.99837737 - entgeltp_update_lohn: - - 1.79167737 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.41666667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_10.yaml deleted file mode 100644 index df54ec9318..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_10.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - bruttolohn_m: - - 700.0 - wohnort_ost: - - false - alter: - - 52 - jahr: - - 2012 - geburtsjahr: - - 1960 - entgeltp_west: - - 30.5626 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 30.81713003 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.254530028 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.33333333 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_11.yaml deleted file mode 100644 index 5b30749236..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_11.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 53 - jahr: - - 2012 - geburtsjahr: - - 1959 - entgeltp_west: - - 31.0625 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 31.0625 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.16666667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_8.yaml deleted file mode 100644 index 9045994264..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_8.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - bruttolohn_m: - - 5000.0 - wohnort_ost: - - false - alter: - - 27 - jahr: - - 2012 - geburtsjahr: - - 1985 - entgeltp_west: - - 5.9814 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 7.799471632 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 1.818071632 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_9.yaml deleted file mode 100644 index 0b11f7cf1e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2012-07-01/hh_id_9.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: Verified or corrected using source. - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - bruttolohn_m: - - 300.0 - wohnort_ost: - - false - alter: - - 30 - jahr: - - 2012 - geburtsjahr: - - 1982 - entgeltp_west: - - 8.5572 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 8.666284298 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.109084298 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/renten_anspr/2014-07-01/hh_id_25.yaml deleted file mode 100644 index d7104d0b72..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2014-07-01/hh_id_25.yaml +++ /dev/null @@ -1,78 +0,0 @@ ---- -info: - note: >- - Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) - https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ - source: '' -inputs: - provided: - p_id: - - 25 - hh_id: - - 25 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 65 - jahr: - - 2014 - geburtsjahr: - - 1948 - entgeltp_west: - - 22.42 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 9.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 60.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 15.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 420.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 108.0 - m_pfleg_berücks_zeit: - - 10.0 - ges_rente_vorauss_besond_langj: - - false - assumed: {} -outputs: - entgeltp_west_updated: - - 22.99796044 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.577960442 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/cohort_1951_wegen_arbeitsl.yaml deleted file mode 100644 index 310aebbd8e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/cohort_1951_wegen_arbeitsl.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - vertra_arbeitsl_2006: - - false - assumed: {} -outputs: - _ges_rente_arbeitsl_altersgrenze: - - 65.0 - _ges_rente_arbeitsl_vorzeitig: - - 63.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/eligibility_pathways.yaml deleted file mode 100644 index 22745229f8..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/eligibility_pathways.yaml +++ /dev/null @@ -1,331 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: {} - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false - geburtsjahr: - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1951 - - 1952 - - 1952 - - 1952 - - 1952 - m_pflichtbeitrag: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_freiw_beitrag: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_ersatzzeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - ges_rente_anrechnungszeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - ges_rente_anrechnungszeit_45: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 420.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_kind_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - m_pfleg_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - y_pflichtbeitr_ab_40: - - 0.0 - - 0.0 - - 0.0 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - arbeitsl_1y_past_585: - - true - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - pflichtbeitr_8_in_10: - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true -outputs: - ges_rente_vorauss_regelrente: - - false - - true - - true - - true - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_langj: - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_besond_langj: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - ges_rente_vorauss_arbeitsl: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - false - - false - - false - - false - ges_rente_vorauss_frauen: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - false - - false - - false - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_12.yaml deleted file mode 100644 index fcb8083a49..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_12.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - bruttolohn_m: - - 300.0 - wohnort_ost: - - false - alter: - - 57 - jahr: - - 2015 - geburtsjahr: - - 1958 - entgeltp_west: - - 34.9752 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 35.07700132 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.101801318 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_13.yaml deleted file mode 100644 index e8c2482614..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_13.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 13 - hh_id: - - 13 - bruttolohn_m: - - 600.0 - wohnort_ost: - - false - alter: - - 58 - jahr: - - 2015 - geburtsjahr: - - 1957 - entgeltp_west: - - 36.084 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 36.28760264 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.203602636 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.91666667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_14.yaml deleted file mode 100644 index a4858e6a80..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_14.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 14 - hh_id: - - 14 - bruttolohn_m: - - 900.0 - wohnort_ost: - - false - alter: - - 33 - jahr: - - 2015 - geburtsjahr: - - 1982 - entgeltp_west: - - 10.6965 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 11.00190395 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.305403953 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_15.yaml deleted file mode 100644 index 394369c844..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_15.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: 'From eastern Germany: earns more Entgeltpunkte for same wage.' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 15 - hh_id: - - 15 - bruttolohn_m: - - 900.0 - wohnort_ost: - - true - alter: - - 33 - jahr: - - 2015 - geburtsjahr: - - 1982 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 10.6965 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - m_pflichtbeitrag: - - 60.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 11.04777563 - entgeltp_update_lohn: - - 0.351275627 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_16.yaml deleted file mode 100644 index ec130d310c..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_16.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 16 - hh_id: - - 16 - bruttolohn_m: - - 1200.0 - wohnort_ost: - - false - alter: - - 45 - jahr: - - 2015 - geburtsjahr: - - 1970 - entgeltp_west: - - 23.6979 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - m_pflichtbeitrag: - - 60.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 24.10510527 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.407205271 - _ges_rente_altersgrenze_abschlagsfrei: - - 67.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_17.yaml deleted file mode 100644 index 5505d9cfd1..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_17.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 17 - hh_id: - - 17 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1952 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_18.yaml deleted file mode 100644 index 8c8f0102bf..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_18.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1944 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_19.yaml deleted file mode 100644 index 1183845fe7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_19.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1940 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 64.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_25.yaml deleted file mode 100644 index 1183845fe7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_25.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1940 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 64.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_26.yaml deleted file mode 100644 index 2681828888..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_26.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1940 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 11.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 61.0 - ges_rente_vorauss_vorzeitig: - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_27.yaml deleted file mode 100644 index fd5b453a3a..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_27.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 63 - jahr: - - 2015 - geburtsjahr: - - 1952 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 11.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 - ges_rente_vorauss_vorzeitig: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_28.yaml deleted file mode 100644 index 519efed886..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_28.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 62 - jahr: - - 2015 - geburtsjahr: - - 1948 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 182.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - _ges_rente_altersgrenze_vorzeitig: - - 63.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_29.yaml deleted file mode 100644 index f7e2bd01ba..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2015-07-01/hh_id_29.yaml +++ /dev/null @@ -1,86 +0,0 @@ ---- -info: - note: '' - source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html -inputs: - provided: - p_id: - - 18 - hh_id: - - 18 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 62 - jahr: - - 2015 - geburtsjahr: - - 1948 - entgeltp_west: - - 39.3795 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 12 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - true - y_pflichtbeitr_ab_40: - - 11.0 - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 430.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 39.88850659 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.509006589 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.0 - ges_rente_vorauss_vorzeitig: - - true - ges_rente_vorauss_arbeitsl: - - true - _ges_rente_altersgrenze_vorzeitig: - - 60.0 - ges_rente_vorauss_langj: - - true - ges_rente_vorauss_frauen: - - true - referenzalter_abschlag: - - 65.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml deleted file mode 100644 index 553ac73dc7..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - geburtsjahr: - - 1952 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 540.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml deleted file mode 100644 index ec15951f78..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 540.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.166667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml deleted file mode 100644 index 56c9d1e598..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - geburtsjahr: - - 1954 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 540.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.333333 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml deleted file mode 100644 index 847665437a..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - geburtsjahr: - - 1955 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 540.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 63.5 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_vorzeitig.yaml deleted file mode 100644 index 14b4df8010..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1955_vorzeitig.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - geburtsjahr: - - 1955 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 65.75 - _ges_rente_altersgrenze_vorzeitig: - - 65.75 - ges_rente_vorauss_vorzeitig: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1958_vorzeitig.yaml deleted file mode 100644 index 50450ab8f8..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/cohort_1958_vorzeitig.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - geburtsjahr: - - 1958 - geburtsmonat: - - 1 - weiblich: - - false - pflichtbeitr_8_in_10: - - true - arbeitsl_1y_past_585: - - true - m_pflichtbeitrag: - - 300.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_arbeitsunfähig: - - 0.0 - m_arbeitsl: - - 0.0 - m_schul_ausbild: - - 0.0 - m_ausbild_suche: - - 0.0 - m_mutterschutz: - - 0.0 - y_pflichtbeitr_ab_40: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - assumed: {} -outputs: - _ges_rente_altersgrenze_abschlagsfrei: - - 66.0 - _ges_rente_altersgrenze_vorzeitig: - - 66.0 - ges_rente_vorauss_vorzeitig: - - false diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/eligibility_pathways.yaml deleted file mode 100644 index dabfc4c74e..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/eligibility_pathways.yaml +++ /dev/null @@ -1,116 +0,0 @@ ---- -info: - note: Made up using the text of the law - source: '' -inputs: - provided: {} - assumed: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - hh_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - m_pflichtbeitrag: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 - m_freiw_beitrag: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - m_ersatzzeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - ges_rente_anrechnungszeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - ges_rente_anrechnungszeit_45: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 420.0 - - 120.0 - m_kind_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - m_pfleg_berücks_zeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 -outputs: - ges_rente_vorauss_regelrente: - - false - - true - - true - - true - - true - - false - - true - - true - ges_rente_vorauss_langj: - - false - - false - - false - - false - - true - - true - - true - - true - ges_rente_vorauss_besond_langj: - - false - - false - - false - - false - - false - - false - - true - - true diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_20.yaml deleted file mode 100644 index d1cd945912..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_20.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: https://www.smart-rechner.de/rentenbeginn/rechner.php - source: '' -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 53 - jahr: - - 2018 - geburtsjahr: - - 1959 - entgeltp_west: - - 31.0625 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 31.0625 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.16666667 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_21.yaml deleted file mode 100644 index 6e12e9942f..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_21.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -info: - note: >- - from eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower - source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html -inputs: - provided: - p_id: - - 21 - hh_id: - - 21 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - true - alter: - - 59 - jahr: - - 2018 - geburtsjahr: - - 1952 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 35.2067 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 36.99837737 - entgeltp_update_lohn: - - 1.79167737 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.5 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_22.yaml deleted file mode 100644 index 9ff6038cf5..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_22.yaml +++ /dev/null @@ -1,76 +0,0 @@ ---- -info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower - source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html -inputs: - provided: - p_id: - - 22 - hh_id: - - 22 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - true - alter: - - 59 - jahr: - - 2018 - geburtsjahr: - - 1947 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 35.2067 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 0.0 - entgeltp_ost_updated: - - 36.99837737 - entgeltp_update_lohn: - - 1.79167737 - _ges_rente_altersgrenze_abschlagsfrei: - - 65.08333333 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_23.yaml deleted file mode 100644 index 6dfd431d1b..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_23.yaml +++ /dev/null @@ -1,74 +0,0 @@ ---- -info: - note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 53 - jahr: - - 2018 - geburtsjahr: - - 1958 - entgeltp_west: - - 31.0625 - entgeltp_ost: - - 0.0 - geburtsmonat: - - 1 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - false - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 31.0625 - entgeltp_ost_updated: - - 0.0 - entgeltp_update_lohn: - - 0.0 - _ges_rente_altersgrenze_abschlagsfrei: - - 66.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_24.yaml deleted file mode 100644 index b6982e66d0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_24.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 53 - jahr: - - 2018 - geburtsjahr: - - 1944 - entgeltp_west: - - 31.0625 - geburtsmonat: - - 2 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 31.0625 - entgeltp_update_lohn: - - 0.0 - _ges_rente_langj_altersgrenze: - - 65.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_25.yaml deleted file mode 100644 index b6982e66d0..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/hh_id_25.yaml +++ /dev/null @@ -1,70 +0,0 @@ ---- -info: - note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - source: '' -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 53 - jahr: - - 2018 - geburtsjahr: - - 1944 - entgeltp_west: - - 31.0625 - geburtsmonat: - - 2 - m_arbeitsunfähig: - - 0.0 - m_krank_ab_16_bis_24: - - 0.0 - m_mutterschutz: - - 0.0 - m_arbeitsl: - - 0.0 - m_ausbild_suche: - - 0.0 - m_schul_ausbild: - - 0.0 - m_alg1_übergang: - - 0.0 - m_geringf_beschäft: - - 0.0 - weiblich: - - false - y_pflichtbeitr_ab_40: - - 0.0 - pflichtbeitr_8_in_10: - - false - arbeitsl_1y_past_585: - - false - vertra_arbeitsl_1997: - - true - vertra_arbeitsl_2006: - - false - m_pflichtbeitrag: - - 60.0 - m_freiw_beitrag: - - 0.0 - m_ersatzzeit: - - 0.0 - m_kind_berücks_zeit: - - 0.0 - m_pfleg_berücks_zeit: - - 0.0 - assumed: {} -outputs: - entgeltp_west_updated: - - 31.0625 - entgeltp_update_lohn: - - 0.0 - _ges_rente_langj_altersgrenze: - - 65.0 diff --git a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml deleted file mode 100644 index bb43abb853..0000000000 --- a/src/_gettsim_tests/test_data/renten_anspr/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -info: - note: '' -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - entgeltp_west: - - 0.0 - entgeltp_ost: - - 0.0 - assumed: {} -outputs: - anteil_entgeltp_ost: - - 0.0 diff --git a/src/_gettsim_tests/test_data/soli_st/1991/hh_id_2.yaml b/src/_gettsim_tests/test_data/soli_st/1991/hh_id_2.yaml deleted file mode 100644 index 6548823a56..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/1991/hh_id_2.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 6000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 225.0 diff --git a/src/_gettsim_tests/test_data/soli_st/1993/hh_id_5.yaml b/src/_gettsim_tests/test_data/soli_st/1993/hh_id_5.yaml deleted file mode 100644 index 9057d46f7c..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/1993/hh_id_5.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 3000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 0.0 diff --git a/src/_gettsim_tests/test_data/soli_st/1996/hh_id_6.yaml b/src/_gettsim_tests/test_data/soli_st/1996/hh_id_6.yaml deleted file mode 100644 index 45aa05e9bb..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/1996/hh_id_6.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 6 - hh_id: - - 6 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 3000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 225.0 diff --git a/src/_gettsim_tests/test_data/soli_st/1999/hh_id_4.yaml b/src/_gettsim_tests/test_data/soli_st/1999/hh_id_4.yaml deleted file mode 100644 index f7cf4e797a..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/1999/hh_id_4.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 3000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 165.0 diff --git a/src/_gettsim_tests/test_data/soli_st/2003/hh_id_3.yaml b/src/_gettsim_tests/test_data/soli_st/2003/hh_id_3.yaml deleted file mode 100644 index 363ebbdcd4..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2003/hh_id_3.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 5000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 275.0 diff --git a/src/_gettsim_tests/test_data/soli_st/2022/hh_id_1.yaml b/src/_gettsim_tests/test_data/soli_st/2022/hh_id_1.yaml deleted file mode 100644 index 6c06893007..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2022/hh_id_1.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 2000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 0.0 diff --git a/src/_gettsim_tests/test_data/soli_st/2023/hh_id_7.yaml b/src/_gettsim_tests/test_data/soli_st/2023/hh_id_7.yaml deleted file mode 100644 index 99764fcb42..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2023/hh_id_7.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 32027.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 1723.6 diff --git a/src/_gettsim_tests/test_data/soli_st/2024/couple_above_threshold.yaml b/src/_gettsim_tests/test_data/soli_st/2024/couple_above_threshold.yaml deleted file mode 100644 index 321ea0e9be..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2024/couple_above_threshold.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_ehepartner: - - 1 - - 0 - gemeinsam_veranlagt: - - true - - true - kind: - - false - - false - anz_personen_sn: - - 2 - - 2 - zusammen_veranlagt: - - true - - true - eink_st_mit_kinderfreib_y_sn: - - 62794.0 - - 62794.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 3157.55 - - 3157.55 diff --git a/src/_gettsim_tests/test_data/soli_st/2024/couple_below_threshold.yaml b/src/_gettsim_tests/test_data/soli_st/2024/couple_below_threshold.yaml deleted file mode 100644 index bd18428504..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2024/couple_below_threshold.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 2 - - 3 - hh_id: - - 1 - - 1 - p_id_ehepartner: - - 3 - - 2 - gemeinsam_veranlagt: - - true - - true - kind: - - false - - false - zusammen_veranlagt: - - true - - true - eink_st_mit_kinderfreib_y_sn: - - 36000.0 - - 36000.0 - abgelt_st_y_sn: - - 0.0 - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/soli_st/2024/single_above_threshold.yaml b/src/_gettsim_tests/test_data/soli_st/2024/single_above_threshold.yaml deleted file mode 100644 index 91814aa440..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2024/single_above_threshold.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 2 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 73397.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 4036.84 diff --git a/src/_gettsim_tests/test_data/soli_st/2024/single_below_threshold.yaml b/src/_gettsim_tests/test_data/soli_st/2024/single_below_threshold.yaml deleted file mode 100644 index d4520ef8be..0000000000 --- a/src/_gettsim_tests/test_data/soli_st/2024/single_below_threshold.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 2 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - kind: - - false - eink_st_mit_kinderfreib_y_sn: - - 18000.0 - abgelt_st_y_sn: - - 0.0 - assumed: {} -outputs: - soli_st_y_sn: - - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" new file mode 100644 index 0000000000..c0b49f0d38 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 2 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 6000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" new file mode 100644 index 0000000000..66c3b4984b --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 5 + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" new file mode 100644 index 0000000000..5fcb9a45f7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 6 + familie__kind: + - false + p_id: + - 6 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" new file mode 100644 index 0000000000..4968824517 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 4 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 165.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" new file mode 100644 index 0000000000..486daa5db6 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 3 + familie__kind: + - false + p_id: + - 3 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 5000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 275.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" new file mode 100644 index 0000000000..eb707e2b37 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 1 + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 2000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" new file mode 100644 index 0000000000..262ed1e9f8 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 7 + familie__kind: + - false + p_id: + - 7 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 32027.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 1723.6 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" new file mode 100644 index 0000000000..9ecb0cbef1 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" @@ -0,0 +1,38 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + hh_id: + - 0 + - 0 + familie__kind: + - false + - false + p_id: + - 0 + - 1 + familie__p_id_ehepartner: + - 1 + - 0 + einkommensteuer__anzahl_personen_sn: + - 2 + - 2 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 62794.0 + - 62794.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + zusammen_veranlagt: + - true + - true +outputs: + solidaritätszuschlag__betrag_y_sn: + - 3157.55 + - 3157.55 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" new file mode 100644 index 0000000000..5d483d6d5c --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" @@ -0,0 +1,35 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + - 0.0 + hh_id: + - 1 + - 1 + familie__kind: + - false + - false + p_id: + - 2 + - 3 + familie__p_id_ehepartner: + - 3 + - 2 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 36000.0 + - 36000.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + zusammen_veranlagt: + - true + - true +outputs: + solidaritätszuschlag__betrag_y_sn: + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" new file mode 100644 index 0000000000..ea576ef3d5 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 73397.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 4036.84 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" new file mode 100644 index 0000000000..b202bc75c5 --- /dev/null +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" @@ -0,0 +1,24 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + einkommensteuer__abgeltungssteuer__betrag_y_sn: + - 0.0 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: + - -1 + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: + - 18000.0 + einkommensteuer__gemeinsam_veranlagt: + - false +outputs: + solidaritätszuschlag__betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialv_beitr/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialv_beitr/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" deleted file mode 100644 index b961cbc45d..0000000000 --- "a/src/_gettsim_tests/test_data/sozialv_beitr/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 1 - bruttolohn_m: - - 300.0 - - 300.0 - wohnort_ost: - - false - - true - alter: - - 40 - - 40 - selbstständig: - - false - - false - ges_pflegev_hat_kinder: - - false - - false - eink_selbst_m: - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - in_priv_krankenv: - - false - - false - jahr: - - '1998' - - '1998' - assumed: {} -outputs: - geringfügig_beschäftigt: - - true - - false - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 63.15 - sozialv_beitr_arbeitgeber_m: - - 0.0 - - 63.15 - _sozialv_beitr_summe_m: - - 0.0 - - 126.30 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - - 30.45 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - - 9.75 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - - 20.40 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - - 2.55 - ges_rentenv_beitr_arbeitgeber_m: - - 0.0 - - 30.45 - arbeitsl_v_beitr_arbeitgeber_m: - - 0.0 - - 9.75 - ges_krankenv_beitr_arbeitgeber_m: - - 0.0 - - 20.40 - ges_pflegev_beitr_arbeitgeber_m: - - 0.0 - - 2.55 diff --git "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialv_beitr/2002/geringf\303\274gig_besch\303\244ftigt.yaml" deleted file mode 100644 index 64bf63a040..0000000000 --- "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/geringf\303\274gig_besch\303\244ftigt.yaml" +++ /dev/null @@ -1,52 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - bruttolohn_m: - - 300.0 - wohnort_ost: - - false - alter: - - 40 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2002' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 0.0 - sozialv_beitr_arbeitgeber_m: - - 66.0 - _sozialv_beitr_summe_m: - - 66.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - ges_rentenv_beitr_arbeitgeber_m: - - 36.0 - arbeitsl_v_beitr_arbeitgeber_m: - - 0.0 - ges_krankenv_beitr_arbeitgeber_m: - - 30.0 - ges_pflegev_beitr_arbeitgeber_m: - - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialv_beitr/2002/regul\303\244r_besch\303\244ftigt.yaml" deleted file mode 100644 index f4861b5dd7..0000000000 --- "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/regul\303\244r_besch\303\244ftigt.yaml" +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 111 - hh_id: - - 13 - bruttolohn_m: - - 700.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2002' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 144.55 - sozialv_beitr_arbeitgeber_m: - - 144.55 - _sozialv_beitr_summe_m: - - 289.1 - ges_rentenv_beitr_arbeitnehmer_m: - - 66.85 - arbeitsl_v_beitr_arbeitnehmer_m: - - 22.75 - ges_krankenv_beitr_arbeitnehmer_m: - - 49.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 5.95 diff --git "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_viel_einkommen.yaml" deleted file mode 100644 index f6b99b2ca3..0000000000 --- "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_viel_einkommen.yaml" +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 111 - hh_id: - - 13 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - true - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 5000.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2002' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 529.88 - sozialv_beitr_arbeitgeber_m: - - 0.0 - _sozialv_beitr_summe_m: - - 529.88 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 472.50 - ges_pflegev_beitr_arbeitnehmer_m: - - 57.38 diff --git "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_wenig_einkommen.yaml" deleted file mode 100644 index b05b6f42ea..0000000000 --- "a/src/_gettsim_tests/test_data/sozialv_beitr/2002/selbst\303\244ndig_wenig_einkommen.yaml" +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 111 - hh_id: - - 13 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - true - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 500.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2002' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 122.72 - sozialv_beitr_arbeitgeber_m: - - 0.0 - _sozialv_beitr_summe_m: - - 122.72 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 109.43 - ges_pflegev_beitr_arbeitnehmer_m: - - 13.29 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2004-04-01/rentner.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2004-04-01/rentner.yaml deleted file mode 100644 index 386fc88e98..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2004-04-01/rentner.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -info: - note: '' - source: Regression test. Unclear whether numbers are correct by external standards. -inputs: - provided: - p_id: - - 111 - hh_id: - - 13 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 70 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 1000.0 - in_priv_krankenv: - - false - jahr: - - '2004-04-01' - assumed: {} -outputs: - ges_pflegev_beitr_arbeitnehmer_m: - - 17.0 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_10.yaml deleted file mode 100644 index 0f9a0a105a..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_10.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 54684 - hh_id: - - 10 - bruttolohn_m: - - 1200.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 242.7 - sozialv_beitr_arbeitgeber_m: - - 231.9 - _sozialv_beitr_summe_m: - - 474.6 - ges_rentenv_beitr_arbeitnehmer_m: - - 119.4 - arbeitsl_v_beitr_arbeitnehmer_m: - - 16.8 - ges_krankenv_beitr_arbeitnehmer_m: - - 94.8 - ges_pflegev_beitr_arbeitnehmer_m: - - 11.7 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_11.yaml deleted file mode 100644 index 24b5af537d..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_11.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 35 - hh_id: - - 11 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 303.375 - sozialv_beitr_arbeitgeber_m: - - 289.88 - _sozialv_beitr_summe_m: - - 593.26 - ges_rentenv_beitr_arbeitnehmer_m: - - 149.25 - arbeitsl_v_beitr_arbeitnehmer_m: - - 21.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 118.5 - ges_pflegev_beitr_arbeitnehmer_m: - - 14.625 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_12.yaml deleted file mode 100644 index 6e86103648..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_12.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 369 - hh_id: - - 12 - bruttolohn_m: - - 8000.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 957.0625 - sozialv_beitr_arbeitgeber_m: - - 923.31 - _sozialv_beitr_summe_m: - - 1880.37 - ges_rentenv_beitr_arbeitnehmer_m: - - 547.25 - arbeitsl_v_beitr_arbeitnehmer_m: - - 77.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 296.25 - ges_pflegev_beitr_arbeitnehmer_m: - - 36.5625 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_7.yaml deleted file mode 100644 index 6658dd01bb..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_7.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 3483 - hh_id: - - 7 - bruttolohn_m: - - 300.0 - wohnort_ost: - - true - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 0.0 - sozialv_beitr_arbeitgeber_m: - - 84.0 - _sozialv_beitr_summe_m: - - 84.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_8.yaml deleted file mode 100644 index 65f65eb414..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_8.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 874 - hh_id: - - 8 - bruttolohn_m: - - 600.0 - wohnort_ost: - - true - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 102.24735 - sozialv_beitr_arbeitgeber_m: - - 115.95 - _sozialv_beitr_summe_m: - - 218.2 - ges_rentenv_beitr_arbeitnehmer_m: - - 50.0883 - arbeitsl_v_beitr_arbeitnehmer_m: - - 7.0476 - ges_krankenv_beitr_arbeitnehmer_m: - - 40.2033 - ges_pflegev_beitr_arbeitnehmer_m: - - 4.90815 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_9.yaml deleted file mode 100644 index 0159c55b05..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2010/hh_id_9.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ -inputs: - provided: - p_id: - - 6414 - hh_id: - - 9 - bruttolohn_m: - - 900.0 - wohnort_ost: - - true - alter: - - 20 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2010' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 182.025 - sozialv_beitr_arbeitgeber_m: - - 173.93 - _sozialv_beitr_summe_m: - - 355.96 - ges_rentenv_beitr_arbeitnehmer_m: - - 89.55 - arbeitsl_v_beitr_arbeitnehmer_m: - - 12.6 - ges_krankenv_beitr_arbeitnehmer_m: - - 71.1 - ges_pflegev_beitr_arbeitnehmer_m: - - 8.775 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_1.yaml deleted file mode 100644 index 6d64dd6bcc..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_1.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 8 - hh_id: - - 1 - bruttolohn_m: - - 300.0 - wohnort_ost: - - false - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 0.0 - sozialv_beitr_arbeitgeber_m: - - 84.0 - _sozialv_beitr_summe_m: - - 84.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_2.yaml deleted file mode 100644 index 231736564d..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_2.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 9 - hh_id: - - 2 - bruttolohn_m: - - 600.0 - wohnort_ost: - - false - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 96.15375 - sozialv_beitr_arbeitgeber_m: - - 116.25 - _sozialv_beitr_summe_m: - - 212.4 - ges_rentenv_beitr_arbeitnehmer_m: - - 42.96774 - arbeitsl_v_beitr_arbeitnehmer_m: - - 6.93028 - ges_krankenv_beitr_arbeitnehmer_m: - - 39.03746 - ges_pflegev_beitr_arbeitnehmer_m: - - 7.21826 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_3.yaml deleted file mode 100644 index 4a10acbd8a..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_3.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 34 - hh_id: - - 3 - bruttolohn_m: - - 900.0 - wohnort_ost: - - false - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 185.625 - sozialv_beitr_arbeitgeber_m: - - 174.38 - _sozialv_beitr_summe_m: - - 360.01 - ges_rentenv_beitr_arbeitnehmer_m: - - 83.7 - arbeitsl_v_beitr_arbeitnehmer_m: - - 13.5 - ges_krankenv_beitr_arbeitnehmer_m: - - 74.7 - ges_pflegev_beitr_arbeitnehmer_m: - - 13.725 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_4.yaml deleted file mode 100644 index 3e19c94729..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_4.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 55 - hh_id: - - 4 - bruttolohn_m: - - 1200.0 - wohnort_ost: - - true - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 244.5 - sozialv_beitr_arbeitgeber_m: - - 232.5 - _sozialv_beitr_summe_m: - - 477.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 111.6 - arbeitsl_v_beitr_arbeitnehmer_m: - - 18.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 99.6 - ges_pflegev_beitr_arbeitnehmer_m: - - 15.3 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_5.yaml deleted file mode 100644 index 10f4fcb431..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_5.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - bruttolohn_m: - - 1500.0 - wohnort_ost: - - true - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 305.625 - sozialv_beitr_arbeitgeber_m: - - 290.63 - _sozialv_beitr_summe_m: - - 596.26 - ges_rentenv_beitr_arbeitnehmer_m: - - 139.5 - arbeitsl_v_beitr_arbeitnehmer_m: - - 22.5 - ges_krankenv_beitr_arbeitnehmer_m: - - 124.5 - ges_pflegev_beitr_arbeitnehmer_m: - - 19.125 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_6.yaml deleted file mode 100644 index c0c59488c6..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2018/hh_id_6.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: '' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 1354 - hh_id: - - 6 - bruttolohn_m: - - 5000.0 - wohnort_ost: - - true - alter: - - 25 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2018' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 963.69375 - sozialv_beitr_arbeitgeber_m: - - 919.44 - _sozialv_beitr_summe_m: - - 1883.13 - ges_rentenv_beitr_arbeitnehmer_m: - - 465.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 75.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 367.275 - ges_pflegev_beitr_arbeitnehmer_m: - - 56.41875 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_23.yaml deleted file mode 100644 index 2297e76466..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_23.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - source: '' -inputs: - provided: - p_id: - - 3657 - hh_id: - - 23 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 20 - selbstständig: - - true - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 1000.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2019' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 186.3808333 - sozialv_beitr_arbeitgeber_m: - - 0.0 - _sozialv_beitr_summe_m: - - 186.3808333 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 154.7116667 - ges_pflegev_beitr_arbeitnehmer_m: - - 31.66916667 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_24.yaml deleted file mode 100644 index 86ba7ebf22..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2019/hh_id_24.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - source: '' -inputs: - provided: - p_id: - - 798 - hh_id: - - 24 - bruttolohn_m: - - 0.0 - wohnort_ost: - - true - alter: - - 30 - selbstständig: - - true - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 4000.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2019' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 718.0 - sozialv_beitr_arbeitgeber_m: - - 0.0 - _sozialv_beitr_summe_m: - - 718.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 596.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 122.0 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_15.yaml deleted file mode 100644 index c2b976f7f6..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_15.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: 'Sozialversicherungs-Rechner auf www.barmer.de ' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 222 - hh_id: - - 15 - bruttolohn_m: - - 3000.0 - wohnort_ost: - - false - alter: - - 40 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2020' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 603.75 - sozialv_beitr_arbeitgeber_m: - - 596.25 - _sozialv_beitr_summe_m: - - 1200.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 279.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 36.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 235.5 - ges_pflegev_beitr_arbeitnehmer_m: - - 53.25 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_25.yaml deleted file mode 100644 index 77b8afa251..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2020/hh_id_25.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - source: '' -inputs: - provided: - p_id: - - 4987 - hh_id: - - 25 - bruttolohn_m: - - 0.0 - wohnort_ost: - - false - alter: - - 50 - selbstständig: - - true - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 8000.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2020' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 862.5 - sozialv_beitr_arbeitgeber_m: - - 0.0 - _sozialv_beitr_summe_m: - - 862.5 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 707.8125 - ges_pflegev_beitr_arbeitnehmer_m: - - 154.6875 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_18.yaml deleted file mode 100644 index 19579642b9..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_18.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: Einführung Geringfügigkeitsgrenze 2022 - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 225 - hh_id: - - 18 - bruttolohn_m: - - 510.0 - wohnort_ost: - - false - alter: - - 30 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2022-10 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 0.0 - sozialv_beitr_arbeitgeber_m: - - 142.8 - _sozialv_beitr_summe_m: - - 142.8 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_19.yaml deleted file mode 100644 index 9787de297a..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_19.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: Änderungen MidiJob 2022 (kinderlos) - source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html -inputs: - provided: - p_id: - - 19 - hh_id: - - 19 - bruttolohn_m: - - 1100.0 - wohnort_ost: - - false - alter: - - 35 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2022-10 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 175.24 - sozialv_beitr_arbeitgeber_m: - - 239.04 - _sozialv_beitr_summe_m: - - 414.28 - ges_rentenv_beitr_arbeitnehmer_m: - - 79.91 - arbeitsl_v_beitr_arbeitnehmer_m: - - 10.31 - ges_krankenv_beitr_arbeitnehmer_m: - - 68.32 - ges_pflegev_beitr_arbeitnehmer_m: - - 16.7 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_20.yaml deleted file mode 100644 index ada02b31de..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_20.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: Änderungen MidiJob 2022 (mit Kindern) - source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html -inputs: - provided: - p_id: - - 20 - hh_id: - - 20 - bruttolohn_m: - - 800.0 - wohnort_ost: - - false - alter: - - 35 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2022-10 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 82.87 - sozialv_beitr_arbeitgeber_m: - - 190.71 - _sozialv_beitr_summe_m: - - 273.58 - ges_rentenv_beitr_arbeitnehmer_m: - - 38.58 - arbeitsl_v_beitr_arbeitnehmer_m: - - 4.98 - ges_krankenv_beitr_arbeitnehmer_m: - - 32.96 - ges_pflegev_beitr_arbeitnehmer_m: - - 6.33 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_21.yaml deleted file mode 100644 index 9dc9b6c023..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_21.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: Änderungen MidiJob 2022 (mit Kindern) - source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html -inputs: - provided: - p_id: - - 21 - hh_id: - - 21 - bruttolohn_m: - - 1400.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2022-10 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 260.4 - sozialv_beitr_arbeitgeber_m: - - 287.38 - _sozialv_beitr_summe_m: - - 547.78 - ges_rentenv_beitr_arbeitnehmer_m: - - 121.24 - arbeitsl_v_beitr_arbeitnehmer_m: - - 15.64 - ges_krankenv_beitr_arbeitnehmer_m: - - 103.64 - ges_pflegev_beitr_arbeitnehmer_m: - - 19.88 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_22.yaml deleted file mode 100644 index c18a6ff373..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022-10/hh_id_22.yaml +++ /dev/null @@ -1,46 +0,0 @@ ---- -info: - note: >- - Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, - https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) - source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html -inputs: - provided: - p_id: - - 22 - hh_id: - - 22 - bruttolohn_m: - - 1000.0 - wohnort_ost: - - false - alter: - - 50 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2022-10 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 145.24 - sozialv_beitr_arbeitgeber_m: - - 222.93 - _sozialv_beitr_summe_m: - - 368.17 - ges_rentenv_beitr_arbeitnehmer_m: - - 66.14 - arbeitsl_v_beitr_arbeitnehmer_m: - - 8.53 - ges_krankenv_beitr_arbeitnehmer_m: - - 56.53 - ges_pflegev_beitr_arbeitnehmer_m: - - 14.04 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_16.yaml deleted file mode 100644 index 51c1906e78..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_16.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: 'Sozialversicherungs-Rechner auf www.tk.de ' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 223 - hh_id: - - 16 - bruttolohn_m: - - 750.0 - wohnort_ost: - - false - alter: - - 40 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2022' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 123.19 - sozialv_beitr_arbeitgeber_m: - - 149.81 - _sozialv_beitr_summe_m: - - 273.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 56.25 - arbeitsl_v_beitr_arbeitnehmer_m: - - 7.26 - ges_krankenv_beitr_arbeitnehmer_m: - - 48.09 - ges_pflegev_beitr_arbeitnehmer_m: - - 11.59 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_17.yaml deleted file mode 100644 index 7619775f48..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2022/hh_id_17.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -info: - note: 'Sozialversicherungs-Rechner auf www.tk.de ' - source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php -inputs: - provided: - p_id: - - 224 - hh_id: - - 17 - bruttolohn_m: - - 1050.0 - wohnort_ost: - - false - alter: - - 40 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - '2022' - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 196.54 - sozialv_beitr_arbeitgeber_m: - - 209.74 - _sozialv_beitr_summe_m: - - 406.28 - ges_rentenv_beitr_arbeitnehmer_m: - - 91.51 - arbeitsl_v_beitr_arbeitnehmer_m: - - 11.8 - ges_krankenv_beitr_arbeitnehmer_m: - - 78.22 - ges_pflegev_beitr_arbeitnehmer_m: - - 15.01 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_23.yaml deleted file mode 100644 index 98924fd3b5..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_23.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -info: - note: >- - Erhöhung der Pflegeversicherungsraten & - Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), - Pflegeunterstützungs- und -entlastungsgesetz - 2 Kinder unter 25 Jahren - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 23 - hh_id: - - 23 - bruttolohn_m: - - 3000.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 2 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2023-07 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 604.50 - sozialv_beitr_arbeitgeber_m: - - 612.00 - _sozialv_beitr_summe_m: - - 1216.50 - ges_rentenv_beitr_arbeitnehmer_m: - - 279.00 - arbeitsl_v_beitr_arbeitnehmer_m: - - 39.00 - ges_krankenv_beitr_arbeitnehmer_m: - - 243.00 - ges_pflegev_beitr_arbeitnehmer_m: - - 43.50 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_24.yaml deleted file mode 100644 index 76f3fb1644..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_24.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -info: - note: >- - Erhöhung der Pflegeversicherungsraten & - Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), - Pflegeunterstützungs- und -entlastungsgesetz - 1 Kind über 25 Jahren und Midijob - source: https://www.ihre-vorsorge.de/rechner/midijob-rechner -inputs: - provided: - p_id: - - 24 - hh_id: - - 24 - bruttolohn_m: - - 1000.0 - wohnort_ost: - - false - alter: - - 50 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 0 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2023-07 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 132.32 - sozialv_beitr_arbeitgeber_m: - - 231.55 - _sozialv_beitr_summe_m: - - 363.87 - ges_rentenv_beitr_arbeitnehmer_m: - - 60.32 - arbeitsl_v_beitr_arbeitnehmer_m: - - 8.43 - ges_krankenv_beitr_arbeitnehmer_m: - - 52.54 - ges_pflegev_beitr_arbeitnehmer_m: - - 11.03 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_25.yaml deleted file mode 100644 index d459c5f9f0..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_25.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -info: - note: >- - Erhöhung der Pflegeversicherungsraten & - Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), - Pflegeunterstützungs- und -entlastungsgesetz - 5 Kinder unter 25 Jahren - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 25 - hh_id: - - 25 - bruttolohn_m: - - 4000.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 5 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2023-07 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 776.00 - sozialv_beitr_arbeitgeber_m: - - 816.00 - _sozialv_beitr_summe_m: - - 1592.00 - ges_rentenv_beitr_arbeitnehmer_m: - - 372.00 - arbeitsl_v_beitr_arbeitnehmer_m: - - 52.00 - ges_krankenv_beitr_arbeitnehmer_m: - - 324.00 - ges_pflegev_beitr_arbeitnehmer_m: - - 28.00 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_26.yaml deleted file mode 100644 index b628240388..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_26.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -info: - note: >- - Erhöhung der Pflegeversicherungsraten & - Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), - Pflegeunterstützungs- und -entlastungsgesetz - keine Kinder - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 26 - hh_id: - - 26 - bruttolohn_m: - - 4000.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - ges_pflegev_anz_kinder_bis_24: - - 0 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2023-07 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 840.00 - sozialv_beitr_arbeitgeber_m: - - 816.00 - _sozialv_beitr_summe_m: - - 1656.00 - ges_rentenv_beitr_arbeitnehmer_m: - - 372.00 - arbeitsl_v_beitr_arbeitnehmer_m: - - 52.00 - ges_krankenv_beitr_arbeitnehmer_m: - - 324.00 - ges_pflegev_beitr_arbeitnehmer_m: - - 92.00 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_27.yaml deleted file mode 100644 index 4697090d60..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2023-07/hh_id_27.yaml +++ /dev/null @@ -1,50 +0,0 @@ ---- -info: - note: >- - Erhöhung der Pflegeversicherungsraten & - Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), - Pflegeunterstützungs- und -entlastungsgesetz - keine Kinder und Midijob - source: https://www.smart-rechner.de/midijob/rechner.php -inputs: - provided: - p_id: - - 27 - hh_id: - - 27 - bruttolohn_m: - - 1000.0 - wohnort_ost: - - false - alter: - - 50 - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - ges_pflegev_anz_kinder_bis_24: - - 0 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - jahr: - - 2023-07 - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 137.67 - sozialv_beitr_arbeitgeber_m: - - 231.54 - _sozialv_beitr_summe_m: - - 369.21 - ges_rentenv_beitr_arbeitnehmer_m: - - 60.32 - arbeitsl_v_beitr_arbeitnehmer_m: - - 8.43 - ges_krankenv_beitr_arbeitnehmer_m: - - 52.54 - ges_pflegev_beitr_arbeitnehmer_m: - - 16.38 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_new_beitragsbemessungsgrenze.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_new_beitragsbemessungsgrenze.yaml deleted file mode 100644 index 37deb50cc2..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_new_beitragsbemessungsgrenze.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -info: - note: >- - Above new Beitragsbemessungsgrenze (of 2024). - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - bruttolohn_m: - - 6000.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 2 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 1132.81 - sozialv_beitr_arbeitgeber_m: - - 1145.75 - ges_rentenv_beitr_arbeitnehmer_m: - - 558.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 78.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 421.77 - ges_pflegev_beitr_arbeitnehmer_m: - - 75.04 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_old_beitragsbemessungsgrenze.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_old_beitragsbemessungsgrenze.yaml deleted file mode 100644 index 63c0e1fb61..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2024/above_old_beitragsbemessungsgrenze.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -info: - note: >- - Above old Beitragsbemessungsgrenze (of 2023). - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - bruttolohn_m: - - 4990.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 2 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 1007.99 - sozialv_beitr_arbeitgeber_m: - - 1020.46 - ges_rentenv_beitr_arbeitnehmer_m: - - 464.07 - arbeitsl_v_beitr_arbeitnehmer_m: - - 64.87 - ges_krankenv_beitr_arbeitnehmer_m: - - 406.69 - ges_pflegev_beitr_arbeitnehmer_m: - - 72.36 diff --git a/src/_gettsim_tests/test_data/sozialv_beitr/2024/below_beitragsbemessungsgrenze.yaml b/src/_gettsim_tests/test_data/sozialv_beitr/2024/below_beitragsbemessungsgrenze.yaml deleted file mode 100644 index c5ab26d708..0000000000 --- a/src/_gettsim_tests/test_data/sozialv_beitr/2024/below_beitragsbemessungsgrenze.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -info: - note: >- - Below old Beitragsbemessungsgrenze (of 2023). - source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ -inputs: - provided: - p_id: - - 0 - hh_id: - - 0 - bruttolohn_m: - - 3000.0 - wohnort_ost: - - false - alter: - - 45 - selbstständig: - - false - ges_pflegev_hat_kinder: - - true - ges_pflegev_anz_kinder_bis_24: - - 2 - eink_selbst_m: - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - in_priv_krankenv: - - false - assumed: {} -outputs: - sozialv_beitr_arbeitnehmer_m: - - 606.0 - sozialv_beitr_arbeitgeber_m: - - 613.5 - ges_rentenv_beitr_arbeitnehmer_m: - - 279.00 - arbeitsl_v_beitr_arbeitnehmer_m: - - 39.00 - ges_krankenv_beitr_arbeitnehmer_m: - - 244.50 - ges_pflegev_beitr_arbeitnehmer_m: - - 43.50 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" new file mode 100644 index 0000000000..6273dd54e7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -0,0 +1,80 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 40 + - 40 + hh_id: + - 0 + - 1 + p_id: + - 0 + - 1 + wohnort_ost: + - false + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + jahr: + - '1998' + - '1998' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: + - 0.0 + - 9.75 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + - 9.75 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + - 63.15 + sozialversicherung__beitrag_gesamt_m: + - 0.0 + - 126.3 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + - 63.15 + sozialversicherung__geringfügig_beschäftigt: + - true + - false + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: + - 0.0 + - 20.4 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + - 20.4 + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: + - 0.0 + - 2.55 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + - 2.55 + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: + - 0.0 + - 30.45 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 + - 30.45 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" new file mode 100644 index 0000000000..0b45de0bfa --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -0,0 +1,54 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 40 + hh_id: + - 0 + p_id: + - 0 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2002' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: + - 0.0 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 66.0 + sozialversicherung__beitrag_gesamt_m: + - 66.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: + - 30.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: + - 36.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" new file mode 100644 index 0000000000..7af730d461 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 13 + p_id: + - 111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 700.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2002' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 22.75 + sozialversicherung__beiträge_arbeitgeber_m: + - 144.55 + sozialversicherung__beitrag_gesamt_m: + - 289.1 + sozialversicherung__beiträge_versicherter_m: + - 144.55 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 49.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 5.95 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 66.85 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" new file mode 100644 index 0000000000..22444b70ad --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 13 + p_id: + - 111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 5000.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + jahr: + - '2002' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + sozialversicherung__beitrag_gesamt_m: + - 529.88 + sozialversicherung__beiträge_versicherter_m: + - 529.88 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 472.5 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 57.38 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" new file mode 100644 index 0000000000..21e1dafd1f --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 13 + p_id: + - 111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 500.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + jahr: + - '2002' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + sozialversicherung__beitrag_gesamt_m: + - 122.72 + sozialversicherung__beiträge_versicherter_m: + - 122.72 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 109.43 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 13.29 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" new file mode 100644 index 0000000000..ad98b3f7f2 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: Regression test. Unclear whether numbers are correct by external standards. +inputs: + assumed: {} + provided: + alter: + - 70 + hh_id: + - 13 + p_id: + - 111 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2004-04-01' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 1000.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 17.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" new file mode 100644 index 0000000000..5609d52cec --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 10 + p_id: + - 54684 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 16.8 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.9 + sozialversicherung__beitrag_gesamt_m: + - 474.6 + sozialversicherung__beiträge_versicherter_m: + - 242.7 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 94.8 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 11.7 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 119.4 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" new file mode 100644 index 0000000000..0fc5f38019 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 11 + p_id: + - 35 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 21.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 289.88 + sozialversicherung__beitrag_gesamt_m: + - 593.26 + sozialversicherung__beiträge_versicherter_m: + - 303.375 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 118.5 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 14.625 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 149.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" new file mode 100644 index 0000000000..b3fa3d6582 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 12 + p_id: + - 369 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 77.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 923.31 + sozialversicherung__beitrag_gesamt_m: + - 1880.37 + sozialversicherung__beiträge_versicherter_m: + - 957.0625 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 296.25 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 36.5625 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 547.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" new file mode 100644 index 0000000000..a00ccbdc2b --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 7 + p_id: + - 3483 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 84.0 + sozialversicherung__beitrag_gesamt_m: + - 84.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" new file mode 100644 index 0000000000..9780814f9e --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 8 + p_id: + - 874 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 7.0476 + sozialversicherung__beiträge_arbeitgeber_m: + - 115.95 + sozialversicherung__beitrag_gesamt_m: + - 218.2 + sozialversicherung__beiträge_versicherter_m: + - 102.24735 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 40.2033 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 4.90815 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 50.0883 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" new file mode 100644 index 0000000000..484814358d --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 9 + p_id: + - 6414 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2010' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 12.6 + sozialversicherung__beiträge_arbeitgeber_m: + - 173.93 + sozialversicherung__beitrag_gesamt_m: + - 355.96 + sozialversicherung__beiträge_versicherter_m: + - 182.025 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 71.1 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 8.775 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 89.55 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" new file mode 100644 index 0000000000..8cd893d395 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 1 + p_id: + - 8 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 84.0 + sozialversicherung__beitrag_gesamt_m: + - 84.0 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" new file mode 100644 index 0000000000..64f697aeb5 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 2 + p_id: + - 9 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 6.93028 + sozialversicherung__beiträge_arbeitgeber_m: + - 116.25 + sozialversicherung__beitrag_gesamt_m: + - 212.4 + sozialversicherung__beiträge_versicherter_m: + - 96.15375 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 39.03746 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 7.21826 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 42.96774 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" new file mode 100644 index 0000000000..3ddf437424 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 3 + p_id: + - 34 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 13.5 + sozialversicherung__beiträge_arbeitgeber_m: + - 174.38 + sozialversicherung__beitrag_gesamt_m: + - 360.01 + sozialversicherung__beiträge_versicherter_m: + - 185.625 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 74.7 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 13.725 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 83.7 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" new file mode 100644 index 0000000000..f1f35ca0d6 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 4 + p_id: + - 55 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 18.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 232.5 + sozialversicherung__beitrag_gesamt_m: + - 477.0 + sozialversicherung__beiträge_versicherter_m: + - 244.5 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 99.6 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 15.3 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 111.6 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" new file mode 100644 index 0000000000..71ce966609 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 5 + p_id: + - 5 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 22.5 + sozialversicherung__beiträge_arbeitgeber_m: + - 290.63 + sozialversicherung__beitrag_gesamt_m: + - 596.26 + sozialversicherung__beiträge_versicherter_m: + - 305.625 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 124.5 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 19.125 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 139.5 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" new file mode 100644 index 0000000000..6becbf702b --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: '' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 25 + hh_id: + - 6 + p_id: + - 1354 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2018' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 75.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 919.44 + sozialversicherung__beitrag_gesamt_m: + - 1883.13 + sozialversicherung__beiträge_versicherter_m: + - 963.69375 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 367.275 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 56.41875 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 465.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" new file mode 100644 index 0000000000..4bd1cc24f9 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + source: '' +inputs: + assumed: {} + provided: + alter: + - 20 + hh_id: + - 23 + p_id: + - 3657 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 1000.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + jahr: + - '2019' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + sozialversicherung__beitrag_gesamt_m: + - 186.3808333 + sozialversicherung__beiträge_versicherter_m: + - 186.3808333 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 154.7116667 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 31.66916667 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" new file mode 100644 index 0000000000..67c219cfbe --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + source: '' +inputs: + assumed: {} + provided: + alter: + - 30 + hh_id: + - 24 + p_id: + - 798 + wohnort_ost: + - true + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 4000.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + jahr: + - '2019' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + sozialversicherung__beitrag_gesamt_m: + - 718.0 + sozialversicherung__beiträge_versicherter_m: + - 718.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 596.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 122.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" new file mode 100644 index 0000000000..f67c3f4516 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: 'Sozialversicherungs-Rechner auf www.barmer.de ' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 40 + hh_id: + - 15 + p_id: + - 222 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2020' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 36.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 596.25 + sozialversicherung__beitrag_gesamt_m: + - 1200.0 + sozialversicherung__beiträge_versicherter_m: + - 603.75 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 235.5 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 53.25 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 279.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" new file mode 100644 index 0000000000..d174e911de --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + source: '' +inputs: + assumed: {} + provided: + alter: + - 50 + hh_id: + - 25 + p_id: + - 4987 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 8000.0 + einkommensteuer__einkünfte__ist_selbstständig: + - true + jahr: + - '2020' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + sozialversicherung__beitrag_gesamt_m: + - 862.5 + sozialversicherung__beiträge_versicherter_m: + - 862.5 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 707.8125 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 154.6875 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" new file mode 100644 index 0000000000..01d9c52251 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: Einführung Geringfügigkeitsgrenze 2022 + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 30 + hh_id: + - 18 + p_id: + - 225 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 510.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2022-10 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 142.8 + sozialversicherung__beitrag_gesamt_m: + - 142.8 + sozialversicherung__beiträge_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" new file mode 100644 index 0000000000..2f4c4a13a9 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: Änderungen MidiJob 2022 (kinderlos) + source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html +inputs: + assumed: {} + provided: + alter: + - 35 + hh_id: + - 19 + p_id: + - 19 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1100.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2022-10 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 10.31 + sozialversicherung__beiträge_arbeitgeber_m: + - 239.04 + sozialversicherung__beitrag_gesamt_m: + - 414.28 + sozialversicherung__beiträge_versicherter_m: + - 175.24 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 68.32 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 16.7 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 79.91 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" new file mode 100644 index 0000000000..8392c805da --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: Änderungen MidiJob 2022 (mit Kindern) + source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html +inputs: + assumed: {} + provided: + alter: + - 35 + hh_id: + - 20 + p_id: + - 20 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 800.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2022-10 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 4.98 + sozialversicherung__beiträge_arbeitgeber_m: + - 190.71 + sozialversicherung__beitrag_gesamt_m: + - 273.58 + sozialversicherung__beiträge_versicherter_m: + - 82.87 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 32.96 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 6.33 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 38.58 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" new file mode 100644 index 0000000000..49dd680842 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: Änderungen MidiJob 2022 (mit Kindern) + source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 21 + p_id: + - 21 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1400.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2022-10 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 15.64 + sozialversicherung__beiträge_arbeitgeber_m: + - 287.38 + sozialversicherung__beitrag_gesamt_m: + - 547.78 + sozialversicherung__beiträge_versicherter_m: + - 260.4 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 103.64 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 19.88 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 121.24 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" new file mode 100644 index 0000000000..9033c2d01b --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" @@ -0,0 +1,48 @@ +--- +info: + note: >- + Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, + https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) + source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html +inputs: + assumed: {} + provided: + alter: + - 50 + hh_id: + - 22 + p_id: + - 22 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2022-10 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 8.53 + sozialversicherung__beiträge_arbeitgeber_m: + - 222.93 + sozialversicherung__beitrag_gesamt_m: + - 368.17 + sozialversicherung__beiträge_versicherter_m: + - 145.24 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 56.53 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 14.04 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 66.14 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" new file mode 100644 index 0000000000..f9f2afff7e --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: 'Sozialversicherungs-Rechner auf www.tk.de ' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 40 + hh_id: + - 16 + p_id: + - 223 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 750.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2022' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 7.26 + sozialversicherung__beiträge_arbeitgeber_m: + - 149.81 + sozialversicherung__beitrag_gesamt_m: + - 273.0 + sozialversicherung__beiträge_versicherter_m: + - 123.19 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 48.09 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 11.59 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 56.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" new file mode 100644 index 0000000000..36fac4df08 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" @@ -0,0 +1,46 @@ +--- +info: + note: 'Sozialversicherungs-Rechner auf www.tk.de ' + source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php +inputs: + assumed: {} + provided: + alter: + - 40 + hh_id: + - 17 + p_id: + - 224 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1050.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - '2022' + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 11.8 + sozialversicherung__beiträge_arbeitgeber_m: + - 209.74 + sozialversicherung__beitrag_gesamt_m: + - 406.28 + sozialversicherung__beiträge_versicherter_m: + - 196.54 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 78.22 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 15.01 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 91.51 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" new file mode 100644 index 0000000000..8d9d37eb5f --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" @@ -0,0 +1,51 @@ +--- +info: + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz 2 Kinder unter 25 Jahren + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 23 + p_id: + - 23 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2023-07 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 39.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 612.0 + sozialversicherung__beitrag_gesamt_m: + - 1216.5 + sozialversicherung__beiträge_versicherter_m: + - 604.5 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 243.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 43.5 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 279.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" new file mode 100644 index 0000000000..c554fb8624 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" @@ -0,0 +1,51 @@ +--- +info: + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz 1 Kind über 25 Jahren und Midijob + source: https://www.ihre-vorsorge.de/rechner/midijob-rechner +inputs: + assumed: {} + provided: + alter: + - 50 + hh_id: + - 24 + p_id: + - 24 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2023-07 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 8.43 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.55 + sozialversicherung__beitrag_gesamt_m: + - 363.87 + sozialversicherung__beiträge_versicherter_m: + - 132.32 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 52.54 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 11.03 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 60.32 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" new file mode 100644 index 0000000000..56a6b51c1e --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" @@ -0,0 +1,51 @@ +--- +info: + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz 5 Kinder unter 25 Jahren + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 25 + p_id: + - 25 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2023-07 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 5 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 52.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 816.0 + sozialversicherung__beitrag_gesamt_m: + - 1592.0 + sozialversicherung__beiträge_versicherter_m: + - 776.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 324.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 28.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 372.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" new file mode 100644 index 0000000000..74d85829a7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" @@ -0,0 +1,51 @@ +--- +info: + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz keine Kinder + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 26 + p_id: + - 26 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2023-07 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 52.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 816.0 + sozialversicherung__beitrag_gesamt_m: + - 1656.0 + sozialversicherung__beiträge_versicherter_m: + - 840.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 324.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 92.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 372.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" new file mode 100644 index 0000000000..2716f33769 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" @@ -0,0 +1,51 @@ +--- +info: + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz keine Kinder und Midijob + source: https://www.smart-rechner.de/midijob/rechner.php +inputs: + assumed: {} + provided: + alter: + - 50 + hh_id: + - 27 + p_id: + - 27 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + jahr: + - 2023-07 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 8.43 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.54 + sozialversicherung__beitrag_gesamt_m: + - 369.21 + sozialversicherung__beiträge_versicherter_m: + - 137.67 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 52.54 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 16.38 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 60.32 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" new file mode 100644 index 0000000000..6f1ce0707a --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: Above new Beitragsbemessungsgrenze (of 2024). + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 0 + p_id: + - 0 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 78.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 1145.75 + sozialversicherung__beiträge_versicherter_m: + - 1132.81 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 421.77 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 75.04 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 558.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" new file mode 100644 index 0000000000..49f0d0fe7a --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: Above old Beitragsbemessungsgrenze (of 2023). + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 0 + p_id: + - 0 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4990.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 64.87 + sozialversicherung__beiträge_arbeitgeber_m: + - 1020.46 + sozialversicherung__beiträge_versicherter_m: + - 1007.99 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 406.69 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 72.36 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 464.07 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" new file mode 100644 index 0000000000..326725e094 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: Below old Beitragsbemessungsgrenze (of 2023). + source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ +inputs: + assumed: {} + provided: + alter: + - 45 + hh_id: + - 0 + p_id: + - 0 + wohnort_ost: + - false + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 39.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 613.5 + sozialversicherung__beiträge_versicherter_m: + - 606.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 244.5 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 43.5 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 279.0 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml index e5e68f10c6..e5d3b7ff34 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml @@ -3,20 +3,20 @@ info: note: '' source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: + assumed: {} provided: - p_id: - - 1 hh_id: - 1 - kind_unterh_anspr_m: - - 528.0 - kindergeld_m: - - 250.0 + familie__kind: + - true + p_id: + - 1 jahr: - 2023 - kind: - - true - assumed: {} + kindergeld__betrag_m: + - 250.0 + unterhalt__anspruch_m: + - 528.0 outputs: - kind_unterh_zahlbetr_m: + unterhalt__kind_festgelegter_zahlbetrag_m: - 403.0 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml index 5ac3f5ab52..9d070c2a58 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml @@ -3,20 +3,20 @@ info: note: '' source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: + assumed: {} provided: - p_id: - - 2 hh_id: - 2 - kind_unterh_anspr_m: - - 905.0 - kindergeld_m: - - 250.0 + familie__kind: + - false + p_id: + - 2 jahr: - 2023 - kind: - - false - assumed: {} + kindergeld__betrag_m: + - 250.0 + unterhalt__anspruch_m: + - 905.0 outputs: - kind_unterh_zahlbetr_m: + unterhalt__kind_festgelegter_zahlbetrag_m: - 655.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 470aec988e..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 158.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6b69b7a982..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2009/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 117.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 1f933e93f4..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 1941d08438..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2010/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d85732684a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6f2c22a2c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2011/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d85732684a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6f2c22a2c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2012/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d85732684a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6f2c22a2c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2013/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d85732684a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6f2c22a2c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2014/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d0c2b4009a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 192.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 9983b282c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2015-07/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 144.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index d85732684a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 6f2c22a2c3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2015/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: Regression test. -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 4b642d7a4c..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 194.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 1f3718d799..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2016/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 145.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 6e2f0826dc..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 201.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 99a77d40cd..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 3e202b824d..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 268.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index a05f0ddc7a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017-07/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index bf8f019085..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 201.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 4396ef4910..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 801f4cf80b..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2017/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index ebe26eec9e..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 205.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 99a77d40cd..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index ccfc99cd4a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 273.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index cbac4a8023..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 154.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/hh_id_5.yaml deleted file mode 100644 index 35a682e962..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2018-1/hh_id_5.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 6 - - 7 - hh_id: - - 5 - - 5 - p_id_elternteil_1: - - -1 - - 6 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 6 - p_id_einstandspartner: - - -1 - - -1 - alleinerz: - - true - - false - alter: - - 45 - - 10 - bruttolohn_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - jahr: - - 2018 - - 2018 - monat: - - 1 - - 1 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - parent_alleinerz: - - false - - true - unterhaltsvors_m: - - 0.0 - - 205.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 37f193a397..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 202.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 99a77d40cd..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 1f4957fd00..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 272.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index a05f0ddc7a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-07/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index f56df392d0..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 212.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 99a77d40cd..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 160a974c5b..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 282.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 416c64be2a..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 160.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_with_income.yaml deleted file mode 100644 index c137e568c8..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_with_income.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: Regression test -inputs: - provided: - p_id: - - 39 - - 41 - - 43 - hh_id: - - 4 - - 4 - - 4 - p_id_elternteil_1: - - -1 - - 39 - - 39 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 39 - - 39 - p_id_einstandspartner: - - -1 - - -1 - - -1 - alleinerz: - - true - - false - - false - alter: - - 45 - - 11 - - 14 - bruttolohn_m: - - 610.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - - 2019 - monat: - - 1 - - 1 - - 1 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - assumed: {} -outputs: - parent_alleinerz: - - false - - true - - true - unterhaltsvors_m: - - 0.0 - - 212.0 - - 282.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_without_income.yaml deleted file mode 100644 index 1a3bdb349e..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/older_child_parent_without_income.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: Regression test -inputs: - provided: - p_id: - - 39 - - 41 - - 43 - hh_id: - - 4 - - 4 - - 4 - p_id_elternteil_1: - - -1 - - 39 - - 39 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 39 - - 39 - p_id_einstandspartner: - - -1 - - -1 - - -1 - alleinerz: - - true - - false - - false - alter: - - 45 - - 11 - - 14 - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - - 2019 - monat: - - 1 - - 1 - - 1 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - assumed: {} -outputs: - parent_alleinerz: - - false - - true - - true - unterhaltsvors_m: - - 0.0 - - 212.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/young_child_parent_without_income.yaml deleted file mode 100644 index 234451543d..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-1/young_child_parent_without_income.yaml +++ /dev/null @@ -1,88 +0,0 @@ ---- -info: - note: '' - source: Regression test -inputs: - provided: - p_id: - - 39 - - 41 - - 43 - hh_id: - - 4 - - 4 - - 4 - p_id_elternteil_1: - - -1 - - 39 - - 39 - p_id_elternteil_2: - - -1 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 39 - - 39 - p_id_einstandspartner: - - -1 - - -1 - - -1 - alleinerz: - - true - - false - - false - alter: - - 45 - - 4 - - 11 - bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - - 2019 - monat: - - 1 - - 1 - - 1 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - - 0.0 - assumed: {} -outputs: - parent_alleinerz: - - false - - true - - true - unterhaltsvors_m: - - 0.0 - - 160.0 - - 212.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2019-8/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2019-8/hh_id_1.yaml deleted file mode 100644 index 8bc6d6adaa..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2019-8/hh_id_1.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 23 - - 25 - hh_id: - - 1 - - 1 - p_id_elternteil_1: - - -1 - - 23 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 23 - p_id_einstandspartner: - - -1 - - -1 - alleinerz: - - true - - false - alter: - - 40 - - 8 - bruttolohn_m: - - 0.0 - - 0.0 - sonstig_eink_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - eink_selbst_m: - - 0.0 - - 0.0 - arbeitsl_geld_m: - - 0.0 - - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - jahr: - - 2019 - - 2019 - monat: - - 8 - - 8 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - parent_alleinerz: - - false - - true - unterhaltsvors_m: - - 0.0 - - 202.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 096634e282..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 220.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 84654d62f3..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibetraege-142746 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 5a91d2fa04..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibetraege-142746 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 293.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index bcf1c6ec1c..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2020/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibetraege-142746 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 165.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index da75b343c2..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibetraege-142746 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 232.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index e3c654ed9f..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index dfb7fcfdef..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 309.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 61f9b3c5be..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2021/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 174.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 89aa79fa93..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 236.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index bbe67487e8..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 85e42c3bdb..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 314.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index dce93c5c39..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2022/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 177.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index 45ea023a73..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 252.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 9633a33f7d..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index 29e952e5fa..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 338.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index bc392716b0..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2023/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 187.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_mittlere_altergruppe.yaml deleted file mode 100644 index a7169a76ac..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_mittlere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the middle age group (6-11). - source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 8 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 301.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml deleted file mode 100644 index 5d8d69ff15..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_untere_altergruppe.yaml deleted file mode 100644 index 8b95eb690b..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshoehe_untere_altergruppe.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the lower age group (0-5). - source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 4 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 0.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 230.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml deleted file mode 100644 index c56e9a1b35..0000000000 --- a/src/_gettsim_tests/test_data/unterhaltsvors/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -info: - note: One child in the upper age group (12-17). - source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 -inputs: - provided: - p_id: - - 0 - - 1 - hh_id: - - 0 - - 0 - p_id_elternteil_1: - - -1 - - 0 - p_id_elternteil_2: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 0 - alter: - - 45 - - 15 - alleinerz: - - true - - false - unterhaltsvorschuss_eink_m: - - 1000.0 - - 0.0 - kind_unterh_erhalt_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - unterhaltsvors_m: - - 0.0 - - 395.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..83e8ff9c1e --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 158.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..63c70fbd72 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 117.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..208bec2eb4 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..dba6a76528 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..0521a4d972 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..2972506de5 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..0521a4d972 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..2972506de5 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..0521a4d972 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..2972506de5 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..0521a4d972 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..2972506de5 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..c7321b6044 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 192.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..b09f2386ea --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 144.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..0521a4d972 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 180.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..2972506de5 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: Regression test. +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 133.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..a2ed664cdf --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 194.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..61f0040d63 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 145.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..91cffd4e70 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 201.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..5e7914923f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..d05ebd7141 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 268.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..6006a590ea --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..b9ff65e9ac --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 201.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..14f8675f05 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..578c869125 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,35 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..79040f41bc --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 205.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..5e7914923f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..a172e8664f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 273.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..9831357108 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 154.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml new file mode 100644 index 0000000000..187813d52f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml @@ -0,0 +1,71 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 10 + hh_id: + - 5 + - 5 + p_id: + - 6 + - 7 + familie__p_id_elternteil_1: + - -1 + - 6 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2018 + - 2018 + kindergeld__p_id_empfänger: + - -1 + - 6 + monat: + - 1 + - 1 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 205.0 + unterhaltsvorschuss__elternteil_alleinerziehend: + - false + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..23c15199b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 202.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..5e7914923f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..bed05099c0 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 272.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..6006a590ea --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..95afb4162d --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 212.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..5e7914923f --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..67c8f15f69 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 282.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..28824f99c1 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 160.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml new file mode 100644 index 0000000000..1534eb74f3 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml @@ -0,0 +1,92 @@ +--- +info: + note: '' + source: Regression test +inputs: + assumed: {} + provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 45 + - 11 + - 14 + hh_id: + - 4 + - 4 + - 4 + p_id: + - 39 + - 41 + - 43 + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 610.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + - 2019 + kindergeld__p_id_empfänger: + - -1 + - 39 + - 39 + monat: + - 1 + - 1 + - 1 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 212.0 + - 282.0 + unterhaltsvorschuss__elternteil_alleinerziehend: + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml new file mode 100644 index 0000000000..72f1e475d7 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml @@ -0,0 +1,92 @@ +--- +info: + note: '' + source: Regression test +inputs: + assumed: {} + provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 45 + - 11 + - 14 + hh_id: + - 4 + - 4 + - 4 + p_id: + - 39 + - 41 + - 43 + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + - 2019 + kindergeld__p_id_empfänger: + - -1 + - 39 + - 39 + monat: + - 1 + - 1 + - 1 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 212.0 + - 0.0 + unterhaltsvorschuss__elternteil_alleinerziehend: + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml new file mode 100644 index 0000000000..8daefcd633 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml @@ -0,0 +1,92 @@ +--- +info: + note: '' + source: Regression test +inputs: + assumed: {} + provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + familie__alleinerziehend: + - true + - false + - false + alter: + - 45 + - 4 + - 11 + hh_id: + - 4 + - 4 + - 4 + p_id: + - 39 + - 41 + - 43 + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + - 2019 + kindergeld__p_id_empfänger: + - -1 + - 39 + - 39 + monat: + - 1 + - 1 + - 1 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 160.0 + - 212.0 + unterhaltsvorschuss__elternteil_alleinerziehend: + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml new file mode 100644 index 0000000000..29f0a4d6a2 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml @@ -0,0 +1,71 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 40 + - 8 + hh_id: + - 1 + - 1 + p_id: + - 23 + - 25 + familie__p_id_elternteil_1: + - -1 + - 23 + familie__p_id_elternteil_2: + - -1 + - -1 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + kindergeld__p_id_empfänger: + - -1 + - 23 + monat: + - 8 + - 8 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 202.0 + unterhaltsvorschuss__elternteil_alleinerziehend: + - false + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..9df2422d89 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 220.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..bd666f7672 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..24add4d50d --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 293.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..aefb823fa4 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 165.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..837480958c --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 232.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..650e7c5256 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..b9ec1ace02 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 309.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..ba96e5679a --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 174.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..3af61b7bac --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 236.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..ba7f7b93b8 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..3c75d4451b --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 314.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..6739dde646 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 177.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..718da828b1 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 252.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..ef24d1a6ff --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..ceae0bb72d --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 338.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..a33ca0e6fb --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 187.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml new file mode 100644 index 0000000000..342a6f54f9 --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the middle age group (6-11). + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 8 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 301.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml new file mode 100644 index 0000000000..d7710b919b --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml new file mode 100644 index 0000000000..8888e17a1d --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the lower age group (0-5). + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 4 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 230.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml new file mode 100644 index 0000000000..42e0b4503a --- /dev/null +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -0,0 +1,38 @@ +--- +info: + note: One child in the upper age group (12-17). + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 45 + - 15 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + kindergeld__p_id_empfänger: + - -1 + - 0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 395.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" new file mode 100644 index 0000000000..b6bc62efd5 --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" @@ -0,0 +1,152 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 362.0 + - 100.0 + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 9 + - 8 + - -1 + - -1 + - -1 + arbeitslosengeld_2__regelbedarf_m_bg: + - 2281.0 + - 2281.0 + - 2281.0 + - 2281.0 + - 2281.0 + alter: + - 33 + - 30 + - 12 + - 10 + - 2 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 + familie__kind: + - false + - false + - true + - true + - true + p_id: + - 8 + - 9 + - 10 + - 11 + - 12 + familie__p_id_elternteil_1: + - -1 + - -1 + - 8 + - 8 + - 8 + familie__p_id_elternteil_2: + - -1 + - -1 + - 9 + - 9 + - 9 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + kinderzuschlag__basisbetrag_m_bg: + - 280.0 + - 280.0 + - 280.0 + - 280.0 + - 280.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 650.0 + - 650.0 + - 650.0 + - 650.0 + - 650.0 + wohngeld__anspruchshöhe_m_wthh: + - 650.0 + - 650.0 + - 650.0 + - 650.0 + - 650.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 1819.0 + - 1819.0 + - 1819.0 + - 1819.0 + - 1819.0 + kinderzuschlag__betrag_m_bg: + - 0 + - 0 + - 0 + - 0 + - 0 + wohngeld__betrag_m_wthh: + - 0 + - 0 + - 0 + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" new file mode 100644 index 0000000000..8db65b568c --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" @@ -0,0 +1,92 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 555.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1183.64 + - 1183.64 + alter: + - 28 + - 1 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 + familie__kind: + - false + - true + p_id: + - 6 + - 7 + familie__p_id_elternteil_1: + - -1 + - 6 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + jahr: + - 2009 + - 2009 + kindergeld__p_id_empfänger: + - -1 + - 6 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 500.0 + - 500.0 + wohngeld__anspruchshöhe_m_wthh: + - 500.0 + - 500.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + kinderzuschlag__betrag_m_bg: + - 140 + - 140 + vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + wohngeld__betrag_m_wthh: + - 500 + - 500 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" new file mode 100644 index 0000000000..4b83fe2cea --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" @@ -0,0 +1,80 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 700.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 5 + - 4 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1170.0 + - 1170.0 + alter: + - 40 + - 40 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 + familie__kind: + - false + - false + p_id: + - 4 + - 5 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + jahr: + - 2013 + - 2013 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 400.0 + - 400.0 + wohngeld__anspruchshöhe_m_wthh: + - 400.0 + - 400.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 470.0 + - 470.0 + kinderzuschlag__betrag_m_bg: + - 0 + - 0 + wohngeld__betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" new file mode 100644 index 0000000000..267e5a8a1a --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" @@ -0,0 +1,80 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 300.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 19 + - 18 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1046.0 + - 1046.0 + alter: + - 75 + - 50 + geburtsjahr: + - 1939 + - 1964 + hh_id: + - 7 + - 7 + familie__kind: + - false + - false + p_id: + - 18 + - 19 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 78000.0 + - 0.0 + jahr: + - 2014 + - 2014 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_wthh: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + kinderzuschlag__betrag_m_bg: + - 0 + - 0 + wohngeld__betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" new file mode 100644 index 0000000000..8ff357b2db --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" @@ -0,0 +1,104 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 1100.0 + - 200.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - 1 + - -1 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1765.0 + - 1765.0 + - 1765.0 + alter: + - 30 + - 30 + - 2 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 1 + - 1 + - 1 + familie__kind: + - false + - false + - true + p_id: + - 1 + - 2 + - 3 + familie__p_id_elternteil_1: + - -1 + - -1 + - 1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 2 + vermögen: + - 0.0 + - 0.0 + - 0.0 + jahr: + - 2016 + - 2016 + - 2016 + kinderzuschlag__basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 350.0 + - 350.0 + - 350.0 + wohngeld__anspruchshöhe_m_wthh: + - 350.0 + - 350.0 + - 350.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + - 0.0 + - 0.0 + kinderzuschlag__betrag_m_bg: + - 140 + - 140 + - 140 + wohngeld__betrag_m_wthh: + - 350 + - 350 + - 350 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" new file mode 100644 index 0000000000..33d03a2519 --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" @@ -0,0 +1,83 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 555.0 + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1183.64 + - 1183.64 + alter: + - 28 + - 1 + geburtsjahr: + - 1991 + - 2018 + hh_id: + - 6 + - 6 + familie__kind: + - false + - true + p_id: + - 16 + - 17 + familie__p_id_elternteil_1: + - -1 + - 16 + familie__p_id_elternteil_2: + - -1 + - -1 + vermögen: + - 0.0 + - 0.0 + jahr: + - 2019 + - 2019 + kindergeld__betrag_m: + - 0.0 + - 0.0 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 356.0 + - 356.0 + wohngeld__anspruchshöhe_m_wthh: + - 356.0 + - 356.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 628.64 + - 628.64 + kinderzuschlag__betrag_m_bg: + - 0 + - 0 + wohngeld__betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" new file mode 100644 index 0000000000..888b93339a --- /dev/null +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" @@ -0,0 +1,56 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: + - 0.0 + arbeitslosengeld_2__kindergeldübertrag_m: + - 0.0 + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + arbeitslosengeld_2__regelbedarf_m_bg: + - 1000.0 + alter: + - 80 + geburtsjahr: + - 1939 + hh_id: + - 8 + familie__kind: + - false + p_id: + - 20 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 0.0 + jahr: + - 2019 + kinderzuschlag__basisbetrag_m_bg: + - 0.0 + sozialversicherung__rente__bezieht_rente: + - true + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 + wohngeld__anspruchshöhe_m_wthh: + - 0.0 +outputs: + arbeitslosengeld_2__betrag_m_bg: + - 0.0 + kinderzuschlag__betrag_m_bg: + - 0 + wohngeld__betrag_m_wthh: + - 0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2004/hh_id_11.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2004/hh_id_11.yaml deleted file mode 100644 index 53a5313984..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2004/hh_id_11.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.steuerlex24.de/demoseite/information_steuerlexikon/index/xid/462984 -inputs: - provided: - p_id: - - 1 - hh_id: - - 11 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 3000.0 - kind: - - false - priv_rentenv_beitr_m: - - 150.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 294.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 36.75 - jahr: - - 2004 - ges_krankenv_beitr_arbeitnehmer_m: - - 237.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_2.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_2.yaml deleted file mode 100644 index 3ac6d52713..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_2.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: Cannot access original source. Result adjusted by 5 to fit calculated result - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 2 - - 3 - hh_id: - - 2 - - 2 - p_id_ehepartner: - - 3 - - 2 - gemeinsam_veranlagt: - - true - - true - bruttolohn_m: - - 3500.0 - - 0.0 - kind: - - false - - true - priv_rentenv_beitr_m: - - 334.0 - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - jahr: - - 2005 - - 2005 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 3605 - - 3605 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_5.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_5.yaml deleted file mode 100644 index 923544cdc4..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_5.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 4 - hh_id: - - 5 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 3500.0 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2005 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_8.yaml deleted file mode 100644 index fd9b4e0e8f..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_8.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 5 - hh_id: - - 8 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 4166.666667 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 406.25 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2005 - ges_krankenv_beitr_arbeitnehmer_m: - - 133.33 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2475 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_9.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_9.yaml deleted file mode 100644 index 399bde9a66..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2005/hh_id_9.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 6 - hh_id: - - 9 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 1666.666667 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 162.5 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2005 - ges_krankenv_beitr_arbeitnehmer_m: - - 133.33 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_16.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_16.yaml deleted file mode 100644 index 216725eb3b..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_16.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: Testcase from zu_verst_eink -inputs: - provided: - p_id: - - 17 - hh_id: - - 16 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 1500.0 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 150.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 30.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 22.5 - jahr: - - 2010 - ges_krankenv_beitr_arbeitnehmer_m: - - 120.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2620 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_3.yaml deleted file mode 100644 index 31c9e8a29b..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_3.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: Cannot access original source. Result adjusted by 5 to fit calculated result - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 7 - hh_id: - - 3 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 3500.0 - kind: - - false - priv_rentenv_beitr_m: - - 334.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2010 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 5205 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_6.yaml deleted file mode 100644 index 9ff622dbe3..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2010/hh_id_6.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 8 - - 9 - hh_id: - - 6 - - 6 - p_id_ehepartner: - - 9 - - 8 - gemeinsam_veranlagt: - - true - - true - bruttolohn_m: - - 3500.0 - - 0.0 - kind: - - false - - true - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - jahr: - - 2010 - - 2010 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 2400 - - 2400 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2018/hh_id_15.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2018/hh_id_15.yaml deleted file mode 100644 index 7536223d6f..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2018/hh_id_15.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: Testcase from zu_verst_eink -inputs: - provided: - p_id: - - 16 - hh_id: - - 15 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 1500.0 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 150.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 30.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 22.5 - jahr: - - 2018 - ges_krankenv_beitr_arbeitnehmer_m: - - 120.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 3196 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2020/hh_id_13.yaml deleted file mode 100644 index c69d888783..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2020/hh_id_13.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.ruv.de/ratgeber/altersvorsorge/staatliche-foerderung/basisrente-sonderausgabenabzug -inputs: - provided: - p_id: - - 14 - hh_id: - - 13 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 2583.33 - kind: - - false - priv_rentenv_beitr_m: - - 150.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 232.5 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2020 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 3852 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2021/hh_id_12.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2021/hh_id_12.yaml deleted file mode 100644 index b145cb48bd..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2021/hh_id_12.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.finanztip.de/vorsorgeaufwendungen/ -inputs: - provided: - p_id: - - 13 - hh_id: - - 12 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 4305.56 - kind: - - false - priv_rentenv_beitr_m: - - 250.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 387.5 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2021 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 6666 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_17.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_17.yaml deleted file mode 100644 index c4ef57d752..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_17.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: corrected tax-exempt employer contribution in testcase - source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html -inputs: - provided: - p_id: - - 18 - - 19 - hh_id: - - 17 - - 17 - p_id_ehepartner: - - 19 - - 18 - gemeinsam_veranlagt: - - true - - true - bruttolohn_m: - - 8333.333333 - - 1250.0 - kind: - - false - - false - priv_rentenv_beitr_m: - - 416.666667 - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 660.333333 - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - jahr: - - 2022 - - 2022 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 11674 - - 11674 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_18.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_18.yaml deleted file mode 100644 index ad9684a0a7..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2022/hh_id_18.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -info: - note: '' - source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html -inputs: - provided: - p_id: - - 20 - - 21 - hh_id: - - 18 - - 18 - p_id_ehepartner: - - 21 - - 20 - gemeinsam_veranlagt: - - true - - true - bruttolohn_m: - - 5000.0 - - 10000.0 - kind: - - false - - false - priv_rentenv_beitr_m: - - 333.333333 - - 1666.666667 - ges_rentenv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - jahr: - - 2022 - - 2022 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 22560 - - 22560 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_4.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_4.yaml deleted file mode 100644 index 2d4292cba5..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_4.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: Cannot access original source. Result adjusted by 5 to fit calculated result - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 11 - hh_id: - - 4 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 3500.0 - kind: - - false - priv_rentenv_beitr_m: - - 334.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2023 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 10008 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_7.yaml b/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_7.yaml deleted file mode 100644 index 525ccd532a..0000000000 --- a/src/_gettsim_tests/test_data/vorsorgeaufw/2023/hh_id_7.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -info: - note: '' - source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 -inputs: - provided: - p_id: - - 12 - hh_id: - - 7 - p_id_ehepartner: - - -1 - gemeinsam_veranlagt: - - false - bruttolohn_m: - - 3500.0 - kind: - - false - priv_rentenv_beitr_m: - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 500.0 - arbeitsl_v_beitr_arbeitnehmer_m: - - 0.0 - ges_pflegev_beitr_arbeitnehmer_m: - - 0.0 - jahr: - - 2023 - ges_krankenv_beitr_arbeitnehmer_m: - - 0.0 - assumed: {} -outputs: - vorsorgeaufw_y_sn: - - 6000 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml new file mode 100644 index 0000000000..3ac3ece582 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.steuerlex24.de/demoseite/information_steuerlexikon/index/xid/462984 +inputs: + assumed: {} + provided: + hh_id: + - 11 + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 150.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2004 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 237.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 36.75 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 294.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml new file mode 100644 index 0000000000..afc2dbd86c --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml @@ -0,0 +1,47 @@ +--- +info: + note: Cannot access original source. Result adjusted by 5 to fit calculated result + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 2 + - 2 + familie__kind: + - false + - true + p_id: + - 2 + - 3 + familie__p_id_ehepartner: + - 3 + - 2 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 334.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2005 + - 2005 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 + - 0.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 3605 + - 3605 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml new file mode 100644 index 0000000000..b585fdbad7 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 5 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2005 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml new file mode 100644 index 0000000000..98e1913b13 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 8 + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4166.666667 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2005 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 133.33 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 406.25 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2475 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml new file mode 100644 index 0000000000..8b151eaa02 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 9 + familie__kind: + - false + p_id: + - 6 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1666.666667 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2005 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 133.33 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 162.5 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2001 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml new file mode 100644 index 0000000000..966a753202 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: Testcase from zu_verst_eink +inputs: + assumed: {} + provided: + hh_id: + - 16 + familie__kind: + - false + p_id: + - 17 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 30.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 120.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 22.5 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 150.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2620 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml new file mode 100644 index 0000000000..2cdf55bb01 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml @@ -0,0 +1,34 @@ +--- +info: + note: Cannot access original source. Result adjusted by 5 to fit calculated result + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 3 + familie__kind: + - false + p_id: + - 7 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 334.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 5205 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml new file mode 100644 index 0000000000..a15ed3a1f2 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml @@ -0,0 +1,47 @@ +--- +info: + note: '' + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 6 + - 6 + familie__kind: + - false + - true + p_id: + - 8 + - 9 + familie__p_id_ehepartner: + - 9 + - 8 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2010 + - 2010 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 + - 0.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2400 + - 2400 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml new file mode 100644 index 0000000000..5de716212e --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: Testcase from zu_verst_eink +inputs: + assumed: {} + provided: + hh_id: + - 15 + familie__kind: + - false + p_id: + - 16 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 30.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 120.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 22.5 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 150.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 3196 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml new file mode 100644 index 0000000000..b08a5a87a0 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.ruv.de/ratgeber/altersvorsorge/staatliche-foerderung/basisrente-sonderausgabenabzug +inputs: + assumed: {} + provided: + hh_id: + - 13 + familie__kind: + - false + p_id: + - 14 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 150.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2583.33 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2020 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 232.5 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 3852 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml new file mode 100644 index 0000000000..0f5aa4915d --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.finanztip.de/vorsorgeaufwendungen/ +inputs: + assumed: {} + provided: + hh_id: + - 12 + familie__kind: + - false + p_id: + - 13 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 250.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4305.56 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2021 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 387.5 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 6666 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml new file mode 100644 index 0000000000..4bd70239fb --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml @@ -0,0 +1,47 @@ +--- +info: + note: corrected tax-exempt employer contribution in testcase + source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html +inputs: + assumed: {} + provided: + hh_id: + - 17 + - 17 + familie__kind: + - false + - false + p_id: + - 18 + - 19 + familie__p_id_ehepartner: + - 19 + - 18 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 416.666667 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8333.333333 + - 1250.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2022 + - 2022 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 660.333333 + - 0.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 11674 + - 11674 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml new file mode 100644 index 0000000000..d3208122af --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml @@ -0,0 +1,47 @@ +--- +info: + note: '' + source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html +inputs: + assumed: {} + provided: + hh_id: + - 18 + - 18 + familie__kind: + - false + - false + p_id: + - 20 + - 21 + familie__p_id_ehepartner: + - 21 + - 20 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 333.333333 + - 1666.666667 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 + - 10000.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2022 + - 2022 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 22560 + - 22560 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml new file mode 100644 index 0000000000..00113567ae --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml @@ -0,0 +1,34 @@ +--- +info: + note: Cannot access original source. Result adjusted by 5 to fit calculated result + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 4 + familie__kind: + - false + p_id: + - 11 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 334.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2023 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 10008 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml b/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml new file mode 100644 index 0000000000..8ba9da9bf1 --- /dev/null +++ b/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml @@ -0,0 +1,34 @@ +--- +info: + note: '' + source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 +inputs: + assumed: {} + provided: + hh_id: + - 7 + familie__kind: + - false + p_id: + - 12 + familie__p_id_ehepartner: + - -1 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2023 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 500.0 +outputs: + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 6000 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml index 91d0cbd947..ece39a52ae 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml @@ -5,16 +5,89 @@ info: people are eligible for housing subsidies source: Regression test. inputs: + assumed: {} provided: - p_id: - - 66 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 67 - - 68 - - 69 - - 70 - - 71 - - 72 - - 73 + - 66 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + alter: + - 42 + - 53 + - 7 + - 8 + - 12 + - 2 + - 2 + - 5 + anzahl_personen_hh: + - 8 + - 8 + - 8 + - 8 + - 8 + - 8 + - 8 + - 8 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1964 + - 1953 + - 1999 + - 1998 + - 1994 + - 2004 + - 2004 + - 2001 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 15 - 15 @@ -24,16 +97,25 @@ inputs: - 15 - 15 - 15 - p_id_kindergeld_empf: - - -1 - - -1 - - 66 - - 66 - - 66 - - 66 - - 66 + familie__kind: + - false + - false + - true + - true + - true + - true + - true + - true + p_id: - 66 - p_id_ehepartner: + - 67 + - 68 + - 69 + - 70 + - 71 + - 72 + - 73 + familie__p_id_ehepartner: - 67 - 66 - -1 @@ -42,7 +124,7 @@ inputs: - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 66 @@ -51,7 +133,7 @@ inputs: - 66 - 66 - 66 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 67 @@ -60,70 +142,8 @@ inputs: - 67 - 67 - 67 - p_id_einstandspartner: - - 67 - - 66 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - - true - - true - - true - bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: + - 200000.0 - 0.0 - 0.0 - 0.0 @@ -131,8 +151,8 @@ inputs: - 0.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 - 0.0 - 0.0 @@ -140,62 +160,16 @@ inputs: - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - - false - - false - alter: - - 42 - - 53 - - 7 - - 8 - - 12 - - 2 - - 2 - - 5 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - - false - - false - mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1450.0 - 1450.0 - 0.0 @@ -204,7 +178,7 @@ inputs: - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 @@ -213,7 +187,7 @@ inputs: - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 @@ -222,7 +196,7 @@ inputs: - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 @@ -231,7 +205,16 @@ inputs: - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 @@ -240,7 +223,7 @@ inputs: - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 @@ -249,7 +232,34 @@ inputs: - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 66 + - 66 + - 66 + - 66 + - 66 + - 66 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 @@ -258,7 +268,7 @@ inputs: - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 @@ -267,7 +277,7 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 @@ -276,7 +286,7 @@ inputs: - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: - 0.0 - 0.0 - 0.0 @@ -285,7 +295,7 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 @@ -294,7 +304,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 50.0 - 0.0 - 0.0 @@ -303,7 +313,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 @@ -312,25 +322,7 @@ inputs: - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - eink_st_y_sn: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 @@ -339,8 +331,7 @@ inputs: - 0.0 - 0.0 - 0.0 - vermögen_bedürft: - - 200000.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 @@ -348,43 +339,8 @@ inputs: - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 8 - - 8 - - 8 - - 8 - - 8 - - 8 - - 8 - - 8 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1964 - - 1953 - - 1999 - - 1998 - - 1994 - - 2004 - - 2004 - - 2001 - wohngeld_vorrang_bg: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true @@ -393,7 +349,7 @@ inputs: - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true @@ -402,9 +358,62 @@ inputs: - true - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 93.0 - 93.0 - 93.0 @@ -413,7 +422,7 @@ outputs: - 93.0 - 93.0 - 93.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 93.0 - 93.0 - 93.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml index 8d27b89e90..fa6f59ccf1 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml @@ -3,280 +3,286 @@ info: note: No wealth threshold in place before 2009 source: Regression test. inputs: + assumed: {} provided: - p_id: - - 22 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 23 - - 24 - - 25 - - 26 + - 22 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + alter: + - 42 + - 53 + - 7 + - 8 + - 12 + anzahl_personen_hh: + - 5 + - 5 + - 5 + - 5 + - 5 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1964 + - 1953 + - 1999 + - 1998 + - 1994 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 4 - 4 - 4 - 4 - 4 - p_id_kindergeld_empf: - - -1 - - -1 - - 22 - - 22 + familie__kind: + - false + - false + - true + - true + - true + p_id: - 22 - p_id_ehepartner: + - 23 + - 24 + - 25 + - 26 + familie__p_id_ehepartner: - 23 - 22 - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 22 - 22 - 22 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 23 - 23 - 23 - p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - true - - true - - true - kind: - - false - - false - - true - - true - - true - bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - - 70.0 - - 70.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - soli_st_y_sn: + vermögen: + - 200000.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - alter: - - 42 - - 53 - - 7 - - 8 - - 12 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - false - - false - - false - mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 - bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 - 1000.0 - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + - true + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2006 + - 2006 + - 2006 + - 2006 + - 2006 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + - 22 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 50.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - eink_st_y_sn: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - vermögen_bedürft: - - 200000.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 5 - - 5 - - 5 - - 5 - - 5 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1964 - - 1953 - - 1999 - - 1998 - - 1994 - wohngeld_vorrang_bg: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + - 70.0 + - 70.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 104.0 - 104.0 - 104.0 - 104.0 - 104.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 104.0 - 104.0 - 104.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml index 247e57500f..57eec64887 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml @@ -3,147 +3,150 @@ info: note: Wealth is too high for housing subsidies. source: Regression test. inputs: + assumed: {} provided: - p_id: - - 20 - - 21 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + familie__alleinerziehend: + - true + - false + alter: + - 37 + - 8 + anzahl_personen_hh: + - 2 + - 2 + behinderungsgrad: + - 0 + - 0 + geburtsjahr: + - 1972 + - 2001 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 hh_id: - 3 - 3 - p_id_kindergeld_empf: - - -1 + familie__kind: + - false + - true + p_id: - 20 - p_id_ehepartner: + - 21 + familie__p_id_ehepartner: - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - 20 - p_id_elternteil_2: - - -1 + familie__p_id_elternteil_2: - -1 - p_id_einstandspartner: - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - gemeinsam_veranlagt: - - false - - false - kind: - - false - - true - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 50.0 - - 50.0 - soli_st_y_sn: + vermögen: + - 95000.0 - 0.0 + einkommensteuer__betrag_y_sn: + - 1000.0 + - 1000.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 16000.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - alleinerz: - - true - - false - alter: - - 37 - - 8 - immobilie_baujahr_hh: - - 1995 - - 1995 - kindergeld_anspruch: - - false - - true - mietstufe: - - 3 - - 3 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: + - 250.0 - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - arbeitsl_geld_m: - 0.0 + elterngeld__betrag_m: - 0.0 - sonstig_eink_m: - - 250.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2009 + - 2009 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - true + kindergeld__p_id_empfänger: + - -1 + - 20 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 16000.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 100.0 - 0.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 100.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - behinderungsgrad: - - 0 - - 0 - jahr: - - 2009 - - 2009 - eink_st_y_sn: - - 1000.0 - - 1000.0 - vermögen_bedürft: - - 95000.0 - 0.0 - anz_personen_hh: - - 2 - - 2 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1972 - - 2001 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 0.0 - 0.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml index 9513554c2d..b36ca78a7f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml @@ -3,144 +3,147 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: - - 18 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 19 + - 18 + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 55 + anzahl_personen_hh: + - 2 + - 2 + behinderungsgrad: + - 50 + - 0 + geburtsjahr: + - 1973 + - 1958 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 hh_id: - 2 - 2 - p_id_kindergeld_empf: - - -1 - - -1 - p_id_ehepartner: + familie__kind: + - false + - false + p_id: + - 18 + - 19 + familie__p_id_ehepartner: - 19 - 18 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - p_id_einstandspartner: - - 19 - - 18 - eigenbedarf_gedeckt: - - false - - false - gemeinsam_veranlagt: - - true - - true - kind: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 50.0 - - 50.0 - soli_st_y_sn: + vermögen: + - 30000.0 - 0.0 + einkommensteuer__betrag_y_sn: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - - false - alleinerz: - - false - - false - alter: - - 40 - - 55 - immobilie_baujahr_hh: - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - mietstufe: - - 3 - - 3 - bruttolohn_m: - - 1300.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1300.0 - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - rente_ertragsanteil: - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - elterngeld_m: - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - sonstig_eink_m: - - 100.0 + elterngeld__betrag_m: - 0.0 - kind_unterh_erhalt_m: - 0.0 + jahr: + - 2013 + - 2013 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - unterhaltsvors_m: - 0.0 + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_selbst_m: - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - kapitaleink_brutto_y: - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 100.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - behinderungsgrad: - - 50 - - 0 - jahr: - - 2013 - - 2013 - eink_st_y_sn: - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - vermögen_bedürft: - - 30000.0 - 0.0 - anz_personen_hh: - - 2 - - 2 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1973 - - 1958 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_bg: - 73.0 - 73.0 - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_wthh: - 73.0 - 73.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml index bdeac2bdac..b0c36ad71f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml @@ -3,144 +3,147 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: - - 53 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 54 + - 53 + familie__alleinerziehend: + - false + - false + alter: + - 50 + - 55 + anzahl_personen_hh: + - 2 + - 2 + behinderungsgrad: + - 50 + - 0 + geburtsjahr: + - 1963 + - 1958 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 hh_id: - 9 - 9 - p_id_kindergeld_empf: - - -1 - - -1 - p_id_ehepartner: + familie__kind: + - false + - false + p_id: + - 53 + - 54 + familie__p_id_ehepartner: - 54 - 53 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - p_id_einstandspartner: - - 54 - - 53 - eigenbedarf_gedeckt: - - false - - false - gemeinsam_veranlagt: - - true - - true - kind: - - false - - false - bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - wohnfläche_hh: - - 50.0 - - 50.0 - soli_st_y_sn: + vermögen: + - 90000.0 - 0.0 + einkommensteuer__betrag_y_sn: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - - false - alleinerz: - - false - - false - alter: - - 50 - - 55 - immobilie_baujahr_hh: - - 2005 - - 2005 - kindergeld_anspruch: - - false - - false - mietstufe: - - 3 - - 3 - bruttolohn_m: - - 1200.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - rente_ertragsanteil: - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - elterngeld_m: - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 100.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - sonstig_eink_m: - - 100.0 + elterngeld__betrag_m: - 0.0 - kind_unterh_erhalt_m: - 0.0 + jahr: + - 2013 + - 2013 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - unterhaltsvors_m: - 0.0 + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_selbst_m: - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - kapitaleink_brutto_y: - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 100.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - behinderungsgrad: - - 50 - - 0 - jahr: - - 2013 - - 2013 - eink_st_y_sn: - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - vermögen_bedürft: - - 90000.0 - 0.0 - anz_personen_hh: - - 2 - - 2 - geburtstag: - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - geburtsjahr: - - 1963 - - 1958 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 2005 + - 2005 + wohnen__bewohnt_eigentum_hh: + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_bg: - 108.0 - 108.0 - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_wthh: - 108.0 - 108.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml index 1c0cf5d89d..a483f6819a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml @@ -3,194 +3,198 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: - - 15 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 16 - - 17 + - 15 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 45 + - 46 + - 9 + anzahl_personen_hh: + - 3 + - 3 + - 3 + behinderungsgrad: + - 0 + - 0 + - 0 + geburtsjahr: + - 1971 + - 1970 + - 2007 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 hh_id: - 1 - 1 - 1 - p_id_kindergeld_empf: - - -1 - - -1 + familie__kind: + - false + - false + - true + p_id: - 15 - p_id_ehepartner: + - 16 + - 17 + familie__p_id_ehepartner: - 16 - 15 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 15 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 16 - p_id_einstandspartner: - - 16 - - 15 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - kind: - - false - - false - - true - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - soli_st_y_sn: + vermögen: + - 120000.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: + - 1000.0 + - 1000.0 + - 1000.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 1000.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 25000.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - alter: - - 45 - - 46 - - 9 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - true - mietstufe: - - 3 - - 3 - - 3 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2000.0 - 0.0 - 200.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2016 + - 2016 + - 2016 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 15 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 25000.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 - 0.0 - 0.0 - kapitaleink_brutto_y: - - 1000.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - eink_vermietung_m: - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 100.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 100.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - jahr: - - 2016 - - 2016 - - 2016 - eink_st_y_sn: - - 1000.0 - - 1000.0 - - 1000.0 - vermögen_bedürft: - - 120000.0 - 0.0 - 0.0 - anz_personen_hh: - - 3 - - 3 - - 3 - geburtstag: - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - geburtsjahr: - - 1971 - - 1970 - - 2007 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 75.0 - 75.0 - 75.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 75.0 - 75.0 - 75.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml index 6abe7b24e5..f87509826d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml @@ -3,21 +3,134 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: - - 34 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 35 - - 36 + - 34 - 37 - - 38 - - 39 - - 40 - - 41 - - 42 - - 43 - - 44 + - 36 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + alter: - 45 - - 46 + - 42 + - 55 + - 57 + - 25 + - 18 + - 16 + - 14 + - 13 + - 12 + - 20 + - 9 + - 7 + anzahl_personen_hh: + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + - 13 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1973 + - 1976 + - 1963 + - 1961 + - 1993 + - 2000 + - 2002 + - 2004 + - 2005 + - 2006 + - 1998 + - 2009 + - 2011 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 7 - 7 @@ -32,21 +145,35 @@ inputs: - 7 - 7 - 7 - p_id_kindergeld_empf: - - -1 - - -1 - - -1 - - -1 - - -1 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 + familie__kind: + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + p_id: - 34 - p_id_ehepartner: + - 35 + - 36 + - 37 + - 38 + - 39 + - 40 + - 41 + - 42 + - 43 + - 44 + - 45 + - 46 + familie__p_id_ehepartner: - 35 - 34 - 37 @@ -60,7 +187,7 @@ inputs: - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 34 @@ -74,7 +201,7 @@ inputs: - 34 - 34 - 34 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 35 @@ -88,121 +215,8 @@ inputs: - 35 - 35 - 35 - p_id_einstandspartner: - - 35 - - 34 - - 37 - - 36 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - - false - - false - - false - - false - - false - - false - kind: - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - bruttokaltmiete_m_hh: - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - soli_st_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - - 0.0 + vermögen: + - 4100.0 - 0.0 - 0.0 - 0.0 @@ -214,91 +228,36 @@ inputs: - 0.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - alter: - - 45 - - 42 - - 55 - - 57 - - 25 - - 18 - - 16 - - 14 - - 13 - - 12 - - 20 - - 9 - - 7 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - bruttolohn_m: + - 0.0 + einkommensteuer__betrag_y_sn: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2400.0 - 2400.0 - 2400.0 @@ -312,8 +271,7 @@ inputs: - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 @@ -326,8 +284,8 @@ inputs: - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 @@ -340,8 +298,8 @@ inputs: - 0.0 - 0.0 - 0.0 - elterngeld_m: - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 @@ -354,8 +312,22 @@ inputs: - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + - false + - false + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 @@ -368,8 +340,8 @@ inputs: - 0.0 - 0.0 - 0.0 - sonstig_eink_m: - 0.0 + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 @@ -382,8 +354,50 @@ inputs: - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: - 0.0 + jahr: + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 @@ -396,8 +410,8 @@ inputs: - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: - 0.0 + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 @@ -410,8 +424,8 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_selbst_m: - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 @@ -424,8 +438,9 @@ inputs: - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 350.0 - 0.0 - 0.0 - 0.0 @@ -438,7 +453,7 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 @@ -452,7 +467,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 400.0 - 0.0 - 0.0 @@ -466,8 +481,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 350.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 @@ -480,40 +494,8 @@ inputs: - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - eink_st_y_sn: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 @@ -522,13 +504,12 @@ inputs: - 0.0 - 0.0 - 0.0 - vermögen_bedürft: - - 4100.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 @@ -536,63 +517,13 @@ inputs: - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - - 13 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1973 - - 1976 - - 1963 - - 1961 - - 1993 - - 2000 - - 2002 - - 2004 - - 2005 - - 2006 - - 1998 - - 2009 - - 2011 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true @@ -606,7 +537,7 @@ inputs: - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true @@ -620,9 +551,92 @@ inputs: - true - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 47.0 - 47.0 - 47.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml index 8212769272..da89242c06 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml @@ -3,14 +3,71 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: + - 48 - 47 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + alter: + - 43 - 48 - - 49 - - 50 - - 51 - - 52 + - 14 + - 15 + - 6 + - 5 + anzahl_personen_hh: + - 6 + - 6 + - 6 + - 6 + - 6 + - 6 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1975 + - 1970 + - 2004 + - 2003 + - 2012 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 8 - 8 @@ -18,310 +75,260 @@ inputs: - 8 - 8 - 8 - p_id_kindergeld_empf: - - -1 - - -1 - - 47 - - 47 - - 47 + familie__kind: + - false + - false + - true + - true + - true + - true + p_id: - 47 - p_id_ehepartner: + - 48 + - 49 + - 50 + - 51 + - 52 + familie__p_id_ehepartner: - 48 - 47 - -1 - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 47 - 47 - 47 - 47 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 48 - 48 - 48 - 48 - p_id_einstandspartner: - - 48 - - 47 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - - true - bruttokaltmiete_m_hh: - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: + - 1000.0 + - 1000.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - alter: - - 43 - - 48 - - 14 - - 15 - - 6 - - 5 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - mietstufe: - - 4 - - 4 - - 4 - - 4 - - 4 - - 4 - bruttolohn_m: - - 3650.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3650.0 - 0.0 - sum_ges_rente_priv_rente_m: - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - elterngeld_m: - - 500.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - arbeitsl_geld_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - sonstig_eink_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + elterngeld__betrag_m: + - 500.0 + - 0.0 + - 0.0 + - 0.0 - 0.0 - kind_unterh_erhalt_m: - 0.0 + jahr: + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 47 + - 47 + - 47 + - 47 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: - 0.0 + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 255.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 300.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 255.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - eink_st_y_sn: - - 1000.0 - - 1000.0 - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - vermögen_bedürft: - 0.0 - 0.0 - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 6 - - 6 - - 6 - - 6 - - 6 - - 6 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1975 - - 1970 - - 2004 - - 2003 - - 2012 - - 2013 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 4 + - 4 + - 4 + - 4 + - 4 + - 4 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 24.0 - 24.0 - 24.0 - 24.0 - 24.0 - 24.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 24.0 - 24.0 - 24.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml index 0ded975bbf..816628cc58 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml @@ -3,14 +3,71 @@ info: note: Wealth is too high for housing subsidies. source: Regression test. inputs: + assumed: {} provided: - p_id: - - 28 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 29 - - 30 - - 31 - - 32 - - 33 + - 28 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + alter: + - 43 + - 48 + - 14 + - 15 + - 6 + - 5 + anzahl_personen_hh: + - 6 + - 6 + - 6 + - 6 + - 6 + - 6 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1975 + - 1970 + - 2004 + - 2003 + - 2012 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 6 - 6 @@ -18,317 +75,267 @@ inputs: - 6 - 6 - 6 - p_id_kindergeld_empf: - - -1 - - -1 - - 28 - - 28 - - 28 + familie__kind: + - false + - false + - true + - true + - true + - true + p_id: - 28 - p_id_ehepartner: + - 29 + - 30 + - 31 + - 32 + - 33 + familie__p_id_ehepartner: - 29 - 28 - -1 - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 28 - 28 - 28 - 28 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 29 - 29 - 29 - 29 - p_id_einstandspartner: - - 29 - - 28 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - - true - bruttokaltmiete_m_hh: - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: - - 0.0 + vermögen: + - 2000000.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - alter: - - 43 - - 48 - - 14 - - 15 - - 6 - - 5 - immobilie_baujahr_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - mietstufe: - - 4 - - 4 - - 4 - - 4 - - 4 - - 4 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: - - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: + - 800.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: - - 800.0 + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: - 0.0 + jahr: + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 28 + - 28 + - 28 + - 28 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: - 0.0 + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 255.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 300.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 255.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - eink_st_y_sn: - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - vermögen_bedürft: - - 2000000.0 - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 6 - - 6 - - 6 - - 6 - - 6 - - 6 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1975 - - 1970 - - 2004 - - 2003 - - 2012 - - 2013 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - wohngeld_mindesteinkommen_erreicht_bg: + wohnen__baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 4 + - 4 + - 4 + - 4 + - 4 + - 4 + wohngeld__mindesteinkommen_erreicht_bg: - true - true - true - true - true - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml index 5c57d47b99..bdc1a55129 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml @@ -3,98 +3,100 @@ info: note: '' source: Regression test. inputs: + assumed: {} provided: - p_id: - - 27 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 52 + anzahl_personen_hh: + - 1 + behinderungsgrad: + - 0 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 5 - p_id_kindergeld_empf: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: + familie__kind: + - false + p_id: + - 27 + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: + familie__p_id_elternteil_1: - -1 - p_id_einstandspartner: + familie__p_id_elternteil_2: - -1 - eigenbedarf_gedeckt: - - false - gemeinsam_veranlagt: - - false - kind: - - false - bruttokaltmiete_m_hh: - - 1200.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 40.0 - soli_st_y_sn: + vermögen: + - 55000.0 + einkommensteuer__betrag_y_sn: - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - alter: - - 52 - immobilie_baujahr_hh: - - 1995 - kindergeld_anspruch: - - false - mietstufe: - - 5 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2019 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - kapitaleink_brutto_y: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - behinderungsgrad: - - 0 - jahr: - - 2019 - eink_st_y_sn: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - vermögen_bedürft: - - 55000.0 - anz_personen_hh: - - 1 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1967 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1995 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 1200.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + wohngeld__mietstufe: + - 5 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 59.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 59.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml index 87269dbdf3..55444dd043 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml @@ -3,100 +3,102 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen, Vermögen. source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: + assumed: {} provided: - p_id: - - 55 + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: + - false + alter: + - 57 + anzahl_personen_hh: + - 1 + behinderungsgrad: + - 0 + geburtsjahr: + - 1964 + geburtsmonat: + - 1 + geburtstag: + - 1 hh_id: - 10 - p_id_kindergeld_empf: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: + familie__kind: + - false + p_id: + - 55 + familie__p_id_ehepartner: - -1 - p_id_elternteil_2: + familie__p_id_elternteil_1: - -1 - p_id_einstandspartner: + familie__p_id_elternteil_2: - -1 - eigenbedarf_gedeckt: - - false - gemeinsam_veranlagt: - - false - kind: - - false - bruttokaltmiete_m_hh: - - 600.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 40.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: + vermögen: + - 31000.0 + einkommensteuer__betrag_y_sn: + - 300.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - bewohnt_eigentum_hh: - - false - alleinerz: - - false - alter: - - 57 - immobilie_baujahr_hh: - - 1980 - kindergeld_anspruch: - - false - mietstufe: - - 5 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 12600.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1050.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - arbeitsl_geld_m: - - 0.0 - sonstig_eink_m: + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - kind_unterh_erhalt_m: + elterngeld__betrag_m: - 0.0 - unterhaltsvors_m: + jahr: + - 2021 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - eink_selbst_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_abhängig_beschäftigt_y: - - 12600.0 - kapitaleink_brutto_y: + sozialversicherung__beiträge_versicherter_m: - 0.0 - eink_vermietung_m: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 100.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 - behinderungsgrad: - - 0 - jahr: - - 2021 - eink_st_y_sn: - - 300.0 - vermögen_bedürft: - - 31000.0 - anz_personen_hh: - - 1 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1964 - wohngeld_vorrang_bg: + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - assumed: {} + wohnen__baujahr_immobilie_hh: + - 1980 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + wohngeld__mietstufe: + - 5 outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 249.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 249.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml index 2c39047b0d..f3ec179880 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml @@ -3,106 +3,108 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: + assumed: {} provided: - p_id: - - 55 - hh_id: - - 11 - p_id_kindergeld_empf: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - gemeinsam_veranlagt: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - kind: - - false - bruttokaltmiete_m_hh: - - 600.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 40.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - bewohnt_eigentum_hh: - - false - bürgerg_bezug_vorj: - - false - alleinerz: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: - false alter: - 57 - immobilie_baujahr_hh: - - 1982 - kindergeld_anspruch: + anzahl_personen_hh: + - 1 + behinderungsgrad: + - 0 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 11 + familie__kind: - false - mietstufe: - - 5 - bruttolohn_m: - - 1050.0 - sum_ges_rente_priv_rente_m: + p_id: + - 55 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 5000.0 + einkommensteuer__betrag_y_sn: + - 300.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 12600.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1050.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - arbeitsl_geld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - sonstig_eink_m: + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - kind_unterh_erhalt_m: + elterngeld__betrag_m: - 0.0 - unterhaltsvors_m: + jahr: + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - eink_selbst_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_abhängig_beschäftigt_y: - - 12600.0 - kapitaleink_brutto_y: + sozialversicherung__beiträge_versicherter_m: - 0.0 - eink_vermietung_m: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 100.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 - behinderungsgrad: - - 0 - jahr: - - 2023 - eink_st_y_sn: - - 300.0 - vermögen_bedürft: - - 5000.0 - anz_personen_hh: - - 1 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1966 - wohngeld_vorrang_bg: + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1982 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + wohngeld__mietstufe: + - 5 + wohngeld__mindesteinkommen_erreicht_bg: - true - wohngeld_mindesteinkommen_erreicht_bg: + wohngeld__mindesteinkommen_erreicht_wthh: - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 425.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 425.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml index 1ba4dd8bd9..eae34cb952 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml @@ -3,110 +3,112 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen + Vermögen. source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: + assumed: {} provided: - p_id: - - 56 - hh_id: - - 12 - p_id_kindergeld_empf: - - -1 - p_id_ehepartner: - - -1 - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - p_id_einstandspartner: - - -1 - eigenbedarf_gedeckt: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - gemeinsam_veranlagt: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - kind: - - false - bruttokaltmiete_m_hh: - - 600.0 - heizkosten_m_hh: - - 50.0 - wohnfläche_hh: - - 40.0 - soli_st_y_sn: - - 0.0 - sozialv_beitr_arbeitnehmer_m: - - 0.0 - bewohnt_eigentum_hh: - - false - bürgerg_bezug_vorj: - - false - alleinerz: + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + familie__alleinerziehend: - false alter: - 57 - immobilie_baujahr_hh: - - 1982 - kindergeld_anspruch: + anzahl_personen_hh: + - 1 + behinderungsgrad: + - 0 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 12 + familie__kind: - false - mietstufe: - - 5 - bruttolohn_m: - - 1050.0 - sum_ges_rente_priv_rente_m: + p_id: + - 56 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + vermögen: + - 61000.0 + einkommensteuer__betrag_y_sn: + - 300.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 12600.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1050.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - arbeitsl_geld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - sonstig_eink_m: + einkommensteuer__gemeinsam_veranlagt: + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - kind_unterh_erhalt_m: + elterngeld__betrag_m: - 0.0 - unterhaltsvors_m: + jahr: + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + kindergeld__p_id_empfänger: + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - eink_selbst_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - eink_abhängig_beschäftigt_y: - - 12600.0 - kapitaleink_brutto_y: + sozialversicherung__beiträge_versicherter_m: - 0.0 - eink_vermietung_m: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 80.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 100.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 80.0 - behinderungsgrad: - - 0 - jahr: - - 2023 - eink_st_y_sn: - - 300.0 - vermögen_bedürft: - - 61000.0 - anz_personen_hh: - - 1 - geburtstag: - - 1 - geburtsmonat: - - 1 - geburtsjahr: - - 1966 - wohngeld_vorrang_bg: + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1982 + wohnen__bewohnt_eigentum_hh: + - false + wohnen__bruttokaltmiete_m_hh: + - 600.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 40.0 + wohngeld__mietstufe: + - 5 + wohngeld__mindesteinkommen_erreicht_bg: - true - wohngeld_mindesteinkommen_erreicht_bg: + wohngeld__mindesteinkommen_erreicht_wthh: - true - wohngeld_vermögensgrenze_unterschritten_wthh: + wohngeld__vermögensgrenze_unterschritten_bg: - true - wohngeld_vermögensgrenze_unterschritten_bg: + wohngeld__vermögensgrenze_unterschritten_wthh: - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 425.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 425.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml index 818b99a812..c52e45d4f1 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml @@ -3,206 +3,210 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=3&housingbenefitRecipients=3&income=1365&rent=700&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=425%2C00 inputs: + assumed: {} provided: - p_id: - - 57 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 58 - - 59 + - 57 + - -1 + familie__alleinerziehend: + - false + - false + - false + alter: + - 39 + - 35 + - 10 + anzahl_personen_hh: + - 3 + - 3 + - 3 + behinderungsgrad: + - 0 + - 0 + - 0 + geburtsjahr: + - 1984 + - 1988 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 hh_id: - 13 - 13 - 13 - p_id_kindergeld_empf: - - -1 - - -1 + familie__kind: + - false + - false + - true + p_id: - 57 - p_id_ehepartner: + - 58 + - 59 + familie__p_id_ehepartner: - 58 - 57 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 57 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 58 - p_id_einstandspartner: - - 58 - - 57 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - bürgerg_bezug_vorj: - - false - - false - - false - kind: - - false - - false - - true - bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - soli_st_y_sn: + vermögen: + - 45000.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: + - 585.0 + - 585.0 + - 585.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 10800.0 + - 12600.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - alleinerz: - - false - - false - - false - alter: - - 39 - - 35 - - 10 - immobilie_baujahr_hh: - - 1970 - - 1970 - - 1970 - kindergeld_anspruch: - - false - - false - - true - mietstufe: - - 3 - - 3 - - 3 - bruttolohn_m: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 900.0 - 1050.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2023 + - 2023 + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 57 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 10800.0 - - 12600.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 68.57 + - 80.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 85.71 + - 100.0 - 0.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 85.71 - - 100.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 68.57 - - 80.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - jahr: - - 2023 - - 2023 - - 2023 - eink_st_y_sn: - - 585.0 - - 585.0 - - 585.0 - vermögen_bedürft: - - 45000.0 - 0.0 - 0.0 - anz_personen_hh: - - 3 - - 3 - - 3 - geburtstag: - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - geburtsjahr: - - 1984 - - 1988 - - 2013 - wohngeld_vorrang_bg: + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1970 + - 1970 + - 1970 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + wohngeld__mindesteinkommen_erreicht_bg: - true - true - true - wohngeld_mindesteinkommen_erreicht_bg: + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 469.0 - 469.0 - 469.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 469.0 - 469.0 - 469.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml index f78abf9aa1..2f497220cd 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml @@ -3,14 +3,78 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: + assumed: {} provided: - p_id: - - 60 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 61 - - 62 - - 63 - - 64 - - 65 + - 60 + - -1 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + alter: + - 45 + - 40 + - 15 + - 10 + - 8 + - 3 + anzahl_personen_hh: + - 6 + - 6 + - 6 + - 6 + - 6 + - 6 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1978 + - 1983 + - 2008 + - 2013 + - 2015 + - 2020 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 14 - 14 @@ -18,331 +82,274 @@ inputs: - 14 - 14 - 14 - p_id_kindergeld_empf: - - -1 - - -1 - - 60 - - 60 - - 60 + familie__kind: + - false + - false + - true + - true + - true + - true + p_id: - 60 - p_id_ehepartner: + - 61 + - 62 + - 63 + - 64 + - 65 + familie__p_id_ehepartner: - 61 - 60 - -1 - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 60 - 60 - 60 - 60 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 61 - 61 - 61 - 61 - p_id_einstandspartner: - - 61 - - 60 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - kind: - - false - - false - - true - - true - - true - - true - bruttokaltmiete_m_hh: - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: + - 85000.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 15600.0 + - 14400.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - alter: - - 45 - - 40 - - 15 - - 10 - - 8 - - 3 - immobilie_baujahr_hh: - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - kindergeld_anspruch: - - false - - false - - true - - true - - true - - true - mietstufe: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1300.0 - 1200.0 - 0.0 - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2023 + - 2023 + - 2023 + - 2023 + - 2023 + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 60 + - 60 + - 60 + - 60 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 15600.0 - - 14400.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 99.0 + - 91.4 - 0.0 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 123.8 + - 114.3 - 0.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 123.8 - - 114.3 - 0.0 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 99.0 - - 91.4 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 - eink_st_y_sn: - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - vermögen_bedürft: - - 85000.0 - 0.0 - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 6 - - 6 - - 6 - - 6 - - 6 - - 6 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1978 - - 1983 - - 2008 - - 2013 - - 2015 - - 2020 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true - true - true - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 777.0 - 777.0 - 777.0 - 777.0 - 777.0 - 777.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 777.0 - 777.0 - 777.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml index b62c7e180f..73460d6507 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml @@ -3,250 +3,255 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=4&housingbenefitRecipients=4&income=1115%2C5&rent=730&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=746%2C00 inputs: + assumed: {} provided: - p_id: - - 74 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 75 - - 76 - - 77 + - 74 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 39 + - 35 + - 10 + - 12 + anzahl_personen_hh: + - 4 + - 4 + - 4 + - 4 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1984 + - 1988 + - 2013 + - 2011 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 hh_id: - 16 - 16 - 16 - 16 - p_id_kindergeld_empf: - - -1 - - -1 - - 74 + familie__kind: + - false + - false + - true + - true + p_id: - 74 - p_id_ehepartner: + - 75 + - 76 + - 77 + familie__p_id_ehepartner: - 75 - 74 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 74 - 74 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 75 - 75 - p_id_einstandspartner: - - 75 - - 74 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - kind: - - false - - false - - true - - true - bruttokaltmiete_m_hh: - - 730.0 - - 730.0 - - 730.0 - - 730.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - alter: - - 39 - - 35 - - 10 - - 12 - immobilie_baujahr_hh: - - 1970 - - 1970 - - 1970 - - 1970 - kindergeld_anspruch: - - false - - false - - true - - true - mietstufe: - - 3 - - 3 - - 3 - - 3 - bruttolohn_m: - - 1000.0 - - 5000.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 10770.0 + - 4770.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 5000.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - elterngeld_m: - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - arbeitsl_geld_m: - 0.0 - 0.0 + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - sonstig_eink_m: - 0.0 - 0.0 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - kind_unterh_erhalt_m: - 0.0 - 0.0 + elterngeld__betrag_m: - 0.0 - 0.0 - unterhaltsvors_m: - 0.0 - 0.0 + jahr: + - 2023 + - 2023 + - 2023 + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 74 + - 74 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - eink_selbst_m: - 0.0 - 0.0 + sozialversicherung__arbeitslosen__betrag_m: + - 0.0 - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 10770.0 - - 4770.0 - 0.0 + sozialversicherung__beiträge_versicherter_m: - 0.0 - kapitaleink_brutto_y: - 0.0 - 0.0 - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 52.54 + - 0.0 + - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: - 60.32 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 52.54 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 - eink_st_y_sn: - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - vermögen_bedürft: - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 - anz_personen_hh: - - 4 - - 4 - - 4 - - 4 - geburtstag: - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1984 - - 1988 - - 2013 - - 2011 - wohngeld_vorrang_bg: + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1970 + - 1970 + - 1970 + - 1970 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 730.0 + - 730.0 + - 730.0 + - 730.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 3 + - 3 + - 3 + - 3 + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 758.0 - 758.0 - 758.0 - 758.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 758.0 - 758.0 - 758.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml index 7d5dcc3094..33c95dfd44 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml @@ -3,298 +3,304 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=5&housingbenefitRecipients=5&income=1750&rent=1300&rentLevelZIPCode=72393&rentLevelTown.GROUP=1&rentLevel=1&rentLevel.GROUP=1&update=Berechnen&result=746%2C00 inputs: + assumed: {} provided: - p_id: - - 78 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 79 - - 80 - - 81 - - 82 + - 78 + - -1 + - -1 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + alter: + - 45 + - 40 + - 15 + - 10 + - 8 + anzahl_personen_hh: + - 5 + - 5 + - 5 + - 5 + - 5 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1978 + - 1983 + - 2008 + - 2013 + - 2015 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 17 - 17 - 17 - 17 - 17 - p_id_kindergeld_empf: - - -1 - - -1 - - 78 - - 78 + familie__kind: + - false + - false + - true + - true + - true + p_id: - 78 - p_id_ehepartner: + - 79 + - 80 + - 81 + - 82 + familie__p_id_ehepartner: - 79 - 78 - -1 - -1 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - 78 - 78 - 78 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - 79 - 79 - 79 - p_id_einstandspartner: - - 79 - - 78 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - true - - true - - false - - false - - false - kind: - - false - - false - - true - - true - - true - bruttokaltmiete_m_hh: - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: + - 85000.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__betrag_y_sn: + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - sozialv_beitr_arbeitnehmer_m: - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 15600.0 + - 14400.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - alter: - - 45 - - 40 - - 15 - - 10 - - 8 - immobilie_baujahr_hh: - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - kindergeld_anspruch: - - false - - false - - true - - true - - true - mietstufe: - - 1 - - 1 - - 1 - - 1 - - 1 - bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1300.0 - 1200.0 - 0.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + jahr: + - 2023 + - 2023 + - 2023 + - 2023 + - 2023 + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + kindergeld__p_id_empfänger: + - -1 + - -1 + - 78 + - 78 + - 78 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_abhängig_beschäftigt_y: - - 15600.0 - - 14400.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 99.0 + - 91.4 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 123.8 + - 114.3 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 123.8 - - 114.3 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 99.0 - - 91.4 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 - eink_st_y_sn: - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - vermögen_bedürft: - - 85000.0 - 0.0 - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - anz_personen_hh: - - 5 - - 5 - - 5 - - 5 - - 5 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1978 - - 1983 - - 2008 - - 2013 - - 2015 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - true - true - wohngeld_mindesteinkommen_erreicht_wthh: + wohnen__baujahr_immobilie_hh: + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 1 + - 1 + - 1 + - 1 + - 1 + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true - true - true - assumed: {} outputs: - wohngeld_anspruchshöhe_m_bg: + wohngeld__anspruchshöhe_m_bg: - 631.0 - 631.0 - 631.0 - 631.0 - 631.0 - wohngeld_anspruchshöhe_m_wthh: + wohngeld__anspruchshöhe_m_wthh: - 631.0 - 631.0 - 631.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml index 554ce347c3..644a017d26 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml @@ -5,14 +5,71 @@ info: Mindesteinkommen. source: Made up. inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - - 4 + - 2 - 5 + - 4 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + alter: + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 0 - 0 @@ -20,320 +77,270 @@ inputs: - 1 - 2 - 2 - p_id_kindergeld_empf: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_ehepartner: + familie__kind: + - false + - false + - false + - false + - false + - false + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + familie__p_id_ehepartner: - 1 - 0 - 3 - 2 - 5 - 4 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 - -1 - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - -1 - -1 - -1 - p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - 5 - - 4 - gemeinsam_veranlagt: - - true - - true - - true - - true - - true - - true - kind: - - false - - false - - false - - false - - false - - false - bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - - 500.0 - - 500.0 - - 500.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: - 200.0 - 200.0 - - 100.0 - - 100.0 + - 50.0 + - 50.0 - 0.0 - 0.0 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 - immobilie_baujahr_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 - bruttolohn_m: + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1200.0 - 1200.0 - 750.0 - 750.0 - 600.0 - 600.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + - true + - true + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: + - 200.0 + - 200.0 + - 100.0 + - 100.0 - 0.0 - 0.0 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 100.0 + - 100.0 + - 50.0 + - 50.0 - 0.0 - 0.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - kapitaleink_brutto_y: - 0.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 100.0 + - 100.0 + - 50.0 + - 50.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - vermögen_bedürft: + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - eink_st_y_sn: - - 200.0 - - 200.0 - - 50.0 - - 50.0 + unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 100.0 - - 100.0 - - 50.0 - - 50.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 100.0 - - 100.0 - - 50.0 - - 50.0 - 0.0 - 0.0 - rentner: + wohnen__baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + wohnen__bewohnt_eigentum_hh: - false - false - false - false - false - false - assumed: {} + wohnen__bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + - 500.0 + - 500.0 + - 500.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 outputs: - wthh_id: - - 1 - - 1 - - 100 - - 100 - - 200 - - 200 - arbeitsl_geld_2_regelbedarf_m_bg: + arbeitslosengeld_2__regelbedarf_m_bg: - 1452.0 - 1452.0 - 1452.0 - 1452.0 - 1452.0 - 1452.0 - arbeitsl_geld_2_regelbedarf_m_wthh: + arbeitslosengeld_2__regelbedarf_m_wthh: - 1452.0 - 1452.0 - 1452.0 - 1452.0 - 1452.0 - 1452.0 - wohngeld_einkommen_für_mindesteinkommen_check_m_wthh: + wohngeld__einkommen_für_mindesteinkommen_m_wthh: - 1983.33 - 1983.33 - 1295.83 - 1295.83 - 1200.0 - 1200.0 - wohngeld_mindesteinkommen_erreicht_wthh: + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - false - false - false - false + wohngeld__wthh_id: + - 1 + - 1 + - 100 + - 100 + - 200 + - 200 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml index e4ffdaa5ce..f8e9e8c3c3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -3,306 +3,312 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 + - 0 - 3 - - 4 + - 2 + - -1 + familie__alleinerziehend: + - false + - false + - false + - false + - false + alter: + - 40 + - 40 + - 40 + - 40 + - 40 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 hh_id: - 0 - 0 - 0 - 0 - 0 - p_id_kindergeld_empf: - - -1 - - -1 - - -1 - - -1 - - -1 - p_id_ehepartner: + familie__kind: + - false + - false + - false + - false + - false + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + familie__p_id_ehepartner: - 1 - 0 - 3 - 2 - -1 - p_id_elternteil_1: + familie__p_id_elternteil_1: - -1 - -1 - -1 - -1 - -1 - p_id_elternteil_2: + familie__p_id_elternteil_2: - -1 - -1 - -1 - -1 - -1 - p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - -1 - eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - gemeinsam_veranlagt: - - false - - false - - false - - false - - false - kind: - - false - - false - - false - - false - - false - bruttokaltmiete_m_hh: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: + - 20.0 + - 20.0 + - 20.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 - immobilie_baujahr_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - kindergeld_anspruch: - - false - - false - - false - - false - - false - mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 - bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 12000.0 + - 12000.0 + - 9600.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 - 1000.0 - 800.0 - 0.0 - 0.0 - sum_ges_rente_priv_rente_m: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 - 0.0 - 0.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - eink_vermietung_m: - 0.0 - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 - 0.0 - 0.0 + sozialversicherung__rente__bezieht_rente: + - false + - false + - false + - false + - false + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - vermögen_bedürft: - 0.0 - 0.0 - 0.0 - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - wohngeld_vorrang_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - false - false - wohngeld_kinderzuschl_vorrang_bg: + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - true - true - true - false - false - eink_st_y_sn: - - 20.0 - - 20.0 - - 20.0 - - 0.0 - - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - rentner: + wohnen__baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + wohnen__bewohnt_eigentum_hh: - false - false - false - false - false - eink_abhängig_beschäftigt_y: - - 12000.0 - - 12000.0 - - 9600.0 - - 0.0 - - 0.0 - assumed: {} + wohnen__bruttokaltmiete_m_hh: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 outputs: - wthh_id: - - 1 - - 1 - - 1 - - 0 - - 0 - bruttokaltmiete_m_wthh: + arbeitslosengeld_2__bruttokaltmiete_m_wthh: - 600.0 - 600.0 - 600.0 - 400.0 - 400.0 - anz_personen_wthh: + wohngeld__anzahl_personen_wthh: - 3 - 3 - 3 - 2 - 2 - wohngeld_m_wthh: + wohngeld__betrag_m_wthh: - 175.0 - 175.0 - 175.0 - 0.0 - 0.0 - wohngeld_mindesteinkommen_erreicht_wthh: + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true - false - false + wohngeld__wthh_id: + - 1 + - 1 + - 1 + - 0 + - 0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 05ce5b4605..7194032599 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -3,16 +3,49 @@ info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: + assumed: {} provided: - p_id: - - 0 + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__eigenbedarf_gedeckt: + - true + - true + - false + - true + - true + - true + - true + arbeitslosengeld_2__p_id_einstandspartner: - 1 - - 2 - - 3 + - 0 + - -1 - 4 - - 5 + - 3 - 6 - hh_id: + - 5 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + alter: + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 + behinderungsgrad: - 0 - 0 - 0 @@ -20,15 +53,55 @@ inputs: - 0 - 0 - 0 - p_id_ehepartner: + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: - 0 - - -1 - - 4 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + familie__kind: + - false + - false + - false + - false + - false + - false + - false + p_id: + - 0 + - 1 + - 2 - 3 - - 6 + - 4 - 5 - p_id_einstandspartner: + - 6 + familie__p_id_ehepartner: - 1 - 0 - -1 @@ -36,79 +109,23 @@ inputs: - 3 - 6 - 5 - p_id_kindergeld_empf: - - -1 - - -1 - - -1 + familie__p_id_elternteil_1: - -1 - -1 - -1 - -1 - p_id_elternteil_1: - -1 - -1 - -1 + familie__p_id_elternteil_2: - -1 - -1 - -1 - -1 - p_id_elternteil_2: - -1 - -1 - -1 - - -1 - - -1 - - -1 - - -1 - eigenbedarf_gedeckt: - - true - - true - - false - - true - - true - - true - - true - gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - - false - kind: - - false - - false - - false - - false - - false - - false - - false - bruttokaltmiete_m_hh: - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - soli_st_y_sn: + vermögen: - 0.0 - 0.0 - 0.0 @@ -116,87 +133,39 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialv_beitr_arbeitnehmer_m: + einkommensteuer__betrag_y_sn: + - 20.0 + - 20.0 + - 20.0 - 0.0 - 0.0 - 0.0 - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 - 0.0 - bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - bürgerg_bezug_vorj: - - false - - false - - false - - false - - false - - false - - false - alleinerz: - - false - - false - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 - immobilie_baujahr_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - kindergeld_anspruch: - - false - - false - - false - - false - - false - - false - - false - mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 - bruttolohn_m: - - 1000.0 - - 1000.0 - - 800.0 - 0.0 - 0.0 - - 600.0 - 0.0 - sum_ges_rente_priv_rente_m: - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: + - 12000.0 + - 12000.0 + - 9600.0 - 0.0 - 0.0 + - 7200.0 - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 1000.0 + - 800.0 - 0.0 - 0.0 + - 600.0 - 0.0 - rente_ertragsanteil: + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - 0.0 - 0.0 @@ -204,7 +173,7 @@ inputs: - 0.0 - 0.0 - 0.0 - elterngeld_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - 0.0 @@ -212,7 +181,7 @@ inputs: - 0.0 - 0.0 - 0.0 - arbeitsl_geld_m: + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 - 0.0 @@ -220,7 +189,15 @@ inputs: - 0.0 - 0.0 - 0.0 - sonstig_eink_m: + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + - false + einkommensteuer__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 @@ -228,7 +205,7 @@ inputs: - 0.0 - 0.0 - 0.0 - kind_unterh_erhalt_m: + elterngeld__betrag_m: - 0.0 - 0.0 - 0.0 @@ -236,7 +213,23 @@ inputs: - 0.0 - 0.0 - 0.0 - unterhaltsvors_m: + kindergeld__grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 - 0.0 @@ -244,7 +237,7 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_selbst_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 - 0.0 @@ -252,7 +245,7 @@ inputs: - 0.0 - 0.0 - 0.0 - kapitaleink_brutto_y: + sozialversicherung__beiträge_versicherter_m: - 0.0 - 0.0 - 0.0 @@ -260,113 +253,128 @@ inputs: - 0.0 - 0.0 - 0.0 - eink_vermietung_m: + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 - 0.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 - 0.0 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - vermögen_bedürft: - 0.0 - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 - 0.0 - 0.0 - 0.0 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - wohngeld_vorrang_bg: - - true - - true - - true - - false + - 0.0 + sozialversicherung__rente__bezieht_rente: - false - false - false - wohngeld_kinderzuschl_vorrang_bg: - - true - - true - - true - false - false - false - false - eink_st_y_sn: - - 20.0 - - 20.0 - - 20.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - ges_rentenv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - - 50.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - ges_krankenv_beitr_arbeitnehmer_m: - - 50.0 - - 50.0 - - 50.0 - 0.0 - 0.0 - 0.0 + unterhaltsvorschuss__betrag_m: - 0.0 - rentner: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true - false - false - false - false + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true - false - false - false - eink_abhängig_beschäftigt_y: - - 12000.0 - - 12000.0 - - 9600.0 - - 0.0 - - 0.0 - - 7200.0 - - 0.0 - assumed: {} + - false + wohnen__baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + wohnen__bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + wohnen__bruttokaltmiete_m_hh: + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + wohnen__heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnen__wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld__mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 outputs: - bg_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - 100 @@ -374,15 +382,7 @@ outputs: - 200 - 300 - 300 - wthh_id: - - 1 - - 1 - - 1 - - 0 - - 0 - - 0 - - 0 - bruttokaltmiete_m_wthh: + arbeitslosengeld_2__bruttokaltmiete_m_wthh: - 514.29 - 514.29 - 514.29 @@ -390,7 +390,7 @@ outputs: - 685.71 - 685.71 - 685.71 - anz_personen_wthh: + wohngeld__anzahl_personen_wthh: - 3 - 3 - 3 @@ -398,7 +398,7 @@ outputs: - 4 - 4 - 4 - wohngeld_m_wthh: + wohngeld__betrag_m_wthh: - 128.0 - 128.0 - 128.0 @@ -406,7 +406,7 @@ outputs: - 0.0 - 0.0 - 0.0 - wohngeld_mindesteinkommen_erreicht_wthh: + wohngeld__mindesteinkommen_erreicht_wthh: - true - true - true @@ -414,3 +414,11 @@ outputs: - false - false - false + wohngeld__wthh_id: + - 1 + - 1 + - 1 + - 0 + - 0 + - 0 + - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_1.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_1.yaml deleted file mode 100644 index fde8b941e7..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_1.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 1 - hh_id: - - 1 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 300.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2035 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2010 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1970 - vorsorgeaufw_y_sn: - - 0.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 0.0 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_2.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_2.yaml deleted file mode 100644 index 42d338211f..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_2.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 2 - hh_id: - - 2 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 600.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2035 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2010 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1970 - vorsorgeaufw_y_sn: - - 1916.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 4328.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 4328.0 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 6280 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_3.yaml deleted file mode 100644 index 6b19cd66a6..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_3.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 3 - hh_id: - - 3 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 900.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2035 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2010 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1970 - vorsorgeaufw_y_sn: - - 1927.8 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 7916.2 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 7916.2 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 9880 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_4.yaml deleted file mode 100644 index 078ab70540..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_4.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 4 - hh_id: - - 4 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 1200.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2035 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2010 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1970 - vorsorgeaufw_y_sn: - - 2334.2 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 11109.8 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 11109.8 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 13480 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_5.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_5.yaml deleted file mode 100644 index a3a3989e2e..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2010/hh_id_5.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 5 - hh_id: - - 5 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 1500.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2035 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2010 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1970 - vorsorgeaufw_y_sn: - - 2554.02 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 14489.98 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 14489.98 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 17080 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_16.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_16.yaml deleted file mode 100644 index c748ff7889..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_16.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html -inputs: - provided: - p_id: - - 22 - hh_id: - - 16 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 3000.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 0.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2040 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2015 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1975 - vorsorgeaufw_y_sn: - - 5000.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 29964.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 29964.0 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 35000 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_17.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_17.yaml deleted file mode 100644 index 602dfb9b1e..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2015/hh_id_17.yaml +++ /dev/null @@ -1,116 +0,0 @@ ---- -info: - note: '' - source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html -inputs: - provided: - p_id: - - 23 - - 24 - hh_id: - - 17 - - 17 - p_id_ehepartner: - - 24 - - 23 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_m: - - 3000.0 - - 2000.0 - betreuungskost_m: - - 0.0 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - eink_selbst_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - jahr_renteneintr: - - 2040 - - 2040 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - arbeitsstunden_w: - - 40.0 - - 30.0 - in_ausbildung: - - false - - false - kind: - - false - - false - behinderungsgrad: - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - alleinerz: - - false - - false - alter: - - 40 - - 40 - jahr: - - 2015 - - 2015 - wohnort_ost: - - false - - false - selbstständig: - - false - - false - ges_pflegev_hat_kinder: - - false - - false - in_priv_krankenv: - - false - - false - geburtsjahr: - - 1975 - - 1975 - vorsorgeaufw_y_sn: - - 7700.0 - - 7700.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 50228.0 - - 50228.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 50228.0 - - 50228.0 - eink_st_kinderfreib_y_sn: - - 0 - - 0 - eink_st_altersfreib_y: - - 0 - - 0 - alleinerz_freib_y_sn: - - 0 - - 0 - sum_eink_y: - - 35000 - - 23000 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2017/hh_id_18.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2017/hh_id_18.yaml deleted file mode 100644 index 963a0a38f4..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2017/hh_id_18.yaml +++ /dev/null @@ -1,116 +0,0 @@ ---- -info: - note: '' - source: https://www.n-heydorn.de/steuer.html -inputs: - provided: - p_id: - - 25 - - 26 - hh_id: - - 18 - - 18 - p_id_ehepartner: - - 26 - - 25 - p_id_kindergeld_empf: - - -1 - - -1 - gemeinsam_veranlagt: - - true - - true - p_id_elternteil_1: - - -1 - - -1 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_m: - - 3000.0 - - 2500.0 - betreuungskost_m: - - 0.0 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - eink_selbst_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - jahr_renteneintr: - - 2045 - - 2047 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - arbeitsstunden_w: - - 38.0 - - 30.0 - in_ausbildung: - - false - - false - kind: - - false - - false - behinderungsgrad: - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - alleinerz: - - false - - false - alter: - - 37 - - 35 - jahr: - - 2017 - - 2017 - wohnort_ost: - - false - - false - selbstständig: - - false - - false - ges_pflegev_hat_kinder: - - true - - true - in_priv_krankenv: - - false - - false - geburtsjahr: - - 1980 - - 1982 - vorsorgeaufw_y_sn: - - 10359.0 - - 10359.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 53569.0 - - 53569.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 53569.0 - - 53569.0 - eink_st_kinderfreib_y_sn: - - 0 - - 0 - eink_st_altersfreib_y: - - 0 - - 0 - alleinerz_freib_y_sn: - - 0 - - 0 - sum_eink_y: - - 35000 - - 29000 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_10.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_10.yaml deleted file mode 100644 index 82aad98ea1..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_10.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 10 - hh_id: - - 10 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 1200.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 2547.22 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 10816.78 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 10816.78 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 13400 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_11.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_11.yaml deleted file mode 100644 index f5cd50fa27..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_11.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 11 - hh_id: - - 11 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 1500.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 3105.28 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 13858.72 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 13858.72 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 17000 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_12.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_12.yaml deleted file mode 100644 index 22456d09af..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_12.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 12 - hh_id: - - 12 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 5000.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 5917.6 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 53046.4 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 53046.4 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 59000 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_7.yaml deleted file mode 100644 index c237f34d50..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_7.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 7 - hh_id: - - 7 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 300.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 0.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 0.0 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_8.yaml deleted file mode 100644 index 51a13bec1f..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_8.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 8 - hh_id: - - 8 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 600.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 990.74 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 5173.26 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 5173.26 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 6200 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_9.yaml deleted file mode 100644 index b8f978ba81..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2018/hh_id_9.yaml +++ /dev/null @@ -1,80 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 9 - hh_id: - - 9 - p_id_ehepartner: - - -1 - p_id_kindergeld_empf: - - -1 - gemeinsam_veranlagt: - - false - p_id_elternteil_1: - - -1 - p_id_elternteil_2: - - -1 - bruttolohn_m: - - 900.0 - betreuungskost_m: - - 0.0 - p_id_betreuungsk_träger: - - -1 - eink_selbst_m: - - 0.0 - kapitaleink_brutto_m: - - 100.0 - eink_vermietung_m: - - 0.0 - jahr_renteneintr: - - 2043 - sum_ges_rente_priv_rente_m: - - 0.0 - arbeitsstunden_w: - - 40.0 - in_ausbildung: - - false - kind: - - false - behinderungsgrad: - - 0 - priv_rentenv_beitr_m: - - 0.0 - alleinerz: - - false - alter: - - 40 - jahr: - - 2018 - wohnort_ost: - - false - selbstständig: - - false - ges_pflegev_hat_kinder: - - false - in_priv_krankenv: - - false - geburtsjahr: - - 1978 - vorsorgeaufw_y_sn: - - 1910.41 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 7853.59 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 7853.59 - eink_st_kinderfreib_y_sn: - - 0 - eink_st_altersfreib_y: - - 0 - alleinerz_freib_y_sn: - - 0 - sum_eink_y: - - 9800 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2019/hh_id_13.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2019/hh_id_13.yaml deleted file mode 100644 index b2fad300ef..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2019/hh_id_13.yaml +++ /dev/null @@ -1,116 +0,0 @@ ---- -info: - note: '' - source: '' -inputs: - provided: - p_id: - - 13 - - 14 - hh_id: - - 13 - - 13 - p_id_ehepartner: - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - 13 - gemeinsam_veranlagt: - - false - - false - p_id_elternteil_1: - - -1 - - 13 - p_id_elternteil_2: - - -1 - - -1 - bruttolohn_m: - - 1500.0 - - 0.0 - betreuungskost_m: - - 0.0 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - eink_selbst_m: - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - jahr_renteneintr: - - 2050 - - 2070 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - arbeitsstunden_w: - - 20.0 - - 0.0 - in_ausbildung: - - false - - false - kind: - - false - - true - behinderungsgrad: - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - alleinerz: - - true - - false - alter: - - 35 - - 5 - jahr: - - 2019 - - 2019 - wohnort_ost: - - false - - false - selbstständig: - - false - - false - ges_pflegev_hat_kinder: - - true - - true - in_priv_krankenv: - - false - - false - geburtsjahr: - - 1984 - - 2014 - vorsorgeaufw_y_sn: - - 3119.94 - - 3119.94 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 11936.06 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 8126.06 - - 0.0 - eink_st_kinderfreib_y_sn: - - 3810 - - 0.0 - eink_st_altersfreib_y: - - 0 - - 0 - alleinerz_freib_y_sn: - - 1908 - - 0 - sum_eink_y: - - 17000 - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_14.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_14.yaml deleted file mode 100644 index fae42f9283..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_14.yaml +++ /dev/null @@ -1,188 +0,0 @@ ---- -info: - note: '' - source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 -inputs: - provided: - p_id: - - 15 - - 16 - - 17 - - 18 - hh_id: - - 14 - - 14 - - 14 - - 14 - p_id_ehepartner: - - 16 - - 15 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 15 - - 15 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: - - -1 - - -1 - - 15 - - 15 - p_id_elternteil_2: - - -1 - - -1 - - 16 - - 16 - bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - betreuungskost_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - - -1 - - -1 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr_renteneintr: - - 2037 - - 2038 - - 2074 - - 2072 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsstunden_w: - - 40.0 - - 25.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - kind: - - false - - false - - true - - true - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - alleinerz: - - false - - false - - false - - false - alter: - - 45 - - 44 - - 13 - - 15 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 - wohnort_ost: - - false - - false - - false - - false - selbstständig: - - false - - false - - false - - false - ges_pflegev_hat_kinder: - - true - - true - - false - - false - in_priv_krankenv: - - false - - false - - false - - false - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - vorsorgeaufw_y_sn: - - 10901.0 - - 10901.0 - - 10901.0 - - 10901.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 53027.0 - - 53027.0 - - 0.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 37403.0 - - 37403.0 - - 0.0 - - 0.0 - eink_st_kinderfreib_y_sn: - - 15624 - - 15624 - - 0 - - 0 - eink_st_altersfreib_y: - - 0 - - 0 - - 0 - - 0 - alleinerz_freib_y_sn: - - 0 - - 0 - - 0 - - 0 - sum_eink_y: - - 41000 - - 23000 - - 0 - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_19.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_19.yaml deleted file mode 100644 index f5481c53ee..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_19.yaml +++ /dev/null @@ -1,188 +0,0 @@ ---- -info: - note: Result from source including Betreuungskosten - source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 -inputs: - provided: - p_id: - - 27 - - 28 - - 29 - - 30 - hh_id: - - 19 - - 19 - - 19 - - 19 - p_id_ehepartner: - - 28 - - 27 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 27 - - 27 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: - - -1 - - -1 - - 27 - - 27 - p_id_elternteil_2: - - -1 - - -1 - - 28 - - 28 - bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - betreuungskost_m: - - 0.0 - - 0.0 - - 80.0 - - 45.0 - p_id_betreuungsk_träger: - - -1 - - -1 - - 27 - - 27 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr_renteneintr: - - 2037 - - 2038 - - 2074 - - 2072 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsstunden_w: - - 40.0 - - 25.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - kind: - - false - - false - - true - - true - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - alleinerz: - - false - - false - - false - - false - alter: - - 45 - - 44 - - 13 - - 11 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 - wohnort_ost: - - false - - false - - false - - false - selbstständig: - - false - - false - - false - - false - ges_pflegev_hat_kinder: - - true - - true - - false - - false - in_priv_krankenv: - - false - - false - - false - - false - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - vorsorgeaufw_y_sn: - - 10901.0 - - 10901.0 - - 10901.0 - - 10901.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 52099.0 - - 52099.0 - - 0.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 36475.0 - - 36475.0 - - 0.0 - - 0.0 - eink_st_kinderfreib_y_sn: - - 15624 - - 15624 - - 0 - - 0 - eink_st_altersfreib_y: - - 0 - - 0 - - 0 - - 0 - alleinerz_freib_y_sn: - - 0 - - 0 - - 0 - - 0 - sum_eink_y: - - 41000 - - 23000 - - 0 - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_20.yaml b/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_20.yaml deleted file mode 100644 index fb0e2b4caf..0000000000 --- a/src/_gettsim_tests/test_data/zu_verst_eink/2020/hh_id_20.yaml +++ /dev/null @@ -1,188 +0,0 @@ ---- -info: - note: Result from source including Betreuungskosten - source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 -inputs: - provided: - p_id: - - 31 - - 32 - - 33 - - 34 - hh_id: - - 20 - - 20 - - 20 - - 20 - p_id_ehepartner: - - 32 - - 31 - - -1 - - -1 - p_id_kindergeld_empf: - - -1 - - -1 - - 31 - - 31 - gemeinsam_veranlagt: - - true - - true - - false - - false - p_id_elternteil_1: - - -1 - - -1 - - 31 - - 31 - p_id_elternteil_2: - - -1 - - -1 - - 32 - - 32 - bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - betreuungskost_m: - - 0.0 - - 0.0 - - 62.5 - - 0.0 - p_id_betreuungsk_träger: - - -1 - - -1 - - 31 - - -1 - eink_selbst_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kapitaleink_brutto_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - eink_vermietung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - jahr_renteneintr: - - 2037 - - 2038 - - 2074 - - 2072 - sum_ges_rente_priv_rente_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitsstunden_w: - - 40.0 - - 25.0 - - 0.0 - - 0.0 - in_ausbildung: - - false - - false - - false - - false - kind: - - false - - false - - true - - true - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - priv_rentenv_beitr_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - alleinerz: - - false - - false - - false - - false - alter: - - 45 - - 44 - - 13 - - 15 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 - wohnort_ost: - - false - - false - - false - - false - selbstständig: - - false - - false - - false - - false - ges_pflegev_hat_kinder: - - true - - true - - false - - false - in_priv_krankenv: - - false - - false - - false - - false - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - vorsorgeaufw_y_sn: - - 10901.0 - - 10901.0 - - 0.0 - - 0.0 - assumed: {} -outputs: - _zu_verst_eink_ohne_kinderfreib_y_sn: - - 52599.0 - - 52599.0 - - 0.0 - - 0.0 - _zu_verst_eink_mit_kinderfreib_y_sn: - - 36975.0 - - 36975.0 - - 0.0 - - 0.0 - eink_st_kinderfreib_y_sn: - - 15624 - - 15624 - - 0 - - 0 - eink_st_altersfreib_y: - - 0 - - 0 - - 0 - - 0 - alleinerz_freib_y_sn: - - 0 - - 0 - - 0 - - 0 - sum_eink_y: - - 41000 - - 23000 - - 0 - - 0 - _eink_st_behinderungsgrad_pauschbetrag_y: - - 0 - - 0 - - 0 - - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml new file mode 100644 index 0000000000..18f3d69fce --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1970 + hh_id: + - 1 + familie__kind: + - false + p_id: + - 1 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 0.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2035 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 0 + einkommensteuer__gesamteinkommen_y: + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml new file mode 100644 index 0000000000..62c2947624 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1970 + hh_id: + - 2 + familie__kind: + - false + p_id: + - 2 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 1916.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2035 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 6280 + einkommensteuer__gesamteinkommen_y: + - 4328.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 4328.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml new file mode 100644 index 0000000000..a55ba01506 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1970 + hh_id: + - 3 + familie__kind: + - false + p_id: + - 3 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 1927.8 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2035 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 9880 + einkommensteuer__gesamteinkommen_y: + - 7916.2 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 7916.2 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml new file mode 100644 index 0000000000..60ffb994c0 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1970 + hh_id: + - 4 + familie__kind: + - false + p_id: + - 4 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2334.2 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2035 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 13480 + einkommensteuer__gesamteinkommen_y: + - 11109.8 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 11109.8 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml new file mode 100644 index 0000000000..a99292bd42 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1970 + hh_id: + - 5 + familie__kind: + - false + p_id: + - 5 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2554.02 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2010 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2035 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 17080 + einkommensteuer__gesamteinkommen_y: + - 14489.98 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 14489.98 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml new file mode 100644 index 0000000000..78f7fc39ef --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1975 + hh_id: + - 16 + familie__kind: + - false + p_id: + - 22 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 5000.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2015 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2040 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 35000 + einkommensteuer__gesamteinkommen_y: + - 29964.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 29964.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml new file mode 100644 index 0000000000..98c095ec16 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml @@ -0,0 +1,119 @@ +--- +info: + note: '' + source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + - false + alter: + - 40 + - 40 + arbeitsstunden_w: + - 40.0 + - 30.0 + behinderungsgrad: + - 0 + - 0 + geburtsjahr: + - 1975 + - 1975 + hh_id: + - 17 + - 17 + familie__kind: + - false + - false + p_id: + - 23 + - 24 + familie__p_id_ehepartner: + - 24 + - 23 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 7700.0 + - 7700.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + - 2000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2015 + - 2015 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2040 + - 2040 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 35000 + - 23000 + einkommensteuer__gesamteinkommen_y: + - 50228.0 + - 50228.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 50228.0 + - 50228.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml new file mode 100644 index 0000000000..f2c38aecee --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml @@ -0,0 +1,119 @@ +--- +info: + note: '' + source: https://www.n-heydorn.de/steuer.html +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + - false + alter: + - 37 + - 35 + arbeitsstunden_w: + - 38.0 + - 30.0 + behinderungsgrad: + - 0 + - 0 + geburtsjahr: + - 1980 + - 1982 + hh_id: + - 18 + - 18 + familie__kind: + - false + - false + p_id: + - 25 + - 26 + familie__p_id_ehepartner: + - 26 + - 25 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 10359.0 + - 10359.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3000.0 + - 2500.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + jahr: + - 2017 + - 2017 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2045 + - 2047 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 35000 + - 29000 + einkommensteuer__gesamteinkommen_y: + - 53569.0 + - 53569.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 53569.0 + - 53569.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml new file mode 100644 index 0000000000..912aadadc1 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 10 + familie__kind: + - false + p_id: + - 10 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 2547.22 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 13400 + einkommensteuer__gesamteinkommen_y: + - 10816.78 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 10816.78 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml new file mode 100644 index 0000000000..3e6efe6796 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 11 + familie__kind: + - false + p_id: + - 11 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 3105.28 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 17000 + einkommensteuer__gesamteinkommen_y: + - 13858.72 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 13858.72 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml new file mode 100644 index 0000000000..b1e36693e1 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 12 + familie__kind: + - false + p_id: + - 12 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 5917.6 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 59000 + einkommensteuer__gesamteinkommen_y: + - 53046.4 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 53046.4 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml new file mode 100644 index 0000000000..c9491f2f6a --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 7 + familie__kind: + - false + p_id: + - 7 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 0.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 0 + einkommensteuer__gesamteinkommen_y: + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml new file mode 100644 index 0000000000..e311c4d3ec --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 8 + familie__kind: + - false + p_id: + - 8 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 990.74 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 6200 + einkommensteuer__gesamteinkommen_y: + - 5173.26 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5173.26 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml new file mode 100644 index 0000000000..11eb76a615 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml @@ -0,0 +1,82 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + alter: + - 40 + arbeitsstunden_w: + - 40.0 + behinderungsgrad: + - 0 + geburtsjahr: + - 1978 + hh_id: + - 9 + familie__kind: + - false + p_id: + - 9 + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + wohnort_ost: + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 1910.41 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 100.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__gemeinsam_veranlagt: + - false + jahr: + - 2018 + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2043 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 9800 + einkommensteuer__gesamteinkommen_y: + - 7853.59 + einkommensteuer__kinderfreibetrag_y_sn: + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 7853.59 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml new file mode 100644 index 0000000000..0b8d73d6c6 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml @@ -0,0 +1,119 @@ +--- +info: + note: '' + source: '' +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - true + - false + alter: + - 35 + - 5 + arbeitsstunden_w: + - 20.0 + - 0.0 + behinderungsgrad: + - 0 + - 0 + geburtsjahr: + - 1984 + - 2014 + hh_id: + - 13 + - 13 + familie__kind: + - false + - true + p_id: + - 13 + - 14 + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 13 + familie__p_id_elternteil_2: + - -1 + - -1 + wohnort_ost: + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 3119.94 + - 3119.94 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - false + - false + jahr: + - 2019 + - 2019 + kindergeld__in_ausbildung: + - false + - false + kindergeld__p_id_empfänger: + - -1 + - 13 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2050 + - 2070 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 1908 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 17000 + - 0 + einkommensteuer__gesamteinkommen_y: + - 11936.06 + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 3810 + - 0.0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 8126.06 + - 0.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml new file mode 100644 index 0000000000..d7449764d0 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml @@ -0,0 +1,193 @@ +--- +info: + note: '' + source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 45 + - 44 + - 13 + - 15 + arbeitsstunden_w: + - 40.0 + - 25.0 + - 0.0 + - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 14 + - 14 + - 14 + - 14 + familie__kind: + - false + - false + - true + - true + p_id: + - 15 + - 16 + - 17 + - 18 + familie__p_id_ehepartner: + - 16 + - 15 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 15 + - 15 + familie__p_id_elternteil_2: + - -1 + - -1 + - 16 + - 16 + wohnort_ost: + - false + - false + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + - -1 + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 10901.0 + - 10901.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + jahr: + - 2020 + - 2020 + - 2020 + - 2020 + kindergeld__in_ausbildung: + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 15 + - 15 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + - false + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 41000 + - 23000 + - 0 + - 0 + einkommensteuer__gesamteinkommen_y: + - 53027.0 + - 53027.0 + - 0.0 + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 37403.0 + - 37403.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml new file mode 100644 index 0000000000..e5eb8d240a --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml @@ -0,0 +1,193 @@ +--- +info: + note: Result from source including Betreuungskosten + source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 45 + - 44 + - 13 + - 11 + arbeitsstunden_w: + - 40.0 + - 25.0 + - 0.0 + - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 19 + - 19 + - 19 + - 19 + familie__kind: + - false + - false + - true + - true + p_id: + - 27 + - 28 + - 29 + - 30 + familie__p_id_ehepartner: + - 28 + - 27 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 27 + - 27 + familie__p_id_elternteil_2: + - -1 + - -1 + - 28 + - 28 + wohnort_ost: + - false + - false + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + - 80.0 + - 45.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + - 27 + - 27 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 10901.0 + - 10901.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + jahr: + - 2020 + - 2020 + - 2020 + - 2020 + kindergeld__in_ausbildung: + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 27 + - 27 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + - false + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 41000 + - 23000 + - 0 + - 0 + einkommensteuer__gesamteinkommen_y: + - 52099.0 + - 52099.0 + - 0.0 + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36475.0 + - 36475.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml new file mode 100644 index 0000000000..9ac1fba331 --- /dev/null +++ b/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml @@ -0,0 +1,193 @@ +--- +info: + note: Result from source including Betreuungskosten + source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 +inputs: + assumed: {} + provided: + familie__alleinerziehend: + - false + - false + - false + - false + alter: + - 45 + - 44 + - 13 + - 15 + arbeitsstunden_w: + - 40.0 + - 25.0 + - 0.0 + - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 20 + - 20 + - 20 + - 20 + familie__kind: + - false + - false + - true + - true + p_id: + - 31 + - 32 + - 33 + - 34 + familie__p_id_ehepartner: + - 32 + - 31 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 31 + - 31 + familie__p_id_elternteil_2: + - -1 + - -1 + - 32 + - 32 + wohnort_ost: + - false + - false + - false + - false + einkommensteuer__abzüge__betreuungskosten_m: + - 0.0 + - 0.0 + - 62.5 + - 0.0 + einkommensteuer__abzüge__p_id_betreuungskosten_träger: + - -1 + - -1 + - 31 + - -1 + einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 0.0 + - 0.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + - false + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + jahr: + - 2020 + - 2020 + - 2020 + - 2020 + kindergeld__in_ausbildung: + - false + - false + - false + - false + kindergeld__p_id_empfänger: + - -1 + - -1 + - 31 + - 31 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + - false + - false + sozialversicherung__pflege__beitrag__hat_kinder: + - true + - true + - false + - false + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + einkommensteuer__abzüge__alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__abzüge__pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkommensteuer__gesamteinkommen_ohne_abzüge_y: + - 41000 + - 23000 + - 0 + - 0 + einkommensteuer__gesamteinkommen_y: + - 52599.0 + - 52599.0 + - 0.0 + - 0.0 + einkommensteuer__kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36975.0 + - 36975.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_dates_active.py b/src/_gettsim_tests/test_dates_active.py index 255910e328..974655f848 100644 --- a/src/_gettsim_tests/test_dates_active.py +++ b/src/_gettsim_tests/test_dates_active.py @@ -2,11 +2,11 @@ import pytest -from _gettsim.functions.loader import ( +from _gettsim.function_types import policy_function +from _gettsim.loader import ( ConflictingTimeDependentFunctionsError, _fail_if_multiple_policy_functions_are_active_at_the_same_time, ) -from _gettsim.functions.policy_function import policy_function # Start date ----------------------------------------------- diff --git a/src/_gettsim_tests/test_demographic_vars.py b/src/_gettsim_tests/test_demographic_vars.py deleted file mode 100644 index a19ecdf15d..0000000000 --- a/src/_gettsim_tests/test_demographic_vars.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("demographic_vars") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_demographic_vars( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_demographics.py b/src/_gettsim_tests/test_demographics.py new file mode 100644 index 0000000000..966c05dd4f --- /dev/null +++ b/src/_gettsim_tests/test_demographics.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("demographics") + + +@pytest.mark.parametrize("test", test_data) +def test_demographics(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_docs.py b/src/_gettsim_tests/test_docs.py index 871ce3a30e..168e31479f 100644 --- a/src/_gettsim_tests/test_docs.py +++ b/src/_gettsim_tests/test_docs.py @@ -10,7 +10,7 @@ RESOURCE_DIR, TYPES_INPUT_VARIABLES, ) -from _gettsim.functions.loader import ( +from _gettsim.loader import ( load_aggregation_specs_tree, load_functions_tree_for_date, ) diff --git a/src/_gettsim_tests/test_eink_st.py b/src/_gettsim_tests/test_eink_st.py deleted file mode 100644 index e020519d1c..0000000000 --- a/src/_gettsim_tests/test_eink_st.py +++ /dev/null @@ -1,31 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("eink_st") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_eink_st( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=1, rtol=0 - ) diff --git a/src/_gettsim_tests/test_einkommensteuer.py b/src/_gettsim_tests/test_einkommensteuer.py new file mode 100644 index 0000000000..ca30332de5 --- /dev/null +++ b/src/_gettsim_tests/test_einkommensteuer.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("einkommensteuer") + + +@pytest.mark.parametrize("test", test_data) +def test_einkommensteuer(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=0) diff --git a/src/_gettsim_tests/test_elterngeld.py b/src/_gettsim_tests/test_elterngeld.py index a97448d0f2..9b5d6ca44a 100644 --- a/src/_gettsim_tests/test_elterngeld.py +++ b/src/_gettsim_tests/test_elterngeld.py @@ -1,35 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("elterngeld") +test_data = load_policy_test_data("elterngeld") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_elterngeld( - test_data: PolicyTestData, - column: str, -): - """Run tests to validate elterngeld.""" - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_elterngeld(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-3, - rtol=1e-3, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_erwerbsm_rente.py b/src/_gettsim_tests/test_erwerbsm_rente.py deleted file mode 100644 index d67ec1056b..0000000000 --- a/src/_gettsim_tests/test_erwerbsm_rente.py +++ /dev/null @@ -1,35 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("erwerbsm_rente") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_erwerbsm_rente( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, - environment=environment, - targets=column, - ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_erwerbsminderungsrente.py b/src/_gettsim_tests/test_erwerbsminderungsrente.py new file mode 100644 index 0000000000..60c4efc102 --- /dev/null +++ b/src/_gettsim_tests/test_erwerbsminderungsrente.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("erwerbsminderungsrente") + + +@pytest.mark.parametrize("test", test_data) +def test_erwerbsminderungsrente(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_erziehungsgeld.py b/src/_gettsim_tests/test_erziehungsgeld.py index 109fa5f366..3764857359 100644 --- a/src/_gettsim_tests/test_erziehungsgeld.py +++ b/src/_gettsim_tests/test_erziehungsgeld.py @@ -1,41 +1,28 @@ -""" -Test the Erziehungsgeld for Erwerbsminderungsrente -(pension for reduced earning capacity) -""" - +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("erziehungsgeld") +test_data = load_policy_test_data("erziehungsgeld") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_erziehungsgeld( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_erziehungsgeld(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, + data_tree=test.input_tree, environment=environment, - targets=column, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_favorability_check.py b/src/_gettsim_tests/test_favorability_check.py deleted file mode 100644 index 7879488106..0000000000 --- a/src/_gettsim_tests/test_favorability_check.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("favorability_check") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_favorability_check( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 146db2a893..0556197d20 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,95 +1,62 @@ +import dags.tree as dt import pytest from _gettsim.config import TYPES_INPUT_VARIABLES -from _gettsim.functions.loader import load_functions_tree_for_date -from _gettsim.gettsim_typing import check_series_has_expected_type from _gettsim.interface import compute_taxes_and_transfers +from _gettsim.typing import check_series_has_expected_type from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -OUT_COLS = [ - "eink_st_y_sn", - "soli_st_y_sn", - "abgelt_st_y_sn", - "ges_rentenv_beitr_arbeitnehmer_m", - "arbeitsl_v_beitr_arbeitnehmer_m", - "ges_krankenv_beitr_arbeitnehmer_m", - "ges_pflegev_beitr_arbeitnehmer_m", - "arbeitsl_geld_m", - "kindergeld_m", - "arbeitsl_geld_2_m_bg", - "kinderzuschl_m_bg", - "wohngeld_m_wthh", - "unterhaltsvors_m_hh", -] +test_data = load_policy_test_data("full_taxes_and_transfers") -data = load_policy_test_data("full_taxes_and_transfers") - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - "test_data", - data.test_data, - ids=str, -) -def test_full_taxes_and_transfers( - test_data: PolicyTestData, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - out = OUT_COLS.copy() - if test_data.date.year <= 2008: - out.remove("abgelt_st_y_sn") +@pytest.mark.parametrize("test", test_data) +def test_full_taxes_transfers(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) compute_taxes_and_transfers( - data=df, + data_tree=test.input_tree, environment=environment, - targets=out, + targets_tree=test.target_structure, ) -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - "test_data", - data.test_data, - ids=str, -) -def test_data_types( - test_data: PolicyTestData, -): - functions = { - f.leaf_name: f.function for f in load_functions_tree_for_date(test_data.date) - } - - out = OUT_COLS.copy() - if test_data.date.year <= 2008: - out.remove("abgelt_st_y_sn") - - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_data_types(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, + data_tree=test.input_tree, environment=environment, - targets=out, - debug=True, + targets_tree=test.target_structure, ) - for column_name, series in result.items(): - if series.empty: - pass + + flat_types_input_variables = dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES) + flat_functions = dt.flatten_to_qual_names(environment.functions_tree) + + for column_name, result_array in dt.flatten_to_qual_names(result).items(): + if column_name in flat_types_input_variables: + internal_type = flat_types_input_variables[column_name] + elif column_name in flat_functions: + internal_type = flat_functions[column_name].__annotations__["return"] else: - if column_name in TYPES_INPUT_VARIABLES: - internal_type = TYPES_INPUT_VARIABLES[column_name] - elif column_name in functions: - internal_type = functions[column_name].__annotations__["return"] + # TODO (@hmgaudecker): Implement easy way to find out expected type of + # aggregated functions + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + if column_name.endswith(("_sn", "_hh", "_fg", "_bg", "_eg", "_ehe")): + internal_type = None else: - # TODO (@hmgaudecker): Implement easy way to find out expected type of - # aggregated functions - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - if column_name.endswith(("_sn", "_hh", "_fg", "_bg", "_eg", "_ehe")): - internal_type = None - else: - raise ValueError(f"Column name {column_name} unknown.") - if internal_type: - assert check_series_has_expected_type(series, internal_type) + raise ValueError(f"Column name {column_name} unknown.") + if internal_type: + assert check_series_has_expected_type(result_array, internal_type) + + +@pytest.mark.parametrize("test", test_data) +def test_allow_none_as_target_tree(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=None, + ) diff --git a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py index 7432aa7566..c183efee96 100644 --- a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py +++ b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py @@ -1,34 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("ges_rente_hinzuverdienst") +test_data = load_policy_test_data("ges_rente_hinzuverdienst") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_ges_rente_hinzuverdienst( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_gesetzliche_rente_hinzuverdienst(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-2, - rtol=0, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_ges_rentenalter.py b/src/_gettsim_tests/test_ges_rentenalter.py deleted file mode 100644 index 0bc9bd7adc..0000000000 --- a/src/_gettsim_tests/test_ges_rentenalter.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("ges_rentenalter") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_renten_alter( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index 845dbe7a29..6b5e1d657a 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -1,61 +1,53 @@ -import pandas as pd +import dags.tree as dt +import numpy as np import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -OVERRIDE_COLS = [] +test_data = load_policy_test_data("groupings") -data = load_policy_test_data("groupings") - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_groupings( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_groupings(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, + data_tree=test.input_tree, environment=environment, - targets=column, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) -@pytest.mark.xfail(reason="Needs renamings PR.") def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): - data = pd.DataFrame( - { - "p_id": [0, 1], - "p_id_ehepartner": [1, 0], - "gemeinsam_veranlagt": [False, True], - } - ) + data = { + "p_id": np.array([0, 1]), + "familie": { + "p_id_ehepartner": np.array([1, 0]), + }, + "einkommensteuer": { + "gemeinsam_veranlagt": np.array([False, True]), + }, + } environment = cached_set_up_policy_environment(date="2023") with pytest.raises( - ValueError, match="have different values for gemeinsam_veranlagt" + ValueError, + match="have different values for gemeinsam_veranlagt", ): compute_taxes_and_transfers( - data=data, + data_tree=data, environment=environment, - targets=["sn_id"], + targets_tree={"einkommensteuer": {"sn_id": None}}, ) diff --git a/src/_gettsim_tests/test_grundrente.py b/src/_gettsim_tests/test_grundrente.py index 4710a2c73b..146c337729 100644 --- a/src/_gettsim_tests/test_grundrente.py +++ b/src/_gettsim_tests/test_grundrente.py @@ -1,139 +1,97 @@ from datetime import timedelta +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -YEARS = [2021] +grundrente_test_data = load_policy_test_data("grundrente") +proxy_rente_test_data = load_policy_test_data("grundrente_proxy_rente") -OUT_COLS_TOL = { - "grundr_zuschlag_bonus_entgeltp": 0.0001, - "grundr_zuschlag_vor_eink_anr_m": 1, - "grundr_zuschlag_m": 1, - "ges_rente_m": 1, -} -data = load_policy_test_data("grundrente") - -@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, + "test", + grundrente_test_data, ) -def test_grundrente( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +def test_grundrente(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - tol = OUT_COLS_TOL[column] - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=tol, rtol=0 - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=0) -INPUT_COLS_INCOME = [ - "p_id", - "hh_id", - "alter", - "priv_rente_m", - "entgeltp_west", - "entgeltp_ost", - "geburtsjahr", - "geburtsmonat", - "rentner", - "jahr_renteneintr", - "monat_renteneintr", - "wohnort_ost", - "bruttolohn_m", - "höchster_bruttolohn_letzte_15_jahre_vor_rente_y", - "weiblich", - "y_pflichtbeitr_ab_40", - "pflichtbeitr_8_in_10", - "arbeitsl_1y_past_585", - "vertra_arbeitsl_2006", - "vertra_arbeitsl_1997", - "m_pflichtbeitrag", - "m_freiw_beitrag", - "m_ersatzzeit", - "m_schul_ausbild", - "m_kind_berücks_zeit", - "m_pfleg_berücks_zeit", - "m_arbeitsunfähig", - "m_krank_ab_16_bis_24", - "m_mutterschutz", - "m_arbeitsl", - "m_ausbild_suche", - "m_alg1_übergang", - "m_geringf_beschäft", -] - -data_proxy = load_policy_test_data("grundrente_proxy_rente") - - -@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( - ("test_data", "column"), - data_proxy.parametrize_args, - ids=str, + "test", + proxy_rente_test_data, ) -def test_proxy_rente_vorj( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df[INPUT_COLS_INCOME] - environment = cached_set_up_policy_environment(date=test_data.date) +def test_grundrente_proxy_rente(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column].astype(float), - test_data.output_df[column], - check_dtype=False, - rtol=0, - atol=0.01, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=0) -@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( - "test_data", - data_proxy.test_data, - ids=str, + "test", + proxy_rente_test_data, ) -def test_proxy_rente_vorj_comparison_last_year(test_data: PolicyTestData): - df = test_data.input_df[INPUT_COLS_INCOME].copy() - date = test_data.date - environment = cached_set_up_policy_environment(date) +def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) - calc_result = compute_taxes_and_transfers( - data=df, + result = compute_taxes_and_transfers( + data_tree=test.input_tree, environment=environment, - targets="rente_vorj_vor_grundr_proxy_m", + targets_tree={ + "sozialversicherung": { + "rente": {"grundrente": {"proxy_rente_vorjahr_m": None}} + } + }, ) # Calculate pension of last year - environment = cached_set_up_policy_environment(date - timedelta(days=365)) - df["alter"] -= 1 - calc_result_last_year = compute_taxes_and_transfers( - data=df, + environment = cached_set_up_policy_environment(test.date - timedelta(days=365)) + test.input_tree["alter"] -= 1 + result_previous_year = compute_taxes_and_transfers( + data_tree=test.input_tree, environment=environment, - targets=["bruttorente_m"], + targets_tree={ + "sozialversicherung": {"rente": {"altersrente": {"bruttorente_m": None}}} + }, ) - assert_series_equal( - calc_result["rente_vorj_vor_grundr_proxy_m"], - calc_result_last_year["bruttorente_m"] + df["priv_rente_m"], - check_names=False, - rtol=0, + + flat_result = dt.flatten_to_qual_names(result) + flat_result_previous_year = dt.flatten_to_qual_names(result_previous_year) + flat_inputs = dt.flatten_to_qual_names(test.input_tree) + assert_array_almost_equal( + flat_result["sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m"], + flat_result_previous_year[ + "sozialversicherung__rente__altersrente__bruttorente_m" + ] + + flat_inputs["sozialversicherung__rente__private_rente_betrag_m"], + decimal=2, ) diff --git a/src/_gettsim_tests/test_grunds_im_alter.py b/src/_gettsim_tests/test_grunds_im_alter.py deleted file mode 100644 index fd13c52c72..0000000000 --- a/src/_gettsim_tests/test_grunds_im_alter.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("grunds_im_alter") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_grunds_im_alter( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_grundsicherung_im_alter.py b/src/_gettsim_tests/test_grundsicherung_im_alter.py new file mode 100644 index 0000000000..d2f89c1192 --- /dev/null +++ b/src/_gettsim_tests/test_grundsicherung_im_alter.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("grundsicherung_im_alter") + + +@pytest.mark.parametrize("test", test_data) +def test_grundsicherung_im_alter(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git "a/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" "b/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" new file mode 100644 index 0000000000..ee9d3ebc14 --- /dev/null +++ "b/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("günstigerprüfungen") + + +@pytest.mark.parametrize("test", test_data) +def test_günstigerprüfungen(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_interface.py b/src/_gettsim_tests/test_interface.py index 94dcfb665a..f378789165 100644 --- a/src/_gettsim_tests/test_interface.py +++ b/src/_gettsim_tests/test_interface.py @@ -2,6 +2,7 @@ import re import warnings +import dags.tree as dt import numpy import pandas as pd import pytest @@ -9,9 +10,7 @@ from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec from _gettsim.config import FOREIGN_KEYS from _gettsim.config import numpy_or_jax as np -from _gettsim.functions.policy_function import policy_function -from _gettsim.gettsim_typing import convert_series_to_internal_type -from _gettsim.groupings import bg_id_numpy, wthh_id_numpy +from _gettsim.function_types import group_by_function, policy_function from _gettsim.interface import ( _convert_data_to_correct_types, _fail_if_foreign_keys_are_invalid, @@ -22,6 +21,11 @@ ) from _gettsim.policy_environment import PolicyEnvironment from _gettsim.shared import assert_valid_gettsim_pytree +from _gettsim.transfers.arbeitslosengeld_2.group_by_ids import bg_id +from _gettsim.transfers.wohngeld.group_by_ids import ( + wthh_id, +) +from _gettsim.typing import convert_series_to_internal_type from gettsim import FunctionsAndColumnsOverlapWarning @@ -29,10 +33,8 @@ def minimal_input_data(): n_individuals = 5 out = { - "groupings": { - "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "hh_id": pd.Series(numpy.arange(n_individuals), name="hh_id"), - } + "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), + "hh_id": pd.Series(numpy.arange(n_individuals), name="hh_id"), } return out @@ -41,10 +43,8 @@ def minimal_input_data(): def minimal_input_data_shared_hh(): n_individuals = 3 out = { - "groupings": { - "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "hh_id": pd.Series([0, 0, 1], name="hh_id"), - } + "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), + "hh_id": pd.Series([0, 0, 1], name="hh_id"), } return out @@ -65,9 +65,7 @@ def test_output_as_tree(minimal_input_data): environment = PolicyEnvironment( { "module": { - "test_func": policy_function(leaf_name="test_func")( - lambda groupings__p_id: groupings__p_id - ) + "test_func": policy_function(leaf_name="test_func")(lambda p_id: p_id) } } ) @@ -83,20 +81,24 @@ def test_output_as_tree(minimal_input_data): assert isinstance(out["module"]["test_func"], np.ndarray) -@pytest.mark.xfail(reason="Needs renamings PR.") def test_warn_if_functions_and_columns_overlap(): environment = PolicyEnvironment( - {"dupl": policy_function(leaf_name="dupl")(lambda x: x)} + { + "dupl": policy_function(leaf_name="dupl")(lambda x: x), + "some_target": policy_function(leaf_name="some_target")(lambda dupl: dupl), + } ) with pytest.warns(FunctionsAndColumnsOverlapWarning): compute_taxes_and_transfers( - data_tree={"groupings": {"p_id": pd.Series([0])}, "dupl": pd.Series([1])}, + data_tree={ + "p_id": pd.Series([0]), + "dupl": pd.Series([1]), + }, environment=environment, - targets_tree={}, + targets_tree={"some_target": None}, ) -@pytest.mark.xfail(reason="Needs renamings PR.") def test_dont_warn_if_functions_and_columns_dont_overlap(): environment = PolicyEnvironment( {"some_func": policy_function(leaf_name="some_func")(lambda x: x)} @@ -104,105 +106,142 @@ def test_dont_warn_if_functions_and_columns_dont_overlap(): with warnings.catch_warnings(): warnings.filterwarnings("error", category=FunctionsAndColumnsOverlapWarning) compute_taxes_and_transfers( - data_tree={"groupings": {"p_id": pd.Series([0])}}, + data_tree={ + "p_id": pd.Series([0]), + "x": pd.Series([1]), + }, environment=environment, - targets_tree={}, + targets_tree={"some_func": None}, ) -@pytest.mark.xfail(reason="Needs renamings PR.") def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): environment = PolicyEnvironment( - {"dupl": policy_function(leaf_name="dupl")(lambda x: x)} + { + "dupl": policy_function(leaf_name="dupl")(lambda x: x), + "unique": policy_function(leaf_name="unique")(lambda x: x**2), + } ) with warnings.catch_warnings( category=FunctionsAndColumnsOverlapWarning, record=True ) as warning_list: warnings.filterwarnings("ignore", category=FunctionsAndColumnsOverlapWarning) compute_taxes_and_transfers( - data_tree={"groupings": {"p_id": pd.Series([0]), "dupl": pd.Series([1])}}, + data_tree={ + "p_id": pd.Series([0]), + "dupl": pd.Series([1]), + "x": pd.Series([1]), + }, environment=environment, - targets_tree={}, + targets_tree={"unique": None}, ) assert len(warning_list) == 0 def test_fail_if_pid_does_not_exist(): - data = {"groupings__hh_id": pd.Series(data=numpy.arange(8), name="hh_id")} + data = {"hh_id": pd.Series(data=numpy.arange(8), name="hh_id")} with pytest.raises(ValueError): _fail_if_pid_is_non_unique(data) def test_fail_if_pid_is_non_unique(): - data = {"groupings__p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} + data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} with pytest.raises(ValueError): _fail_if_pid_is_non_unique(data) -@pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_non_existing_pid(foreign_key): +@pytest.mark.parametrize( + ( + "foreign_key_name", + "expected_error_message", + ), + [ + ("familie__p_id_ehepartner", "not a valid p_id in the\ninput data"), + ( + "arbeitslosengeld_2__p_id_einstandspartner", + "not a\nvalid p_id in the input data", + ), + ("familie__p_id_elternteil_1", "not a valid p_id in the\ninput data"), + ("familie__p_id_elternteil_2", "not a valid p_id in the\ninput data"), + ], +) +def test_fail_if_foreign_key_points_to_non_existing_pid( + foreign_key_name, expected_error_message +): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - foreign_key: pd.Series([0, 1, 4], name=foreign_key), - }, + foreign_key_name: pd.Series([0, 1, 4]), + "p_id": pd.Series([1, 2, 3]), } - with pytest.raises(ValueError, match="not a valid p_id"): - _fail_if_foreign_keys_are_invalid( - data_tree=data, - p_ids=data["groupings"]["p_id"], - ) + with pytest.raises(ValueError, match=expected_error_message): + _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) -@pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) -def test_allow_minus_one_as_foreign_key(foreign_key): +@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) +def test_allow_minus_one_as_foreign_key(foreign_key_path): + foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - foreign_key: pd.Series([-1, 1, 2], name=foreign_key), - }, + foreign_key_name: pd.Series([-1, 1, 2]), + "p_id": pd.Series([1, 2, 3]), } - _fail_if_foreign_keys_are_invalid( - data_tree=data, - p_ids=data["groupings"]["p_id"], - ) + _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) -@pytest.mark.parametrize("foreign_key", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_pid_of_same_row(foreign_key): +@pytest.mark.parametrize( + ( + "foreign_key_name", + "expected_error_message", + ), + [ + ("familie__p_id_ehepartner", "are equal to the p_id"), + ("arbeitslosengeld_2__p_id_einstandspartner", "are equal to\nthe p_id"), + ("familie__p_id_elternteil_1", "are equal to the p_id"), + ("familie__p_id_elternteil_2", "are equal to the p_id"), + ], +) +def test_fail_if_foreign_key_points_to_pid_of_same_row( + foreign_key_name, expected_error_message +): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - foreign_key: pd.Series([1, 3, 3], name=foreign_key), - }, + foreign_key_name: pd.Series([1, 3, 3]), + "p_id": pd.Series([1, 2, 3]), } - with pytest.raises(ValueError, match="are equal to the p_id in the same"): - _fail_if_foreign_keys_are_invalid( - data_tree=data, - p_ids=data["groupings"]["p_id"], - ) + with pytest.raises(ValueError, match=expected_error_message): + _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) @pytest.mark.parametrize( - "data", + "data, functions", [ - { - "foo_hh": pd.Series([1, 2, 2], name="foo_hh"), - "groupings": { + ( + { + "foo_hh": pd.Series([1, 2, 2], name="foo_hh"), "hh_id": pd.Series([1, 1, 2], name="hh_id"), }, - }, + {}, + ), + ( + { + "foo_eg": pd.Series([1, 2, 2], name="foo_eg"), + "eg_id": pd.Series([1, 1, 2], name="eg_id"), + }, + { + "eg_id": group_by_function()(lambda x: x), + }, + ), ], ) -def test_fail_if_group_variables_not_constant_within_groups(data): +def test_fail_if_group_variables_not_constant_within_groups(data, functions): with pytest.raises(ValueError): - _fail_if_group_variables_not_constant_within_groups(data) + _fail_if_group_variables_not_constant_within_groups( + data=data, + functions=functions, + ) def test_missing_root_nodes_raises_error(minimal_input_data): @@ -231,7 +270,7 @@ def c(b): def test_function_without_data_dependency_is_not_mistaken_for_data(minimal_input_data): @policy_function(leaf_name="a") def a(): - return pd.Series(range(minimal_input_data["groupings"]["p_id"].size)) + return pd.Series(range(minimal_input_data["p_id"].size)) @policy_function(leaf_name="b") def b(a): @@ -258,7 +297,7 @@ def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions def test_fail_if_missing_pid(): - data = {"groupings": {"hh_id": pd.Series([1, 2, 3], name="hh_id")}} + data = {"hh_id": pd.Series([1, 2, 3], name="hh_id")} with pytest.raises( ValueError, match="The input data must contain the p_id", @@ -268,7 +307,7 @@ def test_fail_if_missing_pid(): def test_fail_if_non_unique_pid(minimal_input_data): data = copy.deepcopy(minimal_input_data) - data["groupings"]["p_id"][:] = 1 + data["p_id"][:] = 1 with pytest.raises( ValueError, @@ -277,7 +316,7 @@ def test_fail_if_non_unique_pid(minimal_input_data): compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) -def test_consecutive_internal_test_runs(): +def test_warn_when_internal_tests_are_executed_repeatedly(): from gettsim import test test("--collect-only") @@ -305,10 +344,8 @@ def test_partial_parameters_to_functions_removes_argument(): def test_user_provided_aggregate_by_group_specs(): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - }, + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), "module_name": { "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), }, @@ -317,7 +354,7 @@ def test_user_provided_aggregate_by_group_specs(): aggregation_specs_tree = { "module_name": { "betrag_m_hh": AggregateByGroupSpec( - source_col="betrag_m", + source="betrag_m", aggr="sum", ) } @@ -341,7 +378,7 @@ def test_user_provided_aggregate_by_group_specs(): { "module_name": { "betrag_double_m_hh": AggregateByGroupSpec( - source_col="betrag_m_double", + source="betrag_m_double", aggr="max", ), }, @@ -349,7 +386,7 @@ def test_user_provided_aggregate_by_group_specs(): { "module_name": { "betrag_double_m_hh": AggregateByGroupSpec( - source_col="module_name__betrag_m_double", + source="module_name__betrag_m_double", aggr="max", ), }, @@ -358,10 +395,8 @@ def test_user_provided_aggregate_by_group_specs(): ) def test_user_provided_aggregate_by_group_specs_function(aggregation_specs_tree): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - }, + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), "module_name": { "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), }, @@ -395,10 +430,8 @@ def betrag_m_double(betrag_m): def test_aggregate_by_group_specs_missing_group_sufix(): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - }, + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), "module_name": { "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), }, @@ -406,7 +439,7 @@ def test_aggregate_by_group_specs_missing_group_sufix(): aggregation_specs_tree = { "module_name": { "betrag_agg_m": AggregateByGroupSpec( - source_col="betrag_m", + source="betrag_m", aggr="sum", ) }, @@ -424,10 +457,8 @@ def test_aggregate_by_group_specs_missing_group_sufix(): def test_aggregate_by_group_specs_agg_not_impl(): data = { - "groupings": { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - }, + "p_id": pd.Series([1, 2, 3], name="p_id"), + "hh_id": pd.Series([1, 1, 2], name="hh_id"), "module_name": { "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), }, @@ -435,7 +466,7 @@ def test_aggregate_by_group_specs_agg_not_impl(): aggregation_specs_tree = { "module_name": { "betrag_m_hh": AggregateByGroupSpec( - source_col="betrag_m", + source="betrag_m", aggr="aggr_not_implemented", ) }, @@ -458,8 +489,8 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func": AggregateByPIDSpec( - p_id_to_aggregate_by="groupings__hh_id", - source_col="source_func", + p_id_to_aggregate_by="hh_id", + source="source_func", aggr="sum", ) } @@ -472,8 +503,8 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func_m": AggregateByPIDSpec( - p_id_to_aggregate_by="groupings__hh_id", - source_col="source_func_m", + p_id_to_aggregate_by="hh_id", + source="source_func_m", aggr="sum", ) } @@ -486,8 +517,8 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func_m": AggregateByPIDSpec( - p_id_to_aggregate_by="groupings__hh_id", - source_col="source_func_m", + p_id_to_aggregate_by="hh_id", + source="source_func_m", aggr="sum", ) } @@ -508,7 +539,7 @@ def test_user_provided_aggregate_by_p_id_specs( # TODO(@MImmesberger): Remove fake dependency. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 @policy_function(leaf_name=leaf_name) - def source_func(groupings__p_id: int) -> int: # noqa: ARG001 + def source_func(p_id: int) -> int: # noqa: ARG001 return 100 functions_tree = {"module": {leaf_name: source_func}} @@ -636,11 +667,11 @@ def test_fail_if_cannot_be_converted_to_internal_type( [ ( {"bg_id": pd.Series([1, 2, 3])}, - {"bg_id": bg_id_numpy}, + {"bg_id": bg_id}, ), ( {"wthh_id": pd.Series([1, 2, 3])}, - {"wthh_id": wthh_id_numpy}, + {"wthh_id": wthh_id}, ), ], ) @@ -654,51 +685,37 @@ def test_provide_endogenous_groupings(data, functions_overridden): "data, functions_overridden, error_match", [ ( - {"groupings": {"hh_id": pd.Series([1, 1.1, 2])}}, + {"hh_id": pd.Series([1, 1.1, 2])}, {}, - "The data types of the following columns are invalid:\n" - "\n - groupings__hh_id: Conversion from input type float64 to int failed." - " This\nconversion is only supported if all decimal places of input" - " data are equal to\n0.", + "- hh_id: Conversion from input type float64 to int", ), ( - {"basic_inputs": {"wohnort_ost": pd.Series([1.1, 0.0, 1.0])}}, + {"wohnort_ost": pd.Series([1.1, 0.0, 1.0])}, {}, - "The data types of the following columns are invalid:\n" - "\n - basic_inputs__wohnort_ost: Conversion from input type float64 to bool" - "\nfailed. This conversion is only supported if input data exclusively " - "contains\nthe values 1.0 and 0.0.", + "- wohnort_ost: Conversion from input type float64 to bool", ), ( { - "basic_inputs": {"wohnort_ost": pd.Series([2, 0, 1])}, - "groupings": {"hh_id": pd.Series([1.0, 2.0, 3.0])}, + "hh_id": pd.Series([1.0, 2.0, 3.0]), + "wohnort_ost": pd.Series([2, 0, 1]), }, {}, - "The data types of the following columns are invalid:\n" - "\n - basic_inputs__wohnort_ost: Conversion from input type int64 to bool " - "failed.\nThis conversion is only supported if input data exclusively " - "contains the values\n1 and 0.", + "- wohnort_ost: Conversion from input type int64 to bool", ), ( - {"basic_inputs": {"wohnort_ost": pd.Series(["True", "False"])}}, + {"wohnort_ost": pd.Series(["True", "False"])}, {}, - "The data types of the following columns are invalid:\n" - "\n - basic_inputs__wohnort_ost: Conversion from input type object to bool " - "failed.\nObject type is not supported as input.", + "- wohnort_ost: Conversion from input type object to bool", ), ( { - "groupings": {"hh_id": pd.Series([1, "1", 2])}, - "basic_inputs": {"bruttolohn_m": pd.Series(["2000", 3000, 4000])}, + "hh_id": pd.Series([1, "1", 2]), + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": pd.Series( # noqa: E501 + ["2000", 3000, 4000] + ), }, {}, - "The data types of the following columns are invalid:\n" - "\n - groupings__hh_id: Conversion from input type object to int failed. " - "Object\ntype is not supported as input." - "\n\n- basic_inputs__bruttolohn_m: Conversion from input type object to" - " float\nfailed." - " Object type is not supported as input.", + "- hh_id: Conversion from input type object to int failed.", ), ], ) diff --git a/src/_gettsim_tests/test_kindergeld.py b/src/_gettsim_tests/test_kindergeld.py index 475f6bdcbb..22eb439961 100644 --- a/src/_gettsim_tests/test_kindergeld.py +++ b/src/_gettsim_tests/test_kindergeld.py @@ -1,30 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("kindergeld") +test_data = load_policy_test_data("kindergeld") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_kindergeld( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_kindergeld(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=0, rtol=0 - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_kinderzuschl.py b/src/_gettsim_tests/test_kinderzuschl.py deleted file mode 100644 index 3f09b4b877..0000000000 --- a/src/_gettsim_tests/test_kinderzuschl.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("kinderzuschl") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_kinderzuschl( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=0.01, - rtol=0, - ) diff --git a/src/_gettsim_tests/test_kinderzuschlag.py b/src/_gettsim_tests/test_kinderzuschlag.py new file mode 100644 index 0000000000..7c786b7c47 --- /dev/null +++ b/src/_gettsim_tests/test_kinderzuschlag.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("kinderzuschlag") + + +@pytest.mark.parametrize("test", test_data) +def test_kinderzuschlag(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_loader.py b/src/_gettsim_tests/test_loader.py index e10267cdfe..b38732d837 100644 --- a/src/_gettsim_tests/test_loader.py +++ b/src/_gettsim_tests/test_loader.py @@ -6,15 +6,15 @@ import pytest from _gettsim.config import PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR -from _gettsim.functions.loader import ( +from _gettsim.function_types import ( + policy_function, +) +from _gettsim.function_types.policy_function import _vectorize_func +from _gettsim.loader import ( _convert_path_to_tree_path, _find_python_files_recursively, _load_module, ) -from _gettsim.functions.policy_function import ( - _vectorize_func, - policy_function, -) if TYPE_CHECKING: from collections.abc import Callable @@ -23,7 +23,12 @@ def test_load_path(): assert _load_module( - RESOURCE_DIR / "social_insurance_contributions" / "ges_krankenv.py", + RESOURCE_DIR + / "taxes" + / "sozialversicherung" + / "kranken" + / "beitrag" + / "beitragssatz.py", RESOURCE_DIR, ) @@ -68,6 +73,7 @@ def test_vectorize_func(vectorized_function: Callable) -> None: (RESOURCE_DIR / "foo" / "spam" / "bar.py", RESOURCE_DIR, ("foo", "spam")), (RESOURCE_DIR / "taxes" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), (RESOURCE_DIR / "transfers" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), + (RESOURCE_DIR / "transfers" / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 ], ) def test_convert_path_to_tree_path( diff --git a/src/_gettsim_tests/test_lohnst.py b/src/_gettsim_tests/test_lohnst.py deleted file mode 100644 index 69da4a8538..0000000000 --- a/src/_gettsim_tests/test_lohnst.py +++ /dev/null @@ -1,63 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.policy_environment import set_up_policy_environment -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -INPUT_COLS = [ - "hh_id", - "p_id", - "wohnort_ost", - "steuerklasse", - "bruttolohn_m", - "alter", - "ges_pflegev_hat_kinder", - "arbeitsstunden_w", - "in_ausbildung", - "ges_krankenv_zusatzbeitr_satz", - "ges_pflegev_zusatz_kinderlos", -] - -OUT_COLS = ["lohnst_m", "soli_st_lohnst_m"] - -data = load_policy_test_data("lohnst") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_lohnsteuer( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=2 - ) - - -@pytest.mark.xfail(reason="Needs renamings PR.") -def test_lohnsteuer_rv_anteil(): - environment = set_up_policy_environment(2018) - - assert ( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] - == 0.72 - ) - - environment = set_up_policy_environment(2023) - - assert ( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 1 - ) diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py new file mode 100644 index 0000000000..2c5234f496 --- /dev/null +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -0,0 +1,44 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim.policy_environment import set_up_policy_environment +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("lohnsteuer") + + +@pytest.mark.parametrize("test", test_data) +def test_lohnsteuer(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=0) + + +def test_lohnsteuer_rv_anteil(): + environment = set_up_policy_environment(2018) + + assert ( + environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] + == 0.72 + ) + + environment = set_up_policy_environment(2023) + + assert ( + environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 1 + ) diff --git a/src/_gettsim_tests/test_minijobgrenze.py b/src/_gettsim_tests/test_minijobgrenze.py index 19d373448a..8aead5a126 100644 --- a/src/_gettsim_tests/test_minijobgrenze.py +++ b/src/_gettsim_tests/test_minijobgrenze.py @@ -1,38 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -OVERRIDE_COLS = [] +test_data = load_policy_test_data("minijobgrenze") -data = load_policy_test_data("minijobgrenze") - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_groupings( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_minijobgrenze(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, + data_tree=test.input_tree, environment=environment, - targets=column, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_namespaces.py b/src/_gettsim_tests/test_namespaces.py index 26fe638945..a4b7ffe47d 100644 --- a/src/_gettsim_tests/test_namespaces.py +++ b/src/_gettsim_tests/test_namespaces.py @@ -38,15 +38,15 @@ def parameters(): def aggregation_tree(): return { "module1": { - "group_mean_bg": AggregateByGroupSpec( - source_col="f", + "group_mean_hh": AggregateByGroupSpec( + source="f", aggr="sum", ), }, "module2": { "p_id_aggregation_target": AggregateByPIDSpec( p_id_to_aggregate_by="groupings__some_foreign_keys", - source_col="g_hh", + source="g_hh", aggr="sum", ), }, @@ -65,7 +65,7 @@ def test_compute_taxes_and_transfers_with_tree( targets = { "module1": { "g_hh": None, - "group_mean_bg": None, + "group_mean_hh": None, }, "module2": { "g_hh": None, @@ -73,15 +73,23 @@ def test_compute_taxes_and_transfers_with_tree( }, } data = { - "groupings": { - "p_id": pd.Series([0, 1, 2]), - "hh_id": pd.Series([0, 0, 1]), + "p_id": pd.Series([0, 1, 2]), + "hh_id": pd.Series([0, 0, 1]), + "familie": { + "ehe_id": pd.Series([0, 1, 2]), + }, + "arbeitslosengeld_2": { "bg_id": pd.Series([0, 1, 2]), "eg_id": pd.Series([0, 1, 2]), - "ehe_id": pd.Series([0, 1, 2]), + "fg_id": pd.Series([0, 1, 2]), + }, + "wohngeld": { "wthh_id": pd.Series([0, 1, 2]), + }, + "einkommensteuer": { "sn_id": pd.Series([0, 1, 2]), - "fg_id": pd.Series([0, 1, 2]), + }, + "groupings": { "some_foreign_keys": pd.Series([2, 0, 1]), }, "module1": { diff --git a/src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml b/src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml index 6b8976ad95..5904c7fc05 100644 --- a/src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml +++ b/src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml @@ -1,5 +1,5 @@ --- -rentenwert: +sozialversicherung__rente__altersrente__rentenwert: description: de: Historische Rentenwerte alte und neue Bundesländer. statistik-rente.de/drv en: null diff --git a/src/_gettsim_tests/test_policy_environment.py b/src/_gettsim_tests/test_policy_environment.py index 27bf9d248e..d9fc59e528 100644 --- a/src/_gettsim_tests/test_policy_environment.py +++ b/src/_gettsim_tests/test_policy_environment.py @@ -1,14 +1,15 @@ """Some tests for the policy_environment module.""" +from __future__ import annotations + from datetime import date, timedelta -from typing import Any +from typing import TYPE_CHECKING, Any import optree import pandas as pd import pytest -from _gettsim.functions.policy_function import policy_function -from _gettsim.gettsim_typing import NestedFunctionDict +from _gettsim.function_types import GroupByFunction, group_by_function, policy_function from _gettsim.policy_environment import ( PolicyEnvironment, _fail_if_name_of_last_branch_element_not_leaf_name_of_function, @@ -18,6 +19,9 @@ ) from _gettsim_tests import TEST_DIR +if TYPE_CHECKING: + from _gettsim.typing import NestedFunctionDict + class TestPolicyEnvironment: def test_func_exists_in_tree(self): @@ -105,27 +109,26 @@ def test_access_different_date_jahresanfang(): assert params["foo_jahresanfang"] == 2020 -@pytest.mark.xfail(reason="Needs renamings PR.") @pytest.mark.parametrize( "tree, last_day, function_name_last_day, function_name_next_day", [ ( - {"zu_verst_eink": {"freibetraege": {"eink_st_altersfreib_y": None}}}, + {"einkommensteuer": {"abzüge": {"altersfreibetrag_y": None}}}, date(2004, 12, 31), - "eink_st_altersfreib_y_bis_2004", - "eink_st_altersfreib_y_ab_2005", + "altersfreibetrag_y_bis_2004", + "altersfreibetrag_y_ab_2005", ), ( - {"zu_verst_eink": {"freibetraege": {"alleinerz_freib_y_sn": None}}}, + {"einkommensteuer": {"abzüge": {"alleinerziehend_betrag_y": None}}}, date(2014, 12, 31), - "eink_st_alleinerz_freib_y_sn_pauschal", - "eink_st_alleinerz_freib_y_sn_nach_kinderzahl", + "alleinerziehend_betrag_y_pauschal", + "alleinerziehend_betrag_y_nach_kinderzahl", ), ( - {"zu_verst_eink": {"eink": {"sum_eink_y": None}}}, + {"einkommensteuer": {"gesamteinkommen_ohne_abzüge_y": None}}, date(2008, 12, 31), - "sum_eink_mit_kapital_eink_y", - "sum_eink_ohne_kapital_eink_y", + "gesamteinkommen_ohne_abzüge_mit_kapitaleinkünften_y", + "gesamteinkommen_ohne_abzüge_ohne_kapitaleinkünfte_y", ), ], ) @@ -155,3 +158,11 @@ def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( ): with pytest.raises(KeyError): _fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) + + +def test_dont_destroy_group_by_functions(): + functions_tree = { + "foo": group_by_function()(lambda: 1), + } + environment = PolicyEnvironment(functions_tree) + assert isinstance(environment.functions_tree["foo"], GroupByFunction) diff --git a/src/_gettsim_tests/test_policy_function.py b/src/_gettsim_tests/test_policy_function.py index 19d4fd9899..36b4ee426d 100644 --- a/src/_gettsim_tests/test_policy_function.py +++ b/src/_gettsim_tests/test_policy_function.py @@ -1,6 +1,6 @@ import pytest -from _gettsim.functions.policy_function import PolicyFunction, policy_function +from _gettsim.function_types import PolicyFunction, policy_function @policy_function() diff --git a/src/_gettsim_tests/test_rente_altersgrenzen.py b/src/_gettsim_tests/test_rente_altersgrenzen.py new file mode 100644 index 0000000000..ce9b6b3c60 --- /dev/null +++ b/src/_gettsim_tests/test_rente_altersgrenzen.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("rente_altersgrenzen") + + +@pytest.mark.parametrize("test", test_data) +def test_gesetzliche_rente(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_rente_anspruch.py b/src/_gettsim_tests/test_rente_anspruch.py new file mode 100644 index 0000000000..45db4bccd1 --- /dev/null +++ b/src/_gettsim_tests/test_rente_anspruch.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("rente_anspruch") + + +@pytest.mark.parametrize("test", test_data) +def test_altersrente_altersgrenzen(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_renten_anspr.py b/src/_gettsim_tests/test_renten_anspr.py deleted file mode 100644 index 15d132225e..0000000000 --- a/src/_gettsim_tests/test_renten_anspr.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Test the updating of Entgeltpunkte and the pension income based on Entgeltpunkte. - -These are "only" regression tests. - -""" - -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("renten_anspr") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_renten_anspr( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal(result[column], test_data.output_df[column], atol=1e-1, rtol=0) diff --git a/src/_gettsim_tests/test_rounding.py b/src/_gettsim_tests/test_rounding.py index 6188e60338..c19f3ff7a7 100644 --- a/src/_gettsim_tests/test_rounding.py +++ b/src/_gettsim_tests/test_rounding.py @@ -1,22 +1,22 @@ import datetime +import dags.tree as dt import pandas as pd import pytest import yaml -from optree import tree_flatten from pandas._testing import assert_series_equal from _gettsim.config import ( INTERNAL_PARAMS_GROUPS, RESOURCE_DIR, ) -from _gettsim.functions.loader import load_functions_tree_for_date -from _gettsim.functions.policy_function import policy_function +from _gettsim.function_types import policy_function from _gettsim.interface import ( - _add_rounding_to_function, + _add_rounding_to_functions, _apply_rounding_spec, compute_taxes_and_transfers, ) +from _gettsim.loader import load_functions_tree_for_date from _gettsim.policy_environment import PolicyEnvironment rounding_specs_and_exp_results = [ @@ -59,7 +59,7 @@ def test_func(): environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) compute_taxes_and_transfers( - data_tree={"groupings": {"p_id": pd.Series([1, 2])}}, + data_tree={"p_id": pd.Series([1, 2])}, environment=environment, targets_tree={"test_func": None}, ) @@ -96,7 +96,7 @@ def test_func(): environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) compute_taxes_and_transfers( - data_tree={"groupings": {"p_id": pd.Series([1, 2])}}, + data_tree={"p_id": pd.Series([1, 2])}, environment=environment, targets_tree={"test_func": None}, ) @@ -115,7 +115,7 @@ def test_func(income): return income data = { - "groupings": {"p_id": pd.Series([1, 2])}, + "p_id": pd.Series([1, 2]), "namespace": {"income": pd.Series(input_values)}, } rounding_specs = { @@ -158,7 +158,10 @@ def test_rounding_with_time_conversion(): def test_func_m(income): return income - data = {"groupings": {"p_id": pd.Series([1, 2])}, "income": pd.Series([1.2, 1.5])} + data = { + "p_id": pd.Series([1, 2]), + "income": pd.Series([1.2, 1.5]), + } rounding_specs = { "params_key_test": { "rounding": { @@ -195,7 +198,7 @@ def test_no_rounding( def test_func(income): return income - data = {"groupings": {"p_id": pd.Series([1, 2])}} + data = {"p_id": pd.Series([1, 2])} data["income"] = pd.Series(input_values_exp_output) rounding_specs = { "params_key_test": { @@ -241,7 +244,7 @@ def test_func(income): base=base, direction=direction, to_add_after_rounding=to_add_after_rounding if to_add_after_rounding else 0, - path=("test_func",), + name="test_func", )(test_func) assert_series_equal( @@ -274,9 +277,9 @@ def test_decorator_for_all_functions_with_rounding_spec(): # addressed. time_dependent_functions = {} for year in range(1990, 2023): - year_functions = tree_flatten( + year_functions = dt.flatten_to_tree_paths( load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) - )[0] + ).values() function_name_to_leaf_name_dict = { func.function.__name__: func.leaf_name for func in year_functions } @@ -329,6 +332,7 @@ def eink_st_func(arg_1: float) -> float: return arg_1 with pytest.raises(KeyError, match=match): - _add_rounding_to_function( - input_function=eink_st_func, params=params, path=("eink_st_func",) + _add_rounding_to_functions( + functions={"eink_st_func": eink_st_func}, + params=params, ) diff --git a/src/_gettsim_tests/test_shared.py b/src/_gettsim_tests/test_shared.py index e449bb2a4d..a14cd77e94 100644 --- a/src/_gettsim_tests/test_shared.py +++ b/src/_gettsim_tests/test_shared.py @@ -4,6 +4,7 @@ from _gettsim.shared import ( create_tree_from_path_and_value, + get_name_of_group_by_id, insert_path_and_value, merge_trees, partition_tree_by_reference_tree, @@ -72,6 +73,17 @@ def test_create_tree_from_path_and_value(paths, expected): assert create_tree_from_path_and_value(paths) == expected +@pytest.mark.parametrize( + "paths, value, expected", + [ + ((), {"a": None}, {"a": None}), + ((), {"a": 1}, {"a": 1}), + ], +) +def test_create_tree_from_path_and_value_if_path_is_empty(paths, value, expected): + assert create_tree_from_path_and_value(paths, value) == expected + + @pytest.mark.parametrize( "left, right, expected", [ @@ -174,3 +186,100 @@ def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, exp assert in_reference_tree == expected[0] assert not_in_reference_tree == expected[1] + + +@pytest.mark.parametrize( + "target_name, group_by_functions, expected", + [ + (("namespace1__foo"), {}, None), + (("namespace1__foo_hh"), {}, "hh_id"), + ( + ("namespace1__foo_hh"), + {"namespace1__hh_id": None}, + "hh_id", + ), + ( + ("namespace1__foo_bg"), + {"arbeitslosengeld_2__bg_id": None}, + "arbeitslosengeld_2__bg_id", + ), + ( + ("namespace1__foo_eg"), + {"grundsicherung__eg_id": None}, + "grundsicherung__eg_id", + ), + ( + ("namespace1__foo_eg"), + {"arbeitslosengeld_2__eg_id": None}, + "arbeitslosengeld_2__eg_id", + ), + ( + ("arbeitslosengeld_2__einkommen_eg"), + { + "arbeitslosengeld_2__eg_id": None, + "grundsicherung__eg_id": None, + }, + "arbeitslosengeld_2__eg_id", + ), + ], +) +def test_get_name_of_group_by_id(target_name, group_by_functions, expected): + assert ( + get_name_of_group_by_id( + target_name=target_name, + group_by_functions=group_by_functions, + ) + == expected + ) + + +@pytest.mark.parametrize( + "target_name, group_by_functions, expected_error_match", + [ + ( + ("outermost__foo_bg"), + { + "outermost__bg_id": None, + "outermost__nested__bg_id": None, + }, + ( + r"Group-by-identifier for target:[\s\S]+" + r"\('outermost', 'foo_bg'\)[\s\S]+is ambiguous[\s\S]+" + r"Found candidates[\s\S]+" + r"\('outermost', 'bg_id'\)[\s\S]+" + r"\('outermost', 'nested', 'bg_id'\)" + ), + ), + ( + ("outermost__foo_bg"), + { + "outermost__inner1__bg_id": None, + "outermost__inner2__bg_id": None, + }, + r"Group-by-identifier for target:[\s\S]+" + r"\('outermost', 'foo_bg'\)[\s\S]+is ambiguous[\s\S]+" + r"Found candidates[\s\S]+" + r"\('outermost', 'inner1', 'bg_id'\)[\s\S]+" + r"\('outermost', 'inner2', 'bg_id'\)", + ), + ( + ("new_transfer__einkommen_eg"), + { + "arbeitslosengeld_2__eg_id": None, + "grundsicherung__eg_id": None, + }, + r"Group-by-identifier for target:[\s\S]+" + r"\('new_transfer', 'einkommen_eg'\)[\s\S]+is ambiguous[\s\S]+" + r"Found candidates[\s\S]+" + r"\('arbeitslosengeld_2', 'eg_id'\)[\s\S]+" + r"\('grundsicherung', 'eg_id'\)", + ), + ], +) +def test_get_name_of_group_by_id_fails( + target_name, group_by_functions, expected_error_match +): + with pytest.raises(ValueError, match=expected_error_match): + get_name_of_group_by_id( + target_name=target_name, group_by_functions=group_by_functions + ) diff --git a/src/_gettsim_tests/test_soli_st.py b/src/_gettsim_tests/test_soli_st.py deleted file mode 100644 index 9c8290abe9..0000000000 --- a/src/_gettsim_tests/test_soli_st.py +++ /dev/null @@ -1,34 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("soli_st") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_soli_st( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-2, - rtol=0, - ) diff --git "a/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" "b/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" new file mode 100644 index 0000000000..7588dc6cd5 --- /dev/null +++ "b/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("solidaritätszuschlag") + + +@pytest.mark.parametrize("test", test_data) +def test_solidaritätszuschlag(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_sozialv_beitr.py b/src/_gettsim_tests/test_sozialv_beitr.py deleted file mode 100644 index 218b7f1f82..0000000000 --- a/src/_gettsim_tests/test_sozialv_beitr.py +++ /dev/null @@ -1,34 +0,0 @@ -import pandas as pd -import pytest - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("sozialv_beitr") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_sozialv_beitr( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - pd.testing.assert_series_equal( - result[column], - test_data.output_df[column], - check_exact=False, - atol=1e-1, - rtol=0, - ) diff --git "a/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" "b/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" new file mode 100644 index 0000000000..464a722603 --- /dev/null +++ "b/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("sozialversicherungsbeiträge") + + +@pytest.mark.parametrize("test", test_data) +def test_sozialversicherungsbeiträge(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py index 22be927052..97d5d1bee3 100644 --- a/src/_gettsim_tests/test_synthetic.py +++ b/src/_gettsim_tests/test_synthetic.py @@ -37,7 +37,11 @@ def synthetic_data_spec_variables(): n_children=1, specs_constant_over_households={ "basic_inputs__alter": [50, 30, 5], - "basic_inputs__bruttolohn_m": [1000, 2000, 0], + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + 1000, + 2000, + 0, + ], }, ) return df @@ -51,7 +55,7 @@ def synthetic_data_spec_heterogeneous_married(): adults_married=True, specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, specs_heterogeneous={ - "basic_inputs__bruttolohn_m": [ + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ [i / 2, i / 2, 0] for i in range(0, 1001, 100) ] }, @@ -67,7 +71,7 @@ def synthetic_data_spec_heterogeneous_not_married(): adults_married=False, specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, specs_heterogeneous={ - "basic_inputs__bruttolohn_m": [ + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ [i / 2, i / 2, 0] for i in range(0, 1001, 100) ] }, @@ -95,7 +99,7 @@ def synthetic_data_spec_heterogeneous_not_married(): ) def test_positive_rent(df, request): df = request.getfixturevalue(df) - assert df["basic_inputs__bruttokaltmiete_m_hh"].min() > 0 + assert df["basic_inputs__wohnen__bruttokaltmiete_m_hh"].min() > 0 @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -105,7 +109,7 @@ def test_positive_rent(df, request): ) def test_no_nans(df, request): df = request.getfixturevalue(df) - assert df["basic_inputs__bruttokaltmiete_m_hh"].notna().all().all() + assert df["basic_inputs__wohnen__bruttokaltmiete_m_hh"].notna().all().all() @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -115,7 +119,7 @@ def test_no_nans(df, request): ) def test_unique_p_id(df, request): df = request.getfixturevalue(df) - assert df["groupings__p_id"].is_unique + assert df["p_id"].is_unique @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -125,7 +129,7 @@ def test_unique_p_id(df, request): ) def test_constant_hh_id(df, request): df = request.getfixturevalue(df) - assert (df["groupings__hh_id"].max() == df["groupings__hh_id"]).all() + assert (df["hh_id"].max() == df["hh_id"]).all() @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -150,8 +154,12 @@ def test_alleinerziehend(synthetic_data_alleinerziehend): pd.Series([True, False], name="basic_inputs__alleinerz"), ) pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["basic_inputs__gemeinsam_veranlagt"], - pd.Series([False, False], name="basic_inputs__gemeinsam_veranlagt"), + synthetic_data_alleinerziehend[ + "basic_inputs__einkommensteuer__gemeinsam_veranlagt" + ], + pd.Series( + [False, False], name="basic_inputs__einkommensteuer__gemeinsam_veranlagt" + ), ) @@ -160,7 +168,10 @@ def test_alleinerziehend(synthetic_data_alleinerziehend): "col, expected", [ ("basic_inputs__alter", [50, 30, 5]), - ("basic_inputs__bruttolohn_m", [1000, 2000, 0]), + ( + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", + [1000, 2000, 0], + ), ], ) def test_specs_constant_over_households(col, expected, synthetic_data_spec_variables): @@ -175,10 +186,13 @@ def test_specs_constant_over_households(col, expected, synthetic_data_spec_varia [ ("basic_inputs__alter", [50, 30, 5] * 11), ( - "basic_inputs__bruttolohn_m", + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", numpy.concatenate([[i / 2, i / 2, 0] for i in range(0, 1001, 100)]), ), - ("basic_inputs__gemeinsam_veranlagt", [True, True, False] * 11), + ( + "basic_inputs__einkommensteuer__gemeinsam_veranlagt", + [True, True, False] * 11, + ), ], ) def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_married): @@ -195,14 +209,22 @@ def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_ma (0, 2, None, None, pytest.raises(ValueError, match="'n_adults' must be")), (3, 2, None, None, pytest.raises(ValueError, match="'n_adults' must be")), (2, 11, None, None, pytest.raises(ValueError, match="'n_children' must be")), - (2, 0, {"alter": [30]}, None, pytest.raises(ValueError, match="Length of")), + ( + 2, + 0, + {"alter": [30]}, + None, + pytest.raises(ValueError, match="Length of"), + ), ( 2, 0, None, { "basic_inputs__alter": [[30, 20], [40, 30]], - "basic_inputs__bruttolohn_m": [[300, 200]], + "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + [300, 200] + ], }, pytest.raises(ValueError, match="Length of"), ), @@ -231,25 +253,25 @@ def test_fail_if_functions_and_columns_overlap( ( "synthetic_data_spec_heterogeneous_not_married", { - "groupings__p_id": list(range(33)), - "groupings__p_id_elternteil_1": [ + "p_id": list(range(33)), + "familie__p_id_elternteil_1": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_elternteil_2": [ + "familie__p_id_elternteil_2": [ -1 if i % 3 != 2 else i - 1 for i in range(33) ], - "groupings__p_id_kindergeld_empf": [ + "kindergeld__p_id_empfänger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_erziehgeld_empf": [ + "erziehungsgeld__p_id_empfänger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_ehepartner": [-1 for i in range(33)], - "groupings__p_id_einstandspartner": [ + "familie__p_id_ehepartner": [-1 for i in range(33)], + "arbeitslosengeld_2__p_id_einstandspartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "groupings__p_id_betreuungsk_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -257,28 +279,28 @@ def test_fail_if_functions_and_columns_overlap( ( "synthetic_data_spec_heterogeneous_married", { - "groupings__p_id": list(range(33)), - "groupings__p_id_elternteil_1": [ + "p_id": list(range(33)), + "familie__p_id_elternteil_1": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_elternteil_2": [ + "familie__p_id_elternteil_2": [ -1 if i % 3 != 2 else i - 1 for i in range(33) ], - "groupings__p_id_kindergeld_empf": [ + "kindergeld__p_id_empfänger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_erziehgeld_empf": [ + "erziehungsgeld__p_id_empfänger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], - "groupings__p_id_ehepartner": [ + "familie__p_id_ehepartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "groupings__p_id_einstandspartner": [ + "arbeitslosengeld_2__p_id_einstandspartner": [ i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "groupings__p_id_betreuungsk_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -286,27 +308,33 @@ def test_fail_if_functions_and_columns_overlap( ( "synthetic_data_alleinerziehend", { - "groupings__p_id": [0, 1], - "groupings__p_id_elternteil_1": [-1, 0], - "groupings__p_id_elternteil_2": [-1, -1], - "groupings__p_id_kindergeld_empf": [-1, 0], - "groupings__p_id_erziehgeld_empf": [-1, 0], - "groupings__p_id_ehepartner": [-1, -1], - "groupings__p_id_einstandspartner": [-1, -1], - "groupings__p_id_betreuungsk_träger": [-1, 0], + "p_id": [0, 1], + "familie__p_id_elternteil_1": [-1, 0], + "familie__p_id_elternteil_2": [-1, -1], + "kindergeld__p_id_empfänger": [-1, 0], + "erziehungsgeld__p_id_empfänger": [-1, 0], + "familie__p_id_ehepartner": [-1, -1], + "arbeitslosengeld_2__p_id_einstandspartner": [-1, -1], + "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + -1, + 0, + ], }, ), ( "synthetic_data_no_children", { - "groupings__p_id": [0, 1], - "groupings__p_id_elternteil_1": [-1, -1], - "groupings__p_id_elternteil_2": [-1, -1], - "groupings__p_id_kindergeld_empf": [-1, -1], - "groupings__p_id_erziehgeld_empf": [-1, -1], - "groupings__p_id_ehepartner": [1, 0], - "groupings__p_id_einstandspartner": [1, 0], - "groupings__p_id_betreuungsk_träger": [-1, -1], + "p_id": [0, 1], + "familie__p_id_elternteil_1": [-1, -1], + "familie__p_id_elternteil_2": [-1, -1], + "kindergeld__p_id_empfänger": [-1, -1], + "erziehungsgeld__p_id_empfänger": [-1, -1], + "familie__p_id_ehepartner": [1, 0], + "arbeitslosengeld_2__p_id_einstandspartner": [1, 0], + "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + -1, + -1, + ], }, ), ], diff --git a/src/_gettsim_tests/test_time_conversion.py b/src/_gettsim_tests/test_time_conversion.py index ffa26436d9..3149e959d5 100644 --- a/src/_gettsim_tests/test_time_conversion.py +++ b/src/_gettsim_tests/test_time_conversion.py @@ -1,9 +1,8 @@ import inspect import pytest -from optree import tree_paths -from _gettsim.functions.policy_function import policy_function +from _gettsim.function_types import policy_function from _gettsim.time_conversion import ( _create_function_for_time_unit, create_time_conversion_functions, @@ -226,67 +225,6 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri assert "test_d" in time_conversion_functions - @pytest.mark.parametrize( - "functions_tree, expected", - [ - ( - { - "module1": { - "function1_y": policy_function(leaf_name="function1_y")( - lambda: 1 - ) - } - }, - { - "module1": { - "function1_m": policy_function(leaf_name="function1_m")( - lambda: 1 - ), - "function1_w": policy_function(leaf_name="function1_w")( - lambda: 1 - ), - "function1_d": policy_function(leaf_name="function1_d")( - lambda: 1 - ), - }, - }, - ), - ( - { - "module1": { - "module2": { - "function1_y_hh": policy_function( - leaf_name="function1_y_hh" - )(lambda: 1) - } - } - }, - { - "module1": { - "module2": { - "function1_m_hh": policy_function( - leaf_name="function1_m_hh" - )(lambda: 1), - "function1_w_hh": policy_function( - leaf_name="function1_w_hh" - )(lambda: 1), - "function1_d_hh": policy_function( - leaf_name="function1_d_hh" - )(lambda: 1), - }, - }, - }, - ), - ], - ) - def test_should_return_nested_dict(self, functions_tree, expected) -> None: - time_conversion_functions = create_time_conversion_functions(functions_tree, {}) - - expected_path = tree_paths(expected) - result_path = tree_paths(time_conversion_functions) - - assert expected_path == result_path - class TestCreateFunctionForTimeUnit: def test_should_rename_parameter(self): diff --git a/src/_gettsim_tests/test_unterhalt.py b/src/_gettsim_tests/test_unterhalt.py index e57311d921..9cd81cef84 100644 --- a/src/_gettsim_tests/test_unterhalt.py +++ b/src/_gettsim_tests/test_unterhalt.py @@ -1,30 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("unterhalt") +test_data = load_policy_test_data("unterhalt") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_unterhalt( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_unterhalt(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=0, rtol=0 - ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_unterhaltsvors.py b/src/_gettsim_tests/test_unterhaltsvors.py deleted file mode 100644 index 5eb3ecaa32..0000000000 --- a/src/_gettsim_tests/test_unterhaltsvors.py +++ /dev/null @@ -1,30 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("unterhaltsvors") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_unterhaltsvors( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=0, rtol=0 - ) diff --git a/src/_gettsim_tests/test_unterhaltsvorschuss.py b/src/_gettsim_tests/test_unterhaltsvorschuss.py new file mode 100644 index 0000000000..7284f3557b --- /dev/null +++ b/src/_gettsim_tests/test_unterhaltsvorschuss.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("unterhaltsvorschuss") + + +@pytest.mark.parametrize("test", test_data) +def test_unterhaltsvorschuss(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_vectorization.py b/src/_gettsim_tests/test_vectorization.py index d545c493f2..579dd9b1bb 100644 --- a/src/_gettsim_tests/test_vectorization.py +++ b/src/_gettsim_tests/test_vectorization.py @@ -2,9 +2,9 @@ import inspect import string +import dags.tree as dt import numpy import pytest -from optree import tree_flatten from _gettsim.config import USE_JAX @@ -12,12 +12,8 @@ import jax.numpy from numpy.testing import assert_array_equal -from _gettsim.functions.loader import load_functions_tree_for_date -from _gettsim.transfers.elterngeld import ( - elterngeld_anspruchsbedingungen_erfüllt, # noqa: PLC2403 - elterngeld_geschwisterbonus_m, -) -from _gettsim.transfers.grundrente import grundr_bew_zeiten_avg_entgeltp +from _gettsim.function_types import GroupByFunction +from _gettsim.loader import load_functions_tree_for_date from _gettsim.vectorization import ( TranslateToVectorizableError, make_vectorizable, @@ -369,15 +365,18 @@ def test_unallowed_operation_wrapper(func): # ====================================================================================== +# TODO(@MImmesberger): Remove isinstance check once GroupByFunctions are JAX-compatible. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 for year in range(1990, 2023): @pytest.mark.parametrize( "func", [ pf.function - for pf in tree_flatten( + for pf in dt.flatten_to_tree_paths( load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) - )[0] + ).values() + if not isinstance(pf, GroupByFunction) ], ) @pytest.mark.parametrize("backend", backends) @@ -390,22 +389,37 @@ def test_convertible(func, backend): # ====================================================================================== +def mock__elterngeld__geschwisterbonus_m( + basisbetrag_m: float, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: bool, + elterngeld_params: dict, +) -> float: + if geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + out = max( + elterngeld_params["geschwisterbonus_aufschlag"] * basisbetrag_m, + elterngeld_params["geschwisterbonus_minimum"], + ) + else: + out = 0.0 + return out + + @pytest.mark.parametrize("backend", backends) -def test_transfers__elterngeld__elterngeld_geschwisterbonus_m(backend): +def test_geschwisterbonus_m(backend): full = modules.get(backend).full # Test original gettsim function on scalar input # ================================================================================== - elterngeld_basisbetrag_m = 3.0 - geschwisterbonus_anspruchsberechtigt_fg = True + basisbetrag_m = 3.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = True elterngeld_params = { "geschwisterbonus_aufschlag": 1.0, "geschwisterbonus_minimum": 2.0, } - exp = elterngeld_geschwisterbonus_m( - elterngeld_basisbetrag_m=elterngeld_basisbetrag_m, - geschwisterbonus_anspruchsberechtigt_fg=geschwisterbonus_anspruchsberechtigt_fg, + exp = mock__elterngeld__geschwisterbonus_m( + basisbetrag_m=basisbetrag_m, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, elterngeld_params=elterngeld_params, ) assert exp == 3.0 @@ -413,78 +427,67 @@ def test_transfers__elterngeld__elterngeld_geschwisterbonus_m(backend): # Create array inputs and assert that gettsim functions raises error # ================================================================================== shape = (10, 2) - elterngeld_basisbetrag_m = full(shape, elterngeld_basisbetrag_m) - geschwisterbonus_anspruchsberechtigt_fg = full( - shape, geschwisterbonus_anspruchsberechtigt_fg + basisbetrag_m = full(shape, basisbetrag_m) + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = full( + shape, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg ) with pytest.raises(ValueError, match="truth value of an array with more than"): - elterngeld_geschwisterbonus_m( - elterngeld_basisbetrag_m=elterngeld_basisbetrag_m, - geschwisterbonus_anspruchsberechtigt_fg=geschwisterbonus_anspruchsberechtigt_fg, + mock__elterngeld__geschwisterbonus_m( + basisbetrag_m=basisbetrag_m, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, elterngeld_params=elterngeld_params, ) # Call converted function on array input and test result # ================================================================================== - converted = make_vectorizable(elterngeld_geschwisterbonus_m, backend=backend) + converted = make_vectorizable(mock__elterngeld__geschwisterbonus_m, backend=backend) got = converted( - elterngeld_basisbetrag_m=elterngeld_basisbetrag_m, - geschwisterbonus_anspruchsberechtigt_fg=geschwisterbonus_anspruchsberechtigt_fg, + basisbetrag_m=basisbetrag_m, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, elterngeld_params=elterngeld_params, ) assert_array_equal(got, full(shape, exp)) -@pytest.mark.parametrize("backend", backends) -def test_transfers__grundrente__grundr_bew_zeiten_avg_entgeltp(backend): - full = modules.get(backend).full - - # Test original gettsim function on scalar input - # ================================================================================== - grundr_entgeltp = 1.0 - grundr_bew_zeiten = 2 - - exp = grundr_bew_zeiten_avg_entgeltp(grundr_entgeltp, grundr_bew_zeiten) - assert exp == 0.5 - - # Create array inputs and assert that gettsim functions raises error - # ================================================================================== - shape = (10, 2) - grundr_entgeltp = full(shape, grundr_entgeltp) - grundr_bew_zeiten = full(shape, grundr_bew_zeiten) - - with pytest.raises(ValueError, match="truth value of an array with more than"): - grundr_bew_zeiten_avg_entgeltp(grundr_entgeltp, grundr_bew_zeiten) - - # Call converted function on array input and test result - # ================================================================================== - converted = make_vectorizable(grundr_bew_zeiten_avg_entgeltp, backend=backend) - got = converted(grundr_entgeltp, grundr_bew_zeiten) - assert_array_equal(got, full(shape, exp)) +def mock__elterngeld__grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 + claimed: bool, + arbeitsstunden_w: float, + kind_grundsätzlich_anspruchsberechtigt_fg: bool, + einkommen_vorjahr_unter_bezugsgrenze: bool, + bezugsmonate_unter_grenze_fg: bool, + elterngeld_params: dict, +) -> bool: + return ( + claimed + and arbeitsstunden_w <= elterngeld_params["max_arbeitsstunden_w"] + and einkommen_vorjahr_unter_bezugsgrenze + and kind_grundsätzlich_anspruchsberechtigt_fg + and bezugsmonate_unter_grenze_fg + ) @pytest.mark.parametrize("backend", backends) -def test_transfers__elterngeld_anspruchsbedingungen_erfüllt(backend): +def test_grundsätzlich_anspruchsberechtigt(backend): full = modules.get(backend).full # Test original gettsim function on scalar input # ================================================================================== - elterngeld_claimed = True + claimed = True arbeitsstunden_w = 20.0 - kind_anspruchsberechtigt_fg = True - vorjahr_einkommen_unter_bezugsgrenze = True - monate_elterngeldbezug_unter_grenze_fg = True + kind_grundsätzlich_anspruchsberechtigt_fg = True + einkommen_vorjahr_unter_bezugsgrenze = True + bezugsmonate_unter_grenze_fg = True elterngeld_params = { "max_arbeitsstunden_w": 31.0, } - exp = elterngeld_anspruchsbedingungen_erfüllt( - elterngeld_claimed=elterngeld_claimed, + exp = mock__elterngeld__grundsätzlich_anspruchsberechtigt( + claimed=claimed, arbeitsstunden_w=arbeitsstunden_w, - kind_anspruchsberechtigt_fg=kind_anspruchsberechtigt_fg, - vorjahr_einkommen_unter_bezugsgrenze=vorjahr_einkommen_unter_bezugsgrenze, - monate_elterngeldbezug_unter_grenze_fg=monate_elterngeldbezug_unter_grenze_fg, + kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, + einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, + bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, elterngeld_params=elterngeld_params, ) @@ -496,26 +499,26 @@ def test_transfers__elterngeld_anspruchsbedingungen_erfüllt(backend): arbeitsstunden_w = full(shape, arbeitsstunden_w) with pytest.raises(ValueError, match="truth value of an array with more than"): - exp = elterngeld_anspruchsbedingungen_erfüllt( + mock__elterngeld__grundsätzlich_anspruchsberechtigt( arbeitsstunden_w=arbeitsstunden_w, - elterngeld_claimed=elterngeld_claimed, - kind_anspruchsberechtigt_fg=kind_anspruchsberechtigt_fg, - vorjahr_einkommen_unter_bezugsgrenze=vorjahr_einkommen_unter_bezugsgrenze, - monate_elterngeldbezug_unter_grenze_fg=monate_elterngeldbezug_unter_grenze_fg, + claimed=claimed, + kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, + einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, + bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, elterngeld_params=elterngeld_params, ) # Call converted function on array input and test result # ================================================================================== converted = make_vectorizable( - elterngeld_anspruchsbedingungen_erfüllt, backend=backend + mock__elterngeld__grundsätzlich_anspruchsberechtigt, backend=backend ) got = converted( - elterngeld_claimed=elterngeld_claimed, + claimed=claimed, arbeitsstunden_w=arbeitsstunden_w, - kind_anspruchsberechtigt_fg=kind_anspruchsberechtigt_fg, - vorjahr_einkommen_unter_bezugsgrenze=vorjahr_einkommen_unter_bezugsgrenze, - monate_elterngeldbezug_unter_grenze_fg=monate_elterngeldbezug_unter_grenze_fg, + kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, + einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, + bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, elterngeld_params=elterngeld_params, ) assert_array_equal(got, full(shape, exp)) diff --git a/src/_gettsim_tests/test_visualizations.py b/src/_gettsim_tests/test_visualizations.py index f306673bf4..0cf1c1d252 100644 --- a/src/_gettsim_tests/test_visualizations.py +++ b/src/_gettsim_tests/test_visualizations.py @@ -119,7 +119,10 @@ def test_select_nodes_in_dag(n_nodes, selectors, expected): @pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_plot_dag(): """Make sure that minimal example doesn't produce an error.""" - plot_dag(environment=environment, targets=["erwachsene_alle_rentner_hh"]) + plot_dag( + environment=environment, + targets=["erwachsene_alle_rentenbezieher_hh"], + ) @pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") @@ -128,14 +131,15 @@ def test_should_fail_if_target_is_missing(): ValueError, match="The following targets have no corresponding function" ): plot_dag( - environment=PolicyEnvironment({}), targets=["erwachsene_alle_rentner_hh"] + environment=PolicyEnvironment({}), + targets=["erwachsene_alle_rentenbezieher_hh"], ) @pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") def test_one_dot_plot_dag(): """Make sure that the one dot graph example doesn't produce an error.""" - selectors = "kapitaleink_brutto_y_sn" + selectors = "einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn" plot_dag(environment=environment, selectors=selectors) @@ -143,7 +147,10 @@ def test_one_dot_plot_dag(): def test_10_dots_plot_dag(): """Make sure that when No.of nodes is larger than 10 or show_labels is false, the graph example doesn't produce an error and hover information works properly.""" - selector = {"type": "descendants", "node": "geringfügig_beschäftigt"} + selector = { + "type": "descendants", + "node": "sozialversicherung__geringfügig_beschäftigt", + } plot_dag(environment=environment, selectors=selector, orientation="h") @@ -153,7 +160,12 @@ def test_horizontal_plot_dag(): produce an error.""" plot_dag( environment=environment, - selectors=[{"node": "zu_verst_kapitaleink_y_sn", "type": "neighbors"}], + selectors=[ + { + "node": "einkommensteuer__abgeltungssteuer__zu_versteuernde_kapitaleinkünfte_y_sn", # noqa: E501 + "type": "neighbors", + } + ], orientation="h", ) @@ -164,7 +176,12 @@ def test_hover_source_code_plot_dag(): produce an error and works properly.""" plot_dag( environment=environment, - selectors=[{"node": "zu_verst_kapitaleink_y_sn", "type": "neighbors"}], + selectors=[ + { + "node": "einkommensteuer__abgeltungssteuer__zu_versteuernde_kapitaleinkünfte_y_sn", # noqa: E501 + "type": "neighbors", + } + ], orientation="h", hover_source_code=True, ) diff --git "a/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" "b/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" new file mode 100644 index 0000000000..f255afcd09 --- /dev/null +++ "b/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("vorrangprüfungen") + + +@pytest.mark.parametrize("test", test_data) +def test_vorrangprüfungen(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_vorsorgeaufw.py b/src/_gettsim_tests/test_vorsorgeaufw.py deleted file mode 100644 index 11fcf3b72e..0000000000 --- a/src/_gettsim_tests/test_vorsorgeaufw.py +++ /dev/null @@ -1,30 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("vorsorgeaufw") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_vorsorgeaufw( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], test_data.output_df[column], atol=1, rtol=0, check_dtype=False - ) diff --git a/src/_gettsim_tests/test_vorsorgeaufwand.py b/src/_gettsim_tests/test_vorsorgeaufwand.py new file mode 100644 index 0000000000..47afab1d67 --- /dev/null +++ b/src/_gettsim_tests/test_vorsorgeaufwand.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("vorsorgeaufwand") + + +@pytest.mark.parametrize("test", test_data) +def test_vorsorgeaufwand(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=0) diff --git a/src/_gettsim_tests/test_wohngeld.py b/src/_gettsim_tests/test_wohngeld.py index 37e21b7d40..af639308c7 100644 --- a/src/_gettsim_tests/test_wohngeld.py +++ b/src/_gettsim_tests/test_wohngeld.py @@ -1,30 +1,28 @@ +import dags.tree as dt import pytest -from pandas.testing import assert_series_equal +from numpy.testing import assert_array_almost_equal from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -data = load_policy_test_data("wohngeld") +test_data = load_policy_test_data("wohngeld") -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_wohngeld( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) +@pytest.mark.parametrize("test", test_data) +def test_wohngeld(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ).round(2) - - assert_series_equal( - result[column], test_data.output_df[column], check_dtype=False, atol=0, rtol=0 + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_zu_verst_eink.py b/src/_gettsim_tests/test_zu_verst_eink.py deleted file mode 100644 index 164de72a10..0000000000 --- a/src/_gettsim_tests/test_zu_verst_eink.py +++ /dev/null @@ -1,43 +0,0 @@ -import pytest -from pandas.testing import assert_series_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTestData, load_policy_test_data - -data = load_policy_test_data("zu_verst_eink") - - -@pytest.mark.xfail(reason="Needs renamings PR.") -@pytest.mark.parametrize( - ("test_data", "column"), - data.parametrize_args, - ids=str, -) -def test_zu_verst_eink( - test_data: PolicyTestData, - column: str, -): - df = test_data.input_df - environment = cached_set_up_policy_environment(date=test_data.date) - - result = compute_taxes_and_transfers( - data=df, environment=environment, targets=column - ) - - assert_series_equal( - result[column], - test_data.output_df[column], - check_dtype=False, - atol=1e-1, - rtol=0, - ) - - -def sum_test_data_sn(column, year_data): - return ( - year_data[column] - .groupby(year_data["sn_id"]) - .transform("sum") - .rename(column + "_sn") - ) diff --git a/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py b/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py new file mode 100644 index 0000000000..f4e2c5cc4e --- /dev/null +++ b/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py @@ -0,0 +1,28 @@ +import dags.tree as dt +import pytest +from numpy.testing import assert_array_almost_equal + +from _gettsim.interface import compute_taxes_and_transfers +from _gettsim_tests._helpers import cached_set_up_policy_environment +from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data + +test_data = load_policy_test_data("zu_versteuerndes_einkommen") + + +@pytest.mark.parametrize("test", test_data) +def test_zu_versteuerndes_einkommen(test: PolicyTest): + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + for result, expected in zip( + flat_result.values(), flat_expected_output_tree.values() + ): + assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 0319698286..09c66c00f2 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -19,14 +19,14 @@ from _gettsim import ( aggregation, config, - gettsim_typing, piecewise_functions, shared, taxes, transfers, + typing, visualization, ) -from _gettsim.functions.policy_function import PolicyFunction +from _gettsim.function_types import PolicyFunction from _gettsim.interface import ( FunctionsAndColumnsOverlapWarning, compute_taxes_and_transfers, @@ -72,6 +72,6 @@ def test(*args): "create_synthetic_data", "taxes", "transfers", - "gettsim_typing", + "typing", "visualization", ] From 1b6bdf649b447a6b84d13b9bc20433efc5a6a024 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Mon, 24 Mar 2025 14:35:11 +0100 Subject: [PATCH 008/109] Incorporate dags release. Update authors, add maintainers. --- pixi.lock | 592 +++++++++++++++++++++++++++++++++---------------- pyproject.toml | 20 +- 2 files changed, 418 insertions(+), 194 deletions(-) diff --git a/pixi.lock b/pixi.lock index 4a98ab20ff..f51276aece 100644 --- a/pixi.lock +++ b/pixi.lock @@ -160,7 +160,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -266,13 +265,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -413,7 +412,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda @@ -503,13 +501,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -650,7 +648,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -740,13 +737,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -881,7 +878,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda @@ -984,14 +980,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py311: channels: @@ -1153,7 +1149,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py311hd18a35c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda @@ -1259,13 +1254,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/c0/f08836fde5bd223029ff38ae878b8017ee7468e25df7c70ab042ba723936/optree-0.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -1406,7 +1401,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py311h4e34fa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda @@ -1496,13 +1490,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/51/7e26de583120a1cdded7a705fe09b4507752ab189132a95917bdd6ffd42f/optree-0.14.1-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -1643,7 +1637,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py311h210dab8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda @@ -1733,13 +1726,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/e8/f4d63cf25f1b46d9fc9b005aff28e613b2cf347e6bf41110cc4b77a98a00/optree-0.14.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -1874,7 +1867,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py311h3257749_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda @@ -1977,14 +1969,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/e6/364a2f4ba171ddc1dfa2df99ae22ac096cf2a138b6cbda0f991873ad863b/optree-0.14.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py312: channels: @@ -2146,7 +2138,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -2252,13 +2243,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -2399,7 +2390,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda @@ -2489,13 +2479,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -2636,7 +2626,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -2726,13 +2715,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -2867,7 +2856,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda @@ -2970,14 +2958,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . py312-jax: channels: @@ -3148,7 +3136,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -3256,13 +3243,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -3412,7 +3399,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda @@ -3504,13 +3490,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -3660,7 +3646,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -3752,13 +3737,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -3893,7 +3878,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda @@ -3996,7 +3980,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/6f/0da6e0bc90e738fc63c584d65bef326f76a6550343ae1c243647bd1880fd/jax-0.5.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b8/3b/68981550dc34b86deb8e50b8cb14fd8bd620876276cfce2218ef7f11be90/jaxlib-0.5.1-cp312-cp312-win_amd64.whl @@ -4004,11 +3988,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - pypi: . packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -5083,13 +5067,13 @@ packages: purls: [] size: 45728 timestamp: 1741128060593 -- pypi: git+https://github.com/OpenSourceEconomics/dags?rev=00d92a9a080f8a9df5d567ffba2f99604e896b2d#00d92a9a080f8a9df5d567ffba2f99604e896b2d +- pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl name: dags - version: 0.2.4.dev16+g00d92a9 + version: 0.3.0 + sha256: d47025019bf72d4261c9df6f73d3402568feaafba2d44a17206b74dfc0e7e8bb requires_dist: - flatten-dict - networkx - - types-networkx requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 @@ -5626,10 +5610,11 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev328+g5efedc19 - sha256: bc465d41282649a15c4e694bc23d8d1b8dd9408e10dd6f61b26efbc16b155913 + version: 0.7.1.dev95+gdab7a666.d20250324 + sha256: a7011fdf814d71b26b7d6f474b87555abd82e2e1e1575b07b0215dadba45b997 requires_dist: - astor + - dags>=0.3.0 - ipywidgets - networkx - numpy @@ -9441,132 +9426,374 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62479 timestamp: 1733688053334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py311hd18a35c_1.conda - sha256: 108576661023d94e2afdf1f35a7db3ffff0914b61a70d53e6a62f1984e1c88ad - md5: 136e1edaedabc60d75cab9ad3aeec462 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 382304 - timestamp: 1741963965104 -- conda: https://conda.anaconda.org/conda-forge/linux-64/optree-0.14.1-py312h68727a3_1.conda - sha256: 0216b69ce7df9f9c08a13ec72a2c4dce4c4209bab930bf66d6ec3c938f8db897 - md5: 4ed63830e154792e3226f1b20154bf4b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 375340 - timestamp: 1741964030223 -- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py311h4e34fa0_1.conda - sha256: da55a60763217b9cfab9956fccbc84d3c0a965c6112eba590615adff1f4cbd22 - md5: 70ca6ee4aa911d396331e3f8ed71b36e - depends: - - __osx >=10.13 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 359336 - timestamp: 1741964083462 -- conda: https://conda.anaconda.org/conda-forge/osx-64/optree-0.14.1-py312hc47a885_1.conda - sha256: b1926ae8477dfb66051e029c1a1ed665b596c37b0cffc60a5ccec8ad154b370d - md5: 935c337cb6dff0f57b7984186fc2d265 - depends: - - __osx >=10.13 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 360644 - timestamp: 1741964258663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py311h210dab8_1.conda - sha256: da4f0ac733ebf0777ed9f3a889bdf0401618f12ea3472db3ec10d639b22b448b - md5: dd8df33acee102c1bf2e8b22e02b60b8 - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 342512 - timestamp: 1741964152064 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/optree-0.14.1-py312hb23fbb9_1.conda - sha256: 3340523b40338fc7090ecebd8b43e8df1faacb52c3ff172b7384156bce79cf93 - md5: 796665195ab1cebbfee8b1dbc950d1b3 - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.5 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 343510 - timestamp: 1741964219203 -- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py311h3257749_1.conda - sha256: 043d51cd0f87815e814a8c493b8dcd20aaadaa47276ac326bbf4c071006249fc - md5: 33cc0287a7dad4bdf37b3470e43e9956 - depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing-extensions >=4.5 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 303166 - timestamp: 1741964404287 -- conda: https://conda.anaconda.org/conda-forge/win-64/optree-0.14.1-py312hd5eb7cc_1.conda - sha256: 5f41c3d43a00f9bbab03d8036ce726237e4c198c9d5c2e5c7bf7721f46574780 - md5: 4209f22201a94da479b9c4d33a5580af - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.5 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/optree?source=hash-mapping - size: 302061 - timestamp: 1741964395630 +- pypi: https://files.pythonhosted.org/packages/03/e6/364a2f4ba171ddc1dfa2df99ae22ac096cf2a138b6cbda0f991873ad863b/optree-0.14.1-cp311-cp311-win_amd64.whl + name: optree + version: 0.14.1 + sha256: f8d30a910abf44b42be40d54acddacb7750085e3499438f6b0e1811da0c7d6b2 + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/0a/c0/f08836fde5bd223029ff38ae878b8017ee7468e25df7c70ab042ba723936/optree-0.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: optree + version: 0.14.1 + sha256: 34a4b35334e8323d4bd4d82a85440df3146be771fb91b9eaa599d23a791b8b5f + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/31/51/7e26de583120a1cdded7a705fe09b4507752ab189132a95917bdd6ffd42f/optree-0.14.1-cp311-cp311-macosx_10_9_universal2.whl + name: optree + version: 0.14.1 + sha256: 904d6a0a8527e9b99f789e6beb9e70976ca0c9fa2afc140c293feebe435e3a0c + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl + name: optree + version: 0.14.1 + sha256: cce91c10c51a1ab3cc2311deebb33bc9e52de832b0cfeca80c82f82b95d55eda + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl + name: optree + version: 0.14.1 + sha256: 98f858daa588ccb70bb554087e87d4192852a11416e5b14f3ee70ae1861b92b0 + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl + name: optree + version: 0.14.1 + sha256: 6fd1e3cb4c04c83fd3ab8ed6729a13388f2c055c6a0b16624c76e7c0d86a8dae + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: optree + version: 0.14.1 + sha256: 5121b0418c4360dcbccbf2de346507008cf2264880aa13dace88c481ad576af7 + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/eb/e8/f4d63cf25f1b46d9fc9b005aff28e613b2cf347e6bf41110cc4b77a98a00/optree-0.14.1-cp311-cp311-macosx_11_0_arm64.whl + name: optree + version: 0.14.1 + sha256: 592858203b2c50b0816cbae056d8295ffad7c16ad95ccc221b881c794ef4519b + requires_dist: + - typing-extensions>=4.5.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - flake8 ; extra == 'lint' + - flake8-bugbear ; extra == 'lint' + - flake8-comprehensions ; extra == 'lint' + - flake8-docstrings ; extra == 'lint' + - flake8-pyi ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - doc8 ; extra == 'lint' + - pydocstyle ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -12108,13 +12335,6 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110051 timestamp: 1733367480074 -- pypi: https://files.pythonhosted.org/packages/8a/b6/784349d2a4e067e18a3080051882df1b6306f6a90d8eb23866cab9e1b0dd/types_networkx-3.4.2.20250312-py3-none-any.whl - name: types-networkx - version: 3.4.2.20250312 - sha256: 3d2a61fc4c57d8a2032607b60c13ee4a7dd9cc5750667ecc882dbba2d57dbdfd - requires_dist: - - numpy>=1.20 - requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 diff --git a/pyproject.toml b/pyproject.toml index 8d4c5d097d..c03fbd64f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,13 +6,19 @@ # Basic information name = "gettsim" dynamic = ["version"] -# About the project -authors = [ - { name = "The GETTSIM team", email = "gaudecker@iza.org" }, -] description = "The German Taxes and Transfers SIMulator" readme = { file = "README.md", content-type = "text/markdown" } license = { file = "LICENSE" } +# About the project +authors = [ + { name = "Hans-Martin von Gaudecker", email = "hmgaudecker@uni-bonn.de" }, + { name = "Marvin Immesberger" }, + { name = "Christian Zimpelmann" } +] +maintainers = [ + { name = "Hans-Martin von Gaudecker", email = "hmgaudecker@uni-bonn.de" }, + { name = "Marvin Immesberger" } +] keywords = [ "Economics", "Taxes", @@ -36,7 +42,7 @@ classifiers = [ requires-python = ">=3.11" dependencies = [ "astor", - #"dags", + "dags>=0.3.0", "ipywidgets", "networkx", "numpy", @@ -51,6 +57,7 @@ dependencies = [ "pyyaml", ] + [project.urls] Repository = "https://github.com/iza-institute-of-labor-economics/gettsim" Changelog = "https://gettsim.readthedocs.io/en/stable/changes.html" @@ -108,7 +115,6 @@ ipywidgets = "*" jupyterlab = "*" networkx = "*" # Remove once dags is a proper dependency plotly = ">=5.24,<6" -optree = "*" pygments = "*" pygraphviz = "*" pyyaml = "*" @@ -126,8 +132,6 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} pdbp = "*" -dags = {git = "https://github.com/OpenSourceEconomics/dags", rev="00d92a9a080f8a9df5d567ffba2f99604e896b2d"} - [tool.pixi.target.unix.pypi-dependencies] kaleido = "*" From 23995318d08f8db9c1ff32ffbc4ebe737a4d79b4 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:06:23 +0200 Subject: [PATCH 009/109] Start with TTSIM/DE distinction (#850) ### What problem do you want to solve? This PR implementes the distinction between TTSIM (basically the infrastructure) and DE (the German taxes and transfers) components of GETTSIM. This was discussed [here](https://github.com/iza-institute-of-labor-economics/gettsim/pull/780#discussion_r1894663083). In particular, I - Move modules from `_gettsim` to `ttsim/` or leave them in `_gettsim` - Remove the `taxes` and `transfers` subdirs - Split up `config.py` into a TTSIM and a DE part - Adjust the loader accordingly - Also split up tests in TTSIM and DE parts. - Introduce quarters For tests, the distinction is not always super sharp. There are some tests that test a specific feature of the infrastructure (e.g. vectorization), but do this by loading the functions tree from the DE part. Still, I chose to label those tests as `ttsim`. Similarly, we don't test `aggregate_by_p_id` directly in the `ttsim` part, but do it by testing specific components of the TT system. I put them in the `de` dir. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Hans-Martin von Gaudecker Co-authored-by: Tim Mensinger --- .pre-commit-config.yaml | 12 +- CHANGES.md | 71 +++----- docs/geps/gep-00.md | 2 +- docs/geps/gep-03.md | 10 +- docs/geps/gep-04.md | 4 +- docs/geps/gep-05.md | 2 +- docs/gettsim_objects/interface.md | 4 +- docs/gettsim_objects/params.md | 8 +- docs/gettsim_objects/variables_out.md | 2 +- pixi.lock | 4 +- pyproject.toml | 48 ++---- .../{taxes => arbeitslosengeld_2}/__init__.py | 0 .../arbeitslosengeld_2/arbeitslosengeld_2.py | 2 +- .../arbeitslosengeld_2/einkommen.py | 3 +- .../freibetr\303\244ge_verm\303\266gen.py" | 2 +- .../arbeitslosengeld_2/group_by_ids.py | 3 +- .../kindergeld\303\274bertrag.py" | 4 +- .../arbeitslosengeld_2/regelbedarf.py | 2 +- src/_gettsim/config.py | 56 ------- .../{taxes => }/einkommensteuer/__init__.py | 0 .../abgeltungssteuer/__init__.py | 0 .../abgeltungssteuer/abgeltungssteuer.py | 2 +- .../abz\303\274ge/__init__.py" | 0 .../abz\303\274ge/abz\303\274ge.py" | 2 +- .../abz\303\274ge/alleinerziehend.py" | 2 +- .../abz\303\274ge/altersfreibetrag.py" | 4 +- .../pauschbetrag_behinderung.py" | 4 +- .../abz\303\274ge/sonderausgaben.py" | 3 +- .../abz\303\274ge/vorsorgeaufwendungen.py" | 2 +- .../{taxes => }/einkommensteuer/einkommen.py | 3 +- .../einkommensteuer/einkommensteuer.py | 4 +- .../aus_kapitalverm\303\266gen/__init__.py" | 0 .../aus_kapitalverm\303\266gen.py" | 2 +- .../__init__.py" | 0 ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 2 +- .../einkommensteuer/group_by_ids.py | 3 +- .../einkommensteuer/kinderfreibetrag.py | 3 +- .../zu_versteuerndes_einkommen.py | 2 +- .../lohnsteuer => elterngeld}/__init__.py | 0 .../{transfers => }/elterngeld/einkommen.py | 2 +- .../{transfers => }/elterngeld/elterngeld.py | 3 +- .../elterngeld/geschwisterbonus.py | 2 +- .../_gettsim/erziehungsgeld/__init__.py | 0 .../erziehungsgeld/erziehungsgeld.py | 3 +- src/_gettsim/{taxes => }/familie/familie.py | 3 +- src/_gettsim/function_types/__init__.py | 15 -- .../function_types/derived_function.py | 94 ----------- .../function_types/group_by_function.py | 49 ------ .../__init__.py | 0 .../im_alter}/__init__.py | 0 .../grundsicherung/im_alter/einkommen.py | 3 +- .../grundsicherung/im_alter/im_alter.py | 2 +- .../{taxes => }/household_characteristics.py | 3 +- .../{taxes => }/individual_characteristics.py | 2 +- .../beitrag => kinderbonus}/__init__.py | 0 .../kinderbonus/kinderbonus.py | 2 +- .../kranken => kindergeld}/__init__.py | 0 .../{transfers => }/kindergeld/kindergeld.py | 4 +- .../beitrag => kinderzuschlag}/__init__.py | 0 .../kinderzuschlag/einkommen.py | 3 +- .../kinderzuschlag/kinderzuschlag.py | 2 +- .../pflege => lohnsteuer}/__init__.py | 0 .../{taxes => }/lohnsteuer/einkommen.py | 2 +- .../{taxes => }/lohnsteuer/lohnsteuer.py | 6 +- .../solidarit\303\244tszuschlag/__init__.py" | 0 .../solidarit\303\244tszuschlag.py" | 3 +- .../rente => sozialversicherung}/__init__.py | 0 .../arbeitslosen}/__init__.py | 0 .../arbeitslosen/arbeitslosengeld.py | 7 +- .../arbeitslosen/beitrag/__init__.py | 0 .../arbeitslosen/beitrag/beitrag.py | 2 +- .../sozialversicherung/beitr\303\244ge.py" | 2 +- .../geringf\303\274gig_besch\303\244ftigt.py" | 2 +- .../sozialversicherung/kranken/__init__.py | 0 .../kranken/beitrag/__init__.py | 0 .../kranken/beitrag/beitrag.py | 2 +- .../kranken/beitrag/beitragssatz.py | 2 +- .../kranken/beitrag/einkommen.py | 2 +- .../{taxes => }/sozialversicherung/midijob.py | 2 +- .../pflege}/__init__.py | 0 .../pflege/beitrag}/__init__.py | 0 .../pflege/beitrag/beitrag.py | 2 +- .../pflege/beitrag/beitragssatz.py | 3 +- .../regul\303\244r_besch\303\244ftigt.py" | 2 +- .../rente}/__init__.py | 0 .../rente/alter_bei_renteneintritt.py | 2 +- .../rente/altersrente}/__init__.py | 0 .../rente/altersrente/altersgrenzen.py | 2 +- .../rente/altersrente/altersrente.py | 2 +- .../besonders_langj\303\244hrig/__init__.py" | 0 .../besonders_langj\303\244hrig.py" | 2 +- .../f\303\274r_frauen/__init__.py" | 0 .../f\303\274r_frauen/f\303\274r_frauen.py" | 2 +- .../langj\303\244hrig/__init__.py" | 0 .../langj\303\244hrig/langj\303\244hrig.py" | 2 +- .../altersrente/regelaltersrente}/__init__.py | 0 .../regelaltersrente/regelaltersrente.py | 2 +- .../wegen_arbeitslosigkeit}/__init__.py | 0 .../wegen_arbeitslosigkeit.py | 2 +- .../rente/beitrag}/__init__.py | 0 .../rente/beitrag/beitrag.py | 2 +- .../rente/erwerbsminderung}/__init__.py | 0 .../erwerbsminderung/erwerbsminderung.py | 2 +- .../rente/grundrente}/__init__.py | 0 .../rente/grundrente/grundrente.py | 3 +- .../sozialversicherung/rente/wartezeit.py | 2 +- src/_gettsim/synthetic.py | 12 +- .../kindergeld => unterhalt}/__init__.py | 0 .../{transfers => }/unterhalt/unterhalt.py | 2 +- .../__init__.py | 0 .../unterhaltsvorschuss.py | 4 +- .../vorrangpr\303\274fungen/__init__.py" | 0 .../vorrangpr\303\274fungen.py" | 3 +- .../__init__.py | 0 .../{transfers => }/wohngeld/einkommen.py | 6 +- .../{transfers => }/wohngeld/group_by_ids.py | 3 +- .../{transfers => }/wohngeld/miete.py | 4 +- .../wohngeld/voraussetzungen.py | 2 +- .../{transfers => }/wohngeld/wohngeld.py | 2 +- src/_gettsim_tests/__init__.py | 1 - src/_gettsim_tests/_helpers.py | 4 +- src/_gettsim_tests/_policy_test_utils.py | 14 +- src/_gettsim_tests/conftest.py | 2 +- src/_gettsim_tests/test_arbeitslosengeld.py | 2 +- src/_gettsim_tests/test_arbeitslosengeld_2.py | 2 +- .../2024/pflegev_anz_kinder_bis_24.yaml" | 0 src/_gettsim_tests/test_demographics.py | 28 ---- src/_gettsim_tests/test_einkommensteuer.py | 2 +- src/_gettsim_tests/test_elterngeld.py | 2 +- .../test_erwerbsminderungsrente.py | 2 +- src/_gettsim_tests/test_erziehungsgeld.py | 2 +- .../test_full_taxes_and_transfers.py | 4 +- .../test_ges_rente_hinzuverdienst.py | 2 +- src/_gettsim_tests/test_groupings.py | 2 +- src/_gettsim_tests/test_grundrente.py | 2 +- .../test_grundsicherung_im_alter.py | 2 +- .../test_g\303\274nstigerpr\303\274fungen.py" | 2 +- src/_gettsim_tests/test_kindergeld.py | 2 +- src/_gettsim_tests/test_kinderzuschlag.py | 2 +- src/_gettsim_tests/test_lohnsteuer.py | 3 +- src/_gettsim_tests/test_minijobgrenze.py | 2 +- .../test_rente_altersgrenzen.py | 2 +- src/_gettsim_tests/test_rente_anspruch.py | 2 +- .../test_solidarit\303\244tszuschlag.py" | 2 +- ...est_sozialversicherungsbeitr\303\244ge.py" | 2 +- src/_gettsim_tests/test_synthetic.py | 45 +++-- src/_gettsim_tests/test_unterhalt.py | 2 +- .../test_unterhaltsvorschuss.py | 2 +- .../test_vorrangpr\303\274fungen.py" | 2 +- src/_gettsim_tests/test_vorsorgeaufwand.py | 2 +- .../test_warn_if_repeated_execution.py | 10 ++ src/_gettsim_tests/test_wohngeld.py | 2 +- .../test_zu_versteuerndes_einkommen.py | 2 +- src/gettsim/__init__.py | 51 +++--- src/ttsim/__init__.py | 60 +++++++ src/{_gettsim => ttsim}/aggregation.py | 58 +++---- src/{_gettsim => ttsim}/aggregation_jax.py | 2 +- src/{_gettsim => ttsim}/aggregation_numpy.py | 0 src/{_gettsim => ttsim}/combine_functions.py | 18 +- .../compute_taxes_and_transfers.py} | 31 ++-- src/ttsim/config.py | 29 ++++ .../function_types.py} | 132 ++++++++++++++- src/{_gettsim => ttsim}/loader.py | 87 ++++------ .../piecewise_polynomial.py} | 27 ++- src/{_gettsim => ttsim}/policy_environment.py | 22 ++- src/{_gettsim => ttsim}/shared.py | 22 ++- src/{_gettsim => ttsim}/time_conversion.py | 156 +++++++++++++++++- src/{_gettsim => ttsim}/typing.py | 6 +- src/{_gettsim => ttsim}/vectorization.py | 2 +- src/{_gettsim => ttsim}/visualization.py | 10 +- .../__init__.py" => tests/__init__ .py | 0 .../__init__.py => tests/ttsim/__init__ .py | 0 tests/ttsim/namespaces/__init__.py | 0 .../ttsim}/namespaces/module1.py | 4 +- .../ttsim}/namespaces/module2.py | 4 +- .../ttsim}/test_aggregate_by_p_id.py | 2 +- .../ttsim}/test_aggregation_functions.py | 12 +- .../ttsim}/test_combine_functions.py | 10 +- .../ttsim/test_compute_taxes_and_transfers.py | 37 ++--- .../ttsim}/test_config.py | 16 +- .../ttsim}/test_dates_active.py | 4 +- .../ttsim}/test_docs.py | 9 +- .../ttsim}/test_import.py | 0 .../ttsim}/test_import_version.py | 0 .../ttsim}/test_join.py | 2 +- .../ttsim}/test_loader.py | 35 ++-- .../ttsim}/test_namespaces.py | 16 +- tests/ttsim/test_parameters/__init__.py | 0 .../invalid_access_diff_date.yaml | 0 .../test_access_diff_date_jahresanfang.yaml | 0 .../test_access_diff_date_vorjahr.yaml | 0 .../ttsim}/test_piecewise_polynomial.py | 2 +- .../ttsim}/test_policy_environment.py | 20 ++- .../ttsim}/test_policy_function.py | 2 +- .../ttsim}/test_rounding.py | 27 +-- .../ttsim}/test_shared.py | 2 +- .../ttsim}/test_time_conversion.py | 154 ++++++++++++++--- .../ttsim}/test_vectorization.py | 10 +- .../ttsim}/test_visualizations.py | 6 +- 199 files changed, 982 insertions(+), 835 deletions(-) rename src/_gettsim/{taxes => arbeitslosengeld_2}/__init__.py (100%) rename src/_gettsim/{transfers => }/arbeitslosengeld_2/arbeitslosengeld_2.py (98%) rename src/_gettsim/{transfers => }/arbeitslosengeld_2/einkommen.py (99%) rename "src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" => "src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" (99%) rename src/_gettsim/{transfers => }/arbeitslosengeld_2/group_by_ids.py (98%) rename "src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" => "src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" (97%) rename src/_gettsim/{transfers => }/arbeitslosengeld_2/regelbedarf.py (99%) rename src/_gettsim/{taxes => }/einkommensteuer/__init__.py (100%) rename src/_gettsim/{taxes => }/einkommensteuer/abgeltungssteuer/__init__.py (100%) rename src/_gettsim/{taxes => }/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py (97%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" (100%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" (95%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" (97%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" (98%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" (90%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" (97%) rename "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" (99%) rename src/_gettsim/{taxes => }/einkommensteuer/einkommen.py (98%) rename src/_gettsim/{taxes => }/einkommensteuer/einkommensteuer.py (97%) rename "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" => "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" (100%) rename "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" => "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" (92%) rename "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" => "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" (100%) rename "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" => "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" (96%) rename src/_gettsim/{taxes => }/einkommensteuer/group_by_ids.py (94%) rename src/_gettsim/{taxes => }/einkommensteuer/kinderfreibetrag.py (96%) rename src/_gettsim/{taxes => }/einkommensteuer/zu_versteuerndes_einkommen.py (96%) rename src/_gettsim/{taxes/lohnsteuer => elterngeld}/__init__.py (100%) rename src/_gettsim/{transfers => }/elterngeld/einkommen.py (99%) rename src/_gettsim/{transfers => }/elterngeld/elterngeld.py (98%) rename src/_gettsim/{transfers => }/elterngeld/geschwisterbonus.py (98%) rename "src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" => src/_gettsim/erziehungsgeld/__init__.py (100%) rename src/_gettsim/{transfers => }/erziehungsgeld/erziehungsgeld.py (99%) rename src/_gettsim/{taxes => }/familie/familie.py (96%) delete mode 100644 src/_gettsim/function_types/__init__.py delete mode 100644 src/_gettsim/function_types/derived_function.py delete mode 100644 src/_gettsim/function_types/group_by_function.py rename src/_gettsim/{taxes/sozialversicherung => grundsicherung}/__init__.py (100%) rename src/_gettsim/{taxes/sozialversicherung/arbeitslosen => grundsicherung/im_alter}/__init__.py (100%) rename src/_gettsim/{transfers => }/grundsicherung/im_alter/einkommen.py (98%) rename src/_gettsim/{transfers => }/grundsicherung/im_alter/im_alter.py (99%) rename src/_gettsim/{taxes => }/household_characteristics.py (88%) rename src/_gettsim/{taxes => }/individual_characteristics.py (97%) rename src/_gettsim/{taxes/sozialversicherung/arbeitslosen/beitrag => kinderbonus}/__init__.py (100%) rename src/_gettsim/{transfers => }/kinderbonus/kinderbonus.py (93%) rename src/_gettsim/{taxes/sozialversicherung/kranken => kindergeld}/__init__.py (100%) rename src/_gettsim/{transfers => }/kindergeld/kindergeld.py (97%) rename src/_gettsim/{taxes/sozialversicherung/kranken/beitrag => kinderzuschlag}/__init__.py (100%) rename src/_gettsim/{transfers => }/kinderzuschlag/einkommen.py (99%) rename src/_gettsim/{transfers => }/kinderzuschlag/kinderzuschlag.py (99%) rename src/_gettsim/{taxes/sozialversicherung/pflege => lohnsteuer}/__init__.py (100%) rename src/_gettsim/{taxes => }/lohnsteuer/einkommen.py (99%) rename src/_gettsim/{taxes => }/lohnsteuer/lohnsteuer.py (97%) rename src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py => "src/_gettsim/solidarit\303\244tszuschlag/__init__.py" (100%) rename "src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" => "src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" (97%) rename src/_gettsim/{taxes/sozialversicherung/rente => sozialversicherung}/__init__.py (100%) rename src/_gettsim/{taxes/sozialversicherung/rente/altersrente => sozialversicherung/arbeitslosen}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/arbeitslosen/arbeitslosengeld.py (97%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" => src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/arbeitslosen/beitrag/beitrag.py (99%) rename "src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" => "src/_gettsim/sozialversicherung/beitr\303\244ge.py" (98%) rename "src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" => "src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" (98%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" => src/_gettsim/sozialversicherung/kranken/__init__.py (100%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" => src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/kranken/beitrag/beitrag.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/kranken/beitrag/beitragssatz.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/kranken/beitrag/einkommen.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/midijob.py (99%) rename src/_gettsim/{taxes/sozialversicherung/rente/altersrente/regelaltersrente => sozialversicherung/pflege}/__init__.py (100%) rename src/_gettsim/{taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit => sozialversicherung/pflege/beitrag}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/pflege/beitrag/beitrag.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/pflege/beitrag/beitragssatz.py (97%) rename "src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" => "src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" (97%) rename src/_gettsim/{taxes/sozialversicherung/rente/beitrag => sozialversicherung/rente}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/alter_bei_renteneintritt.py (95%) rename src/_gettsim/{taxes/sozialversicherung/rente/erwerbsminderung => sozialversicherung/rente/altersrente}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/altersrente/altersgrenzen.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/altersrente/altersrente.py (99%) rename src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py => "src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" (100%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" => "src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" (98%) rename src/_gettsim/transfers/__init__.py => "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" (100%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" => "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" (99%) rename src/_gettsim/transfers/arbeitslosengeld_2/__init__.py => "src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" (100%) rename "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" => "src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" (99%) rename src/_gettsim/{transfers/elterngeld => sozialversicherung/rente/altersrente/regelaltersrente}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py (98%) rename src/_gettsim/{transfers/erziehungsgeld => sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py (99%) rename src/_gettsim/{transfers/grundsicherung => sozialversicherung/rente/beitrag}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/beitrag/beitrag.py (99%) rename src/_gettsim/{transfers/grundsicherung/im_alter => sozialversicherung/rente/erwerbsminderung}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py (99%) rename src/_gettsim/{transfers/kinderbonus => sozialversicherung/rente/grundrente}/__init__.py (100%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/grundrente/grundrente.py (99%) rename src/_gettsim/{taxes => }/sozialversicherung/rente/wartezeit.py (99%) rename src/_gettsim/{transfers/kindergeld => unterhalt}/__init__.py (100%) rename src/_gettsim/{transfers => }/unterhalt/unterhalt.py (94%) rename src/_gettsim/{transfers/kinderzuschlag => unterhaltsvorschuss}/__init__.py (100%) rename src/_gettsim/{transfers => }/unterhaltsvorschuss/unterhaltsvorschuss.py (99%) rename src/_gettsim/transfers/unterhalt/__init__.py => "src/_gettsim/vorrangpr\303\274fungen/__init__.py" (100%) rename "src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" => "src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" (96%) rename src/_gettsim/{transfers/unterhaltsvorschuss => wohngeld}/__init__.py (100%) rename src/_gettsim/{transfers => }/wohngeld/einkommen.py (98%) rename src/_gettsim/{transfers => }/wohngeld/group_by_ids.py (90%) rename src/_gettsim/{transfers => }/wohngeld/miete.py (98%) rename src/_gettsim/{transfers => }/wohngeld/voraussetzungen.py (99%) rename src/_gettsim/{transfers => }/wohngeld/wohngeld.py (99%) rename src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml => "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" (100%) delete mode 100644 src/_gettsim_tests/test_demographics.py create mode 100644 src/_gettsim_tests/test_warn_if_repeated_execution.py create mode 100644 src/ttsim/__init__.py rename src/{_gettsim => ttsim}/aggregation.py (61%) rename src/{_gettsim => ttsim}/aggregation_jax.py (99%) rename src/{_gettsim => ttsim}/aggregation_numpy.py (100%) rename src/{_gettsim => ttsim}/combine_functions.py (98%) rename src/{_gettsim/interface.py => ttsim/compute_taxes_and_transfers.py} (97%) create mode 100644 src/ttsim/config.py rename src/{_gettsim/function_types/policy_function.py => ttsim/function_types.py} (59%) rename src/{_gettsim => ttsim}/loader.py (76%) rename src/{_gettsim/piecewise_functions.py => ttsim/piecewise_polynomial.py} (94%) rename src/{_gettsim => ttsim}/policy_environment.py (98%) rename src/{_gettsim => ttsim}/shared.py (96%) rename src/{_gettsim => ttsim}/time_conversion.py (76%) rename src/{_gettsim => ttsim}/typing.py (97%) rename src/{_gettsim => ttsim}/vectorization.py (99%) rename src/{_gettsim => ttsim}/visualization.py (99%) rename "src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" => tests/__init__ .py (100%) rename src/_gettsim/transfers/wohngeld/__init__.py => tests/ttsim/__init__ .py (100%) create mode 100644 tests/ttsim/namespaces/__init__.py rename {src/_gettsim_tests/test_data => tests/ttsim}/namespaces/module1.py (88%) rename {src/_gettsim_tests/test_data => tests/ttsim}/namespaces/module2.py (82%) rename {src/_gettsim_tests => tests/ttsim}/test_aggregate_by_p_id.py (93%) rename {src/_gettsim_tests => tests/ttsim}/test_aggregation_functions.py (98%) rename {src/_gettsim_tests => tests/ttsim}/test_combine_functions.py (98%) rename src/_gettsim_tests/test_interface.py => tests/ttsim/test_compute_taxes_and_transfers.py (96%) rename {src/_gettsim_tests => tests/ttsim}/test_config.py (62%) rename {src/_gettsim_tests => tests/ttsim}/test_dates_active.py (98%) rename {src/_gettsim_tests => tests/ttsim}/test_docs.py (96%) rename {src/_gettsim_tests => tests/ttsim}/test_import.py (100%) rename {src/_gettsim_tests => tests/ttsim}/test_import_version.py (100%) rename {src/_gettsim_tests => tests/ttsim}/test_join.py (97%) rename {src/_gettsim_tests => tests/ttsim}/test_loader.py (57%) rename {src/_gettsim_tests => tests/ttsim}/test_namespaces.py (84%) create mode 100644 tests/ttsim/test_parameters/__init__.py rename {src/_gettsim_tests => tests/ttsim}/test_parameters/invalid_access_diff_date.yaml (100%) rename {src/_gettsim_tests => tests/ttsim}/test_parameters/test_access_diff_date_jahresanfang.yaml (100%) rename {src/_gettsim_tests => tests/ttsim}/test_parameters/test_access_diff_date_vorjahr.yaml (100%) rename {src/_gettsim_tests => tests/ttsim}/test_piecewise_polynomial.py (96%) rename {src/_gettsim_tests => tests/ttsim}/test_policy_environment.py (93%) rename {src/_gettsim_tests => tests/ttsim}/test_policy_function.py (90%) rename {src/_gettsim_tests => tests/ttsim}/test_rounding.py (94%) rename {src/_gettsim_tests => tests/ttsim}/test_shared.py (99%) rename {src/_gettsim_tests => tests/ttsim}/test_time_conversion.py (55%) rename {src/_gettsim_tests => tests/ttsim}/test_vectorization.py (98%) rename {src/_gettsim_tests => tests/ttsim}/test_visualizations.py (98%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9a36e4c3a3..cb1d121eb1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,11 +38,11 @@ repos: - id: check-ast - id: check-docstring-first - repo: https://github.com/adrienverge/yamllint.git - rev: v1.35.1 + rev: v1.37.0 hooks: - id: yamllint - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.7.2 + rev: v0.11.2 hooks: # Run the linter. - id: ruff @@ -57,14 +57,14 @@ repos: - python - jupyter - repo: https://github.com/kynan/nbstripout - rev: 0.8.0 + rev: 0.8.1 hooks: - id: nbstripout args: - --extra-keys - metadata.kernelspec metadata.language_info.version metadata.vscode - repo: https://github.com/executablebooks/mdformat - rev: 0.7.18 + rev: 0.7.22 hooks: - id: mdformat additional_dependencies: @@ -75,7 +75,7 @@ repos: - '88' files: (README\.md) - repo: https://github.com/executablebooks/mdformat - rev: 0.7.18 + rev: 0.7.22 hooks: - id: mdformat additional_dependencies: @@ -86,7 +86,7 @@ repos: - '88' files: (docs/.|CHANGES.md|CODE_OF_CONDUCT.md) - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.13.0 + rev: v1.15.0 hooks: - id: mypy args: diff --git a/CHANGES.md b/CHANGES.md index 27a077905a..8d57746be9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -158,10 +158,8 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`470` Execute notebooks as part of the documentation build on readthedocs ({ghuser}`hmgaudecker`). -- {gh}`440` Implement Bürgergeld, which reforms - arbeitsl_geld_2 from 01/01/2023 - ({ghuser}`LauraGergeleit`). +- {gh}`440` Implement Bürgergeld, which reforms arbeitsl_geld_2 from 01/01/2023 ({ghuser}`LauraGergeleit`). - {gh}`399` Use dags package to create the DAG ({ghuser}`ChristianZimpelmann`). @@ -182,8 +180,7 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi cases in test_interface.py ({ghuser}`LauraGergeleit`, {ghuser}`ChristianZimpelmann`). -- {gh}`403` Replace Bokeh with - Bokeh with plotly for visualization. ({ghuser}`effieHAN`,{ghuser}`sofyaakimova`). @@ -196,8 +193,7 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`385` Make `altersentlastungsbetrag` dependent on age not on current date ({ghuser}`m-pannier`, {ghuser}`lillyfischer`). -- {gh}`392` Fix relative tolerance which was set too high for some tests. Rename - vorsorge to vorsorgeaufw ({ghuser}`LauraGergeleit`, {ghuser}`ChristianZimpelmann`). @@ -222,18 +218,13 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi when calling set_up_policy_environment ({ghuser}`ChristianZimpelmann`). -- {gh}`275` Implement Grundrente. Implement Grundsicherung im Alter. Remove - ges_rente_m as input. Rename - gettsim.renten_anspr to - gettsim.transfers.rente. Rename - gettsim.social_insurance to - gettsim.social_insurance_contributions - ({ghuser}`davpahl`, {ghuser}`ChristianZimpelmann`). +- {gh}`275` Implement Grundrente. Implement Grundsicherung im Alter. Remove ges_rente_m as input. Rename gettsim.renten_anspr to gettsim.transfers.rente. Rename gettsim.social_insurance to gettsim.social_insurance_contributions ({ghuser}`davpahl`, + {ghuser}`ChristianZimpelmann`). - {gh}`307` Allow to specify order up to which ancestors and descendants are shown when plotting a dag ({ghuser}`ChristianZimpelmann`). @@ -254,31 +245,25 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi adjustments for DAG backend ({ghuser}`hmgaudecker`). - {gh}`314` Enforce character limits from GEP-01 for all function names and input - variables. Make variable names more precise (e.g., - ges\_ in front of all social insurance parameters that - have private counterparts, eink_st everywhere the - income tax is meant). Make variables consistent (e.g. - kinderfreibetrag had different abbreviations, now - ges\_ in front of all social insurance parameters that have + private counterparts, eink_st everywhere the income tax + is meant). Make variables consistent (e.g. kinderfreibetrag had different abbreviations, now kinderfreib everywhere). ({ghuser}`hmgaudecker`, {ghuser}`ChristianZimpelmann`) -- {gh}`343` New argument for \`compute_taxes_and_transfers\`: - rounding. If set to False, rounding of outputs is - disabled. Add rounding for eink_st_tu. Rounding for - other functions will be introduced in future PRs. ({ghuser}`ChristianZimpelmann`). +- {gh}`343` New argument for \`compute_taxes_and_transfers\`: rounding. If set to False, rounding of outputs is disabled. + Add rounding for eink_st_tu. Rounding for other + functions will be introduced in future PRs. ({ghuser}`ChristianZimpelmann`). - {gh}`349` Create parameters for several hard coded numbers in code. ({ghuser}`LauraGergeleit`). - {gh}`355` Major renaming based on GEP 01, e.g.: correct use of `_m`-suffix; - `alleinerziehend` becomes `alleinerz`; rename - ges_rentenv.yaml to - ges_rentenv.yaml to ges_rente.yaml ({ghuser}`hmgaudecker`, {ghuser}`ChristianZimpelmann`) @@ -318,14 +303,10 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## v0.4.0 — 2020-11-11 - {gh}`241` Renaming of directories: gettsim.benefits to - gettsim.transfers; - gettsim.soz_vers to - gettsim.social_insurance; - gettsim.data to - gettsim.transfers; gettsim.soz_vers to gettsim.social_insurance; gettsim.data to gettsim.parameters ({ghuser}`MaxBlesch`, {ghuser}`ChristianZimpelmann`). diff --git a/docs/geps/gep-00.md b/docs/geps/gep-00.md index b53f86bb6c..a7ad8c40c3 100644 --- a/docs/geps/gep-00.md +++ b/docs/geps/gep-00.md @@ -142,7 +142,7 @@ post a message with a first line like: > \## Proposal to accept GEP #\: \ -to the Zulip stream GEPs / GEP \[XY\]. +to the Zulip stream GEPs / GEP [XY]. In the body of your message, you should: diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index ebc01f103e..bcc4b07426 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -132,7 +132,7 @@ These work differently and they are 6. The (optional) `access_prior_parameters` can be used to make the parameter of a previous point in time (relative to the date specified in - {func}`set_up_policy_environment <_gettsim.policy_environment.set_up_policy_environment>`) + {func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>`) available within GETTSIM functions. It requires the `reference_period` (one of `Year`, `Month`, `Week`, `Day`) and the `number_of_lags`. @@ -164,7 +164,7 @@ These work differently and they are The remainder of this section explains this element in much more detail. -### The `reference` key of \[YYYY-MM-DD\] +### The `reference` key of [YYYY-MM-DD] - cites the law (Gesetz "G. v."), decree (Verordnung "V. v.") or proclamation (Bekanntmachung "B. v.") that changes the law @@ -188,14 +188,14 @@ eink_anr_frei: reference: Artikel 1. G. v. 24.12.2003 BGBl. I S. 2954. ``` -### The `note` key of \[YYYY-MM-DD\] +### The `note` key of [YYYY-MM-DD] This optional key may contain a free-form note holding any information that may be relevant for the interpretation of the parameter, the implementer, user, ... (gep-3-deviation_from)= -### The `deviation_from` key of \[YYYY-MM-DD\] +### The `deviation_from` key of [YYYY-MM-DD] Often laws change only part of a parameter. To avoid error-prone code duplication, we allow for such cases via the `deviation_from` key. This is the reason why lists are to @@ -226,7 +226,7 @@ eink_anr_frei: upper_threshold: 1000 ``` -### The values of \[YYYY-MM-DD\] +### The values of [YYYY-MM-DD] The general idea is to make the replication of the laws very obvious. If the law includes a table, we will have a dictionary with keys 0, 1, 2, .... If the law includes diff --git a/docs/geps/gep-04.md b/docs/geps/gep-04.md index f944ce3c9a..0942b5b557 100644 --- a/docs/geps/gep-04.md +++ b/docs/geps/gep-04.md @@ -238,7 +238,7 @@ method `aggr`. For example, in `household_characteristics.py`, we could have: ``` -from _gettsim.aggregation import AggregateByGroupSpec +from ttsim.aggregation import AggregateByGroupSpec aggregation_specs = { "anzahl_kinder_hh": AggregateByGroupSpec(source="familie__kind", aggr="sum"), @@ -288,7 +288,7 @@ graph will be `kindergeld__betrag_m` and `arbeitslosengeld_2__bg_id`. This is th as specifying: ``` -from _gettsim.aggregation import AggregateByGroupSpec +from ttsim.aggregation import AggregateByGroupSpec aggregation_specs = { "kindergeld__betrag_m_bg": AggregateByGroupSpec( diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index cf294c828e..f9a93d23cf 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -90,7 +90,7 @@ def sozialversicherung__rente__grundrente__höchstbetrag_m( ``` When calling -{func}`compute_taxes_and_transfers <_gettsim.interface.compute_taxes_and_transfers>` +{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>` with `rounding=True`, GETTSIM will look for a key `"rounding"` in `policy_params["params_key"]` and within that, for another key containing the decorated function's name (here: `"sozialversicherung__rente__grundrente__höchstbetrag_m"`). That diff --git a/docs/gettsim_objects/interface.md b/docs/gettsim_objects/interface.md index f1962a6f73..50768ecec0 100644 --- a/docs/gettsim_objects/interface.md +++ b/docs/gettsim_objects/interface.md @@ -5,7 +5,7 @@ have more information on how they work and how you can use them please see {ref}`how_to_guides` and {ref}`tutorials`. ```{eval-rst} -.. currentmodule:: _gettsim.interface +.. currentmodule:: ttsim.compute_taxes_and_transfers ``` ```{eval-rst} @@ -13,7 +13,7 @@ have more information on how they work and how you can use them please see ``` ```{eval-rst} -.. currentmodule:: _gettsim.policy_environment +.. currentmodule:: ttsim.policy_environment ``` ```{eval-rst} diff --git a/docs/gettsim_objects/params.md b/docs/gettsim_objects/params.md index e4d5f2e035..469a53b648 100644 --- a/docs/gettsim_objects/params.md +++ b/docs/gettsim_objects/params.md @@ -4,12 +4,12 @@ The parameters of the tax and transfer system are stored in compartment specific dictionaries. The {code}`params` argument created in -{func}`set_up_policy_environment <_gettsim.policy_environment.set_up_policy_environment>` +{func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>` and then used in -{func}`compute_taxes_and_transfers <_gettsim.interface.compute_taxes_and_transfers>` is -a dictionary of these compartment specific dictionaries. Thus it is a dictionary of +{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>` +is a dictionary of these compartment specific dictionaries. Thus it is a dictionary of dictionaries, where the keys are the name of the compartment. The files from which -{func}`set_up_policy_environment <_gettsim.policy_environment.set_up_policy_environment>` +{func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>` loads the default parameters for each year, can be found [here](https://github.com/iza-institute-of-labor-economics/gettsim/tree/main/gettsim/parameters) and are named by the compartment. Our current guidlines on how these files are set up diff --git a/docs/gettsim_objects/variables_out.md b/docs/gettsim_objects/variables_out.md index bc8abdc076..c1f92a97e1 100644 --- a/docs/gettsim_objects/variables_out.md +++ b/docs/gettsim_objects/variables_out.md @@ -2,7 +2,7 @@ The table below gives an overview of typical variables selected by users to simulate with GETTSIM. You can simulate them by defining them as target in -{func}`compute_taxes_and_transfers <_gettsim.interface.compute_taxes_and_transfers>`. +{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>`. You can find their individual calculation in the documentation of all {ref}`functions`. ```{list-table} diff --git a/pixi.lock b/pixi.lock index f51276aece..fdb3d75917 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5610,8 +5610,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev95+gdab7a666.d20250324 - sha256: a7011fdf814d71b26b7d6f474b87555abd82e2e1e1575b07b0215dadba45b997 + version: 0.7.1.dev106+g8c224365.d20250403 + sha256: c500019b58e8256c35e138a3cfbd01672a92164aafce28adb21f09b687c51bd0 requires_dist: - astor - dags>=0.3.0 diff --git a/pyproject.toml b/pyproject.toml index c03fbd64f6..2d8421b155 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -201,8 +201,6 @@ extend-ignore = [ "S101", # raise errors for asserts. "B905", # strict parameter for zip that was implemented in py310. - "ANN101", # type annotating self - "ANN102", # type annotating cls "FBT", # flake8-boolean-trap "EM", # flake8-errmsg "ANN401", # flake8-annotate typing.Any @@ -247,17 +245,13 @@ extend-ignore = [ exclude = [] [tool.ruff.lint.per-file-ignores] -"src/_gettsim_tests/test_rounding.py" = ["PT019"] -"src/_gettsim/functions/all_functions_for_docs.py" = ["F401", "E501", "F403"] -"src/_gettsim/typing.py" = ["PGH", "PLR", "SIM114"] -"src/_gettsim/piecewise_functions.py" = ["PLR"] -"src/_gettsim/policy_environment.py" = ["S506", "PLR"] -"src/_gettsim/transfers/*" = ["E501"] -"src/_gettsim/taxes/*" = ["E501"] -"src/_gettsim/taxes/familie/familie.py" = ["E501"] -"src/_gettsim/visualization.py" = ["PLR"] +"src/ttsim/functions/all_functions_for_docs.py" = ["F401", "E501", "F403"] +"src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] +"src/ttsim/piecewise_functions.py" = ["PLR"] +"src/ttsim/policy_environment.py" = ["S506", "PLR"] +"src/ttsim/visualization.py" = ["PLR"] +"src/_gettsim/*" = ["E501"] "src/_gettsim_tests/test_synthetic.py" = ["E501"] -"src/_gettsim/config.py" = ["E501"] "docs/**/*.ipynb" = ["T201"] [tool.ruff.lint.pydocstyle] @@ -269,7 +263,7 @@ convention = "numpy" # ====================================================================================== [tool.mypy] -files = ["src"] +files = ["src", "tests"] check_untyped_defs = true disallow_any_generics = false disallow_incomplete_defs = true @@ -277,18 +271,17 @@ disallow_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true +explicit_package_bases = true [[tool.mypy.overrides]] -module = "_gettsim_tests.*" -disallow_untyped_defs = false -ignore_errors = true - -[[tool.mypy.overrides]] -module = "gettsim" +module = [ + "src._gettsim_tests.*", + "src.gettsim", + "src._gettsim.*", + "src.ttsim.*", + "tests.*", +] disallow_untyped_defs = false - -[[tool.mypy.overrides]] -module = "_gettsim.*" ignore_errors = true @@ -296,14 +289,6 @@ ignore_errors = true ignore = ["src/_gettsim/_version.py"] -[tool.doc8] -max-line-length = 88 -ignore = [ - "D002", - "D004" -] - - # ====================================================================================== # pytest configuration # ====================================================================================== @@ -317,7 +302,7 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore::_gettsim.interface.FunctionsAndColumnsOverlapWarning" + "ignore::ttsim.compute_taxes_and_transfers.FunctionsAndColumnsOverlapWarning" ] markers = [ "wip: Tests that are work-in-progress.", @@ -328,6 +313,7 @@ markers = [ norecursedirs = ["docs"] testpaths = [ "src/_gettsim_tests", + "tests/ttsim", ] # ====================================================================================== diff --git a/src/_gettsim/taxes/__init__.py b/src/_gettsim/arbeitslosengeld_2/__init__.py similarity index 100% rename from src/_gettsim/taxes/__init__.py rename to src/_gettsim/arbeitslosengeld_2/__init__.py diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py similarity index 98% rename from src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py rename to src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 954257f8a8..7af85164fa 100644 --- a/src/_gettsim/transfers/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -3,7 +3,7 @@ Note: Since 2023, Arbeitslosengeld II is referred to as Bürgergeld. """ -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py similarity index 99% rename from src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py rename to src/_gettsim/arbeitslosengeld_2/einkommen.py index 9aef2dbb56..31a034d213 100644 --- a/src/_gettsim/transfers/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -1,7 +1,6 @@ """Income relevant for calculation of Arbeitslosengeld II / Bürgergeld.""" -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import piecewise_polynomial, policy_function @policy_function() diff --git "a/src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" similarity index 99% rename from "src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" rename to "src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 6f7ad8a300..4be743b45a 100644 --- "a/src/_gettsim/transfers/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -1,6 +1,6 @@ """Wealth checks for Arbeitslosengeld II/Bürgergeld.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py similarity index 98% rename from src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py rename to src/_gettsim/arbeitslosengeld_2/group_by_ids.py index d256cc9db6..d6579cfb86 100644 --- a/src/_gettsim/transfers/arbeitslosengeld_2/group_by_ids.py +++ b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py @@ -2,8 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import group_by_function +from ttsim import AggregateByGroupSpec, group_by_function # TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 diff --git "a/src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" similarity index 97% rename from "src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" rename to "src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 683eba6b0e..742b3fc7d4 100644 --- "a/src/_gettsim/transfers/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -2,9 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function -from _gettsim.shared import join_numpy +from ttsim import AggregateByPIDSpec, join_numpy, policy_function aggregation_specs = { "kindergeldübertrag_m": AggregateByPIDSpec( diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py similarity index 99% rename from src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py rename to src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 709e7c4685..32df8e0a6c 100644 --- a/src/_gettsim/transfers/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -1,6 +1,6 @@ """Basic needs following SGB II.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index a25203c18d..b1cc7223ce 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -1,49 +1,8 @@ -from __future__ import annotations - -import importlib from pathlib import Path -import numpy - -# Defaults -USE_JAX = False -numpy_or_jax = numpy - - -def set_array_backend(backend: str): - """Set array library backend. - - backend (str): Must be in {'jax', 'numpy'}. - - """ - if backend not in {"jax", "numpy"}: - raise ValueError(f"Backend must be in {'jax', 'numpy'} but is {backend}.") - - if backend == "jax": - assert importlib.util.find_spec("jax") is not None, "JAX is not installed." - global USE_JAX # noqa: PLW0603 - global numpy_or_jax # noqa: PLW0603 - import jax - - USE_JAX = True - numpy_or_jax = jax.numpy - jax.config.update("jax_platform_name", "cpu") - - # Obtain the root directory of the package. RESOURCE_DIR = Path(__file__).parent.resolve() -GEP_01_CHARACTER_LIMIT_USER_FACING_COLUMNS = 20 -GEP_01_CHARACTER_LIMIT_OTHER_COLUMNS = 32 - - -# List of paths to internal functions. -# If a path is a directory, all Python files are recursively collected from that folder. -PATHS_TO_INTERNAL_FUNCTIONS = [ - RESOURCE_DIR / "transfers", - RESOURCE_DIR / "taxes", -] - INTERNAL_PARAMS_GROUPS = [ "eink_st", "eink_st_abzuege", @@ -119,21 +78,6 @@ def set_array_backend(backend: str): } -SUPPORTED_TIME_UNITS = { - "y": { - "name": "year", - }, - "m": { - "name": "month", - }, - "w": { - "name": "week", - }, - "d": { - "name": "day", - }, -} - DEFAULT_TARGETS = { "einkommensteuer": { "betrag_y_sn": None, diff --git a/src/_gettsim/taxes/einkommensteuer/__init__.py b/src/_gettsim/einkommensteuer/__init__.py similarity index 100% rename from src/_gettsim/taxes/einkommensteuer/__init__.py rename to src/_gettsim/einkommensteuer/__init__.py diff --git a/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/__init__.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py similarity index 100% rename from src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/__init__.py rename to src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py diff --git a/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py similarity index 97% rename from src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py rename to src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py index d919620fa0..f6be047592 100644 --- a/src/_gettsim/taxes/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py @@ -1,6 +1,6 @@ """Taxes on capital income (Abgeltungssteuer).""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(start_date="2009-01-01") diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" similarity index 100% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/__init__.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" similarity index 95% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" index 183f8ab683..77006d3dbb 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/abz\303\274ge.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" @@ -1,6 +1,6 @@ """Tax allowances.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" similarity index 97% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" index d1b0e27343..d6c6b09426 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/alleinerziehend.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" @@ -1,6 +1,6 @@ """Tax allowances for single parents.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2014-12-31", leaf_name="alleinerziehend_betrag_y") diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" similarity index 98% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" index 0d48882432..23fbf44cad 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/altersfreibetrag.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" @@ -1,7 +1,7 @@ """Tax allowances for the elderly.""" -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import policy_function +from ttsim import policy_function +from ttsim.config import numpy_or_jax as np @policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" similarity index 90% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" index 7086859c58..2513606661 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" @@ -1,7 +1,7 @@ """Tax allowances for the disabled.""" -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import policy_function +from ttsim import policy_function +from ttsim.config import numpy_or_jax as np @policy_function() diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" similarity index 97% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index f45fb4848e..e1e4dc3f30 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -1,7 +1,6 @@ """Tax allowances for special expenses.""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByPIDSpec, policy_function aggregation_specs = { "betreuungskosten_elternteil_m": AggregateByPIDSpec( diff --git "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" similarity index 99% rename from "src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" index 3ff0c1eed1..1115e6d949 100644 --- "a/src/_gettsim/taxes/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" @@ -1,4 +1,4 @@ -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function( diff --git a/src/_gettsim/taxes/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py similarity index 98% rename from src/_gettsim/taxes/einkommensteuer/einkommen.py rename to src/_gettsim/einkommensteuer/einkommen.py index 4cc16ed6ee..9a389154cc 100644 --- a/src/_gettsim/taxes/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -3,8 +3,7 @@ Einkommen are Einkünfte minus Sonderausgaben, Vorsorgeaufwendungen, außergewöhnliche Belastungen and sonstige Abzüge.""" -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import piecewise_polynomial, policy_function @policy_function() diff --git a/src/_gettsim/taxes/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py similarity index 97% rename from src/_gettsim/taxes/einkommensteuer/einkommensteuer.py rename to src/_gettsim/einkommensteuer/einkommensteuer.py index fda6a31f9a..b5810ef08a 100644 --- a/src/_gettsim/taxes/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -1,8 +1,6 @@ """Income taxes.""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import AggregateByPIDSpec, piecewise_polynomial, policy_function aggregation_specs = { "anzahl_kindergeld_ansprüche_1": AggregateByPIDSpec( diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" similarity index 100% rename from "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" similarity index 92% rename from "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" index 7e46f3e426..43edecd3d1 100644 --- "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" @@ -1,6 +1,6 @@ """Einkünfte aus Kapitalvermögen.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" similarity index 100% rename from "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" diff --git "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" similarity index 96% rename from "src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" index 8b9aff3696..2ae0d54eed 100644 --- "a/src/_gettsim/taxes/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -1,6 +1,6 @@ """Einkünfte aus nichtselbstständiger Arbeit.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/einkommensteuer/group_by_ids.py b/src/_gettsim/einkommensteuer/group_by_ids.py similarity index 94% rename from src/_gettsim/taxes/einkommensteuer/group_by_ids.py rename to src/_gettsim/einkommensteuer/group_by_ids.py index 9961daf0f7..5be1ae05c5 100644 --- a/src/_gettsim/taxes/einkommensteuer/group_by_ids.py +++ b/src/_gettsim/einkommensteuer/group_by_ids.py @@ -2,8 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import group_by_function +from ttsim import AggregateByGroupSpec, group_by_function aggregation_specs = { "anzahl_personen_sn": AggregateByGroupSpec( diff --git a/src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py similarity index 96% rename from src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py rename to src/_gettsim/einkommensteuer/kinderfreibetrag.py index 256d5046a1..c824014b7b 100644 --- a/src/_gettsim/taxes/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -1,7 +1,6 @@ """Tax allowances for individuals or couples with children.""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByPIDSpec, policy_function aggregation_specs = { "anzahl_kinderfreibeträge_1": AggregateByPIDSpec( diff --git a/src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py similarity index 96% rename from src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py rename to src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index 94986b0e87..a693b57af7 100644 --- a/src/_gettsim/taxes/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -1,6 +1,6 @@ """Taxable income.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(params_key_for_rounding="eink_st") diff --git a/src/_gettsim/taxes/lohnsteuer/__init__.py b/src/_gettsim/elterngeld/__init__.py similarity index 100% rename from src/_gettsim/taxes/lohnsteuer/__init__.py rename to src/_gettsim/elterngeld/__init__.py diff --git a/src/_gettsim/transfers/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py similarity index 99% rename from src/_gettsim/transfers/elterngeld/einkommen.py rename to src/_gettsim/elterngeld/einkommen.py index 29883af7b7..ded967346c 100644 --- a/src/_gettsim/transfers/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -1,6 +1,6 @@ """Relevant income for parental leave benefits.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(start_date="2007-01-01") diff --git a/src/_gettsim/transfers/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py similarity index 98% rename from src/_gettsim/transfers/elterngeld/elterngeld.py rename to src/_gettsim/elterngeld/elterngeld.py index 8355dd2b2b..dbc2684400 100644 --- a/src/_gettsim/transfers/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -1,7 +1,6 @@ """Parental leave benefits.""" -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByGroupSpec, AggregateByPIDSpec, policy_function aggregation_specs = { "kind_grundsätzlich_anspruchsberechtigt_fg": AggregateByGroupSpec( diff --git a/src/_gettsim/transfers/elterngeld/geschwisterbonus.py b/src/_gettsim/elterngeld/geschwisterbonus.py similarity index 98% rename from src/_gettsim/transfers/elterngeld/geschwisterbonus.py rename to src/_gettsim/elterngeld/geschwisterbonus.py index 924068c67b..d4bc76e05e 100644 --- a/src/_gettsim/transfers/elterngeld/geschwisterbonus.py +++ b/src/_gettsim/elterngeld/geschwisterbonus.py @@ -1,6 +1,6 @@ """Parental leave bonus for siblings.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(start_date="2007-01-01") diff --git "a/src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" b/src/_gettsim/erziehungsgeld/__init__.py similarity index 100% rename from "src/_gettsim/taxes/solidarit\303\244tszuschlag/__init__.py" rename to src/_gettsim/erziehungsgeld/__init__.py diff --git a/src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py similarity index 99% rename from src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py rename to src/_gettsim/erziehungsgeld/erziehungsgeld.py index e316a97263..b7ab6e0ce9 100644 --- a/src/_gettsim/transfers/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -1,7 +1,6 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByPIDSpec, policy_function aggregation_specs = { "anspruchshöhe_m": AggregateByPIDSpec( diff --git a/src/_gettsim/taxes/familie/familie.py b/src/_gettsim/familie/familie.py similarity index 96% rename from src/_gettsim/taxes/familie/familie.py rename to src/_gettsim/familie/familie.py index 7cfe7ecb29..a7bd6c6c1e 100644 --- a/src/_gettsim/taxes/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -6,8 +6,7 @@ import numpy -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import group_by_function, policy_function +from ttsim import AggregateByGroupSpec, group_by_function, policy_function aggregation_specs = { "anzahl_personen_ehe": AggregateByGroupSpec( diff --git a/src/_gettsim/function_types/__init__.py b/src/_gettsim/function_types/__init__.py deleted file mode 100644 index 68b6229c62..0000000000 --- a/src/_gettsim/function_types/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from _gettsim.function_types.derived_function import ( - DerivedAggregationFunction, - DerivedTimeConversionFunction, -) -from _gettsim.function_types.group_by_function import GroupByFunction, group_by_function -from _gettsim.function_types.policy_function import PolicyFunction, policy_function - -__all__ = [ - "policy_function", - "PolicyFunction", - "DerivedAggregationFunction", - "DerivedTimeConversionFunction", - "group_by_function", - "GroupByFunction", -] diff --git a/src/_gettsim/function_types/derived_function.py b/src/_gettsim/function_types/derived_function.py deleted file mode 100644 index 6de0fd7b07..0000000000 --- a/src/_gettsim/function_types/derived_function.py +++ /dev/null @@ -1,94 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Literal - -import dags.tree as dt - -from _gettsim.function_types.policy_function import PolicyFunction - -if TYPE_CHECKING: - from collections.abc import Callable - - -class DerivedAggregationFunction(PolicyFunction): - """ - A function that is an aggregation of another function. - - Parameters - ---------- - function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - aggregation_target: - The qualified name of the aggregation target. - source_function: - The function from which the new function is derived. - source: - The name of the source function or data column. - aggregation_method: - The method of aggregation used. - """ - - def __init__( - self, - *, - function: Callable, - source_function: PolicyFunction - | DerivedTimeConversionFunction - | DerivedAggregationFunction - | None = None, - source: str, - aggregation_target: str, - aggregation_method: Literal["count", "sum", "mean", "min", "max", "any", "all"], - ): - super().__init__( - function=function, - leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], - start_date=source_function.start_date if source_function else None, - end_date=source_function.end_date if source_function else None, - params_key_for_rounding=None, - skip_vectorization=True, - ) - - self.source = source - self.aggregation_method = aggregation_method - - -class DerivedTimeConversionFunction(PolicyFunction): - """ - A function that is a time conversion of another function. - - Parameters - ---------- - function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - source_function: - The function from which the new function is derived. - source: - The name of the source function or data column. - conversion_target: - The qualified name of the conversion target. - """ - - def __init__( - self, - *, - function: Callable, - source_function: PolicyFunction - | DerivedTimeConversionFunction - | DerivedAggregationFunction - | None = None, - source: str, - conversion_target: str, - ): - super().__init__( - function=function, - leaf_name=dt.tree_path_from_qual_name(conversion_target)[-1], - start_date=source_function.start_date if source_function else None, - end_date=source_function.end_date if source_function else None, - params_key_for_rounding=None, - skip_vectorization=True, - ) - - self.source = source diff --git a/src/_gettsim/function_types/group_by_function.py b/src/_gettsim/function_types/group_by_function.py deleted file mode 100644 index 9d2e96ce15..0000000000 --- a/src/_gettsim/function_types/group_by_function.py +++ /dev/null @@ -1,49 +0,0 @@ -from __future__ import annotations - -import inspect -from collections.abc import Callable - - -class GroupByFunction(Callable): - """ - A function that computes endogenous group_by IDs. - - Parameters - ---------- - function: - The group_by function. - """ - - def __init__( - self, - *, - function: Callable, - leaf_name: str | None = None, - ): - self.function = function - self.leaf_name = leaf_name if leaf_name else function.__name__ - - # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = function.__annotations__ - self.__module__ = function.__module__ - self.__name__ = function.__name__ - self.__signature__ = inspect.signature(self.function) - - def __call__(self, *args, **kwargs): - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> set[str]: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - -def group_by_function() -> GroupByFunction: - """ - Decorator that creates a group_by function from a function. - """ - - def decorator(func: Callable) -> GroupByFunction: - return GroupByFunction(function=func) - - return decorator diff --git a/src/_gettsim/taxes/sozialversicherung/__init__.py b/src/_gettsim/grundsicherung/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/__init__.py rename to src/_gettsim/grundsicherung/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/__init__.py b/src/_gettsim/grundsicherung/im_alter/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/arbeitslosen/__init__.py rename to src/_gettsim/grundsicherung/im_alter/__init__.py diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py similarity index 98% rename from src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py rename to src/_gettsim/grundsicherung/im_alter/einkommen.py index d3135ce849..eafbd0319c 100644 --- a/src/_gettsim/transfers/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -1,7 +1,6 @@ """Income considered in the calculation of Grundsicherung im Alter.""" -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import piecewise_polynomial, policy_function @policy_function() diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py similarity index 99% rename from src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py rename to src/_gettsim/grundsicherung/im_alter/im_alter.py index f6d78ea729..374463e06c 100644 --- a/src/_gettsim/transfers/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -1,6 +1,6 @@ """Subsistence transfer for the elderly (Grundsicherung im Alter).""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/household_characteristics.py b/src/_gettsim/household_characteristics.py similarity index 88% rename from src/_gettsim/taxes/household_characteristics.py rename to src/_gettsim/household_characteristics.py index 8426b96aba..5fc44f23e8 100644 --- a/src/_gettsim/taxes/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,5 +1,4 @@ -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByGroupSpec, policy_function aggregation_specs = { "anzahl_erwachsene_hh": AggregateByGroupSpec( diff --git a/src/_gettsim/taxes/individual_characteristics.py b/src/_gettsim/individual_characteristics.py similarity index 97% rename from src/_gettsim/taxes/individual_characteristics.py rename to src/_gettsim/individual_characteristics.py index e3467fc6fd..881e5dc9e9 100644 --- a/src/_gettsim/taxes/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -2,7 +2,7 @@ import numpy -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/__init__.py b/src/_gettsim/kinderbonus/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/__init__.py rename to src/_gettsim/kinderbonus/__init__.py diff --git a/src/_gettsim/transfers/kinderbonus/kinderbonus.py b/src/_gettsim/kinderbonus/kinderbonus.py similarity index 93% rename from src/_gettsim/transfers/kinderbonus/kinderbonus.py rename to src/_gettsim/kinderbonus/kinderbonus.py index 08cd125c4b..8a871b9c9a 100644 --- a/src/_gettsim/transfers/kinderbonus/kinderbonus.py +++ b/src/_gettsim/kinderbonus/kinderbonus.py @@ -1,6 +1,6 @@ """Kinderbonus.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(start_date="2020-01-01", end_date="2021-12-31") diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/__init__.py b/src/_gettsim/kindergeld/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/kranken/__init__.py rename to src/_gettsim/kindergeld/__init__.py diff --git a/src/_gettsim/transfers/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py similarity index 97% rename from src/_gettsim/transfers/kindergeld/kindergeld.py rename to src/_gettsim/kindergeld/kindergeld.py index 784cb48287..1361797e90 100644 --- a/src/_gettsim/transfers/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -2,9 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function -from _gettsim.shared import join_numpy +from ttsim import AggregateByPIDSpec, join_numpy, policy_function aggregation_specs = { "anzahl_ansprüche": AggregateByPIDSpec( diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/__init__.py b/src/_gettsim/kinderzuschlag/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/kranken/beitrag/__init__.py rename to src/_gettsim/kinderzuschlag/__init__.py diff --git a/src/_gettsim/transfers/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py similarity index 99% rename from src/_gettsim/transfers/kinderzuschlag/einkommen.py rename to src/_gettsim/kinderzuschlag/einkommen.py index 9cb0da7743..1b0370df1d 100644 --- a/src/_gettsim/transfers/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -1,7 +1,6 @@ """Income relevant for calculation of Kinderzuschlag.""" -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByGroupSpec, policy_function aggregation_specs = { "arbeitslosengeld_2__anzahl_kinder_bg": AggregateByGroupSpec( diff --git a/src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py similarity index 99% rename from src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py rename to src/_gettsim/kinderzuschlag/kinderzuschlag.py index a1cbf5ca13..9f8f2f8ba2 100644 --- a/src/_gettsim/transfers/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -1,6 +1,6 @@ """Kinderzuschlag.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/__init__.py b/src/_gettsim/lohnsteuer/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/pflege/__init__.py rename to src/_gettsim/lohnsteuer/__init__.py diff --git a/src/_gettsim/taxes/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py similarity index 99% rename from src/_gettsim/taxes/lohnsteuer/einkommen.py rename to src/_gettsim/lohnsteuer/einkommen.py index a1c335ad89..a64399c7f9 100644 --- a/src/_gettsim/taxes/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -1,6 +1,6 @@ """Income relevant for withholding tax on earnings (Lohnsteuer).""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(params_key_for_rounding="lohnst") diff --git a/src/_gettsim/taxes/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py similarity index 97% rename from src/_gettsim/taxes/lohnsteuer/lohnsteuer.py rename to src/_gettsim/lohnsteuer/lohnsteuer.py index c691094a3e..c27dce841c 100644 --- a/src/_gettsim/taxes/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -1,10 +1,10 @@ """Withholding tax on earnings (Lohnsteuer).""" -from _gettsim.function_types import policy_function -from _gettsim.taxes.einkommensteuer.einkommensteuer import einkommensteuertarif -from _gettsim.taxes.solidaritätszuschlag.solidaritätszuschlag import ( +from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif +from _gettsim.solidaritätszuschlag.solidaritätszuschlag import ( solidaritätszuschlagstarif, ) +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py "b/src/_gettsim/solidarit\303\244tszuschlag/__init__.py" similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/pflege/beitrag/__init__.py rename to "src/_gettsim/solidarit\303\244tszuschlag/__init__.py" diff --git "a/src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" similarity index 97% rename from "src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" rename to "src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index ee4861159f..9c8e4115af 100644 --- "a/src/_gettsim/taxes/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -1,7 +1,6 @@ """Solidarity Surcharge (Solidaritätszuschlag).""" -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import piecewise_polynomial, policy_function @policy_function(end_date="2008-12-31", leaf_name="betrag_y_sn") diff --git a/src/_gettsim/taxes/sozialversicherung/rente/__init__.py b/src/_gettsim/sozialversicherung/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/__init__.py rename to src/_gettsim/sozialversicherung/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/__init__.py b/src/_gettsim/sozialversicherung/arbeitslosen/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/__init__.py rename to src/_gettsim/sozialversicherung/arbeitslosen/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py similarity index 97% rename from src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py rename to src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index 613f394e3f..a56c1996b3 100644 --- a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -1,9 +1,8 @@ """Unemployment benefits (Arbeitslosengeld).""" -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial -from _gettsim.taxes.einkommensteuer.einkommensteuer import einkommensteuertarif +from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif +from ttsim import piecewise_polynomial, policy_function +from ttsim.config import numpy_or_jax as np @policy_function() diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py similarity index 100% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" rename to src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py rename to src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index 267f41aa36..fbd8c83779 100644 --- a/src/_gettsim/taxes/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -1,6 +1,6 @@ """Contributions to the unemployment insurance.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") diff --git "a/src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" similarity index 98% rename from "src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" rename to "src/_gettsim/sozialversicherung/beitr\303\244ge.py" index 235f5a92f4..8cbac7e00f 100644 --- "a/src/_gettsim/taxes/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -1,6 +1,6 @@ """Social insurance contributions.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git "a/src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" similarity index 98% rename from "src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" rename to "src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" index e772b52d10..972e989eb6 100644 --- "a/src/_gettsim/taxes/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -1,6 +1,6 @@ """Marginally employed.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" b/src/_gettsim/sozialversicherung/kranken/__init__.py similarity index 100% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" rename to src/_gettsim/sozialversicherung/kranken/__init__.py diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" b/src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py similarity index 100% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" rename to src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py rename to src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 3d3984faab..29b229568f 100644 --- a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -1,6 +1,6 @@ """Public health insurance contributions.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py rename to src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index 033f409430..41e4219411 100644 --- a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -1,6 +1,6 @@ """Contribution rate for health insurance.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function( diff --git a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py rename to src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index e9a4a24002..9f67871290 100644 --- a/src/_gettsim/taxes/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -1,6 +1,6 @@ """Income relevant for public health insurance contributions.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/midijob.py rename to src/_gettsim/sozialversicherung/midijob.py index 3014dc5a5e..33e33bf8eb 100644 --- a/src/_gettsim/taxes/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -1,6 +1,6 @@ """Midijob.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py b/src/_gettsim/sozialversicherung/pflege/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py rename to src/_gettsim/sozialversicherung/pflege/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py b/src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py rename to src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py rename to src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 1a394fba31..6a9c5a6b72 100644 --- a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -1,6 +1,6 @@ """Contributions to public long-term care insurance.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") diff --git a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py similarity index 97% rename from src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py rename to src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 4671e77be1..108a5dce33 100644 --- a/src/_gettsim/taxes/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -1,7 +1,6 @@ """Contribution rate to public long-term care insurance.""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByPIDSpec, policy_function aggregation_specs = { "anzahl_kinder_bis_24_elternteil_1": AggregateByPIDSpec( diff --git "a/src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" similarity index 97% rename from "src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" rename to "src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index 021274afe5..f32c0f2706 100644 --- "a/src/_gettsim/taxes/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -1,6 +1,6 @@ """Regularly employed.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") diff --git a/src/_gettsim/taxes/sozialversicherung/rente/beitrag/__init__.py b/src/_gettsim/sozialversicherung/rente/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/beitrag/__init__.py rename to src/_gettsim/sozialversicherung/rente/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py similarity index 95% rename from src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py rename to src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py index 646b874268..0ea1c3f9e0 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/alter_bei_renteneintritt.py +++ b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py @@ -1,6 +1,6 @@ """Public pension benefits.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/__init__.py similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/__init__.py rename to src/_gettsim/sozialversicherung/rente/altersrente/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py rename to src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 67e84acc1d..08f1ae4747 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -1,6 +1,6 @@ """Age thresholds for public pension eligibility.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2011-12-31", leaf_name="altersgrenze_abschlagsfrei") diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py rename to src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index f74cf2be53..81f592b93d 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -1,6 +1,6 @@ """Public pension benefits for retirement due to age.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2020-12-31") diff --git a/src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" similarity index 100% rename from src/_gettsim/taxes/sozialversicherung/rente/grundrente/__init__.py rename to "src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" similarity index 98% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" rename to "src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index 4f4701d2bb..22a97242d4 100644 --- "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -1,6 +1,6 @@ """Pathway for the very long-term insured.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function( diff --git a/src/_gettsim/transfers/__init__.py "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" similarity index 100% rename from src/_gettsim/transfers/__init__.py rename to "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" similarity index 99% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" rename to "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index e6fc2b95b9..133d4b1048 100644 --- "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -3,7 +3,7 @@ Revoked for birth cohorts after 1951. """ -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") diff --git a/src/_gettsim/transfers/arbeitslosengeld_2/__init__.py "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" similarity index 100% rename from src/_gettsim/transfers/arbeitslosengeld_2/__init__.py rename to "src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" diff --git "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" similarity index 99% rename from "src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" rename to "src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index c08d3559ac..b46aa77c75 100644 --- "a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -1,6 +1,6 @@ """Pathway for the long-term insured.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") diff --git a/src/_gettsim/transfers/elterngeld/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py similarity index 100% rename from src/_gettsim/transfers/elterngeld/__init__.py rename to src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py similarity index 98% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py rename to src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index 037869709b..17c11490be 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -1,6 +1,6 @@ """Regular pathway.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2007-04-19", leaf_name="altersgrenze") diff --git a/src/_gettsim/transfers/erziehungsgeld/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py similarity index 100% rename from src/_gettsim/transfers/erziehungsgeld/__init__.py rename to src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py rename to src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index c804606466..d5c1c6e55d 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -3,7 +3,7 @@ Revoked for birth cohorts after 1951. """ -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") diff --git a/src/_gettsim/transfers/grundsicherung/__init__.py b/src/_gettsim/sozialversicherung/rente/beitrag/__init__.py similarity index 100% rename from src/_gettsim/transfers/grundsicherung/__init__.py rename to src/_gettsim/sozialversicherung/rente/beitrag/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py rename to src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index ed5550eb1c..68d5569bfc 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -1,6 +1,6 @@ """Public pension insurance contributions.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") diff --git a/src/_gettsim/transfers/grundsicherung/im_alter/__init__.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py similarity index 100% rename from src/_gettsim/transfers/grundsicherung/im_alter/__init__.py rename to src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py rename to src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 8d31abe1c2..b885f616c8 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -1,6 +1,6 @@ """Public pension benefits for retirement due to reduced earnings potential.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function(start_date="2001-01-01") diff --git a/src/_gettsim/transfers/kinderbonus/__init__.py b/src/_gettsim/sozialversicherung/rente/grundrente/__init__.py similarity index 100% rename from src/_gettsim/transfers/kinderbonus/__init__.py rename to src/_gettsim/sozialversicherung/rente/grundrente/__init__.py diff --git a/src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py rename to src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index dfa2cdb2b5..d1556064df 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -1,5 +1,4 @@ -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import piecewise_polynomial, policy_function @policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") diff --git a/src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py b/src/_gettsim/sozialversicherung/rente/wartezeit.py similarity index 99% rename from src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py rename to src/_gettsim/sozialversicherung/rente/wartezeit.py index 5fea24067a..3f373253dc 100644 --- a/src/_gettsim/taxes/sozialversicherung/rente/wartezeit.py +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.py @@ -1,6 +1,6 @@ """Pension-relevant periods.""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index d0013f860e..76849aead2 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -6,8 +6,12 @@ import numpy import pandas as pd -from _gettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS, TYPES_INPUT_VARIABLES -from _gettsim.policy_environment import _load_parameter_group_from_yaml +from _gettsim.config import ( + RESOURCE_DIR, + SUPPORTED_GROUPINGS, + TYPES_INPUT_VARIABLES, +) +from ttsim.policy_environment import _load_parameter_group_from_yaml current_year = datetime.datetime.today().year @@ -150,7 +154,7 @@ def create_basic_households( { "hh_id": [i] * (n_adults + n_children), "hh_typ": [hh_typ_string] * (n_adults + n_children), - "sozialversicherung__pflege__beitrag__hat_kinder": sozialversicherung__pflege__beitrag__hat_kinder, # noqa: E501 + "sozialversicherung__pflege__beitrag__hat_kinder": sozialversicherung__pflege__beitrag__hat_kinder, "familie__alleinerziehend": familie__alleinerziehend, # Assumption: All children are biological children of the adults, children # do not have children themselves @@ -319,7 +323,7 @@ def create_constant_across_households_variables(df, n_adults, n_children, policy "elterngeld__nettoeinkommen_vorjahr_m": 20000.0, "geburtsjahr": policy_year - df["alter"], "jahr_renteneintr": policy_year - df["alter"] + 67, - "rente__grundrente__sozialversicherung__rente__grundrente__grundrentenzeiten_monate": ( # noqa: E501 + "rente__grundrente__sozialversicherung__rente__grundrente__grundrentenzeiten_monate": ( df["alter"] - 20 ).clip(lower=0) * 12, diff --git a/src/_gettsim/transfers/kindergeld/__init__.py b/src/_gettsim/unterhalt/__init__.py similarity index 100% rename from src/_gettsim/transfers/kindergeld/__init__.py rename to src/_gettsim/unterhalt/__init__.py diff --git a/src/_gettsim/transfers/unterhalt/unterhalt.py b/src/_gettsim/unterhalt/unterhalt.py similarity index 94% rename from src/_gettsim/transfers/unterhalt/unterhalt.py rename to src/_gettsim/unterhalt/unterhalt.py index 4e2fe9eb80..a21c799f3c 100644 --- a/src/_gettsim/transfers/unterhalt/unterhalt.py +++ b/src/_gettsim/unterhalt/unterhalt.py @@ -1,6 +1,6 @@ """Alimony payments (Unterhalt).""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/transfers/kinderzuschlag/__init__.py b/src/_gettsim/unterhaltsvorschuss/__init__.py similarity index 100% rename from src/_gettsim/transfers/kinderzuschlag/__init__.py rename to src/_gettsim/unterhaltsvorschuss/__init__.py diff --git a/src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py similarity index 99% rename from src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py rename to src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index a7d2990757..18ee04d8e8 100644 --- a/src/_gettsim/transfers/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -2,9 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.function_types import policy_function -from _gettsim.shared import join_numpy +from ttsim import AggregateByPIDSpec, join_numpy, policy_function aggregation_specs = { "an_elternteil_auszuzahlender_betrag_m": AggregateByPIDSpec( diff --git a/src/_gettsim/transfers/unterhalt/__init__.py "b/src/_gettsim/vorrangpr\303\274fungen/__init__.py" similarity index 100% rename from src/_gettsim/transfers/unterhalt/__init__.py rename to "src/_gettsim/vorrangpr\303\274fungen/__init__.py" diff --git "a/src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" similarity index 96% rename from "src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" rename to "src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index a0cd19f2c3..191245855f 100644 --- "a/src/_gettsim/transfers/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -1,7 +1,6 @@ """Priority checks of transfers against each other.""" -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import policy_function +from ttsim import AggregateByGroupSpec, policy_function aggregation_specs = { "wohngeld_vorrang_wthh": AggregateByGroupSpec( diff --git a/src/_gettsim/transfers/unterhaltsvorschuss/__init__.py b/src/_gettsim/wohngeld/__init__.py similarity index 100% rename from src/_gettsim/transfers/unterhaltsvorschuss/__init__.py rename to src/_gettsim/wohngeld/__init__.py diff --git a/src/_gettsim/transfers/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py similarity index 98% rename from src/_gettsim/transfers/wohngeld/einkommen.py rename to src/_gettsim/wohngeld/einkommen.py index 19e07c458e..e71eb47a91 100644 --- a/src/_gettsim/transfers/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -1,9 +1,7 @@ """Income relevant for housing benefit calculation.""" -from _gettsim.aggregation import AggregateByPIDSpec -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import policy_function -from _gettsim.piecewise_functions import piecewise_polynomial +from ttsim import AggregateByPIDSpec, piecewise_polynomial, policy_function +from ttsim.config import numpy_or_jax as np aggregation_specs = { "alleinerziehendenbonus": AggregateByPIDSpec( diff --git a/src/_gettsim/transfers/wohngeld/group_by_ids.py b/src/_gettsim/wohngeld/group_by_ids.py similarity index 90% rename from src/_gettsim/transfers/wohngeld/group_by_ids.py rename to src/_gettsim/wohngeld/group_by_ids.py index c001e7af24..12ea4cc902 100644 --- a/src/_gettsim/transfers/wohngeld/group_by_ids.py +++ b/src/_gettsim/wohngeld/group_by_ids.py @@ -2,8 +2,7 @@ import numpy -from _gettsim.aggregation import AggregateByGroupSpec -from _gettsim.function_types import group_by_function +from ttsim import AggregateByGroupSpec, group_by_function aggregation_specs = { "anzahl_personen_wthh": AggregateByGroupSpec( diff --git a/src/_gettsim/transfers/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py similarity index 98% rename from src/_gettsim/transfers/wohngeld/miete.py rename to src/_gettsim/wohngeld/miete.py index 9ca1834bb3..50ae40805d 100644 --- a/src/_gettsim/transfers/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -1,7 +1,7 @@ """Renting costs relevant for housing benefit calculation.""" -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import policy_function +from ttsim import policy_function +from ttsim.config import numpy_or_jax as np @policy_function() diff --git a/src/_gettsim/transfers/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py similarity index 99% rename from src/_gettsim/transfers/wohngeld/voraussetzungen.py rename to src/_gettsim/wohngeld/voraussetzungen.py index 48b88a57cb..7c22f7221f 100644 --- a/src/_gettsim/transfers/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -1,6 +1,6 @@ """Eligibility checks for housing benefits (Wohngeld).""" -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim/transfers/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py similarity index 99% rename from src/_gettsim/transfers/wohngeld/wohngeld.py rename to src/_gettsim/wohngeld/wohngeld.py index e4db0eae85..8e69319424 100644 --- a/src/_gettsim/transfers/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -16,7 +16,7 @@ 3. In this sense, this implementation is an approximation of the actual Wohngeld. """ -from _gettsim.function_types import policy_function +from ttsim import policy_function @policy_function() diff --git a/src/_gettsim_tests/__init__.py b/src/_gettsim_tests/__init__.py index 86e1ac71ad..98c27aeff7 100644 --- a/src/_gettsim_tests/__init__.py +++ b/src/_gettsim_tests/__init__.py @@ -6,4 +6,3 @@ # Obtain the test directory of the package. TEST_DIR = Path(__file__).parent.resolve() -TEST_DATA_DIR = TEST_DIR / "test_data" diff --git a/src/_gettsim_tests/_helpers.py b/src/_gettsim_tests/_helpers.py index 8c2baa6b29..42835be8c1 100644 --- a/src/_gettsim_tests/_helpers.py +++ b/src/_gettsim_tests/_helpers.py @@ -3,11 +3,11 @@ from functools import lru_cache from typing import TYPE_CHECKING -from _gettsim.policy_environment import ( +from ttsim import ( PolicyEnvironment, - _parse_date, set_up_policy_environment, ) +from ttsim.policy_environment import _parse_date if TYPE_CHECKING: import datetime diff --git a/src/_gettsim_tests/_policy_test_utils.py b/src/_gettsim_tests/_policy_test_utils.py index c7f0dc7115..358a9a2af3 100644 --- a/src/_gettsim_tests/_policy_test_utils.py +++ b/src/_gettsim_tests/_policy_test_utils.py @@ -7,12 +7,12 @@ import pandas as pd import yaml -from _gettsim.shared import merge_trees +from ttsim import merge_trees if TYPE_CHECKING: from pathlib import Path - from _gettsim.typing import NestedDataDict, NestedInputStructureDict + from ttsim import NestedDataDict, NestedInputStructureDict class PolicyTest: @@ -32,9 +32,9 @@ def __init__( @property def target_structure(self) -> NestedInputStructureDict: - flat_target_structure = { - k: None for k in dt.flatten_to_tree_paths(self.expected_output_tree) - } + flat_target_structure = dict.fromkeys( + dt.flatten_to_tree_paths(self.expected_output_tree) + ) return dt.unflatten_from_tree_paths(flat_target_structure) @property @@ -43,9 +43,9 @@ def test_name(self) -> str: def load_policy_test_data(policy_name: str) -> list[PolicyTest]: - from _gettsim_tests import TEST_DATA_DIR + from _gettsim_tests import TEST_DIR - root = TEST_DATA_DIR / policy_name + root = TEST_DIR / "test_data" / policy_name out = [] diff --git a/src/_gettsim_tests/conftest.py b/src/_gettsim_tests/conftest.py index baf31e22d5..6a7eb4b996 100644 --- a/src/_gettsim_tests/conftest.py +++ b/src/_gettsim_tests/conftest.py @@ -1,4 +1,4 @@ -from _gettsim.config import set_array_backend +from ttsim.config import set_array_backend def pytest_addoption(parser): # type: ignore[no-untyped-def] diff --git a/src/_gettsim_tests/test_arbeitslosengeld.py b/src/_gettsim_tests/test_arbeitslosengeld.py index b7eab64abb..2e6d931a47 100644 --- a/src/_gettsim_tests/test_arbeitslosengeld.py +++ b/src/_gettsim_tests/test_arbeitslosengeld.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("arbeitslosengeld") diff --git a/src/_gettsim_tests/test_arbeitslosengeld_2.py b/src/_gettsim_tests/test_arbeitslosengeld_2.py index c036a7a364..9c29c3f5cc 100644 --- a/src/_gettsim_tests/test_arbeitslosengeld_2.py +++ b/src/_gettsim_tests/test_arbeitslosengeld_2.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("arbeitslosengeld_2") diff --git a/src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml "b/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/demographics/2024/pflegev_anz_kinder_bis_24.yaml rename to "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" diff --git a/src/_gettsim_tests/test_demographics.py b/src/_gettsim_tests/test_demographics.py deleted file mode 100644 index 966c05dd4f..0000000000 --- a/src/_gettsim_tests/test_demographics.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data - -test_data = load_policy_test_data("demographics") - - -@pytest.mark.parametrize("test", test_data) -def test_demographics(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_einkommensteuer.py b/src/_gettsim_tests/test_einkommensteuer.py index ca30332de5..73d99c7d22 100644 --- a/src/_gettsim_tests/test_einkommensteuer.py +++ b/src/_gettsim_tests/test_einkommensteuer.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("einkommensteuer") diff --git a/src/_gettsim_tests/test_elterngeld.py b/src/_gettsim_tests/test_elterngeld.py index 9b5d6ca44a..3eceef0adc 100644 --- a/src/_gettsim_tests/test_elterngeld.py +++ b/src/_gettsim_tests/test_elterngeld.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("elterngeld") diff --git a/src/_gettsim_tests/test_erwerbsminderungsrente.py b/src/_gettsim_tests/test_erwerbsminderungsrente.py index 60c4efc102..37dfc79fb3 100644 --- a/src/_gettsim_tests/test_erwerbsminderungsrente.py +++ b/src/_gettsim_tests/test_erwerbsminderungsrente.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("erwerbsminderungsrente") diff --git a/src/_gettsim_tests/test_erziehungsgeld.py b/src/_gettsim_tests/test_erziehungsgeld.py index 3764857359..3ec504a579 100644 --- a/src/_gettsim_tests/test_erziehungsgeld.py +++ b/src/_gettsim_tests/test_erziehungsgeld.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("erziehungsgeld") diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 0556197d20..afc6b2d9c5 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -2,10 +2,10 @@ import pytest from _gettsim.config import TYPES_INPUT_VARIABLES -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.typing import check_series_has_expected_type from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers +from ttsim.typing import check_series_has_expected_type test_data = load_policy_test_data("full_taxes_and_transfers") diff --git a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py index c183efee96..04694ab74f 100644 --- a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py +++ b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("ges_rente_hinzuverdienst") diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index 6b5e1d657a..fcbe045e35 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -3,9 +3,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("groupings") diff --git a/src/_gettsim_tests/test_grundrente.py b/src/_gettsim_tests/test_grundrente.py index 146c337729..f3948bf9fb 100644 --- a/src/_gettsim_tests/test_grundrente.py +++ b/src/_gettsim_tests/test_grundrente.py @@ -4,9 +4,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers grundrente_test_data = load_policy_test_data("grundrente") proxy_rente_test_data = load_policy_test_data("grundrente_proxy_rente") diff --git a/src/_gettsim_tests/test_grundsicherung_im_alter.py b/src/_gettsim_tests/test_grundsicherung_im_alter.py index d2f89c1192..2834428092 100644 --- a/src/_gettsim_tests/test_grundsicherung_im_alter.py +++ b/src/_gettsim_tests/test_grundsicherung_im_alter.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("grundsicherung_im_alter") diff --git "a/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" "b/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" index ee9d3ebc14..41364ae935 100644 --- "a/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" +++ "b/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("günstigerprüfungen") diff --git a/src/_gettsim_tests/test_kindergeld.py b/src/_gettsim_tests/test_kindergeld.py index 22eb439961..23c95d9fa0 100644 --- a/src/_gettsim_tests/test_kindergeld.py +++ b/src/_gettsim_tests/test_kindergeld.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("kindergeld") diff --git a/src/_gettsim_tests/test_kinderzuschlag.py b/src/_gettsim_tests/test_kinderzuschlag.py index 7c786b7c47..20e73a8d93 100644 --- a/src/_gettsim_tests/test_kinderzuschlag.py +++ b/src/_gettsim_tests/test_kinderzuschlag.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("kinderzuschlag") diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py index 2c5234f496..aff5134baa 100644 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -2,10 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.policy_environment import set_up_policy_environment from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers, set_up_policy_environment test_data = load_policy_test_data("lohnsteuer") diff --git a/src/_gettsim_tests/test_minijobgrenze.py b/src/_gettsim_tests/test_minijobgrenze.py index 8aead5a126..2e324b2b6b 100644 --- a/src/_gettsim_tests/test_minijobgrenze.py +++ b/src/_gettsim_tests/test_minijobgrenze.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("minijobgrenze") diff --git a/src/_gettsim_tests/test_rente_altersgrenzen.py b/src/_gettsim_tests/test_rente_altersgrenzen.py index ce9b6b3c60..65f4ae6c02 100644 --- a/src/_gettsim_tests/test_rente_altersgrenzen.py +++ b/src/_gettsim_tests/test_rente_altersgrenzen.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("rente_altersgrenzen") diff --git a/src/_gettsim_tests/test_rente_anspruch.py b/src/_gettsim_tests/test_rente_anspruch.py index 45db4bccd1..c3e377f708 100644 --- a/src/_gettsim_tests/test_rente_anspruch.py +++ b/src/_gettsim_tests/test_rente_anspruch.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("rente_anspruch") diff --git "a/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" "b/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" index 7588dc6cd5..da887a8dc8 100644 --- "a/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("solidaritätszuschlag") diff --git "a/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" "b/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" index 464a722603..582c33f0a7 100644 --- "a/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" +++ "b/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("sozialversicherungsbeiträge") diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py index 97d5d1bee3..985c002806 100644 --- a/src/_gettsim_tests/test_synthetic.py +++ b/src/_gettsim_tests/test_synthetic.py @@ -5,9 +5,8 @@ import pytest from _gettsim.config import DEFAULT_TARGETS -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.policy_environment import set_up_policy_environment from _gettsim.synthetic import create_synthetic_data +from ttsim import compute_taxes_and_transfers, set_up_policy_environment @pytest.fixture @@ -36,8 +35,8 @@ def synthetic_data_spec_variables(): n_adults=2, n_children=1, specs_constant_over_households={ - "basic_inputs__alter": [50, 30, 5], - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + "alter": [50, 30, 5], + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ 1000, 2000, 0, @@ -53,9 +52,9 @@ def synthetic_data_spec_heterogeneous_married(): n_adults=2, n_children=1, adults_married=True, - specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, + specs_constant_over_households={"alter": [50, 30, 5]}, specs_heterogeneous={ - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ [i / 2, i / 2, 0] for i in range(0, 1001, 100) ] }, @@ -69,9 +68,9 @@ def synthetic_data_spec_heterogeneous_not_married(): n_adults=2, n_children=1, adults_married=False, - specs_constant_over_households={"basic_inputs__alter": [50, 30, 5]}, + specs_constant_over_households={"alter": [50, 30, 5]}, specs_heterogeneous={ - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ [i / 2, i / 2, 0] for i in range(0, 1001, 100) ] }, @@ -99,7 +98,7 @@ def synthetic_data_spec_heterogeneous_not_married(): ) def test_positive_rent(df, request): df = request.getfixturevalue(df) - assert df["basic_inputs__wohnen__bruttokaltmiete_m_hh"].min() > 0 + assert df["wohnen__bruttokaltmiete_m_hh"].min() > 0 @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -109,7 +108,7 @@ def test_positive_rent(df, request): ) def test_no_nans(df, request): df = request.getfixturevalue(df) - assert df["basic_inputs__wohnen__bruttokaltmiete_m_hh"].notna().all().all() + assert df["wohnen__bruttokaltmiete_m_hh"].notna().all().all() @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") @@ -150,16 +149,12 @@ def test_correct_size(df, exp_n_rows, request): @pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") def test_alleinerziehend(synthetic_data_alleinerziehend): pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["basic_inputs__alleinerz"], - pd.Series([True, False], name="basic_inputs__alleinerz"), + synthetic_data_alleinerziehend["alleinerz"], + pd.Series([True, False], name="alleinerz"), ) pd.testing.assert_series_equal( - synthetic_data_alleinerziehend[ - "basic_inputs__einkommensteuer__gemeinsam_veranlagt" - ], - pd.Series( - [False, False], name="basic_inputs__einkommensteuer__gemeinsam_veranlagt" - ), + synthetic_data_alleinerziehend["einkommensteuer__gemeinsam_veranlagt"], + pd.Series([False, False], name="einkommensteuer__gemeinsam_veranlagt"), ) @@ -167,9 +162,9 @@ def test_alleinerziehend(synthetic_data_alleinerziehend): @pytest.mark.parametrize( "col, expected", [ - ("basic_inputs__alter", [50, 30, 5]), + ("alter", [50, 30, 5]), ( - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", [1000, 2000, 0], ), ], @@ -184,13 +179,13 @@ def test_specs_constant_over_households(col, expected, synthetic_data_spec_varia @pytest.mark.parametrize( "col, expected", [ - ("basic_inputs__alter", [50, 30, 5] * 11), + ("alter", [50, 30, 5] * 11), ( - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", numpy.concatenate([[i / 2, i / 2, 0] for i in range(0, 1001, 100)]), ), ( - "basic_inputs__einkommensteuer__gemeinsam_veranlagt", + "einkommensteuer__gemeinsam_veranlagt", [True, True, False] * 11, ), ], @@ -221,8 +216,8 @@ def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_ma 0, None, { - "basic_inputs__alter": [[30, 20], [40, 30]], - "basic_inputs__einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ + "alter": [[30, 20], [40, 30]], + "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ [300, 200] ], }, diff --git a/src/_gettsim_tests/test_unterhalt.py b/src/_gettsim_tests/test_unterhalt.py index 9cd81cef84..d3dd2209c1 100644 --- a/src/_gettsim_tests/test_unterhalt.py +++ b/src/_gettsim_tests/test_unterhalt.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("unterhalt") diff --git a/src/_gettsim_tests/test_unterhaltsvorschuss.py b/src/_gettsim_tests/test_unterhaltsvorschuss.py index 7284f3557b..1a6824a5d5 100644 --- a/src/_gettsim_tests/test_unterhaltsvorschuss.py +++ b/src/_gettsim_tests/test_unterhaltsvorschuss.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("unterhaltsvorschuss") diff --git "a/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" "b/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" index f255afcd09..219d043f80 100644 --- "a/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" +++ "b/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("vorrangprüfungen") diff --git a/src/_gettsim_tests/test_vorsorgeaufwand.py b/src/_gettsim_tests/test_vorsorgeaufwand.py index 47afab1d67..0394291a1b 100644 --- a/src/_gettsim_tests/test_vorsorgeaufwand.py +++ b/src/_gettsim_tests/test_vorsorgeaufwand.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("vorsorgeaufwand") diff --git a/src/_gettsim_tests/test_warn_if_repeated_execution.py b/src/_gettsim_tests/test_warn_if_repeated_execution.py new file mode 100644 index 0000000000..8bfceff5f5 --- /dev/null +++ b/src/_gettsim_tests/test_warn_if_repeated_execution.py @@ -0,0 +1,10 @@ +import pytest + + +def test_warn_when_internal_tests_are_executed_repeatedly(): + from gettsim import test + + test("--collect-only") + + with pytest.warns(UserWarning, match="Repeated execution of the test suite"): + test("--collect-only") diff --git a/src/_gettsim_tests/test_wohngeld.py b/src/_gettsim_tests/test_wohngeld.py index af639308c7..506c76ec34 100644 --- a/src/_gettsim_tests/test_wohngeld.py +++ b/src/_gettsim_tests/test_wohngeld.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("wohngeld") diff --git a/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py b/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py index f4e2c5cc4e..a73dac287e 100644 --- a/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py +++ b/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("zu_versteuerndes_einkommen") diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 09c66c00f2..08bb266fdd 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -16,25 +16,21 @@ import pytest -from _gettsim import ( - aggregation, - config, - piecewise_functions, - shared, - taxes, - transfers, - typing, - visualization, -) -from _gettsim.function_types import PolicyFunction -from _gettsim.interface import ( +from _gettsim.synthetic import create_synthetic_data +from _gettsim_tests import TEST_DIR +from ttsim import ( + AggregateByGroupSpec, + AggregateByPIDSpec, FunctionsAndColumnsOverlapWarning, + GroupByFunction, + PolicyEnvironment, + PolicyFunction, compute_taxes_and_transfers, + group_by_function, + plot_dag, + policy_function, + set_up_policy_environment, ) -from _gettsim.policy_environment import PolicyEnvironment, set_up_policy_environment -from _gettsim.synthetic import create_synthetic_data -from _gettsim.visualization import plot_dag -from _gettsim_tests import TEST_DIR COUNTER_TEST_EXECUTIONS = itertools.count() @@ -54,24 +50,17 @@ def test(*args): __all__ = [ - "__version__", + "AggregateByGroupSpec", + "AggregateByPIDSpec", "FunctionsAndColumnsOverlapWarning", + "GroupByFunction", "PolicyEnvironment", "PolicyFunction", + "__version__", "compute_taxes_and_transfers", - "set_up_policy_environment", - "plot_dag", - # TODO (@hmgaudecker): See what can be changed/removed from remainder. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/378 - "aggregation", - "config", - "piecewise_functions", - "policy_environment", - "shared", - "social_insurance_contributions", "create_synthetic_data", - "taxes", - "transfers", - "typing", - "visualization", + "group_by_function", + "plot_dag", + "policy_function", + "set_up_policy_environment", ] diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py new file mode 100644 index 0000000000..48feb09816 --- /dev/null +++ b/src/ttsim/__init__.py @@ -0,0 +1,60 @@ +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.combine_functions import combine_policy_functions_and_derived_functions +from ttsim.compute_taxes_and_transfers import ( + FunctionsAndColumnsOverlapWarning, + compute_taxes_and_transfers, +) +from ttsim.function_types import ( + DerivedAggregationFunction, + DerivedTimeConversionFunction, + GroupByFunction, + PolicyFunction, + group_by_function, + policy_function, +) +from ttsim.loader import ( + ConflictingTimeDependentFunctionsError, + get_active_functions_tree_from_module, + load_aggregation_specs_tree, + load_functions_tree_for_date, +) +from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial +from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment +from ttsim.shared import ( + insert_path_and_value, + join_numpy, + merge_trees, + upsert_path_and_value, + upsert_tree, +) +from ttsim.time_conversion import create_time_conversion_functions +from ttsim.visualization import plot_dag + +__all__ = [ + "AggregateByGroupSpec", + "AggregateByPIDSpec", + "ConflictingTimeDependentFunctionsError", + "DerivedAggregationFunction", + "DerivedTimeConversionFunction", + "FunctionsAndColumnsOverlapWarning", + "GroupByFunction", + "PolicyEnvironment", + "PolicyFunction", + "combine_policy_functions_and_derived_functions", + "compute_taxes_and_transfers", + "create_time_conversion_functions", + "get_active_functions_tree_from_module", + "get_piecewise_parameters", + "group_by_function", + "insert_path_and_value", + "join_numpy", + "load_aggregation_specs_tree", + "load_functions_tree_for_date", + "merge_trees", + "piecewise_polynomial", + "plot_dag", + "policy_function", + "set_up_policy_environment", + "upsert_path_and_value", + "upsert_tree", +] diff --git a/src/_gettsim/aggregation.py b/src/ttsim/aggregation.py similarity index 61% rename from src/_gettsim/aggregation.py rename to src/ttsim/aggregation.py index 1b7c778496..c757550f19 100644 --- a/src/_gettsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -1,34 +1,34 @@ from dataclasses import dataclass -from _gettsim.aggregation_jax import all_by_p_id as all_by_p_id_jax -from _gettsim.aggregation_jax import any_by_p_id as any_by_p_id_jax -from _gettsim.aggregation_jax import count_by_p_id as count_by_p_id_jax -from _gettsim.aggregation_jax import grouped_all as grouped_all_jax -from _gettsim.aggregation_jax import grouped_any as grouped_any_jax -from _gettsim.aggregation_jax import grouped_count as grouped_count_jax -from _gettsim.aggregation_jax import grouped_max as grouped_max_jax -from _gettsim.aggregation_jax import grouped_mean as grouped_mean_jax -from _gettsim.aggregation_jax import grouped_min as grouped_min_jax -from _gettsim.aggregation_jax import grouped_sum as grouped_sum_jax -from _gettsim.aggregation_jax import max_by_p_id as max_by_p_id_jax -from _gettsim.aggregation_jax import mean_by_p_id as mean_by_p_id_jax -from _gettsim.aggregation_jax import min_by_p_id as min_by_p_id_jax -from _gettsim.aggregation_jax import sum_by_p_id as sum_by_p_id_jax -from _gettsim.aggregation_numpy import all_by_p_id as all_by_p_id_numpy -from _gettsim.aggregation_numpy import any_by_p_id as any_by_p_id_numpy -from _gettsim.aggregation_numpy import count_by_p_id as count_by_p_id_numpy -from _gettsim.aggregation_numpy import grouped_all as grouped_all_numpy -from _gettsim.aggregation_numpy import grouped_any as grouped_any_numpy -from _gettsim.aggregation_numpy import grouped_count as grouped_count_numpy -from _gettsim.aggregation_numpy import grouped_max as grouped_max_numpy -from _gettsim.aggregation_numpy import grouped_mean as grouped_mean_numpy -from _gettsim.aggregation_numpy import grouped_min as grouped_min_numpy -from _gettsim.aggregation_numpy import grouped_sum as grouped_sum_numpy -from _gettsim.aggregation_numpy import max_by_p_id as max_by_p_id_numpy -from _gettsim.aggregation_numpy import mean_by_p_id as mean_by_p_id_numpy -from _gettsim.aggregation_numpy import min_by_p_id as min_by_p_id_numpy -from _gettsim.aggregation_numpy import sum_by_p_id as sum_by_p_id_numpy -from _gettsim.config import USE_JAX +from ttsim.aggregation_jax import all_by_p_id as all_by_p_id_jax +from ttsim.aggregation_jax import any_by_p_id as any_by_p_id_jax +from ttsim.aggregation_jax import count_by_p_id as count_by_p_id_jax +from ttsim.aggregation_jax import grouped_all as grouped_all_jax +from ttsim.aggregation_jax import grouped_any as grouped_any_jax +from ttsim.aggregation_jax import grouped_count as grouped_count_jax +from ttsim.aggregation_jax import grouped_max as grouped_max_jax +from ttsim.aggregation_jax import grouped_mean as grouped_mean_jax +from ttsim.aggregation_jax import grouped_min as grouped_min_jax +from ttsim.aggregation_jax import grouped_sum as grouped_sum_jax +from ttsim.aggregation_jax import max_by_p_id as max_by_p_id_jax +from ttsim.aggregation_jax import mean_by_p_id as mean_by_p_id_jax +from ttsim.aggregation_jax import min_by_p_id as min_by_p_id_jax +from ttsim.aggregation_jax import sum_by_p_id as sum_by_p_id_jax +from ttsim.aggregation_numpy import all_by_p_id as all_by_p_id_numpy +from ttsim.aggregation_numpy import any_by_p_id as any_by_p_id_numpy +from ttsim.aggregation_numpy import count_by_p_id as count_by_p_id_numpy +from ttsim.aggregation_numpy import grouped_all as grouped_all_numpy +from ttsim.aggregation_numpy import grouped_any as grouped_any_numpy +from ttsim.aggregation_numpy import grouped_count as grouped_count_numpy +from ttsim.aggregation_numpy import grouped_max as grouped_max_numpy +from ttsim.aggregation_numpy import grouped_mean as grouped_mean_numpy +from ttsim.aggregation_numpy import grouped_min as grouped_min_numpy +from ttsim.aggregation_numpy import grouped_sum as grouped_sum_numpy +from ttsim.aggregation_numpy import max_by_p_id as max_by_p_id_numpy +from ttsim.aggregation_numpy import mean_by_p_id as mean_by_p_id_numpy +from ttsim.aggregation_numpy import min_by_p_id as min_by_p_id_numpy +from ttsim.aggregation_numpy import sum_by_p_id as sum_by_p_id_numpy +from ttsim.config import USE_JAX @dataclass diff --git a/src/_gettsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py similarity index 99% rename from src/_gettsim/aggregation_jax.py rename to src/ttsim/aggregation_jax.py index 68e24eaecb..8aa4dd643d 100644 --- a/src/_gettsim/aggregation_jax.py +++ b/src/ttsim/aggregation_jax.py @@ -1,4 +1,4 @@ -from _gettsim.aggregation_numpy import ( +from ttsim.aggregation_numpy import ( fail_if_dtype_not_boolean_or_int, fail_if_dtype_not_float, fail_if_dtype_not_int, diff --git a/src/_gettsim/aggregation_numpy.py b/src/ttsim/aggregation_numpy.py similarity index 100% rename from src/_gettsim/aggregation_numpy.py rename to src/ttsim/aggregation_numpy.py diff --git a/src/_gettsim/combine_functions.py b/src/ttsim/combine_functions.py similarity index 98% rename from src/_gettsim/combine_functions.py rename to src/ttsim/combine_functions.py index b1c75acb45..2320e1af62 100644 --- a/src/_gettsim/combine_functions.py +++ b/src/ttsim/combine_functions.py @@ -6,7 +6,11 @@ import dags import dags.tree as dt -from _gettsim.aggregation import ( +from _gettsim.config import ( + SUPPORTED_GROUPINGS, + TYPES_INPUT_VARIABLES, +) +from ttsim.aggregation import ( AggregateByGroupSpec, AggregateByPIDSpec, all_by_p_id, @@ -24,24 +28,20 @@ min_by_p_id, sum_by_p_id, ) -from _gettsim.config import ( - SUPPORTED_GROUPINGS, - TYPES_INPUT_VARIABLES, -) -from _gettsim.function_types import DerivedAggregationFunction, GroupByFunction -from _gettsim.shared import ( +from ttsim.function_types import DerivedAggregationFunction, GroupByFunction +from ttsim.shared import ( format_errors_and_warnings, format_list_linewise, get_name_of_group_by_id, get_names_of_arguments_without_defaults, remove_group_suffix, ) -from _gettsim.time_conversion import create_time_conversion_functions +from ttsim.time_conversion import create_time_conversion_functions if TYPE_CHECKING: from collections.abc import Callable - from _gettsim.typing import ( + from ttsim.typing import ( QualNameAggregationSpecsDict, QualNameDataDict, QualNameFunctionsDict, diff --git a/src/_gettsim/interface.py b/src/ttsim/compute_taxes_and_transfers.py similarity index 97% rename from src/_gettsim/interface.py rename to src/ttsim/compute_taxes_and_transfers.py index 04f1575eba..b31c5885a7 100644 --- a/src/_gettsim/interface.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -10,25 +10,25 @@ import networkx as nx import pandas as pd -from _gettsim.combine_functions import ( - combine_policy_functions_and_derived_functions, -) from _gettsim.config import ( DEFAULT_TARGETS, FOREIGN_KEYS, TYPES_INPUT_VARIABLES, ) -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import ( +from ttsim.combine_functions import ( + combine_policy_functions_and_derived_functions, +) +from ttsim.config import numpy_or_jax as np +from ttsim.function_types import ( DerivedAggregationFunction, DerivedTimeConversionFunction, GroupByFunction, PolicyFunction, ) -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.shared import ( +from ttsim.policy_environment import PolicyEnvironment +from ttsim.shared import ( KeyErrorMessage, - assert_valid_gettsim_pytree, + assert_valid_ttsim_pytree, format_errors_and_warnings, format_list_linewise, get_name_of_group_by_id, @@ -36,13 +36,13 @@ merge_trees, partition_by_reference_dict, ) -from _gettsim.typing import ( +from ttsim.typing import ( check_series_has_expected_type, convert_series_to_internal_type, ) if TYPE_CHECKING: - from _gettsim.typing import ( + from ttsim.typing import ( NestedDataDict, NestedTargetDict, QualNameDataDict, @@ -252,7 +252,7 @@ def _convert_data_to_correct_types( ) data_with_correct_types[name] = converted_leaf collected_conversions.append( - f" - {name} from {series.dtype} " f"to {internal_type.__name__}" + f" - {name} from {series.dtype} to {internal_type.__name__}" ) except ValueError as e: collected_errors.append(f"\n - {name}: {e}") @@ -499,7 +499,7 @@ def _fail_if_environment_not_valid(environment: Any) -> None: """ if not isinstance(environment, PolicyEnvironment): raise TypeError( - "The environment must be a PolicyEnvironment, got" f" {type(environment)}." + f"The environment must be a PolicyEnvironment, got {type(environment)}." ) @@ -507,7 +507,7 @@ def _fail_if_targets_tree_not_valid(targets_tree: NestedTargetDict) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. """ - assert_valid_gettsim_pytree( + assert_valid_ttsim_pytree( tree=targets_tree, leaf_checker=lambda leaf: leaf is None, tree_name="targets_tree", @@ -519,7 +519,7 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: Validate that the data tree is a dictionary with string keys and pd.Series or np.ndarray leaves. """ - assert_valid_gettsim_pytree( + assert_valid_ttsim_pytree( tree=data_tree, leaf_checker=lambda leaf: isinstance(leaf, pd.Series | np.ndarray), tree_name="data_tree", @@ -598,8 +598,7 @@ def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: if non_unique_p_ids: message = ( - "The following p_ids are non-unique in the input data:" - f"{non_unique_p_ids}" + f"The following p_ids are non-unique in the input data:{non_unique_p_ids}" ) raise ValueError(message) diff --git a/src/ttsim/config.py b/src/ttsim/config.py new file mode 100644 index 0000000000..750a16c390 --- /dev/null +++ b/src/ttsim/config.py @@ -0,0 +1,29 @@ +from __future__ import annotations + +import importlib + +import numpy + +# Defaults +USE_JAX = False +numpy_or_jax = numpy + + +def set_array_backend(backend: str): + """Set array library backend. + + backend (str): Must be in {'jax', 'numpy'}. + + """ + if backend not in {"jax", "numpy"}: + raise ValueError(f"Backend must be in {'jax', 'numpy'} but is {backend}.") + + if backend == "jax": + assert importlib.util.find_spec("jax") is not None, "JAX is not installed." + global USE_JAX # noqa: PLW0603 + global numpy_or_jax # noqa: PLW0603 + import jax + + USE_JAX = True + numpy_or_jax = jax.numpy + jax.config.update("jax_platform_name", "cpu") diff --git a/src/_gettsim/function_types/policy_function.py b/src/ttsim/function_types.py similarity index 59% rename from src/_gettsim/function_types/policy_function.py rename to src/ttsim/function_types.py index 7887710cd3..047fc44952 100644 --- a/src/_gettsim/function_types/policy_function.py +++ b/src/ttsim/function_types.py @@ -5,8 +5,9 @@ import inspect import re from collections.abc import Callable -from typing import TypeVar +from typing import Literal, TypeVar +import dags.tree as dt import numpy T = TypeVar("T") @@ -170,3 +171,132 @@ def wrapper_vectorize_func(*args, **kwargs): wrapper_vectorize_func.__signature__ = signature return wrapper_vectorize_func + + +class GroupByFunction(Callable): + """ + A function that computes endogenous group_by IDs. + + Parameters + ---------- + function: + The group_by function. + """ + + def __init__( + self, + *, + function: Callable, + leaf_name: str | None = None, + ): + self.function = function + self.leaf_name = leaf_name if leaf_name else function.__name__ + + # Expose the signature of the wrapped function for dependency resolution + self.__annotations__ = function.__annotations__ + self.__module__ = function.__module__ + self.__name__ = function.__name__ + self.__signature__ = inspect.signature(self.function) + + def __call__(self, *args, **kwargs): + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> set[str]: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + +def group_by_function() -> GroupByFunction: + """ + Decorator that creates a group_by function from a function. + """ + + def decorator(func: Callable) -> GroupByFunction: + return GroupByFunction(function=func) + + return decorator + + +class DerivedAggregationFunction(PolicyFunction): + """ + A function that is an aggregation of another function. + + Parameters + ---------- + function: + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + aggregation_target: + The qualified name of the aggregation target. + source_function: + The function from which the new function is derived. + source: + The name of the source function or data column. + aggregation_method: + The method of aggregation used. + """ + + def __init__( + self, + *, + function: Callable, + source_function: PolicyFunction + | DerivedTimeConversionFunction + | DerivedAggregationFunction + | None = None, + source: str, + aggregation_target: str, + aggregation_method: Literal["count", "sum", "mean", "min", "max", "any", "all"], + ): + super().__init__( + function=function, + leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], + start_date=source_function.start_date if source_function else None, + end_date=source_function.end_date if source_function else None, + params_key_for_rounding=None, + skip_vectorization=True, + ) + + self.source = source + self.aggregation_method = aggregation_method + + +class DerivedTimeConversionFunction(PolicyFunction): + """ + A function that is a time conversion of another function. + + Parameters + ---------- + function: + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + source_function: + The function from which the new function is derived. + source: + The name of the source function or data column. + conversion_target: + The qualified name of the conversion target. + """ + + def __init__( + self, + *, + function: Callable, + source_function: PolicyFunction + | DerivedTimeConversionFunction + | DerivedAggregationFunction + | None = None, + source: str, + conversion_target: str, + ): + super().__init__( + function=function, + leaf_name=dt.tree_path_from_qual_name(conversion_target)[-1], + start_date=source_function.start_date if source_function else None, + end_date=source_function.end_date if source_function else None, + params_key_for_rounding=None, + skip_vectorization=True, + ) + + self.source = source diff --git a/src/_gettsim/loader.py b/src/ttsim/loader.py similarity index 76% rename from src/_gettsim/loader.py rename to src/ttsim/loader.py index a71be0636d..2bf71da4f4 100644 --- a/src/_gettsim/loader.py +++ b/src/ttsim/loader.py @@ -6,12 +6,9 @@ import sys from typing import TYPE_CHECKING -from _gettsim.config import ( - PATHS_TO_INTERNAL_FUNCTIONS, - RESOURCE_DIR, -) -from _gettsim.function_types import GroupByFunction, PolicyFunction -from _gettsim.shared import ( +from _gettsim.config import RESOURCE_DIR +from ttsim.function_types import GroupByFunction, PolicyFunction +from ttsim.shared import ( create_tree_from_path_and_value, insert_path_and_value, merge_trees, @@ -22,8 +19,8 @@ from pathlib import Path from types import ModuleType - from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec - from _gettsim.typing import NestedAggregationSpecDict, NestedFunctionDict + from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec + from ttsim.typing import NestedAggregationSpecDict, NestedFunctionDict def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: @@ -45,13 +42,13 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: ------- A tree of active PolicyFunctions. """ - paths_to_functions = _find_python_files_recursively(PATHS_TO_INTERNAL_FUNCTIONS) + paths_to_functions = _find_python_files_recursively(RESOURCE_DIR) functions_tree = {} for path in paths_to_functions: new_functions_tree = get_active_functions_tree_from_module( - path=path, date=date, package_root=RESOURCE_DIR + path=path, date=date, root_path=RESOURCE_DIR ) functions_tree = merge_trees( @@ -64,7 +61,7 @@ def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: def get_active_functions_tree_from_module( path: Path, - package_root: Path, + root_path: Path, date: datetime.date, ) -> dict[str, PolicyFunction | GroupByFunction]: """Extract all active PolicyFunctions and GroupByFunctions from a module. @@ -73,8 +70,8 @@ def get_active_functions_tree_from_module( ---------- path The path to the module from which to extract the active functions. - package_root - The root of the package that contains the functions. + root_path + The path to the directory that contains the functions. date The date for which to extract the active functions. @@ -82,8 +79,8 @@ def get_active_functions_tree_from_module( ------- The tree of active PolicyFunctions and GroupByFunctions. """ - module = _load_module(path, package_root) - module_name = _convert_path_to_importable_module_name(path, package_root) + module = _load_module(path, root_path) + module_name = _convert_path_to_importable_module_name(path, root_path) all_functions_in_module = inspect.getmembers(module) @@ -106,7 +103,7 @@ def get_active_functions_tree_from_module( } return create_tree_from_path_and_value( - path=_convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR), + path=_convert_path_to_tree_path(path=path, root_path=root_path), value={**active_policy_functions, **group_by_functions}, ) @@ -178,7 +175,7 @@ def __str__(self): from {self.overlap_start} to {self.overlap_end}.""" -def _find_python_files_recursively(roots: list[Path]) -> list[Path]: +def _find_python_files_recursively(root_path: Path) -> list[Path]: """ Find all Python files reachable from the given roots. @@ -191,23 +188,11 @@ def _find_python_files_recursively(roots: list[Path]) -> list[Path]: ------- Absolute paths to all discovered Python files. """ - result = [] - - for root in roots: - if root.is_dir(): - modules = [ - file for file in root.rglob("*.py") if file.name != "__init__.py" - ] - result.extend(modules) - - else: - result.append(root) + return [file for file in root_path.rglob("*.py") if file.name != "__init__.py"] - return result - -def _load_module(path: Path, package_root: Path) -> ModuleType: - module_name = _convert_path_to_importable_module_name(path, package_root) +def _load_module(path: Path, root_path: Path) -> ModuleType: + module_name = _convert_path_to_importable_module_name(path, root_path) spec = importlib.util.spec_from_file_location(module_name, path) module = importlib.util.module_from_spec(spec) sys.modules[module_name] = module @@ -216,22 +201,22 @@ def _load_module(path: Path, package_root: Path) -> ModuleType: return module -def _convert_path_to_importable_module_name(path: Path, package_root: Path) -> str: +def _convert_path_to_importable_module_name(path: Path, root_path: Path) -> str: """ Convert an absolute path to a Python module name. Examples -------- >>> _convert_path_to_importable_module_name( - path=Path("/usr/gettsim/src/_gettsim/taxes/functions.py"), - package_root=Path("/usr/gettsim/src/_gettsim"), + path=Path("/usr/gettsim/src/_gettsim/familie/familie.py"), + root_path=Path("/usr/gettsim/src/_gettsim"), ) - "taxes.functions" + "familie.familie" """ - return path.relative_to(package_root).with_suffix("").as_posix().replace("/", ".") + return path.relative_to(root_path).with_suffix("").as_posix().replace("/", ".") -def _convert_path_to_tree_path(path: Path, package_root: Path) -> tuple[str, ...]: +def _convert_path_to_tree_path(path: Path, root_path: Path) -> tuple[str, ...]: """ Convert the path from the package root to a tree path. @@ -241,8 +226,8 @@ def _convert_path_to_tree_path(path: Path, package_root: Path) -> tuple[str, ... ---------- path: The path to a Python module. - package_root: - GETTSIM's package root. + root_path: + The root path of GETTSIM's taxes and transfers modules. Returns ------- @@ -251,16 +236,12 @@ def _convert_path_to_tree_path(path: Path, package_root: Path) -> tuple[str, ... Examples -------- >>> _convert_path_to_tree_path( - ... path=RESOURCE_DIR / "taxes" / "dir" / "functions.py", - ... package_root=RESOURCE_DIR, + ... path=RESOURCE_DIR / "de" / "dir" / "functions.py", + ... root_path=RESOURCE_DIR, ... ) ("dir") """ - parts = path.relative_to(package_root.parent / "_gettsim").parts - - # TODO(@MImmesberger): Remove the subsequent line after changing directory structure - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/805 - parts = parts[1:] if parts[0] in {"taxes", "transfers"} else parts + parts = path.relative_to(root_path).parts return parts[:-1] @@ -277,19 +258,17 @@ def load_aggregation_specs_tree() -> NestedAggregationSpecDict: ------- The aggregation tree. """ - paths_to_aggregation_specs = _find_python_files_recursively( - PATHS_TO_INTERNAL_FUNCTIONS - ) + paths_to_aggregation_specs = _find_python_files_recursively(RESOURCE_DIR) aggregation_specs_tree = {} for path in paths_to_aggregation_specs: aggregation_specs = _load_aggregation_specs_from_module( path=path, - package_root=RESOURCE_DIR, + root_path=RESOURCE_DIR, ) - tree_path = _convert_path_to_tree_path(path=path, package_root=RESOURCE_DIR) + tree_path = _convert_path_to_tree_path(path=path, root_path=RESOURCE_DIR) aggregation_specs_tree = insert_path_and_value( base=aggregation_specs_tree, @@ -302,7 +281,7 @@ def load_aggregation_specs_tree() -> NestedAggregationSpecDict: def _load_aggregation_specs_from_module( path: Path, - package_root: Path, + root_path: Path, ) -> dict[str, AggregateByGroupSpec | AggregateByPIDSpec]: """ Load aggregation specifications from one module. @@ -319,5 +298,5 @@ def _load_aggregation_specs_from_module( ------- Loaded dictionaries. """ - module = _load_module(path, package_root) + module = _load_module(path, root_path) return getattr(module, "aggregation_specs", {}) diff --git a/src/_gettsim/piecewise_functions.py b/src/ttsim/piecewise_polynomial.py similarity index 94% rename from src/_gettsim/piecewise_functions.py rename to src/ttsim/piecewise_polynomial.py index 393888818d..8f7675f02b 100644 --- a/src/_gettsim/piecewise_functions.py +++ b/src/ttsim/piecewise_polynomial.py @@ -101,16 +101,25 @@ def get_piecewise_parameters(parameter_dict, parameter, func_type): ) # Extract lower thresholds. - lower_thresholds, upper_thresholds, thresholds = check_thresholds( - parameter_dict, parameter, keys + lower_thresholds, upper_thresholds, thresholds = _check_thresholds( + parameter_dict=parameter_dict, parameter=parameter, keys=keys ) # Create and fill rates-array - rates = check_rates(parameter_dict, parameter, keys, func_type) - + rates = _check_rates( + parameter_dict=parameter_dict, + parameter=parameter, + keys=keys, + func_type=func_type, + ) # Create and fill interecept-array - intercepts = check_intercepts( - parameter_dict, parameter, lower_thresholds, upper_thresholds, rates, keys + intercepts = _check_intercepts( + parameter_dict=parameter_dict, + parameter=parameter, + lower_thresholds=lower_thresholds, + upper_thresholds=upper_thresholds, + rates=rates, + keys=keys, ) piecewise_elements = { "thresholds": numpy.array(thresholds), @@ -121,7 +130,7 @@ def get_piecewise_parameters(parameter_dict, parameter, func_type): return piecewise_elements -def check_thresholds(parameter_dict, parameter, keys): +def _check_thresholds(parameter_dict, parameter, keys): """Check and transfer raw threshold data. Transfer and check raw threshold data, which needs to be specified in a @@ -188,7 +197,7 @@ def check_thresholds(parameter_dict, parameter, keys): return lower_thresholds, upper_thresholds, thresholds -def check_rates(parameter_dict, parameter, keys, func_type): +def _check_rates(parameter_dict, parameter, keys, func_type): """Check and transfer raw rates data. Transfer and check raw rates data, which needs to be specified in a @@ -242,7 +251,7 @@ def check_rates(parameter_dict, parameter, keys, func_type): return rates -def check_intercepts( +def _check_intercepts( # noqa: PLR0913 parameter_dict, parameter, lower_thresholds, upper_thresholds, rates, keys ): """Check and transfer raw intercepte data. If necessary create intercepts. diff --git a/src/_gettsim/policy_environment.py b/src/ttsim/policy_environment.py similarity index 98% rename from src/_gettsim/policy_environment.py rename to src/ttsim/policy_environment.py index 9a7377df50..c800588094 100644 --- a/src/_gettsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -14,18 +14,22 @@ INTERNAL_PARAMS_GROUPS, RESOURCE_DIR, ) -from _gettsim.function_types import GroupByFunction, PolicyFunction, policy_function -from _gettsim.loader import ( +from ttsim.function_types import ( + GroupByFunction, + PolicyFunction, + policy_function, +) +from ttsim.loader import ( load_aggregation_specs_tree, load_functions_tree_for_date, ) -from _gettsim.piecewise_functions import ( - check_thresholds, +from ttsim.piecewise_polynomial import ( + _check_thresholds, get_piecewise_parameters, piecewise_polynomial, ) -from _gettsim.shared import ( - assert_valid_gettsim_pytree, +from ttsim.shared import ( + assert_valid_ttsim_pytree, upsert_path_and_value, upsert_tree, ) @@ -33,7 +37,7 @@ if TYPE_CHECKING: from pathlib import Path - from _gettsim.typing import NestedAggregationSpecDict, NestedFunctionDict + from ttsim.typing import NestedAggregationSpecDict, NestedFunctionDict class PolicyEnvironment: @@ -62,7 +66,7 @@ def __init__( aggregation_specs_tree: NestedAggregationSpecDict | None = None, ): # Check functions tree and convert functions to PolicyFunction if necessary - assert_valid_gettsim_pytree( + assert_valid_ttsim_pytree( functions_tree, lambda leaf: isinstance(leaf, PolicyFunction | GroupByFunction), "functions_tree", @@ -654,7 +658,7 @@ def add_progressionsfaktor(params_dict, parameter): out_dict = copy.deepcopy(params_dict) interval_keys = sorted(key for key in out_dict if isinstance(key, int)) # Check and extract lower thresholds. - lower_thresholds, upper_thresholds, thresholds = check_thresholds( + lower_thresholds, upper_thresholds, thresholds = _check_thresholds( params_dict, parameter, interval_keys ) for key in interval_keys: diff --git a/src/_gettsim/shared.py b/src/ttsim/shared.py similarity index 96% rename from src/_gettsim/shared.py rename to src/ttsim/shared.py index e4da03dda9..d161319940 100644 --- a/src/_gettsim/shared.py +++ b/src/ttsim/shared.py @@ -11,8 +11,8 @@ from _gettsim.config import SUPPORTED_GROUPINGS if TYPE_CHECKING: - from _gettsim.function_types import PolicyFunction - from _gettsim.typing import ( + from ttsim.function_types import PolicyFunction + from ttsim.typing import ( GenericCallable, NestedDataDict, NestedFunctionDict, @@ -40,9 +40,14 @@ def format_list_linewise(list_): ).format(formatted_list=formatted_list) -def create_tree_from_path_and_value(path: tuple[str], value: Any = None) -> dict: +def create_tree_from_path_and_value( + path: tuple[str], value: Any = None +) -> dict[str, Any]: """Create a nested dict with 'path' as keys and 'value' as leaf. + Almost the same as `dt.unflatten_from_tree_paths({path: value})`, except that + it can also deal with an empty tuple as the path and a dictionary as the value. + Example: Input: path = ("a", "b", "c") @@ -61,6 +66,7 @@ def create_tree_from_path_and_value(path: tuple[str], value: Any = None) -> dict ------- The tree structure. """ + nested_dict = value for entry in reversed(path): nested_dict = {entry: nested_dict} @@ -340,7 +346,7 @@ def join_numpy( return padded_targets.take(indices) -def assert_valid_gettsim_pytree( +def assert_valid_ttsim_pytree( tree: Any, leaf_checker: GenericCallable, tree_name: str ) -> None: """ @@ -364,9 +370,7 @@ def assert_valid_gettsim_pytree( If any branch or leaf does not meet the expected requirements. """ - def _assert_valid_gettsim_pytree( - subtree: Any, current_key: tuple[str, ...] - ) -> None: + def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: def format_key_path(key_tuple: tuple[str, ...]) -> str: return "".join(f"[{k}]" for k in key_tuple) @@ -386,7 +390,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: ) raise TypeError(msg) if isinstance(value, dict): - _assert_valid_gettsim_pytree(value, new_key_path) + _assert_valid_ttsim_pytree(value, new_key_path) else: if not leaf_checker(value): msg = format_errors_and_warnings( @@ -395,7 +399,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: ) raise TypeError(msg) - _assert_valid_gettsim_pytree(tree, current_key=()) + _assert_valid_ttsim_pytree(tree, current_key=()) def get_name_of_group_by_id( diff --git a/src/_gettsim/time_conversion.py b/src/ttsim/time_conversion.py similarity index 76% rename from src/_gettsim/time_conversion.py rename to src/ttsim/time_conversion.py index 06cad0b530..c962c2c3e3 100644 --- a/src/_gettsim/time_conversion.py +++ b/src/ttsim/time_conversion.py @@ -6,22 +6,44 @@ from dags import rename_arguments -from _gettsim.config import ( - SUPPORTED_GROUPINGS, - SUPPORTED_TIME_UNITS, -) -from _gettsim.function_types import DerivedTimeConversionFunction, PolicyFunction +from _gettsim.config import SUPPORTED_GROUPINGS +from ttsim.function_types import DerivedTimeConversionFunction, PolicyFunction if TYPE_CHECKING: from collections.abc import Callable - from _gettsim.typing import QualNameDataDict, QualNameFunctionsDict + from ttsim.typing import QualNameDataDict, QualNameFunctionsDict +_TIME_UNITS = { + "y": "year", + "q": "quarter", + "m": "month", + "w": "week", + "d": "day", +} + +_Q_PER_Y = 4 _M_PER_Y = 12 _W_PER_Y = 365.25 / 7 _D_PER_Y = 365.25 +def y_to_q(value: float) -> float: + """ + Converts yearly to quarterly values. + + Parameters + ---------- + value + Yearly value to be converted to quarterly value. + + Returns + ------- + Quarterly value. + """ + return value / _Q_PER_Y + + def y_to_m(value: float) -> float: """ Converts yearly to monthly values. @@ -70,6 +92,70 @@ def y_to_d(value: float) -> float: return value / _D_PER_Y +def q_to_y(value: float) -> float: + """ + Converts quarterly to yearly values. + + Parameters + ---------- + value + Quarterly value to be converted to yearly value. + + Returns + ------- + Yearly value. + """ + return value * _Q_PER_Y + + +def q_to_m(value: float) -> float: + """ + Converts quarterly to monthly values. + + Parameters + ---------- + value + Quarterly value to be converted to monthly value. + + Returns + ------- + Monthly value. + """ + return value * _M_PER_Y / _Q_PER_Y + + +def q_to_w(value: float) -> float: + """ + Converts quarterly to weekly values. + + Parameters + ---------- + value + Quarterly value to be converted to weekly value. + + Returns + ------- + Weekly value. + """ + return value * _Q_PER_Y / _W_PER_Y + + +def q_to_d(value: float) -> float: + """ + Converts quarterly to daily values. + + Parameters + ---------- + value + Quarterly value to be converted to daily value. + + Returns + ------- + Daily value. + """ + return value * _Q_PER_Y / _D_PER_Y + + def m_to_y(value: float) -> float: """ Converts monthly to yearly values. @@ -86,6 +172,22 @@ def m_to_y(value: float) -> float: return value * _M_PER_Y +def m_to_q(value: float) -> float: + """ + Converts monthly to quarterly values. + + Parameters + ---------- + value + Monthly value to be converted to quarterly value. + + Returns + ------- + Quarterly value. + """ + return value * _M_PER_Y / _Q_PER_Y + + def m_to_w(value: float) -> float: """ Converts monthly to weekly values. @@ -134,6 +236,22 @@ def w_to_y(value: float) -> float: return value * _W_PER_Y +def w_to_q(value: float) -> float: + """ + Converts weekly to quarterly values. + + Parameters + ---------- + value + Weekly value to be converted to quarterly value. + + Returns + ------- + Quarterly value. + """ + return value * _W_PER_Y / _Q_PER_Y + + def w_to_m(value: float) -> float: """ Converts weekly to monthly values. @@ -198,6 +316,22 @@ def d_to_m(value: float) -> float: return value * _D_PER_Y / _M_PER_Y +def d_to_q(value: float) -> float: + """ + Converts daily to quarterly values. + + Parameters + ---------- + value + Daily value to be converted to quarterly value. + + Returns + ------- + Quarterly value. + """ + return value * _D_PER_Y / _Q_PER_Y + + def d_to_w(value: float) -> float: """ Converts daily to weekly values. @@ -216,16 +350,24 @@ def d_to_w(value: float) -> float: _time_conversion_functions = { "y_to_m": y_to_m, + "y_to_q": y_to_q, "y_to_w": y_to_w, "y_to_d": y_to_d, + "q_to_y": q_to_y, + "q_to_m": q_to_m, + "q_to_w": q_to_w, + "q_to_d": q_to_d, "m_to_y": m_to_y, + "m_to_q": m_to_q, "m_to_w": m_to_w, "m_to_d": m_to_d, "w_to_y": w_to_y, + "w_to_q": w_to_q, "w_to_m": w_to_m, "w_to_d": w_to_d, "d_to_y": d_to_y, "d_to_m": d_to_m, + "d_to_q": d_to_q, "d_to_w": d_to_w, } @@ -305,7 +447,7 @@ def _create_time_conversion_functions( ) -> dict[str, DerivedTimeConversionFunction]: result: dict[str, DerivedTimeConversionFunction] = {} - all_time_units = list(SUPPORTED_TIME_UNITS) + all_time_units = list(_TIME_UNITS) units = "".join(all_time_units) groupings = "|".join([f"_{grouping}" for grouping in SUPPORTED_GROUPINGS]) diff --git a/src/_gettsim/typing.py b/src/ttsim/typing.py similarity index 97% rename from src/_gettsim/typing.py rename to src/ttsim/typing.py index 0d54408a09..7632251ebd 100644 --- a/src/_gettsim/typing.py +++ b/src/ttsim/typing.py @@ -10,7 +10,7 @@ is_object_dtype, ) -from _gettsim.config import numpy_or_jax as np +from ttsim.config import numpy_or_jax as np if TYPE_CHECKING: from collections.abc import Mapping @@ -23,8 +23,8 @@ QualNameTargetList, ) - from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec - from _gettsim.function_types import ( + from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec + from ttsim.function_types import ( DerivedAggregationFunction, DerivedTimeConversionFunction, GroupByFunction, diff --git a/src/_gettsim/vectorization.py b/src/ttsim/vectorization.py similarity index 99% rename from src/_gettsim/vectorization.py rename to src/ttsim/vectorization.py index e5060997f8..6e43c90b78 100644 --- a/src/_gettsim/vectorization.py +++ b/src/ttsim/vectorization.py @@ -30,7 +30,7 @@ def make_vectorizable(func: callable, backend: str): # recreate scope of function, add policy_function decorator and array library scope = func.__globals__ - from _gettsim.function_types import policy_function + from ttsim.function_types import policy_function scope["policy_function"] = policy_function scope[module] = import_module(module) diff --git a/src/_gettsim/visualization.py b/src/ttsim/visualization.py similarity index 99% rename from src/_gettsim/visualization.py rename to src/ttsim/visualization.py index 5a2415b3b1..0033a666b7 100644 --- a/src/_gettsim/visualization.py +++ b/src/ttsim/visualization.py @@ -11,15 +11,15 @@ from pygments import highlight, lexers from pygments.formatters import HtmlFormatter -from _gettsim.combine_functions import ( +from _gettsim.config import DEFAULT_TARGETS +from ttsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) -from _gettsim.config import DEFAULT_TARGETS -from _gettsim.interface import ( +from ttsim.compute_taxes_and_transfers import ( _partial_parameters_to_functions, ) -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.shared import ( +from ttsim.policy_environment import PolicyEnvironment +from ttsim.shared import ( format_list_linewise, get_names_of_arguments_without_defaults, partition_tree_by_reference_tree, diff --git "a/src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" b/tests/__init__ .py similarity index 100% rename from "src/_gettsim/transfers/vorrangpr\303\274fungen/__init__.py" rename to tests/__init__ .py diff --git a/src/_gettsim/transfers/wohngeld/__init__.py b/tests/ttsim/__init__ .py similarity index 100% rename from src/_gettsim/transfers/wohngeld/__init__.py rename to tests/ttsim/__init__ .py diff --git a/tests/ttsim/namespaces/__init__.py b/tests/ttsim/namespaces/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim_tests/test_data/namespaces/module1.py b/tests/ttsim/namespaces/module1.py similarity index 88% rename from src/_gettsim_tests/test_data/namespaces/module1.py rename to tests/ttsim/namespaces/module1.py index 943cee8d5f..f5a0337716 100644 --- a/src/_gettsim_tests/test_data/namespaces/module1.py +++ b/tests/ttsim/namespaces/module1.py @@ -1,6 +1,6 @@ """Test namespace.""" -from _gettsim.function_types import policy_function +from ttsim.function_types import policy_function @policy_function() @@ -23,7 +23,7 @@ def some_unused_function(some_unused_param: int) -> int: return some_unused_param -FUNCTIONS_MODULE1 = { +FUNCTIONS = { "module1": { "f": f, "g": g, diff --git a/src/_gettsim_tests/test_data/namespaces/module2.py b/tests/ttsim/namespaces/module2.py similarity index 82% rename from src/_gettsim_tests/test_data/namespaces/module2.py rename to tests/ttsim/namespaces/module2.py index 75abb689ba..97628ced5a 100644 --- a/src/_gettsim_tests/test_data/namespaces/module2.py +++ b/tests/ttsim/namespaces/module2.py @@ -1,6 +1,6 @@ """Test namespace.""" -from _gettsim.function_types import policy_function +from ttsim.function_types import policy_function @policy_function() @@ -13,7 +13,7 @@ def g(module1__f: int, module2_params: dict[str, int]) -> int: return module1__f + module2_params["c"] -FUNCTIONS_MODULE2 = { +FUNCTIONS = { "module2": { "f": f, "g": g, diff --git a/src/_gettsim_tests/test_aggregate_by_p_id.py b/tests/ttsim/test_aggregate_by_p_id.py similarity index 93% rename from src/_gettsim_tests/test_aggregate_by_p_id.py rename to tests/ttsim/test_aggregate_by_p_id.py index b09b7efeef..388328360d 100644 --- a/src/_gettsim_tests/test_aggregate_by_p_id.py +++ b/tests/ttsim/test_aggregate_by_p_id.py @@ -2,9 +2,9 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.interface import compute_taxes_and_transfers from _gettsim_tests._helpers import cached_set_up_policy_environment from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("aggregate_by_p_id") diff --git a/src/_gettsim_tests/test_aggregation_functions.py b/tests/ttsim/test_aggregation_functions.py similarity index 98% rename from src/_gettsim_tests/test_aggregation_functions.py rename to tests/ttsim/test_aggregation_functions.py index eed2c3e271..80406762e8 100644 --- a/src/_gettsim_tests/test_aggregation_functions.py +++ b/tests/ttsim/test_aggregation_functions.py @@ -3,7 +3,7 @@ import numpy import pytest -from _gettsim.aggregation import ( +from ttsim.aggregation import ( grouped_all, grouped_any, grouped_count, @@ -13,8 +13,8 @@ grouped_sum, sum_by_p_id, ) -from _gettsim.config import USE_JAX -from _gettsim.config import numpy_or_jax as np +from ttsim.config import USE_JAX +from ttsim.config import numpy_or_jax as np def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): @@ -453,9 +453,9 @@ def test_sum_by_p_id( ) ) numpy.testing.assert_array_almost_equal(result, expected_res) - assert numpy.issubdtype( - result.dtype.type, expected_type - ), "The dtype of the result is not as expected." + assert numpy.issubdtype(result.dtype.type, expected_type), ( + "The dtype of the result is not as expected." + ) @parameterize_based_on_dict( diff --git a/src/_gettsim_tests/test_combine_functions.py b/tests/ttsim/test_combine_functions.py similarity index 98% rename from src/_gettsim_tests/test_combine_functions.py rename to tests/ttsim/test_combine_functions.py index 016fb3a308..1d1d52a41d 100644 --- a/src/_gettsim_tests/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -3,8 +3,8 @@ import pandas as pd import pytest -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec -from _gettsim.combine_functions import ( +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.combine_functions import ( _annotate_aggregation_functions, _create_aggregate_by_group_functions, _create_aggregation_functions, @@ -13,13 +13,13 @@ _fail_if_targets_not_in_functions, _get_name_of_aggregation_source, ) -from _gettsim.function_types import ( +from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers +from ttsim.function_types import ( DerivedAggregationFunction, group_by_function, policy_function, ) -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.policy_environment import PolicyEnvironment +from ttsim.policy_environment import PolicyEnvironment @pytest.fixture diff --git a/src/_gettsim_tests/test_interface.py b/tests/ttsim/test_compute_taxes_and_transfers.py similarity index 96% rename from src/_gettsim_tests/test_interface.py rename to tests/ttsim/test_compute_taxes_and_transfers.py index f378789165..d009921613 100644 --- a/src/_gettsim_tests/test_interface.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -7,11 +7,14 @@ import pandas as pd import pytest -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from _gettsim.arbeitslosengeld_2.group_by_ids import bg_id from _gettsim.config import FOREIGN_KEYS -from _gettsim.config import numpy_or_jax as np -from _gettsim.function_types import group_by_function, policy_function -from _gettsim.interface import ( +from _gettsim.wohngeld.group_by_ids import ( + wthh_id, +) +from gettsim import FunctionsAndColumnsOverlapWarning +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.compute_taxes_and_transfers import ( _convert_data_to_correct_types, _fail_if_foreign_keys_are_invalid, _fail_if_group_variables_not_constant_within_groups, @@ -19,14 +22,11 @@ _partial_parameters_to_functions, compute_taxes_and_transfers, ) -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.shared import assert_valid_gettsim_pytree -from _gettsim.transfers.arbeitslosengeld_2.group_by_ids import bg_id -from _gettsim.transfers.wohngeld.group_by_ids import ( - wthh_id, -) -from _gettsim.typing import convert_series_to_internal_type -from gettsim import FunctionsAndColumnsOverlapWarning +from ttsim.config import numpy_or_jax as np +from ttsim.function_types import group_by_function, policy_function +from ttsim.policy_environment import PolicyEnvironment +from ttsim.shared import assert_valid_ttsim_pytree +from ttsim.typing import convert_series_to_internal_type @pytest.fixture(scope="module") @@ -316,15 +316,6 @@ def test_fail_if_non_unique_pid(minimal_input_data): compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) -def test_warn_when_internal_tests_are_executed_repeatedly(): - from gettsim import test - - test("--collect-only") - - with pytest.warns(UserWarning, match="Repeated execution of the test suite"): - test("--collect-only") - - def test_partial_parameters_to_functions(): # Partial function produces correct result assert func_after_partial(2) == 3 @@ -751,6 +742,6 @@ def test_fail_if_cannot_be_converted_to_correct_type( ), ], ) -def test_assert_valid_gettsim_pytree(tree, leaf_checker, err_substr): +def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): with pytest.raises(TypeError, match=re.escape(err_substr)): - assert_valid_gettsim_pytree(tree, leaf_checker, "tree") + assert_valid_ttsim_pytree(tree, leaf_checker, "tree") diff --git a/src/_gettsim_tests/test_config.py b/tests/ttsim/test_config.py similarity index 62% rename from src/_gettsim_tests/test_config.py rename to tests/ttsim/test_config.py index a5cde1ff30..25485600b0 100644 --- a/src/_gettsim_tests/test_config.py +++ b/tests/ttsim/test_config.py @@ -2,11 +2,11 @@ import pytest -import _gettsim +import ttsim def test_default_backend(): - from _gettsim.config import numpy_or_jax + from ttsim.config import numpy_or_jax assert numpy_or_jax.__name__ == "numpy" @@ -15,26 +15,26 @@ def test_set_backend(): is_jax_installed = importlib.util.find_spec("jax") is not None # expect default backend - from _gettsim.config import numpy_or_jax + from ttsim.config import numpy_or_jax assert numpy_or_jax.__name__ == "numpy" if is_jax_installed: # set jax backend - _gettsim.config.set_array_backend("jax") - from _gettsim.config import numpy_or_jax + ttsim.config.set_array_backend("jax") + from ttsim.config import numpy_or_jax assert numpy_or_jax.__name__ == "jax.numpy" - from _gettsim.config import USE_JAX + from ttsim.config import USE_JAX assert USE_JAX else: with pytest.raises(AssertionError): - _gettsim.config.set_array_backend("jax") + ttsim.config.set_array_backend("jax") @pytest.mark.parametrize("backend", ["dask", "jax.numpy"]) def test_wrong_backend(backend): with pytest.raises(ValueError): - _gettsim.config.set_array_backend(backend) + ttsim.config.set_array_backend(backend) diff --git a/src/_gettsim_tests/test_dates_active.py b/tests/ttsim/test_dates_active.py similarity index 98% rename from src/_gettsim_tests/test_dates_active.py rename to tests/ttsim/test_dates_active.py index 974655f848..5b297cde23 100644 --- a/src/_gettsim_tests/test_dates_active.py +++ b/tests/ttsim/test_dates_active.py @@ -2,8 +2,8 @@ import pytest -from _gettsim.function_types import policy_function -from _gettsim.loader import ( +from ttsim.function_types import policy_function +from ttsim.loader import ( ConflictingTimeDependentFunctionsError, _fail_if_multiple_policy_functions_are_active_at_the_same_time, ) diff --git a/src/_gettsim_tests/test_docs.py b/tests/ttsim/test_docs.py similarity index 96% rename from src/_gettsim_tests/test_docs.py rename to tests/ttsim/test_docs.py index 168e31479f..4448b05d81 100644 --- a/src/_gettsim_tests/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -6,15 +6,14 @@ import pytest from _gettsim.config import ( - PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR, TYPES_INPUT_VARIABLES, ) -from _gettsim.loader import ( +from ttsim.loader import ( load_aggregation_specs_tree, load_functions_tree_for_date, ) -from _gettsim.shared import remove_group_suffix +from ttsim.shared import remove_group_suffix def _nice_output_list_of_strings(list_of_strings): @@ -110,9 +109,7 @@ def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): ) } - internal_function_files = [ - RESOURCE_DIR.joinpath(p) for p in PATHS_TO_INTERNAL_FUNCTIONS - ] + internal_function_files = [RESOURCE_DIR.joinpath(p) for p in RESOURCE_DIR] internal_functions = { f.leaf_name diff --git a/src/_gettsim_tests/test_import.py b/tests/ttsim/test_import.py similarity index 100% rename from src/_gettsim_tests/test_import.py rename to tests/ttsim/test_import.py diff --git a/src/_gettsim_tests/test_import_version.py b/tests/ttsim/test_import_version.py similarity index 100% rename from src/_gettsim_tests/test_import_version.py rename to tests/ttsim/test_import_version.py diff --git a/src/_gettsim_tests/test_join.py b/tests/ttsim/test_join.py similarity index 97% rename from src/_gettsim_tests/test_join.py rename to tests/ttsim/test_join.py index f54fc2bf9a..eb623271fe 100644 --- a/src/_gettsim_tests/test_join.py +++ b/tests/ttsim/test_join.py @@ -1,7 +1,7 @@ import numpy import pytest -from _gettsim.shared import join_numpy +from ttsim.shared import join_numpy @pytest.mark.parametrize( diff --git a/src/_gettsim_tests/test_loader.py b/tests/ttsim/test_loader.py similarity index 57% rename from src/_gettsim_tests/test_loader.py rename to tests/ttsim/test_loader.py index b38732d837..ae0cc60084 100644 --- a/src/_gettsim_tests/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -5,12 +5,9 @@ import numpy import pytest -from _gettsim.config import PATHS_TO_INTERNAL_FUNCTIONS, RESOURCE_DIR -from _gettsim.function_types import ( - policy_function, -) -from _gettsim.function_types.policy_function import _vectorize_func -from _gettsim.loader import ( +from _gettsim.config import RESOURCE_DIR +from ttsim.function_types import _vectorize_func, policy_function +from ttsim.loader import ( _convert_path_to_tree_path, _find_python_files_recursively, _load_module, @@ -23,12 +20,7 @@ def test_load_path(): assert _load_module( - RESOURCE_DIR - / "taxes" - / "sozialversicherung" - / "kranken" - / "beitrag" - / "beitragssatz.py", + RESOURCE_DIR / "sozialversicherung" / "kranken" / "beitrag" / "beitragssatz.py", RESOURCE_DIR, ) @@ -36,7 +28,7 @@ def test_load_path(): def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and AggregationSpecs.""" - all_files = _find_python_files_recursively(PATHS_TO_INTERNAL_FUNCTIONS) + all_files = _find_python_files_recursively(RESOURCE_DIR) assert "__init__.py" not in [file.name for file in all_files] @@ -65,21 +57,22 @@ def test_vectorize_func(vectorized_function: Callable) -> None: @pytest.mark.parametrize( ( "path", - "package_root", + "root_path", "expected_tree_path", ), [ + ( + RESOURCE_DIR / "foo" / "spam" / "bar.py", + RESOURCE_DIR, + ("foo", "spam"), + ), (RESOURCE_DIR / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), - (RESOURCE_DIR / "foo" / "spam" / "bar.py", RESOURCE_DIR, ("foo", "spam")), - (RESOURCE_DIR / "taxes" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), - (RESOURCE_DIR / "transfers" / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), - (RESOURCE_DIR / "transfers" / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 + (RESOURCE_DIR / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 ], ) def test_convert_path_to_tree_path( - path: Path, package_root: Path, expected_tree_path: tuple[str, ...] + path: Path, root_path: Path, expected_tree_path: tuple[str, ...] ) -> None: assert ( - _convert_path_to_tree_path(path=path, package_root=package_root) - == expected_tree_path + _convert_path_to_tree_path(path=path, root_path=root_path) == expected_tree_path ) diff --git a/src/_gettsim_tests/test_namespaces.py b/tests/ttsim/test_namespaces.py similarity index 84% rename from src/_gettsim_tests/test_namespaces.py rename to tests/ttsim/test_namespaces.py index a4b7ffe47d..95c3109570 100644 --- a/src/_gettsim_tests/test_namespaces.py +++ b/tests/ttsim/test_namespaces.py @@ -1,20 +1,22 @@ """Test namespace-specific function processing.""" +import importlib + import pandas as pd import pytest -from _gettsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec -from _gettsim.interface import compute_taxes_and_transfers -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim_tests.test_data.namespaces.module1 import FUNCTIONS_MODULE1 -from _gettsim_tests.test_data.namespaces.module2 import FUNCTIONS_MODULE2 +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers +from ttsim.policy_environment import PolicyEnvironment @pytest.fixture def functions_tree(): + module1 = importlib.import_module("namespaces.module1") + module2 = importlib.import_module("namespaces.module2") return { - **FUNCTIONS_MODULE1, - **FUNCTIONS_MODULE2, + **module1.FUNCTIONS, + **module2.FUNCTIONS, } diff --git a/tests/ttsim/test_parameters/__init__.py b/tests/ttsim/test_parameters/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml b/tests/ttsim/test_parameters/invalid_access_diff_date.yaml similarity index 100% rename from src/_gettsim_tests/test_parameters/invalid_access_diff_date.yaml rename to tests/ttsim/test_parameters/invalid_access_diff_date.yaml diff --git a/src/_gettsim_tests/test_parameters/test_access_diff_date_jahresanfang.yaml b/tests/ttsim/test_parameters/test_access_diff_date_jahresanfang.yaml similarity index 100% rename from src/_gettsim_tests/test_parameters/test_access_diff_date_jahresanfang.yaml rename to tests/ttsim/test_parameters/test_access_diff_date_jahresanfang.yaml diff --git a/src/_gettsim_tests/test_parameters/test_access_diff_date_vorjahr.yaml b/tests/ttsim/test_parameters/test_access_diff_date_vorjahr.yaml similarity index 100% rename from src/_gettsim_tests/test_parameters/test_access_diff_date_vorjahr.yaml rename to tests/ttsim/test_parameters/test_access_diff_date_vorjahr.yaml diff --git a/src/_gettsim_tests/test_piecewise_polynomial.py b/tests/ttsim/test_piecewise_polynomial.py similarity index 96% rename from src/_gettsim_tests/test_piecewise_polynomial.py rename to tests/ttsim/test_piecewise_polynomial.py index 2b254b4d50..ffa3ed4305 100644 --- a/src/_gettsim_tests/test_piecewise_polynomial.py +++ b/tests/ttsim/test_piecewise_polynomial.py @@ -4,7 +4,7 @@ import numpy -from _gettsim.piecewise_functions import ( +from ttsim.piecewise_polynomial import ( get_piecewise_parameters, ) diff --git a/src/_gettsim_tests/test_policy_environment.py b/tests/ttsim/test_policy_environment.py similarity index 93% rename from src/_gettsim_tests/test_policy_environment.py rename to tests/ttsim/test_policy_environment.py index d9fc59e528..b321dc31c2 100644 --- a/src/_gettsim_tests/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -3,24 +3,30 @@ from __future__ import annotations from datetime import date, timedelta +from pathlib import Path from typing import TYPE_CHECKING, Any import optree import pandas as pd import pytest -from _gettsim.function_types import GroupByFunction, group_by_function, policy_function -from _gettsim.policy_environment import ( +from ttsim.function_types import ( + GroupByFunction, + group_by_function, + policy_function, +) +from ttsim.policy_environment import ( PolicyEnvironment, _fail_if_name_of_last_branch_element_not_leaf_name_of_function, _load_parameter_group_from_yaml, load_functions_tree_for_date, set_up_policy_environment, ) -from _gettsim_tests import TEST_DIR if TYPE_CHECKING: - from _gettsim.typing import NestedFunctionDict + from ttsim.typing import NestedFunctionDict + +YAML_PATH = Path(__file__).parent / "test_parameters" class TestPolicyEnvironment: @@ -83,7 +89,7 @@ def test_fail_if_invalid_access_different_date(): date=pd.to_datetime("01-01-2020").date(), group="invalid_access_diff_date", parameters=None, - yaml_path=TEST_DIR / "test_parameters", + yaml_path=YAML_PATH, ) @@ -92,7 +98,7 @@ def test_access_different_date_vorjahr(): date=pd.to_datetime("01-01-2020").date(), group="test_access_diff_date_vorjahr", parameters=None, - yaml_path=TEST_DIR / "test_parameters", + yaml_path=YAML_PATH, ) assert params["foo"] == 2020 assert params["foo_vorjahr"] == 2019 @@ -103,7 +109,7 @@ def test_access_different_date_jahresanfang(): date=pd.to_datetime("07-01-2020").date(), group="test_access_diff_date_jahresanfang", parameters=None, - yaml_path=TEST_DIR / "test_parameters", + yaml_path=YAML_PATH, ) assert params["foo"] == 2021 assert params["foo_jahresanfang"] == 2020 diff --git a/src/_gettsim_tests/test_policy_function.py b/tests/ttsim/test_policy_function.py similarity index 90% rename from src/_gettsim_tests/test_policy_function.py rename to tests/ttsim/test_policy_function.py index 36b4ee426d..05d57d95ba 100644 --- a/src/_gettsim_tests/test_policy_function.py +++ b/tests/ttsim/test_policy_function.py @@ -1,6 +1,6 @@ import pytest -from _gettsim.function_types import PolicyFunction, policy_function +from ttsim.function_types import PolicyFunction, policy_function @policy_function() diff --git a/src/_gettsim_tests/test_rounding.py b/tests/ttsim/test_rounding.py similarity index 94% rename from src/_gettsim_tests/test_rounding.py rename to tests/ttsim/test_rounding.py index c19f3ff7a7..cd06039307 100644 --- a/src/_gettsim_tests/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -6,18 +6,15 @@ import yaml from pandas._testing import assert_series_equal -from _gettsim.config import ( - INTERNAL_PARAMS_GROUPS, - RESOURCE_DIR, -) -from _gettsim.function_types import policy_function -from _gettsim.interface import ( +from _gettsim.config import INTERNAL_PARAMS_GROUPS, RESOURCE_DIR +from ttsim.compute_taxes_and_transfers import ( _add_rounding_to_functions, _apply_rounding_spec, compute_taxes_and_transfers, ) -from _gettsim.loader import load_functions_tree_for_date -from _gettsim.policy_environment import PolicyEnvironment +from ttsim.function_types import policy_function +from ttsim.loader import load_functions_tree_for_date +from ttsim.policy_environment import PolicyEnvironment rounding_specs_and_exp_results = [ (1, "up", None, [100.24, 100.78], [101.0, 101.0]), @@ -187,11 +184,21 @@ def test_func_m(income): @pytest.mark.parametrize( - "base, direction, to_add_after_rounding, input_values_exp_output, _ignore", + """ + base, + direction, + to_add_after_rounding, + input_values_exp_output, + ignore_since_not_rounded + """, rounding_specs_and_exp_results, ) def test_no_rounding( - base, direction, to_add_after_rounding, input_values_exp_output, _ignore + base, + direction, + to_add_after_rounding, + input_values_exp_output, + ignore_since_not_rounded, # noqa: ARG001 ): # Define function that should be rounded @policy_function(params_key_for_rounding="params_key_test") diff --git a/src/_gettsim_tests/test_shared.py b/tests/ttsim/test_shared.py similarity index 99% rename from src/_gettsim_tests/test_shared.py rename to tests/ttsim/test_shared.py index a14cd77e94..68f4d1b97e 100644 --- a/src/_gettsim_tests/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -2,7 +2,7 @@ import pytest -from _gettsim.shared import ( +from ttsim.shared import ( create_tree_from_path_and_value, get_name_of_group_by_id, insert_path_and_value, diff --git a/src/_gettsim_tests/test_time_conversion.py b/tests/ttsim/test_time_conversion.py similarity index 55% rename from src/_gettsim_tests/test_time_conversion.py rename to tests/ttsim/test_time_conversion.py index 3149e959d5..8ac0398148 100644 --- a/src/_gettsim_tests/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -2,25 +2,44 @@ import pytest -from _gettsim.function_types import policy_function -from _gettsim.time_conversion import ( +from ttsim.function_types import policy_function +from ttsim.time_conversion import ( _create_function_for_time_unit, create_time_conversion_functions, d_to_m, + d_to_q, d_to_w, d_to_y, m_to_d, + m_to_q, m_to_w, m_to_y, + q_to_d, + q_to_m, + q_to_w, + q_to_y, w_to_d, w_to_m, + w_to_q, w_to_y, y_to_d, y_to_m, + y_to_q, y_to_w, ) +@pytest.mark.parametrize( + ("yearly_value", "quarterly_value"), + [ + (0, 0), + (12, 3), + ], +) +def test_y_to_q(yearly_value: float, quarterly_value: float) -> None: + assert y_to_q(yearly_value) == quarterly_value + + @pytest.mark.parametrize( ("yearly_value", "monthly_value"), [ @@ -54,6 +73,50 @@ def test_y_to_d(yearly_value: float, daily_value: float) -> None: assert y_to_d(yearly_value) == daily_value +@pytest.mark.parametrize( + ("quarterly_value", "yearly_value"), + [ + (0, 0), + (1, 4), + ], +) +def test_q_to_y(quarterly_value: float, yearly_value: float) -> None: + assert q_to_y(quarterly_value) == yearly_value + + +@pytest.mark.parametrize( + ("quarterly_value", "monthly_value"), + [ + (0, 0), + (1, 3), + ], +) +def test_q_to_m(quarterly_value: float, monthly_value: float) -> None: + assert q_to_m(quarterly_value) == monthly_value + + +@pytest.mark.parametrize( + ("quarterly_value", "weekly_value"), + [ + (0, 0), + (365.25 / 7 / 4, 1), + ], +) +def test_q_to_w(quarterly_value: float, weekly_value: float) -> None: + assert q_to_w(quarterly_value) == weekly_value + + +@pytest.mark.parametrize( + ("quarterly_value", "daily_value"), + [ + (0, 0), + (365.25 / 4, 1), + ], +) +def test_q_to_d(quarterly_value: float, daily_value: float) -> None: + assert q_to_d(quarterly_value) == daily_value + + @pytest.mark.parametrize( ("monthly_value", "yearly_value"), [ @@ -65,6 +128,17 @@ def test_m_to_y(monthly_value: float, yearly_value: float) -> None: assert m_to_y(monthly_value) == yearly_value +@pytest.mark.parametrize( + ("monthly_value", "quarterly_value"), + [ + (0, 0), + (1, 3), + ], +) +def test_m_to_q(monthly_value: float, quarterly_value: float) -> None: + assert m_to_q(monthly_value) == quarterly_value + + @pytest.mark.parametrize( ("monthly_value", "weekly_value"), [ @@ -109,6 +183,17 @@ def test_w_to_m(weekly_value: float, monthly_value: float) -> None: assert w_to_m(weekly_value) == monthly_value +@pytest.mark.parametrize( + ("weekly_value", "quarterly_value"), + [ + (0, 0), + (7, 365.25 / 4), + ], +) +def test_w_to_q(weekly_value: float, quarterly_value: float) -> None: + assert w_to_q(weekly_value) == quarterly_value + + @pytest.mark.parametrize( ("weekly_value", "daily_value"), [ @@ -131,6 +216,17 @@ def test_d_to_y(daily_value: float, yearly_value: float) -> None: assert d_to_y(daily_value) == yearly_value +@pytest.mark.parametrize( + ("daily_value", "quarterly_value"), + [ + (0, 0), + (1, 365.25 / 4), + ], +) +def test_d_to_q(daily_value: float, quarterly_value: float) -> None: + assert d_to_q(daily_value) == quarterly_value + + @pytest.mark.parametrize( ("daily_value", "monthly_value"), [ @@ -157,18 +253,21 @@ class TestCreateFunctionsForTimeUnits: @pytest.mark.parametrize( ("name", "expected"), [ - ("test_y", ["test_m", "test_w", "test_d"]), - ("test_y_hh", ["test_m_hh", "test_w_hh", "test_d_hh"]), - ("test_y_sn", ["test_m_sn", "test_w_sn", "test_d_sn"]), - ("test_m", ["test_y", "test_w", "test_d"]), - ("test_m_hh", ["test_y_hh", "test_w_hh", "test_d_hh"]), - ("test_m_sn", ["test_y_sn", "test_w_sn", "test_d_sn"]), - ("test_w", ["test_y", "test_m", "test_d"]), - ("test_w_hh", ["test_y_hh", "test_m_hh", "test_d_hh"]), - ("test_w_sn", ["test_y_sn", "test_m_sn", "test_d_sn"]), - ("test_d", ["test_y", "test_m", "test_w"]), - ("test_d_hh", ["test_y_hh", "test_m_hh", "test_w_hh"]), - ("test_d_sn", ["test_y_sn", "test_m_sn", "test_w_sn"]), + ("test_y", ["test_m", "test_q", "test_w", "test_d"]), + ("test_y_hh", ["test_m_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_y_sn", ["test_m_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), + ("test_q", ["test_y", "test_m", "test_w", "test_d"]), + ("test_q_hh", ["test_y_hh", "test_m_hh", "test_w_hh", "test_d_hh"]), + ("test_q_sn", ["test_y_sn", "test_m_sn", "test_w_sn", "test_d_sn"]), + ("test_m", ["test_y", "test_q", "test_w", "test_d"]), + ("test_m_hh", ["test_y_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_m_sn", ["test_y_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), + ("test_w", ["test_y", "test_m", "test_q", "test_d"]), + ("test_w_hh", ["test_y_hh", "test_m_hh", "test_q_hh", "test_d_hh"]), + ("test_w_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_d_sn"]), + ("test_d", ["test_y", "test_m", "test_q", "test_w"]), + ("test_d_hh", ["test_y_hh", "test_m_hh", "test_q_hh", "test_w_hh"]), + ("test_d_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_w_sn"]), ], ) def test_should_create_functions_for_other_time_units_for_functions( @@ -184,18 +283,21 @@ def test_should_create_functions_for_other_time_units_for_functions( @pytest.mark.parametrize( ("name", "expected"), [ - ("test_y", ["test_m", "test_w", "test_d"]), - ("test_y_hh", ["test_m_hh", "test_w_hh", "test_d_hh"]), - ("test_y_sn", ["test_m_sn", "test_w_sn", "test_d_sn"]), - ("test_m", ["test_y", "test_w", "test_d"]), - ("test_m_hh", ["test_y_hh", "test_w_hh", "test_d_hh"]), - ("test_m_sn", ["test_y_sn", "test_w_sn", "test_d_sn"]), - ("test_w", ["test_y", "test_m", "test_d"]), - ("test_w_hh", ["test_y_hh", "test_m_hh", "test_d_hh"]), - ("test_w_sn", ["test_y_sn", "test_m_sn", "test_d_sn"]), - ("test_d", ["test_y", "test_m", "test_w"]), - ("test_d_hh", ["test_y_hh", "test_m_hh", "test_w_hh"]), - ("test_d_sn", ["test_y_sn", "test_m_sn", "test_w_sn"]), + ("test_y", ["test_m", "test_q", "test_w", "test_d"]), + ("test_y_hh", ["test_m_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_y_sn", ["test_m_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), + ("test_q", ["test_y", "test_m", "test_w", "test_d"]), + ("test_q_hh", ["test_y_hh", "test_m_hh", "test_w_hh", "test_d_hh"]), + ("test_q_sn", ["test_y_sn", "test_m_sn", "test_w_sn", "test_d_sn"]), + ("test_m", ["test_y", "test_q", "test_w", "test_d"]), + ("test_m_hh", ["test_y_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_m_sn", ["test_y_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), + ("test_w", ["test_y", "test_q", "test_m", "test_d"]), + ("test_w_hh", ["test_y_hh", "test_q_hh", "test_m_hh", "test_d_hh"]), + ("test_w_sn", ["test_y_sn", "test_q_sn", "test_m_sn", "test_d_sn"]), + ("test_d", ["test_y", "test_q", "test_m", "test_w"]), + ("test_d_hh", ["test_y_hh", "test_q_hh", "test_m_hh", "test_w_hh"]), + ("test_d_sn", ["test_y_sn", "test_q_sn", "test_m_sn", "test_w_sn"]), ], ) def test_should_create_functions_for_other_time_units_for_data_cols( diff --git a/src/_gettsim_tests/test_vectorization.py b/tests/ttsim/test_vectorization.py similarity index 98% rename from src/_gettsim_tests/test_vectorization.py rename to tests/ttsim/test_vectorization.py index 579dd9b1bb..00c3bd3888 100644 --- a/src/_gettsim_tests/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -6,15 +6,15 @@ import numpy import pytest -from _gettsim.config import USE_JAX +from ttsim.config import USE_JAX if USE_JAX: import jax.numpy from numpy.testing import assert_array_equal -from _gettsim.function_types import GroupByFunction -from _gettsim.loader import load_functions_tree_for_date -from _gettsim.vectorization import ( +from ttsim.function_types import GroupByFunction +from ttsim.loader import load_functions_tree_for_date +from ttsim.vectorization import ( TranslateToVectorizableError, make_vectorizable, make_vectorizable_source, @@ -208,7 +208,7 @@ def f14(x): b = x > 0 c = x != 0 d = True - return a and b and c or d + return (a and b and c) or d def f14_exp(x): diff --git a/src/_gettsim_tests/test_visualizations.py b/tests/ttsim/test_visualizations.py similarity index 98% rename from src/_gettsim_tests/test_visualizations.py rename to tests/ttsim/test_visualizations.py index 0cf1c1d252..56d7d61947 100644 --- a/src/_gettsim_tests/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -1,8 +1,9 @@ import networkx as nx import pytest -from _gettsim.policy_environment import PolicyEnvironment -from _gettsim.visualization import ( +from _gettsim_tests._helpers import cached_set_up_policy_environment +from ttsim.policy_environment import PolicyEnvironment +from ttsim.visualization import ( _get_selected_nodes, _kth_order_neighbors, _node_and_ancestors, @@ -10,7 +11,6 @@ _select_nodes_in_dag, plot_dag, ) -from _gettsim_tests._helpers import cached_set_up_policy_environment environment = cached_set_up_policy_environment(date=2020) From 780d820dbc7877ded7e973cfacc386d6bd5f19c9 Mon Sep 17 00:00:00 2001 From: Felix Schmitz <33942086+felixschmitz@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:04:29 +0200 Subject: [PATCH 010/109] Fix test namespace (#858) ### What problem do you want to solve? Will close #852. Adapts tests to match GETTSIM src structure. --- src/_gettsim_tests/_policy_test_utils.py | 67 +++- src/_gettsim_tests/test_arbeitslosengeld.py | 28 -- src/_gettsim_tests/test_arbeitslosengeld_2.py | 28 -- .../2007/eltern_getrennt_1_kind.yaml | 73 ++-- .../2007/eltern_verheiratet_1_kind.yaml | 73 ++-- .../2007/eltern_verheiratet_2_kinder.yaml | 91 ++--- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 91 ++--- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 65 ++-- .../2024/eltern_getrennt_1_kind.yaml | 49 +-- .../2024/eltern_verheiratet_1_kind.yaml | 49 +-- .../2024/eltern_verheiratet_2_kinder.yaml | 61 +-- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 61 +-- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 65 ++-- .../arbeitslosengeld_2/2005/hh_id_8.yaml | 41 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 29 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 23 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 29 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 29 +- .../2005/regelsatz_multiple_children.yaml | 41 +- .../2005/regelsatz_no_adult_in_bg.yaml | 18 +- .../arbeitslosengeld_2/2006/hh_id_4.yaml | 121 +++--- .../arbeitslosengeld_2/2009/hh_id_3.yaml | 61 +-- .../2009/kind_20_jahre_in_bg.yaml | 61 +-- .../arbeitslosengeld_2/2013/hh_id_12.yaml | 61 +-- .../arbeitslosengeld_2/2013/hh_id_13.yaml | 61 +-- .../arbeitslosengeld_2/2013/hh_id_14.yaml | 65 ++-- .../arbeitslosengeld_2/2013/hh_id_15.yaml | 65 ++-- .../arbeitslosengeld_2/2013/hh_id_2.yaml | 61 +-- .../arbeitslosengeld_2/2018/hh_id_9.yaml | 121 +++--- .../arbeitslosengeld_2/2019/hh_id_6.yaml | 81 ++-- .../2019/test_age_limits_13_14.yaml | 81 ++-- .../2019/test_age_limits_5_6.yaml | 81 ++-- .../arbeitslosengeld_2/2022/hh_id_10.yaml | 85 +++-- .../arbeitslosengeld_2/2022/hh_id_11.yaml | 85 +++-- .../arbeitslosengeld_2/2023-01/hh_id_16.yaml | 41 +- .../arbeitslosengeld_2/2023-01/hh_id_19.yaml | 84 ++--- .../arbeitslosengeld_2/2023-01/hh_id_25.yaml | 86 ++--- .../2023-01/test_age_limits_17_18.yaml | 106 +++--- .../2023-01/test_family_high_wealth.yaml | 86 ++--- .../test_family_wealth_below_threshold.yaml | 86 ++--- .../arbeitslosengeld_2/2023-07/hh_id_20.yaml | 41 +- .../arbeitslosengeld_2/2023-07/hh_id_21.yaml | 86 ++--- .../arbeitslosengeld_2/2023-07/hh_id_22.yaml | 86 ++--- .../arbeitslosengeld_2/2023-07/hh_id_23.yaml | 84 ++--- .../arbeitslosengeld_2/2023-07/hh_id_24.yaml | 41 +- .../alleinerz_kein_kindergelduebertrag.yaml | 84 ++--- .../alleinerz_teilw_kindergelduebertrag.yaml | 96 ++--- .../alleinerz_voller_kindergelduebertrag.yaml | 97 +++-- .../2024/kost_unterk_multiple_bg_in_hh.yaml | 81 ++-- .../2024/kost_unterk_one_bg_in_hh.yaml | 41 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 29 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 23 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 29 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 29 +- .../2024/regelsatz_multiple_children.yaml | 41 +- .../2024/regelsatz_no_adult_in_bg.yaml | 18 +- .../2024/single_no_income.yaml | 54 +-- .../2024/skip_single_no_children.yaml | 136 +++---- .../vorsorgeaufwendungen/2004/hh_id_11.yaml" | 17 +- .../vorsorgeaufwendungen/2005/hh_id_2.yaml" | 25 +- .../vorsorgeaufwendungen/2005/hh_id_5.yaml" | 17 +- .../vorsorgeaufwendungen/2005/hh_id_8.yaml" | 17 +- .../vorsorgeaufwendungen/2005/hh_id_9.yaml" | 17 +- .../vorsorgeaufwendungen/2010/hh_id_16.yaml" | 17 +- .../vorsorgeaufwendungen/2010/hh_id_3.yaml" | 17 +- .../vorsorgeaufwendungen/2010/hh_id_6.yaml" | 25 +- .../vorsorgeaufwendungen/2018/hh_id_15.yaml" | 17 +- .../vorsorgeaufwendungen/2020/hh_id_13.yaml" | 17 +- .../vorsorgeaufwendungen/2021/hh_id_12.yaml" | 17 +- .../vorsorgeaufwendungen/2022/hh_id_17.yaml" | 25 +- .../vorsorgeaufwendungen/2022/hh_id_18.yaml" | 25 +- .../vorsorgeaufwendungen/2023/hh_id_4.yaml" | 17 +- .../vorsorgeaufwendungen/2023/hh_id_7.yaml" | 17 +- .../{ => betrag}/2009/hh_id_4.yaml | 17 +- .../{ => betrag}/2012/hh_id_3.yaml | 17 +- .../{ => betrag}/2015/hh_id_2.yaml | 33 +- .../{ => betrag}/2018/couple_1_child.yaml | 49 +-- .../{ => betrag}/2018/hh_id_1.yaml | 17 +- .../{ => betrag}/2018/hh_id_5.yaml | 17 +- .../{ => betrag}/2023/hh_id_6.yaml | 17 +- .../{ => betrag}/2024/couple_1_child.yaml | 49 +-- .../2024/couple_above_soli_freibetrag.yaml | 25 +- .../2024/single_above_soli_freibetrag.yaml | 17 +- .../2024/single_below_soli_freibetrag.yaml | 17 +- .../2010/hh_id_4.yaml" | 41 +- .../2012/hh_id_2.yaml" | 17 +- .../2016/hh_id_1.yaml" | 33 +- .../skip_2019/hh_id_5.yaml" | 33 +- .../2010/hh_id_1.yaml | 41 +- .../2010/hh_id_2.yaml | 41 +- .../2010/hh_id_3.yaml | 41 +- .../2010/hh_id_4.yaml | 41 +- .../2010/hh_id_5.yaml | 41 +- .../2015/hh_id_16.yaml | 41 +- .../2015/hh_id_17.yaml | 61 +-- .../2017/hh_id_18.yaml | 61 +-- .../2018/hh_id_10.yaml | 41 +- .../2018/hh_id_11.yaml | 41 +- .../2018/hh_id_12.yaml | 41 +- .../2018/hh_id_7.yaml | 41 +- .../2018/hh_id_8.yaml | 41 +- .../2018/hh_id_9.yaml | 41 +- .../2019/hh_id_13.yaml | 61 +-- .../2020/hh_id_14.yaml | 101 ++--- .../2020/hh_id_19.yaml | 101 ++--- .../2020/hh_id_20.yaml | 101 ++--- .../test_data/elterngeld/2017/hh_id_2.yaml | 49 +-- .../test_data/elterngeld/2018/hh_id_1.yaml | 49 +-- .../test_data/elterngeld/2018/hh_id_2.yaml | 73 ++-- .../test_data/elterngeld/2018/hh_id_3.yaml | 73 ++-- .../test_data/elterngeld/2018/hh_id_4.yaml | 73 ++-- .../test_data/elterngeld/2018/hh_id_6.yaml | 49 +-- .../test_data/elterngeld/2019/hh_id_1.yaml | 73 ++-- .../test_data/elterngeld/2019/hh_id_3.yaml | 97 ++--- .../test_data/elterngeld/2019/hh_id_5.yaml | 73 ++-- .../test_data/elterngeld/2019/hh_id_6.yaml | 97 ++--- .../test_data/elterngeld/2019/hh_id_7.yaml | 97 ++--- .../test_data/elterngeld/2019/hh_id_8.yaml | 121 +++--- .../2024-04-01/taxable_income_low.yaml | 97 ++--- .../2024-04-01/taxable_income_too_high.yaml | 97 ++--- .../2024/income_during_elterngeld.yaml | 97 ++--- .../elterngeld/2024/maximum_elterngeld.yaml | 73 ++-- .../elterngeld/2024/minimum_elterngeld.yaml | 73 ++-- .../2024/net_income_approximation.yaml | 37 +- .../2024/net_income_before_birth_1000.yaml | 97 ++--- .../2024/net_income_before_birth_790.yaml | 97 ++--- .../2024/replacement_rate_decrease.yaml | 97 ++--- .../2005/alleinerz_one_child_budgetsatz.yaml | 61 +-- ...inerz_one_child_regelsatz_high_income.yaml | 61 +-- ...einerz_one_child_regelsatz_low_income.yaml | 61 +-- ...ried_one_child_budgetsatz_high_income.yaml | 81 ++-- ...rried_one_child_budgetsatz_low_income.yaml | 81 ++-- .../2005/married_one_child_regelsatz.yaml | 81 ++-- ..._budgetsatz_and_regelsatz_high_income.yaml | 101 ++--- ...n_budgetsatz_and_regelsatz_low_income.yaml | 101 ++--- .../2007/born_after_abolishment.yaml | 61 +-- ..._budgetsatz_and_regelsatz_high_income.yaml | 101 ++--- ...n_budgetsatz_and_regelsatz_low_income.yaml | 101 ++--- .../2019/hh_id_1.yaml | 229 +++++------ .../2019/hh_id_2.yaml | 229 +++++------ .../2019/hh_id_3.yaml | 103 ++--- .../2019/hh_id_4.yaml | 103 ++--- .../2019/hh_id_5.yaml | 103 ++--- .../2019/hh_id_6.yaml | 103 ++--- .../2019/hh_id_7.yaml | 103 ++--- .../2019/hh_id_8.yaml | 101 ++--- ...nderer_elternteil_in_anderem_haushalt.yaml | 50 +-- ...rziehend_anderer_elternteil_unbekannt.yaml | 35 +- .../2023/eltern_unverheiratet_2_kinder.yaml | 55 +-- ...rheiratet_1_junges_1_erwachsenes_kind.yaml | 55 +-- ...verheiratet_1_kind_anderer_verwandter.yaml | 55 +-- ...heiratet_1_kind_bis24_1_kind_ueber_24.yaml | 55 +-- ...rn_verheiratet_1_kind_grosselternteil.yaml | 55 +-- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 66 ++-- ...eltern_verheiratet_1_kind_verheiratet.yaml | 55 +-- ...eltern_verheiratet_1_kind_with_income.yaml | 49 ++- .../2023/eltern_verheiratet_2_kinder.yaml | 55 +-- ...rheiratet_getrennt_veranlagt_2_kinder.yaml | 59 +-- ...eltern_verheiratet_kinder_verheiratet.yaml | 55 +-- .../groupings/2023/eltern_viele_kinder.yaml | 55 +-- .../2023/mehrere_haushalte_durchmischt.yaml | 79 ++-- ...nderer_elternteil_in_anderem_haushalt.yaml | 60 +-- ...haushalt_anderer_elternteil_unbekannt.yaml | 45 +-- ...nderer_elternteil_in_anderem_haushalt.yaml | 58 +-- ...epartner_einmal_sgb_ii_einmal_sgb_xii.yaml | 32 +- ...er_widerspruechliche_einstandspartner.yaml | 19 +- ..._kinder_widerspruechliche_veranlagung.yaml | 19 +- ...nicht_einstandspflichtig_ein_haushalt.yaml | 17 +- ...skip_enkelkind_und_sgb_ii_grossmutter.yaml | 26 +- ...kip_enkelkind_und_sgb_xii_grossmutter.yaml | 26 +- ...ner_gemeinsam_veranlagt_unverheiratet.yaml | 13 +- ...r_widerspruechliche_veranlagungs_info.yaml | 20 +- .../verschiedene_haushalte_nur_sn_id.yaml | 33 +- ...her_teilhaushalt_mehrere_generationen.yaml | 81 ++-- ...licher_teilhaushalt_mehrere_haushalte.yaml | 81 ++-- .../im_alter}/2017-07-01/hh_id_13.yaml | 86 +++-- .../im_alter}/2017-07-01/hh_id_16.yaml | 53 +-- .../im_alter}/2017-07-01/hh_id_17.yaml | 53 +-- .../im_alter}/2017-07-01/hh_id_6.yaml | 77 ++-- .../im_alter}/2018-07-01/hh_id_12.yaml | 60 ++- .../im_alter}/2018-07-01/hh_id_20.yaml | 53 +-- .../im_alter}/2018-07-01/hh_id_22.yaml | 53 +-- .../im_alter}/2018-07-01/hh_id_3.yaml | 53 +-- .../im_alter}/2020-07-01/hh_id_18.yaml | 53 +-- .../im_alter}/2020-07-01/hh_id_19.yaml | 77 ++-- .../im_alter}/2021-07-01/hh_id_1.yaml | 77 ++-- .../im_alter}/2021-07-01/hh_id_14.yaml | 58 +-- .../im_alter}/2021-07-01/hh_id_15.yaml | 53 +-- .../im_alter}/2021-07-01/hh_id_2.yaml | 53 +-- .../im_alter}/2021-07-01/hh_id_21.yaml | 80 ++-- .../im_alter}/2021-07-01/hh_id_23.yaml | 80 ++-- .../im_alter}/2021-07-01/hh_id_5.yaml | 53 +-- .../im_alter}/2021-07-01/hh_id_7.yaml | 53 +-- .../im_alter}/2021-07-01/hh_id_9.yaml | 82 ++-- .../im_alter}/2022-07-01/hh_id_10.yaml | 56 +-- .../im_alter}/2022-07-01/hh_id_11.yaml | 56 +-- .../im_alter}/2022-07-01/hh_id_24.yaml | 79 ++-- .../im_alter}/2022-07-01/hh_id_25.yaml | 84 ++--- .../im_alter}/2022-07-01/hh_id_4.yaml | 77 ++-- .../im_alter}/2022-07-01/hh_id_8.yaml | 53 +-- .../test_data/kindergeld/2002/hh_id_2.yaml | 43 +-- .../test_data/kindergeld/2010/hh_id_4.yaml | 13 +- .../test_data/kindergeld/2010/hh_id_6.yaml | 13 +- .../test_data/kindergeld/2011/hh_id_7.yaml | 49 +-- .../test_data/kindergeld/2013/hh_id_8.yaml | 37 +- .../test_data/kindergeld/2019/hh_id_0.yaml | 37 +- .../test_data/kindergeld/2019/hh_id_1.yaml | 43 +-- .../test_data/kindergeld/2019/hh_id_3.yaml | 13 +- .../test_data/kindergeld/2019/hh_id_5.yaml | 13 +- .../test_data/kindergeld/2020/hh_id_10.yaml | 19 +- .../test_data/kindergeld/2021/3_children.yaml | 37 +- .../test_data/kindergeld/2021/hh_id_11.yaml | 25 +- .../test_data/kindergeld/2021/hh_id_12.yaml | 13 +- .../test_data/kindergeld/2023/hh_id_13.yaml | 37 +- .../2024/alleinerz_1_child_low_unterhalt.yaml | 11 +- .../2024/alleinerz_1_child_no_unterhalt.yaml | 11 +- .../alleinerz_2_children_low_unterhalt.yaml | 15 +- .../alleinerz_2_children_no_unterhalt.yaml | 15 +- .../kinderzuschlag/2013/hh_id_2.yaml | 49 +-- .../kinderzuschlag/2016/hh_id_1.yaml | 65 ++-- .../kinderzuschlag/2016/hh_id_11.yaml | 65 ++-- .../kinderzuschlag/2016/hh_id_12.yaml | 68 ++-- .../kinderzuschlag/2016/hh_id_13.yaml | 65 ++-- .../kinderzuschlag/2016/hh_id_7.yaml | 65 ++-- .../kinderzuschlag/2017/hh_id_9.yaml | 81 ++-- .../kinderzuschlag/2019/hh_id_6.yaml | 49 +-- .../kinderzuschlag/2020/hh_id_8.yaml | 49 +-- .../kinderzuschlag/2021/hh_id_10.yaml | 65 ++-- .../kinderzuschlag/2023/hh_id_14.yaml | 49 +-- .../2023/test_child_income.yaml | 54 +-- .../2023/test_family_high_wealth.yaml | 54 +-- .../2023/test_higher_wealth_exemptions.yaml | 54 +-- ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 49 +-- .../2024/test_max_transfer.yaml | 37 +- .../kinderzuschlag/skip_2006/hh_id_4.yaml | 85 ++--- .../kinderzuschlag/skip_2009/hh_id_3.yaml | 43 +-- .../test_data/lohnsteuer/2015/hh_id_1045.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1051.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1081.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1134.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_121.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1214.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1219.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1435.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1462.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1476.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1555.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1627.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1793.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1796.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1915.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_1982.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2042.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2174.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2224.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2451.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2552.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2593.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2601.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2639.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2726.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2732.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2861.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_2924.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_400.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_470.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_561.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_583.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_72.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_736.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_76.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_765.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_769.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_786.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_790.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_802.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_830.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_856.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_857.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_891.yaml | 13 +- .../test_data/lohnsteuer/2015/hh_id_925.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1000.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1086.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1115.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1133.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1175.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_123.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1281.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1335.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1367.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1532.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1700.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1705.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1822.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_1958.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2065.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2151.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2220.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2289.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2358.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2396.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2645.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2693.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2724.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2744.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2932.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_2961.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_307.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_435.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_444.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_583.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_699.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_765.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_779.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_807.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_821.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_898.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_9.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_950.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_965.yaml | 13 +- .../test_data/lohnsteuer/2016/hh_id_968.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1019.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1088.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1134.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1164.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1279.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_146.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1503.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_151.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1532.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1549.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1615.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1705.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1788.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1841.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1866.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1878.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1923.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_1945.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2005.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2151.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2177.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2226.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2293.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2512.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_266.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2677.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2729.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2881.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2918.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2934.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2956.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2974.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_2991.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_30.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_416.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_455.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_496.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_506.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_528.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_568.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_575.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_588.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_659.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_743.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_881.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_910.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_933.yaml | 13 +- .../test_data/lohnsteuer/2017/hh_id_996.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1159.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1213.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_130.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1314.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_152.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1632.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1727.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_174.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1786.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1802.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_184.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_1935.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2098.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2156.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2186.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2395.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2491.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2575.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2649.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2720.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2828.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2904.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_2999.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_315.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_375.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_417.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_559.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_624.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_791.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_796.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_81.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_835.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_851.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_947.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_959.yaml | 13 +- .../test_data/lohnsteuer/2018/hh_id_98.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1014.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1093.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1098.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_111.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1180.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1210.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1354.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1629.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1695.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1709.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_180.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1825.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_1846.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2025.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2070.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2159.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2204.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2375.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2393.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2469.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2516.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_265.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2708.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2729.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2736.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2760.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2818.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_286.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2900.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2904.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_2942.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_317.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_331.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_396.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_420.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_605.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_646.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_65.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_664.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_698.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_710.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_715.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_809.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_816.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_832.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_879.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_882.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_949.yaml | 13 +- .../test_data/lohnsteuer/2019/hh_id_978.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1015.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1096.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1118.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1273.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_13.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1310.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1378.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1417.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1468.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_160.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_161.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1705.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1767.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1775.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1788.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1790.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_1928.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2106.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2182.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2184.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2230.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2320.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2389.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2439.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2527.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2562.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2587.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_266.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2888.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2898.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2920.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2953.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_2998.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_367.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_400.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_409.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_481.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_513.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_630.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_648.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_70.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_798.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_835.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_901.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_926.yaml | 13 +- .../test_data/lohnsteuer/2020/hh_id_949.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_111.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1186.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1204.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1237.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1255.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1380.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1385.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1402.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_145.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1538.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1610.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_165.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1714.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1762.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1853.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1908.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_1999.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2022.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2208.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_225.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2258.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2295.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_238.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2400.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2416.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2476.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_262.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2766.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2782.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2836.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2886.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2945.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_2946.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_299.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_318.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_321.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_33.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_417.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_479.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_519.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_522.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_618.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_620.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_651.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_738.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_761.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_788.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_798.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_810.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_864.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_867.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_883.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_885.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_9.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_946.yaml | 13 +- .../test_data/lohnsteuer/2021/hh_id_948.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1019.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1166.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1209.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1305.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1364.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1473.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1519.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1667.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1770.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1784.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1881.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1904.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1907.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_1918.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2099.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2111.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2118.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2129.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_224.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_241.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2410.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2423.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2428.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2439.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2447.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2868.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_2962.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_664.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_688.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_720.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_840.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_848.yaml | 13 +- .../test_data/lohnsteuer/2022/hh_id_963.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1019.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1166.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1209.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1305.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1364.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1473.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1519.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1667.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1770.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1784.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1881.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1904.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1907.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_1918.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2099.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2111.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2118.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2129.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_224.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_241.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2410.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2423.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2428.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2439.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2447.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2868.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_2962.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_664.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_688.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_720.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_840.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_848.yaml | 13 +- .../test_data/lohnsteuer/2023/hh_id_963.yaml | 13 +- .../1991/hh_id_2.yaml" | 17 +- .../1993/hh_id_5.yaml" | 17 +- .../1996/hh_id_6.yaml" | 17 +- .../1999/hh_id_4.yaml" | 17 +- .../2003/hh_id_3.yaml" | 17 +- .../2022/hh_id_1.yaml" | 17 +- .../2023/hh_id_7.yaml" | 17 +- .../2024/couple_above_threshold.yaml" | 25 +- .../2024/couple_below_threshold.yaml" | 25 +- .../2024/single_above_threshold.yaml" | 17 +- .../2024/single_below_threshold.yaml" | 17 +- .../arbeitslosengeld/2010/hh_id_6.yaml | 31 +- .../arbeitslosengeld/2011/hh_id_7.yaml | 21 +- .../arbeitslosengeld/2015/skip_hh_id_5.yaml | 33 +- .../arbeitslosengeld/2019/hh_id_1.yaml | 21 +- .../arbeitslosengeld/2019/hh_id_2.yaml | 21 +- .../arbeitslosengeld/2019/hh_id_3.yaml | 31 +- .../arbeitslosengeld/2019/hh_id_4.yaml | 31 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 25 +- ...eringf\303\274gig_besch\303\244ftigt.yaml" | 17 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 17 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 17 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 17 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 13 +- .../beitr\303\244ge/2010/hh_id_10.yaml" | 17 +- .../beitr\303\244ge/2010/hh_id_11.yaml" | 17 +- .../beitr\303\244ge/2010/hh_id_12.yaml" | 17 +- .../beitr\303\244ge/2010/hh_id_7.yaml" | 17 +- .../beitr\303\244ge/2010/hh_id_8.yaml" | 17 +- .../beitr\303\244ge/2010/hh_id_9.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_1.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_2.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_3.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_4.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_5.yaml" | 17 +- .../beitr\303\244ge/2018/hh_id_6.yaml" | 17 +- .../beitr\303\244ge/2019/hh_id_23.yaml" | 17 +- .../beitr\303\244ge/2019/hh_id_24.yaml" | 17 +- .../beitr\303\244ge/2020/hh_id_15.yaml" | 17 +- .../beitr\303\244ge/2020/hh_id_25.yaml" | 17 +- .../beitr\303\244ge/2022-10/hh_id_18.yaml" | 17 +- .../beitr\303\244ge/2022-10/hh_id_19.yaml" | 17 +- .../beitr\303\244ge/2022-10/hh_id_20.yaml" | 17 +- .../beitr\303\244ge/2022-10/hh_id_21.yaml" | 17 +- .../beitr\303\244ge/2022-10/hh_id_22.yaml" | 21 +- .../beitr\303\244ge/2022/hh_id_16.yaml" | 17 +- .../beitr\303\244ge/2022/hh_id_17.yaml" | 17 +- .../beitr\303\244ge/2023-07/hh_id_23.yaml" | 24 +- .../beitr\303\244ge/2023-07/hh_id_24.yaml" | 24 +- .../beitr\303\244ge/2023-07/hh_id_25.yaml" | 24 +- .../beitr\303\244ge/2023-07/hh_id_26.yaml" | 23 +- .../beitr\303\244ge/2023-07/hh_id_27.yaml" | 24 +- .../above_new_beitragsbemessungsgrenze.yaml" | 13 +- .../above_old_beitragsbemessungsgrenze.yaml" | 13 +- .../2024/below_beitragsbemessungsgrenze.yaml" | 13 +- .../2024/pflegev_anz_kinder_bis_24.yaml" | 24 +- .../2022-01-01/skip_minijobgrenze.yaml" | 3 +- .../2023/skip_minijobgrenze.yaml" | 3 +- .../2024/skip_minijobgrenze.yaml" | 3 +- .../1989}/cohort_1936_female.yaml | 19 +- .../altersgrenze}/1989/cohort_1936_male.yaml | 11 +- .../1989/cohort_1953_female.yaml | 19 +- .../altersgrenze}/1989/cohort_1953_male.yaml | 11 +- .../1992/cohort_1936_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1936_male.yaml | 11 +- .../1992/cohort_1937_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1937_male.yaml | 11 +- .../1992/cohort_1938_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1938_male.yaml | 11 +- .../1992/cohort_1939_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1939_male.yaml | 11 +- .../1992/cohort_1940_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1940_male.yaml | 11 +- .../1992/cohort_1941_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1941_male.yaml | 11 +- .../1992/cohort_1942_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1942_male.yaml | 11 +- .../1992/cohort_1943_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1943_male.yaml | 11 +- .../1992/cohort_1944_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1944_male.yaml | 11 +- .../1992/cohort_1945_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1945_male.yaml | 11 +- .../1992/cohort_1946_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1946_male.yaml | 11 +- .../1992/cohort_1947_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1947_male.yaml | 11 +- .../1992/cohort_1948_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1948_male.yaml | 11 +- .../1992/cohort_1949_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1949_male.yaml | 11 +- .../1992/cohort_1950_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1950_male.yaml | 11 +- .../1992/cohort_1951_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1951_male.yaml | 11 +- .../1992/cohort_1952_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1952_male.yaml | 11 +- .../1992/cohort_1953_female.yaml | 19 +- .../altersgrenze}/1992/cohort_1953_male.yaml | 11 +- .../1996-07-29}/cohort_1936_female.yaml | 19 +- .../1996-07-29/cohort_1936_male.yaml | 11 +- .../1996-07-29/cohort_1937_female.yaml | 19 +- .../1996-07-29/cohort_1937_male.yaml | 11 +- .../1996-07-29/cohort_1938_female.yaml | 19 +- .../1996-07-29/cohort_1938_male.yaml | 11 +- .../1996-07-29/cohort_1939_female.yaml | 19 +- .../1996-07-29/cohort_1939_male.yaml | 11 +- .../1996-07-29/cohort_1940_female.yaml | 19 +- .../1996-07-29/cohort_1940_male.yaml | 11 +- .../1996-07-29/cohort_1941_female.yaml | 19 +- .../1996-07-29/cohort_1941_male.yaml | 11 +- .../1996-07-29/cohort_1942_female.yaml | 19 +- .../1996-07-29/cohort_1942_male.yaml | 11 +- .../1996-07-29/cohort_1943_female.yaml | 19 +- .../1996-07-29/cohort_1943_male.yaml | 11 +- .../1996-07-29/cohort_1944_female.yaml | 19 +- .../1996-07-29/cohort_1944_male.yaml | 11 +- .../1996-07-29/cohort_1945_female.yaml | 19 +- .../1996-07-29/cohort_1945_male.yaml | 11 +- .../1996-07-29/cohort_1946_female.yaml | 19 +- .../1996-07-29/cohort_1946_male.yaml | 11 +- .../1996-07-29/cohort_1947_female.yaml | 19 +- .../1996-07-29/cohort_1947_male.yaml | 11 +- .../1996-07-29/cohort_1948_female.yaml | 19 +- .../1996-07-29/cohort_1948_male.yaml | 11 +- .../1996-07-29/cohort_1949_female.yaml | 19 +- .../1996-07-29/cohort_1949_male.yaml | 11 +- .../1996-07-29/cohort_1950_female.yaml | 19 +- .../1996-07-29/cohort_1950_male.yaml | 11 +- .../1996-07-29/cohort_1951_female.yaml | 19 +- .../1996-07-29/cohort_1951_male.yaml | 11 +- .../1996-07-29/cohort_1952_female.yaml | 19 +- .../1996-07-29/cohort_1952_male.yaml | 11 +- .../1996-07-29/cohort_1953_female.yaml | 19 +- .../1996-07-29/cohort_1953_male.yaml | 11 +- .../2012/cohort_1936_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1936_male.yaml | 15 +- .../2012/cohort_1937_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1937_male.yaml | 15 +- .../2012/cohort_1938_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1938_male.yaml | 15 +- .../2012/cohort_1939_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1939_male.yaml | 15 +- .../2012/cohort_1940_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1940_male.yaml | 15 +- .../2012/cohort_1941_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1941_male.yaml | 15 +- .../2012/cohort_1942_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1942_male.yaml | 15 +- .../2012/cohort_1943_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1943_male.yaml | 15 +- .../2012/cohort_1944_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1944_male.yaml | 15 +- .../2012/cohort_1945_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1945_male.yaml | 15 +- .../2012/cohort_1946_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1946_male.yaml | 15 +- .../2012/cohort_1947_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1947_male.yaml | 15 +- .../2012/cohort_1948_female.yaml | 27 +- .../altersgrenze}/2012/cohort_1948_male.yaml | 15 +- .../2024/cohort_1946_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1946_male.yaml | 9 +- .../2024/cohort_1947_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1947_male.yaml | 9 +- .../2024/cohort_1948_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1948_male.yaml | 9 +- .../2024/cohort_1949_female.yaml | 39 +- .../altersgrenze}/2024/cohort_1949_male.yaml | 39 +- .../2024/cohort_1950_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1950_male.yaml | 9 +- .../2024/cohort_1951_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1951_male.yaml | 9 +- .../2024/cohort_1952_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1952_male.yaml | 9 +- .../2024/cohort_1953_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1953_male.yaml | 9 +- .../2024/cohort_1954_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1954_male.yaml | 9 +- .../2024/cohort_1955_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1955_male.yaml | 9 +- .../2024/cohort_1956_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1956_male.yaml | 9 +- .../2024/cohort_1957_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1957_male.yaml | 9 +- .../2024/cohort_1958_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1958_male.yaml | 9 +- .../2024/cohort_1959_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1959_male.yaml | 9 +- .../2024/cohort_1960_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1960_male.yaml | 9 +- .../2024/cohort_1961_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1961_male.yaml | 9 +- .../2024/cohort_1962_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1962_male.yaml | 9 +- .../2024/cohort_1963_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1963_male.yaml | 9 +- .../2024/cohort_1964_female.yaml | 9 +- .../altersgrenze}/2024/cohort_1964_male.yaml | 9 +- .../betrag}/1991/cohort_1930_frauen.yaml | 21 +- .../rente/betrag}/1991/cohort_1930_langj.yaml | 21 +- .../1991/cohort_1930_langj_and_arbeitsl.yaml | 21 +- .../1991/cohort_1930_langj_and_frauen.yaml | 21 +- .../1991/cohort_1930_ohne_vorzeitig.yaml | 21 +- .../1991/cohort_1930_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1937_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1938_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1939_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1940_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1941_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1942_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1943_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1944_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1945_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1946_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1947_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1948_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1949_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1950_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1951_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1952_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1953_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1954_wegen_arbeitsl.yaml | 21 +- .../1991/cohort_1955_wegen_arbeitsl.yaml | 21 +- .../betrag}/1991/eligibility_pathways.yaml | 35 +- .../1992/cohort_1930_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1937_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1938_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1939_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1940_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1941_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1942_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1943_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1944_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1945_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1946_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1947_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1948_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1949_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1950_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1951_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1952_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1953_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1954_wegen_arbeitsl.yaml | 21 +- .../1992/cohort_1955_wegen_arbeitsl.yaml | 21 +- .../cohort_1936_wegen_arbeitsl.yaml | 41 +- .../cohort_1930_wegen_arbeitsl.yaml | 21 +- .../cohort_1937_wegen_arbeitsl.yaml | 21 +- .../cohort_1938_wegen_arbeitsl.yaml | 21 +- .../cohort_1939_wegen_arbeitsl.yaml | 21 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1940_wegen_arbeitsl.yaml | 21 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1941_wegen_arbeitsl.yaml | 21 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1942_wegen_arbeitsl.yaml | 21 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1943_wegen_arbeitsl.yaml | 21 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1944_wegen_arbeitsl.yaml | 21 +- .../cohort_1945_wegen_arbeitsl.yaml | 21 +- .../cohort_1946_wegen_arbeitsl.yaml | 21 +- .../cohort_1947_wegen_arbeitsl.yaml | 21 +- .../cohort_1948_wegen_arbeitsl.yaml | 21 +- .../cohort_1949_wegen_arbeitsl.yaml | 21 +- .../cohort_1950_wegen_arbeitsl.yaml | 21 +- .../cohort_1951_wegen_arbeitsl.yaml | 21 +- .../cohort_1952_wegen_arbeitsl.yaml | 21 +- .../cohort_1953_wegen_arbeitsl.yaml | 21 +- .../cohort_1954_wegen_arbeitsl.yaml | 21 +- .../cohort_1955_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1930_wegen_arbeitsl.yaml | 21 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 21 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1937_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1938_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1939_wegen_arbeitsl.yaml | 21 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1940_wegen_arbeitsl.yaml | 21 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1941_wegen_arbeitsl.yaml | 21 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../1997/cohort_1942_wegen_arbeitsl.yaml | 21 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 21 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 21 +- .../cohort_1930_wegen_arbeitsl.yaml | 21 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 21 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 21 +- .../cohort_1937_wegen_arbeitsl.yaml | 21 +- .../cohort_1938_wegen_arbeitsl.yaml | 21 +- .../cohort_1939_wegen_arbeitsl.yaml | 21 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 21 +- .../cohort_1940_wegen_arbeitsl.yaml | 21 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 21 +- .../cohort_1941_wegen_arbeitsl.yaml | 21 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 21 +- .../cohort_1942_wegen_arbeitsl.yaml | 21 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 21 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 21 +- .../cohort_1945_wegen_arbeitsl.yaml | 21 +- .../cohort_1946_wegen_arbeitsl.yaml | 21 +- .../cohort_1947_wegen_arbeitsl.yaml | 21 +- .../cohort_1948_wegen_arbeitsl.yaml | 21 +- .../cohort_1949_wegen_arbeitsl.yaml | 21 +- ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 21 +- .../cohort_1952_wegen_arbeitsl.yaml | 21 +- .../rente/betrag}/2010-07-01/hh_id_1.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_19.yaml | 42 +-- .../rente/betrag}/2010-07-01/hh_id_2.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_24.yaml | 41 +- .../rente/betrag}/2010-07-01/hh_id_25.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_3.yaml | 42 +-- .../rente/betrag}/2010-07-01/hh_id_30.yaml | 46 +-- .../rente/betrag}/2010-07-01/hh_id_4.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_5.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_6.yaml | 37 +- .../rente/betrag}/2010-07-01/hh_id_7.yaml | 42 +-- .../rente/betrag}/2012-07-01/hh_id_10.yaml | 37 +- .../rente/betrag}/2012-07-01/hh_id_11.yaml | 37 +- .../rente/betrag}/2012-07-01/hh_id_8.yaml | 37 +- .../rente/betrag}/2012-07-01/hh_id_9.yaml | 37 +- .../rente/betrag}/2014-07-01/hh_id_25.yaml | 45 ++- .../cohort_1951_wegen_arbeitsl.yaml | 21 +- .../2015-07-01/eligibility_pathways.yaml | 35 +- .../rente/betrag}/2015-07-01/hh_id_12.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_13.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_14.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_15.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_16.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_17.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_18.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_19.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_25.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_26.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_27.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_28.yaml | 37 +- .../rente/betrag}/2015-07-01/hh_id_29.yaml | 37 +- .../betrag}/2018-07-01/age_at_retirement.yaml | 1 + ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 25 +- ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 25 +- ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 25 +- ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 25 +- .../2018-07-01/cohort_1955_vorzeitig.yaml | 25 +- .../2018-07-01/cohort_1958_vorzeitig.yaml | 25 +- .../2018-07-01/eligibility_pathways.yaml | 1 + .../rente/betrag}/2018-07-01/hh_id_20.yaml | 37 +- .../rente/betrag}/2018-07-01/hh_id_21.yaml | 42 +-- .../rente/betrag}/2018-07-01/hh_id_22.yaml | 42 +-- .../rente/betrag}/2018-07-01/hh_id_23.yaml | 37 +- .../rente/betrag}/2018-07-01/hh_id_24.yaml | 37 +- .../rente/betrag}/2018-07-01/hh_id_25.yaml | 37 +- .../zero_entgeltpunkte_anteil_ost.yaml | 1 + ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1940_claim.yaml | 5 +- ...t_birthyear_1940_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1941_claim.yaml | 5 +- ...t_birthyear_1941_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1943_claim.yaml | 5 +- ...t_birthyear_1943_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1945_claim.yaml | 5 +- ...t_birthyear_1945_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1950_claim.yaml | 5 +- ...t_birthyear_1950_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 5 +- ...t_birthyear_1960_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 9 +- ...werbsgemindert_birthyear_1990_2_claim.yaml | 5 +- ...birthyear_1990_2_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 5 +- ...t_birthyear_1960_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 5 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 5 +- ...t_birthyear_1990_preliminary_products.yaml | 5 +- .../2018/langj_versicherte_wartezeit_1.yaml | 13 +- .../2018/langj_versicherte_wartezeit_2.yaml | 13 +- .../2018/langj_versicherte_wartezeit_3.yaml | 13 +- .../2018/langj_versicherte_wartezeit_4.yaml | 13 +- .../2018/langj_versicherte_wartezeit_5.yaml | 13 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 5 +- ...t_birthyear_1995_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 5 +- ...t_birthyear_1960_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 5 +- ...t_birthyear_1980_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 5 +- ...t_birthyear_1990_preliminary_products.yaml | 9 +- ...werbsgemindert_birthyear_2000_2_claim.yaml | 5 +- ...birthyear_2000_2_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_2000_claim.yaml | 5 +- ...t_birthyear_2000_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1957_claim.yaml | 5 +- ...t_birthyear_1957_preliminary_products.yaml | 9 +- ...werbsgemindert_birthyear_1970_2_claim.yaml | 5 +- ...birthyear_1970_2_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 5 +- ...t_birthyear_1970_preliminary_products.yaml | 9 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 5 +- ...t_birthyear_1995_preliminary_products.yaml | 9 +- .../2016/einkommen_unter_grenze.yaml | 9 +- .../2016/einkommen_\303\274ber_grenze.yaml" | 9 +- .../2018/hohes_einkommen.yaml | 9 +- .../2018/kein_einkommen.yaml | 9 +- .../2018/mittleres_einkommen.yaml | 9 +- .../2018/niedriges_einkommen.yaml | 9 +- .../2021/hohes_einkommen.yaml | 9 +- .../2021/kein_einkommen.yaml | 9 +- .../2021/mittleres_einkommen.yaml | 9 +- .../2021/niedriges_einkommen.yaml | 9 +- .../2023/hohes_einkommen.yaml | 9 +- .../2023/kein_einkommen.yaml | 9 +- .../2023/mittleres_einkommen.yaml | 9 +- .../2023/niedriges_einkommen.yaml | 9 +- .../rente}/grundrente/2021-07-01/hh_id_1.yaml | 29 +- .../grundrente/2021-07-01/hh_id_10.yaml | 25 +- .../grundrente/2021-07-01/hh_id_11.yaml | 32 +- .../grundrente/2021-07-01/hh_id_12.yaml | 25 +- .../rente}/grundrente/2021-07-01/hh_id_2.yaml | 29 +- .../rente}/grundrente/2021-07-01/hh_id_3.yaml | 29 +- .../rente}/grundrente/2021-07-01/hh_id_4.yaml | 28 +- .../rente}/grundrente/2021-07-01/hh_id_5.yaml | 28 +- .../rente}/grundrente/2021-07-01/hh_id_6.yaml | 25 +- .../rente}/grundrente/2021-07-01/hh_id_7.yaml | 25 +- .../rente}/grundrente/2021-07-01/hh_id_8.yaml | 25 +- .../rente}/grundrente/2021-07-01/hh_id_9.yaml | 32 +- .../2021-07-01/hh_id_1.yaml | 37 +- .../2021-07-01/hh_id_10.yaml | 37 +- .../2021-07-01/hh_id_2.yaml | 37 +- .../2021-07-01/hh_id_3.yaml | 37 +- .../2021-07-01/hh_id_4.yaml | 37 +- .../2021-07-01/hh_id_5.yaml | 37 +- .../2021-07-01/hh_id_6.yaml | 37 +- .../2021-07-01/hh_id_7.yaml | 37 +- .../2021-07-01/hh_id_8.yaml | 37 +- .../2021-07-01/hh_id_9.yaml | 37 +- .../test_data/unterhalt/2023/hh_id_1.yaml | 7 +- .../test_data/unterhalt/2023/hh_id_2.yaml | 7 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../unterhaltsvorschuss/2018-1/hh_id_5.yaml | 33 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../older_child_parent_with_income.yaml | 43 +-- .../older_child_parent_without_income.yaml | 43 +-- .../young_child_parent_without_income.yaml | 43 +-- .../unterhaltsvorschuss/2019-8/hh_id_1.yaml | 33 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 19 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 19 +- .../anspruchshoehe_untere_altergruppe.yaml | 19 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 19 +- .../2006/hh_id_4.yaml" | 61 +-- .../2009/hh_id_3.yaml" | 31 +- .../2013/hh_id_2.yaml" | 31 +- .../2014/hh_id_7.yaml" | 31 +- .../2016/hh_id_1.yaml" | 41 +- .../2019/hh_id_6.yaml" | 31 +- .../2019/hh_id_8.yaml" | 21 +- .../test_data/wohngeld/2006/hh_id_15.yaml | 236 ++++++------ .../test_data/wohngeld/2006/hh_id_4.yaml | 155 ++++---- .../wohngeld/2009/vermoegen_zu_hoch.yaml | 79 ++-- .../test_data/wohngeld/2013/hh_id_2.yaml | 77 ++-- .../test_data/wohngeld/2013/hh_id_9.yaml | 77 ++-- .../test_data/wohngeld/2016/hh_id_1.yaml | 103 ++--- .../test_data/wohngeld/2018/hh_id_7.yaml | 357 +++++++++--------- .../test_data/wohngeld/2018/hh_id_8.yaml | 181 ++++----- .../wohngeld/2018/vermoegen_zu_hoch.yaml | 181 ++++----- .../test_data/wohngeld/2019/hh_id_5.yaml | 53 +-- .../test_data/wohngeld/2021/hh_id_10.yaml | 53 +-- .../test_data/wohngeld/2023/hh_id_11.yaml | 53 +-- .../test_data/wohngeld/2023/hh_id_12.yaml | 53 +-- .../test_data/wohngeld/2023/hh_id_13.yaml | 105 +++--- .../test_data/wohngeld/2023/hh_id_14.yaml | 183 ++++----- .../test_data/wohngeld/2023/hh_id_16.yaml | 131 +++---- .../test_data/wohngeld/2023/hh_id_17.yaml | 157 ++++---- .../wohngeld/2023/mindesteinkommen.yaml | 173 +++++---- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 145 +++---- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 193 +++++----- src/_gettsim_tests/test_einkommensteuer.py | 28 -- src/_gettsim_tests/test_elterngeld.py | 28 -- .../test_erwerbsminderungsrente.py | 28 -- src/_gettsim_tests/test_erziehungsgeld.py | 28 -- .../test_full_taxes_and_transfers.py | 6 +- .../test_ges_rente_hinzuverdienst.py | 28 -- src/_gettsim_tests/test_groupings.py | 2 +- src/_gettsim_tests/test_grundrente.py | 45 --- .../test_grundsicherung_im_alter.py | 28 -- .../test_g\303\274nstigerpr\303\274fungen.py" | 28 -- src/_gettsim_tests/test_kindergeld.py | 28 -- src/_gettsim_tests/test_kinderzuschlag.py | 28 -- src/_gettsim_tests/test_lohnsteuer.py | 29 +- src/_gettsim_tests/test_minijobgrenze.py | 28 -- .../test_rente_altersgrenzen.py | 28 -- src/_gettsim_tests/test_rente_anspruch.py | 28 -- .../test_solidarit\303\244tszuschlag.py" | 28 -- ...est_sozialversicherungsbeitr\303\244ge.py" | 28 -- .../test_steuern_und_transfers.py | 18 + src/_gettsim_tests/test_unterhalt.py | 28 -- .../test_unterhaltsvorschuss.py | 28 -- .../test_vorrangpr\303\274fungen.py" | 28 -- src/_gettsim_tests/test_vorsorgeaufwand.py | 28 -- src/_gettsim_tests/test_wohngeld.py | 28 -- .../test_zu_versteuerndes_einkommen.py | 28 -- 1193 files changed, 16058 insertions(+), 15643 deletions(-) delete mode 100644 src/_gettsim_tests/test_arbeitslosengeld.py delete mode 100644 src/_gettsim_tests/test_arbeitslosengeld_2.py rename src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" (98%) rename src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2009/hh_id_4.yaml (97%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2012/hh_id_3.yaml (97%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2015/hh_id_2.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2018/couple_1_child.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2018/hh_id_1.yaml (97%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2018/hh_id_5.yaml (97%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2023/hh_id_6.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2024/couple_1_child.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2024/couple_above_soli_freibetrag.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2024/single_above_soli_freibetrag.yaml (98%) rename src/_gettsim_tests/test_data/einkommensteuer/{ => betrag}/2024/single_below_soli_freibetrag.yaml (98%) rename "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" (98%) rename "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" (97%) rename "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" (98%) rename "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" (98%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2010/hh_id_1.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2010/hh_id_2.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2010/hh_id_3.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2010/hh_id_4.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2010/hh_id_5.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2015/hh_id_16.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2015/hh_id_17.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2017/hh_id_18.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_10.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_11.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_12.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_7.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_8.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2018/hh_id_9.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2019/hh_id_13.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2020/hh_id_14.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2020/hh_id_19.yaml (99%) rename src/_gettsim_tests/test_data/{ => einkommensteuer}/zu_versteuerndes_einkommen/2020/hh_id_20.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2017-07-01/hh_id_13.yaml (89%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2017-07-01/hh_id_16.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2017-07-01/hh_id_17.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2017-07-01/hh_id_6.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2018-07-01/hh_id_12.yaml (88%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2018-07-01/hh_id_20.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2018-07-01/hh_id_22.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2018-07-01/hh_id_3.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2020-07-01/hh_id_18.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2020-07-01/hh_id_19.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_1.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_14.yaml (92%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_15.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_2.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_21.yaml (96%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_23.yaml (96%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_5.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_7.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2021-07-01/hh_id_9.yaml (94%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_10.yaml (95%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_11.yaml (95%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_24.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_25.yaml (95%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_4.yaml (99%) rename src/_gettsim_tests/test_data/{grundsicherung_im_alter => grundsicherung/im_alter}/2022-07-01/hh_id_8.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2010/hh_id_6.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2011/hh_id_7.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2015/skip_hh_id_5.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2019/hh_id_1.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2019/hh_id_2.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2019/hh_id_3.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung}/arbeitslosengeld/2019/hh_id_4.yaml (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" (99%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" (99%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" (84%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" (85%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" (84%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" (85%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" (86%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" (85%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" (98%) rename "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" (85%) rename src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml => "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" (62%) rename src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml => "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" (62%) rename src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml => "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" (62%) rename src/_gettsim_tests/test_data/{rente_anspruch/1996-07-29 => sozialversicherung/rente/altersgrenze/1989}/cohort_1936_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1989/cohort_1936_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1989/cohort_1953_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1989/cohort_1953_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1936_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1936_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1937_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1937_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1938_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1938_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1939_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1939_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1940_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1940_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1941_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1941_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1942_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1942_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1943_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1943_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1944_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1944_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1945_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1945_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1946_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1946_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1947_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1947_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1948_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1948_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1949_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1949_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1950_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1950_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1951_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1951_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1952_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1952_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1953_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1992/cohort_1953_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch/1989 => sozialversicherung/rente/altersgrenze/1996-07-29}/cohort_1936_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1936_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1937_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1937_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1938_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1938_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1939_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1939_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1940_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1940_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1941_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1941_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1942_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1942_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1943_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1943_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1944_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1944_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1945_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1945_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1946_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1946_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1947_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1947_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1948_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1948_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1949_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1949_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1950_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1950_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1951_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1951_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1952_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1952_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1953_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/1996-07-29/cohort_1953_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1936_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1936_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1937_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1937_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1938_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1938_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1939_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1939_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1940_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1940_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1941_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1941_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1942_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1942_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1943_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1943_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1944_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1944_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1945_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1945_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1946_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1946_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1947_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1947_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1948_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2012/cohort_1948_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1946_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1946_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1947_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1947_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1948_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1948_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1949_female.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1949_male.yaml (99%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1950_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1950_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1951_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1951_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1952_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1952_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1953_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1953_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1954_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1954_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1955_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1955_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1956_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1956_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1957_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1957_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1958_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1958_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1959_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1959_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1960_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1960_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1961_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1961_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1962_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1962_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1963_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1963_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1964_female.yaml (98%) rename src/_gettsim_tests/test_data/{rente_anspruch => sozialversicherung/rente/altersgrenze}/2024/cohort_1964_male.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_frauen.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_langj.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_langj_and_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_langj_and_frauen.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_ohne_vorzeitig.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1930_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1937_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1938_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1939_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1940_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1941_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1942_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1943_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1944_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1945_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1946_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1947_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1948_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1949_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1950_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1951_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1952_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1953_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1954_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/cohort_1955_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1991/eligibility_pathways.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1930_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1937_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1938_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1939_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1940_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1941_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1942_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1943_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1944_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1945_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1946_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1947_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1948_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1949_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1950_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1951_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1952_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1953_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1954_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1992/cohort_1955_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-07-01/cohort_1936_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1930_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1937_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1938_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1939_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1940_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1941_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1942_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1943_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1944_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1945_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1946_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1947_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1948_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1949_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1950_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1951_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1952_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1953_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1954_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1996-08-01/cohort_1955_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1930_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1937_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1938_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1939_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1940_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1941_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1942_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1930_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1937_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1938_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1939_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1940_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1941_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1942_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1945_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1946_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1947_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1948_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1949_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2007-08-01/cohort_1952_wegen_arbeitsl.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_1.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_19.yaml (94%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_2.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_24.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_25.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_3.yaml (94%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_30.yaml (94%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_4.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_5.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_6.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2010-07-01/hh_id_7.yaml (93%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2012-07-01/hh_id_10.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2012-07-01/hh_id_11.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2012-07-01/hh_id_8.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2012-07-01/hh_id_9.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2014-07-01/hh_id_25.yaml (93%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/cohort_1951_wegen_arbeitsl.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/eligibility_pathways.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_12.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_13.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_14.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_15.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_16.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_17.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_18.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_19.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_25.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_26.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_27.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_28.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2015-07-01/hh_id_29.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/age_at_retirement.yaml (97%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml (98%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1955_vorzeitig.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/cohort_1958_vorzeitig.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/eligibility_pathways.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_20.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_21.yaml (94%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_22.yaml (94%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_23.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_24.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/hh_id_25.yaml (99%) rename src/_gettsim_tests/test_data/{rente_altersgrenzen => sozialversicherung/rente/betrag}/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml (94%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/langj_versicherte_wartezeit_1.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/langj_versicherte_wartezeit_2.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/langj_versicherte_wartezeit_3.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/langj_versicherte_wartezeit_4.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/langj_versicherte_wartezeit_5.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml (97%) rename src/_gettsim_tests/test_data/{erwerbsminderungsrente => sozialversicherung/rente/erwerbsminderung}/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml (97%) rename "src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" (97%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml (98%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml (97%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml (97%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml (97%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml (97%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_1.yaml (94%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_10.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_11.yaml (86%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_12.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_2.yaml (94%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_3.yaml (94%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_4.yaml (94%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_5.yaml (94%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_6.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_7.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_8.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente/2021-07-01/hh_id_9.yaml (87%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml (99%) rename src/_gettsim_tests/test_data/{ => sozialversicherung/rente}/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml (99%) delete mode 100644 src/_gettsim_tests/test_einkommensteuer.py delete mode 100644 src/_gettsim_tests/test_elterngeld.py delete mode 100644 src/_gettsim_tests/test_erwerbsminderungsrente.py delete mode 100644 src/_gettsim_tests/test_erziehungsgeld.py delete mode 100644 src/_gettsim_tests/test_ges_rente_hinzuverdienst.py delete mode 100644 src/_gettsim_tests/test_grundsicherung_im_alter.py delete mode 100644 "src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" delete mode 100644 src/_gettsim_tests/test_kindergeld.py delete mode 100644 src/_gettsim_tests/test_kinderzuschlag.py delete mode 100644 src/_gettsim_tests/test_minijobgrenze.py delete mode 100644 src/_gettsim_tests/test_rente_altersgrenzen.py delete mode 100644 src/_gettsim_tests/test_rente_anspruch.py delete mode 100644 "src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" delete mode 100644 "src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" create mode 100644 src/_gettsim_tests/test_steuern_und_transfers.py delete mode 100644 src/_gettsim_tests/test_unterhalt.py delete mode 100644 src/_gettsim_tests/test_unterhaltsvorschuss.py delete mode 100644 "src/_gettsim_tests/test_vorrangpr\303\274fungen.py" delete mode 100644 src/_gettsim_tests/test_vorsorgeaufwand.py delete mode 100644 src/_gettsim_tests/test_wohngeld.py delete mode 100644 src/_gettsim_tests/test_zu_versteuerndes_einkommen.py diff --git a/src/_gettsim_tests/_policy_test_utils.py b/src/_gettsim_tests/_policy_test_utils.py index 358a9a2af3..d9653427e9 100644 --- a/src/_gettsim_tests/_policy_test_utils.py +++ b/src/_gettsim_tests/_policy_test_utils.py @@ -7,6 +7,7 @@ import pandas as pd import yaml +from _gettsim_tests import TEST_DIR from ttsim import merge_trees if TYPE_CHECKING: @@ -20,11 +21,13 @@ class PolicyTest: def __init__( self, + info: NestedDataDict, input_tree: NestedDataDict, expected_output_tree: NestedDataDict, path: Path, date: datetime.date, ) -> None: + self.info = info self.input_tree = input_tree self.expected_output_tree = expected_output_tree self.path = path @@ -39,30 +42,61 @@ def target_structure(self) -> NestedInputStructureDict: @property def test_name(self) -> str: - return self.path.stem + return self.path.relative_to(TEST_DIR / "test_data").as_posix() -def load_policy_test_data(policy_name: str) -> list[PolicyTest]: - from _gettsim_tests import TEST_DIR +def execute_test(test: PolicyTest): + from pandas.testing import assert_frame_equal + + from _gettsim_tests._helpers import cached_set_up_policy_environment + from ttsim import compute_taxes_and_transfers + + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + if flat_expected_output_tree: + result_dataframe = pd.DataFrame(flat_result) + expected_dataframe = pd.DataFrame(flat_expected_output_tree) + assert_frame_equal( + result_dataframe, + expected_dataframe, + atol=test.info["precision"], + check_dtype=False, + ) + + +def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: + all_policy_tests = load_policy_test_data("") + return {policy_test.test_name: policy_test for policy_test in all_policy_tests} - root = TEST_DIR / "test_data" / policy_name +def load_policy_test_data(policy_name: str) -> list[PolicyTest]: out = [] - for path_of_test_file in root.glob("**/*.yaml"): - if _is_skipped(path_of_test_file): + for path_to_yaml in (TEST_DIR / "test_data" / policy_name).glob("**/*.yaml"): + if _is_skipped(path_to_yaml): continue - with path_of_test_file.open("r", encoding="utf-8") as file: + with path_to_yaml.open("r", encoding="utf-8") as file: raw_test_data: NestedDataDict = yaml.safe_load(file) # TODO(@MImmesberger): Remove this before merging this PR. - raw_test_data = get_test_data_as_tree(raw_test_data) + raw_test_data["inputs"], raw_test_data["outputs"] = get_test_data_as_tree( + raw_test_data + ) out.extend( _get_policy_tests_from_raw_test_data( raw_test_data=raw_test_data, - path_of_test_file=path_of_test_file, + path_to_yaml=path_to_yaml, ) ) @@ -76,6 +110,7 @@ def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: unflattened_dict = {} unflattened_dict["inputs"] = {} unflattened_dict["outputs"] = {} + if provided_inputs: unflattened_dict["inputs"]["provided"] = dt.unflatten_from_qual_names( provided_inputs @@ -91,7 +126,7 @@ def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: unflattened_dict["outputs"] = dt.unflatten_from_qual_names(test_data["outputs"]) - return unflattened_dict + return unflattened_dict["inputs"], unflattened_dict["outputs"] def _is_skipped(test_file: Path) -> bool: @@ -99,16 +134,18 @@ def _is_skipped(test_file: Path) -> bool: def _get_policy_tests_from_raw_test_data( - raw_test_data: NestedDataDict, path_of_test_file: Path + raw_test_data: NestedDataDict, path_to_yaml: Path ) -> list[PolicyTest]: """Get a list of PolicyTest objects from raw test data. Args: raw_test_data: The raw test data. + path_to_yaml: The path to the YAML file. Returns: A list of PolicyTest objects. """ + test_info: NestedDataDict = raw_test_data.get("info", {}) inputs: NestedDataDict = raw_test_data.get("inputs", {}) input_tree: NestedDataDict = dt.unflatten_from_tree_paths( { @@ -128,15 +165,16 @@ def _get_policy_tests_from_raw_test_data( } ) - date: datetime.date = _parse_date(path_of_test_file.parent.name) + date: datetime.date = _parse_date(path_to_yaml.parent.name) out = [] if expected_output_tree == {}: out.append( PolicyTest( + info=test_info, input_tree=input_tree, expected_output_tree={}, - path=path_of_test_file, + path=path_to_yaml, date=date, ) ) @@ -149,9 +187,10 @@ def _get_policy_tests_from_raw_test_data( ) out.append( PolicyTest( + info=test_info, input_tree=input_tree, expected_output_tree=one_expected_output, - path=path_of_test_file, + path=path_to_yaml, date=date, ) ) diff --git a/src/_gettsim_tests/test_arbeitslosengeld.py b/src/_gettsim_tests/test_arbeitslosengeld.py deleted file mode 100644 index 2e6d931a47..0000000000 --- a/src/_gettsim_tests/test_arbeitslosengeld.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("arbeitslosengeld") - - -@pytest.mark.parametrize("test", test_data) -def test_arbeitslosengeld(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_arbeitslosengeld_2.py b/src/_gettsim_tests/test_arbeitslosengeld_2.py deleted file mode 100644 index 9c29c3f5cc..0000000000 --- a/src/_gettsim_tests/test_arbeitslosengeld_2.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("arbeitslosengeld_2") - - -@pytest.mark.parametrize("test", test_data) -def test_arbeitslosengeld_2(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml index a460664c74..196d4bc9b6 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 37 + - 37 + - 3 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,14 +18,38 @@ inputs: - -1 - -1 - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 0 familie__alleinerziehend: - true - false - false - alter: - - 37 - - 37 - - 3 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1970 - 1970 @@ -37,38 +66,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -77,6 +74,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml index e5b875ff45..f63dfd686f 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 37 + - 37 + - 3 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,42 +18,6 @@ inputs: - -1 - -1 - -1 - alter: - - 37 - - 37 - - 3 - geburtsjahr: - - 1970 - - 1970 - - 2004 - geburtsmonat: - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 einkommensteuer__gemeinsam_veranlagt: - false - false @@ -65,6 +34,34 @@ inputs: - -1 - -1 - 0 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + geburtsjahr: + - 1970 + - 1970 + - 2004 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 0 + - 0 + - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -73,6 +70,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml index d974eaa206..1680f58351 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 37 + - 37 + - 3 + - 3 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,51 +21,6 @@ inputs: - 0 - -1 - -1 - alter: - - 37 - - 37 - - 3 - - 3 - geburtsjahr: - - 1970 - - 1970 - - 2004 - - 2004 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 einkommensteuer__gemeinsam_veranlagt: - true - true @@ -80,6 +41,41 @@ inputs: - -1 - 0 - 0 + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 + geburtsjahr: + - 1970 + - 1970 + - 2004 + - 2004 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 0 + - 0 + - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -90,6 +86,11 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 2 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index 24c15f2dc3..642dd86437 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 37 + - 37 + - 3 + - 3 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,16 +21,46 @@ inputs: - 0 - -1 - -1 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + erziehungsgeld__anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + - 150.0 + erziehungsgeld__grundsätzlich_anspruchsberechtigt: + - true + - true + - true + - true + erziehungsgeld__p_id_empfänger: + - -1 + - -1 + - 0 + - 1 familie__alleinerziehend: - false - false - false - false - alter: - - 37 - - 37 - - 3 - - 3 + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -45,46 +81,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 1 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -95,6 +91,11 @@ inputs: - -1 - 0 - 1 + p_id: + - 0 + - 1 + - 2 + - 3 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 2 diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 6f9f90e049..f3a558db08 100644 --- "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -1,10 +1,15 @@ --- info: note: Overwriting the recipients of Kinderfreibetrag. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 74 + - 74 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,10 +18,30 @@ inputs: - -1 - -1 - -1 - alter: - - 74 - - 74 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + einkommensteuer__p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + einkommensteuer__p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1933 - 1933 @@ -33,34 +58,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -69,6 +66,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml index aa98bc7032..47d4895212 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 34 + - 34 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,14 +18,26 @@ inputs: - -1 - -1 - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false familie__alleinerziehend: - true - false - false - alter: - - 34 - - 34 - - 10 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1990 - 1990 @@ -37,26 +54,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -65,6 +62,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml index 4669fc1699..1c05f1e87c 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 34 + - 34 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,10 +18,22 @@ inputs: - -1 - -1 - -1 - alter: - - 34 - - 34 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1990 - 1990 @@ -33,26 +50,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -61,6 +58,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml index c81b8d54ba..c36f09b473 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 34 + - 34 + - 10 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 34 - - 34 - - 10 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1990 - 1990 @@ -40,31 +61,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -75,6 +71,11 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 2 diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index 5ac962bacb..8e7cd28315 100644 --- a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 34 + - 34 + - 10 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 34 - - 34 - - 10 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1990 - 1990 @@ -40,31 +61,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -75,6 +71,11 @@ inputs: - -1 - 0 - 1 + p_id: + - 0 + - 1 + - 2 + - 3 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 2 diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index d7b1e8638b..2c8402fb07 100644 --- "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -1,10 +1,15 @@ --- info: note: Overwriting the recipients of Kinderfreibetrag. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 74 + - 74 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,10 +18,30 @@ inputs: - -1 - -1 - -1 - alter: - - 74 - - 74 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + einkommensteuer__p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + einkommensteuer__p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1950 - 1950 @@ -33,34 +58,6 @@ inputs: - 0 - 0 - 0 - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -69,6 +66,10 @@ inputs: - -1 - -1 - 0 + p_id: + - 0 + - 1 + - 2 outputs: einkommensteuer__anzahl_kinderfreibeträge: - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml index 3928a1be79..2451fd3565 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml @@ -1,38 +1,21 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 45 arbeitsstunden_w: - 20.0 - geburtsjahr: - - 1960 - hh_id: - - 8 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -49,6 +32,20 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1960 + hh_id: + - 8 jahr: - '2005' kindergeld__betrag_m_bg: @@ -57,6 +54,8 @@ inputs: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 4 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -73,6 +72,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 8c74bd192d..c80da8191f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,11 +1,13 @@ --- info: - note: >- - Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 arbeitslosengeld_2__bg_id: - 0 - 0 @@ -15,36 +17,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false familie__alleinerziehend: - true - false - alter: - - 40 - - 10 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: - - 0 - - 1 familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false + hh_id: + - 0 + - 0 jahr: - 2005 - 2005 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 519f02a16e..3d295bcce4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,11 +1,13 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two - Bedarfsgemeinschaften. + note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 arbeitslosengeld_2__bg_id: - 0 - 0 @@ -18,30 +20,27 @@ inputs: familie__alleinerziehend: - true - false - alter: - - 40 - - 10 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: - - 0 - - 1 familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 jahr: - 2005 - 2005 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 59eb311c9b..5f53e5c182 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,11 +1,14 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 + - 45 arbeitslosengeld_2__bg_id: - 0 - 0 @@ -22,22 +25,10 @@ inputs: - false - false - false - alter: - - 40 - - 10 - - 45 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - false - p_id: - - 0 - - 1 - - 2 familie__p_id_elternteil_1: - -1 - 0 @@ -46,6 +37,10 @@ inputs: - -1 - 2 - -1 + hh_id: + - 0 + - 0 + - 0 jahr: - 2005 - 2005 @@ -54,6 +49,10 @@ inputs: - -1 - 0 - -1 + p_id: + - 0 + - 1 + - 2 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 186d1adafa..3deb19fc90 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,11 +1,14 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two - Bedarfsgemeinschaften. + note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 + - 45 arbeitslosengeld_2__bg_id: - 0 - 1 @@ -22,22 +25,10 @@ inputs: - false - false - false - alter: - - 40 - - 10 - - 45 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - false - p_id: - - 0 - - 1 - - 2 familie__p_id_elternteil_1: - -1 - 0 @@ -46,6 +37,10 @@ inputs: - -1 - 2 - -1 + hh_id: + - 0 + - 0 + - 0 jahr: - 2005 - 2005 @@ -54,6 +49,10 @@ inputs: - -1 - 0 - -1 + p_id: + - 0 + - 1 + - 2 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml index c3b87f2a44..b00e52a5f8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml @@ -1,11 +1,16 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 5 + - 10 + - 14 + - 19 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -24,30 +29,12 @@ inputs: - false - false - false - alter: - - 40 - - 5 - - 10 - - 14 - - 19 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 familie__kind: - false - true - true - true - true - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 familie__p_id_elternteil_1: - -1 - 0 @@ -60,6 +47,12 @@ inputs: - -1 - -1 - -1 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 jahr: - 2005 - 2005 @@ -72,6 +65,12 @@ inputs: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 provided: {} outputs: arbeitslosengeld_2__erwachsenensatz_m: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml index 5852df0bd8..b9b5245b17 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml @@ -1,33 +1,33 @@ --- info: - note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the - adult Regelsatz. + note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult + Regelsatz. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 17 arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 familie__alleinerziehend: - false - alter: - - 17 - hh_id: - - 0 familie__kind: - true - p_id: - - 0 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 + hh_id: + - 0 jahr: - 2018 kindergeld__p_id_empfänger: - -1 + p_id: + - 0 provided: {} outputs: arbeitslosengeld_2__erwachsenensatz_m: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml index 4da1e27616..e5dafe8d9e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml @@ -1,10 +1,17 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 33 + - 30 + - 12 + - 10 + - 2 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -23,72 +30,12 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - alter: - - 33 - - 30 - - 12 - - 10 - - 2 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 - familie__kind: - - false - - false - - true - - true - - true - p_id: - - 5 - - 6 - - 7 - - 8 - - 9 - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - - 5 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 - - 6 - - 6 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -137,6 +84,48 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + - 5 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + - 6 + - 6 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 jahr: - '2006' - '2006' @@ -161,6 +150,12 @@ inputs: - 5 - 5 - 5 + p_id: + - 5 + - 6 + - 7 + - 8 + - 9 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -209,6 +204,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml index 174b87c5e5..02bf1cbfc3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 28 + - 1 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -14,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 28 - - 1 arbeitsstunden_w: - 40.0 - 0.0 - geburtsjahr: - - 1981 - - 2008 - hh_id: - - 3 - - 3 - familie__kind: - - false - - true - p_id: - - 10 - - 11 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 10 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 1200.0 - 0.0 @@ -71,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 10 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 jahr: - '2009' - '2009' @@ -83,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - 10 + p_id: + - 10 + - 11 solidaritätszuschlag__betrag_y_sn: - 66.0 - 0.0 @@ -107,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml index a32aa9b00d..8444fb5c55 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml @@ -1,10 +1,14 @@ --- info: note: Regression test. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 38 + - 20 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -14,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 38 - - 20 arbeitsstunden_w: - 40.0 - 0.0 - geburtsjahr: - - 1981 - - 2008 - hh_id: - - 3 - - 3 - familie__kind: - - false - - true - p_id: - - 10 - - 11 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 10 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 1200.0 - 0.0 @@ -71,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 10 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 jahr: - '2009' - '2009' @@ -83,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - 10 + p_id: + - 10 + - 11 solidaritätszuschlag__betrag_y_sn: - 66.0 - 0.0 @@ -107,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml index 368c53ad4c..3bec2d4fd8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml @@ -1,10 +1,14 @@ --- info: note: Test if household with all partners being retired does not get ALG 2 + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 70 + - 70 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -14,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 26 - 25 - familie__alleinerziehend: - - false - - false - alter: - - 70 - - 70 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1943 - - 1943 - hh_id: - - 12 - - 12 - familie__kind: - - false - - false - p_id: - - 25 - - 26 - familie__p_id_ehepartner: - - 26 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 26 + - 25 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1943 + - 1943 + hh_id: + - 12 + - 12 jahr: - '2013' - '2013' @@ -83,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 25 + - 26 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -107,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - true - true diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml index b78720f553..7afbd8b0a6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml @@ -1,10 +1,14 @@ --- info: note: Test if household with retired and non-retired adults do get ALG 2 + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 70 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -14,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 28 - 27 - familie__alleinerziehend: - - false - - false - alter: - - 40 - - 70 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1973 - - 1943 - hh_id: - - 13 - - 13 - familie__kind: - - false - - false - p_id: - - 27 - - 28 - familie__p_id_ehepartner: - - 28 - - 27 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 28 + - 27 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1973 + - 1943 + hh_id: + - 13 + - 13 jahr: - '2013' - '2013' @@ -83,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 27 + - 28 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -107,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - true - true diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml index 9a6744aca5..c755e0c74a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml @@ -1,12 +1,14 @@ --- info: - note: >- - Test with wealth (calculated wealth allowance using - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -16,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 36 - 35 - familie__alleinerziehend: - - false - - false - alter: - - 40 - - 40 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1973 - - 1973 - hh_id: - - 14 - - 14 - familie__kind: - - false - - false - p_id: - - 35 - - 36 - familie__p_id_ehepartner: - - 36 - - 35 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 12900.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -73,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 36 + - 35 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 14 + - 14 jahr: - '2013' - '2013' @@ -85,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 35 + - 36 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -109,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 12900.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - true - true diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml index b7c6040534..b355791f45 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml @@ -1,12 +1,14 @@ --- info: - note: >- - Test with wealth (calculated wealth allowance using - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -16,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 38 - 37 - familie__alleinerziehend: - - false - - false - alter: - - 40 - - 40 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1973 - - 1973 - hh_id: - - 15 - - 15 - familie__kind: - - false - - false - p_id: - - 37 - - 38 - familie__p_id_ehepartner: - - 38 - - 37 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 14000.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -73,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 38 + - 37 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 15 + - 15 jahr: - '2013' - '2013' @@ -85,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 37 + - 38 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -109,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 14000.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - true - true diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml index d903f96a7c..fc1eb40633 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -14,39 +18,9 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 16 - 15 - familie__alleinerziehend: - - false - - false - alter: - - 40 - - 40 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1973 - - 1973 - hh_id: - - 2 - - 2 - familie__kind: - - false - - false - p_id: - - 15 - - 16 - familie__p_id_ehepartner: - - 16 - - 15 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 16 + - 15 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 jahr: - '2013' - '2013' @@ -83,6 +78,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 15 + - 16 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -107,6 +105,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - true - true diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml index b2acf44cce..6b87c65abe 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml @@ -1,10 +1,17 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 8 + - 3 + - 8 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -23,72 +30,12 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - - false - - false - alter: - - 30 - - 8 - - 3 - - 8 - - 3 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1988 - - 2010 - - 2015 - - 2010 - - 2015 - hh_id: - - 9 - - 9 - - 9 - - 9 - - 9 - familie__kind: - - false - - true - - true - - true - - true - p_id: - - 17 - - 18 - - 19 - - 20 - - 21 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 17 - - 17 - - 17 - - 17 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -137,6 +84,48 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + - false + - false + familie__kind: + - false + - true + - true + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 17 + - 17 + - 17 + - 17 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1988 + - 2010 + - 2015 + - 2010 + - 2015 + hh_id: + - 9 + - 9 + - 9 + - 9 + - 9 jahr: - '2018' - '2018' @@ -161,6 +150,12 @@ inputs: - 17 - 17 - 17 + p_id: + - 17 + - 18 + - 19 + - 20 + - 21 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -209,6 +204,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml index 4457252f08..78bd56c024 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 8 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,50 +22,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 30 - - 8 - - 3 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - geburtsjahr: - - 1989 - - 2011 - - 2016 - hh_id: - - 6 - - 6 - - 6 - familie__kind: - - false - - true - - true - p_id: - - 22 - - 23 - - 24 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -93,6 +58,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 22 + - 22 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1989 + - 2011 + - 2016 + hh_id: + - 6 + - 6 + - 6 jahr: - '2019' - '2019' @@ -109,6 +102,10 @@ inputs: - -1 - 22 - 22 + p_id: + - 22 + - 23 + - 24 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -141,6 +138,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml index 2c4d08125f..baf063b81c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml @@ -1,10 +1,15 @@ --- info: note: Test to check the age cutoff at the age of 14. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 14 + - 13 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,50 +22,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 30 - - 14 - - 13 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - geburtsjahr: - - 1989 - - 2005 - - 2006 - hh_id: - - 7 - - 7 - - 7 - familie__kind: - - false - - true - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -93,6 +58,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1989 + - 2005 + - 2006 + hh_id: + - 7 + - 7 + - 7 jahr: - '2019' - '2019' @@ -109,6 +102,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -141,6 +138,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml index fc8d5ad0e9..4faeab81a6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml @@ -1,10 +1,15 @@ --- info: note: Test to check the age cutoff at the age of 6. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 6 + - 5 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,50 +22,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 30 - - 6 - - 5 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - geburtsjahr: - - 1989 - - 2013 - - 2014 - hh_id: - - 7 - - 7 - - 7 - familie__kind: - - false - - true - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -93,6 +58,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1989 + - 2013 + - 2014 + hh_id: + - 7 + - 7 + - 7 jahr: - '2019' - '2019' @@ -109,6 +102,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -141,6 +138,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml index 6a6c1f78c9..023ab047bc 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Test with wealth, calculated wealth allowance with: - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html + note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 8 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +22,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 30 - - 8 - - 3 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - geburtsjahr: - - 1992 - - 2014 - - 2019 - hh_id: - - 10 - - 10 - - 10 - familie__kind: - - false - - true - - true - p_id: - - 29 - - 30 - - 31 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 29 - - 29 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 10000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +58,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 29 + - 29 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1992 + - 2014 + - 2019 + hh_id: + - 10 + - 10 + - 10 jahr: - '2022' - '2022' @@ -111,6 +102,10 @@ inputs: - -1 - 29 - 29 + p_id: + - 29 + - 30 + - 31 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +138,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 10000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml index a83877045f..210fd47f3f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Test with wealth, calculated wealth allowance with: - https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html + note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 8 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +22,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 30 - - 8 - - 3 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - geburtsjahr: - - 1992 - - 2014 - - 2019 - hh_id: - - 11 - - 11 - - 11 - familie__kind: - - false - - true - - true - p_id: - - 32 - - 33 - - 34 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 32 - - 32 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 13000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +58,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 32 + - 32 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1992 + - 2014 + - 2019 + hh_id: + - 11 + - 11 + - 11 jahr: - '2022' - '2022' @@ -111,6 +102,10 @@ inputs: - -1 - 32 - 32 + p_id: + - 32 + - 33 + - 34 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +138,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 13000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml index f2e5a270a9..3f23dae45c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml @@ -1,38 +1,21 @@ --- info: note: Test with old income thresholds + precision: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} provided: + alter: + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 45 arbeitsstunden_w: - 20.0 - geburtsjahr: - - 1978 - hh_id: - - 16 - familie__kind: - - false - p_id: - - 39 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 40000.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -49,6 +32,20 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 16 jahr: - 2023-01 kindergeld__betrag_m_bg: @@ -57,6 +54,8 @@ inputs: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 39 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -73,6 +72,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 40000.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml index 76401372d2..d297ed3b21 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test + note: Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from testcase in 2011. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 3 + - 35 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - true - true @@ -19,50 +23,10 @@ inputs: - 48 - -1 - 46 - familie__alleinerziehend: - - false - - false - - false - alter: - - 30 - - 3 - - 35 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - hh_id: - - 19 - - 19 - - 19 - familie__kind: - - false - - true - - false - p_id: - - 46 - - 47 - - 48 - familie__p_id_ehepartner: - - 48 - - -1 - - 46 - familie__p_id_elternteil_1: - - -1 - - 46 - - -1 - familie__p_id_elternteil_2: - - -1 - - 48 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 48 + - -1 + - 46 + familie__p_id_elternteil_1: + - -1 + - 46 + - -1 + familie__p_id_elternteil_2: + - -1 + - 48 + - -1 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 19 + - 19 + - 19 jahr: - 2023-01 - 2023-01 @@ -115,6 +107,10 @@ inputs: - -1 - 46 - -1 + p_id: + - 46 + - 47 + - 48 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -147,6 +143,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml index 28525f563f..7a55615c51 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with old income thresholds with income from self employment, adjusted for - Kindersofortzuschlag. Constructed test based on hh 19. + note: Test with old income thresholds with income from self employment, adjusted for Kindersofortzuschlag. + Constructed test based on hh 19. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 3 + - 35 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - true - true @@ -19,50 +23,10 @@ inputs: - 47 - -1 - 46 - familie__alleinerziehend: - - false - - false - - false - alter: - - 30 - - 3 - - 35 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - hh_id: - - 19 - - 19 - - 19 - familie__kind: - - false - - true - - false - p_id: - - 46 - - 47 - - 48 - familie__p_id_ehepartner: - - 47 - - 46 - - -1 - familie__p_id_elternteil_1: - - -1 - - 46 - - -1 - familie__p_id_elternteil_2: - - -1 - - 48 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 47 + - 46 + - -1 + familie__p_id_elternteil_1: + - -1 + - 46 + - -1 + familie__p_id_elternteil_2: + - -1 + - 48 + - -1 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 19 + - 19 + - 19 jahr: - 2023-01 - 2023-01 @@ -115,6 +107,10 @@ inputs: - -1 - 46 - -1 + p_id: + - 46 + - 47 + - 48 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -147,6 +143,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml index 037d35a317..d417ef1253 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml @@ -1,12 +1,17 @@ --- info: - note: >- - Test with old income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€). Test cutoff around 18 years. + note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag + of 20€). Test cutoff around 18 years. + precision: 0.01 source: https://www.buerger-geld.org/rechner inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 18 + - 17 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -22,61 +27,11 @@ inputs: - 43 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - alter: - - 40 - - 38 - - 18 - - 17 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2005 - - 2006 - hh_id: - - 18 - - 18 - - 18 - - 18 - familie__kind: - - false - - false - - true - - true - p_id: - - 43 - - 44 - - 45 - - 46 - familie__p_id_ehepartner: - - 44 - - 43 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 43 - - 43 - familie__p_id_elternteil_2: - - -1 - - -1 - - 44 - - 44 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -117,6 +72,41 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 44 + - 43 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 43 + - 43 + familie__p_id_elternteil_2: + - -1 + - -1 + - 44 + - 44 + geburtsjahr: + - 1983 + - 1985 + - 2005 + - 2006 + hh_id: + - 18 + - 18 + - 18 + - 18 jahr: - 2023-01 - 2023-01 @@ -137,6 +127,11 @@ inputs: - -1 - 43 - 43 + p_id: + - 43 + - 44 + - 45 + - 46 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -177,6 +172,11 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml index 810849735d..27dd091063 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with old income thresholds and new Kindergeld, (adjusted for - Kindersofortzuschlag of 20€). Household with wealth. + note: Test with old income thresholds and new Kindergeld, (adjusted for Kindersofortzuschlag + of 20€). Household with wealth. + precision: 0.01 source: https://www.hartziv.org/rechner/ inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +23,10 @@ inputs: - 41 - 40 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 38 - - 3 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - hh_id: - - 17 - - 17 - - 17 - familie__kind: - - false - - false - - true - p_id: - - 40 - - 41 - - 42 - familie__p_id_ehepartner: - - 41 - - 40 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 40 - familie__p_id_elternteil_2: - - -1 - - -1 - - 41 - vermögen: - - 85000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 41 + - 40 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 40 + familie__p_id_elternteil_2: + - -1 + - -1 + - 41 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 17 + - 17 + - 17 jahr: - 2023-01 - 2023-01 @@ -111,6 +103,10 @@ inputs: - -1 - -1 - 40 + p_id: + - 40 + - 41 + - 42 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +139,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 85000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml index 9d3dd58f18..d0da663b32 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with old income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€. + note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag + of 20€. + precision: 0.01 source: https://www.hartziv.org/rechner/ inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +23,10 @@ inputs: - 44 - 43 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 38 - - 3 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - hh_id: - - 18 - - 18 - - 18 - familie__kind: - - false - - false - - true - p_id: - - 43 - - 44 - - 45 - familie__p_id_ehepartner: - - 44 - - 43 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 43 - familie__p_id_elternteil_2: - - -1 - - -1 - - 44 - vermögen: - - 50000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 44 + - 43 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 43 + familie__p_id_elternteil_2: + - -1 + - -1 + - 44 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 18 + - 18 + - 18 jahr: - 2023-01 - 2023-01 @@ -111,6 +103,10 @@ inputs: - -1 - -1 - 43 + p_id: + - 43 + - 44 + - 45 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +139,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 50000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml index ff6e314a5e..eb0283bd21 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml @@ -1,38 +1,21 @@ --- info: note: Test with new income thresholds + precision: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} provided: + alter: + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 45 arbeitsstunden_w: - 20.0 - geburtsjahr: - - 1978 - hh_id: - - 20 - familie__kind: - - false - p_id: - - 49 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 40000.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -49,6 +32,20 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 20 jahr: - 2023-07 kindergeld__betrag_m_bg: @@ -57,6 +54,8 @@ inputs: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 49 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -73,6 +72,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 40000.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml index e989fdf7ce..0bba1be93f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with new income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€. https://buergergeld-rechner.org/ + note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag + of 20€. https://buergergeld-rechner.org/ + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +23,10 @@ inputs: - 51 - 50 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 38 - - 3 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - hh_id: - - 21 - - 21 - - 21 - familie__kind: - - false - - false - - true - p_id: - - 50 - - 51 - - 52 - familie__p_id_ehepartner: - - 51 - - 50 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 50 - familie__p_id_elternteil_2: - - -1 - - -1 - - 51 - vermögen: - - 85000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 51 + - 50 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 50 + familie__p_id_elternteil_2: + - -1 + - -1 + - 51 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 21 + - 21 + - 21 jahr: - 2023-07 - 2023-07 @@ -111,6 +103,10 @@ inputs: - -1 - -1 - 50 + p_id: + - 50 + - 51 + - 52 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +139,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 85000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml index 7d5c9b3af6..565cc283d6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with new income thresholds and new Kindergeld, adjusted for - Kindersofortzuschlag of 20€. + note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag + of 20€. + precision: 0.01 source: https://buergergeld-rechner.org/ inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +23,10 @@ inputs: - 54 - 53 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 38 - - 3 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - geburtsjahr: - - 1983 - - 1985 - - 2020 - hh_id: - - 22 - - 22 - - 22 - familie__kind: - - false - - false - - true - p_id: - - 53 - - 54 - - 55 - familie__p_id_ehepartner: - - 54 - - 53 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 53 - familie__p_id_elternteil_2: - - -1 - - -1 - - 54 - vermögen: - - 50000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 54 + - 53 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 53 + familie__p_id_elternteil_2: + - -1 + - -1 + - 54 + geburtsjahr: + - 1983 + - 1985 + - 2020 + hh_id: + - 22 + - 22 + - 22 jahr: - 2023-07 - 2023-07 @@ -111,6 +103,10 @@ inputs: - -1 - -1 - 53 + p_id: + - 53 + - 54 + - 55 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -143,6 +139,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 50000.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml index 4bf73809e3..3be9ae0fb7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test + note: Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from 2011 testcase. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 3 + - 35 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - true - true @@ -19,50 +23,10 @@ inputs: - 57 - -1 - 56 - familie__alleinerziehend: - - false - - false - - false - alter: - - 30 - - 3 - - 35 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - geburtsjahr: - - 1993 - - 2020 - - 1988 - hh_id: - - 23 - - 23 - - 23 - familie__kind: - - false - - true - - false - p_id: - - 56 - - 57 - - 58 - familie__p_id_ehepartner: - - 58 - - -1 - - 56 - familie__p_id_elternteil_1: - - -1 - - 56 - - -1 - familie__p_id_elternteil_2: - - -1 - - 58 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 58 + - -1 + - 56 + familie__p_id_elternteil_1: + - -1 + - 56 + - -1 + familie__p_id_elternteil_2: + - -1 + - 58 + - -1 + geburtsjahr: + - 1993 + - 2020 + - 1988 + hh_id: + - 23 + - 23 + - 23 jahr: - 2023-07 - 2023-07 @@ -115,6 +107,10 @@ inputs: - -1 - 56 - -1 + p_id: + - 56 + - 57 + - 58 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -147,6 +143,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml index 0201a443c0..7b71261ebd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml @@ -1,38 +1,21 @@ --- info: note: Test with new income thresholds w/ income from self-employment. + precision: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} provided: + alter: + - 42 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 42 arbeitsstunden_w: - 20.0 - geburtsjahr: - - 1978 - hh_id: - - 25 - familie__kind: - - false - p_id: - - 60 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 40000.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -49,6 +32,20 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 25 jahr: - 2023-07 kindergeld__betrag_m_bg: @@ -57,6 +54,8 @@ inputs: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 60 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -73,6 +72,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 40000.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml index 6d417b3a88..0087bf9ccf 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml @@ -1,8 +1,8 @@ --- info: - note: >- - Household with 2 children, where child income does not exceed needs. Hence, child + note: Household with 2 children, where child income does not exceed needs. Hence, child stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. + precision: 0.01 source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html inputs: assumed: @@ -11,6 +11,10 @@ inputs: - 0 - 0 provided: + alter: + - 40 + - 10 + - 8 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,50 +23,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 40 - - 10 - - 8 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - true - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -95,6 +59,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 jahr: - 2024 - 2024 @@ -107,6 +99,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -139,6 +135,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml index 0dc7281d26..8db03976fc 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml @@ -1,13 +1,17 @@ --- info: - note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. + note: Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent + via Kindergeldübertrag. + precision: 0.01 source: Made up. inputs: assumed: {} provided: + alter: + - 40 + - 10 + - 8 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -20,50 +24,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 40 - - 10 - - 8 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - true - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -96,6 +60,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 jahr: - 2024 - 2024 @@ -108,6 +100,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -140,6 +136,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false @@ -165,6 +165,10 @@ outputs: - 170.0 - 0.0 - 0.0 + arbeitslosengeld_2__anzurechnendes_einkommen_m: + - 353.33 + - 250.0 + - 700.0 arbeitslosengeld_2__betrag_m_bg: - 1005.68 - 1005.68 @@ -189,10 +193,6 @@ outputs: - 433.33 - 433.33 - 216.67 - arbeitslosengeld_2__anzurechnendes_einkommen_m: - - 353.33 - - 250.0 - - 700.0 arbeitslosengeld_2__regelbedarf_m_bg: - 1609.01 - 1609.01 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml index ef172775ee..752337129a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml @@ -1,10 +1,9 @@ --- info: - note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. - via Kindergeldübertrag. + note: Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent + via Kindergeldübertrag. via Kindergeldübertrag. + precision: 0.01 source: Made up. inputs: assumed: @@ -13,6 +12,10 @@ inputs: - 0 - 1 provided: + alter: + - 40 + - 10 + - 8 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,50 +24,10 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 40 - - 10 - - 8 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1983 - - 2014 - - 2016 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - true - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -97,6 +60,34 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__kind: + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 2014 + - 2016 + hh_id: + - 0 + - 0 + - 0 jahr: - 2024 - 2024 @@ -109,6 +100,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -141,6 +136,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false @@ -166,6 +165,10 @@ outputs: - 170.0 - 0.0 - 0.0 + arbeitslosengeld_2__anzurechnendes_einkommen_m: + - 530.0 + - 250.0 + - 1050.0 arbeitslosengeld_2__betrag_m_bg: - 829.01 - 829.01 @@ -190,10 +193,6 @@ outputs: - 433.33 - 433.33 - 216.67 - arbeitslosengeld_2__anzurechnendes_einkommen_m: - - 530.0 - - 250.0 - - 1050.0 arbeitslosengeld_2__regelbedarf_m_bg: - 1609.01 - 1609.01 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml index 6c9a22589b..2e83944cc8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml @@ -1,9 +1,20 @@ --- info: note: '' + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 30 + - 30 + - 30 + - 30 + - 10 + - 10 + - 10 + - 30 + - 30 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -24,26 +35,16 @@ inputs: - -1 - 8 - 7 - alter: - - 30 - - 30 - - 30 - - 30 - - 10 - - 10 - - 10 - - 30 - - 30 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + - false + - false + - false familie__kind: - false - false @@ -54,16 +55,6 @@ inputs: - true - false - false - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 familie__p_id_ehepartner: - -1 - -1 @@ -94,16 +85,16 @@ inputs: - 1 - -1 - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - - false - - false - - false + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 jahr: - 2018 - 2018 @@ -114,6 +105,16 @@ inputs: - 2018 - 2018 - 2018 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 wohnen__bruttokaltmiete_m_hh: - 1000.0 - 1000.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml index 534fc138d8..cb805d8fdc 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml @@ -1,9 +1,15 @@ --- info: note: '' + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 30 + - 30 + - 10 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -14,26 +20,16 @@ inputs: - 0 - -1 - -1 - alter: - - 30 - - 30 - - 10 - - 10 - hh_id: - - 0 - - 0 - - 0 - - 0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false familie__kind: - false - false - true - true - p_id: - - 0 - - 1 - - 2 - - 3 familie__p_id_ehepartner: - -1 - -1 @@ -49,16 +45,21 @@ inputs: - -1 - 1 - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false + hh_id: + - 0 + - 0 + - 0 + - 0 jahr: - 2018 - 2018 - 2018 - 2018 + p_id: + - 0 + - 1 + - 2 + - 3 wohnen__bruttokaltmiete_m_hh: - 1000.0 - 1000.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 4efbc409dd..a1e5db26f6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,11 +1,13 @@ --- info: - note: >- - Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -18,36 +20,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 + einkommensteuer__gemeinsam_veranlagt: + - false + - false familie__alleinerziehend: - true - false - alter: - - 40 - - 10 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: - - 0 - - 1 familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false + hh_id: + - 0 + - 0 jahr: - 2005 - 2005 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index be249af0c0..cd621ead72 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,11 +1,13 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two - Bedarfsgemeinschaften. + note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,30 +23,27 @@ inputs: familie__alleinerziehend: - true - false - alter: - - 40 - - 10 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: - - 0 - - 1 familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 jahr: - 2005 - 2005 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index a06d17ed27..02d0559709 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,11 +1,14 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -26,22 +29,10 @@ inputs: - false - false - false - alter: - - 40 - - 10 - - 45 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - false - p_id: - - 0 - - 1 - - 2 familie__p_id_elternteil_1: - -1 - 0 @@ -50,6 +41,10 @@ inputs: - -1 - 2 - -1 + hh_id: + - 0 + - 0 + - 0 jahr: - 2005 - 2005 @@ -58,6 +53,10 @@ inputs: - -1 - 0 - -1 + p_id: + - 0 + - 1 + - 2 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 5f1a48303e..d922459d2c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,11 +1,14 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two - Bedarfsgemeinschaften. + note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 10 + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -26,22 +29,10 @@ inputs: - false - false - false - alter: - - 40 - - 10 - - 45 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - false - p_id: - - 0 - - 1 - - 2 familie__p_id_elternteil_1: - -1 - 0 @@ -50,6 +41,10 @@ inputs: - -1 - 2 - -1 + hh_id: + - 0 + - 0 + - 0 jahr: - 2005 - 2005 @@ -58,6 +53,10 @@ inputs: - -1 - 0 - -1 + p_id: + - 0 + - 1 + - 2 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml index 4470ee0c36..33223ff919 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml @@ -1,11 +1,16 @@ --- info: - note: >- - Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as - Bedarfsgemeinschaft. + note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 40 + - 5 + - 10 + - 14 + - 19 arbeitslosengeld_2__bg_id: - 0 - 0 @@ -30,30 +35,12 @@ inputs: - false - false - false - alter: - - 40 - - 5 - - 10 - - 14 - - 19 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 familie__kind: - false - true - true - true - true - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 familie__p_id_elternteil_1: - -1 - 0 @@ -66,6 +53,12 @@ inputs: - -1 - -1 - -1 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 jahr: - 2024 - 2024 @@ -78,6 +71,12 @@ inputs: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 provided: {} outputs: arbeitslosengeld_2__erwachsenensatz_m: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml index eb2aeea233..9f03b4f1b6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml @@ -1,33 +1,33 @@ --- info: - note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the - adult Regelsatz. + note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult + Regelsatz. + precision: 0.01 source: Made up. inputs: assumed: + alter: + - 17 arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 familie__alleinerziehend: - false - alter: - - 17 - hh_id: - - 0 familie__kind: - true - p_id: - - 0 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 + hh_id: + - 0 jahr: - 2005 kindergeld__p_id_empfänger: - -1 + p_id: + - 0 provided: {} outputs: arbeitslosengeld_2__erwachsenensatz_m: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml index 5d0d17dce0..f16ac9db21 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml @@ -1,44 +1,22 @@ --- info: - note: >- - Test with new Regelbedarf. - `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. + note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` + is wrong. + precision: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} provided: + alter: + - 45 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 45 - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 arbeitsstunden_w: - 20.0 - geburtsjahr: - - 1978 - hh_id: - - 0 - familie__kind: - - false - p_id: - - 0 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 0.0 - wohnort_ost: - - false einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -57,18 +35,36 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 0 kindergeld__betrag_m_bg: - 0.0 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 0 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: - 0.0 sozialversicherung__kranken__beitrag__privat_versichert: - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 sozialversicherung__pflege__beitrag__hat_kinder: - false sozialversicherung__rente__altersrente__betrag_m: @@ -81,6 +77,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: @@ -91,6 +89,8 @@ inputs: - 60.0 wohngeld__anspruchshöhe_m_bg: - 0.0 + wohnort_ost: + - false outputs: arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml index be590c1e73..ecc7262437 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml @@ -1,106 +1,106 @@ --- info: - note: >- - Test with new Regelbedarf. - `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. + note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` + is wrong. + precision: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: + assumed: {} provided: - p_id: - - 0 - hh_id: - - 0 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - kindergeld__p_id_empfänger: - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - familie__kind: - - false alter: - 45 - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - wohnen__bewohnt_eigentum_hh: + arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - familie__alleinerziehend: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + arbeitsstunden_w: + - 20.0 + einkommensteuer__betrag_y_sn: + - 0.0 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 600.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 - sozialversicherung__rente__private_rente_betrag_m: + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: + einkommensteuer__gemeinsam_veranlagt: + - false + elterngeld__betrag_m: - 0.0 - sozialversicherung__arbeitslosen__betrag_m: + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 0 + kindergeld__betrag_m_bg: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + kindergeld__in_ausbildung: + - false + kindergeld__p_id_empfänger: + - -1 + p_id: + - 0 + solidaritätszuschlag__betrag_y_sn: - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + sozialversicherung__arbeitslosen__betrag_m: - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: + sozialversicherung__kranken__beitrag__privat_versichert: + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + sozialversicherung__rente__altersrente__betrag_m: - 0.0 - einkommensteuer__betrag_y_sn: - 0.0 - solidaritätszuschlag__betrag_y_sn: + sozialversicherung__rente__bezieht_rente: + - false + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - kindergeld__betrag_m_bg: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 - elterngeld__betrag_m: - - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 vermögen: - 0.0 - geburtsjahr: - - 1978 - sozialversicherung__rente__bezieht_rente: - - false - kindergeld__in_ausbildung: - - false - arbeitsstunden_w: - - 20.0 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__kranken__beitrag__privat_versichert: - - false - einkommensteuer__einkünfte__ist_selbstständig: + wohnen__bewohnt_eigentum_hh: - false + wohnen__bruttokaltmiete_m_hh: + - 400.0 + wohnen__heizkosten_m_hh: + - 50.0 + wohnen__wohnfläche_hh: + - 60.0 + wohngeld__anspruchshöhe_m_bg: + - 0.0 wohnort_ost: - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - assumed: {} outputs: arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - 208.0 + arbeitslosengeld_2__betrag_m_bg: + - 621.0 + arbeitslosengeld_2__kosten_der_unterkunft_m_bg: + - 450.0 arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - 392.0 arbeitslosengeld_2__regelsatz_m_bg: - 563.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 450.0 - arbeitslosengeld_2__betrag_m_bg: - - 621.0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" index 3ac3ece582..7b41d54db4 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2004/hh_id_11.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.steuerlex24.de/demoseite/information_steuerlexikon/index/xid/462984 inputs: assumed: {} provided: - hh_id: - - 11 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 150.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 11 jahr: - 2004 + p_id: + - 1 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" index afc2dbd86c..25d91f0b92 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_2.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" @@ -1,22 +1,11 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 2 - - 2 - familie__kind: - - false - - true - p_id: - - 2 - - 3 - familie__p_id_ehepartner: - - 3 - - 2 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 334.0 - 0.0 @@ -26,9 +15,21 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - true + familie__p_id_ehepartner: + - 3 + - 2 + hh_id: + - 2 + - 2 jahr: - 2005 - 2005 + p_id: + - 2 + - 3 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" index b585fdbad7..42e8c9f3c9 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_5.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 5 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 5 jahr: - 2005 + p_id: + - 4 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" index 98e1913b13..b876d5c0df 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_8.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 8 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4166.666667 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 8 jahr: - 2005 + p_id: + - 5 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" index 8b151eaa02..d40a04d5cd 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2005/hh_id_9.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 9 - familie__kind: - - false - p_id: - - 6 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1666.666667 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 9 jahr: - 2005 + p_id: + - 6 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" index 966a753202..3bb4d51601 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_16.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: Testcase from zu_verst_eink inputs: assumed: {} provided: - hh_id: - - 16 - familie__kind: - - false - p_id: - - 17 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 16 jahr: - 2010 + p_id: + - 17 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 30.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" index 2cdf55bb01..f9ac02a07a 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_3.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" @@ -1,26 +1,27 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 3 - familie__kind: - - false - p_id: - - 7 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 334.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 3 jahr: - 2010 + p_id: + - 7 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" index a15ed3a1f2..9891b35cda 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2010/hh_id_6.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" @@ -1,22 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 6 - - 6 - familie__kind: - - false - - true - p_id: - - 8 - - 9 - familie__p_id_ehepartner: - - 9 - - 8 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - 0.0 @@ -26,9 +15,21 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - true + familie__p_id_ehepartner: + - 9 + - 8 + hh_id: + - 6 + - 6 jahr: - 2010 - 2010 + p_id: + - 8 + - 9 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" index 5de716212e..ae2cdd1c58 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2018/hh_id_15.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: Testcase from zu_verst_eink inputs: assumed: {} provided: - hh_id: - - 15 - familie__kind: - - false - p_id: - - 16 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 15 jahr: - 2018 + p_id: + - 16 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 30.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" index b08a5a87a0..fc47c11352 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2020/hh_id_13.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.ruv.de/ratgeber/altersvorsorge/staatliche-foerderung/basisrente-sonderausgabenabzug inputs: assumed: {} provided: - hh_id: - - 13 - familie__kind: - - false - p_id: - - 14 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 150.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2583.33 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 13 jahr: - 2020 + p_id: + - 14 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" index 0f5aa4915d..772ec99c0f 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2021/hh_id_12.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.finanztip.de/vorsorgeaufwendungen/ inputs: assumed: {} provided: - hh_id: - - 12 - familie__kind: - - false - p_id: - - 13 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 250.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4305.56 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 12 jahr: - 2021 + p_id: + - 13 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" index 4bd70239fb..a202277e7b 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_17.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" @@ -1,22 +1,11 @@ --- info: note: corrected tax-exempt employer contribution in testcase + precision: 1 source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html inputs: assumed: {} provided: - hh_id: - - 17 - - 17 - familie__kind: - - false - - false - p_id: - - 18 - - 19 - familie__p_id_ehepartner: - - 19 - - 18 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 416.666667 - 0.0 @@ -26,9 +15,21 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 19 + - 18 + hh_id: + - 17 + - 17 jahr: - 2022 - 2022 + p_id: + - 18 + - 19 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" index d3208122af..d7c90b7fd6 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2022/hh_id_18.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" @@ -1,22 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html inputs: assumed: {} provided: - hh_id: - - 18 - - 18 - familie__kind: - - false - - false - p_id: - - 20 - - 21 - familie__p_id_ehepartner: - - 21 - - 20 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 333.333333 - 1666.666667 @@ -26,9 +15,21 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 21 + - 20 + hh_id: + - 18 + - 18 jahr: - 2022 - 2022 + p_id: + - 20 + - 21 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" index 00113567ae..fa26edab7f 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_4.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" @@ -1,26 +1,27 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 4 - familie__kind: - - false - p_id: - - 11 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 334.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 4 jahr: - 2023 + p_id: + - 11 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" index 8ba9da9bf1..517f80e550 100644 --- a/src/_gettsim_tests/test_data/vorsorgeaufwand/2023/hh_id_7.yaml +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" @@ -1,26 +1,27 @@ --- info: note: '' + precision: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} provided: - hh_id: - - 7 - familie__kind: - - false - p_id: - - 12 - familie__p_id_ehepartner: - - -1 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3500.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 7 jahr: - 2023 + p_id: + - 12 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009/hh_id_4.yaml similarity index 97% rename from src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2009/hh_id_4.yaml index e107204c11..6ad67dc4c3 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2009/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009/hh_id_4.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: {} provided: - hh_id: - - 4 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 2500.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 50000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 42000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 4 + p_id: + - 4 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 424.75 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012/hh_id_3.yaml similarity index 97% rename from src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2012/hh_id_3.yaml index 8b518968d2..df1a32d268 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2012/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012/hh_id_3.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: {} provided: - hh_id: - - 3 - familie__kind: - - false - p_id: - - 3 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 1000.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 20000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 20000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 3 + p_id: + - 3 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 49.75 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015/hh_id_2.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2015/hh_id_2.yaml index 1917d08d73..0a0c094a29 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2015/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015/hh_id_2.yaml @@ -1,26 +1,11 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: {} provided: - hh_id: - - 2 - - 2 - - 2 - familie__kind: - - false - - false - - true - p_id: - - 2 - - 32 - - 123 - familie__p_id_ehepartner: - - 32 - - 2 - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 1300.0 - 500.0 @@ -37,6 +22,22 @@ inputs: - 5000.0 - 5000.0 - 0.0 + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 32 + - 2 + - -1 + hh_id: + - 2 + - 2 + - 2 + p_id: + - 2 + - 32 + - 123 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 49.5 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/couple_1_child.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/couple_1_child.yaml index 4c3a6860e9..33d4eee31f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2018/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/couple_1_child.yaml @@ -1,34 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.smart-rechner.de/einkommensteuer/rechner.php inputs: assumed: {} provided: - hh_id: - - 4 - - 4 - - 4 - familie__kind: - - false - - false - - true - p_id: - - 5 - - 6 - - 7 - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 @@ -45,10 +22,34 @@ inputs: - 200000.0 - 200000.0 - 0.0 + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + hh_id: + - 4 + - 4 + - 4 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true + p_id: + - 5 + - 6 + - 7 outputs: einkommensteuer__anzahl_kindergeld_ansprüche_1: - 1 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_1.yaml similarity index 97% rename from src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_1.yaml index 02a0570894..e40b766427 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_1.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: {} provided: - hh_id: - - 1 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 500.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 5000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 5000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 1 + p_id: + - 1 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_5.yaml similarity index 97% rename from src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_5.yaml index e1a26ebb13..5a546afee2 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2018/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_5.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: {} provided: - hh_id: - - 5 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 200000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 180000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 5 + p_id: + - 5 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023/hh_id_6.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2023/hh_id_6.yaml index 41dbf53490..09d16c2a63 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2023/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023/hh_id_6.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.smart-rechner.de/einkommensteuer/rechner.php inputs: assumed: {} provided: - hh_id: - - 6 - familie__kind: - - false - p_id: - - 6 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 36000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 36000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 6 + p_id: + - 6 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_1_child.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_1_child.yaml index 0f0959eeaf..46a51753ce 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_1_child.yaml @@ -1,34 +1,11 @@ --- info: note: '' + precision: 1 source: Regression test. inputs: assumed: {} provided: - hh_id: - - 4 - - 4 - - 4 - familie__kind: - - false - - false - - true - p_id: - - 5 - - 6 - - 7 - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 @@ -45,10 +22,34 @@ inputs: - 200000.0 - 200000.0 - 0.0 + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 5 + familie__p_id_elternteil_2: + - -1 + - -1 + - 6 + hh_id: + - 4 + - 4 + - 4 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - true + p_id: + - 5 + - 6 + - 7 outputs: einkommensteuer__anzahl_kindergeld_ansprüche_1: - 1 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_above_soli_freibetrag.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_above_soli_freibetrag.yaml index 908bf1fc27..ca1ac69b57 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2024/couple_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_above_soli_freibetrag.yaml @@ -1,22 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} provided: - hh_id: - - 3 - - 3 - familie__kind: - - false - - false - p_id: - - 3 - - 4 - familie__p_id_ehepartner: - - 4 - - 3 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 - 0.0 @@ -29,6 +18,18 @@ inputs: einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 200000.0 - 200000.0 + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 4 + - 3 + hh_id: + - 3 + - 3 + p_id: + - 3 + - 4 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_above_soli_freibetrag.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_above_soli_freibetrag.yaml index b40f9c7263..92090cb300 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_above_soli_freibetrag.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} provided: - hh_id: - - 2 - familie__kind: - - false - p_id: - - 2 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 100000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 100000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 2 + p_id: + - 2 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_below_soli_freibetrag.yaml similarity index 98% rename from src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_below_soli_freibetrag.yaml index f993fb0af1..05659c60ca 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/2024/single_below_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_below_soli_freibetrag.yaml @@ -1,18 +1,11 @@ --- info: note: '' + precision: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} provided: - hh_id: - - 1 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__gemeinsam_veranlagt: @@ -21,6 +14,14 @@ inputs: - 50000.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 50000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 1 + p_id: + - 1 outputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" index b20c32b32f..2033e8bc4c 100644 --- "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -10,26 +11,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 4 - - 4 - - 4 - - 4 - familie__kind: - - false - - false - - true - - true - p_id: - - 5 - - 6 - - 7 - - 8 - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 18000.0 - 18000.0 @@ -60,11 +41,31 @@ inputs: - 142992.0 - 10.0 - 10.0 + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 + hh_id: + - 4 + - 4 + - 4 + - 4 jahr: - 2010 - 2010 - 2010 - 2010 + p_id: + - 5 + - 6 + - 7 + - 8 outputs: einkommensteuer__betrag_y_sn: - 20000.0 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" similarity index 97% rename from "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" index fb22cf3fa7..900d4f4fa6 100644 --- "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" @@ -1,20 +1,13 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 3000.0 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 5000.0 einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: @@ -27,8 +20,16 @@ inputs: - 0.0 einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 5000.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 2 jahr: - 2012 + p_id: + - 4 outputs: einkommensteuer__betrag_y_sn: - 5000 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" index bb66ef56ca..9215dbef58 100644 --- "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,22 +10,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 1 - - 1 - - 1 - familie__kind: - - false - - false - - true - p_id: - - 1 - - 2 - - 3 - familie__p_id_ehepartner: - - 2 - - 1 - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 7000.0 - 7000.0 @@ -49,10 +34,26 @@ inputs: - 92752.0 - 92752.0 - 0.0 + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 2 + - 1 + - -1 + hh_id: + - 1 + - 1 + - 1 jahr: - 2016 - 2016 - 2016 + p_id: + - 1 + - 2 + - 3 outputs: einkommensteuer__betrag_y_sn: - 9328 diff --git "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" index 640f47979f..aaeacd98f2 100644 --- "a/src/_gettsim_tests/test_data/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,22 +10,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 5 - - 5 - - 5 - familie__kind: - - false - - false - - true - p_id: - - 9 - - 10 - - 11 - familie__p_id_ehepartner: - - 10 - - 9 - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 10000.0 - 10000.0 @@ -49,10 +34,26 @@ inputs: - 109740.0 - 109740.0 - 0.0 + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 10 + - 9 + - -1 + hh_id: + - 5 + - 5 + - 5 jahr: - 2019 - 2019 - 2019 + p_id: + - 9 + - 10 + - 11 outputs: einkommensteuer__betrag_y_sn: - 19344.0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml index 18f3d69fce..20c6a53cc5 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1970 - hh_id: - - 1 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1970 + hh_id: + - 1 jahr: - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 1 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2035 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml index 62c2947624..ec2ee32034 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1970 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 2 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1916.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1970 + hh_id: + - 2 jahr: - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 2 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2035 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml index a55ba01506..840ffffd30 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1970 - hh_id: - - 3 - familie__kind: - - false - p_id: - - 3 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1927.8 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1970 + hh_id: + - 3 jahr: - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 3 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2035 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml index 60ffb994c0..0c6fe6796e 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1970 - hh_id: - - 4 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2334.2 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1970 + hh_id: + - 4 jahr: - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 4 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2035 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml index a99292bd42..19c2bb1bd4 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2010/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1970 - hh_id: - - 5 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2554.02 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1970 + hh_id: + - 5 jahr: - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 5 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2035 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml index 78f7fc39ef..1287fe54fd 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1975 - hh_id: - - 16 - familie__kind: - - false - p_id: - - 22 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5000.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1975 + hh_id: + - 16 jahr: - 2015 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 22 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2040 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml index 98c095ec16..2cf9395f7d 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2015/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml @@ -1,13 +1,11 @@ --- info: note: '' + precision: 0.01 source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html inputs: assumed: {} provided: - familie__alleinerziehend: - - false - - false alter: - 40 - 40 @@ -17,30 +15,9 @@ inputs: behinderungsgrad: - 0 - 0 - geburtsjahr: - - 1975 - - 1975 - hh_id: - - 17 - - 17 - familie__kind: - - false - - false - p_id: - - 23 - - 24 - familie__p_id_ehepartner: - - 24 - - 23 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -50,9 +27,6 @@ inputs: einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 7700.0 - 7700.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 24 + - 23 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1975 + - 1975 + hh_id: + - 17 + - 17 jahr: - 2015 - 2015 @@ -80,6 +75,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 23 + - 24 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -95,6 +93,9 @@ inputs: sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 + wohnort_ost: + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml index f2c38aecee..4a8a650847 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2017/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml @@ -1,13 +1,11 @@ --- info: note: '' + precision: 0.01 source: https://www.n-heydorn.de/steuer.html inputs: assumed: {} provided: - familie__alleinerziehend: - - false - - false alter: - 37 - 35 @@ -17,30 +15,9 @@ inputs: behinderungsgrad: - 0 - 0 - geburtsjahr: - - 1980 - - 1982 - hh_id: - - 18 - - 18 - familie__kind: - - false - - false - p_id: - - 25 - - 26 - familie__p_id_ehepartner: - - 26 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -50,9 +27,6 @@ inputs: einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 10359.0 - 10359.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 26 + - 25 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1980 + - 1982 + hh_id: + - 18 + - 18 jahr: - 2017 - 2017 @@ -80,6 +75,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 25 + - 26 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -95,6 +93,9 @@ inputs: sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 + wohnort_ost: + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml index 912aadadc1..f64827bb3c 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 10 - familie__kind: - - false - p_id: - - 10 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2547.22 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 10 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 10 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml index 3e6efe6796..3a1774b845 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 11 - familie__kind: - - false - p_id: - - 11 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 3105.28 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 11 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 11 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml index b1e36693e1..5fd537f34e 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 12 - familie__kind: - - false - p_id: - - 12 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5917.6 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 12 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 12 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml index c9491f2f6a..c965403895 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 7 - familie__kind: - - false - p_id: - - 7 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 7 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 7 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml index e311c4d3ec..727a69325b 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 8 - familie__kind: - - false - p_id: - - 8 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 990.74 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 8 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 8 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml index 11eb76a615..eca499883e 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2018/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml @@ -1,42 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - false alter: - 40 arbeitsstunden_w: - 40.0 behinderungsgrad: - 0 - geburtsjahr: - - 1978 - hh_id: - - 9 - familie__kind: - - false - p_id: - - 9 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1910.41 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -49,12 +32,28 @@ inputs: - false einkommensteuer__gemeinsam_veranlagt: - false + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1978 + hh_id: + - 9 jahr: - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 9 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -65,6 +64,8 @@ inputs: - 2043 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml index 0b8d73d6c6..f1a299c167 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2019/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml @@ -1,13 +1,11 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 35 - 5 @@ -17,30 +15,9 @@ inputs: behinderungsgrad: - 0 - 0 - geburtsjahr: - - 1984 - - 2014 - hh_id: - - 13 - - 13 - familie__kind: - - false - - true - p_id: - - 13 - - 14 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 13 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -50,9 +27,6 @@ inputs: einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 3119.94 - 3119.94 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -71,6 +45,27 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - false - false + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 13 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1984 + - 2014 + hh_id: + - 13 + - 13 jahr: - 2019 - 2019 @@ -80,6 +75,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - 13 + p_id: + - 13 + - 14 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -95,6 +93,9 @@ inputs: sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 + wohnort_ost: + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 1908 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml index d7449764d0..32a2da8c97 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml @@ -1,15 +1,11 @@ --- info: note: '' + precision: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} provided: - familie__alleinerziehend: - - false - - false - - false - - false alter: - 45 - 44 @@ -25,46 +21,11 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - hh_id: - - 14 - - 14 - - 14 - - 14 - familie__kind: - - false - - false - - true - - true - p_id: - - 15 - - 16 - - 17 - - 18 - familie__p_id_ehepartner: - - 16 - - 15 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 15 - - 15 - familie__p_id_elternteil_2: - - -1 - - -1 - - 16 - - 16 - wohnort_ost: - - false - - false - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -80,11 +41,6 @@ inputs: - 10901.0 - 10901.0 - 10901.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -115,6 +71,41 @@ inputs: - true - false - false + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 16 + - 15 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 15 + - 15 + familie__p_id_elternteil_2: + - -1 + - -1 + - 16 + - 16 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 14 + - 14 + - 14 + - 14 jahr: - 2020 - 2020 @@ -130,6 +121,11 @@ inputs: - -1 - 15 - 15 + p_id: + - 15 + - 16 + - 17 + - 18 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -155,6 +151,11 @@ inputs: - 0.0 - 0.0 - 0.0 + wohnort_ost: + - false + - false + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml index e5eb8d240a..299fa4690e 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml @@ -1,15 +1,11 @@ --- info: note: Result from source including Betreuungskosten + precision: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} provided: - familie__alleinerziehend: - - false - - false - - false - - false alter: - 45 - 44 @@ -25,46 +21,11 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - hh_id: - - 19 - - 19 - - 19 - - 19 - familie__kind: - - false - - false - - true - - true - p_id: - - 27 - - 28 - - 29 - - 30 - familie__p_id_ehepartner: - - 28 - - 27 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 27 - - 27 - familie__p_id_elternteil_2: - - -1 - - -1 - - 28 - - 28 - wohnort_ost: - - false - - false - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -80,11 +41,6 @@ inputs: - 10901.0 - 10901.0 - 10901.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -115,6 +71,41 @@ inputs: - true - false - false + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 28 + - 27 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 27 + - 27 + familie__p_id_elternteil_2: + - -1 + - -1 + - 28 + - 28 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 19 + - 19 + - 19 + - 19 jahr: - 2020 - 2020 @@ -130,6 +121,11 @@ inputs: - -1 - 27 - 27 + p_id: + - 27 + - 28 + - 29 + - 30 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -155,6 +151,11 @@ inputs: - 0.0 - 0.0 - 0.0 + wohnort_ost: + - false + - false + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml similarity index 99% rename from src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml index 9ac1fba331..c1711a71d0 100644 --- a/src/_gettsim_tests/test_data/zu_versteuerndes_einkommen/2020/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml @@ -1,15 +1,11 @@ --- info: note: Result from source including Betreuungskosten + precision: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} provided: - familie__alleinerziehend: - - false - - false - - false - - false alter: - 45 - 44 @@ -25,46 +21,11 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1975 - - 1976 - - 2007 - - 2005 - hh_id: - - 20 - - 20 - - 20 - - 20 - familie__kind: - - false - - false - - true - - true - p_id: - - 31 - - 32 - - 33 - - 34 - familie__p_id_ehepartner: - - 32 - - 31 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 31 - - 31 - familie__p_id_elternteil_2: - - -1 - - -1 - - 32 - - 32 - wohnort_ost: - - false - - false - - false - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -80,11 +41,6 @@ inputs: - 10901.0 - 0.0 - 0.0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 - 0.0 @@ -115,6 +71,41 @@ inputs: - true - false - false + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 32 + - 31 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 31 + - 31 + familie__p_id_elternteil_2: + - -1 + - -1 + - 32 + - 32 + geburtsjahr: + - 1975 + - 1976 + - 2007 + - 2005 + hh_id: + - 20 + - 20 + - 20 + - 20 jahr: - 2020 - 2020 @@ -130,6 +121,11 @@ inputs: - -1 - 31 - 31 + p_id: + - 31 + - 32 + - 33 + - 34 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -155,6 +151,11 @@ inputs: - 0.0 - 0.0 - 0.0 + wohnort_ost: + - false + - false + - false + - false outputs: einkommensteuer__abzüge__alleinerziehend_betrag_y: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml index 2f695ecda2..97ecc84d9a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml @@ -1,38 +1,17 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 arbeitsstunden_w: - 22.5 - geburtsjahr: - - 1974 - geburtsmonat: - - 3 - geburtstag: - - 3 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 42 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false einkommensteuer__betrag_y_sn: - 218.96 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -47,18 +26,40 @@ inputs: - 1800.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 18260.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1974 + geburtsmonat: + - 3 + geburtstag: + - 3 + hh_id: + - 2 jahr: - 2017 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 42 solidaritätszuschlag__betrag_y_sn: - 12.04 sozialversicherung__beiträge_versicherter_m: - 378.0 sozialversicherung__pflege__beitrag__hat_kinder: - false + wohnort_ost: + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml index 0f9118366b..5c766aa700 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml @@ -1,38 +1,17 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 - geburtsjahr: - - 1972 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 1 - familie__kind: - - false - p_id: - - 23 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: @@ -45,14 +24,36 @@ inputs: - 0.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1972 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 1 jahr: - 2018 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 23 sozialversicherung__pflege__beitrag__hat_kinder: - true + wohnort_ost: + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml index 146fc224ac..8dc9e91afd 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 3.0 - 0.0 - geburtsjahr: - - 1974 - - 2017 - geburtsmonat: - - 4 - - 6 - geburtstag: - - 4 - - 12 - hh_id: - - 2 - - 2 - familie__kind: - - false - - true - p_id: - - 42 - - 43 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 42 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 100.0 - 0.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 18260.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 42 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1974 + - 2017 + geburtsmonat: + - 4 + - 6 + geburtstag: + - 4 + - 12 + hh_id: + - 2 + - 2 jahr: - 2018 - 2018 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 42 + - 43 sozialversicherung__pflege__beitrag__hat_kinder: - true - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml index 00f5804a7a..88a9a8e313 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - 55 - familie__alleinerziehend: - - false - - false alter: - 43 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - 55 arbeitsstunden_w: - 9.0 - 30.0 - geburtsjahr: - - 1976 - - 1976 - geburtsmonat: - - 5 - - 7 - geburtstag: - - 5 - - 7 - hh_id: - - 3 - - 3 - familie__kind: - - false - - false - p_id: - - 55 - - 56 - familie__p_id_ehepartner: - - 56 - - 55 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 900.0 - 3400.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 7406.0 - 39806.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 56 + - 55 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1976 + - 1976 + geburtsmonat: + - 5 + - 7 + geburtstag: + - 5 + - 7 + hh_id: + - 3 + - 3 jahr: - 2018 - 2018 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 55 + - 56 sozialversicherung__pflege__beitrag__hat_kinder: - false - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml index f842b1655e..f8e3a0937c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - false - - true alter: - 0 - 42 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 33.0 - geburtsjahr: - - 2017 - - 1976 - geburtsmonat: - - 6 - - 9 - geburtstag: - - 12 - - 9 - hh_id: - - 4 - - 4 - familie__kind: - - true - - false - p_id: - - 59 - - 57 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - 57 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 3600.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 37406.0 + familie__alleinerziehend: + - false + - true + familie__kind: + - true + - false + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - 57 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 2017 + - 1976 + geburtsmonat: + - 6 + - 9 + geburtstag: + - 12 + - 9 + hh_id: + - 4 + - 4 jahr: - 2018 - 2018 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 59 + - 57 sozialversicherung__pflege__beitrag__hat_kinder: - false - true + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml index d80c9fdd72..95ef126786 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml @@ -1,38 +1,17 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 arbeitsstunden_w: - 10.0 - geburtsjahr: - - 1980 - geburtsmonat: - - 11 - geburtstag: - - 11 - hh_id: - - 6 - familie__kind: - - false - p_id: - - 19 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 900.0 einkommensteuer__gemeinsam_veranlagt: @@ -45,14 +24,36 @@ inputs: - 900.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 7406.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1980 + geburtsmonat: + - 11 + geburtstag: + - 11 + hh_id: + - 6 jahr: - 2018 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 19 sozialversicherung__pflege__beitrag__hat_kinder: - true + wohnort_ost: + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml index 83a5621629..e90f6eb1ec 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1972 - - 2018 - geburtsmonat: - - 2 - - 10 - geburtstag: - - 2 - - 12 - hh_id: - - 1 - - 1 - familie__kind: - - false - - true - p_id: - - 23 - - 18 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 23 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1972 + - 2018 + geburtsmonat: + - 2 + - 10 + geburtstag: + - 2 + - 12 + hh_id: + - 1 + - 1 jahr: - 2019 - 2019 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 23 + - 18 sozialversicherung__pflege__beitrag__hat_kinder: - true - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml index 3c437fc39d..a8c60d8c28 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - hh_id: - - 3 - - 3 - - 3 - familie__kind: - - false - - true - - false - p_id: - - 55 - - 50 - - 56 - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 5760.0 - 0.0 - 35760.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 56 + - -1 + - 55 + familie__p_id_elternteil_1: + - -1 + - 55 + - -1 + familie__p_id_elternteil_2: + - -1 + - 56 + - -1 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 + hh_id: + - 3 + - 3 + - 3 jahr: - 2019 - 2019 @@ -97,10 +90,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 55 + - 50 + - 56 sozialversicherung__pflege__beitrag__hat_kinder: - true - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml index b820a60650..53a7e7c45f 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1978 - - 2018 - geburtsmonat: - - 10 - - 4 - geburtstag: - - 10 - - 12 - hh_id: - - 5 - - 5 - familie__kind: - - false - - true - p_id: - - 58 - - 60 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 58 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 38160.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 58 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1978 + - 2018 + geburtsmonat: + - 10 + - 4 + geburtstag: + - 10 + - 12 + hh_id: + - 5 + - 5 jahr: - 2019 - 2019 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 58 + - 60 sozialversicherung__pflege__beitrag__hat_kinder: - true - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml index 8c1a77c72d..70dd2a7e21 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - true alter: - 2 - 0 - 37 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 2017 - - 2018 - - 1982 - geburtsmonat: - - 2 - - 10 - - 2 - geburtstag: - - 12 - - 12 - - 13 - hh_id: - - 6 - - 6 - - 6 - familie__kind: - - true - - true - - false - p_id: - - 20 - - 21 - - 19 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - 19 - - 19 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 0.0 - 0.0 - 5760.0 + familie__alleinerziehend: + - false + - false + - true + familie__kind: + - true + - true + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - 19 + - 19 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + geburtsjahr: + - 2017 + - 2018 + - 1982 + geburtsmonat: + - 2 + - 10 + - 2 + geburtstag: + - 12 + - 12 + - 13 + hh_id: + - 6 + - 6 + - 6 jahr: - 2019 - 2019 @@ -97,10 +90,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 20 + - 21 + - 19 sozialversicherung__pflege__beitrag__hat_kinder: - false - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml index 2c2a222744..6ef209896e 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 72 - - 71 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 72 + - 71 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 5 - - 6 - - 12 - geburtstag: - - 5 - - 6 - - 1 - hh_id: - - 7 - - 7 - - 7 - familie__kind: - - false - - false - - true - p_id: - - 71 - - 72 - - 73 - familie__p_id_ehepartner: - - 72 - - 71 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 71 - familie__p_id_elternteil_2: - - -1 - - -1 - - 72 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 16560.0 - 16560.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 72 + - 71 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 71 + familie__p_id_elternteil_2: + - -1 + - -1 + - 72 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 5 + - 6 + - 12 + geburtstag: + - 5 + - 6 + - 1 + hh_id: + - 7 + - 7 + - 7 jahr: - 2019 - 2019 @@ -97,10 +90,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 71 + - 72 + - 73 sozialversicherung__pflege__beitrag__hat_kinder: - true - true - false + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml index fccf414ea8..b01cb42b17 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml @@ -1,80 +1,26 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - true alter: - 1 - 0 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 2017 - - 2018 - - 2018 - - 1982 - geburtsmonat: - - 2 - - 10 - - 10 - - 2 - geburtstag: - - 12 - - 12 - - 12 - - 13 - hh_id: - - 8 - - 8 - - 8 - - 8 - familie__kind: - - true - - true - - true - - false - p_id: - - 25 - - 26 - - 27 - - 28 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - 28 - - 28 - - 28 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - wohnort_ost: - - false - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -105,6 +51,51 @@ inputs: - 0.0 - 0.0 - 5760.0 + familie__alleinerziehend: + - false + - false + - false + - true + familie__kind: + - true + - true + - true + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - 28 + - 28 + - 28 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 2017 + - 2018 + - 2018 + - 1982 + geburtsmonat: + - 2 + - 10 + - 10 + - 2 + geburtstag: + - 12 + - 12 + - 12 + - 13 + hh_id: + - 8 + - 8 + - 8 + - 8 jahr: - 2019 - 2019 @@ -120,11 +111,21 @@ inputs: - 1 - 1 - 1 + p_id: + - 25 + - 26 + - 27 + - 28 sozialversicherung__pflege__beitrag__hat_kinder: - false - false - false - true + wohnort_ost: + - false + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index 56bde7edae..420593dda4 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 1 + - 0 + - -1 arbeitsstunden_w: - 0.0 - 39.83 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 8 - - 12 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 190000.0 @@ -85,6 +42,42 @@ inputs: - 100000.0 - 100000.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 8 + - 12 + hh_id: + - 0 + - 0 + - 0 kindergeld__in_ausbildung: - false - false @@ -97,6 +90,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 0 + - 1 + - 2 soli_lohst_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - true - true - false + wohnort_ost: + - false + - false + - false outputs: elterngeld__betrag_m: - 1300.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index 3ad688c0ec..5dfb52764d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 1 + - 0 + - -1 arbeitsstunden_w: - 0.0 - 39.83 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2018 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 8 - - 12 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - true - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 190000.0 @@ -85,6 +42,42 @@ inputs: - 2000000.0 - 2000000.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + geburtsjahr: + - 1976 + - 1976 + - 2018 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 8 + - 12 + hh_id: + - 0 + - 0 + - 0 kindergeld__in_ausbildung: - false - false @@ -97,6 +90,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 0 + - 1 + - 2 soli_lohst_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - true - true - false + wohnort_ost: + - false + - false + - false outputs: elterngeld__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml index 3ae1e83ed8..9a4815c2c6 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - hh_id: - - 3 - - 3 - - 3 - familie__kind: - - false - - true - - false - p_id: - - 55 - - 50 - - 56 - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 200.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 5760.0 - 0.0 - 35760.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 56 + - -1 + - 55 + familie__p_id_elternteil_1: + - -1 + - 55 + - -1 + familie__p_id_elternteil_2: + - -1 + - 56 + - -1 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 + hh_id: + - 3 + - 3 + - 3 jahr: - 2019 - 2019 @@ -101,6 +94,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 55 + - 50 + - 56 soli_lohst_m: - 0.0 - 0.0 @@ -109,6 +106,10 @@ inputs: - true - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml index b820a60650..53a7e7c45f 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1978 - - 2018 - geburtsmonat: - - 10 - - 4 - geburtstag: - - 10 - - 12 - hh_id: - - 5 - - 5 - familie__kind: - - false - - true - p_id: - - 58 - - 60 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 58 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 38160.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 58 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1978 + - 2018 + geburtsmonat: + - 10 + - 4 + geburtstag: + - 10 + - 12 + hh_id: + - 5 + - 5 jahr: - 2019 - 2019 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 58 + - 60 sozialversicherung__pflege__beitrag__hat_kinder: - true - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml index 83a5621629..e90f6eb1ec 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml @@ -1,52 +1,20 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 43 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1972 - - 2018 - geburtsmonat: - - 2 - - 10 - geburtstag: - - 2 - - 12 - hh_id: - - 1 - - 1 - familie__kind: - - false - - true - p_id: - - 23 - - 18 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 - wohnort_ost: - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -65,6 +33,33 @@ inputs: elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 23 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1972 + - 2018 + geburtsmonat: + - 2 + - 10 + geburtstag: + - 2 + - 12 + hh_id: + - 1 + - 1 jahr: - 2019 - 2019 @@ -74,9 +69,15 @@ inputs: lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 23 + - 18 sozialversicherung__pflege__beitrag__hat_kinder: - true - false + wohnort_ost: + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml index 348e604e10..1d323a50b3 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml @@ -1,25 +1,26 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 alter: - 43 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 10.0 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 200.0 + einkommensteuer__gemeinsam_veranlagt: + - false + - false familie__p_id_ehepartner: - -1 - -1 @@ -29,24 +30,24 @@ inputs: familie__p_id_elternteil_2: - -1 - -1 - wohnort_ost: - - false - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 200.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false + hh_id: + - 0 + - 0 kindergeld__in_ausbildung: - false - false lohnsteuer__steuerklasse: - 1 - 1 + p_id: + - 0 + - 1 sozialversicherung__pflege__beitrag__hat_kinder: - false - false + wohnort_ost: + - false + - false outputs: elterngeld__nettoeinkommen_approximation_m: - 790.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml index 5d3ff3ccfb..053e7adc40 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - hh_id: - - 3 - - 3 - - 3 - familie__kind: - - false - - true - - false - p_id: - - 55 - - 50 - - 56 - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 5760.0 - 0.0 - 35760.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 56 + - -1 + - 55 + familie__p_id_elternteil_1: + - -1 + - 55 + - -1 + familie__p_id_elternteil_2: + - -1 + - 56 + - -1 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 + hh_id: + - 3 + - 3 + - 3 jahr: - 2019 - 2019 @@ -97,10 +90,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 55 + - 50 + - 56 sozialversicherung__pflege__beitrag__hat_kinder: - true - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml index ea4c646524..3fd7d1c416 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - hh_id: - - 3 - - 3 - - 3 - familie__kind: - - false - - true - - false - p_id: - - 55 - - 50 - - 56 - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 5760.0 - 0.0 - 35760.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 56 + - -1 + - 55 + familie__p_id_elternteil_1: + - -1 + - 55 + - -1 + familie__p_id_elternteil_2: + - -1 + - 56 + - -1 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 + hh_id: + - 3 + - 3 + - 3 jahr: - 2019 - 2019 @@ -97,10 +90,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 55 + - 50 + - 56 sozialversicherung__pflege__beitrag__hat_kinder: - true - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__anzahl_mehrlinge_fg: - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml index 3675897f71..cf234ecfe1 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml @@ -1,66 +1,23 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 - familie__alleinerziehend: - - false - - false - - false alter: - 43 - 0 - 43 + arbeitslosengeld_2__p_id_einstandspartner: + - 2 + - -1 + - 0 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - geburtsjahr: - - 1976 - - 2018 - - 1976 - geburtsmonat: - - 6 - - 6 - - 8 - geburtstag: - - 6 - - 12 - - 8 - hh_id: - - 0 - - 0 - - 0 - familie__kind: - - false - - true - - false - p_id: - - 0 - - 1 - - 2 - familie__p_id_ehepartner: - - 2 - - -1 - - 0 - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 - wohnort_ost: - - false - - false - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -85,6 +42,42 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - true + - false + familie__p_id_ehepartner: + - 2 + - -1 + - 0 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 + geburtsjahr: + - 1976 + - 2018 + - 1976 + geburtsmonat: + - 6 + - 6 + - 8 + geburtstag: + - 6 + - 12 + - 8 + hh_id: + - 0 + - 0 + - 0 kindergeld__in_ausbildung: - false - false @@ -93,10 +86,18 @@ inputs: - 1 - 1 - 1 + p_id: + - 0 + - 1 + - 2 sozialversicherung__pflege__beitrag__hat_kinder: - true - false - true + wohnort_ost: + - false + - false + - false outputs: elterngeld__lohnersatzanteil: - 0.661 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml index 574f3b1eda..a280c94acb 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml @@ -1,45 +1,19 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 30 - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1975 - - 2004 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 9 - - 9 - familie__kind: - - false - - true - p_id: - - 26 - - 27 - familie__p_id_elternteil_1: - - -1 - - 26 - familie__p_id_elternteil_2: - - -1 - - -1 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 @@ -55,9 +29,36 @@ inputs: erziehungsgeld__p_id_empfänger: - -1 - 26 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_elternteil_1: + - -1 + - 26 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1975 + - 2004 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 9 + - 9 kindergeld__in_ausbildung: - false - false + p_id: + - 26 + - 27 sozialversicherung__pflege__beitrag__hat_kinder: - true - false diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml index af0202b11b..e898504af4 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml @@ -1,45 +1,19 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 25 - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 29.0 - 0.0 - geburtsjahr: - - 1980 - - 2004 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 3 - - 3 - familie__kind: - - false - - true - p_id: - - 6 - - 7 - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: - - -1 - - -1 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 0.0 @@ -55,9 +29,36 @@ inputs: erziehungsgeld__p_id_empfänger: - -1 - 6 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_elternteil_1: + - -1 + - 6 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1980 + - 2004 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 3 + - 3 kindergeld__in_ausbildung: - false - false + p_id: + - 6 + - 7 sozialversicherung__pflege__beitrag__hat_kinder: - true - false diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml index f4b7ff9f1a..77b2973cc4 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml @@ -1,45 +1,19 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 30 - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1975 - - 2004 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 1 - - 1 - familie__kind: - - false - - true - p_id: - - 1 - - 2 - familie__p_id_elternteil_1: - - -1 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 @@ -55,9 +29,36 @@ inputs: erziehungsgeld__p_id_empfänger: - -1 - 1 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_elternteil_1: + - -1 + - 1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1975 + - 2004 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 1 + - 1 kindergeld__in_ausbildung: - false - false + p_id: + - 1 + - 2 sozialversicherung__pflege__beitrag__hat_kinder: - true - false diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml index a6696e98c6..001c4b613a 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml @@ -1,57 +1,22 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 12 - - 11 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 40 - 40 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 12 + - 11 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2004 - geburtsmonat: - - 1 - - 1 - - 8 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 5 - - 5 - - 5 - familie__kind: - - false - - false - - true - p_id: - - 11 - - 12 - - 13 - familie__p_id_elternteil_1: - - -1 - - -1 - - 11 - familie__p_id_elternteil_2: - - -1 - - -1 - - 12 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 5000.0 @@ -72,10 +37,46 @@ inputs: - -1 - -1 - 11 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 11 + familie__p_id_elternteil_2: + - -1 + - -1 + - 12 + geburtsjahr: + - 1965 + - 1965 + - 2004 + geburtsmonat: + - 1 + - 1 + - 8 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 5 + - 5 + - 5 kindergeld__in_ausbildung: - false - false - false + p_id: + - 11 + - 12 + - 13 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml index a0f41e50ba..4b2c033916 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml @@ -1,57 +1,22 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 40 - 40 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 9 + - 8 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2004 - geburtsmonat: - - 1 - - 1 - - 8 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 4 - - 4 - - 4 - familie__kind: - - false - - false - - true - p_id: - - 8 - - 9 - - 10 - familie__p_id_elternteil_1: - - -1 - - -1 - - 8 - familie__p_id_elternteil_2: - - -1 - - -1 - - 9 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 3000.0 @@ -72,10 +37,46 @@ inputs: - -1 - -1 - 8 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 8 + familie__p_id_elternteil_2: + - -1 + - -1 + - 9 + geburtsjahr: + - 1965 + - 1965 + - 2004 + geburtsmonat: + - 1 + - 1 + - 8 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 4 + - 4 + - 4 kindergeld__in_ausbildung: - false - false - false + p_id: + - 8 + - 9 + - 10 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml index ce8d3e8b07..e159f42027 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml @@ -1,57 +1,22 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 4 - - 3 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 30 - 30 - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - 4 + - 3 + - -1 arbeitsstunden_w: - 20.0 - 40.0 - 0.0 - geburtsjahr: - - 1975 - - 1975 - - 2004 - geburtsmonat: - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 2 - - 2 - - 2 - familie__kind: - - false - - false - - true - p_id: - - 3 - - 4 - - 5 - familie__p_id_elternteil_1: - - -1 - - -1 - - 3 - familie__p_id_elternteil_2: - - -1 - - -1 - - 4 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2500.0 - 2500.0 @@ -72,10 +37,46 @@ inputs: - -1 - -1 - 3 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 3 + familie__p_id_elternteil_2: + - -1 + - -1 + - 4 + geburtsjahr: + - 1975 + - 1975 + - 2004 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 2 + - 2 + - 2 kindergeld__in_ausbildung: - false - false - false + p_id: + - 3 + - 4 + - 5 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 973bedccf6..5bbc1321e4 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -1,69 +1,25 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false alter: - 40 - 40 - 0 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 29.0 - 0.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2004 - - 2004 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 8 - - 8 - - 8 - - 8 - familie__kind: - - false - - false - - true - - true - p_id: - - 22 - - 23 - - 24 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 1700.0 @@ -89,11 +45,56 @@ inputs: - -1 - 22 - 22 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + familie__p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 + geburtsjahr: + - 1965 + - 1965 + - 2004 + - 2004 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 8 + - 8 + - 8 + - 8 kindergeld__in_ausbildung: - false - false - false - false + p_id: + - 22 + - 23 + - 24 + - 25 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 1576e40c72..25492d2cdb 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -1,69 +1,25 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false alter: - 40 - 40 - 0 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2004 - - 2004 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 6 - - 6 - - 6 - - 6 - familie__kind: - - false - - false - - true - - true - p_id: - - 14 - - 15 - - 16 - - 17 - familie__p_id_elternteil_1: - - -1 - - -1 - - 14 - - 14 - familie__p_id_elternteil_2: - - -1 - - -1 - - 15 - - 15 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 400.0 - 1300.0 @@ -89,11 +45,56 @@ inputs: - -1 - 14 - 14 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 14 + - 14 + familie__p_id_elternteil_2: + - -1 + - -1 + - 15 + - 15 + geburtsjahr: + - 1965 + - 1965 + - 2004 + - 2004 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 6 + - 6 + - 6 + - 6 kindergeld__in_ausbildung: - false - false - false - false + p_id: + - 14 + - 15 + - 16 + - 17 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml index 54eed281cb..d957692431 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml @@ -1,45 +1,19 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 30 - 1 + arbeitslosengeld_2__p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1975 - - 2007 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 11 - - 11 - familie__kind: - - false - - true - p_id: - - 30 - - 31 - familie__p_id_elternteil_1: - - -1 - - 30 - familie__p_id_elternteil_2: - - -1 - - -1 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 - 0.0 @@ -55,9 +29,36 @@ inputs: erziehungsgeld__p_id_empfänger: - -1 - 30 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_elternteil_1: + - -1 + - 30 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1975 + - 2007 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 11 + - 11 kindergeld__in_ausbildung: - false - false + p_id: + - 30 + - 31 sozialversicherung__pflege__beitrag__hat_kinder: - true - false diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 58106e60da..2af62be286 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -1,69 +1,25 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false alter: - 40 - 40 - 0 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 29.0 - 0.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2006 - - 2006 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 8 - - 8 - - 8 - - 8 - familie__kind: - - false - - false - - true - - true - p_id: - - 22 - - 23 - - 24 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 - 1700.0 @@ -89,11 +45,56 @@ inputs: - -1 - 22 - 22 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + familie__p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 + geburtsjahr: + - 1965 + - 1965 + - 2006 + - 2006 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 8 + - 8 + - 8 + - 8 kindergeld__in_ausbildung: - false - false - false - false + p_id: + - 22 + - 23 + - 24 + - 25 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 4be2f14c9c..c02365b6e1 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -1,69 +1,25 @@ --- info: note: '' + precision: 0.1 source: own calculations inputs: assumed: - arbeitslosengeld_2__p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false alter: - 40 - 40 - 0 - 0 + arbeitslosengeld_2__p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - 0.0 - geburtsjahr: - - 1965 - - 1965 - - 2006 - - 2006 - geburtsmonat: - - 1 - - 1 - - 3 - - 9 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 6 - - 6 - - 6 - - 6 - familie__kind: - - false - - false - - true - - true - p_id: - - 14 - - 15 - - 16 - - 17 - familie__p_id_elternteil_1: - - -1 - - -1 - - 14 - - 14 - familie__p_id_elternteil_2: - - -1 - - -1 - - 15 - - 15 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 400.0 - 1300.0 @@ -89,11 +45,56 @@ inputs: - -1 - 14 - 14 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_elternteil_1: + - -1 + - -1 + - 14 + - 14 + familie__p_id_elternteil_2: + - -1 + - -1 + - 15 + - 15 + geburtsjahr: + - 1965 + - 1965 + - 2006 + - 2006 + geburtsmonat: + - 1 + - 1 + - 3 + - 9 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 6 + - 6 + - 6 + - 6 kindergeld__in_ausbildung: - false - false - false - false + p_id: + - 14 + - 15 + - 16 + - 17 sozialversicherung__pflege__beitrag__hat_kinder: - true - true diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml index c3b9502a36..c9a612810e 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 61 + - 62 + - 37 + - 49 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -20,16 +26,6 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - alter: - - 61 - - 62 - - 37 - - 49 arbeitsstunden_w: - 0.0 - 0.0 @@ -40,71 +36,11 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1958 - - 1957 - - 1982 - - 1970 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 1 - - 1 - - 1 - - 1 - familie__kind: - - false - - false - - false - - false - p_id: - - 1 - - 2 - - 3 - - 4 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - - false - - false - vermögen: - - 5500.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 - 0.0 - 0.0 - 0.0 - weiblich: - - false - - true - - false - - true - wohnort_ost: - - false - - false - - false - - true einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -115,11 +51,6 @@ inputs: - -1 - -1 - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 200.0 - 200.0 @@ -180,6 +111,51 @@ inputs: - 24618.0 - 36630.0 - 48642.0 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1958 + - 1957 + - 1982 + - 1970 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 1 + - 1 + - 1 + - 1 kindergeld__in_ausbildung: - false - false @@ -195,6 +171,16 @@ inputs: - 4 - 1 - 1 + p_id: + - 1 + - 2 + - 3 + - 4 + schwerbehindert_grad_g: + - false + - false + - false + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true - true @@ -230,12 +216,7 @@ inputs: - 4.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - 0.0 - 0.0 @@ -250,26 +231,6 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - - false - - true - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - - 1 - - 1 - - 1 sozialversicherung__rente__entgeltpunkte_west: - 6.2776 - 6.2776 @@ -280,6 +241,16 @@ inputs: - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + - false + - true + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + - true + - false + - true sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 - 5.0 @@ -315,22 +286,32 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 456.0 - - 468.0 - - 168.0 - - 312.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - 0.0 - 0.0 @@ -340,17 +321,22 @@ inputs: - 12.0 - 12.0 - 12.0 - sozialversicherung__rente__monate_in_ausbildungssuche: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + sozialversicherung__rente__pflichtbeitragsmonate: + - 456.0 + - 468.0 + - 168.0 + - 312.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 @@ -365,6 +351,16 @@ inputs: - 177.0 - 177.0 - 177.0 + vermögen: + - 5500.0 + - 0.0 + - 0.0 + - 0.0 + weiblich: + - false + - true + - false + - true wohnen__baujahr_immobilie_hh: - 3 - 3 @@ -395,4 +391,9 @@ inputs: - 3 - 3 - 3 + wohnort_ost: + - false + - false + - false + - true outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml index 4905bf1131..173a0f44e4 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 67 + - 34 + - 37 + - 48 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -20,16 +26,6 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - alter: - - 67 - - 34 - - 37 - - 48 arbeitsstunden_w: - 0.0 - 0.0 @@ -40,71 +36,11 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1952 - - 1985 - - 1982 - - 1971 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 2 - - 2 - - 2 - - 2 - familie__kind: - - false - - false - - false - - false - p_id: - - 5 - - 6 - - 7 - - 8 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - - false - - false - vermögen: - - 5500.0 + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 - 0.0 - 0.0 - 0.0 - weiblich: - - false - - true - - false - - false - wohnort_ost: - - true - - true - - true - - true einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 @@ -115,11 +51,6 @@ inputs: - -1 - -1 - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 200.0 - 201.0 @@ -180,6 +111,51 @@ inputs: - 30678.0 - 28302.0 - 12726.0 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1952 + - 1985 + - 1982 + - 1971 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 2 + - 2 + - 2 + - 2 kindergeld__in_ausbildung: - false - false @@ -195,6 +171,16 @@ inputs: - 1 - 1 - 1 + p_id: + - 5 + - 6 + - 7 + - 8 + schwerbehindert_grad_g: + - false + - false + - false + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true - true @@ -225,37 +211,12 @@ inputs: - true - false - false - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - - false - - false - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - - 1 - - 1 - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 8.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 - 0.0 - 0.0 @@ -280,6 +241,16 @@ inputs: - 0.0 - 0.0 - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + - false + - false + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false + - false + - false + - false sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 - 5.0 @@ -315,22 +286,32 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 528.0 - - 132.0 - - 168.0 - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 - 0.0 - 0.0 @@ -340,17 +321,22 @@ inputs: - 12.0 - 12.0 - 12.0 - sozialversicherung__rente__monate_in_ausbildungssuche: + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 - 0.0 - 0.0 - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + sozialversicherung__rente__pflichtbeitragsmonate: + - 528.0 + - 132.0 + - 168.0 + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 - 0.0 @@ -365,6 +351,16 @@ inputs: - 177.0 - 177.0 - 0.0 + vermögen: + - 5500.0 + - 0.0 + - 0.0 + - 0.0 + weiblich: + - false + - true + - false + - false wohnen__baujahr_immobilie_hh: - 3 - 3 @@ -395,4 +391,9 @@ inputs: - 3 - 3 - 3 + wohnort_ost: + - true + - true + - true + - true outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml index 0718d73c38..ed60016c2c 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 51 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 51 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - geburtsjahr: - - 1968 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 3 - familie__kind: - - false - p_id: - - 9 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: - - 5500.0 - weiblich: - - true - wohnort_ost: - - true + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 204.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 2000.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 24750.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1968 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 3 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 9 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 336.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 336.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 5500.0 + weiblich: + - true wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - true outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml index a3c1a2636d..d0f22d1716 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 55 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 55 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - geburtsjahr: - - 1964 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 4 - familie__kind: - - false - p_id: - - 10 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: - - 5500.0 - weiblich: - - false - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 205.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 3000.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 36774.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1964 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 4 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 10 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - true - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 1.7936 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 384.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 384.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 5500.0 + weiblich: + - false wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml index 4bab06c976..3ab65adad3 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 52 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 52 arbeitsstunden_w: - 20.0 behinderungsgrad: - 0 - geburtsjahr: - - 1967 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 5 - familie__kind: - - false - p_id: - - 11 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: - - 5500.0 - weiblich: - - true - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 206.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 4000.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 48798.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 5 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 11 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - true - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 1.7936 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 348.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 348.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 5500.0 + weiblich: + - true wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml index 886fa8154d..2939ac7f2e 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 68 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 68 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 6 - familie__kind: - - false - p_id: - - 12 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: - - 5500.0 - weiblich: - - false - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 207.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 7000.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 84822.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 6 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 12 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - true - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 10.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 1.7936 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 5500.0 + weiblich: + - false wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml index 1fe0b358dd..4b9b4c384d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 59 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 59 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - geburtsjahr: - - 1960 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 7 - familie__kind: - - false - p_id: - - 13 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: - - 5500.0 - weiblich: - - true - wohnort_ost: - - false + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: + - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 208.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 2500.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 30804.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1960 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 7 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 13 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 1.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 1.7936 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - false + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - true sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 432.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 432.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 5500.0 + weiblich: + - true wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml index ab81322b99..375814ac75 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml @@ -1,56 +1,29 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 60 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 60 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - geburtsjahr: - - 1959 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 8 - familie__kind: - - false - p_id: - - 14 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - schwerbehindert_grad_g: - - false - vermögen: + einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - weiblich: - - false - wohnort_ost: - - false einkommensteuer__abzüge__betreuungskosten_m: - 0.0 einkommensteuer__abzüge__p_id_betreuungskosten_träger: - -1 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -75,12 +48,34 @@ inputs: - 2300.0 elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - 25962.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 8 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 lohnsteuer__steuerklasse: - 1 + p_id: + - 14 + schwerbehindert_grad_g: + - false sozialversicherung__arbeitslosen__anwartschaftszeit: - true sozialversicherung__arbeitslosen__arbeitssuchend: @@ -93,19 +88,9 @@ inputs: - false sozialversicherung__pflege__beitrag__hat_kinder: - true - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 2.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__bezieht_rente: - false @@ -115,6 +100,10 @@ inputs: - 19.7296 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 + sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: + - true + sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: + - false sozialversicherung__rente__freiwillige_beitragsmonate: - 5.0 sozialversicherung__rente__grundrente__bewertungszeiten_monate: @@ -129,26 +118,36 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monat_renteneintritt: + - 1 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 444.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 12.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 444.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 unterhalt__anspruch_m: - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 + vermögen: + - 0.0 + weiblich: + - false wohnen__baujahr_immobilie_hh: - 3 wohnen__bewohnt_eigentum_hh: @@ -161,4 +160,6 @@ inputs: - 50.0 wohngeld__mietstufe: - 3 + wohnort_ost: + - false outputs: {} diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 8e9a42f728..83a1577157 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - CZ: In case the other parent does not pay child support, the parent with - p_id==0 can request full kinderfreibetrag (Add this as input?) + note: 'CZ: In case the other parent does not pay child support, the parent with p_id==0 + can request full kinderfreibetrag (Add this as input?)' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 13 + - 52 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,10 +19,22 @@ inputs: - -1 - -1 - -1 - alter: - - 39 - - 13 - - 52 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - 2 + - -1 geburtsjahr: - 1984 - 2010 @@ -39,22 +55,6 @@ inputs: - 0 - 1 - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -68,11 +68,11 @@ outputs: - 0 - 0 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml index 0352648f0f..60714c6665 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml @@ -1,19 +1,32 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 13 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - alter: - - 39 - - 13 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1984 - 2010 @@ -29,18 +42,6 @@ inputs: p_id: - 0 - 1 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -51,9 +52,9 @@ outputs: arbeitslosengeld_2__fg_id: - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml index 15dcf0884b..5b26b70356 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml index 71c3ff4a66..05c51d8b4a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 49 + - 52 + - 23 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 49 - - 52 - - 23 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1974 - 1971 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml index 68ee4d0ad8..8be08e90be 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 0 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml index a5ff461abc..89c8abd6b4 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml @@ -1,10 +1,16 @@ --- info: note: One child is in separate Familiengemeinschaft since over 24 + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 49 + - 52 + - 27 + - 23 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 49 - - 52 - - 27 - - 23 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1974 - 1971 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 1 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml index 3ade8e8309..e05fc0b855 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 70 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 70 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - 3 + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - 3 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 0 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index 71e04e3359..c901c194ae 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -1,12 +1,18 @@ --- info: - note: >- - Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never + note: Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never covers more than 2 generations) + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 19 + - 22 + - 1 + - 49 + - 50 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -19,12 +25,30 @@ inputs: - -1 - 4 - 3 - alter: - - 19 - - 22 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - true + - true + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - 4 + - 3 + familie__p_id_elternteil_1: + - 3 + - -1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_2: + - 4 + - -1 - 1 - - 49 - - 50 + - -1 + - -1 geburtsjahr: - 2004 - 2001 @@ -55,30 +79,6 @@ inputs: - 2 - 3 - 4 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - 4 - - 3 - familie__p_id_elternteil_1: - - 3 - - -1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_2: - - 4 - - -1 - - 1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - true - - true outputs: arbeitslosengeld_2__bg_id: - 0 @@ -98,13 +98,13 @@ outputs: - 0 - 1 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - 3 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml index 01f8c41302..2422a55635 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml @@ -1,10 +1,16 @@ --- info: note: Child in separate Familiengemeinschaft if he/she is married + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 49 + - 50 + - 19 + - 22 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - 3 - 2 - alter: - - 49 - - 50 - - 19 - - 22 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - 1 geburtsjahr: - 1974 - 1973 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 1 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 1 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml index 02e8a700ef..caf9a43c35 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for - him/herself + note: Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for him/herself + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 49 + - 50 + - 22 arbeitslosengeld_2__eigenbedarf_gedeckt: - true - true @@ -15,10 +18,22 @@ inputs: - 1 - 0 - -1 - alter: - - 49 - - 50 - - 22 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1974 - 1973 @@ -39,22 +54,6 @@ inputs: - 0 - 1 - 2 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -68,11 +67,11 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml index cce14b0df2..e8f0e39a18 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml index 4770cac0a1..4565aa8837 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 10 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 10 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,13 +82,13 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: - - 0 + einkommensteuer__sn_id: - 0 - 1 - 2 - einkommensteuer__sn_id: + - 3 + familie__ehe_id: + - 0 - 0 - 1 - 2 - - 3 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml index c3545583de..90b7a63d62 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 49 + - 52 + - 23 + - 20 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -15,11 +21,26 @@ inputs: - 0 - 3 - 2 - alter: - - 49 - - 52 - - 23 - - 20 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1974 - 1971 @@ -45,26 +66,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true outputs: arbeitslosengeld_2__bg_id: - 0 @@ -81,12 +82,12 @@ outputs: - 0 - 1 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 1 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml index 6e1b0554d1..4fa22279c3 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml @@ -1,10 +1,20 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 50 + - 48 + - 18 + - 20 + - 25 + - 24 + - 24 + - 2 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -23,33 +33,6 @@ inputs: - -1 - -1 - -1 - alter: - - 50 - - 48 - - 18 - - 20 - - 25 - - 24 - - 24 - - 2 - hh_id: - - 0 - - 0 - - 1 - - 0 - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 familie__p_id_ehepartner: - 1 - 0 @@ -77,6 +60,24 @@ inputs: - 1 - 1 - -1 + hh_id: + - 0 + - 0 + - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 outputs: arbeitslosengeld_2__bg_id: - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml index 4abc4b11b8..853c4e096a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml @@ -1,12 +1,18 @@ --- info: - note: >- - A later implementation may rely on the order of p_id or - hh_id. + note: A later implementation may rely on the order of p_id or hh_id. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 39 + - 13 + - 39 + - 13 + - 13 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -21,13 +27,34 @@ inputs: - -1 - -1 - -1 - alter: - - 39 - - 39 - - 13 - - 39 - - 13 - - 13 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + - 2 + - 1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1984 - 1984 @@ -63,34 +90,6 @@ inputs: - 2 - 3 - 5 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - - 2 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -113,14 +112,14 @@ outputs: - 2 - 2 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - 4 - 5 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index e5934fa71d..a01b481065 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,12 +1,17 @@ --- info: - note: >- - CZ: In case the other parent does not pay child support, the parent id==0, can - request full kinderfreibetrag (Add this as input?) + note: 'CZ: In case the other parent does not pay child support, the parent id==0, can request + full kinderfreibetrag (Add this as input?)' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 52 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -17,11 +22,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 52 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 3 + - -1 geburtsjahr: - 1984 - 1981 @@ -47,26 +67,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 3 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -83,12 +83,12 @@ outputs: - 0 - 0 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - 3 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml index 8e64088086..22cfa15765 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -13,10 +18,22 @@ inputs: - 1 - 0 - -1 - alter: - - 39 - - 42 - - 13 + einkommensteuer__gemeinsam_veranlagt: + - false + - false + - false + familie__p_id_ehepartner: + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1984 - 1981 @@ -37,22 +54,6 @@ inputs: - 0 - 1 - 2 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -66,11 +67,11 @@ outputs: - 0 - 0 - 0 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index 34c1a4c571..da65bca0d3 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,12 +1,17 @@ --- info: - note: >- - not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is + note: not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is married to new partner (unterhalt__anspruch_m unaffected) + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 39 + - 42 + - 13 + - 52 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -17,11 +22,26 @@ inputs: - 0 - -1 - -1 - alter: - - 39 - - 42 - - 13 - - 52 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -47,26 +67,6 @@ inputs: - 1 - 2 - 3 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false outputs: arbeitslosengeld_2__bg_id: - 0 @@ -83,12 +83,12 @@ outputs: - 0 - 0 - 1 - familie__ehe_id: + einkommensteuer__sn_id: - 0 - 0 - 1 - 2 - einkommensteuer__sn_id: + familie__ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml index d851e71465..587512abc9 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml @@ -1,34 +1,32 @@ --- info: note: Skipping test for now, because input columns are missing. + precision: 0.01 source: '' inputs: provided: - p_id: - - 0 - - 1 - geburtstag: - - 14 - - 1 - geburtsmonat: - - 7 - - 3 - geburtsjahr: - - 1950 - - 1964 alter: - 73 - 59 + geburtsjahr: + - 1950 + - 1964 + geburtsmonat: + - 7 + - 3 + geburtstag: + - 14 + - 1 hh_id: - 0 - 0 + p_id: + - 0 + - 1 outputs: - einkommensteuer__sn_id: + arbeitslosengeld_2__bg_id: - 0 - 0 - arbeitslosengeld_2__bg_id: + einkommensteuer__sn_id: - 0 - 0 - # potentielle_kinderfreibeträge: - # - 0 - # - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml index 22e9fcf360..e0395088c4 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml @@ -1,27 +1,28 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. + precision: 0.01 source: '' inputs: - - id: 0 - geburtstag: 1984-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 1 + - arbeitslosengeld_2__p_id_einstandspartner: 1 einkommensteuer__gemeinsam_veranlagt: false + geburtstag: 1984-07-14 hh_id: 0 - - id: 1 + id: 0 + - einkommensteuer__gemeinsam_veranlagt: false geburtstag: 1981-07-14 - einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 - - id: 2 + id: 1 + - arbeitslosengeld_2__p_id_einstandspartner: 0 geburtstag: 2010-03-01 - arbeitslosengeld_2__p_id_einstandspartner: 0 hh_id: 0 + id: 2 id_eltern: - 0 - 1 - - id: 3 - geburtstag: 2013-10-21 + - geburtstag: 2013-10-21 hh_id: 0 + id: 3 id_eltern: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml index f1b9e21f04..61251b4227 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml @@ -1,27 +1,28 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. + precision: 0.01 source: '' inputs: - - id: 0 - geburtstag: 1984-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 1 + - arbeitslosengeld_2__p_id_einstandspartner: 1 einkommensteuer__gemeinsam_veranlagt: false + geburtstag: 1984-07-14 hh_id: 0 - - id: 1 + id: 0 + - arbeitslosengeld_2__p_id_einstandspartner: 0 geburtstag: 1981-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 0 hh_id: 0 - - id: 2 + id: 1 + - einkommensteuer__gemeinsam_veranlagt: false geburtstag: 2010-03-01 - einkommensteuer__gemeinsam_veranlagt: false hh_id: 0 + id: 2 id_eltern: - 0 - 1 - - id: 3 - geburtstag: 2013-10-21 + - geburtstag: 2013-10-21 hh_id: 0 + id: 3 id_eltern: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml index 11d953bb70..426cc41785 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml @@ -1,23 +1,24 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. + precision: 0.01 source: '' inputs: - - id: 0 - geburtstag: 1984-07-14 + - geburtstag: 1984-07-14 hh_id: 0 - - id: 1 - geburtstag: 1981-07-14 + id: 0 + - geburtstag: 1981-07-14 hh_id: 0 - - id: 2 - geburtstag: 2010-03-01 + id: 1 + - geburtstag: 2010-03-01 hh_id: 0 + id: 2 id_eltern: - 0 - 1 - - id: 3 - geburtstag: 2013-10-21 + - geburtstag: 2013-10-21 hh_id: 0 + id: 3 id_eltern: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml index b825d6ac72..3c0d397be5 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml @@ -1,31 +1,29 @@ --- info: note: Skipping test for now, because input columns are missing. + precision: 0.01 source: '' inputs: provided: - p_id: - - 0 - - 1 - geburtstag: - - 14 - - 1 - geburtsmonat: - - 7 - - 3 geburtsjahr: - 2002 - 1966 + geburtsmonat: + - 7 + - 3 + geburtstag: + - 14 + - 1 hh_id: - 0 - 0 + p_id: + - 0 + - 1 outputs: - einkommensteuer__sn_id: + arbeitslosengeld_2__bg_id: - 0 - 1 - arbeitslosengeld_2__bg_id: + einkommensteuer__sn_id: - 0 - 1 -# potentielle_kinderfreibeträge: -# - 0 -# - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml index 01fa09983d..f014d1120f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml @@ -1,31 +1,29 @@ --- info: note: Skipping test for now, because input columns are missing. + precision: 0.01 source: '' inputs: provided: - p_id: - - 0 - - 1 - geburtstag: - - 14 - - 1 - geburtsmonat: - - 7 - - 3 geburtsjahr: - 2002 - 1954 + geburtsmonat: + - 7 + - 3 + geburtstag: + - 14 + - 1 hh_id: - 0 - 0 + p_id: + - 0 + - 1 outputs: - einkommensteuer__sn_id: + arbeitslosengeld_2__bg_id: - 0 - 1 - arbeitslosengeld_2__bg_id: + einkommensteuer__sn_id: - 0 - 1 - # potentielle_kinderfreibeträge: - # - 0 - # - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml index adf9899b86..c4deaacb8f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml @@ -1,17 +1,18 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. + precision: 0.01 source: '' inputs: - - id: 0 - geburtstag: 1984-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 1 + - arbeitslosengeld_2__p_id_einstandspartner: 1 einkommensteuer__gemeinsam_veranlagt: true + geburtstag: 1984-07-14 hh_id: 0 - - id: 1 - geburtstag: 1981-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 0 + id: 0 + - arbeitslosengeld_2__p_id_einstandspartner: 0 einkommensteuer__gemeinsam_veranlagt: true + geburtstag: 1981-07-14 hh_id: 0 + id: 1 outputs: - error: Personen sind nicht verheiratet, aber gemeinsam veranlagt diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml index 9461aa6c31..aebadf081a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml @@ -1,20 +1,20 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. + precision: 0.01 source: '' inputs: - - id: 0 - geburtstag: 1984-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 1 - familie__p_id_ehepartner: 1 + - arbeitslosengeld_2__p_id_einstandspartner: 1 einkommensteuer__gemeinsam_veranlagt: true + familie__p_id_ehepartner: 1 + geburtstag: 1984-07-14 hh_id: 0 - - id: 1 - geburtstag: 1981-07-14 - arbeitslosengeld_2__p_id_einstandspartner: 0 - familie__p_id_ehepartner: 0 + id: 0 + - arbeitslosengeld_2__p_id_einstandspartner: 0 einkommensteuer__gemeinsam_veranlagt: false + familie__p_id_ehepartner: 0 + geburtstag: 1981-07-14 hh_id: 0 + id: 1 outputs: - - error: >- - Informationen zur gemeinsamen Veranlagung widersprechen sich zwischen Ehepartnern + - error: Informationen zur gemeinsamen Veranlagung widersprechen sich zwischen Ehepartnern diff --git a/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml b/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml index ad8f5c23e8..7bd48b3b5a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml @@ -1,26 +1,11 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - - -1 - - 6 - - 5 einkommensteuer__gemeinsam_veranlagt: - true - true @@ -29,6 +14,22 @@ inputs: - false - false - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + - -1 + - 6 + - 5 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 outputs: einkommensteuer__sn_id: - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml index f01c241bed..a711767d5c 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml @@ -1,10 +1,19 @@ --- info: note: Couple with three children and two grandparents. One child outside of parent BG. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 53 + - 53 + - 53 + - 53 + - 13 + - 13 + - 13 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -21,14 +30,38 @@ inputs: - -1 - -1 - -1 - alter: - - 53 - - 53 - - 53 - - 53 - - 13 - - 13 - - 13 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - 0 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - 1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -69,38 +102,6 @@ inputs: - 4 - 5 - 6 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - 1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - false - false diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml index e7dd97e1d5..67a4b6b617 100644 --- a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml @@ -1,10 +1,19 @@ --- info: note: Multiple households with mutliple Bedarfsgemeinschaften. + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 53 + - 53 + - 53 + - 53 + - 23 + - 23 + - 13 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -21,14 +30,38 @@ inputs: - -1 - -1 - -1 - alter: - - 53 - - 53 - - 53 - - 53 - - 23 - - 23 - - 13 + einkommensteuer__gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - 0 + - 0 + - 0 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - 1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -69,38 +102,6 @@ inputs: - 4 - 5 - 6 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - 1 - - 1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml similarity index 89% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index f236504898..403b56808c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -1,59 +1,21 @@ --- info: - note: >- - Added capital income of 10 euros for household (expected difference in - grundsicherung__im_alter__betrag_m_eg ((10*12)-26)/12)=7.83333333) - source: >- - Adjusted test case based on - https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele + note: Added capital income of 10 euros for household (expected difference in grundsicherung__im_alter__betrag_m_eg + ((10*12)-26)/12)=7.83333333) + precision: 0.01 + source: Adjusted test case based on https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 18 - - 17 - familie__alleinerziehend: - - false - - false alter: - 72 - 67 - geburtsjahr: - - 1945 - - 1950 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 13 - - 13 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 17 - - 18 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 18 - 17 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -78,6 +40,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 18 + - 17 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1945 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 13 + - 13 jahr: - 2017 - 2017 @@ -87,6 +76,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 17 + - 18 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -114,6 +109,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index 75dbd695e3..0a26896b6e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 50 - geburtsjahr: - - 1967 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 16 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 21 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - true - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 16 jahr: - 2017 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 21 + schwerbehindert_grad_g: + - true solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 543ca04854..35ac5c294c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 82 - geburtsjahr: - - 1935 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 17 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 22 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - true - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1935 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 17 jahr: - 2017 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 22 + schwerbehindert_grad_g: + - true solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 2ecdead849..0cdf7d605c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -1,55 +1,20 @@ --- info: note: '' + precision: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 - familie__alleinerziehend: - - false - - false alter: - 72 - 67 - geburtsjahr: - - 1945 - - 1950 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 6 - - 6 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 8 - - 9 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 9 - 8 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -74,6 +39,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 9 + - 8 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1945 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 6 + - 6 jahr: - 2017 - 2017 @@ -83,6 +75,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 8 + - 9 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -110,6 +108,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml similarity index 88% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index c2e3fe60af..7d0d960c3b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -1,44 +1,18 @@ --- info: - note: >- - Added minor capital income of 2 euros (no deduction from claim since below allowance + note: Added minor capital income of 2 euros (no deduction from claim since below allowance of 26 euros per year) - source: >- - Adjusted test case based on - https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 + precision: 0.01 + source: Adjusted test case based on https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 12 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 16 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -55,12 +29,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 12 jahr: - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 16 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -79,6 +75,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index fad2c63e9c..ad16474a28 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -1,40 +1,17 @@ --- info: note: Test with positive wealth above wealth allowance + precision: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 20 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 26 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 5600.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 20 jahr: - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 26 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 5600.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index 5d0ccc036c..0c873152ed 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -1,40 +1,17 @@ --- info: note: Test with positive wealth below wealth allowance + precision: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 22 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 29 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 4900.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 22 jahr: - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 29 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 4900.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 6146ffe404..0eb9537bf5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1950 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 3 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1950 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 3 jahr: - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 4 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index d9d8b1f41f..8df7067d1f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 80 - geburtsjahr: - - 1940 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 18 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 23 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - true - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1940 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 18 jahr: - 2020 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 23 + schwerbehindert_grad_g: + - true solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index 80605e3e49..cf2ed9d736 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -1,55 +1,20 @@ --- info: note: 'Calculation error on the website: should be 210.13 instead of 209.13' + precision: 0.01 source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 25 - - 24 - familie__alleinerziehend: - - false - - false alter: - 67 - 70 - geburtsjahr: - - 1953 - - 1950 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 19 - - 19 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 24 - - 25 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 25 - 24 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - true - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -74,6 +39,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 25 + - 24 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1953 + - 1950 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 19 + - 19 jahr: - 2020 - 2020 @@ -83,6 +75,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 24 + - 25 + schwerbehindert_grad_g: + - false + - true solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -110,6 +108,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index f31f065d1e..4beecbb4c4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -1,55 +1,20 @@ --- info: note: Beispielpersonen Max B. und Inge M. + precision: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - 1 - familie__alleinerziehend: - - false - - false alter: - 70 - 67 - geburtsjahr: - - 1951 - - 1954 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 1 - - 1 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 1 - - 2 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 2 - 1 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -74,6 +39,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 2 + - 1 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 1 + - 1 jahr: - 2021 - 2021 @@ -83,6 +75,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 1 + - 2 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -110,6 +108,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml similarity index 92% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index 5caf38db2b..9841eebf2e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -1,42 +1,18 @@ --- info: - note: >- - Adjusted test case by adding capital income of 50 euros (expected difference in - grundsicherung__im_alter__betrag_m_eg (50*12 - 26) / 12) = 47.83333333) + note: Adjusted test case by adding capital income of 50 euros (expected difference in grundsicherung__im_alter__betrag_m_eg + (50*12 - 26) / 12) = 47.83333333) + precision: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 14 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 19 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -53,12 +29,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 14 jahr: - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 19 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -77,6 +75,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 61cf0cf698..5e36d0e795 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -1,40 +1,17 @@ --- info: note: Beispielperson Gerda M. + precision: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 67 - geburtsjahr: - - 1954 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 15 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 20 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - true - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1954 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 15 jahr: - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 20 + schwerbehindert_grad_g: + - true solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 4e1b515771..7fdbf2e658 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -1,40 +1,17 @@ --- info: note: Beispielperson Harald F. + precision: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 70 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 2 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 3 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1951 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 2 jahr: - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 3 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml similarity index 96% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 38d543c9c6..11664ae592 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -1,57 +1,21 @@ --- info: - note: >- - Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge + note: Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge M. + precision: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 28 - - 27 - familie__alleinerziehend: - - false - - false alter: - 70 - 67 - geburtsjahr: - - 1951 - - 1954 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 21 - - 21 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 27 - - 28 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 28 - 27 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 10500.0 - - 10500.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -76,6 +40,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 28 + - 27 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 21 + - 21 jahr: - 2021 - 2021 @@ -85,6 +76,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 27 + - 28 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -112,6 +109,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 10500.0 + - 10500.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml similarity index 96% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index 94315ece0e..ee93d97606 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -1,57 +1,21 @@ --- info: - note: >- - Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge + note: Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge M. + precision: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 31 - - 30 - familie__alleinerziehend: - - false - - false alter: - 70 - 67 - geburtsjahr: - - 1951 - - 1954 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 23 - - 23 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 30 - - 31 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 31 - 30 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 8250.0 - - 8250.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -76,6 +40,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 31 + - 30 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1951 + - 1954 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 23 + - 23 jahr: - 2021 - 2021 @@ -85,6 +76,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 30 + - 31 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -112,6 +109,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 8250.0 + - 8250.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index ca74e6c7dd..60fe439f33 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 5 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 7 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 5 jahr: - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 7 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index d3ec531803..8ae137b68f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 68 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 7 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 10 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 7 jahr: - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 10 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index 2efa577358..3b442041db 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -1,57 +1,21 @@ --- info: - note: >- - Test if households with non-retired adult do not get Grundsicherung im Alter (as - currently implemented those households get ALG 2) + note: Test if households with non-retired adult do not get Grundsicherung im Alter (as currently + implemented those households get ALG 2) + precision: 0.01 source: '' inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 13 - - 12 - familie__alleinerziehend: - - false - - false alter: - 70 - 60 - geburtsjahr: - - 1951 - - 1961 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 9 - - 9 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 12 - - 13 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 13 - 12 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -76,6 +40,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 13 + - 12 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1951 + - 1961 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 9 + - 9 jahr: - 2021 - 2021 @@ -85,6 +76,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 12 + - 13 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -112,6 +109,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml similarity index 95% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 4e79c03255..0542a2bd40 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -1,42 +1,18 @@ --- info: - note: >- - Capital income of 20 euros (monthly amount deducted from claim due to capital income + note: Capital income of 20 euros (monthly amount deducted from claim due to capital income (20*12 - 26) / 12 = 17.83333333) + precision: 0.01 source: Self-created test case inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 73 - geburtsjahr: - - 1949 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 10 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 14 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -53,12 +29,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1949 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 10 jahr: - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 14 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -77,6 +75,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml similarity index 95% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index 1420e7fb13..fafa5be9eb 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -1,42 +1,18 @@ --- info: - note: >- - Capital income of 50 euros (monthly amount deducted from claim due to capital income + note: Capital income of 50 euros (monthly amount deducted from claim due to capital income (50*12 - 26) / 12 = 47.83333333) + precision: 0.01 source: Self-created test case inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 69 - geburtsjahr: - - 1953 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 11 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 15 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -53,12 +29,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1953 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 11 jahr: - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 15 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -77,6 +75,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index 176798f879..ff54e47082 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -1,55 +1,20 @@ --- info: note: Test with child and positive wealth above wealth allowance + precision: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 33 - - 32 - familie__alleinerziehend: - - true - - false alter: - 50 - 16 - geburtsjahr: - - 1972 - - 2006 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 24 - - 24 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - - true - p_id: - - 32 - - 33 - familie__p_id_ehepartner: + - false + arbeitslosengeld_2__p_id_einstandspartner: - 33 - 32 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - true - - false - vermögen_eg: - - 5600.0 - - 5600.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -74,6 +39,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - 33 + - 32 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1972 + - 2006 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 24 + - 24 jahr: - 2022 - 2022 @@ -83,6 +75,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 32 + - 33 + schwerbehindert_grad_g: + - true + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -110,6 +108,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 5600.0 + - 5600.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml similarity index 95% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index cd019fbc4b..45f1ab9d77 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -1,57 +1,21 @@ --- info: - note: >- - Test with child and positive wealth below wealth allowance (website did not add - general amount for child) + note: Test with child and positive wealth below wealth allowance (website did not add general + amount for child) + precision: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 50 - 16 - geburtsjahr: - - 1972 - - 2006 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 25 - - 25 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - - true - p_id: - - 34 - - 35 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 34 - familie__p_id_elternteil_2: + - false + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - schwerbehindert_grad_g: - - true - - false - vermögen_eg: - - 5400.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -76,6 +40,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 34 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1972 + - 2006 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 25 + - 25 jahr: - 2022 - 2022 @@ -85,6 +76,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - 34 + p_id: + - 34 + - 35 + schwerbehindert_grad_g: + - true + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -112,6 +109,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 5400.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index fd29acf06d..6fe73b8d52 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -1,55 +1,20 @@ --- info: note: '' + precision: 0.01 source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 6 - - 5 - familie__alleinerziehend: - - false - - false alter: - 76 - 70 - geburtsjahr: - - 1946 - - 1952 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 4 - - 4 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 5 - - 6 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 6 - 5 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - schwerbehindert_grad_g: - - false - - false - vermögen_eg: - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -74,6 +39,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 6 + - 5 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1946 + - 1952 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 4 + - 4 jahr: - 2022 - 2022 @@ -83,6 +75,12 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 5 + - 6 + schwerbehindert_grad_g: + - false + - false solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -110,6 +108,9 @@ inputs: unterhaltsvorschuss__betrag_m_eg: - 0.0 - 0.0 + vermögen_eg: + - 0.0 + - 0.0 wohnen__bewohnt_eigentum_hh: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml rename to src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index d2fecce8c2..2e9f389a85 100644 --- a/src/_gettsim_tests/test_data/grundsicherung_im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -1,40 +1,17 @@ --- info: note: '' + precision: 0.01 source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 77 - geburtsjahr: - - 1945 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 8 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 11 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - schwerbehindert_grad_g: - - false - vermögen_eg: - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -51,12 +28,34 @@ inputs: - false elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1945 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 8 jahr: - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: - -1 + p_id: + - 11 + schwerbehindert_grad_g: + - false solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -75,6 +74,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m_eg: - 0.0 + vermögen_eg: + - 0.0 wohnen__bewohnt_eigentum_hh: - false wohnen__bruttokaltmiete_m_hh: diff --git a/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml index 7fa1c6935e..92e96f3b13 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -19,27 +20,6 @@ inputs: - 0.0 - 2.0 - 0.0 - hh_id: - - 2 - - 2 - - 2 - - 2 - - 2 - - 2 - familie__kind: - - false - - false - - false - - false - - true - - true - p_id: - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 @@ -54,6 +34,20 @@ inputs: - 3000.0 - 3000.0 - 3000.0 + familie__kind: + - false + - false + - false + - false + - true + - true + hh_id: + - 2 + - 2 + - 2 + - 2 + - 2 + - 2 kindergeld__in_ausbildung: - false - false @@ -68,6 +62,13 @@ inputs: - 12 - 12 - 12 + p_id: + - 12 + - 13 + - 14 + - 15 + - 16 + - 17 outputs: kindergeld__betrag_m: - 462 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml index 2020e3c10b..d76552d979 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,20 +10,20 @@ inputs: - 21 arbeitsstunden_w: - 10.0 - hh_id: - - 4 - familie__kind: - - false - p_id: - - 19 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 700.0 einkommensteuer__gesamteinkommen_y: - 0.0 + familie__kind: + - false + hh_id: + - 4 kindergeld__in_ausbildung: - true kindergeld__p_id_empfänger: - -1 + p_id: + - 19 outputs: kindergeld__betrag_m: - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml index edc4bfe981..7541359c6f 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,20 +10,20 @@ inputs: - 21 arbeitsstunden_w: - 0.0 - hh_id: - - 6 - familie__kind: - - false - p_id: - - 21 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__gesamteinkommen_y: - 0.0 + familie__kind: + - false + hh_id: + - 6 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 21 outputs: kindergeld__betrag_m: - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml index a41028e8d9..3a69a55955 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -21,30 +22,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - familie__kind: - - false - - true - - true - - true - - true - - true - - true - p_id: - - 22 - - 23 - - 24 - - 25 - - 26 - - 27 - - 28 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 @@ -61,6 +38,22 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__kind: + - false + - true + - true + - true + - true + - true + - true + hh_id: + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 kindergeld__in_ausbildung: - false - true @@ -77,6 +70,14 @@ inputs: - 22 - 22 - 22 + p_id: + - 22 + - 23 + - 24 + - 25 + - 26 + - 27 + - 28 outputs: kindergeld__betrag_m: - 1203 diff --git a/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml index 5ec703f0e3..7e783e5c7d 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -17,24 +18,6 @@ inputs: - 0.0 - 25.0 - 0.0 - hh_id: - - 8 - - 8 - - 8 - - 8 - - 8 - familie__kind: - - false - - false - - true - - true - - true - p_id: - - 29 - - 30 - - 31 - - 32 - - 33 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 @@ -47,6 +30,18 @@ inputs: - 200000.0 - 200000.0 - 200000.0 + familie__kind: + - false + - false + - true + - true + - true + hh_id: + - 8 + - 8 + - 8 + - 8 + - 8 kindergeld__in_ausbildung: - false - false @@ -59,6 +54,12 @@ inputs: - 29 - 29 - 29 + p_id: + - 29 + - 30 + - 31 + - 32 + - 33 outputs: kindergeld__betrag_m: - 558 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml index 2ddd21c703..a7bb24c125 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml @@ -1,6 +1,7 @@ --- info: note: check age cut-offs at 18 and 25. + precision: 0.01 source: '' inputs: assumed: {} @@ -17,24 +18,6 @@ inputs: - 10.0 - 10.0 - 30.0 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - false - - false - - false - p_id: - - 1 - - 2 - - 3 - - 4 - - 5 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 @@ -47,6 +30,18 @@ inputs: - 3000.0 - 3000.0 - 3000.0 + familie__kind: + - false + - false + - false + - false + - false + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 kindergeld__in_ausbildung: - false - false @@ -59,6 +54,12 @@ inputs: - 1 - 1 - 1 + p_id: + - 1 + - 2 + - 3 + - 4 + - 5 outputs: kindergeld__betrag_m: - 194 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml index 4be177fb07..970d9a4cf3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -19,27 +20,6 @@ inputs: - 0.0 - 2.0 - 0.0 - hh_id: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - familie__kind: - - false - - false - - false - - true - - true - - true - p_id: - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 @@ -54,6 +34,20 @@ inputs: - 3000.0 - 3000.0 - 3000.0 + familie__kind: + - false + - false + - false + - true + - true + - true + hh_id: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 kindergeld__in_ausbildung: - false - false @@ -68,6 +62,13 @@ inputs: - 6 - 6 - 6 + p_id: + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 outputs: kindergeld__betrag_m: - 588 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml index fdf2b1274c..e239ba562b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,20 +10,20 @@ inputs: - 21 arbeitsstunden_w: - 10.0 - hh_id: - - 3 - familie__kind: - - false - p_id: - - 18 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 700.0 einkommensteuer__gesamteinkommen_y: - 0.0 + familie__kind: + - false + hh_id: + - 3 kindergeld__in_ausbildung: - true kindergeld__p_id_empfänger: - 18 + p_id: + - 18 outputs: kindergeld__betrag_m: - 194 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml index 3f1eff3461..e72bb81e84 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,20 +10,20 @@ inputs: - 21 arbeitsstunden_w: - 0.0 - hh_id: - - 5 - familie__kind: - - false - p_id: - - 20 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__gesamteinkommen_y: - 0.0 + familie__kind: + - false + hh_id: + - 5 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - 20 + p_id: + - 20 outputs: kindergeld__betrag_m: - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml index fb7b4e027e..f43e328552 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -11,27 +12,27 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - hh_id: - - 10 - - 10 - familie__kind: - - false - - true - p_id: - - 34 - - 35 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 - 0.0 einkommensteuer__gesamteinkommen_y: - 0.0 - 0.0 + familie__kind: + - false + - true + hh_id: + - 10 + - 10 kindergeld__in_ausbildung: - false - true kindergeld__p_id_empfänger: - -1 - 34 + p_id: + - 34 + - 35 outputs: kinderbonus__betrag_m: - 25.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml index fc7fb63fa6..f98973f36b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -17,24 +18,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - true - - true - - true - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 @@ -47,6 +30,18 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__kind: + - false + - false + - true + - true + - true + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 kindergeld__in_ausbildung: - false - false @@ -59,6 +54,12 @@ inputs: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 outputs: arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml index 494746681f..93c888241b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -13,18 +14,6 @@ inputs: - 0.0 - 0.0 - 0.0 - hh_id: - - 11 - - 11 - - 11 - familie__kind: - - false - - false - - true - p_id: - - 36 - - 37 - - 38 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 20000.0 - 20000.0 @@ -33,6 +22,14 @@ inputs: - 200000.0 - 200000.0 - 200000.0 + familie__kind: + - false + - false + - true + hh_id: + - 11 + - 11 + - 11 kindergeld__in_ausbildung: - false - false @@ -41,6 +38,10 @@ inputs: - -1 - -1 - 36 + p_id: + - 36 + - 37 + - 38 outputs: kinderbonus__betrag_m: - 12.5 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml index 332839f2da..92441e2862 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -9,20 +10,20 @@ inputs: - 35 arbeitsstunden_w: - 0.0 - hh_id: - - 12 - familie__kind: - - false - p_id: - - 39 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__gesamteinkommen_y: - 0.0 + familie__kind: + - false + hh_id: + - 12 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 39 outputs: kinderbonus__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml index f0473a2294..57eb12cefd 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml @@ -1,6 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ + precision: 0.01 source: '' inputs: assumed: {} @@ -17,24 +18,6 @@ inputs: - 0.0 - 2.0 - 0.0 - hh_id: - - 13 - - 13 - - 13 - - 13 - - 13 - familie__kind: - - false - - false - - true - - true - - true - p_id: - - 40 - - 41 - - 43 - - 44 - - 45 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 - 0.0 @@ -47,6 +30,18 @@ inputs: - 3000.0 - 3000.0 - 3000.0 + familie__kind: + - false + - false + - true + - true + - true + hh_id: + - 13 + - 13 + - 13 + - 13 + - 13 kindergeld__in_ausbildung: - false - false @@ -59,6 +54,12 @@ inputs: - 40 - 40 - 40 + p_id: + - 40 + - 41 + - 43 + - 44 + - 45 outputs: kindergeld__betrag_m: - 750 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml index f3977fc6e3..274a6f4d27 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml @@ -1,6 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ + precision: 0.01 source: '' inputs: assumed: {} @@ -11,21 +12,21 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: + hh_id: + - 0 - 0 - - 1 kindergeld__in_ausbildung: - false - true kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 outputs: arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml index f3977fc6e3..274a6f4d27 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml @@ -1,6 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ + precision: 0.01 source: '' inputs: assumed: {} @@ -11,21 +12,21 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - hh_id: - - 0 - - 0 familie__kind: - false - true - p_id: + hh_id: + - 0 - 0 - - 1 kindergeld__in_ausbildung: - false - true kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 outputs: arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml index 5085da9d34..8b4b7532db 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml @@ -1,6 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ + precision: 0.01 source: '' inputs: assumed: {} @@ -13,18 +14,14 @@ inputs: - 40.0 - 0.0 - 0.0 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - true - p_id: + hh_id: + - 0 + - 0 - 0 - - 1 - - 2 kindergeld__in_ausbildung: - false - true @@ -33,6 +30,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 outputs: arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml index 5085da9d34..8b4b7532db 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml @@ -1,6 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ + precision: 0.01 source: '' inputs: assumed: {} @@ -13,18 +14,14 @@ inputs: - 40.0 - 0.0 - 0.0 - hh_id: - - 0 - - 0 - - 0 familie__kind: - false - true - true - p_id: + hh_id: + - 0 + - 0 - 0 - - 1 - - 2 kindergeld__in_ausbildung: - false - true @@ -33,6 +30,10 @@ inputs: - -1 - 0 - 0 + p_id: + - 0 + - 1 + - 2 outputs: arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml index 9ea5911324..6071b7a0eb 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,42 +21,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - false - - false - alter: - - 40 - - 40 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1973 - - 1973 - hh_id: - - 2 - - 2 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false familie__kind: - false - false - p_id: - - 4 - - 5 familie__p_id_elternteil_1: - -1 - -1 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 jahr: - 2013 - 2013 @@ -74,12 +69,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 512.0 - 0.0 + p_id: + - 4 + - 5 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 400.0 - 400.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml index 9a46ae9552..2152fa423c 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 30 + - 2 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,34 +26,26 @@ inputs: - 2 - 1 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 30 - - 30 - - 2 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1986 - - 1986 - - 2014 - hh_id: - - 1 - - 1 - - 1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 1 - - 2 - - 3 familie__p_id_elternteil_1: - -1 - -1 @@ -57,18 +54,14 @@ inputs: - -1 - -1 - 2 - vermögen: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 1 + - 1 + - 1 jahr: - 2016 - 2016 @@ -97,6 +90,10 @@ inputs: - 322.0 - 0.0 - 0.0 + p_id: + - 1 + - 2 + - 3 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml index 17c05246e5..9a0da737bc 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml @@ -1,10 +1,15 @@ --- info: note: Wealth below wealth allowance leading to no deduction in Kinderzuschlag + precision: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,34 +26,26 @@ inputs: - 31 - 30 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 40 - - 11 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2005 - hh_id: - - 11 - - 11 - - 11 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 30 - - 31 - - 32 familie__p_id_elternteil_1: - -1 - -1 @@ -57,18 +54,14 @@ inputs: - -1 - -1 - 31 - vermögen: - - 4000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 11 + - 11 + - 11 jahr: - 2016 - 2016 @@ -97,6 +90,10 @@ inputs: - 644.0 - 0.0 - 0.0 + p_id: + - 30 + - 31 + - 32 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 4000.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml index 0ad24affc7..6d089bc33d 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml @@ -1,12 +1,16 @@ --- info: - note: >- - Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first + note: Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first month + precision: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -23,34 +27,26 @@ inputs: - 34 - 33 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 40 - - 11 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2005 - hh_id: - - 12 - - 12 - - 12 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 33 - - 34 - - 35 familie__p_id_elternteil_1: - -1 - -1 @@ -59,18 +55,14 @@ inputs: - -1 - -1 - 34 - vermögen: - - 17400.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 12 + - 12 + - 12 jahr: - 2016 - 2016 @@ -99,6 +91,10 @@ inputs: - 644.0 - 0.0 - 0.0 + p_id: + - 33 + - 34 + - 35 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -107,6 +103,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 17400.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml index fbdb2534e8..325a5ed4f3 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml @@ -1,10 +1,15 @@ --- info: note: Wealth significantly above wealth allowance leading to no claim + precision: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,34 +26,26 @@ inputs: - 37 - 36 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 40 - - 40 - - 11 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1976 - - 1976 - - 2005 - hh_id: - - 13 - - 13 - - 13 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 36 - - 37 - - 38 familie__p_id_elternteil_1: - -1 - -1 @@ -57,18 +54,14 @@ inputs: - -1 - -1 - 37 - vermögen: - - 25000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1976 + - 1976 + - 2005 + hh_id: + - 13 + - 13 + - 13 jahr: - 2016 - 2016 @@ -97,6 +90,10 @@ inputs: - 644.0 - 0.0 - 0.0 + p_id: + - 36 + - 37 + - 38 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 25000.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml index 761368040d..47c4353569 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 30 + - 2 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,34 +26,26 @@ inputs: - 19 - 18 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 30 - - 30 - - 2 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1986 - - 1986 - - 2014 - hh_id: - - 7 - - 7 - - 7 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 18 - - 19 - - 20 familie__p_id_elternteil_1: - -1 - -1 @@ -57,18 +54,14 @@ inputs: - -1 - -1 - 19 - vermögen: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 7 + - 7 + - 7 jahr: - 2016 - 2016 @@ -97,6 +90,10 @@ inputs: - 644.0 - 0.0 - 0.0 + p_id: + - 18 + - 19 + - 20 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml index 6e7954d342..065d0789a4 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml @@ -1,10 +1,16 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 38 + - 15 + - 13 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -25,41 +31,31 @@ inputs: - 23 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - alter: - - 40 - - 38 - - 15 - - 13 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1977 - - 1979 - - 2002 - - 2004 - hh_id: - - 9 - - 9 - - 9 - - 9 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1300.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false familie__kind: - false - false - true - true - p_id: - - 23 - - 24 - - 25 - - 26 familie__p_id_elternteil_1: - -1 - -1 @@ -70,21 +66,16 @@ inputs: - -1 - 24 - 24 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1300.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1977 + - 1979 + - 2002 + - 2004 + hh_id: + - 9 + - 9 + - 9 + - 9 jahr: - 2017 - 2017 @@ -120,6 +111,11 @@ inputs: - 0.0 - 0.0 - 0.0 + p_id: + - 23 + - 24 + - 25 + - 26 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -130,6 +126,11 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 800.0 - 800.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml index b82721bda1..af792f3880 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 28 + - 1 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,42 +21,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 28 - - 1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1991 - - 2018 - hh_id: - - 6 - - 6 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 16 - - 17 familie__p_id_elternteil_1: - -1 - 16 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1991 + - 2018 + hh_id: + - 6 + - 6 jahr: - 2019 - 2019 @@ -74,12 +69,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 719.0 - 0.0 + p_id: + - 16 + - 17 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 160.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 400.0 - 400.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml index e0bcfab516..63546db79a 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 38 + - 15 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,42 +21,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 38 - - 15 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1982 - - 2005 - hh_id: - - 8 - - 8 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 21 - - 22 familie__p_id_elternteil_1: - -1 - 21 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1982 + - 2005 + hh_id: + - 8 + - 8 jahr: - 2020 - 2020 @@ -74,12 +69,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 719.0 - 0.0 + p_id: + - 21 + - 22 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 400.0 - 400.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml index 91ead7390d..be51d86e5a 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 35 + - 33 + - 12 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -21,34 +26,26 @@ inputs: - 28 - 27 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 35 - - 33 - - 12 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1986 - - 1988 - - 2009 - hh_id: - - 10 - - 10 - - 10 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1600.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false familie__kind: - false - false - true - p_id: - - 27 - - 28 - - 29 familie__p_id_elternteil_1: - -1 - -1 @@ -57,18 +54,14 @@ inputs: - -1 - -1 - 28 - vermögen: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1600.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1986 + - 1988 + - 2009 + hh_id: + - 10 + - 10 + - 10 jahr: - 2021 - 2021 @@ -97,6 +90,10 @@ inputs: - 1200.0 - 0.0 - 0.0 + p_id: + - 27 + - 28 + - 29 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -105,6 +102,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 750.0 - 750.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml index 4891d06e8f..7e6b2ea877 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} provided: + alter: + - 43 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,42 +21,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 43 - - 11 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1980 - - 2012 - hh_id: - - 14 - - 14 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 39 - - 40 familie__p_id_elternteil_1: - -1 - 39 familie__p_id_elternteil_2: - -1 - 39 - vermögen: - - 5000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 14 + - 14 jahr: - 2023 - 2023 @@ -74,12 +69,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 1160.0 - 0.0 + p_id: + - 39 + - 40 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 160.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 5000.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml index 456ee24815..e4220f2cec 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Caution: Regression test for child income. Same as hh_id_14.yaml but with made up - child income, so the results are not based on any source. + note: 'Caution: Regression test for child income. Same as hh_id_14.yaml but with made up + child income, so the results are not based on any source.' + precision: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} provided: + alter: + - 38 + - 15 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,42 +22,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 38 - - 15 arbeitsstunden_w: - 40.0 - 2.0 - geburtsjahr: - - 1980 - - 2012 - hh_id: - - 17 - - 17 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 150.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 45 - - 46 familie__p_id_elternteil_1: - -1 - 45 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 5000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 150.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 17 + - 17 jahr: - 2023 - 2023 @@ -76,12 +70,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 1160.0 - 0.0 + p_id: + - 45 + - 46 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 160.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 5000.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml index 70ddf676d8..836ebee145 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth - exemptions (above freibetrag_vermögen_in_karenzzeit_bg). + note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (above + freibetrag_vermögen_in_karenzzeit_bg). + precision: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} provided: + alter: + - 43 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,42 +22,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 43 - - 11 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1980 - - 2012 - hh_id: - - 16 - - 16 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 43 - - 44 familie__p_id_elternteil_1: - -1 - 43 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 60000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 16 + - 16 jahr: - 2023 - 2023 @@ -76,12 +70,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 1160.0 - 0.0 + p_id: + - 43 + - 44 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 160.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 60000.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml index bc1806ce55..8e84a39d3e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml @@ -1,12 +1,15 @@ --- info: - note: >- - Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth - exemptions (still below freibetrag_vermögen_in_karenzzeit_bg). + note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (still + below freibetrag_vermögen_in_karenzzeit_bg). + precision: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} provided: + alter: + - 43 + - 11 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -19,42 +22,33 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 43 - - 11 arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1980 - - 2012 - hh_id: - - 15 - - 15 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 + - 0.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 41 - - 42 familie__p_id_elternteil_1: - -1 - 41 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 30000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 + geburtsjahr: + - 1980 + - 2012 + hh_id: + - 15 + - 15 jahr: - 2023 - 2023 @@ -76,12 +70,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 1160.0 - 0.0 + p_id: + - 41 + - 42 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 160.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 30000.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 700.0 - 700.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml index b08f21f70e..9dbe15b412 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: Made up. inputs: assumed: {} provided: + alter: + - 40 + - 10 + - 40 arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - 0.0 - 0.0 @@ -33,30 +38,22 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - true - - false - - false - alter: - - 40 - - 10 - - 40 arbeitsstunden_w: - 40.0 - 0.0 - 40.0 - hh_id: - - 18 - - 18 - - 18 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + - 1000.0 + familie__alleinerziehend: + - true + - false + - false familie__kind: - false - true - false - p_id: - - 49 - - 50 - - 51 familie__p_id_elternteil_1: - -1 - 49 @@ -65,14 +62,10 @@ inputs: - -1 - -1 - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - - 1000.0 + hh_id: + - 18 + - 18 + - 18 kindergeld__in_ausbildung: - false - false @@ -81,6 +74,10 @@ inputs: - -1 - 49 - -1 + p_id: + - 49 + - 50 + - 51 sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 @@ -97,6 +94,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml index 703802f3d6..5c41e9d48e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: Made up. inputs: assumed: {} provided: + alter: + - 40 + - 10 arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - 0.0 - 0.0 @@ -26,42 +30,36 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 40 - - 10 arbeitsstunden_w: - 40.0 - 0.0 - hh_id: - - 18 - - 18 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 47 - - 48 familie__p_id_elternteil_1: - -1 - 47 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 + hh_id: + - 18 + - 18 kindergeld__in_ausbildung: - false - false kindergeld__p_id_empfänger: - -1 - 47 + p_id: + - 47 + - 48 sozialversicherung__rente__altersrente__betrag_m: - 0.0 - 0.0 @@ -74,6 +72,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml index c4fe72a0dd..c071882f88 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -1,10 +1,17 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 33 + - 30 + - 12 + - 10 + - 2 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -26,48 +33,30 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - 9 - 8 - familie__alleinerziehend: - - false - - false - - false - - false - - false - alter: - - 33 - - 30 - - 12 - - 10 - - 2 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + - 0.0 + - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false familie__kind: - false - false - true - true - true - p_id: - - 8 - - 9 - - 10 - - 11 - - 12 familie__p_id_elternteil_1: - -1 - -1 @@ -80,18 +69,18 @@ inputs: - 9 - 9 - 9 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 jahr: - 2006 - 2006 @@ -134,6 +123,12 @@ inputs: - 0.0 - 0.0 - 0.0 + p_id: + - 8 + - 9 + - 10 + - 11 + - 12 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 @@ -146,6 +141,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 850.0 - 850.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml index e8c63885e5..319ec1b628 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 28 + - 1 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,39 +21,30 @@ inputs: arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - familie__alleinerziehend: - - true - - false - alter: - - 28 - - 1 arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1981 - - 2008 - hh_id: - - 3 - - 3 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 2000.0 + - 0.0 + familie__alleinerziehend: + - true + - false familie__kind: - false - true - p_id: - - 6 - - 7 familie__p_id_elternteil_1: - -1 - 6 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 jahr: - 2009 - 2009 @@ -71,12 +66,18 @@ inputs: kinderzuschlag__nettoeinkommen_eltern_m: - 719.0 - 0.0 + p_id: + - 6 + - 7 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohnen__bruttokaltmiete_m_hh: - 400.0 - 400.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml index bb6c73eab5..19d334aa8f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1045 - p_id: - - 1045 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1616.0142857142855 + hh_id: + - 1045 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1045 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 309.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml index 53289969fd..7d90d643a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1051 - p_id: - - 1051 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1625.1 + hh_id: + - 1051 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1051 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 347.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml index 87aaeb4434..05f14bee1c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1081 - p_id: - - 1081 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1645.2 + hh_id: + - 1081 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1081 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 321.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml index 4f17ffbd25..87289ff474 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1134 - p_id: - - 1134 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7339.585 + hh_id: + - 1134 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1134 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2511.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml index 04e792b857..8ec14ca225 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 121 - p_id: - - 121 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5890.408333333333 + hh_id: + - 121 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 121 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1879.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml index 43a8fa77f4..3251e519d2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1214 - p_id: - - 1214 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4583.1 + hh_id: + - 1214 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1214 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0091 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1388.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml index 5a1f737d93..1f8c03c8bc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1219 - p_id: - - 1219 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6027.814285714286 + hh_id: + - 1219 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1219 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1981.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml index d44b695faa..6544afd915 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1435 - p_id: - - 1435 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6083.808333333333 + hh_id: + - 1435 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1435 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1973.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml index 8d6856d5e7..1f8e2d057b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1462 - p_id: - - 1462 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4618.82 + hh_id: + - 1462 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1462 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1372.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml index 1382de0e34..2d4d996c63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1476 - p_id: - - 1476 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2957.9541666666664 + hh_id: + - 1476 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1476 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 754.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml index 7a05ed1c64..d87d6e31de 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1555 - p_id: - - 1555 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3159.12 + hh_id: + - 1555 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 1555 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 252.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml index 56bcc58927..d95f85a467 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1627 - p_id: - - 1627 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6069.3 + hh_id: + - 1627 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 1627 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1547.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml index c413bd59ed..12819050ea 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1793 - p_id: - - 1793 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5900.91 + hh_id: + - 1793 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1793 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0102 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1913.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml index 6b9a78f86b..8b7682969f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1796 - p_id: - - 1796 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7528.871666666667 + hh_id: + - 1796 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1796 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2587.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml index fdd69acf04..ba8f285aec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1915 - p_id: - - 1915 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6044.18 + hh_id: + - 1915 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1915 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1960.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml index 59f02bba67..f8a4e53b51 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1982 - p_id: - - 1982 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2966.4 + hh_id: + - 1982 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1982 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 756.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml index f400e2cfac..d5471afaae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2042 - p_id: - - 2042 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 77.52857142857142 + hh_id: + - 2042 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2042 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 8.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml index 3e31f12742..dd6abb749c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2174 - p_id: - - 2174 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1631.8508333333332 + hh_id: + - 2174 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2174 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 349.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml index e86f773e0f..0c0d6a93ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2224 - p_id: - - 2224 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4384.5 + hh_id: + - 2224 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2224 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1317.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml index adb182753d..334c4ad542 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2451 - p_id: - - 2451 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7532.46 + hh_id: + - 2451 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2451 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2601.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml index c69eaf1390..96260077cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2552 - p_id: - - 2552 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1575.0857142857142 + hh_id: + - 2552 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2552 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 293.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml index 4a63d34cb9..b35b47a040 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2593 - p_id: - - 2593 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6051.3 + hh_id: + - 2593 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2593 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0101 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1936.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml index eccad32b31..5a93b04400 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2601 - p_id: - - 2601 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 40.8 + hh_id: + - 2601 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 2601 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml index 7877ac0187..827f4ba7bc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2639 - p_id: - - 2639 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3018.7714285714283 + hh_id: + - 2639 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2639 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 814.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml index fb8dd575ee..6cfa2aaf5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2726 - p_id: - - 2726 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7493.541666666667 + hh_id: + - 2726 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2726 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2559.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml index cc44422bd3..9bcf81a7c6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2732 - p_id: - - 2732 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4471.500000000001 + hh_id: + - 2732 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2732 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1347.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml index 052f82df7f..e309d87278 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2861 - p_id: - - 2861 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4617.042857142857 + hh_id: + - 2861 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2861 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1365.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml index 084a8e72e9..1b9da18e55 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2924 - p_id: - - 2924 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1484.7 + hh_id: + - 2924 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2924 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 294.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml index e8e759e04b..e37a809d58 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 400 - p_id: - - 400 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4425.514285714285 + hh_id: + - 400 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 400 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0091 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1326.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml index f93d6b8b93..39873baaf0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 470 - p_id: - - 470 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 45.342857142857135 + hh_id: + - 470 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 470 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml index a32ee7882d..80d04a9e50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 561 - p_id: - - 561 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4493.36 + hh_id: + - 561 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 561 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1357.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml index 47caa02c55..7aaf7e58e1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 583 - p_id: - - 583 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7448.75 + hh_id: + - 583 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 583 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2553.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml index b9fb094bd6..59079d0abf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 72 - p_id: - - 72 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7543.5 + hh_id: + - 72 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 72 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2601.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml index 21415667cd..ef42732dbf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 736 - p_id: - - 736 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1612.88 + hh_id: + - 736 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 736 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 343.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml index bba671f463..5d1718c2cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 76 - p_id: - - 76 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2924.1 + hh_id: + - 76 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 4 + p_id: + - 76 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 435.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml index 2744a1b2c6..cfc96abf88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 765 - p_id: - - 765 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6033.59 + hh_id: + - 765 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 765 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0083 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1989.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml index f90da96b88..cfd88f5fd4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 769 - p_id: - - 769 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4492.9325 + hh_id: + - 769 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 769 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1316.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml index 3330c7cb9d..010254ea6b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 786 - p_id: - - 786 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 241.62857142857143 + hh_id: + - 786 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 786 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 27.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml index b6b7b0e864..82396c305c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 790 - p_id: - - 790 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5937.599999999999 + hh_id: + - 790 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 790 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1926.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml index e25929c45d..a74fda2ed5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 802 - p_id: - - 802 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4625.3275 + hh_id: + - 802 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 802 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1406.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml index 5ea891a3e1..74d2fe44c0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 830 - p_id: - - 830 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1478.27 + hh_id: + - 830 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 830 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 291.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml index cd8274258c..634b2600a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 856 - p_id: - - 856 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1520.4 + hh_id: + - 856 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 856 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 271.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml index 351f07e1b9..28de469576 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 857 - p_id: - - 857 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 97.2 + hh_id: + - 857 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 857 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml index 03f2e3f03e..2f88b8d88e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 891 - p_id: - - 891 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1595.7058333333334 + hh_id: + - 891 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 891 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 337.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml index cd787f149b..70ee9c1347 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 925 - p_id: - - 925 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1515.42 + hh_id: + - 925 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 925 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0102 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 270.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml index 7d068f788b..ec14a8515f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1000 - p_id: - - 1000 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4483.499999999999 + hh_id: + - 1000 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1000 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1336.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml index f625231ee2..adc92fa4ce 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1086 - p_id: - - 1086 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 68.7 + hh_id: + - 1086 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1086 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 7.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml index b0e29afbcb..b23b43ae70 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1115 - p_id: - - 1115 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1493.4658333333334 + hh_id: + - 1115 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1115 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 251.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml index fd73cdc894..90b9768591 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1133 - p_id: - - 1133 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6057.2425 + hh_id: + - 1133 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1133 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1955.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml index 8efbfa02a3..3d8eb5c732 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1175 - p_id: - - 1175 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1530.66 + hh_id: + - 1175 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1175 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 266.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml index 5efaabb08e..6cf11de759 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 123 - p_id: - - 123 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5882.06 + hh_id: + - 123 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 123 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1856.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml index 67df046330..6bb485d882 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1281 - p_id: - - 1281 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6033.557142857142 + hh_id: + - 1281 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1281 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1931.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml index 1081e4338f..579902e9a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1335 - p_id: - - 1335 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1575.08 + hh_id: + - 1335 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1335 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 284.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml index 885904485d..6f40e6f238 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1367 - p_id: - - 1367 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 217.17 + hh_id: + - 1367 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1367 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 24.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml index 53e4c39cb6..5b58f3bc3c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1532 - p_id: - - 1532 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6006.257142857144 + hh_id: + - 1532 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1532 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1915.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml index 8f333473be..e684a1a485 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1700 - p_id: - - 1700 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1596.27 + hh_id: + - 1700 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1700 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 292.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml index 2871108bad..5f49ca5c8c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1705 - p_id: - - 1705 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4566.9925 + hh_id: + - 1705 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1705 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1368.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml index a4e37ae059..7b631a5700 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1822 - p_id: - - 1822 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1468.05 + hh_id: + - 1822 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1822 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 278.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml index 19ef0e1278..4da9a1904b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1958 - p_id: - - 1958 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3028.37 + hh_id: + - 1958 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1958 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 807.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml index ef9fad1860..2936b53e37 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2065 - p_id: - - 2065 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4603.77 + hh_id: + - 2065 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2065 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1377.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml index a890795d83..b0e12f171f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2151 - p_id: - - 2151 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1664.7 + hh_id: + - 2151 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2151 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 355.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml index 9fa297d152..fb6a185e81 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2220 - p_id: - - 2220 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1649.1 + hh_id: + - 2220 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2220 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 313.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml index 82c11515b2..e63b031abe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2289 - p_id: - - 2289 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5871.3 + hh_id: + - 2289 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2289 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1849.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml index a8ac5a271c..7e2b8c945c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2358 - p_id: - - 2358 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6011.990000000001 + hh_id: + - 2358 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2358 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1901.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml index d9d668a24a..64f464de6e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2396 - p_id: - - 2396 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4525.457142857143 + hh_id: + - 2396 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2396 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1353.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml index a16efd094b..56dc94599a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2645 - p_id: - - 2645 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1494.6 + hh_id: + - 2645 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2645 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 288.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml index 7a7bc30c1d..2e00e764b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2693 - p_id: - - 2693 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1560.194166666667 + hh_id: + - 2693 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2693 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 278.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml index ad8a7b498d..cd6896dc2f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2724 - p_id: - - 2724 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 99.36 + hh_id: + - 2724 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2724 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml index 596905b412..5154b4a7ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2744 - p_id: - - 2744 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6066.561666666667 + hh_id: + - 2744 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2744 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1977.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml index 4472b5230a..cfc59f88e2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2932 - p_id: - - 2932 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4521.870833333333 + hh_id: + - 2932 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2932 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1312.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml index 9e37ae5821..7a8fb7b13b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2961 - p_id: - - 2961 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4451.304166666667 + hh_id: + - 2961 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2961 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0115 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1284.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml index 481a13781c..54b4f74f6c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 307 - p_id: - - 307 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 206.74285714285716 + hh_id: + - 307 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 307 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 23.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml index 21fe0b921a..d4e22df05b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 435 - p_id: - - 435 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5911.495 + hh_id: + - 435 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 435 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1866.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml index 95d8dc76fe..460c4c06ee 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 444 - p_id: - - 444 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3126.98 + hh_id: + - 444 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 444 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 809.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml index 3dbcb7239e..74584235e7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 583 - p_id: - - 583 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5930.696666666667 + hh_id: + - 583 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 583 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1918.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml index 605bf0bf7d..8b46cac2a4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 699 - p_id: - - 699 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4523.385 + hh_id: + - 699 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 699 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1354.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml index 8dce83450b..8cdbbd39c8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 765 - p_id: - - 765 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7536.900000000001 + hh_id: + - 765 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 765 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2542.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml index 23a0a0386a..5c1300d4ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 779 - p_id: - - 779 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3146.6825000000003 + hh_id: + - 779 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 779 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 809.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml index 89c37858f3..e5a491844f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 807 - p_id: - - 807 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7434.730833333334 + hh_id: + - 807 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 807 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2550.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml index c96e4187af..2c671d348d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 821 - p_id: - - 821 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3143.8714285714286 + hh_id: + - 821 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 821 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 808.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml index aa2de687ee..844f628c5f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 898 - p_id: - - 898 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1657.8 + hh_id: + - 898 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 898 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 353.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml index 372cc881b1..bdfa2fb636 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 9 - p_id: - - 9 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5947.886666666666 + hh_id: + - 9 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 9 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1875.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml index 2d0701b3c5..a4085b95a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 950 - p_id: - - 950 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 69.9 + hh_id: + - 950 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 950 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml index 965296ff2b..b16b37e9d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 965 - p_id: - - 965 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4586.7 + hh_id: + - 965 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 965 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1376.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml index 0480f1bf61..a12430a3fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 968 - p_id: - - 968 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4500.0 + hh_id: + - 968 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 968 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1303.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml index 7c18d5799d..8adb667fc5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1019 - p_id: - - 1019 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4512.942857142857 + hh_id: + - 1019 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1019 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1324.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml index 557101d77b..b1a15b2c0f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1088 - p_id: - - 1088 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1502.7 + hh_id: + - 1088 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1088 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 285.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml index 58de98ce42..3ad448a51a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1134 - p_id: - - 1134 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 168.74 + hh_id: + - 1134 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1134 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0096 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 19.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml index 57fe7b979c..e96668ae25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1164 - p_id: - - 1164 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4541.228571428571 + hh_id: + - 1164 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1164 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1339.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml index 9b24c4a14b..434efdfdf4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1279 - p_id: - - 1279 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6067.799999999999 + hh_id: + - 1279 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1279 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1906.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml index 7eb7b72e79..f35310cdbc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 146 - p_id: - - 146 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2943.71 + hh_id: + - 146 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 146 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0077 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 734.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml index 9957a42e07..22cb66c83d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1503 - p_id: - - 1503 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2926.5857142857144 + hh_id: + - 1503 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1503 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 768.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml index 73535db3cd..a8ef34748c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 151 - p_id: - - 151 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5880.86 + hh_id: + - 151 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 151 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1865.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml index 32d87d71e3..da21064e76 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1532 - p_id: - - 1532 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6083.400000000001 + hh_id: + - 1532 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1532 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1908.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml index 7a613654cb..fd8cbaf045 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1549 - p_id: - - 1549 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1582.96 + hh_id: + - 1549 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 1549 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml index 6dca57111f..3141bd31d5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1615 - p_id: - - 1615 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3150.6 + hh_id: + - 1615 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1615 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 844.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml index 4390747010..4e5d65d292 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1705 - p_id: - - 1705 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7352.785 + hh_id: + - 1705 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1705 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2433.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml index 94964730c3..6fb5099dc6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1788 - p_id: - - 1788 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6034.5 + hh_id: + - 1788 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1788 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1898.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml index 7e98da24ee..cfaf28ab71 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1841 - p_id: - - 1841 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3046.2000000000003 + hh_id: + - 1841 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1841 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 797.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml index bff10006b0..ca1fca46aa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1866 - p_id: - - 1866 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7458.8425 + hh_id: + - 1866 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1866 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2515.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml index 989e94288c..096980a6aa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1878 - p_id: - - 1878 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 170.51666666666668 + hh_id: + - 1878 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1878 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 7.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml index c176b0ce85..ff199fc779 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1923 - p_id: - - 1923 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6000.728571428572 + hh_id: + - 1923 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1923 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1923.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml index 2981cdb6f6..31448ce142 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1945 - p_id: - - 1945 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5930.400000000001 + hh_id: + - 1945 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1945 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1900.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml index 98da3ce4df..87bba2638e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2005 - p_id: - - 2005 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 127.94 + hh_id: + - 2005 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2005 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 14.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml index 8b607928c8..f6f4be7852 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2151 - p_id: - - 2151 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 79.07142857142857 + hh_id: + - 2151 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2151 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 9.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml index 26c156438c..f187fe364b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2177 - p_id: - - 2177 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5933.099999999999 + hh_id: + - 2177 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2177 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1885.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml index 4d12079dd9..00e47f17fa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2226 - p_id: - - 2226 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1553.5424999999998 + hh_id: + - 2226 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2226 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.015 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 269.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml index caa11d3125..bba229e067 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2293 - p_id: - - 2293 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3013.3058333333333 + hh_id: + - 2293 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2293 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 790.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml index 85743686f4..ff1cc69584 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2512 - p_id: - - 2512 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1513.5 + hh_id: + - 2512 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2512 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 289.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml index 30a99e45b3..b2637bfb44 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 266 - p_id: - - 266 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5958.49 + hh_id: + - 266 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 266 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0144 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1852.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml index 0ea8046909..6a7a6d2580 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2677 - p_id: - - 2677 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5940.009999999999 + hh_id: + - 2677 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2677 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1860.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml index b0acb46c00..93c2c29d5d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2729 - p_id: - - 2729 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6000.06 + hh_id: + - 2729 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2729 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1870.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml index 3e5f865474..15d0fec573 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2881 - p_id: - - 2881 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7491.471428571429 + hh_id: + - 2881 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2881 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2554.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml index d04002fc74..6a28b01090 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2918 - p_id: - - 2918 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 247.2 + hh_id: + - 2918 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2918 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 27.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml index 7914757a9e..ea60dc790a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2934 - p_id: - - 2934 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7380.342857142857 + hh_id: + - 2934 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2934 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2444.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml index f58a5e0aba..b5d2e98fcc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2956 - p_id: - - 2956 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7320.214285714285 + hh_id: + - 2956 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2956 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2457.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml index 14229d5492..b2c81bb0b4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2974 - p_id: - - 2974 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 106.8 + hh_id: + - 2974 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2974 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml index b315c2ae5a..93b125e2cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2991 - p_id: - - 2991 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7449.2825 + hh_id: + - 2991 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2991 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2487.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml index 56986f1e03..d673581baf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 30 - p_id: - - 30 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4555.81 + hh_id: + - 30 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 30 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1343.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml index 3fd7498476..c342e07c89 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 416 - p_id: - - 416 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1624.763333333333 + hh_id: + - 416 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 416 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 333.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml index 7499a11d9c..ceca43b241 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 455 - p_id: - - 455 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7401.342857142857 + hh_id: + - 455 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 455 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2458.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml index 2b611c7265..c450103bfb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 496 - p_id: - - 496 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1526.8 + hh_id: + - 496 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 496 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 294.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml index a3a86d4c0a..7e5149a2b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 506 - p_id: - - 506 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7485.599999999999 + hh_id: + - 506 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 506 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1446.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml index c0906ff229..5f36d2762c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 528 - p_id: - - 528 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1582.72 + hh_id: + - 528 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 528 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 316.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml index 52cb5af368..d5b0d39355 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 568 - p_id: - - 568 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 52.25 + hh_id: + - 568 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 568 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 5.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml index 3464aaf6c2..ba18aea2f6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 575 - p_id: - - 575 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2989.045 + hh_id: + - 575 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 575 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 785.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml index 9cd2afe883..f031b173a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 588 - p_id: - - 588 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5868.3 + hh_id: + - 588 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 588 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1825.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml index e63ee93fb1..cfdbd9f042 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 659 - p_id: - - 659 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4579.8 + hh_id: + - 659 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 659 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1351.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml index ac8a445eed..499258cf80 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 743 - p_id: - - 743 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4563.1475 + hh_id: + - 743 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 743 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1344.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml index a5bbfa80b7..7bbc793115 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 881 - p_id: - - 881 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3096.6 + hh_id: + - 881 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 881 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 821.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml index 9e1f54f863..9e00320627 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 910 - p_id: - - 910 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2987.71 + hh_id: + - 910 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 910 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 783.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml index 47f45f2cea..f2d8ec1b3a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 933 - p_id: - - 933 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1647.428571428571 + hh_id: + - 933 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 933 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 306.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml index e3037ae611..900590d699 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 996 - p_id: - - 996 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 93.865 + hh_id: + - 996 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 996 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 10.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml index 4532f578d8..060826f7db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1159 - p_id: - - 1159 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 163.5 + hh_id: + - 1159 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1159 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 6.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml index 23451bf749..c3779f5fcf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1213 - p_id: - - 1213 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3146.2450000000003 + hh_id: + - 1213 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1213 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 799.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml index f7ed9b7cbd..098d2b3a40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 130 - p_id: - - 130 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4388.33 + hh_id: + - 130 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 130 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1233.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml index 27b4976759..50b97232d5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1314 - p_id: - - 1314 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 182.92583333333332 + hh_id: + - 1314 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1314 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 8.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml index 49e5abed0c..1f7d901ee2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 152 - p_id: - - 152 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7371.771428571428 + hh_id: + - 152 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 152 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2481.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml index 0ae7fc4012..e305b42afb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1632 - p_id: - - 1632 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4440.64 + hh_id: + - 1632 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1632 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1252.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml index edb0072c68..542f4dfab3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1727 - p_id: - - 1727 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4541.09 + hh_id: + - 1727 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1727 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1323.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml index 86c8cfc6d7..be553ee0f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 174 - p_id: - - 174 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7360.929166666666 + hh_id: + - 174 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 174 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2423.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml index 2f08ffb99c..a4f8b0b471 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1786 - p_id: - - 1786 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6056.13 + hh_id: + - 1786 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1786 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1887.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml index f435a79bd1..2c0e888b6a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1802 - p_id: - - 1802 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1687.3 + hh_id: + - 1802 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1802 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 314.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml index 7baf3de8b6..bd10b3d0fb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 184 - p_id: - - 184 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6010.8 + hh_id: + - 184 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 184 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1899.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml index 059d361422..cfedb7e155 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1935 - p_id: - - 1935 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4563.08 + hh_id: + - 1935 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1935 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1304.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml index 38fa065a7a..ac83cbd300 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2098 - p_id: - - 2098 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1597.79 + hh_id: + - 2098 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2098 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 315.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml index 8cf2c71d0b..d8f0bdd885 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2156 - p_id: - - 2156 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2946.0857142857144 + hh_id: + - 2156 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2156 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 730.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml index 73fd905b52..dd9e74cdb7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2186 - p_id: - - 2186 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7371.23 + hh_id: + - 2186 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2186 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2414.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml index 31300b695e..b6e1751a27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2395 - p_id: - - 2395 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2954.142857142857 + hh_id: + - 2395 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2395 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 766.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml index 96ce9f4c24..cbaee9ee79 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2491 - p_id: - - 2491 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.8425 + hh_id: + - 2491 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2491 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 743.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml index c5033f3dee..1b1bb8b032 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2575 - p_id: - - 2575 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7519.978333333333 + hh_id: + - 2575 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2575 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2489.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml index ecd4467305..dccbcb061d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2649 - p_id: - - 2649 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1662.4191666666666 + hh_id: + - 2649 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2649 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 305.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml index d732cc3389..ee34b29628 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2720 - p_id: - - 2720 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4467.29 + hh_id: + - 2720 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2720 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1252.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml index 2b35d1cbfc..8316cc22b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2828 - p_id: - - 2828 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 105.8142857142857 + hh_id: + - 2828 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2828 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 12.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml index 38a6307323..90e57ca7f6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2904 - p_id: - - 2904 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7479.557142857143 + hh_id: + - 2904 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 2904 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2025.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml index f649d32b9f..b6976d7cd0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2999 - p_id: - - 2999 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5995.8 + hh_id: + - 2999 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2999 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1888.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml index 7c9ab8384c..8d7e2cf137 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 315 - p_id: - - 315 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7479.900000000001 + hh_id: + - 315 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 315 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2522.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml index c97aa6f4be..a17bbb89e8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 375 - p_id: - - 375 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3004.2000000000003 + hh_id: + - 375 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 375 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 786.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml index bd9575b0e9..9e666f1a2c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 417 - p_id: - - 417 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1521.3100000000002 + hh_id: + - 417 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 417 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 249.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml index 14149c61fb..22609c1fad 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 559 - p_id: - - 559 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 72.9 + hh_id: + - 559 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 559 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0128 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml index e1e5d5e67e..3ded7451a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 624 - p_id: - - 624 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5990.524166666666 + hh_id: + - 624 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 624 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1851.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml index 4b9599c372..6370c4b6f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 791 - p_id: - - 791 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1689.428571428571 + hh_id: + - 791 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 791 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 351.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml index 427ca70006..cf281473d0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 796 - p_id: - - 796 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7317.895 + hh_id: + - 796 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 796 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2451.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml index 52ebb3c7fa..21755dfaa3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 81 - p_id: - - 81 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 113.93 + hh_id: + - 81 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 81 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 12.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml index c622cd9283..411f078d6d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 835 - p_id: - - 835 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4523.12 + hh_id: + - 835 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 835 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1322.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml index be49e9cf0e..8a66cb84e3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 851 - p_id: - - 851 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5955.24 + hh_id: + - 851 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 851 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1886.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml index 2c9deade56..d48fd9bfb1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 947 - p_id: - - 947 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7437.599999999999 + hh_id: + - 947 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 947 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2493.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml index bc7d4f3435..a5b353f6e0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 959 - p_id: - - 959 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4503.0 + hh_id: + - 959 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 959 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1313.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml index 221f828f8f..2a65d2b4d5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 98 - p_id: - - 98 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7488.9325 + hh_id: + - 98 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 98 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2478.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml index ab84f9f75b..0ffe6d2cb8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1014 - p_id: - - 1014 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1643.1428571428569 + hh_id: + - 1014 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1014 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 326.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml index 55644a2c30..b0ec857913 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1093 - p_id: - - 1093 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7512.3 + hh_id: + - 1093 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1093 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2505.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml index 03331e31ec..4a14bb7af2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1098 - p_id: - - 1098 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5838.599999999999 + hh_id: + - 1098 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1098 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1781.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml index e76cccbf12..d4352ebd55 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 111 - p_id: - - 111 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7376.400000000001 + hh_id: + - 111 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 111 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2452.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml index c1ca366ab0..4a60aec0cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1180 - p_id: - - 1180 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7517.742857142857 + hh_id: + - 1180 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1180 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2497.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml index 2186cc8ba4..264655e0cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1210 - p_id: - - 1210 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1682.571428571429 + hh_id: + - 1210 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 1210 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml index 54ef1723dd..bb18b2aceb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1354 - p_id: - - 1354 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 34.49333333333333 + hh_id: + - 1354 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1354 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml index 441cb9f182..c325491511 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1629 - p_id: - - 1629 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1656.5716666666667 + hh_id: + - 1629 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1629 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 331.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml index 3c79008b07..c9d039cf18 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1695 - p_id: - - 1695 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2921.442857142857 + hh_id: + - 1695 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1695 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 747.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml index ce161a6749..093da1e8df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1709 - p_id: - - 1709 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5849.6033333333335 + hh_id: + - 1709 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1709 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1825.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml index 546164ca2f..41891ec0e5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 180 - p_id: - - 180 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5892.3 + hh_id: + - 180 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 180 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1846.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml index c767d721ba..e0d1731a0c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1825 - p_id: - - 1825 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5998.2 + hh_id: + - 1825 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1825 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1888.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml index fff1b8d8f4..7bc70d5aa7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1846 - p_id: - - 1846 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3072.5466666666666 + hh_id: + - 1846 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1846 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 799.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml index c2c59f4b89..e201e706dc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2025 - p_id: - - 2025 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 242.2225 + hh_id: + - 2025 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2025 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 15.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml index 3d95a60173..173331d44c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2070 - p_id: - - 2070 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4625.142857142858 + hh_id: + - 2070 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2070 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1311.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml index adf4de6091..e2f348ef06 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2159 - p_id: - - 2159 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1505.9208333333331 + hh_id: + - 2159 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2159 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0083 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 236.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml index 58908bb482..013b048e60 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2204 - p_id: - - 2204 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6060.8425 + hh_id: + - 2204 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2204 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1879.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml index 32e753cf25..aed1e78220 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2375 - p_id: - - 2375 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7363.5 + hh_id: + - 2375 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2375 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2432.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml index 16064f384a..a99ad17fc0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2393 - p_id: - - 2393 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3108.3 + hh_id: + - 2393 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2393 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 774.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml index b1e7eb64c4..14257d3183 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2469 - p_id: - - 2469 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1546.38 + hh_id: + - 2469 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2469 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0072 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 252.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml index d4649de913..6954a20fa5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2516 - p_id: - - 2516 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2922.6891666666666 + hh_id: + - 2516 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2516 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 707.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml index 33356a51a1..3b3a8782a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 265 - p_id: - - 265 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1523.7 + hh_id: + - 265 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 265 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 279.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml index 832bdae015..24f0d96304 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2708 - p_id: - - 2708 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 130.3714285714286 + hh_id: + - 2708 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 2708 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml index 9ce1930f4f..0d18b0c967 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2729 - p_id: - - 2729 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3164.2 + hh_id: + - 2729 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2729 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 790.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml index a8931b5cd7..2837180fb9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2736 - p_id: - - 2736 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3111.6 + hh_id: + - 2736 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2736 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.015 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 811.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml index 717419c5d2..73f20f76df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2760 - p_id: - - 2760 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1501.4142857142854 + hh_id: + - 2760 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2760 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 271.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml index 4cd49cb703..144f596e2d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2818 - p_id: - - 2818 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1467.9 + hh_id: + - 2818 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2818 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0127 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 258.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml index 66f5d80e95..f6280a7de6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 286 - p_id: - - 286 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 76.37142857142858 + hh_id: + - 286 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 286 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml index 04751ebf24..824769c72f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2900 - p_id: - - 2900 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 123.56 + hh_id: + - 2900 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2900 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml index bf042bf85f..ee09504919 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2904 - p_id: - - 2904 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7360.12 + hh_id: + - 2904 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2904 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2393.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml index 937d75cb7e..165524a946 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2942 - p_id: - - 2942 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1558.1999999999998 + hh_id: + - 2942 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2942 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 293.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml index 35fbea6074..7d9d428d27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 317 - p_id: - - 317 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5961.814285714285 + hh_id: + - 317 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 317 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1827.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml index 7cdb4bf14b..05bc859bd6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 331 - p_id: - - 331 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5884.19 + hh_id: + - 331 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 331 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1805.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml index ef7fcf73bc..da7aa4ca50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 396 - p_id: - - 396 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7315.6475 + hh_id: + - 396 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 396 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2381.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml index 33c0adcf83..03b27b9668 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 420 - p_id: - - 420 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 100.94166666666666 + hh_id: + - 420 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 420 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 11.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml index 7a809a5c77..61f38cd3c0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 605 - p_id: - - 605 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1647.86 + hh_id: + - 605 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 605 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 328.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml index a9132a81db..e846cc70d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 646 - p_id: - - 646 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4621.500000000001 + hh_id: + - 646 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 646 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1316.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml index a9d123a4ec..dcb500ab8d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 65 - p_id: - - 65 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3056.7000000000003 + hh_id: + - 65 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 65 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 760.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml index 29e577ba4a..1700a595f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 664 - p_id: - - 664 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 113.06 + hh_id: + - 664 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 664 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml index ebcfe8e58f..9245d576da 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 698 - p_id: - - 698 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 193.36666666666667 + hh_id: + - 698 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 698 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 9.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml index 620519c981..fd59276d69 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 710 - p_id: - - 710 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5892.900000000001 + hh_id: + - 710 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 710 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1811.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml index dcdf0035e6..d754cab7a4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 715 - p_id: - - 715 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1593.3 + hh_id: + - 715 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 715 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 306.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml index 16247011be..1f4ba1838e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 809 - p_id: - - 809 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4459.2 + hh_id: + - 809 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 809 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1293.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml index 64d952ea83..5eb8cd1870 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 816 - p_id: - - 816 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7359.214285714286 + hh_id: + - 816 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 816 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2393.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml index 15fe9fb509..79c007fb6b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 832 - p_id: - - 832 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1484.9571428571428 + hh_id: + - 832 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 832 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 264.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml index c0bedb480f..0e01737297 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 879 - p_id: - - 879 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4560.0633333333335 + hh_id: + - 879 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 879 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1291.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml index a678ad22ee..be4e2dff13 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 882 - p_id: - - 882 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2940.3 + hh_id: + - 882 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 882 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 753.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml index fa07b97445..80a1fee7bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 949 - p_id: - - 949 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 87.30000000000001 + hh_id: + - 949 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 949 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 9.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml index 6cca79daf6..7f9455e757 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 978 - p_id: - - 978 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5982.0 + hh_id: + - 978 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 978 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1874.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml index f53c88c991..c0a9b5585d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1015 - p_id: - - 1015 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1477.2325 + hh_id: + - 1015 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1015 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0101 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 253.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml index a43b78e8b7..d04a288104 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1096 - p_id: - - 1096 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5872.39 + hh_id: + - 1096 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1096 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1780.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml index 8ca0e8299c..1e96b0d337 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1118 - p_id: - - 1118 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7334.400000000001 + hh_id: + - 1118 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1118 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2365.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml index f49a2cd027..a27315c25b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1273 - p_id: - - 1273 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7337.276666666668 + hh_id: + - 1273 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1273 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2397.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml index b6b0ae733b..b95bb2e862 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 13 - p_id: - - 13 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7524.431666666666 + hh_id: + - 13 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 13 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0121 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2436.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml index 6e8b2e8131..b71a4aed45 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1310 - p_id: - - 1310 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 58.68 + hh_id: + - 1310 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1310 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 6.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml index 13ea2cbb2d..a7b7034fd6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1378 - p_id: - - 1378 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7411.5 + hh_id: + - 1378 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1378 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2429.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml index eb2eb6045f..85aa8911c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1417 - p_id: - - 1417 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4439.8133333333335 + hh_id: + - 1417 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1417 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1229.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml index 1aa55b0c11..532cc9377a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1468 - p_id: - - 1468 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 83.99999999999999 + hh_id: + - 1468 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1468 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 9.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml index 81f1a0b9ac..83af46b341 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 160 - p_id: - - 160 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1657.285714285714 + hh_id: + - 160 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 160 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 323.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml index 362a764631..42a08dc14d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 161 - p_id: - - 161 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7321.994166666666 + hh_id: + - 161 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 161 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2357.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml index 7f3b7ea4a1..dd21f68f2f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1705 - p_id: - - 1705 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7393.2 + hh_id: + - 1705 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1705 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2441.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml index 20e27e4f93..7356646f9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1767 - p_id: - - 1767 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1706.4583333333333 + hh_id: + - 1767 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1767 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 342.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml index ece9bdf547..5dd130ddde 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1775 - p_id: - - 1775 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4402.885714285714 + hh_id: + - 1775 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1775 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1248.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml index 39e51b5025..e3beab9169 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1788 - p_id: - - 1788 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4415.733333333334 + hh_id: + - 1788 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1788 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1223.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml index c995f0f6c4..6229a8ec45 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1790 - p_id: - - 1790 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1660.4571428571428 + hh_id: + - 1790 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1790 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 324.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml index e03632ac33..632d9b4481 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1928 - p_id: - - 1928 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4515.385714285714 + hh_id: + - 1928 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1928 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1299.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml index 6d0f633816..a65d3f0a26 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2106 - p_id: - - 2106 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7439.99 + hh_id: + - 2106 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2106 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2452.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml index eea891bf7f..a318bf8439 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2182 - p_id: - - 2182 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 32.142857142857146 + hh_id: + - 2182 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2182 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml index 41865ad0b4..750bb09688 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2184 - p_id: - - 2184 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3118.816666666667 + hh_id: + - 2184 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2184 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 804.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml index df5aab6849..07b26dd65a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2230 - p_id: - - 2230 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5944.242857142857 + hh_id: + - 2230 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 2230 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1351.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml index 0a188c42ac..3573c052f3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2320 - p_id: - - 2320 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1683.9 + hh_id: + - 2320 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2320 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 297.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml index a0a19bf646..2ffce48b77 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2389 - p_id: - - 2389 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 107.4 + hh_id: + - 2389 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2389 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 12.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml index 6bc39ba9cf..1b975950d2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2439 - p_id: - - 2439 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7502.544166666667 + hh_id: + - 2439 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2439 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2487.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml index 9e079474a4..58a030dae3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2527 - p_id: - - 2527 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5989.17 + hh_id: + - 2527 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2527 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1864.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml index 79efe26e9c..082b4f3c04 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2562 - p_id: - - 2562 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5884.177500000001 + hh_id: + - 2562 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2562 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1819.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml index 32870b4852..2ba13d25d3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2587 - p_id: - - 2587 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7518.0 + hh_id: + - 2587 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2587 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2468.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml index 4903508eb7..a78f9f38f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 266 - p_id: - - 266 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1472.0142857142855 + hh_id: + - 266 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 266 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 215.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml index 379bf2b2c7..0a167272d9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2888 - p_id: - - 2888 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5947.5 + hh_id: + - 2888 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2888 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1808.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml index f74153b323..407fc84bf1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2898 - p_id: - - 2898 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1484.35 + hh_id: + - 2898 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2898 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 219.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml index e6c3793447..c7cfaf0f88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2920 - p_id: - - 2920 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5943.534166666667 + hh_id: + - 2920 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2920 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1839.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml index 5e867221cb..54ae887995 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2953 - p_id: - - 2953 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5910.599999999999 + hh_id: + - 2953 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2953 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1828.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml index 7bac24fa2d..fefe673b0b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2998 - p_id: - - 2998 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7359.0 + hh_id: + - 2998 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2998 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2411.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml index d287c469db..23b492b665 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 367 - p_id: - - 367 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4459.240833333333 + hh_id: + - 367 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 367 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1232.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml index cfcedea54d..66a37c52ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 400 - p_id: - - 400 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3063.0 + hh_id: + - 400 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 400 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 784.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml index b3d6ee72fd..da68416e2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 409 - p_id: - - 409 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7384.743333333333 + hh_id: + - 409 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 409 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2428.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml index 18a711e638..4594537a06 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 481 - p_id: - - 481 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1495.1033333333337 + hh_id: + - 481 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 481 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 260.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml index 150dc5a41b..17c7c46fb0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 513 - p_id: - - 513 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4554.2716666666665 + hh_id: + - 513 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 513 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1271.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml index 3f30f47153..832aa0d1aa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 630 - p_id: - - 630 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1612.8033333333333 + hh_id: + - 630 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 630 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 306.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml index 912b8a2703..1b51a98a90 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 648 - p_id: - - 648 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3075.685714285714 + hh_id: + - 648 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 648 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 752.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml index 0230f0121c..41cafa0d33 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 70 - p_id: - - 70 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7321.5 + hh_id: + - 70 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 70 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0127 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2391.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml index b80130eb75..9d3d980a0d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 798 - p_id: - - 798 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1664.1 + hh_id: + - 798 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 798 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 325.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml index 39aaf96e60..7b15c4ae7a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 835 - p_id: - - 835 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5888.61 + hh_id: + - 835 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 835 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1782.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml index 38487faf7d..2d24a95d63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 901 - p_id: - - 901 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4541.1 + hh_id: + - 901 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 901 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1302.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml index 2db24909c9..a554fa50d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 926 - p_id: - - 926 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 86.7 + hh_id: + - 926 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 926 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml index 77a37f43f8..cd051e8b67 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 949 - p_id: - - 949 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4446.9375 + hh_id: + - 949 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 949 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1234.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml index f781ab4a84..5d855d8842 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 111 - p_id: - - 111 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2939.78 + hh_id: + - 111 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 111 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 696.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml index dffc5d0020..9d749549fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1186 - p_id: - - 1186 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5956.41 + hh_id: + - 1186 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1186 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1792.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml index 109c2618f9..f7dff99952 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1204 - p_id: - - 1204 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7384.15 + hh_id: + - 1204 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1204 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2360.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml index eb85658b76..75443cf529 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1237 - p_id: - - 1237 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4455.695833333333 + hh_id: + - 1237 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1237 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1226.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml index b8fa9bab8d..fef05a4f27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1255 - p_id: - - 1255 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6082.799999999999 + hh_id: + - 1255 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1255 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1880.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml index 390c6bd21a..2192ea2586 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1380 - p_id: - - 1380 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4382.057142857143 + hh_id: + - 1380 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1380 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1193.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml index c5acf28f3b..948e173550 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1385 - p_id: - - 1385 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 149.5285714285714 + hh_id: + - 1385 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1385 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 16.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml index 63a1d2f6bb..6697f3837a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1402 - p_id: - - 1402 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4587.52 + hh_id: + - 1402 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1402 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0148 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1300.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml index bbe3a1fd4e..7562cc97e7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 145 - p_id: - - 145 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4483.14 + hh_id: + - 145 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 145 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1277.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml index 8f0ab3d184..7a94ff392a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1538 - p_id: - - 1538 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 229.84 + hh_id: + - 1538 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1538 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 25.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml index f03cb8f8ba..901fe05567 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1610 - p_id: - - 1610 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6054.72 + hh_id: + - 1610 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 1610 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 867.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml index 5f9656b615..ab1bbe42ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 165 - p_id: - - 165 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2973.4216666666666 + hh_id: + - 165 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 165 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0144 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 743.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml index 3e939d6e30..63d3f50d87 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1714 - p_id: - - 1714 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3106.880833333333 + hh_id: + - 1714 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1714 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 754.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml index 3326139b0e..105bb3060f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1762 - p_id: - - 1762 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7386.214285714286 + hh_id: + - 1762 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1762 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2359.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml index 07375b99c5..6a93f78546 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1853 - p_id: - - 1853 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4412.828571428571 + hh_id: + - 1853 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1853 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1247.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml index 8b3dff8bff..ec381fe182 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1908 - p_id: - - 1908 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7311.471428571429 + hh_id: + - 1908 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1908 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2321.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml index e063f3dc0b..d33773793f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1999 - p_id: - - 1999 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3048.61 + hh_id: + - 1999 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1999 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 771.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml index a9438e4608..dfdd53fffc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2022 - p_id: - - 2022 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 186.17142857142855 + hh_id: + - 2022 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2022 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 20.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml index fecac1192a..6cca83bc5b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2208 - p_id: - - 2208 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7495.215833333333 + hh_id: + - 2208 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2208 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2395.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml index 05be370354..2005224edf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 225 - p_id: - - 225 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6003.833333333333 + hh_id: + - 225 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 225 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1851.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml index fb183f3e1a..466fa60d5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2258 - p_id: - - 2258 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3098.85 + hh_id: + - 2258 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2258 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 751.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml index 0f76d1206b..c39eecab6f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2295 - p_id: - - 2295 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 134.87 + hh_id: + - 2295 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 2295 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml index 8756142801..5bf6b39c98 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 238 - p_id: - - 238 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3077.4 + hh_id: + - 238 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 238 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 748.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml index 6fb1f57d9b..09620487a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2400 - p_id: - - 2400 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2938.465 + hh_id: + - 2400 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 2400 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 381.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml index 559aff184b..da198a6b25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2416 - p_id: - - 2416 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5887.885714285715 + hh_id: + - 2416 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2416 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1758.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml index 1ef0994edd..2920380b5c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2476 - p_id: - - 2476 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7544.785714285715 + hh_id: + - 2476 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2476 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2465.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml index 33fea09594..ef6392fb48 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 262 - p_id: - - 262 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5905.285714285715 + hh_id: + - 262 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 262 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1803.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml index c70da181cd..a959b37809 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2766 - p_id: - - 2766 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 99.17142857142856 + hh_id: + - 2766 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2766 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 11.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml index baf6aa0953..4110840817 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2782 - p_id: - - 2782 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5871.0 + hh_id: + - 2782 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2782 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1753.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml index b0ab2ab1b7..3401c68c7d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2836 - p_id: - - 2836 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6070.115833333333 + hh_id: + - 2836 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2836 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1866.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml index 15a2e98fe5..8c1403cc8a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2886 - p_id: - - 2886 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7525.357499999999 + hh_id: + - 2886 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2886 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0096 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2465.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml index 164e1df536..ca53109049 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2945 - p_id: - - 2945 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3039.0 + hh_id: + - 2945 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2945 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 731.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml index 709b20f2b2..ef031a2cae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2946 - p_id: - - 2946 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5923.221666666667 + hh_id: + - 2946 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2946 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1819.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml index 6ecc2859a7..3dd7147b05 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 299 - p_id: - - 299 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 25.36 + hh_id: + - 299 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 299 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml index 33a64ee1a4..bee568f56a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 318 - p_id: - - 318 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1635.6428571428569 + hh_id: + - 318 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 318 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 268.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml index 70e08eac79..6e1cd7fc43 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 321 - p_id: - - 321 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4485.771428571429 + hh_id: + - 321 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 321 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1276.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml index 70128f6057..3d544f48df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 33 - p_id: - - 33 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1650.9857142857145 + hh_id: + - 33 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 33 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 90.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml index 91c3a103cd..9a5966ef08 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 417 - p_id: - - 417 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4588.2 + hh_id: + - 417 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 417 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1310.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml index 65d9607f58..6209a9cc7b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 479 - p_id: - - 479 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 170.4 + hh_id: + - 479 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 479 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 18.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml index 72c5d2a1d0..7b4d260a53 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 519 - p_id: - - 519 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7332.599999999999 + hh_id: + - 519 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 519 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2346.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml index a20fd2bf60..44e9653b5b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 522 - p_id: - - 522 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5997.257142857143 + hh_id: + - 522 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 522 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1801.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml index 19075ed403..a83635b849 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 618 - p_id: - - 618 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6001.071428571428 + hh_id: + - 618 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 618 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1809.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml index 49f4147991..c16a5a357a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 620 - p_id: - - 620 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4424.4 + hh_id: + - 620 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 620 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1250.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml index 3bce34839d..26168d7a34 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 651 - p_id: - - 651 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1618.1999999999998 + hh_id: + - 651 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 651 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 261.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml index 90b8a55a97..3c1c574bf4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 738 - p_id: - - 738 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4581.16 + hh_id: + - 738 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 738 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1307.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml index b7d8aa47ff..60d17bb224 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 761 - p_id: - - 761 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4388.243333333333 + hh_id: + - 761 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 761 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1201.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml index 2cfacbadb9..5f47c60d5f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 788 - p_id: - - 788 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4518.591666666666 + hh_id: + - 788 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 788 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1288.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml index a22201cdd4..f7042d45c8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 798 - p_id: - - 798 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 143.27142857142857 + hh_id: + - 798 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 798 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 3.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml index e12deef6c4..4b5332476f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 810 - p_id: - - 810 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1509.5141666666666 + hh_id: + - 810 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 810 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 255.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml index 7ecdd4be7b..fcd4309bd3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 864 - p_id: - - 864 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5862.53 + hh_id: + - 864 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 1 + p_id: + - 864 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1280.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml index ab316ac4a8..e2e40cede0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 867 - p_id: - - 867 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 194.45416666666665 + hh_id: + - 867 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 867 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 21.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml index bc3a870830..f281f85256 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 883 - p_id: - - 883 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3019.6714285714293 + hh_id: + - 883 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 883 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 720.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml index 37732d78a8..9f10159627 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 885 - p_id: - - 885 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1597.49 + hh_id: + - 885 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 885 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 253.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml index e9641a7de6..ae6122b5b2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 9 - p_id: - - 9 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7505.94 + hh_id: + - 9 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 9 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2419.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml index 9012f492e4..1503653dd2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 946 - p_id: - - 946 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 227.07 + hh_id: + - 946 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 946 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0149 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 13.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml index 4a889966ad..838b32be60 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 948 - p_id: - - 948 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3147.6 + hh_id: + - 948 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 3 + p_id: + - 948 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 174.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml index 2c53d4a4e1..545c23139b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1019 - p_id: - - 1019 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1461.0 + hh_id: + - 1019 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1019 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 178.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml index 2fe3d202a1..7104b7fbe7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1166 - p_id: - - 1166 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4581.860833333333 + hh_id: + - 1166 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1166 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1295.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml index 7893ae22ba..a86ac5fd03 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1209 - p_id: - - 1209 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6023.53 + hh_id: + - 1209 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1209 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1839.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml index 8124829a62..114539b1e7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1305 - p_id: - - 1305 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4504.5 + hh_id: + - 1305 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1305 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1218.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml index 8efd64d601..f2bfa81632 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1364 - p_id: - - 1364 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5890.971428571429 + hh_id: + - 1364 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1364 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1789.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml index 5d71ceed82..44709e6156 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1473 - p_id: - - 1473 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5989.8 + hh_id: + - 1473 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1473 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1782.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml index 3fdbcad1f4..c0816aad50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1519 - p_id: - - 1519 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6007.200000000001 + hh_id: + - 1519 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1519 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1783.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml index 3d186633ea..331a365e88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1667 - p_id: - - 1667 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 152.99999999999997 + hh_id: + - 1667 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1667 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml index 6796dad687..1c44a3a6b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1770 - p_id: - - 1770 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1621.95 + hh_id: + - 1770 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1770 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 283.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml index d8c8638ffc..527cd3a91e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1784 - p_id: - - 1784 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4582.43 + hh_id: + - 1784 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1784 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1289.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml index c032490f2e..4570968581 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1881 - p_id: - - 1881 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4547.98 + hh_id: + - 1881 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1881 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1287.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml index 88311ef182..ef7748dcd2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1904 - p_id: - - 1904 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1512.0 + hh_id: + - 1904 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1904 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 198.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml index d22d8458d7..a32932dd21 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1907 - p_id: - - 1907 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 139.99 + hh_id: + - 1907 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1907 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml index e05c09a4a0..fe10a60234 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1918 - p_id: - - 1918 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6012.0428571428565 + hh_id: + - 1918 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1918 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1785.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml index 1e51219f29..c13d71a07d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2099 - p_id: - - 2099 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2987.7000000000003 + hh_id: + - 2099 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2099 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 700.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml index c02a7d298f..2376550f49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2111 - p_id: - - 2111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4500.68 + hh_id: + - 2111 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2111 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1217.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml index 2439f8d584..bca2b3452a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2118 - p_id: - - 2118 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7352.099999999999 + hh_id: + - 2118 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2118 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2366.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml index b5536e0e42..c95966eed8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2129 - p_id: - - 2129 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 79.45 + hh_id: + - 2129 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2129 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 8.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml index d45f671a10..c96f668878 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 224 - p_id: - - 224 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7538.7 + hh_id: + - 224 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 224 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2451.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml index 2dec4265cf..3f8af7bf8d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 241 - p_id: - - 241 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 118.84285714285714 + hh_id: + - 241 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 241 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 13.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml index ac75dceaa0..47fe127556 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2410 - p_id: - - 2410 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1638.3 + hh_id: + - 2410 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2410 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 289.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml index 14b98ac439..0cc9febf04 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2423 - p_id: - - 2423 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5988.849999999999 + hh_id: + - 2423 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2423 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1826.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml index 066fe51433..72bb2094ea 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2428 - p_id: - - 2428 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7378.2 + hh_id: + - 2428 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2428 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2381.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml index df1d083e30..69e4a323ff 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2439 - p_id: - - 2439 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1480.8 + hh_id: + - 2439 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2439 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 186.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml index 39ec261104..a44e3d2129 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2447 - p_id: - - 2447 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 183.9 + hh_id: + - 2447 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2447 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 20.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml index 351f80db7e..74d6950150 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2868 - p_id: - - 2868 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6071.195833333334 + hh_id: + - 2868 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2868 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1859.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml index f769467934..6160f700a8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2962 - p_id: - - 2962 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5895.0 + hh_id: + - 2962 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2962 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1790.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml index 64a3d5ea8f..9cc6e8aa4a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 664 - p_id: - - 664 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 66.55714285714285 + hh_id: + - 664 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 664 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 7.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml index deb6bb1d7b..1849114f3b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 688 - p_id: - - 688 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5878.1 + hh_id: + - 688 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 688 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1790.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml index abdeb856ce..df41171a5f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 720 - p_id: - - 720 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6084.329166666666 + hh_id: + - 720 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 720 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1856.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml index 24c5fdc80d..b2893ff9c6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 840 - p_id: - - 840 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3067.2000000000003 + hh_id: + - 840 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 840 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 771.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml index 8f75344101..a85549147c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 848 - p_id: - - 848 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 101.92583333333332 + hh_id: + - 848 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 848 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml index aed56ce564..ba91988e1e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 963 - p_id: - - 963 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1537.98 + hh_id: + - 963 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 963 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0106 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 208.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml index 3c25d9b3d6..5fd5cd216a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1019 - p_id: - - 1019 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1461.0 + hh_id: + - 1019 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1019 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 154.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml index 11c346c742..9f08e750a1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1166 - p_id: - - 1166 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4581.860833333333 + hh_id: + - 1166 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1166 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1252.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml index 4c098dd14a..92f93cacd7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1209 - p_id: - - 1209 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6023.53 + hh_id: + - 1209 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1209 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1784.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml index 7912d11b44..86a74f6dd2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1305 - p_id: - - 1305 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4504.5 + hh_id: + - 1305 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1305 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1175.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml index f272c45eaf..bf1a3c7283 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1364 - p_id: - - 1364 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5890.971428571429 + hh_id: + - 1364 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1364 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1734.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml index 0dca990849..060f3e94c9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1473 - p_id: - - 1473 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5989.8 + hh_id: + - 1473 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1473 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1726.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml index f5a12fafa8..f8a3d7274a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1519 - p_id: - - 1519 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6007.200000000001 + hh_id: + - 1519 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1519 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1726.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml index d828dde691..6d5029a525 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1667 - p_id: - - 1667 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 152.99999999999997 + hh_id: + - 1667 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1667 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml index 056cbc8cdd..e1964bfa2f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1770 - p_id: - - 1770 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1621.95 + hh_id: + - 1770 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1770 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 259.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml index 43db7c4828..c0682c3876 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1784 - p_id: - - 1784 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4582.43 + hh_id: + - 1784 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1784 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1246.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml index 42c9833a7b..e928adf415 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1881 - p_id: - - 1881 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4547.98 + hh_id: + - 1881 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 1881 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1244.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml index 472920f4ee..5d62fc52c3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1904 - p_id: - - 1904 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1512.0 + hh_id: + - 1904 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1904 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 173.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml index 5f7c5fa06b..e4341e70ce 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1907 - p_id: - - 1907 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 139.99 + hh_id: + - 1907 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1907 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml index b6c511fd93..00e1a85699 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 1918 - p_id: - - 1918 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6012.0428571428565 + hh_id: + - 1918 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 1918 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1728.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml index 42bc903a4f..7106d944aa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2099 - p_id: - - 2099 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 2987.7000000000003 + hh_id: + - 2099 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2099 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 667.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml index c850549513..4e36509b16 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2111 - p_id: - - 2111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4500.68 + hh_id: + - 2111 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2111 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1174.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml index 30bdfbe680..33ab2005fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2118 - p_id: - - 2118 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7352.099999999999 + hh_id: + - 2118 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2118 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2296.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml index b5536e0e42..c95966eed8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2129 - p_id: - - 2129 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 79.45 + hh_id: + - 2129 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2129 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 8.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml index d0dd5a0721..10936ce434 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 224 - p_id: - - 224 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7538.7 + hh_id: + - 224 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 224 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 2379.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml index 2dec4265cf..3f8af7bf8d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 241 - p_id: - - 241 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 118.84285714285714 + hh_id: + - 241 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 241 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 13.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml index 6b864cfc61..5a81dcf70a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2410 - p_id: - - 2410 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1638.3 + hh_id: + - 2410 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2410 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 266.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml index 805bc22e44..198cde233a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2423 - p_id: - - 2423 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5988.849999999999 + hh_id: + - 2423 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2423 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1771.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml index 75d1a15d80..7113ce56e4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2428 - p_id: - - 2428 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 7378.2 + hh_id: + - 2428 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2428 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 2311.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml index 2cd2cd977a..7a6e40c974 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2439 - p_id: - - 2439 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1480.8 + hh_id: + - 2439 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 2439 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 161.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml index 39ec261104..a44e3d2129 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2447 - p_id: - - 2447 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 183.9 + hh_id: + - 2447 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2447 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 20.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml index 94799a8b46..ab5806b558 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2868 - p_id: - - 2868 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6071.195833333334 + hh_id: + - 2868 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2868 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 1803.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml index e1d909a299..563346aeda 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 2962 - p_id: - - 2962 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5895.0 + hh_id: + - 2962 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 2962 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1736.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml index 64a3d5ea8f..9cc6e8aa4a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 664 - p_id: - - 664 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 66.55714285714285 + hh_id: + - 664 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 664 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 7.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml index 71dd4078b1..205397cade 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 688 - p_id: - - 688 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5878.1 + hh_id: + - 688 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 688 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1735.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml index daf49179e1..df87483b3d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 720 - p_id: - - 720 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6084.329166666666 + hh_id: + - 720 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 720 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - true sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 1800.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml index 3a0997fb0f..e1b988aa1a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 840 - p_id: - - 840 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3067.2000000000003 + hh_id: + - 840 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 6 + p_id: + - 840 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - false outputs: lohnsteuer__betrag_m: - 736.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml index 8f75344101..a85549147c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 848 - p_id: - - 848 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 101.92583333333332 + hh_id: + - 848 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 848 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml index 49c8c0b608..67e6d600fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: '' inputs: assumed: @@ -11,18 +12,16 @@ inputs: - 25 arbeitsstunden_w: - 40.0 - hh_id: - - 963 - p_id: - - 963 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1537.98 + hh_id: + - 963 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: - 5 + p_id: + - 963 sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - 0.0106 sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,6 +30,8 @@ inputs: - false sozialversicherung__regulär_beschäftigt: - true + wohnort_ost: + - true outputs: lohnsteuer__betrag_m: - 183.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" index c0b49f0d38..cc388c7b3d 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 2 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 6000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 2 + p_id: + - 2 outputs: solidaritätszuschlag__betrag_y_sn: - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" index 66c3b4984b..96c34a23f3 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 5 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 3000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 5 + p_id: + - 5 outputs: solidaritätszuschlag__betrag_y_sn: - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" index 5fcb9a45f7..c3adb975e8 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 6 - familie__kind: - - false - p_id: - - 6 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 3000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 6 + p_id: + - 6 outputs: solidaritätszuschlag__betrag_y_sn: - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" index 4968824517..382871af94 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 4 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 3000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 4 + p_id: + - 4 outputs: solidaritätszuschlag__betrag_y_sn: - 165.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" index 486daa5db6..af3d30c076 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 3 - familie__kind: - - false - p_id: - - 3 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 5000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 3 + p_id: + - 3 outputs: solidaritätszuschlag__betrag_y_sn: - 275.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" index eb707e2b37..9bfea11079 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 1 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 2000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 1 + p_id: + - 1 outputs: solidaritätszuschlag__betrag_y_sn: - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" index 262ed1e9f8..3e125c3722 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 7 - familie__kind: - - false - p_id: - - 7 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 32027.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 7 + p_id: + - 7 outputs: solidaritätszuschlag__betrag_y_sn: - 1723.6 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" index 9ecb0cbef1..2f3ef83b72 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -8,18 +9,6 @@ inputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - 0.0 - hh_id: - - 0 - - 0 - familie__kind: - - false - - false - p_id: - - 0 - - 1 - familie__p_id_ehepartner: - - 1 - - 0 einkommensteuer__anzahl_personen_sn: - 2 - 2 @@ -29,6 +18,18 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 zusammen_veranlagt: - true - true diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" index 5d483d6d5c..864a6b72b7 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} @@ -8,24 +9,24 @@ inputs: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - 0.0 - hh_id: - - 1 - - 1 - familie__kind: - - false - - false - p_id: - - 2 - - 3 - familie__p_id_ehepartner: - - 3 - - 2 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 36000.0 - 36000.0 einkommensteuer__gemeinsam_veranlagt: - true - true + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 3 + - 2 + hh_id: + - 1 + - 1 + p_id: + - 2 + - 3 zusammen_veranlagt: - true - true diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" index ea576ef3d5..378dfbc31c 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 73397.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 2 + p_id: + - 4 outputs: solidaritätszuschlag__betrag_y_sn: - 4036.84 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" index b202bc75c5..5b3c6a9809 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" @@ -1,24 +1,25 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: einkommensteuer__abgeltungssteuer__betrag_y_sn: - 0.0 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 18000.0 einkommensteuer__gemeinsam_veranlagt: - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + hh_id: + - 2 + p_id: + - 5 outputs: solidaritätszuschlag__betrag_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010/hh_id_6.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010/hh_id_6.yaml index 7190c7773c..b53aaacae4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2010/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010/hh_id_6.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -25,33 +26,33 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1970 - - 2004 - hh_id: - - 6 - - 6 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2500.0 + - 0.0 familie__kind: - false - true - p_id: - - 9 - - 10 familie__p_id_elternteil_1: - -1 - 9 familie__p_id_elternteil_2: - -1 - -1 - wohnort_ost: - - false - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2500.0 - - 0.0 + geburtsjahr: + - 1970 + - 2004 + hh_id: + - 6 + - 6 jahr: - 2010 - 2010 + p_id: + - 9 + - 10 + wohnort_ost: + - false + - false outputs: sozialversicherung__arbeitslosen__betrag_m: - 1021.87 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011/hh_id_7.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011/hh_id_7.yaml index 49c1cc8f92..721c194ad3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2011/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011/hh_id_7.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -18,24 +19,24 @@ inputs: - 66 arbeitsstunden_w: - 0.0 - geburtsjahr: - - 1945 - hh_id: - - 7 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2300.0 familie__kind: - false - p_id: - - 11 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2300.0 + geburtsjahr: + - 1945 + hh_id: + - 7 jahr: - 2011 + p_id: + - 11 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015/skip_hh_id_5.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015/skip_hh_id_5.yaml index e6aa017d23..b799761f71 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2015/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015/skip_hh_id_5.yaml @@ -1,7 +1,8 @@ --- info: - source: none note: Calculation is not correct due to change in Grundfreibetrag in July 2015. + precision: 0.01 + source: none inputs: assumed: kindergeld__grundsätzlich_anspruchsberechtigt: @@ -26,33 +27,33 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 1985 - - 1985 - hh_id: - - 5 - - 5 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 7000.0 + - 0.0 familie__kind: - false - true - p_id: - - 7 - - 8 familie__p_id_elternteil_1: - -1 - 7 familie__p_id_elternteil_2: - -1 - -1 - wohnort_ost: - - true - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 7000.0 - - 0.0 + geburtsjahr: + - 1985 + - 1985 + hh_id: + - 5 + - 5 jahr: - 2015 - 2015 + p_id: + - 7 + - 8 + wohnort_ost: + - true + - true outputs: sozialversicherung__arbeitslosen__betrag_m: - 1719.96 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_1.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_1.yaml index 127e87b7b2..0788468019 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_1.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -18,24 +19,24 @@ inputs: - 30 arbeitsstunden_w: - 0.0 - geburtsjahr: - - 1989 - hh_id: - - 1 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 1000.0 familie__kind: - false - p_id: - - 1 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1000.0 + geburtsjahr: + - 1989 + hh_id: + - 1 jahr: - 2019 + p_id: + - 1 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__betrag_m: - 465.54 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_2.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_2.yaml index 5702991531..4eb5f703a9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_2.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -18,24 +19,24 @@ inputs: - 30 arbeitsstunden_w: - 0.0 - geburtsjahr: - - 1989 - hh_id: - - 2 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 2000.0 familie__kind: - false - p_id: - - 2 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2000.0 + geburtsjahr: + - 1989 + hh_id: + - 2 jahr: - 2019 + p_id: + - 2 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__betrag_m: - 789.76 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_3.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_3.yaml index dfc3fa755e..9952b61e5f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_3.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -25,33 +26,33 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - geburtsjahr: - - 2014 - - 1989 - hh_id: - - 3 - - 3 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 0.0 + - 3000.0 familie__kind: - true - false - p_id: - - 3 - - 4 familie__p_id_elternteil_1: - 4 - -1 familie__p_id_elternteil_2: - -1 - -1 - wohnort_ost: - - false - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - - 3000.0 + geburtsjahr: + - 2014 + - 1989 + hh_id: + - 3 + - 3 jahr: - 2019 - 2019 + p_id: + - 3 + - 4 + wohnort_ost: + - false + - false outputs: sozialversicherung__arbeitslosen__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_4.yaml similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_4.yaml index 79c6ee8fad..15a7d6e984 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld/2019/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_4.yaml @@ -1,5 +1,6 @@ --- info: + precision: 0.01 source: none inputs: assumed: @@ -25,33 +26,33 @@ inputs: arbeitsstunden_w: - 20.0 - 0.0 - geburtsjahr: - - 1989 - - 2014 - hh_id: - - 4 - - 4 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 4000.0 + - 0.0 familie__kind: - false - true - p_id: - - 5 - - 6 familie__p_id_elternteil_1: - -1 - 5 familie__p_id_elternteil_2: - -1 - -1 - wohnort_ost: - - false - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 4000.0 - - 0.0 + geburtsjahr: + - 1989 + - 2014 + hh_id: + - 4 + - 4 jahr: - 2019 - 2019 + p_id: + - 5 + - 6 + wohnort_ost: + - false + - false outputs: sozialversicherung__arbeitslosen__betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" similarity index 99% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 6273dd54e7..04ffcf6b4e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} @@ -8,15 +9,6 @@ inputs: alter: - 40 - 40 - hh_id: - - 0 - - 1 - p_id: - - 0 - - 1 - wohnort_ost: - - false - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 300.0 - 300.0 @@ -26,9 +18,15 @@ inputs: einkommensteuer__einkünfte__ist_selbstständig: - false - false + hh_id: + - 0 + - 1 jahr: - '1998' - '1998' + p_id: + - 0 + - 1 sozialversicherung__kranken__beitrag__privat_versichert: - false - false @@ -41,6 +39,9 @@ inputs: sozialversicherung__rente__private_rente_betrag_m: - 0.0 - 0.0 + wohnort_ost: + - false + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - 0.0 @@ -48,12 +49,12 @@ outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 9.75 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - - 63.15 sozialversicherung__beitrag_gesamt_m: - 0.0 - 126.3 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 + - 63.15 sozialversicherung__beiträge_versicherter_m: - 0.0 - 63.15 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" similarity index 99% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" index 0b45de0bfa..451b45be9d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} provided: alter: - 40 - hh_id: - - 0 - p_id: - - 0 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 300.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 0 jahr: - '2002' + p_id: + - 0 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,15 +28,17 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - 0.0 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 66.0 sozialversicherung__beitrag_gesamt_m: - 66.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 66.0 sozialversicherung__beiträge_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" index 7af730d461..3a5630758e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} provided: alter: - 20 - hh_id: - - 13 - p_id: - - 111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 700.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 13 jahr: - '2002' + p_id: + - 111 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 22.75 - sozialversicherung__beiträge_arbeitgeber_m: - - 144.55 sozialversicherung__beitrag_gesamt_m: - 289.1 + sozialversicherung__beiträge_arbeitgeber_m: + - 144.55 sozialversicherung__beiträge_versicherter_m: - 144.55 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" index 22444b70ad..9c383f4cd0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} provided: alter: - 20 - hh_id: - - 13 - p_id: - - 111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 5000.0 einkommensteuer__einkünfte__ist_selbstständig: - true + hh_id: + - 13 jahr: - '2002' + p_id: + - 111 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 sozialversicherung__beitrag_gesamt_m: - 529.88 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 sozialversicherung__beiträge_versicherter_m: - 529.88 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" index 21e1dafd1f..b671486517 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} provided: alter: - 20 - hh_id: - - 13 - p_id: - - 111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 500.0 einkommensteuer__einkünfte__ist_selbstständig: - true + hh_id: + - 13 jahr: - '2002' + p_id: + - 111 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 sozialversicherung__beitrag_gesamt_m: - 122.72 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 sozialversicherung__beiträge_versicherter_m: - 122.72 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index ad98b3f7f2..a53ea7a6b4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} provided: alter: - 70 - hh_id: - - 13 - p_id: - - 111 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 13 jahr: - '2004-04-01' + p_id: + - 111 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,6 +28,8 @@ inputs: - 1000.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__pflege__beitrag__betrag_versicherter_m: - 17.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" index 5609d52cec..492fdf9863 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 10 - p_id: - - 54684 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1200.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 10 jahr: - '2010' + p_id: + - 54684 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 16.8 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.9 sozialversicherung__beitrag_gesamt_m: - 474.6 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.9 sozialversicherung__beiträge_versicherter_m: - 242.7 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" index 0fc5f38019..34cb18db54 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 11 - p_id: - - 35 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 11 jahr: - '2010' + p_id: + - 35 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 21.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 289.88 sozialversicherung__beitrag_gesamt_m: - 593.26 + sozialversicherung__beiträge_arbeitgeber_m: + - 289.88 sozialversicherung__beiträge_versicherter_m: - 303.375 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" index b3fa3d6582..11fde7131b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 12 - p_id: - - 369 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 8000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 12 jahr: - '2010' + p_id: + - 369 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 77.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 923.31 sozialversicherung__beitrag_gesamt_m: - 1880.37 + sozialversicherung__beiträge_arbeitgeber_m: + - 923.31 sozialversicherung__beiträge_versicherter_m: - 957.0625 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" index a00ccbdc2b..2462e022cd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 7 - p_id: - - 3483 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 300.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 7 jahr: - '2010' + p_id: + - 3483 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 84.0 sozialversicherung__beitrag_gesamt_m: - 84.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 84.0 sozialversicherung__beiträge_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" index 9780814f9e..8dd99d6cf9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 8 - p_id: - - 874 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 600.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 8 jahr: - '2010' + p_id: + - 874 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 7.0476 - sozialversicherung__beiträge_arbeitgeber_m: - - 115.95 sozialversicherung__beitrag_gesamt_m: - 218.2 + sozialversicherung__beiträge_arbeitgeber_m: + - 115.95 sozialversicherung__beiträge_versicherter_m: - 102.24735 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" index 484814358d..b8d443a487 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2010/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} provided: alter: - 20 - hh_id: - - 9 - p_id: - - 6414 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 900.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 9 jahr: - '2010' + p_id: + - 6414 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 12.6 - sozialversicherung__beiträge_arbeitgeber_m: - - 173.93 sozialversicherung__beitrag_gesamt_m: - 355.96 + sozialversicherung__beiträge_arbeitgeber_m: + - 173.93 sozialversicherung__beiträge_versicherter_m: - 182.025 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" index 8cd893d395..91081d7008 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 1 - p_id: - - 8 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 300.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 1 jahr: - '2018' + p_id: + - 8 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 84.0 sozialversicherung__beitrag_gesamt_m: - 84.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 84.0 sozialversicherung__beiträge_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" index 64f697aeb5..7b52960498 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 2 - p_id: - - 9 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 600.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 2 jahr: - '2018' + p_id: + - 9 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 6.93028 - sozialversicherung__beiträge_arbeitgeber_m: - - 116.25 sozialversicherung__beitrag_gesamt_m: - 212.4 + sozialversicherung__beiträge_arbeitgeber_m: + - 116.25 sozialversicherung__beiträge_versicherter_m: - 96.15375 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" index 3ddf437424..f878886cda 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 3 - p_id: - - 34 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 900.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 3 jahr: - '2018' + p_id: + - 34 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 13.5 - sozialversicherung__beiträge_arbeitgeber_m: - - 174.38 sozialversicherung__beitrag_gesamt_m: - 360.01 + sozialversicherung__beiträge_arbeitgeber_m: + - 174.38 sozialversicherung__beiträge_versicherter_m: - 185.625 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" index f1f35ca0d6..4fc4b8dd50 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 4 - p_id: - - 55 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1200.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 4 jahr: - '2018' + p_id: + - 55 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 18.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 232.5 sozialversicherung__beitrag_gesamt_m: - 477.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 232.5 sozialversicherung__beiträge_versicherter_m: - 244.5 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" index 71ce966609..4bdcea0bf6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 5 - p_id: - - 5 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 5 jahr: - '2018' + p_id: + - 5 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 22.5 - sozialversicherung__beiträge_arbeitgeber_m: - - 290.63 sozialversicherung__beitrag_gesamt_m: - 596.26 + sozialversicherung__beiträge_arbeitgeber_m: + - 290.63 sozialversicherung__beiträge_versicherter_m: - 305.625 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" index 6becbf702b..917c644d8a 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2018/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" @@ -1,26 +1,25 @@ --- info: note: '' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 25 - hh_id: - - 6 - p_id: - - 1354 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 5000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 6 jahr: - '2018' + p_id: + - 1354 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 75.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 919.44 sozialversicherung__beitrag_gesamt_m: - 1883.13 + sozialversicherung__beiträge_arbeitgeber_m: + - 919.44 sozialversicherung__beiträge_versicherter_m: - 963.69375 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" index 4bd1cc24f9..eb74fae800 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" @@ -1,26 +1,25 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + precision: 1 source: '' inputs: assumed: {} provided: alter: - 20 - hh_id: - - 23 - p_id: - - 3657 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 1000.0 einkommensteuer__einkünfte__ist_selbstständig: - true + hh_id: + - 23 jahr: - '2019' + p_id: + - 3657 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 sozialversicherung__beitrag_gesamt_m: - 186.3808333 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 sozialversicherung__beiträge_versicherter_m: - 186.3808333 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" index 67c219cfbe..749d08defd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2019/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" @@ -1,26 +1,25 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + precision: 1 source: '' inputs: assumed: {} provided: alter: - 30 - hh_id: - - 24 - p_id: - - 798 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 4000.0 einkommensteuer__einkünfte__ist_selbstständig: - true + hh_id: + - 24 jahr: - '2019' + p_id: + - 798 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 sozialversicherung__beitrag_gesamt_m: - 718.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 sozialversicherung__beiträge_versicherter_m: - 718.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" index f67c3f4516..e5a6076a32 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" @@ -1,26 +1,25 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.barmer.de ' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 40 - hh_id: - - 15 - p_id: - - 222 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 15 jahr: - '2020' + p_id: + - 222 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 36.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 596.25 sozialversicherung__beitrag_gesamt_m: - 1200.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 596.25 sozialversicherung__beiträge_versicherter_m: - 603.75 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" index d174e911de..20394315d1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2020/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" @@ -1,26 +1,25 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag + precision: 1 source: '' inputs: assumed: {} provided: alter: - 50 - hh_id: - - 25 - p_id: - - 4987 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 0.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 8000.0 einkommensteuer__einkünfte__ist_selbstständig: - true + hh_id: + - 25 jahr: - '2020' + p_id: + - 4987 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 sozialversicherung__beitrag_gesamt_m: - 862.5 + sozialversicherung__beiträge_arbeitgeber_m: + - 0.0 sozialversicherung__beiträge_versicherter_m: - 862.5 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" index 01d9c52251..29e4338ccf 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" @@ -1,26 +1,25 @@ --- info: note: Einführung Geringfügigkeitsgrenze 2022 + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 30 - hh_id: - - 18 - p_id: - - 225 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 510.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 18 jahr: - 2022-10 + p_id: + - 225 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 142.8 sozialversicherung__beitrag_gesamt_m: - 142.8 + sozialversicherung__beiträge_arbeitgeber_m: + - 142.8 sozialversicherung__beiträge_versicherter_m: - 0.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" index 2f4c4a13a9..546d02d555 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" @@ -1,26 +1,25 @@ --- info: note: Änderungen MidiJob 2022 (kinderlos) + precision: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} provided: alter: - 35 - hh_id: - - 19 - p_id: - - 19 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1100.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 19 jahr: - 2022-10 + p_id: + - 19 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 10.31 - sozialversicherung__beiträge_arbeitgeber_m: - - 239.04 sozialversicherung__beitrag_gesamt_m: - 414.28 + sozialversicherung__beiträge_arbeitgeber_m: + - 239.04 sozialversicherung__beiträge_versicherter_m: - 175.24 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" index 8392c805da..a4e9cee5c3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" @@ -1,26 +1,25 @@ --- info: note: Änderungen MidiJob 2022 (mit Kindern) + precision: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} provided: alter: - 35 - hh_id: - - 20 - p_id: - - 20 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 800.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 20 jahr: - 2022-10 + p_id: + - 20 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 4.98 - sozialversicherung__beiträge_arbeitgeber_m: - - 190.71 sozialversicherung__beitrag_gesamt_m: - 273.58 + sozialversicherung__beiträge_arbeitgeber_m: + - 190.71 sozialversicherung__beiträge_versicherter_m: - 82.87 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" index 49dd680842..679f5ac6a5 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" @@ -1,26 +1,25 @@ --- info: note: Änderungen MidiJob 2022 (mit Kindern) + precision: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} provided: alter: - 45 - hh_id: - - 21 - p_id: - - 21 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1400.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 21 jahr: - 2022-10 + p_id: + - 21 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 15.64 - sozialversicherung__beiträge_arbeitgeber_m: - - 287.38 sozialversicherung__beitrag_gesamt_m: - 547.78 + sozialversicherung__beiträge_arbeitgeber_m: + - 287.38 sozialversicherung__beiträge_versicherter_m: - 260.4 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" similarity index 84% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" index 9033c2d01b..19c3f6a0d0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022-10/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" @@ -1,28 +1,25 @@ --- info: - note: >- - Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, - https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) + note: Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) + precision: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} provided: alter: - 50 - hh_id: - - 22 - p_id: - - 22 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 22 jahr: - 2022-10 + p_id: + - 22 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -31,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.53 - sozialversicherung__beiträge_arbeitgeber_m: - - 222.93 sozialversicherung__beitrag_gesamt_m: - 368.17 + sozialversicherung__beiträge_arbeitgeber_m: + - 222.93 sozialversicherung__beiträge_versicherter_m: - 145.24 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" index f9f2afff7e..e9d497a171 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" @@ -1,26 +1,25 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.tk.de ' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 40 - hh_id: - - 16 - p_id: - - 223 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 750.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 16 jahr: - '2022' + p_id: + - 223 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 7.26 - sozialversicherung__beiträge_arbeitgeber_m: - - 149.81 sozialversicherung__beitrag_gesamt_m: - 273.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 149.81 sozialversicherung__beiträge_versicherter_m: - 123.19 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" index 36fac4df08..0d6bf0e2a4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2022/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" @@ -1,26 +1,25 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.tk.de ' + precision: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} provided: alter: - 40 - hh_id: - - 17 - p_id: - - 224 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1050.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 17 jahr: - '2022' + p_id: + - 224 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__hat_kinder: @@ -29,13 +28,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 11.8 - sozialversicherung__beiträge_arbeitgeber_m: - - 209.74 sozialversicherung__beitrag_gesamt_m: - 406.28 + sozialversicherung__beiträge_arbeitgeber_m: + - 209.74 sozialversicherung__beiträge_versicherter_m: - 196.54 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" similarity index 85% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" index 8d9d37eb5f..aca9935b51 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" @@ -1,29 +1,27 @@ --- info: - note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und - -entlastungsgesetz 2 Kinder unter 25 Jahren + note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern + unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 2 Kinder + unter 25 Jahren + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 23 - p_id: - - 23 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 23 jahr: - 2023-07 + p_id: + - 23 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -34,13 +32,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 39.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 612.0 sozialversicherung__beitrag_gesamt_m: - 1216.5 + sozialversicherung__beiträge_arbeitgeber_m: + - 612.0 sozialversicherung__beiträge_versicherter_m: - 604.5 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" similarity index 84% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" index c554fb8624..0a4fd19289 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" @@ -1,29 +1,27 @@ --- info: - note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und - -entlastungsgesetz 1 Kind über 25 Jahren und Midijob + note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern + unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 1 Kind über + 25 Jahren und Midijob + precision: 1 source: https://www.ihre-vorsorge.de/rechner/midijob-rechner inputs: assumed: {} provided: alter: - 50 - hh_id: - - 24 - p_id: - - 24 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 24 jahr: - 2023-07 + p_id: + - 24 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -34,13 +32,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.43 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.55 sozialversicherung__beitrag_gesamt_m: - 363.87 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.55 sozialversicherung__beiträge_versicherter_m: - 132.32 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" similarity index 85% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" index 56a6b51c1e..0480fbe435 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" @@ -1,29 +1,27 @@ --- info: - note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und - -entlastungsgesetz 5 Kinder unter 25 Jahren + note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern + unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 5 Kinder + unter 25 Jahren + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 25 - p_id: - - 25 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 25 jahr: - 2023-07 + p_id: + - 25 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -34,13 +32,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 52.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 816.0 sozialversicherung__beitrag_gesamt_m: - 1592.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 816.0 sozialversicherung__beiträge_versicherter_m: - 776.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" similarity index 86% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" index 74d85829a7..8c0a6add78 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" @@ -1,29 +1,26 @@ --- info: - note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und - -entlastungsgesetz keine Kinder + note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern + unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 26 - p_id: - - 26 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 26 jahr: - 2023-07 + p_id: + - 26 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -34,13 +31,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 52.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 816.0 sozialversicherung__beitrag_gesamt_m: - 1656.0 + sozialversicherung__beiträge_arbeitgeber_m: + - 816.0 sozialversicherung__beiträge_versicherter_m: - 840.0 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" similarity index 85% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" index 2716f33769..22c3d1f81f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2023-07/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" @@ -1,29 +1,27 @@ --- info: - note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und - -entlastungsgesetz keine Kinder und Midijob + note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern + unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder + und Midijob + precision: 1 source: https://www.smart-rechner.de/midijob/rechner.php inputs: assumed: {} provided: alter: - 50 - hh_id: - - 27 - p_id: - - 27 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 27 jahr: - 2023-07 + p_id: + - 27 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -34,13 +32,15 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.43 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.54 sozialversicherung__beitrag_gesamt_m: - 369.21 + sozialversicherung__beiträge_arbeitgeber_m: + - 231.54 sozialversicherung__beiträge_versicherter_m: - 137.67 sozialversicherung__kranken__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" index 6f1ce0707a..0a6d899142 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" @@ -1,24 +1,23 @@ --- info: note: Above new Beitragsbemessungsgrenze (of 2024). + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 0 - p_id: - - 0 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 6000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 0 + p_id: + - 0 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -29,6 +28,8 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 78.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" index 49f0d0fe7a..702c292552 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" @@ -1,24 +1,23 @@ --- info: note: Above old Beitragsbemessungsgrenze (of 2023). + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 0 - p_id: - - 0 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 4990.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 0 + p_id: + - 0 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -29,6 +28,8 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 64.87 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" similarity index 98% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" index 326725e094..b19fe763c3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" @@ -1,24 +1,23 @@ --- info: note: Below old Beitragsbemessungsgrenze (of 2023). + precision: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} provided: alter: - 45 - hh_id: - - 0 - p_id: - - 0 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 3000.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + hh_id: + - 0 + p_id: + - 0 sozialversicherung__kranken__beitrag__privat_versichert: - false sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: @@ -29,6 +28,8 @@ inputs: - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 39.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" similarity index 85% rename from "src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" index 9435be628f..74b9d67076 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherungsbeitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" @@ -1,8 +1,8 @@ --- info: - note: >- - Number of children below 25 years of age. Necessary to calculate the long-term care + note: Number of children below 25 years of age. Necessary to calculate the long-term care insurance contribution. Does not depend on Kindergeld eligibility. + precision: 1 source: '' inputs: assumed: @@ -11,16 +11,6 @@ inputs: - 50 - 24 - 24 - hh_id: - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 familie__p_id_elternteil_1: - -1 - -1 @@ -31,11 +21,21 @@ inputs: - -1 - 1 - -1 + hh_id: + - 0 + - 0 + - 0 + - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false - false - true + p_id: + - 0 + - 1 + - 2 + - 3 provided: {} outputs: sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" similarity index 62% rename from src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml rename to "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" index 2749f2114f..00a36149af 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2022-01-01/skip_minijobgrenze.yaml +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: provided: @@ -13,5 +14,3 @@ inputs: outputs: sozialversicherung__minijob_grenze: - 450.0 -# TODO(@MImmesberger): Unskip test when issue is resolved -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" similarity index 62% rename from src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml rename to "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" index c969eb5f3e..c08a6d73c0 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2023/skip_minijobgrenze.yaml +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: provided: @@ -13,5 +14,3 @@ inputs: outputs: sozialversicherung__minijob_grenze: - 520.0 -# TODO(@MImmesberger): Unskip test when issue is resolved -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" similarity index 62% rename from src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml rename to "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" index 2e617e11ed..a74c59abee 100644 --- a/src/_gettsim_tests/test_data/minijobgrenze/2024/skip_minijobgrenze.yaml +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: '' inputs: provided: @@ -13,5 +14,3 @@ inputs: outputs: sozialversicherung__minijob_grenze: - 538.0 -# TODO(@MImmesberger): Unskip test when issue is resolved -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_female.yaml index f870a958cc..0b1fe3cb21 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_male.yaml index b17b233388..eba6edb18b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_female.yaml index 4e1970e81d..ee7e27ac4a 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_male.yaml index 77804a7240..d6b1d9eea5 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_female.yaml index f870a958cc..0b1fe3cb21 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_male.yaml index b17b233388..eba6edb18b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_female.yaml index e51fa439ef..a5576211c6 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_male.yaml index 36a0366a32..fc6352eccf 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_female.yaml index 359e0a70b1..2f6add29af 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_male.yaml index 46c5c2d8e1..333750d2a8 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_female.yaml index 72491bb9a3..9bdc3e16e3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_male.yaml index 28d0b5ec83..6a43ef256c 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_female.yaml index 5f2ff263c6..1eeed911db 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_male.yaml index a13cb9eab1..6f6f4e2ab2 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_female.yaml index 6af5b16dfc..60e661ad50 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_male.yaml index 5aa29e2f8f..c08262d97c 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_female.yaml index d7a4655b12..f3b5694290 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_male.yaml index 0f65f50308..6af4f60570 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_female.yaml index cf1ec34cd4..8217993f77 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_male.yaml index 57b91572c2..1fbeb5b73f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_female.yaml index f2a2dcc969..ff4bcdfc91 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_male.yaml index 1ae38a33e2..1976c309bc 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_female.yaml index 9544da75c2..0e2dc3a531 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_male.yaml index f87aa93de1..5fabb2cf18 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_female.yaml index 511f270fc6..a34f142827 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_male.yaml index 290d47c6d9..125ef8c1c2 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_female.yaml index a857c8fb89..8683ac321c 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_male.yaml index dc430a0c11..37ba33aaf0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_female.yaml index 28b069fb8d..469e4f4dce 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_male.yaml index 3baddc4a6e..530231640d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_female.yaml index e854a0bc24..f0fbfaf252 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_male.yaml index eaf060ad2c..723b3b2a23 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_female.yaml index 7ae06eaaed..2c1f11bd99 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_male.yaml index 890564043d..8ea31b1d22 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_female.yaml index 97cb991f63..25a6cd3a0d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_male.yaml index 66ced63c96..f86b73fe31 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_female.yaml index 4632082177..291d345482 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_male.yaml index 1d74a69a63..790a0320af 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_female.yaml index 191d368119..f9d0dbb143 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_male.yaml index 6781e3124e..67f1f880e0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1992/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml index f870a958cc..0b1fe3cb21 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1989/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml index b17b233388..eba6edb18b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml index 72f4a54447..c1ce69c1f1 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml index 08d45c8437..281b4e1e2f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml index 5956b1e8bd..ef3f72cadb 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml index 37ab0288c3..d806d4f35b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml index 124f4ed6ed..f51b3ce6a7 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml index 1c3d08fe98..7a9e0ecc0f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml index 0398e327f2..40f381dbbf 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml index 537f13e090..b9ace7dd2d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml index c8e6ec5abb..18f9ba9146 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml index 616f402ecb..440cf24f2a 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml index e7b5551103..a871361c1b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml index b6cdf9261c..5446da020d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml index 37fe3deadf..50128efa9a 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml index 0d99415244..5b1af9a282 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml index 8a8ac55fe3..681675d865 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml index 3ff9d94fb3..7245180f94 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml index 630e6f62b0..de9d0b4547 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml index 41a06927c9..d7e35d19f3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml index 89ffcd9c09..b3b8c0fa46 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml index 4c24dd14f3..d47689d0eb 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml index d97197980e..3eaddd1b73 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml index d96c0ebed7..702541415b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml index c013b27552..98f9677c48 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml index 7793f84bf6..79fb516ef9 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml index e854a0bc24..f0fbfaf252 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml index eaf060ad2c..723b3b2a23 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml index 7ae06eaaed..2c1f11bd99 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml index 890564043d..8ea31b1d22 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml index 97cb991f63..25a6cd3a0d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml index 66ced63c96..f86b73fe31 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml index 4632082177..291d345482 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml index 1d74a69a63..790a0320af 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml index 191d368119..f9d0dbb143 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -41,15 +42,6 @@ inputs: - 5 - 6 - 7 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -86,6 +78,15 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml index 6781e3124e..67f1f880e0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/1996-07-29/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -25,11 +26,6 @@ inputs: - 1 - 2 - 3 - weiblich: - - false - - false - - false - - false sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false - false @@ -50,6 +46,11 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_female.yaml index e022e7579d..ea99e0b319 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_male.yaml index 7e75ea0b88..d175c256f5 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_female.yaml index 5c8b33dbbe..9f8a9c69d0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_male.yaml index 2e9a5be27c..70bdd177ce 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_female.yaml index a3bd83e9ec..6141c53b55 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_male.yaml index 57886e44a9..82f877ed32 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_female.yaml index 59df25119d..d7df5ed4a0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_male.yaml index fa17837286..2cf49f1d11 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_female.yaml index 186c2017f3..04bbc5e62f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_male.yaml index 8f7a8dc1d5..c6a3a9ef10 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_female.yaml index a076b37738..ec4a425912 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_male.yaml index 18a0c61b34..82972e68fb 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_female.yaml index b4f0da9fb2..308b6cf390 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_male.yaml index 6f38324fb1..dbaaf1cfb2 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_female.yaml index 9b9fffba71..90876f9c48 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_male.yaml index faa63d5da2..13e22a4254 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_female.yaml index 5676805684..3cfaadbca6 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_male.yaml index 617534a32c..4eca52070e 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_female.yaml index 4df93bc6fd..c5bfe777ef 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_male.yaml index ed0e876223..ad0bdc7f35 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_female.yaml index 3f5bf77d04..9a09142aba 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_male.yaml index 01460bdfc9..3aaa41b775 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_female.yaml index a57eaeb5f7..f1947e162b 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_male.yaml index 02691cc114..6eeac64d56 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_female.yaml index 6240ceaeb8..d5b0084bf3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -57,19 +58,6 @@ inputs: - 9 - 10 - 11 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -148,6 +136,19 @@ inputs: - false - false - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_male.yaml index 24debeacd6..3e523d625a 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2012/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -33,13 +34,6 @@ inputs: - 3 - 4 - 5 - weiblich: - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -82,6 +76,13 @@ inputs: - false - false - false + weiblich: + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_female.yaml index 898719bd6f..a460724651 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_male.yaml index 908bbd2cea..fcb38f850e 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_female.yaml index c9f80093d9..c8f3ee160f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_male.yaml index 30ec142a19..22edf67e9e 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_female.yaml index 93a5f91506..24ea4edc7c 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_male.yaml index bcaa6207a1..598a551839 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_female.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_female.yaml index 8860d4ae7a..3389429680 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -81,25 +82,6 @@ inputs: - 15 - 16 - 17 - weiblich: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -138,6 +120,25 @@ inputs: - true - true - false + weiblich: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_male.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_male.yaml index 79adaa2ac6..eff7037136 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -81,25 +82,6 @@ inputs: - 15 - 16 - 17 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -138,6 +120,25 @@ inputs: - true - true - false + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.083333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_female.yaml index 690ec4dbaf..16e907b8ce 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_male.yaml index 1f1753e2b7..351740ded9 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_female.yaml index b0c42a6ec3..87a8650426 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.416667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_male.yaml index 97756fbba8..78163f2001 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.416667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_female.yaml index 768a7ad7f8..0951e58ba0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_male.yaml index e368a29483..9264a1ebbb 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_female.yaml index c06e45fdff..f457e87a21 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_male.yaml index 2aad8e89ff..55c8914f92 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.583333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_female.yaml index 3032543bae..49e56d145f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_male.yaml index 727cf17fca..69ad6442fd 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1954_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_female.yaml index 599c76195c..775cdf32be 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.75 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_male.yaml index 670f096b25..057bba1a92 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1955_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.75 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_female.yaml index 81b262f39f..f0cef6883e 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_male.yaml index b386b91844..2bfe69b862 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1956_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_female.yaml index c1710db0c3..a322c51f34 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.916667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_male.yaml index 7ee6c24c11..036fac29da 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1957_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.916667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_female.yaml index 83c7fcf5cb..b99478a58f 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_male.yaml index f04d61049d..3c41de8d85 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1958_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_female.yaml index e54c55ccd3..50cd0ef3c3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_male.yaml index c611e79252..ca9d5e9f40 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1959_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.166667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_female.yaml index dac8f19a4b..cb650905f3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_male.yaml index 17b5d75e4d..2b627321b1 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1960_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.333333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_female.yaml index 439ce6e4a2..6ce3c48254 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_male.yaml index 4bcaff1662..177e429a5a 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1961_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.5 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_female.yaml index 08f92b64b0..3f614dd03d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_male.yaml index 699d6bebb3..38b80f9a5d 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1962_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.666667 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_female.yaml index d50ce19ae7..3a740ff6c7 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_male.yaml index 8566cb84ff..5ae9ad9bf3 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1963_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.833333 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_female.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_female.yaml index 0af0b3f30e..b24455cd47 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_female.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - true - - true - - true sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - true + - true + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_male.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_male.yaml index 41c4e7ac41..fbc53f44c0 100644 --- a/src/_gettsim_tests/test_data/rente_anspruch/2024/cohort_1964_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_male.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 source: Made up from the law inputs: assumed: {} @@ -21,10 +22,6 @@ inputs: - 0 - 1 - 2 - weiblich: - - false - - false - - false sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false - true @@ -33,6 +30,10 @@ inputs: - true - true - false + weiblich: + - false + - false + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_frauen.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_frauen.yaml index 5d7194251b..3e8067f4bc 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_frauen.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 21 p_id: - 21 - weiblich: - - true sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 11.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 180.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj.yaml index 02f6e53bfa..a62ad6cf8f 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 24 p_id: - 24 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 420.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_arbeitsl.yaml index 33e1a02686..84cbed5a14 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 22 p_id: - 22 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 420.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_frauen.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_frauen.yaml index 4320afc422..54e40d2bd9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_langj_and_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_frauen.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 23 p_id: - 23 - weiblich: - - true sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 12.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 420.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_ohne_vorzeitig.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_ohne_vorzeitig.yaml index 520981f8f5..aa1fe8fac4 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_ohne_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_ohne_vorzeitig.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 25 p_id: - 25 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 100.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_wegen_arbeitsl.yaml index 321048ea85..0ddce156b3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1937_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1937_wegen_arbeitsl.yaml index 077458cce5..691e51dc2a 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1937_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1938_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1938_wegen_arbeitsl.yaml index 29c633d452..f7b0f56b00 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1938_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1939_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1939_wegen_arbeitsl.yaml index b30731a280..0aed9404d6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1939_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1940_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1940_wegen_arbeitsl.yaml index 9370648f28..6937ae8126 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1940_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1941_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1941_wegen_arbeitsl.yaml index bb78dfa625..a83d8d00f7 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1941_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1942_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1942_wegen_arbeitsl.yaml index 4bde2dfe67..f7308388a3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1942_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 7 p_id: - 7 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1943_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1943_wegen_arbeitsl.yaml index e8bbc301ed..f638c02f5c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1943_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 8 p_id: - 8 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1944_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1944_wegen_arbeitsl.yaml index 3e46fa761e..c2f67f34ae 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1944_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 9 p_id: - 9 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.833333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1945_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1945_wegen_arbeitsl.yaml index b1d6f3631d..4e9e6f1c74 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1945_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 10 p_id: - 10 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1946_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1946_wegen_arbeitsl.yaml index df46d6bf90..a0ee1dca48 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1946_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 11 p_id: - 11 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1947_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1947_wegen_arbeitsl.yaml index 5038768bfd..e8109fb57e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1947_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 12 p_id: - 12 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1948_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1948_wegen_arbeitsl.yaml index 6cb74f8edd..c39e313fd9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1948_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 13 p_id: - 13 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1949_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1949_wegen_arbeitsl.yaml index 2a25794e86..47a957c7d9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1949_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 14 p_id: - 14 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1950_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1950_wegen_arbeitsl.yaml index 0d95d61a2b..4782b37373 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1950_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 15 p_id: - 15 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1951_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1951_wegen_arbeitsl.yaml index f24b42c0a1..38638d34ff 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1951_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 16 p_id: - 16 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1952_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1952_wegen_arbeitsl.yaml index c403a052c4..5bcb9e283b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1952_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 17 p_id: - 17 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1953_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1953_wegen_arbeitsl.yaml index f73d32ce56..36dbe61e1c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1953_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 18 p_id: - 18 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1954_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1954_wegen_arbeitsl.yaml index 7427246870..1955823a28 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1954_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 19 p_id: - 19 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1955_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1955_wegen_arbeitsl.yaml index c5c6389af3..0103616da3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1955_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 20 p_id: - 20 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/eligibility_pathways.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/eligibility_pathways.yaml index 041452ff5b..f59d67cd88 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1991/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/eligibility_pathways.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: @@ -55,23 +56,6 @@ inputs: - 13 - 14 - 15 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - 0.0 @@ -225,6 +209,23 @@ inputs: - 120.0 - 120.0 - 120.0 + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false provided: {} outputs: sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1930_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1930_wegen_arbeitsl.yaml index b893c7e10b..8310af2f04 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1930_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1937_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1937_wegen_arbeitsl.yaml index cf9ab50b7c..70ad8125a8 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1937_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1938_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1938_wegen_arbeitsl.yaml index 2a035efa77..fdc9cd0462 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1938_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1939_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1939_wegen_arbeitsl.yaml index d852d6f4cf..dfaf5facb7 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1939_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1940_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1940_wegen_arbeitsl.yaml index b048ca11d6..87c47af48c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1940_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1941_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1941_wegen_arbeitsl.yaml index 8e71813a66..400e6308ff 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1941_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1942_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1942_wegen_arbeitsl.yaml index ca0ef847a7..22405c529d 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1942_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 7 p_id: - 7 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1943_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1943_wegen_arbeitsl.yaml index b8ae95b4f5..b6104d4eae 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1943_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 8 p_id: - 8 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1944_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1944_wegen_arbeitsl.yaml index 4bb741eb44..2838d59b27 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1944_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 9 p_id: - 9 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.833333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1945_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1945_wegen_arbeitsl.yaml index 6cffb40a3c..472ef54a57 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1945_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 10 p_id: - 10 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1946_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1946_wegen_arbeitsl.yaml index 5222d06a40..cd2e6afa49 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1946_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 11 p_id: - 11 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1947_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1947_wegen_arbeitsl.yaml index 5429bb78a1..10ab86703f 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1947_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 12 p_id: - 12 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1948_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1948_wegen_arbeitsl.yaml index 63b4da351a..7fcb9538da 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1948_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 13 p_id: - 13 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1949_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1949_wegen_arbeitsl.yaml index 0a1de9f575..e8be4dee98 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1949_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 14 p_id: - 14 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1950_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1950_wegen_arbeitsl.yaml index 5f0a99dcb9..cc5e04f1eb 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1950_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 15 p_id: - 15 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1951_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1951_wegen_arbeitsl.yaml index 06cd92866e..870a8f9e82 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1951_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 16 p_id: - 16 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1952_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1952_wegen_arbeitsl.yaml index 50be8105d9..399fac3e9c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1952_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 17 p_id: - 17 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1953_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1953_wegen_arbeitsl.yaml index 7cb7e881e1..f8dc4435cf 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1953_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 18 p_id: - 18 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1954_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1954_wegen_arbeitsl.yaml index dddb0ebfbb..289006fcb9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1954_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 19 p_id: - 19 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1955_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1955_wegen_arbeitsl.yaml index f321eceb26..d0d1efa071 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1992/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1955_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 20 p_id: - 20 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,16 +28,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml index 8a60067d0a..fce7fa4d88 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -1,40 +1,33 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 62 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + entgeltp: + - 31.0625 geburtsjahr: - 1936 geburtsmonat: - 2 hh_id: - 23 - p_id: - - 23 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - entgeltp: - - 31.0625 jahr: - 1996 + p_id: + - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -43,20 +36,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__langjährig__altersgrenze: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml index 07913274be..528cc1222e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml index e7c91fab3c..591944b54b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml index 0da992b569..453413888b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml index 8d6edd23be..83ae248f61 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index 708f6c80e5..473acf42cd 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 21 p_id: - 21 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml index 3b09d24da1..2604691023 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index 3f653ecee7..a3755f5d64 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 22 p_id: - 22 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml index eb2aa0da59..5395f79ed0 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index ac7a466616..1403bd5e49 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 23 p_id: - 23 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml index 4b09dd40a5..c987e8948b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 7 p_id: - 7 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index 13587b541e..5823333f3a 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 23 p_id: - 23 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml index c307c460c2..5fbe0d1051 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 8 p_id: - 8 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index 34d4d1d601..e0aab450d3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 24 p_id: - 24 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.833333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml index c4def7e7bf..5d2d8b06be 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 9 p_id: - 9 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml index 347531f6ea..1879d33ec8 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 10 p_id: - 10 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml index 4eb7d79f6c..1a15b553d9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 11 p_id: - 11 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml index 387d2916b1..5182dbbf1c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 12 p_id: - 12 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml index 484caf064a..4f4c6e6083 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 13 p_id: - 13 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml index 1974cf03df..a94fb9e650 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 14 p_id: - 14 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml index ea71453e72..ee24ae047c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 15 p_id: - 15 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml index d32e33bad8..63060ca2c1 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 16 p_id: - 16 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml index c0858bf055..57b17bdd11 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 17 p_id: - 17 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml index 0ce7c9addc..841ca6e226 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 18 p_id: - 18 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml index 466ace606b..d4c0a0ca8e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 19 p_id: - 19 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml index 1bcee0992d..38ee5d0f61 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1996-08-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 20 p_id: - 20 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1930_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1930_wegen_arbeitsl.yaml index 850f360f33..f152768338 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1930_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index 66cc7ad812..3cbf575b83 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 14 p_id: - 14 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 2885fb4237..f2179f2b41 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 13 p_id: - 13 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1937_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1937_wegen_arbeitsl.yaml index bbfe26cbcf..6e9182f2a6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1937_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1938_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1938_wegen_arbeitsl.yaml index 8f5189bdc5..8a045c471e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1938_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1939_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1939_wegen_arbeitsl.yaml index 3b8f415880..1ec9fa135d 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1939_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index 0485a12c34..a0d0d28ada 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 12 p_id: - 12 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_wegen_arbeitsl.yaml index b442f47a88..9efeff3ac4 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index b80d3b4294..04aa560762 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 8 p_id: - 8 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_wegen_arbeitsl.yaml index 66286d0093..4b410ee556 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index 7947229c43..f5ca86e41c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 9 p_id: - 9 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_wegen_arbeitsl.yaml index c0823e0fc9..3cd4b1408b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 7 p_id: - 7 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index cf367dbf08..ba07fd38d6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 10 p_id: - 10 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index d20cf85f5a..9cb2f61252 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 11 p_id: - 11 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.833333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml index b48165b4e8..38b47de5dc 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index 4ac76ffb8d..b37b0eb6c3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 14 p_id: - 14 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 29ef8ea94b..0bd2e13b3f 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 13 p_id: - 13 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml index 2854c47682..8edcc1e9c3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml index 54b702b58e..4b1ec35081 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml index 8fb4c829dc..818919f0e9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 62.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 72cb23c0a6..c4314e1402 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 12 p_id: - 12 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml index 65eb73581c..38b4698cb2 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index ee49357312..dd808bf2af 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 8 p_id: - 8 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml index d0e24d6ad8..7e6f2fc798 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.083333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 22e0e98839..07f39ce9e7 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 9 p_id: - 9 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml index ae4945c556..215113e543 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 7 p_id: - 7 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index b44936749f..24bc049512 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 10 p_id: - 10 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.583333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 4f15b99cdc..1a3cf23678 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 11 p_id: - 11 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.833333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml index 4acac0615a..c19d0447e1 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 15 p_id: - 15 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml index 1a630dcc54..cc32a9142d 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 16 p_id: - 16 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml index 9d4eca44bb..673e8ba9ef 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 17 p_id: - 17 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml index d16b9f7430..0ed1cb0240 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 18 p_id: - 18 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml index 9207dd687c..d293cae165 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 19 p_id: - 19 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml index 1199c2899c..3413c99369 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 20 p_id: - 20 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml index 4ea36d4f3f..d5d15dc7d0 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2007-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 21 p_id: - 21 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -25,10 +24,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -37,16 +32,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index 384a31b5ec..1ed683df56 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 39 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 geburtsjahr: - 1971 geburtsmonat: - 1 hh_id: - 1 - p_id: - - 1 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 jahr: - 2010 + p_id: + - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index 5f67e58985..c7af941786 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -1,30 +1,26 @@ --- info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower. + note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze + is lower.' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Kurz-vor-der-Rente/Wann-kann-ich-in-Rente-gehen/Wann-kann-ich-in-Rente-gehen_detailseite.html" inputs: assumed: {} provided: alter: - 59 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 geburtsjahr: - 1956 geburtsmonat: - 1 hh_id: - 19 - p_id: - - 19 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 jahr: - 2010 + p_id: + - 19 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -35,10 +31,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 35.2067 sozialversicherung__rente__entgeltpunkte_west: @@ -51,20 +43,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.83333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index 1e8de69a2f..fb488cbb28 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 42 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 geburtsjahr: - 1968 geburtsmonat: - 1 hh_id: - 2 - p_id: - - 2 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 jahr: - 2010 + p_id: + - 2 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 474c63d137..2b97cf9b2e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -1,28 +1,25 @@ --- info: note: 'Beispiel: Erna Rüstig (Altersrente für Frauen)' + precision: 0.1 source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ inputs: assumed: {} provided: alter: - 71 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1938 geburtsmonat: - 12 hh_id: - 24 - p_id: - - 24 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2010 + p_id: + - 24 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 15.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 108.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 9.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 sozialversicherung__rente__monate_in_schulausbildung: - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 298aaf3f0d..97a8001da2 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2010 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 1c0a34a592..6f1d44b826 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -1,30 +1,26 @@ --- info: - note: >- - From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected - based on source. + note: 'From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected + based on source.' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 42 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 geburtsjahr: - 1968 geburtsmonat: - 1 hh_id: - 3 - p_id: - - 3 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 jahr: - 2010 + p_id: + - 3 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -35,10 +31,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 21.3696 sozialversicherung__rente__entgeltpunkte_west: @@ -51,20 +43,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index c1661a982d..e05d625bb9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -1,40 +1,32 @@ --- info: - note: >- - based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a mixed(east/west) - earning biography + note: 'based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a mixed(east/west) + earning biography' + precision: 0.1 source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ inputs: assumed: {} provided: alter: - 71 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1938 geburtsmonat: - 12 hh_id: - 30 - p_id: - - 30 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2010 + p_id: + - 30 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 15.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 10.0 sozialversicherung__rente__entgeltpunkte_west: @@ -47,20 +39,28 @@ inputs: - 108.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 9.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 sozialversicherung__rente__monate_in_schulausbildung: - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 60.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index 19f7e6b438..4b22e63755 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 46 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 geburtsjahr: - 1964 geburtsmonat: - 1 hh_id: - 4 - p_id: - - 4 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 jahr: - 2010 + p_id: + - 4 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index 21623ae0a8..ec5bca734a 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 43 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1967 geburtsmonat: - 1 hh_id: - 5 - p_id: - - 5 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2010 + p_id: + - 5 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index 231ac34bc1..cb5c0cbea1 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 59 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 geburtsjahr: - 1951 geburtsmonat: - 1 hh_id: - 6 - p_id: - - 6 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 jahr: - 2010 + p_id: + - 6 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.41666667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml similarity index 93% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index aafbd85f22..161400d8c8 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -1,30 +1,26 @@ --- info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower. Verified or corrected using source. + note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze + is lower. Verified or corrected using source.' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 59 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 geburtsjahr: - 1951 geburtsmonat: - 1 hh_id: - 7 - p_id: - - 7 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 jahr: - 2010 + p_id: + - 7 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -35,10 +31,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 35.2067 sozialversicherung__rente__entgeltpunkte_west: @@ -51,20 +43,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.41666667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 0ccd5a1102..8e51226a0c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 52 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 700.0 geburtsjahr: - 1960 geburtsmonat: - 1 hh_id: - 10 - p_id: - - 10 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 jahr: - 2012 + p_id: + - 10 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.33333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index e724b1a631..c827e4c30c 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 53 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1959 geburtsmonat: - 1 hh_id: - 11 - p_id: - - 11 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 jahr: - 2012 + p_id: + - 11 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.16666667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index 32413557e6..f6fdc89de6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 27 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 geburtsjahr: - 1985 geburtsmonat: - 1 hh_id: - 8 - p_id: - - 8 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 jahr: - 2012 + p_id: + - 8 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index 2fcbd4af8f..4b95ee1f22 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -1,28 +1,25 @@ --- info: note: Verified or corrected using source. + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 30 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 geburtsjahr: - 1982 geburtsmonat: - 1 hh_id: - 9 - p_id: - - 9 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 jahr: - 2012 + p_id: + - 9 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml similarity index 93% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index 8ff45a0d33..b490035eb7 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -1,30 +1,25 @@ --- info: - note: >- - Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) - https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ + note: 'Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/' + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 65 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: - 12 hh_id: - 25 - p_id: - - 25 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2014 + p_id: + - 25 sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: @@ -37,10 +32,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -53,20 +44,28 @@ inputs: - 108.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 60.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 9.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 sozialversicherung__rente__monate_in_schulausbildung: - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 10.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 420.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml index 6d508d7615..42b2ee78ea 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,8 +14,6 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -23,10 +22,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -35,16 +30,22 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml index 4a87f172b8..9c34ebea8d 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: @@ -55,23 +56,6 @@ inputs: - 13 - 14 - 15 - weiblich: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 - 0.0 @@ -242,6 +226,23 @@ inputs: - 120.0 - 120.0 - 120.0 + weiblich: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false provided: {} outputs: sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index 193935fcaa..2d87b3be48 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 57 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 300.0 geburtsjahr: - 1958 geburtsmonat: - 1 hh_id: - 12 - p_id: - - 12 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 jahr: - 2015 + p_id: + - 12 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index 5cf34157df..6ca0011790 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 58 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 geburtsjahr: - 1957 geburtsmonat: - 1 hh_id: - 13 - p_id: - - 13 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 jahr: - 2015 + p_id: + - 13 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.91666667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index dd5b44b756..180936d1f3 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 33 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 geburtsjahr: - 1982 geburtsmonat: - 1 hh_id: - 14 - p_id: - - 14 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 jahr: - 2015 + p_id: + - 14 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index 6c1daf0835..b26fe7fabb 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -1,28 +1,25 @@ --- info: note: 'From eastern Germany: earns more Entgeltpunkte for same wage.' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 33 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 900.0 geburtsjahr: - 1982 geburtsmonat: - 1 hh_id: - 15 - p_id: - - 15 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 jahr: - 2015 + p_id: + - 15 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 10.6965 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index a7fb7d9aa0..36baaf798d 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 45 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1200.0 geburtsjahr: - 1970 geburtsmonat: - 1 hh_id: - 16 - p_id: - - 16 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 jahr: - 2015 + p_id: + - 16 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 67.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index 7ac9ab28ac..ab729ce044 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1952 geburtsmonat: - 1 hh_id: - 17 - p_id: - - 17 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 17 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index 3de2a3f6bf..643bded74e 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1944 geburtsmonat: - 1 hh_id: - 18 - p_id: - - 18 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index c831e9278d..926a9434ee 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index c831e9278d..926a9434ee 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 64.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index 41df968829..4c076a5547 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 11.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 61.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index fcfbe56fd6..6a8fcd6e86 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 63 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1952 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 11.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 6ef5d7b00d..06b8decbf9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 62 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 182.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index dfdcc08f37..9824253cd6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -1,28 +1,25 @@ --- info: note: '' + precision: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} provided: alter: - 62 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: - 12 hh_id: - 18 - p_id: - - 18 - weiblich: - - true - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 jahr: - 2015 + p_id: + - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 11.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 430.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 430.0 + weiblich: + - true + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml similarity index 97% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml index 8dac484835..6fd75bcba9 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/age_at_retirement.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml @@ -1,6 +1,7 @@ --- info: note: null + precision: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml index ec608b84be..0e9c3382df 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 3 p_id: - 3 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml index 6c9bb6d103..aa83e908b5 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 4 p_id: - 4 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.166667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml index d138baa498..e4295848bd 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 5 p_id: - 5 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml similarity index 98% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml index 96ce9a43ea..a832789473 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 6 p_id: - 6 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 540.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 63.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml index c7c3905d41..3bc489d2f6 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1955_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 1 p_id: - 1 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.75 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml index 6942fbf6b1..ad5a8d1aea 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/cohort_1958_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: {} @@ -13,18 +14,12 @@ inputs: - 2 p_id: - 2 - weiblich: - - false sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - true - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: @@ -33,20 +28,26 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + weiblich: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml index d7afa20ab1..0ffd607401 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml @@ -1,6 +1,7 @@ --- info: note: Made up using the text of the law + precision: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index 6820ec2f3d..23a94c487b 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -1,28 +1,25 @@ --- info: note: https://www.smart-rechner.de/rentenbeginn/rechner.php + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 53 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1959 geburtsmonat: - 1 hh_id: - 20 - p_id: - - 20 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 jahr: - 2018 + p_id: + - 20 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.16666667 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index adfe38d98d..292f7320ed 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -1,30 +1,26 @@ --- info: - note: >- - from eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower + note: 'from eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze + is lower' + precision: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: assumed: {} provided: alter: - 59 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 geburtsjahr: - 1952 geburtsmonat: - 1 hh_id: - 21 - p_id: - - 21 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 jahr: - 2018 + p_id: + - 21 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -35,10 +31,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 35.2067 sozialversicherung__rente__entgeltpunkte_west: @@ -51,20 +43,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.5 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index 306e0e668e..9e00fdb3aa 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -1,30 +1,26 @@ --- info: - note: >- - From eastern Germany: earns less Entgeltpunkte for same wage because - Beitragsbemessungsgrenze is lower + note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze + is lower' + precision: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: assumed: {} provided: alter: - 59 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 8000.0 geburtsjahr: - 1947 geburtsmonat: - 1 hh_id: - 22 - p_id: - - 22 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 jahr: - 2018 + p_id: + - 22 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -35,10 +31,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 35.2067 sozialversicherung__rente__entgeltpunkte_west: @@ -51,20 +43,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.08333333 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 5acf4e3993..de49c4648a 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -1,28 +1,25 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 53 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1958 geburtsmonat: - 1 hh_id: - 23 - p_id: - - 23 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 jahr: - 2018 + p_id: + - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__entgeltpunkte_west: @@ -49,20 +42,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 66.0 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index 165283cba3..d118e63a75 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -1,28 +1,25 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 53 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1944 geburtsmonat: - 2 hh_id: - 23 - p_id: - - 23 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 jahr: - 2018 + p_id: + - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_west: - 31.0625 sozialversicherung__rente__ersatzzeiten_monate: @@ -47,20 +40,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - 31.0625 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml similarity index 99% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index 165283cba3..d118e63a75 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -1,28 +1,25 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen + precision: 0.1 source: '' inputs: assumed: {} provided: alter: - 53 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1944 geburtsmonat: - 2 hh_id: - 23 - p_id: - - 23 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 jahr: - 2018 + p_id: + - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 0.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: @@ -33,10 +30,6 @@ inputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__entgeltpunkte_west: - 31.0625 sozialversicherung__rente__ersatzzeiten_monate: @@ -47,20 +40,28 @@ inputs: - 0.0 sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 - sozialversicherung__rente__monate_in_schulausbildung: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: + - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - 31.0625 diff --git a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml similarity index 94% rename from src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml index 02a00eccfe..93aa6d5538 100644 --- a/src/_gettsim_tests/test_data/rente_altersgrenzen/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.1 inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 131fab0766..01c969d6ca 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 5 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 44.15686275 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 22132514dc..548897f1dc 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 10 p_id: - 5 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -34,6 +33,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml index a05545af94..47df69bb3b 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 1 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.949 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml index 142a060f35..c2e8cd4121 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 2 p_id: - 1 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -34,6 +33,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml index a707697265..c507d6ac68 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 2 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.901 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml index 6f7f5fe0db..f0965470a6 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 4 p_id: - 2 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -34,6 +33,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 8642508b05..7ea2531db8 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 3 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index fcf7422db1..7f02c25048 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 6 p_id: - 3 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -34,6 +33,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 9b3e96883b..6eb7bc4c69 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 4 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 30.70909091 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 0b1ad80e11..d2d8c4a064 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 8 p_id: - 4 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -34,6 +33,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index ab9f4a6bff..58751cbe36 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 10 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 24.27586207 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 5eef43da7e..bb875b96e1 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 10 p_id: - 10 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml index 0cad46197b..4390e28443 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 6 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml index afc4114afc..7067e30c9e 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 4 p_id: - 7 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml index e4e5b2838c..4987123d28 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 7 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.937 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml index 5b2aa37d56..4e96fcbd54 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 2 p_id: - 6 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml index a0ab314b43..130055ef9e 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 8 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index b932e02139..22828da963 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 6 p_id: - 8 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml index b95387e515..5f04f7e558 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 9 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 17.40659341 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 2e18c4bb63..12fcf8309a 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 8 p_id: - 9 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 1e4f47ccad..51cd5c2389 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 15 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 15.64444444 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 480a11cbc0..617aeccf76 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1980 geburtsmonat: - 10 - p_id: - - 15 - wohnort_ost: - - true jahr: - 2008 + p_id: + - 15 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml index c77c515e6f..2edb922d46 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 11 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml index 4af95f32fb..e35940e5e3 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1950 geburtsmonat: - 2 - p_id: - - 11 - wohnort_ost: - - false jahr: - 2008 + p_id: + - 11 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 99c1a7b7fd..c04e7a907a 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 12 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 296fc0ebe7..fc32fc56c3 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1960 geburtsmonat: - 4 - p_id: - - 12 - wohnort_ost: - - false jahr: - 2008 + p_id: + - 12 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml index faf3e09f8f..29cbc406fb 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 13 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 72e8805293..0055705cff 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1970 geburtsmonat: - 6 - p_id: - - 13 - wohnort_ost: - - false jahr: - 2008 + p_id: + - 13 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 5aeb342009..bb8d2d775b 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 14 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 11.39568345 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index ef8a34e6ba..750c4536c8 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1980 geburtsmonat: - 8 - p_id: - - 14 - wohnort_ost: - - true jahr: - 2008 + p_id: + - 14 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml index 08a851d609..cf809f4d75 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 20 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 33.52380952 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml index 9edd1a169c..07fc63cb30 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 10 p_id: - 20 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml index f4a94b668a..292024eb9c 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 16 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 4a0cf75674..d0dd892c84 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 2 p_id: - 16 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 665053d3c9..9710c6ef6f 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 17 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 27f8cc8776..a40e75c38a 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 4 p_id: - 17 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml index df6fe1ad84..6cc4f1972c 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 18 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index cfda89f870..c8f558d189 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 6 p_id: - 18 - wohnort_ost: - - false sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml index ec5cf3d3df..8dcecf49b6 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 19 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 23.64179104 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 08c5b4fefb..9e937bd8c1 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -10,8 +11,6 @@ inputs: - 8 p_id: - 19 - wohnort_ost: - - true sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_1.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_1.yaml index 6e5e528f7c..8d0c672471 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_1.yaml @@ -1,26 +1,27 @@ --- info: + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 21 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: - 0.0 sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 108.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 380.0 sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 380.0 provided: {} outputs: sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_2.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_2.yaml index 6b5abf6bed..62a71c605c 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_2.yaml @@ -1,26 +1,27 @@ --- info: + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 22 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: - 0.0 sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 120.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 200.0 sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 100.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 200.0 provided: {} outputs: sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_3.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_3.yaml index 29e37ae9b1..fd311491aa 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_3.yaml @@ -1,26 +1,27 @@ --- info: + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 23 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: - 100.0 sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 100.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 250.0 sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 100.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 250.0 provided: {} outputs: sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_4.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_4.yaml index be9fc59bcf..99458d5cb0 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_4.yaml @@ -1,26 +1,27 @@ --- info: + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 24 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: - 0.0 sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 provided: {} outputs: sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_5.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_5.yaml index 9af7006478..336d525275 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/langj_versicherte_wartezeit_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_5.yaml @@ -1,26 +1,27 @@ --- info: + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 25 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 sozialversicherung__rente__freiwillige_beitragsmonate: - 0.0 sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 60.0 provided: {} outputs: sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml index 5c392b5087..2575946f65 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 25 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 29.44 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index fd280e9921..e33be17da3 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1995 geburtsmonat: - 10 - p_id: - - 25 - wohnort_ost: - - true jahr: - 2018 + p_id: + - 25 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 746ff27abd..2bb4310084 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 21 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 1ffb260105..5f4acad93a 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1960 geburtsmonat: - 2 - p_id: - - 21 - wohnort_ost: - - false jahr: - 2018 + p_id: + - 21 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 1c45716670..6a9f115dae 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 22 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index e6c31ad6f7..8c0fff775d 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1970 geburtsmonat: - 4 - p_id: - - 22 - wohnort_ost: - - false jahr: - 2018 + p_id: + - 22 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml index cf60a61429..a3cc69900d 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 23 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 83a18dfacd..d3998da0b0 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1980 geburtsmonat: - 6 - p_id: - - 23 - wohnort_ost: - - false jahr: - 2018 + p_id: + - 23 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml index 512768c9a2..c33dc1dc96 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 24 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 11.91366906 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 9c6e8b1300..27475358e2 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1990 geburtsmonat: - 8 - p_id: - - 24 - wohnort_ost: - - true jahr: - 2018 + p_id: + - 24 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml index 5cd0f66ca5..2db6d9d68d 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 31 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 61.23076923 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml index caec23e679..632f41b7af 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 2000 geburtsmonat: - 10 - p_id: - - 31 - wohnort_ost: - - true jahr: - 2020 + p_id: + - 31 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 20.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml index ce7e43ecb1..11736d14f5 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 30 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 61.23076923 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 0.5 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml index 831f647160..04b337d0cb 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 2000 geburtsmonat: - 10 - p_id: - - 30 - wohnort_ost: - - true jahr: - 2020 + p_id: + - 30 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 2 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml index 506c8c3bea..5e32e40bb3 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 28 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.997 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml index 26a757081a..cd974c34c9 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1957 geburtsmonat: - 6 - p_id: - - 28 - wohnort_ost: - - false jahr: - 2020 + p_id: + - 28 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 6 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml index 130050a25e..d5e62c38bf 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 27 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml index 40d0caccc5..899addf517 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1970 geburtsmonat: - 4 - p_id: - - 27 - wohnort_ost: - - false jahr: - 2020 + p_id: + - 27 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 8 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 17f9af6639..69c3c97bd0 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 26 - wohnort_ost: - - false sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 497b7d72ca..64277277ac 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1970 geburtsmonat: - 2 - p_id: - - 26 - wohnort_ost: - - false jahr: - 2020 + p_id: + - 26 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 10 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - false provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml similarity index 97% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml index 850738251b..e10bbcc312 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml @@ -1,13 +1,12 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: p_id: - 29 - wohnort_ost: - - true sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 17.38834951 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: @@ -18,6 +17,8 @@ inputs: - 1.0 sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - 0.892 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__betrag_m: diff --git a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml similarity index 98% rename from src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index 6e21743205..59be96d750 100644 --- a/src/_gettsim_tests/test_data/erwerbsminderungsrente/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 0.01 source: Own calculations inputs: assumed: @@ -8,12 +9,10 @@ inputs: - 1995 geburtsmonat: - 8 - p_id: - - 29 - wohnort_ost: - - true jahr: - 2020 + p_id: + - 29 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -36,6 +35,8 @@ inputs: - 4 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 + wohnort_ost: + - true provided: {} outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml similarity index 97% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml index 2952729c1c..7ebab35a68 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml @@ -1,22 +1,21 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -27,6 +26,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1168.4 diff --git "a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" similarity index 97% rename from "src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" index 97a88f4ff4..4f9c05f355 100644 --- "a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" @@ -1,22 +1,21 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -27,6 +26,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml index 43a929a48d..07ace38519 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: High income and low Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml index 0d27ecd6c5..2a6eb80e8a 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1241.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml index 97f609e151..2cb0d5df94 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: Middle income and high Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 8000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1051.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml index 75ba309d81..2554cef76d 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: Low income and high Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 500.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 500.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1241.2 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml index c53f7361ee..8abd9d16c6 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: High income and low Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 6000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml index b3ec1f1e88..803495d53d 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1367.6 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml index db26474c78..c4686bd10b 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: Middle income and high Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 4000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4000.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 8000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1302.93 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml similarity index 98% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml index 62dae0d21f..7545a28f76 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml @@ -1,22 +1,21 @@ --- info: note: Low income and high Hinzuverdienstdeckel. + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 500.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 500.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - 3000.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -29,6 +28,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1367.6 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml similarity index 97% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml index 7553e17274..5ccda0af1f 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml @@ -1,20 +1,19 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 5000.0 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -25,6 +24,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml similarity index 97% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml index 68c43941a7..c8519dee09 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml @@ -1,20 +1,19 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -25,6 +24,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml similarity index 97% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml index 67b61dd292..e903b4ead6 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml @@ -1,20 +1,19 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 1600.0 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1600.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -25,6 +24,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml similarity index 97% rename from src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml index 9796a8cd66..5952b403ed 100644 --- a/src/_gettsim_tests/test_data/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml @@ -1,20 +1,19 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: alter: - 64 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 600.0 hh_id: - 0 p_id: - 0 - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 sozialversicherung__rente__altersrente__zugangsfaktor: - 1.0 sozialversicherung__rente__bezieht_rente: @@ -25,6 +24,8 @@ inputs: - 40.0 sozialversicherung__rente__grundrente__betrag_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1440.8 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index 61ad588c49..0ddd24cfb1 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -1,9 +1,8 @@ --- info: - note: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das - Grundrentengesetz", + note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 + precision: 1 inputs: assumed: {} provided: @@ -11,18 +10,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 1 - familie__kind: - - false - p_id: - - 1 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -33,6 +20,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 1 + p_id: + - 1 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -51,6 +48,8 @@ inputs: - 14.014 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 897.97 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 65bf1804f3..28a1af14b0 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -1,6 +1,7 @@ --- info: note: Adjusted staatl rente + precision: 1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html (Alexander Langkowski) inputs: @@ -10,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 10 - familie__kind: - - false - p_id: - - 10 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -32,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 10 + p_id: + - 10 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -50,6 +49,8 @@ inputs: - 41.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1402.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml similarity index 86% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index a154b2f518..d391a5ed24 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -1,11 +1,9 @@ --- info: - note: >- - adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. - source: >- - Beispiel Alexander Langkowski / Hatice Yilmaz aus: - https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html + precision: 1 + source: 'Beispiel Alexander Langkowski / Hatice Yilmaz aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' inputs: assumed: {} provided: @@ -13,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 11 - familie__kind: - - false - p_id: - - 11 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -35,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 11 + p_id: + - 11 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -53,6 +49,8 @@ inputs: - 15.5 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 911.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index f9f29b7fbf..216b72cb7b 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -1,6 +1,7 @@ --- info: note: Person with zero Grundrente Bewertungszeiten + precision: 1 source: '' inputs: assumed: {} @@ -9,18 +10,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1990 - hh_id: - - 12 - familie__kind: - - false - p_id: - - 12 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -31,6 +20,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1990 + hh_id: + - 12 + p_id: + - 12 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -49,6 +48,8 @@ inputs: - 0.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 94dcf3bab2..9efae1bec6 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -1,9 +1,8 @@ --- info: - note: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das - Grundrentengesetz", + note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 + precision: 1 inputs: assumed: {} provided: @@ -11,18 +10,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 2 - familie__kind: - - false - p_id: - - 2 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -33,6 +20,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 2 + p_id: + - 2 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -51,6 +48,8 @@ inputs: - 17.5 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 912.93 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index fd764c427e..88ee9d56d6 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -1,9 +1,8 @@ --- info: note: '' - source: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das - Grundrentengesetz", + precision: 1 + source: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: assumed: {} @@ -12,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 3 - familie__kind: - - false - p_id: - - 3 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -34,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 3 + p_id: + - 3 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -52,6 +49,8 @@ inputs: - 21.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 927.88 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index 0a73d4a7a1..277dadc5e9 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -1,8 +1,8 @@ --- info: - note: >- - adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. Beispiel Sabine M. + precision: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: assumed: {} @@ -11,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 4 - familie__kind: - - false - p_id: - - 4 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -33,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 4 + p_id: + - 4 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -51,6 +49,8 @@ inputs: - 28.8 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1069.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml similarity index 94% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index e4eecb8b5a..de86bd145f 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -1,8 +1,8 @@ --- info: - note: >- - Adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: Adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. + precision: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: assumed: {} @@ -11,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 5 - familie__kind: - - false - p_id: - - 5 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - true einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -33,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 5 + p_id: + - 5 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -51,6 +49,8 @@ inputs: - 18.7 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - true outputs: sozialversicherung__rente__altersrente__betrag_m: - 677.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index 3f3489a301..8f2746ad44 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) inputs: @@ -10,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 6 - familie__kind: - - false - p_id: - - 6 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -32,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 6 + p_id: + - 6 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -50,6 +49,8 @@ inputs: - 15.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 806.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index 893b75a810..5f22c960e8 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K. + Dieter P.) inputs: @@ -10,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 7 - familie__kind: - - false - p_id: - - 7 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -32,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 7 + p_id: + - 7 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -50,6 +49,8 @@ inputs: - 15.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 716.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 9b275b518c..abb65e66ee 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -1,6 +1,7 @@ --- info: note: '' + precision: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) + Dieter P.MonikaL inputs: @@ -10,18 +11,6 @@ inputs: - false alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 8 - familie__kind: - - false - p_id: - - 8 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -32,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 8 + p_id: + - 8 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -50,6 +49,8 @@ inputs: - 15.0 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 656.0 diff --git a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml similarity index 87% rename from src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 58830b524a..3d24899e0d 100644 --- a/src/_gettsim_tests/test_data/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -1,11 +1,9 @@ --- info: - note: >- - adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004 - source: >- - Beispiel Richard Frenzel aus: - https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html + precision: 1 + source: 'Beispiel Richard Frenzel aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' inputs: assumed: {} provided: @@ -13,18 +11,6 @@ inputs: - true alter: - 70 - geburtsjahr: - - 1951 - hh_id: - - 9 - familie__kind: - - false - p_id: - - 9 - familie__p_id_ehepartner: - - -1 - wohnort_ost: - - false einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - 0.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -35,6 +21,16 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - 0.0 + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + geburtsjahr: + - 1951 + hh_id: + - 9 + p_id: + - 9 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - 0.0 sozialversicherung__rente__altersrente__zugangsfaktor: @@ -53,6 +49,8 @@ inputs: - 34.5 sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__betrag_m: - 1179.55 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml index 6177ede27a..1a358f664c 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 1 p_id: - 1 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - 65.41666666 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml index ce88734338..3f18462a40 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 24.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml index a6d47f0b43..3793f69024 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1010.31 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml index 827ecc683c..050302c58f 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 3 p_id: - 3 - weiblich: - - false - wohnort_ost: - - true - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - true outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 654.63 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml index 0b2e690eea..cda5851f3f 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 4 p_id: - 4 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 + sozialversicherung__rente__monate_geringfügiger_beschäftigung: + - 0.0 + sozialversicherung__rente__monate_in_arbeitslosigkeit: + - 0.0 + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: + - 0.0 + sozialversicherung__rente__monate_in_ausbildungssuche: + - 0.0 sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 + sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - 0.0 sozialversicherung__rente__pflichtbeitragsmonate: - 480.0 sozialversicherung__rente__private_rente_betrag_m: - 1000.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1673.54 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml index f5ae855321..39d36eefda 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 5 p_id: - 5 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__alter_bei_renteneintritt: - 63.0 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml index 57e8587a94..56652015c3 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 6 p_id: - 6 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 830.82 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml index 15c397bbba..65498d9d0a 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 90 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1931 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 7 p_id: - 7 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 683.8 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml index 1a864ea13a..2daaca765e 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 50 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1971 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 8 p_id: - 8 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 120.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - false sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 2 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 63.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 63.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 300.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml similarity index 99% rename from src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml index 5d7d34b5d0..bec0518a71 100644 --- a/src/_gettsim_tests/test_data/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml @@ -1,12 +1,15 @@ --- info: note: made up, regression test + precision: 1 source: '' inputs: assumed: {} provided: alter: - 70 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 geburtsjahr: - 1951 geburtsmonat: @@ -15,12 +18,6 @@ inputs: - 2 p_id: - 2 - weiblich: - - false - wohnort_ost: - - false - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - 240.0 sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: @@ -33,10 +30,6 @@ inputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - false - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 sozialversicherung__rente__bezieht_rente: - true sozialversicherung__rente__entgeltpunkte_ost: @@ -55,22 +48,30 @@ inputs: - 0.0 sozialversicherung__rente__monat_renteneintritt: - 7 - sozialversicherung__rente__monate_in_mutterschutz: + sozialversicherung__rente__monate_geringfügiger_beschäftigung: - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + sozialversicherung__rente__monate_in_arbeitslosigkeit: - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: + sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 sozialversicherung__rente__monate_in_ausbildungssuche: - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: + sozialversicherung__rente__monate_in_mutterschutz: - 0.0 + sozialversicherung__rente__monate_in_schulausbildung: + - 36.0 sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - 0.0 + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: + - 0.0 + sozialversicherung__rente__pflichtbeitragsmonate: + - 480.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + weiblich: + - false + wohnort_ost: + - false outputs: sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 1025.7 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml index e5d3b7ff34..1930463dbc 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml @@ -1,20 +1,21 @@ --- info: note: '' + precision: 0.01 source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: assumed: {} provided: - hh_id: - - 1 familie__kind: - true - p_id: + hh_id: - 1 jahr: - 2023 kindergeld__betrag_m: - 250.0 + p_id: + - 1 unterhalt__anspruch_m: - 528.0 outputs: diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml index 9d070c2a58..f91630e74e 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml @@ -1,20 +1,21 @@ --- info: note: '' + precision: 0.01 source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: assumed: {} provided: - hh_id: - - 2 familie__kind: - false - p_id: + hh_id: - 2 jahr: - 2023 kindergeld__betrag_m: - 250.0 + p_id: + - 2 unterhalt__anspruch_m: - 905.0 outputs: diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml index 83e8ff9c1e..27ba5839af 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml index 63c70fbd72..76ee9b4192 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml index 208bec2eb4..f1d7ae579c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml index dba6a76528..fc9dba3f4b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml index 0521a4d972..34a84724d3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml index 2972506de5..0f0296ef88 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml index 0521a4d972..34a84724d3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml index 2972506de5..0f0296ef88 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml index 0521a4d972..34a84724d3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml index 2972506de5..0f0296ef88 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml index 0521a4d972..34a84724d3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml index 2972506de5..0f0296ef88 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml index c7321b6044..c14fa13603 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml index b09f2386ea..a371c0d80c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml index 0521a4d972..34a84724d3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml index 2972506de5..0f0296ef88 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml index a2ed664cdf..6c2795efec 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml index 61f0040d63..a83e0044fd 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml index 91cffd4e70..cee48c7483 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 5e7914923f..0c4ffcab4a 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index d05ebd7141..7d6134b3f9 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml index 6006a590ea..8436c0f85e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml index b9ff65e9ac..5540e14472 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 14f8675f05..18273b07b1 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml index 578c869125..3a045ce389 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml index 79040f41bc..2653d184f2 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 5e7914923f..0c4ffcab4a 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index a172e8664f..432ca733b4 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml index 9831357108..1ba60ccfe2 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml index 187813d52f..d5d55c678b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml @@ -1,29 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 45 - 10 - hh_id: - - 5 - - 5 - p_id: - - 6 - - 7 - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -41,6 +27,18 @@ inputs: einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__p_id_elternteil_1: + - -1 + - 6 + familie__p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 5 + - 5 jahr: - 2018 - 2018 @@ -50,6 +48,9 @@ inputs: monat: - 1 - 1 + p_id: + - 6 + - 7 sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml index 23c15199b1..a911074a08 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 5e7914923f..0c4ffcab4a 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index bed05099c0..1700a76708 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml index 6006a590ea..8436c0f85e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml index 95afb4162d..5a861bd662 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 5e7914923f..0c4ffcab4a 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 67c8f15f69..e32ad9fcae 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml index 28824f99c1..b6cd785640 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml index 1534eb74f3..66fca147bb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml @@ -1,35 +1,16 @@ --- info: note: '' + precision: 0.01 source: Regression test inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - familie__alleinerziehend: - - true - - false - - false alter: - 45 - 11 - 14 - hh_id: - - 4 - - 4 - - 4 - p_id: - - 39 - - 41 - - 43 - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - -1 @@ -53,6 +34,22 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + hh_id: + - 4 + - 4 + - 4 jahr: - 2019 - 2019 @@ -65,6 +62,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 39 + - 41 + - 43 sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml index 72f1e475d7..3879793392 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml @@ -1,35 +1,16 @@ --- info: note: '' + precision: 0.01 source: Regression test inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - familie__alleinerziehend: - - true - - false - - false alter: - 45 - 11 - 14 - hh_id: - - 4 - - 4 - - 4 - p_id: - - 39 - - 41 - - 43 - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - -1 @@ -53,6 +34,22 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + hh_id: + - 4 + - 4 + - 4 jahr: - 2019 - 2019 @@ -65,6 +62,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 39 + - 41 + - 43 sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml index 8daefcd633..0c5f9d3e4d 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml @@ -1,35 +1,16 @@ --- info: note: '' + precision: 0.01 source: Regression test inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - familie__alleinerziehend: - - true - - false - - false alter: - 45 - 4 - 11 - hh_id: - - 4 - - 4 - - 4 - p_id: - - 39 - - 41 - - 43 - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - -1 @@ -53,6 +34,22 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + - false + familie__p_id_elternteil_1: + - -1 + - 39 + - 39 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + hh_id: + - 4 + - 4 + - 4 jahr: - 2019 - 2019 @@ -65,6 +62,10 @@ inputs: - 1 - 1 - 1 + p_id: + - 39 + - 41 + - 43 sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml index 29f0a4d6a2..0035c196ef 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml @@ -1,29 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 40 - 8 - hh_id: - - 1 - - 1 - p_id: - - 23 - - 25 - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: @@ -41,6 +27,18 @@ inputs: einkommensteuer__einkünfte__sonstige__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__p_id_elternteil_1: + - -1 + - 23 + familie__p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 1 + - 1 jahr: - 2019 - 2019 @@ -50,6 +48,9 @@ inputs: monat: - 8 - 8 + p_id: + - 23 + - 25 sozialversicherung__arbeitslosen__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml index 9df2422d89..1715ce7f11 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index bd666f7672..ee60c8c301 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 24add4d50d..58aa7d197e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml index aefb823fa4..335875ea47 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml index 837480958c..65469ab043 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 650e7c5256..87fb687b31 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index b9ec1ace02..23d399c1c6 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml index ba96e5679a..f78a6c0ce1 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml index 3af61b7bac..34437b91ff 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index ba7f7b93b8..c3d31f7759 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 3c75d4451b..8a9712b4cb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml index 6739dde646..06194e5e06 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml index 718da828b1..8cdfa02b3e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index ef24d1a6ff..a42c23d41e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index ceae0bb72d..dedb2ac21c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml index a33ca0e6fb..20341408f4 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml index 342a6f54f9..fb4e1f054f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the middle age group (6-11). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 8 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index d7710b919b..4767f9762e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml index 8888e17a1d..b62bd4b80d 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the lower age group (0-5). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 4 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 42e0b4503a..90251e646b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,31 +1,32 @@ --- info: note: One child in the upper age group (12-17). + precision: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} provided: - familie__alleinerziehend: - - true - - false alter: - 45 - 15 - hh_id: - - 0 - - 0 - p_id: - - 0 - - 1 + familie__alleinerziehend: + - true + - false familie__p_id_elternteil_1: - -1 - 0 familie__p_id_elternteil_2: - -1 - -1 + hh_id: + - 0 + - 0 kindergeld__p_id_empfänger: - -1 - 0 + p_id: + - 0 + - 1 unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" index b6bc62efd5..0f90757513 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" @@ -1,10 +1,17 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 33 + - 30 + - 12 + - 10 + - 2 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -41,36 +48,12 @@ inputs: - 2281.0 - 2281.0 - 2281.0 - alter: - - 33 - - 30 - - 12 - - 10 - - 2 - geburtsjahr: - - 1973 - - 1976 - - 1994 - - 1996 - - 2004 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 familie__kind: - false - false - true - true - true - p_id: - - 8 - - 9 - - 10 - - 11 - - 12 familie__p_id_elternteil_1: - -1 - -1 @@ -83,12 +66,18 @@ inputs: - 9 - 9 - 9 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1973 + - 1976 + - 1994 + - 1996 + - 2004 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 jahr: - 2006 - 2006 @@ -101,6 +90,12 @@ inputs: - 280.0 - 280.0 - 280.0 + p_id: + - 8 + - 9 + - 10 + - 11 + - 12 sozialversicherung__rente__bezieht_rente: - false - false @@ -119,6 +114,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 650.0 - 650.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" index 8db65b568c..19274e9065 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 28 + - 1 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -23,30 +27,21 @@ inputs: arbeitslosengeld_2__regelbedarf_m_bg: - 1183.64 - 1183.64 - alter: - - 28 - - 1 - geburtsjahr: - - 1981 - - 2008 - hh_id: - - 3 - - 3 familie__kind: - false - true - p_id: - - 6 - - 7 familie__p_id_elternteil_1: - -1 - 6 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 + geburtsjahr: + - 1981 + - 2008 + hh_id: + - 3 + - 3 jahr: - 2009 - 2009 @@ -56,6 +51,9 @@ inputs: kinderzuschlag__basisbetrag_m_bg: - 140.0 - 140.0 + p_id: + - 6 + - 7 sozialversicherung__rente__bezieht_rente: - false - false @@ -65,6 +63,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 500.0 - 500.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" index 4b83fe2cea..884e552276 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 40 + - 40 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -23,36 +27,30 @@ inputs: arbeitslosengeld_2__regelbedarf_m_bg: - 1170.0 - 1170.0 - alter: - - 40 - - 40 - geburtsjahr: - - 1973 - - 1973 - hh_id: - - 2 - - 2 familie__kind: - false - false - p_id: - - 4 - - 5 familie__p_id_elternteil_1: - -1 - -1 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 + geburtsjahr: + - 1973 + - 1973 + hh_id: + - 2 + - 2 jahr: - 2013 - 2013 kinderzuschlag__basisbetrag_m_bg: - 0.0 - 0.0 + p_id: + - 4 + - 5 sozialversicherung__rente__bezieht_rente: - false - false @@ -62,6 +60,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 400.0 - 400.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" index 267e5a8a1a..fad10e999e 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 75 + - 50 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -23,36 +27,30 @@ inputs: arbeitslosengeld_2__regelbedarf_m_bg: - 1046.0 - 1046.0 - alter: - - 75 - - 50 - geburtsjahr: - - 1939 - - 1964 - hh_id: - - 7 - - 7 familie__kind: - false - false - p_id: - - 18 - - 19 familie__p_id_elternteil_1: - -1 - -1 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 78000.0 - - 0.0 + geburtsjahr: + - 1939 + - 1964 + hh_id: + - 7 + - 7 jahr: - 2014 - 2014 kinderzuschlag__basisbetrag_m_bg: - 0.0 - 0.0 + p_id: + - 18 + - 19 sozialversicherung__rente__bezieht_rente: - false - false @@ -62,6 +60,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 78000.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" index 8ff357b2db..075c9ad3d2 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" @@ -1,10 +1,15 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 30 + - 30 + - 2 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -29,26 +34,10 @@ inputs: - 1765.0 - 1765.0 - 1765.0 - alter: - - 30 - - 30 - - 2 - geburtsjahr: - - 1986 - - 1986 - - 2014 - hh_id: - - 1 - - 1 - - 1 familie__kind: - false - false - true - p_id: - - 1 - - 2 - - 3 familie__p_id_elternteil_1: - -1 - -1 @@ -57,10 +46,14 @@ inputs: - -1 - -1 - 2 - vermögen: - - 0.0 - - 0.0 - - 0.0 + geburtsjahr: + - 1986 + - 1986 + - 2014 + hh_id: + - 1 + - 1 + - 1 jahr: - 2016 - 2016 @@ -69,6 +62,10 @@ inputs: - 140.0 - 140.0 - 140.0 + p_id: + - 1 + - 2 + - 3 sozialversicherung__rente__bezieht_rente: - false - false @@ -81,6 +78,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 350.0 - 350.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" index 33d03a2519..741d6ba50a 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" @@ -1,10 +1,14 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 28 + - 1 arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false @@ -23,30 +27,21 @@ inputs: arbeitslosengeld_2__regelbedarf_m_bg: - 1183.64 - 1183.64 - alter: - - 28 - - 1 - geburtsjahr: - - 1991 - - 2018 - hh_id: - - 6 - - 6 familie__kind: - false - true - p_id: - - 16 - - 17 familie__p_id_elternteil_1: - -1 - 16 familie__p_id_elternteil_2: - -1 - -1 - vermögen: - - 0.0 - - 0.0 + geburtsjahr: + - 1991 + - 2018 + hh_id: + - 6 + - 6 jahr: - 2019 - 2019 @@ -56,6 +51,9 @@ inputs: kinderzuschlag__basisbetrag_m_bg: - 0.0 - 0.0 + p_id: + - 16 + - 17 sozialversicherung__rente__bezieht_rente: - false - false @@ -65,6 +63,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 wohngeld__anspruchshöhe_m_bg: - 356.0 - 356.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" index 888b93339a..091a3912e4 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" @@ -1,10 +1,13 @@ --- info: note: '' + precision: 0.01 source: '' inputs: assumed: {} provided: + alter: + - 80 arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: @@ -17,32 +20,30 @@ inputs: - -1 arbeitslosengeld_2__regelbedarf_m_bg: - 1000.0 - alter: - - 80 - geburtsjahr: - - 1939 - hh_id: - - 8 familie__kind: - false - p_id: - - 20 familie__p_id_elternteil_1: - -1 familie__p_id_elternteil_2: - -1 - vermögen: - - 0.0 + geburtsjahr: + - 1939 + hh_id: + - 8 jahr: - 2019 kinderzuschlag__basisbetrag_m_bg: - 0.0 + p_id: + - 20 sozialversicherung__rente__bezieht_rente: - true unterhalt__tatsächlich_erhaltener_betrag_m: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 0.0 wohngeld__anspruchshöhe_m_bg: - 0.0 wohngeld__anspruchshöhe_m_wthh: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml index ece39a52ae..bbaf707c49 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml @@ -1,39 +1,12 @@ --- info: - note: >- - Expanded test case to include additional household members so that more than seven + note: Expanded test case to include additional household members so that more than seven people are eligible for housing subsidies + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 67 - - 66 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - - false alter: - 42 - 53 @@ -52,70 +25,16 @@ inputs: - 8 - 8 - 8 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - geburtsjahr: - - 1964 - - 1953 - - 1999 - - 1998 - - 1994 - - 2004 - - 2004 - - 2001 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 15 - - 15 - - 15 - - 15 - - 15 - - 15 - - 15 - - 15 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - - true - - true - - true - - true - - true - - true - p_id: - - 66 - - 67 - - 68 - - 69 - - 70 - - 71 - - 72 - - 73 - familie__p_id_ehepartner: + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 67 - 66 - -1 @@ -124,33 +43,15 @@ inputs: - -1 - -1 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 66 - - 66 - - 66 - - 66 - - 66 - - 66 - familie__p_id_elternteil_2: - - -1 - - -1 - - 67 - - 67 - - 67 - - 67 - - 67 - - 67 - vermögen: - - 200000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -232,6 +133,87 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + - true + - true + - true + familie__p_id_ehepartner: + - 67 + - 66 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 66 + - 66 + - 66 + - 66 + - 66 + - 66 + familie__p_id_elternteil_2: + - -1 + - -1 + - 67 + - 67 + - 67 + - 67 + - 67 + - 67 + geburtsjahr: + - 1964 + - 1953 + - 1999 + - 1998 + - 1994 + - 2004 + - 2004 + - 2001 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 15 + - 15 + - 15 + - 15 + - 15 + - 15 + - 15 + - 15 jahr: - 2006 - 2006 @@ -259,6 +241,15 @@ inputs: - 66 - 66 - 66 + p_id: + - 66 + - 67 + - 68 + - 69 + - 70 + - 71 + - 72 + - 73 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -340,6 +331,15 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 200000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml index fa6f59ccf1..f753816a02 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml @@ -1,28 +1,11 @@ --- info: note: No wealth threshold in place before 2009 + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false alter: - 42 - 53 @@ -35,72 +18,24 @@ inputs: - 5 - 5 - 5 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - geburtsjahr: - - 1964 - - 1953 - - 1999 - - 1998 - - 1994 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 4 - - 4 - - 4 - - 4 - - 4 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - - true - - true - - true - p_id: - - 22 - - 23 - - 24 - - 25 - - 26 - familie__p_id_ehepartner: + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 23 - 22 - -1 - -1 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 - - 23 - vermögen: - - 200000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -155,6 +90,60 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + familie__p_id_ehepartner: + - 23 + - 22 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + - 22 + familie__p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 + - 23 + geburtsjahr: + - 1964 + - 1953 + - 1999 + - 1998 + - 1994 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 4 + - 4 + - 4 + - 4 + - 4 jahr: - 2006 - 2006 @@ -173,6 +162,12 @@ inputs: - 22 - 22 - 22 + p_id: + - 22 + - 23 + - 24 + - 25 + - 26 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -227,6 +222,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 200000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml index 57eec64887..cf3335cbfd 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml @@ -1,58 +1,26 @@ --- info: note: Wealth is too high for housing subsidies. + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false alter: - 37 - 8 anzahl_personen_hh: - 2 - 2 - behinderungsgrad: - - 0 - - 0 - geburtsjahr: - - 1972 - - 2001 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 3 - - 3 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - - true - p_id: - - 20 - - 21 - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 20 - familie__p_id_elternteil_2: + - false + arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 - vermögen: - - 95000.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 einkommensteuer__betrag_y_sn: - 1000.0 - 1000.0 @@ -83,6 +51,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - true + - false + familie__kind: + - false + - true + familie__p_id_ehepartner: + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - 20 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1972 + - 2001 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 3 + - 3 jahr: - 2009 - 2009 @@ -92,6 +87,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - 20 + p_id: + - 20 + - 21 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -119,6 +117,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 95000.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml index b36ca78a7f..c383bac6d4 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml @@ -1,58 +1,26 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 19 - - 18 - familie__alleinerziehend: - - false - - false alter: - 40 - 55 anzahl_personen_hh: - 2 - 2 - behinderungsgrad: - - 50 - - 0 - geburtsjahr: - - 1973 - - 1958 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 2 - - 2 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 18 - - 19 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 19 - 18 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 30000.0 - - 0.0 + behinderungsgrad: + - 50 + - 0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -80,6 +48,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 19 + - 18 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1973 + - 1958 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 2 + - 2 jahr: - 2013 - 2013 @@ -89,6 +84,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 18 + - 19 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -116,6 +114,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 30000.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml index b0c36ad71f..19b81423a0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml @@ -1,58 +1,26 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 54 - - 53 - familie__alleinerziehend: - - false - - false alter: - 50 - 55 anzahl_personen_hh: - 2 - 2 - behinderungsgrad: - - 50 - - 0 - geburtsjahr: - - 1963 - - 1958 - geburtsmonat: - - 1 - - 1 - geburtstag: - - 1 - - 1 - hh_id: - - 9 - - 9 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - p_id: - - 53 - - 54 - familie__p_id_ehepartner: + arbeitslosengeld_2__p_id_einstandspartner: - 54 - 53 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - vermögen: - - 90000.0 - - 0.0 + behinderungsgrad: + - 50 + - 0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -80,6 +48,33 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 54 + - 53 + familie__p_id_elternteil_1: + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + geburtsjahr: + - 1963 + - 1958 + geburtsmonat: + - 1 + - 1 + geburtstag: + - 1 + - 1 + hh_id: + - 9 + - 9 jahr: - 2013 - 2013 @@ -89,6 +84,9 @@ inputs: kindergeld__p_id_empfänger: - -1 - -1 + p_id: + - 53 + - 54 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -116,6 +114,9 @@ inputs: unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 + vermögen: + - 90000.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml index a483f6819a..6c769cb371 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml @@ -1,22 +1,11 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 16 - - 15 - - -1 - familie__alleinerziehend: - - false - - false - - false alter: - 45 - 46 @@ -25,50 +14,18 @@ inputs: - 3 - 3 - 3 - behinderungsgrad: - - 0 - - 0 - - 0 - geburtsjahr: - - 1971 - - 1970 - - 2007 - geburtsmonat: - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 1 - - 1 - - 1 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - - true - p_id: - - 15 - - 16 - - 17 - familie__p_id_ehepartner: + - false + arbeitslosengeld_2__p_id_einstandspartner: - 16 - 15 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 15 - familie__p_id_elternteil_2: - - -1 - - -1 - - 16 - vermögen: - - 120000.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 1000.0 - 1000.0 @@ -109,6 +66,42 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 16 + - 15 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 15 + familie__p_id_elternteil_2: + - -1 + - -1 + - 16 + geburtsjahr: + - 1971 + - 1970 + - 2007 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 1 + - 1 + - 1 jahr: - 2016 - 2016 @@ -121,6 +114,10 @@ inputs: - -1 - -1 - 15 + p_id: + - 15 + - 16 + - 17 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -157,6 +154,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 120000.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml index f87509826d..e1773902d3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml @@ -1,52 +1,11 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 35 - - 34 - - 37 - - 36 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false alter: - 45 - 42 @@ -75,105 +34,21 @@ inputs: - 13 - 13 - 13 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - geburtsjahr: - - 1973 - - 1976 - - 1963 - - 1961 - - 1993 - - 2000 - - 2002 - - 2004 - - 2005 - - 2006 - - 1998 - - 2009 - - 2011 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - - 7 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - false - false - false - - true - - true - - true - - true - - true - - true - - true - - true - p_id: - - 34 - - 35 - - 36 - - 37 - - 38 - - 39 - - 40 - - 41 - - 42 - - 43 - - 44 - - 45 - - 46 - familie__p_id_ehepartner: + - false + - false + - false + - false + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 35 - 34 - 37 @@ -187,48 +62,20 @@ inputs: - -1 - -1 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - familie__p_id_elternteil_2: - - -1 - - -1 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - vermögen: - - 4100.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 1000.0 - 1000.0 @@ -355,6 +202,132 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + familie__p_id_ehepartner: + - 35 + - 34 + - 37 + - 36 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + familie__p_id_elternteil_2: + - -1 + - -1 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + geburtsjahr: + - 1973 + - 1976 + - 1963 + - 1961 + - 1993 + - 2000 + - 2002 + - 2004 + - 2005 + - 2006 + - 1998 + - 2009 + - 2011 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 + - 7 jahr: - 2018 - 2018 @@ -397,6 +370,20 @@ inputs: - 34 - 34 - 34 + p_id: + - 34 + - 35 + - 36 + - 37 + - 38 + - 39 + - 40 + - 41 + - 42 + - 43 + - 44 + - 45 + - 46 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -523,6 +510,20 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 4100.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml index da89242c06..acbc6684ee 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml @@ -1,31 +1,11 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 48 - - 47 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false alter: - 43 - 48 @@ -40,83 +20,27 @@ inputs: - 6 - 6 - 6 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - geburtsjahr: - - 1975 - - 1970 - - 2004 - - 2003 - - 2012 - - 2013 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 8 - - 8 - - 8 - - 8 - - 8 - - 8 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - - true - - true - - true - - true - p_id: - - 47 - - 48 - - 49 - - 50 - - 51 - - 52 - familie__p_id_ehepartner: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 48 - 47 - -1 - -1 - -1 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 47 - - 47 - - 47 - - 47 - familie__p_id_elternteil_2: - - -1 - - -1 - - 48 - - 48 - - 48 - - 48 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 1000.0 - 1000.0 @@ -180,6 +104,69 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + - true + familie__p_id_ehepartner: + - 48 + - 47 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 47 + - 47 + - 47 + - 47 + familie__p_id_elternteil_2: + - -1 + - -1 + - 48 + - 48 + - 48 + - 48 + geburtsjahr: + - 1975 + - 1970 + - 2004 + - 2003 + - 2012 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 8 + - 8 + - 8 + - 8 + - 8 + - 8 jahr: - 2018 - 2018 @@ -201,6 +188,13 @@ inputs: - 47 - 47 - 47 + p_id: + - 47 + - 48 + - 49 + - 50 + - 51 + - 52 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -264,6 +258,13 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml index 816628cc58..5acad76b1d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml @@ -1,31 +1,11 @@ --- info: note: Wealth is too high for housing subsidies. + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 29 - - 28 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false alter: - 43 - 48 @@ -40,83 +20,27 @@ inputs: - 6 - 6 - 6 - behinderungsgrad: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - geburtsjahr: - - 1975 - - 1970 - - 2004 - - 2003 - - 2012 - - 2013 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 6 - - 6 - - 6 - - 6 - - 6 - - 6 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - - true - - true - - true - - true - p_id: - - 28 - - 29 - - 30 - - 31 - - 32 - - 33 - familie__p_id_ehepartner: + - false + - false + - false + - false + arbeitslosengeld_2__p_id_einstandspartner: - 29 - 28 - -1 - -1 - -1 - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 28 - - 28 - - 28 - - 28 - familie__p_id_elternteil_2: - - -1 - - -1 - - 29 - - 29 - - 29 - - 29 - vermögen: - - 2000000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + behinderungsgrad: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 einkommensteuer__betrag_y_sn: - 7000.0 - 7000.0 @@ -180,6 +104,69 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + - true + familie__p_id_ehepartner: + - 29 + - 28 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 28 + - 28 + - 28 + - 28 + familie__p_id_elternteil_2: + - -1 + - -1 + - 29 + - 29 + - 29 + - 29 + geburtsjahr: + - 1975 + - 1970 + - 2004 + - 2003 + - 2012 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 6 + - 6 + - 6 + - 6 + - 6 + - 6 jahr: - 2018 - 2018 @@ -201,6 +188,13 @@ inputs: - 28 - 28 - 28 + p_id: + - 28 + - 29 + - 30 + - 31 + - 32 + - 33 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -264,6 +258,13 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 2000000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml index bdc1a55129..e1ca6d89c6 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml @@ -1,42 +1,21 @@ --- info: note: '' + precision: 0.01 source: Regression test. inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 52 anzahl_personen_hh: - 1 - behinderungsgrad: - - 0 - geburtsjahr: - - 1967 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 5 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 27 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - vermögen: - - 55000.0 + behinderungsgrad: + - 0 einkommensteuer__betrag_y_sn: - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: @@ -55,12 +34,32 @@ inputs: - 0.0 elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1967 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 5 jahr: - 2019 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 27 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -79,6 +78,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 55000.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: diff --git a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml index 55444dd043..6b2ac8f2ba 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml @@ -1,42 +1,21 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen, Vermögen. + precision: 0.01 source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: assumed: {} provided: - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false alter: - 57 anzahl_personen_hh: - 1 - behinderungsgrad: - - 0 - geburtsjahr: - - 1964 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 10 - familie__kind: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - p_id: - - 55 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - vermögen: - - 31000.0 + behinderungsgrad: + - 0 einkommensteuer__betrag_y_sn: - 300.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: @@ -57,12 +36,32 @@ inputs: - 0.0 elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1964 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 10 jahr: - 2021 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 55 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -81,6 +80,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 31000.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml index f3ec179880..152ce3fdee 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml @@ -1,44 +1,23 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: assumed: {} provided: + alter: + - 57 + anzahl_personen_hh: + - 1 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 57 - anzahl_personen_hh: - - 1 behinderungsgrad: - 0 - geburtsjahr: - - 1966 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 11 - familie__kind: - - false - p_id: - - 55 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 5000.0 einkommensteuer__betrag_y_sn: - 300.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: @@ -59,12 +38,32 @@ inputs: - 0.0 elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 11 jahr: - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 55 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -83,6 +82,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 5000.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml index eae34cb952..2dbc8d5a93 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml @@ -1,44 +1,23 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen + Vermögen. + precision: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: assumed: {} provided: + alter: + - 57 + anzahl_personen_hh: + - 1 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false arbeitslosengeld_2__p_id_einstandspartner: - -1 - familie__alleinerziehend: - - false - alter: - - 57 - anzahl_personen_hh: - - 1 behinderungsgrad: - 0 - geburtsjahr: - - 1966 - geburtsmonat: - - 1 - geburtstag: - - 1 - hh_id: - - 12 - familie__kind: - - false - p_id: - - 56 - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 - vermögen: - - 61000.0 einkommensteuer__betrag_y_sn: - 300.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: @@ -59,12 +38,32 @@ inputs: - 0.0 elterngeld__betrag_m: - 0.0 + familie__alleinerziehend: + - false + familie__kind: + - false + familie__p_id_ehepartner: + - -1 + familie__p_id_elternteil_1: + - -1 + familie__p_id_elternteil_2: + - -1 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 12 jahr: - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: - -1 + p_id: + - 56 solidaritätszuschlag__betrag_y_sn: - 0.0 sozialversicherung__arbeitslosen__betrag_m: @@ -83,6 +82,8 @@ inputs: - 0.0 unterhaltsvorschuss__betrag_m: - 0.0 + vermögen: + - 61000.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml index c52e45d4f1..097a040023 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml @@ -1,10 +1,19 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=3&housingbenefitRecipients=3&income=1365&rent=700&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=425%2C00 inputs: assumed: {} provided: + alter: + - 39 + - 35 + - 10 + anzahl_personen_hh: + - 3 + - 3 + - 3 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -17,62 +26,10 @@ inputs: - 58 - 57 - -1 - familie__alleinerziehend: - - false - - false - - false - alter: - - 39 - - 35 - - 10 - anzahl_personen_hh: - - 3 - - 3 - - 3 behinderungsgrad: - 0 - 0 - 0 - geburtsjahr: - - 1984 - - 1988 - - 2013 - geburtsmonat: - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - hh_id: - - 13 - - 13 - - 13 - familie__kind: - - false - - false - - true - p_id: - - 57 - - 58 - - 59 - familie__p_id_ehepartner: - - 58 - - 57 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 57 - familie__p_id_elternteil_2: - - -1 - - -1 - - 58 - vermögen: - - 45000.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 585.0 - 585.0 @@ -113,6 +70,42 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + familie__kind: + - false + - false + - true + familie__p_id_ehepartner: + - 58 + - 57 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 57 + familie__p_id_elternteil_2: + - -1 + - -1 + - 58 + geburtsjahr: + - 1984 + - 1988 + - 2013 + geburtsmonat: + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + hh_id: + - 13 + - 13 + - 13 jahr: - 2023 - 2023 @@ -125,6 +118,10 @@ inputs: - -1 - -1 - 57 + p_id: + - 57 + - 58 + - 59 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -161,6 +158,10 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 45000.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml index 2f497220cd..3a15e03bfc 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml @@ -1,10 +1,25 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: assumed: {} provided: + alter: + - 45 + - 40 + - 15 + - 10 + - 8 + - 3 + anzahl_personen_hh: + - 6 + - 6 + - 6 + - 6 + - 6 + - 6 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -26,27 +41,6 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - alter: - - 45 - - 40 - - 15 - - 10 - - 8 - - 3 - anzahl_personen_hh: - - 6 - - 6 - - 6 - - 6 - - 6 - - 6 behinderungsgrad: - 0 - 0 @@ -54,76 +48,6 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1978 - - 1983 - - 2008 - - 2013 - - 2015 - - 2020 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 14 - - 14 - - 14 - - 14 - - 14 - - 14 - familie__kind: - - false - - false - - true - - true - - true - - true - p_id: - - 60 - - 61 - - 62 - - 63 - - 64 - - 65 - familie__p_id_ehepartner: - - 61 - - 60 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 60 - - 60 - - 60 - - 60 - familie__p_id_elternteil_2: - - -1 - - -1 - - 61 - - 61 - - 61 - - 61 - vermögen: - - 85000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 714.0 - 714.0 @@ -194,6 +118,69 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + - true + familie__p_id_ehepartner: + - 61 + - 60 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 60 + - 60 + - 60 + - 60 + familie__p_id_elternteil_2: + - -1 + - -1 + - 61 + - 61 + - 61 + - 61 + geburtsjahr: + - 1978 + - 1983 + - 2008 + - 2013 + - 2015 + - 2020 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 14 + - 14 + - 14 + - 14 + - 14 + - 14 jahr: - 2023 - 2023 @@ -215,6 +202,13 @@ inputs: - 60 - 60 - 60 + p_id: + - 60 + - 61 + - 62 + - 63 + - 64 + - 65 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -278,6 +272,13 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 85000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml index 73460d6507..92c861d1aa 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml @@ -1,10 +1,21 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=4&housingbenefitRecipients=4&income=1115%2C5&rent=730&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=746%2C00 inputs: assumed: {} provided: + alter: + - 39 + - 35 + - 10 + - 12 + anzahl_personen_hh: + - 4 + - 4 + - 4 + - 4 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -20,76 +31,11 @@ inputs: - 74 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - alter: - - 39 - - 35 - - 10 - - 12 - anzahl_personen_hh: - - 4 - - 4 - - 4 - - 4 behinderungsgrad: - 0 - 0 - 0 - 0 - geburtsjahr: - - 1984 - - 1988 - - 2013 - - 2011 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - hh_id: - - 16 - - 16 - - 16 - - 16 - familie__kind: - - false - - false - - true - - true - p_id: - - 74 - - 75 - - 76 - - 77 - familie__p_id_ehepartner: - - 75 - - 74 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 74 - - 74 - familie__p_id_elternteil_2: - - -1 - - -1 - - 75 - - 75 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 0.0 - 0.0 @@ -140,6 +86,51 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + familie__p_id_ehepartner: + - 75 + - 74 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 74 + - 74 + familie__p_id_elternteil_2: + - -1 + - -1 + - 75 + - 75 + geburtsjahr: + - 1984 + - 1988 + - 2013 + - 2011 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + hh_id: + - 16 + - 16 + - 16 + - 16 jahr: - 2023 - 2023 @@ -155,6 +146,11 @@ inputs: - -1 - 74 - 74 + p_id: + - 74 + - 75 + - 76 + - 77 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -200,6 +196,11 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml index 33c95dfd44..538687c4e1 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml @@ -1,10 +1,23 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=5&housingbenefitRecipients=5&income=1750&rent=1300&rentLevelZIPCode=72393&rentLevelTown.GROUP=1&rentLevel=1&rentLevel.GROUP=1&update=Berechnen&result=746%2C00 inputs: assumed: {} provided: + alter: + - 45 + - 40 + - 15 + - 10 + - 8 + anzahl_personen_hh: + - 5 + - 5 + - 5 + - 5 + - 5 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -23,90 +36,12 @@ inputs: - -1 - -1 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - alter: - - 45 - - 40 - - 15 - - 10 - - 8 - anzahl_personen_hh: - - 5 - - 5 - - 5 - - 5 - - 5 behinderungsgrad: - 0 - 0 - 0 - 0 - 0 - geburtsjahr: - - 1978 - - 1983 - - 2008 - - 2013 - - 2015 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 17 - - 17 - - 17 - - 17 - - 17 - familie__kind: - - false - - false - - true - - true - - true - p_id: - - 78 - - 79 - - 80 - - 81 - - 82 - familie__p_id_ehepartner: - - 79 - - 78 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 78 - - 78 - - 78 - familie__p_id_elternteil_2: - - -1 - - -1 - - 79 - - 79 - - 79 - vermögen: - - 85000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 714.0 - 714.0 @@ -167,6 +102,60 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - true + - true + - true + familie__p_id_ehepartner: + - 79 + - 78 + - -1 + - -1 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - 78 + - 78 + - 78 + familie__p_id_elternteil_2: + - -1 + - -1 + - 79 + - 79 + - 79 + geburtsjahr: + - 1978 + - 1983 + - 2008 + - 2013 + - 2015 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 17 + - 17 + - 17 + - 17 + - 17 jahr: - 2023 - 2023 @@ -185,6 +174,12 @@ inputs: - 78 - 78 - 78 + p_id: + - 78 + - 79 + - 80 + - 81 + - 82 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -239,6 +234,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 85000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml index 644a017d26..14c2ffa004 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml @@ -1,12 +1,18 @@ --- info: - note: >- - Several households that differ in their eligibility for Wohngeld because of - Mindesteinkommen. + note: Several households that differ in their eligibility for Wohngeld because of Mindesteinkommen. + precision: 0.01 source: Made up. inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -28,20 +34,6 @@ inputs: - 2 - 5 - 4 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 behinderungsgrad: - 0 - 0 @@ -49,76 +41,6 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 0 - - 0 - - 1 - - 1 - - 2 - - 2 - familie__kind: - - false - - false - - false - - false - - false - - false - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - 5 - - 4 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 200.0 - 200.0 @@ -182,6 +104,69 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - 5 + - 4 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 0 + - 1 + - 1 + - 2 + - 2 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -196,6 +181,13 @@ inputs: - -1 - -1 - -1 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -266,6 +258,13 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnen__baujahr_immobilie_hh: - 2010 - 2010 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml index f8e9e8c3c3..61b54fba52 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -1,10 +1,17 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 40 + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -23,84 +30,12 @@ inputs: - 3 - 2 - -1 - familie__alleinerziehend: - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 behinderungsgrad: - 0 - 0 - 0 - 0 - 0 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - false - - false - - false - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 20.0 - 20.0 @@ -161,6 +96,60 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -173,6 +162,12 @@ inputs: - -1 - -1 - -1 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -233,6 +228,12 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 7194032599..2f2a5e3a42 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -1,10 +1,19 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision: 0.01 source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: assumed: {} provided: + alter: + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 + - 40 arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false @@ -29,22 +38,6 @@ inputs: - 3 - 6 - 5 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - alter: - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 - - 40 behinderungsgrad: - 0 - 0 @@ -53,86 +46,6 @@ inputs: - 0 - 0 - 0 - geburtsjahr: - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - - 1983 - geburtsmonat: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - geburtstag: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - hh_id: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - familie__kind: - - false - - false - - false - - false - - false - - false - - false - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - 4 - - 3 - - 6 - - 5 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - vermögen: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 einkommensteuer__betrag_y_sn: - 20.0 - 20.0 @@ -213,6 +126,78 @@ inputs: - 0.0 - 0.0 - 0.0 + familie__alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + familie__kind: + - false + - false + - false + - false + - false + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + - -1 + - 4 + - 3 + - 6 + - 5 + familie__p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + geburtsjahr: + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + - 1983 + geburtsmonat: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + geburtstag: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false @@ -229,6 +214,14 @@ inputs: - -1 - -1 - -1 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 solidaritätszuschlag__betrag_y_sn: - 0.0 - 0.0 @@ -309,6 +302,14 @@ inputs: - 0.0 - 0.0 - 0.0 + vermögen: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - true - true diff --git a/src/_gettsim_tests/test_einkommensteuer.py b/src/_gettsim_tests/test_einkommensteuer.py deleted file mode 100644 index 73d99c7d22..0000000000 --- a/src/_gettsim_tests/test_einkommensteuer.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("einkommensteuer") - - -@pytest.mark.parametrize("test", test_data) -def test_einkommensteuer(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=0) diff --git a/src/_gettsim_tests/test_elterngeld.py b/src/_gettsim_tests/test_elterngeld.py deleted file mode 100644 index 3eceef0adc..0000000000 --- a/src/_gettsim_tests/test_elterngeld.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("elterngeld") - - -@pytest.mark.parametrize("test", test_data) -def test_elterngeld(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_erwerbsminderungsrente.py b/src/_gettsim_tests/test_erwerbsminderungsrente.py deleted file mode 100644 index 37dfc79fb3..0000000000 --- a/src/_gettsim_tests/test_erwerbsminderungsrente.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("erwerbsminderungsrente") - - -@pytest.mark.parametrize("test", test_data) -def test_erwerbsminderungsrente(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_erziehungsgeld.py b/src/_gettsim_tests/test_erziehungsgeld.py deleted file mode 100644 index 3ec504a579..0000000000 --- a/src/_gettsim_tests/test_erziehungsgeld.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("erziehungsgeld") - - -@pytest.mark.parametrize("test", test_data) -def test_erziehungsgeld(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index afc6b2d9c5..09de9fbf19 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -10,7 +10,7 @@ test_data = load_policy_test_data("full_taxes_and_transfers") -@pytest.mark.parametrize("test", test_data) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) def test_full_taxes_transfers(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -21,7 +21,7 @@ def test_full_taxes_transfers(test: PolicyTest): ) -@pytest.mark.parametrize("test", test_data) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) def test_data_types(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -51,7 +51,7 @@ def test_data_types(test: PolicyTest): assert check_series_has_expected_type(result_array, internal_type) -@pytest.mark.parametrize("test", test_data) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) def test_allow_none_as_target_tree(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) diff --git a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py b/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py deleted file mode 100644 index 04694ab74f..0000000000 --- a/src/_gettsim_tests/test_ges_rente_hinzuverdienst.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("ges_rente_hinzuverdienst") - - -@pytest.mark.parametrize("test", test_data) -def test_gesetzliche_rente_hinzuverdienst(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index fcbe045e35..7927a7cc6d 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -10,7 +10,7 @@ test_data = load_policy_test_data("groupings") -@pytest.mark.parametrize("test", test_data) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) def test_groupings(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) diff --git a/src/_gettsim_tests/test_grundrente.py b/src/_gettsim_tests/test_grundrente.py index f3948bf9fb..eefcf2fe12 100644 --- a/src/_gettsim_tests/test_grundrente.py +++ b/src/_gettsim_tests/test_grundrente.py @@ -8,54 +8,9 @@ from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data from ttsim import compute_taxes_and_transfers -grundrente_test_data = load_policy_test_data("grundrente") proxy_rente_test_data = load_policy_test_data("grundrente_proxy_rente") -@pytest.mark.parametrize( - "test", - grundrente_test_data, -) -def test_grundrente(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=0) - - -@pytest.mark.parametrize( - "test", - proxy_rente_test_data, -) -def test_grundrente_proxy_rente(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=0) - - @pytest.mark.parametrize( "test", proxy_rente_test_data, diff --git a/src/_gettsim_tests/test_grundsicherung_im_alter.py b/src/_gettsim_tests/test_grundsicherung_im_alter.py deleted file mode 100644 index 2834428092..0000000000 --- a/src/_gettsim_tests/test_grundsicherung_im_alter.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("grundsicherung_im_alter") - - -@pytest.mark.parametrize("test", test_data) -def test_grundsicherung_im_alter(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git "a/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" "b/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" deleted file mode 100644 index 41364ae935..0000000000 --- "a/src/_gettsim_tests/test_g\303\274nstigerpr\303\274fungen.py" +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("günstigerprüfungen") - - -@pytest.mark.parametrize("test", test_data) -def test_günstigerprüfungen(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_kindergeld.py b/src/_gettsim_tests/test_kindergeld.py deleted file mode 100644 index 23c95d9fa0..0000000000 --- a/src/_gettsim_tests/test_kindergeld.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("kindergeld") - - -@pytest.mark.parametrize("test", test_data) -def test_kindergeld(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_kinderzuschlag.py b/src/_gettsim_tests/test_kinderzuschlag.py deleted file mode 100644 index 20e73a8d93..0000000000 --- a/src/_gettsim_tests/test_kinderzuschlag.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("kinderzuschlag") - - -@pytest.mark.parametrize("test", test_data) -def test_kinderzuschlag(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py index aff5134baa..7e803d1d42 100644 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -1,31 +1,4 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers, set_up_policy_environment - -test_data = load_policy_test_data("lohnsteuer") - - -@pytest.mark.parametrize("test", test_data) -def test_lohnsteuer(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=0) +from ttsim import set_up_policy_environment def test_lohnsteuer_rv_anteil(): diff --git a/src/_gettsim_tests/test_minijobgrenze.py b/src/_gettsim_tests/test_minijobgrenze.py deleted file mode 100644 index 2e324b2b6b..0000000000 --- a/src/_gettsim_tests/test_minijobgrenze.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("minijobgrenze") - - -@pytest.mark.parametrize("test", test_data) -def test_minijobgrenze(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_rente_altersgrenzen.py b/src/_gettsim_tests/test_rente_altersgrenzen.py deleted file mode 100644 index 65f4ae6c02..0000000000 --- a/src/_gettsim_tests/test_rente_altersgrenzen.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("rente_altersgrenzen") - - -@pytest.mark.parametrize("test", test_data) -def test_gesetzliche_rente(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_rente_anspruch.py b/src/_gettsim_tests/test_rente_anspruch.py deleted file mode 100644 index c3e377f708..0000000000 --- a/src/_gettsim_tests/test_rente_anspruch.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("rente_anspruch") - - -@pytest.mark.parametrize("test", test_data) -def test_altersrente_altersgrenzen(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=1) diff --git "a/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" "b/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" deleted file mode 100644 index da887a8dc8..0000000000 --- "a/src/_gettsim_tests/test_solidarit\303\244tszuschlag.py" +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("solidaritätszuschlag") - - -@pytest.mark.parametrize("test", test_data) -def test_solidaritätszuschlag(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git "a/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" "b/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" deleted file mode 100644 index 582c33f0a7..0000000000 --- "a/src/_gettsim_tests/test_sozialversicherungsbeitr\303\244ge.py" +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("sozialversicherungsbeiträge") - - -@pytest.mark.parametrize("test", test_data) -def test_sozialversicherungsbeiträge(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=1) diff --git a/src/_gettsim_tests/test_steuern_und_transfers.py b/src/_gettsim_tests/test_steuern_und_transfers.py new file mode 100644 index 0000000000..815448f2ce --- /dev/null +++ b/src/_gettsim_tests/test_steuern_und_transfers.py @@ -0,0 +1,18 @@ +import pytest + +from _gettsim_tests._policy_test_utils import ( + PolicyTest, + execute_test, + get_policy_test_ids_and_cases, +) + +policy_test_ids_and_cases = get_policy_test_ids_and_cases() + + +@pytest.mark.parametrize( + "test", + policy_test_ids_and_cases.values(), + ids=policy_test_ids_and_cases.keys(), +) +def test_policy(test: PolicyTest): + execute_test(test) diff --git a/src/_gettsim_tests/test_unterhalt.py b/src/_gettsim_tests/test_unterhalt.py deleted file mode 100644 index d3dd2209c1..0000000000 --- a/src/_gettsim_tests/test_unterhalt.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("unterhalt") - - -@pytest.mark.parametrize("test", test_data) -def test_unterhalt(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_unterhaltsvorschuss.py b/src/_gettsim_tests/test_unterhaltsvorschuss.py deleted file mode 100644 index 1a6824a5d5..0000000000 --- a/src/_gettsim_tests/test_unterhaltsvorschuss.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("unterhaltsvorschuss") - - -@pytest.mark.parametrize("test", test_data) -def test_unterhaltsvorschuss(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git "a/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" "b/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" deleted file mode 100644 index 219d043f80..0000000000 --- "a/src/_gettsim_tests/test_vorrangpr\303\274fungen.py" +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("vorrangprüfungen") - - -@pytest.mark.parametrize("test", test_data) -def test_vorrangprüfungen(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_vorsorgeaufwand.py b/src/_gettsim_tests/test_vorsorgeaufwand.py deleted file mode 100644 index 0394291a1b..0000000000 --- a/src/_gettsim_tests/test_vorsorgeaufwand.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("vorsorgeaufwand") - - -@pytest.mark.parametrize("test", test_data) -def test_vorsorgeaufwand(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=0) diff --git a/src/_gettsim_tests/test_wohngeld.py b/src/_gettsim_tests/test_wohngeld.py deleted file mode 100644 index 506c76ec34..0000000000 --- a/src/_gettsim_tests/test_wohngeld.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("wohngeld") - - -@pytest.mark.parametrize("test", test_data) -def test_wohngeld(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) diff --git a/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py b/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py deleted file mode 100644 index a73dac287e..0000000000 --- a/src/_gettsim_tests/test_zu_versteuerndes_einkommen.py +++ /dev/null @@ -1,28 +0,0 @@ -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("zu_versteuerndes_einkommen") - - -@pytest.mark.parametrize("test", test_data) -def test_zu_versteuerndes_einkommen(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) From 4fa1fa11cba9222ffad1a341bba396d9a2886b14 Mon Sep 17 00:00:00 2001 From: Tim Mensinger <mensingertim@gmail.com> Date: Wed, 9 Apr 2025 09:34:45 +0200 Subject: [PATCH 011/109] Fix #814 (#860) AggregationType-s instead of strings. --- .../arbeitslosengeld_2/group_by_ids.py | 30 ++++---- .../kindergeld\303\274bertrag.py" | 4 +- .../abz\303\274ge/sonderausgaben.py" | 4 +- .../einkommensteuer/einkommensteuer.py | 11 ++- src/_gettsim/einkommensteuer/group_by_ids.py | 8 +- .../einkommensteuer/kinderfreibetrag.py | 6 +- src/_gettsim/elterngeld/elterngeld.py | 21 ++++-- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 4 +- src/_gettsim/familie/familie.py | 11 ++- src/_gettsim/household_characteristics.py | 10 +-- src/_gettsim/kindergeld/kindergeld.py | 4 +- src/_gettsim/kinderzuschlag/einkommen.py | 4 +- .../pflege/beitrag/beitragssatz.py | 6 +- .../unterhaltsvorschuss.py | 4 +- .../vorrangpr\303\274fungen.py" | 6 +- src/_gettsim/wohngeld/einkommen.py | 9 ++- src/_gettsim/wohngeld/group_by_ids.py | 6 +- src/ttsim/__init__.py | 3 +- src/ttsim/aggregation.py | 56 +++++++++++++- src/ttsim/combine_functions.py | 74 +++---------------- tests/ttsim/test_combine_functions.py | 48 +++++++----- .../ttsim/test_compute_taxes_and_transfers.py | 40 +++------- tests/ttsim/test_namespaces.py | 6 +- 23 files changed, 188 insertions(+), 187 deletions(-) diff --git a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py index d6579cfb86..2624532e8f 100644 --- a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py +++ b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py @@ -2,57 +2,53 @@ import numpy -from ttsim import AggregateByGroupSpec, group_by_function +from ttsim import AggregateByGroupSpec, AggregationType, group_by_function # TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 aggregation_specs = { "anzahl_erwachsene_fg": AggregateByGroupSpec( source="familie__erwachsen", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_fg": AggregateByGroupSpec( source="familie__kind", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_bis_6_fg": AggregateByGroupSpec( source="familie__kind_bis_6", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_bis_15_fg": AggregateByGroupSpec( source="familie__kind_bis_15", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_erwachsene_bg": AggregateByGroupSpec( source="familie__erwachsen", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_bg": AggregateByGroupSpec( source="familie__kind", - aggr="sum", - ), - "anzahl_personen_bg": AggregateByGroupSpec( - aggr="count", + aggr=AggregationType.SUM, ), + "anzahl_personen_bg": AggregateByGroupSpec(aggr=AggregationType.COUNT), "anzahl_kinder_bis_17_bg": AggregateByGroupSpec( source="familie__kind_bis_17", - aggr="sum", + aggr=AggregationType.SUM, ), "alleinerziehend_bg": AggregateByGroupSpec( source="familie__alleinerziehend", - aggr="any", + aggr=AggregationType.ANY, ), "anzahl_erwachsene_eg": AggregateByGroupSpec( source="familie__erwachsen", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_eg": AggregateByGroupSpec( source="familie__kind", - aggr="sum", - ), - "anzahl_personen_eg": AggregateByGroupSpec( - aggr="count", + aggr=AggregationType.SUM, ), + "anzahl_personen_eg": AggregateByGroupSpec(aggr=AggregationType.COUNT), } diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 742b3fc7d4..0cc5e51b35 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -2,13 +2,13 @@ import numpy -from ttsim import AggregateByPIDSpec, join_numpy, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function aggregation_specs = { "kindergeldübertrag_m": AggregateByPIDSpec( p_id_to_aggregate_by="kindergeld__p_id_empfänger", source="differenz_kindergeld_kindbedarf_m", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index e1e4dc3f30..c3ebef8233 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -1,12 +1,12 @@ """Tax allowances for special expenses.""" -from ttsim import AggregateByPIDSpec, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, policy_function aggregation_specs = { "betreuungskosten_elternteil_m": AggregateByPIDSpec( p_id_to_aggregate_by="p_id_betreuungskosten_träger", source="betreuungskosten_m", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index b5810ef08a..119dc8aa2e 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -1,17 +1,22 @@ """Income taxes.""" -from ttsim import AggregateByPIDSpec, piecewise_polynomial, policy_function +from ttsim import ( + AggregateByPIDSpec, + AggregationType, + piecewise_polynomial, + policy_function, +) aggregation_specs = { "anzahl_kindergeld_ansprüche_1": AggregateByPIDSpec( p_id_to_aggregate_by="familie__p_id_elternteil_1", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kindergeld_ansprüche_2": AggregateByPIDSpec( p_id_to_aggregate_by="familie__p_id_elternteil_2", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/einkommensteuer/group_by_ids.py b/src/_gettsim/einkommensteuer/group_by_ids.py index 5be1ae05c5..be1cf5b9ac 100644 --- a/src/_gettsim/einkommensteuer/group_by_ids.py +++ b/src/_gettsim/einkommensteuer/group_by_ids.py @@ -2,15 +2,13 @@ import numpy -from ttsim import AggregateByGroupSpec, group_by_function +from ttsim import AggregateByGroupSpec, AggregationType, group_by_function aggregation_specs = { - "anzahl_personen_sn": AggregateByGroupSpec( - aggr="count", - ), + "anzahl_personen_sn": AggregateByGroupSpec(aggr=AggregationType.COUNT), "alleinerziehend_sn": AggregateByGroupSpec( source="familie__alleinerziehend", - aggr="any", + aggr=AggregationType.ANY, ), } diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index c824014b7b..ac3152b8b2 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -1,17 +1,17 @@ """Tax allowances for individuals or couples with children.""" -from ttsim import AggregateByPIDSpec, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, policy_function aggregation_specs = { "anzahl_kinderfreibeträge_1": AggregateByPIDSpec( p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_1", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinderfreibeträge_2": AggregateByPIDSpec( p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_2", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index dbc2684400..eb7afa96e8 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -1,36 +1,41 @@ """Parental leave benefits.""" -from ttsim import AggregateByGroupSpec, AggregateByPIDSpec, policy_function +from ttsim import ( + AggregateByGroupSpec, + AggregateByPIDSpec, + AggregationType, + policy_function, +) aggregation_specs = { "kind_grundsätzlich_anspruchsberechtigt_fg": AggregateByGroupSpec( source="kind_grundsätzlich_anspruchsberechtigt", - aggr="any", + aggr=AggregationType.ANY, ), "anzahl_anträge_fg": AggregateByGroupSpec( source="claimed", - aggr="sum", + aggr=AggregationType.SUM, ), "bezugsmonate_partner": AggregateByPIDSpec( p_id_to_aggregate_by="arbeitslosengeld_2__p_id_einstandspartner", source="bisherige_bezugsmonate", - aggr="sum", + aggr=AggregationType.SUM, ), "alter_monate_jüngstes_mitglied_fg": AggregateByGroupSpec( source="alter_monate", - aggr="min", + aggr=AggregationType.MIN, ), "anzahl_kinder_bis_2_fg": AggregateByGroupSpec( source="familie__kind_bis_2", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_bis_5_fg": AggregateByGroupSpec( source="familie__kind_bis_5", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_mehrlinge_jüngstes_kind_fg": AggregateByGroupSpec( source="jüngstes_kind_oder_mehrling", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index b7ab6e0ce9..c6d3cbe26b 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -1,12 +1,12 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" -from ttsim import AggregateByPIDSpec, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, policy_function aggregation_specs = { "anspruchshöhe_m": AggregateByPIDSpec( p_id_to_aggregate_by="p_id_empfänger", source="anspruchshöhe_kind_m", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index a7bd6c6c1e..c117ce16d3 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -6,12 +6,15 @@ import numpy -from ttsim import AggregateByGroupSpec, group_by_function, policy_function +from ttsim import ( + AggregateByGroupSpec, + AggregationType, + group_by_function, + policy_function, +) aggregation_specs = { - "anzahl_personen_ehe": AggregateByGroupSpec( - aggr="count", - ), + "anzahl_personen_ehe": AggregateByGroupSpec(aggr=AggregationType.COUNT), } diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index 5fc44f23e8..50efc93e92 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,17 +1,15 @@ -from ttsim import AggregateByGroupSpec, policy_function +from ttsim import AggregateByGroupSpec, AggregationType, policy_function aggregation_specs = { "anzahl_erwachsene_hh": AggregateByGroupSpec( source="familie__erwachsen", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_rentenbezieher_hh": AggregateByGroupSpec( source="sozialversicherung__rente__bezieht_rente", - aggr="sum", - ), - "anzahl_personen_hh": AggregateByGroupSpec( - aggr="count", + aggr=AggregationType.SUM, ), + "anzahl_personen_hh": AggregateByGroupSpec(aggr=AggregationType.COUNT), } diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 1361797e90..4e3499152c 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -2,13 +2,13 @@ import numpy -from ttsim import AggregateByPIDSpec, join_numpy, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function aggregation_specs = { "anzahl_ansprüche": AggregateByPIDSpec( p_id_to_aggregate_by="p_id_empfänger", source="grundsätzlich_anspruchsberechtigt", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 1b0370df1d..018a9772c1 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -1,11 +1,11 @@ """Income relevant for calculation of Kinderzuschlag.""" -from ttsim import AggregateByGroupSpec, policy_function +from ttsim import AggregateByGroupSpec, AggregationType, policy_function aggregation_specs = { "arbeitslosengeld_2__anzahl_kinder_bg": AggregateByGroupSpec( source="kindergeld__anzahl_ansprüche", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 108a5dce33..baae9556e2 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -1,17 +1,17 @@ """Contribution rate to public long-term care insurance.""" -from ttsim import AggregateByPIDSpec, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, policy_function aggregation_specs = { "anzahl_kinder_bis_24_elternteil_1": AggregateByPIDSpec( p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_1"), source="alter_bis_24", - aggr="sum", + aggr=AggregationType.SUM, ), "anzahl_kinder_bis_24_elternteil_2": AggregateByPIDSpec( p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_2"), source="alter_bis_24", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 18ee04d8e8..34cc17a895 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -2,13 +2,13 @@ import numpy -from ttsim import AggregateByPIDSpec, join_numpy, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function aggregation_specs = { "an_elternteil_auszuzahlender_betrag_m": AggregateByPIDSpec( p_id_to_aggregate_by="kindergeld__p_id_empfänger", source="betrag_m", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index 191245855f..252f20f6c1 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -1,15 +1,15 @@ """Priority checks of transfers against each other.""" -from ttsim import AggregateByGroupSpec, policy_function +from ttsim import AggregateByGroupSpec, AggregationType, policy_function aggregation_specs = { "wohngeld_vorrang_wthh": AggregateByGroupSpec( source="wohngeld_vorrang_vor_arbeitslosengeld_2_bg", - aggr="any", + aggr=AggregationType.ANY, ), "wohngeld_kinderzuschlag_vorrang_wthh": AggregateByGroupSpec( source="wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg", - aggr="any", + aggr=AggregationType.ANY, ), } diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index e71eb47a91..d5ff2a97cf 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -1,13 +1,18 @@ """Income relevant for housing benefit calculation.""" -from ttsim import AggregateByPIDSpec, piecewise_polynomial, policy_function +from ttsim import ( + AggregateByPIDSpec, + AggregationType, + piecewise_polynomial, + policy_function, +) from ttsim.config import numpy_or_jax as np aggregation_specs = { "alleinerziehendenbonus": AggregateByPIDSpec( p_id_to_aggregate_by="kindergeld__p_id_empfänger", source="kindergeld__kind_bis_10_mit_kindergeld", - aggr="sum", + aggr=AggregationType.SUM, ), } diff --git a/src/_gettsim/wohngeld/group_by_ids.py b/src/_gettsim/wohngeld/group_by_ids.py index 12ea4cc902..5885a34049 100644 --- a/src/_gettsim/wohngeld/group_by_ids.py +++ b/src/_gettsim/wohngeld/group_by_ids.py @@ -2,12 +2,10 @@ import numpy -from ttsim import AggregateByGroupSpec, group_by_function +from ttsim import AggregateByGroupSpec, AggregationType, group_by_function aggregation_specs = { - "anzahl_personen_wthh": AggregateByGroupSpec( - aggr="count", - ), + "anzahl_personen_wthh": AggregateByGroupSpec(aggr=AggregationType.COUNT), } diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 48feb09816..8f323c539e 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,4 +1,4 @@ -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.combine_functions import combine_policy_functions_and_derived_functions from ttsim.compute_taxes_and_transfers import ( FunctionsAndColumnsOverlapWarning, @@ -33,6 +33,7 @@ __all__ = [ "AggregateByGroupSpec", "AggregateByPIDSpec", + "AggregationType", "ConflictingTimeDependentFunctionsError", "DerivedAggregationFunction", "DerivedTimeConversionFunction", diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index c757550f19..8a705fea19 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -1,4 +1,6 @@ -from dataclasses import dataclass +from collections.abc import Callable +from dataclasses import dataclass, field +from enum import StrEnum from ttsim.aggregation_jax import all_by_p_id as all_by_p_id_jax from ttsim.aggregation_jax import any_by_p_id as any_by_p_id_jax @@ -31,14 +33,62 @@ from ttsim.config import USE_JAX +class AggregationType(StrEnum): + """ + Enum for aggregation types. + """ + + COUNT = "count" + SUM = "sum" + MEAN = "mean" + MAX = "max" + MIN = "min" + ANY = "any" + ALL = "all" + + @dataclass class AggregateByGroupSpec: """ A container for aggregate by group specifications. """ - aggr: str + aggr: AggregationType source: str | None = None + _agg_func: Callable = field(init=False) + + def __post_init__(self): + if not isinstance(self.aggr, AggregationType): + raise ValueError( + f"aggr must be of type AggregationType, not {type(self.aggr)}" + ) + + if self.aggr == AggregationType.COUNT and self.source is not None: + raise ValueError("COUNT aggregation cannot use a source.") + + aggregation_registry = { + AggregationType.SUM: grouped_sum, + AggregationType.MEAN: grouped_mean, + AggregationType.MAX: grouped_max, + AggregationType.MIN: grouped_min, + AggregationType.ANY: grouped_any, + AggregationType.ALL: grouped_all, + AggregationType.COUNT: grouped_count, + } + + func = aggregation_registry.get(self.aggr) + if func is None: + raise ValueError(f"Aggregation type {self.aggr} not implemented") + + self._agg_func = func + + def agg_func(self, source, group_by_id): + return self._agg_func(source, group_by_id) + + def mapper(self, group_by_id): + if self.aggr == AggregationType.COUNT: + return {"group_by_id": group_by_id} + return {"source": self.source, "group_by_id": group_by_id} @dataclass @@ -49,7 +99,7 @@ class AggregateByPIDSpec: p_id_to_aggregate_by: str source: str - aggr: str + aggr: AggregationType def grouped_count(group_id): diff --git a/src/ttsim/combine_functions.py b/src/ttsim/combine_functions.py index 2320e1af62..498040d841 100644 --- a/src/ttsim/combine_functions.py +++ b/src/ttsim/combine_functions.py @@ -13,16 +13,10 @@ from ttsim.aggregation import ( AggregateByGroupSpec, AggregateByPIDSpec, + AggregationType, all_by_p_id, any_by_p_id, count_by_p_id, - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, max_by_p_id, mean_by_p_id, min_by_p_id, @@ -294,7 +288,7 @@ def _create_derived_aggregations_specs( if aggregation_specs_needed: derived_aggregations_specs[target_name] = AggregateByGroupSpec( - aggr="sum", + aggr=AggregationType.SUM, source=_get_name_of_aggregation_source( target_name=target_name, top_level_namespace=top_level_namespace, @@ -369,81 +363,31 @@ def _create_one_aggregate_by_group_func( The derived function. """ - - aggregation_method = aggregation_spec.aggr source = aggregation_spec.source - if aggregation_method == "count": - mapper = {"group_by_id": group_by_id} - - def agg_func(group_by_id): - return grouped_count(group_by_id) - - else: - mapper = { - "source": source, - "group_by_id": group_by_id, - } - if aggregation_method == "sum": - - def agg_func(source, group_by_id): - return grouped_sum(source, group_by_id) - - elif aggregation_method == "mean": - - def agg_func(source, group_by_id): - return grouped_mean(source, group_by_id) - - elif aggregation_method == "max": - - def agg_func(source, group_by_id): - return grouped_max(source, group_by_id) - - elif aggregation_method == "min": - - def agg_func(source, group_by_id): - return grouped_min(source, group_by_id) - - elif aggregation_method == "any": - - def agg_func(source, group_by_id): - return grouped_any(source, group_by_id) - - elif aggregation_method == "all": - - def agg_func(source, group_by_id): - return grouped_all(source, group_by_id) - - else: - msg = format_errors_and_warnings( - f"Aggregation method {aggregation_method} is not implemented." - ) - raise ValueError(msg) - wrapped_func = dt.one_function_without_tree_logic( function=dags.rename_arguments( - func=agg_func, - mapper=mapper, + func=aggregation_spec.agg_func, + mapper=aggregation_spec.mapper(group_by_id), ), tree_path=dt.tree_path_from_qual_name(aggregation_target), top_level_namespace=top_level_namespace, ) - qual_name_source = ( - _get_qual_name_of_source_col( + if isinstance(aggregation_spec, AggregateByGroupSpec): + qual_name_source = _get_qual_name_of_source_col( source=source, wrapped_func=wrapped_func, ) - if source - else None - ) + else: + qual_name_source = None return DerivedAggregationFunction( function=wrapped_func, source=qual_name_source, source_function=functions.get(qual_name_source, None), aggregation_target=aggregation_target, - aggregation_method=aggregation_method, + aggregation_method=aggregation_spec.aggr, ) diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index 1d1d52a41d..03d3f37b17 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -3,7 +3,7 @@ import pandas as pd import pytest -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.combine_functions import ( _annotate_aggregation_functions, _create_aggregate_by_group_functions, @@ -100,7 +100,7 @@ def function_with_float_return(x: int) -> float: "namespace1": { "y_hh": AggregateByGroupSpec( source="x", - aggr="sum", + aggr=AggregationType.SUM, ), }, }, @@ -118,7 +118,7 @@ def function_with_float_return(x: int) -> float: "namespace1": { "y_hh": AggregateByGroupSpec( source="inputs__x", - aggr="sum", + aggr=AggregationType.SUM, ), }, }, @@ -284,14 +284,14 @@ def test_fail_if_targets_are_not_among_functions( [ ( {"foo": function_with_bool_return}, - {"foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + {"foo_hh": AggregateByGroupSpec(source="foo", aggr=AggregationType.SUM)}, "group", ["foo"], {"foo": bool, "return": int}, ), ( {"foo": function_with_float_return}, - {"foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + {"foo_hh": AggregateByGroupSpec(source="foo", aggr=AggregationType.SUM)}, "group", ["foo"], {"foo": float, "return": float}, @@ -300,7 +300,9 @@ def test_fail_if_targets_are_not_among_functions( {"foo": function_with_int_return}, { "foo_hh": AggregateByPIDSpec( - p_id_to_aggregate_by="foreign_id_col", source="foo", aggr="sum" + p_id_to_aggregate_by="foreign_id_col", + source="foo", + aggr=AggregationType.SUM, ) }, "p_id", @@ -364,7 +366,11 @@ def test_annotations_are_applied_to_derived_functions( {"foo": policy_function(leaf_name="foo")(lambda x: x)}, {}, {"x": pd.Series([1])}, - {"n1__foo_hh": AggregateByGroupSpec(source="foo", aggr="sum")}, + { + "n1__foo_hh": AggregateByGroupSpec( + source="foo", aggr=AggregationType.SUM + ) + }, ["x", "foo", "n1"], ("n1__foo_hh"), ), @@ -397,7 +403,7 @@ def test_create_aggregation_with_derived_soure_column(): aggregation_spec_dict = { "foo_hh": AggregateByGroupSpec( source="bar_bg", - aggr="sum", + aggr=AggregationType.SUM, ) } result = _create_aggregate_by_group_functions( @@ -422,21 +428,21 @@ def test_create_aggregation_with_derived_soure_column(): [ ( "foo_hh", - AggregateByGroupSpec(aggr="count"), + AggregateByGroupSpec(aggr=AggregationType.COUNT), "hh_id", ["foo", "hh_id"], ["hh_id"], ), ( "foo_hh", - AggregateByGroupSpec(aggr="sum", source="foo"), + AggregateByGroupSpec(aggr=AggregationType.SUM, source="foo"), "hh_id", ["foo", "hh_id"], ["hh_id", "foo"], ), ( "foo__bar_hh", - AggregateByGroupSpec(aggr="sum", source="bar"), + AggregateByGroupSpec(aggr=AggregationType.SUM, source="bar"), "hh_id", ["foo", "hh_id"], ["hh_id", "foo__bar"], @@ -474,7 +480,9 @@ def test_function_arguments_are_namespaced_for_derived_group_funcs( ( "foo", AggregateByPIDSpec( - aggr="sum", source="bar", p_id_to_aggregate_by="foreign_id_col" + aggr=AggregationType.SUM, + source="bar", + p_id_to_aggregate_by="foreign_id_col", ), ["foo", "foreign_id_col", "bar"], ["foreign_id_col", "bar"], @@ -482,7 +490,9 @@ def test_function_arguments_are_namespaced_for_derived_group_funcs( ( "foo__fünc", AggregateByPIDSpec( - aggr="sum", source="bär", p_id_to_aggregate_by="foreign_id_col" + aggr=AggregationType.SUM, + source="bär", + p_id_to_aggregate_by="foreign_id_col", ), ["foo", "foreign_id_col"], ["foreign_id_col", "foo__bär"], @@ -518,14 +528,14 @@ def test_function_arguments_are_namespaced_for_derived_p_id_funcs( [ ( "foo_hh", - AggregateByGroupSpec(aggr="sum", source="foo"), + AggregateByGroupSpec(aggr=AggregationType.SUM, source="foo"), "hh_id", ["foo", "hh_id"], "foo", ), ( "foo__bar_hh", - AggregateByGroupSpec(aggr="sum", source="bar"), + AggregateByGroupSpec(aggr=AggregationType.SUM, source="bar"), "hh_id", ["foo", "hh_id"], "foo__bar", @@ -560,7 +570,9 @@ def test_source_column_name_of_aggregate_by_group_func_is_qualified( ( "foo", AggregateByPIDSpec( - aggr="sum", source="bar", p_id_to_aggregate_by="foreign_id_col" + aggr=AggregationType.SUM, + source="bar", + p_id_to_aggregate_by="foreign_id_col", ), ["foo", "foreign_id_col", "bar"], "bar", @@ -568,7 +580,9 @@ def test_source_column_name_of_aggregate_by_group_func_is_qualified( ( "foo__fünc", AggregateByPIDSpec( - aggr="sum", source="bär", p_id_to_aggregate_by="foreign_id_col" + aggr=AggregationType.SUM, + source="bär", + p_id_to_aggregate_by="foreign_id_col", ), ["foo", "foreign_id_col"], "foo__bär", diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index d009921613..9d341ad258 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -13,7 +13,7 @@ wthh_id, ) from gettsim import FunctionsAndColumnsOverlapWarning -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.compute_taxes_and_transfers import ( _convert_data_to_correct_types, _fail_if_foreign_keys_are_invalid, @@ -346,7 +346,7 @@ def test_user_provided_aggregate_by_group_specs(): "module_name": { "betrag_m_hh": AggregateByGroupSpec( source="betrag_m", - aggr="sum", + aggr=AggregationType.SUM, ) } } @@ -370,7 +370,7 @@ def test_user_provided_aggregate_by_group_specs(): "module_name": { "betrag_double_m_hh": AggregateByGroupSpec( source="betrag_m_double", - aggr="max", + aggr=AggregationType.MAX, ), }, }, @@ -378,7 +378,7 @@ def test_user_provided_aggregate_by_group_specs(): "module_name": { "betrag_double_m_hh": AggregateByGroupSpec( source="module_name__betrag_m_double", - aggr="max", + aggr=AggregationType.MAX, ), }, }, @@ -431,7 +431,7 @@ def test_aggregate_by_group_specs_missing_group_sufix(): "module_name": { "betrag_agg_m": AggregateByGroupSpec( source="betrag_m", - aggr="sum", + aggr=AggregationType.SUM, ) }, } @@ -447,29 +447,13 @@ def test_aggregate_by_group_specs_missing_group_sufix(): def test_aggregate_by_group_specs_agg_not_impl(): - data = { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - "module_name": { - "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), - }, - } - aggregation_specs_tree = { - "module_name": { - "betrag_m_hh": AggregateByGroupSpec( - source="betrag_m", - aggr="aggr_not_implemented", - ) - }, - } with pytest.raises( ValueError, - match="Aggregation method aggr_not_implemented is not implemented.", + match="aggr must be of type AggregationType, not <class 'str'>", ): - compute_taxes_and_transfers( - data, - PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), - targets_tree={"module_name": {"betrag_m_hh": None}}, + AggregateByGroupSpec( + source="betrag_m", + aggr="sum", ) @@ -482,7 +466,7 @@ def test_aggregate_by_group_specs_agg_not_impl(): "target_func": AggregateByPIDSpec( p_id_to_aggregate_by="hh_id", source="source_func", - aggr="sum", + aggr=AggregationType.SUM, ) } }, @@ -496,7 +480,7 @@ def test_aggregate_by_group_specs_agg_not_impl(): "target_func_m": AggregateByPIDSpec( p_id_to_aggregate_by="hh_id", source="source_func_m", - aggr="sum", + aggr=AggregationType.SUM, ) } }, @@ -510,7 +494,7 @@ def test_aggregate_by_group_specs_agg_not_impl(): "target_func_m": AggregateByPIDSpec( p_id_to_aggregate_by="hh_id", source="source_func_m", - aggr="sum", + aggr=AggregationType.SUM, ) } }, diff --git a/tests/ttsim/test_namespaces.py b/tests/ttsim/test_namespaces.py index 95c3109570..4743a589b2 100644 --- a/tests/ttsim/test_namespaces.py +++ b/tests/ttsim/test_namespaces.py @@ -5,7 +5,7 @@ import pandas as pd import pytest -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec +from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers from ttsim.policy_environment import PolicyEnvironment @@ -42,14 +42,14 @@ def aggregation_tree(): "module1": { "group_mean_hh": AggregateByGroupSpec( source="f", - aggr="sum", + aggr=AggregationType.SUM, ), }, "module2": { "p_id_aggregation_target": AggregateByPIDSpec( p_id_to_aggregate_by="groupings__some_foreign_keys", source="g_hh", - aggr="sum", + aggr=AggregationType.SUM, ), }, } From a9479100a7c0dd0c48cddec0cc2ba23716d49ba4 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 9 Apr 2025 10:47:25 +0200 Subject: [PATCH 012/109] Add minimal test policy environment - METTSIM (#856) ### What problem do you want to solve? This PR makes a step towards separating TTSIM and GETTSIM by testing the TTSIM infrastructure with its own instance of a fictitious taxes and transfers system that makes use of all features. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Co-authored-by: Tim Mensinger <mensingertim@gmail.com> --- docs/geps/gep-03.md | 51 --- docs/geps/gep-05.md | 136 ++------ src/_gettsim/config.py | 1 - .../abz\303\274ge/sonderausgaben.py" | 10 +- .../abz\303\274ge/vorsorgeaufwendungen.py" | 18 +- .../einkommensteuer/einkommensteuer.py | 26 +- .../zu_versteuerndes_einkommen.py | 89 ++++- src/_gettsim/elterngeld/einkommen.py | 21 +- src/_gettsim/elterngeld/elterngeld.py | 9 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 12 +- src/_gettsim/kinderzuschlag/einkommen.py | 56 ++- src/_gettsim/lohnsteuer/einkommen.py | 7 +- src/_gettsim/parameters/eink_st.yaml | 54 --- src/_gettsim/parameters/eink_st_abzuege.yaml | 14 - src/_gettsim/parameters/elterngeld.yaml | 19 - src/_gettsim/parameters/erziehungsgeld.yaml | 10 - src/_gettsim/parameters/ges_rente.yaml | 41 --- .../parameters/kinderzuschl_eink.yaml | 17 - src/_gettsim/parameters/lohnst.yaml | 19 - src/_gettsim/parameters/sozialv_beitr.yaml | 15 - src/_gettsim/parameters/unterhaltsvors.yaml | 8 - src/_gettsim/parameters/wohngeld.yaml | 11 - .../geringf\303\274gig_besch\303\244ftigt.py" | 14 +- src/_gettsim/sozialversicherung/midijob.py | 8 +- .../rente/altersrente/altersrente.py | 26 +- .../rente/grundrente/grundrente.py | 50 ++- .../unterhaltsvorschuss.py | 20 +- src/_gettsim/wohngeld/wohngeld.py | 18 +- src/ttsim/__init__.py | 3 + src/ttsim/compute_taxes_and_transfers.py | 126 +------ src/ttsim/function_types.py | 48 ++- src/ttsim/rounding.py | 70 ++++ tests/ttsim/_helpers.py | 25 ++ .../ttsim/{namespaces => mettsim}/__init__.py | 0 tests/ttsim/mettsim/config.py | 16 + tests/ttsim/mettsim/functions/__init__.py | 0 .../functions/housing_benefits/amount.py | 13 + .../eligibility/eligibility.py | 57 +++ .../housing_benefits/income/income.py | 15 + .../mettsim/functions/payroll_tax/amount.py | 9 + .../child_tax_credit/child_tax_credit.py | 46 +++ .../functions/payroll_tax/group_by_ids.py | 93 +++++ .../functions/payroll_tax/income/amount.py | 9 + .../payroll_tax/income/deductions.py | 12 + .../mettsim/parameters/housing_benefits.yaml | 11 + .../ttsim/mettsim/parameters/payroll_tax.yaml | 9 + tests/ttsim/namespaces/module1.py | 33 -- tests/ttsim/namespaces/module2.py | 21 -- .../ttsim/test_compute_taxes_and_transfers.py | 86 ++--- tests/ttsim/test_loader.py | 21 +- tests/ttsim/test_namespaces.py | 101 ------ tests/ttsim/test_rounding.py | 324 ++++++------------ tests/ttsim/test_vectorization.py | 1 + tests/ttsim/test_visualizations.py | 2 +- 54 files changed, 938 insertions(+), 993 deletions(-) delete mode 100644 src/_gettsim/parameters/kinderzuschl_eink.yaml create mode 100644 src/ttsim/rounding.py create mode 100644 tests/ttsim/_helpers.py rename tests/ttsim/{namespaces => mettsim}/__init__.py (100%) create mode 100644 tests/ttsim/mettsim/config.py create mode 100644 tests/ttsim/mettsim/functions/__init__.py create mode 100644 tests/ttsim/mettsim/functions/housing_benefits/amount.py create mode 100644 tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py create mode 100644 tests/ttsim/mettsim/functions/housing_benefits/income/income.py create mode 100644 tests/ttsim/mettsim/functions/payroll_tax/amount.py create mode 100644 tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py create mode 100644 tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py create mode 100644 tests/ttsim/mettsim/functions/payroll_tax/income/amount.py create mode 100644 tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py create mode 100644 tests/ttsim/mettsim/parameters/housing_benefits.yaml create mode 100644 tests/ttsim/mettsim/parameters/payroll_tax.yaml delete mode 100644 tests/ttsim/namespaces/module1.py delete mode 100644 tests/ttsim/namespaces/module2.py delete mode 100644 tests/ttsim/test_namespaces.py diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index bcc4b07426..4cd4be80e7 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -320,57 +320,6 @@ The following walks through several cases. that the (set of) parameter(s) is not relevant any more, else the previous ones will linger on. -(gep-3-keys-referring-to-functions)= - -## Keys referring to functions - -### The `rounding` key - -See {ref}`GEP-5 <gep-5>` for the entire scope of rounding, here we reproduce the -{ref}`relevant section referring to YAML-files <gep-5-rounding-spec-yaml>`, - -The following goes through the details using an example from the basic pension allowance -(Grundrente). - -The law on the public pension insurance specifies that the maximum possible -Grundrentenzuschlag `sozialversicherung__rente__grundrente__höchstbetrag_m` be rounded -to the nearest fourth decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für -langjährige Versicherung). The example below contains GETTSIM's encoding of this fact. - -The snippet is taken from `ges_rente.yaml`, which contains the following code: - -```yaml -rounding: - höchstbetrag_m: - 2020-01-01: - base: 0.0001 - direction: nearest - reference: §76g SGB VI Abs. 4 Nr. 4 -``` - -The specification of the rounding parameters starts with the key `rounding` at the -outermost level of indentation. The keys are names of functions. - -At the next level, the `YYYY-MM-DD` key(s) indicate when rounding was introduced and/or -changed. This is done in in the same way as for other policy parameters. Those -`YYYY-MM-DD` key(s) are associated with a dictionary containing the following elements: - -- The parameter `base` determines the base to which the variables is rounded. It has to - be a floating point number. -- The parameter `direction` has to be one of `up`, `down`, or `nearest`. -- The `reference` must contain the reference to the law, which specifies the rounding. - -### The `dates_active` key - -Some functions should not be present at certain times. For example, `arbeitsl_geld_2` -and all its ancestors should not appear in DAGs referring to years prior to 2005. - -Other functions have different interfaces in different years or undergo very large -changes in their body. - -The `dates_active` key can be used to include certain functions only in certain years -and to switch between different implementations of other functions. - (gep-3-storage-of-parameters)= ## Storage of parameters diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index f9a93d23cf..756f2405ae 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -35,126 +35,62 @@ GETTSIM's default will be 1. This document describes how we support both use cas ## Implementation -GETTSIM allows for optional rounding of functions' results. Rounding parameters are -specified in the `.yaml`-files. The following goes through the details using an example -from the basic pension allowance (Grundrente). +GETTSIM allows for optional rounding of functions' results. Rounding specications are +defined in the `policy_function` decorators. The following goes through the details +using an example from the basic pension allowance (Grundrente). The law on the public pension insurance specifies that the maximum possible Grundrentenzuschlag `sozialversicherung__rente__grundrente__höchstbetrag_m` be rounded to the nearest fourth decimal point (§76g SGB VI: Zuschlag an Entgeltpunkten für langjährige Versicherung). The example below contains GETTSIM's encoding of this fact. -The snippet is taken from `ges_rente.yaml`, which contains the following code: - -```yaml -rounding: - sozialversicherung__rente__grundrente__höchstbetrag_m: - 2020-01-01: - base: 0.0001 - direction: nearest - reference: §76g SGB VI Abs. 4 Nr. 4 -``` - -The specification of the rounding parameters starts with the key `rounding` at the -outermost level of indentation. The keys are names of functions. - -At the next level, the `YYYY-MM-DD` key(s) indicate when rounding was introduced and/or -changed. This is done in in the same way as for other policy parameters, see -{ref}`gep-3`. Those `YYYY-MM-DD` key(s) are associated with a dictionary containing the -following elements: - -- The parameter `base` determines the base to which the variables is rounded. It has to - be a floating point number. -- The parameter `direction` has to be one of `up`, `down`, or `nearest`. -- The `reference` must contain the reference to the law, which specifies the rounding. - -In the same way as other policy parameters, the rounding parameters become part of the -dictionary `policy_params`. - -A function to be rounded must be decorated with `policy_function`. Set the -`params_key_for_rounding` parameter to point to the key of the policy parameters -dictionary containing the rounding parameters relating to the function that is -decorated. In the above example, the rounding specification for -`sozialversicherung__rente__grundrente__höchstbetrag_m` will be found in -`policy_params["ges_rente"]` after {func}`set_up_policy_environment()` has been called -(since it was specified in `ges_rente.yaml`). Hence, the `params_key_for_rounding` -argument of `policy_function` has to be `"ges_rente"`: +The snippet is taken from `sozialversicherung/rente/grundrente/grundrente.py`, which +contains the following code: ```python -@policy_function(params_key_for_rounding="ges_rente") -def sozialversicherung__rente__grundrente__höchstbetrag_m( - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: int, -) -> float: - ... - return out +from ttsim import policy_function, RoundingSpec, RoundingDirection + + +@policy_function( + rounding_spec=RoundingSpec( + base=0.0001, + direction=RoundingDirection.NEAREST, + reference="§76g SGB VI Abs. 4 Nr. 4", + ), + start_date="2021-01-01", +) +def höchstbetrag_m( + grundrentenzeiten_monate: int, + ges_rente_params: dict, +) -> float: ... ``` -When calling -{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>` -with `rounding=True`, GETTSIM will look for a key `"rounding"` in -`policy_params["params_key"]` and within that, for another key containing the decorated -function's name (here: `"sozialversicherung__rente__grundrente__höchstbetrag_m"`). That -is, by the machinery outlined in {ref}`GEP 3 <gep-3>`, the following indexing of the -`policy_params` dictionary +The specification of the rounding parameters is defined via the `RoundingSpec` class. +`RoundingSpec` takes the following inputs: -```python -policy_params["ges_rente"]["rounding"][ - "sozialversicherung__rente__grundrente__höchstbetrag_m" -] -``` - -needs to be possible and yield the `"base"` and `"direction"` keys as described above. +- The `base` determines the base to which the variables is rounded. It has to be a + floating point number. +- The `direction` has to be one of `RoundingDirection.UP`, `RoundingDirection.DOWN`, + `RoundingDirection.NEAREST`. +- The `reference` provides the legal reference for the rounding rule. This is optional. +- Additionally, via the `to_add_after_rounding` input, users can specify some amount + that should be added after the rounding is done (this was relevant for the income tax + before 2004). Note that GETTSIM only allows for optional rounding of functions' results. In case one is tempted to write a function requiring an intermediate variable to be rounded, the function should be split up so that another function returns the quantity to be rounded. -### Error handling - -In case a function has a `__params_key_for_rounding__`, but the respective parameters -are missing in `policy_params`, an error is raised. - -Note that if the results have to be rounded in some years, but not in others (e.g. after -a policy reform) the rounding parameters (both `"base"` and `"direction"`) must be set -to `None`. This allows that the rounding parameters are found and no error is raised, -but still no rounding is applied. - -In case rounding parameters are specified and the function does not have a -`__params_key_for_rounding__` attribute, execution will not lead to an error. This will -never happen in the GETTSIM codebase, however, due to a suitable test. - -### User-specified rounding - -If a user wants to change rounding of a specified function, she will need to adjust the -rounding parameters in `policy_params`. - -Suppose one would like to specify a reform in which -`sozialversicherung__rente__grundrente__höchstbetrag_m` is rounded to the next-lowest -fourth decimal point instead of to the nearest. In that case, the rounding parameters -will need to be changed as follows - -```python -policy_params["ges_rente"]["rounding"][ - "sozialversicherung__rente__grundrente__höchstbetrag_m" -]["direction"] = "down" -``` - -This will be done after the policy environment has been set up and it is exactly the -same as for other parameters of the taxes and transfers system, see {ref}`gep-3`. - -If a user would like to add user-written functions which should be rounded, she will -need to decorate the respective functions with `policy_function` and adjust -`policy_params` accordingly. - ## Advantages of this implementation -This implementation was chosen over alternatives (e.g., specifying the rounding -parameters in the `.py` files directly) for the following reason: +This implementation was chosen over alternatives (e.g., specifying rounding rules in the +parameter files) for the following reason: -- How a variable is rounded is a feature of the taxes and transfers system. Hence, the - best place to define it is alongside its other features. +- Rounding rules are not a parameter, but a function property that we want to turn off + an one. Hence, it makes sense to define it at the function level. - Rounding parameters might change over time. In this case, the rounding parameters for - each period can be specified in the parameter file using a well-established machinery. + each period can be specified using the `start_date`, `end_date` keywords in the + `policy_function` decorator. - Optional rounding can be easily specified for user-written functions. - At the definition of a function, it is clearly visible whether it is optionally rounded and where the rounding parameters are found. diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index b1cc7223ce..204e8a7fc5 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -14,7 +14,6 @@ "abgelt_st", "wohngeld", "kinderzuschl", - "kinderzuschl_eink", "kindergeld", "elterngeld", "ges_rente", diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index c3ebef8233..dd675a92a6 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -1,6 +1,12 @@ """Tax allowances for special expenses.""" -from ttsim import AggregateByPIDSpec, AggregationType, policy_function +from ttsim import ( + AggregateByPIDSpec, + AggregationType, + RoundingDirection, + RoundingSpec, + policy_function, +) aggregation_specs = { "betreuungskosten_elternteil_m": AggregateByPIDSpec( @@ -101,7 +107,7 @@ def ausgaben_für_betreuung_y( return out -@policy_function(params_key_for_rounding="eink_st_abzuege") +@policy_function(rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.UP)) def absetzbare_betreuungskosten_y_sn( ausgaben_für_betreuung_y_sn: float, eink_st_abzuege_params: dict, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" index 1115e6d949..82b03ce63a 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" @@ -1,10 +1,12 @@ -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function @policy_function( end_date="2004-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - params_key_for_rounding="eink_st_abzuege", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" + ), ) def vorsorgeaufwendungen_y_sn_bis_2004( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -27,7 +29,9 @@ def vorsorgeaufwendungen_y_sn_bis_2004( start_date="2005-01-01", end_date="2009-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - params_key_for_rounding="eink_st_abzuege", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" + ), ) def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -59,7 +63,9 @@ def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( start_date="2010-01-01", end_date="2019-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - params_key_for_rounding="eink_st_abzuege", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" + ), ) def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -90,7 +96,9 @@ def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( @policy_function( start_date="2020-01-01", leaf_name="vorsorgeaufwendungen_y_sn", - params_key_for_rounding="eink_st_abzuege", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" + ), ) def vorsorgeaufwendungen_y_sn_ab_2020( vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn: float, diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 119dc8aa2e..3e3a94c0f1 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -3,6 +3,8 @@ from ttsim import ( AggregateByPIDSpec, AggregationType, + RoundingDirection, + RoundingSpec, piecewise_polynomial, policy_function, ) @@ -22,7 +24,11 @@ @policy_function( - end_date="1996-12-31", leaf_name="betrag_y_sn", params_key_for_rounding="eink_st" + end_date="1996-12-31", + leaf_name="betrag_y_sn", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S. 6 EStG" + ), ) def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( betrag_mit_kinderfreibetrag_y_sn: float, @@ -45,7 +51,9 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( @policy_function( start_date="1997-01-01", leaf_name="betrag_y_sn", - params_key_for_rounding="eink_st", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + ), ) def betrag_y_sn_kindergeld_oder_kinderfreibetrag( betrag_ohne_kinderfreibetrag_y_sn: float, @@ -109,7 +117,9 @@ def kinderfreibetrag_günstiger_sn( @policy_function( end_date="2001-12-31", leaf_name="betrag_mit_kinderfreibetrag_y_sn", - params_key_for_rounding="eink_st", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + ), ) def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: raise NotImplementedError("Tax system before 2002 is not implemented yet.") @@ -118,7 +128,9 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: @policy_function( start_date="2002-01-01", leaf_name="betrag_mit_kinderfreibetrag_y_sn", - params_key_for_rounding="eink_st", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + ), ) def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, @@ -151,7 +163,11 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( return out -@policy_function(params_key_for_rounding="eink_st") +@policy_function( + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + ) +) def betrag_ohne_kinderfreibetrag_y_sn( gesamteinkommen_y: float, anzahl_personen_sn: int, diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index a693b57af7..7497806335 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -1,10 +1,93 @@ """Taxable income.""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function -@policy_function(params_key_for_rounding="eink_st") -def zu_versteuerndes_einkommen_y_sn( +@policy_function( + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.1 EStG" + ), + start_date="2004-01-01", + leaf_name="zu_versteuerndes_einkommen_y_sn", +) +def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel( + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__gesamteinkommen_y: float, + kinderfreibetrag_günstiger_sn: bool, +) -> float: + """Calculate taxable income on Steuernummer level. + + Parameters + ---------- + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. + einkommensteuer__gesamteinkommen_y + See :func:`einkommensteuer__gesamteinkommen_y`. + kinderfreibetrag_günstiger_sn + See :func:`kinderfreibetrag_günstiger_sn`. + + Returns + ------- + + """ + if kinderfreibetrag_günstiger_sn: + out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + else: + out = einkommensteuer__gesamteinkommen_y + + return out + + +@policy_function( + rounding_spec=RoundingSpec( + base=36, + direction=RoundingDirection.DOWN, + to_add_after_rounding=18, + reference="§ 32a Abs. 2 EStG", + ), + start_date="2002-01-01", + end_date="2003-12-31", + leaf_name="zu_versteuerndes_einkommen_y_sn", +) +def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel( + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__gesamteinkommen_y: float, + kinderfreibetrag_günstiger_sn: bool, +) -> float: + """Calculate taxable income on Steuernummer level. + + Parameters + ---------- + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. + einkommensteuer__gesamteinkommen_y + See :func:`einkommensteuer__gesamteinkommen_y`. + kinderfreibetrag_günstiger_sn + See :func:`kinderfreibetrag_günstiger_sn`. + + Returns + ------- + + """ + if kinderfreibetrag_günstiger_sn: + out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn + else: + out = einkommensteuer__gesamteinkommen_y + + return out + + +@policy_function( + rounding_spec=RoundingSpec( + base=27.609762, + direction=RoundingDirection.DOWN, + to_add_after_rounding=13.804881, + reference="§ 32a Abs. 2 EStG", + ), + end_date="2001-12-31", + leaf_name="zu_versteuerndes_einkommen_y_sn", +) +def zu_versteuerndes_einkommen_y_sn_mit_dmark_rundungsregel( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, einkommensteuer__gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index ded967346c..5397cdcc6a 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -1,6 +1,6 @@ """Relevant income for parental leave benefits.""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function @policy_function(start_date="2007-01-01") @@ -34,7 +34,12 @@ def anzurechnendes_nettoeinkommen_m( ) -@policy_function(start_date="2007-01-01", params_key_for_rounding="elterngeld") +@policy_function( + start_date="2007-01-01", + rounding_spec=RoundingSpec( + base=2, direction=RoundingDirection.DOWN, reference="§ 2 (2) BEEG" + ), +) def lohnersatzanteil_einkommen_untere_grenze( nettoeinkommen_vorjahr_m: float, elterngeld_params: dict, @@ -58,7 +63,12 @@ def lohnersatzanteil_einkommen_untere_grenze( ) -@policy_function(start_date="2007-01-01", params_key_for_rounding="elterngeld") +@policy_function( + start_date="2007-01-01", + rounding_spec=RoundingSpec( + base=2, direction=RoundingDirection.DOWN, reference="§ 2 (2) BEEG" + ), +) def lohnersatzanteil_einkommen_obere_grenze( nettoeinkommen_vorjahr_m: float, elterngeld_params: dict, @@ -144,7 +154,10 @@ def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( return zu_versteuerndes_einkommen_vorjahr_y_sn <= elterngeld_params["max_eink_vorj"] -@policy_function(start_date="2006-01-01", params_key_for_rounding="elterngeld") +@policy_function( + start_date="2006-01-01", + rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), +) def nettoeinkommen_approximation_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, lohnsteuer__betrag_m: float, diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index eb7afa96e8..14097b9b60 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -4,6 +4,8 @@ AggregateByGroupSpec, AggregateByPIDSpec, AggregationType, + RoundingDirection, + RoundingSpec, policy_function, ) @@ -40,7 +42,10 @@ } -@policy_function(start_date="2011-01-01", params_key_for_rounding="elterngeld") +@policy_function( + start_date="2011-01-01", + rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), +) def betrag_m( grundsätzlich_anspruchsberechtigt: bool, anspruchshöhe_m: float, @@ -105,7 +110,7 @@ def basisbetrag_m( start_date="2007-01-01", end_date="2010-12-31", leaf_name="betrag_m", - params_key_for_rounding="elterngeld", + rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), ) def elterngeld_not_implemented() -> float: raise NotImplementedError("Elterngeld is not implemented prior to 2011.") diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index c6d3cbe26b..cbd5edaccf 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -1,6 +1,12 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" -from ttsim import AggregateByPIDSpec, AggregationType, policy_function +from ttsim import ( + AggregateByPIDSpec, + AggregationType, + RoundingDirection, + RoundingSpec, + policy_function, +) aggregation_specs = { "anspruchshöhe_m": AggregateByPIDSpec( @@ -43,7 +49,7 @@ def betrag_m( @policy_function( end_date="2003-12-31", leaf_name="anspruchshöhe_kind_m", - params_key_for_rounding="erziehungsgeld", + rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.NEAREST), ) def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: raise NotImplementedError( @@ -58,7 +64,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: start_date="2004-01-01", end_date="2008-12-31", leaf_name="anspruchshöhe_kind_m", - params_key_for_rounding="erziehungsgeld", + rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.NEAREST), ) def anspruchshöhe_kind_mit_budgetsatz_m( kind_grundsätzlich_anspruchsberechtigt: bool, diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 018a9772c1..5434282fe5 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -1,6 +1,12 @@ """Income relevant for calculation of Kinderzuschlag.""" -from ttsim import AggregateByGroupSpec, AggregationType, policy_function +from ttsim import ( + AggregateByGroupSpec, + AggregationType, + RoundingDirection, + RoundingSpec, + policy_function, +) aggregation_specs = { "arbeitslosengeld_2__anzahl_kinder_bg": AggregateByGroupSpec( @@ -46,8 +52,52 @@ def bruttoeinkommen_eltern_m( return out -@policy_function(params_key_for_rounding="kinderzuschl_eink") -def nettoeinkommen_eltern_m( +@policy_function( + rounding_spec=RoundingSpec( + base=10, direction=RoundingDirection.DOWN, reference="§ 6a Abs. 4 BKGG" + ), + leaf_name="nettoeinkommen_eltern_m", + end_date="2019-06-30", +) +def nettoeinkommen_eltern_m_mit_grober_rundung( + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + familie__erwachsen: bool, +) -> float: + """Parental income (after deduction of taxes, social insurance contributions, and + other deductions) for calculation of child benefit. + + Parameters + ---------- + arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m + See :func:`arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m`. + kindergeld__grundsätzlich_anspruchsberechtigt + See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. + familie__erwachsen + See :func:`familie__erwachsen`. + + Returns + ------- + + """ + # TODO(@MImmesberger): Redesign the conditions in this function: False for adults + # who do not have Kindergeld claims. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 + if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m + else: + out = 0.0 + return out + + +@policy_function( + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 11 Abs. 2 BKGG" + ), + leaf_name="nettoeinkommen_eltern_m", + start_date="2019-07-01", +) +def nettoeinkommen_eltern_m_mit_genauer_rundung( arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, kindergeld__grundsätzlich_anspruchsberechtigt: bool, familie__erwachsen: bool, diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index a64399c7f9..99f0cdb3b3 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -1,9 +1,9 @@ """Income relevant for withholding tax on earnings (Lohnsteuer).""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function -@policy_function(params_key_for_rounding="lohnst") +@policy_function(rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.DOWN)) def einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, steuerklasse: int, @@ -186,7 +186,7 @@ def vorsorge_krankenv_option_a( @policy_function( start_date="2010-01-01", leaf_name="vorsorgepauschale_y", - params_key_for_rounding="lohnst", + rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.UP), ) def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, @@ -259,7 +259,6 @@ def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 start_date="2005-01-01", end_date="2009-12-31", leaf_name="vorsorgepauschale_y", - params_key_for_rounding="lohnst", ) def vorsorgepauschale_y_ab_2005_bis_2009() -> float: return 0.0 diff --git a/src/_gettsim/parameters/eink_st.yaml b/src/_gettsim/parameters/eink_st.yaml index e03748465d..874b6cedb9 100644 --- a/src/_gettsim/parameters/eink_st.yaml +++ b/src/_gettsim/parameters/eink_st.yaml @@ -285,57 +285,3 @@ rente_ertragsanteil: upper_threshold: inf rate_linear: 0.0 intercept_at_lower_threshold: 1 -rounding: - einkommensteuer__betrag_y_sn: - 1900-01-01: - base: 1 - direction: down - reference: Added temporarily, remove when fixing # 823. - 1984-01-01: - base: 1 - direction: down - reference: § 32a Abs. 1 S. 6 EStG - 1997-01-01: - base: 1 - direction: down - reference: § 32a Abs. 1 S. 6 EStG - einkommensteuer__zu_versteuerndes_einkommen_y_sn: - note: - en: before 2002 base and to_add_after_rounding were converted from DM to EUR - 1900-01-01: - base: 27.609762 - direction: down - to_add_after_rounding: 13.804881 - reference: Added temporarily, remove when fixing # 823. - 2001-01-01: - base: 27.609762 - direction: down - to_add_after_rounding: 13.804881 - reference: § 32a Abs. 2 EStG - 2002-01-01: - base: 36 - direction: down - to_add_after_rounding: 18 - reference: § 32a Abs. 2 EStG - 2004-01-01: - base: 1 - direction: down - reference: § 32a Abs. 1 S. 1 EStG - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - 1900-01-01: - base: 1 - direction: down - reference: Added temporarily, remove when fixing # 823. - 2002-01-01: - base: 1 - direction: down - reference: § 32a Abs. 1 S. 6 EStG - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - 1900-01-01: - base: 1 - direction: down - reference: Added temporarily, remove when fixing # 823. - 2002-01-01: - base: 1 - direction: down - reference: § 32a Abs. 1 S. 6 EStG diff --git a/src/_gettsim/parameters/eink_st_abzuege.yaml b/src/_gettsim/parameters/eink_st_abzuege.yaml index 10f1ad5565..fc7191463c 100644 --- a/src/_gettsim/parameters/eink_st_abzuege.yaml +++ b/src/_gettsim/parameters/eink_st_abzuege.yaml @@ -751,17 +751,3 @@ vorsorgepauschale_kv_max: steuerklasse_3: 3000 steuerklasse_nicht3: 1900 reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 -rounding: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - note: - en: Starting date unclear - reference: § 10 Abs. 3 EStG - 1984-01-01: - base: 1 - direction: up - einkommensteuer__abzüge__absetzbare_betreuungskosten_y_sn: - note: - en: Starting date unclear - 1984-01-01: - base: 1 - direction: up diff --git a/src/_gettsim/parameters/elterngeld.yaml b/src/_gettsim/parameters/elterngeld.yaml index f263e0b540..40117f5161 100644 --- a/src/_gettsim/parameters/elterngeld.yaml +++ b/src/_gettsim/parameters/elterngeld.yaml @@ -237,22 +237,3 @@ max_arbeitsstunden_w: 2021-09-01: scalar: 32.0 reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 -rounding: - elterngeld__betrag_m: - 1980-01-01: - base: 0.01 - direction: down - elterngeld__lohnersatzanteil_einkommen_untere_grenze: - 1980-01-01: - base: 2 - direction: down - reference: §2 (2) BEEG - elterngeld__lohnersatzanteil_einkommen_obere_grenze: - 1980-01-01: - base: 2 - direction: down - reference: §2 (2) BEEG - elterngeld__nettoeinkommen_approximation_m: - 1980-01-01: - base: 0.01 - direction: down diff --git a/src/_gettsim/parameters/erziehungsgeld.yaml b/src/_gettsim/parameters/erziehungsgeld.yaml index af8363d636..cac3f22726 100644 --- a/src/_gettsim/parameters/erziehungsgeld.yaml +++ b/src/_gettsim/parameters/erziehungsgeld.yaml @@ -133,16 +133,6 @@ end_age_m_budgetsatz: reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 2004-01-01: scalar: 12 -rounding: - erziehungsgeld__anspruchshöhe_kind_m: - 1900-01-01: - base: 0.01 - direction: nearest - reference: Added temporarily, remove when fixing # 823. - 2004-01-01: - base: 0.01 - direction: nearest - reference: null abolishment_cohort: name: de: Letzte Geburtskohorte für die Erziehungsgeld ausgezahlt wird diff --git a/src/_gettsim/parameters/ges_rente.yaml b/src/_gettsim/parameters/ges_rente.yaml index 764d0b5d31..801d134b6d 100644 --- a/src/_gettsim/parameters/ges_rente.yaml +++ b/src/_gettsim/parameters/ges_rente.yaml @@ -2360,47 +2360,6 @@ altersgrenze_besond_langj_versicherte: 1961: 64.5 1962: 64.666667 1963: 64.833333 -rounding: - sozialversicherung__rente__altersrente__betrag_m: - 1980-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__altersrente__bruttorente_m: - 1980-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__grundrente__betrag_m: - 2021-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__grundrente__anzurechnendes_einkommen_m: - 2021-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__grundrente__basisbetrag_m: - 2021-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - 2021-01-01: - base: 0.01 - direction: nearest - reference: §123 SGB VI Abs. 1 - sozialversicherung__rente__grundrente__höchstbetrag_m: - 2021-01-01: - base: 0.0001 - direction: nearest - reference: §76g SGB VI Abs. 4 Nr. 4 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - 2021-01-01: - base: 0.0001 - direction: nearest - reference: §121 SGB VI Abs. 1 thresholds_wartezeiten: name: de: Zeitgrenzen für Wartezeiten diff --git a/src/_gettsim/parameters/kinderzuschl_eink.yaml b/src/_gettsim/parameters/kinderzuschl_eink.yaml deleted file mode 100644 index e168338814..0000000000 --- a/src/_gettsim/parameters/kinderzuschl_eink.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -rounding: - kinderzuschlag__nettoeinkommen_eltern_m: - 1900-01-01: - base: 10 - direction: down - reference: Added temporarily, remove when fixing # 823. - 2005-01-01: - base: 10 - direction: down - reference: § 6a Abs. 4 BKGG - note: - en: Rounding changed via BGBl. I S. 530 StaFamG Artikel 1 - 2019-07-01: - base: 1 - direction: nearest - reference: § 11 Abs. 2 BKGG diff --git a/src/_gettsim/parameters/lohnst.yaml b/src/_gettsim/parameters/lohnst.yaml index ca2e836fb2..2d6d796330 100644 --- a/src/_gettsim/parameters/lohnst.yaml +++ b/src/_gettsim/parameters/lohnst.yaml @@ -73,22 +73,3 @@ lohnst_einkommensgrenzen: 0: 12485 1: 31404 2: 222260 -rounding: - lohnsteuer__einkommen_y: - 1900-01-01: - base: 1 - direction: down - reference: None. Reference missing. - 1990-01-01: - base: 1 - direction: down - reference: null - lohnsteuer__vorsorgepauschale_y: - 1900-01-01: - base: 1 - direction: up - reference: None. Reference missing. - 1990-01-01: - base: 1 - direction: up - reference: null diff --git a/src/_gettsim/parameters/sozialv_beitr.yaml b/src/_gettsim/parameters/sozialv_beitr.yaml index a26c50ccde..a340f8e176 100644 --- a/src/_gettsim/parameters/sozialv_beitr.yaml +++ b/src/_gettsim/parameters/sozialv_beitr.yaml @@ -927,18 +927,3 @@ mindestlohn: 2025-01-01: scalar: 12.82 reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 -rounding: - sozialversicherung__midijob_faktor_f: - 1900-01-01: - base: 0.0001 - direction: nearest - reference: null - sozialversicherung__minijob_grenze: - 1900-01-01: - base: 1 - direction: up - reference: None. Reference missing. - 1990-01-01: - base: 1 - direction: up - reference: §8 (1a) S.2 SGB IV. diff --git a/src/_gettsim/parameters/unterhaltsvors.yaml b/src/_gettsim/parameters/unterhaltsvors.yaml index d5ca130c6f..9da78add8d 100644 --- a/src/_gettsim/parameters/unterhaltsvors.yaml +++ b/src/_gettsim/parameters/unterhaltsvors.yaml @@ -101,11 +101,3 @@ anwendungsvorschrift: Kindergeldes für das erste Kind vor Anpassung des Kinderfreibetrags (hier: 184 Euro). Ab 2016 orientiert sich der Unterhaltsvorschuss wieder an den regulären Mindestunterhaltsbeträgen. -rounding: - unterhaltsvorschuss__betrag_m: - note: - en: Rounding rules since implementation in 1980 via BGBl. I 1979 S. 1184. - 1980-01-01: - base: 1 - direction: up - reference: § 9 Abs. 3 UhVorschG diff --git a/src/_gettsim/parameters/wohngeld.yaml b/src/_gettsim/parameters/wohngeld.yaml index 6680382858..1e5d4e5350 100644 --- a/src/_gettsim/parameters/wohngeld.yaml +++ b/src/_gettsim/parameters/wohngeld.yaml @@ -1969,14 +1969,3 @@ klimakomponente_m: 4: 34.40 5: 39.20 jede_weitere_person: 4.8 -rounding: - wohngeld__anspruchshöhe_m_bg: - 1970-01-01: - base: 1 - direction: nearest - reference: § 19 WoGG Abs.2 Anlage 3 - wohngeld__anspruchshöhe_m_wthh: - 1970-01-01: - base: 1 - direction: nearest - reference: § 19 WoGG Abs.2 Anlage 3 diff --git "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" index 972e989eb6..0e75bbdf9d 100644 --- "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -1,6 +1,6 @@ """Marginally employed.""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function @policy_function() @@ -36,7 +36,9 @@ def geringfügig_beschäftigt( @policy_function( end_date="1999-12-31", leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + ), ) def minijob_grenze_unterscheidung_ost_west( wohnort_ost: bool, sozialv_beitr_params: dict @@ -65,7 +67,9 @@ def minijob_grenze_unterscheidung_ost_west( start_date="2000-01-01", end_date="2022-09-30", leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + ), ) def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: """Minijob income threshold depending on place of living. @@ -87,7 +91,9 @@ def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: @policy_function( start_date="2022-10-01", leaf_name="minijob_grenze", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + ), ) def minijob_grenze_abgeleitet_von_mindestlohn(sozialv_beitr_params: dict) -> float: """Minijob income threshold since 10/2022. Since then, it is calculated endogenously diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 33e33bf8eb..a893cfb766 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -1,6 +1,6 @@ """Midijob.""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function @policy_function() @@ -50,7 +50,7 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( start_date="2003-04-01", end_date="2004-12-31", leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), ) def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, @@ -111,7 +111,7 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( start_date="2005-01-01", end_date="2022-09-30", leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), ) def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, @@ -174,7 +174,7 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( @policy_function( start_date="2022-10-01", leaf_name="midijob_faktor_f", - params_key_for_rounding="sozialv_beitr", + rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), ) def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index 81f592b93d..0d85123013 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -1,9 +1,15 @@ """Public pension benefits for retirement due to age.""" -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function -@policy_function(end_date="2020-12-31") +@policy_function( + end_date="2020-12-31", + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), + leaf_name="betrag_m", +) def betrag_m( bruttorente_m: float, sozialversicherung__rente__bezieht_rente: bool ) -> float: @@ -12,7 +18,9 @@ def betrag_m( @policy_function( start_date="2021-01-01", - params_key_for_rounding="ges_rente", + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), leaf_name="betrag_m", ) def betrag_m_mit_grundrente( @@ -45,8 +53,10 @@ def betrag_m_mit_grundrente( @policy_function( end_date="2016-12-31", + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", ) def bruttorente_m_mit_harter_hinzuverdienstgrenze( alter: int, @@ -95,7 +105,9 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( start_date="2017-01-01", end_date="2022-12-31", leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), ) def bruttorente_m_mit_hinzuverdienstdeckel( alter: int, @@ -265,7 +277,9 @@ def differenz_bruttolohn_hinzuverdienstdeckel_y( @policy_function( start_date="2023-01-01", leaf_name="bruttorente_m", - params_key_for_rounding="ges_rente", + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), ) def bruttorente_m_ohne_einkommensanrechnung( bruttorente_basisbetrag_m: float, diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index d1556064df..ad2eead8eb 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -1,7 +1,12 @@ -from ttsim import piecewise_polynomial, policy_function +from ttsim import RoundingDirection, RoundingSpec, piecewise_polynomial, policy_function -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), + start_date="2021-01-01", +) def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: """Calculate Grundrentenzuschlag (additional monthly pensions payments resulting from Grundrente) @@ -80,7 +85,12 @@ def einkommen_m( return out -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), + start_date="2021-01-01", +) def anzurechnendes_einkommen_m( einkommen_m_ehe: float, familie__anzahl_personen_ehe: int, @@ -135,7 +145,12 @@ def anzurechnendes_einkommen_m( return out -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + ), + start_date="2021-01-01", +) def basisbetrag_m( mean_entgeltpunkte_zuschlag: float, bewertungszeiten_monate: int, @@ -217,7 +232,14 @@ def durchschnittliche_entgeltpunkte( return out -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.0001, + direction=RoundingDirection.NEAREST, + reference="§76g SGB VI Abs. 4 Nr. 4", + ), + start_date="2021-01-01", +) def höchstbetrag_m( grundrentenzeiten_monate: int, ges_rente_params: dict, @@ -254,7 +276,14 @@ def höchstbetrag_m( return out -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.0001, + direction=RoundingDirection.NEAREST, + reference="§ 123 SGB VI Abs. 1", + ), + start_date="2021-01-01", +) def mean_entgeltpunkte_zuschlag( durchschnittliche_entgeltpunkte: float, höchstbetrag_m: float, @@ -307,7 +336,14 @@ def mean_entgeltpunkte_zuschlag( return out -@policy_function(params_key_for_rounding="ges_rente", start_date="2021-01-01") +@policy_function( + rounding_spec=RoundingSpec( + base=0.0001, + direction=RoundingDirection.NEAREST, + reference="§ 123 SGB VI Abs. 1", + ), + start_date="2021-01-01", +) def proxy_rente_vorjahr_m( # noqa: PLR0913 sozialversicherung__rente__bezieht_rente: bool, sozialversicherung__rente__private_rente_betrag_m: float, diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 34cc17a895..7799010702 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -2,7 +2,14 @@ import numpy -from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function +from ttsim import ( + AggregateByPIDSpec, + AggregationType, + RoundingDirection, + RoundingSpec, + join_numpy, + policy_function, +) aggregation_specs = { "an_elternteil_auszuzahlender_betrag_m": AggregateByPIDSpec( @@ -13,7 +20,12 @@ } -@policy_function(start_date="2009-01-01", params_key_for_rounding="unterhaltsvors") +@policy_function( + start_date="2009-01-01", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.UP, reference="§ 9 Abs. 3 UhVorschG" + ), +) def betrag_m( unterhalt__tatsächlich_erhaltener_betrag_m: float, anspruchshöhe_m: float, @@ -91,7 +103,9 @@ def elternteil_alleinerziehend( @policy_function( end_date="2008-12-31", leaf_name="betrag_m", - params_key_for_rounding="unterhaltsvors", + rounding_spec=RoundingSpec( + base=1, direction=RoundingDirection.DOWN, reference="§ 9 Abs. 3 UhVorschG" + ), ) def not_implemented_m() -> float: raise NotImplementedError( diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 8e69319424..f6b4f43218 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -16,7 +16,7 @@ 3. In this sense, this implementation is an approximation of the actual Wohngeld. """ -from ttsim import policy_function +from ttsim import RoundingDirection, RoundingSpec, policy_function @policy_function() @@ -65,7 +65,13 @@ def betrag_m_wthh( return out -@policy_function(params_key_for_rounding="wohngeld") +@policy_function( + rounding_spec=RoundingSpec( + base=1, + direction=RoundingDirection.NEAREST, + reference="§ 19 WoGG Abs.2 Anlage 3", + ) +) def anspruchshöhe_m_wthh( anzahl_personen_wthh: int, einkommen_m_wthh: float, @@ -109,7 +115,13 @@ def anspruchshöhe_m_wthh( return out -@policy_function(params_key_for_rounding="wohngeld") +@policy_function( + rounding_spec=RoundingSpec( + base=1, + direction=RoundingDirection.NEAREST, + reference="§ 19 WoGG Abs.2 Anlage 3", + ) +) def anspruchshöhe_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, einkommen_m_bg: float, diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 8f323c539e..55ad2a3d7c 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -20,6 +20,7 @@ ) from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment +from ttsim.rounding import RoundingDirection, RoundingSpec from ttsim.shared import ( insert_path_and_value, join_numpy, @@ -41,6 +42,8 @@ "GroupByFunction", "PolicyEnvironment", "PolicyFunction", + "RoundingDirection", + "RoundingSpec", "combine_policy_functions_and_derived_functions", "compute_taxes_and_transfers", "create_time_conversion_functions", diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index b31c5885a7..dde6ed624b 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -3,7 +3,7 @@ import functools import inspect import warnings -from typing import TYPE_CHECKING, Any, Literal, get_args +from typing import TYPE_CHECKING, Any, get_args import dags import dags.tree as dt @@ -27,7 +27,6 @@ ) from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( - KeyErrorMessage, assert_valid_ttsim_pytree, format_errors_and_warnings, format_list_linewise, @@ -125,10 +124,7 @@ def compute_taxes_and_transfers( ) functions_with_rounding_specs = ( - _add_rounding_to_functions( - functions=functions_not_overridden, - params=environment.params, - ) + _add_rounding_to_functions(functions=functions_not_overridden) if rounding else functions_not_overridden ) @@ -366,7 +362,6 @@ def _partial_parameters_to_functions( def _add_rounding_to_functions( functions: QualNameFunctionsDict, - params: dict[str, Any], ) -> QualNameFunctionsDict: """Add appropriate rounding of outputs to function. @@ -374,123 +369,18 @@ def _add_rounding_to_functions( ---------- functions Functions to which rounding should be added. - params : dict - Dictionary of parameters Returns ------- Function with rounding added. """ - rounded_functions = {} - for name, func in functions.items(): - if getattr(func, "params_key_for_rounding", False): - params_key = func.params_key_for_rounding - # Check if there are any rounding specifications in params files. - if not ( - params_key in params - and "rounding" in params[params_key] - and name in params[params_key]["rounding"] - ): - path = dt.tree_path_from_qual_name(name) - raise KeyError( - KeyErrorMessage( - f""" - Rounding specifications for function - - {path} - - are expected in the parameter dictionary at:\n - [{params_key!r}]['rounding'][{name!r}].\n - These nested keys do not exist. If this function should not be - rounded, remove the respective decorator. - """ - ) - ) - rounding_spec = params[params_key]["rounding"][name] - # Check if expected parameters are present in rounding specifications. - if not ("base" in rounding_spec and "direction" in rounding_spec): - raise KeyError( - KeyErrorMessage( - "Both 'base' and 'direction' are expected as rounding " - "parameters in the parameter dictionary. \n " - "At least one of them is missing at:\n" - f"[{params_key!r}]['rounding'][{name!r}]." - ) - ) - # Add rounding. - rounded_functions[name] = _apply_rounding_spec( - base=rounding_spec["base"], - direction=rounding_spec["direction"], - to_add_after_rounding=rounding_spec.get("to_add_after_rounding", 0), - name=name, - )(func) - else: - rounded_functions[name] = func - - return rounded_functions - - -def _apply_rounding_spec( - base: float, - direction: Literal["up", "down", "nearest"], - to_add_after_rounding: float, - name: str, -) -> callable: - """Decorator to round the output of a function. - - Parameters - ---------- - base - Precision of rounding (e.g. 0.1 to round to the first decimal place) - direction - Whether the series should be rounded up, down or to the nearest number - to_add_after_rounding - Number to be added after the rounding step - name: - Name of the function to be rounded. - - Returns - ------- - Series with (potentially) rounded numbers - - """ - - path = dt.tree_path_from_qual_name(name) - - def inner(func): - # Make sure that signature is preserved. - @functools.wraps(func) - def wrapper(*args, **kwargs): - out = func(*args, **kwargs) - - # Check inputs. - if type(base) not in [int, float]: - raise ValueError(f"base needs to be a number, got {base!r} for {path}") - if type(to_add_after_rounding) not in [int, float]: - raise ValueError( - f"Additive part needs to be a number, got" - f" {to_add_after_rounding!r} for {path}" - ) - - if direction == "up": - rounded_out = base * np.ceil(out / base) - elif direction == "down": - rounded_out = base * np.floor(out / base) - elif direction == "nearest": - rounded_out = base * (out / base).round() - else: - raise ValueError( - "direction must be one of 'up', 'down', or 'nearest'" - f", got {direction!r} for {path}" - ) - - rounded_out += to_add_after_rounding - return rounded_out - - return wrapper - - return inner + return { + name: func.rounding_spec.apply_rounding(func) + if getattr(func, "rounding_spec", False) + else func + for name, func in functions.items() + } def _fail_if_environment_not_valid(environment: Any) -> None: diff --git a/src/ttsim/function_types.py b/src/ttsim/function_types.py index 047fc44952..b7600dd09b 100644 --- a/src/ttsim/function_types.py +++ b/src/ttsim/function_types.py @@ -10,6 +10,8 @@ import dags.tree as dt import numpy +from ttsim.rounding import RoundingSpec + T = TypeVar("T") @@ -29,8 +31,8 @@ class PolicyFunction(Callable): The date from which the function is active (inclusive). end_date: The date until which the function is active (inclusive). - params_key_for_rounding: - The key in the params dictionary that should be used for rounding. + rounding_spec: + The rounding specification. skip_vectorization: Whether the function should be vectorized. """ @@ -42,7 +44,7 @@ def __init__( # noqa: PLR0913 leaf_name: str, start_date: datetime.date, end_date: datetime.date, - params_key_for_rounding: str | None, + rounding_spec: RoundingSpec | None, skip_vectorization: bool | None, ): self.skip_vectorization: bool = skip_vectorization @@ -52,7 +54,8 @@ def __init__( # noqa: PLR0913 self.leaf_name: str = leaf_name if leaf_name else function.__name__ self.start_date: datetime.date = start_date self.end_date: datetime.date = end_date - self.params_key_for_rounding: str | None = params_key_for_rounding + self._fail_if_rounding_has_wrong_type(rounding_spec) + self.rounding_spec: RoundingSpec | None = rounding_spec # Expose the signature of the wrapped function for dependency resolution self.__annotations__ = function.__annotations__ @@ -60,6 +63,25 @@ def __init__( # noqa: PLR0913 self.__name__ = function.__name__ self.__signature__ = inspect.signature(self.function) + def _fail_if_rounding_has_wrong_type( + self, rounding_spec: RoundingSpec | None + ) -> None: + """Check if rounding_spec has the correct type. + + Parameters + ---------- + rounding_spec + The rounding specification to check. + + Raises + ------ + AssertionError + If rounding_spec is not a RoundingSpec or None. + """ + assert isinstance(rounding_spec, RoundingSpec | None), ( + f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" + ) + def __call__(self, *args, **kwargs): return self.function(*args, **kwargs) @@ -83,7 +105,7 @@ def policy_function( start_date: str | datetime.date = "1900-01-01", end_date: str | datetime.date = "2100-12-31", leaf_name: str | None = None, - params_key_for_rounding: str | None = None, + rounding_spec: RoundingSpec | None = None, skip_vectorization: bool = False, ) -> PolicyFunction: """ @@ -99,9 +121,9 @@ def policy_function( ensure that the function name is unique in the file where it is defined. Otherwise, the function would be overwritten by the last function with the same name. - **Rounding spec (params_key_for_rounding):** + **Rounding specification (rounding_spec):** - Adds the location of the rounding specification to a PolicyFunction. + Adds the way rounding is to be done to a PolicyFunction. Parameters ---------- @@ -112,10 +134,8 @@ def policy_function( leaf_name The name that should be used as the PolicyFunction's leaf name in the DAG. If omitted, we use the name of the function as defined. - params_key_for_rounding - Key of the parameters dictionary where rounding specifications are found. For - functions that are not user-written this is just the name of the respective - .yaml file. + rounding_spec + The specification to be used for rounding. skip_vectorization Whether the function is already vectorized and, thus, should not be vectorized again. @@ -139,7 +159,7 @@ def inner(func: Callable) -> PolicyFunction: leaf_name=leaf_name if leaf_name else func.__name__, start_date=start_date, end_date=end_date, - params_key_for_rounding=params_key_for_rounding, + rounding_spec=rounding_spec, skip_vectorization=skip_vectorization, ) @@ -254,7 +274,7 @@ def __init__( leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], start_date=source_function.start_date if source_function else None, end_date=source_function.end_date if source_function else None, - params_key_for_rounding=None, + rounding_spec=None, skip_vectorization=True, ) @@ -295,7 +315,7 @@ def __init__( leaf_name=dt.tree_path_from_qual_name(conversion_target)[-1], start_date=source_function.start_date if source_function else None, end_date=source_function.end_date if source_function else None, - params_key_for_rounding=None, + rounding_spec=None, skip_vectorization=True, ) diff --git a/src/ttsim/rounding.py b/src/ttsim/rounding.py new file mode 100644 index 0000000000..a32bddb286 --- /dev/null +++ b/src/ttsim/rounding.py @@ -0,0 +1,70 @@ +from __future__ import annotations + +import functools +from dataclasses import dataclass +from enum import StrEnum + +import numpy as np + + +class RoundingDirection(StrEnum): + """ + Enum for the rounding direction. + """ + + UP = "up" + DOWN = "down" + NEAREST = "nearest" + + +@dataclass +class RoundingSpec: + base: int | float + direction: RoundingDirection + to_add_after_rounding: int | float = 0 + reference: str | None = None + + def __post_init__(self): + """Validate the types of base and to_add_after_rounding.""" + if type(self.base) not in [int, float]: + raise ValueError(f"base needs to be a number, got {self.base!r}") + if type(self.direction) not in [RoundingDirection]: + raise ValueError( + f"direction needs to be a RoundingDirection, got {self.direction!r}" + ) + if type(self.to_add_after_rounding) not in [int, float]: + raise ValueError( + f"Additive part must be a number, got {self.to_add_after_rounding!r}" + ) + + def apply_rounding(self, func: callable) -> callable: + """Decorator to round the output of a function. + + Parameters + ---------- + func + Function to be rounded. + name + Name of the function to be rounded. + + Returns + ------- + Function with rounding applied. + """ + + # Make sure that signature is preserved. + @functools.wraps(func) + def wrapper(*args, **kwargs): + out = func(*args, **kwargs) + + if self.direction == RoundingDirection.UP: + rounded_out = self.base * np.ceil(out / self.base) + elif self.direction == RoundingDirection.DOWN: + rounded_out = self.base * np.floor(out / self.base) + elif self.direction == RoundingDirection.NEAREST: + rounded_out = self.base * (out / self.base).round() + + rounded_out += self.to_add_after_rounding + return rounded_out + + return wrapper diff --git a/tests/ttsim/_helpers.py b/tests/ttsim/_helpers.py new file mode 100644 index 0000000000..42835be8c1 --- /dev/null +++ b/tests/ttsim/_helpers.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from functools import lru_cache +from typing import TYPE_CHECKING + +from ttsim import ( + PolicyEnvironment, + set_up_policy_environment, +) +from ttsim.policy_environment import _parse_date + +if TYPE_CHECKING: + import datetime + + +def cached_set_up_policy_environment( + date: int | str | datetime.date, +) -> PolicyEnvironment: + normalized_date = _parse_date(date) + return _cached_set_up_policy_environment(normalized_date) + + +@lru_cache(maxsize=100) +def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: + return set_up_policy_environment(date) diff --git a/tests/ttsim/namespaces/__init__.py b/tests/ttsim/mettsim/__init__.py similarity index 100% rename from tests/ttsim/namespaces/__init__.py rename to tests/ttsim/mettsim/__init__.py diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py new file mode 100644 index 0000000000..113729f6f6 --- /dev/null +++ b/tests/ttsim/mettsim/config.py @@ -0,0 +1,16 @@ +"""Middle-Earth Taxes and Transfers Simulator. + +TTSIM specification for testing purposes. Taxes and transfer names follow a law-to-code +approach based on the Gondorian tax code. +""" + +from pathlib import Path + +METTSIM_RESSOURCE_DIR = Path(__file__).parent / "functions" + + +FOREIGN_KEYS = ( + ("payroll_tax", "p_id_spouse"), + ("p_id_parent_1",), + ("p_id_parent_2",), +) diff --git a/tests/ttsim/mettsim/functions/__init__.py b/tests/ttsim/mettsim/functions/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/ttsim/mettsim/functions/housing_benefits/amount.py b/tests/ttsim/mettsim/functions/housing_benefits/amount.py new file mode 100644 index 0000000000..55f9974d3e --- /dev/null +++ b/tests/ttsim/mettsim/functions/housing_benefits/amount.py @@ -0,0 +1,13 @@ +from ttsim import policy_function + + +@policy_function() +def amount_m_fam( + eligibility__requirement_fulfilled_fam: bool, + income__amount_m_fam: float, + housing_benefits_params: dict, +) -> float: + if eligibility__requirement_fulfilled_fam: + return income__amount_m_fam * housing_benefits_params["assistance_rate"] + else: + return 0 diff --git a/tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py new file mode 100644 index 0000000000..aeeb66668c --- /dev/null +++ b/tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py @@ -0,0 +1,57 @@ +"""Eligibility for housing benefits. + +Policy regime until 2019: + - Requirement is fulfilled if income of spouses is below subsistence income + - Subsistence income is calculated per spouse + +Policy regime starting in 2020: + - Requirement is fulfilled if income of family is below subsistence income + - Subsistence income is calculated per spouse and child +""" + +from ttsim import AggregateByGroupSpec, policy_function + +aggregation_specs = { + "number_of_children_fam": AggregateByGroupSpec( + source="child", + aggr="sum", + ), +} + + +@policy_function(end_date="2019-12-31", leaf_name="requirement_fulfilled_fam") +def requirement_fulfilled_fam_not_considering_children( + housing_benefits__income__amount_m_sp: float, + number_of_individuals_sp: int, + housing_benefits_params: dict, +) -> bool: + return ( + housing_benefits__income__amount_m_sp + < housing_benefits_params["subsistence_income_per_spouse_m"] + * number_of_individuals_sp + ) + + +@policy_function(start_date="2020-01-01", leaf_name="requirement_fulfilled_fam") +def requirement_fulfilled_fam_considering_children( + housing_benefits__income__amount_m_fam: float, + housing_benefits_params: dict, + number_of_children_considered: int, + number_of_individuals_sp: int, +) -> bool: + return housing_benefits__income__amount_m_fam < ( + housing_benefits_params["subsistence_income_per_spouse"] + * number_of_individuals_sp + + housing_benefits_params["subsistence_income_per_child"] + * number_of_children_considered + ) + + +@policy_function(start_date="2020-01-01") +def number_of_children_considered( + number_of_children_fam: int, + housing_benefits_params: dict, +) -> int: + return min( + number_of_children_fam, housing_benefits_params["max_number_of_children"] + ) diff --git a/tests/ttsim/mettsim/functions/housing_benefits/income/income.py b/tests/ttsim/mettsim/functions/housing_benefits/income/income.py new file mode 100644 index 0000000000..493c146a4e --- /dev/null +++ b/tests/ttsim/mettsim/functions/housing_benefits/income/income.py @@ -0,0 +1,15 @@ +from ttsim import RoundingDirection, RoundingSpec, policy_function + + +@policy_function( + rounding_spec=RoundingSpec( + base=1, + direction=RoundingDirection.DOWN, + reference="§ 4 Gondorian Housing Benefit Law", + ) +) +def amount_m( + gross_wage_m: float, + payroll_tax__amount_m: float, +) -> float: + return gross_wage_m - payroll_tax__amount_m diff --git a/tests/ttsim/mettsim/functions/payroll_tax/amount.py b/tests/ttsim/mettsim/functions/payroll_tax/amount.py new file mode 100644 index 0000000000..f1498aa8de --- /dev/null +++ b/tests/ttsim/mettsim/functions/payroll_tax/amount.py @@ -0,0 +1,9 @@ +from ttsim import policy_function + + +@policy_function() +def amount_y( + income__amount_y: float, + payroll_tax_params: dict, +) -> float: + return income__amount_y * payroll_tax_params["rate"] diff --git a/tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py new file mode 100644 index 0000000000..f06a245f21 --- /dev/null +++ b/tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py @@ -0,0 +1,46 @@ +from ttsim import AggregateByPIDSpec, join_numpy, policy_function + +aggregation_specs = { + "amount_y": AggregateByPIDSpec( + p_id_to_aggregate_by="recipient_id", + source="claim_of_child_y", + aggr="sum", + ), +} + + +@policy_function() +def claim_of_child_y( + child_eligible: bool, + payroll_tax_params: dict, +) -> float: + if child_eligible: + return payroll_tax_params["child_tax_credit"] + else: + return 0 + + +@policy_function() +def child_eligible( + age: int, + payroll_tax_params: dict, + child_in_same_household_as_recipient: float, +) -> bool: + return age <= payroll_tax_params["max_age"] and child_in_same_household_as_recipient + + +@policy_function(skip_vectorization=True) +def child_in_same_household_as_recipient( + p_id: int, + hh_id: int, + recipient_id: int, +) -> bool: + return ( + join_numpy( + foreign_key=recipient_id, + primary_key=p_id, + target=hh_id, + value_if_foreign_key_is_missing=-1, + ) + == hh_id + ) diff --git a/tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py b/tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py new file mode 100644 index 0000000000..f7ebde8994 --- /dev/null +++ b/tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py @@ -0,0 +1,93 @@ +import numpy + +from ttsim import group_by_function + + +@group_by_function() +def sp_id( + p_id: numpy.ndarray[int], + p_id_spouse: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the spouse (sp) group ID for each person. + """ + p_id_to_sp_id = {} + next_sp_id = 0 + result = [] + + for index, current_p_id in enumerate(p_id): + current_p_id_spouse = p_id_spouse[index] + + if current_p_id_spouse >= 0 and current_p_id_spouse in p_id_to_sp_id: + result.append(p_id_to_sp_id[current_p_id_spouse]) + continue + + # New married couple + result.append(next_sp_id) + p_id_to_sp_id[current_p_id] = next_sp_id + next_sp_id += 1 + + return numpy.asarray(result) + + +@group_by_function() +def fam_id( + p_id_spouse: numpy.ndarray[int], + p_id: numpy.ndarray[int], + age: numpy.ndarray[int], + p_id_parent_1: numpy.ndarray[int], + p_id_parent_2: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the family ID for each person. + """ + # Build indexes + p_id_to_index = {} + p_id_to_p_ids_children = {} + + for index, current_p_id in enumerate(p_id): + p_id_to_index[current_p_id] = index + current_p_id_parent_1 = p_id_parent_1[index] + current_p_id_parent_2 = p_id_parent_2[index] + + if current_p_id_parent_1 >= 0: + if current_p_id_parent_1 not in p_id_to_p_ids_children: + p_id_to_p_ids_children[current_p_id_parent_1] = [] + p_id_to_p_ids_children[current_p_id_parent_1].append(current_p_id) + + if current_p_id_parent_2 >= 0: + if current_p_id_parent_2 not in p_id_to_p_ids_children: + p_id_to_p_ids_children[current_p_id_parent_2] = [] + p_id_to_p_ids_children[current_p_id_parent_2].append(current_p_id) + + p_id_to_fam_id = {} + next_fam_id = 0 + + for index, current_p_id in enumerate(p_id): + # Already assigned a fam_id to this p_id via spouse / parent + if current_p_id in p_id_to_fam_id: + continue + + p_id_to_fam_id[current_p_id] = next_fam_id + + current_p_id_spouse = p_id_spouse[index] + current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) + + # Assign fam_id to spouse + if current_p_id_spouse >= 0: + p_id_to_fam_id[current_p_id_spouse] = next_fam_id + + # Assign fam_id to children + for current_p_id_child in current_p_id_children: + child_index = p_id_to_index[current_p_id_child] + child_age = age[child_index] + child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) + + if child_age < 25 and len(child_p_id_children) == 0: + p_id_to_fam_id[current_p_id_child] = next_fam_id + + next_fam_id += 1 + + # Compute result vector + result = [p_id_to_fam_id[current_p_id] for current_p_id in p_id] + return numpy.asarray(result) diff --git a/tests/ttsim/mettsim/functions/payroll_tax/income/amount.py b/tests/ttsim/mettsim/functions/payroll_tax/income/amount.py new file mode 100644 index 0000000000..c22dd910e0 --- /dev/null +++ b/tests/ttsim/mettsim/functions/payroll_tax/income/amount.py @@ -0,0 +1,9 @@ +from ttsim import policy_function + + +@policy_function() +def amount_y( + gross_wage_y: float, + deductions_y: float, +) -> float: + return gross_wage_y - deductions_y diff --git a/tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py new file mode 100644 index 0000000000..7edad1ed5d --- /dev/null +++ b/tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py @@ -0,0 +1,12 @@ +from ttsim import policy_function + + +@policy_function() +def deductions_y( + payroll_tax__child_tax_credit__amount_y: float, + payroll_tax_params: dict, +) -> float: + return ( + payroll_tax_params["lump_sum_deduction_y"] + + payroll_tax__child_tax_credit__amount_y + ) diff --git a/tests/ttsim/mettsim/parameters/housing_benefits.yaml b/tests/ttsim/mettsim/parameters/housing_benefits.yaml new file mode 100644 index 0000000000..9af45bd15b --- /dev/null +++ b/tests/ttsim/mettsim/parameters/housing_benefits.yaml @@ -0,0 +1,11 @@ +--- +eligibility: + 1900-01-01: + subsistence_income_per_spouse_m: 500.0 + 2020-01-01: + subsistence_income_per_spouse_m: 500.0 + subsistence_income_per_child: 200.0 + max_number_of_children: 2 +assistance_rate: + 1900-01-01: + scalar: 0.5 diff --git a/tests/ttsim/mettsim/parameters/payroll_tax.yaml b/tests/ttsim/mettsim/parameters/payroll_tax.yaml new file mode 100644 index 0000000000..09cb1be584 --- /dev/null +++ b/tests/ttsim/mettsim/parameters/payroll_tax.yaml @@ -0,0 +1,9 @@ +--- +child_tax_credit: + 1900-01-01: + child_amount_y: 100.0 + max_age: 18 +income: + 1900-01-01: null + lump_sum_deduction_y: 100.0 + rate: 0.3 diff --git a/tests/ttsim/namespaces/module1.py b/tests/ttsim/namespaces/module1.py deleted file mode 100644 index f5a0337716..0000000000 --- a/tests/ttsim/namespaces/module1.py +++ /dev/null @@ -1,33 +0,0 @@ -"""Test namespace.""" - -from ttsim.function_types import policy_function - - -@policy_function() -def f(h: int, module1_params: dict[str, int]) -> int: # noqa: ARG001 - return module1_params["a"] + module1_params["b"] - - -@policy_function() -def g(f: int, module1_params: dict[str, int]) -> int: - return f + module1_params["c"] - - -@policy_function() -def h() -> int: - return 1 - - -@policy_function() -def some_unused_function(some_unused_param: int) -> int: - return some_unused_param - - -FUNCTIONS = { - "module1": { - "f": f, - "g": g, - "h": h, - "some_unused_function": some_unused_function, - } -} diff --git a/tests/ttsim/namespaces/module2.py b/tests/ttsim/namespaces/module2.py deleted file mode 100644 index 97628ced5a..0000000000 --- a/tests/ttsim/namespaces/module2.py +++ /dev/null @@ -1,21 +0,0 @@ -"""Test namespace.""" - -from ttsim.function_types import policy_function - - -@policy_function() -def f(g: int, module2_params: dict[str, int]) -> int: # noqa: ARG001 - return module2_params["a"] + module2_params["b"] - - -@policy_function() -def g(module1__f: int, module2_params: dict[str, int]) -> int: - return module1__f + module2_params["c"] - - -FUNCTIONS = { - "module2": { - "f": f, - "g": g, - } -} diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 9d341ad258..7e1de59d2e 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -6,12 +6,9 @@ import numpy import pandas as pd import pytest +from mettsim.config import FOREIGN_KEYS +from mettsim.functions.payroll_tax.group_by_ids import fam_id, sp_id -from _gettsim.arbeitslosengeld_2.group_by_ids import bg_id -from _gettsim.config import FOREIGN_KEYS -from _gettsim.wohngeld.group_by_ids import ( - wthh_id, -) from gettsim import FunctionsAndColumnsOverlapWarning from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.compute_taxes_and_transfers import ( @@ -51,13 +48,13 @@ def minimal_input_data_shared_hh(): # Create a function which is used by some tests below @policy_function() -def func_before_partial(arg_1, arbeitsl_geld_2_params): - return arg_1 + arbeitsl_geld_2_params["test_param_1"] +def func_before_partial(arg_1, payroll_tax_params): + return arg_1 + payroll_tax_params["test_param_1"] func_after_partial = _partial_parameters_to_functions( {"test_func": func_before_partial}, - {"arbeitsl_geld_2": {"test_param_1": 1}}, + {"payroll_tax": {"test_param_1": 1}}, )["test_func"] @@ -153,30 +150,15 @@ def test_fail_if_pid_is_non_unique(): _fail_if_pid_is_non_unique(data) -@pytest.mark.parametrize( - ( - "foreign_key_name", - "expected_error_message", - ), - [ - ("familie__p_id_ehepartner", "not a valid p_id in the\ninput data"), - ( - "arbeitslosengeld_2__p_id_einstandspartner", - "not a\nvalid p_id in the input data", - ), - ("familie__p_id_elternteil_1", "not a valid p_id in the\ninput data"), - ("familie__p_id_elternteil_2", "not a valid p_id in the\ninput data"), - ], -) -def test_fail_if_foreign_key_points_to_non_existing_pid( - foreign_key_name, expected_error_message -): +@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) +def test_fail_if_foreign_key_points_to_non_existing_pid(foreign_key_path): + foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) data = { foreign_key_name: pd.Series([0, 1, 4]), "p_id": pd.Series([1, 2, 3]), } - with pytest.raises(ValueError, match=expected_error_message): + with pytest.raises(ValueError, match="not a valid p_id in the\ninput data"): _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) @@ -191,27 +173,15 @@ def test_allow_minus_one_as_foreign_key(foreign_key_path): _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) -@pytest.mark.parametrize( - ( - "foreign_key_name", - "expected_error_message", - ), - [ - ("familie__p_id_ehepartner", "are equal to the p_id"), - ("arbeitslosengeld_2__p_id_einstandspartner", "are equal to\nthe p_id"), - ("familie__p_id_elternteil_1", "are equal to the p_id"), - ("familie__p_id_elternteil_2", "are equal to the p_id"), - ], -) -def test_fail_if_foreign_key_points_to_pid_of_same_row( - foreign_key_name, expected_error_message -): +@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) +def test_fail_if_foreign_key_points_to_pid_of_same_row(foreign_key_path): + foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) data = { foreign_key_name: pd.Series([1, 3, 3]), "p_id": pd.Series([1, 2, 3]), } - with pytest.raises(ValueError, match=expected_error_message): + with pytest.raises(ValueError, match="are equal to the p_id"): _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) @@ -227,11 +197,11 @@ def test_fail_if_foreign_key_points_to_pid_of_same_row( ), ( { - "foo_eg": pd.Series([1, 2, 2], name="foo_eg"), - "eg_id": pd.Series([1, 1, 2], name="eg_id"), + "foo_fam": pd.Series([1, 2, 2], name="foo_fam"), + "fam_id": pd.Series([1, 1, 2], name="fam_id"), }, { - "eg_id": group_by_function()(lambda x: x), + "fam_id": group_by_function()(lambda x: x), }, ), ], @@ -641,12 +611,12 @@ def test_fail_if_cannot_be_converted_to_internal_type( "data, functions_overridden", [ ( - {"bg_id": pd.Series([1, 2, 3])}, - {"bg_id": bg_id}, + {"sp_id": pd.Series([1, 2, 3])}, + {"sp_id": sp_id}, ), ( - {"wthh_id": pd.Series([1, 2, 3])}, - {"wthh_id": wthh_id}, + {"fam_id": pd.Series([1, 2, 3])}, + {"fam_id": fam_id}, ), ], ) @@ -665,29 +635,27 @@ def test_provide_endogenous_groupings(data, functions_overridden): "- hh_id: Conversion from input type float64 to int", ), ( - {"wohnort_ost": pd.Series([1.1, 0.0, 1.0])}, + {"gondorian": pd.Series([1.1, 0.0, 1.0])}, {}, - "- wohnort_ost: Conversion from input type float64 to bool", + "- gondorian: Conversion from input type float64 to bool", ), ( { "hh_id": pd.Series([1.0, 2.0, 3.0]), - "wohnort_ost": pd.Series([2, 0, 1]), + "gondorian": pd.Series([2, 0, 1]), }, {}, - "- wohnort_ost: Conversion from input type int64 to bool", + "- gondorian: Conversion from input type int64 to bool", ), ( - {"wohnort_ost": pd.Series(["True", "False"])}, + {"gondorian": pd.Series(["True", "False"])}, {}, - "- wohnort_ost: Conversion from input type object to bool", + "- gondorian: Conversion from input type object to bool", ), ( { "hh_id": pd.Series([1, "1", 2]), - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": pd.Series( # noqa: E501 - ["2000", 3000, 4000] - ), + "payroll_tax__amount": pd.Series(["2000", 3000, 4000]), }, {}, "- hh_id: Conversion from input type object to int failed.", diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index ae0cc60084..ad2e21762d 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -4,8 +4,8 @@ import numpy import pytest +from mettsim.config import METTSIM_RESSOURCE_DIR -from _gettsim.config import RESOURCE_DIR from ttsim.function_types import _vectorize_func, policy_function from ttsim.loader import ( _convert_path_to_tree_path, @@ -20,15 +20,15 @@ def test_load_path(): assert _load_module( - RESOURCE_DIR / "sozialversicherung" / "kranken" / "beitrag" / "beitragssatz.py", - RESOURCE_DIR, + METTSIM_RESSOURCE_DIR / "payroll_tax" / "amount.py", + METTSIM_RESSOURCE_DIR, ) def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and AggregationSpecs.""" - all_files = _find_python_files_recursively(RESOURCE_DIR) + all_files = _find_python_files_recursively(METTSIM_RESSOURCE_DIR) assert "__init__.py" not in [file.name for file in all_files] @@ -62,12 +62,15 @@ def test_vectorize_func(vectorized_function: Callable) -> None: ), [ ( - RESOURCE_DIR / "foo" / "spam" / "bar.py", - RESOURCE_DIR, - ("foo", "spam"), + METTSIM_RESSOURCE_DIR + / "payroll_tax" + / "child_tax_credit" + / "child_tax_credit.py", + METTSIM_RESSOURCE_DIR, + ("payroll_tax", "child_tax_credit"), ), - (RESOURCE_DIR / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), - (RESOURCE_DIR / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 + (METTSIM_RESSOURCE_DIR / "foo" / "bar.py", METTSIM_RESSOURCE_DIR, ("foo",)), + (METTSIM_RESSOURCE_DIR / "foo.py", METTSIM_RESSOURCE_DIR, tuple()), # noqa: C408 ], ) def test_convert_path_to_tree_path( diff --git a/tests/ttsim/test_namespaces.py b/tests/ttsim/test_namespaces.py deleted file mode 100644 index 4743a589b2..0000000000 --- a/tests/ttsim/test_namespaces.py +++ /dev/null @@ -1,101 +0,0 @@ -"""Test namespace-specific function processing.""" - -import importlib - -import pandas as pd -import pytest - -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType -from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers -from ttsim.policy_environment import PolicyEnvironment - - -@pytest.fixture -def functions_tree(): - module1 = importlib.import_module("namespaces.module1") - module2 = importlib.import_module("namespaces.module2") - return { - **module1.FUNCTIONS, - **module2.FUNCTIONS, - } - - -@pytest.fixture -def parameters(): - return { - "module1": { - "a": 1, - "b": 1, - "c": 1, - }, - "module2": { - "a": 1, - "b": 1, - "c": 1, - }, - } - - -@pytest.fixture -def aggregation_tree(): - return { - "module1": { - "group_mean_hh": AggregateByGroupSpec( - source="f", - aggr=AggregationType.SUM, - ), - }, - "module2": { - "p_id_aggregation_target": AggregateByPIDSpec( - p_id_to_aggregate_by="groupings__some_foreign_keys", - source="g_hh", - aggr=AggregationType.SUM, - ), - }, - } - - -def test_compute_taxes_and_transfers_with_tree( - functions_tree, parameters, aggregation_tree -): - """Test compute_taxes_and_transfers with function tree input.""" - policy_env = PolicyEnvironment( - functions_tree=functions_tree, - params=parameters, - aggregation_specs_tree=aggregation_tree, - ) - targets = { - "module1": { - "g_hh": None, - "group_mean_hh": None, - }, - "module2": { - "g_hh": None, - "p_id_aggregation_target": None, - }, - } - data = { - "p_id": pd.Series([0, 1, 2]), - "hh_id": pd.Series([0, 0, 1]), - "familie": { - "ehe_id": pd.Series([0, 1, 2]), - }, - "arbeitslosengeld_2": { - "bg_id": pd.Series([0, 1, 2]), - "eg_id": pd.Series([0, 1, 2]), - "fg_id": pd.Series([0, 1, 2]), - }, - "wohngeld": { - "wthh_id": pd.Series([0, 1, 2]), - }, - "einkommensteuer": { - "sn_id": pd.Series([0, 1, 2]), - }, - "groupings": { - "some_foreign_keys": pd.Series([2, 0, 1]), - }, - "module1": { - "f": pd.Series([1, 2, 3]), - }, - } - compute_taxes_and_transfers(data, policy_env, targets) diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index cd06039307..7aa0b6eb26 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -1,113 +1,96 @@ -import datetime - -import dags.tree as dt import pandas as pd import pytest -import yaml from pandas._testing import assert_series_equal -from _gettsim.config import INTERNAL_PARAMS_GROUPS, RESOURCE_DIR from ttsim.compute_taxes_and_transfers import ( - _add_rounding_to_functions, - _apply_rounding_spec, compute_taxes_and_transfers, ) from ttsim.function_types import policy_function -from ttsim.loader import load_functions_tree_for_date from ttsim.policy_environment import PolicyEnvironment +from ttsim.rounding import RoundingDirection, RoundingSpec rounding_specs_and_exp_results = [ - (1, "up", None, [100.24, 100.78], [101.0, 101.0]), - (1, "down", None, [100.24, 100.78], [100.0, 100.0]), - (1, "nearest", None, [100.24, 100.78], [100.0, 101.0]), - (5, "up", None, [100.24, 100.78], [105.0, 105.0]), - (0.1, "down", None, [100.24, 100.78], [100.2, 100.7]), - (0.001, "nearest", None, [100.24, 100.78], [100.24, 100.78]), - (1, "up", 10, [100.24, 100.78], [111.0, 111.0]), - (1, "down", 10, [100.24, 100.78], [110.0, 110.0]), - (1, "nearest", 10, [100.24, 100.78], [110.0, 111.0]), + ( + RoundingSpec(base=1, direction=RoundingDirection.UP), + [100.24, 100.78], + [101.0, 101.0], + ), + ( + RoundingSpec(base=1, direction=RoundingDirection.DOWN), + [100.24, 100.78], + [100.0, 100.0], + ), + ( + RoundingSpec(base=1, direction=RoundingDirection.NEAREST), + [100.24, 100.78], + [100.0, 101.0], + ), + ( + RoundingSpec(base=5, direction=RoundingDirection.UP), + [100.24, 100.78], + [105.0, 105.0], + ), + ( + RoundingSpec(base=0.1, direction=RoundingDirection.DOWN), + [100.24, 100.78], + [100.2, 100.7], + ), + ( + RoundingSpec(base=0.001, direction=RoundingDirection.NEAREST), + [100.24, 100.78], + [100.24, 100.78], + ), + ( + RoundingSpec(base=1, direction=RoundingDirection.UP, to_add_after_rounding=10), + [100.24, 100.78], + [111.0, 111.0], + ), + ( + RoundingSpec( + base=1, direction=RoundingDirection.DOWN, to_add_after_rounding=10 + ), + [100.24, 100.78], + [110.0, 110.0], + ), + ( + RoundingSpec( + base=1, direction=RoundingDirection.NEAREST, to_add_after_rounding=10 + ), + [100.24, 100.78], + [110.0, 111.0], + ), ] def test_decorator(): - @policy_function(params_key_for_rounding="params_key_test") + rs = RoundingSpec(base=1, direction=RoundingDirection.UP) + + @policy_function(rounding_spec=rs) def test_func(): return 0 - assert test_func.params_key_for_rounding == "params_key_test" - - -@pytest.mark.parametrize( - "rounding_specs", - [ - {}, - {"params_key_test": {}}, - {"params_key_test": {"rounding": {}}}, - {"params_key_test": {"rounding": {"test_func": {}}}}, - ], -) -def test_no_rounding_specs(rounding_specs): - with pytest.raises(KeyError): - - @policy_function(params_key_for_rounding="params_key_test") - def test_func(): - return 0 - - environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) - - compute_taxes_and_transfers( - data_tree={"p_id": pd.Series([1, 2])}, - environment=environment, - targets_tree={"test_func": None}, - ) + assert test_func.rounding_spec == rs -@pytest.mark.parametrize( - "base, direction, to_add_after_rounding", - [ - (1, "upper", 0), - ("0.1", "down", 0), - (5, "closest", 0), - (5, "up", "0"), - ], -) -def test_rounding_specs_wrong_format(base, direction, to_add_after_rounding): - with pytest.raises(ValueError): +def test_malformed_rounding_specs(): + with pytest.raises(AssertionError): - @policy_function(params_key_for_rounding="params_key_test") + @policy_function(rounding_spec={"base": 1, "direction": "updsf"}) def test_func(): return 0 - rounding_specs = { - "params_key_test": { - "rounding": { - "test_func": { - "base": base, - "direction": direction, - "to_add_after_rounding": to_add_after_rounding, - } - } - } - } - - environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) - - compute_taxes_and_transfers( - data_tree={"p_id": pd.Series([1, 2])}, - environment=environment, - targets_tree={"test_func": None}, - ) + PolicyEnvironment({"test_func": test_func}) @pytest.mark.parametrize( - "base, direction, to_add_after_rounding, input_values, exp_output", + "rounding_spec, input_values, exp_output", rounding_specs_and_exp_results, ) -def test_rounding(base, direction, to_add_after_rounding, input_values, exp_output): +def test_rounding(rounding_spec, input_values, exp_output): """Check if rounding is correct.""" # Define function that should be rounded - @policy_function(params_key_for_rounding="params_key_test") + @policy_function(rounding_spec=rounding_spec) def test_func(income): return income @@ -115,25 +98,8 @@ def test_func(income): "p_id": pd.Series([1, 2]), "namespace": {"income": pd.Series(input_values)}, } - rounding_specs = { - "params_key_test": { - "rounding": { - "namespace__test_func": { - "base": base, - "direction": direction, - } - } - } - } - - if to_add_after_rounding: - rounding_specs["params_key_test"]["rounding"]["namespace__test_func"][ - "to_add_after_rounding" - ] = to_add_after_rounding - environment = PolicyEnvironment( - {"namespace": {"test_func": test_func}}, rounding_specs - ) + environment = PolicyEnvironment({"namespace": {"test_func": test_func}}) calc_result = compute_taxes_and_transfers( data_tree=data, @@ -151,7 +117,9 @@ def test_rounding_with_time_conversion(): """Check if rounding is correct for time-converted functions.""" # Define function that should be rounded - @policy_function(params_key_for_rounding="params_key_test") + @policy_function( + rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.DOWN) + ) def test_func_m(income): return income @@ -159,17 +127,8 @@ def test_func_m(income): "p_id": pd.Series([1, 2]), "income": pd.Series([1.2, 1.5]), } - rounding_specs = { - "params_key_test": { - "rounding": { - "test_func_m": { - "base": 1, - "direction": "down", - } - } - } - } - environment = PolicyEnvironment({"test_func_m": test_func_m}, rounding_specs) + + environment = PolicyEnvironment({"test_func_m": test_func_m}) calc_result = compute_taxes_and_transfers( data_tree=data, @@ -184,40 +143,22 @@ def test_func_m(income): @pytest.mark.parametrize( - """ - base, - direction, - to_add_after_rounding, - input_values_exp_output, - ignore_since_not_rounded - """, + "rounding_spec, input_values_exp_output, ignore_since_no_rounding", rounding_specs_and_exp_results, ) def test_no_rounding( - base, - direction, - to_add_after_rounding, + rounding_spec, input_values_exp_output, - ignore_since_not_rounded, # noqa: ARG001 + ignore_since_no_rounding, # noqa: ARG001 ): # Define function that should be rounded - @policy_function(params_key_for_rounding="params_key_test") + @policy_function(rounding_spec=rounding_spec) def test_func(income): return income data = {"p_id": pd.Series([1, 2])} data["income"] = pd.Series(input_values_exp_output) - rounding_specs = { - "params_key_test": { - "rounding": {"test_func": {"base": base, "direction": direction}} - } - } - environment = PolicyEnvironment({"test_func": test_func}, rounding_specs) - - if to_add_after_rounding: - rounding_specs["params_key_test"]["rounding"]["test_func"][ - "to_add_after_rounding" - ] = to_add_after_rounding + environment = PolicyEnvironment({"test_func": test_func}) calc_result = compute_taxes_and_transfers( data_tree=data, @@ -233,26 +174,16 @@ def test_func(income): @pytest.mark.parametrize( - "base, direction, to_add_after_rounding, input_values, exp_output", + "rounding_spec, input_values, exp_output", rounding_specs_and_exp_results, ) -def test_rounding_callable( - base, direction, to_add_after_rounding, input_values, exp_output -): - """Check if callable is rounded correctly. - - Tests `_apply_rounding_spec` directly. - """ +def test_rounding_callable(rounding_spec, input_values, exp_output): + """Check if callable is rounded correctly.""" def test_func(income): return income - func_with_rounding = _apply_rounding_spec( - base=base, - direction=direction, - to_add_after_rounding=to_add_after_rounding if to_add_after_rounding else 0, - name="test_func", - )(test_func) + func_with_rounding = rounding_spec.apply_rounding(test_func) assert_series_equal( func_with_rounding(pd.Series(input_values)), @@ -261,85 +192,40 @@ def test_func(income): ) -@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") -def test_decorator_for_all_functions_with_rounding_spec(): - """Check if all functions for which rounding parameters are specified have an - attribute which indicates rounding.""" +@pytest.mark.parametrize( + "rounding_spec, input_values, exp_output", + rounding_specs_and_exp_results, +) +def test_rounding_spec(rounding_spec, input_values, exp_output): + """Test RoundingSpec directly.""" - # Find all functions for which rounding parameters are specified - params_dict = { - group: yaml.safe_load( - (RESOURCE_DIR / "parameters" / f"{group}.yaml").read_text(encoding="utf-8") - ) - for group in INTERNAL_PARAMS_GROUPS - } - params_keys_with_rounding_spec = [ - k for k in params_dict if "rounding" in params_dict[k] - ] - function_names_with_rounding_spec = [ - fn for k in params_keys_with_rounding_spec for fn in params_dict[k]["rounding"] - ] - - # Load mapping of time dependent functions. This will be much nicer after #334 is - # addressed. - time_dependent_functions = {} - for year in range(1990, 2023): - year_functions = dt.flatten_to_tree_paths( - load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) - ).values() - function_name_to_leaf_name_dict = { - func.function.__name__: func.leaf_name for func in year_functions - } - time_dependent_functions = { - **time_dependent_functions, - **function_name_to_leaf_name_dict, - } - - # Add time dependent functions for which rounding specs for new name exist - # and remove new name from list - function_names_to_check = function_names_with_rounding_spec + [ - k - for k, v in time_dependent_functions.items() - if v in function_names_with_rounding_spec - ] - function_names_to_check = [ - fn - for fn in function_names_to_check - if fn not in time_dependent_functions.values() - ] - - functions_to_check = [ - f - for f in _load_internal_functions() # noqa: F821 - if f.original_function_name in function_names_to_check - ] - - for f in functions_to_check: - assert f.params_key_for_rounding, ( - f"For the function {f.original_function_name}, rounding parameters are" - f" specified. However, its `params_key_for_rounding` attribute is not set." - ) + def test_func(income): + return income + + rounded_func = rounding_spec.apply_rounding(test_func) + result = rounded_func(pd.Series(input_values)) + + assert_series_equal( + pd.Series(result), + pd.Series(exp_output), + check_names=False, + ) @pytest.mark.parametrize( - "params, match", + "base, direction, to_add_after_rounding", [ - ({}, "Rounding specifications for function"), - ({"eink_st": {}}, "Rounding specifications for function"), - ({"eink_st": {"rounding": {}}}, "Rounding specifications for function"), - ( - {"eink_st": {"rounding": {"eink_st_func": {}}}}, - "Both 'base' and 'direction' are expected", - ), + (1, "upper", 0), + ("0.1", RoundingDirection.DOWN, 0), + (5, "closest", 0), + (5, RoundingDirection.UP, "0"), ], ) -def test_raise_if_missing_rounding_spec(params, match): - @policy_function(params_key_for_rounding="eink_st") - def eink_st_func(arg_1: float) -> float: - return arg_1 - - with pytest.raises(KeyError, match=match): - _add_rounding_to_functions( - functions={"eink_st_func": eink_st_func}, - params=params, +def test_rounding_spec_validation(base, direction, to_add_after_rounding): + """Test validation of RoundingSpec parameters.""" + with pytest.raises(ValueError): + RoundingSpec( + base=base, + direction=direction, + to_add_after_rounding=to_add_after_rounding, ) diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 00c3bd3888..fa83a782c7 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -369,6 +369,7 @@ def test_unallowed_operation_wrapper(func): # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 for year in range(1990, 2023): + @pytest.mark.skip(reason="@Tim:Need to take care of RoundingDirection issue first.") @pytest.mark.parametrize( "func", [ diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index 56d7d61947..00b95135ae 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -1,7 +1,7 @@ import networkx as nx import pytest +from _helpers import cached_set_up_policy_environment -from _gettsim_tests._helpers import cached_set_up_policy_environment from ttsim.policy_environment import PolicyEnvironment from ttsim.visualization import ( _get_selected_nodes, From f9e5f55e370dbaaeb17bde4302afef88664ce7e7 Mon Sep 17 00:00:00 2001 From: Max Jahn <max.jahn45@gmail.com> Date: Wed, 9 Apr 2025 10:50:21 +0200 Subject: [PATCH 013/109] Fix bug in `fg_id` creation, #801 (#861) `fg_id` creation did not work correctly for some orderings of adults (#801). Now adds fg_id for both the einstandspartner and his children at the same time. - [x] Fix loop - [x] Add test case for special case mentioned in #801 --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../arbeitslosengeld_2/group_by_ids.py | 32 ++++++-- .../2005/fg_id_not_sensitive_to_order.yaml | 77 +++++++++++++++++++ 2 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml diff --git a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py index 2624532e8f..2e83a686bf 100644 --- a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py +++ b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py @@ -82,7 +82,7 @@ def bg_id( @group_by_function() -def fg_id( # noqa: PLR0913 +def fg_id( # noqa: PLR0913 PLR0912 p_id_einstandspartner: numpy.ndarray[int], p_id: numpy.ndarray[int], hh_id: numpy.ndarray[int], @@ -134,10 +134,6 @@ def fg_id( # noqa: PLR0913 current_p_id_einstandspartner = p_id_einstandspartner[index] current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) - # Assign fg to einstandspartner - if current_p_id_einstandspartner >= 0: - p_id_to_fg_id[current_p_id_einstandspartner] = next_fg_id - # Assign fg to children for current_p_id_child in current_p_id_children: child_index = p_id_to_index[current_p_id_child] @@ -156,6 +152,32 @@ def fg_id( # noqa: PLR0913 ): p_id_to_fg_id[current_p_id_child] = next_fg_id + # Assign fg to einstandspartner + if current_p_id_einstandspartner >= 0: + p_id_to_fg_id[current_p_id_einstandspartner] = next_fg_id + current_p_id_einstandspartner_children = p_id_to_p_ids_children.get( + current_p_id_einstandspartner, [] + ) + # Assign fg to children of einstandspartner + for current_p_id_child in current_p_id_einstandspartner_children: + if current_p_id_child in p_id_to_fg_id: + continue + child_index = p_id_to_index[current_p_id_child] + child_hh_id = hh_id[child_index] + child_alter = alter[child_index] + child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) + + if ( + child_hh_id == current_hh_id + # TODO (@MImmesberger): Check correct conditions for grown up children + # https://github.com/iza-institute-of-labor-economics/gettsim/pull/509 + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + and child_alter < 25 + and len(child_p_id_children) == 0 + ): + p_id_to_fg_id[current_p_id_child] = next_fg_id + next_fg_id += 1 # Compute result vector diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml new file mode 100644 index 0000000000..ae82a94c82 --- /dev/null +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml @@ -0,0 +1,77 @@ +--- +info: + note: '' + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + alter: + - 12 + - 39 + - 13 + - 12 + - 22 + - 42 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + p_id_einstandspartner: + - -1 + - 5 + - -1 + - -1 + - -1 + - 1 + familie__p_id_elternteil_1: + - 1 + - -1 + - 1 + - 1 + - 5 + - -1 + familie__p_id_elternteil_2: + - -1 + - -1 + - -1 + - 5 + - -1 + - -1 + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false +outputs: + arbeitslosengeld_2__fg_id: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + arbeitslosengeld_2__bg_id: + - 100 + - 100 + - 100 + - 100 + - 100 + - 100 + arbeitslosengeld_2__eg_id: + - 0 + - 1 + - 2 + - 3 + - 4 + - 1 From e3a9b23f8db13e327ad32fdc15e674436dfb6dcc Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Wed, 9 Apr 2025 11:33:20 +0200 Subject: [PATCH 014/109] Credits. --- CHANGES.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 8d57746be9..557ba35204 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,18 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`861` Make fg_id invariant to ordering of data ({ghuser}`mj023`). +- {gh}`856` Add METTSIM to test TTSIM part ({ghuser}`hmgaudecker`, `timmens`, + `MImmesberger`). +- {gh}`860` Use AggregationType instead of strings ({ghuser}`timmens`). +- {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). +- {gh}`850` Split GETTSIM from TTSIM functions ({ghuser}`hmgaudecker`, `MImmesberger`). +- {gh}`805` Rename taxes and transers using new tree structure ({ghuser}`hmgaudecker`, + `MImmesberger`). +- {gh}`818` Change behavior of namespaces so they are on the module level + ({ghuser}`hmgaudecker`, `MImmesberger`). +- {gh}`780` Refactor infrastructure to work with `dags.tree` ({ghuser}`lars-reimann`, + `hmgaudecker`, `MImmesberger`). - {gh}`807` Implement changes from 2. Jahressteuergesetz 2024 ({ghuser}`Eric-Sommer`) - {gh}`809` implement 2025 changes to pensions and social security contributions ({ghuser}`Eric-Sommer`). From 54b9692dcad50d64b03a0f5aeab0501494e8b9af Mon Sep 17 00:00:00 2001 From: Tim Mensinger <mensingertim@gmail.com> Date: Sat, 12 Apr 2025 09:10:37 +0200 Subject: [PATCH 015/109] Add PolicyInputs, change Type Hierarchy (#854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a huge PR, which started innocently as a fix to #833. In the end, it turned out to be very difficult to change things locally, so in the process of the intense sprint during the week 7-12 April 2025, this ended up including the following: - Updated type hierarchy (`TTSIMObject` as basic building block, `PolicyInput` and `TTSIMFunction` inheriting from that, `TTSIMFunction` has further subclasses for policy, aggregation, ...). - Further separation of tests in ttsim / _gettsim. Including Middle Earth Taxes an Transfers SIMulator METTSIM as tiny example for the ttsim-side of tests (#856) and sensible structure for `_gettsim_tests` (#858) - Sensible treatment of Einnahmen / Einkünfte (#862) - Specify rounding in a dataclass to be provided in the decorators rather than referencing the yaml files from there (#859) - Improve structure for AggregationSpecs, including an Enum for the type of Aggregations (#860) --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/geps/gep-04.md | 16 +- docs/gettsim_objects/input_variables.md | 660 ------------------ docs/tutorials/policy_functions.ipynb | 6 +- pixi.lock | 4 +- pyproject.toml | 1 + src/_gettsim/arbeitslosengeld_2/einkommen.py | 12 +- .../arbeitslosengeld_2/group_by_ids.py | 64 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 21 + .../kindergeld\303\274bertrag.py" | 13 +- src/_gettsim/config.py | 150 +--- .../abz\303\274ge/altersfreibetrag.py" | 4 +- .../einkommensteuer/abz\303\274ge/inputs.py" | 18 + .../abz\303\274ge/sonderausgaben.py" | 14 +- .../abz\303\274ge/vorsorgeaufwendungen.py" | 22 +- src/_gettsim/einkommensteuer/einkommen.py | 157 +---- .../einkommensteuer/einkommensteuer.py | 29 +- .../aus_forst_und_landwirtschaft/__init__.py" | 0 .../aus_forst_und_landwirtschaft/inputs.py" | 8 + .../aus_gewerbebetrieb/__init__.py" | 0 .../aus_gewerbebetrieb/inputs.py" | 8 + .../aus_kapitalverm\303\266gen/inputs.py" | 8 + .../inputs.py" | 13 + .../__init__.py" | 0 .../inputs.py" | 8 + .../__init__.py" | 0 .../aus_vermietung_und_verpachtung/inputs.py" | 8 + .../eink\303\274nfte/eink\303\274nfte.py" | 50 ++ .../eink\303\274nfte/inputs.py" | 8 + .../eink\303\274nfte/sonstige/__init__.py" | 0 .../eink\303\274nfte/sonstige/inputs.py" | 12 + .../eink\303\274nfte/sonstige/sonstige.py" | 40 ++ src/_gettsim/einkommensteuer/group_by_ids.py | 13 +- src/_gettsim/einkommensteuer/inputs.py | 8 + .../einkommensteuer/kinderfreibetrag.py | 18 +- .../zu_versteuerndes_einkommen.py | 8 +- src/_gettsim/elterngeld/einkommen.py | 12 +- src/_gettsim/elterngeld/elterngeld.py | 46 +- src/_gettsim/elterngeld/inputs.py | 23 + src/_gettsim/erziehungsgeld/erziehungsgeld.py | 16 +- src/_gettsim/erziehungsgeld/inputs.py | 13 + src/_gettsim/familie/familie.py | 8 +- src/_gettsim/familie/inputs.py | 28 + .../grundsicherung/im_alter/einkommen.py | 10 +- .../grundsicherung/im_alter/im_alter.py | 2 +- src/_gettsim/household_characteristics.py | 18 +- src/_gettsim/inputs.py | 63 ++ src/_gettsim/kindergeld/inputs.py | 13 + src/_gettsim/kindergeld/kindergeld.py | 9 +- src/_gettsim/kinderzuschlag/einkommen.py | 18 +- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 4 +- src/_gettsim/lohnsteuer/einkommen.py | 8 +- src/_gettsim/lohnsteuer/inputs.py | 8 + .../arbeitslosen/arbeitslosengeld.py | 4 +- .../sozialversicherung/arbeitslosen/inputs.py | 23 + .../geringf\303\274gig_besch\303\244ftigt.py" | 8 +- .../kranken/beitrag/beitrag.py | 6 +- .../kranken/beitrag/einkommen.py | 2 +- .../kranken/beitrag/inputs.py | 8 + src/_gettsim/sozialversicherung/midijob.py | 8 +- .../pflege/beitrag/beitrag.py | 4 +- .../pflege/beitrag/beitragssatz.py | 18 +- .../pflege/beitrag/inputs.py | 8 + .../rente/altersrente/altersgrenzen.py | 8 +- .../rente/altersrente/altersrente.py | 16 +- .../altersrente/f\303\274r_frauen/inputs.py" | 8 + .../rente/altersrente/inputs.py | 8 + .../wegen_arbeitslosigkeit/inputs.py | 23 + .../rente/beitrag/beitrag.py | 2 +- .../erwerbsminderung/erwerbsminderung.py | 4 +- .../rente/erwerbsminderung/inputs.py | 13 + .../rente/grundrente/grundrente.py | 16 +- .../rente/grundrente/inputs.py | 18 + .../sozialversicherung/rente/inputs.py | 98 +++ .../sozialversicherung/rente/wartezeit.py | 6 +- src/_gettsim/synthetic.py | 3 +- src/_gettsim/unterhalt/inputs.py | 13 + .../unterhaltsvorschuss.py | 24 +- .../vorrangpr\303\274fungen.py" | 14 +- src/_gettsim/wohnen/inputs.py | 28 + src/_gettsim/wohngeld/einkommen.py | 53 +- src/_gettsim/wohngeld/group_by_ids.py | 8 +- src/_gettsim/wohngeld/inputs.py | 8 + src/_gettsim/wohngeld/miete.py | 2 +- src/_gettsim/wohngeld/wohngeld.py | 6 +- src/_gettsim_tests/_helpers.py | 25 - .../arbeitslosengeld_2/2005/hh_id_8.yaml | 2 +- .../arbeitslosengeld_2/2006/hh_id_4.yaml | 2 +- .../arbeitslosengeld_2/2009/hh_id_3.yaml | 2 +- .../2009/kind_20_jahre_in_bg.yaml | 2 +- .../arbeitslosengeld_2/2013/hh_id_12.yaml | 2 +- .../arbeitslosengeld_2/2013/hh_id_13.yaml | 2 +- .../arbeitslosengeld_2/2013/hh_id_14.yaml | 2 +- .../arbeitslosengeld_2/2013/hh_id_15.yaml | 2 +- .../arbeitslosengeld_2/2013/hh_id_2.yaml | 2 +- .../arbeitslosengeld_2/2018/hh_id_9.yaml | 2 +- .../arbeitslosengeld_2/2019/hh_id_6.yaml | 2 +- .../2019/test_age_limits_13_14.yaml | 2 +- .../2019/test_age_limits_5_6.yaml | 2 +- .../arbeitslosengeld_2/2022/hh_id_10.yaml | 2 +- .../arbeitslosengeld_2/2022/hh_id_11.yaml | 2 +- .../arbeitslosengeld_2/2023-01/hh_id_16.yaml | 2 +- .../arbeitslosengeld_2/2023-01/hh_id_19.yaml | 2 +- .../arbeitslosengeld_2/2023-01/hh_id_25.yaml | 2 +- .../2023-01/test_age_limits_17_18.yaml | 2 +- .../2023-01/test_family_high_wealth.yaml | 2 +- .../test_family_wealth_below_threshold.yaml | 2 +- .../arbeitslosengeld_2/2023-07/hh_id_20.yaml | 2 +- .../arbeitslosengeld_2/2023-07/hh_id_21.yaml | 2 +- .../arbeitslosengeld_2/2023-07/hh_id_22.yaml | 2 +- .../arbeitslosengeld_2/2023-07/hh_id_23.yaml | 2 +- .../arbeitslosengeld_2/2023-07/hh_id_24.yaml | 2 +- .../alleinerz_kein_kindergelduebertrag.yaml | 2 +- .../alleinerz_teilw_kindergelduebertrag.yaml | 2 +- .../alleinerz_voller_kindergelduebertrag.yaml | 2 +- .../2024/single_no_income.yaml | 2 +- .../2024/skip_single_no_children.yaml | 2 +- .../2010/hh_id_1.yaml | 2 +- .../2010/hh_id_2.yaml | 2 +- .../2010/hh_id_3.yaml | 2 +- .../2010/hh_id_4.yaml | 2 +- .../2010/hh_id_5.yaml | 2 +- .../2015/hh_id_16.yaml | 2 +- .../2015/hh_id_17.yaml | 2 +- .../2017/hh_id_18.yaml | 2 +- .../2018/hh_id_10.yaml | 2 +- .../2018/hh_id_11.yaml | 2 +- .../2018/hh_id_12.yaml | 2 +- .../2018/hh_id_7.yaml | 2 +- .../2018/hh_id_8.yaml | 2 +- .../2018/hh_id_9.yaml | 2 +- .../2019/hh_id_13.yaml | 2 +- .../2020/hh_id_14.yaml | 2 +- .../2020/hh_id_19.yaml | 2 +- .../2020/hh_id_20.yaml | 2 +- .../2019/hh_id_1.yaml | 13 +- .../2019/hh_id_2.yaml | 12 +- .../2019/hh_id_3.yaml | 6 +- .../2019/hh_id_4.yaml | 6 +- .../2019/hh_id_5.yaml | 6 +- .../2019/hh_id_6.yaml | 6 +- .../2019/hh_id_7.yaml | 6 +- .../2019/hh_id_8.yaml | 6 +- .../im_alter/2017-07-01/hh_id_13.yaml | 2 +- .../im_alter/2017-07-01/hh_id_16.yaml | 2 +- .../im_alter/2017-07-01/hh_id_17.yaml | 2 +- .../im_alter/2017-07-01/hh_id_6.yaml | 2 +- .../im_alter/2018-07-01/hh_id_12.yaml | 2 +- .../im_alter/2018-07-01/hh_id_20.yaml | 2 +- .../im_alter/2018-07-01/hh_id_22.yaml | 2 +- .../im_alter/2018-07-01/hh_id_3.yaml | 2 +- .../im_alter/2020-07-01/hh_id_18.yaml | 2 +- .../im_alter/2020-07-01/hh_id_19.yaml | 2 +- .../im_alter/2021-07-01/hh_id_1.yaml | 2 +- .../im_alter/2021-07-01/hh_id_14.yaml | 2 +- .../im_alter/2021-07-01/hh_id_15.yaml | 2 +- .../im_alter/2021-07-01/hh_id_2.yaml | 2 +- .../im_alter/2021-07-01/hh_id_21.yaml | 2 +- .../im_alter/2021-07-01/hh_id_23.yaml | 2 +- .../im_alter/2021-07-01/hh_id_5.yaml | 2 +- .../im_alter/2021-07-01/hh_id_7.yaml | 2 +- .../im_alter/2021-07-01/hh_id_9.yaml | 2 +- .../im_alter/2022-07-01/hh_id_10.yaml | 2 +- .../im_alter/2022-07-01/hh_id_11.yaml | 2 +- .../im_alter/2022-07-01/hh_id_24.yaml | 2 +- .../im_alter/2022-07-01/hh_id_25.yaml | 2 +- .../im_alter/2022-07-01/hh_id_4.yaml | 2 +- .../im_alter/2022-07-01/hh_id_8.yaml | 2 +- .../2007/eltern_getrennt_1_kind.yaml | 0 .../2007/eltern_verheiratet_1_kind.yaml | 0 .../2007/eltern_verheiratet_2_kinder.yaml | 0 ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 0 ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 0 .../2024/eltern_getrennt_1_kind.yaml | 0 .../2024/eltern_verheiratet_1_kind.yaml | 0 .../2024/eltern_verheiratet_2_kinder.yaml | 0 ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 0 ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 0 .../unterhaltsvorschuss/2018-1/hh_id_5.yaml | 2 +- .../older_child_parent_with_income.yaml | 2 +- .../older_child_parent_without_income.yaml | 2 +- .../young_child_parent_without_income.yaml | 2 +- .../unterhaltsvorschuss/2019-8/hh_id_1.yaml | 2 +- .../test_data/wohngeld/2006/hh_id_15.yaml | 4 +- .../test_data/wohngeld/2006/hh_id_4.yaml | 4 +- .../wohngeld/2009/vermoegen_zu_hoch.yaml | 4 +- .../test_data/wohngeld/2013/hh_id_2.yaml | 4 +- .../test_data/wohngeld/2013/hh_id_9.yaml | 4 +- .../test_data/wohngeld/2016/hh_id_1.yaml | 4 +- .../test_data/wohngeld/2018/hh_id_7.yaml | 4 +- .../test_data/wohngeld/2018/hh_id_8.yaml | 4 +- .../wohngeld/2018/vermoegen_zu_hoch.yaml | 4 +- .../test_data/wohngeld/2019/hh_id_5.yaml | 4 +- .../test_data/wohngeld/2021/hh_id_10.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_11.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_12.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_13.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_14.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_16.yaml | 4 +- .../test_data/wohngeld/2023/hh_id_17.yaml | 4 +- .../wohngeld/2023/mindesteinkommen.yaml | 4 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 4 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 4 +- .../test_full_taxes_and_transfers.py | 27 +- src/_gettsim_tests/test_groupings.py | 12 +- ...ente.py => test_grundrente_proxy_rente.py} | 21 +- .../_gettsim_tests/test_household_links.py | 12 +- src/_gettsim_tests/test_lohnsteuer.py | 5 +- ...teuern_und_transfers.py => test_policy.py} | 2 +- src/_gettsim_tests/test_synthetic.py | 3 +- src/_gettsim_tests/utils.py | 230 ++++++ src/ttsim/__init__.py | 19 +- src/ttsim/aggregation.py | 75 +- src/ttsim/combine_functions.py | 386 ++++------ src/ttsim/compute_taxes_and_transfers.py | 148 ++-- src/ttsim/function_types.py | 361 ++++++---- src/ttsim/loader.py | 148 ++-- src/ttsim/piecewise_polynomial.py | 2 +- src/ttsim/policy_environment.py | 108 +-- src/ttsim/rounding.py | 25 +- src/ttsim/shared.py | 165 ++++- src/ttsim/time_conversion.py | 116 +-- src/ttsim/typing.py | 28 +- src/ttsim/visualization.py | 3 +- tests/ttsim/_helpers.py | 25 - tests/ttsim/mettsim/config.py | 4 +- .../housing_benefits/amount.py | 0 .../eligibility/eligibility.py | 11 +- .../housing_benefits/income/income.py | 4 +- tests/ttsim/mettsim/inputs.py | 11 + .../{functions => }/payroll_tax/amount.py | 0 .../child_tax_credit/child_tax_credit.py | 13 +- .../payroll_tax/group_by_ids.py | 0 .../payroll_tax/income/amount.py | 0 .../payroll_tax/income/deductions.py | 0 .../mettsim/payroll_tax/income/inputs.py | 8 + tests/ttsim/test_combine_functions.py | 458 ++++++++++-- .../ttsim/test_compute_taxes_and_transfers.py | 243 +++++-- tests/ttsim/test_dates_active.py | 14 +- tests/ttsim/test_docs.py | 10 +- tests/ttsim/test_function_types.py | 85 +++ tests/ttsim/test_loader.py | 19 +- tests/ttsim/test_mettsim.py | 17 + tests/ttsim/test_policy_environment.py | 49 +- tests/ttsim/test_policy_function.py | 35 - tests/ttsim/test_rounding.py | 91 ++- tests/ttsim/test_shared.py | 126 +++- tests/ttsim/test_time_conversion.py | 28 - tests/ttsim/test_vectorization.py | 15 +- tests/ttsim/test_visualizations.py | 6 +- .../ttsim/utils.py | 23 +- 250 files changed, 3273 insertions(+), 2410 deletions(-) delete mode 100644 docs/gettsim_objects/input_variables.md create mode 100644 src/_gettsim/arbeitslosengeld_2/inputs.py create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" rename tests/ttsim/mettsim/functions/__init__.py => "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" (100%) create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" create mode 100644 src/_gettsim/einkommensteuer/inputs.py create mode 100644 src/_gettsim/elterngeld/inputs.py create mode 100644 src/_gettsim/erziehungsgeld/inputs.py create mode 100644 src/_gettsim/familie/inputs.py create mode 100644 src/_gettsim/inputs.py create mode 100644 src/_gettsim/kindergeld/inputs.py create mode 100644 src/_gettsim/lohnsteuer/inputs.py create mode 100644 src/_gettsim/sozialversicherung/arbeitslosen/inputs.py create mode 100644 src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py create mode 100644 src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py create mode 100644 "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/inputs.py create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py create mode 100644 src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py create mode 100644 src/_gettsim/sozialversicherung/rente/grundrente/inputs.py create mode 100644 src/_gettsim/sozialversicherung/rente/inputs.py create mode 100644 src/_gettsim/unterhalt/inputs.py create mode 100644 src/_gettsim/wohnen/inputs.py create mode 100644 src/_gettsim/wohngeld/inputs.py delete mode 100644 src/_gettsim_tests/_helpers.py rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2007/eltern_getrennt_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2007/eltern_verheiratet_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2007/eltern_verheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml (100%) rename "src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" => "src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2024/eltern_getrennt_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2024/eltern_verheiratet_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2024/eltern_verheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/{aggregate_by_p_id => household_links}/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml (100%) rename "src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" => "src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" (100%) rename src/_gettsim_tests/{test_grundrente.py => test_grundrente_proxy_rente.py} (74%) rename tests/ttsim/test_aggregate_by_p_id.py => src/_gettsim_tests/test_household_links.py (70%) rename src/_gettsim_tests/{test_steuern_und_transfers.py => test_policy.py} (87%) create mode 100644 src/_gettsim_tests/utils.py delete mode 100644 tests/ttsim/_helpers.py rename tests/ttsim/mettsim/{functions => }/housing_benefits/amount.py (100%) rename tests/ttsim/mettsim/{functions => }/housing_benefits/eligibility/eligibility.py (89%) rename tests/ttsim/mettsim/{functions => }/housing_benefits/income/income.py (70%) create mode 100644 tests/ttsim/mettsim/inputs.py rename tests/ttsim/mettsim/{functions => }/payroll_tax/amount.py (100%) rename tests/ttsim/mettsim/{functions => }/payroll_tax/child_tax_credit/child_tax_credit.py (82%) rename tests/ttsim/mettsim/{functions => }/payroll_tax/group_by_ids.py (100%) rename tests/ttsim/mettsim/{functions => }/payroll_tax/income/amount.py (100%) rename tests/ttsim/mettsim/{functions => }/payroll_tax/income/deductions.py (100%) create mode 100644 tests/ttsim/mettsim/payroll_tax/income/inputs.py create mode 100644 tests/ttsim/test_function_types.py create mode 100644 tests/ttsim/test_mettsim.py delete mode 100644 tests/ttsim/test_policy_function.py rename src/_gettsim_tests/_policy_test_utils.py => tests/ttsim/utils.py (91%) diff --git a/docs/geps/gep-04.md b/docs/geps/gep-04.md index 0942b5b557..4d985f0667 100644 --- a/docs/geps/gep-04.md +++ b/docs/geps/gep-04.md @@ -233,7 +233,7 @@ functions of the taxes and transfer system should define a dictionary `aggregation_specs` at the module level. This dictionary must specify the aggregated columns as keys and the AggregateByGroupSpec data class as values. The data class specifies the `source` (i.e. the column which is being aggregated) and the aggregation -method `aggr`. +method `agg`. For example, in `household_characteristics.py`, we could have: @@ -241,8 +241,8 @@ For example, in `household_characteristics.py`, we could have: from ttsim.aggregation import AggregateByGroupSpec aggregation_specs = { - "anzahl_kinder_hh": AggregateByGroupSpec(source="familie__kind", aggr="sum"), - "anzahl_personen_hh": AggregateByGroupSpec(aggr="count"), + "anzahl_kinder_hh": AggregateByGroupSpec(source="familie__kind", agg="sum"), + "anzahl_personen_hh": AggregateByGroupSpec(agg="count"), } ``` @@ -293,7 +293,7 @@ from ttsim.aggregation import AggregateByGroupSpec aggregation_specs = { "kindergeld__betrag_m_bg": AggregateByGroupSpec( source="kindergeld__betrag_m", - aggr="sum" + agg="sum" ) } ``` @@ -312,12 +312,12 @@ The implementation is similar to aggregations to the level of groupings: In orde specify new aggregation functions, scripts with functions of the taxes and transfer system should define a dictionary `aggregation_specs` at the module level. This dictionary must specify the aggregated columns as keys and the `AggregateByPIDSpec` data -class as values. The class specifies the `source`, `p_id_to_aggregate_by`, and `aggr`. -If `aggr` is `count`, `source` is not needed. +class as values. The class specifies the `source`, `p_id_to_aggregate_by`, and `agg`. If +`agg` is `count`, `source` is not needed. The key `source` specifies which column is the source of the aggregation operation. The key `p_id_to_aggregate_by` specifies the column that indicates to which `p_id` the -values in `source` should be ascribed to. The key `aggr` gives the aggregation method. +values in `source` should be ascribed to. The key `agg` gives the aggregation method. For example, in `kindergeld.py`, we could have: @@ -326,7 +326,7 @@ aggregation_specs = { "kindergeld__anzahl_ansprüche": AggregateByPIDSpec( p_id_to_aggregate_by="kindergeld__p_id_empfänger", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr="sum", + agg="sum", ), } ``` diff --git a/docs/gettsim_objects/input_variables.md b/docs/gettsim_objects/input_variables.md deleted file mode 100644 index 9b06f13729..0000000000 --- a/docs/gettsim_objects/input_variables.md +++ /dev/null @@ -1,660 +0,0 @@ -(input_variables)= - -# Basic input variables - -The table below gives an overview of all variables needed to run GETTSIM completely. -Note that the variables with \_hh at the end, have to be constant over the whole -household. - -(hh_id)= - -## `hh_id` - -Household identifier following §5 WoGG - -Type: int - -(familie__kind)= - -## `familie__kind` - -Dependent child living with parents - -Type: bool - -(einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m)= - -## `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m` - -Monthly wage - -Type: float - -(alter)= - -## `alter` - -Individual's age. - -Type: int - -(weiblich)= - -## `weiblich` - -Female - -Type: bool - -(sozialversicherung__rente__bezieht_rente)= - -## `sozialversicherung__rente__bezieht_rente` - -Draws public pension benefits. - -Type: bool - -(familie__alleinerziehend)= - -## `familie__alleinerziehend` - -Single parent - -Type: bool - -(einkommensteuer__gemeinsam_veranlagt)= - -## `einkommensteuer__gemeinsam_veranlagt` - -Taxes are filed jointly - -Type: bool - -(familie__p_id_elternteil_1)= - -## `familie__p_id_elternteil_1` - -Identifier of the first parent - -Type: int - -(familie__p_id_elternteil_2)= - -## `familie__p_id_elternteil_2` - -Identifier of the second parent - -Type: int - -(familie__p_id_ehepartner)= - -## `familie__p_id_ehepartner` - -Identifier of married partner - -Type: int - -(arbeitslosengeld_2__p_id_einstandspartner)= - -## `arbeitslosengeld_2__p_id_einstandspartner` - -Identifier of Einstandspartner - -Type: int - -(arbeitslosengeld_2__p_id_einstandspartner)= - -## `kindergeld__p_id_empfänger` - -Identifier of person that claims Kindergeld for the particular child - -Type: int - -(wohnort_ost)= - -## `wohnort_ost` - -Living in former East Germany - -Type: bool - -(sozialversicherung__kranken__beitrag__privat_versichert)= - -## `sozialversicherung__kranken__beitrag__privat_versichert` - -In private health insurance - -Type: bool - -(einkommensteuer__abzüge__beitrag_private_rentenversicherung_m)= - -## `einkommensteuer__abzüge__beitrag_private_rentenversicherung_m` - -Monthly private pension contribution - -Type: float - -(kindergeld__in_ausbildung)= - -## `kindergeld__in_ausbildung` - -Employment status “in education” - -Type: bool - -(einkommensteuer__einkünfte__ist_selbstständig)= - -## `einkommensteuer__einkünfte__ist_selbstständig` - -Self-employed (main profession) - -Type: bool - -(sozialversicherung__pflege__beitrag__hat_kinder)= - -## `sozialversicherung__pflege__beitrag__hat_kinder` - -Has kids (incl. not in hh) - -Type: bool - -(einkommensteuer__abzüge__betreuungskosten_m)= - -## `einkommensteuer__abzüge__betreuungskosten_m` - -Monthly childcare expenses for a particular child under the age of 14 - -Type: float - -(einkommensteuer__abzüge__p_id_betreuungskosten_träger)= - -## `einkommensteuer__abzüge__p_id_betreuungskosten_träger` - -Identifier of the person who paid childcare expenses. - -Type: float - -(einkommensteuer__einkünfte__sonstige__betrag_m)= - -## `einkommensteuer__einkünfte__sonstige__betrag_m` - -Additional income: includes private and public transfers that are not yet implemented in -GETTSIM (e.g., BAföG, Kriegsopferfürsorge) - -Type: float - -(einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m)= - -## `einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m` - -Monthly income from self-employment - -Type: float - -(einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m)= - -## `einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m` - -Monthly rental income net of deductions - -Type: float - -(einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m)= - -## `einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m` - -Monthly capital income - -Type: float - -(wohnen__bruttokaltmiete_m_hh)= - -## `wohnen__bruttokaltmiete_m_hh` - -Monthly rent expenses for household - -Type: float - -(wohnen__heizkosten_m_hh)= - -## `wohnen__heizkosten_m_hh` - -Monthly heating expenses for household - -Type: float - -(wohnen__wohnfläche_hh)= - -## `wohnen__wohnfläche_hh` - -Size of household dwelling in square meters - -Type: float - -(wohnen__bewohnt_eigentum_hh)= - -## `wohnen__bewohnt_eigentum_hh` - -Owner-occupied housing - -Type: bool - -(arbeitsstunden_w)= - -## `arbeitsstunden_w` - -Weekly working hours of individual - -Type: float - -(elterngeld__claimed)= - -## `elterngeld__claimed` - -Individual claims Elterngeld - -Type: bool - -(elterngeld__nettoeinkommen_vorjahr_m)= - -## `elterngeld__nettoeinkommen_vorjahr_m` - -Approximation of the net wage in the 12 months before birth of youngest child (according -to simplified calculation rules). You may let GETTSIM compute this variable via the -`elterngeld__nettoeinkommen_approximation_m` target in a separate run, which would -typically be for the previous calendar year. - -Type: float - -(elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn)= - -## `elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn` - -Taxable income in the calendar year prior to the youngest child's birth year. You may -let GETTSIM compute this variable via the -`einkommensteuer__zu_versteuerndes_einkommen_y_sn` target in a separate run, which would -typically be for the previous calendar year. - -Type: float - -(einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m)= - -## `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m` - -Gross wage in the previous year - -Type: float - -(geburtstag)= - -## `geburtstag` - -Day of birth (within month) - -Type: int - -(geburtsmonat)= - -## `geburtsmonat` - -Month of birth - -Type: int - -(geburtsjahr)= - -## `geburtsjahr` - -Year of birth - -Type: int - -(sozialversicherung__rente__jahr_renteneintritt)= - -## `sozialversicherung__rente__jahr_renteneintritt` - -Year of retirement - -Type: int - -(sozialversicherung__rente__monat_renteneintritt)= - -## `sozialversicherung__rente__monat_renteneintritt` - -Month of retirement - -Type: int - -(elterngeld__bisherige_bezugsmonate)= - -## `elterngeld__bisherige_bezugsmonate` - -Number of months the individual received Elterngeld for the current youngest child. - -Type: int - -(behinderungsgrad)= - -## `behinderungsgrad` - -Handicap degree (between 0 and 100) - -Type: int - -(schwerbehindert_grad_g)= - -## `schwerbehindert_grad_g` - -Severerly handicapped, with flag "G" - -Type: bool - -(wohngeld__mietstufe)= - -## `wohngeld__mietstufe` - -Level of rents in city (1: low, 3: average) - -Type: int - -(wohnen__baujahr_immobilie_hh)= - -## `wohnen__baujahr_immobilie_hh` - -Construction year of dwelling - -Type: int - -(vermögen)= - -## `vermögen` - -Assets for means testing on individual -level.{ref}`See this page for more details. <means_testing>` - -Type: float - -(sozialversicherung__rente__entgeltpunkte_west)= - -## `sozialversicherung__rente__entgeltpunkte_west` - -Earnings points for pension claim accumulated in western states - -Type: float - -(sozialversicherung__rente__entgeltpunkte_ost)= - -## `sozialversicherung__rente__entgeltpunkte_ost` - -Earnings points for pension claim accumulated in eastern states - -Type: float - -(sozialversicherung__rente__grundrente__grundrentenzeiten_monate)= - -## `sozialversicherung__rente__grundrente__grundrentenzeiten_monate` - -Number of months determining eligibility for Grundrente. - -Type: int - -(sozialversicherung__rente__grundrente__bewertungszeiten_monate)= - -## `sozialversicherung__rente__grundrente__bewertungszeiten_monate` - -Number of months determining Grundrentepayments - -Type: int - -(sozialversicherung__rente__grundrente__mean_entgeltpunkte)= - -## `sozialversicherung__rente__grundrente__mean_entgeltpunkte` - -Average `entgeltpunkte` during -`sozialversicherung__rente__grundrente__bewertungszeiten_monate` - -Type: float - -(sozialversicherung__rente__private_rente_betrag_m)= - -## `sozialversicherung__rente__private_rente_betrag_m` - -Amount of monthly private pension - -Type: float - -(sozialversicherung__rente__pflichtbeitragsmonate)= - -## `sozialversicherung__rente__pflichtbeitragsmonate` - -Total months of mandatory pension insurance contributions - -Type: float - -(sozialversicherung__rente__freiwillige_beitragsmonate)= - -## `sozialversicherung__rente__freiwillige_beitragsmonate` - -Total months of voluntary pensioninsurance contributions - -Type: float - -(sozialversicherung__rente__monate_in_mutterschutz)= - -## `sozialversicherung__rente__monate_in_mutterschutz` - -Total months of maternal protections - -Type: float - -(sozialversicherung__rente__monate_in_arbeitsunfähigkeit)= - -## `sozialversicherung__rente__monate_in_arbeitsunfähigkeit` - -Total months of sickness, rehabilitation,measures for worklife participation(Teilhabe) - -Type: float - -(sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate)= - -## `sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate` - -Months of sickness between age 16 and 24 - -Type: float - -(sozialversicherung__rente__monate_in_arbeitslosigkeit)= - -## `sozialversicherung__rente__monate_in_arbeitslosigkeit` - -Total months of unemployment (registered) - -Type: float - -(sozialversicherung__rente__monate_in_ausbildungssuche)= - -## `sozialversicherung__rente__monate_in_ausbildungssuche` - -Total months of apprenticeship search - -Type: float - -(sozialversicherung__rente__monate_in_schulausbildung)= - -## `sozialversicherung__rente__monate_in_schulausbildung` - -Months of schooling (incl college, unifrom age 17, max. 8 years) - -Type: float - -(sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit)= - -## `sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit` - -Total months of unemployment (only timeof Entgeltersatzleistungen, not ALGII),i.e. -Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld - -Type: float - -(sozialversicherung__rente__monate_geringfügiger_beschäftigung)= - -## `sozialversicherung__rente__monate_geringfügiger_beschäftigung` - -Total months of marginal employment (w/o mandatory contributions) - -Type: float - -(sozialversicherung__rente__ersatzzeiten_monate)= - -## `sozialversicherung__rente__ersatzzeiten_monate` - -Total months during military, persecution/escape, internment, and consecutive sickness - -Type: float - -(sozialversicherung__rente__kinderberücksichtigungszeiten_monate)= - -## `sozialversicherung__rente__kinderberücksichtigungszeiten_monate` - -Total months of childcare till age 10 - -Type: float - -(sozialversicherung__rente__pflegeberücksichtigungszeiten_monate)= - -## `sozialversicherung__rente__pflegeberücksichtigungszeiten_monate` - -Total months of home care provision (01.01.1992-31.03.1995) - -Type: float - -(sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40)= - -## `sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40` - -Total years of mandatory contributions after age 40 - -Type: float - -(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10)= - -## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10` - -Has at least 8 contribution years in past 10 years - -Type: bool - -(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb)= - -## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb` - -Has been unemployed at least 1 year after age 58.5 - -Type: bool - -(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997)= - -## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997` - -Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit -implemented in 1997 (§ 237 SGB VI Abs. 4). - -Type: bool - -(sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004)= - -## `sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004` - -Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit enacted -in July 2004 (§ 237 SGB VI Abs. 5). - -Type: bool - -(sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y)= - -## `sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y` - -Highest gross income from regular employment in the last 15 years before pension benefit -claiming. Relevant to determine pension benefit deductions for retirees in early -retirement. - -(arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr)= - -## `arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr` - -Received Bürgergeld in previous year - -Type: bool - -(sozialversicherung__arbeitslosen__anwartschaftszeit)= - -## `sozialversicherung__arbeitslosen__anwartschaftszeit` - -At least 12 months of unemployment contributions in the 30 months before claiming -unemployment insurance - -Type: bool - -(sozialversicherung__arbeitslosen__arbeitssuchend)= - -## `sozialversicherung__arbeitslosen__arbeitssuchend` - -Looking for employment - -Type: bool - -(sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld)= - -## `sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld` - -Number of months the individual already receives Arbeitslosengeld without interruption. - -Type: float - -(sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren)= - -## `sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren` - -Months of subjection to compulsory insurance in the 5 years before claiming unemployment -insurance - -Type: float - -## `unterhalt__anspruch_m` - -Monthly gross child alimony payments to be received by the child as determined by the -court. - -Type: float - -## `unterhalt__tatsächlich_erhaltener_betrag_m` - -Child alimony payments the child actually receives. - -Type: float - -(lohnsteuer__steuerklasse)= - -## `lohnsteuer__steuerklasse` - -Tax Bracket (1 to 5) for withholding tax - -Type: int - -## `erziehungsgeld__budgetsatz` - -Applied for "Budgetsatz" of parental leave benefit - -Type: bool - -## `sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert` - -Unable to provide more than 3 hours of market labor per day. - -Type: bool - -## `sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert` - -Able to provide at least 3 but no more than 6 hours of market labor per day. - -Type: bool diff --git a/docs/tutorials/policy_functions.ipynb b/docs/tutorials/policy_functions.ipynb index d00d41ea06..e515e5ea27 100644 --- a/docs/tutorials/policy_functions.ipynb +++ b/docs/tutorials/policy_functions.ipynb @@ -355,8 +355,8 @@ "\n", "```python\n", "aggregate_by_group_specs_tree = {\n", - " \"anzahl_erwachsene_fg\": {\"source\": \"familie__erwachsen\", \"aggr\": \"sum\"},\n", - " \"anz_personen_hh\": {\"aggr\": \"count\"},\n", + " \"anzahl_erwachsene_fg\": {\"source\": \"familie__erwachsen\", \"agg\": \"sum\"},\n", + " \"anz_personen_hh\": {\"agg\": \"count\"},\n", "}\n", "```\n", "\n", @@ -371,7 +371,7 @@ " \"kindergeld__anzahl_ansprüche\": {\n", " \"p_id_to_aggregate_by\": \"kindergeld__p_id_empfänger\",\n", " \"source\": \"kindergeld__grundsätzlich_anspruchsberechtigt\",\n", - " \"aggr\": \"sum\",\n", + " \"agg\": \"sum\",\n", " },\n", "}\n", "```\n", diff --git a/pixi.lock b/pixi.lock index fdb3d75917..c0c9d7cf18 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5610,8 +5610,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev106+g8c224365.d20250403 - sha256: c500019b58e8256c35e138a3cfbd01672a92164aafce28adb21f09b687c51bd0 + version: 0.7.1.dev144+gfa847097.d20250410 + sha256: aaa3c4836fc1c1ca8d25c593772e0435ef08e8a46757d9335242f26995636a30 requires_dist: - astor - dags>=0.3.0 diff --git a/pyproject.toml b/pyproject.toml index 2d8421b155..c0f15261fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -219,6 +219,7 @@ extend-ignore = [ "PLC2401", # Allow non-ASCII characters in variable names. "PLC2403", # Allow non-ASCII function names for imports. "N999", # Allow non-ASCII characters in file names. + "PLR0913", # Too many arguments in function definition. # Things we are not sure we want # ============================== diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 31a034d213..49106b3506 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -112,9 +112,9 @@ def nettoeinkommen_vor_abzug_freibetrag_m( @policy_function() -def bruttoeinkommen_m( # noqa: PLR0913 +def bruttoeinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, @@ -131,8 +131,8 @@ def bruttoeinkommen_m( # noqa: PLR0913 ---------- einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m See basic input variable :ref:`hh_id <hh_id>`. - einkommensteuer__einkünfte__sonstige__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__sonstige__betrag_m <einkommensteuer__einkünfte__sonstige__betrag_m>`. + einkommensteuer__einkünfte__sonstige__ohne_renten_m + See basic input variable :ref:`einkommensteuer__einkünfte__sonstige__ohne_renten_m <einkommensteuer__einkünfte__sonstige__ohne_renten_m>`. einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m <einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m>`. einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m @@ -155,7 +155,7 @@ def bruttoeinkommen_m( # noqa: PLR0913 """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m @@ -169,7 +169,7 @@ def bruttoeinkommen_m( # noqa: PLR0913 @policy_function(end_date="2005-09-30") -def nettoquote_m( # noqa: PLR0913 +def nettoquote_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__betrag_m_sn: float, solidaritätszuschlag__betrag_m_sn: float, diff --git a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py index 2e83a686bf..cb2a47f6ea 100644 --- a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py +++ b/src/_gettsim/arbeitslosengeld_2/group_by_ids.py @@ -6,50 +6,64 @@ # TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 -aggregation_specs = { - "anzahl_erwachsene_fg": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="anzahl_erwachsene_fg", source="familie__erwachsen", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_fg", source="familie__kind", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_bis_6_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_bis_6_fg", source="familie__kind_bis_6", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_bis_15_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_bis_15_fg", source="familie__kind_bis_15", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_erwachsene_bg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_erwachsene_bg", source="familie__erwachsen", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_bg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_bg", source="familie__kind", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_personen_bg": AggregateByGroupSpec(aggr=AggregationType.COUNT), - "anzahl_kinder_bis_17_bg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_personen_bg", source=None, agg=AggregationType.COUNT + ), + AggregateByGroupSpec( + target="anzahl_kinder_bis_17_bg", source="familie__kind_bis_17", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "alleinerziehend_bg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="alleinerziehend_bg", source="familie__alleinerziehend", - aggr=AggregationType.ANY, + agg=AggregationType.ANY, ), - "anzahl_erwachsene_eg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_erwachsene_eg", source="familie__erwachsen", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_eg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_eg", source="familie__kind", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, + ), + AggregateByGroupSpec( + target="anzahl_personen_eg", source=None, agg=AggregationType.COUNT ), - "anzahl_personen_eg": AggregateByGroupSpec(aggr=AggregationType.COUNT), -} +) @group_by_function() @@ -82,7 +96,7 @@ def bg_id( @group_by_function() -def fg_id( # noqa: PLR0913 PLR0912 +def fg_id( # noqa: PLR0912 p_id_einstandspartner: numpy.ndarray[int], p_id: numpy.ndarray[int], hh_id: numpy.ndarray[int], diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py new file mode 100644 index 0000000000..ff7dffae00 --- /dev/null +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -0,0 +1,21 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input(start_date="2023-01-01") +def bezug_im_vorjahr() -> bool: + """Received Arbeitslosengeld II / Bürgergeld in previous year.""" + + +# TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once +# Bedarfsgemeinschaften are fully endogenous +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 +@policy_input(start_date="2023-01-01") +def eigenbedarf_gedeckt() -> bool: + """Received Arbeitslosengeld II / Bürgergeld in previous year.""" + + +@policy_input(start_date="2005-01-01") +def p_id_einstandspartner() -> int: + """Identifier of Einstandspartner.""" diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 0cc5e51b35..c1467ea265 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -4,13 +4,14 @@ from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function -aggregation_specs = { - "kindergeldübertrag_m": AggregateByPIDSpec( - p_id_to_aggregate_by="kindergeld__p_id_empfänger", +aggregation_specs = ( + AggregateByPIDSpec( + target="kindergeldübertrag_m", source="differenz_kindergeld_kindbedarf_m", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + agg=AggregationType.SUM, ), -} +) @policy_function(end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m") @@ -102,7 +103,7 @@ def kindergeld_zur_bedarfsdeckung_m( @policy_function() -def differenz_kindergeld_kindbedarf_m( # noqa: PLR0913 +def differenz_kindergeld_kindbedarf_m( regelbedarf_m_bg: float, nettoeinkommen_nach_abzug_freibetrag_m: float, wohngeld__anspruchshöhe_m_bg: float, diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index 204e8a7fc5..87bca8bb0e 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -77,7 +77,7 @@ } -DEFAULT_TARGETS = { +_TO_DELETE_DEFAULT_TARGETS = { "einkommensteuer": { "betrag_y_sn": None, "abgeltungssteuer": {"betrag_y_sn": None}, @@ -107,154 +107,6 @@ } -TYPES_INPUT_VARIABLES = { - "arbeitslosengeld_2": { - "arbeitslosengeld_2_bezug_im_vorjahr": bool, - # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once - # Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - "eigenbedarf_gedeckt": bool, - "p_id_einstandspartner": int, - }, - "familie": { - "alleinerziehend": bool, - "kind": bool, - "p_id_ehepartner": int, - "p_id_elternteil_1": int, - "p_id_elternteil_2": int, - }, - "alter": int, - "arbeitsstunden_w": float, - "behinderungsgrad": int, - "geburtsjahr": int, - "geburtsmonat": int, - "geburtstag": int, - "schwerbehindert_grad_g": bool, - "vermögen": float, - "weiblich": bool, - "wohnort_ost": bool, - "einkommensteuer": { - "abzüge": { - "beitrag_private_rentenversicherung_m": float, - "betreuungskosten_m": float, - "p_id_betreuungskosten_träger": int, - }, - "einkünfte": { - "aus_kapitalvermögen": { - "kapitalerträge_m": float, - }, - "aus_nichtselbstständiger_arbeit": { - "bruttolohn_m": float, - "bruttolohn_vorjahr_m": float, - }, - "aus_selbstständiger_arbeit": { - "betrag_m": float, - }, - "aus_vermietung_und_verpachtung": { - "betrag_m": float, - }, - "ist_selbstständig": bool, - "sonstige": { - "betrag_m": float, - }, - }, - "gemeinsam_veranlagt": bool, - }, - "elterngeld": { - "bisherige_bezugsmonate": int, - "claimed": bool, - "nettoeinkommen_vorjahr_m": float, - "zu_versteuerndes_einkommen_vorjahr_y_sn": float, - }, - "erziehungsgeld": { - "budgetsatz": bool, - "p_id_empfänger": int, - }, - "hh_id": int, - "kindergeld": { - "in_ausbildung": bool, - "p_id_empfänger": int, - }, - "lohnsteuer": { - "steuerklasse": int, - }, - "p_id": int, - "sozialversicherung": { - "arbeitslosen": { - "anwartschaftszeit": bool, - "arbeitssuchend": bool, - "monate_durchgängigen_bezugs_von_arbeitslosengeld": float, - "monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren": float, - }, - "kranken": { - "beitrag": { - "privat_versichert": bool, - } - }, - "pflege": { - "beitrag": { - "hat_kinder": bool, - } - }, - "rente": { - "altersrente": { - "für_frauen": { - "pflichtsbeitragsjahre_ab_alter_40": float, - }, - "höchster_bruttolohn_letzte_15_jahre_vor_rente_y": float, - "wegen_arbeitslosigkeit": { - "arbeitslos_für_1_jahr_nach_alter_58_ein_halb": bool, - "pflichtbeitragsjahre_8_von_10": bool, - "vertrauensschutz_1997": bool, - "vertrauensschutz_2004": bool, - }, - }, - "bezieht_rente": bool, - "entgeltpunkte_ost": float, - "entgeltpunkte_west": float, - "erwerbsminderung": { - "teilweise_erwerbsgemindert": bool, - "voll_erwerbsgemindert": bool, - }, - "ersatzzeiten_monate": float, - "freiwillige_beitragsmonate": float, - "grundrente": { - "bewertungszeiten_monate": int, - "grundrentenzeiten_monate": int, - "mean_entgeltpunkte": float, - }, - "jahr_renteneintritt": int, - "kinderberücksichtigungszeiten_monate": float, - "krankheitszeiten_ab_16_bis_24_monate": float, - "monat_renteneintritt": int, - "monate_geringfügiger_beschäftigung": float, - "monate_in_arbeitslosigkeit": float, - "monate_in_arbeitsunfähigkeit": float, - "monate_in_ausbildungssuche": float, - "monate_in_mutterschutz": float, - "monate_in_schulausbildung": float, - "monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit": float, - "pflichtbeitragsmonate": float, - "private_rente_betrag_m": float, - "pflegeberücksichtigungszeiten_monate": float, - }, - }, - "unterhalt": { - "anspruch_m": float, - "tatsächlich_erhaltener_betrag_m": float, - }, - "wohngeld": { - "mietstufe": int, - }, - "wohnen": { - "baujahr_immobilie_hh": int, - "bewohnt_eigentum_hh": bool, - "bruttokaltmiete_m_hh": float, - "heizkosten_m_hh": float, - "wohnfläche_hh": float, - }, -} - FOREIGN_KEYS = [ ("arbeitslosengeld_2", "p_id_einstandspartner"), ("familie", "p_id_ehepartner"), diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" index 23fbf44cad..d287a3b4bb 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" @@ -5,7 +5,7 @@ @policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") -def altersfreibetrag_y_bis_2004( # noqa: PLR0913 +def altersfreibetrag_y_bis_2004( alter: int, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, @@ -57,7 +57,7 @@ def altersfreibetrag_y_bis_2004( # noqa: PLR0913 @policy_function(start_date="2005-01-01", leaf_name="altersfreibetrag_y") -def altersfreibetrag_y_ab_2005( # noqa: PLR0913 +def altersfreibetrag_y_ab_2005( alter: int, geburtsjahr: int, sozialversicherung__geringfügig_beschäftigt: bool, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" new file mode 100644 index 0000000000..ecc82480e5 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" @@ -0,0 +1,18 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def beitrag_private_rentenversicherung_m() -> float: + pass + + +@policy_input() +def betreuungskosten_m() -> float: + """Monthly childcare expenses for a particular child under the age of 14.""" + + +@policy_input() +def p_id_betreuungskosten_träger() -> int: + """Identifier of the person who paid childcare expenses.""" diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index dd675a92a6..a5b1634b80 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -3,18 +3,18 @@ from ttsim import ( AggregateByPIDSpec, AggregationType, - RoundingDirection, RoundingSpec, policy_function, ) -aggregation_specs = { - "betreuungskosten_elternteil_m": AggregateByPIDSpec( - p_id_to_aggregate_by="p_id_betreuungskosten_träger", +aggregation_specs = ( + AggregateByPIDSpec( + target="betreuungskosten_elternteil_m", source="betreuungskosten_m", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="p_id_betreuungskosten_träger", + agg=AggregationType.SUM, ), -} +) @policy_function(end_date="2011-12-31", leaf_name="sonderausgaben_y_sn") @@ -107,7 +107,7 @@ def ausgaben_für_betreuung_y( return out -@policy_function(rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.UP)) +@policy_function(rounding_spec=RoundingSpec(base=1, direction="up")) def absetzbare_betreuungskosten_y_sn( ausgaben_für_betreuung_y_sn: float, eink_st_abzuege_params: dict, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" index 82b03ce63a..59b024ff05 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" @@ -1,12 +1,10 @@ -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function( end_date="2004-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" - ), + rounding_spec=RoundingSpec(base=1, direction="up", reference="§ 10 Abs. 3 EStG"), ) def vorsorgeaufwendungen_y_sn_bis_2004( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -29,9 +27,7 @@ def vorsorgeaufwendungen_y_sn_bis_2004( start_date="2005-01-01", end_date="2009-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" - ), + rounding_spec=RoundingSpec(base=1, direction="up", reference="§ 10 Abs. 3 EStG"), ) def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -63,9 +59,7 @@ def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( start_date="2010-01-01", end_date="2019-12-31", leaf_name="vorsorgeaufwendungen_y_sn", - rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" - ), + rounding_spec=RoundingSpec(base=1, direction="up", reference="§ 10 Abs. 3 EStG"), ) def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, @@ -96,9 +90,7 @@ def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( @policy_function( start_date="2020-01-01", leaf_name="vorsorgeaufwendungen_y_sn", - rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 10 Abs. 3 EStG" - ), + rounding_spec=RoundingSpec(base=1, direction="up", reference="§ 10 Abs. 3 EStG"), ) def vorsorgeaufwendungen_y_sn_ab_2020( vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn: float, @@ -186,7 +178,7 @@ def vorsorgeaufwendungen_regime_bis_2004_y_sn( start_date="2005-01-01", end_date="2009-12-31", ) -def vorsorgeaufwendungen_globale_kappung_y_sn( # noqa: PLR0913 +def vorsorgeaufwendungen_globale_kappung_y_sn( altersvorsorge_y_sn: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn: float, @@ -236,7 +228,7 @@ def vorsorgeaufwendungen_globale_kappung_y_sn( # noqa: PLR0913 @policy_function( start_date="2010-01-01", ) -def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( # noqa: PLR0913 +def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( altersvorsorge_y_sn: float, sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index 9a389154cc..1871bcc846 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -3,162 +3,15 @@ Einkommen are Einkünfte minus Sonderausgaben, Vorsorgeaufwendungen, außergewöhnliche Belastungen and sonstige Abzüge.""" -from ttsim import piecewise_polynomial, policy_function +from ttsim import policy_function @policy_function() def gesamteinkommen_y( - gesamteinkommen_ohne_abzüge_y_sn: float, - einkommensteuer__abzüge__betrag_y_sn: float, + einkünfte__gesamtbetrag_der_einkünfte_y_sn: float, + abzüge__betrag_y_sn: float, ) -> float: - """Calculate taxable income without child allowance on Steuernummer level. - - Parameters - ---------- - gesamteinkommen_ohne_abzüge_y_sn - See :func:`gesamteinkommen_ohne_abzüge_y_sn`. - einkommensteuer__abzüge__betrag_y_sn - See :func:`einkommensteuer__abzüge__betrag_y_sn`. - - - Returns - ------- - - """ - out = gesamteinkommen_ohne_abzüge_y_sn - einkommensteuer__abzüge__betrag_y_sn + """Gesamteinkommen without Kinderfreibetrag on tax unit level.""" + out = einkünfte__gesamtbetrag_der_einkünfte_y_sn - abzüge__betrag_y_sn return max(out, 0.0) - - -@policy_function(end_date="2008-12-31", leaf_name="gesamteinkommen_ohne_abzüge_y") -def gesamteinkommen_ohne_abzüge_mit_kapitaleinkünften_y( - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, - renteneinkommen_y: float, - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y: float, -) -> float: - """Sum of gross incomes with capital income. - - # TODO(@MImmesberger): Use this function to compute sum of Einkünfte instead. In - particular, don't add Renteneinkommen here, but Renteneinkünfte. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/842 - - Parameters - ---------- - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y`. - renteneinkommen_y - See :func:`renteneinkommen_y`. - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y`. - - Returns - ------- - - """ - out = ( - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - + renteneinkommen_y - + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y - ) - return out - - -@policy_function(start_date="2009-01-01", leaf_name="gesamteinkommen_ohne_abzüge_y") -def gesamteinkommen_ohne_abzüge_ohne_kapitaleinkünfte_y( - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, - renteneinkommen_y: float, -) -> float: - """Sum of gross incomes without capital income. - - Since 2009 capital income is not subject to normal taxation. - Parameters - ---------- - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y`. - renteneinkommen_y - See :func:`renteneinkommen_y`. - - Returns - ------- - - """ - out = ( - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - + renteneinkommen_y - ) - return out - - -@policy_function() -def renteneinkommen_m( - sozialversicherung__rente__altersrente__betrag_m: float, - sozialversicherung__rente__private_rente_betrag_m: float, - rente_ertragsanteil: float, -) -> float: - """Calculate monthly pension payment subject to taxation. - - # TODO(@MImmesberger): Add Renteneinkünfte to Einkünfte/Sonstige namespace. - # Calculate deduction from Renteneinkünfte in Abzüge dir instead of Renteneinkommen - # here directly. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/842 - - Parameters - ---------- - sozialversicherung__rente__altersrente__betrag_m - See :func:`sozialversicherung__rente__altersrente__betrag_m`. - sozialversicherung__rente__private_rente_betrag_m - See :func:`sozialversicherung__rente__private_rente_betrag_m`. - rente_ertragsanteil - See :func:`rente_ertragsanteil`. - - Returns - ------- - - """ - return rente_ertragsanteil * ( - sozialversicherung__rente__altersrente__betrag_m - + sozialversicherung__rente__private_rente_betrag_m - ) - - -@policy_function() -def rente_ertragsanteil( - sozialversicherung__rente__jahr_renteneintritt: int, eink_st_params: dict -) -> float: - """Share of pensions subject to income taxation. - - Parameters - ---------- - sozialversicherung__rente__jahr_renteneintritt - See basic input variable :ref:`sozialversicherung__rente__jahr_renteneintritt <sozialversicherung__rente__jahr_renteneintritt>`. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>`. - Returns - ------- - - """ - out = piecewise_polynomial( - x=sozialversicherung__rente__jahr_renteneintritt, - thresholds=eink_st_params["rente_ertragsanteil"]["thresholds"], - rates=eink_st_params["rente_ertragsanteil"]["rates"], - intercepts_at_lower_thresholds=eink_st_params["rente_ertragsanteil"][ - "intercepts_at_lower_thresholds" - ], - ) - return out diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 3e3a94c0f1..95154ef0da 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -3,31 +3,32 @@ from ttsim import ( AggregateByPIDSpec, AggregationType, - RoundingDirection, RoundingSpec, piecewise_polynomial, policy_function, ) -aggregation_specs = { - "anzahl_kindergeld_ansprüche_1": AggregateByPIDSpec( - p_id_to_aggregate_by="familie__p_id_elternteil_1", +aggregation_specs = ( + AggregateByPIDSpec( + target="anzahl_kindergeld_ansprüche_1", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="familie__p_id_elternteil_1", + agg=AggregationType.SUM, ), - "anzahl_kindergeld_ansprüche_2": AggregateByPIDSpec( - p_id_to_aggregate_by="familie__p_id_elternteil_2", + AggregateByPIDSpec( + target="anzahl_kindergeld_ansprüche_2", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="familie__p_id_elternteil_2", + agg=AggregationType.SUM, ), -} +) @policy_function( end_date="1996-12-31", leaf_name="betrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S. 6 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S. 6 EStG" ), ) def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( @@ -52,7 +53,7 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( start_date="1997-01-01", leaf_name="betrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), ) def betrag_y_sn_kindergeld_oder_kinderfreibetrag( @@ -118,7 +119,7 @@ def kinderfreibetrag_günstiger_sn( end_date="2001-12-31", leaf_name="betrag_mit_kinderfreibetrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), ) def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: @@ -129,7 +130,7 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: start_date="2002-01-01", leaf_name="betrag_mit_kinderfreibetrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), ) def betrag_mit_kinderfreibetrag_y_sn_ab_2002( @@ -165,7 +166,7 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( @policy_function( rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.6 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ) ) def betrag_ohne_kinderfreibetrag_y_sn( diff --git a/tests/ttsim/mettsim/functions/__init__.py "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" similarity index 100% rename from tests/ttsim/mettsim/functions/__init__.py rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" new file mode 100644 index 0000000000..258f856491 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def betrag_m() -> float: + """Monthly income from forestry and agriculture.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" new file mode 100644 index 0000000000..5ff853b24d --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def betrag_m() -> float: + """Monthly business income.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" new file mode 100644 index 0000000000..c4ea8403ef --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def kapitalerträge_m() -> float: + """Monthly capital income.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" new file mode 100644 index 0000000000..bc235e6814 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" @@ -0,0 +1,13 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def bruttolohn_m() -> float: + """Monthly wage.""" + + +@policy_input() +def bruttolohn_vorjahr_m() -> float: + """Monthly wage of previous year.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" new file mode 100644 index 0000000000..819d2c0aa7 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def betrag_m() -> float: + """Monthly income from self-employment.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" new file mode 100644 index 0000000000..273a26e693 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def betrag_m() -> float: + """Monthly rental income net of deductions.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" new file mode 100644 index 0000000000..8ea38e9034 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" @@ -0,0 +1,50 @@ +"""Einkünfte according to §§ 13-24 EStG.""" + +from ttsim import policy_function + + +@policy_function(end_date="2008-12-31", leaf_name="gesamtbetrag_der_einkünfte_y") +def gesamtbetrag_der_einkünfte_y_mit_kapiteleinkünften( + aus_forst_und_landwirtschaft__betrag_y: float, + aus_gewerbebetrieb__betrag_y: float, + aus_selbstständiger_arbeit__betrag_y: float, + aus_nichtselbstständiger_arbeit__betrag_y: float, + aus_kapitalvermögen__betrag_y: float, + aus_vermietung_und_verpachtung__betrag_y: float, + sonstige__betrag_y: float, +) -> float: + """Gesamtbetrag der Einkünfte (GdE) with capital income.""" + out = ( + aus_forst_und_landwirtschaft__betrag_y + + aus_gewerbebetrieb__betrag_y + + aus_selbstständiger_arbeit__betrag_y + + aus_nichtselbstständiger_arbeit__betrag_y + + aus_kapitalvermögen__betrag_y + + aus_vermietung_und_verpachtung__betrag_y + + sonstige__betrag_y + ) + return out + + +@policy_function(start_date="2009-01-01", leaf_name="gesamtbetrag_der_einkünfte_y") +def gesamtbetrag_der_einkünfte_y_ohne_kapitaleinkünfte( + aus_forst_und_landwirtschaft__betrag_y: float, + aus_gewerbebetrieb__betrag_y: float, + aus_selbstständiger_arbeit__betrag_y: float, + aus_nichtselbstständiger_arbeit__betrag_y: float, + aus_vermietung_und_verpachtung__betrag_y: float, + sonstige__betrag_y: float, +) -> float: + """Gesamtbetrag der Einkünfte (GdE) without capital income. + + Since 2009 capital income is not subject to normal taxation. + """ + out = ( + aus_forst_und_landwirtschaft__betrag_y + + aus_gewerbebetrieb__betrag_y + + aus_selbstständiger_arbeit__betrag_y + + aus_nichtselbstständiger_arbeit__betrag_y + + aus_vermietung_und_verpachtung__betrag_y + + sonstige__betrag_y + ) + return out diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" new file mode 100644 index 0000000000..1d67eb0028 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def ist_selbstständig() -> bool: + """Self-employed (main profession).""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" new file mode 100644 index 0000000000..2a03c9ca84 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -0,0 +1,12 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def ohne_renten_m() -> float: + """Additional income: includes private and public transfers that are not yet + implemented in GETTSIM (e.g., BAföG, Kriegsopferfürsorge). + + Excludes income from public and private pensions. + """ diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" new file mode 100644 index 0000000000..343669f932 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -0,0 +1,40 @@ +"""Sonstige Einkünfte according to § 22 EStG.""" + +from ttsim import piecewise_polynomial, policy_function + + +@policy_function() +def betrag_m( + ohne_renten_m: float, + renteneinkünfte_m: float, +) -> float: + """Total sonstige Einkünfte.""" + return ohne_renten_m + renteneinkünfte_m + + +@policy_function() +def renteneinkünfte_m( + rente_ertragsanteil: float, + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__private_rente_betrag_m: float, +) -> float: + """Pension income counting towards taxable income.""" + return rente_ertragsanteil * ( + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__private_rente_betrag_m + ) + + +@policy_function() +def rente_ertragsanteil( + sozialversicherung__rente__jahr_renteneintritt: int, eink_st_params: dict +) -> float: + """Share of pensions subject to income taxation.""" + return piecewise_polynomial( + x=sozialversicherung__rente__jahr_renteneintritt, + thresholds=eink_st_params["rente_ertragsanteil"]["thresholds"], + rates=eink_st_params["rente_ertragsanteil"]["rates"], + intercepts_at_lower_thresholds=eink_st_params["rente_ertragsanteil"][ + "intercepts_at_lower_thresholds" + ], + ) diff --git a/src/_gettsim/einkommensteuer/group_by_ids.py b/src/_gettsim/einkommensteuer/group_by_ids.py index be1cf5b9ac..babef7f139 100644 --- a/src/_gettsim/einkommensteuer/group_by_ids.py +++ b/src/_gettsim/einkommensteuer/group_by_ids.py @@ -4,13 +4,16 @@ from ttsim import AggregateByGroupSpec, AggregationType, group_by_function -aggregation_specs = { - "anzahl_personen_sn": AggregateByGroupSpec(aggr=AggregationType.COUNT), - "alleinerziehend_sn": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="anzahl_personen_sn", source=None, agg=AggregationType.COUNT + ), + AggregateByGroupSpec( + target="alleinerziehend_sn", source="familie__alleinerziehend", - aggr=AggregationType.ANY, + agg=AggregationType.ANY, ), -} +) @group_by_function() diff --git a/src/_gettsim/einkommensteuer/inputs.py b/src/_gettsim/einkommensteuer/inputs.py new file mode 100644 index 0000000000..97cbdff507 --- /dev/null +++ b/src/_gettsim/einkommensteuer/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def gemeinsam_veranlagt() -> bool: + """Taxes are filed jointly.""" diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index ac3152b8b2..b1eeec1130 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -2,18 +2,20 @@ from ttsim import AggregateByPIDSpec, AggregationType, policy_function -aggregation_specs = { - "anzahl_kinderfreibeträge_1": AggregateByPIDSpec( - p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_1", +aggregation_specs = ( + AggregateByPIDSpec( + target="anzahl_kinderfreibeträge_1", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_1", + agg=AggregationType.SUM, ), - "anzahl_kinderfreibeträge_2": AggregateByPIDSpec( - p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_2", + AggregateByPIDSpec( + target="anzahl_kinderfreibeträge_2", source="kindergeld__grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_2", + agg=AggregationType.SUM, ), -} +) @policy_function() diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index 7497806335..6fe08b0178 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -1,11 +1,11 @@ """Taxable income.""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function( rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 32a Abs. 1 S.1 EStG" + base=1, direction="down", reference="§ 32a Abs. 1 S.1 EStG" ), start_date="2004-01-01", leaf_name="zu_versteuerndes_einkommen_y_sn", @@ -41,7 +41,7 @@ def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel( @policy_function( rounding_spec=RoundingSpec( base=36, - direction=RoundingDirection.DOWN, + direction="down", to_add_after_rounding=18, reference="§ 32a Abs. 2 EStG", ), @@ -80,7 +80,7 @@ def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel( @policy_function( rounding_spec=RoundingSpec( base=27.609762, - direction=RoundingDirection.DOWN, + direction="down", to_add_after_rounding=13.804881, reference="§ 32a Abs. 2 EStG", ), diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index 5397cdcc6a..32e05d6229 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -1,6 +1,6 @@ """Relevant income for parental leave benefits.""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function(start_date="2007-01-01") @@ -36,9 +36,7 @@ def anzurechnendes_nettoeinkommen_m( @policy_function( start_date="2007-01-01", - rounding_spec=RoundingSpec( - base=2, direction=RoundingDirection.DOWN, reference="§ 2 (2) BEEG" - ), + rounding_spec=RoundingSpec(base=2, direction="down", reference="§ 2 (2) BEEG"), ) def lohnersatzanteil_einkommen_untere_grenze( nettoeinkommen_vorjahr_m: float, @@ -65,9 +63,7 @@ def lohnersatzanteil_einkommen_untere_grenze( @policy_function( start_date="2007-01-01", - rounding_spec=RoundingSpec( - base=2, direction=RoundingDirection.DOWN, reference="§ 2 (2) BEEG" - ), + rounding_spec=RoundingSpec(base=2, direction="down", reference="§ 2 (2) BEEG"), ) def lohnersatzanteil_einkommen_obere_grenze( nettoeinkommen_vorjahr_m: float, @@ -156,7 +152,7 @@ def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( @policy_function( start_date="2006-01-01", - rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), + rounding_spec=RoundingSpec(base=0.01, direction="down"), ) def nettoeinkommen_approximation_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 14097b9b60..870a4379b3 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -4,47 +4,53 @@ AggregateByGroupSpec, AggregateByPIDSpec, AggregationType, - RoundingDirection, RoundingSpec, policy_function, ) -aggregation_specs = { - "kind_grundsätzlich_anspruchsberechtigt_fg": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="kind_grundsätzlich_anspruchsberechtigt_fg", source="kind_grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.ANY, + agg=AggregationType.ANY, ), - "anzahl_anträge_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_anträge_fg", source="claimed", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "bezugsmonate_partner": AggregateByPIDSpec( + AggregateByPIDSpec( + target="bezugsmonate_partner", p_id_to_aggregate_by="arbeitslosengeld_2__p_id_einstandspartner", source="bisherige_bezugsmonate", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "alter_monate_jüngstes_mitglied_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="alter_monate_jüngstes_mitglied_fg", source="alter_monate", - aggr=AggregationType.MIN, + agg=AggregationType.MIN, ), - "anzahl_kinder_bis_2_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_bis_2_fg", source="familie__kind_bis_2", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_kinder_bis_5_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_kinder_bis_5_fg", source="familie__kind_bis_5", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_mehrlinge_jüngstes_kind_fg": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_mehrlinge_jüngstes_kind_fg", source="jüngstes_kind_oder_mehrling", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), -} +) @policy_function( start_date="2011-01-01", - rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), + rounding_spec=RoundingSpec(base=0.01, direction="down"), ) def betrag_m( grundsätzlich_anspruchsberechtigt: bool, @@ -110,7 +116,7 @@ def basisbetrag_m( start_date="2007-01-01", end_date="2010-12-31", leaf_name="betrag_m", - rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.DOWN), + rounding_spec=RoundingSpec(base=0.01, direction="down"), ) def elterngeld_not_implemented() -> float: raise NotImplementedError("Elterngeld is not implemented prior to 2011.") @@ -156,7 +162,7 @@ def anspruchshöhe_m( @policy_function(start_date="2007-01-01") -def grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 +def grundsätzlich_anspruchsberechtigt( claimed: bool, arbeitsstunden_w: float, kind_grundsätzlich_anspruchsberechtigt_fg: bool, diff --git a/src/_gettsim/elterngeld/inputs.py b/src/_gettsim/elterngeld/inputs.py new file mode 100644 index 0000000000..092d270611 --- /dev/null +++ b/src/_gettsim/elterngeld/inputs.py @@ -0,0 +1,23 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def bisherige_bezugsmonate() -> int: + """Number of months the individual received Elterngeld for the current youngest child.""" + + +@policy_input() +def claimed() -> bool: + """Individual claims Elterngeld.""" + + +@policy_input() +def nettoeinkommen_vorjahr_m() -> float: + """Net wage in the 12 months before birth of youngest child.""" + + +@policy_input() +def zu_versteuerndes_einkommen_vorjahr_y_sn() -> float: + """Taxable income in the calendar year prior to the youngest child's birth year.""" diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index cbd5edaccf..5ddf76cf63 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -3,18 +3,18 @@ from ttsim import ( AggregateByPIDSpec, AggregationType, - RoundingDirection, RoundingSpec, policy_function, ) -aggregation_specs = { - "anspruchshöhe_m": AggregateByPIDSpec( - p_id_to_aggregate_by="p_id_empfänger", +aggregation_specs = ( + AggregateByPIDSpec( + target="anspruchshöhe_m", source="anspruchshöhe_kind_m", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="p_id_empfänger", + agg=AggregationType.SUM, ), -} +) @policy_function(start_date="2004-01-01", end_date="2008-12-31") @@ -49,7 +49,7 @@ def betrag_m( @policy_function( end_date="2003-12-31", leaf_name="anspruchshöhe_kind_m", - rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.NEAREST), + rounding_spec=RoundingSpec(base=0.01, direction="nearest"), ) def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: raise NotImplementedError( @@ -64,7 +64,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: start_date="2004-01-01", end_date="2008-12-31", leaf_name="anspruchshöhe_kind_m", - rounding_spec=RoundingSpec(base=0.01, direction=RoundingDirection.NEAREST), + rounding_spec=RoundingSpec(base=0.01, direction="nearest"), ) def anspruchshöhe_kind_mit_budgetsatz_m( kind_grundsätzlich_anspruchsberechtigt: bool, diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py new file mode 100644 index 0000000000..33acc86630 --- /dev/null +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -0,0 +1,13 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def budgetsatz() -> bool: + """Applied for "Budgetsatz" of parental leave benefit.""" + + +@policy_input() +def p_id_empfänger() -> int: + pass diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index c117ce16d3..2e0bf40c23 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -13,9 +13,11 @@ policy_function, ) -aggregation_specs = { - "anzahl_personen_ehe": AggregateByGroupSpec(aggr=AggregationType.COUNT), -} +aggregation_specs = ( + AggregateByGroupSpec( + target="anzahl_personen_ehe", source=None, agg=AggregationType.COUNT + ), +) @policy_function() diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py new file mode 100644 index 0000000000..806b95928f --- /dev/null +++ b/src/_gettsim/familie/inputs.py @@ -0,0 +1,28 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def alleinerziehend() -> bool: + """Single parent.""" + + +@policy_input() +def kind() -> bool: + """Dependent child living with parents.""" + + +@policy_input() +def p_id_ehepartner() -> int: + """Identifier of married partner.""" + + +@policy_input() +def p_id_elternteil_1() -> int: + """Identifier of the first parent.""" + + +@policy_input() +def p_id_elternteil_2() -> int: + """Identifier of the second parent.""" diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index eafbd0319c..4051da17bb 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -4,11 +4,11 @@ @policy_function() -def einkommen_m( # noqa: PLR0913 +def einkommen_m( erwerbseinkommen_m: float, private_rente_betrag_m: float, gesetzliche_rente_m: float, - einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, kapitaleinkommen_brutto_m: float, einkommensteuer__betrag_m_sn: float, @@ -28,8 +28,8 @@ def einkommen_m( # noqa: PLR0913 See :func:`private_rente_betrag_m`. gesetzliche_rente_m See :func:`gesetzliche_rente_m`. - einkommensteuer__einkünfte__sonstige__betrag_m - See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__einkünfte__sonstige__ohne_renten_m + See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. kapitaleinkommen_brutto_m @@ -55,7 +55,7 @@ def einkommen_m( # noqa: PLR0913 erwerbseinkommen_m + gesetzliche_rente_m + private_rente_betrag_m - + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + kapitaleinkommen_brutto_m + elterngeld__anrechenbarer_betrag_m diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index 374463e06c..a782395a0c 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -4,7 +4,7 @@ @policy_function() -def betrag_m_eg( # noqa: PLR0913 +def betrag_m_eg( arbeitslosengeld_2__regelbedarf_m_bg: float, mehrbedarf_schwerbehinderung_g_m_eg: float, kindergeld__betrag_m_eg: float, diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index 50efc93e92..e89ad04b71 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,16 +1,20 @@ from ttsim import AggregateByGroupSpec, AggregationType, policy_function -aggregation_specs = { - "anzahl_erwachsene_hh": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="anzahl_erwachsene_hh", source="familie__erwachsen", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_rentenbezieher_hh": AggregateByGroupSpec( + AggregateByGroupSpec( + target="anzahl_rentenbezieher_hh", source="sozialversicherung__rente__bezieht_rente", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), - "anzahl_personen_hh": AggregateByGroupSpec(aggr=AggregationType.COUNT), -} + AggregateByGroupSpec( + target="anzahl_personen_hh", source=None, agg=AggregationType.COUNT + ), +) @policy_function() diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py new file mode 100644 index 0000000000..bedec8153b --- /dev/null +++ b/src/_gettsim/inputs.py @@ -0,0 +1,63 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def alter() -> int: + """Age in years.""" + + +@policy_input() +def arbeitsstunden_w() -> float: + """Working hours.""" + + +@policy_input() +def behinderungsgrad() -> int: + pass + + +@policy_input() +def geburtsjahr() -> int: + """Birth year.""" + + +@policy_input() +def geburtsmonat() -> int: + """Month of birth (within year).""" + + +@policy_input() +def geburtstag() -> int: + """Day of birth (within month).""" + + +@policy_input() +def hh_id() -> int: + pass + + +@policy_input() +def p_id() -> int: + pass + + +@policy_input() +def schwerbehindert_grad_g() -> bool: + pass + + +@policy_input() +def vermögen() -> float: + """Assets for means testing on individual level. {ref}`See this page for more details. <means_testing>`""" + + +@policy_input() +def weiblich() -> bool: + """Female.""" + + +@policy_input() +def wohnort_ost() -> bool: + """Whether the person lives in the Eastern part of Germany.""" diff --git a/src/_gettsim/kindergeld/inputs.py b/src/_gettsim/kindergeld/inputs.py new file mode 100644 index 0000000000..ab41600d38 --- /dev/null +++ b/src/_gettsim/kindergeld/inputs.py @@ -0,0 +1,13 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def in_ausbildung() -> bool: + """In education according to Kindergeld definition.""" + + +@policy_input() +def p_id_empfänger() -> int: + """Identifier of person who receives Kindergeld for the particular child.""" diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 4e3499152c..3e0935f0fd 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -4,13 +4,14 @@ from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function -aggregation_specs = { - "anzahl_ansprüche": AggregateByPIDSpec( +aggregation_specs = ( + AggregateByPIDSpec( + target="anzahl_ansprüche", p_id_to_aggregate_by="p_id_empfänger", source="grundsätzlich_anspruchsberechtigt", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), -} +) @policy_function(start_date="2023-01-01", leaf_name="betrag_m") diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 5434282fe5..ed0f4c279d 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -3,17 +3,17 @@ from ttsim import ( AggregateByGroupSpec, AggregationType, - RoundingDirection, RoundingSpec, policy_function, ) -aggregation_specs = { - "arbeitslosengeld_2__anzahl_kinder_bg": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="arbeitslosengeld_2__anzahl_kinder_bg", source="kindergeld__anzahl_ansprüche", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), -} +) @policy_function() @@ -53,9 +53,7 @@ def bruttoeinkommen_eltern_m( @policy_function( - rounding_spec=RoundingSpec( - base=10, direction=RoundingDirection.DOWN, reference="§ 6a Abs. 4 BKGG" - ), + rounding_spec=RoundingSpec(base=10, direction="down", reference="§ 6a Abs. 4 BKGG"), leaf_name="nettoeinkommen_eltern_m", end_date="2019-06-30", ) @@ -91,9 +89,7 @@ def nettoeinkommen_eltern_m_mit_grober_rundung( @policy_function( - rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 11 Abs. 2 BKGG" - ), + rounding_spec=RoundingSpec(base=1, direction="down", reference="§ 11 Abs. 2 BKGG"), leaf_name="nettoeinkommen_eltern_m", start_date="2019-07-01", ) diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index 9f8f2f8ba2..21035993de 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -137,7 +137,7 @@ def vermögensfreibetrag_bg_ab_2023( end_date="2019-06-30", leaf_name="basisbetrag_m_bg", ) -def basisbetrag_m_bg_check_eink_max( # noqa: PLR0913 +def basisbetrag_m_bg_check_eink_max( bruttoeinkommen_eltern_m_bg: float, nettoeinkommen_eltern_m_bg: float, mindestbruttoeinkommen_m_bg: float, @@ -239,7 +239,7 @@ def basisbetrag_m_bg( @policy_function() -def basisbetrag_kind_m( # noqa: PLR0913 +def basisbetrag_kind_m( kindergeld__grundsätzlich_anspruchsberechtigt: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 99f0cdb3b3..9bb5292a48 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -1,9 +1,9 @@ """Income relevant for withholding tax on earnings (Lohnsteuer).""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function -@policy_function(rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.DOWN)) +@policy_function(rounding_spec=RoundingSpec(base=1, direction="down")) def einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, steuerklasse: int, @@ -186,9 +186,9 @@ def vorsorge_krankenv_option_a( @policy_function( start_date="2010-01-01", leaf_name="vorsorgepauschale_y", - rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.UP), + rounding_spec=RoundingSpec(base=1, direction="up"), ) -def vorsorgepauschale_y_ab_2010( # noqa: PLR0913 +def vorsorgepauschale_y_ab_2010( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, wohnort_ost: bool, sozialv_beitr_params: dict, diff --git a/src/_gettsim/lohnsteuer/inputs.py b/src/_gettsim/lohnsteuer/inputs.py new file mode 100644 index 0000000000..93e866030b --- /dev/null +++ b/src/_gettsim/lohnsteuer/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def steuerklasse() -> int: + """Tax Bracket (1 to 5) for withholding tax.""" diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index a56c1996b3..da611b9a76 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -126,7 +126,7 @@ def monate_verbleibender_anspruchsdauer( @policy_function() -def grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 +def grundsätzlich_anspruchsberechtigt( alter: int, arbeitssuchend: bool, monate_verbleibender_anspruchsdauer: int, @@ -170,7 +170,7 @@ def grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 @policy_function() -def einkommen_vorjahr_proxy_m( # noqa: PLR0913 +def einkommen_vorjahr_proxy_m( sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, arbeitsl_geld_params: dict, diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py new file mode 100644 index 0000000000..b4bbb333eb --- /dev/null +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -0,0 +1,23 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def anwartschaftszeit() -> bool: + """At least 12 months of unemployment contributions in the 30 months before claiming unemployment insurance.""" + + +@policy_input() +def arbeitssuchend() -> bool: + """Looking for employment.""" + + +@policy_input() +def monate_durchgängigen_bezugs_von_arbeitslosengeld() -> float: + """Number of months the individual already receives Arbeitslosengeld without interruption.""" + + +@policy_input() +def monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren() -> float: + """Months of subjection to compulsory insurance in the 5 years before claiming unemployment.""" diff --git "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" index 0e75bbdf9d..084b221e00 100644 --- "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -1,6 +1,6 @@ """Marginally employed.""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function() @@ -37,7 +37,7 @@ def geringfügig_beschäftigt( end_date="1999-12-31", leaf_name="minijob_grenze", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" ), ) def minijob_grenze_unterscheidung_ost_west( @@ -68,7 +68,7 @@ def minijob_grenze_unterscheidung_ost_west( end_date="2022-09-30", leaf_name="minijob_grenze", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" ), ) def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: @@ -92,7 +92,7 @@ def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: start_date="2022-10-01", leaf_name="minijob_grenze", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 8 Abs. 1a Satz 2 SGB IV" + base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" ), ) def minijob_grenze_abgeleitet_von_mindestlohn(sozialv_beitr_params: dict) -> float: diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 29b229568f..114da50b4a 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -45,7 +45,7 @@ def betrag_versicherter_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") -def betrag_versicherter_m_mit_midijob( # noqa: PLR0913 +def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_rentner_m: float, betrag_selbstständig_m: float, @@ -94,7 +94,7 @@ def betrag_versicherter_m_mit_midijob( # noqa: PLR0913 @policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") -def betrag_arbeitgeber_m_ohne_midijob( # noqa: PLR0913 +def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommen_m: float, @@ -140,7 +140,7 @@ def betrag_arbeitgeber_m_ohne_midijob( # noqa: PLR0913 @policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") -def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 +def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index 9f67871290..817d73c429 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -63,7 +63,7 @@ def einkommen_regulär_beschäftigt_m( @policy_function() -def bemessungsgrundlage_selbstständig_m( # noqa: PLR0913 +def bemessungsgrundlage_selbstständig_m( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, bezugsgröße_selbstständig_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py new file mode 100644 index 0000000000..8142a6713f --- /dev/null +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def privat_versichert() -> bool: + """Has (only) a private health insurance contract.""" diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index a893cfb766..d75214f65b 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -1,6 +1,6 @@ """Midijob.""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function() @@ -50,7 +50,7 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( start_date="2003-04-01", end_date="2004-12-31", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), + rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, @@ -111,7 +111,7 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( start_date="2005-01-01", end_date="2022-09-30", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), + rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, @@ -174,7 +174,7 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( @policy_function( start_date="2022-10-01", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction=RoundingDirection.NEAREST), + rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 6a9c5a6b72..eecec5c1c1 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -44,7 +44,7 @@ def betrag_versicherter_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") -def betrag_versicherter_m_mit_midijob( # noqa: PLR0913 +def betrag_versicherter_m_mit_midijob( betrag_versicherter_regulär_beschäftigt_m: float, sozialversicherung__geringfügig_beschäftigt: bool, betrag_rentner_m: float, @@ -159,7 +159,7 @@ def betrag_arbeitgeber_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") -def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 +def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_arbeitgeber_midijob_m: float, sozialversicherung__kranken__beitrag__einkommen_m: float, diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index baae9556e2..db130cc8ac 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -2,18 +2,20 @@ from ttsim import AggregateByPIDSpec, AggregationType, policy_function -aggregation_specs = { - "anzahl_kinder_bis_24_elternteil_1": AggregateByPIDSpec( - p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_1"), +aggregation_specs = ( + AggregateByPIDSpec( + target="anzahl_kinder_bis_24_elternteil_1", source="alter_bis_24", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="einkommensteuer__p_id_kinderfreibetragsempfänger_1", + agg=AggregationType.SUM, ), - "anzahl_kinder_bis_24_elternteil_2": AggregateByPIDSpec( - p_id_to_aggregate_by=("einkommensteuer__p_id_kinderfreibetragsempfänger_2"), + AggregateByPIDSpec( + target="anzahl_kinder_bis_24_elternteil_2", source="alter_bis_24", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="einkommensteuer__p_id_kinderfreibetragsempfänger_2", + agg=AggregationType.SUM, ), -} +) @policy_function( diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py new file mode 100644 index 0000000000..3437f3f310 --- /dev/null +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def hat_kinder() -> bool: + """Has kids (incl. not in hh).""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 08f1ae4747..aa8f9782d3 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -4,7 +4,7 @@ @policy_function(end_date="2011-12-31", leaf_name="altersgrenze_abschlagsfrei") -def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( # noqa: PLR0913 +def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -68,7 +68,7 @@ def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( # noqa: P end_date="2017-12-31", leaf_name="altersgrenze_abschlagsfrei", ) -def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( # noqa: PLR0913 +def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, @@ -196,7 +196,7 @@ def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( @policy_function(end_date="2017-12-31", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( # noqa: PLR0913 +def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -357,7 +357,7 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_rente_arbeitsl_f @policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") -def referenzalter_abschlag_mit_rente_arbeitsl_frauen( # noqa: PLR0913 +def referenzalter_abschlag_mit_rente_arbeitsl_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index 0d85123013..beca547239 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -1,12 +1,12 @@ """Public pension benefits for retirement due to age.""" -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function( end_date="2020-12-31", rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), leaf_name="betrag_m", ) @@ -19,7 +19,7 @@ def betrag_m( @policy_function( start_date="2021-01-01", rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), leaf_name="betrag_m", ) @@ -54,7 +54,7 @@ def betrag_m_mit_grundrente( @policy_function( end_date="2016-12-31", rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), leaf_name="bruttorente_m", ) @@ -106,7 +106,7 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( end_date="2022-12-31", leaf_name="bruttorente_m", rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), ) def bruttorente_m_mit_hinzuverdienstdeckel( @@ -161,7 +161,7 @@ def bruttorente_m_mit_hinzuverdienstdeckel( start_date="2017-01-01", end_date="2022-12-31", ) -def zahlbetrag_ohne_deckel_m( # noqa: PLR0913 +def zahlbetrag_ohne_deckel_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, alter: int, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, @@ -278,7 +278,7 @@ def differenz_bruttolohn_hinzuverdienstdeckel_y( start_date="2023-01-01", leaf_name="bruttorente_m", rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), ) def bruttorente_m_ohne_einkommensanrechnung( @@ -371,7 +371,7 @@ def rentenwert(wohnort_ost: bool, ges_rente_params: dict) -> float: @policy_function() -def zugangsfaktor( # noqa: PLR0913 +def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, referenzalter_abschlag: float, diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" new file mode 100644 index 0000000000..89ec4e5dad --- /dev/null +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def pflichtsbeitragsjahre_ab_alter_40() -> float: + """Total years of mandatory contributions after age 40.""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py new file mode 100644 index 0000000000..738cb389ab --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def höchster_bruttolohn_letzte_15_jahre_vor_rente_y() -> float: + """Highest gross income from regular employment in the last 15 years before pension benefit claiming. Relevant to determine pension benefit deductions for retirees in early retirement.""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py new file mode 100644 index 0000000000..33811e3e9f --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py @@ -0,0 +1,23 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def arbeitslos_für_1_jahr_nach_alter_58_ein_halb() -> bool: + """Has been unemployed at least 1 year after age 58.5.""" + + +@policy_input() +def pflichtbeitragsjahre_8_von_10() -> bool: + """Has at least 8 contribution years in past 10 years.""" + + +@policy_input() +def vertrauensschutz_1997() -> bool: + """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit implemented in 1997 (§ 237 SGB VI Abs. 4).""" + + +@policy_input() +def vertrauensschutz_2004() -> bool: + """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit enacted in July 2004 (§ 237 SGB VI Abs. 5).""" diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index 68d5569bfc..2f53b874da 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -123,7 +123,7 @@ def betrag_arbeitgeber_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") -def betrag_arbeitgeber_m_mit_midijob( # noqa: PLR0913 +def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_midijob_arbeitgeber_m: float, einkommen_m: float, diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index b885f616c8..3eb4bc602f 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -4,7 +4,7 @@ @policy_function(start_date="2001-01-01") -def betrag_m( # noqa: PLR0913 +def betrag_m( zugangsfaktor: float, entgeltpunkte_west: float, entgeltpunkte_ost: float, @@ -292,7 +292,7 @@ def zugangsfaktor( # TODO(@MImmesberger): Reuse Altersrente Wartezeiten for Erwerbsminderungsrente # https://github.com/iza-institute-of-labor-economics/gettsim/issues/838 @policy_function(start_date="2001-01-01") -def wartezeit_langjährig_versichert_erfüllt( # noqa: PLR0913 +def wartezeit_langjährig_versichert_erfüllt( sozialversicherung__rente__pflichtbeitragsmonate: float, sozialversicherung__rente__freiwillige_beitragsmonate: float, sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: float, diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py new file mode 100644 index 0000000000..8b258df540 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py @@ -0,0 +1,13 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def teilweise_erwerbsgemindert() -> bool: + """Able to provide at least 3 but no more than 6 hours of market labor per day..""" + + +@policy_input() +def voll_erwerbsgemindert() -> bool: + """Unable to provide more than 3 hours of market labor per day..""" diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index ad2eead8eb..731a24ca33 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -1,9 +1,9 @@ -from ttsim import RoundingDirection, RoundingSpec, piecewise_polynomial, policy_function +from ttsim import RoundingSpec, piecewise_polynomial, policy_function @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), start_date="2021-01-01", ) @@ -87,7 +87,7 @@ def einkommen_m( @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), start_date="2021-01-01", ) @@ -147,7 +147,7 @@ def anzurechnendes_einkommen_m( @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction=RoundingDirection.NEAREST, reference="§ 123 SGB VI Abs. 1" + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), start_date="2021-01-01", ) @@ -235,7 +235,7 @@ def durchschnittliche_entgeltpunkte( @policy_function( rounding_spec=RoundingSpec( base=0.0001, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§76g SGB VI Abs. 4 Nr. 4", ), start_date="2021-01-01", @@ -279,7 +279,7 @@ def höchstbetrag_m( @policy_function( rounding_spec=RoundingSpec( base=0.0001, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", @@ -339,12 +339,12 @@ def mean_entgeltpunkte_zuschlag( @policy_function( rounding_spec=RoundingSpec( base=0.0001, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", ) -def proxy_rente_vorjahr_m( # noqa: PLR0913 +def proxy_rente_vorjahr_m( sozialversicherung__rente__bezieht_rente: bool, sozialversicherung__rente__private_rente_betrag_m: float, sozialversicherung__rente__jahr_renteneintritt: int, diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py new file mode 100644 index 0000000000..6796f05265 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py @@ -0,0 +1,18 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def bewertungszeiten_monate() -> int: + """Number of months determining amount of Grundrente.""" + + +@policy_input() +def grundrentenzeiten_monate() -> int: + """Number of months determining eligibility for Grundrente.""" + + +@policy_input() +def mean_entgeltpunkte() -> float: + """Mean Entgeltpunkte during Bewertungszeiten.""" diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py new file mode 100644 index 0000000000..8d96e516de --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -0,0 +1,98 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def bezieht_rente() -> bool: + """Draws public pension benefits.""" + + +@policy_input() +def entgeltpunkte_ost() -> float: + """Earnings points for pension claim accumulated in Eastern states.""" + + +@policy_input() +def entgeltpunkte_west() -> float: + """Earnings points for pension claim accumulated in Western states.""" + + +@policy_input() +def ersatzzeiten_monate() -> float: + """Total months during military, persecution/escape, internment, and consecutive sickness.""" + + +@policy_input() +def freiwillige_beitragsmonate() -> float: + """Total months of voluntary pensioninsurance contributions.""" + + +@policy_input() +def jahr_renteneintritt() -> int: + """Year of pension claiming.""" + + +@policy_input() +def monat_renteneintritt() -> int: + """Month of retirement.""" + + +@policy_input() +def kinderberücksichtigungszeiten_monate() -> float: + """Total months of childcare till age 10.""" + + +@policy_input() +def krankheitszeiten_ab_16_bis_24_monate() -> float: + """Total months of sickness between age 16 and 24.""" + + +@policy_input() +def monate_geringfügiger_beschäftigung() -> float: + """Total months of marginal employment (w/o mandatory contributions).""" + + +@policy_input() +def monate_in_arbeitslosigkeit() -> float: + """Total months of unemployment (registered).""" + + +@policy_input() +def monate_in_arbeitsunfähigkeit() -> float: + """Total months of sickness, rehabilitation, measures for worklife participation(Teilhabe).""" + + +@policy_input() +def monate_in_ausbildungssuche() -> float: + """Total months of apprenticeship search.""" + + +@policy_input() +def monate_in_mutterschutz() -> float: + """Total months of maternal protections.""" + + +@policy_input() +def monate_in_schulausbildung() -> float: + """Months of schooling (incl college, unifrom age 17, max. 8 years).""" + + +@policy_input() +def monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit() -> float: + """Total months of unemployment (only time of Entgeltersatzleistungen, not ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld.""" + + +@policy_input() +def pflichtbeitragsmonate() -> float: + """Total months of mandatory pension insurance contributions.""" + + +@policy_input() +def private_rente_betrag_m() -> float: + """Amount of monthly private pension.""" + + +@policy_input() +def pflegeberücksichtigungszeiten_monate() -> float: + """Total months of home care provision (01.01.1992-31.03.1995).""" diff --git a/src/_gettsim/sozialversicherung/rente/wartezeit.py b/src/_gettsim/sozialversicherung/rente/wartezeit.py index 3f373253dc..1c2d683b14 100644 --- a/src/_gettsim/sozialversicherung/rente/wartezeit.py +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.py @@ -68,7 +68,7 @@ def wartezeit_15_jahre_erfüllt( @policy_function() -def wartezeit_35_jahre_erfüllt( # noqa: PLR0913 +def wartezeit_35_jahre_erfüllt( pflichtbeitragsmonate: float, freiwillige_beitragsmonate: float, anrechnungsmonate_35_jahre_wartezeit: float, @@ -115,7 +115,7 @@ def wartezeit_35_jahre_erfüllt( # noqa: PLR0913 @policy_function(start_date="2012-01-01") -def wartezeit_45_jahre_erfüllt( # noqa: PLR0913 +def wartezeit_45_jahre_erfüllt( pflichtbeitragsmonate: float, freiwillige_beitragsmonate: float, anrechnungsmonate_45_jahre_wartezeit: float, @@ -175,7 +175,7 @@ def wartezeit_45_jahre_erfüllt( # noqa: PLR0913 @policy_function() -def anrechnungsmonate_35_jahre_wartezeit( # noqa: PLR0913 +def anrechnungsmonate_35_jahre_wartezeit( monate_in_arbeitsunfähigkeit: float, krankheitszeiten_ab_16_bis_24_monate: float, monate_in_mutterschutz: float, diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index 76849aead2..08cd7c915d 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -9,14 +9,13 @@ from _gettsim.config import ( RESOURCE_DIR, SUPPORTED_GROUPINGS, - TYPES_INPUT_VARIABLES, ) from ttsim.policy_environment import _load_parameter_group_from_yaml current_year = datetime.datetime.today().year -def create_synthetic_data( # noqa: PLR0913 +def create_synthetic_data( n_adults=1, n_children=0, adults_married=True, diff --git a/src/_gettsim/unterhalt/inputs.py b/src/_gettsim/unterhalt/inputs.py new file mode 100644 index 0000000000..143c84345c --- /dev/null +++ b/src/_gettsim/unterhalt/inputs.py @@ -0,0 +1,13 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def anspruch_m() -> float: + """Monthly gross child alimony payments to be received by the child as determined by the court.""" + + +@policy_input() +def tatsächlich_erhaltener_betrag_m() -> float: + """Child alimony payments the child actually receives.""" diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 7799010702..ef59071e6d 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -5,25 +5,25 @@ from ttsim import ( AggregateByPIDSpec, AggregationType, - RoundingDirection, RoundingSpec, join_numpy, policy_function, ) -aggregation_specs = { - "an_elternteil_auszuzahlender_betrag_m": AggregateByPIDSpec( +aggregation_specs = ( + AggregateByPIDSpec( + target="an_elternteil_auszuzahlender_betrag_m", p_id_to_aggregate_by="kindergeld__p_id_empfänger", source="betrag_m", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ), -} +) @policy_function( start_date="2009-01-01", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.UP, reference="§ 9 Abs. 3 UhVorschG" + base=1, direction="up", reference="§ 9 Abs. 3 UhVorschG" ), ) def betrag_m( @@ -104,7 +104,7 @@ def elternteil_alleinerziehend( end_date="2008-12-31", leaf_name="betrag_m", rounding_spec=RoundingSpec( - base=1, direction=RoundingDirection.DOWN, reference="§ 9 Abs. 3 UhVorschG" + base=1, direction="down", reference="§ 9 Abs. 3 UhVorschG" ), ) def not_implemented_m() -> float: @@ -395,9 +395,9 @@ def mindesteinkommen_erreicht( @policy_function(start_date="2017-01-01") -def einkommen_m( # noqa: PLR0913 +def einkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - einkommensteuer__einkünfte__sonstige__betrag_m: float, + einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, @@ -411,8 +411,8 @@ def einkommen_m( # noqa: PLR0913 ---------- einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. - einkommensteuer__einkünfte__sonstige__betrag_m - See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. + einkommensteuer__einkünfte__sonstige__ohne_renten_m + See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m`. einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m @@ -432,7 +432,7 @@ def einkommen_m( # noqa: PLR0913 """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - + einkommensteuer__einkünfte__sonstige__betrag_m + + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index 252f20f6c1..5ed68556be 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -2,16 +2,18 @@ from ttsim import AggregateByGroupSpec, AggregationType, policy_function -aggregation_specs = { - "wohngeld_vorrang_wthh": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="wohngeld_vorrang_wthh", source="wohngeld_vorrang_vor_arbeitslosengeld_2_bg", - aggr=AggregationType.ANY, + agg=AggregationType.ANY, ), - "wohngeld_kinderzuschlag_vorrang_wthh": AggregateByGroupSpec( + AggregateByGroupSpec( + target="wohngeld_kinderzuschlag_vorrang_wthh", source="wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg", - aggr=AggregationType.ANY, + agg=AggregationType.ANY, ), -} +) @policy_function() diff --git a/src/_gettsim/wohnen/inputs.py b/src/_gettsim/wohnen/inputs.py new file mode 100644 index 0000000000..e21fc2491a --- /dev/null +++ b/src/_gettsim/wohnen/inputs.py @@ -0,0 +1,28 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def baujahr_immobilie_hh() -> int: + """Year of construction of the household dwelling.""" + + +@policy_input() +def bewohnt_eigentum_hh() -> bool: + """Owner-occupied housing.""" + + +@policy_input() +def bruttokaltmiete_m_hh() -> float: + """Rent expenses excluding utilities.""" + + +@policy_input() +def heizkosten_m_hh() -> float: + """Heating expenses.""" + + +@policy_input() +def wohnfläche_hh() -> float: + """Size of household dwelling in square meters.""" diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index d5ff2a97cf..df2c84b451 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -8,13 +8,14 @@ ) from ttsim.config import numpy_or_jax as np -aggregation_specs = { - "alleinerziehendenbonus": AggregateByPIDSpec( - p_id_to_aggregate_by="kindergeld__p_id_empfänger", +aggregation_specs = ( + AggregateByPIDSpec( + target="alleinerziehendenbonus", source="kindergeld__kind_bis_10_mit_kindergeld", - aggr=AggregationType.SUM, + p_id_to_aggregate_by="kindergeld__p_id_empfänger", + agg=AggregationType.SUM, ), -} +) @policy_function() @@ -137,14 +138,14 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( @policy_function(end_date="2006-12-31", leaf_name="einkommen_vor_freibetrag_m") -def einkommen_vor_freibetrag_m_ohne_elterngeld( # noqa: PLR0913 +def einkommen_vor_freibetrag_m_ohne_elterngeld( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, - einkommensteuer__einkünfte__sonstige__betrag_m: float, - einkommensteuer__renteneinkommen_m: float, + einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, + einkommensteuer__renteneinkünfte_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, abzugsanteil_vom_einkommen_für_steuern_sozialversicherung: float, @@ -165,10 +166,10 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( # noqa: PLR0913 See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. sozialversicherung__arbeitslosen__betrag_m See :func:`sozialversicherung__arbeitslosen__betrag_m`. - einkommensteuer__einkünfte__sonstige__betrag_m - See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. - einkommensteuer__renteneinkommen_m - See :func:`einkommensteuer__renteneinkommen_m`. + einkommensteuer__einkünfte__sonstige__ohne_renten_m + See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. + einkommensteuer__renteneinkünfte_m + See :func:`einkommensteuer__renteneinkünfte_m`. unterhalt__tatsächlich_erhaltener_betrag_m See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. unterhaltsvorschuss__betrag_m @@ -189,25 +190,27 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( # noqa: PLR0913 transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__renteneinkommen_m + + einkommensteuer__renteneinkünfte_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m ) - eink_ind = einkommen + transfers + einkommensteuer__einkünfte__sonstige__betrag_m + eink_ind = ( + einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m + ) out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind return out @policy_function(start_date="2007-01-01", leaf_name="einkommen_vor_freibetrag_m") -def einkommen_vor_freibetrag_m_mit_elterngeld( # noqa: PLR0913 +def einkommen_vor_freibetrag_m_mit_elterngeld( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, - einkommensteuer__einkünfte__sonstige__betrag_m: float, - einkommensteuer__renteneinkommen_m: float, + einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, + einkommensteuer__renteneinkünfte_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, elterngeld__anrechenbarer_betrag_m: float, @@ -229,10 +232,10 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( # noqa: PLR0913 See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. sozialversicherung__arbeitslosen__betrag_m See :func:`sozialversicherung__arbeitslosen__betrag_m`. - einkommensteuer__einkünfte__sonstige__betrag_m - See :func:`einkommensteuer__einkünfte__sonstige__betrag_m`. - einkommensteuer__renteneinkommen_m - See :func:`einkommensteuer__renteneinkommen_m`. + einkommensteuer__einkünfte__sonstige__ohne_renten_m + See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. + einkommensteuer__renteneinkünfte_m + See :func:`einkommensteuer__renteneinkünfte_m`. unterhalt__tatsächlich_erhaltener_betrag_m See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. unterhaltsvorschuss__betrag_m @@ -258,19 +261,21 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( # noqa: PLR0913 transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__renteneinkommen_m + + einkommensteuer__renteneinkünfte_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m + elterngeld__anrechenbarer_betrag_m ) - eink_ind = einkommen + transfers + einkommensteuer__einkünfte__sonstige__betrag_m + eink_ind = ( + einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m + ) out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind return out @policy_function(end_date="2015-12-31", leaf_name="freibetrag_m") -def freibetrag_m_bis_2015( # noqa: PLR0913 +def freibetrag_m_bis_2015( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, ist_kind_mit_erwerbseinkommen: bool, behinderungsgrad: int, diff --git a/src/_gettsim/wohngeld/group_by_ids.py b/src/_gettsim/wohngeld/group_by_ids.py index 5885a34049..9d1ac3ec72 100644 --- a/src/_gettsim/wohngeld/group_by_ids.py +++ b/src/_gettsim/wohngeld/group_by_ids.py @@ -4,9 +4,11 @@ from ttsim import AggregateByGroupSpec, AggregationType, group_by_function -aggregation_specs = { - "anzahl_personen_wthh": AggregateByGroupSpec(aggr=AggregationType.COUNT), -} +aggregation_specs = ( + AggregateByGroupSpec( + target="anzahl_personen_wthh", source=None, agg=AggregationType.COUNT + ), +) @group_by_function() diff --git a/src/_gettsim/wohngeld/inputs.py b/src/_gettsim/wohngeld/inputs.py new file mode 100644 index 0000000000..66349c539c --- /dev/null +++ b/src/_gettsim/wohngeld/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def mietstufe() -> int: + """Municipality's rent classification.""" diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index 50ae40805d..6c8255a9c0 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -80,7 +80,7 @@ def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: @policy_function(end_date="2008-12-31", leaf_name="miete_m_hh") -def miete_m_hh_bis_2008( # noqa: PLR0913 +def miete_m_hh_bis_2008( mietstufe: int, wohnen__baujahr_immobilie_hh: int, anzahl_personen_hh: int, diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index f6b4f43218..7cd03da64d 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -16,7 +16,7 @@ 3. In this sense, this implementation is an approximation of the actual Wohngeld. """ -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function() @@ -68,7 +68,7 @@ def betrag_m_wthh( @policy_function( rounding_spec=RoundingSpec( base=1, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ) ) @@ -118,7 +118,7 @@ def anspruchshöhe_m_wthh( @policy_function( rounding_spec=RoundingSpec( base=1, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ) ) diff --git a/src/_gettsim_tests/_helpers.py b/src/_gettsim_tests/_helpers.py deleted file mode 100644 index 42835be8c1..0000000000 --- a/src/_gettsim_tests/_helpers.py +++ /dev/null @@ -1,25 +0,0 @@ -from __future__ import annotations - -from functools import lru_cache -from typing import TYPE_CHECKING - -from ttsim import ( - PolicyEnvironment, - set_up_policy_environment, -) -from ttsim.policy_environment import _parse_date - -if TYPE_CHECKING: - import datetime - - -def cached_set_up_policy_environment( - date: int | str | datetime.date, -) -> PolicyEnvironment: - normalized_date = _parse_date(date) - return _cached_set_up_policy_environment(normalized_date) - - -@lru_cache(maxsize=100) -def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: - return set_up_policy_environment(date) diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml index 2451fd3565..a47d20bb85 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml @@ -26,7 +26,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml index e5dafe8d9e..076fe1306f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml @@ -66,7 +66,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml index 02bf1cbfc3..051b0961d5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 250.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml index 8444fb5c55..ee5f140853 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 250.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml index 3bec2d4fd8..c257d0f0b9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml index 7afbd8b0a6..35fe57ff3b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml index c755e0c74a..9cbaa14055 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml index b355791f45..ad8fe65b27 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml index fc1eb40633..a9663b7c1c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml @@ -36,7 +36,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml index 6b87c65abe..05a4c5954d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml @@ -66,7 +66,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml index 78bd56c024..e5dfc9e46d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml index baf063b81c..217cd55c7a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml index 4faeab81a6..feaf7ba588 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml index 023ab047bc..7477d1b9a7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml index 210fd47f3f..6681d70231 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml index 3f23dae45c..9ba11fa0ad 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml @@ -26,7 +26,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml index d297ed3b21..bc005f3003 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml index 7a55615c51..4fa57f9503 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml index d417ef1253..17bb7b17cf 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml @@ -57,7 +57,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml index 27dd091063..5c29c99f1a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml index d0da663b32..433553a9bb 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml index eb0283bd21..9bccd82150 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml @@ -26,7 +26,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml index 0bba1be93f..0924cf06c5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml index 565cc283d6..83e30a51d7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml index 3be9ae0fb7..f23aa95b8f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml index 7b71261ebd..7f4e5ff59f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml @@ -26,7 +26,7 @@ inputs: - 1200.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml index 0087bf9ccf..a754508a0d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml index 8db03976fc..768ec0653c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml @@ -48,7 +48,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml index 752337129a..c3495e57b8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml @@ -48,7 +48,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml index f16ac9db21..d4da154518 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml @@ -29,7 +29,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml index ecc7262437..a6aa22bbc3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml @@ -29,7 +29,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml index 20c6a53cc5..d05d9883db 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 0 einkommensteuer__gesamteinkommen_y: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml index ec2ee32034..7af7362283 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 6280 einkommensteuer__gesamteinkommen_y: - 4328.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml index 840ffffd30..c9985d20e6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 9880 einkommensteuer__gesamteinkommen_y: - 7916.2 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml index 0c6fe6796e..51434257d4 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 13480 einkommensteuer__gesamteinkommen_y: - 11109.8 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml index 19c2bb1bd4..2ca9098670 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17080 einkommensteuer__gesamteinkommen_y: - 14489.98 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml index 1287fe54fd..e4f39ebc78 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 einkommensteuer__gesamteinkommen_y: - 29964.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml index 2cf9395f7d..d15d5e654b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml @@ -106,7 +106,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 - 23000 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml index 4a8a650847..b82d3b6054 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml @@ -106,7 +106,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 - 29000 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml index f64827bb3c..55cc05a8e0 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 13400 einkommensteuer__gesamteinkommen_y: - 10816.78 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml index 3a1774b845..fa446bdc77 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17000 einkommensteuer__gesamteinkommen_y: - 13858.72 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml index 5fd537f34e..f201d5eb3d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 59000 einkommensteuer__gesamteinkommen_y: - 53046.4 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml index c965403895..bd5726b3f6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 0 einkommensteuer__gesamteinkommen_y: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml index 727a69325b..e039b630ed 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 6200 einkommensteuer__gesamteinkommen_y: - 5173.26 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml index eca499883e..bde317a5fe 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml @@ -73,7 +73,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 9800 einkommensteuer__gesamteinkommen_y: - 7853.59 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml index f1a299c167..2492a1a6af 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml @@ -106,7 +106,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17000 - 0 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml index 32a2da8c97..3c1516744f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml @@ -172,7 +172,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml index 299fa4690e..e110012e07 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml @@ -172,7 +172,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml index c1711a71d0..939c5b3c14 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml @@ -172,7 +172,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__gesamteinkommen_ohne_abzüge_y: + einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml index c9a612810e..da22dd16d5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml @@ -81,16 +81,25 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 - 50.0 - 50.0 - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - false - false - - false elterngeld__bisherige_bezugsmonate: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml index 173a0f44e4..7b1c7a65c2 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml @@ -81,11 +81,21 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 - 50.0 - 50.0 - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml index ed60016c2c..06921d87ac 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml @@ -36,8 +36,12 @@ inputs: - 8.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml index d0f22d1716..45ae07cc3d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml @@ -36,8 +36,12 @@ inputs: - 9.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml index 3ab65adad3..2528614d1b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml @@ -36,8 +36,12 @@ inputs: - 10.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml index 2939ac7f2e..9a9bb3ab49 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml @@ -36,8 +36,12 @@ inputs: - 11.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml index 4b9b4c384d..0df467869d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml @@ -36,8 +36,12 @@ inputs: - 12.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml index 375814ac75..7793676160 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml @@ -36,8 +36,12 @@ inputs: - 13.0 einkommensteuer__einkünfte__ist_selbstständig: - true - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 50.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 einkommensteuer__gemeinsam_veranlagt: - false elterngeld__bisherige_bezugsmonate: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index 403b56808c..95be84ce8b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -31,7 +31,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index 0a26896b6e..86d267d400 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 35ac5c294c..ca9ada9b0b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 0cdf7d605c..1bbaaed949 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -30,7 +30,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index 7d0d960c3b..9717a914fd 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -23,7 +23,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index ad16474a28..8aa63c2ad7 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index 0c873152ed..ab697f1752 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 0eb9537bf5..747f24b131 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index 8df7067d1f..6d6eb446a5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index cf2ed9d736..67b4ff35d7 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -30,7 +30,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 4beecbb4c4..7d7bff8adf 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -30,7 +30,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index 9841eebf2e..e4ee90a71d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -23,7 +23,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 5e36d0e795..4af7cd07e0 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 7fdbf2e658..96c145ed9f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 11664ae592..1fb55ac33d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -31,7 +31,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index ee93d97606..ee2e2393c0 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -31,7 +31,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 60fe439f33..85ed9dbe07 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index 8ae137b68f..74f8acb65a 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index 3b442041db..4bc3f02e94 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -31,7 +31,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 0542a2bd40..1ad2d025b3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -23,7 +23,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index fafa5be9eb..f281ac2283 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -23,7 +23,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index ff54e47082..cb40eafa4d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -30,7 +30,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 45f1ab9d77..349bd5d25d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -31,7 +31,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index 6fe73b8d52..6e5734e187 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -30,7 +30,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 2e9f389a85..602f5c7e62 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007/eltern_getrennt_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_getrennt_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2007/eltern_getrennt_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml rename to src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/aggregate_by_p_id/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" rename to "src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024/eltern_getrennt_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_getrennt_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2024/eltern_getrennt_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml similarity index 100% rename from src/_gettsim_tests/test_data/aggregate_by_p_id/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml rename to src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml diff --git "a/src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/aggregate_by_p_id/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" rename to "src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml index d5d55c678b..1fa18bd78e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml @@ -24,7 +24,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 familie__alleinerziehend: diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml index 66fca147bb..4330c34533 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml @@ -30,7 +30,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml index 3879793392..b5d1c56586 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml @@ -30,7 +30,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml index 0c5f9d3e4d..4e2dbd50ce 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml @@ -30,7 +30,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml index 0035c196ef..13da24da86 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml @@ -24,7 +24,7 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 familie__alleinerziehend: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml index bbaf707c49..0459c304ed 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml @@ -97,7 +97,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -115,7 +115,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml index f753816a02..57b557302a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml @@ -66,7 +66,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -78,7 +78,7 @@ inputs: - true - true - true - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml index cf3335cbfd..51e294d119 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml @@ -39,13 +39,13 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 250.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 elterngeld__betrag_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml index c383bac6d4..686c5070d0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml @@ -36,13 +36,13 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: - true - true - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 elterngeld__betrag_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml index 19b81423a0..32afef27d9 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml @@ -36,13 +36,13 @@ inputs: einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 100.0 - 0.0 einkommensteuer__gemeinsam_veranlagt: - true - true - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 elterngeld__betrag_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml index 6c769cb371..dfb3eca805 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml @@ -50,7 +50,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -58,7 +58,7 @@ inputs: - true - true - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml index e1773902d3..fcf2d23a92 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml @@ -146,7 +146,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -174,7 +174,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml index acbc6684ee..282ace279d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml @@ -76,7 +76,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -90,7 +90,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml index 5acad76b1d..9f58ce4c42 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml @@ -76,7 +76,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 800.0 - 0.0 - 0.0 @@ -90,7 +90,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml index e1ca6d89c6..35b8fe455f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml @@ -26,11 +26,11 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 elterngeld__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml index 6b2ac8f2ba..69b9c0126b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml @@ -28,11 +28,11 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 elterngeld__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml index 152ce3fdee..d42812889a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml @@ -30,11 +30,11 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 elterngeld__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml index 2dbc8d5a93..adb5802a0e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml @@ -30,11 +30,11 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 elterngeld__betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml index 097a040023..219a0ef52c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml @@ -54,7 +54,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -62,7 +62,7 @@ inputs: - true - true - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml index 3a15e03bfc..3660c774d0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml @@ -90,7 +90,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -104,7 +104,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml index 92c861d1aa..106686b68e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml @@ -66,7 +66,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -76,7 +76,7 @@ inputs: - true - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml index 538687c4e1..ccffebac6b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml @@ -78,7 +78,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -90,7 +90,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml index 14c2ffa004..aebe1d9b7a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml @@ -76,7 +76,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -90,7 +90,7 @@ inputs: - true - true - true - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 61b54fba52..eee2be192b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -72,7 +72,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -84,7 +84,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 2f2a5e3a42..778bbbaab1 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -94,7 +94,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__sonstige__betrag_m: + einkommensteuer__einkünfte__sonstige__ohne_renten_m: - 0.0 - 0.0 - 0.0 @@ -110,7 +110,7 @@ inputs: - false - false - false - einkommensteuer__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 09de9fbf19..0ef23d490d 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,10 +1,14 @@ import dags.tree as dt import pytest -from _gettsim.config import TYPES_INPUT_VARIABLES -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim_tests.utils import ( + PolicyTest, + cached_set_up_policy_environment, + load_policy_test_data, +) from ttsim import compute_taxes_and_transfers +from ttsim.function_types import PolicyInput from ttsim.typing import check_series_has_expected_type test_data = load_policy_test_data("full_taxes_and_transfers") @@ -18,6 +22,8 @@ def test_full_taxes_transfers(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) @@ -29,10 +35,16 @@ def test_data_types(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) - flat_types_input_variables = dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES) - flat_functions = dt.flatten_to_qual_names(environment.functions_tree) + flat_types_input_variables = { + n: pi.data_type + for n, pi in dt.flatten_to_qual_names(environment.raw_objects_tree).items() + if isinstance(pi, PolicyInput) + } + flat_functions = dt.flatten_to_qual_names(environment.raw_objects_tree) for column_name, result_array in dt.flatten_to_qual_names(result).items(): if column_name in flat_types_input_variables: @@ -51,6 +63,9 @@ def test_data_types(test: PolicyTest): assert check_series_has_expected_type(result_array, internal_type) +@pytest.mark.skip( + reason="Got rid of DEFAULT_TARGETS, there might not be a replacement." +) @pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) def test_allow_none_as_target_tree(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -59,4 +74,6 @@ def test_allow_none_as_target_tree(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=None, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index 7927a7cc6d..c5572d4867 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -3,8 +3,12 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim_tests.utils import ( + PolicyTest, + cached_set_up_policy_environment, + load_policy_test_data, +) from ttsim import compute_taxes_and_transfers test_data = load_policy_test_data("groupings") @@ -18,6 +22,8 @@ def test_groupings(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) @@ -50,4 +56,6 @@ def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): data_tree=data, environment=environment, targets_tree={"einkommensteuer": {"sn_id": None}}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_grundrente.py b/src/_gettsim_tests/test_grundrente_proxy_rente.py similarity index 74% rename from src/_gettsim_tests/test_grundrente.py rename to src/_gettsim_tests/test_grundrente_proxy_rente.py index eefcf2fe12..e1a2606fca 100644 --- a/src/_gettsim_tests/test_grundrente.py +++ b/src/_gettsim_tests/test_grundrente_proxy_rente.py @@ -4,17 +4,20 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim_tests.utils import ( + PolicyTest, + cached_set_up_policy_environment, + load_policy_test_data, +) from ttsim import compute_taxes_and_transfers -proxy_rente_test_data = load_policy_test_data("grundrente_proxy_rente") +proxy_rente_test_data = load_policy_test_data( + "sozialversicherung/rente/grundrente_proxy_rente" +) -@pytest.mark.parametrize( - "test", - proxy_rente_test_data, -) +@pytest.mark.parametrize("test", proxy_rente_test_data) def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -26,6 +29,8 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): "rente": {"grundrente": {"proxy_rente_vorjahr_m": None}} } }, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) # Calculate pension of last year @@ -37,6 +42,8 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): targets_tree={ "sozialversicherung": {"rente": {"altersrente": {"bruttorente_m": None}}} }, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/tests/ttsim/test_aggregate_by_p_id.py b/src/_gettsim_tests/test_household_links.py similarity index 70% rename from tests/ttsim/test_aggregate_by_p_id.py rename to src/_gettsim_tests/test_household_links.py index 388328360d..a46a71a0fc 100644 --- a/tests/ttsim/test_aggregate_by_p_id.py +++ b/src/_gettsim_tests/test_household_links.py @@ -2,11 +2,15 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim_tests._helpers import cached_set_up_policy_environment -from _gettsim_tests._policy_test_utils import PolicyTest, load_policy_test_data +from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim_tests.utils import ( + PolicyTest, + cached_set_up_policy_environment, + load_policy_test_data, +) from ttsim import compute_taxes_and_transfers -test_data = load_policy_test_data("aggregate_by_p_id") +test_data = load_policy_test_data("household_links") @pytest.mark.parametrize("test", test_data) @@ -17,6 +21,8 @@ def test_aggregate_by_p_id(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + foreign_keys=FOREIGN_KEYS, + supported_groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py index 7e803d1d42..ab43424c36 100644 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -1,15 +1,16 @@ +from _gettsim.config import RESOURCE_DIR from ttsim import set_up_policy_environment def test_lohnsteuer_rv_anteil(): - environment = set_up_policy_environment(2018) + environment = set_up_policy_environment(resource_dir=RESOURCE_DIR, date=2018) assert ( environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 0.72 ) - environment = set_up_policy_environment(2023) + environment = set_up_policy_environment(resource_dir=RESOURCE_DIR, date=2023) assert ( environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 1 diff --git a/src/_gettsim_tests/test_steuern_und_transfers.py b/src/_gettsim_tests/test_policy.py similarity index 87% rename from src/_gettsim_tests/test_steuern_und_transfers.py rename to src/_gettsim_tests/test_policy.py index 815448f2ce..d3fbb798f9 100644 --- a/src/_gettsim_tests/test_steuern_und_transfers.py +++ b/src/_gettsim_tests/test_policy.py @@ -1,6 +1,6 @@ import pytest -from _gettsim_tests._policy_test_utils import ( +from _gettsim_tests.utils import ( PolicyTest, execute_test, get_policy_test_ids_and_cases, diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py index 985c002806..3b94cf5d03 100644 --- a/src/_gettsim_tests/test_synthetic.py +++ b/src/_gettsim_tests/test_synthetic.py @@ -4,7 +4,6 @@ import pandas as pd import pytest -from _gettsim.config import DEFAULT_TARGETS from _gettsim.synthetic import create_synthetic_data from ttsim import compute_taxes_and_transfers, set_up_policy_environment @@ -349,6 +348,6 @@ def test_default_targets(fixture, policy_date, request): environment = set_up_policy_environment(policy_date) compute_taxes_and_transfers( data_tree=request.getfixturevalue(fixture), - targets_tree=DEFAULT_TARGETS, + targets_tree=fixme, environment=environment, ) diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py new file mode 100644 index 0000000000..76ef3d7532 --- /dev/null +++ b/src/_gettsim_tests/utils.py @@ -0,0 +1,230 @@ +from __future__ import annotations + +import datetime +from functools import lru_cache +from typing import TYPE_CHECKING + +import dags.tree as dt +import pandas as pd +import yaml + +from _gettsim.config import FOREIGN_KEYS, RESOURCE_DIR, SUPPORTED_GROUPINGS +from _gettsim_tests import TEST_DIR +from ttsim import ( + PolicyEnvironment, + merge_trees, + set_up_policy_environment, +) +from ttsim.policy_environment import _parse_date + +if TYPE_CHECKING: + from pathlib import Path + + from ttsim import NestedDataDict, NestedInputStructureDict + + +def cached_set_up_policy_environment( + date: int | str | datetime.date, +) -> PolicyEnvironment: + normalized_date = _parse_date(date) + return _cached_set_up_policy_environment(normalized_date) + + +@lru_cache(maxsize=100) +def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: + return set_up_policy_environment(date=date, resource_dir=RESOURCE_DIR) + + +class PolicyTest: + """A class for a single policy test.""" + + def __init__( + self, + info: NestedDataDict, + input_tree: NestedDataDict, + expected_output_tree: NestedDataDict, + path: Path, + date: datetime.date, + ) -> None: + self.info = info + self.input_tree = input_tree + self.expected_output_tree = expected_output_tree + self.path = path + self.date = date + + @property + def target_structure(self) -> NestedInputStructureDict: + flat_target_structure = dict.fromkeys( + dt.flatten_to_tree_paths(self.expected_output_tree) + ) + return dt.unflatten_from_tree_paths(flat_target_structure) + + @property + def test_name(self) -> str: + return self.path.relative_to(TEST_DIR / "test_data").as_posix() + + +def execute_test(test: PolicyTest): + from pandas.testing import assert_frame_equal + + from _gettsim_tests.utils import cached_set_up_policy_environment + from ttsim import compute_taxes_and_transfers + + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + supported_groupings=SUPPORTED_GROUPINGS, + foreign_keys=FOREIGN_KEYS, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + if flat_expected_output_tree: + result_dataframe = pd.DataFrame(flat_result) + expected_dataframe = pd.DataFrame(flat_expected_output_tree) + assert_frame_equal( + result_dataframe, + expected_dataframe, + atol=test.info["precision"], + check_dtype=False, + ) + + +def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: + all_policy_tests = load_policy_test_data("") + return {policy_test.test_name: policy_test for policy_test in all_policy_tests} + + +def load_policy_test_data(policy_name: str) -> list[PolicyTest]: + out = [] + + for path_to_yaml in (TEST_DIR / "test_data" / policy_name).glob("**/*.yaml"): + if _is_skipped(path_to_yaml): + continue + + with path_to_yaml.open("r", encoding="utf-8") as file: + raw_test_data: NestedDataDict = yaml.safe_load(file) + + # TODO(@MImmesberger): Remove this before merging this PR. + raw_test_data["inputs"], raw_test_data["outputs"] = get_test_data_as_tree( + raw_test_data + ) + + out.extend( + _get_policy_tests_from_raw_test_data( + raw_test_data=raw_test_data, + path_to_yaml=path_to_yaml, + ) + ) + + return out + + +def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: + provided_inputs = test_data["inputs"].get("provided", {}) + assumed_inputs = test_data["inputs"].get("assumed", {}) + + unflattened_dict = {} + unflattened_dict["inputs"] = {} + unflattened_dict["outputs"] = {} + + if provided_inputs: + unflattened_dict["inputs"]["provided"] = dt.unflatten_from_qual_names( + provided_inputs + ) + else: + unflattened_dict["inputs"]["provided"] = {} + if assumed_inputs: + unflattened_dict["inputs"]["assumed"] = dt.unflatten_from_qual_names( + assumed_inputs + ) + else: + unflattened_dict["inputs"]["assumed"] = {} + + unflattened_dict["outputs"] = dt.unflatten_from_qual_names(test_data["outputs"]) + + return unflattened_dict["inputs"], unflattened_dict["outputs"] + + +def _is_skipped(test_file: Path) -> bool: + return "skip" in test_file.stem or "skip" in test_file.parent.name + + +def _get_policy_tests_from_raw_test_data( + raw_test_data: NestedDataDict, path_to_yaml: Path +) -> list[PolicyTest]: + """Get a list of PolicyTest objects from raw test data. + + Args: + raw_test_data: The raw test data. + path_to_yaml: The path to the YAML file. + + Returns: + A list of PolicyTest objects. + """ + test_info: NestedDataDict = raw_test_data.get("info", {}) + inputs: NestedDataDict = raw_test_data.get("inputs", {}) + input_tree: NestedDataDict = dt.unflatten_from_tree_paths( + { + k: pd.Series(v) + for k, v in dt.flatten_to_tree_paths( + merge_trees(inputs.get("provided", {}), inputs.get("assumed", {})) + ).items() + } + ) + + expected_output_tree: NestedDataDict = dt.unflatten_from_tree_paths( + { + k: pd.Series(v) + for k, v in dt.flatten_to_tree_paths( + raw_test_data.get("outputs", {}) + ).items() + } + ) + + date: datetime.date = _parse_date_from_dir_name(path_to_yaml.parent.name) + + out = [] + if expected_output_tree == {}: + out.append( + PolicyTest( + info=test_info, + input_tree=input_tree, + expected_output_tree={}, + path=path_to_yaml, + date=date, + ) + ) + else: + for target_name, output_data in dt.flatten_to_tree_paths( + expected_output_tree + ).items(): + one_expected_output: NestedDataDict = dt.unflatten_from_tree_paths( + {target_name: output_data} + ) + out.append( + PolicyTest( + info=test_info, + input_tree=input_tree, + expected_output_tree=one_expected_output, + path=path_to_yaml, + date=date, + ) + ) + + return out + + +def _parse_date_from_dir_name(date: str) -> datetime.date: + parts = date.split("-") + + if len(parts) == 1: + return datetime.date(int(parts[0]), 1, 1) + if len(parts) == 2: + return datetime.date(int(parts[0]), int(parts[1]), 1) + if len(parts) == 3: + return datetime.date(int(parts[0]), int(parts[1]), int(parts[2])) diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 55ad2a3d7c..c640619981 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -9,18 +9,20 @@ DerivedTimeConversionFunction, GroupByFunction, PolicyFunction, + PolicyInput, group_by_function, policy_function, + policy_input, ) from ttsim.loader import ( - ConflictingTimeDependentFunctionsError, - get_active_functions_tree_from_module, + ConflictingTimeDependentObjectsError, + get_active_ttsim_objects_tree_from_module, load_aggregation_specs_tree, - load_functions_tree_for_date, + load_objects_tree_for_date, ) from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment -from ttsim.rounding import RoundingDirection, RoundingSpec +from ttsim.rounding import RoundingSpec from ttsim.shared import ( insert_path_and_value, join_numpy, @@ -35,29 +37,30 @@ "AggregateByGroupSpec", "AggregateByPIDSpec", "AggregationType", - "ConflictingTimeDependentFunctionsError", + "ConflictingTimeDependentObjectsError", "DerivedAggregationFunction", "DerivedTimeConversionFunction", "FunctionsAndColumnsOverlapWarning", "GroupByFunction", "PolicyEnvironment", "PolicyFunction", - "RoundingDirection", + "PolicyInput", "RoundingSpec", "combine_policy_functions_and_derived_functions", "compute_taxes_and_transfers", "create_time_conversion_functions", - "get_active_functions_tree_from_module", + "get_active_ttsim_objects_tree_from_module", "get_piecewise_parameters", "group_by_function", "insert_path_and_value", "join_numpy", "load_aggregation_specs_tree", - "load_functions_tree_for_date", + "load_objects_tree_for_date", "merge_trees", "piecewise_polynomial", "plot_dag", "policy_function", + "policy_input", "set_up_policy_environment", "upsert_path_and_value", "upsert_tree", diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index 8a705fea19..bedff13ab5 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -48,23 +48,34 @@ class AggregationType(StrEnum): @dataclass -class AggregateByGroupSpec: +class AggregationSpec: """ - A container for aggregate by group specifications. + Base class for aggregation specifications. Only use for type checking. """ - aggr: AggregationType - source: str | None = None + target: str + source: str | None + agg: AggregationType _agg_func: Callable = field(init=False) def __post_init__(self): - if not isinstance(self.aggr, AggregationType): - raise ValueError( - f"aggr must be of type AggregationType, not {type(self.aggr)}" + if not isinstance(self.agg, AggregationType): + raise TypeError( + f"agg must be of type AggregationType, not {type(self.agg)}" ) - if self.aggr == AggregationType.COUNT and self.source is not None: - raise ValueError("COUNT aggregation cannot use a source.") + if self.agg == AggregationType.COUNT and self.source is not None: + raise ValueError("COUNT aggregation must not provide a source.") + + +@dataclass +class AggregateByGroupSpec(AggregationSpec): + """ + A container for aggregate by group specifications. + """ + + def __post_init__(self): + super().__post_init__() aggregation_registry = { AggregationType.SUM: grouped_sum, @@ -76,30 +87,64 @@ def __post_init__(self): AggregationType.COUNT: grouped_count, } - func = aggregation_registry.get(self.aggr) + func = aggregation_registry.get(self.agg) if func is None: - raise ValueError(f"Aggregation type {self.aggr} not implemented") + raise ValueError(f"Aggregation type {self.agg} not implemented") self._agg_func = func def agg_func(self, source, group_by_id): + # Need to leave this interface in order for renaming of arguments to work. return self._agg_func(source, group_by_id) def mapper(self, group_by_id): - if self.aggr == AggregationType.COUNT: + if self.agg == AggregationType.COUNT: return {"group_by_id": group_by_id} return {"source": self.source, "group_by_id": group_by_id} @dataclass -class AggregateByPIDSpec: +class AggregateByPIDSpec(AggregationSpec): """ A container for aggregate by p_id specifications. """ p_id_to_aggregate_by: str - source: str - aggr: AggregationType + + def __post_init__(self): + super().__post_init__() + + aggregation_registry = { + AggregationType.SUM: sum_by_p_id, + AggregationType.MEAN: mean_by_p_id, + AggregationType.MAX: max_by_p_id, + AggregationType.MIN: min_by_p_id, + AggregationType.ANY: any_by_p_id, + AggregationType.ALL: all_by_p_id, + AggregationType.COUNT: count_by_p_id, + } + + func = aggregation_registry.get(self.agg) + if func is None: + raise ValueError(f"Aggregation type {self.agg} not implemented") + + self._agg_func = func + + def agg_func(self, source, p_id_to_aggregate_by, p_id_to_store_by): + # Need to leave this interface in order for renaming of arguments to work. + return self._agg_func(source, p_id_to_aggregate_by, p_id_to_store_by) + + def mapper(self): + if self.agg == AggregationType.COUNT: + return { + "p_id_to_aggregate_by": self.p_id_to_aggregate_by, + "p_id_to_store_by": "p_id", + } + return { + "source": self.source, + "p_id_to_aggregate_by": self.p_id_to_aggregate_by, + "p_id_to_store_by": "p_id", + } def grouped_count(group_id): diff --git a/src/ttsim/combine_functions.py b/src/ttsim/combine_functions.py index 498040d841..aa98c4c17f 100644 --- a/src/ttsim/combine_functions.py +++ b/src/ttsim/combine_functions.py @@ -6,23 +6,17 @@ import dags import dags.tree as dt -from _gettsim.config import ( - SUPPORTED_GROUPINGS, - TYPES_INPUT_VARIABLES, -) from ttsim.aggregation import ( AggregateByGroupSpec, AggregateByPIDSpec, AggregationType, - all_by_p_id, - any_by_p_id, - count_by_p_id, - max_by_p_id, - mean_by_p_id, - min_by_p_id, - sum_by_p_id, ) -from ttsim.function_types import DerivedAggregationFunction, GroupByFunction +from ttsim.function_types import ( + DEFAULT_END_DATE, + DEFAULT_START_DATE, + DerivedAggregationFunction, + GroupByFunction, +) from ttsim.shared import ( format_errors_and_warnings, format_list_linewise, @@ -38,18 +32,21 @@ from ttsim.typing import ( QualNameAggregationSpecsDict, QualNameDataDict, - QualNameFunctionsDict, + QualNamePolicyInputDict, QualNameTargetList, + QualNameTTSIMFunctionDict, ) def combine_policy_functions_and_derived_functions( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, aggregation_specs_from_environment: QualNameAggregationSpecsDict, targets: QualNameTargetList, data: QualNameDataDict, + inputs: QualNamePolicyInputDict, top_level_namespace: set[str], -) -> QualNameFunctionsDict: + supported_groupings: tuple[str, ...], +) -> QualNameTTSIMFunctionDict: """Add derived functions to the qualified functions dict. Derived functions are time converted functions and aggregation functions (aggregate @@ -78,12 +75,14 @@ def combine_policy_functions_and_derived_functions( The qualified functions dict with derived functions. """ - # Create parent-child relationships + # Create parent-child relationships and similar. aggregate_by_p_id_functions = _create_aggregation_functions( functions=functions, + inputs=inputs, aggregation_functions_to_create=aggregation_specs_from_environment, top_level_namespace=top_level_namespace, aggregation_type="p_id", + supported_groupings=supported_groupings, ) current_functions = {**aggregate_by_p_id_functions, **functions} @@ -94,13 +93,15 @@ def combine_policy_functions_and_derived_functions( ) current_functions = {**time_conversion_functions, **current_functions} - # Create aggregation functions + # Create aggregation functions by group. aggregate_by_group_functions = _create_aggregate_by_group_functions( functions=current_functions, targets=targets, data=data, + inputs=inputs, aggregations_from_environment=aggregation_specs_from_environment, top_level_namespace=top_level_namespace, + supported_groupings=supported_groupings, ) current_functions = {**aggregate_by_group_functions, **current_functions} @@ -110,19 +111,24 @@ def combine_policy_functions_and_derived_functions( def _create_aggregate_by_group_functions( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, + inputs: QualNamePolicyInputDict, targets: QualNameTargetList, data: QualNameDataDict, aggregations_from_environment: QualNameAggregationSpecsDict, top_level_namespace: set[str], -) -> QualNameFunctionsDict: + supported_groupings: tuple[str, ...], +) -> QualNameTTSIMFunctionDict: """Create aggregation functions.""" # Create the aggregation functions that were explicitly specified. + aggregation_functions_from_environment = _create_aggregation_functions( functions=functions, + inputs=inputs, aggregation_functions_to_create=aggregations_from_environment, aggregation_type="group", top_level_namespace=top_level_namespace, + supported_groupings=supported_groupings, ) functions_with_aggregation_functions_from_environment = { @@ -136,12 +142,15 @@ def _create_aggregate_by_group_functions( targets=targets, data=data, top_level_namespace=top_level_namespace, + supported_groupings=supported_groupings, ) aggregation_functions_derived_from_names = _create_aggregation_functions( functions=functions_with_aggregation_functions_from_environment, + inputs=inputs, aggregation_functions_to_create=derived_aggregation_specs, aggregation_type="group", top_level_namespace=top_level_namespace, + supported_groupings=supported_groupings, ) return { **aggregation_functions_derived_from_names, @@ -150,11 +159,13 @@ def _create_aggregate_by_group_functions( def _create_aggregation_functions( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, + inputs: QualNamePolicyInputDict, aggregation_functions_to_create: QualNameAggregationSpecsDict, aggregation_type: Literal["group", "p_id"], top_level_namespace: set[str], -) -> QualNameFunctionsDict: + supported_groupings: tuple[str, ...], +) -> QualNameTTSIMFunctionDict: """Create aggregation functions for one aggregation type. Parameters @@ -186,54 +197,135 @@ def _create_aggregation_functions( ) aggregation_functions = {} - for target_name, aggregation_spec in aggregation_functions_to_create.items(): + for qual_name_target, aggregation_spec in aggregation_functions_to_create.items(): # Skip if aggregation spec is not the current aggregation type if not isinstance(aggregation_spec, expected_aggregation_spec_type): continue if aggregation_type == "group": group_by_id_name = get_name_of_group_by_id( - target_name=target_name, + target_name=qual_name_target, group_by_functions=group_by_functions, + supported_groupings=supported_groupings, ) - if not group_by_id_name: msg = format_errors_and_warnings( "Name of aggregated column needs to have a suffix " "indicating the group over which it is aggregated. " - f"{dt.tree_path_from_qual_name(target_name)} does not do so." + f"{dt.tree_path_from_qual_name(qual_name_target)} does not do so." ) raise ValueError(msg) - derived_func = _create_one_aggregate_by_group_func( - aggregation_target=target_name, - aggregation_spec=aggregation_spec, - group_by_id=group_by_id_name, - functions=functions, - top_level_namespace=top_level_namespace, - ) else: - derived_func = _create_one_aggregate_by_p_id_func( - aggregation_target=target_name, - aggregation_spec=aggregation_spec, - functions=functions, - top_level_namespace=top_level_namespace, - ) + group_by_id_name = None - aggregation_functions[target_name] = derived_func + derived_func = _create_one_aggregation_function( + aggregation_target=qual_name_target, + aggregation_spec=aggregation_spec, + aggregation_type=aggregation_type, + group_by_id=group_by_id_name, + functions=functions, + inputs=inputs, + top_level_namespace=top_level_namespace, + ) + if derived_func is not None: + aggregation_functions[qual_name_target] = derived_func return _annotate_aggregation_functions( functions=functions, + inputs=inputs, aggregation_functions=aggregation_functions, - types_input_variables=dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES), + ) + + +def _create_one_aggregation_function( + aggregation_target: str, + aggregation_spec: AggregateByGroupSpec | AggregateByPIDSpec, + aggregation_type: Literal["group", "p_id"], + group_by_id: str | None, + functions: QualNameTTSIMFunctionDict, + inputs: QualNamePolicyInputDict, + top_level_namespace: set[str], +) -> DerivedAggregationFunction | None: + """Create a single aggregation function. + + Parameters + ---------- + aggregation_target + The qualified name of the target column. + aggregation_spec + The aggregation specification. + aggregation_type + The type of aggregation ("group" or "p_id"). + group_by_id + The name of the group by id column. Only required for group aggregations. + functions + Dict with qualified function names as keys and functions as values. + inputs + Dict with qualified input names as keys and policy inputs as values. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The derived aggregation function. + """ + if aggregation_type == "group": + mapper = aggregation_spec.mapper(group_by_id) + else: + mapper = aggregation_spec.mapper() + + wrapped_func = dt.one_function_without_tree_logic( + function=dags.rename_arguments( + func=aggregation_spec.agg_func, + mapper=mapper, + ), + tree_path=dt.tree_path_from_qual_name(aggregation_target), + top_level_namespace=top_level_namespace, + ) + + qual_name_source = ( + _get_qual_name_of_source_col( + source=aggregation_spec.source, + wrapped_func=wrapped_func, + ) + if aggregation_spec.source + else None + ) + if qual_name_source in inputs: + start_date = inputs[qual_name_source].start_date + end_date = inputs[qual_name_source].end_date + elif qual_name_source in functions: + start_date = functions[qual_name_source].start_date + end_date = functions[qual_name_source].end_date + elif qual_name_source is None: + # Aggregation method is count + start_date = DEFAULT_START_DATE + end_date = DEFAULT_END_DATE + else: + start_date = DEFAULT_START_DATE + end_date = DEFAULT_END_DATE + # TODO(@MImmesberger): Once we filter the aggregations by start and end date, + # we should throw an error here. The qualified source name should be in either + # functions or inputs (or None if it is a count). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/870 + + return DerivedAggregationFunction( + leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], + function=wrapped_func, + source=qual_name_source, + aggregation_method=aggregation_spec.agg, + start_date=start_date, + end_date=end_date, ) def _create_derived_aggregations_specs( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, targets: QualNameTargetList, data: QualNameDataDict, top_level_namespace: set[str], + supported_groupings: tuple[str, ...], ) -> QualNameAggregationSpecsDict: """Create automatic aggregation specs derived from functions and data. @@ -282,13 +374,14 @@ def _create_derived_aggregations_specs( # Don't create aggregation functions for unsupported groupings or functions that # already exist in the source tree. aggregation_specs_needed = ( - any(target_name.endswith(f"_{g}") for g in SUPPORTED_GROUPINGS) + any(target_name.endswith(f"_{g}") for g in supported_groupings) and target_name not in aggregation_sources ) if aggregation_specs_needed: derived_aggregations_specs[target_name] = AggregateByGroupSpec( - aggr=AggregationType.SUM, + target=target_name, + agg=AggregationType.SUM, source=_get_name_of_aggregation_source( target_name=target_name, top_level_namespace=top_level_namespace, @@ -301,7 +394,7 @@ def _create_derived_aggregations_specs( def _get_potential_aggregation_function_names_from_function_arguments( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, ) -> set[str]: """Get potential aggregation function names from function arguments. @@ -333,177 +426,11 @@ def _select_return_type(aggregation_method: str, source_col_type: type) -> type: return return_type -def _create_one_aggregate_by_group_func( - aggregation_target: str, - aggregation_spec: AggregateByGroupSpec, - group_by_id: str, - functions: QualNameFunctionsDict, - top_level_namespace: set[str], -) -> DerivedAggregationFunction: - """Create an aggregation function based on aggregation specification. - - Parameters - ---------- - aggregation_target - Leaf name of the aggregation target. - aggregation_spec - The aggregation specification. - annotations - The annotations for the derived function. - group_by_id - The group-by-identifier. - functions - The functions dict with qualified function names as keys and functions as - values. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The derived function. - - """ - source = aggregation_spec.source - - wrapped_func = dt.one_function_without_tree_logic( - function=dags.rename_arguments( - func=aggregation_spec.agg_func, - mapper=aggregation_spec.mapper(group_by_id), - ), - tree_path=dt.tree_path_from_qual_name(aggregation_target), - top_level_namespace=top_level_namespace, - ) - - if isinstance(aggregation_spec, AggregateByGroupSpec): - qual_name_source = _get_qual_name_of_source_col( - source=source, - wrapped_func=wrapped_func, - ) - else: - qual_name_source = None - - return DerivedAggregationFunction( - function=wrapped_func, - source=qual_name_source, - source_function=functions.get(qual_name_source, None), - aggregation_target=aggregation_target, - aggregation_method=aggregation_spec.aggr, - ) - - -def _create_one_aggregate_by_p_id_func( - aggregation_target: str, - aggregation_spec: AggregateByPIDSpec, - functions: QualNameFunctionsDict, - top_level_namespace: set[str], -) -> DerivedAggregationFunction: - """Create one function that links variables across persons. - - Parameters - ---------- - aggregation_target - Name of the aggregation target. - aggregation_spec - The aggregation specification. - functions - The functions dict with qualified function names as keys and functions as - values. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The derived function. - - """ - aggregation_method = aggregation_spec.aggr - p_id_to_aggregate_by = aggregation_spec.p_id_to_aggregate_by - source = aggregation_spec.source if aggregation_method != "count" else None - - if aggregation_method == "count": - mapper = { - "p_id_to_aggregate_by": p_id_to_aggregate_by, - "p_id_to_store_by": "p_id", - } - - def agg_func(p_id_to_aggregate_by, p_id_to_store_by): - return count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) - - else: - mapper = { - "p_id_to_aggregate_by": p_id_to_aggregate_by, - "p_id_to_store_by": "p_id", - "column": source, - } - - if aggregation_method == "sum": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "mean": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "max": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "min": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "any": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - elif aggregation_method == "all": - - def agg_func(column, p_id_to_aggregate_by, p_id_to_store_by): - return all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by) - - else: - msg = format_errors_and_warnings( - f"Aggregation method {aggregation_method} is not implemented." - ) - raise ValueError(msg) - - wrapped_func = dt.one_function_without_tree_logic( - function=dags.rename_arguments( - func=agg_func, - mapper=mapper, - ), - tree_path=dt.tree_path_from_qual_name(aggregation_target), - top_level_namespace=top_level_namespace, - ) - - qual_name_source = ( - _get_qual_name_of_source_col( - source=source, - wrapped_func=wrapped_func, - ) - if source - else None - ) - - return DerivedAggregationFunction( - function=wrapped_func, - source=qual_name_source, - source_function=functions.get(qual_name_source, None), - aggregation_target=aggregation_target, - aggregation_method=aggregation_method, - ) - - def _annotate_aggregation_functions( - functions: QualNameFunctionsDict, - types_input_variables: dict[str, type], - aggregation_functions: QualNameFunctionsDict, -) -> QualNameFunctionsDict: + functions: QualNameTTSIMFunctionDict, + inputs: QualNamePolicyInputDict, + aggregation_functions: QualNameTTSIMFunctionDict, +) -> QualNameTTSIMFunctionDict: """Annotate aggregation functions. Add type annotations to the aggregation functions based on the type annotations of @@ -512,13 +439,12 @@ def _annotate_aggregation_functions( Parameters ---------- functions - Dict with qualified function names as keys and functions with qualified - arguments as values. + Map qualified function names to functions. + inputs + Map qualified input names to policy inputs. aggregation_functions Dict with qualified aggregation function names as keys and aggregation functions as values. - types_input_variables - Dict with qualified data names as keys and types as values. Returns ------- @@ -533,6 +459,11 @@ def _annotate_aggregation_functions( annotations = {} if aggregation_method == "count": annotations["return"] = int + elif source in inputs: + annotations[source] = inputs[source].data_type + annotations["return"] = _select_return_type( + aggregation_method, annotations[source] + ) elif source in functions: source_function = functions[source] if "return" in source_function.__annotations__: @@ -540,20 +471,11 @@ def _annotate_aggregation_functions( annotations["return"] = _select_return_type( aggregation_method, annotations[source] ) - else: - # TODO(@hmgaudecker): Think about how type annotations of aggregations - # of user-provided input variables are handled - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - pass - elif source in types_input_variables: - annotations[source] = types_input_variables[source] - annotations["return"] = _select_return_type( - aggregation_method, annotations[source] - ) else: - # TODO(@hmgaudecker): Think about how type annotations of aggregations of - # user-provided input variables are handled - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 + # TODO(@MImmesberger): Once we filter the aggregations by start and end + # date, we should throw an error here. The qualified source name should be + # in either functions or inputs (or None if it is a count). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/870 pass aggregation_function.__annotations__ = annotations @@ -563,7 +485,7 @@ def _annotate_aggregation_functions( def _fail_if_targets_not_in_functions( - functions: QualNameFunctionsDict, targets: QualNameTargetList + functions: QualNameTTSIMFunctionDict, targets: QualNameTargetList ) -> None: """Fail if some target is not among functions. diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index dde6ed624b..e9eec9e6c5 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -10,31 +10,30 @@ import networkx as nx import pandas as pd -from _gettsim.config import ( - DEFAULT_TARGETS, - FOREIGN_KEYS, - TYPES_INPUT_VARIABLES, -) from ttsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) from ttsim.config import numpy_or_jax as np from ttsim.function_types import ( DerivedAggregationFunction, - DerivedTimeConversionFunction, GroupByFunction, PolicyFunction, + PolicyInput, + TTSIMFunction, ) from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( + all_variations_of_base_name, assert_valid_ttsim_pytree, format_errors_and_warnings, format_list_linewise, get_name_of_group_by_id, get_names_of_arguments_without_defaults, + get_re_pattern_for_all_time_units_and_groupings, merge_trees, partition_by_reference_dict, ) +from ttsim.time_conversion import TIME_UNITS from ttsim.typing import ( check_series_has_expected_type, convert_series_to_internal_type, @@ -45,15 +44,18 @@ NestedDataDict, NestedTargetDict, QualNameDataDict, - QualNameFunctionsDict, + QualNamePolicyInputDict, QualNameTargetList, + QualNameTTSIMFunctionDict, ) def compute_taxes_and_transfers( data_tree: NestedDataDict, environment: PolicyEnvironment, - targets_tree: NestedTargetDict | None = None, + targets_tree: NestedTargetDict, + foreign_keys: tuple[tuple[str, ...], ...], + supported_groupings: tuple[str, ...], rounding: bool = True, debug: bool = False, ) -> NestedDataDict: @@ -66,8 +68,7 @@ def compute_taxes_and_transfers( environment: PolicyEnvironment The policy environment which contains all necessary functions and parameters. targets_tree : NestedTargetDict | None - The targets tree. By default, ``targets_tree`` is ``None`` and all key outputs - as defined by `gettsim.config.DEFAULT_TARGETS` are returned. + The targets tree. rounding : bool, default True Indicator for whether rounding should be applied as specified in the law. debug : bool @@ -80,8 +81,6 @@ def compute_taxes_and_transfers( The computed variables as a tree. """ - # Use default targets if no targets are provided. - targets_tree = targets_tree if targets_tree else DEFAULT_TARGETS # Check user inputs _fail_if_targets_tree_not_valid(targets_tree) @@ -89,19 +88,28 @@ def compute_taxes_and_transfers( _fail_if_environment_not_valid(environment) # Transform functions tree to qualified names dict with qualified arguments - top_level_namespace = ( - set(environment.functions_tree.keys()) - | set(data_tree.keys()) - | set(TYPES_INPUT_VARIABLES.keys()) - | set(environment.aggregation_specs_tree.keys()) - ) - functions = dt.functions_without_tree_logic( - functions=environment.functions_tree, top_level_namespace=top_level_namespace + top_level_namespace = _get_top_level_namespace( + environment=environment, + supported_time_conversions=tuple(TIME_UNITS.keys()), + supported_groupings=supported_groupings, ) - + # Flatten nested objects to qualified names targets = dt.qual_names(targets_tree) data = dt.flatten_to_qual_names(data_tree) aggregation_specs = dt.flatten_to_qual_names(environment.aggregation_specs_tree) + functions: QualNameTTSIMFunctionDict = {} + inputs: QualNamePolicyInputDict = {} + for name, f_or_i in dt.flatten_to_qual_names(environment.raw_objects_tree).items(): + if isinstance(f_or_i, TTSIMFunction): + functions[name] = dt.one_function_without_tree_logic( + function=f_or_i, + tree_path=dt.tree_path_from_qual_name(name), + top_level_namespace=top_level_namespace, + ) + elif isinstance(f_or_i, PolicyInput): + inputs[name] = f_or_i + else: + raise ValueError(f"Unknown type: {type(f_or_i)}") # Add derived functions to the qualified functions tree. functions = combine_policy_functions_and_derived_functions( @@ -109,24 +117,26 @@ def compute_taxes_and_transfers( aggregation_specs_from_environment=aggregation_specs, targets=targets, data=data, + inputs=inputs, top_level_namespace=top_level_namespace, + supported_groupings=supported_groupings, ) - functions_overridden, functions_not_overridden = partition_by_reference_dict( + functions_overridden, functions_to_be_used = partition_by_reference_dict( to_partition=functions, reference_dict=data, ) _warn_if_functions_overridden_by_data(functions_overridden) - data_with_correct_types = _convert_data_to_correct_types( - data=data, - functions_overridden=functions_overridden, - ) + # data_with_correct_types = _convert_data_to_correct_types( + # data=data, + # functions_overridden=functions_overridden, + # ) functions_with_rounding_specs = ( - _add_rounding_to_functions(functions=functions_not_overridden) + _add_rounding_to_functions(functions=functions_to_be_used) if rounding - else functions_not_overridden + else functions_to_be_used ) functions_with_partialled_parameters = _partial_parameters_to_functions( functions=functions_with_rounding_specs, @@ -135,7 +145,7 @@ def compute_taxes_and_transfers( # Remove unnecessary elements from user-provided data. input_data = _create_input_data_for_concatenated_function( - data=data_with_correct_types, + data=data, functions=functions_with_partialled_parameters, targets=targets, ) @@ -143,10 +153,12 @@ def compute_taxes_and_transfers( _fail_if_group_variables_not_constant_within_groups( data=input_data, functions=functions, + supported_groupings=supported_groupings, ) _fail_if_foreign_keys_are_invalid( data=input_data, p_id=data.get("p_id", None), + foreign_keys=foreign_keys, ) tax_transfer_function = dags.concatenate_functions( @@ -170,8 +182,50 @@ def compute_taxes_and_transfers( return result_tree +def _get_top_level_namespace( + environment: PolicyEnvironment, + supported_time_conversions: tuple[str, ...], + supported_groupings: tuple[str, ...], +) -> set[str]: + """Get the top level namespace. + + Parameters + ---------- + environment: + The policy environment. + + Returns + ------- + top_level_namespace: + The top level namespace. + """ + direct_top_level_names = set(environment.raw_objects_tree.keys()) | set( + environment.aggregation_specs_tree.keys() + ) + re_pattern = get_re_pattern_for_all_time_units_and_groupings( + supported_groupings=supported_groupings, + supported_time_units=supported_time_conversions, + ) + + all_top_level_names = set() + for name in direct_top_level_names: + match = re_pattern.fullmatch(name) + base_name = match.group("base_name") + create_conversions_for_time_units = bool(match.group("time_unit")) + + all_top_level_names_for_name = all_variations_of_base_name( + base_name=base_name, + supported_time_conversions=supported_time_conversions, + supported_groupings=supported_groupings, + create_conversions_for_time_units=create_conversions_for_time_units, + ) + all_top_level_names.update(all_top_level_names_for_name) + + return all_top_level_names + + def _convert_data_to_correct_types( - data: QualNameDataDict, functions_overridden: QualNameFunctionsDict + data: QualNameDataDict, functions_overridden: QualNameTTSIMFunctionDict ) -> QualNameDataDict: """Convert all data columns to the type that is expected by GETTSIM. @@ -279,7 +333,7 @@ def _convert_data_to_correct_types( def _create_input_data_for_concatenated_function( data: QualNameDataDict, - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, targets: QualNameTargetList, ) -> QualNameDataDict: """Create input data for the concatenated function. @@ -322,9 +376,9 @@ def _create_input_data_for_concatenated_function( def _partial_parameters_to_functions( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, params: dict[str, Any], -) -> QualNameFunctionsDict: +) -> QualNameTTSIMFunctionDict: """Round and partial parameters into functions. Parameters @@ -361,8 +415,8 @@ def _partial_parameters_to_functions( def _add_rounding_to_functions( - functions: QualNameFunctionsDict, -) -> QualNameFunctionsDict: + functions: QualNameTTSIMFunctionDict, +) -> QualNameTTSIMFunctionDict: """Add appropriate rounding of outputs to function. Parameters @@ -414,12 +468,13 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: leaf_checker=lambda leaf: isinstance(leaf, pd.Series | np.ndarray), tree_name="data_tree", ) - _fail_if_pid_is_non_unique(data_tree) + _fail_if_p_id_is_non_unique(data_tree) def _fail_if_group_variables_not_constant_within_groups( data: QualNameDataDict, - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, + supported_groupings: tuple[str, ...], ) -> None: """ Check that group variables are constant within each group. @@ -446,6 +501,7 @@ def _fail_if_group_variables_not_constant_within_groups( group_by_id = get_name_of_group_by_id( target_name=name, group_by_functions=group_by_functions, + supported_groupings=supported_groupings, ) if group_by_id in data: group_by_id_series = pd.Series(data[group_by_id]) @@ -470,7 +526,7 @@ def _fail_if_group_variables_not_constant_within_groups( raise ValueError(msg) -def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: +def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: """Check that pid is unique.""" p_id = data_tree.get("p_id", None) if p_id is None: @@ -496,6 +552,7 @@ def _fail_if_pid_is_non_unique(data_tree: NestedDataDict) -> None: def _fail_if_foreign_keys_are_invalid( data: QualNameDataDict, p_id: pd.Series, + foreign_keys: tuple[tuple[str, ...], ...], ) -> None: """ Check that all foreign keys are valid. @@ -506,7 +563,7 @@ def _fail_if_foreign_keys_are_invalid( valid_ids = set(p_id) | {-1} for name, data_column in data.items(): - foreign_key_col = dt.tree_path_from_qual_name(name) in FOREIGN_KEYS + foreign_key_col = dt.tree_path_from_qual_name(name) in foreign_keys path = dt.tree_path_from_qual_name(name) if not foreign_key_col: continue @@ -533,7 +590,7 @@ def _fail_if_foreign_keys_are_invalid( def _warn_if_functions_overridden_by_data( - functions_overridden: QualNameFunctionsDict, + functions_overridden: QualNameTTSIMFunctionDict, ) -> None: """Warn if functions are overridden by data.""" if len(functions_overridden) > 0: @@ -598,7 +655,7 @@ def __init__(self, columns_overriding_functions: set[str]) -> None: def _fail_if_root_nodes_are_missing( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, data: QualNameDataDict, root_nodes: list[str], ) -> None: @@ -637,15 +694,14 @@ def _fail_if_root_nodes_are_missing( missing_nodes.append(str(node)) if missing_nodes: - formatted = format_list_linewise(missing_nodes) + formatted = format_list_linewise( + [str(dt.tree_path_from_qual_name(mn)) for mn in missing_nodes] + ) raise ValueError(f"The following data columns are missing.\n{formatted}") def _func_depends_on_parameters_only( - func: PolicyFunction - | DerivedAggregationFunction - | DerivedTimeConversionFunction - | GroupByFunction, + func: TTSIMFunction, ) -> bool: """Check if a function depends on parameters only.""" return ( diff --git a/src/ttsim/function_types.py b/src/ttsim/function_types.py index b7600dd09b..28f4222b7b 100644 --- a/src/ttsim/function_types.py +++ b/src/ttsim/function_types.py @@ -3,30 +3,133 @@ import datetime import functools import inspect -import re -from collections.abc import Callable -from typing import Literal, TypeVar +from dataclasses import dataclass +from typing import TYPE_CHECKING, Literal, TypeVar -import dags.tree as dt import numpy from ttsim.rounding import RoundingSpec +from ttsim.shared import validate_dashed_iso_date, validate_date_range + +if TYPE_CHECKING: + from collections.abc import Callable T = TypeVar("T") +DEFAULT_START_DATE = datetime.date(1900, 1, 1) +DEFAULT_END_DATE = datetime.date(2100, 12, 31) + + +@dataclass +class TTSIMObject: + """ + Abstract base class for all TTSIM Functions and Inputs. + """ + + leaf_name: str + start_date: datetime.date + end_date: datetime.date + + def is_active(self, date: datetime.date) -> bool: + """Check if the function is active at a given date.""" + return self.start_date <= date <= self.end_date + + +@dataclass +class PolicyInput(TTSIMObject): + """ + A dummy function representing an input variable. + + Parameters + ---------- + data_type: + The data type of the input variable. + start_date: + The date from which the input is relevant / active (inclusive). + end_date: + The date until which the input is relevant / active (inclusive). + """ + + data_type: type[float | int | bool] + + +def policy_input( + *, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, +) -> PolicyInput: + """ + Decorator that makes a (dummy) function a `PolicyInput`. + + **Dates active (start_date, end_date):** + + Specifies that a PolicyInput is only active between two dates, `start` and `end`. + + **Rounding spec (params_key_for_rounding):** + + Adds the location of the rounding specification to a PolicyInput. + + Parameters + ---------- + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + + Returns + ------- + A PolicyInput object. + """ + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + def inner(func: Callable) -> PolicyInput: + data_type = func.__annotations__["return"] + return PolicyInput( + leaf_name=func.__name__, + data_type=data_type, + start_date=start_date, + end_date=end_date, + ) + + return inner + + +@dataclass +class TTSIMFunction(TTSIMObject): + """ + Base class for all TTSIM functions. + """ + + function: Callable + skip_vectorization: bool = False + + def __call__(self, *args, **kwargs): + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> set[str]: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + @property + def original_function_name(self) -> str: + """The name of the wrapped function.""" + return self.function.__name__ -class PolicyFunction(Callable): + +@dataclass +class PolicyFunction(TTSIMFunction): """ A function that computes an output vector based on some input vectors and/or parameters. Parameters ---------- + leaf_name: + The leaf name of the function in the functions tree. function: The function to wrap. Argument values of the `@policy_function` are reused unless explicitly overwritten. - leaf_name: - The leaf name of the function in the functions tree. start_date: The date from which the function is active (inclusive). end_date: @@ -37,30 +140,18 @@ class PolicyFunction(Callable): Whether the function should be vectorized. """ - def __init__( # noqa: PLR0913 - self, - *, - function: Callable, - leaf_name: str, - start_date: datetime.date, - end_date: datetime.date, - rounding_spec: RoundingSpec | None, - skip_vectorization: bool | None, - ): - self.skip_vectorization: bool = skip_vectorization + rounding_spec: RoundingSpec | None = None + + def __post_init__(self): + self._fail_if_rounding_has_wrong_type(self.rounding_spec) self.function = ( - function if self.skip_vectorization else _vectorize_func(function) + self.function if self.skip_vectorization else _vectorize_func(self.function) ) - self.leaf_name: str = leaf_name if leaf_name else function.__name__ - self.start_date: datetime.date = start_date - self.end_date: datetime.date = end_date - self._fail_if_rounding_has_wrong_type(rounding_spec) - self.rounding_spec: RoundingSpec | None = rounding_spec # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = function.__annotations__ - self.__module__ = function.__module__ - self.__name__ = function.__name__ + self.__annotations__ = self.function.__annotations__ + self.__module__ = self.function.__module__ + self.__name__ = self.function.__name__ self.__signature__ = inspect.signature(self.function) def _fail_if_rounding_has_wrong_type( @@ -102,9 +193,9 @@ def is_active(self, date: datetime.date) -> bool: def policy_function( *, - start_date: str | datetime.date = "1900-01-01", - end_date: str | datetime.date = "2100-12-31", leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, rounding_spec: RoundingSpec | None = None, skip_vectorization: bool = False, ) -> PolicyFunction: @@ -127,13 +218,13 @@ def policy_function( Parameters ---------- + leaf_name + The name that should be used as the PolicyFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. start_date The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). end_date The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - leaf_name - The name that should be used as the PolicyFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. rounding_spec The specification to be used for rounding. skip_vectorization @@ -145,18 +236,12 @@ def policy_function( A PolicyFunction object. """ - _validate_dashed_iso_date(start_date) - _validate_dashed_iso_date(end_date) - - start_date = datetime.date.fromisoformat(start_date) - end_date = datetime.date.fromisoformat(end_date) - - _validate_date_range(start_date, end_date) + start_date, end_date = _convert_and_validate_dates(start_date, end_date) def inner(func: Callable) -> PolicyFunction: return PolicyFunction( - function=func, leaf_name=leaf_name if leaf_name else func.__name__, + function=func, start_date=start_date, end_date=end_date, rounding_spec=rounding_spec, @@ -166,19 +251,6 @@ def inner(func: Callable) -> PolicyFunction: return inner -_DASHED_ISO_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") - - -def _validate_dashed_iso_date(date: str | datetime.date): - if not _DASHED_ISO_DATE.match(date): - raise ValueError(f"Date {date} does not match the format YYYY-MM-DD.") - - -def _validate_date_range(start: datetime.date, end: datetime.date): - if start > end: - raise ValueError(f"The start date {start} must be before the end date {end}.") - - def _vectorize_func(func: Callable) -> Callable: # What should work once that Jax backend is fully supported signature = inspect.signature(func) @@ -193,130 +265,163 @@ def wrapper_vectorize_func(*args, **kwargs): return wrapper_vectorize_func -class GroupByFunction(Callable): +@dataclass +class GroupByFunction(TTSIMFunction): """ A function that computes endogenous group_by IDs. Parameters ---------- + leaf_name: + The leaf name of the function in the functions tree. function: - The group_by function. + The function calculating the group_by IDs. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). """ - def __init__( - self, - *, - function: Callable, - leaf_name: str | None = None, - ): - self.function = function - self.leaf_name = leaf_name if leaf_name else function.__name__ - + def __post_init__(self): # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = function.__annotations__ - self.__module__ = function.__module__ - self.__name__ = function.__name__ + self.__annotations__ = self.function.__annotations__ + self.__module__ = self.function.__module__ + self.__name__ = self.function.__name__ self.__signature__ = inspect.signature(self.function) - def __call__(self, *args, **kwargs): - return self.function(*args, **kwargs) - @property def dependencies(self) -> set[str]: """The names of input variables that the function depends on.""" return set(inspect.signature(self).parameters) -def group_by_function() -> GroupByFunction: +def group_by_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, +) -> GroupByFunction: """ Decorator that creates a group_by function from a function. """ + start_date, end_date = _convert_and_validate_dates(start_date, end_date) def decorator(func: Callable) -> GroupByFunction: - return GroupByFunction(function=func) + _leaf_name = func.__name__ if leaf_name is None else leaf_name + return GroupByFunction( + leaf_name=_leaf_name, + function=func, + start_date=start_date, + end_date=end_date, + ) return decorator -class DerivedAggregationFunction(PolicyFunction): +@dataclass +class DerivedAggregationFunction(TTSIMFunction): """ A function that is an aggregation of another function. Parameters ---------- + leaf_name: + The leaf name of the function in the functions tree. function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - aggregation_target: - The qualified name of the aggregation target. - source_function: - The function from which the new function is derived. + The function performing the aggregation. source: The name of the source function or data column. aggregation_method: The method of aggregation used. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + params_key_for_rounding: + The key in the params dictionary that should be used for rounding. + skip_vectorization: + Whether the function should be vectorized. """ - def __init__( - self, - *, - function: Callable, - source_function: PolicyFunction - | DerivedTimeConversionFunction - | DerivedAggregationFunction - | None = None, - source: str, - aggregation_target: str, - aggregation_method: Literal["count", "sum", "mean", "min", "max", "any", "all"], - ): - super().__init__( - function=function, - leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], - start_date=source_function.start_date if source_function else None, - end_date=source_function.end_date if source_function else None, - rounding_spec=None, - skip_vectorization=True, - ) + source: str | None = None + aggregation_method: ( + Literal["count", "sum", "mean", "min", "max", "any", "all"] | None + ) = None - self.source = source - self.aggregation_method = aggregation_method + def __post_init__(self): + if self.aggregation_method is None: + raise ValueError("The aggregation method must be specified.") + if self.source is None and self.aggregation_method != "count": + raise ValueError("The source must be specified.") + + # Expose the signature of the wrapped function for dependency resolution + self.__annotations__ = self.function.__annotations__ + self.__module__ = self.function.__module__ + self.__name__ = self.function.__name__ + self.__signature__ = inspect.signature(self.function) -class DerivedTimeConversionFunction(PolicyFunction): +@dataclass +class DerivedTimeConversionFunction(TTSIMFunction): """ A function that is a time conversion of another function. Parameters ---------- + leaf_name: + The leaf name of the function in the functions tree. function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - source_function: - The function from which the new function is derived. + The function performing the time conversion. source: The name of the source function or data column. - conversion_target: - The qualified name of the conversion target. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + params_key_for_rounding: + The key in the params dictionary that should be used for rounding. + skip_vectorization: + Whether the function should be vectorized. """ - def __init__( - self, - *, - function: Callable, - source_function: PolicyFunction - | DerivedTimeConversionFunction - | DerivedAggregationFunction - | None = None, - source: str, - conversion_target: str, - ): - super().__init__( - function=function, - leaf_name=dt.tree_path_from_qual_name(conversion_target)[-1], - start_date=source_function.start_date if source_function else None, - end_date=source_function.end_date if source_function else None, - rounding_spec=None, - skip_vectorization=True, - ) + source: str | None = None + + def __post_init__(self): + if self.source is None: + raise ValueError("The source must be specified.") + + # Expose the signature of the wrapped function for dependency resolution + self.__annotations__ = self.function.__annotations__ + self.__module__ = self.function.__module__ + self.__name__ = self.function.__name__ + self.__signature__ = inspect.signature(self.function) + + +def _convert_and_validate_dates( + start_date: str | datetime.date, + end_date: str | datetime.date, +) -> tuple[datetime.date, datetime.date]: + """Convert and validate date strings to datetime.date objects. + + Parameters + ---------- + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + + Returns + ------- + tuple[datetime.date, datetime.date] + The converted and validated start and end dates. + """ + if isinstance(start_date, str): + validate_dashed_iso_date(start_date) + start_date = datetime.date.fromisoformat(start_date) + if isinstance(end_date, str): + validate_dashed_iso_date(end_date) + end_date = datetime.date.fromisoformat(end_date) + + validate_date_range(start_date, end_date) - self.source = source + return start_date, end_date diff --git a/src/ttsim/loader.py b/src/ttsim/loader.py index 2bf71da4f4..0751f6e682 100644 --- a/src/ttsim/loader.py +++ b/src/ttsim/loader.py @@ -7,7 +7,7 @@ from typing import TYPE_CHECKING from _gettsim.config import RESOURCE_DIR -from ttsim.function_types import GroupByFunction, PolicyFunction +from ttsim.function_types import TTSIMFunction, TTSIMObject from ttsim.shared import ( create_tree_from_path_and_value, insert_path_and_value, @@ -20,50 +20,51 @@ from types import ModuleType from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec - from ttsim.typing import NestedAggregationSpecDict, NestedFunctionDict + from ttsim.typing import ( + NestedAggregationSpecDict, + NestedTTSIMObjectDict, + ) -def load_functions_tree_for_date(date: datetime.date) -> NestedFunctionDict: +def load_objects_tree_for_date( + resource_dir: Path, date: datetime.date +) -> NestedTTSIMObjectDict: """ - Load the functions tree for a given date. - - This function takes the list of root paths and searches for all modules containing - PolicyFunctions. Then it loads all PolicyFunctions that are active at the given date - and constructs the functions tree. - - Namespaces are at the directory level. + Traverse `resource_dir` and return all TTSIMObjects for a given date. Parameters ---------- + resource_dir: + The directory to traverse. date: - The date for which policy functions should be loaded. + The date for which policy objects should be loaded. Returns ------- - A tree of active PolicyFunctions. + A tree of active TTSIMObjects. """ - paths_to_functions = _find_python_files_recursively(RESOURCE_DIR) + paths_to_objects = _find_python_files_recursively(resource_dir) - functions_tree = {} + objects_tree = {} - for path in paths_to_functions: - new_functions_tree = get_active_functions_tree_from_module( - path=path, date=date, root_path=RESOURCE_DIR + for path in paths_to_objects: + new_objects_tree = get_active_ttsim_objects_tree_from_module( + path=path, date=date, root_path=resource_dir ) - functions_tree = merge_trees( - left=functions_tree, - right=new_functions_tree, + objects_tree = merge_trees( + left=objects_tree, + right=new_objects_tree, ) - return functions_tree + return objects_tree -def get_active_functions_tree_from_module( +def get_active_ttsim_objects_tree_from_module( path: Path, root_path: Path, date: datetime.date, -) -> dict[str, PolicyFunction | GroupByFunction]: +) -> dict[str, TTSIMFunction]: """Extract all active PolicyFunctions and GroupByFunctions from a module. Parameters @@ -80,68 +81,60 @@ def get_active_functions_tree_from_module( The tree of active PolicyFunctions and GroupByFunctions. """ module = _load_module(path, root_path) - module_name = _convert_path_to_importable_module_name(path, root_path) - - all_functions_in_module = inspect.getmembers(module) - policy_functions = [ - func for _, func in all_functions_in_module if isinstance(func, PolicyFunction) + ttsim_objects = [ + func for _, func in inspect.getmembers(module) if isinstance(func, TTSIMObject) ] - _fail_if_multiple_policy_functions_are_active_at_the_same_time( - policy_functions, module_name + _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + ttsim_objects, + module_name=root_path / path, ) - active_policy_functions = { - func.leaf_name: func for func in policy_functions if func.is_active(date) - } - - group_by_functions = { - func.leaf_name: func - for _, func in all_functions_in_module - if isinstance(func, GroupByFunction) + active_ttsim_functions = { + func.leaf_name: func for func in ttsim_objects if func.is_active(date) } return create_tree_from_path_and_value( path=_convert_path_to_tree_path(path=path, root_path=root_path), - value={**active_policy_functions, **group_by_functions}, + value=active_ttsim_functions, ) -def _fail_if_multiple_policy_functions_are_active_at_the_same_time( - policy_functions: list[PolicyFunction], +def _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + ttsim_objects: list[TTSIMObject], module_name: str, ) -> None: - """Raises an ConflictingTimeDependentFunctionsError if multiple functions with the + """Raises an ConflictingTimeDependentObjectsError if multiple objects with the same leaf name are active at the same time. Parameters ---------- - policy_functions - List of PolicyFunctions to check for conflicts. + ttsim_objects + List of TTSIMObjects to check for conflicts. module_name - The name of the module from which the PolicyFunctions are extracted. + The name of the module from which the TTSIMObjects are extracted. Raises ------ - ConflictingTimeDependentFunctionsError - If multiple functions with the same name are active at the same time. + ConflictingTimeDependentObjectsError + If multiple objects with the same leaf name are active at the same time. """ - # Create mapping from leaf names to functions. - leaf_names_to_funcs = {} - for func in policy_functions: - if func.leaf_name in leaf_names_to_funcs: - leaf_names_to_funcs[func.leaf_name].append(func) + # Create mapping from leaf names to objects. + leaf_names_to_objects = {} + for obj in ttsim_objects: + if obj.leaf_name in leaf_names_to_objects: + leaf_names_to_objects[obj.leaf_name].append(obj) else: - leaf_names_to_funcs[func.leaf_name] = [func] + leaf_names_to_objects[obj.leaf_name] = [obj] # Check for overlapping start and end dates for time-dependent functions. - for leaf_name, funcs in leaf_names_to_funcs.items(): - dates_active = [(f.start_date, f.end_date) for f in funcs] + for leaf_name, objects in leaf_names_to_objects.items(): + dates_active = [(f.start_date, f.end_date) for f in objects] for (start1, end1), (start2, end2) in itertools.combinations(dates_active, 2): if start1 <= end2 and start2 <= end1: - raise ConflictingTimeDependentFunctionsError( - affected_policy_functions=funcs, + raise ConflictingTimeDependentObjectsError( + affected_ttsim_objects=objects, leaf_name=leaf_name, module_name=module_name, overlap_start=max(start1, start2), @@ -149,29 +142,31 @@ def _fail_if_multiple_policy_functions_are_active_at_the_same_time( ) -class ConflictingTimeDependentFunctionsError(Exception): +class ConflictingTimeDependentObjectsError(Exception): def __init__( self, - affected_policy_functions: list[PolicyFunction], + affected_ttsim_objects: list[TTSIMObject], leaf_name: str, module_name: str, overlap_start: datetime.date, overlap_end: datetime.date, ): - self.affected_policy_functions = affected_policy_functions + self.affected_ttsim_objects = affected_ttsim_objects self.leaf_name = leaf_name self.module_name = module_name self.overlap_start = overlap_start self.overlap_end = overlap_end def __str__(self): - overlapping_functions = [ - func.original_function_name for func in self.affected_policy_functions + overlapping_objects = [ + obj.__getattribute__("original_function_name", obj.leaf_name) + for obj in self.affected_ttsim_objects + if obj ] return f""" Functions with leaf name {self.leaf_name} in module {self.module_name} have overlapping start and end dates. The following functions are affected: \n\n - {", ".join(overlapping_functions)} \n Overlapping + {", ".join(overlapping_objects)} \n Overlapping from {self.overlap_start} to {self.overlap_end}.""" @@ -192,30 +187,18 @@ def _find_python_files_recursively(root_path: Path) -> list[Path]: def _load_module(path: Path, root_path: Path) -> ModuleType: - module_name = _convert_path_to_importable_module_name(path, root_path) - spec = importlib.util.spec_from_file_location(module_name, path) + name = path.relative_to(root_path).with_suffix("").as_posix().replace("/", ".") + spec = importlib.util.spec_from_file_location( + name=name, + location=path, + ) module = importlib.util.module_from_spec(spec) - sys.modules[module_name] = module + sys.modules[name] = module spec.loader.exec_module(module) return module -def _convert_path_to_importable_module_name(path: Path, root_path: Path) -> str: - """ - Convert an absolute path to a Python module name. - - Examples - -------- - >>> _convert_path_to_importable_module_name( - path=Path("/usr/gettsim/src/_gettsim/familie/familie.py"), - root_path=Path("/usr/gettsim/src/_gettsim"), - ) - "familie.familie" - """ - return path.relative_to(root_path).with_suffix("").as_posix().replace("/", ".") - - def _convert_path_to_tree_path(path: Path, root_path: Path) -> tuple[str, ...]: """ Convert the path from the package root to a tree path. @@ -299,4 +282,5 @@ def _load_aggregation_specs_from_module( Loaded dictionaries. """ module = _load_module(path, root_path) - return getattr(module, "aggregation_specs", {}) + aggregation_specs = getattr(module, "aggregation_specs", ()) + return {a_s.target: a_s for a_s in aggregation_specs} diff --git a/src/ttsim/piecewise_polynomial.py b/src/ttsim/piecewise_polynomial.py index 8f7675f02b..a700aacc08 100644 --- a/src/ttsim/piecewise_polynomial.py +++ b/src/ttsim/piecewise_polynomial.py @@ -251,7 +251,7 @@ def _check_rates(parameter_dict, parameter, keys, func_type): return rates -def _check_intercepts( # noqa: PLR0913 +def _check_intercepts( parameter_dict, parameter, lower_thresholds, upper_thresholds, rates, keys ): """Check and transfer raw intercepte data. If necessary create intercepts. diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index c800588094..864ece8def 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -15,13 +15,12 @@ RESOURCE_DIR, ) from ttsim.function_types import ( - GroupByFunction, - PolicyFunction, + TTSIMObject, policy_function, ) from ttsim.loader import ( load_aggregation_specs_tree, - load_functions_tree_for_date, + load_objects_tree_for_date, ) from ttsim.piecewise_polynomial import ( _check_thresholds, @@ -35,9 +34,13 @@ ) if TYPE_CHECKING: + from collections.abc import Callable from pathlib import Path - from ttsim.typing import NestedAggregationSpecDict, NestedFunctionDict + from ttsim.typing import ( + NestedAggregationSpecDict, + NestedTTSIMObjectDict, + ) class PolicyEnvironment: @@ -61,21 +64,19 @@ class PolicyEnvironment: def __init__( self, - functions_tree: NestedFunctionDict, + raw_objects_tree: NestedTTSIMObjectDict, params: dict[str, Any] | None = None, aggregation_specs_tree: NestedAggregationSpecDict | None = None, ): # Check functions tree and convert functions to PolicyFunction if necessary assert_valid_ttsim_pytree( - functions_tree, - lambda leaf: isinstance(leaf, PolicyFunction | GroupByFunction), - "functions_tree", + tree=raw_objects_tree, + leaf_checker=lambda leaf: isinstance(leaf, TTSIMObject), + tree_name="raw_objects_tree", ) - self._functions_tree = optree.tree_map( - lambda leaf: leaf - if isinstance(leaf, GroupByFunction) - else _convert_function_to_policy_function(leaf), - functions_tree, + self._raw_objects_tree = optree.tree_map( + lambda leaf: _convert_to_policy_function_if_not_ttsim_object(leaf), + raw_objects_tree, ) # Read in parameters and aggregation specs @@ -85,9 +86,12 @@ def __init__( ) @property - def functions_tree(self) -> NestedFunctionDict: - """The policy functions. Does not include aggregations or time conversions.""" - return self._functions_tree + def raw_objects_tree(self) -> NestedTTSIMObjectDict: + """The raw TTSIM objects including policy_inputs. + + Does not include aggregations or time conversions. + """ + return self._raw_objects_tree @property def params(self) -> dict[str, Any]: @@ -102,46 +106,40 @@ def aggregation_specs_tree(self) -> NestedAggregationSpecDict: """ return self._aggregation_specs_tree - def upsert_policy_functions( - self, functions_tree_to_upsert: NestedFunctionDict + def upsert_objects( + self, tree_to_upsert: NestedTTSIMObjectDict ) -> PolicyEnvironment: - """Upsert GETTSIM's function tree with (parts of) a new function tree. + """Upsert GETTSIM's function tree with (parts of) a new TTSIM objects tree. - Adds to or overwrites functions of the policy environment. Note that this + Adds to or overwrites TTSIM objects of the policy environment. Note that this method does not modify the current policy environment but returns a new one. Parameters ---------- - functions_tree + tree_to_upsert The functions to add or overwrite. Returns ------- - The policy environment with the new functions. + The policy environment with the upserted functions. """ - new_functions_tree = {} - # Add old functions tree to new functions tree - new_functions_tree = {**self._functions_tree} - - functions_tree_to_upsert = optree.tree_map( - lambda leaf: leaf - if isinstance(leaf, GroupByFunction) - else _convert_function_to_policy_function(leaf), - functions_tree_to_upsert, + tree_to_upsert_with_correct_types = optree.tree_map( + lambda leaf: _convert_to_policy_function_if_not_ttsim_object(leaf), + tree_to_upsert, ) _fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree_to_upsert + tree_to_upsert_with_correct_types ) # Add functions tree to upsert to new functions tree - new_functions_tree = upsert_tree( - base=new_functions_tree, - to_upsert=functions_tree_to_upsert, + new_tree = upsert_tree( + base={**self._raw_objects_tree}, + to_upsert=tree_to_upsert_with_correct_types, ) result = object.__new__(PolicyEnvironment) - result._functions_tree = new_functions_tree # noqa: SLF001 + result._raw_objects_tree = new_tree # noqa: SLF001 result._params = self._params # noqa: SLF001 result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 @@ -162,19 +160,23 @@ def replace_all_parameters(self, params: dict[str, Any]): The policy environment with the new parameters. """ result = object.__new__(PolicyEnvironment) - result._functions_tree = self._functions_tree # noqa: SLF001 + result._raw_objects_tree = self._raw_objects_tree # noqa: SLF001 result._params = params # noqa: SLF001 result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 return result -def set_up_policy_environment(date: datetime.date | str | int) -> PolicyEnvironment: +def set_up_policy_environment( + resource_dir: Path, date: datetime.date | str | int +) -> PolicyEnvironment: """ Set up the policy environment for a particular date. Parameters ---------- + resource_dir + The directory to load the policy environment from. date The date for which the policy system is set up. An integer is interpreted as the year. @@ -186,7 +188,7 @@ def set_up_policy_environment(date: datetime.date | str | int) -> PolicyEnvironm # Check policy date for correct format and convert to datetime.date date = _parse_date(date) - functions_tree = load_functions_tree_for_date(date) + functions_tree = load_objects_tree_for_date(resource_dir=resource_dir, date=date) params = {} for group in INTERNAL_PARAMS_GROUPS: @@ -228,28 +230,30 @@ def _parse_date(date: datetime.date | str | int) -> datetime.date: return date -def _convert_function_to_policy_function( - function: callable, -) -> PolicyFunction | GroupByFunction: - """Convert a function to a PolicyFunction. +def _convert_to_policy_function_if_not_ttsim_object( + input_object: Callable | TTSIMObject, +) -> TTSIMObject: + """Convert an object to a PolicyFunction if it is not already a TTSIMObject. Parameters ---------- - function - The function to convert. + input_object + The object to convert. Returns ------- - function - The converted function. + converted_object + The converted object. """ - if isinstance(function, PolicyFunction | GroupByFunction): - converted_function = function + if isinstance(input_object, TTSIMObject): + converted_object = input_object else: - converted_function = policy_function(leaf_name=function.__name__)(function) + converted_object = policy_function(leaf_name=input_object.__name__)( + input_object + ) - return converted_function + return converted_object def _parse_piecewise_parameters(tax_data): @@ -624,7 +628,7 @@ def transfer_dictionary(remaining_dict, new_dict, key_list): def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedFunctionDict, + functions_tree: NestedTTSIMObjectDict, ) -> None: """Raise error if a PolicyFunction does not have the same leaf name as the last branch element of the tree path. diff --git a/src/ttsim/rounding.py b/src/ttsim/rounding.py index a32bddb286..3d39621cc6 100644 --- a/src/ttsim/rounding.py +++ b/src/ttsim/rounding.py @@ -2,25 +2,17 @@ import functools from dataclasses import dataclass -from enum import StrEnum +from typing import Literal, get_args import numpy as np - -class RoundingDirection(StrEnum): - """ - Enum for the rounding direction. - """ - - UP = "up" - DOWN = "down" - NEAREST = "nearest" +ROUNDING_DIRECTION = Literal["up", "down", "nearest"] @dataclass class RoundingSpec: base: int | float - direction: RoundingDirection + direction: ROUNDING_DIRECTION to_add_after_rounding: int | float = 0 reference: str | None = None @@ -28,9 +20,10 @@ def __post_init__(self): """Validate the types of base and to_add_after_rounding.""" if type(self.base) not in [int, float]: raise ValueError(f"base needs to be a number, got {self.base!r}") - if type(self.direction) not in [RoundingDirection]: + valid_directions = get_args(ROUNDING_DIRECTION) + if self.direction not in valid_directions: raise ValueError( - f"direction needs to be a RoundingDirection, got {self.direction!r}" + f"`direction` must be one of {valid_directions}, got {self.direction!r}" ) if type(self.to_add_after_rounding) not in [int, float]: raise ValueError( @@ -57,11 +50,11 @@ def apply_rounding(self, func: callable) -> callable: def wrapper(*args, **kwargs): out = func(*args, **kwargs) - if self.direction == RoundingDirection.UP: + if self.direction == "up": rounded_out = self.base * np.ceil(out / self.base) - elif self.direction == RoundingDirection.DOWN: + elif self.direction == "down": rounded_out = self.base * np.floor(out / self.base) - elif self.direction == RoundingDirection.NEAREST: + elif self.direction == "nearest": rounded_out = self.base * (out / self.base).round() rounded_out += self.to_add_after_rounding diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index d161319940..08ab7f4a6e 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -1,6 +1,8 @@ from __future__ import annotations import inspect +import itertools +import re import textwrap from typing import TYPE_CHECKING, Any, TypeVar @@ -11,13 +13,154 @@ from _gettsim.config import SUPPORTED_GROUPINGS if TYPE_CHECKING: + import datetime + from ttsim.function_types import PolicyFunction from ttsim.typing import ( GenericCallable, NestedDataDict, - NestedFunctionDict, - QualNameFunctionsDict, + NestedTTSIMObjectDict, + QualNameTTSIMFunctionDict, + ) + + +_DASHED_ISO_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") + + +def validate_dashed_iso_date(date: str | datetime.date): + if not _DASHED_ISO_DATE.match(date): + raise ValueError(f"Date {date} does not match the format YYYY-MM-DD.") + + +def validate_date_range(start: datetime.date, end: datetime.date): + if start > end: + raise ValueError(f"The start date {start} must be before the end date {end}.") + + +def get_re_pattern_for_all_time_units_and_groupings( + supported_groupings: tuple[str, ...], supported_time_units: tuple[str, ...] +) -> re.Pattern: + """Get a regex pattern for time units and groupings. + + The pattern matches strings in any of these formats: + - <base_name> (may contain underscores) + - <base_name>_<time_unit> + - <base_name>_<aggregation> + - <base_name>_<time_unit>_<aggregation> + + Parameters + ---------- + supported_groupings + The supported groupings. + supported_time_units + The supported time units. + + Returns + ------- + pattern + The regex pattern. + """ + units = "".join(supported_time_units) + groupings = "|".join(supported_groupings) + return re.compile( + f"(?P<base_name>.*?)" + f"(?:_(?P<time_unit>[{units}]))?" + f"(?:_(?P<aggregation>{groupings}))?" + f"$" + ) + + +def get_re_pattern_for_specific_time_units_and_groupings( + base_name: str, + supported_time_units: tuple[str, ...], + supported_groupings: tuple[str, ...], +) -> re.Pattern: + """Get a regex for a specific base name with optional time unit and aggregation. + + The pattern matches strings in any of these formats: + - <specific_base_name> + - <specific_base_name>_<time_unit> + - <specific_base_name>_<aggregation> + - <specific_base_name>_<time_unit>_<aggregation> + + Parameters + ---------- + base_name + The specific base name to match. + supported_time_units + The supported time units. + supported_groupings + The supported groupings. + + Returns + ------- + pattern + The regex pattern. + """ + units = "".join(supported_time_units) + groupings = "|".join(supported_groupings) + return re.compile( + f"(?P<base_name>{re.escape(base_name)})" + f"(?:_(?P<time_unit>[{units}]))?" + f"(?:_(?P<aggregation>{groupings}))?" + f"$" + ) + + +def all_variations_of_base_name( + base_name: str, + supported_time_conversions: list[str], + supported_groupings: list[str], + create_conversions_for_time_units: bool, +) -> set[str]: + """Get possible derived function names given a base function name. + + Examples + -------- + >>> all_variations_of_base_name( + base_name="income", + supported_time_conversions=["y", "m"], + supported_groupings=["hh"], + create_conversions_for_time_units=True, + ) + {'income_m', 'income_y', 'income_hh_y', 'income_hh_m'} + + >>> all_variations_of_base_name( + base_name="claims_benefits", + supported_time_conversions=["y", "m"], + supported_groupings=["hh"], + create_conversions_for_time_units=False, ) + {'claims_benefits_hh'} + + Parameters + ---------- + base_name + The base function name. + supported_time_conversions + The supported time conversions. + supported_groupings + The supported groupings. + create_conversions_for_time_units + Whether to create conversions for time units. + + Returns + ------- + The names of all potential targets based on the base name. + """ + result = set() + if create_conversions_for_time_units: + for time_unit in supported_time_conversions: + result.add(f"{base_name}_{time_unit}") + for time_unit, aggregation in itertools.product( + supported_time_conversions, supported_groupings + ): + result.add(f"{base_name}_{time_unit}_{aggregation}") + else: + result.add(base_name) + for aggregation in supported_groupings: + result.add(f"{base_name}_{aggregation}") + return result class KeyErrorMessage(str): @@ -161,11 +304,11 @@ def insert_path_and_value( def partition_tree_by_reference_tree( - tree_to_partition: NestedFunctionDict | NestedDataDict, - reference_tree: NestedFunctionDict | NestedDataDict, + tree_to_partition: NestedTTSIMObjectDict | NestedDataDict, + reference_tree: NestedTTSIMObjectDict | NestedDataDict, ) -> tuple[ - NestedFunctionDict | NestedDataDict, - NestedFunctionDict | NestedDataDict, + NestedTTSIMObjectDict | NestedDataDict, + NestedTTSIMObjectDict | NestedDataDict, ]: """ Partition a tree into two based on the presence of its paths in a reference tree. @@ -211,8 +354,9 @@ def partition_by_reference_dict( Returns ------- - A tuple containing: - The first dictionary with keys present in both dictionaries. - - The second dictionary with keys absent in the reference dictionary. + A tuple containing: + - The first dictionary with keys present in both dictionaries. + - The second dictionary with keys absent in the reference dictionary. """ intersection = {k: v for k, v in to_partition.items() if k in reference_dict} difference = {k: v for k, v in to_partition.items() if k not in reference_dict} @@ -404,7 +548,8 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: def get_name_of_group_by_id( target_name: str, - group_by_functions: QualNameFunctionsDict, + group_by_functions: QualNameTTSIMFunctionDict, + supported_groupings: tuple[str, ...], ) -> str: """Get the group-by-identifier name for some target. @@ -428,7 +573,7 @@ def get_name_of_group_by_id( ------- The group-by-identifier, or an empty tuple if it is an individual-level variable. """ - for g in SUPPORTED_GROUPINGS: + for g in supported_groupings: if target_name.endswith(f"_{g}") and g == "hh": # Hardcode because hh_id is not part of the functions tree return "hh_id" diff --git a/src/ttsim/time_conversion.py b/src/ttsim/time_conversion.py index c962c2c3e3..fd21d1d1c2 100644 --- a/src/ttsim/time_conversion.py +++ b/src/ttsim/time_conversion.py @@ -1,20 +1,28 @@ from __future__ import annotations import inspect -import re from typing import TYPE_CHECKING +import dags.tree as dt from dags import rename_arguments from _gettsim.config import SUPPORTED_GROUPINGS -from ttsim.function_types import DerivedTimeConversionFunction, PolicyFunction +from ttsim.function_types import ( + DerivedTimeConversionFunction, + TTSIMFunction, +) +from ttsim.shared import ( + get_re_pattern_for_all_time_units_and_groupings, + get_re_pattern_for_specific_time_units_and_groupings, +) if TYPE_CHECKING: + import re from collections.abc import Callable - from ttsim.typing import QualNameDataDict, QualNameFunctionsDict + from ttsim.typing import QualNameDataDict, QualNameTTSIMFunctionDict -_TIME_UNITS = { +TIME_UNITS = { "y": "year", "q": "quarter", "m": "month", @@ -373,9 +381,9 @@ def d_to_w(value: float) -> float: def create_time_conversion_functions( - functions: QualNameFunctionsDict, + functions: QualNameTTSIMFunctionDict, data: QualNameDataDict, -) -> QualNameFunctionsDict: +) -> QualNameTTSIMFunctionDict: """ Create functions that convert variables to different time units. @@ -413,58 +421,63 @@ def create_time_conversion_functions( The functions dict with the new time conversion functions. """ - converted_functions = {} + converted_ttsim_objects = {} - # Create time-conversions for existing functions - for name, function in functions.items(): - all_time_conversions_for_this_function = _create_time_conversion_functions( - name=name, func=function + for source_name, ttsim_object in functions.items(): + all_time_units = tuple(TIME_UNITS) + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + supported_groupings=SUPPORTED_GROUPINGS, + supported_time_units=all_time_units, ) - for der_name, der_func in all_time_conversions_for_this_function.items(): - # Skip if the function already exists or the data column exists - if der_name in converted_functions or der_name in data: - continue - else: - converted_functions[der_name] = der_func + pattern_specific = pattern_all.fullmatch(source_name) + base_name = pattern_specific.group("base_name") + + for data_name in data: + # If base_name is in provided data, base time conversions on that. + if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( + base_name=base_name, + supported_time_units=all_time_units, + supported_groupings=SUPPORTED_GROUPINGS, + ).fullmatch(data_name): + source_name = data_name # noqa: PLW2901 + break - # Create time-conversions for data columns - for name in data: - all_time_conversions_for_this_data_column = _create_time_conversion_functions( - name=name + all_time_conversions_for_this_function = _create_time_conversion_functions( + source_name=source_name, + function=ttsim_object, + time_unit_pattern=pattern_all, + all_time_units=all_time_units, ) - for der_name, der_func in all_time_conversions_for_this_data_column.items(): - # Skip if the function already exists or the data column exists - if der_name in converted_functions or der_name in data: + for der_name, der_func in all_time_conversions_for_this_function.items(): + if der_name in converted_ttsim_objects or der_name in data: continue else: - converted_functions[der_name] = der_func + converted_ttsim_objects[der_name] = der_func - return converted_functions + return converted_ttsim_objects def _create_time_conversion_functions( - name: str, func: PolicyFunction | None = None + source_name: str, + function: TTSIMFunction, + time_unit_pattern: re.Pattern, + all_time_units: tuple[str, ...], ) -> dict[str, DerivedTimeConversionFunction]: result: dict[str, DerivedTimeConversionFunction] = {} + match = time_unit_pattern.fullmatch(source_name) + base_name = match.group("base_name") + time_unit = match.group("time_unit") or "" + aggregation = match.group("aggregation") or "" + dependencies = set(inspect.signature(function).parameters) if function else set() - all_time_units = list(_TIME_UNITS) - - units = "".join(all_time_units) - groupings = "|".join([f"_{grouping}" for grouping in SUPPORTED_GROUPINGS]) - function_with_time_unit = re.compile( - f"(?P<base_name>.*_)(?P<time_unit>[{units}])(?P<aggregation>{groupings})?" - ) - match = function_with_time_unit.fullmatch(name) - dependencies = set(inspect.signature(func).parameters) if func else set() - - if match: - base_name = match.group("base_name") - time_unit = match.group("time_unit") - aggregation = match.group("aggregation") or "" - + if match and time_unit: missing_time_units = [unit for unit in all_time_units if unit != time_unit] for missing_time_unit in missing_time_units: - new_name = f"{base_name}{missing_time_unit}{aggregation}" + new_name = ( + f"{base_name}_{missing_time_unit}_{aggregation}" + if aggregation + else f"{base_name}_{missing_time_unit}" + ) # Without this check, we could create cycles in the DAG: Consider a # hard-coded function `var_y` that takes `var_m` as an input, assuming it @@ -479,22 +492,25 @@ def _create_time_conversion_functions( continue result[new_name] = DerivedTimeConversionFunction( + leaf_name=dt.tree_path_from_qual_name(new_name)[-1], function=_create_function_for_time_unit( - name, - _time_conversion_functions[f"{time_unit}_to_{missing_time_unit}"], + source=source_name, + converter=_time_conversion_functions[ + f"{time_unit}_to_{missing_time_unit}" + ], ), - source=name, - source_function=func, - conversion_target=new_name, + source=source_name, + start_date=function.start_date, + end_date=function.end_date, ) return result def _create_function_for_time_unit( - function_name: str, converter: Callable[[float], float] + source: str, converter: Callable[[float], float] ) -> Callable[[float], float]: - @rename_arguments(mapper={"x": function_name}) + @rename_arguments(mapper={"x": source}) def func(x: float) -> float: return converter(x) diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index 7632251ebd..d07ea38914 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -24,29 +24,15 @@ ) from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec - from ttsim.function_types import ( - DerivedAggregationFunction, - DerivedTimeConversionFunction, - GroupByFunction, - PolicyFunction, - ) + from ttsim.function_types import PolicyInput, TTSIMFunction, TTSIMObject + + NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] + QualNameTTSIMObjectDict = Mapping[str, TTSIMObject] # Specialise from dags' GenericCallable types to GETTSIM's functions. - NestedFunctionDict = Mapping[ - str, - PolicyFunction - | DerivedAggregationFunction - | DerivedTimeConversionFunction - | GroupByFunction - | "NestedFunctionDict", - ] - QualNameFunctionsDict = Mapping[ - str, - PolicyFunction - | DerivedAggregationFunction - | DerivedTimeConversionFunction - | GroupByFunction, - ] + NestedTTSIMFunctionDict = Mapping[str, TTSIMFunction | "NestedTTSIMFunctionDict"] + QualNameTTSIMFunctionDict = Mapping[str, TTSIMFunction] + QualNamePolicyInputDict = Mapping[str, PolicyInput] # Specialise from dags' NestedInputDict to GETTSIM's types. NestedDataDict = Mapping[str, pd.Series | "NestedDataDict"] diff --git a/src/ttsim/visualization.py b/src/ttsim/visualization.py index 0033a666b7..f14c759e6c 100644 --- a/src/ttsim/visualization.py +++ b/src/ttsim/visualization.py @@ -11,7 +11,6 @@ from pygments import highlight, lexers from pygments.formatters import HtmlFormatter -from _gettsim.config import DEFAULT_TARGETS from ttsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) @@ -66,7 +65,7 @@ def plot_dag( a hover information. Sometimes, the tooltip is not properly displayed. """ - targets = build_targets_tree(DEFAULT_TARGETS if targets is None else targets) # noqa: F821 + targets = build_targets_tree(fixme if targets is None else targets) # noqa: F821 if isinstance(columns_overriding_functions, dict): names_of_columns_overriding_functions = dt.flatten_to_qual_names( diff --git a/tests/ttsim/_helpers.py b/tests/ttsim/_helpers.py deleted file mode 100644 index 42835be8c1..0000000000 --- a/tests/ttsim/_helpers.py +++ /dev/null @@ -1,25 +0,0 @@ -from __future__ import annotations - -from functools import lru_cache -from typing import TYPE_CHECKING - -from ttsim import ( - PolicyEnvironment, - set_up_policy_environment, -) -from ttsim.policy_environment import _parse_date - -if TYPE_CHECKING: - import datetime - - -def cached_set_up_policy_environment( - date: int | str | datetime.date, -) -> PolicyEnvironment: - normalized_date = _parse_date(date) - return _cached_set_up_policy_environment(normalized_date) - - -@lru_cache(maxsize=100) -def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: - return set_up_policy_environment(date) diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py index 113729f6f6..66115b85da 100644 --- a/tests/ttsim/mettsim/config.py +++ b/tests/ttsim/mettsim/config.py @@ -6,7 +6,7 @@ from pathlib import Path -METTSIM_RESSOURCE_DIR = Path(__file__).parent / "functions" +RESOURCE_DIR = Path(__file__).parent FOREIGN_KEYS = ( @@ -14,3 +14,5 @@ ("p_id_parent_1",), ("p_id_parent_2",), ) + +SUPPORTED_GROUPINGS = ("fam", "sp", "hh") diff --git a/tests/ttsim/mettsim/functions/housing_benefits/amount.py b/tests/ttsim/mettsim/housing_benefits/amount.py similarity index 100% rename from tests/ttsim/mettsim/functions/housing_benefits/amount.py rename to tests/ttsim/mettsim/housing_benefits/amount.py diff --git a/tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py similarity index 89% rename from tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py rename to tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index aeeb66668c..af796cf8c0 100644 --- a/tests/ttsim/mettsim/functions/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -9,14 +9,15 @@ - Subsistence income is calculated per spouse and child """ -from ttsim import AggregateByGroupSpec, policy_function +from ttsim import AggregateByGroupSpec, AggregationType, policy_function -aggregation_specs = { - "number_of_children_fam": AggregateByGroupSpec( +aggregation_specs = ( + AggregateByGroupSpec( + target="number_of_children_fam", source="child", - aggr="sum", + agg=AggregationType.SUM, ), -} +) @policy_function(end_date="2019-12-31", leaf_name="requirement_fulfilled_fam") diff --git a/tests/ttsim/mettsim/functions/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py similarity index 70% rename from tests/ttsim/mettsim/functions/housing_benefits/income/income.py rename to tests/ttsim/mettsim/housing_benefits/income/income.py index 493c146a4e..9ff2384dfa 100644 --- a/tests/ttsim/mettsim/functions/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -1,10 +1,10 @@ -from ttsim import RoundingDirection, RoundingSpec, policy_function +from ttsim import RoundingSpec, policy_function @policy_function( rounding_spec=RoundingSpec( base=1, - direction=RoundingDirection.DOWN, + direction="down", reference="§ 4 Gondorian Housing Benefit Law", ) ) diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py new file mode 100644 index 0000000000..bab97a76fd --- /dev/null +++ b/tests/ttsim/mettsim/inputs.py @@ -0,0 +1,11 @@ +from ttsim import policy_input + + +@policy_input() +def p_id() -> int: + pass + + +@policy_input() +def hh_id() -> int: + pass diff --git a/tests/ttsim/mettsim/functions/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py similarity index 100% rename from tests/ttsim/mettsim/functions/payroll_tax/amount.py rename to tests/ttsim/mettsim/payroll_tax/amount.py diff --git a/tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py similarity index 82% rename from tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py rename to tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index f06a245f21..33d46d4ad2 100644 --- a/tests/ttsim/mettsim/functions/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -1,12 +1,13 @@ -from ttsim import AggregateByPIDSpec, join_numpy, policy_function +from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function -aggregation_specs = { - "amount_y": AggregateByPIDSpec( - p_id_to_aggregate_by="recipient_id", +aggregation_specs = ( + AggregateByPIDSpec( + target="amount_y", source="claim_of_child_y", - aggr="sum", + p_id_to_aggregate_by="recipient_id", + agg=AggregationType.SUM, ), -} +) @policy_function() diff --git a/tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py b/tests/ttsim/mettsim/payroll_tax/group_by_ids.py similarity index 100% rename from tests/ttsim/mettsim/functions/payroll_tax/group_by_ids.py rename to tests/ttsim/mettsim/payroll_tax/group_by_ids.py diff --git a/tests/ttsim/mettsim/functions/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py similarity index 100% rename from tests/ttsim/mettsim/functions/payroll_tax/income/amount.py rename to tests/ttsim/mettsim/payroll_tax/income/amount.py diff --git a/tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py similarity index 100% rename from tests/ttsim/mettsim/functions/payroll_tax/income/deductions.py rename to tests/ttsim/mettsim/payroll_tax/income/deductions.py diff --git a/tests/ttsim/mettsim/payroll_tax/income/inputs.py b/tests/ttsim/mettsim/payroll_tax/income/inputs.py new file mode 100644 index 0000000000..2ffc246279 --- /dev/null +++ b/tests/ttsim/mettsim/payroll_tax/income/inputs.py @@ -0,0 +1,8 @@ +"""Input columns.""" + +from ttsim import policy_input + + +@policy_input() +def gross_wage_y() -> float: + """Annual gross wage.""" diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index 03d3f37b17..c21227b1c1 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -1,3 +1,4 @@ +import datetime import inspect import pandas as pd @@ -8,16 +9,17 @@ _annotate_aggregation_functions, _create_aggregate_by_group_functions, _create_aggregation_functions, - _create_one_aggregate_by_group_func, - _create_one_aggregate_by_p_id_func, + _create_one_aggregation_function, _fail_if_targets_not_in_functions, _get_name_of_aggregation_source, ) from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers from ttsim.function_types import ( + DEFAULT_END_DATE, + DEFAULT_START_DATE, DerivedAggregationFunction, - group_by_function, policy_function, + policy_input, ) from ttsim.policy_environment import PolicyEnvironment @@ -28,6 +30,31 @@ def function_with_bool_return(x: bool) -> bool: return x +@policy_input() +def x() -> int: + pass + + +@policy_input() +def x_f() -> float: + pass + + +@policy_input() +def x_b() -> bool: + pass + + +@policy_input() +def p_id() -> int: + pass + + +@policy_input() +def hh_id() -> int: + pass + + @pytest.fixture @policy_function(leaf_name="bar") def function_with_int_return(x: int) -> int: @@ -42,7 +69,7 @@ def function_with_float_return(x: int) -> float: @pytest.mark.parametrize( ( - "functions_tree", + "objects_tree", "targets_tree", "data_tree", "aggregations_specs_from_env", @@ -50,7 +77,14 @@ def function_with_float_return(x: int) -> float: [ ( # Aggregations derived from simple function arguments - {"namespace1": {"f": policy_function(leaf_name="f")(lambda x_hh: x_hh)}}, + { + "hh_id": hh_id, + "p_id": p_id, + "namespace1": { + "f": policy_function(leaf_name="f")(lambda x_hh: x_hh), + "x": x, + }, + }, {"namespace1": {"f": None}}, { "namespace1": {"x": pd.Series([1, 1, 1])}, @@ -62,11 +96,14 @@ def function_with_float_return(x: int) -> float: ( # Aggregations derived from namespaced function arguments { + "hh_id": hh_id, + "p_id": p_id, "namespace1": { "f": policy_function(leaf_name="f")( lambda inputs__x_hh: inputs__x_hh ) - } + }, + "inputs": {"x": x}, }, {"namespace1": {"f": None}}, { @@ -78,7 +115,14 @@ def function_with_float_return(x: int) -> float: ), ( # Aggregations derived from target - {"namespace1": {"f": policy_function(leaf_name="f")(lambda x: x)}}, + { + "hh_id": hh_id, + "p_id": p_id, + "namespace1": { + "f": policy_function(leaf_name="f")(lambda x: x), + "x": x, + }, + }, {"namespace1": {"f_hh": None}}, { "namespace1": {"x": pd.Series([1, 1, 1])}, @@ -89,7 +133,14 @@ def function_with_float_return(x: int) -> float: ), ( # Aggregations derived from simple environment specification - {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + { + "hh_id": hh_id, + "p_id": p_id, + "namespace1": { + "f": policy_function(leaf_name="f")(lambda y_hh: y_hh), + "x": x, + }, + }, {"namespace1": {"f": None}}, { "namespace1": {"x": pd.Series([1, 1, 1])}, @@ -99,15 +150,21 @@ def function_with_float_return(x: int) -> float: { "namespace1": { "y_hh": AggregateByGroupSpec( + target="y_hh", source="x", - aggr=AggregationType.SUM, - ), + agg=AggregationType.SUM, + ) }, }, ), ( # Aggregations derived from namespaced environment specification - {"namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}}, + { + "hh_id": hh_id, + "p_id": p_id, + "namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}, + "inputs": {"x": x}, + }, {"namespace1": {"f": None}}, { "inputs": {"x": pd.Series([1, 1, 1])}, @@ -117,143 +174,164 @@ def function_with_float_return(x: int) -> float: { "namespace1": { "y_hh": AggregateByGroupSpec( + target="y_hh", source="inputs__x", - aggr=AggregationType.SUM, - ), + agg=AggregationType.SUM, + ) }, }, ), ], ) def test_create_aggregate_by_group_functions( - functions_tree, + objects_tree, targets_tree, data_tree, aggregations_specs_from_env, ): environment = PolicyEnvironment( - functions_tree=functions_tree, + raw_objects_tree=objects_tree, aggregation_specs_tree=aggregations_specs_from_env, ) compute_taxes_and_transfers( environment=environment, data_tree=data_tree, targets_tree=targets_tree, + supported_groupings=("hh",), + foreign_keys=(), ) +START_DATE = datetime.date.fromisoformat("1900-01-01") +END_DATE = datetime.date.fromisoformat("2100-12-31") + + @pytest.mark.parametrize( ( "functions", + "inputs", "aggregation_functions", - "types_input_variables", "expected_return_type", ), [ ( + {}, {}, { "foo": DerivedAggregationFunction( + leaf_name="foo", function=lambda x: x, source="x", - aggregation_target="foo", aggregation_method="count", + start_date=START_DATE, + end_date=END_DATE, ) }, - {}, int, ), ( {}, + {"x": x}, { "foo": DerivedAggregationFunction( + leaf_name="foo", function=lambda x: x, source="x", - aggregation_target="foo", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {"x": int}, int, ), ( {}, + {"x": x_f}, { "foo": DerivedAggregationFunction( + leaf_name="foo", function=lambda x: x, source="x", - aggregation_target="foo", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {"x": float}, float, ), ( {}, + {"x": x_b}, { "foo": DerivedAggregationFunction( + leaf_name="foo", function=lambda x: x, source="x", - aggregation_target="foo", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {"x": bool}, int, ), ( {"n1__foo": function_with_bool_return}, + {}, { "n1__foo_hh": DerivedAggregationFunction( + leaf_name="foo_hh", function=function_with_bool_return, source="n1__foo", - aggregation_target="foo_hh", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {}, int, ), ( {"n1__foo": function_with_float_return}, + {}, { "n1__foo_hh": DerivedAggregationFunction( + leaf_name="foo_hh", function=function_with_float_return, source="n1__foo", - aggregation_target="foo_hh", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {}, float, ), ( {"n1__foo": function_with_int_return}, + {}, { "n1__foo_hh": DerivedAggregationFunction( + leaf_name="foo_hh", function=function_with_int_return, source="n1__foo", - aggregation_target="foo_hh", aggregation_method="sum", + start_date=START_DATE, + end_date=END_DATE, ) }, - {}, int, ), ], ) def test_annotations_for_aggregation( functions, + inputs, aggregation_functions, - types_input_variables, expected_return_type, ): name_of_aggregation_function = next(iter(aggregation_functions.keys())) annotation_of_aggregation_function = _annotate_aggregation_functions( functions=functions, + inputs=inputs, aggregation_functions=aggregation_functions, - types_input_variables=types_input_variables, )[name_of_aggregation_function].__annotations__["return"] assert annotation_of_aggregation_function == expected_return_type @@ -276,6 +354,7 @@ def test_fail_if_targets_are_not_among_functions( @pytest.mark.parametrize( ( "functions", + "inputs", "aggregations", "aggregation_type", "top_level_namespace", @@ -284,25 +363,37 @@ def test_fail_if_targets_are_not_among_functions( [ ( {"foo": function_with_bool_return}, - {"foo_hh": AggregateByGroupSpec(source="foo", aggr=AggregationType.SUM)}, + {}, + { + "foo_hh": AggregateByGroupSpec( + target="foo_hh", source="foo", agg=AggregationType.SUM + ), + }, "group", ["foo"], {"foo": bool, "return": int}, ), ( {"foo": function_with_float_return}, - {"foo_hh": AggregateByGroupSpec(source="foo", aggr=AggregationType.SUM)}, + {}, + { + "foo_hh": AggregateByGroupSpec( + target="foo_hh", source="foo", agg=AggregationType.SUM + ), + }, "group", ["foo"], {"foo": float, "return": float}, ), ( {"foo": function_with_int_return}, + {}, { "foo_hh": AggregateByPIDSpec( + target="foo_hh", p_id_to_aggregate_by="foreign_id_col", source="foo", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ) }, "p_id", @@ -312,16 +403,23 @@ def test_fail_if_targets_are_not_among_functions( ], ) def test_annotations_are_applied_to_derived_functions( - functions, aggregations, aggregation_type, top_level_namespace, expected_annotations + functions, + inputs, + aggregations, + aggregation_type, + top_level_namespace, + expected_annotations, ): """Test that the annotations are applied to the derived functions.""" result_func = next( iter( _create_aggregation_functions( functions=functions, + inputs=inputs, aggregation_functions_to_create=aggregations, aggregation_type=aggregation_type, top_level_namespace=top_level_namespace, + supported_groupings=("hh",), ).values() ) ) @@ -331,6 +429,7 @@ def test_annotations_are_applied_to_derived_functions( @pytest.mark.parametrize( ( "functions", + "inputs", "targets", "data", "aggregations_from_environment", @@ -340,6 +439,7 @@ def test_annotations_are_applied_to_derived_functions( [ ( {"foo": policy_function(leaf_name="foo")(lambda x_hh: x_hh)}, + {"x": x}, {}, {"x": pd.Series([1])}, {}, @@ -348,6 +448,7 @@ def test_annotations_are_applied_to_derived_functions( ), ( {"n1__foo": policy_function(leaf_name="foo")(lambda n2__x_hh: n2__x_hh)}, + {"hh_id": hh_id, "n2__x": x}, {}, {"n2": {"x": pd.Series([1])}}, {}, @@ -356,6 +457,7 @@ def test_annotations_are_applied_to_derived_functions( ), ( {}, + {"x": x}, {"x_hh": None}, {"x": pd.Series([1])}, {}, @@ -364,11 +466,14 @@ def test_annotations_are_applied_to_derived_functions( ), ( {"foo": policy_function(leaf_name="foo")(lambda x: x)}, + {"hh_id": hh_id, "x": x}, {}, {"x": pd.Series([1])}, { "n1__foo_hh": AggregateByGroupSpec( - source="foo", aggr=AggregationType.SUM + target="foo_hh", + source="foo", + agg=AggregationType.SUM, ) }, ["x", "foo", "n1"], @@ -376,8 +481,9 @@ def test_annotations_are_applied_to_derived_functions( ), ], ) -def test_derived_aggregation_functions_are_in_correct_namespace( # noqa: PLR0913 +def test_derived_aggregation_functions_are_in_correct_namespace( functions, + inputs, targets, data, aggregations_from_environment, @@ -391,36 +497,174 @@ def test_derived_aggregation_functions_are_in_correct_namespace( # noqa: PLR091 """ result = _create_aggregate_by_group_functions( functions=functions, + inputs=inputs, targets=targets, data=data, aggregations_from_environment=aggregations_from_environment, top_level_namespace=top_level_namespace, + supported_groupings=("hh",), ) assert expected in result -def test_create_aggregation_with_derived_soure_column(): - aggregation_spec_dict = { - "foo_hh": AggregateByGroupSpec( - source="bar_bg", - aggr=AggregationType.SUM, - ) - } - result = _create_aggregate_by_group_functions( - functions={"bg_id": group_by_function()(lambda x: x)}, - targets={}, - data={"bar": pd.Series([1])}, - aggregations_from_environment=aggregation_spec_dict, - top_level_namespace=["foo", "bar", "bg_id"], +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "group_by_id", + "functions", + "inputs", + "top_level_namespace", + "expected_start_date", + "expected_end_date", + ), + [ + ( + "x_hh", + AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), + "hh_id", + {}, + {"x": x}, + ["x", "x_hh", "hh_id"], + DEFAULT_START_DATE, + DEFAULT_END_DATE, + ), + ( + "x_hh", + AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), + "hh_id", + {"x": policy_function(leaf_name="x")(lambda x: x)}, + {}, + ["x", "x_hh", "hh_id"], + DEFAULT_START_DATE, + DEFAULT_END_DATE, + ), + ( + "x_hh", + AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), + "hh_id", + { + "x": policy_function( + leaf_name="x", start_date="2025-01-01", end_date="2025-12-31" + )(lambda x: x) + }, + {}, + ["x", "x_hh", "hh_id"], + datetime.date.fromisoformat("2025-01-01"), + datetime.date.fromisoformat("2025-12-31"), + ), + ], +) +def test_aggregate_by_group_function_start_and_end_date( + aggregation_target, + aggregation_spec, + group_by_id, + functions, + inputs, + top_level_namespace, + expected_start_date, + expected_end_date, +): + result = _create_one_aggregation_function( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + aggregation_type="group", + group_by_id=group_by_id, + functions=functions, + inputs=inputs, + top_level_namespace=top_level_namespace, ) - assert "foo_hh" in result - assert "bar_bg" in inspect.signature(result["foo_hh"]).parameters + assert result.start_date == expected_start_date + assert result.end_date == expected_end_date @pytest.mark.parametrize( ( "aggregation_target", "aggregation_spec", + "functions", + "inputs", + "top_level_namespace", + "expected_start_date", + "expected_end_date", + ), + [ + ( + "bar", + AggregateByPIDSpec( + target="bar_hh", + source="x", + agg=AggregationType.SUM, + p_id_to_aggregate_by="foreign_id_col", + ), + {"x": policy_function(leaf_name="x")(lambda x: x)}, + {}, + ["x", "bar", "foreign_id_col"], + DEFAULT_START_DATE, + DEFAULT_END_DATE, + ), + ( + "bar", + AggregateByPIDSpec( + target="bar_hh", + source="x", + agg=AggregationType.SUM, + p_id_to_aggregate_by="foreign_id_col", + ), + {}, + {"x": x}, + ["x", "bar", "foreign_id_col"], + DEFAULT_START_DATE, + DEFAULT_END_DATE, + ), + ( + "bar", + AggregateByPIDSpec( + target="bar_hh", + source="x", + agg=AggregationType.SUM, + p_id_to_aggregate_by="foreign_id_col", + ), + { + "x": policy_function( + leaf_name="x", start_date="2025-01-01", end_date="2025-12-31" + )(lambda x: x) + }, + {}, + ["x", "bar", "foreign_id_col"], + datetime.date.fromisoformat("2025-01-01"), + datetime.date.fromisoformat("2025-12-31"), + ), + ], +) +def test_aggregate_by_p_id_function_start_and_end_date( + aggregation_target, + aggregation_spec, + functions, + inputs, + top_level_namespace, + expected_start_date, + expected_end_date, +): + result = _create_one_aggregation_function( + aggregation_target=aggregation_target, + aggregation_spec=aggregation_spec, + aggregation_type="p_id", + group_by_id=None, + functions=functions, + inputs=inputs, + top_level_namespace=top_level_namespace, + ) + assert result.start_date == expected_start_date + assert result.end_date == expected_end_date + + +@pytest.mark.parametrize( + ( + "aggregation_target", + "aggregation_spec", + "functions", + "inputs", "group_by_id", "top_level_namespace", "expected_arg_names", @@ -428,21 +672,33 @@ def test_create_aggregation_with_derived_soure_column(): [ ( "foo_hh", - AggregateByGroupSpec(aggr=AggregationType.COUNT), + AggregateByGroupSpec( + target="foo_hh", source=None, agg=AggregationType.COUNT + ), + {"foo": policy_function(leaf_name="foo")(lambda x: x)}, + {}, "hh_id", ["foo", "hh_id"], ["hh_id"], ), ( "foo_hh", - AggregateByGroupSpec(aggr=AggregationType.SUM, source="foo"), + AggregateByGroupSpec( + target="foo_hh", source="foo", agg=AggregationType.SUM + ), + {"foo": policy_function(leaf_name="foo")(lambda x: x)}, + {}, "hh_id", ["foo", "hh_id"], ["hh_id", "foo"], ), ( "foo__bar_hh", - AggregateByGroupSpec(aggr=AggregationType.SUM, source="bar"), + AggregateByGroupSpec( + target="foo__bar_hh", source="bar", agg=AggregationType.SUM + ), + {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, + {}, "hh_id", ["foo", "hh_id"], ["hh_id", "foo__bar"], @@ -452,15 +708,19 @@ def test_create_aggregation_with_derived_soure_column(): def test_function_arguments_are_namespaced_for_derived_group_funcs( aggregation_target, aggregation_spec, + functions, + inputs, group_by_id, top_level_namespace, expected_arg_names, ): - result = _create_one_aggregate_by_group_func( + result = _create_one_aggregation_function( aggregation_target=aggregation_target, aggregation_spec=aggregation_spec, + aggregation_type="group", group_by_id=group_by_id, - functions={}, + functions=functions, + inputs=inputs, top_level_namespace=top_level_namespace, ) assert all( @@ -473,6 +733,9 @@ def test_function_arguments_are_namespaced_for_derived_group_funcs( ( "aggregation_target", "aggregation_spec", + "functions", + "inputs", + "group_by_id", "top_level_namespace", "expected_arg_names", ), @@ -480,35 +743,63 @@ def test_function_arguments_are_namespaced_for_derived_group_funcs( ( "foo", AggregateByPIDSpec( - aggr=AggregationType.SUM, + target="foo_hh", + agg=AggregationType.SUM, source="bar", p_id_to_aggregate_by="foreign_id_col", ), + {"bar": policy_function(leaf_name="bar")(lambda x: x)}, + {}, + "foreign_id_col", ["foo", "foreign_id_col", "bar"], ["foreign_id_col", "bar"], ), ( "foo__fünc", AggregateByPIDSpec( - aggr=AggregationType.SUM, + target="foo_hh", + agg=AggregationType.SUM, source="bär", p_id_to_aggregate_by="foreign_id_col", ), + {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, + {}, + "foreign_id_col", ["foo", "foreign_id_col"], ["foreign_id_col", "foo__bär"], ), + ( + "foo", + AggregateByPIDSpec( + target="foo_hh", + agg=AggregationType.SUM, + source="x", + p_id_to_aggregate_by="foreign_id_col", + ), + {}, + {"x": x}, + "foreign_id_col", + ["foo", "foreign_id_col", "x"], + ["foreign_id_col", "x"], + ), ], ) def test_function_arguments_are_namespaced_for_derived_p_id_funcs( aggregation_target, aggregation_spec, + functions, + inputs, + group_by_id, top_level_namespace, expected_arg_names, ): - result = _create_one_aggregate_by_p_id_func( + result = _create_one_aggregation_function( aggregation_target=aggregation_target, aggregation_spec=aggregation_spec, - functions={}, + aggregation_type="p_id", + group_by_id=group_by_id, + functions=functions, + inputs=inputs, top_level_namespace=top_level_namespace, ) assert all( @@ -521,6 +812,8 @@ def test_function_arguments_are_namespaced_for_derived_p_id_funcs( ( "aggregation_target", "aggregation_spec", + "functions", + "inputs", "group_by_id", "top_level_namespace", "source_col_name", @@ -528,14 +821,22 @@ def test_function_arguments_are_namespaced_for_derived_p_id_funcs( [ ( "foo_hh", - AggregateByGroupSpec(aggr=AggregationType.SUM, source="foo"), + AggregateByGroupSpec( + target="foo_hh", agg=AggregationType.SUM, source="foo" + ), + {}, + {"foo": policy_function(leaf_name="foo")(lambda x: x)}, "hh_id", ["foo", "hh_id"], "foo", ), ( "foo__bar_hh", - AggregateByGroupSpec(aggr=AggregationType.SUM, source="bar"), + AggregateByGroupSpec( + target="bar_hh", agg=AggregationType.SUM, source="bar" + ), + {}, + {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, "hh_id", ["foo", "hh_id"], "foo__bar", @@ -545,15 +846,19 @@ def test_function_arguments_are_namespaced_for_derived_p_id_funcs( def test_source_column_name_of_aggregate_by_group_func_is_qualified( aggregation_target, aggregation_spec, + functions, + inputs, group_by_id, top_level_namespace, source_col_name, ): - result = _create_one_aggregate_by_group_func( + result = _create_one_aggregation_function( aggregation_target=aggregation_target, aggregation_spec=aggregation_spec, + aggregation_type="group", group_by_id=group_by_id, - functions={}, + functions=functions, + inputs=inputs, top_level_namespace=top_level_namespace, ) assert result.source == source_col_name @@ -563,6 +868,8 @@ def test_source_column_name_of_aggregate_by_group_func_is_qualified( ( "aggregation_target", "aggregation_spec", + "functions", + "inputs", "top_level_namespace", "source_col_name", ), @@ -570,20 +877,26 @@ def test_source_column_name_of_aggregate_by_group_func_is_qualified( ( "foo", AggregateByPIDSpec( - aggr=AggregationType.SUM, + target="foo_hh", + agg=AggregationType.SUM, source="bar", p_id_to_aggregate_by="foreign_id_col", ), + {}, + {"bar": policy_function(leaf_name="bar")(lambda x: x)}, ["foo", "foreign_id_col", "bar"], "bar", ), ( "foo__fünc", AggregateByPIDSpec( - aggr=AggregationType.SUM, + target="foo_hh", + agg=AggregationType.SUM, source="bär", p_id_to_aggregate_by="foreign_id_col", ), + {}, + {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, ["foo", "foreign_id_col"], "foo__bär", ), @@ -592,13 +905,18 @@ def test_source_column_name_of_aggregate_by_group_func_is_qualified( def test_source_column_name_of_aggregate_by_p_id_func_is_qualified( aggregation_target, aggregation_spec, + functions, + inputs, top_level_namespace, source_col_name, ): - result = _create_one_aggregate_by_p_id_func( + result = _create_one_aggregation_function( aggregation_target=aggregation_target, aggregation_spec=aggregation_spec, - functions={}, + aggregation_type="p_id", + group_by_id=None, + functions=functions, + inputs=inputs, top_level_namespace=top_level_namespace, ) assert result.source == source_col_name diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 7e1de59d2e..f07c94aebf 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -6,26 +6,42 @@ import numpy import pandas as pd import pytest -from mettsim.config import FOREIGN_KEYS -from mettsim.functions.payroll_tax.group_by_ids import fam_id, sp_id +from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from mettsim.payroll_tax.group_by_ids import fam_id, sp_id -from gettsim import FunctionsAndColumnsOverlapWarning from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.compute_taxes_and_transfers import ( + FunctionsAndColumnsOverlapWarning, _convert_data_to_correct_types, _fail_if_foreign_keys_are_invalid, _fail_if_group_variables_not_constant_within_groups, - _fail_if_pid_is_non_unique, + _fail_if_p_id_is_non_unique, + _get_top_level_namespace, _partial_parameters_to_functions, compute_taxes_and_transfers, ) from ttsim.config import numpy_or_jax as np -from ttsim.function_types import group_by_function, policy_function +from ttsim.function_types import group_by_function, policy_function, policy_input from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import assert_valid_ttsim_pytree from ttsim.typing import convert_series_to_internal_type +@policy_input() +def p_id() -> int: + pass + + +@policy_input() +def hh_id() -> int: + pass + + +@policy_input() +def betrag_m() -> float: + pass + + @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 @@ -61,9 +77,10 @@ def func_before_partial(arg_1, payroll_tax_params): def test_output_as_tree(minimal_input_data): environment = PolicyEnvironment( { + "p_id": p_id, "module": { "test_func": policy_function(leaf_name="test_func")(lambda p_id: p_id) - } + }, } ) @@ -71,6 +88,8 @@ def test_output_as_tree(minimal_input_data): data_tree=minimal_input_data, environment=environment, targets_tree={"module": {"test_func": None}}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) assert isinstance(out, dict) @@ -93,6 +112,8 @@ def test_warn_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"some_target": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) @@ -109,6 +130,8 @@ def test_dont_warn_if_functions_and_columns_dont_overlap(): }, environment=environment, targets_tree={"some_func": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) @@ -131,35 +154,39 @@ def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"unique": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) assert len(warning_list) == 0 -def test_fail_if_pid_does_not_exist(): +def test_fail_if_p_id_does_not_exist(): data = {"hh_id": pd.Series(data=numpy.arange(8), name="hh_id")} with pytest.raises(ValueError): - _fail_if_pid_is_non_unique(data) + _fail_if_p_id_is_non_unique(data) -def test_fail_if_pid_is_non_unique(): +def test_fail_if_p_id_is_non_unique(): data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} with pytest.raises(ValueError): - _fail_if_pid_is_non_unique(data) + _fail_if_p_id_is_non_unique(data) @pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_non_existing_pid(foreign_key_path): +def test_fail_if_foreign_key_points_to_non_existing_p_id(foreign_key_path): foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) data = { foreign_key_name: pd.Series([0, 1, 4]), "p_id": pd.Series([1, 2, 3]), } - with pytest.raises(ValueError, match="not a valid p_id in the\ninput data"): - _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) + with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): + _fail_if_foreign_keys_are_invalid( + data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS + ) @pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) @@ -170,11 +197,13 @@ def test_allow_minus_one_as_foreign_key(foreign_key_path): "p_id": pd.Series([1, 2, 3]), } - _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) + _fail_if_foreign_keys_are_invalid( + data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS + ) @pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_pid_of_same_row(foreign_key_path): +def test_fail_if_foreign_key_points_to_p_id_of_same_row(foreign_key_path): foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) data = { foreign_key_name: pd.Series([1, 3, 3]), @@ -182,7 +211,9 @@ def test_fail_if_foreign_key_points_to_pid_of_same_row(foreign_key_path): } with pytest.raises(ValueError, match="are equal to the p_id"): - _fail_if_foreign_keys_are_invalid(data, p_id=data["p_id"]) + _fail_if_foreign_keys_are_invalid( + data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS + ) @pytest.mark.parametrize( @@ -211,6 +242,7 @@ def test_fail_if_group_variables_not_constant_within_groups(data, functions): _fail_if_group_variables_not_constant_within_groups( data=data, functions=functions, + supported_groupings=SUPPORTED_GROUPINGS, ) @@ -233,7 +265,11 @@ def c(b): match="The following data columns are missing", ): compute_taxes_and_transfers( - minimal_input_data, environment, targets_tree={"c": None} + data_tree=minimal_input_data, + environment=environment, + targets_tree={"c": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) @@ -248,7 +284,11 @@ def b(a): environment = PolicyEnvironment({"a": a, "b": b}) compute_taxes_and_transfers( - minimal_input_data, environment, targets_tree={"b": None} + data_tree=minimal_input_data, + environment=environment, + targets_tree={"b": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) @@ -262,20 +302,30 @@ def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions match="The following targets have no corresponding function", ): compute_taxes_and_transfers( - minimal_input_data, environment, targets_tree={"unknown_target": None} + data_tree=minimal_input_data, + environment=environment, + targets_tree={"unknown_target": None}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) -def test_fail_if_missing_pid(): +def test_fail_if_missing_p_id(): data = {"hh_id": pd.Series([1, 2, 3], name="hh_id")} with pytest.raises( ValueError, match="The input data must contain the p_id", ): - compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) + compute_taxes_and_transfers( + data_tree=data, + environment=PolicyEnvironment({}), + targets_tree={}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), + ) -def test_fail_if_non_unique_pid(minimal_input_data): +def test_fail_if_non_unique_p_id(minimal_input_data): data = copy.deepcopy(minimal_input_data) data["p_id"][:] = 1 @@ -283,7 +333,13 @@ def test_fail_if_non_unique_pid(minimal_input_data): ValueError, match="The following p_ids are non-unique", ): - compute_taxes_and_transfers(data, PolicyEnvironment({}), targets_tree={}) + compute_taxes_and_transfers( + data_tree=data, + environment=PolicyEnvironment({}), + targets_tree={}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), + ) def test_partial_parameters_to_functions(): @@ -312,20 +368,33 @@ def test_user_provided_aggregate_by_group_specs(): }, } - aggregation_specs_tree = { + inputs = { + "p_id": p_id, + "hh_id": hh_id, "module_name": { - "betrag_m_hh": AggregateByGroupSpec( + "betrag_m": betrag_m, + }, + } + + aggregation_specs_tree = { + "module_name": ( + AggregateByGroupSpec( + target="betrag_m_hh", source="betrag_m", - aggr=AggregationType.SUM, - ) - } + agg=AggregationType.SUM, + ), + ) } expected_res = pd.Series([200, 200, 100]) out = compute_taxes_and_transfers( - data, - PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), + data_tree=data, + environment=PolicyEnvironment( + raw_objects_tree=inputs, aggregation_specs_tree=aggregation_specs_tree + ), targets_tree={"module_name": {"betrag_m_hh": None}}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) numpy.testing.assert_array_almost_equal( @@ -339,18 +408,11 @@ def test_user_provided_aggregate_by_group_specs(): { "module_name": { "betrag_double_m_hh": AggregateByGroupSpec( + target="betrag_double_m_hh", source="betrag_m_double", - aggr=AggregationType.MAX, + agg=AggregationType.MAX, ), - }, - }, - { - "module_name": { - "betrag_double_m_hh": AggregateByGroupSpec( - source="module_name__betrag_m_double", - aggr=AggregationType.MAX, - ), - }, + } }, ], ) @@ -364,11 +426,14 @@ def test_user_provided_aggregate_by_group_specs_function(aggregation_specs_tree) } expected_res = pd.Series([400, 400, 200]) + @policy_function() def betrag_m_double(betrag_m): return 2 * betrag_m environment = PolicyEnvironment( { + "p_id": p_id, + "hh_id": hh_id, "module_name": { "betrag_m_double": policy_function(leaf_name="betrag_m_double")( betrag_m_double @@ -377,11 +442,12 @@ def betrag_m_double(betrag_m): }, aggregation_specs_tree=aggregation_specs_tree, ) - out = compute_taxes_and_transfers( - data, - environment, + data_tree=data, + environment=environment, targets_tree={"module_name": {"betrag_double_m_hh": None}}, + foreign_keys=FOREIGN_KEYS, + supported_groupings=("hh",), ) numpy.testing.assert_array_almost_equal( @@ -389,7 +455,7 @@ def betrag_m_double(betrag_m): ) -def test_aggregate_by_group_specs_missing_group_sufix(): +def test_aggregate_by_group_specs_missing_group_suffix(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "hh_id": pd.Series([1, 1, 2], name="hh_id"), @@ -400,10 +466,11 @@ def test_aggregate_by_group_specs_missing_group_sufix(): aggregation_specs_tree = { "module_name": { "betrag_agg_m": AggregateByGroupSpec( + target="betrag_agg_m", source="betrag_m", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ) - }, + } } with pytest.raises( ValueError, @@ -413,17 +480,20 @@ def test_aggregate_by_group_specs_missing_group_sufix(): data, PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), targets_tree={"module_name": {"betrag_agg_m": None}}, + supported_groupings=("hh",), + foreign_keys=FOREIGN_KEYS, ) def test_aggregate_by_group_specs_agg_not_impl(): with pytest.raises( - ValueError, - match="aggr must be of type AggregationType, not <class 'str'>", + TypeError, + match="agg must be of type AggregationType, not <class 'str'>", ): AggregateByGroupSpec( + target="betrag_agg_m", source="betrag_m", - aggr="sum", + agg="sum", ) @@ -434,9 +504,10 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func": AggregateByPIDSpec( + target="target_func", p_id_to_aggregate_by="hh_id", source="source_func", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ) } }, @@ -448,9 +519,10 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func_m": AggregateByPIDSpec( + target="target_func_m", p_id_to_aggregate_by="hh_id", source="source_func_m", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ) } }, @@ -462,9 +534,10 @@ def test_aggregate_by_group_specs_agg_not_impl(): { "module": { "target_func_m": AggregateByPIDSpec( + target="target_func_m", p_id_to_aggregate_by="hh_id", source="source_func_m", - aggr=AggregationType.SUM, + agg=AggregationType.SUM, ) } }, @@ -487,7 +560,11 @@ def test_user_provided_aggregate_by_p_id_specs( def source_func(p_id: int) -> int: # noqa: ARG001 return 100 - functions_tree = {"module": {leaf_name: source_func}} + functions_tree = { + "module": {leaf_name: source_func}, + "p_id": p_id, + "hh_id": hh_id, + } environment = PolicyEnvironment( functions_tree, @@ -497,6 +574,8 @@ def source_func(p_id: int) -> int: # noqa: ARG001 minimal_input_data_shared_hh, environment, targets_tree=target_tree, + supported_groupings=("hh",), + foreign_keys=FOREIGN_KEYS, )["module"][next(iter(target_tree["module"].keys()))] numpy.testing.assert_array_almost_equal(out, expected) @@ -607,6 +686,7 @@ def test_fail_if_cannot_be_converted_to_internal_type( convert_series_to_internal_type(input_data, expected_type) +@pytest.mark.skip @pytest.mark.parametrize( "data, functions_overridden", [ @@ -626,6 +706,7 @@ def test_provide_endogenous_groupings(data, functions_overridden): _convert_data_to_correct_types(data, functions_overridden) +@pytest.mark.skip @pytest.mark.parametrize( "data, functions_overridden, error_match", [ @@ -697,3 +778,59 @@ def test_fail_if_cannot_be_converted_to_correct_type( def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): with pytest.raises(TypeError, match=re.escape(err_substr)): assert_valid_ttsim_pytree(tree, leaf_checker, "tree") + + +@pytest.mark.parametrize( + ( + "environment", + "supported_time_conversions", + "supported_groupings", + "expected", + ), + [ + ( + PolicyEnvironment( + raw_objects_tree={ + "foo_m": policy_function(leaf_name="foo_m")(lambda x: x) + }, + aggregation_specs_tree={}, + ), + ["m", "y"], + ["hh"], + {"foo_m", "foo_y", "foo_m_hh", "foo_y_hh"}, + ), + ( + PolicyEnvironment( + raw_objects_tree={"foo": policy_function(leaf_name="foo")(lambda x: x)}, + aggregation_specs_tree={}, + ), + ["m", "y"], + ["hh"], + {"foo", "foo_hh"}, + ), + ( + PolicyEnvironment( + raw_objects_tree={}, + aggregation_specs_tree={ + "foo_hh": AggregateByGroupSpec( + target="foo_hh", + source="foo", + agg=AggregationType.SUM, + ), + }, + ), + ["m", "y"], + ["hh"], + {"foo", "foo_hh"}, + ), + ], +) +def test_get_top_level_namespace( + environment, supported_time_conversions, supported_groupings, expected +): + result = _get_top_level_namespace( + environment=environment, + supported_time_conversions=supported_time_conversions, + supported_groupings=supported_groupings, + ) + assert result == expected diff --git a/tests/ttsim/test_dates_active.py b/tests/ttsim/test_dates_active.py index 5b297cde23..753f02aa2d 100644 --- a/tests/ttsim/test_dates_active.py +++ b/tests/ttsim/test_dates_active.py @@ -4,8 +4,8 @@ from ttsim.function_types import policy_function from ttsim.loader import ( - ConflictingTimeDependentFunctionsError, - _fail_if_multiple_policy_functions_are_active_at_the_same_time, + ConflictingTimeDependentObjectsError, + _fail_if_multiple_ttsim_objects_are_active_at_the_same_time, ) # Start date ----------------------------------------------- @@ -153,8 +153,8 @@ def test_func(): ], ) def test_dates_active_no_conflicts(functions): - _fail_if_multiple_policy_functions_are_active_at_the_same_time( - policy_functions=functions, module_name="" + _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + ttsim_objects=functions, module_name="" ) @@ -200,7 +200,7 @@ def test_dates_active_no_conflicts(functions): ], ) def test_dates_active_with_conflicts(functions): - with pytest.raises(ConflictingTimeDependentFunctionsError): - _fail_if_multiple_policy_functions_are_active_at_the_same_time( - policy_functions=functions, module_name="" + with pytest.raises(ConflictingTimeDependentObjectsError): + _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + ttsim_objects=functions, module_name="" ) diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 4448b05d81..54d3048c03 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -7,11 +7,10 @@ from _gettsim.config import ( RESOURCE_DIR, - TYPES_INPUT_VARIABLES, ) from ttsim.loader import ( load_aggregation_specs_tree, - load_functions_tree_for_date, + load_objects_tree_for_date, ) from ttsim.shared import remove_group_suffix @@ -23,7 +22,7 @@ def _nice_output_list_of_strings(list_of_strings): @pytest.fixture(scope="module") def default_input_variables(): - return sorted(TYPES_INPUT_VARIABLES.keys()) + return sorted(f for f in todo_functions_tree if isinstance(f, PolicyInput)) @pytest.fixture(scope="module") @@ -41,8 +40,9 @@ def aggregation_dict(): def time_indep_function_names(all_function_names): time_dependent_functions = {} for year in range(1990, 2023): - year_functions = load_functions_tree_for_date( - datetime.date(year=year, month=1, day=1) + year_functions = load_objects_tree_for_date( + resource_dir=RESOURCE_DIR, + date=datetime.date(year=year, month=1, day=1), ) new_dict = {func.function.__name__: func.leaf_name for func in year_functions} time_dependent_functions = {**time_dependent_functions, **new_dict} diff --git a/tests/ttsim/test_function_types.py b/tests/ttsim/test_function_types.py new file mode 100644 index 0000000000..fe22edbe43 --- /dev/null +++ b/tests/ttsim/test_function_types.py @@ -0,0 +1,85 @@ +import pytest + +from ttsim.function_types import ( + PolicyFunction, + PolicyInput, + policy_function, + policy_input, +) + +# ====================================================================================== +# PolicyFunction and policy_function +# ====================================================================================== + + +@policy_function() +def simple_policy_function(x): + return x + + +@policy_function(leaf_name="simple_policy_function") +def policy_function_with_internal_name(x): + return x + + +@policy_function(start_date="2007-01-01", end_date="2011-12-31") +def policy_function_with_dates(x): + return x + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_policy_function_type(function): + assert isinstance(function, PolicyFunction) + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_policy_function_name(function): + assert function.leaf_name == "simple_policy_function" + + +def test_policy_function_with_dates(): + assert str(policy_function_with_dates.start_date) == "2007-01-01" + assert str(policy_function_with_dates.end_date) == "2011-12-31" + + +# ====================================================================================== +# PolicyInput and policy_input +# ====================================================================================== + + +@policy_input() +def simple_policy_input() -> float: + pass + + +@policy_input(start_date="2007-01-01", end_date="2011-12-31") +def policy_input_with_dates() -> float: + pass + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_input, + policy_input_with_dates, + ], +) +def test_policy_input_type(function): + assert isinstance(function, PolicyInput) + + +def test_policy_input_with_dates(): + assert str(policy_input_with_dates.start_date) == "2007-01-01" + assert str(policy_input_with_dates.end_date) == "2011-12-31" diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index ad2e21762d..e6916fe5e5 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -4,7 +4,7 @@ import numpy import pytest -from mettsim.config import METTSIM_RESSOURCE_DIR +from mettsim.config import RESOURCE_DIR from ttsim.function_types import _vectorize_func, policy_function from ttsim.loader import ( @@ -20,15 +20,15 @@ def test_load_path(): assert _load_module( - METTSIM_RESSOURCE_DIR / "payroll_tax" / "amount.py", - METTSIM_RESSOURCE_DIR, + RESOURCE_DIR / "payroll_tax" / "amount.py", + RESOURCE_DIR, ) def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and AggregationSpecs.""" - all_files = _find_python_files_recursively(METTSIM_RESSOURCE_DIR) + all_files = _find_python_files_recursively(RESOURCE_DIR) assert "__init__.py" not in [file.name for file in all_files] @@ -62,15 +62,12 @@ def test_vectorize_func(vectorized_function: Callable) -> None: ), [ ( - METTSIM_RESSOURCE_DIR - / "payroll_tax" - / "child_tax_credit" - / "child_tax_credit.py", - METTSIM_RESSOURCE_DIR, + RESOURCE_DIR / "payroll_tax" / "child_tax_credit" / "child_tax_credit.py", + RESOURCE_DIR, ("payroll_tax", "child_tax_credit"), ), - (METTSIM_RESSOURCE_DIR / "foo" / "bar.py", METTSIM_RESSOURCE_DIR, ("foo",)), - (METTSIM_RESSOURCE_DIR / "foo.py", METTSIM_RESSOURCE_DIR, tuple()), # noqa: C408 + (RESOURCE_DIR / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), + (RESOURCE_DIR / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 ], ) def test_convert_path_to_tree_path( diff --git a/tests/ttsim/test_mettsim.py b/tests/ttsim/test_mettsim.py new file mode 100644 index 0000000000..a8dcb6978a --- /dev/null +++ b/tests/ttsim/test_mettsim.py @@ -0,0 +1,17 @@ +import pytest +from utils import ( + PolicyTest, + execute_test, + get_policy_test_ids_and_cases, +) + +policy_test_ids_and_cases = get_policy_test_ids_and_cases() + + +@pytest.mark.parametrize( + "test", + policy_test_ids_and_cases.values(), + ids=policy_test_ids_and_cases.keys(), +) +def test_mettsim(test: PolicyTest): + execute_test(test) diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index b321dc31c2..e46f1802f8 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -9,6 +9,7 @@ import optree import pandas as pd import pytest +from mettsim.config import RESOURCE_DIR from ttsim.function_types import ( GroupByFunction, @@ -19,12 +20,12 @@ PolicyEnvironment, _fail_if_name_of_last_branch_element_not_leaf_name_of_function, _load_parameter_group_from_yaml, - load_functions_tree_for_date, + load_objects_tree_for_date, set_up_policy_environment, ) if TYPE_CHECKING: - from ttsim.typing import NestedFunctionDict + from ttsim.typing import NestedTTSIMObjectDict YAML_PATH = Path(__file__).parent / "test_parameters" @@ -34,12 +35,12 @@ def test_func_exists_in_tree(self): function = policy_function(leaf_name="foo")(lambda: 1) environment = PolicyEnvironment({"foo": function}) - assert environment.functions_tree["foo"] == function + assert environment.raw_objects_tree["foo"] == function def test_func_does_not_exist_in_tree(self): environment = PolicyEnvironment({}, {}) - assert "foo" not in environment.functions_tree + assert "foo" not in environment.raw_objects_tree @pytest.mark.parametrize( "environment", @@ -56,9 +57,9 @@ def test_func_does_not_exist_in_tree(self): ) def test_upsert_functions(self, environment: PolicyEnvironment): new_function = policy_function(leaf_name="foo")(lambda: 3) - new_environment = environment.upsert_policy_functions({"foo": new_function}) + new_environment = environment.upsert_objects({"foo": new_function}) - assert new_environment.functions_tree["foo"] == new_function + assert new_environment.raw_objects_tree["foo"] == new_function @pytest.mark.parametrize( "environment", @@ -75,12 +76,12 @@ def test_replace_all_parameters(self, environment: PolicyEnvironment): def test_leap_year_correctly_handled(): - set_up_policy_environment(date="02-29-2020") + set_up_policy_environment(date="02-29-2020", resource_dir=RESOURCE_DIR) def test_fail_if_invalid_date(): with pytest.raises(ValueError): - set_up_policy_environment(date="02-30-2020") + set_up_policy_environment(date="02-30-2020", resource_dir=RESOURCE_DIR) def test_fail_if_invalid_access_different_date(): @@ -119,22 +120,10 @@ def test_access_different_date_jahresanfang(): "tree, last_day, function_name_last_day, function_name_next_day", [ ( - {"einkommensteuer": {"abzüge": {"altersfreibetrag_y": None}}}, - date(2004, 12, 31), - "altersfreibetrag_y_bis_2004", - "altersfreibetrag_y_ab_2005", - ), - ( - {"einkommensteuer": {"abzüge": {"alleinerziehend_betrag_y": None}}}, - date(2014, 12, 31), - "alleinerziehend_betrag_y_pauschal", - "alleinerziehend_betrag_y_nach_kinderzahl", - ), - ( - {"einkommensteuer": {"gesamteinkommen_ohne_abzüge_y": None}}, - date(2008, 12, 31), - "gesamteinkommen_ohne_abzüge_mit_kapitaleinkünften_y", - "gesamteinkommen_ohne_abzüge_ohne_kapitaleinkünfte_y", + {"housing_benefits": {"eligibility": {"requirement_fulfilled_fam": None}}}, + date(2019, 12, 31), + "requirement_fulfilled_fam_not_considering_children", + "requirement_fulfilled_fam_considering_children", ), ], ) @@ -144,8 +133,12 @@ def test_load_functions_tree_for_date( function_name_last_day: str, function_name_next_day: str, ): - functions_last_day = load_functions_tree_for_date(date=last_day) - functions_next_day = load_functions_tree_for_date(date=last_day + timedelta(days=1)) + functions_last_day = load_objects_tree_for_date( + resource_dir=RESOURCE_DIR, date=last_day + ) + functions_next_day = load_objects_tree_for_date( + resource_dir=RESOURCE_DIR, date=last_day + timedelta(days=1) + ) accessor = optree.tree_accessors(tree, none_is_leaf=True)[0] @@ -160,7 +153,7 @@ def test_load_functions_tree_for_date( ], ) def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedFunctionDict, + functions_tree: NestedTTSIMObjectDict, ): with pytest.raises(KeyError): _fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) @@ -171,4 +164,4 @@ def test_dont_destroy_group_by_functions(): "foo": group_by_function()(lambda: 1), } environment = PolicyEnvironment(functions_tree) - assert isinstance(environment.functions_tree["foo"], GroupByFunction) + assert isinstance(environment.raw_objects_tree["foo"], GroupByFunction) diff --git a/tests/ttsim/test_policy_function.py b/tests/ttsim/test_policy_function.py deleted file mode 100644 index 05d57d95ba..0000000000 --- a/tests/ttsim/test_policy_function.py +++ /dev/null @@ -1,35 +0,0 @@ -import pytest - -from ttsim.function_types import PolicyFunction, policy_function - - -@policy_function() -def simple_policy_function(x): - return x - - -@policy_function(leaf_name="simple_policy_function") -def policy_function_with_internal_name(x): - return x - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_internal_name, - ], -) -def test_function_type(function): - assert isinstance(function, PolicyFunction) - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_internal_name, - ], -) -def test_function_name(function): - assert function.leaf_name == "simple_policy_function" diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index 7aa0b6eb26..9546601cc3 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -5,57 +5,64 @@ from ttsim.compute_taxes_and_transfers import ( compute_taxes_and_transfers, ) -from ttsim.function_types import policy_function +from ttsim.function_types import policy_function, policy_input from ttsim.policy_environment import PolicyEnvironment -from ttsim.rounding import RoundingDirection, RoundingSpec +from ttsim.rounding import RoundingSpec + + +@policy_input() +def x() -> int: + pass + + +@policy_input() +def p_id() -> int: + pass + rounding_specs_and_exp_results = [ ( - RoundingSpec(base=1, direction=RoundingDirection.UP), + RoundingSpec(base=1, direction="up"), [100.24, 100.78], [101.0, 101.0], ), ( - RoundingSpec(base=1, direction=RoundingDirection.DOWN), + RoundingSpec(base=1, direction="down"), [100.24, 100.78], [100.0, 100.0], ), ( - RoundingSpec(base=1, direction=RoundingDirection.NEAREST), + RoundingSpec(base=1, direction="nearest"), [100.24, 100.78], [100.0, 101.0], ), ( - RoundingSpec(base=5, direction=RoundingDirection.UP), + RoundingSpec(base=5, direction="up"), [100.24, 100.78], [105.0, 105.0], ), ( - RoundingSpec(base=0.1, direction=RoundingDirection.DOWN), + RoundingSpec(base=0.1, direction="down"), [100.24, 100.78], [100.2, 100.7], ), ( - RoundingSpec(base=0.001, direction=RoundingDirection.NEAREST), + RoundingSpec(base=0.001, direction="nearest"), [100.24, 100.78], [100.24, 100.78], ), ( - RoundingSpec(base=1, direction=RoundingDirection.UP, to_add_after_rounding=10), + RoundingSpec(base=1, direction="up", to_add_after_rounding=10), [100.24, 100.78], [111.0, 111.0], ), ( - RoundingSpec( - base=1, direction=RoundingDirection.DOWN, to_add_after_rounding=10 - ), + RoundingSpec(base=1, direction="down", to_add_after_rounding=10), [100.24, 100.78], [110.0, 110.0], ), ( - RoundingSpec( - base=1, direction=RoundingDirection.NEAREST, to_add_after_rounding=10 - ), + RoundingSpec(base=1, direction="nearest", to_add_after_rounding=10), [100.24, 100.78], [110.0, 111.0], ), @@ -63,7 +70,7 @@ def test_decorator(): - rs = RoundingSpec(base=1, direction=RoundingDirection.UP) + rs = RoundingSpec(base=1, direction="up") @policy_function(rounding_spec=rs) def test_func(): @@ -91,20 +98,24 @@ def test_rounding(rounding_spec, input_values, exp_output): # Define function that should be rounded @policy_function(rounding_spec=rounding_spec) - def test_func(income): - return income + def test_func(x): + return x data = { "p_id": pd.Series([1, 2]), - "namespace": {"income": pd.Series(input_values)}, + "namespace": {"x": pd.Series(input_values)}, } - environment = PolicyEnvironment({"namespace": {"test_func": test_func}}) + environment = PolicyEnvironment( + {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} + ) calc_result = compute_taxes_and_transfers( data_tree=data, environment=environment, targets_tree={"namespace": {"test_func": None}}, + foreign_keys=((),), + supported_groupings=(), ) assert_series_equal( pd.Series(calc_result["namespace"]["test_func"]), @@ -117,23 +128,29 @@ def test_rounding_with_time_conversion(): """Check if rounding is correct for time-converted functions.""" # Define function that should be rounded - @policy_function( - rounding_spec=RoundingSpec(base=1, direction=RoundingDirection.DOWN) - ) - def test_func_m(income): - return income + @policy_function(rounding_spec=RoundingSpec(base=1, direction="down")) + def test_func_m(x): + return x data = { "p_id": pd.Series([1, 2]), - "income": pd.Series([1.2, 1.5]), + "x": pd.Series([1.2, 1.5]), } - environment = PolicyEnvironment({"test_func_m": test_func_m}) + environment = PolicyEnvironment( + { + "test_func_m": test_func_m, + "x": x, + "p_id": p_id, + } + ) calc_result = compute_taxes_and_transfers( data_tree=data, environment=environment, targets_tree={"test_func_y": None}, + foreign_keys=((),), + supported_groupings=(), ) assert_series_equal( pd.Series(calc_result["test_func_y"]), @@ -153,17 +170,25 @@ def test_no_rounding( ): # Define function that should be rounded @policy_function(rounding_spec=rounding_spec) - def test_func(income): - return income + def test_func(x): + return x data = {"p_id": pd.Series([1, 2])} - data["income"] = pd.Series(input_values_exp_output) - environment = PolicyEnvironment({"test_func": test_func}) + data["x"] = pd.Series(input_values_exp_output) + environment = PolicyEnvironment( + { + "test_func": test_func, + "x": x, + "p_id": p_id, + } + ) calc_result = compute_taxes_and_transfers( data_tree=data, environment=environment, targets_tree={"test_func": None}, + foreign_keys=((),), + supported_groupings=(), rounding=False, ) assert_series_equal( @@ -216,9 +241,9 @@ def test_func(income): "base, direction, to_add_after_rounding", [ (1, "upper", 0), - ("0.1", RoundingDirection.DOWN, 0), + ("0.1", "down", 0), (5, "closest", 0), - (5, RoundingDirection.UP, "0"), + (5, "up", "0"), ], ) def test_rounding_spec_validation(base, direction, to_add_after_rounding): diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/test_shared.py index 68f4d1b97e..ece9066d44 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -3,8 +3,11 @@ import pytest from ttsim.shared import ( + all_variations_of_base_name, create_tree_from_path_and_value, get_name_of_group_by_id, + get_re_pattern_for_all_time_units_and_groupings, + get_re_pattern_for_specific_time_units_and_groupings, insert_path_and_value, merge_trees, partition_tree_by_reference_tree, @@ -228,6 +231,7 @@ def test_get_name_of_group_by_id(target_name, group_by_functions, expected): get_name_of_group_by_id( target_name=target_name, group_by_functions=group_by_functions, + supported_groupings=("hh", "bg", "eg"), ) == expected ) @@ -281,5 +285,125 @@ def test_get_name_of_group_by_id_fails( ): with pytest.raises(ValueError, match=expected_error_match): get_name_of_group_by_id( - target_name=target_name, group_by_functions=group_by_functions + target_name=target_name, + group_by_functions=group_by_functions, + supported_groupings=("hh", "bg", "eg"), + ) + + +@pytest.mark.parametrize( + ( + "base_name", + "supported_time_conversions", + "supported_groupings", + "create_conversions_for_time_units", + "expected", + ), + [ + ( + "income", + ["y", "m"], + ["hh"], + True, + {"income_m", "income_y", "income_m_hh", "income_y_hh"}, + ), + ( + "income", + ["y", "m"], + ["hh", "x"], + True, + { + "income_m", + "income_y", + "income_m_hh", + "income_y_hh", + "income_m_x", + "income_y_x", + }, + ), + ( + "claims_benefits", + ["y", "m"], + ["hh", "x"], + False, + {"claims_benefits", "claims_benefits_hh", "claims_benefits_x"}, + ), + ], +) +def test_all_variations_of_base_name( + base_name, + supported_time_conversions, + supported_groupings, + create_conversions_for_time_units, + expected, +): + assert ( + all_variations_of_base_name( + base_name=base_name, + supported_time_conversions=supported_time_conversions, + supported_groupings=supported_groupings, + create_conversions_for_time_units=create_conversions_for_time_units, ) + == expected + ) + + +@pytest.mark.parametrize( + ( + "func_name", + "supported_time_units", + "supported_groupings", + "expected_base_name", + "expected_time_unit", + "expected_aggregation", + ), + [ + ("foo", ("m", "y"), ["hh"], "foo", None, None), + ("foo_m_hh", ("m", "y"), ["hh"], "foo", "m", "hh"), + ("foo_y_hh", ("m", "y"), ["hh"], "foo", "y", "hh"), + ("foo_m", ("m", "y"), ["hh"], "foo", "m", None), + ("foo_y", ("m", "y"), ["hh"], "foo", "y", None), + ("foo_hh", ("m", "y"), ["hh"], "foo", None, "hh"), + ("foo_hh_bar", ("m", "y"), ["hh"], "foo_hh_bar", None, None), + ], +) +def test_get_re_pattern_for_time_units_and_groupings( + func_name, + supported_time_units, + supported_groupings, + expected_base_name, + expected_time_unit, + expected_aggregation, +): + result = get_re_pattern_for_all_time_units_and_groupings( + supported_time_units=supported_time_units, + supported_groupings=supported_groupings, + ) + match = result.fullmatch(func_name) + assert match.group("base_name") == expected_base_name + assert match.group("time_unit") == expected_time_unit + assert match.group("aggregation") == expected_aggregation + + +@pytest.mark.parametrize( + ( + "base_name", + "supported_time_units", + "supported_groupings", + "expected_match", + ), + [ + ("foo", ["m", "y"], ["hh"], "foo_m_hh"), + ("foo", ["m", "y"], ["hh", "x"], "foo_m"), + ("foo", ["m", "y"], ["hh", "x"], "foo_hh"), + ], +) +def test_get_re_pattern_for_some_base_name( + base_name, supported_time_units, supported_groupings, expected_match +): + re_pattern = get_re_pattern_for_specific_time_units_and_groupings( + base_name=base_name, + supported_time_units=supported_time_units, + supported_groupings=supported_groupings, + ) + assert re_pattern.fullmatch(expected_match) diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_time_conversion.py index 8ac0398148..1652de0736 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -280,34 +280,6 @@ def test_should_create_functions_for_other_time_units_for_functions( for expected_name in expected: assert expected_name in time_conversion_functions - @pytest.mark.parametrize( - ("name", "expected"), - [ - ("test_y", ["test_m", "test_q", "test_w", "test_d"]), - ("test_y_hh", ["test_m_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), - ("test_y_sn", ["test_m_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), - ("test_q", ["test_y", "test_m", "test_w", "test_d"]), - ("test_q_hh", ["test_y_hh", "test_m_hh", "test_w_hh", "test_d_hh"]), - ("test_q_sn", ["test_y_sn", "test_m_sn", "test_w_sn", "test_d_sn"]), - ("test_m", ["test_y", "test_q", "test_w", "test_d"]), - ("test_m_hh", ["test_y_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), - ("test_m_sn", ["test_y_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), - ("test_w", ["test_y", "test_q", "test_m", "test_d"]), - ("test_w_hh", ["test_y_hh", "test_q_hh", "test_m_hh", "test_d_hh"]), - ("test_w_sn", ["test_y_sn", "test_q_sn", "test_m_sn", "test_d_sn"]), - ("test_d", ["test_y", "test_q", "test_m", "test_w"]), - ("test_d_hh", ["test_y_hh", "test_q_hh", "test_m_hh", "test_w_hh"]), - ("test_d_sn", ["test_y_sn", "test_q_sn", "test_m_sn", "test_w_sn"]), - ], - ) - def test_should_create_functions_for_other_time_units_for_data_cols( - self, name: str, expected: list[str] - ) -> None: - time_conversion_functions = create_time_conversion_functions({}, {name: None}) - - for expected_name in expected: - assert expected_name in time_conversion_functions - def test_should_not_create_functions_automatically_that_exist_already(self) -> None: time_conversion_functions = create_time_conversion_functions( {"test1_d": policy_function(leaf_name="test1_d")(lambda: 1)}, diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index fa83a782c7..298f361183 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -1,6 +1,7 @@ import datetime import inspect import string +from pathlib import Path import dags.tree as dt import numpy @@ -12,8 +13,8 @@ import jax.numpy from numpy.testing import assert_array_equal -from ttsim.function_types import GroupByFunction -from ttsim.loader import load_functions_tree_for_date +from ttsim.function_types import GroupByFunction, PolicyInput +from ttsim.loader import load_objects_tree_for_date from ttsim.vectorization import ( TranslateToVectorizableError, make_vectorizable, @@ -369,15 +370,17 @@ def test_unallowed_operation_wrapper(func): # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 for year in range(1990, 2023): - @pytest.mark.skip(reason="@Tim:Need to take care of RoundingDirection issue first.") @pytest.mark.parametrize( "func", [ pf.function for pf in dt.flatten_to_tree_paths( - load_functions_tree_for_date(datetime.date(year=year, month=1, day=1)) + load_objects_tree_for_date( + resource_dir=Path(__file__).parent / "mettsim", + date=datetime.date(year=year, month=1, day=1), + ) ).values() - if not isinstance(pf, GroupByFunction) + if not isinstance(pf, GroupByFunction | PolicyInput) ], ) @pytest.mark.parametrize("backend", backends) @@ -451,7 +454,7 @@ def test_geschwisterbonus_m(backend): assert_array_equal(got, full(shape, exp)) -def mock__elterngeld__grundsätzlich_anspruchsberechtigt( # noqa: PLR0913 +def mock__elterngeld__grundsätzlich_anspruchsberechtigt( claimed: bool, arbeitsstunden_w: float, kind_grundsätzlich_anspruchsberechtigt_fg: bool, diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index 00b95135ae..2bca827fc3 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -1,8 +1,8 @@ import networkx as nx import pytest -from _helpers import cached_set_up_policy_environment +from mettsim.config import RESOURCE_DIR -from ttsim.policy_environment import PolicyEnvironment +from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment from ttsim.visualization import ( _get_selected_nodes, _kth_order_neighbors, @@ -12,7 +12,7 @@ plot_dag, ) -environment = cached_set_up_policy_environment(date=2020) +environment = set_up_policy_environment(date=2020, resource_dir=RESOURCE_DIR) @pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") diff --git a/src/_gettsim_tests/_policy_test_utils.py b/tests/ttsim/utils.py similarity index 91% rename from src/_gettsim_tests/_policy_test_utils.py rename to tests/ttsim/utils.py index d9653427e9..c6fb7813de 100644 --- a/src/_gettsim_tests/_policy_test_utils.py +++ b/tests/ttsim/utils.py @@ -1,18 +1,19 @@ from __future__ import annotations import datetime +from pathlib import Path from typing import TYPE_CHECKING import dags.tree as dt import pandas as pd import yaml +from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS -from _gettsim_tests import TEST_DIR -from ttsim import merge_trees +from ttsim import merge_trees, set_up_policy_environment -if TYPE_CHECKING: - from pathlib import Path +TEST_DIR = Path(__file__).parent / "test_data" +if TYPE_CHECKING: from ttsim import NestedDataDict, NestedInputStructureDict @@ -48,15 +49,16 @@ def test_name(self) -> str: def execute_test(test: PolicyTest): from pandas.testing import assert_frame_equal - from _gettsim_tests._helpers import cached_set_up_policy_environment from ttsim import compute_taxes_and_transfers - environment = cached_set_up_policy_environment(date=test.date) + environment = set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + supported_groupings=SUPPORTED_GROUPINGS, + foreign_keys=FOREIGN_KEYS, ) flat_result = dt.flatten_to_qual_names(result) @@ -88,11 +90,6 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: with path_to_yaml.open("r", encoding="utf-8") as file: raw_test_data: NestedDataDict = yaml.safe_load(file) - # TODO(@MImmesberger): Remove this before merging this PR. - raw_test_data["inputs"], raw_test_data["outputs"] = get_test_data_as_tree( - raw_test_data - ) - out.extend( _get_policy_tests_from_raw_test_data( raw_test_data=raw_test_data, @@ -165,7 +162,7 @@ def _get_policy_tests_from_raw_test_data( } ) - date: datetime.date = _parse_date(path_to_yaml.parent.name) + date: datetime.date = _parse_date_from_dir_name(path_to_yaml.parent.name) out = [] if expected_output_tree == {}: @@ -198,7 +195,7 @@ def _get_policy_tests_from_raw_test_data( return out -def _parse_date(date: str) -> datetime.date: +def _parse_date_from_dir_name(date: str) -> datetime.date: parts = date.split("-") if len(parts) == 1: From 5878a73816ef5f8f33fa3dcd2a47215ef4499c92 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 14 Apr 2025 09:05:29 +0200 Subject: [PATCH 016/109] Require dashed iso date everywhere. Fixes #795 (#871) # What problem do you want to solve? Unify handling of dates to remove ambiguity and code duplication. --------- Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> --- .../calculating_elterngeld.ipynb | 2 +- ...ferent_ways_to_load_policy_functions.ipynb | 2 +- .../visualizing_the_system.ipynb | 2 +- docs/tutorials/advanced_usage.ipynb | 2 +- docs/tutorials/basic_usage.ipynb | 4 +-- docs/tutorials/debugging.ipynb | 2 +- docs/tutorials/parameters.ipynb | 2 +- docs/tutorials/policy_functions.ipynb | 2 +- .../fg_id_not_sensitive_to_order.yaml | 0 .../{2005 => 2005-01-01}/hh_id_8.yaml | 0 ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 0 ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 0 ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 0 ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 0 .../regelsatz_multiple_children.yaml | 0 .../regelsatz_no_adult_in_bg.yaml | 0 .../{2006 => 2006-01-01}/hh_id_4.yaml | 0 .../{2009 => 2009-01-01}/hh_id_3.yaml | 0 .../kind_20_jahre_in_bg.yaml | 0 .../{2013 => 2013-01-01}/hh_id_12.yaml | 0 .../{2013 => 2013-01-01}/hh_id_13.yaml | 0 .../{2013 => 2013-01-01}/hh_id_14.yaml | 0 .../{2013 => 2013-01-01}/hh_id_15.yaml | 0 .../{2013 => 2013-01-01}/hh_id_2.yaml | 0 .../{2018 => 2018-01-01}/hh_id_9.yaml | 0 .../{2019 => 2019-01-01}/hh_id_6.yaml | 0 .../test_age_limits_13_14.yaml | 0 .../test_age_limits_5_6.yaml | 0 .../{2022 => 2022-01-01}/hh_id_10.yaml | 0 .../{2022 => 2022-01-01}/hh_id_11.yaml | 0 .../{2023-01 => 2023-01-01}/hh_id_16.yaml | 0 .../{2023-01 => 2023-01-01}/hh_id_19.yaml | 0 .../{2023-01 => 2023-01-01}/hh_id_25.yaml | 0 .../test_age_limits_17_18.yaml | 0 .../test_family_high_wealth.yaml | 0 .../test_family_wealth_below_threshold.yaml | 0 .../{2023-07 => 2023-07-01}/hh_id_20.yaml | 0 .../{2023-07 => 2023-07-01}/hh_id_21.yaml | 0 .../{2023-07 => 2023-07-01}/hh_id_22.yaml | 0 .../{2023-07 => 2023-07-01}/hh_id_23.yaml | 0 .../{2023-07 => 2023-07-01}/hh_id_24.yaml | 0 .../alleinerz_kein_kindergelduebertrag.yaml | 0 .../alleinerz_teilw_kindergelduebertrag.yaml | 0 .../alleinerz_voller_kindergelduebertrag.yaml | 0 .../kost_unterk_multiple_bg_in_hh.yaml | 0 .../kost_unterk_one_bg_in_hh.yaml | 0 ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 0 ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 0 ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 0 ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 0 .../regelsatz_multiple_children.yaml | 0 .../regelsatz_no_adult_in_bg.yaml | 0 .../single_no_income.yaml | 0 .../skip_single_no_children.yaml | 0 .../2004-01-01/hh_id_11.yaml" | 0 .../2005-01-01/hh_id_2.yaml" | 0 .../2005-01-01/hh_id_5.yaml" | 0 .../2005-01-01/hh_id_8.yaml" | 0 .../2005-01-01/hh_id_9.yaml" | 0 .../2010-01-01/hh_id_16.yaml" | 0 .../2010-01-01/hh_id_3.yaml" | 0 .../2010-01-01/hh_id_6.yaml" | 0 .../2018-01-01/hh_id_15.yaml" | 0 .../2020-01-01/hh_id_13.yaml" | 0 .../2021-01-01/hh_id_12.yaml" | 0 .../2022-01-01/hh_id_17.yaml" | 0 .../2022-01-01/hh_id_18.yaml" | 0 .../2023-01-01/hh_id_4.yaml" | 0 .../2023-01-01/hh_id_7.yaml" | 0 .../betrag/{2009 => 2009-01-01}/hh_id_4.yaml | 0 .../betrag/{2012 => 2012-01-01}/hh_id_3.yaml | 0 .../betrag/{2015 => 2015-01-01}/hh_id_2.yaml | 0 .../{2018 => 2018-01-01}/couple_1_child.yaml | 0 .../betrag/{2018 => 2018-01-01}/hh_id_1.yaml | 0 .../betrag/{2018 => 2018-01-01}/hh_id_5.yaml | 0 .../betrag/{2023 => 2023-01-01}/hh_id_6.yaml | 0 .../{2024 => 2024-01-01}/couple_1_child.yaml | 0 .../couple_above_soli_freibetrag.yaml | 0 .../single_above_soli_freibetrag.yaml | 0 .../single_below_soli_freibetrag.yaml | 0 .../2010-01-01/hh_id_4.yaml" | 0 .../2012-01-01/hh_id_2.yaml" | 0 .../2016-01-01/hh_id_1.yaml" | 0 .../{2010 => 2010-01-01}/hh_id_1.yaml | 0 .../{2010 => 2010-01-01}/hh_id_2.yaml | 0 .../{2010 => 2010-01-01}/hh_id_3.yaml | 0 .../{2010 => 2010-01-01}/hh_id_4.yaml | 0 .../{2010 => 2010-01-01}/hh_id_5.yaml | 0 .../{2015 => 2015-01-01}/hh_id_16.yaml | 0 .../{2015 => 2015-01-01}/hh_id_17.yaml | 0 .../{2017 => 2017-01-01}/hh_id_18.yaml | 0 .../{2018 => 2018-01-01}/hh_id_10.yaml | 0 .../{2018 => 2018-01-01}/hh_id_11.yaml | 0 .../{2018 => 2018-01-01}/hh_id_12.yaml | 0 .../{2018 => 2018-01-01}/hh_id_7.yaml | 0 .../{2018 => 2018-01-01}/hh_id_8.yaml | 0 .../{2018 => 2018-01-01}/hh_id_9.yaml | 0 .../{2019 => 2019-01-01}/hh_id_13.yaml | 0 .../{2020 => 2020-01-01}/hh_id_14.yaml | 0 .../{2020 => 2020-01-01}/hh_id_19.yaml | 0 .../{2020 => 2020-01-01}/hh_id_20.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2.yaml | 0 .../{2018 => 2018-01-01}/hh_id_3.yaml | 0 .../{2018 => 2018-01-01}/hh_id_4.yaml | 0 .../{2018 => 2018-01-01}/hh_id_6.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1.yaml | 0 .../{2019 => 2019-01-01}/hh_id_3.yaml | 0 .../{2019 => 2019-01-01}/hh_id_5.yaml | 0 .../{2019 => 2019-01-01}/hh_id_6.yaml | 0 .../{2019 => 2019-01-01}/hh_id_7.yaml | 0 .../{2019 => 2019-01-01}/hh_id_8.yaml | 0 .../income_during_elterngeld.yaml | 0 .../maximum_elterngeld.yaml | 0 .../minimum_elterngeld.yaml | 0 .../net_income_approximation.yaml | 0 .../net_income_before_birth_1000.yaml | 0 .../net_income_before_birth_790.yaml | 0 .../replacement_rate_decrease.yaml | 0 .../alleinerz_one_child_budgetsatz.yaml | 0 ...inerz_one_child_regelsatz_high_income.yaml | 0 ...einerz_one_child_regelsatz_low_income.yaml | 0 ...ried_one_child_budgetsatz_high_income.yaml | 0 ...rried_one_child_budgetsatz_low_income.yaml | 0 .../married_one_child_regelsatz.yaml | 0 ..._budgetsatz_and_regelsatz_high_income.yaml | 0 ...n_budgetsatz_and_regelsatz_low_income.yaml | 0 .../born_after_abolishment.yaml | 0 ..._budgetsatz_and_regelsatz_high_income.yaml | 0 ...n_budgetsatz_and_regelsatz_low_income.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2.yaml | 0 .../{2019 => 2019-01-01}/hh_id_3.yaml | 0 .../{2019 => 2019-01-01}/hh_id_4.yaml | 0 .../{2019 => 2019-01-01}/hh_id_5.yaml | 0 .../{2019 => 2019-01-01}/hh_id_6.yaml | 0 .../{2019 => 2019-01-01}/hh_id_7.yaml | 0 .../{2019 => 2019-01-01}/hh_id_8.yaml | 0 ...nderer_elternteil_in_anderem_haushalt.yaml | 0 ...rziehend_anderer_elternteil_unbekannt.yaml | 0 .../eltern_unverheiratet_2_kinder.yaml | 0 ...rheiratet_1_junges_1_erwachsenes_kind.yaml | 0 ...verheiratet_1_kind_anderer_verwandter.yaml | 0 ...heiratet_1_kind_bis24_1_kind_ueber_24.yaml | 0 ...rn_verheiratet_1_kind_grosselternteil.yaml | 0 ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 0 ...eltern_verheiratet_1_kind_verheiratet.yaml | 0 ...eltern_verheiratet_1_kind_with_income.yaml | 0 .../eltern_verheiratet_2_kinder.yaml | 0 ...rheiratet_getrennt_veranlagt_2_kinder.yaml | 0 ...eltern_verheiratet_kinder_verheiratet.yaml | 0 .../eltern_viele_kinder.yaml | 0 .../mehrere_haushalte_durchmischt.yaml | 0 ...nderer_elternteil_in_anderem_haushalt.yaml | 0 ...haushalt_anderer_elternteil_unbekannt.yaml | 0 ...nderer_elternteil_in_anderem_haushalt.yaml | 0 ...epartner_einmal_sgb_ii_einmal_sgb_xii.yaml | 0 ...er_widerspruechliche_einstandspartner.yaml | 0 ..._kinder_widerspruechliche_veranlagung.yaml | 0 ...nicht_einstandspflichtig_ein_haushalt.yaml | 0 ...skip_enkelkind_und_sgb_ii_grossmutter.yaml | 0 ...kip_enkelkind_und_sgb_xii_grossmutter.yaml | 0 ...ner_gemeinsam_veranlagt_unverheiratet.yaml | 0 ...r_widerspruechliche_veranlagungs_info.yaml | 0 .../verschiedene_haushalte_nur_sn_id.yaml | 0 ...her_teilhaushalt_mehrere_generationen.yaml | 0 ...licher_teilhaushalt_mehrere_haushalte.yaml | 0 .../eltern_getrennt_1_kind.yaml | 0 .../eltern_verheiratet_1_kind.yaml | 0 .../eltern_verheiratet_2_kinder.yaml | 0 ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 0 ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 0 .../eltern_getrennt_1_kind.yaml | 0 .../eltern_verheiratet_1_kind.yaml | 0 .../eltern_verheiratet_2_kinder.yaml | 0 ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 0 ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 0 .../{2002 => 2002-01-01}/hh_id_2.yaml | 0 .../{2010 => 2010-01-01}/hh_id_4.yaml | 0 .../{2010 => 2010-01-01}/hh_id_6.yaml | 0 .../{2011 => 2011-01-01}/hh_id_7.yaml | 0 .../{2013 => 2013-01-01}/hh_id_8.yaml | 0 .../{2019 => 2019-01-01}/hh_id_0.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1.yaml | 0 .../{2019 => 2019-01-01}/hh_id_3.yaml | 0 .../{2019 => 2019-01-01}/hh_id_5.yaml | 0 .../{2020 => 2020-01-01}/hh_id_10.yaml | 0 .../{2021 => 2021-01-01}/3_children.yaml | 0 .../{2021 => 2021-01-01}/hh_id_11.yaml | 0 .../{2021 => 2021-01-01}/hh_id_12.yaml | 0 .../{2023 => 2023-01-01}/hh_id_13.yaml | 0 .../alleinerz_1_child_low_unterhalt.yaml | 0 .../alleinerz_1_child_no_unterhalt.yaml | 0 .../alleinerz_2_children_low_unterhalt.yaml | 0 .../alleinerz_2_children_no_unterhalt.yaml | 0 .../{2013 => 2013-01-01}/hh_id_2.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1.yaml | 0 .../{2016 => 2016-01-01}/hh_id_11.yaml | 0 .../{2016 => 2016-01-01}/hh_id_12.yaml | 0 .../{2016 => 2016-01-01}/hh_id_13.yaml | 0 .../{2016 => 2016-01-01}/hh_id_7.yaml | 0 .../{2017 => 2017-01-01}/hh_id_9.yaml | 0 .../{2019 => 2019-01-01}/hh_id_6.yaml | 0 .../{2020 => 2020-01-01}/hh_id_8.yaml | 0 .../{2021 => 2021-01-01}/hh_id_10.yaml | 0 .../{2023 => 2023-01-01}/hh_id_14.yaml | 0 .../test_child_income.yaml | 0 .../test_family_high_wealth.yaml | 0 .../test_higher_wealth_exemptions.yaml | 0 ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 0 .../test_max_transfer.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1045.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1051.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1081.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1134.yaml | 0 .../{2015 => 2015-01-01}/hh_id_121.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1214.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1219.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1435.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1462.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1476.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1555.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1627.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1793.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1796.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1915.yaml | 0 .../{2015 => 2015-01-01}/hh_id_1982.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2042.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2174.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2224.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2451.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2552.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2593.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2601.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2639.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2726.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2732.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2861.yaml | 0 .../{2015 => 2015-01-01}/hh_id_2924.yaml | 0 .../{2015 => 2015-01-01}/hh_id_400.yaml | 0 .../{2015 => 2015-01-01}/hh_id_470.yaml | 0 .../{2015 => 2015-01-01}/hh_id_561.yaml | 0 .../{2015 => 2015-01-01}/hh_id_583.yaml | 0 .../{2015 => 2015-01-01}/hh_id_72.yaml | 0 .../{2015 => 2015-01-01}/hh_id_736.yaml | 0 .../{2015 => 2015-01-01}/hh_id_76.yaml | 0 .../{2015 => 2015-01-01}/hh_id_765.yaml | 0 .../{2015 => 2015-01-01}/hh_id_769.yaml | 0 .../{2015 => 2015-01-01}/hh_id_786.yaml | 0 .../{2015 => 2015-01-01}/hh_id_790.yaml | 0 .../{2015 => 2015-01-01}/hh_id_802.yaml | 0 .../{2015 => 2015-01-01}/hh_id_830.yaml | 0 .../{2015 => 2015-01-01}/hh_id_856.yaml | 0 .../{2015 => 2015-01-01}/hh_id_857.yaml | 0 .../{2015 => 2015-01-01}/hh_id_891.yaml | 0 .../{2015 => 2015-01-01}/hh_id_925.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1000.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1086.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1115.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1133.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1175.yaml | 0 .../{2016 => 2016-01-01}/hh_id_123.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1281.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1335.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1367.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1532.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1700.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1705.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1822.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1958.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2065.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2151.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2220.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2289.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2358.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2396.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2645.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2693.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2724.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2744.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2932.yaml | 0 .../{2016 => 2016-01-01}/hh_id_2961.yaml | 0 .../{2016 => 2016-01-01}/hh_id_307.yaml | 0 .../{2016 => 2016-01-01}/hh_id_435.yaml | 0 .../{2016 => 2016-01-01}/hh_id_444.yaml | 0 .../{2016 => 2016-01-01}/hh_id_583.yaml | 0 .../{2016 => 2016-01-01}/hh_id_699.yaml | 0 .../{2016 => 2016-01-01}/hh_id_765.yaml | 0 .../{2016 => 2016-01-01}/hh_id_779.yaml | 0 .../{2016 => 2016-01-01}/hh_id_807.yaml | 0 .../{2016 => 2016-01-01}/hh_id_821.yaml | 0 .../{2016 => 2016-01-01}/hh_id_898.yaml | 0 .../{2016 => 2016-01-01}/hh_id_9.yaml | 0 .../{2016 => 2016-01-01}/hh_id_950.yaml | 0 .../{2016 => 2016-01-01}/hh_id_965.yaml | 0 .../{2016 => 2016-01-01}/hh_id_968.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1019.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1088.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1134.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1164.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1279.yaml | 0 .../{2017 => 2017-01-01}/hh_id_146.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1503.yaml | 0 .../{2017 => 2017-01-01}/hh_id_151.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1532.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1549.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1615.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1705.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1788.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1841.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1866.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1878.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1923.yaml | 0 .../{2017 => 2017-01-01}/hh_id_1945.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2005.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2151.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2177.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2226.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2293.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2512.yaml | 0 .../{2017 => 2017-01-01}/hh_id_266.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2677.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2729.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2881.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2918.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2934.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2956.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2974.yaml | 0 .../{2017 => 2017-01-01}/hh_id_2991.yaml | 0 .../{2017 => 2017-01-01}/hh_id_30.yaml | 0 .../{2017 => 2017-01-01}/hh_id_416.yaml | 0 .../{2017 => 2017-01-01}/hh_id_455.yaml | 0 .../{2017 => 2017-01-01}/hh_id_496.yaml | 0 .../{2017 => 2017-01-01}/hh_id_506.yaml | 0 .../{2017 => 2017-01-01}/hh_id_528.yaml | 0 .../{2017 => 2017-01-01}/hh_id_568.yaml | 0 .../{2017 => 2017-01-01}/hh_id_575.yaml | 0 .../{2017 => 2017-01-01}/hh_id_588.yaml | 0 .../{2017 => 2017-01-01}/hh_id_659.yaml | 0 .../{2017 => 2017-01-01}/hh_id_743.yaml | 0 .../{2017 => 2017-01-01}/hh_id_881.yaml | 0 .../{2017 => 2017-01-01}/hh_id_910.yaml | 0 .../{2017 => 2017-01-01}/hh_id_933.yaml | 0 .../{2017 => 2017-01-01}/hh_id_996.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1159.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1213.yaml | 0 .../{2018 => 2018-01-01}/hh_id_130.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1314.yaml | 0 .../{2018 => 2018-01-01}/hh_id_152.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1632.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1727.yaml | 0 .../{2018 => 2018-01-01}/hh_id_174.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1786.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1802.yaml | 0 .../{2018 => 2018-01-01}/hh_id_184.yaml | 0 .../{2018 => 2018-01-01}/hh_id_1935.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2098.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2156.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2186.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2395.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2491.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2575.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2649.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2720.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2828.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2904.yaml | 0 .../{2018 => 2018-01-01}/hh_id_2999.yaml | 0 .../{2018 => 2018-01-01}/hh_id_315.yaml | 0 .../{2018 => 2018-01-01}/hh_id_375.yaml | 0 .../{2018 => 2018-01-01}/hh_id_417.yaml | 0 .../{2018 => 2018-01-01}/hh_id_559.yaml | 0 .../{2018 => 2018-01-01}/hh_id_624.yaml | 0 .../{2018 => 2018-01-01}/hh_id_791.yaml | 0 .../{2018 => 2018-01-01}/hh_id_796.yaml | 0 .../{2018 => 2018-01-01}/hh_id_81.yaml | 0 .../{2018 => 2018-01-01}/hh_id_835.yaml | 0 .../{2018 => 2018-01-01}/hh_id_851.yaml | 0 .../{2018 => 2018-01-01}/hh_id_947.yaml | 0 .../{2018 => 2018-01-01}/hh_id_959.yaml | 0 .../{2018 => 2018-01-01}/hh_id_98.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1014.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1093.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1098.yaml | 0 .../{2019 => 2019-01-01}/hh_id_111.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1180.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1210.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1354.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1629.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1695.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1709.yaml | 0 .../{2019 => 2019-01-01}/hh_id_180.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1825.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1846.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2025.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2070.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2159.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2204.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2375.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2393.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2469.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2516.yaml | 0 .../{2019 => 2019-01-01}/hh_id_265.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2708.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2729.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2736.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2760.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2818.yaml | 0 .../{2019 => 2019-01-01}/hh_id_286.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2900.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2904.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2942.yaml | 0 .../{2019 => 2019-01-01}/hh_id_317.yaml | 0 .../{2019 => 2019-01-01}/hh_id_331.yaml | 0 .../{2019 => 2019-01-01}/hh_id_396.yaml | 0 .../{2019 => 2019-01-01}/hh_id_420.yaml | 0 .../{2019 => 2019-01-01}/hh_id_605.yaml | 0 .../{2019 => 2019-01-01}/hh_id_646.yaml | 0 .../{2019 => 2019-01-01}/hh_id_65.yaml | 0 .../{2019 => 2019-01-01}/hh_id_664.yaml | 0 .../{2019 => 2019-01-01}/hh_id_698.yaml | 0 .../{2019 => 2019-01-01}/hh_id_710.yaml | 0 .../{2019 => 2019-01-01}/hh_id_715.yaml | 0 .../{2019 => 2019-01-01}/hh_id_809.yaml | 0 .../{2019 => 2019-01-01}/hh_id_816.yaml | 0 .../{2019 => 2019-01-01}/hh_id_832.yaml | 0 .../{2019 => 2019-01-01}/hh_id_879.yaml | 0 .../{2019 => 2019-01-01}/hh_id_882.yaml | 0 .../{2019 => 2019-01-01}/hh_id_949.yaml | 0 .../{2019 => 2019-01-01}/hh_id_978.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1015.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1096.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1118.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1273.yaml | 0 .../{2020 => 2020-01-01}/hh_id_13.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1310.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1378.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1417.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1468.yaml | 0 .../{2020 => 2020-01-01}/hh_id_160.yaml | 0 .../{2020 => 2020-01-01}/hh_id_161.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1705.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1767.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1775.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1788.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1790.yaml | 0 .../{2020 => 2020-01-01}/hh_id_1928.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2106.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2182.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2184.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2230.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2320.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2389.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2439.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2527.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2562.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2587.yaml | 0 .../{2020 => 2020-01-01}/hh_id_266.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2888.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2898.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2920.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2953.yaml | 0 .../{2020 => 2020-01-01}/hh_id_2998.yaml | 0 .../{2020 => 2020-01-01}/hh_id_367.yaml | 0 .../{2020 => 2020-01-01}/hh_id_400.yaml | 0 .../{2020 => 2020-01-01}/hh_id_409.yaml | 0 .../{2020 => 2020-01-01}/hh_id_481.yaml | 0 .../{2020 => 2020-01-01}/hh_id_513.yaml | 0 .../{2020 => 2020-01-01}/hh_id_630.yaml | 0 .../{2020 => 2020-01-01}/hh_id_648.yaml | 0 .../{2020 => 2020-01-01}/hh_id_70.yaml | 0 .../{2020 => 2020-01-01}/hh_id_798.yaml | 0 .../{2020 => 2020-01-01}/hh_id_835.yaml | 0 .../{2020 => 2020-01-01}/hh_id_901.yaml | 0 .../{2020 => 2020-01-01}/hh_id_926.yaml | 0 .../{2020 => 2020-01-01}/hh_id_949.yaml | 0 .../{2021 => 2021-01-01}/hh_id_111.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1186.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1204.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1237.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1255.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1380.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1385.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1402.yaml | 0 .../{2021 => 2021-01-01}/hh_id_145.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1538.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1610.yaml | 0 .../{2021 => 2021-01-01}/hh_id_165.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1714.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1762.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1853.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1908.yaml | 0 .../{2021 => 2021-01-01}/hh_id_1999.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2022.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2208.yaml | 0 .../{2021 => 2021-01-01}/hh_id_225.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2258.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2295.yaml | 0 .../{2021 => 2021-01-01}/hh_id_238.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2400.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2416.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2476.yaml | 0 .../{2021 => 2021-01-01}/hh_id_262.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2766.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2782.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2836.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2886.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2945.yaml | 0 .../{2021 => 2021-01-01}/hh_id_2946.yaml | 0 .../{2021 => 2021-01-01}/hh_id_299.yaml | 0 .../{2021 => 2021-01-01}/hh_id_318.yaml | 0 .../{2021 => 2021-01-01}/hh_id_321.yaml | 0 .../{2021 => 2021-01-01}/hh_id_33.yaml | 0 .../{2021 => 2021-01-01}/hh_id_417.yaml | 0 .../{2021 => 2021-01-01}/hh_id_479.yaml | 0 .../{2021 => 2021-01-01}/hh_id_519.yaml | 0 .../{2021 => 2021-01-01}/hh_id_522.yaml | 0 .../{2021 => 2021-01-01}/hh_id_618.yaml | 0 .../{2021 => 2021-01-01}/hh_id_620.yaml | 0 .../{2021 => 2021-01-01}/hh_id_651.yaml | 0 .../{2021 => 2021-01-01}/hh_id_738.yaml | 0 .../{2021 => 2021-01-01}/hh_id_761.yaml | 0 .../{2021 => 2021-01-01}/hh_id_788.yaml | 0 .../{2021 => 2021-01-01}/hh_id_798.yaml | 0 .../{2021 => 2021-01-01}/hh_id_810.yaml | 0 .../{2021 => 2021-01-01}/hh_id_864.yaml | 0 .../{2021 => 2021-01-01}/hh_id_867.yaml | 0 .../{2021 => 2021-01-01}/hh_id_883.yaml | 0 .../{2021 => 2021-01-01}/hh_id_885.yaml | 0 .../{2021 => 2021-01-01}/hh_id_9.yaml | 0 .../{2021 => 2021-01-01}/hh_id_946.yaml | 0 .../{2021 => 2021-01-01}/hh_id_948.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1019.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1166.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1209.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1305.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1364.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1473.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1519.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1667.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1770.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1784.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1881.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1904.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1907.yaml | 0 .../{2022 => 2022-01-01}/hh_id_1918.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2099.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2111.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2118.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2129.yaml | 0 .../{2022 => 2022-01-01}/hh_id_224.yaml | 0 .../{2022 => 2022-01-01}/hh_id_241.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2410.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2423.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2428.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2439.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2447.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2868.yaml | 0 .../{2022 => 2022-01-01}/hh_id_2962.yaml | 0 .../{2022 => 2022-01-01}/hh_id_664.yaml | 0 .../{2022 => 2022-01-01}/hh_id_688.yaml | 0 .../{2022 => 2022-01-01}/hh_id_720.yaml | 0 .../{2022 => 2022-01-01}/hh_id_840.yaml | 0 .../{2022 => 2022-01-01}/hh_id_848.yaml | 0 .../{2022 => 2022-01-01}/hh_id_963.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1019.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1166.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1209.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1305.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1364.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1473.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1519.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1667.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1770.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1784.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1881.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1904.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1907.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1918.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2099.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2111.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2118.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2129.yaml | 0 .../{2023 => 2023-01-01}/hh_id_224.yaml | 0 .../{2023 => 2023-01-01}/hh_id_241.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2410.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2423.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2428.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2439.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2447.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2868.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2962.yaml | 0 .../{2023 => 2023-01-01}/hh_id_664.yaml | 0 .../{2023 => 2023-01-01}/hh_id_688.yaml | 0 .../{2023 => 2023-01-01}/hh_id_720.yaml | 0 .../{2023 => 2023-01-01}/hh_id_840.yaml | 0 .../{2023 => 2023-01-01}/hh_id_848.yaml | 0 .../{2023 => 2023-01-01}/hh_id_963.yaml | 0 .../1991-01-01/hh_id_2.yaml" | 0 .../1993-01-01/hh_id_5.yaml" | 0 .../1996-01-01/hh_id_6.yaml" | 0 .../1999-01-01/hh_id_4.yaml" | 0 .../2003-01-01/hh_id_3.yaml" | 0 .../2022-01-01/hh_id_1.yaml" | 0 .../2023-01-01/hh_id_7.yaml" | 0 .../2024-01-01/couple_above_threshold.yaml" | 0 .../2024-01-01/couple_below_threshold.yaml" | 0 .../2024-01-01/single_above_threshold.yaml" | 0 .../2024-01-01/single_below_threshold.yaml" | 0 .../{2010 => 2010-01-01}/hh_id_6.yaml | 0 .../{2011 => 2011-01-01}/hh_id_7.yaml | 0 .../{2015 => 2015-01-01}/skip_hh_id_5.yaml | 0 .../{2019 => 2019-01-01}/hh_id_1.yaml | 0 .../{2019 => 2019-01-01}/hh_id_2.yaml | 0 .../{2019 => 2019-01-01}/hh_id_3.yaml | 0 .../{2019 => 2019-01-01}/hh_id_4.yaml | 0 ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 0 ...eringf\303\274gig_besch\303\244ftigt.yaml" | 0 .../regul\303\244r_besch\303\244ftigt.yaml" | 0 .../selbst\303\244ndig_viel_einkommen.yaml" | 0 .../selbst\303\244ndig_wenig_einkommen.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 0 .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 0 .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 0 .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 0 .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 0 .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 0 .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 0 .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 0 .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 0 .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 0 .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 0 .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 0 .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 0 .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 0 .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 0 .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 0 .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 0 .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 0 .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 0 .../above_new_beitragsbemessungsgrenze.yaml" | 0 .../above_old_beitragsbemessungsgrenze.yaml" | 0 .../below_beitragsbemessungsgrenze.yaml" | 0 .../pflegev_anz_kinder_bis_24.yaml" | 0 .../2023-01-01/skip_minijobgrenze.yaml" | 0 .../2024-01-01/skip_minijobgrenze.yaml" | 0 .../cohort_1936_female.yaml | 0 .../cohort_1936_male.yaml | 0 .../cohort_1953_female.yaml | 0 .../cohort_1953_male.yaml | 0 .../cohort_1936_female.yaml | 0 .../cohort_1936_male.yaml | 0 .../cohort_1937_female.yaml | 0 .../cohort_1937_male.yaml | 0 .../cohort_1938_female.yaml | 0 .../cohort_1938_male.yaml | 0 .../cohort_1939_female.yaml | 0 .../cohort_1939_male.yaml | 0 .../cohort_1940_female.yaml | 0 .../cohort_1940_male.yaml | 0 .../cohort_1941_female.yaml | 0 .../cohort_1941_male.yaml | 0 .../cohort_1942_female.yaml | 0 .../cohort_1942_male.yaml | 0 .../cohort_1943_female.yaml | 0 .../cohort_1943_male.yaml | 0 .../cohort_1944_female.yaml | 0 .../cohort_1944_male.yaml | 0 .../cohort_1945_female.yaml | 0 .../cohort_1945_male.yaml | 0 .../cohort_1946_female.yaml | 0 .../cohort_1946_male.yaml | 0 .../cohort_1947_female.yaml | 0 .../cohort_1947_male.yaml | 0 .../cohort_1948_female.yaml | 0 .../cohort_1948_male.yaml | 0 .../cohort_1949_female.yaml | 0 .../cohort_1949_male.yaml | 0 .../cohort_1950_female.yaml | 0 .../cohort_1950_male.yaml | 0 .../cohort_1951_female.yaml | 0 .../cohort_1951_male.yaml | 0 .../cohort_1952_female.yaml | 0 .../cohort_1952_male.yaml | 0 .../cohort_1953_female.yaml | 0 .../cohort_1953_male.yaml | 0 .../cohort_1936_female.yaml | 0 .../cohort_1936_male.yaml | 0 .../cohort_1937_female.yaml | 0 .../cohort_1937_male.yaml | 0 .../cohort_1938_female.yaml | 0 .../cohort_1938_male.yaml | 0 .../cohort_1939_female.yaml | 0 .../cohort_1939_male.yaml | 0 .../cohort_1940_female.yaml | 0 .../cohort_1940_male.yaml | 0 .../cohort_1941_female.yaml | 0 .../cohort_1941_male.yaml | 0 .../cohort_1942_female.yaml | 0 .../cohort_1942_male.yaml | 0 .../cohort_1943_female.yaml | 0 .../cohort_1943_male.yaml | 0 .../cohort_1944_female.yaml | 0 .../cohort_1944_male.yaml | 0 .../cohort_1945_female.yaml | 0 .../cohort_1945_male.yaml | 0 .../cohort_1946_female.yaml | 0 .../cohort_1946_male.yaml | 0 .../cohort_1947_female.yaml | 0 .../cohort_1947_male.yaml | 0 .../cohort_1948_female.yaml | 0 .../cohort_1948_male.yaml | 0 .../cohort_1946_female.yaml | 0 .../cohort_1946_male.yaml | 0 .../cohort_1947_female.yaml | 0 .../cohort_1947_male.yaml | 0 .../cohort_1948_female.yaml | 0 .../cohort_1948_male.yaml | 0 .../cohort_1949_female.yaml | 0 .../cohort_1949_male.yaml | 0 .../cohort_1950_female.yaml | 0 .../cohort_1950_male.yaml | 0 .../cohort_1951_female.yaml | 0 .../cohort_1951_male.yaml | 0 .../cohort_1952_female.yaml | 0 .../cohort_1952_male.yaml | 0 .../cohort_1953_female.yaml | 0 .../cohort_1953_male.yaml | 0 .../cohort_1954_female.yaml | 0 .../cohort_1954_male.yaml | 0 .../cohort_1955_female.yaml | 0 .../cohort_1955_male.yaml | 0 .../cohort_1956_female.yaml | 0 .../cohort_1956_male.yaml | 0 .../cohort_1957_female.yaml | 0 .../cohort_1957_male.yaml | 0 .../cohort_1958_female.yaml | 0 .../cohort_1958_male.yaml | 0 .../cohort_1959_female.yaml | 0 .../cohort_1959_male.yaml | 0 .../cohort_1960_female.yaml | 0 .../cohort_1960_male.yaml | 0 .../cohort_1961_female.yaml | 0 .../cohort_1961_male.yaml | 0 .../cohort_1962_female.yaml | 0 .../cohort_1962_male.yaml | 0 .../cohort_1963_female.yaml | 0 .../cohort_1963_male.yaml | 0 .../cohort_1964_female.yaml | 0 .../cohort_1964_male.yaml | 0 .../cohort_1930_frauen.yaml | 0 .../cohort_1930_langj.yaml | 0 .../cohort_1930_langj_and_arbeitsl.yaml | 0 .../cohort_1930_langj_and_frauen.yaml | 0 .../cohort_1930_ohne_vorzeitig.yaml | 0 .../cohort_1930_wegen_arbeitsl.yaml | 0 .../cohort_1937_wegen_arbeitsl.yaml | 0 .../cohort_1938_wegen_arbeitsl.yaml | 0 .../cohort_1939_wegen_arbeitsl.yaml | 0 .../cohort_1940_wegen_arbeitsl.yaml | 0 .../cohort_1941_wegen_arbeitsl.yaml | 0 .../cohort_1942_wegen_arbeitsl.yaml | 0 .../cohort_1943_wegen_arbeitsl.yaml | 0 .../cohort_1944_wegen_arbeitsl.yaml | 0 .../cohort_1945_wegen_arbeitsl.yaml | 0 .../cohort_1946_wegen_arbeitsl.yaml | 0 .../cohort_1947_wegen_arbeitsl.yaml | 0 .../cohort_1948_wegen_arbeitsl.yaml | 0 .../cohort_1949_wegen_arbeitsl.yaml | 0 .../cohort_1950_wegen_arbeitsl.yaml | 0 .../cohort_1951_wegen_arbeitsl.yaml | 0 .../cohort_1952_wegen_arbeitsl.yaml | 0 .../cohort_1953_wegen_arbeitsl.yaml | 0 .../cohort_1954_wegen_arbeitsl.yaml | 0 .../cohort_1955_wegen_arbeitsl.yaml | 0 .../eligibility_pathways.yaml | 0 .../cohort_1930_wegen_arbeitsl.yaml | 0 .../cohort_1937_wegen_arbeitsl.yaml | 0 .../cohort_1938_wegen_arbeitsl.yaml | 0 .../cohort_1939_wegen_arbeitsl.yaml | 0 .../cohort_1940_wegen_arbeitsl.yaml | 0 .../cohort_1941_wegen_arbeitsl.yaml | 0 .../cohort_1942_wegen_arbeitsl.yaml | 0 .../cohort_1943_wegen_arbeitsl.yaml | 0 .../cohort_1944_wegen_arbeitsl.yaml | 0 .../cohort_1945_wegen_arbeitsl.yaml | 0 .../cohort_1946_wegen_arbeitsl.yaml | 0 .../cohort_1947_wegen_arbeitsl.yaml | 0 .../cohort_1948_wegen_arbeitsl.yaml | 0 .../cohort_1949_wegen_arbeitsl.yaml | 0 .../cohort_1950_wegen_arbeitsl.yaml | 0 .../cohort_1951_wegen_arbeitsl.yaml | 0 .../cohort_1952_wegen_arbeitsl.yaml | 0 .../cohort_1953_wegen_arbeitsl.yaml | 0 .../cohort_1954_wegen_arbeitsl.yaml | 0 .../cohort_1955_wegen_arbeitsl.yaml | 0 .../cohort_1930_wegen_arbeitsl.yaml | 0 ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 0 ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 0 .../cohort_1937_wegen_arbeitsl.yaml | 0 .../cohort_1938_wegen_arbeitsl.yaml | 0 .../cohort_1939_wegen_arbeitsl.yaml | 0 ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 0 .../cohort_1940_wegen_arbeitsl.yaml | 0 ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 0 .../cohort_1941_wegen_arbeitsl.yaml | 0 ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 0 .../cohort_1942_wegen_arbeitsl.yaml | 0 ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 0 ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1940_claim.yaml | 0 ...t_birthyear_1940_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1941_claim.yaml | 0 ...t_birthyear_1941_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1943_claim.yaml | 0 ...t_birthyear_1943_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1945_claim.yaml | 0 ...t_birthyear_1945_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1950_claim.yaml | 0 ...t_birthyear_1950_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1960_claim.yaml | 0 ...t_birthyear_1960_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...werbsgemindert_birthyear_1990_2_claim.yaml | 0 ...birthyear_1990_2_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1960_claim.yaml | 0 ...t_birthyear_1960_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1990_claim.yaml | 0 ...t_birthyear_1990_preliminary_products.yaml | 0 .../langj_versicherte_wartezeit_1.yaml | 0 .../langj_versicherte_wartezeit_2.yaml | 0 .../langj_versicherte_wartezeit_3.yaml | 0 .../langj_versicherte_wartezeit_4.yaml | 0 .../langj_versicherte_wartezeit_5.yaml | 0 ...erwerbsgemindert_birthyear_1995_claim.yaml | 0 ...t_birthyear_1995_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1960_claim.yaml | 0 ...t_birthyear_1960_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1980_claim.yaml | 0 ...t_birthyear_1980_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1990_claim.yaml | 0 ...t_birthyear_1990_preliminary_products.yaml | 0 ...werbsgemindert_birthyear_2000_2_claim.yaml | 0 ...birthyear_2000_2_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_2000_claim.yaml | 0 ...t_birthyear_2000_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1957_claim.yaml | 0 ...t_birthyear_1957_preliminary_products.yaml | 0 ...werbsgemindert_birthyear_1970_2_claim.yaml | 0 ...birthyear_1970_2_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1970_claim.yaml | 0 ...t_birthyear_1970_preliminary_products.yaml | 0 ...erwerbsgemindert_birthyear_1995_claim.yaml | 0 ...t_birthyear_1995_preliminary_products.yaml | 0 .../einkommen_unter_grenze.yaml | 0 .../einkommen_\303\274ber_grenze.yaml" | 0 .../{2018 => 2018-01-01}/hohes_einkommen.yaml | 0 .../{2018 => 2018-01-01}/kein_einkommen.yaml | 0 .../mittleres_einkommen.yaml | 0 .../niedriges_einkommen.yaml | 0 .../{2021 => 2021-01-01}/hohes_einkommen.yaml | 0 .../{2021 => 2021-01-01}/kein_einkommen.yaml | 0 .../mittleres_einkommen.yaml | 0 .../niedriges_einkommen.yaml | 0 .../{2023 => 2023-01-01}/hohes_einkommen.yaml | 0 .../{2023 => 2023-01-01}/kein_einkommen.yaml | 0 .../mittleres_einkommen.yaml | 0 .../niedriges_einkommen.yaml | 0 .../{2023 => 2023-01-01}/hh_id_1.yaml | 0 .../{2023 => 2023-01-01}/hh_id_2.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../{2018-1 => 2018-01-01}/hh_id_5.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../older_child_parent_with_income.yaml | 0 .../older_child_parent_without_income.yaml | 0 .../young_child_parent_without_income.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../{2019-8 => 2019-08-01}/hh_id_1.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 .../anspruchshoehe_mittlere_altergruppe.yaml | 0 ...oehe_obere_altergruppe_kein_einkommen.yaml | 0 .../anspruchshoehe_untere_altergruppe.yaml | 0 ...kein_einkommen_ueber_einkommensgrenze.yaml | 0 .../2006-01-01/hh_id_4.yaml" | 0 .../2009-01-01/hh_id_3.yaml" | 0 .../2013-01-01/hh_id_2.yaml" | 0 .../2014-01-01/hh_id_7.yaml" | 0 .../2016-01-01/hh_id_1.yaml" | 0 .../2019-01-01/hh_id_6.yaml" | 0 .../2019-01-01/hh_id_8.yaml" | 0 .../{2006 => 2006-01-01}/hh_id_15.yaml | 0 .../{2006 => 2006-01-01}/hh_id_4.yaml | 0 .../vermoegen_zu_hoch.yaml | 0 .../{2013 => 2013-01-01}/hh_id_2.yaml | 0 .../{2013 => 2013-01-01}/hh_id_9.yaml | 0 .../{2016 => 2016-01-01}/hh_id_1.yaml | 0 .../{2018 => 2018-01-01}/hh_id_7.yaml | 0 .../{2018 => 2018-01-01}/hh_id_8.yaml | 0 .../vermoegen_zu_hoch.yaml | 0 .../{2019 => 2019-01-01}/hh_id_5.yaml | 0 .../{2021 => 2021-01-01}/hh_id_10.yaml | 0 .../{2023 => 2023-01-01}/hh_id_11.yaml | 0 .../{2023 => 2023-01-01}/hh_id_12.yaml | 0 .../{2023 => 2023-01-01}/hh_id_13.yaml | 0 .../{2023 => 2023-01-01}/hh_id_14.yaml | 0 .../{2023 => 2023-01-01}/hh_id_16.yaml | 0 .../{2023 => 2023-01-01}/hh_id_17.yaml | 0 .../mindesteinkommen.yaml | 0 .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 0 .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 0 src/_gettsim_tests/test_groupings.py | 2 +- src/_gettsim_tests/test_lohnsteuer.py | 8 ++++-- src/_gettsim_tests/utils.py | 24 +++++------------ src/ttsim/function_types.py | 16 +++++------- src/ttsim/policy_environment.py | 26 +++---------------- src/ttsim/shared.py | 18 ++++++++----- src/ttsim/typing.py | 5 +++- tests/ttsim/test_policy_environment.py | 4 +-- tests/ttsim/test_visualizations.py | 2 +- tests/ttsim/utils.py | 17 +++--------- 1001 files changed, 56 insertions(+), 84 deletions(-) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/fg_id_not_sensitive_to_order.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelsatz_multiple_children.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2005 => 2005-01-01}/regelsatz_no_adult_in_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2006 => 2006-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2009 => 2009-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2009 => 2009-01-01}/kind_20_jahre_in_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2013 => 2013-01-01}/hh_id_12.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2013 => 2013-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2013 => 2013-01-01}/hh_id_14.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2013 => 2013-01-01}/hh_id_15.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2013 => 2013-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2018 => 2018-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2019 => 2019-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2019 => 2019-01-01}/test_age_limits_13_14.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2019 => 2019-01-01}/test_age_limits_5_6.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2022 => 2022-01-01}/hh_id_10.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2022 => 2022-01-01}/hh_id_11.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/hh_id_16.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/hh_id_19.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/hh_id_25.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/test_age_limits_17_18.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/test_family_high_wealth.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-01 => 2023-01-01}/test_family_wealth_below_threshold.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-07 => 2023-07-01}/hh_id_20.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-07 => 2023-07-01}/hh_id_21.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-07 => 2023-07-01}/hh_id_22.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-07 => 2023-07-01}/hh_id_23.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2023-07 => 2023-07-01}/hh_id_24.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/alleinerz_kein_kindergelduebertrag.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/alleinerz_teilw_kindergelduebertrag.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/alleinerz_voller_kindergelduebertrag.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/kost_unterk_multiple_bg_in_hh.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/kost_unterk_one_bg_in_hh.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelsatz_multiple_children.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/regelsatz_no_adult_in_bg.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/single_no_income.yaml (100%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/{2024 => 2024-01-01}/skip_single_no_children.yaml (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2009 => 2009-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2012 => 2012-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2015 => 2015-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2018 => 2018-01-01}/couple_1_child.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2018 => 2018-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2018 => 2018-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2023 => 2023-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2024 => 2024-01-01}/couple_1_child.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2024 => 2024-01-01}/couple_above_soli_freibetrag.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2024 => 2024-01-01}/single_above_soli_freibetrag.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/betrag/{2024 => 2024-01-01}/single_below_soli_freibetrag.yaml (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" (100%) rename "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" => "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2010 => 2010-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2010 => 2010-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2010 => 2010-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2010 => 2010-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2010 => 2010-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2015 => 2015-01-01}/hh_id_16.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2015 => 2015-01-01}/hh_id_17.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2017 => 2017-01-01}/hh_id_18.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_10.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_11.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_12.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2018 => 2018-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2019 => 2019-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2020 => 2020-01-01}/hh_id_14.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2020 => 2020-01-01}/hh_id_19.yaml (100%) rename src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/{2020 => 2020-01-01}/hh_id_20.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2017 => 2017-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2018 => 2018-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2018 => 2018-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2018 => 2018-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2018 => 2018-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2018 => 2018-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2019 => 2019-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/income_during_elterngeld.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/maximum_elterngeld.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/minimum_elterngeld.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/net_income_approximation.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/net_income_before_birth_1000.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/net_income_before_birth_790.yaml (100%) rename src/_gettsim_tests/test_data/elterngeld/{2024 => 2024-01-01}/replacement_rate_decrease.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/alleinerz_one_child_budgetsatz.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/alleinerz_one_child_regelsatz_high_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/alleinerz_one_child_regelsatz_low_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/married_one_child_budgetsatz_high_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/married_one_child_budgetsatz_low_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/married_one_child_regelsatz.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/married_two_children_budgetsatz_and_regelsatz_high_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2005 => 2005-01-01}/married_two_children_budgetsatz_and_regelsatz_low_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2007 => 2007-01-01}/born_after_abolishment.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2007 => 2007-01-01}/married_two_children_budgetsatz_and_regelsatz_high_income.yaml (100%) rename src/_gettsim_tests/test_data/erziehungsgeld/{2007 => 2007-01-01}/married_two_children_budgetsatz_and_regelsatz_low_income.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/full_taxes_and_transfers/{2019 => 2019-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/alleinerziehend_anderer_elternteil_unbekannt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_unverheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_anderer_verwandter.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_grosselternteil.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_verheiratet.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_1_kind_with_income.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_verheiratet_kinder_verheiratet.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/eltern_viele_kinder.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/mehrere_haushalte_durchmischt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_eltern_kinder_widerspruechliche_veranlagung.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_enkelkind_und_sgb_ii_grossmutter.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_enkelkind_und_sgb_xii_grossmutter.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/skip_partner_widerspruechliche_veranlagungs_info.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/verschiedene_haushalte_nur_sn_id.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml (100%) rename src/_gettsim_tests/test_data/groupings/{2023 => 2023-01-01}/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2007 => 2007-01-01}/eltern_getrennt_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2007 => 2007-01-01}/eltern_verheiratet_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2007 => 2007-01-01}/eltern_verheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2007 => 2007-01-01}/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml (100%) rename "src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" => "src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" (100%) rename src/_gettsim_tests/test_data/household_links/{2024 => 2024-01-01}/eltern_getrennt_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2024 => 2024-01-01}/eltern_verheiratet_1_kind.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2024 => 2024-01-01}/eltern_verheiratet_2_kinder.yaml (100%) rename src/_gettsim_tests/test_data/household_links/{2024 => 2024-01-01}/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml (100%) rename "src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" => "src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" (100%) rename src/_gettsim_tests/test_data/kindergeld/{2002 => 2002-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2010 => 2010-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2010 => 2010-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2011 => 2011-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2013 => 2013-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2019 => 2019-01-01}/hh_id_0.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2019 => 2019-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2019 => 2019-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2019 => 2019-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2020 => 2020-01-01}/hh_id_10.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2021 => 2021-01-01}/3_children.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2021 => 2021-01-01}/hh_id_11.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2021 => 2021-01-01}/hh_id_12.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2023 => 2023-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2024 => 2024-01-01}/alleinerz_1_child_low_unterhalt.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2024 => 2024-01-01}/alleinerz_1_child_no_unterhalt.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2024 => 2024-01-01}/alleinerz_2_children_low_unterhalt.yaml (100%) rename src/_gettsim_tests/test_data/kindergeld/{2024 => 2024-01-01}/alleinerz_2_children_no_unterhalt.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2013 => 2013-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2016 => 2016-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2016 => 2016-01-01}/hh_id_11.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2016 => 2016-01-01}/hh_id_12.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2016 => 2016-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2016 => 2016-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2017 => 2017-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2019 => 2019-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2020 => 2020-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2021 => 2021-01-01}/hh_id_10.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2023 => 2023-01-01}/hh_id_14.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2023 => 2023-01-01}/test_child_income.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2023 => 2023-01-01}/test_family_high_wealth.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2023 => 2023-01-01}/test_higher_wealth_exemptions.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2024 => 2024-01-01}/test_bruttokaltmiete_mehrere_bg_in_hh.yaml (100%) rename src/_gettsim_tests/test_data/kinderzuschlag/{2024 => 2024-01-01}/test_max_transfer.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1045.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1051.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1081.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1134.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_121.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1214.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1219.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1435.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1462.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1476.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1555.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1627.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1793.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1796.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1915.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_1982.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2042.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2174.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2224.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2451.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2552.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2593.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2601.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2639.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2726.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2732.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2861.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_2924.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_400.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_470.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_561.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_583.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_72.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_736.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_76.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_765.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_769.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_786.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_790.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_802.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_830.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_856.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_857.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_891.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2015 => 2015-01-01}/hh_id_925.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1000.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1086.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1115.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1133.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1175.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_123.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1281.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1335.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1367.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1532.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1700.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1705.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1822.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_1958.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2065.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2151.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2220.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2289.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2358.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2396.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2645.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2693.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2724.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2744.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2932.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_2961.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_307.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_435.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_444.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_583.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_699.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_765.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_779.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_807.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_821.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_898.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_950.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_965.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2016 => 2016-01-01}/hh_id_968.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1019.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1088.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1134.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1164.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1279.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_146.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1503.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_151.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1532.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1549.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1615.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1705.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1788.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1841.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1866.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1878.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1923.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_1945.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2005.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2151.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2177.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2226.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2293.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2512.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_266.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2677.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2729.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2881.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2918.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2934.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2956.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2974.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_2991.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_30.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_416.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_455.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_496.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_506.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_528.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_568.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_575.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_588.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_659.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_743.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_881.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_910.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_933.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2017 => 2017-01-01}/hh_id_996.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1159.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1213.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_130.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1314.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_152.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1632.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1727.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_174.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1786.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1802.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_184.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_1935.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2098.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2156.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2186.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2395.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2491.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2575.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2649.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2720.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2828.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2904.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_2999.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_315.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_375.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_417.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_559.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_624.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_791.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_796.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_81.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_835.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_851.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_947.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_959.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2018 => 2018-01-01}/hh_id_98.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1014.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1093.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1098.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_111.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1180.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1210.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1354.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1629.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1695.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1709.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_180.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1825.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_1846.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2025.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2070.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2159.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2204.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2375.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2393.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2469.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2516.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_265.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2708.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2729.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2736.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2760.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2818.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_286.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2900.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2904.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_2942.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_317.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_331.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_396.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_420.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_605.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_646.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_65.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_664.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_698.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_710.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_715.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_809.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_816.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_832.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_879.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_882.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_949.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2019 => 2019-01-01}/hh_id_978.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1015.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1096.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1118.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1273.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1310.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1378.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1417.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1468.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_160.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_161.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1705.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1767.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1775.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1788.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1790.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_1928.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2106.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2182.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2184.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2230.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2320.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2389.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2439.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2527.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2562.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2587.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_266.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2888.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2898.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2920.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2953.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_2998.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_367.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_400.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_409.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_481.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_513.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_630.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_648.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_70.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_798.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_835.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_901.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_926.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2020 => 2020-01-01}/hh_id_949.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_111.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1186.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1204.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1237.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1255.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1380.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1385.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1402.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_145.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1538.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1610.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_165.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1714.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1762.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1853.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1908.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_1999.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2022.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2208.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_225.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2258.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2295.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_238.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2400.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2416.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2476.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_262.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2766.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2782.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2836.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2886.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2945.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_2946.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_299.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_318.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_321.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_33.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_417.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_479.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_519.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_522.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_618.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_620.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_651.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_738.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_761.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_788.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_798.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_810.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_864.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_867.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_883.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_885.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_946.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2021 => 2021-01-01}/hh_id_948.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1019.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1166.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1209.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1305.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1364.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1473.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1519.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1667.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1770.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1784.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1881.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1904.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1907.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_1918.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2099.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2111.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2118.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2129.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_224.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_241.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2410.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2423.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2428.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2439.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2447.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2868.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_2962.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_664.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_688.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_720.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_840.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_848.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2022 => 2022-01-01}/hh_id_963.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1019.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1166.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1209.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1305.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1364.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1473.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1519.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1667.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1770.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1784.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1881.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1904.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1907.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_1918.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2099.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2111.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2118.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2129.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_224.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_241.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2410.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2423.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2428.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2439.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2447.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2868.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_2962.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_664.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_688.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_720.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_840.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_848.yaml (100%) rename src/_gettsim_tests/test_data/lohnsteuer/{2023 => 2023-01-01}/hh_id_963.yaml (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" (100%) rename "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" => "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2010 => 2010-01-01}/hh_id_6.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2011 => 2011-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2015 => 2015-01-01}/skip_hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2019 => 2019-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2019 => 2019-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2019 => 2019-01-01}/hh_id_3.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/{2019 => 2019-01-01}/hh_id_4.yaml (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1989 => 1989-01-01}/cohort_1936_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1989 => 1989-01-01}/cohort_1936_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1989 => 1989-01-01}/cohort_1953_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1989 => 1989-01-01}/cohort_1953_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1936_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1936_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1937_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1937_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1938_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1938_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1939_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1939_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1940_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1940_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1941_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1941_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1942_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1942_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1943_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1943_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1944_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1944_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1945_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1945_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1946_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1946_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1947_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1947_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1948_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1948_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1949_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1949_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1950_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1950_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1951_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1951_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1952_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1952_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1953_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{1992 => 1992-01-01}/cohort_1953_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1936_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1936_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1937_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1937_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1938_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1938_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1939_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1939_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1940_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1940_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1941_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1941_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1942_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1942_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1943_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1943_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1944_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1944_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1945_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1945_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1946_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1946_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1947_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1947_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1948_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2012 => 2012-01-01}/cohort_1948_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1946_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1946_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1947_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1947_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1948_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1948_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1949_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1949_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1950_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1950_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1951_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1951_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1952_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1952_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1953_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1953_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1954_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1954_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1955_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1955_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1956_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1956_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1957_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1957_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1958_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1958_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1959_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1959_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1960_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1960_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1961_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1961_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1962_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1962_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1963_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1963_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1964_female.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/{2024 => 2024-01-01}/cohort_1964_male.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_frauen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_langj.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_langj_and_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_langj_and_frauen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_ohne_vorzeitig.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1930_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1937_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1938_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1939_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1940_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1941_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1942_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1943_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1944_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1945_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1946_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1947_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1948_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1949_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1950_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1951_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1952_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1953_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1954_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/cohort_1955_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1991 => 1991-01-01}/eligibility_pathways.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1930_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1937_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1938_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1939_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1940_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1941_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1942_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1943_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1944_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1945_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1946_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1947_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1948_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1949_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1950_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1951_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1952_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1953_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1954_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1992 => 1992-01-01}/cohort_1955_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1930_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1937_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1938_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1939_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1940_vertrauenss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1940_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1941_vertrauenss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1941_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1942_vertrauenss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1942_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1943_vertrauenss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/{1997 => 1997-01-01}/cohort_1944_vertrauenss_wegen_arbeitsl.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1940_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1941_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2001 => 2001-01-01}/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1943_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1945_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2004 => 2004-01-01}/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/teilw_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1950_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1960_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2008 => 2008-01-01}/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1960_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1990_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2012 => 2012-01-01}/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/langj_versicherte_wartezeit_1.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/langj_versicherte_wartezeit_2.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/langj_versicherte_wartezeit_3.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/langj_versicherte_wartezeit_4.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/langj_versicherte_wartezeit_5.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/teilw_erwerbsgemindert_birthyear_1995_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1960_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1980_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1990_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2018 => 2018-01-01}/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/teilw_erwerbsgemindert_birthyear_2000_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1957_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1970_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1995_claim.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/{2020 => 2020-01-01}/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2016 => 2016-01-01}/einkommen_unter_grenze.yaml (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2018 => 2018-01-01}/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2018 => 2018-01-01}/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2018 => 2018-01-01}/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2018 => 2018-01-01}/niedriges_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2021 => 2021-01-01}/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2021 => 2021-01-01}/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2021 => 2021-01-01}/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2021 => 2021-01-01}/niedriges_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2023 => 2023-01-01}/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2023 => 2023-01-01}/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2023 => 2023-01-01}/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/{2023 => 2023-01-01}/niedriges_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhalt/{2023 => 2023-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/unterhalt/{2023 => 2023-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2009 => 2009-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2009 => 2009-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2010 => 2010-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2010 => 2010-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2011 => 2011-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2011 => 2011-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2012 => 2012-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2012 => 2012-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2013 => 2013-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2013 => 2013-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2014 => 2014-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2014 => 2014-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2015 => 2015-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2015 => 2015-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2015-07 => 2015-07-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2015-07 => 2015-07-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2016 => 2016-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2016 => 2016-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017 => 2017-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017 => 2017-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017 => 2017-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017-07 => 2017-07-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017-07 => 2017-07-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017-07 => 2017-07-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2017-07 => 2017-07-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2018-1 => 2018-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2018-1 => 2018-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2018-1 => 2018-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2018-1 => 2018-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2018-1 => 2018-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-07 => 2019-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/older_child_parent_with_income.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/older_child_parent_without_income.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-01-01}/young_child_parent_without_income.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-07 => 2019-07-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-1 => 2019-07-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-07 => 2019-07-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-07 => 2019-07-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2019-8 => 2019-08-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2020 => 2020-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2020 => 2020-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2020 => 2020-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2020 => 2020-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2021 => 2021-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2021 => 2021-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2021 => 2021-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2021 => 2021-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2022 => 2022-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2022 => 2022-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2022 => 2022-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2022 => 2022-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2023 => 2023-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2023 => 2023-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2023 => 2023-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2023 => 2023-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2024 => 2024-01-01}/anspruchshoehe_mittlere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2024 => 2024-01-01}/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2024 => 2024-01-01}/anspruchshoehe_untere_altergruppe.yaml (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/{2024 => 2024-01-01}/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" (100%) rename "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" => "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" (100%) rename src/_gettsim_tests/test_data/wohngeld/{2006 => 2006-01-01}/hh_id_15.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2006 => 2006-01-01}/hh_id_4.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2009 => 2009-01-01}/vermoegen_zu_hoch.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2013 => 2013-01-01}/hh_id_2.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2013 => 2013-01-01}/hh_id_9.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2016 => 2016-01-01}/hh_id_1.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2018 => 2018-01-01}/hh_id_7.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2018 => 2018-01-01}/hh_id_8.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2018 => 2018-01-01}/vermoegen_zu_hoch.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2019 => 2019-01-01}/hh_id_5.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2021 => 2021-01-01}/hh_id_10.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_11.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_12.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_13.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_14.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_16.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/hh_id_17.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/mindesteinkommen.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/mischhaushalt_mit_einer_sgb_ii_bg.yaml (100%) rename src/_gettsim_tests/test_data/wohngeld/{2023 => 2023-01-01}/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml (100%) diff --git a/docs/how_to_guides/calculating_elterngeld.ipynb b/docs/how_to_guides/calculating_elterngeld.ipynb index 6829743e3a..4bc231e169 100644 --- a/docs/how_to_guides/calculating_elterngeld.ipynb +++ b/docs/how_to_guides/calculating_elterngeld.ipynb @@ -130,7 +130,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment_2023 = set_up_policy_environment(2023)\n", + "environment_2023 = set_up_policy_environment(\"2023-01-01\")\n", "\n", "net_wage_approximation = compute_taxes_and_transfers(\n", " data=data_before_birth,\n", diff --git a/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb b/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb index b5d5492a44..2a711b3e75 100644 --- a/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb +++ b/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb @@ -33,7 +33,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/docs/how_to_guides/visualizing_the_system.ipynb b/docs/how_to_guides/visualizing_the_system.ipynb index 6f9ed09edf..2d3d81049f 100644 --- a/docs/how_to_guides/visualizing_the_system.ipynb +++ b/docs/how_to_guides/visualizing_the_system.ipynb @@ -53,7 +53,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(date=2020)" + "environment = set_up_policy_environment(date=\"2020-01-01\")" ] }, { diff --git a/docs/tutorials/advanced_usage.ipynb b/docs/tutorials/advanced_usage.ipynb index c6a59fb983..ea904dcdb4 100644 --- a/docs/tutorials/advanced_usage.ipynb +++ b/docs/tutorials/advanced_usage.ipynb @@ -56,7 +56,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/docs/tutorials/basic_usage.ipynb b/docs/tutorials/basic_usage.ipynb index da88fc9a49..3c148012ad 100644 --- a/docs/tutorials/basic_usage.ipynb +++ b/docs/tutorials/basic_usage.ipynb @@ -54,7 +54,7 @@ "source": [ "The function `set_up_policy_environment` allows you to load the policy environment in Germany for a given date. The function returns an `PolicyEnvironment` object.\n", "\n", - "Below, we load the policy environment for the year 2020. The exact date for this input will be January 1st, 2020. An exact date would be accepted as an input, too." + "Below, we load the policy environment for 1 January 2020. GETTSIM always requires exact dates, either in the format YYYY-MM-DD or as a datetime.date object." ] }, { @@ -63,7 +63,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/docs/tutorials/debugging.ipynb b/docs/tutorials/debugging.ipynb index cb20737f98..33045433df 100644 --- a/docs/tutorials/debugging.ipynb +++ b/docs/tutorials/debugging.ipynb @@ -53,7 +53,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/docs/tutorials/parameters.ipynb b/docs/tutorials/parameters.ipynb index e8543ff588..eb194be924 100644 --- a/docs/tutorials/parameters.ipynb +++ b/docs/tutorials/parameters.ipynb @@ -61,7 +61,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/docs/tutorials/policy_functions.ipynb b/docs/tutorials/policy_functions.ipynb index e515e5ea27..497f6868e7 100644 --- a/docs/tutorials/policy_functions.ipynb +++ b/docs/tutorials/policy_functions.ipynb @@ -57,7 +57,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment = set_up_policy_environment(2020)" + "environment = set_up_policy_environment(\"2020-01-01\")" ] }, { diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/fg_id_not_sensitive_to_order.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/hh_id_8.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_multiple_children.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2005/regelsatz_no_adult_in_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2006/hh_id_4.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/hh_id_3.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2009/kind_20_jahre_in_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_12.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_13.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_14.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_15.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2013/hh_id_2.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2018/hh_id_9.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/hh_id_6.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_13_14.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2019/test_age_limits_5_6.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_10.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2022/hh_id_11.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_16.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_19.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/hh_id_25.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_age_limits_17_18.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_high_wealth.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01/test_family_wealth_below_threshold.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_20.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_21.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_22.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_23.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07/hh_id_24.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_kein_kindergelduebertrag.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_teilw_kindergelduebertrag.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/alleinerz_voller_kindergelduebertrag.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_multiple_bg_in_hh.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/kost_unterk_one_bg_in_hh.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_multiple_children.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/regelsatz_no_adult_in_bg.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/single_no_income.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml similarity index 100% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024/skip_single_no_children.yaml rename to src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004/hh_id_11.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_5.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_8.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005/hh_id_9.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_16.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_3.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010/hh_id_6.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018/hh_id_15.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020/hh_id_13.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021/hh_id_12.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_17.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022/hh_id_18.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023/hh_id_7.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2009/hh_id_4.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2012/hh_id_3.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2015/hh_id_2.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/couple_1_child.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_1.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2018/hh_id_5.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2023/hh_id_6.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_1_child.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/couple_above_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_above_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/betrag/2024/single_below_soli_freibetrag.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_1.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_2.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_3.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_4.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010/hh_id_5.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_16.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015/hh_id_17.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017/hh_id_18.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_10.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_11.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_12.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_7.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_8.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018/hh_id_9.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019/hh_id_13.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_14.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_19.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml similarity index 100% rename from src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020/hh_id_20.yaml rename to src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2017/hh_id_2.yaml rename to src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2018/hh_id_1.yaml rename to src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2018/hh_id_2.yaml rename to src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2018/hh_id_3.yaml rename to src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2018/hh_id_4.yaml rename to src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2018/hh_id_6.yaml rename to src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_1.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_3.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_5.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_6.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_7.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2019/hh_id_8.yaml rename to src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/income_during_elterngeld.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/maximum_elterngeld.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/minimum_elterngeld.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/net_income_approximation.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_1000.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/net_income_before_birth_790.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml diff --git a/src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml similarity index 100% rename from src/_gettsim_tests/test_data/elterngeld/2024/replacement_rate_decrease.yaml rename to src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_budgetsatz.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_high_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/alleinerz_one_child_regelsatz_low_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_high_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_budgetsatz_low_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/married_one_child_regelsatz.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_high_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2005/married_two_children_budgetsatz_and_regelsatz_low_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2007/born_after_abolishment.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_high_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/erziehungsgeld/2007/married_two_children_budgetsatz_and_regelsatz_low_income.yaml rename to src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_1.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_2.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_3.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_4.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_5.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_6.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_7.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/full_taxes_and_transfers/2019/hh_id_8.yaml rename to src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/alleinerziehend_anderer_elternteil_unbekannt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_unverheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_anderer_verwandter.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_grosselternteil.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_verheiratet.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_1_kind_with_income.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_verheiratet_kinder_verheiratet.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/eltern_viele_kinder.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/mehrere_haushalte_durchmischt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_eltern_kinder_widerspruechliche_veranlagung.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_ii_grossmutter.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_enkelkind_und_sgb_xii_grossmutter.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/skip_partner_widerspruechliche_veranlagungs_info.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/verschiedene_haushalte_nur_sn_id.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml diff --git a/src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml rename to src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2007/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2007/eltern_getrennt_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2007/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml rename to src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml diff --git "a/src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/household_links/2007/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" rename to "src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" diff --git a/src/_gettsim_tests/test_data/household_links/2024/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2024/eltern_getrennt_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_1_kind.yaml rename to src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder.yaml rename to src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml diff --git a/src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml similarity index 100% rename from src/_gettsim_tests/test_data/household_links/2024/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml rename to src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml diff --git "a/src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/household_links/2024/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" rename to "src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" diff --git a/src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2002/hh_id_2.yaml rename to src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2010/hh_id_4.yaml rename to src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2010/hh_id_6.yaml rename to src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2011/hh_id_7.yaml rename to src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2013/hh_id_8.yaml rename to src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2019/hh_id_0.yaml rename to src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2019/hh_id_1.yaml rename to src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2019/hh_id_3.yaml rename to src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2019/hh_id_5.yaml rename to src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2020/hh_id_10.yaml rename to src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2021/3_children.yaml rename to src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2021/hh_id_11.yaml rename to src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2021/hh_id_12.yaml rename to src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2023/hh_id_13.yaml rename to src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_low_unterhalt.yaml rename to src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_1_child_no_unterhalt.yaml rename to src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_low_unterhalt.yaml rename to src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml diff --git a/src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kindergeld/2024/alleinerz_2_children_no_unterhalt.yaml rename to src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2013/hh_id_2.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_1.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_11.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_12.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_13.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2016/hh_id_7.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2017/hh_id_9.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2019/hh_id_6.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2020/hh_id_8.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2021/hh_id_10.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2023/hh_id_14.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2023/test_child_income.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2023/test_family_high_wealth.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2023/test_higher_wealth_exemptions.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2024/test_bruttokaltmiete_mehrere_bg_in_hh.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml similarity index 100% rename from src/_gettsim_tests/test_data/kinderzuschlag/2024/test_max_transfer.yaml rename to src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1045.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1051.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1081.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1134.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_121.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1214.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1219.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1435.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1462.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1476.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1555.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1627.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1793.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1796.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1915.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_1982.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2042.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2174.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2224.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2451.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2552.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2593.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2601.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2639.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2726.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2732.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2861.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_2924.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_400.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_470.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_561.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_583.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_72.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_736.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_76.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_765.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_769.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_786.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_790.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_802.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_830.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_856.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_857.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_891.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2015/hh_id_925.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1000.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1086.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1115.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1133.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1175.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_123.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1281.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1335.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1367.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1532.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1700.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1705.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1822.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_1958.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2065.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2151.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2220.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2289.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2358.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2396.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2645.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2693.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2724.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2744.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2932.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_2961.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_307.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_435.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_444.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_583.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_699.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_765.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_779.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_807.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_821.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_898.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_9.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_950.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_965.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2016/hh_id_968.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1019.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1088.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1134.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1164.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1279.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_146.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1503.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_151.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1532.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1549.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1615.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1705.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1788.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1841.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1866.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1878.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1923.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_1945.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2005.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2151.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2177.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2226.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2293.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2512.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_266.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2677.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2729.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2881.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2918.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2934.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2956.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2974.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_2991.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_30.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_416.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_455.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_496.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_506.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_528.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_568.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_575.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_588.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_659.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_743.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_881.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_910.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_933.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2017/hh_id_996.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1159.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1213.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_130.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1314.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_152.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1632.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1727.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_174.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1786.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1802.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_184.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_1935.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2098.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2156.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2186.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2395.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2491.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2575.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2649.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2720.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2828.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2904.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_2999.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_315.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_375.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_417.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_559.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_624.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_791.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_796.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_81.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_835.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_851.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_947.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_959.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2018/hh_id_98.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1014.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1093.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1098.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_111.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1180.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1210.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1354.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1629.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1695.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1709.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_180.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1825.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_1846.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2025.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2070.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2159.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2204.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2375.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2393.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2469.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2516.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_265.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2708.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2729.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2736.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2760.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2818.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_286.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2900.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2904.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_2942.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_317.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_331.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_396.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_420.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_605.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_646.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_65.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_664.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_698.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_710.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_715.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_809.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_816.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_832.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_879.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_882.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_949.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2019/hh_id_978.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1015.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1096.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1118.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1273.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_13.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1310.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1378.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1417.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1468.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_160.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_161.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1705.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1767.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1775.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1788.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1790.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_1928.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2106.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2182.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2184.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2230.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2320.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2389.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2439.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2527.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2562.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2587.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_266.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2888.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2898.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2920.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2953.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_2998.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_367.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_400.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_409.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_481.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_513.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_630.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_648.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_70.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_798.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_835.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_901.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_926.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2020/hh_id_949.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_111.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1186.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1204.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1237.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1255.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1380.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1385.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1402.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_145.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1538.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1610.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_165.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1714.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1762.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1853.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1908.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_1999.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2022.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2208.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_225.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2258.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2295.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_238.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2400.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2416.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2476.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_262.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2766.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2782.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2836.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2886.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2945.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_2946.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_299.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_318.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_321.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_33.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_417.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_479.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_519.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_522.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_618.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_620.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_651.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_738.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_761.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_788.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_798.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_810.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_864.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_867.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_883.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_885.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_9.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_946.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2021/hh_id_948.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1019.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1166.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1209.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1305.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1364.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1473.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1519.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1667.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1770.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1784.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1881.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1904.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1907.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_1918.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2099.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2111.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2118.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2129.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_224.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_241.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2410.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2423.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2428.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2439.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2447.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2868.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_2962.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_664.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_688.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_720.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_840.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_848.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2022/hh_id_963.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1019.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1166.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1209.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1305.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1364.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1473.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1519.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1667.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1770.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1784.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1881.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1904.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1907.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_1918.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2099.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2111.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2118.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2129.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_224.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_241.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2410.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2423.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2428.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2439.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2447.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2868.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_2962.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_664.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_688.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_720.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_840.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_848.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml similarity index 100% rename from src/_gettsim_tests/test_data/lohnsteuer/2023/hh_id_963.yaml rename to src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993/hh_id_5.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996/hh_id_6.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003/hh_id_3.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023/hh_id_7.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_above_threshold.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/couple_below_threshold.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_above_threshold.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024/single_below_threshold.yaml" rename to "src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010/hh_id_6.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011/hh_id_7.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015/skip_hh_id_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019/hh_id_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/geringf\303\274gig_besch\303\244ftigt.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/regul\303\244r_besch\303\244ftigt.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_viel_einkommen.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002/selbst\303\244ndig_wenig_einkommen.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_10.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_11.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_12.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_7.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_8.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010/hh_id_9.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_3.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_5.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018/hh_id_6.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_23.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019/hh_id_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_15.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020/hh_id_25.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_16.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022/hh_id_17.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_18.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_19.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_20.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_21.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10/hh_id_22.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_23.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_25.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_26.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07/hh_id_27.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_new_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/above_old_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/below_beitragsbemessungsgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024/pflegev_anz_kinder_bis_24.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023/skip_minijobgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024/skip_minijobgrenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1937_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1938_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1939_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1940_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1941_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1942_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1943_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1944_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1945_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1949_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1950_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1951_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1952_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1936_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1937_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1938_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1939_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1940_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1941_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1942_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1943_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1944_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1945_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1946_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1947_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1948_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1949_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1950_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1951_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1952_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1953_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1954_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1955_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1956_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1957_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1958_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1959_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1960_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1961_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1962_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1963_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_female.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024/cohort_1964_male.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_frauen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_langj_and_frauen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_ohne_vorzeitig.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1943_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1944_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1950_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1953_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1954_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/cohort_1955_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991/eligibility_pathways.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1943_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1944_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1945_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1946_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1947_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1948_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1949_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1950_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1951_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1952_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1953_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1954_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992/cohort_1955_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1930_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1937_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1938_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1939_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1940_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1941_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1942_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1943_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997/cohort_1944_vertrauenss_wegen_arbeitsl.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_1.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_2.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_3.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_4.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/langj_versicherte_wartezeit_5.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_claim.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_unter_grenze.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016/einkommen_\303\274ber_grenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhalt/2023/hh_id_1.yaml rename to src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhalt/2023/hh_id_2.yaml rename to src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2009/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2010/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2011/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2012/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2013/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2014/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2016/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-1/hh_id_5.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_with_income.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/older_child_parent_without_income.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/young_child_parent_without_income.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-1/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-8/hh_id_1.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_mittlere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshoehe_untere_altergruppe.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006/hh_id_4.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009/hh_id_3.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013/hh_id_2.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014/hh_id_7.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016/hh_id_1.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_6.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019/hh_id_8.yaml" rename to "src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2006/hh_id_15.yaml rename to src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2006/hh_id_4.yaml rename to src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2009/vermoegen_zu_hoch.yaml rename to src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2013/hh_id_2.yaml rename to src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2013/hh_id_9.yaml rename to src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2016/hh_id_1.yaml rename to src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2018/hh_id_7.yaml rename to src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2018/hh_id_8.yaml rename to src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2018/vermoegen_zu_hoch.yaml rename to src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2019/hh_id_5.yaml rename to src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2021/hh_id_10.yaml rename to src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_11.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_12.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_13.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_14.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_16.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/hh_id_17.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/mindesteinkommen.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_einer_sgb_ii_bg.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml diff --git a/src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml similarity index 100% rename from src/_gettsim_tests/test_data/wohngeld/2023/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml rename to src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index c5572d4867..d39799c35d 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -46,7 +46,7 @@ def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): }, } - environment = cached_set_up_policy_environment(date="2023") + environment = cached_set_up_policy_environment("2023-01-01") with pytest.raises( ValueError, diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py index ab43424c36..d3a5b95e6c 100644 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -3,14 +3,18 @@ def test_lohnsteuer_rv_anteil(): - environment = set_up_policy_environment(resource_dir=RESOURCE_DIR, date=2018) + environment = set_up_policy_environment( + resource_dir=RESOURCE_DIR, date="2018-01-01" + ) assert ( environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 0.72 ) - environment = set_up_policy_environment(resource_dir=RESOURCE_DIR, date=2023) + environment = set_up_policy_environment( + resource_dir=RESOURCE_DIR, date="2023-01-01" + ) assert ( environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 1 diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 76ef3d7532..2c84254063 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -1,6 +1,5 @@ from __future__ import annotations -import datetime from functools import lru_cache from typing import TYPE_CHECKING @@ -15,19 +14,19 @@ merge_trees, set_up_policy_environment, ) -from ttsim.policy_environment import _parse_date +from ttsim.shared import to_datetime if TYPE_CHECKING: + import datetime from pathlib import Path - from ttsim import NestedDataDict, NestedInputStructureDict + from ttsim.typing import DashedISOString, NestedDataDict, NestedInputStructureDict def cached_set_up_policy_environment( - date: int | str | datetime.date, + date: datetime.date | DashedISOString, ) -> PolicyEnvironment: - normalized_date = _parse_date(date) - return _cached_set_up_policy_environment(normalized_date) + return _cached_set_up_policy_environment(to_datetime(date)) @lru_cache(maxsize=100) @@ -186,7 +185,7 @@ def _get_policy_tests_from_raw_test_data( } ) - date: datetime.date = _parse_date_from_dir_name(path_to_yaml.parent.name) + date: datetime.date = to_datetime(path_to_yaml.parent.name) out = [] if expected_output_tree == {}: @@ -217,14 +216,3 @@ def _get_policy_tests_from_raw_test_data( ) return out - - -def _parse_date_from_dir_name(date: str) -> datetime.date: - parts = date.split("-") - - if len(parts) == 1: - return datetime.date(int(parts[0]), 1, 1) - if len(parts) == 2: - return datetime.date(int(parts[0]), int(parts[1]), 1) - if len(parts) == 3: - return datetime.date(int(parts[0]), int(parts[1]), int(parts[2])) diff --git a/src/ttsim/function_types.py b/src/ttsim/function_types.py index 28f4222b7b..6ae2de7421 100644 --- a/src/ttsim/function_types.py +++ b/src/ttsim/function_types.py @@ -9,11 +9,13 @@ import numpy from ttsim.rounding import RoundingSpec -from ttsim.shared import validate_dashed_iso_date, validate_date_range +from ttsim.shared import to_datetime, validate_date_range if TYPE_CHECKING: from collections.abc import Callable + from ttsim.typing import DashedISOString + T = TypeVar("T") DEFAULT_START_DATE = datetime.date(1900, 1, 1) @@ -398,8 +400,8 @@ def __post_init__(self): def _convert_and_validate_dates( - start_date: str | datetime.date, - end_date: str | datetime.date, + start_date: datetime.date | DashedISOString, + end_date: datetime.date | DashedISOString, ) -> tuple[datetime.date, datetime.date]: """Convert and validate date strings to datetime.date objects. @@ -415,12 +417,8 @@ def _convert_and_validate_dates( tuple[datetime.date, datetime.date] The converted and validated start and end dates. """ - if isinstance(start_date, str): - validate_dashed_iso_date(start_date) - start_date = datetime.date.fromisoformat(start_date) - if isinstance(end_date, str): - validate_dashed_iso_date(end_date) - end_date = datetime.date.fromisoformat(end_date) + start_date = to_datetime(start_date) + end_date = to_datetime(end_date) validate_date_range(start_date, end_date) diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index 864ece8def..281bd697bc 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -29,6 +29,7 @@ ) from ttsim.shared import ( assert_valid_ttsim_pytree, + to_datetime, upsert_path_and_value, upsert_tree, ) @@ -38,6 +39,7 @@ from pathlib import Path from ttsim.typing import ( + DashedISOString, NestedAggregationSpecDict, NestedTTSIMObjectDict, ) @@ -168,7 +170,7 @@ def replace_all_parameters(self, params: dict[str, Any]): def set_up_policy_environment( - resource_dir: Path, date: datetime.date | str | int + resource_dir: Path, date: datetime.date | DashedISOString ) -> PolicyEnvironment: """ Set up the policy environment for a particular date. @@ -186,7 +188,7 @@ def set_up_policy_environment( The policy environment for the specified date. """ # Check policy date for correct format and convert to datetime.date - date = _parse_date(date) + date = to_datetime(date) functions_tree = load_objects_tree_for_date(resource_dir=resource_dir, date=date) @@ -210,26 +212,6 @@ def set_up_policy_environment( ) -def _parse_date(date: datetime.date | str | int) -> datetime.date: - """Check the policy date for different input formats. - - Parameters - ---------- - date - The date for which the policy system is set up. - - Returns - ------- - The date for which the policy system is set up as datetime.date. - - """ - if isinstance(date, str): - date = pd.to_datetime(date).date() - elif isinstance(date, int): - date = datetime.date(year=date, month=1, day=1) - return date - - def _convert_to_policy_function_if_not_ttsim_object( input_object: Callable | TTSIMObject, ) -> TTSIMObject: diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index 08ab7f4a6e..a78b6623f9 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -1,5 +1,6 @@ from __future__ import annotations +import datetime import inspect import itertools import re @@ -13,10 +14,9 @@ from _gettsim.config import SUPPORTED_GROUPINGS if TYPE_CHECKING: - import datetime - from ttsim.function_types import PolicyFunction from ttsim.typing import ( + DashedISOString, GenericCallable, NestedDataDict, NestedTTSIMObjectDict, @@ -24,12 +24,18 @@ ) -_DASHED_ISO_DATE = re.compile(r"\d{4}-\d{2}-\d{2}") +_DASHED_ISO_DATE_REGEX = re.compile(r"\d{4}-\d{2}-\d{2}") -def validate_dashed_iso_date(date: str | datetime.date): - if not _DASHED_ISO_DATE.match(date): - raise ValueError(f"Date {date} does not match the format YYYY-MM-DD.") +def to_datetime(date: datetime.date | DashedISOString): + if isinstance(date, datetime.date): + return date + if isinstance(date, str) and _DASHED_ISO_DATE_REGEX.fullmatch(date): + return datetime.date.fromisoformat(date) + else: + raise ValueError( + f"Date {date} neither matches the format YYYY-MM-DD nor is a datetime.date." + ) def validate_date_range(start: datetime.date, end: datetime.date): diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index d07ea38914..4dd6427d1c 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, NewType import numpy import pandas as pd @@ -45,6 +45,9 @@ str, AggregateByGroupSpec | AggregateByPIDSpec ] + DashedISOString = NewType("DashedISOString", str) + """A string representing a date in the format 'YYYY-MM-DD'.""" + def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: """Checks whether used series has already expected internal type. diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index e46f1802f8..5bc98c0545 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -76,12 +76,12 @@ def test_replace_all_parameters(self, environment: PolicyEnvironment): def test_leap_year_correctly_handled(): - set_up_policy_environment(date="02-29-2020", resource_dir=RESOURCE_DIR) + set_up_policy_environment(date="2020-02-29", resource_dir=RESOURCE_DIR) def test_fail_if_invalid_date(): with pytest.raises(ValueError): - set_up_policy_environment(date="02-30-2020", resource_dir=RESOURCE_DIR) + set_up_policy_environment(date="2020-02-30", resource_dir=RESOURCE_DIR) def test_fail_if_invalid_access_different_date(): diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index 2bca827fc3..ed87381ed1 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -12,7 +12,7 @@ plot_dag, ) -environment = set_up_policy_environment(date=2020, resource_dir=RESOURCE_DIR) +environment = set_up_policy_environment(date="2020-01-01", resource_dir=RESOURCE_DIR) @pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index c6fb7813de..c4f9026bcd 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -1,6 +1,5 @@ from __future__ import annotations -import datetime from pathlib import Path from typing import TYPE_CHECKING @@ -10,10 +9,13 @@ from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS from ttsim import merge_trees, set_up_policy_environment +from ttsim.shared import to_datetime TEST_DIR = Path(__file__).parent / "test_data" if TYPE_CHECKING: + import datetime + from ttsim import NestedDataDict, NestedInputStructureDict @@ -162,7 +164,7 @@ def _get_policy_tests_from_raw_test_data( } ) - date: datetime.date = _parse_date_from_dir_name(path_to_yaml.parent.name) + date: datetime.date = to_datetime(path_to_yaml.parent.name) out = [] if expected_output_tree == {}: @@ -193,14 +195,3 @@ def _get_policy_tests_from_raw_test_data( ) return out - - -def _parse_date_from_dir_name(date: str) -> datetime.date: - parts = date.split("-") - - if len(parts) == 1: - return datetime.date(int(parts[0]), 1, 1) - if len(parts) == 2: - return datetime.date(int(parts[0]), int(parts[1]), 1) - if len(parts) == 3: - return datetime.date(int(parts[0]), int(parts[1]), int(parts[2])) From 12170b21772dcc1ed8a9e603cc21d9d628b03411 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 14 Apr 2025 13:57:48 +0200 Subject: [PATCH 017/109] Remove custom type conversions. (#872) We put some effort into trying to convert types. However, the code was a mess and it would be a pain to maintain it. What Python/Pandas/Numpy/Jax do is more than good enough for GETTSIM, too. Now that we have the explicitly annotated `policy_inputs`, it will be easy to check and throw errors if users want to be strict. This PR removes the code which has been stale for the last week, anyhow. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- .../test_full_taxes_and_transfers.py | 3 +- src/ttsim/compute_taxes_and_transfers.py | 119 +------ src/ttsim/function_types.py | 37 ++ src/ttsim/typing.py | 140 +------- .../ttsim/test_compute_taxes_and_transfers.py | 337 +++++++++--------- 5 files changed, 209 insertions(+), 427 deletions(-) diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 0ef23d490d..5cd6579e3e 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -8,8 +8,7 @@ load_policy_test_data, ) from ttsim import compute_taxes_and_transfers -from ttsim.function_types import PolicyInput -from ttsim.typing import check_series_has_expected_type +from ttsim.function_types import PolicyInput, check_series_has_expected_type test_data = load_policy_test_data("full_taxes_and_transfers") diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index e9eec9e6c5..d06605818e 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -3,7 +3,7 @@ import functools import inspect import warnings -from typing import TYPE_CHECKING, Any, get_args +from typing import TYPE_CHECKING, Any import dags import dags.tree as dt @@ -15,9 +15,7 @@ ) from ttsim.config import numpy_or_jax as np from ttsim.function_types import ( - DerivedAggregationFunction, GroupByFunction, - PolicyFunction, PolicyInput, TTSIMFunction, ) @@ -34,10 +32,6 @@ partition_by_reference_dict, ) from ttsim.time_conversion import TIME_UNITS -from ttsim.typing import ( - check_series_has_expected_type, - convert_series_to_internal_type, -) if TYPE_CHECKING: from ttsim.typing import ( @@ -128,10 +122,6 @@ def compute_taxes_and_transfers( ) _warn_if_functions_overridden_by_data(functions_overridden) - # data_with_correct_types = _convert_data_to_correct_types( - # data=data, - # functions_overridden=functions_overridden, - # ) functions_with_rounding_specs = ( _add_rounding_to_functions(functions=functions_to_be_used) @@ -224,113 +214,6 @@ def _get_top_level_namespace( return all_top_level_names -def _convert_data_to_correct_types( - data: QualNameDataDict, functions_overridden: QualNameTTSIMFunctionDict -) -> QualNameDataDict: - """Convert all data columns to the type that is expected by GETTSIM. - - Parameters - ---------- - data - Data provided by the user. - functions_overridden - Functions that are overridden by data. - - Returns - ------- - Data with correct types. - - """ - collected_errors = ["The data types of the following columns are invalid:\n"] - collected_conversions = [ - "The data types of the following input variables have been converted:" - ] - general_warning = ( - "Note that the automatic conversion of data types is unsafe and that" - " its correctness cannot be guaranteed." - " The best solution is to convert all columns to the expected data" - " types yourself." - ) - - data_with_correct_types = {} - - for name, series in data.items(): - internal_type = None - - # Look for column in TYPES_INPUT_VARIABLES - types_qualified_input_variables = dt.flatten_to_qual_names( - TYPES_INPUT_VARIABLES - ) - if name in types_qualified_input_variables: - internal_type = types_qualified_input_variables[name] - # Look for column in functions_tree_overridden - elif name in functions_overridden: - func = functions_overridden[name] - func_is_group_by_function = isinstance( - getattr(func, "__wrapped__", func), GroupByFunction - ) - func_is_policy_function = isinstance( - getattr(func, "__wrapped__", func), PolicyFunction - ) and not isinstance( - getattr(func, "__wrapped__", func), DerivedAggregationFunction - ) - skip_vectorization = ( - func.skip_vectorization if func_is_policy_function else True - ) - return_annotation_is_array = ( - func_is_group_by_function or func_is_policy_function - ) and skip_vectorization - if return_annotation_is_array: - # Assumes that things are annotated with numpy.ndarray([dtype]), might - # require a change if using proper numpy.typing. Not changing for now - # as we will likely switch to JAX completely. - internal_type = get_args(func.__annotations__["return"])[0] - elif "return" in func.__annotations__: - internal_type = func.__annotations__["return"] - else: - pass - else: - pass - - # Make conversion if necessary - if internal_type and not check_series_has_expected_type( - series=series, internal_type=internal_type - ): - try: - converted_leaf = convert_series_to_internal_type( - series=series, internal_type=internal_type - ) - data_with_correct_types[name] = converted_leaf - collected_conversions.append( - f" - {name} from {series.dtype} to {internal_type.__name__}" - ) - except ValueError as e: - collected_errors.append(f"\n - {name}: {e}") - else: - data_with_correct_types[name] = series - - # If any error occured raise Error - if len(collected_errors) > 1: - msg = """ - Note that conversion from floating point to integers or Booleans inherently - suffers from approximation error. It might well be that your data seemingly - obey the restrictions when scrolling through them, but in fact they do not - (for example, because 1e-15 is displayed as 0.0). \n The best solution is to - convert all columns to the expected data types yourself. - """ - collected_errors = "\n".join(collected_errors) - raise ValueError(format_errors_and_warnings(collected_errors + msg)) - # Otherwise raise warning which lists all successful conversions - elif len(collected_conversions) > 1: - collected_conversions = format_list_linewise(collected_conversions) - warnings.warn( - collected_conversions + "\n" + "\n" + general_warning, - stacklevel=2, - ) - - return data_with_correct_types - - def _create_input_data_for_concatenated_function( data: QualNameDataDict, functions: QualNameTTSIMFunctionDict, diff --git a/src/ttsim/function_types.py b/src/ttsim/function_types.py index 6ae2de7421..bf4e15ed2f 100644 --- a/src/ttsim/function_types.py +++ b/src/ttsim/function_types.py @@ -7,6 +7,12 @@ from typing import TYPE_CHECKING, Literal, TypeVar import numpy +from pandas.api.types import ( + is_bool_dtype, + is_datetime64_any_dtype, + is_float_dtype, + is_integer_dtype, +) from ttsim.rounding import RoundingSpec from ttsim.shared import to_datetime, validate_date_range @@ -14,6 +20,9 @@ if TYPE_CHECKING: from collections.abc import Callable + import pandas as pd + + from ttsim.config import numpy_or_jax as np from ttsim.typing import DashedISOString T = TypeVar("T") @@ -423,3 +432,31 @@ def _convert_and_validate_dates( validate_date_range(start_date, end_date) return start_date, end_date + + +def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: + """Checks whether used series has already expected internal type. + + Parameters + ---------- + series : pandas.Series or pandas.DataFrame or dict of pandas.Series + Data provided by the user. + internal_type : TypeVar + One of the internal gettsim types. + + Returns + ------- + Bool + + """ + if ( + (internal_type == float) & (is_float_dtype(series)) + or (internal_type == int) & (is_integer_dtype(series)) + or (internal_type == bool) & (is_bool_dtype(series)) + or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) + ): + out = True + else: + out = False + + return out diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index 4dd6427d1c..0793168eae 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -1,20 +1,10 @@ from typing import TYPE_CHECKING, NewType -import numpy -import pandas as pd -from pandas.api.types import ( - is_bool_dtype, - is_datetime64_any_dtype, - is_float_dtype, - is_integer_dtype, - is_object_dtype, -) - -from ttsim.config import numpy_or_jax as np - if TYPE_CHECKING: from collections.abc import Mapping + import pandas as pd + # Make these available for import from other modules. from dags.tree.typing import ( # noqa: F401 GenericCallable, @@ -24,6 +14,7 @@ ) from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec + from ttsim.config import numpy_or_jax as np from ttsim.function_types import PolicyInput, TTSIMFunction, TTSIMObject NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] @@ -47,128 +38,3 @@ DashedISOString = NewType("DashedISOString", str) """A string representing a date in the format 'YYYY-MM-DD'.""" - - -def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: - """Checks whether used series has already expected internal type. - - Parameters - ---------- - series : pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. - internal_type : TypeVar - One of the internal gettsim types. - - Returns - ------- - Bool - - """ - if ( - (internal_type == float) & (is_float_dtype(series)) - or (internal_type == int) & (is_integer_dtype(series)) - or (internal_type == bool) & (is_bool_dtype(series)) - or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) - ): - out = True - else: - out = False - - return out - - -def convert_series_to_internal_type( - series: pd.Series, internal_type: np.dtype -) -> pd.Series: - """Check if data type of series fits to the internal type of gettsim and otherwise - convert data type of series to the internal type of gettsim. - - Parameters - ---------- - series : pd.Series - Some data series. - internal_type : TypeVar - One of the internal gettsim types. - - Returns - ------- - out : adjusted pd.Series - - """ - # Copy input series in out - out = series.copy() - - basic_error_msg = ( - f"Conversion from input type {out.dtype} to {internal_type.__name__} failed." - ) - if is_object_dtype(out): - raise ValueError(basic_error_msg + " Object type is not supported as input.") - else: - # Conversion to float - if internal_type == float: - # Conversion from boolean to float fails - if is_bool_dtype(out): - raise ValueError(basic_error_msg + " This conversion is not supported.") - else: - try: - out = out.astype(float) - except ValueError as e: - raise ValueError(basic_error_msg) from e - - # Conversion to int - elif internal_type == int: - if is_float_dtype(out): - # checking if decimal places are equal to 0, if not return error - if np.array_equal(out, out.astype(np.int64)): - out = out.astype(np.int64) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if all" - " decimal places of input data are equal to 0." - ) - else: - try: - out = out.astype(np.int64) - except ValueError as e: - raise ValueError(basic_error_msg) from e - - # Conversion to boolean - elif internal_type == bool: - # if input data type is integer - if is_integer_dtype(out): - # check if series consists only of 1 or 0 - if len([v for v in out.unique() if v not in [1, 0]]) == 0: - out = out.astype(bool) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if" - " input data exclusively contains the values 1 and 0." - ) - # if input data type is float - elif is_float_dtype(out): - # check if series consists only of 1.0 or 0.0 - if len([v for v in out.unique() if v not in [1, 0]]) == 0: - out = out.astype(bool) - else: - raise ValueError( - basic_error_msg + " This conversion is only supported if" - " input data exclusively contains the values 1.0 and 0.0." - ) - - else: - raise ValueError( - basic_error_msg + " Conversion to boolean is only supported for" - " int and float columns." - ) - - # Conversion to DateTime - elif internal_type == np.datetime64: - if not is_datetime64_any_dtype(out): - try: - out = out.astype(np.datetime64) - except ValueError as e: - raise ValueError(basic_error_msg) from e - else: - raise ValueError(f"The internal type {internal_type} is not yet supported.") - - return out diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index f07c94aebf..a1d1968eef 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -7,12 +7,10 @@ import pandas as pd import pytest from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS -from mettsim.payroll_tax.group_by_ids import fam_id, sp_id from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType from ttsim.compute_taxes_and_transfers import ( FunctionsAndColumnsOverlapWarning, - _convert_data_to_correct_types, _fail_if_foreign_keys_are_invalid, _fail_if_group_variables_not_constant_within_groups, _fail_if_p_id_is_non_unique, @@ -24,7 +22,6 @@ from ttsim.function_types import group_by_function, policy_function, policy_input from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import assert_valid_ttsim_pytree -from ttsim.typing import convert_series_to_internal_type @policy_input() @@ -581,173 +578,173 @@ def source_func(p_id: int) -> int: # noqa: ARG001 numpy.testing.assert_array_almost_equal(out, expected) -@pytest.mark.parametrize( - "input_data, expected_type, expected_output_data", - [ - (pd.Series([0, 1, 0]), bool, pd.Series([False, True, False])), - (pd.Series([1.0, 0.0, 1]), bool, pd.Series([True, False, True])), - (pd.Series([200, 550, 237]), float, pd.Series([200.0, 550.0, 237.0])), - (pd.Series([1.0, 4.0, 10.0]), int, pd.Series([1, 4, 10])), - (pd.Series([200.0, 567.0]), int, pd.Series([200, 567])), - (pd.Series([1.0, 0.0]), bool, pd.Series([True, False])), - ], -) -def test_convert_series_to_internal_types( - input_data, expected_type, expected_output_data -): - adjusted_input = convert_series_to_internal_type(input_data, expected_type) - pd.testing.assert_series_equal(adjusted_input, expected_output_data) - - -@pytest.mark.parametrize( - "input_data, expected_type, error_match", - [ - ( - pd.Series(["Hallo", 200, 325]), - float, - "Conversion from input type object to float failed.", - ), - ( - pd.Series([True, False]), - float, - "Conversion from input type bool to float failed.", - ), - ( - pd.Series(["a", "b", "c"]).astype("category"), - float, - "Conversion from input type category to float failed.", - ), - ( - pd.Series(["2.0", "3.0"]), - int, - "Conversion from input type object to int failed.", - ), - ( - pd.Series([1.5, 1.0, 2.9]), - int, - "Conversion from input type float64 to int failed.", - ), - ( - pd.Series(["a", "b", "c"]).astype("category"), - int, - "Conversion from input type category to int failed.", - ), - ( - pd.Series([5, 2, 3]), - bool, - "Conversion from input type int64 to bool failed.", - ), - ( - pd.Series([1.5, 1.0, 35.0]), - bool, - "Conversion from input type float64 to bool failed.", - ), - ( - pd.Series(["a", "b", "c"]).astype("category"), - bool, - "Conversion from input type category to bool failed.", - ), - ( - pd.Series(["richtig"]), - bool, - "Conversion from input type object to bool failed.", - ), - ( - pd.Series(["True", "False", ""]), - bool, - "Conversion from input type object to bool failed.", - ), - ( - pd.Series(["true"]), - bool, - "Conversion from input type object to bool failed.", - ), - ( - pd.Series(["zweitausendzwanzig"]), - numpy.datetime64, - "Conversion from input type object to datetime64 failed.", - ), - ( - pd.Series([True, True]), - numpy.datetime64, - "Conversion from input type bool to datetime64 failed.", - ), - ( - pd.Series([2020]), - str, - "The internal type <class 'str'> is not yet supported.", - ), - ], -) -def test_fail_if_cannot_be_converted_to_internal_type( - input_data, expected_type, error_match -): - with pytest.raises(ValueError, match=error_match): - convert_series_to_internal_type(input_data, expected_type) - - -@pytest.mark.skip -@pytest.mark.parametrize( - "data, functions_overridden", - [ - ( - {"sp_id": pd.Series([1, 2, 3])}, - {"sp_id": sp_id}, - ), - ( - {"fam_id": pd.Series([1, 2, 3])}, - {"fam_id": fam_id}, - ), - ], -) -def test_provide_endogenous_groupings(data, functions_overridden): - """Test whether GETTSIM handles user-provided grouping IDs, which would otherwise be - set endogenously.""" - _convert_data_to_correct_types(data, functions_overridden) - - -@pytest.mark.skip -@pytest.mark.parametrize( - "data, functions_overridden, error_match", - [ - ( - {"hh_id": pd.Series([1, 1.1, 2])}, - {}, - "- hh_id: Conversion from input type float64 to int", - ), - ( - {"gondorian": pd.Series([1.1, 0.0, 1.0])}, - {}, - "- gondorian: Conversion from input type float64 to bool", - ), - ( - { - "hh_id": pd.Series([1.0, 2.0, 3.0]), - "gondorian": pd.Series([2, 0, 1]), - }, - {}, - "- gondorian: Conversion from input type int64 to bool", - ), - ( - {"gondorian": pd.Series(["True", "False"])}, - {}, - "- gondorian: Conversion from input type object to bool", - ), - ( - { - "hh_id": pd.Series([1, "1", 2]), - "payroll_tax__amount": pd.Series(["2000", 3000, 4000]), - }, - {}, - "- hh_id: Conversion from input type object to int failed.", - ), - ], -) -def test_fail_if_cannot_be_converted_to_correct_type( - data, functions_overridden, error_match -): - with pytest.raises(ValueError, match=error_match): - _convert_data_to_correct_types(data, functions_overridden) +# @pytest.mark.parametrize( +# "input_data, expected_type, expected_output_data", +# [ +# (pd.Series([0, 1, 0]), bool, pd.Series([False, True, False])), +# (pd.Series([1.0, 0.0, 1]), bool, pd.Series([True, False, True])), +# (pd.Series([200, 550, 237]), float, pd.Series([200.0, 550.0, 237.0])), +# (pd.Series([1.0, 4.0, 10.0]), int, pd.Series([1, 4, 10])), +# (pd.Series([200.0, 567.0]), int, pd.Series([200, 567])), +# (pd.Series([1.0, 0.0]), bool, pd.Series([True, False])), +# ], +# ) +# def test_convert_series_to_internal_types( +# input_data, expected_type, expected_output_data +# ): +# adjusted_input = convert_series_to_internal_type(input_data, expected_type) +# pd.testing.assert_series_equal(adjusted_input, expected_output_data) + + +# @pytest.mark.parametrize( +# "input_data, expected_type, error_match", +# [ +# ( +# pd.Series(["Hallo", 200, 325]), +# float, +# "Conversion from input type object to float failed.", +# ), +# ( +# pd.Series([True, False]), +# float, +# "Conversion from input type bool to float failed.", +# ), +# ( +# pd.Series(["a", "b", "c"]).astype("category"), +# float, +# "Conversion from input type category to float failed.", +# ), +# ( +# pd.Series(["2.0", "3.0"]), +# int, +# "Conversion from input type object to int failed.", +# ), +# ( +# pd.Series([1.5, 1.0, 2.9]), +# int, +# "Conversion from input type float64 to int failed.", +# ), +# ( +# pd.Series(["a", "b", "c"]).astype("category"), +# int, +# "Conversion from input type category to int failed.", +# ), +# ( +# pd.Series([5, 2, 3]), +# bool, +# "Conversion from input type int64 to bool failed.", +# ), +# ( +# pd.Series([1.5, 1.0, 35.0]), +# bool, +# "Conversion from input type float64 to bool failed.", +# ), +# ( +# pd.Series(["a", "b", "c"]).astype("category"), +# bool, +# "Conversion from input type category to bool failed.", +# ), +# ( +# pd.Series(["richtig"]), +# bool, +# "Conversion from input type object to bool failed.", +# ), +# ( +# pd.Series(["True", "False", ""]), +# bool, +# "Conversion from input type object to bool failed.", +# ), +# ( +# pd.Series(["true"]), +# bool, +# "Conversion from input type object to bool failed.", +# ), +# ( +# pd.Series(["zweitausendzwanzig"]), +# numpy.datetime64, +# "Conversion from input type object to datetime64 failed.", +# ), +# ( +# pd.Series([True, True]), +# numpy.datetime64, +# "Conversion from input type bool to datetime64 failed.", +# ), +# ( +# pd.Series([2020]), +# str, +# "The internal type <class 'str'> is not yet supported.", +# ), +# ], +# ) +# def test_fail_if_cannot_be_converted_to_internal_type( +# input_data, expected_type, error_match +# ): +# with pytest.raises(ValueError, match=error_match): +# convert_series_to_internal_type(input_data, expected_type) + + +# @pytest.mark.skip +# @pytest.mark.parametrize( +# "data, functions_overridden", +# [ +# ( +# {"sp_id": pd.Series([1, 2, 3])}, +# {"sp_id": sp_id}, +# ), +# ( +# {"fam_id": pd.Series([1, 2, 3])}, +# {"fam_id": fam_id}, +# ), +# ], +# ) +# def test_provide_endogenous_groupings(data, functions_overridden): +# """Test whether TTSIM handles user-provided grouping IDs, which would otherwise be +# set endogenously.""" +# _convert_data_to_correct_types(data, functions_overridden) + + +# @pytest.mark.skip +# @pytest.mark.parametrize( +# "data, functions_overridden, error_match", +# [ +# ( +# {"hh_id": pd.Series([1, 1.1, 2])}, +# {}, +# "- hh_id: Conversion from input type float64 to int", +# ), +# ( +# {"gondorian": pd.Series([1.1, 0.0, 1.0])}, +# {}, +# "- gondorian: Conversion from input type float64 to bool", +# ), +# ( +# { +# "hh_id": pd.Series([1.0, 2.0, 3.0]), +# "gondorian": pd.Series([2, 0, 1]), +# }, +# {}, +# "- gondorian: Conversion from input type int64 to bool", +# ), +# ( +# {"gondorian": pd.Series(["True", "False"])}, +# {}, +# "- gondorian: Conversion from input type object to bool", +# ), +# ( +# { +# "hh_id": pd.Series([1, "1", 2]), +# "payroll_tax__amount": pd.Series(["2000", 3000, 4000]), +# }, +# {}, +# "- hh_id: Conversion from input type object to int failed.", +# ), +# ], +# ) +# def test_fail_if_cannot_be_converted_to_correct_type( +# data, functions_overridden, error_match +# ): +# with pytest.raises(ValueError, match=error_match): +# _convert_data_to_correct_types(data, functions_overridden) @pytest.mark.parametrize( From 46af1233bee86d7a8914ed0f5f82c79808ac1b2b Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Thu, 17 Apr 2025 06:58:25 +0200 Subject: [PATCH 018/109] Agg decorator (#873) ### What problem do you want to solve? Fix #870 and related things. In particular, defer some checks so that they are only done for variables that are present / set start/end dates of explicit aggregation functions so they are derived from source object. --------- Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Co-authored-by: Tim Mensinger <mensingertim@gmail.com> Co-authored-by: Max Jahn <max.jahn45@gmail.com> --- CHANGES.md | 2 +- pixi.lock | 183 ++- pyproject.toml | 4 +- .../arbeitslosengeld_2/aggregations.py | 63 + .../arbeitslosengeld_2/arbeitslosengeld_2.py | 4 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 10 +- .../freibetr\303\244ge_verm\303\266gen.py" | 4 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 4 +- .../kindergeld\303\274bertrag.py" | 22 +- .../arbeitslosengeld_2/regelbedarf.py | 60 +- src/_gettsim/config.py | 8 - .../einkommensteuer/abz\303\274ge/inputs.py" | 2 +- .../pauschbetrag_behinderung.py" | 2 +- .../abz\303\274ge/sonderausgaben.py" | 24 +- src/_gettsim/einkommensteuer/einkommen.py | 2 +- .../einkommensteuer/einkommensteuer.py | 56 +- src/_gettsim/einkommensteuer/group_by_ids.py | 60 - .../einkommensteuer/kinderfreibetrag.py | 41 +- src/_gettsim/elterngeld/elterngeld.py | 86 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 25 +- src/_gettsim/erziehungsgeld/inputs.py | 4 +- src/_gettsim/familie/familie.py | 43 +- src/_gettsim/familie/inputs.py | 8 +- src/_gettsim/household_characteristics.py | 41 +- .../group_by_ids.py => ids.py} | 228 ++-- src/_gettsim/individual_characteristics.py | 2 +- src/_gettsim/inputs.py | 10 - src/_gettsim/kindergeld/inputs.py | 4 +- src/_gettsim/kindergeld/kindergeld.py | 50 +- src/_gettsim/kinderzuschlag/einkommen.py | 26 +- .../geringf\303\274gig_besch\303\244ftigt.py" | 4 +- .../kranken/beitrag/einkommen.py | 4 +- .../pflege/beitrag/beitragssatz.py | 35 +- .../rente/altersrente/altersrente.py | 2 +- .../rente/beitrag/beitrag.py | 2 +- src/_gettsim/synthetic.py | 25 +- .../unterhaltsvorschuss.py | 35 +- .../vorrangpr\303\274fungen.py" | 29 +- src/_gettsim/wohngeld/einkommen.py | 45 +- src/_gettsim/wohngeld/group_by_ids.py | 37 - src/_gettsim/wohngeld/miete.py | 2 +- src/_gettsim/wohngeld/wohngeld.py | 7 +- src/_gettsim_tests/conftest.py | 17 - .../fg_id_not_sensitive_to_order.yaml | 11 +- .../2005-01-01/hh_id_8.yaml | 2 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 4 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 4 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 +- .../regelsatz_multiple_children.yaml | 2 +- .../2005-01-01/regelsatz_no_adult_in_bg.yaml | 2 +- .../2006-01-01/hh_id_4.yaml | 2 +- .../2009-01-01/hh_id_3.yaml | 2 +- .../2009-01-01/kind_20_jahre_in_bg.yaml | 2 +- .../2013-01-01/hh_id_12.yaml | 2 +- .../2013-01-01/hh_id_13.yaml | 2 +- .../2013-01-01/hh_id_14.yaml | 2 +- .../2013-01-01/hh_id_15.yaml | 2 +- .../2013-01-01/hh_id_2.yaml | 2 +- .../2018-01-01/hh_id_9.yaml | 2 +- .../2019-01-01/hh_id_6.yaml | 2 +- .../2019-01-01/test_age_limits_13_14.yaml | 2 +- .../2019-01-01/test_age_limits_5_6.yaml | 2 +- .../2022-01-01/hh_id_10.yaml | 2 +- .../2022-01-01/hh_id_11.yaml | 2 +- .../2023-01-01/hh_id_16.yaml | 2 +- .../2023-01-01/hh_id_19.yaml | 2 +- .../2023-01-01/hh_id_25.yaml | 2 +- .../2023-01-01/test_age_limits_17_18.yaml | 2 +- .../2023-01-01/test_family_high_wealth.yaml | 2 +- .../test_family_wealth_below_threshold.yaml | 2 +- .../2023-07-01/hh_id_20.yaml | 2 +- .../2023-07-01/hh_id_21.yaml | 2 +- .../2023-07-01/hh_id_22.yaml | 2 +- .../2023-07-01/hh_id_23.yaml | 2 +- .../2023-07-01/hh_id_24.yaml | 2 +- .../alleinerz_kein_kindergelduebertrag.yaml | 4 +- .../alleinerz_teilw_kindergelduebertrag.yaml | 4 +- .../alleinerz_voller_kindergelduebertrag.yaml | 4 +- .../kost_unterk_multiple_bg_in_hh.yaml | 4 +- .../2024-01-01/kost_unterk_one_bg_in_hh.yaml | 4 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 4 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 4 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 +- .../regelsatz_multiple_children.yaml | 4 +- .../2024-01-01/regelsatz_no_adult_in_bg.yaml | 2 +- .../2024-01-01/single_no_income.yaml | 2 +- .../2024-01-01/skip_single_no_children.yaml | 2 +- .../2004-01-01/hh_id_11.yaml" | 2 +- .../2005-01-01/hh_id_2.yaml" | 2 +- .../2005-01-01/hh_id_5.yaml" | 2 +- .../2005-01-01/hh_id_8.yaml" | 2 +- .../2005-01-01/hh_id_9.yaml" | 2 +- .../2010-01-01/hh_id_16.yaml" | 2 +- .../2010-01-01/hh_id_3.yaml" | 2 +- .../2010-01-01/hh_id_6.yaml" | 2 +- .../2018-01-01/hh_id_15.yaml" | 2 +- .../2020-01-01/hh_id_13.yaml" | 2 +- .../2021-01-01/hh_id_12.yaml" | 2 +- .../2022-01-01/hh_id_17.yaml" | 2 +- .../2022-01-01/hh_id_18.yaml" | 2 +- .../2023-01-01/hh_id_4.yaml" | 2 +- .../2023-01-01/hh_id_7.yaml" | 2 +- .../betrag/2009-01-01/hh_id_4.yaml | 2 +- .../betrag/2012-01-01/hh_id_3.yaml | 2 +- .../betrag/2015-01-01/hh_id_2.yaml | 2 +- .../betrag/2018-01-01/couple_1_child.yaml | 2 +- .../betrag/2018-01-01/hh_id_1.yaml | 2 +- .../betrag/2018-01-01/hh_id_5.yaml | 2 +- .../betrag/2023-01-01/hh_id_6.yaml | 2 +- .../betrag/2024-01-01/couple_1_child.yaml | 2 +- .../couple_above_soli_freibetrag.yaml | 2 +- .../single_above_soli_freibetrag.yaml | 2 +- .../single_below_soli_freibetrag.yaml | 2 +- .../2010-01-01/hh_id_4.yaml" | 2 +- .../2012-01-01/hh_id_2.yaml" | 2 +- .../2016-01-01/hh_id_1.yaml" | 2 +- .../skip_2019/hh_id_5.yaml" | 2 +- .../2010-01-01/hh_id_1.yaml | 12 +- .../2010-01-01/hh_id_2.yaml | 12 +- .../2010-01-01/hh_id_3.yaml | 12 +- .../2010-01-01/hh_id_4.yaml | 12 +- .../2010-01-01/hh_id_5.yaml | 12 +- .../2015-01-01/hh_id_16.yaml | 12 +- .../2015-01-01/hh_id_17.yaml | 15 +- .../2017-01-01/hh_id_18.yaml | 15 +- .../2018-01-01/hh_id_10.yaml | 12 +- .../2018-01-01/hh_id_11.yaml | 12 +- .../2018-01-01/hh_id_12.yaml | 12 +- .../2018-01-01/hh_id_7.yaml | 12 +- .../2018-01-01/hh_id_8.yaml | 12 +- .../2018-01-01/hh_id_9.yaml | 12 +- .../2019-01-01/hh_id_13.yaml | 15 +- .../2020-01-01/hh_id_14.yaml | 21 +- .../2020-01-01/hh_id_19.yaml | 21 +- .../2020-01-01/hh_id_20.yaml | 21 +- .../elterngeld/2017-01-01/hh_id_2.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_1.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_2.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_3.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_4.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_6.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_1.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_3.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_5.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_6.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_7.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_8.yaml | 2 +- .../2024-01-01/income_during_elterngeld.yaml | 2 +- .../2024-01-01/maximum_elterngeld.yaml | 2 +- .../2024-01-01/minimum_elterngeld.yaml | 2 +- .../2024-01-01/net_income_approximation.yaml | 2 +- .../net_income_before_birth_1000.yaml | 2 +- .../net_income_before_birth_790.yaml | 2 +- .../2024-01-01/replacement_rate_decrease.yaml | 2 +- .../2024-04-01/taxable_income_low.yaml | 2 +- .../2024-04-01/taxable_income_too_high.yaml | 2 +- .../alleinerz_one_child_budgetsatz.yaml | 2 +- ...inerz_one_child_regelsatz_high_income.yaml | 2 +- ...einerz_one_child_regelsatz_low_income.yaml | 2 +- ...ried_one_child_budgetsatz_high_income.yaml | 2 +- ...rried_one_child_budgetsatz_low_income.yaml | 2 +- .../married_one_child_regelsatz.yaml | 2 +- ..._budgetsatz_and_regelsatz_high_income.yaml | 2 +- ...n_budgetsatz_and_regelsatz_low_income.yaml | 2 +- .../2007-01-01/born_after_abolishment.yaml | 2 +- ..._budgetsatz_and_regelsatz_high_income.yaml | 2 +- ...n_budgetsatz_and_regelsatz_low_income.yaml | 2 +- .../2019-01-01/hh_id_1.yaml | 4 +- .../2019-01-01/hh_id_2.yaml | 4 +- .../2019-01-01/hh_id_3.yaml | 4 +- .../2019-01-01/hh_id_4.yaml | 4 +- .../2019-01-01/hh_id_5.yaml | 4 +- .../2019-01-01/hh_id_6.yaml | 4 +- .../2019-01-01/hh_id_7.yaml | 4 +- .../2019-01-01/hh_id_8.yaml | 4 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 12 +- ...rziehend_anderer_elternteil_unbekannt.yaml | 12 +- .../eltern_unverheiratet_2_kinder.yaml | 12 +- ...rheiratet_1_junges_1_erwachsenes_kind.yaml | 12 +- ...verheiratet_1_kind_anderer_verwandter.yaml | 12 +- ...heiratet_1_kind_bis24_1_kind_ueber_24.yaml | 12 +- ...rn_verheiratet_1_kind_grosselternteil.yaml | 12 +- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 12 +- ...eltern_verheiratet_1_kind_verheiratet.yaml | 12 +- ...eltern_verheiratet_1_kind_with_income.yaml | 12 +- .../eltern_verheiratet_2_kinder.yaml | 12 +- ...rheiratet_getrennt_veranlagt_2_kinder.yaml | 12 +- ...eltern_verheiratet_kinder_verheiratet.yaml | 12 +- .../2023-01-01/eltern_viele_kinder.yaml | 10 +- .../mehrere_haushalte_durchmischt.yaml | 12 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 12 +- ...haushalt_anderer_elternteil_unbekannt.yaml | 12 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 12 +- ...epartner_einmal_sgb_ii_einmal_sgb_xii.yaml | 6 +- ...er_widerspruechliche_einstandspartner.yaml | 2 +- ..._kinder_widerspruechliche_veranlagung.yaml | 2 +- ...nicht_einstandspflichtig_ein_haushalt.yaml | 2 +- ...skip_enkelkind_und_sgb_ii_grossmutter.yaml | 6 +- ...kip_enkelkind_und_sgb_xii_grossmutter.yaml | 6 +- ...ner_gemeinsam_veranlagt_unverheiratet.yaml | 2 +- ...r_widerspruechliche_veranlagungs_info.yaml | 2 +- .../verschiedene_haushalte_nur_sn_id.yaml | 4 +- ...her_teilhaushalt_mehrere_generationen.yaml | 8 +- ...licher_teilhaushalt_mehrere_haushalte.yaml | 8 +- .../im_alter/2017-07-01/hh_id_13.yaml | 2 +- .../im_alter/2017-07-01/hh_id_16.yaml | 2 +- .../im_alter/2017-07-01/hh_id_17.yaml | 2 +- .../im_alter/2017-07-01/hh_id_6.yaml | 2 +- .../im_alter/2018-07-01/hh_id_12.yaml | 2 +- .../im_alter/2018-07-01/hh_id_20.yaml | 2 +- .../im_alter/2018-07-01/hh_id_22.yaml | 2 +- .../im_alter/2018-07-01/hh_id_3.yaml | 2 +- .../im_alter/2020-07-01/hh_id_18.yaml | 2 +- .../im_alter/2020-07-01/hh_id_19.yaml | 2 +- .../im_alter/2021-07-01/hh_id_1.yaml | 2 +- .../im_alter/2021-07-01/hh_id_14.yaml | 2 +- .../im_alter/2021-07-01/hh_id_15.yaml | 2 +- .../im_alter/2021-07-01/hh_id_2.yaml | 2 +- .../im_alter/2021-07-01/hh_id_21.yaml | 2 +- .../im_alter/2021-07-01/hh_id_23.yaml | 2 +- .../im_alter/2021-07-01/hh_id_5.yaml | 2 +- .../im_alter/2021-07-01/hh_id_7.yaml | 2 +- .../im_alter/2021-07-01/hh_id_9.yaml | 2 +- .../im_alter/2022-07-01/hh_id_10.yaml | 2 +- .../im_alter/2022-07-01/hh_id_11.yaml | 2 +- .../im_alter/2022-07-01/hh_id_24.yaml | 2 +- .../im_alter/2022-07-01/hh_id_25.yaml | 2 +- .../im_alter/2022-07-01/hh_id_4.yaml | 2 +- .../im_alter/2022-07-01/hh_id_8.yaml | 2 +- .../2007-01-01/eltern_getrennt_1_kind.yaml | 2 +- .../2007-01-01/eltern_verheiratet_1_kind.yaml | 2 +- .../eltern_verheiratet_2_kinder.yaml | 2 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 2 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 2 +- .../2024-01-01/eltern_getrennt_1_kind.yaml | 2 +- .../2024-01-01/eltern_verheiratet_1_kind.yaml | 2 +- .../eltern_verheiratet_2_kinder.yaml | 2 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 2 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 2 +- .../kindergeld/2002-01-01/hh_id_2.yaml | 2 +- .../kindergeld/2010-01-01/hh_id_4.yaml | 2 +- .../kindergeld/2010-01-01/hh_id_6.yaml | 2 +- .../kindergeld/2011-01-01/hh_id_7.yaml | 2 +- .../kindergeld/2013-01-01/hh_id_8.yaml | 2 +- .../kindergeld/2019-01-01/hh_id_0.yaml | 2 +- .../kindergeld/2019-01-01/hh_id_1.yaml | 2 +- .../kindergeld/2019-01-01/hh_id_3.yaml | 2 +- .../kindergeld/2019-01-01/hh_id_5.yaml | 2 +- .../kindergeld/2020-01-01/hh_id_10.yaml | 2 +- .../kindergeld/2021-01-01/3_children.yaml | 2 +- .../kindergeld/2021-01-01/hh_id_11.yaml | 2 +- .../kindergeld/2021-01-01/hh_id_12.yaml | 2 +- .../kindergeld/2023-01-01/hh_id_13.yaml | 2 +- .../alleinerz_1_child_low_unterhalt.yaml | 2 +- .../alleinerz_1_child_no_unterhalt.yaml | 2 +- .../alleinerz_2_children_low_unterhalt.yaml | 2 +- .../alleinerz_2_children_no_unterhalt.yaml | 2 +- .../kinderzuschlag/2013-01-01/hh_id_2.yaml | 2 +- .../kinderzuschlag/2016-01-01/hh_id_1.yaml | 2 +- .../kinderzuschlag/2016-01-01/hh_id_11.yaml | 2 +- .../kinderzuschlag/2016-01-01/hh_id_12.yaml | 2 +- .../kinderzuschlag/2016-01-01/hh_id_13.yaml | 2 +- .../kinderzuschlag/2016-01-01/hh_id_7.yaml | 2 +- .../kinderzuschlag/2017-01-01/hh_id_9.yaml | 2 +- .../kinderzuschlag/2019-01-01/hh_id_6.yaml | 2 +- .../kinderzuschlag/2020-01-01/hh_id_8.yaml | 2 +- .../kinderzuschlag/2021-01-01/hh_id_10.yaml | 2 +- .../kinderzuschlag/2023-01-01/hh_id_14.yaml | 2 +- .../2023-01-01/test_child_income.yaml | 2 +- .../2023-01-01/test_family_high_wealth.yaml | 2 +- .../test_higher_wealth_exemptions.yaml | 2 +- ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 2 +- .../2024-01-01/test_max_transfer.yaml | 2 +- .../kinderzuschlag/skip_2006/hh_id_4.yaml | 2 +- .../kinderzuschlag/skip_2009/hh_id_3.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1045.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1051.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1081.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_121.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1214.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1219.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1435.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1462.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1476.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1555.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1627.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1793.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1796.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1915.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1982.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2042.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2174.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2224.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2451.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2552.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2593.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2601.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2639.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2726.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2732.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2861.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2924.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_470.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_561.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_72.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_736.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_76.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_769.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_786.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_790.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_802.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_830.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_856.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_857.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_891.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_925.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1000.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1086.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1115.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1133.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1175.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_123.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1281.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1335.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1367.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1700.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1822.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1958.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2065.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2220.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2289.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2358.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2396.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2645.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2693.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2724.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2744.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2932.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2961.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_307.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_435.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_444.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_699.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_779.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_807.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_821.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_898.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_950.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_965.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_968.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1088.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1164.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1279.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_146.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1503.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1549.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1615.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1841.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1866.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1878.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1923.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1945.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2005.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2177.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2226.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2293.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2512.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2677.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2918.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2934.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2956.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2974.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2991.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_30.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_416.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_455.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_496.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_506.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_528.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_568.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_575.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_588.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_659.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_743.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_910.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_933.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_996.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1159.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1213.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_130.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1314.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_152.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1632.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1727.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_174.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1786.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1802.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_184.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1935.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2098.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2156.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2186.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2395.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2491.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2575.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2649.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2720.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2828.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2999.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_315.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_375.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_559.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_624.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_791.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_796.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_81.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_851.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_947.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_959.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_98.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1014.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1093.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1098.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1210.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1354.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1629.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1695.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1709.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1825.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1846.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2025.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2070.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2159.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2204.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2375.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2393.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2469.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2516.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_265.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2708.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2736.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2760.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2818.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_286.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2900.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2942.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_317.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_331.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_396.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_420.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_605.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_646.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_65.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_698.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_710.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_715.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_809.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_816.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_832.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_879.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_882.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_978.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1015.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1096.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1118.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1273.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_13.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1310.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1378.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1417.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1468.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_160.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_161.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1767.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1775.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1790.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1928.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2106.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2182.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2184.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2230.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2320.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2389.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2527.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2562.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2587.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2888.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2898.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2920.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2953.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2998.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_367.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_409.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_481.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_513.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_630.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_648.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_70.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_901.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_926.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1186.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1204.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1237.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1255.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1380.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1385.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1402.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_145.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1538.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1610.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_165.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1714.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1762.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1853.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1908.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1999.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2022.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2208.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_225.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2258.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2295.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_238.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2400.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2416.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2476.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_262.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2766.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2782.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2836.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2886.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2945.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_299.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_318.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_321.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_33.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_479.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_519.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_522.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_618.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_620.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_651.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_738.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_761.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_788.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_810.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_864.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_867.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_883.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_885.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_948.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_963.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_963.yaml | 2 +- .../1991-01-01/hh_id_2.yaml" | 2 +- .../1993-01-01/hh_id_5.yaml" | 2 +- .../1996-01-01/hh_id_6.yaml" | 2 +- .../1999-01-01/hh_id_4.yaml" | 2 +- .../2003-01-01/hh_id_3.yaml" | 2 +- .../2022-01-01/hh_id_1.yaml" | 2 +- .../2023-01-01/hh_id_7.yaml" | 2 +- .../2024-01-01/couple_above_threshold.yaml" | 2 +- .../2024-01-01/couple_below_threshold.yaml" | 2 +- .../2024-01-01/single_above_threshold.yaml" | 2 +- .../2024-01-01/single_below_threshold.yaml" | 2 +- .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 2 +- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 2 +- .../2015-01-01/skip_hh_id_5.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 2 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 2 +- ...eringf\303\274gig_besch\303\244ftigt.yaml" | 2 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 2 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 2 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 2 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 2 +- .../above_new_beitragsbemessungsgrenze.yaml" | 2 +- .../above_old_beitragsbemessungsgrenze.yaml" | 2 +- .../below_beitragsbemessungsgrenze.yaml" | 2 +- .../pflegev_anz_kinder_bis_24.yaml" | 2 +- .../2022-01-01/skip_minijobgrenze.yaml" | 2 +- .../2023-01-01/skip_minijobgrenze.yaml" | 2 +- .../2024-01-01/skip_minijobgrenze.yaml" | 2 +- .../1989-01-01/cohort_1936_female.yaml | 2 +- .../1989-01-01/cohort_1936_male.yaml | 2 +- .../1989-01-01/cohort_1953_female.yaml | 2 +- .../1989-01-01/cohort_1953_male.yaml | 2 +- .../1992-01-01/cohort_1936_female.yaml | 2 +- .../1992-01-01/cohort_1936_male.yaml | 2 +- .../1992-01-01/cohort_1937_female.yaml | 2 +- .../1992-01-01/cohort_1937_male.yaml | 2 +- .../1992-01-01/cohort_1938_female.yaml | 2 +- .../1992-01-01/cohort_1938_male.yaml | 2 +- .../1992-01-01/cohort_1939_female.yaml | 2 +- .../1992-01-01/cohort_1939_male.yaml | 2 +- .../1992-01-01/cohort_1940_female.yaml | 2 +- .../1992-01-01/cohort_1940_male.yaml | 2 +- .../1992-01-01/cohort_1941_female.yaml | 2 +- .../1992-01-01/cohort_1941_male.yaml | 2 +- .../1992-01-01/cohort_1942_female.yaml | 2 +- .../1992-01-01/cohort_1942_male.yaml | 2 +- .../1992-01-01/cohort_1943_female.yaml | 2 +- .../1992-01-01/cohort_1943_male.yaml | 2 +- .../1992-01-01/cohort_1944_female.yaml | 2 +- .../1992-01-01/cohort_1944_male.yaml | 2 +- .../1992-01-01/cohort_1945_female.yaml | 2 +- .../1992-01-01/cohort_1945_male.yaml | 2 +- .../1992-01-01/cohort_1946_female.yaml | 2 +- .../1992-01-01/cohort_1946_male.yaml | 2 +- .../1992-01-01/cohort_1947_female.yaml | 2 +- .../1992-01-01/cohort_1947_male.yaml | 2 +- .../1992-01-01/cohort_1948_female.yaml | 2 +- .../1992-01-01/cohort_1948_male.yaml | 2 +- .../1992-01-01/cohort_1949_female.yaml | 2 +- .../1992-01-01/cohort_1949_male.yaml | 2 +- .../1992-01-01/cohort_1950_female.yaml | 2 +- .../1992-01-01/cohort_1950_male.yaml | 2 +- .../1992-01-01/cohort_1951_female.yaml | 2 +- .../1992-01-01/cohort_1951_male.yaml | 2 +- .../1992-01-01/cohort_1952_female.yaml | 2 +- .../1992-01-01/cohort_1952_male.yaml | 2 +- .../1992-01-01/cohort_1953_female.yaml | 2 +- .../1992-01-01/cohort_1953_male.yaml | 2 +- .../1996-07-29/cohort_1936_female.yaml | 2 +- .../1996-07-29/cohort_1936_male.yaml | 2 +- .../1996-07-29/cohort_1937_female.yaml | 2 +- .../1996-07-29/cohort_1937_male.yaml | 2 +- .../1996-07-29/cohort_1938_female.yaml | 2 +- .../1996-07-29/cohort_1938_male.yaml | 2 +- .../1996-07-29/cohort_1939_female.yaml | 2 +- .../1996-07-29/cohort_1939_male.yaml | 2 +- .../1996-07-29/cohort_1940_female.yaml | 2 +- .../1996-07-29/cohort_1940_male.yaml | 2 +- .../1996-07-29/cohort_1941_female.yaml | 2 +- .../1996-07-29/cohort_1941_male.yaml | 2 +- .../1996-07-29/cohort_1942_female.yaml | 2 +- .../1996-07-29/cohort_1942_male.yaml | 2 +- .../1996-07-29/cohort_1943_female.yaml | 2 +- .../1996-07-29/cohort_1943_male.yaml | 2 +- .../1996-07-29/cohort_1944_female.yaml | 2 +- .../1996-07-29/cohort_1944_male.yaml | 2 +- .../1996-07-29/cohort_1945_female.yaml | 2 +- .../1996-07-29/cohort_1945_male.yaml | 2 +- .../1996-07-29/cohort_1946_female.yaml | 2 +- .../1996-07-29/cohort_1946_male.yaml | 2 +- .../1996-07-29/cohort_1947_female.yaml | 2 +- .../1996-07-29/cohort_1947_male.yaml | 2 +- .../1996-07-29/cohort_1948_female.yaml | 2 +- .../1996-07-29/cohort_1948_male.yaml | 2 +- .../1996-07-29/cohort_1949_female.yaml | 2 +- .../1996-07-29/cohort_1949_male.yaml | 2 +- .../1996-07-29/cohort_1950_female.yaml | 2 +- .../1996-07-29/cohort_1950_male.yaml | 2 +- .../1996-07-29/cohort_1951_female.yaml | 2 +- .../1996-07-29/cohort_1951_male.yaml | 2 +- .../1996-07-29/cohort_1952_female.yaml | 2 +- .../1996-07-29/cohort_1952_male.yaml | 2 +- .../1996-07-29/cohort_1953_female.yaml | 2 +- .../1996-07-29/cohort_1953_male.yaml | 2 +- .../2012-01-01/cohort_1936_female.yaml | 2 +- .../2012-01-01/cohort_1936_male.yaml | 2 +- .../2012-01-01/cohort_1937_female.yaml | 2 +- .../2012-01-01/cohort_1937_male.yaml | 2 +- .../2012-01-01/cohort_1938_female.yaml | 2 +- .../2012-01-01/cohort_1938_male.yaml | 2 +- .../2012-01-01/cohort_1939_female.yaml | 2 +- .../2012-01-01/cohort_1939_male.yaml | 2 +- .../2012-01-01/cohort_1940_female.yaml | 2 +- .../2012-01-01/cohort_1940_male.yaml | 2 +- .../2012-01-01/cohort_1941_female.yaml | 2 +- .../2012-01-01/cohort_1941_male.yaml | 2 +- .../2012-01-01/cohort_1942_female.yaml | 2 +- .../2012-01-01/cohort_1942_male.yaml | 2 +- .../2012-01-01/cohort_1943_female.yaml | 2 +- .../2012-01-01/cohort_1943_male.yaml | 2 +- .../2012-01-01/cohort_1944_female.yaml | 2 +- .../2012-01-01/cohort_1944_male.yaml | 2 +- .../2012-01-01/cohort_1945_female.yaml | 2 +- .../2012-01-01/cohort_1945_male.yaml | 2 +- .../2012-01-01/cohort_1946_female.yaml | 2 +- .../2012-01-01/cohort_1946_male.yaml | 2 +- .../2012-01-01/cohort_1947_female.yaml | 2 +- .../2012-01-01/cohort_1947_male.yaml | 2 +- .../2012-01-01/cohort_1948_female.yaml | 2 +- .../2012-01-01/cohort_1948_male.yaml | 2 +- .../2024-01-01/cohort_1946_female.yaml | 2 +- .../2024-01-01/cohort_1946_male.yaml | 2 +- .../2024-01-01/cohort_1947_female.yaml | 2 +- .../2024-01-01/cohort_1947_male.yaml | 2 +- .../2024-01-01/cohort_1948_female.yaml | 2 +- .../2024-01-01/cohort_1948_male.yaml | 2 +- .../2024-01-01/cohort_1949_female.yaml | 2 +- .../2024-01-01/cohort_1949_male.yaml | 2 +- .../2024-01-01/cohort_1950_female.yaml | 2 +- .../2024-01-01/cohort_1950_male.yaml | 2 +- .../2024-01-01/cohort_1951_female.yaml | 2 +- .../2024-01-01/cohort_1951_male.yaml | 2 +- .../2024-01-01/cohort_1952_female.yaml | 2 +- .../2024-01-01/cohort_1952_male.yaml | 2 +- .../2024-01-01/cohort_1953_female.yaml | 2 +- .../2024-01-01/cohort_1953_male.yaml | 2 +- .../2024-01-01/cohort_1954_female.yaml | 2 +- .../2024-01-01/cohort_1954_male.yaml | 2 +- .../2024-01-01/cohort_1955_female.yaml | 2 +- .../2024-01-01/cohort_1955_male.yaml | 2 +- .../2024-01-01/cohort_1956_female.yaml | 2 +- .../2024-01-01/cohort_1956_male.yaml | 2 +- .../2024-01-01/cohort_1957_female.yaml | 2 +- .../2024-01-01/cohort_1957_male.yaml | 2 +- .../2024-01-01/cohort_1958_female.yaml | 2 +- .../2024-01-01/cohort_1958_male.yaml | 2 +- .../2024-01-01/cohort_1959_female.yaml | 2 +- .../2024-01-01/cohort_1959_male.yaml | 2 +- .../2024-01-01/cohort_1960_female.yaml | 2 +- .../2024-01-01/cohort_1960_male.yaml | 2 +- .../2024-01-01/cohort_1961_female.yaml | 2 +- .../2024-01-01/cohort_1961_male.yaml | 2 +- .../2024-01-01/cohort_1962_female.yaml | 2 +- .../2024-01-01/cohort_1962_male.yaml | 2 +- .../2024-01-01/cohort_1963_female.yaml | 2 +- .../2024-01-01/cohort_1963_male.yaml | 2 +- .../2024-01-01/cohort_1964_female.yaml | 2 +- .../2024-01-01/cohort_1964_male.yaml | 2 +- .../betrag/1991-01-01/cohort_1930_frauen.yaml | 2 +- .../betrag/1991-01-01/cohort_1930_langj.yaml | 2 +- .../cohort_1930_langj_and_arbeitsl.yaml | 2 +- .../cohort_1930_langj_and_frauen.yaml | 2 +- .../cohort_1930_ohne_vorzeitig.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- .../cohort_1943_wegen_arbeitsl.yaml | 2 +- .../cohort_1944_wegen_arbeitsl.yaml | 2 +- .../cohort_1945_wegen_arbeitsl.yaml | 2 +- .../cohort_1946_wegen_arbeitsl.yaml | 2 +- .../cohort_1947_wegen_arbeitsl.yaml | 2 +- .../cohort_1948_wegen_arbeitsl.yaml | 2 +- .../cohort_1949_wegen_arbeitsl.yaml | 2 +- .../cohort_1950_wegen_arbeitsl.yaml | 2 +- .../cohort_1951_wegen_arbeitsl.yaml | 2 +- .../cohort_1952_wegen_arbeitsl.yaml | 2 +- .../cohort_1953_wegen_arbeitsl.yaml | 2 +- .../cohort_1954_wegen_arbeitsl.yaml | 2 +- .../cohort_1955_wegen_arbeitsl.yaml | 2 +- .../1991-01-01/eligibility_pathways.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- .../cohort_1943_wegen_arbeitsl.yaml | 2 +- .../cohort_1944_wegen_arbeitsl.yaml | 2 +- .../cohort_1945_wegen_arbeitsl.yaml | 2 +- .../cohort_1946_wegen_arbeitsl.yaml | 2 +- .../cohort_1947_wegen_arbeitsl.yaml | 2 +- .../cohort_1948_wegen_arbeitsl.yaml | 2 +- .../cohort_1949_wegen_arbeitsl.yaml | 2 +- .../cohort_1950_wegen_arbeitsl.yaml | 2 +- .../cohort_1951_wegen_arbeitsl.yaml | 2 +- .../cohort_1952_wegen_arbeitsl.yaml | 2 +- .../cohort_1953_wegen_arbeitsl.yaml | 2 +- .../cohort_1954_wegen_arbeitsl.yaml | 2 +- .../cohort_1955_wegen_arbeitsl.yaml | 2 +- .../cohort_1936_wegen_arbeitsl.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1943_wegen_arbeitsl.yaml | 2 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1944_wegen_arbeitsl.yaml | 2 +- .../cohort_1945_wegen_arbeitsl.yaml | 2 +- .../cohort_1946_wegen_arbeitsl.yaml | 2 +- .../cohort_1947_wegen_arbeitsl.yaml | 2 +- .../cohort_1948_wegen_arbeitsl.yaml | 2 +- .../cohort_1949_wegen_arbeitsl.yaml | 2 +- .../cohort_1950_wegen_arbeitsl.yaml | 2 +- .../cohort_1951_wegen_arbeitsl.yaml | 2 +- .../cohort_1952_wegen_arbeitsl.yaml | 2 +- .../cohort_1953_wegen_arbeitsl.yaml | 2 +- .../cohort_1954_wegen_arbeitsl.yaml | 2 +- .../cohort_1955_wegen_arbeitsl.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 2 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 2 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 2 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 2 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 2 +- .../cohort_1945_wegen_arbeitsl.yaml | 2 +- .../cohort_1946_wegen_arbeitsl.yaml | 2 +- .../cohort_1947_wegen_arbeitsl.yaml | 2 +- .../cohort_1948_wegen_arbeitsl.yaml | 2 +- .../cohort_1949_wegen_arbeitsl.yaml | 2 +- ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 2 +- .../cohort_1952_wegen_arbeitsl.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_1.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_2.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_24.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_4.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_5.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_6.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_10.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_11.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_8.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_9.yaml | 2 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 2 +- .../cohort_1951_wegen_arbeitsl.yaml | 2 +- .../2015-07-01/eligibility_pathways.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_12.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_13.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_14.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_15.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_16.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_17.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_18.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_26.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_27.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_28.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_29.yaml | 2 +- .../betrag/2018-07-01/age_at_retirement.yaml | 2 +- ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 2 +- .../2018-07-01/cohort_1955_vorzeitig.yaml | 2 +- .../2018-07-01/cohort_1958_vorzeitig.yaml | 2 +- .../2018-07-01/eligibility_pathways.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_20.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_23.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_24.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_25.yaml | 2 +- .../zero_entgeltpunkte_anteil_ost.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1940_claim.yaml | 2 +- ...t_birthyear_1940_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1941_claim.yaml | 2 +- ...t_birthyear_1941_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1943_claim.yaml | 2 +- ...t_birthyear_1943_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1945_claim.yaml | 2 +- ...t_birthyear_1945_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1950_claim.yaml | 2 +- ...t_birthyear_1950_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...t_birthyear_1960_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...werbsgemindert_birthyear_1990_2_claim.yaml | 2 +- ...birthyear_1990_2_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...t_birthyear_1960_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 2 +- ...t_birthyear_1990_preliminary_products.yaml | 2 +- .../langj_versicherte_wartezeit_1.yaml | 2 +- .../langj_versicherte_wartezeit_2.yaml | 2 +- .../langj_versicherte_wartezeit_3.yaml | 2 +- .../langj_versicherte_wartezeit_4.yaml | 2 +- .../langj_versicherte_wartezeit_5.yaml | 2 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 2 +- ...t_birthyear_1995_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...t_birthyear_1960_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 2 +- ...t_birthyear_1990_preliminary_products.yaml | 2 +- ...werbsgemindert_birthyear_2000_2_claim.yaml | 2 +- ...birthyear_2000_2_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_2000_claim.yaml | 2 +- ...t_birthyear_2000_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1957_claim.yaml | 2 +- ...t_birthyear_1957_preliminary_products.yaml | 2 +- ...werbsgemindert_birthyear_1970_2_claim.yaml | 2 +- ...birthyear_1970_2_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 2 +- ...t_birthyear_1995_preliminary_products.yaml | 2 +- .../2016-01-01/einkommen_unter_grenze.yaml | 2 +- .../einkommen_\303\274ber_grenze.yaml" | 2 +- .../2018-01-01/hohes_einkommen.yaml | 2 +- .../2018-01-01/kein_einkommen.yaml | 2 +- .../2018-01-01/mittleres_einkommen.yaml | 2 +- .../2018-01-01/niedriges_einkommen.yaml | 2 +- .../2021-01-01/hohes_einkommen.yaml | 2 +- .../2021-01-01/kein_einkommen.yaml | 2 +- .../2021-01-01/mittleres_einkommen.yaml | 2 +- .../2021-01-01/niedriges_einkommen.yaml | 2 +- .../2023-01-01/hohes_einkommen.yaml | 2 +- .../2023-01-01/kein_einkommen.yaml | 2 +- .../2023-01-01/mittleres_einkommen.yaml | 2 +- .../2023-01-01/niedriges_einkommen.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 2 +- .../2021-07-01/hh_id_1.yaml | 2 +- .../2021-07-01/hh_id_10.yaml | 2 +- .../2021-07-01/hh_id_2.yaml | 2 +- .../2021-07-01/hh_id_3.yaml | 2 +- .../2021-07-01/hh_id_4.yaml | 2 +- .../2021-07-01/hh_id_5.yaml | 2 +- .../2021-07-01/hh_id_6.yaml | 2 +- .../2021-07-01/hh_id_7.yaml | 2 +- .../2021-07-01/hh_id_8.yaml | 2 +- .../2021-07-01/hh_id_9.yaml | 2 +- .../unterhalt/2023-01-01/hh_id_1.yaml | 2 +- .../unterhalt/2023-01-01/hh_id_2.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../2018-01-01/hh_id_5.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../older_child_parent_with_income.yaml | 2 +- .../older_child_parent_without_income.yaml | 2 +- .../young_child_parent_without_income.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../2019-08-01/hh_id_1.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- .../anspruchshoehe_mittlere_altergruppe.yaml | 2 +- ...oehe_obere_altergruppe_kein_einkommen.yaml | 2 +- .../anspruchshoehe_untere_altergruppe.yaml | 2 +- ...kein_einkommen_ueber_einkommensgrenze.yaml | 2 +- .../2006-01-01/hh_id_4.yaml" | 2 +- .../2009-01-01/hh_id_3.yaml" | 2 +- .../2013-01-01/hh_id_2.yaml" | 2 +- .../2014-01-01/hh_id_7.yaml" | 2 +- .../2016-01-01/hh_id_1.yaml" | 2 +- .../2019-01-01/hh_id_6.yaml" | 2 +- .../2019-01-01/hh_id_8.yaml" | 2 +- .../wohngeld/2006-01-01/hh_id_15.yaml | 2 +- .../wohngeld/2006-01-01/hh_id_4.yaml | 2 +- .../2009-01-01/vermoegen_zu_hoch.yaml | 2 +- .../wohngeld/2013-01-01/hh_id_2.yaml | 2 +- .../wohngeld/2013-01-01/hh_id_9.yaml | 2 +- .../wohngeld/2016-01-01/hh_id_1.yaml | 2 +- .../wohngeld/2018-01-01/hh_id_7.yaml | 2 +- .../wohngeld/2018-01-01/hh_id_8.yaml | 2 +- .../2018-01-01/vermoegen_zu_hoch.yaml | 2 +- .../wohngeld/2019-01-01/hh_id_5.yaml | 2 +- .../wohngeld/2021-01-01/hh_id_10.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_11.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_12.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_13.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_14.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_16.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_17.yaml | 2 +- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 8 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 4 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 6 +- .../test_full_taxes_and_transfers.py | 19 +- src/_gettsim_tests/test_groupings.py | 12 +- .../test_grundrente_proxy_rente.py | 8 +- src/_gettsim_tests/test_household_links.py | 5 +- src/_gettsim_tests/test_synthetic.py | 8 +- src/_gettsim_tests/utils.py | 47 +- src/gettsim/__init__.py | 12 +- src/ttsim/__init__.py | 50 +- src/ttsim/aggregation.py | 134 +-- src/ttsim/aggregation_jax.py | 24 +- ...on.py => automatically_added_functions.py} | 275 +++-- src/ttsim/combine_functions.py | 486 +------- src/ttsim/compute_taxes_and_transfers.py | 237 ++-- src/ttsim/config.py | 35 +- src/ttsim/function_types.py | 462 -------- src/ttsim/loader.py | 92 +- src/ttsim/policy_environment.py | 80 +- src/ttsim/shared.py | 172 +-- src/ttsim/ttsim_objects.py | 752 ++++++++++++ src/ttsim/typing.py | 9 +- src/ttsim/vectorization.py | 285 ++--- src/ttsim/visualization.py | 6 +- tests/ttsim/mettsim/config.py | 7 - tests/ttsim/mettsim/demographics.py | 8 + .../mettsim/{payroll_tax => }/group_by_ids.py | 6 +- .../eligibility/eligibility.py | 60 +- .../mettsim/housing_benefits/income/income.py | 8 +- tests/ttsim/mettsim/inputs.py | 36 +- .../mettsim/parameters/housing_benefits.yaml | 8 +- .../ttsim/mettsim/parameters/payroll_tax.yaml | 10 +- tests/ttsim/mettsim/payroll_tax/amount.py | 19 +- .../child_tax_credit/child_tax_credit.py | 42 +- .../payroll_tax/child_tax_credit/inputs.py | 6 + .../mettsim/payroll_tax/income/amount.py | 2 +- .../mettsim/payroll_tax/income/deductions.py | 2 +- tests/ttsim/test_aggregation_functions.py | 6 +- tests/ttsim/test_combine_functions.py | 1020 +++++------------ .../ttsim/test_compute_taxes_and_transfers.py | 414 ++++--- tests/ttsim/test_config.py | 40 - .../group_by_ids/2025-01-01/group_by_ids.yaml | 44 + .../amount_no_children_high_income.yaml | 47 + .../amount_no_children_low_income.yaml | 47 + .../amount_with_children_high_income.yaml | 60 + .../amount_with_children_low_income.yaml | 60 + .../amount_no_children_high_income.yaml | 53 + .../amount_no_children_low_income.yaml | 53 + .../amount_with_children_high_income.yaml | 68 ++ .../amount_with_children_low_income.yaml | 68 ++ .../2025-01-01/amount_with_many_children.yaml | 98 ++ .../2025-01-01/amount_no_children.yaml | 62 + .../amount_no_children_high_wealth.yaml | 62 + .../amount_no_children_noble_parents.yaml | 62 + .../2025-01-01/amount_with_children.yaml | 76 ++ ..._children_inputs_need_to_be_converted.yaml | 80 ++ .../2025-01-01/amount_with_many_children.yaml | 110 ++ tests/ttsim/test_dates_active.py | 26 +- tests/ttsim/test_docs.py | 25 +- tests/ttsim/test_function_types.py | 85 -- tests/ttsim/test_jax_jit_kindergeld.py | 80 ++ tests/ttsim/test_join.py | 75 +- tests/ttsim/test_loader.py | 15 +- tests/ttsim/test_policy_environment.py | 38 +- tests/ttsim/test_rounding.py | 11 +- tests/ttsim/test_shared.py | 90 +- tests/ttsim/test_time_conversion.py | 29 +- tests/ttsim/test_ttsim_objects.py | 232 ++++ tests/ttsim/test_vectorization.py | 126 +- tests/ttsim/test_visualizations.py | 26 +- tests/ttsim/utils.py | 49 +- 1278 files changed, 5940 insertions(+), 5060 deletions(-) create mode 100644 src/_gettsim/arbeitslosengeld_2/aggregations.py delete mode 100644 src/_gettsim/einkommensteuer/group_by_ids.py rename src/_gettsim/{arbeitslosengeld_2/group_by_ids.py => ids.py} (60%) delete mode 100644 src/_gettsim/wohngeld/group_by_ids.py delete mode 100644 src/_gettsim_tests/conftest.py rename src/ttsim/{time_conversion.py => automatically_added_functions.py} (55%) delete mode 100644 src/ttsim/function_types.py create mode 100644 src/ttsim/ttsim_objects.py create mode 100644 tests/ttsim/mettsim/demographics.py rename tests/ttsim/mettsim/{payroll_tax => }/group_by_ids.py (96%) create mode 100644 tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py delete mode 100644 tests/ttsim/test_config.py create mode 100644 tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml create mode 100644 tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml delete mode 100644 tests/ttsim/test_function_types.py create mode 100644 tests/ttsim/test_jax_jit_kindergeld.py create mode 100644 tests/ttsim/test_ttsim_objects.py diff --git a/CHANGES.md b/CHANGES.md index 557ba35204..677b279222 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,7 +9,7 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`861` Make fg_id invariant to ordering of data ({ghuser}`mj023`). - {gh}`856` Add METTSIM to test TTSIM part ({ghuser}`hmgaudecker`, `timmens`, `MImmesberger`). -- {gh}`860` Use AggregationType instead of strings ({ghuser}`timmens`). +- {gh}`860` Use AggType instead of strings ({ghuser}`timmens`). - {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). - {gh}`850` Split GETTSIM from TTSIM functions ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`805` Rename taxes and transers using new tree structure ({ghuser}`hmgaudecker`, diff --git a/pixi.lock b/pixi.lock index c0c9d7cf18..b53c823c23 100644 --- a/pixi.lock +++ b/pixi.lock @@ -147,6 +147,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -399,6 +401,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -635,6 +639,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -866,6 +872,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1136,6 +1144,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1388,6 +1398,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1624,6 +1636,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1855,6 +1869,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2125,6 +2141,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2377,6 +2395,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2613,6 +2633,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2844,6 +2866,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3122,6 +3146,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3385,6 +3411,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3632,6 +3660,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3866,6 +3896,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -5610,8 +5642,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev144+gfa847097.d20250410 - sha256: aaa3c4836fc1c1ca8d25c593772e0435ef08e8a46757d9335242f26995636a30 + version: 0.7.1.dev126+gdfcfad85.d20250414 + sha256: 7a5248faa13a2c5c883ee99678c32f0fbdab2af487e71569910eacd2a34cd2d0 requires_dist: - astor - dags>=0.3.0 @@ -8891,6 +8923,153 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 200130 timestamp: 1736539205286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py311h9ecbd09_0.conda + sha256: 5bed33e02328bc0b3fbbf39c201c297ad6051d4d2c72415f2fdb9b7152279185 + md5: 51d9f9d088f232de3648ddefd559cddc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 18359703 + timestamp: 1738768552907 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 + md5: a84061bc7e166712deb33bf7b32f756d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=compressed-mapping + size: 18664849 + timestamp: 1738767977895 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py311h4d7f069_0.conda + sha256: 94ff2be54745d42d9429fa06594c9c66e563e1d818d4979ec9fcede2448f4be2 + md5: 8a0036307a3c2356b95c76e0360e2b4f + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 12315897 + timestamp: 1738768112915 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda + sha256: 38132c4b5de6686965f21b51a1656438e83b2a53d6f50e9589e73fb57a43dd49 + md5: 0251bb4d6702b729b06fd5c7918e9242 + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 12384787 + timestamp: 1738768017667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py311h917b07b_0.conda + sha256: 7ed54f9988070ce12de61c9f0a7d1fa9c4d7933b847e16b2efebd5360e069559 + md5: 4983e0d4dbeeca83f255938ff92cd8cb + depends: + - __osx >=11.0 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 9779580 + timestamp: 1738768242703 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda + sha256: 7284d77173d385f5c7456c13d825dbae170920a31ca7a0996d2608ad17f17e2f + md5: 909034322685579577b1bbb9b47e39e1 + depends: + - __osx >=11.0 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 10149670 + timestamp: 1738768707592 +- conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py311he736701_0.conda + sha256: 5142b091f218599b44ab662ec687d8eacfc880fa40a90116d4ed14232ae60bc9 + md5: 8ae5328f0a002251430cb38684efb7fd + depends: + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 10113574 + timestamp: 1738767838546 +- conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda + sha256: 3bab35d2f17f9b2c8498c952f7d182848f2d70775e7e970d5f53c7eeb87741a6 + md5: 1eea4f4c0038b6f9b399dfad2305cd6f + depends: + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=hash-mapping + size: 9852020 + timestamp: 1738768035931 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c diff --git a/pyproject.toml b/pyproject.toml index c0f15261fb..ff691edb76 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -124,6 +124,7 @@ pytest-cov = "*" pytest-profiling = "*" pytest-xdist = "*" snakeviz = ">=2.2.2,<3" +mypy = "1.15.0.*" # Development Dependencies (pypi) @@ -168,7 +169,7 @@ tests = "pytest" [tool.pixi.environments] py311 = ["test", "py311"] py312 = ["test", "py312"] -py312-jax = ["py312", "jax"] +py312-jax = ["py312", "test", "jax"] # ====================================================================================== @@ -218,6 +219,7 @@ extend-ignore = [ "FIX002", # Line contains TODO -- Use stuff from TD area. "PLC2401", # Allow non-ASCII characters in variable names. "PLC2403", # Allow non-ASCII function names for imports. + "PLR0913", # Allow too many arguments in function definitions. "N999", # Allow non-ASCII characters in file names. "PLR0913", # Too many arguments in function definition. diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py new file mode 100644 index 0000000000..ff2d3b0bfa --- /dev/null +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -0,0 +1,63 @@ +from ttsim import AggType, agg_by_group_function + + +# TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_fg(familie__erwachsen: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_fg(familie__kind: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_6_fg(familie__kind_bis_6: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_15_fg(familie__kind_bis_15: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_bg(familie__erwachsen: bool, bg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bg(familie__kind: bool, bg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_bg(bg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_17_bg(familie__kind_bis_17: bool, bg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.ANY) +def alleinerziehend_bg(familie__alleinerziehend: bool, bg_id: int) -> bool: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_eg(familie__erwachsen: bool, eg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_eg(familie__kind: bool, eg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_eg(eg_id: int) -> int: + pass diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 7af85164fa..55ffd26ecb 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -6,7 +6,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def betrag_m_bg( anspruchshöhe_m_bg: float, vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, @@ -55,7 +55,7 @@ def betrag_m_bg( return out -@policy_function() +@policy_function(vectorization_strategy="vectorize") def anspruchshöhe_m_bg( regelbedarf_m_bg: float, anzurechnendes_einkommen_m_bg: float, diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 49106b3506..bc7cfd2d93 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -3,7 +3,7 @@ from ttsim import piecewise_polynomial, policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def anzurechnendes_einkommen_m( nettoeinkommen_nach_abzug_freibetrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, @@ -47,7 +47,7 @@ def anzurechnendes_einkommen_m( ) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def nettoeinkommen_nach_abzug_freibetrag_m( nettoeinkommen_vor_abzug_freibetrag_m: float, anrechnungsfreies_einkommen_m: float, @@ -72,7 +72,7 @@ def nettoeinkommen_nach_abzug_freibetrag_m( return nettoeinkommen_vor_abzug_freibetrag_m - anrechnungsfreies_einkommen_m -@policy_function() +@policy_function(vectorization_strategy="vectorize") def nettoeinkommen_vor_abzug_freibetrag_m( bruttoeinkommen_m: float, einkommensteuer__betrag_m_sn: float, @@ -111,7 +111,7 @@ def nettoeinkommen_vor_abzug_freibetrag_m( ) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def bruttoeinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, @@ -168,7 +168,7 @@ def bruttoeinkommen_m( return out -@policy_function(end_date="2005-09-30") +@policy_function(end_date="2005-09-30", vectorization_strategy="vectorize") def nettoquote_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__betrag_m_sn: float, diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 4be743b45a..35b3bf8e66 100644 --- "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -45,7 +45,7 @@ def grundfreibetrag_vermögen( else: out = 0.0 - return float(min(out, maximaler_grundfreibetrag_vermögen)) + return min(out, maximaler_grundfreibetrag_vermögen) @policy_function() @@ -91,7 +91,7 @@ def maximaler_grundfreibetrag_vermögen( else: out = obergrenzen[3] - return float(out) + return out @policy_function(start_date="2023-01-01") diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index ff7dffae00..d6f0e4512f 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -1,6 +1,6 @@ """Input columns.""" -from ttsim import policy_input +from ttsim import FKType, policy_input @policy_input(start_date="2023-01-01") @@ -16,6 +16,6 @@ def eigenbedarf_gedeckt() -> bool: """Received Arbeitslosengeld II / Bürgergeld in previous year.""" -@policy_input(start_date="2005-01-01") +@policy_input(start_date="2005-01-01", foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_einstandspartner() -> int: """Identifier of Einstandspartner.""" diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index c1467ea265..26f67124cb 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -2,16 +2,14 @@ import numpy -from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function +from ttsim import AggType, agg_by_p_id_function, join, policy_function -aggregation_specs = ( - AggregateByPIDSpec( - target="kindergeldübertrag_m", - source="differenz_kindergeld_kindbedarf_m", - p_id_to_aggregate_by="kindergeld__p_id_empfänger", - agg=AggregationType.SUM, - ), -) + +@agg_by_p_id_function(agg_type=AggType.SUM) +def kindergeldübertrag_m( + differenz_kindergeld_kindbedarf_m: float, kindergeld__p_id_empfänger: int, p_id: int +) -> float: + pass @policy_function(end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m") @@ -66,7 +64,7 @@ def _mean_kindergeld_per_child_ohne_staffelung_m( return kindergeld_params["kindergeld"] if kindergeld__anzahl_ansprüche > 0 else 0.0 -@policy_function(skip_vectorization=True) +@policy_function(vectorization_strategy="not_required") def kindergeld_zur_bedarfsdeckung_m( kindergeld_pro_kind_m: float, kindergeld__p_id_empfänger: numpy.ndarray[int], @@ -94,7 +92,7 @@ def kindergeld_zur_bedarfsdeckung_m( ------- """ - return join_numpy( + return join( kindergeld__p_id_empfänger, p_id, kindergeld_pro_kind_m, @@ -162,7 +160,7 @@ def differenz_kindergeld_kindbedarf_m( return out -@policy_function(skip_vectorization=True) +@policy_function(vectorization_strategy="not_required") def in_anderer_bg_als_kindergeldempfänger( p_id: numpy.ndarray[int], kindergeld__p_id_empfänger: numpy.ndarray[int], diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 32df8e0a6c..0e8f8788cc 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -3,7 +3,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def regelbedarf_m( regelsatz_m: float, kosten_der_unterkunft_m: float, @@ -90,7 +90,9 @@ def mehrbedarf_alleinerziehend_m( return out -@policy_function(end_date="2010-12-31", leaf_name="kindersatz_m") +@policy_function( + end_date="2010-12-31", leaf_name="kindersatz_m", vectorization_strategy="vectorize" +) def kindersatz_m_bis_2010( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, @@ -136,10 +138,14 @@ def kindersatz_m_bis_2010( else: out = 0.0 - return float(out) + return out -@policy_function(start_date="2011-01-01", leaf_name="kindersatz_m") +@policy_function( + start_date="2011-01-01", + leaf_name="kindersatz_m", + vectorization_strategy="vectorize", +) def kindersatz_m_ab_2011( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, @@ -164,35 +170,39 @@ def kindersatz_m_ab_2011( """ - out = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) + kindersofortzuschlag = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) if ( alter >= arbeitsl_geld_2_params["regelsatz"][6]["min_alter"] and alter <= arbeitsl_geld_2_params["regelsatz"][6]["max_alter"] and kindergeld__gleiche_fg_wie_empfänger ): - out += arbeitsl_geld_2_params["regelsatz"][6]["betrag"] + out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][6]["betrag"] elif ( alter >= arbeitsl_geld_2_params["regelsatz"][5]["min_alter"] and alter <= arbeitsl_geld_2_params["regelsatz"][5]["max_alter"] and kindergeld__gleiche_fg_wie_empfänger ): - out += arbeitsl_geld_2_params["regelsatz"][5]["betrag"] + out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][5]["betrag"] elif ( alter >= arbeitsl_geld_2_params["regelsatz"][4]["min_alter"] and alter <= arbeitsl_geld_2_params["regelsatz"][4]["max_alter"] and kindergeld__gleiche_fg_wie_empfänger ): - out += arbeitsl_geld_2_params["regelsatz"][4]["betrag"] + out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][4]["betrag"] elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG - out += arbeitsl_geld_2_params["regelsatz"][3] + out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][3] else: out = 0.0 - return float(out) + return out -@policy_function(end_date="2010-12-31", leaf_name="erwachsenensatz_m") +@policy_function( + end_date="2010-12-31", + leaf_name="erwachsenensatz_m", + vectorization_strategy="vectorize", +) def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, @@ -231,7 +241,11 @@ def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( return out * (1 + mehrbedarf_alleinerziehend_m) -@policy_function(start_date="2011-01-01", leaf_name="erwachsenensatz_m") +@policy_function( + start_date="2011-01-01", + leaf_name="erwachsenensatz_m", + vectorization_strategy="vectorize", +) def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, @@ -270,7 +284,7 @@ def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( return out * (1 + mehrbedarf_alleinerziehend_m) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def regelsatz_m( erwachsenensatz_m: float, kindersatz_m: float, @@ -292,7 +306,11 @@ def regelsatz_m( return erwachsenensatz_m + kindersatz_m -@policy_function(end_date="2022-12-31", leaf_name="kosten_der_unterkunft_m") +@policy_function( + end_date="2022-12-31", + leaf_name="kosten_der_unterkunft_m", + vectorization_strategy="vectorize", +) def kosten_der_unterkunft_m_bis_2022( berechtigte_wohnfläche: float, anerkannte_warmmiete_je_qm_m: float, @@ -315,7 +333,11 @@ def kosten_der_unterkunft_m_bis_2022( return berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m -@policy_function(start_date="2023-01-01", leaf_name="kosten_der_unterkunft_m") +@policy_function( + start_date="2023-01-01", + leaf_name="kosten_der_unterkunft_m", + vectorization_strategy="vectorize", +) def kosten_der_unterkunft_m_ab_2023( bruttokaltmiete_m: float, heizkosten_m: float, @@ -355,7 +377,7 @@ def kosten_der_unterkunft_m_ab_2023( return out -@policy_function() +@policy_function(vectorization_strategy="vectorize") def anerkannte_warmmiete_je_qm_m( bruttokaltmiete_m: float, heizkosten_m: float, @@ -437,7 +459,7 @@ def berechtigte_wohnfläche( return min(wohnfläche, maximum / anzahl_personen_hh) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def bruttokaltmiete_m( wohnen__bruttokaltmiete_m_hh: float, anzahl_personen_hh: int, @@ -462,7 +484,7 @@ def bruttokaltmiete_m( return wohnen__bruttokaltmiete_m_hh / anzahl_personen_hh -@policy_function() +@policy_function(vectorization_strategy="vectorize") def heizkosten_m( wohnen__heizkosten_m_hh: float, anzahl_personen_hh: int, @@ -487,7 +509,7 @@ def heizkosten_m( return wohnen__heizkosten_m_hh / anzahl_personen_hh -@policy_function() +@policy_function(vectorization_strategy="vectorize") def wohnfläche( wohnen__wohnfläche_hh: float, anzahl_personen_hh: int, diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index 87bca8bb0e..8230430e6b 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -105,11 +105,3 @@ "unterhaltsvorschuss": {"betrag_m": None}, "grundsicherung": {"im_alter": {"betrag_m_eg": None}}, } - - -FOREIGN_KEYS = [ - ("arbeitslosengeld_2", "p_id_einstandspartner"), - ("familie", "p_id_ehepartner"), - ("familie", "p_id_elternteil_1"), - ("familie", "p_id_elternteil_2"), -] diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" index ecc82480e5..9fe4564200 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" @@ -14,5 +14,5 @@ def betreuungskosten_m() -> float: @policy_input() -def p_id_betreuungskosten_träger() -> int: +def p_id_betreuungskostenträger() -> int: """Identifier of the person who paid childcare expenses.""" diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" index 2513606661..86d988c619 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" @@ -34,4 +34,4 @@ def pauschbetrag_behinderung_y( # Select appropriate pauschbetrag. out = eink_st_abzuege_params["behinderten_pauschbetrag"][selected_bin] - return float(out) + return out diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index a5b1634b80..fbf50b6f9a 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -1,20 +1,18 @@ """Tax allowances for special expenses.""" from ttsim import ( - AggregateByPIDSpec, - AggregationType, + AggType, RoundingSpec, + agg_by_p_id_function, policy_function, ) -aggregation_specs = ( - AggregateByPIDSpec( - target="betreuungskosten_elternteil_m", - source="betreuungskosten_m", - p_id_to_aggregate_by="p_id_betreuungskosten_träger", - agg=AggregationType.SUM, - ), -) + +@agg_by_p_id_function(agg_type=AggType.SUM) +def betreuungskosten_elternteil_m( + betreuungskosten_m: float, p_id_betreuungskostenträger: int, p_id: int +) -> float: + pass @policy_function(end_date="2011-12-31", leaf_name="sonderausgaben_y_sn") @@ -44,7 +42,7 @@ def sonderausgaben_y_sn_nur_pauschale( * einkommensteuer__anzahl_personen_sn ) - return float(out) + return out @policy_function(start_date="2012-01-01", leaf_name="sonderausgaben_y_sn") @@ -79,7 +77,7 @@ def sonderausgaben_y_sn_mit_betreuung( out = max(sonderausgaben_gesamt, pauschale) - return float(out) + return out @policy_function() @@ -134,4 +132,4 @@ def absetzbare_betreuungskosten_y_sn( * eink_st_abzuege_params["kinderbetreuungskosten_abz_anteil"] ) - return float(out) + return out diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index 1871bcc846..67561b309c 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -6,7 +6,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def gesamteinkommen_y( einkünfte__gesamtbetrag_der_einkünfte_y_sn: float, abzüge__betrag_y_sn: float, diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 95154ef0da..cbced79e69 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -1,32 +1,47 @@ """Income taxes.""" from ttsim import ( - AggregateByPIDSpec, - AggregationType, + AggType, RoundingSpec, + agg_by_group_function, + agg_by_p_id_function, piecewise_polynomial, policy_function, ) -aggregation_specs = ( - AggregateByPIDSpec( - target="anzahl_kindergeld_ansprüche_1", - source="kindergeld__grundsätzlich_anspruchsberechtigt", - p_id_to_aggregate_by="familie__p_id_elternteil_1", - agg=AggregationType.SUM, - ), - AggregateByPIDSpec( - target="anzahl_kindergeld_ansprüche_2", - source="kindergeld__grundsätzlich_anspruchsberechtigt", - p_id_to_aggregate_by="familie__p_id_elternteil_2", - agg=AggregationType.SUM, - ), -) + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_sn(sn_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.ANY) +def alleinerziehend_sn(familie__alleinerziehend: bool, sn_id: int) -> bool: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kindergeld_ansprüche_1( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + familie__p_id_elternteil_1: int, + p_id: int, +) -> int: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kindergeld_ansprüche_2( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + familie__p_id_elternteil_2: int, + p_id: int, +) -> int: + pass @policy_function( end_date="1996-12-31", leaf_name="betrag_y_sn", + vectorization_strategy="vectorize", rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S. 6 EStG" ), @@ -52,6 +67,7 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( @policy_function( start_date="1997-01-01", leaf_name="betrag_y_sn", + vectorization_strategy="vectorize", rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), @@ -87,7 +103,7 @@ def betrag_y_sn_kindergeld_oder_kinderfreibetrag( return out -@policy_function() +@policy_function(vectorization_strategy="vectorize") def kinderfreibetrag_günstiger_sn( betrag_ohne_kinderfreibetrag_y_sn: float, betrag_mit_kinderfreibetrag_y_sn: float, @@ -236,7 +252,11 @@ def relevantes_kindergeld_mit_staffelung_m( return relevantes_kindergeld / 2 -@policy_function(start_date="2023-01-01", leaf_name="relevantes_kindergeld_m") +@policy_function( + start_date="2023-01-01", + leaf_name="relevantes_kindergeld_m", + vectorization_strategy="vectorize", +) def relevantes_kindergeld_ohne_staffelung_m( anzahl_kindergeld_ansprüche_1: int, anzahl_kindergeld_ansprüche_2: int, diff --git a/src/_gettsim/einkommensteuer/group_by_ids.py b/src/_gettsim/einkommensteuer/group_by_ids.py deleted file mode 100644 index babef7f139..0000000000 --- a/src/_gettsim/einkommensteuer/group_by_ids.py +++ /dev/null @@ -1,60 +0,0 @@ -"""Steuernummer ID.""" - -import numpy - -from ttsim import AggregateByGroupSpec, AggregationType, group_by_function - -aggregation_specs = ( - AggregateByGroupSpec( - target="anzahl_personen_sn", source=None, agg=AggregationType.COUNT - ), - AggregateByGroupSpec( - target="alleinerziehend_sn", - source="familie__alleinerziehend", - agg=AggregationType.ANY, - ), -) - - -@group_by_function() -def sn_id( - p_id: numpy.ndarray[int], - familie__p_id_ehepartner: numpy.ndarray[int], - gemeinsam_veranlagt: numpy.ndarray[bool], -) -> numpy.ndarray[int]: - """ - Compute a Steuernummer (ID) for each person / couple. - """ - p_id_to_sn_id = {} - p_id_to_gemeinsam_veranlagt = {} - next_sn_id = 0 - result = [] - - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = familie__p_id_ehepartner[index] - current_gemeinsam_veranlagt = gemeinsam_veranlagt[index] - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: - gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ - current_p_id_ehepartner - ] - - if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner: - message = ( - f"{current_p_id_ehepartner} and {current_p_id} are " - "married, but have different values for " - "gemeinsam_veranlagt." - ) - raise ValueError(message) - - if current_gemeinsam_veranlagt: - result.append(p_id_to_sn_id[current_p_id_ehepartner]) - continue - - # New Steuersubjekt - result.append(next_sn_id) - p_id_to_sn_id[current_p_id] = next_sn_id - p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt - next_sn_id += 1 - - return numpy.asarray(result) diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index b1eeec1130..155fabefa6 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -1,21 +1,24 @@ """Tax allowances for individuals or couples with children.""" -from ttsim import AggregateByPIDSpec, AggregationType, policy_function - -aggregation_specs = ( - AggregateByPIDSpec( - target="anzahl_kinderfreibeträge_1", - source="kindergeld__grundsätzlich_anspruchsberechtigt", - p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_1", - agg=AggregationType.SUM, - ), - AggregateByPIDSpec( - target="anzahl_kinderfreibeträge_2", - source="kindergeld__grundsätzlich_anspruchsberechtigt", - p_id_to_aggregate_by="p_id_kinderfreibetragsempfänger_2", - agg=AggregationType.SUM, - ), -) +from ttsim import AggType, agg_by_p_id_function, policy_function + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinderfreibeträge_1( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + p_id_kinderfreibetragsempfänger_1: int, + p_id: int, +) -> int: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinderfreibeträge_2( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + p_id_kinderfreibetragsempfänger_2: int, + p_id: int, +) -> int: + pass @policy_function() @@ -36,10 +39,8 @@ def kinderfreibetrag_y( ------- """ - - return float( - sum(eink_st_abzuege_params["kinderfreib"].values()) * anzahl_kinderfreibeträge - ) + kinderfreib = list(eink_st_abzuege_params["kinderfreib"].values()) + return sum(kinderfreib) * anzahl_kinderfreibeträge @policy_function() diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 870a4379b3..e602586d96 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -1,51 +1,55 @@ """Parental leave benefits.""" from ttsim import ( - AggregateByGroupSpec, - AggregateByPIDSpec, - AggregationType, + AggType, RoundingSpec, + agg_by_group_function, + agg_by_p_id_function, policy_function, ) -aggregation_specs = ( - AggregateByGroupSpec( - target="kind_grundsätzlich_anspruchsberechtigt_fg", - source="kind_grundsätzlich_anspruchsberechtigt", - agg=AggregationType.ANY, - ), - AggregateByGroupSpec( - target="anzahl_anträge_fg", - source="claimed", - agg=AggregationType.SUM, - ), - AggregateByPIDSpec( - target="bezugsmonate_partner", - p_id_to_aggregate_by="arbeitslosengeld_2__p_id_einstandspartner", - source="bisherige_bezugsmonate", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="alter_monate_jüngstes_mitglied_fg", - source="alter_monate", - agg=AggregationType.MIN, - ), - AggregateByGroupSpec( - target="anzahl_kinder_bis_2_fg", - source="familie__kind_bis_2", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_bis_5_fg", - source="familie__kind_bis_5", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_mehrlinge_jüngstes_kind_fg", - source="jüngstes_kind_oder_mehrling", - agg=AggregationType.SUM, - ), -) + +@agg_by_group_function(agg_type=AggType.ANY) +def kind_grundsätzlich_anspruchsberechtigt_fg( + kind_grundsätzlich_anspruchsberechtigt: bool, fg_id: int +) -> bool: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_anträge_fg(claimed: bool, fg_id: int) -> int: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def bezugsmonate_partner( + bisherige_bezugsmonate: int, + arbeitslosengeld_2__p_id_einstandspartner: int, + p_id: int, +) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.MIN) +def alter_monate_jüngstes_mitglied_fg(alter_monate: float, fg_id: int) -> float: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_2_fg(familie__kind_bis_2: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_5_fg(familie__kind_bis_5: bool, fg_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_mehrlinge_jüngstes_kind_fg( + jüngstes_kind_oder_mehrling: bool, fg_id: int +) -> int: + pass @policy_function( diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 5ddf76cf63..662900be7b 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -1,20 +1,18 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" from ttsim import ( - AggregateByPIDSpec, - AggregationType, + AggType, RoundingSpec, + agg_by_p_id_function, policy_function, ) -aggregation_specs = ( - AggregateByPIDSpec( - target="anspruchshöhe_m", - source="anspruchshöhe_kind_m", - p_id_to_aggregate_by="p_id_empfänger", - agg=AggregationType.SUM, - ), -) + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anspruchshöhe_m( + anspruchshöhe_kind_m: float, p_id_empfänger: int, p_id: int +) -> float: + pass @policy_function(start_date="2004-01-01", end_date="2008-12-31") @@ -448,3 +446,10 @@ def einkommensgrenze_ohne_geschwisterbonus( out = erziehungsgeld_params["einkommensgrenze"][limit][status_eltern][satz] return out + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def erziehungsgeld_spec_target( + erziehungsgeld_source_field: bool, p_id_field: int, p_id: int +) -> int: + pass diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py index 33acc86630..a54e8550a2 100644 --- a/src/_gettsim/erziehungsgeld/inputs.py +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -1,6 +1,6 @@ """Input columns.""" -from ttsim import policy_input +from ttsim import FKType, policy_input @policy_input() @@ -8,6 +8,6 @@ def budgetsatz() -> bool: """Applied for "Budgetsatz" of parental leave benefit.""" -@policy_input() +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_empfänger() -> int: pass diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index 2e0bf40c23..ca53110892 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -4,20 +4,12 @@ """ -import numpy +from ttsim import AggType, agg_by_group_function, policy_function -from ttsim import ( - AggregateByGroupSpec, - AggregationType, - group_by_function, - policy_function, -) -aggregation_specs = ( - AggregateByGroupSpec( - target="anzahl_personen_ehe", source=None, agg=AggregationType.COUNT - ), -) +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_ehe(ehe_id: int) -> int: + pass @policy_function() @@ -132,30 +124,3 @@ def erwachsen(kind: bool) -> bool: """ out = not kind return out - - -@group_by_function() -def ehe_id( - p_id: numpy.ndarray[int], - p_id_ehepartner: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Ehe for each person. - """ - p_id_to_ehe_id = {} - next_ehe_id = 0 - result = [] - - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = p_id_ehepartner[index] - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: - result.append(p_id_to_ehe_id[current_p_id_ehepartner]) - continue - - # New married couple - result.append(next_ehe_id) - p_id_to_ehe_id[current_p_id] = next_ehe_id - next_ehe_id += 1 - - return numpy.asarray(result) diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index 806b95928f..5206eeb8af 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -1,6 +1,6 @@ """Input columns.""" -from ttsim import policy_input +from ttsim import FKType, policy_input @policy_input() @@ -13,16 +13,16 @@ def kind() -> bool: """Dependent child living with parents.""" -@policy_input() +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_ehepartner() -> int: """Identifier of married partner.""" -@policy_input() +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_elternteil_1() -> int: """Identifier of the first parent.""" -@policy_input() +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_elternteil_2() -> int: """Identifier of the second parent.""" diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index e89ad04b71..844ab7d459 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,23 +1,24 @@ -from ttsim import AggregateByGroupSpec, AggregationType, policy_function - -aggregation_specs = ( - AggregateByGroupSpec( - target="anzahl_erwachsene_hh", - source="familie__erwachsen", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_rentenbezieher_hh", - source="sozialversicherung__rente__bezieht_rente", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_personen_hh", source=None, agg=AggregationType.COUNT - ), -) - - -@policy_function() +from ttsim import AggType, agg_by_group_function, policy_function + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_hh(familie__erwachsen: bool, hh_id: int) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_rentenbezieher_hh( + sozialversicherung__rente__bezieht_rente: bool, hh_id: int +) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_hh(hh_id: int) -> int: + pass + + +@policy_function(vectorization_strategy="vectorize") def erwachsene_alle_rentenbezieher_hh( anzahl_erwachsene_hh: int, anzahl_rentenbezieher_hh: int ) -> bool: diff --git a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py b/src/_gettsim/ids.py similarity index 60% rename from src/_gettsim/arbeitslosengeld_2/group_by_ids.py rename to src/_gettsim/ids.py index cb2a47f6ea..578c8b517d 100644 --- a/src/_gettsim/arbeitslosengeld_2/group_by_ids.py +++ b/src/_gettsim/ids.py @@ -1,103 +1,52 @@ +"""Input columns.""" + from collections import Counter import numpy -from ttsim import AggregateByGroupSpec, AggregationType, group_by_function - -# TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 -aggregation_specs = ( - AggregateByGroupSpec( - target="anzahl_erwachsene_fg", - source="familie__erwachsen", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_fg", - source="familie__kind", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_bis_6_fg", - source="familie__kind_bis_6", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_bis_15_fg", - source="familie__kind_bis_15", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_erwachsene_bg", - source="familie__erwachsen", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_bg", - source="familie__kind", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_personen_bg", source=None, agg=AggregationType.COUNT - ), - AggregateByGroupSpec( - target="anzahl_kinder_bis_17_bg", - source="familie__kind_bis_17", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="alleinerziehend_bg", - source="familie__alleinerziehend", - agg=AggregationType.ANY, - ), - AggregateByGroupSpec( - target="anzahl_erwachsene_eg", - source="familie__erwachsen", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_kinder_eg", - source="familie__kind", - agg=AggregationType.SUM, - ), - AggregateByGroupSpec( - target="anzahl_personen_eg", source=None, agg=AggregationType.COUNT - ), -) - - -@group_by_function() -def bg_id( - fg_id: numpy.ndarray[int], - eigenbedarf_gedeckt: numpy.ndarray[bool], - alter: numpy.ndarray[int], +from ttsim import group_creation_function, policy_input + + +@policy_input() +def hh_id() -> int: + pass + + +@policy_input() +def p_id() -> int: + pass + + +@group_creation_function() +def ehe_id( + p_id: numpy.ndarray[int], + familie__p_id_ehepartner: numpy.ndarray[int], ) -> numpy.ndarray[int]: """ - Compute the ID of the Bedarfsgemeinschaft for each person. + Compute the ID of the Ehe for each person. """ - # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt - # once Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - counter = Counter() + p_id_to_ehe_id = {} + next_ehe_id = 0 result = [] - for index, current_fg_id in enumerate(fg_id): - current_alter = alter[index] - current_eigenbedarf_gedeckt = eigenbedarf_gedeckt[index] - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - if current_alter < 25 and current_eigenbedarf_gedeckt: - counter[current_fg_id] += 1 - result.append(current_fg_id * 100 + counter[current_fg_id]) - else: - result.append(current_fg_id * 100) + for index, current_p_id in enumerate(p_id): + current_p_id_ehepartner = familie__p_id_ehepartner[index] + + if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: + result.append(p_id_to_ehe_id[current_p_id_ehepartner]) + continue + + # New married couple + result.append(next_ehe_id) + p_id_to_ehe_id[current_p_id] = next_ehe_id + next_ehe_id += 1 return numpy.asarray(result) -@group_by_function() +@group_creation_function() def fg_id( # noqa: PLR0912 - p_id_einstandspartner: numpy.ndarray[int], + arbeitslosengeld_2__p_id_einstandspartner: numpy.ndarray[int], p_id: numpy.ndarray[int], hh_id: numpy.ndarray[int], alter: numpy.ndarray[int], @@ -145,7 +94,7 @@ def fg_id( # noqa: PLR0912 p_id_to_fg_id[current_p_id] = next_fg_id current_hh_id = hh_id[index] - current_p_id_einstandspartner = p_id_einstandspartner[index] + current_p_id_einstandspartner = arbeitslosengeld_2__p_id_einstandspartner[index] current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) # Assign fg to children @@ -199,9 +148,38 @@ def fg_id( # noqa: PLR0912 return numpy.asarray(result) -@group_by_function() +@group_creation_function() +def bg_id( + fg_id: numpy.ndarray[int], + arbeitslosengeld_2__eigenbedarf_gedeckt: numpy.ndarray[bool], + alter: numpy.ndarray[int], +) -> numpy.ndarray[int]: + """ + Compute the ID of the Bedarfsgemeinschaft for each person. + """ + # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt + # once Bedarfsgemeinschaften are fully endogenous + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + counter = Counter() + result = [] + + for index, current_fg_id in enumerate(fg_id): + current_alter = alter[index] + current_eigenbedarf_gedeckt = arbeitslosengeld_2__eigenbedarf_gedeckt[index] + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + if current_alter < 25 and current_eigenbedarf_gedeckt: + counter[current_fg_id] += 1 + result.append(current_fg_id * 100 + counter[current_fg_id]) + else: + result.append(current_fg_id * 100) + + return numpy.asarray(result) + + +@group_creation_function() def eg_id( - p_id_einstandspartner: numpy.ndarray[int], + arbeitslosengeld_2__p_id_einstandspartner: numpy.ndarray[int], p_id: numpy.ndarray[int], ) -> numpy.ndarray[int]: """ @@ -212,7 +190,7 @@ def eg_id( result = [] for index, current_p_id in enumerate(p_id): - current_p_id_einstandspartner = p_id_einstandspartner[index] + current_p_id_einstandspartner = arbeitslosengeld_2__p_id_einstandspartner[index] if ( current_p_id_einstandspartner >= 0 @@ -227,3 +205,73 @@ def eg_id( next_eg_id += 1 return numpy.asarray(result) + + +@group_creation_function() +def wthh_id( + hh_id: numpy.ndarray[int], + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[bool], + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[ + bool + ], +) -> numpy.ndarray[int]: + """ + Compute the ID of the wohngeldrechtlicher Teilhaushalt. + """ + result = [] + for index, current_hh_id in enumerate(hh_id): + if ( + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] + or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ + index + ] + ): + result.append(current_hh_id * 100 + 1) + else: + result.append(current_hh_id * 100) + + return numpy.asarray(result) + + +@group_creation_function() +def sn_id( + p_id: numpy.ndarray[int], + familie__p_id_ehepartner: numpy.ndarray[int], + einkommensteuer__gemeinsam_veranlagt: numpy.ndarray[bool], +) -> numpy.ndarray[int]: + """ + Compute a Steuernummer (ID) for each person / couple. + """ + p_id_to_sn_id = {} + p_id_to_gemeinsam_veranlagt = {} + next_sn_id = 0 + result = [] + + for index, current_p_id in enumerate(p_id): + current_p_id_ehepartner = familie__p_id_ehepartner[index] + current_gemeinsam_veranlagt = einkommensteuer__gemeinsam_veranlagt[index] + + if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: + gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ + current_p_id_ehepartner + ] + + if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner: + message = ( + f"{current_p_id_ehepartner} and {current_p_id} are " + "married, but have different values for " + "gemeinsam_veranlagt." + ) + raise ValueError(message) + + if current_gemeinsam_veranlagt: + result.append(p_id_to_sn_id[current_p_id_ehepartner]) + continue + + # New Steuersubjekt + result.append(next_sn_id) + p_id_to_sn_id[current_p_id] = next_sn_id + p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt + next_sn_id += 1 + + return numpy.asarray(result) diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 881e5dc9e9..41afb7318d 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -61,7 +61,7 @@ def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> flo return out.astype(float) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def alter_bis_24(alter: int) -> bool: """Age is 24 years at most. diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index bedec8153b..243e37ea1f 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -33,16 +33,6 @@ def geburtstag() -> int: """Day of birth (within month).""" -@policy_input() -def hh_id() -> int: - pass - - -@policy_input() -def p_id() -> int: - pass - - @policy_input() def schwerbehindert_grad_g() -> bool: pass diff --git a/src/_gettsim/kindergeld/inputs.py b/src/_gettsim/kindergeld/inputs.py index ab41600d38..50f6fdde1a 100644 --- a/src/_gettsim/kindergeld/inputs.py +++ b/src/_gettsim/kindergeld/inputs.py @@ -1,6 +1,6 @@ """Input columns.""" -from ttsim import policy_input +from ttsim import FKType, policy_input @policy_input() @@ -8,6 +8,6 @@ def in_ausbildung() -> bool: """In education according to Kindergeld definition.""" -@policy_input() +@policy_input(foreign_key_type=FKType.MAY_POINT_TO_SELF) def p_id_empfänger() -> int: """Identifier of person who receives Kindergeld for the particular child.""" diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 3e0935f0fd..7723bb6686 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -2,19 +2,19 @@ import numpy -from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function - -aggregation_specs = ( - AggregateByPIDSpec( - target="anzahl_ansprüche", - p_id_to_aggregate_by="p_id_empfänger", - source="grundsätzlich_anspruchsberechtigt", - agg=AggregationType.SUM, - ), -) +from ttsim import AggType, agg_by_p_id_function, join, policy_function + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_ansprüche( + grundsätzlich_anspruchsberechtigt: bool, p_id_empfänger: int, p_id: int +) -> int: + pass -@policy_function(start_date="2023-01-01", leaf_name="betrag_m") +@policy_function( + start_date="2023-01-01", leaf_name="betrag_m", vectorization_strategy="vectorize" +) def betrag_ohne_staffelung_m( anzahl_ansprüche: int, kindergeld_params: dict, @@ -74,7 +74,11 @@ def betrag_gestaffelt_m( return sum_kindergeld -@policy_function(end_date="2011-12-31", leaf_name="grundsätzlich_anspruchsberechtigt") +@policy_function( + end_date="2011-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt", + vectorization_strategy="vectorize", +) def grundsätzlich_anspruchsberechtigt_nach_lohn( alter: int, in_ausbildung: bool, @@ -114,7 +118,11 @@ def grundsätzlich_anspruchsberechtigt_nach_lohn( return out -@policy_function(start_date="2012-01-01", leaf_name="grundsätzlich_anspruchsberechtigt") +@policy_function( + start_date="2012-01-01", + leaf_name="grundsätzlich_anspruchsberechtigt", + vectorization_strategy="vectorize", +) def grundsätzlich_anspruchsberechtigt_nach_stunden( alter: int, in_ausbildung: bool, @@ -152,7 +160,7 @@ def grundsätzlich_anspruchsberechtigt_nach_stunden( return out -@policy_function() +@policy_function(vectorization_strategy="vectorize") def kind_bis_10_mit_kindergeld( alter: int, grundsätzlich_anspruchsberechtigt: bool, @@ -174,11 +182,11 @@ def kind_bis_10_mit_kindergeld( return out -@policy_function(skip_vectorization=True) +@policy_function(vectorization_strategy="not_required") def gleiche_fg_wie_empfänger( p_id: numpy.ndarray[int], p_id_empfänger: numpy.ndarray[int], - arbeitslosengeld_2__fg_id: numpy.ndarray[int], + fg_id: numpy.ndarray[int], ) -> numpy.ndarray[bool]: """The child's Kindergeldempfänger is in the same Familiengemeinschaft. @@ -188,18 +196,18 @@ def gleiche_fg_wie_empfänger( See basic input variable :ref:`p_id <p_id>`. p_id_empfänger See basic input variable :ref:`p_id_empfänger <p_id_empfänger>`. - arbeitslosengeld_2__fg_id - See basic input variable :ref:`arbeitslosengeld_2__fg_id <arbeitslosengeld_2__fg_id>`. + fg_id + See basic input variable :ref:`fg_id <fg_id>`. Returns ------- """ - fg_id_kindergeldempfänger = join_numpy( + fg_id_kindergeldempfänger = join( p_id_empfänger, p_id, - arbeitslosengeld_2__fg_id, + fg_id, value_if_foreign_key_is_missing=-1, ) - return fg_id_kindergeldempfänger == arbeitslosengeld_2__fg_id + return fg_id_kindergeldempfänger == fg_id diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index ed0f4c279d..02776ac6d7 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -1,19 +1,18 @@ """Income relevant for calculation of Kinderzuschlag.""" from ttsim import ( - AggregateByGroupSpec, - AggregationType, + AggType, RoundingSpec, + agg_by_group_function, policy_function, ) -aggregation_specs = ( - AggregateByGroupSpec( - target="arbeitslosengeld_2__anzahl_kinder_bg", - source="kindergeld__anzahl_ansprüche", - agg=AggregationType.SUM, - ), -) + +@agg_by_group_function(agg_type=AggType.SUM) +def arbeitslosengeld_2__anzahl_kinder_bg( + kindergeld__anzahl_ansprüche: int, bg_id: int +) -> int: + pass @policy_function() @@ -343,7 +342,7 @@ def regelsatz_m_bg_arbeitsl_geld_2_params_bis_2010( * 2 ) - return float(out) + return out # TODO(@MImmesberger): The regelsatz is already calculated in the ALG2 modules. We @@ -377,7 +376,7 @@ def regelsatz_m_bg( else: out = arbeitsl_geld_2_params["regelsatz"][2] * 2 - return float(out) + return out @policy_function() @@ -398,3 +397,8 @@ def erwachsenenbedarf_m_bg( """ return regelsatz_m_bg + kosten_der_unterkunft_m_bg + + +@agg_by_group_function(agg_type=AggType.SUM) +def kinderzuschlag_spec_target(kinderzuschlag_source_field: bool, bg_id: int) -> int: + pass diff --git "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" index 084b221e00..b3616e3fc0 100644 --- "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -60,7 +60,7 @@ def minijob_grenze_unterscheidung_ost_west( west = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["west"] ost = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["ost"] out = ost if wohnort_ost else west - return float(out) + return out @policy_function( @@ -85,7 +85,7 @@ def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: ------- """ - return float(sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]) + return sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"] @policy_function( diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index 817d73c429..b2480c8ee4 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -137,7 +137,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> out = params["ost"] if wohnort_ost else params["west"] - return float(out) + return out @policy_function() @@ -164,7 +164,7 @@ def bezugsgröße_selbstständig_m(wohnort_ost: bool, sozialv_beitr_params: dict else sozialv_beitr_params["bezugsgröße_selbst_m"]["west"] ) - return float(out) + return out @policy_function() diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index db130cc8ac..6d2771df58 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -1,21 +1,24 @@ """Contribution rate to public long-term care insurance.""" -from ttsim import AggregateByPIDSpec, AggregationType, policy_function - -aggregation_specs = ( - AggregateByPIDSpec( - target="anzahl_kinder_bis_24_elternteil_1", - source="alter_bis_24", - p_id_to_aggregate_by="einkommensteuer__p_id_kinderfreibetragsempfänger_1", - agg=AggregationType.SUM, - ), - AggregateByPIDSpec( - target="anzahl_kinder_bis_24_elternteil_2", - source="alter_bis_24", - p_id_to_aggregate_by="einkommensteuer__p_id_kinderfreibetragsempfänger_2", - agg=AggregationType.SUM, - ), -) +from ttsim import AggType, agg_by_p_id_function, policy_function + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_24_elternteil_1( + alter_bis_24: bool, + einkommensteuer__p_id_kinderfreibetragsempfänger_1: int, + p_id: int, +) -> int: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_24_elternteil_2( + alter_bis_24: bool, + einkommensteuer__p_id_kinderfreibetragsempfänger_2: int, + p_id: int, +) -> int: + pass @policy_function( diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index beca547239..4af861c272 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -367,7 +367,7 @@ def rentenwert(wohnort_ost: bool, ges_rente_params: dict) -> float: out = params["ost"] if wohnort_ost else params["west"] - return float(out) + return out @policy_function() diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index 2f53b874da..f1a0c77d81 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -214,7 +214,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"] out = params["ost"] if wohnort_ost else params["west"] - return float(out) + return out @policy_function(start_date="2003-04-01") diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index 08cd7c915d..031830b5e7 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -198,7 +198,7 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie - erziehungsgeld__p_id_empfänger - arbeitslosengeld_2__p_id_einstandspartner - familie__p_id_ehepartner - - einkommensteuer__abzüge__p_id_betreuungskosten_träger + - einkommensteuer__abzüge__p_id_betreuungskostenträger Parameters ---------- @@ -224,7 +224,7 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie data["familie__p_id_elternteil_2"] = -1 data["kindergeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] data["erziehungsgeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] - data["einkommensteuer__abzüge__p_id_betreuungskosten_träger"] = data[ + data["einkommensteuer__abzüge__p_id_betreuungskostenträger"] = data[ "familie__p_id_elternteil_1" ] @@ -260,6 +260,22 @@ def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_marrie return data +def _apply_func_familie__p_id_elternteil_1(x, elternteil_1_candidate): + """Apply function to find the first parent id.""" + if x["familie__kind"]: + return elternteil_1_candidate[x["p_id"]] + else: + return -1 + + +def _apply_func_familie__p_id_elternteil_2(x): + """Apply function to find the second parent id.""" + if x["familie__kind"]: + return x["familie__p_id_elternteil_1"] + 1 + else: + return -1 + + def return_p_id_elternteil(data, n_adults): """Find the familie__p_id_elternteil_1 and familie__p_id_elternteil_2.""" # familie__p_id_elternteil_1 is the first adult in the household @@ -268,12 +284,11 @@ def return_p_id_elternteil(data, n_adults): } # Apply candidate id if familie__kind, else -1 data["familie__p_id_elternteil_1"] = data.apply( - lambda x: elternteil_1_candidate[x["hh_id"]] if x["familie__kind"] else -1, - axis=1, + _apply_func_familie__p_id_elternteil_1, axis=1, args=(elternteil_1_candidate,) ) if n_adults == 2: data["familie__p_id_elternteil_2"] = data.apply( - lambda x: x["familie__p_id_elternteil_1"] + 1 if x["familie__kind"] else -1, + _apply_func_familie__p_id_elternteil_2, axis=1, ) else: diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index ef59071e6d..e048632718 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -3,21 +3,19 @@ import numpy from ttsim import ( - AggregateByPIDSpec, - AggregationType, + AggType, RoundingSpec, - join_numpy, + agg_by_p_id_function, + join, policy_function, ) -aggregation_specs = ( - AggregateByPIDSpec( - target="an_elternteil_auszuzahlender_betrag_m", - p_id_to_aggregate_by="kindergeld__p_id_empfänger", - source="betrag_m", - agg=AggregationType.SUM, - ), -) + +@agg_by_p_id_function(agg_type=AggType.SUM) +def an_elternteil_auszuzahlender_betrag_m( + betrag_m: float, kindergeld__p_id_empfänger: int, p_id: int +) -> float: + pass @policy_function( @@ -69,7 +67,7 @@ def betrag_m( return out -@policy_function(skip_vectorization=True) +@policy_function(vectorization_strategy="not_required") def elternteil_alleinerziehend( kindergeld__p_id_empfänger: numpy.ndarray[int], p_id: numpy.ndarray[int], @@ -92,7 +90,7 @@ def elternteil_alleinerziehend( ------- """ - return join_numpy( + return join( foreign_key=kindergeld__p_id_empfänger, primary_key=p_id, target=familie__alleinerziehend, @@ -344,7 +342,7 @@ def anspruchshöhe_m_ab_201707( return out -@policy_function(start_date="2017-01-01", skip_vectorization=True) +@policy_function(start_date="2017-01-01", vectorization_strategy="not_required") def elternteil_mindesteinkommen_erreicht( kindergeld__p_id_empfänger: numpy.ndarray[int], p_id: numpy.ndarray[int], @@ -365,7 +363,7 @@ def elternteil_mindesteinkommen_erreicht( Returns ------- """ - return join_numpy( + return join( kindergeld__p_id_empfänger, p_id, mindesteinkommen_erreicht, @@ -442,3 +440,10 @@ def einkommen_m( ) return out + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def unterhaltsvorschuss_spec_target( + unterhaltsvorschuss_source_field: bool, p_id_field: int, p_id: int +) -> int: + pass diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index 5ed68556be..fd321afb9e 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -1,19 +1,20 @@ """Priority checks of transfers against each other.""" -from ttsim import AggregateByGroupSpec, AggregationType, policy_function - -aggregation_specs = ( - AggregateByGroupSpec( - target="wohngeld_vorrang_wthh", - source="wohngeld_vorrang_vor_arbeitslosengeld_2_bg", - agg=AggregationType.ANY, - ), - AggregateByGroupSpec( - target="wohngeld_kinderzuschlag_vorrang_wthh", - source="wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg", - agg=AggregationType.ANY, - ), -) +from ttsim import AggType, agg_by_group_function, policy_function + + +@agg_by_group_function(agg_type=AggType.ANY) +def wohngeld_vorrang_wthh( + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, wthh_id: int +) -> bool: + pass + + +@agg_by_group_function(agg_type=AggType.ANY) +def wohngeld_kinderzuschlag_vorrang_wthh( + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, wthh_id: int +) -> bool: + pass @policy_function() diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index df2c84b451..0d9765558d 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -1,21 +1,21 @@ """Income relevant for housing benefit calculation.""" from ttsim import ( - AggregateByPIDSpec, - AggregationType, + AggType, + agg_by_p_id_function, piecewise_polynomial, policy_function, ) from ttsim.config import numpy_or_jax as np -aggregation_specs = ( - AggregateByPIDSpec( - target="alleinerziehendenbonus", - source="kindergeld__kind_bis_10_mit_kindergeld", - p_id_to_aggregate_by="kindergeld__p_id_empfänger", - agg=AggregationType.SUM, - ), -) + +@agg_by_p_id_function(agg_type=AggType.SUM) +def alleinerziehendenbonus( + kindergeld__kind_bis_10_mit_kindergeld: bool, + kindergeld__p_id_empfänger: int, + p_id: int, +) -> int: + pass @policy_function() @@ -145,7 +145,7 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, - einkommensteuer__renteneinkünfte_m: float, + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, abzugsanteil_vom_einkommen_für_steuern_sozialversicherung: float, @@ -168,8 +168,8 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( See :func:`sozialversicherung__arbeitslosen__betrag_m`. einkommensteuer__einkünfte__sonstige__ohne_renten_m See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__renteneinkünfte_m - See :func:`einkommensteuer__renteneinkünfte_m`. + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_m`. unterhalt__tatsächlich_erhaltener_betrag_m See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. unterhaltsvorschuss__betrag_m @@ -190,7 +190,7 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__renteneinkünfte_m + + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m ) @@ -210,7 +210,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, - einkommensteuer__renteneinkünfte_m: float, + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, elterngeld__anrechenbarer_betrag_m: float, @@ -234,8 +234,8 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( See :func:`sozialversicherung__arbeitslosen__betrag_m`. einkommensteuer__einkünfte__sonstige__ohne_renten_m See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__renteneinkünfte_m - See :func:`einkommensteuer__renteneinkünfte_m`. + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_m`. unterhalt__tatsächlich_erhaltener_betrag_m See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. unterhaltsvorschuss__betrag_m @@ -261,7 +261,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__renteneinkünfte_m + + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m + elterngeld__anrechenbarer_betrag_m @@ -408,7 +408,7 @@ def einkommen( unteres_eink = params["min_eink"][min(anzahl_personen, max(params["min_eink"]))] out = max(eink_nach_abzug_m_hh, unteres_eink) - return float(out) + return out @policy_function() @@ -433,3 +433,10 @@ def ist_kind_mit_erwerbseinkommen( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m > 0 ) and kindergeld__grundsätzlich_anspruchsberechtigt return out + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def wohngeld_spec_target( + wohngeld_source_field: bool, p_id_field: int, p_id: int +) -> int: + pass diff --git a/src/_gettsim/wohngeld/group_by_ids.py b/src/_gettsim/wohngeld/group_by_ids.py deleted file mode 100644 index 9d1ac3ec72..0000000000 --- a/src/_gettsim/wohngeld/group_by_ids.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Wohngeldrechtlicher Teilhaushalt ID.""" - -import numpy - -from ttsim import AggregateByGroupSpec, AggregationType, group_by_function - -aggregation_specs = ( - AggregateByGroupSpec( - target="anzahl_personen_wthh", source=None, agg=AggregationType.COUNT - ), -) - - -@group_by_function() -def wthh_id( - hh_id: numpy.ndarray[int], - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[bool], - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[ - bool - ], -) -> numpy.ndarray[int]: - """ - Compute the ID of the wohngeldrechtlicher Teilhaushalt. - """ - result = [] - for index, current_hh_id in enumerate(hh_id): - if ( - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] - or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ - index - ] - ): - result.append(current_hh_id * 100 + 1) - else: - result.append(current_hh_id * 100) - - return numpy.asarray(result) diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index 6c8255a9c0..2ddd702daf 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -76,7 +76,7 @@ def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: out = wohngeld_params["min_miete"][ min(anzahl_personen_hh, max(wohngeld_params["min_miete"])) ] - return float(out) + return out @policy_function(end_date="2008-12-31", leaf_name="miete_m_hh") diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 7cd03da64d..d6793adc64 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -16,7 +16,12 @@ 3. In this sense, this implementation is an approximation of the actual Wohngeld. """ -from ttsim import RoundingSpec, policy_function +from ttsim import AggType, RoundingSpec, agg_by_group_function, policy_function + + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_wthh(wthh_id: int) -> int: + pass @policy_function() diff --git a/src/_gettsim_tests/conftest.py b/src/_gettsim_tests/conftest.py deleted file mode 100644 index 6a7eb4b996..0000000000 --- a/src/_gettsim_tests/conftest.py +++ /dev/null @@ -1,17 +0,0 @@ -from ttsim.config import set_array_backend - - -def pytest_addoption(parser): # type: ignore[no-untyped-def] - parser.addoption( - "--use-jax", - action="store_true", - default=False, - dest="USE_JAX", - help="Use JAX backend for tests.", - ) - - -def pytest_sessionstart(session): # type: ignore[no-untyped-def] - use_jax = session.config.option.USE_JAX - backend = "jax" if use_jax else "numpy" - set_array_backend(backend) diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml index ae82a94c82..c9c46861e6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml @@ -2,6 +2,7 @@ info: note: '' source: '' + precision_atol: 0.01 inputs: provided: p_id: @@ -25,7 +26,7 @@ inputs: - 0 - 0 - 0 - p_id_einstandspartner: + arbeitslosengeld_2__p_id_einstandspartner: - -1 - 5 - -1 @@ -46,7 +47,7 @@ inputs: - 5 - -1 - -1 - eigenbedarf_gedeckt: + arbeitslosengeld_2__eigenbedarf_gedeckt: - false - false - false @@ -54,21 +55,21 @@ inputs: - false - false outputs: - arbeitslosengeld_2__fg_id: + fg_id: - 1 - 1 - 1 - 1 - 1 - 1 - arbeitslosengeld_2__bg_id: + bg_id: - 100 - 100 - 100 - 100 - 100 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml index a47d20bb85..d7275241ee 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index c80da8191f..6583cb57a9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,14 +1,14 @@ --- info: note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: alter: - 40 - 10 - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 arbeitslosengeld_2__eigenbedarf_gedeckt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 3d295bcce4..633e66aee1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,14 +1,14 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: alter: - 40 - 10 - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 arbeitslosengeld_2__eigenbedarf_gedeckt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 5f53e5c182..ec44992064 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -9,7 +9,7 @@ inputs: - 40 - 10 - 45 - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 3deb19fc90..53aa424d6b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -9,7 +9,7 @@ inputs: - 40 - 10 - 45 - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index b00e52a5f8..ef0246b688 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml index b9b5245b17..05d441a017 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml @@ -2,7 +2,7 @@ info: note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult Regelsatz. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml index 076fe1306f..f5a1f023e0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml index 051b0961d5..547b60c023 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index ee5f140853..8b39e123ab 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Regression test. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml index c257d0f0b9..8ea56ab7b2 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: Test if household with all partners being retired does not get ALG 2 - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml index 35fe57ff3b..fe28214bb0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: Test if household with retired and non-retired adults do get ALG 2 - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index 9cbaa14055..ba5507b1a1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -1,7 +1,7 @@ --- info: note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index ad8fe65b27..f44fa2b91a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -1,7 +1,7 @@ --- info: note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml index a9663b7c1c..e3cc07f9a0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml index 05a4c5954d..bb77228519 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml index e5dfc9e46d..ebc401c7ec 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml index 217cd55c7a..844efa2b06 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml @@ -1,7 +1,7 @@ --- info: note: Test to check the age cutoff at the age of 14. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml index feaf7ba588..89853e4d9b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml @@ -1,7 +1,7 @@ --- info: note: Test to check the age cutoff at the age of 6. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index 7477d1b9a7..802029bd86 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index 6681d70231..a990f9489e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml index 9ba11fa0ad..92c4534c15 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml @@ -1,7 +1,7 @@ --- info: note: Test with old income thresholds - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index bc005f3003..31247804c3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -2,7 +2,7 @@ info: note: Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from testcase in 2011. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index 4fa57f9503..7e6fe38cb7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -2,7 +2,7 @@ info: note: Test with old income thresholds with income from self employment, adjusted for Kindersofortzuschlag. Constructed test based on hh 19. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index 17bb7b17cf..30933877d1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -2,7 +2,7 @@ info: note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag of 20€). Test cutoff around 18 years. - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index 5c29c99f1a..db0213938d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -2,7 +2,7 @@ info: note: Test with old income thresholds and new Kindergeld, (adjusted for Kindersofortzuschlag of 20€). Household with wealth. - precision: 0.01 + precision_atol: 0.01 source: https://www.hartziv.org/rechner/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index 433553a9bb..7c3a9b5a3b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -2,7 +2,7 @@ info: note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag of 20€. - precision: 0.01 + precision_atol: 0.01 source: https://www.hartziv.org/rechner/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml index 9bccd82150..8156dd8e05 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml @@ -1,7 +1,7 @@ --- info: note: Test with new income thresholds - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index 0924cf06c5..f013922fad 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -2,7 +2,7 @@ info: note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag of 20€. https://buergergeld-rechner.org/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index 83e30a51d7..19489022cf 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -2,7 +2,7 @@ info: note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag of 20€. - precision: 0.01 + precision_atol: 0.01 source: https://buergergeld-rechner.org/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index f23aa95b8f..9bd979b1ac 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -2,7 +2,7 @@ info: note: Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from 2011 testcase. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml index 7f4e5ff59f..96ffc650bb 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml @@ -1,7 +1,7 @@ --- info: note: Test with new income thresholds w/ income from self-employment. - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml index a754508a0d..c557b15839 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml @@ -2,11 +2,11 @@ info: note: Household with 2 children, where child income does not exceed needs. Hence, child stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. - precision: 0.01 + precision_atol: 0.01 source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html inputs: assumed: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml index 768ec0653c..fefc333137 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml @@ -3,7 +3,7 @@ info: note: Household with 2 children, where child income of second child exceeds needs. Second child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent via Kindergeldübertrag. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: {} @@ -16,7 +16,7 @@ inputs: - false - false - false - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml index c3495e57b8..9f8b51220a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml @@ -3,11 +3,11 @@ info: note: Household with 2 children, where child income of second child exceeds needs. Second child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent via Kindergeldübertrag. via Kindergeldübertrag. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml index 2e83944cc8..8ddccde96b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -147,7 +147,7 @@ inputs: - 100.0 provided: {} outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml index cb805d8fdc..dc51cc5214 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -77,7 +77,7 @@ inputs: - 100.0 provided: {} outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index a1e5db26f6..3bdd21c2d8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -11,7 +11,7 @@ inputs: arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 arbeitslosengeld_2__eigenbedarf_gedeckt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index cd621ead72..35e810359e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -11,7 +11,7 @@ inputs: arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - false - false - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 1 arbeitslosengeld_2__eigenbedarf_gedeckt: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 02d0559709..f813df5f4b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -13,7 +13,7 @@ inputs: - false - false - false - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index d922459d2c..ae2685400e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -13,7 +13,7 @@ inputs: - false - false - false - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index 33223ff919..53d2279442 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -1,7 +1,7 @@ --- info: note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: @@ -11,7 +11,7 @@ inputs: - 10 - 14 - 19 - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml index 9f03b4f1b6..eca0d92365 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml @@ -2,7 +2,7 @@ info: note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult Regelsatz. - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index d4da154518..a1f2585501 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -2,7 +2,7 @@ info: note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index a6aa22bbc3..d9d2977788 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -2,7 +2,7 @@ info: note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. - precision: 0.01 + precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" index 7b41d54db4..9a54724938 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.steuerlex24.de/demoseite/information_steuerlexikon/index/xid/462984 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" index 25d91f0b92..d871445e0b 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" @@ -1,7 +1,7 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" index 42e8c9f3c9..7b16e102ca 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" index b876d5c0df..891c89abe8 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" index d40a04d5cd..75e967f516 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" index 3bb4d51601..0850898de6 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Testcase from zu_verst_eink inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" index f9ac02a07a..f69af782f1 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" @@ -1,7 +1,7 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" index 9891b35cda..4580372179 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" index ae2cdd1c58..ea3eb3aa66 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Testcase from zu_verst_eink inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" index fc47c11352..4790baf28e 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ruv.de/ratgeber/altersvorsorge/staatliche-foerderung/basisrente-sonderausgabenabzug inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" index 772ec99c0f..b773eb48a0 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.finanztip.de/vorsorgeaufwendungen/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" index a202277e7b..9ac11d0894 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" @@ -1,7 +1,7 @@ --- info: note: corrected tax-exempt employer contribution in testcase - precision: 1 + precision_atol: 1 source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" index d7c90b7fd6..ae952edf24 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.haufe.de/finance/haufe-finance-office-premium/vorsorgeaufwendungen-225-behandlung-von-ehegattenlebenspartnern-im-falle-der-zusammenveranlagung_idesk_PI20354_HI2531457.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" index fa26edab7f..24c009869a 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" @@ -1,7 +1,7 @@ --- info: note: Cannot access original source. Result adjusted by 5 to fit calculated result - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" index 517f80e550..010b2766d6 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.iww.de/ssp/archiv/aenderungen-durch-das-alterseinkuenftegesetz-abzug-von-vorsorgeaufwendungen-ab-2005-f2980 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml index 6ad67dc4c3..d94176800c 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml index df1a32d268..6836010614 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml index 0a0c094a29..68c4cd239d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml index 33d4eee31f..bc67f8585d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.smart-rechner.de/einkommensteuer/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml index e40b766427..e6f738b476 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml index 5a546afee2..da705f6cba 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml index 09d16c2a63..dc8e9a27f6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.smart-rechner.de/einkommensteuer/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml index 46a51753ce..52b42a8d71 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml index ca1ac69b57..107a9ea853 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml index 92090cb300..897eb140ef 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml index 05659c60ca..1c6d4c4c92 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.bmf-steuerrechner.de inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" index 2033e8bc4c..0ff0400cbf 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" index 900d4f4fa6..21554a0d0d 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" index 9215dbef58..a592fdec3a 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" index aaeacd98f2..f8c944b322 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index d05d9883db..7b77d238f9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 0 einkommensteuer__gesamteinkommen_y: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 7af7362283..8aa4592080 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1916.0 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 6280 einkommensteuer__gesamteinkommen_y: - 4328.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index c9985d20e6..bb18897328 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1927.8 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 9880 einkommensteuer__gesamteinkommen_y: - 7916.2 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 51434257d4..ea63e06ab8 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2334.2 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 13480 einkommensteuer__gesamteinkommen_y: - 11109.8 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 2ca9098670..352a119bed 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2554.02 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17080 einkommensteuer__gesamteinkommen_y: - 14489.98 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index e4f39ebc78..1ad1920af4 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html inputs: assumed: {} @@ -16,7 +16,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5000.0 @@ -28,6 +28,12 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false einkommensteuer__gemeinsam_veranlagt: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 einkommensteuer__gesamteinkommen_y: - 29964.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index d15d5e654b..7add6f0625 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: http://www.dr-wolters.de/content/inhalte/steuerberater_service/onlinerechner/einkommensteuer_berechnung/einkommensteuer_rechner/index.html inputs: assumed: {} @@ -21,9 +21,18 @@ inputs: einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 7700.0 - 7700.0 @@ -106,7 +115,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 - 23000 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index b82d3b6054..26fdaf8644 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.n-heydorn.de/steuer.html inputs: assumed: {} @@ -21,9 +21,18 @@ inputs: einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 10359.0 - 10359.0 @@ -106,7 +115,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 35000 - 29000 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index 55cc05a8e0..a15e2ccc52 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2547.22 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 13400 einkommensteuer__gesamteinkommen_y: - 10816.78 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index fa446bdc77..5985cda8e9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 3105.28 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17000 einkommensteuer__gesamteinkommen_y: - 13858.72 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index f201d5eb3d..25cf305c77 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5917.6 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 59000 einkommensteuer__gesamteinkommen_y: - 53046.4 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index bd5726b3f6..bbfe06096b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 0 einkommensteuer__gesamteinkommen_y: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index e039b630ed..369451cc9f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 990.74 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 6200 einkommensteuer__gesamteinkommen_y: - 5173.26 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index bde317a5fe..e43727a579 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -16,10 +16,16 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1910.41 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 100.0 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: @@ -73,7 +79,7 @@ outputs: - 0 einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 9800 einkommensteuer__gesamteinkommen_y: - 7853.59 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 2492a1a6af..20c17d3f9e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -21,9 +21,18 @@ inputs: einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 3119.94 - 3119.94 @@ -106,7 +115,7 @@ outputs: einkommensteuer__abzüge__pauschbetrag_behinderung_y: - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 17000 - 0 einkommensteuer__gesamteinkommen_y: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 3c1516744f..120556d635 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} @@ -31,11 +31,26 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 - -1 - -1 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 10901.0 - 10901.0 @@ -172,7 +187,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index e110012e07..b991de8cdd 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -1,7 +1,7 @@ --- info: note: Result from source including Betreuungskosten - precision: 0.01 + precision_atol: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} @@ -31,11 +31,26 @@ inputs: - 0.0 - 80.0 - 45.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 - 27 - 27 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 10901.0 - 10901.0 @@ -172,7 +187,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 939c5b3c14..9cfca1caa6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -1,7 +1,7 @@ --- info: note: Result from source including Betreuungskosten - precision: 0.01 + precision_atol: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: assumed: {} @@ -31,11 +31,26 @@ inputs: - 0.0 - 62.5 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 - 31 - -1 + einkommensteuer__einkünfte__sonstige__ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 10901.0 - 10901.0 @@ -172,7 +187,7 @@ outputs: - 0 - 0 - 0 - einkommensteuer__einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: + einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - 41000 - 23000 - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index 97ecc84d9a..53c9ac42cd 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 5c766aa700..9d782b6ccd 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index 8dc9e91afd..ae8a23df0c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 88a9a8e313..90669b0e60 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index f8e3a0937c..bef10891e3 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 95ef126786..70822e52c9 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index e90f6eb1ec..4e55964b41 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index a8c60d8c28..2eb33f7d50 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index 53a7e7c45f..401c2421ff 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 70dd2a7e21..1473f3eed5 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index 6ef209896e..c06a06e8ce 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index b01cb42b17..47d40beef8 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index 9a4815c2c6..83459d112f 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index 53a7e7c45f..401c2421ff 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index e90f6eb1ec..4e55964b41 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml index 1d323a50b3..2648e9d91b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index 053e7adc40..a5d4e3efab 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 3fd7d1c416..082c199320 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml index cf234ecfe1..044a1433c0 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index 420593dda4..72c55533be 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index 5dfb52764d..3586ca3cd6 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml index a280c94acb..ecc174b550 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml index e898504af4..da81ab82e9 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml index 77b2973cc4..a0e76acc1b 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml index 001c4b613a..dd96fbdb6c 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml index 4b2c033916..4ba7fa6814 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml index e159f42027..f9b2866fb3 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 5bbc1321e4..73bcc50fd2 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 25492d2cdb..200e017d54 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml index d957692431..398de1e76d 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 2af62be286..b168ad4faf 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index c02365b6e1..feed17dea3 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index da22dd16d5..cf5ed5d409 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index 7b1c7a65c2..71697560e5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -46,7 +46,7 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 06921d87ac..0abcaf3187 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 204.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 45ae07cc3d..7b234b5d8f 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 205.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 2528614d1b..ed7e64fbab 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 206.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 9a9bb3ab49..720e1617ba 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 207.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index 0df467869d..ae194531a5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 208.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index 7793676160..c8026ec44d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -22,7 +22,7 @@ inputs: - 0.0 einkommensteuer__abzüge__betreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskosten_träger: + einkommensteuer__abzüge__p_id_betreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 83a1577157..655beae5ce 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -2,7 +2,7 @@ info: note: 'CZ: In case the other parent does not pay child support, the parent with p_id==0 can request full kinderfreibetrag (Add this as input?)' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -56,23 +56,23 @@ inputs: - 1 - 2 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml index 60714c6665..2bfdd8b0d2 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -43,18 +43,18 @@ inputs: - 0 - 1 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - familie__ehe_id: + ehe_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml index 5b26b70356..9aeab383ae 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - 3 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml index 05c51d8b4a..cae21e588b 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml index 8be08e90be..a9665eeffd 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml index 89c8abd6b4..d63b9b0175 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml @@ -1,7 +1,7 @@ --- info: note: One child is in separate Familiengemeinschaft since over 24 - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml index e05fc0b855..1ce98c29b4 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index c901c194ae..e74f3a400a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -2,7 +2,7 @@ info: note: Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never covers more than 2 generations) - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -80,31 +80,31 @@ inputs: - 3 - 4 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 100 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 1 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - 3 - 3 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml index 2422a55635..dcde3b95c0 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml @@ -1,7 +1,7 @@ --- info: note: Child in separate Familiengemeinschaft if he/she is married - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 1 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml index caf9a43c35..4a5933b865 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml @@ -1,7 +1,7 @@ --- info: note: Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for him/herself - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -55,23 +55,23 @@ inputs: - 1 - 2 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 1 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml index e8f0e39a18..bc9c7f6e4b 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml index 4565aa8837..f1cd9a9613 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - 3 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml index 90b7a63d62..c6f96a3269 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -67,27 +67,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 1 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml index 4fa22279c3..127ec0813c 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -79,7 +79,7 @@ inputs: - 6 - 7 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 @@ -88,7 +88,7 @@ outputs: - 300 - 1 - 300 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 @@ -97,7 +97,7 @@ outputs: - 4 - 5 - 6 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 @@ -106,7 +106,7 @@ outputs: - 3 - 0 - 3 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml index 853c4e096a..4b741e6218 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml @@ -1,7 +1,7 @@ --- info: note: A later implementation may rely on the order of p_id or hh_id. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -91,35 +91,35 @@ inputs: - 3 - 5 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 100 - 0 - 200 - 200 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 1 - 2 - 3 - 4 - 5 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 1 - 0 - 2 - 2 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - 3 - 4 - 5 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index a01b481065..d10ffc1f48 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -2,7 +2,7 @@ info: note: 'CZ: In case the other parent does not pay child support, the parent id==0, can request full kinderfreibetrag (Add this as input?)' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -68,27 +68,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - 3 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml index 22cfa15765..fc5b03b6ed 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -55,23 +55,23 @@ inputs: - 1 - 2 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 1 - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index da65bca0d3..14da7e9c29 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -2,7 +2,7 @@ info: note: not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is married to new partner (unterhalt__anspruch_m unaffected) - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -68,27 +68,27 @@ inputs: - 2 - 3 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 0 - 100 - arbeitslosengeld_2__eg_id: + eg_id: - 0 - 0 - 1 - 2 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 - 2 - familie__ehe_id: + ehe_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml index 587512abc9..c82892fd89 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_ehepartner_einmal_sgb_ii_einmal_sgb_xii.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because input columns are missing. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: @@ -24,9 +24,9 @@ inputs: - 0 - 1 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - einkommensteuer__sn_id: + sn_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml index e0395088c4..914af04817 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: - arbeitslosengeld_2__p_id_einstandspartner: 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml index 61251b4227..bfd6eebdd5 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: - arbeitslosengeld_2__p_id_einstandspartner: 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml index 426cc41785..5feb9839fc 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_nicht_einstandspflichtig_ein_haushalt.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: - geburtstag: 1984-07-14 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml index 3c0d397be5..8161d44a5b 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because input columns are missing. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: @@ -21,9 +21,9 @@ inputs: - 0 - 1 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml index f014d1120f..942fc79f26 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because input columns are missing. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: @@ -21,9 +21,9 @@ inputs: - 0 - 1 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 1 - einkommensteuer__sn_id: + sn_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml index c4deaacb8f..20d25b41f1 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_gemeinsam_veranlagt_unverheiratet.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: - arbeitslosengeld_2__p_id_einstandspartner: 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml index aebadf081a..08e5be6458 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml @@ -1,7 +1,7 @@ --- info: note: Skipping test for now, because error assertion is not supported yet. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: - arbeitslosengeld_2__p_id_einstandspartner: 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml index 7bd48b3b5a..0c9d3ce862 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -31,7 +31,7 @@ inputs: - 5 - 6 outputs: - einkommensteuer__sn_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml index a711767d5c..9f3025c149 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml @@ -1,7 +1,7 @@ --- info: note: Couple with three children and two grandparents. One child outside of parent BG. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -119,7 +119,7 @@ inputs: - false - true outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 @@ -127,7 +127,7 @@ outputs: - 0 - 0 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 @@ -135,7 +135,7 @@ outputs: - 0 - 0 - 0 - wohngeld__wthh_id: + wthh_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml index 67a4b6b617..b979ced211 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml @@ -1,7 +1,7 @@ --- info: note: Multiple households with mutliple Bedarfsgemeinschaften. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} @@ -119,7 +119,7 @@ inputs: - false - true outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 @@ -127,7 +127,7 @@ outputs: - 200 - 300 - 1 - arbeitslosengeld_2__fg_id: + fg_id: - 0 - 0 - 1 @@ -135,7 +135,7 @@ outputs: - 2 - 3 - 0 - wohngeld__wthh_id: + wthh_id: - 0 - 0 - 101 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index 95be84ce8b..190b193b22 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -2,7 +2,7 @@ info: note: Added capital income of 10 euros for household (expected difference in grundsicherung__im_alter__betrag_m_eg ((10*12)-26)/12)=7.83333333) - precision: 0.01 + precision_atol: 0.01 source: Adjusted test case based on https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index 86d267d400..fde0f79b12 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index ca9ada9b0b..6760938729 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 1bbaaed949..e0bbc39705 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index 9717a914fd..26b74c0015 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -2,7 +2,7 @@ info: note: Added minor capital income of 2 euros (no deduction from claim since below allowance of 26 euros per year) - precision: 0.01 + precision_atol: 0.01 source: Adjusted test case based on https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index 8aa63c2ad7..1753966d56 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -1,7 +1,7 @@ --- info: note: Test with positive wealth above wealth allowance - precision: 0.01 + precision_atol: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index ab697f1752..e1646d8c1d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -1,7 +1,7 @@ --- info: note: Test with positive wealth below wealth allowance - precision: 0.01 + precision_atol: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 747f24b131..38cadb556d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index 6d6eb446a5..20b73f74ed 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index 67b4ff35d7..f10d3f76ee 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -1,7 +1,7 @@ --- info: note: 'Calculation error on the website: should be 210.13 instead of 209.13' - precision: 0.01 + precision_atol: 0.01 source: https://www.mags.nrw/grundsicherung-im-alter-und-bei-erwerbsminderung-viertes-kapitel-ssss-41-46a-sgb-xii inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 7d7bff8adf..70ed41e948 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: Beispielpersonen Max B. und Inge M. - precision: 0.01 + precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index e4ee90a71d..5047280e98 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -2,7 +2,7 @@ info: note: Adjusted test case by adding capital income of 50 euros (expected difference in grundsicherung__im_alter__betrag_m_eg (50*12 - 26) / 12) = 47.83333333) - precision: 0.01 + precision_atol: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 4af7cd07e0..3dcfe6acb9 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -1,7 +1,7 @@ --- info: note: Beispielperson Gerda M. - precision: 0.01 + precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 96c145ed9f..41391ea993 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: Beispielperson Harald F. - precision: 0.01 + precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 1fb55ac33d..8a91c9745d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -2,7 +2,7 @@ info: note: Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge M. - precision: 0.01 + precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index ee2e2393c0..49f6679938 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -2,7 +2,7 @@ info: note: Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge M. - precision: 0.01 + precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 85ed9dbe07..28ce59a864 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index 74f8acb65a..a61673b2e6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index 4bc3f02e94..a9249a1ad2 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -2,7 +2,7 @@ info: note: Test if households with non-retired adult do not get Grundsicherung im Alter (as currently implemented those households get ALG 2) - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 1ad2d025b3..8b5eadb157 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -2,7 +2,7 @@ info: note: Capital income of 20 euros (monthly amount deducted from claim due to capital income (20*12 - 26) / 12 = 17.83333333) - precision: 0.01 + precision_atol: 0.01 source: Self-created test case inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index f281ac2283..70035363b0 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -2,7 +2,7 @@ info: note: Capital income of 50 euros (monthly amount deducted from claim due to capital income (50*12 - 26) / 12 = 47.83333333) - precision: 0.01 + precision_atol: 0.01 source: Self-created test case inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index cb40eafa4d..77a9a44fd7 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -1,7 +1,7 @@ --- info: note: Test with child and positive wealth above wealth allowance - precision: 0.01 + precision_atol: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 349bd5d25d..fc02504cb3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -2,7 +2,7 @@ info: note: Test with child and positive wealth below wealth allowance (website did not add general amount for child) - precision: 0.01 + precision_atol: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index 6e5734e187..b3b0c14bc4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 602f5c7e62..1b6428a613 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.vdk.de/deutschland/pages/themen/81170/grundsicherungsrechner inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml index 196d4bc9b6..39829eb0b6 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml index f63dfd686f..f830251969 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml index 1680f58351..3574c670ba 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index 642dd86437..325cb969c3 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index f3a558db08..0e827621e3 100644 --- "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -1,7 +1,7 @@ --- info: note: Overwriting the recipients of Kinderfreibetrag. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml index 47d4895212..749af39467 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml index 1c05f1e87c..84e0b10c71 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml index c36f09b473..7cb3b51d55 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index 8e7cd28315..b88d28c450 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 2c8402fb07..2349fc5286 100644 --- "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -1,7 +1,7 @@ --- info: note: Overwriting the recipients of Kinderfreibetrag. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml index 92e96f3b13..b120ff51e3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml index d76552d979..19fb6a0bb3 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml index 7541359c6f..bee5f12763 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml index 3a69a55955..255e8bfc09 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml index 7e783e5c7d..b94d732e80 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml index a7bb24c125..7875b3e7c9 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml @@ -1,7 +1,7 @@ --- info: note: check age cut-offs at 18 and 25. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml index 970d9a4cf3..f76c34f824 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml index e239ba562b..56a3a2aa80 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml index e72bb81e84..9633493d69 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml index f43e328552..abf27466be 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml index f98973f36b..a438fd82da 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml index 93c888241b..deaded273b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml index 92441e2862..fadd4ea62c 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml index 57eb12cefd..50106af9c7 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml index 274a6f4d27..5c65b90646 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml index 274a6f4d27..5c65b90646 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml index 8b4b7532db..28ddd9780f 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml index 8b4b7532db..28ddd9780f 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.kindergeld.org/kindergeldrechner/ - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml index 6071b7a0eb..c32ff58ed7 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml index 2152fa423c..882e90c028 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml index 9a0da737bc..64d8a96970 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: Wealth below wealth allowance leading to no deduction in Kinderzuschlag - precision: 0.01 + precision_atol: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml index 6d089bc33d..7b7f42b9aa 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml @@ -2,7 +2,7 @@ info: note: Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first month - precision: 0.01 + precision_atol: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml index 325a5ed4f3..96816f3f35 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: Wealth significantly above wealth allowance leading to no claim - precision: 0.01 + precision_atol: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml index 47c4353569..a4f71a221e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml index 065d0789a4..f8279804a2 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml index af792f3880..fa4e2318ee 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml index 63546db79a..551882bca9 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml index be51d86e5a..15360911f0 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml index 7e6b2ea877..d2fadd8f7b 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml index e4220f2cec..819c0cd675 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml @@ -2,7 +2,7 @@ info: note: 'Caution: Regression test for child income. Same as hh_id_14.yaml but with made up child income, so the results are not based on any source.' - precision: 0.01 + precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index 836ebee145..de8b76624b 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -2,7 +2,7 @@ info: note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (above freibetrag_vermögen_in_karenzzeit_bg). - precision: 0.01 + precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index 8e84a39d3e..a12f2561be 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -2,7 +2,7 @@ info: note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (still below freibetrag_vermögen_in_karenzzeit_bg). - precision: 0.01 + precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml index 9dbe15b412..ea6683a1ff 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml index 5c41e9d48e..0ea9c80e05 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Made up. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml index c071882f88..ca368c9a3f 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml index 319ec1b628..86b6652b4d 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml index 19d334aa8f..b46c6d5ec5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml index 7d90d643a2..2d0598dd25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml index 05f14bee1c..2f3e54cc9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml index 87289ff474..db98dd5198 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml index 8ec14ca225..6a0adc7c48 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml index 3251e519d2..96d85abc0e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml index 1f8c03c8bc..26401aac34 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml index 6544afd915..ce706b9513 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml index 1f8e2d057b..d608034fc8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml index 2d4d996c63..4710309174 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml index d87d6e31de..ef53275d88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml index d95f85a467..7fda4bb6dd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml index 12819050ea..1718f94f9b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml index 8b7682969f..9ae01a4940 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml index ba8f285aec..cd18e4283f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml index f8a4e53b51..c5a0a19673 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml index d5471afaae..5316c0fb34 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml index dd6abb749c..b89d51b403 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml index 0c0d6a93ef..850f66a537 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml index 334c4ad542..74f2543ecc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml index 96260077cb..40dfc8721c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml index b35b47a040..59ce3c2860 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml index 5a93b04400..fc74630dfe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml index 827f4ba7bc..adf63b1b01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml index 6cfa2aaf5a..80d3d1dafe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml index 9bcf81a7c6..c6220e6587 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml index e309d87278..ee3a10dfd2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml index 1b9da18e55..a0a9ac91c7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml index e37a809d58..672ca23c8e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml index 39873baaf0..4696452783 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml index 80d04a9e50..667cfc6004 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml index 7aaf7e58e1..674900c52c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml index 59079d0abf..c7aa758b59 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml index ef42732dbf..8e894b188d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml index 5d1718c2cb..28dce1739f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml index cfc96abf88..25a10c3607 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml index cfd88f5fd4..68b5149b24 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml index 010254ea6b..e38ddc343c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml index 82396c305c..17e3cde5d0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml index a74fda2ed5..34dfd808c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml index 74d2fe44c0..010429e463 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml index 634b2600a5..8262c4a8c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml index 28de469576..025a7a9497 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml index 2f88b8d88e..2735dd55c2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml index 70ee9c1347..17f334d20d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml index ec14a8515f..463faa06dc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml index adc92fa4ce..78f975e336 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml index b23b43ae70..7470771193 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml index 90b9768591..96bead6206 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml index 3d8eb5c732..9cd70a3114 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml index 6cf11de759..f660dc4803 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml index 6bb485d882..453ec66588 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml index 579902e9a7..388dd82648 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml index 6f40e6f238..88f419334e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml index 5b58f3bc3c..4ea080951a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml index e684a1a485..1a0503ef9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml index 5f49ca5c8c..f8d51fbfca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml index 7b631a5700..39af00e97b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml index 4da9a1904b..feb3e97e9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml index 2936b53e37..269275062b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml index b0e12f171f..d07b324475 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml index fb6a185e81..3255165f2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml index e63b031abe..68201823d1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml index 7e2b8c945c..074e14775f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml index 64f464de6e..795281a288 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml index 56dc94599a..8d0c562276 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml index 2e00e764b7..c0f8e73def 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml index cd6896dc2f..56dd3cf5f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml index 5154b4a7ed..8c5cbb20bc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml index cfc59f88e2..a5bde14b82 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml index 7a8fb7b13b..bd2f457915 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml index 54b4f74f6c..28b0d8350f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml index d4e22df05b..dc23543534 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml index 460c4c06ee..7615fc8676 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml index 74584235e7..61819d4d89 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml index 8b46cac2a4..64ce4babcc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml index 8cdbbd39c8..370b702779 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml index 5c1300d4ef..2ffacbd666 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml index e5a491844f..9fb10703d0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml index 2c671d348d..5a18e95881 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml index 844f628c5f..0969a9829e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml index bdfa2fb636..0923596bc8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml index a4085b95a3..9262dd8a2d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml index b16b37e9d4..d2292f2746 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml index a12430a3fd..f18e847c9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml index 8adb667fc5..0e5fc6a523 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml index b1a15b2c0f..2b2101b981 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml index 3ad448a51a..63c19f8d0a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml index e96668ae25..cfeab8b29b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml index 434efdfdf4..d5fdac8b0c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml index f35310cdbc..cf31241d3c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml index 22cb66c83d..49dab70e52 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml index a8ef34748c..fa2ad30429 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml index da21064e76..ce1531ed1c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml index fd8cbaf045..9f25fd85fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml index 3141bd31d5..32667cbac6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml index 4e5d65d292..a2d3bd52af 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml index 6fb5099dc6..64c708a25d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml index cfaf28ab71..a840495be4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml index ca1fca46aa..1d070c43d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml index 096980a6aa..5e6b40fd27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml index ff199fc779..c9329c9450 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml index 31448ce142..abf9604db2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml index 87bba2638e..aba48711cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml index f6f4be7852..e582926a42 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml index f187fe364b..94370160f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml index 00e47f17fa..90b752e574 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml index bba229e067..9ed293e2c7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml index ff1cc69584..bd47244565 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml index b2637bfb44..1ba523ffa3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml index 6a7a6d2580..4cf2621812 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml index 93c2c29d5d..d5b1c85029 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml index 15d0fec573..7733b29be2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml index 6a28b01090..effcac91df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml index ea60dc790a..25a07c285c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml index b5d2e98fcc..dacecae80d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml index b2c81bb0b4..ddb2877c30 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml index 93b125e2cc..06dac8c89d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml index d673581baf..ee9e82c065 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml index c342e07c89..fc1e862399 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml index ceca43b241..6b28f61b25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml index c450103bfb..6d07bffa14 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml index 7e5149a2b8..52dcff582b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml index 5f36d2762c..05d0c2f73b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml index d5b0d39355..6a41d022eb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml index ba18aea2f6..43d1ac196d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml index f031b173a5..2fe0569270 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml index cfdbd9f042..63c469e290 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml index 499258cf80..17e094e538 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml index 7bbc793115..0b322c85e3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml index 9e00320627..253aa953bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml index f2d8ec1b3a..ee159e3452 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml index 900590d699..8071b0e810 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml index 060826f7db..90e9d67c0b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml index c3779f5fcf..b40f0d54ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml index 098d2b3a40..4cac5f3ab7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml index 50b97232d5..a8d661d08e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml index 1f7d901ee2..2c4876f557 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml index e305b42afb..5a92e9a1a4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml index 542f4dfab3..b29022f543 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml index be553ee0f4..41630a2454 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml index a4f8b0b471..2c537ea2e3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml index 2c0e888b6a..150d6fa1da 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml index bd10b3d0fb..db229bf9d7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml index cfedb7e155..0ccaa4b7c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml index ac83cbd300..0822a8f7c5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml index d8f0bdd885..73ed58bbde 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml index dd9e74cdb7..e77010a953 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml index b6e1751a27..b1a4c40728 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml index cbaee9ee79..2726cfe9ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml index 1b1bb8b032..9f645c78c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml index dccbcb061d..fc3a004332 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml index ee34b29628..2e130943c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml index 8316cc22b9..c29bbd2b42 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml index 90e57ca7f6..ce9ddfc719 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml index b6976d7cd0..4747a0fc3b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml index 8d7e2cf137..6c39219599 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml index a17bbb89e8..75ae248a51 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml index 9e666f1a2c..fa5ed1d65d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml index 22609c1fad..c3da7028bc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml index 3ded7451a2..ef9e3e948c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml index 6370c4b6f1..d48b3b5c34 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml index cf281473d0..1f4aa5cdbb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml index 21755dfaa3..69e0bc0541 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml index 411f078d6d..5229aa5b6c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml index 8a66cb84e3..c0dffb698f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml index d48fd9bfb1..6162ca154a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml index a5b353f6e0..70c7f18c7e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml index 2a65d2b4d5..fb05e78a91 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml index 0ffe6d2cb8..c540565954 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml index b0ec857913..c31f93265b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml index 4a14bb7af2..e137a89c62 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml index d4352ebd55..f2f7ef6f0b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml index 4a60aec0cf..65d31c3515 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml index 264655e0cd..76af5b7880 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml index bb18b2aceb..9fe11f37e1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml index c325491511..4ec580ac9d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml index c9d039cf18..f27ec82867 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml index 093da1e8df..f82605959f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml index 41891ec0e5..4bd5dbd3e9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml index e0d1731a0c..2264fde1b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml index 7bc70d5aa7..68283d6b45 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml index e201e706dc..db57875f6d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml index 173331d44c..020f5d0dcc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml index e2f348ef06..0c85a0e1b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml index 013b048e60..a4c0ca0e02 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml index aed1e78220..499d84efb2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml index a99ad17fc0..ad36b6fc1c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml index 14257d3183..b9be176ba6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml index 6954a20fa5..e8ba8653af 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml index 3b3a8782a7..675805e6aa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml index 24f0d96304..91bf736d37 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml index 0d18b0c967..b2ca47f5ca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml index 2837180fb9..c7f4f6cdd6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml index 73f20f76df..e35eb22f49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml index 144f596e2d..0e3a32f527 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml index f6280a7de6..b3d0e259f6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml index 824769c72f..4d205dc665 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml index ee09504919..498a0ac3f8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml index 165524a946..e2a7a60540 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml index 7d9d428d27..0a01e849ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml index 05bc859bd6..86b754e512 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml index da7aa4ca50..6786565c2c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml index 03b27b9668..4a61de8b3a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml index 61f38cd3c0..18dbb47784 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml index e846cc70d4..1845050b3e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml index dcb500ab8d..23d30ba22b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml index 1700a595f1..d1a0918925 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml index 9245d576da..2e047f32ad 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml index fd59276d69..e2fa348ea2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml index d754cab7a4..b6cfe19a22 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml index 1f4ba1838e..f849fc5df2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml index 5eb8cd1870..b10888552e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml index 79c007fb6b..10016b6504 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml index 0e01737297..765fb3402d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml index be4e2dff13..978513d7e6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml index 80a1fee7bd..202c839cf7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml index 7f9455e757..29cfc78093 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml index c0a9b5585d..5292417390 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml index d04a288104..38ccfea3e9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml index 1e96b0d337..02f456f083 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml index a27315c25b..25d248984c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml index b95bb2e862..d770ac1827 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml index b71a4aed45..07d765b90b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml index a7b7034fd6..835ffc7219 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml index 85aa8911c4..3b8aced12a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml index 532cc9377a..71c346b97b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml index 83af46b341..602f5bba9f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml index 42a08dc14d..8175d7f156 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml index dd21f68f2f..be2560bedf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml index 7356646f9e..14dedcecff 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml index 5dd130ddde..7a1831873d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml index e3beab9169..df1e87c9b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml index 6229a8ec45..722c7ce4b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml index 632d9b4481..d3abbf7426 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml index a65d3f0a26..b87c55eae3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml index a318bf8439..e23ee048be 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml index 750bb09688..2377d92f38 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml index 07b26dd65a..1e81542cb4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml index 3573c052f3..60772fc050 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml index 2ffce48b77..c0371f0068 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml index 1b975950d2..1666b711f2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml index 58a030dae3..1b7175fccf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml index 082b4f3c04..cfbe36ee51 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml index 2ba13d25d3..00a2386934 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml index a78f9f38f4..59c9cd0c90 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml index 0a167272d9..52dc26a347 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml index 407fc84bf1..59a560b2f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml index c7cfaf0f88..10f77e8b3e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml index 54ae887995..224522f45a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml index fefe673b0b..db33663a7b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml index 23b492b665..b4a0ac021e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml index 66a37c52ae..870698c9ab 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml index da68416e2b..5d809f2cd0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml index 4594537a06..98b4a85b8b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml index 17c7c46fb0..5cd887e08a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml index 832aa0d1aa..d4344565b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml index 1b51a98a90..e869bacc97 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml index 41cafa0d33..8d703b7e69 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml index 9d3d980a0d..d5b720051a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml index 7b15c4ae7a..4ff6a56675 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml index 2d24a95d63..b39924c094 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml index a554fa50d4..7504c3f4dd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml index cd051e8b67..6d94b50a04 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml index 5d855d8842..df7b2e16b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml index 9d749549fd..8f18e38a49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml index f7dff99952..3d44137e50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml index 75443cf529..9aea46a183 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml index fef05a4f27..00844b8f02 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml index 2192ea2586..16b5b8b1a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml index 948e173550..3870bede5c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml index 6697f3837a..a66f3b6bb2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml index 7562cc97e7..c8fd8331e9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml index 7a94ff392a..9fe925f0b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml index 901fe05567..73a1285584 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml index ab1bbe42ef..f3f4b21785 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml index 63d3f50d87..ee150306a0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml index 105bb3060f..2330911064 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml index 6a93f78546..2f891e8371 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml index ec381fe182..73009e4dee 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml index d33773793f..677781f202 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml index dfdd53fffc..7a1834a8f9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml index 6cca83bc5b..68c523c572 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml index 2005224edf..f9acc46a14 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml index 466fa60d5a..6c4960d772 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml index c39eecab6f..afbe9493fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml index 5bf6b39c98..8ef1a57323 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml index 09620487a3..ae66f5283a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml index da198a6b25..13f0f6134a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml index 2920380b5c..753c6b3af3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml index ef6392fb48..d391b0395c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml index a959b37809..7b93a196cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml index 4110840817..9e682bd7b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml index 3401c68c7d..e69b02bebc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml index 8c1403cc8a..621c91a1ad 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml index ca53109049..3e69491fa6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml index ef031a2cae..d639a5bced 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml index 3dd7147b05..b528f9d0d2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml index bee568f56a..a367b92166 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml index 6e1cd7fc43..6117b97453 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml index 3d544f48df..2afa74177a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml index 9a5966ef08..bb027de7fa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml index 6209a9cc7b..d6717c74b4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml index 7b4d260a53..457acce306 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml index 44e9653b5b..615bc1ac4e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml index a83635b849..937107507f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml index c16a5a357a..58e0fc2323 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml index 26168d7a34..6e86b8af99 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml index 3c1c574bf4..e2f41c1f93 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml index 60d17bb224..767e4f2351 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml index 5f47c60d5f..78b871bcc1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml index f7042d45c8..1cd940d3e6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml index 4b5332476f..a6ff99ca62 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml index fcd4309bd3..f26b3b9026 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml index e2e40cede0..dbe7b5984d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml index f281f85256..8ea2eaea65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml index 9f10159627..6eebd5e72a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml index ae6122b5b2..b69f56aa6c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml index 1503653dd2..c28dc7acac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml index 838b32be60..79cb6eb414 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml index 545c23139b..db06b9b7d9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml index 7104b7fbe7..55e409584b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml index a86ac5fd03..34d624e21c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml index 114539b1e7..589eacd120 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml index f2bfa81632..8c3fc0076c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml index 44709e6156..64bf17ec92 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml index c0816aad50..9d0b165694 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml index 331a365e88..612de530bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml index 1c44a3a6b9..d265cc14a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml index 527cd3a91e..1dff3d6df4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml index 4570968581..da7ffcf3c3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml index ef7748dcd2..a5fba5558c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml index a32932dd21..b63b02cb89 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml index fe10a60234..59357e5fbc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml index c13d71a07d..debcf29e6a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml index 2376550f49..eed80f970d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml index bca2b3452a..3bb84fe61d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml index c95966eed8..eb9c1025fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml index c96f668878..32b169130c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml index 3f8af7bf8d..32f2d7371a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml index 47fe127556..93e87c358d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml index 0cc9febf04..6f62be6a65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml index 72bb2094ea..519699f7cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml index 69e4a323ff..4169a9e139 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml index a44e3d2129..1e9771e111 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml index 74d6950150..04a047267c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml index 6160f700a8..03050279a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml index 9cc6e8aa4a..f6d8b92b20 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml index 1849114f3b..26bd06420b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml index df41171a5f..201bb8ad52 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml index b2893ff9c6..549df1817b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml index a85549147c..dd474988fa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml index ba91988e1e..a6d8650792 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml index 5fd5cd216a..9e885819ca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml index 9f08e750a1..b2477e0cb3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml index 92f93cacd7..e92e39e80c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml index 86a74f6dd2..5b5cf12c56 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml index bf1a3c7283..2b9f4ce092 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml index 060f3e94c9..9fc5dbc6e7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml index f8a3d7274a..ca45be0c3b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml index 6d5029a525..bb2286ba86 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml index e1964bfa2f..4930d1f454 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml index c0682c3876..2806fbec47 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml index e928adf415..65e39f8a2c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml index 5d62fc52c3..611256ba82 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml index e4341e70ce..ad9cb55c82 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml index 00e1a85699..7a363fe80f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml index 7106d944aa..0a5b601503 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml index 4e36509b16..b5b5b6773e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml index 33ab2005fe..5a521e5128 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml index c95966eed8..eb9c1025fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml index 10936ce434..58002107c3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml index 3f8af7bf8d..32f2d7371a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml index 5a81dcf70a..ace1549838 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml index 198cde233a..f7dddc5d9f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml index 7113ce56e4..8a946184d6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml index 7a6e40c974..6a4e319639 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml index a44e3d2129..1e9771e111 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml index ab5806b558..8c03e817e5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml index 563346aeda..72818824c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml index 9cc6e8aa4a..f6d8b92b20 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml index 205397cade..cd5799b8c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml index df87483b3d..6a630ee04a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml index e1b988aa1a..2d062014df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml index a85549147c..dd474988fa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml index 67e6d600fc..0da558fd12 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1.5 source: '' inputs: assumed: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" index cc388c7b3d..11cf76feff 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" index 96c34a23f3..fbd2b4db36 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" index c3adb975e8..24ab3f0d3d 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" index 382871af94..31e64f68e5 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" index af3d30c076..5a8c41a787 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" index 9bfea11079..984e0f1a72 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" index 3e125c3722..5a313713cf 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" index 2f3ef83b72..614e27e30c 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" index 864a6b72b7..16211e1191 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" index 378dfbc31c..1b297d4b2c 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" index 5b3c6a9809..cc8465d404 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index b53aaacae4..2b8bb19460 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index 721c194ad3..9613be8f2f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml index b799761f71..78446f2654 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: Calculation is not correct due to change in Grundfreibetrag in July 2015. - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index 0788468019..ac6b5f0c79 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 4eb5f703a9..6dae027db8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index 9952b61e5f..f6be572564 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index 15a7d6e984..4ec385f1d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: none inputs: assumed: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 04ffcf6b4e..6448715101 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index 451b45be9d..de1b3f8de2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index 3a5630758e..df0acb312f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index 9c383f4cd0..0c2baee94d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index b671486517..c588c7d66d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index a53ea7a6b4..adb26bb910 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 492fdf9863..7e2d1f1efb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index 34cb18db54..2cf3b06083 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index 11fde7131b..fe4050f3c3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 2462e022cd..35b752e1cd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index 8dd99d6cf9..34456502e9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index b8d443a487..a066b4cefb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.ikk-gesundplus.de/arbeitgeber/service/online-rechner/gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index 91081d7008..6dbdd7b7d4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index 7b52960498..65cbd22531 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index f878886cda..e22719b140 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 4fc4b8dd50..2cca12ba6c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index 4bdcea0bf6..d60c9c40c1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index 917c644d8a..e33fa82caf 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index eb74fae800..f5d7616226 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -1,7 +1,7 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 749d08defd..0b621217f7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -1,7 +1,7 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index e5a6076a32..0854b30dcd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -1,7 +1,7 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.barmer.de ' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index 20394315d1..13da7d0da4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -1,7 +1,7 @@ --- info: note: based on www.tk.de calculator with modifications to the kv-zusatzbeitrag - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index e9d497a171..1daea5dc2c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -1,7 +1,7 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.tk.de ' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index 0d6bf0e2a4..d345bad782 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -1,7 +1,7 @@ --- info: note: 'Sozialversicherungs-Rechner auf www.tk.de ' - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index 29e4338ccf..aa151ac971 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -1,7 +1,7 @@ --- info: note: Einführung Geringfügigkeitsgrenze 2022 - precision: 1 + precision_atol: 1 source: https://www.brutto-netto-rechner.info/gehalt/gehaltsrechner-arbeitgeber.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 546d02d555..46a6062035 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -1,7 +1,7 @@ --- info: note: Änderungen MidiJob 2022 (kinderlos) - precision: 1 + precision_atol: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index a4e9cee5c3..a9fba5a3bd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -1,7 +1,7 @@ --- info: note: Änderungen MidiJob 2022 (mit Kindern) - precision: 1 + precision_atol: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index 679f5ac6a5..75bf749eef 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -1,7 +1,7 @@ --- info: note: Änderungen MidiJob 2022 (mit Kindern) - precision: 1 + precision_atol: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index 19c3f6a0d0..ea33ddc765 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -1,7 +1,7 @@ --- info: note: Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) - precision: 1 + precision_atol: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index aca9935b51..94fa69c1fb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -3,7 +3,7 @@ info: note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 2 Kinder unter 25 Jahren - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 0a4fd19289..0f154ec3ae 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -3,7 +3,7 @@ info: note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 1 Kind über 25 Jahren und Midijob - precision: 1 + precision_atol: 1 source: https://www.ihre-vorsorge.de/rechner/midijob-rechner inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index 0480fbe435..7e35f40665 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -3,7 +3,7 @@ info: note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 5 Kinder unter 25 Jahren - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index 8c0a6add78..22180f5970 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -2,7 +2,7 @@ info: note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index 22c3d1f81f..89a2e20270 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -3,7 +3,7 @@ info: note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder und Midijob - precision: 1 + precision_atol: 1 source: https://www.smart-rechner.de/midijob/rechner.php inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" index 0a6d899142..01ae8da470 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: Above new Beitragsbemessungsgrenze (of 2024). - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" index 702c292552..03915f9e56 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: Above old Beitragsbemessungsgrenze (of 2023). - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" index b19fe763c3..22f01029c3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: Below old Beitragsbemessungsgrenze (of 2023). - precision: 1 + precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" index 74b9d67076..031a524c9d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" @@ -2,7 +2,7 @@ info: note: Number of children below 25 years of age. Necessary to calculate the long-term care insurance contribution. Does not depend on Kindergeld eligibility. - precision: 1 + precision_atol: 1 source: '' inputs: assumed: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" index 00a36149af..6b1401f03e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" index c08a6d73c0..47ca597ed8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" index a74c59abee..e3b0356d2d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml index 0b1fe3cb21..c01cad5e7b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml index eba6edb18b..7cf85af5b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml index ee7e27ac4a..eade059e69 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml index d6b1d9eea5..917d4f5d36 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml index 0b1fe3cb21..c01cad5e7b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml index eba6edb18b..7cf85af5b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml index a5576211c6..d995adcf75 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml index fc6352eccf..67d4413d2f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml index 2f6add29af..e241a87b5e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml index 333750d2a8..d8c95e4b81 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml index 9bdc3e16e3..f3e328a677 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml index 6a43ef256c..6f29a7a8e8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml index 1eeed911db..5dae99dbb7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml index 6f6f4e2ab2..38a961901c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml index 60e661ad50..11f56b741d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml index c08262d97c..ff951c1d6d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml index f3b5694290..fbfd731118 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml index 6af4f60570..425f04e1a0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml index 8217993f77..f634bcef22 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml index 1fbeb5b73f..435aaa3dc9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml index ff4bcdfc91..ed0da9ddce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml index 1976c309bc..0cd8972687 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml index 0e2dc3a531..330acc06b9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml index 5fabb2cf18..ca18136435 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml index a34f142827..ec846c9bd7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml index 125ef8c1c2..b84a315610 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml index 8683ac321c..07b370f1fe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml index 37ba33aaf0..16742fa068 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml index 469e4f4dce..b2b7632cef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml index 530231640d..652ac11170 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml index f0fbfaf252..6a869be871 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml index 723b3b2a23..09df1eede5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml index 2c1f11bd99..e9b86cd649 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml index 8ea31b1d22..15c46996aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml index 25a6cd3a0d..c371552741 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml index f86b73fe31..bc3da3dda6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml index 291d345482..41c69aea9b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml index 790a0320af..29ac061a9e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml index f9d0dbb143..95008ef8df 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml index 67f1f880e0..5f3790dc5a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml index 0b1fe3cb21..c01cad5e7b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml index eba6edb18b..7cf85af5b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml index c1ce69c1f1..4adb20fe51 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml index 281b4e1e2f..6320afe16d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml index ef3f72cadb..3281990c33 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml index d806d4f35b..9681c352f2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml index f51b3ce6a7..16981c3707 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml index 7a9e0ecc0f..79b1d24e4d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml index 40f381dbbf..e5ffa90263 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml index b9ace7dd2d..499d5cc88e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml index 18f9ba9146..696207750d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml index 440cf24f2a..5e1710e6e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml index a871361c1b..3193b662d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml index 5446da020d..5382dd623e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml index 50128efa9a..1550e83bc1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml index 5b1af9a282..8cc06d3f98 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml index 681675d865..8c2e2bc524 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml index 7245180f94..bf140f831c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml index de9d0b4547..c0da0767ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml index d7e35d19f3..53569d309e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml index b3b8c0fa46..0a97cde5cd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml index d47689d0eb..2e8f25ecfb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml index 3eaddd1b73..2fc12160e2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml index 702541415b..494e93a395 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml index 98f9677c48..aaf3222a53 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml index 79fb516ef9..0d50dc8dd7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml index f0fbfaf252..6a869be871 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml index 723b3b2a23..09df1eede5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml index 2c1f11bd99..e9b86cd649 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml index 8ea31b1d22..15c46996aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml index 25a6cd3a0d..c371552741 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml index f86b73fe31..bc3da3dda6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml index 291d345482..41c69aea9b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml index 790a0320af..29ac061a9e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml index f9d0dbb143..95008ef8df 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml index 67f1f880e0..5f3790dc5a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml index ea99e0b319..e0172180f1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml index d175c256f5..b2f04f29aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml index 9f8a9c69d0..51592a94a9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml index 70bdd177ce..5686fad2df 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml index 6141c53b55..b76bce666b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml index 82f877ed32..eb8e596ee5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml index d7df5ed4a0..9c836f73f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml index 2cf49f1d11..8122d2472c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml index 04bbc5e62f..bb6edbf2b6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml index c6a3a9ef10..3737e91bde 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml index ec4a425912..ae8ae10066 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml index 82972e68fb..3a3348b5ee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml index 308b6cf390..88ef7234e5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml index dbaaf1cfb2..157882c936 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml index 90876f9c48..ae2efcca91 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml index 13e22a4254..edc5ba1f4c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml index 3cfaadbca6..f51b9e37b6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml index 4eca52070e..93a36db8cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml index c5bfe777ef..b19b2377d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml index ad0bdc7f35..2fa083e195 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml index 9a09142aba..5b70608ef1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml index 3aaa41b775..d4fae4d5e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml index f1947e162b..5a7b0518dd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml index 6eeac64d56..6dd040dd07 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml index d5b0084bf3..3eae53e17d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml index 3e523d625a..7208df668b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml index a460724651..05437bf930 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml index fcb38f850e..8ade695604 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml index c8f3ee160f..f7a83e89be 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml index 22edf67e9e..867828bea9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml index 24ea4edc7c..2099ab8ed2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml index 598a551839..be2c85323c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml index 3389429680..3ace5f9066 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml index eff7037136..a1553247db 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml index 16e907b8ce..0b1b5c6bd5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml index 351740ded9..5c584bbc81 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml index 87a8650426..173ec0223d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml index 78163f2001..0aa06d37da 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml index 0951e58ba0..816c6989f4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml index 9264a1ebbb..7f7b76079d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml index f457e87a21..45167042d3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml index 55c8914f92..de532bd4c5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml index 49e56d145f..1a7a82b85a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml index 69ad6442fd..77b505f6b6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml index 775cdf32be..06c0ccdbd4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml index 057bba1a92..47a2abbad0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml index f0cef6883e..8a8e08e313 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml index 2bfe69b862..1f656d977b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml index a322c51f34..2fd349c760 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml index 036fac29da..0d22c81d19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml index b99478a58f..d9bf6c315b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml index 3c41de8d85..23210c9d68 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml index 50cd0ef3c3..babee2ab92 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml index ca9d5e9f40..40d7d7ba82 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml index cb650905f3..24063d0450 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml index 2b627321b1..fa938cbf05 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml index 6ce3c48254..860eb8b9bd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml index 177e429a5a..86b59754c6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml index 3f614dd03d..fb4e67efa1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml index 38b80f9a5d..523d556213 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml index 3a740ff6c7..02697168fb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml index 5ae9ad9bf3..4f4cc919ab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml index b24455cd47..8b96b47765 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml index fbc53f44c0..299d506ca8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: Made up from the law inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml index 3e8067f4bc..14315da7eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml index a62ad6cf8f..fa7d8fc5d0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml index 84cbed5a14..2fab824391 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml index 54e40d2bd9..ed4c9b9e83 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml index aa1fe8fac4..9d63f03c24 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml index 0ddce156b3..3e67cbe44e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml index 691e51dc2a..6603b48bac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml index f7b0f56b00..aefa10cd0d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml index 0aed9404d6..00d32f50b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml index 6937ae8126..e6dd2b0761 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml index a83d8d00f7..15d7d7908d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml index f7308388a3..cff059fbee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml index f638c02f5c..72dd4a92f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml index c2f67f34ae..e935485a77 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml index 4e9e6f1c74..d3ac761d19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml index a0ee1dca48..842f4393f3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml index e8109fb57e..5056f186f6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml index c39e313fd9..a6229f5440 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml index 47a957c7d9..9f492161ce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml index 4782b37373..7928b7ac94 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml index 38638d34ff..4f26b911ce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml index 5bcb9e283b..ff3ba67bb4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml index 36dbe61e1c..3ebea8e3d2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml index 1955823a28..f53ff7fc15 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml index 0103616da3..f29d3d3956 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml index f59d67cd88..fafeda5de1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml index 8310af2f04..4aa7711747 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml index 70ad8125a8..6d2957158a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml index fdc9cd0462..f1f58e14e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml index dfaf5facb7..d6820dee9d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml index 87c47af48c..5077c6b058 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml index 400e6308ff..e77188d29f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml index 22405c529d..c94f9c883f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml index b6104d4eae..64b86ac5ea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml index 2838d59b27..678e0fcf25 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml index 472ef54a57..9c28a4a059 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml index cd2e6afa49..684fc38315 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml index 10ab86703f..112274a5e3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml index 7fcb9538da..ff4adcb2aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml index e8be4dee98..6f3fb0f279 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml index cc5e04f1eb..bd8743572d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml index 870a8f9e82..7da9e989ae 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml index 399fac3e9c..295a1137d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml index f8dc4435cf..691cdc32ea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml index 289006fcb9..d8ec67a50e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml index d0d1efa071..2713c62df0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml index fce7fa4d88..f64756717e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml index 528cc1222e..3010b4361f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml index 591944b54b..0329a65c46 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml index 453413888b..7a7987e9d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml index 83ae248f61..ebc7e0c802 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index 473acf42cd..76be409bad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml index 2604691023..a6719a46a6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index a3755f5d64..6e2d245f04 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml index 5395f79ed0..cb759dcc4e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index 1403bd5e49..34b3165814 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml index c987e8948b..ff59e7391b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index 5823333f3a..9349226a3c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml index 5fbe0d1051..3fdd15042a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index e0aab450d3..849c0130e5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml index 5d2d8b06be..121cb26010 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml index 1879d33ec8..b1db2823bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml index 1a15b553d9..f5ce7893b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml index 5182dbbf1c..5044f0cbda 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml index 4f4c6e6083..be12f00350 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml index a94fb9e650..ab4951908d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml index ee24ae047c..37c5ca3a59 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml index 63060ca2c1..9600b8e378 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml index 57b17bdd11..a1e218d6ca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml index 841ca6e226..637fe43fbb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml index d4c0a0ca8e..648926f53c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml index 38ee5d0f61..0edce97cac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml index f152768338..c4434b8404 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index 3cbf575b83..f69b564781 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index f2179f2b41..9722b4dbeb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml index 6e9182f2a6..b868c32f46 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml index 8a045c471e..e484f66a38 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml index 1ec9fa135d..f883f58206 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index a0d0d28ada..b387b111b4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml index 9efeff3ac4..66cb461524 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index 04aa560762..244b535c19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml index 4b410ee556..cf6cea8c66 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index f5ca86e41c..e4da431f3d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml index 3cd4b1408b..edbb27b993 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index ba07fd38d6..d3d435fc74 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index 9cb2f61252..c25fed8266 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml index 38b47de5dc..223a6d4042 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index b37b0eb6c3..defc68eac0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 0bd2e13b3f..1eea5d7b04 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml index 8edcc1e9c3..c44ebcedf8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml index 4b1ec35081..4f3dab4e6e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml index 818919f0e9..e3ab516322 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index c4314e1402..0c62c72ece 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml index 38b4698cb2..924b0eaf71 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index dd808bf2af..acfb986cc3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml index 7e6f2fc798..73cffc085b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 07f39ce9e7..e4f03750be 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml index 215113e543..4f32cf2497 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 24bc049512..dc5a4298a2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 1a3cf23678..196a4de592 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml index c19d0447e1..50da8c2ea2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml index cc32a9142d..a9b744dd34 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml index 673e8ba9ef..29b17799a4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml index 0ed1cb0240..6395c6f8c3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml index d293cae165..94483791d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml index 3413c99369..3438bcc97e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml index d5d15dc7d0..0bbc355bbd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index 1ed683df56..e7a2ff2e39 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index c7af941786..d363a6032c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -2,7 +2,7 @@ info: note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze is lower.' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Kurz-vor-der-Rente/Wann-kann-ich-in-Rente-gehen/Wann-kann-ich-in-Rente-gehen_detailseite.html" inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index fb488cbb28..27e151fff2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 2b97cf9b2e..3869a4f4f6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -1,7 +1,7 @@ --- info: note: 'Beispiel: Erna Rüstig (Altersrente für Frauen)' - precision: 0.1 + precision_atol: 0.1 source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 97a8001da2..9ee59d50c4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 6f1d44b826..43548645e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -2,7 +2,7 @@ info: note: 'From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected based on source.' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index e05d625bb9..b2535b41ed 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -2,7 +2,7 @@ info: note: 'based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a mixed(east/west) earning biography' - precision: 0.1 + precision_atol: 0.1 source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index 4b22e63755..30fad92651 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index ec5bca734a..630faf06cd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index cb5c0cbea1..0fd8830490 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index 161400d8c8..36d6b48ac9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -2,7 +2,7 @@ info: note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze is lower. Verified or corrected using source.' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 8e51226a0c..8e57adb4ad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index c827e4c30c..6670949c22 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index f6fdc89de6..bf9e3f87e2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index 4b95ee1f22..cb47be2182 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: Verified or corrected using source. - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index b490035eb7..282dfe6f2e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -1,7 +1,7 @@ --- info: note: 'Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/' - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml index 42b2ee78ea..2044d636ae 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml index 9c34ebea8d..a8e4143d8c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index 2d87b3be48..03cf9c0581 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index 6ca0011790..cd443c99ed 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index 180936d1f3..5ff3c6988b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index b26fe7fabb..6549db47b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -1,7 +1,7 @@ --- info: note: 'From eastern Germany: earns more Entgeltpunkte for same wage.' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 36baaf798d..8fc4174128 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index ab729ce044..363d3e4b47 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index 643bded74e..88fc3becc8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index 926a9434ee..a4b6cdebc6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index 926a9434ee..a4b6cdebc6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index 4c076a5547..a3b8afc9e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index 6a8fcd6e86..bd31ca2b81 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 06b8decbf9..8cca767ec6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index 9824253cd6..73e90f8fde 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml index 6fd75bcba9..f0952fc773 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml @@ -1,7 +1,7 @@ --- info: note: null - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml index 0e9c3382df..386b440b97 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml index aa83e908b5..ad51682383 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml index e4295848bd..f95ac442a0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml index a832789473..dc3ae1c16e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml index 3bc489d2f6..ed5ce78234 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml index ad5a8d1aea..04fcf9e4b0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml index 0ffd607401..444fd02a4b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml @@ -1,7 +1,7 @@ --- info: note: Made up using the text of the law - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index 23a94c487b..e509bbc8ef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.smart-rechner.de/rentenbeginn/rechner.php - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index 292f7320ed..ba5986d13a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -2,7 +2,7 @@ info: note: 'from eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze is lower' - precision: 0.1 + precision_atol: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index 9e00fdb3aa..e5db884697 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -2,7 +2,7 @@ info: note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze is lower' - precision: 0.1 + precision_atol: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index de49c4648a..46ed0eb096 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index d118e63a75..d0d48b6cc7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index d118e63a75..d0d48b6cc7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -1,7 +1,7 @@ --- info: note: https://www.deutsche-rentenversicherung.de/SiteGlobals/Forms/RentenBeginnUndHoehenRechner/Rentenbeginn/rentenbeginnrechner_form.html?resourceId=fd80eb35-41ae-49ec-a76d-fae25f0fb182&input_=26d0ef0f-0f0e-4a04-b1db-4e7dbbba7228&pageLocale=de&emailText=&Geburtsdatum=01.01.1958&Schwerbehindert=Nein&Schwerbehindert.GROUP=1&Bergbau=Nein&Bergbau.GROUP=1&submit=Berechnen - precision: 0.1 + precision_atol: 0.1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml index 93aa6d5538..515bd7cca6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.1 + precision_atol: 0.1 inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 01c969d6ca..3a950891a2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 548897f1dc..bd89c77fcb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml index 47df69bb3b..c2b343116a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml index c2e8cd4121..3ba5568d2a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml index c507d6ac68..9e1eb6d65a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml index f0965470a6..a7a00b236a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 7ea2531db8..bb422b79c7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 7f02c25048..aa3d933d7e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 6eb7bc4c69..9594991694 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index d2d8c4a064..8610e79f67 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 58751cbe36..e68771e29e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index bb875b96e1..8c7b38e131 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml index 4390e28443..b952546553 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml index 7067e30c9e..886998c215 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml index 4987123d28..7cbeed5963 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml index 4e96fcbd54..3f72f79e9e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 130055ef9e..54c59e36ed 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 22828da963..8be4850b1f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 5f04f7e558..ea476124db 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 12fcf8309a..5927f98d89 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 51cd5c2389..47f9977e43 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 617aeccf76..ff3bd69a33 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml index 2edb922d46..9affe72e72 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml index e35940e5e3..9c2bab58b5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index c04e7a907a..9da039e230 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index fc32fc56c3..30aa9d0872 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 29cbc406fb..66b87e0318 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 0055705cff..f7e37a52a6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index bb8d2d775b..6ed8900a4c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 750c4536c8..768ce5b4d3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml index cf809f4d75..d31acc99a2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml index 07fc63cb30..19e5e2e125 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 292024eb9c..a90f2f498f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index d0dd892c84..a94ee395be 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 9710c6ef6f..00054eb3f9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index a40e75c38a..522edd1ef5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 6cc4f1972c..8b388a0966 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index c8f558d189..906dbb3f26 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index 8dcecf49b6..4f0bf31468 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 9e937bd8c1..8d585c4595 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml index 8d0c672471..782a8c1dee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml index 62a71c605c..d01a768db7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml index fd311491aa..c769ef753a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml index 99458d5cb0..857e41448d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml index 336d525275..91cd75c8f3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml @@ -1,6 +1,6 @@ --- info: - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml index 2575946f65..ef702c7104 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index e33be17da3..af6d43ef47 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 2bb4310084..b65e38f811 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 5f4acad93a..3bf30de98d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 6a9f115dae..96d83fe35f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 8c0fff775d..866904a30b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index a3cc69900d..2fd8221baf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index d3998da0b0..bdd0d6031d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index c33dc1dc96..b6674b2c43 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 27475358e2..94b1b79e8d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml index 2db6d9d68d..eaafe164a8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml index 632f41b7af..019875cb56 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml index 11736d14f5..6112aaf930 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml index 04b337d0cb..629d89ef53 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml index 5e32e40bb3..3f2f60ccf8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml index cd974c34c9..a43af303dc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml index d5e62c38bf..1034126f9c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml index 899addf517..5222d8ef83 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 69c3c97bd0..a56e56f97a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 64277277ac..8e578fc8ad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml index e10bbcc312..d17c4cce25 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index 59be96d750..bed2076258 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Own calculations inputs: assumed: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml index 7ebab35a68..17c2d8a268 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" index 4f9c05f355..eb65097bcc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml index 07ace38519..5f751f44d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: High income and low Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml index 2a6eb80e8a..b30d06b487 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml index 2cb0d5df94..dc621d26d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: Middle income and high Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml index 2554cef76d..59cc99fd29 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: Low income and high Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml index 8abd9d16c6..91fc5c6cb7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: High income and low Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml index 803495d53d..0a49f21561 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml index c4686bd10b..d58160db3e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: Middle income and high Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml index 7545a28f76..da827305f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: Low income and high Hinzuverdienstdeckel. - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml index 5ccda0af1f..eed1a3d7cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml index c8519dee09..fb19270087 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml index e903b4ead6..6835ffd75f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml index 5952b403ed..370942eea9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index 0ddd24cfb1..c74ca18dae 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -2,7 +2,7 @@ info: note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 - precision: 1 + precision_atol: 1 inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 28a1af14b0..73b21b4b23 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: Adjusted staatl rente - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html (Alexander Langkowski) inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index d391a5ed24..7559551103 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -2,7 +2,7 @@ info: note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. - precision: 1 + precision_atol: 1 source: 'Beispiel Alexander Langkowski / Hatice Yilmaz aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index 216b72cb7b..30c0e14f87 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: Person with zero Grundrente Bewertungszeiten - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 9efae1bec6..201fabe341 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -2,7 +2,7 @@ info: note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 - precision: 1 + precision_atol: 1 inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index 88ee9d56d6..1ab1101228 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index 277dadc5e9..dc93453f76 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -2,7 +2,7 @@ info: note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. Beispiel Sabine M. - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index de86bd145f..fcebab4dcc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -2,7 +2,7 @@ info: note: Adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index 8f2746ad44..c219f3ab59 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index 5f22c960e8..91f8eb581e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K. + Dieter P.) inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index abb65e66ee..7024e131da 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 1 + precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html (Ramona K.) + Dieter P.MonikaL inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 3d24899e0d..e7d5dc9c06 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -2,7 +2,7 @@ info: note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004 - precision: 1 + precision_atol: 1 source: 'Beispiel Richard Frenzel aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml index 1a358f664c..26d51ac26d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml index 3f18462a40..e105146a70 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml index 3793f69024..c60e90e9bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml index 050302c58f..5010e256df 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml index cda5851f3f..37cf2b4342 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml index 39d36eefda..3b5d31757f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml index 56652015c3..2d7c1dfee7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml index 65498d9d0a..7ab91ebb36 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml index 2daaca765e..a83cfd31f1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml index bec0518a71..cab5a5fe57 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: made up, regression test - precision: 1 + precision_atol: 1 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml index 1930463dbc..5591f50684 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml index f91630e74e..244aa66360 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: https://www.scheidung.org/anrechnung-kindergeld-auf-unterhalt/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 27ba5839af..848823420e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml index 76ee9b4192..7a3c3ead93 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml index f1d7ae579c..3acda80161 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml index fc9dba3f4b..b9ba6abb4c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/familien-werden-ab-2010-staerker-entlastet-100030 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34a84724d3..f35499e569 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml index 0f0296ef88..fab9916bde 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34a84724d3..f35499e569 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml index 0f0296ef88..fab9916bde 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34a84724d3..f35499e569 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml index 0f0296ef88..fab9916bde 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34a84724d3..f35499e569 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml index 0f0296ef88..fab9916bde 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34a84724d3..f35499e569 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml index 0f0296ef88..fab9916bde 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml index c14fa13603..479602ec18 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml index a371c0d80c..e12ba63862 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.berit-sander.de/2015/aktueller-unterhaltsvorschuss-ab-01-08-2015/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 6c2795efec..44ce1d8c68 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml index a83e0044fd..475622650c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.berit-sander.de/2016/unterhaltsvorschuss-zum-01-01-2016/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 5540e14472..75b52def49 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 18273b07b1..fc280fc17c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml index 3a045ce389..e3480f27e8 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml index cee48c7483..d84c57e8fc 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 0c4ffcab4a..342074243f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 7d6134b3f9..b87bca7b73 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml index 8436c0f85e..140de00acb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 2653d184f2..58add9ea35 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/das-aendert-sich-2018-120510 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 0c4ffcab4a..342074243f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 432ca733b4..aa50400ccc 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml index 1ba60ccfe2..f2e9aab664 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml index 1fa18bd78e..6393509f68 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 5a861bd662..dfb26efea1 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 0c4ffcab4a..342074243f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index e32ad9fcae..17b3f4a000 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml index b6cd785640..8debea5abb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml index 4330c34533..ff4a09a952 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml index b5d1c56586..7e383e4a4b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml index 4e2dbd50ce..48ac1b36e3 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml index a911074a08..763c9141be 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 0c4ffcab4a..342074243f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 1700a76708..68f775966b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml index 8436c0f85e..140de00acb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml index 13da24da86..4f8fb4c706 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 1715ce7f11..72e9faf54f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.daten.bmfsfj.de/resource/blob/133150/3d1b9355628bdb262dc4856f11a98e48/unterhaltsvorschuss-einleger-aenderungen-data.pdf inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index ee60c8c301..d8241f739b 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 58aa7d197e..b0613c06ed 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml index 335875ea47..5e5060d7d1 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 65469ab043..205d1c0f7d 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/aenderungen-2020-kinderzuschlag-unterhaltsvorschuss-freibeträge-142746 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 87fb687b31..90389a03fa 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 23d399c1c6..a5dd5d78ce 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml index f78a6c0ce1..8a75dfedc9 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 34437b91ff..786325953f 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://familienportal.de/familienportal/meta/aktuelles/aktuelle-meldungen/mehr-geld-fuer-familien-mit-kleinen-einkommen-ab-2021-161920 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index c3d31f7759..3c840199cb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 8a9712b4cb..a2dc9823d9 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml index 06194e5e06..0e1167bede 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.oeffentlichen-dienst.de/wirtschafts-news/129-familienrecht/1230-unterhaltsvorschuss.html#google_vignette inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml index 8cdfa02b3e..26594a6408 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index a42c23d41e..1929e00b00 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index dedb2ac21c..bfa00bdabd 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml index 20341408f4..75595fd1da 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.lohnsteuer-kompakt.de/steuerwissen/unterhaltsvorschuss-wird-erhoeht/ inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml index fb4e1f054f..6cd135d72e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the middle age group (6-11). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml index 4767f9762e..d4d3fe6b3c 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml index b62bd4b80d..a2da921fbd 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the lower age group (0-5). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml index 90251e646b..c285a0a029 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml @@ -1,7 +1,7 @@ --- info: note: One child in the upper age group (12-17). - precision: 0.01 + precision_atol: 0.01 source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" index 0f90757513..31badcd124 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" index 19274e9065..3285559e7e 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" index 884e552276..a6cd502bcc 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" index fad10e999e..ee541d5631 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" index 075c9ad3d2..3545d7ea95 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" index 741d6ba50a..79843e9c89 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" index 091a3912e4..473818eb39 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index 0459c304ed..ea36f07133 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -2,7 +2,7 @@ info: note: Expanded test case to include additional household members so that more than seven people are eligible for housing subsidies - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index 57b557302a..28d00b2dc6 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -1,7 +1,7 @@ --- info: note: No wealth threshold in place before 2009 - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml index 51e294d119..f2df354506 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml @@ -1,7 +1,7 @@ --- info: note: Wealth is too high for housing subsidies. - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index 686c5070d0..7c26b0a180 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 32afef27d9..deef6ccea2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index dfb3eca805..10c978de5e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index fcf2d23a92..c5d37fa599 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index 282ace279d..75e52a1b19 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml index 9f58ce4c42..1866128f61 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml @@ -1,7 +1,7 @@ --- info: note: Wealth is too high for housing subsidies. - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index 35b8fe455f..c42df531d5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: Regression test. inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 69b9c0126b..913ec3c025 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen, Vermögen. - precision: 0.01 + precision_atol: 0.01 source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index d42812889a..b3ac847079 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index adb5802a0e..21e41a8af3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen + Vermögen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=1&housingbenefitRecipients=1&income=735&rent=600&rentLevelZIPCode=53123&rentLevelTown.GROUP=1&rentLevel=5&rentLevel.GROUP=1&update=Berechnen&result=260%2C00 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 219a0ef52c..56cb196bae 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=3&housingbenefitRecipients=3&income=1365&rent=700&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=425%2C00 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 3660c774d0..fcac38a39e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.smart-rechner.de/wohngeld/rechner.php inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index 106686b68e..ae2bbe8f6a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=4&housingbenefitRecipients=4&income=1115%2C5&rent=730&rentLevelZIPCode=73434&rentLevelTown=3&rentLevelTown.GROUP=1&rentLevel=3&rentLevel.GROUP=3&update=Berechnen&result=746%2C00 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index ccffebac6b..9ca6c5264c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/SiteGlobals/Forms/wohngeldrechner/wohngeldrechner-2023-formular.html?resourceId=18737268&input_=18737272&pageLocale=de&householdMembers=5&housingbenefitRecipients=5&income=1750&rent=1300&rentLevelZIPCode=72393&rentLevelTown.GROUP=1&rentLevel=1&rentLevel.GROUP=1&update=Berechnen&result=746%2C00 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index aebe1d9b7a..d729aace8c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -1,7 +1,9 @@ --- info: - note: Several households that differ in their eligibility for Wohngeld because of Mindesteinkommen. - precision: 0.01 + note: >- + Several households that differ in their eligibility for Wohngeld because of + Mindesteinkommen. + precision_atol: 0.01 source: Made up. inputs: assumed: {} @@ -336,7 +338,7 @@ outputs: - false - false - false - wohngeld__wthh_id: + wthh_id: - 1 - 1 - 100 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index eee2be192b..1000bec21b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: assumed: {} @@ -307,7 +307,7 @@ outputs: - true - false - false - wohngeld__wthh_id: + wthh_id: - 1 - 1 - 1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 778bbbaab1..ff9ca8260f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -1,7 +1,7 @@ --- info: note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. - precision: 0.01 + precision_atol: 0.01 source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2023-artikel.html inputs: assumed: {} @@ -375,7 +375,7 @@ inputs: - 5 - 5 outputs: - arbeitslosengeld_2__bg_id: + bg_id: - 0 - 0 - 100 @@ -415,7 +415,7 @@ outputs: - false - false - false - wohngeld__wthh_id: + wthh_id: - 1 - 1 - 1 diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 5cd6579e3e..749058523e 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,19 +1,19 @@ import dags.tree as dt import pytest -from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, load_policy_test_data, ) from ttsim import compute_taxes_and_transfers -from ttsim.function_types import PolicyInput, check_series_has_expected_type +from ttsim.ttsim_objects import PolicyInput, check_series_has_expected_type test_data = load_policy_test_data("full_taxes_and_transfers") -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) def test_full_taxes_transfers(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -21,12 +21,11 @@ def test_full_taxes_transfers(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) def test_data_types(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -34,8 +33,7 @@ def test_data_types(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) flat_types_input_variables = { @@ -65,7 +63,7 @@ def test_data_types(test: PolicyTest): @pytest.mark.skip( reason="Got rid of DEFAULT_TARGETS, there might not be a replacement." ) -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) def test_allow_none_as_target_tree(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -73,6 +71,5 @@ def test_allow_none_as_target_tree(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=None, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index d39799c35d..5eac434044 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -3,7 +3,7 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -14,7 +14,7 @@ test_data = load_policy_test_data("groupings") -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.test_name) +@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) def test_groupings(test: PolicyTest): environment = cached_set_up_policy_environment(date=test.date) @@ -22,8 +22,7 @@ def test_groupings(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) @@ -55,7 +54,6 @@ def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): compute_taxes_and_transfers( data_tree=data, environment=environment, - targets_tree={"einkommensteuer": {"sn_id": None}}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + targets_tree={"sn_id": None}, + groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_grundrente_proxy_rente.py b/src/_gettsim_tests/test_grundrente_proxy_rente.py index e1a2606fca..d57ad1c42e 100644 --- a/src/_gettsim_tests/test_grundrente_proxy_rente.py +++ b/src/_gettsim_tests/test_grundrente_proxy_rente.py @@ -4,7 +4,7 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -29,8 +29,7 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): "rente": {"grundrente": {"proxy_rente_vorjahr_m": None}} } }, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) # Calculate pension of last year @@ -42,8 +41,7 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): targets_tree={ "sozialversicherung": {"rente": {"altersrente": {"bruttorente_m": None}}} }, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/_gettsim_tests/test_household_links.py b/src/_gettsim_tests/test_household_links.py index a46a71a0fc..564d04cede 100644 --- a/src/_gettsim_tests/test_household_links.py +++ b/src/_gettsim_tests/test_household_links.py @@ -2,7 +2,7 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -21,8 +21,7 @@ def test_aggregate_by_p_id(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - foreign_keys=FOREIGN_KEYS, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py index 3b94cf5d03..d310ae570e 100644 --- a/src/_gettsim_tests/test_synthetic.py +++ b/src/_gettsim_tests/test_synthetic.py @@ -265,7 +265,7 @@ def test_fail_if_functions_and_columns_overlap( i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -294,7 +294,7 @@ def test_fail_if_functions_and_columns_overlap( i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 for i in range(33) ], - "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ -1 if i % 3 != 2 else i - 2 for i in range(33) ], }, @@ -309,7 +309,7 @@ def test_fail_if_functions_and_columns_overlap( "erziehungsgeld__p_id_empfänger": [-1, 0], "familie__p_id_ehepartner": [-1, -1], "arbeitslosengeld_2__p_id_einstandspartner": [-1, -1], - "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ -1, 0, ], @@ -325,7 +325,7 @@ def test_fail_if_functions_and_columns_overlap( "erziehungsgeld__p_id_empfänger": [-1, -1], "familie__p_id_ehepartner": [1, 0], "arbeitslosengeld_2__p_id_einstandspartner": [1, 0], - "einkommensteuer__abzüge__p_id_betreuungskosten_träger": [ + "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ -1, -1, ], diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 2c84254063..bacdcf77bb 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -7,7 +7,7 @@ import pandas as pd import yaml -from _gettsim.config import FOREIGN_KEYS, RESOURCE_DIR, SUPPORTED_GROUPINGS +from _gettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS from _gettsim_tests import TEST_DIR from ttsim import ( PolicyEnvironment, @@ -59,7 +59,7 @@ def target_structure(self) -> NestedInputStructureDict: return dt.unflatten_from_tree_paths(flat_target_structure) @property - def test_name(self) -> str: + def name(self) -> str: return self.path.relative_to(TEST_DIR / "test_data").as_posix() @@ -75,8 +75,7 @@ def execute_test(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - supported_groupings=SUPPORTED_GROUPINGS, - foreign_keys=FOREIGN_KEYS, + groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) @@ -88,14 +87,14 @@ def execute_test(test: PolicyTest): assert_frame_equal( result_dataframe, expected_dataframe, - atol=test.info["precision"], + atol=test.info["precision_atol"], check_dtype=False, ) def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: all_policy_tests = load_policy_test_data("") - return {policy_test.test_name: policy_test for policy_test in all_policy_tests} + return {policy_test.name: policy_test for policy_test in all_policy_tests} def load_policy_test_data(policy_name: str) -> list[PolicyTest]: @@ -187,32 +186,12 @@ def _get_policy_tests_from_raw_test_data( date: datetime.date = to_datetime(path_to_yaml.parent.name) - out = [] - if expected_output_tree == {}: - out.append( - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree={}, - path=path_to_yaml, - date=date, - ) + return [ + PolicyTest( + info=test_info, + input_tree=input_tree, + expected_output_tree=expected_output_tree, + path=path_to_yaml, + date=date, ) - else: - for target_name, output_data in dt.flatten_to_tree_paths( - expected_output_tree - ).items(): - one_expected_output: NestedDataDict = dt.unflatten_from_tree_paths( - {target_name: output_data} - ) - out.append( - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree=one_expected_output, - path=path_to_yaml, - date=date, - ) - ) - - return out + ] diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 08bb266fdd..313fb0281e 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -19,14 +19,12 @@ from _gettsim.synthetic import create_synthetic_data from _gettsim_tests import TEST_DIR from ttsim import ( - AggregateByGroupSpec, - AggregateByPIDSpec, FunctionsAndColumnsOverlapWarning, - GroupByFunction, + GroupCreationFunction, PolicyEnvironment, PolicyFunction, compute_taxes_and_transfers, - group_by_function, + group_creation_function, plot_dag, policy_function, set_up_policy_environment, @@ -50,16 +48,14 @@ def test(*args): __all__ = [ - "AggregateByGroupSpec", - "AggregateByPIDSpec", "FunctionsAndColumnsOverlapWarning", - "GroupByFunction", + "GroupCreationFunction", "PolicyEnvironment", "PolicyFunction", "__version__", "compute_taxes_and_transfers", "create_synthetic_data", - "group_by_function", + "group_creation_function", "plot_dag", "policy_function", "set_up_policy_environment", diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index c640619981..dbedb311a8 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,23 +1,13 @@ -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType +from ttsim.aggregation import AggType +from ttsim.automatically_added_functions import create_time_conversion_functions from ttsim.combine_functions import combine_policy_functions_and_derived_functions from ttsim.compute_taxes_and_transfers import ( FunctionsAndColumnsOverlapWarning, compute_taxes_and_transfers, ) -from ttsim.function_types import ( - DerivedAggregationFunction, - DerivedTimeConversionFunction, - GroupByFunction, - PolicyFunction, - PolicyInput, - group_by_function, - policy_function, - policy_input, -) from ttsim.loader import ( ConflictingTimeDependentObjectsError, get_active_ttsim_objects_tree_from_module, - load_aggregation_specs_tree, load_objects_tree_for_date, ) from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial @@ -25,36 +15,50 @@ from ttsim.rounding import RoundingSpec from ttsim.shared import ( insert_path_and_value, - join_numpy, + join, merge_trees, upsert_path_and_value, upsert_tree, ) -from ttsim.time_conversion import create_time_conversion_functions +from ttsim.ttsim_objects import ( + AggByGroupFunction, + AggByPIDFunction, + FKType, + GroupCreationFunction, + PolicyFunction, + PolicyInput, + TimeConversionFunction, + agg_by_group_function, + agg_by_p_id_function, + group_creation_function, + policy_function, + policy_input, +) from ttsim.visualization import plot_dag __all__ = [ - "AggregateByGroupSpec", - "AggregateByPIDSpec", - "AggregationType", + "AggByGroupFunction", + "AggByPIDFunction", + "AggType", "ConflictingTimeDependentObjectsError", - "DerivedAggregationFunction", - "DerivedTimeConversionFunction", + "FKType", "FunctionsAndColumnsOverlapWarning", - "GroupByFunction", + "GroupCreationFunction", "PolicyEnvironment", "PolicyFunction", "PolicyInput", "RoundingSpec", + "TimeConversionFunction", + "agg_by_group_function", + "agg_by_p_id_function", "combine_policy_functions_and_derived_functions", "compute_taxes_and_transfers", "create_time_conversion_functions", "get_active_ttsim_objects_tree_from_module", "get_piecewise_parameters", - "group_by_function", + "group_creation_function", "insert_path_and_value", - "join_numpy", - "load_aggregation_specs_tree", + "join", "load_objects_tree_for_date", "merge_trees", "piecewise_polynomial", diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index bedff13ab5..a3b785d808 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -1,5 +1,3 @@ -from collections.abc import Callable -from dataclasses import dataclass, field from enum import StrEnum from ttsim.aggregation_jax import all_by_p_id as all_by_p_id_jax @@ -30,10 +28,10 @@ from ttsim.aggregation_numpy import mean_by_p_id as mean_by_p_id_numpy from ttsim.aggregation_numpy import min_by_p_id as min_by_p_id_numpy from ttsim.aggregation_numpy import sum_by_p_id as sum_by_p_id_numpy -from ttsim.config import USE_JAX +from ttsim.config import IS_JAX_INSTALLED -class AggregationType(StrEnum): +class AggType(StrEnum): """ Enum for aggregation types. """ @@ -47,199 +45,99 @@ class AggregationType(StrEnum): ALL = "all" -@dataclass -class AggregationSpec: - """ - Base class for aggregation specifications. Only use for type checking. - """ - - target: str - source: str | None - agg: AggregationType - _agg_func: Callable = field(init=False) - - def __post_init__(self): - if not isinstance(self.agg, AggregationType): - raise TypeError( - f"agg must be of type AggregationType, not {type(self.agg)}" - ) - - if self.agg == AggregationType.COUNT and self.source is not None: - raise ValueError("COUNT aggregation must not provide a source.") - - -@dataclass -class AggregateByGroupSpec(AggregationSpec): - """ - A container for aggregate by group specifications. - """ - - def __post_init__(self): - super().__post_init__() - - aggregation_registry = { - AggregationType.SUM: grouped_sum, - AggregationType.MEAN: grouped_mean, - AggregationType.MAX: grouped_max, - AggregationType.MIN: grouped_min, - AggregationType.ANY: grouped_any, - AggregationType.ALL: grouped_all, - AggregationType.COUNT: grouped_count, - } - - func = aggregation_registry.get(self.agg) - if func is None: - raise ValueError(f"Aggregation type {self.agg} not implemented") - - self._agg_func = func - - def agg_func(self, source, group_by_id): - # Need to leave this interface in order for renaming of arguments to work. - return self._agg_func(source, group_by_id) - - def mapper(self, group_by_id): - if self.agg == AggregationType.COUNT: - return {"group_by_id": group_by_id} - return {"source": self.source, "group_by_id": group_by_id} - - -@dataclass -class AggregateByPIDSpec(AggregationSpec): - """ - A container for aggregate by p_id specifications. - """ - - p_id_to_aggregate_by: str - - def __post_init__(self): - super().__post_init__() - - aggregation_registry = { - AggregationType.SUM: sum_by_p_id, - AggregationType.MEAN: mean_by_p_id, - AggregationType.MAX: max_by_p_id, - AggregationType.MIN: min_by_p_id, - AggregationType.ANY: any_by_p_id, - AggregationType.ALL: all_by_p_id, - AggregationType.COUNT: count_by_p_id, - } - - func = aggregation_registry.get(self.agg) - if func is None: - raise ValueError(f"Aggregation type {self.agg} not implemented") - - self._agg_func = func - - def agg_func(self, source, p_id_to_aggregate_by, p_id_to_store_by): - # Need to leave this interface in order for renaming of arguments to work. - return self._agg_func(source, p_id_to_aggregate_by, p_id_to_store_by) - - def mapper(self): - if self.agg == AggregationType.COUNT: - return { - "p_id_to_aggregate_by": self.p_id_to_aggregate_by, - "p_id_to_store_by": "p_id", - } - return { - "source": self.source, - "p_id_to_aggregate_by": self.p_id_to_aggregate_by, - "p_id_to_store_by": "p_id", - } - - def grouped_count(group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_count_jax(group_id) else: return grouped_count_numpy(group_id) def grouped_sum(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_sum_jax(column, group_id) else: return grouped_sum_numpy(column, group_id) def grouped_mean(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_mean_jax(column, group_id) else: return grouped_mean_numpy(column, group_id) def grouped_max(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_max_jax(column, group_id) else: return grouped_max_numpy(column, group_id) def grouped_min(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_min_jax(column, group_id) else: return grouped_min_numpy(column, group_id) def grouped_any(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_any_jax(column, group_id) else: return grouped_any_numpy(column, group_id) def grouped_all(column, group_id): - if USE_JAX: + if IS_JAX_INSTALLED: return grouped_all_jax(column, group_id) else: return grouped_all_numpy(column, group_id) def count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return count_by_p_id_jax(p_id_to_aggregate_by, p_id_to_store_by) else: return count_by_p_id_numpy(p_id_to_aggregate_by, p_id_to_store_by) def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return sum_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return sum_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) def mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return mean_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return mean_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) def max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return max_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return max_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) def min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return min_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return min_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) def any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return any_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return any_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) def all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - if USE_JAX: + if IS_JAX_INSTALLED: return all_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return all_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) diff --git a/src/ttsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py index 8aa4dd643d..dc3e0f5892 100644 --- a/src/ttsim/aggregation_jax.py +++ b/src/ttsim/aggregation_jax.py @@ -98,15 +98,27 @@ def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): fail_if_dtype_not_int(p_id_to_store_by, agg_func="sum_by_p_id") fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") - if column.dtype in ["bool"]: + if column.dtype == bool: column = column.astype(int) - out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) - map_p_id_to_position = {p_id: iloc for iloc, p_id in enumerate(p_id_to_store_by)} + # Build an index mapping from p_id values to positions in p_id_to_store_by. + sorted_idx = jnp.argsort(p_id_to_store_by) + sorted_store = p_id_to_store_by[sorted_idx] + + # For every element in p_id_to_aggregate_by (even negatives), + # use searchsorted to get its candidate index in sorted_store. + candidate = jnp.searchsorted(sorted_store, p_id_to_aggregate_by) + candidate_idx = sorted_idx[candidate] - for iloc, id_receiver in enumerate(p_id_to_aggregate_by): - if id_receiver >= 0: - out = out.at[map_p_id_to_position[id_receiver]].add(column[iloc]) + # For invalid (negative) IDs, force a dummy index (0) that will be masked out. + mapped_index = jnp.where(p_id_to_aggregate_by >= 0, candidate_idx, 0) + + # Only valid entries contribute to the sum. + contributions = jnp.where(p_id_to_aggregate_by >= 0, column, 0) + + # Scatter-add the contributions to the output array. + out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) + out = out.at[mapped_index].add(contributions) return out diff --git a/src/ttsim/time_conversion.py b/src/ttsim/automatically_added_functions.py similarity index 55% rename from src/ttsim/time_conversion.py rename to src/ttsim/automatically_added_functions.py index fd21d1d1c2..b4488f309d 100644 --- a/src/ttsim/time_conversion.py +++ b/src/ttsim/automatically_added_functions.py @@ -3,26 +3,41 @@ import inspect from typing import TYPE_CHECKING +import dags import dags.tree as dt from dags import rename_arguments -from _gettsim.config import SUPPORTED_GROUPINGS -from ttsim.function_types import ( - DerivedTimeConversionFunction, - TTSIMFunction, -) +from ttsim.aggregation import grouped_sum from ttsim.shared import ( + fail_if_multiple_time_units_for_same_base_name_and_group, + get_base_name_and_grouping_suffix, + get_names_of_required_arguments, get_re_pattern_for_all_time_units_and_groupings, get_re_pattern_for_specific_time_units_and_groupings, + group_pattern, +) +from ttsim.ttsim_objects import ( + DEFAULT_END_DATE, + DEFAULT_START_DATE, + AggByGroupFunction, + TimeConversionFunction, + TTSIMFunction, + TTSIMObject, ) if TYPE_CHECKING: import re from collections.abc import Callable - from ttsim.typing import QualNameDataDict, QualNameTTSIMFunctionDict + from ttsim.typing import ( + QualNameDataDict, + QualNameTargetList, + QualNameTTSIMFunctionDict, + QualNameTTSIMObjectDict, + ) + -TIME_UNITS = { +TIME_UNIT_LABELS = { "y": "year", "q": "quarter", "m": "month", @@ -381,32 +396,34 @@ def d_to_w(value: float) -> float: def create_time_conversion_functions( - functions: QualNameTTSIMFunctionDict, + ttsim_objects: QualNameTTSIMObjectDict, data: QualNameDataDict, + groupings: tuple[str, ...], ) -> QualNameTTSIMFunctionDict: """ Create functions that convert variables to different time units. The time unit of a function is determined by a naming convention: + * Functions referring to yearly values end with "_y", or "_y_x" where "x" is a - grouping level. + grouping level. * Functions referring to monthly values end with "_m", or "_m_x" where "x" is a - grouping level. + grouping level. * Functions referring to weekly values end with "_w", or "_w_x" where "x" is a - grouping level. + grouping level. * Functions referring to daily values end with "_d", or "_d_x" where "x" is a - grouping level. + grouping level. + + Unless the corresponding function already exists, the following will be created: - Unless the corresponding function already exists, the following functions are - created: * For functions referring to yearly values, create monthly, weekly and daily - functions. + functions. * For functions referring to monthly values, create yearly, weekly and daily - functions. + functions. * For functions referring to weekly values, create yearly, monthly and daily - functions. + functions. * For functions referring to daily values, create yearly, monthly and weekly - functions. + functions. Parameters ---------- @@ -421,88 +438,100 @@ def create_time_conversion_functions( The functions dict with the new time conversion functions. """ - converted_ttsim_objects = {} - - for source_name, ttsim_object in functions.items(): - all_time_units = tuple(TIME_UNITS) - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - supported_groupings=SUPPORTED_GROUPINGS, - supported_time_units=all_time_units, - ) - pattern_specific = pattern_all.fullmatch(source_name) - base_name = pattern_specific.group("base_name") + all_time_units = tuple(TIME_UNIT_LABELS) + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + groupings=groupings, + time_units=all_time_units, + ) + + bngs_to_time_conversion_inputs = {} + bngs_to_variations = {} + for qual_name, ttsim_object in ttsim_objects.items(): + match = pattern_all.fullmatch(qual_name) + # We must not find multiple time units for the same base name and group. + bngs = get_base_name_and_grouping_suffix(match) + if match.group("time_unit"): + if bngs not in bngs_to_variations: + bngs_to_variations[bngs] = [qual_name] + else: + bngs_to_variations[bngs].append(qual_name) + bngs_to_time_conversion_inputs[bngs] = { + "base_name": bngs[0], + "qual_name_source": qual_name, + "ttsim_object": ttsim_object, + "time_unit": match.group("time_unit"), + "grouping_suffix": bngs[1], + "all_time_units": all_time_units, + } + + fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - for data_name in data: + converted_ttsim_objects = {} + for bngs, inputs in bngs_to_time_conversion_inputs.items(): + for qual_name_data in data: # If base_name is in provided data, base time conversions on that. if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( - base_name=base_name, - supported_time_units=all_time_units, - supported_groupings=SUPPORTED_GROUPINGS, - ).fullmatch(data_name): - source_name = data_name # noqa: PLW2901 + base_name=bngs[0], + all_time_units=all_time_units, + groupings=groupings, + ).fullmatch(qual_name_data): + inputs["qual_name_source"] = qual_name_data + inputs["time_unit"] = pattern_specific.group("time_unit") break - all_time_conversions_for_this_function = _create_time_conversion_functions( - source_name=source_name, - function=ttsim_object, - time_unit_pattern=pattern_all, - all_time_units=all_time_units, - ) - for der_name, der_func in all_time_conversions_for_this_function.items(): + variations = _create_one_set_of_time_conversion_functions(**inputs) + for der_name in variations: if der_name in converted_ttsim_objects or der_name in data: - continue - else: - converted_ttsim_objects[der_name] = der_func + raise ValueError( + "Fixme, should never end up here -- left for debugging" + ) + converted_ttsim_objects = {**converted_ttsim_objects, **variations} return converted_ttsim_objects -def _create_time_conversion_functions( - source_name: str, - function: TTSIMFunction, - time_unit_pattern: re.Pattern, +def _create_one_set_of_time_conversion_functions( + base_name: str, + qual_name_source: str, + ttsim_object: TTSIMObject, + time_unit: str, + grouping_suffix: str, all_time_units: tuple[str, ...], -) -> dict[str, DerivedTimeConversionFunction]: - result: dict[str, DerivedTimeConversionFunction] = {} - match = time_unit_pattern.fullmatch(source_name) - base_name = match.group("base_name") - time_unit = match.group("time_unit") or "" - aggregation = match.group("aggregation") or "" - dependencies = set(inspect.signature(function).parameters) if function else set() - - if match and time_unit: - missing_time_units = [unit for unit in all_time_units if unit != time_unit] - for missing_time_unit in missing_time_units: - new_name = ( - f"{base_name}_{missing_time_unit}_{aggregation}" - if aggregation - else f"{base_name}_{missing_time_unit}" - ) - - # Without this check, we could create cycles in the DAG: Consider a - # hard-coded function `var_y` that takes `var_m` as an input, assuming it - # to be provided in the input data. If we create a function `var_m`, which - # would take `var_y` as input, we create a cycle. If `var_m` is actually - # provided as an input, `var_m` would be overwritten, removing the cycle. - # However, if `var_m` is not provided as an input, an error message would - # be shown that a cycle between `var_y` and `var_m` was detected. This - # hides the actual problem, which is that `var_m` is not provided as an - # input. - if new_name in dependencies: - continue - - result[new_name] = DerivedTimeConversionFunction( - leaf_name=dt.tree_path_from_qual_name(new_name)[-1], - function=_create_function_for_time_unit( - source=source_name, - converter=_time_conversion_functions[ - f"{time_unit}_to_{missing_time_unit}" - ], - ), - source=source_name, - start_date=function.start_date, - end_date=function.end_date, - ) +) -> dict[str, TimeConversionFunction]: + result: dict[str, TimeConversionFunction] = {} + dependencies = ( + set(inspect.signature(ttsim_object).parameters) + if isinstance(ttsim_object, TTSIMFunction) + else set() + ) + + for target_time_unit in [tu for tu in all_time_units if tu != time_unit]: + new_name = f"{base_name}_{target_time_unit}{grouping_suffix}" + + # Without this check, we could create cycles in the DAG: Consider a + # hard-coded function `var_y` that takes `var_m` as an input, assuming it + # to be provided in the input data. If we create a function `var_m`, which + # would take `var_y` as input, we create a cycle. If `var_m` is actually + # provided as an input, `var_m` would be overwritten, removing the cycle. + # However, if `var_m` is not provided as an input, an error message would + # be shown that a cycle between `var_y` and `var_m` was detected. This + # hides the actual problem, which is that `var_m` is not provided as an + # input. + if new_name in dependencies: + continue + + result[new_name] = TimeConversionFunction( + leaf_name=dt.tree_path_from_qual_name(new_name)[-1], + function=_create_function_for_time_unit( + source=qual_name_source, + converter=_time_conversion_functions[ + f"{time_unit}_to_{target_time_unit}" + ], + ), + source=qual_name_source, + start_date=ttsim_object.start_date, + end_date=ttsim_object.end_date, + ) return result @@ -515,3 +544,71 @@ def func(x: float) -> float: return converter(x) return func + + +def create_agg_by_group_functions( + ttsim_functions_with_time_conversions: QualNameTTSIMObjectDict, + data: QualNameDataDict, + targets: QualNameTargetList, + groupings: tuple[str, ...], +) -> QualNameTTSIMFunctionDict: + gp = group_pattern(groupings) + all_functions_and_data = {**ttsim_functions_with_time_conversions, **data} + potential_agg_by_group_function_names = { + # Targets that end with a grouping suffix are potential aggregation targets. + *[t for t in targets if gp.match(t)], + *_get_potential_agg_by_group_function_names_from_function_arguments( + functions=ttsim_functions_with_time_conversions, + group_pattern=gp, + ), + } + # We will only aggregate from individual-level objects. + potential_agg_by_group_sources = { + qn: o for qn, o in all_functions_and_data.items() if not gp.match(qn) + } + # Exclude objects that have been explicitly provided. + agg_by_group_function_names = { + t + for t in potential_agg_by_group_function_names + if t not in all_functions_and_data + } + out = {} + for abgfn in agg_by_group_function_names: + match = gp.match(abgfn) + base_name_with_time_unit = match.group("base_name_with_time_unit") + if base_name_with_time_unit in potential_agg_by_group_sources: + group_id = f"{match.group('group')}_id" + agg_func = dags.rename_arguments( + func=grouped_sum, + mapper={"group_id": group_id, "column": base_name_with_time_unit}, + ) + out[abgfn] = AggByGroupFunction( + leaf_name=dt.tree_path_from_qual_name(abgfn)[-1], + function=agg_func, + start_date=DEFAULT_START_DATE, + end_date=DEFAULT_END_DATE, + ) + return out + + +def _get_potential_agg_by_group_function_names_from_function_arguments( + functions: QualNameTTSIMFunctionDict, + group_pattern: re.Pattern, +) -> set[str]: + """Get potential aggregation function names from function arguments. + + Parameters + ---------- + functions + Dictionary containing functions to build the DAG. + + Returns + ------- + Set of potential aggregation targets. + """ + all_names = { + name + for func in functions.values() + for name in get_names_of_required_arguments(func) + } + return {n for n in all_names if group_pattern.match(n)} diff --git a/src/ttsim/combine_functions.py b/src/ttsim/combine_functions.py index aa98c4c17f..432b49129e 100644 --- a/src/ttsim/combine_functions.py +++ b/src/ttsim/combine_functions.py @@ -1,51 +1,35 @@ from __future__ import annotations -import inspect -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING -import dags import dags.tree as dt -from ttsim.aggregation import ( - AggregateByGroupSpec, - AggregateByPIDSpec, - AggregationType, -) -from ttsim.function_types import ( - DEFAULT_END_DATE, - DEFAULT_START_DATE, - DerivedAggregationFunction, - GroupByFunction, +from ttsim.automatically_added_functions import ( + create_agg_by_group_functions, + create_time_conversion_functions, ) from ttsim.shared import ( format_errors_and_warnings, format_list_linewise, - get_name_of_group_by_id, - get_names_of_arguments_without_defaults, - remove_group_suffix, ) -from ttsim.time_conversion import create_time_conversion_functions +from ttsim.ttsim_objects import ( + TTSIMFunction, +) if TYPE_CHECKING: - from collections.abc import Callable - from ttsim.typing import ( - QualNameAggregationSpecsDict, QualNameDataDict, - QualNamePolicyInputDict, QualNameTargetList, QualNameTTSIMFunctionDict, + QualNameTTSIMObjectDict, ) def combine_policy_functions_and_derived_functions( - functions: QualNameTTSIMFunctionDict, - aggregation_specs_from_environment: QualNameAggregationSpecsDict, + ttsim_objects: QualNameTTSIMObjectDict, targets: QualNameTargetList, data: QualNameDataDict, - inputs: QualNamePolicyInputDict, - top_level_namespace: set[str], - supported_groupings: tuple[str, ...], + groupings: tuple[str, ...], ) -> QualNameTTSIMFunctionDict: """Add derived functions to the qualified functions dict. @@ -60,9 +44,6 @@ def combine_policy_functions_and_derived_functions( functions Dict with qualified function names as keys and functions with qualified arguments as values. - aggregation_specs_from_environment - Dict with qualified aggregation spec names as keys and aggregation specs as - values. targets The list of targets with qualified names. data @@ -75,33 +56,22 @@ def combine_policy_functions_and_derived_functions( The qualified functions dict with derived functions. """ - # Create parent-child relationships and similar. - aggregate_by_p_id_functions = _create_aggregation_functions( - functions=functions, - inputs=inputs, - aggregation_functions_to_create=aggregation_specs_from_environment, - top_level_namespace=top_level_namespace, - aggregation_type="p_id", - supported_groupings=supported_groupings, - ) - current_functions = {**aggregate_by_p_id_functions, **functions} - # Create functions for different time units time_conversion_functions = create_time_conversion_functions( - functions=current_functions, + ttsim_objects=ttsim_objects, data=data, + groupings=groupings, ) - current_functions = {**time_conversion_functions, **current_functions} - + current_functions = { + **{qn: f for qn, f in ttsim_objects.items() if isinstance(f, TTSIMFunction)}, + **time_conversion_functions, + } # Create aggregation functions by group. - aggregate_by_group_functions = _create_aggregate_by_group_functions( - functions=current_functions, - targets=targets, + aggregate_by_group_functions = create_agg_by_group_functions( + ttsim_functions_with_time_conversions=current_functions, data=data, - inputs=inputs, - aggregations_from_environment=aggregation_specs_from_environment, - top_level_namespace=top_level_namespace, - supported_groupings=supported_groupings, + targets=targets, + groupings=groupings, ) current_functions = {**aggregate_by_group_functions, **current_functions} @@ -110,380 +80,6 @@ def combine_policy_functions_and_derived_functions( return current_functions -def _create_aggregate_by_group_functions( - functions: QualNameTTSIMFunctionDict, - inputs: QualNamePolicyInputDict, - targets: QualNameTargetList, - data: QualNameDataDict, - aggregations_from_environment: QualNameAggregationSpecsDict, - top_level_namespace: set[str], - supported_groupings: tuple[str, ...], -) -> QualNameTTSIMFunctionDict: - """Create aggregation functions.""" - # Create the aggregation functions that were explicitly specified. - - aggregation_functions_from_environment = _create_aggregation_functions( - functions=functions, - inputs=inputs, - aggregation_functions_to_create=aggregations_from_environment, - aggregation_type="group", - top_level_namespace=top_level_namespace, - supported_groupings=supported_groupings, - ) - - functions_with_aggregation_functions_from_environment = { - **aggregation_functions_from_environment, - **functions, - } - - # Create derived aggregation functions. - derived_aggregation_specs = _create_derived_aggregations_specs( - functions=functions_with_aggregation_functions_from_environment, - targets=targets, - data=data, - top_level_namespace=top_level_namespace, - supported_groupings=supported_groupings, - ) - aggregation_functions_derived_from_names = _create_aggregation_functions( - functions=functions_with_aggregation_functions_from_environment, - inputs=inputs, - aggregation_functions_to_create=derived_aggregation_specs, - aggregation_type="group", - top_level_namespace=top_level_namespace, - supported_groupings=supported_groupings, - ) - return { - **aggregation_functions_derived_from_names, - **aggregation_functions_from_environment, - } - - -def _create_aggregation_functions( - functions: QualNameTTSIMFunctionDict, - inputs: QualNamePolicyInputDict, - aggregation_functions_to_create: QualNameAggregationSpecsDict, - aggregation_type: Literal["group", "p_id"], - top_level_namespace: set[str], - supported_groupings: tuple[str, ...], -) -> QualNameTTSIMFunctionDict: - """Create aggregation functions for one aggregation type. - - Parameters - ---------- - functions - Dict with qualified function names as keys and functions with qualified - arguments as values. - aggregation_functions_to_create - Dict with qualified aggregation spec names as keys and aggregation specs as - values. - aggregation_type - The aggregation type. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The qualified functions dict with derived functions. - """ - - group_by_functions = { - name: func - for name, func in functions.items() - if isinstance(getattr(func, "__wrapped__", func), GroupByFunction) - } - - expected_aggregation_spec_type = ( - AggregateByGroupSpec if aggregation_type == "group" else AggregateByPIDSpec - ) - - aggregation_functions = {} - for qual_name_target, aggregation_spec in aggregation_functions_to_create.items(): - # Skip if aggregation spec is not the current aggregation type - if not isinstance(aggregation_spec, expected_aggregation_spec_type): - continue - - if aggregation_type == "group": - group_by_id_name = get_name_of_group_by_id( - target_name=qual_name_target, - group_by_functions=group_by_functions, - supported_groupings=supported_groupings, - ) - if not group_by_id_name: - msg = format_errors_and_warnings( - "Name of aggregated column needs to have a suffix " - "indicating the group over which it is aggregated. " - f"{dt.tree_path_from_qual_name(qual_name_target)} does not do so." - ) - raise ValueError(msg) - - else: - group_by_id_name = None - - derived_func = _create_one_aggregation_function( - aggregation_target=qual_name_target, - aggregation_spec=aggregation_spec, - aggregation_type=aggregation_type, - group_by_id=group_by_id_name, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - if derived_func is not None: - aggregation_functions[qual_name_target] = derived_func - - return _annotate_aggregation_functions( - functions=functions, - inputs=inputs, - aggregation_functions=aggregation_functions, - ) - - -def _create_one_aggregation_function( - aggregation_target: str, - aggregation_spec: AggregateByGroupSpec | AggregateByPIDSpec, - aggregation_type: Literal["group", "p_id"], - group_by_id: str | None, - functions: QualNameTTSIMFunctionDict, - inputs: QualNamePolicyInputDict, - top_level_namespace: set[str], -) -> DerivedAggregationFunction | None: - """Create a single aggregation function. - - Parameters - ---------- - aggregation_target - The qualified name of the target column. - aggregation_spec - The aggregation specification. - aggregation_type - The type of aggregation ("group" or "p_id"). - group_by_id - The name of the group by id column. Only required for group aggregations. - functions - Dict with qualified function names as keys and functions as values. - inputs - Dict with qualified input names as keys and policy inputs as values. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The derived aggregation function. - """ - if aggregation_type == "group": - mapper = aggregation_spec.mapper(group_by_id) - else: - mapper = aggregation_spec.mapper() - - wrapped_func = dt.one_function_without_tree_logic( - function=dags.rename_arguments( - func=aggregation_spec.agg_func, - mapper=mapper, - ), - tree_path=dt.tree_path_from_qual_name(aggregation_target), - top_level_namespace=top_level_namespace, - ) - - qual_name_source = ( - _get_qual_name_of_source_col( - source=aggregation_spec.source, - wrapped_func=wrapped_func, - ) - if aggregation_spec.source - else None - ) - if qual_name_source in inputs: - start_date = inputs[qual_name_source].start_date - end_date = inputs[qual_name_source].end_date - elif qual_name_source in functions: - start_date = functions[qual_name_source].start_date - end_date = functions[qual_name_source].end_date - elif qual_name_source is None: - # Aggregation method is count - start_date = DEFAULT_START_DATE - end_date = DEFAULT_END_DATE - else: - start_date = DEFAULT_START_DATE - end_date = DEFAULT_END_DATE - # TODO(@MImmesberger): Once we filter the aggregations by start and end date, - # we should throw an error here. The qualified source name should be in either - # functions or inputs (or None if it is a count). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/870 - - return DerivedAggregationFunction( - leaf_name=dt.tree_path_from_qual_name(aggregation_target)[-1], - function=wrapped_func, - source=qual_name_source, - aggregation_method=aggregation_spec.agg, - start_date=start_date, - end_date=end_date, - ) - - -def _create_derived_aggregations_specs( - functions: QualNameTTSIMFunctionDict, - targets: QualNameTargetList, - data: QualNameDataDict, - top_level_namespace: set[str], - supported_groupings: tuple[str, ...], -) -> QualNameAggregationSpecsDict: - """Create automatic aggregation specs derived from functions and data. - - Aggregation specifications are created automatically for summation aggregations. - - Example - ------- - If - - `func_hh` is an argument of the functions in `functions`, or a target - - and not represented by a function in `functions` or a data column in - the input data - then an automatic aggregation specification is created for the sum aggregation of - `func` by household. - - Parameters - ---------- - functions - The functions dict with qualified function names as keys and functions as - values. - targets - The list of targets with qualified names. - data - The data dict with qualified data names as keys and pandas Series as values. - - Returns - ------- - The aggregation specifications derived from the functions and data. - """ - potential_aggregation_function_names = { - *targets, - *_get_potential_aggregation_function_names_from_function_arguments( - functions=functions, - ), - } - - # Create source tree for aggregations. Source can be any already existing function - # or data column. - aggregation_sources = { - **functions, - **data, - } - - # Create aggregation specs. - derived_aggregations_specs = {} - for target_name in potential_aggregation_function_names: - # Don't create aggregation functions for unsupported groupings or functions that - # already exist in the source tree. - aggregation_specs_needed = ( - any(target_name.endswith(f"_{g}") for g in supported_groupings) - and target_name not in aggregation_sources - ) - - if aggregation_specs_needed: - derived_aggregations_specs[target_name] = AggregateByGroupSpec( - target=target_name, - agg=AggregationType.SUM, - source=_get_name_of_aggregation_source( - target_name=target_name, - top_level_namespace=top_level_namespace, - ), - ) - else: - continue - - return derived_aggregations_specs - - -def _get_potential_aggregation_function_names_from_function_arguments( - functions: QualNameTTSIMFunctionDict, -) -> set[str]: - """Get potential aggregation function names from function arguments. - - Parameters - ---------- - functions - Dictionary containing functions to build the DAG. - - Returns - ------- - Set of potential aggregation targets. - """ - current_set = set() - for func in functions.values(): - for name in get_names_of_arguments_without_defaults(func): - current_set.add(name) - return current_set - - -def _select_return_type(aggregation_method: str, source_col_type: type) -> type: - # Find out return type - if (source_col_type == int) and (aggregation_method in ["any", "all"]): - return_type = bool - elif (source_col_type == bool) and (aggregation_method in ["sum"]): - return_type = int - else: - return_type = source_col_type - - return return_type - - -def _annotate_aggregation_functions( - functions: QualNameTTSIMFunctionDict, - inputs: QualNamePolicyInputDict, - aggregation_functions: QualNameTTSIMFunctionDict, -) -> QualNameTTSIMFunctionDict: - """Annotate aggregation functions. - - Add type annotations to the aggregation functions based on the type annotations of - the source columns and the aggregation method. - - Parameters - ---------- - functions - Map qualified function names to functions. - inputs - Map qualified input names to policy inputs. - aggregation_functions - Dict with qualified aggregation function names as keys and aggregation functions - as values. - - Returns - ------- - The annotated aggregation functions. - - """ - annotated_functions = {} - for aggregation_target, aggregation_function in aggregation_functions.items(): - source = aggregation_function.source - aggregation_method = aggregation_function.aggregation_method - - annotations = {} - if aggregation_method == "count": - annotations["return"] = int - elif source in inputs: - annotations[source] = inputs[source].data_type - annotations["return"] = _select_return_type( - aggregation_method, annotations[source] - ) - elif source in functions: - source_function = functions[source] - if "return" in source_function.__annotations__: - annotations[source] = source_function.__annotations__["return"] - annotations["return"] = _select_return_type( - aggregation_method, annotations[source] - ) - else: - # TODO(@MImmesberger): Once we filter the aggregations by start and end - # date, we should throw an error here. The qualified source name should be - # in either functions or inputs (or None if it is a count). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/870 - pass - - aggregation_function.__annotations__ = annotations - annotated_functions[aggregation_target] = aggregation_function - - return annotated_functions - - def _fail_if_targets_not_in_functions( functions: QualNameTTSIMFunctionDict, targets: QualNameTargetList ) -> None: @@ -512,45 +108,3 @@ def _fail_if_targets_not_in_functions( f"The following targets have no corresponding function:\n\n{formatted}" ) raise ValueError(msg) - - -def _get_qual_name_of_source_col( - source: str, - wrapped_func: Callable, -) -> str | None: - """Get the qualified source column name.""" - parameters = inspect.signature(wrapped_func).parameters - matches = [p for p in parameters if p.endswith(source)] - if len(matches) == 1: - return matches[0] - else: - return None - - -def _get_name_of_aggregation_source( - target_name: str, - top_level_namespace: set[str], -) -> str: - """Get the name of the source column for an aggregation target. - - This function allows for source and target name to be from different namespaces. - - Example 1 - --------- - > target_name = "arbeitslosengeld_2__vermögen_bg" - > top_level_namespace = {"vermögen", "arbeitslosengeld_2"} - > _get_name_of_aggregation_source(target_name, top_level_namespace) - "vermögen" - - Example 2 - --------- - > target_name = "arbeitslosengeld_2__vermögen_bg" - > top_level_namespace = {"arbeitslosengeld_2"} - > _get_name_of_aggregation_source(target_name, top_level_namespace) - "arbeitslosengeld_2__vermögen" - """ - leaf_name = remove_group_suffix(dt.tree_path_from_qual_name(target_name)[-1]) - if leaf_name in top_level_namespace: - return leaf_name - else: - return remove_group_suffix(target_name) diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index d06605818e..bd5ddf2617 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -2,6 +2,7 @@ import functools import inspect +import re import warnings from typing import TYPE_CHECKING, Any @@ -10,37 +11,40 @@ import networkx as nx import pandas as pd +from ttsim.automatically_added_functions import TIME_UNIT_LABELS from ttsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) from ttsim.config import numpy_or_jax as np -from ttsim.function_types import ( - GroupByFunction, - PolicyInput, - TTSIMFunction, -) from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( - all_variations_of_base_name, assert_valid_ttsim_pytree, + fail_if_multiple_time_units_for_same_base_name_and_group, format_errors_and_warnings, format_list_linewise, + get_base_name_and_grouping_suffix, get_name_of_group_by_id, - get_names_of_arguments_without_defaults, + get_names_of_required_arguments, get_re_pattern_for_all_time_units_and_groupings, + group_pattern, merge_trees, partition_by_reference_dict, ) -from ttsim.time_conversion import TIME_UNITS +from ttsim.ttsim_objects import ( + FKType, + GroupCreationFunction, + TTSIMFunction, +) if TYPE_CHECKING: from ttsim.typing import ( NestedDataDict, NestedTargetDict, + NestedTTSIMObjectDict, QualNameDataDict, - QualNamePolicyInputDict, QualNameTargetList, QualNameTTSIMFunctionDict, + QualNameTTSIMObjectDict, ) @@ -48,10 +52,10 @@ def compute_taxes_and_transfers( data_tree: NestedDataDict, environment: PolicyEnvironment, targets_tree: NestedTargetDict, - foreign_keys: tuple[tuple[str, ...], ...], - supported_groupings: tuple[str, ...], + groupings: tuple[str, ...], rounding: bool = True, debug: bool = False, + jit: bool = False, ) -> NestedDataDict: """Compute taxes and transfers. @@ -68,6 +72,9 @@ def compute_taxes_and_transfers( debug : bool If debug is 'True', `compute_taxes_and_transfers` returns the input data tree along with the computed targets. + jit : bool + If jit is 'True', the function is compiled using JAX's JIT compilation. To use + this feature, JAX must be installed. Returns ------- @@ -80,40 +87,29 @@ def compute_taxes_and_transfers( _fail_if_targets_tree_not_valid(targets_tree) _fail_if_data_tree_not_valid(data_tree) _fail_if_environment_not_valid(environment) - + _fail_if_group_ids_are_outside_top_level_namespace( + environment=environment, + groupings=groupings, + ) # Transform functions tree to qualified names dict with qualified arguments top_level_namespace = _get_top_level_namespace( environment=environment, - supported_time_conversions=tuple(TIME_UNITS.keys()), - supported_groupings=supported_groupings, + time_units=tuple(TIME_UNIT_LABELS.keys()), + groupings=groupings, ) # Flatten nested objects to qualified names targets = dt.qual_names(targets_tree) data = dt.flatten_to_qual_names(data_tree) - aggregation_specs = dt.flatten_to_qual_names(environment.aggregation_specs_tree) - functions: QualNameTTSIMFunctionDict = {} - inputs: QualNamePolicyInputDict = {} - for name, f_or_i in dt.flatten_to_qual_names(environment.raw_objects_tree).items(): - if isinstance(f_or_i, TTSIMFunction): - functions[name] = dt.one_function_without_tree_logic( - function=f_or_i, - tree_path=dt.tree_path_from_qual_name(name), - top_level_namespace=top_level_namespace, - ) - elif isinstance(f_or_i, PolicyInput): - inputs[name] = f_or_i - else: - raise ValueError(f"Unknown type: {type(f_or_i)}") - + ttsim_objects = remove_tree_logic_from_ttsim_objects_tree( + raw_objects_tree=environment.raw_objects_tree, + top_level_namespace=top_level_namespace, + ) # Add derived functions to the qualified functions tree. functions = combine_policy_functions_and_derived_functions( - functions=functions, - aggregation_specs_from_environment=aggregation_specs, + ttsim_objects=ttsim_objects, targets=targets, data=data, - inputs=inputs, - top_level_namespace=top_level_namespace, - supported_groupings=supported_groupings, + groupings=groupings, ) functions_overridden, functions_to_be_used = partition_by_reference_dict( @@ -143,14 +139,18 @@ def compute_taxes_and_transfers( _fail_if_group_variables_not_constant_within_groups( data=input_data, functions=functions, - supported_groupings=supported_groupings, + groupings=groupings, ) - _fail_if_foreign_keys_are_invalid( - data=input_data, - p_id=data.get("p_id", None), - foreign_keys=foreign_keys, + _input_data_with_p_id = { + "p_id": data["p_id"], + **input_data, + } + _fail_if_foreign_keys_are_invalid_in_data( + data=_input_data_with_p_id, + ttsim_objects=ttsim_objects, ) - + if debug: + targets = sorted([*targets, *functions_with_partialled_parameters.keys()]) tax_transfer_function = dags.concatenate_functions( functions=functions_with_partialled_parameters, targets=targets, @@ -159,6 +159,15 @@ def compute_taxes_and_transfers( enforce_signature=True, ) + if jit: + try: + import jax + except ImportError as e: + raise ImportError( + "JAX is not installed. Please install JAX to use JIT compilation." + ) from e + tax_transfer_function = jax.jit(tax_transfer_function) + results = tax_transfer_function(**input_data) result_tree = dt.unflatten_from_qual_names(results) @@ -172,10 +181,29 @@ def compute_taxes_and_transfers( return result_tree +def _fail_if_group_ids_are_outside_top_level_namespace( + environment: PolicyEnvironment, + groupings: tuple[str, ...], +) -> None: + """Fail if group ids are outside the top level namespace.""" + group_id_pattern = re.compile(f"(?P<group>{'|'.join(groupings)})_id$") + group_ids_outside_top_level_namespace = { + tree_path + for tree_path in dt.flatten_to_tree_paths(environment.raw_objects_tree) + if len(tree_path) > 1 and group_id_pattern.match(tree_path[-1]) + } + if group_ids_outside_top_level_namespace: + raise ValueError( + "Group identifiers must live in the top-level namespace. Got:\n\n" + f"{group_ids_outside_top_level_namespace}\n\n" + "To fix this error, move the group identifiers to the top-level namespace." + ) + + def _get_top_level_namespace( environment: PolicyEnvironment, - supported_time_conversions: tuple[str, ...], - supported_groupings: tuple[str, ...], + time_units: tuple[str, ...], + groupings: tuple[str, ...], ) -> set[str]: """Get the top level namespace. @@ -189,31 +217,52 @@ def _get_top_level_namespace( top_level_namespace: The top level namespace. """ - direct_top_level_names = set(environment.raw_objects_tree.keys()) | set( - environment.aggregation_specs_tree.keys() - ) - re_pattern = get_re_pattern_for_all_time_units_and_groupings( - supported_groupings=supported_groupings, - supported_time_units=supported_time_conversions, + direct_top_level_names = set(environment.raw_objects_tree.keys()) + + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + groupings=groupings, + time_units=time_units, ) - all_top_level_names = set() + all_top_level_names = direct_top_level_names.copy() + bngs_to_variations = {} for name in direct_top_level_names: - match = re_pattern.fullmatch(name) - base_name = match.group("base_name") - create_conversions_for_time_units = bool(match.group("time_unit")) - - all_top_level_names_for_name = all_variations_of_base_name( - base_name=base_name, - supported_time_conversions=supported_time_conversions, - supported_groupings=supported_groupings, - create_conversions_for_time_units=create_conversions_for_time_units, - ) - all_top_level_names.update(all_top_level_names_for_name) + match = pattern_all.fullmatch(name) + # We must not find multiple time units for the same base name and group. + bngs = get_base_name_and_grouping_suffix(match) + if match.group("time_unit"): + if bngs not in bngs_to_variations: + bngs_to_variations[bngs] = [name] + else: + bngs_to_variations[bngs].append(name) + for time_unit in time_units: + all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") + fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) + + gp = group_pattern(groupings) + potential_base_names = {n for n in all_top_level_names if not gp.match(n)} + + for name in potential_base_names: + for g in groupings: + all_top_level_names.add(f"{name}_{g}") return all_top_level_names +def remove_tree_logic_from_ttsim_objects_tree( + raw_objects_tree: NestedTTSIMObjectDict, + top_level_namespace: set[str], +) -> QualNameTTSIMObjectDict: + """Map qualified names to TTSIM objects without tree logic.""" + return { + name: f_or_i.remove_tree_logic( + tree_path=dt.tree_path_from_qual_name(name), + top_level_namespace=top_level_namespace, + ) + for name, f_or_i in dt.flatten_to_qual_names(raw_objects_tree).items() + } + + def _create_input_data_for_concatenated_function( data: QualNameDataDict, functions: QualNameTTSIMFunctionDict, @@ -282,7 +331,7 @@ def _partial_parameters_to_functions( # parameters. processed_functions = {} for name, function in functions.items(): - arguments = get_names_of_arguments_without_defaults(function) + arguments = get_names_of_required_arguments(function) partial_params = { arg: params[key] for arg in arguments @@ -357,7 +406,7 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: def _fail_if_group_variables_not_constant_within_groups( data: QualNameDataDict, functions: QualNameTTSIMFunctionDict, - supported_groupings: tuple[str, ...], + groupings: tuple[str, ...], ) -> None: """ Check that group variables are constant within each group. @@ -373,9 +422,7 @@ def _fail_if_group_variables_not_constant_within_groups( Dictionary of functions. """ group_by_functions = { - k: v - for k, v in functions.items() - if isinstance(getattr(v, "__wrapped__", v), GroupByFunction) + k: v for k, v in functions.items() if isinstance(v, GroupCreationFunction) } faulty_data_columns = [] @@ -384,7 +431,7 @@ def _fail_if_group_variables_not_constant_within_groups( group_by_id = get_name_of_group_by_id( target_name=name, group_by_functions=group_by_functions, - supported_groupings=supported_groupings, + groupings=groupings, ) if group_by_id in data: group_by_id_series = pd.Series(data[group_by_id]) @@ -432,10 +479,9 @@ def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: raise ValueError(message) -def _fail_if_foreign_keys_are_invalid( +def _fail_if_foreign_keys_are_invalid_in_data( data: QualNameDataDict, - p_id: pd.Series, - foreign_keys: tuple[tuple[str, ...], ...], + ttsim_objects: QualNameTTSIMObjectDict, ) -> None: """ Check that all foreign keys are valid. @@ -443,33 +489,36 @@ def _fail_if_foreign_keys_are_invalid( Foreign keys must point to an existing `p_id` in the input data and must not refer to the `p_id` of the same row. """ - valid_ids = set(p_id) | {-1} - for name, data_column in data.items(): - foreign_key_col = dt.tree_path_from_qual_name(name) in foreign_keys - path = dt.tree_path_from_qual_name(name) - if not foreign_key_col: - continue + valid_ids = set(data["p_id"]) | {-1} - # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in data_column): - message = format_errors_and_warnings( - f""" - For {path}, the following are not a valid p_id in the input - data: {[i for i in data_column if i not in valid_ids]}. - """ - ) - raise ValueError(message) - - equal_to_pid_in_same_row = [i for i, j in zip(data_column, p_id) if i == j] - if any(equal_to_pid_in_same_row): - message = format_errors_and_warnings( - f""" - For {path}, the following are equal to the p_id in the same - row: {[i for i, j in zip(data_column, p_id) if i == j]}. - """ - ) - raise ValueError(message) + for fk_name, fk in ttsim_objects.items(): + if fk.foreign_key_type == FKType.IRRELEVANT: + continue + elif fk_name in data: + path = dt.tree_path_from_qual_name(fk_name) + # Referenced `p_id` must exist in the input data + if not all(i in valid_ids for i in data[fk_name]): + message = format_errors_and_warnings( + f""" + For {path}, the following are not a valid p_id in the input + data: {[i for i in data[fk_name] if i not in valid_ids]}. + """ + ) + raise ValueError(message) + + if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: + equal_to_pid_in_same_row = [ + i for i, j in zip(data[fk_name], data["p_id"]) if i == j + ] + if any(equal_to_pid_in_same_row): + message = format_errors_and_warnings( + f""" + For {path}, the following are equal to the p_id in the same + row: {equal_to_pid_in_same_row}. + """ + ) + raise ValueError(message) def _warn_if_functions_overridden_by_data( diff --git a/src/ttsim/config.py b/src/ttsim/config.py index 750a16c390..70f8a8a9bb 100644 --- a/src/ttsim/config.py +++ b/src/ttsim/config.py @@ -1,29 +1,16 @@ from __future__ import annotations -import importlib +try: + import jax +except ImportError: + IS_JAX_INSTALLED = False +else: + IS_JAX_INSTALLED = True -import numpy -# Defaults -USE_JAX = False -numpy_or_jax = numpy +if IS_JAX_INSTALLED: + numpy_or_jax = jax.numpy +else: + import numpy - -def set_array_backend(backend: str): - """Set array library backend. - - backend (str): Must be in {'jax', 'numpy'}. - - """ - if backend not in {"jax", "numpy"}: - raise ValueError(f"Backend must be in {'jax', 'numpy'} but is {backend}.") - - if backend == "jax": - assert importlib.util.find_spec("jax") is not None, "JAX is not installed." - global USE_JAX # noqa: PLW0603 - global numpy_or_jax # noqa: PLW0603 - import jax - - USE_JAX = True - numpy_or_jax = jax.numpy - jax.config.update("jax_platform_name", "cpu") + numpy_or_jax = numpy diff --git a/src/ttsim/function_types.py b/src/ttsim/function_types.py deleted file mode 100644 index bf4e15ed2f..0000000000 --- a/src/ttsim/function_types.py +++ /dev/null @@ -1,462 +0,0 @@ -from __future__ import annotations - -import datetime -import functools -import inspect -from dataclasses import dataclass -from typing import TYPE_CHECKING, Literal, TypeVar - -import numpy -from pandas.api.types import ( - is_bool_dtype, - is_datetime64_any_dtype, - is_float_dtype, - is_integer_dtype, -) - -from ttsim.rounding import RoundingSpec -from ttsim.shared import to_datetime, validate_date_range - -if TYPE_CHECKING: - from collections.abc import Callable - - import pandas as pd - - from ttsim.config import numpy_or_jax as np - from ttsim.typing import DashedISOString - -T = TypeVar("T") - -DEFAULT_START_DATE = datetime.date(1900, 1, 1) -DEFAULT_END_DATE = datetime.date(2100, 12, 31) - - -@dataclass -class TTSIMObject: - """ - Abstract base class for all TTSIM Functions and Inputs. - """ - - leaf_name: str - start_date: datetime.date - end_date: datetime.date - - def is_active(self, date: datetime.date) -> bool: - """Check if the function is active at a given date.""" - return self.start_date <= date <= self.end_date - - -@dataclass -class PolicyInput(TTSIMObject): - """ - A dummy function representing an input variable. - - Parameters - ---------- - data_type: - The data type of the input variable. - start_date: - The date from which the input is relevant / active (inclusive). - end_date: - The date until which the input is relevant / active (inclusive). - """ - - data_type: type[float | int | bool] - - -def policy_input( - *, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, -) -> PolicyInput: - """ - Decorator that makes a (dummy) function a `PolicyInput`. - - **Dates active (start_date, end_date):** - - Specifies that a PolicyInput is only active between two dates, `start` and `end`. - - **Rounding spec (params_key_for_rounding):** - - Adds the location of the rounding specification to a PolicyInput. - - Parameters - ---------- - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - - Returns - ------- - A PolicyInput object. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def inner(func: Callable) -> PolicyInput: - data_type = func.__annotations__["return"] - return PolicyInput( - leaf_name=func.__name__, - data_type=data_type, - start_date=start_date, - end_date=end_date, - ) - - return inner - - -@dataclass -class TTSIMFunction(TTSIMObject): - """ - Base class for all TTSIM functions. - """ - - function: Callable - skip_vectorization: bool = False - - def __call__(self, *args, **kwargs): - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> set[str]: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - @property - def original_function_name(self) -> str: - """The name of the wrapped function.""" - return self.function.__name__ - - -@dataclass -class PolicyFunction(TTSIMFunction): - """ - A function that computes an output vector based on some input vectors and/or - parameters. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - rounding_spec: - The rounding specification. - skip_vectorization: - Whether the function should be vectorized. - """ - - rounding_spec: RoundingSpec | None = None - - def __post_init__(self): - self._fail_if_rounding_has_wrong_type(self.rounding_spec) - self.function = ( - self.function if self.skip_vectorization else _vectorize_func(self.function) - ) - - # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = self.function.__annotations__ - self.__module__ = self.function.__module__ - self.__name__ = self.function.__name__ - self.__signature__ = inspect.signature(self.function) - - def _fail_if_rounding_has_wrong_type( - self, rounding_spec: RoundingSpec | None - ) -> None: - """Check if rounding_spec has the correct type. - - Parameters - ---------- - rounding_spec - The rounding specification to check. - - Raises - ------ - AssertionError - If rounding_spec is not a RoundingSpec or None. - """ - assert isinstance(rounding_spec, RoundingSpec | None), ( - f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" - ) - - def __call__(self, *args, **kwargs): - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> set[str]: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - @property - def original_function_name(self) -> str: - """The name of the wrapped function.""" - return self.function.__name__ - - def is_active(self, date: datetime.date) -> bool: - """Check if the function is active at a given date.""" - return self.start_date <= date <= self.end_date - - -def policy_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - rounding_spec: RoundingSpec | None = None, - skip_vectorization: bool = False, -) -> PolicyFunction: - """ - Decorator that makes a `PolicyFunction` from a function. - - **Dates active (start_date, end_date, leaf_name):** - - Specifies that a PolicyFunction is only active between two dates, `start` and `end`. - By using the `leaf_name` argument, you can specify a different name for the - PolicyFunction in the functions tree. - - Note that even if you use this decorator with the `leaf_name` argument, you must - ensure that the function name is unique in the file where it is defined. Otherwise, - the function would be overwritten by the last function with the same name. - - **Rounding specification (rounding_spec):** - - Adds the way rounding is to be done to a PolicyFunction. - - Parameters - ---------- - leaf_name - The name that should be used as the PolicyFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - rounding_spec - The specification to be used for rounding. - skip_vectorization - Whether the function is already vectorized and, thus, should not be vectorized - again. - - Returns - ------- - A PolicyFunction object. - """ - - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def inner(func: Callable) -> PolicyFunction: - return PolicyFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - start_date=start_date, - end_date=end_date, - rounding_spec=rounding_spec, - skip_vectorization=skip_vectorization, - ) - - return inner - - -def _vectorize_func(func: Callable) -> Callable: - # What should work once that Jax backend is fully supported - signature = inspect.signature(func) - func_vec = numpy.vectorize(func) - - @functools.wraps(func) - def wrapper_vectorize_func(*args, **kwargs): - return func_vec(*args, **kwargs) - - wrapper_vectorize_func.__signature__ = signature - - return wrapper_vectorize_func - - -@dataclass -class GroupByFunction(TTSIMFunction): - """ - A function that computes endogenous group_by IDs. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function calculating the group_by IDs. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - """ - - def __post_init__(self): - # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = self.function.__annotations__ - self.__module__ = self.function.__module__ - self.__name__ = self.function.__name__ - self.__signature__ = inspect.signature(self.function) - - @property - def dependencies(self) -> set[str]: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - -def group_by_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, -) -> GroupByFunction: - """ - Decorator that creates a group_by function from a function. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def decorator(func: Callable) -> GroupByFunction: - _leaf_name = func.__name__ if leaf_name is None else leaf_name - return GroupByFunction( - leaf_name=_leaf_name, - function=func, - start_date=start_date, - end_date=end_date, - ) - - return decorator - - -@dataclass -class DerivedAggregationFunction(TTSIMFunction): - """ - A function that is an aggregation of another function. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function performing the aggregation. - source: - The name of the source function or data column. - aggregation_method: - The method of aggregation used. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - params_key_for_rounding: - The key in the params dictionary that should be used for rounding. - skip_vectorization: - Whether the function should be vectorized. - """ - - source: str | None = None - aggregation_method: ( - Literal["count", "sum", "mean", "min", "max", "any", "all"] | None - ) = None - - def __post_init__(self): - if self.aggregation_method is None: - raise ValueError("The aggregation method must be specified.") - if self.source is None and self.aggregation_method != "count": - raise ValueError("The source must be specified.") - - # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = self.function.__annotations__ - self.__module__ = self.function.__module__ - self.__name__ = self.function.__name__ - self.__signature__ = inspect.signature(self.function) - - -@dataclass -class DerivedTimeConversionFunction(TTSIMFunction): - """ - A function that is a time conversion of another function. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function performing the time conversion. - source: - The name of the source function or data column. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - params_key_for_rounding: - The key in the params dictionary that should be used for rounding. - skip_vectorization: - Whether the function should be vectorized. - """ - - source: str | None = None - - def __post_init__(self): - if self.source is None: - raise ValueError("The source must be specified.") - - # Expose the signature of the wrapped function for dependency resolution - self.__annotations__ = self.function.__annotations__ - self.__module__ = self.function.__module__ - self.__name__ = self.function.__name__ - self.__signature__ = inspect.signature(self.function) - - -def _convert_and_validate_dates( - start_date: datetime.date | DashedISOString, - end_date: datetime.date | DashedISOString, -) -> tuple[datetime.date, datetime.date]: - """Convert and validate date strings to datetime.date objects. - - Parameters - ---------- - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - - Returns - ------- - tuple[datetime.date, datetime.date] - The converted and validated start and end dates. - """ - start_date = to_datetime(start_date) - end_date = to_datetime(end_date) - - validate_date_range(start_date, end_date) - - return start_date, end_date - - -def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: - """Checks whether used series has already expected internal type. - - Parameters - ---------- - series : pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. - internal_type : TypeVar - One of the internal gettsim types. - - Returns - ------- - Bool - - """ - if ( - (internal_type == float) & (is_float_dtype(series)) - or (internal_type == int) & (is_integer_dtype(series)) - or (internal_type == bool) & (is_bool_dtype(series)) - or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) - ): - out = True - else: - out = False - - return out diff --git a/src/ttsim/loader.py b/src/ttsim/loader.py index 0751f6e682..9e561517a8 100644 --- a/src/ttsim/loader.py +++ b/src/ttsim/loader.py @@ -6,24 +6,18 @@ import sys from typing import TYPE_CHECKING -from _gettsim.config import RESOURCE_DIR -from ttsim.function_types import TTSIMFunction, TTSIMObject from ttsim.shared import ( create_tree_from_path_and_value, - insert_path_and_value, merge_trees, ) +from ttsim.ttsim_objects import TTSIMFunction, TTSIMObject if TYPE_CHECKING: import datetime from pathlib import Path from types import ModuleType - from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec - from ttsim.typing import ( - NestedAggregationSpecDict, - NestedTTSIMObjectDict, - ) + from ttsim.typing import NestedTTSIMObjectDict def load_objects_tree_for_date( @@ -56,7 +50,6 @@ def load_objects_tree_for_date( left=objects_tree, right=new_objects_tree, ) - return objects_tree @@ -82,22 +75,26 @@ def get_active_ttsim_objects_tree_from_module( """ module = _load_module(path, root_path) - ttsim_objects = [ - func for _, func in inspect.getmembers(module) if isinstance(func, TTSIMObject) - ] + ttsim_objects_orig_names = { + name: obj + for name, obj in inspect.getmembers(module) + if isinstance(obj, TTSIMObject) + } _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - ttsim_objects, + ttsim_objects_orig_names.values(), module_name=root_path / path, ) - active_ttsim_functions = { - func.leaf_name: func for func in ttsim_objects if func.is_active(date) + active_ttsim_objects = { + obj.leaf_name: obj + for obj in ttsim_objects_orig_names.values() + if obj.is_active(date) } return create_tree_from_path_and_value( path=_convert_path_to_tree_path(path=path, root_path=root_path), - value=active_ttsim_functions, + value=active_ttsim_objects, ) @@ -172,12 +169,12 @@ def __str__(self): def _find_python_files_recursively(root_path: Path) -> list[Path]: """ - Find all Python files reachable from the given roots. + Find all Python files reachable from the given root path. Parameters ---------- - roots: - The roots from which to start the search for Python files. + root_path: + The path from which to start the search for Python files. Returns ------- @@ -227,60 +224,3 @@ def _convert_path_to_tree_path(path: Path, root_path: Path) -> tuple[str, ...]: parts = path.relative_to(root_path).parts return parts[:-1] - - -def load_aggregation_specs_tree() -> NestedAggregationSpecDict: - """ - Load the tree with aggregation specifications. - - This function loads the tree with aggregation specifications from the internal - functions by searching and loading all aggregation specifications from GETTSIM's - modules. - - Returns - ------- - The aggregation tree. - """ - paths_to_aggregation_specs = _find_python_files_recursively(RESOURCE_DIR) - - aggregation_specs_tree = {} - - for path in paths_to_aggregation_specs: - aggregation_specs = _load_aggregation_specs_from_module( - path=path, - root_path=RESOURCE_DIR, - ) - - tree_path = _convert_path_to_tree_path(path=path, root_path=RESOURCE_DIR) - - aggregation_specs_tree = insert_path_and_value( - base=aggregation_specs_tree, - path_to_insert=tree_path, - value_to_insert=aggregation_specs, - ) - - return aggregation_specs_tree - - -def _load_aggregation_specs_from_module( - path: Path, - root_path: Path, -) -> dict[str, AggregateByGroupSpec | AggregateByPIDSpec]: - """ - Load aggregation specifications from one module. - - Returns a dictionary with the name of the aggregation target as keys and the - aggregation specifications as values. - - Parameters - ---------- - path: - The path to the module in which to search for dictionaries. - - Returns - ------- - Loaded dictionaries. - """ - module = _load_module(path, root_path) - aggregation_specs = getattr(module, "aggregation_specs", ()) - return {a_s.target: a_s for a_s in aggregation_specs} diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index 281bd697bc..d794a0d4ec 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -10,18 +10,7 @@ import pandas as pd import yaml -from _gettsim.config import ( - INTERNAL_PARAMS_GROUPS, - RESOURCE_DIR, -) -from ttsim.function_types import ( - TTSIMObject, - policy_function, -) -from ttsim.loader import ( - load_aggregation_specs_tree, - load_objects_tree_for_date, -) +from ttsim.loader import load_objects_tree_for_date from ttsim.piecewise_polynomial import ( _check_thresholds, get_piecewise_parameters, @@ -33,6 +22,10 @@ upsert_path_and_value, upsert_tree, ) +from ttsim.ttsim_objects import ( + TTSIMObject, + policy_function, +) if TYPE_CHECKING: from collections.abc import Callable @@ -40,7 +33,6 @@ from ttsim.typing import ( DashedISOString, - NestedAggregationSpecDict, NestedTTSIMObjectDict, ) @@ -53,22 +45,16 @@ class PolicyEnvironment: Parameters ---------- - functions_tree - The policy functions tree. + raw_objects_tree + The pytree of TTSIM objects (policy inputs, policy functions, agg functions). params A dictionary with policy parameters. - aggregation_specs_tree - The tree with aggregation specifications for aggregations on group levels - (defined in config.py) or aggregations by p_id (defined in config.py). The - aggregation tree is a nested dictionary with AggregateByGroupSpec or - AggregateByPIDSpec dataclasses as leafs. """ def __init__( self, raw_objects_tree: NestedTTSIMObjectDict, params: dict[str, Any] | None = None, - aggregation_specs_tree: NestedAggregationSpecDict | None = None, ): # Check functions tree and convert functions to PolicyFunction if necessary assert_valid_ttsim_pytree( @@ -83,9 +69,6 @@ def __init__( # Read in parameters and aggregation specs self._params = params if params is not None else {} - self._aggregation_specs_tree = ( - aggregation_specs_tree if aggregation_specs_tree is not None else {} - ) @property def raw_objects_tree(self) -> NestedTTSIMObjectDict: @@ -100,14 +83,6 @@ def params(self) -> dict[str, Any]: """The parameters of the policy environment.""" return self._params - @property - def aggregation_specs_tree(self) -> NestedAggregationSpecDict: - """ - The tree with aggregation specifications for aggregations on group levels - (defined in config.py) or aggregations by p_id. - """ - return self._aggregation_specs_tree - def upsert_objects( self, tree_to_upsert: NestedTTSIMObjectDict ) -> PolicyEnvironment: @@ -143,7 +118,6 @@ def upsert_objects( result = object.__new__(PolicyEnvironment) result._raw_objects_tree = new_tree # noqa: SLF001 result._params = self._params # noqa: SLF001 - result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 return result @@ -164,7 +138,6 @@ def replace_all_parameters(self, params: dict[str, Any]): result = object.__new__(PolicyEnvironment) result._raw_objects_tree = self._raw_objects_tree # noqa: SLF001 result._params = params # noqa: SLF001 - result._aggregation_specs_tree = self._aggregation_specs_tree # noqa: SLF001 return result @@ -193,22 +166,35 @@ def set_up_policy_environment( functions_tree = load_objects_tree_for_date(resource_dir=resource_dir, date=date) params = {} - for group in INTERNAL_PARAMS_GROUPS: - params_one_group = _load_parameter_group_from_yaml(date, group) + if "_gettsim" in resource_dir.name: + from _gettsim.config import INTERNAL_PARAMS_GROUPS as internal_params_groups + else: + internal_params_groups = [ + "payroll_tax", + "housing_benefits", + ] + for group in internal_params_groups: + params_one_group = _load_parameter_group_from_yaml( + date=date, + group=group, + parameters=None, + yaml_path=resource_dir / "parameters", + ) # Align parameters for piecewise polynomial functions params[group] = _parse_piecewise_parameters(params_one_group) - # Extend dictionary with date-specific values which do not need an own function - params = _parse_kinderzuschl_max(date, params) - params = _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params) - params = _parse_vorsorgepauschale_rentenv_anteil(date, params) - aggregation_specs_tree = load_aggregation_specs_tree() + if "_gettsim" in resource_dir.name: + # Extend dictionary with date-specific values which do not need an own function + params = _parse_kinderzuschl_max(date, params) + params = _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005( + date, params + ) + params = _parse_vorsorgepauschale_rentenv_anteil(date, params) return PolicyEnvironment( functions_tree, params, - aggregation_specs_tree, ) @@ -328,7 +314,7 @@ def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): Updated dictionary. """ - jahr = float(date.year) + jahr = date.year if jahr >= 2005: out = piecewise_polynomial( pd.Series(jahr), @@ -361,7 +347,7 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): """ - jahr = float(date.year) + jahr = date.year if jahr >= 2005: out = piecewise_polynomial( pd.Series(jahr), @@ -383,8 +369,8 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): def _load_parameter_group_from_yaml( date: datetime.date, group: str, + yaml_path: Path, parameters: list[str] | None = None, - yaml_path: Path = RESOURCE_DIR / "parameters", ) -> dict[str, Any]: """Load data from raw yaml group file. @@ -451,8 +437,8 @@ def set_date_to_beginning_of_year(date): if "." in future_policy["deviation_from"]: path_list = future_policy["deviation_from"].split(".") params_temp = _load_parameter_group_from_yaml( - date, - path_list[0], + date=date, + group=path_list[0], parameters=[path_list[1]], yaml_path=yaml_path, ) diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index a78b6623f9..6bcc784944 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -2,19 +2,17 @@ import datetime import inspect -import itertools import re import textwrap from typing import TYPE_CHECKING, Any, TypeVar import dags.tree as dt -import numpy import optree -from _gettsim.config import SUPPORTED_GROUPINGS +from ttsim.config import numpy_or_jax as np if TYPE_CHECKING: - from ttsim.function_types import PolicyFunction + from ttsim.ttsim_objects import PolicyFunction from ttsim.typing import ( DashedISOString, GenericCallable, @@ -44,21 +42,21 @@ def validate_date_range(start: datetime.date, end: datetime.date): def get_re_pattern_for_all_time_units_and_groupings( - supported_groupings: tuple[str, ...], supported_time_units: tuple[str, ...] + groupings: tuple[str, ...], time_units: tuple[str, ...] ) -> re.Pattern: """Get a regex pattern for time units and groupings. The pattern matches strings in any of these formats: - <base_name> (may contain underscores) - <base_name>_<time_unit> - - <base_name>_<aggregation> - - <base_name>_<time_unit>_<aggregation> + - <base_name>_<grouping> + - <base_name>_<time_unit>_<grouping> Parameters ---------- - supported_groupings + groupings The supported groupings. - supported_time_units + time_units The supported time units. Returns @@ -66,36 +64,42 @@ def get_re_pattern_for_all_time_units_and_groupings( pattern The regex pattern. """ - units = "".join(supported_time_units) - groupings = "|".join(supported_groupings) + re_units = "".join(time_units) + re_groupings = "|".join(groupings) return re.compile( f"(?P<base_name>.*?)" - f"(?:_(?P<time_unit>[{units}]))?" - f"(?:_(?P<aggregation>{groupings}))?" + f"(?:_(?P<time_unit>[{re_units}]))?" + f"(?:_(?P<grouping>{re_groupings}))?" f"$" ) +def group_pattern(groupings: tuple[str, ...]) -> re.Pattern: + return re.compile( + f"(?P<base_name_with_time_unit>.*)_(?P<group>{'|'.join(groupings)})$" + ) + + def get_re_pattern_for_specific_time_units_and_groupings( base_name: str, - supported_time_units: tuple[str, ...], - supported_groupings: tuple[str, ...], + all_time_units: tuple[str, ...], + groupings: tuple[str, ...], ) -> re.Pattern: """Get a regex for a specific base name with optional time unit and aggregation. The pattern matches strings in any of these formats: - <specific_base_name> - <specific_base_name>_<time_unit> - - <specific_base_name>_<aggregation> - - <specific_base_name>_<time_unit>_<aggregation> + - <specific_base_name>_<grouping> + - <specific_base_name>_<time_unit>_<grouping> Parameters ---------- base_name The specific base name to match. - supported_time_units + time_units The supported time units. - supported_groupings + groupings The supported groupings. Returns @@ -103,70 +107,31 @@ def get_re_pattern_for_specific_time_units_and_groupings( pattern The regex pattern. """ - units = "".join(supported_time_units) - groupings = "|".join(supported_groupings) + re_units = "".join(all_time_units) + re_groupings = "|".join(groupings) return re.compile( f"(?P<base_name>{re.escape(base_name)})" - f"(?:_(?P<time_unit>[{units}]))?" - f"(?:_(?P<aggregation>{groupings}))?" + f"(?:_(?P<time_unit>[{re_units}]))?" + f"(?:_(?P<grouping>{re_groupings}))?" f"$" ) -def all_variations_of_base_name( - base_name: str, - supported_time_conversions: list[str], - supported_groupings: list[str], - create_conversions_for_time_units: bool, -) -> set[str]: - """Get possible derived function names given a base function name. - - Examples - -------- - >>> all_variations_of_base_name( - base_name="income", - supported_time_conversions=["y", "m"], - supported_groupings=["hh"], - create_conversions_for_time_units=True, +def get_base_name_and_grouping_suffix(match: re.Match) -> tuple[str, str]: + return ( + match.group("base_name"), + f"_{match.group('grouping')}" if match.group("grouping") else "", ) - {'income_m', 'income_y', 'income_hh_y', 'income_hh_m'} - >>> all_variations_of_base_name( - base_name="claims_benefits", - supported_time_conversions=["y", "m"], - supported_groupings=["hh"], - create_conversions_for_time_units=False, - ) - {'claims_benefits_hh'} - Parameters - ---------- - base_name - The base function name. - supported_time_conversions - The supported time conversions. - supported_groupings - The supported groupings. - create_conversions_for_time_units - Whether to create conversions for time units. - - Returns - ------- - The names of all potential targets based on the base name. - """ - result = set() - if create_conversions_for_time_units: - for time_unit in supported_time_conversions: - result.add(f"{base_name}_{time_unit}") - for time_unit, aggregation in itertools.product( - supported_time_conversions, supported_groupings - ): - result.add(f"{base_name}_{time_unit}_{aggregation}") - else: - result.add(base_name) - for aggregation in supported_groupings: - result.add(f"{base_name}_{aggregation}") - return result +def fail_if_multiple_time_units_for_same_base_name_and_group( + base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], +) -> None: + invalid = { + b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 + } + if invalid: + raise ValueError(f"Multiple time units for base names: {invalid}") class KeyErrorMessage(str): @@ -399,7 +364,7 @@ def format_errors_and_warnings(text: str, width: int = 79) -> str: return formatted_text -def get_names_of_arguments_without_defaults(function: PolicyFunction) -> list[str]: +def get_names_of_required_arguments(function: PolicyFunction) -> list[str]: """Get argument names without defaults. The detection of argument names also works for partialed functions. @@ -407,11 +372,14 @@ def get_names_of_arguments_without_defaults(function: PolicyFunction) -> list[st Examples -------- >>> def func(a, b): pass - >>> get_names_of_arguments_without_defaults(func) + >>> get_names_of_required_arguments(func) ['a', 'b'] + >>> def g(c=0): pass + >>> get_names_of_required_arguments(g) + [] >>> import functools >>> func_ = functools.partial(func, a=1) - >>> get_names_of_arguments_without_defaults(func_) + >>> get_names_of_required_arguments(func_) ['b'] """ @@ -420,9 +388,9 @@ def get_names_of_arguments_without_defaults(function: PolicyFunction) -> list[st return [p for p in parameters if parameters[p].default == parameters[p].empty] -def remove_group_suffix(col): +def remove_group_suffix(col, groupings): out = col - for g in SUPPORTED_GROUPINGS: + for g in groupings: out = out.removesuffix(f"_{g}") return out @@ -432,23 +400,23 @@ def remove_group_suffix(col): Out: TypeVar = TypeVar("Out") -def join_numpy( - foreign_key: numpy.ndarray[Key], - primary_key: numpy.ndarray[Key], - target: numpy.ndarray[Out], +def join( + foreign_key: np.ndarray, + primary_key: np.ndarray, + target: np.ndarray, value_if_foreign_key_is_missing: Out, -) -> numpy.ndarray[Out]: +) -> np.ndarray: """ Given a foreign key, find the corresponding primary key, and return the target at - the same index as the primary key. + the same index as the primary key. When using Jax, does not work on String Arrays. Parameters ---------- - foreign_key : numpy.ndarray[Key] + foreign_key : np.ndarray[Key] The foreign keys. - primary_key : numpy.ndarray[Key] + primary_key : np.ndarray[Key] The primary keys. - target : numpy.ndarray[Out] + target : np.ndarray[Out] The targets in the same order as the primary keys. value_if_foreign_key_is_missing : Out The value to return if no matching primary key is found. @@ -457,38 +425,20 @@ def join_numpy( ------- The joined array. """ - if len(numpy.unique(primary_key)) != len(primary_key): - keys, counts = numpy.unique(primary_key, return_counts=True) - duplicate_primary_keys = keys[counts > 1] - msg = format_errors_and_warnings( - f"Duplicate primary keys: {duplicate_primary_keys}", - ) - raise ValueError(msg) - - invalid_foreign_keys = foreign_key[ - (foreign_key >= 0) & (~numpy.isin(foreign_key, primary_key)) - ] - - if len(invalid_foreign_keys) > 0: - msg = format_errors_and_warnings( - f"Invalid foreign keys: {invalid_foreign_keys}", - ) - raise ValueError(msg) - # For each foreign key and for each primary key, check if they match matches_foreign_key = foreign_key[:, None] == primary_key # For each foreign key, add a column with True at the end, to later fall back to # the value for unresolved foreign keys - padded_matches_foreign_key = numpy.pad( + padded_matches_foreign_key = np.pad( matches_foreign_key, ((0, 0), (0, 1)), "constant", constant_values=True ) # For each foreign key, compute the index of the first matching primary key - indices = numpy.argmax(padded_matches_foreign_key, axis=1) + indices = np.argmax(padded_matches_foreign_key, axis=1) # Add the value for unresolved foreign keys at the end of the target array - padded_targets = numpy.pad( + padded_targets = np.pad( target, (0, 1), "constant", constant_values=value_if_foreign_key_is_missing ) @@ -555,7 +505,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: def get_name_of_group_by_id( target_name: str, group_by_functions: QualNameTTSIMFunctionDict, - supported_groupings: tuple[str, ...], + groupings: tuple[str, ...], ) -> str: """Get the group-by-identifier name for some target. @@ -579,7 +529,7 @@ def get_name_of_group_by_id( ------- The group-by-identifier, or an empty tuple if it is an individual-level variable. """ - for g in supported_groupings: + for g in groupings: if target_name.endswith(f"_{g}") and g == "hh": # Hardcode because hh_id is not part of the functions tree return "hh_id" diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/ttsim_objects.py new file mode 100644 index 0000000000..42b87d361a --- /dev/null +++ b/src/ttsim/ttsim_objects.py @@ -0,0 +1,752 @@ +from __future__ import annotations + +import datetime +import functools +import inspect +from dataclasses import dataclass +from enum import StrEnum +from typing import TYPE_CHECKING, Literal, TypeVar + +import dags +import dags.tree as dt +import numpy +from pandas.api.types import ( + is_bool_dtype, + is_datetime64_any_dtype, + is_float_dtype, + is_integer_dtype, +) + +from ttsim.aggregation import ( + AggType, + all_by_p_id, + any_by_p_id, + count_by_p_id, + grouped_all, + grouped_any, + grouped_count, + grouped_max, + grouped_mean, + grouped_min, + grouped_sum, + max_by_p_id, + mean_by_p_id, + min_by_p_id, + sum_by_p_id, +) +from ttsim.config import IS_JAX_INSTALLED +from ttsim.rounding import RoundingSpec +from ttsim.shared import to_datetime, validate_date_range +from ttsim.vectorization import make_vectorizable + +if TYPE_CHECKING: + from collections.abc import Callable + + import pandas as pd + + from ttsim.config import numpy_or_jax as np + from ttsim.typing import DashedISOString + +T = TypeVar("T") + +DEFAULT_START_DATE = datetime.date(1900, 1, 1) +DEFAULT_END_DATE = datetime.date(2100, 12, 31) + + +class FKType(StrEnum): + """ + Enum for foreign key types. + """ + + IRRELEVANT = "irrelevant" + MAY_POINT_TO_SELF = "may point to self" + MUST_NOT_POINT_TO_SELF = "must not point to self" + + +@dataclass +class TTSIMObject: + """ + Abstract base class for all TTSIM Functions and Inputs. + """ + + leaf_name: str + start_date: datetime.date + end_date: datetime.date + + def is_active(self, date: datetime.date) -> bool: + """Check if the function is active at a given date.""" + return self.start_date <= date <= self.end_date + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> TTSIMObject: + """Remove tree logic from the function and update the function signature.""" + raise NotImplementedError("Subclasses must implement this method.") + + +@dataclass +class PolicyInput(TTSIMObject): + """ + A dummy function representing an input variable. + + Parameters + ---------- + data_type: + The data type of the input variable. + start_date: + The date from which the input is relevant / active (inclusive). + end_date: + The date until which the input is relevant / active (inclusive). + foreign_key_type: + Whether this is a foreign key and, if so, whether it may point to itself. + """ + + data_type: type[float | int | bool] + foreign_key_type: FKType = FKType.IRRELEVANT + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], # noqa: ARG002 + top_level_namespace: set[str], # noqa: ARG002 + ) -> PolicyInput: + return self + + +def policy_input( + *, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, + foreign_key_type: FKType = FKType.IRRELEVANT, +) -> PolicyInput: + """ + Decorator that makes a (dummy) function a `PolicyInput`. + + **Dates active (start_date, end_date):** + + Specifies that a PolicyInput is only active between two dates, `start` and `end`. + + **Rounding spec (params_key_for_rounding):** + + Adds the location of the rounding specification to a PolicyInput. + + Parameters + ---------- + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + + Returns + ------- + A PolicyInput object. + """ + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + def inner(func: Callable) -> PolicyInput: + data_type = func.__annotations__["return"] + return PolicyInput( + leaf_name=func.__name__, + data_type=data_type, + start_date=start_date, + end_date=end_date, + foreign_key_type=foreign_key_type, + ) + + return inner + + +@dataclass +class TTSIMFunction(TTSIMObject): + """ + Base class for all TTSIM functions. + """ + + function: Callable + rounding_spec: RoundingSpec | None = None + foreign_key_type: FKType = FKType.IRRELEVANT + + def __post_init__(self): + self._fail_if_rounding_has_wrong_type(self.rounding_spec) + + # Expose the signature of the wrapped function for dependency resolution + functools.update_wrapper(self, self.function) + self.__signature__ = inspect.signature(self.function) + self.__globals__ = self.function.__globals__ + self.__closure__ = self.function.__closure__ + + def _fail_if_rounding_has_wrong_type( + self, rounding_spec: RoundingSpec | None + ) -> None: + """Check if rounding_spec has the correct type. + + Parameters + ---------- + rounding_spec + The rounding specification to check. + + Raises + ------ + AssertionError + If rounding_spec is not a RoundingSpec or None. + """ + assert isinstance(rounding_spec, RoundingSpec | None), ( + f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" + ) + + def __call__(self, *args, **kwargs): + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> set[str]: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + @property + def original_function_name(self) -> str: + """The name of the wrapped function.""" + return self.function.__name__ + + def is_active(self, date: datetime.date) -> bool: + """Check if the function is active at a given date.""" + return self.start_date <= date <= self.end_date + + +@dataclass +class PolicyFunction(TTSIMFunction): + """ + A function that computes an output vector based on some input vectors and/or + parameters. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + function: + The function to wrap. Argument values of the `@policy_function` are reused + unless explicitly overwritten. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + rounding_spec: + The rounding specification. + """ + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> PolicyFunction: + """Remove tree logic from the function and update the function signature.""" + return PolicyFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + ) + + +def policy_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, + rounding_spec: RoundingSpec | None = None, + vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "loop", + foreign_key_type: FKType = FKType.IRRELEVANT, +) -> PolicyFunction: + """ + Decorator that makes a `PolicyFunction` from a function. + + **Dates active (start_date, end_date, leaf_name):** + + Specifies that a PolicyFunction is only active between two dates, `start` and `end`. + By using the `leaf_name` argument, you can specify a different name for the + PolicyFunction in the functions tree. + + Note that even if you use this decorator with the `leaf_name` argument, you must + ensure that the function name is unique in the file where it is defined. Otherwise, + the function would be overwritten by the last function with the same name. + + **Rounding specification (rounding_spec):** + + Adds the way rounding is to be done to a PolicyFunction. + + Parameters + ---------- + leaf_name + The name that should be used as the PolicyFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + rounding_spec + The specification to be used for rounding. + vectorization_strategy: + Whether and how the function should be vectorized. + foreign_key_type: + Whether this is a foreign key and, if so, whether it may point to itself. + + Returns + ------- + A PolicyFunction object. + """ + + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + def inner(func: Callable) -> PolicyFunction: + func = ( + func + if vectorization_strategy == "not_required" + else _vectorize_func(func, vectorization_strategy=vectorization_strategy) + ) + return PolicyFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + start_date=start_date, + end_date=end_date, + rounding_spec=rounding_spec, + foreign_key_type=foreign_key_type, + ) + + return inner + + +def _vectorize_func( + func: Callable, vectorization_strategy: Literal["loop", "vectorize"] +) -> Callable: + if vectorization_strategy == "loop": + vectorized = functools.wraps(func)(numpy.vectorize(func)) + vectorized.__signature__ = inspect.signature(func) + vectorized.__globals__ = func.__globals__ + vectorized.__closure__ = func.__closure__ + elif vectorization_strategy == "vectorize": + backend = "jax" if IS_JAX_INSTALLED else "numpy" + vectorized = make_vectorizable(func, backend=backend) + else: + raise ValueError( + f"Vectorization strategy {vectorization_strategy} is not supported. " + "Use 'loop' or 'vectorize'." + ) + return vectorized + + +@dataclass +class GroupCreationFunction(TTSIMFunction): + """ + A function that computes endogenous group_by IDs. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + function: + The function calculating the group_by IDs. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + """ + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> GroupCreationFunction: + """Remove tree logic from the function and update the function signature.""" + return GroupCreationFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + ) + + +def group_creation_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, +) -> GroupCreationFunction: + """ + Decorator that creates a group_by function from a function. + """ + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + def decorator(func: Callable) -> GroupCreationFunction: + _leaf_name = func.__name__ if leaf_name is None else leaf_name + return GroupCreationFunction( + leaf_name=_leaf_name, + function=func, + start_date=start_date, + end_date=end_date, + ) + + return decorator + + +@dataclass +class AggByGroupFunction(TTSIMFunction): + """ + A function that is an aggregation of another column by some group id. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + function: + The function performing the aggregation. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + params_key_for_rounding: + The key in the params dictionary that should be used for rounding. + skip_vectorization: + Whether the function should be vectorized. + orig_location: + The original location of the function, or "automatically generated". + """ + + # Default value is necessary because we have defaults in the superclass. + orig_location: str = "automatically generated" + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> AggByGroupFunction: + """Remove tree logic from the function and update the function signature.""" + return AggByGroupFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + orig_location=self.orig_location, + ) + + +def agg_by_group_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, + agg_type: AggType, +) -> AggByGroupFunction: + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + agg_registry = { + AggType.SUM: grouped_sum, + AggType.MEAN: grouped_mean, + AggType.MAX: grouped_max, + AggType.MIN: grouped_min, + AggType.ANY: grouped_any, + AggType.ALL: grouped_all, + AggType.COUNT: grouped_count, + } + + def inner(func: Callable) -> AggByGroupFunction: + orig_location = f"{func.__module__}.{func.__name__}" + args = set(inspect.signature(func).parameters) + group_ids = {p for p in args if p.endswith("_id")} + other_args = args - group_ids + _fail_if_group_id_is_invalid(group_ids, orig_location) + if agg_type == AggType.COUNT: + _fail_if_other_arg_is_present(other_args, orig_location) + mapper = {"group_id": group_ids.pop()} + else: + _fail_if_other_arg_is_invalid(other_args, orig_location) + mapper = {"group_id": group_ids.pop(), "column": other_args.pop()} + agg_func = dags.rename_arguments( + func=agg_registry[agg_type], + mapper=mapper, + ) + + functools.update_wrapper(agg_func, func) + agg_func.__signature__ = inspect.signature(func) + + return AggByGroupFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=agg_func, + start_date=start_date, + end_date=end_date, + foreign_key_type=FKType.IRRELEVANT, + orig_location=f"{func.__module__}.{func.__name__}", + ) + + return inner + + +def _fail_if_group_id_is_invalid(group_ids: set[str], orig_location: str): + if len(group_ids) != 1: + raise ValueError( + "Require exactly one group identifier ending with '_id' for " + "aggregation by group. Got " + f"{', '.join(group_ids) if group_ids else 'nothing'} in {orig_location}." + ) + + +def _fail_if_other_arg_is_present(other_args: set[str], orig_location: str): + if other_args: + raise ValueError( + "There must be no argument besides identifiers for counting. Got: " + f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}." + ) + + +def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str): + if len(other_args) != 1: + raise ValueError( + "There must be exactly one argument besides identifiers for aggregations. " + "Got: " + f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}." + ) + + +@dataclass +class AggByPIDFunction(TTSIMFunction): + """ + A function that is an aggregation of another column by some group id. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + function: + The function performing the aggregation. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + params_key_for_rounding: + The key in the params dictionary that should be used for rounding. + skip_vectorization: + Whether the function should be vectorized. + orig_location: + The original location of the function, or "automatically generated". + """ + + # Default value is necessary because we have defaults in the superclass. + orig_location: str = "automatically generated" + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> AggByGroupFunction: + """Remove tree logic from the function and update the function signature.""" + return AggByGroupFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + orig_location=self.orig_location, + ) + + +def agg_by_p_id_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, + agg_type: AggType, +) -> AggByPIDFunction: + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + agg_registry = { + AggType.SUM: sum_by_p_id, + AggType.MEAN: mean_by_p_id, + AggType.MAX: max_by_p_id, + AggType.MIN: min_by_p_id, + AggType.ANY: any_by_p_id, + AggType.ALL: all_by_p_id, + AggType.COUNT: count_by_p_id, + } + + def inner(func: Callable) -> AggByPIDFunction: + orig_location = f"{func.__module__}.{func.__name__}" + args = set(inspect.signature(func).parameters) + other_p_ids = { + p + for p in args + if any(e.startswith("p_id_") for e in dt.tree_path_from_qual_name(p)) + } + other_args = args - {*other_p_ids, "p_id"} + _fail_if_p_id_is_not_present(args, orig_location) + _fail_if_other_p_id_is_invalid(other_p_ids, orig_location) + if agg_type == AggType.COUNT: + _fail_if_other_arg_is_present(other_args, orig_location) + mapper = { + "p_id_to_aggregate_by": other_p_ids.pop(), + "p_id_to_store_by": "p_id", + } + else: + _fail_if_other_arg_is_invalid(other_args, orig_location) + mapper = { + "column": other_args.pop(), + "p_id_to_aggregate_by": other_p_ids.pop(), + "p_id_to_store_by": "p_id", + } + agg_func = dags.rename_arguments( + func=agg_registry[agg_type], + mapper=mapper, + ) + + functools.update_wrapper(agg_func, func) + agg_func.__signature__ = inspect.signature(func) + + return AggByPIDFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=agg_func, + start_date=start_date, + end_date=end_date, + foreign_key_type=FKType.IRRELEVANT, + orig_location=f"{func.__module__}.{func.__name__}", + ) + + return inner + + +def _fail_if_p_id_is_not_present(args: set[str], orig_location: str): + if "p_id" not in args: + raise ValueError( + "The function must have the argument named 'p_id' for aggregation by p_id. " + f"Got {', '.join(args) if args else 'nothing'} in {orig_location}." + ) + + +def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str): + if len(other_p_ids) != 1: + raise ValueError( + "Require exactly one identifier starting with 'p_id_' for " + "aggregation by p_id. Got: " + f"{', '.join(other_p_ids) if other_p_ids else 'nothing'} in {orig_location}." # noqa: E501 + ) + + +@dataclass +class TimeConversionFunction(TTSIMFunction): + """ + A function that is a time conversion of another function. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + function: + The function performing the time conversion. + source: + The name of the source function or data column. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + """ + + source: str | None = None + + def __post_init__(self): + if self.source is None: + raise ValueError("The source must be specified.") + super().__post_init__() + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> TimeConversionFunction: + """Remove tree logic from the function and update the function signature.""" + return TimeConversionFunction( + source=self.source, + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + ) + + +def _convert_and_validate_dates( + start_date: datetime.date | DashedISOString, + end_date: datetime.date | DashedISOString, +) -> tuple[datetime.date, datetime.date]: + """Convert and validate date strings to datetime.date objects. + + Parameters + ---------- + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + + Returns + ------- + tuple[datetime.date, datetime.date] + The converted and validated start and end dates. + """ + start_date = to_datetime(start_date) + end_date = to_datetime(end_date) + + validate_date_range(start_date, end_date) + + return start_date, end_date + + +def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: + """Checks whether used series has already expected internal type. + + Parameters + ---------- + series : pandas.Series or pandas.DataFrame or dict of pandas.Series + Data provided by the user. + internal_type : TypeVar + One of the internal gettsim types. + + Returns + ------- + Bool + + """ + if ( + (internal_type == float) & (is_float_dtype(series)) + or (internal_type == int) & (is_integer_dtype(series)) + or (internal_type == bool) & (is_bool_dtype(series)) + or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) + ): + out = True + else: + out = False + + return out diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index 0793168eae..cf4935715f 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -13,9 +13,8 @@ QualNameTargetList, ) - from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec from ttsim.config import numpy_or_jax as np - from ttsim.function_types import PolicyInput, TTSIMFunction, TTSIMObject + from ttsim.ttsim_objects import PolicyInput, TTSIMFunction, TTSIMObject NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] QualNameTTSIMObjectDict = Mapping[str, TTSIMObject] @@ -29,12 +28,6 @@ NestedDataDict = Mapping[str, pd.Series | "NestedDataDict"] QualNameDataDict = Mapping[str, pd.Series] NestedArrayDict = Mapping[str, np.ndarray | "NestedArrayDict"] - NestedAggregationSpecDict = Mapping[ - str, AggregateByGroupSpec | AggregateByPIDSpec | "NestedAggregationSpecDict" - ] - QualNameAggregationSpecsDict = Mapping[ - str, AggregateByGroupSpec | AggregateByPIDSpec - ] DashedISOString = NewType("DashedISOString", str) """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/src/ttsim/vectorization.py b/src/ttsim/vectorization.py index 6e43c90b78..9d69c09054 100644 --- a/src/ttsim/vectorization.py +++ b/src/ttsim/vectorization.py @@ -1,38 +1,45 @@ import ast import functools import inspect +import textwrap +import types +from collections.abc import Callable from importlib import import_module import astor +from ttsim.config import numpy_or_jax + BACKEND_TO_MODULE = {"jax": "jax.numpy", "numpy": "numpy"} -def make_vectorizable(func: callable, backend: str): +def make_vectorizable(func: Callable, backend: str) -> Callable: """Redefine function to be vectorizable given backend. - This function replaces if statements with where() calls, as well as boolean - operations with their bit operation counterpart, and not with inversion. After the - replacement the function can be called with vector-valued input. - Args: - func (callable): Function. - backend (str): Backend library. Currently supported backends are 'jax' and - 'numpy'. Array module must export function `where` that behaves as - `numpy.where`. + func: Function. + backend: Backend library. Currently supported backends are 'jax' and 'numpy'. + Array module must export function `where` that behaves as `numpy.where`. Returns: - callable: New function with altered ast. - + New function with altered ast. """ + if _is_lambda_function(func): + raise TranslateToVectorizableError( + "Lambda functions are not supported for vectorization. Please define a " + "named function and use that." + ) + module = _module_from_backend(backend) tree = _make_vectorizable_ast(func, module=module) - # recreate scope of function, add policy_function decorator and array library - scope = func.__globals__ - from ttsim.function_types import policy_function + # recreate scope of function, add array library + scope = dict(func.__globals__) + if func.__closure__: + closure_vars = func.__code__.co_freevars + closure_cells = [c.cell_contents for c in func.__closure__] + scope.update(dict(zip(closure_vars, closure_cells))) - scope["policy_function"] = policy_function scope[module] = import_module(module) # execute new ast @@ -44,45 +51,39 @@ def make_vectorizable(func: callable, backend: str): return functools.wraps(func)(new_func) -def make_vectorizable_source( - func: callable, - backend: str, -): +def make_vectorizable_source(func: Callable, backend: str) -> str: """Redefine function source to be vectorizable given backend. - This function replaces if statements with {backend}.where(), as well as boolean - operations with their bit operation counterpart, and not with inversion. After the - replacement the function can be called with vector-valued input. - Args: - func (callable): Function. - backend (str): Backend library. See dict `BACKEND_TO_MODULE` for currently - supported backends. Array module must export function `where` that behaves - as `numpy.where`. + func: Function. + backend: Backend library. See dict `BACKEND_TO_MODULE` for currently supported + backends. Array module must export function `where` that behaves as + `numpy.where`. Returns: - str: Source code of new function with altered ast. - + Source code of new function with altered ast. """ + if _is_lambda_function(func): + raise TranslateToVectorizableError( + "Lambda functions are not supported for vectorization. Please define a " + "named function and use that." + ) + module = _module_from_backend(backend) tree = _make_vectorizable_ast(func, module=module) - source = astor.code_gen.to_source(tree) - return source + return astor.code_gen.to_source(tree) -def _make_vectorizable_ast(func: callable, module: str): +def _make_vectorizable_ast(func: Callable, module: str) -> ast.Module: """Change if statement to where call in the ast of func and return new ast. Args: - func (callable): Function. - module (str): Module which exports the function `where` that behaves as - `numpy.where`. + func: Function. + module: Module which exports the function `where` that behaves as `numpy.where`. Returns: - ast.Module: AST of new function with altered ast. - + AST of new function with altered ast. """ - # create ast from func tree = _func_to_ast(func) tree = _add_parent_attr_to_ast(tree) @@ -91,17 +92,25 @@ def _make_vectorizable_ast(func: callable, module: str): # transform tree nodes new_tree = Transformer(module, func_loc).visit(tree) - new_tree = ast.fix_missing_locations(new_tree) - return new_tree + return ast.fix_missing_locations(new_tree) -def _func_to_ast(func: callable): +def _func_to_ast(func: Callable) -> ast.Module: source = inspect.getsource(func) - tree = ast.parse(source) - return tree + source_dedented = textwrap.dedent(source) + source_without_decorators = _remove_decorator_lines(source_dedented) + return ast.parse(source_without_decorators) -def _add_parent_attr_to_ast(tree: ast.AST): +def _remove_decorator_lines(source: str) -> str: + """Removes leading decorator lines from function source code.""" + if source.startswith("def "): + return source + else: + return "def " + source.split("\ndef ")[1] + + +def _add_parent_attr_to_ast(tree: ast.AST) -> ast.AST: for node in ast.walk(tree): for child in ast.iter_child_nodes(node): child.parent = node @@ -114,43 +123,42 @@ def _add_parent_attr_to_ast(tree: ast.AST): class Transformer(ast.NodeTransformer): - def __init__(self, module: str, func_loc: str): + def __init__(self, module: str, func_loc: str) -> None: self.module = module self.func_loc = func_loc - def visit_Call(self, node: ast.Call): # noqa: N802 + def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 self.generic_visit(node) - call = _call_to_call_from_module( + return _call_to_call_from_module( node, module=self.module, func_loc=self.func_loc ) - return call - def visit_UnaryOp(self, node: ast.UnaryOp): # noqa: N802 + def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.AST: # noqa: N802 if isinstance(node.op, ast.Not): out = _not_to_call(node, module=self.module) else: out = node return out - def visit_BoolOp(self, node: ast.BoolOp): # noqa: N802 + def visit_BoolOp(self, node: ast.BoolOp) -> ast.AST: # noqa: N802 self.generic_visit(node) - call = _boolop_to_call(node, module=self.module) - return call + return _boolop_to_call(node, module=self.module) - def visit_If(self, node: ast.If): # noqa: N802 + def visit_If(self, node: ast.If) -> ast.AST: # noqa: N802 self.generic_visit(node) call = _if_to_call(node, module=self.module, func_loc=self.func_loc) if isinstance(node.body[0], ast.Return): out = ast.Return(call) - elif isinstance(node.body[0], ast.Assign | ast.AugAssign): + elif isinstance(node.body[0], (ast.Assign, ast.AugAssign)): out = node.body[0] out.value = call + else: + out = call return out - def visit_IfExp(self, node: ast.IfExp): # noqa: N802 + def visit_IfExp(self, node: ast.IfExp) -> ast.AST: # noqa: N802 self.generic_visit(node) - call = _ifexp_to_call(node, module=self.module) - return call + return _ifexp_to_call(node, module=self.module) # ====================================================================================== @@ -158,19 +166,9 @@ def visit_IfExp(self, node: ast.IfExp): # noqa: N802 # ====================================================================================== -def _not_to_call(node: ast.UnaryOp, module: str): - """Transform negation operation to Call. - - Args: - node (ast.If): A UnaryOp node in the ast. - module (str): Module which exports the function `where` that behaves as - `numpy.where`. - - Returns: - ast.Call: The negation reformatted using a call to {module}.logical_not(). - - """ - call = ast.Call( +def _not_to_call(node: ast.UnaryOp, module: str) -> ast.Call: + """Transform negation operation to Call.""" + return ast.Call( func=ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), attr="logical_not", @@ -179,22 +177,10 @@ def _not_to_call(node: ast.UnaryOp, module: str): args=[node.operand], keywords=[], ) - return call - - -def _if_to_call(node: ast.If, module: str, func_loc: str): - """Transform If statement to Call. - - Args: - node (ast.If): An If node in the ast. - module (str): Module which exports the function `where` that behaves as - `numpy.where`. - func_loc (str): Path to function. - Returns: - ast.Call: The If statement reformatted using a call to {module}.where(). - """ +def _if_to_call(node: ast.If, module: str, func_loc: str) -> ast.Call: + """Transform If statement to Call.""" args = [node.test, node.body[0].value] if len(node.orelse) > 1 or len(node.body) > 1: @@ -212,73 +198,52 @@ def _if_to_call(node: ast.If, module: str, func_loc: str): elif isinstance(node.orelse[0], ast.Return): args.append(node.orelse[0].value) elif isinstance(node.orelse[0], ast.If): - call = _if_to_call(node.orelse[0], module=module) - args.append(call) - elif isinstance(node.orelse[0], ast.Assign | ast.AugAssign): + call_if = _if_to_call(node.orelse[0], module=module, func_loc=func_loc) + args.append(call_if) + elif isinstance(node.orelse[0], (ast.Assign, ast.AugAssign)): if isinstance(node.orelse[0].value, ast.IfExp): - call = _ifexp_to_call(node.orelse[0].value, module=module) - args.append(call) + call_ifexp = _ifexp_to_call(node.orelse[0].value, module=module) + args.append(call_ifexp) else: args.append(node.orelse[0].value) else: - msg = _unallowed_operation_error_message(node.orelse[0], func_loc=func_loc) + msg = _disallowed_operation_error_message(node.orelse[0], func_loc=func_loc) raise TranslateToVectorizableError(msg) - call = ast.Call( + return ast.Call( func=ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), attr="where", ctx=ast.Load() ), args=args, keywords=[], ) - return call - - -def _ifexp_to_call(node: ast.IfExp, module: str): - """Transform IfExp expression to Call. - - Args: - node (ast.IfExp): An IfExp node in the ast. - module (str): Module which exports the function `where` that behaves as - `numpy.where`. - Returns: - ast.Call: The IfExp expression reformatted using a call to {module}.where(). - """ +def _ifexp_to_call(node: ast.IfExp, module: str) -> ast.Call: + """Transform IfExp expression to Call.""" args = [node.test, node.body] if isinstance(node.orelse, ast.IfExp): - call = _ifexp_to_call(node.orelse, module=module) - args.append(call) + call_ifexp = _ifexp_to_call(node.orelse, module=module) + args.append(call_ifexp) else: args.append(node.orelse) - call = ast.Call( + return ast.Call( func=ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), attr="where", ctx=ast.Load() ), args=args, keywords=[], ) - return call - -def _boolop_to_call(node: ast.BoolOp, module: str): - """Transform BoolOp operation to Call. - - Args: - node (ast.BoolOp): A BoolOp node in the ast. - - Returns: - ast.Call: The BoolOp expression reformatted using functions 'logical_and' - instead of 'and', and 'logical_or' instead of 'or'. - """ +def _boolop_to_call(node: ast.BoolOp, module: str) -> ast.Call: + """Transform BoolOp operation to Call.""" operation = {ast.And: "logical_and", ast.Or: "logical_or"}[type(node.op)] - def _constructor(left, right): - """Construct calls of the form `numpy.logical_(and|or)(left, right)`.""" + def _constructor(left: ast.AST, right: ast.AST) -> ast.Call: + """Construct calls of the form `module.logical_(and|or)(left, right)`.""" return ast.Call( func=ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), @@ -294,30 +259,16 @@ def _constructor(left, right): for v in node.values ] - call = functools.reduce(_constructor, values) - return call - - -def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str): - """Transform built-in Calls to Calls from module. + return functools.reduce(_constructor, values) - Transforms built-in functions in ('sum', 'any', 'all', 'max', 'min') to their - backend equivalent. - - Args: - node (ast.Call): A Call node in the ast. - - Returns: - ast.Call: The Call expression reformatted using functions from the module - `module`, e.g., `{module}.max(x)` instead of `max(x)`. - """ +def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast.AST: + """Transform built-in Calls to Calls from module.""" to_transform = ("sum", "any", "all", "max", "min") transform_node = hasattr(node.func, "id") and node.func.id in to_transform if not transform_node: - # Only transform built-in calls, otherwise return node return node func_id = node.func.id @@ -325,14 +276,19 @@ def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str): args = node.args if len(args) == 1: - # Handles all cases called with a single sequence-type argument + if type(args) not in (list, tuple, numpy_or_jax.ndarray): + raise TranslateToVectorizableError( + f"Argument of function {func_id} is not a list or tuple." + f"\n\nFunction: {func_loc}\n\n" + f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" + ) + call.func = ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), attr=func_id, ctx=ast.Load(), ) elif func_id in ("max", "min") and len(args) == 2: - # Handles case of comparison between two variables attr = func_id + "imum" # max -> maximum, min -> minimum call.func = ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), @@ -347,18 +303,22 @@ def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str): # ====================================================================================== -# Transformation errors +# Transformation errors and checks # ====================================================================================== +def _is_lambda_function(obj: object) -> bool: + return isinstance(obj, types.FunctionType) and obj.__name__ == "<lambda>" + + class TranslateToVectorizableError(ValueError): """Error when function cannot be translated into vectorizable compatible format.""" -def _too_many_arguments_call_error_message(node: ast.Call, func_loc: str): +def _too_many_arguments_call_error_message(node: ast.Call, func_loc: str) -> str: source = _node_to_formatted_source(node) _func_name = node.func.id - msg = ( + return ( "\n\n" f"The function {_func_name} is called with too many arguments. Please only use " "one iterable argument for (`sum`, `any`, `all`, `max`, `min`) or two " @@ -367,12 +327,11 @@ def _too_many_arguments_call_error_message(node: ast.Call, func_loc: str): "Problematic source code (after transformations that were possible, if any):" f"\n\n{source}\n" ) - return msg -def _return_and_no_else_error_message(node: ast.Return, func_loc: str): +def _return_and_no_else_error_message(node: ast.Return, func_loc: str) -> str: source = _node_to_formatted_source(node) - msg = ( + return ( "\n\n" "The if-clause body is a return statement, while the else clause is missing.\n" "Please swap the return statement for an assignment or add an else-clause." @@ -380,12 +339,11 @@ def _return_and_no_else_error_message(node: ast.Return, func_loc: str): "Problematic source code (after transformations that were possible, if any):" f"\n\n{source}\n" ) - return msg -def _too_many_operations_error_message(node: ast.If, func_loc: str): +def _too_many_operations_error_message(node: ast.If, func_loc: str) -> str: source = _node_to_formatted_source(node) - msg = ( + return ( "\n\n" "An if statement is performing multiple operations, which is forbidden.\n" "Please only perform one operation in the body of an if-elif-else statement." @@ -393,14 +351,13 @@ def _too_many_operations_error_message(node: ast.If, func_loc: str): "Problematic source code (after transformations that were possible, if any):" f"\n\n{source}\n" ) - return msg -def _unallowed_operation_error_message(node: ast.If, func_loc: str): +def _disallowed_operation_error_message(node: ast.AST, func_loc: str) -> str: source = _node_to_formatted_source(node) - msg = ( + return ( "\n\n" - "An if-elif-else clause body is of type {type(node)}, which is forbidden.\n" + f"An if-elif-else clause body is of type {type(node)}, which is forbidden.\n" "Allowed types are the following:\n\n" "ast.If : Another if-else-elif clause\n" "ast.IfExp : A one-line if-else statement. Example: 1 if flag else 0\n" @@ -410,21 +367,17 @@ def _unallowed_operation_error_message(node: ast.If, func_loc: str): "Problematic source code (after transformations that were possible, if any):" f"\n\n{source}\n" ) - return msg -def _node_to_formatted_source(node: ast.AST): +def _node_to_formatted_source(node: ast.AST) -> str: source = astor.code_gen.to_source(node) - source = " > " + source[:-1].replace("\n", "\n > ") - return source + return " > " + source[:-1].replace("\n", "\n > ") -def _module_from_backend(backend: str): - module = BACKEND_TO_MODULE.get(backend) - if module is None: - msg = ( - f"Argument 'backend' is {backend} but must be in " - f"{BACKEND_TO_MODULE.keys()}." - ) - raise NotImplementedError(msg) - return module +def _module_from_backend(backend: str) -> str: + if backend in BACKEND_TO_MODULE: + return BACKEND_TO_MODULE[backend] + + raise NotImplementedError( + f"Argument 'backend' is {backend} but must be in {BACKEND_TO_MODULE.keys()}." + ) diff --git a/src/ttsim/visualization.py b/src/ttsim/visualization.py index f14c759e6c..6338c5d3ce 100644 --- a/src/ttsim/visualization.py +++ b/src/ttsim/visualization.py @@ -20,7 +20,7 @@ from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( format_list_linewise, - get_names_of_arguments_without_defaults, + get_names_of_required_arguments, partition_tree_by_reference_tree, ) @@ -289,12 +289,12 @@ def _mock_parameters_arguments(functions): for name, function in functions.items(): partial_params = { i: {} - for i in get_names_of_arguments_without_defaults(function) + for i in get_names_of_required_arguments(function) if i.endswith("_params") } # Fix old functions which requested the whole dictionary. Test if removable. - if "params" in get_names_of_arguments_without_defaults(function): + if "params" in get_names_of_required_arguments(function): partial_params["params"] = {} mocked_functions[name] = ( diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py index 66115b85da..24071e62c1 100644 --- a/tests/ttsim/mettsim/config.py +++ b/tests/ttsim/mettsim/config.py @@ -8,11 +8,4 @@ RESOURCE_DIR = Path(__file__).parent - -FOREIGN_KEYS = ( - ("payroll_tax", "p_id_spouse"), - ("p_id_parent_1",), - ("p_id_parent_2",), -) - SUPPORTED_GROUPINGS = ("fam", "sp", "hh") diff --git a/tests/ttsim/mettsim/demographics.py b/tests/ttsim/mettsim/demographics.py new file mode 100644 index 0000000000..82ec90b7c6 --- /dev/null +++ b/tests/ttsim/mettsim/demographics.py @@ -0,0 +1,8 @@ +from ttsim import AggType, agg_by_group_function + + +@agg_by_group_function(agg_type=AggType.COUNT) +def number_of_individuals_hh( + hh_id: int, # noqa: ARG001 +) -> int: + return 1 diff --git a/tests/ttsim/mettsim/payroll_tax/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py similarity index 96% rename from tests/ttsim/mettsim/payroll_tax/group_by_ids.py rename to tests/ttsim/mettsim/group_by_ids.py index f7ebde8994..183149a1d0 100644 --- a/tests/ttsim/mettsim/payroll_tax/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -1,9 +1,9 @@ import numpy -from ttsim import group_by_function +from ttsim import group_creation_function -@group_by_function() +@group_creation_function() def sp_id( p_id: numpy.ndarray[int], p_id_spouse: numpy.ndarray[int], @@ -30,7 +30,7 @@ def sp_id( return numpy.asarray(result) -@group_by_function() +@group_creation_function() def fam_id( p_id_spouse: numpy.ndarray[int], p_id: numpy.ndarray[int], diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index af796cf8c0..e28d8aa551 100644 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -9,27 +9,29 @@ - Subsistence income is calculated per spouse and child """ -from ttsim import AggregateByGroupSpec, AggregationType, policy_function +from ttsim import AggType, agg_by_group_function, policy_function -aggregation_specs = ( - AggregateByGroupSpec( - target="number_of_children_fam", - source="child", - agg=AggregationType.SUM, - ), -) + +@agg_by_group_function(agg_type=AggType.SUM, end_date="2019-12-31") +def number_of_adults_fam(fam_id: int, adult: bool) -> int: + """The number of adults in the family.""" + + +@agg_by_group_function(agg_type=AggType.COUNT) +def number_of_individuals_fam(fam_id: int) -> int: + """The number of individuals in the family.""" @policy_function(end_date="2019-12-31", leaf_name="requirement_fulfilled_fam") def requirement_fulfilled_fam_not_considering_children( - housing_benefits__income__amount_m_sp: float, - number_of_individuals_sp: int, + housing_benefits__income__amount_m_fam: float, + number_of_adults_fam: int, housing_benefits_params: dict, ) -> bool: return ( - housing_benefits__income__amount_m_sp - < housing_benefits_params["subsistence_income_per_spouse_m"] - * number_of_individuals_sp + housing_benefits__income__amount_m_fam + < housing_benefits_params["eligibility"]["subsistence_income_per_spouse_m"] + * number_of_adults_fam ) @@ -37,22 +39,36 @@ def requirement_fulfilled_fam_not_considering_children( def requirement_fulfilled_fam_considering_children( housing_benefits__income__amount_m_fam: float, housing_benefits_params: dict, - number_of_children_considered: int, - number_of_individuals_sp: int, + number_of_family_members_considered_fam: int, ) -> bool: return housing_benefits__income__amount_m_fam < ( - housing_benefits_params["subsistence_income_per_spouse"] - * number_of_individuals_sp - + housing_benefits_params["subsistence_income_per_child"] - * number_of_children_considered + housing_benefits_params["eligibility"]["subsistence_income_per_individual_m"] + * number_of_family_members_considered_fam ) @policy_function(start_date="2020-01-01") -def number_of_children_considered( - number_of_children_fam: int, +def number_of_family_members_considered_fam( + number_of_individuals_fam: int, housing_benefits_params: dict, ) -> int: return min( - number_of_children_fam, housing_benefits_params["max_number_of_children"] + number_of_individuals_fam, + housing_benefits_params["eligibility"]["max_number_of_family_members"], ) + + +@policy_function() +def child( + age: int, + housing_benefits_params: dict, +) -> bool: + return age <= housing_benefits_params["max_age_children"] + + +@policy_function() +def adult( + age: int, + housing_benefits_params: dict, +) -> bool: + return age > housing_benefits_params["max_age_children"] diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py index 9ff2384dfa..1e3678f11b 100644 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -9,7 +9,11 @@ ) ) def amount_m( - gross_wage_m: float, + payroll_tax__income__gross_wage_m: float, payroll_tax__amount_m: float, + housing_benefits__eligibility__child: bool, ) -> float: - return gross_wage_m - payroll_tax__amount_m + if housing_benefits__eligibility__child: + return 0.0 + else: + return payroll_tax__income__gross_wage_m - payroll_tax__amount_m diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py index bab97a76fd..722ce8a3e9 100644 --- a/tests/ttsim/mettsim/inputs.py +++ b/tests/ttsim/mettsim/inputs.py @@ -1,11 +1,41 @@ -from ttsim import policy_input +from ttsim import FKType, policy_input @policy_input() def p_id() -> int: - pass + """Person ID, always required by TTSIM.""" @policy_input() def hh_id() -> int: - pass + """Household id (will delete once fam_id is enough).""" + + +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) +def p_id_parent_1() -> int: + """Identifier of the first parent.""" + + +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) +def p_id_parent_2() -> int: + """Identifier of the second parent.""" + + +@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) +def p_id_spouse() -> int: + """Identifier of married partner.""" + + +@policy_input() +def age() -> int: + """Age of the person.""" + + +@policy_input() +def parent_is_noble() -> bool: + """Whether at least one parent is noble.""" + + +@policy_input() +def wealth() -> float: + """Wealth of the person.""" diff --git a/tests/ttsim/mettsim/parameters/housing_benefits.yaml b/tests/ttsim/mettsim/parameters/housing_benefits.yaml index 9af45bd15b..4777599838 100644 --- a/tests/ttsim/mettsim/parameters/housing_benefits.yaml +++ b/tests/ttsim/mettsim/parameters/housing_benefits.yaml @@ -3,9 +3,11 @@ eligibility: 1900-01-01: subsistence_income_per_spouse_m: 500.0 2020-01-01: - subsistence_income_per_spouse_m: 500.0 - subsistence_income_per_child: 200.0 - max_number_of_children: 2 + subsistence_income_per_individual_m: 500.0 + max_number_of_family_members: 4 assistance_rate: 1900-01-01: scalar: 0.5 +max_age_children: + 1900-01-01: + scalar: 18 diff --git a/tests/ttsim/mettsim/parameters/payroll_tax.yaml b/tests/ttsim/mettsim/parameters/payroll_tax.yaml index 09cb1be584..d5b6f379ee 100644 --- a/tests/ttsim/mettsim/parameters/payroll_tax.yaml +++ b/tests/ttsim/mettsim/parameters/payroll_tax.yaml @@ -4,6 +4,10 @@ child_tax_credit: child_amount_y: 100.0 max_age: 18 income: - 1900-01-01: null - lump_sum_deduction_y: 100.0 - rate: 0.3 + 1900-01-01: + lump_sum_deduction_y: 100.0 + rate: 0.3 + reduced_rate: 0.15 +wealth_threshold_for_reduced_tax_rate: + 1900-01-01: + scalar: 50000 diff --git a/tests/ttsim/mettsim/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py index f1498aa8de..3255ac66ee 100644 --- a/tests/ttsim/mettsim/payroll_tax/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/amount.py @@ -1,9 +1,24 @@ -from ttsim import policy_function +from ttsim import AggType, agg_by_group_function, policy_function @policy_function() def amount_y( income__amount_y: float, payroll_tax_params: dict, + parent_is_noble_fam: bool, + wealth_fam: float, ) -> float: - return income__amount_y * payroll_tax_params["rate"] + if parent_is_noble_fam: + return 0.0 + elif wealth_fam >= payroll_tax_params["wealth_threshold_for_reduced_tax_rate"]: + return income__amount_y * payroll_tax_params["income"]["reduced_rate"] + else: + return income__amount_y * payroll_tax_params["income"]["rate"] + + +@agg_by_group_function(agg_type=AggType.ANY) +def parent_is_noble_fam( + parent_is_noble: bool, + fam_id: int, +) -> bool: + pass diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 33d46d4ad2..35caafc466 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -1,22 +1,27 @@ -from ttsim import AggregateByPIDSpec, AggregationType, join_numpy, policy_function - -aggregation_specs = ( - AggregateByPIDSpec( - target="amount_y", - source="claim_of_child_y", - p_id_to_aggregate_by="recipient_id", - agg=AggregationType.SUM, - ), +from ttsim import ( + AggType, + agg_by_p_id_function, + join, + policy_function, ) +@agg_by_p_id_function(agg_type=AggType.SUM) +def amount_y( + p_id: int, + p_id_recipient: int, + claim_of_child_y: float, +) -> float: + """The amount of child tax credit at the recipient level.""" + + @policy_function() def claim_of_child_y( child_eligible: bool, payroll_tax_params: dict, ) -> float: if child_eligible: - return payroll_tax_params["child_tax_credit"] + return payroll_tax_params["child_tax_credit"]["child_amount_y"] else: return 0 @@ -25,20 +30,23 @@ def claim_of_child_y( def child_eligible( age: int, payroll_tax_params: dict, - child_in_same_household_as_recipient: float, + in_same_household_as_recipient: float, ) -> bool: - return age <= payroll_tax_params["max_age"] and child_in_same_household_as_recipient + return ( + age <= payroll_tax_params["child_tax_credit"]["max_age"] + and in_same_household_as_recipient + ) -@policy_function(skip_vectorization=True) -def child_in_same_household_as_recipient( +@policy_function(vectorization_strategy="not_required") +def in_same_household_as_recipient( p_id: int, hh_id: int, - recipient_id: int, + p_id_recipient: int, ) -> bool: return ( - join_numpy( - foreign_key=recipient_id, + join( + foreign_key=p_id_recipient, primary_key=p_id, target=hh_id, value_if_foreign_key_is_missing=-1, diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py new file mode 100644 index 0000000000..f74c704fbe --- /dev/null +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py @@ -0,0 +1,6 @@ +from ttsim import FKType, policy_input + + +@policy_input(foreign_key_type=FKType.MAY_POINT_TO_SELF) +def p_id_recipient() -> int: + """Identifier of the recipient of the child tax credit.""" diff --git a/tests/ttsim/mettsim/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py index c22dd910e0..7ca5114e27 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/income/amount.py @@ -6,4 +6,4 @@ def amount_y( gross_wage_y: float, deductions_y: float, ) -> float: - return gross_wage_y - deductions_y + return max(gross_wage_y - deductions_y, 0.0) diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py index 7edad1ed5d..a27f83b51a 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.py +++ b/tests/ttsim/mettsim/payroll_tax/income/deductions.py @@ -7,6 +7,6 @@ def deductions_y( payroll_tax_params: dict, ) -> float: return ( - payroll_tax_params["lump_sum_deduction_y"] + payroll_tax_params["income"]["lump_sum_deduction_y"] + payroll_tax__child_tax_credit__amount_y ) diff --git a/tests/ttsim/test_aggregation_functions.py b/tests/ttsim/test_aggregation_functions.py index 80406762e8..852bcc42dd 100644 --- a/tests/ttsim/test_aggregation_functions.py +++ b/tests/ttsim/test_aggregation_functions.py @@ -13,7 +13,7 @@ grouped_sum, sum_by_p_id, ) -from ttsim.config import USE_JAX +from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np @@ -131,7 +131,7 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "expected_type": numpy.integer, }, } -if not USE_JAX: +if not IS_JAX_INSTALLED: test_grouped_specs["datetime"] = { "column_to_aggregate": np.array( [ @@ -205,7 +205,7 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "exception_match": "The dtype of id columns must be integer.", }, } -if not USE_JAX: +if not IS_JAX_INSTALLED: test_grouped_raises_specs["dtype_string"] = { "column_to_aggregate": np.array(["0", "1", "2", "3", "4"]), "group_id": np.array([0, 0, 1, 1, 1]), diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index c21227b1c1..56353982cc 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -1,27 +1,16 @@ -import datetime -import inspect - import pandas as pd import pytest -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType -from ttsim.combine_functions import ( - _annotate_aggregation_functions, - _create_aggregate_by_group_functions, - _create_aggregation_functions, - _create_one_aggregation_function, - _fail_if_targets_not_in_functions, - _get_name_of_aggregation_source, -) +from ttsim.aggregation import AggType +from ttsim.automatically_added_functions import create_agg_by_group_functions +from ttsim.combine_functions import _fail_if_targets_not_in_functions from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers -from ttsim.function_types import ( - DEFAULT_END_DATE, - DEFAULT_START_DATE, - DerivedAggregationFunction, +from ttsim.policy_environment import PolicyEnvironment +from ttsim.ttsim_objects import ( + agg_by_group_function, policy_function, policy_input, ) -from ttsim.policy_environment import PolicyEnvironment @pytest.fixture @@ -55,6 +44,16 @@ def hh_id() -> int: pass +@agg_by_group_function(leaf_name="y_hh", agg_type=AggType.SUM) +def y_hh(hh_id: int, x: int) -> int: + pass + + +@agg_by_group_function(leaf_name="y_hh", agg_type=AggType.SUM) +def y_hh_namespaced_input(hh_id: int, inputs__x: int) -> int: + pass + + @pytest.fixture @policy_function(leaf_name="bar") def function_with_int_return(x: int) -> int: @@ -67,12 +66,27 @@ def function_with_float_return(x: int) -> float: return x +def some_x(x): + return x + + +def return_x_hh(x_hh: int) -> int: + return x_hh + + +def return_y_hh(y_hh: int) -> int: + return y_hh + + +def return_n1__x_hh(n1__x_hh: int) -> int: + return n1__x_hh + + @pytest.mark.parametrize( ( "objects_tree", "targets_tree", "data_tree", - "aggregations_specs_from_env", ), [ ( @@ -80,267 +94,106 @@ def function_with_float_return(x: int) -> float: { "hh_id": hh_id, "p_id": p_id, - "namespace1": { - "f": policy_function(leaf_name="f")(lambda x_hh: x_hh), + "n1": { + "f": policy_function(leaf_name="f")(return_n1__x_hh), "x": x, }, }, - {"namespace1": {"f": None}}, + {"n1": {"f": None}}, { - "namespace1": {"x": pd.Series([1, 1, 1])}, + "n1": {"x": pd.Series([1, 1, 1])}, "hh_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, - {}, ), ( # Aggregations derived from namespaced function arguments { "hh_id": hh_id, "p_id": p_id, - "namespace1": { - "f": policy_function(leaf_name="f")( - lambda inputs__x_hh: inputs__x_hh - ) - }, - "inputs": {"x": x}, + "n1": {"f": policy_function(leaf_name="f")(return_x_hh), "x": x}, }, - {"namespace1": {"f": None}}, + {"n1": {"f": None}}, { - "inputs": {"x": pd.Series([1, 1, 1])}, + "n1": {"x": pd.Series([1, 1, 1])}, "hh_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, - {}, ), ( # Aggregations derived from target { "hh_id": hh_id, "p_id": p_id, - "namespace1": { - "f": policy_function(leaf_name="f")(lambda x: x), + "n1": { + "f": policy_function(leaf_name="f")(some_x), "x": x, }, }, - {"namespace1": {"f_hh": None}}, + {"n1": {"f_hh": None}}, { - "namespace1": {"x": pd.Series([1, 1, 1])}, + "n1": {"x": pd.Series([1, 1, 1])}, "hh_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, - {}, ), ( - # Aggregations derived from simple environment specification + # Explicit aggregation via objects tree with leaf name input { "hh_id": hh_id, "p_id": p_id, - "namespace1": { - "f": policy_function(leaf_name="f")(lambda y_hh: y_hh), + "n1": { + "f": policy_function(leaf_name="f")(some_x), "x": x, }, + "y_hh": y_hh, }, - {"namespace1": {"f": None}}, + {"n1": {"f": None}}, { - "namespace1": {"x": pd.Series([1, 1, 1])}, + "n1": {"x": pd.Series([1, 1, 1])}, "hh_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, - { - "namespace1": { - "y_hh": AggregateByGroupSpec( - target="y_hh", - source="x", - agg=AggregationType.SUM, - ) - }, - }, ), ( - # Aggregations derived from namespaced environment specification + # Explicit aggregation via objects tree with namespaced input { "hh_id": hh_id, "p_id": p_id, - "namespace1": {"f": policy_function(leaf_name="f")(lambda y_hh: y_hh)}, + "n1": { + "f": policy_function(leaf_name="f")(return_y_hh), + "y_hh": y_hh_namespaced_input, + }, "inputs": {"x": x}, }, - {"namespace1": {"f": None}}, + {"n1": {"f": None}}, { "inputs": {"x": pd.Series([1, 1, 1])}, "hh_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, - { - "namespace1": { - "y_hh": AggregateByGroupSpec( - target="y_hh", - source="inputs__x", - agg=AggregationType.SUM, - ) - }, - }, ), ], ) -def test_create_aggregate_by_group_functions( +def test_create_agg_by_group_functions( objects_tree, targets_tree, data_tree, - aggregations_specs_from_env, ): - environment = PolicyEnvironment( - raw_objects_tree=objects_tree, - aggregation_specs_tree=aggregations_specs_from_env, - ) + environment = PolicyEnvironment(raw_objects_tree=objects_tree) compute_taxes_and_transfers( environment=environment, data_tree=data_tree, targets_tree=targets_tree, - supported_groupings=("hh",), - foreign_keys=(), + groupings=("hh",), ) -START_DATE = datetime.date.fromisoformat("1900-01-01") -END_DATE = datetime.date.fromisoformat("2100-12-31") - - -@pytest.mark.parametrize( - ( - "functions", - "inputs", - "aggregation_functions", - "expected_return_type", - ), - [ - ( - {}, - {}, - { - "foo": DerivedAggregationFunction( - leaf_name="foo", - function=lambda x: x, - source="x", - aggregation_method="count", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - int, - ), - ( - {}, - {"x": x}, - { - "foo": DerivedAggregationFunction( - leaf_name="foo", - function=lambda x: x, - source="x", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - int, - ), - ( - {}, - {"x": x_f}, - { - "foo": DerivedAggregationFunction( - leaf_name="foo", - function=lambda x: x, - source="x", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - float, - ), - ( - {}, - {"x": x_b}, - { - "foo": DerivedAggregationFunction( - leaf_name="foo", - function=lambda x: x, - source="x", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - int, - ), - ( - {"n1__foo": function_with_bool_return}, - {}, - { - "n1__foo_hh": DerivedAggregationFunction( - leaf_name="foo_hh", - function=function_with_bool_return, - source="n1__foo", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - int, - ), - ( - {"n1__foo": function_with_float_return}, - {}, - { - "n1__foo_hh": DerivedAggregationFunction( - leaf_name="foo_hh", - function=function_with_float_return, - source="n1__foo", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - float, - ), - ( - {"n1__foo": function_with_int_return}, - {}, - { - "n1__foo_hh": DerivedAggregationFunction( - leaf_name="foo_hh", - function=function_with_int_return, - source="n1__foo", - aggregation_method="sum", - start_date=START_DATE, - end_date=END_DATE, - ) - }, - int, - ), - ], -) -def test_annotations_for_aggregation( - functions, - inputs, - aggregation_functions, - expected_return_type, -): - name_of_aggregation_function = next(iter(aggregation_functions.keys())) - annotation_of_aggregation_function = _annotate_aggregation_functions( - functions=functions, - inputs=inputs, - aggregation_functions=aggregation_functions, - )[name_of_aggregation_function].__annotations__["return"] - assert annotation_of_aggregation_function == expected_return_type - - @pytest.mark.parametrize( "functions, targets, expected_error_match", [ - ({"foo": lambda x: x}, {"bar": None}, "('bar',)"), - ({"foo__baz": lambda x: x}, {"foo__bar": None}, "('foo', 'bar')"), + ({"foo": some_x}, {"bar": None}, "('bar',)"), + ({"foo__baz": some_x}, {"foo__bar": None}, "('foo', 'bar')"), ], ) def test_fail_if_targets_are_not_among_functions( @@ -354,140 +207,35 @@ def test_fail_if_targets_are_not_among_functions( @pytest.mark.parametrize( ( "functions", - "inputs", - "aggregations", - "aggregation_type", - "top_level_namespace", - "expected_annotations", - ), - [ - ( - {"foo": function_with_bool_return}, - {}, - { - "foo_hh": AggregateByGroupSpec( - target="foo_hh", source="foo", agg=AggregationType.SUM - ), - }, - "group", - ["foo"], - {"foo": bool, "return": int}, - ), - ( - {"foo": function_with_float_return}, - {}, - { - "foo_hh": AggregateByGroupSpec( - target="foo_hh", source="foo", agg=AggregationType.SUM - ), - }, - "group", - ["foo"], - {"foo": float, "return": float}, - ), - ( - {"foo": function_with_int_return}, - {}, - { - "foo_hh": AggregateByPIDSpec( - target="foo_hh", - p_id_to_aggregate_by="foreign_id_col", - source="foo", - agg=AggregationType.SUM, - ) - }, - "p_id", - ["foo"], - {"foo": int, "return": int}, - ), - ], -) -def test_annotations_are_applied_to_derived_functions( - functions, - inputs, - aggregations, - aggregation_type, - top_level_namespace, - expected_annotations, -): - """Test that the annotations are applied to the derived functions.""" - result_func = next( - iter( - _create_aggregation_functions( - functions=functions, - inputs=inputs, - aggregation_functions_to_create=aggregations, - aggregation_type=aggregation_type, - top_level_namespace=top_level_namespace, - supported_groupings=("hh",), - ).values() - ) - ) - assert result_func.__annotations__ == expected_annotations - - -@pytest.mark.parametrize( - ( - "functions", - "inputs", "targets", "data", - "aggregations_from_environment", - "top_level_namespace", "expected", ), [ ( - {"foo": policy_function(leaf_name="foo")(lambda x_hh: x_hh)}, - {"x": x}, + {"foo": policy_function(leaf_name="foo")(return_x_hh)}, {}, {"x": pd.Series([1])}, - {}, - ["foo", "x"], ("x_hh"), ), ( - {"n1__foo": policy_function(leaf_name="foo")(lambda n2__x_hh: n2__x_hh)}, - {"hh_id": hh_id, "n2__x": x}, - {}, - {"n2": {"x": pd.Series([1])}}, + {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_hh)}, {}, - ["n1", "n2"], - ("n2__x_hh"), + {"n1__x": pd.Series([1])}, + ("n1__x_hh"), ), ( {}, - {"x": x}, {"x_hh": None}, {"x": pd.Series([1])}, - {}, - ["x"], ("x_hh"), ), - ( - {"foo": policy_function(leaf_name="foo")(lambda x: x)}, - {"hh_id": hh_id, "x": x}, - {}, - {"x": pd.Series([1])}, - { - "n1__foo_hh": AggregateByGroupSpec( - target="foo_hh", - source="foo", - agg=AggregationType.SUM, - ) - }, - ["x", "foo", "n1"], - ("n1__foo_hh"), - ), ], ) def test_derived_aggregation_functions_are_in_correct_namespace( functions, - inputs, targets, data, - aggregations_from_environment, - top_level_namespace, expected, ): """Test that the derived aggregation functions are in the correct namespace. @@ -495,457 +243,199 @@ def test_derived_aggregation_functions_are_in_correct_namespace( The namespace of the derived aggregation functions should be the same as the namespace of the function that is being aggregated. """ - result = _create_aggregate_by_group_functions( - functions=functions, - inputs=inputs, - targets=targets, + result = create_agg_by_group_functions( + ttsim_functions_with_time_conversions=functions, data=data, - aggregations_from_environment=aggregations_from_environment, - top_level_namespace=top_level_namespace, - supported_groupings=("hh",), + targets=targets, + groupings=("hh",), ) assert expected in result -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "group_by_id", - "functions", - "inputs", - "top_level_namespace", - "expected_start_date", - "expected_end_date", - ), - [ - ( - "x_hh", - AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), - "hh_id", - {}, - {"x": x}, - ["x", "x_hh", "hh_id"], - DEFAULT_START_DATE, - DEFAULT_END_DATE, - ), - ( - "x_hh", - AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), - "hh_id", - {"x": policy_function(leaf_name="x")(lambda x: x)}, - {}, - ["x", "x_hh", "hh_id"], - DEFAULT_START_DATE, - DEFAULT_END_DATE, - ), - ( - "x_hh", - AggregateByGroupSpec(target="x_hh", source="x", agg=AggregationType.SUM), - "hh_id", - { - "x": policy_function( - leaf_name="x", start_date="2025-01-01", end_date="2025-12-31" - )(lambda x: x) - }, - {}, - ["x", "x_hh", "hh_id"], - datetime.date.fromisoformat("2025-01-01"), - datetime.date.fromisoformat("2025-12-31"), - ), - ], -) -def test_aggregate_by_group_function_start_and_end_date( - aggregation_target, - aggregation_spec, - group_by_id, - functions, - inputs, - top_level_namespace, - expected_start_date, - expected_end_date, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="group", - group_by_id=group_by_id, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert result.start_date == expected_start_date - assert result.end_date == expected_end_date - - -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "functions", - "inputs", - "top_level_namespace", - "expected_start_date", - "expected_end_date", - ), - [ - ( - "bar", - AggregateByPIDSpec( - target="bar_hh", - source="x", - agg=AggregationType.SUM, - p_id_to_aggregate_by="foreign_id_col", - ), - {"x": policy_function(leaf_name="x")(lambda x: x)}, - {}, - ["x", "bar", "foreign_id_col"], - DEFAULT_START_DATE, - DEFAULT_END_DATE, - ), - ( - "bar", - AggregateByPIDSpec( - target="bar_hh", - source="x", - agg=AggregationType.SUM, - p_id_to_aggregate_by="foreign_id_col", - ), - {}, - {"x": x}, - ["x", "bar", "foreign_id_col"], - DEFAULT_START_DATE, - DEFAULT_END_DATE, - ), - ( - "bar", - AggregateByPIDSpec( - target="bar_hh", - source="x", - agg=AggregationType.SUM, - p_id_to_aggregate_by="foreign_id_col", - ), - { - "x": policy_function( - leaf_name="x", start_date="2025-01-01", end_date="2025-12-31" - )(lambda x: x) - }, - {}, - ["x", "bar", "foreign_id_col"], - datetime.date.fromisoformat("2025-01-01"), - datetime.date.fromisoformat("2025-12-31"), - ), - ], -) -def test_aggregate_by_p_id_function_start_and_end_date( - aggregation_target, - aggregation_spec, - functions, - inputs, - top_level_namespace, - expected_start_date, - expected_end_date, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="p_id", - group_by_id=None, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert result.start_date == expected_start_date - assert result.end_date == expected_end_date - - -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "functions", - "inputs", - "group_by_id", - "top_level_namespace", - "expected_arg_names", - ), - [ - ( - "foo_hh", - AggregateByGroupSpec( - target="foo_hh", source=None, agg=AggregationType.COUNT - ), - {"foo": policy_function(leaf_name="foo")(lambda x: x)}, - {}, - "hh_id", - ["foo", "hh_id"], - ["hh_id"], - ), - ( - "foo_hh", - AggregateByGroupSpec( - target="foo_hh", source="foo", agg=AggregationType.SUM - ), - {"foo": policy_function(leaf_name="foo")(lambda x: x)}, - {}, - "hh_id", - ["foo", "hh_id"], - ["hh_id", "foo"], - ), - ( - "foo__bar_hh", - AggregateByGroupSpec( - target="foo__bar_hh", source="bar", agg=AggregationType.SUM - ), - {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, - {}, - "hh_id", - ["foo", "hh_id"], - ["hh_id", "foo__bar"], - ), - ], -) -def test_function_arguments_are_namespaced_for_derived_group_funcs( - aggregation_target, - aggregation_spec, - functions, - inputs, - group_by_id, - top_level_namespace, - expected_arg_names, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="group", - group_by_id=group_by_id, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert all( - arg_name in inspect.signature(result).parameters - for arg_name in expected_arg_names - ) - - -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "functions", - "inputs", - "group_by_id", - "top_level_namespace", - "expected_arg_names", - ), - [ - ( - "foo", - AggregateByPIDSpec( - target="foo_hh", - agg=AggregationType.SUM, - source="bar", - p_id_to_aggregate_by="foreign_id_col", - ), - {"bar": policy_function(leaf_name="bar")(lambda x: x)}, - {}, - "foreign_id_col", - ["foo", "foreign_id_col", "bar"], - ["foreign_id_col", "bar"], - ), - ( - "foo__fünc", - AggregateByPIDSpec( - target="foo_hh", - agg=AggregationType.SUM, - source="bär", - p_id_to_aggregate_by="foreign_id_col", - ), - {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, - {}, - "foreign_id_col", - ["foo", "foreign_id_col"], - ["foreign_id_col", "foo__bär"], - ), - ( - "foo", - AggregateByPIDSpec( - target="foo_hh", - agg=AggregationType.SUM, - source="x", - p_id_to_aggregate_by="foreign_id_col", - ), - {}, - {"x": x}, - "foreign_id_col", - ["foo", "foreign_id_col", "x"], - ["foreign_id_col", "x"], - ), - ], -) -def test_function_arguments_are_namespaced_for_derived_p_id_funcs( - aggregation_target, - aggregation_spec, - functions, - inputs, - group_by_id, - top_level_namespace, - expected_arg_names, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="p_id", - group_by_id=group_by_id, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert all( - arg_name in inspect.signature(result).parameters - for arg_name in expected_arg_names - ) - - -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "functions", - "inputs", - "group_by_id", - "top_level_namespace", - "source_col_name", - ), - [ - ( - "foo_hh", - AggregateByGroupSpec( - target="foo_hh", agg=AggregationType.SUM, source="foo" - ), - {}, - {"foo": policy_function(leaf_name="foo")(lambda x: x)}, - "hh_id", - ["foo", "hh_id"], - "foo", - ), - ( - "foo__bar_hh", - AggregateByGroupSpec( - target="bar_hh", agg=AggregationType.SUM, source="bar" - ), - {}, - {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, - "hh_id", - ["foo", "hh_id"], - "foo__bar", - ), - ], -) -def test_source_column_name_of_aggregate_by_group_func_is_qualified( - aggregation_target, - aggregation_spec, - functions, - inputs, - group_by_id, - top_level_namespace, - source_col_name, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="group", - group_by_id=group_by_id, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert result.source == source_col_name - - -@pytest.mark.parametrize( - ( - "aggregation_target", - "aggregation_spec", - "functions", - "inputs", - "top_level_namespace", - "source_col_name", - ), - [ - ( - "foo", - AggregateByPIDSpec( - target="foo_hh", - agg=AggregationType.SUM, - source="bar", - p_id_to_aggregate_by="foreign_id_col", - ), - {}, - {"bar": policy_function(leaf_name="bar")(lambda x: x)}, - ["foo", "foreign_id_col", "bar"], - "bar", - ), - ( - "foo__fünc", - AggregateByPIDSpec( - target="foo_hh", - agg=AggregationType.SUM, - source="bär", - p_id_to_aggregate_by="foreign_id_col", - ), - {}, - {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, - ["foo", "foreign_id_col"], - "foo__bär", - ), - ], -) -def test_source_column_name_of_aggregate_by_p_id_func_is_qualified( - aggregation_target, - aggregation_spec, - functions, - inputs, - top_level_namespace, - source_col_name, -): - result = _create_one_aggregation_function( - aggregation_target=aggregation_target, - aggregation_spec=aggregation_spec, - aggregation_type="p_id", - group_by_id=None, - functions=functions, - inputs=inputs, - top_level_namespace=top_level_namespace, - ) - assert result.source == source_col_name - - -@pytest.mark.parametrize( - ( - "target_name", - "top_level_namespace", - "expected", - ), - [ - ( - "arbeitslosengeld_2__vermögen_bg", - {"vermögen", "arbeitslosengeld_2"}, - "vermögen", - ), - ( - "arbeitslosengeld_2__vermögen_bg", - {"arbeitslosengeld_2"}, - "arbeitslosengeld_2__vermögen", - ), - ], -) -def test_get_name_of_aggregation_source(target_name, top_level_namespace, expected): - assert ( - _get_name_of_aggregation_source( - target_name=target_name, - top_level_namespace=top_level_namespace, - ) - == expected - ) +# @pytest.mark.parametrize( +# ( +# "aggregation_target", +# "aggregation_spec", +# "functions", +# "policy_inputs", +# "group_by_id", +# "top_level_namespace", +# "expected_arg_names", +# ), +# [ +# ( +# "foo", +# AggregateByPIDSpec( +# target="foo_hh", +# agg=AggType.SUM, +# source="bar", +# p_id_to_aggregate_by="foreign_id_col", +# ), +# {"bar": policy_function(leaf_name="bar")(lambda x: x)}, +# {}, +# "foreign_id_col", +# ["foo", "foreign_id_col", "bar"], +# ["foreign_id_col", "bar"], +# ), +# ( +# "foo__fünc", +# AggregateByPIDSpec( +# target="foo_hh", +# agg=AggType.SUM, +# source="bär", +# p_id_to_aggregate_by="foreign_id_col", +# ), +# {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, +# {}, +# "foreign_id_col", +# ["foo", "foreign_id_col"], +# ["foreign_id_col", "foo__bär"], +# ), +# ( +# "foo", +# AggregateByPIDSpec( +# target="foo_hh", +# agg=AggType.SUM, +# source="x", +# p_id_to_aggregate_by="foreign_id_col", +# ), +# {}, +# {"x": x}, +# "foreign_id_col", +# ["foo", "foreign_id_col", "x"], +# ["foreign_id_col", "x"], +# ), +# ], +# ) +# def test_function_arguments_are_namespaced_for_derived_p_id_funcs( +# aggregation_target, +# aggregation_spec, +# functions, +# policy_inputs, +# group_by_id, +# top_level_namespace, +# expected_arg_names, +# ): +# result = _create_one_aggregation_function( +# aggregation_target=aggregation_target, +# aggregation_spec=aggregation_spec, +# aggregation_type="p_id", +# group_by_id=group_by_id, +# functions=functions, +# policy_inputs=policy_inputs, +# top_level_namespace=top_level_namespace, +# ) +# assert all( +# arg_name in inspect.signature(result).parameters +# for arg_name in expected_arg_names +# ) + + +# @pytest.mark.parametrize( +# ( +# "aggregation_target", +# "aggregation_spec", +# "functions", +# "policy_inputs", +# "group_by_id", +# "top_level_namespace", +# "source_col_name", +# ), +# [ +# ( +# "foo_hh", +# AggregateByGroupSpec(target="foo_hh", agg=AggType.SUM, source="foo"), +# {}, +# {"foo": policy_function(leaf_name="foo")(lambda x: x)}, +# "hh_id", +# ["foo", "hh_id"], +# "foo", +# ), +# ( +# "foo__bar_hh", +# AggregateByGroupSpec(target="bar_hh", agg=AggType.SUM, source="bar"), +# {}, +# {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, +# "hh_id", +# ["foo", "hh_id"], +# "foo__bar", +# ), +# ], +# ) +# def test_source_column_name_of_aggregate_by_group_func_is_qualified( +# aggregation_target, +# aggregation_spec, +# functions, +# policy_inputs, +# group_by_id, +# top_level_namespace, +# source_col_name, +# ): +# result = _create_one_aggregation_function( +# aggregation_target=aggregation_target, +# aggregation_spec=aggregation_spec, +# aggregation_type="group", +# group_by_id=group_by_id, +# functions=functions, +# policy_inputs=policy_inputs, +# top_level_namespace=top_level_namespace, +# ) +# assert result.source == source_col_name + + +# @pytest.mark.parametrize( +# ( +# "aggregation_target", +# "aggregation_spec", +# "functions", +# "policy_inputs", +# "top_level_namespace", +# "source_col_name", +# ), +# [ +# ( +# "foo", +# AggregateByPIDSpec( +# target="foo_hh", +# agg=AggType.SUM, +# source="bar", +# p_id_to_aggregate_by="foreign_id_col", +# ), +# {}, +# {"bar": policy_function(leaf_name="bar")(lambda x: x)}, +# ["foo", "foreign_id_col", "bar"], +# "bar", +# ), +# ( +# "foo__fünc", +# AggregateByPIDSpec( +# target="foo_hh", +# agg=AggType.SUM, +# source="bär", +# p_id_to_aggregate_by="foreign_id_col", +# ), +# {}, +# {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, +# ["foo", "foreign_id_col"], +# "foo__bär", +# ), +# ], +# ) +# def test_source_column_name_of_aggregate_by_p_id_func_is_qualified( +# aggregation_target, +# aggregation_spec, +# functions, +# policy_inputs, +# top_level_namespace, +# source_col_name, +# ): +# result = _create_one_aggregation_function( +# aggregation_target=aggregation_target, +# aggregation_spec=aggregation_spec, +# aggregation_type="p_id", +# group_by_id=None, +# functions=functions, +# policy_inputs=policy_inputs, +# top_level_namespace=top_level_namespace, +# ) +# assert result.source == source_col_name diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index a1d1968eef..228440c941 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -6,12 +6,13 @@ import numpy import pandas as pd import pytest -from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS -from ttsim.aggregation import AggregateByGroupSpec, AggregateByPIDSpec, AggregationType +from ttsim.aggregation import AggType from ttsim.compute_taxes_and_transfers import ( FunctionsAndColumnsOverlapWarning, - _fail_if_foreign_keys_are_invalid, + _fail_if_foreign_keys_are_invalid_in_data, + _fail_if_group_ids_are_outside_top_level_namespace, _fail_if_group_variables_not_constant_within_groups, _fail_if_p_id_is_non_unique, _get_top_level_namespace, @@ -19,9 +20,15 @@ compute_taxes_and_transfers, ) from ttsim.config import numpy_or_jax as np -from ttsim.function_types import group_by_function, policy_function, policy_input -from ttsim.policy_environment import PolicyEnvironment -from ttsim.shared import assert_valid_ttsim_pytree +from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment +from ttsim.shared import assert_valid_ttsim_pytree, merge_trees +from ttsim.ttsim_objects import ( + agg_by_group_function, + agg_by_p_id_function, + group_creation_function, + policy_function, + policy_input, +) @policy_input() @@ -30,7 +37,12 @@ def p_id() -> int: @policy_input() -def hh_id() -> int: +def p_id_someone_else() -> int: + pass + + +@policy_input() +def fam_id() -> int: pass @@ -44,21 +56,35 @@ def minimal_input_data(): n_individuals = 5 out = { "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "hh_id": pd.Series(numpy.arange(n_individuals), name="hh_id"), + "fam_id": pd.Series(numpy.arange(n_individuals), name="fam_id"), } return out @pytest.fixture(scope="module") -def minimal_input_data_shared_hh(): +def minimal_input_data_shared_fam(): n_individuals = 3 out = { "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "hh_id": pd.Series([0, 0, 1], name="hh_id"), + "fam_id": pd.Series([0, 0, 1], name="fam_id"), + "p_id_someone_else": pd.Series([1, 0, -1], name="p_id_someone_else"), } return out +@agg_by_group_function(agg_type=AggType.SUM) +def foo_fam(foo: int, fam_id: int) -> int: + pass + + +@pytest.fixture(scope="module") +def mettsim_environment(): + return set_up_policy_environment( + resource_dir=RESOURCE_DIR, + date="2025-01-01", + ) + + # Create a function which is used by some tests below @policy_function() def func_before_partial(arg_1, payroll_tax_params): @@ -85,8 +111,7 @@ def test_output_as_tree(minimal_input_data): data_tree=minimal_input_data, environment=environment, targets_tree={"module": {"test_func": None}}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) assert isinstance(out, dict) @@ -109,8 +134,7 @@ def test_warn_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"some_target": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -127,8 +151,7 @@ def test_dont_warn_if_functions_and_columns_dont_overlap(): }, environment=environment, targets_tree={"some_func": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -151,15 +174,14 @@ def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"unique": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) assert len(warning_list) == 0 def test_fail_if_p_id_does_not_exist(): - data = {"hh_id": pd.Series(data=numpy.arange(8), name="hh_id")} + data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} with pytest.raises(ValueError): _fail_if_p_id_is_non_unique(data) @@ -172,50 +194,59 @@ def test_fail_if_p_id_is_non_unique(): _fail_if_p_id_is_non_unique(data) -@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_non_existing_p_id(foreign_key_path): - foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) +def test_fail_if_foreign_key_points_to_non_existing_p_id(mettsim_environment): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) data = { - foreign_key_name: pd.Series([0, 1, 4]), "p_id": pd.Series([1, 2, 3]), + "p_id_spouse": pd.Series([0, 1, 2]), } with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): - _fail_if_foreign_keys_are_invalid( - data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS + _fail_if_foreign_keys_are_invalid_in_data( + data=data, ttsim_objects=flat_objects_tree ) -@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) -def test_allow_minus_one_as_foreign_key(foreign_key_path): - foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) +def test_allow_minus_one_as_foreign_key(mettsim_environment): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) data = { - foreign_key_name: pd.Series([-1, 1, 2]), "p_id": pd.Series([1, 2, 3]), + "p_id_spouse": pd.Series([-1, 1, 2]), } - _fail_if_foreign_keys_are_invalid( - data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS + _fail_if_foreign_keys_are_invalid_in_data( + data=data, ttsim_objects=flat_objects_tree ) -@pytest.mark.parametrize("foreign_key_path", FOREIGN_KEYS) -def test_fail_if_foreign_key_points_to_p_id_of_same_row(foreign_key_path): - foreign_key_name = dt.qual_name_from_tree_path(foreign_key_path) +def test_fail_if_foreign_key_points_to_same_row_if_not_allowed(mettsim_environment): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) data = { - foreign_key_name: pd.Series([1, 3, 3]), "p_id": pd.Series([1, 2, 3]), + "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), } - with pytest.raises(ValueError, match="are equal to the p_id"): - _fail_if_foreign_keys_are_invalid( - data=data, p_id=data["p_id"], foreign_keys=FOREIGN_KEYS - ) + _fail_if_foreign_keys_are_invalid_in_data( + data=data, ttsim_objects=flat_objects_tree + ) + + +def test_fail_if_foreign_key_points_to_same_row_if_allowed(mettsim_environment): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) + data = { + "p_id": pd.Series([1, 2, 3]), + "p_id_child_": pd.Series([1, 3, 3]), + } + + _fail_if_foreign_keys_are_invalid_in_data( + data=data, ttsim_objects=flat_objects_tree + ) @pytest.mark.parametrize( "data, functions", [ + # Remove this one once we got rid of the hh_id hack ( { "foo_hh": pd.Series([1, 2, 2], name="foo_hh"), @@ -229,7 +260,7 @@ def test_fail_if_foreign_key_points_to_p_id_of_same_row(foreign_key_path): "fam_id": pd.Series([1, 1, 2], name="fam_id"), }, { - "fam_id": group_by_function()(lambda x: x), + "fam_id": group_creation_function()(lambda x: x), }, ), ], @@ -239,7 +270,7 @@ def test_fail_if_group_variables_not_constant_within_groups(data, functions): _fail_if_group_variables_not_constant_within_groups( data=data, functions=functions, - supported_groupings=SUPPORTED_GROUPINGS, + groupings=SUPPORTED_GROUPINGS, ) @@ -265,8 +296,7 @@ def c(b): data_tree=minimal_input_data, environment=environment, targets_tree={"c": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -284,8 +314,7 @@ def b(a): data_tree=minimal_input_data, environment=environment, targets_tree={"b": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -302,13 +331,12 @@ def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions data_tree=minimal_input_data, environment=environment, targets_tree={"unknown_target": None}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) def test_fail_if_missing_p_id(): - data = {"hh_id": pd.Series([1, 2, 3], name="hh_id")} + data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} with pytest.raises( ValueError, match="The input data must contain the p_id", @@ -317,8 +345,7 @@ def test_fail_if_missing_p_id(): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -334,8 +361,7 @@ def test_fail_if_non_unique_p_id(minimal_input_data): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + groupings=("fam",), ) @@ -359,7 +385,7 @@ def test_partial_parameters_to_functions_removes_argument(): def test_user_provided_aggregate_by_group_specs(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), + "fam_id": pd.Series([1, 1, 2], name="fam_id"), "module_name": { "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), }, @@ -367,212 +393,179 @@ def test_user_provided_aggregate_by_group_specs(): inputs = { "p_id": p_id, - "hh_id": hh_id, + "fam_id": fam_id, "module_name": { "betrag_m": betrag_m, }, } - aggregation_specs_tree = { - "module_name": ( - AggregateByGroupSpec( - target="betrag_m_hh", - source="betrag_m", - agg=AggregationType.SUM, - ), - ) - } expected_res = pd.Series([200, 200, 100]) out = compute_taxes_and_transfers( data_tree=data, - environment=PolicyEnvironment( - raw_objects_tree=inputs, aggregation_specs_tree=aggregation_specs_tree - ), - targets_tree={"module_name": {"betrag_m_hh": None}}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + environment=PolicyEnvironment(raw_objects_tree=inputs), + targets_tree={"module_name": {"betrag_m_fam": None}}, + groupings=("fam",), ) numpy.testing.assert_array_almost_equal( - out["module_name"]["betrag_m_hh"], expected_res + out["module_name"]["betrag_m_fam"], expected_res ) -@pytest.mark.parametrize( - "aggregation_specs_tree", - [ - { - "module_name": { - "betrag_double_m_hh": AggregateByGroupSpec( - target="betrag_double_m_hh", - source="betrag_m_double", - agg=AggregationType.MAX, - ), - } - }, - ], -) -def test_user_provided_aggregate_by_group_specs_function(aggregation_specs_tree): +def test_user_provided_aggregation(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), + "fam_id": pd.Series([1, 1, 2], name="fam_id"), "module_name": { "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), }, } - expected_res = pd.Series([400, 400, 200]) + # Double up, then take max fam_id + expected = pd.Series([400, 400, 200]) @policy_function() def betrag_m_double(betrag_m): return 2 * betrag_m + @agg_by_group_function(agg_type=AggType.MAX) + def betrag_m_double_fam(betrag_m_double, fam_id) -> float: + pass + environment = PolicyEnvironment( { "p_id": p_id, - "hh_id": hh_id, + "fam_id": fam_id, "module_name": { - "betrag_m_double": policy_function(leaf_name="betrag_m_double")( - betrag_m_double - ) + "betrag_m_double": betrag_m_double, + "betrag_m_double_fam": betrag_m_double_fam, }, - }, - aggregation_specs_tree=aggregation_specs_tree, + } ) - out = compute_taxes_and_transfers( + + actual = compute_taxes_and_transfers( data_tree=data, environment=environment, - targets_tree={"module_name": {"betrag_double_m_hh": None}}, - foreign_keys=FOREIGN_KEYS, - supported_groupings=("hh",), + targets_tree={"module_name": {"betrag_m_double_fam": None}}, + groupings=("fam",), + debug=True, ) numpy.testing.assert_array_almost_equal( - out["module_name"]["betrag_double_m_hh"], expected_res + actual["module_name"]["betrag_m_double_fam"], expected ) -def test_aggregate_by_group_specs_missing_group_suffix(): +def test_user_provided_aggregation_with_time_conversion(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), + "fam_id": pd.Series([1, 1, 2], name="fam_id"), "module_name": { - "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), + "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), }, } - aggregation_specs_tree = { - "module_name": { - "betrag_agg_m": AggregateByGroupSpec( - target="betrag_agg_m", - source="betrag_m", - agg=AggregationType.SUM, - ) + # Double up, convert to quarter, then take max fam_id + expected = pd.Series([400 * 3, 400 * 3, 200 * 3]) + + @policy_function() + def betrag_double_m(betrag_m): + return 2 * betrag_m + + @agg_by_group_function(agg_type=AggType.MAX) + def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: + pass + + environment = PolicyEnvironment( + { + "p_id": p_id, + "fam_id": fam_id, + "module_name": { + "betrag_double_m": betrag_double_m, + "max_betrag_double_m_fam": max_betrag_double_m_fam, + }, } - } - with pytest.raises( - ValueError, - match="Name of aggregated column needs to have a suffix", - ): - compute_taxes_and_transfers( - data, - PolicyEnvironment({}, aggregation_specs_tree=aggregation_specs_tree), - targets_tree={"module_name": {"betrag_agg_m": None}}, - supported_groupings=("hh",), - foreign_keys=FOREIGN_KEYS, - ) + ) + actual = compute_taxes_and_transfers( + data_tree=data, + environment=environment, + targets_tree={"module_name": {"betrag_double_q_fam": None}}, + groupings=("fam",), + debug=True, + ) -def test_aggregate_by_group_specs_agg_not_impl(): - with pytest.raises( - TypeError, - match="agg must be of type AggregationType, not <class 'str'>", - ): - AggregateByGroupSpec( - target="betrag_agg_m", - source="betrag_m", - agg="sum", - ) + numpy.testing.assert_array_almost_equal( + actual["module_name"]["max_betrag_double_q_fam"], expected + ) + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def sum_source_by_p_id_someone_else( + source: int, p_id: int, p_id_someone_else: int +) -> int: + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def sum_source_m_by_p_id_someone_else( + source_m: int, p_id: int, p_id_someone_else: int +) -> int: + pass @pytest.mark.parametrize( - ("aggregation_specs_tree, leaf_name, target_tree, expected"), + ("agg_functions, leaf_name, target_tree, expected"), [ ( { "module": { - "target_func": AggregateByPIDSpec( - target="target_func", - p_id_to_aggregate_by="hh_id", - source="source_func", - agg=AggregationType.SUM, - ) + "sum_source_by_p_id_someone_else": sum_source_by_p_id_someone_else } }, - "source_func", - {"module": {"target_func": None}}, + "source", + {"module": {"sum_source_by_p_id_someone_else": None}}, pd.Series([200, 100, 0]), ), ( { "module": { - "target_func_m": AggregateByPIDSpec( - target="target_func_m", - p_id_to_aggregate_by="hh_id", - source="source_func_m", - agg=AggregationType.SUM, - ) + "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else } }, - "source_func_m", - {"module": {"target_func_y": None}}, - pd.Series([2400, 1200, 0]), - ), - ( - { - "module": { - "target_func_m": AggregateByPIDSpec( - target="target_func_m", - p_id_to_aggregate_by="hh_id", - source="source_func_m", - agg=AggregationType.SUM, - ) - } - }, - "source_func_m", - {"module": {"target_func_y_hh": None}}, - pd.Series([3600, 3600, 0]), + "source_m", + {"module": {"sum_source_m_by_p_id_someone_else": None}}, + pd.Series([200, 100, 0]), ), ], ) def test_user_provided_aggregate_by_p_id_specs( - aggregation_specs_tree, + agg_functions, leaf_name, target_tree, expected, - minimal_input_data_shared_hh, + minimal_input_data_shared_fam, ): # TODO(@MImmesberger): Remove fake dependency. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - @policy_function(leaf_name=leaf_name) - def source_func(p_id: int) -> int: # noqa: ARG001 - return 100 - - functions_tree = { - "module": {leaf_name: source_func}, - "p_id": p_id, - "hh_id": hh_id, - } + @policy_function(leaf_name=leaf_name, vectorization_strategy="not_required") + def source(p_id: int) -> int: # noqa: ARG001 + return np.array([100, 200, 300]) - environment = PolicyEnvironment( - functions_tree, - aggregation_specs_tree=aggregation_specs_tree, + raw_objects_tree = merge_trees( + agg_functions, + { + "module": {leaf_name: source}, + "p_id": p_id, + "p_id_someone_else": p_id_someone_else, + }, ) + + environment = PolicyEnvironment(raw_objects_tree=raw_objects_tree) out = compute_taxes_and_transfers( - minimal_input_data_shared_hh, + minimal_input_data_shared_fam, environment, targets_tree=target_tree, - supported_groupings=("hh",), - foreign_keys=FOREIGN_KEYS, + groupings=("fam",), )["module"][next(iter(target_tree["module"].keys()))] numpy.testing.assert_array_almost_equal(out, expected) @@ -708,9 +701,9 @@ def source_func(p_id: int) -> int: # noqa: ARG001 # "data, functions_overridden, error_match", # [ # ( -# {"hh_id": pd.Series([1, 1.1, 2])}, +# {"fam_id": pd.Series([1, 1.1, 2])}, # {}, -# "- hh_id: Conversion from input type float64 to int", +# "- fam_id: Conversion from input type float64 to int", # ), # ( # {"gondorian": pd.Series([1.1, 0.0, 1.0])}, @@ -719,7 +712,7 @@ def source_func(p_id: int) -> int: # noqa: ARG001 # ), # ( # { -# "hh_id": pd.Series([1.0, 2.0, 3.0]), +# "fam_id": pd.Series([1.0, 2.0, 3.0]), # "gondorian": pd.Series([2, 0, 1]), # }, # {}, @@ -732,11 +725,11 @@ def source_func(p_id: int) -> int: # noqa: ARG001 # ), # ( # { -# "hh_id": pd.Series([1, "1", 2]), +# "fam_id": pd.Series([1, "1", 2]), # "payroll_tax__amount": pd.Series(["2000", 3000, 4000]), # }, # {}, -# "- hh_id: Conversion from input type object to int failed.", +# "- fam_id: Conversion from input type object to int failed.", # ), # ], # ) @@ -780,8 +773,8 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): @pytest.mark.parametrize( ( "environment", - "supported_time_conversions", - "supported_groupings", + "time_units", + "groupings", "expected", ), [ @@ -789,45 +782,36 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): PolicyEnvironment( raw_objects_tree={ "foo_m": policy_function(leaf_name="foo_m")(lambda x: x) - }, - aggregation_specs_tree={}, - ), - ["m", "y"], - ["hh"], - {"foo_m", "foo_y", "foo_m_hh", "foo_y_hh"}, - ), - ( - PolicyEnvironment( - raw_objects_tree={"foo": policy_function(leaf_name="foo")(lambda x: x)}, - aggregation_specs_tree={}, + } ), ["m", "y"], - ["hh"], - {"foo", "foo_hh"}, + ("fam",), + {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, ), ( PolicyEnvironment( - raw_objects_tree={}, - aggregation_specs_tree={ - "foo_hh": AggregateByGroupSpec( - target="foo_hh", - source="foo", - agg=AggregationType.SUM, - ), - }, + raw_objects_tree={"foo": policy_function(leaf_name="foo")(lambda x: x)} ), ["m", "y"], - ["hh"], - {"foo", "foo_hh"}, + ("fam",), + {"foo", "foo_fam"}, ), ], ) -def test_get_top_level_namespace( - environment, supported_time_conversions, supported_groupings, expected -): +def test_get_top_level_namespace(environment, time_units, groupings, expected): result = _get_top_level_namespace( environment=environment, - supported_time_conversions=supported_time_conversions, - supported_groupings=supported_groupings, + time_units=time_units, + groupings=groupings, ) assert result == expected + + +def test_fail_if_group_ids_are_outside_top_level_namespace(): + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + _fail_if_group_ids_are_outside_top_level_namespace( + environment=PolicyEnvironment(raw_objects_tree={"n1": {"fam_id": fam_id}}), + groupings=("fam",), + ) diff --git a/tests/ttsim/test_config.py b/tests/ttsim/test_config.py deleted file mode 100644 index 25485600b0..0000000000 --- a/tests/ttsim/test_config.py +++ /dev/null @@ -1,40 +0,0 @@ -import importlib - -import pytest - -import ttsim - - -def test_default_backend(): - from ttsim.config import numpy_or_jax - - assert numpy_or_jax.__name__ == "numpy" - - -def test_set_backend(): - is_jax_installed = importlib.util.find_spec("jax") is not None - - # expect default backend - from ttsim.config import numpy_or_jax - - assert numpy_or_jax.__name__ == "numpy" - - if is_jax_installed: - # set jax backend - ttsim.config.set_array_backend("jax") - from ttsim.config import numpy_or_jax - - assert numpy_or_jax.__name__ == "jax.numpy" - - from ttsim.config import USE_JAX - - assert USE_JAX - else: - with pytest.raises(AssertionError): - ttsim.config.set_array_backend("jax") - - -@pytest.mark.parametrize("backend", ["dask", "jax.numpy"]) -def test_wrong_backend(backend): - with pytest.raises(ValueError): - ttsim.config.set_array_backend(backend) diff --git a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml new file mode 100644 index 0000000000..f2ab0c7802 --- /dev/null +++ b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml @@ -0,0 +1,44 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + age: + - 30 + - 30 + - 10 + gross_wage_y: + - 10000 + - 0 + - 0 +outputs: + sp_id: + - 0 + - 0 + - 1 + fam_id: + - 0 + - 0 + - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml new file mode 100644 index 0000000000..a5e42e38d2 --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml @@ -0,0 +1,47 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_m: + - 1500 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 0.0 + - 0.0 + housing_benefits__income__amount_m: + - 1052.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - false + - false diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml new file mode 100644 index 0000000000..bbca940c7b --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml @@ -0,0 +1,47 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_m: + - 800 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 281.0 + - 281.0 + housing_benefits__income__amount_m: + - 562.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml new file mode 100644 index 0000000000..93a799cd4e --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml @@ -0,0 +1,60 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_m: + - 1500 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 0.0 + - 0.0 + - 0.0 + housing_benefits__income__amount_m: + - 1055 + - 0.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - false + - false + - false diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml new file mode 100644 index 0000000000..212e308c05 --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml @@ -0,0 +1,60 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_m: + - 800 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 282.5 + - 282.5 + - 282.5 + housing_benefits__income__amount_m: + - 565 + - 0.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true + - true diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml new file mode 100644 index 0000000000..1b87b842e4 --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml @@ -0,0 +1,53 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_m: + - 1500 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 0.0 + - 0.0 + housing_benefits__income__amount_m: + - 1052.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - false + - false + housing_benefits__eligibility__number_of_family_members_considered_fam: + - 2 + - 2 + housing_benefits__eligibility__number_of_individuals_fam: + - 2 + - 2 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml new file mode 100644 index 0000000000..48aacdaddc --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml @@ -0,0 +1,53 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_m: + - 800 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 281.0 + - 281.0 + housing_benefits__income__amount_m: + - 562.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true + housing_benefits__eligibility__number_of_family_members_considered_fam: + - 2 + - 2 + housing_benefits__eligibility__number_of_individuals_fam: + - 2 + - 2 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml new file mode 100644 index 0000000000..60daa81ac1 --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml @@ -0,0 +1,68 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_m: + - 1500 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 527.5 + - 527.5 + - 527.5 + housing_benefits__income__amount_m: + - 1055 + - 0.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true + - true + housing_benefits__eligibility__number_of_family_members_considered_fam: + - 3 + - 3 + - 3 + housing_benefits__eligibility__number_of_individuals_fam: + - 3 + - 3 + - 3 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml new file mode 100644 index 0000000000..b34c71a70a --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml @@ -0,0 +1,68 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 0 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_m: + - 800 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 282.5 + - 282.5 + - 282.5 + housing_benefits__income__amount_m: + - 565 + - 0.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true + - true + housing_benefits__eligibility__number_of_family_members_considered_fam: + - 3 + - 3 + - 3 + housing_benefits__eligibility__number_of_individuals_fam: + - 3 + - 3 + - 3 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml new file mode 100644 index 0000000000..417b6cab4c --- /dev/null +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml @@ -0,0 +1,98 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + - 0 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + - 1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + - -1 + - -1 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + - 0 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + - 0 + - 0 + age: + - 30 + - 30 + - 10 + - 10 + - 10 + parent_is_noble: + - false + - false + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + housing_benefits__amount_m_fam: + - 296.5 + - 296.5 + - 296.5 + - 296.5 + - 296.5 + housing_benefits__income__amount_m: + - 593.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + housing_benefits__eligibility__requirement_fulfilled_fam: + - true + - true + - true + - true + - true + housing_benefits__eligibility__number_of_family_members_considered_fam: + - 4 + - 4 + - 4 + - 4 + - 4 + housing_benefits__eligibility__number_of_individuals_fam: + - 5 + - 5 + - 5 + - 5 + - 5 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml new file mode 100644 index 0000000000..719b875122 --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -0,0 +1,62 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 0.0 + - 0.0 +outputs: + payroll_tax__income__deductions_y: + - 100 + - 100.0 + payroll_tax__income__deductions_y_sp: + - 200 + - 200.0 + payroll_tax__income__amount_y: + - 9900 + - 0.0 + payroll_tax__income__amount_y_sp: + - 9900 + - 9900 + payroll_tax__amount_y: + - 2970 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml new file mode 100644 index 0000000000..5f501d98fe --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml @@ -0,0 +1,62 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble: + - false + - false + wealth: + - 100000.0 + - 100000.0 +outputs: + payroll_tax__income__deductions_y: + - 100 + - 100.0 + payroll_tax__income__deductions_y_sp: + - 200 + - 200.0 + payroll_tax__income__amount_y: + - 9900 + - 0.0 + payroll_tax__income__amount_y_sp: + - 9900 + - 9900 + payroll_tax__amount_y: + - 1485.0 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml new file mode 100644 index 0000000000..cc1b53cb11 --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml @@ -0,0 +1,62 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + p_id_parent_2: + - -1 + - -1 + p_id_spouse: + - 1 + - 0 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + age: + - 30 + - 30 + parent_is_noble_fam: + - true + - true + wealth: + - 0.0 + - 0.0 +outputs: + payroll_tax__income__deductions_y: + - 100 + - 100.0 + payroll_tax__income__deductions_y_sp: + - 200 + - 200.0 + payroll_tax__income__amount_y: + - 9900 + - 0.0 + payroll_tax__income__amount_y_sp: + - 9900 + - 9900 + payroll_tax__amount_y: + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml new file mode 100644 index 0000000000..c0e86898a0 --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml @@ -0,0 +1,76 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + payroll_tax__income__deductions_y: + - 200 + - 100.0 + - 100.0 + payroll_tax__income__amount_y: + - 9800 + - 0.0 + - 0.0 + payroll_tax__amount_y: + - 2940 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + payroll_tax__child_tax_credit__amount_m: + - 8.333333 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + - true + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false + - true diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml new file mode 100644 index 0000000000..6546f84a4d --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml @@ -0,0 +1,80 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + hh_id: + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + payroll_tax__income__gross_wage_m: + - 833.333333 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + age: + - 30 + - 30 + - 10 + parent_is_noble: + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 +outputs: + payroll_tax__income__deductions_y: + - 200 + - 100.0 + - 100.0 + payroll_tax__income__amount_y: + - 9800 + - 0.0 + - 0.0 + payroll_tax__income__amount_y_sp: + - 9800 + - 9800 + - 0.0 + payroll_tax__amount_y: + - 2940 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + payroll_tax__child_tax_credit__amount_m: + - 8.333333 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + - true + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false + - true diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml new file mode 100644 index 0000000000..12b4ae5479 --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml @@ -0,0 +1,110 @@ +--- +info: + note: '' + precision: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 + hh_id: + - 0 + - 0 + - 0 + - 0 + - 0 + p_id_parent_1: + - -1 + - -1 + - 0 + - 0 + - 0 + p_id_parent_2: + - -1 + - -1 + - 1 + - 1 + - 1 + p_id_spouse: + - 1 + - 0 + - -1 + - -1 + - -1 + payroll_tax__income__gross_wage_y: + - 10000 + - 0 + - 0 + - 0 + - 0 + payroll_tax__child_tax_credit__p_id_recipient: + - -1 + - -1 + - 0 + - 0 + - 0 + age: + - 30 + - 30 + - 10 + - 10 + - 10 + parent_is_noble: + - false + - false + - false + - false + - false + wealth: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + payroll_tax__income__deductions_y: + - 400 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + payroll_tax__income__amount_y: + - 9600 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + payroll_tax__amount_y: + - 2880.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + - 100.0 + - 100.0 + payroll_tax__child_tax_credit__amount_m: + - 25.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + payroll_tax__child_tax_credit__child_eligible: + - false + - false + - true + - true + - true + payroll_tax__child_tax_credit__in_same_household_as_recipient: + - false + - false + - true + - true + - true diff --git a/tests/ttsim/test_dates_active.py b/tests/ttsim/test_dates_active.py index 753f02aa2d..47fe612750 100644 --- a/tests/ttsim/test_dates_active.py +++ b/tests/ttsim/test_dates_active.py @@ -2,11 +2,11 @@ import pytest -from ttsim.function_types import policy_function from ttsim.loader import ( ConflictingTimeDependentObjectsError, _fail_if_multiple_ttsim_objects_are_active_at_the_same_time, ) +from ttsim.ttsim_objects import policy_function # Start date ----------------------------------------------- @@ -123,6 +123,10 @@ def test_func(): # Conflicts ------------------------------------------------ +def identity(x): + return x + + @pytest.mark.parametrize( "functions", [ @@ -131,24 +135,24 @@ def test_func(): start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), policy_function( start_date="2023-02-01", end_date="2023-02-28", leaf_name="f", - )(lambda x: x), + )(identity), ], [ policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), policy_function( start_date="2023-01-01", end_date="2023-02-28", leaf_name="g", - )(lambda x: x), + )(identity), ], ], ) @@ -166,36 +170,36 @@ def test_dates_active_no_conflicts(functions): start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), ], [ policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), policy_function( start_date="2021-01-02", end_date="2023-02-01", leaf_name="f", - )(lambda x: x), + )(identity), ], [ policy_function( start_date="2023-01-02", end_date="2023-02-01", leaf_name="f", - )(lambda x: x), + )(identity), policy_function( start_date="2022-01-01", end_date="2023-01-31", leaf_name="f", - )(lambda x: x), + )(identity), ], ], ) diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 54d3048c03..0b4afa2f8e 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -8,12 +8,11 @@ from _gettsim.config import ( RESOURCE_DIR, ) -from ttsim.loader import ( - load_aggregation_specs_tree, - load_objects_tree_for_date, -) +from ttsim.loader import load_objects_tree_for_date from ttsim.shared import remove_group_suffix +SUPPORTED_GROUPINGS = ("hh", "sp", "fam") + def _nice_output_list_of_strings(list_of_strings): my_str = "\n".join(sorted(list_of_strings)) @@ -31,11 +30,6 @@ def all_function_names(): return sorted([func.leaf_name for func in functions]) -@pytest.fixture(scope="module") -def aggregation_dict(): - return load_aggregation_specs_tree() - - @pytest.fixture(scope="module") def time_indep_function_names(all_function_names): time_dependent_functions = {} @@ -65,7 +59,6 @@ def test_all_input_vars_documented( default_input_variables, time_indep_function_names, all_function_names, - aggregation_dict, ): """Test if arguments of all non-internal functions are either the name of another function, a documented input variable, or a parameter dictionary.""" @@ -82,16 +75,16 @@ def test_all_input_vars_documented( # Remove duplicates arguments = list(dict.fromkeys(arguments)) defined_functions = ( - time_indep_function_names - + all_function_names - + default_input_variables - + list(aggregation_dict) + time_indep_function_names + all_function_names + default_input_variables ) check = [ c for c in arguments if (c not in defined_functions) - and (remove_group_suffix(c) not in defined_functions) + and ( + remove_group_suffix(c, groupings=SUPPORTED_GROUPINGS) + not in defined_functions + ) and (not c.endswith("_params")) ] @@ -130,7 +123,7 @@ def test_type_hints(): # noqa: PLR0912 types = {} for func in _load_internal_functions(): # noqa: F821 - if func.skip_vectorization: + if func.vectorization_strategy == "not_required": continue name = func.leaf_name diff --git a/tests/ttsim/test_function_types.py b/tests/ttsim/test_function_types.py deleted file mode 100644 index fe22edbe43..0000000000 --- a/tests/ttsim/test_function_types.py +++ /dev/null @@ -1,85 +0,0 @@ -import pytest - -from ttsim.function_types import ( - PolicyFunction, - PolicyInput, - policy_function, - policy_input, -) - -# ====================================================================================== -# PolicyFunction and policy_function -# ====================================================================================== - - -@policy_function() -def simple_policy_function(x): - return x - - -@policy_function(leaf_name="simple_policy_function") -def policy_function_with_internal_name(x): - return x - - -@policy_function(start_date="2007-01-01", end_date="2011-12-31") -def policy_function_with_dates(x): - return x - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_internal_name, - ], -) -def test_policy_function_type(function): - assert isinstance(function, PolicyFunction) - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_internal_name, - ], -) -def test_policy_function_name(function): - assert function.leaf_name == "simple_policy_function" - - -def test_policy_function_with_dates(): - assert str(policy_function_with_dates.start_date) == "2007-01-01" - assert str(policy_function_with_dates.end_date) == "2011-12-31" - - -# ====================================================================================== -# PolicyInput and policy_input -# ====================================================================================== - - -@policy_input() -def simple_policy_input() -> float: - pass - - -@policy_input(start_date="2007-01-01", end_date="2011-12-31") -def policy_input_with_dates() -> float: - pass - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_input, - policy_input_with_dates, - ], -) -def test_policy_input_type(function): - assert isinstance(function, PolicyInput) - - -def test_policy_input_with_dates(): - assert str(policy_input_with_dates.start_date) == "2007-01-01" - assert str(policy_input_with_dates.end_date) == "2011-12-31" diff --git a/tests/ttsim/test_jax_jit_kindergeld.py b/tests/ttsim/test_jax_jit_kindergeld.py new file mode 100644 index 0000000000..b9be8e9576 --- /dev/null +++ b/tests/ttsim/test_jax_jit_kindergeld.py @@ -0,0 +1,80 @@ +from pathlib import Path + +import dags.tree as dt +import pandas as pd +import pytest +from pandas.testing import assert_frame_equal + +from _gettsim.kindergeld.kindergeld import betrag_ohne_staffelung_m as betrag_m +from _gettsim_tests.utils import ( + cached_set_up_policy_environment, + load_policy_test_data, +) +from ttsim import compute_taxes_and_transfers +from ttsim.config import IS_JAX_INSTALLED + +if IS_JAX_INSTALLED: + import jax + +SRC = Path().parent.parent / "src" +TEST_DATA = SRC / "_gettsim_tests" / "test_data" + + +# ====================================================================================== +# Unit tests for each policy function +# ====================================================================================== + + +@pytest.mark.skipif(not IS_JAX_INSTALLED, reason="JAX is not installed") +def test_kindergeld_policy_func(): + policy_func = betrag_m + policy_func_jitted = jax.jit(policy_func) + + inputs = { + "anzahl_ansprüche": jax.numpy.array([1, 2, 3]), + # params are not vectorized over + "kindergeld_params": {"kindergeld": 250}, + } + policy_func_jitted(**inputs) + + +# ====================================================================================== +# End-to-end tests (for compute_taxes_and_transfers) +# ====================================================================================== + + +@pytest.fixture +def kindergeld_policy_test(): + name = "alleinerz_2_children_low_unterhalt.yaml" + kindergeld_2024 = load_policy_test_data("kindergeld/2024") + single_test = [ + test_data for test_data in kindergeld_2024 if test_data.path.name == name + ] + return single_test[1] # index=1 -> betrag_m + + +@pytest.mark.skipif(not IS_JAX_INSTALLED, reason="JAX is not installed") +def test_compute_taxes_and_transfers_kindergeld(kindergeld_policy_test): + test = kindergeld_policy_test + + environment = cached_set_up_policy_environment(date=test.date) + + result = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=test.target_structure, + jit=True, + ) + + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + + if flat_expected_output_tree: + result_dataframe = pd.DataFrame(flat_result) + expected_dataframe = pd.DataFrame(flat_expected_output_tree) + assert_frame_equal( + result_dataframe, + expected_dataframe, + atol=test.info["precision"], + check_dtype=False, + ) diff --git a/tests/ttsim/test_join.py b/tests/ttsim/test_join.py index eb623271fe..3c16275fe2 100644 --- a/tests/ttsim/test_join.py +++ b/tests/ttsim/test_join.py @@ -1,65 +1,50 @@ -import numpy import pytest -from ttsim.shared import join_numpy +from ttsim.config import numpy_or_jax as np +from ttsim.shared import join @pytest.mark.parametrize( "foreign_key, primary_key, target, value_if_foreign_key_is_missing, expected", [ ( - numpy.array([1, 2, 3]), - numpy.array([1, 2, 3]), - numpy.array(["a", "b", "c"]), - "d", - numpy.array(["a", "b", "c"]), + np.array([1, 2, 3]), + np.array([1, 2, 3]), + np.array([1, 2, 3]), + 4, + np.array([1, 2, 3]), ), ( - numpy.array([3, 2, 1]), - numpy.array([1, 2, 3]), - numpy.array(["a", "b", "c"]), - "d", - numpy.array(["c", "b", "a"]), + np.array([3, 2, 1]), + np.array([1, 2, 3]), + np.array([1, 2, 3]), + 4, + np.array([3, 2, 1]), ), ( - numpy.array([1, 1, 1]), - numpy.array([1, 2, 3]), - numpy.array(["a", "b", "c"]), - "d", - numpy.array(["a", "a", "a"]), + np.array([1, 1, 1]), + np.array([1, 2, 3]), + np.array([1, 2, 3]), + 4, + np.array([1, 1, 1]), ), ( - numpy.array([-1]), - numpy.array([1]), - numpy.array(["a"]), - "d", - numpy.array(["d"]), + np.array([-1]), + np.array([1]), + np.array([1]), + 4, + np.array([4]), ), ], ) -def test_join_numpy( - foreign_key: numpy.ndarray[int], - primary_key: numpy.ndarray[int], - target: numpy.ndarray[str], - value_if_foreign_key_is_missing: str, - expected: numpy.ndarray[str], +def test_join( + foreign_key: np.ndarray, + primary_key: np.ndarray, + target: np.ndarray, + value_if_foreign_key_is_missing: int, + expected: np.ndarray, ): - assert numpy.array_equal( - join_numpy(foreign_key, primary_key, target, value_if_foreign_key_is_missing), + assert np.array_equal( + join(foreign_key, primary_key, target, value_if_foreign_key_is_missing), expected, ) - - -def test_join_numpy_raises_duplicate_primary_key(): - with pytest.raises(ValueError, match="Duplicate primary keys:"): - join_numpy( - numpy.array([1, 1, 1]), - numpy.array([1, 1, 1]), - numpy.array(["a", "b", "c"]), - "default", - ) - - -def test_join_numpy_raises_invalid_foreign_key(): - with pytest.raises(ValueError, match="Invalid foreign keys:"): - join_numpy(numpy.array([2]), numpy.array([1]), numpy.array(["a"]), "d") diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index e6916fe5e5..d8143a694a 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -6,12 +6,12 @@ import pytest from mettsim.config import RESOURCE_DIR -from ttsim.function_types import _vectorize_func, policy_function from ttsim.loader import ( _convert_path_to_tree_path, _find_python_files_recursively, _load_module, ) +from ttsim.ttsim_objects import _vectorize_func, policy_function if TYPE_CHECKING: from collections.abc import Callable @@ -33,24 +33,27 @@ def test_dont_load_init_py(): def scalar_func(x: int) -> int: - return x * 2 + if x < 0: + return 0 + else: + return x * 2 -@policy_function(skip_vectorization=True) +@policy_function(vectorization_strategy="not_required") def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: - return numpy.asarray([xi * 2 for xi in x]) + return numpy.where(x < 0, 0, x * 2) @pytest.mark.parametrize( "vectorized_function", [ - _vectorize_func(scalar_func), + _vectorize_func(scalar_func, vectorization_strategy="loop"), already_vectorized_func, ], ) def test_vectorize_func(vectorized_function: Callable) -> None: assert numpy.array_equal( - vectorized_function(numpy.array([1, 2, 3])), numpy.array([2, 4, 6]) + vectorized_function(numpy.array([-1, 0, 2, 3])), numpy.array([0, 0, 4, 6]) ) diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index 5bc98c0545..a8579f6e35 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -11,11 +11,6 @@ import pytest from mettsim.config import RESOURCE_DIR -from ttsim.function_types import ( - GroupByFunction, - group_by_function, - policy_function, -) from ttsim.policy_environment import ( PolicyEnvironment, _fail_if_name_of_last_branch_element_not_leaf_name_of_function, @@ -23,6 +18,11 @@ load_objects_tree_for_date, set_up_policy_environment, ) +from ttsim.ttsim_objects import ( + GroupCreationFunction, + group_creation_function, + policy_function, +) if TYPE_CHECKING: from ttsim.typing import NestedTTSIMObjectDict @@ -30,9 +30,21 @@ YAML_PATH = Path(__file__).parent / "test_parameters" +def return_one(): + return 1 + + +def return_two(): + return 2 + + +def return_three(): + return 3 + + class TestPolicyEnvironment: def test_func_exists_in_tree(self): - function = policy_function(leaf_name="foo")(lambda: 1) + function = policy_function(leaf_name="foo")(return_one) environment = PolicyEnvironment({"foo": function}) assert environment.raw_objects_tree["foo"] == function @@ -46,17 +58,17 @@ def test_func_does_not_exist_in_tree(self): "environment", [ PolicyEnvironment({}, {}), - PolicyEnvironment({"foo": policy_function(leaf_name="foo")(lambda: 1)}), + PolicyEnvironment({"foo": policy_function(leaf_name="foo")(return_one)}), PolicyEnvironment( { - "foo": policy_function(leaf_name="foo")(lambda: 1), - "bar": policy_function(leaf_name="bar")(lambda: 2), + "foo": policy_function(leaf_name="foo")(return_one), + "bar": policy_function(leaf_name="bar")(return_two), } ), ], ) def test_upsert_functions(self, environment: PolicyEnvironment): - new_function = policy_function(leaf_name="foo")(lambda: 3) + new_function = policy_function(leaf_name="foo")(return_three) new_environment = environment.upsert_objects({"foo": new_function}) assert new_environment.raw_objects_tree["foo"] == new_function @@ -149,7 +161,7 @@ def test_load_functions_tree_for_date( @pytest.mark.parametrize( "functions_tree", [ - {"foo": policy_function(leaf_name="bar")(lambda: 1)}, + {"foo": policy_function(leaf_name="bar")(return_one)}, ], ) def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( @@ -161,7 +173,7 @@ def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( def test_dont_destroy_group_by_functions(): functions_tree = { - "foo": group_by_function()(lambda: 1), + "foo": group_creation_function()(return_one), } environment = PolicyEnvironment(functions_tree) - assert isinstance(environment.raw_objects_tree["foo"], GroupByFunction) + assert isinstance(environment.raw_objects_tree["foo"], GroupCreationFunction) diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index 9546601cc3..62d2e9832d 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -5,9 +5,9 @@ from ttsim.compute_taxes_and_transfers import ( compute_taxes_and_transfers, ) -from ttsim.function_types import policy_function, policy_input from ttsim.policy_environment import PolicyEnvironment from ttsim.rounding import RoundingSpec +from ttsim.ttsim_objects import policy_function, policy_input @policy_input() @@ -114,8 +114,7 @@ def test_func(x): data_tree=data, environment=environment, targets_tree={"namespace": {"test_func": None}}, - foreign_keys=((),), - supported_groupings=(), + groupings=(), ) assert_series_equal( pd.Series(calc_result["namespace"]["test_func"]), @@ -149,8 +148,7 @@ def test_func_m(x): data_tree=data, environment=environment, targets_tree={"test_func_y": None}, - foreign_keys=((),), - supported_groupings=(), + groupings=(), ) assert_series_equal( pd.Series(calc_result["test_func_y"]), @@ -187,8 +185,7 @@ def test_func(x): data_tree=data, environment=environment, targets_tree={"test_func": None}, - foreign_keys=((),), - supported_groupings=(), + groupings=(), rounding=False, ) assert_series_equal( diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/test_shared.py index ece9066d44..fd10f31a1d 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -3,7 +3,6 @@ import pytest from ttsim.shared import ( - all_variations_of_base_name, create_tree_from_path_and_value, get_name_of_group_by_id, get_re_pattern_for_all_time_units_and_groupings, @@ -231,7 +230,7 @@ def test_get_name_of_group_by_id(target_name, group_by_functions, expected): get_name_of_group_by_id( target_name=target_name, group_by_functions=group_by_functions, - supported_groupings=("hh", "bg", "eg"), + groupings=("hh", "bg", "eg"), ) == expected ) @@ -287,75 +286,18 @@ def test_get_name_of_group_by_id_fails( get_name_of_group_by_id( target_name=target_name, group_by_functions=group_by_functions, - supported_groupings=("hh", "bg", "eg"), + groupings=("hh", "bg", "eg"), ) -@pytest.mark.parametrize( - ( - "base_name", - "supported_time_conversions", - "supported_groupings", - "create_conversions_for_time_units", - "expected", - ), - [ - ( - "income", - ["y", "m"], - ["hh"], - True, - {"income_m", "income_y", "income_m_hh", "income_y_hh"}, - ), - ( - "income", - ["y", "m"], - ["hh", "x"], - True, - { - "income_m", - "income_y", - "income_m_hh", - "income_y_hh", - "income_m_x", - "income_y_x", - }, - ), - ( - "claims_benefits", - ["y", "m"], - ["hh", "x"], - False, - {"claims_benefits", "claims_benefits_hh", "claims_benefits_x"}, - ), - ], -) -def test_all_variations_of_base_name( - base_name, - supported_time_conversions, - supported_groupings, - create_conversions_for_time_units, - expected, -): - assert ( - all_variations_of_base_name( - base_name=base_name, - supported_time_conversions=supported_time_conversions, - supported_groupings=supported_groupings, - create_conversions_for_time_units=create_conversions_for_time_units, - ) - == expected - ) - - @pytest.mark.parametrize( ( "func_name", - "supported_time_units", - "supported_groupings", + "time_units", + "groupings", "expected_base_name", "expected_time_unit", - "expected_aggregation", + "expected_grouping", ), [ ("foo", ("m", "y"), ["hh"], "foo", None, None), @@ -369,27 +311,27 @@ def test_all_variations_of_base_name( ) def test_get_re_pattern_for_time_units_and_groupings( func_name, - supported_time_units, - supported_groupings, + time_units, + groupings, expected_base_name, expected_time_unit, - expected_aggregation, + expected_grouping, ): result = get_re_pattern_for_all_time_units_and_groupings( - supported_time_units=supported_time_units, - supported_groupings=supported_groupings, + time_units=time_units, + groupings=groupings, ) match = result.fullmatch(func_name) assert match.group("base_name") == expected_base_name assert match.group("time_unit") == expected_time_unit - assert match.group("aggregation") == expected_aggregation + assert match.group("grouping") == expected_grouping @pytest.mark.parametrize( ( "base_name", - "supported_time_units", - "supported_groupings", + "time_units", + "groupings", "expected_match", ), [ @@ -399,11 +341,11 @@ def test_get_re_pattern_for_time_units_and_groupings( ], ) def test_get_re_pattern_for_some_base_name( - base_name, supported_time_units, supported_groupings, expected_match + base_name, time_units, groupings, expected_match ): re_pattern = get_re_pattern_for_specific_time_units_and_groupings( base_name=base_name, - supported_time_units=supported_time_units, - supported_groupings=supported_groupings, + all_time_units=time_units, + groupings=groupings, ) assert re_pattern.fullmatch(expected_match) diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_time_conversion.py index 1652de0736..4895896df7 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -2,8 +2,7 @@ import pytest -from ttsim.function_types import policy_function -from ttsim.time_conversion import ( +from ttsim.automatically_added_functions import ( _create_function_for_time_unit, create_time_conversion_functions, d_to_m, @@ -27,6 +26,11 @@ y_to_q, y_to_w, ) +from ttsim.ttsim_objects import policy_function + + +def return_one() -> int: + return 1 @pytest.mark.parametrize( @@ -274,7 +278,9 @@ def test_should_create_functions_for_other_time_units_for_functions( self, name: str, expected: list[str] ) -> None: time_conversion_functions = create_time_conversion_functions( - {name: policy_function(leaf_name="test")(lambda: 1)}, {} + ttsim_objects={name: policy_function(leaf_name=name)(return_one)}, + data={}, + groupings=("sn", "hh"), ) for expected_name in expected: @@ -282,8 +288,9 @@ def test_should_create_functions_for_other_time_units_for_functions( def test_should_not_create_functions_automatically_that_exist_already(self) -> None: time_conversion_functions = create_time_conversion_functions( - {"test1_d": policy_function(leaf_name="test1_d")(lambda: 1)}, - {"test2_y": None}, + ttsim_objects={"test1_d": policy_function(leaf_name="test1_d")(return_one)}, + data={"test2_y": None}, + groupings=("sn", "hh"), ) assert "test1_d" not in time_conversion_functions @@ -293,8 +300,9 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri self, ) -> None: time_conversion_functions = create_time_conversion_functions( - {"test_d": policy_function(leaf_name="test_d")(lambda: 1)}, - {"test_y": None}, + ttsim_objects={"test_d": policy_function(leaf_name="test_d")(return_one)}, + data={"test_y": None}, + groupings=("sn", "hh"), ) assert "test_d" in time_conversion_functions @@ -321,8 +329,11 @@ def test_should_apply_converter(self): # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def test_should_not_create_cycle(): time_conversion_functions = create_time_conversion_functions( - {"test_d": policy_function(leaf_name="test_d")(lambda test_m: test_m)}, - {}, + ttsim_objects={ + "test_d": policy_function(leaf_name="test_d")(lambda test_m: test_m) + }, + data={}, + groupings=(), ) assert "test_m" not in time_conversion_functions diff --git a/tests/ttsim/test_ttsim_objects.py b/tests/ttsim/test_ttsim_objects.py new file mode 100644 index 0000000000..c255d18c0c --- /dev/null +++ b/tests/ttsim/test_ttsim_objects.py @@ -0,0 +1,232 @@ +import inspect + +import pytest + +from ttsim.ttsim_objects import ( + AggType, + PolicyFunction, + PolicyInput, + agg_by_group_function, + agg_by_p_id_function, + policy_function, + policy_input, +) + +# ====================================================================================== +# PolicyFunction and policy_function +# ====================================================================================== + + +@policy_function() +def simple_policy_function(x): + return x + + +@policy_function(leaf_name="simple_policy_function") +def policy_function_with_internal_name(x): + return x + + +@policy_function(start_date="2007-01-01", end_date="2011-12-31") +def policy_function_with_dates(x): + return x + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_policy_function_type(function): + assert isinstance(function, PolicyFunction) + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_function, + policy_function_with_internal_name, + ], +) +def test_policy_function_name(function): + assert function.leaf_name == "simple_policy_function" + + +def test_policy_function_with_dates(): + assert str(policy_function_with_dates.start_date) == "2007-01-01" + assert str(policy_function_with_dates.end_date) == "2011-12-31" + + +# ====================================================================================== +# PolicyInput and policy_input +# ====================================================================================== + + +@policy_input() +def simple_policy_input() -> float: + pass + + +@policy_input(start_date="2007-01-01", end_date="2011-12-31") +def policy_input_with_dates() -> float: + pass + + +@pytest.mark.parametrize( + "function", + [ + simple_policy_input, + policy_input_with_dates, + ], +) +def test_policy_input_type(function): + assert isinstance(function, PolicyInput) + + +def test_policy_input_with_dates(): + assert str(policy_input_with_dates.start_date) == "2007-01-01" + assert str(policy_input_with_dates.end_date) == "2011-12-31" + + +# ====================================================================================== +# AggByGroupFunction and agg_by_group_function +# ====================================================================================== + + +@agg_by_group_function(agg_type=AggType.COUNT) +def aggregate_by_group_count(group_id): + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def aggregate_by_group_sum(group_id, source): + pass + + +@pytest.mark.parametrize( + ( + "function", + "expected_group_id", + "expected_other_arg", + ), + [ + (aggregate_by_group_count, "group_id", None), + (aggregate_by_group_sum, "group_id", "source"), + ], +) +def test_agg_by_group_function_type(function, expected_group_id, expected_other_arg): + args = inspect.signature(function).parameters + assert expected_group_id in args + if expected_other_arg: + assert expected_other_arg in args + + +def test_agg_by_group_count_other_arg_present(): + match = "There must be no argument besides identifiers for counting." + with pytest.raises(ValueError, match=match): + + @agg_by_group_function(agg_type=AggType.COUNT) + def aggregate_by_group_count_other_arg_present(group_id, wrong_arg): + pass + + +def test_agg_by_group_sum_wrong_amount_of_args(): + match = "There must be exactly one argument besides identifiers for aggregations." + with pytest.raises(ValueError, match=match): + + @agg_by_group_function(agg_type=AggType.SUM) + def aggregate_by_group_sum_no_arg_present(group_id): + pass + + with pytest.raises(ValueError, match=match): + + @agg_by_group_function(agg_type=AggType.SUM) + def aggregate_by_group_sum_multiple_args_present(group_id, arg, another_arg): + pass + + +def test_wrong_number_of_group_ids_present(): + match = "Require exactly one group identifier ending with '_id'" + with pytest.raises(ValueError, match=match): + + @agg_by_group_function(agg_type=AggType.COUNT) + def aggregate_by_group_count_multiple_group_ids_present( + group_id, another_group_id + ): + pass + + with pytest.raises(ValueError, match=match): + + @agg_by_group_function(agg_type=AggType.COUNT) + def aggregate_by_group_count_no_group_id_present(): + pass + + +# ====================================================================================== +# AggByPIDFunction and agg_by_p_id_function +# ====================================================================================== + + +@agg_by_p_id_function(agg_type=AggType.COUNT) +def aggregate_by_p_id_count(p_id, p_id_specifier): + pass + + +@agg_by_p_id_function(agg_type=AggType.SUM) +def aggregate_by_p_id_sum(p_id, p_id_specifier, source): + pass + + +@pytest.mark.parametrize( + ( + "function", + "expected_foreign_p_id", + "expected_other_arg", + ), + [ + (aggregate_by_p_id_count, "p_id", None), + (aggregate_by_p_id_sum, "p_id", "source"), + ], +) +def test_agg_by_p_id_function_type(function, expected_foreign_p_id, expected_other_arg): + args = inspect.signature(function).parameters + assert expected_foreign_p_id in args + if expected_other_arg: + assert expected_other_arg in args + + +def test_agg_by_p_id_count_other_arg_present(): + match = "There must be no argument besides identifiers for counting." + with pytest.raises(ValueError, match=match): + + @agg_by_p_id_function(agg_type=AggType.COUNT) + def aggregate_by_p_id_count_other_arg_present(p_id, p_id_specifier, wrong_arg): + pass + + +def test_agg_by_p_id_sum_wrong_amount_of_args(): + match = "There must be exactly one argument besides identifiers for aggregations." + with pytest.raises(ValueError, match=match): + + @agg_by_p_id_function(agg_type=AggType.SUM) + def aggregate_by_p_id_sum_no_arg_present(p_id, p_id_specifier): + pass + + @agg_by_p_id_function(agg_type=AggType.SUM) + def aggregate_by_p_id_sum_multiple_args_present( + p_id, p_id_specifier, arg, another_arg + ): + pass + + +def test_agg_by_p_id_multiple_other_p_ids_present(): + match = "Require exactly one identifier starting with 'p_id_' for" + with pytest.raises(ValueError, match=match): + + @agg_by_p_id_function(agg_type=AggType.SUM) + def aggregate_by_p_id_multiple_other_p_ids_present( + p_id, p_id_specifier_one, p_id_specifier_two + ): + pass diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 298f361183..05485360ae 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -1,4 +1,5 @@ import datetime +import functools import inspect import string from pathlib import Path @@ -6,17 +7,19 @@ import dags.tree as dt import numpy import pytest +from dags import concatenate_functions -from ttsim.config import USE_JAX +from ttsim.config import IS_JAX_INSTALLED -if USE_JAX: +if IS_JAX_INSTALLED: import jax.numpy from numpy.testing import assert_array_equal -from ttsim.function_types import GroupByFunction, PolicyInput from ttsim.loader import load_objects_tree_for_date +from ttsim.ttsim_objects import GroupCreationFunction, PolicyInput, policy_function from ttsim.vectorization import ( TranslateToVectorizableError, + _is_lambda_function, make_vectorizable, make_vectorizable_source, ) @@ -25,10 +28,10 @@ # Backend # ====================================================================================== -backends = ["jax", "numpy"] if USE_JAX else ["numpy"] +backends = ["jax", "numpy"] if IS_JAX_INSTALLED else ["numpy"] modules = {"numpy": numpy} -if USE_JAX: +if IS_JAX_INSTALLED: modules["jax"] = jax.numpy # ====================================================================================== @@ -350,13 +353,13 @@ def test_notimplemented_error(): @pytest.mark.parametrize("func", [g1, g2, g3, g4]) -def test_unallowed_operation_source(func): +def test_disallowed_operation_source(func): with pytest.raises(TranslateToVectorizableError): make_vectorizable_source(func, backend="numpy") @pytest.mark.parametrize("func", [g1, g2, g3, g4]) -def test_unallowed_operation_wrapper(func): +def test_disallowed_operation_wrapper(func): with pytest.raises(TranslateToVectorizableError): make_vectorizable(func, backend="numpy") @@ -366,7 +369,7 @@ def test_unallowed_operation_wrapper(func): # ====================================================================================== -# TODO(@MImmesberger): Remove isinstance check once GroupByFunctions are JAX-compatible. +# TODO(@MImmesberger): Remove isinstance once GroupCreationFunctions are JAX-compatible. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 for year in range(1990, 2023): @@ -380,7 +383,7 @@ def test_unallowed_operation_wrapper(func): date=datetime.date(year=year, month=1, day=1), ) ).values() - if not isinstance(pf, GroupByFunction | PolicyInput) + if not isinstance(pf, GroupCreationFunction | PolicyInput) ], ) @pytest.mark.parametrize("backend", backends) @@ -526,3 +529,108 @@ def test_grundsätzlich_anspruchsberechtigt(backend): elterngeld_params=elterngeld_params, ) assert_array_equal(got, full(shape, exp)) + + +# ====================================================================================== +# Lambda functions +# ====================================================================================== + + +def test_is_lambda_function_true(): + assert _is_lambda_function(lambda x: x) + + +def test_is_lambda_function_wrapped(): + def decorator(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + + return wrapper + + assert _is_lambda_function(decorator(lambda x: x)) + + +def test_is_lambda_function_false(): + def f(x): + return x + + assert not _is_lambda_function(f) + + +def test_is_lambda_function_non_function_input(): + assert not _is_lambda_function(42) + assert not _is_lambda_function("not a function") + assert not _is_lambda_function([1, 2, 3]) + assert not _is_lambda_function({1: "a", 2: "b"}) + assert not _is_lambda_function(None) + + +def test_lambda_functions_disallowed_make_vectorizable(): + with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): + make_vectorizable(lambda x: x, backend="numpy") + + +def test_lambda_functions_disallowed_make_vectorizable_source(): + with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): + make_vectorizable_source(lambda x: x, backend="numpy") + + +# ====================================================================================== +# Policy functions +# ====================================================================================== + + +def test_make_vectorizable_policy_func(): + @policy_function() + def alter_bis_24(alter: int) -> bool: + return alter <= 24 + + vectorized = make_vectorizable(alter_bis_24, backend="numpy") + + got = vectorized(numpy.array([20, 25, 30])) + exp = numpy.array([True, False, False]) + assert_array_equal(got, exp) + + +# ====================================================================================== +# Dags functions +# ====================================================================================== + + +def test_make_vectorizable_concatened_func(): + def f_a(x: int) -> int: + return x + + def f_b(a: int) -> int: + return a + 2 + + def f_manual(x: int) -> int: + return f_b(f_a(x)) + + vectorized = make_vectorizable(f_manual, backend="numpy") + got = vectorized(numpy.array([1, 2, 3])) + exp = numpy.array([3, 4, 5]) + assert_array_equal(got, exp) + + +@pytest.mark.xfail(reason="Make vectorizable does not work on dags concatenated funcs.") +def test_make_vectorizable_dags_concatened_func(): + def f_a(x: int) -> int: + return x + + def f_b(a: int) -> int: + return a + 2 + + f_dags = concatenate_functions( + functions={ + "a": f_a, + "b": f_b, + }, + targets={"b"}, + ) + + vectorized = make_vectorizable(f_dags, backend="numpy") + got = vectorized(numpy.array([1, 2, 3])) + exp = numpy.array([3, 4, 5]) + assert_array_equal(got, exp) diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index ed87381ed1..b5c3130c5b 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -15,7 +15,7 @@ environment = set_up_policy_environment(date="2020-01-01", resource_dir=RESOURCE_DIR) -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3, 4}), (5, 1, 2, {0, 1, 2, 3})], @@ -26,7 +26,7 @@ def test_kth_order_neighbors(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {0, 1, 2, 3}), (5, 1, None, {0, 1})], @@ -37,7 +37,7 @@ def test_node_and_ancestors(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3}), (5, 1, 2, {0, 1})], @@ -48,7 +48,7 @@ def test_node_and_ancestors_order(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {3, 4, 5}), (5, 1, None, {1, 2, 3, 4, 5})], @@ -59,7 +59,7 @@ def test_node_and_descendants(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {3, 4}), (5, 1, 2, {1, 2, 3})], @@ -70,7 +70,7 @@ def test_node_and_descendants_order(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selector, expected", [ @@ -89,7 +89,7 @@ def test_get_selected_nodes(n_nodes, selector, expected): assert nodes == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selectors, expected", [ @@ -116,7 +116,7 @@ def test_select_nodes_in_dag(n_nodes, selectors, expected): assert set(dag.nodes) == expected -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_plot_dag(): """Make sure that minimal example doesn't produce an error.""" plot_dag( @@ -125,7 +125,7 @@ def test_plot_dag(): ) -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_should_fail_if_target_is_missing(): with pytest.raises( ValueError, match="The following targets have no corresponding function" @@ -136,14 +136,14 @@ def test_should_fail_if_target_is_missing(): ) -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_one_dot_plot_dag(): """Make sure that the one dot graph example doesn't produce an error.""" selectors = "einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn" plot_dag(environment=environment, selectors=selectors) -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_10_dots_plot_dag(): """Make sure that when No.of nodes is larger than 10 or show_labels is false, the graph example doesn't produce an error and hover information works properly.""" @@ -154,7 +154,7 @@ def test_10_dots_plot_dag(): plot_dag(environment=environment, selectors=selector, orientation="h") -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_horizontal_plot_dag(): """Make sure that when we choose horizontal orientation, the graph example doesn't produce an error.""" @@ -170,7 +170,7 @@ def test_horizontal_plot_dag(): ) -@pytest.mark.xfail(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") def test_hover_source_code_plot_dag(): """Make sure that when hover information is source code, the graph example doesn't produce an error and works properly.""" diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index c4f9026bcd..d31592cb48 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -6,12 +6,12 @@ import dags.tree as dt import pandas as pd import yaml -from mettsim.config import FOREIGN_KEYS, SUPPORTED_GROUPINGS +from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS from ttsim import merge_trees, set_up_policy_environment from ttsim.shared import to_datetime -TEST_DIR = Path(__file__).parent / "test_data" +TEST_DIR = Path(__file__).parent if TYPE_CHECKING: import datetime @@ -44,7 +44,7 @@ def target_structure(self) -> NestedInputStructureDict: return dt.unflatten_from_tree_paths(flat_target_structure) @property - def test_name(self) -> str: + def name(self) -> str: return self.path.relative_to(TEST_DIR / "test_data").as_posix() @@ -53,14 +53,13 @@ def execute_test(test: PolicyTest): from ttsim import compute_taxes_and_transfers - environment = set_up_policy_environment(date=test.date) + environment = set_up_policy_environment(date=test.date, resource_dir=RESOURCE_DIR) result = compute_taxes_and_transfers( data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - supported_groupings=SUPPORTED_GROUPINGS, - foreign_keys=FOREIGN_KEYS, + groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) @@ -79,7 +78,7 @@ def execute_test(test: PolicyTest): def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: all_policy_tests = load_policy_test_data("") - return {policy_test.test_name: policy_test for policy_test in all_policy_tests} + return {policy_test.name: policy_test for policy_test in all_policy_tests} def load_policy_test_data(policy_name: str) -> list[PolicyTest]: @@ -166,32 +165,12 @@ def _get_policy_tests_from_raw_test_data( date: datetime.date = to_datetime(path_to_yaml.parent.name) - out = [] - if expected_output_tree == {}: - out.append( - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree={}, - path=path_to_yaml, - date=date, - ) + return [ + PolicyTest( + info=test_info, + input_tree=input_tree, + expected_output_tree=expected_output_tree, + path=path_to_yaml, + date=date, ) - else: - for target_name, output_data in dt.flatten_to_tree_paths( - expected_output_tree - ).items(): - one_expected_output: NestedDataDict = dt.unflatten_from_tree_paths( - {target_name: output_data} - ) - out.append( - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree=one_expected_output, - path=path_to_yaml, - date=date, - ) - ) - - return out + ] From 70f0964c32f4d7dbbb6e89bd6c020c027e3901a1 Mon Sep 17 00:00:00 2001 From: Tim Mensinger <mensingertim@gmail.com> Date: Tue, 22 Apr 2025 10:33:12 +0200 Subject: [PATCH 019/109] Fix JAX-Jit tests (#877) ### What problem do you want to solve? Tests in `test_jax_jit_kindergeld.py` were failing because policy functions were not jittable. ### Problems and Solutions #### Non-Hashable Function in `jit` The policy functions were non-jittable because the dataclasses were non-frozen and had the equality argument set to True. This implies that the dataclass get an equality method which compares the fields. To not break the equality/hash contract (a == b implies hash(a) == hash(b)), a dataclass with equality method that is not frozen has a deactivated hash. This does not work with `jax.jit`, because for caching JAX requires a hash of the object. By freezing the dataclasses they get their hash back, and everything works nicely again with JAX. > [!NOTE] > Frozen dataclasses cannot have standard assignments in the post init method. For this I had to implement a `frozen_safe_update_wrapper`. ### Todo - [x] Freeze ttsim_objects dataclasses and update post init of `TTSIMFunction` to be compatible - [x] Understand why list `single_test` in `kindergeld_policy_test` fixture has only one entry, although the yaml file says there are two outputs - [x] Fix `test_compute_taxes_and_transfers_kindergeld` --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../kindergeld\303\274bertrag.py" | 6 ++- src/ttsim/compute_taxes_and_transfers.py | 8 +-- src/ttsim/ttsim_objects.py | 53 ++++++++++++++----- tests/ttsim/test_jax_jit_kindergeld.py | 7 +-- 4 files changed, 54 insertions(+), 20 deletions(-) diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 26f67124cb..2f4bee79b0 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -40,7 +40,11 @@ def _mean_kindergeld_per_child_gestaffelt_m( return out -@policy_function(start_date="2023-01-01", leaf_name="kindergeld_pro_kind_m") +@policy_function( + start_date="2023-01-01", + leaf_name="kindergeld_pro_kind_m", + vectorization_strategy="vectorize", +) def _mean_kindergeld_per_child_ohne_staffelung_m( kindergeld_params: dict, kindergeld__anzahl_ansprüche: int, diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index bd5ddf2617..d50833c393 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -490,7 +490,7 @@ def _fail_if_foreign_keys_are_invalid_in_data( to the `p_id` of the same row. """ - valid_ids = set(data["p_id"]) | {-1} + valid_ids = set(data["p_id"].tolist()) | {-1} for fk_name, fk in ttsim_objects.items(): if fk.foreign_key_type == FKType.IRRELEVANT: @@ -498,7 +498,7 @@ def _fail_if_foreign_keys_are_invalid_in_data( elif fk_name in data: path = dt.tree_path_from_qual_name(fk_name) # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in data[fk_name]): + if not all(i in valid_ids for i in data[fk_name].tolist()): message = format_errors_and_warnings( f""" For {path}, the following are not a valid p_id in the input @@ -509,7 +509,9 @@ def _fail_if_foreign_keys_are_invalid_in_data( if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: equal_to_pid_in_same_row = [ - i for i, j in zip(data[fk_name], data["p_id"]) if i == j + i + for i, j in zip(data[fk_name].tolist(), data["p_id"].tolist()) + if i == j ] if any(equal_to_pid_in_same_row): message = format_errors_and_warnings( diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/ttsim_objects.py index 42b87d361a..43b678ccb3 100644 --- a/src/ttsim/ttsim_objects.py +++ b/src/ttsim/ttsim_objects.py @@ -63,7 +63,7 @@ class FKType(StrEnum): MUST_NOT_POINT_TO_SELF = "must not point to self" -@dataclass +@dataclass(frozen=True) class TTSIMObject: """ Abstract base class for all TTSIM Functions and Inputs. @@ -86,7 +86,7 @@ def remove_tree_logic( raise NotImplementedError("Subclasses must implement this method.") -@dataclass +@dataclass(frozen=True) class PolicyInput(TTSIMObject): """ A dummy function representing an input variable. @@ -157,7 +157,38 @@ def inner(func: Callable) -> PolicyInput: return inner -@dataclass +def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable) -> None: + """Update a frozen wrapper dataclass to look like the wrapped function. + + This is necessary because the wrapper is a frozen dataclass, so we cannot + use the `functools.update_wrapper` function or `self.__signature__ = ...` + assigments in the `__post_init__` method. + + Args: + wrapper: The wrapper dataclass to update. + wrapped: The function to update the wrapper to. + + """ + object.__setattr__(wrapper, "__signature__", inspect.signature(wrapped)) + + WRAPPER_ASSIGNMENTS = ( # noqa: N806 + "__globals__", + "__closure__", + "__doc__", + "__name__", + "__qualname__", + "__module__", + "__annotations__", + "__type_params__", + ) + for attr in WRAPPER_ASSIGNMENTS: + if hasattr(wrapped, attr): + object.__setattr__(wrapper, attr, getattr(wrapped, attr)) + + getattr(wrapper, "__dict__", {}).update(getattr(wrapped, "__dict__", {})) + + +@dataclass(frozen=True) class TTSIMFunction(TTSIMObject): """ Base class for all TTSIM functions. @@ -169,12 +200,8 @@ class TTSIMFunction(TTSIMObject): def __post_init__(self): self._fail_if_rounding_has_wrong_type(self.rounding_spec) - # Expose the signature of the wrapped function for dependency resolution - functools.update_wrapper(self, self.function) - self.__signature__ = inspect.signature(self.function) - self.__globals__ = self.function.__globals__ - self.__closure__ = self.function.__closure__ + _frozen_safe_update_wrapper(self, self.function) def _fail_if_rounding_has_wrong_type( self, rounding_spec: RoundingSpec | None @@ -213,7 +240,7 @@ def is_active(self, date: datetime.date) -> bool: return self.start_date <= date <= self.end_date -@dataclass +@dataclass(frozen=True) class PolicyFunction(TTSIMFunction): """ A function that computes an output vector based on some input vectors and/or @@ -340,7 +367,7 @@ def _vectorize_func( return vectorized -@dataclass +@dataclass(frozen=True) class GroupCreationFunction(TTSIMFunction): """ A function that computes endogenous group_by IDs. @@ -400,7 +427,7 @@ def decorator(func: Callable) -> GroupCreationFunction: return decorator -@dataclass +@dataclass(frozen=True) class AggByGroupFunction(TTSIMFunction): """ A function that is an aggregation of another column by some group id. @@ -524,7 +551,7 @@ def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str): ) -@dataclass +@dataclass(frozen=True) class AggByPIDFunction(TTSIMFunction): """ A function that is an aggregation of another column by some group id. @@ -651,7 +678,7 @@ def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str): ) -@dataclass +@dataclass(frozen=True) class TimeConversionFunction(TTSIMFunction): """ A function that is a time conversion of another function. diff --git a/tests/ttsim/test_jax_jit_kindergeld.py b/tests/ttsim/test_jax_jit_kindergeld.py index b9be8e9576..ff5b2001d7 100644 --- a/tests/ttsim/test_jax_jit_kindergeld.py +++ b/tests/ttsim/test_jax_jit_kindergeld.py @@ -46,11 +46,11 @@ def test_kindergeld_policy_func(): @pytest.fixture def kindergeld_policy_test(): name = "alleinerz_2_children_low_unterhalt.yaml" - kindergeld_2024 = load_policy_test_data("kindergeld/2024") + kindergeld_2024 = load_policy_test_data("kindergeld/2024-01-01") single_test = [ test_data for test_data in kindergeld_2024 if test_data.path.name == name ] - return single_test[1] # index=1 -> betrag_m + return single_test[0] @pytest.mark.skipif(not IS_JAX_INSTALLED, reason="JAX is not installed") @@ -63,6 +63,7 @@ def test_compute_taxes_and_transfers_kindergeld(kindergeld_policy_test): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, + groupings=(), jit=True, ) @@ -75,6 +76,6 @@ def test_compute_taxes_and_transfers_kindergeld(kindergeld_policy_test): assert_frame_equal( result_dataframe, expected_dataframe, - atol=test.info["precision"], + atol=test.info["precision_atol"], check_dtype=False, ) From e1dd5dfdf36a6469b74036b03c49af49ab39e493 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Apr 2025 22:33:58 +0200 Subject: [PATCH 020/109] Use `ast.unparse` instead of `astor.code_gen.to_source` (#878) In limited set of experiments, it produced exactly the same result. `ast.unparse` is available since Python 3.9, so it's fine to use. --- docs/rtd_environment.yml | 1 - pixi.lock | 32 ++------------------------------ pyproject.toml | 2 -- src/ttsim/vectorization.py | 6 ++---- 4 files changed, 4 insertions(+), 37 deletions(-) diff --git a/docs/rtd_environment.yml b/docs/rtd_environment.yml index 810a77a09e..a4a04dbec9 100644 --- a/docs/rtd_environment.yml +++ b/docs/rtd_environment.yml @@ -10,7 +10,6 @@ dependencies: - jupyterlab # gettsim dependencies - - astor - dags>=0.3.0 - ipywidgets - networkx diff --git a/pixi.lock b/pixi.lock index b53c823c23..a2b6801a86 100644 --- a/pixi.lock +++ b/pixi.lock @@ -15,7 +15,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -283,7 +282,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -521,7 +519,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -758,7 +755,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda @@ -1012,7 +1008,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -1280,7 +1275,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -1518,7 +1512,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -1755,7 +1748,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda @@ -2009,7 +2001,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -2277,7 +2268,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -2515,7 +2505,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -2752,7 +2741,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda @@ -3006,7 +2994,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -3285,7 +3272,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -3534,7 +3520,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -3782,7 +3767,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda @@ -4264,17 +4248,6 @@ packages: - pkg:pypi/arrow?source=hash-mapping size: 99951 timestamp: 1733584345583 -- conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - sha256: 2e4e6d0d3aaee26415f910658ed55a53cc3210e8c30ae9a0dd35826cf7a3423f - md5: 860c9e08463a3af84d7da76bc0baf84b - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/astor?source=hash-mapping - size: 29393 - timestamp: 1733838731992 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 md5: 8f587de4bcf981e26228f268df374a9b @@ -5642,10 +5615,9 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev126+gdfcfad85.d20250414 - sha256: 7a5248faa13a2c5c883ee99678c32f0fbdab2af487e71569910eacd2a34cd2d0 + version: 0.7.1.dev107+g70f0964c.d20250422 + sha256: 682476d4d04b29447c8e187ee28748e8af218a92760131904d2d1cbc9c242651 requires_dist: - - astor - dags>=0.3.0 - ipywidgets - networkx diff --git a/pyproject.toml b/pyproject.toml index ff691edb76..bc0f89b43d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,6 @@ classifiers = [ # Dependencies and requirements requires-python = ">=3.11" dependencies = [ - "astor", "dags>=0.3.0", "ipywidgets", "networkx", @@ -110,7 +109,6 @@ pandas = ">=2.1" numpy_groupies = "*" numpydoc = "*" openpyxl = "*" -astor = "*" ipywidgets = "*" jupyterlab = "*" networkx = "*" # Remove once dags is a proper dependency diff --git a/src/ttsim/vectorization.py b/src/ttsim/vectorization.py index 9d69c09054..92cefcea95 100644 --- a/src/ttsim/vectorization.py +++ b/src/ttsim/vectorization.py @@ -6,8 +6,6 @@ from collections.abc import Callable from importlib import import_module -import astor - from ttsim.config import numpy_or_jax BACKEND_TO_MODULE = {"jax": "jax.numpy", "numpy": "numpy"} @@ -71,7 +69,7 @@ def make_vectorizable_source(func: Callable, backend: str) -> str: module = _module_from_backend(backend) tree = _make_vectorizable_ast(func, module=module) - return astor.code_gen.to_source(tree) + return ast.unparse(tree) def _make_vectorizable_ast(func: Callable, module: str) -> ast.Module: @@ -370,7 +368,7 @@ def _disallowed_operation_error_message(node: ast.AST, func_loc: str) -> str: def _node_to_formatted_source(node: ast.AST) -> str: - source = astor.code_gen.to_source(node) + source = ast.unparse(node) return " > " + source[:-1].replace("\n", "\n > ") From 908e2729b12d05f668421b4ab5f101f23551d3bf Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Fri, 25 Apr 2025 17:56:44 +0200 Subject: [PATCH 021/109] Validate params files (#880) - [x] Add a json (yaml) schema based on GEP-03 - [x] Make sure manual validation of parameters passes - [x] make a pre-commit hook out of this --- .pre-commit-config.yaml | 12 +- pixi.lock | 2 +- src/_gettsim/config.py | 6 +- src/_gettsim/lohnsteuer/einkommen.py | 25 +- src/_gettsim/parameters/arbeitsl_geld_2.yaml | 8 +- .../parameters/arbeitslosenversicherung.yaml | 62 ++ src/_gettsim/parameters/eink_st_abzuege.yaml | 4 +- src/_gettsim/parameters/elterngeld.yaml | 3 + src/_gettsim/parameters/erziehungsgeld.yaml | 16 +- .../geringf\303\274gige_einkommen.yaml" | 192 ++++ src/_gettsim/parameters/ges_krankenv.yaml | 432 ++++++++ src/_gettsim/parameters/ges_pflegev.yaml | 186 ++++ src/_gettsim/parameters/ges_rente.yaml | 27 + src/_gettsim/parameters/ges_rentenv.yaml | 236 +++++ src/_gettsim/parameters/kinderzuschl.yaml | 4 +- src/_gettsim/parameters/lohnst.yaml | 2 +- src/_gettsim/parameters/sozialv_beitr.yaml | 929 ------------------ src/_gettsim/parameters/unterhalt.yaml | 2 +- src/_gettsim/parameters/unterhaltsvors.yaml | 3 + src/_gettsim/parameters/wohngeld.yaml | 4 +- .../arbeitslosen/beitrag/beitrag.py | 28 +- .../sozialversicherung/beitr\303\244ge.py" | 2 +- .../geringf\303\274gig_besch\303\244ftigt.py" | 32 +- .../kranken/beitrag/beitrag.py | 16 +- .../kranken/beitrag/beitragssatz.py | 78 +- .../kranken/beitrag/einkommen.py | 14 +- src/_gettsim/sozialversicherung/midijob.py | 183 +--- .../pflege/beitrag/beitrag.py | 50 +- .../pflege/beitrag/beitragssatz.py | 28 +- .../regul\303\244r_besch\303\244ftigt.py" | 26 +- .../rente/beitrag/beitrag.py | 44 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 4 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 4 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 +- .../regelsatz_multiple_children.yaml | 4 +- .../2005-01-01/regelsatz_no_adult_in_bg.yaml | 5 +- .../2013-01-01/hh_id_14.yaml | 4 +- .../2013-01-01/hh_id_15.yaml | 4 +- .../2022-01-01/hh_id_10.yaml | 4 +- .../2022-01-01/hh_id_11.yaml | 4 +- .../2023-01-01/hh_id_19.yaml | 3 +- .../2023-01-01/hh_id_25.yaml | 5 +- .../2023-01-01/test_age_limits_17_18.yaml | 5 +- .../2023-01-01/test_family_high_wealth.yaml | 5 +- .../test_family_wealth_below_threshold.yaml | 5 +- .../2023-07-01/hh_id_21.yaml | 5 +- .../2023-07-01/hh_id_22.yaml | 5 +- .../2023-07-01/hh_id_23.yaml | 3 +- .../alleinerz_kein_kindergelduebertrag.yaml | 3 +- .../alleinerz_teilw_kindergelduebertrag.yaml | 7 +- .../alleinerz_voller_kindergelduebertrag.yaml | 7 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 4 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 4 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 +- .../regelsatz_multiple_children.yaml | 4 +- .../2024-01-01/regelsatz_no_adult_in_bg.yaml | 5 +- .../2024-01-01/single_no_income.yaml | 5 +- .../2024-01-01/skip_single_no_children.yaml | 5 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 5 +- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 3 +- ...eltern_verheiratet_1_kind_with_income.yaml | 4 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 5 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 3 +- ...r_widerspruechliche_veranlagungs_info.yaml | 4 +- .../im_alter/2017-07-01/hh_id_13.yaml | 9 +- .../im_alter/2018-07-01/hh_id_12.yaml | 7 +- .../im_alter/2021-07-01/hh_id_14.yaml | 5 +- .../im_alter/2021-07-01/hh_id_21.yaml | 3 +- .../im_alter/2021-07-01/hh_id_23.yaml | 3 +- .../im_alter/2021-07-01/hh_id_9.yaml | 5 +- .../im_alter/2022-07-01/hh_id_10.yaml | 3 +- .../im_alter/2022-07-01/hh_id_11.yaml | 3 +- .../im_alter/2022-07-01/hh_id_25.yaml | 5 +- .../kinderzuschlag/2016-01-01/hh_id_12.yaml | 3 +- .../2023-01-01/test_child_income.yaml | 5 +- .../2023-01-01/test_family_high_wealth.yaml | 5 +- .../test_higher_wealth_exemptions.yaml | 5 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 2 +- ...eringf\303\274gig_besch\303\244ftigt.yaml" | 2 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 2 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 2 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 6 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 9 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 9 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 9 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 8 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 9 +- .../pflegev_anz_kinder_bis_24.yaml" | 3 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 5 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 5 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 5 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 5 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 4 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 5 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 4 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 8 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 4 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 4 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 3 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 3 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 7 +- .../wohngeld/2006-01-01/hh_id_15.yaml | 3 +- src/_gettsim_tests/utils.py | 52 +- src/ttsim/params-schema.json | 90 ++ .../mettsim/parameters/housing_benefits.yaml | 18 + .../ttsim/mettsim/parameters/payroll_tax.yaml | 18 + 132 files changed, 1780 insertions(+), 1445 deletions(-) create mode 100644 src/_gettsim/parameters/arbeitslosenversicherung.yaml create mode 100644 "src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" create mode 100644 src/_gettsim/parameters/ges_krankenv.yaml create mode 100644 src/_gettsim/parameters/ges_pflegev.yaml create mode 100644 src/_gettsim/parameters/ges_rentenv.yaml delete mode 100644 src/_gettsim/parameters/sozialv_beitr.yaml create mode 100644 src/ttsim/params-schema.json diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cb1d121eb1..9563c8021a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -42,7 +42,7 @@ repos: hooks: - id: yamllint - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.2 + rev: v0.11.7 hooks: # Run the linter. - id: ruff @@ -95,5 +95,15 @@ repos: additional_dependencies: - types-PyYAML - types-pytz + - repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.33.0 + hooks: + - id: check-jsonschema + name: Validate JSON/YAML files against schema + entry: check-jsonschema + language: python + files: ^(tests/ttsim/mettsim|src/_gettsim)/.*\.(yaml|yml)$ + args: + - --schemafile=src/ttsim/params-schema.json ci: autoupdate_schedule: monthly diff --git a/pixi.lock b/pixi.lock index a2b6801a86..bb68fc9bed 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5615,7 +5615,7 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev107+g70f0964c.d20250422 + version: 0.7.1.dev118+g913b9708.d20250423 sha256: 682476d4d04b29447c8e187ee28748e8af218a92760131904d2d1cbc9c242651 requires_dist: - dags>=0.3.0 diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index 8230430e6b..af2aacad2a 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -8,7 +8,11 @@ "eink_st_abzuege", "soli_st", "arbeitsl_geld", - "sozialv_beitr", + "arbeitslosenversicherung", + "geringfügige_einkommen", + "ges_krankenv", + "ges_pflegev", + "ges_rentenv", "unterhalt", "unterhaltsvors", "abgelt_st", diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 9bb5292a48..3b36cd14e0 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -63,7 +63,7 @@ def vorsorge_krankenv_option_b_ab_2015_bis_2018( sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, sozialversicherung__pflege__beitrag__beitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """For health care deductions, there are two ways to calculate the deductions: "Option a" and "Option b". @@ -85,9 +85,8 @@ def vorsorge_krankenv_option_b_ab_2015_bis_2018( Health care deductions for withholding taxes option b """ - out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( - sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 + ges_krankenv_params["beitr_satz"]["ermäßigt"] / 2 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz + sozialversicherung__pflege__beitrag__beitragssatz ) @@ -103,7 +102,7 @@ def vorsorge_krankenv_option_b_ab_2019( sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, sozialversicherung__pflege__beitrag__beitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """For health care deductions, there are two ways to calculate the deductions: "Option a" and "Option b". @@ -118,8 +117,8 @@ def vorsorge_krankenv_option_b_ab_2019( See :func:`sozialversicherung__kranken__beitrag__zusatzbeitragssatz`. sozialversicherung__pflege__beitrag__beitragssatz: See :func:`sozialversicherung__pflege__beitrag__beitragssatz`. - sozialv_beitr_params: - See params documentation :ref:`sozialv_beitr_params` + ges_krankenv_params: + See params documentation :ref:`ges_krankenv_params` Returns @@ -129,7 +128,7 @@ def vorsorge_krankenv_option_b_ab_2019( """ out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( - sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["ermäßigt"] / 2 + ges_krankenv_params["beitr_satz"]["ermäßigt"] / 2 + sozialversicherung__kranken__beitrag__zusatzbeitragssatz / 2 + sozialversicherung__pflege__beitrag__beitragssatz ) @@ -191,7 +190,7 @@ def vorsorge_krankenv_option_a( def vorsorgepauschale_y_ab_2010( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, wohnort_ost: bool, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, vorsorge_krankenv_option_a: float, vorsorge_krankenv_option_b: float, eink_st_abzuege_params: dict, @@ -206,8 +205,8 @@ def vorsorgepauschale_y_ab_2010( See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. wohnort_ost: See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - sozialv_beitr_params: - See params documentation :ref:`sozialv_beitr_params` + ges_krankenv_params: + See params documentation :ref:`ges_krankenv_params` vorsorge_krankenv_option_a: See :func:`vorsorge_krankenv_option_a` vorsorge_krankenv_option_b: @@ -226,17 +225,17 @@ def vorsorgepauschale_y_ab_2010( if wohnort_ost: bruttolohn_rente = min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, - 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["ost"], + 12 * ges_rentenv_params["beitr_bemess_grenze_m"]["ost"], ) else: bruttolohn_rente = min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, - 12 * sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"]["west"], + 12 * ges_rentenv_params["beitr_bemess_grenze_m"]["west"], ) vorsorg_rentenv = ( bruttolohn_rente - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + * ges_rentenv_params["beitr_satz"] * eink_st_abzuege_params["vorsorgepauschale_rentenv_anteil"] ) diff --git a/src/_gettsim/parameters/arbeitsl_geld_2.yaml b/src/_gettsim/parameters/arbeitsl_geld_2.yaml index b530ec4402..e23da72d19 100644 --- a/src/_gettsim/parameters/arbeitsl_geld_2.yaml +++ b/src/_gettsim/parameters/arbeitsl_geld_2.yaml @@ -423,8 +423,8 @@ kindersofortzuschl: en: >- Children, adolescents and young adults who are entitled to unemployment benefits or social benefits (Regelbedarfsstufen 3,4,5,6) receive an instant surcharge - of 20 euros. - unit: Euros + of 20 Euro. + unit: Euro reference: 72 SGB II 2022-07-01: scalar: 20 @@ -581,8 +581,8 @@ schonvermögen_bürgergeld: en: >- Since the introduction of the citizen's allowance as of 01.01.2023, every member of the need community is allowed to own 15,000 Euro after the end of the waiting - period of 1 year. During the waiting period wealth of 40,000 euros are allowed for - the first person in a needs-based community and 15,000 euros for each additional + period of 1 year. During the waiting period wealth of 40,000 Euro are allowed for + the first person in a needs-based community and 15,000 Euro for each additional person. unit: Euro 2023-01-01: diff --git a/src/_gettsim/parameters/arbeitslosenversicherung.yaml b/src/_gettsim/parameters/arbeitslosenversicherung.yaml new file mode 100644 index 0000000000..7a5350f5e8 --- /dev/null +++ b/src/_gettsim/parameters/arbeitslosenversicherung.yaml @@ -0,0 +1,62 @@ +--- +beitr_satz: + name: + de: Beitragssätze zur Arbeitslosenversicherung + en: Contribution rate to unemployment insurance + description: + de: >- + Beitragssätze zur Arbeitslosenversicherung für Arbeitnehmer. + en: >- + Employees contribution rate for unemployment insurance. + unit: Share + access_different_date: jahresanfang + 1984-01-01: + scalar: 0.023 + 1985-01-01: + scalar: 0.022 + 1986-01-01: + scalar: 0.0205 + 1987-01-01: + scalar: 0.0215 + 1992-01-01: + deviation_from: previous + scalar: 0.0315 + 1993-01-01: + scalar: 0.0325 + 1995-01-01: + scalar: 0.0325 + 1997-01-01: + scalar: 0.0325 + 2005-01-01: + scalar: 0.0325 + 2007-01-01: + deviation_from: previous + scalar: 0.021 + 2008-01-01: + scalar: 0.016 + 2009-01-01: + deviation_from: previous + scalar: 0.014 + 2011-01-01: + deviation_from: previous + scalar: 0.015 + 2015-01-01: + scalar: 0.015 + 2019-01-01: + scalar: 0.0125 + note: >- + Set to 0.026 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651. Temporarily + reduced to 0.025 in BeiSaV 2019. + reference: V. v. 21.12.2018 BGBl. I S. 2663 + 2020-01-01: + deviation_from: previous + scalar: 0.012 + note: Temporarily reduced to 0.024 in BeiSaV 2019. + reference: V. v. 02.12.2019 BGBl. I S. 1998 + 2023-01-01: + deviation_from: previous + scalar: 0.013 + note: >- + Contribution rate was temporarily reduced from 2019 to 2022 in BeiSaV 2019. Back + to level specified in § 341 Abs. 2 SGB III. + reference: Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 diff --git a/src/_gettsim/parameters/eink_st_abzuege.yaml b/src/_gettsim/parameters/eink_st_abzuege.yaml index fc7191463c..e7a4eb14ea 100644 --- a/src/_gettsim/parameters/eink_st_abzuege.yaml +++ b/src/_gettsim/parameters/eink_st_abzuege.yaml @@ -675,7 +675,7 @@ vorsorgepauschale_rentenv_anteil: en: >- Function for the share of pension insurance contributions deducted in the withholding tax calculation. - unit: share + unit: Share reference: § 39b (4) EStG note: de: >- @@ -729,7 +729,7 @@ vorsorgepauschale_mindestanteil: Minimum share of minimum contributions to health care and care insurance deducted from Mindestvorsorgepauschale reference: 39b (2) Nr.3 EStG - unit: share + unit: Share 2009-07-23: scalar: 0.12 reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 diff --git a/src/_gettsim/parameters/elterngeld.yaml b/src/_gettsim/parameters/elterngeld.yaml index 40117f5161..4e198277c3 100644 --- a/src/_gettsim/parameters/elterngeld.yaml +++ b/src/_gettsim/parameters/elterngeld.yaml @@ -192,6 +192,9 @@ max_monate_ohne_partnermonate: scalar: 12 reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 max_eink_vorj: + name: + de: Maximales zu versteuerndes Einkommen im Jahr vor der Geburt des Kindes. + en: Maximum taxable income in the year before the birth of the child. description: de: >- Maximales zu versteuerndes Einkommen im letzten Veranlagungszeitraum vor Geburt diff --git a/src/_gettsim/parameters/erziehungsgeld.yaml b/src/_gettsim/parameters/erziehungsgeld.yaml index cac3f22726..ebe87a892f 100644 --- a/src/_gettsim/parameters/erziehungsgeld.yaml +++ b/src/_gettsim/parameters/erziehungsgeld.yaml @@ -66,7 +66,7 @@ abschlag_faktor: en: Deduction factor description: de: >- - Faktor zur Berechnung des Abschlag des Erziehungsgeld bei einer + Faktor zur Berechnung des Abschlags des Erziehungsgeldes bei einer Überschreitung der Einkommensgrenze ab dem 7 Lebensmonat. Der Faktor wird mit dem relevanten Einkommen multipliziert und das Produkt entsprechend vom Erziehungsgeld Anspruch abgezogen @@ -75,7 +75,7 @@ abschlag_faktor: exceeding the income threshold after the 7th month of life. The factor is multiplied by the relevant income and the product is deducted from the parental leave benefit entitlement accordingly. - unit: faktor + unit: null reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 note: >- https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ @@ -104,7 +104,7 @@ pauschal_abzug_auf_einkommen: scalar: 0.76 arbeitsstunden_w_grenze: name: - de: Wochenarbeitsstunden Grenze + de: Wochenarbeitsstundengrenze en: Weekly working hours limit description: de: >- @@ -123,6 +123,11 @@ end_age_m_regelsatz: name: de: Alter des Kindes in Monaten bis zu dem der Regelsatz bezogen werden kann. en: Age of the child in months up to which the Regelsatz can be claimed. + description: + de: >- + Alter des Kindes in Monaten bis zu dem der Regelsatz bezogen werden kann. + en: >- + Age of the child in months up to which the Regelsatz can be claimed. reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 2004-01-01: scalar: 24 @@ -130,6 +135,11 @@ end_age_m_budgetsatz: name: de: Alter des Kindes in Monaten bis zu dem der Budgetsatz bezogen werden kann. en: Age of the child in months up to which the Budgetsatz can be claimed. + description: + de: >- + Alter des Kindes in Monaten bis zu dem der Budgetsatz bezogen werden kann. + en: >- + Age of the child in months up to which the Budgetsatz can be claimed. reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 2004-01-01: scalar: 12 diff --git "a/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" "b/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" new file mode 100644 index 0000000000..c14203c9e8 --- /dev/null +++ "b/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" @@ -0,0 +1,192 @@ +--- +grenzen_m: + name: + de: >- + Minijob Grenze und Gleitzone / Midijob Grenze + en: Thresholds for marginal employment ('mini' and 'midi' jobs) + description: + de: Minijob § 8 (1) Nr. 1 SGB IV, Midijob § 20 (2) SGB IV + en: Minijob § 8 (1) Nr. 1 SGB IV, Midijob § 20 (2) SGB IV + unit: Euro + reference_period: Month + 1984-01-01: + minijob: + west: 199 + 1985-01-01: + deviation_from: previous + minijob: + west: 205 + 1986-01-01: + deviation_from: previous + minijob: + west: 210 + 1987-01-01: + deviation_from: previous + minijob: + west: 220 + 1988-01-01: + deviation_from: previous + minijob: + west: 225 + 1989-01-01: + deviation_from: previous + minijob: + west: 230 + 1990-01-01: + minijob: + west: 240 + ost: 102 + 1991-01-01: + minijob: + west: 245 + ost: 120 + 1992-01-01: + minijob: + west: 256 + ost: 153 + 1993-01-01: + minijob: + west: 271 + ost: 199 + 1994-01-01: + minijob: + west: 286 + ost: 225 + 1995-01-01: + minijob: + west: 297 + ost: 240 + 1996-01-01: + minijob: + west: 302 + ost: 256 + 1997-01-01: + minijob: + west: 312 + ost: 266 + 1998-01-01: + deviation_from: previous + minijob: + west: 317 + 1999-01-01: + minijob: + west: 322 + ost: 271 + 2000-01-01: + minijob: 322 + 2002-01-01: + deviation_from: previous + minijob: 325 + 2003-04-01: + minijob: 400 + midijob: 800 + 2013-01-01: + minijob: 450 + midijob: 850 + 2019-01-01: + deviation_from: previous + reference: Art. 4 G. v. 28.11.2018 BGBl. I S. 2016 + midijob: 1300 + 2022-10-01: + minijob: null + midijob: 1600 + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 + note: minijob thresholds now calculated based on statutory minimum wage + 2023-01-01: + deviation_from: previous + midijob: 2000 + reference: Art. 3 G. v. 11.11.2022 BGBl. I S. 1985 +faktor_zähler: + name: + de: Zähler im Faktor für die Berechnung der Geringfügigkeitsgrenze. + en: >- + Numerator in the factor for the calculation of the marginal employment threshold. + description: + de: >- + Faktor, mit dem der Mindestlohn in der Berechnung der Geringfügigkeitsgrenze + multipliziert wird. + en: >- + Factor by which the minimum wage is multiplied to calculate the threshold for + marginal employment. + unit: null + reference: §8 (1a) SGB IV + 2022-10-01: + scalar: 130 + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 +faktor_nenner: + name: + de: Nenner im Faktor für die Berechnung der Geringfügigkeitsgrenze. + en: >- + Denominator in the factor for the calculation of the marginal employment + threshold. + description: + de: >- + Betrag, durch den der Mindestlohn dividiert wird, um die Geringfügigkeitsgrenze zu + erhalten. + en: >- + Amount by which the minimum wage is divided to obtain the marginal employment + threshold. + unit: Euro + reference: §8 (1a) SGB IV + 2022-10-01: + scalar: 3 + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 +arbeitgeberpauschale_lohnsteuer: + name: + de: Pauschalierte Lohnsteuer bei geringfügiger Beschäftigung + en: Fixed income tax rate for marginal employment + description: + de: >- + Pauschalierte Lohnsteuer des Arbeitgebers bei geringfügiger Beschäftigung + (§40a II EStG) + en: Fixed income tax rate for marginal employment (§40a II EStG) + unit: Share + access_different_date: jahresanfang + 1984-01-01: + scalar: 0 + 1999-01-01: + scalar: 0 + 2003-04-01: + scalar: 0.02 + 2007-01-01: + scalar: 0.02 + 2022-10-01: + scalar: null +mindestlohn: + name: + de: Allgemeiner gesetzlicher Mindestlohn pro Stunde + en: Statutory hourly minimum wage + description: + de: >- + Der Mindestlohn ist der niedrigste Stundenlohn, den ein Arbeitgeber für eine + regelmäßige, nicht mehr als 45 Stunden wöchentlich zu leistende Arbeitsleistung + zahlen muss. + en: >- + The minimum wage is the lowest hourly wage that an employer must pay for a + regular, not more than 45 hours weekly work. + unit: Euro + reference: §1 (2) Mindestlohngesetz + 2015-01-01: + scalar: 8.5 + 2017-01-01: + scalar: 8.84 + 2019-01-01: + scalar: 9.19 + 2020-01-01: + scalar: 9.35 + 2021-01-01: + scalar: 9.5 + 2021-07-01: + scalar: 9.6 + 2022-01-01: + scalar: 9.82 + 2022-07-01: + scalar: 10.45 + 2022-10-01: + scalar: 12 + 2024-01-01: + scalar: 12.41 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 + 2025-01-01: + scalar: 12.82 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 diff --git a/src/_gettsim/parameters/ges_krankenv.yaml b/src/_gettsim/parameters/ges_krankenv.yaml new file mode 100644 index 0000000000..b073954ff1 --- /dev/null +++ b/src/_gettsim/parameters/ges_krankenv.yaml @@ -0,0 +1,432 @@ +--- +beitr_satz: + name: + de: Beitragssätze zur gesetzlichen Krankenversicherung + en: Contribution rate to statutory health insurance + description: + de: >- + Beitragssätze für gesetzliche Krankenversicherung. mean_allgemein - + durchschnittlicher Beitragssatz, bis 2008 allgemein - allgemeiner Satz (§241 SGB + V), ab 2009 sonderbeitrag - bezahlt von Arbeitnehmern, ab Jul 2005 bis 2014 + ermäßigt - ermäßigter Satz (§243 SGB V) zusatz - durchschnittlicher + Zusatzbeitragssatz. + en: >- + Statury Contribution Rates for mandatory health insurance. mean_allgemein - + average contribution rate, 1992 to 2008 allgemein - general statutory + contribution rate, since 2009 sonderbeitrag - paid by employees, Jul 2005 to + 2014 ermäßigt - reduced rate zusatz - average top-up contribution rate + unit: Share + access_different_date: jahresanfang + 1984-01-01: + mean_allgemein: 0.1144 + 1985-01-01: + mean_allgemein: 0.118 + 1986-01-01: + mean_allgemein: 0.122 + 1987-01-01: + mean_allgemein: 0.1248 + 1988-01-01: + mean_allgemein: 0.1288 + 1989-01-01: + mean_allgemein: 0.129 + 1990-01-01: + mean_allgemein: 0.125 + 1991-01-01: + mean_allgemein: 0.128 + 1993-01-01: + mean_allgemein: 0.134 + 1995-01-01: + mean_allgemein: 0.132 + 1997-01-01: + mean_allgemein: 0.134 + 1998-01-01: + mean_allgemein: 0.136 + 2000-01-01: + mean_allgemein: 0.1357 + 2001-01-01: + mean_allgemein: 0.1358 + 2002-01-01: + mean_allgemein: 0.14 + 2003-01-01: + mean_allgemein: 0.144 + 2004-01-01: + mean_allgemein: 0.142 + 2005-01-01: + mean_allgemein: 0.142 + 2005-07-01: + mean_allgemein: 0.133 + sonderbeitrag: 0.009 + note: >- + Allgemeiner Beitragssatz wird nicht mehr gleichmäßig aufgeteilt, Einführung des + Sonderbeitrags + reference: Art. 1 G. v. 15.12.2004, BGBl I S. 3445. + 2007-01-01: + deviation_from: previous + mean_allgemein: 0.139 + 2008-01-01: + mean_allgemein: 0.14 + sonderbeitrag: 0.009 + 2009-01-01: + allgemein: 0.146 + sonderbeitrag: 0.009 + ermäßigt: 0.140 + 2009-07-01: + allgemein: 0.14 + sonderbeitrag: 0.009 + ermäßigt: 0.134 + 2011-01-01: + deviation_from: previous + allgemein: 0.146 + ermäßigt: 0.14 + reference: Art. 1 G. v. 22.12.2010 BGBl. I S. 2309 + 2015-01-01: + allgemein: 0.146 + ermäßigt: 0.14 + mean_zusatzbeitrag: 0.009 + note: Abschaffung Sonderbeitrag, Einführung kassenabhängiger Zusatzbeitrag + 2016-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.011 + note: Bekanntmachung Bundesanzeiger 30.12.2015 + 2018-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.01 + 2019-01-01: + allgemein: 0.146 + ermäßigt: 0.14 + mean_zusatzbeitrag: 0.009 + note: Wieder-Einführung der Parität. Art. 2 G. v. 11.12.2018, BGBl. I S. 2387 + 2020-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.011 + reference: BAnz AT 28.10.2019 B3 + 2021-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.013 + reference: BAnz AT 30.10.2020 B5 + 2023-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.016 + reference: BAnz AT 31.10.2022 B5 + 2024-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.017 + reference: BAnz AT 31.10.2023 B3 + 2025-01-01: + deviation_from: previous + mean_zusatzbeitrag: 0.025 + reference: BAnz AT 07.11.2024 B4 +beitr_bemess_grenze_m: + name: + de: Beitragsbemessungsgrenzen für die Krankenversicherung + en: Income Threshold for health insurance + description: + de: Die Beitragsbemessungsgrenze für Kranken- und Pflegeversicherung ist identisch. + en: The income threshold is the same for health and long-term care insurance. + unit: Euro + reference_period: Month + 1984-01-01: + west: 1994 + 1985-01-01: + west: 2071 + 1986-01-01: + west: 2147 + 1987-01-01: + west: 2186 + 1988-01-01: + west: 2301 + 1989-01-01: + west: 2339 + 1990-01-01: + west: 2416 + ost: 1035 + 1991-01-01: + west: 2493 + ost: 1151 + 1992-01-01: + west: 2608 + ost: 1841 + 1993-01-01: + west: 2761 + ost: 2032 + 1994-01-01: + west: 2914 + ost: 2262 + 1995-01-01: + west: 2991 + ost: 2454 + 1996-01-01: + west: 3068 + ost: 2608 + 1997-01-01: + west: 3144 + ost: 2723 + 1998-01-01: + west: 3221 + ost: 2684 + 1999-01-01: + west: 3259 + ost: 2761 + 2000-01-01: + west: 3298 + ost: 2723 + 2001-01-01: + west: 3336 + ost: 3336 + 2002-01-01: + west: 3375 + ost: 3375 + 2003-01-01: + west: 3450 + ost: 3375 + 2004-01-01: + west: 3488 + ost: 3488 + 2005-01-01: + west: 3525 + ost: 3525 + 2006-01-01: + west: 3562.5 + ost: 3562.5 + 2008-01-01: + west: 3600 + ost: 3600 + 2009-01-01: + west: 3675 + ost: 3675 + 2010-01-01: + west: 3750 + ost: 3750 + 2011-01-01: + west: 3712.5 + ost: 3712.5 + 2012-01-01: + west: 3825 + ost: 3825 + 2013-01-01: + west: 3937.5 + ost: 3937.5 + 2014-01-01: + west: 4050 + ost: 4050 + note: >- + http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + 2015-01-01: + west: 4125 + ost: 4125 + 2016-01-01: + west: 4237.5 + ost: 4237.5 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + 2017-01-01: + west: 4350 + ost: 4350 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + 2018-01-01: + west: 4425 + ost: 4425 + 2019-01-01: + west: 4537.5 + ost: 4537.5 + 2020-01-01: + west: 4687.5 + ost: 4687.5 + reference: V. v. 17.12.2019 BGBl. I S. 2848 + 2021-01-01: + west: 4837.5 + ost: 4837.5 + reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + west: 4837.5 + ost: 4837.5 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 4987.5 + ost: 4987.5 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 5175 + ost: 5175 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2025-01-01: + west: 5512.5 + ost: 5512.5 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 +arbeitgeberpauschale_bei_geringfügiger_beschäftigung: + name: + de: >- + Pauschalbeitrag des Arbeitgebers zur Krankenversicherung bei geringfügiger + Beschäftigung + en: Fixed employer health insurance contribution for marginal employment + description: + de: >- + Pauschalbeitrag des Arbeitgebers zur Krankenversicherung (§ 249b SGB V) bei + geringfügiger Beschäftigung + en: Fixed health insurance contributions for marginal employment (§ 249b SGB V) + unit: Share + access_different_date: jahresanfang + 1984-01-01: + scalar: 0 + 1999-01-01: + scalar: 0.1 + 2003-04-01: + scalar: 0.11 + 2007-01-01: + scalar: 0.13 +bezugsgröße_selbst_m: + name: + de: Monatliche Bezugsgröße für Selbstständige + en: Monthly reference size for self employed + description: + de: §18 SGB IV ynd https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + en: §18 SGB IV and https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + unit: Euro + reference_period: Month + 1984-01-01: + west: 1396 + 1985-01-01: + west: 1432 + 1986-01-01: + west: 1467 + 1987-01-01: + west: 1539 + 1988-01-01: + west: 1575 + 1989-01-01: + west: 1611 + 1990-01-01: + west: 1682 + ost: 715.8086336747059 + 1991-01-01: + west: 1718 + ost: 787.3894970421765 + 1992-01-01: + west: 1790 + ost: 1073.712950512059 + 1993-01-01: + west: 1897 + ost: 1395.826835665677 + 1994-01-01: + west: 2004 + ost: 1574.778994084353 + 1995-01-01: + west: 2076 + ost: 1682.150289135559 + 1996-01-01: + west: 2112 + ost: 1789.521584186765 + 1997-01-01: + west: 2183 + ost: 1861.102447554235 + 1998-01-01: + west: 2219 + ost: 1896.892879237971 + 1999-01-01: + west: 2255 + ost: 1896.892879237971 + 2000-01-01: + west: 2291 + ost: 1861.102447554235 + 2001-01-01: + deviation_from: previous + ost: 1932.683310921706 + 2002-01-01: + west: 2345 + ost: 1960 + 2003-01-01: + west: 2380 + ost: 1995 + 2004-01-01: + west: 2415 + ost: 2030 + 2006-01-01: + west: 2450 + ost: 2065 + 2007-01-01: + deviation_from: previous + ost: 2100 + 2008-01-01: + deviation_from: previous + west: 2485 + 2009-01-01: + west: 2520 + ost: 2135 + 2010-01-01: + west: 2555 + ost: 2170 + 2011-01-01: + deviation_from: previous + ost: 2240 + 2012-01-01: + deviation_from: previous + west: 2625 + 2013-01-01: + west: 2695 + ost: 2275 + 2014-01-01: + note: >- + http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + west: 2765 + ost: 2345 + 2015-01-01: + west: 2835 + ost: 2415 + 2016-01-01: + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + west: 2905 + ost: 2520 + 2017-01-01: + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + west: 2975 + ost: 2660 + 2018-01-01: + west: 3045 + ost: 2695 + 2019-01-01: + note: Sozialversicherungs-Rechengrößenverordnung 2019, BGBl I S. 2024, 27.11.2018 + west: 3115 + ost: 2870 + 2020-01-01: + reference: §2 V. v. 17.12.2019 BGBl. I S. 2848 + west: 3185 + ost: 3010 + 2021-01-01: + west: 3290 + ost: 3115 + reference: §2 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + west: 3290 + ost: 3150 + reference: §2 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 3395 + ost: 3290 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 3535 + ost: 3465 + reference: V. v. 29.11.2023 BGBl. 2023 I Nr. 322. + 2025-01-01: + west: 3745 + ost: 3745 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365. +mindestanteil_bezugsgröße_beitragspf_einnahme_selbst: + name: + de: Mindestberechungsbeitrag für Selbstständige als Anteil der Bezugsgröße + en: Minimum contribution for self employed as fraction of Bezugsgröße + description: + de: >- + Als beitragspflichtige Einnahmen gilt für den Kalendertag mindestens der + neunzigste Teil der monatlichen Bezugsgröße (1/90*30) + en: >- + Health Insurance contributions have to be payed, at the minimum, on the ninetieth + part of the monthly Bezugsgröße for each calender day + unit: Share + reference: §240 SGB V Abs. 4 + note: Exact date of introduction of this parameter unclear (was in place in 2006) + 1990-01-01: + scalar: 0.33333333 diff --git a/src/_gettsim/parameters/ges_pflegev.yaml b/src/_gettsim/parameters/ges_pflegev.yaml new file mode 100644 index 0000000000..20e04b7673 --- /dev/null +++ b/src/_gettsim/parameters/ges_pflegev.yaml @@ -0,0 +1,186 @@ +--- +beitr_satz: + name: + de: Beitragssätze zur gesetzlichen Pflegeversicherung + en: Contribution rate to statutory care insurance + description: + de: >- + Beitragssätze für gesetzliche Pflegeversicherung (seit 1995). standard - + Beitragssatz für Arbeitnehmer zusatz_kinderlos - Beitragszuschlag für kinderlose + Versicherte, die das 23. Lebensjahr vollendet haben. Wird vom Arbeitnehmer + alleine getragen. Eingeführt 2005. + en: >- + Statury Contribution Rates for mandatory care insurance (since 1995). standard - + employees contribution rate zusatz_kinderlos - contribution rate for insured + people without children and at least 23 years old. paid by employees. est. 2005 + unit: Share + access_different_date: jahresanfang + 1995-01-01: + scalar: 0.005 + 1997-01-01: + scalar: 0.0085 + 2005-01-01: + standard: 0.0085 + zusatz_kinderlos: 0.0025 + 2008-01-01: + standard: 0.00975 + zusatz_kinderlos: 0.0025 + 2013-01-01: + deviation_from: previous + standard: 0.01025 + 2015-01-01: + standard: 0.01175 + zusatz_kinderlos: 0.0025 + 2017-01-01: + deviation_from: previous + standard: 0.01275 + 2019-01-01: + standard: 0.01525 + zusatz_kinderlos: 0.0025 + 2022-01-01: + deviation_from: previous + zusatz_kinderlos: 0.0035 + reference: Art. 2 Nr. 14 G. v. 11.07.2021, BGBl. I S. 2754. + 2023-07-01: + standard: 0.017 + zusatz_kinderlos: 0.006 + abschlag_kinder: 0.0025 + note: >- + Pflegeunterstützungs- und -entlastungsgesetz - PUEG + Increase of contribution rates for ges_pflegev and introduction of reduction of + contribution rates for people with children. + 2025-01-01: + deviation_from: previous + standard: 0.018 + reference: >- + Pflege-Beitragssatz-Anpassungsverordnung 2025, Bundestag-Drucksache 20/1371 +beitr_bemess_grenze_m: + name: + de: Beitragsbemessungsgrenzen für die Pflegeversicherung + en: Income Threshold for care insurance + description: + de: Die Beitragsbemessungsgrenze für Kranken- und Pflegeversicherung ist identisch. + en: The income threshold is the same for health and long-term care insurance. + unit: Euro + reference_period: Month + 1995-01-01: + west: 2991 + ost: 2454 + 1996-01-01: + west: 3068 + ost: 2608 + 1997-01-01: + west: 3144 + ost: 2723 + 1998-01-01: + west: 3221 + ost: 2684 + 1999-01-01: + west: 3259 + ost: 2761 + 2000-01-01: + west: 3298 + ost: 2723 + 2001-01-01: + west: 3336 + ost: 3336 + 2002-01-01: + west: 3375 + ost: 3375 + 2003-01-01: + west: 3450 + ost: 3375 + 2004-01-01: + west: 3488 + ost: 3488 + 2005-01-01: + west: 3525 + ost: 3525 + 2006-01-01: + west: 3562.5 + ost: 3562.5 + 2008-01-01: + west: 3600 + ost: 3600 + 2009-01-01: + west: 3675 + ost: 3675 + 2010-01-01: + west: 3750 + ost: 3750 + 2011-01-01: + deviation_from: previous + west: 3712.5 + ost: 3712.5 + 2012-01-01: + deviation_from: previous + west: 3825 + ost: 3825 + 2013-01-01: + west: 3937.5 + ost: 3937.5 + 2014-01-01: + west: 4050 + ost: 4050 + note: >- + http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + 2015-01-01: + west: 4125 + ost: 4125 + 2016-01-01: + west: 4237.5 + ost: 4237.5 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + 2017-01-01: + west: 4350 + ost: 4350 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + 2018-01-01: + west: 4425 + ost: 4425 + 2019-01-01: + west: 4537.5 + ost: 4537.5 + 2020-01-01: + west: 4687.5 + ost: 4687.5 + reference: V. v. 17.12.2019 BGBl. I S. 2848 + 2021-01-01: + west: 4837.5 + ost: 4837.5 + reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + deviation_from: previous + west: 4837.5 + ost: 4837.5 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 4987.5 + ost: 4987.5 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 5175 + ost: 5175 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2025-01-01: + west: 5512.5 + ost: 5512.5 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 +zusatz_kinderlos_mindestalter: + name: + de: Mindestalter Beitragszuschlag für Kinderlose + en: Minimum age for additional contribution for childless + description: + de: >- + Kinderlose Mitglieder der sozialen Pflegeversicherung, die das 23. Lebensjahr + vollendet haben, müssen seit dem 1. Januar 2005 einen erhöhten Beitragssatz + entrichten. + en: >- + Childless members of the social care insurance, who have reached the age of 23, + have to pay a higher contribution rate since January 1, 2005. + unit: Year + reference: § 55 Abs. 3 SGB XI, KiBG Art. 1 + 2005-01-01: + scalar: 23 diff --git a/src/_gettsim/parameters/ges_rente.yaml b/src/_gettsim/parameters/ges_rente.yaml index 801d134b6d..677fcebebe 100644 --- a/src/_gettsim/parameters/ges_rente.yaml +++ b/src/_gettsim/parameters/ges_rente.yaml @@ -1934,6 +1934,12 @@ altersgrenze_arbeitsl_vorzeitig: 12: 63.0 vertrauensschutz: 60.0 first_birthyear_without_rente_für_arbeitsl: + name: + de: Erster Geburtsjahrgang ohne Rente für Arbeitslose + en: First birth cohort without pension for unemployed + description: + de: >- + Erster Geburtsjahrgang ohne Rente für Arbeitslose reference: Rentenreformgesetz 1999. BGBl. I S. 2998 1997 note: Abolishment starting from birth cohort 1952. 1997-12-16: @@ -1975,6 +1981,11 @@ altersgrenze_langj_versicherte_abschlagsfrei: name: de: Eintrittsalter für langjährig Versicherte - abschlagsfrei en: Entry age for long term insured (35 insurance years) without deductions (FRA) + description: + de: >- + Eintrittsalter für langjährig Versicherte - abschlagsfrei + en: >- + Entry age for long term insured (35 insurance years) without deductions (FRA) reference: § 236 SGB VI note: de: >- @@ -2388,6 +2399,12 @@ mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge: angerechnet werden. en: >- Minimum statutory contribution years for the inclusion of voluntary contributions + description: + de: >- + Anzahl der Mindestpflichtbeitragsjahre, von der an freiwillige Beiträge + angerechnet werden. + en: >- + Minimum statutory contribution years for the inclusion of voluntary contributions reference: § 51 Abs. 3a SGB VI note: https://www.gesetze-im-internet.de/sgb_6/__51.html 1980-01-01: @@ -2396,6 +2413,11 @@ abzugsrate_hinzuverdienst: name: de: Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze en: Deduction rate for additional earnings during early retirement + description: + de: >- + Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze + en: >- + Deduction rate for additional earnings during early retirement reference: § 34 SGB VI; Artikel 1 G. v. 08.12.2016 BGBl. I S. 2838 note: Revoked in 2017. 2017-07-01: @@ -2404,6 +2426,11 @@ hinzuverdienstgrenze: name: de: Hinzuverdienstgrenze vor der Regelaltersgrenze en: Additional earnings threshold during early retirement + description: + de: >- + Hinzuverdienstgrenze vor der Regelaltersgrenze + en: >- + Additional earnings threshold during early retirement reference: § 34 SGB VI note: Revoked in 2023. 2002-01-01: diff --git a/src/_gettsim/parameters/ges_rentenv.yaml b/src/_gettsim/parameters/ges_rentenv.yaml new file mode 100644 index 0000000000..4a6c6a8f6a --- /dev/null +++ b/src/_gettsim/parameters/ges_rentenv.yaml @@ -0,0 +1,236 @@ +--- +beitr_satz: + name: + de: Beitragssätze zur gesetzlichen Rentenversicherung + en: Contribution rate to statutory pension insurance + description: + de: >- + Beitragssätze zur allgemeinen Rentenversicherung für Arbeitnehmer. + en: >- + Employees contribution rate for pension insurance. + unit: Share + access_different_date: jahresanfang + 1984-01-01: + scalar: 0.0925 + 1985-01-01: + scalar: 0.0935 + 1986-01-01: + scalar: 0.096 + 1987-01-01: + scalar: 0.0935 + 1992-01-01: + deviation_from: previous + scalar: 0.0885 + 1993-01-01: + scalar: 0.0875 + 1994-01-01: + deviation_from: previous + scalar: 0.096 + 1995-01-01: + scalar: 0.093 + 1996-01-01: + deviation_from: previous + scalar: 0.096 + 1997-01-01: + scalar: 0.1015 + 2000-01-01: + deviation_from: previous + scalar: 0.0965 + 2001-01-01: + deviation_from: previous + scalar: 0.0955 + 2003-01-01: + deviation_from: previous + scalar: 0.0975 + 2005-01-01: + scalar: 0.0975 + 2007-01-01: + deviation_from: previous + scalar: 0.0995 + 2008-01-01: + scalar: 0.0995 + 2012-01-01: + deviation_from: previous + scalar: 0.098 + note: >- + Quelle + http://www.bmas.de/DE/Service/Presse/Pressemitteilungen/rentenbericht-16-11-2011.html + 2013-01-01: + deviation_from: previous + scalar: 0.0945 + 2015-01-01: + scalar: 0.0935 + 2018-01-01: + deviation_from: previous + scalar: 0.093 + 2019-01-01: + scalar: 0.093 +beitr_bemess_grenze_m: + name: + de: Beitragsbemessungsgrenzen für die Rentenversicherung + en: Income Threshold for pension insurance + description: + de: Beitragsbemessungsgrenze für die gesetzliche Rentenversicherung. + en: Income threshold for statutory pension insurance. + unit: Euro + reference_period: Month + 1984-01-01: + west: 2659 + 1985-01-01: + west: 2761 + 1986-01-01: + west: 2863 + 1987-01-01: + west: 2914 + 1988-01-01: + west: 3068 + 1989-01-01: + west: 3119 + 1990-01-01: + west: 3221 + ost: 1380 + 1991-01-01: + west: 3323 + ost: 1534 + 1992-01-01: + west: 3477 + ost: 2454 + 1993-01-01: + west: 3681 + ost: 2710 + 1994-01-01: + west: 3886 + ost: 3017 + 1995-01-01: + west: 3988 + ost: 3272 + 1996-01-01: + west: 4090 + ost: 3477 + 1997-01-01: + west: 4193 + ost: 3630 + 1998-01-01: + west: 4295 + ost: 3579 + 1999-01-01: + west: 4339 + ost: 3681 + 2000-01-01: + west: 4397 + ost: 3630 + 2001-01-01: + west: 4448 + ost: 3732 + 2002-01-01: + west: 4500 + ost: 3750 + 2003-01-01: + west: 5100 + ost: 4250 + 2004-01-01: + west: 5150 + ost: 4350 + 2005-01-01: + west: 5200 + ost: 4400 + 2006-01-01: + west: 5250 + ost: 4400 + 2007-01-01: + deviation_from: previous + west: 5250 + ost: 4550 + 2008-01-01: + west: 5300 + ost: 4500 + 2009-01-01: + west: 5400 + ost: 4550 + 2010-01-01: + west: 5500 + ost: 4650 + 2011-01-01: + deviation_from: previous + west: 5500 + ost: 4800 + 2012-01-01: + deviation_from: previous + west: 5600 + ost: 4800 + 2013-01-01: + west: 5800 + ost: 4900 + 2014-01-01: + west: 5950 + ost: 5000 + note: >- + http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + 2015-01-01: + west: 6050 + ost: 5200 + 2016-01-01: + west: 6200 + ost: 5400 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + 2017-01-01: + west: 6350 + ost: 5700 + note: >- + https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + 2018-01-01: + west: 6500 + ost: 5800 + 2019-01-01: + west: 6700 + ost: 6150 + 2020-01-01: + west: 6900 + ost: 6450 + reference: V. v. 17.12.2019 BGBl. I S. 2848 + 2021-01-01: + west: 7100 + ost: 6700 + reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + deviation_from: previous + west: 7050 + ost: 6750 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 7300 + ost: 7100 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 7550 + ost: 7450 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2025-01-01: + west: 8050 + ost: 8050 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 +arbeitgeberpauschale_bei_geringfügiger_beschäftigung: + name: + de: >- + Pauschalbeitrag des Arbeitgebers zur Rentenversicherung bei geringfügiger + Beschäftigung + en: >- + Fixed employer pension insurance contribution for marginal employment + description: + de: >- + Pauschalbetrag zur Rentenversicherung (§ 168 I Nr. 1b SGB VI) bei geringfügiger + Beschäftigung + en: >- + Fixed pension insurance contributions for marginal employment + (§ 168 I Nr. 1b SGB VI) + unit: Share + access_different_date: jahresanfang + 1984-01-01: + scalar: 0 + 1999-01-01: + scalar: 0.12 + 2003-04-01: + scalar: 0.12 + 2007-01-01: + scalar: 0.15 diff --git a/src/_gettsim/parameters/kinderzuschl.yaml b/src/_gettsim/parameters/kinderzuschl.yaml index 189db93bd2..141e3a51fd 100644 --- a/src/_gettsim/parameters/kinderzuschl.yaml +++ b/src/_gettsim/parameters/kinderzuschl.yaml @@ -60,8 +60,8 @@ kindersofortzuschl: steigt der Höchstbetrag im Kinderzuschlag um 20 Euro. en: >- With the introduction of the immediate supplement from July 1, 2022, - the maximum amount in the child supplement increases by 20 euros. - unit: Euros + the maximum amount in the child supplement increases by 20 Euro. + unit: Euro reference: § 6a Abs. 2 Satz 4 BKGG 2022-07-01: scalar: 20 diff --git a/src/_gettsim/parameters/lohnst.yaml b/src/_gettsim/parameters/lohnst.yaml index 2d6d796330..270a3bdd05 100644 --- a/src/_gettsim/parameters/lohnst.yaml +++ b/src/_gettsim/parameters/lohnst.yaml @@ -11,7 +11,7 @@ lohnst_einkommensgrenzen: Thresholds for withholding tax classes 5 and 6, where minimum and maximum tax rates apply. reference: § 39b Absatz 2 Satz 7 EStG - unit: Euros + unit: Euro reference_period: Year 2002-01-01: 0: 8946 diff --git a/src/_gettsim/parameters/sozialv_beitr.yaml b/src/_gettsim/parameters/sozialv_beitr.yaml deleted file mode 100644 index a340f8e176..0000000000 --- a/src/_gettsim/parameters/sozialv_beitr.yaml +++ /dev/null @@ -1,929 +0,0 @@ ---- -beitr_satz: - name: - de: Beitragssätze zu den gesetzlichen Sozialversicherungen - en: Contribution rate to statutory social insurances - description: - de: - ges_krankenv: >- - Beitragssätze für gesetzliche Krankenversicherung. mean_allgemein - - durchschnittlicher Beitragssatz, bis 2008 allgemein - allgemeiner Satz (§241 SGB - V), ab 2009 sonderbeitrag - bezahlt von Arbeitnehmern, ab Jul 2005 bis 2014 - ermäßigt - ermäßigter Satz (§243 SGB V) zusatz - durchschnittlicher - Zusatzbeitragssatz. - ges_pflegev: >- - Beitragssätze für gesetzliche Pflegeversicherung (seit 1995). standard - - Beitragssatz für Arbeitnehmer zusatz_kinderlos - Beitragszuschlag für kinderlose - Versicherte, die das 23. Lebensjahr vollendet haben. Wird vom Arbeitnehmer - alleine getragen. Eingeführt 2005. - arbeitslosenversicherung: >- - Beitragssätze zur Arbeitslosenversicherung für Arbeitnehmer. - ges_rentenv: >- - Beitragssätze zur allgemeinen Rentenversicherung für Arbeitnehmer. - en: - ges_krankenv: >- - Statury Contribution Rates for mandatory health insurance. mean_allgemein - - average contribution rate, 1992 to 2008 allgemein - general statutory - contribution rate, since 2009 sonderbeitrag - paid by employees, Jul 2005 to - 2014 ermäßigt - reduced rate zusatz - average top-up contribution rate - ges_pflegev: >- - Statury Contribution Rates for mandatory care insurance (since 1995). standard - - employees contribution rate zusatz_kinderlos - contribution rate for insured - people without children and at least 23 years old. paid by employees. est. 2005 - arbeitslosenversicherung: employees contribution rate for unemployment insurance. - ges_rentenv: employees contribution rate for pension insurance. - unit: Share - access_different_date: jahresanfang - 1984-01-01: - ges_krankenv: - mean_allgemein: 0.1144 - arbeitslosenversicherung: 0.023 - ges_rentenv: 0.0925 - 1985-01-01: - ges_krankenv: - mean_allgemein: 0.118 - arbeitslosenversicherung: 0.022 - ges_rentenv: 0.0935 - 1986-01-01: - ges_krankenv: - mean_allgemein: 0.122 - arbeitslosenversicherung: 0.0205 - ges_rentenv: 0.096 - 1987-01-01: - ges_krankenv: - mean_allgemein: 0.1248 - arbeitslosenversicherung: 0.0215 - ges_rentenv: 0.0935 - 1988-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.1288 - 1989-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.129 - 1990-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.125 - 1991-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: .128 - 1992-01-01: - deviation_from: previous - arbeitslosenversicherung: 0.0315 - ges_rentenv: 0.0885 - 1993-01-01: - ges_krankenv: - mean_allgemein: 0.134 - arbeitslosenversicherung: 0.0325 - ges_rentenv: 0.0875 - 1994-01-01: - deviation_from: previous - ges_rentenv: 0.096 - 1995-01-01: - arbeitslosenversicherung: 0.0325 - ges_krankenv: - mean_allgemein: 0.132 - ges_pflegev: 0.005 - ges_rentenv: 0.093 - 1996-01-01: - deviation_from: previous - ges_rentenv: 0.096 - 1997-01-01: - ges_krankenv: - mean_allgemein: 0.134 - ges_pflegev: 0.0085 - arbeitslosenversicherung: 0.0325 - ges_rentenv: 0.1015 - 1998-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.136 - 2000-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.1357 - ges_rentenv: 0.0965 - 2001-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.1358 - ges_rentenv: 0.0955 - 2002-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.14 - 2003-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.144 - ges_rentenv: 0.0975 - 2004-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.142 - 2005-01-01: - ges_krankenv: - mean_allgemein: 0.142 - ges_pflegev: - standard: 0.0085 - zusatz_kinderlos: 0.0025 - arbeitslosenversicherung: 0.0325 - ges_rentenv: 0.0975 - 2005-07-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.133 - sonderbeitrag: 0.009 - note: >- - Allgemeiner Beitragssatz wird nicht mehr gleichmäßig aufgeteilt, Einführung des - Sonderbeitrags - reference: Art. 1 G. v. 15.12.2004, BGBl I S. 3445. - 2007-01-01: - deviation_from: previous - ges_krankenv: - mean_allgemein: 0.139 - arbeitslosenversicherung: 0.021 - ges_rentenv: 0.0995 - 2008-01-01: - ges_krankenv: - mean_allgemein: 0.14 - sonderbeitrag: 0.009 - ges_pflegev: - standard: 0.00975 - zusatz_kinderlos: 0.0025 - arbeitslosenversicherung: 0.016 - ges_rentenv: 0.0995 - 2009-01-01: - deviation_from: previous - ges_krankenv: - allgemein: 0.146 - sonderbeitrag: 0.009 - ermäßigt: 0.140 - arbeitslosenversicherung: 0.014 - 2009-07-01: - deviation_from: previous - ges_krankenv: - allgemein: 0.14 - ermäßigt: 0.134 - sonderbeitrag: 0.009 - 2011-01-01: - deviation_from: previous - ges_krankenv: - allgemein: 0.146 - ermäßigt: 0.14 - reference: Art. 1 G. v. 22.12.2010 BGBl. I S. 2309 - arbeitslosenversicherung: 0.015 - 2012-01-01: - deviation_from: previous - ges_rentenv: 0.098 - note: >- - Quelle - http://www.bmas.de/DE/Service/Presse/Pressemitteilungen/rentenbericht-16-11-2011.html - 2013-01-01: - deviation_from: previous - ges_rentenv: 0.0945 - ges_pflegev: - standard: 0.01025 - 2015-01-01: - ges_krankenv: - allgemein: 0.146 - ermäßigt: 0.14 - mean_zusatzbeitrag: 0.009 - ges_pflegev: - standard: 0.01175 - zusatz_kinderlos: 0.0025 - arbeitslosenversicherung: 0.015 - ges_rentenv: 0.0935 - note: Abschaffung Sonderbeitrag, Einführung kassenabhängiger Zusatzbeitrag - 2016-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.011 - note: Bekanntmachung Bundesanzeiger 30.12.2015 - 2017-01-01: - deviation_from: previous - ges_pflegev: - standard: 0.01275 - 2018-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.01 - ges_rentenv: 0.093 - 2019-01-01: - ges_krankenv: - allgemein: 0.146 - ermäßigt: 0.14 - mean_zusatzbeitrag: 0.009 - ges_pflegev: - standard: 0.01525 - zusatz_kinderlos: 0.0025 - arbeitslosenversicherung: 0.0125 - ges_rentenv: 0.093 - note: >- - Wieder-Einführung der Parität. Art. 2 G. v. 11.12.2018, BGBl. I S. 2387 - (arbeitslosenversicherung:) Set to 0.026 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I - S. 2651. Temporarily reduced to 0.025 in BeiSaV 2019. - reference: >- - (arbeitslosenversicherung:) V. v. 21.12.2018 BGBl. I S. 2663 - 2020-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.011 - arbeitslosenversicherung: 0.012 - note: (arbeitslosenversicherung:) Temporarily reduced to 0.024 in BeiSaV 2019. - reference: >- - (ges_krankenv mean_zusatzbeitrag:) BAnz AT 28.10.2019 B3 - (arbeitslosenversicherung:) V. v. 02.12.2019 BGBl. I S. 1998 - 2021-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.013 - reference: >- - (ges_krankenv mean_zusatzbeitrag:) BAnz AT 30.10.2020 B5 - 2022-01-01: - deviation_from: previous - ges_pflegev: - zusatz_kinderlos: 0.0035 - reference: Art. 2 Nr. 14 G. v. 11.07.2021, BGBl. I S. 2754. - 2023-01-01: - deviation_from: previous - arbeitslosenversicherung: 0.013 - ges_krankenv: - mean_zusatzbeitrag: 0.016 - note: >- - Contribution rate for arbeitslosenversicherung was temporarily reduced from 2019 - to 2022 in BeiSaV 2019. Now back to level specified in § 341 Abs. 2 SGB III. - reference: >- - (arbeitslosenversicherung:) Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 - (ges_krankenv mean_zusatzbeitrag:) BAnz AT 31.10.2022 B5 - 2023-07-01: - deviation_from: previous - ges_pflegev: - standard: 0.017 - zusatz_kinderlos: 0.006 - abschlag_kinder: 0.0025 - note: >- - Pflegeunterstützungs- und -entlastungsgesetz - PUEG - Increase of contribution rates for ges_pflegev and introduction of reduction of - contribution rates for people with children. - 2024-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.017 - reference: BAnz AT 31.10.2023 B3 - 2025-01-01: - deviation_from: previous - ges_krankenv: - mean_zusatzbeitrag: 0.025 - reference: BAnz AT 07.11.2024 B4 - ges_pflegev: - standard: 0.018 - reference: >- - Pflege-Beitragssatz-Anpassungsverordnung 2025, Bundestag-Drucksache 20/1371 -beitr_bemess_grenze_m: - name: - de: Beitragsbemessungsgrenzen für die Sozialversicherungsbeiträge - en: Income Threshold for social insurance. - description: - de: Die Beitragsbemessungsgrenze für Kranken- und Pflegeversicherung ist identisch. - en: null - note: - de: null - en: null - unit: Euro - reference_period: Month - 1984-01-01: - ges_krankenv: - west: 1994 - ges_rentenv: - west: 2659 - 1985-01-01: - ges_krankenv: - west: 2071 - ges_rentenv: - west: 2761 - 1986-01-01: - ges_krankenv: - west: 2147 - ges_rentenv: - west: 2863 - 1987-01-01: - ges_krankenv: - west: 2186 - ges_rentenv: - west: 2914 - 1988-01-01: - ges_krankenv: - west: 2301 - ges_rentenv: - west: 3068 - 1989-01-01: - ges_krankenv: - west: 2339 - ges_rentenv: - west: 3119 - 1990-01-01: - ges_krankenv: - west: 2416 - ost: 1035 - ges_rentenv: - west: 3221 - ost: 1380 - 1991-01-01: - ges_krankenv: - west: 2493 - ost: 1151 - ges_rentenv: - west: 3323 - ost: 1534 - 1992-01-01: - ges_krankenv: - west: 2608 - ost: 1841 - ges_rentenv: - west: 3477 - ost: 2454 - 1993-01-01: - ges_krankenv: - west: 2761 - ost: 2032 - ges_rentenv: - west: 3681 - ost: 2710 - 1994-01-01: - ges_krankenv: - west: 2914 - ost: 2262 - ges_rentenv: - west: 3886 - ost: 3017 - 1995-01-01: - ges_krankenv: - west: 2991 - ost: 2454 - ges_rentenv: - west: 3988 - ost: 3272 - 1996-01-01: - ges_krankenv: - west: 3068 - ost: 2608 - ges_rentenv: - west: 4090 - ost: 3477 - 1997-01-01: - ges_krankenv: - west: 3144 - ost: 2723 - ges_rentenv: - west: 4193 - ost: 3630 - 1998-01-01: - ges_krankenv: - west: 3221 - ost: 2684 - ges_rentenv: - west: 4295 - ost: 3579 - 1999-01-01: - ges_krankenv: - west: 3259 - ost: 2761 - ges_rentenv: - west: 4339 - ost: 3681 - 2000-01-01: - ges_krankenv: - west: 3298 - ost: 2723 - ges_rentenv: - west: 4397 - ost: 3630 - 2001-01-01: - ges_krankenv: - west: 3336 - ost: 3336 - ges_rentenv: - west: 4448 - ost: 3732 - 2002-01-01: - ges_krankenv: - west: 3375 - ost: 3375 - ges_rentenv: - west: 4500 - ost: 3750 - 2003-01-01: - ges_krankenv: - west: 3450 - ost: 3375 - ges_rentenv: - west: 5100 - ost: 4250 - 2004-01-01: - ges_krankenv: - west: 3488 - ost: 3488 - ges_rentenv: - west: 5150 - ost: 4350 - 2005-01-01: - ges_krankenv: - west: 3525 - ost: 3525 - ges_rentenv: - west: 5200 - ost: 4400 - 2006-01-01: - ges_krankenv: - west: 3562.5 - ost: 3562.5 - ges_rentenv: - west: 5250 - ost: 4400 - 2007-01-01: - deviation_from: previous - ges_rentenv: - ost: 4550 - 2008-01-01: - ges_krankenv: - west: 3600 - ost: 3600 - ges_rentenv: - west: 5300 - ost: 4500 - 2009-01-01: - ges_krankenv: - west: 3675 - ost: 3675 - ges_rentenv: - west: 5400 - ost: 4550 - 2010-01-01: - ges_krankenv: - west: 3750 - ost: 3750 - ges_rentenv: - west: 5500 - ost: 4650 - 2011-01-01: - deviation_from: previous - ges_krankenv: - west: 3712.5 - ost: 3712.5 - ges_rentenv: - ost: 4800 - 2012-01-01: - deviation_from: previous - ges_krankenv: - west: 3825 - ost: 3825 - ges_rentenv: - west: 5600 - 2013-01-01: - ges_krankenv: - west: 3937.5 - ost: 3937.5 - ges_rentenv: - west: 5800 - ost: 4900 - 2014-01-01: - ges_krankenv: - west: 4050 - ost: 4050 - ges_rentenv: - west: 5950 - ost: 5000 - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - 2015-01-01: - ges_krankenv: - west: 4125 - ost: 4125 - ges_rentenv: - west: 6050 - ost: 5200 - 2016-01-01: - ges_krankenv: - west: 4237.5 - ost: 4237.5 - ges_rentenv: - west: 6200 - ost: 5400 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - 2017-01-01: - ges_krankenv: - west: 4350 - ost: 4350 - ges_rentenv: - west: 6350 - ost: 5700 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - 2018-01-01: - ges_krankenv: - west: 4425 - ost: 4425 - ges_rentenv: - west: 6500 - ost: 5800 - 2019-01-01: - ges_krankenv: - west: 4537.5 - ost: 4537.5 - ges_rentenv: - west: 6700 - ost: 6150 - 2020-01-01: - ges_krankenv: - west: 4687.5 - ost: 4687.5 - ges_rentenv: - west: 6900 - ost: 6450 - reference: V. v. 17.12.2019 BGBl. I S. 2848 - 2021-01-01: - ges_krankenv: - west: 4837.5 - ost: 4837.5 - ges_rentenv: - west: 7100 - ost: 6700 - reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - deviation_from: previous - ges_rentenv: - west: 7050 - ost: 6750 - reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - ges_krankenv: - west: 4987.5 - ost: 4987.5 - ges_rentenv: - west: 7300 - ost: 7100 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - ges_krankenv: - west: 5175 - ost: 5175 - ges_rentenv: - west: 7550 - ost: 7450 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - 2025-01-01: - ges_krankenv: - west: 5512.5 - ost: 5512.5 - ges_rentenv: - west: 8050 - ost: 8050 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 -bezugsgröße_selbst_m: - name: - de: Monatliche Bezugsgröße - en: Monthly reference size - description: - de: §18 SGB IV and https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe - en: null - unit: Euro - reference_period: Month - 1984-01-01: - west: 1396 - 1985-01-01: - west: 1432 - 1986-01-01: - west: 1467 - 1987-01-01: - west: 1539 - 1988-01-01: - west: 1575 - 1989-01-01: - west: 1611 - 1990-01-01: - west: 1682 - ost: 715.8086336747059 - 1991-01-01: - west: 1718 - ost: 787.3894970421765 - 1992-01-01: - west: 1790 - ost: 1073.712950512059 - 1993-01-01: - west: 1897 - ost: 1395.826835665677 - 1994-01-01: - west: 2004 - ost: 1574.778994084353 - 1995-01-01: - west: 2076 - ost: 1682.150289135559 - 1996-01-01: - west: 2112 - ost: 1789.521584186765 - 1997-01-01: - west: 2183 - ost: 1861.102447554235 - 1998-01-01: - west: 2219 - ost: 1896.892879237971 - 1999-01-01: - west: 2255 - ost: 1896.892879237971 - 2000-01-01: - west: 2291 - ost: 1861.102447554235 - 2001-01-01: - deviation_from: previous - ost: 1932.683310921706 - 2002-01-01: - west: 2345 - ost: 1960 - 2003-01-01: - west: 2380 - ost: 1995 - 2004-01-01: - west: 2415 - ost: 2030 - 2006-01-01: - west: 2450 - ost: 2065 - 2007-01-01: - deviation_from: previous - ost: 2100 - 2008-01-01: - deviation_from: previous - west: 2485 - 2009-01-01: - west: 2520 - ost: 2135 - 2010-01-01: - west: 2555 - ost: 2170 - 2011-01-01: - deviation_from: previous - ost: 2240 - 2012-01-01: - deviation_from: previous - west: 2625 - 2013-01-01: - west: 2695 - ost: 2275 - 2014-01-01: - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - west: 2765 - ost: 2345 - 2015-01-01: - west: 2835 - ost: 2415 - 2016-01-01: - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - west: 2905 - ost: 2520 - 2017-01-01: - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - west: 2975 - ost: 2660 - 2018-01-01: - west: 3045 - ost: 2695 - 2019-01-01: - note: Sozialversicherungs-Rechengrößenverordnung 2019, BGBl I S. 2024, 27.11.2018 - west: 3115 - ost: 2870 - 2020-01-01: - reference: §2 V. v. 17.12.2019 BGBl. I S. 2848 - west: 3185 - ost: 3010 - 2021-01-01: - west: 3290 - ost: 3115 - reference: §2 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - west: 3290 - ost: 3150 - reference: §2 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - west: 3395 - ost: 3290 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - west: 3535 - ost: 3465 - reference: V. v. 29.11.2023 BGBl. 2023 I Nr. 322. - 2025-01-01: - west: 3745 - ost: 3745 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365. -mindestanteil_bezugsgröße_beitragspf_einnahme_selbst: - name: - de: Mindestberechungsbeitrag für Selbstständige als Anteil der Bezugsgröße - en: Minimum contribution for self employed as fraction of Bezugsgröße - description: - de: >- - Als beitragspflichtige Einnahmen gilt für den Kalendertag mindestens der - neunzigste Teil der monatlichen Bezugsgröße (1/90*30) - en: >- - Health Insurance contributions have to be payed, at the minimum, on the ninetieth - part of the monthly Bezugsgröße for each calender day - unit: Share - reference: §240 SGB V Abs. 4 - note: Exact date of introduction of this parameter unclear (was in place in 2006) - 1990-01-01: - scalar: 0.33333333 -geringfügige_eink_grenzen_m: - name: - de: >- - Gleitzone (Midijob Grenze) und Minijob Grenze (bis 1999 unterschiedliche Grenzen) - en: Thresholds for marginal employment ('mini' and 'midi' jobs) - description: - de: Midijob § 20 (2) SGB IV, Minijob § 8 (1) Nr. 1 SGB IV - en: null - unit: Euro - reference_period: Month - 1984-01-01: - minijob: - west: 199 - 1985-01-01: - deviation_from: previous - minijob: - west: 205 - 1986-01-01: - deviation_from: previous - minijob: - west: 210 - 1987-01-01: - deviation_from: previous - minijob: - west: 220 - 1988-01-01: - deviation_from: previous - minijob: - west: 225 - 1989-01-01: - deviation_from: previous - minijob: - west: 230 - 1990-01-01: - minijob: - west: 240 - ost: 102 - 1991-01-01: - minijob: - west: 245 - ost: 120 - 1992-01-01: - minijob: - west: 256 - ost: 153 - 1993-01-01: - minijob: - west: 271 - ost: 199 - 1994-01-01: - minijob: - west: 286 - ost: 225 - 1995-01-01: - minijob: - west: 297 - ost: 240 - 1996-01-01: - minijob: - west: 302 - ost: 256 - 1997-01-01: - minijob: - west: 312 - ost: 266 - 1998-01-01: - deviation_from: previous - minijob: - west: 317 - 1999-01-01: - minijob: - west: 322 - ost: 271 - 2000-01-01: - minijob: 322 - 2002-01-01: - minijob: 325 - 2003-04-01: - minijob: 400 - midijob: 800 - 2013-01-01: - minijob: 450 - midijob: 850 - 2019-01-01: - deviation_from: previous - reference: Art. 4 G. v. 28.11.2018 BGBl. I S. 2016 - midijob: 1300 - 2022-10-01: - minijob: null - midijob: 1600 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 - note: minijob thresholds now calculated based on statutory minimum wage - 2023-01-01: - deviation_from: previous - midijob: 2000 - reference: Art. 3 G. v. 11.11.2022 BGBl. I S. 1985 -geringf_eink_faktor: - name: - de: >- - Faktor, mit dem der Mindestlohn in der Berechnung der Geringfügigkeitsgrenze - multipliziert wird. - reference: §8 (1a) SGB IV - 2022-10-01: - scalar: 130 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 -geringf_eink_divisor: - name: - de: >- - Betrag, durch den der Mindestlohn, multipliziert mit gering_eink_faktor, dividiert - wird, um die Geringfügigkeitsgrenze zu erhalten. - reference: §8 (1a) SGB IV - 2022-10-01: - scalar: 3 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 -ag_abgaben_geringf: - name: - de: Pauschalabgaben bei geringf. Beschäftigung - en: null - description: - de: >- - Pauschalbeitrag zur Krankenversicherung (§ 249b SGB V), Pauschalbetrag zur - Rentenversicherung (§ 168 I Nr. 1b SGB VI), Pauschalierte Lohnsteuer (§40a II - EStG) - en: null - unit: Share - access_different_date: jahresanfang - 1984-01-01: - ges_krankenv: 0 - ges_rentenv: 0 - st: 0 - 1999-01-01: - ges_krankenv: 0.1 - ges_rentenv: 0.12 - st: 0 - 2003-04-01: - ges_krankenv: 0.11 - ges_rentenv: 0.12 - st: 0.02 - 2007-01-01: - ges_krankenv: 0.13 - ges_rentenv: 0.15 - st: 0.02 -ges_pflegev_zusatz_kinderlos_mindestalter: - name: - de: Mindestalter Beitragszuschlag für Kinderlose - en: Minimum age for additional contribution for childless - description: - de: >- - Kinderlose Mitglieder der sozialen Pflegeversicherung, die das 23. Lebensjahr - vollendet haben, müssen seit dem 1. Januar 2005 einen erhöhten Beitragssatz - entrichten. - en: >- - Childless members of the social care insurance, who have reached the age of 23, - have to pay a higher contribution rate since January 1, 2005. - unit: Year - reference: § 55 Abs. 3 SGB XI, KiBG Art. 1 - 2005-01-01: - scalar: 23 -mindestlohn: - name: - de: Allgemeiner gesetzlicher Mindestlohn pro Stunde - en: Statutory hourly minimum wage - unit: Euro - reference: §1 (2) Mindestlohngesetz - 2015-01-01: - scalar: 8.5 - 2017-01-01: - scalar: 8.84 - 2019-01-01: - scalar: 9.19 - 2020-01-01: - scalar: 9.35 - 2021-01-01: - scalar: 9.5 - 2021-07-01: - scalar: 9.6 - 2022-01-01: - scalar: 9.82 - 2022-07-01: - scalar: 10.45 - 2022-10-01: - scalar: 12 - 2024-01-01: - scalar: 12.41 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 - 2025-01-01: - scalar: 12.82 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 diff --git a/src/_gettsim/parameters/unterhalt.yaml b/src/_gettsim/parameters/unterhalt.yaml index bf3c52b015..423d8db002 100644 --- a/src/_gettsim/parameters/unterhalt.yaml +++ b/src/_gettsim/parameters/unterhalt.yaml @@ -115,7 +115,7 @@ abzugsrate_kindergeld: for child alimony payments can deduct half of the child benefit when calculating alimony. reference: § 1612b BGB - unit: share + unit: Share 2008-01-01: kind: 0.5 erwachsener: 1 diff --git a/src/_gettsim/parameters/unterhaltsvors.yaml b/src/_gettsim/parameters/unterhaltsvors.yaml index 9da78add8d..2d54a4ee36 100644 --- a/src/_gettsim/parameters/unterhaltsvors.yaml +++ b/src/_gettsim/parameters/unterhaltsvors.yaml @@ -38,6 +38,9 @@ altersgrenzen_bezug: reference: G. v. 21.12.2007 BGBl. I S. 3194 faktor_jüngste_altersgruppe: name: + de: Faktor für den Unterhaltsvorschuss in der jüngsten Altersgruppe + en: Factor for the advance child alimony of the youngest age group + description: de: >- Faktor mit dem das sächliche Existenzminimum multipliziert wird um den Unterhaltsvorschuss für Kinder der jüngsten Altersgruppe zu berechnen. diff --git a/src/_gettsim/parameters/wohngeld.yaml b/src/_gettsim/parameters/wohngeld.yaml index 1e5d4e5350..53f94db685 100644 --- a/src/_gettsim/parameters/wohngeld.yaml +++ b/src/_gettsim/parameters/wohngeld.yaml @@ -1913,7 +1913,7 @@ heizkostenentlastung_m: Betrag zur Entlastung bei den Heizkosten aufgrund der CO2-Bepreisung in Euro in Anhängigkeit der Haushaltsgröße en: >- - Amount of relief in heating costs due to CO2 pricing in euros depending on + Amount of relief in heating costs due to CO2 pricing in Euro depending on household size unit: Euro reference: §12 (6) WoGG, Art. 1 G. v. 15.05.2020, BGBl I S. 1015. @@ -1957,7 +1957,7 @@ klimakomponente_m: Wohngeldreform 2023 en: >- Surcharge to be taken into account as climate component in addition to the maximum - amounts pursuant to § 12 (1) in euros depending on the size of the household; + amounts pursuant to § 12 (1) in Euro depending on the size of the household; introduced with the housing subsidy reform 2023 unit: Euro reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index fbd8c83779..ccc9997f80 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -7,7 +7,7 @@ def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Unemployment insurance contributions paid by the insured person. @@ -26,7 +26,7 @@ def betrag_versicherter_m_ohne_midijob( """ betrag_arbeitgeber_regulär_beschäftigt_m = ( sozialversicherung__rente__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) # Set to 0 for minijobs @@ -44,7 +44,7 @@ def betrag_versicherter_m_mit_midijob( sozialversicherung__in_gleitzone: bool, betrag_versicherter_midijob_m: float, sozialversicherung__rente__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Unemployment insurance contributions paid by the insured person. @@ -67,7 +67,7 @@ def betrag_versicherter_m_mit_midijob( """ betrag_arbeitgeber_regulär_beschäftigt_m = ( sozialversicherung__rente__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) # Set to 0 for minijobs @@ -85,7 +85,7 @@ def betrag_versicherter_m_mit_midijob( def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Employer's unemployment insurance contribution until March 2003. @@ -104,7 +104,7 @@ def betrag_arbeitgeber_m_ohne_midijob( """ betrag_arbeitgeber_regulär_beschäftigt_m = ( sozialversicherung__rente__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) # Set to 0 for minijobs @@ -122,7 +122,7 @@ def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__in_gleitzone: bool, betrag_arbeitgeber_midijob_m: float, sozialversicherung__rente__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Employer's unemployment insurance contribution since April 2003. @@ -145,7 +145,7 @@ def betrag_arbeitgeber_m_mit_midijob( """ betrag_arbeitgeber_regulär_beschäftigt_m = ( sozialversicherung__rente__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) # Set to 0 for minijobs @@ -162,7 +162,7 @@ def betrag_arbeitgeber_m_mit_midijob( @policy_function(start_date="2003-04-01") def betrag_gesamt_midijob_m( sozialversicherung__midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Sum of employee's and employer's unemployment insurance contribution for midijobs. @@ -181,7 +181,7 @@ def betrag_gesamt_midijob_m( return ( sozialversicherung__midijob_bemessungsentgelt_m * 2 - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) @@ -192,7 +192,7 @@ def betrag_gesamt_midijob_m( ) def betrag_arbeitgeber_midijob_m_anteil_bruttolohn( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Employers' unemployment insurance contribution for Midijobs until September 2022. @@ -210,7 +210,7 @@ def betrag_arbeitgeber_midijob_m_anteil_bruttolohn( """ return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) @@ -264,7 +264,7 @@ def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitra @policy_function(start_date="2022-10-01", leaf_name="betrag_versicherter_midijob_m") def betrag_versicherter_midijob_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - sozialv_beitr_params: dict, + arbeitslosenversicherung_params: dict, ) -> float: """Employee's unemployment insurance contribution since October 2022. @@ -281,5 +281,5 @@ def betrag_versicherter_midijob_m_mit_festem_beitragssatz( """ return ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["arbeitslosenversicherung"] + * arbeitslosenversicherung_params["beitr_satz"] ) diff --git "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" index 8cbac7e00f..4aca59f2f5 100644 --- "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -68,7 +68,7 @@ def beiträge_arbeitgeber_m( @policy_function() -def beitrag_gesamt_m( +def beiträge_gesamt_m( beiträge_versicherter_m: float, beiträge_arbeitgeber_m: float, ) -> float: diff --git "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" index b3616e3fc0..aed07b6d57 100644 --- "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" @@ -41,7 +41,7 @@ def geringfügig_beschäftigt( ), ) def minijob_grenze_unterscheidung_ost_west( - wohnort_ost: bool, sozialv_beitr_params: dict + wohnort_ost: bool, geringfügige_einkommen_params: dict ) -> float: """Minijob income threshold depending on place of living (East or West Germany). @@ -51,14 +51,14 @@ def minijob_grenze_unterscheidung_ost_west( ---------- wohnort_ost See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. + geringfügige_einkommen_params + See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. Returns ------- """ - west = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["west"] - ost = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"]["ost"] + west = geringfügige_einkommen_params["grenzen_m"]["minijob"]["west"] + ost = geringfügige_einkommen_params["grenzen_m"]["minijob"]["ost"] out = ost if wohnort_ost else west return out @@ -71,7 +71,7 @@ def minijob_grenze_unterscheidung_ost_west( base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" ), ) -def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: +def minijob_grenze_fixer_betrag(geringfügige_einkommen_params: dict) -> float: """Minijob income threshold depending on place of living. From 2000 onwards, the threshold is the same for all of Germany. Until September @@ -79,13 +79,13 @@ def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: Parameters ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. + geringfügige_einkommen_params + See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. Returns ------- """ - return sozialv_beitr_params["geringfügige_eink_grenzen_m"]["minijob"] + return geringfügige_einkommen_params["grenzen_m"]["minijob"] @policy_function( @@ -95,14 +95,16 @@ def minijob_grenze_fixer_betrag(sozialv_beitr_params: dict) -> float: base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" ), ) -def minijob_grenze_abgeleitet_von_mindestlohn(sozialv_beitr_params: dict) -> float: +def minijob_grenze_abgeleitet_von_mindestlohn( + geringfügige_einkommen_params: dict, +) -> float: """Minijob income threshold since 10/2022. Since then, it is calculated endogenously from the statutory minimum wage. Parameters ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. + geringfügige_einkommen_params + See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. Returns ------- @@ -110,7 +112,7 @@ def minijob_grenze_abgeleitet_von_mindestlohn(sozialv_beitr_params: dict) -> flo """ return ( - sozialv_beitr_params["mindestlohn"] - * sozialv_beitr_params["geringf_eink_faktor"] - / sozialv_beitr_params["geringf_eink_divisor"] + geringfügige_einkommen_params["mindestlohn"] + * geringfügige_einkommen_params["faktor_zähler"] + / geringfügige_einkommen_params["faktor_nenner"] ) diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 114da50b4a..b5dd8a355b 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -99,7 +99,7 @@ def betrag_arbeitgeber_m_ohne_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommen_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, beitragssatz_arbeitgeber: float, ) -> float: """Employer's public health insurance contribution. @@ -131,7 +131,9 @@ def betrag_arbeitgeber_m_ohne_midijob( elif sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] + * ges_krankenv_params[ + "arbeitgeberpauschale_bei_geringfügiger_beschäftigung" + ] ) else: out = einkommen_m * beitragssatz_arbeitgeber @@ -147,7 +149,7 @@ def betrag_arbeitgeber_m_mit_midijob( betrag_arbeitgeber_midijob_m: float, einkommen_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, beitragssatz_arbeitgeber: float, ) -> float: """Employer's public health insurance contribution. @@ -183,7 +185,9 @@ def betrag_arbeitgeber_m_mit_midijob( elif sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["ag_abgaben_geringf"]["ges_krankenv"] + * ges_krankenv_params[ + "arbeitgeberpauschale_bei_geringfügiger_beschäftigung" + ] ) elif sozialversicherung__in_gleitzone: out = betrag_arbeitgeber_midijob_m @@ -216,7 +220,7 @@ def betrag_versicherter_regulär_beschäftigt_m( @policy_function() def betrag_selbstständig_m( bemessungsgrundlage_selbstständig_m: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Health insurance contributions for self-employed's income. The self-employed pay the full reduced contribution. @@ -232,7 +236,7 @@ def betrag_selbstständig_m( ------- """ - params = sozialv_beitr_params["beitr_satz"]["ges_krankenv"] + params = ges_krankenv_params["beitr_satz"] ermäßigter_beitrag = ( params["ermäßigt"] if ("ermäßigt" in params) else params["mean_allgemein"] ) diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index 41e4219411..a5d26dcf02 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -7,7 +7,7 @@ end_date="2005-06-30", ) def beitragssatz_arbeitnehmer( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate until June 2005. @@ -24,14 +24,14 @@ def beitragssatz_arbeitnehmer( """ - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 + return ges_krankenv_params["beitr_satz"]["mean_allgemein"] / 2 @policy_function( end_date="2005-06-30", ) def beitragssatz_arbeitnehmer_jahresanfang( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate for the beginning of the year until June 2005. @@ -48,12 +48,7 @@ def beitragssatz_arbeitnehmer_jahresanfang( Beitragssatz for statutory health insurance at the begging of the year. """ - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] - / 2 - ) + return ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] / 2 @policy_function( @@ -63,7 +58,7 @@ def beitragssatz_arbeitnehmer_jahresanfang( ) def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate. @@ -84,9 +79,7 @@ def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( """ - mean_allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ - "mean_allgemein" - ] + mean_allgemein = ges_krankenv_params["beitr_satz"]["mean_allgemein"] return mean_allgemein / 2 + zusatzbeitragssatz @@ -98,7 +91,7 @@ def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( ) def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate at the beginning of the year. @@ -119,9 +112,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbe """ - mean_allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] + mean_allgemein = ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] return mean_allgemein / 2 + zusatzbeitragssatz @@ -133,7 +124,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbe ) def beitragssatz_arbeitnehmer_einheitlicher_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate. @@ -154,7 +145,7 @@ def beitragssatz_arbeitnehmer_einheitlicher_zusatzbeitrag( """ - allgemein = sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] + allgemein = ges_krankenv_params["beitr_satz"]["allgemein"] return allgemein / 2 + zusatzbeitragssatz @@ -166,7 +157,7 @@ def beitragssatz_arbeitnehmer_einheitlicher_zusatzbeitrag( ) def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate at the beginning of the year. @@ -187,9 +178,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_zusatzbeitrag( """ - allgemein = sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "allgemein" - ] + allgemein = ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] return allgemein / 2 + zusatzbeitragssatz @@ -200,7 +189,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_zusatzbeitrag( ) def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate. @@ -215,9 +204,7 @@ def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( ------- """ - allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz"]["ges_krankenv"][ - "allgemein" - ] + allgemeiner_beitr_satz = ges_krankenv_params["beitr_satz"]["allgemein"] return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 @@ -227,7 +214,7 @@ def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( ) def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( zusatzbeitragssatz: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employee's health insurance contribution rate at the beginning of the year. @@ -242,9 +229,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( ------- """ - allgemeiner_beitr_satz = sozialv_beitr_params["beitr_satz_jahresanfang"][ - "ges_krankenv" - ]["allgemein"] + allgemeiner_beitr_satz = ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 @@ -253,7 +238,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( leaf_name="beitragssatz_arbeitgeber", ) def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employer's health insurance contribution rate. @@ -269,7 +254,7 @@ def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( """ - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_allgemein"] / 2 + return ges_krankenv_params["beitr_satz"]["mean_allgemein"] / 2 @policy_function( @@ -277,7 +262,7 @@ def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employer's health insurance contribution rate at the begging of the year. @@ -293,12 +278,7 @@ def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( """ - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"][ - "mean_allgemein" - ] - / 2 - ) + return ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] / 2 @policy_function( @@ -307,7 +287,7 @@ def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( leaf_name="beitragssatz_arbeitgeber", ) def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employer's health insurance contribution rate. @@ -324,7 +304,7 @@ def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( """ - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["allgemein"] / 2 + return ges_krankenv_params["beitr_satz"]["allgemein"] / 2 @policy_function( @@ -333,7 +313,7 @@ def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Employer's health insurance contribution rate at the beginning of the year. @@ -350,9 +330,7 @@ def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( """ - return ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_krankenv"]["allgemein"] / 2 - ) + return ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] / 2 @policy_function( @@ -409,7 +387,7 @@ def beitragssatz_arbeitgeber_jahresanfang_paritätischer_zusatzbeitrag( leaf_name="zusatzbeitragssatz", ) def zusatzbeitragssatz_von_sonderbeitrag( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Health insurance top-up (Zusatzbeitrag) rate until December 2014. @@ -424,7 +402,7 @@ def zusatzbeitragssatz_von_sonderbeitrag( """ - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["sonderbeitrag"] + return ges_krankenv_params["beitr_satz"]["sonderbeitrag"] @policy_function( @@ -432,7 +410,7 @@ def zusatzbeitragssatz_von_sonderbeitrag( leaf_name="zusatzbeitragssatz", ) def zusatzbeitragssatz_von_mean_zusatzbeitrag( - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Health insurance top-up rate (Zusatzbeitrag) since January 2015. @@ -447,4 +425,4 @@ def zusatzbeitragssatz_von_mean_zusatzbeitrag( """ - return sozialv_beitr_params["beitr_satz"]["ges_krankenv"]["mean_zusatzbeitrag"] + return ges_krankenv_params["beitr_satz"]["mean_zusatzbeitrag"] diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index b2480c8ee4..4189407201 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -69,7 +69,7 @@ def bemessungsgrundlage_selbstständig_m( einkommensteuer__einkünfte__ist_selbstständig: bool, privat_versichert: bool, beitragsbemessungsgrenze_m: float, - sozialv_beitr_params: dict, + ges_krankenv_params: dict, ) -> float: """Self-employed income which is subject to health insurance contributions. @@ -105,7 +105,7 @@ def bemessungsgrundlage_selbstständig_m( beitragsbemessungsgrenze_m, max( bezugsgröße_selbstständig_m - * sozialv_beitr_params[ + * ges_krankenv_params[ "mindestanteil_bezugsgröße_beitragspf_einnahme_selbst" ], einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m, @@ -118,7 +118,7 @@ def bemessungsgrundlage_selbstständig_m( @policy_function() -def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: +def beitragsbemessungsgrenze_m(wohnort_ost: bool, ges_krankenv_params: dict) -> float: """Income threshold up to which health insurance payments apply. Parameters @@ -133,7 +133,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> The income threshold up to which the rate of health insurance contributions apply. """ - params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_krankenv"] + params = ges_krankenv_params["beitr_bemess_grenze_m"] out = params["ost"] if wohnort_ost else params["west"] @@ -141,7 +141,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> @policy_function() -def bezugsgröße_selbstständig_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: +def bezugsgröße_selbstständig_m(wohnort_ost: bool, ges_krankenv_params: dict) -> float: """Threshold for self employment income subject to health insurance. Selecting by place of living the income threshold for self employed up to which the @@ -159,9 +159,9 @@ def bezugsgröße_selbstständig_m(wohnort_ost: bool, sozialv_beitr_params: dict """ out = ( - sozialv_beitr_params["bezugsgröße_selbst_m"]["ost"] + ges_krankenv_params["bezugsgröße_selbst_m"]["ost"] if wohnort_ost - else sozialv_beitr_params["bezugsgröße_selbst_m"]["west"] + else ges_krankenv_params["bezugsgröße_selbst_m"]["west"] ) return out diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index d75214f65b..10de0f78f2 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -7,7 +7,7 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, minijob_grenze: float, - sozialv_beitr_params: dict, + geringfügige_einkommen_params: dict, ) -> float: """Income subject to employee social insurance contributions for midijob since October 2022. @@ -16,24 +16,8 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( to employee social insurance contribution. Legal reference: Changes in § 20 SGB IV from 01.10.2022 - - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - minijob_grenze - See :func:`minijob_grenze`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - Income subject to employee social insurance contributions for midijob. - """ - midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + midijob_grenze = geringfügige_einkommen_params["grenzen_m"]["midijob"] quotient = midijob_grenze / (midijob_grenze - minijob_grenze) einkommen_diff = ( @@ -55,34 +39,24 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, + arbeitslosenversicherung_params: dict, + ges_krankenv_params: dict, + ges_pflegev_params: dict, + geringfügige_einkommen_params: dict, ) -> float: """Midijob Faktor F until December 2004. Legal reference: § 163 Abs. 10 SGB VI - - - Parameters - ---------- - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- - Income subject to social insurance contributions for midijob. - """ # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ges_rentenv_params["beitr_satz_jahresanfang"] + + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] ) - allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"] + allg_sozialv_beitr += ges_pflegev_params["beitr_satz_jahresanfang"] # Then calculate specific shares an_anteil = ( @@ -96,9 +70,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( # Sum over the shares which are specific for midijobs. pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] + ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + + geringfügige_einkommen_params["arbeitgeberpauschale_lohnsteuer"] ) # Now calculate final factor @@ -116,37 +90,25 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, + arbeitslosenversicherung_params: dict, + ges_krankenv_params: dict, + ges_pflegev_params: dict, + geringfügige_einkommen_params: dict, ) -> float: """Midijob Faktor F between 2005 and September 2025. Legal reference: § 163 Abs. 10 SGB VI - - Parameters - ----------. - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>` - - Returns - ------- - Income subject to social insurance contributions for midijob. - """ # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ges_rentenv_params["beitr_satz_jahresanfang"] + + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] ) - allg_sozialv_beitr += sozialv_beitr_params["beitr_satz_jahresanfang"][ - "ges_pflegev" - ]["standard"] + allg_sozialv_beitr += ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] # Then calculate specific shares an_anteil = ( @@ -160,9 +122,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( # Sum over the shares which are specific for midijobs. pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["st"] + ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + + geringfügige_einkommen_params["arbeitgeberpauschale_lohnsteuer"] ) # Now calculate final factor @@ -179,26 +141,16 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, + ges_pflegev_params: dict, + arbeitslosenversicherung_params: dict, + ges_krankenv_params: dict, ) -> float: """Midijob Faktor F since October 2022. Legal reference: § 163 Abs. 10 SGB VI - Parameters - ---------- - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang`. - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - See :func:`sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Income subject to social insurance contributions for midijob. - """ # Calculate the Gesamtsozialversicherungsbeitragssatz by summing social # insurance contributions for employer and employee and @@ -206,9 +158,9 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_rentenv"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["ges_pflegev"]["standard"] - + sozialv_beitr_params["beitr_satz_jahresanfang"]["arbeitslosenversicherung"] + ges_rentenv_params["beitr_satz_jahresanfang"] + + ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] + + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] ) # Then calculate specific shares @@ -225,8 +177,8 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( # New formula only inludes the lump-sum contributions to health care # and pension insurance pausch_mini = ( - sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_krankenv"] - + sozialv_beitr_params["ag_abgaben_geringf_jahresanfang"]["ges_rentenv"] + ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] ) # Now calculate final factor f @@ -244,7 +196,7 @@ def midijob_bemessungsentgelt_m_bis_09_2022( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, midijob_faktor_f: float, minijob_grenze: float, - sozialv_beitr_params: dict, + geringfügige_einkommen_params: dict, ) -> float: """Income subject to social insurance contributions for midijob until September 2022. @@ -254,23 +206,6 @@ def midijob_bemessungsentgelt_m_bis_09_2022( Legal reference: § 163 Abs. 10 SGB VI - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - midijob_faktor_f - See :func:`midijob_faktor_f`. - minijob_grenze - See :func:`minijob_grenze`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - Income subject to social insurance contributions for midijob. - """ # Now use the factor to calculate the overall bemessungsentgelt minijob_anteil = midijob_faktor_f * minijob_grenze @@ -279,17 +214,11 @@ def midijob_bemessungsentgelt_m_bis_09_2022( - minijob_grenze ) gewichtete_midijob_rate = ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - / ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - minijob_grenze - ) + geringfügige_einkommen_params["grenzen_m"]["midijob"] + / (geringfügige_einkommen_params["grenzen_m"]["midijob"] - minijob_grenze) ) - ( minijob_grenze - / ( - sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] - - minijob_grenze - ) + / (geringfügige_einkommen_params["grenzen_m"]["midijob"] - minijob_grenze) * midijob_faktor_f ) @@ -301,7 +230,7 @@ def midijob_bemessungsentgelt_m_ab_10_2022( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, midijob_faktor_f: float, minijob_grenze: float, - sozialv_beitr_params: dict, + geringfügige_einkommen_params: dict, ) -> float: """Total income subject to social insurance contributions for midijobs since October 2022. @@ -313,25 +242,8 @@ def midijob_bemessungsentgelt_m_ab_10_2022( Legal reference: Changes in § 20 SGB IV from 01.10.2022 - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - midijob_faktor_f - See :func:`midijob_faktor_f`. - minijob_grenze - See :func:`minijob_grenze`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - Income subject to social insurance contributions for midijob. - """ - midijob_grenze = sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + midijob_grenze = geringfügige_einkommen_params["grenzen_m"]["midijob"] quotient1 = (midijob_grenze) / (midijob_grenze - minijob_grenze) quotient2 = (minijob_grenze) / (midijob_grenze - minijob_grenze) @@ -351,7 +263,7 @@ def midijob_bemessungsentgelt_m_ab_10_2022( def in_gleitzone( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, geringfügig_beschäftigt: bool, - sozialv_beitr_params: dict, + geringfügige_einkommen_params: dict, ) -> bool: """Individual's income is in midi-job range. @@ -360,22 +272,9 @@ def in_gleitzone( Legal reference: § 20 Abs. 2 SGB IV - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - geringfügig_beschäftigt - See :func:`geringfügig_beschäftigt`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Whether individual's income is in midi-job range. - """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - <= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + <= geringfügige_einkommen_params["grenzen_m"]["midijob"] ) and (not geringfügig_beschäftigt) return out diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index eecec5c1c1..ba25dbf127 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -118,7 +118,7 @@ def betrag_versicherter_regulär_beschäftigt_m( def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__kranken__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, einkommensteuer__einkünfte__ist_selbstständig: bool, ) -> float: """Employer's long-term care insurance contribution. @@ -144,7 +144,7 @@ def betrag_arbeitgeber_m_ohne_midijob( # Calculate care insurance contributions for regular jobs. beitr_regulär_beschäftigt_m = ( sozialversicherung__kranken__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + * ges_pflegev_params["beitr_satz"] ) if ( @@ -163,7 +163,7 @@ def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_arbeitgeber_midijob_m: float, sozialversicherung__kranken__beitrag__einkommen_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__ist_selbstständig: bool, ) -> float: @@ -194,7 +194,7 @@ def betrag_arbeitgeber_m_mit_midijob( # Calculate care insurance contributions for regular jobs. beitr_regulär_beschäftigt_m = ( sozialversicherung__kranken__beitrag__einkommen_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + * ges_pflegev_params["beitr_satz"]["standard"] ) if ( @@ -247,7 +247,7 @@ def betrag_selbstständig_m_ohne_zusatz_für_kinderlose( def betrag_selbstständig_m_mit_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, beitragssatz: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Self-employed individuals' long-term care insurance contribution since 2005. @@ -272,7 +272,7 @@ def betrag_selbstständig_m_mit_zusatz_für_kinderlose( """ return sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m * ( - beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] ) @@ -341,7 +341,7 @@ def betrag_rentner_m_ohne_zusatz_für_kinderlose( def betrag_rentner_m_mit_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, beitragssatz: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Health insurance contribution from pension income since 2005. @@ -363,7 +363,7 @@ def betrag_rentner_m_mit_zusatz_für_kinderlose( """ return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( - beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] ) @@ -375,7 +375,7 @@ def betrag_rentner_m_mit_zusatz_für_kinderlose( def betrag_gesamt_m_bis_2004( sozialversicherung__midijob_bemessungsentgelt_m: float, beitragssatz: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Sum of employee and employer long-term care insurance contributions until 2004. @@ -396,7 +396,7 @@ def betrag_gesamt_m_bis_2004( """ return sozialversicherung__midijob_bemessungsentgelt_m * ( - beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + beitragssatz + ges_pflegev_params["beitr_satz"] ) @@ -407,7 +407,7 @@ def betrag_gesamt_m_bis_2004( def betrag_gesamt_m_ab_2005( sozialversicherung__midijob_bemessungsentgelt_m: float, beitragssatz: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Sum of employee and employer long-term care insurance contributions since 2005. @@ -427,7 +427,7 @@ def betrag_gesamt_m_ab_2005( """ return sozialversicherung__midijob_bemessungsentgelt_m * ( - beitragssatz + sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] ) @@ -437,7 +437,7 @@ def betrag_gesamt_m_ab_2005( ) def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employer's long-term care insurance contribution until December 2004. @@ -458,7 +458,7 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + * ges_pflegev_params["beitr_satz"] ) return out @@ -471,7 +471,7 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( ) def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_ab_2005( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employers' contribution to long-term care insurance between 2005 and September 2022. @@ -491,7 +491,7 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_ab_2005( """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + * ges_pflegev_params["beitr_satz"]["standard"] ) return out @@ -557,7 +557,7 @@ def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( zusatzbetrag_kinderlos: bool, sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, sozialversicherung__midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employee's long-term care insurance contribution between October 2022 and June 2023. @@ -581,14 +581,14 @@ def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( # Calculate the employee care insurance contribution an_beitr_midijob_m = ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + * ges_pflegev_params["beitr_satz"]["standard"] ) # Add additional contribution for childless individuals if zusatzbetrag_kinderlos: an_beitr_midijob_m += ( sozialversicherung__midijob_bemessungsentgelt_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + * ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] ) return an_beitr_midijob_m @@ -600,7 +600,7 @@ def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehre zusatzbetrag_kinderlos: bool, sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, sozialversicherung__midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employee's long-term care insurance contribution since July 2023. @@ -623,13 +623,13 @@ def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehre """ # Calculate the employee care insurance rate - ges_pflegev_rate = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + ges_pflegev_rate = ges_pflegev_params["beitr_satz"]["standard"] # Reduced contribution for individuals with two or more children under 25 if anzahl_kinder_bis_24 >= 2: - ges_pflegev_rate -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ - "abschlag_kinder" - ] * min(anzahl_kinder_bis_24 - 1, 4) + ges_pflegev_rate -= ges_pflegev_params["beitr_satz"]["abschlag_kinder"] * min( + anzahl_kinder_bis_24 - 1, 4 + ) # Calculate the employee care insurance contribution an_beitr_midijob_m = ( @@ -641,7 +641,7 @@ def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehre if zusatzbetrag_kinderlos: an_beitr_midijob_m += ( sozialversicherung__midijob_bemessungsentgelt_m - * sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + * ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] ) return an_beitr_midijob_m diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 6d2771df58..0b98c92ed3 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -27,7 +27,7 @@ def anzahl_kinder_bis_24_elternteil_2( leaf_name="beitragssatz", ) def beitragssatz_ohne_zusatz_für_kinderlose( - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employee's long-term care insurance contribution rate. @@ -43,7 +43,7 @@ def beitragssatz_ohne_zusatz_für_kinderlose( """ - return sozialv_beitr_params["beitr_satz"]["ges_pflegev"] + return ges_pflegev_params["beitr_satz"] @policy_function( @@ -53,7 +53,7 @@ def beitragssatz_ohne_zusatz_für_kinderlose( ) def beitragssatz_zusatz_kinderlos_dummy( zusatzbetrag_kinderlos: bool, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employee's long-term care insurance contribution rate. @@ -70,11 +70,11 @@ def beitragssatz_zusatz_kinderlos_dummy( ------- """ - out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + out = ges_pflegev_params["beitr_satz"]["standard"] # Add additional contribution for childless individuals if zusatzbetrag_kinderlos: - out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + out += ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] return out @@ -83,7 +83,7 @@ def beitragssatz_zusatz_kinderlos_dummy( def beitragssatz_mit_kinder_abschlag( anzahl_kinder_bis_24: int, zusatzbetrag_kinderlos: bool, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> float: """Employee's long-term care insurance contribution rate. @@ -103,17 +103,17 @@ def beitragssatz_mit_kinder_abschlag( ------- """ - out = sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["standard"] + out = ges_pflegev_params["beitr_satz"]["standard"] # Add additional contribution for childless individuals if zusatzbetrag_kinderlos: - out += sozialv_beitr_params["beitr_satz"]["ges_pflegev"]["zusatz_kinderlos"] + out += ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] # Reduced contribution for individuals with two or more children under 25 if anzahl_kinder_bis_24 >= 2: - out -= sozialv_beitr_params["beitr_satz"]["ges_pflegev"][ - "abschlag_kinder" - ] * min(anzahl_kinder_bis_24 - 1, 4) + out -= ges_pflegev_params["beitr_satz"]["abschlag_kinder"] * min( + anzahl_kinder_bis_24 - 1, 4 + ) return out @@ -122,7 +122,7 @@ def beitragssatz_mit_kinder_abschlag( def zusatzbetrag_kinderlos( hat_kinder: bool, alter: int, - sozialv_beitr_params: dict, + ges_pflegev_params: dict, ) -> bool: """Whether additional care insurance contribution for childless individuals applies. @@ -135,14 +135,14 @@ def zusatzbetrag_kinderlos( See basic input variable :ref:`hat_kinder <hat_kinder>`. alter See basic input variable :ref:`alter <alter>`. - sozialv_beitr_params: dict, + ges_pflegev_params: dict, See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. Returns ------- """ - mindestalter = sozialv_beitr_params["ges_pflegev_zusatz_kinderlos_mindestalter"] + mindestalter = ges_pflegev_params["zusatz_kinderlos_mindestalter"] return (not hat_kinder) and alter >= mindestalter diff --git "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index f32c0f2706..5459c48242 100644 --- "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -14,17 +14,6 @@ def regulär_beschäftigt_vor_midijob( income and social insurance contribution regulations. In gettsim we call these regular employed. - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Whether regular employed persons. - """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m @@ -36,7 +25,7 @@ def regulär_beschäftigt_vor_midijob( @policy_function(start_date="2003-04-01", leaf_name="regulär_beschäftigt") def regulär_beschäftigt_mit_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - sozialv_beitr_params: dict, + geringfügige_einkommen_params: dict, ) -> bool: """Regular employment check since April 2003. @@ -44,20 +33,9 @@ def regulär_beschäftigt_mit_midijob( income and social insurance contribution regulations. In gettsim we call these regular employed. - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Whether regular employed persons. - """ out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - >= sozialv_beitr_params["geringfügige_eink_grenzen_m"]["midijob"] + >= geringfügige_einkommen_params["grenzen_m"]["midijob"] ) return out diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index f1a0c77d81..1f1de4b15e 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -7,7 +7,7 @@ def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, einkommen_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, ) -> float: """Public pension insurance contributions paid by the insured person. @@ -26,9 +26,7 @@ def betrag_versicherter_m_ohne_midijob( ------- """ - ges_rentenv_beitr_regular_job_m = ( - einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) + ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -43,7 +41,7 @@ def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_midijob_arbeitnehmer_m: float, einkommen_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, sozialversicherung__in_gleitzone: bool, ) -> float: """Public pension insurance contributions paid by the insured person. @@ -67,9 +65,7 @@ def betrag_versicherter_m_mit_midijob( ------- """ - ges_rentenv_beitr_regular_job_m = ( - einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) + ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -85,7 +81,7 @@ def betrag_versicherter_m_mit_midijob( def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, einkommen_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, ) -> float: """Employer's public pension insurance contribution. @@ -107,14 +103,12 @@ def betrag_arbeitgeber_m_ohne_midijob( ------- """ - ges_rentenv_beitr_regular_job_m = ( - einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) + ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] + * ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] ) else: out = ges_rentenv_beitr_regular_job_m @@ -127,7 +121,7 @@ def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_midijob_arbeitgeber_m: float, einkommen_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, ) -> float: @@ -154,14 +148,12 @@ def betrag_arbeitgeber_m_mit_midijob( ------- """ - ges_rentenv_beitr_regular_job_m = ( - einkommen_m * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] - ) + ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["ag_abgaben_geringf"]["ges_rentenv"] + * ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] ) elif sozialversicherung__in_gleitzone: out = betrag_midijob_arbeitgeber_m @@ -197,7 +189,7 @@ def einkommen_m( @policy_function() -def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> float: +def beitragsbemessungsgrenze_m(wohnort_ost: bool, ges_rentenv_params: dict) -> float: """Income threshold up to which pension insurance payments apply. Parameters @@ -211,7 +203,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> ------- """ - params = sozialv_beitr_params["beitr_bemess_grenze_m"]["ges_rentenv"] + params = ges_rentenv_params["beitr_bemess_grenze_m"] out = params["ost"] if wohnort_ost else params["west"] return out @@ -220,7 +212,7 @@ def beitragsbemessungsgrenze_m(wohnort_ost: bool, sozialv_beitr_params: dict) -> @policy_function(start_date="2003-04-01") def betrag_midijob_gesamt_m( sozialversicherung__midijob_bemessungsentgelt_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, ) -> float: """Sum of employer and employee pension insurance contribution for midijobs. Midijobs were introduced in April 2003. @@ -239,7 +231,7 @@ def betrag_midijob_gesamt_m( return ( sozialversicherung__midijob_bemessungsentgelt_m * 2 - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + * ges_rentenv_params["beitr_satz"] ) @@ -249,7 +241,7 @@ def betrag_midijob_gesamt_m( ) def betrag_midijob_arbeitgeber_m_mit_festem_beitragssatz( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, ) -> float: """Employer's unemployment insurance contribution until September 2022. @@ -266,7 +258,7 @@ def betrag_midijob_arbeitgeber_m_mit_festem_beitragssatz( """ return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + * ges_rentenv_params["beitr_satz"] ) @@ -318,7 +310,7 @@ def betrag_midijob_arbeitnehmer_m_als_differenz_von_gesamt_und_arbeitgeberbeitra @policy_function(start_date="2022-10-01", leaf_name="betrag_midijob_arbeitnehmer_m") def betrag_midijob_arbeitnehmer_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - sozialv_beitr_params: dict, + ges_rentenv_params: dict, ) -> float: """Employee's unemployment insurance contribution for midijobs since October 2022. @@ -335,5 +327,5 @@ def betrag_midijob_arbeitnehmer_m_mit_festem_beitragssatz( """ return ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * sozialv_beitr_params["beitr_satz"]["ges_rentenv"] + * ges_rentenv_params["beitr_satz"] ) diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 6583cb57a9..c0ee83d332 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 633e66aee1..db2b5b16ac 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two + Bedarfsgemeinschaften. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index ec44992064..f52fbdf453 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 53aa424d6b..b1e16ea300 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two + Bedarfsgemeinschaften. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index ef0246b688..55a04abdf7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml index 05d441a017..15ed039f2a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml @@ -1,7 +1,8 @@ --- info: - note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult - Regelsatz. + note: >- + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. In this case, the child + should receive the adult Regelsatz. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index ba5507b1a1..5f8ba4448e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -1,6 +1,8 @@ --- info: - note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + note: >- + Test with wealth (calculated wealth allowance using + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index f44fa2b91a..9165087f2e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -1,6 +1,8 @@ --- info: - note: Test with wealth (calculated wealth allowance using https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html) + note: >- + Test with wealth. Calculated wealth allowance using + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index 802029bd86..55208a5fbe 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -1,6 +1,8 @@ --- info: - note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' + note: >- + Test with wealth, calculated wealth allowance with: + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index a990f9489e..d7d645440e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -1,6 +1,8 @@ --- info: - note: 'Test with wealth, calculated wealth allowance with: https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html' + note: >- + Test with wealth, calculated wealth allowance with: + https://www.steuerschroeder.de/Steuerrechner/Schonverm%C3%B6gen.html precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index 31247804c3..e8dd6937c1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -1,6 +1,7 @@ --- info: - note: Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test + note: >- + Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from testcase in 2011. precision_atol: 0.01 source: '' diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index 7e6fe38cb7..0eeae6ed00 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with old income thresholds with income from self employment, adjusted for Kindersofortzuschlag. - Constructed test based on hh 19. + note: >- + Test with old income thresholds with income from self employment, adjusted for + Kindersofortzuschlag. Constructed test based on hh 19. precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index 30933877d1..a7871f33e1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag - of 20€). Test cutoff around 18 years. + note: >- + Test with old income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag (of 20€). Test cutoff around 18 years. precision_atol: 0.01 source: https://www.buerger-geld.org/rechner inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index db0213938d..3f90e28b2b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with old income thresholds and new Kindergeld, (adjusted for Kindersofortzuschlag - of 20€). Household with wealth. + note: >- + Test with old income thresholds and new Kindergeld, (adjusted for + Kindersofortzuschlag of 20€). Household with wealth. precision_atol: 0.01 source: https://www.hartziv.org/rechner/ inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index 7c3a9b5a3b..6b36e8fdd6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with old income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag - of 20€. + note: >- + Test with old income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. precision_atol: 0.01 source: https://www.hartziv.org/rechner/ inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index f013922fad..a8eda3aee5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag - of 20€. https://buergergeld-rechner.org/ + note: >- + Test with new income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. https://buergergeld-rechner.org/ precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index 19489022cf..15a5d85308 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with new income thresholds and new Kindergeld, adjusted for Kindersofortzuschlag - of 20€. + note: >- + Test with new income thresholds and new Kindergeld, adjusted for + Kindersofortzuschlag of 20€. precision_atol: 0.01 source: https://buergergeld-rechner.org/ inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 9bd979b1ac..6633520f1f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -1,6 +1,7 @@ --- info: - note: Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test + note: >- + Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test case after Karenzzeit with cost for living from 2011 testcase. precision_atol: 0.01 source: '' diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml index c557b15839..3a51e09de2 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml @@ -1,6 +1,7 @@ --- info: - note: Household with 2 children, where child income does not exceed needs. Hence, child + note: >- + Household with 2 children, where child income does not exceed needs. Hence, child stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. precision_atol: 0.01 source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml index fefc333137..75853e972e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml @@ -1,8 +1,9 @@ --- info: - note: Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent - via Kindergeldübertrag. + note: >- + Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the + parent via Kindergeldübertrag. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml index 9f8b51220a..f49ee0418c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml @@ -1,8 +1,9 @@ --- info: - note: Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the parent - via Kindergeldübertrag. via Kindergeldübertrag. + note: >- + Household with 2 children, where child income of second child exceeds needs. Second + child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the + parent via Kindergeldübertrag. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 3bdd21c2d8..70483591b6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelbedarf when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 35e810359e..859eafe013 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two Bedarfsgemeinschaften. + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is split into two + Bedarfsgemeinschaften. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index f813df5f4b..00768fbbf7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index ae2685400e..c1c9f74265 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two Bedarfsgemeinschaften. + note: >- + Test Regelsatz when Familiengemeinschaft (2 adults, 1 kid) is split into two + Bedarfsgemeinschaften. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index 53d2279442..af55587194 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -1,6 +1,8 @@ --- info: - note: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. + note: >- + Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as + Bedarfsgemeinschaft. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml index eca0d92365..0c2b9cafe3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml @@ -1,7 +1,8 @@ --- info: - note: Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the adult - Regelsatz. + note: >- + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the + adult Regelsatz. precision_atol: 0.01 source: Made up. inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index a1f2585501..dc29db6e28 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` - is wrong. + note: >- + Test with new Regelbedarf. + `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index d9d2977788..294949e66d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with new Regelbedarf. `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` - is wrong. + note: >- + Test with new Regelbedarf. + `arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m` is wrong. precision_atol: 0.01 source: https://www.buerger-geld.org/rechner/ergebnis/index.php inputs: diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 655beae5ce..2ddfb689ca 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,7 +1,8 @@ --- info: - note: 'CZ: In case the other parent does not pay child support, the parent with p_id==0 - can request full kinderfreibetrag (Add this as input?)' + note: >- + CZ: In case the other parent does not pay child support, the parent with p_id==0 + can request full kinderfreibetrag (Add this as input?) precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index e74f3a400a..0da13e3baa 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -1,6 +1,7 @@ --- info: - note: Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never + note: >- + Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never covers more than 2 generations) precision_atol: 0.01 source: '' diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml index 4a5933b865..e4add453ab 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml @@ -1,6 +1,8 @@ --- info: - note: Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for him/herself + note: >- + Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for + him/herself precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index d10ffc1f48..aba7cb1f6a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,7 +1,8 @@ --- info: - note: 'CZ: In case the other parent does not pay child support, the parent id==0, can request - full kinderfreibetrag (Add this as input?)' + note: >- + CZ: In case the other parent does not pay child support, the parent id==0, can + request full kinderfreibetrag (Add this as input?) precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index 14da7e9c29..6c56442a26 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,6 +1,7 @@ --- info: - note: not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is + note: >- + not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is married to new partner (unterhalt__anspruch_m unaffected) precision_atol: 0.01 source: '' diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml index 08e5be6458..8823fec804 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml @@ -17,4 +17,6 @@ inputs: hh_id: 0 id: 1 outputs: - - error: Informationen zur gemeinsamen Veranlagung widersprechen sich zwischen Ehepartnern + - error: >- + Informationen zur gemeinsamen Veranlagung widersprechen sich zwischen + Ehepartnern diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index 190b193b22..b9af17cee9 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -1,9 +1,12 @@ --- info: - note: Added capital income of 10 euros for household (expected difference in grundsicherung__im_alter__betrag_m_eg - ((10*12)-26)/12)=7.83333333) + note: >- + Added capital income of 10 euros for household (expected difference in + grundsicherung__im_alter__betrag_m_eg ((10*12)-26)/12)=7.83333333) precision_atol: 0.01 - source: Adjusted test case based on https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele + source: >- + Adjusted test case based on + https://www.bpb.de/politik/innenpolitik/rentenpolitik/289395/leistungshoehe-und-fallbeispiele inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index 26b74c0015..c1855ed940 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -1,9 +1,10 @@ --- info: - note: Added minor capital income of 2 euros (no deduction from claim since below allowance - of 26 euros per year) + note: >- + Added minor capital income of 2 euros (no deduction from claim since below allowance + of 26 euros per year). Adjusted test case based on source. precision_atol: 0.01 - source: Adjusted test case based on https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 + source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index 5047280e98..e1bcc4c290 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -1,7 +1,8 @@ --- info: - note: Adjusted test case by adding capital income of 50 euros (expected difference in grundsicherung__im_alter__betrag_m_eg - (50*12 - 26) / 12) = 47.83333333) + note: >- + Adjusted test case by adding capital income of 50 euros (expected difference in + `grundsicherung__im_alter__betrag_m_eg`: (50 * 12 - 26) / 12 = 47.83333333)) precision_atol: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 8a91c9745d..3ceb568c51 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -1,6 +1,7 @@ --- info: - note: Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge + note: >- + Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge M. precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index 49f6679938..d3eb07f30c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -1,6 +1,7 @@ --- info: - note: Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge + note: >- + Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge M. precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index a9249a1ad2..fa382165e6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -1,7 +1,8 @@ --- info: - note: Test if households with non-retired adult do not get Grundsicherung im Alter (as currently - implemented those households get ALG 2) + note: >- + Test if households with non-retired adult do not get Grundsicherung im Alter (as + currently implemented those households get ALG 2) precision_atol: 0.01 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 8b5eadb157..4a5c1aaf74 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -1,6 +1,7 @@ --- info: - note: Capital income of 20 euros (monthly amount deducted from claim due to capital income + note: >- + Capital income of 20 euros (monthly amount deducted from claim due to capital income (20*12 - 26) / 12 = 17.83333333) precision_atol: 0.01 source: Self-created test case diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index 70035363b0..16613845f4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -1,6 +1,7 @@ --- info: - note: Capital income of 50 euros (monthly amount deducted from claim due to capital income + note: >- + Capital income of 50 euros (monthly amount deducted from claim due to capital income (50*12 - 26) / 12 = 47.83333333) precision_atol: 0.01 source: Self-created test case diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index fc02504cb3..3153612061 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -1,7 +1,8 @@ --- info: - note: Test with child and positive wealth below wealth allowance (website did not add general - amount for child) + note: >- + Test with child and positive wealth below wealth allowance (website did not add + general amount for child) precision_atol: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml index 7b7f42b9aa..272b943fa3 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml @@ -1,6 +1,7 @@ --- info: - note: Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first + note: >- + Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first month precision_atol: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml index 819c0cd675..616ff98daf 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml @@ -1,7 +1,8 @@ --- info: - note: 'Caution: Regression test for child income. Same as hh_id_14.yaml but with made up - child income, so the results are not based on any source.' + note: >- + Caution: Regression test for child income. Same as hh_id_14.yaml but with made up + child income, so the results are not based on any source. precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index de8b76624b..a2cbcbdb02 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -1,7 +1,8 @@ --- info: - note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (above - freibetrag_vermögen_in_karenzzeit_bg). + note: >- + Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions + (above freibetrag_vermögen_in_karenzzeit_bg). precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index a12f2561be..d64436f2ea 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -1,7 +1,8 @@ --- info: - note: Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions (still - below freibetrag_vermögen_in_karenzzeit_bg). + note: >- + Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions + (still below freibetrag_vermögen_in_karenzzeit_bg). precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 6448715101..d3c90a21cb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -49,7 +49,7 @@ outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - 9.75 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 0.0 - 126.3 sozialversicherung__beiträge_arbeitgeber_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index de1b3f8de2..14d618aea6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -35,7 +35,7 @@ outputs: - 0.0 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 66.0 sozialversicherung__beiträge_arbeitgeber_m: - 66.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index df0acb312f..af12797373 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 22.75 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 289.1 sozialversicherung__beiträge_arbeitgeber_m: - 144.55 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index 0c2baee94d..c7e8eb7e3a 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 529.88 sozialversicherung__beiträge_arbeitgeber_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index c588c7d66d..2fd76f73a0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 122.72 sozialversicherung__beiträge_arbeitgeber_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 7e2d1f1efb..89d54536cd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 16.8 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 474.6 sozialversicherung__beiträge_arbeitgeber_m: - 231.9 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index 2cf3b06083..d4b44d2f98 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 21.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 593.26 sozialversicherung__beiträge_arbeitgeber_m: - 289.88 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index fe4050f3c3..4e8f6e015d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 77.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1880.37 sozialversicherung__beiträge_arbeitgeber_m: - 923.31 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 35b752e1cd..8c9fd3f32b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 84.0 sozialversicherung__beiträge_arbeitgeber_m: - 84.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index 34456502e9..11e9cae17d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 7.0476 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 218.2 sozialversicherung__beiträge_arbeitgeber_m: - 115.95 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index a066b4cefb..6c86ecf227 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 12.6 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 355.96 sozialversicherung__beiträge_arbeitgeber_m: - 173.93 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index 6dbdd7b7d4..61d6709c69 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 84.0 sozialversicherung__beiträge_arbeitgeber_m: - 84.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index 65cbd22531..7237e736bc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 6.93028 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 212.4 sozialversicherung__beiträge_arbeitgeber_m: - 116.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index e22719b140..1b39a47307 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 13.5 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 360.01 sozialversicherung__beiträge_arbeitgeber_m: - 174.38 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 2cca12ba6c..2e576d2327 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 18.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 477.0 sozialversicherung__beiträge_arbeitgeber_m: - 232.5 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index d60c9c40c1..7e9e19d539 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 22.5 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 596.26 sozialversicherung__beiträge_arbeitgeber_m: - 290.63 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index e33fa82caf..b796d73e47 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 75.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1883.13 sozialversicherung__beiträge_arbeitgeber_m: - 919.44 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index f5d7616226..63fb172bda 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 186.3808333 sozialversicherung__beiträge_arbeitgeber_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 0b621217f7..857772714f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 718.0 sozialversicherung__beiträge_arbeitgeber_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index 0854b30dcd..b45230fba4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 36.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1200.0 sozialversicherung__beiträge_arbeitgeber_m: - 596.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index 13da7d0da4..bcf7e79fa1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 862.5 sozialversicherung__beiträge_arbeitgeber_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index 1daea5dc2c..ea59c1eeb7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 7.26 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 273.0 sozialversicherung__beiträge_arbeitgeber_m: - 149.81 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index d345bad782..712976dcc3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 11.8 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 406.28 sozialversicherung__beiträge_arbeitgeber_m: - 209.74 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index aa151ac971..868aeb2930 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 0.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 142.8 sozialversicherung__beiträge_arbeitgeber_m: - 142.8 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 46a6062035..812f7f60ef 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 10.31 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 414.28 sozialversicherung__beiträge_arbeitgeber_m: - 239.04 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index a9fba5a3bd..ab5776b4cc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 4.98 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 273.58 sozialversicherung__beiträge_arbeitgeber_m: - 190.71 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index 75bf749eef..8ad685d39e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -33,7 +33,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 15.64 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 547.78 sozialversicherung__beiträge_arbeitgeber_m: - 287.38 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index ea33ddc765..e6aba11837 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -1,6 +1,8 @@ --- info: - note: Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) + note: >- + Änderung MidiJob 2022 (kinderlos, mit KV-Zusatzbeitrag 1.3%, + https://www.tk.de/resource/blob/2031420/94a8837d0957984a165ec6a2d415d7af/beratungsblatt-beschaeftigung-im-uebergangs--midijobbereich-data.pdf) precision_atol: 1 source: https://www.kbs.de/SiteGlobals/Forms/Rechner/Midijobrechner/seite1/node.html inputs: @@ -33,7 +35,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.53 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 368.17 sozialversicherung__beiträge_arbeitgeber_m: - 222.93 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index 94fa69c1fb..22a684ed10 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -1,8 +1,9 @@ --- info: - note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern - unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 2 Kinder - unter 25 Jahren + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz, 2 Kinder unter 25 Jahren. precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: @@ -37,7 +38,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 39.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1216.5 sozialversicherung__beiträge_arbeitgeber_m: - 612.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 0f154ec3ae..3fc462e0b0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -1,8 +1,9 @@ --- info: - note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern - unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 1 Kind über - 25 Jahren und Midijob + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz, 1 Kind über 25 Jahren und Midijob precision_atol: 1 source: https://www.ihre-vorsorge.de/rechner/midijob-rechner inputs: @@ -37,7 +38,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.43 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 363.87 sozialversicherung__beiträge_arbeitgeber_m: - 231.55 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index 7e35f40665..5a99d92d97 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -1,8 +1,9 @@ --- info: - note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern - unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz 5 Kinder - unter 25 Jahren + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz, 5 Kinder unter 25 Jahren precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: @@ -37,7 +38,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 52.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1592.0 sozialversicherung__beiträge_arbeitgeber_m: - 816.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index 22180f5970..6c47eba13d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -1,7 +1,9 @@ --- info: - note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern - unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz, keine Kinder precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ inputs: @@ -36,7 +38,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 52.0 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 1656.0 sozialversicherung__beiträge_arbeitgeber_m: - 816.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index 89a2e20270..3d6806836e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -1,8 +1,9 @@ --- info: - note: Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit Kindern - unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz keine Kinder - und Midijob + note: >- + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit + Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + -entlastungsgesetz, keine Kinder und Midijob precision_atol: 1 source: https://www.smart-rechner.de/midijob/rechner.php inputs: @@ -37,7 +38,7 @@ inputs: outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 8.43 - sozialversicherung__beitrag_gesamt_m: + sozialversicherung__beiträge_gesamt_m: - 369.21 sozialversicherung__beiträge_arbeitgeber_m: - 231.54 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" index 031a524c9d..7b179033b2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" @@ -1,6 +1,7 @@ --- info: - note: Number of children below 25 years of age. Necessary to calculate the long-term care + note: >- + Number of children below 25 years of age. Necessary to calculate the long-term care insurance contribution. Does not depend on Kindergeld eligibility. precision_atol: 1 source: '' diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index d363a6032c..82e172c72d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -1,7 +1,8 @@ --- info: - note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze - is lower.' + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. Verified or corrected using source. precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Kurz-vor-der-Rente/Wann-kann-ich-in-Rente-gehen/Wann-kann-ich-in-Rente-gehen_detailseite.html" inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 43548645e9..eb00961663 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -1,7 +1,8 @@ --- info: - note: 'From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected - based on source.' + note: >- + From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected + based on source. precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index b2535b41ed..98d43c6eb2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -1,7 +1,8 @@ --- info: - note: 'based on Beispiel: Erna Rüstig (Altersrente für Frauen) but added a mixed(east/west) - earning biography' + note: >- + Based on Beispiel "Erna Rüstig" (Altersrente für Frauen) but added a mixed + (east/west) earnings history. precision_atol: 0.1 source: https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index 36d6b48ac9..6ab7d43be3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -1,7 +1,8 @@ --- info: - note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze - is lower. Verified or corrected using source.' + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. Verified or corrected using source. precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index 282dfe6f2e..bcd16908d5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -1,6 +1,8 @@ --- info: - note: 'Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/' + note: >- + Beispiel: Abwandlung Erna Rüstig (Altersrente für langjährig Versicherte) + https://rentenbescheid24.de/die-altersrente-fuer-langjaehrig-versicherte/ precision_atol: 0.1 source: '' inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index ba5986d13a..4a0c739483 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -1,7 +1,8 @@ --- info: - note: 'from eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze - is lower' + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. precision_atol: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index e5db884697..7c24a63e4d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -1,7 +1,8 @@ --- info: - note: 'From eastern Germany: earns less Entgeltpunkte for same wage because Beitragsbemessungsgrenze - is lower' + note: >- + From eastern Germany: earns less Entgeltpunkte for same wage because + Beitragsbemessungsgrenze is lower. precision_atol: 0.1 source: https://www.ihre-vorsorge.de/rechner/rentenbeginnrechner.html inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index c74ca18dae..ab03aa6786 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -1,6 +1,8 @@ --- info: - note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", + note: >- + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, + "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 precision_atol: 1 inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index 7559551103..e0aeaf4a42 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -1,9 +1,11 @@ --- info: - note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since - test case uses 0.8 as maximum instead of 0.8004. + note: >- + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + test case uses 0.8 as maximum instead of 0.8004. Beispiel Alexander Langkowski / + Hatice Yilmaz. precision_atol: 1 - source: 'Beispiel Alexander Langkowski / Hatice Yilmaz aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 201fabe341..34f594f1cf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -1,6 +1,8 @@ --- info: - note: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", + note: >- + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, + "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 precision_atol: 1 inputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index 1ab1101228..49f2f4ca3d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -2,7 +2,9 @@ info: note: '' precision_atol: 1 - source: Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das Grundrentengesetz", + source: >- + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, + "Das Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: assumed: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index dc93453f76..411d059967 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -1,6 +1,7 @@ --- info: - note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: >- + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since test case uses 0.8 as maximum instead of 0.8004. Beispiel Sabine M. precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index fcebab4dcc..0886c36f0b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -1,6 +1,7 @@ --- info: - note: Adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since + note: >- + Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` since test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index e7d5dc9c06..5506b0097f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -1,9 +1,10 @@ --- info: - note: adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since - test case uses 0.8 as maximum instead of 0.8004 + note: >- + Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` since + test case uses 0.8 as maximum instead of 0.8004. Beispiel Richard Frenzel. precision_atol: 1 - source: 'Beispiel Richard Frenzel aus: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html' + source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: assumed: {} provided: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index ea36f07133..abc379baa7 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -1,6 +1,7 @@ --- info: - note: Expanded test case to include additional household members so that more than seven + note: >- + Expanded test case to include additional household members so that more than seven people are eligible for housing subsidies precision_atol: 0.01 source: Regression test. diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index bacdcf77bb..0ff2e96f77 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -11,11 +11,16 @@ from _gettsim_tests import TEST_DIR from ttsim import ( PolicyEnvironment, + compute_taxes_and_transfers, merge_trees, set_up_policy_environment, ) from ttsim.shared import to_datetime +# Set display options to show all columns without truncation +pd.set_option("display.max_columns", None) +pd.set_option("display.width", None) + if TYPE_CHECKING: import datetime from pathlib import Path @@ -64,11 +69,6 @@ def name(self) -> str: def execute_test(test: PolicyTest): - from pandas.testing import assert_frame_equal - - from _gettsim_tests.utils import cached_set_up_policy_environment - from ttsim import compute_taxes_and_transfers - environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( @@ -82,14 +82,40 @@ def execute_test(test: PolicyTest): flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) if flat_expected_output_tree: - result_dataframe = pd.DataFrame(flat_result) - expected_dataframe = pd.DataFrame(flat_expected_output_tree) - assert_frame_equal( - result_dataframe, - expected_dataframe, - atol=test.info["precision_atol"], - check_dtype=False, - ) + result_df = pd.DataFrame(flat_result) + expected_df = pd.DataFrame(flat_expected_output_tree) + try: + pd.testing.assert_frame_equal( + result_df, + expected_df, + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError as e: + assert set(result_df.columns) == set(expected_df.columns) + cols_with_differences = [] + for col in expected_df.columns: + try: + pd.testing.assert_series_equal( + result_df[col], + expected_df[col], + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError: + cols_with_differences.append(col) + raise AssertionError( + f"""actual != expected in columns: {cols_with_differences}. + +actual[cols_with_differences]: + +{result_df[cols_with_differences]} + +expected[cols_with_differences]: + +{expected_df[cols_with_differences]} +""" + ) from e def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: diff --git a/src/ttsim/params-schema.json b/src/ttsim/params-schema.json new file mode 100644 index 0000000000..b9a56774a1 --- /dev/null +++ b/src/ttsim/params-schema.json @@ -0,0 +1,90 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9äöüßÄÖÜ_]+$": { + "type": "object", + "properties": { + "name": { + "type": "object", + "properties": { + "de": { "type": "string" }, + "en": { "type": ["string", "null"] } + }, + "required": ["de"], + "additionalProperties": false + }, + "description": { + "type": "object", + "properties": { + "de": { "type": "string" }, + "en": { "type": ["string", "null"] } + }, + "required": ["de"], + "additionalProperties": false + }, + "unit": { + "type": ["string", "null"], + "enum": [ + "Euro", + "DM", + "Share", + "Percent", + "Factor", + "Year", + "Month", + "Hour", + "Square Meter", + "Euro / Square Meter", + null + ] + }, + "type": { + "type": "string" + }, + "reference_period": { + "type": "string", + "enum": ["Year", "Quarter", "Month", "Week", "Day"] + }, + "access_different_date": { + "type": "string", + "enum": ["vorjahr", "jahresanfang"] + } + }, + "patternProperties": { + "^(19|20|21)[0-9]{2}-(0[1-9]|1[0-2])-[0-3][0-9]$": { + "type": "object", + "properties": { + "scalar": { "type": ["number", "string", "null"] }, + "reference": { "type": ["string", "null"] }, + "note": { "type": ["string", "null"] }, + "deviation_from": { "type": ["string", "null"] }, + "unit": { "type": "string" }, + "type": { "type": "string" }, + "min_alter": { "type": "number" }, + "max_alter": { "type": "number" }, + "betrag": { "type": "number" }, + "lower_threshold": { + "oneOf": [ + { "type": "number" }, + { "type": "string", "enum": ["-inf"] } + ] + }, + "upper_threshold": { + "oneOf": [ + { "type": "number" }, + { "type": "string", "enum": ["inf"] } + ] + }, + "rate": { "type": "number" }, + "intercept_at_lower_threshold": { "type": "number" } + }, + "additionalProperties": true + } + }, + "required": ["name", "description"], + "additionalProperties": true + } + }, + "additionalProperties": false + } diff --git a/tests/ttsim/mettsim/parameters/housing_benefits.yaml b/tests/ttsim/mettsim/parameters/housing_benefits.yaml index 4777599838..9605d50e26 100644 --- a/tests/ttsim/mettsim/parameters/housing_benefits.yaml +++ b/tests/ttsim/mettsim/parameters/housing_benefits.yaml @@ -1,13 +1,31 @@ --- eligibility: + name: + de: Anspruchsvoraussetzungen + en: Eligibility + description: + de: In Mittelerde passiert nichts. + en: In Middle Earth nothing happens. 1900-01-01: subsistence_income_per_spouse_m: 500.0 2020-01-01: subsistence_income_per_individual_m: 500.0 max_number_of_family_members: 4 assistance_rate: + name: + de: Unterstützungssatz + en: Assistance rate + description: + de: In Mittelerde passiert immer noch nichts. + en: Still nothing happens in Middle Earth. 1900-01-01: scalar: 0.5 max_age_children: + name: + de: Maximalalter der Kinder + en: Maximum age of children + description: + de: In Mittelerde passiert nichts, niemals. + en: In Middle Earth nothing happens, ever. 1900-01-01: scalar: 18 diff --git a/tests/ttsim/mettsim/parameters/payroll_tax.yaml b/tests/ttsim/mettsim/parameters/payroll_tax.yaml index d5b6f379ee..6e5c200b73 100644 --- a/tests/ttsim/mettsim/parameters/payroll_tax.yaml +++ b/tests/ttsim/mettsim/parameters/payroll_tax.yaml @@ -1,13 +1,31 @@ --- child_tax_credit: + name: + de: Kinderfreibetrag + en: Child tax credit + description: + de: In Mittelerde passiert nichts. + en: In Middle Earth nothing happens. 1900-01-01: child_amount_y: 100.0 max_age: 18 income: + name: + de: Einkommensteuertarif + en: Income tax schedule + description: + de: Name ergibt wenig Sinn. + en: The name makes little sense. 1900-01-01: lump_sum_deduction_y: 100.0 rate: 0.3 reduced_rate: 0.15 wealth_threshold_for_reduced_tax_rate: + name: + de: Vermögensschwelle, bis zu der der niedrigere Steuersatz gilt + en: Wealth threshold below which the lower tax rate applies + description: + de: Umgekehrte Bennenung schiene sinnvoll. + en: The reverse naming would seem more sensible. 1900-01-01: scalar: 50000 From 7ff0b241951f889c57f349b83086c2d8bcbaf26b Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sat, 26 Apr 2025 19:10:38 +0200 Subject: [PATCH 022/109] Interface: Add DataFrame to NestedDataDict conversion (#876) ### What problem do you want to solve? Users can easily create a NestedDataDict by providing a mapper from the paths used in the TTSIM instance to a column in the DataFrame or a pandas Series or a single value. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/_gettsim/interface.py | 89 ++++++++++ src/_gettsim_tests/utils.py | 2 +- src/ttsim/__init__.py | 13 +- src/ttsim/prepare_data.py | 162 ++++++++++++++++++ src/ttsim/typing.py | 3 +- tests/ttsim/test_combine_functions.py | 12 +- .../ttsim/test_compute_taxes_and_transfers.py | 26 +-- tests/ttsim/test_create_data_tree.py | 121 +++++++++++++ .../group_by_ids/2025-01-01/group_by_ids.yaml | 2 +- .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 2 +- .../amount_with_children_high_income.yaml | 2 +- .../amount_with_children_low_income.yaml | 2 +- .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 2 +- .../amount_with_children_high_income.yaml | 2 +- .../amount_with_children_low_income.yaml | 2 +- .../2025-01-01/amount_with_many_children.yaml | 2 +- .../2025-01-01/amount_no_children.yaml | 2 +- .../amount_no_children_high_wealth.yaml | 2 +- .../amount_no_children_noble_parents.yaml | 2 +- .../2025-01-01/amount_with_children.yaml | 2 +- ..._children_inputs_need_to_be_converted.yaml | 2 +- .../2025-01-01/amount_with_many_children.yaml | 2 +- tests/ttsim/test_dates_active.py | 7 +- tests/ttsim/test_docs.py | 1 + tests/ttsim/test_join.py | 2 +- tests/ttsim/test_loader.py | 3 +- tests/ttsim/test_piecewise_polynomial.py | 4 +- tests/ttsim/test_policy_environment.py | 14 +- tests/ttsim/test_rounding.py | 9 +- tests/ttsim/test_time_conversion.py | 2 +- tests/ttsim/test_ttsim_objects.py | 2 +- tests/ttsim/test_vectorization.py | 2 +- tests/ttsim/test_visualizations.py | 3 +- tests/ttsim/utils.py | 53 ++++-- 36 files changed, 478 insertions(+), 84 deletions(-) create mode 100644 src/_gettsim/interface.py create mode 100644 src/ttsim/prepare_data.py create mode 100644 tests/ttsim/test_create_data_tree.py diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py new file mode 100644 index 0000000000..7c46555778 --- /dev/null +++ b/src/_gettsim/interface.py @@ -0,0 +1,89 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from _gettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS +from ttsim import ( + compute_taxes_and_transfers, + create_data_tree_from_df, + set_up_policy_environment, +) + +if TYPE_CHECKING: + import pandas as pd + from dags.tree.typing import NestedTargetDict + + from ttsim.typing import NestedDataDict, NestedInputsPathsToDfColumns + + +def oss( + date: str, + df: pd.DataFrame, + inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, + targets_tree: NestedTargetDict, +) -> NestedDataDict: + """One-stop-shop for computing taxes and transfers. + + Args: + date: + The date to compute taxes and transfers for. The date determines the policy + environment for which the taxes and transfers are computed. + df: + The DataFrame containing the data. + inputs_tree_to_df_columns: + A nested dictionary that maps GETTSIM's expected input structure to the data + provided by the user. Keys are strings that provide a path to an input. + + Values can be: + - Strings that reference column names in the DataFrame. + - Numeric or boolean values (which will be broadcasted to match the length + of the DataFrame). + targets_tree: + The targets tree. + + + Examples: + -------- + >>> inputs_tree_to_df_columns = { + ... "einkommensteuer": { + ... "gemeinsam_veranlagt": "joint_taxation", + ... "einkünfte": { + ... "aus_nichtselbstständiger_arbeit": { + ... "bruttolohn_m": "gross_wage_m", + ... }, + ... }, + ... }, + ... "alter": 30, + ... "p_id": "p_id", + ... } + >>> df = pd.DataFrame( + ... { + ... "gross_wage_m": [1000, 2000, 3000], + ... "joint_taxation": [True, True, False], + ... "p_id": [0, 1, 2], + ... } + ... ) + >>> oss( + ... date="2024-01-01", + ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, + ... targets_tree=targets_tree, + ... df=df, + ... ) + """ + data_tree = create_data_tree_from_df( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, + df=df, + ) + policy_environment = set_up_policy_environment( + date=date, + resource_dir=RESOURCE_DIR, + ) + return compute_taxes_and_transfers( + data_tree=data_tree, + environment=policy_environment, + targets_tree=targets_tree, + supported_groupings=SUPPORTED_GROUPINGS, + rounding=True, + debug=False, + jit=False, + ) diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 0ff2e96f77..aeb51e06b3 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -14,8 +14,8 @@ compute_taxes_and_transfers, merge_trees, set_up_policy_environment, + to_datetime, ) -from ttsim.shared import to_datetime # Set display options to show all columns without truncation pd.set_option("display.max_columns", None) diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index dbedb311a8..0f2cb5bf0e 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -5,18 +5,16 @@ FunctionsAndColumnsOverlapWarning, compute_taxes_and_transfers, ) -from ttsim.loader import ( - ConflictingTimeDependentObjectsError, - get_active_ttsim_objects_tree_from_module, - load_objects_tree_for_date, -) +from ttsim.loader import ConflictingTimeDependentObjectsError from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment +from ttsim.prepare_data import create_data_tree_from_df from ttsim.rounding import RoundingSpec from ttsim.shared import ( insert_path_and_value, join, merge_trees, + to_datetime, upsert_path_and_value, upsert_tree, ) @@ -53,19 +51,18 @@ "agg_by_p_id_function", "combine_policy_functions_and_derived_functions", "compute_taxes_and_transfers", + "create_data_tree_from_df", "create_time_conversion_functions", - "get_active_ttsim_objects_tree_from_module", - "get_piecewise_parameters", "group_creation_function", "insert_path_and_value", "join", - "load_objects_tree_for_date", "merge_trees", "piecewise_polynomial", "plot_dag", "policy_function", "policy_input", "set_up_policy_environment", + "to_datetime", "upsert_path_and_value", "upsert_tree", ] diff --git a/src/ttsim/prepare_data.py b/src/ttsim/prepare_data.py new file mode 100644 index 0000000000..e779b13b7d --- /dev/null +++ b/src/ttsim/prepare_data.py @@ -0,0 +1,162 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt +import optree +import pandas as pd + +from ttsim.shared import format_errors_and_warnings, format_list_linewise + +if TYPE_CHECKING: + from ttsim.typing import NestedDataDict, NestedInputsPathsToDfColumns + + +def create_data_tree_from_df( + inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, + df: pd.DataFrame, +) -> NestedDataDict: + """Transform a pandas DataFrame to a nested dictionary expected by TTSIM. + ` + Args + ---- + inputs_tree_to_df_columns: + A nested dictionary that defines the structure of the output tree. Keys + are strings that define the nested structure. Values can be: + + - Strings that reference column names in the DataFrame. + - Numeric or boolean values (which will be broadcasted to match the + DataFrame length) + df: + The pandas DataFrame containing the source data. + + Returns + ------- + A nested dictionary structure containing the data organized according to the + mapping definition. + + Examples + -------- + >>> df = pd.DataFrame({ + ... "a": [1, 2, 3], + ... "b": [4, 5, 6], + ... "c": [7, 8, 9], + ... }) + >>> inputs_tree_to_df_columns = { + ... "n1": { + ... "n2": "a", + ... "n3": "b", + ... }, + ... "n4": 3, + ... } + >>> result = create_data_tree( + ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, + ... df=df, + ... ) + >>> result + { + "n1": { + "n2": pd.Series([1, 2, 3]), + "n3": pd.Series([4, 5, 6]), + }, + "n4": pd.Series([3, 3, 3]), + } + + + """ + _fail_if_df_has_bool_or_numeric_column_names(df) + _fail_if_mapper_has_incorrect_format(inputs_tree_to_df_columns) + + qualified_inputs_tree_to_df_columns = dt.flatten_to_qual_names( + inputs_tree_to_df_columns + ) + + name_to_input_series = {} + for ( + qualified_input_name, + input_value, + ) in qualified_inputs_tree_to_df_columns.items(): + if input_value in df.columns: + name_to_input_series[qualified_input_name] = df[input_value] + else: + name_to_input_series[qualified_input_name] = pd.Series( + [input_value] * len(df), + index=df.index, + ) + + return dt.unflatten_from_qual_names(name_to_input_series) + + +def _fail_if_mapper_has_incorrect_format( + inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, +) -> None: + """Fail if the input tree to column name mapping has an incorrect format.""" + if not isinstance(inputs_tree_to_df_columns, dict): + msg = format_errors_and_warnings( + """The input tree to column mapping must be a (nested) dictionary. Call + `create_input_structure` to create a template.""" + ) + raise TypeError(msg) + + non_string_paths = [ + str(path) + for path in optree.tree_paths(inputs_tree_to_df_columns, none_is_leaf=True) + if not all(isinstance(part, str) for part in path) + ] + if non_string_paths: + msg = format_errors_and_warnings( + f"""All path elements of `inputs_tree_to_df_columns` must be strings. + Found the following paths that contain non-string elements: + + {format_list_linewise(non_string_paths)} + + Call `create_input_structure` to create a template. + """ + ) + raise TypeError(msg) + + incorrect_types = { + k: type(v) + for k, v in dt.flatten_to_qual_names(inputs_tree_to_df_columns).items() + if not isinstance(v, str | int | bool) + } + if incorrect_types: + formatted_incorrect_types = "\n".join( + f" - {k}: {v.__name__}" for k, v in incorrect_types.items() + ) + msg = format_errors_and_warnings( + f"""Values of the input tree to column mapping must be strings, integers, + or booleans. + Found the following incorrect types: + + {formatted_incorrect_types} + """ + ) + raise TypeError(msg) + + +def _fail_if_df_has_bool_or_numeric_column_names(df: pd.DataFrame) -> None: + """Fail if the DataFrame has bool or numeric column names.""" + common_msg = format_errors_and_warnings( + """DataFrame column names cannot be booleans or numbers. This restriction + prevents ambiguity between actual column references and values intended for + broadcasting. + """ + ) + bool_column_names = [col for col in df.columns if isinstance(col, bool)] + numeric_column_names = [ + col + for col in df.columns + if isinstance(col, (int, float)) or (isinstance(col, str) and col.isnumeric()) + ] + + if bool_column_names or numeric_column_names: + msg = format_errors_and_warnings( + f""" + {common_msg} + + Boolean column names: {bool_column_names}. + Numeric column names: {numeric_column_names}. + """ + ) + raise ValueError(msg) diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index cf4935715f..6fc46b9421 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, NewType +from typing import TYPE_CHECKING, Any, NewType if TYPE_CHECKING: from collections.abc import Mapping @@ -25,6 +25,7 @@ QualNamePolicyInputDict = Mapping[str, PolicyInput] # Specialise from dags' NestedInputDict to GETTSIM's types. + NestedInputsPathsToDfColumns = Mapping[str, Any | "NestedInputsPathsToDfColumns"] NestedDataDict = Mapping[str, pd.Series | "NestedDataDict"] QualNameDataDict = Mapping[str, pd.Series] NestedArrayDict = Mapping[str, np.ndarray | "NestedArrayDict"] diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index 56353982cc..c152540045 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -1,16 +1,16 @@ import pandas as pd import pytest -from ttsim.aggregation import AggType -from ttsim.automatically_added_functions import create_agg_by_group_functions -from ttsim.combine_functions import _fail_if_targets_not_in_functions -from ttsim.compute_taxes_and_transfers import compute_taxes_and_transfers -from ttsim.policy_environment import PolicyEnvironment -from ttsim.ttsim_objects import ( +from ttsim import ( + AggType, + PolicyEnvironment, agg_by_group_function, + compute_taxes_and_transfers, policy_function, policy_input, ) +from ttsim.automatically_added_functions import create_agg_by_group_functions +from ttsim.combine_functions import _fail_if_targets_not_in_functions @pytest.fixture diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 228440c941..9015f6bdac 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -8,27 +8,29 @@ import pytest from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS -from ttsim.aggregation import AggType -from ttsim.compute_taxes_and_transfers import ( +from ttsim import ( + AggType, FunctionsAndColumnsOverlapWarning, + PolicyEnvironment, + agg_by_group_function, + agg_by_p_id_function, + compute_taxes_and_transfers, + group_creation_function, + merge_trees, + policy_function, + policy_input, + set_up_policy_environment, +) +from ttsim.compute_taxes_and_transfers import ( _fail_if_foreign_keys_are_invalid_in_data, _fail_if_group_ids_are_outside_top_level_namespace, _fail_if_group_variables_not_constant_within_groups, _fail_if_p_id_is_non_unique, _get_top_level_namespace, _partial_parameters_to_functions, - compute_taxes_and_transfers, ) from ttsim.config import numpy_or_jax as np -from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment -from ttsim.shared import assert_valid_ttsim_pytree, merge_trees -from ttsim.ttsim_objects import ( - agg_by_group_function, - agg_by_p_id_function, - group_creation_function, - policy_function, - policy_input, -) +from ttsim.shared import assert_valid_ttsim_pytree @policy_input() diff --git a/tests/ttsim/test_create_data_tree.py b/tests/ttsim/test_create_data_tree.py new file mode 100644 index 0000000000..5fe98cd982 --- /dev/null +++ b/tests/ttsim/test_create_data_tree.py @@ -0,0 +1,121 @@ +import dags.tree as dt +import pandas as pd +import pytest + +from ttsim import create_data_tree_from_df + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "df", + "expected_output", + ), + [ + ( + { + "n1": { + "n2": "a", + }, + }, + pd.DataFrame({"a": [1, 2, 3]}), + {"n1": {"n2": pd.Series([1, 2, 3])}}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": "b", + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": 3, + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, + ), + ], +) +def test_create_data_tree_from_df( + inputs_tree_to_df_columns, + df, + expected_output, +): + result = create_data_tree_from_df( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, + df=df, + ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output = dt.flatten_to_qual_names(expected_output) + + assert set(flat_result.keys()) == set(flat_expected_output.keys()) + for key in flat_result: + pd.testing.assert_series_equal( + flat_result[key], flat_expected_output[key], check_names=False + ) + + +@pytest.mark.parametrize( + "df", + [ + pd.DataFrame({True: [1, 2]}), + pd.DataFrame({1: [1, 2]}), + ], +) +def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): + with pytest.raises( + ValueError, match="DataFrame column names cannot be booleans or numbers." + ): + create_data_tree_from_df(inputs_tree_to_df_columns={}, df=df) + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "expected_error_message", + ), + [ + ( + [], + "The input tree to column mapping must be a \\(nested\\) dictionary.", + ), + ( + { + "n1": { + "n2": pd.Series([1, 2, 3]), + }, + }, + "n1__n2: Series", + ), + ( + { + "n1": { + "n2": None, + }, + }, + "n1__n2: NoneType", + ), + ( + { + "n1": { + True: 2, + }, + }, + "All path elements of `inputs_tree_to_df_columns` must be strings.", + ), + ], +) +def test_create_data_tree_fails_if_mapper_has_incorrect_format( + inputs_tree_to_df_columns, expected_error_message +): + with pytest.raises(TypeError, match=expected_error_message): + create_data_tree_from_df( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() + ) diff --git a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml index f2ab0c7802..794beabb0c 100644 --- a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml +++ b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml index a5e42e38d2..28bc499e4c 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml index bbca940c7b..1453ebf203 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml index 93a799cd4e..9643c19cb6 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml index 212e308c05..960cbef1bf 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml index 1b87b842e4..a6e0a5b097 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml index 48aacdaddc..5812c7b6d9 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml index 60daa81ac1..036c556bed 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml index b34c71a70a..ecdb07ff42 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml index 417b6cab4c..4c5acb562d 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml index 719b875122..30ac2a46ef 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml index 5f501d98fe..721c2807ee 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml index cc1b53cb11..06d7589dfd 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml index c0e86898a0..6a7cfc3405 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml index 6546f84a4d..649ed39807 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml index 12b4ae5479..e5aaa69a55 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml @@ -1,7 +1,7 @@ --- info: note: '' - precision: 0.01 + precision_atol: 0.01 source: '' inputs: provided: diff --git a/tests/ttsim/test_dates_active.py b/tests/ttsim/test_dates_active.py index 47fe612750..fc83d3f675 100644 --- a/tests/ttsim/test_dates_active.py +++ b/tests/ttsim/test_dates_active.py @@ -2,11 +2,8 @@ import pytest -from ttsim.loader import ( - ConflictingTimeDependentObjectsError, - _fail_if_multiple_ttsim_objects_are_active_at_the_same_time, -) -from ttsim.ttsim_objects import policy_function +from ttsim import ConflictingTimeDependentObjectsError, policy_function +from ttsim.loader import _fail_if_multiple_ttsim_objects_are_active_at_the_same_time # Start date ----------------------------------------------- diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 0b4afa2f8e..aa3d51d93a 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -8,6 +8,7 @@ from _gettsim.config import ( RESOURCE_DIR, ) +from ttsim import PolicyInput from ttsim.loader import load_objects_tree_for_date from ttsim.shared import remove_group_suffix diff --git a/tests/ttsim/test_join.py b/tests/ttsim/test_join.py index 3c16275fe2..709386fc19 100644 --- a/tests/ttsim/test_join.py +++ b/tests/ttsim/test_join.py @@ -1,7 +1,7 @@ import pytest +from ttsim import join from ttsim.config import numpy_or_jax as np -from ttsim.shared import join @pytest.mark.parametrize( diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index d8143a694a..47b0fd5119 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -6,12 +6,13 @@ import pytest from mettsim.config import RESOURCE_DIR +from ttsim import policy_function from ttsim.loader import ( _convert_path_to_tree_path, _find_python_files_recursively, _load_module, ) -from ttsim.ttsim_objects import _vectorize_func, policy_function +from ttsim.ttsim_objects import _vectorize_func if TYPE_CHECKING: from collections.abc import Callable diff --git a/tests/ttsim/test_piecewise_polynomial.py b/tests/ttsim/test_piecewise_polynomial.py index ffa3ed4305..1f062f3467 100644 --- a/tests/ttsim/test_piecewise_polynomial.py +++ b/tests/ttsim/test_piecewise_polynomial.py @@ -4,9 +4,7 @@ import numpy -from ttsim.piecewise_polynomial import ( - get_piecewise_parameters, -) +from ttsim.piecewise_polynomial import get_piecewise_parameters def test_get_piecewise_parameters_all_intercepts_supplied(): diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index a8579f6e35..230d158bdb 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -11,17 +11,17 @@ import pytest from mettsim.config import RESOURCE_DIR -from ttsim.policy_environment import ( +from ttsim import ( + GroupCreationFunction, PolicyEnvironment, + group_creation_function, + policy_function, + set_up_policy_environment, +) +from ttsim.policy_environment import ( _fail_if_name_of_last_branch_element_not_leaf_name_of_function, _load_parameter_group_from_yaml, load_objects_tree_for_date, - set_up_policy_environment, -) -from ttsim.ttsim_objects import ( - GroupCreationFunction, - group_creation_function, - policy_function, ) if TYPE_CHECKING: diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index 62d2e9832d..acd8788869 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -2,12 +2,13 @@ import pytest from pandas._testing import assert_series_equal -from ttsim.compute_taxes_and_transfers import ( +from ttsim import ( + PolicyEnvironment, + RoundingSpec, compute_taxes_and_transfers, + policy_function, + policy_input, ) -from ttsim.policy_environment import PolicyEnvironment -from ttsim.rounding import RoundingSpec -from ttsim.ttsim_objects import policy_function, policy_input @policy_input() diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_time_conversion.py index 4895896df7..3abb724862 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -2,6 +2,7 @@ import pytest +from ttsim import policy_function from ttsim.automatically_added_functions import ( _create_function_for_time_unit, create_time_conversion_functions, @@ -26,7 +27,6 @@ y_to_q, y_to_w, ) -from ttsim.ttsim_objects import policy_function def return_one() -> int: diff --git a/tests/ttsim/test_ttsim_objects.py b/tests/ttsim/test_ttsim_objects.py index c255d18c0c..95ba037fa8 100644 --- a/tests/ttsim/test_ttsim_objects.py +++ b/tests/ttsim/test_ttsim_objects.py @@ -2,7 +2,7 @@ import pytest -from ttsim.ttsim_objects import ( +from ttsim import ( AggType, PolicyFunction, PolicyInput, diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 05485360ae..6b99ace040 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -15,8 +15,8 @@ import jax.numpy from numpy.testing import assert_array_equal +from ttsim import GroupCreationFunction, PolicyInput, policy_function from ttsim.loader import load_objects_tree_for_date -from ttsim.ttsim_objects import GroupCreationFunction, PolicyInput, policy_function from ttsim.vectorization import ( TranslateToVectorizableError, _is_lambda_function, diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index b5c3130c5b..63c5fba914 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -2,14 +2,13 @@ import pytest from mettsim.config import RESOURCE_DIR -from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment +from ttsim import PolicyEnvironment, plot_dag, set_up_policy_environment from ttsim.visualization import ( _get_selected_nodes, _kth_order_neighbors, _node_and_ancestors, _node_and_descendants, _select_nodes_in_dag, - plot_dag, ) environment = set_up_policy_environment(date="2020-01-01", resource_dir=RESOURCE_DIR) diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index d31592cb48..c6d3c8d9db 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -8,15 +8,18 @@ import yaml from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS -from ttsim import merge_trees, set_up_policy_environment +from ttsim import compute_taxes_and_transfers, merge_trees, set_up_policy_environment from ttsim.shared import to_datetime TEST_DIR = Path(__file__).parent +# Set display options to show all columns without truncation +pd.set_option("display.max_columns", None) +pd.set_option("display.width", None) if TYPE_CHECKING: import datetime - from ttsim import NestedDataDict, NestedInputStructureDict + from ttsim.typing import NestedDataDict, NestedInputStructureDict class PolicyTest: @@ -49,10 +52,6 @@ def name(self) -> str: def execute_test(test: PolicyTest): - from pandas.testing import assert_frame_equal - - from ttsim import compute_taxes_and_transfers - environment = set_up_policy_environment(date=test.date, resource_dir=RESOURCE_DIR) result = compute_taxes_and_transfers( @@ -66,14 +65,40 @@ def execute_test(test: PolicyTest): flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) if flat_expected_output_tree: - result_dataframe = pd.DataFrame(flat_result) - expected_dataframe = pd.DataFrame(flat_expected_output_tree) - assert_frame_equal( - result_dataframe, - expected_dataframe, - atol=test.info["precision"], - check_dtype=False, - ) + result_df = pd.DataFrame(flat_result) + expected_df = pd.DataFrame(flat_expected_output_tree) + try: + pd.testing.assert_frame_equal( + result_df, + expected_df, + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError as e: + assert set(result_df.columns) == set(expected_df.columns) + cols_with_differences = [] + for col in expected_df.columns: + try: + pd.testing.assert_series_equal( + result_df[col], + expected_df[col], + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError: + cols_with_differences.append(col) + raise AssertionError( + f"""actual != expected in columns: {cols_with_differences}. + +actual[cols_with_differences]: + +{result_df[cols_with_differences]} + +expected[cols_with_differences]: + +{expected_df[cols_with_differences]} +""" + ) from e def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: From 362809899b9903288f9aee16bc3cdf4cbee04f53 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sat, 26 Apr 2025 19:22:13 +0200 Subject: [PATCH 023/109] Fix ruff complaints. (#885) ### What problem do you want to solve? Fix ruff complaints by - Ignoring `synthetic.py` and its test file because those will be rewritten soon. Same is true for `test_docs.py`. - Removing old tests: - We don't need to test for type conversions anymore. - We don't need to explicitly test for the handling of (qualified) source column names for aggregation functions because those are handled by `dags` now. - Some minor adjustments to the rest of the code --- docs/tutorials/policy_functions.ipynb | 6 +- pyproject.toml | 7 +- src/_gettsim_tests/utils.py | 1 + src/ttsim/policy_environment.py | 4 +- tests/ttsim/test_combine_functions.py | 189 ------------------ .../ttsim/test_compute_taxes_and_transfers.py | 171 +--------------- tests/ttsim/test_docs.py | 10 +- 7 files changed, 19 insertions(+), 369 deletions(-) diff --git a/docs/tutorials/policy_functions.ipynb b/docs/tutorials/policy_functions.ipynb index 497f6868e7..a5e707ec71 100644 --- a/docs/tutorials/policy_functions.ipynb +++ b/docs/tutorials/policy_functions.ipynb @@ -201,11 +201,11 @@ "outputs": [], "source": [ "# Loop through keys to plot both scenarios.\n", - "for k in environments:\n", + "for name, environment in environments.items():\n", " # Compute taxes and transfers.\n", " result = compute_taxes_and_transfers(\n", " data=data,\n", - " environment=environments[k],\n", + " environment=environment,\n", " targets=targets,\n", " )\n", " # Add earnings and index to result DataFrame.\n", @@ -231,7 +231,7 @@ " data_frame=result,\n", " x=\"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\",\n", " y=targets,\n", - " title=k,\n", + " title=name,\n", " )\n", " fig.update_layout(\n", " xaxis_title=\"Monthly gross income in € (per household)\",\n", diff --git a/pyproject.toml b/pyproject.toml index bc0f89b43d..8f1ba5b565 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -252,9 +252,14 @@ exclude = [] "src/ttsim/policy_environment.py" = ["S506", "PLR"] "src/ttsim/visualization.py" = ["PLR"] "src/_gettsim/*" = ["E501"] -"src/_gettsim_tests/test_synthetic.py" = ["E501"] "docs/**/*.ipynb" = ["T201"] +# Files which should be ignored until we have rewritten them +# ========================================================= +"src/_gettsim/synthetic.py" = ["F821"] +"src/_gettsim_tests/test_synthetic.py" = ["F821", "E501"] +"tests/ttsim/test_docs.py" = ["F821"] + [tool.ruff.lint.pydocstyle] convention = "numpy" diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index aeb51e06b3..2b26a7e5c6 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -134,6 +134,7 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: raw_test_data: NestedDataDict = yaml.safe_load(file) # TODO(@MImmesberger): Remove this before merging this PR. + # https://github.com/iza-institute-of-labor-economics/gettsim/pull/884 raw_test_data["inputs"], raw_test_data["outputs"] = get_test_data_as_tree( raw_test_data ) diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index d794a0d4ec..c5edd3bce8 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -167,7 +167,9 @@ def set_up_policy_environment( params = {} if "_gettsim" in resource_dir.name: - from _gettsim.config import INTERNAL_PARAMS_GROUPS as internal_params_groups + from _gettsim.config import ( + INTERNAL_PARAMS_GROUPS as internal_params_groups, # noqa: N811 + ) else: internal_params_groups = [ "payroll_tax", diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index c152540045..36be8dbdae 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -250,192 +250,3 @@ def test_derived_aggregation_functions_are_in_correct_namespace( groupings=("hh",), ) assert expected in result - - -# @pytest.mark.parametrize( -# ( -# "aggregation_target", -# "aggregation_spec", -# "functions", -# "policy_inputs", -# "group_by_id", -# "top_level_namespace", -# "expected_arg_names", -# ), -# [ -# ( -# "foo", -# AggregateByPIDSpec( -# target="foo_hh", -# agg=AggType.SUM, -# source="bar", -# p_id_to_aggregate_by="foreign_id_col", -# ), -# {"bar": policy_function(leaf_name="bar")(lambda x: x)}, -# {}, -# "foreign_id_col", -# ["foo", "foreign_id_col", "bar"], -# ["foreign_id_col", "bar"], -# ), -# ( -# "foo__fünc", -# AggregateByPIDSpec( -# target="foo_hh", -# agg=AggType.SUM, -# source="bär", -# p_id_to_aggregate_by="foreign_id_col", -# ), -# {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, -# {}, -# "foreign_id_col", -# ["foo", "foreign_id_col"], -# ["foreign_id_col", "foo__bär"], -# ), -# ( -# "foo", -# AggregateByPIDSpec( -# target="foo_hh", -# agg=AggType.SUM, -# source="x", -# p_id_to_aggregate_by="foreign_id_col", -# ), -# {}, -# {"x": x}, -# "foreign_id_col", -# ["foo", "foreign_id_col", "x"], -# ["foreign_id_col", "x"], -# ), -# ], -# ) -# def test_function_arguments_are_namespaced_for_derived_p_id_funcs( -# aggregation_target, -# aggregation_spec, -# functions, -# policy_inputs, -# group_by_id, -# top_level_namespace, -# expected_arg_names, -# ): -# result = _create_one_aggregation_function( -# aggregation_target=aggregation_target, -# aggregation_spec=aggregation_spec, -# aggregation_type="p_id", -# group_by_id=group_by_id, -# functions=functions, -# policy_inputs=policy_inputs, -# top_level_namespace=top_level_namespace, -# ) -# assert all( -# arg_name in inspect.signature(result).parameters -# for arg_name in expected_arg_names -# ) - - -# @pytest.mark.parametrize( -# ( -# "aggregation_target", -# "aggregation_spec", -# "functions", -# "policy_inputs", -# "group_by_id", -# "top_level_namespace", -# "source_col_name", -# ), -# [ -# ( -# "foo_hh", -# AggregateByGroupSpec(target="foo_hh", agg=AggType.SUM, source="foo"), -# {}, -# {"foo": policy_function(leaf_name="foo")(lambda x: x)}, -# "hh_id", -# ["foo", "hh_id"], -# "foo", -# ), -# ( -# "foo__bar_hh", -# AggregateByGroupSpec(target="bar_hh", agg=AggType.SUM, source="bar"), -# {}, -# {"foo__bar": policy_function(leaf_name="bar")(lambda x: x)}, -# "hh_id", -# ["foo", "hh_id"], -# "foo__bar", -# ), -# ], -# ) -# def test_source_column_name_of_aggregate_by_group_func_is_qualified( -# aggregation_target, -# aggregation_spec, -# functions, -# policy_inputs, -# group_by_id, -# top_level_namespace, -# source_col_name, -# ): -# result = _create_one_aggregation_function( -# aggregation_target=aggregation_target, -# aggregation_spec=aggregation_spec, -# aggregation_type="group", -# group_by_id=group_by_id, -# functions=functions, -# policy_inputs=policy_inputs, -# top_level_namespace=top_level_namespace, -# ) -# assert result.source == source_col_name - - -# @pytest.mark.parametrize( -# ( -# "aggregation_target", -# "aggregation_spec", -# "functions", -# "policy_inputs", -# "top_level_namespace", -# "source_col_name", -# ), -# [ -# ( -# "foo", -# AggregateByPIDSpec( -# target="foo_hh", -# agg=AggType.SUM, -# source="bar", -# p_id_to_aggregate_by="foreign_id_col", -# ), -# {}, -# {"bar": policy_function(leaf_name="bar")(lambda x: x)}, -# ["foo", "foreign_id_col", "bar"], -# "bar", -# ), -# ( -# "foo__fünc", -# AggregateByPIDSpec( -# target="foo_hh", -# agg=AggType.SUM, -# source="bär", -# p_id_to_aggregate_by="foreign_id_col", -# ), -# {}, -# {"foo__bär": policy_function(leaf_name="bär")(lambda x: x)}, -# ["foo", "foreign_id_col"], -# "foo__bär", -# ), -# ], -# ) -# def test_source_column_name_of_aggregate_by_p_id_func_is_qualified( -# aggregation_target, -# aggregation_spec, -# functions, -# policy_inputs, -# top_level_namespace, -# source_col_name, -# ): -# result = _create_one_aggregation_function( -# aggregation_target=aggregation_target, -# aggregation_spec=aggregation_spec, -# aggregation_type="p_id", -# group_by_id=None, -# functions=functions, -# policy_inputs=policy_inputs, -# top_level_namespace=top_level_namespace, -# ) -# assert result.source == source_col_name diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 9015f6bdac..7092900cdd 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -531,7 +531,7 @@ def sum_source_m_by_p_id_someone_else( ( { "module": { - "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else + "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else # noqa: E501 } }, "source_m", @@ -573,175 +573,6 @@ def source(p_id: int) -> int: # noqa: ARG001 numpy.testing.assert_array_almost_equal(out, expected) -# @pytest.mark.parametrize( -# "input_data, expected_type, expected_output_data", -# [ -# (pd.Series([0, 1, 0]), bool, pd.Series([False, True, False])), -# (pd.Series([1.0, 0.0, 1]), bool, pd.Series([True, False, True])), -# (pd.Series([200, 550, 237]), float, pd.Series([200.0, 550.0, 237.0])), -# (pd.Series([1.0, 4.0, 10.0]), int, pd.Series([1, 4, 10])), -# (pd.Series([200.0, 567.0]), int, pd.Series([200, 567])), -# (pd.Series([1.0, 0.0]), bool, pd.Series([True, False])), -# ], -# ) -# def test_convert_series_to_internal_types( -# input_data, expected_type, expected_output_data -# ): -# adjusted_input = convert_series_to_internal_type(input_data, expected_type) -# pd.testing.assert_series_equal(adjusted_input, expected_output_data) - - -# @pytest.mark.parametrize( -# "input_data, expected_type, error_match", -# [ -# ( -# pd.Series(["Hallo", 200, 325]), -# float, -# "Conversion from input type object to float failed.", -# ), -# ( -# pd.Series([True, False]), -# float, -# "Conversion from input type bool to float failed.", -# ), -# ( -# pd.Series(["a", "b", "c"]).astype("category"), -# float, -# "Conversion from input type category to float failed.", -# ), -# ( -# pd.Series(["2.0", "3.0"]), -# int, -# "Conversion from input type object to int failed.", -# ), -# ( -# pd.Series([1.5, 1.0, 2.9]), -# int, -# "Conversion from input type float64 to int failed.", -# ), -# ( -# pd.Series(["a", "b", "c"]).astype("category"), -# int, -# "Conversion from input type category to int failed.", -# ), -# ( -# pd.Series([5, 2, 3]), -# bool, -# "Conversion from input type int64 to bool failed.", -# ), -# ( -# pd.Series([1.5, 1.0, 35.0]), -# bool, -# "Conversion from input type float64 to bool failed.", -# ), -# ( -# pd.Series(["a", "b", "c"]).astype("category"), -# bool, -# "Conversion from input type category to bool failed.", -# ), -# ( -# pd.Series(["richtig"]), -# bool, -# "Conversion from input type object to bool failed.", -# ), -# ( -# pd.Series(["True", "False", ""]), -# bool, -# "Conversion from input type object to bool failed.", -# ), -# ( -# pd.Series(["true"]), -# bool, -# "Conversion from input type object to bool failed.", -# ), -# ( -# pd.Series(["zweitausendzwanzig"]), -# numpy.datetime64, -# "Conversion from input type object to datetime64 failed.", -# ), -# ( -# pd.Series([True, True]), -# numpy.datetime64, -# "Conversion from input type bool to datetime64 failed.", -# ), -# ( -# pd.Series([2020]), -# str, -# "The internal type <class 'str'> is not yet supported.", -# ), -# ], -# ) -# def test_fail_if_cannot_be_converted_to_internal_type( -# input_data, expected_type, error_match -# ): -# with pytest.raises(ValueError, match=error_match): -# convert_series_to_internal_type(input_data, expected_type) - - -# @pytest.mark.skip -# @pytest.mark.parametrize( -# "data, functions_overridden", -# [ -# ( -# {"sp_id": pd.Series([1, 2, 3])}, -# {"sp_id": sp_id}, -# ), -# ( -# {"fam_id": pd.Series([1, 2, 3])}, -# {"fam_id": fam_id}, -# ), -# ], -# ) -# def test_provide_endogenous_groupings(data, functions_overridden): -# """Test whether TTSIM handles user-provided grouping IDs, which would otherwise be -# set endogenously.""" -# _convert_data_to_correct_types(data, functions_overridden) - - -# @pytest.mark.skip -# @pytest.mark.parametrize( -# "data, functions_overridden, error_match", -# [ -# ( -# {"fam_id": pd.Series([1, 1.1, 2])}, -# {}, -# "- fam_id: Conversion from input type float64 to int", -# ), -# ( -# {"gondorian": pd.Series([1.1, 0.0, 1.0])}, -# {}, -# "- gondorian: Conversion from input type float64 to bool", -# ), -# ( -# { -# "fam_id": pd.Series([1.0, 2.0, 3.0]), -# "gondorian": pd.Series([2, 0, 1]), -# }, -# {}, -# "- gondorian: Conversion from input type int64 to bool", -# ), -# ( -# {"gondorian": pd.Series(["True", "False"])}, -# {}, -# "- gondorian: Conversion from input type object to bool", -# ), -# ( -# { -# "fam_id": pd.Series([1, "1", 2]), -# "payroll_tax__amount": pd.Series(["2000", 3000, 4000]), -# }, -# {}, -# "- fam_id: Conversion from input type object to int failed.", -# ), -# ], -# ) -# def test_fail_if_cannot_be_converted_to_correct_type( -# data, functions_overridden, error_match -# ): -# with pytest.raises(ValueError, match=error_match): -# _convert_data_to_correct_types(data, functions_overridden) - - @pytest.mark.parametrize( ("tree", "leaf_checker", "err_substr"), [ diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index aa3d51d93a..325d0d198d 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -27,7 +27,7 @@ def default_input_variables(): @pytest.fixture(scope="module") def all_function_names(): - functions = _load_internal_functions() # noqa: F821 + functions = _load_internal_functions() return sorted([func.leaf_name for func in functions]) @@ -63,7 +63,7 @@ def test_all_input_vars_documented( ): """Test if arguments of all non-internal functions are either the name of another function, a documented input variable, or a parameter dictionary.""" - functions = _load_internal_functions() # noqa: F821 + functions = _load_internal_functions() # Collect arguments of all non-internal functions (do not start with underscore) arguments = [ @@ -96,7 +96,7 @@ def test_all_input_vars_documented( def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): documented_functions = { f.leaf_name - for f in _load_functions( # noqa: F821 + for f in _load_functions( RESOURCE_DIR / "functions" / "all_functions_for_docs.py", package_root=RESOURCE_DIR, include_imported_functions=True, @@ -107,7 +107,7 @@ def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): internal_functions = { f.leaf_name - for f in _load_functions( # noqa: F821 + for f in _load_functions( internal_function_files, package_root=RESOURCE_DIR, include_imported_functions=True, @@ -123,7 +123,7 @@ def test_type_hints(): # noqa: PLR0912 """Check if output and input types of all functions coincide.""" types = {} - for func in _load_internal_functions(): # noqa: F821 + for func in _load_internal_functions(): if func.vectorization_strategy == "not_required": continue From cc7a01d78b69bfcd401bb54d12ae3a879d8f7742 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sat, 26 Apr 2025 19:29:16 +0200 Subject: [PATCH 024/109] Fix docs build (#886) ### What problem do you want to solve? Rough fix of the readthedocs build. - Remove list of "typical outputs" (because `_gettsim.functions` does not exist anymore) - Remove list of all policy functions (because `_gettsim.functions` does not exist anymore) - Move outdated tutorials to a different folder. (all of them rely on `create_synthetic_data` or the visualisation mechanic, none of them works anymore (and we have rewrite them soon anyhow)) --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- docs/gettsim_objects/functions.md | 11 ----- docs/gettsim_objects/index.md | 1 - docs/gettsim_objects/variables_out.md | 47 ------------------- docs/how_to_guides/index.md | 9 ---- docs/tutorials/index.md | 11 ----- .../calculating_elterngeld.ipynb | 0 ...ferent_ways_to_load_policy_functions.ipynb | 0 .../visualizing_the_system.ipynb | 0 .../tutorials/advanced_usage.ipynb | 0 .../tutorials/basic_usage.ipynb | 0 .../tutorials/debugging.ipynb | 0 .../tutorials/parameters.ipynb | 0 .../tutorials/policy_functions.ipynb | 0 pyproject.toml | 1 + src/_gettsim/synthetic.py | 3 +- src/ttsim/__init__.py | 2 +- 16 files changed, 4 insertions(+), 81 deletions(-) delete mode 100644 docs/gettsim_objects/variables_out.md rename {docs/how_to_guides => outdated_docs/how-to-guides}/calculating_elterngeld.ipynb (100%) rename {docs/how_to_guides => outdated_docs/how-to-guides}/different_ways_to_load_policy_functions.ipynb (100%) rename {docs/how_to_guides => outdated_docs/how-to-guides}/visualizing_the_system.ipynb (100%) rename {docs => outdated_docs}/tutorials/advanced_usage.ipynb (100%) rename {docs => outdated_docs}/tutorials/basic_usage.ipynb (100%) rename {docs => outdated_docs}/tutorials/debugging.ipynb (100%) rename {docs => outdated_docs}/tutorials/parameters.ipynb (100%) rename {docs => outdated_docs}/tutorials/policy_functions.ipynb (100%) diff --git a/docs/gettsim_objects/functions.md b/docs/gettsim_objects/functions.md index d8df3093a9..c45fb2f0c6 100644 --- a/docs/gettsim_objects/functions.md +++ b/docs/gettsim_objects/functions.md @@ -8,14 +8,3 @@ transfer system. They are sorted alphabetically. You can click on the functions in the table to be redirected to the functions signature further below. By clicking on the `source` hyperlink next to the function signatures, you can see the full source code of the function. - -```{eval-rst} -.. automodsumm:: _gettsim.functions.all_functions_for_docs - :functions-only: -``` - -```{eval-rst} -.. automodule:: _gettsim.functions.all_functions_for_docs - :members: - :imported-members: -``` diff --git a/docs/gettsim_objects/index.md b/docs/gettsim_objects/index.md index 766c535c57..3369536083 100644 --- a/docs/gettsim_objects/index.md +++ b/docs/gettsim_objects/index.md @@ -9,7 +9,6 @@ maxdepth: 1 interface functions input_variables -variables_out params means_testing ``` diff --git a/docs/gettsim_objects/variables_out.md b/docs/gettsim_objects/variables_out.md deleted file mode 100644 index c1f92a97e1..0000000000 --- a/docs/gettsim_objects/variables_out.md +++ /dev/null @@ -1,47 +0,0 @@ -# Typical output variables - -The table below gives an overview of typical variables selected by users to simulate -with GETTSIM. You can simulate them by defining them as target in -{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>`. -You can find their individual calculation in the documentation of all {ref}`functions`. - -```{list-table} -* - Variables - - Description -* - {func}`sozialversicherung__rente__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__rente__beitrag__betrag_versicherter_m>` - - Monthly amount employee old-age pensions contributions -* - {func}`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m>` - - Monthly amount employee unempl. insurance contributions -* - {func}`sozialversicherung__kranken__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__kranken__beitrag__betrag_versicherter_m>` - - Monthly amount employee health insurance contributions -* - {func}`sozialversicherung__pflege__beitrag__betrag_versicherter_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__pflege__beitrag__betrag_versicherter_m>` - - Monthly amount of long term care insurance -* - {func}`sozialversicherung__arbeitslosen__betrag_m <_gettsim.functions.all_functions_for_docs.sozialversicherung__arbeitslosen__betrag_m>` - - Monthly amount of unemployment assistance -* - {func}`neue_entgeltpunkte <_gettsim.functions.all_functions_for_docs.neue_entgeltpunkte>` - - Updated earning points for pension claim -* - {func}`einkommensteuer__abgeltungssteuer__betrag_y_sn <_gettsim.functions.all_functions_for_docs.einkommensteuer__abgeltungssteuer__betrag_y_sn>` - - Capital income tax on Steuernummer level -* - {func}`solidaritätszuschlag__betrag_y_sn <_gettsim.functions.all_functions_for_docs.solidaritätszuschlag__betrag_y_sn>` - - Solidarity surcharge on Steuernummer level -* - {func}`kindergeld__betrag_m <_gettsim.functions.all_functions_for_docs.kindergeld__betrag_m>` - - Monthly child benefit -* - {func}`einkommensteuer__betrag_y_sn <_gettsim.functions.all_functions_for_docs.einkommensteuer__betrag_y_sn>` - - Income Tax on Steuernummer level -* - {func}`lohnsteuer__betrag_m` <_gettsim.functions.all_functions_for_docs.lohnsteuer__betrag_m>` - - Withholding tax -* - {func}`lohnsteuer__betrag_soli_m <_gettsim.functions.all_functions_for_docs.lohnsteuer__betrag_soli_m>` - - Solidarity surcharge on withholding tax -* - {func}`unterhaltsvorschuss__betrag_m <_gettsim.functions.all_functions_for_docs.unterhaltsvorschuss__betrag_m>` - - Alimony advance payment -* - {func}`arbeitslosengeld_2__betrag_m_bg <_gettsim.functions.all_functions_for_docs.arbeitslosengeld_2__betrag_m_bg>` - - Monthly subsistence payment on household level -* - {func}`kinderzuschlag__betrag_m_bg <_gettsim.functions.all_functions_for_docs.kinderzuschlag__betrag_m_bg>` - - Monthly additional child benefit, household sum -* - {func}`elterngeld__betrag_m <_gettsim.functions.all_functions_for_docs.elterngeld__betrag_m>` - - Monthly parental leave benefit -* - {func}`wohngeld__betrag_m_wthh <_gettsim.functions.all_functions_for_docs.wohngeld__betrag_m_wthh>` - - Monthly housing benefit on household level -* - {func}`grundsicherung__im_alter__betrag_m_eg <_gettsim.functions.all_functions_for_docs.grundsicherung__im_alter__betrag_m_eg>` - - Monthly subsistence payment for retirees on household level -``` diff --git a/docs/how_to_guides/index.md b/docs/how_to_guides/index.md index 48af13c486..84e1b24afb 100644 --- a/docs/how_to_guides/index.md +++ b/docs/how_to_guides/index.md @@ -4,12 +4,3 @@ How-to guides provide detailed explanations on how to accomplish specific tasks with GETTSIM. - -```{toctree} ---- -maxdepth: 1 ---- -different_ways_to_load_policy_functions -visualizing_the_system -calculating_elterngeld -``` diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 1a27ee3ad2..3f4487c28c 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -3,14 +3,3 @@ # Tutorials Tutorials help you to get started with GETTSIM. - -```{toctree} ---- -maxdepth: 1 ---- -basic_usage -advanced_usage -parameters -policy_functions -debugging -``` diff --git a/docs/how_to_guides/calculating_elterngeld.ipynb b/outdated_docs/how-to-guides/calculating_elterngeld.ipynb similarity index 100% rename from docs/how_to_guides/calculating_elterngeld.ipynb rename to outdated_docs/how-to-guides/calculating_elterngeld.ipynb diff --git a/docs/how_to_guides/different_ways_to_load_policy_functions.ipynb b/outdated_docs/how-to-guides/different_ways_to_load_policy_functions.ipynb similarity index 100% rename from docs/how_to_guides/different_ways_to_load_policy_functions.ipynb rename to outdated_docs/how-to-guides/different_ways_to_load_policy_functions.ipynb diff --git a/docs/how_to_guides/visualizing_the_system.ipynb b/outdated_docs/how-to-guides/visualizing_the_system.ipynb similarity index 100% rename from docs/how_to_guides/visualizing_the_system.ipynb rename to outdated_docs/how-to-guides/visualizing_the_system.ipynb diff --git a/docs/tutorials/advanced_usage.ipynb b/outdated_docs/tutorials/advanced_usage.ipynb similarity index 100% rename from docs/tutorials/advanced_usage.ipynb rename to outdated_docs/tutorials/advanced_usage.ipynb diff --git a/docs/tutorials/basic_usage.ipynb b/outdated_docs/tutorials/basic_usage.ipynb similarity index 100% rename from docs/tutorials/basic_usage.ipynb rename to outdated_docs/tutorials/basic_usage.ipynb diff --git a/docs/tutorials/debugging.ipynb b/outdated_docs/tutorials/debugging.ipynb similarity index 100% rename from docs/tutorials/debugging.ipynb rename to outdated_docs/tutorials/debugging.ipynb diff --git a/docs/tutorials/parameters.ipynb b/outdated_docs/tutorials/parameters.ipynb similarity index 100% rename from docs/tutorials/parameters.ipynb rename to outdated_docs/tutorials/parameters.ipynb diff --git a/docs/tutorials/policy_functions.ipynb b/outdated_docs/tutorials/policy_functions.ipynb similarity index 100% rename from docs/tutorials/policy_functions.ipynb rename to outdated_docs/tutorials/policy_functions.ipynb diff --git a/pyproject.toml b/pyproject.toml index 8f1ba5b565..e07e71aafd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -258,6 +258,7 @@ exclude = [] # ========================================================= "src/_gettsim/synthetic.py" = ["F821"] "src/_gettsim_tests/test_synthetic.py" = ["F821", "E501"] +"outdated_docs/**/*.ipynb" = ["T201"] "tests/ttsim/test_docs.py" = ["F821"] [tool.ruff.lint.pydocstyle] diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index 031830b5e7..29a0d71df2 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -308,7 +308,8 @@ def create_constant_across_households_variables(df, n_adults, n_children, policy # Defaults for Wohnfläche, Kaltmiete, Heizkosten are taken from official data bg_daten = _load_parameter_group_from_yaml( datetime.date(policy_year, 1, 1), - RESOURCE_DIR / "synthetic_data" / "bedarfsgemeinschaften", + group="bedarfsgemeinschaften", + yaml_path=RESOURCE_DIR / "synthetic_data", ) # Use data for 2 children if there are more than 2 children in the household. diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 0f2cb5bf0e..3d3f84c849 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -6,7 +6,7 @@ compute_taxes_and_transfers, ) from ttsim.loader import ConflictingTimeDependentObjectsError -from ttsim.piecewise_polynomial import get_piecewise_parameters, piecewise_polynomial +from ttsim.piecewise_polynomial import piecewise_polynomial from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment from ttsim.prepare_data import create_data_tree_from_df from ttsim.rounding import RoundingSpec From 0634bb6f422a9c7b02641637d8951b04293d4645 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Mon, 28 Apr 2025 10:03:24 +0200 Subject: [PATCH 025/109] Credits. --- CHANGES.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 677b279222..ebb8b3f92e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,11 +6,23 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`880` Validate parameter files using json scheme ({ghuser}`hmgaudecker`). +- {gh}`876` Add DataFrame to NestedDataDict conversion ({ghuser}`MImmesberger`). +- {gh}`873` Implement aggregation decorators ({ghuser}`hmgaudecker`, `MImmesberger`). +- {gh}`859` Add RoundingSpec dataclass ({ghuser}`hmgaudecker`, `MImmesberger`). +- {gh}`854` Add PolicyInput class and update hierarchy of TTSIM objects + ({ghuser}`timmens`, `hmgaudecker`, `MImmesberger`). +- {gh}`871` Require dashed iso date everywhere ({ghuser}`hmgaudecker`). +- {gh}`865` Make top-level namespace include potential derived functions + ({ghuser}`MImmesberger`). +- {gh}`860` Use AggType instead of strings ({ghuser}`timmens`). +- {gh}`864` Make `compute_taxes_and_transfers` jax-jittable ({ghuser}`timmens`). +- {gh}`863` Add join_jax ({ghuser}`mj023`). +- {gh}`862` Add all types of Einkünfte, introduce concept of Gesamtbetrag der Einkünfte ({ghuser}`MImmesberger`). - {gh}`861` Make fg_id invariant to ordering of data ({ghuser}`mj023`). +- {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). - {gh}`856` Add METTSIM to test TTSIM part ({ghuser}`hmgaudecker`, `timmens`, `MImmesberger`). -- {gh}`860` Use AggType instead of strings ({ghuser}`timmens`). -- {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). - {gh}`850` Split GETTSIM from TTSIM functions ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`805` Rename taxes and transers using new tree structure ({ghuser}`hmgaudecker`, `MImmesberger`). From 5ee1bac90a6eacae4b346144983ec2c299304fd9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 08:06:23 +0000 Subject: [PATCH 026/109] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- CHANGES.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ebb8b3f92e..b5c55113b4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,7 +18,8 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`860` Use AggType instead of strings ({ghuser}`timmens`). - {gh}`864` Make `compute_taxes_and_transfers` jax-jittable ({ghuser}`timmens`). - {gh}`863` Add join_jax ({ghuser}`mj023`). -- {gh}`862` Add all types of Einkünfte, introduce concept of Gesamtbetrag der Einkünfte ({ghuser}`MImmesberger`). +- {gh}`862` Add all types of Einkünfte, introduce concept of Gesamtbetrag der Einkünfte + ({ghuser}`MImmesberger`). - {gh}`861` Make fg_id invariant to ordering of data ({ghuser}`mj023`). - {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). - {gh}`856` Add METTSIM to test TTSIM part ({ghuser}`hmgaudecker`, `timmens`, From 43858f9f5710d2f3c67a656c3b510e10db09add1 Mon Sep 17 00:00:00 2001 From: Max Jahn <max.jahn45@gmail.com> Date: Mon, 28 Apr 2025 10:34:50 +0200 Subject: [PATCH 027/109] Vectorize `piecewise_polynomial` (#867) ### What problem do you want to solve? Vectorize the `piecewise_polynomial` function. --- pixi.lock | 4 +- src/_gettsim/parameters/arbeitsl_geld.yaml | 7 +- .../arbeitslosen/arbeitslosengeld.py | 62 +++++------- src/_gettsim/wohngeld/einkommen.py | 2 +- src/ttsim/piecewise_polynomial.py | 96 +++++++------------ src/ttsim/policy_environment.py | 9 +- tests/ttsim/test_piecewise_polynomial.py | 50 +++++++++- 7 files changed, 122 insertions(+), 108 deletions(-) diff --git a/pixi.lock b/pixi.lock index bb68fc9bed..4cadaf78e5 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5615,8 +5615,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev118+g913b9708.d20250423 - sha256: 682476d4d04b29447c8e187ee28748e8af218a92760131904d2d1cbc9c242651 + version: 0.7.1.dev112+g506e8e69.d20250426 + sha256: fdbeae7d413c2e25735ddd6c69cc154ed4a981c69ab9726038b344eb7a1f56e7 requires_dist: - dags>=0.3.0 - ipywidgets diff --git a/src/_gettsim/parameters/arbeitsl_geld.yaml b/src/_gettsim/parameters/arbeitsl_geld.yaml index 690da05c6b..e3eda5379a 100644 --- a/src/_gettsim/parameters/arbeitsl_geld.yaml +++ b/src/_gettsim/parameters/arbeitsl_geld.yaml @@ -163,8 +163,8 @@ stundengrenze: reference: Art. 2 G. v. 20.12.2011 BGBl I S. 2854 anspruchsdauer: name: - de: Anspruchsdauer für ALG 1 - en: lenght of ALG 1 eligibility + de: Anspruchsdauer für ALG 1. + en: Period of ALG 1 eligibility. description: de: >- Dauer des Anspruchs auf ALG 1 richtet sich nach Alter und wie viele Monate @@ -179,7 +179,8 @@ anspruchsdauer: 50: 15 55: 18 58: 24 - nach_versicherungspflichtige_monate: + nach_versicherungspflichtigen_monaten: + 0: 0 12: 6 18: 8 20: 10 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index da611b9a76..e8ee020cc7 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -53,62 +53,52 @@ def monate_verbleibender_anspruchsdauer( arbeitsl_geld_params: dict, ) -> int: """Calculate the remaining amount of months a person can receive unemployment - benefit this year. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren - See basic input variable :ref:`monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren <monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren>`. - anwartschaftszeit - See basic input variable :ref:`anwartschaftszeit <anwartschaftszeit>`. - monate_durchgängigen_bezugs_von_arbeitslosengeld - See basic input variable :ref:`monate_durchgängigen_bezugs_von_arbeitslosengeld <monate_durchgängigen_bezugs_von_arbeitslosengeld>`. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params <arbeitsl_geld_params>`. - - Returns - ------- + benefits. """ nach_alter = piecewise_polynomial( alter, - thresholds=[ - *list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"]), - np.inf, - ], + thresholds=np.array( + [ + *list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"]), + np.inf, + ] + ), rates=np.array( [[0] * len(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"])] ), - intercepts_at_lower_thresholds=list( - arbeitsl_geld_params["anspruchsdauer"]["nach_alter"].values() + intercepts_at_lower_thresholds=np.array( + list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"].values()) ), ) nach_versich_pfl = piecewise_polynomial( monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, - thresholds=[ - *list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" - ] - ), - np.inf, - ], + thresholds=np.array( + [ + *list( + arbeitsl_geld_params["anspruchsdauer"][ + "nach_versicherungspflichtigen_monaten" + ] + ), + np.inf, + ] + ), rates=np.array( [ [0] * len( arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" + "nach_versicherungspflichtigen_monaten" ] ) ] ), - intercepts_at_lower_thresholds=list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtige_monate" - ].values() + intercepts_at_lower_thresholds=np.array( + list( + arbeitsl_geld_params["anspruchsdauer"][ + "nach_versicherungspflichtigen_monaten" + ].values() + ) ), ) if anwartschaftszeit: diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 0d9765558d..5d3f97f305 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -309,7 +309,7 @@ def freibetrag_m_bis_2015( """ freibetrag_behinderung_m = piecewise_polynomial( behinderungsgrad, - thresholds=[*list(wohngeld_params["freibetrag_behinderung"]), np.inf], + thresholds=np.array([*list(wohngeld_params["freibetrag_behinderung"]), np.inf]), rates=np.array([[0] * len(wohngeld_params["freibetrag_behinderung"])]), intercepts_at_lower_thresholds=[ yearly_v / 12 diff --git a/src/ttsim/piecewise_polynomial.py b/src/ttsim/piecewise_polynomial.py index a700aacc08..0cc906c20a 100644 --- a/src/ttsim/piecewise_polynomial.py +++ b/src/ttsim/piecewise_polynomial.py @@ -1,80 +1,56 @@ import numpy +from ttsim.config import numpy_or_jax as np + def piecewise_polynomial( - x, thresholds, rates, intercepts_at_lower_thresholds, rates_multiplier=None + x: np.ndarray, + thresholds: np.ndarray, + rates: np.ndarray, + intercepts_at_lower_thresholds: np.ndarray, + rates_multiplier: np.ndarray = 1, ): - """Calculate value of the piecewise function at `x`. + """Calculate value of the piecewise function at `x`. If the first interval begins + at -inf the polynomial of that interval can only have slope of 0. Requesting a + value outside of the provided thresholds will lead to undefined behaviour. Parameters ---------- - x : pd.Series - Series with values which piecewise polynomial is applied to. - thresholds : numpy.array + x : np.ndarray + Array with values at which the piecewise polynomial is to be calculated. + thresholds : np.array A one-dimensional array containing the thresholds for all intervals. - rates : numpy.ndarray + coefficients : np.ndarray A two-dimensional array where columns are interval sections and rows - correspond to the nth polynomial. - intercepts_at_lower_thresholds : numpy.ndarray + correspond to the coefficient of the nth polynomial. + intercepts_at_lower_thresholds : np.ndarray The intercepts at the lower threshold of each interval. - rates_multiplier : pd.Series, float - Multiplier to create individual or scaled rates. If given and - not equal to 1, the function also calculates new intercepts. + rates_multiplier : np.ndarray + Multiplier to create individual or scaled rates. Returns ------- - out : float + out : np.ndarray The value of `x` under the piecewise function. """ - num_intervals = len(thresholds) - 1 - degree_polynomial = rates.shape[0] - - # Check in which interval each individual is. The thresholds are not exclusive on - # the right side. - selected_bin = numpy.searchsorted(thresholds, x, side="right") - 1 - - # Calc last threshold for each individual - threshold = thresholds[selected_bin] - - # Increment for each individual in the corresponding interval. - increment_to_calc = x - threshold - - # If each individual has its own rates or the rates are scaled, we can't use the - # intercept, which was generated in the parameter loading. - if rates_multiplier is not None: - # Initialize Series containing 0 for all individuals. - out = intercepts_at_lower_thresholds[0] - - # Go through all intervals except the first and last. - for i in range(2, num_intervals): - threshold_incr = thresholds[i] - thresholds[i - 1] - for pol in range(1, degree_polynomial + 1): - # We only calculate the intercepts for individuals who are in this or - # higher interval. Hence we have to use the individual rates. - if selected_bin >= i: - out += ( - rates_multiplier * rates[pol - 1, i - 1] * threshold_incr**pol - ) - - # If rates remain the same, everything is a lot easier. - else: - # We assign each individual the pre-calculated intercept. - out = intercepts_at_lower_thresholds[selected_bin] - - # Intialize a multiplyer for 1 if it is not given. - rates_multiplier = 1 if rates_multiplier is None else rates_multiplier - - if selected_bin > 0: - # Now add the evaluation of the increment - for pol in range(1, degree_polynomial + 1): - out += ( - rates[pol - 1][selected_bin] - * rates_multiplier - * (increment_to_calc**pol) - ) - - return out + order = rates.shape[0] + # Get interval of requested value + selected_bin = np.searchsorted(thresholds, x, side="right") - 1 + coefficients = rates[:, selected_bin].T + # Calculate distance from X to lower threshold + increment_to_calc = np.where( + thresholds[selected_bin] == -np.inf, 0, x - thresholds[selected_bin] + ) + # Evaluate polynomial at X + out = ( + intercepts_at_lower_thresholds[selected_bin] + + ( + ((increment_to_calc.reshape(-1, 1)) ** np.arange(1, order + 1, 1)) + * (coefficients) + ).sum(axis=1) + ) * rates_multiplier + return np.squeeze(out) def get_piecewise_parameters(parameter_dict, parameter, func_type): diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index c5edd3bce8..2ef689b8b8 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -7,7 +7,6 @@ import dags.tree as dt import numpy import optree -import pandas as pd import yaml from ttsim.loader import load_objects_tree_for_date @@ -319,7 +318,7 @@ def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): jahr = date.year if jahr >= 2005: out = piecewise_polynomial( - pd.Series(jahr), + jahr, thresholds=params["eink_st_abzuege"]["einführungsfaktor"]["thresholds"], rates=params["eink_st_abzuege"]["einführungsfaktor"]["rates"], intercepts_at_lower_thresholds=params["eink_st_abzuege"][ @@ -328,7 +327,7 @@ def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): ) params["eink_st_abzuege"][ "einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005" - ] = out.loc[0] + ] = out return params @@ -352,7 +351,7 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): jahr = date.year if jahr >= 2005: out = piecewise_polynomial( - pd.Series(jahr), + jahr, thresholds=params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"][ "thresholds" ], @@ -363,7 +362,7 @@ def _parse_vorsorgepauschale_rentenv_anteil(date, params): "vorsorgepauschale_rentenv_anteil" ]["intercepts_at_lower_thresholds"], ) - params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] = out.loc[0] + params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] = out return params diff --git a/tests/ttsim/test_piecewise_polynomial.py b/tests/ttsim/test_piecewise_polynomial.py index 1f062f3467..ecd064fbe1 100644 --- a/tests/ttsim/test_piecewise_polynomial.py +++ b/tests/ttsim/test_piecewise_polynomial.py @@ -3,8 +3,42 @@ """ import numpy +import pytest -from ttsim.piecewise_polynomial import get_piecewise_parameters +from ttsim.config import numpy_or_jax as np +from ttsim.piecewise_polynomial import ( + get_piecewise_parameters, + piecewise_polynomial, +) + + +@pytest.fixture +def eink_st_params(): + params = { + "thresholds": np.array([-np.inf, 9168.0, 14254.0, 55960.0, 265326.0, np.inf]), + "rates": np.array( + [ + [ + 0.00000000e00, + 1.40000000e-01, + 2.39700000e-01, + 4.20000000e-01, + 4.50000000e-01, + ], + [ + 0.00000000e00, + 9.80141565e-06, + 2.16155949e-06, + 0.00000000e00, + 0.00000000e00, + ], + ] + ), + "intercepts_at_lower_thresholds": np.array( + [0.0, 0.0, 965.5771, 14722.3012, 102656.0212] + ), + } + return params def test_get_piecewise_parameters_all_intercepts_supplied(): @@ -43,3 +77,17 @@ def test_get_piecewise_parameters_all_intercepts_supplied(): expected = numpy.array([0.27, 0.5, 0.8, 1]) numpy.testing.assert_almost_equal(actual, expected, decimal=10) + + +def test_piecewise_polynomial(eink_st_params): + x = np.array([-1_000, 1_000, 10_000, 30_000, 100_000, 1_000_000]) + expected = np.array([0.0, 0.0, 246.53, 10551.65, 66438.2, 866518.64]) + + actual = piecewise_polynomial( + x=x, + thresholds=eink_st_params["thresholds"], + rates=eink_st_params["rates"], + intercepts_at_lower_thresholds=eink_st_params["intercepts_at_lower_thresholds"], + rates_multiplier=2, + ) + numpy.testing.assert_allclose(numpy.array(actual), expected, atol=0.01) From 8390bc545fdab5120e82df2f11b941ca9ae4d1b0 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 29 Apr 2025 15:50:25 +0200 Subject: [PATCH 028/109] Infer groupings from objects tree (#888) ### What problem do you want to solve? Infer groupings from the objects tree. This needs to be done by looking for names in the top-level namespace that end with "_id". Filtering for `group_creation_functions` does not work because this would miss `hh_id`. **Changes** - Removed `SUPPORTED_GROUPINGS` global everywhere - Removed explicit `groupings` argument from `compute_taxes_and_transfers` - Added the `grouping_levels` property to the policy environment. - Moved the `_fail_if_group_ids_are_outside_top_level_namespace` check to the policy environment. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/_gettsim/interface.py | 3 +- .../test_full_taxes_and_transfers.py | 4 - src/_gettsim_tests/test_groupings.py | 3 - .../test_grundrente_proxy_rente.py | 3 - src/_gettsim_tests/test_household_links.py | 2 - src/_gettsim_tests/utils.py | 3 +- src/ttsim/compute_taxes_and_transfers.py | 55 ++------- src/ttsim/policy_environment.py | 29 +++++ src/ttsim/shared.py | 104 +--------------- tests/ttsim/mettsim/config.py | 2 +- tests/ttsim/mettsim/demographics.py | 4 +- tests/ttsim/mettsim/inputs.py | 4 +- .../child_tax_credit/child_tax_credit.py | 6 +- tests/ttsim/test_combine_functions.py | 69 ++++++----- .../ttsim/test_compute_taxes_and_transfers.py | 74 +++-------- .../group_by_ids/2025-01-01/group_by_ids.yaml | 2 +- .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 2 +- .../amount_with_children_high_income.yaml | 2 +- .../amount_with_children_low_income.yaml | 2 +- .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 2 +- .../amount_with_children_high_income.yaml | 2 +- .../amount_with_children_low_income.yaml | 2 +- .../2025-01-01/amount_with_many_children.yaml | 2 +- .../2025-01-01/amount_no_children.yaml | 2 +- .../amount_no_children_high_wealth.yaml | 2 +- .../amount_no_children_noble_parents.yaml | 2 +- .../2025-01-01/amount_with_children.yaml | 2 +- ..._children_inputs_need_to_be_converted.yaml | 2 +- .../2025-01-01/amount_with_many_children.yaml | 2 +- tests/ttsim/test_docs.py | 3 +- tests/ttsim/test_jax_jit_kindergeld.py | 1 - tests/ttsim/test_policy_environment.py | 33 +++++ tests/ttsim/test_rounding.py | 3 - tests/ttsim/test_shared.py | 115 +++--------------- tests/ttsim/test_time_conversion.py | 16 +-- tests/ttsim/test_visualizations.py | 4 +- tests/ttsim/utils.py | 3 +- 39 files changed, 180 insertions(+), 395 deletions(-) diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 7c46555778..ecf378cc33 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING -from _gettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS +from _gettsim.config import RESOURCE_DIR from ttsim import ( compute_taxes_and_transfers, create_data_tree_from_df, @@ -82,7 +82,6 @@ def oss( data_tree=data_tree, environment=policy_environment, targets_tree=targets_tree, - supported_groupings=SUPPORTED_GROUPINGS, rounding=True, debug=False, jit=False, diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index 749058523e..e3f2d5934c 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,7 +1,6 @@ import dags.tree as dt import pytest -from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -21,7 +20,6 @@ def test_full_taxes_transfers(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) @@ -33,7 +31,6 @@ def test_data_types(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) flat_types_input_variables = { @@ -71,5 +68,4 @@ def test_allow_none_as_target_tree(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=None, - groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index 5eac434044..e53d6c9a76 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -3,7 +3,6 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -22,7 +21,6 @@ def test_groupings(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) @@ -55,5 +53,4 @@ def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): data_tree=data, environment=environment, targets_tree={"sn_id": None}, - groupings=SUPPORTED_GROUPINGS, ) diff --git a/src/_gettsim_tests/test_grundrente_proxy_rente.py b/src/_gettsim_tests/test_grundrente_proxy_rente.py index d57ad1c42e..af1d63677d 100644 --- a/src/_gettsim_tests/test_grundrente_proxy_rente.py +++ b/src/_gettsim_tests/test_grundrente_proxy_rente.py @@ -4,7 +4,6 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -29,7 +28,6 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): "rente": {"grundrente": {"proxy_rente_vorjahr_m": None}} } }, - groupings=SUPPORTED_GROUPINGS, ) # Calculate pension of last year @@ -41,7 +39,6 @@ def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): targets_tree={ "sozialversicherung": {"rente": {"altersrente": {"bruttorente_m": None}}} }, - groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/_gettsim_tests/test_household_links.py b/src/_gettsim_tests/test_household_links.py index 564d04cede..92d6fafa3c 100644 --- a/src/_gettsim_tests/test_household_links.py +++ b/src/_gettsim_tests/test_household_links.py @@ -2,7 +2,6 @@ import pytest from numpy.testing import assert_array_almost_equal -from _gettsim.config import SUPPORTED_GROUPINGS from _gettsim_tests.utils import ( PolicyTest, cached_set_up_policy_environment, @@ -21,7 +20,6 @@ def test_aggregate_by_p_id(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 2b26a7e5c6..27ca193668 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -7,7 +7,7 @@ import pandas as pd import yaml -from _gettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS +from _gettsim.config import RESOURCE_DIR from _gettsim_tests import TEST_DIR from ttsim import ( PolicyEnvironment, @@ -75,7 +75,6 @@ def execute_test(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index d50833c393..fbb99f4c37 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -2,7 +2,6 @@ import functools import inspect -import re import warnings from typing import TYPE_CHECKING, Any @@ -32,7 +31,6 @@ ) from ttsim.ttsim_objects import ( FKType, - GroupCreationFunction, TTSIMFunction, ) @@ -52,7 +50,6 @@ def compute_taxes_and_transfers( data_tree: NestedDataDict, environment: PolicyEnvironment, targets_tree: NestedTargetDict, - groupings: tuple[str, ...], rounding: bool = True, debug: bool = False, jit: bool = False, @@ -87,15 +84,11 @@ def compute_taxes_and_transfers( _fail_if_targets_tree_not_valid(targets_tree) _fail_if_data_tree_not_valid(data_tree) _fail_if_environment_not_valid(environment) - _fail_if_group_ids_are_outside_top_level_namespace( - environment=environment, - groupings=groupings, - ) + # Transform functions tree to qualified names dict with qualified arguments top_level_namespace = _get_top_level_namespace( environment=environment, time_units=tuple(TIME_UNIT_LABELS.keys()), - groupings=groupings, ) # Flatten nested objects to qualified names targets = dt.qual_names(targets_tree) @@ -109,7 +102,7 @@ def compute_taxes_and_transfers( ttsim_objects=ttsim_objects, targets=targets, data=data, - groupings=groupings, + groupings=environment.grouping_levels, ) functions_overridden, functions_to_be_used = partition_by_reference_dict( @@ -138,8 +131,7 @@ def compute_taxes_and_transfers( _fail_if_group_variables_not_constant_within_groups( data=input_data, - functions=functions, - groupings=groupings, + groupings=environment.grouping_levels, ) _input_data_with_p_id = { "p_id": data["p_id"], @@ -181,29 +173,9 @@ def compute_taxes_and_transfers( return result_tree -def _fail_if_group_ids_are_outside_top_level_namespace( - environment: PolicyEnvironment, - groupings: tuple[str, ...], -) -> None: - """Fail if group ids are outside the top level namespace.""" - group_id_pattern = re.compile(f"(?P<group>{'|'.join(groupings)})_id$") - group_ids_outside_top_level_namespace = { - tree_path - for tree_path in dt.flatten_to_tree_paths(environment.raw_objects_tree) - if len(tree_path) > 1 and group_id_pattern.match(tree_path[-1]) - } - if group_ids_outside_top_level_namespace: - raise ValueError( - "Group identifiers must live in the top-level namespace. Got:\n\n" - f"{group_ids_outside_top_level_namespace}\n\n" - "To fix this error, move the group identifiers to the top-level namespace." - ) - - def _get_top_level_namespace( environment: PolicyEnvironment, time_units: tuple[str, ...], - groupings: tuple[str, ...], ) -> set[str]: """Get the top level namespace. @@ -218,9 +190,8 @@ def _get_top_level_namespace( The top level namespace. """ direct_top_level_names = set(environment.raw_objects_tree.keys()) - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - groupings=groupings, + groupings=environment.grouping_levels, time_units=time_units, ) @@ -239,11 +210,11 @@ def _get_top_level_namespace( all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - gp = group_pattern(groupings) + gp = group_pattern(environment.grouping_levels) potential_base_names = {n for n in all_top_level_names if not gp.match(n)} for name in potential_base_names: - for g in groupings: + for g in environment.grouping_levels: all_top_level_names.add(f"{name}_{g}") return all_top_level_names @@ -405,7 +376,6 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: def _fail_if_group_variables_not_constant_within_groups( data: QualNameDataDict, - functions: QualNameTTSIMFunctionDict, groupings: tuple[str, ...], ) -> None: """ @@ -418,19 +388,14 @@ def _fail_if_group_variables_not_constant_within_groups( ---------- data Dictionary of data. - functions - Dictionary of functions. + groupings + The groupings available in the policy environment. """ - group_by_functions = { - k: v for k, v in functions.items() if isinstance(v, GroupCreationFunction) - } - faulty_data_columns = [] for name, data_column in data.items(): group_by_id = get_name_of_group_by_id( target_name=name, - group_by_functions=group_by_functions, groupings=groupings, ) if group_by_id in data: @@ -634,9 +599,7 @@ def _fail_if_root_nodes_are_missing( raise ValueError(f"The following data columns are missing.\n{formatted}") -def _func_depends_on_parameters_only( - func: TTSIMFunction, -) -> bool: +def _func_depends_on_parameters_only(func: TTSIMFunction) -> bool: """Check if a function depends on parameters only.""" return ( len( diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index 2ef689b8b8..539b599a95 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -65,6 +65,7 @@ def __init__( lambda leaf: _convert_to_policy_function_if_not_ttsim_object(leaf), raw_objects_tree, ) + _fail_if_group_ids_are_outside_top_level_namespace(raw_objects_tree) # Read in parameters and aggregation specs self._params = params if params is not None else {} @@ -82,6 +83,15 @@ def params(self) -> dict[str, Any]: """The parameters of the policy environment.""" return self._params + @property + def grouping_levels(self) -> tuple[str, ...]: + """The grouping levels of the policy environment.""" + return tuple( + name.rsplit("_", 1)[0] + for name in self._raw_objects_tree + if name.endswith("_id") and name != "p_id" + ) + def upsert_objects( self, tree_to_upsert: NestedTTSIMObjectDict ) -> PolicyEnvironment: @@ -114,6 +124,8 @@ def upsert_objects( to_upsert=tree_to_upsert_with_correct_types, ) + _fail_if_group_ids_are_outside_top_level_namespace(new_tree) + result = object.__new__(PolicyEnvironment) result._raw_objects_tree = new_tree # noqa: SLF001 result._params = self._params # noqa: SLF001 @@ -225,6 +237,23 @@ def _convert_to_policy_function_if_not_ttsim_object( return converted_object +def _fail_if_group_ids_are_outside_top_level_namespace( + raw_objects_tree: NestedTTSIMObjectDict, +) -> None: + """Fail if group ids are outside the top level namespace.""" + group_ids_outside_top_level_namespace = { + tree_path + for tree_path in dt.flatten_to_tree_paths(raw_objects_tree) + if len(tree_path) > 1 and tree_path[-1].endswith("_id") + } + if group_ids_outside_top_level_namespace: + raise ValueError( + "Group identifiers must live in the top-level namespace. Got:\n\n" + f"{group_ids_outside_top_level_namespace}\n\n" + "To fix this error, move the group identifiers to the top-level namespace." + ) + + def _parse_piecewise_parameters(tax_data): """Check if parameters are stored in implicit structures and align to general structure. diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index 6bcc784944..63bc03d32e 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -18,7 +18,6 @@ GenericCallable, NestedDataDict, NestedTTSIMObjectDict, - QualNameTTSIMFunctionDict, ) @@ -504,118 +503,25 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: def get_name_of_group_by_id( target_name: str, - group_by_functions: QualNameTTSIMFunctionDict, groupings: tuple[str, ...], ) -> str: """Get the group-by-identifier name for some target. The group-by-identifier is the name of the group identifier that is embedded in the - name of the target. E.g., "einkommen_hh" has "hh_id" as its group-by-identifier. In - this sense, the group-by-identifiers live in a global namespace. We generally expect - them to be unique. - - There is an exception, though: It is enough for them to be unique within the - uppermost namespace. In that case, however, they cannot be used outside of that - namespace. + name of the target. E.g., "income_kin" has "kin_id" as its group-by-identifier. Parameters ---------- target_name The name of the target. - group_by_functions - The group-by functions. + groupings + The supported groupings. Returns ------- The group-by-identifier, or an empty tuple if it is an individual-level variable. """ for g in groupings: - if target_name.endswith(f"_{g}") and g == "hh": - # Hardcode because hh_id is not part of the functions tree - return "hh_id" - elif target_name.endswith(f"_{g}"): - return _select_group_by_id_from_candidates( - candidate_names=[ - p for p in group_by_functions if p.endswith(f"{g}_id") - ], - target_name=target_name, - ) + if target_name.endswith(f"_{g}"): + return f"{g}_id" return None - - -def _select_group_by_id_from_candidates( - candidate_names: list[str], - target_name: str, -) -> str: - """Select the group-by-identifier name from the candidates. - - If there are multiple candidates, the function takes the one that shares the - first part of the path (uppermost level of namespace) with the aggregation target. - - Raises - ------ - ValueError - Raised if the group-by-identifier is ambiguous. - - Parameters - ---------- - candidates - The candidates. - target_path - The target path. - nice_target_name - The nice target name. - - Returns - ------- - The group-by-identifier. - """ - if len(candidate_names) > 1: - candidate_names_in_matching_namespace = [ - p - for p in candidate_names - if dt.tree_path_from_qual_name(p)[0] - == dt.tree_path_from_qual_name(target_name)[0] - ] - if len(candidate_names_in_matching_namespace) == 1: - return candidate_names_in_matching_namespace[0] - else: - _fail_because_of_ambiguous_group_by_identifier( - candidate_names_in_matching_namespace=candidate_names_in_matching_namespace, - all_candidate_names=candidate_names, - target_name=target_name, - ) - else: - return candidate_names[0] - - -def _fail_because_of_ambiguous_group_by_identifier( - candidate_names_in_matching_namespace: list[str], - all_candidate_names: list[str], - target_name: str, -): - if len(candidate_names_in_matching_namespace) == 0: - paths = "\n ".join( - [str(dt.tree_path_from_qual_name(p)) for p in all_candidate_names] - ) - else: - paths = "\n ".join( - [ - str(dt.tree_path_from_qual_name(p)) - for p in candidate_names_in_matching_namespace - ] - ) - - target_path = dt.tree_path_from_qual_name(target_name) - msg = format_errors_and_warnings( - f""" - Group-by-identifier for target:\n\n {target_path}\n - is ambiguous. Group-by-identifiers must be - - 1. unique at the uppermost level of the functions tree. - 2. inside the uppermost namespace if there are namespaced identifiers - - Found candidates:\n\n {paths} - """ - ) - raise ValueError(msg) diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py index 24071e62c1..75e967cf1e 100644 --- a/tests/ttsim/mettsim/config.py +++ b/tests/ttsim/mettsim/config.py @@ -8,4 +8,4 @@ RESOURCE_DIR = Path(__file__).parent -SUPPORTED_GROUPINGS = ("fam", "sp", "hh") +SUPPORTED_GROUPINGS = ("fam", "sp", "kin") diff --git a/tests/ttsim/mettsim/demographics.py b/tests/ttsim/mettsim/demographics.py index 82ec90b7c6..70f9b79307 100644 --- a/tests/ttsim/mettsim/demographics.py +++ b/tests/ttsim/mettsim/demographics.py @@ -2,7 +2,7 @@ @agg_by_group_function(agg_type=AggType.COUNT) -def number_of_individuals_hh( - hh_id: int, # noqa: ARG001 +def number_of_individuals_kin( + kin_id: int, # noqa: ARG001 ) -> int: return 1 diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py index 722ce8a3e9..56b845470a 100644 --- a/tests/ttsim/mettsim/inputs.py +++ b/tests/ttsim/mettsim/inputs.py @@ -7,8 +7,8 @@ def p_id() -> int: @policy_input() -def hh_id() -> int: - """Household id (will delete once fam_id is enough).""" +def kin_id() -> int: + """Kinstead ID.""" @policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 35caafc466..5771766178 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -41,15 +41,15 @@ def child_eligible( @policy_function(vectorization_strategy="not_required") def in_same_household_as_recipient( p_id: int, - hh_id: int, + kin_id: int, p_id_recipient: int, ) -> bool: return ( join( foreign_key=p_id_recipient, primary_key=p_id, - target=hh_id, + target=kin_id, value_if_foreign_key_is_missing=-1, ) - == hh_id + == kin_id ) diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index 36be8dbdae..e58b4d7727 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -40,17 +40,17 @@ def p_id() -> int: @policy_input() -def hh_id() -> int: +def kin_id() -> int: pass -@agg_by_group_function(leaf_name="y_hh", agg_type=AggType.SUM) -def y_hh(hh_id: int, x: int) -> int: +@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) +def y_kin(kin_id: int, x: int) -> int: pass -@agg_by_group_function(leaf_name="y_hh", agg_type=AggType.SUM) -def y_hh_namespaced_input(hh_id: int, inputs__x: int) -> int: +@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) +def y_kin_namespaced_input(kin_id: int, inputs__x: int) -> int: pass @@ -70,16 +70,16 @@ def some_x(x): return x -def return_x_hh(x_hh: int) -> int: - return x_hh +def return_x_kin(x_kin: int) -> int: + return x_kin -def return_y_hh(y_hh: int) -> int: - return y_hh +def return_y_kin(y_kin: int) -> int: + return y_kin -def return_n1__x_hh(n1__x_hh: int) -> int: - return n1__x_hh +def return_n1__x_kin(n1__x_kin: int) -> int: + return n1__x_kin @pytest.mark.parametrize( @@ -92,84 +92,84 @@ def return_n1__x_hh(n1__x_hh: int) -> int: ( # Aggregations derived from simple function arguments { - "hh_id": hh_id, + "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(return_n1__x_hh), + "f": policy_function(leaf_name="f")(return_n1__x_kin), "x": x, }, }, {"n1": {"f": None}}, { "n1": {"x": pd.Series([1, 1, 1])}, - "hh_id": pd.Series([0, 0, 0]), + "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, ), ( # Aggregations derived from namespaced function arguments { - "hh_id": hh_id, + "kin_id": kin_id, "p_id": p_id, - "n1": {"f": policy_function(leaf_name="f")(return_x_hh), "x": x}, + "n1": {"f": policy_function(leaf_name="f")(return_x_kin), "x": x}, }, {"n1": {"f": None}}, { "n1": {"x": pd.Series([1, 1, 1])}, - "hh_id": pd.Series([0, 0, 0]), + "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, ), ( # Aggregations derived from target { - "hh_id": hh_id, + "kin_id": kin_id, "p_id": p_id, "n1": { "f": policy_function(leaf_name="f")(some_x), "x": x, }, }, - {"n1": {"f_hh": None}}, + {"n1": {"f_kin": None}}, { "n1": {"x": pd.Series([1, 1, 1])}, - "hh_id": pd.Series([0, 0, 0]), + "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, ), ( # Explicit aggregation via objects tree with leaf name input { - "hh_id": hh_id, + "kin_id": kin_id, "p_id": p_id, "n1": { "f": policy_function(leaf_name="f")(some_x), "x": x, }, - "y_hh": y_hh, + "y_kin": y_kin, }, {"n1": {"f": None}}, { "n1": {"x": pd.Series([1, 1, 1])}, - "hh_id": pd.Series([0, 0, 0]), + "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, ), ( # Explicit aggregation via objects tree with namespaced input { - "hh_id": hh_id, + "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(return_y_hh), - "y_hh": y_hh_namespaced_input, + "f": policy_function(leaf_name="f")(return_y_kin), + "y_kin": y_kin_namespaced_input, }, "inputs": {"x": x}, }, {"n1": {"f": None}}, { "inputs": {"x": pd.Series([1, 1, 1])}, - "hh_id": pd.Series([0, 0, 0]), + "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), }, ), @@ -185,7 +185,6 @@ def test_create_agg_by_group_functions( environment=environment, data_tree=data_tree, targets_tree=targets_tree, - groupings=("hh",), ) @@ -213,22 +212,22 @@ def test_fail_if_targets_are_not_among_functions( ), [ ( - {"foo": policy_function(leaf_name="foo")(return_x_hh)}, + {"foo": policy_function(leaf_name="foo")(return_x_kin)}, {}, {"x": pd.Series([1])}, - ("x_hh"), + ("x_kin"), ), ( - {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_hh)}, + {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_kin)}, {}, {"n1__x": pd.Series([1])}, - ("n1__x_hh"), + ("n1__x_kin"), ), ( {}, - {"x_hh": None}, + {"x_kin": None}, {"x": pd.Series([1])}, - ("x_hh"), + ("x_kin"), ), ], ) @@ -247,6 +246,6 @@ def test_derived_aggregation_functions_are_in_correct_namespace( ttsim_functions_with_time_conversions=functions, data=data, targets=targets, - groupings=("hh",), + groupings=("kin",), ) assert expected in result diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 7092900cdd..6dcefa9cad 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -6,7 +6,7 @@ import numpy import pandas as pd import pytest -from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS +from mettsim.config import RESOURCE_DIR from ttsim import ( AggType, @@ -15,7 +15,6 @@ agg_by_group_function, agg_by_p_id_function, compute_taxes_and_transfers, - group_creation_function, merge_trees, policy_function, policy_input, @@ -23,7 +22,6 @@ ) from ttsim.compute_taxes_and_transfers import ( _fail_if_foreign_keys_are_invalid_in_data, - _fail_if_group_ids_are_outside_top_level_namespace, _fail_if_group_variables_not_constant_within_groups, _fail_if_p_id_is_non_unique, _get_top_level_namespace, @@ -113,7 +111,6 @@ def test_output_as_tree(minimal_input_data): data_tree=minimal_input_data, environment=environment, targets_tree={"module": {"test_func": None}}, - groupings=("fam",), ) assert isinstance(out, dict) @@ -136,7 +133,6 @@ def test_warn_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"some_target": None}, - groupings=("fam",), ) @@ -153,7 +149,6 @@ def test_dont_warn_if_functions_and_columns_dont_overlap(): }, environment=environment, targets_tree={"some_func": None}, - groupings=("fam",), ) @@ -176,7 +171,6 @@ def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): }, environment=environment, targets_tree={"unique": None}, - groupings=("fam",), ) assert len(warning_list) == 0 @@ -245,34 +239,15 @@ def test_fail_if_foreign_key_points_to_same_row_if_allowed(mettsim_environment): ) -@pytest.mark.parametrize( - "data, functions", - [ - # Remove this one once we got rid of the hh_id hack - ( - { - "foo_hh": pd.Series([1, 2, 2], name="foo_hh"), - "hh_id": pd.Series([1, 1, 2], name="hh_id"), - }, - {}, - ), - ( - { - "foo_fam": pd.Series([1, 2, 2], name="foo_fam"), - "fam_id": pd.Series([1, 1, 2], name="fam_id"), - }, - { - "fam_id": group_creation_function()(lambda x: x), - }, - ), - ], -) -def test_fail_if_group_variables_not_constant_within_groups(data, functions): +def test_fail_if_group_variables_not_constant_within_groups(): + data = { + "foo_kin": pd.Series([1, 2, 2], name="foo_kin"), + "kin_id": pd.Series([1, 1, 2], name="kin_id"), + } with pytest.raises(ValueError): _fail_if_group_variables_not_constant_within_groups( data=data, - functions=functions, - groupings=SUPPORTED_GROUPINGS, + groupings=("kin",), ) @@ -298,7 +273,6 @@ def c(b): data_tree=minimal_input_data, environment=environment, targets_tree={"c": None}, - groupings=("fam",), ) @@ -316,7 +290,6 @@ def b(a): data_tree=minimal_input_data, environment=environment, targets_tree={"b": None}, - groupings=("fam",), ) @@ -333,7 +306,6 @@ def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions data_tree=minimal_input_data, environment=environment, targets_tree={"unknown_target": None}, - groupings=("fam",), ) @@ -347,7 +319,6 @@ def test_fail_if_missing_p_id(): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, - groupings=("fam",), ) @@ -363,7 +334,6 @@ def test_fail_if_non_unique_p_id(minimal_input_data): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, - groupings=("fam",), ) @@ -407,7 +377,6 @@ def test_user_provided_aggregate_by_group_specs(): data_tree=data, environment=PolicyEnvironment(raw_objects_tree=inputs), targets_tree={"module_name": {"betrag_m_fam": None}}, - groupings=("fam",), ) numpy.testing.assert_array_almost_equal( @@ -449,7 +418,6 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: data_tree=data, environment=environment, targets_tree={"module_name": {"betrag_m_double_fam": None}}, - groupings=("fam",), debug=True, ) @@ -492,7 +460,6 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: data_tree=data, environment=environment, targets_tree={"module_name": {"betrag_double_q_fam": None}}, - groupings=("fam",), debug=True, ) @@ -567,7 +534,6 @@ def source(p_id: int) -> int: # noqa: ARG001 minimal_input_data_shared_fam, environment, targets_tree=target_tree, - groupings=("fam",), )["module"][next(iter(target_tree["module"].keys()))] numpy.testing.assert_array_almost_equal(out, expected) @@ -607,44 +573,34 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): ( "environment", "time_units", - "groupings", "expected", ), [ ( PolicyEnvironment( raw_objects_tree={ - "foo_m": policy_function(leaf_name="foo_m")(lambda x: x) + "foo_m": policy_function(leaf_name="foo_m")(lambda x: x), + "fam_id": fam_id, } ), ["m", "y"], - ("fam",), {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, ), ( PolicyEnvironment( - raw_objects_tree={"foo": policy_function(leaf_name="foo")(lambda x: x)} + raw_objects_tree={ + "foo": policy_function(leaf_name="foo")(lambda x: x), + "fam_id": fam_id, + } ), ["m", "y"], - ("fam",), {"foo", "foo_fam"}, ), ], ) -def test_get_top_level_namespace(environment, time_units, groupings, expected): +def test_get_top_level_namespace(environment, time_units, expected): result = _get_top_level_namespace( environment=environment, time_units=time_units, - groupings=groupings, ) - assert result == expected - - -def test_fail_if_group_ids_are_outside_top_level_namespace(): - with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" - ): - _fail_if_group_ids_are_outside_top_level_namespace( - environment=PolicyEnvironment(raw_objects_tree={"n1": {"fam_id": fam_id}}), - groupings=("fam",), - ) + assert all(name in result for name in expected) diff --git a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml index 794beabb0c..3b146232b6 100644 --- a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml +++ b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml index 28bc499e4c..7f5caf98d9 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml index 1453ebf203..127f9a18d5 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml index 9643c19cb6..2804adecad 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml index 960cbef1bf..2930f71a80 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml index a6e0a5b097..d9a40ae46c 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml index 5812c7b6d9..5e4f933935 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml index 036c556bed..9e6e4c5aaa 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml index ecdb07ff42..9c681c3516 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml index 4c5acb562d..a5ea9b0ff6 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml @@ -11,7 +11,7 @@ inputs: - 2 - 3 - 4 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml index 30ac2a46ef..a9f271cf53 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml index 721c2807ee..ee5aaba26d 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml index 06d7589dfd..68ac4cf64c 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml @@ -8,7 +8,7 @@ inputs: p_id: - 0 - 1 - hh_id: + kin_id: - 0 - 0 p_id_parent_1: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml index 6a7cfc3405..fde53efcf2 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml index 649ed39807..dd6a74ea07 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml @@ -9,7 +9,7 @@ inputs: - 0 - 1 - 2 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml index e5aaa69a55..17ece9b9a3 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml @@ -11,7 +11,7 @@ inputs: - 2 - 3 - 4 - hh_id: + kin_id: - 0 - 0 - 0 diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 325d0d198d..113e0e2f11 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -4,6 +4,7 @@ import inspect import pytest +from mettsim.config import SUPPORTED_GROUPINGS from _gettsim.config import ( RESOURCE_DIR, @@ -12,8 +13,6 @@ from ttsim.loader import load_objects_tree_for_date from ttsim.shared import remove_group_suffix -SUPPORTED_GROUPINGS = ("hh", "sp", "fam") - def _nice_output_list_of_strings(list_of_strings): my_str = "\n".join(sorted(list_of_strings)) diff --git a/tests/ttsim/test_jax_jit_kindergeld.py b/tests/ttsim/test_jax_jit_kindergeld.py index ff5b2001d7..49b97ef7ef 100644 --- a/tests/ttsim/test_jax_jit_kindergeld.py +++ b/tests/ttsim/test_jax_jit_kindergeld.py @@ -63,7 +63,6 @@ def test_compute_taxes_and_transfers_kindergeld(kindergeld_policy_test): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=(), jit=True, ) diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index 230d158bdb..84b35f94cb 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -42,6 +42,11 @@ def return_three(): return 3 +@group_creation_function() +def fam_id() -> int: + pass + + class TestPolicyEnvironment: def test_func_exists_in_tree(self): function = policy_function(leaf_name="foo")(return_one) @@ -177,3 +182,31 @@ def test_dont_destroy_group_by_functions(): } environment = PolicyEnvironment(functions_tree) assert isinstance(environment.raw_objects_tree["foo"], GroupCreationFunction) + + +def test_creating_environment_fails_when_group_ids_are_outside_top_level_namespace(): + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + PolicyEnvironment({"n1": {"fam_id": fam_id}}) + + +def test_upserting_group_ids_outside_top_level_namespace_fails(): + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + PolicyEnvironment({}).upsert_objects({"n1": {"fam_id": fam_id}}) + + +def test_input_is_recognized_as_potential_group_id(): + environment = set_up_policy_environment( + resource_dir=RESOURCE_DIR, date="2020-01-01" + ) + assert "kin" in environment.grouping_levels + + +def test_p_id_not_recognized_as_potential_group_id(): + environment = set_up_policy_environment( + resource_dir=RESOURCE_DIR, date="2020-01-01" + ) + assert "p" not in environment.grouping_levels diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index acd8788869..20fd8c2025 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -115,7 +115,6 @@ def test_func(x): data_tree=data, environment=environment, targets_tree={"namespace": {"test_func": None}}, - groupings=(), ) assert_series_equal( pd.Series(calc_result["namespace"]["test_func"]), @@ -149,7 +148,6 @@ def test_func_m(x): data_tree=data, environment=environment, targets_tree={"test_func_y": None}, - groupings=(), ) assert_series_equal( pd.Series(calc_result["test_func_y"]), @@ -186,7 +184,6 @@ def test_func(x): data_tree=data, environment=environment, targets_tree={"test_func": None}, - groupings=(), rounding=False, ) assert_series_equal( diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/test_shared.py index fd10f31a1d..0909dee056 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -191,105 +191,24 @@ def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, exp @pytest.mark.parametrize( - "target_name, group_by_functions, expected", + "target_name, expected", [ - (("namespace1__foo"), {}, None), - (("namespace1__foo_hh"), {}, "hh_id"), - ( - ("namespace1__foo_hh"), - {"namespace1__hh_id": None}, - "hh_id", - ), - ( - ("namespace1__foo_bg"), - {"arbeitslosengeld_2__bg_id": None}, - "arbeitslosengeld_2__bg_id", - ), - ( - ("namespace1__foo_eg"), - {"grundsicherung__eg_id": None}, - "grundsicherung__eg_id", - ), - ( - ("namespace1__foo_eg"), - {"arbeitslosengeld_2__eg_id": None}, - "arbeitslosengeld_2__eg_id", - ), - ( - ("arbeitslosengeld_2__einkommen_eg"), - { - "arbeitslosengeld_2__eg_id": None, - "grundsicherung__eg_id": None, - }, - "arbeitslosengeld_2__eg_id", - ), + (("namespace1__foo"), None), + (("foo_kin"), "kin_id"), + (("namespace1__foo_kin"), "kin_id"), + (("namespace1__foo_fam"), "fam_id"), ], ) -def test_get_name_of_group_by_id(target_name, group_by_functions, expected): +def test_get_name_of_group_by_id(target_name, expected): assert ( get_name_of_group_by_id( target_name=target_name, - group_by_functions=group_by_functions, - groupings=("hh", "bg", "eg"), + groupings=("kin", "fam"), ) == expected ) -@pytest.mark.parametrize( - "target_name, group_by_functions, expected_error_match", - [ - ( - ("outermost__foo_bg"), - { - "outermost__bg_id": None, - "outermost__nested__bg_id": None, - }, - ( - r"Group-by-identifier for target:[\s\S]+" - r"\('outermost', 'foo_bg'\)[\s\S]+is ambiguous[\s\S]+" - r"Found candidates[\s\S]+" - r"\('outermost', 'bg_id'\)[\s\S]+" - r"\('outermost', 'nested', 'bg_id'\)" - ), - ), - ( - ("outermost__foo_bg"), - { - "outermost__inner1__bg_id": None, - "outermost__inner2__bg_id": None, - }, - r"Group-by-identifier for target:[\s\S]+" - r"\('outermost', 'foo_bg'\)[\s\S]+is ambiguous[\s\S]+" - r"Found candidates[\s\S]+" - r"\('outermost', 'inner1', 'bg_id'\)[\s\S]+" - r"\('outermost', 'inner2', 'bg_id'\)", - ), - ( - ("new_transfer__einkommen_eg"), - { - "arbeitslosengeld_2__eg_id": None, - "grundsicherung__eg_id": None, - }, - r"Group-by-identifier for target:[\s\S]+" - r"\('new_transfer', 'einkommen_eg'\)[\s\S]+is ambiguous[\s\S]+" - r"Found candidates[\s\S]+" - r"\('arbeitslosengeld_2', 'eg_id'\)[\s\S]+" - r"\('grundsicherung', 'eg_id'\)", - ), - ], -) -def test_get_name_of_group_by_id_fails( - target_name, group_by_functions, expected_error_match -): - with pytest.raises(ValueError, match=expected_error_match): - get_name_of_group_by_id( - target_name=target_name, - group_by_functions=group_by_functions, - groupings=("hh", "bg", "eg"), - ) - - @pytest.mark.parametrize( ( "func_name", @@ -300,13 +219,13 @@ def test_get_name_of_group_by_id_fails( "expected_grouping", ), [ - ("foo", ("m", "y"), ["hh"], "foo", None, None), - ("foo_m_hh", ("m", "y"), ["hh"], "foo", "m", "hh"), - ("foo_y_hh", ("m", "y"), ["hh"], "foo", "y", "hh"), - ("foo_m", ("m", "y"), ["hh"], "foo", "m", None), - ("foo_y", ("m", "y"), ["hh"], "foo", "y", None), - ("foo_hh", ("m", "y"), ["hh"], "foo", None, "hh"), - ("foo_hh_bar", ("m", "y"), ["hh"], "foo_hh_bar", None, None), + ("foo", ("m", "y"), ["kin"], "foo", None, None), + ("foo_m_kin", ("m", "y"), ["kin"], "foo", "m", "kin"), + ("foo_y_kin", ("m", "y"), ["kin"], "foo", "y", "kin"), + ("foo_m", ("m", "y"), ["kin"], "foo", "m", None), + ("foo_y", ("m", "y"), ["kin"], "foo", "y", None), + ("foo_kin", ("m", "y"), ["kin"], "foo", None, "kin"), + ("foo_kin_bar", ("m", "y"), ["kin"], "foo_kin_bar", None, None), ], ) def test_get_re_pattern_for_time_units_and_groupings( @@ -335,9 +254,9 @@ def test_get_re_pattern_for_time_units_and_groupings( "expected_match", ), [ - ("foo", ["m", "y"], ["hh"], "foo_m_hh"), - ("foo", ["m", "y"], ["hh", "x"], "foo_m"), - ("foo", ["m", "y"], ["hh", "x"], "foo_hh"), + ("foo", ["m", "y"], ["kin"], "foo_m_kin"), + ("foo", ["m", "y"], ["kin", "x"], "foo_m"), + ("foo", ["m", "y"], ["kin", "x"], "foo_kin"), ], ) def test_get_re_pattern_for_some_base_name( diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_time_conversion.py index 3abb724862..a5937be480 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -258,19 +258,19 @@ class TestCreateFunctionsForTimeUnits: ("name", "expected"), [ ("test_y", ["test_m", "test_q", "test_w", "test_d"]), - ("test_y_hh", ["test_m_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_y_kin", ["test_m_kin", "test_q_kin", "test_w_kin", "test_d_kin"]), ("test_y_sn", ["test_m_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), ("test_q", ["test_y", "test_m", "test_w", "test_d"]), - ("test_q_hh", ["test_y_hh", "test_m_hh", "test_w_hh", "test_d_hh"]), + ("test_q_kin", ["test_y_kin", "test_m_kin", "test_w_kin", "test_d_kin"]), ("test_q_sn", ["test_y_sn", "test_m_sn", "test_w_sn", "test_d_sn"]), ("test_m", ["test_y", "test_q", "test_w", "test_d"]), - ("test_m_hh", ["test_y_hh", "test_q_hh", "test_w_hh", "test_d_hh"]), + ("test_m_kin", ["test_y_kin", "test_q_kin", "test_w_kin", "test_d_kin"]), ("test_m_sn", ["test_y_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), ("test_w", ["test_y", "test_m", "test_q", "test_d"]), - ("test_w_hh", ["test_y_hh", "test_m_hh", "test_q_hh", "test_d_hh"]), + ("test_w_kin", ["test_y_kin", "test_m_kin", "test_q_kin", "test_d_kin"]), ("test_w_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_d_sn"]), ("test_d", ["test_y", "test_m", "test_q", "test_w"]), - ("test_d_hh", ["test_y_hh", "test_m_hh", "test_q_hh", "test_w_hh"]), + ("test_d_kin", ["test_y_kin", "test_m_kin", "test_q_kin", "test_w_kin"]), ("test_d_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_w_sn"]), ], ) @@ -280,7 +280,7 @@ def test_should_create_functions_for_other_time_units_for_functions( time_conversion_functions = create_time_conversion_functions( ttsim_objects={name: policy_function(leaf_name=name)(return_one)}, data={}, - groupings=("sn", "hh"), + groupings=("sn", "kin"), ) for expected_name in expected: @@ -290,7 +290,7 @@ def test_should_not_create_functions_automatically_that_exist_already(self) -> N time_conversion_functions = create_time_conversion_functions( ttsim_objects={"test1_d": policy_function(leaf_name="test1_d")(return_one)}, data={"test2_y": None}, - groupings=("sn", "hh"), + groupings=("sn", "kin"), ) assert "test1_d" not in time_conversion_functions @@ -302,7 +302,7 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri time_conversion_functions = create_time_conversion_functions( ttsim_objects={"test_d": policy_function(leaf_name="test_d")(return_one)}, data={"test_y": None}, - groupings=("sn", "hh"), + groupings=("sn", "kin"), ) assert "test_d" in time_conversion_functions diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_visualizations.py index 63c5fba914..942b9b0225 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_visualizations.py @@ -120,7 +120,7 @@ def test_plot_dag(): """Make sure that minimal example doesn't produce an error.""" plot_dag( environment=environment, - targets=["erwachsene_alle_rentenbezieher_hh"], + targets=["erwachsene_alle_rentenbezieher_kin"], ) @@ -131,7 +131,7 @@ def test_should_fail_if_target_is_missing(): ): plot_dag( environment=PolicyEnvironment({}), - targets=["erwachsene_alle_rentenbezieher_hh"], + targets=["erwachsene_alle_rentenbezieher_kin"], ) diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index c6d3c8d9db..b7175fa00b 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -6,7 +6,7 @@ import dags.tree as dt import pandas as pd import yaml -from mettsim.config import RESOURCE_DIR, SUPPORTED_GROUPINGS +from mettsim.config import RESOURCE_DIR from ttsim import compute_taxes_and_transfers, merge_trees, set_up_policy_environment from ttsim.shared import to_datetime @@ -58,7 +58,6 @@ def execute_test(test: PolicyTest): data_tree=test.input_tree, environment=environment, targets_tree=test.target_structure, - groupings=SUPPORTED_GROUPINGS, ) flat_result = dt.flatten_to_qual_names(result) From da62dfd4a619eecf98a15d44560938a8e59e61d0 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 29 Apr 2025 16:01:03 +0200 Subject: [PATCH 029/109] Typing (#887) - [x] Turn on mypy, ignore generic types for now (because of params) - [x] Fix simple failures (@hmgaudecker) - [x] Fix more complex cases (old man needs help from @timmens) --------- Co-authored-by: Tim Mensinger <mensingertim@gmail.com> --- .pre-commit-config.yaml | 3 + CHANGES.md | 6 +- pixi.lock | 6148 ++++++++++------- pyproject.toml | 53 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 4 +- src/_gettsim/ids.py | 24 +- src/_gettsim/wohngeld/voraussetzungen.py | 16 +- src/_gettsim_tests/utils.py | 2 +- src/gettsim/__init__.py | 3 +- src/ttsim/__init__.py | 4 +- src/ttsim/aggregation.py | 43 +- src/ttsim/aggregation_jax.py | 108 +- src/ttsim/aggregation_numpy.py | 66 +- src/ttsim/automatically_added_functions.py | 2 +- src/ttsim/compute_taxes_and_transfers.py | 2 +- src/ttsim/loader.py | 195 +- src/ttsim/piecewise_polynomial.py | 84 +- src/ttsim/{visualization.py => plot_dag.py} | 0 src/ttsim/policy_environment.py | 186 +- src/ttsim/prepare_data.py | 2 +- src/ttsim/rounding.py | 17 +- src/ttsim/shared.py | 30 +- src/ttsim/ttsim_objects.py | 51 +- src/ttsim/typing.py | 1 + src/ttsim/vectorization.py | 41 +- tests/ttsim/mettsim/group_by_ids.py | 10 +- .../child_tax_credit/child_tax_credit.py | 2 +- tests/ttsim/test_dates_active.py | 122 +- tests/ttsim/test_docs.py | 4 +- tests/ttsim/test_loader.py | 30 +- ...est_visualizations.py => test_plot_dag.py} | 28 +- tests/ttsim/test_policy_environment.py | 10 +- tests/ttsim/test_vectorization.py | 22 +- tests/ttsim/utils.py | 26 - 34 files changed, 4276 insertions(+), 3069 deletions(-) rename src/ttsim/{visualization.py => plot_dag.py} (100%) rename tests/ttsim/{test_visualizations.py => test_plot_dag.py} (82%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9563c8021a..b61817bcf8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -95,6 +95,9 @@ repos: additional_dependencies: - types-PyYAML - types-pytz + - numpy >= 2 + - dags >= 0.3 + - optree >= 0.15 - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.33.0 hooks: diff --git a/CHANGES.md b/CHANGES.md index b5c55113b4..5c7a2b94e0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,7 +6,11 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished -- {gh}`880` Validate parameter files using json scheme ({ghuser}`hmgaudecker`). +- {gh}`887` Typing ({ghuser}`hmgaudecker`, {ghuser}`timmens`). +- {gh}`888` Remove SUPPORTED_GROUPINGS entirely, infer groupings from object names + ({ghuser}`MImmesberger`). +- {gh}`889` Refactor loader and fix check for time-dependent functions to span multiple + modules that end up in the same namespace ({ghuser}`hmgaudecker`). - {gh}`876` Add DataFrame to NestedDataDict conversion ({ghuser}`MImmesberger`). - {gh}`873` Implement aggregation decorators ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`859` Add RoundingSpec dataclass ({ghuser}`hmgaudecker`, `MImmesberger`). diff --git a/pixi.lock b/pixi.lock index 4cadaf78e5..f92819654b 100644 --- a/pixi.lock +++ b/pixi.lock @@ -22,12 +22,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda @@ -37,9 +37,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -48,8 +48,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -59,41 +59,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -101,53 +101,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -156,28 +156,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -187,27 +187,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -222,7 +222,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -231,21 +231,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -265,13 +265,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-64: @@ -287,12 +287,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda @@ -302,8 +302,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -312,7 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -322,41 +322,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -364,43 +364,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -409,28 +409,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -441,27 +441,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -476,7 +476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -485,30 +485,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-arm64: @@ -524,12 +524,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda @@ -539,8 +539,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -549,7 +549,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -559,41 +559,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -601,43 +601,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -646,28 +646,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -678,27 +678,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -713,7 +713,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -722,30 +722,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . win-64: @@ -759,12 +759,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda @@ -774,9 +774,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -784,7 +784,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -794,22 +794,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda @@ -817,16 +817,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -834,42 +834,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -877,27 +877,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -906,28 +906,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -943,7 +943,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -952,23 +952,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda @@ -983,16 +983,1025 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . + mypy: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl + - pypi: . + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl + - pypi: . + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl + - pypi: . + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl + - pypi: . py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1015,12 +2024,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda @@ -1030,9 +2039,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -1041,8 +2050,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1052,41 +2061,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -1094,53 +2103,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1149,28 +2158,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py311h5d046bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py311h5d046bc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -1180,27 +2189,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py311h687327b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1215,7 +2224,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -1224,21 +2233,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -1258,13 +2267,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0a/c0/f08836fde5bd223029ff38ae878b8017ee7468e25df7c70ab042ba723936/optree-0.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-64: @@ -1280,12 +2289,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda @@ -1295,8 +2304,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py311ha3cf9ac_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py311hc356e98_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -1305,7 +2314,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1315,41 +2324,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -1357,43 +2366,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py311h4d7f069_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1402,28 +2411,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py311h27c81cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py311h27c81cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -1434,27 +2443,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.11-h9ccd52b_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py311hb21797c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py311hab9d7c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py311hab9d7c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1469,7 +2478,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -1478,30 +2487,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/51/7e26de583120a1cdded7a705fe09b4507752ab189132a95917bdd6ffd42f/optree-0.14.1-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-arm64: @@ -1517,12 +2526,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda @@ -1532,8 +2541,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py311h155a34a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -1542,7 +2551,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1552,41 +2561,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -1594,43 +2603,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1639,28 +2648,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py311h762c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py311h762c074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -1671,27 +2680,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py311hc9d6b66_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py311hc9d6b66_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1706,7 +2715,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1715,30 +2724,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/e8/f4d63cf25f1b46d9fc9b005aff28e613b2cf347e6bf41110cc4b77a98a00/optree-0.14.1-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . win-64: @@ -1752,12 +2761,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda @@ -1767,9 +2776,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -1777,7 +2786,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1787,22 +2796,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda @@ -1810,16 +2819,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -1827,42 +2836,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py311he736701_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -1870,27 +2879,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py311h5e411d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py311h5e411d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -1899,28 +2908,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.11-h3f84c4b_2_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py311h484c95c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py311ha250665_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py311ha250665_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1936,7 +2945,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -1945,23 +2954,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda @@ -1976,13 +2985,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/03/e6/364a2f4ba171ddc1dfa2df99ae22ac096cf2a138b6cbda0f991873ad863b/optree-0.14.1-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . @@ -2008,12 +3017,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda @@ -2023,9 +3032,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2034,8 +3043,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2045,41 +3054,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -2087,53 +3096,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2142,28 +3151,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -2173,27 +3182,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2208,7 +3217,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -2217,21 +3226,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -2251,13 +3260,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-64: @@ -2273,12 +3282,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda @@ -2288,8 +3297,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2298,7 +3307,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2308,41 +3317,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -2350,43 +3359,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2395,28 +3404,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -2427,27 +3436,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2462,7 +3471,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -2471,30 +3480,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-arm64: @@ -2510,12 +3519,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda @@ -2525,8 +3534,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2535,7 +3544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2545,41 +3554,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -2587,43 +3596,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2632,28 +3641,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -2664,27 +3673,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2699,7 +3708,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -2708,30 +3717,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . win-64: @@ -2745,12 +3754,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda @@ -2760,9 +3769,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2770,7 +3779,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2780,22 +3789,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda @@ -2803,16 +3812,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -2820,42 +3829,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -2863,27 +3872,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -2892,28 +3901,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2929,7 +3938,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -2938,23 +3947,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda @@ -2969,13 +3978,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . @@ -3001,13 +4010,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda @@ -3017,9 +4026,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -3028,8 +4037,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -3039,43 +4048,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -3083,58 +4092,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.0-cxx17_hbbce691_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3143,29 +4152,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -3175,18 +4184,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -3194,10 +4203,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3212,7 +4221,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -3221,21 +4230,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -3255,13 +4264,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-64: @@ -3277,13 +4286,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda @@ -3293,8 +4302,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -3303,7 +4312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -3313,43 +4322,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.2-cpu_py312ha70eef1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -3357,48 +4366,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.0-cxx17_h0e468a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3407,29 +4416,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -3440,18 +4449,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -3459,10 +4468,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3477,7 +4486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -3486,30 +4495,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . osx-arm64: @@ -3525,13 +4534,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda @@ -3541,8 +4550,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -3551,7 +4560,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -3561,43 +4570,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py312he253ca6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -3605,48 +4614,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.0-cxx17_h07bc746_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3655,29 +4664,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -3688,18 +4697,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -3707,10 +4716,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3725,7 +4734,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -3734,30 +4743,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: . win-64: @@ -3771,12 +4780,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda @@ -3786,9 +4795,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -3796,7 +4805,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -3806,22 +4815,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda @@ -3829,16 +4838,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -3846,42 +4855,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -3889,27 +4898,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -3918,28 +4927,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3955,7 +4964,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -3964,23 +4973,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda @@ -3995,17 +5004,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/6f/0da6e0bc90e738fc63c584d65bef326f76a6550343ae1c243647bd1880fd/jax-0.5.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b8/3b/68981550dc34b86deb8e50b8cb14fd8bd620876276cfce2218ef7f11be90/jaxlib-0.5.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/31/25/32c5e2c919da4faaea9ef5088437ab6e01738c49402e4ec8a6c7b49e30ef/jax-0.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/81/5a989ecd4819de26ebffe90a165b81ceec1c98cd20214764c4b7c15c5837/jaxlib-0.6.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl @@ -4370,9 +5379,9 @@ packages: - pkg:pypi/babel?source=compressed-mapping size: 6938256 timestamp: 1738490268466 -- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - sha256: 4ce42860292a57867cfc81a5d261fb9886fc709a34eca52164cc8bbf6d03de9f - md5: 373374a3ed20141090504031dc7b693e +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + sha256: ddb0df12fd30b2d36272f5daf6b6251c7625d6a99414d7ea930005bbaecad06d + md5: 9f07c4fc992adb2d6c30da7fab3959a7 depends: - python >=3.9 - soupsieve >=1.2 @@ -4381,8 +5390,8 @@ packages: license_family: MIT purls: - pkg:pypi/beautifulsoup4?source=compressed-mapping - size: 145482 - timestamp: 1738740460562 + size: 146613 + timestamp: 1744783307123 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd md5: f0b4c8e370446ef89797608d60a564b3 @@ -4584,65 +5593,55 @@ packages: purls: [] size: 54927 timestamp: 1720974860185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb + md5: f7f0d6cc2dc986d42ac2689ec88192be depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda - sha256: 8dcc1628d34fe7d759f3a7dee52e09c5162a3f9669dddd6100bff965450f4a0a - md5: 133255af67aaf1e0c0468cc753fd800b + size: 206884 + timestamp: 1744127994291 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda + sha256: b37f5dacfe1c59e0a207c1d65489b760dff9ddb97b8df7126ceda01692ba6e97 + md5: eafe5d9f1a8c514afe41e6e833f66dfd depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 184455 - timestamp: 1734208242547 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 + size: 184824 + timestamp: 1744128064511 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda + sha256: b4bb55d0806e41ffef94d0e3f3c97531f322b3cb0ca1f7cdf8e47f62538b7a2b + md5: f8cd1beb98240c7edb1a95883360ccfa depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - license: ISC - purls: [] - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - sha256: 42e911ee2d8808eacedbec46d99b03200a6138b8e8a120bd8acabe1cac41c63b - md5: 3418b6c8cac3e71c0bc089fc5ea53042 - license: ISC - purls: [] - size: 158408 - timestamp: 1738298385933 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 + size: 179696 + timestamp: 1744128058734 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 + md5: 23c7fd5062b48d8294fc7f61bf157fba + depends: + - __win license: ISC purls: [] - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - sha256: 1bedccdf25a3bd782d6b0e57ddd97cdcda5501716009f2de4479a779221df155 - md5: 5304a31607974dfc2110dfbb662ed092 + size: 152945 + timestamp: 1745653639656 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac + md5: 95db94f75ba080a22eb623590993167b + depends: + - __unix license: ISC purls: [] - size: 158690 - timestamp: 1738298232550 + size: 152283 + timestamp: 1745653616541 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -4930,9 +5929,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12103 timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py311h2dc5d0c_0.conda - sha256: 350b0c1eb54d38aa9631255f11a5b83ec924ffd20776d9a2e903f5c58f3d5904 - md5: 1923a8a1fd2b87318804f118273c1ab2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda + sha256: 50018d9c2d805eab29be0ad2e65a4d6b9f620e5e6b196923b1f3b397efee9b10 + md5: 37bc439a94beeb29914baa5b4987ebd5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4943,11 +5942,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 380562 - timestamp: 1742157291267 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py312h178313f_0.conda - sha256: 00b0153cc58e638713d8297000761d4b8ab2b75d4c7096192d802e5f362de716 - md5: ec7b7abbdcfbac99336fadde6b75213c + size: 382957 + timestamp: 1743381419165 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda + sha256: 029278c43bd2a6ac36bfd93fde69a0cde6a4ee94c0af72d0d51236fbb1fc3720 + md5: d0fca021e354cc96455021852a1fad6d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4958,11 +5957,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 371584 - timestamp: 1742157074273 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py311ha3cf9ac_0.conda - sha256: 1b243a121dd4f56ad7b4c71ad283511d4c492e2e55ad64a5461d374879d149eb - md5: 46e5fae4dbf3503f061084b3fe87776c + size: 370860 + timestamp: 1743381417734 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py311ha3cf9ac_0.conda + sha256: e041ad3c0fa1b48d20e7c66245ee1ceaff7700f2491769c85548fe98a8b66bf4 + md5: 6b0840d6e4b8aa8c9bffe4390ad24137 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -4971,12 +5970,12 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping - size: 379300 - timestamp: 1742157009156 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py312h3520af0_0.conda - sha256: a75b8edba44ab4c5013577845bac3114224c6893ad439e4ea061ed7d6185445f - md5: 775dc51b9aa865782c1a5138a0339a6a + - pkg:pypi/coverage?source=hash-mapping + size: 380724 + timestamp: 1743381417340 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + sha256: 93a748957c402833143e72735e7dca3b0acd347ef37fce197ab3d2978b3ad997 + md5: bc208c83a0a6fb53e2d1a7e8564313c9 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -4985,12 +5984,12 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping - size: 369042 - timestamp: 1742157030736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py311h4921393_0.conda - sha256: a5114f6fca6c02f996685c296e47db0a052d387f2122b7c6474d1cf5a4a3115a - md5: 1d83dbdbeda66e8cb469e1325e9dc950 + - pkg:pypi/coverage?source=hash-mapping + size: 369852 + timestamp: 1743381410510 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py311h4921393_0.conda + sha256: e2843a863c82fe5ba395dd8efca92516aed4bb7a483e20c1bd9a8e352457cf17 + md5: 33cb9e1ee4203172727a4b0568ff075d depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5001,11 +6000,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 380437 - timestamp: 1742157099485 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py312h998013c_0.conda - sha256: 54f4c61f12caa277b2555080b03ab320fc342f1295d01254498adcfdd012292f - md5: 5021d17d7b543fa94744ba18a13bca16 + size: 381713 + timestamp: 1743381494051 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + sha256: 124499e640f203e9719611b9c491daed61dd8747a2fecbaac1e0e34e9de2a48a + md5: dedaba61562b3e7124445b378419eeac depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5016,11 +6015,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 369999 - timestamp: 1742157070531 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py311h5082efb_0.conda - sha256: 05b35904afac394868753abe745bdefe6c595f7fc5bc304bc8559c3faab6f05b - md5: a2a2feae26268f73c8ab06818b99b56c + size: 371159 + timestamp: 1743381493560 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py311h5082efb_0.conda + sha256: 2a3a8f6304374d19e6fd1cbf73e756debf0a76e787f1a15bd8b11d74f9ef6bd2 + md5: 3237b9093308b18ee36d455ff098017b depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -5032,11 +6031,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 407182 - timestamp: 1742157374397 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py312h31fea79_0.conda - sha256: fba20ba73ff712a93c36d806492edb9f71a8453e3224301db03d6e0748dbf118 - md5: f2a8dc053d6523645333097a20710f97 + size: 408662 + timestamp: 1743381739554 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + sha256: 7815726b2b45065af4570deca428f48799ce1f49de7d8b5e4f6b7999f6a4dc2f + md5: a52895ace8c17bc01ceba443d52325c6 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5048,30 +6047,30 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 397115 - timestamp: 1742157326530 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_2.conda + size: 397622 + timestamp: 1743381580812 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda noarch: generic - sha256: 52e462716ff6b062bf6992f9e95fcb65a0b95a47db73f0478bd0ceab8a37036a - md5: fb7bc3f1bccb39021a53309e83bce28d + sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 + md5: 451718359f1658c6819d8665f82585ab depends: - - python 3.11.11.* + - python >=3.11,<3.12.0a0 - python_abi * *_cp311 license: Python-2.0 purls: [] - size: 46889 - timestamp: 1741034069952 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_1.conda + size: 47661 + timestamp: 1744323121098 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda noarch: generic - sha256: 58a637bc8328b115c9619de3fcd664ec26662083319e3c106917a1b3ee4d7594 - md5: f0f8087079679f3ae375fca13327b17f + sha256: acb47715abf1cd8177a5c20f42a34555b5d9cebb68ff39a58706e84effe218e2 + md5: 7584a4b1e802afa25c89c0dcc72d0826 depends: - - python 3.12.9.* + - python >=3.12,<3.13.0a0 - python_abi * *_cp312 license: Python-2.0 purls: [] - size: 45728 - timestamp: 1741128060593 + size: 45861 + timestamp: 1744323195619 - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl name: dags version: 0.3.0 @@ -5092,9 +6091,9 @@ packages: purls: [] size: 618596 timestamp: 1640112124844 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py311hfdbb021_0.conda - sha256: 5400b19311cefe11fcad1f758ec4341945f0bf1793d5501355d2e51260932a73 - md5: f343a9dfe2dd89abbdb1984aa435ca73 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda + sha256: 2f6d43724f60828fa226a71f519248ecd1dd456f0d4fc5f887936c763ea726e4 + md5: 1c229452e28e2c4607457c7b6c839bc7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5105,11 +6104,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2548797 - timestamp: 1741148528729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.13-py312h2ec8cdc_0.conda - sha256: 3370f9c9a94146a4136ca57ae6e13b789572ff41804cd949cccad70945ae7fb0 - md5: cfad89e517e83c4927fffdbaaf0a30ef + size: 2583752 + timestamp: 1744321388692 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + sha256: 8f0b338687f79ea87324f067bedddd2168f07b8eec234f0fe63b522344c6a919 + md5: 089cf3a3becf0e2f403feaf16e921678 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5120,11 +6119,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2650523 - timestamp: 1741148587127 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py311hc356e98_0.conda - sha256: 16032f7427694dc2197172e281ecf6a08fc2805f5d982f42510b89458d3f8b53 - md5: dbd5e659c10a9bb81e3d3f962cc9705f + size: 2630748 + timestamp: 1744321406939 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda + sha256: b6f42ebdded9c43c6f953d674a1467ba6396a4c98e77e5b79bc793bbc45ae7ce + md5: 58114700054f024b45fa86243eefdc55 depends: - __osx >=10.13 - libcxx >=18 @@ -5134,11 +6133,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2509032 - timestamp: 1741148643393 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.13-py312haafddd8_0.conda - sha256: ceef18f81b4b6f2f3c22df66df328deb673d1134245eea50cff9015851aaa44c - md5: cfa5d55e1840d33ef2fc5fa168a6e702 + size: 2493948 + timestamp: 1744321501497 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + sha256: b1c9f30148045219844f947fe43d4ee19c4cc6ee83e7518b2e83db780d3e97e6 + md5: a3831727ed5b148d096afb80a6009cab depends: - __osx >=10.13 - libcxx >=18 @@ -5148,11 +6147,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2534988 - timestamp: 1741148736172 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py311h155a34a_0.conda - sha256: c17592ec9d2fdffdcb5c1a8324c586344610686a4feac99c8a03a8461c0ee9ab - md5: 4a6f619085657d78f32e8b3688ad9172 + size: 2557869 + timestamp: 1744321625095 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda + sha256: 509d756a8809179e51868a65882e28e9932ef80d1515536e76f158c6cddd1f52 + md5: eba659c4735d39271b8117b2349237a8 depends: - __osx >=11.0 - libcxx >=18 @@ -5163,11 +6162,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2449753 - timestamp: 1741148640482 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.13-py312hd8f9ff3_0.conda - sha256: aff8062e58906578b8006455beba45d4293708795fd534f01ca08d79cccaf6e3 - md5: 806d93a7b4e47961d7459dc880087673 + size: 2490964 + timestamp: 1744321543472 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + sha256: c833d92953a4c747f2606cefaebdbeaeec7c8d374bb7652dd0cc241cb120fdbc + md5: f1be818f2cee62e6edc12d5aaae13f57 depends: - __osx >=11.0 - libcxx >=18 @@ -5178,11 +6177,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2571308 - timestamp: 1741148638740 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py311hda3d55a_0.conda - sha256: 4a26009dfb681e79eb1c0e4c1b9f70496b39bc849862baa3b7d3ce01b5b5ead8 - md5: f95dea661bf83b77246fc1ade349b0f0 + size: 2581221 + timestamp: 1744321582400 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda + sha256: 71127b53485a633f708f6645d8d023aef2efa325ca063466b21446b778d49b94 + md5: 253acd78a14d333ea1c6de5b16b5a0ae depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -5193,11 +6192,11 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3625877 - timestamp: 1741148780378 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.13-py312h275cf98_0.conda - sha256: 24e793d78bb5f2129be7a485c72d6d485d1abff30d90cdcedfa24bad1cf00208 - md5: a2e7abdc87c10567ad1fdaf05c47a728 + size: 3560294 + timestamp: 1744321915699 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + sha256: 02ceea9c12eaaf29c7c40142e4789b77c5c98aa477bdfca1db3ae97440b9e2fe + md5: 331737db69ae5431acb6ef3e198ec623 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5208,8 +6207,8 @@ packages: license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3608339 - timestamp: 1741149007361 + size: 3561750 + timestamp: 1744321803729 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 md5: 9ce473d1d1be1cc3810856a48b3fab32 @@ -5311,29 +6310,29 @@ packages: - pkg:pypi/execnet?source=hash-mapping size: 38835 timestamp: 1733231086305 -- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 - md5: ef8b5fca76806159fc25b4f48d8737eb +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + sha256: 7510dd93b9848c6257c43fdf9ad22adf62e7aa6da5f12a6a757aed83bcfedf05 + md5: 81d30c08f9a3e556e8ca9e124b044d14 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/executing?source=hash-mapping - size: 28348 - timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 - md5: 1d6afef758879ef5ee78127eb4cd2c4a + size: 29652 + timestamp: 1745502200340 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda + sha256: dd5530ddddca93b17318838b97a2c9d7694fa4d57fc676cf0d06da649085e57a + md5: d6845ae4dea52a2f90178bf1829a21f8 depends: - __glibc >=2.17,<3.0.a0 - - libexpat 2.6.4 h5888daf_0 + - libexpat 2.7.0 h5888daf_0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 138145 - timestamp: 1730967050578 + size: 140050 + timestamp: 1743431809745 - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda sha256: de7b6d4c4f865609ae88db6fa03c8b7544c2452a1aa5451eb7700aad16824570 md5: 4547b39256e296bb758166893e909a7c @@ -5341,7 +6340,7 @@ packages: - python >=3.9 license: Unlicense purls: - - pkg:pypi/filelock?source=compressed-mapping + - pkg:pypi/filelock?source=hash-mapping size: 17887 timestamp: 1741969612334 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -5477,53 +6476,46 @@ packages: - pkg:pypi/fqdn?source=hash-mapping size: 16705 timestamp: 1733327494780 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - sha256: 7385577509a9c4730130f54bb6841b9b416249d5f4e9f74bf313e6378e313c57 - md5: 9ecfd6f2ca17077dd9c2d24770bb9ccd +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + sha256: 7ef7d477c43c12a5b4cddcf048a83277414512d1116aba62ebadfa7056a7d84f + md5: 9ccd736d31e0c6e41f54e704e5312811 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - libfreetype 2.13.3 ha770c72_1 + - libfreetype6 2.13.3 h48d6fc4_1 license: GPL-2.0-only OR FTL purls: [] - size: 639682 - timestamp: 1741863789964 -- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - sha256: 66cc36a313accf28f4ab9b40ad11e4a8ff757c11314cd499435d9b8df1fa0150 - md5: e391f0c2d07df272cf7c6df235e97bb9 + size: 172450 + timestamp: 1745369996765 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + sha256: e2870e983889eec73fdc0d4ab27d3f6501de4750ffe32d7d0a3a287f00bc2f15 + md5: 126dba1baf5030cb6f34533718924577 depends: - - __osx >=10.13 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - libfreetype 2.13.3 h694c41f_1 + - libfreetype6 2.13.3 h40dfd5c_1 license: GPL-2.0-only OR FTL purls: [] - size: 602964 - timestamp: 1741863884014 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - sha256: 2c273de32431c431a118a8cd33afb6efc616ddbbab9e5ba0fe31e3b4d1ff57a3 - md5: 630445a505ea6e59f55714853d8c9ed0 + size: 172649 + timestamp: 1745370231293 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + sha256: 6b63c72ea51a41d41964841404564c0729fdddd3e952e2715839fd759b7cfdfc + md5: e684de4644067f1956a580097502bf03 depends: - - __osx >=11.0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - libfreetype 2.13.3 hce30654_1 + - libfreetype6 2.13.3 h1d14073_1 license: GPL-2.0-only OR FTL purls: [] - size: 590002 - timestamp: 1741863913870 -- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - sha256: 67e3af0fbe6c25f5ab1af9a3d3000464c5e88a8a0b4b06602f4a5243a8a1fd42 - md5: 9c461ed7b07fb360d2c8cfe726c7d521 + size: 172220 + timestamp: 1745370149658 +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + sha256: 0bcc9c868d769247c12324f957c97c4dbee7e4095485db90d9c295bcb3b1bb43 + md5: 633504fe3f96031192e40e3e6c18ef06 depends: - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libfreetype 2.13.3 h57928b3_1 + - libfreetype6 2.13.3 h0b5ce68_1 license: GPL-2.0-only OR FTL purls: [] - size: 510718 - timestamp: 1741864688363 + size: 184162 + timestamp: 1745370242683 - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 md5: ac7bc6a654f8f41b352b38f4051135f8 @@ -5615,8 +6607,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev112+g506e8e69.d20250426 - sha256: fdbeae7d413c2e25735ddd6c69cc154ed4a981c69ab9726038b344eb7a1f56e7 + version: 0.7.1.dev134+g4a922fc1.d20250429 + sha256: aed5f1fe46cde7e50510939ac4453026f951336ed18ab9239946a681e9aeddb9 requires_dist: - dags>=0.3.0 - ipywidgets @@ -5633,39 +6625,39 @@ packages: - pyyaml requires_python: '>=3.11' editable: true -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.82.2-h4833e2c_1.conda - sha256: 5d8a48abdb1bc2b54f1380d2805cb9cd6cd9609ed0e5c3ed272aef92ab53b190 - md5: e2e44caeaef6e4b107577aa46c95eb12 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + sha256: 0358e0471a7c41875490abb87faa44c38298899b625744c6618b32cfb6595b4c + md5: ddc06964296eee2b4070e65415b332fd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libglib 2.82.2 h2ff4ddf_1 + - libglib 2.84.1 h2ff4ddf_0 license: LGPL-2.1-or-later purls: [] - size: 115452 - timestamp: 1737037532892 -- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.82.2-hf8faeaf_1.conda - sha256: d626c650d320ca14c259a7aa12283c452b3ca1e58191c29b820001725822285e - md5: 9c64be7c2dbbdde429d12a84c538ef1e + size: 116281 + timestamp: 1743773813311 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + sha256: 6ea60fa3aee44ba7223ee4a5955dc341a4dac1f2256a8511a821741545a6da27 + md5: 03d506bd28830a841105d3015744612e depends: - __osx >=10.13 - - libglib 2.82.2 h5c976ab_1 - - libintl >=0.22.5,<1.0a0 + - libglib 2.84.0 h5c976ab_0 + - libintl >=0.23.1,<1.0a0 license: LGPL-2.1-or-later purls: [] - size: 100685 - timestamp: 1737038130 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.82.2-h1dc7a0c_1.conda - sha256: b6874fea5674855149f929899126e4298d020945f3d9c6a7955d14ede1855e3a - md5: bdc35b7b75b7cd2bcfd288e399333f29 + size: 101520 + timestamp: 1743039032850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + sha256: 55d1f1dc1884f434936917dc6bec938d6e552e361c3936cc85f606404fe16c65 + md5: a4374a5bc561b673045db55e090cb6cb depends: - __osx >=11.0 - - libglib 2.82.2 hdff4504_1 - - libintl >=0.22.5,<1.0a0 + - libglib 2.84.0 hdff4504_0 + - libintl >=0.23.1,<1.0a0 license: LGPL-2.1-or-later purls: [] - size: 101008 - timestamp: 1737037840312 + size: 101237 + timestamp: 1743039115361 - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda sha256: 04093c9aafba033f55e4145336cff8f41809681dc6a61530dbd1016924cb4ded md5: b750a0ed3904efe3d9a42e7015b92e75 @@ -5814,9 +6806,9 @@ packages: purls: [] size: 1172679 timestamp: 1738603383430 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h021d004_4.conda - sha256: fc8abccb4b0d454891847bdd8163332ff8607aa33ea9cf1e43b3828fc88c42ce - md5: a891e341072432fafb853b3762957cbf +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + sha256: d36263cbcbce34ec463ce92bd72efa198b55d987959eab6210cc256a0e79573b + md5: 67d00e9cfe751cfe581726c5eff7c184 depends: - __glibc >=2.17,<3.0.a0 - at-spi2-atk >=2.38.0,<3.0a0 @@ -5828,19 +6820,19 @@ packages: - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - glib-tools - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - hicolor-icon-theme - libcups >=2.3.3,<2.4.0a0 - libcups >=2.3.3,<3.0a0 - libexpat >=2.6.4,<3.0a0 - libgcc >=13 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - liblzma >=5.6.4,<6.0a0 - - libxkbcommon >=1.8.0,<2.0a0 + - libxkbcommon >=1.8.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.56.1,<2.0a0 + - pango >=1.56.3,<2.0a0 - wayland >=1.23.1,<2.0a0 - - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 - xorg-libxcomposite >=0.4.6,<1.0a0 - xorg-libxcursor >=1.2.3,<2.0a0 - xorg-libxdamage >=1.1.6,<2.0a0 @@ -5853,11 +6845,11 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 5563940 - timestamp: 1741694746664 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h82a860e_4.conda - sha256: fc74cae058d39dc25697572b39d97cf2a39b3b37d6d9a557a1b9f95b75d39b3a - md5: 522364f052b5e18bfea181e33d1eed1b + size: 5585389 + timestamp: 1743405684985 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + sha256: 4f1be786342408492578dc696165ed3515bb1c4887c30e0909e50d0f8245fb38 + md5: 38eeb48f9466e5763567d1be1b7ff444 depends: - __osx >=10.13 - atk-1.0 >=2.38.0 @@ -5866,22 +6858,22 @@ packages: - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - glib-tools - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - hicolor-icon-theme - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libintl >=0.23.1,<1.0a0 - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.56.1,<2.0a0 + - pango >=1.56.3,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 4910558 - timestamp: 1741695295277 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-he7bb075_4.conda - sha256: 5adbee61709811186022ba0013cdda2029ae340be4de95c909a718045ec79d00 - md5: a01d2dd60413e43f581445d1b2ed8d5d + size: 4916900 + timestamp: 1743405835449 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + sha256: 9650ac1a02975ae0a3917443dc3c35ddc4d8e87a1cb04fda115af5f98e5d457c + md5: 8353369d4c2ecc5afd888405d3226fd9 depends: - __osx >=11.0 - atk-1.0 >=2.38.0 @@ -5890,19 +6882,19 @@ packages: - fribidi >=1.0.10,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - glib-tools - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - hicolor-icon-theme - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libintl >=0.23.1,<1.0a0 - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - pango >=1.56.1,<2.0a0 + - pango >=1.56.3,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 4773126 - timestamp: 1741695489897 + size: 4792338 + timestamp: 1743406461562 - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b md5: 4d8df0b0db060d33c9a702ada998a8fe @@ -5950,9 +6942,9 @@ packages: purls: [] size: 188688 timestamp: 1686545648050 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + sha256: f64b68148c478c3bfc8f8d519541de7d2616bf59d44485a5271041d40c061887 + md5: 4b69232755285701bc86a5afe4d9933a depends: - python >=3.9 - typing_extensions @@ -5960,8 +6952,8 @@ packages: license_family: MIT purls: - pkg:pypi/h11?source=hash-mapping - size: 51846 - timestamp: 1733327599467 + size: 37697 + timestamp: 1745526482242 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 md5: b4754fb1bdcb70c8fd54f918301582c6 @@ -5975,71 +6967,71 @@ packages: - pkg:pypi/h2?source=hash-mapping size: 53888 timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda - sha256: 3b4ccabf170e1bf98c593f724cc4defe286d64cb19288751a50c63809ca32d5f - md5: 81f137b4153cf111ff8e3188b6fb8e73 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + sha256: d93b8535a2d66dabfb6e4a2a0dea1b37aab968b5f5bba2b0378f8933429fe2e3 + md5: 95e3bb97f9cdc251c0c68640e9c10ed3 depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libexpat >=2.6.4,<3.0a0 + - libexpat >=2.7.0,<3.0a0 - libgcc >=13 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.1,<3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1694183 - timestamp: 1741016164622 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-10.4.0-h86b413f_0.conda - sha256: 87e47de769f93f756e61e40555796382fb1dc3cb754e2e068958a949b3df33f7 - md5: 05493515d0b4467f8229f1e154ec80c3 + size: 1729836 + timestamp: 1744894321480 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + sha256: f9da5eb2a4bb7ddc8fa24e2cc76a219b7bb48f3a2e0ba808275adc234d0538cb + md5: 240771b26ad3d5041508c0601f241703 depends: - __osx >=10.13 - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - libcxx >=18 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libexpat >=2.7.0,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1442847 - timestamp: 1741016606354 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.4.0-hb72c1af_0.conda - sha256: 5c0ba63cdc0ccda3309923deff839528cf870daf4ae0173ab07e275698236321 - md5: c13f50a1000cc3adadb2d93c76dcedab + size: 1480598 + timestamp: 1744894285835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + sha256: 4c4f8dc935dff21259df60c0fc2c7e5d71916f3b076f539aa55e7513f00896df + md5: 7a3187cd76ed14507654286bd6021e8a depends: - __osx >=11.0 - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - libcxx >=18 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libexpat >=2.7.0,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1380378 - timestamp: 1741016758098 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda - sha256: 4e8a5219328697247b682b161e02577613b50d20237d4b3e575713d811036895 - md5: 63185f1b04a3f5ebd728cf1bec2dbedc + size: 1398206 + timestamp: 1744894592199 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + sha256: fcb867daea82208cc90a2c9bacc8e0879324cd360227423bb7eae24f16d16cc8 + md5: dcc4a63f231cc52197c558f5e07e0a69 depends: - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libexpat >=2.7.0,<3.0a0 + - libglib >=2.84.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -6047,8 +7039,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1112646 - timestamp: 1741017842033 + size: 1124659 + timestamp: 1744895521700 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 md5: bbf6f174dcd3254e19a2f5d2295ce808 @@ -6084,22 +7076,23 @@ packages: - pkg:pypi/hpack?source=hash-mapping size: 30731 timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + sha256: 04d49cb3c42714ce533a8553986e1642d0549a05dc5cc48e0d43ff5be6679a5b + md5: 4f14640d58e2cc0aa0819d9d8ba125bb depends: - - python >=3.8 - - h11 >=0.13,<0.15 + - python >=3.9 + - h11 >=0.16 - h2 >=3,<5 - sniffio 1.* - - anyio >=3.0,<5.0 + - anyio >=4.0,<5.0 - certifi + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/httpcore?source=hash-mapping - size: 48959 - timestamp: 1731707562362 + size: 49483 + timestamp: 1745602916758 - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 md5: d6989ead454181f4f9bc987d3dc4e285 @@ -6170,9 +7163,9 @@ packages: purls: [] size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.9-pyhd8ed1ab_0.conda - sha256: b74a2ffa7be9278d7b8770b6870c360747149c683865e63476b0e1db23038429 - md5: 542f45bf054c6b9cf8d00a3b1976f945 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + sha256: 02f47df6c6982b796aecb086b434627207e87c0a90a50226f11f2cc99c089770 + md5: 8d5b9b702810fb3054d52ba146023bc3 depends: - python >=3.9 - ukkonen @@ -6180,8 +7173,8 @@ packages: license_family: MIT purls: - pkg:pypi/identify?source=hash-mapping - size: 78600 - timestamp: 1741502780749 + size: 79057 + timestamp: 1745098917031 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -6322,9 +7315,9 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhca29cf9_0.conda - sha256: 72ad5d59719d7639641f21032de870fadd43ec2349229161728b736f1df720d1 - md5: e5ba968166136311157765e8b2ccb9d0 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + sha256: 83e4cfdcf09c1273ec31548aacf7f81076dc4245548e78ac3b47d1da361da03b + md5: a7b419c1d0ae931d86cd9cab158f698e depends: - __win - colorama @@ -6345,11 +7338,11 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 614763 - timestamp: 1741457145171 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.0.2-pyhfb0248b_0.conda - sha256: 98f14471e0f492d290c4882f1e2c313fffc67a0f9a3a36e699d7b0c5d42a5196 - md5: b031bcd65b260a0a3353531eab50d465 + size: 619872 + timestamp: 1745672185321 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + sha256: 539d003c379c22a71df1eb76cd4167a3e2d59f45e6dbc3416c45619f4c1381fb + md5: 7330ee1244209cfebfb23d828dd9aae5 depends: - __unix - pexpect >4.3 @@ -6370,8 +7363,8 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 615519 - timestamp: 1741457126430 + size: 620691 + timestamp: 1745672166398 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -6384,22 +7377,22 @@ packages: - pkg:pypi/ipython-pygments-lexers?source=hash-mapping size: 13993 timestamp: 1737123723464 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda - sha256: f419657566e3d9bea85b288a0ce3a8e42d76cd82ac1697c6917891df3ae149ab - md5: bb19ad65196475ab6d0bb3532d7f8d96 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + sha256: 3ba4a24fbf4465f5389844cfcd141ab800500f674fa56edc0530975de8e779bf + md5: 71f5d1458db8d9c864abb562588ff893 depends: - comm >=0.1.3 - ipython >=6.1.0 - - jupyterlab_widgets >=3.0.13,<3.1.0 + - jupyterlab_widgets >=3.0.14,<3.1.0 - python >=3.9 - traitlets >=4.3.1 - - widgetsnbextension >=4.0.13,<4.1.0 + - widgetsnbextension >=4.0.14,<4.1.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/ipywidgets?source=hash-mapping - size: 113982 - timestamp: 1733493669268 + size: 114372 + timestamp: 1744294685908 - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed md5: 0b0154421989637d424ccf0f104be51a @@ -6412,32 +7405,30 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/77/6f/0da6e0bc90e738fc63c584d65bef326f76a6550343ae1c243647bd1880fd/jax-0.5.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/31/25/32c5e2c919da4faaea9ef5088437ab6e01738c49402e4ec8a6c7b49e30ef/jax-0.6.0-py3-none-any.whl name: jax - version: 0.5.2 - sha256: d80954d90e2cce57498b6e9c23a6402c2c39edf86d4f808813ab1d1e97672e34 + version: 0.6.0 + sha256: 22b21827597c6d6b46e88543b4fc372fcddf1cc1247660452de020cc4bda1afc requires_dist: - - jaxlib>=0.5.1,<=0.5.2 - - ml-dtypes>=0.4.0 + - jaxlib<=0.6.0,>=0.6.0 + - ml-dtypes>=0.5.0 - numpy>=1.25 - numpy>=1.26.0 ; python_full_version >= '3.12' - opt-einsum - scipy>=1.11.1 - - jaxlib==0.5.1 ; extra == 'minimum-jaxlib' - - jaxlib==0.5.0 ; extra == 'ci' - - jaxlib>=0.5.1,<=0.5.2 ; extra == 'tpu' - - libtpu==0.0.10.* ; extra == 'tpu' + - jaxlib==0.6.0 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.0 ; extra == 'ci' + - jaxlib<=0.6.0,>=0.6.0 ; extra == 'tpu' + - libtpu==0.0.13.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib==0.5.1 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda' - - jaxlib==0.5.1 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda12' - - jaxlib==0.5.1 ; extra == 'cuda12-pip' - - jax-cuda12-plugin[with-cuda]>=0.5.1,<=0.5.2 ; extra == 'cuda12-pip' - - jaxlib==0.5.1 ; extra == 'cuda12-local' - - jax-cuda12-plugin==0.5.1 ; extra == 'cuda12-local' - - jaxlib==0.5.1 ; extra == 'rocm' - - jax-rocm60-plugin>=0.5.1,<=0.5.2 ; extra == 'rocm' + - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.6.0,>=0.6.0 ; extra == 'cuda' + - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.6.0,>=0.6.0 ; extra == 'cuda12' + - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.6.0,>=0.6.0 ; extra == 'cuda12-local' + - jaxlib<=0.6.0,>=0.6.0 ; extra == 'rocm' + - jax-rocm60-plugin<=0.6.0,>=0.6.0 ; extra == 'rocm' - kubernetes ; extra == 'k8s' requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda @@ -6459,10 +7450,10 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1556886 timestamp: 1741182198677 -- pypi: https://files.pythonhosted.org/packages/b8/3b/68981550dc34b86deb8e50b8cb14fd8bd620876276cfce2218ef7f11be90/jaxlib-0.5.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/65/81/5a989ecd4819de26ebffe90a165b81ceec1c98cd20214764c4b7c15c5837/jaxlib-0.6.0-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.5.1 - sha256: 0ed6fc1fbee91be70979f05dd523f11ca9de2a14d81a7f7d5aa5e783580587c2 + version: 0.6.0 + sha256: 554512c1445ee69c566ef097c3dbdd09e9d9908523eef222c589a559f4220370 requires_dist: - scipy>=1.11.1 - numpy>=1.25 @@ -6565,17 +7556,17 @@ packages: - pkg:pypi/jinja2?source=compressed-mapping size: 112714 timestamp: 1741263433881 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f - md5: cd170f82d8e5b355dfdea6adab23e4af +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + sha256: 889e2a49de796475b5a4bc57d0ba7f4606b368ee2098e353a6d9a14b0e2c6393 + md5: 56275442557b3b45752c10980abfe2db depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/json5?source=hash-mapping - size: 31573 - timestamp: 1733272196759 + size: 34114 + timestamp: 1743722170015 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda sha256: 2f082f7b12a7c6824e051321c1029452562ad6d496ad2e8c8b7b3dea1c8feb92 md5: 5ca76f61b00a15a9be0612d4d883badc @@ -6691,18 +7682,19 @@ packages: - pkg:pypi/jsonschema?source=hash-mapping size: 74256 timestamp: 1733472818764 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda - sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 - md5: 3b519bc21bc80e60b456f1e62962a766 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + sha256: 66fbad7480f163509deec8bd028cd3ea68e58022982c838683586829f63f3efa + md5: 41ff526b1083fde51fbdc93f29282e0e depends: - python >=3.9 - referencing >=0.31.0 + - python license: MIT license_family: MIT purls: - pkg:pypi/jsonschema-specifications?source=hash-mapping - size: 16170 - timestamp: 1733493624968 + size: 19168 + timestamp: 1745424244298 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d md5: a5b1a8065857cc4bd8b7a38d063bb728 @@ -6842,9 +7834,9 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.6-pyhd8ed1ab_0.conda - sha256: cf10c9b4158c4ef2796fde546f2bbe45f43c1402a0c2a175939ebbb308846ada - md5: 8b91a10c966aa65b9ad1a2702e6ef121 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + sha256: 23ef44cc7ee1f18c3ec462f27f31e75c7260a0f04b9736d70c631eba5f9c31f0 + md5: 2d29877427f2c249621557dd9c840d69 depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -6858,16 +7850,16 @@ packages: - notebook-shim >=0.2 - packaging - python >=3.9 - - setuptools >=40.8.0 + - setuptools >=41.1.0 - tomli >=1.2.2 - tornado >=6.2.0 - traitlets license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab?source=compressed-mapping - size: 7641308 - timestamp: 1741964212957 + - pkg:pypi/jupyterlab?source=hash-mapping + size: 8466990 + timestamp: 1745361437163 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -6903,9 +7895,9 @@ packages: - pkg:pypi/jupyterlab-server?source=hash-mapping size: 49449 timestamp: 1733599666357 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda - sha256: 206489e417408d2ffc2a7b245008b4735a8beb59df6c9109d4f77e7bc5969d5d - md5: b26e487434032d7f486277beb0cead3a +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + sha256: c60faaf813b545e3fb2e3567e310695373cb692cd484bcf29b30dcd3d9c93ba4 + md5: 5f17eb78a0ae9db2430c94a2cba222c8 depends: - python >=3.9 constrains: @@ -6913,9 +7905,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab-widgets?source=hash-mapping - size: 186358 - timestamp: 1733428156991 + - pkg:pypi/jupyterlab-widgets?source=compressed-mapping + size: 187102 + timestamp: 1744291153222 - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl name: kaleido version: 0.1.0.post1 @@ -7015,91 +8007,95 @@ packages: purls: [] size: 671240 timestamp: 1740155456116 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff + md5: 9344155d33912347b37f0ae6c410a835 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache purls: [] - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 - md5: f9d6a4c82889d5ecedec1d90eb673c55 + size: 264243 + timestamp: 1745264221534 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + sha256: cc1f1d7c30aa29da4474ec84026ec1032a8df1d7ec93f4af3b98bb793d01184e + md5: 21f765ced1a0ef4070df53cb425e1967 depends: - - libcxx >=13.0.1 + - __osx >=10.13 + - libcxx >=18 license: Apache-2.0 license_family: Apache purls: [] - size: 290319 - timestamp: 1657977526749 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 + size: 248882 + timestamp: 1745264331196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + sha256: 12361697f8ffc9968907d1a7b5830e34c670e4a59b638117a2cdfed8f63a38f8 + md5: a74332d9b60b62905e3d30709df08bf1 depends: - - libcxx >=13.0.1 + - __osx >=11.0 + - libcxx >=18 license: Apache-2.0 license_family: Apache purls: [] - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 - md5: 1900cb3cab5055833cfddb0ba233b074 + size: 188306 + timestamp: 1745264362794 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + sha256: 868a3dff758cc676fa1286d3f36c3e0101cca56730f7be531ab84dc91ec58e9d + md5: c1b81da6d29a14b542da14a36c9fbf3f depends: + - ucrt >=10.0.20348.0 - vc >=14.2,<15 - - vs2015_runtime >=14.29.30037 + - vc14_runtime >=14.29.30139 license: Apache-2.0 license_family: Apache purls: [] - size: 194365 - timestamp: 1657977692274 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.0-cxx17_hbbce691_0.conda - sha256: 7bf2a7a2db78b10a6e51c9474409338190df7fea1e470fcf9d2efad85abce533 - md5: 0aee9a1135a184211163c192ecc81652 + size: 164701 + timestamp: 1745264384716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + sha256: 65d5ca837c3ee67b9d769125c21dc857194d7f6181bb0e7bd98ae58597b457d0 + md5: 00290e549c5c8a32cc271020acc9ec6b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 constrains: - - abseil-cpp =20250127.0 - - libabseil-static =20250127.0=cxx17* + - abseil-cpp =20250127.1 + - libabseil-static =20250127.1=cxx17* license: Apache-2.0 license_family: Apache purls: [] - size: 1322939 - timestamp: 1741093907243 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.0-cxx17_h0e468a2_0.conda - sha256: 3b48ae53bc79e23ca2711a5ee0108fecd0970f491b1ee0db222f54e190012ccf - md5: f21e8b9b49288f22425221a48026ec8d + size: 1325007 + timestamp: 1742369558286 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + sha256: 8c43a7daa4df04f66d08e6a6cd2f004fc84500bf8c0c75dc9ee633b34c2a01be + md5: b2004ae68003d2ef310b49847b911e4b depends: - __osx >=10.13 - libcxx >=18 constrains: - - abseil-cpp =20250127.0 - - libabseil-static =20250127.0=cxx17* + - libabseil-static =20250127.1=cxx17* + - abseil-cpp =20250127.1 license: Apache-2.0 license_family: Apache purls: [] - size: 1179064 - timestamp: 1741094067702 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.0-cxx17_h07bc746_0.conda - sha256: b8fb5e23e1ec8fd981f05f6812833f3b83a57833470bcc464ac3c812a6b91e3d - md5: fc8e122b60122397da917df25e101c2a + size: 1177855 + timestamp: 1742369859708 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda + sha256: 9884f855bdfd5cddac209df90bdddae8b3a6d8accfd2d3f52bc9db2f9ebb69c9 + md5: 26aabb99a8c2806d8f617fd135f2fc6f depends: - __osx >=11.0 - libcxx >=18 constrains: - - abseil-cpp =20250127.0 - - libabseil-static =20250127.0=cxx17* + - abseil-cpp =20250127.1 + - libabseil-static =20250127.1=cxx17* license: Apache-2.0 license_family: Apache purls: [] - size: 1193042 - timestamp: 1741094304276 + size: 1192962 + timestamp: 1742369814061 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda build_number: 31 sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 @@ -7243,60 +8239,60 @@ packages: purls: [] size: 4519402 timestamp: 1689195353551 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - sha256: 6b2fa3fb1e8cd2000b0ed259e0c4e49cbef7b76890157fac3e494bc659a20330 - md5: 4b8f8dc448d814169dbc58fc7286057d +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda + sha256: a4b493e0f76b20ff14e0f1f93c92882663c4f23c4488d8de3f6bbf1311b9c41e + md5: 022f109787a9624301ddbeb39519ff13 depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 527924 - timestamp: 1736877256721 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 + size: 560376 + timestamp: 1744843903291 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda + sha256: aa45cf608430e713575ef4193e4c0bcdfd7972db51f1c3af2fece26c173f5e67 + md5: 379db9caa727cab4d3a6c4327e4e7053 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db + size: 566462 + timestamp: 1744844034347 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + sha256: 4db2f70a1441317d964e84c268e388110ad9cf75ca98994d1336d670e62e6f07 + md5: 27fe770decaf469a53f3e3a6d593067f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda - sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e - md5: 120f8f7ba6a8defb59f4253447db4bb4 + size: 72783 + timestamp: 1745260463421 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + sha256: 9105bb8656649f9676008f95b0f058d2b8ef598e058190dcae1678d6ebc1f9b3 + md5: 5d3507f22dda24f7d9a79325ad313e44 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 69309 - timestamp: 1734374105905 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 + size: 69911 + timestamp: 1745260530684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + sha256: ebc06154e9a2085e8c9edf81f8f5196b73a1698e18ac6386c9b43fb426103327 + md5: 4dc332b504166d7f89e4b3b18ab5e6ea depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 - md5: a9624935147a25b06013099d3038e467 + size: 54685 + timestamp: 1745260666631 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + sha256: 881244050587dc658078ee45dfc792ecb458bbb1fdc861da67948d747b117dc2 + md5: 34f03138e46543944d4d7f8538048842 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -7304,8 +8300,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 155723 - timestamp: 1734374084110 + size: 155548 + timestamp: 1745260818985 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -7343,89 +8339,91 @@ packages: purls: [] size: 107691 timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505 + md5: db0bfbe7dd197b68ad5f30333bae6ce0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 - md5: 20307f4049a735a78a29073be1be2626 + size: 74427 + timestamp: 1743431794976 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + sha256: 976f2e23ad2bb2b8e92c99bfa2ead3ad557b17a129b170f7e2dfcf233193dd7e + md5: 026d0a1056ba2a3dbbea6d4b08188676 depends: - __osx >=10.13 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 70758 - timestamp: 1730967204736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf + size: 71894 + timestamp: 1743431912423 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + sha256: ee550e44765a7bbcb2a0216c063dcd53ac914a7be5386dd0554bd06e6be61840 + md5: 6934bbb74380e045741eb8637641a65b depends: - __osx >=11.0 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 - md5: eb383771c680aa792feb529eaf9df82f + size: 65714 + timestamp: 1743431789879 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + sha256: 1a227c094a4e06bd54e8c2f3ec40c17ff99dcf3037d812294f842210aa66dbeb + md5: b6f5352fdb525662f4169a0431d2dd7a depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 139068 - timestamp: 1730967442102 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da - md5: e3eb7806380bc8bcecba6d749ad5f026 + size: 140896 + timestamp: 1743432122520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab + md5: ede4673863426c0883c0063d853bbd85 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 53415 - timestamp: 1739260413716 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda - sha256: 7805fdc536a3da7fb63dc48e040105cd4260c69a1d2bf5804dadd31bde8bab51 - md5: b8667b0d0400b8dcb6844d8e06b2027d + size: 57433 + timestamp: 1743434498161 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3 + md5: 4ca9ea59839a9ca8df84170fab4ceb41 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 47258 - timestamp: 1739260651925 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 + size: 51216 + timestamp: 1743434595269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 + md5: c215a60c2935b517dcda8cad4705734d + depends: + - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda - sha256: 77922d8dd2faf88ac6accaeebf06409d1820486fde710cff6b554d12273e46be - md5: 31d5107f75b2f204937728417e2e39e5 + size: 39839 + timestamp: 1743434670405 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 + md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -7433,8 +8431,99 @@ packages: license: MIT license_family: MIT purls: [] - size: 40830 - timestamp: 1739260917585 + size: 44978 + timestamp: 1743435053850 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + sha256: 7be9b3dac469fe3c6146ff24398b685804dfc7a1de37607b84abd076f57cc115 + md5: 51f5be229d83ecd401fb369ab96ae669 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 7693 + timestamp: 1745369988361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + sha256: afe0e2396844c8cfdd6256ac84cabc9af823b1727f704c137b030b85839537a6 + md5: 07c8d3fbbe907f32014b121834b36dd5 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 7805 + timestamp: 1745370212559 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + sha256: 1f8c16703fe333cdc2639f7cdaf677ac2120843453222944a7c6c85ec342903c + md5: d06282e08e55b752627a707d58779b8f + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 7813 + timestamp: 1745370144506 +- conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + sha256: e5bc7d0a8d11b7b234da4fcd9d78f297f7dec3fec8bd06108fd3ac7b2722e32e + md5: 410ba2c8e7bdb278dfbb5d40220e39d2 + depends: + - libfreetype6 >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 8159 + timestamp: 1745370227235 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + sha256: 7759bd5c31efe5fbc36a7a1f8ca5244c2eabdbeb8fc1bee4b99cf989f35c7d81 + md5: 3c255be50a506c50765a93a6644f32fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 380134 + timestamp: 1745369987697 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + sha256: 058165962aa64fc5a6955593212c0e1ea42ca6d6dba60ee61dff612d4c3818d7 + md5: c76e6f421a0e95c282142f820835e186 + depends: + - __osx >=10.13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 357654 + timestamp: 1745370210187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + sha256: c278df049b1a071841aa0aca140a338d087ea594e07dcf8a871d2cfe0e330e75 + md5: b163d446c55872ef60530231879908b9 + depends: + - __osx >=11.0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 333529 + timestamp: 1745370142848 +- conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + sha256: 61308653e7758ff36f80a60d598054168a1389ddfbac46d7864c415fafe18e69 + md5: a84b7d1a13060a9372bea961a8131dbc + depends: + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - freetype >=2.13.3 + license: GPL-2.0-only OR FTL + purls: [] + size: 337007 + timestamp: 1745370226578 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 md5: ef504d1acbd74b7cc6849ef8af47dd03 @@ -7572,26 +8661,36 @@ packages: purls: [] size: 53733 timestamp: 1740240690977 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d - md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e + md5: 090b3c9ae1282c8f9b394ac9e4773b10 depends: - - libgfortran5 13.2.0 h2873a65_3 + - libgfortran5 14.2.0 h51e75f0_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 110106 - timestamp: 1707328956438 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf + size: 156202 + timestamp: 1743862427451 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 + md5: ad35937216e65cfeecd828979ee5e9e6 depends: - - libgfortran5 13.2.0 hf226fd6_3 + - libgfortran5 14.2.0 h2c44a93_105 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 110233 - timestamp: 1707330749033 + size: 155474 + timestamp: 1743913530958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 + md5: 044a210bc1d5b8367857755665157413 + depends: + - libgfortran5 14.2.0 h6c33f7e_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 156291 + timestamp: 1743863532821 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c md5: 556a4fdfac7287d349b8f09aba899693 @@ -7605,84 +8704,96 @@ packages: purls: [] size: 1461978 timestamp: 1740240671964 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b - md5: e4fb4d23ec2870ff3c40d10afe305aec +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 + md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 14_2_0_*_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1225013 + timestamp: 1743862382377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 + md5: 06f35a3b1479ec55036e1c9872f97f2c depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1571379 - timestamp: 1707328880361 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea + size: 806283 + timestamp: 1743913488925 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 + md5: 69806c1e957069f1d515830dcc9f6cbb depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 5.0.0 14_2_0_*_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 997381 - timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 - md5: 37d1af619d999ee8f1f73cf5a06f4e2f + size: 806566 + timestamp: 1743863491726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda + sha256: 18e354d30a60441b0bf5fcbb125b6b22fd0df179620ae834e2533d44d1598211 + md5: 0305434da649d4fb48a425e588b79ea6 depends: - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_1 + - glib 2.84.1 *_0 license: LGPL-2.1-or-later purls: [] - size: 3923974 - timestamp: 1737037491054 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-h5c976ab_1.conda - sha256: 78fab559eefc52856331462304a4c55c054fa8f0b0feb31ff5496d06c08342ba - md5: 05e05255a2e9c5e9c1b6322d84b4999b + size: 3947789 + timestamp: 1743773764878 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + sha256: 6345cb63429ca1d216e47502a04dcce8b9f8a4fe08547cef42bbc040dc453b9e + md5: 9d9e772b8e01ce350ddff9b277503514 depends: - __osx >=10.13 - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 + - libiconv >=1.18,<2.0a0 + - libintl >=0.23.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_1 + - glib 2.84.0 *_0 license: LGPL-2.1-or-later purls: [] - size: 3716906 - timestamp: 1737037999440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda - sha256: d002aeaa51424e331f8504a54b6ba4388a6011a0ebcac29296f3d14282bf733b - md5: 849da57c370384ce48bef2e050488882 + size: 3729801 + timestamp: 1743038946054 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + sha256: 70a414faef075e11e7a51861e9e9c953d8373b0089070f98136a7578d8cda67e + md5: 86bdf23c648be3498294c4ab861e7090 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 + - libiconv >=1.18,<2.0a0 + - libintl >=0.23.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_1 + - glib 2.84.0 *_0 license: LGPL-2.1-or-later purls: [] - size: 3643364 - timestamp: 1737037789629 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda - sha256: 77c4e6af9cc4e966a5100f48378ea3fb4ab7ed913f24af9217cc3a43242d65d5 - md5: 40596e78a77327f271acea904efdc911 + size: 3698518 + timestamp: 1743039055882 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda + sha256: 75a35a0134c7b2f3f41dbf24faa417be6a98a70db23dc1225b0c74ea45c0ce61 + md5: 6cbaea9075a4f007eb7d0a90bb9a2a09 depends: - - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libiconv >=1.18,<2.0a0 - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 @@ -7690,11 +8801,11 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.82.2 *_1 + - glib 2.84.1 *_0 license: LGPL-2.1-or-later purls: [] - size: 3783933 - timestamp: 1737038122172 + size: 3806534 + timestamp: 1743774256525 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e md5: 06d02030237f4d5b3d9a7e7d348fe3c6 @@ -7717,76 +8828,76 @@ packages: purls: [] size: 524548 timestamp: 1740240660967 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-he753a82_0.conda - sha256: bd8686a8aa0f840e7a7e63b3be57200d36c136cf1c6280b44a98b89ffac06186 - md5: 65e3fc5e73aa153bb069c1baec51fc12 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda + sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 + md5: c3cfd72cbb14113abee7bbd86f44ad69 depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 + - c-ares >=1.34.5,<2.0a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libgcc >=13 - libprotobuf >=5.29.3,<5.29.4.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - re2 constrains: - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 8228423 - timestamp: 1741431701085 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h53c9a1c_0.conda - sha256: 966ba2eb5ccd871d8ac5fd8ad60edf63bc4d063fa81a1cf88b1edb748481ec9a - md5: a216708030647d270390de778510e6c9 + size: 7920187 + timestamp: 1745229332239 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda + sha256: 304649f99f6cde43cf4fb95cc2892b5955aa31bf3d8b74f707a8ca1347c06b88 + md5: 460e0c0ac50927c2974e41aab9272c6b depends: - __osx >=10.14 - - c-ares >=1.34.4,<2.0a0 + - c-ares >=1.34.5,<2.0a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libprotobuf >=5.29.3,<5.29.4.0a0 - libre2-11 >=2024.7.2 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - re2 constrains: - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 5280478 - timestamp: 1741432715289 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-hf667ad3_0.conda - sha256: c10eeef0a1152452fbda7299ca1dfb41e9435aa3a7fee9d169cbceb27b109fb6 - md5: 4c0d9b0ade1b4e01ee5a37c00cdb538d + size: 5510897 + timestamp: 1745201273719 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda + sha256: 082668830025c2a2842165724b44d4f742688353932a6705cd61aa4ecb9aa173 + md5: 59fe16787c94d3dc92f2dfa533de97c6 depends: - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 + - c-ares >=1.34.5,<2.0a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libprotobuf >=5.29.3,<5.29.4.0a0 - libre2-11 >=2024.7.2 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - re2 constrains: - grpc-cpp =1.71.0 license: Apache-2.0 license_family: APACHE purls: [] - size: 5210004 - timestamp: 1741422151125 + size: 4908484 + timestamp: 1745191611284 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 md5: b87a0ac5ab6495d8225db5dc72dd21cd depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca - - libxml2 >=2.13.4,<3.0a0 + - libxml2 >=2.13.4,<2.14.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -7863,38 +8974,43 @@ packages: purls: [] size: 95568 timestamp: 1723629479451 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + sha256: 98b399287e27768bf79d48faba8a99a2289748c65cd342ca21033fab1860d4a4 + md5: 9fa334557db9f63da6c9285fd2a48638 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f - md5: 72507f8e3961bc968af17435060b6dd6 + size: 628947 + timestamp: 1745268527144 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + sha256: 9c0009389c1439ec96a08e3bf7731ac6f0eab794e0a133096556a9ae10be9c27 + md5: 87537967e6de2f885a9fcebd42b7cb10 + depends: + - __osx >=10.13 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - size: 579748 - timestamp: 1694475265912 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + size: 586456 + timestamp: 1745268522731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + sha256: 78df2574fa6aa5b6f5fc367c03192f8ddf8e27dc23641468d54e031ff560b9d4 + md5: 01caa4fbcaf0e6b08b3aef1151e91745 + depends: + - __osx >=11.0 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff - md5: 3f1b948619c45b1ca714d60c7389092c + size: 553624 + timestamp: 1745268405713 +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + sha256: e61b0adef3028b51251124e43eb6edf724c67c0f6736f1628b02511480ac354e + md5: 7c51d27540389de84852daa1cdb9c63c depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -7903,8 +9019,8 @@ packages: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - size: 822966 - timestamp: 1694475223854 + size: 838154 + timestamp: 1745268437136 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -7965,45 +9081,45 @@ packages: purls: [] size: 3732648 timestamp: 1740088548986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + sha256: f4f21dfc54b08d462f707b771ecce3fa9bc702a2a05b55654f64154f48b141ef + md5: 0e87378639676987af32fee53ba32258 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: 0BSD purls: [] - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - sha256: a895b5b16468a6ed436f022d72ee52a657f9b58214b91fabfab6230e3592a6dd - md5: db9d7b0152613f097cdb61ccf9f70ef5 + size: 112709 + timestamp: 1743771086123 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + sha256: 3369b8ef0b544d17aebc530a687c0480051e825e8ffcd001b1a5f594fe276159 + md5: 8e1197f652c67e87a9ece738d82cef4f depends: - __osx >=10.13 license: 0BSD purls: [] - size: 103749 - timestamp: 1738525448522 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 + size: 104689 + timestamp: 1743771137842 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + sha256: 4291dde55ebe9868491dc29716b84ac3de21b8084cbd4d05c9eea79d206b8ab7 + md5: ba24e6f25225fea3d5b6912e2ac562f8 depends: - __osx >=11.0 license: 0BSD purls: [] - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - sha256: 3f552b0bdefdd1459ffc827ea3bf70a6a6920c7879d22b6bfd0d73015b55227b - md5: c48f6ad0ef0a555b27b233dfcab46a90 + size: 92295 + timestamp: 1743771392206 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + sha256: 1477e9bff05318f3129d37be0e64c76cce0973c4b8c73d13a467d0b7f03d157c + md5: 8d5cb0016b645d6688e2ff57c5d51302 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: 0BSD purls: [] - size: 104465 - timestamp: 1738525557254 + size: 104682 + timestamp: 1743771561515 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -8049,7 +9165,7 @@ packages: md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: @@ -8090,9 +9206,9 @@ packages: purls: [] size: 259332 timestamp: 1739953032676 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - sha256: cf8a594b697de103025dcae2c917ec9c100609caf7c917a94c64a683cb1db1ac - md5: 7d717163d9dab337c65f2bf21a676b8f +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 + md5: ad620e92b82d2948bc019e029c574ebb depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -8100,51 +9216,51 @@ packages: - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 346101 - timestamp: 1739953426806 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_0.conda - sha256: 9965b1ada1f997202ad8c5a960e69057280b7b926c718df9b07c62924d9c1d73 - md5: 452518a9744fbac05fb45531979bdf29 + size: 346511 + timestamp: 1745771984515 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda + sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf + md5: edb86556cf4a0c133e7932a1597ff236 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 3352450 - timestamp: 1741126291267 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_0.conda - sha256: 7e863ceaade6c466c2f2adf8a1c21b0c8e2181c7ab1cf407e58325c1a122d613 - md5: c4295aae4cc8918f85c574800267cde9 + size: 3358788 + timestamp: 1745159546868 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda + sha256: cc4dd61aa257c4b4a9451ddf9a5148e4640fea0df416737c1086724ca09641f6 + md5: 7c7d8218221568e544986713881d36ee depends: - __osx >=10.14 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 2666126 - timestamp: 1741126025811 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_0.conda - sha256: 49d424913d018f3849c4153088889cb5ac4a37e5acedc35336b78c8a8450f764 - md5: 243704f59b7c09aab5b3070538026c92 + size: 2840883 + timestamp: 1745159228883 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda + sha256: 6e5b49bfa09bfc1aa0d69113be435d40ace0d01592b7b22cac696928cee6be03 + md5: f7951fdf76556f91bc146384ede7de40 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 2630681 - timestamp: 1741125634671 + size: 2613087 + timestamp: 1745158781377 - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668 md5: 545e93a513c10603327c76c15485e946 @@ -8191,58 +9307,58 @@ packages: purls: [] size: 167268 timestamp: 1741121355716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda - sha256: 475013475a3209c24a82f9e80c545d56ccca2fa04df85952852f3d73caa38ff9 - md5: b9846db0abffb09847e2cb0fec4b4db6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 + md5: d27665b20bc4d074b86e628b3ba5ab8b depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=10.1.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libgcc >=13 - - libglib >=2.82.2,<3.0a0 - - libpng >=1.6.44,<1.7.0a0 - - libxml2 >=2.13.5,<3.0a0 - - pango >=1.54.0,<2.0a0 + - libglib >=2.84.0,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 constrains: - __glibc >=2.17 license: LGPL-2.1-or-later purls: [] - size: 6342757 - timestamp: 1734902068235 -- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda - sha256: 482cde0a3828935edc31c529e15c2686425f64b07a7e52551b6ed672360f2a15 - md5: 0aa68f5a6ebfd2254daae40170439f03 + size: 6543651 + timestamp: 1743368725313 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + sha256: 87432fca28ddfaaf82b3cd12ce4e31fcd963428d1f2c5e2a3aef35dd30e56b71 + md5: 213dcdb373bf108d1beb18d33075f51d depends: - __osx >=10.13 - - cairo >=1.18.2,<2.0a0 + - cairo >=1.18.4,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.82.2,<3.0a0 - - libxml2 >=2.13.5,<3.0a0 - - pango >=1.54.0,<2.0a0 + - libglib >=2.84.0,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 constrains: - __osx >=10.13 license: LGPL-2.1-or-later purls: [] - size: 4841346 - timestamp: 1734902391160 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda - sha256: c1ef2c5855166001967952d7525aa2f29707214495c74c2bbb60e691aee45ef0 - md5: 82c31ce77bac095b5700b1fdaad9a628 + size: 4946543 + timestamp: 1743368938616 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + sha256: 0ec066d7f22bcd9acb6ca48b2e6a15e9be4f94e67cb55b0a2c05a37ac13f9315 + md5: 95d6ad8fb7a2542679c08ce52fafbb6c depends: - __osx >=11.0 - - cairo >=1.18.2,<2.0a0 + - cairo >=1.18.4,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.82.2,<3.0a0 - - libxml2 >=2.13.5,<3.0a0 - - pango >=1.54.0,<2.0a0 + - libglib >=2.84.0,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 constrains: - __osx >=11.0 license: LGPL-2.1-or-later purls: [] - size: 4728552 - timestamp: 1734903448902 + size: 4607782 + timestamp: 1743369546790 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -8344,75 +9460,75 @@ packages: purls: [] size: 53830 timestamp: 1740240722530 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + sha256: 7480613af15795281bd338a4d3d2ca148f9c2ecafc967b9cc233e78ba2fe4a6d + md5: 6c1028898cf3a2032d9af46689e1b81a depends: - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 - md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 + size: 429381 + timestamp: 1745372713285 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + sha256: 2bf372fb7da33a25b3c555e2f40ffab5f6b1f2a01a0c14a0a3b2f4eaa372564d + md5: b36d793dd65b28e3aeaa3a77abe71678 depends: - __osx >=10.13 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 400099 - timestamp: 1734398943635 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 + size: 400931 + timestamp: 1745372828096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + sha256: 5d3f7a71b70f0d88470eda8e7b6afe3095d66708a70fb912e79d56fc30b35429 + md5: 717e02c4cca2a760438384d48b7cd1b9 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda - sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768 - md5: defed79ff7a9164ad40320e3f116a138 + size: 370898 + timestamp: 1745372834516 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + sha256: 3456e2a6dfe6c00fd0cda316f0cbb47caddf77f83d3ed4040b6ad17ec1610d2a + md5: 7d938ca70c64c5516767b4eae0a56172 depends: - lerc >=4.0.0,<5.0a0 - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 978878 - timestamp: 1734399004259 + size: 980597 + timestamp: 1745373037447 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -8524,68 +9640,68 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb - md5: e7e5b0652227d646b44abdcbd989da7b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda + sha256: e14b284ec7fe85522c81de383dd499bcd41cafb40442b795c3509e7c2c43c587 + md5: 14fbc598b68d4c6386978f7db09fc5ed depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.13.6,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 - xkeyboard-config - xorg-libxau >=1.0.12,<2.0a0 license: MIT/X11 Derivative license_family: MIT purls: [] - size: 644992 - timestamp: 1741762262672 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 - md5: 328382c0e0ca648e5c189d5ec336c604 + size: 673170 + timestamp: 1745716284939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + sha256: 01c471d9912c482297fd8e83afc193101ff4504c72361b6aec6d07f2fa379263 + md5: ad1f1f8238834cd3c88ceeaee8da444a depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 690296 - timestamp: 1739952967309 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-hebb159f_0.conda - sha256: 3962cce8158ce6ebb9239fe58bbc1ce49b0ac4997827e932e70dd6e4ab335c40 - md5: f27851d50ccddf3c3234dd0efc78fdbd + size: 692101 + timestamp: 1743794568181 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + sha256: f65c22d825ae7674dd5d1906052a6046cf50eebd1d5f03d6145a6b41c0d305b5 + md5: ac5c809731d4412fd1ccff49fae27c72 depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 609155 - timestamp: 1739953148585 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-h178c5d8_0.conda - sha256: 1d2ebce1a16db1017e3892a67cb7ced4aa2858f549dba6852a60d02a4925c205 - md5: 277864577d514bea4b30f8a9335b8d26 + size: 609618 + timestamp: 1743794752414 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + sha256: 7afd5879a72e37f44a68b4af3e03f37fc1a310f041bf31fad2461d9a157e823b + md5: 522fcdaebf3bac06a7b5a78e0a89195b depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 583389 - timestamp: 1739953062282 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - sha256: 2919f4e9fffefbf3ff6ecd8ebe81584d573c069b2b82eaeed797b1f56ac8d97b - md5: c66d5bece33033a9c028bbdf1e627ec5 + size: 583561 + timestamp: 1743794674233 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + sha256: 0a013527f784f4702dc18460070d8ec79d1ebb5087dd9e678d6afbeaca68d2ac + md5: c14ff7f05e57489df9244917d2b55763 depends: - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -8595,8 +9711,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1669569 - timestamp: 1739953461426 + size: 1513740 + timestamp: 1743795035107 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -8648,30 +9764,30 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda - sha256: b5b06821b0d4143f66ba652ffe6f535696dc3a4096175d9be8b19b1a7350c86d - md5: 65d08c50518999e69f421838c1d5b91f +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + sha256: deaba16df3fd04910255188dfbd2924d07476375a2e75472859b3c6a9fabd60b + md5: 16b29a91c8177de8910477ded0f80191 depends: - __osx >=10.13 constrains: - - openmp 19.1.7|19.1.7.* + - openmp 20.1.3|20.1.3.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 304885 - timestamp: 1736986327031 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d + size: 306693 + timestamp: 1744934078427 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + sha256: daddebd6ebf2960bb3bae945230ed07b254f430642c739c00ebfb4a8c747a033 + md5: 9f2cc154dd184ff808c2c6afd21cb12c depends: - __osx >=11.0 constrains: - - openmp 19.1.7|19.1.7.* + - openmp 20.1.3|20.1.3.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 280830 - timestamp: 1736986295869 + size: 282301 + timestamp: 1744934108744 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -8812,18 +9928,19 @@ packages: - pkg:pypi/matplotlib-inline?source=hash-mapping size: 14467 timestamp: 1733417051523 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 - md5: 0982b0f06168fe3421d09f70596ca1f0 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: 7ec6576e328bc128f4982cd646eeba85 depends: - python >=3.9 - typing_extensions + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/mistune?source=compressed-mapping - size: 68903 - timestamp: 1739952304731 + - pkg:pypi/mistune?source=hash-mapping + size: 72749 + timestamp: 1742402716323 - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd md5: 302dff2807f2927b3e9e0d19d60121de @@ -8895,153 +10012,67 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 200130 timestamp: 1736539205286 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py311h9ecbd09_0.conda - sha256: 5bed33e02328bc0b3fbbf39c201c297ad6051d4d2c72415f2fdb9b7152279185 - md5: 51d9f9d088f232de3648ddefd559cddc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 18359703 - timestamp: 1738768552907 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 - md5: a84061bc7e166712deb33bf7b32f756d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=compressed-mapping - size: 18664849 - timestamp: 1738767977895 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py311h4d7f069_0.conda - sha256: 94ff2be54745d42d9429fa06594c9c66e563e1d818d4979ec9fcede2448f4be2 - md5: 8a0036307a3c2356b95c76e0360e2b4f - depends: - - __osx >=10.13 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 12315897 - timestamp: 1738768112915 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda - sha256: 38132c4b5de6686965f21b51a1656438e83b2a53d6f50e9589e73fb57a43dd49 - md5: 0251bb4d6702b729b06fd5c7918e9242 - depends: - - __osx >=10.13 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 12384787 - timestamp: 1738768017667 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py311h917b07b_0.conda - sha256: 7ed54f9988070ce12de61c9f0a7d1fa9c4d7933b847e16b2efebd5360e069559 - md5: 4983e0d4dbeeca83f255938ff92cd8cb - depends: - - __osx >=11.0 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - - python_abi 3.11.* *_cp311 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 9779580 - timestamp: 1738768242703 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py312hea69d52_0.conda - sha256: 7284d77173d385f5c7456c13d825dbae170920a31ca7a0996d2608ad17f17e2f - md5: 909034322685579577b1bbb9b47e39e1 - depends: - - __osx >=11.0 - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing_extensions >=4.1.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 10149670 - timestamp: 1738768707592 -- conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py311he736701_0.conda - sha256: 5142b091f218599b44ab662ec687d8eacfc880fa40a90116d4ed14232ae60bc9 - md5: 8ae5328f0a002251430cb38684efb7fd - depends: - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - - typing_extensions >=4.1.0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 10113574 - timestamp: 1738767838546 -- conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.15.0-py312h4389bb4_0.conda - sha256: 3bab35d2f17f9b2c8498c952f7d182848f2d70775e7e970d5f53c7eeb87741a6 - md5: 1eea4f4c0038b6f9b399dfad2305cd6f - depends: - - mypy_extensions >=1.0.0 - - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing_extensions >=4.1.0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy?source=hash-mapping - size: 9852020 - timestamp: 1738768035931 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe - md5: 29097e7ea634a45cc5386b95cac6568f - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/mypy-extensions?source=hash-mapping - size: 10854 - timestamp: 1733230986902 +- pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl + name: mypy + version: 1.15.0 + sha256: 171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22 + requires_dist: + - typing-extensions>=4.6.0 + - mypy-extensions>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl + name: mypy + version: 1.15.0 + sha256: aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd + requires_dist: + - typing-extensions>=4.6.0 + - mypy-extensions>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + name: mypy + version: 1.15.0 + sha256: 8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee + requires_dist: + - typing-extensions>=4.6.0 + - mypy-extensions>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl + name: mypy + version: 1.15.0 + sha256: 2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f + requires_dist: + - typing-extensions>=4.6.0 + - mypy-extensions>=1.0.0 + - tomli>=1.1.0 ; python_full_version < '3.11' + - psutil>=4.0 ; extra == 'dmypy' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + - pip ; extra == 'install-types' + - orjson ; extra == 'faster-cache' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + name: mypy-extensions + version: 1.1.0 + sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c @@ -9216,9 +10247,9 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py311h5d046bc_0.conda - sha256: 4ff5f5ab2e0205d712fdc8b2950a2a4b2a063c47d0c9b08f7ea71ae246e47ac1 - md5: 16ad2b996ea8064e0a7cb8b392d924fd +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py311h5d046bc_0.conda + sha256: 66988aa1a624f7fab4f8c5ccb1b848ee52d9d36dd8eb8b3d0149657316ee53f9 + md5: df82417acd53257028de5425047ebc22 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -9233,12 +10264,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 9005152 - timestamp: 1742255389691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.4-py312h72c5963_0.conda - sha256: 47b3b2ae21efb227db7410f2701291cf47d816fd96461bdede415d7d75d8a436 - md5: 3f2871f111d8c0abd9c3150a8627507e + - pkg:pypi/numpy?source=hash-mapping + size: 9054544 + timestamp: 1745119332553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda + sha256: af293ba6f715983f71543ed0111e6bb77423d409c1d13062474601257c2eebca + md5: 505bcfc142b97010c162863c38d90016 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -9253,12 +10284,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 8424727 - timestamp: 1742255434709 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py311h27c81cd_0.conda - sha256: 9a6a463e5dc101a5bd80e1684a3d51b2f12cc6fd3dd353fb8b976826b72c5171 - md5: 8cc792914f85f8a0f52eb010e1bc2841 + - pkg:pypi/numpy?source=hash-mapping + size: 8543883 + timestamp: 1745119461819 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py311h27c81cd_0.conda + sha256: 3700f5b01d236dd86b770c7ff54d3c587f5d117ca60f7d17b8b82067fcc6b4f6 + md5: 5164212554b8d50a535db11621a08d54 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -9273,11 +10304,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8221057 - timestamp: 1742255647365 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.4-py312h6693b03_0.conda - sha256: 21fe25afa23299c02b88114f1f774d124d4b52517f6b275359c281ac06f0996e - md5: 5ac6821ebd39e56eb3e32149340ab51c + size: 8207720 + timestamp: 1745119282736 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda + sha256: ac2c9e186d39087e4515999b0e42d1f7e83c22743e8aab183c3675fd972d7d34 + md5: db10cfa34ff7aa01cb6d0cf03c872f09 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -9292,11 +10323,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7565004 - timestamp: 1742255412208 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py311h762c074_0.conda - sha256: 87c8b96560398a4f39dab87dee3c4aab3e7296744302dab2915c223094c0159d - md5: 602a97eb615fcf5c7d94da0282a35bb5 + size: 7635087 + timestamp: 1745119684441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py311h762c074_0.conda + sha256: 9e5c2e6b603bd4e165760bc354e33bd7b3551096bf0e93499637fc7229081cd3 + md5: fae31abeb9224e4a29b5e09bd3a9246d depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -9312,11 +10343,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7112931 - timestamp: 1742255398013 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.4-py312h7c1f314_0.conda - sha256: 68eafd2b7beca8467fe84a8a03767680be686d601a0771d3414c7019f3302ee0 - md5: 001a57e8f4cc0c12841d341b94ef8787 + size: 7152823 + timestamp: 1745119359025 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda + sha256: 982aed7df71ae0ca8bc396ae25d43fd9a4f2b15d18faca15d6c27e9efb3955be + md5: 24a41dacf9d624b069d54a6e92594540 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -9331,12 +10362,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 6559671 - timestamp: 1742255398662 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py311h5e411d1_0.conda - sha256: 02d9b03a27c932c8409f2670b0fc0003d1c2d153c61950f72f3a45e9ab24bf86 - md5: 3c1ffee6e6824f3281335dd3b48fab9d + - pkg:pypi/numpy?source=hash-mapping + size: 6498553 + timestamp: 1745119367238 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py311h5e411d1_0.conda + sha256: 4e2efa4ebd9de0b17d6ed4286af26bfebdf093d78b5c71c67b00614a5d7cd239 + md5: 5344f61c044719da0e95abb7d0a23c7b depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -9351,12 +10382,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 7812453 - timestamp: 1742255882246 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.4-py312h3150e54_0.conda - sha256: 477bd925070dd7122c3d2d8be57e06338f1e946c403a1044908aaf68a5e27cdf - md5: e668b8543944b4d80aaa9c904f3821ee + - pkg:pypi/numpy?source=hash-mapping + size: 7723082 + timestamp: 1745119890450 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda + sha256: c497607b3e7e0946b8a2566b6587152c7cb376625559addbf606494f5bbe41dd + md5: 00c3b00c9091b7f76faba85795350c7e depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -9371,9 +10402,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 7058478 - timestamp: 1742255793694 + - pkg:pypi/numpy?source=hash-mapping + size: 7132354 + timestamp: 1745119803660 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda sha256: bc453d60a0eff86f500a0c114fe3996543731b019e5998e664347d2ab52ee880 md5: 7ec5afe3dc4c585abd49bb40edc96428 @@ -9514,9 +10545,9 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 627490 timestamp: 1725461370219 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f - md5: 41adf927e746dc75ecf0ef841c454e48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + sha256: 38285d280f84f1755b7c54baf17eccf2e3e696287954ce0adca16546b85ee62c + md5: bb539841f2a3fde210f387d00ed4bb9d depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -9524,33 +10555,33 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 2939306 - timestamp: 1739301879343 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - sha256: 505a46671dab5d66df8e684f99a9ae735a607816b12810b572d63caa512224df - md5: a7d63f8e7ab23f71327ea6d27e2d5eae + size: 3121673 + timestamp: 1744132167438 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + sha256: 7ee137b67f2de89d203e5ac2ebffd6d42252700005bf6af2bbf3dc11a9dfedbd + md5: e06e13c34056b6334a7a1188b0f4c83c depends: - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2591479 - timestamp: 1739302628009 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a - md5: 75f9f0c7b1740017e2db83a53ab9a28e + size: 2737547 + timestamp: 1744140967264 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + sha256: 53f825acb8d3e13bdad5c869f6dc7df931941450eea7f6473b955b0aaea1a399 + md5: 3d2936da7e240d24c656138e07fa2502 depends: - __osx >=11.0 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2934522 - timestamp: 1739301896733 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - sha256: 56dcc2b4430bfc1724e32661c34b71ae33a23a14149866fc5645361cfd3b3a6a - md5: 0730f8094f7088592594f9bf3ae62b3f + size: 3067649 + timestamp: 1744132084304 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + sha256: 43dd7f56da142ca83c614c8b0085589650ae9032b351a901c190e48eefc73675 + md5: 4ea7db75035eb8c13fa680bb90171e08 depends: - ca-certificates - ucrt >=10.0.20348.0 @@ -9559,8 +10590,8 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 8515197 - timestamp: 1739304103653 + size: 8999138 + timestamp: 1744135594688 - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl name: opt-einsum version: 3.4.0 @@ -9577,10 +10608,10 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62479 timestamp: 1733688053334 -- pypi: https://files.pythonhosted.org/packages/03/e6/364a2f4ba171ddc1dfa2df99ae22ac096cf2a138b6cbda0f991873ad863b/optree-0.14.1-cp311-cp311-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl name: optree - version: 0.14.1 - sha256: f8d30a910abf44b42be40d54acddacb7750085e3499438f6b0e1811da0c7d6b2 + version: 0.15.0 + sha256: def5b08f219c31edd029b47624e689ffa07747b0694222156f28a28d341d29ac requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9589,14 +10620,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9604,6 +10628,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9623,10 +10648,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/0a/c0/f08836fde5bd223029ff38ae878b8017ee7468e25df7c70ab042ba723936/optree-0.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl name: optree - version: 0.14.1 - sha256: 34a4b35334e8323d4bd4d82a85440df3146be771fb91b9eaa599d23a791b8b5f + version: 0.15.0 + sha256: ba2eee9de9d57e145b4c1a71749f7f8b8fe1c645abbb306d4a26cfa45a9cdbb5 requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9635,14 +10660,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9650,6 +10668,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9669,10 +10688,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/31/51/7e26de583120a1cdded7a705fe09b4507752ab189132a95917bdd6ffd42f/optree-0.14.1-cp311-cp311-macosx_10_9_universal2.whl +- pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.14.1 - sha256: 904d6a0a8527e9b99f789e6beb9e70976ca0c9fa2afc140c293feebe435e3a0c + version: 0.15.0 + sha256: 01a0dc75c594c884d0ca502b8d169cec538e19a70883d2e5f5b9b08fce740958 requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9681,14 +10700,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9696,6 +10708,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9715,10 +10728,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/3d/b5/b1873bfec89b3efb1339c2041d7cb5dfd5c63ca4d3ebbe3953bc0ab77d5e/optree-0.14.1-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl name: optree - version: 0.14.1 - sha256: cce91c10c51a1ab3cc2311deebb33bc9e52de832b0cfeca80c82f82b95d55eda + version: 0.15.0 + sha256: f8d58949ef132beb3a025ace512a71a0fcf92e0e5ef350f289f33a782ae6cb85 requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9727,14 +10740,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9742,6 +10748,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9761,10 +10768,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/5d/fa/c1dc4f40a83f5df6c16cc3ff89890712dd95caf320641f635ddbe5a11102/optree-0.14.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl name: optree - version: 0.14.1 - sha256: 98f858daa588ccb70bb554087e87d4192852a11416e5b14f3ee70ae1861b92b0 + version: 0.15.0 + sha256: 4aad5023686cd7caad68d70ad3706b82cfe9ae8ff9a13c08c1edef2a9b4c9d72 requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9773,14 +10780,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9788,6 +10788,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9807,10 +10808,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/6a/ba/7950d79a086a5a630a35d891628cb0a5d2b1d195c1654affd4bb3d2e9be4/optree-0.14.1-cp312-cp312-macosx_10_13_universal2.whl +- pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.14.1 - sha256: 6fd1e3cb4c04c83fd3ab8ed6729a13388f2c055c6a0b16624c76e7c0d86a8dae + version: 0.15.0 + sha256: a1f185b0d21bc4dda1f4fd03f5ba9e2bc9d28ca14bce3ce3d36b5817140a345e requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9819,14 +10820,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9834,6 +10828,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9853,10 +10848,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/9b/09/3a34565775cd02cfbe265c7a80d065ff0a62d6d38b808280c3c06c2699e0/optree-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl name: optree - version: 0.14.1 - sha256: 5121b0418c4360dcbccbf2de346507008cf2264880aa13dace88c481ad576af7 + version: 0.15.0 + sha256: d6525d6a550a1030957e5205e57a415d608a9f7561154e0fb29670e967424578 requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9865,14 +10860,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9880,6 +10868,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9899,10 +10888,10 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/eb/e8/f4d63cf25f1b46d9fc9b005aff28e613b2cf347e6bf41110cc4b77a98a00/optree-0.14.1-cp311-cp311-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl name: optree - version: 0.14.1 - sha256: 592858203b2c50b0816cbae056d8295ffad7c16ad95ccc221b881c794ef4519b + version: 0.15.0 + sha256: c15d98e6f587badb9df67d67fa914fcfa0b63db2db270951915c563816c29f3d requires_dist: - typing-extensions>=4.5.0 - jax ; extra == 'jax' @@ -9911,14 +10900,7 @@ packages: - ruff ; extra == 'lint' - pylint[spelling] ; extra == 'lint' - mypy ; extra == 'lint' - - flake8 ; extra == 'lint' - - flake8-bugbear ; extra == 'lint' - - flake8-comprehensions ; extra == 'lint' - - flake8-docstrings ; extra == 'lint' - - flake8-pyi ; extra == 'lint' - - flake8-simplify ; extra == 'lint' - doc8 ; extra == 'lint' - - pydocstyle ; extra == 'lint' - pyenchant ; extra == 'lint' - xdoctest ; extra == 'lint' - cpplint ; extra == 'lint' @@ -9926,6 +10908,7 @@ packages: - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-xdist ; extra == 'test' + - covdefaults ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -9957,20 +10940,21 @@ packages: - pkg:pypi/overrides?source=hash-mapping size: 30139 timestamp: 1734587755455 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 - md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 + md5: 58335b26c38bf4a20f399384c33cbcf9 depends: - python >=3.8 + - python license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/packaging?source=hash-mapping - size: 60164 - timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - sha256: dce121d3838996b77b810ca9097cc17068552075c761408a9b2eb788cf8fd1b0 - md5: 643f8cb35133eb1be4919fb953f0a25f + - pkg:pypi/packaging?source=compressed-mapping + size: 62477 + timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda + sha256: 98cd49bfc4b803d950f9dbc4799793903aec1eaacd388c244a0b46d644159831 + md5: c9f8fe78840d5c04e61666474bd739b2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9978,19 +10962,51 @@ packages: - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.11,<3.12.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - odfpy >=1.4.1 + - numba >=0.56.4 + - qtpy >=2.3.0 + - pyarrow >=10.0.1 + - matplotlib >=3.6.3 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - lxml >=4.9.2 + - bottleneck >=1.3.6 + - tabulate >=0.9.0 + - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - sqlalchemy >=2.0.0 + - xlrd >=2.0.1 + - fastparquet >=2022.12.0 + - numexpr >=2.8.4 + - pyqt5 >=5.15.9 + - pytables >=3.8.0 + - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - html5lib >=1.1 + - xarray >=2022.12.0 + - blosc >=1.21.3 + - openpyxl >=3.1.0 + - pandas-gbq >=0.19.0 + - tzdata >=2022.7 + - pyxlsb >=1.0.10 + - psycopg2 >=2.9.6 + - scipy >=1.10.0 + - python-calamine >=0.1.7 + - xlsxwriter >=3.0.5 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15695466 - timestamp: 1726879158862 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e - md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + size: 15689443 + timestamp: 1744430942431 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + sha256: b0bed36b95757bbd269d30b2367536b802158bdf7947800ee7ae55089cfa8b9c + md5: 2979458c23c7755683a0598fb33e7666 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9998,134 +11014,358 @@ packages: - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - tabulate >=0.9.0 + - pytables >=3.8.0 + - html5lib >=1.1 + - lxml >=4.9.2 + - gcsfs >=2022.11.0 + - odfpy >=1.4.1 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - tzdata >=2022.7 + - pyarrow >=10.0.1 + - pyqt5 >=5.15.9 + - xlrd >=2.0.1 + - sqlalchemy >=2.0.0 + - xarray >=2022.12.0 + - scipy >=1.10.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - matplotlib >=3.6.3 + - bottleneck >=1.3.6 + - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - beautifulsoup4 >=4.11.2 + - pandas-gbq >=0.19.0 + - xlsxwriter >=3.0.5 + - numba >=0.56.4 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15436913 - timestamp: 1726879054912 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311haeb46be_1.conda - sha256: ad35c52521f0946caf06e19fd3dfad55f7b30e46648f96214f59d8ca2dac95ad - md5: ca32a9963a1b5c636b5131831ded81f3 + size: 15392153 + timestamp: 1744430987175 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda + sha256: 5a25e7353b25fcf0af48a3a127b4c204b478b2abe2f7e5b863a68ea91955328b + md5: f763d55519fd9595b2d0e85265810137 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.11,<3.12.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - tabulate >=0.9.0 + - zstandard >=0.19.0 + - bottleneck >=1.3.6 + - psycopg2 >=2.9.6 + - matplotlib >=3.6.3 + - xarray >=2022.12.0 + - openpyxl >=3.1.0 + - html5lib >=1.1 + - pytables >=3.8.0 + - pyxlsb >=1.0.10 + - numexpr >=2.8.4 + - pyarrow >=10.0.1 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - tzdata >=2022.7 + - pyqt5 >=5.15.9 + - sqlalchemy >=2.0.0 + - beautifulsoup4 >=4.11.2 + - lxml >=4.9.2 + - s3fs >=2022.11.0 + - numba >=0.56.4 + - fastparquet >=2022.12.0 + - fsspec >=2022.11.0 + - blosc >=1.21.3 + - pyreadstat >=1.2.0 + - xlsxwriter >=3.0.5 + - python-calamine >=0.1.7 + - scipy >=1.10.0 + - odfpy >=1.4.1 + - gcsfs >=2022.11.0 + - xlrd >=2.0.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14864168 - timestamp: 1726879042435 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312h98e817e_1.conda - sha256: 86c252ce5718b55129303f7d5c9a8664d8f0b23e303579142d09fcfd701e4fbe - md5: a7f7c58bbbfcdf820edb6e544555fe8f + size: 14756244 + timestamp: 1744430913476 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + sha256: b9c98565d165384a53ecdb14c8ccd9144d672b58c81e057598d197c6be0aba98 + md5: 50fcc3531441b73cb493ef9b2604abde depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - sqlalchemy >=2.0.0 + - numba >=0.56.4 + - pyarrow >=10.0.1 + - python-calamine >=0.1.7 + - bottleneck >=1.3.6 + - tzdata >=2022.7 + - lxml >=4.9.2 + - gcsfs >=2022.11.0 + - html5lib >=1.1 + - pandas-gbq >=0.19.0 + - psycopg2 >=2.9.6 + - numexpr >=2.8.4 + - fastparquet >=2022.12.0 + - zstandard >=0.19.0 + - tabulate >=0.9.0 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - odfpy >=1.4.1 + - pyreadstat >=1.2.0 + - openpyxl >=3.1.0 + - xlrd >=2.0.1 + - beautifulsoup4 >=4.11.2 + - s3fs >=2022.11.0 + - matplotlib >=3.6.3 + - scipy >=1.10.0 + - fsspec >=2022.11.0 + - pytables >=3.8.0 + - qtpy >=2.3.0 + - blosc >=1.21.3 + - pyqt5 >=5.15.9 + - pyxlsb >=1.0.10 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14575645 - timestamp: 1726879062042 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - sha256: 0a08027b25e4f6034d7733c7366f44283246d61cb82d1721f8789d50ebfef287 - md5: 9ffa9dee175c76e68ea5de5aa1168d83 + size: 14590879 + timestamp: 1744431018654 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda + sha256: 2fedf5cec20945d5ce1a5264f06a8adf23bc6b355cef365e92241a3f1f6a6d11 + md5: 29ae2c4e0ee3c65fa8520cafbf479ff7 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - python-calamine >=0.1.7 + - pytables >=3.8.0 + - s3fs >=2022.11.0 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - tzdata >=2022.7 + - xarray >=2022.12.0 + - fastparquet >=2022.12.0 + - pyqt5 >=5.15.9 + - numba >=0.56.4 + - pyxlsb >=1.0.10 + - xlrd >=2.0.1 + - bottleneck >=1.3.6 + - matplotlib >=3.6.3 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - odfpy >=1.4.1 + - qtpy >=2.3.0 + - numexpr >=2.8.4 + - gcsfs >=2022.11.0 + - tabulate >=0.9.0 + - pyreadstat >=1.2.0 + - pandas-gbq >=0.19.0 + - blosc >=1.21.3 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - lxml >=4.9.2 + - html5lib >=1.1 + - fsspec >=2022.11.0 + - psycopg2 >=2.9.6 + - sqlalchemy >=2.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14807397 - timestamp: 1726879116250 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 - md5: c68bfa69e6086c381c74e16fd72613a8 + size: 14820281 + timestamp: 1744430962289 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + sha256: 57beb95a8c5c3c35a87d0c5a6c3235fb3673618445e60be952a2502781534613 + md5: 63af5cccfa8b67825d8358b149e96466 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 + constrains: + - zstandard >=0.19.0 + - pyreadstat >=1.2.0 + - blosc >=1.21.3 + - fastparquet >=2022.12.0 + - qtpy >=2.3.0 + - openpyxl >=3.1.0 + - psycopg2 >=2.9.6 + - xlsxwriter >=3.0.5 + - lxml >=4.9.2 + - xarray >=2022.12.0 + - pyxlsb >=1.0.10 + - matplotlib >=3.6.3 + - python-calamine >=0.1.7 + - gcsfs >=2022.11.0 + - numba >=0.56.4 + - pandas-gbq >=0.19.0 + - odfpy >=1.4.1 + - fsspec >=2022.11.0 + - numexpr >=2.8.4 + - xlrd >=2.0.1 + - scipy >=1.10.0 + - bottleneck >=1.3.6 + - pyqt5 >=5.15.9 + - s3fs >=2022.11.0 + - html5lib >=1.1 + - pytables >=3.8.0 + - tabulate >=0.9.0 + - beautifulsoup4 >=4.11.2 + - pyarrow >=10.0.1 + - sqlalchemy >=2.0.0 + - tzdata >=2022.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14470437 - timestamp: 1726878887799 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_1.conda - sha256: f5477bf3a2b7919481009ce87212d7bbd16c61a5bb05c692a7c336fb45646534 - md5: 5965b8926efba14e6fde98cc8713c083 + size: 14442730 + timestamp: 1744431003090 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda + sha256: 7aabb8d23a6817844a7f1b402e7e147e341cade5f470a908b8239f969c7b681c + md5: 84c8b4aab176baefd352cd34f7e69469 depends: - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.11,<3.12.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + constrains: + - lxml >=4.9.2 + - pandas-gbq >=0.19.0 + - psycopg2 >=2.9.6 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 + - html5lib >=1.1 + - sqlalchemy >=2.0.0 + - fastparquet >=2022.12.0 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - numexpr >=2.8.4 + - pyqt5 >=5.15.9 + - openpyxl >=3.1.0 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - tabulate >=0.9.0 + - numba >=0.56.4 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - s3fs >=2022.11.0 + - gcsfs >=2022.11.0 + - qtpy >=2.3.0 + - odfpy >=1.4.1 + - pyreadstat >=1.2.0 + - xlrd >=2.0.1 + - pyarrow >=10.0.1 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - fsspec >=2022.11.0 + - pytables >=3.8.0 + - xlsxwriter >=3.0.5 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14587131 - timestamp: 1726879538736 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_1.conda - sha256: dfd30e665b1ced1b783ca303799e250d8acc40943bcefb3a9b2bb13c3b17911c - md5: bf6f01c03e0688523d4b5cff8fe8c977 + size: 14530915 + timestamp: 1744431484551 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + sha256: 86fe04c5f0dcae3644e3d2d892ddf6760d89eeb8fe1a31ef30290ac5a6a9f125 + md5: 08b4650b022c9f3233d45f231fb9471f depends: - numpy >=1.19,<3 - numpy >=1.22.4 - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - - pytz >=2020.1,<2024.2 + - pytz >=2020.1 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + constrains: + - pyxlsb >=1.0.10 + - psycopg2 >=2.9.6 + - bottleneck >=1.3.6 + - html5lib >=1.1 + - openpyxl >=3.1.0 + - python-calamine >=0.1.7 + - tabulate >=0.9.0 + - numexpr >=2.8.4 + - beautifulsoup4 >=4.11.2 + - odfpy >=1.4.1 + - gcsfs >=2022.11.0 + - pytables >=3.8.0 + - pyqt5 >=5.15.9 + - zstandard >=0.19.0 + - scipy >=1.10.0 + - xarray >=2022.12.0 + - blosc >=1.21.3 + - qtpy >=2.3.0 + - sqlalchemy >=2.0.0 + - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - lxml >=4.9.2 + - xlrd >=2.0.1 + - tzdata >=2022.7 + - fastparquet >=2022.12.0 + - s3fs >=2022.11.0 + - xlsxwriter >=3.0.5 + - pandas-gbq >=0.19.0 + - numba >=0.56.4 + - pyarrow >=10.0.1 + - matplotlib >=3.6.3 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14218658 - timestamp: 1726879426348 + size: 14150000 + timestamp: 1744431235710 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -10137,9 +11377,9 @@ packages: - pkg:pypi/pandocfilters?source=hash-mapping size: 11627 timestamp: 1631603397334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h861ebed_0.conda - sha256: 6bc073dc2759cb00bc9e94c7142acab58432245c6e04d1cef179e8afd3b58d6f - md5: 6d853ca33bc46bce99ce16ccd83d0466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + sha256: 9c00bbc8871b9ce00d1a1f0c1a64f76c032cf16a56a28984b9bb59e46af3932d + md5: 21899b96828014270bd24fd266096612 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -10147,19 +11387,19 @@ packages: - fonts-conda-ecosystem - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libexpat >=2.6.4,<3.0a0 - libgcc >=13 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 454553 - timestamp: 1742223788507 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hf94f63b_0.conda - sha256: db1de2f9f004b8b7d743dbd073728a9b119955eded54d81b23f4de30fddaee1a - md5: 97db8d75606bc6923a0f5cc7fb9bbff3 + size: 453100 + timestamp: 1743352484196 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + sha256: ff2cc0b201ce1b68a9f38c1dc71dbd26f70eef103089ae4ee26b7e80d336f0ab + md5: 17bcc6d5206e8a1a13cc478a777d79e5 depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 @@ -10167,18 +11407,18 @@ packages: - fonts-conda-ecosystem - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 430760 - timestamp: 1742223943355 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h73f1e88_0.conda - sha256: dac976052589a8a0778db1c1b6f279da200572ed9f265f3a6b7a1f217af4a5f0 - md5: aef5caa7ce0af969bfab789900982918 + size: 432439 + timestamp: 1743352942656 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + sha256: 76e3843f37878629e744ec75d5f3acfc54a7bb23f9970139f4040f93209ef574 + md5: 2e5cef90f7d355790fa96f2459ee648f depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 @@ -10186,27 +11426,27 @@ packages: - fonts-conda-ecosystem - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 425760 - timestamp: 1742224136308 -- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h286b592_0.conda - sha256: 33a89f2adeaedb8e55844d592cdaf0e3a3a79056f4c4a89d8ca24374b355a909 - md5: 7b64b640506109dd3cd6ccbd07748593 + size: 426212 + timestamp: 1743352728692 +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + sha256: ac86897c455349145da6c19daecf50f86af9280f3aa8c2a1d507e3bc04558354 + md5: 463526d86a59a821902c6a5337312005 depends: - cairo >=1.18.4,<2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=10.4.0,<11.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -10214,8 +11454,8 @@ packages: - vc14_runtime >=14.29.30139 license: LGPL-2.1-or-later purls: [] - size: 455359 - timestamp: 1742224127188 + size: 454284 + timestamp: 1743352979658 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc md5: 5c092057b6badd30f75b06244ecd01c9 @@ -10278,12 +11518,12 @@ packages: purls: [] size: 820831 timestamp: 1723489427046 -- pypi: https://files.pythonhosted.org/packages/29/93/d56fb9ba5569dc29d8263c72e46d21a2fd38741339ebf03f54cf7561828c/pdbp-1.6.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl name: pdbp - version: 1.6.1 - sha256: f10bad2ee044c0e5c168cb0825abfdbdc01c50013e9755df5261b060bdd35c22 + version: 1.7.0 + sha256: 6ad99cb4e9f2fc1a5b4ef4f2e0acdb28b18b271bf71f6c9f997b652d935caa19 requires_dist: - - pygments>=2.18.0 + - pygments>=2.19.1 - tabcompleter>=1.4.0 - colorama>=0.4.6 ; sys_platform == 'win32' requires_python: '>=3.8' @@ -10365,17 +11605,18 @@ packages: - pkg:pypi/pkgutil-resolve-name?source=hash-mapping size: 10693 timestamp: 1733344619659 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + sha256: ae7d3e58224d53d6b59e1f5ac5809803bb1972f0ac4fb10cd9b8c87d4122d3e0 + md5: e57da6fe54bb3a5556cf36d199ff07d8 depends: - python >=3.9 + - python license: MIT license_family: MIT purls: - - pkg:pypi/platformdirs?source=hash-mapping - size: 20448 - timestamp: 1733232756001 + - pkg:pypi/platformdirs?source=compressed-mapping + size: 23291 + timestamp: 1742485085457 - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda sha256: d1bbf2d80105bfc8a7ed9817888f4a1686ed393d6435572921add09cc9347c1c md5: 71ac632876630091c81c50a05ec5e030 @@ -10402,9 +11643,9 @@ packages: - pkg:pypi/pluggy?source=hash-mapping size: 23595 timestamp: 1733222855563 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.1.0-pyha770c72_0.conda - sha256: b260b4b47956b654232f698be1b757935268830a808040aff2006d08953e9e32 - md5: 5353f5eb201a9415b12385e35ed1148d +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + sha256: d0bd8cce5f31ae940934feedec107480c00f67e881bf7db9d50c6fc0216a2ee0 + md5: 17e487cc8b5507cd3abc09398cf27949 depends: - cfgv >=2.0.0 - identify >=1.0.0 @@ -10416,8 +11657,8 @@ packages: license_family: MIT purls: - pkg:pypi/pre-commit?source=hash-mapping - size: 195101 - timestamp: 1737408051494 + size: 195854 + timestamp: 1742475656293 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -10429,20 +11670,20 @@ packages: - pkg:pypi/prometheus-client?source=hash-mapping size: 49002 timestamp: 1733327434163 -- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - sha256: 0749c49a349bf55b8539ce5addce559b77592165da622944a51c630e94d97889 - md5: 7d823138f550b14ecae927a5ff3286de +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b + md5: d17ae9db4dc594267181bd199bf9a551 depends: - python >=3.9 - wcwidth constrains: - - prompt_toolkit 3.0.50 + - prompt_toolkit 3.0.51 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/prompt-toolkit?source=hash-mapping - size: 271905 - timestamp: 1737453457168 + - pkg:pypi/prompt-toolkit?source=compressed-mapping + size: 271841 + timestamp: 1744724188108 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda sha256: 50d0944b59a9c6dfa6b99cc2632bf8bc9bef9c7c93710390ded6eac953f0182d md5: 1a390a54b2752169f5ba4ada5a8108e4 @@ -10920,9 +12161,9 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 259816 timestamp: 1740946648058 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda - sha256: 09acac1974e10a639415be4be326dd21fa6d66ca51a01fb71532263fba6dccf6 - md5: 79963c319d1be62c8fd3e34555816e01 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd + md5: 1e35d8f975bc0e984a19819aa91c440a depends: - coverage >=7.5 - pytest >=4.6 @@ -10932,8 +12173,8 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-cov?source=hash-mapping - size: 26256 - timestamp: 1733223113491 + size: 27565 + timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda sha256: b6fed61a0f6aba248fe4ad590427d92ed94a85c3a2fd238362f4c1d3b5d900a4 md5: 07ab2b7111d3e814cfd73581e34cb9a1 @@ -10963,25 +12204,24 @@ packages: - pkg:pypi/pytest-xdist?source=hash-mapping size: 38147 timestamp: 1733240891538 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_2_cpython.conda - build_number: 2 - sha256: e0be7ad95a034d10e021f15317bf5c70fc1161564fa47844984c245505cde36c - md5: 81dd3e521f9b9eaa58d06213e28aaa9b +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda + sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 + md5: b61d4fbf583b8393d9d00ec106ad3658 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -10989,27 +12229,26 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 30594389 - timestamp: 1741036299726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 - md5: d82342192dfc9145185190e651065aa9 + size: 30545496 + timestamp: 1744325586785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 + md5: a41d26cd4d47092d683915d058380dec depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -11017,22 +12256,21 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 31670716 - timestamp: 1741130026152 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.11-h9ccd52b_2_cpython.conda - build_number: 2 - sha256: 2c34d988cdb364665478ca3d93a43b2a5bf149e822215ad3fa6a5342627374a9 - md5: 8d73135b48597cc13715a34bc79654b7 + size: 31279179 + timestamp: 1744325164633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda + sha256: fcd4b8a9a206940321d1d6569ddac2e99f359f0d5864e48140374a85aed5c27f + md5: cfa36957cba60dca8e79a974d09b6a2c depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -11040,22 +12278,21 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15472260 - timestamp: 1741035097532 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda - build_number: 1 - sha256: c394f7068a714cad7853992f18292bb34c6d99fe7c21025664b05069c86b9450 - md5: b878567b6b749f993dbdbc2834115bc3 + size: 15467842 + timestamp: 1744324543915 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 + md5: 597c4102c97504ede5297d06fb763951 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -11063,22 +12300,21 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13833024 - timestamp: 1741129416409 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_2_cpython.conda - build_number: 2 - sha256: 6f3c20b8666301fc27e6d1095f1e0f12a093bacf483e992cb56169127e989630 - md5: 4bd51247ba4dd5958eb8f1e593edfe00 + size: 13783219 + timestamp: 1744324415187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda + sha256: ea91eb5bc7160cbc6f8110702f9250c87e378ff1dc83ab8daa8ae7832fb5d0de + md5: 6ab5f6a9e85f1b1848b6518e7eea63ee depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -11086,22 +12322,21 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 14579450 - timestamp: 1741035010673 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_1_cpython.conda - build_number: 1 - sha256: fe804fc462396baab8abe525a722d0254c839533c98c47abd2c6d1248ad45e93 - md5: d9fac7b334ff6e5f93abd27509a53060 + size: 13584762 + timestamp: 1744323773319 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e + md5: c88f1a7e1e7b917d9c139f03b0960fea depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -11109,20 +12344,19 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13042031 - timestamp: 1741128584924 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.11-h3f84c4b_2_cpython.conda - build_number: 2 - sha256: d9a31998083225dcbef7c10cf0d379b1f64176cf1d0f8ad7f29941d2eb293d25 - md5: 8959f363205d55bb6ada26bdfd6ce8c7 + size: 12932743 + timestamp: 1744323815320 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda + sha256: 41e1c07eecff9436b9bb27724822229b2da6073af8461ede6c81b508c0677c56 + md5: c1f91331274f591340e2f50e737dfbe9 depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 @@ -11132,20 +12366,19 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 18221686 - timestamp: 1741034476958 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.9-h3f84c4b_1_cpython.conda - build_number: 1 - sha256: 320acd0095442a451c4e0f0f896bed2f52b3b8f05df41774e5b0b433d9fa08e0 - md5: f0a0ad168b815fee4ce9718d4e6c1925 + size: 18299489 + timestamp: 1744323460367 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + sha256: a791fa8f5ce68ab00543ecd3798bfa573db327902ccd5cb7598fd7e94ea194d3 + md5: 495e849ebc04562381539d25cf303a9f depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - liblzma >=5.6.4,<6.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 @@ -11155,8 +12388,8 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 15935206 - timestamp: 1741128459438 + size: 15941050 + timestamp: 1744323489788 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -11191,116 +12424,50 @@ packages: - pkg:pypi/python-json-logger?source=hash-mapping size: 13383 timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + sha256: e8392a8044d56ad017c08fec2b0eb10ae3d1235ac967d0aab8bd7b41c4a5eaf0 + md5: 88476ae6ebd24f39261e0854ac244f33 depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=hash-mapping - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de - md5: 139a8d40c8a2f430df31048949e450de - constrains: - - python 3.11.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6211 - timestamp: 1723823324668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6238 - timestamp: 1723823388266 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: 9b092850a268aca99600b724bae849f51209ecd5628e609b4699debc59ff1945 - md5: e6d62858c06df0be0e6255c753d74787 - constrains: - - python 3.11.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6303 - timestamp: 1723823062672 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d - md5: c34dd4920e0addf7cfcc725809f25d8e - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6312 - timestamp: 1723823137004 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a - md5: 3b855e3734344134cb56c410f729c340 + - pkg:pypi/tzdata?source=compressed-mapping + size: 144160 + timestamp: 1742745254292 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + build_number: 7 + sha256: 705d06b15c497b585d235e7e87f6c893ffe5fbfdb3326e376e56c842879e0a09 + md5: 6320dac78b3b215ceac35858b2cfdb70 constrains: - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6308 - timestamp: 1723823096865 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 + size: 6996 + timestamp: 1745258878641 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + build_number: 7 + sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 + md5: 0dfcdc155cf23812a0c9deada86fb723 constrains: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6278 - timestamp: 1723823099686 -- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-5_cp311.conda - build_number: 5 - sha256: 9b210e5807dd9c9ed71ff192a95f1872da597ddd10e7cefec93a922fe22e598a - md5: 895b873644c11ccc0ab7dba2d8513ae6 - constrains: - - python 3.11.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6707 - timestamp: 1723823225752 -- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: 9486662af81a219e96d343449eff242f38d7c5128ced5ce5acf85857265058d6 - md5: e8681f534453af7afab4cd2bc1423eec - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6730 - timestamp: 1723823139725 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 - md5: 3eeeeb9e4827ace8c0c1419c85d590ad + size: 6971 + timestamp: 1745258861359 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0 + md5: bc8e3267d44011051f2eb14d22fb0960 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pytz?source=hash-mapping - size: 188538 - timestamp: 1706886944988 + - pkg:pypi/pytz?source=compressed-mapping + size: 189015 + timestamp: 1742920947249 - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda sha256: 78a4ede098bbc122a3dff4e0e27255e30b236101818e8f499779c89670c58cd6 md5: 1bc10dbe3b8d03071070c962a2bdf65f @@ -11483,9 +12650,9 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 181734 timestamp: 1737455207230 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py311h7deb3e3_0.conda - sha256: a53a33de9f4dab1a3129324b4b4e7da2c6c642d8555fe591d3f6bc9772054389 - md5: 1ca9cbd0e1d3db5f4fda183977c8ae01 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda + sha256: e78fc8c500b96070359311082b4ebc5d66e52ddb2891861c728a247cf52892ba + md5: eb719a63f26215bba3ee5b0227c6452b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11497,12 +12664,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pyzmq?source=compressed-mapping - size: 393603 - timestamp: 1741805320840 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py312hbf22597_0.conda - sha256: aa96b9d13bc74f514ccbc3ad275d23bb837ec63894e6e7fb43786c7c41959bfd - md5: ec243006dd2b7dc72f1fba385e59f693 + - pkg:pypi/pyzmq?source=hash-mapping + size: 390342 + timestamp: 1743831429166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + sha256: 65a264837f189b0c69c5431ea8ef44e405c472fedba145b05055f284f08bc663 + md5: fa0ab7d5bee9efbc370e71bcb5da9856 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11515,11 +12682,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 381353 - timestamp: 1741805281237 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py311hb21797c_0.conda - sha256: 84922355958d44752b59c19d73f6faa202e83b47f14228674392120532dd841d - md5: fc8c9792aeea51848d389b1b422b2e26 + size: 379554 + timestamp: 1743831426292 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda + sha256: 9577a68dd2702b0ed969b79e92702935f1d0dc00368375b1da94003cdd12cdb8 + md5: 3aeb333ef7ca17c4294ccf2a6ae49438 depends: - __osx >=10.13 - libcxx >=18 @@ -11531,11 +12698,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 370387 - timestamp: 1741805577001 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.3.0-py312h679dbab_0.conda - sha256: fbada9f6bdd477c6eba4bf0fbeb5d4dcdde8ccdd54df58e0e8a3e7e45f4fc146 - md5: 64faf394b4c93ad0e53e5e7d24cda358 + size: 369941 + timestamp: 1743831465910 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + sha256: 9e89fab2c70a47298e72429b70cbf233d69f16f92c7dcad3b60db2e22afea00d + md5: 7c068120e36588fefecf8e91b1b3ae38 depends: - __osx >=10.13 - libcxx >=18 @@ -11547,11 +12714,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365891 - timestamp: 1741805479302 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py311h01f2145_0.conda - sha256: 17a10143081dc1f8415fc2187e518c24f22d8a115ebd190b325bb1b2f1b843c7 - md5: 3f67ae0bef4dd392fd61573681d6c79b + size: 365060 + timestamp: 1743831517482 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda + sha256: 5f50272cbe00701a79d3b5f3aa14808b6f8b80a3ea636f99f4746f109f02030d + md5: 461e2af0a7a77162309bda6f92a1a66c depends: - __osx >=11.0 - libcxx >=18 @@ -11563,12 +12730,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pyzmq?source=compressed-mapping - size: 369792 - timestamp: 1741805476216 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py312hf4875e0_0.conda - sha256: 060ae4b599c14f1f2a54fe9e1693503085f8889e3b440586a282199dc03e2044 - md5: 9a37ca625fba18b908c1071d133109c5 + - pkg:pypi/pyzmq?source=hash-mapping + size: 367977 + timestamp: 1743831535027 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + sha256: b8b41da0aac8aab5e48e62ff341374f12cd0ace7a59b80f56bc75371aa4796d5 + md5: 1e2a85e9493ad7c892ecbca89a11837c depends: - __osx >=11.0 - libcxx >=18 @@ -11581,11 +12748,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 363241 - timestamp: 1741805459823 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py311h484c95c_0.conda - sha256: 38fea35b67252e56e308f1af6e7694a414ff5e7d55d74cbcfb22a5b9aa344d9f - md5: e01cddfa1ebe1376589fa2f331030744 + size: 364333 + timestamp: 1743831518152 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda + sha256: d917b120cb10b32d90d40fc2b6a612cf75a9298d159e11da3a8672a3474b4f93 + md5: 0497becb33761fca9b8cfcb9f7278361 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 @@ -11598,11 +12765,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 373573 - timestamp: 1741805733860 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py312hd7027bb_0.conda - sha256: 39e0fb384a516bbff9ee0ffdfbb765d0ee1180ad5d6cbdcf75140fe871b4f615 - md5: 5795400c7af6fcc8dc30b72e77e52dca + size: 372040 + timestamp: 1743831788464 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + sha256: 07fbf17632c6300e53550f829f2e10d2c6f68923aa139d0618eaeadf2d0043ae + md5: ccfe948627071c03e36aa46d9e94bf12 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 @@ -11615,8 +12782,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365047 - timestamp: 1741805733926 + size: 363177 + timestamp: 1743831815399 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486 md5: 6f445fb139c356f903746b2b91bbe786 @@ -11743,9 +12910,9 @@ packages: - pkg:pypi/roman-numerals-py?source=hash-mapping size: 13348 timestamp: 1740240332327 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py311h687327b_0.conda - sha256: 754d8eff118a6a01f4eb0e8bc6be7be8872f54826d6ff0402eac08d308b01099 - md5: d35b446856b4d6644a469fd01838baff +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda + sha256: a45aec5ad66dc54884bc782ac590cd26e00f738bfcf4f55b4d63c8ca22915a30 + md5: e2fc6063859ff5fd62f983c31e4bf521 depends: - python - __glibc >=2.17,<3.0.a0 @@ -11757,11 +12924,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 391827 - timestamp: 1740153282893 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda - sha256: 0378f8010ef166cea7fcb0d502e3c85fd96442e445aab7e66f8702deb9ab1e26 - md5: b9cb8c7bcbe3df8e640b244ed096b8e2 + size: 391204 + timestamp: 1743037725605 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + sha256: 10dad6a9d40e7c1856cb1f5f941ea06500610e13ee6ec4961fba59fccbaa0dc9 + md5: 5f5c19cbbd3526fad9c8ca0cca3e7346 depends: - python - libgcc >=13 @@ -11773,11 +12940,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 394314 - timestamp: 1740153296343 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py311hab9d7c2_0.conda - sha256: d83ef060f75ea5b87ee1142c6e54140fcd7f34b21cd7cd55c78bdcce457f19af - md5: d4d43afca6dd6e0667ce236df9d942e3 + size: 394023 + timestamp: 1743037659894 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py311hab9d7c2_0.conda + sha256: b9b2f76cde789dbddb4c80694fdde2b9b88efade7029afcd5b2f26b0647646f8 + md5: 31a54aa2037a6c581c6aeffc73f47085 depends: - python - __osx >=10.13 @@ -11788,11 +12955,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 383768 - timestamp: 1740153197689 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py312hb59e30e_0.conda - sha256: 06cdca020bab7af6724ffeecfde488cda902867a991611ff41e35c56b533ec48 - md5: b77397ede545ef388c85d795a986b40a + size: 381842 + timestamp: 1743037555943 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + sha256: 1e5e8cd4353b0ab783d5b06ea63e367d518fb9d29c93e5467688cddcb53a8de3 + md5: 5e08436555f0f36678ed706277d261b9 depends: - python - __osx >=10.13 @@ -11803,11 +12970,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 377000 - timestamp: 1740153175904 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py311hc9d6b66_0.conda - sha256: 2f97abcca90080703b8f9a8975c72c2d7bf7b67b2c7bc3467b63ed0f7bdb6c59 - md5: 743cfbdfbf99ca9edf519514acde5efa + size: 372546 + timestamp: 1743037548695 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py311hc9d6b66_0.conda + sha256: 502e0a47463bb66624abd968e3d42f264f8aafd556731f05c238b03c433320c0 + md5: 9a2d45b17a80b5a11fbd04d3ed8db6ce depends: - python - python 3.11.* *_cpython @@ -11819,15 +12986,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 374118 - timestamp: 1740153123035 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda - sha256: 9b68bfd5dcd50a0e6c67a2aee42e15bb6d344357361e936fd6b93c9e4eaf0d69 - md5: 21bfb8afb20f48a6c60e83a2f01d7034 + size: 371285 + timestamp: 1743037539709 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + sha256: 4c0eb990fdbaee81e137b2071afaa2a0f87b8c72d4404755704f1f95a0629c03 + md5: a92a679258b8336f134f9d8324837f77 depends: - python - - __osx >=11.0 - python 3.12.* *_cpython + - __osx >=11.0 - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 @@ -11835,11 +13002,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 367762 - timestamp: 1740153151756 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py311ha250665_0.conda - sha256: 72ca8e7d54f79e6a99827576e53a277796ab8f4d912eba33e3b949cd757a77f7 - md5: 8fd1344d7369c84eb7cf4c316ab86518 + size: 363698 + timestamp: 1743037521077 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py311ha250665_0.conda + sha256: 83bcac24bf63b83d3b9560c448f8e353cc427b39ede10d6b8e2bf829866d654f + md5: 1f1ad2bacdff1d370c13be99709130da depends: - python - vc >=14.2,<15 @@ -11853,11 +13020,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 251649 - timestamp: 1740153100034 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py312hfe1d9c4_0.conda - sha256: 10bbbaea04c8f7f6ab784360be4c9cc9f439017114dd97ee6b99657d57ac6577 - md5: f0410386ac90b39f953a0313ad111a31 + size: 253118 + timestamp: 1743037491506 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + sha256: bf12ad2fefb2b5c5496d794a5fa0f7a2672a6dcfa9d70b181b6bbd968ade6454 + md5: c5fc315df43a26e2c1c0a6040cae12f6 depends: - python - vc >=14.2,<15 @@ -11871,8 +13038,8 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 255235 - timestamp: 1740153104261 + size: 256494 + timestamp: 1743037519734 - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl name: scipy version: 1.15.2 @@ -11969,7 +13136,7 @@ packages: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - numpy <2.5 @@ -12022,17 +13189,17 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 - md5: 9bddfdbf4e061821a1a443f93223be61 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + sha256: 5ebc4bb71fbdc8048b08848519150c8d44b8eb18445711d3258c9d402ba87a2c + md5: fa6669cc21abd4b7b6c5393b7bc71914 depends: - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/setuptools?source=hash-mapping - size: 777736 - timestamp: 1740654030775 + - pkg:pypi/setuptools?source=compressed-mapping + size: 787541 + timestamp: 1745484086827 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -12233,17 +13400,17 @@ packages: purls: [] size: 151460 timestamp: 1732982860332 -- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda - sha256: dcf2155fb959773fb102066bfab8e7d79aff67054d142716979274a43fc85735 - md5: a09f66fe95a54a92172e56a4a97ba271 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + sha256: fd9ab8829947a6a405d1204904776a3b206323d78b29d99ae8b60532c43d6844 + md5: 5d99943f2ae3cc69e1ada12ce9d4d701 depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/tenacity?source=hash-mapping - size: 24808 - timestamp: 1733649153624 + size: 25364 + timestamp: 1743640859268 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -12496,28 +13663,38 @@ packages: - pkg:pypi/types-python-dateutil?source=hash-mapping size: 22104 timestamp: 1733612458611 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 +- pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + name: types-pytz + version: 2025.2.0.20250326 + sha256: 3c397fd1b845cd2b3adc9398607764ced9e578a98a5d1fbb4a9bc9253edfb162 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl + name: types-pyyaml + version: 6.0.12.20250402 + sha256: 652348fa9e7a203d4b0d21066dfb00760d3cbd5a15ebb7cf8d33c88a49546681 + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 + md5: 568ed1300869dca0ba09fb750cda5dbb depends: - - typing_extensions 4.12.2 pyha770c72_1 + - typing_extensions ==4.13.2 pyh29332c3_0 license: PSF-2.0 license_family: PSF purls: [] - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 + size: 89900 + timestamp: 1744302253997 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 + md5: 83fc6ae00127671e301c9f44254c31b8 depends: - python >=3.9 + - python license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 39637 - timestamp: 1733188758212 + - pkg:pypi/typing-extensions?source=compressed-mapping + size: 52189 + timestamp: 1744302253997 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -12529,13 +13706,13 @@ packages: - pkg:pypi/typing-utils?source=hash-mapping size: 15183 timestamp: 1733331395943 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 + md5: 4222072737ccff51314b5ece9c7d6f5a license: LicenseRef-Public-Domain purls: [] - size: 122921 - timestamp: 1737119101255 + size: 122968 + timestamp: 1742727099393 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 @@ -12682,9 +13859,9 @@ packages: - pkg:pypi/uri-template?source=hash-mapping size: 23990 timestamp: 1733323714454 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e - md5: 32674f8dbfb7b26410ed580dd3c10a29 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c + md5: c1e349028e0052c4eea844e94f773065 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -12695,35 +13872,35 @@ packages: license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 100102 - timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - sha256: 8ef83b62f9f0b885882d0dd41cbe47c2308f7ac0537fd508a5bbe6d3953a176e - md5: 9098c5cfb418fc0b0204bf2efc1e9afa + size: 100791 + timestamp: 1744323705540 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 + md5: d3f0381e38093bde620a8d85f266ae55 depends: - - vc14_runtime >=14.42.34438 + - vc14_runtime >=14.42.34433 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17469 - timestamp: 1741043406253 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - sha256: fb36814355ac12dcb4a55b75b5ef0d49ec219ad9df30d7955f2ace88bd6919c4 - md5: 5fceb7d965d59955888d9a9732719aa8 + size: 17893 + timestamp: 1743195261486 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 + md5: 91651a36d31aa20c7ba36299fb7068f4 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34438.* *_24 + - vs2015_runtime 14.42.34438.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 751362 - timestamp: 1741043402335 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.29.3-pyhd8ed1ab_0.conda - sha256: f7b2cd8ee05769e57dab1f2e2206360cb03d15d4290ddb30442711700c430ba6 - md5: 87a2061465e55be9a997dd8cf8b5a578 + size: 750733 + timestamp: 1743195092905 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + sha256: 1dbb24b144f7b8400b30cca760cdee1b7de61716cd7f06d7ea82b741645823ce + md5: c0e0b4a09aa5a698a1bdd4ebfe28be38 depends: - distlib >=0.3.7,<1 - filelock >=3.12.2,<4 @@ -12733,32 +13910,31 @@ packages: license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 3520880 - timestamp: 1741337922189 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda - sha256: a7104d3d605d191c8ee8d85d4175df3630d61830583494a5d1e62cd9f1260420 - md5: 1dd2e838eb13190ae1f1e2760c036fdc + size: 3635535 + timestamp: 1743474070226 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 + md5: 3357e4383dbce31eed332008ede242ab depends: - vc14_runtime >=14.42.34438 license: BSD-3-Clause license_family: BSD purls: [] - size: 17474 - timestamp: 1741043406612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda - sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 - md5: 0a732427643ae5e0486a727927791da1 + size: 17873 + timestamp: 1743195097269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + sha256: 73d809ec8056c2f08e077f9d779d7f4e4c2b625881cad6af303c33dc1562ea01 + md5: a37843723437ba75f42c9270ffe800b1 depends: - __glibc >=2.17,<3.0.a0 - - libexpat >=2.6.2,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc-ng >=13 - - libstdcxx-ng >=13 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - libstdcxx >=13 license: MIT - license_family: MIT purls: [] - size: 321561 - timestamp: 1724530461598 + size: 321099 + timestamp: 1745806602179 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 md5: b68980f2495d096e71c7fd9d7ccf63e6 @@ -12803,17 +13979,17 @@ packages: - pkg:pypi/websocket-client?source=hash-mapping size: 46718 timestamp: 1733157432924 -- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda - sha256: a750202ae2a31d8e5ee5a5c127fcc7fa783cd0fbedbc0bf1ab549a109881fa9f - md5: 237db148cc37a466e4222d589029b53e +- conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + sha256: 7df3620c88343f2d960a58a81b79d4e4aa86ab870249e7165db7c3e2971a2664 + md5: 2f1f99b13b9d2a03570705030a0b3e7c depends: - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/widgetsnbextension?source=hash-mapping - size: 898402 - timestamp: 1733128654300 + - pkg:pypi/widgetsnbextension?source=compressed-mapping + size: 889285 + timestamp: 1744291155057 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f md5: 46e441ba871f524e2b067929da3051c2 @@ -12832,18 +14008,18 @@ packages: license_family: MIT purls: [] size: 1176306 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda - sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 - md5: f725c7425d6d7c15e31f3b99a88ea02f +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + sha256: 83ad2be5eb1d359b4cd7d7a93a6b25cdbfdce9d27b37508e2a4efe90d3a4ed80 + md5: 7c91bfc90672888259675ad2ad28af9c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 license: MIT license_family: MIT purls: [] - size: 389475 - timestamp: 1727840188958 + size: 392870 + timestamp: 1745806998840 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -13328,7 +14504,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=compressed-mapping + - pkg:pypi/zstandard?source=hash-mapping size: 531069 timestamp: 1741853718145 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda @@ -13344,7 +14520,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=compressed-mapping + - pkg:pypi/zstandard?source=hash-mapping size: 444456 timestamp: 1741853849446 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda @@ -13360,12 +14536,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/zstandard?source=compressed-mapping + - pkg:pypi/zstandard?source=hash-mapping size: 444958 timestamp: 1741853730076 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da - md5: 02e4e2fa41a6528afba2e54cbc4280ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb + md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13374,33 +14550,33 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 567419 - timestamp: 1740255350233 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - sha256: 60042f68a56124b72c7fedc3c45bf8da7a53665175fcebdf1e248f6d9a59f339 - md5: b6931d7aedc272edf329a632d840e3d9 + size: 567578 + timestamp: 1742433379869 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca + md5: cd60a4a5a8d6a476b30d8aa4bb49251a depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 486288 - timestamp: 1740255318890 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 - md5: 66e5c4b02aa97230459efdd4f64c8ce6 + size: 485754 + timestamp: 1742433356230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + sha256: 0d02046f57f7a1a3feae3e9d1aa2113788311f3cf37a3244c71e61a93177ba67 + md5: e6f69c7bcccdefa417f056fa593b40f0 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 399981 - timestamp: 1740255382232 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - sha256: a59b096b95f20910158c927797e9144ed9c7970f1b4aca58e6d6c8db9f653006 - md5: bf190adcc22f146d8ec66da215c9d78b + size: 399979 + timestamp: 1742433432699 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 + md5: 21f56217d6125fb30c3c3f10c786d751 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -13409,5 +14585,5 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 353182 - timestamp: 1740255407949 + size: 354697 + timestamp: 1742433568506 diff --git a/pyproject.toml b/pyproject.toml index e07e71aafd..e453ffd0a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -122,7 +122,6 @@ pytest-cov = "*" pytest-profiling = "*" pytest-xdist = "*" snakeviz = ">=2.2.2,<3" -mypy = "1.15.0.*" # Development Dependencies (pypi) @@ -155,16 +154,25 @@ jaxlib = ">=0.4.20" jax = { version = ">=0.4.20", extras = ["cpu"] } jaxlib = ">=0.4.20" +[tool.pixi.feature.mypy.pypi-dependencies] +mypy = "==1.15.0" +types-PyYAML = "*" +types-pytz = "*" + # Tasks # -------------------------------------------------------------------------------------- [tool.pixi.feature.test.tasks] tests = "pytest" +[tool.pixi.feature.mypy.tasks] +mypy = "mypy --ignore-missing-imports" + # Environments # -------------------------------------------------------------------------------------- [tool.pixi.environments] +mypy = ["mypy"] py311 = ["test", "py311"] py312 = ["test", "py312"] py312-jax = ["py312", "test", "jax"] @@ -205,7 +213,7 @@ extend-ignore = [ "ANN401", # flake8-annotate typing.Any "PD", # pandas-vet "E731", # do not assign a lambda expression, use a def - "RET", # unnecessary elif or else statements after return, rais, continue, ... + "RET", # unnecessary elif or else statements after return, raise, continue, ... "S324", # Probable use of insecure hash function. "COM812", # trailing comma missing, but black takes care of that "PT007", # wrong type in parametrize, gave false positives @@ -250,7 +258,7 @@ exclude = [] "src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] "src/ttsim/piecewise_functions.py" = ["PLR"] "src/ttsim/policy_environment.py" = ["S506", "PLR"] -"src/ttsim/visualization.py" = ["PLR"] +"src/ttsim/plot_dag.py" = ["PLR"] "src/_gettsim/*" = ["E501"] "docs/**/*.ipynb" = ["T201"] @@ -272,7 +280,7 @@ convention = "numpy" [tool.mypy] files = ["src", "tests"] check_untyped_defs = true -disallow_any_generics = false +disallow_any_generics = true disallow_incomplete_defs = true disallow_untyped_defs = true no_implicit_optional = true @@ -282,15 +290,42 @@ explicit_package_bases = true [[tool.mypy.overrides]] module = [ - "src._gettsim_tests.*", - "src.gettsim", - "src._gettsim.*", - "src.ttsim.*", - "tests.*", + "src._gettsim.synthetic", + "src._gettsim_tests.test_synthetic", + "src.ttsim.plot_dag", + "tests.ttsim.test_docs", ] disallow_untyped_defs = false ignore_errors = true +[[tool.mypy.overrides]] +module = [ + "tests.*", + "src._gettsim_tests.*", +] +disable_error_code = [ + "no-untyped-def", # All tests return None, don't clutter source code. + "empty-body", # Happens for all functions decorated with @policy_input + "type-arg" # TODO: Remove once we have proper types for parameters. +] + +[[tool.mypy.overrides]] +module = [ + "src.ttsim.*", + "src._gettsim.*", +] +disable_error_code = [ + "empty-body", # Happens for all functions decorated with @policy_input + "type-arg" # TODO: Remove once we have proper types for parameters. +] + +[[tool.mypy.overrides]] +module = [ + "tests.ttsim.test_vectorization", +] +disable_error_code = [ + "assignment" +] [tool.check-manifest] ignore = ["src/_gettsim/_version.py"] diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 662900be7b..634e20a067 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -19,7 +19,7 @@ def anspruchshöhe_m( def betrag_m( anspruchshöhe_m: int, grundsätzlich_anspruchsberechtigt: bool, -) -> bool: +) -> float: """Total parental leave benefits (Erziehungsgeld) received by the parent. Legal reference: BErzGG (BGBl. I 1985 S. 2154; BGBl. I 2004 S. 206) @@ -37,7 +37,7 @@ def betrag_m( """ if grundsätzlich_anspruchsberechtigt: - out = anspruchshöhe_m + out: float = anspruchshöhe_m else: out = 0.0 diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index 578c8b517d..e3450fbe74 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -25,9 +25,9 @@ def ehe_id( """ Compute the ID of the Ehe for each person. """ - p_id_to_ehe_id = {} + p_id_to_ehe_id: dict[int, int] = {} next_ehe_id = 0 - result = [] + result: list[int] = [] for index, current_p_id in enumerate(p_id): current_p_id_ehepartner = familie__p_id_ehepartner[index] @@ -57,8 +57,8 @@ def fg_id( # noqa: PLR0912 Compute the ID of the Familiengemeinschaft for each person. """ # Build indexes - p_id_to_index = {} - p_id_to_p_ids_children = {} + p_id_to_index: dict[int, int] = {} + p_id_to_p_ids_children: dict[int, list[int]] = {} for index, current_p_id in enumerate(p_id): # Fast access from p_id to index @@ -160,8 +160,8 @@ def bg_id( # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt # once Bedarfsgemeinschaften are fully endogenous # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - counter = Counter() - result = [] + counter: Counter[int] = Counter() + result: list[int] = [] for index, current_fg_id in enumerate(fg_id): current_alter = alter[index] @@ -185,9 +185,9 @@ def eg_id( """ Compute the ID of the Einstandsgemeinschaft for each person. """ - p_id_to_eg_id = {} + p_id_to_eg_id: dict[int, int] = {} next_eg_id = 0 - result = [] + result: list[int] = [] for index, current_p_id in enumerate(p_id): current_p_id_einstandspartner = arbeitslosengeld_2__p_id_einstandspartner[index] @@ -218,7 +218,7 @@ def wthh_id( """ Compute the ID of the wohngeldrechtlicher Teilhaushalt. """ - result = [] + result: list[int] = [] for index, current_hh_id in enumerate(hh_id): if ( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] @@ -242,10 +242,10 @@ def sn_id( """ Compute a Steuernummer (ID) for each person / couple. """ - p_id_to_sn_id = {} - p_id_to_gemeinsam_veranlagt = {} + p_id_to_sn_id: dict[int, int] = {} + p_id_to_gemeinsam_veranlagt: dict[int, bool] = {} next_sn_id = 0 - result = [] + result: list[int] = [] for index, current_p_id in enumerate(p_id): current_p_id_ehepartner = familie__p_id_ehepartner[index] diff --git a/src/_gettsim/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py index 7c22f7221f..3730f134b2 100644 --- a/src/_gettsim/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -217,26 +217,14 @@ def vermögensprüfung( vermögen: float, anzahl_personen: int, params: dict, -) -> float: +) -> bool: """Wealth check for housing benefit calculation. The payment depends on the wealth of the household and the number of household members. Note: This function is not a direct target in the DAG, but a helper function to - store the code for Wohngeld calculation. - - Parameters - ---------- - vermögen - Relevant wealth of the Wohngeld recipients. - anzahl_personen - Number of people Wohngeld is being calculated for. - params - See params documentation :ref:`params <params>`. - - Returns - ------- + re-use code in various places """ diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 27ca193668..739a2049de 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -152,7 +152,7 @@ def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: provided_inputs = test_data["inputs"].get("provided", {}) assumed_inputs = test_data["inputs"].get("assumed", {}) - unflattened_dict = {} + unflattened_dict = {} # type: ignore[var-annotated] unflattened_dict["inputs"] = {} unflattened_dict["outputs"] = {} diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 313fb0281e..a0421221e3 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -13,6 +13,7 @@ import itertools import warnings +from typing import Any import pytest @@ -33,7 +34,7 @@ COUNTER_TEST_EXECUTIONS = itertools.count() -def test(*args): +def test(*args: Any) -> None: n_test_executions = next(COUNTER_TEST_EXECUTIONS) if n_test_executions == 0: diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 3d3f84c849..4cfefb9172 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -5,8 +5,8 @@ FunctionsAndColumnsOverlapWarning, compute_taxes_and_transfers, ) -from ttsim.loader import ConflictingTimeDependentObjectsError from ttsim.piecewise_polynomial import piecewise_polynomial +from ttsim.plot_dag import plot_dag from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment from ttsim.prepare_data import create_data_tree_from_df from ttsim.rounding import RoundingSpec @@ -32,13 +32,11 @@ policy_function, policy_input, ) -from ttsim.visualization import plot_dag __all__ = [ "AggByGroupFunction", "AggByPIDFunction", "AggType", - "ConflictingTimeDependentObjectsError", "FKType", "FunctionsAndColumnsOverlapWarning", "GroupCreationFunction", diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index a3b785d808..a53459f555 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -29,6 +29,7 @@ from ttsim.aggregation_numpy import min_by_p_id as min_by_p_id_numpy from ttsim.aggregation_numpy import sum_by_p_id as sum_by_p_id_numpy from ttsim.config import IS_JAX_INSTALLED +from ttsim.config import numpy_or_jax as np class AggType(StrEnum): @@ -45,98 +46,112 @@ class AggType(StrEnum): ALL = "all" -def grouped_count(group_id): +def grouped_count(group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_count_jax(group_id) else: return grouped_count_numpy(group_id) -def grouped_sum(column, group_id): +def grouped_sum(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_sum_jax(column, group_id) else: return grouped_sum_numpy(column, group_id) -def grouped_mean(column, group_id): +def grouped_mean(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_mean_jax(column, group_id) else: return grouped_mean_numpy(column, group_id) -def grouped_max(column, group_id): +def grouped_max(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_max_jax(column, group_id) else: return grouped_max_numpy(column, group_id) -def grouped_min(column, group_id): +def grouped_min(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_min_jax(column, group_id) else: return grouped_min_numpy(column, group_id) -def grouped_any(column, group_id): +def grouped_any(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_any_jax(column, group_id) else: return grouped_any_numpy(column, group_id) -def grouped_all(column, group_id): +def grouped_all(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: if IS_JAX_INSTALLED: return grouped_all_jax(column, group_id) else: return grouped_all_numpy(column, group_id) -def count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by): +def count_by_p_id( + p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return count_by_p_id_jax(p_id_to_aggregate_by, p_id_to_store_by) else: return count_by_p_id_numpy(p_id_to_aggregate_by, p_id_to_store_by) -def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def sum_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return sum_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return sum_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) -def mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def mean_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return mean_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return mean_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) -def max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def max_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return max_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return max_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) -def min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def min_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return min_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return min_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) -def any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def any_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return any_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: return any_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) -def all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def all_by_p_id( + column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray +) -> np.ndarray: if IS_JAX_INSTALLED: return all_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) else: diff --git a/src/ttsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py index dc3e0f5892..2f25c03625 100644 --- a/src/ttsim/aggregation_jax.py +++ b/src/ttsim/aggregation_jax.py @@ -1,10 +1,6 @@ -from ttsim.aggregation_numpy import ( - fail_if_dtype_not_boolean_or_int, - fail_if_dtype_not_float, - fail_if_dtype_not_int, - fail_if_dtype_not_numeric_or_boolean, - fail_if_dtype_not_numeric_or_datetime, -) +from __future__ import annotations + +from typing import TYPE_CHECKING try: import jax.numpy as jnp @@ -12,17 +8,20 @@ except ImportError: pass +if TYPE_CHECKING: + try: + import jax.numpy as jnp + except ImportError: + import numpy as jnp # noqa: TC004 + -def grouped_count(group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_count") +def grouped_count(group_id: jnp.ndarray) -> jnp.ndarray: out_on_hh = segment_sum(jnp.ones(len(group_id)), group_id) out = out_on_hh[group_id] return out -def grouped_sum(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_sum") - fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_sum") +def grouped_sum(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: if column.dtype in ["bool"]: column = column.astype(int) @@ -31,9 +30,7 @@ def grouped_sum(column, group_id): return out -def grouped_mean(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_mean") - fail_if_dtype_not_float(column, agg_func="grouped_mean") +def grouped_mean(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: sum_on_hh = segment_sum(column, group_id) sizes = segment_sum(jnp.ones(len(column)), group_id) mean_on_hh = sum_on_hh / sizes @@ -41,27 +38,19 @@ def grouped_mean(column, group_id): return out -def grouped_max(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_max") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_max") - +def grouped_max(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: out_on_hh = segment_max(column, group_id) out = out_on_hh[group_id] return out -def grouped_min(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_min") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_min") +def grouped_min(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: out_on_hh = segment_min(column, group_id) out = out_on_hh[group_id] return out -def grouped_any(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_any") - fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_any") - +def grouped_any(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: # Convert to boolean if necessary if jnp.issubdtype(column.dtype, jnp.integer): my_col = column.astype("bool") @@ -73,10 +62,7 @@ def grouped_any(column, group_id): return out -def grouped_all(column, group_id): - fail_if_dtype_not_int(group_id, agg_func="grouped_all") - fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_all") - +def grouped_all(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: # Convert to boolean if necessary if jnp.issubdtype(column.dtype, jnp.integer): column = column.astype("bool") @@ -86,18 +72,17 @@ def grouped_all(column, group_id): return out -def count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="count_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="count_by_p_id") - +def count_by_p_id( + p_id_to_aggregate_by: jnp.ndarray, p_id_to_store_by: jnp.ndarray +) -> jnp.ndarray: raise NotImplementedError -def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="sum_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="sum_by_p_id") - fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") - +def sum_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: if column.dtype == bool: column = column.astype(int) @@ -122,36 +107,41 @@ def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): return out -def mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="mean_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="mean_by_p_id") - fail_if_dtype_not_float(column, agg_func="mean_by_p_id") +def mean_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: raise NotImplementedError -def max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="max_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="max_by_p_id") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="max_by_p_id") +def max_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: raise NotImplementedError -def min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="min_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="min_by_p_id") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="min_by_p_id") +def min_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: raise NotImplementedError -def any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="any_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="any_by_p_id") - fail_if_dtype_not_boolean_or_int(column, agg_func="any_by_p_id") +def any_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: raise NotImplementedError -def all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): - fail_if_dtype_not_int(p_id_to_store_by, agg_func="all_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="all_by_p_id") - fail_if_dtype_not_boolean_or_int(column, agg_func="all_by_p_id") +def all_by_p_id( + column: jnp.ndarray, + p_id_to_aggregate_by: jnp.ndarray, + p_id_to_store_by: jnp.ndarray, +) -> jnp.ndarray: raise NotImplementedError diff --git a/src/ttsim/aggregation_numpy.py b/src/ttsim/aggregation_numpy.py index 61867f1581..795da4adc9 100644 --- a/src/ttsim/aggregation_numpy.py +++ b/src/ttsim/aggregation_numpy.py @@ -2,7 +2,7 @@ import numpy_groupies as npg -def grouped_count(group_id): +def grouped_count(group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_count") out_on_hh = npg.aggregate( group_id, numpy.ones(len(group_id)), func="sum", fill_value=0 @@ -12,7 +12,7 @@ def grouped_count(group_id): return out -def grouped_sum(column, group_id): +def grouped_sum(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_sum") fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_sum") if column.dtype == bool: @@ -24,7 +24,7 @@ def grouped_sum(column, group_id): return out -def grouped_mean(column, group_id): +def grouped_mean(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_mean") fail_if_dtype_not_float(column, agg_func="grouped_mean") @@ -35,7 +35,7 @@ def grouped_mean(column, group_id): return out -def grouped_max(column, group_id): +def grouped_max(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_max") fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_max") @@ -60,7 +60,7 @@ def grouped_max(column, group_id): return out -def grouped_min(column, group_id): +def grouped_min(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_min") fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_min") @@ -88,7 +88,7 @@ def grouped_min(column, group_id): return out -def grouped_any(column, group_id): +def grouped_any(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_any") fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_any") @@ -99,7 +99,7 @@ def grouped_any(column, group_id): return out -def grouped_all(column, group_id): +def grouped_all(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_all") fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_all") @@ -110,14 +110,20 @@ def grouped_all(column, group_id): return out -def count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by): +def count_by_p_id( + p_id_to_aggregate_by: numpy.ndarray, p_id_to_store_by: numpy.ndarray +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="count_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="count_by_p_id") raise NotImplementedError -def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def sum_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="sum_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="sum_by_p_id") fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") @@ -134,42 +140,62 @@ def sum_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): return out -def mean_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def mean_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="mean_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="mean_by_p_id") fail_if_dtype_not_float(column, agg_func="mean_by_p_id") raise NotImplementedError -def max_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def max_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="max_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="max_by_p_id") fail_if_dtype_not_numeric_or_datetime(column, agg_func="max_by_p_id") raise NotImplementedError -def min_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def min_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="min_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="min_by_p_id") fail_if_dtype_not_numeric_or_datetime(column, agg_func="min_by_p_id") raise NotImplementedError -def any_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def any_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="any_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="any_by_p_id") fail_if_dtype_not_boolean_or_int(column, agg_func="any_by_p_id") raise NotImplementedError -def all_by_p_id(column, p_id_to_aggregate_by, p_id_to_store_by): +def all_by_p_id( + column: numpy.ndarray, + p_id_to_aggregate_by: numpy.ndarray, + p_id_to_store_by: numpy.ndarray, +) -> numpy.ndarray: fail_if_dtype_not_int(p_id_to_store_by, agg_func="all_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="all_by_p_id") fail_if_dtype_not_boolean_or_int(column, agg_func="all_by_p_id") raise NotImplementedError -def fail_if_dtype_not_numeric(column, agg_func): +def fail_if_dtype_not_numeric(column: numpy.ndarray, agg_func: str) -> None: if not numpy.issubdtype(column.dtype, numpy.number): raise TypeError( f"Aggregation function {agg_func} was applied to a column " @@ -177,7 +203,7 @@ def fail_if_dtype_not_numeric(column, agg_func): ) -def fail_if_dtype_not_float(column, agg_func): +def fail_if_dtype_not_float(column: numpy.ndarray, agg_func: str) -> None: if not numpy.issubdtype(column.dtype, numpy.floating): raise TypeError( f"Aggregation function {agg_func} was applied to a column " @@ -185,7 +211,7 @@ def fail_if_dtype_not_float(column, agg_func): ) -def fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func): +def fail_if_dtype_not_int(p_id_to_aggregate_by: numpy.ndarray, agg_func: str) -> None: if not numpy.issubdtype(p_id_to_aggregate_by.dtype, numpy.integer): raise TypeError( f"The dtype of id columns must be integer. Aggregation function {agg_func} " @@ -193,7 +219,7 @@ def fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func): ) -def fail_if_dtype_not_numeric_or_boolean(column, agg_func): +def fail_if_dtype_not_numeric_or_boolean(column: numpy.ndarray, agg_func: str) -> None: if not (numpy.issubdtype(column.dtype, numpy.number) or column.dtype == "bool"): raise TypeError( f"Aggregation function {agg_func} was applied to a column with dtype " @@ -201,7 +227,7 @@ def fail_if_dtype_not_numeric_or_boolean(column, agg_func): ) -def fail_if_dtype_not_numeric_or_datetime(column, agg_func): +def fail_if_dtype_not_numeric_or_datetime(column: numpy.ndarray, agg_func: str) -> None: if not ( numpy.issubdtype(column.dtype, numpy.number) or numpy.issubdtype(column.dtype, numpy.datetime64) @@ -212,7 +238,7 @@ def fail_if_dtype_not_numeric_or_datetime(column, agg_func): ) -def fail_if_dtype_not_boolean_or_int(column, agg_func): +def fail_if_dtype_not_boolean_or_int(column: numpy.ndarray, agg_func: str) -> None: if not ( numpy.issubdtype(column.dtype, numpy.integer) or numpy.issubdtype(column.dtype, numpy.bool_) diff --git a/src/ttsim/automatically_added_functions.py b/src/ttsim/automatically_added_functions.py index b4488f309d..7905b3900a 100644 --- a/src/ttsim/automatically_added_functions.py +++ b/src/ttsim/automatically_added_functions.py @@ -466,7 +466,7 @@ def create_time_conversion_functions( fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - converted_ttsim_objects = {} + converted_ttsim_objects: dict[str, TTSIMObject] = {} for bngs, inputs in bngs_to_time_conversion_inputs.items(): for qual_name_data in data: # If base_name is in provided data, base time conversions on that. diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index fbb99f4c37..8e250fce65 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -428,7 +428,7 @@ def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: raise ValueError("The input data must contain the p_id.") # Check for non-unique p_ids - p_id_counts = {} + p_id_counts: dict[int, int] = {} for i in p_id: if i in p_id_counts: p_id_counts[i] += 1 diff --git a/src/ttsim/loader.py b/src/ttsim/loader.py index 9e561517a8..93e61d303f 100644 --- a/src/ttsim/loader.py +++ b/src/ttsim/loader.py @@ -2,25 +2,22 @@ import importlib.util import inspect -import itertools import sys from typing import TYPE_CHECKING -from ttsim.shared import ( - create_tree_from_path_and_value, - merge_trees, -) -from ttsim.ttsim_objects import TTSIMFunction, TTSIMObject +import dags.tree as dt + +from ttsim.ttsim_objects import TTSIMObject if TYPE_CHECKING: import datetime from pathlib import Path from types import ModuleType - from ttsim.typing import NestedTTSIMObjectDict + from ttsim.typing import FlatTTSIMObjectDict, NestedTTSIMObjectDict -def load_objects_tree_for_date( +def active_ttsim_objects_tree( resource_dir: Path, date: datetime.date ) -> NestedTTSIMObjectDict: """ @@ -37,27 +34,44 @@ def load_objects_tree_for_date( ------- A tree of active TTSIMObjects. """ - paths_to_objects = _find_python_files_recursively(resource_dir) - objects_tree = {} + orig_flat_objects_tree = orig_ttsim_objects_tree(resource_dir) + + flat_objects_tree = { + (*orig_path[:-2], obj.leaf_name): obj + for orig_path, obj in orig_flat_objects_tree.items() + if obj.is_active(date) + } + + return dt.unflatten_from_tree_paths(flat_objects_tree) - for path in paths_to_objects: - new_objects_tree = get_active_ttsim_objects_tree_from_module( - path=path, date=date, root_path=resource_dir - ) - objects_tree = merge_trees( - left=objects_tree, - right=new_objects_tree, - ) - return objects_tree +def orig_ttsim_objects_tree(resource_dir: Path) -> FlatTTSIMObjectDict: + """ + Load the original TTSIMObjects tree from the resource directory. + + "Original" means: + - Module names are not removed from the path. + - The last path element is the TTSIMObject's original name, not the leaf name. + + Parameters + ---------- + resource_dir: + The resource directory to load the TTSIMObjects tree from. + """ + return { + k: v + for path in _find_modules_recursively(resource_dir) + for k, v in _get_orig_ttsim_objects_from_module( + path=path, root_path=resource_dir + ).items() + } -def get_active_ttsim_objects_tree_from_module( +def _get_orig_ttsim_objects_from_module( path: Path, root_path: Path, - date: datetime.date, -) -> dict[str, TTSIMFunction]: +) -> FlatTTSIMObjectDict: """Extract all active PolicyFunctions and GroupByFunctions from a module. Parameters @@ -71,103 +85,18 @@ def get_active_ttsim_objects_tree_from_module( Returns ------- - The tree of active PolicyFunctions and GroupByFunctions. + A flat tree of TTSIMObjects. """ - module = _load_module(path, root_path) - - ttsim_objects_orig_names = { - name: obj + module = _load_module(path=path, root_path=root_path) + tree_path = path.relative_to(root_path).parts + return { + (*tree_path, name): obj for name, obj in inspect.getmembers(module) if isinstance(obj, TTSIMObject) } - _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - ttsim_objects_orig_names.values(), - module_name=root_path / path, - ) - - active_ttsim_objects = { - obj.leaf_name: obj - for obj in ttsim_objects_orig_names.values() - if obj.is_active(date) - } - - return create_tree_from_path_and_value( - path=_convert_path_to_tree_path(path=path, root_path=root_path), - value=active_ttsim_objects, - ) - -def _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - ttsim_objects: list[TTSIMObject], - module_name: str, -) -> None: - """Raises an ConflictingTimeDependentObjectsError if multiple objects with the - same leaf name are active at the same time. - - Parameters - ---------- - ttsim_objects - List of TTSIMObjects to check for conflicts. - module_name - The name of the module from which the TTSIMObjects are extracted. - - Raises - ------ - ConflictingTimeDependentObjectsError - If multiple objects with the same leaf name are active at the same time. - """ - # Create mapping from leaf names to objects. - leaf_names_to_objects = {} - for obj in ttsim_objects: - if obj.leaf_name in leaf_names_to_objects: - leaf_names_to_objects[obj.leaf_name].append(obj) - else: - leaf_names_to_objects[obj.leaf_name] = [obj] - - # Check for overlapping start and end dates for time-dependent functions. - for leaf_name, objects in leaf_names_to_objects.items(): - dates_active = [(f.start_date, f.end_date) for f in objects] - for (start1, end1), (start2, end2) in itertools.combinations(dates_active, 2): - if start1 <= end2 and start2 <= end1: - raise ConflictingTimeDependentObjectsError( - affected_ttsim_objects=objects, - leaf_name=leaf_name, - module_name=module_name, - overlap_start=max(start1, start2), - overlap_end=min(end1, end2), - ) - - -class ConflictingTimeDependentObjectsError(Exception): - def __init__( - self, - affected_ttsim_objects: list[TTSIMObject], - leaf_name: str, - module_name: str, - overlap_start: datetime.date, - overlap_end: datetime.date, - ): - self.affected_ttsim_objects = affected_ttsim_objects - self.leaf_name = leaf_name - self.module_name = module_name - self.overlap_start = overlap_start - self.overlap_end = overlap_end - - def __str__(self): - overlapping_objects = [ - obj.__getattribute__("original_function_name", obj.leaf_name) - for obj in self.affected_ttsim_objects - if obj - ] - return f""" - Functions with leaf name {self.leaf_name} in module {self.module_name} have - overlapping start and end dates. The following functions are affected: \n\n - {", ".join(overlapping_objects)} \n Overlapping - from {self.overlap_start} to {self.overlap_end}.""" - - -def _find_python_files_recursively(root_path: Path) -> list[Path]: +def _find_modules_recursively(root_path: Path) -> list[Path]: """ Find all Python files reachable from the given root path. @@ -185,42 +114,14 @@ def _find_python_files_recursively(root_path: Path) -> list[Path]: def _load_module(path: Path, root_path: Path) -> ModuleType: name = path.relative_to(root_path).with_suffix("").as_posix().replace("/", ".") - spec = importlib.util.spec_from_file_location( - name=name, - location=path, - ) + spec = importlib.util.spec_from_file_location(name=name, location=path) + # Assert that spec is not None and spec.loader is not None, required for mypy + _msg = f"Could not load module spec for {path}, {root_path}" + if spec is None: + raise ImportError(_msg) + assert spec.loader is not None, _msg module = importlib.util.module_from_spec(spec) sys.modules[name] = module spec.loader.exec_module(module) return module - - -def _convert_path_to_tree_path(path: Path, root_path: Path) -> tuple[str, ...]: - """ - Convert the path from the package root to a tree path. - - Removes the package root and module name from the path. - - Parameters - ---------- - path: - The path to a Python module. - root_path: - The root path of GETTSIM's taxes and transfers modules. - - Returns - ------- - The tree path, to be used as a key in the functions tree. - - Examples - -------- - >>> _convert_path_to_tree_path( - ... path=RESOURCE_DIR / "de" / "dir" / "functions.py", - ... root_path=RESOURCE_DIR, - ... ) - ("dir") - """ - parts = path.relative_to(root_path).parts - - return parts[:-1] diff --git a/src/ttsim/piecewise_polynomial.py b/src/ttsim/piecewise_polynomial.py index 0cc906c20a..5236aee46f 100644 --- a/src/ttsim/piecewise_polynomial.py +++ b/src/ttsim/piecewise_polynomial.py @@ -1,3 +1,5 @@ +from typing import TypedDict + import numpy from ttsim.config import numpy_or_jax as np @@ -9,7 +11,7 @@ def piecewise_polynomial( rates: np.ndarray, intercepts_at_lower_thresholds: np.ndarray, rates_multiplier: np.ndarray = 1, -): +) -> np.ndarray: """Calculate value of the piecewise function at `x`. If the first interval begins at -inf the polynomial of that interval can only have slope of 0. Requesting a value outside of the provided thresholds will lead to undefined behaviour. @@ -53,7 +55,11 @@ def piecewise_polynomial( return np.squeeze(out) -def get_piecewise_parameters(parameter_dict, parameter, func_type): +def get_piecewise_parameters( + parameter_dict: dict, + parameter: str, + func_type: str, +) -> dict: """Create the objects for piecewise polynomial. Parameters @@ -77,19 +83,19 @@ def get_piecewise_parameters(parameter_dict, parameter, func_type): ) # Extract lower thresholds. - lower_thresholds, upper_thresholds, thresholds = _check_thresholds( + lower_thresholds, upper_thresholds, thresholds = check_and_get_thresholds( parameter_dict=parameter_dict, parameter=parameter, keys=keys ) # Create and fill rates-array - rates = _check_rates( + rates = _check_and_get_rates( parameter_dict=parameter_dict, parameter=parameter, keys=keys, func_type=func_type, ) # Create and fill interecept-array - intercepts = _check_intercepts( + intercepts = _check_and_get_intercepts( parameter_dict=parameter_dict, parameter=parameter, lower_thresholds=lower_thresholds, @@ -106,7 +112,11 @@ def get_piecewise_parameters(parameter_dict, parameter, func_type): return piecewise_elements -def _check_thresholds(parameter_dict, parameter, keys): +def check_and_get_thresholds( + parameter_dict: dict, + parameter: str, + keys: list[int], +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """Check and transfer raw threshold data. Transfer and check raw threshold data, which needs to be specified in a @@ -173,7 +183,17 @@ def _check_thresholds(parameter_dict, parameter, keys): return lower_thresholds, upper_thresholds, thresholds -def _check_rates(parameter_dict, parameter, keys, func_type): +class Options(TypedDict): + necessary_keys: list[str] + rates_size: int + + +def _check_and_get_rates( + parameter_dict: dict, + parameter: str, + keys: list[int], + func_type: str, +) -> np.ndarray: """Check and transfer raw rates data. Transfer and check raw rates data, which needs to be specified in a @@ -191,14 +211,14 @@ def _check_rates(parameter_dict, parameter, keys, func_type): """ options_dict = { - "quadratic": { - "necessary_keys": ["rate_linear", "rate_quadratic"], - "rates_size": 2, - }, - "cubic": { - "necessary_keys": ["rate_linear", "rate_quadratic", "rate_cubic"], - "rates_size": 3, - }, + "quadratic": Options( + necessary_keys=["rate_linear", "rate_quadratic"], + rates_size=2, + ), + "cubic": Options( + necessary_keys=["rate_linear", "rate_quadratic", "rate_cubic"], + rates_size=3, + ), } # Allow for specification of rate with "rate" and "rate_linear" if func_type == "linear": @@ -227,9 +247,14 @@ def _check_rates(parameter_dict, parameter, keys, func_type): return rates -def _check_intercepts( - parameter_dict, parameter, lower_thresholds, upper_thresholds, rates, keys -): +def _check_and_get_intercepts( + parameter_dict: dict, + parameter: str, + lower_thresholds: np.ndarray, + upper_thresholds: np.ndarray, + rates: np.ndarray, + keys: list[int], +) -> np.ndarray: """Check and transfer raw intercepte data. If necessary create intercepts. Transfer and check raw rates data, which needs to be specified in a @@ -272,15 +297,18 @@ def _check_intercepts( pass else: - intercepts = create_intercepts( + intercepts = _create_intercepts( lower_thresholds, upper_thresholds, rates, intercepts[0] ) return intercepts -def create_intercepts( - lower_thresholds, upper_thresholds, rates, intercept_at_lowest_threshold -): +def _create_intercepts( + lower_thresholds: np.ndarray, + upper_thresholds: np.ndarray, + rates: np.ndarray, + intercept_at_lowest_threshold: np.ndarray, +) -> np.ndarray: """Create intercepts from raw data. Parameters @@ -309,7 +337,7 @@ def create_intercepts( intercepts_at_lower_thresholds = numpy.full_like(upper_thresholds, numpy.nan) intercepts_at_lower_thresholds[0] = intercept_at_lowest_threshold for i, up_thr in enumerate(upper_thresholds[:-1]): - intercepts_at_lower_thresholds[i + 1] = calculate_intercepts( + intercepts_at_lower_thresholds[i + 1] = _calculate_one_intercept( x=up_thr, lower_thresholds=lower_thresholds, upper_thresholds=upper_thresholds, @@ -319,9 +347,13 @@ def create_intercepts( return intercepts_at_lower_thresholds -def calculate_intercepts( - x, lower_thresholds, upper_thresholds, rates, intercepts_at_lower_thresholds -): +def _calculate_one_intercept( + x: float, + lower_thresholds: np.ndarray, + upper_thresholds: np.ndarray, + rates: np.ndarray, + intercepts_at_lower_thresholds: np.ndarray, +) -> float: """Calculate the intercepts from the raw data. Parameters diff --git a/src/ttsim/visualization.py b/src/ttsim/plot_dag.py similarity index 100% rename from src/ttsim/visualization.py rename to src/ttsim/plot_dag.py diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index 539b599a95..cedf0f80b1 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -2,6 +2,7 @@ import copy import datetime +import itertools from typing import TYPE_CHECKING, Any import dags.tree as dt @@ -9,9 +10,9 @@ import optree import yaml -from ttsim.loader import load_objects_tree_for_date +from ttsim.loader import active_ttsim_objects_tree, orig_ttsim_objects_tree from ttsim.piecewise_polynomial import ( - _check_thresholds, + check_and_get_thresholds, get_piecewise_parameters, piecewise_polynomial, ) @@ -32,6 +33,7 @@ from ttsim.typing import ( DashedISOString, + FlatTTSIMObjectDict, NestedTTSIMObjectDict, ) @@ -88,7 +90,7 @@ def grouping_levels(self) -> tuple[str, ...]: """The grouping levels of the policy environment.""" return tuple( name.rsplit("_", 1)[0] - for name in self._raw_objects_tree + for name in self._raw_objects_tree.keys() # noqa: SIM118 if name.endswith("_id") and name != "p_id" ) @@ -132,7 +134,7 @@ def upsert_objects( return result - def replace_all_parameters(self, params: dict[str, Any]): + def replace_all_parameters(self, params: dict[str, Any]) -> PolicyEnvironment: """ Replace all parameters of the policy environment. Note that this method does not modify the current policy environment but returns a new one. @@ -174,7 +176,10 @@ def set_up_policy_environment( # Check policy date for correct format and convert to datetime.date date = to_datetime(date) - functions_tree = load_objects_tree_for_date(resource_dir=resource_dir, date=date) + # Will move this line out eventually. Just include in tests, do not run every time. + fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + orig_ttsim_objects_tree=orig_ttsim_objects_tree(resource_dir) + ) params = {} if "_gettsim" in resource_dir.name: @@ -206,11 +211,80 @@ def set_up_policy_environment( params = _parse_vorsorgepauschale_rentenv_anteil(date, params) return PolicyEnvironment( - functions_tree, - params, + raw_objects_tree=active_ttsim_objects_tree( + resource_dir=resource_dir, date=date + ), + params=params, ) +def fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + orig_ttsim_objects_tree: FlatTTSIMObjectDict, +) -> None: + """Check overlapping time periods of TTSIMObjects. + + Raises + ------ + ConflictingTimeDependentObjectsError + If multiple objects with the same leaf name are active at the same time. + """ + + # Create mapping from leaf names to objects. + checker: dict[tuple[str, ...], list[TTSIMObject]] = {} + for orig_path, obj in orig_ttsim_objects_tree.items(): + path = (*orig_path[:-2], obj.leaf_name) + if path in checker: + checker[path].append(obj) + else: + checker[path] = [obj] + + # Check for overlapping start and end dates for time-dependent functions. + for path, objects in checker.items(): + dates_active = [(f.start_date, f.end_date) for f in objects] + for (start1, end1), (start2, end2) in itertools.combinations(dates_active, 2): + if start1 <= end2 and start2 <= end1: + raise ConflictingTimeDependentObjectsError( + affected_ttsim_objects=objects, + path=path, + overlap_start=max(start1, start2), + overlap_end=min(end1, end2), + ) + + +class ConflictingTimeDependentObjectsError(Exception): + def __init__( + self, + affected_ttsim_objects: list[TTSIMObject], + path: tuple[str, ...], + overlap_start: datetime.date, + overlap_end: datetime.date, + ) -> None: + self.affected_ttsim_objects = affected_ttsim_objects + self.path = path + self.overlap_start = overlap_start + self.overlap_end = overlap_end + + def __str__(self) -> str: + overlapping_objects = [ + obj.__getattribute__("original_function_name") + for obj in self.affected_ttsim_objects + if obj + ] + return f""" + Functions with path + + {self.path} + + have overlapping start and end dates. The following functions are affected: + + { + ''' + '''.join(overlapping_objects) + } + + Overlap from {self.overlap_start} to {self.overlap_end}.""" + + def _convert_to_policy_function_if_not_ttsim_object( input_object: Callable | TTSIMObject, ) -> TTSIMObject: @@ -254,7 +328,7 @@ def _fail_if_group_ids_are_outside_top_level_namespace( ) -def _parse_piecewise_parameters(tax_data): +def _parse_piecewise_parameters(tax_data: dict[str, Any]) -> dict[str, Any]: """Check if parameters are stored in implicit structures and align to general structure. @@ -268,7 +342,7 @@ def _parse_piecewise_parameters(tax_data): Parsed parameters ready to use in gettsim. """ - for param in tax_data: + for param in tax_data: # noqa: PLC0206 if isinstance(tax_data[param], dict): if "type" in tax_data[param]: if tax_data[param]["type"].startswith("piecewise"): @@ -288,7 +362,9 @@ def _parse_piecewise_parameters(tax_data): return tax_data -def _parse_kinderzuschl_max(date, params): +def _parse_kinderzuschl_max( + date: datetime.date, params: dict[str, Any] +) -> dict[str, Any]: """Prior to 2021, the maximum amount of the Kinderzuschlag was specified directly in the laws and directives. @@ -323,7 +399,9 @@ def _parse_kinderzuschl_max(date, params): return params -def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): +def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005( + date: datetime.date, params: dict[str, Any] +) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the current year as follows: @@ -360,7 +438,9 @@ def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005(date, params): return params -def _parse_vorsorgepauschale_rentenv_anteil(date, params): +def _parse_vorsorgepauschale_rentenv_anteil( + date: datetime.date, params: dict[str, Any] +) -> dict[str, Any]: """Calculate the share of pension contributions to be deducted for Lohnsteuer increases by year. @@ -421,7 +501,7 @@ def _load_parameter_group_from_yaml( """ - def subtract_years_from_date(date, years): + def subtract_years_from_date(date: datetime.date, years: int) -> datetime.date: """Subtract one or more years from a date object.""" try: date = date.replace(year=date.year - years) @@ -431,7 +511,7 @@ def subtract_years_from_date(date, years): date = date.replace(year=date.year - years, day=date.day - 1) return date - def set_date_to_beginning_of_year(date): + def set_date_to_beginning_of_year(date: datetime.date) -> datetime.date: """Set date to the beginning of the year.""" date = date.replace(month=1, day=1) @@ -455,15 +535,15 @@ def set_date_to_beginning_of_year(date): policy_dates = sorted( key for key in raw_group_data[param] if isinstance(key, datetime.date) ) - past_policies = [d for d in policy_dates if d <= date] if not past_policies: # If no policy exists, then we check if the policy maybe agrees right now # with another one. # Otherwise, do not create an entry for this parameter. - if "deviation_from" in raw_group_data[param][numpy.min(policy_dates)]: - future_policy = raw_group_data[param][numpy.min(policy_dates)] + min_policy_date = numpy.array(policy_dates).min() + if "deviation_from" in raw_group_data[param][min_policy_date]: + future_policy = raw_group_data[param][min_policy_date] if "." in future_policy["deviation_from"]: path_list = future_policy["deviation_from"].split(".") params_temp = _load_parameter_group_from_yaml( @@ -476,7 +556,8 @@ def set_date_to_beginning_of_year(date): out_params[param] = params_temp[path_list[1]] else: - policy_in_place = raw_group_data[param][numpy.max(past_policies)] + max_past_policy_date = numpy.array(past_policies).max() + policy_in_place = raw_group_data[param][max_past_policy_date] if "scalar" in policy_in_place: if policy_in_place["scalar"] == "inf": out_params[param] = numpy.inf @@ -494,7 +575,7 @@ def set_date_to_beginning_of_year(date): ) if "deviation_from" in policy_in_place: if policy_in_place["deviation_from"] == "previous": - new_date = numpy.max(past_policies) - datetime.timedelta(days=1) + new_date = max_past_policy_date - datetime.timedelta(days=1) out_params[param] = _load_parameter_group_from_yaml( new_date, group, parameters=[param], yaml_path=yaml_path )[param] @@ -507,7 +588,7 @@ def set_date_to_beginning_of_year(date): yaml_path=yaml_path, )[path_list[1]] for key in value_keys: - key_list = [] + key_list: list[str] = [] out_params[param][key] = transfer_dictionary( policy_in_place[key], copy.deepcopy(out_params[param][key]), @@ -551,67 +632,16 @@ def set_date_to_beginning_of_year(date): out_params["datum"] = numpy.datetime64(date) - # Load rounding parameters if they exist - if "rounding" in raw_group_data: - out_params["rounding"] = _load_rounding_parameters( - date, raw_group_data["rounding"] - ) return out_params -def _load_rounding_parameters( - date: datetime.date, - rounding_spec: dict[str, Any], +def transfer_dictionary( + remaining_dict: dict[str, Any] | Any, new_dict: dict[str, Any], key_list: list[str] ) -> dict[str, Any]: - """Load rounding parameters for a specific date from a dictionary. - - Parameters - ---------- - date - The date for which the policy system is set up. - rounding_spec - - Keys: Functions to be rounded. - - Values: Rounding parameters for all dates - - Returns - ------- - Loaded rounding parameters. - - Keys: Functions to be rounded. - - Values: Rounding parameters for the specified date - - """ - out = {} - rounding_parameters = ["direction", "base"] - - # Load values of all parameters at the specified date. - for function_name, rounding_spec_func in rounding_spec.items(): - # Find all specified policy dates before date. - policy_dates_before_date = sorted( - key - for key in rounding_spec_func - if isinstance(key, datetime.date) and key <= date - ) - - # If any rounding specs are defined for a date before the specified - # date, copy them to params dictionary. - # If no appropriate rounding specs are found for the requested date, - # the function will not appear in the returned dictionary. - # Note this will raise an error later unless the user adds an - # appropriate rounding specification to the parameters dictionary. - if policy_dates_before_date: - policy_date_in_place = numpy.max(policy_dates_before_date) - policy_in_place = rounding_spec_func[policy_date_in_place] - out[function_name] = {} - for key in [k for k in policy_in_place if k in rounding_parameters]: - out[function_name][key] = policy_in_place[key] - return out - - -def transfer_dictionary(remaining_dict, new_dict, key_list): # To call recursive, always check if object is a dict if isinstance(remaining_dict, dict): for key in remaining_dict: - key_list_updated = [*key_list, key] + key_list_updated: list[str] = [*key_list, key] new_dict = transfer_dictionary( remaining_dict[key], new_dict, key_list_updated ) @@ -643,7 +673,9 @@ def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( ) -def add_progressionsfaktor(params_dict, parameter): +def add_progressionsfaktor( + params_dict: dict[str | int, Any], parameter: str +) -> dict[str | int, Any]: """Quadratic factor of tax tariff function. The German tax tariff is defined on several income intervals with distinct @@ -660,9 +692,9 @@ def add_progressionsfaktor(params_dict, parameter): out_dict = copy.deepcopy(params_dict) interval_keys = sorted(key for key in out_dict if isinstance(key, int)) # Check and extract lower thresholds. - lower_thresholds, upper_thresholds, thresholds = _check_thresholds( + lower_thresholds, upper_thresholds = check_and_get_thresholds( params_dict, parameter, interval_keys - ) + )[:2] for key in interval_keys: if "rate_quadratic" not in out_dict[key]: out_dict[key]["rate_quadratic"] = ( diff --git a/src/ttsim/prepare_data.py b/src/ttsim/prepare_data.py index e779b13b7d..2da9c41c49 100644 --- a/src/ttsim/prepare_data.py +++ b/src/ttsim/prepare_data.py @@ -100,7 +100,7 @@ def _fail_if_mapper_has_incorrect_format( non_string_paths = [ str(path) - for path in optree.tree_paths(inputs_tree_to_df_columns, none_is_leaf=True) + for path in optree.tree_paths(inputs_tree_to_df_columns, none_is_leaf=True) # type: ignore[arg-type] if not all(isinstance(part, str) for part in path) ] if non_string_paths: diff --git a/src/ttsim/rounding.py b/src/ttsim/rounding.py index 3d39621cc6..56b618f67b 100644 --- a/src/ttsim/rounding.py +++ b/src/ttsim/rounding.py @@ -2,12 +2,17 @@ import functools from dataclasses import dataclass -from typing import Literal, get_args +from typing import TYPE_CHECKING, Literal, ParamSpec, get_args -import numpy as np +from ttsim.config import numpy_or_jax as np ROUNDING_DIRECTION = Literal["up", "down", "nearest"] +if TYPE_CHECKING: + from collections.abc import Callable + +P = ParamSpec("P") + @dataclass class RoundingSpec: @@ -16,7 +21,7 @@ class RoundingSpec: to_add_after_rounding: int | float = 0 reference: str | None = None - def __post_init__(self): + def __post_init__(self) -> None: """Validate the types of base and to_add_after_rounding.""" if type(self.base) not in [int, float]: raise ValueError(f"base needs to be a number, got {self.base!r}") @@ -30,15 +35,13 @@ def __post_init__(self): f"Additive part must be a number, got {self.to_add_after_rounding!r}" ) - def apply_rounding(self, func: callable) -> callable: + def apply_rounding(self, func: Callable[P, np.ndarray]) -> Callable[P, np.ndarray]: """Decorator to round the output of a function. Parameters ---------- func Function to be rounded. - name - Name of the function to be rounded. Returns ------- @@ -47,7 +50,7 @@ def apply_rounding(self, func: callable) -> callable: # Make sure that signature is preserved. @functools.wraps(func) - def wrapper(*args, **kwargs): + def wrapper(*args: P.args, **kwargs: P.kwargs) -> np.ndarray: out = func(*args, **kwargs) if self.direction == "up": diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index 63bc03d32e..55e1b288b7 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -4,7 +4,7 @@ import inspect import re import textwrap -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any import dags.tree as dt import optree @@ -24,7 +24,7 @@ _DASHED_ISO_DATE_REGEX = re.compile(r"\d{4}-\d{2}-\d{2}") -def to_datetime(date: datetime.date | DashedISOString): +def to_datetime(date: datetime.date | DashedISOString) -> datetime.date: if isinstance(date, datetime.date): return date if isinstance(date, str) and _DASHED_ISO_DATE_REGEX.fullmatch(date): @@ -35,7 +35,7 @@ def to_datetime(date: datetime.date | DashedISOString): ) -def validate_date_range(start: datetime.date, end: datetime.date): +def validate_date_range(start: datetime.date, end: datetime.date) -> None: if start > end: raise ValueError(f"The start date {start} must be before the end date {end}.") @@ -138,12 +138,12 @@ class KeyErrorMessage(str): __slots__ = () - def __repr__(self): + def __repr__(self) -> str: return str(self) -def format_list_linewise(list_): - formatted_list = '",\n "'.join(list_) +def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, unused-ignore] + formatted_list = '",\n "'.join(some_list) return textwrap.dedent( """ [ @@ -186,7 +186,9 @@ def create_tree_from_path_and_value( return nested_dict -def merge_trees(left: dict, right: dict) -> dict: +def merge_trees( + left: NestedTTSIMObjectDict, right: NestedTTSIMObjectDict +) -> NestedTTSIMObjectDict: """ Merge two pytrees, raising an error if a path is present in both trees. @@ -208,7 +210,9 @@ def merge_trees(left: dict, right: dict) -> dict: return upsert_tree(base=left, to_upsert=right) -def upsert_tree(base: dict, to_upsert: dict) -> dict: +def upsert_tree( + base: NestedTTSIMObjectDict, to_upsert: NestedTTSIMObjectDict +) -> NestedTTSIMObjectDict: """ Upsert a tree into another tree for trees defined by dictionaries only. @@ -387,7 +391,7 @@ def get_names_of_required_arguments(function: PolicyFunction) -> list[str]: return [p for p in parameters if parameters[p].default == parameters[p].empty] -def remove_group_suffix(col, groupings): +def remove_group_suffix(col: str, groupings: tuple[str, ...]) -> str: out = col for g in groupings: out = out.removesuffix(f"_{g}") @@ -395,15 +399,11 @@ def remove_group_suffix(col, groupings): return out -Key: TypeVar = TypeVar("Key") -Out: TypeVar = TypeVar("Out") - - def join( foreign_key: np.ndarray, primary_key: np.ndarray, target: np.ndarray, - value_if_foreign_key_is_missing: Out, + value_if_foreign_key_is_missing: float | bool, ) -> np.ndarray: """ Given a foreign key, find the corresponding primary key, and return the target at @@ -504,7 +504,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: def get_name_of_group_by_id( target_name: str, groupings: tuple[str, ...], -) -> str: +) -> str | None: """Get the group-by-identifier name for some target. The group-by-identifier is the name of the group identifier that is embedded in the diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/ttsim_objects.py index 43b678ccb3..d680248174 100644 --- a/src/ttsim/ttsim_objects.py +++ b/src/ttsim/ttsim_objects.py @@ -5,7 +5,7 @@ import inspect from dataclasses import dataclass from enum import StrEnum -from typing import TYPE_CHECKING, Literal, TypeVar +from typing import TYPE_CHECKING, Generic, Literal, ParamSpec, TypeVar import dags import dags.tree as dt @@ -47,7 +47,8 @@ from ttsim.config import numpy_or_jax as np from ttsim.typing import DashedISOString -T = TypeVar("T") +FunArgTypes = ParamSpec("FunArgTypes") +ReturnType = TypeVar("ReturnType") DEFAULT_START_DATE = datetime.date(1900, 1, 1) DEFAULT_END_DATE = datetime.date(2100, 12, 31) @@ -119,7 +120,7 @@ def policy_input( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, foreign_key_type: FKType = FKType.IRRELEVANT, -) -> PolicyInput: +) -> Callable[[Callable], PolicyInput]: """ Decorator that makes a (dummy) function a `PolicyInput`. @@ -140,7 +141,7 @@ def policy_input( Returns ------- - A PolicyInput object. + A decorator that returns a PolicyInput object. """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) @@ -189,16 +190,16 @@ def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable) -> None: @dataclass(frozen=True) -class TTSIMFunction(TTSIMObject): +class TTSIMFunction(TTSIMObject, Generic[FunArgTypes, ReturnType]): """ Base class for all TTSIM functions. """ - function: Callable + function: Callable[FunArgTypes, ReturnType] rounding_spec: RoundingSpec | None = None foreign_key_type: FKType = FKType.IRRELEVANT - def __post_init__(self): + def __post_init__(self) -> None: self._fail_if_rounding_has_wrong_type(self.rounding_spec) # Expose the signature of the wrapped function for dependency resolution _frozen_safe_update_wrapper(self, self.function) @@ -222,7 +223,9 @@ def _fail_if_rounding_has_wrong_type( f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" ) - def __call__(self, *args, **kwargs): + def __call__( + self, *args: FunArgTypes.args, **kwargs: FunArgTypes.kwargs + ) -> ReturnType: return self.function(*args, **kwargs) @property @@ -289,7 +292,7 @@ def policy_function( rounding_spec: RoundingSpec | None = None, vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "loop", foreign_key_type: FKType = FKType.IRRELEVANT, -) -> PolicyFunction: +) -> Callable[[Callable], PolicyFunction]: """ Decorator that makes a `PolicyFunction` from a function. @@ -325,7 +328,7 @@ def policy_function( Returns ------- - A PolicyFunction object. + A decorator that returns a PolicyFunction object. """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) @@ -353,9 +356,9 @@ def _vectorize_func( ) -> Callable: if vectorization_strategy == "loop": vectorized = functools.wraps(func)(numpy.vectorize(func)) - vectorized.__signature__ = inspect.signature(func) - vectorized.__globals__ = func.__globals__ - vectorized.__closure__ = func.__closure__ + vectorized.__signature__ = inspect.signature(func) # type: ignore[attr-defined] + vectorized.__globals__ = func.__globals__ # type: ignore[attr-defined] + vectorized.__closure__ = func.__closure__ # type: ignore[attr-defined] elif vectorization_strategy == "vectorize": backend = "jax" if IS_JAX_INSTALLED else "numpy" vectorized = make_vectorizable(func, backend=backend) @@ -409,7 +412,7 @@ def group_creation_function( leaf_name: str | None = None, start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, -) -> GroupCreationFunction: +) -> Callable[[Callable], GroupCreationFunction]: """ Decorator that creates a group_by function from a function. """ @@ -480,7 +483,7 @@ def agg_by_group_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> AggByGroupFunction: +) -> Callable[[Callable], AggByGroupFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -511,7 +514,7 @@ def inner(func: Callable) -> AggByGroupFunction: ) functools.update_wrapper(agg_func, func) - agg_func.__signature__ = inspect.signature(func) + agg_func.__signature__ = inspect.signature(func) # type: ignore[attr-defined] return AggByGroupFunction( leaf_name=leaf_name if leaf_name else func.__name__, @@ -525,7 +528,7 @@ def inner(func: Callable) -> AggByGroupFunction: return inner -def _fail_if_group_id_is_invalid(group_ids: set[str], orig_location: str): +def _fail_if_group_id_is_invalid(group_ids: set[str], orig_location: str) -> None: if len(group_ids) != 1: raise ValueError( "Require exactly one group identifier ending with '_id' for " @@ -534,7 +537,7 @@ def _fail_if_group_id_is_invalid(group_ids: set[str], orig_location: str): ) -def _fail_if_other_arg_is_present(other_args: set[str], orig_location: str): +def _fail_if_other_arg_is_present(other_args: set[str], orig_location: str) -> None: if other_args: raise ValueError( "There must be no argument besides identifiers for counting. Got: " @@ -542,7 +545,7 @@ def _fail_if_other_arg_is_present(other_args: set[str], orig_location: str): ) -def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str): +def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str) -> None: if len(other_args) != 1: raise ValueError( "There must be exactly one argument besides identifiers for aggregations. " @@ -604,7 +607,7 @@ def agg_by_p_id_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> AggByPIDFunction: +) -> Callable[[Callable], AggByPIDFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -647,7 +650,7 @@ def inner(func: Callable) -> AggByPIDFunction: ) functools.update_wrapper(agg_func, func) - agg_func.__signature__ = inspect.signature(func) + agg_func.__signature__ = inspect.signature(func) # type: ignore[attr-defined] return AggByPIDFunction( leaf_name=leaf_name if leaf_name else func.__name__, @@ -661,7 +664,7 @@ def inner(func: Callable) -> AggByPIDFunction: return inner -def _fail_if_p_id_is_not_present(args: set[str], orig_location: str): +def _fail_if_p_id_is_not_present(args: set[str], orig_location: str) -> None: if "p_id" not in args: raise ValueError( "The function must have the argument named 'p_id' for aggregation by p_id. " @@ -669,7 +672,7 @@ def _fail_if_p_id_is_not_present(args: set[str], orig_location: str): ) -def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str): +def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str) -> None: if len(other_p_ids) != 1: raise ValueError( "Require exactly one identifier starting with 'p_id_' for " @@ -699,7 +702,7 @@ class TimeConversionFunction(TTSIMFunction): source: str | None = None - def __post_init__(self): + def __post_init__(self) -> None: if self.source is None: raise ValueError("The source must be specified.") super().__post_init__() diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index 6fc46b9421..ba5169b5dc 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -17,6 +17,7 @@ from ttsim.ttsim_objects import PolicyInput, TTSIMFunction, TTSIMObject NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] + FlatTTSIMObjectDict = Mapping[tuple[str, ...], TTSIMObject] QualNameTTSIMObjectDict = Mapping[str, TTSIMObject] # Specialise from dags' GenericCallable types to GETTSIM's functions. diff --git a/src/ttsim/vectorization.py b/src/ttsim/vectorization.py index 92cefcea95..0cde027a3c 100644 --- a/src/ttsim/vectorization.py +++ b/src/ttsim/vectorization.py @@ -5,6 +5,7 @@ import types from collections.abc import Callable from importlib import import_module +from typing import cast from ttsim.config import numpy_or_jax @@ -83,10 +84,9 @@ def _make_vectorizable_ast(func: Callable, module: str) -> ast.Module: AST of new function with altered ast. """ tree = _func_to_ast(func) - tree = _add_parent_attr_to_ast(tree) # get function location for error messages - func_loc = func.__module__ + "/" + func.__name__ + func_loc = f"{func.__module__}/{func.__name__}" # transform tree nodes new_tree = Transformer(module, func_loc).visit(tree) @@ -108,13 +108,6 @@ def _remove_decorator_lines(source: str) -> str: return "def " + source.split("\ndef ")[1] -def _add_parent_attr_to_ast(tree: ast.AST) -> ast.AST: - for node in ast.walk(tree): - for child in ast.iter_child_nodes(node): - child.parent = node - return tree - - # ====================================================================================== # Transformation class # ====================================================================================== @@ -131,20 +124,22 @@ def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 node, module=self.module, func_loc=self.func_loc ) - def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.AST: # noqa: N802 + def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.UnaryOp | ast.Call: # noqa: N802 if isinstance(node.op, ast.Not): - out = _not_to_call(node, module=self.module) + return _not_to_call(node, module=self.module) else: - out = node - return out + return node - def visit_BoolOp(self, node: ast.BoolOp) -> ast.AST: # noqa: N802 + def visit_BoolOp(self, node: ast.BoolOp) -> ast.Call: # noqa: N802 self.generic_visit(node) return _boolop_to_call(node, module=self.module) - def visit_If(self, node: ast.If) -> ast.AST: # noqa: N802 + def visit_If( # noqa: N802 + self, node: ast.If + ) -> ast.Call | ast.Return | ast.Assign | ast.AugAssign: self.generic_visit(node) call = _if_to_call(node, module=self.module, func_loc=self.func_loc) + out: ast.Call | ast.Return | ast.Assign | ast.AugAssign if isinstance(node.body[0], ast.Return): out = ast.Return(call) elif isinstance(node.body[0], (ast.Assign, ast.AugAssign)): @@ -179,19 +174,19 @@ def _not_to_call(node: ast.UnaryOp, module: str) -> ast.Call: def _if_to_call(node: ast.If, module: str, func_loc: str) -> ast.Call: """Transform If statement to Call.""" - args = [node.test, node.body[0].value] + args = [node.test, node.body[0].value] # type: ignore[attr-defined] if len(node.orelse) > 1 or len(node.body) > 1: msg = _too_many_operations_error_message(node, func_loc=func_loc) raise TranslateToVectorizableError(msg) elif node.orelse == []: if isinstance(node.body[0], ast.Return): - msg = _return_and_no_else_error_message(node, func_loc=func_loc) + msg = _return_and_no_else_error_message(node.body[0], func_loc=func_loc) raise TranslateToVectorizableError(msg) elif hasattr(node.body[0], "targets"): name = ast.Name(id=node.body[0].targets[0].id, ctx=ast.Load()) else: - name = ast.Name(id=node.body[0].target.id, ctx=ast.Load()) + name = ast.Name(id=node.body[0].target.id, ctx=ast.Load()) # type: ignore[attr-defined] args.append(name) elif isinstance(node.orelse[0], ast.Return): args.append(node.orelse[0].value) @@ -240,7 +235,7 @@ def _boolop_to_call(node: ast.BoolOp, module: str) -> ast.Call: """Transform BoolOp operation to Call.""" operation = {ast.And: "logical_and", ast.Or: "logical_or"}[type(node.op)] - def _constructor(left: ast.AST, right: ast.AST) -> ast.Call: + def _constructor(left: ast.Call | ast.expr, right: ast.Call | ast.expr) -> ast.Call: """Construct calls of the form `module.logical_(and|or)(left, right)`.""" return ast.Call( func=ast.Attribute( @@ -252,12 +247,12 @@ def _constructor(left: ast.AST, right: ast.AST) -> ast.Call: keywords=[], ) - values = [ + values: list[ast.Call | ast.expr] = [ _boolop_to_call(v, module=module) if isinstance(v, ast.BoolOp) else v for v in node.values ] - return functools.reduce(_constructor, values) + return cast("ast.Call", functools.reduce(_constructor, values)) def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast.AST: @@ -269,7 +264,7 @@ def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast if not transform_node: return node - func_id = node.func.id + func_id = node.func.id # type: ignore[attr-defined] call = node args = node.args @@ -315,7 +310,7 @@ class TranslateToVectorizableError(ValueError): def _too_many_arguments_call_error_message(node: ast.Call, func_loc: str) -> str: source = _node_to_formatted_source(node) - _func_name = node.func.id + _func_name = node.func.id # type: ignore[attr-defined] return ( "\n\n" f"The function {_func_name} is called with too many arguments. Please only use " diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py index 183149a1d0..8794cd48c2 100644 --- a/tests/ttsim/mettsim/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -11,9 +11,9 @@ def sp_id( """ Compute the spouse (sp) group ID for each person. """ - p_id_to_sp_id = {} - next_sp_id = 0 - result = [] + p_id_to_sp_id: dict[int, int] = {} + next_sp_id: int = 0 + result: list[int] = [] for index, current_p_id in enumerate(p_id): current_p_id_spouse = p_id_spouse[index] @@ -42,8 +42,8 @@ def fam_id( Compute the family ID for each person. """ # Build indexes - p_id_to_index = {} - p_id_to_p_ids_children = {} + p_id_to_index: dict[int, int] = {} + p_id_to_p_ids_children: dict[int, list[int]] = {} for index, current_p_id in enumerate(p_id): p_id_to_index[current_p_id] = index diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 5771766178..56c7912ec2 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -30,7 +30,7 @@ def claim_of_child_y( def child_eligible( age: int, payroll_tax_params: dict, - in_same_household_as_recipient: float, + in_same_household_as_recipient: bool, ) -> bool: return ( age <= payroll_tax_params["child_tax_credit"]["max_age"] diff --git a/tests/ttsim/test_dates_active.py b/tests/ttsim/test_dates_active.py index fc83d3f675..6436a1a223 100644 --- a/tests/ttsim/test_dates_active.py +++ b/tests/ttsim/test_dates_active.py @@ -1,11 +1,18 @@ +from __future__ import annotations + import datetime +from typing import TYPE_CHECKING import pytest -from ttsim import ConflictingTimeDependentObjectsError, policy_function -from ttsim.loader import _fail_if_multiple_ttsim_objects_are_active_at_the_same_time +from ttsim import policy_function +from ttsim.policy_environment import ( + ConflictingTimeDependentObjectsError, + fail_if_multiple_ttsim_objects_are_active_at_the_same_time, +) -# Start date ----------------------------------------------- +if TYPE_CHECKING: + from ttsim.typing import FlatTTSIMObjectDict @pytest.mark.parametrize( @@ -125,83 +132,136 @@ def identity(x): @pytest.mark.parametrize( - "functions", + "orig_ttsim_objects_tree", [ - [ - policy_function( + # Same global module, no overlapping periods. + { + ("a",): policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - policy_function( + ("b",): policy_function( start_date="2023-02-01", end_date="2023-02-28", leaf_name="f", )(identity), - ], - [ - policy_function( + }, + # Same submodule, no overlapping periods. + { + ("c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="g", + )(identity), + }, + # Different modules, no overlapping periods. + { + ("c", "f"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + )(identity), + ("d", "f"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + )(identity), + }, + # Different paths, overlapping periods. + { + ("x", "c", "a"): policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - policy_function( + ("y", "c", "b"): policy_function( start_date="2023-01-01", end_date="2023-02-28", leaf_name="g", )(identity), - ], + }, ], ) -def test_dates_active_no_conflicts(functions): - _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - ttsim_objects=functions, module_name="" +def test_dates_active_no_conflicts(orig_ttsim_objects_tree): + fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + orig_ttsim_objects_tree=orig_ttsim_objects_tree ) @pytest.mark.parametrize( - "functions", + "orig_ttsim_objects_tree", [ - [ - policy_function( + # Exact overlap. + { + ("a",): policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - policy_function( + ("b",): policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - ], - [ - policy_function( + }, + # Active period for "a" is subset of "b". + { + ("a"): policy_function( start_date="2023-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - policy_function( + ("b"): policy_function( start_date="2021-01-02", end_date="2023-02-01", leaf_name="f", )(identity), - ], - [ - policy_function( + }, + # Some overlap. + { + ("a",): policy_function( start_date="2023-01-02", end_date="2023-02-01", leaf_name="f", )(identity), - policy_function( + ("b",): policy_function( start_date="2022-01-01", end_date="2023-01-31", leaf_name="f", )(identity), - ], + }, + # Same as before, but defined in different modules. + { + ("c", "a"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + ("d", "b"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + # Same as before, but defined in different modules without leaf name. + { + ("c", "f"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + )(identity), + ("d", "f"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + )(identity), + }, ], ) -def test_dates_active_with_conflicts(functions): +def test_dates_active_with_conflicts(orig_ttsim_objects_tree: FlatTTSIMObjectDict): with pytest.raises(ConflictingTimeDependentObjectsError): - _fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - ttsim_objects=functions, module_name="" + fail_if_multiple_ttsim_objects_are_active_at_the_same_time( + orig_ttsim_objects_tree=orig_ttsim_objects_tree ) diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 113e0e2f11..20f5c5f37a 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -10,7 +10,7 @@ RESOURCE_DIR, ) from ttsim import PolicyInput -from ttsim.loader import load_objects_tree_for_date +from ttsim.policy_environment import active_ttsim_objects_tree from ttsim.shared import remove_group_suffix @@ -34,7 +34,7 @@ def all_function_names(): def time_indep_function_names(all_function_names): time_dependent_functions = {} for year in range(1990, 2023): - year_functions = load_objects_tree_for_date( + year_functions = active_ttsim_objects_tree( resource_dir=RESOURCE_DIR, date=datetime.date(year=year, month=1, day=1), ) diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index 47b0fd5119..e02151c970 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -8,15 +8,13 @@ from ttsim import policy_function from ttsim.loader import ( - _convert_path_to_tree_path, - _find_python_files_recursively, + _find_modules_recursively, _load_module, ) from ttsim.ttsim_objects import _vectorize_func if TYPE_CHECKING: from collections.abc import Callable - from pathlib import Path def test_load_path(): @@ -29,7 +27,7 @@ def test_load_path(): def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and AggregationSpecs.""" - all_files = _find_python_files_recursively(RESOURCE_DIR) + all_files = _find_modules_recursively(RESOURCE_DIR) assert "__init__.py" not in [file.name for file in all_files] @@ -56,27 +54,3 @@ def test_vectorize_func(vectorized_function: Callable) -> None: assert numpy.array_equal( vectorized_function(numpy.array([-1, 0, 2, 3])), numpy.array([0, 0, 4, 6]) ) - - -@pytest.mark.parametrize( - ( - "path", - "root_path", - "expected_tree_path", - ), - [ - ( - RESOURCE_DIR / "payroll_tax" / "child_tax_credit" / "child_tax_credit.py", - RESOURCE_DIR, - ("payroll_tax", "child_tax_credit"), - ), - (RESOURCE_DIR / "foo" / "bar.py", RESOURCE_DIR, ("foo",)), - (RESOURCE_DIR / "foo.py", RESOURCE_DIR, tuple()), # noqa: C408 - ], -) -def test_convert_path_to_tree_path( - path: Path, root_path: Path, expected_tree_path: tuple[str, ...] -) -> None: - assert ( - _convert_path_to_tree_path(path=path, root_path=root_path) == expected_tree_path - ) diff --git a/tests/ttsim/test_visualizations.py b/tests/ttsim/test_plot_dag.py similarity index 82% rename from tests/ttsim/test_visualizations.py rename to tests/ttsim/test_plot_dag.py index 942b9b0225..c2b96ee437 100644 --- a/tests/ttsim/test_visualizations.py +++ b/tests/ttsim/test_plot_dag.py @@ -3,7 +3,7 @@ from mettsim.config import RESOURCE_DIR from ttsim import PolicyEnvironment, plot_dag, set_up_policy_environment -from ttsim.visualization import ( +from ttsim.plot_dag import ( _get_selected_nodes, _kth_order_neighbors, _node_and_ancestors, @@ -14,7 +14,7 @@ environment = set_up_policy_environment(date="2020-01-01", resource_dir=RESOURCE_DIR) -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3, 4}), (5, 1, 2, {0, 1, 2, 3})], @@ -25,7 +25,7 @@ def test_kth_order_neighbors(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {0, 1, 2, 3}), (5, 1, None, {0, 1})], @@ -36,7 +36,7 @@ def test_node_and_ancestors(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {2, 3}), (5, 1, 2, {0, 1})], @@ -47,7 +47,7 @@ def test_node_and_ancestors_order(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, None, {3, 4, 5}), (5, 1, None, {1, 2, 3, 4, 5})], @@ -58,7 +58,7 @@ def test_node_and_descendants(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, node, order, expected", [(5, 3, 1, {3, 4}), (5, 1, 2, {1, 2, 3})], @@ -69,7 +69,7 @@ def test_node_and_descendants_order(n_nodes, node, order, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selector, expected", [ @@ -88,7 +88,7 @@ def test_get_selected_nodes(n_nodes, selector, expected): assert nodes == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( "n_nodes, selectors, expected", [ @@ -115,7 +115,7 @@ def test_select_nodes_in_dag(n_nodes, selectors, expected): assert set(dag.nodes) == expected -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_plot_dag(): """Make sure that minimal example doesn't produce an error.""" plot_dag( @@ -124,7 +124,7 @@ def test_plot_dag(): ) -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_should_fail_if_target_is_missing(): with pytest.raises( ValueError, match="The following targets have no corresponding function" @@ -135,14 +135,14 @@ def test_should_fail_if_target_is_missing(): ) -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_one_dot_plot_dag(): """Make sure that the one dot graph example doesn't produce an error.""" selectors = "einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn" plot_dag(environment=environment, selectors=selectors) -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_10_dots_plot_dag(): """Make sure that when No.of nodes is larger than 10 or show_labels is false, the graph example doesn't produce an error and hover information works properly.""" @@ -153,7 +153,7 @@ def test_10_dots_plot_dag(): plot_dag(environment=environment, selectors=selector, orientation="h") -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_horizontal_plot_dag(): """Make sure that when we choose horizontal orientation, the graph example doesn't produce an error.""" @@ -169,7 +169,7 @@ def test_horizontal_plot_dag(): ) -@pytest.mark.skip(reason="Visualization module was not updated to the new interface.") +@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") def test_hover_source_code_plot_dag(): """Make sure that when hover information is source code, the graph example doesn't produce an error and works properly.""" diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index 84b35f94cb..4e669525e5 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -4,7 +4,7 @@ from datetime import date, timedelta from pathlib import Path -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING import optree import pandas as pd @@ -21,7 +21,7 @@ from ttsim.policy_environment import ( _fail_if_name_of_last_branch_element_not_leaf_name_of_function, _load_parameter_group_from_yaml, - load_objects_tree_for_date, + active_ttsim_objects_tree, ) if TYPE_CHECKING: @@ -145,15 +145,15 @@ def test_access_different_date_jahresanfang(): ], ) def test_load_functions_tree_for_date( - tree: dict[str, Any], + tree: NestedTTSIMObjectDict, last_day: date, function_name_last_day: str, function_name_next_day: str, ): - functions_last_day = load_objects_tree_for_date( + functions_last_day = active_ttsim_objects_tree( resource_dir=RESOURCE_DIR, date=last_day ) - functions_next_day = load_objects_tree_for_date( + functions_next_day = active_ttsim_objects_tree( resource_dir=RESOURCE_DIR, date=last_day + timedelta(days=1) ) diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 6b99ace040..5b0ba02192 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -16,7 +16,7 @@ from numpy.testing import assert_array_equal from ttsim import GroupCreationFunction, PolicyInput, policy_function -from ttsim.loader import load_objects_tree_for_date +from ttsim.policy_environment import active_ttsim_objects_tree from ttsim.vectorization import ( TranslateToVectorizableError, _is_lambda_function, @@ -232,13 +232,11 @@ def f15_exp(x): def f16(x): - n = int(sum(x)) - return max(n) + return float(sum(x)) def f16_exp(x): - n = int(numpy.sum(x)) - return numpy.max(n) + return float(numpy.sum(x)) def f17(x): @@ -254,13 +252,11 @@ def f17_exp(x): def f18(x): - n = int(any(x)) + 1 - return sum(n) + return int(any(x)) + 1 def f18_exp(x): - n = int(numpy.any(x)) + 1 - return numpy.sum(n) + return int(numpy.any(x)) + 1 x = numpy.arange(-10, 10) @@ -378,7 +374,7 @@ def test_disallowed_operation_wrapper(func): [ pf.function for pf in dt.flatten_to_tree_paths( - load_objects_tree_for_date( + active_ttsim_objects_tree( resource_dir=Path(__file__).parent / "mettsim", date=datetime.date(year=year, month=1, day=1), ) @@ -413,7 +409,7 @@ def mock__elterngeld__geschwisterbonus_m( @pytest.mark.parametrize("backend", backends) def test_geschwisterbonus_m(backend): - full = modules.get(backend).full + full = modules[backend].full # Test original gettsim function on scalar input # ================================================================================== @@ -476,7 +472,7 @@ def mock__elterngeld__grundsätzlich_anspruchsberechtigt( @pytest.mark.parametrize("backend", backends) def test_grundsätzlich_anspruchsberechtigt(backend): - full = modules.get(backend).full + full = modules[backend].full # Test original gettsim function on scalar input # ================================================================================== @@ -627,7 +623,7 @@ def f_b(a: int) -> int: "a": f_a, "b": f_b, }, - targets={"b"}, + targets=["b"], ) vectorized = make_vectorizable(f_dags, backend="numpy") diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index b7175fa00b..08b4d0dd8a 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -125,32 +125,6 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: return out -def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: - provided_inputs = test_data["inputs"].get("provided", {}) - assumed_inputs = test_data["inputs"].get("assumed", {}) - - unflattened_dict = {} - unflattened_dict["inputs"] = {} - unflattened_dict["outputs"] = {} - - if provided_inputs: - unflattened_dict["inputs"]["provided"] = dt.unflatten_from_qual_names( - provided_inputs - ) - else: - unflattened_dict["inputs"]["provided"] = {} - if assumed_inputs: - unflattened_dict["inputs"]["assumed"] = dt.unflatten_from_qual_names( - assumed_inputs - ) - else: - unflattened_dict["inputs"]["assumed"] = {} - - unflattened_dict["outputs"] = dt.unflatten_from_qual_names(test_data["outputs"]) - - return unflattened_dict["inputs"], unflattened_dict["outputs"] - - def _is_skipped(test_file: Path) -> bool: return "skip" in test_file.stem or "skip" in test_file.parent.name From 7980a5784ab3115cdd5f19acdc6c8e5a585e50b1 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Thu, 1 May 2025 06:57:34 +0200 Subject: [PATCH 030/109] Make METTSIM largely jittable (#879) 1. Set all METTSIM policy functions to be jittable (`vectorization_strategy=vectorize`) 2. Make group creation run with Jax, but not jitted 3. Call `compute_taxes_and_transfers` twice in `PolicyTest`; first create the groups, then jit the `tax_transfer_function` and run that. --------- Co-authored-by: Tim Mensinger <mensingertim@gmail.com> --- CHANGES.md | 6 +- pixi.lock | 244 ++++++++---------- src/ttsim/aggregation.py | 158 ++---------- src/ttsim/aggregation_jax.py | 58 +++-- src/ttsim/automatically_added_functions.py | 6 +- src/ttsim/compute_taxes_and_transfers.py | 29 ++- src/ttsim/ttsim_objects.py | 12 +- src/ttsim/typing.py | 15 +- tests/ttsim/mettsim/group_by_ids.py | 41 ++- .../ttsim/mettsim/housing_benefits/amount.py | 2 +- .../eligibility/eligibility.py | 18 +- .../mettsim/housing_benefits/income/income.py | 3 +- tests/ttsim/mettsim/payroll_tax/amount.py | 2 +- .../child_tax_credit/child_tax_credit.py | 4 +- .../mettsim/payroll_tax/income/amount.py | 2 +- .../mettsim/payroll_tax/income/deductions.py | 2 +- tests/ttsim/test_aggregation_functions.py | 189 ++++++++------ tests/ttsim/test_combine_functions.py | 34 ++- .../ttsim/test_compute_taxes_and_transfers.py | 90 ++++--- .../2025-01-01/amount_no_children.yaml | 12 +- tests/ttsim/test_jax_jit_kindergeld.py | 80 ------ tests/ttsim/test_mettsim.py | 7 +- tests/ttsim/test_rounding.py | 69 ++--- tests/ttsim/test_vectorization.py | 22 +- tests/ttsim/utils.py | 58 ++++- 25 files changed, 570 insertions(+), 593 deletions(-) delete mode 100644 tests/ttsim/test_jax_jit_kindergeld.py diff --git a/CHANGES.md b/CHANGES.md index 5c7a2b94e0..eaaf9cafe7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,11 +6,15 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished -- {gh}`887` Typing ({ghuser}`hmgaudecker`, {ghuser}`timmens`). +- {gh}`879` Vectorize METTSIM ({ghuser}`timmens`, {ghuser}`hmgaudecker`). +- {gh}`887` Enable typing ({ghuser}`hmgaudecker`, {ghuser}`timmens`). - {gh}`888` Remove SUPPORTED_GROUPINGS entirely, infer groupings from object names ({ghuser}`MImmesberger`). - {gh}`889` Refactor loader and fix check for time-dependent functions to span multiple modules that end up in the same namespace ({ghuser}`hmgaudecker`). +- {gh}`885`, {gh}`886`: Cleanups ({ghuser}`MImmesberger`). +- {gh}`867` Vectorize `piecewise_polynomial` ({ghuser}`mj023`). +- {gh}`880` Validate parameter files using json schema ({ghuser}`hmgaudecker`). - {gh}`876` Add DataFrame to NestedDataDict conversion ({ghuser}`MImmesberger`). - {gh}`873` Implement aggregation decorators ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`859` Add RoundingSpec dataclass ({ghuser}`hmgaudecker`, `MImmesberger`). diff --git a/pixi.lock b/pixi.lock index f92819654b..eeecdb15d4 100644 --- a/pixi.lock +++ b/pixi.lock @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -420,7 +420,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda @@ -501,7 +501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -657,7 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda @@ -738,7 +738,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -888,7 +888,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda @@ -982,7 +982,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -1160,7 +1160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda @@ -1257,7 +1257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -1417,7 +1417,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda @@ -1498,7 +1498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -1618,8 +1618,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda @@ -1658,7 +1658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda @@ -1739,7 +1739,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -1893,7 +1893,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda @@ -1987,7 +1987,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -2169,7 +2169,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda @@ -2266,7 +2266,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -2422,7 +2422,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda @@ -2503,7 +2503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -2659,7 +2659,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda @@ -2740,7 +2740,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -2890,7 +2890,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda @@ -2984,7 +2984,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -3162,7 +3162,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda @@ -3259,7 +3259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -3415,7 +3415,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda @@ -3496,7 +3496,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -3652,7 +3652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda @@ -3733,7 +3733,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -3883,7 +3883,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda @@ -3977,7 +3977,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -4164,7 +4164,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda @@ -4263,7 +4263,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -4428,7 +4428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda @@ -4511,7 +4511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -4676,7 +4676,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda @@ -4759,7 +4759,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -4909,7 +4909,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda @@ -5003,7 +5003,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl @@ -6607,7 +6607,7 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev134+g4a922fc1.d20250429 + version: 0.7.1.dev128+gbc722741.d20250429 sha256: aed5f1fe46cde7e50510939ac4453026f951336ed18ab9239946a681e9aeddb9 requires_dist: - dags>=0.3.0 @@ -8681,16 +8681,6 @@ packages: purls: [] size: 155474 timestamp: 1743913530958 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 - md5: 044a210bc1d5b8367857755665157413 - depends: - - libgfortran5 14.2.0 h6c33f7e_103 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 156291 - timestamp: 1743863532821 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c md5: 556a4fdfac7287d349b8f09aba899693 @@ -8728,18 +8718,6 @@ packages: purls: [] size: 806283 timestamp: 1743913488925 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 - md5: 69806c1e957069f1d515830dcc9f6cbb - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 5.0.0 14_2_0_*_103 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 806566 - timestamp: 1743863491726 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda sha256: 18e354d30a60441b0bf5fcbb125b6b22fd0df179620ae834e2533d44d1598211 md5: 0305434da649d4fb48a425e588b79ea6 @@ -11467,22 +11445,22 @@ packages: - pkg:pypi/parso?source=hash-mapping size: 75295 timestamp: 1733271352153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d - md5: df359c09c41cd186fffb93a2d87aa6f5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + sha256: 09717569649d89caafbf32f6cda1e65aef86e5a86c053d30e4ce77fca8d27b68 + md5: 31614c73d7b103ef76faa4d83d261d34 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libgcc-ng >=12 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 952308 - timestamp: 1723488734144 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f - md5: 58cde0663f487778bcd7a0c8daf50293 + size: 956207 + timestamp: 1745931215744 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + sha256: 93c625933bb47149e250b3c530c7305e7c1dd6c39d8358da8e3e04806545a26b + md5: c6873588a8175130eb931e91e80416c2 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -11490,11 +11468,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 854306 - timestamp: 1723488807216 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 - md5: 147c83e5e44780c7492998acbacddf52 + size: 858688 + timestamp: 1745931314635 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + sha256: 797411a2d748c11374b84329002f3c65db032cbf012b20d9b14dba9b6ac52d06 + md5: 1a3f7708de0b393e6665c9f7494b055e depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -11502,11 +11480,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 618973 - timestamp: 1723488853807 -- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 - md5: a3a3baddcfb8c80db84bec3cb7746fb8 + size: 621564 + timestamp: 1745931340774 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + sha256: 15dffc9a2d6bb6b8ccaa7cbd26b229d24f1a0a1c4f5685b308a63929c56b381f + md5: a912b2c4ff0f03101c751aa79a331831 depends: - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -11516,8 +11494,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 820831 - timestamp: 1723489427046 + size: 816653 + timestamp: 1745931851696 - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl name: pdbp version: 1.7.0 @@ -12465,7 +12443,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytz?source=compressed-mapping + - pkg:pypi/pytz?source=hash-mapping size: 189015 timestamp: 1742920947249 - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda @@ -14419,9 +14397,9 @@ packages: - pkg:pypi/zipp?source=hash-mapping size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_1.conda - sha256: 1a824220227f356f35acec5ff6a4418b1ccd0238fd752ceebeb04a0bd37acf0f - md5: 6d229edd907b6bb39961b74e3d52de9c +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda + sha256: 76d28240cc9fa0c3cb2cde750ecaf98716ce397afaf1ce90f8d18f5f43a122f1 + md5: ca02de88df1cc3cfc8f24766ff50cb3c depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.11 @@ -14429,14 +14407,13 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/zstandard?source=compressed-mapping - size: 732182 - timestamp: 1741853419018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_1.conda - sha256: b4fd6bd1cb87a183a8bbe85b4e87a1e7c51473309d0d82cd88d38fb021bcf41e - md5: d28b82fcc8d1b462b595af4b15a6cdcf + - pkg:pypi/zstandard?source=hash-mapping + size: 731883 + timestamp: 1745869796301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda + sha256: ff62d2e1ed98a3ec18de7e5cf26c0634fd338cb87304cf03ad8cbafe6fe674ba + md5: 630db208bc7bbb96725ce9832c7423bb depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.11 @@ -14444,42 +14421,39 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/zstandard?source=hash-mapping - size: 731658 - timestamp: 1741853415477 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_1.conda - sha256: 7810fa3c45a93679eb78b49f1a4db0397e644dbb0edc7ff6e956668343f4f67f - md5: 11d2b64d86f2e63f7233335a23936151 + - pkg:pypi/zstandard?source=compressed-mapping + size: 732224 + timestamp: 1745869780524 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda + sha256: 72ab78bbde3396ffb2b81a2513f48a27c128ddc4e06a8d3dbcfa790479deab40 + md5: 2712198232a6fcc673f9eef62fce85d5 depends: - __osx >=10.13 - cffi >=1.11 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 690324 - timestamp: 1741853501630 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_1.conda - sha256: 5d2635e81ff5d61c87383c62824988154acefeae63f408d03dbefcb80cba5f02 - md5: 493516415601e57f73bda23e91dda742 + size: 691672 + timestamp: 1745869990327 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda + sha256: 970db6b96b9ac7c1418b8743cf63c3ee6285ec7f56ffc94ac7850b4c2ebc3095 + md5: 64aea64b791ab756ef98c79f0e48fee5 depends: - __osx >=10.13 - cffi >=1.11 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 688202 - timestamp: 1741853531183 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_1.conda - sha256: 496189ea504358088128df526e545a96d7c8b597bea0747f09bc0e081a67a69b - md5: be18ca5f35d991ab12342a6fc3f7a6f8 + size: 690063 + timestamp: 1745869852235 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda + sha256: 7c7f7e24ff49dc6ecb804373bedca663d3c24d57cac55524be8c83da90313928 + md5: 9fd87c9aae7db68b4a3427886b5f3eea depends: - __osx >=11.0 - cffi >=1.11 @@ -14487,14 +14461,13 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 532580 - timestamp: 1741853536042 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_1.conda - sha256: db7ed45ce0ed42de5b799c094f15c064e5e7e88bbee128f8d15a0565367f3c41 - md5: b0af1b749dbf9621fbea742c2de68ff8 + size: 532851 + timestamp: 1745869893672 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda + sha256: c499a2639c2981ac2fd33bae2d86c15d896bc7524f1c5651a7d3b088263f7810 + md5: ba0eb639914e4033e090b46f53bec31c depends: - __osx >=11.0 - cffi >=1.11 @@ -14502,14 +14475,13 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 531069 - timestamp: 1741853718145 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_1.conda - sha256: 78afa8ce76763993a76da1b0120b690cba8926271cc9e0462f66155866817c84 - md5: a4c147aaaf7e284762d7a6acc49e35e5 + size: 532173 + timestamp: 1745870087418 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda + sha256: aaae40057eac5b5996db4e6b3d8eb00d38455e67571e796135d29702a19736bd + md5: 8355ec073f73581e29adf77c49096aed depends: - cffi >=1.11 - python >=3.11,<3.12.0a0 @@ -14518,14 +14490,13 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 444456 - timestamp: 1741853849446 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_1.conda - sha256: 17f2abbda821be146b549498fab3d0eb9cafb210e163b983524db91524b8dcb5 - md5: 5028543ffb67666ca4fc3ebd620c97b8 + size: 445673 + timestamp: 1745870127079 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + sha256: 10f25f85f856dbc776b4a2cf801d31edd07cbfaa45b9cca14dd776a9f2887cb5 + md5: 24554d76d0efcca11faa0a013c16ed5a depends: - cffi >=1.11 - python >=3.12,<3.13.0a0 @@ -14534,11 +14505,10 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping - size: 444958 - timestamp: 1741853730076 + size: 444685 + timestamp: 1745870132644 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index a53459f555..a4f92d9b77 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -1,35 +1,7 @@ from enum import StrEnum -from ttsim.aggregation_jax import all_by_p_id as all_by_p_id_jax -from ttsim.aggregation_jax import any_by_p_id as any_by_p_id_jax -from ttsim.aggregation_jax import count_by_p_id as count_by_p_id_jax -from ttsim.aggregation_jax import grouped_all as grouped_all_jax -from ttsim.aggregation_jax import grouped_any as grouped_any_jax -from ttsim.aggregation_jax import grouped_count as grouped_count_jax -from ttsim.aggregation_jax import grouped_max as grouped_max_jax -from ttsim.aggregation_jax import grouped_mean as grouped_mean_jax -from ttsim.aggregation_jax import grouped_min as grouped_min_jax -from ttsim.aggregation_jax import grouped_sum as grouped_sum_jax -from ttsim.aggregation_jax import max_by_p_id as max_by_p_id_jax -from ttsim.aggregation_jax import mean_by_p_id as mean_by_p_id_jax -from ttsim.aggregation_jax import min_by_p_id as min_by_p_id_jax -from ttsim.aggregation_jax import sum_by_p_id as sum_by_p_id_jax -from ttsim.aggregation_numpy import all_by_p_id as all_by_p_id_numpy -from ttsim.aggregation_numpy import any_by_p_id as any_by_p_id_numpy -from ttsim.aggregation_numpy import count_by_p_id as count_by_p_id_numpy -from ttsim.aggregation_numpy import grouped_all as grouped_all_numpy -from ttsim.aggregation_numpy import grouped_any as grouped_any_numpy -from ttsim.aggregation_numpy import grouped_count as grouped_count_numpy -from ttsim.aggregation_numpy import grouped_max as grouped_max_numpy -from ttsim.aggregation_numpy import grouped_mean as grouped_mean_numpy -from ttsim.aggregation_numpy import grouped_min as grouped_min_numpy -from ttsim.aggregation_numpy import grouped_sum as grouped_sum_numpy -from ttsim.aggregation_numpy import max_by_p_id as max_by_p_id_numpy -from ttsim.aggregation_numpy import mean_by_p_id as mean_by_p_id_numpy -from ttsim.aggregation_numpy import min_by_p_id as min_by_p_id_numpy -from ttsim.aggregation_numpy import sum_by_p_id as sum_by_p_id_numpy +from ttsim import aggregation_jax, aggregation_numpy from ttsim.config import IS_JAX_INSTALLED -from ttsim.config import numpy_or_jax as np class AggType(StrEnum): @@ -46,113 +18,21 @@ class AggType(StrEnum): ALL = "all" -def grouped_count(group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_count_jax(group_id) - else: - return grouped_count_numpy(group_id) - - -def grouped_sum(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_sum_jax(column, group_id) - else: - return grouped_sum_numpy(column, group_id) - - -def grouped_mean(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_mean_jax(column, group_id) - else: - return grouped_mean_numpy(column, group_id) - - -def grouped_max(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_max_jax(column, group_id) - else: - return grouped_max_numpy(column, group_id) - - -def grouped_min(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_min_jax(column, group_id) - else: - return grouped_min_numpy(column, group_id) - - -def grouped_any(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_any_jax(column, group_id) - else: - return grouped_any_numpy(column, group_id) - - -def grouped_all(column: np.ndarray, group_id: np.ndarray) -> np.ndarray: - if IS_JAX_INSTALLED: - return grouped_all_jax(column, group_id) - else: - return grouped_all_numpy(column, group_id) - - -def count_by_p_id( - p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return count_by_p_id_jax(p_id_to_aggregate_by, p_id_to_store_by) - else: - return count_by_p_id_numpy(p_id_to_aggregate_by, p_id_to_store_by) - - -def sum_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return sum_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return sum_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) - - -def mean_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return mean_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return mean_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) - - -def max_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return max_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return max_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) - - -def min_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return min_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return min_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) - - -def any_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return any_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return any_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) - - -def all_by_p_id( - column: np.ndarray, p_id_to_aggregate_by: np.ndarray, p_id_to_store_by: np.ndarray -) -> np.ndarray: - if IS_JAX_INSTALLED: - return all_by_p_id_jax(column, p_id_to_aggregate_by, p_id_to_store_by) - else: - return all_by_p_id_numpy(column, p_id_to_aggregate_by, p_id_to_store_by) +aggregation_module = aggregation_jax if IS_JAX_INSTALLED else aggregation_numpy + +# The signature of the functions must be the same in both modules, except that all JAX +# functions have the additional `num_segments` argument. +grouped_count = aggregation_module.grouped_count +grouped_sum = aggregation_module.grouped_sum +grouped_mean = aggregation_module.grouped_mean +grouped_max = aggregation_module.grouped_max +grouped_min = aggregation_module.grouped_min +grouped_any = aggregation_module.grouped_any +grouped_all = aggregation_module.grouped_all +count_by_p_id = aggregation_module.count_by_p_id +sum_by_p_id = aggregation_module.sum_by_p_id +mean_by_p_id = aggregation_module.mean_by_p_id +max_by_p_id = aggregation_module.max_by_p_id +min_by_p_id = aggregation_module.min_by_p_id +any_by_p_id = aggregation_module.any_by_p_id +all_by_p_id = aggregation_module.all_by_p_id diff --git a/src/ttsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py index 2f25c03625..2608b55857 100644 --- a/src/ttsim/aggregation_jax.py +++ b/src/ttsim/aggregation_jax.py @@ -15,59 +15,87 @@ import numpy as jnp # noqa: TC004 -def grouped_count(group_id: jnp.ndarray) -> jnp.ndarray: - out_on_hh = segment_sum(jnp.ones(len(group_id)), group_id) +def grouped_count(group_id: jnp.ndarray, num_segments: int) -> jnp.ndarray: + out_on_hh = segment_sum( + data=jnp.ones(len(group_id)), segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out -def grouped_sum(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: +def grouped_sum( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: if column.dtype in ["bool"]: column = column.astype(int) - out_on_hh = segment_sum(column, group_id) + out_on_hh = segment_sum( + data=column, segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out -def grouped_mean(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: - sum_on_hh = segment_sum(column, group_id) - sizes = segment_sum(jnp.ones(len(column)), group_id) +def grouped_mean( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: + sum_on_hh = segment_sum( + data=column, segment_ids=group_id, num_segments=num_segments + ) + sizes = segment_sum( + data=jnp.ones(len(column)), segment_ids=group_id, num_segments=num_segments + ) mean_on_hh = sum_on_hh / sizes out = mean_on_hh[group_id] return out -def grouped_max(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: - out_on_hh = segment_max(column, group_id) +def grouped_max( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: + out_on_hh = segment_max( + data=column, segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out -def grouped_min(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: - out_on_hh = segment_min(column, group_id) +def grouped_min( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: + out_on_hh = segment_min( + data=column, segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out -def grouped_any(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: +def grouped_any( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: # Convert to boolean if necessary if jnp.issubdtype(column.dtype, jnp.integer): my_col = column.astype("bool") else: my_col = column - out_on_hh = segment_max(my_col, group_id) + out_on_hh = segment_max( + data=my_col, segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out -def grouped_all(column: jnp.ndarray, group_id: jnp.ndarray) -> jnp.ndarray: +def grouped_all( + column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int +) -> jnp.ndarray: # Convert to boolean if necessary if jnp.issubdtype(column.dtype, jnp.integer): column = column.astype("bool") - out_on_hh = segment_min(column, group_id) + out_on_hh = segment_min( + data=column, segment_ids=group_id, num_segments=num_segments + ) out = out_on_hh[group_id] return out diff --git a/src/ttsim/automatically_added_functions.py b/src/ttsim/automatically_added_functions.py index 7905b3900a..a3083cb36f 100644 --- a/src/ttsim/automatically_added_functions.py +++ b/src/ttsim/automatically_added_functions.py @@ -8,6 +8,7 @@ from dags import rename_arguments from ttsim.aggregation import grouped_sum +from ttsim.config import IS_JAX_INSTALLED from ttsim.shared import ( fail_if_multiple_time_units_for_same_base_name_and_group, get_base_name_and_grouping_suffix, @@ -578,9 +579,12 @@ def create_agg_by_group_functions( base_name_with_time_unit = match.group("base_name_with_time_unit") if base_name_with_time_unit in potential_agg_by_group_sources: group_id = f"{match.group('group')}_id" + mapper = {"group_id": group_id, "column": base_name_with_time_unit} + if IS_JAX_INSTALLED: + mapper["num_segments"] = f"{group_id}_num_segments" agg_func = dags.rename_arguments( func=grouped_sum, - mapper={"group_id": group_id, "column": base_name_with_time_unit}, + mapper=mapper, ) out[abgfn] = AggByGroupFunction( leaf_name=dt.tree_path_from_qual_name(abgfn)[-1], diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index 8e250fce65..dbedacbb9f 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -14,6 +14,7 @@ from ttsim.combine_functions import ( combine_policy_functions_and_derived_functions, ) +from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( @@ -143,6 +144,7 @@ def compute_taxes_and_transfers( ) if debug: targets = sorted([*targets, *functions_with_partialled_parameters.keys()]) + tax_transfer_function = dags.concatenate_functions( functions=functions_with_partialled_parameters, targets=targets, @@ -152,14 +154,19 @@ def compute_taxes_and_transfers( ) if jit: - try: - import jax - except ImportError as e: + if not IS_JAX_INSTALLED: raise ImportError( "JAX is not installed. Please install JAX to use JIT compilation." - ) from e - tax_transfer_function = jax.jit(tax_transfer_function) + ) + import jax + static_args = { + argname: data[argname.removesuffix("_num_segments")].max() + 1 + for argname in inspect.signature(tax_transfer_function).parameters + if argname.endswith("_num_segments") + } + tax_transfer_function = functools.partial(tax_transfer_function, **static_args) + tax_transfer_function = jax.jit(tax_transfer_function) results = tax_transfer_function(**input_data) result_tree = dt.unflatten_from_qual_names(results) @@ -217,6 +224,9 @@ def _get_top_level_namespace( for g in environment.grouping_levels: all_top_level_names.add(f"{name}_{g}") + # Add num_segments to grouping variables + for g in environment.grouping_levels: + all_top_level_names.add(f"{g}_id_num_segments") return all_top_level_names @@ -368,7 +378,7 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: """ assert_valid_ttsim_pytree( tree=data_tree, - leaf_checker=lambda leaf: isinstance(leaf, pd.Series | np.ndarray), + leaf_checker=lambda leaf: isinstance(leaf, int | pd.Series | np.ndarray), tree_name="data_tree", ) _fail_if_p_id_is_non_unique(data_tree) @@ -429,7 +439,8 @@ def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: # Check for non-unique p_ids p_id_counts: dict[int, int] = {} - for i in p_id: + # Need the map because Jax loop items are 1-element arrays. + for i in map(int, p_id): if i in p_id_counts: p_id_counts[i] += 1 else: @@ -586,11 +597,11 @@ def _fail_if_root_nodes_are_missing( # Function depends on parameters only, so it does not have to be present # in the data tree. continue - elif node in data: + elif node in data or node.endswith("_num_segments"): # Root node is present in the data tree. continue else: - missing_nodes.append(str(node)) + missing_nodes.append(node) if missing_nodes: formatted = format_list_linewise( diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/ttsim_objects.py index d680248174..4de4513daa 100644 --- a/src/ttsim/ttsim_objects.py +++ b/src/ttsim/ttsim_objects.py @@ -500,22 +500,22 @@ def inner(func: Callable) -> AggByGroupFunction: orig_location = f"{func.__module__}.{func.__name__}" args = set(inspect.signature(func).parameters) group_ids = {p for p in args if p.endswith("_id")} - other_args = args - group_ids _fail_if_group_id_is_invalid(group_ids, orig_location) + group_id = group_ids.pop() + other_args = args - {group_id} if agg_type == AggType.COUNT: _fail_if_other_arg_is_present(other_args, orig_location) - mapper = {"group_id": group_ids.pop()} + mapper = {"group_id": group_id} else: _fail_if_other_arg_is_invalid(other_args, orig_location) - mapper = {"group_id": group_ids.pop(), "column": other_args.pop()} + mapper = {"group_id": group_id, "column": other_args.pop()} + if IS_JAX_INSTALLED: + mapper["num_segments"] = f"{group_id}_num_segments" agg_func = dags.rename_arguments( func=agg_registry[agg_type], mapper=mapper, ) - functools.update_wrapper(agg_func, func) - agg_func.__signature__ = inspect.signature(func) # type: ignore[attr-defined] - return AggByGroupFunction( leaf_name=leaf_name if leaf_name else func.__name__, function=agg_func, diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index ba5169b5dc..27301d9d24 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -1,10 +1,15 @@ from typing import TYPE_CHECKING, Any, NewType +from ttsim.config import IS_JAX_INSTALLED + +if IS_JAX_INSTALLED: + from jax import Array as TTSIMArray +else: + from numpy import ndarray as TTSIMArray # noqa: N812, TC002 + if TYPE_CHECKING: from collections.abc import Mapping - import pandas as pd - # Make these available for import from other modules. from dags.tree.typing import ( # noqa: F401 GenericCallable, @@ -13,7 +18,6 @@ QualNameTargetList, ) - from ttsim.config import numpy_or_jax as np from ttsim.ttsim_objects import PolicyInput, TTSIMFunction, TTSIMObject NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] @@ -27,9 +31,8 @@ # Specialise from dags' NestedInputDict to GETTSIM's types. NestedInputsPathsToDfColumns = Mapping[str, Any | "NestedInputsPathsToDfColumns"] - NestedDataDict = Mapping[str, pd.Series | "NestedDataDict"] - QualNameDataDict = Mapping[str, pd.Series] - NestedArrayDict = Mapping[str, np.ndarray | "NestedArrayDict"] + NestedDataDict = Mapping[str, TTSIMArray | "NestedDataDict"] + QualNameDataDict = Mapping[str, TTSIMArray] DashedISOString = NewType("DashedISOString", str) """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py index 8794cd48c2..8f56b4ab5b 100644 --- a/tests/ttsim/mettsim/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -1,13 +1,12 @@ -import numpy - from ttsim import group_creation_function +from ttsim.config import numpy_or_jax as np @group_creation_function() def sp_id( - p_id: numpy.ndarray[int], - p_id_spouse: numpy.ndarray[int], -) -> numpy.ndarray[int]: + p_id: np.ndarray, + p_id_spouse: np.ndarray, +) -> np.ndarray: """ Compute the spouse (sp) group ID for each person. """ @@ -15,8 +14,8 @@ def sp_id( next_sp_id: int = 0 result: list[int] = [] - for index, current_p_id in enumerate(p_id): - current_p_id_spouse = p_id_spouse[index] + for index, current_p_id in enumerate(map(int, p_id)): + current_p_id_spouse = int(p_id_spouse[index]) if current_p_id_spouse >= 0 and current_p_id_spouse in p_id_to_sp_id: result.append(p_id_to_sp_id[current_p_id_spouse]) @@ -27,17 +26,17 @@ def sp_id( p_id_to_sp_id[current_p_id] = next_sp_id next_sp_id += 1 - return numpy.asarray(result) + return np.array(result) @group_creation_function() def fam_id( - p_id_spouse: numpy.ndarray[int], - p_id: numpy.ndarray[int], - age: numpy.ndarray[int], - p_id_parent_1: numpy.ndarray[int], - p_id_parent_2: numpy.ndarray[int], -) -> numpy.ndarray[int]: + p_id_spouse: np.ndarray, + p_id: np.ndarray, + age: np.ndarray, + p_id_parent_1: np.ndarray, + p_id_parent_2: np.ndarray, +) -> np.ndarray: """ Compute the family ID for each person. """ @@ -45,10 +44,10 @@ def fam_id( p_id_to_index: dict[int, int] = {} p_id_to_p_ids_children: dict[int, list[int]] = {} - for index, current_p_id in enumerate(p_id): + for index, current_p_id in enumerate(map(int, p_id)): p_id_to_index[current_p_id] = index - current_p_id_parent_1 = p_id_parent_1[index] - current_p_id_parent_2 = p_id_parent_2[index] + current_p_id_parent_1 = int(p_id_parent_1[index]) + current_p_id_parent_2 = int(p_id_parent_2[index]) if current_p_id_parent_1 >= 0: if current_p_id_parent_1 not in p_id_to_p_ids_children: @@ -63,14 +62,14 @@ def fam_id( p_id_to_fam_id = {} next_fam_id = 0 - for index, current_p_id in enumerate(p_id): + for index, current_p_id in enumerate(map(int, p_id)): # Already assigned a fam_id to this p_id via spouse / parent if current_p_id in p_id_to_fam_id: continue p_id_to_fam_id[current_p_id] = next_fam_id - current_p_id_spouse = p_id_spouse[index] + current_p_id_spouse = int(p_id_spouse[index]) current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) # Assign fam_id to spouse @@ -89,5 +88,5 @@ def fam_id( next_fam_id += 1 # Compute result vector - result = [p_id_to_fam_id[current_p_id] for current_p_id in p_id] - return numpy.asarray(result) + result = [p_id_to_fam_id[current_p_id] for current_p_id in map(int, p_id)] + return np.array(result) diff --git a/tests/ttsim/mettsim/housing_benefits/amount.py b/tests/ttsim/mettsim/housing_benefits/amount.py index 55f9974d3e..025178ed77 100644 --- a/tests/ttsim/mettsim/housing_benefits/amount.py +++ b/tests/ttsim/mettsim/housing_benefits/amount.py @@ -1,7 +1,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def amount_m_fam( eligibility__requirement_fulfilled_fam: bool, income__amount_m_fam: float, diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index e28d8aa551..327ee1d200 100644 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -22,7 +22,11 @@ def number_of_individuals_fam(fam_id: int) -> int: """The number of individuals in the family.""" -@policy_function(end_date="2019-12-31", leaf_name="requirement_fulfilled_fam") +@policy_function( + end_date="2019-12-31", + leaf_name="requirement_fulfilled_fam", + vectorization_strategy="vectorize", +) def requirement_fulfilled_fam_not_considering_children( housing_benefits__income__amount_m_fam: float, number_of_adults_fam: int, @@ -35,7 +39,11 @@ def requirement_fulfilled_fam_not_considering_children( ) -@policy_function(start_date="2020-01-01", leaf_name="requirement_fulfilled_fam") +@policy_function( + start_date="2020-01-01", + leaf_name="requirement_fulfilled_fam", + vectorization_strategy="vectorize", +) def requirement_fulfilled_fam_considering_children( housing_benefits__income__amount_m_fam: float, housing_benefits_params: dict, @@ -47,7 +55,7 @@ def requirement_fulfilled_fam_considering_children( ) -@policy_function(start_date="2020-01-01") +@policy_function(start_date="2020-01-01", vectorization_strategy="vectorize") def number_of_family_members_considered_fam( number_of_individuals_fam: int, housing_benefits_params: dict, @@ -58,7 +66,7 @@ def number_of_family_members_considered_fam( ) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def child( age: int, housing_benefits_params: dict, @@ -66,7 +74,7 @@ def child( return age <= housing_benefits_params["max_age_children"] -@policy_function() +@policy_function(vectorization_strategy="vectorize") def adult( age: int, housing_benefits_params: dict, diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py index 1e3678f11b..31e3a93d1d 100644 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -6,7 +6,8 @@ base=1, direction="down", reference="§ 4 Gondorian Housing Benefit Law", - ) + ), + vectorization_strategy="vectorize", ) def amount_m( payroll_tax__income__gross_wage_m: float, diff --git a/tests/ttsim/mettsim/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py index 3255ac66ee..583551cda1 100644 --- a/tests/ttsim/mettsim/payroll_tax/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/amount.py @@ -1,7 +1,7 @@ from ttsim import AggType, agg_by_group_function, policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def amount_y( income__amount_y: float, payroll_tax_params: dict, diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 56c7912ec2..b74689711c 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -15,7 +15,7 @@ def amount_y( """The amount of child tax credit at the recipient level.""" -@policy_function() +@policy_function(vectorization_strategy="vectorize") def claim_of_child_y( child_eligible: bool, payroll_tax_params: dict, @@ -26,7 +26,7 @@ def claim_of_child_y( return 0 -@policy_function() +@policy_function(vectorization_strategy="vectorize") def child_eligible( age: int, payroll_tax_params: dict, diff --git a/tests/ttsim/mettsim/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py index 7ca5114e27..9f6d3fe3a8 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/income/amount.py @@ -1,7 +1,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def amount_y( gross_wage_y: float, deductions_y: float, diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py index a27f83b51a..79a6f08fb0 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.py +++ b/tests/ttsim/mettsim/payroll_tax/income/deductions.py @@ -1,7 +1,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="vectorize") def deductions_y( payroll_tax__child_tax_credit__amount_y: float, payroll_tax_params: dict, diff --git a/tests/ttsim/test_aggregation_functions.py b/tests/ttsim/test_aggregation_functions.py index 852bcc42dd..65ccf4c33d 100644 --- a/tests/ttsim/test_aggregation_functions.py +++ b/tests/ttsim/test_aggregation_functions.py @@ -44,21 +44,21 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "constant_column": { "column_to_aggregate": np.array([1, 1, 1, 1, 1]), "group_id": np.array([0, 0, 1, 1, 1]), + "expected_res_count": np.array([2, 2, 3, 3, 3]), "expected_res_sum": np.array([2, 2, 3, 3, 3]), "expected_res_max": np.array([1, 1, 1, 1, 1]), "expected_res_min": np.array([1, 1, 1, 1, 1]), - "expected_res_count": np.array([2, 2, 3, 3, 3]), "expected_res_any": np.array([True, True, True, True, True]), "expected_res_all": np.array([True, True, True, True, True]), }, "constant_column_group_id_unsorted": { "column_to_aggregate": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), "group_id": np.array([0, 1, 0, 1, 0]), - "expected_res_sum": np.array([3, 2, 3, 2, 3]), - "expected_res_mean": np.array([1, 1, 1, 1, 1]), - "expected_res_max": np.array([1, 1, 1, 1, 1]), - "expected_res_min": np.array([1, 1, 1, 1, 1]), "expected_res_count": np.array([3, 2, 3, 2, 3]), + "expected_res_sum": np.array([3.0, 2.0, 3.0, 2.0, 3.0]), + "expected_res_mean": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), + "expected_res_max": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), + "expected_res_min": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), }, "basic_case": { "column_to_aggregate": np.array([0, 1, 2, 3, 4]), @@ -72,28 +72,28 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "unique_group_ids_with_gaps": { "column_to_aggregate": np.array([0.0, 1.0, 2.0, 3.0, 4.0]), "group_id": np.array([0, 0, 3, 3, 3]), - "expected_res_sum": np.array([1, 1, 9, 9, 9]), - "expected_res_mean": np.array([0.5, 0.5, 3, 3, 3]), - "expected_res_max": np.array([1, 1, 4, 4, 4]), - "expected_res_min": np.array([0, 0, 2, 2, 2]), "expected_res_count": np.array([2, 2, 3, 3, 3]), + "expected_res_sum": np.array([1.0, 1.0, 9.0, 9.0, 9.0]), + "expected_res_mean": np.array([0.5, 0.5, 3.0, 3.0, 3.0]), + "expected_res_max": np.array([1.0, 1.0, 4.0, 4.0, 4.0]), + "expected_res_min": np.array([0.0, 0.0, 2.0, 2.0, 2.0]), }, "float_column": { - "column_to_aggregate": np.array([0, 1.5, 2, 3, 4]), + "column_to_aggregate": np.array([0.0, 1.5, 2.0, 3.0, 4.0]), "group_id": np.array([0, 0, 3, 3, 3]), - "expected_res_sum": np.array([1.5, 1.5, 9, 9, 9]), - "expected_res_mean": np.array([0.75, 0.75, 3, 3, 3]), - "expected_res_max": np.array([1.5, 1.5, 4, 4, 4]), - "expected_res_min": np.array([0, 0, 2, 2, 2]), + "expected_res_sum": np.array([1.5, 1.5, 9.0, 9.0, 9.0]), + "expected_res_mean": np.array([0.75, 0.75, 3.0, 3.0, 3.0]), + "expected_res_max": np.array([1.5, 1.5, 4.0, 4.0, 4.0]), + "expected_res_min": np.array([0.0, 0.0, 2.0, 2.0, 2.0]), }, "more_than_two_groups": { "column_to_aggregate": np.array([0.0, 1.0, 2.0, 3.0, 4.0]), "group_id": np.array([1, 0, 1, 1, 3]), - "expected_res_sum": np.array([5, 1, 5, 5, 4]), - "expected_res_mean": np.array([5 / 3, 1, 5 / 3, 5 / 3, 4]), - "expected_res_max": np.array([3, 1, 3, 3, 4]), - "expected_res_min": np.array([0, 1, 0, 0, 4]), "expected_res_count": np.array([3, 1, 3, 3, 1]), + "expected_res_sum": np.array([5.0, 1.0, 5.0, 5.0, 4.0]), + "expected_res_mean": np.array([5.0 / 3.0, 1.0, 5.0 / 3.0, 5.0 / 3.0, 4.0]), + "expected_res_max": np.array([3.0, 1.0, 3.0, 3.0, 4.0]), + "expected_res_min": np.array([0.0, 1.0, 0.0, 0.0, 4.0]), }, "basic_case_bool": { "column_to_aggregate": np.array([True, False, True, False, False]), @@ -131,38 +131,6 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "expected_type": numpy.integer, }, } -if not IS_JAX_INSTALLED: - test_grouped_specs["datetime"] = { - "column_to_aggregate": np.array( - [ - np.datetime64("2000"), - np.datetime64("2001"), - np.datetime64("2002"), - np.datetime64("2003"), - np.datetime64("2004"), - ] - ), - "group_id": np.array([1, 0, 1, 1, 1]), - "expected_res_max": np.array( - [ - np.datetime64("2004"), - np.datetime64("2001"), - np.datetime64("2004"), - np.datetime64("2004"), - np.datetime64("2004"), - ] - ), - "expected_res_min": np.array( - [ - np.datetime64("2000"), - np.datetime64("2001"), - np.datetime64("2000"), - np.datetime64("2000"), - np.datetime64("2000"), - ] - ), - } - test_grouped_raises_specs = { "dtype_boolean": { @@ -205,7 +173,39 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): "exception_match": "The dtype of id columns must be integer.", }, } +# We cannot even set up these fixtures in JAX. if not IS_JAX_INSTALLED: + test_grouped_specs["datetime"] = { + "column_to_aggregate": np.array( + [ + np.datetime64("2000"), + np.datetime64("2001"), + np.datetime64("2002"), + np.datetime64("2003"), + np.datetime64("2004"), + ] + ), + "group_id": np.array([1, 0, 1, 1, 1]), + "expected_res_max": np.array( + [ + np.datetime64("2004"), + np.datetime64("2001"), + np.datetime64("2004"), + np.datetime64("2004"), + np.datetime64("2004"), + ] + ), + "expected_res_min": np.array( + [ + np.datetime64("2000"), + np.datetime64("2001"), + np.datetime64("2000"), + np.datetime64("2000"), + np.datetime64("2000"), + ] + ), + } + test_grouped_raises_specs["dtype_string"] = { "column_to_aggregate": np.array(["0", "1", "2", "3", "4"]), "group_id": np.array([0, 0, 1, 1, 1]), @@ -236,6 +236,32 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): } +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=["group_id", "expected_res_count"], +) +def test_grouped_count(group_id, expected_res_count): + if IS_JAX_INSTALLED: + result = grouped_count( + group_id=group_id, + num_segments=group_id.max() + 1, + ) + else: + result = grouped_count(group_id=group_id) + numpy.testing.assert_array_almost_equal(result, expected_res_count) + + +def _run_agg_by_group(agg_func, column_to_aggregate, group_id): + if IS_JAX_INSTALLED: + return agg_func( + column=column_to_aggregate, + group_id=group_id, + num_segments=group_id.max() + 1, + ) + else: + return agg_func(column=column_to_aggregate, group_id=group_id) + + @parameterize_based_on_dict( test_grouped_specs, keys_of_test_cases=[ @@ -245,8 +271,11 @@ def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): ], ) def test_grouped_sum(column_to_aggregate, group_id, expected_res_sum): - result = grouped_sum(column_to_aggregate, group_id) - # Check equality + result = _run_agg_by_group( + agg_func=grouped_sum, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_almost_equal(result, expected_res_sum) @@ -259,7 +288,11 @@ def test_grouped_sum(column_to_aggregate, group_id, expected_res_sum): ], ) def test_grouped_mean(column_to_aggregate, group_id, expected_res_mean): - result = grouped_mean(column_to_aggregate, group_id) + result = _run_agg_by_group( + agg_func=grouped_mean, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_almost_equal(result, expected_res_mean) @@ -272,7 +305,11 @@ def test_grouped_mean(column_to_aggregate, group_id, expected_res_mean): ], ) def test_grouped_max(column_to_aggregate, group_id, expected_res_max): - result = grouped_max(column_to_aggregate, group_id) + result = _run_agg_by_group( + agg_func=grouped_max, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_equal(result, expected_res_max) @@ -285,19 +322,14 @@ def test_grouped_max(column_to_aggregate, group_id, expected_res_max): ], ) def test_grouped_min(column_to_aggregate, group_id, expected_res_min): - result = grouped_min(column_to_aggregate, group_id) + result = _run_agg_by_group( + agg_func=grouped_min, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_equal(result, expected_res_min) -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=["group_id", "expected_res_count"], -) -def test_grouped_count(group_id, expected_res_count): - result = grouped_count(group_id) - numpy.testing.assert_array_almost_equal(result, expected_res_count) - - @parameterize_based_on_dict( test_grouped_specs, keys_of_test_cases=[ @@ -307,7 +339,11 @@ def test_grouped_count(group_id, expected_res_count): ], ) def test_grouped_any(column_to_aggregate, group_id, expected_res_any): - result = grouped_any(column_to_aggregate, group_id) + result = _run_agg_by_group( + agg_func=grouped_any, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_almost_equal(result, expected_res_any) @@ -320,7 +356,11 @@ def test_grouped_any(column_to_aggregate, group_id, expected_res_any): ], ) def test_grouped_all(column_to_aggregate, group_id, expected_res_all): - result = grouped_all(column_to_aggregate, group_id) + result = _run_agg_by_group( + agg_func=grouped_all, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + ) numpy.testing.assert_array_almost_equal(result, expected_res_all) @@ -333,6 +373,7 @@ def test_grouped_all(column_to_aggregate, group_id, expected_res_all): "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_sum_raises(column_to_aggregate, group_id, error_sum, exception_match): with pytest.raises( error_sum, @@ -350,6 +391,7 @@ def test_grouped_sum_raises(column_to_aggregate, group_id, error_sum, exception_ "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_mean_raises( column_to_aggregate, group_id, error_mean, exception_match ): @@ -369,6 +411,7 @@ def test_grouped_mean_raises( "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_max_raises(column_to_aggregate, group_id, error_max, exception_match): with pytest.raises( error_max, @@ -386,6 +429,7 @@ def test_grouped_max_raises(column_to_aggregate, group_id, error_max, exception_ "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_min_raises(column_to_aggregate, group_id, error_min, exception_match): with pytest.raises( error_min, @@ -403,6 +447,7 @@ def test_grouped_min_raises(column_to_aggregate, group_id, error_min, exception_ "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_any_raises(column_to_aggregate, group_id, error_any, exception_match): with pytest.raises( error_any, @@ -420,6 +465,7 @@ def test_grouped_any_raises(column_to_aggregate, group_id, error_any, exception_ "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_grouped_all_raises(column_to_aggregate, group_id, error_all, exception_match): with pytest.raises( error_all, @@ -445,12 +491,10 @@ def test_sum_by_p_id( expected_res, expected_type, ): - result = numpy.array( - sum_by_p_id( - column=column_to_aggregate, - p_id_to_aggregate_by=p_id_to_aggregate_by, - p_id_to_store_by=p_id_to_store_by, - ) + result = sum_by_p_id( + column=column_to_aggregate, + p_id_to_aggregate_by=p_id_to_aggregate_by, + p_id_to_store_by=p_id_to_store_by, ) numpy.testing.assert_array_almost_equal(result, expected_res) assert numpy.issubdtype(result.dtype.type, expected_type), ( @@ -468,6 +512,7 @@ def test_sum_by_p_id( "exception_match", ], ) +@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") def test_sum_by_p_id_raises( column_to_aggregate, group_id, p_id_to_store_by, error_sum_by_p_id, exception_match ): diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index e58b4d7727..0f7fba2830 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -11,6 +11,12 @@ ) from ttsim.automatically_added_functions import create_agg_by_group_functions from ttsim.combine_functions import _fail_if_targets_not_in_functions +from ttsim.config import IS_JAX_INSTALLED + +if IS_JAX_INSTALLED: + jit = True +else: + jit = False @pytest.fixture @@ -95,7 +101,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(return_n1__x_kin), + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(return_n1__x_kin), "x": x, }, }, @@ -111,13 +119,19 @@ def return_n1__x_kin(n1__x_kin: int) -> int: { "kin_id": kin_id, "p_id": p_id, - "n1": {"f": policy_function(leaf_name="f")(return_x_kin), "x": x}, + "n1": { + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(return_x_kin), + "x": x, + }, }, {"n1": {"f": None}}, { "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, }, ), ( @@ -126,7 +140,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(some_x), + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(some_x), "x": x, }, }, @@ -135,6 +151,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, }, ), ( @@ -143,7 +160,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(some_x), + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(some_x), "x": x, }, "y_kin": y_kin, @@ -153,6 +172,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, }, ), ( @@ -161,7 +181,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(return_y_kin), + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(return_y_kin), "y_kin": y_kin_namespaced_input, }, "inputs": {"x": x}, @@ -171,6 +193,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "inputs": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, }, ), ], @@ -185,6 +208,7 @@ def test_create_agg_by_group_functions( environment=environment, data_tree=data_tree, targets_tree=targets_tree, + jit=jit, ) diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 6dcefa9cad..16d529a16f 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import copy import re import warnings @@ -27,8 +29,15 @@ _get_top_level_namespace, _partial_parameters_to_functions, ) +from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np from ttsim.shared import assert_valid_ttsim_pytree +from ttsim.typing import TTSIMArray + +if IS_JAX_INSTALLED: + jit = True +else: + jit = False @policy_input() @@ -51,6 +60,16 @@ def betrag_m() -> float: pass +@policy_function(vectorization_strategy="vectorize") +def some_func(p_id: int) -> int: + return p_id + + +@policy_function(vectorization_strategy="vectorize") +def another_func(some_func: int) -> int: + return some_func + + @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 @@ -92,54 +111,52 @@ def func_before_partial(arg_1, payroll_tax_params): func_after_partial = _partial_parameters_to_functions( - {"test_func": func_before_partial}, + {"some_func": func_before_partial}, {"payroll_tax": {"test_param_1": 1}}, -)["test_func"] +)["some_func"] def test_output_as_tree(minimal_input_data): environment = PolicyEnvironment( { "p_id": p_id, - "module": { - "test_func": policy_function(leaf_name="test_func")(lambda p_id: p_id) - }, + "module": {"some_func": some_func}, } ) out = compute_taxes_and_transfers( data_tree=minimal_input_data, environment=environment, - targets_tree={"module": {"test_func": None}}, + targets_tree={"module": {"some_func": None}}, + jit=jit, ) assert isinstance(out, dict) - assert "test_func" in out["module"] - assert isinstance(out["module"]["test_func"], np.ndarray) + assert "some_func" in out["module"] + assert isinstance(out["module"]["some_func"], TTSIMArray) def test_warn_if_functions_and_columns_overlap(): environment = PolicyEnvironment( { - "dupl": policy_function(leaf_name="dupl")(lambda x: x), - "some_target": policy_function(leaf_name="some_target")(lambda dupl: dupl), + "some_func": some_func, + "some_target": another_func, } ) with pytest.warns(FunctionsAndColumnsOverlapWarning): compute_taxes_and_transfers( data_tree={ "p_id": pd.Series([0]), - "dupl": pd.Series([1]), + "some_func": pd.Series([1]), }, environment=environment, targets_tree={"some_target": None}, + jit=jit, ) def test_dont_warn_if_functions_and_columns_dont_overlap(): - environment = PolicyEnvironment( - {"some_func": policy_function(leaf_name="some_func")(lambda x: x)} - ) + environment = PolicyEnvironment({"some_func": some_func}) with warnings.catch_warnings(): warnings.filterwarnings("error", category=FunctionsAndColumnsOverlapWarning) compute_taxes_and_transfers( @@ -149,14 +166,15 @@ def test_dont_warn_if_functions_and_columns_dont_overlap(): }, environment=environment, targets_tree={"some_func": None}, + jit=jit, ) def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): environment = PolicyEnvironment( { - "dupl": policy_function(leaf_name="dupl")(lambda x: x), - "unique": policy_function(leaf_name="unique")(lambda x: x**2), + "some_func": some_func, + "unique": another_func, } ) with warnings.catch_warnings( @@ -166,11 +184,12 @@ def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): compute_taxes_and_transfers( data_tree={ "p_id": pd.Series([0]), - "dupl": pd.Series([1]), + "some_func": pd.Series([1]), "x": pd.Series([1]), }, environment=environment, targets_tree={"unique": None}, + jit=jit, ) assert len(warning_list) == 0 @@ -273,6 +292,7 @@ def c(b): data_tree=minimal_input_data, environment=environment, targets_tree={"c": None}, + jit=jit, ) @@ -290,6 +310,7 @@ def b(a): data_tree=minimal_input_data, environment=environment, targets_tree={"b": None}, + jit=jit, ) @@ -306,6 +327,7 @@ def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions data_tree=minimal_input_data, environment=environment, targets_tree={"unknown_target": None}, + jit=jit, ) @@ -319,6 +341,7 @@ def test_fail_if_missing_p_id(): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, + jit=jit, ) @@ -334,6 +357,7 @@ def test_fail_if_non_unique_p_id(minimal_input_data): data_tree=data, environment=PolicyEnvironment({}), targets_tree={}, + jit=jit, ) @@ -358,17 +382,13 @@ def test_user_provided_aggregate_by_group_specs(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "fam_id": pd.Series([1, 1, 2], name="fam_id"), - "module_name": { - "betrag_m": pd.Series([100, 100, 100], name="betrag_m"), - }, + "module_name": {"betrag_m": pd.Series([100, 100, 100], name="betrag_m")}, } inputs = { "p_id": p_id, "fam_id": fam_id, - "module_name": { - "betrag_m": betrag_m, - }, + "module_name": {"betrag_m": betrag_m}, } expected_res = pd.Series([200, 200, 100]) @@ -377,6 +397,7 @@ def test_user_provided_aggregate_by_group_specs(): data_tree=data, environment=PolicyEnvironment(raw_objects_tree=inputs), targets_tree={"module_name": {"betrag_m_fam": None}}, + jit=jit, ) numpy.testing.assert_array_almost_equal( @@ -388,14 +409,13 @@ def test_user_provided_aggregation(): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "fam_id": pd.Series([1, 1, 2], name="fam_id"), - "module_name": { - "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), - }, + "module_name": {"betrag_m": pd.Series([200, 100, 100], name="betrag_m")}, } + data["num_segments"] = len(data["fam_id"].unique()) # Double up, then take max fam_id expected = pd.Series([400, 400, 200]) - @policy_function() + @policy_function(vectorization_strategy="vectorize") def betrag_m_double(betrag_m): return 2 * betrag_m @@ -418,7 +438,8 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: data_tree=data, environment=environment, targets_tree={"module_name": {"betrag_m_double_fam": None}}, - debug=True, + debug=False, + jit=jit, ) numpy.testing.assert_array_almost_equal( @@ -434,10 +455,11 @@ def test_user_provided_aggregation_with_time_conversion(): "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), }, } + # Double up, convert to quarter, then take max fam_id - expected = pd.Series([400 * 3, 400 * 3, 200 * 3]) + expected = pd.Series([400 * 12, 400 * 12, 200 * 12]) - @policy_function() + @policy_function(vectorization_strategy="vectorize") def betrag_double_m(betrag_m): return 2 * betrag_m @@ -459,12 +481,13 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: actual = compute_taxes_and_transfers( data_tree=data, environment=environment, - targets_tree={"module_name": {"betrag_double_q_fam": None}}, - debug=True, + targets_tree={"module_name": {"max_betrag_double_y_fam": None}}, + debug=False, + jit=jit, ) numpy.testing.assert_array_almost_equal( - actual["module_name"]["max_betrag_double_q_fam"], expected + actual["module_name"]["max_betrag_double_y_fam"], expected ) @@ -534,6 +557,7 @@ def source(p_id: int) -> int: # noqa: ARG001 minimal_input_data_shared_fam, environment, targets_tree=target_tree, + jit=jit, )["module"][next(iter(target_tree["module"].keys()))] numpy.testing.assert_array_almost_equal(out, expected) diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml index a9f271cf53..4b9890b470 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -37,19 +37,19 @@ inputs: - 0.0 outputs: payroll_tax__income__deductions_y: - - 100 + - 100.0 - 100.0 payroll_tax__income__deductions_y_sp: - - 200 + - 200.0 - 200.0 payroll_tax__income__amount_y: - - 9900 + - 9900.0 - 0.0 payroll_tax__income__amount_y_sp: - - 9900 - - 9900 + - 9900.0 + - 9900.0 payroll_tax__amount_y: - - 2970 + - 2970.0 - 0.0 payroll_tax__child_tax_credit__claim_of_child_y: - 0.0 diff --git a/tests/ttsim/test_jax_jit_kindergeld.py b/tests/ttsim/test_jax_jit_kindergeld.py deleted file mode 100644 index 49b97ef7ef..0000000000 --- a/tests/ttsim/test_jax_jit_kindergeld.py +++ /dev/null @@ -1,80 +0,0 @@ -from pathlib import Path - -import dags.tree as dt -import pandas as pd -import pytest -from pandas.testing import assert_frame_equal - -from _gettsim.kindergeld.kindergeld import betrag_ohne_staffelung_m as betrag_m -from _gettsim_tests.utils import ( - cached_set_up_policy_environment, - load_policy_test_data, -) -from ttsim import compute_taxes_and_transfers -from ttsim.config import IS_JAX_INSTALLED - -if IS_JAX_INSTALLED: - import jax - -SRC = Path().parent.parent / "src" -TEST_DATA = SRC / "_gettsim_tests" / "test_data" - - -# ====================================================================================== -# Unit tests for each policy function -# ====================================================================================== - - -@pytest.mark.skipif(not IS_JAX_INSTALLED, reason="JAX is not installed") -def test_kindergeld_policy_func(): - policy_func = betrag_m - policy_func_jitted = jax.jit(policy_func) - - inputs = { - "anzahl_ansprüche": jax.numpy.array([1, 2, 3]), - # params are not vectorized over - "kindergeld_params": {"kindergeld": 250}, - } - policy_func_jitted(**inputs) - - -# ====================================================================================== -# End-to-end tests (for compute_taxes_and_transfers) -# ====================================================================================== - - -@pytest.fixture -def kindergeld_policy_test(): - name = "alleinerz_2_children_low_unterhalt.yaml" - kindergeld_2024 = load_policy_test_data("kindergeld/2024-01-01") - single_test = [ - test_data for test_data in kindergeld_2024 if test_data.path.name == name - ] - return single_test[0] - - -@pytest.mark.skipif(not IS_JAX_INSTALLED, reason="JAX is not installed") -def test_compute_taxes_and_transfers_kindergeld(kindergeld_policy_test): - test = kindergeld_policy_test - - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - jit=True, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - if flat_expected_output_tree: - result_dataframe = pd.DataFrame(flat_result) - expected_dataframe = pd.DataFrame(flat_expected_output_tree) - assert_frame_equal( - result_dataframe, - expected_dataframe, - atol=test.info["precision_atol"], - check_dtype=False, - ) diff --git a/tests/ttsim/test_mettsim.py b/tests/ttsim/test_mettsim.py index a8dcb6978a..f128a374a7 100644 --- a/tests/ttsim/test_mettsim.py +++ b/tests/ttsim/test_mettsim.py @@ -5,6 +5,8 @@ get_policy_test_ids_and_cases, ) +from ttsim.config import IS_JAX_INSTALLED + policy_test_ids_and_cases = get_policy_test_ids_and_cases() @@ -14,4 +16,7 @@ ids=policy_test_ids_and_cases.keys(), ) def test_mettsim(test: PolicyTest): - execute_test(test) + if IS_JAX_INSTALLED: + execute_test(test, jit=True) + else: + execute_test(test, jit=False) diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index 20fd8c2025..ea0aaefec8 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -9,6 +9,13 @@ policy_function, policy_input, ) +from ttsim.config import IS_JAX_INSTALLED +from ttsim.config import numpy_or_jax as np + +if IS_JAX_INSTALLED: + DTYPE = "float32" +else: + DTYPE = "float64" @policy_input() @@ -24,48 +31,48 @@ def p_id() -> int: rounding_specs_and_exp_results = [ ( RoundingSpec(base=1, direction="up"), - [100.24, 100.78], - [101.0, 101.0], + np.array([100.24, 100.78]), + np.array([101.0, 101.0]), ), ( RoundingSpec(base=1, direction="down"), - [100.24, 100.78], - [100.0, 100.0], + np.array([100.24, 100.78]), + np.array([100.0, 100.0]), ), ( RoundingSpec(base=1, direction="nearest"), - [100.24, 100.78], - [100.0, 101.0], + np.array([100.24, 100.78]), + np.array([100.0, 101.0]), ), ( RoundingSpec(base=5, direction="up"), - [100.24, 100.78], - [105.0, 105.0], + np.array([100.24, 100.78]), + np.array([105.0, 105.0]), ), ( RoundingSpec(base=0.1, direction="down"), - [100.24, 100.78], - [100.2, 100.7], + np.array([100.24, 100.78]), + np.array([100.2, 100.7]), ), ( RoundingSpec(base=0.001, direction="nearest"), - [100.24, 100.78], - [100.24, 100.78], + np.array([100.24, 100.78]), + np.array([100.24, 100.78]), ), ( RoundingSpec(base=1, direction="up", to_add_after_rounding=10), - [100.24, 100.78], - [111.0, 111.0], + np.array([100.24, 100.78]), + np.array([111.0, 111.0]), ), ( RoundingSpec(base=1, direction="down", to_add_after_rounding=10), - [100.24, 100.78], - [110.0, 110.0], + np.array([100.24, 100.78]), + np.array([110.0, 110.0]), ), ( RoundingSpec(base=1, direction="nearest", to_add_after_rounding=10), - [100.24, 100.78], - [110.0, 111.0], + np.array([100.24, 100.78]), + np.array([110.0, 111.0]), ), ] @@ -102,9 +109,9 @@ def test_rounding(rounding_spec, input_values, exp_output): def test_func(x): return x - data = { - "p_id": pd.Series([1, 2]), - "namespace": {"x": pd.Series(input_values)}, + data_tree = { + "p_id": np.array([1, 2]), + "namespace": {"x": np.array(input_values)}, } environment = PolicyEnvironment( @@ -112,13 +119,13 @@ def test_func(x): ) calc_result = compute_taxes_and_transfers( - data_tree=data, + data_tree=data_tree, environment=environment, targets_tree={"namespace": {"test_func": None}}, ) assert_series_equal( pd.Series(calc_result["namespace"]["test_func"]), - pd.Series(exp_output), + pd.Series(exp_output, dtype=DTYPE), check_names=False, ) @@ -132,8 +139,8 @@ def test_func_m(x): return x data = { - "p_id": pd.Series([1, 2]), - "x": pd.Series([1.2, 1.5]), + "p_id": np.array([1, 2]), + "x": np.array([1.2, 1.5]), } environment = PolicyEnvironment( @@ -151,7 +158,7 @@ def test_func_m(x): ) assert_series_equal( pd.Series(calc_result["test_func_y"]), - pd.Series([12.0, 12.0]), + pd.Series([12.0, 12.0], dtype=DTYPE), check_names=False, ) @@ -170,8 +177,8 @@ def test_no_rounding( def test_func(x): return x - data = {"p_id": pd.Series([1, 2])} - data["x"] = pd.Series(input_values_exp_output) + data = {"p_id": np.array([1, 2])} + data["x"] = np.array(input_values_exp_output) environment = PolicyEnvironment( { "test_func": test_func, @@ -188,7 +195,7 @@ def test_func(x): ) assert_series_equal( pd.Series(calc_result["test_func"]), - pd.Series(input_values_exp_output), + pd.Series(input_values_exp_output, dtype=DTYPE), check_names=False, ) @@ -206,7 +213,7 @@ def test_func(income): func_with_rounding = rounding_spec.apply_rounding(test_func) assert_series_equal( - func_with_rounding(pd.Series(input_values)), + pd.Series(func_with_rounding(input_values)), pd.Series(exp_output), check_names=False, ) @@ -223,7 +230,7 @@ def test_func(income): return income rounded_func = rounding_spec.apply_rounding(test_func) - result = rounded_func(pd.Series(input_values)) + result = rounded_func(input_values) assert_series_equal( pd.Series(result), diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 5b0ba02192..9f4603447d 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -10,6 +10,7 @@ from dags import concatenate_functions from ttsim.config import IS_JAX_INSTALLED +from ttsim.ttsim_objects import AggByGroupFunction, AggByPIDFunction if IS_JAX_INSTALLED: import jax.numpy @@ -365,25 +366,30 @@ def test_disallowed_operation_wrapper(func): # ====================================================================================== -# TODO(@MImmesberger): Remove isinstance once GroupCreationFunctions are JAX-compatible. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 for year in range(1990, 2023): @pytest.mark.parametrize( - "func", + "funcname, func", [ - pf.function - for pf in dt.flatten_to_tree_paths( + (funcname, pf.function) + for funcname, pf in dt.flatten_to_tree_paths( active_ttsim_objects_tree( resource_dir=Path(__file__).parent / "mettsim", date=datetime.date(year=year, month=1, day=1), ) - ).values() - if not isinstance(pf, GroupCreationFunction | PolicyInput) + ).items() + if not isinstance( + pf, + GroupCreationFunction + | AggByGroupFunction + | AggByPIDFunction + | PolicyInput, + ) ], ) @pytest.mark.parametrize("backend", backends) - def test_convertible(func, backend): + def test_convertible(funcname, func, backend): # noqa: ARG001 + # Leave funcname for debugging purposes. make_vectorizable(func, backend=backend) diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index 08b4d0dd8a..443e85c6ef 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -1,15 +1,20 @@ from __future__ import annotations +import copy from pathlib import Path from typing import TYPE_CHECKING import dags.tree as dt +import optree import pandas as pd import yaml from mettsim.config import RESOURCE_DIR from ttsim import compute_taxes_and_transfers, merge_trees, set_up_policy_environment +from ttsim.config import IS_JAX_INSTALLED +from ttsim.config import numpy_or_jax as np from ttsim.shared import to_datetime +from ttsim.ttsim_objects import GroupCreationFunction TEST_DIR = Path(__file__).parent # Set display options to show all columns without truncation @@ -34,7 +39,7 @@ def __init__( date: datetime.date, ) -> None: self.info = info - self.input_tree = input_tree + self.input_tree = optree.tree_map(np.array, input_tree) self.expected_output_tree = expected_output_tree self.path = path self.date = date @@ -51,25 +56,58 @@ def name(self) -> str: return self.path.relative_to(TEST_DIR / "test_data").as_posix() -def execute_test(test: PolicyTest): +def execute_test(test: PolicyTest, jit: bool = False) -> None: environment = set_up_policy_environment(date=test.date, resource_dir=RESOURCE_DIR) - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) + if IS_JAX_INSTALLED: + ids = dict.fromkeys( + {f"{g}_id" for g in environment.grouping_levels}.intersection( + { + g + for g, t in environment.raw_objects_tree.items() + if isinstance(t, GroupCreationFunction) + } + ) + ) + result_ids = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=ids, + jit=False, + ) + data_tree = merge_trees(test.input_tree, result_ids) + targets_tree = copy.deepcopy(test.target_structure) + for i in [i for i in ids if i in targets_tree]: + del targets_tree[i] + else: + data_tree = test.input_tree + targets_tree = test.target_structure + + if targets_tree: + result = compute_taxes_and_transfers( + data_tree=data_tree, + environment=environment, + targets_tree=targets_tree, + jit=jit, + ) + else: + result = {} flat_result = dt.flatten_to_qual_names(result) flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) if flat_expected_output_tree: - result_df = pd.DataFrame(flat_result) expected_df = pd.DataFrame(flat_expected_output_tree) + result_df = pd.DataFrame(flat_result) + if IS_JAX_INSTALLED: + for i in [i for i in ids if i in expected_df]: + result_df = pd.concat( + [result_df, pd.Series(result_ids[i], name=i)], axis=1 + ) try: pd.testing.assert_frame_equal( - result_df, - expected_df, + result_df.sort_index(axis="columns"), + expected_df.sort_index(axis="columns"), atol=test.info["precision_atol"], check_dtype=False, ) From d9248f9e0c314d2c69c93b46479d1a1dcf71b008 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Thu, 1 May 2025 20:50:57 +0200 Subject: [PATCH 031/109] Prepare for jitting / vectorization of GETTSIM (#891) ### What problem do you want to solve? 1. A brief shot at trying to do the same for GETTSIM what #879 did for METTSIM. 2. Change the default of `vectorization_strategy` to `vectorize`, so that looking for `"loop"` allows to find all non-vectorisable cases quickly. - Good news: `test_full_taxes_and_transfers` runs nicely when jitted! - Bad news: Many tests fail because the logic in dividing up the taxes and transfers function is not elaborate enough. In the first pass, we are trying to build all ids. However, in many cases we are missing the required input data (made-up example: Einkommensteuer tests may require calculation of `sn_id`, but won't have all inputs required for `bg_id`). Solving this should be doable (first set up the entire graph, then check which ids are needed), but the required functions are buried inside of `compute_taxes_and_transfers` so we should not waste time on that before implementing the new interface. --- .../arbeitslosengeld_2/arbeitslosengeld_2.py | 4 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 10 +- .../kindergeld\303\274bertrag.py" | 1 - .../arbeitslosengeld_2/regelbedarf.py | 25 +-- src/_gettsim/config.py | 53 ------ .../abz\303\274ge/altersfreibetrag.py" | 6 +- .../pauschbetrag_behinderung.py" | 2 +- src/_gettsim/einkommensteuer/einkommen.py | 2 +- .../einkommensteuer/einkommensteuer.py | 15 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 12 +- src/_gettsim/household_characteristics.py | 2 +- src/_gettsim/ids.py | 162 ++++++++++-------- src/_gettsim/individual_characteristics.py | 6 +- src/_gettsim/kindergeld/kindergeld.py | 12 +- src/_gettsim/kinderzuschlag/einkommen.py | 4 +- src/_gettsim/lohnsteuer/lohnsteuer.py | 8 +- .../solidarit\303\244tszuschlag.py" | 8 +- .../arbeitslosen/arbeitslosengeld.py | 6 +- .../kranken/beitrag/beitrag.py | 3 +- src/_gettsim/sozialversicherung/midijob.py | 8 +- .../pflege/beitrag/beitrag.py | 51 +++++- .../pflege/beitrag/beitragssatz.py | 8 +- .../rente/altersrente/altersgrenzen.py | 19 +- .../besonders_langj\303\244hrig.py" | 4 +- .../f\303\274r_frauen/f\303\274r_frauen.py" | 5 +- .../langj\303\244hrig/langj\303\244hrig.py" | 6 +- .../regelaltersrente/regelaltersrente.py | 4 +- .../wegen_arbeitslosigkeit.py | 7 +- .../rente/grundrente/grundrente.py | 2 + src/_gettsim/synthetic.py | 7 +- .../unterhaltsvorschuss.py | 9 +- src/_gettsim/wohngeld/einkommen.py | 10 +- src/_gettsim/wohngeld/miete.py | 10 +- src/_gettsim/wohngeld/voraussetzungen.py | 4 +- src/_gettsim/wohngeld/wohngeld.py | 6 +- .../2005-01-01/hh_id_8.yaml | 2 - ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 3 - ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 3 - ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 - ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 - .../regelsatz_multiple_children.yaml | 6 - .../2005-01-01/regelsatz_no_adult_in_bg.yaml | 2 - .../2006-01-01/hh_id_4.yaml | 6 - .../2009-01-01/hh_id_3.yaml | 3 - .../2009-01-01/kind_20_jahre_in_bg.yaml | 3 - .../2013-01-01/hh_id_12.yaml | 3 - .../2013-01-01/hh_id_13.yaml | 3 - .../2013-01-01/hh_id_14.yaml | 3 - .../2013-01-01/hh_id_15.yaml | 3 - .../2013-01-01/hh_id_2.yaml | 3 - .../2018-01-01/hh_id_9.yaml | 6 - .../2019-01-01/hh_id_6.yaml | 4 - .../2019-01-01/test_age_limits_13_14.yaml | 4 - .../2019-01-01/test_age_limits_5_6.yaml | 4 - .../2022-01-01/hh_id_10.yaml | 4 - .../2022-01-01/hh_id_11.yaml | 4 - .../2023-01-01/hh_id_16.yaml | 2 - .../2023-01-01/hh_id_19.yaml | 4 - .../2023-01-01/hh_id_25.yaml | 4 - .../2023-01-01/test_age_limits_17_18.yaml | 5 - .../2023-01-01/test_family_high_wealth.yaml | 4 - .../test_family_wealth_below_threshold.yaml | 4 - .../2023-07-01/hh_id_20.yaml | 2 - .../2023-07-01/hh_id_21.yaml | 4 - .../2023-07-01/hh_id_22.yaml | 4 - .../2023-07-01/hh_id_23.yaml | 4 - .../2023-07-01/hh_id_24.yaml | 2 - ...inerz_kein_kindergeld\303\274bertrag.yaml" | 4 - ...nerz_teilw_kindergeld\303\274bertrag.yaml" | 4 - ...erz_voller_kindergeld\303\274bertrag.yaml" | 4 - .../kost_unterk_multiple_bg_in_hh.yaml | 10 -- .../2024-01-01/kost_unterk_one_bg_in_hh.yaml | 5 - ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 3 - ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 3 - ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 - ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 - .../regelsatz_multiple_children.yaml | 6 - .../2024-01-01/regelsatz_no_adult_in_bg.yaml | 2 - .../2004-01-01/hh_id_11.yaml" | 2 - .../2005-01-01/hh_id_2.yaml" | 3 - .../2005-01-01/hh_id_5.yaml" | 2 - .../2005-01-01/hh_id_8.yaml" | 2 - .../2005-01-01/hh_id_9.yaml" | 2 - .../2010-01-01/hh_id_16.yaml" | 2 - .../2010-01-01/hh_id_3.yaml" | 2 - .../2010-01-01/hh_id_6.yaml" | 3 - .../2018-01-01/hh_id_15.yaml" | 2 - .../2020-01-01/hh_id_13.yaml" | 2 - .../2021-01-01/hh_id_12.yaml" | 2 - .../2022-01-01/hh_id_17.yaml" | 3 - .../2022-01-01/hh_id_18.yaml" | 3 - .../2023-01-01/hh_id_4.yaml" | 2 - .../2023-01-01/hh_id_7.yaml" | 2 - .../2010-01-01/hh_id_4.yaml" | 5 - .../2012-01-01/hh_id_2.yaml" | 2 - .../2016-01-01/hh_id_1.yaml" | 4 - .../skip_2019/hh_id_5.yaml" | 4 - .../2010-01-01/hh_id_1.yaml | 2 - .../2010-01-01/hh_id_2.yaml | 2 - .../2010-01-01/hh_id_3.yaml | 2 - .../2010-01-01/hh_id_4.yaml | 2 - .../2010-01-01/hh_id_5.yaml | 2 - .../2015-01-01/hh_id_16.yaml | 2 - .../2015-01-01/hh_id_17.yaml | 3 - .../2017-01-01/hh_id_18.yaml | 3 - .../2018-01-01/hh_id_10.yaml | 2 - .../2018-01-01/hh_id_11.yaml | 2 - .../2018-01-01/hh_id_12.yaml | 2 - .../2018-01-01/hh_id_7.yaml | 2 - .../2018-01-01/hh_id_8.yaml | 2 - .../2018-01-01/hh_id_9.yaml | 2 - .../2019-01-01/hh_id_13.yaml | 3 - .../2020-01-01/hh_id_14.yaml | 5 - .../2020-01-01/hh_id_19.yaml | 5 - .../2020-01-01/hh_id_20.yaml | 5 - .../elterngeld/2017-01-01/hh_id_2.yaml | 2 - .../elterngeld/2018-01-01/hh_id_1.yaml | 2 - .../elterngeld/2018-01-01/hh_id_2.yaml | 3 - .../elterngeld/2018-01-01/hh_id_3.yaml | 3 - .../elterngeld/2018-01-01/hh_id_4.yaml | 3 - .../elterngeld/2018-01-01/hh_id_6.yaml | 2 - .../elterngeld/2019-01-01/hh_id_1.yaml | 3 - .../elterngeld/2019-01-01/hh_id_3.yaml | 4 - .../elterngeld/2019-01-01/hh_id_5.yaml | 3 - .../elterngeld/2019-01-01/hh_id_6.yaml | 4 - .../elterngeld/2019-01-01/hh_id_7.yaml | 4 - .../elterngeld/2019-01-01/hh_id_8.yaml | 5 - .../2024-01-01/income_during_elterngeld.yaml | 4 - .../2024-01-01/maximum_elterngeld.yaml | 3 - .../2024-01-01/minimum_elterngeld.yaml | 3 - .../net_income_before_birth_1000.yaml | 4 - .../net_income_before_birth_790.yaml | 4 - ...t_1_kind_bis24_1_kind_\303\274ber_24.yaml" | 0 ...eiratet_1_kind_gro\303\237elternteil.yaml" | 0 ...rspr\303\274chliche_einstandspartner.yaml" | 0 ..._widerspr\303\274chliche_veranlagung.yaml" | 0 ...kelkind_und_sgb_ii_gro\303\237mutter.yaml" | 0 ...elkind_und_sgb_xii_gro\303\237mutter.yaml" | 0 ...spr\303\274chliche_veranlagungs_info.yaml" | 0 .../im_alter/2017-07-01/hh_id_13.yaml | 3 - .../im_alter/2017-07-01/hh_id_16.yaml | 2 - .../im_alter/2017-07-01/hh_id_17.yaml | 2 - .../im_alter/2017-07-01/hh_id_6.yaml | 3 - .../im_alter/2018-07-01/hh_id_12.yaml | 2 - .../im_alter/2018-07-01/hh_id_20.yaml | 2 - .../im_alter/2018-07-01/hh_id_22.yaml | 2 - .../im_alter/2018-07-01/hh_id_3.yaml | 2 - .../im_alter/2020-07-01/hh_id_18.yaml | 2 - .../im_alter/2020-07-01/hh_id_19.yaml | 3 - .../im_alter/2021-07-01/hh_id_1.yaml | 3 - .../im_alter/2021-07-01/hh_id_14.yaml | 2 - .../im_alter/2021-07-01/hh_id_15.yaml | 2 - .../im_alter/2021-07-01/hh_id_2.yaml | 2 - .../im_alter/2021-07-01/hh_id_21.yaml | 3 - .../im_alter/2021-07-01/hh_id_23.yaml | 3 - .../im_alter/2021-07-01/hh_id_5.yaml | 2 - .../im_alter/2021-07-01/hh_id_7.yaml | 2 - .../im_alter/2021-07-01/hh_id_9.yaml | 3 - .../im_alter/2022-07-01/hh_id_10.yaml | 2 - .../im_alter/2022-07-01/hh_id_11.yaml | 2 - .../im_alter/2022-07-01/hh_id_24.yaml | 3 - .../im_alter/2022-07-01/hh_id_25.yaml | 3 - .../im_alter/2022-07-01/hh_id_4.yaml | 3 - .../im_alter/2022-07-01/hh_id_8.yaml | 2 - .../kinderzuschlag/2013-01-01/hh_id_2.yaml | 3 - .../kinderzuschlag/2016-01-01/hh_id_1.yaml | 4 - .../kinderzuschlag/2016-01-01/hh_id_11.yaml | 4 - .../kinderzuschlag/2016-01-01/hh_id_12.yaml | 4 - .../kinderzuschlag/2016-01-01/hh_id_13.yaml | 4 - .../kinderzuschlag/2016-01-01/hh_id_7.yaml | 4 - .../kinderzuschlag/2017-01-01/hh_id_9.yaml | 5 - .../kinderzuschlag/2019-01-01/hh_id_6.yaml | 3 - .../kinderzuschlag/2020-01-01/hh_id_8.yaml | 3 - .../kinderzuschlag/2021-01-01/hh_id_10.yaml | 4 - .../kinderzuschlag/2023-01-01/hh_id_14.yaml | 3 - .../2023-01-01/test_child_income.yaml | 3 - .../2023-01-01/test_family_high_wealth.yaml | 3 - .../test_higher_wealth_exemptions.yaml | 3 - .../kinderzuschlag/skip_2006/hh_id_4.yaml | 6 - .../kinderzuschlag/skip_2009/hh_id_3.yaml | 3 - .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 3 - .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 2 - .../2015-01-01/skip_hh_id_5.yaml | 3 - .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 2 - .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 2 - .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 3 - .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 3 - ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 3 - ...eringf\303\274gig_besch\303\244ftigt.yaml" | 2 - .../regul\303\244r_besch\303\244ftigt.yaml" | 2 - .../selbst\303\244ndig_viel_einkommen.yaml" | 2 - .../selbst\303\244ndig_wenig_einkommen.yaml" | 2 - .../beitr\303\244ge/2004-04-01/rentner.yaml" | 2 - .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 2 - .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 20 ++- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 2 - .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 2 - .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 2 - .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 2 - .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 2 - .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 2 - .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 2 - .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 2 - .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 2 - .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 2 - .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 2 - .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 2 - .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 2 - .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 2 - .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 2 - .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 2 - .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 2 - .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 2 - .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 2 - .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 2 - .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 2 - .../cohort_1936_wegen_arbeitsl.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_1.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_19.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_2.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_24.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_25.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_3.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_30.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_4.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_5.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_6.yaml | 2 - .../rente/betrag/2010-07-01/hh_id_7.yaml | 2 - .../rente/betrag/2012-07-01/hh_id_10.yaml | 2 - .../rente/betrag/2012-07-01/hh_id_11.yaml | 2 - .../rente/betrag/2012-07-01/hh_id_8.yaml | 2 - .../rente/betrag/2012-07-01/hh_id_9.yaml | 2 - .../rente/betrag/2014-07-01/hh_id_25.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_12.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_13.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_14.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_15.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_16.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_17.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_18.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_19.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_25.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_26.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_27.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_28.yaml | 2 - .../rente/betrag/2015-07-01/hh_id_29.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_20.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_21.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_22.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_23.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_24.yaml | 2 - .../rente/betrag/2018-07-01/hh_id_25.yaml | 2 - ...t_birthyear_1980_preliminary_products.yaml | 2 - ...t_birthyear_1950_preliminary_products.yaml | 2 - ...t_birthyear_1960_preliminary_products.yaml | 2 - ...t_birthyear_1970_preliminary_products.yaml | 2 - ...t_birthyear_1980_preliminary_products.yaml | 2 - ...t_birthyear_1995_preliminary_products.yaml | 2 - ...t_birthyear_1960_preliminary_products.yaml | 2 - ...t_birthyear_1970_preliminary_products.yaml | 2 - ...t_birthyear_1980_preliminary_products.yaml | 2 - ...t_birthyear_1990_preliminary_products.yaml | 2 - ...birthyear_2000_2_preliminary_products.yaml | 2 - ...t_birthyear_2000_preliminary_products.yaml | 2 - ...t_birthyear_1957_preliminary_products.yaml | 2 - ...birthyear_1970_2_preliminary_products.yaml | 2 - ...t_birthyear_1970_preliminary_products.yaml | 2 - ...t_birthyear_1995_preliminary_products.yaml | 2 - .../unterhalt/2023-01-01/hh_id_1.yaml | 2 - .../unterhalt/2023-01-01/hh_id_2.yaml | 2 - ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 .../2018-01-01/hh_id_5.yaml | 3 - ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 .../older_child_parent_with_income.yaml | 4 - .../older_child_parent_without_income.yaml | 4 - .../young_child_parent_without_income.yaml | 4 - ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 .../2019-08-01/hh_id_1.yaml | 3 - ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 0 ...6he_obere_altergruppe_kein_einkommen.yaml" | 0 ...nkommen_\303\274ber_einkommensgrenze.yaml" | 0 ...pruchsh\303\266he_untere_altergruppe.yaml" | 0 .../2006-01-01/hh_id_4.yaml" | 6 - .../2009-01-01/hh_id_3.yaml" | 3 - .../2013-01-01/hh_id_2.yaml" | 3 - .../2014-01-01/hh_id_7.yaml" | 3 - .../2016-01-01/hh_id_1.yaml" | 4 - .../2019-01-01/hh_id_6.yaml" | 3 - .../2019-01-01/hh_id_8.yaml" | 2 - .../wohngeld/2006-01-01/hh_id_15.yaml | 9 - .../wohngeld/2006-01-01/hh_id_4.yaml | 6 - .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 3 - .../wohngeld/2013-01-01/hh_id_2.yaml | 3 - .../wohngeld/2013-01-01/hh_id_9.yaml | 3 - .../wohngeld/2016-01-01/hh_id_1.yaml | 4 - .../wohngeld/2018-01-01/hh_id_7.yaml | 14 -- .../wohngeld/2018-01-01/hh_id_8.yaml | 7 - .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 7 - .../wohngeld/2019-01-01/hh_id_5.yaml | 2 - .../wohngeld/2021-01-01/hh_id_10.yaml | 2 - .../wohngeld/2023-01-01/hh_id_11.yaml | 2 - .../wohngeld/2023-01-01/hh_id_12.yaml | 2 - .../wohngeld/2023-01-01/hh_id_13.yaml | 4 - .../wohngeld/2023-01-01/hh_id_14.yaml | 7 - .../wohngeld/2023-01-01/hh_id_16.yaml | 5 - .../wohngeld/2023-01-01/hh_id_17.yaml | 6 - src/_gettsim_tests/test_groupings.py | 2 +- src/_gettsim_tests/test_lohnsteuer.py | 15 +- src/_gettsim_tests/utils.py | 58 +++++-- src/ttsim/compute_taxes_and_transfers.py | 3 - src/ttsim/rounding.py | 2 +- src/ttsim/ttsim_objects.py | 2 +- tests/ttsim/mettsim/config.py | 2 - .../eligibility/eligibility.py | 2 - .../mettsim/housing_benefits/income/income.py | 1 - tests/ttsim/test_combine_functions.py | 4 +- .../ttsim/test_compute_taxes_and_transfers.py | 19 +- tests/ttsim/test_docs.py | 3 +- tests/ttsim/test_time_conversion.py | 7 +- 374 files changed, 369 insertions(+), 1030 deletions(-) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml => "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" (98%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml => "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" (98%) rename src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml => "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" (98%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_einstandspartner.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_veranlagung.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_gro\303\237mutter.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_gro\303\237mutter.yaml" (100%) rename src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml => "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspr\303\274chliche_veranlagungs_info.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" (100%) rename src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" (100%) rename src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml => "src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" (98%) rename src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml => "src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" (98%) diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 55ffd26ecb..7af85164fa 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -6,7 +6,7 @@ from ttsim import policy_function -@policy_function(vectorization_strategy="vectorize") +@policy_function() def betrag_m_bg( anspruchshöhe_m_bg: float, vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, @@ -55,7 +55,7 @@ def betrag_m_bg( return out -@policy_function(vectorization_strategy="vectorize") +@policy_function() def anspruchshöhe_m_bg( regelbedarf_m_bg: float, anzurechnendes_einkommen_m_bg: float, diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index bc7cfd2d93..49106b3506 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -3,7 +3,7 @@ from ttsim import piecewise_polynomial, policy_function -@policy_function(vectorization_strategy="vectorize") +@policy_function() def anzurechnendes_einkommen_m( nettoeinkommen_nach_abzug_freibetrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, @@ -47,7 +47,7 @@ def anzurechnendes_einkommen_m( ) -@policy_function(vectorization_strategy="vectorize") +@policy_function() def nettoeinkommen_nach_abzug_freibetrag_m( nettoeinkommen_vor_abzug_freibetrag_m: float, anrechnungsfreies_einkommen_m: float, @@ -72,7 +72,7 @@ def nettoeinkommen_nach_abzug_freibetrag_m( return nettoeinkommen_vor_abzug_freibetrag_m - anrechnungsfreies_einkommen_m -@policy_function(vectorization_strategy="vectorize") +@policy_function() def nettoeinkommen_vor_abzug_freibetrag_m( bruttoeinkommen_m: float, einkommensteuer__betrag_m_sn: float, @@ -111,7 +111,7 @@ def nettoeinkommen_vor_abzug_freibetrag_m( ) -@policy_function(vectorization_strategy="vectorize") +@policy_function() def bruttoeinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, @@ -168,7 +168,7 @@ def bruttoeinkommen_m( return out -@policy_function(end_date="2005-09-30", vectorization_strategy="vectorize") +@policy_function(end_date="2005-09-30") def nettoquote_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__betrag_m_sn: float, diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 2f4bee79b0..2276101ffb 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -43,7 +43,6 @@ def _mean_kindergeld_per_child_gestaffelt_m( @policy_function( start_date="2023-01-01", leaf_name="kindergeld_pro_kind_m", - vectorization_strategy="vectorize", ) def _mean_kindergeld_per_child_ohne_staffelung_m( kindergeld_params: dict, diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 0e8f8788cc..412ae2704d 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -3,7 +3,7 @@ from ttsim import policy_function -@policy_function(vectorization_strategy="vectorize") +@policy_function() def regelbedarf_m( regelsatz_m: float, kosten_der_unterkunft_m: float, @@ -29,7 +29,7 @@ def regelbedarf_m( return regelsatz_m + kosten_der_unterkunft_m -@policy_function() +@policy_function(vectorization_strategy="loop") def mehrbedarf_alleinerziehend_m( familie__alleinerziehend: bool, anzahl_kinder_fg: int, @@ -90,9 +90,7 @@ def mehrbedarf_alleinerziehend_m( return out -@policy_function( - end_date="2010-12-31", leaf_name="kindersatz_m", vectorization_strategy="vectorize" -) +@policy_function(end_date="2010-12-31", leaf_name="kindersatz_m") def kindersatz_m_bis_2010( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, @@ -144,7 +142,6 @@ def kindersatz_m_bis_2010( @policy_function( start_date="2011-01-01", leaf_name="kindersatz_m", - vectorization_strategy="vectorize", ) def kindersatz_m_ab_2011( alter: int, @@ -201,7 +198,6 @@ def kindersatz_m_ab_2011( @policy_function( end_date="2010-12-31", leaf_name="erwachsenensatz_m", - vectorization_strategy="vectorize", ) def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( mehrbedarf_alleinerziehend_m: float, @@ -244,7 +240,6 @@ def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( @policy_function( start_date="2011-01-01", leaf_name="erwachsenensatz_m", - vectorization_strategy="vectorize", ) def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( mehrbedarf_alleinerziehend_m: float, @@ -284,7 +279,7 @@ def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( return out * (1 + mehrbedarf_alleinerziehend_m) -@policy_function(vectorization_strategy="vectorize") +@policy_function() def regelsatz_m( erwachsenensatz_m: float, kindersatz_m: float, @@ -309,7 +304,6 @@ def regelsatz_m( @policy_function( end_date="2022-12-31", leaf_name="kosten_der_unterkunft_m", - vectorization_strategy="vectorize", ) def kosten_der_unterkunft_m_bis_2022( berechtigte_wohnfläche: float, @@ -336,7 +330,6 @@ def kosten_der_unterkunft_m_bis_2022( @policy_function( start_date="2023-01-01", leaf_name="kosten_der_unterkunft_m", - vectorization_strategy="vectorize", ) def kosten_der_unterkunft_m_ab_2023( bruttokaltmiete_m: float, @@ -377,7 +370,7 @@ def kosten_der_unterkunft_m_ab_2023( return out -@policy_function(vectorization_strategy="vectorize") +@policy_function() def anerkannte_warmmiete_je_qm_m( bruttokaltmiete_m: float, heizkosten_m: float, @@ -410,7 +403,7 @@ def anerkannte_warmmiete_je_qm_m( return out -@policy_function() +@policy_function(vectorization_strategy="loop") def berechtigte_wohnfläche( wohnfläche: float, wohnen__bewohnt_eigentum_hh: bool, @@ -459,7 +452,7 @@ def berechtigte_wohnfläche( return min(wohnfläche, maximum / anzahl_personen_hh) -@policy_function(vectorization_strategy="vectorize") +@policy_function() def bruttokaltmiete_m( wohnen__bruttokaltmiete_m_hh: float, anzahl_personen_hh: int, @@ -484,7 +477,7 @@ def bruttokaltmiete_m( return wohnen__bruttokaltmiete_m_hh / anzahl_personen_hh -@policy_function(vectorization_strategy="vectorize") +@policy_function() def heizkosten_m( wohnen__heizkosten_m_hh: float, anzahl_personen_hh: int, @@ -509,7 +502,7 @@ def heizkosten_m( return wohnen__heizkosten_m_hh / anzahl_personen_hh -@policy_function(vectorization_strategy="vectorize") +@policy_function() def wohnfläche( wohnen__wohnfläche_hh: float, anzahl_personen_hh: int, diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index af2aacad2a..c752f0762d 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -28,59 +28,6 @@ "erziehungsgeld", ] -SUPPORTED_GROUPINGS = { - "hh": { - "name": "Haushalt", - "namespace": "top-level", - "description": "Individuals living together in a household in the Wohngeld" - " sense (§5 WoGG).", - "potentially_endogenous": False, - }, - "wthh": { - "name": "wohngeldrechtlicher Teilhaushalt", - "namespace": "wohngeld", - "description": "The relevant unit for Wohngeld. Members of a household for whom" - " the Wohngeld priority check compared to Bürgergeld yields the same result" - " ∈ {True, False}.", - "potentially_endogenous": True, - }, - "fg": { - "name": "Familiengemeinschaft", - "namespace": "arbeitslosengeld_2", - "description": "Maximum of two generations, the relevant base unit for" - " Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough" - " income fend for themselves.", - "potentially_endogenous": True, - }, - "bg": { - "name": "Bedarfsgemeinschaft", - "namespace": "arbeitslosengeld_2", - "description": "Familiengemeinschaft except for children who have enough income" - " to fend for themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2", - "potentially_endogenous": True, - }, - "eg": { - "name": "Einstandsgemeinschaft / Einstandspartner", - "namespace": "arbeitslosengeld_2", - "description": "A couple whose members are deemed to be responsible for each" - " other.", - "potentially_endogenous": True, - }, - "ehe": { - "name": "Ehepartner", - "namespace": "familie", - "description": "Couples that are either married or in a civil union.", - "potentially_endogenous": True, - }, - "sn": { - "name": "Steuernummer", - "namespace": "einkommensteuer", - "description": "Spouses filing taxes jointly or individuals.", - "potentially_endogenous": True, - }, -} - - _TO_DELETE_DEFAULT_TARGETS = { "einkommensteuer": { "betrag_y_sn": None, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" index d287a3b4bb..05882c6f15 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" @@ -56,7 +56,11 @@ def altersfreibetrag_y_bis_2004( return out -@policy_function(start_date="2005-01-01", leaf_name="altersfreibetrag_y") +@policy_function( + start_date="2005-01-01", + leaf_name="altersfreibetrag_y", + vectorization_strategy="loop", +) def altersfreibetrag_y_ab_2005( alter: int, geburtsjahr: int, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" index 86d988c619..d0e81c2f3d 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" @@ -4,7 +4,7 @@ from ttsim.config import numpy_or_jax as np -@policy_function() +@policy_function(vectorization_strategy="loop") def pauschbetrag_behinderung_y( behinderungsgrad: int, eink_st_abzuege_params: dict ) -> float: diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index 67561b309c..1871bcc846 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -6,7 +6,7 @@ from ttsim import policy_function -@policy_function(vectorization_strategy="vectorize") +@policy_function() def gesamteinkommen_y( einkünfte__gesamtbetrag_der_einkünfte_y_sn: float, abzüge__betrag_y_sn: float, diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index cbced79e69..589e941559 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -41,7 +41,6 @@ def anzahl_kindergeld_ansprüche_2( @policy_function( end_date="1996-12-31", leaf_name="betrag_y_sn", - vectorization_strategy="vectorize", rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S. 6 EStG" ), @@ -67,7 +66,6 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( @policy_function( start_date="1997-01-01", leaf_name="betrag_y_sn", - vectorization_strategy="vectorize", rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), @@ -103,7 +101,7 @@ def betrag_y_sn_kindergeld_oder_kinderfreibetrag( return out -@policy_function(vectorization_strategy="vectorize") +@policy_function() def kinderfreibetrag_günstiger_sn( betrag_ohne_kinderfreibetrag_y_sn: float, betrag_mit_kinderfreibetrag_y_sn: float, @@ -148,6 +146,7 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), + vectorization_strategy="loop", ) def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, @@ -183,7 +182,8 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( @policy_function( rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" - ) + ), + vectorization_strategy="loop", ) def betrag_ohne_kinderfreibetrag_y_sn( gesamteinkommen_y: float, @@ -214,7 +214,11 @@ def betrag_ohne_kinderfreibetrag_y_sn( return out -@policy_function(end_date="2022-12-31", leaf_name="relevantes_kindergeld_m") +@policy_function( + end_date="2022-12-31", + leaf_name="relevantes_kindergeld_m", + vectorization_strategy="loop", +) def relevantes_kindergeld_mit_staffelung_m( anzahl_kindergeld_ansprüche_1: int, anzahl_kindergeld_ansprüche_2: int, @@ -255,7 +259,6 @@ def relevantes_kindergeld_mit_staffelung_m( @policy_function( start_date="2023-01-01", leaf_name="relevantes_kindergeld_m", - vectorization_strategy="vectorize", ) def relevantes_kindergeld_ohne_staffelung_m( anzahl_kindergeld_ansprüche_1: int, diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 634e20a067..278511d9a3 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -15,7 +15,9 @@ def anspruchshöhe_m( pass -@policy_function(start_date="2004-01-01", end_date="2008-12-31") +@policy_function( + start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" +) def betrag_m( anspruchshöhe_m: int, grundsätzlich_anspruchsberechtigt: bool, @@ -357,7 +359,9 @@ def anzurechnendes_einkommen_y( return out -@policy_function(start_date="2004-01-01", end_date="2008-12-31") +@policy_function( + start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" +) def einkommensgrenze_y( einkommensgrenze_ohne_geschwisterbonus: float, arbeitslosengeld_2__anzahl_kinder_fg: float, @@ -394,7 +398,9 @@ def einkommensgrenze_y( return out -@policy_function(start_date="2004-01-01", end_date="2008-12-31") +@policy_function( + start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" +) def einkommensgrenze_ohne_geschwisterbonus( familie__alleinerziehend_fg: bool, alter_monate: float, diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index 844ab7d459..f3a426b7cc 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -18,7 +18,7 @@ def anzahl_personen_hh(hh_id: int) -> int: pass -@policy_function(vectorization_strategy="vectorize") +@policy_function() def erwachsene_alle_rentenbezieher_hh( anzahl_erwachsene_hh: int, anzahl_rentenbezieher_hh: int ) -> bool: diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index e3450fbe74..6646a14d40 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -2,35 +2,32 @@ from collections import Counter -import numpy - from ttsim import group_creation_function, policy_input +from ttsim.config import numpy_or_jax as np @policy_input() -def hh_id() -> int: - pass +def p_id() -> int: + """Unique identifier for each person. Always required, must be unique.""" @policy_input() -def p_id() -> int: - pass +def hh_id() -> int: + """Individuals living together in a household in the Wohngeld sense (§5 WoGG).""" @group_creation_function() def ehe_id( - p_id: numpy.ndarray[int], - familie__p_id_ehepartner: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Ehe for each person. - """ + p_id: np.ndarray, + familie__p_id_ehepartner: np.ndarray, +) -> np.ndarray: + """Couples that are either married or in a civil union.""" p_id_to_ehe_id: dict[int, int] = {} next_ehe_id = 0 result: list[int] = [] - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = familie__p_id_ehepartner[index] + for index, current_p_id in enumerate(map(int, p_id)): + current_p_id_ehepartner = int(familie__p_id_ehepartner[index]) if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: result.append(p_id_to_ehe_id[current_p_id_ehepartner]) @@ -41,32 +38,34 @@ def ehe_id( p_id_to_ehe_id[current_p_id] = next_ehe_id next_ehe_id += 1 - return numpy.asarray(result) + return np.array(result) @group_creation_function() def fg_id( # noqa: PLR0912 - arbeitslosengeld_2__p_id_einstandspartner: numpy.ndarray[int], - p_id: numpy.ndarray[int], - hh_id: numpy.ndarray[int], - alter: numpy.ndarray[int], - familie__p_id_elternteil_1: numpy.ndarray[int], - familie__p_id_elternteil_2: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Familiengemeinschaft for each person. + arbeitslosengeld_2__p_id_einstandspartner: np.ndarray, + p_id: np.ndarray, + hh_id: np.ndarray, + alter: np.ndarray, + familie__p_id_elternteil_1: np.ndarray, + familie__p_id_elternteil_2: np.ndarray, +) -> np.ndarray: + """Familiengemeinschaft. Base unit for some transfers. + + Maximum of two generations, the relevant base unit for Bürgergeld / Arbeitslosengeld + 2, before excluding children who have enough income fend for themselves. """ # Build indexes p_id_to_index: dict[int, int] = {} p_id_to_p_ids_children: dict[int, list[int]] = {} - for index, current_p_id in enumerate(p_id): + for index, current_p_id in enumerate(map(int, p_id)): # Fast access from p_id to index p_id_to_index[current_p_id] = index # Fast access from p_id to p_ids of children - current_familie__p_id_elternteil_1 = familie__p_id_elternteil_1[index] - current_familie__p_id_elternteil_2 = familie__p_id_elternteil_2[index] + current_familie__p_id_elternteil_1 = int(familie__p_id_elternteil_1[index]) + current_familie__p_id_elternteil_2 = int(familie__p_id_elternteil_2[index]) if current_familie__p_id_elternteil_1 >= 0: if current_familie__p_id_elternteil_1 not in p_id_to_p_ids_children: @@ -85,7 +84,7 @@ def fg_id( # noqa: PLR0912 p_id_to_fg_id = {} next_fg_id = 0 - for index, current_p_id in enumerate(p_id): + for index, current_p_id in enumerate(map(int, p_id)): # Already assigned a fg_id to this p_id via einstandspartner / # parent if current_p_id in p_id_to_fg_id: @@ -93,15 +92,17 @@ def fg_id( # noqa: PLR0912 p_id_to_fg_id[current_p_id] = next_fg_id - current_hh_id = hh_id[index] - current_p_id_einstandspartner = arbeitslosengeld_2__p_id_einstandspartner[index] + current_hh_id = int(hh_id[index]) + current_p_id_einstandspartner = int( + arbeitslosengeld_2__p_id_einstandspartner[index] + ) current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) # Assign fg to children for current_p_id_child in current_p_id_children: child_index = p_id_to_index[current_p_id_child] - child_hh_id = hh_id[child_index] - child_alter = alter[child_index] + child_hh_id = int(hh_id[child_index]) + child_alter = int(alter[child_index]) child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) if ( @@ -126,8 +127,8 @@ def fg_id( # noqa: PLR0912 if current_p_id_child in p_id_to_fg_id: continue child_index = p_id_to_index[current_p_id_child] - child_hh_id = hh_id[child_index] - child_alter = alter[child_index] + child_hh_id = int(hh_id[child_index]) + child_alter = int(alter[child_index]) child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) if ( @@ -144,18 +145,20 @@ def fg_id( # noqa: PLR0912 next_fg_id += 1 # Compute result vector - result = [p_id_to_fg_id[current_p_id] for current_p_id in p_id] - return numpy.asarray(result) + result = [p_id_to_fg_id[current_p_id] for current_p_id in map(int, p_id)] + return np.array(result) @group_creation_function() def bg_id( - fg_id: numpy.ndarray[int], - arbeitslosengeld_2__eigenbedarf_gedeckt: numpy.ndarray[bool], - alter: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Bedarfsgemeinschaft for each person. + fg_id: np.ndarray, + arbeitslosengeld_2__eigenbedarf_gedeckt: np.ndarray, + alter: np.ndarray, +) -> np.ndarray: + """Bedarfsgemeinschaft + + Familiengemeinschaft except for children who have enough income to fend for + themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2 """ # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt # once Bedarfsgemeinschaften are fully endogenous @@ -163,9 +166,11 @@ def bg_id( counter: Counter[int] = Counter() result: list[int] = [] - for index, current_fg_id in enumerate(fg_id): - current_alter = alter[index] - current_eigenbedarf_gedeckt = arbeitslosengeld_2__eigenbedarf_gedeckt[index] + for index, current_fg_id in enumerate(map(int, fg_id)): + current_alter = int(alter[index]) + current_eigenbedarf_gedeckt = bool( + arbeitslosengeld_2__eigenbedarf_gedeckt[index] + ) # TODO(@MImmesberger): Remove hard-coded number # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 if current_alter < 25 and current_eigenbedarf_gedeckt: @@ -174,23 +179,26 @@ def bg_id( else: result.append(current_fg_id * 100) - return numpy.asarray(result) + return np.array(result) @group_creation_function() def eg_id( - arbeitslosengeld_2__p_id_einstandspartner: numpy.ndarray[int], - p_id: numpy.ndarray[int], -) -> numpy.ndarray[int]: - """ - Compute the ID of the Einstandsgemeinschaft for each person. + arbeitslosengeld_2__p_id_einstandspartner: np.ndarray, + p_id: np.ndarray, +) -> np.ndarray: + """Einstandsgemeinschaft / Einstandspartner according to SGB II. + + A couple whose members are deemed to be responsible for each other. """ p_id_to_eg_id: dict[int, int] = {} next_eg_id = 0 result: list[int] = [] - for index, current_p_id in enumerate(p_id): - current_p_id_einstandspartner = arbeitslosengeld_2__p_id_einstandspartner[index] + for index, current_p_id in enumerate(map(int, p_id)): + current_p_id_einstandspartner = int( + arbeitslosengeld_2__p_id_einstandspartner[index] + ) if ( current_p_id_einstandspartner >= 0 @@ -204,25 +212,26 @@ def eg_id( p_id_to_eg_id[current_p_id] = next_eg_id next_eg_id += 1 - return numpy.asarray(result) + return np.array(result) @group_creation_function() def wthh_id( - hh_id: numpy.ndarray[int], - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[bool], - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: numpy.ndarray[ - bool - ], -) -> numpy.ndarray[int]: - """ - Compute the ID of the wohngeldrechtlicher Teilhaushalt. + hh_id: np.ndarray, + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: np.ndarray, + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: np.ndarray, +) -> np.ndarray: + """Wohngeldrechtlicher Teilhaushalt. + + The relevant unit for Wohngeld. Members of a household for whom the Wohngeld + priority check compared to Bürgergeld yields the same result ∈ {True, False}. """ result: list[int] = [] - for index, current_hh_id in enumerate(hh_id): - if ( + for index, current_hh_id in enumerate(map(int, hh_id)): + if bool( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] - or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ + ) or bool( + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ index ] ): @@ -230,26 +239,27 @@ def wthh_id( else: result.append(current_hh_id * 100) - return numpy.asarray(result) + return np.array(result) @group_creation_function() def sn_id( - p_id: numpy.ndarray[int], - familie__p_id_ehepartner: numpy.ndarray[int], - einkommensteuer__gemeinsam_veranlagt: numpy.ndarray[bool], -) -> numpy.ndarray[int]: - """ - Compute a Steuernummer (ID) for each person / couple. + p_id: np.ndarray, + familie__p_id_ehepartner: np.ndarray, + einkommensteuer__gemeinsam_veranlagt: np.ndarray, +) -> np.ndarray: + """Steuernummer. + + Spouses filing taxes jointly or individuals. """ p_id_to_sn_id: dict[int, int] = {} p_id_to_gemeinsam_veranlagt: dict[int, bool] = {} next_sn_id = 0 result: list[int] = [] - for index, current_p_id in enumerate(p_id): - current_p_id_ehepartner = familie__p_id_ehepartner[index] - current_gemeinsam_veranlagt = einkommensteuer__gemeinsam_veranlagt[index] + for index, current_p_id in enumerate(map(int, p_id)): + current_p_id_ehepartner = int(familie__p_id_ehepartner[index]) + current_gemeinsam_veranlagt = bool(einkommensteuer__gemeinsam_veranlagt[index]) if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ @@ -274,4 +284,4 @@ def sn_id( p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt next_sn_id += 1 - return numpy.asarray(result) + return np.array(result) diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 41afb7318d..24c28738c4 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -5,7 +5,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="loop") def geburtsdatum( geburtsjahr: int, geburtsmonat: int, @@ -36,7 +36,7 @@ def geburtsdatum( return out -@policy_function() +@policy_function(vectorization_strategy="loop") def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> float: """Calculate age of youngest child in months. @@ -61,7 +61,7 @@ def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> flo return out.astype(float) -@policy_function(vectorization_strategy="vectorize") +@policy_function() def alter_bis_24(alter: int) -> bool: """Age is 24 years at most. diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 7723bb6686..fbc1bdbcf5 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -12,9 +12,7 @@ def anzahl_ansprüche( pass -@policy_function( - start_date="2023-01-01", leaf_name="betrag_m", vectorization_strategy="vectorize" -) +@policy_function(start_date="2023-01-01", leaf_name="betrag_m") def betrag_ohne_staffelung_m( anzahl_ansprüche: int, kindergeld_params: dict, @@ -39,7 +37,9 @@ def betrag_ohne_staffelung_m( return kindergeld_params["kindergeld"] * anzahl_ansprüche -@policy_function(end_date="2022-12-31", leaf_name="betrag_m") +@policy_function( + end_date="2022-12-31", leaf_name="betrag_m", vectorization_strategy="loop" +) def betrag_gestaffelt_m( anzahl_ansprüche: int, kindergeld_params: dict, @@ -77,7 +77,6 @@ def betrag_gestaffelt_m( @policy_function( end_date="2011-12-31", leaf_name="grundsätzlich_anspruchsberechtigt", - vectorization_strategy="vectorize", ) def grundsätzlich_anspruchsberechtigt_nach_lohn( alter: int, @@ -121,7 +120,6 @@ def grundsätzlich_anspruchsberechtigt_nach_lohn( @policy_function( start_date="2012-01-01", leaf_name="grundsätzlich_anspruchsberechtigt", - vectorization_strategy="vectorize", ) def grundsätzlich_anspruchsberechtigt_nach_stunden( alter: int, @@ -160,7 +158,7 @@ def grundsätzlich_anspruchsberechtigt_nach_stunden( return out -@policy_function(vectorization_strategy="vectorize") +@policy_function() def kind_bis_10_mit_kindergeld( alter: int, grundsätzlich_anspruchsberechtigt: bool, diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 02776ac6d7..d71de0bed1 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -224,7 +224,7 @@ def anzurechnendes_einkommen_eltern_m_bg( return max(out, 0.0) -@policy_function() +@policy_function(vectorization_strategy="loop") def kosten_der_unterkunft_m_bg( wohnbedarf_anteil_eltern_bg: float, arbeitslosengeld_2__bruttokaltmiete_m_bg: float, @@ -256,7 +256,7 @@ def kosten_der_unterkunft_m_bg( return out -@policy_function() +@policy_function(vectorization_strategy="loop") def wohnbedarf_anteil_eltern_bg( arbeitslosengeld_2__anzahl_kinder_bg: int, arbeitslosengeld_2__anzahl_erwachsene_bg: int, diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index c27dce841c..01e1859725 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -7,7 +7,7 @@ from ttsim import policy_function -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_m( einkommen_y: float, eink_st_params: dict, @@ -32,7 +32,7 @@ def betrag_m( return lohnsteuerformel(einkommen_y, eink_st_params, lohnst_params, steuerklasse) -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_mit_kinderfreibetrag_m( einkommen_y: float, kinderfreibetrag_soli_y: float, @@ -65,7 +65,7 @@ def betrag_mit_kinderfreibetrag_m( return lohnsteuerformel(eink, eink_st_params, lohnst_params, steuerklasse) -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_soli_y(betrag_mit_kinderfreibetrag_y: float, soli_st_params: dict) -> float: """Solidarity surcharge on Lohnsteuer (withholding tax on earnings). @@ -85,7 +85,7 @@ def betrag_soli_y(betrag_mit_kinderfreibetrag_y: float, soli_st_params: dict) -> return solidaritätszuschlagstarif(betrag_mit_kinderfreibetrag_y, soli_st_params) -@policy_function() +@policy_function(vectorization_strategy="loop") def kinderfreibetrag_soli_y( steuerklasse: int, einkommensteuer__anzahl_kinderfreibeträge: int, diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index 9c8e4115af..f9e56ae62a 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -3,7 +3,9 @@ from ttsim import piecewise_polynomial, policy_function -@policy_function(end_date="2008-12-31", leaf_name="betrag_y_sn") +@policy_function( + end_date="2008-12-31", leaf_name="betrag_y_sn", vectorization_strategy="loop" +) def betrag_y_sn_ohne_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, @@ -46,7 +48,9 @@ def betrag_y_sn_ohne_abgelt_st( return out -@policy_function(start_date="2009-01-01", leaf_name="betrag_y_sn") +@policy_function( + start_date="2009-01-01", leaf_name="betrag_y_sn", vectorization_strategy="loop" +) def betrag_y_sn_mit_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index e8ee020cc7..b2731be981 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -5,7 +5,7 @@ from ttsim.config import numpy_or_jax as np -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_m( einkommensteuer__anzahl_kinderfreibeträge: int, grundsätzlich_anspruchsberechtigt: bool, @@ -44,7 +44,7 @@ def betrag_m( return out -@policy_function() +@policy_function(vectorization_strategy="loop") def monate_verbleibender_anspruchsdauer( alter: int, monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, @@ -159,7 +159,7 @@ def grundsätzlich_anspruchsberechtigt( return out -@policy_function() +@policy_function(vectorization_strategy="loop") def einkommen_vorjahr_proxy_m( sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index b5dd8a355b..e88b7caf43 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -217,7 +217,7 @@ def betrag_versicherter_regulär_beschäftigt_m( return beitragssatz_arbeitnehmer * einkommen_m -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_selbstständig_m( bemessungsgrundlage_selbstständig_m: float, ges_krankenv_params: dict, @@ -237,6 +237,7 @@ def betrag_selbstständig_m( """ params = ges_krankenv_params["beitr_satz"] + # The below must be done via dates_active in order to enable vectorization. ermäßigter_beitrag = ( params["ermäßigt"] if ("ermäßigt" in params) else params["mean_allgemein"] ) diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 10de0f78f2..45581d2220 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -54,10 +54,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( allg_sozialv_beitr = ( ges_rentenv_params["beitr_satz_jahresanfang"] + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] + + ges_pflegev_params["beitr_satz_jahresanfang"] ) - allg_sozialv_beitr += ges_pflegev_params["beitr_satz_jahresanfang"] - # Then calculate specific shares an_anteil = ( allg_sozialv_beitr @@ -106,11 +105,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( allg_sozialv_beitr = ( ges_rentenv_params["beitr_satz_jahresanfang"] + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] + + ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] ) - allg_sozialv_beitr += ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] - - # Then calculate specific shares an_anteil = ( allg_sozialv_beitr + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang @@ -137,6 +134,7 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( start_date="2022-10-01", leaf_name="midijob_faktor_f", rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), + vectorization_strategy="loop", ) def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index ba25dbf127..3ee3a8146a 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -3,7 +3,11 @@ from ttsim import policy_function -@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +@policy_function( + end_date="2003-03-31", + leaf_name="betrag_versicherter_m", + vectorization_strategy="loop", +) def betrag_versicherter_m_ohne_midijob( betrag_versicherter_regulär_beschäftigt_m: float, sozialversicherung__geringfügig_beschäftigt: bool, @@ -43,7 +47,11 @@ def betrag_versicherter_m_ohne_midijob( return out + betrag_rentner_m -@policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") +@policy_function( + start_date="2003-04-01", + leaf_name="betrag_versicherter_m", + vectorization_strategy="loop", +) def betrag_versicherter_m_mit_midijob( betrag_versicherter_regulär_beschäftigt_m: float, sozialversicherung__geringfügig_beschäftigt: bool, @@ -91,7 +99,7 @@ def betrag_versicherter_m_mit_midijob( return out + betrag_rentner_m -@policy_function() +@policy_function(vectorization_strategy="loop") def betrag_versicherter_regulär_beschäftigt_m( sozialversicherung__kranken__beitrag__einkommen_m: float, beitragssatz: float, @@ -114,7 +122,11 @@ def betrag_versicherter_regulär_beschäftigt_m( return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz -@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +@policy_function( + end_date="2003-03-31", + leaf_name="betrag_arbeitgeber_m", + vectorization_strategy="loop", +) def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__kranken__beitrag__einkommen_m: float, @@ -158,7 +170,11 @@ def betrag_arbeitgeber_m_ohne_midijob( return out -@policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") +@policy_function( + start_date="2003-04-01", + leaf_name="betrag_arbeitgeber_m", + vectorization_strategy="loop", +) def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_arbeitgeber_midijob_m: float, @@ -214,6 +230,7 @@ def betrag_arbeitgeber_m_mit_midijob( start_date="1995-01-01", end_date="2004-12-31", leaf_name="betrag_selbstständig_m", + vectorization_strategy="loop", ) def betrag_selbstständig_m_ohne_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, @@ -243,7 +260,11 @@ def betrag_selbstständig_m_ohne_zusatz_für_kinderlose( ) -@policy_function(start_date="2005-01-01", leaf_name="betrag_selbstständig_m") +@policy_function( + start_date="2005-01-01", + leaf_name="betrag_selbstständig_m", + vectorization_strategy="loop", +) def betrag_selbstständig_m_mit_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, beitragssatz: float, @@ -280,6 +301,7 @@ def betrag_selbstständig_m_mit_zusatz_für_kinderlose( start_date="1995-01-01", end_date="2004-03-31", leaf_name="betrag_rentner_m", + vectorization_strategy="loop", ) def betrag_rentner_m_reduzierter_beitrag( sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, @@ -311,6 +333,7 @@ def betrag_rentner_m_reduzierter_beitrag( start_date="2004-04-01", end_date="2004-12-31", leaf_name="betrag_rentner_m", + vectorization_strategy="loop", ) def betrag_rentner_m_ohne_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, @@ -337,7 +360,9 @@ def betrag_rentner_m_ohne_zusatz_für_kinderlose( ) -@policy_function(start_date="2005-01-01", leaf_name="betrag_rentner_m") +@policy_function( + start_date="2005-01-01", leaf_name="betrag_rentner_m", vectorization_strategy="loop" +) def betrag_rentner_m_mit_zusatz_für_kinderlose( sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, beitragssatz: float, @@ -371,6 +396,7 @@ def betrag_rentner_m_mit_zusatz_für_kinderlose( start_date="2003-04-01", end_date="2004-12-31", leaf_name="betrag_gesamt_m", + vectorization_strategy="loop", ) def betrag_gesamt_m_bis_2004( sozialversicherung__midijob_bemessungsentgelt_m: float, @@ -403,6 +429,7 @@ def betrag_gesamt_m_bis_2004( @policy_function( start_date="2005-01-01", leaf_name="betrag_gesamt_m", + vectorization_strategy="loop", ) def betrag_gesamt_m_ab_2005( sozialversicherung__midijob_bemessungsentgelt_m: float, @@ -434,6 +461,7 @@ def betrag_gesamt_m_ab_2005( @policy_function( end_date="2004-12-31", leaf_name="betrag_arbeitgeber_midijob_m", + vectorization_strategy="loop", ) def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, @@ -468,6 +496,7 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( start_date="2005-01-01", end_date="2022-09-30", leaf_name="betrag_arbeitgeber_midijob_m", + vectorization_strategy="loop", ) def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_ab_2005( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, @@ -523,6 +552,7 @@ def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitra @policy_function( end_date="2022-09-30", leaf_name="betrag_versicherter_midijob_m", + vectorization_strategy="loop", ) def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( betrag_arbeitgeber_midijob_m: float, @@ -552,6 +582,7 @@ def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitra start_date="2022-10-01", end_date="2023-06-30", leaf_name="betrag_versicherter_midijob_m", + vectorization_strategy="loop", ) def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( zusatzbetrag_kinderlos: bool, @@ -594,7 +625,11 @@ def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( return an_beitr_midijob_m -@policy_function(start_date="2023-07-01", leaf_name="betrag_versicherter_midijob_m") +@policy_function( + start_date="2023-07-01", + leaf_name="betrag_versicherter_midijob_m", + vectorization_strategy="loop", +) def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehreren_kindern( anzahl_kinder_bis_24: int, zusatzbetrag_kinderlos: bool, diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 0b98c92ed3..21c6b86b04 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -25,6 +25,7 @@ def anzahl_kinder_bis_24_elternteil_2( start_date="1995-01-01", end_date="2004-12-31", leaf_name="beitragssatz", + vectorization_strategy="loop", ) def beitragssatz_ohne_zusatz_für_kinderlose( ges_pflegev_params: dict, @@ -50,6 +51,7 @@ def beitragssatz_ohne_zusatz_für_kinderlose( start_date="2005-01-01", end_date="2023-06-30", leaf_name="beitragssatz", + vectorization_strategy="loop", ) def beitragssatz_zusatz_kinderlos_dummy( zusatzbetrag_kinderlos: bool, @@ -79,7 +81,9 @@ def beitragssatz_zusatz_kinderlos_dummy( return out -@policy_function(start_date="2023-07-01", leaf_name="beitragssatz") +@policy_function( + start_date="2023-07-01", leaf_name="beitragssatz", vectorization_strategy="loop" +) def beitragssatz_mit_kinder_abschlag( anzahl_kinder_bis_24: int, zusatzbetrag_kinderlos: bool, @@ -118,7 +122,7 @@ def beitragssatz_mit_kinder_abschlag( return out -@policy_function(start_date="2005-01-01") +@policy_function(start_date="2005-01-01", vectorization_strategy="loop") def zusatzbetrag_kinderlos( hat_kinder: bool, alter: int, diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index aa8f9782d3..4dafd1023d 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -3,7 +3,11 @@ from ttsim import policy_function -@policy_function(end_date="2011-12-31", leaf_name="altersgrenze_abschlagsfrei") +@policy_function( + end_date="2011-12-31", + leaf_name="altersgrenze_abschlagsfrei", + vectorization_strategy="loop", +) def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, @@ -67,6 +71,7 @@ def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( start_date="2012-01-01", end_date="2017-12-31", leaf_name="altersgrenze_abschlagsfrei", + vectorization_strategy="loop", ) def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -145,7 +150,11 @@ def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( return out -@policy_function(start_date="2018-01-01", leaf_name="altersgrenze_abschlagsfrei") +@policy_function( + start_date="2018-01-01", + leaf_name="altersgrenze_abschlagsfrei", + vectorization_strategy="loop", +) def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, @@ -195,7 +204,11 @@ def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( return out -@policy_function(end_date="2017-12-31", leaf_name="altersgrenze_vorzeitig") +@policy_function( + end_date="2017-12-31", + leaf_name="altersgrenze_vorzeitig", + vectorization_strategy="loop", +) def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index 22a97242d4..993a817318 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -40,7 +40,9 @@ def altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_besond_langj_versicherte"] -@policy_function(start_date="2014-06-23", leaf_name="altersgrenze") +@policy_function( + start_date="2014-06-23", leaf_name="altersgrenze", vectorization_strategy="loop" +) def altersgrenze_mit_staffelung( geburtsjahr: int, ges_rente_params: dict, diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index 133d4b1048..760de30202 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -35,7 +35,9 @@ def altersgrenze_ohne_staffelung( return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] -@policy_function(start_date="1989-12-18", leaf_name="altersgrenze") +@policy_function( + start_date="1989-12-18", leaf_name="altersgrenze", vectorization_strategy="loop" +) def altersgrenze_mit_staffelung( geburtsjahr: int, geburtsmonat: int, @@ -121,6 +123,7 @@ def altersgrenze_vorzeitig_ohne_staffelung( start_date="1989-12-18", end_date="1996-09-26", leaf_name="altersgrenze_vorzeitig", + vectorization_strategy="loop", ) def altersgrenze_vorzeitig_mit_staffelung( geburtsjahr: int, diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index b46aa77c75..b6ecdce4c9 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -42,6 +42,7 @@ def altersgrenze_ohne_staffelung( start_date="1989-12-18", end_date="2007-04-19", leaf_name="altersgrenze", + vectorization_strategy="loop", ) def altersgrenze_mit_staffelung_nach_geburtsmonat( geburtsjahr: int, @@ -99,7 +100,9 @@ def altersgrenze_mit_staffelung_nach_geburtsmonat( return out -@policy_function(start_date="2007-04-20", leaf_name="altersgrenze") +@policy_function( + start_date="2007-04-20", leaf_name="altersgrenze", vectorization_strategy="loop" +) def altersgrenze_mit_staffelung_nach_geburtsjahr( geburtsjahr: int, geburtsmonat: int, @@ -190,6 +193,7 @@ def altersgrenze_vorzeitig_ohne_staffelung( start_date="1989-12-18", end_date="1996-09-26", leaf_name="altersgrenze_vorzeitig", + vectorization_strategy="loop", ) def altersgrenze_vorzeitig_mit_staffelung( geburtsjahr: int, diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index 17c11490be..f07b774514 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -39,7 +39,9 @@ def altersgrenze_ohne_staffelung( return ges_rente_params["regelaltersgrenze"] -@policy_function(start_date="2007-04-20", leaf_name="altersgrenze") +@policy_function( + start_date="2007-04-20", leaf_name="altersgrenze", vectorization_strategy="loop" +) def altersgrenze_mit_staffelung(geburtsjahr: int, ges_rente_params: dict) -> float: """Normal retirement age (NRA). diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index d5c1c6e55d..a914f8fcd2 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -39,6 +39,7 @@ def altersgrenze_ohne_staffelung( start_date="1989-12-18", end_date="1996-07-28", leaf_name="altersgrenze", + vectorization_strategy="loop", ) def altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( altersgrenze_ohne_vertrauensschutzprüfung: float, @@ -64,6 +65,7 @@ def altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( start_date="1996-07-29", end_date="2009-12-31", leaf_name="altersgrenze", + vectorization_strategy="loop", ) def altersgrenze_mit_vertrauensschutzprüfung( geburtsjahr: int, @@ -122,6 +124,7 @@ def altersgrenze_mit_vertrauensschutzprüfung( start_date="2010-01-01", end_date="2017-12-31", leaf_name="altersgrenze", + vectorization_strategy="loop", ) def altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( altersgrenze_ohne_vertrauensschutzprüfung: float, @@ -316,7 +319,7 @@ def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2004_07( return arbeitsl_vorzeitig -@policy_function(end_date="2017-12-31") +@policy_function(end_date="2017-12-31", vectorization_strategy="loop") def altersgrenze_ohne_vertrauensschutzprüfung( geburtsjahr: int, geburtsmonat: int, @@ -369,7 +372,7 @@ def altersgrenze_ohne_vertrauensschutzprüfung( return out -@policy_function(end_date="2017-12-31") +@policy_function(end_date="2017-12-31", vectorization_strategy="loop") def altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung( geburtsjahr: int, geburtsmonat: int, diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 731a24ca33..c6ef453def 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -90,6 +90,7 @@ def einkommen_m( base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), start_date="2021-01-01", + vectorization_strategy="loop", ) def anzurechnendes_einkommen_m( einkommen_m_ehe: float, @@ -283,6 +284,7 @@ def höchstbetrag_m( reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", + vectorization_strategy="loop", ) def mean_entgeltpunkte_zuschlag( durchschnittliche_entgeltpunkte: float, diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py index 29a0d71df2..537e202f53 100644 --- a/src/_gettsim/synthetic.py +++ b/src/_gettsim/synthetic.py @@ -6,10 +6,7 @@ import numpy import pandas as pd -from _gettsim.config import ( - RESOURCE_DIR, - SUPPORTED_GROUPINGS, -) +from _gettsim.config import RESOURCE_DIR from ttsim.policy_environment import _load_parameter_group_from_yaml current_year = datetime.datetime.today().year @@ -174,7 +171,7 @@ def create_basic_households( exogenous_groupings = [ key - for key, value in SUPPORTED_GROUPINGS.items() + for key, value in environment.grouping_levels.items() if not value.get("potentially_endogenous", True) ] group_ids = [f"{g}_id" for g in exogenous_groupings] diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index e048632718..9f508e4893 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -161,6 +161,7 @@ def kindergeld_erstes_kind_gestaffelt_m( start_date="2009-01-01", end_date="2014-12-31", leaf_name="anspruchshöhe_m", + vectorization_strategy="loop", ) def unterhaltsvorschuss_anspruch_m_2009_bis_2014( alter: int, @@ -219,6 +220,7 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( start_date="2015-01-01", end_date="2015-12-31", leaf_name="anspruchshöhe_m", + vectorization_strategy="loop", ) def anspruchshöhe_m_anwendungsvors( alter: int, @@ -259,6 +261,7 @@ def anspruchshöhe_m_anwendungsvors( start_date="2016-01-01", end_date="2017-06-30", leaf_name="anspruchshöhe_m", + vectorization_strategy="loop", ) def anspruchshöhe_m_2016_bis_2017_06( alter: int, @@ -298,8 +301,10 @@ def anspruchshöhe_m_2016_bis_2017_06( return out -@policy_function(start_date="2017-07-01", leaf_name="anspruchshöhe_m") -def anspruchshöhe_m_ab_201707( +@policy_function( + start_date="2017-07-01", leaf_name="anspruchshöhe_m", vectorization_strategy="loop" +) +def anspruchshöhe_m_ab_2017_07( alter: int, elternteil_mindesteinkommen_erreicht: bool, kindergeld_erstes_kind_m: float, diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 5d3f97f305..5c641d77f6 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -18,7 +18,7 @@ def alleinerziehendenbonus( pass -@policy_function() +@policy_function(vectorization_strategy="loop") def einkommen_m_wthh( anzahl_personen_wthh: int, freibetrag_m_wthh: float, @@ -55,7 +55,7 @@ def einkommen_m_wthh( ) -@policy_function() +@policy_function(vectorization_strategy="loop") def einkommen_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, freibetrag_m_bg: float, @@ -92,7 +92,7 @@ def einkommen_m_bg( ) -@policy_function() +@policy_function(vectorization_strategy="loop") def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( einkommensteuer__betrag_y_sn: float, sozialversicherung__rente__beitrag__betrag_versicherter_y: float, @@ -274,7 +274,9 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( return out -@policy_function(end_date="2015-12-31", leaf_name="freibetrag_m") +@policy_function( + end_date="2015-12-31", leaf_name="freibetrag_m", vectorization_strategy="loop" +) def freibetrag_m_bis_2015( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, ist_kind_mit_erwerbseinkommen: bool, diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index 2ddd702daf..f89acc5700 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -59,7 +59,7 @@ def miete_m_bg( return miete_m_hh * (arbeitslosengeld_2__anzahl_personen_bg / anzahl_personen_hh) -@policy_function() +@policy_function(vectorization_strategy="loop") def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: """Minimum rent considered in Wohngeld calculation. @@ -79,7 +79,9 @@ def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: return out -@policy_function(end_date="2008-12-31", leaf_name="miete_m_hh") +@policy_function( + end_date="2008-12-31", leaf_name="miete_m_hh", vectorization_strategy="loop" +) def miete_m_hh_bis_2008( mietstufe: int, wohnen__baujahr_immobilie_hh: int, @@ -143,7 +145,9 @@ def miete_m_hh_bis_2008( return out -@policy_function(start_date="2009-01-01", leaf_name="miete_m_hh") +@policy_function( + start_date="2009-01-01", leaf_name="miete_m_hh", vectorization_strategy="loop" +) def miete_m_hh_ab_2009( # noqa: PLR0912 (see #516) mietstufe: int, anzahl_personen_hh: int, diff --git a/src/_gettsim/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py index 3730f134b2..0da17b81b8 100644 --- a/src/_gettsim/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -51,7 +51,7 @@ def grundsätzlich_anspruchsberechtigt_bg( return mindesteinkommen_erreicht_bg and vermögensgrenze_unterschritten_bg -@policy_function() +@policy_function(vectorization_strategy="loop") def vermögensgrenze_unterschritten_wthh( vermögen_wthh: float, anzahl_personen_wthh: int, @@ -80,7 +80,7 @@ def vermögensgrenze_unterschritten_wthh( ) -@policy_function() +@policy_function(vectorization_strategy="loop") def vermögensgrenze_unterschritten_bg( vermögen_bg: float, arbeitslosengeld_2__anzahl_personen_bg: int, diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index d6793adc64..b569947a73 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -75,7 +75,8 @@ def betrag_m_wthh( base=1, direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", - ) + ), + vectorization_strategy="loop", ) def anspruchshöhe_m_wthh( anzahl_personen_wthh: int, @@ -125,7 +126,8 @@ def anspruchshöhe_m_wthh( base=1, direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", - ) + ), + vectorization_strategy="loop", ) def anspruchshöhe_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml index d7275241ee..a4812bd1c8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml @@ -46,8 +46,6 @@ inputs: - 1960 hh_id: - 8 - jahr: - - '2005' kindergeld__betrag_m_bg: - 0.0 kindergeld__in_ausbildung: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index c0ee83d332..f26d94d909 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -37,9 +37,6 @@ inputs: hh_id: - 0 - 0 - jahr: - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index db2b5b16ac..c53d53d743 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -34,9 +34,6 @@ inputs: hh_id: - 0 - 0 - jahr: - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index f52fbdf453..0751f48251 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -43,10 +43,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2005 - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index b1e16ea300..05057f7df5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -43,10 +43,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2005 - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index 55a04abdf7..53b57c0532 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -55,12 +55,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2005 - - 2005 - - 2005 - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml index 15ed039f2a..6a9f60d371 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml @@ -23,8 +23,6 @@ inputs: - -1 hh_id: - 0 - jahr: - - 2018 kindergeld__p_id_empfänger: - -1 p_id: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml index f5a1f023e0..e1d9d8b032 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml @@ -126,12 +126,6 @@ inputs: - 4 - 4 - 4 - jahr: - - '2006' - - '2006' - - '2006' - - '2006' - - '2006' kindergeld__betrag_m_bg: - 462.0 - 462.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml index 547b60c023..ea99549e96 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - '2009' - - '2009' kindergeld__betrag_m: - 164.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index 8b39e123ab..e73c5ae048 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - '2009' - - '2009' kindergeld__betrag_m: - 164.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml index 8ea56ab7b2..909a237cf9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 12 - 12 - jahr: - - '2013' - - '2013' kindergeld__betrag_m_bg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml index fe28214bb0..87d00d49ed 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 13 - 13 - jahr: - - '2013' - - '2013' kindergeld__betrag_m_bg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index 5f8ba4448e..69984826a6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 14 - 14 - jahr: - - '2013' - - '2013' kindergeld__betrag_m: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index 9165087f2e..d5a5884402 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 15 - 15 - jahr: - - '2013' - - '2013' kindergeld__betrag_m_bg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml index e3cc07f9a0..29b12b4f6a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - '2013' - - '2013' kindergeld__betrag_m_bg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml index bb77228519..32afb6f36c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml @@ -126,12 +126,6 @@ inputs: - 9 - 9 - 9 - jahr: - - '2018' - - '2018' - - '2018' - - '2018' - - '2018' kindergeld__betrag_m: - 388.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml index ebc401c7ec..9ed7412be3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml @@ -86,10 +86,6 @@ inputs: - 6 - 6 - 6 - jahr: - - '2019' - - '2019' - - '2019' kindergeld__betrag_m_bg: - 388.0 - 388.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml index 844efa2b06..2dc1387907 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml @@ -86,10 +86,6 @@ inputs: - 7 - 7 - 7 - jahr: - - '2019' - - '2019' - - '2019' kindergeld__betrag_m_bg: - 388.0 - 388.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml index 89853e4d9b..419763c093 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml @@ -86,10 +86,6 @@ inputs: - 7 - 7 - 7 - jahr: - - '2019' - - '2019' - - '2019' kindergeld__betrag_m_bg: - 388.0 - 388.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index 55208a5fbe..ca116d5c9a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -88,10 +88,6 @@ inputs: - 10 - 10 - 10 - jahr: - - '2022' - - '2022' - - '2022' kindergeld__betrag_m: - 388.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index d7d645440e..446949f5f7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -88,10 +88,6 @@ inputs: - 11 - 11 - 11 - jahr: - - '2022' - - '2022' - - '2022' kindergeld__betrag_m_bg: - 388.0 - 388.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml index 92c4534c15..c3a8e8b5a6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml @@ -46,8 +46,6 @@ inputs: - 1978 hh_id: - 16 - jahr: - - 2023-01 kindergeld__betrag_m_bg: - 0.0 kindergeld__in_ausbildung: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index e8dd6937c1..d416963a93 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -88,10 +88,6 @@ inputs: - 19 - 19 - 19 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 kindergeld__anzahl_ansprüche: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index 0eeae6ed00..088df20c30 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -88,10 +88,6 @@ inputs: - 19 - 19 - 19 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 kindergeld__anzahl_ansprüche: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index a7871f33e1..8865892d59 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -108,11 +108,6 @@ inputs: - 18 - 18 - 18 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 - - 2023-01 kindergeld__betrag_m_bg: - 500.0 - 500.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index 3f90e28b2b..3b18930660 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -88,10 +88,6 @@ inputs: - 17 - 17 - 17 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 kindergeld__betrag_m_bg: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index 6b36e8fdd6..d7a655ea4f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -88,10 +88,6 @@ inputs: - 18 - 18 - 18 - jahr: - - 2023-01 - - 2023-01 - - 2023-01 kindergeld__betrag_m_bg: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml index 8156dd8e05..605ca77bdc 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml @@ -46,8 +46,6 @@ inputs: - 1978 hh_id: - 20 - jahr: - - 2023-07 kindergeld__betrag_m_bg: - 0.0 kindergeld__in_ausbildung: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index a8eda3aee5..93f391c6eb 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -88,10 +88,6 @@ inputs: - 21 - 21 - 21 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 kindergeld__betrag_m_bg: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index 15a5d85308..2d1cd6b991 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -88,10 +88,6 @@ inputs: - 22 - 22 - 22 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 kindergeld__betrag_m_bg: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 6633520f1f..72e7f5bed5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -88,10 +88,6 @@ inputs: - 23 - 23 - 23 - jahr: - - 2023-07 - - 2023-07 - - 2023-07 kindergeld__anzahl_ansprüche: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml index 96ffc650bb..a81c83b3c8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml @@ -46,8 +46,6 @@ inputs: - 1978 hh_id: - 25 - jahr: - - 2023-07 kindergeld__betrag_m_bg: - 0.0 kindergeld__in_ausbildung: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml rename to "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" index 3a51e09de2..599355e06f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergelduebertrag.yaml +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" @@ -88,10 +88,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2024 - - 2024 - - 2024 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml rename to "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" index 75853e972e..bddee15773 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergelduebertrag.yaml +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" @@ -89,10 +89,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2024 - - 2024 - - 2024 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml rename to "src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" index f49ee0418c..a56296d368 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergelduebertrag.yaml +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" @@ -89,10 +89,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2024 - - 2024 - - 2024 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml index 8ddccde96b..0144dec8da 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml @@ -95,16 +95,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 p_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml index dc51cc5214..117e493a4a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml @@ -50,11 +50,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 p_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 70483591b6..996c159591 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -40,9 +40,6 @@ inputs: hh_id: - 0 - 0 - jahr: - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 859eafe013..d70f67ad56 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -37,9 +37,6 @@ inputs: hh_id: - 0 - 0 - jahr: - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 00768fbbf7..a39ffccd6e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -47,10 +47,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2005 - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index c1c9f74265..a484c036c6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -47,10 +47,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2005 - - 2005 - - 2005 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index af55587194..fe735853b8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -61,12 +61,6 @@ inputs: - 0 - 0 - 0 - jahr: - - 2024 - - 2024 - - 2024 - - 2024 - - 2024 kindergeld__p_id_empfänger: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml index 0c2b9cafe3..b5767919d8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml @@ -23,8 +23,6 @@ inputs: - -1 hh_id: - 0 - jahr: - - 2005 kindergeld__p_id_empfänger: - -1 p_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" index 9a54724938..fde1cdf0c4 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 11 - jahr: - - 2004 p_id: - 1 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" index d871445e0b..8c298496f2 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" @@ -24,9 +24,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - 2005 - - 2005 p_id: - 2 - 3 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" index 7b16e102ca..74e391fb2c 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 5 - jahr: - - 2005 p_id: - 4 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" index 891c89abe8..dc30bd01b5 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 8 - jahr: - - 2005 p_id: - 5 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" index 75e967f516..9f11def31e 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 9 - jahr: - - 2005 p_id: - 6 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" index 0850898de6..d773a171a4 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 16 - jahr: - - 2010 p_id: - 17 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" index f69af782f1..6dc45b5b26 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 3 - jahr: - - 2010 p_id: - 7 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" index 4580372179..b9acb09a65 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" @@ -24,9 +24,6 @@ inputs: hh_id: - 6 - 6 - jahr: - - 2010 - - 2010 p_id: - 8 - 9 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" index ea3eb3aa66..4002a73e0f 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 15 - jahr: - - 2018 p_id: - 16 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" index 4790baf28e..9956bb83f2 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 13 - jahr: - - 2020 p_id: - 14 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" index b773eb48a0..51d1dcee27 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 12 - jahr: - - 2021 p_id: - 13 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" index 9ac11d0894..e50a0de0a4 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" @@ -24,9 +24,6 @@ inputs: hh_id: - 17 - 17 - jahr: - - 2022 - - 2022 p_id: - 18 - 19 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" index ae952edf24..0d4b638f70 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" @@ -24,9 +24,6 @@ inputs: hh_id: - 18 - 18 - jahr: - - 2022 - - 2022 p_id: - 20 - 21 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" index 24c009869a..ca8785beef 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 4 - jahr: - - 2023 p_id: - 11 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" index 010b2766d6..bd2187a2b2 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" @@ -18,8 +18,6 @@ inputs: - -1 hh_id: - 7 - jahr: - - 2023 p_id: - 12 sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" index 0ff0400cbf..1efba97e08 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" @@ -56,11 +56,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2010 - - 2010 - - 2010 - - 2010 p_id: - 5 - 6 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" index 21554a0d0d..9199016ea0 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" @@ -26,8 +26,6 @@ inputs: - -1 hh_id: - 2 - jahr: - - 2012 p_id: - 4 outputs: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" index a592fdec3a..d9783dae6d 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -46,10 +46,6 @@ inputs: - 1 - 1 - 1 - jahr: - - 2016 - - 2016 - - 2016 p_id: - 1 - 2 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" index f8c944b322..52cf9746ac 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -46,10 +46,6 @@ inputs: - 5 - 5 - 5 - jahr: - - 2019 - - 2019 - - 2019 p_id: - 9 - 10 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 7b77d238f9..68c51283cd 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -52,8 +52,6 @@ inputs: - 1970 hh_id: - 1 - jahr: - - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 8aa4592080..299b4e6859 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -52,8 +52,6 @@ inputs: - 1970 hh_id: - 2 - jahr: - - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index bb18897328..c37b82a60a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -52,8 +52,6 @@ inputs: - 1970 hh_id: - 3 - jahr: - - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index ea63e06ab8..91a0deb14b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -52,8 +52,6 @@ inputs: - 1970 hh_id: - 4 - jahr: - - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 352a119bed..9628777668 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -52,8 +52,6 @@ inputs: - 1970 hh_id: - 5 - jahr: - - 2010 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index 1ad1920af4..d5e6d6786b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -52,8 +52,6 @@ inputs: - 1975 hh_id: - 16 - jahr: - - 2015 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index 7add6f0625..a1577eb7e4 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -75,9 +75,6 @@ inputs: hh_id: - 17 - 17 - jahr: - - 2015 - - 2015 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index 26fdaf8644..3a0ab3069b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -75,9 +75,6 @@ inputs: hh_id: - 18 - 18 - jahr: - - 2017 - - 2017 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index a15e2ccc52..f01c476902 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 10 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index 5985cda8e9..037b76109b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 11 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index 25cf305c77..3fa9aee207 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 12 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index bbfe06096b..1dcb65ea02 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 7 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index 369451cc9f..f9300005a4 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 8 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index e43727a579..1306f8c033 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -52,8 +52,6 @@ inputs: - 1978 hh_id: - 9 - jahr: - - 2018 kindergeld__in_ausbildung: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 20c17d3f9e..1bda733316 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -75,9 +75,6 @@ inputs: hh_id: - 13 - 13 - jahr: - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 120556d635..6ec63c297a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -121,11 +121,6 @@ inputs: - 14 - 14 - 14 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index b991de8cdd..7aa37f9601 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -121,11 +121,6 @@ inputs: - 19 - 19 - 19 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 9cfca1caa6..783e9da0f9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -121,11 +121,6 @@ inputs: - 20 - 20 - 20 - jahr: - - 2020 - - 2020 - - 2020 - - 2020 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index 53c9ac42cd..e0f9e0997f 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -44,8 +44,6 @@ inputs: - 3 hh_id: - 2 - jahr: - - 2017 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 9d782b6ccd..4436f4910a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -42,8 +42,6 @@ inputs: - 1 hh_id: - 1 - jahr: - - 2018 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index ae8a23df0c..e18291ddd4 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - 2018 - - 2018 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 90669b0e60..2b0f4d65dd 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - 2018 - - 2018 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index bef10891e3..670db5dfb0 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 4 - 4 - jahr: - - 2018 - - 2018 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 70822e52c9..67663d0403 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -42,8 +42,6 @@ inputs: - 11 hh_id: - 6 - jahr: - - 2018 kindergeld__in_ausbildung: - false lohnsteuer__steuerklasse: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index 4e55964b41..f136a401d5 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 1 - 1 - jahr: - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index 2eb33f7d50..0b945ca764 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -78,10 +78,6 @@ inputs: - 3 - 3 - 3 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index 401c2421ff..309b7a1863 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 5 - 5 - jahr: - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 1473f3eed5..527e836f37 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -78,10 +78,6 @@ inputs: - 6 - 6 - 6 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index c06a06e8ce..6387b828d0 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -78,10 +78,6 @@ inputs: - 7 - 7 - 7 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index 47d40beef8..267e1b8985 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -96,11 +96,6 @@ inputs: - 8 - 8 - 8 - jahr: - - 2019 - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index 83459d112f..a43674d3f7 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -78,10 +78,6 @@ inputs: - 3 - 3 - 3 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index 401c2421ff..309b7a1863 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 5 - 5 - jahr: - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index 4e55964b41..f136a401d5 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -60,9 +60,6 @@ inputs: hh_id: - 1 - 1 - jahr: - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index a5d4e3efab..ae29c154d7 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -78,10 +78,6 @@ inputs: - 3 - 3 - 3 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 082c199320..3fa5cd7745 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -78,10 +78,6 @@ inputs: - 3 - 3 - 3 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__in_ausbildung: - false - false diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_ueber_24.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_grosselternteil.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_einstandspartner.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_einstandspartner.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_einstandspartner.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_veranlagung.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspruechliche_veranlagung.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_eltern_kinder_widerspr\303\274chliche_veranlagung.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_gro\303\237mutter.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_grossmutter.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_ii_gro\303\237mutter.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_gro\303\237mutter.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_grossmutter.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_enkelkind_und_sgb_xii_gro\303\237mutter.yaml" diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml "b/src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspr\303\274chliche_veranlagungs_info.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspruechliche_veranlagungs_info.yaml rename to "src/_gettsim_tests/test_data/groupings/2023-01-01/skip_partner_widerspr\303\274chliche_veranlagungs_info.yaml" diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index b9af17cee9..b085c33f8d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -70,9 +70,6 @@ inputs: hh_id: - 13 - 13 - jahr: - - 2017 - - 2017 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index fde0f79b12..9fac768da5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 16 - jahr: - - 2017 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 6760938729..ad130907f7 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 17 - jahr: - - 2017 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index e0bbc39705..ef3d060d0f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 6 - 6 - jahr: - - 2017 - - 2017 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index c1855ed940..566cda0945 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -48,8 +48,6 @@ inputs: - 1 hh_id: - 12 - jahr: - - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index 1753966d56..d4ecdc50a4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 20 - jahr: - - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index e1646d8c1d..d8a18a837c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 22 - jahr: - - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 38cadb556d..2fb358eed4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 3 - jahr: - - 2018 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index 20b73f74ed..d3d36d74a6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 18 - jahr: - - 2020 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index f10d3f76ee..37e491e81c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 19 - 19 - jahr: - - 2020 - - 2020 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 70ed41e948..98dbf2b32c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 1 - 1 - jahr: - - 2021 - - 2021 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index e1bcc4c290..ba9b48820f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -48,8 +48,6 @@ inputs: - 1 hh_id: - 14 - jahr: - - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 3dcfe6acb9..654d5e00ab 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 15 - jahr: - - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 41391ea993..1d4fa1e77c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 2 - jahr: - - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 3ceb568c51..520de9e66e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 21 - 21 - jahr: - - 2021 - - 2021 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index d3eb07f30c..c827d8340d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 23 - 23 - jahr: - - 2021 - - 2021 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 28ce59a864..3a13ef1317 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 5 - jahr: - - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index a61673b2e6..c1ba9a54fe 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 7 - jahr: - - 2021 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index fa382165e6..9610c3ff55 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 9 - 9 - jahr: - - 2021 - - 2021 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 4a5c1aaf74..69c5bb4f44 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -48,8 +48,6 @@ inputs: - 1 hh_id: - 10 - jahr: - - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index 16613845f4..64fd7d88f6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -48,8 +48,6 @@ inputs: - 1 hh_id: - 11 - jahr: - - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index 77a9a44fd7..3bee8284c3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 24 - 24 - jahr: - - 2022 - - 2022 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 3153612061..5921dee35b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -68,9 +68,6 @@ inputs: hh_id: - 25 - 25 - jahr: - - 2022 - - 2022 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index b3b0c14bc4..088ff88e6c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -66,9 +66,6 @@ inputs: hh_id: - 4 - 4 - jahr: - - 2022 - - 2022 kindergeld__betrag_m_eg: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 1b6428a613..0519b49746 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -46,8 +46,6 @@ inputs: - 1 hh_id: - 8 - jahr: - - 2022 kindergeld__betrag_m_eg: - 0.0 kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml index c32ff58ed7..8af0fb5b30 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml @@ -48,9 +48,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - 2013 - - 2013 kindergeld__betrag_m_hh: - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml index 882e90c028..e462edee7d 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml @@ -62,10 +62,6 @@ inputs: - 1 - 1 - 1 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__betrag_m_hh: - 190.0 - 190.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml index 64d8a96970..b45f3be1cf 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml @@ -62,10 +62,6 @@ inputs: - 11 - 11 - 11 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__betrag_m_hh: - 190.0 - 190.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml index 272b943fa3..09afb79ff9 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml @@ -64,10 +64,6 @@ inputs: - 12 - 12 - 12 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__betrag_m_hh: - 190.0 - 190.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml index 96816f3f35..b25e8ef23b 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml @@ -62,10 +62,6 @@ inputs: - 13 - 13 - 13 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__betrag_m_hh: - 190.0 - 190.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml index a4f71a221e..112b7266e8 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml @@ -62,10 +62,6 @@ inputs: - 7 - 7 - 7 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__betrag_m_hh: - 190.0 - 190.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml index f8279804a2..9f63c26e15 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml @@ -76,11 +76,6 @@ inputs: - 9 - 9 - 9 - jahr: - - 2017 - - 2017 - - 2017 - - 2017 kindergeld__betrag_m_hh: - 384.0 - 384.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml index fa4e2318ee..ebe93d0120 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml @@ -48,9 +48,6 @@ inputs: hh_id: - 6 - 6 - jahr: - - 2019 - - 2019 kindergeld__betrag_m_hh: - 194.0 - 194.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml index 551882bca9..7984ec380e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml @@ -48,9 +48,6 @@ inputs: hh_id: - 8 - 8 - jahr: - - 2020 - - 2020 kindergeld__betrag_m_hh: - 204.0 - 204.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml index 15360911f0..14b4bd5f38 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml @@ -62,10 +62,6 @@ inputs: - 10 - 10 - 10 - jahr: - - 2021 - - 2021 - - 2021 kindergeld__betrag_m_hh: - 219.0 - 219.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml index d2fadd8f7b..a404ee09b2 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml @@ -48,9 +48,6 @@ inputs: hh_id: - 14 - 14 - jahr: - - 2023 - - 2023 kindergeld__betrag_m_hh: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml index 616ff98daf..bffe16314a 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml @@ -50,9 +50,6 @@ inputs: hh_id: - 17 - 17 - jahr: - - 2023 - - 2023 kindergeld__betrag_m_hh: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index a2cbcbdb02..d4fd7bf08e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -50,9 +50,6 @@ inputs: hh_id: - 16 - 16 - jahr: - - 2023 - - 2023 kindergeld__betrag_m_hh: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index d64436f2ea..206313bca8 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -50,9 +50,6 @@ inputs: hh_id: - 15 - 15 - jahr: - - 2023 - - 2023 kindergeld__betrag_m_hh: - 250.0 - 250.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml index ca368c9a3f..293f6b50f3 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -81,12 +81,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 kindergeld__betrag_m_hh: - 462.0 - 462.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml index 86b6652b4d..1c87fbc0fb 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -45,9 +45,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - 2009 - - 2009 kindergeld__betrag_m_hh: - 164.0 - 164.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index 2b8bb19460..c3bfc61d29 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -44,9 +44,6 @@ inputs: hh_id: - 6 - 6 - jahr: - - 2010 - - 2010 p_id: - 9 - 10 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index 9613be8f2f..52919f1b60 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -31,8 +31,6 @@ inputs: - 1945 hh_id: - 7 - jahr: - - 2011 p_id: - 11 wohnort_ost: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml index 78446f2654..9782b3dce3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml @@ -45,9 +45,6 @@ inputs: hh_id: - 5 - 5 - jahr: - - 2015 - - 2015 p_id: - 7 - 8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index ac6b5f0c79..92f600d20d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -31,8 +31,6 @@ inputs: - 1989 hh_id: - 1 - jahr: - - 2019 p_id: - 1 wohnort_ost: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 6dae027db8..39a438f9b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -31,8 +31,6 @@ inputs: - 1989 hh_id: - 2 - jahr: - - 2019 p_id: - 2 wohnort_ost: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index f6be572564..8585b21db5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -44,9 +44,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - 2019 - - 2019 p_id: - 3 - 4 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index 4ec385f1d4..0dd15ef48e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -44,9 +44,6 @@ inputs: hh_id: - 4 - 4 - jahr: - - 2019 - - 2019 p_id: - 5 - 6 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index d3c90a21cb..9b008edd49 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -21,9 +21,6 @@ inputs: hh_id: - 0 - 1 - jahr: - - '1998' - - '1998' p_id: - 0 - 1 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index 14d618aea6..1c0422ada1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 0 - jahr: - - '2002' p_id: - 0 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index af12797373..869473eccd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 13 - jahr: - - '2002' p_id: - 111 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index c7e8eb7e3a..2fddb11e2e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -16,8 +16,6 @@ inputs: - true hh_id: - 13 - jahr: - - '2002' p_id: - 111 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index 2fd76f73a0..785225828f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -16,8 +16,6 @@ inputs: - true hh_id: - 13 - jahr: - - '2002' p_id: - 111 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index adb26bb910..492eaf7ee6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 13 - jahr: - - '2004-04-01' p_id: - 111 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 89d54536cd..dc5ee3af2d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 10 - jahr: - - '2010' p_id: - 54684 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index d4b44d2f98..c0fba2f87e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -8,40 +8,56 @@ inputs: provided: alter: - 20 + - 20 einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - 1500.0 + - 1500.0 einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - 0.0 + - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false + - false hh_id: - 11 - jahr: - - '2010' + - 11 p_id: - 35 + - 36 sozialversicherung__kranken__beitrag__privat_versichert: - false + - false sozialversicherung__pflege__beitrag__hat_kinder: - true + - true sozialversicherung__rente__altersrente__betrag_m: - 0.0 + - 0.0 sozialversicherung__rente__private_rente_betrag_m: - 0.0 + - 0.0 wohnort_ost: - false + - false outputs: sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - 21.0 + - 21.0 sozialversicherung__beiträge_gesamt_m: - 593.26 + - 593.26 sozialversicherung__beiträge_arbeitgeber_m: - 289.88 + - 289.88 sozialversicherung__beiträge_versicherter_m: - 303.375 + - 303.375 sozialversicherung__kranken__beitrag__betrag_versicherter_m: - 118.5 + - 118.5 sozialversicherung__pflege__beitrag__betrag_versicherter_m: - 14.625 + - 14.625 sozialversicherung__rente__beitrag__betrag_versicherter_m: - 149.25 + - 149.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index 4e8f6e015d..0306363950 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 12 - jahr: - - '2010' p_id: - 369 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 8c9fd3f32b..5a0b82446c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 7 - jahr: - - '2010' p_id: - 3483 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index 11e9cae17d..4381b6f9d2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 8 - jahr: - - '2010' p_id: - 874 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index 6c86ecf227..b5832a2f37 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 9 - jahr: - - '2010' p_id: - 6414 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index 61d6709c69..646afae639 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 1 - jahr: - - '2018' p_id: - 8 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index 7237e736bc..b28a16aee8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 2 - jahr: - - '2018' p_id: - 9 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index 1b39a47307..dfaccb5efe 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 3 - jahr: - - '2018' p_id: - 34 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 2e576d2327..c1db90b1bf 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 4 - jahr: - - '2018' p_id: - 55 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index 7e9e19d539..1bec7ff37d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 5 - jahr: - - '2018' p_id: - 5 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index b796d73e47..393f578225 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 6 - jahr: - - '2018' p_id: - 1354 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index 63fb172bda..3a2c95fafd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -16,8 +16,6 @@ inputs: - true hh_id: - 23 - jahr: - - '2019' p_id: - 3657 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 857772714f..737f3e387b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -16,8 +16,6 @@ inputs: - true hh_id: - 24 - jahr: - - '2019' p_id: - 798 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index b45230fba4..5557d2da46 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 15 - jahr: - - '2020' p_id: - 222 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index bcf7e79fa1..e6b36a2caf 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -16,8 +16,6 @@ inputs: - true hh_id: - 25 - jahr: - - '2020' p_id: - 4987 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index ea59c1eeb7..a27ea58bc6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 16 - jahr: - - '2022' p_id: - 223 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index 712976dcc3..217615c3ed 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 17 - jahr: - - '2022' p_id: - 224 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index 868aeb2930..a50f5613e8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 18 - jahr: - - 2022-10 p_id: - 225 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 812f7f60ef..8fbca605fe 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 19 - jahr: - - 2022-10 p_id: - 19 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index ab5776b4cc..d2e245559b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 20 - jahr: - - 2022-10 p_id: - 20 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index 8ad685d39e..4449e4d23b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -16,8 +16,6 @@ inputs: - false hh_id: - 21 - jahr: - - 2022-10 p_id: - 21 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index e6aba11837..1252405251 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -18,8 +18,6 @@ inputs: - false hh_id: - 22 - jahr: - - 2022-10 p_id: - 22 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index 22a684ed10..7266a54b53 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -19,8 +19,6 @@ inputs: - false hh_id: - 23 - jahr: - - 2023-07 p_id: - 23 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 3fc462e0b0..b6d87e5dad 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -19,8 +19,6 @@ inputs: - false hh_id: - 24 - jahr: - - 2023-07 p_id: - 24 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index 5a99d92d97..da0188f37f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -19,8 +19,6 @@ inputs: - false hh_id: - 25 - jahr: - - 2023-07 p_id: - 25 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index 6c47eba13d..edbf0d13b9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -19,8 +19,6 @@ inputs: - false hh_id: - 26 - jahr: - - 2023-07 p_id: - 26 sozialversicherung__kranken__beitrag__privat_versichert: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index 3d6806836e..ce17edce53 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -19,8 +19,6 @@ inputs: - false hh_id: - 27 - jahr: - - 2023-07 p_id: - 27 sozialversicherung__kranken__beitrag__privat_versichert: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml index f64756717e..87712ead19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -18,8 +18,6 @@ inputs: - 2 hh_id: - 23 - jahr: - - 1996 p_id: - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index e7a2ff2e39..60ea0265c2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 1 - jahr: - - 2010 p_id: - 1 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index 82e172c72d..d4defef056 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -18,8 +18,6 @@ inputs: - 1 hh_id: - 19 - jahr: - - 2010 p_id: - 19 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index 27e151fff2..f9dab51fc6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 2 - jahr: - - 2010 p_id: - 2 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 3869a4f4f6..65b605e5b8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 24 - jahr: - - 2010 p_id: - 24 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 9ee59d50c4..c57cbdaf09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2010 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index eb00961663..15c9f15351 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -18,8 +18,6 @@ inputs: - 1 hh_id: - 3 - jahr: - - 2010 p_id: - 3 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index 98d43c6eb2..5b84870765 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -18,8 +18,6 @@ inputs: - 12 hh_id: - 30 - jahr: - - 2010 p_id: - 30 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index 30fad92651..9344fd5872 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 4 - jahr: - - 2010 p_id: - 4 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index 630faf06cd..39b7cf5fa3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 5 - jahr: - - 2010 p_id: - 5 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index 0fd8830490..0c1a698b89 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 6 - jahr: - - 2010 p_id: - 6 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index 6ab7d43be3..e4b2a1aeac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -18,8 +18,6 @@ inputs: - 1 hh_id: - 7 - jahr: - - 2010 p_id: - 7 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 8e57adb4ad..7febb3139b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 10 - jahr: - - 2012 p_id: - 10 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index 6670949c22..6bc938352d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 11 - jahr: - - 2012 p_id: - 11 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index bf9e3f87e2..e93181bc4b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 8 - jahr: - - 2012 p_id: - 8 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index cb47be2182..79773c1589 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 9 - jahr: - - 2012 p_id: - 9 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index bcd16908d5..932aed46ad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -18,8 +18,6 @@ inputs: - 12 hh_id: - 25 - jahr: - - 2014 p_id: - 25 sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index 03cf9c0581..b3a3dd6407 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 12 - jahr: - - 2015 p_id: - 12 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index cd443c99ed..ca80396cef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 13 - jahr: - - 2015 p_id: - 13 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index 5ff3c6988b..8cd04fcdf8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 14 - jahr: - - 2015 p_id: - 14 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index 6549db47b1..98fc086182 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 15 - jahr: - - 2015 p_id: - 15 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 8fc4174128..7a15c646c1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 16 - jahr: - - 2015 p_id: - 16 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index 363d3e4b47..af43dca5ff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 17 - jahr: - - 2015 p_id: - 17 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index 88fc3becc8..bd3b997eb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index a4b6cdebc6..c57cbdaf09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index a4b6cdebc6..c57cbdaf09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index a3b8afc9e4..edc258ebee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index bd31ca2b81..125e78b8f3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 8cca767ec6..39b7b2c5ef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index 73e90f8fde..3487b57349 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -16,8 +16,6 @@ inputs: - 12 hh_id: - 18 - jahr: - - 2015 p_id: - 18 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index e509bbc8ef..e25337a68f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 20 - jahr: - - 2018 p_id: - 20 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index 4a0c739483..c42bda0945 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -18,8 +18,6 @@ inputs: - 1 hh_id: - 21 - jahr: - - 2018 p_id: - 21 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index 7c24a63e4d..773816bf26 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -18,8 +18,6 @@ inputs: - 1 hh_id: - 22 - jahr: - - 2018 p_id: - 22 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 46ed0eb096..41b9d840e6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -16,8 +16,6 @@ inputs: - 1 hh_id: - 23 - jahr: - - 2018 p_id: - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index d0d48b6cc7..fdc2718917 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -16,8 +16,6 @@ inputs: - 2 hh_id: - 23 - jahr: - - 2018 p_id: - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index d0d48b6cc7..fdc2718917 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -16,8 +16,6 @@ inputs: - 2 hh_id: - 23 - jahr: - - 2018 p_id: - 23 sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index ff3bd69a33..a3ca7d3817 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1980 geburtsmonat: - 10 - jahr: - - 2008 p_id: - 15 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml index 9c2bab58b5..b54e695844 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1950 geburtsmonat: - 2 - jahr: - - 2008 p_id: - 11 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 30aa9d0872..3524b51d06 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1960 geburtsmonat: - 4 - jahr: - - 2008 p_id: - 12 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index f7e37a52a6..74430371e6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1970 geburtsmonat: - 6 - jahr: - - 2008 p_id: - 13 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 768ce5b4d3..def5280e8f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1980 geburtsmonat: - 8 - jahr: - - 2008 p_id: - 14 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index af6d43ef47..e446c582fb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1995 geburtsmonat: - 10 - jahr: - - 2018 p_id: - 25 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 3bf30de98d..fa46f4cbe2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1960 geburtsmonat: - 2 - jahr: - - 2018 p_id: - 21 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 866904a30b..6abf56c602 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1970 geburtsmonat: - 4 - jahr: - - 2018 p_id: - 22 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index bdd0d6031d..5dc4549f73 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1980 geburtsmonat: - 6 - jahr: - - 2018 p_id: - 23 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 94b1b79e8d..ed1693033f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1990 geburtsmonat: - 8 - jahr: - - 2018 p_id: - 24 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml index 019875cb56..0d13f3710d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 2000 geburtsmonat: - 10 - jahr: - - 2020 p_id: - 31 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml index 629d89ef53..c13b31da51 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 2000 geburtsmonat: - 10 - jahr: - - 2020 p_id: - 30 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml index a43af303dc..074f42a92f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1957 geburtsmonat: - 6 - jahr: - - 2020 p_id: - 28 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml index 5222d8ef83..d651b00871 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1970 geburtsmonat: - 4 - jahr: - - 2020 p_id: - 27 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 8e578fc8ad..31bea3863a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1970 geburtsmonat: - 2 - jahr: - - 2020 p_id: - 26 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index bed2076258..4471c424a6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -9,8 +9,6 @@ inputs: - 1995 geburtsmonat: - 8 - jahr: - - 2020 p_id: - 29 sozialversicherung__rente__bezieht_rente: diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml index 5591f50684..08749b69ed 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml @@ -10,8 +10,6 @@ inputs: - true hh_id: - 1 - jahr: - - 2023 kindergeld__betrag_m: - 250.0 p_id: diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml index 244aa66360..a6e5445ce6 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml @@ -10,8 +10,6 @@ inputs: - false hh_id: - 2 - jahr: - - 2023 kindergeld__betrag_m: - 250.0 p_id: diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml index 6393509f68..fdf024b1dd 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml @@ -39,9 +39,6 @@ inputs: hh_id: - 5 - 5 - jahr: - - 2018 - - 2018 kindergeld__p_id_empfänger: - -1 - 6 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml index ff4a09a952..896466edba 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml @@ -50,10 +50,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__p_id_empfänger: - -1 - 39 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml index 7e383e4a4b..492416addc 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml @@ -50,10 +50,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__p_id_empfänger: - -1 - 39 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml index 48ac1b36e3..5575f69bfb 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml @@ -50,10 +50,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2019 - - 2019 - - 2019 kindergeld__p_id_empfänger: - -1 - 39 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml index 4f8fb4c706..e7fb48fb62 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml @@ -39,9 +39,6 @@ inputs: hh_id: - 1 - 1 - jahr: - - 2019 - - 2019 kindergeld__p_id_empfänger: - -1 - 23 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_mittlere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_obere_altergruppe_kein_einkommen.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshuehe_obere_altergruppe_kein_einkommen_ueber_einkommensgrenze.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" similarity index 100% rename from src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchshoehe_untere_altergruppe.yaml rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" index 31badcd124..c4349e74d9 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" @@ -78,12 +78,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 kinderzuschlag__basisbetrag_m_bg: - 280.0 - 280.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" index 3285559e7e..8ac4cd2620 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" @@ -42,9 +42,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - 2009 - - 2009 kindergeld__p_id_empfänger: - -1 - 6 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" index a6cd502bcc..e41d6b06b7 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" @@ -42,9 +42,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - 2013 - - 2013 kinderzuschlag__basisbetrag_m_bg: - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" index ee541d5631..27e98c4cd1 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" @@ -42,9 +42,6 @@ inputs: hh_id: - 7 - 7 - jahr: - - 2014 - - 2014 kinderzuschlag__basisbetrag_m_bg: - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" index 3545d7ea95..9d3d82576f 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -54,10 +54,6 @@ inputs: - 1 - 1 - 1 - jahr: - - 2016 - - 2016 - - 2016 kinderzuschlag__basisbetrag_m_bg: - 140.0 - 140.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" index 79843e9c89..cd4e9b6945 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" @@ -42,9 +42,6 @@ inputs: hh_id: - 6 - 6 - jahr: - - 2019 - - 2019 kindergeld__betrag_m: - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" index 473818eb39..71c636012e 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" @@ -30,8 +30,6 @@ inputs: - 1939 hh_id: - 8 - jahr: - - 2019 kinderzuschlag__basisbetrag_m_bg: - 0.0 p_id: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index abc379baa7..b82a6b099e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -215,15 +215,6 @@ inputs: - 15 - 15 - 15 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index 28d00b2dc6..c124e29ce9 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -144,12 +144,6 @@ inputs: - 4 - 4 - 4 - jahr: - - 2006 - - 2006 - - 2006 - - 2006 - - 2006 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml rename to "src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index f2df354506..c24f7ebd10 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/vermoegen_zu_hoch.yaml +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -78,9 +78,6 @@ inputs: hh_id: - 3 - 3 - jahr: - - 2009 - - 2009 kindergeld__grundsätzlich_anspruchsberechtigt: - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index 7c26b0a180..c5c2e4b02c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -75,9 +75,6 @@ inputs: hh_id: - 2 - 2 - jahr: - - 2013 - - 2013 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index deef6ccea2..4a5b3edac3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -75,9 +75,6 @@ inputs: hh_id: - 9 - 9 - jahr: - - 2013 - - 2013 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index 10c978de5e..e98ef1ab97 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -102,10 +102,6 @@ inputs: - 1 - 1 - 1 - jahr: - - 2016 - - 2016 - - 2016 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index c5d37fa599..4e2f520a6c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -328,20 +328,6 @@ inputs: - 7 - 7 - 7 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index 75e52a1b19..ad936d49d5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -167,13 +167,6 @@ inputs: - 8 - 8 - 8 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" similarity index 98% rename from src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml rename to "src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 1866128f61..89fff54046 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/vermoegen_zu_hoch.yaml +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -167,13 +167,6 @@ inputs: - 6 - 6 - 6 - jahr: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index c42df531d5..fadd7e87cc 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -52,8 +52,6 @@ inputs: - 1 hh_id: - 5 - jahr: - - 2019 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 913ec3c025..78d5c4c177 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -54,8 +54,6 @@ inputs: - 1 hh_id: - 10 - jahr: - - 2021 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index b3ac847079..7e727c6e66 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -56,8 +56,6 @@ inputs: - 1 hh_id: - 11 - jahr: - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index 21e41a8af3..351481de86 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -56,8 +56,6 @@ inputs: - 1 hh_id: - 12 - jahr: - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false kindergeld__p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 56cb196bae..c5fa1f914d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -106,10 +106,6 @@ inputs: - 13 - 13 - 13 - jahr: - - 2023 - - 2023 - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index fcac38a39e..180d626e9b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -181,13 +181,6 @@ inputs: - 14 - 14 - 14 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index ae2bbe8f6a..d546915245 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -131,11 +131,6 @@ inputs: - 16 - 16 - 16 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 9ca6c5264c..9193d60b89 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -156,12 +156,6 @@ inputs: - 17 - 17 - 17 - jahr: - - 2023 - - 2023 - - 2023 - - 2023 - - 2023 kindergeld__grundsätzlich_anspruchsberechtigt: - false - false diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index e53d6c9a76..ab6ea89995 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -1,5 +1,4 @@ import dags.tree as dt -import numpy as np import pytest from numpy.testing import assert_array_almost_equal @@ -9,6 +8,7 @@ load_policy_test_data, ) from ttsim import compute_taxes_and_transfers +from ttsim.config import numpy_or_jax as np test_data = load_policy_test_data("groupings") diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py index d3a5b95e6c..fc92da0df7 100644 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ b/src/_gettsim_tests/test_lohnsteuer.py @@ -2,14 +2,17 @@ from ttsim import set_up_policy_environment -def test_lohnsteuer_rv_anteil(): +def test_parsing_lohnsteuer_rv_anteil(): environment = set_up_policy_environment( resource_dir=RESOURCE_DIR, date="2018-01-01" ) assert ( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] - == 0.72 + abs( + environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] + - 0.72 + ) + < 1e-6 ) environment = set_up_policy_environment( @@ -17,5 +20,9 @@ def test_lohnsteuer_rv_anteil(): ) assert ( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] == 1 + abs( + environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] + - 1 + ) + < 1e-6 ) diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 739a2049de..175365f565 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -1,21 +1,26 @@ from __future__ import annotations +import copy from functools import lru_cache from typing import TYPE_CHECKING import dags.tree as dt +import optree import pandas as pd import yaml from _gettsim.config import RESOURCE_DIR from _gettsim_tests import TEST_DIR from ttsim import ( + GroupCreationFunction, PolicyEnvironment, compute_taxes_and_transfers, merge_trees, set_up_policy_environment, to_datetime, ) +from ttsim.config import IS_JAX_INSTALLED +from ttsim.config import numpy_or_jax as np # Set display options to show all columns without truncation pd.set_option("display.max_columns", None) @@ -51,7 +56,7 @@ def __init__( date: datetime.date, ) -> None: self.info = info - self.input_tree = input_tree + self.input_tree = optree.tree_map(np.array, input_tree) self.expected_output_tree = expected_output_tree self.path = path self.date = date @@ -68,25 +73,58 @@ def name(self) -> str: return self.path.relative_to(TEST_DIR / "test_data").as_posix() -def execute_test(test: PolicyTest): +def execute_test(test: PolicyTest, jit: bool = False) -> None: environment = cached_set_up_policy_environment(date=test.date) - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=test.target_structure, - ) + if IS_JAX_INSTALLED: + ids = dict.fromkeys( + {f"{g}_id" for g in environment.grouping_levels}.intersection( + { + g + for g, t in environment.raw_objects_tree.items() + if isinstance(t, GroupCreationFunction) + } + ) + ) + result_ids = compute_taxes_and_transfers( + data_tree=test.input_tree, + environment=environment, + targets_tree=ids, + jit=False, + ) + data_tree = merge_trees(test.input_tree, result_ids) + targets_tree = copy.deepcopy(test.target_structure) + for i in [i for i in ids if i in targets_tree]: + del targets_tree[i] + else: + data_tree = test.input_tree + targets_tree = test.target_structure + + if targets_tree: + result = compute_taxes_and_transfers( + data_tree=data_tree, + environment=environment, + targets_tree=targets_tree, + jit=jit, + ) + else: + result = {} flat_result = dt.flatten_to_qual_names(result) flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) if flat_expected_output_tree: - result_df = pd.DataFrame(flat_result) expected_df = pd.DataFrame(flat_expected_output_tree) + result_df = pd.DataFrame(flat_result) + if IS_JAX_INSTALLED: + for i in [i for i in ids if i in expected_df]: + result_df = pd.concat( + [result_df, pd.Series(result_ids[i], name=i)], axis=1 + ) try: pd.testing.assert_frame_equal( - result_df, - expected_df, + result_df.sort_index(axis="columns"), + expected_df.sort_index(axis="columns"), atol=test.info["precision_atol"], check_dtype=False, ) diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index dbedacbb9f..8fcdba15a4 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -391,9 +391,6 @@ def _fail_if_group_variables_not_constant_within_groups( """ Check that group variables are constant within each group. - If the user provides a supported grouping ID (see SUPPORTED_GROUPINGS in config.py), - the function checks that the corresponding data is constant within each group. - Parameters ---------- data diff --git a/src/ttsim/rounding.py b/src/ttsim/rounding.py index 56b618f67b..9d26d8ac11 100644 --- a/src/ttsim/rounding.py +++ b/src/ttsim/rounding.py @@ -58,7 +58,7 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> np.ndarray: elif self.direction == "down": rounded_out = self.base * np.floor(out / self.base) elif self.direction == "nearest": - rounded_out = self.base * (out / self.base).round() + rounded_out = self.base * (np.asarray(out) / self.base).round() rounded_out += self.to_add_after_rounding return rounded_out diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/ttsim_objects.py index 4de4513daa..74a3f34a6e 100644 --- a/src/ttsim/ttsim_objects.py +++ b/src/ttsim/ttsim_objects.py @@ -290,7 +290,7 @@ def policy_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, rounding_spec: RoundingSpec | None = None, - vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "loop", + vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize", foreign_key_type: FKType = FKType.IRRELEVANT, ) -> Callable[[Callable], PolicyFunction]: """ diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py index 75e967cf1e..90bfed62e3 100644 --- a/tests/ttsim/mettsim/config.py +++ b/tests/ttsim/mettsim/config.py @@ -7,5 +7,3 @@ from pathlib import Path RESOURCE_DIR = Path(__file__).parent - -SUPPORTED_GROUPINGS = ("fam", "sp", "kin") diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index 327ee1d200..c6da9c0f65 100644 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -25,7 +25,6 @@ def number_of_individuals_fam(fam_id: int) -> int: @policy_function( end_date="2019-12-31", leaf_name="requirement_fulfilled_fam", - vectorization_strategy="vectorize", ) def requirement_fulfilled_fam_not_considering_children( housing_benefits__income__amount_m_fam: float, @@ -42,7 +41,6 @@ def requirement_fulfilled_fam_not_considering_children( @policy_function( start_date="2020-01-01", leaf_name="requirement_fulfilled_fam", - vectorization_strategy="vectorize", ) def requirement_fulfilled_fam_considering_children( housing_benefits__income__amount_m_fam: float, diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py index 31e3a93d1d..6cbd615fe2 100644 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -7,7 +7,6 @@ direction="down", reference="§ 4 Gondorian Housing Benefit Law", ), - vectorization_strategy="vectorize", ) def amount_m( payroll_tax__income__gross_wage_m: float, diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py index 0f7fba2830..b0adfe6d40 100644 --- a/tests/ttsim/test_combine_functions.py +++ b/tests/ttsim/test_combine_functions.py @@ -120,9 +120,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(return_x_kin), + "f": policy_function(leaf_name="f")(return_x_kin), "x": x, }, }, diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 16d529a16f..78c51b08f3 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -60,12 +60,17 @@ def betrag_m() -> float: pass -@policy_function(vectorization_strategy="vectorize") +@policy_function() +def identity(x: int) -> int: + return x + + +@policy_function() def some_func(p_id: int) -> int: return p_id -@policy_function(vectorization_strategy="vectorize") +@policy_function() def another_func(some_func: int) -> int: return some_func @@ -297,9 +302,9 @@ def c(b): def test_function_without_data_dependency_is_not_mistaken_for_data(minimal_input_data): - @policy_function(leaf_name="a") - def a(): - return pd.Series(range(minimal_input_data["p_id"].size)) + @policy_function(leaf_name="a", vectorization_strategy="not_required") + def a() -> np.ndarray: + return np.array(range(minimal_input_data["p_id"].size)) @policy_function(leaf_name="b") def b(a): @@ -603,7 +608,7 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): ( PolicyEnvironment( raw_objects_tree={ - "foo_m": policy_function(leaf_name="foo_m")(lambda x: x), + "foo_m": policy_function(leaf_name="foo_m")(identity), "fam_id": fam_id, } ), @@ -613,7 +618,7 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): ( PolicyEnvironment( raw_objects_tree={ - "foo": policy_function(leaf_name="foo")(lambda x: x), + "foo": policy_function(leaf_name="foo")(identity), "fam_id": fam_id, } ), diff --git a/tests/ttsim/test_docs.py b/tests/ttsim/test_docs.py index 20f5c5f37a..1d645ef153 100644 --- a/tests/ttsim/test_docs.py +++ b/tests/ttsim/test_docs.py @@ -4,7 +4,6 @@ import inspect import pytest -from mettsim.config import SUPPORTED_GROUPINGS from _gettsim.config import ( RESOURCE_DIR, @@ -82,7 +81,7 @@ def test_all_input_vars_documented( for c in arguments if (c not in defined_functions) and ( - remove_group_suffix(c, groupings=SUPPORTED_GROUPINGS) + remove_group_suffix(c, groupings=environment.grouping_levels) not in defined_functions ) and (not c.endswith("_params")) diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_time_conversion.py index a5937be480..794c31d4bf 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_time_conversion.py @@ -328,10 +328,11 @@ def test_should_apply_converter(self): # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def test_should_not_create_cycle(): + def x(test_m: int) -> int: + return test_m + time_conversion_functions = create_time_conversion_functions( - ttsim_objects={ - "test_d": policy_function(leaf_name="test_d")(lambda test_m: test_m) - }, + ttsim_objects={"test_d": policy_function(leaf_name="test_d")(x)}, data={}, groupings=(), ) From 598620d4dea34b86a8d7008f61ff964643bee293 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 5 May 2025 16:50:00 +0200 Subject: [PATCH 032/109] Replace Proxy Renteneinkommen Vorjahr with policy input (#894) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? - Replaces the proxy for Renteneinkommen Vorjahr with policy input `renteneinkünfte_vorjahr_m`. - Removes tests of the proxy --- .../eink\303\274nfte/sonstige/inputs.py" | 9 ++ .../rente/grundrente/grundrente.py | 81 +----------------- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 2 +- .../2021-07-01/hh_id_1.yaml | 83 ------------------- .../2021-07-01/hh_id_10.yaml | 77 ----------------- .../2021-07-01/hh_id_2.yaml | 77 ----------------- .../2021-07-01/hh_id_3.yaml | 77 ----------------- .../2021-07-01/hh_id_4.yaml | 77 ----------------- .../2021-07-01/hh_id_5.yaml | 83 ------------------- .../2021-07-01/hh_id_6.yaml | 77 ----------------- .../2021-07-01/hh_id_7.yaml | 77 ----------------- .../2021-07-01/hh_id_8.yaml | 77 ----------------- .../2021-07-01/hh_id_9.yaml | 77 ----------------- .../test_grundrente_proxy_rente.py | 54 ------------ 25 files changed, 25 insertions(+), 925 deletions(-) delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml delete mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml delete mode 100644 src/_gettsim_tests/test_grundrente_proxy_rente.py diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" index 2a03c9ca84..c3073dce64 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -10,3 +10,12 @@ def ohne_renten_m() -> float: Excludes income from public and private pensions. """ + + +@policy_input() +def renteneinkünfte_vorjahr_m() -> float: + """Income from private and public pensions in the previous year. + + GETTSIM can calculate this input based on the data of the previous year using the + target `("einkommensteuer", "einkünfte", "sonstige", "renteneinkünfte_m")`. + """ diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index c6ef453def..878b2ecb20 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -28,7 +28,7 @@ def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: @policy_function(start_date="2021-01-01") def einkommen_m( - proxy_rente_vorjahr_m: float, + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, @@ -57,8 +57,8 @@ def einkommen_m( Parameters ---------- - proxy_rente_vorjahr_m - See :func:`proxy_rente_vorjahr_m`. + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m + See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m`. einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m`. einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m @@ -75,7 +75,7 @@ def einkommen_m( # Sum income over different income sources. out = ( - proxy_rente_vorjahr_m + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m # income from self-employment + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m # rental income @@ -338,79 +338,6 @@ def mean_entgeltpunkte_zuschlag( return out -@policy_function( - rounding_spec=RoundingSpec( - base=0.0001, - direction="nearest", - reference="§ 123 SGB VI Abs. 1", - ), - start_date="2021-01-01", -) -def proxy_rente_vorjahr_m( - sozialversicherung__rente__bezieht_rente: bool, - sozialversicherung__rente__private_rente_betrag_m: float, - sozialversicherung__rente__jahr_renteneintritt: int, - geburtsjahr: int, - alter: int, - sozialversicherung__rente__entgeltpunkte_west: float, - sozialversicherung__rente__entgeltpunkte_ost: float, - sozialversicherung__rente__altersrente__zugangsfaktor: float, - ges_rente_params: dict, -) -> float: - """Estimated amount of public pensions of last year excluding Grundrentenzuschlag. - - Parameters - ---------- - sozialversicherung__rente__bezieht_rente - See basic input variable :ref:`sozialversicherung__rente__bezieht_rente <sozialversicherung__rente__bezieht_rente>`. - sozialversicherung__rente__private_rente_betrag_m - See basic input variable :ref:`sozialversicherung__rente__private_rente_betrag_m <sozialversicherung__rente__private_rente_betrag_m>`. Assume this did not - change from last year. - sozialversicherung__rente__jahr_renteneintritt - See basic input variable :ref:`sozialversicherung__rente__jahr_renteneintritt <sozialversicherung__rente__jahr_renteneintritt>`. - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - alter - See basic input variable :ref:`alter <alter>`. - sozialversicherung__rente__entgeltpunkte_west - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west <sozialversicherung__rente__entgeltpunkte_west>`. - sozialversicherung__rente__entgeltpunkte_ost - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost <sozialversicherung__rente__entgeltpunkte_ost>`. - sozialversicherung__rente__altersrente__zugangsfaktor - See :func:`sozialversicherung__rente__altersrente__zugangsfaktor`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - - # Calculate if subect was retired last year - if sozialversicherung__rente__bezieht_rente: - rentner_vorjahr = ( - sozialversicherung__rente__jahr_renteneintritt < geburtsjahr + alter - ) - else: - rentner_vorjahr = False - - if rentner_vorjahr: - out = ( - ( - sozialversicherung__rente__entgeltpunkte_west - * ges_rente_params["rentenwert_vorjahr"]["west"] - + sozialversicherung__rente__entgeltpunkte_ost - * ges_rente_params["rentenwert_vorjahr"]["ost"] - ) - * sozialversicherung__rente__altersrente__zugangsfaktor - + sozialversicherung__rente__private_rente_betrag_m - ) - else: - out = 0.0 - - return out - - @policy_function(start_date="2021-01-01") def grundsätzlich_anspruchsberechtigt( grundrentenzeiten_monate: int, diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index ab03aa6786..f081b4fdcf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -48,7 +48,7 @@ inputs: - 420 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 14.014 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 73b21b4b23..8e21bc70b0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -47,7 +47,7 @@ inputs: - 492 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 41.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index e0aeaf4a42..6f6c0e7327 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -49,7 +49,7 @@ inputs: - 516 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.5 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index 30c0e14f87..de982e284c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -46,7 +46,7 @@ inputs: - 0 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 0.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 34f594f1cf..a2ffad08b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -48,7 +48,7 @@ inputs: - 420 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 17.5 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index 49f2f4ca3d..981b363f40 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -49,7 +49,7 @@ inputs: - 420 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 21.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index 411d059967..f5627b3f2e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -48,7 +48,7 @@ inputs: - 480 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 28.8 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index 0886c36f0b..c2cb66ca7c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -48,7 +48,7 @@ inputs: - 408 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 18.7 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index c219f3ab59..bdaa4e720e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -47,7 +47,7 @@ inputs: - 480 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index 91f8eb581e..ed444c50ab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -47,7 +47,7 @@ inputs: - 480 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 7024e131da..0587e2b6c0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -47,7 +47,7 @@ inputs: - 480 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 15.0 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 5506b0097f..5b0a6e5029 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -48,7 +48,7 @@ inputs: - 552 sozialversicherung__rente__grundrente__mean_entgeltpunkte: - 34.5 - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - 0.0 wohnort_ost: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml deleted file mode 100644 index 26d51ac26d..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_1.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 1 - p_id: - - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: - - 65.41666666 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 673.54 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml deleted file mode 100644 index e105146a70..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_10.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 2 - p_id: - - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 24.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 30.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml deleted file mode 100644 index c60e90e9bf..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_2.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 2 - p_id: - - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 30.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 1010.31 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml deleted file mode 100644 index 5010e256df..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_3.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 3 - p_id: - - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 20.0 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - true -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 654.63 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml deleted file mode 100644 index 37cf2b4342..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_4.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 4 - p_id: - - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 1000.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 1673.54 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml deleted file mode 100644 index 3b5d31757f..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_5.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 5 - p_id: - - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2014 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__alter_bei_renteneintritt: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 624.31 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml deleted file mode 100644 index 2d7c1dfee7..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_6.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 6 - p_id: - - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 830.82 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml deleted file mode 100644 index 7ab91ebb36..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_7.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 90 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1931 - geburtsmonat: - - 1 - hh_id: - - 7 - p_id: - - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 1996 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 683.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml deleted file mode 100644 index a83cfd31f1..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_8.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 50 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1971 - geburtsmonat: - - 1 - hh_id: - - 8 - p_id: - - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 120.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 20.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2033 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 63.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml deleted file mode 100644 index cab5a5fe57..0000000000 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente_proxy_rente/2021-07-01/hh_id_9.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -info: - note: made up, regression test - precision_atol: 1 - source: '' -inputs: - assumed: {} - provided: - alter: - - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - geburtsjahr: - - 1951 - geburtsmonat: - - 1 - hh_id: - - 2 - p_id: - - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 240.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 30.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 6.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2016 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 7 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 36.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 480.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - weiblich: - - false - wohnort_ost: - - false -outputs: - sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m: - - 1025.7 diff --git a/src/_gettsim_tests/test_grundrente_proxy_rente.py b/src/_gettsim_tests/test_grundrente_proxy_rente.py deleted file mode 100644 index af1d63677d..0000000000 --- a/src/_gettsim_tests/test_grundrente_proxy_rente.py +++ /dev/null @@ -1,54 +0,0 @@ -from datetime import timedelta - -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests.utils import ( - PolicyTest, - cached_set_up_policy_environment, - load_policy_test_data, -) -from ttsim import compute_taxes_and_transfers - -proxy_rente_test_data = load_policy_test_data( - "sozialversicherung/rente/grundrente_proxy_rente" -) - - -@pytest.mark.parametrize("test", proxy_rente_test_data) -def test_grundrente_proxy_rente_vorjahr_comparison(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree={ - "sozialversicherung": { - "rente": {"grundrente": {"proxy_rente_vorjahr_m": None}} - } - }, - ) - - # Calculate pension of last year - environment = cached_set_up_policy_environment(test.date - timedelta(days=365)) - test.input_tree["alter"] -= 1 - result_previous_year = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree={ - "sozialversicherung": {"rente": {"altersrente": {"bruttorente_m": None}}} - }, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_result_previous_year = dt.flatten_to_qual_names(result_previous_year) - flat_inputs = dt.flatten_to_qual_names(test.input_tree) - assert_array_almost_equal( - flat_result["sozialversicherung__rente__grundrente__proxy_rente_vorjahr_m"], - flat_result_previous_year[ - "sozialversicherung__rente__altersrente__bruttorente_m" - ] - + flat_inputs["sozialversicherung__rente__private_rente_betrag_m"], - decimal=2, - ) From cb79c6dbeab36435e9221193cf8497739afe1221 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 6 May 2025 10:02:25 +0200 Subject: [PATCH 033/109] Remove fake dependencies, fixes #666. (#896) Noted in the process of parameter conversion that all tests pass when fake dependencies are removed. As that PR is going to be large, I move this out to a separate one. --- .../besonders_langj\303\244hrig.py" | 8 +----- .../f\303\274r_frauen/f\303\274r_frauen.py" | 23 +++-------------- .../langj\303\244hrig/langj\303\244hrig.py" | 25 +++---------------- .../regelaltersrente/regelaltersrente.py | 8 +----- .../wegen_arbeitslosigkeit.py | 23 +++-------------- .../unterhaltsvorschuss.py | 14 ++--------- .../ttsim/test_compute_taxes_and_transfers.py | 4 +-- 7 files changed, 14 insertions(+), 91 deletions(-) diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index 993a817318..b80ff7480e 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -8,10 +8,7 @@ end_date="2014-06-22", leaf_name="altersgrenze", ) -def altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: """ Full retirement age (FRA) for very long term insured. @@ -34,9 +31,6 @@ def altersgrenze_ohne_staffelung( Full retirement age (without deductions) for very long term insured. """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_besond_langj_versicherte"] diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index 760de30202..f90b9ce441 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -7,10 +7,7 @@ @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: """Full retirement age (FRA) for women. FRA is the same for each birth cohort. @@ -29,8 +26,6 @@ def altersgrenze_ohne_staffelung( Full retirement age for women. """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] @@ -90,10 +85,7 @@ def altersgrenze_mit_staffelung( @policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: """Early retirement age (ERA) for Renten für Frauen. ERA does not depend on birth year and month. @@ -113,9 +105,6 @@ def altersgrenze_vorzeitig_ohne_staffelung( """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] @@ -177,10 +166,7 @@ def altersgrenze_vorzeitig_mit_staffelung( @policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung_nach_1996(ges_rente_params: dict) -> float: """Early retirement age (ERA) for Renten für Frauen. ERA does not depend on birth year and month. @@ -200,9 +186,6 @@ def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index b6ecdce4c9..ec45403e82 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -4,10 +4,7 @@ @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: """ Full retirement age (FRA) for long term insured. @@ -32,9 +29,6 @@ def altersgrenze_ohne_staffelung( Full retirement age for long term insured. """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"] @@ -160,10 +154,7 @@ def altersgrenze_mit_staffelung_nach_geburtsjahr( @policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: """Early retirement age (ERA) for Rente für langjährig Versicherte. ERA does not depend on birth year and month. @@ -183,9 +174,6 @@ def altersgrenze_vorzeitig_ohne_staffelung( """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] @@ -235,10 +223,7 @@ def altersgrenze_vorzeitig_mit_staffelung( @policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung_nach_1996(ges_rente_params: dict) -> float: """Early retirement age (ERA) for Rente für langjährig Versicherte. ERA does not depend on birth year and month. @@ -256,10 +241,6 @@ def altersgrenze_vorzeitig_ohne_staffelung_nach_1996( ------- Early retirement age """ - - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index f07b774514..abf68b30a4 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -4,10 +4,7 @@ @policy_function(end_date="2007-04-19", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: """Normal retirement age (NRA). NRA is the same for every birth cohort. @@ -33,9 +30,6 @@ def altersgrenze_ohne_staffelung( Normal retirement age (NRA). """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["regelaltersgrenze"] diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index a914f8fcd2..7a81d034c6 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -7,10 +7,7 @@ @policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: """Full retirement age for unemployed. Before the WFG (Gesetz für Wachstum und Beschäftigung) was implemented in 1997 the @@ -29,8 +26,6 @@ def altersgrenze_ohne_staffelung( lowest full retirement age for unemployed. """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 return ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"] @@ -150,10 +145,7 @@ def altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( @policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: """Early retirement age of pension for unemployed. Early retirement age does not depend on birth year and month. @@ -172,9 +164,6 @@ def altersgrenze_vorzeitig_ohne_staffelung( """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] @@ -249,10 +238,7 @@ def altersgrenze_vorzeitig_mit_vertrauensschutz_ab_1996_07_bis_1996_09( end_date="2004-07-25", leaf_name="altersgrenze_vorzeitig", ) -def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09( - geburtsjahr: int, # noqa: ARG001 - ges_rente_params: dict, -) -> float: +def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09(ges_rente_params: dict) -> float: """Early retirement age of pension for unemployed. Early retirement age does not depend on birth year and month. @@ -271,9 +257,6 @@ def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09( """ - # TODO(@MImmesberger): Remove fake dependency (geburtsjahr). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 9f508e4893..ec27aebc26 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -114,10 +114,7 @@ def not_implemented_m() -> float: @policy_function(start_date="2023-01-01", leaf_name="kindergeld_erstes_kind_m") -def kindergeld_erstes_kind_ohne_staffelung_m( - kindergeld_params: dict, - alter: int, # noqa: ARG001 -) -> float: +def kindergeld_erstes_kind_ohne_staffelung_m(kindergeld_params: dict) -> float: """Kindergeld for first child when Kindergeld does not depend on number of children. Parameters @@ -130,16 +127,11 @@ def kindergeld_erstes_kind_ohne_staffelung_m( ------- """ - # TODO(@MImmesberger): Remove fake dependency (alter). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 return kindergeld_params["kindergeld"] @policy_function(end_date="2022-12-31", leaf_name="kindergeld_erstes_kind_m") -def kindergeld_erstes_kind_gestaffelt_m( - kindergeld_params: dict, - alter: int, # noqa: ARG001 -) -> float: +def kindergeld_erstes_kind_gestaffelt_m(kindergeld_params: dict) -> float: """Kindergeld for first child when Kindergeld does depend on number of children. Parameters @@ -152,8 +144,6 @@ def kindergeld_erstes_kind_gestaffelt_m( ------- """ - # TODO(@MImmesberger): Remove fake dependency (alter). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 return kindergeld_params["kindergeld"][1] diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index 78c51b08f3..dbddf69dc5 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -542,10 +542,8 @@ def test_user_provided_aggregate_by_p_id_specs( expected, minimal_input_data_shared_fam, ): - # TODO(@MImmesberger): Remove fake dependency. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/666 @policy_function(leaf_name=leaf_name, vectorization_strategy="not_required") - def source(p_id: int) -> int: # noqa: ARG001 + def source() -> int: return np.array([100, 200, 300]) raw_objects_tree = merge_trees( From 82f0646bf53451f4d4cf702bd383c5fcc4cd7999 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 6 May 2025 23:14:32 +0200 Subject: [PATCH 034/109] Remove infrastructure to create synthetic data. (#899) ### What problem do you want to solve? This PR removes the infrastructure to create synthetic data. This functionality is superseded by the `gettsim-personas` repository. --- pixi.lock | 4 +- pyproject.toml | 4 - src/_gettsim/synthetic.py | 381 ------------------ .../synthetic_data/bedarfsgemeinschaften.yaml | 79 ---- src/_gettsim_tests/test_synthetic.py | 353 ---------------- src/gettsim/__init__.py | 2 - 6 files changed, 2 insertions(+), 821 deletions(-) delete mode 100644 src/_gettsim/synthetic.py delete mode 100644 src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml delete mode 100644 src/_gettsim_tests/test_synthetic.py diff --git a/pixi.lock b/pixi.lock index eeecdb15d4..bbbcdde0df 100644 --- a/pixi.lock +++ b/pixi.lock @@ -6607,8 +6607,8 @@ packages: timestamp: 1694400856979 - pypi: . name: gettsim - version: 0.7.1.dev128+gbc722741.d20250429 - sha256: aed5f1fe46cde7e50510939ac4453026f951336ed18ab9239946a681e9aeddb9 + version: 0.7.1.dev121+gcb79c6db.d20250506 + sha256: 61143c871b2de8cbbf8d24f0cb80835b0de979684187dfde8edd16c119097662 requires_dist: - dags>=0.3.0 - ipywidgets diff --git a/pyproject.toml b/pyproject.toml index e453ffd0a4..f7cf103ce7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -264,8 +264,6 @@ exclude = [] # Files which should be ignored until we have rewritten them # ========================================================= -"src/_gettsim/synthetic.py" = ["F821"] -"src/_gettsim_tests/test_synthetic.py" = ["F821", "E501"] "outdated_docs/**/*.ipynb" = ["T201"] "tests/ttsim/test_docs.py" = ["F821"] @@ -290,8 +288,6 @@ explicit_package_bases = true [[tool.mypy.overrides]] module = [ - "src._gettsim.synthetic", - "src._gettsim_tests.test_synthetic", "src.ttsim.plot_dag", "tests.ttsim.test_docs", ] diff --git a/src/_gettsim/synthetic.py b/src/_gettsim/synthetic.py deleted file mode 100644 index 537e202f53..0000000000 --- a/src/_gettsim/synthetic.py +++ /dev/null @@ -1,381 +0,0 @@ -from __future__ import annotations - -import datetime - -import dags.tree as dt -import numpy -import pandas as pd - -from _gettsim.config import RESOURCE_DIR -from ttsim.policy_environment import _load_parameter_group_from_yaml - -current_year = datetime.datetime.today().year - - -def create_synthetic_data( - n_adults=1, - n_children=0, - adults_married=True, - specs_constant_over_households=None, - specs_heterogeneous=None, - policy_year=current_year, -): - """Create a dataset with hypothetical household types, which can be used as input - for GETTSIM. - - Parameters - ---------- - n_adults : int - Number of adults in the household, must be either 1 or 2, default is 1. - n_children : int - Number of children in the household, must be 0, 1, or 2, default is 0. - adults_married : bool - Whether the adults are married or not. Only relevant if n_adults is 2, default - is True. - specs_constant_over_households : dict of lists - Values for variables that might vary within households, but are constant across - households. - specs_heterogeneous : dict of lists of lists - Values for variables that vary over households. - policy_year : int - Year for which the data set should be created. This is relevant for the - calculation of birthyear based on age. - - Returns - ------- - data : pd.DataFrame containing all variables that are needed to run GETTSIM. - - """ - # Check inputs - if n_adults not in [1, 2]: - raise ValueError("'n_adults' must be either 1 or 2") - if n_children not in list(range(11)): - raise ValueError("'n_children' must be between 0 and 10.") - - default_constant_specs = { - "weiblich": [bool(i % 2 == 1) for i in range(n_children + n_adults)], - "alter": [35] * n_adults + [8, 5, 3, 1, 10, 9, 7, 6, 4, 2][:n_children], - "familie__kind": [False] * n_adults + [True] * n_children, - "in_ausbildung": [False] * n_adults + [True] * n_children, - } - if specs_constant_over_households: - default_constant_specs.update(specs_constant_over_households) - specs_constant_over_households = default_constant_specs - - # Make sure length of lists in specs_constant_over_households is correct - for var in specs_constant_over_households: - if len(specs_constant_over_households[var]) != n_adults + n_children: - raise ValueError( - f"Length of {var} in specs_constant_over_households is not correct." - ) - - if specs_heterogeneous is None: - specs_heterogeneous = {} - df = create_basic_households( - n_adults, - n_children, - adults_married, - specs_constant_over_households, - specs_heterogeneous, - ) - df = create_constant_across_households_variables( - df, n_adults, n_children, policy_year - ) - return df - - -def create_basic_households( - n_adults, - n_children, - adults_married, - specs_constant_over_households, - specs_heterogeneous, -): - """Create basic variables for all households. - - Basic variables are variables which: - - - are important to differentiate the individual household members - - or vary across households (as specified in specs_heterogeneous) - - Parameters - ---------- - n_adults : int - Number of adults in the household. - n_children : int - Number of children in the household. - adults_married : bool - Whether the adults are married or not. Only relevant if n_adults is 2. - specs_constant_over_households : dict of lists - Values for variables that might vary within households, but are constant across - households. The length of the lists must be equal to n_adults + n_children. - specs_heterogeneous : dict of lists of lists - Values for variables that vary over households. The length of the outer lists - equal the number of generated households and must be the same over all entries - in specs_heterogeneous. The inner lists must be of length n_adults + - n_children. - - Returns - ------- - data : pd.DataFrame containing all basic variables. - - """ - hh_typ_string = create_hh_typ_string(n_adults, n_children) - - # Identify number of households - if len(specs_heterogeneous) > 0: - n_households = len(next(iter(specs_heterogeneous.values()))) - else: - n_households = 1 - - for col in specs_heterogeneous: - if len(specs_heterogeneous[col]) != n_households: - raise ValueError( - f"Length of {col} in specs_heterogeneous is not " - "the same as all the other columns." - ) - - if n_adults == 1 and n_children > 0: - familie__alleinerziehend = [True] + [False] * n_children - else: - familie__alleinerziehend = [False] * (n_children + n_adults) - if n_children > 0: - sozialversicherung__pflege__beitrag__hat_kinder = [True] * n_adults + [ - False - ] * n_children - else: - sozialversicherung__pflege__beitrag__hat_kinder = [False] * (n_adults) - # Add specifications and create DataFrame - all_households = [ - { - "hh_id": [i] * (n_adults + n_children), - "hh_typ": [hh_typ_string] * (n_adults + n_children), - "sozialversicherung__pflege__beitrag__hat_kinder": sozialversicherung__pflege__beitrag__hat_kinder, - "familie__alleinerziehend": familie__alleinerziehend, - # Assumption: All children are biological children of the adults, children - # do not have children themselves - "sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24": [n_children] - * n_adults - + [0] * n_children, - **specs_constant_over_households, - **{v: k[i] for v, k in specs_heterogeneous.items()}, - } - for i in range(n_households) - ] - df = pd.DataFrame( - { - k: [v for i in range(len(all_households)) for v in all_households[i][k]] - for k in all_households[0] - } - ) - - exogenous_groupings = [ - key - for key, value in environment.grouping_levels.items() - if not value.get("potentially_endogenous", True) - ] - group_ids = [f"{g}_id" for g in exogenous_groupings] - df["p_id"] = df.index - - df = return_df_with_ids_for_aggregation(df, n_adults, n_children, adults_married) - - df = df[["p_id", *group_ids] + [c for c in df if c not in [*group_ids, "p_id"]]] - df = df.sort_values(by=[*group_ids, "p_id"]) - - return df - - -def return_df_with_ids_for_aggregation(data, n_adults, n_children, adults_married): - """Create IDs for different groupings. - - Creates the following IDs: - - familie__p_id_elternteil_1 - - familie__p_id_elternteil_2 - - kindergeld__p_id_empfänger - - erziehungsgeld__p_id_empfänger - - arbeitslosengeld_2__p_id_einstandspartner - - familie__p_id_ehepartner - - einkommensteuer__abzüge__p_id_betreuungskostenträger - - Parameters - ---------- - data : pd.DataFrame - DataFrame containing all basic variables. - n_adults : int - Number of adults in the household. - n_children : int - Number of children in the household. - adults_married : bool - Whether the adults are married or not. Only relevant if n_adults is 2. - - Returns - ------- - data : pd.DataFrame - DataFrame containing all basic variables and the new IDs. - """ - # Create Elternteil IDs - if n_children > 0: - data = return_p_id_elternteil(data=data, n_adults=n_adults) - else: - data["familie__p_id_elternteil_1"] = -1 - data["familie__p_id_elternteil_2"] = -1 - data["kindergeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] - data["erziehungsgeld__p_id_empfänger"] = data["familie__p_id_elternteil_1"] - data["einkommensteuer__abzüge__p_id_betreuungskostenträger"] = data[ - "familie__p_id_elternteil_1" - ] - - # Create other IDs - if n_adults == 1: - data["familie__p_id_ehepartner"] = -1 - data["arbeitslosengeld_2__p_id_einstandspartner"] = data[ - "familie__p_id_ehepartner" - ] - else: - data_adults = data.query("familie__kind == False").copy() - for hh_id, group in data_adults.groupby("hh_id"): - relevant_rows = (data_adults["hh_id"] == hh_id).values - data_adults.loc[ - relevant_rows, "arbeitslosengeld_2__p_id_einstandspartner" - ] = group["p_id"].tolist()[::-1] - data = pd.merge( - data, - data_adults[["p_id", "arbeitslosengeld_2__p_id_einstandspartner"]], - on="p_id", - how="left", - ).fillna(-1) - data["arbeitslosengeld_2__p_id_einstandspartner"] = data[ - "arbeitslosengeld_2__p_id_einstandspartner" - ].astype(numpy.int64) - if adults_married: - data["familie__p_id_ehepartner"] = data[ - "arbeitslosengeld_2__p_id_einstandspartner" - ] - else: - data["familie__p_id_ehepartner"] = -1 - - return data - - -def _apply_func_familie__p_id_elternteil_1(x, elternteil_1_candidate): - """Apply function to find the first parent id.""" - if x["familie__kind"]: - return elternteil_1_candidate[x["p_id"]] - else: - return -1 - - -def _apply_func_familie__p_id_elternteil_2(x): - """Apply function to find the second parent id.""" - if x["familie__kind"]: - return x["familie__p_id_elternteil_1"] + 1 - else: - return -1 - - -def return_p_id_elternteil(data, n_adults): - """Find the familie__p_id_elternteil_1 and familie__p_id_elternteil_2.""" - # familie__p_id_elternteil_1 is the first adult in the household - elternteil_1_candidate = { - hh_id: group["p_id"].iloc[0] for hh_id, group in data.groupby("hh_id") - } - # Apply candidate id if familie__kind, else -1 - data["familie__p_id_elternteil_1"] = data.apply( - _apply_func_familie__p_id_elternteil_1, axis=1, args=(elternteil_1_candidate,) - ) - if n_adults == 2: - data["familie__p_id_elternteil_2"] = data.apply( - _apply_func_familie__p_id_elternteil_2, - axis=1, - ) - else: - data["familie__p_id_elternteil_2"] = -1 - return data - - -def create_constant_across_households_variables(df, n_adults, n_children, policy_year): - """Add variables to household that do not vary over households. - - This module could at some point be reused to impute default values for missing - variables when GETTSIM is run. - - """ - df = df.copy() - - # Defaults for Wohnfläche, Kaltmiete, Heizkosten are taken from official data - bg_daten = _load_parameter_group_from_yaml( - datetime.date(policy_year, 1, 1), - group="bedarfsgemeinschaften", - yaml_path=RESOURCE_DIR / "synthetic_data", - ) - - # Use data for 2 children if there are more than 2 children in the household. - n_children_lookup = min(n_children, 2) - hh_typ_string_lookup = create_hh_typ_string(n_adults, n_children_lookup) - - # Take care of arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr - if ( - policy_year >= 2023 - and "arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr" not in df - ): - df["arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr"] = True - - default_values = { - "einkommensteuer__gemeinsam_veranlagt": ( - df["familie__kind"] == False if n_adults == 2 else False # noqa: E712 - ), - "eigenbedarf_gedeckt": False, - "mietstufe": 3, - "geburtsmonat": 1, - "geburtstag": 1, - "rente__altersrente__freiwillige_beitragsmonate": 5.0, - "rente__altersrente__schulausbildung_m": 10.0, - "rente__altersrente__kinderberücksichtigungszeiten_monate": 24.0, - "rente__altersrente__pflegeberücksichtigungszeiten_monate": 1.0, - "elterngeld__nettoeinkommen_vorjahr_m": 20000.0, - "geburtsjahr": policy_year - df["alter"], - "jahr_renteneintr": policy_year - df["alter"] + 67, - "rente__grundrente__sozialversicherung__rente__grundrente__grundrentenzeiten_monate": ( - df["alter"] - 20 - ).clip(lower=0) - * 12, - "rente__grundrente__bewertungszeiten_monate": (df["alter"] - 20).clip(lower=0) - * 12, - "entgeltp": (df["alter"] - 20).clip(lower=0).astype(float), - "rente__grundrente__entgeltpunkte": (df["alter"] - 20) - .clip(lower=0) - .astype(float), - "rente__altersrente__pflichtbeitragsmonate": ( - (df["alter"] - 25).clip(lower=0) * 12 - ).astype(float), - "rente__altersrente__pflichtbeitragsmonate_alt": ( - (df["alter"] - 40).clip(lower=0) * 12 - ).astype(float), - "wohnfläche_hh": float(bg_daten["wohnfläche"][hh_typ_string_lookup]), - "wohnen__bruttokaltmiete_m_hh": float( - bg_daten["bruttokaltmiete"][hh_typ_string_lookup] - ), - "arbeitslosengeld_2__heizkosten_m_hh": float( - bg_daten["heizkosten"][hh_typ_string_lookup] - ), - } - - for input_col, col_type in dt.flatten_to_qual_names(TYPES_INPUT_VARIABLES).items(): - if input_col not in df: - if input_col in default_values: - df[input_col] = default_values[input_col] - else: - if col_type == bool: - df[input_col] = False - elif col_type == int: - df[input_col] = 0 - elif col_type == float: - df[input_col] = 0.0 - else: - raise ValueError(f"Column type {col_type} not yet supported.") - - return df - - -def create_hh_typ_string(n_adults, n_children): - return f"{'single' if n_adults == 1 else 'couple'}_{n_children}_children" diff --git a/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml b/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml deleted file mode 100644 index 39c5a49a56..0000000000 --- a/src/_gettsim/synthetic_data/bedarfsgemeinschaften.yaml +++ /dev/null @@ -1,79 +0,0 @@ ---- -wohnfläche: - name: - de: Durchschnittliche Wohnfläche - en: Average Appartment Size - description: - de: >- - Durchschnittliche Wohnfläche pro SGB II - Bedarfsgemeinschaft - en: >- - Average Appartement Size of households living from unemployment benefit - unit: Square Meter - 2018-01-01: - single_0_children: 44 - single_1_children: 63 - single_2_children: 74 - couple_0_children: 63 - couple_1_children: 70 - couple_2_children: 77 - reference: >- - statistik.arbeitsagentur.de -- Wohn- und Wohnkostensituation nach Typ der - Bedarfsgemeinschaft, Januar 2018 - 2019-01-01: - single_0_children: 45 - single_1_children: 62 - single_2_children: 73 - couple_0_children: 63 - couple_1_children: 69 - couple_2_children: 77 - reference: >- - statistik.arbeitsagentur.de -- Wohn- und Wohnkostensituation nach Typ der - Bedarfsgemeinschaft, Januar 2019 - 2020-01-01: - single_0_children: 45 - single_1_children: 62 - single_2_children: 73 - couple_0_children: 63 - couple_1_children: 70 - couple_2_children: 76 - reference: >- - statistik.arbeitsagentur.de -- Wohn- und Wohnkostensituation nach Typ der - Bedarfsgemeinschaft, Januar 2020 -bruttokaltmiete: - name: - de: Durchschnittliche Miete (Unterkunftskosten und Betriebskosten) - en: Average Rent - description: - de: Durchschnittliche Monatsmiete pro SGB II - Bedarfsgemeinschaft - en: Average Monthly rent of households living from unemployment benefit - unit: Euro - reference_period: Month - 2020-01-01: - single_0_children: 335 - single_1_children: 465 - single_2_children: 550 - couple_0_children: 449 - couple_1_children: 553 - couple_2_children: 629 - reference: >- - statistik.arbeitsagentur.de -- Wohn- und Wohnkostensituation nach Typ der - Bedarfsgemeinschaft, Januar 2020 -heizkosten: - name: - de: Durchschnittliche Heizkosten - en: Average Rent - description: - de: Durchschnittliche monatliche Heizkosten pro SGB II - Bedarfsgemeinschaft - en: Average Monthly heating cost of households living from unemployment benefit - unit: Euro - reference_period: Month - 2020-01-01: - single_0_children: 46 - single_1_children: 68 - single_2_children: 80 - couple_0_children: 68 - couple_1_children: 78 - couple_2_children: 87 - reference: >- - statistik.arbeitsagentur.de -- Wohn- und Wohnkostensituation nach Typ der - Bedarfsgemeinschaft, Januar 2020 diff --git a/src/_gettsim_tests/test_synthetic.py b/src/_gettsim_tests/test_synthetic.py deleted file mode 100644 index d310ae570e..0000000000 --- a/src/_gettsim_tests/test_synthetic.py +++ /dev/null @@ -1,353 +0,0 @@ -from __future__ import annotations - -import numpy -import pandas as pd -import pytest - -from _gettsim.synthetic import create_synthetic_data -from ttsim import compute_taxes_and_transfers, set_up_policy_environment - - -@pytest.fixture -def synthetic_data_with_defaults(): - return create_synthetic_data() - - -@pytest.fixture -def synthetic_data_couple_with_children(): - return create_synthetic_data(n_adults=2, n_children=2) - - -@pytest.fixture -def synthetic_data_alleinerziehend(): - return create_synthetic_data(n_adults=1, n_children=1) - - -@pytest.fixture -def synthetic_data_no_children(): - return create_synthetic_data(n_adults=2, n_children=0) - - -@pytest.fixture -def synthetic_data_spec_variables(): - df = create_synthetic_data( - n_adults=2, - n_children=1, - specs_constant_over_households={ - "alter": [50, 30, 5], - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ - 1000, - 2000, - 0, - ], - }, - ) - return df - - -@pytest.fixture -def synthetic_data_spec_heterogeneous_married(): - df = create_synthetic_data( - n_adults=2, - n_children=1, - adults_married=True, - specs_constant_over_households={"alter": [50, 30, 5]}, - specs_heterogeneous={ - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ - [i / 2, i / 2, 0] for i in range(0, 1001, 100) - ] - }, - ) - return df - - -@pytest.fixture -def synthetic_data_spec_heterogeneous_not_married(): - df = create_synthetic_data( - n_adults=2, - n_children=1, - adults_married=False, - specs_constant_over_households={"alter": [50, 30, 5]}, - specs_heterogeneous={ - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ - [i / 2, i / 2, 0] for i in range(0, 1001, 100) - ] - }, - ) - return df - - -synthetic_data_fixtures_not_heterogeneous = [ - ("synthetic_data_with_defaults"), - ("synthetic_data_couple_with_children"), - ("synthetic_data_spec_variables"), -] - -synthetic_data_fixtures = [ - *synthetic_data_fixtures_not_heterogeneous, - "synthetic_data_spec_heterogeneous_married", - "synthetic_data_spec_heterogeneous_not_married", -] - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "df", - synthetic_data_fixtures, -) -def test_positive_rent(df, request): - df = request.getfixturevalue(df) - assert df["wohnen__bruttokaltmiete_m_hh"].min() > 0 - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "df", - synthetic_data_fixtures, -) -def test_no_nans(df, request): - df = request.getfixturevalue(df) - assert df["wohnen__bruttokaltmiete_m_hh"].notna().all().all() - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "df", - synthetic_data_fixtures_not_heterogeneous, -) -def test_unique_p_id(df, request): - df = request.getfixturevalue(df) - assert df["p_id"].is_unique - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "df", - synthetic_data_fixtures_not_heterogeneous, -) -def test_constant_hh_id(df, request): - df = request.getfixturevalue(df) - assert (df["hh_id"].max() == df["hh_id"]).all() - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "df, exp_n_rows", - [ - ("synthetic_data_with_defaults", 1), - ("synthetic_data_couple_with_children", 4), - ("synthetic_data_spec_variables", 3), - ("synthetic_data_spec_heterogeneous_married", 33), - ], -) -def test_correct_size(df, exp_n_rows, request): - df = request.getfixturevalue(df) - assert df.shape[0] == exp_n_rows - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -def test_alleinerziehend(synthetic_data_alleinerziehend): - pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["alleinerz"], - pd.Series([True, False], name="alleinerz"), - ) - pd.testing.assert_series_equal( - synthetic_data_alleinerziehend["einkommensteuer__gemeinsam_veranlagt"], - pd.Series([False, False], name="einkommensteuer__gemeinsam_veranlagt"), - ) - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "col, expected", - [ - ("alter", [50, 30, 5]), - ( - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", - [1000, 2000, 0], - ), - ], -) -def test_specs_constant_over_households(col, expected, synthetic_data_spec_variables): - pd.testing.assert_series_equal( - synthetic_data_spec_variables[col], pd.Series(expected, name=col) - ) - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "col, expected", - [ - ("alter", [50, 30, 5] * 11), - ( - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m", - numpy.concatenate([[i / 2, i / 2, 0] for i in range(0, 1001, 100)]), - ), - ( - "einkommensteuer__gemeinsam_veranlagt", - [True, True, False] * 11, - ), - ], -) -def test_specs_heterogeneous(col, expected, synthetic_data_spec_heterogeneous_married): - pd.testing.assert_series_equal( - synthetic_data_spec_heterogeneous_married[col], pd.Series(expected, name=col) - ) - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "n_adults, n_children, specs_constant_over_households," - " specs_heterogeneous, expectation", - [ - (0, 2, None, None, pytest.raises(ValueError, match="'n_adults' must be")), - (3, 2, None, None, pytest.raises(ValueError, match="'n_adults' must be")), - (2, 11, None, None, pytest.raises(ValueError, match="'n_children' must be")), - ( - 2, - 0, - {"alter": [30]}, - None, - pytest.raises(ValueError, match="Length of"), - ), - ( - 2, - 0, - None, - { - "alter": [[30, 20], [40, 30]], - "einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m": [ - [300, 200] - ], - }, - pytest.raises(ValueError, match="Length of"), - ), - ], -) -def test_fail_if_functions_and_columns_overlap( - n_adults, - n_children, - specs_constant_over_households, - specs_heterogeneous, - expectation, -): - with expectation: - create_synthetic_data( - n_adults=n_adults, - n_children=n_children, - specs_constant_over_households=specs_constant_over_households, - specs_heterogeneous=specs_heterogeneous, - ) - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "fixture, expected", - [ - ( - "synthetic_data_spec_heterogeneous_not_married", - { - "p_id": list(range(33)), - "familie__p_id_elternteil_1": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "familie__p_id_elternteil_2": [ - -1 if i % 3 != 2 else i - 1 for i in range(33) - ], - "kindergeld__p_id_empfänger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "erziehungsgeld__p_id_empfänger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "familie__p_id_ehepartner": [-1 for i in range(33)], - "arbeitslosengeld_2__p_id_einstandspartner": [ - i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 - for i in range(33) - ], - "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - }, - ), - ( - "synthetic_data_spec_heterogeneous_married", - { - "p_id": list(range(33)), - "familie__p_id_elternteil_1": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "familie__p_id_elternteil_2": [ - -1 if i % 3 != 2 else i - 1 for i in range(33) - ], - "kindergeld__p_id_empfänger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "erziehungsgeld__p_id_empfänger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - "familie__p_id_ehepartner": [ - i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 - for i in range(33) - ], - "arbeitslosengeld_2__p_id_einstandspartner": [ - i + 1 if i % 3 == 0 else i - 1 if i % 3 == 1 else -1 - for i in range(33) - ], - "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ - -1 if i % 3 != 2 else i - 2 for i in range(33) - ], - }, - ), - ( - "synthetic_data_alleinerziehend", - { - "p_id": [0, 1], - "familie__p_id_elternteil_1": [-1, 0], - "familie__p_id_elternteil_2": [-1, -1], - "kindergeld__p_id_empfänger": [-1, 0], - "erziehungsgeld__p_id_empfänger": [-1, 0], - "familie__p_id_ehepartner": [-1, -1], - "arbeitslosengeld_2__p_id_einstandspartner": [-1, -1], - "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ - -1, - 0, - ], - }, - ), - ( - "synthetic_data_no_children", - { - "p_id": [0, 1], - "familie__p_id_elternteil_1": [-1, -1], - "familie__p_id_elternteil_2": [-1, -1], - "kindergeld__p_id_empfänger": [-1, -1], - "erziehungsgeld__p_id_empfänger": [-1, -1], - "familie__p_id_ehepartner": [1, 0], - "arbeitslosengeld_2__p_id_einstandspartner": [1, 0], - "einkommensteuer__abzüge__p_id_betreuungskostenträger": [ - -1, - -1, - ], - }, - ), - ], -) -def test_p_id_groups(fixture, expected, request): - df = request.getfixturevalue(fixture) - for col, values in expected.items(): - pd.testing.assert_series_equal(df[col], pd.Series(values, name=col)) - - -@pytest.mark.xfail(reason="Synthetic module was not updated to the new interface.") -@pytest.mark.parametrize( - "fixture, policy_date", - [("synthetic_data_couple_with_children", y) for y in range(2015, 2024)], -) -def test_default_targets(fixture, policy_date, request): - environment = set_up_policy_environment(policy_date) - compute_taxes_and_transfers( - data_tree=request.getfixturevalue(fixture), - targets_tree=fixme, - environment=environment, - ) diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index a0421221e3..fdab109f16 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -17,7 +17,6 @@ import pytest -from _gettsim.synthetic import create_synthetic_data from _gettsim_tests import TEST_DIR from ttsim import ( FunctionsAndColumnsOverlapWarning, @@ -55,7 +54,6 @@ def test(*args: Any) -> None: "PolicyFunction", "__version__", "compute_taxes_and_transfers", - "create_synthetic_data", "group_creation_function", "plot_dag", "policy_function", From be7114762a6870745a8d7c923ed8d85c3bd2b596 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 2 Jun 2025 16:32:20 +0200 Subject: [PATCH 035/109] Unify parsing of params (#897) Unify the parsing of parameters, as outlined in GEP 6. - [x] Basic structure for METTSIM - Add `TTSIMParam` dataclass including basic subclasses (`ScalarTTSIMParam`, `DictTTSIMParam`). We won't use these too much, but they will be very helpful for documentation etc. - Clean up many inconsistencies in params definition - Put infrastructure into place for METTSIM to use the new machinery - [x] Add `piecewise_constant`, `piecewise_linear`, `piecewise_quadratic` tests to METTSIM *(I think we want `piecewise_constant` just to have a unified interface)* - [x] Implement automatic parsing of piecewise param types - [x] Add `CustomTTSIMParam` test to METTSIM - [x] Add machinery to distinguish between different types of outputs of `policy_functions` 1. Data columns, i.e., arrays of the same length as `p_id` 2. Scalars and other outputs that are purely based on the TTSIM parameters. When non-tree output (typically a DataFrame) is asked for, provide a good error message in case anything but a scalar is returned (ideally do that already based on the type annotations, before doing anything). This will settle #666/#896 and the [discussion in #898](https://github.com/iza-institute-of-labor-economics/gettsim/pull/898#discussion_r2078450313) for good. - [x] Convert GETTSIM parameter files, part 1: Rename parameters within the current structure, add `type` property everywhere, make sure they conform to requirements (e.g., homogeneity of `type: dict`s) - [x] Convert GETTSIM parameter files, part 2: Break up files one-by-one and use new infrastructure. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: Max Jahn <max.jahn45@gmail.com> --- .pre-commit-config.yaml | 2 +- CHANGES.md | 4 +- docs/geps/gep-01.md | 4 +- docs/geps/gep-03.md | 20 +- docs/gettsim_objects/params.md | 90 - outdated_docs/tutorials/advanced_usage.ipynb | 4 +- outdated_docs/tutorials/debugging.ipynb | 6 +- outdated_docs/tutorials/parameters.ipynb | 2 +- .../tutorials/policy_functions.ipynb | 4 +- pixi.lock | 3004 +++++++++-------- pyproject.toml | 39 +- src/_gettsim/__init__.py | 1 + src/_gettsim/arbeitslosengeld_2/__init__.py | 1 + .../arbeitslosengeld_2/aggregations.py | 28 +- .../arbeitslosengeld_2/arbeitslosengeld_2.py | 46 +- src/_gettsim/arbeitslosengeld_2/bedarfe.yaml | 403 +++ src/_gettsim/arbeitslosengeld_2/einkommen.py | 229 +- .../freibetr\303\244ge.yaml" | 257 ++ .../freibetr\303\244ge_verm\303\266gen.py" | 158 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 2 + .../kindergeld\303\274bertrag.py" | 105 +- .../kosten_der_unterkunft.yaml | 76 + .../arbeitslosengeld_2/regelbedarf.py | 545 +-- src/_gettsim/config.py | 58 +- src/_gettsim/einkommensteuer/__init__.py | 1 + .../abgeltungssteuer/__init__.py | 1 + .../abgeltungssteuer/abgeltungssteuer.py | 50 +- .../abgeltungssteuer/abgeltungssteuer.yaml} | 9 +- .../abz\303\274ge/__init__.py" | 1 + .../abz\303\274ge/abz\303\274ge.py" | 56 - .../abz\303\274ge/alleinerziehend.py" | 55 +- .../abz\303\274ge/alleinerziehend.yaml" | 47 + .../einkommensteuer/abz\303\274ge/alter.py" | 152 + .../einkommensteuer/abz\303\274ge/alter.yaml" | 168 + .../abz\303\274ge/altersfreibetrag.py" | 132 - .../abz\303\274ge/behinderung.py" | 21 + .../abz\303\274ge/behinderung.yaml" | 105 + .../einkommensteuer/abz\303\274ge/betrag.py" | 25 + .../einkommensteuer/abz\303\274ge/inputs.py" | 6 +- .../pauschbetrag_behinderung.py" | 37 - .../abz\303\274ge/sonderausgaben.py" | 104 +- .../abz\303\274ge/sonderausgaben.yaml" | 34 + .../abz\303\274ge/vorsorge.py" | 235 +- .../abz\303\274ge/vorsorge.yaml" | 196 ++ src/_gettsim/einkommensteuer/einkommen.py | 2 + .../einkommensteuer/einkommensteuer.py | 216 +- .../einkommensteuertarif.yaml} | 86 +- .../aus_forst_und_landwirtschaft/__init__.py" | 1 + .../aus_forst_und_landwirtschaft/inputs.py" | 2 + .../aus_gewerbebetrieb/__init__.py" | 1 + .../aus_gewerbebetrieb/inputs.py" | 2 + .../aus_kapitalverm\303\266gen/__init__.py" | 1 + .../aus_kapitalverm\303\266gen.py" | 37 +- .../freibetr\303\244ge.yaml" | 74 + .../aus_kapitalverm\303\266gen/inputs.py" | 2 + .../__init__.py" | 1 + ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 40 +- .../inputs.py" | 2 + .../werbungskostenpauschale.yaml" | 29 + .../__init__.py" | 1 + .../inputs.py" | 2 + .../__init__.py" | 1 + .../aus_vermietung_und_verpachtung/inputs.py" | 2 + .../eink\303\274nfte/eink\303\274nfte.py" | 8 +- .../eink\303\274nfte/inputs.py" | 2 + .../eink\303\274nfte/sonstige/__init__.py" | 1 + .../eink\303\274nfte/sonstige/inputs.py" | 2 + .../eink\303\274nfte/sonstige/rente.yaml" | 40 + .../eink\303\274nfte/sonstige/sonstige.py" | 19 +- src/_gettsim/einkommensteuer/inputs.py | 2 + .../einkommensteuer/kinderfreibetrag.py | 90 +- .../einkommensteuer/kinderfreibetrag.yaml | 102 + .../zu_versteuerndes_einkommen.py | 64 +- src/_gettsim/elterngeld/__init__.py | 1 + src/_gettsim/elterngeld/anspruch.yaml | 86 + src/_gettsim/elterngeld/boni.yaml | 61 + src/_gettsim/elterngeld/einkommen.py | 121 +- src/_gettsim/elterngeld/elterngeld.py | 234 +- src/_gettsim/elterngeld/formel.yaml | 134 + src/_gettsim/elterngeld/geschwisterbonus.py | 80 +- src/_gettsim/elterngeld/inputs.py | 2 + src/_gettsim/erziehungsgeld/__init__.py | 1 + src/_gettsim/erziehungsgeld/anspruch.yaml | 93 + src/_gettsim/erziehungsgeld/erziehungsgeld.py | 346 +- src/_gettsim/erziehungsgeld/formel.yaml | 117 + src/_gettsim/erziehungsgeld/inputs.py | 2 + src/_gettsim/familie/familie.py | 104 +- src/_gettsim/familie/inputs.py | 2 + src/_gettsim/grundsicherung/__init__.py | 1 + .../grundsicherung/im_alter/__init__.py | 1 + .../grundsicherung/im_alter/einkommen.py | 187 +- .../freibetr\303\244ge_und_mehrbedarfe.yaml" | 109 +- .../grundsicherung/im_alter/im_alter.py | 98 +- src/_gettsim/household_characteristics.py | 16 +- src/_gettsim/ids.py | 324 +- src/_gettsim/individual_characteristics.py | 54 +- src/_gettsim/inputs.py | 9 + src/_gettsim/interface.py | 131 +- src/_gettsim/kinderbonus/__init__.py | 1 + src/_gettsim/kinderbonus/kinderbonus.py | 21 +- src/_gettsim/kinderbonus/kinderbonus.yaml | 22 + src/_gettsim/kindergeld/__init__.py | 1 + src/_gettsim/kindergeld/inputs.py | 2 + src/_gettsim/kindergeld/kindergeld.py | 180 +- .../kindergeld.yaml | 108 +- src/_gettsim/kinderzuschlag/__init__.py | 1 + src/_gettsim/kinderzuschlag/einkommen.py | 383 +-- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 262 +- .../kinderzuschlag.yaml} | 403 ++- src/_gettsim/lohnsteuer/__init__.py | 1 + src/_gettsim/lohnsteuer/einkommen.py | 336 +- .../lohnsteuer/einkommensgrenzwerte.yaml | 93 + src/_gettsim/lohnsteuer/inputs.py | 2 + src/_gettsim/lohnsteuer/lohnsteuer.py | 217 +- src/_gettsim/lohnsteuer/minijob.yaml | 20 + src/_gettsim/lohnsteuer/vorsorge.yaml | 80 + src/_gettsim/param_types.py | 28 + src/_gettsim/parameters/arbeitsl_geld.yaml | 190 -- src/_gettsim/parameters/arbeitsl_geld_2.yaml | 725 ---- .../parameters/arbeitslosenversicherung.yaml | 62 - src/_gettsim/parameters/eink_st_abzuege.yaml | 753 ----- src/_gettsim/parameters/elterngeld.yaml | 242 -- src/_gettsim/parameters/erwerbsm_rente.yaml | 273 -- src/_gettsim/parameters/erziehungsgeld.yaml | 157 - .../geringf\303\274gige_einkommen.yaml" | 192 -- src/_gettsim/parameters/ges_krankenv.yaml | 432 --- src/_gettsim/parameters/ges_pflegev.yaml | 186 - src/_gettsim/parameters/ges_rente.yaml | 2447 -------------- src/_gettsim/parameters/ges_rentenv.yaml | 236 -- src/_gettsim/parameters/lohnst.yaml | 75 - src/_gettsim/parameters/unterhalt.yaml | 121 - .../solidarit\303\244tszuschlag/__init__.py" | 1 + .../solidarit\303\244tszuschlag.py" | 93 +- .../solidarit\303\244tszuschlag.yaml" | 42 +- src/_gettsim/sozialversicherung/__init__.py | 1 + .../arbeitslosen/__init__.py | 1 + .../arbeitslosen/anspruchsberechtigt.yaml | 99 + .../arbeitslosen/arbeitslosengeld.py | 165 +- .../arbeitslosen/beitrag/__init__.py | 1 + .../arbeitslosen/beitrag/beitrag.py | 219 +- .../arbeitslosen/beitrag/beitragssatz.yaml | 52 + .../arbeitslosen/betrag.yaml | 107 + .../sozialversicherung/arbeitslosen/inputs.py | 2 + .../sozialversicherung/beitr\303\244ge.py" | 51 +- .../geringf\303\274gig_besch\303\244ftigt.py" | 118 - .../sozialversicherung/kranken/__init__.py | 1 + .../kranken/beitrag/__init__.py | 1 + .../kranken/beitrag/beitrag.py | 310 +- .../beitrag/beitragsbemessungsgrenze.yaml | 140 + .../kranken/beitrag/beitragssatz.py | 370 +- .../kranken/beitrag/beitragssatz.yaml | 139 + .../kranken/beitrag/einkommen.py | 145 +- .../kranken/beitrag/inputs.py | 2 + .../kranken/beitrag/minijob.yaml | 24 + .../beitrag/selbstst\303\244ndige.yaml" | 175 + src/_gettsim/sozialversicherung/midijob.py | 190 +- src/_gettsim/sozialversicherung/midijob.yaml | 24 + .../sozialversicherung/mindestlohn.yaml | 42 + src/_gettsim/sozialversicherung/minijob.py | 64 + src/_gettsim/sozialversicherung/minijob.yaml | 98 + .../sozialversicherung/pflege/__init__.py | 1 + .../pflege/beitrag/__init__.py | 1 + .../pflege/beitrag/beitrag.py | 666 +--- .../pflege/beitrag/beitragssatz.py | 180 +- .../pflege/beitrag/beitragssatz.yaml | 89 + .../pflege/beitrag/inputs.py | 2 + .../regul\303\244r_besch\303\244ftigt.py" | 16 +- .../sozialversicherung/rente/__init__.py | 1 + .../rente/alter_bei_renteneintritt.py | 19 +- .../rente/altersrente/__init__.py | 1 + .../rente/altersrente/altersgrenzen.py | 193 +- .../rente/altersrente/altersrente.py | 556 +-- .../besonders_langj\303\244hrig/__init__.py" | 1 + .../altersgrenze.yaml" | 113 + .../besonders_langj\303\244hrig.py" | 89 +- .../rente/altersrente/entgeltpunkte.py | 78 + .../f\303\274r_frauen/__init__.py" | 1 + .../f\303\274r_frauen/altersgrenze.yaml" | 588 ++++ .../f\303\274r_frauen/anspruch.yaml" | 42 + .../f\303\274r_frauen/f\303\274r_frauen.py" | 223 +- .../altersrente/f\303\274r_frauen/inputs.py" | 2 + .../altersrente/hinzuverdienstgrenzen.py | 158 + .../altersrente/hinzuverdienstgrenzen.yaml | 47 + .../rente/altersrente/inputs.py | 6 +- .../langj\303\244hrig/__init__.py" | 1 + .../langj\303\244hrig/altersgrenze.yaml" | 358 ++ .../langj\303\244hrig/langj\303\244hrig.py" | 234 +- .../altersrente/regelaltersrente/__init__.py | 1 + .../regelaltersrente/altersgrenze.yaml | 115 + .../regelaltersrente/regelaltersrente.py | 83 +- .../rente/altersrente/rentenformel.yaml | 397 +++ .../wegen_arbeitslosigkeit/__init__.py | 1 + .../wegen_arbeitslosigkeit/altersgrenze.yaml | 1081 ++++++ .../wegen_arbeitslosigkeit/anspruch.yaml | 16 + .../wegen_arbeitslosigkeit/inputs.py | 8 +- .../wegen_arbeitslosigkeit.py | 428 +-- .../rente/beitrag/__init__.py | 1 + .../rente/beitrag/beitrag.py | 312 +- .../beitrag/beitragsbemessungsgrenze.yaml | 161 + .../rente/beitrag/beitragssatz.yaml | 53 + .../rente/beitrag/minijob.yaml | 25 + .../rente/beitrag/rentenanpassungsformel.yaml | 220 ++ .../rente/erwerbsminderung/__init__.py | 1 + .../rente/erwerbsminderung/altersgrenze.yaml | 134 + .../erwerbsminderung/erwerbsminderung.py | 478 +-- .../rente/erwerbsminderung/formel.yaml | 308 ++ .../rente/erwerbsminderung/inputs.py | 4 +- .../rente/erwerbsminderung/wartezeit.yaml | 21 + .../rente/grundrente/__init__.py | 1 + .../rente/grundrente/einkommen.yaml | 57 + .../rente/grundrente/grundrente.py | 242 +- .../rente/grundrente/inputs.py | 2 + .../rente/grundrente/rentenformel.yaml | 50 + .../rente/grundrente/wartezeit.yaml | 21 + .../sozialversicherung/rente/inputs.py | 17 +- .../sozialversicherung/rente/wartezeit.py | 178 +- .../sozialversicherung/rente/wartezeit.yaml | 39 + src/_gettsim/unterhalt/__init__.py | 1 + src/_gettsim/unterhalt/inputs.py | 2 + src/_gettsim/unterhalt/unterhalt.py | 27 +- src/_gettsim/unterhalt/unterhalt.yaml | 25 + src/_gettsim/unterhaltsvorschuss/__init__.py | 1 + .../unterhaltsvorschuss.py | 375 +- .../unterhaltsvorschuss.yaml} | 164 +- .../vorrangpr\303\274fungen/__init__.py" | 1 + .../vorrangpr\303\274fungen.py" | 49 +- src/_gettsim/wohnen/inputs.py | 2 + src/_gettsim/wohngeld/__init__.py | 1 + src/_gettsim/wohngeld/einkommen.py | 274 +- src/_gettsim/wohngeld/einkommen.yaml | 244 ++ src/_gettsim/wohngeld/inputs.py | 2 + src/_gettsim/wohngeld/miete.py | 429 +-- .../wohngeld.yaml => wohngeld/miete.yaml} | 880 +---- src/_gettsim/wohngeld/voraussetzungen.py | 195 +- src/_gettsim/wohngeld/voraussetzungen.yaml | 19 + src/_gettsim/wohngeld/wohngeld.py | 183 +- src/_gettsim/wohngeld/wohngeld.yaml | 589 ++++ .../fg_id_not_sensitive_to_order.yaml | 24 +- .../2023-01-01/hh_id_25.yaml | 6 +- .../2023-07-01/hh_id_23.yaml | 2 +- .../kost_unterk_multiple_bg_in_hh.yaml | 8 +- .../2010-01-01/hh_id_1.yaml | 4 +- .../2010-01-01/hh_id_2.yaml | 4 +- .../2010-01-01/hh_id_3.yaml | 4 +- .../2010-01-01/hh_id_4.yaml | 4 +- .../2010-01-01/hh_id_5.yaml | 4 +- .../2015-01-01/hh_id_16.yaml | 4 +- .../2015-01-01/hh_id_17.yaml | 4 +- .../2017-01-01/hh_id_18.yaml | 4 +- .../2018-01-01/hh_id_10.yaml | 4 +- .../2018-01-01/hh_id_11.yaml | 4 +- .../2018-01-01/hh_id_12.yaml | 4 +- .../2018-01-01/hh_id_7.yaml | 4 +- .../2018-01-01/hh_id_8.yaml | 4 +- .../2018-01-01/hh_id_9.yaml | 4 +- .../2019-01-01/hh_id_13.yaml | 4 +- .../2020-01-01/hh_id_14.yaml | 4 +- .../2020-01-01/hh_id_19.yaml | 6 +- .../2020-01-01/hh_id_20.yaml | 6 +- .../elterngeld/2017-01-01/hh_id_2.yaml | 2 + .../elterngeld/2018-01-01/hh_id_1.yaml | 2 + .../elterngeld/2018-01-01/hh_id_2.yaml | 3 + .../elterngeld/2018-01-01/hh_id_3.yaml | 3 + .../elterngeld/2018-01-01/hh_id_4.yaml | 3 + .../elterngeld/2018-01-01/hh_id_6.yaml | 2 + .../elterngeld/2019-01-01/hh_id_1.yaml | 3 + .../elterngeld/2019-01-01/hh_id_3.yaml | 4 + .../elterngeld/2019-01-01/hh_id_5.yaml | 3 + .../elterngeld/2019-01-01/hh_id_6.yaml | 4 + .../elterngeld/2019-01-01/hh_id_7.yaml | 4 + .../elterngeld/2019-01-01/hh_id_8.yaml | 5 + .../2024-01-01/income_during_elterngeld.yaml | 4 + .../2024-01-01/maximum_elterngeld.yaml | 3 + .../2024-01-01/minimum_elterngeld.yaml | 3 + .../net_income_before_birth_1000.yaml | 4 + .../net_income_before_birth_790.yaml | 4 + .../2024-04-01/taxable_income_low.yaml | 4 + .../2024-04-01/taxable_income_too_high.yaml | 4 + .../alleinerz_one_child_budgetsatz.yaml | 3 + ...inerz_one_child_regelsatz_high_income.yaml | 3 + ...einerz_one_child_regelsatz_low_income.yaml | 3 + ...ried_one_child_budgetsatz_high_income.yaml | 4 + ...rried_one_child_budgetsatz_low_income.yaml | 4 + .../married_one_child_regelsatz.yaml | 4 + ..._budgetsatz_and_regelsatz_high_income.yaml | 5 + ...n_budgetsatz_and_regelsatz_low_income.yaml | 5 + .../2007-01-01/born_after_abolishment.yaml | 3 + ..._budgetsatz_and_regelsatz_high_income.yaml | 5 + ...n_budgetsatz_and_regelsatz_low_income.yaml | 5 + .../2019-01-01/hh_id_1.yaml | 4 +- .../2019-01-01/hh_id_2.yaml | 4 +- .../2019-01-01/hh_id_3.yaml | 4 +- .../2019-01-01/hh_id_4.yaml | 4 +- .../2019-01-01/hh_id_5.yaml | 4 +- .../2019-01-01/hh_id_6.yaml | 4 +- .../2019-01-01/hh_id_7.yaml | 4 +- .../2019-01-01/hh_id_8.yaml | 4 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 2 +- ...verheiratet_1_kind_anderer_verwandter.yaml | 2 +- ...t_1_kind_bis24_1_kind_\303\274ber_24.yaml" | 2 +- ...eiratet_1_kind_gro\303\237elternteil.yaml" | 2 +- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 4 +- ...eltern_verheiratet_1_kind_verheiratet.yaml | 4 +- ...eltern_verheiratet_kinder_verheiratet.yaml | 4 +- .../2023-01-01/eltern_viele_kinder.yaml | 10 +- .../mehrere_haushalte_durchmischt.yaml | 28 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 2 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 2 +- ...her_teilhaushalt_mehrere_generationen.yaml | 6 +- ...licher_teilhaushalt_mehrere_haushalte.yaml | 16 +- .../im_alter/2017-07-01/hh_id_13.yaml | 3 + .../im_alter/2017-07-01/hh_id_16.yaml | 2 + .../im_alter/2017-07-01/hh_id_17.yaml | 2 + .../im_alter/2017-07-01/hh_id_6.yaml | 3 + .../im_alter/2018-07-01/hh_id_12.yaml | 2 + .../im_alter/2018-07-01/hh_id_20.yaml | 2 + .../im_alter/2018-07-01/hh_id_22.yaml | 2 + .../im_alter/2018-07-01/hh_id_3.yaml | 2 + .../im_alter/2020-07-01/hh_id_18.yaml | 2 + .../im_alter/2020-07-01/hh_id_19.yaml | 3 + .../im_alter/2021-07-01/hh_id_1.yaml | 3 + .../im_alter/2021-07-01/hh_id_14.yaml | 2 + .../im_alter/2021-07-01/hh_id_15.yaml | 2 + .../im_alter/2021-07-01/hh_id_2.yaml | 2 + .../im_alter/2021-07-01/hh_id_21.yaml | 3 + .../im_alter/2021-07-01/hh_id_23.yaml | 3 + .../im_alter/2021-07-01/hh_id_5.yaml | 2 + .../im_alter/2021-07-01/hh_id_7.yaml | 2 + .../im_alter/2021-07-01/hh_id_9.yaml | 3 + .../im_alter/2022-07-01/hh_id_10.yaml | 2 + .../im_alter/2022-07-01/hh_id_11.yaml | 2 + .../im_alter/2022-07-01/hh_id_24.yaml | 3 + .../im_alter/2022-07-01/hh_id_25.yaml | 3 + .../im_alter/2022-07-01/hh_id_4.yaml | 3 + .../im_alter/2022-07-01/hh_id_8.yaml | 2 + .../2023-01-01/test_family_high_wealth.yaml | 2 +- .../test_higher_wealth_exemptions.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1045.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1051.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1081.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_121.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1214.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1219.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1435.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1462.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1476.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1555.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1627.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1793.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1796.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1915.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1982.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2042.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2174.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2224.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2451.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2552.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2593.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2601.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2639.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2726.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2732.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2861.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2924.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_470.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_561.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_72.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_736.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_76.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_769.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_786.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_790.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_802.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_830.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_856.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_857.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_891.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_925.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1000.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1086.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1115.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1133.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1175.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_123.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1281.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1335.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1367.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1700.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1822.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1958.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2065.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2220.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2289.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2358.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2396.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2645.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2693.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2724.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2744.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2932.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2961.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_307.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_435.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_444.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_699.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_779.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_807.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_821.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_898.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_950.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_965.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_968.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1088.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1164.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1279.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_146.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1503.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1549.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1615.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1841.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1866.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1878.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1923.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1945.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2005.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2177.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2226.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2293.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2512.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2677.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2918.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2934.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2956.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2974.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2991.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_30.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_416.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_455.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_496.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_506.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_528.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_568.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_575.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_588.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_659.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_743.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_910.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_933.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_996.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1159.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1213.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_130.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1314.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_152.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1632.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1727.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_174.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1786.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1802.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_184.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1935.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2098.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2156.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2186.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2395.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2491.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2575.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2649.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2720.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2828.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2999.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_315.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_375.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_559.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_624.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_791.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_796.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_81.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_851.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_947.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_959.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_98.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1014.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1093.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1098.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1210.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1354.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1629.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1695.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1709.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1825.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1846.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2025.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2070.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2159.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2204.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2375.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2393.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2469.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2516.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_265.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2708.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2736.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2760.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2818.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_286.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2900.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2942.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_317.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_331.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_396.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_420.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_605.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_646.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_65.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_698.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_710.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_715.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_809.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_816.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_832.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_879.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_882.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_978.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1015.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1096.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1118.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1273.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_13.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1310.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1378.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1417.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1468.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_160.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_161.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1767.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1775.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1790.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1928.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2106.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2182.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2184.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2230.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2320.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2389.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2527.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2562.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2587.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2888.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2898.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2920.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2953.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2998.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_367.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_409.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_481.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_513.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_630.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_648.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_70.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_901.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_926.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1186.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1204.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1237.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1255.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1380.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1385.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1402.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_145.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1538.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1610.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_165.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1714.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1762.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1853.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1908.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1999.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2022.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2208.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_225.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2258.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2295.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_238.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2400.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2416.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2476.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_262.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2766.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2782.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2836.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2886.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2945.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_299.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_318.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_321.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_33.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_479.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_519.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_522.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_618.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_620.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_651.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_738.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_761.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_788.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_810.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_864.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_867.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_883.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_885.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_948.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_963.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_963.yaml | 2 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 1 - .../skip_einkommen_in_gleitzone.yaml" | 109 + .../2025-01-01/einkommen_in_gleitzone.yaml" | 97 + .../2022-01-01/skip_minijobgrenze.yaml" | 4 +- .../2023-01-01/minijobgrenze.yaml" | 21 + .../2023-01-01/skip_minijobgrenze.yaml" | 16 - .../2024-01-01/minijobgrenze.yaml" | 21 + .../2024-01-01/skip_minijobgrenze.yaml" | 16 - .../1989-01-01/cohort_1936_female.yaml | 2 +- .../1989-01-01/cohort_1936_male.yaml | 2 +- .../1989-01-01/cohort_1953_female.yaml | 2 +- .../1989-01-01/cohort_1953_male.yaml | 2 +- .../1992-01-01/cohort_1936_female.yaml | 2 +- .../1992-01-01/cohort_1936_male.yaml | 2 +- .../1992-01-01/cohort_1937_female.yaml | 2 +- .../1992-01-01/cohort_1937_male.yaml | 2 +- .../1992-01-01/cohort_1938_female.yaml | 2 +- .../1992-01-01/cohort_1938_male.yaml | 2 +- .../1992-01-01/cohort_1939_female.yaml | 2 +- .../1992-01-01/cohort_1939_male.yaml | 2 +- .../1992-01-01/cohort_1940_female.yaml | 2 +- .../1992-01-01/cohort_1940_male.yaml | 2 +- .../1992-01-01/cohort_1941_female.yaml | 2 +- .../1992-01-01/cohort_1941_male.yaml | 2 +- .../1992-01-01/cohort_1942_female.yaml | 2 +- .../1992-01-01/cohort_1942_male.yaml | 2 +- .../1992-01-01/cohort_1943_female.yaml | 2 +- .../1992-01-01/cohort_1943_male.yaml | 2 +- .../1992-01-01/cohort_1944_female.yaml | 2 +- .../1992-01-01/cohort_1944_male.yaml | 2 +- .../1992-01-01/cohort_1945_female.yaml | 2 +- .../1992-01-01/cohort_1945_male.yaml | 2 +- .../1992-01-01/cohort_1946_female.yaml | 2 +- .../1992-01-01/cohort_1946_male.yaml | 2 +- .../1992-01-01/cohort_1947_female.yaml | 2 +- .../1992-01-01/cohort_1947_male.yaml | 2 +- .../1992-01-01/cohort_1948_female.yaml | 2 +- .../1992-01-01/cohort_1948_male.yaml | 2 +- .../1992-01-01/cohort_1949_female.yaml | 2 +- .../1992-01-01/cohort_1949_male.yaml | 2 +- .../1992-01-01/cohort_1950_female.yaml | 2 +- .../1992-01-01/cohort_1950_male.yaml | 2 +- .../1992-01-01/cohort_1951_female.yaml | 2 +- .../1992-01-01/cohort_1951_male.yaml | 2 +- .../1992-01-01/cohort_1952_female.yaml | 2 +- .../1992-01-01/cohort_1952_male.yaml | 2 +- .../1992-01-01/cohort_1953_female.yaml | 2 +- .../1992-01-01/cohort_1953_male.yaml | 2 +- .../1996-07-29/cohort_1936_female.yaml | 2 +- .../1996-07-29/cohort_1936_male.yaml | 2 +- .../1996-07-29/cohort_1937_female.yaml | 2 +- .../1996-07-29/cohort_1937_male.yaml | 2 +- .../1996-07-29/cohort_1938_female.yaml | 2 +- .../1996-07-29/cohort_1938_male.yaml | 2 +- .../1996-07-29/cohort_1939_female.yaml | 2 +- .../1996-07-29/cohort_1939_male.yaml | 2 +- .../1996-07-29/cohort_1940_female.yaml | 2 +- .../1996-07-29/cohort_1940_male.yaml | 2 +- .../1996-07-29/cohort_1941_female.yaml | 2 +- .../1996-07-29/cohort_1941_male.yaml | 2 +- .../1996-07-29/cohort_1942_female.yaml | 2 +- .../1996-07-29/cohort_1942_male.yaml | 2 +- .../1996-07-29/cohort_1943_female.yaml | 2 +- .../1996-07-29/cohort_1943_male.yaml | 2 +- .../1996-07-29/cohort_1944_female.yaml | 2 +- .../1996-07-29/cohort_1944_male.yaml | 2 +- .../1996-07-29/cohort_1945_female.yaml | 2 +- .../1996-07-29/cohort_1945_male.yaml | 2 +- .../1996-07-29/cohort_1946_female.yaml | 2 +- .../1996-07-29/cohort_1946_male.yaml | 2 +- .../1996-07-29/cohort_1947_female.yaml | 2 +- .../1996-07-29/cohort_1947_male.yaml | 2 +- .../1996-07-29/cohort_1948_female.yaml | 2 +- .../1996-07-29/cohort_1948_male.yaml | 2 +- .../1996-07-29/cohort_1949_female.yaml | 2 +- .../1996-07-29/cohort_1949_male.yaml | 2 +- .../1996-07-29/cohort_1950_female.yaml | 2 +- .../1996-07-29/cohort_1950_male.yaml | 2 +- .../1996-07-29/cohort_1951_female.yaml | 2 +- .../1996-07-29/cohort_1951_male.yaml | 2 +- .../1996-07-29/cohort_1952_female.yaml | 2 +- .../1996-07-29/cohort_1952_male.yaml | 2 +- .../1996-07-29/cohort_1953_female.yaml | 2 +- .../1996-07-29/cohort_1953_male.yaml | 2 +- .../2012-01-01/cohort_1936_female.yaml | 2 +- .../2012-01-01/cohort_1936_male.yaml | 2 +- .../2012-01-01/cohort_1937_female.yaml | 2 +- .../2012-01-01/cohort_1937_male.yaml | 2 +- .../2012-01-01/cohort_1938_female.yaml | 2 +- .../2012-01-01/cohort_1938_male.yaml | 2 +- .../2012-01-01/cohort_1939_female.yaml | 2 +- .../2012-01-01/cohort_1939_male.yaml | 2 +- .../2012-01-01/cohort_1940_female.yaml | 2 +- .../2012-01-01/cohort_1940_male.yaml | 2 +- .../2012-01-01/cohort_1941_female.yaml | 2 +- .../2012-01-01/cohort_1941_male.yaml | 2 +- .../2012-01-01/cohort_1942_female.yaml | 2 +- .../2012-01-01/cohort_1942_male.yaml | 2 +- .../2012-01-01/cohort_1943_female.yaml | 2 +- .../2012-01-01/cohort_1943_male.yaml | 2 +- .../2012-01-01/cohort_1944_female.yaml | 2 +- .../2012-01-01/cohort_1944_male.yaml | 2 +- .../2012-01-01/cohort_1945_female.yaml | 2 +- .../2012-01-01/cohort_1945_male.yaml | 2 +- .../2012-01-01/cohort_1946_female.yaml | 2 +- .../2012-01-01/cohort_1946_male.yaml | 2 +- .../2012-01-01/cohort_1947_female.yaml | 2 +- .../2012-01-01/cohort_1947_male.yaml | 2 +- .../2012-01-01/cohort_1948_female.yaml | 2 +- .../2012-01-01/cohort_1948_male.yaml | 2 +- .../2024-01-01/cohort_1946_female.yaml | 2 +- .../2024-01-01/cohort_1946_male.yaml | 2 +- .../2024-01-01/cohort_1947_female.yaml | 2 +- .../2024-01-01/cohort_1947_male.yaml | 2 +- .../2024-01-01/cohort_1948_female.yaml | 2 +- .../2024-01-01/cohort_1948_male.yaml | 2 +- .../2024-01-01/cohort_1949_female.yaml | 2 +- .../2024-01-01/cohort_1949_male.yaml | 2 +- .../2024-01-01/cohort_1950_female.yaml | 2 +- .../2024-01-01/cohort_1950_male.yaml | 2 +- .../2024-01-01/cohort_1951_female.yaml | 2 +- .../2024-01-01/cohort_1951_male.yaml | 2 +- .../2024-01-01/cohort_1952_female.yaml | 2 +- .../2024-01-01/cohort_1952_male.yaml | 2 +- .../2024-01-01/cohort_1953_female.yaml | 2 +- .../2024-01-01/cohort_1953_male.yaml | 2 +- .../2024-01-01/cohort_1954_female.yaml | 2 +- .../2024-01-01/cohort_1954_male.yaml | 2 +- .../2024-01-01/cohort_1955_female.yaml | 2 +- .../2024-01-01/cohort_1955_male.yaml | 2 +- .../2024-01-01/cohort_1956_female.yaml | 2 +- .../2024-01-01/cohort_1956_male.yaml | 2 +- .../2024-01-01/cohort_1957_female.yaml | 2 +- .../2024-01-01/cohort_1957_male.yaml | 2 +- .../2024-01-01/cohort_1958_female.yaml | 2 +- .../2024-01-01/cohort_1958_male.yaml | 2 +- .../2024-01-01/cohort_1959_female.yaml | 2 +- .../2024-01-01/cohort_1959_male.yaml | 2 +- .../2024-01-01/cohort_1960_female.yaml | 2 +- .../2024-01-01/cohort_1960_male.yaml | 2 +- .../2024-01-01/cohort_1961_female.yaml | 2 +- .../2024-01-01/cohort_1961_male.yaml | 2 +- .../2024-01-01/cohort_1962_female.yaml | 2 +- .../2024-01-01/cohort_1962_male.yaml | 2 +- .../2024-01-01/cohort_1963_female.yaml | 2 +- .../2024-01-01/cohort_1963_male.yaml | 2 +- .../2024-01-01/cohort_1964_female.yaml | 2 +- .../2024-01-01/cohort_1964_male.yaml | 2 +- .../betrag/1991-01-01/cohort_1930_frauen.yaml | 2 +- .../betrag/1991-01-01/cohort_1930_langj.yaml | 2 +- .../cohort_1930_langj_and_arbeitsl.yaml | 2 +- .../cohort_1930_langj_and_frauen.yaml | 2 +- .../cohort_1930_ohne_vorzeitig.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 2 +- .../cohort_1937_wegen_arbeitsl.yaml | 2 +- .../cohort_1938_wegen_arbeitsl.yaml | 2 +- .../cohort_1939_wegen_arbeitsl.yaml | 2 +- .../cohort_1940_wegen_arbeitsl.yaml | 2 +- .../cohort_1941_wegen_arbeitsl.yaml | 2 +- .../cohort_1942_wegen_arbeitsl.yaml | 2 +- .../cohort_1943_wegen_arbeitsl.yaml | 2 +- .../cohort_1944_wegen_arbeitsl.yaml | 2 +- .../cohort_1945_wegen_arbeitsl.yaml | 2 +- .../cohort_1946_wegen_arbeitsl.yaml | 2 +- .../cohort_1947_wegen_arbeitsl.yaml | 2 +- .../cohort_1948_wegen_arbeitsl.yaml | 2 +- .../cohort_1949_wegen_arbeitsl.yaml | 2 +- .../cohort_1950_wegen_arbeitsl.yaml | 2 +- .../cohort_1951_wegen_arbeitsl.yaml | 2 +- .../cohort_1952_wegen_arbeitsl.yaml | 2 +- .../cohort_1953_wegen_arbeitsl.yaml | 2 +- .../cohort_1954_wegen_arbeitsl.yaml | 2 +- .../cohort_1955_wegen_arbeitsl.yaml | 2 +- .../cohort_1930_wegen_arbeitsl.yaml | 6 +- .../cohort_1937_wegen_arbeitsl.yaml | 6 +- .../cohort_1938_wegen_arbeitsl.yaml | 6 +- .../cohort_1939_wegen_arbeitsl.yaml | 6 +- .../cohort_1940_wegen_arbeitsl.yaml | 6 +- .../cohort_1941_wegen_arbeitsl.yaml | 6 +- .../cohort_1942_wegen_arbeitsl.yaml | 6 +- .../cohort_1943_wegen_arbeitsl.yaml | 6 +- .../cohort_1944_wegen_arbeitsl.yaml | 6 +- .../cohort_1945_wegen_arbeitsl.yaml | 6 +- .../cohort_1946_wegen_arbeitsl.yaml | 6 +- .../cohort_1947_wegen_arbeitsl.yaml | 6 +- .../cohort_1948_wegen_arbeitsl.yaml | 6 +- .../cohort_1949_wegen_arbeitsl.yaml | 6 +- .../cohort_1950_wegen_arbeitsl.yaml | 6 +- .../cohort_1951_wegen_arbeitsl.yaml | 6 +- .../cohort_1952_wegen_arbeitsl.yaml | 6 +- .../cohort_1953_wegen_arbeitsl.yaml | 6 +- .../cohort_1954_wegen_arbeitsl.yaml | 6 +- .../cohort_1955_wegen_arbeitsl.yaml | 6 +- .../cohort_1930_wegen_arbeitsl.yaml | 6 +- .../cohort_1937_wegen_arbeitsl.yaml | 6 +- .../cohort_1938_wegen_arbeitsl.yaml | 6 +- .../cohort_1939_wegen_arbeitsl.yaml | 6 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 6 +- .../cohort_1940_wegen_arbeitsl.yaml | 6 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 6 +- .../cohort_1941_wegen_arbeitsl.yaml | 6 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 6 +- .../cohort_1942_wegen_arbeitsl.yaml | 6 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 6 +- .../cohort_1943_wegen_arbeitsl.yaml | 6 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 6 +- .../cohort_1944_wegen_arbeitsl.yaml | 6 +- .../cohort_1945_wegen_arbeitsl.yaml | 6 +- .../cohort_1946_wegen_arbeitsl.yaml | 6 +- .../cohort_1947_wegen_arbeitsl.yaml | 6 +- .../cohort_1948_wegen_arbeitsl.yaml | 6 +- .../cohort_1949_wegen_arbeitsl.yaml | 6 +- .../cohort_1950_wegen_arbeitsl.yaml | 6 +- .../cohort_1951_wegen_arbeitsl.yaml | 6 +- .../cohort_1952_wegen_arbeitsl.yaml | 6 +- .../cohort_1953_wegen_arbeitsl.yaml | 6 +- .../cohort_1954_wegen_arbeitsl.yaml | 6 +- .../cohort_1955_wegen_arbeitsl.yaml | 6 +- .../cohort_1930_wegen_arbeitsl.yaml | 4 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 4 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 4 +- .../cohort_1937_wegen_arbeitsl.yaml | 4 +- .../cohort_1938_wegen_arbeitsl.yaml | 4 +- .../cohort_1939_wegen_arbeitsl.yaml | 4 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 4 +- .../cohort_1940_wegen_arbeitsl.yaml | 4 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 4 +- .../cohort_1941_wegen_arbeitsl.yaml | 4 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 4 +- .../cohort_1942_wegen_arbeitsl.yaml | 4 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 4 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 4 +- .../cohort_1930_wegen_arbeitsl.yaml | 6 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 6 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 6 +- .../cohort_1937_wegen_arbeitsl.yaml | 6 +- .../cohort_1938_wegen_arbeitsl.yaml | 6 +- .../cohort_1939_wegen_arbeitsl.yaml | 6 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 6 +- .../cohort_1940_wegen_arbeitsl.yaml | 6 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 6 +- .../cohort_1941_wegen_arbeitsl.yaml | 6 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 6 +- .../cohort_1942_wegen_arbeitsl.yaml | 6 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 6 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 6 +- .../cohort_1945_wegen_arbeitsl.yaml | 6 +- .../cohort_1946_wegen_arbeitsl.yaml | 6 +- .../cohort_1947_wegen_arbeitsl.yaml | 6 +- .../cohort_1948_wegen_arbeitsl.yaml | 6 +- .../cohort_1949_wegen_arbeitsl.yaml | 6 +- ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 6 +- .../cohort_1952_wegen_arbeitsl.yaml | 10 +- .../rente/betrag/2010-07-01/hh_id_1.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_2.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_24.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_4.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_5.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_6.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_10.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_11.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_8.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_9.yaml | 2 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_12.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_13.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_14.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_15.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_16.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_17.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_18.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_26.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_27.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_28.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_29.yaml | 2 +- ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 2 +- ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 2 +- .../2018-07-01/cohort_1955_vorzeitig.yaml | 2 +- .../2018-07-01/cohort_1958_vorzeitig.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_20.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_23.yaml | 2 +- .../zero_entgeltpunkte_anteil_ost.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 4 +- ...t_birthyear_1940_preliminary_products.yaml | 4 +- ...t_birthyear_1941_preliminary_products.yaml | 4 +- ...t_birthyear_1970_preliminary_products.yaml | 4 +- ...t_birthyear_1980_preliminary_products.yaml | 4 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...t_birthyear_1943_preliminary_products.yaml | 2 +- ...t_birthyear_1945_preliminary_products.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...birthyear_1990_2_preliminary_products.yaml | 2 +- ...t_birthyear_1960_preliminary_products.yaml | 2 +- ...t_birthyear_1970_preliminary_products.yaml | 2 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...t_birthyear_1990_preliminary_products.yaml | 4 +- ...t_birthyear_1995_preliminary_products.yaml | 6 +- ...t_birthyear_1960_preliminary_products.yaml | 4 +- ...t_birthyear_1970_preliminary_products.yaml | 4 +- ...t_birthyear_1980_preliminary_products.yaml | 2 +- ...t_birthyear_1990_preliminary_products.yaml | 4 +- .../grundrente/2021-07-01/married_couple.yaml | 87 + .../wohngeld/2006-01-01/hh_id_15.yaml | 11 +- .../wohngeld/2006-01-01/hh_id_4.yaml | 8 +- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 5 +- .../wohngeld/2013-01-01/hh_id_2.yaml | 5 +- .../wohngeld/2013-01-01/hh_id_9.yaml | 5 +- .../wohngeld/2016-01-01/hh_id_1.yaml | 6 +- .../wohngeld/2018-01-01/hh_id_7.yaml | 16 +- .../wohngeld/2018-01-01/hh_id_8.yaml | 9 +- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 9 +- .../wohngeld/2019-01-01/hh_id_5.yaml | 4 +- .../wohngeld/2021-01-01/hh_id_10.yaml | 4 +- .../wohngeld/2023-01-01/hh_id_11.yaml | 4 +- .../wohngeld/2023-01-01/hh_id_12.yaml | 4 +- .../wohngeld/2023-01-01/hh_id_13.yaml | 6 +- .../wohngeld/2023-01-01/hh_id_14.yaml | 9 +- .../wohngeld/2023-01-01/hh_id_16.yaml | 7 +- .../wohngeld/2023-01-01/hh_id_17.yaml | 8 +- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 17 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 8 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 20 +- .../ttsim => src/_gettsim_tests}/test_docs.py | 24 +- .../test_full_taxes_and_transfers.py | 19 +- src/_gettsim_tests/test_groupings.py | 35 +- src/_gettsim_tests/test_household_links.py | 10 +- .../_gettsim_tests/test_import_version.py | 6 + src/_gettsim_tests/test_interface.py | 147 + src/_gettsim_tests/test_lohnsteuer.py | 28 - src/_gettsim_tests/test_policy.py | 8 +- .../test_warn_if_repeated_execution.py | 2 + src/_gettsim_tests/utils.py | 72 +- src/gettsim/__init__.py | 6 +- src/ttsim/__init__.py | 90 +- src/ttsim/aggregation.py | 2 + src/ttsim/aggregation_jax.py | 24 +- src/ttsim/aggregation_numpy.py | 19 +- src/ttsim/automatically_added_functions.py | 111 +- ...ts.py => column_objects_param_function.py} | 243 +- src/ttsim/combine_functions.py | 110 - src/ttsim/compute_taxes_and_transfers.py | 600 ++-- ...prepare_data.py => convert_nested_data.py} | 101 +- src/ttsim/loader.py | 163 +- src/ttsim/param_objects.py | 152 + src/ttsim/params-schema.json | 182 +- src/ttsim/piecewise_polynomial.py | 210 +- src/ttsim/plot_dag.py | 55 +- src/ttsim/policy_environment.py | 1125 +++--- src/ttsim/shared.py | 56 +- src/ttsim/typing.py | 80 +- src/ttsim/vectorization.py | 46 +- tests/ttsim/mettsim/config.py | 4 +- tests/ttsim/mettsim/demographics.py | 2 + tests/ttsim/mettsim/group_by_ids.py | 114 +- .../ttsim/mettsim/housing_benefits/amount.py | 6 +- .../housing_benefits/assistance_rate.yaml | 13 + .../eligibility/eligibility.py | 32 +- .../eligibility/eligibility.yaml | 39 + .../mettsim/housing_benefits/income/income.py | 2 + tests/ttsim/mettsim/inputs.py | 9 +- .../orc_hunting_bounty/orc_hunting_bounty.py | 48 + .../orc_hunting_bounty.yaml | 16 + .../mettsim/parameters/housing_benefits.yaml | 31 - .../ttsim/mettsim/parameters/payroll_tax.yaml | 31 - tests/ttsim/mettsim/payroll_tax/amount.py | 47 +- .../child_tax_credit/child_tax_credit.py | 13 +- .../child_tax_credit/child_tax_credit.yaml | 14 + .../payroll_tax/child_tax_credit/inputs.py | 2 + .../mettsim/payroll_tax/income/amount.py | 2 + .../mettsim/payroll_tax/income/deductions.py | 9 +- .../payroll_tax/income/deductions.yaml | 13 + .../mettsim/payroll_tax/income/inputs.py | 2 + .../mettsim/payroll_tax/payroll_tax.yaml | 57 + tests/ttsim/mettsim/property_tax/amount.py | 23 + .../mettsim/property_tax/tax_schedule.yaml | 24 + tests/ttsim/test_aggregation_functions.py | 2 + ... => test_automatically_added_functions.py} | 84 +- tests/ttsim/test_combine_functions.py | 273 -- .../ttsim/test_compute_taxes_and_transfers.py | 625 +++- tests/ttsim/test_convert_nested_data.py | 397 +++ tests/ttsim/test_create_data_tree.py | 121 - .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 6 +- .../amount_with_children_high_income.yaml | 2 +- .../amount_with_children_low_income.yaml | 8 +- .../amount_no_children_high_income.yaml | 2 +- .../amount_no_children_low_income.yaml | 6 +- .../amount_with_children_high_income.yaml | 8 +- .../amount_with_children_low_income.yaml | 8 +- .../2025-01-01/amount_with_many_children.yaml | 12 +- .../orc_hunting_bounty/1900-01-01/amount.yaml | 28 + .../2025-01-01/amount_no_children.yaml | 2 +- .../amount_no_children_high_wealth.yaml | 2 +- .../2025-01-01/amount_with_children.yaml | 2 +- ..._children_inputs_need_to_be_converted.yaml | 2 +- .../2025-01-01/amount_with_many_children.yaml | 2 +- .../property_tax/2000-01-01/acre_size.yaml | 20 + tests/ttsim/test_dates_active.py | 267 -- tests/ttsim/test_import_version.py | 9 +- tests/ttsim/test_join.py | 2 + tests/ttsim/test_loader.py | 44 +- tests/ttsim/test_mettsim.py | 20 + tests/ttsim/test_parameters/__init__.py | 0 .../test_add_jahresanfang.yaml | 14 + .../ttsim/test_parameters_old}/__init__.py | 0 .../invalid_access_diff_date.yaml | 4 +- .../test_access_diff_date_jahresanfang.yaml | 4 +- .../test_access_diff_date_vorjahr.yaml | 6 +- tests/ttsim/test_piecewise_polynomial.py | 35 +- tests/ttsim/test_plot_dag.py | 10 +- tests/ttsim/test_policy_environment.py | 811 ++++- tests/ttsim/test_rounding.py | 47 +- tests/ttsim/test_shared.py | 36 + tests/ttsim/test_ttsim_objects.py | 56 +- tests/ttsim/test_vectorization.py | 120 +- tests/ttsim/utils.py | 61 +- typical_vars_in_data.yaml | 29 + 1152 files changed, 20763 insertions(+), 21528 deletions(-) create mode 100644 src/_gettsim/arbeitslosengeld_2/bedarfe.yaml create mode 100644 "src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge.yaml" create mode 100644 src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml rename src/_gettsim/{parameters/abgelt_st.yaml => einkommensteuer/abgeltungssteuer/abgeltungssteuer.yaml} (65%) delete mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.yaml" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/alter.yaml" delete mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.yaml" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" delete mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.yaml" rename "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" => "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" (53%) create mode 100644 "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.yaml" rename src/_gettsim/{parameters/eink_st.yaml => einkommensteuer/einkommensteuertarif.yaml} (75%) create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/freibetr\303\244ge.yaml" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" create mode 100644 src/_gettsim/einkommensteuer/kinderfreibetrag.yaml create mode 100644 src/_gettsim/elterngeld/anspruch.yaml create mode 100644 src/_gettsim/elterngeld/boni.yaml create mode 100644 src/_gettsim/elterngeld/formel.yaml create mode 100644 src/_gettsim/erziehungsgeld/anspruch.yaml create mode 100644 src/_gettsim/erziehungsgeld/formel.yaml rename src/_gettsim/parameters/grunds_im_alter.yaml => "src/_gettsim/grundsicherung/im_alter/freibetr\303\244ge_und_mehrbedarfe.yaml" (62%) create mode 100644 src/_gettsim/kinderbonus/kinderbonus.yaml rename src/_gettsim/{parameters => kindergeld}/kindergeld.yaml (76%) rename src/_gettsim/{parameters/kinderzuschl.yaml => kinderzuschlag/kinderzuschlag.yaml} (54%) create mode 100644 src/_gettsim/lohnsteuer/einkommensgrenzwerte.yaml create mode 100644 src/_gettsim/lohnsteuer/minijob.yaml create mode 100644 src/_gettsim/lohnsteuer/vorsorge.yaml create mode 100644 src/_gettsim/param_types.py delete mode 100644 src/_gettsim/parameters/arbeitsl_geld.yaml delete mode 100644 src/_gettsim/parameters/arbeitsl_geld_2.yaml delete mode 100644 src/_gettsim/parameters/arbeitslosenversicherung.yaml delete mode 100644 src/_gettsim/parameters/eink_st_abzuege.yaml delete mode 100644 src/_gettsim/parameters/elterngeld.yaml delete mode 100644 src/_gettsim/parameters/erwerbsm_rente.yaml delete mode 100644 src/_gettsim/parameters/erziehungsgeld.yaml delete mode 100644 "src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" delete mode 100644 src/_gettsim/parameters/ges_krankenv.yaml delete mode 100644 src/_gettsim/parameters/ges_pflegev.yaml delete mode 100644 src/_gettsim/parameters/ges_rente.yaml delete mode 100644 src/_gettsim/parameters/ges_rentenv.yaml delete mode 100644 src/_gettsim/parameters/lohnst.yaml delete mode 100644 src/_gettsim/parameters/unterhalt.yaml rename src/_gettsim/parameters/soli_st.yaml => "src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.yaml" (79%) create mode 100644 src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml create mode 100644 src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitragssatz.yaml create mode 100644 src/_gettsim/sozialversicherung/arbeitslosen/betrag.yaml delete mode 100644 "src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" create mode 100644 src/_gettsim/sozialversicherung/kranken/beitrag/beitragsbemessungsgrenze.yaml create mode 100644 src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.yaml create mode 100644 src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml create mode 100644 "src/_gettsim/sozialversicherung/kranken/beitrag/selbstst\303\244ndige.yaml" create mode 100644 src/_gettsim/sozialversicherung/midijob.yaml create mode 100644 src/_gettsim/sozialversicherung/mindestlohn.yaml create mode 100644 src/_gettsim/sozialversicherung/minijob.py create mode 100644 src/_gettsim/sozialversicherung/minijob.yaml create mode 100644 src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.yaml create mode 100644 "src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/altersgrenze.yaml" create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py create mode 100644 "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" create mode 100644 "src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/anspruch.yaml" create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml create mode 100644 "src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/altersgrenze.yaml" create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/altersgrenze.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/anspruch.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/beitrag/beitragsbemessungsgrenze.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/beitrag/beitragssatz.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/beitrag/rentenanpassungsformel.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/erwerbsminderung/formel.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/erwerbsminderung/wartezeit.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/grundrente/einkommen.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/grundrente/rentenformel.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/grundrente/wartezeit.yaml create mode 100644 src/_gettsim/sozialversicherung/rente/wartezeit.yaml create mode 100644 src/_gettsim/unterhalt/unterhalt.yaml rename src/_gettsim/{parameters/unterhaltsvors.yaml => unterhaltsvorschuss/unterhaltsvorschuss.yaml} (55%) create mode 100644 src/_gettsim/wohngeld/einkommen.yaml rename src/_gettsim/{parameters/wohngeld.yaml => wohngeld/miete.yaml} (55%) create mode 100644 src/_gettsim/wohngeld/voraussetzungen.yaml create mode 100644 src/_gettsim/wohngeld/wohngeld.yaml create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml rename {tests/ttsim => src/_gettsim_tests}/test_docs.py (85%) rename tests/ttsim/test_import.py => src/_gettsim_tests/test_import_version.py (58%) create mode 100644 src/_gettsim_tests/test_interface.py delete mode 100644 src/_gettsim_tests/test_lohnsteuer.py rename src/ttsim/{ttsim_objects.py => column_objects_param_function.py} (76%) delete mode 100644 src/ttsim/combine_functions.py rename src/ttsim/{prepare_data.py => convert_nested_data.py} (58%) create mode 100644 src/ttsim/param_objects.py create mode 100644 tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml create mode 100644 tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml create mode 100644 tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py create mode 100644 tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml delete mode 100644 tests/ttsim/mettsim/parameters/housing_benefits.yaml delete mode 100644 tests/ttsim/mettsim/parameters/payroll_tax.yaml create mode 100644 tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml create mode 100644 tests/ttsim/mettsim/payroll_tax/income/deductions.yaml create mode 100644 tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml create mode 100644 tests/ttsim/mettsim/property_tax/amount.py create mode 100644 tests/ttsim/mettsim/property_tax/tax_schedule.yaml rename tests/ttsim/{test_time_conversion.py => test_automatically_added_functions.py} (80%) delete mode 100644 tests/ttsim/test_combine_functions.py create mode 100644 tests/ttsim/test_convert_nested_data.py delete mode 100644 tests/ttsim/test_create_data_tree.py create mode 100644 tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml create mode 100644 tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml delete mode 100644 tests/ttsim/test_dates_active.py delete mode 100644 tests/ttsim/test_parameters/__init__.py create mode 100644 tests/ttsim/test_parameters/test_add_jahresanfang.yaml rename {src/_gettsim/parameters => tests/ttsim/test_parameters_old}/__init__.py (100%) rename tests/ttsim/{test_parameters => test_parameters_old}/invalid_access_diff_date.yaml (89%) rename tests/ttsim/{test_parameters => test_parameters_old}/test_access_diff_date_jahresanfang.yaml (79%) rename tests/ttsim/{test_parameters => test_parameters_old}/test_access_diff_date_vorjahr.yaml (73%) create mode 100644 typical_vars_in_data.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b61817bcf8..a1afbc511e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -96,7 +96,7 @@ repos: - types-PyYAML - types-pytz - numpy >= 2 - - dags >= 0.3 + # - dags >= 0.3 - optree >= 0.15 - repo: https://github.com/python-jsonschema/check-jsonschema rev: 0.33.0 diff --git a/CHANGES.md b/CHANGES.md index eaaf9cafe7..67873ee4cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,8 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`894`, {gh}`896` Cleanups ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`). +- {gh}`891` Prepare for jitting / vectorization of GETTSIM` ({ghuser}`hmgaudecker\`). - {gh}`879` Vectorize METTSIM ({ghuser}`timmens`, {ghuser}`hmgaudecker`). - {gh}`887` Enable typing ({ghuser}`hmgaudecker`, {ghuser}`timmens`). - {gh}`888` Remove SUPPORTED_GROUPINGS entirely, infer groupings from object names @@ -15,7 +17,7 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`885`, {gh}`886`: Cleanups ({ghuser}`MImmesberger`). - {gh}`867` Vectorize `piecewise_polynomial` ({ghuser}`mj023`). - {gh}`880` Validate parameter files using json schema ({ghuser}`hmgaudecker`). -- {gh}`876` Add DataFrame to NestedDataDict conversion ({ghuser}`MImmesberger`). +- {gh}`876` Add DataFrame to NestedData conversion ({ghuser}`MImmesberger`). - {gh}`873` Implement aggregation decorators ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`859` Add RoundingSpec dataclass ({ghuser}`hmgaudecker`, `MImmesberger`). - {gh}`854` Add PolicyInput class and update hierarchy of TTSIM objects diff --git a/docs/geps/gep-01.md b/docs/geps/gep-01.md index b04e42a768..1c524812aa 100644 --- a/docs/geps/gep-01.md +++ b/docs/geps/gep-01.md @@ -42,7 +42,7 @@ a nutshell and without explanations, these conventions are: Internal variables should be used sparingly. 1. If names need to be concatenated for making clear what a column name refers to (e.g., - `arbeitslosengeld_2__freibetrag_vermögen_bg` vs. + `arbeitslosengeld_2__vermögensfreibetrag_bg` vs. `grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or transfer) that a variable refers to appears first. @@ -113,7 +113,7 @@ changed, even if it leads to long variable names (e.g., `kinderfreib`, less error-prone. If names need to be concatenated for making clear what a column name refers to (e.g., -`arbeitslosengeld_2__freibetrag_vermögen_bg` vs. +`arbeitslosengeld_2__vermögensfreibetrag_bg` vs. `grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or transfer) that a variable refers to appears first. diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index 4cd4be80e7..11b439705c 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -59,7 +59,7 @@ These work differently and they are Example (from `arbeitsl_geld_2`): ```yaml - eink_anr_frei: + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: name: de: Anrechnungsfreies Einkommen en: Income shares not subject to transfer withdrawal @@ -78,7 +78,7 @@ These work differently and they are Example: ```yaml - eink_anr_frei: + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: description: de: >- @@ -107,7 +107,7 @@ These work differently and they are kindergeld: name: de: Kindergeld, Betrag je nach Reihenfolge der Kinder. - unit: Euro + unit: Euros ``` 1. The (optional) `type` key may contain a reference to a particular function that is @@ -181,7 +181,7 @@ These work differently and they are Example: ```yaml -eink_anr_frei: +parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: name: de: Anrechnungsfreie Einkommensanteile 2005-01-01: @@ -204,11 +204,11 @@ be avoided in the value key (see the `piecewise_linear` function above). The key could either reference another value explicitly: ```yaml -eink_anr_frei_kinder: +parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: name: de: Abweichende anrechnungsfreie Einkommensanteile falls Kinder im Haushalt 2005-10-01: - deviation_from: arbeitsl_geld_2.eink_anr_frei + deviation_from: arbeitsl_geld_2.parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg 3: upper_threshold: 1500 ``` @@ -217,7 +217,7 @@ A special keyword is `previous`, which just refers to the set of values in the p law change. ```yaml -eink_anr_frei: +parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: name: de: Anrechnungsfreie Einkommensanteile 2011-04-01: @@ -241,7 +241,7 @@ The following walks through several cases. name: de: Wochenstundengrenze für Kindergeldanspruch 2012-01-01: - scalar: 20 + value: 20 ``` - There could be a dictionary, potentially nested: @@ -282,7 +282,7 @@ The following walks through several cases. - Another example would be referring to the parameters of a piecewise linear function: > ```yaml - > eink_anr_frei: + > parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: > name: > de: Anrechnungsfreie Einkommensanteile > en: Income shares not subject to transfer withdrawal @@ -304,7 +304,7 @@ The following walks through several cases. - If a parameter ceases to be relevant, is superseded by something else, etc., there must be a `YYYY-MM-DD` key with a note on this. - Generally, this `YYYY-MM-DD` key will have an entry `scalar: null` regardless of the + Generally, this `YYYY-MM-DD` key will have an entry `value: null` regardless of the previous structure. Ideally, there would be a `reference` and potentially a `note` key. Example: diff --git a/docs/gettsim_objects/params.md b/docs/gettsim_objects/params.md index 469a53b648..9190f53cbb 100644 --- a/docs/gettsim_objects/params.md +++ b/docs/gettsim_objects/params.md @@ -22,93 +22,3 @@ found in the table below. GETTSIM reads the function arguments and selects the corresponding part of the {code}`params` file. For GETTSIM to read and process the arguments of functions correctly the {code}`compartment_name + _params` variables have to be last inputs in the function signature. - -(sozialv_beitr_params)= - -## `sozialv_beitr_params` - -Social insurance contributions - -(eink_st_params)= - -## `eink_st_params` - -Income tax - -(eink_st_abzuege_params)= - -## `eink_st_abzuege_params` - -Income tax deductions - -(soli_st_params)= - -## `soli_st_params` - -Solidarity surcharge - -(arbeitsl_geld_2_params)= - -## `arbeitsl_geld_2_params` - -Basic social insurance - -(arbeitsl_geld_params)= - -## `arbeitsl_geld_params` - -Unemployment benefits - -(unterhalt_params)= - -## `unterhalt_params` - -Alimony payments - -(unterhaltsvors_params)= - -## `unterhaltsvors_params` - -Advance on alimony payments - -(abgelt_st_params)= - -## `abgelt_st_params` - -Capital income tax - -(wohngeld_params)= - -## `wohngeld_params` - -Housing benefits - -(kinderzuschl_params)= - -## `kinderzuschl_params` - -Child allowance - -(kindergeld_params)= - -## `kindergeld_params` - -Child benefits - -(elterngeld_params)= - -## `elterngeld_params` - -Parental leave benefits - -(ges_rente_params)= - -## `ges_rente_params` - -Pensions - -(grunds_im_alter_params)= - -## `grunds_im_alter_params` - -Old-age basic income support diff --git a/outdated_docs/tutorials/advanced_usage.ipynb b/outdated_docs/tutorials/advanced_usage.ipynb index ea904dcdb4..b34cf9d4b1 100644 --- a/outdated_docs/tutorials/advanced_usage.ipynb +++ b/outdated_docs/tutorials/advanced_usage.ipynb @@ -28,14 +28,14 @@ "import plotly.express as px\n", "\n", "from gettsim import (\n", - " FunctionsAndColumnsOverlapWarning,\n", + " FunctionsAndDataOverlapWarning,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", " plot_dag,\n", " set_up_policy_environment,\n", ")\n", "\n", - "warnings.filterwarnings(\"ignore\", category=FunctionsAndColumnsOverlapWarning)" + "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataOverlapWarning)" ] }, { diff --git a/outdated_docs/tutorials/debugging.ipynb b/outdated_docs/tutorials/debugging.ipynb index 33045433df..70b4bc3f14 100644 --- a/outdated_docs/tutorials/debugging.ipynb +++ b/outdated_docs/tutorials/debugging.ipynb @@ -104,7 +104,7 @@ "source": [ "## Debug Mode with an Exception\n", "\n", - "What happens when an exception is raised while producing the target? We artificially produce an error with a modified user function. For exemplary purposes we modify GETTSIM's function `sozialversicherung__minijob_grenze` which is called when computing the pension contributions. Instead of its usual functionality of returning the income threshold for marginal employment, we overwrite it to raise an error when called (note that we could do so with any other function as well)." + "What happens when an exception is raised while producing the target? We artificially produce an error with a modified user function. For exemplary purposes we modify GETTSIM's function `sozialversicherung__minijobgrenze` which is called when computing the pension contributions. Instead of its usual functionality of returning the income threshold for marginal employment, we overwrite it to raise an error when called (note that we could do so with any other function as well)." ] }, { @@ -113,7 +113,7 @@ "metadata": {}, "outputs": [], "source": [ - "def sozialversicherung__minijob_grenze():\n", + "def sozialversicherung__minijobgrenze():\n", " raise ValueError" ] }, @@ -129,7 +129,7 @@ "source": [ "df = compute_taxes_and_transfers(\n", " data=data,\n", - " environment=environment.upsert_functions(sozialversicherung__minijob_grenze),\n", + " environment=environment.upsert_functions(sozialversicherung__minijobgrenze),\n", " targets=\"sozialversicherung__rente__beitrag__betrag_versicherter_m\",\n", " debug=True,\n", ")" diff --git a/outdated_docs/tutorials/parameters.ipynb b/outdated_docs/tutorials/parameters.ipynb index eb194be924..7006e1316a 100644 --- a/outdated_docs/tutorials/parameters.ipynb +++ b/outdated_docs/tutorials/parameters.ipynb @@ -271,7 +271,7 @@ "metadata": {}, "outputs": [], "source": [ - "environment_new = environment.replace_all_parameters(policy_params_new)\n", + "environment_new = environment.replace_tree_with_params(policy_params_new)\n", "kindergeld_new = compute_taxes_and_transfers(\n", " data=data,\n", " environment=environment_new,\n", diff --git a/outdated_docs/tutorials/policy_functions.ipynb b/outdated_docs/tutorials/policy_functions.ipynb index a5e707ec71..de48519ff0 100644 --- a/outdated_docs/tutorials/policy_functions.ipynb +++ b/outdated_docs/tutorials/policy_functions.ipynb @@ -25,13 +25,13 @@ "import plotly.express as px\n", "\n", "from gettsim import (\n", - " FunctionsAndColumnsOverlapWarning,\n", + " FunctionsAndDataOverlapWarning,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", " set_up_policy_environment,\n", ")\n", "\n", - "warnings.filterwarnings(\"ignore\", category=FunctionsAndColumnsOverlapWarning)" + "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataOverlapWarning)" ] }, { diff --git a/pixi.lock b/pixi.lock index bbbcdde0df..569b513473 100644 --- a/pixi.lock +++ b/pixi.lock @@ -31,14 +31,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -46,10 +46,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -62,7 +61,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda @@ -70,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -80,13 +79,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -99,12 +98,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda @@ -112,38 +111,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -156,27 +155,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -205,14 +204,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -228,9 +227,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -238,7 +237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -266,14 +265,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -296,13 +295,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -310,7 +309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -325,7 +324,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda @@ -333,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -343,13 +342,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -362,42 +361,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -409,27 +408,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -459,14 +458,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -482,9 +481,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -492,7 +491,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -503,14 +502,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -533,13 +532,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -547,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -562,7 +561,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda @@ -570,7 +569,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -580,13 +579,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -599,18 +598,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -619,22 +618,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -646,27 +645,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -696,14 +695,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -719,9 +718,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -729,7 +728,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -740,14 +739,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -768,13 +767,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -782,7 +781,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -803,7 +802,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -812,14 +811,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -832,39 +831,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -877,26 +876,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda @@ -925,14 +924,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -949,9 +948,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -962,7 +961,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -984,7 +983,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -992,7 +991,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ mypy: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1024,14 +1023,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1039,10 +1038,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1055,7 +1053,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda @@ -1063,7 +1061,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1073,13 +1071,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -1092,12 +1090,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda @@ -1105,38 +1103,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -1149,27 +1147,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -1198,14 +1196,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -1221,9 +1219,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1231,7 +1229,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1259,7 +1257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl @@ -1268,9 +1266,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1293,13 +1291,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1307,7 +1305,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -1322,7 +1320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda @@ -1330,7 +1328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1340,13 +1338,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -1359,42 +1357,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1406,27 +1404,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -1456,14 +1454,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -1479,9 +1477,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1489,7 +1487,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1500,7 +1498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -1509,9 +1507,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1534,13 +1532,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1548,7 +1546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -1563,7 +1561,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda @@ -1571,7 +1569,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1581,13 +1579,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -1600,18 +1598,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -1620,22 +1618,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1647,27 +1645,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -1697,14 +1695,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -1720,9 +1718,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1730,7 +1728,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1741,7 +1739,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl @@ -1750,9 +1748,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1773,13 +1771,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -1787,7 +1785,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -1808,7 +1806,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -1817,14 +1815,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -1837,39 +1835,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -1882,26 +1880,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda @@ -1930,14 +1928,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -1954,9 +1952,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1967,7 +1965,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1989,7 +1987,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl @@ -1999,9 +1997,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: ./ py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -2033,14 +2031,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2048,10 +2046,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -2064,7 +2061,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda @@ -2072,7 +2069,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2082,13 +2079,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -2101,12 +2098,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda @@ -2114,38 +2111,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -2158,27 +2155,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py311h5d046bc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -2207,14 +2204,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -2230,9 +2227,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -2240,7 +2237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2268,14 +2265,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2298,13 +2295,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2312,7 +2309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -2327,7 +2324,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda @@ -2335,7 +2332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2345,13 +2342,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -2364,42 +2361,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2411,27 +2408,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py311h27c81cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -2461,14 +2458,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py311hab9d7c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -2484,9 +2481,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -2494,7 +2491,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2505,14 +2502,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2535,13 +2532,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2549,7 +2546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -2564,7 +2561,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda @@ -2572,7 +2569,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2582,13 +2579,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -2601,18 +2598,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -2621,22 +2618,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2648,27 +2645,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py311h762c074_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -2698,14 +2695,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py311hc9d6b66_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -2721,9 +2718,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -2731,7 +2728,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2742,14 +2739,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2770,13 +2767,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -2784,7 +2781,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -2805,7 +2802,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -2814,14 +2811,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -2834,39 +2831,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -2879,26 +2876,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py311h5e411d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda @@ -2927,14 +2924,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py311ha250665_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -2951,9 +2948,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -2964,7 +2961,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2986,7 +2983,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -2994,7 +2991,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ py312: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -3026,14 +3023,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3041,10 +3038,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -3057,7 +3053,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda @@ -3065,7 +3061,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3075,13 +3071,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -3094,12 +3090,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda @@ -3107,38 +3103,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -3151,27 +3147,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -3200,14 +3196,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3223,9 +3219,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -3233,7 +3229,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3261,14 +3257,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3291,13 +3287,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3305,7 +3301,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -3320,7 +3316,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda @@ -3328,7 +3324,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3338,13 +3334,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -3357,42 +3353,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3404,27 +3400,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -3454,14 +3450,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3477,9 +3473,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -3487,7 +3483,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3498,14 +3494,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3528,13 +3524,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3542,7 +3538,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -3557,7 +3553,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda @@ -3565,7 +3561,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3575,13 +3571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -3594,18 +3590,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -3614,22 +3610,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3641,27 +3637,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -3691,14 +3687,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3714,9 +3710,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -3724,7 +3720,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3735,14 +3731,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3763,13 +3759,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -3777,7 +3773,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -3798,7 +3794,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -3807,14 +3803,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -3827,39 +3823,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -3872,26 +3868,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda @@ -3920,14 +3916,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -3944,9 +3940,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -3957,7 +3953,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3979,7 +3975,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3987,7 +3983,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ py312-jax: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -4020,14 +4016,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4035,10 +4031,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -4051,7 +4046,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda @@ -4059,7 +4054,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4069,16 +4064,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -4090,12 +4085,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda @@ -4104,24 +4099,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda @@ -4129,16 +4124,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -4152,11 +4147,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -4164,16 +4159,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -4203,15 +4198,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -4227,9 +4222,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -4237,7 +4232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4265,14 +4260,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4296,13 +4291,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4310,7 +4305,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -4325,7 +4320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda @@ -4333,7 +4328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4343,16 +4338,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.2-cpu_py312ha70eef1_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -4364,46 +4359,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4416,11 +4411,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -4428,16 +4423,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -4468,15 +4463,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -4492,9 +4487,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -4502,7 +4497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4513,14 +4508,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4544,13 +4539,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4558,7 +4553,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -4573,7 +4568,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda @@ -4581,7 +4576,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4591,16 +4586,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py312he253ca6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -4612,19 +4607,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -4633,25 +4628,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4664,11 +4659,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -4676,16 +4671,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda @@ -4716,15 +4711,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -4740,9 +4735,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -4750,7 +4745,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4761,14 +4756,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4789,13 +4784,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -4803,7 +4798,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda @@ -4824,7 +4819,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -4833,14 +4828,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -4853,39 +4848,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -4898,26 +4893,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda @@ -4946,14 +4941,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda @@ -4970,9 +4965,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -4983,7 +4978,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -5005,10 +5000,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/25/32c5e2c919da4faaea9ef5088437ab6e01738c49402e4ec8a6c7b49e30ef/jax-0.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/65/81/5a989ecd4819de26ebffe90a165b81ceec1c98cd20214764c4b7c15c5837/jaxlib-0.6.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -5016,9 +5011,9 @@ environments: - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: . + - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -5364,7 +5359,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/attrs?source=compressed-mapping + - pkg:pypi/attrs?source=hash-mapping size: 57181 timestamp: 1741918625732 - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda @@ -5748,16 +5743,16 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 - md5: c207fa5ac7ea99b149344385a9c0880d +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c + md5: c33eeaaa33f45031be34cda513df39b6 depends: - python >=3.9 license: ISC purls: - - pkg:pypi/certifi?source=compressed-mapping - size: 162721 - timestamp: 1739515973129 + - pkg:pypi/certifi?source=hash-mapping + size: 157200 + timestamp: 1746569627830 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -5895,17 +5890,17 @@ packages: - pkg:pypi/cfgv?source=hash-mapping size: 12973 timestamp: 1734267180483 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + sha256: 535ae5dcda8022e31c6dc063eb344c80804c537a5a04afba43a845fa6fa130f5 + md5: 40fe4284b8b5835a9073a645139f35af depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/charset-normalizer?source=hash-mapping - size: 47438 - timestamp: 1735929811779 + size: 50481 + timestamp: 1746214981991 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -5929,9 +5924,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12103 timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda - sha256: 50018d9c2d805eab29be0ad2e65a4d6b9f620e5e6b196923b1f3b397efee9b10 - md5: 37bc439a94beeb29914baa5b4987ebd5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda + sha256: dabff490f3a4a4beb70c16624766286aa47dfb7dec0275966498a0854951e754 + md5: e761745f85b5fc909aab137ff59bc9cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5942,11 +5937,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 382957 - timestamp: 1743381419165 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py312h178313f_0.conda - sha256: 029278c43bd2a6ac36bfd93fde69a0cde6a4ee94c0af72d0d51236fbb1fc3720 - md5: d0fca021e354cc96455021852a1fad6d + size: 381652 + timestamp: 1747842278784 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + sha256: 783fc98faff93d840ee278e8f9f9288cb10baaa820f4ea84d085caaeef5c581b + md5: d0cfba188d8eba0c3676af3d88e3b832 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5957,11 +5952,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 370860 - timestamp: 1743381417734 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py311ha3cf9ac_0.conda - sha256: e041ad3c0fa1b48d20e7c66245ee1ceaff7700f2491769c85548fe98a8b66bf4 - md5: 6b0840d6e4b8aa8c9bffe4390ad24137 + size: 372130 + timestamp: 1747842174442 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda + sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b + md5: a232a2c290d493aec5c321d42e8bb5f3 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -5971,11 +5966,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 380724 - timestamp: 1743381417340 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py312h3520af0_0.conda - sha256: 93a748957c402833143e72735e7dca3b0acd347ef37fce197ab3d2978b3ad997 - md5: bc208c83a0a6fb53e2d1a7e8564313c9 + size: 381834 + timestamp: 1747842238160 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + sha256: 01055509fdbf957da8101111f55d4ba4093d80ba41fa9db265918f83d74781c6 + md5: e2e4abc59d34ee3a3496e43fde06fe4a depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -5985,11 +5980,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 369852 - timestamp: 1743381410510 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py311h4921393_0.conda - sha256: e2843a863c82fe5ba395dd8efca92516aed4bb7a483e20c1bd9a8e352457cf17 - md5: 33cb9e1ee4203172727a4b0568ff075d + size: 370818 + timestamp: 1747842400404 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda + sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 + md5: 3311b8464e609c253df8ed73b030a91b depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6000,11 +5995,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381713 - timestamp: 1743381494051 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py312h998013c_0.conda - sha256: 124499e640f203e9719611b9c491daed61dd8747a2fecbaac1e0e34e9de2a48a - md5: dedaba61562b3e7124445b378419eeac + size: 381607 + timestamp: 1747842318714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + sha256: 965ccddf2fad18d09e45406317e0ffc9edff585ecec573c514b88a0e42aae793 + md5: 969b54224937a2b948a395ab6c972339 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6015,11 +6010,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 371159 - timestamp: 1743381493560 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py311h5082efb_0.conda - sha256: 2a3a8f6304374d19e6fd1cbf73e756debf0a76e787f1a15bd8b11d74f9ef6bd2 - md5: 3237b9093308b18ee36d455ff098017b + size: 372341 + timestamp: 1747842541199 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda + sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 + md5: 11cfa5d9997512db18ba2eb46edcce37 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -6031,11 +6026,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 408662 - timestamp: 1743381739554 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py312h31fea79_0.conda - sha256: 7815726b2b45065af4570deca428f48799ce1f49de7d8b5e4f6b7999f6a4dc2f - md5: a52895ace8c17bc01ceba443d52325c6 + size: 407188 + timestamp: 1747842536793 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + sha256: 008dcd8dc25f8f8cd4f3c92f32638026acc8be3cef8f1b1f030a9bd99b60d451 + md5: f8cb7f4c4409b75b52935f914eeb091f depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -6047,8 +6042,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 397622 - timestamp: 1743381580812 + size: 398869 + timestamp: 1747842451626 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda noarch: generic sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 @@ -6071,26 +6066,29 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: https://files.pythonhosted.org/packages/50/08/7acb9d35c4a193a14fafdf4dbf0d1240dc3f74a8961fa46f3544a80c1f6b/dags-0.3.0-py3-none-any.whl +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 name: dags - version: 0.3.0 - sha256: d47025019bf72d4261c9df6f73d3402568feaafba2d44a17206b74dfc0e7e8bb + version: 0.3.1.dev7+ge75df1f requires_dist: - flatten-dict - networkx requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 - md5: ecfff944ba3960ecb334b9a2663d708d +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + sha256: 3b988146a50e165f0fa4e839545c679af88e4782ec284cc7b6d07dd226d6a068 + md5: 679616eb5ad4e521c83da4650860aba7 depends: - - expat >=2.4.2,<3.0a0 - - libgcc-ng >=9.4.0 - - libglib >=2.70.2,<3.0a0 + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libexpat >=2.7.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - libglib >=2.84.2,<3.0a0 license: GPL-2.0-or-later license_family: GPL purls: [] - size: 618596 - timestamp: 1640112124844 + size: 437860 + timestamp: 1747855126005 - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda sha256: 2f6d43724f60828fa226a71f519248ecd1dd456f0d4fc5f887936c763ea726e4 md5: 1c229452e28e2c4607457c7b6c839bc7 @@ -6289,16 +6287,17 @@ packages: - pkg:pypi/et-xmlfile?source=hash-mapping size: 21908 timestamp: 1733749746332 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca + md5: 72e42d28960d875c7654614f8b50939a depends: - python >=3.9 + - typing_extensions >=4.6.0 license: MIT and PSF-2.0 purls: - - pkg:pypi/exceptiongroup?source=hash-mapping - size: 20486 - timestamp: 1733208916977 + - pkg:pypi/exceptiongroup?source=compressed-mapping + size: 21284 + timestamp: 1746947398083 - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda sha256: 9abc6c128cd40733e9b24284d0462e084d4aff6afe614f0754aa8533ebe505e4 md5: a71efeae2c160f6789900ba2631a2c90 @@ -6321,18 +6320,6 @@ packages: - pkg:pypi/executing?source=hash-mapping size: 29652 timestamp: 1745502200340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - sha256: dd5530ddddca93b17318838b97a2c9d7694fa4d57fc676cf0d06da649085e57a - md5: d6845ae4dea52a2f90178bf1829a21f8 - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat 2.7.0 h5888daf_0 - - libgcc >=13 - license: MIT - license_family: MIT - purls: [] - size: 140050 - timestamp: 1743431809745 - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda sha256: de7b6d4c4f865609ae88db6fa03c8b7544c2452a1aa5451eb7700aad16824570 md5: 4547b39256e296bb758166893e909a7c @@ -6605,12 +6592,11 @@ packages: purls: [] size: 21903 timestamp: 1694400856979 -- pypi: . +- pypi: ./ name: gettsim - version: 0.7.1.dev121+gcb79c6db.d20250506 - sha256: 61143c871b2de8cbbf8d24f0cb80835b0de979684187dfde8edd16c119097662 + version: 0.7.1.dev132+gef75b391.d20250529 + sha256: 662873dda0fc6cb172358c1bc9e16c6f7d1477e47890b08ae84c02951127c88c requires_dist: - - dags>=0.3.0 - ipywidgets - networkx - numpy @@ -6625,39 +6611,39 @@ packages: - pyyaml requires_python: '>=3.11' editable: true -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_0.conda - sha256: 0358e0471a7c41875490abb87faa44c38298899b625744c6618b32cfb6595b4c - md5: ddc06964296eee2b4070e65415b332fd +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + sha256: eee7655422577df78386513322ea2aa691e7638947584faa715a20488ef6cc4e + md5: f2ec1facec64147850b7674633978050 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libglib 2.84.1 h2ff4ddf_0 + - libglib 2.84.2 h3618099_0 license: LGPL-2.1-or-later purls: [] - size: 116281 - timestamp: 1743773813311 -- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.0-hf8faeaf_0.conda - sha256: 6ea60fa3aee44ba7223ee4a5955dc341a4dac1f2256a8511a821741545a6da27 - md5: 03d506bd28830a841105d3015744612e + size: 116819 + timestamp: 1747836718327 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + sha256: 8d20f2df840e69588ae406504edc802b901b70881f484919e2dcdd40343488e4 + md5: eee63bf8e7ee9e2752fa78196dba373c depends: - __osx >=10.13 - - libglib 2.84.0 h5c976ab_0 - - libintl >=0.23.1,<1.0a0 + - libglib 2.84.2 h3139dbc_0 + - libintl >=0.24.1,<1.0a0 license: LGPL-2.1-or-later purls: [] - size: 101520 - timestamp: 1743039032850 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.0-h1dc7a0c_0.conda - sha256: 55d1f1dc1884f434936917dc6bec938d6e552e361c3936cc85f606404fe16c65 - md5: a4374a5bc561b673045db55e090cb6cb + size: 101843 + timestamp: 1747837028762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda + sha256: 809cb62fe75ca0bcf0eecd223d100b4b4aa4555eee4c3e335ab7f453506bbb78 + md5: c6dd3b852d7287ee3bf1d392f107f1ac depends: - __osx >=11.0 - - libglib 2.84.0 hdff4504_0 - - libintl >=0.23.1,<1.0a0 + - libglib 2.84.2 hbec27ea_0 + - libintl >=0.24.1,<1.0a0 license: LGPL-2.1-or-later purls: [] - size: 101237 - timestamp: 1743039115361 + size: 101786 + timestamp: 1747837093760 - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda sha256: 04093c9aafba033f55e4145336cff8f41809681dc6a61530dbd1016924cb4ded md5: b750a0ed3904efe3d9a42e7015b92e75 @@ -6967,16 +6953,18 @@ packages: - pkg:pypi/h2?source=hash-mapping size: 53888 timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda - sha256: d93b8535a2d66dabfb6e4a2a0dea1b37aab968b5f5bba2b0378f8933429fe2e3 - md5: 95e3bb97f9cdc251c0c68640e9c10ed3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + sha256: 5bd0f3674808862838d6e2efc0b3075e561c34309c5c2f4c976f7f1f57c91112 + md5: 0e6e192d4b3d95708ad192d957cf3163 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - freetype >=2.13.3,<3.0a0 + - freetype - graphite2 - icu >=75.1,<76.0a0 - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 - libgcc >=13 - libglib >=2.84.1,<3.0a0 - libstdcxx >=13 @@ -6984,53 +6972,59 @@ packages: license: MIT license_family: MIT purls: [] - size: 1729836 - timestamp: 1744894321480 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.1.0-hdfbcdba_0.conda - sha256: f9da5eb2a4bb7ddc8fa24e2cc76a219b7bb48f3a2e0ba808275adc234d0538cb - md5: 240771b26ad3d5041508c0601f241703 + size: 1730226 + timestamp: 1747091044218 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + sha256: ed21d2e7ebe6f77154b7b851dfd0c9e5d4b8c590badb54ca4094cee1cf9ad470 + md5: ecd1e793e20518bf438a0d5070465ecb depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - - freetype >=2.13.3,<3.0a0 + - freetype - graphite2 - icu >=75.1,<76.0a0 - libcxx >=18 - libexpat >=2.7.0,<3.0a0 - - libglib >=2.84.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1480598 - timestamp: 1744894285835 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.1.0-hab40de2_0.conda - sha256: 4c4f8dc935dff21259df60c0fc2c7e5d71916f3b076f539aa55e7513f00896df - md5: 7a3187cd76ed14507654286bd6021e8a + size: 1470019 + timestamp: 1747091292339 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + sha256: 244e4071229aa3b824dd2a9814c0e8b4c2b40dfb28914ec2247bf27c5c681584 + md5: 12f4520f618ff6e398a2c8e0bed1e580 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - freetype >=2.13.3,<3.0a0 + - freetype - graphite2 - icu >=75.1,<76.0a0 - libcxx >=18 - libexpat >=2.7.0,<3.0a0 - - libglib >=2.84.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1398206 - timestamp: 1744894592199 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.1.0-h8796e6f_0.conda - sha256: fcb867daea82208cc90a2c9bacc8e0879324cd360227423bb7eae24f16d16cc8 - md5: dcc4a63f231cc52197c558f5e07e0a69 + size: 1395282 + timestamp: 1747091793921 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + sha256: 26e09e2b43d498523c08c58ea485c883478b74e2fb664c0321089e5c10318d32 + md5: bccea58fbf7910ce868b084f27ffe8bd depends: - cairo >=1.18.4,<2.0a0 - - freetype >=2.13.3,<3.0a0 + - freetype - graphite2 - icu >=75.1,<76.0a0 - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 - libglib >=2.84.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -7039,8 +7033,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1124659 - timestamp: 1744895521700 + size: 1126103 + timestamp: 1747093237683 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 md5: bbf6f174dcd3254e19a2f5d2295ce808 @@ -7197,18 +7191,18 @@ packages: - pkg:pypi/imagesize?source=hash-mapping size: 10164 timestamp: 1656939625410 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 - md5: f4b39bf00c69f56ac01e020ebfac066c +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 + md5: 63ccfdc3a3ce25b027b8767eb722fca8 depends: - python >=3.9 - - zipp >=0.5 + - zipp >=3.20 + - python license: Apache-2.0 - license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=hash-mapping - size: 29141 - timestamp: 1737420302391 + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 34641 + timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 md5: c85c76dc67d75619a92f51dfbce06992 @@ -7377,22 +7371,22 @@ packages: - pkg:pypi/ipython-pygments-lexers?source=hash-mapping size: 13993 timestamp: 1737123723464 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.6-pyhd8ed1ab_0.conda - sha256: 3ba4a24fbf4465f5389844cfcd141ab800500f674fa56edc0530975de8e779bf - md5: 71f5d1458db8d9c864abb562588ff893 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + sha256: fd496e7d48403246f534c5eec09fc1e63ac7beb1fa06541d6ba71f56b30cf29b + md5: 7c9449eac5975ef2d7753da262a72707 depends: - comm >=0.1.3 - ipython >=6.1.0 - - jupyterlab_widgets >=3.0.14,<3.1.0 + - jupyterlab_widgets >=3.0.15,<3.1.0 - python >=3.9 - traitlets >=4.3.1 - widgetsnbextension >=4.0.14,<4.1.0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/ipywidgets?source=hash-mapping - size: 114372 - timestamp: 1744294685908 + - pkg:pypi/ipywidgets?source=compressed-mapping + size: 114557 + timestamp: 1746454722402 - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed md5: 0b0154421989637d424ccf0f104be51a @@ -7405,30 +7399,30 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/31/25/32c5e2c919da4faaea9ef5088437ab6e01738c49402e4ec8a6c7b49e30ef/jax-0.6.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl name: jax - version: 0.6.0 - sha256: 22b21827597c6d6b46e88543b4fc372fcddf1cc1247660452de020cc4bda1afc + version: 0.6.1 + sha256: 69a4e4506caa5466702bdfd0d7a13d1f9b7281d473885721100a3087fcabf8f9 requires_dist: - - jaxlib<=0.6.0,>=0.6.0 + - jaxlib<=0.6.1,>=0.6.1 - ml-dtypes>=0.5.0 - numpy>=1.25 - numpy>=1.26.0 ; python_full_version >= '3.12' - opt-einsum - scipy>=1.11.1 - - jaxlib==0.6.0 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.1 ; extra == 'minimum-jaxlib' - jaxlib==0.6.0 ; extra == 'ci' - - jaxlib<=0.6.0,>=0.6.0 ; extra == 'tpu' - - libtpu==0.0.13.* ; extra == 'tpu' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'tpu' + - libtpu==0.0.15.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.0,>=0.6.0 ; extra == 'cuda' - - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.0,>=0.6.0 ; extra == 'cuda12' - - jaxlib<=0.6.0,>=0.6.0 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.0,>=0.6.0 ; extra == 'cuda12-local' - - jaxlib<=0.6.0,>=0.6.0 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.0,>=0.6.0 ; extra == 'rocm' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda12' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'rocm' + - jax-rocm60-plugin<=0.6.1,>=0.6.1 ; extra == 'rocm' - kubernetes ; extra == 'k8s' requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda @@ -7450,29 +7444,48 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1556886 timestamp: 1741182198677 -- pypi: https://files.pythonhosted.org/packages/65/81/5a989ecd4819de26ebffe90a165b81ceec1c98cd20214764c4b7c15c5837/jaxlib-0.6.0-cp312-cp312-win_amd64.whl +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + sha256: 411389e87b2a393192a52f1848fea1190f4d2c8f52a0838f38088c6a0b72a562 + md5: aee167037a824dff5fb393ab62046dfb + depends: + - importlib-metadata >=4.6 + - jaxlib >=0.5.3,<=0.5.3 + - ml_dtypes >=0.4.0 + - numpy >=1.25 + - opt_einsum + - python >=3.10 + - scipy >=1.11.1 + constrains: + - cudnn >=9.8,<10.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jax?source=hash-mapping + size: 1580534 + timestamp: 1747653718316 +- pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.6.0 - sha256: 554512c1445ee69c566ef097c3dbdd09e9d9908523eef222c589a559f4220370 + version: 0.6.1 + sha256: 76d6f65f3153ffb70e20a76b915d4431823cf70a786d86ba1b76a9c5bf66a0a4 requires_dist: - scipy>=1.11.1 - numpy>=1.25 - ml-dtypes>=0.2.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_1.conda - sha256: 1fcc1bf0bef2ff4a072744d57e4f9cb5b7a4c75191d2a18767b4fcfbac76fc8c - md5: 338663f410794bf924e6264060071cfb +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda + sha256: c225000615df5829717e0b04785236f44d92077a7d2e39e4c0556b183a4216f0 + md5: e12b4670e149ca7f9287820d7653e810 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libgcc >=13 - libgrpc >=1.71.0,<1.72.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - scipy >=1.9 @@ -7482,57 +7495,57 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 69281416 - timestamp: 1741977510646 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.2-cpu_py312ha70eef1_1.conda - sha256: e26cfe941231bf5a6938b7e95872142359728adc72cc719138dada4f1dbf56b8 - md5: be79d44592d3eb64d4cf5df217ab3d7f + size: 69147479 + timestamp: 1747094254155 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda + sha256: 8eff53d14971a29caac20533dbdc49a4c00a73f99df933841342a16630211d60 + md5: f1fe1bb10662b8e1b00ca0f07711bd06 depends: - __osx >=10.15 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.5.2 + - jax >=0.5.3 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 66101366 - timestamp: 1741980061933 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.2-cpu_py312he253ca6_1.conda - sha256: 640a214bed664c901cd632693aa22148184ae5b405d92162d822e6d2e0339e17 - md5: cf9f54f9fddc99b08136c288ad1955a1 + size: 67083755 + timestamp: 1747480017557 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda + sha256: 8ca793da0f4aed6426cf4d1ee55093837daa729eb0913ca4e5c8c4f58f470652 + md5: 4771dac0bde78fccfaa0ddf588a2ce94 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - numpy >=1.19,<3 - - openssl >=3.4.1,<4.0a0 + - openssl >=3.5.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.5.2 + - jax >=0.5.3 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 55675574 - timestamp: 1741976863101 + size: 56004263 + timestamp: 1747478692111 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 @@ -7793,9 +7806,9 @@ packages: - pkg:pypi/jupyter-events?source=compressed-mapping size: 23647 timestamp: 1738765986736 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a - md5: 6ba8c206b5c6f52b82435056cf74ee46 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + sha256: 0082fb6f0afaf872affee4cde3b210f7f7497a5fb47f2944ab638fef0f0e2e77 + md5: f062e04d7cd585c937acbf194dceec36 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 @@ -7816,12 +7829,13 @@ packages: - tornado >=6.2.0 - traitlets >=5.6.0 - websocket-client >=1.7 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyter-server?source=hash-mapping - size: 327747 - timestamp: 1734702771032 + size: 344376 + timestamp: 1747083217715 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd @@ -7834,9 +7848,9 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.1-pyhd8ed1ab_0.conda - sha256: 23ef44cc7ee1f18c3ec462f27f31e75c7260a0f04b9736d70c631eba5f9c31f0 - md5: 2d29877427f2c249621557dd9c840d69 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 + md5: 1f5f3b0fcff308d8fbaa73c43af08e2f depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -7858,8 +7872,8 @@ packages: license_family: BSD purls: - pkg:pypi/jupyterlab?source=hash-mapping - size: 8466990 - timestamp: 1745361437163 + size: 8593072 + timestamp: 1746536121732 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -7895,9 +7909,9 @@ packages: - pkg:pypi/jupyterlab-server?source=hash-mapping size: 49449 timestamp: 1733599666357 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.14-pyhd8ed1ab_0.conda - sha256: c60faaf813b545e3fb2e3567e310695373cb692cd484bcf29b30dcd3d9c93ba4 - md5: 5f17eb78a0ae9db2430c94a2cba222c8 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + sha256: 6214d345861b106076e7cb38b59761b24cd340c09e3f787e4e4992036ca3cd7e + md5: ad100d215fad890ab0ee10418f36876f depends: - python >=3.9 constrains: @@ -7905,9 +7919,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab-widgets?source=compressed-mapping - size: 187102 - timestamp: 1744291153222 + - pkg:pypi/jupyterlab-widgets?source=hash-mapping + size: 189133 + timestamp: 1746450926999 - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl name: kaleido version: 0.1.0.post1 @@ -8239,60 +8253,60 @@ packages: purls: [] size: 4519402 timestamp: 1689195353551 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.3-hf95d169_0.conda - sha256: a4b493e0f76b20ff14e0f1f93c92882663c4f23c4488d8de3f6bbf1311b9c41e - md5: 022f109787a9624301ddbeb39519ff13 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 + md5: 9dde68cee0a231b19e189954ac29027b depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 560376 - timestamp: 1744843903291 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.3-ha82da77_0.conda - sha256: aa45cf608430e713575ef4193e4c0bcdfd7972db51f1c3af2fece26c173f5e67 - md5: 379db9caa727cab4d3a6c4327e4e7053 + size: 562408 + timestamp: 1747262455533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 + md5: 4ef1bdb94d42055f511bb358f2048c58 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 566462 - timestamp: 1744844034347 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda - sha256: 4db2f70a1441317d964e84c268e388110ad9cf75ca98994d1336d670e62e6f07 - md5: 27fe770decaf469a53f3e3a6d593067f + size: 568010 + timestamp: 1747262879889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf + md5: 64f0c503da58ec25ebd359e4d990afa8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 72783 - timestamp: 1745260463421 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-hcc1b750_0.conda - sha256: 9105bb8656649f9676008f95b0f058d2b8ef598e058190dcae1678d6ebc1f9b3 - md5: 5d3507f22dda24f7d9a79325ad313e44 + size: 72573 + timestamp: 1747040452262 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + sha256: 2733a4adf53daca1aa4f41fe901f0f8ee9e4c509abd23ffcd7660013772d6f45 + md5: f0a46c359722a3e84deb05cd4072d153 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 69911 - timestamp: 1745260530684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-h5773f1b_0.conda - sha256: ebc06154e9a2085e8c9edf81f8f5196b73a1698e18ac6386c9b43fb426103327 - md5: 4dc332b504166d7f89e4b3b18ab5e6ea + size: 69751 + timestamp: 1747040526774 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + sha256: 417d52b19c679e1881cce3f01cad3a2d542098fa2d6df5485aac40f01aede4d1 + md5: 3baf58a5a87e7c2f4d243ce2f8f2fe5c depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 54685 - timestamp: 1745260666631 -- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h76ddb4d_0.conda - sha256: 881244050587dc658078ee45dfc792ecb458bbb1fdc861da67948d747b117dc2 - md5: 34f03138e46543944d4d7f8538048842 + size: 54790 + timestamp: 1747040549847 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + sha256: 65347475c0009078887ede77efe60db679ea06f2b56f7853b9310787fe5ad035 + md5: 08d988e266c6ae77e03d164b83786dc4 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -8300,8 +8314,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 155548 - timestamp: 1745260818985 + size: 156292 + timestamp: 1747040812624 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -8524,45 +8538,45 @@ packages: purls: [] size: 337007 timestamp: 1745370226578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 - md5: ef504d1acbd74b7cc6849ef8af47dd03 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 + md5: ea8ac52380885ed41c1baa8f1d6d2b93 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h767d61c_2 - - libgcc-ng ==14.2.0=*_2 + - libgcc-ng ==15.1.0=*_2 + - libgomp 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 847885 - timestamp: 1740240653082 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - sha256: fddf2fc037bc95adb3b369e8866da8a71b6a67ebcfc4d7035ac4208309dc9e72 - md5: 4a74c1461a0ba47a3346c04bdccbe2ad + size: 829108 + timestamp: 1746642191935 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be + md5: 9bedb24480136bfeb81ebc81d4285e70 depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - msys2-conda-epoch <0.0a0 - - libgcc-ng ==14.2.0=*_2 - - libgomp 14.2.0 h1383e82_2 + - libgcc-ng ==15.1.0=*_2 + - libgomp 15.1.0 h1383e82_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 666343 - timestamp: 1740240717807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 - md5: a2222a6ada71fb478682efe483ce0f92 + size: 673459 + timestamp: 1746656621653 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae + md5: ddca86c7040dd0e73b2b69bd7833d225 depends: - - libgcc 14.2.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 53758 - timestamp: 1740240660904 + size: 34586 + timestamp: 1746642200749 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd md5: 68fc66282364981589ef36868b1a7c78 @@ -8649,28 +8663,28 @@ packages: purls: [] size: 165838 timestamp: 1737548342665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 - md5: fb54c4ea68b460c278d26eea89cfbcc3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 + md5: f92e6e0a3c0c0c85561ef61aa59d555d depends: - - libgfortran5 14.2.0 hf1ad2bd_2 + - libgfortran5 15.1.0 hcea5267_2 constrains: - - libgfortran-ng ==14.2.0=*_2 + - libgfortran-ng ==15.1.0=*_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 53733 - timestamp: 1740240690977 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e - md5: 090b3c9ae1282c8f9b394ac9e4773b10 + size: 34541 + timestamp: 1746642233221 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 + md5: 6b27baf030f5d6603713c7e72d3f6b9a depends: - - libgfortran5 14.2.0 h51e75f0_103 + - libgfortran5 14.2.0 h58528f3_105 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 156202 - timestamp: 1743862427451 + size: 155635 + timestamp: 1743911593527 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 md5: ad35937216e65cfeecd828979ee5e9e6 @@ -8681,31 +8695,31 @@ packages: purls: [] size: 155474 timestamp: 1743913530958 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c - md5: 556a4fdfac7287d349b8f09aba899693 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 + md5: 01de444988ed960031dbe84cf4f9b1fc depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14.2.0 + - libgcc >=15.1.0 constrains: - - libgfortran 14.2.0 + - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1461978 - timestamp: 1740240671964 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 - md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 + size: 1569986 + timestamp: 1746642212331 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 + md5: 94560312ff3c78225bed62ab59854c31 depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 14_2_0_*_103 + - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1225013 - timestamp: 1743862382377 + size: 1224385 + timestamp: 1743911552203 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 md5: 06f35a3b1479ec55036e1c9872f97f2c @@ -8718,85 +8732,85 @@ packages: purls: [] size: 806283 timestamp: 1743913488925 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - sha256: 18e354d30a60441b0bf5fcbb125b6b22fd0df179620ae834e2533d44d1598211 - md5: 0305434da649d4fb48a425e588b79ea6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd + md5: 072ab14a02164b7c0c089055368ff776 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4.6,<3.5.0a0 - libgcc >=13 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 + - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.1 *_0 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3947789 - timestamp: 1743773764878 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.0-h5c976ab_0.conda - sha256: 6345cb63429ca1d216e47502a04dcce8b9f8a4fe08547cef42bbc040dc453b9e - md5: 9d9e772b8e01ce350ddff9b277503514 + size: 3955066 + timestamp: 1747836671118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + sha256: 4445ab5b45bfeeb087ef3fd4f94c90f41261b5638916c58928600c1fc1f4f6ab + md5: eeb11015e8b75f8af67014faea18f305 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.23.1,<1.0a0 + - libintl >=0.24.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 + - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.0 *_0 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3729801 - timestamp: 1743038946054 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.0-hdff4504_0.conda - sha256: 70a414faef075e11e7a51861e9e9c953d8373b0089070f98136a7578d8cda67e - md5: 86bdf23c648be3498294c4ab861e7090 + size: 3727403 + timestamp: 1747836941924 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + sha256: 5fcc5e948706cc64e45e2454267f664ed5a1e84f15345aae04a41d852a879c0e + md5: 7bbb8961dca1b4b9f2b01b6e722111a7 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.23.1,<1.0a0 + - libintl >=0.24.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 + - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.0 *_0 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3698518 - timestamp: 1743039055882 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - sha256: 75a35a0134c7b2f3f41dbf24faa417be6a98a70db23dc1225b0c74ea45c0ce61 - md5: 6cbaea9075a4f007eb7d0a90bb9a2a09 + size: 3666180 + timestamp: 1747837044507 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + sha256: 457e297389609ff6886fef88ae7f1f6ea4f4f3febea7dd690662a50983967d6d + md5: fee05801cc5db97bec20a5e78fb3905b depends: - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 + - pcre2 >=10.45,<10.46.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.84.1 *_0 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later purls: [] - size: 3806534 - timestamp: 1743774256525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e - md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + size: 3771466 + timestamp: 1747837394297 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb + md5: fbe7d535ff9d3a168c148e07358cd5b1 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 459862 - timestamp: 1740240588123 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - sha256: 674ec5f1bf319eac98d0d6ecb9c38e0192f3cf41969a5621d62a7e695e1aa9f3 - md5: dd6b1ab49e28bcb6154cd131acec985b + size: 452635 + timestamp: 1746642113092 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 + md5: 5fbacaa9b41e294a6966602205b99747 depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: @@ -8804,8 +8818,8 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 524548 - timestamp: 1740240660967 + size: 540903 + timestamp: 1746656563815 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 md5: c3cfd72cbb14113abee7bbd86f44ad69 @@ -8923,26 +8937,26 @@ packages: purls: [] size: 638142 timestamp: 1740128665984 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.23.1-h27064b9_0.conda - sha256: 1bce54e6c76064032129ba138898a5b188d9415c533eb585f89d48b04e00e576 - md5: 4182fe11073548596723d9cd2c23b1ac +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + sha256: f0a759b35784d5a31aeaf519f8f24019415321e62e52579a3ec854a413a1509d + md5: b3f498d87404090f731cb6a474045150 depends: - __osx >=10.13 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 87157 - timestamp: 1739039171974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda - sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc - md5: 7b8faf3b5fc52744bda99c4cd1d6438d + size: 97229 + timestamp: 1746229336518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + sha256: fb6d211d9e75e6becfbf339d255ea01f7bd3a61fe6237b3dad740de1b74b3b81 + md5: 0dca9914f2722b773c863508723dfe6e depends: - __osx >=11.0 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 78921 - timestamp: 1739039271409 + size: 90547 + timestamp: 1746229257769 - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 @@ -9059,45 +9073,57 @@ packages: purls: [] size: 3732648 timestamp: 1740088548986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - sha256: f4f21dfc54b08d462f707b771ecce3fa9bc702a2a05b55654f64154f48b141ef - md5: 0e87378639676987af32fee53ba32258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c + md5: a76fd702c93cd2dfd89eff30a5fd45a8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + constrains: + - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 112709 - timestamp: 1743771086123 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - sha256: 3369b8ef0b544d17aebc530a687c0480051e825e8ffcd001b1a5f594fe276159 - md5: 8e1197f652c67e87a9ece738d82cef4f + size: 112845 + timestamp: 1746531470399 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 + md5: f87e8821e0e38a4140a7ed4f52530053 depends: - __osx >=10.13 + constrains: + - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104689 - timestamp: 1743771137842 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - sha256: 4291dde55ebe9868491dc29716b84ac3de21b8084cbd4d05c9eea79d206b8ab7 - md5: ba24e6f25225fea3d5b6912e2ac562f8 + size: 104814 + timestamp: 1746531577001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 + md5: 4e8ef3d79c97c9021b34d682c24c2044 depends: - __osx >=11.0 + constrains: + - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 92295 - timestamp: 1743771392206 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda - sha256: 1477e9bff05318f3129d37be0e64c76cce0973c4b8c73d13a467d0b7f03d157c - md5: 8d5cb0016b645d6688e2ff57c5d51302 + size: 92218 + timestamp: 1746531818330 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 + md5: 14a1042c163181e143a7522dfb8ad6ab depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + constrains: + - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104682 - timestamp: 1743771561515 + size: 104699 + timestamp: 1746531718026 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -9128,7 +9154,7 @@ packages: md5: a30dc52b2a8b6300f17eaabd2f940d41 depends: - __osx >=10.13 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: @@ -9375,76 +9401,76 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - sha256: a086289bf75c33adc1daed3f1422024504ffb5c3c8b3285c49f025c29708ed16 - md5: 962d6ac93c30b1dfc54c9cccafd1003e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 + md5: 93048463501053a00739215ea3f36324 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 918664 - timestamp: 1742083674731 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - sha256: 82695c9b16a702de615c8303387384c6ec5cf8b98e16458e5b1935b950e4ec38 - md5: 1819e770584a7e83a81541d8253cbabe + size: 916313 + timestamp: 1746637007836 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d + md5: 9377ba1ade655ea3fc831b456f4a2351 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 977701 - timestamp: 1742083869897 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - sha256: 907a95f73623c343fc14785cbfefcb7a6b4f2bcf9294fcb295c121611c3a590d - md5: 3b1e330d775170ac46dff9a94c253bd0 + size: 977388 + timestamp: 1746637093883 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 + md5: 85f443033cd5b3df82b5cabf79bddb09 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 900188 - timestamp: 1742083865246 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - sha256: c092d42d00fd85cf609cc58574ba2b03c141af5762283f36f5dd445ef7c0f4fe - md5: b58b66d4ad1aaf1c2543cbbd6afb1a59 + size: 899462 + timestamp: 1746637228408 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 + md5: a3900c97ba9e03332e9a911fe63f7d64 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: Unlicense purls: [] - size: 1081292 - timestamp: 1742083956001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da - md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + size: 1081123 + timestamp: 1746637406471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 + md5: 1cb1c67961f6dd257eae9e9691b341aa depends: - __glibc >=2.17,<3.0.a0 - - libgcc 14.2.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 3884556 - timestamp: 1740240685253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 - md5: c75da67f045c2627f59e6fcb5f4e3a9b + size: 3902355 + timestamp: 1746642227493 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b + md5: 9d2072af184b5caa29492bf2344597bb depends: - - libstdcxx 14.2.0 h8f9b012_2 + - libstdcxx 15.1.0 h8f9b012_2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 53830 - timestamp: 1740240722530 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda - sha256: 7480613af15795281bd338a4d3d2ca148f9c2ecafc967b9cc233e78ba2fe4a6d - md5: 6c1028898cf3a2032d9af46689e1b81a + size: 34647 + timestamp: 1746642266826 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 + md5: e79a094918988bb1807462cd42c83962 depends: - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 + - libdeflate >=1.24,<1.25.0a0 - libgcc >=13 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.0a0 @@ -9454,16 +9480,16 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 429381 - timestamp: 1745372713285 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_4.conda - sha256: 2bf372fb7da33a25b3c555e2f40ffab5f6b1f2a01a0c14a0a3b2f4eaa372564d - md5: b36d793dd65b28e3aeaa3a77abe71678 + size: 429575 + timestamp: 1747067001268 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + sha256: 517a34be9fc697aaf930218f6727a2eff7c38ee57b3b41fd7d1cc0d72aaac562 + md5: fc84af14a09e779f1d37ab1d16d5c4e2 depends: - __osx >=10.13 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 + - libdeflate >=1.24,<1.25.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -9471,16 +9497,16 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 400931 - timestamp: 1745372828096 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_4.conda - sha256: 5d3f7a71b70f0d88470eda8e7b6afe3095d66708a70fb912e79d56fc30b35429 - md5: 717e02c4cca2a760438384d48b7cd1b9 + size: 400062 + timestamp: 1747067122967 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + sha256: cc5ee1cffb8a8afb25a4bfd08fce97c5447f97aa7064a055cb4a617df45bc848 + md5: 4eb183bbf7f734f69875702fdbe17ea0 depends: - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 + - libdeflate >=1.24,<1.25.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.0a0 - libwebp-base >=1.5.0,<2.0a0 @@ -9488,14 +9514,14 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 370898 - timestamp: 1745372834516 -- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_4.conda - sha256: 3456e2a6dfe6c00fd0cda316f0cbb47caddf77f83d3ed4040b6ad17ec1610d2a - md5: 7d938ca70c64c5516767b4eae0a56172 + size: 370943 + timestamp: 1747067160710 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda + sha256: 1bb0b2e7d076fecc2f8147336bc22e7e6f9a4e0505e0e4ab2be1f56023a4a458 + md5: 75370aba951b47ec3b5bfe689f1bcf7f depends: - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 + - libdeflate >=1.24,<1.25.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9505,8 +9531,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 980597 - timestamp: 1745373037447 + size: 979074 + timestamp: 1747067408877 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -9618,25 +9644,25 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.0-h65c71a3_0.conda - sha256: e14b284ec7fe85522c81de383dd499bcd41cafb40442b795c3509e7c2c43c587 - md5: 14fbc598b68d4c6386978f7db09fc5ed +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + sha256: a8043a46157511b3ceb6573a99952b5c0232313283f2d6a066cec7c8dcaed7d0 + md5: fedf6bfe5d21d21d2b1785ec00a8889a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.13.7,<2.14.0a0 + - libxml2 >=2.13.8,<2.14.0a0 - xkeyboard-config - xorg-libxau >=1.0.12,<2.0a0 license: MIT/X11 Derivative license_family: MIT purls: [] - size: 673170 - timestamp: 1745716284939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - sha256: 01c471d9912c482297fd8e83afc193101ff4504c72361b6aec6d07f2fa379263 - md5: ad1f1f8238834cd3c88ceeaee8da444a + size: 707156 + timestamp: 1747911059945 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + sha256: b0b3a96791fa8bb4ec030295e8c8bf2d3278f33c0f9ad540e73b5e538e6268e7 + md5: 14dbe05b929e329dbaa6f2d0aa19466d depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -9647,11 +9673,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 692101 - timestamp: 1743794568181 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-h93c44a6_1.conda - sha256: f65c22d825ae7674dd5d1906052a6046cf50eebd1d5f03d6145a6b41c0d305b5 - md5: ac5c809731d4412fd1ccff49fae27c72 + size: 690864 + timestamp: 1746634244154 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + sha256: 4b29663164d7beb9a9066ddcb8578fc67fe0e9b40f7553ea6255cd6619d24205 + md5: e42a93a31cbc6826620144343d42f472 depends: - __osx >=10.13 - icu >=75.1,<76.0a0 @@ -9661,11 +9687,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 609618 - timestamp: 1743794752414 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h52572c6_1.conda - sha256: 7afd5879a72e37f44a68b4af3e03f37fc1a310f041bf31fad2461d9a157e823b - md5: 522fcdaebf3bac06a7b5a78e0a89195b + size: 609197 + timestamp: 1746634704204 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda + sha256: 13eb825eddce93761d965da3edaf3a42d868c61ece7d9cf21f7e2a13087c2abe + md5: d7884c7af8af5a729353374c189aede8 depends: - __osx >=11.0 - icu >=75.1,<76.0a0 @@ -9675,11 +9701,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 583561 - timestamp: 1743794674233 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - sha256: 0a013527f784f4702dc18460070d8ec79d1ebb5087dd9e678d6afbeaca68d2ac - md5: c14ff7f05e57489df9244917d2b55763 + size: 583068 + timestamp: 1746634531197 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda + sha256: 473b8a53c8df714d676ab41711551c8d250f8d799f2db5cb7cb2b177a0ce13f6 + md5: 833c2dbc1a5020007b520b044c713ed3 depends: - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -9689,8 +9715,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1513740 - timestamp: 1743795035107 + size: 1513627 + timestamp: 1746634633560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -9742,30 +9768,30 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.3-ha54dae1_0.conda - sha256: deaba16df3fd04910255188dfbd2924d07476375a2e75472859b3c6a9fabd60b - md5: 16b29a91c8177de8910477ded0f80191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + sha256: f858ef4cbc7f449da06e7e5cf62d6db0f8269e4e723144be35b0ef3531e28591 + md5: 7b6a67507141ea93541943f0c011a872 depends: - __osx >=10.13 constrains: - - openmp 20.1.3|20.1.3.* + - openmp 20.1.5|20.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 306693 - timestamp: 1744934078427 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.3-hdb05f8b_0.conda - sha256: daddebd6ebf2960bb3bae945230ed07b254f430642c739c00ebfb4a8c747a033 - md5: 9f2cc154dd184ff808c2c6afd21cb12c + size: 306529 + timestamp: 1747367226775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + sha256: 3515d520338a334c987ce2737dfba1ebd66eb1e360582c7511738ad3dc8a9145 + md5: 66771cb733ad80bd46b66f856601001a depends: - __osx >=11.0 constrains: - - openmp 20.1.3|20.1.3.* + - openmp 20.1.5|20.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 282301 - timestamp: 1744934108744 + size: 282100 + timestamp: 1747367434936 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -10225,9 +10251,9 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py311h5d046bc_0.conda - sha256: 66988aa1a624f7fab4f8c5ccb1b848ee52d9d36dd8eb8b3d0149657316ee53f9 - md5: df82417acd53257028de5425047ebc22 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda + sha256: f28273a72d25f4d7d62a9ba031d5271082afc498121bd0f6783d72b4103dbbc7 + md5: babce4d9841ebfcee64249d98eb4e0d4 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10243,11 +10269,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 9054544 - timestamp: 1745119332553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.5-py312h72c5963_0.conda - sha256: af293ba6f715983f71543ed0111e6bb77423d409c1d13062474601257c2eebca - md5: 505bcfc142b97010c162863c38d90016 + size: 9068997 + timestamp: 1747545091884 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 + md5: 17fac9db62daa5c810091c2882b28f45 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10263,11 +10289,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8543883 - timestamp: 1745119461819 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py311h27c81cd_0.conda - sha256: 3700f5b01d236dd86b770c7ff54d3c587f5d117ca60f7d17b8b82067fcc6b4f6 - md5: 5164212554b8d50a535db11621a08d54 + size: 8490501 + timestamp: 1747545073507 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda + sha256: bcb2c6fd701f3591fd4cd04580ec62ad88622c09671139a98d82ca80e2ae365f + md5: 8e850d1284fd8a90aeb4b5195a0116f3 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10282,11 +10308,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8207720 - timestamp: 1745119282736 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.5-py312h6693b03_0.conda - sha256: ac2c9e186d39087e4515999b0e42d1f7e83c22743e8aab183c3675fd972d7d34 - md5: db10cfa34ff7aa01cb6d0cf03c872f09 + size: 8182747 + timestamp: 1747545065417 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + sha256: 22bc6d7ac48df0a3130a24b9426a004977cb5dc8b5edbb3f3d2579a478121cbd + md5: 486e149e3648cbf8b92b0512db99bce3 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10301,11 +10327,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7635087 - timestamp: 1745119684441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py311h762c074_0.conda - sha256: 9e5c2e6b603bd4e165760bc354e33bd7b3551096bf0e93499637fc7229081cd3 - md5: fae31abeb9224e4a29b5e09bd3a9246d + size: 7691449 + timestamp: 1747545110970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda + sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 + md5: 9446d2629b529e92769dfb34c7c194bb depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10321,11 +10347,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7152823 - timestamp: 1745119359025 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.5-py312h7c1f314_0.conda - sha256: 982aed7df71ae0ca8bc396ae25d43fd9a4f2b15d18faca15d6c27e9efb3955be - md5: 24a41dacf9d624b069d54a6e92594540 + size: 7018728 + timestamp: 1747545122995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e + md5: fff7ab22b4f5c7036d3c2e1f92632fa4 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10341,11 +10367,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6498553 - timestamp: 1745119367238 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py311h5e411d1_0.conda - sha256: 4e2efa4ebd9de0b17d6ed4286af26bfebdf093d78b5c71c67b00614a5d7cd239 - md5: 5344f61c044719da0e95abb7d0a23c7b + size: 6437085 + timestamp: 1747545094808 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda + sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d + md5: 6612dfa4e68dd90c539f2e9f40a42514 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10361,11 +10387,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7723082 - timestamp: 1745119890450 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.5-py312h3150e54_0.conda - sha256: c497607b3e7e0946b8a2566b6587152c7cb376625559addbf606494f5bbe41dd - md5: 00c3b00c9091b7f76faba85795350c7e + size: 7800740 + timestamp: 1747545419079 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + sha256: 18d5bfd2830702fa40374aa1f03cca8b77fa5f1df92fecf52d17d5a0a246be46 + md5: f0811ca68448b3e8b53e05db7667e64d depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10381,20 +10407,19 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7132354 - timestamp: 1745119803660 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.2-pyhd8ed1ab_1.conda - sha256: bc453d60a0eff86f500a0c114fe3996543731b019e5998e664347d2ab52ee880 - md5: 7ec5afe3dc4c585abd49bb40edc96428 + size: 7028854 + timestamp: 1747545411647 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f + md5: 5402c2b046432ceb2d192a82802e7854 depends: - numpy - python >=3.9 license: BSD-2-Clause - license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping - size: 37633 - timestamp: 1734512747767 + size: 38384 + timestamp: 1747937493897 - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 md5: 5af206d64d18d6c8dfb3122b4d9e643b @@ -10523,9 +10548,9 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 627490 timestamp: 1725461370219 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_0.conda - sha256: 38285d280f84f1755b7c54baf17eccf2e3e696287954ce0adca16546b85ee62c - md5: bb539841f2a3fde210f387d00ed4bb9d +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 + md5: de356753cfdbffcde5bb1e86e3aa6cd0 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -10533,33 +10558,33 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 3121673 - timestamp: 1744132167438 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_0.conda - sha256: 7ee137b67f2de89d203e5ac2ebffd6d42252700005bf6af2bbf3dc11a9dfedbd - md5: e06e13c34056b6334a7a1188b0f4c83c + size: 3117410 + timestamp: 1746223723843 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + sha256: bcac94cb82a458b4e3164da8d9bced08cc8c3da2bc3bd7330711a3689c1464a5 + md5: 919faa07b9647beb99a0e7404596a465 depends: - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 2737547 - timestamp: 1744140967264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_0.conda - sha256: 53f825acb8d3e13bdad5c869f6dc7df931941450eea7f6473b955b0aaea1a399 - md5: 3d2936da7e240d24c656138e07fa2502 + size: 2739181 + timestamp: 1746224401118 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + sha256: 73d366c1597a10bcd5f3604b5f0734b31c23225536e03782c6a13f9be9d01bff + md5: 5c7aef00ef60738a14e0e612cfc5bcde depends: - __osx >=11.0 - ca-certificates license: Apache-2.0 license_family: Apache purls: [] - size: 3067649 - timestamp: 1744132084304 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_0.conda - sha256: 43dd7f56da142ca83c614c8b0085589650ae9032b351a901c190e48eefc73675 - md5: 4ea7db75035eb8c13fa680bb90171e08 + size: 3064197 + timestamp: 1746223530698 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + sha256: 02846553d2a4c9bde850c60824d0f02803eb9c9b674d5c1a8cce25bc387e748f + md5: 72c07e46b6766bb057018a9a74861b89 depends: - ca-certificates - ucrt >=10.0.20348.0 @@ -10568,8 +10593,8 @@ packages: license: Apache-2.0 license_family: Apache purls: [] - size: 8999138 - timestamp: 1744135594688 + size: 9025176 + timestamp: 1746227349882 - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl name: opt-einsum version: 3.4.0 @@ -11445,9 +11470,9 @@ packages: - pkg:pypi/parso?source=hash-mapping size: 75295 timestamp: 1733271352153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hc749103_2.conda - sha256: 09717569649d89caafbf32f6cda1e65aef86e5a86c053d30e4ce77fca8d27b68 - md5: 31614c73d7b103ef76faa4d83d261d34 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + sha256: 27c4014f616326240dcce17b5f3baca3953b6bc5f245ceb49c3fa1e6320571eb + md5: b90bece58b4c2bf25969b70f3be42d25 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -11456,11 +11481,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 956207 - timestamp: 1745931215744 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-hf733adb_2.conda - sha256: 93c625933bb47149e250b3c530c7305e7c1dd6c39d8358da8e3e04806545a26b - md5: c6873588a8175130eb931e91e80416c2 + size: 1197308 + timestamp: 1745955064657 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + sha256: 5b2c93ee8714c17682cd926127f1e712efef00441a79732635a80b24f5adc212 + md5: d9f1976154f2f45588251dcfc48bcdda depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -11468,11 +11493,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 858688 - timestamp: 1745931314635 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-ha881caa_2.conda - sha256: 797411a2d748c11374b84329002f3c65db032cbf012b20d9b14dba9b6ac52d06 - md5: 1a3f7708de0b393e6665c9f7494b055e + size: 1086588 + timestamp: 1745955211398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + sha256: e9ecb706b58b5a2047c077b3a1470e8554f3aad02e9c3c00cfa35d537420fea3 + md5: a52385b93558d8e6bbaeec5d61a21cd7 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -11480,11 +11505,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 621564 - timestamp: 1745931340774 -- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h99c9b8b_2.conda - sha256: 15dffc9a2d6bb6b8ccaa7cbd26b229d24f1a0a1c4f5685b308a63929c56b381f - md5: a912b2c4ff0f03101c751aa79a331831 + size: 837826 + timestamp: 1745955207242 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + sha256: 165d6f76e7849615cfa5fe5f0209b90103102db17a7b4632f933fa9c0e8d8bfe + md5: f4c483274001678e129f5cbaf3a8d765 depends: - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -11494,8 +11519,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 816653 - timestamp: 1745931851696 + size: 1040584 + timestamp: 1745955875845 - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl name: pdbp version: 1.7.0 @@ -11527,9 +11552,9 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be - md5: 5e2a7acfa2c24188af39e7944e1b3604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a + md5: d2f1c87d4416d1e7344cf92b1aaee1c4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11537,33 +11562,33 @@ packages: license: MIT license_family: MIT purls: [] - size: 381072 - timestamp: 1733698987122 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda - sha256: 7e5a9823e7e759355b954037f97d4aa53c26db1d73408571e749f8375b363743 - md5: 9d3ed4c1a6e21051bf4ce53851acdc96 + size: 398664 + timestamp: 1746011575217 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 + md5: 808d70603573b87f3427b61501fa376d depends: - __osx >=10.13 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 328548 - timestamp: 1733699069146 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 - md5: fa8e429fdb9e5b757281f69b8cc4330b + size: 341650 + timestamp: 1746011664546 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b + md5: d098a1cca9d588cd4d258d06a08a454e depends: - __osx >=11.0 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 201076 - timestamp: 1733699127167 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - sha256: 6648bd6e050f37c062ced1bbd4201dee617c3dacda1fc3a0de70335cf736f11b - md5: c720ac9a3bd825bf8b4dc7523ea49be4 + size: 213341 + timestamp: 1746011718977 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 + md5: 01617534ef71b5385ebba940a6d6150d depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -11571,8 +11596,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 455582 - timestamp: 1733699458861 + size: 472718 + timestamp: 1746016414502 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 md5: 5a5870a74432aa332f7d32180633ad05 @@ -11583,18 +11608,18 @@ packages: - pkg:pypi/pkgutil-resolve-name?source=hash-mapping size: 10693 timestamp: 1733344619659 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - sha256: ae7d3e58224d53d6b59e1f5ac5809803bb1972f0ac4fb10cd9b8c87d4122d3e0 - md5: e57da6fe54bb3a5556cf36d199ff07d8 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3 + md5: 424844562f5d337077b445ec6b1398a7 depends: - python >=3.9 - python license: MIT license_family: MIT purls: - - pkg:pypi/platformdirs?source=compressed-mapping - size: 23291 - timestamp: 1742485085457 + - pkg:pypi/platformdirs?source=hash-mapping + size: 23531 + timestamp: 1746710438805 - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda sha256: d1bbf2d80105bfc8a7ed9817888f4a1686ed393d6435572921add09cc9347c1c md5: 71ac632876630091c81c50a05ec5e030 @@ -11610,17 +11635,17 @@ packages: - pkg:pypi/plotly?source=hash-mapping size: 8022748 timestamp: 1733733328161 -- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 - md5: e9dcbce5f45f9ee500e728ae58b605b6 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc + md5: 7da7ccd349dbf6487a7778579d2bb971 depends: - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/pluggy?source=hash-mapping - size: 23595 - timestamp: 1733222855563 + - pkg:pypi/pluggy?source=compressed-mapping + size: 24246 + timestamp: 1747339794916 - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda sha256: d0bd8cce5f31ae940934feedec107480c00f67e881bf7db9d50c6fc0216a2ee0 md5: 17e487cc8b5507cd3abc09398cf27949 @@ -11637,17 +11662,17 @@ packages: - pkg:pypi/pre-commit?source=hash-mapping size: 195854 timestamp: 1742475656293 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab - md5: 3e01e386307acc60b2f89af0b2e161aa +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + sha256: 31d2fbd381d6ecc9f01d106da5e095104b235917a0b3c342887ee66ca0e85025 + md5: 7bfaef51c8364f6f5096a5a60bb83413 depends: - python >=3.9 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/prometheus-client?source=hash-mapping - size: 49002 - timestamp: 1733327434163 + size: 53514 + timestamp: 1747487319612 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b md5: d17ae9db4dc594267181bd199bf9a551 @@ -12888,9 +12913,9 @@ packages: - pkg:pypi/roman-numerals-py?source=hash-mapping size: 13348 timestamp: 1740240332327 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda - sha256: a45aec5ad66dc54884bc782ac590cd26e00f738bfcf4f55b4d63c8ca22915a30 - md5: e2fc6063859ff5fd62f983c31e4bf521 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda + sha256: 9654a1c11dda67b2782cad03f2a3793e18dbf5d9dbf5d2fdf86bdac3f2ad8a1d + md5: a82b805c84bca54329510d03656cf57b depends: - python - __glibc >=2.17,<3.0.a0 @@ -12902,15 +12927,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 391204 - timestamp: 1743037725605 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py312h3b7be25_0.conda - sha256: 10dad6a9d40e7c1856cb1f5f941ea06500610e13ee6ec4961fba59fccbaa0dc9 - md5: 5f5c19cbbd3526fad9c8ca0cca3e7346 + size: 389113 + timestamp: 1747837968273 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda + sha256: a5b168b991c23ab6d74679a6f5ad1ed87b98ba6c383b5fe41f5f6b335b10d545 + md5: ea8f79edf890d1f9b2f1bd6fbb11be1e depends: - python - - libgcc >=13 - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -12918,11 +12943,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 394023 - timestamp: 1743037659894 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py311hab9d7c2_0.conda - sha256: b9b2f76cde789dbddb4c80694fdde2b9b88efade7029afcd5b2f26b0647646f8 - md5: 31a54aa2037a6c581c6aeffc73f47085 + size: 391950 + timestamp: 1747837859184 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda + sha256: 87bab663373ff8b3461dbc73a963f86d3c4c4b442727c5efe89ba40d1d57e470 + md5: 2071cf0f0fd57946d37b825b227f5b02 depends: - python - __osx >=10.13 @@ -12933,11 +12958,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 381842 - timestamp: 1743037555943 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py312hb59e30e_0.conda - sha256: 1e5e8cd4353b0ab783d5b06ea63e367d518fb9d29c93e5467688cddcb53a8de3 - md5: 5e08436555f0f36678ed706277d261b9 + size: 378525 + timestamp: 1747837763030 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda + sha256: 26728fe74ed4a300651ae901b783fb7bddcabc7b27c3db2c62f8b2dfc64d9f01 + md5: d66be2aa77f9a1acd02a5ac59c9f5294 depends: - python - __osx >=10.13 @@ -12948,11 +12973,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 372546 - timestamp: 1743037548695 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py311hc9d6b66_0.conda - sha256: 502e0a47463bb66624abd968e3d42f264f8aafd556731f05c238b03c433320c0 - md5: 9a2d45b17a80b5a11fbd04d3ed8db6ce + size: 370933 + timestamp: 1747837775787 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda + sha256: 8928c4cacc668db0c62dd9a11415319f6fa7f06d01360e5398264941c0ab404d + md5: 3c969fae89e5832566890421a074eb92 depends: - python - python 3.11.* *_cpython @@ -12964,11 +12989,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 371285 - timestamp: 1743037539709 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py312hd60eec9_0.conda - sha256: 4c0eb990fdbaee81e137b2071afaa2a0f87b8c72d4404755704f1f95a0629c03 - md5: a92a679258b8336f134f9d8324837f77 + size: 367093 + timestamp: 1747837773204 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda + sha256: 9a2f4a7340a73bc618550738bdf22835325d4ce88a98e26a55e2b5f6e873f306 + md5: 3b50fde83777a12d5bf4511d9baecc98 depends: - python - python 3.12.* *_cpython @@ -12980,11 +13005,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 363698 - timestamp: 1743037521077 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py311ha250665_0.conda - sha256: 83bcac24bf63b83d3b9560c448f8e353cc427b39ede10d6b8e2bf829866d654f - md5: 1f1ad2bacdff1d370c13be99709130da + size: 360032 + timestamp: 1747837743255 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda + sha256: 3a76edb8f446351f36eb43a215e0df0b444f73b0f22453c0966611653b05c06f + md5: 9cbe2af742a0fa8387caef089682a92f depends: - python - vc >=14.2,<15 @@ -12998,11 +13023,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 253118 - timestamp: 1743037491506 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py312hfe1d9c4_0.conda - sha256: bf12ad2fefb2b5c5496d794a5fa0f7a2672a6dcfa9d70b181b6bbd968ade6454 - md5: c5fc315df43a26e2c1c0a6040cae12f6 + size: 249938 + timestamp: 1747837737577 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + sha256: dfea71a35d7d5eb348893e24136ce6fb1004fc9402eaafae441fa61887638764 + md5: 30d51df2ebcc324cce80fa6a317df920 depends: - python - vc >=14.2,<15 @@ -13016,12 +13041,12 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 256494 - timestamp: 1743037519734 -- pypi: https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl + size: 252939 + timestamp: 1747837730306 +- pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl name: scipy - version: 1.15.2 - sha256: e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded + version: 1.15.3 + sha256: 52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed requires_dist: - numpy>=1.23.5,<2.5 - pytest ; extra == 'test' @@ -13049,7 +13074,7 @@ packages: - jupytext ; extra == 'doc' - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - - jupyterlite-sphinx>=0.16.5 ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - mypy==1.10.0 ; extra == 'dev' - typing-extensions ; extra == 'dev' @@ -13092,7 +13117,7 @@ packages: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - numpy <2.5 @@ -13167,17 +13192,17 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-79.0.1-pyhff2d567_0.conda - sha256: 5ebc4bb71fbdc8048b08848519150c8d44b8eb18445711d3258c9d402ba87a2c - md5: fa6669cc21abd4b7b6c5393b7bc71914 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + sha256: 56ce31d15786e1df2f1105076f3650cd7c1892e0afeeb9aa92a08d2551af2e34 + md5: ea075e94dc0106c7212128b6a25bbc4c depends: - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/setuptools?source=compressed-mapping - size: 787541 - timestamp: 1745484086827 + - pkg:pypi/setuptools?source=hash-mapping + size: 748621 + timestamp: 1747807014292 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -13212,28 +13237,28 @@ packages: - pkg:pypi/sniffio?source=hash-mapping size: 15019 timestamp: 1733244175724 -- conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 - sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 - md5: 4d22a9315e78c6827f806065957d566e +- conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + sha256: 17007a4cfbc564dc3e7310dcbe4932c6ecb21593d4fec3c68610720f19e73fb2 + md5: 755cf22df8693aa0d1aec1c123fa5863 depends: - - python >=2 + - python >=3.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/snowballstemmer?source=hash-mapping - size: 58824 - timestamp: 1637143137377 -- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c - md5: 3f144b2c34f8cb5a9abd9ed23a39c561 + size: 73009 + timestamp: 1747749529809 +- conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + sha256: 7518506cce9a736042132f307b3f4abce63bf076f5fb07c1f4e506c0b214295a + md5: fb32097c717486aa34b38a9db57eb49e depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/soupsieve?source=hash-mapping - size: 36754 - timestamp: 1693929424267 + size: 37773 + timestamp: 1746563720271 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda sha256: 995f58c662db0197d681fa345522fd9e7ac5f05330d3dff095ab2f102e260ab0 md5: f7af826063ed569bb13f7207d6f949b0 @@ -13508,9 +13533,9 @@ packages: - pkg:pypi/tomli?source=hash-mapping size: 19167 timestamp: 1733256819729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 - md5: df3aee9c3e44489257a840b8354e77b9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda + sha256: d297d5c0cb91627b17d49b4c633d1bb923b8e76a8796edcc6176b0d4379508db + md5: e6aa9d8ca506982ed2a059b3c6057fc3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13519,12 +13544,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 855653 - timestamp: 1732616048886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + - pkg:pypi/tornado?source=compressed-mapping + size: 867280 + timestamp: 1747384567722 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + sha256: 4a3bb32e1c59dfc1001ed880702a3f734dfea58e99bd80fe8efa8caf65c3fd1a + md5: 2a91ae5d15666fd76f00835ade9816fd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13534,11 +13559,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 840414 - timestamp: 1732616043734 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py311h4d7f069_0.conda - sha256: 5273ba307489570df61d82a6b3365b2a27862765099cf4ef3830569fa4a30f27 - md5: 073c42a2b6b7e4219325b1f5983c7579 + size: 849653 + timestamp: 1747384561578 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda + sha256: 5923cc6ffbef6da367c30d63d82e6f751b9503d5eef6d6488e92eab6d907a476 + md5: 5776f9693ac1c592a26a2b8fb7220e4d depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -13547,11 +13572,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 858750 - timestamp: 1732616082798 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - sha256: a7b0796b9f8a02121a866ee396f0f8674c302504ccb9a3a2830699eedbc000b0 - md5: 1b977164053085b356297127d3d6be49 + size: 869019 + timestamp: 1747384732145 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + sha256: 7ee3fc14d22d24d65656dd13e893d8954e84be2f4bdfb94fdeb298fdccf0a3af + md5: 31d9b2888fc8d9757457176056ea7025 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -13560,11 +13585,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 837113 - timestamp: 1732616134981 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 - md5: 183b74c576dc7f920dae168997dbd1dd + size: 849286 + timestamp: 1747384668864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda + sha256: 675c378b691d33a09f70ff684493c2395821c0d2934b37bea8ad9f260461a048 + md5: ff86e96e324c0e08a55aee1111d93582 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -13573,12 +13598,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 858954 - timestamp: 1732616142626 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + - pkg:pypi/tornado?source=compressed-mapping + size: 867849 + timestamp: 1747384810805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + sha256: 763ab5fbc08e4f025a8fd2020f57b6c299c2839dd3f1fa19f997eb3a2e10b319 + md5: d804565fc1c83e368c7bfd8beb17c627 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -13588,11 +13613,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 842549 - timestamp: 1732616081362 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py311he736701_0.conda - sha256: 7e313f1724e5eb7d13f7a1ebd6026a378f3f58a638ba7cdc3bd452c01323bb29 - md5: 7e33077ce1bc0bf45c45a92e37432f16 + size: 849071 + timestamp: 1747384649681 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda + sha256: f727706508f0d4e18ae760478ec2488ac83f3df0687bf7a8acbbefae8e7e1a4e + md5: b022fa1dba1d3a72c5695501d017c0c8 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -13602,12 +13627,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 859456 - timestamp: 1732616376731 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - sha256: e21f24e5d598d9a31c604f510c82fbe73d756696bc70a69f11811a2ea9dd5d95 - md5: f06104f71f496b0784b35b23e30e7990 + - pkg:pypi/tornado?source=compressed-mapping + size: 870561 + timestamp: 1747384847474 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + sha256: 289c367de4e4ab4b24204c06171415581dcb6637a10635107e35d808df9fa195 + md5: 591190f2c78d8d6a8466e7aa6bb9f68a depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -13618,8 +13643,8 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 844347 - timestamp: 1732616435803 + size: 853373 + timestamp: 1747384811468 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -13631,25 +13656,25 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 - md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 +- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + sha256: 0fb78e97cad71ebf911958bf97777ec958a64a4621615a4dcc3ffb52cda7c6d0 + md5: e3465397ca4b5b60ba9fbc92ef0672f9 depends: - python >=3.9 license: Apache-2.0 AND MIT purls: - pkg:pypi/types-python-dateutil?source=hash-mapping - size: 22104 - timestamp: 1733612458611 -- pypi: https://files.pythonhosted.org/packages/4e/e0/17f3a6670db5c95dc195f346e2e7290f22ba8327c188133959389b578cbd/types_pytz-2025.2.0.20250326-py3-none-any.whl + size: 22634 + timestamp: 1747417327584 +- pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl name: types-pytz - version: 2025.2.0.20250326 - sha256: 3c397fd1b845cd2b3adc9398607764ced9e578a98a5d1fbb4a9bc9253edfb162 + version: 2025.2.0.20250516 + sha256: e0e0c8a57e2791c19f718ed99ab2ba623856b11620cb6b637e5f62ce285a7451 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl name: types-pyyaml - version: 6.0.12.20250402 - sha256: 652348fa9e7a203d4b0d21066dfb00760d3cbd5a15ebb7cf8d33c88a49546681 + version: 6.0.12.20250516 + sha256: 8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530 requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 @@ -13876,9 +13901,9 @@ packages: purls: [] size: 750733 timestamp: 1743195092905 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.30.0-pyhd8ed1ab_0.conda - sha256: 1dbb24b144f7b8400b30cca760cdee1b7de61716cd7f06d7ea82b741645823ce - md5: c0e0b4a09aa5a698a1bdd4ebfe28be38 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 + md5: c0600c1b374efa7a1ff444befee108ca depends: - distlib >=0.3.7,<1 - filelock >=3.12.2,<4 @@ -13888,8 +13913,8 @@ packages: license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 3635535 - timestamp: 1743474070226 + size: 4133755 + timestamp: 1746781585998 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 md5: 3357e4383dbce31eed332008ede242ab @@ -13910,6 +13935,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: MIT + license_family: MIT purls: [] size: 321099 timestamp: 1745806602179 @@ -14407,6 +14433,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 731883 @@ -14421,6 +14448,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=compressed-mapping size: 732224 @@ -14434,6 +14462,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 691672 @@ -14447,6 +14476,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 690063 @@ -14461,6 +14491,7 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 532851 @@ -14475,6 +14506,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 532173 @@ -14490,6 +14522,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 445673 @@ -14505,6 +14538,7 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/zstandard?source=hash-mapping size: 444685 diff --git a/pyproject.toml b/pyproject.toml index f7cf103ce7..f0c34cc6fe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ classifiers = [ # Dependencies and requirements requires-python = ">=3.11" dependencies = [ - "dags>=0.3.0", + # "dags>=0.3.1", "ipywidgets", "networkx", "numpy", @@ -129,6 +129,7 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} pdbp = "*" [tool.pixi.target.unix.pypi-dependencies] @@ -246,6 +247,7 @@ extend-ignore = [ "PT011", # pytest raises without match statement "INP001", # implicit namespace packages without init. "E721", # Use `is` and `is not` for type comparisons + "TD003", # Missing issue link -- remove again once we got rid of ad-hoc TODOs. # Things ignored to avoid conflicts with ruff-format # ================================================== @@ -254,10 +256,10 @@ extend-ignore = [ exclude = [] [tool.ruff.lint.per-file-ignores] +"src/ttsim/compute_taxes_and_transfers.py" = ["E501"] "src/ttsim/functions/all_functions_for_docs.py" = ["F401", "E501", "F403"] "src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] "src/ttsim/piecewise_functions.py" = ["PLR"] -"src/ttsim/policy_environment.py" = ["S506", "PLR"] "src/ttsim/plot_dag.py" = ["PLR"] "src/_gettsim/*" = ["E501"] "docs/**/*.ipynb" = ["T201"] @@ -265,7 +267,7 @@ exclude = [] # Files which should be ignored until we have rewritten them # ========================================================= "outdated_docs/**/*.ipynb" = ["T201"] -"tests/ttsim/test_docs.py" = ["F821"] +"src/_gettsim_tests/test_docs.py" = ["F821"] [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -285,11 +287,12 @@ no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true explicit_package_bases = true +disallow_empty_bodies = false [[tool.mypy.overrides]] module = [ "src.ttsim.plot_dag", - "tests.ttsim.test_docs", + "src._gettsim_tests.test_docs", ] disallow_untyped_defs = false ignore_errors = true @@ -297,22 +300,34 @@ ignore_errors = true [[tool.mypy.overrides]] module = [ "tests.*", - "src._gettsim_tests.*", ] disable_error_code = [ "no-untyped-def", # All tests return None, don't clutter source code. - "empty-body", # Happens for all functions decorated with @policy_input - "type-arg" # TODO: Remove once we have proper types for parameters. ] [[tool.mypy.overrides]] module = [ - "src.ttsim.*", - "src._gettsim.*", + "tests.ttsim.test_policy_environment", +] +disable_error_code = [ + "misc", # Happens when constructing param dictionaries on the fly. +] + + +[[tool.mypy.overrides]] +module = [ + "src.ttsim.aggregation_numpy", +] +disable_error_code = [ + "type-arg" # ndarray is not typed further. +] + +[[tool.mypy.overrides]] +module = [ + "src._gettsim_tests.*", ] disable_error_code = [ - "empty-body", # Happens for all functions decorated with @policy_input - "type-arg" # TODO: Remove once we have proper types for parameters. + "no-untyped-def", # All tests return None, don't clutter source code. ] [[tool.mypy.overrides]] @@ -340,7 +355,7 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore::ttsim.compute_taxes_and_transfers.FunctionsAndColumnsOverlapWarning" + "ignore::ttsim.compute_taxes_and_transfers.FunctionsAndDataOverlapWarning" ] markers = [ "wip: Tests that are work-in-progress.", diff --git a/src/_gettsim/__init__.py b/src/_gettsim/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/__init__.py +++ b/src/_gettsim/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/arbeitslosengeld_2/__init__.py b/src/_gettsim/arbeitslosengeld_2/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/arbeitslosengeld_2/__init__.py +++ b/src/_gettsim/arbeitslosengeld_2/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index ff2d3b0bfa..26706c8250 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -1,63 +1,67 @@ +"""Aggregations for Arbeitslosengeld II.""" + +from __future__ import annotations + from ttsim import AggType, agg_by_group_function # TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_erwachsene_fg(familie__erwachsen: bool, fg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_fg(familie__kind: bool, fg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_bis_6_fg(familie__kind_bis_6: bool, fg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_bis_15_fg(familie__kind_bis_15: bool, fg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_erwachsene_bg(familie__erwachsen: bool, bg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_bg(familie__kind: bool, bg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.COUNT) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) def anzahl_personen_bg(bg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_bis_17_bg(familie__kind_bis_17: bool, bg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.ANY) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.ANY) def alleinerziehend_bg(familie__alleinerziehend: bool, bg_id: int) -> bool: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_erwachsene_eg(familie__erwachsen: bool, eg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_kinder_eg(familie__kind: bool, eg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.COUNT) +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) def anzahl_personen_eg(eg_id: int) -> int: pass diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 7af85164fa..d79ea710b9 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -1,12 +1,11 @@ -"""Monthly SGB II subsitence payment (Arbeitslosengeld II). +"""Arbeitslosengeld II (unemployment benefit II).""" -Note: Since 2023, Arbeitslosengeld II is referred to as Bürgergeld. -""" +from __future__ import annotations from ttsim import policy_function -@policy_function() +@policy_function(start_date="2005-01-01") def betrag_m_bg( anspruchshöhe_m_bg: float, vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, @@ -17,24 +16,6 @@ def betrag_m_bg( """Calculate final monthly subsistence payment on household level. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - anspruchshöhe_m_bg - See :func:`anspruchshöhe_m_bg`. - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg - See :func:`vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg`. - vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg - See :func:`vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg - See :func:`vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. - erwachsene_alle_rentenbezieher_hh - See :func:`erwachsene_alle_rentenbezieher_hh`. - - Returns - ------- - float with the income by unemployment insurance on household level. - """ # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im # Alter (SGB XII) is implemented yet. We assume for now that households with only @@ -55,34 +36,19 @@ def betrag_m_bg( return out -@policy_function() +@policy_function(start_date="2005-01-01") def anspruchshöhe_m_bg( regelbedarf_m_bg: float, anzurechnendes_einkommen_m_bg: float, vermögen_bg: float, - freibetrag_vermögen_bg: float, + vermögensfreibetrag_bg: float, ) -> float: """Calculate potential basic subsistence (after income deduction and wealth check). Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - regelbedarf_m_bg - See :func:`regelbedarf_m_bg`. - anzurechnendes_einkommen_m_bg - See :func:`anzurechnendes_einkommen_m_bg`. - freibetrag_vermögen_bg - See :func:`freibetrag_vermögen_bg`. - vermögen_bg - See basic input variable :ref:`vermögen_bg <vermögen_bg>`. - - Returns - ------- - """ # Check wealth exemption - if vermögen_bg > freibetrag_vermögen_bg: + if vermögen_bg > vermögensfreibetrag_bg: out = 0.0 else: # Deduct income from various sources diff --git a/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml new file mode 100644 index 0000000000..d2b0b4f308 --- /dev/null +++ b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml @@ -0,0 +1,403 @@ +--- +parameter_regelsatz_anteilsbasiert: + name: + de: Berechnungsgrundlagen für den Regelsatz + en: Calculation basis for the standard rate + description: + de: >- + § 20 V SGB II, siehe Bekanntmachungen zu § 20. + en: >- + § 20 V SGB II, see regulations for § 20. + unit: null + reference_period: Month + type: require_converter + 2005-01-01: + basissatz: 338 + anteil_vom_basissatz_bei_zwei_erwachsenen: 0.9 + anteil_vom_basissatz_bei_weiteren_erwachsenen: 0.8 + anteil_vom_basissatz_für_kinder: + jugendliche_und_junge_erwachsene: + min_alter: 14 + max_alter: 24 + anteil: 0.8 + schulkind: + min_alter: 6 + max_alter: 13 + anteil: 0.6 + kleinkind: + min_alter: 0 + max_alter: 5 + anteil: 0.6 + reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. + note: >- + Der tatsächliche Wert unterscheidet sich zwischen Ost und West. Korrekte Werte + sind in den alten Bundesländern einschließlich Berlin (Ost) 345 Euro, in den neuen + Bundesländern 331 Euro. + Anteile vom Regelsatz für erwachsene Haushaltsmitglieder laut § 20 (3) SGB II. + Eigentliche Wirknorm ist § 20 IV SGB II i.V.m Absatz V derselben Norm. Der + Regelsatz für weitere Haushaltsmitglieder wurde als Anteil des Standardsatzes + bestimmt. + 2005-07-01: + updates_previous: true + basissatz: 338 + reference: B. v. 01.09.2005 BGBl. I S. 2718. + note: >- + Betrag unverändert. Der tatsächliche Wert unterscheidet sich zwischen Ost und + West. Hier wurde vereinfachend 338 Euro als ungewichteter Mittelwert genommen. + Korrekte Werte für die Zeit ab 1. Juli 2005 sind in den alten Bundesländern + einschließlich Berlin (Ost) 345 Euro, in den neuen Bundesländern 331 Euro. + 2006-07-01: + updates_previous: true + basissatz: 345 + reference: B. v. 20.07.2006 BGBl. I S. 1702. + 2007-07-01: + updates_previous: true + basissatz: 347 + reference: B. v. 18.06.2007 BGBl. I S. 1139. + 2008-07-01: + updates_previous: true + basissatz: 351 + reference: B. v. 26.06.2008 BGBl. I S. 1102. + 2009-07-01: + updates_previous: true + basissatz: 359 + anteil_vom_basissatz_für_kinder: + jugendliche_und_junge_erwachsene: + min_alter: 14 + max_alter: 24 + anteil: 0.8 + schulkind: + min_alter: 6 + max_alter: 13 + anteil: 0.7 + kleinkind: + min_alter: 0 + max_alter: 5 + anteil: 0.6 + reference: B. v. 17.06.2009 BGBl. I S. 1342. + 2010-07-01: + updates_previous: true + basissatz: 359 + reference: B. v. 07.06.2010 BGBl. I S. 820. Betrag unverändert. + 2011-01-01: + note: Calculation method changed, see regelsatz_nach_regelbedarfsstufen. +parameter_regelsatz_nach_regelbedarfsstufen: + name: + de: Regelsatz mit direkter Angabe für Regelbedarfsstufen + en: Standard rate with direct specification of "Regelbedarfsstufen" + description: + de: >- + § 20 V SGB II. Neufassung SGB II § 20 (1a) und (2) durch + Artikel 6 G. v. 22.12.2016 BGBl. I S. 3159. + Regelbedafstufen: + 1: Alleinstehender Erwachsener + 2: Erwachsene in Partnerschaft + 3: Erwachsene unter 25 im Haushalt der Eltern + 4: Jugendliche + 5: Ältere Kinder + 6: Jüngste Kinder + en: >- + Regelbedarfsstufen: + 1: Single Adult + 2: Adults in a partner relationship + 3: Adults under 25 in the household of their parents + 4: Adolescents + 5: Older children + 6: Youngest children + unit: Euros + reference_period: Month + type: require_converter + 2011-01-01: + 1: 364 + 2: 328 + 3: 291 + 4: + min_alter: 14 + max_alter: 17 + betrag: 287 + 5: + min_alter: 6 + max_alter: 13 + betrag: 251 + 6: + min_alter: 0 + max_alter: 5 + betrag: 215 + reference: Artikel 1 G. v. 24.03.2011 BGBl. I S. 453. + 2012-01-01: + 1: 374 + 2: 337 + 3: 299 + 4: + min_alter: 14 + max_alter: 17 + betrag: 287 + 5: + min_alter: 6 + max_alter: 13 + betrag: 251 + 6: + min_alter: 0 + max_alter: 5 + betrag: 219 + reference: V. v. 20.10.2011 BGBl. I S. 2093. + 2013-01-01: + 1: 382 + 2: 345 + 3: 306 + 4: + min_alter: 14 + max_alter: 17 + betrag: 289 + 5: + min_alter: 6 + max_alter: 13 + betrag: 255 + 6: + min_alter: 0 + max_alter: 5 + betrag: 224 + reference: B. v. 18.10.2012 BGBl. I S. 2175. + 2014-01-01: + 1: 391 + 2: 353 + 3: 313 + 4: + min_alter: 14 + max_alter: 17 + betrag: 296 + 5: + min_alter: 6 + max_alter: 13 + betrag: 261 + 6: + min_alter: 0 + max_alter: 5 + betrag: 229 + reference: B. v. 16.10.2013 BGBl. I S. 3857. + 2015-01-01: + 1: 399 + 2: 360 + 3: 320 + 4: + min_alter: 14 + max_alter: 17 + betrag: 302 + 5: + min_alter: 6 + max_alter: 13 + betrag: 267 + 6: + min_alter: 0 + max_alter: 5 + betrag: 234 + reference: B. v. 15.10.2014 BGBl. I S. 1620. + 2016-01-01: + 1: 404 + 2: 364 + 3: 324 + 4: + min_alter: 14 + max_alter: 17 + betrag: 306 + 5: + min_alter: 6 + max_alter: 13 + betrag: 270 + 6: + min_alter: 0 + max_alter: 5 + betrag: 237 + reference: B. v. 22.10.2015 BGBl. I S. 1792. + 2017-01-01: + 1: 409 + 2: 368 + 3: 327 + 4: + min_alter: 14 + max_alter: 17 + betrag: 311 + 5: + min_alter: 6 + max_alter: 13 + betrag: 291 + 6: + min_alter: 0 + max_alter: 5 + betrag: 236 + reference: G. v. 22.12.2016 BGBl. I S. 3159. + 2018-01-01: + 1: 416 + 2: 374 + 3: 332 + 4: + min_alter: 14 + max_alter: 17 + betrag: 316 + 5: + min_alter: 6 + max_alter: 13 + betrag: 296 + 6: + min_alter: 0 + max_alter: 5 + betrag: 240 + reference: V. v. 08.11.2017 BGBl. I S. 3767. + 2019-01-01: + 1: 424 + 2: 382 + 3: 339 + 4: + min_alter: 14 + max_alter: 17 + betrag: 322 + 5: + min_alter: 6 + max_alter: 13 + betrag: 302 + 6: + min_alter: 0 + max_alter: 5 + betrag: 245 + reference: V. v. 19.10.2018 BGBl. I S. 1766. + 2020-01-01: + 1: 432 + 2: 389 + 3: 345 + 4: + min_alter: 14 + max_alter: 17 + betrag: 328 + 5: + min_alter: 6 + max_alter: 13 + betrag: 308 + 6: + min_alter: 0 + max_alter: 5 + betrag: 250 + reference: V. v. 15.10.2019 BGBl. I S. 1452. + 2021-01-01: + 1: 446 + 2: 401 + 3: 357 + 4: + min_alter: 14 + max_alter: 17 + betrag: 373 + 5: + min_alter: 6 + max_alter: 13 + betrag: 309 + 6: + min_alter: 0 + max_alter: 5 + betrag: 283 + reference: G. v. 09.12.2020 BGBl. I S. 2855. + 2022-01-01: + 1: 449 + 2: 404 + 3: 360 + 4: + min_alter: 14 + max_alter: 17 + betrag: 376 + 5: + min_alter: 6 + max_alter: 13 + betrag: 311 + 6: + min_alter: 0 + max_alter: 5 + betrag: 285 + reference: V. v. 13.10.2021 BGBl. I S. 4674. + 2023-01-01: + 1: 502 + 2: 451 + 3: 402 + 4: + min_alter: 14 + max_alter: 17 + betrag: 420 + 5: + min_alter: 6 + max_alter: 13 + betrag: 348 + 6: + min_alter: 0 + max_alter: 5 + betrag: 318 + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Bürgergeld-Gesetz + 2024-01-01: + 1: 563 + 2: 506 + 3: 451 + 4: + min_alter: 14 + max_alter: 17 + betrag: 471 + 5: + min_alter: 6 + max_alter: 13 + betrag: 390 + 6: + min_alter: 0 + max_alter: 5 + betrag: 357 + reference: §2 V. v. 24.10.2024 BGBl. I Nr. 287 +kindersofortzuschlag: + name: + de: Kindersofortzuschlag für Arbeitslosengeld II + en: Instant surcharge for children for unemployment benefit + description: + de: >- + § 72 SGB II + Kinder, Jugendliche und junge Erwachsene, die Anspruch auf + Arbeitslosengeld II oder Sozialgeld haben (Regelbedarfsstufen 3, 4, 5, 6), + erhalten einen Sofortzuschlag von 20€. + en: >- + § 72 SGB II + Children, adolescents and young adults who are entitled to unemployment benefits + or social benefits (Regelbedarfsstufen 3, 4, 5, 6) receive an instant surcharge + of 20 Euro. + unit: Euros + reference_period: Month + type: scalar + 2022-07-01: + value: 20 + 2025-01-01: + value: 25 + note: >- + Gesetz zur Fortentwicklung des Steuerrechts und zur Anpassung des Einkommen- + steuertarifs (Steuerfortentwicklungsgesetz - SteFeG) + reference: Art. 7 G. v. 30.12.2024 BGBl. 2024 Nr. 449. +parameter_mehrbedarf_alleinerziehend: + name: + de: Parameter zur Berechnung des Mehrbedarfs von Alleinerziehenden + en: Parameter for calculating the additional need of single parents + description: + de: >- + § 21 (3) Nr. 1 SGB II. Mehrbedarfe für Alleinerziehende sind als Anteile vom + maßgebenden Regelbedarf angegeben. ``kind_bis_6_oder_mehrere_bis_15`` gibt den + Anteil bei mind. einem Kind bis 6 Jahren oder zwei oder drei Kindern bis 15 Jahre + an. ``min_1_kind`` gibt den maßgeblichen Anteil vom Regelbedarf je Kind an, wenn + der daraus resultierende Anspruch größer ist als der Anspruch durch + ``kind_bis_6_oder_mehrere_bis_15``. ``max`` gibt den Maximalanteil vom Regelbedarf + an, der für Alleinerziehende als Mehrbedarf berücksichtigt wird. + en: >- + § 21 (3) Nr. 1 SGB II. Additional needs for single parents are given as shares of + the relevant Regelbedarf. ``kind_bis_6_oder_mehrere_bis_15`` gives the share when + there is at least one child up to 6 years or two or three children up to 15 years. + ``min_1_kind`` gives the relevant share of the Regelbedarf per child when the + resulting claim is greater than the claim through + ``kind_bis_6_oder_mehrere_bis_15``. ``max`` gives the maximum share of the + Regelbedarf that is considered as an additional need for single parents. + unit: Share + reference_period: Month + type: dict + 2005-01-01: + min_1_kind: 0.12 + kind_bis_6_oder_mehrere_bis_15: 0.36 + max: 0.6 + reference: G. v. 24.12.2003 BGBl. I S. 2954. diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 49106b3506..713e4be844 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -1,9 +1,23 @@ -"""Income relevant for calculation of Arbeitslosengeld II / Bürgergeld.""" +"""Relevant income for Arbeitslosengeld II.""" -from ttsim import piecewise_polynomial, policy_function +from __future__ import annotations +from typing import TYPE_CHECKING -@policy_function() +from ttsim import ( + PiecewisePolynomialParamValue, + get_piecewise_parameters, + param_function, + piecewise_polynomial, + policy_function, +) +from ttsim.shared import upsert_tree + +if TYPE_CHECKING: + from ttsim import RawParam + + +@policy_function(start_date="2005-01-01") def anzurechnendes_einkommen_m( nettoeinkommen_nach_abzug_freibetrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, @@ -19,24 +33,6 @@ def anzurechnendes_einkommen_m( necessary because the Kindergeld received by the child may enter `anzurechnendes_einkommen_m_hh` twice: once as Kindergeld and once as Kindergeldübertrag. - - Parameters - ---------- - nettoeinkommen_nach_abzug_freibetrag_m - See :func:`nettoeinkommen_nach_abzug_freibetrag_m`. - unterhalt__tatsächlich_erhaltener_betrag_m - See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - kindergeld_zur_bedarfsdeckung_m - See :func:`kindergeld_zur_bedarfsdeckung_m`. - kindergeldübertrag_m - See :func:`kindergeldübertrag_m`. - - Returns - ------- - Income according to SGB II. - """ return ( nettoeinkommen_nach_abzug_freibetrag_m @@ -47,7 +43,7 @@ def anzurechnendes_einkommen_m( ) -@policy_function() +@policy_function(start_date="2005-01-01") def nettoeinkommen_nach_abzug_freibetrag_m( nettoeinkommen_vor_abzug_freibetrag_m: float, anrechnungsfreies_einkommen_m: float, @@ -56,23 +52,11 @@ def nettoeinkommen_nach_abzug_freibetrag_m( (Arbeitslosengeld II / Bürgergeld). Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - nettoeinkommen_vor_abzug_freibetrag_m - See :func:`nettoeinkommen_vor_abzug_freibetrag_m`. - anrechnungsfreies_einkommen_m - See :func:`anrechnungsfreies_einkommen_m`. - - Returns - ------- - Income after taxes, social insurance contributions, and other deductions. - """ return nettoeinkommen_vor_abzug_freibetrag_m - anrechnungsfreies_einkommen_m -@policy_function() +@policy_function(start_date="2005-01-01") def nettoeinkommen_vor_abzug_freibetrag_m( bruttoeinkommen_m: float, einkommensteuer__betrag_m_sn: float, @@ -84,24 +68,6 @@ def nettoeinkommen_vor_abzug_freibetrag_m( Bürgergeld). Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttoeinkommen_m - See :func:`bruttoeinkommen_m`. - einkommensteuer__betrag_m_sn - See :func:`einkommensteuer__betrag_m_sn`. - solidaritätszuschlag__betrag_m_sn - See :func:`solidaritätszuschlag__betrag_m_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - sozialversicherung__beiträge_versicherter_m - See :func:`sozialversicherung__beiträge_versicherter_m`. - - Returns - ------- - Income after taxes, social insurance contributions, and other deductions. - """ return ( bruttoeinkommen_m @@ -111,7 +77,7 @@ def nettoeinkommen_vor_abzug_freibetrag_m( ) -@policy_function() +@policy_function(start_date="2005-01-01") def bruttoeinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, @@ -126,34 +92,8 @@ def bruttoeinkommen_m( """Sum up the gross income for calculation of basic subsistence. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`hh_id <hh_id>`. - einkommensteuer__einkünfte__sonstige__ohne_renten_m - See basic input variable :ref:`einkommensteuer__einkünfte__sonstige__ohne_renten_m <einkommensteuer__einkünfte__sonstige__ohne_renten_m>`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m <einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m>`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m <einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m>`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. - sozialversicherung__rente__altersrente__betrag_m - See :func:`sozialversicherung__rente__altersrente__betrag_m`. - sozialversicherung__rente__private_rente_betrag_m - See :func:`sozialversicherung__rente__private_rente_betrag_m`. - sozialversicherung__arbeitslosen__betrag_m - See :func:`sozialversicherung__arbeitslosen__betrag_m`. - elterngeld__betrag_m - See :func:`elterngeld__betrag_m`. - - Returns - ------- - Income by unemployment insurance before tax. - """ - out = ( + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m @@ -165,40 +105,19 @@ def bruttoeinkommen_m( + elterngeld__betrag_m ) - return out - -@policy_function(end_date="2005-09-30") -def nettoquote_m( +@policy_function(start_date="2005-01-01", end_date="2005-09-30") +def nettoquote( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__betrag_m_sn: float, solidaritätszuschlag__betrag_m_sn: float, einkommensteuer__anzahl_personen_sn: int, sozialversicherung__beiträge_versicherter_m: float, - arbeitsl_geld_2_params: dict, + abzugsfähige_pauschalen: dict[str, float], ) -> float: """Calculate share of net to gross wage. Quotienten von bereinigtem Nettoeinkommen und Bruttoeinkommen. § 3 Abs. 2 Alg II-V. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - einkommensteuer__betrag_m_sn - See :func:`einkommensteuer__betrag_m_sn`. - solidaritätszuschlag__betrag_m_sn - See :func:`solidaritätszuschlag__betrag_m_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - sozialversicherung__beiträge_versicherter_m - See :func:`sozialversicherung__beiträge_versicherter_m`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ # Bereinigtes monatliches Einkommen aus Erwerbstätigkeit nach § 11 Abs. 2 Nr. 1-5. alg2_2005_bne = max( @@ -207,8 +126,8 @@ def nettoquote_m( - (einkommensteuer__betrag_m_sn / einkommensteuer__anzahl_personen_sn) - (solidaritätszuschlag__betrag_m_sn / einkommensteuer__anzahl_personen_sn) - sozialversicherung__beiträge_versicherter_m - - arbeitsl_geld_2_params["abzugsfähige_pausch"]["werbung"] - - arbeitsl_geld_2_params["abzugsfähige_pausch"]["versicherung"] + - abzugsfähige_pauschalen["werbung"] + - abzugsfähige_pauschalen["versicherung"] ), 0, ) @@ -220,39 +139,21 @@ def nettoquote_m( @policy_function( + start_date="2005-01-01", end_date="2005-09-30", leaf_name="anrechnungsfreies_einkommen_m", ) def anrechnungsfreies_einkommen_m_basierend_auf_nettoquote( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - nettoquote_m: float, - arbeitsl_geld_2_params: dict, + nettoquote: float, + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: PiecewisePolynomialParamValue, ) -> float: - """Share of income which remains to the individual. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - nettoquote_m - See :func:`nettoquote_m`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - - """ - out = piecewise_polynomial( + """Share of income which remains to the individual.""" + return piecewise_polynomial( x=einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, - thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ - "intercepts_at_lower_thresholds" - ], - rates_multiplier=nettoquote_m, + parameters=parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, + rates_multiplier=nettoquote, ) - return out @policy_function(start_date="2005-10-01") @@ -261,7 +162,8 @@ def anrechnungsfreies_einkommen_m( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, anzahl_kinder_bis_17_bg: int, einkommensteuer__anzahl_kinderfreibeträge: int, - arbeitsl_geld_2_params: dict, + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: PiecewisePolynomialParamValue, + parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: PiecewisePolynomialParamValue, ) -> float: """Calculate share of income, which remains to the individual since 10/2005. @@ -269,24 +171,6 @@ def anrechnungsfreies_einkommen_m( Sozialgesetzbuch (SGB) Zweites Buch (II) - Bürgergeld, Grundsicherung für Arbeitsuchende. SGB II §11b Abs 3 https://www.gesetze-im-internet.de/sgb_2/__11b.html - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m <einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m>`. - anzahl_kinder_bis_17_bg - See :func:`anzahl_kinder_bis_17_bg`. - einkommensteuer__anzahl_kinderfreibeträge - See :func: - `einkommensteuer__anzahl_kinderfreibeträge`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ # Beneficiaries who live with a minor child in a group home or who have a minor # child have slightly different thresholds. We currently do not consider the second @@ -299,19 +183,42 @@ def anrechnungsfreies_einkommen_m( if anzahl_kinder_bis_17_bg > 0 or einkommensteuer__anzahl_kinderfreibeträge > 0: out = piecewise_polynomial( x=eink_erwerbstätigkeit, - thresholds=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei_kinder"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params[ - "eink_anr_frei_kinder" - ]["intercepts_at_lower_thresholds"], + parameters=parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg, ) else: out = piecewise_polynomial( x=eink_erwerbstätigkeit, - thresholds=arbeitsl_geld_2_params["eink_anr_frei"]["thresholds"], - rates=arbeitsl_geld_2_params["eink_anr_frei"]["rates"], - intercepts_at_lower_thresholds=arbeitsl_geld_2_params["eink_anr_frei"][ - "intercepts_at_lower_thresholds" - ], + parameters=parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, ) return out + + +@param_function(start_date="2005-01-01") +def parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg( + raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: RawParam, +) -> PiecewisePolynomialParamValue: + """Parameter for calculation of income not subject to transfer withdrawal when + children are not in the Bedarfsgemeinschaft.""" + return get_piecewise_parameters( + leaf_name="parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg", + func_type="piecewise_linear", + parameter_dict=raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, + ) + + +@param_function(start_date="2005-10-01") +def parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg( + raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: RawParam, + raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: RawParam, +) -> PiecewisePolynomialParamValue: + """Parameter for calculation of income not subject to transfer withdrawal when + children are in the Bedarfsgemeinschaft.""" + updated_parameters: dict[int, dict[str, float]] = upsert_tree( + base=raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, + to_upsert=raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg, + ) + return get_piecewise_parameters( + leaf_name="parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg", + func_type="piecewise_linear", + parameter_dict=updated_parameters, + ) diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge.yaml" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge.yaml" new file mode 100644 index 0000000000..0661d29b25 --- /dev/null +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge.yaml" @@ -0,0 +1,257 @@ +--- +obergrenze_vermögensgrundfreibetrag: + name: + de: Maximaler Vermögensgrundfreibetrag + en: Maximum of basic allowance + description: + de: >- + § 12 (2) Satz 1 Nr. 1 SGB II. Ausnahmeregelung für Personen, die vor 1948 geboren + wurden. + en: Differs by birth year. + unit: Euros + reference_period: null + type: dict + 2005-01-01: + 1947: 33800 + 1948: 13000 + 1958: 13000 + 1964: 13000 + reference: Artikel 1 G. v. 23.12.2002 BGBl. I S. 4607. + 2006-08-01: + 1947: 33800 + 1948: 9750 + 1958: 9750 + 1964: 9750 + reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. + 2008-01-01: + 1947: 33800 + 1948: 9750 + 1958: 9900 + 1964: 10050 + note: Artikel 1 G. v. 20.04.2007 BGBl. I S. 554. + 2023-01-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Abolished in the Bürgergeld-Gesetz +vermögensgrundfreibetrag_je_lebensjahr: + name: + de: Vermögensgrundfreibetrag je Lebensjahr + en: Basic allowance per year of life + description: + de: § 12 (2) Satz 1 Nr. 1 SGB II. Gestaffelt nach Geburtsjahr + en: Differs by year of birth. + unit: Euros + reference_period: null + type: dict + 2005-01-01: + 1947: 520 + 1948: 200 + reference: Artikel 1 G. v. 30.12.2002 BGBl. I S. 4619. + 2006-08-01: + 1947: 520 + 1948: 150 + reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. + 2023-01-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Abolished in the Bürgergeld-Gesetz +vermögensfreibetrag_austattung: + name: + de: Vermögensfreibetrag für Erstausstattung + en: Allowance for furniture + description: + de: § 12 (2) Satz 1 Nr. 4 SGB II. + en: null + unit: Euros + reference_period: null + type: scalar + 2005-01-01: + value: 750 + reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. + 2023-01-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Abolished in the Bürgergeld-Gesetz +vermögensgrundfreibetrag_je_kind: + name: + de: Vermögensgrundfreibetrag je Kind + en: Wealth exemption per child + description: + de: § 12 (2) Satz 1 Nr. 1 SGB II. + en: null + unit: Euros + reference_period: null + type: scalar + 2005-01-01: + value: 4100 + reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. + 2006-08-01: + value: 3100 + reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. + 2023-01-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Abolished in the Bürgergeld-Gesetz +vermögensfreibetrag_je_person_nach_karenzzeit: + name: + de: Schonvermögen beim Bürgergeld + en: Protected wealth for the citizen's income + description: + de: >- + Vermögensfreibetrag pro Mitglied der Bedarfsgemeinschaft, der sich nach Ablauf + einer Karenzzeit verändert. + en: >- + Wealth exemption per member of the Bedarfsgemeinschaft, which changes after the + end of the Karenzzeit. + unit: Euros + reference_period: null + type: dict + 2023-01-01: + während_karenzzeit: 40000 + normaler_satz: 15000 + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Bürgergeld-Gesetz +abzugsfähige_pauschalen: + name: + de: Abzugsfähige Pauschalen für Werbungskosten und Versicherung + en: Allowance for expenses and insurance + description: + de: >- + § 6 (1) Nr. 3 a) ALG II-V. 2005-01.01 bis 2016-07-31. Betrag mit V. v. 26.07 + .2016 BGBl. I S. 1858 entfallen. Wie entfallen? + § 3 Alg II-V. Seit 01.01.2008 in § 6 Alg II-V. + en: null + unit: Euros + reference_period: Month + type: dict + 2005-01-01: + versicherung: 30 + werbung: 15.33 + reference: V. v. 20.10.2004 BGBl. I S. 2622 +raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: + name: + de: >- + Parameter der Berechnung des anrechnungsfreien Einkommens wenn keine Kinder in + Bedarfsgemeinschaft leben + en: >- + Parameter for calculation of income not subject to transfer withdrawal when no + children are in the Bedarfsgemeinschaft + description: + de: >- + Parameter für die Berechnung des anrechnungsfreien Einkommens ohne Kinder in der + Bedarfsgemeinschaft. § 30 SGB II. Seit 01.10.2005 zudem definiert durch Freibetrag + in § 11 SGB II, s. § 67 SGB II. Seit 01.04.2011 § 11b (2) SGB II (neugefasst durch + B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 G. v. 24.03.2011 BGBl. I S. 453). Type + require_converter um als Basis für + raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg zu dienen. + en: >- + Parameter for calculation of income not subject to transfer withdrawal when no + children are in the Bedarfsgemeinschaft. § 30 SGB II. Since 01.10.2005 also + defined by exemption in § 11 SGB II, see § 67 SGB II. Since 01.04.2011 § 11b (2) + SGB II (amended by B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 G. v. 24.03.2011 + BGBl. I S. 453). + Requires converter in order to be used as base for + raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg. + unit: Euros + reference_period: Month + type: require_converter + 2005-01-01: + reference: Artikel 1. G. v. 24.12.2003 BGBl. I S. 2954. + 0: + lower_threshold: -inf + upper_threshold: 0 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 0 + upper_threshold: 400 + rate_linear: 0.15 + 2: + upper_threshold: 900 + rate_linear: 0.3 + 3: + upper_threshold: 1500 + rate_linear: 0.15 + 4: + upper_threshold: inf + rate_linear: 0 + 2005-10-01: + reference: Artikel 1 G. v. 14.08.2005 BGBl. I S. 2407. + 0: + lower_threshold: -inf + upper_threshold: 0 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 0 + upper_threshold: 100 + rate_linear: 1.0 + 2: + upper_threshold: 800 + rate_linear: 0.2 + 3: + upper_threshold: 1200 + rate_linear: 0.1 + 4: + upper_threshold: inf + rate_linear: 0 + 2011-04-01: + reference: Artikel 1 G. v. 20.12.2011 BGBl. I 2854. + note: >- + Neufassung des SGB II. B. v. 13.5.2011 BGBl. I S. 850. Artikel 5. + ToDo: Check these laws -- did they really happen months after the date of the + policy change? + updates_previous: true + 2: + upper_threshold: 1000 + 2023-07-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Bürgergeld-Gesetz + 0: + lower_threshold: -inf + upper_threshold: 0 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 0 + upper_threshold: 100 + rate_linear: 1.0 + 2: + upper_threshold: 520 + rate_linear: 0.2 + 3: + upper_threshold: 1000 + rate_linear: 0.3 + 4: + upper_threshold: 1200 + rate_linear: 0.1 + 5: + upper_threshold: inf + rate_linear: 0 +raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: + name: + de: >- + Parameter der Berechnung des anrechnungsfreien Einkommens wenn Kinder in der + Bedarfsgemeinschaft leben + en: >- + Parameter for calculation of income not subject to transfer withdrawal when + children are in the Bedarfsgemeinschaft + description: + de: >- + Obere Einkommensgrenze bei anzurechnendem Einkommen, Intervall 3, + Bedarfsgemeinschaft mit Kindern. Gilt statt der Parameter in + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg für Leistungsbezieher, die + mit minderjährigem Kind in BG leben oder die ein minderjähriges Kind haben + (zweiteres wird aktuell noch nicht im Code beachtet). § 30 SGB II. Seit 01.04.2011 + § 11b SGB II (neugefasst durch B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 G. v. + 24.03.2011 BGBl. I S. 453). Bezieht sich auf die Parameter in + parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg. + en: null + unit: Euros + reference_period: Month + type: require_converter + 2005-10-01: + reference: Artikel 1 G. v. 14.08.2005 BGBl. I S. 2407. + 3: + upper_threshold: 1500 + 2023-07-01: + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Bürgergeld-Gesetz + 4: + upper_threshold: 1500 diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 35b3bf8e66..35e356287d 100644 --- "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -1,84 +1,47 @@ -"""Wealth checks for Arbeitslosengeld II/Bürgergeld.""" +"""Freibeträge für Vermögen in Arbeitslosengeld II.""" + +from __future__ import annotations from ttsim import policy_function -@policy_function() +@policy_function(start_date="2005-01-01", end_date="2022-12-31") def grundfreibetrag_vermögen( familie__kind: bool, alter: int, geburtsjahr: int, maximaler_grundfreibetrag_vermögen: float, - arbeitsl_geld_2_params: dict, + vermögensgrundfreibetrag_je_lebensjahr: dict[int, float], ) -> float: """Calculate wealth exemptions based on individuals age. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - alter - See basic input variable :ref:`alter <alter>`. - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - maximaler_grundfreibetrag_vermögen - See :func:`maximaler_grundfreibetrag_vermögen`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ - threshold_years = list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].keys()) + threshold_years = list(vermögensgrundfreibetrag_je_lebensjahr.keys()) if geburtsjahr <= threshold_years[0]: - out = ( - next(iter(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())) - * alter - ) + out = next(iter(vermögensgrundfreibetrag_je_lebensjahr.values())) * alter elif (geburtsjahr >= threshold_years[1]) and (not familie__kind): - out = ( - list(arbeitsl_geld_2_params["vermögensgrundfreibetrag"].values())[1] * alter - ) + out = list(vermögensgrundfreibetrag_je_lebensjahr.values())[1] * alter else: out = 0.0 return min(out, maximaler_grundfreibetrag_vermögen) -@policy_function() +# TODO(@MImmesberger): Parameter should be defined as a piecewise_constant. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/911 +@policy_function(start_date="2005-01-01", end_date="2022-12-31") def maximaler_grundfreibetrag_vermögen( geburtsjahr: int, familie__kind: bool, - arbeitsl_geld_2_params: dict, + obergrenze_vermögensgrundfreibetrag: dict[int, float], ) -> float: """Calculate maximal wealth exemptions by year of birth. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id <hh_id>`. - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ - threshold_years = list( - arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].keys() - ) - obergrenzen = list( - arbeitsl_geld_2_params["vermögensgrundfreibetrag_obergrenze"].values() - ) + threshold_years = list(obergrenze_vermögensgrundfreibetrag.keys()) + obergrenzen = list(obergrenze_vermögensgrundfreibetrag.values()) if familie__kind: out = 0.0 else: @@ -95,107 +58,62 @@ def maximaler_grundfreibetrag_vermögen( @policy_function(start_date="2023-01-01") -def freibetrag_vermögen_in_karenzzeit_bg( - arbeitsl_geld_2_params: dict, +def vermögensfreibetrag_in_karenzzeit_bg( anzahl_personen_bg: int, + vermögensfreibetrag_je_person_nach_karenzzeit: dict[str, float], ) -> float: """Calculate wealth exemptions since 2023 during Karenzzeit. This variable is also reffered to as 'erhebliches Vermögen'. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - <arbeitsl_geld_2_params>`. - anzahl_personen_bg - See :func:`anzahl_personen_bg`. - arbeitslosengeld_2_bezug_im_vorjahr - See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr <arbeitslosengeld_2_bezug_im_vorjahr>`. - - - Returns - ------- - """ - params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] - out = ( - params["während_karenzzeit"] - + (anzahl_personen_bg - 1) * params["normaler_satz"] + return ( + vermögensfreibetrag_je_person_nach_karenzzeit["während_karenzzeit"] + + (anzahl_personen_bg - 1) + * vermögensfreibetrag_je_person_nach_karenzzeit["normaler_satz"] ) - return out - -@policy_function(end_date="2022-12-31", leaf_name="freibetrag_vermögen_bg") -def freibetrag_vermögen_bg_bis_2022( +@policy_function( + start_date="2005-01-01", end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg" +) +def vermögensfreibetrag_bg_bis_2022( grundfreibetrag_vermögen_bg: float, anzahl_kinder_bis_17_bg: int, anzahl_personen_bg: int, - arbeitsl_geld_2_params: dict, + vermögensfreibetrag_austattung: float, + vermögensgrundfreibetrag_je_kind: float, ) -> float: """Calculate actual exemptions until 2022. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - grundfreibetrag_vermögen_bg - See :func:`grundfreibetrag_vermögen_bg`. - anzahl_kinder_bis_17_bg - See :func:`anzahl_kinder_bis_17_bg`. - anzahl_personen_bg - See :func:`anzahl_personen_bg`. - - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ - out = ( + return ( grundfreibetrag_vermögen_bg - + anzahl_kinder_bis_17_bg * arbeitsl_geld_2_params["vermögensfreibetrag_kind"] - + anzahl_personen_bg * arbeitsl_geld_2_params["vermögensfreibetrag_austattung"] + + anzahl_kinder_bis_17_bg * vermögensgrundfreibetrag_je_kind + + anzahl_personen_bg * vermögensfreibetrag_austattung ) - return out -@policy_function(start_date="2023-01-01", leaf_name="freibetrag_vermögen_bg") -def freibetrag_vermögen_bg_ab_2023( - arbeitsl_geld_2_params: dict, +@policy_function(start_date="2023-01-01", leaf_name="vermögensfreibetrag_bg") +def vermögensfreibetrag_bg_ab_2023( anzahl_personen_bg: int, - freibetrag_vermögen_in_karenzzeit_bg: float, + vermögensfreibetrag_in_karenzzeit_bg: float, arbeitslosengeld_2_bezug_im_vorjahr: bool, + vermögensfreibetrag_je_person_nach_karenzzeit: dict[str, float], ) -> float: """Calculate actual wealth exemptions since 2023. During the first year (Karenzzeit), the wealth exemption is substantially larger. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - anzahl_personen_bg - See :func:`anzahl_personen_bg`. - freibetrag_vermögen_in_karenzzeit_bg - See :func:`freibetrag_vermögen_in_karenzzeit_bg`. - arbeitslosengeld_2_bezug_im_vorjahr - See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr <arbeitslosengeld_2_bezug_im_vorjahr>`. - - - Returns - ------- - """ - params = arbeitsl_geld_2_params["schonvermögen_bürgergeld"] if arbeitslosengeld_2_bezug_im_vorjahr: - out = anzahl_personen_bg * params["normaler_satz"] + out = ( + anzahl_personen_bg + * vermögensfreibetrag_je_person_nach_karenzzeit["normaler_satz"] + ) else: - out = freibetrag_vermögen_in_karenzzeit_bg + out = vermögensfreibetrag_in_karenzzeit_bg return out diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index d6f0e4512f..3a842432f4 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import FKType, policy_input diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 2276101ffb..6f7211f0ff 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -1,18 +1,25 @@ -"""Module for the calculation of the Kindergeldübertrag.""" +"""Kindergeldübertrag for Arbeitslosengeld II.""" -import numpy +from __future__ import annotations + +from typing import TYPE_CHECKING from ttsim import AggType, agg_by_p_id_function, join, policy_function +if TYPE_CHECKING: + from ttsim.config import numpy_or_jax as np + -@agg_by_p_id_function(agg_type=AggType.SUM) +@agg_by_p_id_function(start_date="2005-01-01", agg_type=AggType.SUM) def kindergeldübertrag_m( differenz_kindergeld_kindbedarf_m: float, kindergeld__p_id_empfänger: int, p_id: int ) -> float: pass -@policy_function(end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m") +@policy_function( + start_date="2005-01-01", end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m" +) def _mean_kindergeld_per_child_gestaffelt_m( kindergeld__betrag_m: float, kindergeld__anzahl_ansprüche: int, @@ -22,16 +29,6 @@ def _mean_kindergeld_per_child_gestaffelt_m( Returns the average Kindergeld per child. If there are no children, the function returns 0. Helper function for `kindergeld_zur_bedarfsdeckung_m`. - Parameters - ---------- - kindergeld__betrag_m - See :func:`kindergeld__betrag_m`. - kindergeld__anzahl_ansprüche - See :func:`kindergeld__anzahl_ansprüche`. - - Returns - ------- - """ if kindergeld__anzahl_ansprüche > 0: out = kindergeld__betrag_m / kindergeld__anzahl_ansprüche @@ -45,34 +42,24 @@ def _mean_kindergeld_per_child_gestaffelt_m( leaf_name="kindergeld_pro_kind_m", ) def _mean_kindergeld_per_child_ohne_staffelung_m( - kindergeld_params: dict, kindergeld__anzahl_ansprüche: int, + kindergeld__satz: float, ) -> float: """Kindergeld per child. Returns the (average) Kindergeld per child. Helper function for `kindergeld_zur_bedarfsdeckung_m`. - Parameters - ---------- - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - alter - See basic input variable :ref:`alter`. - - Returns - ------- - """ - return kindergeld_params["kindergeld"] if kindergeld__anzahl_ansprüche > 0 else 0.0 + return kindergeld__satz if kindergeld__anzahl_ansprüche > 0 else 0.0 -@policy_function(vectorization_strategy="not_required") +@policy_function(start_date="2005-01-01", vectorization_strategy="not_required") def kindergeld_zur_bedarfsdeckung_m( kindergeld_pro_kind_m: float, - kindergeld__p_id_empfänger: numpy.ndarray[int], - p_id: numpy.ndarray[int], -) -> numpy.ndarray[float]: + kindergeld__p_id_empfänger: np.ndarray, # int + p_id: np.ndarray, # int +) -> np.ndarray: # float """Kindergeld that is used to cover the SGB II Regelbedarf of the child. Even though the Kindergeld is paid to the parent (see function @@ -82,18 +69,6 @@ def kindergeld_zur_bedarfsdeckung_m( children divided by the amount of children. Hence, the age of the child (in comparison to siblings) does not matter. - Parameters - ---------- - kindergeld__betrag_m - See :func:`kindergeld__betrag_m`. - kindergeld__p_id_empfänger - See :func:`kindergeld__p_id_empfänger`. - p_id - See :func:`p_id`. - - Returns - ------- - """ return join( kindergeld__p_id_empfänger, @@ -103,7 +78,7 @@ def kindergeld_zur_bedarfsdeckung_m( ) -@policy_function() +@policy_function(start_date="2005-01-01") def differenz_kindergeld_kindbedarf_m( regelbedarf_m_bg: float, nettoeinkommen_nach_abzug_freibetrag_m: float, @@ -121,27 +96,6 @@ def differenz_kindergeld_kindbedarf_m( Kindergeldübertrag (`kindergeldübertrag_m`) is obtained by aggregating this function to the parental level. - - Parameters - ---------- - regelbedarf_m_bg - See :func:`regelbedarf_m_bg`. - nettoeinkommen_nach_abzug_freibetrag_m - See :func:`_arbeitsl_geld_2 - wohngeld__anspruchshöhe_m_bg - See :func:`wohngeld__anspruchshöhe_m_bg`. - kindergeld_zur_bedarfsdeckung_m - See :func:`kindergeld_zur_bedarfsdeckung_m`. - unterhalt__tatsächlich_erhaltener_betrag_m - See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - in_anderer_bg_als_kindergeldempfänger - See :func:`in_anderer_bg_als_kindergeldempfänger`. - - Returns - ------- - """ fehlbetrag = max( regelbedarf_m_bg @@ -163,27 +117,14 @@ def differenz_kindergeld_kindbedarf_m( return out -@policy_function(vectorization_strategy="not_required") +@policy_function(start_date="2005-01-01", vectorization_strategy="not_required") def in_anderer_bg_als_kindergeldempfänger( - p_id: numpy.ndarray[int], - kindergeld__p_id_empfänger: numpy.ndarray[int], - bg_id: numpy.ndarray[int], -) -> numpy.ndarray[bool]: + p_id: np.ndarray, # int + kindergeld__p_id_empfänger: np.ndarray, # int + bg_id: np.ndarray, # int +) -> np.ndarray: # bool """True if the person is in a different Bedarfsgemeinschaft than the Kindergeldempfänger of that person. - - Parameters - ---------- - p_id - See basic input variable :ref:`p_id <p_id>` - kindergeld__p_id_empfänger - See basic input variable :ref:`kindergeld__p_id_empfänger <kindergeld__p_id_empfänger>` - bg_id - See :func:`bg_id`. - - Returns - ------- - """ # Create a dictionary to map p_id to bg_id p_id_to_bg_id = dict(zip(p_id, bg_id)) diff --git a/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml b/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml new file mode 100644 index 0000000000..a925c43ee4 --- /dev/null +++ b/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml @@ -0,0 +1,76 @@ +--- +mietobergrenze_pro_qm: + name: + de: Obergenze Miete pro Quadratmeter + en: Upper limit rent per square meter + description: + de: >- + § 22 SGB II + Die Miete pro Quadratmeter darf einen angemessenen Betrag nicht übersteigen, um + für ALG2 berechtigt zu sein. Diese Grenze ist nicht konkret im Gesetz + festgehalten, sondern wird als Faustregel von den Arbeitsargenturen verwendet. + Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe + Issue https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + en: >- + § 22 SGB II + The rent per square meter must not exceed a reasonable amount in order to remain + eligible for ALG2. This limit is not specifically laid down in the law, but is a + rule of thumb used by the employment agencies. + This is only an approximation. The regional parameters are unknown, see Issue + https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + unit: Euros / Square Meter + reference_period: Month + type: scalar + 1984-01-01: + value: 10 +berechtigte_wohnfläche_miete: + name: + de: Berechtigte Mietwohnfläche für ALG2-Empfänger*innen + en: Living rental space eligible for ALG2-recipients + description: + de: >- + Eine Mietwohnung darf für einen Single 45 Quadratmeter (+15 für jede weitere + Person) groß sein. + Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe + Issue https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + en: >- + A rental apartment may be 45 square meters for a single person (+15 for each + additional person). + This is only an approximation. The regional parameters are unknown, see Issue + https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + unit: Square Meters + reference_period: null + type: dict + 2005-01-01: + single: 45 + je_weitere_person: 15 +parameter_berechtigte_wohnfläche_eigentum: + name: + de: Berechtigte Eigentumsfläche für ALG2-Empfänger*innen + en: Property space eligible for ALG2-recipients + description: + de: >- + Ab 2023 gilt diese Obergrenze nur für Eigenheime. Eigentumswohnungen dürfen nur + bis zu 130qm groß sein. + en: >- + After 2023, this upper limit only applies to owner-occupied homes. Condominiums + may only be up to 130 square meters in size. + unit: Square Meters + reference_period: null + type: require_converter + 1984-01-01: + 1: 80 + 2: 80 + 3: 100 + 4: 120 + je_weitere_person: 20 + max_anzahl_direkt: 4 + 2023-01-01: + reference: Art. 1 Nr.12 Abschnitt 5, G. v. 20.12.2022 BGBl. I S. 2328 + note: Gilt für Eigenheime. Eigentumswohnungen dürfen nur bis zu 130qm groß sein. + 1: 140 + 2: 140 + 3: 140 + 4: 140 + je_weitere_person: 20 + max_anzahl_direkt: 4 diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 412ae2704d..82b2041c8a 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -1,9 +1,17 @@ -"""Basic needs following SGB II.""" +"""Regelbedarf for Arbeitslosengeld II.""" -from ttsim import policy_function +from __future__ import annotations +from dataclasses import dataclass +from typing import TYPE_CHECKING -@policy_function() +from ttsim import param_function, policy_function + +if TYPE_CHECKING: + from ttsim import RawParam + + +@policy_function(start_date="2005-01-01") def regelbedarf_m( regelsatz_m: float, kosten_der_unterkunft_m: float, @@ -13,29 +21,17 @@ def regelbedarf_m( This includes cost of dwelling. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld.: - - Parameters - ---------- - regelsatz_m - See :func:`regelsatz_m`. - kosten_der_unterkunft_m - See :func:`kosten_der_unterkunft_m`. - - Returns - ------- - float checks the minimum monthly needs of an household. - """ return regelsatz_m + kosten_der_unterkunft_m -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2005-01-01", vectorization_strategy="loop") def mehrbedarf_alleinerziehend_m( familie__alleinerziehend: bool, anzahl_kinder_fg: int, anzahl_kinder_bis_6_fg: int, anzahl_kinder_bis_15_fg: int, - arbeitsl_geld_2_params: dict, + parameter_mehrbedarf_alleinerziehend: dict[str, float], ) -> float: """Compute additional SGB II need for single parents. @@ -44,25 +40,6 @@ def mehrbedarf_alleinerziehend_m( on top alternatively, you get 12% per kid, depending on what's higher. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - familie__alleinerziehend - See :func:`familie__alleinerziehend`. - anzahl_kinder_fg - See :func:`anzahl_kinder_fg`. - anzahl_kinder_bis_6_fg - See :func:`anzahl_kinder_bis_6_fg`. - anzahl_kinder_bis_15_fg - See :func:`anzahl_kinder_bis_15_fg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - - Returns - ------- - float checks how much more a single parent need. - """ if familie__alleinerziehend: # Clip value at calculated minimal share and given upper share @@ -71,11 +48,10 @@ def mehrbedarf_alleinerziehend_m( out = min( max( # Minimal Mehrbedarf share. Minimal rate times number of children - arbeitsl_geld_2_params["mehrbedarf_anteil"]["min_1_kind"] - * anzahl_kinder_fg, + parameter_mehrbedarf_alleinerziehend["min_1_kind"] * anzahl_kinder_fg, # Increased rated if children up to 6 and/or 2-3 up to 15 are present. ( - arbeitsl_geld_2_params["mehrbedarf_anteil"][ + parameter_mehrbedarf_alleinerziehend[ "kind_bis_6_oder_mehrere_bis_15" ] if (anzahl_kinder_bis_6_fg >= 1) @@ -83,56 +59,47 @@ def mehrbedarf_alleinerziehend_m( else 0.0 ), ), - arbeitsl_geld_2_params["mehrbedarf_anteil"]["max"], + parameter_mehrbedarf_alleinerziehend["max"], ) else: out = 0.0 return out -@policy_function(end_date="2010-12-31", leaf_name="kindersatz_m") -def kindersatz_m_bis_2010( +@policy_function( + start_date="2005-01-01", end_date="2010-12-31", leaf_name="kindersatz_m" +) +def kindersatz_m_anteilsbasiert( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, - arbeitsl_geld_2_params: dict, + regelsatz_anteilsbasiert: RegelsatzAnteilsbasiert, ) -> float: - """Basic monthly subsistence / SGB II needs of children until 2010. - - Parameters - ---------- - alter - See basic input variable :ref:`alter`. - kindergeld__gleiche_fg_wie_empfänger - See :func:`kindergeld__gleiche_fg_wie_empfänger`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - float with SGB II needs of children until year 2010. - - """ - anteile = arbeitsl_geld_2_params["anteil_regelsatz_kinder"] - regelsatz = arbeitsl_geld_2_params["regelsatz"] + """Basic monthly subsistence / SGB II needs of children until 2010.""" + basissatz = regelsatz_anteilsbasiert.basissatz if ( - alter >= anteile["kind_zwischen_14_und_24"]["min_alter"] - and alter <= anteile["kind_zwischen_14_und_24"]["max_alter"] + alter + >= regelsatz_anteilsbasiert.kind.jugendliche_und_junge_erwachsene.min_alter + and alter + <= regelsatz_anteilsbasiert.kind.jugendliche_und_junge_erwachsene.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz * anteile["kind_zwischen_14_und_24"]["anteil"] + out = ( + basissatz + * regelsatz_anteilsbasiert.kind.jugendliche_und_junge_erwachsene.anteil + ) elif ( - alter >= anteile["kind_zwischen_6_und_13"]["min_alter"] - and alter <= anteile["kind_zwischen_6_und_13"]["max_alter"] + alter >= regelsatz_anteilsbasiert.kind.schulkind.min_alter + and alter <= regelsatz_anteilsbasiert.kind.schulkind.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz * anteile["kind_zwischen_6_und_13"]["anteil"] + out = basissatz * regelsatz_anteilsbasiert.kind.schulkind.anteil elif ( - alter >= anteile["kind_bis_5"]["min_alter"] - and alter <= anteile["kind_bis_5"]["max_alter"] + alter >= regelsatz_anteilsbasiert.kind.kleinkind.min_alter + and alter <= regelsatz_anteilsbasiert.kind.kleinkind.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz * anteile["kind_bis_5"]["anteil"] + out = basissatz * regelsatz_anteilsbasiert.kind.kleinkind.anteil else: out = 0.0 @@ -141,54 +108,78 @@ def kindersatz_m_bis_2010( @policy_function( start_date="2011-01-01", + end_date="2022-06-30", leaf_name="kindersatz_m", ) -def kindersatz_m_ab_2011( +def kindersatz_m_nach_regelbedarfsstufen_ohne_sofortzuschlag( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, - arbeitsl_geld_2_params: dict, + regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, ) -> float: """Basic monthly subsistence / SGB II needs of children since 2011. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + """ + if ( + alter >= regelsatz_nach_regelbedarfsstufen.rbs_6.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_6.max_alter + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz_nach_regelbedarfsstufen.rbs_6.regelsatz + elif ( + alter >= regelsatz_nach_regelbedarfsstufen.rbs_5.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_5.max_alter + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz_nach_regelbedarfsstufen.rbs_5.regelsatz + elif ( + alter >= regelsatz_nach_regelbedarfsstufen.rbs_4.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_4.max_alter + and kindergeld__gleiche_fg_wie_empfänger + ): + out = regelsatz_nach_regelbedarfsstufen.rbs_4.regelsatz + elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG + out = regelsatz_nach_regelbedarfsstufen.rbs_3.regelsatz + else: + out = 0.0 - Parameters - ---------- - alter - See basic input variable :ref:`alter`. - kindergeld__gleiche_fg_wie_empfänger - See :func:`kindergeld__gleiche_fg_wie_empfänger`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - SGB II needs of child + return out - """ - kindersofortzuschlag = arbeitsl_geld_2_params.get("kindersofortzuschl", 0.0) +@policy_function( + start_date="2022-07-01", + leaf_name="kindersatz_m", +) +def kindersatz_m_nach_regelbedarfsstufen_mit_sofortzuschlag( + alter: int, + kindergeld__gleiche_fg_wie_empfänger: bool, + regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + kindersofortzuschlag: float, +) -> float: + """Basic monthly subsistence / SGB II needs of children since 2011. + Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. + """ if ( - alter >= arbeitsl_geld_2_params["regelsatz"][6]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][6]["max_alter"] + alter >= regelsatz_nach_regelbedarfsstufen.rbs_6.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_6.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][6]["betrag"] + out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_6.regelsatz elif ( - alter >= arbeitsl_geld_2_params["regelsatz"][5]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][5]["max_alter"] + alter >= regelsatz_nach_regelbedarfsstufen.rbs_5.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_5.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][5]["betrag"] + out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_5.regelsatz elif ( - alter >= arbeitsl_geld_2_params["regelsatz"][4]["min_alter"] - and alter <= arbeitsl_geld_2_params["regelsatz"][4]["max_alter"] + alter >= regelsatz_nach_regelbedarfsstufen.rbs_4.min_alter + and alter <= regelsatz_nach_regelbedarfsstufen.rbs_4.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][4]["betrag"] + out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_4.regelsatz elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG - out = kindersofortzuschlag + arbeitsl_geld_2_params["regelsatz"][3] + out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_3.regelsatz else: out = 0.0 @@ -196,6 +187,7 @@ def kindersatz_m_ab_2011( @policy_function( + start_date="2005-01-01", end_date="2010-12-31", leaf_name="erwachsenensatz_m", ) @@ -203,34 +195,17 @@ def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, p_id_einstandspartner: int, - arbeitsl_geld_2_params: dict, + regelsatz_anteilsbasiert: RegelsatzAnteilsbasiert, ) -> float: - """Basic monthly subsistence / SGB II needs for adults without dwelling. - - Parameters - ---------- - mehrbedarf_alleinerziehend_m - See :func:`mehrbedarf_alleinerziehend_m`. - kindersatz_m - See :func:`kindersatz_m`. - p_id_einstandspartner - See basic input variable :ref:`p_id_einstandspartner`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - - """ + """Basic monthly subsistence / SGB II needs for adults without dwelling.""" # BG has 2 adults if p_id_einstandspartner >= 0: - out = ( - arbeitsl_geld_2_params["regelsatz"] - * (arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"]) + out = regelsatz_anteilsbasiert.basissatz * ( + regelsatz_anteilsbasiert.erwachsen.je_erwachsener_bei_zwei_erwachsenen ) # This observation is not a child, so BG has 1 adult elif kindersatz_m == 0.0: - out = arbeitsl_geld_2_params["regelsatz"] + out = regelsatz_anteilsbasiert.basissatz else: out = 0.0 @@ -245,63 +220,35 @@ def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, p_id_einstandspartner: int, - arbeitsl_geld_2_params: dict, + regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, ) -> float: """Basic monthly subsistence / SGB II needs for adults without dwelling since 2011. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - mehrbedarf_alleinerziehend_m - See :func:`mehrbedarf_alleinerziehend_m`. - kindersatz_m - See :func:`kindersatz_m`. - p_id_einstandspartner - See basic input variable :ref:`p_id_einstandspartner`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - float with the minimum needs of an household in Euro. - """ # BG has 2 adults if p_id_einstandspartner >= 0: - out = arbeitsl_geld_2_params["regelsatz"][2] + out = regelsatz_nach_regelbedarfsstufen.rbs_2.regelsatz # This observation is not a child, so BG has 1 adult elif kindersatz_m == 0.0: - out = arbeitsl_geld_2_params["regelsatz"][1] + out = regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz else: out = 0.0 return out * (1 + mehrbedarf_alleinerziehend_m) -@policy_function() +@policy_function(start_date="2005-01-01") def regelsatz_m( erwachsenensatz_m: float, kindersatz_m: float, ) -> float: - """Calculate basic monthly subsistence without dwelling until 2010. - - Parameters - ---------- - erwachsenensatz_m - See :func:`erwachsenensatz_m`. - kindersatz_m - See :func:`kindersatz_m`. - - Returns - ------- - - - """ + """Calculate basic monthly subsistence without dwelling until 2010.""" return erwachsenensatz_m + kindersatz_m @policy_function( + start_date="2005-01-01", end_date="2022-12-31", leaf_name="kosten_der_unterkunft_m", ) @@ -312,17 +259,6 @@ def kosten_der_unterkunft_m_bis_2022( """Calculate costs of living eligible to claim until 2022. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - Parameters - ---------- - berechtigte_wohnfläche - See :func:`berechtigte_wohnfläche`. - anerkannte_warmmiete_je_qm_m - See :func:`anerkannte_warmmiete_je_qm_m`. - - Returns - ------- - float with total monthly cost of rent. - """ return berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m @@ -343,24 +279,6 @@ def kosten_der_unterkunft_m_ab_2023( tested, while the living costs are fully considered in Bürgergeld. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttokaltmiete_m - See :func:`bruttokaltmiete_m`. - heizkosten_m - See :func:`heizkosten_m`. - arbeitslosengeld_2_bezug_im_vorjahr - See basic input variable :ref:`arbeitslosengeld_2_bezug_im_vorjahr <arbeitslosengeld_2_bezug_im_vorjahr>`. - berechtigte_wohnfläche - See :func:`berechtigte_wohnfläche`. - anerkannte_warmmiete_je_qm_m - See :func:`anerkannte_warmmiete_je_qm_m`. - - Returns - ------- - float with total monthly cost of rent. - """ if arbeitslosengeld_2_bezug_im_vorjahr: out = berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m @@ -370,89 +288,57 @@ def kosten_der_unterkunft_m_ab_2023( return out -@policy_function() +@policy_function(start_date="2005-01-01") def anerkannte_warmmiete_je_qm_m( bruttokaltmiete_m: float, heizkosten_m: float, wohnfläche: float, - arbeitsl_geld_2_params: dict, + mietobergrenze_pro_qm: float, ) -> float: """Calculate rent per square meter. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - bruttokaltmiete_m - See :func:`bruttokaltmiete_m`. - heizkosten_m - See :func:`heizkosten_m`. - wohnfläche - See function :func:`wohnfläche`. - - Returns - ------- - Integer with the total amount of rental costs per squaremeter. - """ out = (bruttokaltmiete_m + heizkosten_m) / wohnfläche + return min(out, mietobergrenze_pro_qm) - # Consider maximum considered rent per square meter - out = min(out, arbeitsl_geld_2_params["max_miete_pro_qm"]["max"]) - - return out - -@policy_function(vectorization_strategy="loop") +@policy_function(vectorization_strategy="loop", start_date="2005-01-01") def berechtigte_wohnfläche( wohnfläche: float, wohnen__bewohnt_eigentum_hh: bool, anzahl_personen_hh: int, - arbeitsl_geld_2_params: dict, + berechtigte_wohnfläche_miete: dict[str, float], + berechtigte_wohnfläche_eigentum: BerechtigteWohnflächeEigentum, ) -> float: """Calculate size of dwelling eligible to claim. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. - - Parameters - ---------- - wohnfläche - See function :func:`wohnfläche`. - wohnen__bewohnt_eigentum_hh - See basic input variable :ref:`wohnen__bewohnt_eigentum_hh <wohnen__bewohnt_eigentum_hh>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - Integer with the number of squaremeters. - """ - - params = arbeitsl_geld_2_params["berechtigte_wohnfläche_eigentum"] - max_anzahl_direkt = params["max_anzahl_direkt"] if wohnen__bewohnt_eigentum_hh: - if anzahl_personen_hh <= max_anzahl_direkt: - maximum = params[anzahl_personen_hh] + if anzahl_personen_hh <= berechtigte_wohnfläche_eigentum.max_anzahl_direkt: + maximum = berechtigte_wohnfläche_eigentum.anzahl_personen_zu_fläche[ + anzahl_personen_hh + ] else: maximum = ( - params[max_anzahl_direkt] - + (anzahl_personen_hh - max_anzahl_direkt) * params["je_weitere_person"] + berechtigte_wohnfläche_eigentum.max_anzahl_direkt + + ( + anzahl_personen_hh + - berechtigte_wohnfläche_eigentum.max_anzahl_direkt + ) + * berechtigte_wohnfläche_eigentum.je_weitere_person ) else: maximum = ( - arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"]["single"] + berechtigte_wohnfläche_miete["single"] + max(anzahl_personen_hh - 1, 0) - * arbeitsl_geld_2_params["berechtigte_wohnfläche_miete"][ - "je_weitere_person" - ] + * berechtigte_wohnfläche_miete["je_weitere_person"] ) return min(wohnfläche, maximum / anzahl_personen_hh) -@policy_function() +@policy_function(start_date="2005-01-01") def bruttokaltmiete_m( wohnen__bruttokaltmiete_m_hh: float, anzahl_personen_hh: int, @@ -462,22 +348,11 @@ def bruttokaltmiete_m( Reference: BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. - - Parameters - ---------- - wohnen__bruttokaltmiete_m_hh - See basic input variable :ref:`wohnen__bruttokaltmiete_m_hh <wohnen__bruttokaltmiete_m_hh>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - - Returns - ------- - """ return wohnen__bruttokaltmiete_m_hh / anzahl_personen_hh -@policy_function() +@policy_function(start_date="2005-01-01") def heizkosten_m( wohnen__heizkosten_m_hh: float, anzahl_personen_hh: int, @@ -487,37 +362,171 @@ def heizkosten_m( Reference: BSG Urteil v. 09.03.2016 - B 14 KG 1/15 R. BSG Urteil vom 15.04.2008 - B 14/7b AS 58/06 R. - - Parameters - ---------- - wohnen__heizkosten_m_hh - See basic input variable :ref:`wohnen__heizkosten_m_hh <wohnen__heizkosten_m_hh>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - - Returns - ------- - """ return wohnen__heizkosten_m_hh / anzahl_personen_hh -@policy_function() +@policy_function(start_date="2005-01-01") def wohnfläche( wohnen__wohnfläche_hh: float, anzahl_personen_hh: int, ) -> float: - """Share of household's dwelling size attributed to a single person. - - Parameters - ---------- - wohnen__wohnfläche_hh - See basic input variable :ref:`wohnen__wohnfläche_hh <wohnen__wohnfläche_hh>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. + """Share of household's dwelling size attributed to a single person.""" + return wohnen__wohnfläche_hh / anzahl_personen_hh - Returns - ------- - """ - return wohnen__wohnfläche_hh / anzahl_personen_hh +@dataclass(frozen=True) +class RegelsatzAnteilErwachsen: + je_erwachsener_bei_zwei_erwachsenen: float + je_erwachsener_ab_drei_erwachsene: float + + +@dataclass(frozen=True) +class RegelsatzAnteilKind: + anteil: float + min_alter: int + max_alter: int + + +@dataclass(frozen=True) +class RegelsatzAnteilKindNachAlter: + kleinkind: RegelsatzAnteilKind + schulkind: RegelsatzAnteilKind + jugendliche_und_junge_erwachsene: RegelsatzAnteilKind + + +@dataclass(frozen=True) +class RegelsatzAnteilsbasiert: + basissatz: float + erwachsen: RegelsatzAnteilErwachsen + kind: RegelsatzAnteilKindNachAlter + + +@param_function(start_date="2005-01-01", end_date="2010-12-31") +def regelsatz_anteilsbasiert( + parameter_regelsatz_anteilsbasiert: RawParam, +) -> RegelsatzAnteilsbasiert: + """Regelsatz as a fraction of the Basissatz.""" + anteilssätze_kinder = parameter_regelsatz_anteilsbasiert[ + "anteil_vom_basissatz_für_kinder" + ] + kind_kleinkind = RegelsatzAnteilKind( + anteil=anteilssätze_kinder["kleinkind"]["anteil"], + min_alter=anteilssätze_kinder["kleinkind"]["min_alter"], + max_alter=anteilssätze_kinder["kleinkind"]["max_alter"], + ) + kind_schulkind = RegelsatzAnteilKind( + anteil=anteilssätze_kinder["schulkind"]["anteil"], + min_alter=anteilssätze_kinder["schulkind"]["min_alter"], + max_alter=anteilssätze_kinder["schulkind"]["max_alter"], + ) + kind_jugendliche_und_junge_erwachsene = RegelsatzAnteilKind( + anteil=anteilssätze_kinder["jugendliche_und_junge_erwachsene"]["anteil"], + min_alter=anteilssätze_kinder["jugendliche_und_junge_erwachsene"]["min_alter"], + max_alter=anteilssätze_kinder["jugendliche_und_junge_erwachsene"]["max_alter"], + ) + erwachsen = RegelsatzAnteilErwachsen( + je_erwachsener_bei_zwei_erwachsenen=parameter_regelsatz_anteilsbasiert[ + "anteil_vom_basissatz_bei_zwei_erwachsenen" + ], + je_erwachsener_ab_drei_erwachsene=parameter_regelsatz_anteilsbasiert[ + "anteil_vom_basissatz_bei_weiteren_erwachsenen" + ], + ) + return RegelsatzAnteilsbasiert( + basissatz=parameter_regelsatz_anteilsbasiert["basissatz"], + erwachsen=erwachsen, + kind=RegelsatzAnteilKindNachAlter( + kleinkind=kind_kleinkind, + schulkind=kind_schulkind, + jugendliche_und_junge_erwachsene=kind_jugendliche_und_junge_erwachsene, + ), + ) + + +@dataclass(frozen=True) +class RegelbedarfsstufeErwachsener: + regelsatz: float + + +@dataclass(frozen=True) +class RegelbedarfsstufeKind: + regelsatz: float + min_alter: int + max_alter: int + + +@dataclass(frozen=True) +class RegelsatzNachRegelbedarfsstufen: + """Regelsatz as a fraction of the Basissatz.""" + + rbs_1: RegelbedarfsstufeErwachsener + rbs_2: RegelbedarfsstufeErwachsener + rbs_3: RegelbedarfsstufeErwachsener + rbs_4: RegelbedarfsstufeKind + rbs_5: RegelbedarfsstufeKind + rbs_6: RegelbedarfsstufeKind + + +@param_function(start_date="2011-01-01") +def regelsatz_nach_regelbedarfsstufen( + parameter_regelsatz_nach_regelbedarfsstufen: RawParam, +) -> RegelsatzNachRegelbedarfsstufen: + """Regelsatz nach Regelbedarfsstufen.""" + rbs_4 = RegelbedarfsstufeKind( + regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[4]["betrag"], + min_alter=parameter_regelsatz_nach_regelbedarfsstufen[4]["min_alter"], + max_alter=parameter_regelsatz_nach_regelbedarfsstufen[4]["max_alter"], + ) + rbs_5 = RegelbedarfsstufeKind( + regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[5]["betrag"], + min_alter=parameter_regelsatz_nach_regelbedarfsstufen[5]["min_alter"], + max_alter=parameter_regelsatz_nach_regelbedarfsstufen[5]["max_alter"], + ) + rbs_6 = RegelbedarfsstufeKind( + regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[6]["betrag"], + min_alter=parameter_regelsatz_nach_regelbedarfsstufen[6]["min_alter"], + max_alter=parameter_regelsatz_nach_regelbedarfsstufen[6]["max_alter"], + ) + return RegelsatzNachRegelbedarfsstufen( + rbs_1=RegelbedarfsstufeErwachsener( + parameter_regelsatz_nach_regelbedarfsstufen[1] + ), + rbs_2=RegelbedarfsstufeErwachsener( + parameter_regelsatz_nach_regelbedarfsstufen[2] + ), + rbs_3=RegelbedarfsstufeErwachsener( + parameter_regelsatz_nach_regelbedarfsstufen[3] + ), + rbs_4=rbs_4, + rbs_5=rbs_5, + rbs_6=rbs_6, + ) + + +@dataclass(frozen=True) +class BerechtigteWohnflächeEigentum: + anzahl_personen_zu_fläche: dict[int, float] + je_weitere_person: float + max_anzahl_direkt: int + + +@param_function(start_date="2005-01-01") +def berechtigte_wohnfläche_eigentum( + parameter_berechtigte_wohnfläche_eigentum: RawParam, +) -> BerechtigteWohnflächeEigentum: + """Berechtigte Wohnfläche für Eigenheim.""" + return BerechtigteWohnflächeEigentum( + anzahl_personen_zu_fläche={ + 1: parameter_berechtigte_wohnfläche_eigentum[1], + 2: parameter_berechtigte_wohnfläche_eigentum[2], + 3: parameter_berechtigte_wohnfläche_eigentum[3], + 4: parameter_berechtigte_wohnfläche_eigentum[4], + }, + je_weitere_person=parameter_berechtigte_wohnfläche_eigentum[ + "je_weitere_person" + ], + max_anzahl_direkt=parameter_berechtigte_wohnfläche_eigentum[ + "max_anzahl_direkt" + ], + ) diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py index c752f0762d..ab52bdc9bb 100644 --- a/src/_gettsim/config.py +++ b/src/_gettsim/config.py @@ -1,58 +1,6 @@ +from __future__ import annotations + from pathlib import Path # Obtain the root directory of the package. -RESOURCE_DIR = Path(__file__).parent.resolve() - -INTERNAL_PARAMS_GROUPS = [ - "eink_st", - "eink_st_abzuege", - "soli_st", - "arbeitsl_geld", - "arbeitslosenversicherung", - "geringfügige_einkommen", - "ges_krankenv", - "ges_pflegev", - "ges_rentenv", - "unterhalt", - "unterhaltsvors", - "abgelt_st", - "wohngeld", - "kinderzuschl", - "kindergeld", - "elterngeld", - "ges_rente", - "erwerbsm_rente", - "arbeitsl_geld_2", - "grunds_im_alter", - "lohnst", - "erziehungsgeld", -] - -_TO_DELETE_DEFAULT_TARGETS = { - "einkommensteuer": { - "betrag_y_sn": None, - "abgeltungssteuer": {"betrag_y_sn": None}, - }, - "solidaritätszuschlag": {"betrag_y_sn": None}, - "sozialversicherung": { - "arbeitslosen": { - "beitrag": {"betrag_versicherter_m": None}, - "betrag_m": None, - }, - "kranken": {"beitrag": {"betrag_versicherter_m": None}}, - "pflege": {"beitrag": {"betrag_versicherter_m": None}}, - "rente": { - "beitrag": {"betrag_versicherter_m": None}, - "altersrente": {"betrag_m": None}, - "erwerbsminderung": {"betrag_m": None}, - }, - "beiträge_versicherter_m": None, - }, - "elterngeld": {"betrag_m": None}, - "kindergeld": {"betrag_m": None}, - "arbeitslosengeld_2": {"betrag_m_bg": None}, - "kinderzuschlag": {"betrag_m_bg": None}, - "wohngeld": {"betrag_m_wthh": None}, - "unterhaltsvorschuss": {"betrag_m": None}, - "grundsicherung": {"im_alter": {"betrag_m_eg": None}}, -} +GETTSIM_ROOT = Path(__file__).parent.resolve() diff --git a/src/_gettsim/einkommensteuer/__init__.py b/src/_gettsim/einkommensteuer/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/einkommensteuer/__init__.py +++ b/src/_gettsim/einkommensteuer/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py index f6be047592..2909807cad 100644 --- a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py @@ -1,60 +1,32 @@ """Taxes on capital income (Abgeltungssteuer).""" +from __future__ import annotations + from ttsim import policy_function @policy_function(start_date="2009-01-01") -def betrag_y_sn( - zu_versteuerndes_einkommen_y_sn: float, - abgelt_st_params: dict, -) -> float: - """Abgeltungssteuer on Steuernummer level. - - Parameters - ---------- - zu_versteuerndes_einkommen_y_sn - See :func:`zu_versteuerndes_einkommen_y_sn`. - abgelt_st_params - See params documentation :ref:`abgelt_st_params <abgelt_st_params>`. - - Returns - ------- - - """ - return abgelt_st_params["satz"] * zu_versteuerndes_einkommen_y_sn +def betrag_y_sn(zu_versteuerndes_kapitaleinkommen_y_sn: float, satz: float) -> float: + """Abgeltungssteuer on Steuernummer level.""" + return satz * zu_versteuerndes_kapitaleinkommen_y_sn @policy_function(start_date="2009-01-01") -def zu_versteuerndes_einkommen_y_sn( - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn: float, +def zu_versteuerndes_kapitaleinkommen_y_sn( einkommensteuer__anzahl_personen_sn: float, - eink_st_abzuege_params: dict, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__sparerpauschbetrag: float, ) -> float: """Taxable capital income for Abgeltungssteuer. - TODO(@MImmesberger): Find out whether Sparerpauschbetrag and - Sparer-Werbungskostenpauschbetrag are transferable to partner with same sn_id. + TODO(@MImmesberger): Find out whether Sparerpauschbetrag is + transferable to partner with same sn_id. https://github.com/iza-institute-of-labor-economics/gettsim/issues/843 - Parameters - ---------- - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - """ out = ( einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn - einkommensteuer__anzahl_personen_sn - * ( - eink_st_abzuege_params["sparerpauschbetrag"] - + eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] - ) + * einkommensteuer__einkünfte__aus_kapitalvermögen__sparerpauschbetrag ) return max(out, 0.0) diff --git a/src/_gettsim/parameters/abgelt_st.yaml b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.yaml similarity index 65% rename from src/_gettsim/parameters/abgelt_st.yaml rename to src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.yaml index 70e55bf5fa..f9e7642e44 100644 --- a/src/_gettsim/parameters/abgelt_st.yaml +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.yaml @@ -5,11 +5,10 @@ satz: en: Capital Income Tax Rate description: de: §32d (1) EStG - en: null + en: §32d (1) EStG unit: Share - 1984-01-01: - scalar: 0 - note: It didn't exist before 2009. + reference_period: null + type: scalar 2009-01-01: - scalar: 0.25 + value: 0.25 reference: Art. 1 G. v. 14.08.2007 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" deleted file mode 100644 index 77006d3dbb..0000000000 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/abz\303\274ge.py" +++ /dev/null @@ -1,56 +0,0 @@ -"""Tax allowances.""" - -from ttsim import policy_function - - -@policy_function() -def betrag_y_sn( - sonderausgaben_y_sn: float, - vorsorgeaufwendungen_y_sn: float, - betrag_ind_y_sn: float, -) -> float: - """Calculate total allowances on Steuernummer level. - - Parameters - ---------- - - sonderausgaben_y_sn - See :func:`sonderausgaben_y_sn`. - vorsorgeaufwendungen_y_sn - See :func:`vorsorgeaufwendungen_y_sn`. - betrag_ind_y_sn - See :func:`betrag_ind_y_sn`. - - Returns - ------- - - """ - out = sonderausgaben_y_sn + vorsorgeaufwendungen_y_sn + betrag_ind_y_sn - - return out - - -@policy_function() -def betrag_ind_y( - pauschbetrag_behinderung_y: float, - alleinerziehend_betrag_y: float, - altersfreibetrag_y: float, -) -> float: - """Sum up all tax-deductible allowances applicable at the individual level. - - Parameters - ---------- - - pauschbetrag_behinderung_y - See :func:`pauschbetrag_behinderung_y`. - alleinerziehend_betrag_y - See :func:`alleinerziehend_betrag_y`. - altersfreibetrag_y - See :func:`altersfreibetrag_y`. - - Returns - ------- - - """ - out = pauschbetrag_behinderung_y + alleinerziehend_betrag_y + altersfreibetrag_y - return out diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" index d6c6b09426..a671a6abae 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" @@ -1,29 +1,17 @@ """Tax allowances for single parents.""" +from __future__ import annotations + from ttsim import policy_function @policy_function(end_date="2014-12-31", leaf_name="alleinerziehend_betrag_y") def alleinerziehend_betrag_y_pauschal( - einkommensteuer__alleinerziehend_sn: bool, eink_st_abzuege_params: dict + einkommensteuer__alleinerziehend_sn: bool, alleinerziehendenfreibetrag_basis: float ) -> float: - """Calculate tax deduction allowance for single parents until 2014. - - This used to be called 'Haushaltsfreibetrag'. - - Parameters - ---------- - einkommensteuer__alleinerziehend_sn - See :func:`einkommensteuer__alleinerziehend_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ + """Calculate tax deduction allowance for single parents until 2014""" if einkommensteuer__alleinerziehend_sn: - out = eink_st_abzuege_params["alleinerziehendenfreibetrag"] + out = alleinerziehendenfreibetrag_basis else: out = 0.0 @@ -34,33 +22,16 @@ def alleinerziehend_betrag_y_pauschal( def alleinerziehend_betrag_y_nach_kinderzahl( einkommensteuer__alleinerziehend_sn: bool, kindergeld__anzahl_ansprüche_sn: int, - eink_st_abzuege_params: dict, + alleinerziehendenfreibetrag_basis: float, + alleinerziehendenfreibetrag_zusatz_pro_kind: float, ) -> float: - """Calculate tax deduction allowance for single parents since 2015. - - Since 2015, it increases with - number of children. Used to be called 'Haushaltsfreibetrag' - - Parameters - ---------- - einkommensteuer__alleinerziehend_sn - See :func:`einkommensteuer__alleinerziehend_sn`. - kindergeld__anzahl_ansprüche_sn - See :func:`kindergeld__anzahl_ansprüche_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - betrag_y = ( - eink_st_abzuege_params["alleinerziehendenfreibetrag"] - + (kindergeld__anzahl_ansprüche_sn - 1) - * eink_st_abzuege_params["alleinerziehendenfreibetrag_zusatz"] - ) + """Calculate tax deduction allowance for single parents since 2015.""" if einkommensteuer__alleinerziehend_sn: - out = betrag_y + out = ( + alleinerziehendenfreibetrag_basis + + (kindergeld__anzahl_ansprüche_sn - 1) + * alleinerziehendenfreibetrag_zusatz_pro_kind + ) else: out = 0.0 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.yaml" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.yaml" new file mode 100644 index 0000000000..6abc4ef490 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.yaml" @@ -0,0 +1,47 @@ +--- +alleinerziehendenfreibetrag_basis: + name: + de: Parmeter zur Berechnung ds Entlastungsbetrags für Alleinerziehende + en: Income Tax Allowance for Single Parents + description: + de: § 24b (1) EStG. vor 2004 "Haushaltsfreibetrag", § 32 (7) EStG + en: null + unit: Euros + reference_period: Year + type: scalar + 1984-01-01: + value: 2154 + 1986-01-01: + value: 2319 + 1989-01-01: + value: 2871 + 2001-01-01: + value: 2916 + 2002-01-01: + value: 2340 + 2004-01-01: + value: 1308 + 2015-01-01: + value: 1908 + reference: Art. 1 G. v. 16.07.2015 BGBl. I S.1202 + 2020-01-01: + value: 4008 + reference: Art. 3 Nr. 2 G. v. 29.12.2020 BGBl. I S.3096 + 2023-01-01: + value: 4260 + reference: G. v. 20.12.2022 BGBl. I S. 2294. +alleinerziehendenfreibetrag_zusatz_pro_kind: + name: + de: Zusätzlicher Entlastungsbetrag für Alleinerziehende + en: Additional income tax allowance for Single Parents + description: + de: >- + §24b (2) S. 2 EStG. Alleinerziehenden-Entlastungsbetrag, Zusatzbetrag pro Kind ab + dem 2. Kind. + en: null + unit: Euros + reference_period: Year + type: scalar + 2015-01-01: + value: 240 + reference: Art. 1 G. vs. 16.07.2015 BGBl. I S.1202 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" new file mode 100644 index 0000000000..9b061bba96 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" @@ -0,0 +1,152 @@ +"""Tax allowances for the elderly.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim import ( + get_consecutive_int_1d_lookup_table_param_value, + param_function, + policy_function, +) + +if TYPE_CHECKING: + from ttsim import ConsecutiveInt1dLookupTableParamValue + + +@policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") +def altersfreibetrag_y_bis_2004( + alter: int, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + altersentlastungsbetrag_altersgrenze: int, + maximaler_altersentlastungsbetrag: float, + altersentlastungsquote: float, +) -> float: + """Calculate tax deduction allowance for elderly until 2004.""" + altersgrenze = altersentlastungsbetrag_altersgrenze + weiteres_einkommen = max( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, + 0.0, + ) + if alter > altersgrenze: + out = min( + altersentlastungsquote + * ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + + weiteres_einkommen + ), + maximaler_altersentlastungsbetrag, + ) + else: + out = 0.0 + + return out + + +@policy_function(start_date="2005-01-01", leaf_name="altersfreibetrag_y") +def altersfreibetrag_y_ab_2005( + alter: int, + geburtsjahr: int, + sozialversicherung__geringfügig_beschäftigt: bool, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, + altersentlastungsbetrag_altersgrenze: int, + maximaler_altersentlastungsbetrag_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersentlastungsquote_gestaffelt: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Calculate tax deduction allowance for elderly since 2005.""" + maximaler_altersentlastungsbetrag = ( + maximaler_altersentlastungsbetrag_gestaffelt.values_to_look_up[ + geburtsjahr - maximaler_altersentlastungsbetrag_gestaffelt.base_to_subtract + ] + ) + + einkommen_lohn = ( + 0 + if sozialversicherung__geringfügig_beschäftigt + else einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + ) + weiteres_einkommen = max( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y + + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y + + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, + 0.0, + ) + betrag = altersentlastungsquote_gestaffelt.values_to_look_up[ + geburtsjahr - altersentlastungsquote_gestaffelt.base_to_subtract + ] * (einkommen_lohn + weiteres_einkommen) + + if alter > altersentlastungsbetrag_altersgrenze: + out = min(betrag, maximaler_altersentlastungsbetrag) + else: + out = 0.0 + + return out + + +@param_function(start_date="2005-01-01") +def altersentlastungsquote_gestaffelt( + raw_altersentlastungsquote_gestaffelt: dict[str | int, int | float], +) -> ConsecutiveInt1dLookupTableParamValue: + """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" + spec = raw_altersentlastungsquote_gestaffelt.copy() + first_birthyear_to_consider: int = int(spec.pop("first_birthyear_to_consider")) + last_birthyear_to_consider: int = int(spec.pop("last_birthyear_to_consider")) + spec_int_float: dict[int, float] = {int(k): float(v) for k, v in spec.items()} + return get_consecutive_int_1d_lookup_table_with_filled_up_tails( + raw=spec_int_float, + left_tail_key=first_birthyear_to_consider, + right_tail_key=last_birthyear_to_consider, + ) + + +@param_function(start_date="2005-01-01") +def maximaler_altersentlastungsbetrag_gestaffelt( + raw_maximaler_altersentlastungsbetrag_gestaffelt: dict[str | int, int | float], +) -> ConsecutiveInt1dLookupTableParamValue: + """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" + spec = raw_maximaler_altersentlastungsbetrag_gestaffelt.copy() + first_birthyear_to_consider: int = int(spec.pop("first_birthyear_to_consider")) + last_birthyear_to_consider: int = int(spec.pop("last_birthyear_to_consider")) + spec_int_float: dict[int, float] = {int(k): float(v) for k, v in spec.items()} + return get_consecutive_int_1d_lookup_table_with_filled_up_tails( + raw=spec_int_float, + left_tail_key=first_birthyear_to_consider, + right_tail_key=last_birthyear_to_consider, + ) + + +def get_consecutive_int_1d_lookup_table_with_filled_up_tails( + raw: dict[int, float], + left_tail_key: int, + right_tail_key: int, +) -> ConsecutiveInt1dLookupTableParamValue: + """Create a consecutive integer lookup table with filled tails. + + This function takes a dictionary of consecutive integer keys and their corresponding + values, and extends it to include all integers between left_tail_key and + right_tail_key by filling the gaps with the minimum and maximum values from the + original dictionary. + """ + min_key_in_spec = min(raw.keys()) + max_key_in_spec = max(raw.keys()) + assert all(isinstance(k, int) for k in raw) + assert len(list(raw.keys())) == max_key_in_spec - min_key_in_spec + 1, ( + "Dictionary keys must be consecutive integers." + ) + consecutive_dict_start = dict.fromkeys( + range(left_tail_key, min_key_in_spec), raw[min_key_in_spec] + ) + consecutive_dict_end = dict.fromkeys( + range(max_key_in_spec + 1, right_tail_key + 1), raw[max_key_in_spec] + ) + return get_consecutive_int_1d_lookup_table_param_value( + {**consecutive_dict_start, **raw, **consecutive_dict_end} + ) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.yaml" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.yaml" new file mode 100644 index 0000000000..e0348cc5a1 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.yaml" @@ -0,0 +1,168 @@ +--- +altersentlastungsbetrag_altersgrenze: + name: + de: Altersgrenze für Altersentlastungsbetrag + en: Age limit for old-age relief amount + description: + de: >- + § 24a Art. 3 EStG + Der Altersentlastungsbetrag wird einem Steuerpflichtigen gewährt, der vor dem + Beginn des Kalenderjahres, in dem er sein Einkommen bezogen hat, das 64. + Lebensjahr vollendet hatte. + en: >- + § 24a Art. 3 EStG + The old-age relief amount is granted to a taxpayer who, before the start of the + calendar year in which he received his income, had reached the age of 64. + unit: Years + reference_period: null + type: scalar + 1984-01-01: + value: 64 +maximaler_altersentlastungsbetrag: + name: + de: Höchstbetrag des Altersentlastungsbetrags + en: Maximum Amount of Tax Credit for older employees. + description: + de: >- + Bis 2004 erhalten alle Steuerpflichtigen, die im voherigen Kalenderjahr das 64. + Lebensjahr vollendet haben, maximal den gleichen Altersentlastungsbetrag. + en: >- + If someone receives employment income above the age of 64, a share up to this + amount is deducted. + unit: Euros + reference_period: Year + type: require_converter + 1984-01-01: + value: 1534 + 1989-01-01: + value: 1902 + 2002-01-01: + value: 1908 + 2005-01-01: + note: Ausschleichung per `raw_maximaler_altersentlastungsbetrag_gestaffelt` +raw_maximaler_altersentlastungsbetrag_gestaffelt: + name: + de: Höchstbetrag des Altersentlastungsbetrags + en: Maximum Amount of Tax Credit for older employees. + description: + de: 24a EStG S. 5. Tabelle legt die Werte bis 2040 fest. + en: null + unit: Euros + reference_period: Year + type: require_converter + 2005-01-01: + reference: Artikel 1 G. v. 05.07.2004 BGBl. I S. 1427. + first_birthyear_to_consider: 1900 + last_birthyear_to_consider: 2100 + 1940: 1900 + 1941: 1824 + 1942: 1748 + 1943: 1672 + 1944: 1596 + 1945: 1520 + 1946: 1444 + 1947: 1368 + 1948: 1292 + 1949: 1216 + 1950: 1140 + 1951: 1064 + 1952: 988 + 1953: 912 + 1954: 836 + 1955: 760 + 1956: 722 + 1957: 684 + 1958: 646 + 1959: 608 + 1960: 570 + 1961: 532 + 1962: 494 + 1963: 456 + 1964: 418 + 1965: 380 + 1966: 342 + 1967: 304 + 1968: 266 + 1969: 228 + 1970: 190 + 1971: 152 + 1972: 114 + 1973: 76 + 1974: 38 + 1975: 0 +altersentlastungsquote: + name: + de: Anteil des Altersentlastungsbetrags + en: Income share deducted for older employees. + description: + de: >- + §24a EStG S.5. Tabelle legt alle Werte bis 2040 fest. Bis 2004 wird bei allen + Steuerpflichtigen, die im voherigen Kalenderjahr das 64. Lebensjahr vollendet + haben, die gleiche Altersentlastungsquote abgezogen. Ab 2005 hängt diese Quote, + den diese Steuerpflichtigen erhalten, vom Geburtsjahr ab. + en: >- + If someone receives employment income above the age of 64, this share of income is + deducted. Since 2005, this share additionally depends on the birth year. + unit: Share + reference_period: null + type: require_converter + 1984-01-01: + value: 0.4 + 2005-01-01: + note: Ausschleichung per `raw_altersentlastungsquote_gestaffelt` +raw_altersentlastungsquote_gestaffelt: + name: + de: Anteil des Altersentlastungsbetrags + en: Income share deducted for older employees. + description: + de: >- + §24a EStG S.5. Tabelle legt alle Werte bis 2040 fest. Bis 2004 wird bei allen + Steuerpflichtigen, die im voherigen Kalenderjahr das 64. Lebensjahr vollendet + haben, die gleiche Altersentlastungsquote abgezogen. Ab 2005 hängt diese Quote, + den diese Steuerpflichtigen erhalten, vom Geburtsjahr ab. + en: >- + If someone receives employment income above the age of 64, this share of income is + deducted. Since 2005, this share additionally depends on the birth year. + unit: Share + reference_period: null + type: require_converter + 2005-01-01: + reference: Artikel 1 G. v. 05.07.2004 BGBl. I S. 1427. + first_birthyear_to_consider: 1900 + last_birthyear_to_consider: 2100 + 1940: 0.4 + 1941: 0.384 + 1942: 0.368 + 1943: 0.352 + 1944: 0.336 + 1945: 0.32 + 1946: 0.304 + 1947: 0.288 + 1948: 0.272 + 1949: 0.256 + 1950: 0.24 + 1951: 0.224 + 1952: 0.208 + 1953: 0.192 + 1954: 0.176 + 1955: 0.16 + 1956: 0.152 + 1957: 0.144 + 1958: 0.136 + 1959: 0.128 + 1960: 0.12 + 1961: 0.112 + 1962: 0.104 + 1963: 0.096 + 1964: 0.088 + 1965: 0.08 + 1966: 0.072 + 1967: 0.064 + 1968: 0.056 + 1969: 0.048 + 1970: 0.04 + 1971: 0.032 + 1972: 0.024 + 1973: 0.016 + 1974: 0.008 + 1975: 0 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" deleted file mode 100644 index 05882c6f15..0000000000 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/altersfreibetrag.py" +++ /dev/null @@ -1,132 +0,0 @@ -"""Tax allowances for the elderly.""" - -from ttsim import policy_function -from ttsim.config import numpy_or_jax as np - - -@policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") -def altersfreibetrag_y_bis_2004( - alter: int, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, - eink_st_abzuege_params: dict, -) -> float: - """Calculate tax deduction allowance for elderly until 2004. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - alter - See basic input variable :ref:`alter <alter>`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y <einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y>`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y <einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - altersgrenze = eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"] - weiteres_einkommen = max( - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, - 0.0, - ) - if alter > altersgrenze: - out = min( - eink_st_abzuege_params["altersentlastung_quote"] - * ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - + weiteres_einkommen - ), - eink_st_abzuege_params["altersentlastungsbetrag_max"], - ) - else: - out = 0.0 - - return out - - -@policy_function( - start_date="2005-01-01", - leaf_name="altersfreibetrag_y", - vectorization_strategy="loop", -) -def altersfreibetrag_y_ab_2005( - alter: int, - geburtsjahr: int, - sozialversicherung__geringfügig_beschäftigt: bool, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, - eink_st_abzuege_params: dict, -) -> float: - """Calculate tax deduction allowance for elderly since 2005. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - alter - See basic input variable :ref:`alter <alter>`. - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y <einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y>`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y <einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - - Returns - ------- - - """ - # Maximum tax credit by birth year. - bins = sorted(eink_st_abzuege_params["altersentlastungsbetrag_max"]) - if geburtsjahr <= 1939: - selected_bin = 1940 - else: - # Select corresponding bin. - selected_bin = bins[ - np.searchsorted(np.asarray([*bins, np.inf]), geburtsjahr, side="right") - 1 - ] - - # Select appropriate tax credit threshold and quota. - out_max = eink_st_abzuege_params["altersentlastungsbetrag_max"][selected_bin] - - einkommen_lohn = ( - 0 - if sozialversicherung__geringfügig_beschäftigt - else einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - ) - weiteres_einkommen = max( - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y - + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, - 0.0, - ) - out_quote = eink_st_abzuege_params["altersentlastung_quote"][selected_bin] * ( - einkommen_lohn + weiteres_einkommen - ) - - if alter > eink_st_abzuege_params["altersentlastungsbetrag_altersgrenze"]: - out = min(out_quote, out_max) - else: - out = 0.0 - - return out diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" new file mode 100644 index 0000000000..fbb9cb745f --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" @@ -0,0 +1,21 @@ +"""Tax allowances for the disabled.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim import piecewise_polynomial, policy_function + +if TYPE_CHECKING: + from ttsim import PiecewisePolynomialParam + + +@policy_function() +def pauschbetrag_behinderung_y( + behinderungsgrad: int, parameter_behindertenpauschbetrag: PiecewisePolynomialParam +) -> float: + """Assign tax deduction allowance for handicaped to different handicap degrees.""" + return piecewise_polynomial( + x=behinderungsgrad, + parameters=parameter_behindertenpauschbetrag, + ) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.yaml" "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.yaml" new file mode 100644 index 0000000000..0559a84fc2 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.yaml" @@ -0,0 +1,105 @@ +--- +parameter_behindertenpauschbetrag: + name: + de: Behindertenpauschbetrag in Abhängigkeit des Behinderungsgrads. + en: Tax Credit for disabled, depending on degree of disability. + description: + de: § 33b (3) EStG. + en: null + unit: Euros + reference_period: Year + type: piecewise_constant + 1975-01-01: + reference: G. v. 05.08.1974 BGBl. I S. 1769. + note: DM converted to Euro. + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 25 + intercept_at_lower_threshold: 307 + 2: + lower_threshold: 35 + intercept_at_lower_threshold: 429 + 3: + lower_threshold: 45 + intercept_at_lower_threshold: 568 + 4: + lower_threshold: 55 + intercept_at_lower_threshold: 721 + 5: + lower_threshold: 65 + intercept_at_lower_threshold: 890 + 6: + lower_threshold: 75 + intercept_at_lower_threshold: 1058 + 7: + lower_threshold: 85 + intercept_at_lower_threshold: 1227 + 8: + lower_threshold: 95 + upper_threshold: inf + intercept_at_lower_threshold: 1411 + 2002-01-01: + reference: Art. 1 G. v. 19.12.2000 BGBl. I S. 1790. + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 25 + intercept_at_lower_threshold: 310 + 2: + lower_threshold: 35 + intercept_at_lower_threshold: 430 + 3: + lower_threshold: 45 + intercept_at_lower_threshold: 570 + 4: + lower_threshold: 55 + intercept_at_lower_threshold: 720 + 5: + lower_threshold: 65 + intercept_at_lower_threshold: 890 + 6: + lower_threshold: 75 + intercept_at_lower_threshold: 1060 + 7: + lower_threshold: 85 + intercept_at_lower_threshold: 1230 + 8: + lower_threshold: 95 + upper_threshold: inf + intercept_at_lower_threshold: 1420 + 2021-01-01: + reference: Art. 1 G. v. 09.12.2020 BGBL. I S. 2770. + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 20 + intercept_at_lower_threshold: 384 + 2: + lower_threshold: 30 + intercept_at_lower_threshold: 620 + 3: + lower_threshold: 40 + intercept_at_lower_threshold: 860 + 4: + lower_threshold: 50 + intercept_at_lower_threshold: 1140 + 5: + lower_threshold: 60 + intercept_at_lower_threshold: 1140 + 6: + lower_threshold: 70 + intercept_at_lower_threshold: 1780 + 7: + lower_threshold: 80 + intercept_at_lower_threshold: 2120 + 8: + lower_threshold: 90 + intercept_at_lower_threshold: 2460 + 9: + lower_threshold: 100 + upper_threshold: inf + intercept_at_lower_threshold: 2840 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" new file mode 100644 index 0000000000..09b4bfad65 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" @@ -0,0 +1,25 @@ +"""Tax allowances.""" + +from __future__ import annotations + +from ttsim import policy_function + + +@policy_function() +def betrag_y_sn( + sonderausgaben_y_sn: float, + vorsorgeaufwendungen_y_sn: float, + betrag_ind_y_sn: float, +) -> float: + """Calculate total allowances on Steuernummer level.""" + return sonderausgaben_y_sn + vorsorgeaufwendungen_y_sn + betrag_ind_y_sn + + +@policy_function() +def betrag_ind_y( + pauschbetrag_behinderung_y: float, + alleinerziehend_betrag_y: float, + altersfreibetrag_y: float, +) -> float: + """Sum up all tax-deductible allowances applicable at the individual level.""" + return pauschbetrag_behinderung_y + alleinerziehend_betrag_y + altersfreibetrag_y diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" index 9fe4564200..010c381cb8 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @@ -9,10 +11,10 @@ def beitrag_private_rentenversicherung_m() -> float: @policy_input() -def betreuungskosten_m() -> float: +def kinderbetreuungskosten_m() -> float: """Monthly childcare expenses for a particular child under the age of 14.""" @policy_input() -def p_id_betreuungskostenträger() -> int: +def p_id_kinderbetreuungskostenträger() -> int: """Identifier of the person who paid childcare expenses.""" diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" deleted file mode 100644 index d0e81c2f3d..0000000000 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/pauschbetrag_behinderung.py" +++ /dev/null @@ -1,37 +0,0 @@ -"""Tax allowances for the disabled.""" - -from ttsim import policy_function -from ttsim.config import numpy_or_jax as np - - -@policy_function(vectorization_strategy="loop") -def pauschbetrag_behinderung_y( - behinderungsgrad: int, eink_st_abzuege_params: dict -) -> float: - """Assign tax deduction allowance for handicaped to different handicap degrees. - - Parameters - ---------- - behinderungsgrad - See basic input variable :ref:`behinderungsgrad <behinderungsgrad>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - - # Get disability degree thresholds - bins = sorted(eink_st_abzuege_params["behinderten_pauschbetrag"]) - - # Select corresponding bin. - selected_bin_index = ( - np.searchsorted(np.asarray([*bins, np.inf]), behinderungsgrad, side="right") - 1 - ) - selected_bin = bins[selected_bin_index] - - # Select appropriate pauschbetrag. - out = eink_st_abzuege_params["behinderten_pauschbetrag"][selected_bin] - - return out diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index fbf50b6f9a..b70bd22275 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -1,5 +1,7 @@ """Tax allowances for special expenses.""" +from __future__ import annotations + from ttsim import ( AggType, RoundingSpec, @@ -9,8 +11,8 @@ @agg_by_p_id_function(agg_type=AggType.SUM) -def betreuungskosten_elternteil_m( - betreuungskosten_m: float, p_id_betreuungskostenträger: int, p_id: int +def kinderbetreuungskosten_elternteil_m( + kinderbetreuungskosten_m: float, p_id_kinderbetreuungskostenträger: int, p_id: int ) -> float: pass @@ -18,118 +20,64 @@ def betreuungskosten_elternteil_m( @policy_function(end_date="2011-12-31", leaf_name="sonderausgaben_y_sn") def sonderausgaben_y_sn_nur_pauschale( einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + sonderausgabenpauschbetrag: float, ) -> float: """Sonderausgaben on Steuernummer level until 2011. Only a lump sum payment is implemented. - Parameters - ---------- - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- """ - # so far, only the Sonderausgabenpauschale is considered - - out = ( - eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] - * einkommensteuer__anzahl_personen_sn - ) - return out + return sonderausgabenpauschbetrag * einkommensteuer__anzahl_personen_sn @policy_function(start_date="2012-01-01", leaf_name="sonderausgaben_y_sn") -def sonderausgaben_y_sn_mit_betreuung( - absetzbare_betreuungskosten_y_sn: float, +def sonderausgaben_y_sn_mit_kinderbetreuung( + absetzbare_kinderbetreuungskosten_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + sonderausgabenpauschbetrag: float, ) -> float: """Sonderausgaben on Steuernummer level since 2012. We follow 10 Abs.1 Nr. 5 EStG. You can find details here https://www.buzer.de/s1.htm?a=10&g=estg. - Parameters - ---------- - absetzbare_betreuungskosten_y_sn - See :func:`absetzbare_betreuungskosten_y_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - - Returns - ------- - """ - sonderausgaben_gesamt = absetzbare_betreuungskosten_y_sn - pauschale = ( - eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] - * einkommensteuer__anzahl_personen_sn - ) - out = max(sonderausgaben_gesamt, pauschale) - - return out + return max( + absetzbare_kinderbetreuungskosten_y_sn, + sonderausgabenpauschbetrag * einkommensteuer__anzahl_personen_sn, + ) @policy_function() -def ausgaben_für_betreuung_y( - betreuungskosten_elternteil_y: float, - eink_st_abzuege_params: dict, +def gedeckelte_kinderbetreuungskosten_y( + kinderbetreuungskosten_elternteil_y: float, + parameter_absetzbare_kinderbetreuungskosten: dict[str, float], ) -> float: - """Individual deductable childcare cost for each individual child under 14. - - Parameters - ---------- - betreuungskosten_elternteil_y - See :func:`betreuungskosten_elternteil_y`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - out = min( - betreuungskosten_elternteil_y, - eink_st_abzuege_params["kinderbetreuungskosten_abz_maximum"], + """Individual deductible childcare cost for each individual child under 14.""" + return min( + kinderbetreuungskosten_elternteil_y, + parameter_absetzbare_kinderbetreuungskosten["maximum"], ) - return out @policy_function(rounding_spec=RoundingSpec(base=1, direction="up")) -def absetzbare_betreuungskosten_y_sn( - ausgaben_für_betreuung_y_sn: float, - eink_st_abzuege_params: dict, +def absetzbare_kinderbetreuungskosten_y_sn( + gedeckelte_kinderbetreuungskosten_y_sn: float, + parameter_absetzbare_kinderbetreuungskosten: dict[str, float], ) -> float: """Sonderausgaben for childcare on Steuernummer level. We follow 10 Abs.1 Nr. 5 EStG. You can details here https://www.buzer.de/s1.htm?a=10&g=estg. - Parameters - ---------- - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - ausgaben_für_betreuung_y_sn - See :func:`ausgaben_für_betreuung_y_sn`. - Returns - ------- """ - out = ( - ausgaben_für_betreuung_y_sn - * eink_st_abzuege_params["kinderbetreuungskosten_abz_anteil"] + return ( + gedeckelte_kinderbetreuungskosten_y_sn + * parameter_absetzbare_kinderbetreuungskosten["anteil"] ) - - return out diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.yaml" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.yaml" new file mode 100644 index 0000000000..04330cea08 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.yaml" @@ -0,0 +1,34 @@ +--- +sonderausgabenpauschbetrag: + name: + de: Sonderausgaben-Pauschbetrag + en: Lump-sum deduction for other expenses + description: + de: § 10c EStG + en: null + unit: Euros + reference_period: Year + type: scalar + 1984-01-01: + value: 138 + 1988-01-01: + value: 55 + reference: Art. 1 G. v. 25.07.1988, BGBl. I S. 1093 + note: 108 DM. Rückdatiert auf das gesamte Jahr. + 2002-01-01: + value: 36 + note: Art. 1 G. v. 19.12.2000, BGBl. I S. 1790 +parameter_absetzbare_kinderbetreuungskosten: + name: + de: Parameter zur Berechnung der absetzbaren Kinderbetreuungsaufwendungen + en: Parameter for calculating deductible child care expenses + description: + de: §10 (1) Nr. 5 EStG + en: null + unit: Share + reference_period: null + type: dict + 2012-01-01: + anteil: 0.6666666 + maximum: 4000.0 + reference: Art. 1 G. v. 01.11.2011 BGBl. I S.2131 diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" similarity index 53% rename from "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" rename to "src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" index 59b024ff05..ef3d0494d7 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" @@ -1,4 +1,12 @@ -from ttsim import RoundingSpec, policy_function +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +from ttsim import RoundingSpec, piecewise_polynomial, policy_function +from ttsim.column_objects_param_function import param_function + +if TYPE_CHECKING: + from ttsim.param_objects import PiecewisePolynomialParamValue @policy_function( @@ -9,17 +17,7 @@ def vorsorgeaufwendungen_y_sn_bis_2004( vorsorgeaufwendungen_regime_bis_2004_y_sn: float, ) -> float: - """Vorsorgeaufwendungen until 2004. - - Parameters - ---------- - vorsorgeaufwendungen_regime_bis_2004_y_sn - See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. - - Returns - ------- - - """ + """Vorsorgeaufwendungen until 2004.""" return vorsorgeaufwendungen_regime_bis_2004_y_sn @@ -35,17 +33,7 @@ def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( ) -> float: """Vorsorgeaufwendungen from 2005 to 2009. - Günstigerprüfung against the pre-2005 regime. - - Parameters - ---------- - vorsorgeaufwendungen_regime_bis_2004_y_sn - See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. - vorsorgeaufwendungen_globale_kappung_y_sn - See :func:`vorsorgeaufwendungen_globale_kappung_y_sn`. - - Returns - ------- + Günstigerprüfung against the regime until 2004. """ @@ -67,17 +55,7 @@ def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( ) -> float: """Vorsorgeaufwendungen from 2010 to 2019. - Günstigerprüfung against the pre-2005 regime. - - Parameters - ---------- - vorsorgeaufwendungen_regime_bis_2004_y_sn - See :func:`vorsorgeaufwendungen_regime_bis_2004_y_sn`. - vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn - See :func:`vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn`. - - Returns - ------- + Günstigerprüfung against the regime until 2004. """ @@ -97,49 +75,21 @@ def vorsorgeaufwendungen_y_sn_ab_2020( ) -> float: """Vorsorgeaufwendungen since 2020. - Günstigerprüfung against the regime before 2005 revoked. - - Parameters - ---------- - vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn - See :func:`vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn`. - - Returns - ------- + Günstigerprüfung against the regime until 2004 is revoked. """ return vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn -@policy_function( - end_date="2019-12-31", -) +@policy_function(end_date="2019-12-31") def vorsorgeaufwendungen_regime_bis_2004_y_sn( vorwegabzug_lohnsteuer_y_sn: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + parameter_altersvorsorgeaufwendungen_regime_bis_2004: dict[str, float], ) -> float: - """Vorsorgeaufwendungen calculated using the pre-2005 regime. - - Parameters - ---------- - vorwegabzug_lohnsteuer_y_sn - See :func:`vorwegabzug_lohnsteuer_y_sn`. - sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. - sozialversicherung__rente__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ + """Vorsorgeaufwendungen calculated using the regime until 2004.""" multiplikator1 = max( ( ( @@ -153,7 +103,9 @@ def vorsorgeaufwendungen_regime_bis_2004_y_sn( item_1 = (1 / einkommensteuer__anzahl_personen_sn) * multiplikator1 - höchstbetrag = eink_st_abzuege_params["vorsorge_2004_grundhöchstbetrag"] + höchstbetrag = parameter_altersvorsorgeaufwendungen_regime_bis_2004[ + "grundhöchstbetrag" + ] if item_1 > höchstbetrag: multiplikator2 = höchstbetrag @@ -169,9 +121,7 @@ def vorsorgeaufwendungen_regime_bis_2004_y_sn( else: item_3 = 0.5 * (item_1 - item_2) - out = vorwegabzug_lohnsteuer_y_sn + item_2 + item_3 - - return out + return vorwegabzug_lohnsteuer_y_sn + item_2 + item_3 @policy_function( @@ -184,30 +134,12 @@ def vorsorgeaufwendungen_globale_kappung_y_sn( sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn: float, sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + maximalbetrag_sonstige_vorsorgeaufwendungen: float, ) -> float: """Vorsorgeaufwendungen before favorability checks from 2005 to 2009. All deductions for social insurance contributions are capped. - Parameters - ---------- - altersvorsorge_y_sn - See :func:`altersvorsorge_y_sn`. - sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn`. - sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - """ sum_vorsorge = ( sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn @@ -216,13 +148,11 @@ def vorsorgeaufwendungen_globale_kappung_y_sn( ) max_value = ( einkommensteuer__anzahl_personen_sn - * eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] + * maximalbetrag_sonstige_vorsorgeaufwendungen ) sum_vorsorge = min(sum_vorsorge, max_value) - out = sum_vorsorge + altersvorsorge_y_sn - - return out + return sum_vorsorge + altersvorsorge_y_sn @policy_function( @@ -234,39 +164,22 @@ def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn: float, sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + maximalbetrag_sonstige_vorsorgeaufwendungen: float, + minderungsanteil_vorsorgeaufwendungen_für_krankenversicherungsbeiträge: float, ) -> float: """Vorsorgeaufwendungen. Expenses for health insurance contributions are not subject to any caps. - Parameters - ---------- - altersvorsorge_y_sn - See :func:`altersvorsorge_y_sn`. - sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn`. - sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn`. - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - """ basiskrankenversicherung = ( sozialversicherung__pflege__beitrag__betrag_versicherter_y_sn - + (1 - eink_st_abzuege_params["vorsorge_kranken_minderung"]) + + (1 - minderungsanteil_vorsorgeaufwendungen_für_krankenversicherungsbeiträge) * sozialversicherung__kranken__beitrag__betrag_versicherter_y_sn ) sonst_vors_max = ( - eink_st_abzuege_params["vorsorge_sonstige_aufw_max"] + maximalbetrag_sonstige_vorsorgeaufwendungen * einkommensteuer__anzahl_personen_sn ) sonst_vors_before_basiskrankenv = min( @@ -281,8 +194,28 @@ def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( # Basiskrankenversicherung can always be deducted even if above sonst_vors_max sonst_vors = max(basiskrankenversicherung, sonst_vors_before_basiskrankenv) - out = sonst_vors + altersvorsorge_y_sn - return out + return sonst_vors + altersvorsorge_y_sn + + +@param_function(start_date="2005-01-01", end_date="2022-12-31") +def rate_abzugsfähige_altersvorsorgeaufwendungen( + evaluationsjahr: int, + parameter_einführungsfaktor_altersvorsorgeaufwendungen: PiecewisePolynomialParamValue, +) -> dict[str, Any]: + """Calculate introductory factor for pension expense deductions which depends on the + current year as follows: + + In the years 2005-2025 the share of deductible contributions increases by + 2 percentage points each year from 60% in 2005 to 100% in 2025. + + Reference: § 10 Abs. 1 Nr. 2 Buchst. a und b EStG + + + """ + return piecewise_polynomial( + x=evaluationsjahr, + parameters=parameter_einführungsfaktor_altersvorsorgeaufwendungen, + ) @policy_function( @@ -294,30 +227,16 @@ def altersvorsorge_y_sn_phase_in( sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, beitrag_private_rentenversicherung_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + rate_abzugsfähige_altersvorsorgeaufwendungen: float, + maximalbetrag_altersvorsorgeaufwendungen: float, ) -> float: """Contributions to retirement savings deductible from taxable income. The share of deductible contributions increases each year from 60% in 2005 to 100% in 2025. - - Parameters - ---------- - sozialversicherung__rente__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. - beitrag_private_rentenversicherung_y_sn - See :func:`beitrag_private_rentenversicherung_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - """ out = ( - eink_st_abzuege_params["einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005"] + rate_abzugsfähige_altersvorsorgeaufwendungen * ( 2 * sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + beitrag_private_rentenversicherung_y_sn @@ -325,8 +244,7 @@ def altersvorsorge_y_sn_phase_in( - sozialversicherung__rente__beitrag__betrag_versicherter_y_sn ) max_value = ( - einkommensteuer__anzahl_personen_sn - * eink_st_abzuege_params["vorsorge_altersaufw_max"] + einkommensteuer__anzahl_personen_sn * maximalbetrag_altersvorsorgeaufwendungen ) out = min(out, max_value) @@ -338,32 +256,15 @@ def altersvorsorge_y_sn_volle_anrechnung( sozialversicherung__rente__beitrag__betrag_versicherter_y_sn: float, beitrag_private_rentenversicherung_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + maximalbetrag_altersvorsorgeaufwendungen: float, ) -> float: - """Contributions to retirement savings deductible from taxable income. - - Parameters - ---------- - sozialversicherung__rente__beitrag__betrag_versicherter_y_sn - See :func:`sozialversicherung__rente__beitrag__betrag_versicherter_y_sn`. - beitrag_private_rentenversicherung_y_sn - See :func:`beitrag_private_rentenversicherung_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ + """Contributions to retirement savings deductible from taxable income.""" out = ( sozialversicherung__rente__beitrag__betrag_versicherter_y_sn + beitrag_private_rentenversicherung_y_sn ) max_value = ( - einkommensteuer__anzahl_personen_sn - * eink_st_abzuege_params["vorsorge_altersaufw_max"] + einkommensteuer__anzahl_personen_sn * maximalbetrag_altersvorsorgeaufwendungen ) return min(out, max_value) @@ -373,27 +274,15 @@ def altersvorsorge_y_sn_volle_anrechnung( def vorwegabzug_lohnsteuer_y_sn( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - eink_st_abzuege_params: dict, + parameter_altersvorsorgeaufwendungen_regime_bis_2004: dict[str, float], ) -> float: - """Vorwegabzug for Vorsorgeaufwendungen via Lohnsteuer. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ + """Vorwegabzug for Vorsorgeaufwendungen via Lohnsteuer.""" out = (1 / einkommensteuer__anzahl_personen_sn) * ( einkommensteuer__anzahl_personen_sn - * eink_st_abzuege_params["vorsorge2004_vorwegabzug"] - - eink_st_abzuege_params["vorsorge2004_kürzung_vorwegabzug"] + * parameter_altersvorsorgeaufwendungen_regime_bis_2004["vorwegabzug"] + - parameter_altersvorsorgeaufwendungen_regime_bis_2004[ + "kürzungsanteil_abhängig_beschäftigte" + ] * einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y_sn ) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.yaml" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.yaml" new file mode 100644 index 0000000000..67dad0d8e5 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.yaml" @@ -0,0 +1,196 @@ +--- +parameter_altersvorsorgeaufwendungen_regime_bis_2004: + name: + de: Vorsorgeaufwendungen nach Rechtslage bis 2004. + en: Deduction for pension expenses, regime until 2004. + description: + de: >- + Vorwegabzug: + § 10 (4a) EStG. Früher §10 (3) EStG. Hier steht jeweils der Wert für den + Steuerpflichtigen. Wird verdoppelt für gemeinsam veranlagte Ehegatten. Der gesamte + Zeitverlauf wurde bereits 2005 festgelegt. + Grundhöchstbetrag: + § 10 (3) EStG. + Kürzung bei abhängig Beschäftigten: + §10 (3) S. 2 EStG (vor 2004). Der Vorwegabzug wird pauschal um einen Anteil + gekürzt bei abhängig Beschäftigten (vereinfacht). + Achtung: Heterogene Einträge im dict! + en: null + unit: null + reference_period: Year + type: dict + 1985-01-01: + vorwegabzug: 1534 + grundhöchstbetrag: 1196 + kürzungsanteil_abhängig_beschäftigte: 0.0935 + 1986-01-01: + updates_previous: true + kürzungsanteil_abhängig_beschäftigte: 0.096 + 1987-01-01: + updates_previous: true + kürzungsanteil_abhängig_beschäftigte: 0.0935 + 1989-01-01: + updates_previous: true + vorwegabzug: 2045 + kürzungsanteil_abhängig_beschäftigte: 0.12 + 1992-01-01: + updates_previous: true + grundhöchstbetrag: 1334 + 1993-01-01: + updates_previous: true + vorwegabzug: 3068 + 1994-01-01: + updates_previous: true + kürzungsanteil_abhängig_beschäftigte: 0.16 + reference: Art. 1 G. v. 21.12.1993 BGBl. I S. 2310. + 2011-01-01: + updates_previous: true + vorwegabzug: 2700 + 2012-01-01: + updates_previous: true + vorwegabzug: 2400 + 2013-01-01: + updates_previous: true + vorwegabzug: 2100 + 2014-01-01: + updates_previous: true + vorwegabzug: 1800 + 2015-01-01: + updates_previous: true + vorwegabzug: 1500 + 2016-01-01: + updates_previous: true + vorwegabzug: 1200 + 2017-01-01: + updates_previous: true + vorwegabzug: 900 + 2018-01-01: + updates_previous: true + vorwegabzug: 600 + 2019-01-01: + updates_previous: true + vorwegabzug: 300 +parameter_einführungsfaktor_altersvorsorgeaufwendungen: + name: + de: Einführungsfaktor für Altersvorsorgeaufwendungen + en: Introductory factor for pension contributions + description: + de: >- + § 10 Abs. 1 Nr. 2 Buchst. a und b EStG + In den Jahren 2005-2022 stieg der Anteil der abzugsfähigen Beiträge von 60% in + 2005 jährlich um 2 Prozentpunkte an bis 94% in 2022 erreicht wurden. Eigentlich + war geplant, dass der Parameter weiter mit dieser Rate steigt, bis ab 2025 100% + erreicht sind. Abweichend von diesem Plan, wurden die abzugsfähigen Beiträge schon + 2023 auf 100% gesetzt. + en: >- + § 10 Abs. 1 Nr. 2 Buchst. a und b EStG + In the years 2005-2022, the share of deductible contributions increased by 2 + percentage points each year from 60% in 2005 to 94% in 2022. It was planned that + 100% are reached in 2025. Deviating from this plan, the deductible contributions + were set to 100% already in 2023. + unit: null + reference_period: null + type: piecewise_linear + 2005-01-01: + 0: + lower_threshold: -inf + rate_linear: 0 + intercept_at_lower_threshold: 0.6 + 1: + lower_threshold: 2005 + upper_threshold: 2025 + rate_linear: 0.02 + 2: + upper_threshold: inf + rate_linear: 0 + 2023-01-01: + reference: G. v. 20.12.2022 BGBl. I S. 2294. + 0: + lower_threshold: -inf + rate_linear: 0 + intercept_at_lower_threshold: 0.6 + 1: + lower_threshold: 2005 + rate_linear: 0.02 + 2: + lower_threshold: 2022 + upper_threshold: 2023 + rate_linear: 0.06 + 3: + upper_threshold: inf + rate_linear: 0 +maximalbetrag_sonstige_vorsorgeaufwendungen: + name: + de: >- + Regulärer Maximalbetrag für sonstige Vorsorgeaufwendungen (Kranken-, Pflege, + AL-V), der für sozialverspfl. Beschäftigte gilt. + en: null + description: + de: §10 Abs. 4 S.1 EStG + en: null + unit: Euros + reference_period: Year + type: scalar + 2005-01-01: + value: 1500 + reference: Art. 1 G. v. 05.07.2004 BGBl. I S.1427 + 2010-01-01: + value: 1900 + reference: Art. 1 G. v. 23.07.2009 BGBl. I S.1959. +maximalbetrag_altersvorsorgeaufwendungen: + name: + de: Maximalbetrag der Altersvorsorgeaufwendungen, 2005er Rechtsstand + en: null + description: + de: §10 (3) EStG, Anlage 2 SGB VI + en: null + unit: Euros + reference_period: Year + type: scalar + 2005-01-01: + value: 20000 + note: Art. 1 G. v. 05.07.2004 BGBl. I S.1427 + 2015-01-01: + value: 22170 + note: >- + Ab 2015 knappschaftlicher Höchstbetrag, d.h. knappschaftlicher Beitragssatz * + knappschaftliche Beitragsbemessungsgrenze + 2016-01-01: + value: 22766 + note: 0.248 * 91800 + 2017-01-01: + value: 23362 + note: 0.248 * 94200 + 2018-01-01: + value: 23712 + note: 0.247 * 96000 + 2019-01-01: + value: 24305 + note: 0.247 * 98400 + 2020-01-01: + value: 25046 + reference: Art. 3 V. v. 17.12.2019 BGBl I S. 2848. + note: 0.247 * 101400 + 2021-01-01: + value: 25787 + reference: §3 V. v. 30.11.2020 BGBl. I S. 2612. + note: 0.247 * 104400 + 2022-01-01: + value: 25640 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + note: 0.247 * 103800 +minderungsanteil_vorsorgeaufwendungen_für_krankenversicherungsbeiträge: + name: + de: >- + Anteil, um den Krankenversicherungsbeiträge bei abhängig Beschäftigten + gemindert werden . + en: null + description: + de: §10 (3) a) S.4 EStG + en: null + unit: Share + reference_period: null + type: scalar + 2009-07-23: + value: 0.04 + reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index 1871bcc846..27be21ef4b 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -3,6 +3,8 @@ Einkommen are Einkünfte minus Sonderausgaben, Vorsorgeaufwendungen, außergewöhnliche Belastungen and sonstige Abzüge.""" +from __future__ import annotations + from ttsim import policy_function diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 589e941559..4af6eb6f9d 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -1,13 +1,28 @@ """Income taxes.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +import optree + from ttsim import ( AggType, + PiecewisePolynomialParamValue, RoundingSpec, agg_by_group_function, agg_by_p_id_function, + param_function, piecewise_polynomial, policy_function, ) +from ttsim.piecewise_polynomial import ( + check_and_get_thresholds, + get_piecewise_parameters, +) + +if TYPE_CHECKING: + from ttsim import ConsecutiveInt1dLookupTableParamValue, RawParam @agg_by_group_function(agg_type=AggType.COUNT) @@ -50,15 +65,6 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( ) -> float: """Income tax calculation on Steuernummer level allowing for claiming Kinderfreibetrag and receiving Kindergeld at the same time. - - Parameters - ---------- - betrag_mit_kinderfreibetrag_y_sn - See :func:`betrag_mit_kinderfreibetrag_y_sn`. - - Returns - ------- - """ return betrag_mit_kinderfreibetrag_y_sn @@ -76,23 +82,7 @@ def betrag_y_sn_kindergeld_oder_kinderfreibetrag( kinderfreibetrag_günstiger_sn: bool, relevantes_kindergeld_y_sn: float, ) -> float: - """Income tax calculation on Steuernummer level since 1997. - - Parameters - ---------- - betrag_ohne_kinderfreibetrag_y_sn - See :func:`betrag_ohne_kinderfreibetrag_y_sn`. - betrag_mit_kinderfreibetrag_y_sn - See :func:`betrag_mit_kinderfreibetrag_y_sn`. - kinderfreibetrag_günstiger_sn - See :func:`kinderfreibetrag_günstiger_sn`. - relevantes_kindergeld_y_sn - See :func:`relevantes_kindergeld_y_sn`. - - Returns - ------- - - """ + """Income tax calculation on Steuernummer level since 1997.""" if kinderfreibetrag_günstiger_sn: out = betrag_mit_kinderfreibetrag_y_sn + relevantes_kindergeld_y_sn else: @@ -107,26 +97,12 @@ def kinderfreibetrag_günstiger_sn( betrag_mit_kinderfreibetrag_y_sn: float, relevantes_kindergeld_y_sn: float, ) -> bool: - """Kinderfreibetrag more favorable than Kindergeld. - - Parameters - ---------- - betrag_ohne_kinderfreibetrag_y_sn - See :func:`betrag_ohne_kinderfreibetrag_y_sn`. - betrag_mit_kinderfreibetrag_y_sn - See :func:`betrag_mit_kinderfreibetrag_y_sn`. - relevantes_kindergeld_y_sn - See :func:`relevantes_kindergeld_y_sn`. - Returns - ------- - - """ + """Kinderfreibetrag more favorable than Kindergeld.""" unterschiedsbeitrag = ( betrag_ohne_kinderfreibetrag_y_sn - betrag_mit_kinderfreibetrag_y_sn ) - out = unterschiedsbeitrag > relevantes_kindergeld_y_sn - return out + return unterschiedsbeitrag > relevantes_kindergeld_y_sn @policy_function( @@ -151,33 +127,20 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, anzahl_personen_sn: int, - eink_st_params: dict, + parameter_einkommensteuertarif: PiecewisePolynomialParamValue, ) -> float: - """Taxes with child allowance on Steuernummer level. Also referred to as "tarifliche - ESt I". + """Taxes with child allowance on Steuernummer level. - Parameters - ---------- - zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn - See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. - anzahl_personen_sn - See :func:`anzahl_personen_sn`. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>`. - - Returns - ------- + Also referred to as "tarifliche ESt I". """ zu_verst_eink_per_indiv = ( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn / anzahl_personen_sn ) - out = anzahl_personen_sn * einkommensteuertarif( - zu_verst_eink_per_indiv, params=eink_st_params + return anzahl_personen_sn * einkommensteuertarif( + x=zu_verst_eink_per_indiv, params=parameter_einkommensteuertarif ) - return out - @policy_function( rounding_spec=RoundingSpec( @@ -188,72 +151,42 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( def betrag_ohne_kinderfreibetrag_y_sn( gesamteinkommen_y: float, anzahl_personen_sn: int, - eink_st_params: dict, + parameter_einkommensteuertarif: PiecewisePolynomialParamValue, ) -> float: """Taxes without child allowance on Steuernummer level. Also referred to as "tarifliche ESt II". - Parameters - ---------- - gesamteinkommen_y - See :func:`gesamteinkommen_y`. - anzahl_personen_sn - See :func:`anzahl_personen_sn`. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>`. - - Returns - ------- - """ zu_verst_eink_per_indiv = gesamteinkommen_y / anzahl_personen_sn - out = anzahl_personen_sn * einkommensteuertarif( - zu_verst_eink_per_indiv, params=eink_st_params + return anzahl_personen_sn * einkommensteuertarif( + x=zu_verst_eink_per_indiv, params=parameter_einkommensteuertarif ) - return out - -@policy_function( - end_date="2022-12-31", - leaf_name="relevantes_kindergeld_m", - vectorization_strategy="loop", -) +@policy_function(end_date="2022-12-31", leaf_name="relevantes_kindergeld_m") def relevantes_kindergeld_mit_staffelung_m( anzahl_kindergeld_ansprüche_1: int, anzahl_kindergeld_ansprüche_2: int, - kindergeld_params: dict, + kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Kindergeld relevant for income tax. For each parent, half of the actual Kindergeld claim is considered. + Note: It doesn't matter which parent actually receives the Kindergeld. For income + tax purposes, only the eligibility to claim Kindergeld is relevant. + Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." - Parameters - ---------- - anzahl_kindergeld_ansprüche_1 - See :func:`anzahl_kindergeld_ansprüche_1`. - anzahl_kindergeld_ansprüche_2 - See :func:`anzahl_kindergeld_ansprüche_2`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - Returns - ------- """ kindergeld_ansprüche = anzahl_kindergeld_ansprüche_1 + anzahl_kindergeld_ansprüche_2 - if kindergeld_ansprüche == 0: - relevantes_kindergeld = 0.0 - else: - relevantes_kindergeld = sum( - kindergeld_params["kindergeld"][ - (min(i, max(kindergeld_params["kindergeld"]))) - ] - for i in range(1, kindergeld_ansprüche + 1) - ) - - return relevantes_kindergeld / 2 + return ( + kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ + kindergeld_ansprüche - kindergeld__satz_nach_anzahl_kinder.base_to_subtract + ] + / 2 + ) @policy_function( @@ -263,50 +196,63 @@ def relevantes_kindergeld_mit_staffelung_m( def relevantes_kindergeld_ohne_staffelung_m( anzahl_kindergeld_ansprüche_1: int, anzahl_kindergeld_ansprüche_2: int, - kindergeld_params: dict, + kindergeld__satz: float, ) -> float: """Kindergeld relevant for income tax. For each parent, half of the actual Kindergeld claim is considered. + Note: It doesn't matter which parent actually receives the Kindergeld. For income + tax purposes, only the eligibility to claim Kindergeld is relevant. + Source: § 31 Satz 4 EStG: "Bei nicht zusammenveranlagten Eltern wird der Kindergeldanspruch im Umfang des Kinderfreibetrags angesetzt." - Parameters - ---------- - anzahl_kindergeld_ansprüche_1 - See :func:`anzahl_kindergeld_ansprüche_1`. - anzahl_kindergeld_ansprüche_2 - See :func:`anzahl_kindergeld_ansprüche_2`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - Returns - ------- - """ kindergeld_ansprüche = anzahl_kindergeld_ansprüche_1 + anzahl_kindergeld_ansprüche_2 - return kindergeld_params["kindergeld"] * kindergeld_ansprüche / 2 + return kindergeld__satz * kindergeld_ansprüche / 2 + + +def einkommensteuertarif(x: float, params: PiecewisePolynomialParamValue) -> float: + """The German income tax tariff.""" + return piecewise_polynomial( + x=x, + parameters=params, + ) -def einkommensteuertarif(x: float, params: dict) -> float: - """The German income tax tariff. +@param_function(start_date="2002-01-01") +def parameter_einkommensteuertarif( + raw_parameter_einkommensteuertarif: RawParam, +) -> PiecewisePolynomialParamValue: + """Add the quadratic terms to tax tariff function. - Parameters - ---------- - x : float - The series of floats which the income tax schedule is applied to. - params : dict - Dictionary created in respy.piecewise_functions. + The German tax tariff is defined on several income intervals with distinct + marginal tax rates at the thresholds. To ensure an almost linear increase of + the average tax rate, the German tax tariff is defined as a quadratic function, + where the quadratic rate is the so called linear Progressionsfaktor. For its + calculation one needs the lower (low_thres) and upper (upper_thres) thresholds of + the interval as well as the marginal tax rate of the interval (rate_iv) and of the + following interval (rate_fiv). The formula is then given by: - Returns - ------- + (rate_fiv - rate_iv) / (2 * (upper_thres - low_thres)) """ - out = piecewise_polynomial( - x=x, - thresholds=params["eink_st_tarif"]["thresholds"], - rates=params["eink_st_tarif"]["rates"], - intercepts_at_lower_thresholds=params["eink_st_tarif"][ - "intercepts_at_lower_thresholds" - ], + expanded: dict[int, dict[str, float]] = optree.tree_map( # type: ignore[assignment] + float, raw_parameter_einkommensteuertarif + ) + + # Check and extract lower thresholds. + lower_thresholds, upper_thresholds = check_and_get_thresholds( + leaf_name="parameter_einkommensteuertarif", + parameter_dict=expanded, + )[:2] + for key in sorted(raw_parameter_einkommensteuertarif.keys()): + if "rate_quadratic" not in raw_parameter_einkommensteuertarif[key]: + expanded[key]["rate_quadratic"] = ( + expanded[key + 1]["rate_linear"] - expanded[key]["rate_linear"] + ) / (2 * (upper_thresholds[key] - lower_thresholds[key])) + return get_piecewise_parameters( + leaf_name="parameter_einkommensteuertarif", + func_type="piecewise_quadratic", + parameter_dict=expanded, ) - return out diff --git a/src/_gettsim/parameters/eink_st.yaml b/src/_gettsim/einkommensteuer/einkommensteuertarif.yaml similarity index 75% rename from src/_gettsim/parameters/eink_st.yaml rename to src/_gettsim/einkommensteuer/einkommensteuertarif.yaml index 874b6cedb9..1079b3c5c4 100644 --- a/src/_gettsim/parameters/eink_st.yaml +++ b/src/_gettsim/einkommensteuer/einkommensteuertarif.yaml @@ -1,21 +1,21 @@ --- -eink_st_tarif: +raw_parameter_einkommensteuertarif: name: - de: Einkommenssteuer Tarif - en: Income Tax tarif + de: Parameter des Einkommensteuertarifs + en: Parameters of the income tax schedule description: - de: §32a EStG - en: null - note: de: >- + §32a EStG Der quadratische Anstieg in den mittleren Intervallen wird nach der Formel des Progressionsfaktors berechnet. Einzelheiten sind im docstring der Funktion add_progressionsfaktor beschrieben. en: >- + §32a EStG The quadratic rate is calculated by gettsim with the formula of the Progressionsfaktor. For details see the docstring of add_progressionsfaktor. - type: piecewise_quadratic - progressionsfaktor: true + unit: Euros + reference_period: Year + type: require_converter 2002-01-01: 0: lower_threshold: -inf @@ -88,7 +88,7 @@ eink_st_tarif: rate_linear: 0.45 rate_quadratic: 0 2009-01-01: - deviation_from: previous + updates_previous: true 0: upper_threshold: 7834 1: @@ -99,7 +99,7 @@ eink_st_tarif: 3: upper_threshold: 250400 2010-01-01: - deviation_from: previous + updates_previous: true reference: Artikel 1 G. v. 02.03.2009 BGBl. I S. 416 0: upper_threshold: 8004 @@ -110,23 +110,23 @@ eink_st_tarif: 3: upper_threshold: 250730 2013-01-01: - deviation_from: previous + updates_previous: true 0: upper_threshold: 8130 2014-01-01: - deviation_from: previous + updates_previous: true note: Gesetz zum Abbau der kalten Progression reference: G. v. 20.2.2013, BGBl I S.283 0: upper_threshold: 8354 2015-07-01: - deviation_from: previous + updates_previous: true note: Gesetz z. Anhebung des Gfb, des Kfb, des Kindergeldes und des Kiz reference: G. v. 15.07.2015, BGBl. Nr. 30 2015 0: upper_threshold: 8472 2016-01-01: - deviation_from: previous + updates_previous: true note: Gesetz z. Anhebung des Gfb, des Kfb, des Kindergeldes und des Kiz reference: G. v. 15.07.2015, BGBl. Nr. 30 2015 0: @@ -138,7 +138,7 @@ eink_st_tarif: 3: upper_threshold: 254446 2017-01-01: - deviation_from: previous + updates_previous: true reference: Artikel 8 G. v. 20.12.2016, BGBl I S. 3000 0: upper_threshold: 8820 @@ -149,7 +149,7 @@ eink_st_tarif: 3: upper_threshold: 256303 2018-01-01: - deviation_from: previous + updates_previous: true reference: Artikel 9 G. v 23.12.2016, BGBL I, S. 3000 0: upper_threshold: 9000 @@ -160,7 +160,7 @@ eink_st_tarif: 3: upper_threshold: 260532 2019-01-01: - deviation_from: previous + updates_previous: true 0: upper_threshold: 9168 1: @@ -170,7 +170,7 @@ eink_st_tarif: 3: upper_threshold: 265326 2020-01-01: - deviation_from: previous + updates_previous: true reference: Art. 3 G. v. 29.11.2018 BGBl. I S. 2210 0: upper_threshold: 9408 @@ -181,7 +181,7 @@ eink_st_tarif: 3: upper_threshold: 270500 2021-01-01: - deviation_from: previous + updates_previous: true reference: Art. 1 G. v. 01.12.2020 BGBl. I S. 2616 0: upper_threshold: 9744 @@ -192,7 +192,7 @@ eink_st_tarif: 3: upper_threshold: 274612 2022-01-01: - deviation_from: previous + updates_previous: true reference: Art. 1 G. v. 23.05.2022 BGBl. I S. 749 note: >- First specified in Art. 2. G. v. 01.12.2020 BGBl. I S. 2616, new defined resp. @@ -206,7 +206,7 @@ eink_st_tarif: 3: upper_threshold: 277826 2023-01-01: - deviation_from: previous + updates_previous: true reference: Art. 2 G. v. 08.12.2022 BGBl. I S. 2230. 0: upper_threshold: 10908 @@ -217,7 +217,7 @@ eink_st_tarif: 3: upper_threshold: 277825 2024-01-01: - deviation_from: previous + updates_previous: true reference: Art. 1 G. v. 05.12.2024 BGBl. 2024 I Nr. 386. 0: upper_threshold: 11784 @@ -228,7 +228,7 @@ eink_st_tarif: 3: upper_threshold: 277825 2025-01-01: - deviation_from: previous + updates_previous: true reference: Art. 1 G. v. 30.12.2024 BGBl. 2024 Nr. 449. 0: upper_threshold: 12096 @@ -239,7 +239,7 @@ eink_st_tarif: 3: upper_threshold: 277825 2026-01-01: - deviation_from: previous + updates_previous: true reference: Art. 2 G. v. 30.12.2024 BGBl. 2024 Nr. 449. 0: upper_threshold: 12348 @@ -247,41 +247,3 @@ eink_st_tarif: upper_threshold: 17799 2: upper_threshold: 69878 -rente_ertragsanteil: - name: - de: >- - Ertragsanteil-Funktion für den Anteil an sozialversicherungspflichtigen - Renteneinkommen, der versteuert werden muss (piecewise linear) - en: >- - Piecewise linear function for calculating the share of pensions subject to income - taxation. - description: - de: § 22 EStG - en: null - note: - de: >- - Diese Funktion ist hier ab 2002 angegeben. Vor 2002 das Steuersystem ist nicht - implementiert. - en: null - type: piecewise_linear - 2002-01-01: - 0: - lower_threshold: -inf - upper_threshold: 2005 - rate_linear: 0 - intercept_at_lower_threshold: 0.27 - 1: - lower_threshold: 2005 - upper_threshold: 2021 - rate_linear: 0.02 - intercept_at_lower_threshold: 0.5 - 2: - lower_threshold: 2021 - upper_threshold: 2041 - rate_linear: 0.01 - intercept_at_lower_threshold: 0.8 - 3: - lower_threshold: 2041 - upper_threshold: inf - rate_linear: 0.0 - intercept_at_lower_threshold: 1 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" index 258f856491..0e6ca5e7dc 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" index 5ff853b24d..f13fa1a6d4 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" index 43edecd3d1..52d1857920 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" @@ -1,29 +1,26 @@ """Einkünfte aus Kapitalvermögen.""" +from __future__ import annotations + from ttsim import policy_function -@policy_function() -def betrag_y( +@policy_function(end_date="2008-12-31", leaf_name="betrag_y") +def betrag_y_mit_sparerfreibetrag_und_werbungskostenpauschbetrag( kapitalerträge_y: float, - eink_st_abzuege_params: dict, + sparerfreibetrag: float, + sparer_werbungskostenpauschbetrag: float, ) -> float: - """Calculate taxable capital income on Steuernummer level. - - Parameters - ---------- - kapitalerträge_y - See :func:`kapitalerträge_y`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - out = kapitalerträge_y - ( - eink_st_abzuege_params["sparerpauschbetrag"] - + eink_st_abzuege_params["sparer_werbungskosten_pauschbetrag"] + """Calculate taxable capital income on Steuernummer level.""" + return max( + kapitalerträge_y - sparerfreibetrag + sparer_werbungskostenpauschbetrag, 0.0 ) - return max(out, 0.0) + +@policy_function(start_date="2009-01-01", leaf_name="betrag_y") +def betrag_y_mit_sparerpauschbetrag( + kapitalerträge_y: float, + sparerpauschbetrag: float, +) -> float: + """Calculate taxable capital income on Steuernummer level.""" + return max(kapitalerträge_y - sparerpauschbetrag, 0.0) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/freibetr\303\244ge.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/freibetr\303\244ge.yaml" new file mode 100644 index 0000000000..8dc352e789 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/freibetr\303\244ge.yaml" @@ -0,0 +1,74 @@ +--- +sparerfreibetrag: + name: + de: Sparerfreibetrag + en: Allowance for Capital Gains + description: + de: >- + Früher § 20 (4) EStG. Wert für Einzelpersonen. Wird verdoppelt für + gemeinsam veranlagte Paare. + en: null + unit: Euros + reference_period: Year + type: scalar + 1975-01-01: + value: 153 + note: 300 DM. + 1990-01-01: + value: 307 + note: 600 DM. + 1993-01-01: + value: 3068 + note: 6000 DM. + 2000-01-01: + value: 1534 + note: 3000 DM + 2002-01-01: + value: 1550 + reference: Art. 1 G. v. 19.12.2000 BGBl I S. 1790. + 2004-01-01: + value: 1370 + 2007-01-01: + value: 750 + 2009-01-01: + note: >- + Integration von Sparerfreibetrag, Werbungskostenpauschbetrag bei + Zinseinkünften in Sparerpauschbetrag. +sparer_werbungskostenpauschbetrag: + name: + de: Werbungskostenpauschbetrag bei Zinseinkünften + en: null + description: + de: § 9a EStG + en: null + unit: Euros + reference_period: Year + type: scalar + 1975-01-01: + value: 51 + note: 100 DM. + 2009-01-01: + note: >- + Integration von Sparerfreibetrag, Werbungskostenpauschbetrag bei + Zinseinkünften in Sparerpauschbetrag. +sparerpauschbetrag: + name: + de: Sparerpauschbetrag + en: Allowance for Capital Gains + description: + de: >- + § 20 (9) EStG. Wert für Einzelpersonen. Wird verdoppelt für + gemeinsam veranlagte Paare. + en: null + unit: Euros + reference_period: Year + type: scalar + 2009-01-01: + value: 801 + reference: Art. 1 G. v. 14.08.2007 BGBl. I S. 1912 + note: >- + Integration von Werbungskostenpauschbetrag für Zinseinkünfte in + Sparerpauschbetrag. + 2023-01-01: + value: 1000 + reference: G. v. 20.12.2022 BGBl. I S. 2294. diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" index c4ea8403ef..64809bb836 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" index 2ae0d54eed..544e995763 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -1,5 +1,7 @@ """Einkünfte aus nichtselbstständiger Arbeit.""" +from __future__ import annotations + from ttsim import policy_function @@ -10,17 +12,6 @@ def betrag_y( ) -> float: """Taxable income from dependent employment. In particular, taxable income is set to 0 for marginally employed persons. - - Parameters - ---------- - betrag_ohne_minijob_y - See :func:`betrag_ohne_minijob_y`. - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - - Returns - ------- - """ if sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -31,28 +22,7 @@ def betrag_y( @policy_function() -def betrag_ohne_minijob_y( - bruttolohn_y: float, - eink_st_abzuege_params: dict, -) -> float: - """Aggregate monthly gross wage to yearly income and deduct - 'Werbungskostenpauschale'. - - The wage is reducted by a lump sum payment for 'Werbungskosten' - - Parameters - ---------- - bruttolohn_y - See basic input variable :ref:`bruttolohn_y <bruttolohn_y>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - - """ - abzug = eink_st_abzuege_params["werbungskostenpauschale"] - - out = bruttolohn_y - abzug +def betrag_ohne_minijob_y(bruttolohn_y: float, werbungskostenpauschale: float) -> float: + """Take gross wage and deduct Werbungskostenpauschale.""" - return max(out, 0.0) + return max(bruttolohn_y - werbungskostenpauschale, 0.0) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" index bc235e6814..74e93ea683 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" new file mode 100644 index 0000000000..96fb283473 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" @@ -0,0 +1,29 @@ +--- +werbungskostenpauschale: + name: + de: Werbungskostenpauschbetrag bei nichtselbstständiger Arbeit. + en: Lump-sum deduction for employment income. + description: + de: § 9a Nr. 1a) EStG + en: This is the minimum amount deducted from any employment income. + unit: Euros + reference_period: Year + type: scalar + 1975-01-01: + value: 288 + note: 564 DM + 1990-01-01: + value: 1044 + note: 2000 DM. + 2004-01-01: + value: 920 + 2012-01-01: + value: 1000 + reference: Art. 1 G. v. 01.11.2011 BGBl. I S. 2131. + note: Für Lohnsteuerabzug gültig ab 2011-11-05. + 2022-01-01: + value: 1200 + reference: Art. 2 G. v. 23.05.2022 BGBl. I S. 749 + 2023-01-01: + value: 1230 + reference: G. v. 20.12.2022 BGBl. I S. 2294. diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" index 819d2c0aa7..d87c0aeb4b 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" index 273a26e693..874080d09f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" index 8ea38e9034..a79faf7ef1 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" @@ -1,5 +1,7 @@ """Einkünfte according to §§ 13-24 EStG.""" +from __future__ import annotations + from ttsim import policy_function @@ -14,7 +16,7 @@ def gesamtbetrag_der_einkünfte_y_mit_kapiteleinkünften( sonstige__betrag_y: float, ) -> float: """Gesamtbetrag der Einkünfte (GdE) with capital income.""" - out = ( + return ( aus_forst_und_landwirtschaft__betrag_y + aus_gewerbebetrieb__betrag_y + aus_selbstständiger_arbeit__betrag_y @@ -23,7 +25,6 @@ def gesamtbetrag_der_einkünfte_y_mit_kapiteleinkünften( + aus_vermietung_und_verpachtung__betrag_y + sonstige__betrag_y ) - return out @policy_function(start_date="2009-01-01", leaf_name="gesamtbetrag_der_einkünfte_y") @@ -39,7 +40,7 @@ def gesamtbetrag_der_einkünfte_y_ohne_kapitaleinkünfte( Since 2009 capital income is not subject to normal taxation. """ - out = ( + return ( aus_forst_und_landwirtschaft__betrag_y + aus_gewerbebetrieb__betrag_y + aus_selbstständiger_arbeit__betrag_y @@ -47,4 +48,3 @@ def gesamtbetrag_der_einkünfte_y_ohne_kapitaleinkünfte( + aus_vermietung_und_verpachtung__betrag_y + sonstige__betrag_y ) - return out diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" index 1d67eb0028..bfb915305a 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" index c3073dce64..ce5f80fd53 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" new file mode 100644 index 0000000000..6c500cabe3 --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" @@ -0,0 +1,40 @@ +--- +parameter_ertragsanteil_an_rente: + name: + de: >- + Ertragsanteil-Funktion für den Anteil an sozialversicherungspflichtigen + Renteneinkommen, der versteuert werden muss (piecewise linear) + en: >- + Piecewise linear function for calculating the share of pensions subject to income + taxation. + description: + de: >- + § 22 EStG + Diese Funktion ist hier ab 2002 angegeben. Vor 2002 das Steuersystem ist nicht + implementiert. + en: null + unit: null + reference_period: null + type: piecewise_linear + # type: require_converter + 2002-01-01: + 0: + lower_threshold: -inf + upper_threshold: 2005 + rate_linear: 0 + intercept_at_lower_threshold: 0.27 + 1: + lower_threshold: 2005 + upper_threshold: 2021 + rate_linear: 0.02 + intercept_at_lower_threshold: 0.5 + 2: + lower_threshold: 2021 + upper_threshold: 2041 + rate_linear: 0.01 + intercept_at_lower_threshold: 0.8 + 3: + lower_threshold: 2041 + upper_threshold: inf + rate_linear: 0.0 + intercept_at_lower_threshold: 1 diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" index 343669f932..30fd6458bc 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -1,6 +1,8 @@ """Sonstige Einkünfte according to § 22 EStG.""" -from ttsim import piecewise_polynomial, policy_function +from __future__ import annotations + +from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function @policy_function() @@ -14,27 +16,24 @@ def betrag_m( @policy_function() def renteneinkünfte_m( - rente_ertragsanteil: float, + ertragsanteil_an_rente: float, sozialversicherung__rente__altersrente__betrag_m: float, sozialversicherung__rente__private_rente_betrag_m: float, ) -> float: """Pension income counting towards taxable income.""" - return rente_ertragsanteil * ( + return ertragsanteil_an_rente * ( sozialversicherung__rente__altersrente__betrag_m + sozialversicherung__rente__private_rente_betrag_m ) @policy_function() -def rente_ertragsanteil( - sozialversicherung__rente__jahr_renteneintritt: int, eink_st_params: dict +def ertragsanteil_an_rente( + sozialversicherung__rente__jahr_renteneintritt: int, + parameter_ertragsanteil_an_rente: PiecewisePolynomialParamValue, ) -> float: """Share of pensions subject to income taxation.""" return piecewise_polynomial( x=sozialversicherung__rente__jahr_renteneintritt, - thresholds=eink_st_params["rente_ertragsanteil"]["thresholds"], - rates=eink_st_params["rente_ertragsanteil"]["rates"], - intercepts_at_lower_thresholds=eink_st_params["rente_ertragsanteil"][ - "intercepts_at_lower_thresholds" - ], + parameters=parameter_ertragsanteil_an_rente, ) diff --git a/src/_gettsim/einkommensteuer/inputs.py b/src/_gettsim/einkommensteuer/inputs.py index 97cbdff507..ee79e66ee9 100644 --- a/src/_gettsim/einkommensteuer/inputs.py +++ b/src/_gettsim/einkommensteuer/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index 155fabefa6..dd445b7783 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -1,46 +1,22 @@ """Tax allowances for individuals or couples with children.""" -from ttsim import AggType, agg_by_p_id_function, policy_function +from __future__ import annotations - -@agg_by_p_id_function(agg_type=AggType.SUM) -def anzahl_kinderfreibeträge_1( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, - p_id_kinderfreibetragsempfänger_1: int, - p_id: int, -) -> int: - pass - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def anzahl_kinderfreibeträge_2( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, - p_id_kinderfreibetragsempfänger_2: int, - p_id: int, -) -> int: - pass +from ttsim import AggType, agg_by_p_id_function, param_function, policy_function @policy_function() def kinderfreibetrag_y( anzahl_kinderfreibeträge: int, - eink_st_abzuege_params: dict, + kinderfreibetrag_pro_kind_y: float, ) -> float: - """Individual child allowance. - - Parameters - ---------- - anzahl_kinderfreibeträge - See :func:`anzahl_kinderfreibeträge`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. + """Individual child allowance.""" + return kinderfreibetrag_pro_kind_y * anzahl_kinderfreibeträge - Returns - ------- - """ - kinderfreib = list(eink_st_abzuege_params["kinderfreib"].values()) - return sum(kinderfreib) * anzahl_kinderfreibeträge +@param_function() +def kinderfreibetrag_pro_kind_y(parameter_kinderfreibetrag: dict[str, float]) -> float: + return sum(parameter_kinderfreibetrag.values()) @policy_function() @@ -55,33 +31,33 @@ def anzahl_kinderfreibeträge( Note: Users should overwrite this function if there are single parents in the data who should receive two instead of one Kinderfreibeträge. GETTSIM does not automatically do this, even if the p_id of the other parent is set to missing (-1). - - Parameters - ---------- - anzahl_kinderfreibeträge_1 - See :func:`p_id_kinderfreibetr_empfänger_1 <p_id_kinderfreibetr_empfänger_1>`. - anzahl_kinderfreibeträge_2 - See :func:`p_id_kinderfreibetr_empfänger_2 <p_id_kinderfreibetr_empfänger_2>`. - """ return anzahl_kinderfreibeträge_1 + anzahl_kinderfreibeträge_2 -@policy_function() -def p_id_kinderfreibetragsempfänger_1( - familie__p_id_elternteil_1: int, +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinderfreibeträge_1( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + p_id_kinderfreibetragsempfänger_1: int, + p_id: int, ) -> int: - """Assigns child allowance to parent 1. + pass - Parameters - ---------- - familie__p_id_elternteil_1 - See :func:`familie__p_id_elternteil_1`. - Returns - ------- +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_kinderfreibeträge_2( + kindergeld__grundsätzlich_anspruchsberechtigt: bool, + p_id_kinderfreibetragsempfänger_2: int, + p_id: int, +) -> int: + pass - """ + +@policy_function() +def p_id_kinderfreibetragsempfänger_1( + familie__p_id_elternteil_1: int, +) -> int: + """Assigns child allowance to parent 1.""" return familie__p_id_elternteil_1 @@ -89,15 +65,5 @@ def p_id_kinderfreibetragsempfänger_1( def p_id_kinderfreibetragsempfänger_2( familie__p_id_elternteil_2: int, ) -> int: - """Assigns child allowance to parent 2. - - Parameters - ---------- - familie__p_id_elternteil_2 - See :func:`familie__p_id_elternteil_2`. - - Returns - ------- - - """ + """Assigns child allowance to parent 2.""" return familie__p_id_elternteil_2 diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.yaml b/src/_gettsim/einkommensteuer/kinderfreibetrag.yaml new file mode 100644 index 0000000000..16cfeee12d --- /dev/null +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.yaml @@ -0,0 +1,102 @@ +--- +parameter_kinderfreibetrag: + name: + de: Kinderfreibetrag + en: Basic Income Tax Allowance for children + description: + de: >- + sächliches Existenzminimum des Kindes, seit 2000 auch der Freibetrag für + Betreuungs-, Erziehungs- oder Ausbildungsbedarf. Wird verdoppelt für gemeinsam + veranlagte Paare. §32 (6) EStG. + en: null + unit: Euros + reference_period: Year + type: dict + 1983-01-01: + sächliches_existenzminimum: 110 + reference: Art. 1 G. v. 23.12.1982 BGBl. I S. 1857. + note: Der Betrag laut Gesetz ist 216 DM. + 1986-01-01: + sächliches_existenzminimum: 635 + reference: Art. 1 G. v. 26.06.1985 BGBl. I S. 1153. + note: Der Betrag im Gesetz lautet 1242 DM. + 1990-01-01: + sächliches_existenzminimum: 773 + reference: Artikel 1 G. v. 25.07.1988 BGBl. I S. 1093. + note: Der Betrag im Gesetz lautet 1512 DM. + 1992-01-01: + sächliches_existenzminimum: 1049 + reference: Art. 1 G. v. 25.02.1992 BGBl. I S. 297. + note: Wert laut Gesetz 2052 DM. + 1996-01-01: + sächliches_existenzminimum: 1601 + reference: Art. 1. G. v. 11.10.1995 BGBl. I S. 1250. + note: Laut Gesetz 261 DM pro Monat. + 1997-01-01: + sächliches_existenzminimum: 1767 + note: Laut Gesetz 288 DM pro Monat (ab 2000 3456 DM pro Jahr) + 2000-01-01: + sächliches_existenzminimum: 1767 + betreuung_erziehung_ausbildung: 774 + reference: Art. 1 G. v. 28.12.1999 BGBl. I. S. 2552. + note: Wert für betreuung_erziehung_ausbildung laut Gesetz 1512 DM. + 2002-01-01: + sächliches_existenzminimum: 1824 + betreuung_erziehung_ausbildung: 1080 + reference: Art. 1 G. v. 16.08.2001 BGBl. I S. 2074 + 2009-01-01: + updates_previous: true + sächliches_existenzminimum: 1932 + reference: Art. 1 G. v. 22.12.2008 BGBl. I S. 2955 + 2010-01-01: + sächliches_existenzminimum: 2184 + betreuung_erziehung_ausbildung: 1320 + reference: Art. 1 G. v. 22.12.2009 BGBl. I S. 3950 + 2015-01-01: + updates_previous: true + sächliches_existenzminimum: 2256 + reference: Art. 1 G. v. 16.07.2015 BGBl. I S. 1202 + 2016-01-01: + updates_previous: true + sächliches_existenzminimum: 2304 + reference: Art. 2 G. v. 16.07.2015 BGBl. I S. 1202 + 2017-01-01: + updates_previous: true + sächliches_existenzminimum: 2358 + reference: Art. 8 G. v. 20.12.2016 BGBl. I. S. 3000 + 2018-01-01: + updates_previous: true + sächliches_existenzminimum: 2394 + reference: Art. 9 G. v. 20.12.2016 BGBl. I. S. 3000 + 2019-01-01: + updates_previous: true + sächliches_existenzminimum: 2490 + reference: Art. 1 G. v. 29.11.2018 BGBl. I S. 2210 + 2020-01-01: + updates_previous: true + sächliches_existenzminimum: 2586 + reference: Art. 3 G. v. 29.11.2018 BGBl. I S. 2210 + 2021-01-01: + betreuung_erziehung_ausbildung: 1464 + sächliches_existenzminimum: 2730 + reference: Art. 1 G. v. 01.12.2020 BGBl. I S. 2616 + 2022-01-01: + updates_previous: true + sächliches_existenzminimum: 2810 + reference: Art. 1 G. v. 08.12.2022 BGBl. I S. 2230. + 2023-01-01: + updates_previous: true + sächliches_existenzminimum: 3012 + reference: Art. 2 G. v. 08.12.2022 BGBl. I S. 2230. + 2024-01-01: + updates_previous: true + sächliches_existenzminimum: 3306 + reference: Art. 1 G. v. 05.12.2024 BGBl. 2024 I Nr. 386. + 2025-01-01: + updates_previous: true + sächliches_existenzminimum: 3336 + reference: Art. 1 G. v. 30.12.2024 BGBl. 2024 Nr. 449. + 2026-01-01: + updates_previous: true + sächliches_existenzminimum: 3414 + reference: Art. 2 G. v. 30.12.2024 BGBl. 2024 Nr. 449. diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index 6fe08b0178..88ba2dcb03 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -1,5 +1,7 @@ """Taxable income.""" +from __future__ import annotations + from ttsim import RoundingSpec, policy_function @@ -15,21 +17,7 @@ def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel( einkommensteuer__gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: - """Calculate taxable income on Steuernummer level. - - Parameters - ---------- - zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn - See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. - einkommensteuer__gesamteinkommen_y - See :func:`einkommensteuer__gesamteinkommen_y`. - kinderfreibetrag_günstiger_sn - See :func:`kinderfreibetrag_günstiger_sn`. - - Returns - ------- - - """ + """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: @@ -54,21 +42,7 @@ def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel( einkommensteuer__gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: - """Calculate taxable income on Steuernummer level. - - Parameters - ---------- - zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn - See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. - einkommensteuer__gesamteinkommen_y - See :func:`einkommensteuer__gesamteinkommen_y`. - kinderfreibetrag_günstiger_sn - See :func:`kinderfreibetrag_günstiger_sn`. - - Returns - ------- - - """ + """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: @@ -92,21 +66,7 @@ def zu_versteuerndes_einkommen_y_sn_mit_dmark_rundungsregel( einkommensteuer__gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: - """Calculate taxable income on Steuernummer level. - - Parameters - ---------- - zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn - See :func:`zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn`. - einkommensteuer__gesamteinkommen_y - See :func:`einkommensteuer__gesamteinkommen_y`. - kinderfreibetrag_günstiger_sn - See :func:`kinderfreibetrag_günstiger_sn`. - - Returns - ------- - - """ + """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: @@ -120,19 +80,7 @@ def zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn( einkommensteuer__gesamteinkommen_y: float, kinderfreibetrag_y_sn: float, ) -> float: - """Calculate taxable income with child allowance on Steuernummer level. - - Parameters - ---------- - einkommensteuer__gesamteinkommen_y - See :func:`einkommensteuer__gesamteinkommen_y`. - kinderfreibetrag_y_sn - See :func:`kinderfreibetrag_y_sn`. - - Returns - ------- - - """ + """Calculate taxable income with child allowance on Steuernummer level.""" out = einkommensteuer__gesamteinkommen_y - kinderfreibetrag_y_sn return max(out, 0.0) diff --git a/src/_gettsim/elterngeld/__init__.py b/src/_gettsim/elterngeld/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/elterngeld/__init__.py +++ b/src/_gettsim/elterngeld/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/elterngeld/anspruch.yaml b/src/_gettsim/elterngeld/anspruch.yaml new file mode 100644 index 0000000000..092f3e3c33 --- /dev/null +++ b/src/_gettsim/elterngeld/anspruch.yaml @@ -0,0 +1,86 @@ +--- +max_bezugsmonate: + name: + de: Maximale Anzahl an Elterngeldbezugsmonaten. + en: Maximum number of months of Elterngeld receipt. + description: + de: >- + § 4 (3) BEEG + § 4 (3) BEEG + Basismonate plus "Partnermonate" bei gleichzeitiger Inanspruchnahme von Elterngeld + bei Paaren. Basismonate bei Alleinerziehenden. + unit: Months + reference_period: null + type: dict + 2007-01-01: + basismonate: 12 + partnermonate: 2 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +max_zu_versteuerndes_einkommen_vorjahr_nach_alleinerziehendenstatus: + name: + de: Maximales zu versteuerndes Einkommen im Jahr vor der Geburt des Kindes. + en: Maximum taxable income in the year before the birth of the child. + description: + de: >- + Maximales zu versteuerndes Einkommen im letzten Veranlagungszeitraum vor Geburt + des Kindes. Einkommen über dieser Grenze schließt den Bezug von Elterngeld aus (§ + 1 (8) BEEG). + en: >- + Maximum taxable income in the year before the birth of the child. Income above + this threshold disqualifies the parent from receiving Elterngeld. + unit: Euros + reference_period: null + type: dict + 2011-01-01: + alleinerziehend: 250000.0 + paar: 500000.0 + reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 + 2021-09-01: + updates_previous: true + paar: 300000.0 + reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 + 2024-04-01: + note: Pauschalisiert, siehe 'max_zu_versteuerndes_einkommen_vorjahr_pauschal' +max_zu_versteuerndes_einkommen_vorjahr_pauschal: + name: + de: Maximales zu versteuerndes Einkommen im Jahr vor der Geburt des Kindes. + en: Maximum taxable income in the year before the birth of the child. + description: + de: >- + Maximales zu versteuerndes Einkommen im letzten Veranlagungszeitraum vor Geburt + des Kindes. Einkommen über dieser Grenze schließt den Bezug von Elterngeld aus (§ + 1 (8) BEEG). + en: >- + Maximum taxable income in the year before the birth of the child. Income above + this threshold disqualifies the parent from receiving Elterngeld. + unit: Euros + reference_period: Year + type: scalar + 2024-04-01: + value: 200000.0 + reference: >- + Single: Art. 7 G. v. 27.03.2024 BGBl. 2024 I Nr. 107, Paar: Art. 1 G. v. + 22.12.2023 BGBl. 2023 I Nr. 412 + 2025-04-01: + value: 175000.0 + reference: >- + Single: Art. 7 G. v. 27.03.2024 BGBl. 2024 I Nr. 107, Paar: Art. 1 G. v. + 22.12.2023 BGBl. 2023 I Nr. 412 +max_arbeitsstunden_w: + name: + de: >- + Maximale Wochenstunden die bei Elterngeldbezug gearbeitet werden dürfen + en: >- + Maximum amount of weekly hours one is allowed to work while receiving Elterngeld + description: + de: §1 (6) BEEG + en: null + unit: Hours + reference_period: Week + type: scalar + 2007-01-01: + value: 30 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 + 2021-09-01: + value: 32 + reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 diff --git a/src/_gettsim/elterngeld/boni.yaml b/src/_gettsim/elterngeld/boni.yaml new file mode 100644 index 0000000000..a424c89325 --- /dev/null +++ b/src/_gettsim/elterngeld/boni.yaml @@ -0,0 +1,61 @@ +--- +geschwisterbonus_altersgrenzen: + name: + de: Altersgrenzen für Geschwisterbonus + en: Age limit for sibling bonus + description: + de: >- + § 2a BEEG + § 2a BEEG + Leben im Haushalt zwei Kinder unter 3 Jahren oder mehr als zwei unter 6 Jahren + wird das Elterngeld erhöht. + en: >- + § 2a BEEG + § 2a BEEG + If there are two children under the age of 3 or more than two under the age of 6 + living in the household, Elterngeld increases. + unit: Years + reference_period: null + type: dict + 2007-01-01: + 3: 2 + 6: 3 +geschwisterbonus_aufschlag: + name: + de: Geschwisterbonus als prozentualer Aufschlag + en: Sibling Bonus, percentage top-up + description: + de: § 2a (1) BEEG. Früher § 2 (4) BEEG + en: null + unit: Share + reference_period: null + type: scalar + 2007-01-01: + value: 0.1 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +geschwisterbonus_minimum: + name: + de: Minimaler Geschwisterbonus als Euro-Betrag + en: Sibling Bonus, minimal amount + description: + de: § 2a (1) BEEG. Früher §2 (4) BEEG + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 75.0 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +mehrlingsbonus_pro_kind: + name: + de: Pauschale für jedes weitere Mehrlingskind + en: Twin, triplet bonus per additional child + description: + de: § 2a (4) BEEG, früher §2 (6) BEEG. + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 300.0 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index 32e05d6229..3ec0d02be8 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -1,5 +1,7 @@ """Relevant income for parental leave benefits.""" +from __future__ import annotations + from ttsim import RoundingSpec, policy_function @@ -9,21 +11,7 @@ def anzurechnendes_nettoeinkommen_m( lohnsteuer__betrag_m: float, lohnsteuer__betrag_soli_m: float, ) -> float: - """Income that reduces the Elterngeld claim. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - lohnsteuer__betrag_m - See :func:`lohnsteuer__betrag_m`. - lohnsteuer__betrag_soli_m - See :func:`lohnsteuer__betrag_soli_m`. - - Returns - ------- - - """ + """Income that reduces the Elterngeld claim.""" # TODO(@MImmesberger): In this case, lohnsteuer__betrag_m should be calculated # without taking into account adaptions to the standard care insurance rate. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/792 @@ -40,23 +28,11 @@ def anzurechnendes_nettoeinkommen_m( ) def lohnersatzanteil_einkommen_untere_grenze( nettoeinkommen_vorjahr_m: float, - elterngeld_params: dict, + nettoeinkommensstufen_für_lohnersatzrate: dict[str, float], ) -> float: - """Lower threshold for replacement rate adjustment minus net income. - - Parameters - ---------- - nettoeinkommen_vorjahr_m - See basic input variable :ref:`nettoeinkommen_vorjahr_m<nettoeinkommen_vorjahr_m>`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ + """Lower threshold for replacement rate adjustment minus net income.""" return ( - elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] + nettoeinkommensstufen_für_lohnersatzrate["lower_threshold"] - nettoeinkommen_vorjahr_m ) @@ -67,62 +43,41 @@ def lohnersatzanteil_einkommen_untere_grenze( ) def lohnersatzanteil_einkommen_obere_grenze( nettoeinkommen_vorjahr_m: float, - elterngeld_params: dict, + nettoeinkommensstufen_für_lohnersatzrate: dict[str, float], ) -> float: - """Net income minus upper threshold for replacement rate adjustment. - - Parameters - ---------- - nettoeinkommen_vorjahr_m - See basic input variable - :ref:`nettoeinkommen_vorjahr_m<nettoeinkommen_vorjahr_m>`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ + """Net income minus upper threshold for replacement rate adjustment.""" return ( nettoeinkommen_vorjahr_m - - elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] + - nettoeinkommensstufen_für_lohnersatzrate["upper_threshold"] ) @policy_function( - start_date="2007-01-01", + start_date="2011-01-01", end_date="2024-03-31", leaf_name="einkommen_vorjahr_unter_bezugsgrenze", ) def einkommen_vorjahr_unter_bezugsgrenze_mit_unterscheidung_single_paar( familie__alleinerziehend: bool, zu_versteuerndes_einkommen_vorjahr_y_sn: float, - elterngeld_params: dict, + max_zu_versteuerndes_einkommen_vorjahr_nach_alleinerziehendenstatus: dict[ + str, float + ], ) -> bool: - """Income before birth is below income threshold for Elterngeld. - - Parameters - ---------- - familie__alleinerziehend - See basic input variable :ref:`familie__alleinerziehend <familie__alleinerziehend>`. - zu_versteuerndes_einkommen_vorjahr_y_sn - See :func:`zu_versteuerndes_einkommen_vorjahr_y_sn`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ + """Income before birth is below income threshold for Elterngeld.""" if familie__alleinerziehend: out = ( zu_versteuerndes_einkommen_vorjahr_y_sn - <= elterngeld_params["max_eink_vorj"]["single"] + <= max_zu_versteuerndes_einkommen_vorjahr_nach_alleinerziehendenstatus[ + "alleinerziehend" + ] ) else: out = ( zu_versteuerndes_einkommen_vorjahr_y_sn - <= elterngeld_params["max_eink_vorj"]["paar"] + <= max_zu_versteuerndes_einkommen_vorjahr_nach_alleinerziehendenstatus[ + "paar" + ] ) return out @@ -132,22 +87,13 @@ def einkommen_vorjahr_unter_bezugsgrenze_mit_unterscheidung_single_paar( ) def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( zu_versteuerndes_einkommen_vorjahr_y_sn: float, - elterngeld_params: dict, + max_zu_versteuerndes_einkommen_vorjahr_pauschal: float, ) -> bool: - """Income before birth is below income threshold for Elterngeld. - - Parameters - ---------- - zu_versteuerndes_einkommen_vorjahr_y_sn - See :func:`zu_versteuerndes_einkommen_vorjahr_y_sn`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ - return zu_versteuerndes_einkommen_vorjahr_y_sn <= elterngeld_params["max_eink_vorj"] + """Income before birth is below income threshold for Elterngeld.""" + return ( + zu_versteuerndes_einkommen_vorjahr_y_sn + <= max_zu_versteuerndes_einkommen_vorjahr_pauschal + ) @policy_function( @@ -158,7 +104,7 @@ def nettoeinkommen_approximation_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, lohnsteuer__betrag_m: float, lohnsteuer__betrag_soli_m: float, - elterngeld_params: dict, + sozialversicherungspauschale: float, ) -> float: """Approximation of net wage used to calculate Elterngeld. @@ -167,20 +113,9 @@ def nettoeinkommen_approximation_m( in the 12 months before the birth of the child. For most datasets, except those with monthly income date (IAB, DRV data), the best approximation will likely be the gross wage in the calendar year before the birth of the child. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - lohnsteuer__betrag_m - See :func:`lohnsteuer__betrag_m`. - lohnsteuer__betrag_soli_m - See :func:`lohnsteuer__betrag_soli_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. """ prox_ssc = ( - elterngeld_params["sozialv_pausch"] + sozialversicherungspauschale * einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m ) return ( diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index e602586d96..34e0dea3df 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -1,4 +1,6 @@ -"""Parental leave benefits.""" +"""Elterngeld (parental leave benefit).""" + +from __future__ import annotations from ttsim import ( AggType, @@ -31,7 +33,7 @@ def bezugsmonate_partner( @agg_by_group_function(agg_type=AggType.MIN) -def alter_monate_jüngstes_mitglied_fg(alter_monate: float, fg_id: int) -> float: +def alter_monate_jüngstes_mitglied_fg(alter_monate: int, fg_id: int) -> float: pass @@ -60,19 +62,7 @@ def betrag_m( grundsätzlich_anspruchsberechtigt: bool, anspruchshöhe_m: float, ) -> float: - """Parental leave benefit (Elterngeld) received by the parent. - - Parameters - ---------- - grundsätzlich_anspruchsberechtigt - See :func:`grundsätzlich_anspruchsberechtigt`. - anspruchshöhe_m - See :func:`anspruchshöhe_m`. - - Returns - ------- - - """ + """Parental leave benefit (Elterngeld) received by the parent.""" if grundsätzlich_anspruchsberechtigt: out = anspruchshöhe_m else: @@ -85,31 +75,16 @@ def basisbetrag_m( nettoeinkommen_vorjahr_m: float, lohnersatzanteil: float, anzurechnendes_nettoeinkommen_m: float, - elterngeld_params: dict, + max_zu_berücksichtigendes_einkommen: float, ) -> float: """Base parental leave benefit without accounting for floor and ceiling. Basisbetrag is calculated on the parental level. - Parameters - ---------- - nettoeinkommen_vorjahr_m - See basic input variable :ref:`nettoeinkommen_vorjahr_m - <nettoeinkommen_vorjahr_m>`. - lohnersatzanteil - See :func:`lohnersatzanteil`. - anzurechnendes_nettoeinkommen_m - See :func:`anzurechnendes_nettoeinkommen_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - """ berücksichtigtes_einkommen = min( nettoeinkommen_vorjahr_m, - elterngeld_params["max_zu_berücksichtigendes_einkommen"], + max_zu_berücksichtigendes_einkommen, ) return ( berücksichtigtes_einkommen - anzurechnendes_nettoeinkommen_m @@ -131,73 +106,61 @@ def anspruchshöhe_m( basisbetrag_m: float, geschwisterbonus_m: float, mehrlingsbonus_m: float, - elterngeld_params: dict, + mindestbetrag: float, + höchstbetrag: float, ) -> float: """Elterngeld before checking eligibility. Anspruchshöhe is calculated on the parental level. - Parameters - ---------- - basisbetrag_m - See :func:`basisbetrag_m`. - geschwisterbonus_m - See :func:`geschwisterbonus_m`. - mehrlingsbonus_m - See :func:`mehrlingsbonus_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - """ return ( min( - max( - basisbetrag_m, - elterngeld_params["mindestbetrag"], - ), - elterngeld_params["höchstbetrag"], + max(basisbetrag_m, mindestbetrag), + höchstbetrag, ) + geschwisterbonus_m + mehrlingsbonus_m ) -@policy_function(start_date="2007-01-01") -def grundsätzlich_anspruchsberechtigt( +@policy_function( + start_date="2007-01-01", + end_date="2010-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt", +) +def grundsätzlich_anspruchsberechtigt_ohne_maximales_vorjahreseinkommen( + claimed: bool, + arbeitsstunden_w: float, + kind_grundsätzlich_anspruchsberechtigt_fg: bool, + bezugsmonate_unter_grenze_fg: bool, + max_arbeitsstunden_w: int, +) -> bool: + """Parent is eligible to receive Elterngeld.""" + return ( + claimed + and arbeitsstunden_w <= max_arbeitsstunden_w + and kind_grundsätzlich_anspruchsberechtigt_fg + and bezugsmonate_unter_grenze_fg + ) + + +@policy_function(start_date="2011-01-01", leaf_name="grundsätzlich_anspruchsberechtigt") +def grundsätzlich_anspruchsberechtigt_mit_maximales_vorjahreseinkommen( claimed: bool, arbeitsstunden_w: float, kind_grundsätzlich_anspruchsberechtigt_fg: bool, einkommen_vorjahr_unter_bezugsgrenze: bool, bezugsmonate_unter_grenze_fg: bool, - elterngeld_params: dict, + max_arbeitsstunden_w: int, ) -> bool: """Parent is eligible to receive Elterngeld. - Parameters - ---------- - claimed - See basic input variable :ref:`claimed <claimed>`. - arbeitsstunden_w - See basic input variable :ref:`arbeitsstunden_w <arbeitsstunden_w>`. - kind_grundsätzlich_anspruchsberechtigt_fg - See :func:`kind_grundsätzlich_anspruchsberechtigt_fg`. - einkommen_vorjahr_unter_bezugsgrenze - See :func:`einkommen_vorjahr_unter_bezugsgrenze`. - bezugsmonate_unter_grenze_fg - See :func:`bezugsmonate_unter_grenze_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - + Maximum income in the previous year introduced via § 1 (8) BEEG. """ return ( claimed - and arbeitsstunden_w <= elterngeld_params["max_arbeitsstunden_w"] + and arbeitsstunden_w <= max_arbeitsstunden_w and einkommen_vorjahr_unter_bezugsgrenze and kind_grundsätzlich_anspruchsberechtigt_fg and bezugsmonate_unter_grenze_fg @@ -210,65 +173,34 @@ def bezugsmonate_unter_grenze_fg( bezugsmonate_partner: int, familie__alleinerziehend: bool, anzahl_anträge_fg: int, - elterngeld_params: dict, + max_bezugsmonate: dict[str, int], ) -> bool: """Elterngeld claimed for less than the maximum number of months in the past by the parent. - Parameters - ---------- - bisherige_bezugsmonate_fg - See :func:`bisherige_bezugsmonate_fg`. - bezugsmonate_partner - See function :func:`bezugsmonate_partner`. - familie__alleinerziehend - See basic input variable :ref:`familie__alleinerziehend<familie__alleinerziehend>`. - anzahl_anträge_fg - See :func:`anzahl_anträge_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - """ if familie__alleinerziehend or bezugsmonate_partner >= 2: out = ( bisherige_bezugsmonate_fg - < elterngeld_params["max_monate_mit_partnermonate"] + < max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] ) elif anzahl_anträge_fg > 1: out = ( bisherige_bezugsmonate_fg + 1 - < elterngeld_params["max_monate_mit_partnermonate"] + < max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] ) else: - out = ( - bisherige_bezugsmonate_fg - < elterngeld_params["max_monate_ohne_partnermonate"] - ) + out = bisherige_bezugsmonate_fg < max_bezugsmonate["basismonate"] return out @policy_function(start_date="2007-01-01") def kind_grundsätzlich_anspruchsberechtigt( alter: int, - elterngeld_params: dict, + max_bezugsmonate: dict[str, int], ) -> bool: - """Child is young enough to give rise to Elterngeld claim. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ - return alter <= elterngeld_params["max_monate_mit_partnermonate"] + """Child is young enough to give rise to Elterngeld claim.""" + return alter <= max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] @policy_function(start_date="2011-01-01") @@ -276,66 +208,59 @@ def lohnersatzanteil( nettoeinkommen_vorjahr_m: float, lohnersatzanteil_einkommen_untere_grenze: float, lohnersatzanteil_einkommen_obere_grenze: float, - elterngeld_params: dict, + einkommensschritte_korrektur: float, + satz: float, + prozent_korrektur: float, + prozent_minimum: float, + nettoeinkommensstufen_für_lohnersatzrate: dict[str, float], ) -> float: """Replacement rate of Elterngeld (before applying floor and ceiling rules). According to § 2 (2) BEEG the percentage increases below the first step and decreases above the second step until prozent_minimum. - Parameters - ---------- - nettoeinkommen_vorjahr_m - See basic input variable - :ref:`nettoeinkommen_vorjahr_m<nettoeinkommen_vorjahr_m>`. - lohnersatzanteil_einkommen_untere_grenze - See :func:`lohnersatzanteil_einkommen_untere_grenze`. - lohnersatzanteil_einkommen_obere_grenze - See :func:`lohnersatzanteil_einkommen_obere_grenze`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - Returns - ------- - """ # Higher replacement rate if considered income is below a threshold if ( nettoeinkommen_vorjahr_m - < elterngeld_params["nettoeinkommen_stufen"]["lower_threshold"] + < nettoeinkommensstufen_für_lohnersatzrate["lower_threshold"] and nettoeinkommen_vorjahr_m > 0 ): - out = elterngeld_params["faktor"] + ( + out = satz + ( lohnersatzanteil_einkommen_untere_grenze - / elterngeld_params["eink_schritt_korrektur"] - * elterngeld_params["prozent_korrektur"] + / einkommensschritte_korrektur + * prozent_korrektur ) # Lower replacement rate if considered income is above a threshold elif ( nettoeinkommen_vorjahr_m - > elterngeld_params["nettoeinkommen_stufen"]["upper_threshold"] + > nettoeinkommensstufen_für_lohnersatzrate["upper_threshold"] ): # Replacement rate is only lowered up to a specific value out = max( - elterngeld_params["faktor"] + satz - ( lohnersatzanteil_einkommen_obere_grenze - / elterngeld_params["eink_schritt_korrektur"] - * elterngeld_params["prozent_korrektur"] + / einkommensschritte_korrektur + * prozent_korrektur ), - elterngeld_params["prozent_minimum"], + prozent_minimum, ) else: - out = elterngeld_params["faktor"] + out = satz return out +# TODO(@MImmesberger): Elterngeld is considered as SGB II income since 2011. Also, there +# is a 300€ Freibetrag under some conditions since 2011. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/549 @policy_function(start_date="2007-01-01") def anrechenbarer_betrag_m( betrag_m: float, anzahl_mehrlinge_fg: int, - elterngeld_params: dict, + mindestbetrag: float, ) -> float: """Elterngeld that can be considered as income for other transfers. @@ -346,29 +271,17 @@ def anrechenbarer_betrag_m( worked right before they had children. See: https://www.kindergeld.org/elterngeld-einkommen/ - Parameters - ---------- - betrag_m - See :func:`betrag_m`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - anzahl_mehrlinge_fg - See :func:`anzahl_mehrlinge_fg`. - - Returns - ------- """ - out = max( - betrag_m - ((1 + anzahl_mehrlinge_fg) * elterngeld_params["mindestbetrag"]), + return max( + betrag_m - ((1 + anzahl_mehrlinge_fg) * mindestbetrag), 0, ) - return out @policy_function() def jüngstes_kind_oder_mehrling( - alter_monate: float, + alter_monate: int, alter_monate_jüngstes_mitglied_fg: float, familie__kind: bool, ) -> bool: @@ -379,18 +292,5 @@ def jüngstes_kind_oder_mehrling( # ToDo: Check definition as relevant for Elterngeld. Currently, it is calculated as # ToDo: age not being larger than 0.1 of a month - Parameters - ---------- - alter_monate - See :func:`alter_monate`. - alter_monate_jüngstes_mitglied_fg - See :func:`alter_monate_jüngstes_mitglied_fg`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - - Returns - ------- - """ - out = ((alter_monate - alter_monate_jüngstes_mitglied_fg) < 0.1) and familie__kind - return out + return ((alter_monate - alter_monate_jüngstes_mitglied_fg) < 0.1) and familie__kind diff --git a/src/_gettsim/elterngeld/formel.yaml b/src/_gettsim/elterngeld/formel.yaml new file mode 100644 index 0000000000..78eb492f91 --- /dev/null +++ b/src/_gettsim/elterngeld/formel.yaml @@ -0,0 +1,134 @@ +--- +satz: + name: + de: Ersatzrate des Elterngelds + en: Replacement rate of Elterngeld + description: + de: >- + § 2 (1) BEEG + Faktor bei der ElG-Berechung, 2. Stufe. + en: null + unit: Share + reference_period: null + type: scalar + 2007-01-01: + value: 0.67 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +höchstbetrag: + name: + de: Höchstbetrag des Elterngeldes + en: Maximum Elterngeld + description: + de: § 2 (1) BEEG + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 1800.0 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +mindestbetrag: + name: + de: Mindestbetrag des Elterngeldes + en: Minimum amount of parental benefit + description: + de: § 2 (5) BEEG + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 300 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +max_zu_berücksichtigendes_einkommen: + name: + de: Maximal zu berücksichtigendes Einkommen vor Geburt. + en: Maximum income to be considered before birth. + description: + de: § 2 (3) BEEG + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 2700.0 + reference: BGBl. I S. 2748 Art. 1 G. v. 05.12.2006 + 2012-09-18: + value: 2770.0 + reference: Artikel 1 G. v. 10.09.2012 BGBl. I S. 1878 +nettoeinkommensstufen_für_lohnersatzrate: + name: + de: Nettoeinkommen an 1. und 2. Stufe + en: Net income where the first and second bracket starts + description: + de: >- + § 2 (2) BEEG. Maßgeblich ist das durchschnittlich erzielte monatliche Einkommen + vor der Geburt + en: null + unit: Euros + reference_period: Month + type: dict + 2007-01-01: + lower_threshold: 1000.0 + upper_threshold: 1001.0 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 + 2011-01-01: + lower_threshold: 1000.0 + upper_threshold: 1201.0 + reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 +prozent_korrektur: + name: + de: Korrektur des Prozentsatzes für hohe und niedrige Einkommen + en: Percentage correction for lower or high incomes + description: + de: § 2 (2) BEEG + en: null + unit: Share + reference_period: null + type: scalar + 2007-01-01: + value: 0.001 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +prozent_minimum: + name: + de: Minimaler Anteil des Elterngelds am vorherigen Nettoeinkommen + en: Percentage deduction limit for higher incomes + description: + de: § 2 (2) BEEG + en: null + unit: Share + reference_period: null + type: scalar + 2007-01-01: + value: 0.67 + note: implizit + 2011-01-01: + value: 0.65 + reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 +einkommensschritte_korrektur: + name: + de: Einkommensschritte für die Korrektur + en: Income steps for percentage correction + description: + de: § 2 (2) BEEG + en: null + unit: Euros + reference_period: Month + type: scalar + 2007-01-01: + value: 2 + reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 +sozialversicherungspauschale: + name: + de: Sozialversicherungspauschale zur Berechnung des Nettoeinkommens + en: null + description: + de: §2f BEEG. Vor 2012 waren es die eigentlichen Pflichtbeiträge. + en: null + unit: Share + reference_period: null + type: scalar + 2012-09-18: + value: 0.21 + reference: Art. 1 G. v. 10.09.2012 BGBl. I S. 1878 + note: 0.09 + 0.1 + 0.02 diff --git a/src/_gettsim/elterngeld/geschwisterbonus.py b/src/_gettsim/elterngeld/geschwisterbonus.py index d4bc76e05e..91418e2ac1 100644 --- a/src/_gettsim/elterngeld/geschwisterbonus.py +++ b/src/_gettsim/elterngeld/geschwisterbonus.py @@ -1,4 +1,6 @@ -"""Parental leave bonus for siblings.""" +"""Geschwisterbonus for Elterngeld.""" + +from __future__ import annotations from ttsim import policy_function @@ -7,29 +9,17 @@ def geschwisterbonus_m( basisbetrag_m: float, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: bool, - elterngeld_params: dict, + geschwisterbonus_aufschlag: float, + geschwisterbonus_minimum: float, ) -> float: """Elterngeld bonus for (older) siblings. According to § 2a parents of siblings get a bonus. - - Parameters - ---------- - basisbetrag_m - See :func:`basisbetrag_m`. - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg - See :func:`geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - """ if geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: out = max( - elterngeld_params["geschwisterbonus_aufschlag"] * basisbetrag_m, - elterngeld_params["geschwisterbonus_minimum"], + geschwisterbonus_aufschlag * basisbetrag_m, + geschwisterbonus_minimum, ) else: out = 0.0 @@ -37,50 +27,20 @@ def geschwisterbonus_m( @policy_function(start_date="2007-01-01") -def mehrlingsbonus_m(anzahl_mehrlinge_fg: int, elterngeld_params: dict) -> float: - """Elterngeld bonus for multiples. - - Parameters - ---------- - anzahl_mehrlinge_fg - See :func:`anzahl_mehrlinge_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ - return anzahl_mehrlinge_fg * elterngeld_params["mehrlingbonus"] +def mehrlingsbonus_m(anzahl_mehrlinge_fg: int, mehrlingsbonus_pro_kind: float) -> float: + """Elterngeld bonus for multiples.""" + return anzahl_mehrlinge_fg * mehrlingsbonus_pro_kind @policy_function(start_date="2007-01-01") def geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg( anzahl_kinder_bis_2_fg: int, anzahl_kinder_bis_5_fg: int, - elterngeld_params: dict, + geschwisterbonus_altersgrenzen: dict[int, int], ) -> bool: - """Siblings that give rise to Elterngeld siblings bonus. - - Parameters - ---------- - anzahl_kinder_bis_2_fg - See :func:`anzahl_kinder_bis_2_fg`. - anzahl_kinder_bis_5_fg - See :func:`anzahl_kinder_bis_5_fg`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - - Returns - ------- - - """ - geschwister_unter_3 = ( - anzahl_kinder_bis_2_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][3] - ) - geschwister_unter_6 = ( - anzahl_kinder_bis_5_fg >= elterngeld_params["geschwisterbonus_altersgrenzen"][6] - ) + """Siblings that give rise to Elterngeld siblings bonus.""" + geschwister_unter_3 = anzahl_kinder_bis_2_fg >= geschwisterbonus_altersgrenzen[3] + geschwister_unter_6 = anzahl_kinder_bis_5_fg >= geschwisterbonus_altersgrenzen[6] return geschwister_unter_3 or geschwister_unter_6 @@ -89,16 +49,6 @@ def geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg( def anzahl_mehrlinge_fg( anzahl_mehrlinge_jüngstes_kind_fg: int, ) -> int: - """Number of multiples of the youngest child. - - Parameters - ---------- - anzahl_mehrlinge_jüngstes_kind_fg - See :func:`anzahl_mehrlinge_jüngstes_kind_fg`. - - Returns - ------- - - """ + """Number of multiples of the youngest child.""" out = anzahl_mehrlinge_jüngstes_kind_fg - 1 return max(out, 0) diff --git a/src/_gettsim/elterngeld/inputs.py b/src/_gettsim/elterngeld/inputs.py index 092d270611..7f7e0b0ad7 100644 --- a/src/_gettsim/elterngeld/inputs.py +++ b/src/_gettsim/elterngeld/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/erziehungsgeld/__init__.py b/src/_gettsim/erziehungsgeld/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/erziehungsgeld/__init__.py +++ b/src/_gettsim/erziehungsgeld/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/erziehungsgeld/anspruch.yaml b/src/_gettsim/erziehungsgeld/anspruch.yaml new file mode 100644 index 0000000000..86fe7c41c0 --- /dev/null +++ b/src/_gettsim/erziehungsgeld/anspruch.yaml @@ -0,0 +1,93 @@ +--- +maximale_wochenarbeitszeit: + name: + de: Wochenarbeitsstundengrenze der Empfänger (Eltern) + en: Weekly working hours limit of recipients (parents) + description: + de: >- + Grenze der wöchentlichen Arbeitsstunden bis zu der Erziehungsgeld ausgezahlt wird + en: >- + Limit of weekly working hours up to which parental leave benefit is paid + unit: Hours + reference_period: Week + type: scalar + 2004-02-09: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 211 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + value: 30 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +maximales_kindsalter_regelsatz: + name: + de: Alter des Kindes bis zu dem der Regelsatz bezogen werden kann. + en: Age of the child up to which the Regelsatz can be claimed. + description: + de: >- + Alter des Kindein Monaten bis zu dem der Regelsatz bezogen werden kann. + en: >- + Age of the child in months up to which the Regelsatz can be claimed. + unit: Months + reference_period: null + type: scalar + 2004-01-01: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 208 + value: 24 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +maximales_kindsalter_budgetsatz: + name: + de: Alter des Kindes bis zu dem der Budgetsatz bezogen werden kann. + en: Age of the child up to which the Budgetsatz can be claimed. + description: + de: >- + Alter des Kindein Monaten bis zu dem der Budgetsatz bezogen werden kann. + en: >- + Age of the child in months up to which the Budgetsatz can be claimed. + unit: Months + reference_period: null + type: scalar + 2004-01-01: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 208 + value: 12 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +abolishment_cohort: + name: + de: Letzte Geburtskohorte, für die Erziehungsgeld ausgezahlt wird + en: Last birth cohort for which parental leave benefit is paid + description: + de: >- + Erziehungsgeld wird durch das Elterngeld ersetzt. + en: >- + Erziehungsgeld is replaced by Elterngeld. + unit: Years + reference_period: null + type: scalar + 2006-12-11: + reference: Art. 3 G. v. 5.12.2006 BGBl. I S. 2748 + value: 2006 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +altersgrenze_für_reduziertes_einkommenslimit_kind_monate: + name: + de: Altersgrenze des Kindes in Monaten für das reduzierte Einkommenslimit + en: Age limit of the child in months for the reduced income limit + description: + de: >- + Bei Kindern unter der Altersgrenze, wird Erziehungsgeld nicht gezahlt, wenn das + Einkommen der Eltern die relevante Einkommensgrenze überschreitet. + en: >- + For children under a certain age, parental leave benefit is not paid if the + income of the parents exceeds the relevant income threshold. + unit: Months + reference_period: Year + type: scalar + 2004-02-09: + reference: 09.02.2004 BGBl. I S. 209 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + Reduced income limit for children older than 6 months. + value: 7 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 278511d9a3..1d862a3e50 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -1,12 +1,46 @@ """Functions to compute parental leave benefits (Erziehungsgeld, -2007).""" +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Literal + from ttsim import ( AggType, RoundingSpec, agg_by_p_id_function, + param_function, policy_function, ) +ErziehungsgeldSätze = Literal["regelsatz", "budgetsatz"] + + +@dataclass(frozen=True) +class EinkommensgrenzeErziehungsgeld: + regulär_alleinerziehend: dict[ErziehungsgeldSätze, float] + regulär_paar: dict[ErziehungsgeldSätze, float] + reduziert_alleinerziehend: dict[ErziehungsgeldSätze, float] + reduziert_paar: dict[ErziehungsgeldSätze, float] + + +@param_function( + start_date="2004-02-09", + end_date="2008-12-31", +) +def einkommensgrenze( + parameter_einkommensgrenze: dict[str, Any], +) -> EinkommensgrenzeErziehungsgeld: + """Parameter der Einkommensgrenze des Erziehungsgelds.""" + return EinkommensgrenzeErziehungsgeld( + regulär_alleinerziehend=parameter_einkommensgrenze["regulär_alleinerziehend"], + regulär_paar=parameter_einkommensgrenze["regulär_paar"], + reduziert_alleinerziehend=parameter_einkommensgrenze[ + "reduziert_alleinerziehend" + ], + reduziert_paar=parameter_einkommensgrenze["reduziert_paar"], + ) + @agg_by_p_id_function(agg_type=AggType.SUM) def anspruchshöhe_m( @@ -25,18 +59,6 @@ def betrag_m( """Total parental leave benefits (Erziehungsgeld) received by the parent. Legal reference: BErzGG (BGBl. I 1985 S. 2154; BGBl. I 2004 S. 206) - - Parameters - ---------- - anspruchshöhe_m - See :func:`anspruchshöhe_m`. - grundsätzlich_anspruchsberechtigt - See :func:`grundsätzlich_anspruchsberechtigt`. - - Returns - ------- - Parental leave benefits (Erziehungsgeld). - """ if grundsätzlich_anspruchsberechtigt: out: float = anspruchshöhe_m @@ -51,7 +73,7 @@ def betrag_m( leaf_name="anspruchshöhe_kind_m", rounding_spec=RoundingSpec(base=0.01, direction="nearest"), ) -def erziehungsgeld_kind_ohne_budgetsatz_m() -> float: +def erziehungsgeld_kind_ohne_budgetsatz_m() -> NotImplementedError: raise NotImplementedError( """ Erziehungsgeld is not implemented yet prior to 2004, see @@ -77,20 +99,6 @@ def anspruchshöhe_kind_mit_budgetsatz_m( threshold and the eligibility for erziehungsgeld is needed. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 - - Parameters - ---------- - kind_grundsätzlich_anspruchsberechtigt - See :func:`kind_grundsätzlich_anspruchsberechtigt`. - abzug_durch_einkommen_m - See :func:`abzug_durch_einkommen_m`. - basisbetrag_m - See :func:`erziehungsgeld_ohne_abzug`. - - - Returns - ------- - Monthly claim of parental leave benefit (Erziehungsgeld) on child level """ if kind_grundsätzlich_anspruchsberechtigt: out = max( @@ -108,40 +116,21 @@ def basisbetrag_m( budgetsatz: bool, anzurechnendes_einkommen_y: float, einkommensgrenze_y: float, - alter_monate: float, - erziehungsgeld_params: dict, + alter_monate: int, + altersgrenze_für_reduziertes_einkommenslimit_kind_monate: int, + satz: dict[str, float], ) -> float: - """Parental leave benefit (Erziehungsgeld) without means-test on child level. - - Parameters - ---------- - budgetsatz - See :See basic input variable :ref:`budgetsatz - <budgetsatz>`. - anzurechnendes_einkommen_y - See :func:`anzurechnendes_einkommen_y`. - einkommensgrenze_y - See :func:`einkommensgrenze_y`. - alter_monate - See :func:`alter_monate`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - Parental leave benefit (Erziehungsgeld) without means-test - """ + """Parental leave benefit (Erziehungsgeld) without means-test on child level.""" # no benefit if income is above threshold and child is younger than threshold if ( anzurechnendes_einkommen_y > einkommensgrenze_y - and alter_monate - < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] + and alter_monate < altersgrenze_für_reduziertes_einkommenslimit_kind_monate ): out = 0.0 elif budgetsatz: - out = erziehungsgeld_params["erziehungsgeld_satz"]["budgetsatz"] + out = satz["budgetsatz"] else: - out = erziehungsgeld_params["erziehungsgeld_satz"]["regelsatz"] + out = satz["regelsatz"] return out @@ -150,34 +139,19 @@ def basisbetrag_m( def abzug_durch_einkommen_m( anzurechnendes_einkommen_m: float, einkommensgrenze_m: float, - alter_monate: float, - erziehungsgeld_params: dict, + alter_monate: int, + altersgrenze_für_reduziertes_einkommenslimit_kind_monate: float, + abschlagsfaktor: float, ) -> float: """Reduction of parental leave benefits (means-test). Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) - - Parameters - ---------- - anzurechnendes_einkommen_m - See :func:`anzurechnendes_einkommen_y`. - einkommensgrenze_m - See :func:`einkommensgrenze_y`. - alter_monate - See :func:`alter_monate`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - Income reduction for parental leave benefit (Erziehungsgeld) """ if ( anzurechnendes_einkommen_m > einkommensgrenze_m - and alter_monate - >= erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] + and alter_monate >= altersgrenze_für_reduziertes_einkommenslimit_kind_monate ): - out = anzurechnendes_einkommen_m * erziehungsgeld_params["abschlag_faktor"] + out = anzurechnendes_einkommen_m * abschlagsfaktor else: out = 0.0 return out @@ -190,42 +164,20 @@ def abzug_durch_einkommen_m( ) def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( familie__kind: bool, - alter_monate: float, + alter_monate: int, budgetsatz: bool, - erziehungsgeld_params: dict, + maximales_kindsalter_budgetsatz: float, + maximales_kindsalter_regelsatz: float, ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on child level. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) - - Parameters - ---------- - familie__kind - See :See basic input variable :ref:`familie__kind <familie__kind>`. - alter_monate - See :func:`alter_monate`. - budgetsatz - See :See basic input variable :ref:`budgetsatz - <budgetsatz>`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - eligibility of (Erziehungsgeld) as a bool - """ if budgetsatz: - out = ( - familie__kind - and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] - ) + out = familie__kind and alter_monate <= maximales_kindsalter_budgetsatz else: - out = ( - familie__kind - and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] - ) + out = familie__kind and alter_monate <= maximales_kindsalter_regelsatz return out @@ -238,45 +190,22 @@ def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( familie__kind: bool, geburtsjahr: int, - alter_monate: float, + alter_monate: int, budgetsatz: bool, - erziehungsgeld_params: dict, + abolishment_cohort: int, + maximales_kindsalter_budgetsatz: float, + maximales_kindsalter_regelsatz: float, ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on child level. Abolished for children born after the cut-off date. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) - - Parameters - ---------- - familie__kind - See :See basic input variable :ref:`familie__kind <familie__kind>`. - geburtsjahr - See :func:`geburtsjahr`. - alter_monate - See :func:`alter_monate`. - budgetsatz - See :See basic input variable :ref:`budgetsatz - <budgetsatz>`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - eligibility of (Erziehungsgeld) as a bool - """ - if budgetsatz and geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: - out = ( - familie__kind - and alter_monate <= erziehungsgeld_params["end_age_m_budgetsatz"] - ) + if budgetsatz and geburtsjahr <= abolishment_cohort: + out = familie__kind and alter_monate <= maximales_kindsalter_budgetsatz - elif geburtsjahr <= erziehungsgeld_params["abolishment_cohort"]: - out = ( - familie__kind - and alter_monate <= erziehungsgeld_params["end_age_m_regelsatz"] - ) + elif geburtsjahr <= abolishment_cohort: + out = familie__kind and alter_monate <= maximales_kindsalter_regelsatz else: out = False @@ -288,40 +217,24 @@ def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( def grundsätzlich_anspruchsberechtigt( arbeitsstunden_w: float, kind_grundsätzlich_anspruchsberechtigt_fg: bool, - erziehungsgeld_params: dict, + maximale_wochenarbeitszeit: float, ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on parental level. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.207) - - Parameters - ---------- - arbeitsstunden_w - See :See basic input variable :ref:`arbeitsstunden_w <arbeitsstunden_w>`. - kind_grundsätzlich_anspruchsberechtigt_fg - See :func:`kind_grundsätzlich_anspruchsberechtigt_fg`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - eligibility of parental leave benefit (Erziehungsgeld) as a bool - """ - out = kind_grundsätzlich_anspruchsberechtigt_fg and ( - arbeitsstunden_w <= erziehungsgeld_params["arbeitsstunden_w_grenze"] + return kind_grundsätzlich_anspruchsberechtigt_fg and ( + arbeitsstunden_w <= maximale_wochenarbeitszeit ) - return out - @policy_function(start_date="2004-01-01", end_date="2008-12-31") def anzurechnendes_einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg: float, arbeitslosengeld_2__anzahl_erwachsene_fg: int, kind_grundsätzlich_anspruchsberechtigt: bool, - erziehungsgeld_params: dict, - eink_st_abzuege_params: dict, + pauschaler_abzug_vom_einkommen: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, ) -> float: """Income relevant for means testing for parental leave benefit (Erziehungsgeld). @@ -329,31 +242,14 @@ def anzurechnendes_einkommen_y( There is special rule for "Beamte, Soldaten und Richter" which is not implemented yet. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg`. - arbeitslosengeld_2__anzahl_erwachsene_fg - See :func:`arbeitslosengeld_2__anzahl_erwachsene_fg`. - kind_grundsätzlich_anspruchsberechtigt - See :func:`kind_grundsätzlich_anspruchsberechtigt`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - Relevant income """ if kind_grundsätzlich_anspruchsberechtigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg - - eink_st_abzuege_params["werbungskostenpauschale"] + - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale * arbeitslosengeld_2__anzahl_erwachsene_fg - ) * erziehungsgeld_params["pauschal_abzug_auf_einkommen"] + ) * pauschaler_abzug_vom_einkommen else: out = 0.0 return out @@ -366,32 +262,16 @@ def einkommensgrenze_y( einkommensgrenze_ohne_geschwisterbonus: float, arbeitslosengeld_2__anzahl_kinder_fg: float, kind_grundsätzlich_anspruchsberechtigt: bool, - erziehungsgeld_params: dict, + aufschlag_einkommen: float, ) -> float: """Income threshold for parental leave benefit (Erziehungsgeld). Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) - - Parameters - ---------- - einkommensgrenze_ohne_geschwisterbonus - See :func:`einkommensgrenze_ohne_geschwisterbonus`. - arbeitslosengeld_2__anzahl_kinder_fg - See :func:`arbeitslosengeld_2__anzahl_kinder_fg`. - kind_grundsätzlich_anspruchsberechtigt - See :func:`kind_grundsätzlich_anspruchsberechtigt`. - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - - Returns - ------- - income threshold for parental leave benefit (Erziehungsgeld) on child level """ out = ( einkommensgrenze_ohne_geschwisterbonus - + (arbeitslosengeld_2__anzahl_kinder_fg - 1) - * erziehungsgeld_params["aufschlag_einkommen"] + + (arbeitslosengeld_2__anzahl_kinder_fg - 1) * aufschlag_einkommen ) if not kind_grundsätzlich_anspruchsberechtigt: out = 0.0 @@ -402,56 +282,64 @@ def einkommensgrenze_y( start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" ) def einkommensgrenze_ohne_geschwisterbonus( - familie__alleinerziehend_fg: bool, - alter_monate: float, - budgetsatz: bool, - erziehungsgeld_params: dict, + alter_monate: int, + einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze: float, + einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze: float, + altersgrenze_für_reduziertes_einkommenslimit_kind_monate: float, ) -> float: - """Income threshold for parental leave benefit (Erziehungsgeld) on child level - before adding the bonus for additional children + """Income threshold for parental leave benefit (Erziehungsgeld) before adding the + bonus for additional children. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) - - Parameters - ---------- - erziehungsgeld_params - See params documentation :ref:`erziehungsgeld_params <erziehungsgeld_params>`. - familie__alleinerziehend_fg - See :func:`familie__alleinerziehend_fg`. - alter_monate - See :func:`alter_monate`. - budgetsatz - See :See basic input variable :ref:`budgetsatz - <budgetsatz>`. - - Returns - ------- - Income threshold for parental leave benefit (Erziehungsgeld) before child bonus """ - # There are different income thresholds depending on the age of the child, - # the fact if a person is a single parent, and if regelsatz or budgetsatz is applied - - if ( - alter_monate - < erziehungsgeld_params["einkommensgrenze"]["start_age_m_reduced_income_limit"] - ): - limit = "limit" + if alter_monate < altersgrenze_für_reduziertes_einkommenslimit_kind_monate: + return einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze else: - limit = "reduced_limit" + return einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze - if familie__alleinerziehend_fg: - status_eltern = "alleinerziehend" - else: - status_eltern = "paar" - if budgetsatz: - satz = "budgetsatz" +@policy_function( + start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" +) +def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( + familie__alleinerziehend_fg: bool, + budgetsatz: bool, + einkommensgrenze: EinkommensgrenzeErziehungsgeld, +) -> float: + """Base income threshold for parents of children younger than the age threshold. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + """ + if budgetsatz and familie__alleinerziehend_fg: + return einkommensgrenze.regulär_alleinerziehend["budgetsatz"] + elif budgetsatz and not familie__alleinerziehend_fg: + return einkommensgrenze.regulär_paar["budgetsatz"] + elif not budgetsatz and familie__alleinerziehend_fg: + return einkommensgrenze.regulär_alleinerziehend["regelsatz"] else: - satz = "regelsatz" + return einkommensgrenze.regulär_paar["regelsatz"] - out = erziehungsgeld_params["einkommensgrenze"][limit][status_eltern][satz] - return out +@policy_function( + start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" +) +def einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze( + familie__alleinerziehend_fg: bool, + budgetsatz: bool, + einkommensgrenze: EinkommensgrenzeErziehungsgeld, +) -> float: + """Base income threshold for parents of children older than age threshold. + + Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + """ + if budgetsatz and familie__alleinerziehend_fg: + return einkommensgrenze.reduziert_alleinerziehend["budgetsatz"] + elif budgetsatz and not familie__alleinerziehend_fg: + return einkommensgrenze.reduziert_paar["budgetsatz"] + elif not budgetsatz and familie__alleinerziehend_fg: + return einkommensgrenze.reduziert_alleinerziehend["regelsatz"] + else: + return einkommensgrenze.reduziert_paar["regelsatz"] @agg_by_p_id_function(agg_type=AggType.SUM) diff --git a/src/_gettsim/erziehungsgeld/formel.yaml b/src/_gettsim/erziehungsgeld/formel.yaml new file mode 100644 index 0000000000..a18d705b8d --- /dev/null +++ b/src/_gettsim/erziehungsgeld/formel.yaml @@ -0,0 +1,117 @@ +--- +satz: + name: + de: Erziehungsgeldsatz + en: null + description: + de: Höhe des Erziehungsgeldes abhängig vom beantragtem Satz + en: Amount of the parental leave benefit depending on the rate applied for + unit: Euros + reference_period: Month + type: dict + 2004-02-09: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 208 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + regelsatz: 300 + budgetsatz: 450 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +parameter_einkommensgrenze: + name: + de: Einkommensgrenze + en: Income threshold + description: + de: >- + Einkommensgrenze für den Erhalt von Erziehungsgeld bei jungen Kindern. Bei Kindern + unter einer Altersgrenze, wird Erziehungsgeld nicht gezahlt, wenn das Einkommen + der Eltern die Einkommensgrenze überschreitet. + en: >- + Income threshold for the receipt of parental leave benefit for young children. + For children under a certain age, parental leave benefit is not paid if the + income of the parents exceeds the income threshold. + unit: Euros + reference_period: Year + type: require_converter + 2004-02-09: + reference: 09.02.2004 BGBl. I S. 209 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + Reduced income limit for children older than 6 months. + regulär_alleinerziehend: + regelsatz: 23000 + budgetsatz: 19086 + regulär_paar: + regelsatz: 30000 + budgetsatz: 22086 + reduziert_alleinerziehend: + regelsatz: 13500 + budgetsatz: 13500 + reduziert_paar: + regelsatz: 16500 + budgetsatz: 16500 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +aufschlag_einkommen: + name: + de: Erhöhung der Einkommensgrenze + en: Increase in the income threshold + description: + de: Erhöhung der Einkommensgrenze pro weiterem Kind + en: Increase in the income threshold per additional child + unit: Euros + reference_period: Year + type: scalar + 2004-02-09: + reference: 09.02.2004 BGBl. I S. 209 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + value: 3140 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +abschlagsfaktor: + name: + de: Abschlagsfaktor + en: Deduction factor + description: + de: >- + Faktor zur Berechnung des Abschlags des Erziehungsgeldes bei einer + Überschreitung der Einkommensgrenze ab dem 7 Lebensmonat. + Der Faktor wird mit dem relevanten Einkommen multipliziert und + das Produkt entsprechend vom Erziehungsgeld Anspruch abgezogen + en: >- + Factor for calculating the reduction of the parental leave benefit in case of + exceeding the income threshold after the 7th month of life. + The factor is multiplied by the relevant income and + the product is deducted from the parental leave benefit entitlement accordingly. + unit: null + reference_period: null + type: scalar + 2004-02-09: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 207 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + value: 0.052 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. +pauschaler_abzug_vom_einkommen: + name: + de: Pauschaler Abzug vom Einkommen + en: null + description: + de: >- + Faktor um den das Einkommen pauschal reduziert wird um das das + relevanten Einkommen zu berechnen + en: >- + Factor by which the income is reduced in a lump sum in order to calculate the + relevant income + unit: null + reference_period: null + type: scalar + 2004-02-09: + reference: § 5 G. v. 09.02.2004 BGBl. I S. 209 + note: >- + https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 + value: 0.76 + 2008-12-31: + note: Erziehungsgeld revoked and replaced by Elterngeld. diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py index a54e8550a2..43fc2c879f 100644 --- a/src/_gettsim/erziehungsgeld/inputs.py +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import FKType, policy_input diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index ca53110892..408ee1c81b 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -4,6 +4,8 @@ """ +from __future__ import annotations + from ttsim import AggType, agg_by_group_function, policy_function @@ -14,113 +16,35 @@ def anzahl_personen_ehe(ehe_id: int) -> int: @policy_function() def kind_bis_2(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 3. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = kind and (alter <= 2) - return out + """Calculate if child under the age of 3.""" + return kind and (alter <= 2) @policy_function() def kind_bis_5(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 6. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = kind and (alter <= 5) - return out + """Calculate if child under the age of 6.""" + return kind and (alter <= 5) @policy_function() def kind_bis_6(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 7. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = kind and (alter <= 6) - return out + """Calculate if child under the age of 7.""" + return kind and (alter <= 6) @policy_function() def kind_bis_15(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 16. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = kind and (alter <= 15) - return out + """Calculate if child under the age of 16.""" + return kind and (alter <= 15) @policy_function() def kind_bis_17(alter: int, kind: bool) -> bool: - """Calculate if underage person. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = kind and (alter <= 17) - return out + """Calculate if underage person.""" + return kind and (alter <= 17) @policy_function() def erwachsen(kind: bool) -> bool: - """Calculate if adult. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kind - See basic input variable :ref:`kind <kind>`. - - Returns - ------- - - """ - out = not kind - return out + """Calculate if adult.""" + return not kind diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index 5206eeb8af..8b8261e417 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import FKType, policy_input diff --git a/src/_gettsim/grundsicherung/__init__.py b/src/_gettsim/grundsicherung/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/grundsicherung/__init__.py +++ b/src/_gettsim/grundsicherung/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/grundsicherung/im_alter/__init__.py b/src/_gettsim/grundsicherung/im_alter/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/grundsicherung/im_alter/__init__.py +++ b/src/_gettsim/grundsicherung/im_alter/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index 4051da17bb..a5470a462a 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -1,7 +1,15 @@ -"""Income considered in the calculation of Grundsicherung im Alter.""" +"""Relevant income for Grundsicherung im Alter.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING from ttsim import piecewise_polynomial, policy_function +if TYPE_CHECKING: + from _gettsim.arbeitslosengeld_2.regelbedarf import RegelsatzNachRegelbedarfsstufen + from ttsim import PiecewisePolynomialParam + @policy_function() def einkommen_m( @@ -19,35 +27,6 @@ def einkommen_m( ) -> float: """Calculate individual income considered in the calculation of Grundsicherung im Alter. - - Parameters - ---------- - erwerbseinkommen_m - See :func:`erwerbseinkommen_m`. - private_rente_betrag_m - See :func:`private_rente_betrag_m`. - gesetzliche_rente_m - See :func:`gesetzliche_rente_m`. - einkommensteuer__einkünfte__sonstige__ohne_renten_m - See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. - kapitaleinkommen_brutto_m - See :func:`kapitaleinkommen_brutto_m`. - einkommensteuer__betrag_m_sn - See :func:`einkommensteuer__betrag_m_sn`. - solidaritätszuschlag__betrag_m_sn - See :func:`solidaritätszuschlag__betrag_m_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - sozialversicherung__beiträge_versicherter_m - See :func:`sozialversicherung__beiträge_versicherter_m`. - elterngeld__anrechenbarer_betrag_m - See :func:`elterngeld__anrechenbarer_betrag_m`. - - Returns - ------- - """ # Income @@ -71,129 +50,88 @@ def einkommen_m( return max(out, 0.0) -@policy_function() +@policy_function(start_date="2011-01-01") def erwerbseinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, + anrechnungsfreier_anteil_erwerbseinkünfte: float, + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, ) -> float: """Calculate individual earnings considered in the calculation of Grundsicherung im Alter. Legal reference: § 82 SGB XII Abs. 3 - Note: Freibeträge for income are currently not considered - Note: the cap at 1/2 of Regelbedarf was only introduced in 2006 (which is currently - not implemented): https://www.buzer.de/gesetz/3415/al3764-0.htm - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m <einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m>`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params <grunds_im_alter_params>`. - - Returns - ------- + Notes: + - Freibeträge for income are currently not considered + - Start date is 2011 because of the reference to regelsatz_nach_regelbedarfsstufen, + which was introduced in 2011. + - The cap at 1/2 of Regelbedarf was only introduced in 2006 (which is currently + not implemented): https://www.buzer.de/gesetz/3415/al3764-0.htm """ earnings = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m ) - # Can deduct 30% of earnings (but no more than 1/2 of regelbedarf) - earnings_after_max_deduction = earnings - arbeitsl_geld_2_params["regelsatz"][1] / 2 - earnings = (1 - grunds_im_alter_params["erwerbseink_anr_frei"]) * earnings - - out = max(earnings, earnings_after_max_deduction) + earnings_after_max_deduction = ( + earnings + - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 + ) + earnings = (1 - anrechnungsfreier_anteil_erwerbseinkünfte) * earnings - return out + return max(earnings, earnings_after_max_deduction) -@policy_function() -def kapitaleinkommen_brutto_m( - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, - grunds_im_alter_params: dict, +@policy_function(end_date="2015-12-31", leaf_name="kapitaleinkommen_brutto_m") +def kapitaleinkommen_brutto_m_ohne_freibetrag( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, ) -> float: - """Calculate individual capital income considered in the calculation of - Grundsicherung im Alter. - - Legal reference: § 82 SGB XII Abs. 2 + """Capital income.""" + return max(0.0, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m) - Parameters - ---------- - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params - <grunds_im_alter_params>`. - - Returns - ------- +@policy_function(start_date="2016-01-01", leaf_name="kapitaleinkommen_brutto_m") +def kapitaleinkommen_brutto_m_mit_freibetrag( + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: float, + freibetrag_kapitaleinkünfte: float, +) -> float: + """Capital income minus the capital income exemption. + Legal reference: § 43 SGB XII Abs. 2 """ - # Can deduct allowance from yearly capital income capital_income_y = ( einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y - - grunds_im_alter_params["kapitaleink_anr_frei"] + - freibetrag_kapitaleinkünfte ) - # Calculate and return monthly capital income (after deduction) - out = max(0.0, capital_income_y / 12) - - return out + return max(0.0, capital_income_y / 12) -@policy_function() +@policy_function(start_date="2011-01-01") def private_rente_betrag_m( sozialversicherung__rente__private_rente_betrag_m: float, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, + anrechnungsfreier_anteil_private_renteneinkünfte: PiecewisePolynomialParam, + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, ) -> float: """Calculate individual private pension benefits considered in the calculation of Grundsicherung im Alter. Legal reference: § 82 SGB XII Abs. 4 - - Parameters - ---------- - sozialversicherung__rente__private_rente_betrag_m - See basic input variable :ref:`sozialversicherung__rente__private_rente_betrag_m <sozialversicherung__rente__private_rente_betrag_m>`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - <arbeitsl_geld_2_params>`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params <grunds_im_alter_params>`. - - Returns - ------- - """ sozialversicherung__rente__private_rente_betrag_m_amount_exempt = ( piecewise_polynomial( x=sozialversicherung__rente__private_rente_betrag_m, - thresholds=grunds_im_alter_params["priv_rente_anr_frei"]["thresholds"], - rates=grunds_im_alter_params["priv_rente_anr_frei"]["rates"], - intercepts_at_lower_thresholds=grunds_im_alter_params[ - "priv_rente_anr_frei" - ]["intercepts_at_lower_thresholds"], + parameters=anrechnungsfreier_anteil_private_renteneinkünfte, ) ) - upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 + upper = arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 - out = sozialversicherung__rente__private_rente_betrag_m - min( + return sozialversicherung__rente__private_rente_betrag_m - min( sozialversicherung__rente__private_rente_betrag_m_amount_exempt, upper ) - return out - @policy_function(end_date="2020-12-31", leaf_name="gesetzliche_rente_m") def gesetzliche_rente_m_bis_2020( @@ -203,15 +141,6 @@ def gesetzliche_rente_m_bis_2020( calculation of Grundsicherung im Alter until 2020. Until 2020: No deduction is possible. - - Parameters - ---------- - sozialversicherung__rente__altersrente__betrag_m - See basic input variable :ref:`sozialversicherung__rente__altersrente__betrag_m <sozialversicherung__rente__altersrente__betrag_m>`. - - Returns - ------- - """ return sozialversicherung__rente__altersrente__betrag_m @@ -220,42 +149,22 @@ def gesetzliche_rente_m_bis_2020( def gesetzliche_rente_m_ab_2021( sozialversicherung__rente__altersrente__betrag_m: float, sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: bool, - arbeitsl_geld_2_params: dict, - grunds_im_alter_params: dict, + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + anrechnungsfreier_anteil_gesetzliche_rente: PiecewisePolynomialParam, ) -> float: """Calculate individual public pension benefits which are considered in the calculation of Grundsicherung im Alter since 2021. Starting from 2021: If eligible for Grundrente, can deduct 100€ completely and 30% of private pension above 100 (but no more than 1/2 of regelbedarf) - - Parameters - ---------- - sozialversicherung__rente__altersrente__betrag_m - See basic input variable :ref:`sozialversicherung__rente__altersrente__betrag_m <sozialversicherung__rente__altersrente__betrag_m>`. - sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params - <arbeitsl_geld_2_params>`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params <grunds_im_alter_params>`. - - Returns - ------- - """ angerechnete_rente = piecewise_polynomial( x=sozialversicherung__rente__altersrente__betrag_m, - thresholds=grunds_im_alter_params["ges_rente_anr_frei"]["thresholds"], - rates=grunds_im_alter_params["ges_rente_anr_frei"]["rates"], - intercepts_at_lower_thresholds=grunds_im_alter_params["ges_rente_anr_frei"][ - "intercepts_at_lower_thresholds" - ], + parameters=anrechnungsfreier_anteil_gesetzliche_rente, ) - upper = arbeitsl_geld_2_params["regelsatz"][1] / 2 + upper = arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 if sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: angerechnete_rente = min(angerechnete_rente, upper) else: diff --git a/src/_gettsim/parameters/grunds_im_alter.yaml "b/src/_gettsim/grundsicherung/im_alter/freibetr\303\244ge_und_mehrbedarfe.yaml" similarity index 62% rename from src/_gettsim/parameters/grunds_im_alter.yaml rename to "src/_gettsim/grundsicherung/im_alter/freibetr\303\244ge_und_mehrbedarfe.yaml" index 998d92e493..d93e603443 100644 --- a/src/_gettsim/parameters/grunds_im_alter.yaml +++ "b/src/_gettsim/grundsicherung/im_alter/freibetr\303\244ge_und_mehrbedarfe.yaml" @@ -1,5 +1,5 @@ --- -vermögensfreibetrag: +parameter_vermögensfreibetrag: name: de: Schonvermögen für Grundsicherung im Alter en: Allowed amount of wealth for Grundsicherung im Alter @@ -7,23 +7,23 @@ vermögensfreibetrag: de: >- Ab dieser Vermögensschwelle besteht kein Anspruch auf Grundsicherung im Alter / bei Erwerbsminderung. + § 1 Verordnung zur Durchführung des § 90 Abs. 2 Nr. 9 des Zwölften Buches + Sozialgesetzbuch en: >- There is no entitlement to Grundsicherung im Alter / bei Erwerbsminderung if assets exceed this threshold. - unit: Euro - reference: >- - § 1 Verordnung zur Durchführung des § 90 Abs. 2 Nr. 9 des Zwölften Buches - Sozialgesetzbuch - 1984-01-01: - adult: 0 - child: 0 + § 1 Verordnung zur Durchführung des § 90 Abs. 2 Nr. 9 des Zwölften Buches + Sozialgesetzbuch + unit: Euros + reference_period: null + type: dict 2003-01-01: - adult: 2600 - child: 0 + erwachsene: 2600 + kinder: 0 2017-04-01: - adult: 5000 - child: 500 -ges_rente_anr_frei: + erwachsene: 5000 + kinder: 500 +anrechnungsfreier_anteil_gesetzliche_rente: name: de: Anrechnungsfreier Anteil der staatlichen Rente (bei mind. 33 Grundrentenzeiten) en: >- @@ -31,119 +31,110 @@ ges_rente_anr_frei: Grundrentenzeiten) description: de: >- + § 82a Abs. 1 und 2 SGB XII Anrechnungsfreie Anteile staatliche Rente wenn mindestens 33 Jahre Grundrentenzeiten erreicht wurden. en: >- + § 82a Abs. 1 und 2 SGB XII Public pension shares not subject to transfer withdrawal for subjects whose Grundrentenzeiten exceeds 33 years. unit: Share + reference_period: null type: piecewise_linear - 1984-01-01: - reference: No income could be deducted - 0: - lower_threshold: -inf - upper_threshold: inf - rate: 0 - intercept_at_lower_threshold: 0 2021-01-01: - reference: § 82a Abs. 1 und 2 SGB XII 0: lower_threshold: -inf upper_threshold: 0 - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 1: lower_threshold: 0 upper_threshold: 100 - rate: 1 + rate_linear: 1 2: upper_threshold: inf - rate: 0.3 -kapitaleink_anr_frei: + rate_linear: 0.3 +freibetrag_kapitaleinkünfte: name: de: Freibetrag des Kapitaleinkommens für Grundsicherung en: Amount of capital income not subject to transfer withdrawal description: de: >- + § 43 SGB XII Abs. 2 Nur das Kapitaleinkommens, das über diesem Freibetrag liegt, wird auf die - Grundsicherung im Alter angerechnet. The reference is § 82 SGB XII Abs. 2. + Grundsicherung im Alter angerechnet. en: >- + § 43 SGB XII Abs. 2 Only the capital income above the threshold is considered for the calculation of the Grundsicherung im Alter. - unit: Euro + unit: Euros reference_period: Year - 1984-01-01: - scalar: 0 - note: null + type: scalar 2016-01-01: - reference: § 43 SGB XII Abs. 2 - scalar: 26 -erwerbseink_anr_frei: + value: 26 +anrechnungsfreier_anteil_erwerbseinkünfte: name: de: Anrechnungsfreier Anteil des Erwerbseinkommens für Grundsicherung en: Income shares not subject to transfer withdrawal description: de: >- + § 82 SGB XII Abs. 3 Anteil des Erwerbseinkommens, welcher bei der Berechnung der Grundsicherung nicht zum Einkommen addiert wird. en: >- + § 82 SGB XII Abs. 3 Share of income, which is not added to the total income when calculating the Grundsicherung. unit: Share - reference: § 82 SGB XII Abs. 3 - 1984-01-01: - scalar: 0 - note: Unclear how it was handled before 2005 + reference_period: null + type: scalar 2005-01-01: - scalar: 0.3 -priv_rente_anr_frei: + value: 0.3 +anrechnungsfreier_anteil_private_renteneinkünfte: name: de: Anrechnungsfreie Anteile der privaten Rente für Grundsicherung en: Private pension shares not subject to transfer withdrawal description: de: >- + § 82 SGB XII Abs. 4 Anteil der privaten Rente, welcher bei der Berechnung der Grundsicherung nicht zum Einkommen addiert wird. en: >- + § 82 SGB XII Abs. 4 Share of privat pension, which is not added to total income when calculating the Grundsicherung. unit: Share + reference_period: null type: piecewise_linear - reference: § 82 SGB XII Abs. 4 - 1984-01-01: - reference: Unclear how it was handled before 2005 - 0: - lower_threshold: -inf - upper_threshold: inf - rate: 0 - intercept_at_lower_threshold: 0 2005-01-01: 0: lower_threshold: -inf upper_threshold: 0 - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 1: lower_threshold: 0 upper_threshold: 100 - rate: 1 + rate_linear: 1 2: upper_threshold: inf - rate: 0.3 + rate_linear: 0.3 mehrbedarf_bei_schwerbehinderungsgrad_g: name: de: Mehrbedarf bei Schwerbehinderung en: Additional requirement when severely disabled description: de: >- - Dieser Prozentanteil des Regelbedarfs wird Menschen mit Schwerbehindertenausweis - mit Merkzeichen G, die Grundsicherung im Alter oder bei Erwerbsminderung bekommen, - als Mehrbedarf anerkannt. + § 30 Abs. 1 SGB XII, https://www.buzer.de/gesetz/3415/al0-3758.htm + Dieser Anteil des Regelbedarfs wird Menschen mit Schwerbehindertenausweis mit + Merkzeichen G, die Grundsicherung im Alter oder bei Erwerbsminderung bekommen, als + Mehrbedarf anerkannt. en: >- - This percentage of the normal requirement is added as an additional requirement - for someone who has a severly disabled ID card which shows the code 'G' and is - entitled to the Grundsicherung. - unit: Percent - reference: § 30 Abs. 1 SGB XII, https://www.buzer.de/gesetz/3415/al0-3758.htm + § 30 Abs. 1 SGB XII, https://www.buzer.de/gesetz/3415/al0-3758.htm + This share of the Regelbedarf is added as for someone who has a severly disabled + ID card which shows the code 'G' and is entitled to the Grundsicherung. + unit: Share + reference_period: null + type: scalar 2006-12-07: - scalar: 0.17 + value: 0.17 diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index a782395a0c..ec9a118bfa 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -1,4 +1,11 @@ -"""Subsistence transfer for the elderly (Grundsicherung im Alter).""" +"""Grundsicherung im Alter.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from _gettsim.arbeitslosengeld_2.regelbedarf import RegelsatzNachRegelbedarfsstufen from ttsim import policy_function @@ -22,34 +29,6 @@ def betrag_m_eg( # ToDo: There is no check for Wohngeld included as Wohngeld is # ToDo: currently not implemented for retirees. - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_bg - See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. - mehrbedarf_schwerbehinderung_g_m_eg - See :func:`mehrbedarf_schwerbehinderung_g_m_eg`. - kindergeld__betrag_m_eg - See :func:`kindergeld__betrag_m_eg`. - unterhalt__tatsächlich_erhaltener_betrag_m_eg - See basic input variable - :ref:`unterhalt__tatsächlich_erhaltener_betrag_m_eg <unterhalt__tatsächlich_erhaltener_betrag_m_eg>`. - unterhaltsvorschuss__betrag_m_eg - See :func:`unterhaltsvorschuss__betrag_m_eg`. - einkommen_m_eg - See :func:`einkommen_m_eg`. - erwachsene_alle_rentenbezieher_hh - See :func:`erwachsene_alle_rentenbezieher_hh`. - vermögen_eg - See basic input variable :ref:`vermögen_eg`. - vermögensfreibetrag_eg - See :func:`vermögensfreibetrag_eg`. - arbeitslosengeld_2__anzahl_kinder_eg - See :func:`arbeitslosengeld_2__anzahl_kinder_eg`. - arbeitslosengeld_2__anzahl_personen_eg - See :func:`arbeitslosengeld_2__anzahl_personen_eg`. - Returns - ------- - """ # TODO(@ChristianZimpelmann): Treatment of Bedarfsgemeinschaften with both retirees @@ -91,38 +70,21 @@ def betrag_m_eg( return max(out, 0.0) -@policy_function() +@policy_function(start_date="2011-01-01") def mehrbedarf_schwerbehinderung_g_m( schwerbehindert_grad_g: bool, arbeitslosengeld_2__anzahl_erwachsene_eg: int, - grunds_im_alter_params: dict, - arbeitsl_geld_2_params: dict, + mehrbedarf_bei_schwerbehinderungsgrad_g: float, + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, ) -> float: - """Calculate additional allowance for individuals with disabled person's pass G. - - Parameters - ---------- - schwerbehindert_grad_g - See basic input variable :ref:`behinderungsgrad <schwerbehindert_grad_g>`. - arbeitslosengeld_2__anzahl_erwachsene_eg - See :func:`arbeitslosengeld_2__anzahl_erwachsene_eg`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - Returns - ------- + """Calculate additional allowance for individuals with disabled person's pass G.""" - """ - # mehrbedarf for disabilities = % of regelsatz of the person getting the mehrbedarf mehrbedarf_single = ( - (arbeitsl_geld_2_params["regelsatz"][1]) - * (grunds_im_alter_params["mehrbedarf_bei_schwerbehinderungsgrad_g"]) - ) + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz + ) * mehrbedarf_bei_schwerbehinderungsgrad_g mehrbedarf_in_couple = ( - (arbeitsl_geld_2_params["regelsatz"][2]) - * (grunds_im_alter_params["mehrbedarf_bei_schwerbehinderungsgrad_g"]) - ) + arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_2.regelsatz + ) * mehrbedarf_bei_schwerbehinderungsgrad_g if (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg == 1): out = mehrbedarf_single @@ -134,31 +96,15 @@ def mehrbedarf_schwerbehinderung_g_m( return out -@policy_function() +@policy_function(start_date="2005-01-01") def vermögensfreibetrag_eg( arbeitslosengeld_2__anzahl_erwachsene_fg: int, arbeitslosengeld_2__anzahl_kinder_fg: int, - grunds_im_alter_params: dict, + parameter_vermögensfreibetrag: dict[str, float], ) -> float: - """Calculate wealth not considered for Grundsicherung im Alter on household level. - - Parameters - ---------- - arbeitslosengeld_2__anzahl_erwachsene_fg - See :func:`arbeitslosengeld_2__anzahl_erwachsene_fg`. - arbeitslosengeld_2__anzahl_kinder_fg - See :func:`arbeitslosengeld_2__anzahl_kinder_fg`. - grunds_im_alter_params - See params documentation :ref:`grunds_im_alter_params <grunds_im_alter_params>`. - - Returns - ------- - - """ - out = ( - grunds_im_alter_params["vermögensfreibetrag"]["adult"] + """Calculate wealth not considered for Grundsicherung im Alter on household level.""" + return ( + parameter_vermögensfreibetrag["erwachsene"] * arbeitslosengeld_2__anzahl_erwachsene_fg - + grunds_im_alter_params["vermögensfreibetrag"]["child"] - * arbeitslosengeld_2__anzahl_kinder_fg + + parameter_vermögensfreibetrag["kinder"] * arbeitslosengeld_2__anzahl_kinder_fg ) - return out diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index f3a426b7cc..95cd72d573 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import AggType, agg_by_group_function, policy_function @@ -22,17 +24,5 @@ def anzahl_personen_hh(hh_id: int) -> int: def erwachsene_alle_rentenbezieher_hh( anzahl_erwachsene_hh: int, anzahl_rentenbezieher_hh: int ) -> bool: - """Calculate if all adults in the household are pensioners. - - Parameters - ---------- - anzahl_erwachsene_hh - See :func:`anzahl_erwachsene_hh`. - anzahl_rentenbezieher_hh - See :func:`anzahl_rentenbezieher_hh`. - - Returns - ------- - - """ + """Calculate if all adults in the household are pensioners.""" return anzahl_erwachsene_hh == anzahl_rentenbezieher_hh diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index 6646a14d40..d5bd0e6de6 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -1,6 +1,6 @@ """Input columns.""" -from collections import Counter +from __future__ import annotations from ttsim import group_creation_function, policy_input from ttsim.config import numpy_or_jax as np @@ -22,27 +22,20 @@ def ehe_id( familie__p_id_ehepartner: np.ndarray, ) -> np.ndarray: """Couples that are either married or in a civil union.""" - p_id_to_ehe_id: dict[int, int] = {} - next_ehe_id = 0 - result: list[int] = [] + n = np.max(p_id) + 1 + p_id_ehepartner_or_own_p_id = np.where( + familie__p_id_ehepartner < 0, p_id, familie__p_id_ehepartner + ) + result = ( + np.maximum(p_id, p_id_ehepartner_or_own_p_id) + + np.minimum(p_id, p_id_ehepartner_or_own_p_id) * n + ) - for index, current_p_id in enumerate(map(int, p_id)): - current_p_id_ehepartner = int(familie__p_id_ehepartner[index]) - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_ehe_id: - result.append(p_id_to_ehe_id[current_p_id_ehepartner]) - continue - - # New married couple - result.append(next_ehe_id) - p_id_to_ehe_id[current_p_id] = next_ehe_id - next_ehe_id += 1 - - return np.array(result) + return _reorder_ids(result) @group_creation_function() -def fg_id( # noqa: PLR0912 +def fg_id( arbeitslosengeld_2__p_id_einstandspartner: np.ndarray, p_id: np.ndarray, hh_id: np.ndarray, @@ -55,103 +48,77 @@ def fg_id( # noqa: PLR0912 Maximum of two generations, the relevant base unit for Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough income fend for themselves. """ - # Build indexes - p_id_to_index: dict[int, int] = {} - p_id_to_p_ids_children: dict[int, list[int]] = {} - - for index, current_p_id in enumerate(map(int, p_id)): - # Fast access from p_id to index - p_id_to_index[current_p_id] = index - - # Fast access from p_id to p_ids of children - current_familie__p_id_elternteil_1 = int(familie__p_id_elternteil_1[index]) - current_familie__p_id_elternteil_2 = int(familie__p_id_elternteil_2[index]) - - if current_familie__p_id_elternteil_1 >= 0: - if current_familie__p_id_elternteil_1 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_familie__p_id_elternteil_1] = [] - p_id_to_p_ids_children[current_familie__p_id_elternteil_1].append( - current_p_id - ) - - if current_familie__p_id_elternteil_2 >= 0: - if current_familie__p_id_elternteil_2 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_familie__p_id_elternteil_2] = [] - p_id_to_p_ids_children[current_familie__p_id_elternteil_2].append( - current_p_id - ) - - p_id_to_fg_id = {} - next_fg_id = 0 - - for index, current_p_id in enumerate(map(int, p_id)): - # Already assigned a fg_id to this p_id via einstandspartner / - # parent - if current_p_id in p_id_to_fg_id: - continue - - p_id_to_fg_id[current_p_id] = next_fg_id - - current_hh_id = int(hh_id[index]) - current_p_id_einstandspartner = int( - arbeitslosengeld_2__p_id_einstandspartner[index] + n = np.max(p_id) + 1 + + # Get the array index for all p_ids of parents + p_id_elternteil_1_loc = familie__p_id_elternteil_1 + p_id_elternteil_2_loc = familie__p_id_elternteil_2 + for i in range(p_id.shape[0]): + p_id_elternteil_1_loc = np.where( + familie__p_id_elternteil_1 == p_id[i], i, p_id_elternteil_1_loc ) - current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) - - # Assign fg to children - for current_p_id_child in current_p_id_children: - child_index = p_id_to_index[current_p_id_child] - child_hh_id = int(hh_id[child_index]) - child_alter = int(alter[child_index]) - child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) - - if ( - child_hh_id == current_hh_id - # TODO (@MImmesberger): Check correct conditions for grown up children - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/509 - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - and child_alter < 25 - and len(child_p_id_children) == 0 - ): - p_id_to_fg_id[current_p_id_child] = next_fg_id - - # Assign fg to einstandspartner - if current_p_id_einstandspartner >= 0: - p_id_to_fg_id[current_p_id_einstandspartner] = next_fg_id - current_p_id_einstandspartner_children = p_id_to_p_ids_children.get( - current_p_id_einstandspartner, [] - ) - # Assign fg to children of einstandspartner - for current_p_id_child in current_p_id_einstandspartner_children: - if current_p_id_child in p_id_to_fg_id: - continue - child_index = p_id_to_index[current_p_id_child] - child_hh_id = int(hh_id[child_index]) - child_alter = int(alter[child_index]) - child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) - - if ( - child_hh_id == current_hh_id - # TODO (@MImmesberger): Check correct conditions for grown up children - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/509 - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - and child_alter < 25 - and len(child_p_id_children) == 0 - ): - p_id_to_fg_id[current_p_id_child] = next_fg_id - - next_fg_id += 1 - - # Compute result vector - result = [p_id_to_fg_id[current_p_id] for current_p_id in map(int, p_id)] - return np.array(result) + p_id_elternteil_2_loc = np.where( + familie__p_id_elternteil_2 == p_id[i], i, p_id_elternteil_2_loc + ) + + children = np.isin(p_id, familie__p_id_elternteil_1) | np.isin( + p_id, familie__p_id_elternteil_2 + ) + + # Assign the same fg_id to everybody who has an Einstandspartner, + # otherwise create a new one from p_id + fg_id = np.where( + arbeitslosengeld_2__p_id_einstandspartner < 0, + p_id + p_id * n, + np.maximum(p_id, arbeitslosengeld_2__p_id_einstandspartner) + + np.minimum(p_id, arbeitslosengeld_2__p_id_einstandspartner) * n, + ) + + fg_id = _assign_parents_fg_id( + fg_id, p_id, p_id_elternteil_1_loc, hh_id, alter, children, n + ) + fg_id = _assign_parents_fg_id( + fg_id, p_id, p_id_elternteil_2_loc, hh_id, alter, children, n + ) + + return _reorder_ids(fg_id) + + +def _assign_parents_fg_id( + fg_id: np.ndarray, + p_id: np.ndarray, + p_id_elternteil_loc: np.ndarray, + hh_id: np.ndarray, + alter: np.ndarray, + children: np.ndarray, + n: np.ndarray, +) -> np.ndarray: + """Get the fg_id of the childs parents. + + If the child is not married, has no children, is under 25 and in the same household, + assign the fg_id of its parents.""" + + # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt + # once Bedarfsgemeinschaften are fully endogenous + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + + return np.where( + (p_id_elternteil_loc >= 0) + * (fg_id == p_id + p_id * n) + * (hh_id == hh_id[p_id_elternteil_loc]) + * (alter < 25) + * (1 - children), + fg_id[p_id_elternteil_loc], + fg_id, + ) @group_creation_function() def bg_id( fg_id: np.ndarray, + p_id: np.ndarray, arbeitslosengeld_2__eigenbedarf_gedeckt: np.ndarray, alter: np.ndarray, ) -> np.ndarray: @@ -163,23 +130,18 @@ def bg_id( # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt # once Bedarfsgemeinschaften are fully endogenous # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 - counter: Counter[int] = Counter() - result: list[int] = [] - for index, current_fg_id in enumerate(map(int, fg_id)): - current_alter = int(alter[index]) - current_eigenbedarf_gedeckt = bool( - arbeitslosengeld_2__eigenbedarf_gedeckt[index] - ) - # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - if current_alter < 25 and current_eigenbedarf_gedeckt: - counter[current_fg_id] += 1 - result.append(current_fg_id * 100 + counter[current_fg_id]) - else: - result.append(current_fg_id * 100) + # TODO(@MImmesberger): Remove hard-coded number + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + offset = np.max(fg_id) + 1 + # Create new id for everyone who is not part of the Bedarfsgemeinschaft + bg_id = np.where( + (arbeitslosengeld_2__eigenbedarf_gedeckt) * (alter < 25), + offset + p_id, + fg_id, + ) - return np.array(result) + return _reorder_ids(bg_id) @group_creation_function() @@ -191,28 +153,18 @@ def eg_id( A couple whose members are deemed to be responsible for each other. """ - p_id_to_eg_id: dict[int, int] = {} - next_eg_id = 0 - result: list[int] = [] - - for index, current_p_id in enumerate(map(int, p_id)): - current_p_id_einstandspartner = int( - arbeitslosengeld_2__p_id_einstandspartner[index] - ) + n = np.max(p_id) + 1 + p_id_einstandspartner__or_own_p_id = np.where( + arbeitslosengeld_2__p_id_einstandspartner < 0, + p_id, + arbeitslosengeld_2__p_id_einstandspartner, + ) + result = ( + np.maximum(p_id, p_id_einstandspartner__or_own_p_id) + + np.minimum(p_id, p_id_einstandspartner__or_own_p_id) * n + ) - if ( - current_p_id_einstandspartner >= 0 - and current_p_id_einstandspartner in p_id_to_eg_id - ): - result.append(p_id_to_eg_id[current_p_id_einstandspartner]) - continue - - # New Einstandsgemeinschaft - result.append(next_eg_id) - p_id_to_eg_id[current_p_id] = next_eg_id - next_eg_id += 1 - - return np.array(result) + return _reorder_ids(result) @group_creation_function() @@ -226,20 +178,14 @@ def wthh_id( The relevant unit for Wohngeld. Members of a household for whom the Wohngeld priority check compared to Bürgergeld yields the same result ∈ {True, False}. """ - result: list[int] = [] - for index, current_hh_id in enumerate(map(int, hh_id)): - if bool( - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg[index] - ) or bool( - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg[ - index - ] - ): - result.append(current_hh_id * 100 + 1) - else: - result.append(current_hh_id * 100) - - return np.array(result) + offset = np.max(hh_id) + 1 + wthh_id = np.where( + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg + | vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg, + hh_id + offset, + hh_id, + ) + return _reorder_ids(wthh_id) @group_creation_function() @@ -252,36 +198,30 @@ def sn_id( Spouses filing taxes jointly or individuals. """ - p_id_to_sn_id: dict[int, int] = {} - p_id_to_gemeinsam_veranlagt: dict[int, bool] = {} - next_sn_id = 0 - result: list[int] = [] - - for index, current_p_id in enumerate(map(int, p_id)): - current_p_id_ehepartner = int(familie__p_id_ehepartner[index]) - current_gemeinsam_veranlagt = bool(einkommensteuer__gemeinsam_veranlagt[index]) - - if current_p_id_ehepartner >= 0 and current_p_id_ehepartner in p_id_to_sn_id: - gemeinsam_veranlagt_ehepartner = p_id_to_gemeinsam_veranlagt[ - current_p_id_ehepartner - ] - - if current_gemeinsam_veranlagt != gemeinsam_veranlagt_ehepartner: - message = ( - f"{current_p_id_ehepartner} and {current_p_id} are " - "married, but have different values for " - "gemeinsam_veranlagt." - ) - raise ValueError(message) - - if current_gemeinsam_veranlagt: - result.append(p_id_to_sn_id[current_p_id_ehepartner]) - continue - - # New Steuersubjekt - result.append(next_sn_id) - p_id_to_sn_id[current_p_id] = next_sn_id - p_id_to_gemeinsam_veranlagt[current_p_id] = current_gemeinsam_veranlagt - next_sn_id += 1 - - return np.array(result) + + n = np.max(p_id) + 1 + + p_id_ehepartner_or_own_p_id = np.where( + (familie__p_id_ehepartner >= 0) * (einkommensteuer__gemeinsam_veranlagt), + familie__p_id_ehepartner, + p_id, + ) + + result = ( + np.maximum(p_id, p_id_ehepartner_or_own_p_id) + + np.minimum(p_id, p_id_ehepartner_or_own_p_id) * n + ) + + return _reorder_ids(result) + + +def _reorder_ids(ids: np.ndarray) -> np.ndarray: + """Make ID's consecutively numbered.""" + sorting = np.argsort(ids) + ids_sorted = ids[sorting] + index_after_sort = np.arange(ids.shape[0])[sorting] + # Look for difference from previous entry in sorted array + diff_to_prev = np.where(np.diff(ids_sorted) >= 1, 1, 0) + # Sum up all differences to get new id + cons_ids = np.concatenate((np.asarray([0]), np.cumsum(diff_to_prev))) + return cons_ids[np.argsort(index_after_sort)] diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 24c28738c4..1d4c3b2bdf 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import datetime import numpy @@ -11,54 +13,14 @@ def geburtsdatum( geburtsmonat: int, geburtstag: int, ) -> numpy.datetime64: - """Create date of birth datetime variable. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - geburtstag - See basic input variable :ref:`geburtstag <geburtstag>`. - - Returns - ------- - - """ - out = numpy.datetime64( + """Create date of birth datetime variable.""" + return numpy.datetime64( datetime.datetime( geburtsjahr, geburtsmonat, geburtstag, ) ).astype("datetime64[D]") - return out - - -@policy_function(vectorization_strategy="loop") -def alter_monate(geburtsdatum: numpy.datetime64, elterngeld_params: dict) -> float: - """Calculate age of youngest child in months. - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id <hh_id>`. - geburtsdatum - See :func:`geburtsdatum`. - elterngeld_params - See params documentation :ref:`elterngeld_params <elterngeld_params>`. - Returns - ------- - - """ - - # TODO(@hmgaudecker): Remove explicit cast when vectorisation is enabled. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/515 - age_in_days = elterngeld_params["datum"] - numpy.datetime64(geburtsdatum) - - out = age_in_days / 30.436875 - return out.astype(float) @policy_function() @@ -66,13 +28,5 @@ def alter_bis_24(alter: int) -> bool: """Age is 24 years at most. Trivial, but necessary in order to use the target for aggregation. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - - Returns - ------- """ return alter <= 24 diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index 243e37ea1f..865fef5aea 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @@ -8,6 +10,13 @@ def alter() -> int: """Age in years.""" +# TODO(@MImmesberger): Remove once evaluation date is available. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 +@policy_input() +def alter_monate() -> int: + """Age in months.""" + + @policy_input() def arbeitsstunden_w() -> float: """Working hours.""" diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index ecf378cc33..37505d62d4 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -2,87 +2,128 @@ from typing import TYPE_CHECKING -from _gettsim.config import RESOURCE_DIR +from _gettsim.config import GETTSIM_ROOT from ttsim import ( compute_taxes_and_transfers, - create_data_tree_from_df, + dataframe_to_nested_data, + nested_data_to_dataframe, set_up_policy_environment, ) if TYPE_CHECKING: import pandas as pd - from dags.tree.typing import NestedTargetDict - from ttsim.typing import NestedDataDict, NestedInputsPathsToDfColumns + from ttsim.typing import NestedInputs, NestedStrings def oss( date: str, - df: pd.DataFrame, - inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, - targets_tree: NestedTargetDict, -) -> NestedDataDict: + inputs_df: pd.DataFrame, + inputs_tree_to_inputs_df_columns: NestedInputs, + targets_tree_to_outputs_df_columns: NestedStrings, +) -> pd.DataFrame: """One-stop-shop for computing taxes and transfers. Args: date: The date to compute taxes and transfers for. The date determines the policy environment for which the taxes and transfers are computed. - df: + inputs_df: The DataFrame containing the data. - inputs_tree_to_df_columns: - A nested dictionary that maps GETTSIM's expected input structure to the data - provided by the user. Keys are strings that provide a path to an input. - - Values can be: - - Strings that reference column names in the DataFrame. - - Numeric or boolean values (which will be broadcasted to match the length - of the DataFrame). - targets_tree: - The targets tree. + inputs_tree_to_inputs_df_columns: + A tree that has the inputs required by GETTSIM as the path (sequence of + keys) and maps them to the data provided by the user. The leaves of the tree + are strings that reference column names in *inputs_df* or constants. + targets_tree_to_outputs_df_columns: + A tree that has the desired targets as the path (sequence of keys) and maps + them to the data columns the user would like to have. + Returns: + A DataFrame with the results. Examples: -------- - >>> inputs_tree_to_df_columns = { + >>> inputs_df = pd.DataFrame( + ... { + ... "age": [25, 45, 3, 65], + ... "wage": [950, 950, 0, 950], + ... "id": [0, 1, 2, 3], + ... "hh_id": [0, 1, 1, 2], + ... "mother_id": [-1, -1, 1, -1], + ... "has_kids": [False, True, False, True], + ... } + ... ) + >>> inputs_map = { + ... "p_id": "id", + ... "hh_id": "hh_id", + ... "alter": "age", + ... "familie":{ + ... "p_id_elternteil_1": "mother_id", + ... "p_id_elternteil_2": -1, + ... }, ... "einkommensteuer": { - ... "gemeinsam_veranlagt": "joint_taxation", ... "einkünfte": { - ... "aus_nichtselbstständiger_arbeit": { - ... "bruttolohn_m": "gross_wage_m", - ... }, + ... "aus_nichtselbstständiger_arbeit": {"bruttolohn_m": "wage"}, + ... "ist_selbstständig": False, + ... "aus_selbstständiger_arbeit": {"betrag_m": 0.0}, + ... } + ... }, + ... "sozialversicherung": { + ... "pflege": { + ... "beitrag": { + ... "hat_kinder": "has_kids", + ... } ... }, + ... "kranken": { + ... "beitrag":{ + ... "bemessungsgrundlage_rente_m": 0.0, + ... "privat_versichert": False + ... } + ... } ... }, - ... "alter": 30, - ... "p_id": "p_id", ... } - >>> df = pd.DataFrame( - ... { - ... "gross_wage_m": [1000, 2000, 3000], - ... "joint_taxation": [True, True, False], - ... "p_id": [0, 1, 2], - ... } - ... ) + >>> targets_map={ + ... "sozialversicherung": { + ... "pflege": { + ... "beitrag": { + ... "betrag_versicherter_m": "ltci_contrib", + ... } + ... } + ... } + ... } >>> oss( - ... date="2024-01-01", - ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, - ... targets_tree=targets_tree, - ... df=df, + ... date="2025-01-01", + ... inputs_df=inputs_df, + ... inputs_tree_to_inputs_df_columns=inputs_map, + ... targets_tree_to_outputs_df_columns=targets_map, ... ) + ltci_contrib + 0 14.72 + 1 9.82 + 2 0.00 + 3 9.82 """ - data_tree = create_data_tree_from_df( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, - df=df, + data_tree = dataframe_to_nested_data( + inputs_tree_to_df_columns=inputs_tree_to_inputs_df_columns, + df=inputs_df, ) - policy_environment = set_up_policy_environment( + environment = set_up_policy_environment( date=date, - resource_dir=RESOURCE_DIR, + root=GETTSIM_ROOT, ) - return compute_taxes_and_transfers( + taxes_and_transfers_result = compute_taxes_and_transfers( data_tree=data_tree, - environment=policy_environment, - targets_tree=targets_tree, + policy_environment=environment, + targets_tree=targets_tree_to_outputs_df_columns, rounding=True, debug=False, jit=False, ) + nested_data_with_p_id = { + "p_id": data_tree["p_id"], + **taxes_and_transfers_result, + } + return nested_data_to_dataframe( + nested_data_with_p_id=nested_data_with_p_id, + nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + ) diff --git a/src/_gettsim/kinderbonus/__init__.py b/src/_gettsim/kinderbonus/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/kinderbonus/__init__.py +++ b/src/_gettsim/kinderbonus/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/kinderbonus/kinderbonus.py b/src/_gettsim/kinderbonus/kinderbonus.py index 8a871b9c9a..55ae065965 100644 --- a/src/_gettsim/kinderbonus/kinderbonus.py +++ b/src/_gettsim/kinderbonus/kinderbonus.py @@ -1,29 +1,20 @@ -"""Kinderbonus.""" +"""Kinderbonus (child bonus).""" + +from __future__ import annotations from ttsim import policy_function @policy_function(start_date="2020-01-01", end_date="2021-12-31") -def betrag_y(kindergeld__betrag_y: float, kindergeld_params: dict) -> float: +def betrag_y(kindergeld__betrag_y: float, satz: float) -> float: """Calculate Kinderbonus for an individual child. (one-time payment, non-allowable against transfer payments) - Parameters - ---------- - kindergeld__betrag_y - See :func:`kindergeld__betrag_y`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - - Returns - ------- - """ - # Kinderbonus parameter is specified on the yearly level - # kindergeld__betrag_y is zero for all adults + if kindergeld__betrag_y > 0: - out = kindergeld_params["kinderbonus"] + out = satz else: out = 0.0 diff --git a/src/_gettsim/kinderbonus/kinderbonus.yaml b/src/_gettsim/kinderbonus/kinderbonus.yaml new file mode 100644 index 0000000000..d759f4af43 --- /dev/null +++ b/src/_gettsim/kinderbonus/kinderbonus.yaml @@ -0,0 +1,22 @@ +--- +satz: + name: + de: Kinderbonus pro Kind + en: Child bonus (one-time payment) + description: + de: >- + Aufstockung des Kindergeldes während COVID-19 Pandemie. Wurde im September/Oktober + 2020 bzw. Mai 2021 ausgezahlt, aber ist hier auf das volle Kalenderjahr + angerechnet. + en: null + unit: Euros + reference_period: Year + type: scalar + 2020-01-01: + reference: Art. 1 Zweites Corona-Steuerhilfegesetz v. 29.06.2020 BGBl. I S. 1512 + value: 300 + 2021-01-01: + reference: Art. 1 Drittes Corona-Steuerhilfegesetz v. 10.03.2021 BGBl. I S. 330 + value: 150 + 2022-01-01: + note: ad-hoc measure ended again. diff --git a/src/_gettsim/kindergeld/__init__.py b/src/_gettsim/kindergeld/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/kindergeld/__init__.py +++ b/src/_gettsim/kindergeld/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/kindergeld/inputs.py b/src/_gettsim/kindergeld/inputs.py index 50f6fdde1a..eb0b22855c 100644 --- a/src/_gettsim/kindergeld/inputs.py +++ b/src/_gettsim/kindergeld/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import FKType, policy_input diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index fbc1bdbcf5..2a7b2901a1 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -1,8 +1,21 @@ """Basic child allowance (Kindergeld).""" -import numpy +from __future__ import annotations -from ttsim import AggType, agg_by_p_id_function, join, policy_function +from typing import TYPE_CHECKING + +from ttsim import ( + AggType, + agg_by_p_id_function, + get_consecutive_int_1d_lookup_table_param_value, + join, + param_function, + policy_function, +) + +if TYPE_CHECKING: + from ttsim import ConsecutiveInt1dLookupTableParamValue + from ttsim.config import numpy_or_jax as np @agg_by_p_id_function(agg_type=AggType.SUM) @@ -15,63 +28,32 @@ def anzahl_ansprüche( @policy_function(start_date="2023-01-01", leaf_name="betrag_m") def betrag_ohne_staffelung_m( anzahl_ansprüche: int, - kindergeld_params: dict, + satz: float, ) -> float: """Sum of Kindergeld for eligible children. Kindergeld claim is the same for each child, i.e. increases linearly with the number of children. - Parameters - ---------- - anzahl_ansprüche - See :func:`anzahl_ansprüche`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - - Returns - ------- - """ - return kindergeld_params["kindergeld"] * anzahl_ansprüche + return satz * anzahl_ansprüche -@policy_function( - end_date="2022-12-31", leaf_name="betrag_m", vectorization_strategy="loop" -) +@policy_function(end_date="2022-12-31", leaf_name="betrag_m") def betrag_gestaffelt_m( anzahl_ansprüche: int, - kindergeld_params: dict, + satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Sum of Kindergeld that parents receive for their children. Kindergeld claim for each child depends on the number of children Kindergeld is being claimed for. - Parameters - ---------- - anzahl_ansprüche - See :func:`anzahl_ansprüche`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - - Returns - ------- - """ - - if anzahl_ansprüche == 0: - sum_kindergeld = 0.0 - else: - sum_kindergeld = sum( - kindergeld_params["kindergeld"][ - (min(i, max(kindergeld_params["kindergeld"]))) - ] - for i in range(1, anzahl_ansprüche + 1) - ) - - return sum_kindergeld + return satz_nach_anzahl_kinder.values_to_look_up[ + anzahl_ansprüche - satz_nach_anzahl_kinder.base_to_subtract + ] @policy_function( @@ -81,8 +63,9 @@ def betrag_gestaffelt_m( def grundsätzlich_anspruchsberechtigt_nach_lohn( alter: int, in_ausbildung: bool, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - kindergeld_params: dict, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + altersgrenze: dict[str, int], + maximales_einkommen_des_kindes: float, ) -> bool: """Determine kindergeld eligibility for an individual child depending on kids wage. @@ -90,32 +73,16 @@ def grundsätzlich_anspruchsberechtigt_nach_lohn( returns a boolean variable whether a specific person is a child eligible for child benefit - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - in_ausbildung - See basic input variable :ref:`in_ausbildung <in_ausbildung>`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - - Returns - ------- - """ - out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( - (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) + return (alter < altersgrenze["ohne_bedingungen"]) or ( + (alter < altersgrenze["mit_bedingungen"]) and in_ausbildung and ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - <= kindergeld_params["einkommensgrenze"] / 12 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + <= maximales_einkommen_des_kindes ) ) - return out - @policy_function( start_date="2012-01-01", @@ -125,7 +92,8 @@ def grundsätzlich_anspruchsberechtigt_nach_stunden( alter: int, in_ausbildung: bool, arbeitsstunden_w: float, - kindergeld_params: dict, + altersgrenze: dict[str, int], + maximale_arbeitsstunden_des_kindes: float, ) -> bool: """Determine kindergeld eligibility for an individual child depending on working hours. @@ -133,74 +101,30 @@ def grundsätzlich_anspruchsberechtigt_nach_stunden( The current eligibility rule is, that kids must not work more than 20 hour and are below 25. - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - in_ausbildung - See :func:`in_ausbildung`. - arbeitsstunden_w - See :func:`arbeitsstunden_w`. - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - - Returns - ------- - Boolean indiciating kindergeld eligibility. - """ - out = (alter < kindergeld_params["altersgrenze"]["ohne_bedingungen"]) or ( - (alter < kindergeld_params["altersgrenze"]["mit_bedingungen"]) + return (alter < altersgrenze["ohne_bedingungen"]) or ( + (alter < altersgrenze["mit_bedingungen"]) and in_ausbildung - and (arbeitsstunden_w <= kindergeld_params["stundengrenze"]) + and (arbeitsstunden_w <= maximale_arbeitsstunden_des_kindes) ) - return out - @policy_function() def kind_bis_10_mit_kindergeld( alter: int, grundsätzlich_anspruchsberechtigt: bool, ) -> bool: - """Child under the age of 11 and eligible for Kindergeld. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - grundsätzlich_anspruchsberechtigt - See :func:`grundsätzlich_anspruchsberechtigt_nach_stunden`. - - Returns - ------- - - """ - out = grundsätzlich_anspruchsberechtigt and (alter <= 10) - return out + """Child under the age of 11 and eligible for Kindergeld.""" + return grundsätzlich_anspruchsberechtigt and (alter <= 10) @policy_function(vectorization_strategy="not_required") def gleiche_fg_wie_empfänger( - p_id: numpy.ndarray[int], - p_id_empfänger: numpy.ndarray[int], - fg_id: numpy.ndarray[int], -) -> numpy.ndarray[bool]: - """The child's Kindergeldempfänger is in the same Familiengemeinschaft. - - Parameters - ---------- - p_id - See basic input variable :ref:`p_id <p_id>`. - p_id_empfänger - See basic input variable :ref:`p_id_empfänger <p_id_empfänger>`. - fg_id - See basic input variable :ref:`fg_id <fg_id>`. - - Returns - ------- - - """ + p_id: np.ndarray, # int + p_id_empfänger: np.ndarray, # int + fg_id: np.ndarray, # int +) -> np.ndarray: # bool + """The child's Kindergeldempfänger is in the same Familiengemeinschaft.""" fg_id_kindergeldempfänger = join( p_id_empfänger, p_id, @@ -209,3 +133,25 @@ def gleiche_fg_wie_empfänger( ) return fg_id_kindergeldempfänger == fg_id + + +@param_function(end_date="2022-12-31") +def satz_nach_anzahl_kinder( + satz_gestaffelt: dict[int, float], +) -> ConsecutiveInt1dLookupTableParamValue: + """Convert the Kindergeld-Satz by child to the amount of Kindergeld by number of + children.""" + max_num_children = 30 + max_num_children_in_spec = max(satz_gestaffelt.keys()) + base_spec = { + k: sum(satz_gestaffelt[i] for i in range(1, k + 1)) + for k in range(1, max_num_children_in_spec + 1) + } + extended_spec = { + k: base_spec[max_num_children_in_spec] + + satz_gestaffelt[max_num_children_in_spec] * (k - max_num_children_in_spec) + for k in range(max_num_children_in_spec + 1, max_num_children) + } + return get_consecutive_int_1d_lookup_table_param_value( + {0: 0.0, **base_spec, **extended_spec} + ) diff --git a/src/_gettsim/parameters/kindergeld.yaml b/src/_gettsim/kindergeld/kindergeld.yaml similarity index 76% rename from src/_gettsim/parameters/kindergeld.yaml rename to src/_gettsim/kindergeld/kindergeld.yaml index 098c879277..d787fd5435 100644 --- a/src/_gettsim/parameters/kindergeld.yaml +++ b/src/_gettsim/kindergeld/kindergeld.yaml @@ -5,26 +5,28 @@ altersgrenze: en: Age at which child benefit is no longer paid. description: de: >- + § 32 Art. 2-4 EStG. Für minderjährige Kinder besteht ohne Bedingungen ein Anspruch auf Kindergeld. Auch für erwachsene Kinder kann bis zu einer Altersgrenze unter bestimmten Bedingungen ein Anspruch auf Kindergeld bestehen. en: >- + § 32 Art. 2-4 EStG. Underage children are entitled to child benefit without any conditions. Also adult children up to a specified age are entitled to child benefit under certain conditions. - unit: Year - reference: § 32 Art. 2-4 EStG. + unit: Years + reference_period: null + type: dict 1984-01-01: mit_bedingungen: 27 ohne_bedingungen: 18 - reference: null 2007-01-01: mit_bedingungen: 25 ohne_bedingungen: 18 reference: Art. 1 G. v. 19.07.2006 BGBl I S. 1652 -kindergeld: +satz_gestaffelt: name: - de: Kindergeld, Betrag je nach Reihenfolge der Kinder. + de: Kindergeld pro Kind, Betrag je nach Reihenfolge der Kinder. en: Child benefit amount, depending on succession of children. description: de: >- @@ -32,82 +34,70 @@ kindergeld: Steuerpflichtige relevant (d.h. Ausländer mit Erwerbstätigkeit in Deutschland). Für Werte vor 2002, siehe 'BMF - Datensammlung zur Steuerpolitik' en: null - unit: Euro + unit: Euros reference_period: Month + type: require_converter 1975-01-01: - reference: null 1: 26 2: 36 3: 61 4: 61 1978-01-01: - reference: null 1: 26 2: 41 3: 77 4: 77 1979-01-01: - reference: null 1: 26 2: 51 3: 102 4: 102 1979-07-01: - reference: null 1: 26 2: 61 3: 102 4: 102 1981-02-01: - reference: null 1: 26 2: 61 3: 123 4: 123 1982-01-01: - reference: null 1: 26 2: 51 3: 112 4: 123 1990-07-01: - reference: null 1: 26 2: 66 3: 112 4: 123 1992-01-01: - reference: null 1: 36 2: 66 3: 112 4: 123 1996-01-01: - reference: null 1: 102 2: 102 3: 153 4: 179 1997-01-01: - reference: null 1: 112 2: 112 3: 153 4: 179 1999-01-01: - reference: null 1: 128 2: 128 3: 153 4: 179 2000-01-01: - reference: null 1: 138 2: 138 3: 153 4: 179 2002-01-01: - reference: null 1: 154 2: 154 3: 154 @@ -168,55 +158,68 @@ kindergeld: 3: 225 4: 250 2023-01-01: + note: Superseded by satz +satz: + name: + de: Kindergeld pro Kind, identisch für alle Kinder. + en: Child benefit amount, depending on succession of children. + description: + de: >- + § 66 (1) EStG. Identische Werte in §6 (1) BKGG, diese sind aber nur für beschränkt + Steuerpflichtige relevant (d.h. Ausländer mit Erwerbstätigkeit in Deutschland). + Für Werte vor 2002, siehe 'BMF - Datensammlung zur Steuerpolitik' + en: null + unit: Euros + reference_period: Month + type: scalar + 2023-01-01: + value: 250 reference: Art. 6 G. v. 08.12.2022 BGBl. I S. 2230. note: Inflationsausgleichsgesetz - scalar: 250 2025-01-01: - scalar: 255 - note: Steuerfortentwicklungsgesetz (SteFeG) + value: 255 reference: Art. 5 G. v. 30.12.2024 BGBl. 2024 Nr. 449. + note: Steuerfortentwicklungsgesetz (SteFeG) 2026-01-01: - scalar: 259 - note: Steuerfortentwicklungsgesetz (SteFeG) 2024 + value: 259 reference: Art. 6 G. v. 30.12.2024 BGBl. 2024 Nr. 449. -einkommensgrenze: + note: Steuerfortentwicklungsgesetz (SteFeG) 2024 +maximales_einkommen_des_kindes: name: - de: Einkommensgrenze der Kinder für Kindergeldanspruch - en: Income Ceiling for children in order to get child benefit. + de: Einkommensgrenze der Kinder, ab welcher kein Kindergeldanspruch besteht + en: Income ceiling for children in order to get child benefit. description: de: >- § 32 (4) EStG. Wurde 2012 durch eine Höchstgrenze der gearbeiteten Stunden ersetzt. en: null - unit: Euro + unit: Euros reference_period: Year + type: scalar 1984-01-01: - scalar: 0 - reference: null + value: 0 1996-01-01: - scalar: 6136 + value: 6136 reference: Art. 1 G. v. 11.10.1995 BGBl. I S. 1250 note: Originalwert 12000 DM. 1999-01-01: - scalar: 6657 - referemce: null + value: 6657 2000-01-01: - scalar: 6902 - reference: . + value: 6902 2001-01-01: - scalar: 7179 - reference: . + value: 7179 2002-01-01: - scalar: 7188 + value: 7188 reference: Art. 1 G. v. 16.08.2001 BGBl. I S. 2074 2004-01-01: - scalar: 7680 - reference: null + value: 7680 2009-01-01: - scalar: 8004 + value: 8004 reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 - note: Zurückdatiert auf das volle Kalenderjahr 2009. -stundengrenze: + note: Zurückdatiert auf das volle Kalenderjahr 2009 + 2012-01-01: + note: Revoked in favour of maximale_arbeitsstunden_des_kindes +maximale_arbeitsstunden_des_kindes: name: de: Wochenstundengrenze für Kindergeldanspruch en: Working hours threshold for child benefit eligibility @@ -225,14 +228,15 @@ stundengrenze: §32 (4) S. 3 EStG. Maximale Anzahl von erlaubten Wochenstunden des Kindes für den Bezug von Kindergeld en: null - unit: Hour + unit: Hours reference_period: Week + type: scalar 2012-01-01: - scalar: 20 + value: 20 reference: Art. 1 G. v. 01.11.2011 BGBl. I S. 2131 -kinderbonus: +kinderbonus_pro_kind: name: - de: Kinderbonus (Einmalzahlung) + de: Kinderbonus pro Kind en: Child bonus (one-time payment) description: de: >- @@ -240,16 +244,14 @@ kinderbonus: 2020 bzw. Mai 2021 ausgezahlt, aber ist hier auf das volle Kalenderjahr angerechnet. en: null - unit: Euro + unit: Euros reference_period: Year - 1984-01-01: - scalar: 0 + type: scalar 2020-01-01: reference: Art. 1 Zweites Corona-Steuerhilfegesetz v. 29.06.2020 BGBl. I S. 1512 - scalar: 300 + value: 300 2021-01-01: reference: Art. 1 Drittes Corona-Steuerhilfegesetz v. 10.03.2021 BGBl. I S. 330 - scalar: 150 + value: 150 2022-01-01: note: only one-time payment - scalar: 0 diff --git a/src/_gettsim/kinderzuschlag/__init__.py b/src/_gettsim/kinderzuschlag/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/kinderzuschlag/__init__.py +++ b/src/_gettsim/kinderzuschlag/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index d71de0bed1..6d7c1e95c2 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -1,21 +1,35 @@ """Income relevant for calculation of Kinderzuschlag.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +from _gettsim.param_types import ( + ElementExistenzminimum, + ElementExistenzminimumNurKind, + ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, + ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe, +) from ttsim import ( AggType, RoundingSpec, agg_by_group_function, + param_function, policy_function, ) +if TYPE_CHECKING: + from ttsim import RawParam + -@agg_by_group_function(agg_type=AggType.SUM) +@agg_by_group_function(agg_type=AggType.SUM, start_date="2005-01-01") def arbeitslosengeld_2__anzahl_kinder_bg( kindergeld__anzahl_ansprüche: int, bg_id: int ) -> int: pass -@policy_function() +@policy_function(start_date="2005-01-01") def bruttoeinkommen_eltern_m( arbeitslosengeld_2__bruttoeinkommen_m: float, kindergeld__grundsätzlich_anspruchsberechtigt: bool, @@ -25,20 +39,6 @@ def bruttoeinkommen_eltern_m( This variable is used to check whether the minimum income threshold for child benefit is met. - - Parameters - ---------- - arbeitslosengeld_2__bruttoeinkommen_m - See :func:`arbeitslosengeld_2__bruttoeinkommen_m`. - kindergeld__grundsätzlich_anspruchsberechtigt - See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. - familie__erwachsen - See :func:`familie__erwachsen`. - - - Returns - ------- - """ # TODO(@MImmesberger): Redesign the conditions in this function: False for adults # who do not have Kindergeld claims. @@ -53,8 +53,9 @@ def bruttoeinkommen_eltern_m( @policy_function( rounding_spec=RoundingSpec(base=10, direction="down", reference="§ 6a Abs. 4 BKGG"), - leaf_name="nettoeinkommen_eltern_m", + start_date="2005-01-01", end_date="2019-06-30", + leaf_name="nettoeinkommen_eltern_m", ) def nettoeinkommen_eltern_m_mit_grober_rundung( arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, @@ -63,19 +64,6 @@ def nettoeinkommen_eltern_m_mit_grober_rundung( ) -> float: """Parental income (after deduction of taxes, social insurance contributions, and other deductions) for calculation of child benefit. - - Parameters - ---------- - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m - See :func:`arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m`. - kindergeld__grundsätzlich_anspruchsberechtigt - See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. - familie__erwachsen - See :func:`familie__erwachsen`. - - Returns - ------- - """ # TODO(@MImmesberger): Redesign the conditions in this function: False for adults # who do not have Kindergeld claims. @@ -89,8 +77,8 @@ def nettoeinkommen_eltern_m_mit_grober_rundung( @policy_function( rounding_spec=RoundingSpec(base=1, direction="down", reference="§ 11 Abs. 2 BKGG"), - leaf_name="nettoeinkommen_eltern_m", start_date="2019-07-01", + leaf_name="nettoeinkommen_eltern_m", ) def nettoeinkommen_eltern_m_mit_genauer_rundung( arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, @@ -99,19 +87,6 @@ def nettoeinkommen_eltern_m_mit_genauer_rundung( ) -> float: """Parental income (after deduction of taxes, social insurance contributions, and other deductions) for calculation of child benefit. - - Parameters - ---------- - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m - See :func:`arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m`. - kindergeld__grundsätzlich_anspruchsberechtigt - See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. - familie__erwachsen - See :func:`familie__erwachsen`. - - Returns - ------- - """ # TODO(@MImmesberger): Redesign the conditions in this function: False for adults # who do not have Kindergeld claims. @@ -123,101 +98,99 @@ def nettoeinkommen_eltern_m_mit_genauer_rundung( return out -@policy_function(end_date="2019-06-30") -def maximales_nettoeinkommen_m_bg( +@policy_function( + start_date="2005-01-01", + end_date="2022-06-30", + leaf_name="maximales_nettoeinkommen_m_bg", +) +def maximales_nettoeinkommen_m_bg_vor_06_2022( erwachsenenbedarf_m_bg: float, arbeitslosengeld_2__anzahl_kinder_bg: int, - kinderzuschl_params: dict, + satz: float, ) -> float: """Calculate maximum income to be eligible for additional child benefit (Kinderzuschlag). There is a maximum income threshold, depending on the need, plus the potential kiz receipt (§6a (1) Nr. 3 BKGG). + """ + return erwachsenenbedarf_m_bg + satz * arbeitslosengeld_2__anzahl_kinder_bg - Parameters - ---------- - erwachsenenbedarf_m_bg - See :func:`erwachsenenbedarf_m_bg`. - arbeitslosengeld_2__anzahl_kinder_bg - See :func:`arbeitslosengeld_2__anzahl_kinder_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params <kinderzuschl_params>`. - Returns - ------- +@policy_function( + start_date="2022-07-01", + end_date="2022-12-31", + leaf_name="maximales_nettoeinkommen_m_bg", +) +def maximales_nettoeinkommen_m_bg_ab_06_2022_bis_12_2022( + erwachsenenbedarf_m_bg: float, + arbeitslosengeld_2__anzahl_kinder_bg: int, + arbeitslosengeld_2__kindersofortzuschlag: float, + satz: float, +) -> float: + """Calculate maximum income to be eligible for additional child benefit + (Kinderzuschlag). + There is a maximum income threshold, depending on the need, plus the potential kiz + receipt (§6a (1) Nr. 3 BKGG). """ - out = ( + return ( erwachsenenbedarf_m_bg - + kinderzuschl_params["maximum"] * arbeitslosengeld_2__anzahl_kinder_bg + + satz * arbeitslosengeld_2__anzahl_kinder_bg + + arbeitslosengeld_2__kindersofortzuschlag + * arbeitslosengeld_2__anzahl_kinder_bg ) - kindersofortzuschl = kinderzuschl_params.get("kindersofortzuschl", 0.0) - out += kindersofortzuschl * arbeitslosengeld_2__anzahl_kinder_bg - return out +@policy_function(start_date="2023-01-01", leaf_name="maximales_nettoeinkommen_m_bg") +def maximales_nettoeinkommen_m_bg_ab_01_2023( + erwachsenenbedarf_m_bg: float, + arbeitslosengeld_2__anzahl_kinder_bg: int, + satz: float, +) -> float: + """Calculate maximum income to be eligible for additional child benefit + (Kinderzuschlag). + Kindersofortzuschlag is included in maximum Kinderzuschlag. -@policy_function() + There is a maximum income threshold, depending on the need, plus the potential kiz + receipt (§6a (1) Nr. 3 BKGG). + """ + return erwachsenenbedarf_m_bg + satz * arbeitslosengeld_2__anzahl_kinder_bg + + +@policy_function(start_date="2008-10-01") def mindestbruttoeinkommen_m_bg( arbeitslosengeld_2__anzahl_kinder_bg: int, familie__alleinerziehend_bg: bool, - kinderzuschl_params: dict, + mindesteinkommen: dict[str, float], ) -> float: """Calculate minimal claim of child benefit (kinderzuschlag). Min income to be eligible for KIZ (different for singles and couples) (§6a (1) Nr. 2 BKGG). - - Parameters - ---------- - arbeitslosengeld_2__anzahl_kinder_bg - See :func:`arbeitslosengeld_2__anzahl_kinder_bg - <arbeitslosengeld_2__anzahl_kinder_bg>`. - familie__alleinerziehend_bg - See :func:`familie__alleinerziehend_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params <kinderzuschl_params>`. - - Returns - ------- - """ if arbeitslosengeld_2__anzahl_kinder_bg == 0: out = 0.0 elif familie__alleinerziehend_bg: - out = kinderzuschl_params["min_eink_alleinerz"] + out = mindesteinkommen["single"] else: - out = kinderzuschl_params["min_eink_paare"] + out = mindesteinkommen["paar"] return out -@policy_function() +@policy_function(start_date="2005-01-01") def anzurechnendes_einkommen_eltern_m_bg( nettoeinkommen_eltern_m_bg: float, erwachsenenbedarf_m_bg: float, - kinderzuschl_params: dict, + entzugsrate_elterneinkommen: float, ) -> float: """Calculate parental income subtracted from child benefit. (§6a (6) S. 3 BKGG) - - Parameters - ---------- - nettoeinkommen_eltern_m_bg - See :func:`nettoeinkommen_eltern_m_bg`. - erwachsenenbedarf_m_bg - See :func:`erwachsenenbedarf_m_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params <kinderzuschl_params>`. - - Returns - ------- - """ - out = kinderzuschl_params["entzugsrate_eltern"] * ( + out = entzugsrate_elterneinkommen * ( nettoeinkommen_eltern_m_bg - erwachsenenbedarf_m_bg ) @@ -233,172 +206,108 @@ def kosten_der_unterkunft_m_bg( """Calculate costs of living eligible to claim. Unlike ALG2, there is no check on whether living costs are "appropriate". - - Parameters - ---------- - wohnbedarf_anteil_eltern_bg - See :func:`wohnbedarf_anteil_eltern_bg`. - arbeitslosengeld_2__bruttokaltmiete_m_bg - See :func:`arbeitslosengeld_2__bruttokaltmiete_m_bg`. - arbeitslosengeld_2__heizkosten_m_bg - See :func:`arbeitslosengeld_2__heizkosten_m_bg`. - - Returns - ------- - """ warmmiete_m_bg = ( arbeitslosengeld_2__bruttokaltmiete_m_bg + arbeitslosengeld_2__heizkosten_m_bg ) - out = wohnbedarf_anteil_eltern_bg * warmmiete_m_bg + return wohnbedarf_anteil_eltern_bg * warmmiete_m_bg - return out +@param_function( + start_date="2005-01-01", end_date="2011-12-31", leaf_name="existenzminimum" +) +def existenzminimum_ohne_bildung_und_teilhabe( + parameter_existenzminimum: RawParam, +) -> ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe: + """Regelsatz nach Regelbedarfsstufen.""" + regelsatz = ElementExistenzminimum( + single=parameter_existenzminimum["regelsatz"]["single"], + paar=parameter_existenzminimum["regelsatz"]["paar"], + kind=parameter_existenzminimum["regelsatz"]["kind"], + ) + kosten_der_unterkunft = ElementExistenzminimum( + single=parameter_existenzminimum["kosten_der_unterkunft"]["single"], + paar=parameter_existenzminimum["kosten_der_unterkunft"]["paar"], + kind=parameter_existenzminimum["kosten_der_unterkunft"]["kind"], + ) + heizkosten = ElementExistenzminimum( + single=parameter_existenzminimum["heizkosten"]["single"], + paar=parameter_existenzminimum["heizkosten"]["paar"], + kind=parameter_existenzminimum["heizkosten"]["kind"], + ) + return ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe( + regelsatz=regelsatz, + kosten_der_unterkunft=kosten_der_unterkunft, + heizkosten=heizkosten, + ) -@policy_function(vectorization_strategy="loop") + +@param_function(start_date="2012-01-01", leaf_name="existenzminimum") +def existenzminimum_mit_bildung_und_teilhabe( + parameter_existenzminimum: RawParam, +) -> ExistenzminimumNachAufwendungenMitBildungUndTeilhabe: + """Regelsatz nach Regelbedarfsstufen.""" + regelsatz = ElementExistenzminimum( + single=parameter_existenzminimum["regelsatz"]["single"], + paar=parameter_existenzminimum["regelsatz"]["paar"], + kind=parameter_existenzminimum["regelsatz"]["kind"], + ) + kosten_der_unterkunft = ElementExistenzminimum( + single=parameter_existenzminimum["kosten_der_unterkunft"]["single"], + paar=parameter_existenzminimum["kosten_der_unterkunft"]["paar"], + kind=parameter_existenzminimum["kosten_der_unterkunft"]["kind"], + ) + heizkosten = ElementExistenzminimum( + single=parameter_existenzminimum["heizkosten"]["single"], + paar=parameter_existenzminimum["heizkosten"]["paar"], + kind=parameter_existenzminimum["heizkosten"]["kind"], + ) + return ExistenzminimumNachAufwendungenMitBildungUndTeilhabe( + regelsatz=regelsatz, + kosten_der_unterkunft=kosten_der_unterkunft, + heizkosten=heizkosten, + bildung_und_teilhabe=ElementExistenzminimumNurKind( + kind=parameter_existenzminimum["bildung_und_teilhabe"]["kind"] + ), + ) + + +@policy_function(start_date="2005-01-01") def wohnbedarf_anteil_eltern_bg( arbeitslosengeld_2__anzahl_kinder_bg: int, - arbeitslosengeld_2__anzahl_erwachsene_bg: int, - kinderzuschl_params: dict, + familie__alleinerziehend_bg: bool, + existenzminimum: ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe + | ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, + wohnbedarf_anteil_berücksichtigte_kinder: int, ) -> float: """Calculate living needs broken down to the parents. Defined as parents' subsistence level on housing, divided by sum of subsistence level from parents and children. Reference: § 6a Abs. 5 S. 3 BKGG - - Parameters - ---------- - arbeitslosengeld_2__anzahl_kinder_bg - See :func:`arbeitslosengeld_2__anzahl_kinder_bg`. - arbeitslosengeld_2__anzahl_erwachsene_bg - See :func:`arbeitslosengeld_2__anzahl_erwachsene_bg`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params <kinderzuschl_params>`. - - Returns - ------- - """ - ex_min = kinderzuschl_params["existenzminimum"] - # Up to 10 children are considered - considered_children = min(arbeitslosengeld_2__anzahl_kinder_bg, 10) - single_oder_paar = ( - "single" if arbeitslosengeld_2__anzahl_erwachsene_bg == 1 else "paare" - ) - - out = ( - ex_min["kosten_der_unterkunft"][single_oder_paar] - + ex_min["heizkosten"][single_oder_paar] - ) / ( - ex_min["kosten_der_unterkunft"][single_oder_paar] - + ex_min["heizkosten"][single_oder_paar] - + ( - considered_children - * ( - ex_min["kosten_der_unterkunft"]["kinder"] - + ex_min["heizkosten"]["kinder"] - ) - ) - ) - - return out - - -# TODO(@MImmesberger): The regelsatz is already calculated in the ALG2 modules. We -# should remove this function. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/826 -@policy_function(end_date="2010-12-31", leaf_name="regelsatz_m_bg") -def regelsatz_m_bg_arbeitsl_geld_2_params_bis_2010( - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: float, - familie__alleinerziehend_bg: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate income relevant for calculation of child benefit until 2010. - - Parameters - ---------- - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg - See :func:`arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg`. - familie__alleinerziehend_bg - See :func:`familie__alleinerziehend_bg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - - """ if familie__alleinerziehend_bg: - out = arbeitsl_geld_2_params["regelsatz"] * ( - 1 + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg + elternbetrag = ( + existenzminimum.kosten_der_unterkunft.single + + existenzminimum.heizkosten.single ) else: - out = ( - arbeitsl_geld_2_params["regelsatz"] - * arbeitsl_geld_2_params["anteil_regelsatz_erwachsene"]["zwei_erwachsene"] - * 2 + elternbetrag = ( + existenzminimum.kosten_der_unterkunft.paar + existenzminimum.heizkosten.paar ) - return out + kinderbetrag = min( + arbeitslosengeld_2__anzahl_kinder_bg, wohnbedarf_anteil_berücksichtigte_kinder + ) * (existenzminimum.kosten_der_unterkunft.kind + existenzminimum.heizkosten.kind) + return elternbetrag / (elternbetrag + kinderbetrag) -# TODO(@MImmesberger): The regelsatz is already calculated in the ALG2 modules. We -# should remove this function. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/826 -@policy_function(start_date="2011-01-01") -def regelsatz_m_bg( - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: float, - familie__alleinerziehend_bg: bool, - arbeitsl_geld_2_params: dict, -) -> float: - """Calculate income relevant for calculation of child benefit since 2011. - - Parameters - ---------- - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg - See :func:`arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg`. - familie__alleinerziehend_bg - See :func:`familie__alleinerziehend_bg`. - arbeitsl_geld_2_params - See params documentation :ref:`arbeitsl_geld_2_params <arbeitsl_geld_2_params>`. - - Returns - ------- - """ - if familie__alleinerziehend_bg: - out = arbeitsl_geld_2_params["regelsatz"][1] * ( - 1 + arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg - ) - else: - out = arbeitsl_geld_2_params["regelsatz"][2] * 2 - - return out - - -@policy_function() +@policy_function(start_date="2005-01-01") def erwachsenenbedarf_m_bg( - regelsatz_m_bg: float, kosten_der_unterkunft_m_bg: float + arbeitslosengeld_2__regelsatz_m_bg: float, kosten_der_unterkunft_m_bg: float ) -> float: - """Aggregate relevant income and rental costs. - - Parameters - ---------- - regelsatz_m_bg - See :func:`regelsatz_m_bg`. - kosten_der_unterkunft_m_bg - See :func:`kosten_der_unterkunft_m_bg`. - - Returns - ------- - - """ - return regelsatz_m_bg + kosten_der_unterkunft_m_bg - - -@agg_by_group_function(agg_type=AggType.SUM) -def kinderzuschlag_spec_target(kinderzuschlag_source_field: bool, bg_id: int) -> int: - pass + """Aggregate relevant income and rental costs.""" + return arbeitslosengeld_2__regelsatz_m_bg + kosten_der_unterkunft_m_bg diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index 21035993de..8bc801a558 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -1,32 +1,79 @@ -"""Kinderzuschlag.""" +"""Kinderzuschlag policy logic.""" -from ttsim import policy_function +from __future__ import annotations +from typing import TYPE_CHECKING -@policy_function() +from ttsim import param_function, policy_function + +if TYPE_CHECKING: + from _gettsim.param_types import ( + ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, + ) + from ttsim import ConsecutiveInt1dLookupTableParamValue + + +@param_function(start_date="2021-01-01", end_date="2022-12-31", leaf_name="satz") +def satz_mit_gestaffeltem_kindergeld( + existenzminimum: ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, + kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, + satz_vorjahr_ohne_kindersofortzuschlag: float, +) -> float: + """Prior to 2021, the maximum amount of the Kinderzuschlag was specified directly in + the laws and directives. + + In 2021, 2022, and from 2024 on, this measure has been derived from + subsistence levels. This function implements that calculation. + + For 2023 the amount is once again explicitly specified as a parameter. + """ + + return max( + ( + existenzminimum.regelsatz.kind + + existenzminimum.kosten_der_unterkunft.kind + + existenzminimum.heizkosten.kind + ) + / 12 + - kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ + 1 - kindergeld__satz_nach_anzahl_kinder.base_to_subtract + ], + satz_vorjahr_ohne_kindersofortzuschlag, + ) + + +@param_function(start_date="2024-01-01", leaf_name="satz") +def satz_mit_einheitlichem_kindergeld_und_kindersofortzuschlag( + existenzminimum: ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, + kindergeld__satz: float, + arbeitslosengeld_2__kindersofortzuschlag: float, + satz_vorjahr_ohne_kindersofortzuschlag: float, +) -> float: + """Kinderzuschlag pro Kind. + + Formula according to § 6a (2) BKGG. + """ + + current_formula = ( + existenzminimum.regelsatz.kind + + existenzminimum.kosten_der_unterkunft.kind + + existenzminimum.heizkosten.kind + ) / 12 - kindergeld__satz + + satz_ohne_kindersofortzuschlag = max( + current_formula, satz_vorjahr_ohne_kindersofortzuschlag + ) + return satz_ohne_kindersofortzuschlag + arbeitslosengeld_2__kindersofortzuschlag + + +@policy_function(start_date="2005-01-01") def betrag_m_bg( anspruchshöhe_m_bg: float, vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, anzahl_rentenbezieher_hh: int, ) -> float: - """Aggregate child benefit on household level. - - Parameters - ---------- - anspruchshöhe_m_bg - See :func:`anspruchshöhe_m_bg`. - vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg - See :func:`vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg - See :func:`vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg`. - anzahl_rentenbezieher_hh - See :func:`anzahl_rentenbezieher_hh`. - - Returns - ------- - - """ + """Amount of Kinderzuschlag at the Bedarfsgemeinschaft level.""" if ( (not vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg) and ( @@ -40,50 +87,22 @@ def betrag_m_bg( return out -@policy_function() +@policy_function(start_date="2005-01-01") def anspruchshöhe_m( anspruchshöhe_m_bg: float, arbeitslosengeld_2__anzahl_personen_bg: int, ) -> float: - """Kinderzuschlag on individual level. - - Target necessary for aggregation to wthh level. - - Parameters - ---------- - anspruchshöhe_m_bg - See :func:`anspruchshöhe_m_bg`. - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - - Returns - ------- - - """ + """Kinderzuschlag claim per member of the Bedarfsgemeinschaft.""" return anspruchshöhe_m_bg / arbeitslosengeld_2__anzahl_personen_bg -@policy_function() +@policy_function(start_date="2005-01-01") def anspruchshöhe_m_bg( basisbetrag_m_bg: float, vermögen_bg: float, vermögensfreibetrag_bg: float, ) -> float: - """Set preliminary child benefit to zero if it exceeds the wealth exemption. - - Parameters - ---------- - basisbetrag_m_bg - See :func:`basisbetrag_m_bg`. - vermögen_bg - See basic input variable :ref:`vermögen_bg <vermögen_bg>`. - vermögensfreibetrag_bg - See :func:`vermögensfreibetrag_bg`. - - Returns - ------- - - """ + """Kinderzuschlag claim at the Bedarfsgemeinschaft level.""" if vermögen_bg > vermögensfreibetrag_bg: out = max( @@ -95,49 +114,65 @@ def anspruchshöhe_m_bg( return out -@policy_function(end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg") +@policy_function( + start_date="2005-01-01", end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg" +) def vermögensfreibetrag_bg_bis_2022( - arbeitslosengeld_2__freibetrag_vermögen_bg: float, + arbeitslosengeld_2__vermögensfreibetrag_bg: float, ) -> float: - """Wealth exemptions for Kinderzuschlag until 2022. + """Wealth exemptions for Kinderzuschlag until 2022.""" - Parameters - ---------- - arbeitslosengeld_2__freibetrag_vermögen_bg - See :func:`arbeitslosengeld_2__freibetrag_vermögen_bg`. + return arbeitslosengeld_2__vermögensfreibetrag_bg - Returns - ------- - """ +@policy_function(start_date="2023-01-01", leaf_name="vermögensfreibetrag_bg") +def vermögensfreibetrag_bg_ab_2023( + arbeitslosengeld_2__vermögensfreibetrag_in_karenzzeit_bg: float, +) -> float: + """Wealth exemptions for Kinderzuschlag since 2023.""" - return arbeitslosengeld_2__freibetrag_vermögen_bg + return arbeitslosengeld_2__vermögensfreibetrag_in_karenzzeit_bg -@policy_function(start_date="2023-01-01", leaf_name="vermögensfreibetrag_bg") -def vermögensfreibetrag_bg_ab_2023( - arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg: float, +@policy_function( + start_date="2005-01-01", + end_date="2008-09-30", + leaf_name="basisbetrag_m_bg", +) +def basisbetrag_m_bg_check_maximales_netteinkommen( + nettoeinkommen_eltern_m_bg: float, + maximales_nettoeinkommen_m_bg: float, + basisbetrag_kind_m_bg: float, + anzurechnendes_einkommen_eltern_m_bg: float, + arbeitslosengeld_2__anzahl_personen_bg: int, ) -> float: - """Wealth exemptions for Kinderzuschlag since 2023. + """Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or + Arbeitslosengeld 2 applies will be checked later. - Parameters - ---------- - arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg - See :func:`arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg`. + To be eligible for Kinderzuschlag, net income needs to be below the maximum income + threshold. - Returns - ------- + Kinderzuschlag is only paid out if parents are part of the BG + (arbeitslosengeld_2__anzahl_personen_bg > 1). """ - return arbeitslosengeld_2__freibetrag_vermögen_in_karenzzeit_bg + if ( + nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg + ) and arbeitslosengeld_2__anzahl_personen_bg > 1: + out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) + else: + out = 0.0 + + return out @policy_function( + start_date="2008-10-01", end_date="2019-06-30", leaf_name="basisbetrag_m_bg", ) -def basisbetrag_m_bg_check_eink_max( +def basisbetrag_m_bg_check_mindestbruttoeinkommen_und_maximales_nettoeinkommen( bruttoeinkommen_eltern_m_bg: float, nettoeinkommen_eltern_m_bg: float, mindestbruttoeinkommen_m_bg: float, @@ -156,29 +191,8 @@ def basisbetrag_m_bg_check_eink_max( Kinderzuschlag is only paid out if parents are part of the BG (arbeitslosengeld_2__anzahl_personen_bg > 1). - Parameters - ---------- - bruttoeinkommen_eltern_m_bg - See :func:`bruttoeinkommen_eltern_m_bg`. - nettoeinkommen_eltern_m_bg - See :func:`nettoeinkommen_eltern_m_bg`. - mindestbruttoeinkommen_m_bg - See :func:`mindestbruttoeinkommen_m_bg`. - maximales_nettoeinkommen_m_bg - See :func:`maximales_nettoeinkommen_m_bg`. - basisbetrag_kind_m_bg - See :func:`basisbetrag_kind_m_bg`. - anzurechnendes_einkommen_eltern_m_bg - See :func:`anzurechnendes_einkommen_eltern_m_bg`. - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - - Returns - ------- - """ - # Check if parental income is in income range for child benefit. if ( (bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg) and (nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg) @@ -191,8 +205,8 @@ def basisbetrag_m_bg_check_eink_max( return out -@policy_function(start_date="2019-07-01") -def basisbetrag_m_bg( +@policy_function(start_date="2019-07-01", leaf_name="basisbetrag_m_bg") +def basisbetrag_m_bg_check_mindestbruttoeinkommen( bruttoeinkommen_eltern_m_bg: float, mindestbruttoeinkommen_m_bg: float, basisbetrag_kind_m_bg: float, @@ -208,25 +222,6 @@ def basisbetrag_m_bg( Kinderzuschlag is only paid out if parents are part of the BG (arbeitslosengeld_2__anzahl_personen_bg > 1). - - Parameters - ---------- - hh_id - See basic input variable :ref:`hh_id <hh_id>`. - bruttoeinkommen_eltern_m_bg - See :func:`bruttoeinkommen_eltern_m_bg`. - mindestbruttoeinkommen_m_bg - See :func:`mindestbruttoeinkommen_m_bg`. - basisbetrag_kind_m_bg - See :func:`basisbetrag_kind_m_bg`. - anzurechnendes_einkommen_eltern_m_bg - See :func:`anzurechnendes_einkommen_eltern_m_bg`. - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - - Returns - ------- - """ if ( bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg @@ -238,41 +233,20 @@ def basisbetrag_m_bg( return out -@policy_function() +@policy_function(start_date="2005-01-01") def basisbetrag_kind_m( kindergeld__grundsätzlich_anspruchsberechtigt: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, arbeitslosengeld_2__anrechnungsfreies_einkommen_m: float, - kinderzuschl_params: dict, + satz: float, + entzugsrate_kindeseinkommen: float, ) -> float: - """Child benefit after children income for each eligible child is considered. - - (§6a (3) S.3 BKGG) - - Parameters - ---------- - kindergeld__grundsätzlich_anspruchsberechtigt - See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - unterhalt__tatsächlich_erhaltener_betrag_m - See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - arbeitslosengeld_2__anrechnungsfreies_einkommen_m - See :func:`arbeitslosengeld_2__anrechnungsfreies_einkommen_m`. - kinderzuschl_params - See params documentation :ref:`kinderzuschl_params <kinderzuschl_params>`. - - Returns - ------- - - """ + """Kinderzuschlag after income for each possibly eligible child is considered.""" out = kindergeld__grundsätzlich_anspruchsberechtigt * ( - kinderzuschl_params["maximum"] - - kinderzuschl_params["entzugsrate_kind"] + satz + - entzugsrate_kindeseinkommen * ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + unterhalt__tatsächlich_erhaltener_betrag_m diff --git a/src/_gettsim/parameters/kinderzuschl.yaml b/src/_gettsim/kinderzuschlag/kinderzuschlag.yaml similarity index 54% rename from src/_gettsim/parameters/kinderzuschl.yaml rename to src/_gettsim/kinderzuschlag/kinderzuschlag.yaml index 141e3a51fd..9ad12a1426 100644 --- a/src/_gettsim/parameters/kinderzuschl.yaml +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.yaml @@ -1,104 +1,69 @@ --- -maximum: +satz: name: - de: Maximale Höhe des Kinderzuschlags - en: Maximum additional child benefit + de: Maximaler Kinderzuschlagsatz pro Kind + en: Maximum amount of Kinderzuschlag per child description: de: § 6a (2) BKGG. Betrag pro Kind en: Amount per child. - unit: Euro + unit: Euros reference_period: Month + type: scalar 2005-01-01: - scalar: 140 + value: 140 reference: Art. 46 G. v. 24.12.2003 BGBl. I S. 2954. 2017-01-01: - scalar: 170 + value: 170 reference: Art. 12 G. v. 20.12.2016 BGBl. I S. 3000. 2019-07-01: - scalar: 185 + value: 185 reference: Art. 1 G. v. 29.04.2019 BGBl. I S. 530. note: For 2020, Art. 2 Nr. 4 G. v. 29.04.2019 BGBl. I S. 530. 2021-01-01: - scalar: null - reference: § 6a (2) BKGG - note: Ab 2021 wird der Betrag aus anderen Parametern berechnet. + note: By law, 2021, the value is being calculated base on other parameters. 2023-01-01: - scalar: 250 + value: 250 reference: Art. 6 G. v. 08.12.2022 BGBl. I S. 2230. note: Regelung für das Kalenderjahr 2023, abweichend von § 6a Absatz 2. 2024-01-01: - scalar: 292 - reference: null - note: >- - There is no law or decree that explicitly sets this parameter; hence, it must be - calculated according to § 6a (2) BKGG. Satz 1 und 2: (6604-340)/12-250=272. KiZ - Höchstbetrag nach Satz 3: max(272,224)=272. Plus KiZ Sofortzuschlag nach Satz 4: - 20. - 2025-01-01: - scalar: 297 - reference: null - note: >- - There is no law or decree that explicitly sets this parameter; hence, it must be - calculated according to § 6a (2) BKGG. Satz 1 und 2: (6648-348)/12-255=270. KiZ - Höchstbetrag nach Satz 3: max(270,272)=272. Plus KiZ Sofortzuschlag nach Satz 4: - 25. - 2026-01-01: - scalar: 297 - reference: null - note: >- - There is no law or decree that explicitly sets this parameter; hence, it must be - calculated according to § 6a (2) BKGG. Satz 1 und 2: (6696-348)/12-259=270. KiZ - Höchstbetrag nach Satz 3: max(270,272)=272. Plus KiZ Sofortzuschlag nach Satz 4: - 25. -kindersofortzuschl: - name: - de: Kindersofortzuschlag für Kinderzuschlag - en: Instant surcharge for children for additional child benefit - description: - de: >- - Mit Einführung des Sofortzuschlags zum 1. Juli 2022 - steigt der Höchstbetrag im Kinderzuschlag um 20 Euro. - en: >- - With the introduction of the immediate supplement from July 1, 2022, - the maximum amount in the child supplement increases by 20 Euro. - unit: Euro - reference: § 6a Abs. 2 Satz 4 BKGG - 2022-07-01: - scalar: 20 - 2023-01-01: - scalar: null - note: Included in maximum Kinderzuschlag since 2023. -min_eink_paare: + note: Back to formula. +satz_vorjahr_ohne_kindersofortzuschlag: name: - de: Mindesteinkommen für Paare - en: Minimum income to be eligible for add. child benefit (couples) + de: Kinderzuschlagsatz pro Kind im Vorjahr + en: Maximum amount of Kinderzuschlag per child in the previous year description: - de: § 6a (1) Nr. 2 BKGG. - en: null - unit: Euro + de: § 6a (2) BKGG legt fest, dass der Kinderzuschlag nicht sinken darf + en: § 6a (2) BKGG sets that the Kinderzuschlag cannot decrease. + unit: Euros reference_period: Month - 2005-01-01: - scalar: 0 - note: kein expliziter Wert im Gesetz. - 2008-10-01: - scalar: 900 - reference: Art. 1 G. v. 24.09.2008 BGBl. I S. 1854. -min_eink_alleinerz: + type: scalar + 2021-01-01: + value: 185 + 2022-01-01: + value: 224 + 2023-01-01: + note: Irrelevant because Kinderzuschlag was set arbitrarily. + 2024-01-01: + value: 250 + 2025-01-01: + value: 272 + 2026-01-01: + value: 272 +mindesteinkommen: name: - de: Mindesteinkommen für Alleinerziehende - en: Minimum income for single parents + de: Mindesteinkommen für Anspruchsberechtigung + en: Minimum income to be eligible for Kinderzuschlag description: de: § 6a (1) Nr. 2 BKGG. en: null - unit: Euro + unit: Euros reference_period: Month - 2005-01-01: - scalar: 0 - note: kein expliziter Wert im Gesetz. + type: dict 2008-10-01: - scalar: 600 + single: 600 + paar: 900 reference: Art. 1 G. v. 24.09.2008 BGBl. I S. 1854. -entzugsrate_eltern: +entzugsrate_elterneinkommen: name: de: Minderungsrate durch Einkommen der Eltern über BMG en: Transfer withdrawal rate for parent's income @@ -110,19 +75,21 @@ entzugsrate_eltern: berücksichtigt. en: null unit: Share + reference_period: null + type: scalar 2005-01-01: - scalar: 0.7 + value: 0.7 reference: Art. 46 G. v. 24.12.2003 BGBl. I. S. 2954. 2008-10-01: - scalar: 0.5 + value: 0.5 reference: Art. 1 G. v. 24.09.2008 BGBl. I S. 1854. 2020-01-01: - scalar: 0.45 + value: 0.45 reference: Art. 1 G. v. 29.04.2019 BGBl. I S. 530. -entzugsrate_kind: +entzugsrate_kindeseinkommen: name: de: Minderungsrate durch Einkommen des Kindes - en: Rate at which child income is deducted + en: Rate at which benefit is reduced by child income description: de: >- § 6a (3) BKGG. Einkommen des Kindes beinhaltet auch Unterhalt und @@ -130,18 +97,20 @@ entzugsrate_kind: en: >- Child alimony and alimony advance payments are also attributed to the child. unit: Share + reference_period: null + type: scalar 2005-01-01: - scalar: 1 + value: 1 reference: Art. 46 G. v. 24.12.2003 BGBl. I. S. 2954. 2019-07-01: - scalar: 0.45 + value: 0.45 reference: Art. 1 G. v. 29.04.2019 BGBl. I S. 530. -existenzminimum: +parameter_existenzminimum: name: de: >- Höhen des Existenzminimums, festgelegt im Existenzminimumsbericht der Bundesregierung. - en: null + en: Subsistence levels as calculated by the government. description: de: >- Berechnet für jeweils zwei Jahre die Höhe der steuerfrei zu stellenden @@ -149,258 +118,284 @@ existenzminimum: en: >- Every two years, the government calculates the subsistence levels 'to be allowed from taxation'. These form the basis for a number of kiz parameters. - unit: Euro + unit: Euros reference_period: Year + type: require_converter 2005-01-01: regelsatz: single: 4164 - paare: 7488 - kinder: 2688 + paar: 7488 + kind: 2688 kosten_der_unterkunft: single: 2592 - paare: 3984 - kinder: 804 + paar: 3984 + kind: 804 heizkosten: single: 600 - paare: 768 - kinder: 156 + paar: 768 + kind: 156 reference: 5. Existenzminimumsbericht, Bundestag Drucksache 15/2462, Übersicht 3 2008-01-01: regelsatz: single: 4140 - paare: 7464 - kinder: 2676 + paar: 7464 + kind: 2676 kosten_der_unterkunft: single: 2364 - paare: 4020 - kinder: 804 + paar: 4020 + kind: 804 heizkosten: single: 636 - paare: 792 - kinder: 168 + paar: 792 + kind: 168 reference: 6. Existenzminimumsbericht, Bundestag Drucksache 16/3265, Übersicht 3 2010-01-01: regelsatz: single: 4368 - paare: 7860 - kinder: 2820 + paar: 7860 + kind: 2820 kosten_der_unterkunft: single: 2520 - paare: 4164 - kinder: 840 + paar: 4164 + kind: 840 heizkosten: single: 768 - paare: 972 - kinder: 204 + paar: 972 + kind: 204 reference: 7. Existenzminimumsbericht, Bundestag Drucksache 16/11065, Übersicht 3 2012-01-01: regelsatz: single: 4488 - paare: 8064 - kinder: 2988 + paar: 8064 + kind: 2988 bildung_und_teilhabe: - kinder: 228 + kind: 228 kosten_der_unterkunft: single: 2724 - paare: 4344 - kinder: 876 + paar: 4344 + kind: 876 heizkosten: single: 684 - paare: 864 - kinder: 180 + paar: 864 + kind: 180 reference: 8. Existenzminimumsbericht, Bundestag Drucksache 17/5550, Übersicht 4 2013-01-01: + updates_previous: true regelsatz: single: 4584 - paare: 8064 - kinder: 2988 - bildung_und_teilhabe: - kinder: 228 + paar: 8064 + kind: 2988 kosten_der_unterkunft: single: 2796 - paare: 4344 - kinder: 876 + paar: 4344 + kind: 876 heizkosten: single: 744 - paare: 864 - kinder: 180 + paar: 864 + kind: 180 reference: >- 9. Existenzminimumsbericht, Bundestag Drucksache 17/5550, Übersicht 5. Werte nur für Singles anders 2014-01-01: + updates_previous: true regelsatz: single: 4680 - paare: 8448 - kinder: 3096 - bildung_und_teilhabe: - kinder: 228 + paar: 8448 + kind: 3096 kosten_der_unterkunft: single: 2868 - paare: 4560 - kinder: 912 + paar: 4560 + kind: 912 heizkosten: single: 804 - paare: 1008 - kinder: 204 + paar: 1008 + kind: 204 reference: 9. Existenzminimumsbericht, Bundestag Drucksache 17/5550, Übersicht 5. 2015-01-01: + updates_previous: true regelsatz: single: 4788 - paare: 8448 - kinder: 3168 - bildung_und_teilhabe: - kinder: 228 + kind: 3168 kosten_der_unterkunft: single: 2988 - paare: 4560 - kinder: 936 + kind: 936 heizkosten: single: 696 - paare: 1008 - kinder: 180 - reference: >- - 10. Existenzminimumsbericht, Bundestag Drucksache 17/5550, - Übersicht 4. Werte für Paare unverändert. + kind: 180 + reference: 10. Existenzminimumsbericht, Bundestag Drucksache 17/5550, Übersicht 4. 2016-01-01: + updates_previous: true regelsatz: single: 4872 - paare: 8784 - kinder: 3228 - bildung_und_teilhabe: - kinder: 228 + paar: 8784 + kind: 3228 kosten_der_unterkunft: single: 3060 - paare: 4788 - kinder: 960 + paar: 4788 + kind: 960 heizkosten: single: 720 - paare: 900 - kinder: 192 + paar: 900 + kind: 192 reference: 10. Existenzminimumsbericht, Bundestag Drucksache 17/5550, Übersicht 4. 2017-01-01: + updates_previous: true regelsatz: single: 4908 - paare: 8784 - kinder: 3336 - bildung_und_teilhabe: - kinder: 228 + kind: 3336 kosten_der_unterkunft: single: 3312 - paare: 4788 - kinder: 996 + kind: 996 heizkosten: single: 600 - paare: 900 - kinder: 156 + kind: 156 reference: 11. Existenzminimumsbericht, Bundestag Drucksache 18/10220, Übersicht 4. - note: Werte für Paare unverändert. 2018-01-01: + updates_previous: true regelsatz: single: 4968 - paare: 8952 - kinder: 3372 - bildung_und_teilhabe: - kinder: 228 + paar: 8952 + kind: 3372 kosten_der_unterkunft: single: 3396 - paare: 5088 - kinder: 1020 + paar: 5088 + kind: 1020 heizkosten: single: 636 - paare: 816 - kinder: 168 + paar: 816 + kind: 168 reference: 11. Existenzminimumsbericht, Bundestag Drucksache 18/10220, Übersicht 4. 2019-01-01: + updates_previous: true regelsatz: single: 5088 - paare: 8952 - kinder: 3456 - bildung_und_teilhabe: - kinder: 228 + paar: 8952 + kind: 3456 kosten_der_unterkunft: single: 3468 - paare: 5088 - kinder: 1044 + paar: 5088 + kind: 1044 heizkosten: single: 612 - paare: 816 - kinder: 168 + paar: 816 + kind: 168 reference: 12. Existenzminimumsbericht, Bundestag Drucksache 19/5400, Übersicht 4. 2020-01-01: + updates_previous: true regelsatz: single: 5196 - paare: 9360 - kinder: 3528 - bildung_und_teilhabe: - kinder: 228 + paar: 9360 + kind: 3528 kosten_der_unterkunft: single: 3552 - paare: 5328 - kinder: 1068 + paar: 5328 + kind: 1068 heizkosten: single: 660 - paare: 852 - kinder: 180 + paar: 852 + kind: 180 reference: 12. Existenzminimumsbericht, Bundestag Drucksache 19/5400, Übersicht 4. 2021-01-01: regelsatz: single: 5352 - paare: 9360 - kinder: 3780 + paar: 9360 + kind: 3780 bildung_und_teilhabe: - kinder: 324 + kind: 324 kosten_der_unterkunft: single: 3612 - paare: 5328 - kinder: 1092 + paar: 5328 + kind: 1092 heizkosten: single: 780 - paare: 852 - kinder: 216 + paar: 852 + kind: 216 reference: 13. Existenzminimumsbericht, Bundestag Drucksache 19/22800, Übersicht 4. 2022-01-01: + updates_previous: true regelsatz: single: 5400 - paare: 9720 - kinder: 3816 - bildung_und_teilhabe: - kinder: 324 + paar: 9720 + kind: 3816 kosten_der_unterkunft: single: 3684 - paare: 5520 - kinder: 1104 + paar: 5520 + kind: 1104 heizkosten: single: 804 - paare: 1080 - kinder: 216 + paar: 1080 + kind: 216 reference: 13. Existenzminimumsbericht, Bundestag Drucksache 19/22800, Übersicht 4. 2023-01-01: - deviation_from: previous + updates_previous: true regelsatz: single: 6024 - kinder: 4248 + kind: 4248 bildung_und_teilhabe: - kinder: 336 + kind: 336 kosten_der_unterkunft: single: 3828 - kinder: 1152 + kind: 1152 heizkosten: single: 1056 - kinder: 288 + kind: 288 reference: 14. Existenzminimumsbericht, Bundestag Drucksache 20/4443, Übersicht 4. 2024-01-01: regelsatz: single: 6444 - paare: 11592 - kinder: 4548 + paar: 11592 + kind: 4764 # 4548 bildung_und_teilhabe: - kinder: 336 + kind: 340 # 336 kosten_der_unterkunft: single: 3924 - paare: 5892 - kinder: 1188 + paar: 5892 + kind: 1188 heizkosten: single: 1104 - paare: 1500 - kinder: 312 - reference: 14. Existenzminimumsbericht, Bundestag Drucksache 20/4443, Übersicht 4. + paar: 1500 + kind: 312 + reference: V. v. 24.10.2023 BGBl. 2023 I Nr. 287 + note: >- + Differs from 14. Existenzminimumsbericht, values are derived based on the + Regelbedarfsstufen-Fortschreibungsverordnung 2024 linked above: + 12 * (6 · 357 + 8 · 390 + 4 · 471) / 18 = 4764. BuT similar. + 2025-01-01: + updates_previous: true + regelsatz: + single: 6756 + kind: 4764 + bildung_und_teilhabe: + kind: 348 + kosten_der_unterkunft: + single: 4092 + kind: 1236 + heizkosten: + single: 1092 + kind: 300 + reference: 15. Existenzminimumsbericht, Bundestag Drucksache 20/13550, Übersicht 4. + 2026-01-01: + updates_previous: true + kosten_der_unterkunft: + single: 4212 + paar: 6324 + kind: 1272 + heizkosten: + single: 1128 + paar: 1524 + kind: 312 + reference: 15. Existenzminimumsbericht, Bundestag Drucksache 20/13550, Übersicht 4. +wohnbedarf_anteil_berücksichtigte_kinder: + name: + de: Bei der Berechnung der Wohnbedarfsanteile maximal berücksichtigte Kinder + en: >- + Maximum number of children which is considered when calculating shares of housing + costs + description: + de: § 6a Abs. 5 S. 3 BKGG + en: § 6a Abs. 5 S. 3 BKGG + unit: null + reference_period: null + type: scalar + 2005-01-01: + value: 10 diff --git a/src/_gettsim/lohnsteuer/__init__.py b/src/_gettsim/lohnsteuer/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/lohnsteuer/__init__.py +++ b/src/_gettsim/lohnsteuer/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 3b36cd14e0..986505e189 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -1,6 +1,16 @@ """Income relevant for withholding tax on earnings (Lohnsteuer).""" -from ttsim import RoundingSpec, policy_function +from __future__ import annotations + +from typing import Any + +from ttsim import ( + PiecewisePolynomialParamValue, + RoundingSpec, + param_function, + piecewise_polynomial, + policy_function, +) @policy_function(rounding_spec=RoundingSpec(base=1, direction="down")) @@ -8,250 +18,208 @@ def einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, steuerklasse: int, vorsorgepauschale_y: float, - eink_st_abzuege_params: dict, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, + einkommensteuer__abzüge__alleinerziehendenfreibetrag_basis: float, + einkommensteuer__abzüge__sonderausgabenpauschbetrag: float, ) -> float: - """Calculate tax base for Lohnsteuer (withholding tax on earnings). - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - steuerklasse: - See :func:`steuerklasse` - eink_st_abzuege_params: - See :func:`eink_st_abzuege_params` - vorsorgepauschale_y - See :func:`vorsorgepauschale_y` - - Returns - ------- - - """ - entlastung_freibetrag_alleinerz = (steuerklasse == 2) * eink_st_abzuege_params[ - "alleinerziehendenfreibetrag" - ] - + """Calculate tax base for Lohnsteuer (withholding tax on earnings).""" if steuerklasse == 6: - werbungskosten = 0 + werbungskosten = 0.0 else: - werbungskosten = eink_st_abzuege_params["werbungskostenpauschale"] + werbungskosten = einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale if steuerklasse == 6: - sonderausgaben = 0 + sonderausgaben = 0.0 + else: + sonderausgaben = einkommensteuer__abzüge__sonderausgabenpauschbetrag + + if steuerklasse == 2: + alleinerziehendenfreibetrag = ( + einkommensteuer__abzüge__alleinerziehendenfreibetrag_basis + ) else: - sonderausgaben = eink_st_abzuege_params["sonderausgabenpauschbetrag"]["single"] + alleinerziehendenfreibetrag = 0.0 - # Zu versteuerndes Einkommen / tax base for Lohnsteuer. - out = max( + return max( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - werbungskosten - sonderausgaben - - entlastung_freibetrag_alleinerz + - alleinerziehendenfreibetrag - vorsorgepauschale_y, 0.0, ) - return out + +@policy_function(start_date="2010-01-01") +def vorsorge_krankenversicherungsbeiträge_option_a( + sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y: float, + steuerklasse: int, + vorsorgepauschale_mindestanteil: float, + maximal_absetzbare_krankenversicherungskosten: dict[str, float], +) -> float: + """Option a for calculating deductible health insurance contributions. + + This function calculates option a where at least 12% of earnings can be deducted, + but only up to a certain threshold. + + """ + + vorsorge_krankenversicherungsbeiträge_option_a_basis = ( + vorsorgepauschale_mindestanteil + * sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y + ) + + if steuerklasse == 3: + vorsorge_krankenversicherungsbeiträge_option_a_max = ( + maximal_absetzbare_krankenversicherungskosten["steuerklasse_3"] + ) + else: + vorsorge_krankenversicherungsbeiträge_option_a_max = ( + maximal_absetzbare_krankenversicherungskosten["steuerklasse_nicht_3"] + ) + + return min( + vorsorge_krankenversicherungsbeiträge_option_a_max, + vorsorge_krankenversicherungsbeiträge_option_a_basis, + ) @policy_function( start_date="2015-01-01", end_date="2018-12-31", - leaf_name="vorsorge_krankenv_option_b", + leaf_name="vorsorge_krankenversicherungsbeiträge_option_b", ) -def vorsorge_krankenv_option_b_ab_2015_bis_2018( - sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, +def vorsorge_krankenversicherungsbeiträge_option_b_ab_2015_bis_2018( + sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y: float, sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, - sozialversicherung__pflege__beitrag__beitragssatz: float, - ges_krankenv_params: dict, + sozialversicherung__pflege__beitrag__beitragssatz_arbeitnehmer: float, + sozialversicherung__kranken__beitrag__parameter_beitragssatz: dict[str, float], ) -> float: - """For health care deductions, there are two ways to calculate - the deductions: "Option a" and "Option b". - This function calculates option b where the actual contributions - are used. - - Parameters - ---------- - sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: - See :func:`sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y`. - sozialversicherung__kranken__beitrag__zusatzbeitragssatz - See :func:`sozialversicherung__kranken__beitrag__zusatzbeitragssatz`. - sozialversicherung__pflege__beitrag__beitragssatz: - See :func:`sozialversicherung__pflege__beitrag__beitragssatz`. - - - Returns - ------- - Health care deductions for withholding taxes option b + """Option b for calculating deductible health insurance cont. + For health care deductions, there are two ways to calculate the deductions: "Option + a" and "Option b". This function calculates option b where the actual contributions + are used. """ - out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( - ges_krankenv_params["beitr_satz"]["ermäßigt"] / 2 - + sozialversicherung__kranken__beitrag__zusatzbeitragssatz - + sozialversicherung__pflege__beitrag__beitragssatz + return ( + sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y + * ( + sozialversicherung__kranken__beitrag__parameter_beitragssatz["ermäßigt"] / 2 + + sozialversicherung__kranken__beitrag__zusatzbeitragssatz + + sozialversicherung__pflege__beitrag__beitragssatz_arbeitnehmer + ) ) - return out - @policy_function( start_date="2019-01-01", - leaf_name="vorsorge_krankenv_option_b", + leaf_name="vorsorge_krankenversicherungsbeiträge_option_b", ) -def vorsorge_krankenv_option_b_ab_2019( - sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, +def vorsorge_krankenversicherungsbeiträge_option_b_ab_2019( + sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y: float, sozialversicherung__kranken__beitrag__zusatzbeitragssatz: float, - sozialversicherung__pflege__beitrag__beitragssatz: float, - ges_krankenv_params: dict, + sozialversicherung__pflege__beitrag__beitragssatz_arbeitnehmer: float, + sozialversicherung__kranken__beitrag__parameter_beitragssatz: dict[str, float], ) -> float: - """For health care deductions, there are two ways to calculate - the deductions: "Option a" and "Option b". - This function calculates option b where the actual contributions - are used. - - Parameters - ---------- - sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: - See :func:`sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y`. - sozialversicherung__kranken__beitrag__zusatzbeitragssatz - See :func:`sozialversicherung__kranken__beitrag__zusatzbeitragssatz`. - sozialversicherung__pflege__beitrag__beitragssatz: - See :func:`sozialversicherung__pflege__beitrag__beitragssatz`. - ges_krankenv_params: - See params documentation :ref:`ges_krankenv_params` - - - Returns - ------- - Health care deductions for withholding taxes option b + """Option b for calculating deductible health insurance cont. + For health care deductions, there are two ways to calculate the deductions: "Option + a" and "Option b". This function calculates option b where the actual contributions + are used. """ - out = sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y * ( - ges_krankenv_params["beitr_satz"]["ermäßigt"] / 2 - + sozialversicherung__kranken__beitrag__zusatzbeitragssatz / 2 - + sozialversicherung__pflege__beitrag__beitragssatz + return ( + sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y + * ( + sozialversicherung__kranken__beitrag__parameter_beitragssatz["ermäßigt"] / 2 + + sozialversicherung__kranken__beitrag__zusatzbeitragssatz / 2 + + sozialversicherung__pflege__beitrag__beitragssatz_arbeitnehmer + ) ) - return out +@param_function(start_date="2005-01-01", end_date="2022-12-31") +def einführungsfaktor_rentenversicherungsaufwendungen( + evaluationsjahr: int, + parameter_einführungsfaktor_rentenversicherungsaufwendungen: PiecewisePolynomialParamValue, +) -> dict[str, Any]: + """Calculate introductory factor for pension expense deductions which depends on the + current year as follows: -@policy_function() -def vorsorge_krankenv_option_a( - sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y: float, - steuerklasse: int, - eink_st_abzuege_params: dict, -) -> float: - """For health care deductions, there are two ways to calculate - the deuctions. - This function calculates option a where at least 12% of earnings - of earnings can be deducted, but only up to a certain threshold. + In the years 2005-2025 the share of deductible contributions increases by + 2 percentage points each year from 60% in 2005 to 100% in 2025. - Parameters - ---------- - sozialversicherung__kranken__beitrag__betrag_regulär_beschäftigt_m: - See :func:`sozialversicherung__kranken__beitrag__betrag_regulär_beschäftigt_m` - steuerklasse: - See basic input variable :ref:`steuerklasse <steuerklasse>`. - eink_st_abzuege_params: - See params documentation :ref:`eink_st_abzuege_params` + Reference: § 10 Abs. 1 Nr. 2 Buchst. a und b EStG - Returns - ------- - Health care deductions for withholding taxes option a - """ - - vorsorge_krankenv_option_a_basis = ( - eink_st_abzuege_params["vorsorgepauschale_mindestanteil"] - * sozialversicherung__kranken__beitrag__einkommen_regulär_beschäftigt_y + return piecewise_polynomial( + x=evaluationsjahr, + parameters=parameter_einführungsfaktor_rentenversicherungsaufwendungen, ) - if steuerklasse == 3: - vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ - "vorsorgepauschale_kv_max" - ]["steuerklasse_3"] - else: - vorsorge_krankenv_option_a_max = eink_st_abzuege_params[ - "vorsorgepauschale_kv_max" - ]["steuerklasse_nicht3"] - - out = min(vorsorge_krankenv_option_a_max, vorsorge_krankenv_option_a_basis) - - return out - @policy_function( start_date="2010-01-01", + end_date="2022-12-31", leaf_name="vorsorgepauschale_y", rounding_spec=RoundingSpec(base=1, direction="up"), ) -def vorsorgepauschale_y_ab_2010( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - wohnort_ost: bool, - ges_rentenv_params: dict, - vorsorge_krankenv_option_a: float, - vorsorge_krankenv_option_b: float, - eink_st_abzuege_params: dict, +def vorsorgepauschale_y_ab_2010_bis_2022( + sozialversicherung__rente__beitrag__einkommen_y: float, + sozialversicherung__rente__beitrag__beitragssatz: float, + vorsorge_krankenversicherungsbeiträge_option_a: float, + vorsorge_krankenversicherungsbeiträge_option_b: float, + einführungsfaktor_rentenversicherungsaufwendungen: float, ) -> float: """Calculate Vorsorgepauschale for Lohnsteuer valid since 2010. Those are deducted from gross earnings. Idea is similar, but not identical, to Vorsorgeaufwendungen used when calculating Einkommensteuer. - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - wohnort_ost: - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - ges_krankenv_params: - See params documentation :ref:`ges_krankenv_params` - vorsorge_krankenv_option_a: - See :func:`vorsorge_krankenv_option_a` - vorsorge_krankenv_option_b: - See :func:`vorsorge_krankenv_option_b` - eink_st_abzuege_params: - See params documentation :ref:`eink_st_abzuege_params` - - - Returns - ------- - Individual Vorsorgepauschale on annual basis - """ - # 1. Rentenversicherungsbeiträge, §39b (2) Nr. 3a EStG. - if wohnort_ost: - bruttolohn_rente = min( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, - 12 * ges_rentenv_params["beitr_bemess_grenze_m"]["ost"], - ) - else: - bruttolohn_rente = min( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, - 12 * ges_rentenv_params["beitr_bemess_grenze_m"]["west"], - ) - - vorsorg_rentenv = ( - bruttolohn_rente - * ges_rentenv_params["beitr_satz"] - * eink_st_abzuege_params["vorsorgepauschale_rentenv_anteil"] + rente = ( + sozialversicherung__rente__beitrag__einkommen_y + * sozialversicherung__rente__beitrag__beitragssatz + / 2 + * einführungsfaktor_rentenversicherungsaufwendungen + ) + kranken = max( + vorsorge_krankenversicherungsbeiträge_option_a, + vorsorge_krankenversicherungsbeiträge_option_b, ) - # 2. Krankenversicherungsbeiträge, §39b (2) Nr. 3b EStG. - # For health care deductions, there are two ways to calculate - # the deuctions. - # a) at least 12% of earnings of earnings can be deducted, - # but only up to a certain threshold - # b) Take the actual contributions (usually the better option), - # but apply the reduced rate + return rente + kranken + + +@policy_function( + start_date="2023-01-01", + leaf_name="vorsorgepauschale_y", + rounding_spec=RoundingSpec(base=1, direction="up"), +) +def vorsorgepauschale_y_ab_2023( + sozialversicherung__rente__beitrag__einkommen_y: float, + sozialversicherung__rente__beitrag__beitragssatz: float, + vorsorge_krankenversicherungsbeiträge_option_a: float, + vorsorge_krankenversicherungsbeiträge_option_b: float, +) -> float: + """Calculate Vorsorgepauschale for Lohnsteuer valid since 2010. Those are deducted + from gross earnings. Idea is similar, but not identical, to Vorsorgeaufwendungen + used when calculating Einkommensteuer. + + """ - vorsorg_krankenv = max(vorsorge_krankenv_option_a, vorsorge_krankenv_option_b) + rente = ( + sozialversicherung__rente__beitrag__einkommen_y + * sozialversicherung__rente__beitrag__beitragssatz + / 2 + ) + kranken = max( + vorsorge_krankenversicherungsbeiträge_option_a, + vorsorge_krankenversicherungsbeiträge_option_b, + ) - # add both RV and KV deductions. For KV, take the larger amount. - out = vorsorg_rentenv + vorsorg_krankenv - return out + return rente + kranken @policy_function( @@ -260,4 +228,4 @@ def vorsorgepauschale_y_ab_2010( leaf_name="vorsorgepauschale_y", ) def vorsorgepauschale_y_ab_2005_bis_2009() -> float: - return 0.0 + raise NotImplementedError("Vorsorgepauschale not implemented before 2010.") diff --git a/src/_gettsim/lohnsteuer/einkommensgrenzwerte.yaml b/src/_gettsim/lohnsteuer/einkommensgrenzwerte.yaml new file mode 100644 index 0000000000..79d919b6da --- /dev/null +++ b/src/_gettsim/lohnsteuer/einkommensgrenzwerte.yaml @@ -0,0 +1,93 @@ +--- +einkommensgrenzwerte_steuerklassen_5_6: + name: + de: Einkommensgrenzen für Steuerklassen 5 und 6 + en: Thresholds for withholding tax classes 5 and 6 + description: + de: >- + § 39b Absatz 2 Satz 7 EStG + Einkommensgrenzen für Steuerklassen 5 und 6, innerhalb derer Mindest- und + Maximalsteuern festgelegt sind. + en: >- + § 39b Absatz 2 Satz 7 EStG + Thresholds for withholding tax classes 5 and 6, where minimum and maximum tax + rates apply. + unit: Euros + reference_period: Year + type: dict + 2002-01-01: + 1: 8946 + 2: 27306 + 3: 10000000 + 2004-01-01: + 1: 9228 + 2: 26072 + 3: 10000000 + 2005-01-01: + 1: 9144 + 2: 25812 + 3: 200000 + 2009-01-01: + 1: 9225 + 2: 26276 + 3: 200320 + 2010-01-01: + 1: 9429 + 2: 26441 + 3: 200584 + 2013-01-01: + 1: 9550 + 2: 26441 + 3: 200584 + 2014-01-01: + 1: 9763 + 2: 26441 + 3: 200584 + 2016-01-01: + 1: 10070 + 2: 26832 + 3: 203557 + 2017-01-01: + 1: 10240 + 2: 27029 + 3: 205043 + 2018-01-01: + 1: 10440 + 2: 27475 + 3: 208426 + 2019-01-01: + 1: 10635 + 2: 27980 + 3: 212261 + 2020-01-01: + 1: 10898 + 2: 28526 + 3: 216400 + 2021-01-01: + 1: 11237 + 2: 28959 + 3: 219690 + 2022-01-01: + 1: 11793 + 2: 29298 + 3: 222260 + 2023-01-01: + note: https://www.bundesfinanzministerium.de/Content/DE/Downloads/Steuern/Steuerarten/Lohnsteuer/Programmablaufplan/2023-02-13-geaenderte-PAP-2023-anwendung-ab-dem-1-april-2023-anlage-1.pdf?__blob=publicationFile&v=3 + 1: 12485 + 2: 31404 + 3: 222260 + 2024-01-01: + note: https://www.bundesfinanzministerium.de/Content/DE/Downloads/Steuern/Steuerarten/Lohnsteuer/Programmablaufplan/2024-02-23-geaenderte-PAP-2024-anwendung-ab-dem-1-april-2024-anlage-2.pdf?__blob=publicationFile&v=3 + 1: 13279 + 2: 33380 + 3: 222260 + 2025-01-01: + note: >- + Programmablaufplan für die maschinelle Berechnung der vom Arbeitslohn + einzubehaltenden Lohnsteuer für 2025 und Programmablaufplan für die Begrenzung der + von Versorgungsbezügen einzubehaltenden Lohnsteuer und des Solidaritätszuschlags + nach den Abkommen zur Vermeidung der Doppelbesteuerung ab 2025 + https://www.bundesfinanzministerium.de/Content/DE/Downloads/Steuern/Steuerarten/Lohnsteuer/Programmablaufplan/2024-11-22-PAP-2025_anlage.pdf?__blob=publicationFile&v=2 + 1: 13432 + 2: 33380 + 3: 222260 diff --git a/src/_gettsim/lohnsteuer/inputs.py b/src/_gettsim/lohnsteuer/inputs.py index 93e866030b..e6415b51f7 100644 --- a/src/_gettsim/lohnsteuer/inputs.py +++ b/src/_gettsim/lohnsteuer/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index 01e1859725..f08a50cf66 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -1,35 +1,28 @@ """Withholding tax on earnings (Lohnsteuer).""" +from __future__ import annotations + from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif from _gettsim.solidaritätszuschlag.solidaritätszuschlag import ( solidaritätszuschlagstarif, ) -from ttsim import policy_function +from ttsim import PiecewisePolynomialParamValue, policy_function @policy_function(vectorization_strategy="loop") def betrag_m( einkommen_y: float, - eink_st_params: dict, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, steuerklasse: int, - lohnst_params: dict, + einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], ) -> float: - """ - Withholding tax on earnings (Lohnsteuer). - - Parameters - ---------- - einkommen_y - See :func:`einkommen_y`. - steuerklasse - See :func:`steuerklasse`. - eink_st_params - See params documentation :ref:`eink_st_params`. - lohnst_params - See params documentation :ref:`lohnst_params`. - - """ - return lohnsteuerformel(einkommen_y, eink_st_params, lohnst_params, steuerklasse) + """Withholding tax on earnings (Lohnsteuer)""" + return lohnsteuerformel( + einkommen_y=einkommen_y, + parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, + einkommensgrenzwerte_steuerklassen_5_6=einkommensgrenzwerte_steuerklassen_5_6, + steuerklasse=steuerklasse, + ) @policy_function(vectorization_strategy="loop") @@ -37,89 +30,55 @@ def betrag_mit_kinderfreibetrag_m( einkommen_y: float, kinderfreibetrag_soli_y: float, steuerklasse: int, - eink_st_params: dict, - lohnst_params: dict, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], ) -> float: """Withholding tax taking child allowances into account. Same as betrag_m, but with an alternative income definition that takes child allowance into account. Important only for calculation - of soli on Lohnsteuer! - - Parameters - ---------- - einkommen_y - See :func:`einkommen_y`. - kinderfreibetrag_soli_y - See :func:`kinderfreibetrag_soli_y`. - steuerklasse - See :func:`steuerklasse`. - eink_st_params - See params documentation :ref:`eink_st_params`. - lohnst_params - See params documentation :ref:`lohnst_params`. + of Solidaritätszuschlag on Lohnsteuer! """ - - eink = max(einkommen_y - kinderfreibetrag_soli_y, 0) - - return lohnsteuerformel(eink, eink_st_params, lohnst_params, steuerklasse) + einkommen_abzüglich_kinderfreibetrag_soli = max( + einkommen_y - kinderfreibetrag_soli_y, 0 + ) + return lohnsteuerformel( + einkommen_y=einkommen_abzüglich_kinderfreibetrag_soli, + parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, + einkommensgrenzwerte_steuerklassen_5_6=einkommensgrenzwerte_steuerklassen_5_6, + steuerklasse=steuerklasse, + ) @policy_function(vectorization_strategy="loop") -def betrag_soli_y(betrag_mit_kinderfreibetrag_y: float, soli_st_params: dict) -> float: - """Solidarity surcharge on Lohnsteuer (withholding tax on earnings). - - Parameters - ---------- - betrag_mit_kinderfreibetrag_y - See :func:`betrag_mit_kinderfreibetrag_y`. - soli_st_params - See params documentation :ref:`soli_st_params <soli_st_params>`. - - Returns - Solidarity Surcharge on Lohnsteuer - ------- - - """ +def betrag_soli_y( + betrag_mit_kinderfreibetrag_y: float, + solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, +) -> float: + """Solidarity surcharge on Lohnsteuer (withholding tax on earnings).""" - return solidaritätszuschlagstarif(betrag_mit_kinderfreibetrag_y, soli_st_params) + return solidaritätszuschlagstarif( + steuer_pro_person=betrag_mit_kinderfreibetrag_y, + parameter_solidaritätszuschlag=solidaritätszuschlag__parameter_solidaritätszuschlag, + ) @policy_function(vectorization_strategy="loop") def kinderfreibetrag_soli_y( steuerklasse: int, - einkommensteuer__anzahl_kinderfreibeträge: int, - eink_st_abzuege_params: dict, + einkommensteuer__kinderfreibetrag_y: int, ) -> float: """Child Allowance (Kinderfreibetrag) for Lohnsteuer-Soli. - For the purpose of Soli on Lohnsteuer, the child allowance not only depends on the - number of children, but also on the steuerklasse - - Parameters - ---------- - steuerklasse - See :func:`steuerklasse`. - einkommensteuer__anzahl_kinderfreibeträge - See :func:`einkommensteuer__anzahl_kinderfreibeträge`. - eink_st_abzuege_params - See params documenation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - - Returns - ------- - Kinderfreibetrag for Lohnsteuer-Soli. + For the purpose of Soli on Lohnsteuer, Steuerklasse 1/2/3 gets twice the child + benefit, Steuerklasse 4 gets the child benefit once, and Steuerklasse 5/6 gets + nothing. """ - kinderfreibetrag_basis = ( - eink_st_abzuege_params["kinderfreib"]["sächl_existenzmin"] - + eink_st_abzuege_params["kinderfreib"]["beitr_erz_ausb"] - ) - - # For certain tax brackets, twice the child allowance can be deducted if steuerklasse in {1, 2, 3}: - out = kinderfreibetrag_basis * 2 * einkommensteuer__anzahl_kinderfreibeträge + out = 2 * einkommensteuer__kinderfreibetrag_y elif steuerklasse == 4: - out = kinderfreibetrag_basis * einkommensteuer__anzahl_kinderfreibeträge + out = einkommensteuer__kinderfreibetrag_y else: out = 0 return out @@ -127,8 +86,8 @@ def kinderfreibetrag_soli_y( def lohnsteuerformel( einkommen_y: float, - eink_st_params: dict, - lohnst_params: dict, + parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], steuerklasse: int, ) -> float: """ @@ -142,69 +101,67 @@ def lohnsteuerformel( twice the difference between applying the tariff on 5/4 and 3/4 of taxable income. Tax rate may not be lower than the starting statutory one. - Parameters - ---------- - einkommen_y - See :func:`einkommen_y`. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>` - lohnst_params - See params documentation :ref:`lohnst_params <lohnst_params>` - steuerklasse: - See basic input variable :ref:`steuerklasse <steuerklasse>`. - - - Returns - ------- - Individual withholding tax on monthly basis - """ - lohnsteuer_basistarif = einkommensteuertarif(einkommen_y, eink_st_params) + lohnsteuer_basistarif = einkommensteuertarif( + einkommen_y, parameter_einkommensteuertarif + ) lohnsteuer_splittingtarif = 2 * einkommensteuertarif( - einkommen_y / 2, eink_st_params + einkommen_y / 2, parameter_einkommensteuertarif ) lohnsteuer_5_6_basis = basis_für_klassen_5_6( - einkommen_y=einkommen_y, eink_st_params=eink_st_params + einkommen_y=einkommen_y, + parameter_einkommensteuertarif=parameter_einkommensteuertarif, ) - grenze_1 = lohnst_params["lohnst_einkommensgrenzen"][0] - grenze_2 = lohnst_params["lohnst_einkommensgrenzen"][1] - grenze_3 = lohnst_params["lohnst_einkommensgrenzen"][2] - lohnsteuer_grenze_1 = basis_für_klassen_5_6( - einkommen_y=grenze_1, eink_st_params=eink_st_params + einkommen_y=einkommensgrenzwerte_steuerklassen_5_6[1], + parameter_einkommensteuertarif=parameter_einkommensteuertarif, ) max_lohnsteuer = ( lohnsteuer_grenze_1 - + (einkommen_y - grenze_1) * eink_st_params["eink_st_tarif"]["rates"][0][3] + + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[1]) + * parameter_einkommensteuertarif.rates[0, 3] ) lohnsteuer_grenze_2 = basis_für_klassen_5_6( - einkommen_y=grenze_2, eink_st_params=eink_st_params + einkommen_y=einkommensgrenzwerte_steuerklassen_5_6[2], + parameter_einkommensteuertarif=parameter_einkommensteuertarif, ) - lohnsteuer_zw_grenze_2_3 = (grenze_3 - grenze_2) * eink_st_params["eink_st_tarif"][ - "rates" - ][0][3] + lohnsteuer_zw_grenze_2_3 = ( + einkommensgrenzwerte_steuerklassen_5_6[3] + - einkommensgrenzwerte_steuerklassen_5_6[2] + ) * parameter_einkommensteuertarif.rates[0, 3] lohnsteuer_klasse5_6_tmp = lohnsteuer_grenze_2 + lohnsteuer_zw_grenze_2_3 - if einkommen_y < grenze_1: + if einkommen_y < einkommensgrenzwerte_steuerklassen_5_6[1]: lohnsteuer_klasse5_6 = lohnsteuer_5_6_basis - elif grenze_1 <= einkommen_y < grenze_2: + elif ( + einkommensgrenzwerte_steuerklassen_5_6[1] + <= einkommen_y + < einkommensgrenzwerte_steuerklassen_5_6[2] + ): lohnsteuer_klasse5_6 = min( max_lohnsteuer, basis_für_klassen_5_6( - einkommen_y=einkommen_y, eink_st_params=eink_st_params + einkommen_y=einkommen_y, + parameter_einkommensteuertarif=parameter_einkommensteuertarif, ), ) - elif grenze_2 <= einkommen_y < grenze_3: + elif ( + einkommensgrenzwerte_steuerklassen_5_6[2] + <= einkommen_y + < einkommensgrenzwerte_steuerklassen_5_6[3] + ): lohnsteuer_klasse5_6 = ( lohnsteuer_grenze_2 - + (einkommen_y - grenze_2) * eink_st_params["eink_st_tarif"]["rates"][0][3] + + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[2]) + * parameter_einkommensteuertarif.rates[0, 3] ) else: lohnsteuer_klasse5_6 = ( lohnsteuer_klasse5_6_tmp - + (einkommen_y - grenze_3) * eink_st_params["eink_st_tarif"]["rates"][0][4] + + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[3]) + * parameter_einkommensteuertarif.rates[0, 4] ) if steuerklasse in {1, 2, 4}: @@ -219,7 +176,9 @@ def lohnsteuerformel( return max(out, 0.0) -def basis_für_klassen_5_6(einkommen_y: float, eink_st_params: dict) -> float: +def basis_für_klassen_5_6( + einkommen_y: float, parameter_einkommensteuertarif: PiecewisePolynomialParamValue +) -> float: """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying obtaining twice the difference between applying the factors 1.25 and 0.75 to the lohnsteuer payment. There is a also a minimum amount, which is checked @@ -233,27 +192,13 @@ def basis_für_klassen_5_6(einkommen_y: float, eink_st_params: dict) -> float: die Jahreslohnsteuer beträgt jedoch mindestens 14 Prozent des zu versteuernden Jahresbetrags. - Parameters - ---------- - - einkommen_y: - Taxable Income. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>` - - Returns - ------- - Base for Lohnsteuer for steuerklasse 5 and 6 - """ - out = max( + return max( 2 * ( - einkommensteuertarif(einkommen_y * 1.25, eink_st_params) - - einkommensteuertarif(einkommen_y * 0.75, eink_st_params) + einkommensteuertarif(einkommen_y * 1.25, parameter_einkommensteuertarif) + - einkommensteuertarif(einkommen_y * 0.75, parameter_einkommensteuertarif) ), - einkommen_y * eink_st_params["eink_st_tarif"]["rates"][0][1], + einkommen_y * parameter_einkommensteuertarif.rates[0, 1], ) - - return out diff --git a/src/_gettsim/lohnsteuer/minijob.yaml b/src/_gettsim/lohnsteuer/minijob.yaml new file mode 100644 index 0000000000..2940f997d4 --- /dev/null +++ b/src/_gettsim/lohnsteuer/minijob.yaml @@ -0,0 +1,20 @@ +--- +minijob_arbeitgeberpauschale: + name: + de: Pauschalierter Lohnsteuersatz bei geringfügiger Beschäftigung + en: Fixed income tax rate for marginal employment + description: + de: >- + Pauschalierter Lohnsteuersatz des Arbeitgebers bei geringfügiger Beschäftigung + (§40a II EStG) + en: Fixed income tax rate for marginal employment (§40a II EStG) + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 2003-04-01: + value: 0.02 + 2007-01-01: + value: 0.02 + 2022-10-01: + note: Ceased to exist diff --git a/src/_gettsim/lohnsteuer/vorsorge.yaml b/src/_gettsim/lohnsteuer/vorsorge.yaml new file mode 100644 index 0000000000..ec963c1d64 --- /dev/null +++ b/src/_gettsim/lohnsteuer/vorsorge.yaml @@ -0,0 +1,80 @@ +--- +parameter_einführungsfaktor_rentenversicherungsaufwendungen: + name: + de: Parameter zur Berechnung des Anteils absetzbarer Rentenversicherungsbeiträge + en: >- + Parameters for calculating the share of deductible pension insurance contributions + description: + de: >- + § 39b (4) EStG + Der Anteil der Rentenversicherungsbeiträge, die bei der Lohnsteuerberechnung + abgezogen werden + Funktion erst ab 2005 vorhanden. Steigt zwischen 2005 und 2025 jährlich um 4 + Prozentpunkte. 2023 wurde der Wert vorzeitig auf 100% gesetzt. + en: >- + § 39b (4) EStG + The share of pension insurance contributions deducted in the withholding tax + calculation. + rises between 2005 and 2025 by 4 percentage points annually. In 2023, it was + prematurely set to 100 percent. + unit: Share + reference_period: null + # type: require_converter + type: piecewise_linear + 2005-01-01: + 0: + lower_threshold: -inf + upper_threshold: 2005 + rate_linear: 0 + intercept_at_lower_threshold: 0.2 + 1: + lower_threshold: 2005 + upper_threshold: 2025 + rate_linear: 0.04 + intercept_at_lower_threshold: 0.2 + 2: + lower_threshold: 2025 + upper_threshold: inf + rate_linear: 0 + intercept_at_lower_threshold: 1 + 2023-01-01: + note: Prematurely set to 100% in 2023. +vorsorgepauschale_mindestanteil: + name: + de: Mindestanteil für Mindestvorsorgepauschale + en: Minimum share for Mindestvorsorgepauschale + description: + de: >- + 39b (2) Nr.3 EStG + Mindestanteil an Beiträgen zu GKV und GPV, der abgesetzt wird bei + Mindestvorsorgepauschale + en: >- + 39b (2) Nr.3 EStG + Minimum share of minimum contributions to health care and care insurance deducted + from Mindestvorsorgepauschale + unit: Share + reference_period: null + type: scalar + 2010-01-01: + value: 0.12 + reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 +maximal_absetzbare_krankenversicherungskosten: + name: + de: Höchstbetrag Mindestvorsorgepauschale + en: Maximum amount Mindestvorsorgepauschale + description: + de: >- + 39b (2) Nr.3 EStG. Depends on Steuerklasse. + Höchsbetrag für Mindestvorsorgepauschale der Beiträge zu GKV und PKV, die von der + Lohnsteuer abgesetzt werden können. + en: >- + 39b (2) Nr.3 EStG. Depends on Steuerklasse. + Maximum amount considered for Mindestvorsorgepauschale of contributions to health + care and care insurance that can be deducted from withholding tax + unit: Euros + reference_period: Year + type: dict + 2010-01-01: + steuerklasse_3: 3000 + steuerklasse_nicht_3: 1900 + reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 diff --git a/src/_gettsim/param_types.py b/src/_gettsim/param_types.py new file mode 100644 index 0000000000..80358c9c14 --- /dev/null +++ b/src/_gettsim/param_types.py @@ -0,0 +1,28 @@ +from dataclasses import dataclass + + +@dataclass(frozen=True) +class ElementExistenzminimum: + single: float + paar: float + kind: float + + +@dataclass(frozen=True) +class ElementExistenzminimumNurKind: + kind: float + + +@dataclass(frozen=True) +class ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe: + regelsatz: ElementExistenzminimum + kosten_der_unterkunft: ElementExistenzminimum + heizkosten: ElementExistenzminimum + + +@dataclass(frozen=True) +class ExistenzminimumNachAufwendungenMitBildungUndTeilhabe: + regelsatz: ElementExistenzminimum + kosten_der_unterkunft: ElementExistenzminimum + heizkosten: ElementExistenzminimum + bildung_und_teilhabe: ElementExistenzminimumNurKind diff --git a/src/_gettsim/parameters/arbeitsl_geld.yaml b/src/_gettsim/parameters/arbeitsl_geld.yaml deleted file mode 100644 index e3eda5379a..0000000000 --- a/src/_gettsim/parameters/arbeitsl_geld.yaml +++ /dev/null @@ -1,190 +0,0 @@ ---- -freibetrag: - name: - de: Freibetrag bei der Anrechnung von Nebeneinkommen - en: Income which is not deducted from unemployment benefit. - description: - de: § 155 SGB III, vorher § 141 (1) S. 1 - en: null - unit: Euro - reference_period: Month - 1999-08-01: - scalar: 161 - reference: Art. 1 G. v. 21.07.1999 BGBl. I S. 1648 - note: Originalwert 315 DM. - 2002-01-01: - scalar: 165 - reference: Art. 3 G. v. 21.12.2000 BGBl. I S. 1983 -sozialv_pausch: - name: - de: Sozialversicherungspauschale zur Berechnung des Leistungsentgelts - en: Fictitious social insurance contribution rate - description: - de: >- - § 153 (1) Nr. 1 SGB III. Wird angewendet auf das Bemessungsentgelt. ACHTUNG! Beim - Elterngeld gibt es eine ähnliche Größe. - en: null - unit: Share - 1984-01-01: - scalar: 0.1727 - reference: null - 1985-01-01: - scalar: 0.1745 - reference: null - 1986-01-01: - scalar: 0.1775 - reference: null - 1987-01-01: - scalar: 0.1774 - reference: . - 1988-01-01: - scalar: 0.1794 - reference: . - 1989-01-01: - scalar: 0.1795 - reference: null - 1990-01-01: - scalar: 0.1775 - reference: . - 1991-01-01: - scalar: 0.179 - reference: null - 1992-01-01: - scalar: 0.184 - reference: . - 1993-01-01: - scalar: 0.187 - reference: . - 1994-01-01: - scalar: 0.1955 - reference: null - 1995-01-01: - scalar: 0.1915 - reference: . - 1996-01-01: - scalar: 0.1995 - reference: . - 1997-01-01: - scalar: 0.2095 - reference: . - 1998-01-01: - scalar: 0.2105 - reference: null - 2000-01-01: - scalar: 0.20535 - reference: . - 2001-01-01: - scalar: 0.2044 - reference: . - 2002-01-01: - scalar: 0.2065 - reference: null - 2003-01-01: - scalar: 0.2105 - reference: null - 2004-01-01: - scalar: 0.2095 - reference: null - 2005-01-01: - scalar: 0.2074 - reference: null - 2006-01-01: - scalar: 0.2141 - reference: null - 2007-01-01: - scalar: 0.2075 - reference: null - 2008-01-01: - scalar: 0.20475 - reference: null - 2009-01-01: - scalar: 0.20525 - reference: null - 2010-01-01: - scalar: 0.20225 - reference: null - 2011-01-01: - scalar: 0.20625 - reference: null - 2012-01-01: - scalar: 0.21 - reference: Art. 2 G. v. 20.12.2011 BGBl. I S. 2854 - 2019-01-01: - scalar: 0.2 - reference: Art. 1 G. v. 18.12.2018 BGBl. I S. 2651 -satz_ohne_kinder: - name: - de: >- - Anteil des Arbeitslosengelds für Personen ohne Kinder (allgemeiner Leistungssatz) - en: Replacement Rate Unemployment Benefit, for childless persons. - description: - de: >- - §149 Nr. 2 SGB III, vorher § 129 (2) SGB III. Höhe des Arbeitslosengeldes im - Verhältnis zum letzten Nettoentgelt bei Personen ohne Kinder im Sinne des EStG. - en: null - unit: Share - 1998-08-01: - scalar: 0.6 - reference: Art. 1 G. v. 24.03.1997 BGBl. I S. 594 - note: Vielleicht schon vorher geändert. -satz_mit_kindern: - name: - de: Anteil des Arbeitslosengelds für Personen mit Kindern (erhöhter Leistungssatz) - en: Replacement Rate Unemployment Benefit for persons with children. - description: - de: >- - §149 Nr. 1 SGB III, vorher §129 Nr. 1 SGB III. Höhe des Arbeitslosengeldes im - Verhältnis zum letzten Nettoentgelt bei Personen mit Kindern im Sinne des EStG - en: null - 1998-08-01: - scalar: 0.67 - reference: Art. 1 G. v. 24.03.1997 BGBl. I S. 594 - note: Vielleicht schon vorher geändert. -stundengrenze: - name: - de: Stundengrenze für Bezug von Arbeitslosengeld - en: Working hours limit to receive unemployment benefit - description: - de: >- - §138 (3) SGB III, früher auch §102 (2) AFG. Grenze, ab der nicht mehr - Arbeitslosigkeit unterstellt wird. - en: null - 1969-07-01: - scalar: 20 - reference: null - 1986-01-01: - scalar: 19 - reference: Art. 1 G. v. 20.12.1985 BGBl I S. 2484 - 1989-01-01: - scalar: 18 - reference: Art. 1 G. v. 20.12.1988 BGBl I S. 2343 - 2012-04-01: - scalar: 15 - reference: Art. 2 G. v. 20.12.2011 BGBl I S. 2854 -anspruchsdauer: - name: - de: Anspruchsdauer für ALG 1. - en: Period of ALG 1 eligibility. - description: - de: >- - Dauer des Anspruchs auf ALG 1 richtet sich nach Alter und wie viele Monate - eine Person versicherungsplichtig in den letzten 5 Jahren war. - en: >- - The lenght of ALG 1 eligibility depends on age and on how many months a - person was subject to compulsory insurance - reference: § 147 Abs. 2 SGB III - 1997-03-24: - nach_alter: - 0: 12 - 50: 15 - 55: 18 - 58: 24 - nach_versicherungspflichtigen_monaten: - 0: 0 - 12: 6 - 18: 8 - 20: 10 - 24: 12 - 30: 15 - 36: 18 - 48: 24 diff --git a/src/_gettsim/parameters/arbeitsl_geld_2.yaml b/src/_gettsim/parameters/arbeitsl_geld_2.yaml deleted file mode 100644 index e23da72d19..0000000000 --- a/src/_gettsim/parameters/arbeitsl_geld_2.yaml +++ /dev/null @@ -1,725 +0,0 @@ ---- -eink_anr_frei: - name: - de: Anrechnungsfreie Einkommensanteile - en: Income shares not subject to transfer withdrawal - description: - de: >- - Einkommensanteile, die anrechnungsfrei bleiben. § 30 SGB II. Seit 01.10.2005 - zudem - definiert durch Freibetrag in § 11 SGB II, s. § 67 SGB II. Seit 01.04.2011 - § 11b (2) SGB II (neugefasst durch B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 - G. v. 24.03.2011 BGBl. I S. 453). - en: >- - Income shares which do not lead to tapering of benefits. - type: piecewise_linear - reference_period: Month - 2005-01-01: - reference: Artikel 1. G. v. 24.12.2003 BGBl. I S. 2954. - 0: - lower_threshold: -inf - upper_threshold: 0 - rate: 0 - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 0 - upper_threshold: 400 - rate: 0.15 - 2: - upper_threshold: 900 - rate: 0.3 - 3: - upper_threshold: 1500 - rate: 0.15 - 4: - upper_threshold: inf - rate: 0 - 2005-10-01: - reference: Artikel 1 G. v. 14.08.2005 BGBl. I S. 2407. - 0: - lower_threshold: -inf - upper_threshold: 0 - rate: 0 - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 0 - upper_threshold: 100 - rate: 1.0 - 2: - upper_threshold: 800 - rate: 0.2 - 3: - upper_threshold: 1200 - rate: 0.1 - 4: - upper_threshold: inf - rate: 0 - 2011-04-01: - reference: Artikel 1 G. v. 20.12.2011 BGBl. I 2854. - note: >- - Neuer Betrag durch Neufassung des SGB II. B. v. 13.5.2011 BGBl. I S. 850 - . Artikel 5. - ToDo: Check these laws -- did they really happen months - after the date of the policy change? I cannot fina anything... - deviation_from: previous - 2: - upper_threshold: 1000 - 2023-07-01: - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz - 0: - lower_threshold: -inf - upper_threshold: 0 - rate: 0 - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 0 - upper_threshold: 100 - rate: 1.0 - 2: - upper_threshold: 520 - rate: 0.2 - 3: - upper_threshold: 1000 - rate: 0.3 - 4: - upper_threshold: 1200 - rate: 0.1 - 5: - upper_threshold: inf - rate: 0 -eink_anr_frei_kinder: - name: - de: Abweichende anrechnungsfreie Einkommensanteile falls Kinder im Haushalt - en: null - description: - de: >- - Obere Einkommensgrenze bei anzurechnendem Einkommen, Intervall 3, Haushalt mit - Kindern. Gilt statt der Parameter in eink_anr_frei für Leistungsbezieher, die mit - minderjährigem Kind in BG leben oder die ein minderjähriges Kind haben (zweiteres - wird aktuell noch nicht im Code beachtet). § 30 SGB II. Seit 01.04.2011 § 11b SGB - II (neugefasst durch B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 G. v. 24.03.2011 - BGBl. I S. 453). - en: null - note: Ersetzt Parameter in eink_anr_frei, falls nicht vorhanden - type: piecewise_linear - 2005-10-01: - reference: Artikel 1 G. v. 14.08.2005 BGBl. I S. 2407. - deviation_from: arbeitsl_geld_2.eink_anr_frei - 3: - upper_threshold: 1500 - 2023-07-01: - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz - deviation_from: arbeitsl_geld_2.eink_anr_frei - 4: - upper_threshold: 1500 -regelsatz: - name: - de: Regelsatz, seit 2011 Beträge differenzieren sich nach Regelbedarfsstufen - en: Standard rate, since 2011 amounts differ by "Regelbedarfsstufen" - description: - de: >- - § 20 V SGB II. Für 2005 bis 2010 siehe Bekanntmachungen zu § 20. Seit 2011 - wird der Regelbedarf durch das Regelbedarfs-Ermittlungsgesetz (RBEG) ermittelt. - Neufassung SGB II § 20 (1a) und (2) durch Artikel 6 G. v. 22.12.2016 BGBl. I - S. - 3159. - en: null - note: - de: >- - Regelbedafstufen (1 bis 6): - 1: Alleinstehender Erwachsener; - 2: Erwachsene in Partnerschaft; - 3: Erwachsene nicht in Partnerschaft; - 4: Kinder 14 bis 17; - 5: Kinder 6 bis 13; - 6: Kinder 0 bis 5 - en: >- - Regelbedarfsstufe (1 to 6); 1: Single Adult; - 2: Adults in a partner relationship; 3: Adults not in a partner relationship; - 4: Children 14 to 17 years; 5: Children 6 to 13 years; 6: Children 0 to 5 years. - unit: Euro - reference_period: Month - 2005-01-01: - scalar: 338 - reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. - note: >- - Der tatsächliche Wert unterscheidet sich zwischen Ost und West. Korrekte - Werte sind in den alten Bundesländern einschließlich Berlin (Ost) 345 Euro, - in - den neuen Bundesländern 331 Euro. - 2005-07-01: - scalar: 338 - reference: B. v. 01.09.2005 BGBl. I S. 2718. - note: >- - Betrag unverändert. Der tatsächliche Wert unterscheidet sich zwischen Ost und - West. Hier wurde vereinfachend 338 Euro als ungewichteter Mittelwert genommen. - Korrekte Werte für die Zeit ab 1. Juli 2005 sind in den alten Bundesländern - einschließlich Berlin (Ost) 345 Euro, in den neuen Bundesländern 331 Euro. - 2006-07-01: - scalar: 345 - reference: B. v. 20.07.2006 BGBl. I S. 1702. - 2007-07-01: - scalar: 347 - reference: B. v. 18.06.2007 BGBl. I S. 1139. - 2008-07-01: - scalar: 351 - reference: B. v. 26.06.2008 BGBl. I S. 1102. - 2009-07-01: - scalar: 359 - reference: B. v. 17.06.2009 BGBl. I S. 1342. - 2010-07-01: - scalar: 359 - reference: B. v. 07.06.2010 BGBl. I S. 820. Betrag unverändert. - 2011-01-01: - 1: 364 - 2: 328 - 3: 291 - 4: - min_alter: 14 - max_alter: 17 - betrag: 287 - 5: - min_alter: 6 - max_alter: 13 - betrag: 251 - 6: - min_alter: 0 - max_alter: 5 - betrag: 215 - reference: Artikel 1 G. v. 24.03.2011 BGBl. I S. 453. - 2012-01-01: - 1: 374 - 2: 337 - 3: 299 - 4: - min_alter: 14 - max_alter: 17 - betrag: 287 - 5: - min_alter: 6 - max_alter: 13 - betrag: 251 - 6: - min_alter: 0 - max_alter: 5 - betrag: 219 - reference: V. v. 20.10.2011 BGBl. I S. 2093. - 2013-01-01: - 1: 382 - 2: 345 - 3: 306 - 4: - min_alter: 14 - max_alter: 17 - betrag: 289 - 5: - min_alter: 6 - max_alter: 13 - betrag: 255 - 6: - min_alter: 0 - max_alter: 5 - betrag: 224 - reference: B. v. 18.10.2012 BGBl. I S. 2175. - 2014-01-01: - 1: 391 - 2: 353 - 3: 313 - 4: - min_alter: 14 - max_alter: 17 - betrag: 296 - 5: - min_alter: 6 - max_alter: 13 - betrag: 261 - 6: - min_alter: 0 - max_alter: 5 - betrag: 229 - reference: B. v. 16.10.2013 BGBl. I S. 3857. - 2015-01-01: - 1: 399 - 2: 360 - 3: 320 - 4: - min_alter: 14 - max_alter: 17 - betrag: 302 - 5: - min_alter: 6 - max_alter: 13 - betrag: 267 - 6: - min_alter: 0 - max_alter: 5 - betrag: 234 - reference: B. v. 15.10.2014 BGBl. I S. 1620. - 2016-01-01: - 1: 404 - 2: 364 - 3: 324 - 4: - min_alter: 14 - max_alter: 17 - betrag: 306 - 5: - min_alter: 6 - max_alter: 13 - betrag: 270 - 6: - min_alter: 0 - max_alter: 5 - betrag: 237 - reference: B. v. 22.10.2015 BGBl. I S. 1792. - 2017-01-01: - 1: 409 - 2: 368 - 3: 327 - 4: - min_alter: 14 - max_alter: 17 - betrag: 311 - 5: - min_alter: 6 - max_alter: 13 - betrag: 291 - 6: - min_alter: 0 - max_alter: 5 - betrag: 236 - reference: G. v. 22.12.2016 BGBl. I S. 3159. - 2018-01-01: - 1: 416 - 2: 374 - 3: 332 - 4: - min_alter: 14 - max_alter: 17 - betrag: 316 - 5: - min_alter: 6 - max_alter: 13 - betrag: 296 - 6: - min_alter: 0 - max_alter: 5 - betrag: 240 - reference: V. v. 08.11.2017 BGBl. I S. 3767. - 2019-01-01: - 1: 424 - 2: 382 - 3: 339 - 4: - min_alter: 14 - max_alter: 17 - betrag: 322 - 5: - min_alter: 6 - max_alter: 13 - betrag: 302 - 6: - min_alter: 0 - max_alter: 5 - betrag: 245 - reference: V. v. 19.10.2018 BGBl. I S. 1766. - 2020-01-01: - 1: 432 - 2: 389 - 3: 345 - 4: - min_alter: 14 - max_alter: 17 - betrag: 328 - 5: - min_alter: 6 - max_alter: 13 - betrag: 308 - 6: - min_alter: 0 - max_alter: 5 - betrag: 250 - reference: V. v. 15.10.2019 BGBl. I S. 1452. - 2021-01-01: - 1: 446 - 2: 401 - 3: 357 - 4: - min_alter: 14 - max_alter: 17 - betrag: 373 - 5: - min_alter: 6 - max_alter: 13 - betrag: 309 - 6: - min_alter: 0 - max_alter: 5 - betrag: 283 - reference: G. v. 09.12.2020 BGBl. I S. 2855. - 2022-01-01: - 1: 449 - 2: 404 - 3: 360 - 4: - min_alter: 14 - max_alter: 17 - betrag: 376 - 5: - min_alter: 6 - max_alter: 13 - betrag: 311 - 6: - min_alter: 0 - max_alter: 5 - betrag: 285 - reference: V. v. 13.10.2021 BGBl. I S. 4674. - 2023-01-01: - 1: 502 - 2: 451 - 3: 402 - 4: - min_alter: 14 - max_alter: 17 - betrag: 420 - 5: - min_alter: 6 - max_alter: 13 - betrag: 348 - 6: - min_alter: 0 - max_alter: 5 - betrag: 318 - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz - 2024-01-01: - 1: 563 - 2: 506 - 3: 451 - 4: - min_alter: 14 - max_alter: 17 - betrag: 471 - 5: - min_alter: 6 - max_alter: 13 - betrag: 390 - 6: - min_alter: 0 - max_alter: 5 - betrag: 357 - reference: §2 V. v. 24.10.2024 BGBl. I Nr. 287 -kindersofortzuschl: - name: - de: Kindersofortzuschlag für Arbeitslosengeld II - en: Instant surcharge for children for unemployment benefit - description: - de: >- - Kinder, Jugendliche und junge Erwachsene, die Anspruch auf - Arbeitslosengeld II oder Sozialgeld haben (Regelbedarfsstufen 3,4,5,6), - erhalten einen Sofortzuschlag von 20€. - en: >- - Children, adolescents and young adults who are entitled to unemployment benefits - or social benefits (Regelbedarfsstufen 3,4,5,6) receive an instant surcharge - of 20 Euro. - unit: Euro - reference: 72 SGB II - 2022-07-01: - scalar: 20 - 2025-01-01: - scalar: 25 - note: >- - Gesetz zur Fortentwicklung des Steuerrechts und zur Anpassung des Einkommen- - steuertarifs (Steuerfortentwicklungsgesetz - SteFeG) - reference: Art. 7 G. v. 30.12.2024 BGBl. 2024 Nr. 449. -anteil_regelsatz_erwachsene: - name: - de: Anteil am Regelsatz für weitere Erwachsene in der Bedarfsgemeinschaft - en: Fraction of standard rate for additional adults in the household - description: - de: >- - § 20 (3) SGB II, eigentliche Wirknorm ist § 20 IV SGB II i.V.m Absatz V - derselben Norm. 2005 bis 2010. - en: null - note: - de: >- - 2005-2010 der Regelsatz für weitere Haushaltsmitglieder wurden als Anteil - des Standardsatzes bestimmt. - en: null - unit: Share - 2005-01-01: - zwei_erwachsene: 0.9 - weitere_erwachsene: 0.8 - reference: Artikel 1 § 20 G. v. 24.12.2003 BGBl. I S. 2954. -anteil_regelsatz_kinder: - name: - de: Anteil am Regelsatz für Kinder - en: Fraction of standard rate for children - description: - de: >- - § 20 (3) SGB II, eigentliche Wirknorm ist § 20 IV SGB II i.V.m Absatz V derselben - Norm. 2005 bis 2010: Der Regelsatz für Kinder wurden als Anteil des Standardsatzes - bestimmt. - en: null - note: - de: null - en: null - unit: Share - 2005-01-01: - kind_zwischen_14_und_24: - min_alter: 14 - max_alter: 24 - anteil: 0.8 - kind_zwischen_6_und_13: - min_alter: 6 - max_alter: 13 - anteil: 0.6 - kind_bis_5: - min_alter: 0 - max_alter: 5 - anteil: 0.6 - reference: Artikel 1 § 20 G. v. 24.12.2003 BGBl. I S. 2954. - 2009-07-01: - deviation_from: previous - reference: Artikel 1 G. v. 02.03.2009 BGBl. I S. 416. - kind_zwischen_6_und_13: - min_alter: 6 - max_alter: 13 - share: 0.7 -mehrbedarf_anteil: - name: - de: >- - ``kind_bis_6_oder_mehrere_bis_15`` gibt Mehrbedarf AE bei mind. einem Kind unter 7 - Jahren oder zwei oder drei Kindern unter 16 Jahre an. ``min_1_kind`` gibt den - Mehrbedarf an wenn der Anspruch größer ist als der für den ersten Schlüssel. - ``max`` gibt den Maximalanteil für den Mehrbedarf für Alleinerziehende gemessen am - maßgebenden Regelbedarf. - en: >- - Additional need, single parent, one child below 7 or two or three children - below 16. Additional need, single parent, one or more children. Upper limit - additional need for single parents - description: - de: § 21 (3) Nr. 1 SGB II. - en: null - unit: Share - reference_period: Month - 2005-01-01: - min_1_kind: 0.12 - kind_bis_6_oder_mehrere_bis_15: 0.36 - max: 0.6 - reference: G. v. 24.12.2003 BGBl. I S. 2954. -vermögensgrundfreibetrag_obergrenze: - name: - de: Maximaler Vermögensgrundfreibetrag - en: Maximum of basic allowance - description: - de: >- - § 12 (2) Satz 1 Nr. 1 SGB II. Ausnahmeregelung für Personen, - die vor 1948 geboren wurden. Die Ausnahmeregelung taucht im aktuellen Gesetz nicht - mehr auf und ist nicht mehr relevant, - da alle betroffenen Personen zu alt für ALG 2 sind. - en: Differs by birth year. - unit: Euro - 2005-01-01: - 1947: 33800 - 1948: 13000 - 1958: 13000 - 1964: 13000 - reference: Artikel 1 G. v. 23.12.2002 BGBl. I S. 4607. - 2006-08-01: - 1947: 33800 - 1948: 9750 - 1958: 9750 - 1964: 9750 - reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. - 2008-01-01: - 1947: 33800 - 1948: 9750 - 1958: 9900 - 1964: 10050 - note: Artikel 1 G. v. 20.04.2007 BGBl. I S. 554. - 2023-01-01: - 1947: null - 1948: null - 1958: null - 1964: null - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -vermögensgrundfreibetrag: - name: - de: Vermögensgrundfreibetrag je Lebensjahr - en: Basic allowance per year of life - description: - de: § 12 (2) Satz 1 Nr. 1 SGB II. Gestaffelt nach Geburtsjahr - en: Differs by year of birth. - unit: Euro - 2005-01-01: - 1947: 520 - 1948: 200 - reference: Artikel 1 G. v. 30.12.2002 BGBl. I S. 4619. - 2006-08-01: - deviation_from: previous - 1948: 150 - reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. - 2023-01-01: - 1947: null - 1948: null - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -schonvermögen_bürgergeld: - name: - de: Schonvermögen beim Bürgergeld - en: Protected wealth for the citizen's income - description: - de: >- - Seit der Einführung des Bürgergelds zum 01.01.2023 gilt ein Vermögensfreibetrag - von 15.000 Euro pro Mitglied der Bedarfsgemeinschaft nach Ablauf der Karenzzeit - von einem Jahr. Während der Karenzzeit ist ein Vermögen von 40.000 Euro für die - erste Person einer Bedarfsgemeinschaft und 15.000 Euro für jede weitere erlaubt. - en: >- - Since the introduction of the citizen's allowance as of 01.01.2023, every member - of the need community is allowed to own 15,000 Euro after the end of the waiting - period of 1 year. During the waiting period wealth of 40,000 Euro are allowed for - the first person in a needs-based community and 15,000 Euro for each additional - person. - unit: Euro - 2023-01-01: - während_karenzzeit: 40000 - normaler_satz: 15000 - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -vermögensfreibetrag_austattung: - name: - de: Vermögensfreibetrag für Erstausstattung - en: Allowance for furniture - description: - de: § 12 (2) Satz 1 Nr. 4 SGB II. - en: null - unit: Euro - 2005-01-01: - scalar: 750 - reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. - 2023-01-01: - scalar: null - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -vermögensfreibetrag_kind: - name: - de: Vermögensgrundfreibetrag je Kind - en: Allowance for furniture - description: - de: § 12 (2) Satz 1 Nr. 1 SGB II. - en: null - unit: Euro - 2005-01-01: - scalar: 4100 - reference: Artikel 1 G. v. 24.12.2003 BGBl. I S. 2954. - 2006-08-01: - scalar: 3100 - reference: Artikel 1 G. v. 20.07.2006 BGBl. I S. 1706. - 2023-01-01: - scalar: null - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -vermög_freib_alter: - name: - de: Altersgrenzen für Vermögensfreibetrag - en: Age limits for wealth allowance - description: - de: Vermögensfreibetrag ändert sich nach Geburtsjahr - en: Wealth allowance changes depending on the year of birth - 2005-01-01: - 1: 1948 - 2: 1958 - 3: 1963 - 2023-01-01: - 1: null - 2: null - 3: null - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz -abzugsfähige_pausch: - name: - de: Abzugsfähige Pauschalen für Werbungskosten und Versicherung - en: Allowance for expenses and insurance - description: - de: >- - § 6 (1) Nr. 3 a) ALG II-V. 2005-01.01 bis 2016-07-31. Betrag mit V. v. 26.07 - .2016 BGBl. I S. 1858 entfallen. Wie entfallen? - § 3 Alg II-V. Seit 01.01.2008 in § 6 Alg II-V. - en: null - unit: Euro - reference_period: Month - 2005-01-01: - werbung: 15.33 - versicherung: 30 - reference: V. v. 20.10.2004 BGBl. I S. 2622 - 2011-01-01: - deviation_from: previous - werbung: 15.33 - reference: V. v. 21.06.2011 BGBl. I S. 1175. - note: Betrag unverändert. Warum haben wir das? Es ändert sich nichts -max_miete_pro_qm: - name: - de: Obergenze Miete pro Quadratmeter - en: Upper limit rent per square meter - description: - de: >- - Die Miete pro Quadratmeter darf einen angemessenen Betrag nicht übersteigen, um - für ALG2 berechtigt zu sein. Diese Grenze ist nicht konkret im Gesetz - festgehalten, sondern wird als Faustregel von den Arbeitsargenturen verwendet. - en: >- - The rent per square meter must not exceed a reasonable amount in order to remain - eligible for ALG2. This limit is not specifically laid down in the law, but is a - rule of thumb used by the employment agencies. - unit: Euro / Square Meter - reference: § 22 SGB II - 1984-01-01: - max: 10 -berechtigte_wohnfläche_miete: - name: - de: Berechtigte Miet-Wohnfläche für ALG2-Empfänger*innen - en: Living rental space eligible for ALG2-recipients - description: - de: >- - Eine Mietwohnung darf für einen Single 45 Quadratmeter (+15 für jede weitere - Person) groß sein. - en: >- - A rental apartment may be 45 square meters for a single person (+15 for each - additional person). - 1984-01-01: - single: 45 - je_weitere_person: 15 -berechtigte_wohnfläche_eigentum: - name: - de: Berechtigte Eigentumsfläche für ALG2-Empfänger*innen - en: Property space eligible for ALG2-recipients - description: - de: >- - Vor 2023 gilt, dass Eigentum für zwei Personen im Haushalt 80 Quadratmeter (+20 - für jede weitere Person) groß sein darf. Ab 2023 ist die erlaubte Größe für - Eigenheime auf 140 Quadratmeter (für Eigentumswohnungen aus 130 Quadratmeter) - gestiegen und wird ab 5 Personen im Haushalt um 20 Quadratmeter pro Person - angehoben. - en: >- - Before 2023, property for two people in the household may be 80 square meters (+20 - for each additional person). From 2023, the permitted size for owner-occupied - homes has risen to 140 square meters (for condominiums from 130 square meters) and - will be increased by 20 square meters per person from 5 persons in the household. - 1984-01-01: - 1: 80 - 2: 80 - 3: 100 - 4: 120 - je_weitere_person: 20 - max_anzahl_direkt: 4 - 2023-01-01: - reference: Art. 1 Nr.12 Abschnitt 5, G. v. 20.12.2022 BGBl. I S. 2328 - note: Gilt für Eigenheime. Eigentumswohnungen dürfen nur bis zu 130qm groß sein. - deviation_from: previous - 1: 140 - 2: 140 - 3: 140 - 4: 140 diff --git a/src/_gettsim/parameters/arbeitslosenversicherung.yaml b/src/_gettsim/parameters/arbeitslosenversicherung.yaml deleted file mode 100644 index 7a5350f5e8..0000000000 --- a/src/_gettsim/parameters/arbeitslosenversicherung.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -beitr_satz: - name: - de: Beitragssätze zur Arbeitslosenversicherung - en: Contribution rate to unemployment insurance - description: - de: >- - Beitragssätze zur Arbeitslosenversicherung für Arbeitnehmer. - en: >- - Employees contribution rate for unemployment insurance. - unit: Share - access_different_date: jahresanfang - 1984-01-01: - scalar: 0.023 - 1985-01-01: - scalar: 0.022 - 1986-01-01: - scalar: 0.0205 - 1987-01-01: - scalar: 0.0215 - 1992-01-01: - deviation_from: previous - scalar: 0.0315 - 1993-01-01: - scalar: 0.0325 - 1995-01-01: - scalar: 0.0325 - 1997-01-01: - scalar: 0.0325 - 2005-01-01: - scalar: 0.0325 - 2007-01-01: - deviation_from: previous - scalar: 0.021 - 2008-01-01: - scalar: 0.016 - 2009-01-01: - deviation_from: previous - scalar: 0.014 - 2011-01-01: - deviation_from: previous - scalar: 0.015 - 2015-01-01: - scalar: 0.015 - 2019-01-01: - scalar: 0.0125 - note: >- - Set to 0.026 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651. Temporarily - reduced to 0.025 in BeiSaV 2019. - reference: V. v. 21.12.2018 BGBl. I S. 2663 - 2020-01-01: - deviation_from: previous - scalar: 0.012 - note: Temporarily reduced to 0.024 in BeiSaV 2019. - reference: V. v. 02.12.2019 BGBl. I S. 1998 - 2023-01-01: - deviation_from: previous - scalar: 0.013 - note: >- - Contribution rate was temporarily reduced from 2019 to 2022 in BeiSaV 2019. Back - to level specified in § 341 Abs. 2 SGB III. - reference: Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 diff --git a/src/_gettsim/parameters/eink_st_abzuege.yaml b/src/_gettsim/parameters/eink_st_abzuege.yaml deleted file mode 100644 index e7a4eb14ea..0000000000 --- a/src/_gettsim/parameters/eink_st_abzuege.yaml +++ /dev/null @@ -1,753 +0,0 @@ ---- -kinderfreib: - name: - de: Kinderfreibetrag - en: Basic Income Tax Allowance for children - description: - de: >- - sächliches Existenzminimum des Kindes, seit 2000 auch der Freibetrag für - Betreuungs-, Erziehungs- und Ausbildungskosten. Wird verdoppelt für gemeinsam - veranlagte Paare. §32 (6) EStG, seit 2000. - en: null - unit: Euro - reference_period: Year - 1983-01-01: - sächl_existenzmin: 110 - reference: Art. 1 G. v. 23.12.1982 BGBl. I S. 1857. - note: Der Betrag laut Gesetz ist 216 DM. - 1986-01-01: - sächl_existenzmin: 635 - reference: Art. 1 G. v. 26.06.1985 BGBl. I S. 1153. - note: Der Betrag im Gesetz lautet 1242 DM. - 1990-01-01: - sächl_existenzmin: 773 - reference: Artikel 1 G. v. 25.07.1988 BGBl. I S. 1093. - note: Der Betrag im Gesetz lautet 1512 DM. - 1992-01-01: - sächl_existenzmin: 1049 - reference: Art. 1 G. v. 25.02.1992 BGBl. I S. 297. - note: Wert laut Gesetz 2052 DM. - 1996-01-01: - sächl_existenzmin: 1601 - reference: Art. 1. G. v. 11.10.1995 BGBl. I S. 1250. - note: Laut Gesetz 261 DM pro Monat. - 1997-01-01: - sächl_existenzmin: 1767 - reference: null - note: Laut Gesetz 288 DM pro Monat (ab 2000 3456 DM pro Jahr) - 2000-01-01: - beitr_erz_ausb: 774 - sächl_existenzmin: 1767 - reference: Art. 1 G. v. 28.12.1999 BGBl. I. S. 2552. - note: Wert für beitr_erz_ausb laut Gesetz 1512 DM. - 2002-01-01: - beitr_erz_ausb: 1080 - sächl_existenzmin: 1824 - reference: Art. 1 G. v. 16.08.2001 BGBl. I S. 2074 - 2009-01-01: - deviation_from: previous - sächl_existenzmin: 1932 - reference: Art. 1 G. v. 22.12.2008 BGBl. I S. 2955 - 2010-01-01: - beitr_erz_ausb: 1320 - sächl_existenzmin: 2184 - reference: Art. 1 G. v. 22.12.2009 BGBl. I S. 3950 - 2015-01-01: - deviation_from: previous - sächl_existenzmin: 2256 - reference: Art. 1 G. v. 16.07.2015 BGBl. I S. 1202 - 2016-01-01: - deviation_from: previous - sächl_existenzmin: 2304 - reference: Art. 2 G. v. 16.07.2015 BGBl. I S. 1202 - 2017-01-01: - deviation_from: previous - sächl_existenzmin: 2358 - reference: Art. 8 G. v. 20.12.2016 BGBl. I. S. 3000 - 2018-01-01: - deviation_from: previous - sächl_existenzmin: 2394 - reference: Art. 9 G. v. 20.12.2016 BGBl. I. S. 3000 - 2019-01-01: - deviation_from: previous - sächl_existenzmin: 2490 - reference: Art. 1 G. v. 29.11.2018 BGBl. I S. 2210 - 2020-01-01: - deviation_from: previous - sächl_existenzmin: 2586 - reference: Art. 3 G. v. 29.11.2018 BGBl. I S. 2210 - 2021-01-01: - sächl_existenzmin: 2730 - beitr_erz_ausb: 1464 - reference: Art. 1 G. v. 01.12.2020 BGBl. I S. 2616 - 2022-01-01: - deviation_from: previous - sächl_existenzmin: 2810 - reference: Art. 1 G. v. 08.12.2022 BGBl. I S. 2230. - 2023-01-01: - deviation_from: previous - sächl_existenzmin: 3012 - reference: Art. 2 G. v. 08.12.2022 BGBl. I S. 2230. - 2024-01-01: - deviation_from: previous - sächl_existenzmin: 3306 - reference: Art. 1 G. v. 05.12.2024 BGBl. 2024 I Nr. 386. - 2025-01-01: - deviation_from: previous - sächl_existenzmin: 3336 - reference: Art. 1 G. v. 30.12.2024 BGBl. 2024 Nr. 449. - 2026-01-01: - deviation_from: previous - sächl_existenzmin: 3414 - reference: Art. 2 G. v. 30.12.2024 BGBl. 2024 Nr. 449. -vorsorge2004_vorwegabzug: - name: - de: Vorwegabzug der Vorsorgeaufwendungen der Rechtslage vor 2004. - en: Lump sum deduction for precautionary expenses, before 2004. - description: - de: >- - § 10 (4a) EStG. Früher §10 (3) EStG. Hier steht jeweils der Wert für den - Steuerpflichtigen. Wird verdoppelt für gemeinsam veranlagte Ehegatten. Der gesamte - Zeitverlauf wurde bereits 2005 festgelegt. - en: null - unit: Euro - reference_period: Year - 1985-01-01: - scalar: 1534 - reference: null - 1989-01-01: - scalar: 2045 - reference: null - 1993-01-01: - scalar: 3068 - reference: . - 2011-01-01: - scalar: 2700 - reference: null - 2012-01-01: - scalar: 2400 - reference: null - 2013-01-01: - scalar: 2100 - reference: null - 2014-01-01: - scalar: 1800 - reference: null - 2015-01-01: - scalar: 1500 - reference: null - 2016-01-01: - scalar: 1200 - reference: null - 2017-01-01: - scalar: 900 - reference: null - 2018-01-01: - scalar: 600 - reference: null - 2019-01-01: - scalar: 300 - reference: null -werbungskostenpauschale: - name: - de: Werbungskostenpauschbetrag bei nichtselbstständiger Arbeit. - en: Lump-sum deduction for employment income. - description: - de: § 9a Nr. 1a) EStG - en: This is the minimum amount deducted from any employment income. - unit: Euro - reference_period: Year - 1975-01-01: - scalar: 288 - note: 564 DM - 1990-01-01: - scalar: 1044 - reference: null - note: 2000 DM. - 2004-01-01: - scalar: 920 - reference: null - 2012-01-01: - scalar: 1000 - reference: Art. 1 G. v. 01.11.2011 BGBl. I S. 2131. - note: Für Lohnsteuerabzug gültig ab 2011-11-05. - 2022-01-01: - scalar: 1200 - reference: Art. 2 G. v. 23.05.2022 BGBl. I S. 749 - 2023-01-01: - scalar: 1230 - reference: G. v. 20.12.2022 BGBl. I S. 2294. -sonderausgabenpauschbetrag: - name: - de: Sonderausgaben-Pauschbetrag - en: Lump-sum deduction for other expenses - description: - de: § 10c EStG - en: null - unit: Euro - reference_period: Year - 1984-01-01: - single: 138 - reference: null - 1988-01-01: - single: 55 - reference: Art. 1 G. v. 25.07.1988, BGBl. I S. 1093 - note: 108 DM. Rückdatiert auf das gesamte Jahr. - 2002-01-01: - single: 36 - note: Art. 1 G. v. 19.12.2000, BGBl. I S. 1790 -sparerpauschbetrag: - name: - de: Sparerpauschbetrag - en: Allowance for Capital Gains - description: - de: >- - § 20 (9) EStG. Früher § 20 (4) EStG. Wert für Singles. Wird verdoppelt für - gemeinsam veranlagte. seit 2009. vor 2008 Sparerfreibetrag. - en: null - unit: Euro - reference_period: Year - 1975-01-01: - scalar: 153 - note: 300 DM. - 1990-01-01: - scalar: 307 - note: 600 DM. - 1993-01-01: - scalar: 3068 - note: 6000 DM. - 2000-01-01: - scalar: 1534 - note: 3000 DM - 2002-01-01: - scalar: 1550 - reference: Art. 1 G. v. 19.12.2000 BGBl I S. 1790. - 2004-01-01: - scalar: 1370 - note: null - 2007-01-01: - scalar: 750 - note: null - 2009-01-01: - scalar: 801 - reference: Art. 1 G. v. 14.08.2007 BGBl. I S. 1912 - note: >- - Integration von Werbungskostenpauschbetrag für Zinseinkünfte in - Sparerpauschbetrag. - 2023-01-01: - scalar: 1000 - reference: G. v. 20.12.2022 BGBl. I S. 2294. -sparer_werbungskosten_pauschbetrag: - name: - de: Werbungskostenpauschbetrag bei Zinseinkünften - en: null - description: - de: § 9a EStG, bis 2009 - en: null - unit: Euro - reference_period: Year - 1975-01-01: - scalar: 51 - note: 100 DM. - 2009-01-01: - scalar: 0 - note: null -vorsorge_2004_grundhöchstbetrag: - name: - de: Allgemeine Vorsorgepauschale Grundhöchstbetrag, Grundtabelle - en: null - description: - de: §10 (3) EStG bis 2004. - en: null - unit: Euro - reference_period: Year - 1985-01-01: - scalar: 1196 - reference: null - 1992-01-01: - scalar: 1334 - reference: . -altersentlastungsbetrag_max: - name: - de: Höchstbetrag des Altersentlastungsbetrags - en: Maximum Amount of Tax Credit for older employees. - description: - de: >- - 24a EStG S. 5. Tabelle legt die Werte bis 2040 fest. Bis 2004 erhalten alle - Steuerpflichtigen, die im voherigen Kalenderjahr das 64. Lebensjahr vollendet - haben, maximal den gleichen Altersentlastungsbetrag. Ab 2005 hängt dieser Betrag, - den diese Steuerpflichtigen erhalten, vom Geburtsjahr ab. - en: >- - If someone receives employment income above the age of 64, a share up to this - amount is deducted. Since 2005, this amount additionally depends on the birth - year. - unit: Euro - reference_period: Year - 1984-01-01: - scalar: 1534 - reference: null - 1989-01-01: - scalar: 1902 - reference: null - 2002-01-01: - scalar: 1908 - reference: null - 2005-01-01: - reference: Artikel 1 G. v. 05.07.2004 BGBl. I S. 1427. - 1940: 1900 - 1941: 1824 - 1942: 1748 - 1943: 1672 - 1944: 1596 - 1945: 1520 - 1946: 1444 - 1947: 1368 - 1948: 1292 - 1949: 1216 - 1950: 1140 - 1951: 1064 - 1952: 988 - 1953: 912 - 1954: 836 - 1955: 760 - 1956: 722 - 1957: 684 - 1958: 646 - 1959: 608 - 1960: 570 - 1961: 532 - 1962: 494 - 1963: 456 - 1964: 418 - 1965: 380 - 1966: 342 - 1967: 304 - 1968: 266 - 1969: 228 - 1970: 190 - 1971: 152 - 1972: 114 - 1973: 76 - 1974: 38 - 1975: 0 -altersentlastung_quote: - name: - de: Anteil des Altersentlastungsbetrags - en: Income share deducted for older employees. - description: - de: >- - §24a EStG S.5. Tabelle legt alle Werte bis 2040 fest. Bis 2004 wird bei allen - Steuerpflichtigen, die im voherigen Kalenderjahr das 64. Lebensjahr vollendet - haben, die gleiche Altersentlastungsquote abgezogen. Ab 2005 hängt diese Quote, - den diese Steuerpflichtigen erhalten, vom Geburtsjahr ab. - en: >- - If someone receives employment income above the age of 64, this share of income is - deducted. Since 2005, this share additionally depends on the birth year. - unit: Share - 1984-01-01: - scalar: 0.4 - reference: null - 2005-01-01: - reference: Artikel 1 G. v. 05.07.2004 BGBl. I S. 1427. - 1940: 0.4 - 1941: 0.384 - 1942: 0.368 - 1943: 0.352 - 1944: 0.336 - 1945: 0.32 - 1946: 0.304 - 1947: 0.288 - 1948: 0.272 - 1949: 0.256 - 1950: 0.24 - 1951: 0.224 - 1952: 0.208 - 1953: 0.192 - 1954: 0.176 - 1955: 0.16 - 1956: 0.152 - 1957: 0.144 - 1958: 0.136 - 1959: 0.128 - 1960: 0.12 - 1961: 0.112 - 1962: 0.104 - 1963: 0.096 - 1964: 0.088 - 1965: 0.08 - 1966: 0.072 - 1967: 0.064 - 1968: 0.056 - 1969: 0.048 - 1970: 0.04 - 1971: 0.032 - 1972: 0.024 - 1973: 0.016 - 1974: 0.008 - 1975: 0 -altersentlastungsbetrag_altersgrenze: - name: - de: Altersgrenze für Altersentlastungsbetrag - en: Age limit for old-age relief amount - description: - de: >- - Der Altersentlastungsbetrag wird einem Steuerpflichtigen gewährt, der vor dem - Beginn des Kalenderjahres, in dem er sein Einkommen bezogen hat, das 64. - Lebensjahr vollendet hatte. - en: >- - The old-age relief amount is granted to a taxpayer who, before the start of the - calendar year in which he received his income, had reached the age of 64. - reference: § 24a Art. 3 EStG - 1984-01-01: - scalar: 64 -einführungsfaktor: - name: - de: Einführungsfaktor für Altersvorsorge Aufwendung - en: Introductory factor for pension expense - description: - de: >- - In den Jahren 2005-2022 stieg der Anteil der abzugsfähigen Beiträge von 60% in - 2005 jährlich um 2 Prozentpunkte an bis 94% in 2022 erreicht wurden. Eigentlich - war geplant, dass der Parameter weiter mit dieser Rate steigt, bis ab 2025 100% - erreicht sind. Abweichend von diesem Plan, wurden die abzugfähigen Beiträge schon - 2023 auf 100% gesetzt. - en: >- - In the years 2005-2022, the share of deductible contributions increased by 2 - percentage points each year from 60% in 2005 to 94% in 2022. It was planned that - 100% are reached in 2025. Deviating from this plan, the deductible contributions - were set to 100% already in 2023. - reference: § 10 Abs. 1 Nr. 2 Buchst. a und b EStG - type: piecewise_linear - 2005-01-01: - 0: - lower_threshold: -inf - rate_linear: 0 - intercept_at_lower_threshold: 0.6 - 1: - lower_threshold: 2005 - upper_threshold: 2025 - rate_linear: 0.02 - 2: - upper_threshold: inf - rate_linear: 0 - 2023-01-01: - 0: - lower_threshold: -inf - rate_linear: 0 - intercept_at_lower_threshold: 0.6 - 1: - lower_threshold: 2005 - rate_linear: 0.02 - 2: - lower_threshold: 2022 - upper_threshold: 2023 - rate_linear: 0.06 - 3: - upper_threshold: inf - rate_linear: 0 - reference: G. v. 20.12.2022 BGBl. I S. 2294. -alleinerziehendenfreibetrag: - name: - de: Entlastungsbetrag für Alleinerziehende - en: Income Tax Allowance for Single Parents - description: - de: § 24b (1) EStG. vor 2004 "Haushaltsfreibetrag", § 32 (7) EStG - en: null - unit: Euro - reference_period: Year - 1984-01-01: - scalar: 2154 - reference: null - 1986-01-01: - scalar: 2319 - reference: null - 1989-01-01: - scalar: 2871 - reference: null - 2001-01-01: - scalar: 2916 - reference: . - 2002-01-01: - scalar: 2340 - reference: null - 2004-01-01: - scalar: 1308 - reference: null - 2015-01-01: - scalar: 1908 - reference: Art. 1 G. v. 16.07.2015 BGBl. I S.1202 - 2020-01-01: - scalar: 4008 - reference: Art. 3 Nr. 2 G. v. 29.12.2020 BGBl. I S.3096 - 2023-01-01: - scalar: 4260 - reference: G. v. 20.12.2022 BGBl. I S. 2294. -alleinerziehendenfreibetrag_zusatz: - name: - de: Entlastungsbetrag für Alleinerziehende, Zusatzbetrag - en: Income Tax Allowance for Single Parents; additional amount - description: - de: >- - §24b (2) S. 2 EStG. Alleinerziehenden-Entlastungsbetrag, Zusatzbetrag pro Kind ab - dem 2. Kind. - en: null - unit: Euro - reference_period: Year - 2015-01-01: - scalar: 240 - reference: Art. 1 G. vs. 16.07.2015 BGBl. I S.1202 -vorsorge2004_kürzung_vorwegabzug: - name: - de: Kürzung des Vorwegabzugs für Vorsorgeaufwendungen vor 2004. - en: null - description: - de: >- - §10 (3) S. 2 EStG (vor 2004). Der Vorwegabzug wird pauschal um einen Anteil - gekürzt bei abhängig Beschäftigten (vereinfacht). - en: null - unit: Share - 1985-01-01: - scalar: 0.0935 - note: entspricht Beitrag zur RV - 1986-01-01: - scalar: 0.096 - note: null - 1987-01-01: - scalar: 0.0935 - note: . - 1989-01-01: - scalar: 0.12 - reference: Art. 1 G. v. 25.07.1988 BGBl. I S. 1093 - note: 9% für GRV-Versicherte und 3% für GKV-Versicherte - 1994-01-01: - scalar: 0.16 - reference: Art. 1 G. v. 21.12.1993 BGBl. I S. 2310. -vorsorge_sonstige_aufw_max: - name: - de: >- - Regulärer Maximalbetrag für sonstige Vorsorgeaufwendungen (Kranken-, Pflege, - AL-V), der für sozialverspfl. Beschäftigte gilt. - en: null - description: - de: §10 Abs. 4 S.1 EStG - en: null - unit: Euro - reference_period: Year - 2005-01-01: - scalar: 1500 - reference: Art. 1 G. v. 05.07.2004 BGBl. I S.1427 - 2010-01-01: - scalar: 1900 - reference: Art. 1 G. v. 23.07.2009 BGBl. I S.1959. -vorsorge_altersaufw_max: - name: - de: Maximalbetrag der Altersvorsorgeaufwendungen, 2005er Rechtsstand - en: null - description: - de: §10 (3) EStG, Anlage 2 SGB VI - en: null - unit: Euro - reference_period: Year - 2005-01-01: - scalar: 20000 - note: Art. 1 G. v. 05.07.2004 BGBl. I S.1427 - 2015-01-01: - scalar: 22170 - note: >- - Ab 2015 knappschaftlicher Höchstbetrag, d.h. knappschaftlicher Beitragssatz * - knappschaftliche Beitragsbemessungsgrenze - 2016-01-01: - scalar: 22766 - note: .248 * 91800 - 2017-01-01: - scalar: 23362 - note: .248 * 94200 - 2018-01-01: - scalar: 23712 - note: .247 * 96000 - 2019-01-01: - scalar: 24305 - note: .247 * 98400 - 2020-01-01: - scalar: 25046 - reference: Art. 3 V. v. 17.12.2019 BGBl I S. 2848. - note: .247 * 101400 - 2021-01-01: - scalar: 25787 - reference: §3 V. v. 30.11.2020 BGBl. I S. 2612. - note: .247 * 104400 - 2022-01-01: - scalar: 25640 - reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. - note: .247 * 103800 -vorsorge_kranken_minderung: - name: - de: >- - Anteil, um den Krankenversicherungsbeiträge gemindert werden bei abhängig - Beschäftigten. - en: null - description: - de: §10 (3) a) S.4 EStG - en: null - unit: Share - 2009-07-23: - scalar: 0.04 - reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 -behinderten_pauschbetrag: - name: - de: Behinderten-Pauschbetrag, in Abhängigkeit des Behinderungsgrads. - en: Tax Credit for disabled, depending on degree of disability. - description: - de: § 33b (3) EStG. - en: null - unit: Euro - reference_period: Year - 1975-01-01: - reference: G. v. 05.08.1974 BGBl. I S. 1769. - 0: 0 - 25: 307 - 35: 429 - 45: 568 - 55: 721 - 65: 890 - 75: 1058 - 85: 1227 - 95: 1411 - note: DM converted to Euro. First entry (0-0) is required internally. - 2002-01-01: - reference: Art. 1 G. v. 19.12.2000 BGBl. I S. 1790. - note: First entry (0-0) is required internally. - 0: 0 - 25: 310 - 35: 430 - 45: 570 - 55: 720 - 65: 890 - 75: 1060 - 85: 1230 - 95: 1420 - 2021-01-01: - reference: Art. 1 G. v. 09.12.2020 BGBL. I S. 2770. - note: First entry (0-0) is required internally. - 0: 0 - 20: 384 - 30: 620 - 40: 860 - 50: 1140 - 60: 1440 - 70: 1780 - 80: 2120 - 90: 2460 - 100: 2840 -kinderbetreuungskosten_abz_anteil: - name: - de: >- - Anteil der Betreuungsaufwendungen, der auf das zu versteuernde Einkommen - anrechenbar ist - en: Share of child care expenses which can be deducted - description: - de: §10 (1) Nr. 5 EStG - en: null - unit: Share - 2012-01-01: - scalar: 0.6666666 - reference: Art. 1 G. v. 01.11.2011 BGBl. I S.2131 -kinderbetreuungskosten_abz_maximum: - name: - de: Maximal abziehbare Betreuungsaufwendungen pro Kind - en: Maximum amount of deductable child care expenses per child - description: - de: §10 (1) Nr. 5 EStG - en: null - unit: Euro - reference_period: Year - 2012-01-01: - scalar: 4000 - reference: Art. 1 G. v. 01.11.2011 BGBl. I S.2131 -vorsorgepauschale_rentenv_anteil: - name: - de: Anteil abgezogene Rentenversicherungsbeiträge - en: Share of deducted pension insurance contributions - description: - de: >- - Funktion für den Anteil der Rentenversicherungsbeiträge, die bei der - Lohnsteuerberechnung abgezogen werden - en: >- - Function for the share of pension insurance contributions deducted in the - withholding tax calculation. - unit: Share - reference: § 39b (4) EStG - note: - de: >- - Funktion erst ab 2005 vorhanden. Steigt zwischen 2005 und 2025 jährlich um 4 - Prozentpunkte. 2023 wurde der Wert vorzeitig auf 100% gesetzt. - en: >- - rises between 2005 and 2025 by 4 percentage points annually. In 2023, it was - prematurely set to 100 percent. - type: piecewise_linear - 2005-01-01: - 0: - lower_threshold: -inf - upper_threshold: 2005 - rate_linear: 0 - intercept_at_lower_threshold: 0.2 - 1: - lower_threshold: 2005 - upper_threshold: 2025 - rate_linear: 0.04 - intercept_at_lower_threshold: 0.2 - 2: - lower_threshold: 2025 - upper_threshold: inf - rate_linear: 0 - intercept_at_lower_threshold: 1 - 2023-01-01: - 0: - lower_threshold: -inf - rate_linear: 0 - intercept_at_lower_threshold: 0.2 - 1: - lower_threshold: 2005 - rate_linear: 0.04 - 2: - lower_threshold: 2022 - upper_threshold: 2023 - rate_linear: 0.12 - 3: - lower_threshold: 2023 - upper_threshold: inf - rate_linear: 0 -vorsorgepauschale_mindestanteil: - name: - de: Mindestanteil für Mindestvorsorgepauschale - en: Minimum share for Mindestvorsorgepauschale - description: - de: >- - Mindestanteil an Beiträgen zu GKV und GPV, der abgesetzt wird bei - Mindestvorsorgepauschale - en: >- - Minimum share of minimum contributions to health care and care insurance deducted - from Mindestvorsorgepauschale - reference: 39b (2) Nr.3 EStG - unit: Share - 2009-07-23: - scalar: 0.12 - reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 -vorsorgepauschale_kv_max: - name: - de: Höchstbetrag Mindestvorsorgepauschale - en: Maximum amount Mindestvorsorgepauschale - description: - de: >- - Höchsbetrag für Mindestvorsorgepauschale der Beiträge zu GKV und PKV, die von der - Lohnsteuer abgesetzt werden können. - en: >- - Maximum amount considered for Mindestvorsorgepauschale of contributions to health - care and care insurance that can be deducted from withholding tax - reference: 39b (2) Nr.3 EStG. Depends on Steuerklasse. - unit: Euro - time: year - 2009-07-23: - steuerklasse_3: 3000 - steuerklasse_nicht3: 1900 - reference: Art. 1 G. v. 16.07.2009 BGBl. I S. 1959 diff --git a/src/_gettsim/parameters/elterngeld.yaml b/src/_gettsim/parameters/elterngeld.yaml deleted file mode 100644 index 4e198277c3..0000000000 --- a/src/_gettsim/parameters/elterngeld.yaml +++ /dev/null @@ -1,242 +0,0 @@ ---- -faktor: - name: - de: Faktor bei der ElG-Berechung, 2. Stufe - en: Replacement Rate of Parental Benefit, second bracket. - description: - de: § 2 (1) BEEG - en: null - unit: Share - 2007-01-01: - scalar: 0.67 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -höchstbetrag: - name: - de: Höchstbetrag des Elterngeldes - en: Maximum Parental Benefit - description: - de: § 2 (1) BEEG - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 1800.0 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -max_zu_berücksichtigendes_einkommen: - name: - de: Maximal zu berücksichtigendes Einkommen vor Geburt. - en: Maximum income to be considered before birth. - description: - de: § 2 (3) BEEG - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 2700.0 - reference: BGBl. I S. 2748 Art. 1 G. v. 05.12.2006 - 2012-09-18: - scalar: 2770.0 - reference: Artikel 1 G. v. 10.09.2012 BGBl. I S. 1878 -nettoeinkommen_stufen: - name: - de: Nettoeinkommen an 1. und 2. Stufe - en: Net income where the first and second bracket starts - description: - de: >- - § 2 (2) BEEG. Maßgeblich ist das durchschnittlich erzielte monatliche Einkommen - vor der Geburt - en: null - unit: Euro - reference_period: Month - 2007-01-01: - lower_threshold: 1000.0 - upper_threshold: 1001.0 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 - 2011-01-01: - lower_threshold: 1000.0 - upper_threshold: 1201.0 - reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 -mindestbetrag: - name: - de: Mindestbetrag des Elterngeldes - en: Minimum amount of parental benefit - description: - de: § 2 (5) BEEG - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 300 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -prozent_korrektur: - name: - de: Korrektur des Prozentsatzes für hohe und niedrige Einkommen - en: Percentage correction for lower or high incomes - description: - de: § 2 (2) BEEG - en: null - unit: Share - 2007-01-01: - scalar: 0.001 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -prozent_minimum: - name: - de: Minimaler Anteil des Elterngelds am vorherigen Nettoeinkommen - en: Percentage deduction limit for higher incomes - description: - de: § 2 (2) BEEG - en: null - unit: Share - 2007-01-01: - scalar: 0.67 - note: implizit, exisitiert vorher nicht - 2011-01-01: - scalar: 0.65 - reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 -eink_schritt_korrektur: - name: - de: Einkommensschritte für die Korrektur - en: Income steps for percentage correction - description: - de: § 2 (2) BEEG - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 2 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -geschwisterbonus_altersgrenzen: - name: - de: Altersgrenzen für Geschwisterbonus - en: Age limit for sibling bonus - description: - de: >- - Leben im Haushalt zwei Kinder unter 3 Jahren oder mehr als zwei unter 6 Jahren - wird das Elterngeld um 10% (max. um 75€) erhöht. - en: >- - If there are two children under the age of 3 or more than two under the age of 6 - living in the household, Parental allowance is increased by 10% (max. by €75). - reference: § 2a BEEG - 2007-01-01: - 3: 2 - 6: 3 -geschwisterbonus_aufschlag: - name: - de: Geschwisterbonus als prozentualer Aufschlag - en: Sibling Bonus, percentage top-up - description: - de: § 2a (1) BEEG. Früher § 2 (4) BEEG - en: null - unit: Share - 2007-01-01: - scalar: 0.1 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -geschwisterbonus_minimum: - name: - de: Minimaler Geschwisterbonus als Euro-Betrag - en: Sibling Bonus, minimal amount - description: - de: § 2a (1) BEEG. Früher §2 (4) BEEG - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 75.0 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -mehrlingbonus: - name: - de: Pauschale für jedes weitere Mehrlingskind - en: Twin, triplet bonus per additional child - description: - de: § 2a (4) BEEG, früher §2 (6) BEEG. - en: null - unit: Euro - reference_period: Month - 2007-01-01: - scalar: 300.0 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -sozialv_pausch: - name: - de: Sozialversicherungspauschale zur Berechnung des Nettoeinkommens - en: null - description: - de: §2f BEEG. Vor 2012 waren es die eigentlichen Pflichtbeiträge. - en: null - unit: Share - 2012-09-18: - scalar: 0.21 - reference: Art. 1 G. v. 10.09.2012 BGBl. I S. 1878 - note: .09 + .1 + .02 -max_monate_mit_partnermonate: - name: - de: Maximale Anzahl an Monaten, inklusiver Partnermonate. - en: Maximum number of months, including "Partnermonate". - description: - de: >- - Basismonate plus "Partnermonate" bei gleichzeitiger Inanspruchnahme von Elterngeld - bei Paaren. Basismonate bei Alleinerziehenden. - reference: § 4 (3) BEEG - 2007-01-01: - scalar: 14 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -max_monate_ohne_partnermonate: - name: - de: >- - Maximale Anzahl an Monaten bei Paaren, die nicht gleichzeitig Elterngeld beziehen. - en: Maximum number of months for couples not receiving Elterngeld simultaneously. - description: - de: Basismonate ohne Partnermonate. - en: null - reference: § 4 (3) BEEG - 2007-01-01: - scalar: 12 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 -max_eink_vorj: - name: - de: Maximales zu versteuerndes Einkommen im Jahr vor der Geburt des Kindes. - en: Maximum taxable income in the year before the birth of the child. - description: - de: >- - Maximales zu versteuerndes Einkommen im letzten Veranlagungszeitraum vor Geburt - des Kindes. Einkommen über dieser Grenze schließt den Bezug von Elterngeld aus (§ - 1 (8) BEEG). - en: >- - Maximum taxable income in the year before the birth of the child. Income above - this threshold disqualifies the parent from receiving Elterngeld. - reference: - de: null - en: null - unit: Euro - 2011-01-01: - single: 250000.0 - paar: 500000.0 - reference: Art. 14 G. v. 09.12.2010 BGBl. I S. 1885 - 2021-09-01: - deviation_from: previous - paar: 300000.0 - reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 - 2024-04-01: - scalar: 200000.0 - reference: >- - Single: Art. 7 G. v. 27.03.2024 BGBl. 2024 I Nr. 107, Paar: Art. 1 G. v. - 22.12.2023 BGBl. 2023 I Nr. 412 - 2025-04-01: - scalar: 175000.0 - reference: >- - Single: Art. 7 G. v. 27.03.2024 BGBl. 2024 I Nr. 107, Paar: Art. 1 G. v. - 22.12.2023 BGBl. 2023 I Nr. 412 -max_arbeitsstunden_w: - name: - de: >- - Maximale Wochenstunden die bei Elterngeldbezug gearbeitet werden dürfen - en: >- - Maximum amount of weekly hours one is allowed to work, when receiving Elterngeld - description: - de: §1 (6) BEEG - en: null - 2007-01-01: - scalar: 30.0 - reference: Art. 1 G. v. 05.12.2006 BGBl. I S. 2748 - 2021-09-01: - scalar: 32.0 - reference: Art. 1 G. v. 15.02.2021 BGBl. I S. 239 diff --git a/src/_gettsim/parameters/erwerbsm_rente.yaml b/src/_gettsim/parameters/erwerbsm_rente.yaml deleted file mode 100644 index 69d59edb4d..0000000000 --- a/src/_gettsim/parameters/erwerbsm_rente.yaml +++ /dev/null @@ -1,273 +0,0 @@ ---- -altersgrenze_abschlagsfrei: - name: - de: Regelaltersgrenze - en: Statutory retirement age - description: - de: >- - Altersgrenze bis zu der man die Erwerbsminderungsrente ohne Abzüge in - Anspruch nehmen kann. Bis 2012 lag die Regelaltersgrenze bei 63. Ab dann - schrittweise Anhebung bis 65. - en: >- - Age limit up to which one can claim the public disability insurance without - deductions. Up to 2012, the standard retirement age was 63. - From then on gradual increase until 65. - unit: Year - reference: § 77 SGB VI Zugangsfaktor - note: >- - "https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/ - 295-erwerbsminderungsrente-und-rentenabschlaege.html" - 2001-01-01: - scalar: 63 - 2012-01-01: - scalar: 63.083333 - 2012-02-01: - scalar: 63.166666 - 2012-03-01: - scalar: 63.25 - 2012-04-01: - scalar: 63.333333 - 2012-05-01: - scalar: 63.416666 - 2012-06-01: - scalar: 63.5 - 2013-01-01: - scalar: 63.583333 - 2014-01-01: - scalar: 63.666666 - 2015-01-01: - scalar: 63.75 - 2016-01-01: - scalar: 63.833333 - 2017-01-01: - scalar: 63.916666 - 2018-01-01: - scalar: 64 - 2019-01-01: - scalar: 64.166666 - 2020-01-01: - scalar: 64.333333 - 2021-01-01: - scalar: 64.5 - 2022-01-01: - scalar: 64.666666 - 2023-01-01: - scalar: 64.833333 - 2024-01-01: - scalar: 65 -altersgrenze_langj_versicherte_abschlagsfrei: - name: - de: Regelaltersgrenze für langjährige Versicherte - en: Statutory retirement age for long-term insured persons - description: - de: >- - Altersgrenze bis zu der man die Erwerbsminderungsrente ohne Abzüge in - Anspruch nehmen kann wenn man bestimmte zeitliche Bedingungen - erfüllt. Bedingungen werden in § 77 Abs. 4 SGB VI definiert. - en: >- - Age limit up to which one can claim the public disability insurance - without deductions under certain time conditions. - These conditions are defined in § 77 4 SGB VI. - unit: Year - reference: § 77 Abs. 4 SGB VI Zugangsfaktor - 2001-01-01: - scalar: 63 -wartezeitgrenze_langjährig_versicherte_abschlagsfrei: - name: - de: Wartezeitgrenze für abschlagsfreie Erwerbsminderungsrente - en: Waiting time limit for public disability pension without deductions - description: - de: >- - Anzahl an Wartezeitjahren nach § 51 Absatz 3a SGB VI, die für eine abschlagsfreie - Erwerbsminderungsrente mit 63 nachgewiesen werden müssen. - en: >- - Number of waiting time years in accordance with § 51 Absatz 3a SGB VI, - which must be proven for a public disability pension at 63 without deductions. - unit: Year - reference: § 264d SGB VI Zugangsfaktor - 2001-01-01: - scalar: 35 - 2024-01-01: - scalar: 40 -zurechnungszeitgrenze: - name: - de: zurechnungszeitgrenze - en: Supplementary time limit - description: - de: >- - Altersgrenze für die Zurechnungszeit der Erwerbsminderungsrente. - Anhebung von 2020 bis 2027 um 1 Monat pro Kalendarjahr und ab 2028 - jeweils 2 Monate bis 67 erreicht ist. - en: >- - Age limit for the supplementary period of the public disability insurance. - Increase from 2020 to 2027 by 1 month per year, and from 2028 - by 2 months each year until 67 is reached. - unit: Year - reference: § 59 SGB VI Zurechnungszeit - note: >- - "https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/ - 295-erwerbsminderungsrente-und-rentenabschlaege.html" - for 2014 reform see: - Artikel 1 Nr. 4 des RV-Leistungsverbesserungsgesetz vom 23. Juni 2014, - BGBl. I, Seite 787 - for the time before 2004 see: - "https://www.bgbl.de/xaver/bgbl/text.xav?SID=&tf=xaver.component. - Text_0&tocf=&qmf=&hlf=xaver.component.Hitlist_0&bk=bgbl&start=%2F%2F* - %5B%40node_id%3D%27955873%27%5D&skin=pdf&tlevel=-2&nohist=1&sinst=23CF02AC" - (Anlage 23 (p.1837)) - 2001-01-01: - scalar: 62.916666 - 2001-02-01: - scalar: 62.833333 - 2001-03-01: - scalar: 62.75 - 2001-04-01: - scalar: 62.666666 - 2001-05-01: - scalar: 62.583333 - 2001-06-01: - scalar: 62.5 - 2001-07-01: - scalar: 62.416666 - 2001-08-01: - scalar: 62.333333 - 2001-09-01: - scalar: 62.25 - 2001-10-01: - scalar: 62.166666 - 2001-11-01: - scalar: 62.083333 - 2001-12-01: - scalar: 62 - 2002-01-01: - scalar: 61.916666 - 2002-02-01: - scalar: 61.833333 - 2002-03-01: - scalar: 61.75 - 2002-04-01: - scalar: 61.666666 - 2002-05-01: - scalar: 61.583333 - 2002-06-01: - scalar: 61.5 - 2002-07-01: - scalar: 61.416666 - 2002-08-01: - scalar: 61.333333 - 2002-09-01: - scalar: 61.25 - 2002-10-01: - scalar: 61.166666 - 2002-11-01: - scalar: 61.083333 - 2002-12-01: - scalar: 61 - 2003-01-01: - scalar: 60.916666 - 2003-02-01: - scalar: 60.833333 - 2003-03-01: - scalar: 60.75 - 2003-04-01: - scalar: 60.666666 - 2003-05-01: - scalar: 60.583333 - 2003-06-01: - scalar: 60.5 - 2003-07-01: - scalar: 60.416666 - 2003-08-01: - scalar: 60.333333 - 2003-09-01: - scalar: 60.25 - 2003-10-01: - scalar: 60.166666 - 2003-11-01: - scalar: 60.083333 - 2003-12-01: - scalar: 60 - 2014-07-01: - scalar: 62 - 2019-01-01: - scalar: 65.666666 - 2020-01-01: - scalar: 65.75 - 2021-01-01: - scalar: 65.833333 - 2022-01-01: - scalar: 65.916666 - 2023-01-01: - scalar: 66 - 2024-01-01: - scalar: 66.083333 - 2025-01-01: - scalar: 66.166666 - 2026-01-01: - scalar: 66.25 - 2027-01-01: - scalar: 66.333333 - 2028-01-01: - scalar: 66.5 - 2029-01-01: - scalar: 66.666666 - 2030-01-01: - scalar: 66.833333 - 2031-01-01: - scalar: 67 -min_zugangsfaktor: - name: - de: Kleinster möglicher Zugangsfaktor bei der Erwerbsminderungsrente - en: Smallest possible access factor for public disability insurance - description: - de: >- - Abzüge wegen frühzeitigem Eintritt in die Erwerbsminderungsrente - sind bei 10.8% gedeckelt. - en: Deductions for early retirement are capped at 10.8%. - unit: Factor - reference: § 77 SGB VI Zugangsfaktor - note: >- - Rentenreformgesetz 1999 (RRG 1999) - "http://www.portal-sozialpolitik.de/index.php?page=rentenversicherung" - 2000-01-01: - scalar: 0.892 -rentenartfaktor: - name: - de: rentenartfaktor für teilweise Erwerbsminderungsrente - en: Pension type factor for partial reduction in public disability insurance - description: - de: >- - Der Rentenartfaktor ist ein festgelegter Faktor für die - Rentenberechnung und bestimmt - das Sicherungsziel der Rentenart im Verhältnis zu einer Altersrente. - en: >- - The pension type factor is a fixed factor for the pension calculation - and determines - the security target of the pension type in relation to an old-age pension. - unit: Factor - reference: >- - § 67 SGB VI Rentenartfaktor: - note: >- - "https://sozialversicherung-kompetent.de/rentenversicherung/ - leistungsrecht/1051-rentenartfaktor.html" - 2001-01-01: - teilw: 0.5 - voll: 1.0 -altersgrenze_grundbewertung: - name: - de: Altersgrenze des belegungsfähigen Gesamtzeitraum - en: Age limit of belegungsfähigen Gesamtzeitraum - description: - de: >- - Als Teil der Grundbewertung wird der belegungsfähige Gesamtzeitraum - berechnet. Dieser entspricht dem Zeitraum vom 17. - Lebensjahr bis zum Beginn der Rente - en: >- - As part of the "Grundbewertung" the "belegungsfähige Gesamtzeitraum" is - calculated - which is the period from the age of 17 until the start of the pension. - unit: Year - reference: >- - SGB VI § 72: Grundbewertung - 2001-01-01: - scalar: 16 diff --git a/src/_gettsim/parameters/erziehungsgeld.yaml b/src/_gettsim/parameters/erziehungsgeld.yaml deleted file mode 100644 index ebe87a892f..0000000000 --- a/src/_gettsim/parameters/erziehungsgeld.yaml +++ /dev/null @@ -1,157 +0,0 @@ ---- -einkommensgrenze: - name: - de: Einkommensgrenze - en: Income threshold - description: - de: Einkommensgrenze für abzugsfreies Erziehungsgeld - en: Income threshold for deduction-free parental leave benefit - unit: Euro - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - note: Reduced income limit for children older than 6 months. - start_age_m_reduced_income_limit: 7 - limit: - alleinerziehend: - regelsatz: 23000 - budgetsatz: 19086 - paar: - regelsatz: 30000 - budgetsatz: 22086 - reduced_limit: - alleinerziehend: - regelsatz: 13500 - budgetsatz: 13500 - paar: - regelsatz: 16500 - budgetsatz: 16500 -aufschlag_einkommen: - name: - de: Erhöhung der Einkommensgrenze - en: Increase in the income threshold - description: - de: Erhöhung der Einkommensgrenze pro weiterem Kind - en: Increase in the income threshold per additional child - unit: Euro - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - scalar: 3140 -erziehungsgeld_satz: - name: - de: Erziehungsgeldsatz - en: null - description: - de: Höhe des Erziehungsgeldes abhängig vom beantragtem Satz - en: Amount of the parental leave benefit depending on the rate applied for - unit: Euro - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 § 5 (p.208) - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - regelsatz: 300 - budgetsatz: 450 -abschlag_faktor: - name: - de: Abschlagsfaktor - en: Deduction factor - description: - de: >- - Faktor zur Berechnung des Abschlags des Erziehungsgeldes bei einer - Überschreitung der Einkommensgrenze ab dem 7 Lebensmonat. - Der Faktor wird mit dem relevanten Einkommen multipliziert und - das Produkt entsprechend vom Erziehungsgeld Anspruch abgezogen - en: >- - Factor for calculating the reduction of the parental leave benefit in case of - exceeding the income threshold after the 7th month of life. - The factor is multiplied by the relevant income and - the product is deducted from the parental leave benefit entitlement accordingly. - unit: null - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - scalar: 0.052 -pauschal_abzug_auf_einkommen: - name: - de: Pauschaler Abzug vom Einkommen - en: null - description: - de: >- - Faktor um den das Einkommen pauschal reduziert wird um das das - relevanten Einkommen zu berechnen - en: >- - Factor by which the income is reduced in a lump sum in order to calculate the - relevant income - unit: null - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 § 6 (p.209) - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - scalar: 0.76 -arbeitsstunden_w_grenze: - name: - de: Wochenarbeitsstundengrenze - en: Weekly working hours limit - description: - de: >- - Grenze der wöchentlichen Arbeitsstunden bis zu der Erziehungsgeld ausgezahlt wird - en: >- - Limit of weekly working hours up to which parental leave benefit is paid - unit: null - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 § 15 (p.211) - note: >- - https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_ - BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bg - bl104s0206.pdf%27%5D__1685621730529 - 2004-02-09: - scalar: 30 -end_age_m_regelsatz: - name: - de: Alter des Kindes in Monaten bis zu dem der Regelsatz bezogen werden kann. - en: Age of the child in months up to which the Regelsatz can be claimed. - description: - de: >- - Alter des Kindes in Monaten bis zu dem der Regelsatz bezogen werden kann. - en: >- - Age of the child in months up to which the Regelsatz can be claimed. - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 - 2004-01-01: - scalar: 24 -end_age_m_budgetsatz: - name: - de: Alter des Kindes in Monaten bis zu dem der Budgetsatz bezogen werden kann. - en: Age of the child in months up to which the Budgetsatz can be claimed. - description: - de: >- - Alter des Kindes in Monaten bis zu dem der Budgetsatz bezogen werden kann. - en: >- - Age of the child in months up to which the Budgetsatz can be claimed. - reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 - 2004-01-01: - scalar: 12 -abolishment_cohort: - name: - de: Letzte Geburtskohorte für die Erziehungsgeld ausgezahlt wird - en: Abolishment cohort - description: - de: >- - Erziehungsgeld wird durch das Elterngeld ersetzt. - en: >- - Erziehungsgeld is replaced by Elterngeld. - reference: Bundesgesetzblatt Jahrgang 2006 Teil I Nr. 56 Art. 3 - 2006-12-11: - scalar: 2006 diff --git "a/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" "b/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" deleted file mode 100644 index c14203c9e8..0000000000 --- "a/src/_gettsim/parameters/geringf\303\274gige_einkommen.yaml" +++ /dev/null @@ -1,192 +0,0 @@ ---- -grenzen_m: - name: - de: >- - Minijob Grenze und Gleitzone / Midijob Grenze - en: Thresholds for marginal employment ('mini' and 'midi' jobs) - description: - de: Minijob § 8 (1) Nr. 1 SGB IV, Midijob § 20 (2) SGB IV - en: Minijob § 8 (1) Nr. 1 SGB IV, Midijob § 20 (2) SGB IV - unit: Euro - reference_period: Month - 1984-01-01: - minijob: - west: 199 - 1985-01-01: - deviation_from: previous - minijob: - west: 205 - 1986-01-01: - deviation_from: previous - minijob: - west: 210 - 1987-01-01: - deviation_from: previous - minijob: - west: 220 - 1988-01-01: - deviation_from: previous - minijob: - west: 225 - 1989-01-01: - deviation_from: previous - minijob: - west: 230 - 1990-01-01: - minijob: - west: 240 - ost: 102 - 1991-01-01: - minijob: - west: 245 - ost: 120 - 1992-01-01: - minijob: - west: 256 - ost: 153 - 1993-01-01: - minijob: - west: 271 - ost: 199 - 1994-01-01: - minijob: - west: 286 - ost: 225 - 1995-01-01: - minijob: - west: 297 - ost: 240 - 1996-01-01: - minijob: - west: 302 - ost: 256 - 1997-01-01: - minijob: - west: 312 - ost: 266 - 1998-01-01: - deviation_from: previous - minijob: - west: 317 - 1999-01-01: - minijob: - west: 322 - ost: 271 - 2000-01-01: - minijob: 322 - 2002-01-01: - deviation_from: previous - minijob: 325 - 2003-04-01: - minijob: 400 - midijob: 800 - 2013-01-01: - minijob: 450 - midijob: 850 - 2019-01-01: - deviation_from: previous - reference: Art. 4 G. v. 28.11.2018 BGBl. I S. 2016 - midijob: 1300 - 2022-10-01: - minijob: null - midijob: 1600 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 - note: minijob thresholds now calculated based on statutory minimum wage - 2023-01-01: - deviation_from: previous - midijob: 2000 - reference: Art. 3 G. v. 11.11.2022 BGBl. I S. 1985 -faktor_zähler: - name: - de: Zähler im Faktor für die Berechnung der Geringfügigkeitsgrenze. - en: >- - Numerator in the factor for the calculation of the marginal employment threshold. - description: - de: >- - Faktor, mit dem der Mindestlohn in der Berechnung der Geringfügigkeitsgrenze - multipliziert wird. - en: >- - Factor by which the minimum wage is multiplied to calculate the threshold for - marginal employment. - unit: null - reference: §8 (1a) SGB IV - 2022-10-01: - scalar: 130 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 -faktor_nenner: - name: - de: Nenner im Faktor für die Berechnung der Geringfügigkeitsgrenze. - en: >- - Denominator in the factor for the calculation of the marginal employment - threshold. - description: - de: >- - Betrag, durch den der Mindestlohn dividiert wird, um die Geringfügigkeitsgrenze zu - erhalten. - en: >- - Amount by which the minimum wage is divided to obtain the marginal employment - threshold. - unit: Euro - reference: §8 (1a) SGB IV - 2022-10-01: - scalar: 3 - reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 -arbeitgeberpauschale_lohnsteuer: - name: - de: Pauschalierte Lohnsteuer bei geringfügiger Beschäftigung - en: Fixed income tax rate for marginal employment - description: - de: >- - Pauschalierte Lohnsteuer des Arbeitgebers bei geringfügiger Beschäftigung - (§40a II EStG) - en: Fixed income tax rate for marginal employment (§40a II EStG) - unit: Share - access_different_date: jahresanfang - 1984-01-01: - scalar: 0 - 1999-01-01: - scalar: 0 - 2003-04-01: - scalar: 0.02 - 2007-01-01: - scalar: 0.02 - 2022-10-01: - scalar: null -mindestlohn: - name: - de: Allgemeiner gesetzlicher Mindestlohn pro Stunde - en: Statutory hourly minimum wage - description: - de: >- - Der Mindestlohn ist der niedrigste Stundenlohn, den ein Arbeitgeber für eine - regelmäßige, nicht mehr als 45 Stunden wöchentlich zu leistende Arbeitsleistung - zahlen muss. - en: >- - The minimum wage is the lowest hourly wage that an employer must pay for a - regular, not more than 45 hours weekly work. - unit: Euro - reference: §1 (2) Mindestlohngesetz - 2015-01-01: - scalar: 8.5 - 2017-01-01: - scalar: 8.84 - 2019-01-01: - scalar: 9.19 - 2020-01-01: - scalar: 9.35 - 2021-01-01: - scalar: 9.5 - 2021-07-01: - scalar: 9.6 - 2022-01-01: - scalar: 9.82 - 2022-07-01: - scalar: 10.45 - 2022-10-01: - scalar: 12 - 2024-01-01: - scalar: 12.41 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 - 2025-01-01: - scalar: 12.82 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 diff --git a/src/_gettsim/parameters/ges_krankenv.yaml b/src/_gettsim/parameters/ges_krankenv.yaml deleted file mode 100644 index b073954ff1..0000000000 --- a/src/_gettsim/parameters/ges_krankenv.yaml +++ /dev/null @@ -1,432 +0,0 @@ ---- -beitr_satz: - name: - de: Beitragssätze zur gesetzlichen Krankenversicherung - en: Contribution rate to statutory health insurance - description: - de: >- - Beitragssätze für gesetzliche Krankenversicherung. mean_allgemein - - durchschnittlicher Beitragssatz, bis 2008 allgemein - allgemeiner Satz (§241 SGB - V), ab 2009 sonderbeitrag - bezahlt von Arbeitnehmern, ab Jul 2005 bis 2014 - ermäßigt - ermäßigter Satz (§243 SGB V) zusatz - durchschnittlicher - Zusatzbeitragssatz. - en: >- - Statury Contribution Rates for mandatory health insurance. mean_allgemein - - average contribution rate, 1992 to 2008 allgemein - general statutory - contribution rate, since 2009 sonderbeitrag - paid by employees, Jul 2005 to - 2014 ermäßigt - reduced rate zusatz - average top-up contribution rate - unit: Share - access_different_date: jahresanfang - 1984-01-01: - mean_allgemein: 0.1144 - 1985-01-01: - mean_allgemein: 0.118 - 1986-01-01: - mean_allgemein: 0.122 - 1987-01-01: - mean_allgemein: 0.1248 - 1988-01-01: - mean_allgemein: 0.1288 - 1989-01-01: - mean_allgemein: 0.129 - 1990-01-01: - mean_allgemein: 0.125 - 1991-01-01: - mean_allgemein: 0.128 - 1993-01-01: - mean_allgemein: 0.134 - 1995-01-01: - mean_allgemein: 0.132 - 1997-01-01: - mean_allgemein: 0.134 - 1998-01-01: - mean_allgemein: 0.136 - 2000-01-01: - mean_allgemein: 0.1357 - 2001-01-01: - mean_allgemein: 0.1358 - 2002-01-01: - mean_allgemein: 0.14 - 2003-01-01: - mean_allgemein: 0.144 - 2004-01-01: - mean_allgemein: 0.142 - 2005-01-01: - mean_allgemein: 0.142 - 2005-07-01: - mean_allgemein: 0.133 - sonderbeitrag: 0.009 - note: >- - Allgemeiner Beitragssatz wird nicht mehr gleichmäßig aufgeteilt, Einführung des - Sonderbeitrags - reference: Art. 1 G. v. 15.12.2004, BGBl I S. 3445. - 2007-01-01: - deviation_from: previous - mean_allgemein: 0.139 - 2008-01-01: - mean_allgemein: 0.14 - sonderbeitrag: 0.009 - 2009-01-01: - allgemein: 0.146 - sonderbeitrag: 0.009 - ermäßigt: 0.140 - 2009-07-01: - allgemein: 0.14 - sonderbeitrag: 0.009 - ermäßigt: 0.134 - 2011-01-01: - deviation_from: previous - allgemein: 0.146 - ermäßigt: 0.14 - reference: Art. 1 G. v. 22.12.2010 BGBl. I S. 2309 - 2015-01-01: - allgemein: 0.146 - ermäßigt: 0.14 - mean_zusatzbeitrag: 0.009 - note: Abschaffung Sonderbeitrag, Einführung kassenabhängiger Zusatzbeitrag - 2016-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.011 - note: Bekanntmachung Bundesanzeiger 30.12.2015 - 2018-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.01 - 2019-01-01: - allgemein: 0.146 - ermäßigt: 0.14 - mean_zusatzbeitrag: 0.009 - note: Wieder-Einführung der Parität. Art. 2 G. v. 11.12.2018, BGBl. I S. 2387 - 2020-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.011 - reference: BAnz AT 28.10.2019 B3 - 2021-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.013 - reference: BAnz AT 30.10.2020 B5 - 2023-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.016 - reference: BAnz AT 31.10.2022 B5 - 2024-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.017 - reference: BAnz AT 31.10.2023 B3 - 2025-01-01: - deviation_from: previous - mean_zusatzbeitrag: 0.025 - reference: BAnz AT 07.11.2024 B4 -beitr_bemess_grenze_m: - name: - de: Beitragsbemessungsgrenzen für die Krankenversicherung - en: Income Threshold for health insurance - description: - de: Die Beitragsbemessungsgrenze für Kranken- und Pflegeversicherung ist identisch. - en: The income threshold is the same for health and long-term care insurance. - unit: Euro - reference_period: Month - 1984-01-01: - west: 1994 - 1985-01-01: - west: 2071 - 1986-01-01: - west: 2147 - 1987-01-01: - west: 2186 - 1988-01-01: - west: 2301 - 1989-01-01: - west: 2339 - 1990-01-01: - west: 2416 - ost: 1035 - 1991-01-01: - west: 2493 - ost: 1151 - 1992-01-01: - west: 2608 - ost: 1841 - 1993-01-01: - west: 2761 - ost: 2032 - 1994-01-01: - west: 2914 - ost: 2262 - 1995-01-01: - west: 2991 - ost: 2454 - 1996-01-01: - west: 3068 - ost: 2608 - 1997-01-01: - west: 3144 - ost: 2723 - 1998-01-01: - west: 3221 - ost: 2684 - 1999-01-01: - west: 3259 - ost: 2761 - 2000-01-01: - west: 3298 - ost: 2723 - 2001-01-01: - west: 3336 - ost: 3336 - 2002-01-01: - west: 3375 - ost: 3375 - 2003-01-01: - west: 3450 - ost: 3375 - 2004-01-01: - west: 3488 - ost: 3488 - 2005-01-01: - west: 3525 - ost: 3525 - 2006-01-01: - west: 3562.5 - ost: 3562.5 - 2008-01-01: - west: 3600 - ost: 3600 - 2009-01-01: - west: 3675 - ost: 3675 - 2010-01-01: - west: 3750 - ost: 3750 - 2011-01-01: - west: 3712.5 - ost: 3712.5 - 2012-01-01: - west: 3825 - ost: 3825 - 2013-01-01: - west: 3937.5 - ost: 3937.5 - 2014-01-01: - west: 4050 - ost: 4050 - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - 2015-01-01: - west: 4125 - ost: 4125 - 2016-01-01: - west: 4237.5 - ost: 4237.5 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - 2017-01-01: - west: 4350 - ost: 4350 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - 2018-01-01: - west: 4425 - ost: 4425 - 2019-01-01: - west: 4537.5 - ost: 4537.5 - 2020-01-01: - west: 4687.5 - ost: 4687.5 - reference: V. v. 17.12.2019 BGBl. I S. 2848 - 2021-01-01: - west: 4837.5 - ost: 4837.5 - reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - west: 4837.5 - ost: 4837.5 - reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - west: 4987.5 - ost: 4987.5 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - west: 5175 - ost: 5175 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - 2025-01-01: - west: 5512.5 - ost: 5512.5 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 -arbeitgeberpauschale_bei_geringfügiger_beschäftigung: - name: - de: >- - Pauschalbeitrag des Arbeitgebers zur Krankenversicherung bei geringfügiger - Beschäftigung - en: Fixed employer health insurance contribution for marginal employment - description: - de: >- - Pauschalbeitrag des Arbeitgebers zur Krankenversicherung (§ 249b SGB V) bei - geringfügiger Beschäftigung - en: Fixed health insurance contributions for marginal employment (§ 249b SGB V) - unit: Share - access_different_date: jahresanfang - 1984-01-01: - scalar: 0 - 1999-01-01: - scalar: 0.1 - 2003-04-01: - scalar: 0.11 - 2007-01-01: - scalar: 0.13 -bezugsgröße_selbst_m: - name: - de: Monatliche Bezugsgröße für Selbstständige - en: Monthly reference size for self employed - description: - de: §18 SGB IV ynd https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe - en: §18 SGB IV and https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe - unit: Euro - reference_period: Month - 1984-01-01: - west: 1396 - 1985-01-01: - west: 1432 - 1986-01-01: - west: 1467 - 1987-01-01: - west: 1539 - 1988-01-01: - west: 1575 - 1989-01-01: - west: 1611 - 1990-01-01: - west: 1682 - ost: 715.8086336747059 - 1991-01-01: - west: 1718 - ost: 787.3894970421765 - 1992-01-01: - west: 1790 - ost: 1073.712950512059 - 1993-01-01: - west: 1897 - ost: 1395.826835665677 - 1994-01-01: - west: 2004 - ost: 1574.778994084353 - 1995-01-01: - west: 2076 - ost: 1682.150289135559 - 1996-01-01: - west: 2112 - ost: 1789.521584186765 - 1997-01-01: - west: 2183 - ost: 1861.102447554235 - 1998-01-01: - west: 2219 - ost: 1896.892879237971 - 1999-01-01: - west: 2255 - ost: 1896.892879237971 - 2000-01-01: - west: 2291 - ost: 1861.102447554235 - 2001-01-01: - deviation_from: previous - ost: 1932.683310921706 - 2002-01-01: - west: 2345 - ost: 1960 - 2003-01-01: - west: 2380 - ost: 1995 - 2004-01-01: - west: 2415 - ost: 2030 - 2006-01-01: - west: 2450 - ost: 2065 - 2007-01-01: - deviation_from: previous - ost: 2100 - 2008-01-01: - deviation_from: previous - west: 2485 - 2009-01-01: - west: 2520 - ost: 2135 - 2010-01-01: - west: 2555 - ost: 2170 - 2011-01-01: - deviation_from: previous - ost: 2240 - 2012-01-01: - deviation_from: previous - west: 2625 - 2013-01-01: - west: 2695 - ost: 2275 - 2014-01-01: - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - west: 2765 - ost: 2345 - 2015-01-01: - west: 2835 - ost: 2415 - 2016-01-01: - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - west: 2905 - ost: 2520 - 2017-01-01: - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - west: 2975 - ost: 2660 - 2018-01-01: - west: 3045 - ost: 2695 - 2019-01-01: - note: Sozialversicherungs-Rechengrößenverordnung 2019, BGBl I S. 2024, 27.11.2018 - west: 3115 - ost: 2870 - 2020-01-01: - reference: §2 V. v. 17.12.2019 BGBl. I S. 2848 - west: 3185 - ost: 3010 - 2021-01-01: - west: 3290 - ost: 3115 - reference: §2 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - west: 3290 - ost: 3150 - reference: §2 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - west: 3395 - ost: 3290 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - west: 3535 - ost: 3465 - reference: V. v. 29.11.2023 BGBl. 2023 I Nr. 322. - 2025-01-01: - west: 3745 - ost: 3745 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365. -mindestanteil_bezugsgröße_beitragspf_einnahme_selbst: - name: - de: Mindestberechungsbeitrag für Selbstständige als Anteil der Bezugsgröße - en: Minimum contribution for self employed as fraction of Bezugsgröße - description: - de: >- - Als beitragspflichtige Einnahmen gilt für den Kalendertag mindestens der - neunzigste Teil der monatlichen Bezugsgröße (1/90*30) - en: >- - Health Insurance contributions have to be payed, at the minimum, on the ninetieth - part of the monthly Bezugsgröße for each calender day - unit: Share - reference: §240 SGB V Abs. 4 - note: Exact date of introduction of this parameter unclear (was in place in 2006) - 1990-01-01: - scalar: 0.33333333 diff --git a/src/_gettsim/parameters/ges_pflegev.yaml b/src/_gettsim/parameters/ges_pflegev.yaml deleted file mode 100644 index 20e04b7673..0000000000 --- a/src/_gettsim/parameters/ges_pflegev.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -beitr_satz: - name: - de: Beitragssätze zur gesetzlichen Pflegeversicherung - en: Contribution rate to statutory care insurance - description: - de: >- - Beitragssätze für gesetzliche Pflegeversicherung (seit 1995). standard - - Beitragssatz für Arbeitnehmer zusatz_kinderlos - Beitragszuschlag für kinderlose - Versicherte, die das 23. Lebensjahr vollendet haben. Wird vom Arbeitnehmer - alleine getragen. Eingeführt 2005. - en: >- - Statury Contribution Rates for mandatory care insurance (since 1995). standard - - employees contribution rate zusatz_kinderlos - contribution rate for insured - people without children and at least 23 years old. paid by employees. est. 2005 - unit: Share - access_different_date: jahresanfang - 1995-01-01: - scalar: 0.005 - 1997-01-01: - scalar: 0.0085 - 2005-01-01: - standard: 0.0085 - zusatz_kinderlos: 0.0025 - 2008-01-01: - standard: 0.00975 - zusatz_kinderlos: 0.0025 - 2013-01-01: - deviation_from: previous - standard: 0.01025 - 2015-01-01: - standard: 0.01175 - zusatz_kinderlos: 0.0025 - 2017-01-01: - deviation_from: previous - standard: 0.01275 - 2019-01-01: - standard: 0.01525 - zusatz_kinderlos: 0.0025 - 2022-01-01: - deviation_from: previous - zusatz_kinderlos: 0.0035 - reference: Art. 2 Nr. 14 G. v. 11.07.2021, BGBl. I S. 2754. - 2023-07-01: - standard: 0.017 - zusatz_kinderlos: 0.006 - abschlag_kinder: 0.0025 - note: >- - Pflegeunterstützungs- und -entlastungsgesetz - PUEG - Increase of contribution rates for ges_pflegev and introduction of reduction of - contribution rates for people with children. - 2025-01-01: - deviation_from: previous - standard: 0.018 - reference: >- - Pflege-Beitragssatz-Anpassungsverordnung 2025, Bundestag-Drucksache 20/1371 -beitr_bemess_grenze_m: - name: - de: Beitragsbemessungsgrenzen für die Pflegeversicherung - en: Income Threshold for care insurance - description: - de: Die Beitragsbemessungsgrenze für Kranken- und Pflegeversicherung ist identisch. - en: The income threshold is the same for health and long-term care insurance. - unit: Euro - reference_period: Month - 1995-01-01: - west: 2991 - ost: 2454 - 1996-01-01: - west: 3068 - ost: 2608 - 1997-01-01: - west: 3144 - ost: 2723 - 1998-01-01: - west: 3221 - ost: 2684 - 1999-01-01: - west: 3259 - ost: 2761 - 2000-01-01: - west: 3298 - ost: 2723 - 2001-01-01: - west: 3336 - ost: 3336 - 2002-01-01: - west: 3375 - ost: 3375 - 2003-01-01: - west: 3450 - ost: 3375 - 2004-01-01: - west: 3488 - ost: 3488 - 2005-01-01: - west: 3525 - ost: 3525 - 2006-01-01: - west: 3562.5 - ost: 3562.5 - 2008-01-01: - west: 3600 - ost: 3600 - 2009-01-01: - west: 3675 - ost: 3675 - 2010-01-01: - west: 3750 - ost: 3750 - 2011-01-01: - deviation_from: previous - west: 3712.5 - ost: 3712.5 - 2012-01-01: - deviation_from: previous - west: 3825 - ost: 3825 - 2013-01-01: - west: 3937.5 - ost: 3937.5 - 2014-01-01: - west: 4050 - ost: 4050 - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - 2015-01-01: - west: 4125 - ost: 4125 - 2016-01-01: - west: 4237.5 - ost: 4237.5 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - 2017-01-01: - west: 4350 - ost: 4350 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - 2018-01-01: - west: 4425 - ost: 4425 - 2019-01-01: - west: 4537.5 - ost: 4537.5 - 2020-01-01: - west: 4687.5 - ost: 4687.5 - reference: V. v. 17.12.2019 BGBl. I S. 2848 - 2021-01-01: - west: 4837.5 - ost: 4837.5 - reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - deviation_from: previous - west: 4837.5 - ost: 4837.5 - reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - west: 4987.5 - ost: 4987.5 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - west: 5175 - ost: 5175 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - 2025-01-01: - west: 5512.5 - ost: 5512.5 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 -zusatz_kinderlos_mindestalter: - name: - de: Mindestalter Beitragszuschlag für Kinderlose - en: Minimum age for additional contribution for childless - description: - de: >- - Kinderlose Mitglieder der sozialen Pflegeversicherung, die das 23. Lebensjahr - vollendet haben, müssen seit dem 1. Januar 2005 einen erhöhten Beitragssatz - entrichten. - en: >- - Childless members of the social care insurance, who have reached the age of 23, - have to pay a higher contribution rate since January 1, 2005. - unit: Year - reference: § 55 Abs. 3 SGB XI, KiBG Art. 1 - 2005-01-01: - scalar: 23 diff --git a/src/_gettsim/parameters/ges_rente.yaml b/src/_gettsim/parameters/ges_rente.yaml deleted file mode 100644 index 677fcebebe..0000000000 --- a/src/_gettsim/parameters/ges_rente.yaml +++ /dev/null @@ -1,2447 +0,0 @@ ---- -alpha: - name: - de: alpha - en: alpha - description: - de: >- - Teil des Nachhaltigkeitsfaktors in der Rentenanpassungsformel, welche das - Verhältnis von Rentnern zu Beitragszahlern modifiziert - en: >- - Part of the sustainability factor in the pension adjustment formula which modifies - the ratio of pentioners to contributors - unit: Factor - reference: §68 Abs. 4 S. 6 SGB VI - 1984-01-01: - scalar: 0.0 - 2002-01-01: - scalar: 0.25 -altersvorsogeanteil: - name: - de: Altersvorsorgeanteil (AVA) - en: Personal pension share - description: - de: Teil des Riesterfaktors in der Rentenanpassungsformel - en: Part of the Riesterfaktor in the pension adjustment formular - unit: Factor - reference: §68 Abs. 5 SGB VI - 1993-01-01: - scalar: 0.0 - 2002-01-01: - scalar: 0.5 - 2003-01-01: - scalar: 1.0 - 2004-01-01: - scalar: 1.5 - 2005-01-01: - scalar: 2.0 - 2009-01-01: - scalar: 2.5 - 2010-01-01: - scalar: 3.0 - 2011-01-01: - scalar: 3.5 - 2012-01-01: - scalar: 4.0 -beitragsvolumen: - name: - de: Beitragsvolumen der gesetzlichen Rentenversicherung - en: Contribution volume of the statutory pension insurance - description: - de: >- - Summe der Beiträge zur Rentenversicherung aller rentenversicherungspflichtig - Beschäftigten, der geringfügig Beschäftigten und der Bezieher von ALG. - statistik-rente.de/drv - en: >- - Sum of contributions to the pension insurance of all employees subject to pension - insurance, marginally employed and recipients of ALG. - unit: Euro - 1991-01-01: - scalar: 108688000 - 1992-01-01: - scalar: 117359000 - 1993-01-01: - scalar: 120559000 - 1994-01-01: - scalar: 132938000 - 1995-01-01: - scalar: 139921000 - 1996-01-01: - scalar: 146160000 - 1997-01-01: - scalar: 153658000 - 1998-01-01: - scalar: 153763000 - 1999-01-01: - scalar: 160506000 - 2000-01-01: - scalar: 163367000 - 2001-01-01: - scalar: 164694000 - 2002-01-01: - scalar: 165481000 - 2003-01-01: - scalar: 169425000 - 2004-01-01: - scalar: 169399000 - 2005-01-01: - scalar: 168954000 - 2006-01-01: - scalar: 180545000 - 2007-01-01: - scalar: 174726000 - 2008-01-01: - scalar: 180028000 - 2009-01-01: - scalar: 181572000 - 2010-01-01: - scalar: 185288000 - 2011-01-01: - scalar: 189850000 - 2012-01-01: - scalar: 193687000 - 2013-01-01: - scalar: 194334000 - 2014-01-01: - scalar: 201647000 - 2015-01-01: - scalar: 207317000 - 2016-01-01: - scalar: 215422000 - 2017-01-01: - scalar: 225244000 - 2018-01-01: - scalar: 236404000 - 2019-01-01: - scalar: 247949000 -eckrente: - name: - de: Regelaltersrente/ Standardrente - en: Standard pension - description: - de: >- - Höhe einer abschlagsfreien Rente bei 45 Entgeltpunkten. Ergibt sich aus - Multiplikation des Rentenwerts mit 45. statistik-rente.de/drv - en: >- - Amount of a pension without discounts when reaching 45 Entgeltpunkte, which is - calculated by multiplying 45 with the Rentenwert. - unit: Euro - reference: § 154 Abs. 3 Satz 1 Nr. 2 SGB VI - 1995-01-01: - scalar: 988.15 - 1996-01-01: - scalar: 992.72 - 1997-01-01: - scalar: 1009.1 - 1998-01-01: - scalar: 1012.47 - 1999-01-01: - scalar: 1026.62 - 2000-01-01: - scalar: 1032.79 - 2001-01-01: - scalar: 1051.99 - 2002-01-01: - scalar: 1072.35 - 2003-01-01: - scalar: 1081.79 - 2004-01-01: - scalar: 1071.79 - 2005-01-01: - scalar: 1063.41 - 2006-01-01: - scalar: 1066.35 - 2007-01-01: - scalar: 1067.8 - 2008-01-01: - scalar: 1077.02 - 2009-01-01: - scalar: 1100.84 - 2010-01-01: - scalar: 1102.67 - 2011-01-01: - scalar: 1109.91 - 2012-01-01: - scalar: 1134.15 - 2013-01-01: - scalar: 1135.71 - 2014-01-01: - scalar: 1154.68 - 2015-01-01: - scalar: 1174.96 - 2016-01-01: - scalar: 1222.09 - 2017-01-01: - scalar: 1242.58 - 2018-01-01: - scalar: 1284.06 -durchschnittslohn: - name: - de: Durchschnittslohn - en: Mean Wage - description: - de: Durchschnittsbruttolohn aller Arbeitnehmer:innen in einem Jahr - en: Mean gross wage of all employees per year - unit: Euro - reference_period: Year - 2005-01-01: - scalar: 28468.23 - 2006-01-01: - scalar: 28673.22 - 2007-01-01: - scalar: 28978.19 - 2008-01-01: - scalar: 29262.71 - 2009-01-01: - scalar: 29774.24 - 2010-01-01: - scalar: 30086.57 - 2011-01-01: - scalar: 30770.62 - 2012-01-01: - scalar: 31452.49 - 2013-01-01: - scalar: 31583.35 - 2014-01-01: - scalar: 32313.66 - 2015-01-01: - scalar: 33047.02 - 2016-01-01: - scalar: 33608.42 -beitragspflichtiges_durchschnittsentgelt: - name: - de: Beitragspflichtiges Durchschnittsentgelt aller Versicherten - en: Mean relevant wage of all insured individuals - description: - de: >- - Durchschnittsentgelt aller Versicherten im Sinne der deutschen Sozialversicherung. - Dieses wird benötigt zur Berechnung der Entgeltpunkte. - en: >- - Mean wage of all insured people in the sense of the German social insurance, which - is needed to calculate the Entgeltpunkte. - unit: Euro - reference period: year - reference: Anlage 1 SGB VI - 2005-01-01: - scalar: 29202 - 2006-01-01: - scalar: 29494 - 2007-01-01: - scalar: 29951 - 2008-01-01: - scalar: 30625 - 2009-01-01: - scalar: 30506 - 2010-01-01: - scalar: 31144 - 2011-01-01: - scalar: 32100 - 2012-01-01: - scalar: 33002 - 2013-01-01: - scalar: 33659 - 2014-01-01: - scalar: 34514 - 2015-01-01: - scalar: 35363 - 2016-01-01: - scalar: 36187 - 2017-01-01: - scalar: 37077 - 2018-01-01: - scalar: 38212 - reference: V. v. 17.12.2019 BGBl. I S. 2848. - 2019-01-01: - scalar: 39301 - reference: V. v. 30.11.2020 BGBl. I S. 2612. - 2020-01-01: - scalar: 39167 - reference: §1 V. v. 30.11.2021, BGBl. I S. 5044. - 2021-01-01: - scalar: 40463 - reference: §3 V. v. 28.11.2022 BGBl. I S. 2128 (Nr. 47). - 2022-01-01: - scalar: 42053 - reference: §3 V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - 2023-01-01: - scalar: 44732 - reference: §3 V. v. 25.11.2024 BGBl. 2024 I Nr. 365. - 2024-01-01: - scalar: 45358 - reference: §3 V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - note: Vorläufiges Durchschnittsentgelt - 2025-01-01: - scalar: 50493 - reference: §3 V. v. 25.11.2024 BGBl. 2024 I Nr. 365. - note: Vorläufiges Durchschnittsentgelt -umrechnung_entgeltpunkte_beitrittsgebiet: - name: - de: Umrechnung der Beitragsbemessungsgrundlagen des Beitrittgebietes - en: Conversion of the Beitragsbemessungsgrundlage in former GDR - description: - de: >- - Für die Berechnung der Entgeltpunkte wird das Einkommen im "Beitrittsgebiet" um - diesen Faktor erhöht. - en: >- - To calculate the Entgeltpunkte, income in the former GDR is increased by this - factor. - unit: Factor - reference: §256a SGB VI and Anlage 10 SGB VI - 1945-01-01: - scalar: 1.0000 - 1946-01-01: - scalar: 1.0000 - 1947-01-01: - scalar: 1.0000 - 1948-01-01: - scalar: 1.0000 - 1949-01-01: - scalar: 1.0000 - 1950-01-01: - scalar: 0.9931 - 1951-01-01: - scalar: 1.0502 - 1952-01-01: - scalar: 1.0617 - 1953-01-01: - scalar: 1.0458 - 1954-01-01: - scalar: 1.0185 - 1955-01-01: - scalar: 1.0656 - 1956-01-01: - scalar: 1.1029 - 1957-01-01: - scalar: 1.1081 - 1958-01-01: - scalar: 1.0992 - 1959-01-01: - scalar: 1.0838 - 1960-01-01: - scalar: 1.1451 - 1961-01-01: - scalar: 1.2374 - 1962-01-01: - scalar: 1.3156 - 1963-01-01: - scalar: 1.3667 - 1964-01-01: - scalar: 1.4568 - 1965-01-01: - scalar: 1.5462 - 1966-01-01: - scalar: 1.6018 - 1967-01-01: - scalar: 1.5927 - 1968-01-01: - scalar: 1.6405 - 1969-01-01: - scalar: 1.7321 - 1970-01-01: - scalar: 1.8875 - 1971-01-01: - scalar: 2.0490 - 1972-01-01: - scalar: 2.1705 - 1973-01-01: - scalar: 2.3637 - 1974-01-01: - scalar: 2.5451 - 1975-01-01: - scalar: 2.6272 - 1976-01-01: - scalar: 2.7344 - 1977-01-01: - scalar: 2.8343 - 1978-01-01: - scalar: 2.8923 - 1979-01-01: - scalar: 2.9734 - 1980-01-01: - scalar: 3.1208 - 1981-01-01: - scalar: 3.1634 - 1982-01-01: - scalar: 3.2147 - 1983-01-01: - scalar: 3.2627 - 1984-01-01: - scalar: 3.2885 - 1985-01-01: - scalar: 3.3129 - 1986-01-01: - scalar: 3.2968 - 1987-01-01: - scalar: 3.2548 - 1988-01-01: - scalar: 3.2381 - 1989-01-01: - scalar: 3.2330 - 1990-01-01: - scalar: 3.0707 - 1990-06-01: - scalar: 2.3473 - 1991-01-01: - scalar: 1.7235 - 1992-01-01: - scalar: 1.4393 - 1993-01-01: - scalar: 1.3197 - 1994-01-01: - scalar: 1.2687 - 1995-01-01: - scalar: 1.2317 - 1996-01-01: - scalar: 1.2209 - 1997-01-01: - scalar: 1.2089 - 1998-01-01: - scalar: 1.2113 - 1999-01-01: - scalar: 1.2054 - 2000-01-01: - scalar: 1.2030 - 2001-01-01: - scalar: 1.2003 - 2002-01-01: - scalar: 1.1972 - 2003-01-01: - scalar: 1.1943 - 2004-01-01: - scalar: 1.1932 - 2005-01-01: - scalar: 1.1827 - 2006-01-01: - scalar: 1.1827 - 2007-01-01: - scalar: 1.1841 - 2008-01-01: - scalar: 1.1857 - 2009-01-01: - scalar: 1.1712 - 2010-01-01: - scalar: 1.1726 - 2011-01-01: - scalar: 1.1740 - 2012-01-01: - scalar: 1.1785 - 2013-01-01: - scalar: 1.1762 - 2014-01-01: - scalar: 1.1665 - 2015-01-01: - scalar: 1.1502 - 2016-01-01: - scalar: 1.1415 - 2017-01-01: - scalar: 1.1374 - 2018-01-01: - scalar: 1.1339 - 2019-01-01: - scalar: 1.0840 - 2020-01-01: - scalar: 1.0700 - 2021-01-01: - scalar: 1.0560 - 2022-01-01: - scalar: 1.0420 - 2023-01-01: - scalar: 1.0280 - 2024-01-01: - scalar: 1.0140 -gesamtes_rentenvolumen: - name: - de: Rentenvolumen - en: pension volume - description: - de: Gesamtvolumen der ausgezahlten Renten - en: Total amount of paid pensions - unit: Euro - reference period: year - 1991-01-01: - scalar: 117912000 - 1992-01-01: - scalar: 130901000 - 1993-01-01: - scalar: 141180000 - 1994-01-01: - scalar: 152798000 - 1995-01-01: - scalar: 162625000 - 1996-01-01: - scalar: 168955000 - 1997-01-01: - scalar: 174479000 - 1998-01-01: - scalar: 180323800 - 1999-01-01: - scalar: 184139000 - 2000-01-01: - scalar: 190198000 - 2001-01-01: - scalar: 195776000 - 2002-01-01: - scalar: 202355000 - 2003-01-01: - scalar: 207749000 - 2004-01-01: - scalar: 210522000 - 2005-01-01: - scalar: 211861000 - 2006-01-01: - scalar: 212421000 - 2007-01-01: - scalar: 213649000 - 2008-01-01: - scalar: 216182000 - 2009-01-01: - scalar: 220841000 - 2010-01-01: - scalar: 224352000 - 2011-01-01: - scalar: 225411000 - 2012-01-01: - scalar: 229231000 - 2013-01-01: - scalar: 232297000 - 2014-01-01: - scalar: 238991000 - 2015-01-01: - scalar: 249568000 - 2016-01-01: - scalar: 259345000 - 2017-01-01: - scalar: 286860000 - 2018-01-01: - scalar: 277102000 - 2019-01-01: - scalar: 291359000 -rentenwert: - name: - de: Rentenwerte alte und neue Bundesländer - en: Pension value old and new federal states - description: - de: >- - Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für - einen Entgeltpunkt entspricht. - en: >- - The current pension value expresses the amount of monthly pension paid for one - Entgeltpunkt. - unit: Euro - reference: statistik-rente.de/drv, § 68 SGB VI - access_different_date: vorjahr - 1992-01-01: - west: 21.19 - ost: 12.05 - 1992-07-01: - west: 21.80 - ost: 13.59 - 1993-01-01: - deviation_from: previous - ost: 14.41 - 1993-07-01: - west: 22.75 - ost: 16.45 - 1994-01-01: - deviation_from: previous - ost: 17.05 - 1994-07-01: - west: 23.52 - ost: 17.63 - 1995-01-01: - deviation_from: previous - ost: 18.13 - 1995-07-01: - west: 23.64 - ost: 18.58 - 1996-01-01: - deviation_from: previous - ost: 19.39 - 1996-07-01: - west: 23.86 - ost: 19.62 - 1997-07-01: - west: 24.26 - ost: 20.71 - 1998-07-01: - west: 24.36 - ost: 20.90 - 1999-07-01: - west: 24.69 - ost: 21.48 - 2000-07-01: - west: 24.84 - ost: 21.61 - 2001-07-01: - west: 25.31 - ost: 22.06 - 2002-07-01: - west: 25.86 - ost: 22.70 - 2003-07-01: - west: 26.13 - ost: 22.97 - 2007-07-01: - west: 26.27 - ost: 23.09 - 2008-07-01: - west: 26.56 - ost: 23.34 - 2009-07-01: - west: 27.2 - ost: 24.13 - 2011-07-01: - west: 27.47 - ost: 24.37 - 2012-07-01: - west: 28.07 - ost: 24.92 - 2013-07-01: - west: 28.14 - ost: 25.74 - 2014-07-01: - west: 28.61 - ost: 26.39 - 2015-07-01: - west: 29.21 - ost: 27.05 - 2016-07-01: - west: 30.45 - ost: 28.66 - 2017-07-01: - west: 31.03 - ost: 29.69 - 2018-07-01: - west: 32.03 - ost: 30.69 - 2019-07-01: - west: 33.05 - ost: 31.89 - 2020-07-01: - west: 34.19 - ost: 33.23 - 2021-07-01: - deviation_from: previous - ost: 33.47 - 2022-07-01: - west: 36.02 - ost: 35.52 - 2023-07-01: - west: 37.60 - ost: 37.60 - 2024-01-07: - west: 39.32 - ost: 39.32 - reference: V. v. 17.06.2024 BGBl. 2024 I Nr. 194. -grundr_höchstwert: - name: - de: Höchstwert der Entgeltpunkte für Grundrente - en: Maximum value of Entgeltpunkte for Grundrente - description: - de: >- - Konstante zur Bestimmung des Höchstwerts der durchschnittlichen Entgeltpunkte und - des Effekts eines weiteren Monats an Grundrentenzeiten auf Höchstwert. - en: >- - constant to determine Höchstwert of additional Entgeltpunkte and effect of an - additional month of Grundrentenzeiten on Höchstwert. - 2021-01-01: - base: 0.0334 - increment: 0.001389 - reference: § 76g Abs. 4 S. 3, 4 SGB VI -grundrente_zugangsfaktor_max: - name: - de: Zugangsfaktor bei Grundrente - en: Access factor for basic pension - description: - de: Der Zugangsfaktor für die Grundrente ist auf 1 begrenzt. - en: The entry factor for the basic pension is capped at 1. - reference: § 77 Abs. 2 SGB VI - 2021-01-01: - scalar: 1 -grundrentenzeiten_monate: - name: - de: Grundrentenzeiten - en: Months needed for basic pension - description: - de: >- - Minimal benötigte Grundrentenzeiten um zur Grundrente berechtigt zu sein und Zahl - an Grundrentenzeiten ab der zusätzliche Monate an Grundrentenzeiten nicht - berücksichtigt werden - en: >- - Minimal number of Grundrentenzeiten required to be entitled to Grundrente and - maximum number of months that are considered for Grundrente. - unit: Month - 2021-01-01: - min: 396 - max: 420 - reference: § 76g Abs. 4 S. 5,6 / Abs. 1 S. 1 SGB VI -grundr_einkommensanr_single: - name: - de: Einkommensanrechnung Grundrente für Personen ohne verheiratetem Partner - en: Crediting of income for basic pension for individuals without married partner - description: - de: >- - Werte werden mit dem Rentenwert multipliziert, um Schwellen der - Einkommensanrechnung des Grundrentenzuschlags zu ermitteln - en: >- - Values are multiplied with the Rentenwert to compute the thresholds of the income - crediting rule of Grundrentenzuschlag - reference: § 97a Abs. 4 S. 2, 4 SGB VI - type: piecewise_linear - 2021-01-01: - 0: - lower_threshold: -inf - upper_threshold: 36.56 - rate_linear: 0 - intercept_at_lower_threshold: 0 - 1: - upper_threshold: 46.78 - rate_linear: 0.6 - 2: - upper_threshold: inf - rate_linear: 1 -grundr_einkommensanr_verheiratet: - name: - de: Einkommensanrechnung Grundrente für Personen mit verheiratetem Partner - en: Crediting of income for basic pension for individuals with married partner - description: - de: >- - Werte werden mit dem Rentenwert multipliziert, um Schwellen der - Einkommensanrechnung des Grundrentenzuschlags zu ermitteln - en: >- - Values are multiplied with the Rentenwert to compute the thresholds of the income - crediting rule of Grundrentenzuschlag - reference: § 97a Abs. 4 S. 2, 4 SGB VI - type: piecewise_linear - 2021-01-01: - 0: - lower_threshold: -inf - upper_threshold: 57.03 - rate_linear: 0 - intercept_at_lower_threshold: 0 - 1: - upper_threshold: 67.27 - rate_linear: 0.6 - 2: - upper_threshold: inf - rate_linear: 1 -grundr_faktor_bonus: - name: - de: Bonusfaktor aus Grundrente - en: Bonus factor from basic pension - description: - de: >- - Faktor mit dem die durch die Grundrente zusätzlich erhaltenen Entgeltpunkte - multipliziert werden. - en: >- - The additional Entgeltpunkte from the basic pension are multiplied with this - factor. - unit: Factor - 2021-01-01: - scalar: 0.875 - reference: §§ 76g Abs. 4 S. 3, 4 SGB VI -zugangsfaktor_veränderung_pro_jahr: - name: - de: Veränderung des Zugangsfaktors pro Jahr - en: Change in Zugangsfaktor per year - description: - de: >- - Faktor um den sich der Zugangsfaktor für die staatliche Rente erhöht/senkt für - jedes Jahr, das länger/kürzer gearbeitet wird - en: >- - Factor with which the Zugangsfaktor / "access factor" for receiving the statutory - pension is increased/ decreased for each month of less / more work - unit: Factor - reference period: year - reference: §77 Abs. 2 Nr. 2 SGB VI - 2001-01-01: - vorzeitiger_renteneintritt: 0.036 - späterer_renteneintritt: 0.06 -regelaltersgrenze: - name: - de: Eintrittsalter für Regelaltersrente - en: Entry age for receiving regelaltersrente - normal retirement age (NRA) - description: - de: >- - Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in - Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher - oder niedriger, sofern keine Sonderregelungen gelten. - en: >- - Normal retirement age from which pension can be received. If retirement benefits - are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement - is higher or lower unless special regulations apply. - reference: § 35 Satz 2 SGB VI - 1957-02-26: - reference: Rentenreformgesetz 1957 BGBl. I S. 88 - scalar: 65.0 - 2007-04-20: - reference: RV-Altersgrenzenanpassungsgesetz 20.04.2007. BGBl. I S. 554 - note: >- - Increase of the early retirement age from 65 to 67 for birth cohort 1947-1964. - Vertrauensschutz (Art. 56) applies for birth cohorts before 1955 who were in - Altersteilzeit before January 1st, 2007 or received "Anpassungsgeld für - entlassense Arbeitnehmer des Bergbaus". - entry_age_old_regime: 65.0 - entry_age_new_regime: 67.0 - max_birthyear_old_regime: 1946 - min_birthyear_new_regime: 1964 - 1947: 65.083333 - 1948: 65.166667 - 1949: 65.25 - 1950: 65.333333 - 1951: 65.416667 - 1952: 65.5 - 1953: 65.583333 - 1954: 65.666667 - 1955: 65.75 - 1956: 65.833333 - 1957: 65.916667 - 1958: 66.0 - 1959: 66.166667 - 1960: 66.333333 - 1961: 66.5 - 1962: 66.666667 - 1963: 66.833333 -altersgrenze_für_frauen_abschlagsfrei: - name: - de: Eintrittsalter für Altersrente für Frauen - en: Entry age for receiving Altersrente für Frauen - description: - de: >- - Renteneintrittsalter für "Altersrente für Frauen", ab dem die Altersrente ohne - Abschläge bezogen werden kann. - en: >- - Full retirement age (FRA) for pathway "Altersrente für Frauen". - reference: § 237a SGB VI - note: - de: >- - https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/25-altersrente-fuer-frauen.html - Frauen, die vor 1940 geboren wurden, konnten mit 60 abschlagsfrei in Rente gehen, - nach einer Wartezeit von 15 Jahren und mit mindestens 10 Beitragsjahren ab dem - Alter von 40. Ab 1940 wurde das Eintrittsalter sukzessive erhöhrt um einen Monat - pro Geburtsmonat auf das Alter 65. - en: >- - Women born before 1940 were able to retire at age 60 without deductions (required - waiting period of 15 years and 10 years of contributions after age 40). The age - threshold was increase by one month for each birthmonth up to age 65 for cohort - 1945. - 1980-01-01: - scalar: 60 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Increase of full retirement age from 60 to 65 for birth cohort 1941-1952. - entry_age_old_regime: 60.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1940 - min_birthyear_new_regime: 1953 - 1941: - 1: 60.083333 - 2: 60.083333 - 3: 60.083333 - 4: 60.083333 - 5: 60.166667 - 6: 60.166667 - 7: 60.166667 - 8: 60.166667 - 9: 60.25 - 10: 60.25 - 11: 60.25 - 12: 60.25 - 1942: - 1: 60.333333 - 2: 60.333333 - 3: 60.333333 - 4: 60.333333 - 5: 60.416667 - 6: 60.416667 - 7: 60.416667 - 8: 60.416667 - 9: 60.5 - 10: 60.5 - 11: 60.5 - 12: 60.5 - 1943: - 1: 60.583333 - 2: 60.583333 - 3: 60.583333 - 4: 60.583333 - 5: 60.666667 - 6: 60.666667 - 7: 60.666667 - 8: 60.666667 - 9: 60.75 - 10: 60.75 - 11: 60.75 - 12: 60.75 - 1944: - 1: 60.833333 - 2: 60.833333 - 3: 60.833333 - 4: 60.833333 - 5: 61.916667 - 6: 61.916667 - 7: 61.916667 - 8: 61.916667 - 9: 61.0 - 10: 61.0 - 11: 61.0 - 12: 61.0 - 1945: - 1: 61.083333 - 2: 61.083333 - 3: 61.166667 - 4: 61.166667 - 5: 61.25 - 6: 61.25 - 7: 61.333333 - 8: 61.333333 - 9: 61.416667 - 10: 61.416667 - 11: 61.5 - 12: 61.5 - 1946: - 1: 61.583333 - 2: 61.583333 - 3: 61.666667 - 4: 61.666667 - 5: 61.75 - 6: 61.75 - 7: 61.833333 - 8: 61.833333 - 9: 61.916667 - 10: 61.916667 - 11: 62.0 - 12: 62.0 - 1947: - 1: 62.083333 - 2: 62.083333 - 3: 62.166667 - 4: 62.166667 - 5: 62.25 - 6: 62.25 - 7: 62.333333 - 8: 62.333333 - 9: 62.416667 - 10: 62.416667 - 11: 62.5 - 12: 62.5 - 1948: - 1: 62.583333 - 2: 62.583333 - 3: 62.666667 - 4: 62.666667 - 5: 62.75 - 6: 62.75 - 7: 62.833333 - 8: 62.833333 - 9: 62.916667 - 10: 62.916667 - 11: 63.0 - 12: 63.0 - 1949: - 1: 63.083333 - 2: 63.083333 - 3: 63.166667 - 4: 63.166667 - 5: 63.25 - 6: 63.25 - 7: 63.333333 - 8: 63.333333 - 9: 63.416667 - 10: 63.416667 - 11: 63.5 - 12: 63.5 - 1950: - 1: 63.583333 - 2: 63.583333 - 3: 63.666667 - 4: 63.666667 - 5: 63.75 - 6: 63.75 - 7: 63.833333 - 8: 63.833333 - 9: 63.916667 - 10: 63.916667 - 11: 64.0 - 12: 64.0 - 1951: - 1: 64.083333 - 2: 64.083333 - 3: 64.166667 - 4: 64.166667 - 5: 64.25 - 6: 64.25 - 7: 64.333333 - 8: 64.333333 - 9: 64.416667 - 10: 64.416667 - 11: 64.5 - 12: 64.5 - 1952: - 1: 64.583333 - 2: 64.583333 - 3: 64.666667 - 4: 64.666667 - 5: 64.75 - 6: 64.75 - 7: 64.833333 - 8: 64.833333 - 9: 64.916667 - 10: 64.916667 - 11: 65.0 - 12: 65.0 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 - note: Increase of FRA accelerated with exemption (Vertrauensschutz). - entry_age_old_regime: 60.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1939 - min_birthyear_new_regime: 1945 - 1940: - 1: 60.083333 - 2: 60.166667 - 3: 60.25 - 4: 60.333333 - 5: 60.416667 - 6: 60.5 - 7: 60.583333 - 8: 60.666667 - 9: 60.75 - 10: 60.833333 - 11: 60.916667 - 12: 61.0 - 1941: - 1: 61.083333 - 2: 61.166667 - 3: 61.25 - 4: 61.333333 - 5: 61.416667 - 6: 61.5 - 7: 61.583333 - 8: 61.666667 - 9: 61.75 - 10: 61.833333 - 11: 61.916667 - 12: 62.0 - 1942: - 1: 62.083333 - 2: 62.166667 - 3: 62.25 - 4: 62.333333 - 5: 62.416667 - 6: 62.5 - 7: 62.583333 - 8: 62.666667 - 9: 62.75 - 10: 62.833333 - 11: 62.916667 - 12: 63.0 - 1943: - 1: 63.083333 - 2: 63.166667 - 3: 63.25 - 4: 63.333333 - 5: 63.416667 - 6: 63.5 - 7: 63.583333 - 8: 63.666667 - 9: 63.75 - 10: 63.833333 - 11: 63.916667 - 12: 64.0 - 1944: - 1: 64.083333 - 2: 64.166667 - 3: 64.25 - 4: 64.333333 - 5: 64.416667 - 6: 64.5 - 7: 64.583333 - 8: 64.666667 - 9: 64.75 - 10: 64.833333 - 11: 64.916667 - 12: 65.0 -altersgrenze_für_frauen_vorzeitig: - name: - de: Altersgrenze für vorzeitigen Bezug der Altersrente für Frauen. - en: Early retirement age for women. - description: - de: >- - Frühestmögliches Alter ab dem die Altersrente für Frauen bezogen werden kann - (mit Abschlägen). - en: >- - Earliest possible age to receive pension for women (with deductions). - reference: § 237a SGB VI - note: https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html) - 1980-01-01: - scalar: 60.0 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. - entry_age_old_regime: 60.0 - entry_age_new_regime: 62.0 - max_birthyear_old_regime: 1948 - min_birthyear_new_regime: 1953 - 1949: - 1: 60.083333 - 2: 60.083333 - 3: 60.166667 - 4: 60.166667 - 5: 60.25 - 6: 60.25 - 7: 60.333333 - 8: 60.333333 - 9: 60.416667 - 10: 60.416667 - 11: 60.5 - 12: 60.5 - 1950: - 1: 60.583333 - 2: 60.583333 - 3: 60.666667 - 4: 60.666667 - 5: 60.75 - 6: 60.75 - 7: 60.833333 - 8: 60.833333 - 9: 60.916667 - 10: 60.916667 - 11: 61.0 - 12: 61.0 - 1951: - 1: 61.083333 - 2: 61.083333 - 3: 61.166667 - 4: 61.166667 - 5: 61.25 - 6: 61.25 - 7: 61.333333 - 8: 61.333333 - 9: 61.416667 - 10: 61.416667 - 11: 61.5 - 12: 61.5 - 1952: - 1: 61.583333 - 2: 61.583333 - 3: 61.666667 - 4: 61.666667 - 5: 61.75 - 6: 61.75 - 7: 61.833333 - 8: 61.833333 - 9: 61.916667 - 10: 61.916667 - 11: 62.0 - 12: 62.0 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 - note: Increase of ERA was revoked. - scalar: 60.0 -first_birthyear_without_rente_für_frauen: - name: - de: Kohorte Abschaffung Rente für Frauen - en: Cohort abolishment pension for women - description: - de: Kohorte, ab der Rente für Frauen abgeschafft. - en: Cohort from which pension for women abolished - reference: § 237a SGB VI, Rentenreformgesetz 1999. BGBl. I 1997 S. 2998 - note: https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html - 1997-12-16: - scalar: 1952 -rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40: - name: - de: Mindestpflichbeitragsjahre ab 40 für Rente für Frauen - en: Minimum contribution since 40 pension for women. - description: - de: >- - Mindestpflichbeitragsjahre, nach dem 40. Lebensjahr, - die für Rente für Frauen berechtigt. - en: >- - Minimum number of contribution years required to be - eligible for pension for women. - reference: § 237a SGB VI - note: https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html - 1950-01-01: - scalar: 10 -altersgrenze_arbeitsl_abschlagsfrei: - name: - de: Altersgrenze für Altersrente wegen Arbeitslosigkeit (abschlagsfrei) - en: Age threshold for pension for unemployed (without deductions) - description: - de: >- - Frühestmögliches Alter ab dem die Altersrente für Arbeitslose abschlagsfrei - bezogen werden kann. - en: >- - Earliest possible age to receive pension for unemployed without deductions. - reference: § 237 SGB VI - note: https://www.gesetze-im-internet.de/sgb_6/__237.html - 1980-01-01: - scalar: 60.0 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Increase of full retirement age from 60 to 65 for birth cohort 1941-1952. - entry_age_old_regime: 60.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1940 - min_birthyear_new_regime: 1953 - 1941: - 1: 60.083333 - 2: 60.083333 - 3: 60.083333 - 4: 60.083333 - 5: 60.166667 - 6: 60.166667 - 7: 60.166667 - 8: 60.166667 - 9: 60.25 - 10: 60.25 - 11: 60.25 - 12: 60.25 - 1942: - 1: 60.333333 - 2: 60.333333 - 3: 60.333333 - 4: 60.333333 - 5: 60.416667 - 6: 60.416667 - 7: 60.416667 - 8: 60.416667 - 9: 60.5 - 10: 60.5 - 11: 60.5 - 12: 60.5 - 1943: - 1: 60.583333 - 2: 60.583333 - 3: 60.583333 - 4: 60.583333 - 5: 60.666667 - 6: 60.666667 - 7: 60.666667 - 8: 60.666667 - 9: 60.75 - 10: 60.75 - 11: 60.75 - 12: 60.75 - 1944: - 1: 60.833333 - 2: 60.833333 - 3: 60.833333 - 4: 60.833333 - 5: 61.916667 - 6: 61.916667 - 7: 61.916667 - 8: 61.916667 - 9: 61.0 - 10: 61.0 - 11: 61.0 - 12: 61.0 - 1945: - 1: 61.083333 - 2: 61.083333 - 3: 61.166667 - 4: 61.166667 - 5: 61.25 - 6: 61.25 - 7: 61.333333 - 8: 61.333333 - 9: 61.416667 - 10: 61.416667 - 11: 61.5 - 12: 61.5 - 1946: - 1: 61.583333 - 2: 61.583333 - 3: 61.666667 - 4: 61.666667 - 5: 61.75 - 6: 61.75 - 7: 61.833333 - 8: 61.833333 - 9: 61.916667 - 10: 61.916667 - 11: 62.0 - 12: 62.0 - 1947: - 1: 62.083333 - 2: 62.083333 - 3: 62.166667 - 4: 62.166667 - 5: 62.25 - 6: 62.25 - 7: 62.333333 - 8: 62.333333 - 9: 62.416667 - 10: 62.416667 - 11: 62.5 - 12: 62.5 - 1948: - 1: 62.583333 - 2: 62.583333 - 3: 62.666667 - 4: 62.666667 - 5: 62.75 - 6: 62.75 - 7: 62.833333 - 8: 62.833333 - 9: 62.916667 - 10: 62.916667 - 11: 63.0 - 12: 63.0 - 1949: - 1: 63.083333 - 2: 63.083333 - 3: 63.166667 - 4: 63.166667 - 5: 63.25 - 6: 63.25 - 7: 63.333333 - 8: 63.333333 - 9: 63.416667 - 10: 63.416667 - 11: 63.5 - 12: 63.5 - 1950: - 1: 63.583333 - 2: 63.583333 - 3: 63.666667 - 4: 63.666667 - 5: 63.75 - 6: 63.75 - 7: 63.833333 - 8: 63.833333 - 9: 63.916667 - 10: 63.916667 - 11: 64.0 - 12: 64.0 - 1951: - 1: 64.083333 - 2: 64.083333 - 3: 64.166667 - 4: 64.166667 - 5: 64.25 - 6: 64.25 - 7: 64.333333 - 8: 64.333333 - 9: 64.416667 - 10: 64.416667 - 11: 64.5 - 12: 64.5 - 1952: - 1: 64.583333 - 2: 64.583333 - 3: 64.666667 - 4: 64.666667 - 5: 64.75 - 6: 64.75 - 7: 64.833333 - 8: 64.833333 - 9: 64.916667 - 10: 64.916667 - 11: 65.0 - 12: 65.0 - 1996-07-29: - reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. - note: Increase of full retirement age from 60 to 65 for birth cohort 1937-1952. - entry_age_old_regime: 60.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1936 - min_birthyear_new_regime: 1953 - 1937: - 1: 60.083333 - 2: 60.166667 - 3: 60.25 - 4: 60.333333 - 5: 60.416667 - 6: 60.5 - 7: 60.583333 - 8: 60.666667 - 9: 60.75 - 10: 60.833333 - 11: 60.916667 - 12: 61.0 - 1938: - 1: 61.083333 - 2: 61.166667 - 3: 61.25 - 4: 61.333333 - 5: 61.416667 - 6: 61.5 - 7: 61.583333 - 8: 61.666667 - 9: 61.75 - 10: 61.833333 - 11: 61.916667 - 12: 62.0 - 1939: - 1: 62.083333 - 2: 62.166667 - 3: 62.25 - 4: 62.333333 - 5: 62.416667 - 6: 62.5 - 7: 62.583333 - 8: 62.666667 - 9: 62.75 - 10: 62.833333 - 11: 62.916667 - 12: 63.0 - 1940: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1941: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1942: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1943: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1944: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1945: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1946: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1947: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1948: - 1: 63.0 - 2: 63.0 - 3: 63.0 - 4: 63.0 - 5: 63.0 - 6: 63.0 - 7: 63.0 - 8: 63.0 - 9: 63.0 - 10: 63.0 - 11: 63.0 - 12: 63.0 - 1949: - 1: 63.083333 - 2: 63.083333 - 3: 63.166667 - 4: 63.166667 - 5: 63.25 - 6: 63.25 - 7: 63.333333 - 8: 63.333333 - 9: 63.416667 - 10: 63.416667 - 11: 63.5 - 12: 63.5 - 1950: - 1: 63.583333 - 2: 63.583333 - 3: 63.666667 - 4: 63.666667 - 5: 63.75 - 6: 63.75 - 7: 63.833333 - 8: 63.833333 - 9: 63.916667 - 10: 63.916667 - 11: 64.0 - 12: 64.0 - 1951: - 1: 64.083333 - 2: 64.083333 - 3: 64.166667 - 4: 64.166667 - 5: 64.25 - 6: 64.25 - 7: 64.333333 - 8: 64.333333 - 9: 64.416667 - 10: 64.416667 - 11: 64.5 - 12: 64.5 - 1952: - 1: 64.583333 - 2: 64.583333 - 3: 64.666667 - 4: 64.666667 - 5: 64.75 - 6: 64.75 - 7: 64.833333 - 8: 64.833333 - 9: 64.916667 - 10: 64.916667 - 11: 65.0 - 12: 65.0 - vertrauensschutz: - name: - de: >- - Altersgrenze für Altersrente wegen Arbeitslosigkeit mit Vertrauensschutz - (abschlagsfrei). - en: >- - Age threshold for pension for unemployed (without deductions) with - Vertrauensschutz - description: >- - Increase of full retirement age according to old law (RRG 1992) for individuals - covered under Vertrauensschutz. - reference: § 237 SGB VI Abs. 4 - max_birthyear_old_regime: 1940 - entry_age_old_regime: 60.0 - 1941: - 1: 60.083333 - 2: 60.083333 - 3: 60.083333 - 4: 60.083333 - 5: 60.166667 - 6: 60.166667 - 7: 60.166667 - 8: 60.166667 - 9: 60.25 - 10: 60.25 - 11: 60.25 - 12: 60.25 - 1942: - 1: 60.333333 - 2: 60.333333 - 3: 60.333333 - 4: 60.333333 - 5: 60.416667 - 6: 60.416667 - 7: 60.416667 - 8: 60.416667 - 9: 60.5 - 10: 60.5 - 11: 60.5 - 12: 60.5 - 1943: - 1: 60.583333 - 2: 60.583333 - 3: 60.583333 - 4: 60.583333 - 5: 60.666667 - 6: 60.666667 - 7: 60.666667 - 8: 60.666667 - 9: 60.75 - 10: 60.75 - 11: 60.75 - 12: 60.75 - 1944: - 1: 60.833333 - 2: 60.833333 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 - note: Increase of full retirement age from 60 to 65 for birth cohort 1937-1941. - entry_age_old_regime: 60.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1936 - min_birthyear_new_regime: 1942 - 1937: - 1: 60.083333 - 2: 60.166667 - 3: 60.25 - 4: 60.333333 - 5: 60.416667 - 6: 60.5 - 7: 60.583333 - 8: 60.666667 - 9: 60.75 - 10: 60.833333 - 11: 60.916667 - 12: 61.0 - 1938: - 1: 61.083333 - 2: 61.166667 - 3: 61.25 - 4: 61.333333 - 5: 61.416667 - 6: 61.5 - 7: 61.583333 - 8: 61.666667 - 9: 61.75 - 10: 61.833333 - 11: 61.916667 - 12: 62.0 - 1939: - 1: 62.083333 - 2: 62.166667 - 3: 62.25 - 4: 62.333333 - 5: 62.416667 - 6: 62.5 - 7: 62.583333 - 8: 62.666667 - 9: 62.75 - 10: 62.833333 - 11: 62.916667 - 12: 63.0 - 1940: - 1: 63.083333 - 2: 63.166667 - 3: 63.25 - 4: 63.333333 - 5: 63.416667 - 6: 63.5 - 7: 63.583333 - 8: 63.666667 - 9: 63.75 - 10: 63.833333 - 11: 63.916667 - 12: 64.0 - 1941: - 1: 64.083333 - 2: 64.166667 - 3: 64.25 - 4: 64.333333 - 5: 64.416667 - 6: 64.5 - 7: 64.583333 - 8: 64.666667 - 9: 64.75 - 10: 64.833333 - 11: 64.916667 - 12: 65.0 - vertrauensschutz: - name: - de: >- - Altersgrenze für Altersrente wegen Arbeitslosigkeit mit Vertrauensschutz - (abschlagsfrei). - en: >- - Age threshold for pension for unemployed (without deductions) - with Vertrauensschutz - description: >- - Increase of full retirement age according to old law (RRG 1992) for individuals - covered under Vertrauensschutz. - reference: § 237 SGB VI Abs. 4 - entry_age_old_regime: 60.0 - max_birthyear_old_regime: 1940 - 1941: - 1: 60.083333 - 2: 60.083333 - 3: 60.083333 - 4: 60.083333 - 5: 60.166667 - 6: 60.166667 - 7: 60.166667 - 8: 60.166667 - 9: 60.25 - 10: 60.25 - 11: 60.25 - 12: 60.25 - 1942: - 1: 60.333333 - 2: 60.333333 - 3: 60.333333 - 4: 60.333333 - 5: 60.416667 - 6: 60.416667 - 7: 60.416667 - 8: 60.416667 - 9: 60.5 - 10: 60.5 - 11: 60.5 - 12: 60.5 - 1943: - 1: 60.583333 - 2: 60.583333 - 3: 60.583333 - 4: 60.583333 - 5: 60.666667 - 6: 60.666667 - 7: 60.666667 - 8: 60.666667 - 9: 60.75 - 10: 60.75 - 11: 60.75 - 12: 60.75 - 1944: - 1: 60.833333 - 2: 60.833333 -altersgrenze_arbeitsl_vorzeitig: - name: - de: Altersgrenze für vorzeitige Inanspruchnahme Altersrente wegen Arbeitslosigkeit - en: Age threshold early takeup of pension for unemployed - description: - de: >- - Frühestmögliches Alter ab dem die Altersrente für Arbeitslose - bezogen werden kann (mit Abschlägen), einschließlich Vertrauensschutz. - en: >- - Earliest possible age to receive pension for unemployed (with deductions), - including legitimate expectations. - reference: § 237 SGB VI - note: - de: >- - https://www.gesetze-im-internet.de/sgb_6/__237.html - https://www.buzer.de/Anlage_19_SGB_VI.htm - en: >- - https://www.buzer.de/Anlage_19_SGB_VI.htm - 1980-01-01: - scalar: 60.0 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. - entry_age_old_regime: 60.0 - entry_age_new_regime: 62.0 - max_birthyear_old_regime: 1948 - min_birthyear_new_regime: 1953 - 1949: - 1: 60.083333 - 2: 60.083333 - 3: 60.166667 - 4: 60.166667 - 5: 60.25 - 6: 60.25 - 7: 60.333333 - 8: 60.333333 - 9: 60.416667 - 10: 60.416667 - 11: 60.5 - 12: 60.5 - 1950: - 1: 60.583333 - 2: 60.583333 - 3: 60.666667 - 4: 60.666667 - 5: 60.75 - 6: 60.75 - 7: 60.833333 - 8: 60.833333 - 9: 60.916667 - 10: 60.916667 - 11: 61.0 - 12: 61.0 - 1951: - 1: 61.083333 - 2: 61.083333 - 3: 61.166667 - 4: 61.166667 - 5: 61.25 - 6: 61.25 - 7: 61.333333 - 8: 61.333333 - 9: 61.416667 - 10: 61.416667 - 11: 61.5 - 12: 61.5 - 1952: - 1: 61.583333 - 2: 61.583333 - 3: 61.666667 - 4: 61.666667 - 5: 61.75 - 6: 61.75 - 7: 61.833333 - 8: 61.833333 - 9: 61.916667 - 10: 61.916667 - 11: 62.0 - 12: 62.0 - 1996-07-29: - reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. - note: >- - Increase of early retirement age as before, with Vertrauensschutz - (§ 237 SGB VI Abs.5). - entry_age_old_regime: 60.0 - entry_age_new_regime: 62.0 - max_birthyear_old_regime: 1948 - min_birthyear_new_regime: 1953 - 1949: - 1: 60.083333 - 2: 60.083333 - 3: 60.166667 - 4: 60.166667 - 5: 60.25 - 6: 60.25 - 7: 60.333333 - 8: 60.333333 - 9: 60.416667 - 10: 60.416667 - 11: 60.5 - 12: 60.5 - 1950: - 1: 60.583333 - 2: 60.583333 - 3: 60.666667 - 4: 60.666667 - 5: 60.75 - 6: 60.75 - 7: 60.833333 - 8: 60.833333 - 9: 60.916667 - 10: 60.916667 - 11: 61.0 - 12: 61.0 - 1951: - 1: 61.083333 - 2: 61.083333 - 3: 61.166667 - 4: 61.166667 - 5: 61.25 - 6: 61.25 - 7: 61.333333 - 8: 61.333333 - 9: 61.416667 - 10: 61.416667 - 11: 61.5 - 12: 61.5 - 1952: - 1: 61.583333 - 2: 61.583333 - 3: 61.666667 - 4: 61.666667 - 5: 61.75 - 6: 61.75 - 7: 61.833333 - 8: 61.833333 - 9: 61.916667 - 10: 61.916667 - 11: 62.0 - 12: 62.0 - vertrauensschutz: 60.0 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 - note: Increase of ERA was revoked. - scalar: 60.0 - 2004-07-26: - reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 - note: Increase of the early retirement age from 60 to 63 for birth cohort 1946-1948. - entry_age_old_regime: 60.0 - entry_age_new_regime: 63.0 - max_birthyear_old_regime: 1945 - min_birthyear_new_regime: 1949 - 1946: - 1: 60.083333 - 2: 60.166667 - 3: 60.25 - 4: 60.333333 - 5: 60.416667 - 6: 60.5 - 7: 60.583333 - 8: 60.666667 - 9: 60.75 - 10: 60.833333 - 11: 60.916667 - 12: 61.0 - 1947: - 1: 61.083333 - 2: 61.166667 - 3: 61.25 - 4: 61.333333 - 5: 61.416667 - 6: 61.5 - 7: 61.583333 - 8: 61.666667 - 9: 61.75 - 10: 61.833333 - 11: 61.916667 - 12: 62.0 - 1948: - 1: 62.083333 - 2: 62.166667 - 3: 62.25 - 4: 62.333333 - 5: 62.416667 - 6: 62.5 - 7: 62.583333 - 8: 62.666667 - 9: 62.75 - 10: 62.833333 - 11: 62.916667 - 12: 63.0 - vertrauensschutz: 60.0 -first_birthyear_without_rente_für_arbeitsl: - name: - de: Erster Geburtsjahrgang ohne Rente für Arbeitslose - en: First birth cohort without pension for unemployed - description: - de: >- - Erster Geburtsjahrgang ohne Rente für Arbeitslose - reference: Rentenreformgesetz 1999. BGBl. I S. 2998 1997 - note: Abolishment starting from birth cohort 1952. - 1997-12-16: - scalar: 1952 -altersgrenze_langj_versicherte_vorzeitig: - name: - de: Altersgrenze für vorzeitigen Bezug der Altersrente für langjährig Versicherte - en: Early retirement age for long term insured - description: - de: >- - Frühestmögliches Alter ab dem die Altersrente für langjährig Versicherte - bezogen werden kann (mit Abschlägen). - en: >- - Earliest possible age to receive pension for long term insured (with deductions). - reference: § 236 SGB VI - note: https://www.sozialgesetzbuch-sgb.de/sgbvi/236.html - 1980-01-01: - scalar: 63.0 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Early retirement age descreased from 63 to 62 starting from birth cohort 1944. - entry_age_old_regime: 63.0 - entry_age_new_regime: 62.0 - max_birthyear_old_regime: 1943 - min_birthyear_new_regime: 1944 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 - note: ERA back to 63. - scalar: 63.0 - 1997-12-16: - reference: Rentenreformgesetz 1999. BGBl. I S. 2998 1997 - note: ERA back to 62. - scalar: 62.0 - 2007-04-20: - reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 - note: ERA back to 63. - scalar: 63.0 -altersgrenze_langj_versicherte_abschlagsfrei: - name: - de: Eintrittsalter für langjährig Versicherte - abschlagsfrei - en: Entry age for long term insured (35 insurance years) without deductions (FRA) - description: - de: >- - Eintrittsalter für langjährig Versicherte - abschlagsfrei - en: >- - Entry age for long term insured (35 insurance years) without deductions (FRA) - reference: § 236 SGB VI - note: - de: >- - https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/242-altersrente-fuer-langjaehrig-versicherte-altersgrenzen.html - en: null - 1980-01-01: - scalar: 63.0 - 1989-12-18: - reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 - note: Increase of full retirement age from 63 to 65 for birth cohort 1938-1943. - entry_age_old_regime: 63.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1937 - min_birthyear_new_regime: 1944 - 1938: - 1: 63.083333 - 2: 63.083333 - 3: 63.083333 - 4: 63.083333 - 5: 63.166667 - 6: 63.166667 - 7: 63.166667 - 8: 63.166667 - 9: 63.25 - 10: 63.25 - 11: 63.25 - 12: 63.25 - 1939: - 1: 63.333333 - 2: 63.333333 - 3: 63.333333 - 4: 63.333333 - 5: 63.416667 - 6: 63.416667 - 7: 63.416667 - 8: 63.416667 - 9: 63.5 - 10: 63.5 - 11: 63.5 - 12: 63.5 - 1940: - 1: 63.583333 - 2: 63.583333 - 3: 63.583333 - 4: 63.583333 - 5: 63.666667 - 6: 63.666667 - 7: 63.666667 - 8: 63.666667 - 9: 63.75 - 10: 63.75 - 11: 63.75 - 12: 63.75 - 1941: - 1: 63.833333 - 2: 63.833333 - 3: 63.833333 - 4: 63.833333 - 5: 63.916667 - 6: 63.916667 - 7: 63.916667 - 8: 63.916667 - 9: 64.0 - 10: 64.0 - 11: 64.0 - 12: 64.0 - 1942: - 1: 64.083333 - 2: 64.083333 - 3: 64.166667 - 4: 64.166667 - 5: 64.25 - 6: 64.25 - 7: 64.333333 - 8: 64.333333 - 9: 64.416667 - 10: 64.416667 - 11: 64.5 - 12: 64.5 - 1943: - 1: 64.583333 - 2: 64.583333 - 3: 64.666667 - 4: 64.666667 - 5: 64.75 - 6: 64.75 - 7: 64.833333 - 8: 64.833333 - 9: 64.916667 - 10: 64.916667 - 12: 65.0 - 11: 65.0 - 1996-09-27: - reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 - note: FRA increase accelerated. - entry_age_old_regime: 63.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1936 - min_birthyear_new_regime: 1939 - 1937: - 1: 63.083333 - 2: 63.166667 - 3: 63.25 - 4: 63.333333 - 5: 63.416667 - 6: 63.5 - 7: 63.583333 - 8: 63.666667 - 9: 63.75 - 10: 63.833333 - 11: 63.916667 - 12: 64.0 - 1938: - 1: 64.083333 - 2: 64.166667 - 3: 64.25 - 4: 64.333333 - 5: 64.416667 - 6: 64.5 - 7: 64.583333 - 8: 64.666667 - 9: 64.75 - 10: 64.833333 - 11: 64.916667 - 12: 65.0 - 2007-04-20: - reference: RV-Altersgrenzenanpassungsgesetz 2007. BGBl. I S. 554 2007 - note: Increase of FRA from 65 to 67 for birth cohort 1949-1963. - entry_age_old_regime: 65.0 - entry_age_new_regime: 67.0 - max_birthyear_old_regime: 1948 - min_birthyear_new_regime: 1964 - 1949: - 1: 65.083333 - 2: 65.166667 - 3: 65.25 - 4: 65.25 - 5: 65.25 - 6: 65.25 - 7: 65.25 - 8: 65.25 - 9: 65.25 - 10: 65.25 - 11: 65.25 - 12: 65.25 - 1950: - 1: 65.333333 - 2: 65.333333 - 3: 65.333333 - 4: 65.333333 - 5: 65.333333 - 6: 65.333333 - 7: 65.333333 - 8: 65.333333 - 9: 65.333333 - 10: 65.333333 - 11: 65.333333 - 12: 65.333333 - 1951: - 1: 65.416667 - 2: 65.416667 - 3: 65.416667 - 4: 65.416667 - 5: 65.416667 - 6: 65.416667 - 7: 65.416667 - 8: 65.416667 - 9: 65.416667 - 10: 65.416667 - 11: 65.416667 - 12: 65.416667 - 1952: - 1: 65.5 - 2: 65.5 - 3: 65.5 - 4: 65.5 - 5: 65.5 - 6: 65.5 - 7: 65.5 - 8: 65.5 - 9: 65.5 - 10: 65.5 - 11: 65.5 - 12: 65.5 - 1953: - 1: 65.583333 - 2: 65.583333 - 3: 65.583333 - 4: 65.583333 - 5: 65.583333 - 6: 65.583333 - 7: 65.583333 - 8: 65.583333 - 9: 65.583333 - 10: 65.583333 - 11: 65.583333 - 12: 65.583333 - 1954: - 1: 65.666667 - 2: 65.666667 - 3: 65.666667 - 4: 65.666667 - 5: 65.666667 - 6: 65.666667 - 7: 65.666667 - 8: 65.666667 - 9: 65.666667 - 10: 65.666667 - 11: 65.666667 - 12: 65.666667 - 1955: - 1: 65.75 - 2: 65.75 - 3: 65.75 - 4: 65.75 - 5: 65.75 - 6: 65.75 - 7: 65.75 - 8: 65.75 - 9: 65.75 - 10: 65.75 - 11: 65.75 - 12: 65.75 - 1956: - 1: 65.833333 - 2: 65.833333 - 3: 65.833333 - 4: 65.833333 - 5: 65.833333 - 6: 65.833333 - 7: 65.833333 - 8: 65.833333 - 9: 65.833333 - 10: 65.833333 - 11: 65.833333 - 12: 65.833333 - 1957: - 1: 65.916667 - 2: 65.916667 - 3: 65.916667 - 4: 65.916667 - 5: 65.916667 - 6: 65.916667 - 7: 65.916667 - 8: 65.916667 - 9: 65.916667 - 10: 65.916667 - 11: 65.916667 - 12: 65.916667 - 1958: - 1: 66.0 - 2: 66.0 - 3: 66.0 - 4: 66.0 - 5: 66.0 - 6: 66.0 - 7: 66.0 - 8: 66.0 - 9: 66.0 - 10: 66.0 - 11: 66.0 - 12: 66.0 - 1959: - 1: 66.166667 - 2: 66.166667 - 3: 66.166667 - 4: 66.166667 - 5: 66.166667 - 6: 66.166667 - 7: 66.166667 - 8: 66.166667 - 9: 66.166667 - 10: 66.166667 - 11: 66.166667 - 12: 66.166667 - 1960: - 1: 66.333333 - 2: 66.333333 - 3: 66.333333 - 4: 66.333333 - 5: 66.333333 - 6: 66.333333 - 7: 66.333333 - 8: 66.333333 - 9: 66.333333 - 10: 66.333333 - 11: 66.333333 - 12: 66.333333 - 1961: - 1: 66.5 - 2: 66.5 - 3: 66.5 - 4: 66.5 - 5: 66.5 - 6: 66.5 - 7: 66.5 - 8: 66.5 - 9: 66.5 - 10: 66.5 - 11: 66.5 - 12: 66.5 - 1962: - 1: 66.666667 - 2: 66.666667 - 3: 66.666667 - 4: 66.666667 - 5: 66.666667 - 6: 66.666667 - 7: 66.666667 - 8: 66.666667 - 9: 66.666667 - 10: 66.666667 - 11: 66.666667 - 12: 66.666667 - 1963: - 1: 66.833333 - 2: 66.833333 - 3: 66.833333 - 4: 66.833333 - 5: 66.833333 - 6: 66.833333 - 7: 66.833333 - 8: 66.833333 - 9: 66.833333 - 10: 66.833333 - 11: 66.833333 - 12: 66.833333 -altersgrenze_besond_langj_versicherte: - name: - de: >- - Eintrittsalter für besonders langjährig Versicherte - abschlagsfrei (Rente mit 63) - en: Entry age for very long term insured (45 insurance years) without deductions - description: - de: >- - Stückweise lineare Funktion, die die Regelaltersgrenze angibt, bei der das - Individuum mit seinem vollen Rentenanspruch in Rente gehen kann. Geht die Person - früher oder später in Rente, ist der Zugangsfaktor und damit der Rentenanspruch - höher oder niedriger, wenn keine Ausnahmeregelungen erfüllt sind. - Ab dem 1.7.2014 wurde die Altersgrenze für Kohorten bis 1952 auf 63 Jahre - gesenkt (für nachfolgende Kohorten steigt sie um 2 Monate pro Kohorte bis - 65). Personen, die vor dem 1.7.1951 (codiert als 1951.5) geboren wurden, - waren zu diesem Zeitpunkt aber schon älter als 63 und hatten ensprechend ein - höheres verfügbares Renteneintrittsalter. Nur Personen, die ab dem 1.7.1949 - geboren wurden konnten überhaupt profitieren, da alle anderen schon über 65 - waren. Für die Zugangsfaktor berechnung werden die tatsächlich verfügbaren - Renteneintrittsalter benötigt. Daher brauchen wir für die inputs eine - monatliche Präzision bis Kohorte 1952. - en: >- - Piecewise linear function returning the regelaltersgrenze at which the agent - is allowed to get pensions with his full claim. If the agent retires earlier or - later, the Zugangsfaktor and therefore the pension claim is higher or lower, - unless special conditions apply. - From 1.7.2014 the retirement thresholds for cohorts born before 1953 was - lowered to 63 years (for subsequent cohort it raises by 2 months per cohort - up to 65 again). But people born before 1.7.1951 were already older than - 63 at that date. Only cohorts born after 1.7.1949 could benefit since the - others were above 65 already. As the zugangsfaktor function runs on retirement - age, we need the actually feasible retirement ages as inputs. The inputs - therefore require monthly precision up to cohort 1952. From then we need - annual precision. - reference: § 38 SGB VI - note: - de: >- - https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/249-altersrente-fuer-besonders-langjaehrig-versicherte.html - en: null - 2007-04-30: - reference: RV-Altersgrenzenanpassungsgesetz 2007. BGBl. I S. 554 2007 - scalar: 65.0 - 2014-06-23: - reference: RV-Leistungsverbesserungsgesetz 2014. BGBl. I S. 787 2014 - entry_age_old_regime: 63.0 - entry_age_new_regime: 65.0 - max_birthyear_old_regime: 1952 - min_birthyear_new_regime: 1964 - 1953: 63.166667 - 1954: 63.333333 - 1955: 63.5 - 1956: 63.666667 - 1957: 63.833333 - 1958: 64.0 - 1959: 64.166667 - 1960: 64.333333 - 1961: 64.5 - 1962: 64.666667 - 1963: 64.833333 -thresholds_wartezeiten: - name: - de: Zeitgrenzen für Wartezeiten - en: Time thresholds for waiting times - description: - de: >- - Zeitgrenzen, die für Erfüllung einer Wartezeit notwendig sind (in Jahren). - en: >- - Time thresholds for accomplishing waiting times - (in years). - reference: See paragraphs of respective pensions. - note: null - 1980-01-01: - wartezeit_5: 5 - wartezeit_15: 15 - wartezeit_35: 35 - 2012-01-01: - wartezeit_5: 5 - wartezeit_15: 15 - wartezeit_35: 35 - wartezeit_45: 45 -mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge: - name: - de: >- - Anzahl der Mindestpflichtbeitragsjahre, von der an freiwillige Beiträge - angerechnet werden. - en: >- - Minimum statutory contribution years for the inclusion of voluntary contributions - description: - de: >- - Anzahl der Mindestpflichtbeitragsjahre, von der an freiwillige Beiträge - angerechnet werden. - en: >- - Minimum statutory contribution years for the inclusion of voluntary contributions - reference: § 51 Abs. 3a SGB VI - note: https://www.gesetze-im-internet.de/sgb_6/__51.html - 1980-01-01: - scalar: 18 -abzugsrate_hinzuverdienst: - name: - de: Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze - en: Deduction rate for additional earnings during early retirement - description: - de: >- - Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze - en: >- - Deduction rate for additional earnings during early retirement - reference: § 34 SGB VI; Artikel 1 G. v. 08.12.2016 BGBl. I S. 2838 - note: Revoked in 2017. - 2017-07-01: - scalar: 0.4 -hinzuverdienstgrenze: - name: - de: Hinzuverdienstgrenze vor der Regelaltersgrenze - en: Additional earnings threshold during early retirement - description: - de: >- - Hinzuverdienstgrenze vor der Regelaltersgrenze - en: >- - Additional earnings threshold during early retirement - reference: § 34 SGB VI - note: Revoked in 2023. - 2002-01-01: - scalar: 350.0 - 2008-01-01: - scalar: 400.0 - 2013-01-01: - scalar: 450.0 - 2017-01-01: - scalar: 6300.0 - 2020-01-01: - scalar: 44590.0 - 2021-01-01: - scalar: 46060.0 diff --git a/src/_gettsim/parameters/ges_rentenv.yaml b/src/_gettsim/parameters/ges_rentenv.yaml deleted file mode 100644 index 4a6c6a8f6a..0000000000 --- a/src/_gettsim/parameters/ges_rentenv.yaml +++ /dev/null @@ -1,236 +0,0 @@ ---- -beitr_satz: - name: - de: Beitragssätze zur gesetzlichen Rentenversicherung - en: Contribution rate to statutory pension insurance - description: - de: >- - Beitragssätze zur allgemeinen Rentenversicherung für Arbeitnehmer. - en: >- - Employees contribution rate for pension insurance. - unit: Share - access_different_date: jahresanfang - 1984-01-01: - scalar: 0.0925 - 1985-01-01: - scalar: 0.0935 - 1986-01-01: - scalar: 0.096 - 1987-01-01: - scalar: 0.0935 - 1992-01-01: - deviation_from: previous - scalar: 0.0885 - 1993-01-01: - scalar: 0.0875 - 1994-01-01: - deviation_from: previous - scalar: 0.096 - 1995-01-01: - scalar: 0.093 - 1996-01-01: - deviation_from: previous - scalar: 0.096 - 1997-01-01: - scalar: 0.1015 - 2000-01-01: - deviation_from: previous - scalar: 0.0965 - 2001-01-01: - deviation_from: previous - scalar: 0.0955 - 2003-01-01: - deviation_from: previous - scalar: 0.0975 - 2005-01-01: - scalar: 0.0975 - 2007-01-01: - deviation_from: previous - scalar: 0.0995 - 2008-01-01: - scalar: 0.0995 - 2012-01-01: - deviation_from: previous - scalar: 0.098 - note: >- - Quelle - http://www.bmas.de/DE/Service/Presse/Pressemitteilungen/rentenbericht-16-11-2011.html - 2013-01-01: - deviation_from: previous - scalar: 0.0945 - 2015-01-01: - scalar: 0.0935 - 2018-01-01: - deviation_from: previous - scalar: 0.093 - 2019-01-01: - scalar: 0.093 -beitr_bemess_grenze_m: - name: - de: Beitragsbemessungsgrenzen für die Rentenversicherung - en: Income Threshold for pension insurance - description: - de: Beitragsbemessungsgrenze für die gesetzliche Rentenversicherung. - en: Income threshold for statutory pension insurance. - unit: Euro - reference_period: Month - 1984-01-01: - west: 2659 - 1985-01-01: - west: 2761 - 1986-01-01: - west: 2863 - 1987-01-01: - west: 2914 - 1988-01-01: - west: 3068 - 1989-01-01: - west: 3119 - 1990-01-01: - west: 3221 - ost: 1380 - 1991-01-01: - west: 3323 - ost: 1534 - 1992-01-01: - west: 3477 - ost: 2454 - 1993-01-01: - west: 3681 - ost: 2710 - 1994-01-01: - west: 3886 - ost: 3017 - 1995-01-01: - west: 3988 - ost: 3272 - 1996-01-01: - west: 4090 - ost: 3477 - 1997-01-01: - west: 4193 - ost: 3630 - 1998-01-01: - west: 4295 - ost: 3579 - 1999-01-01: - west: 4339 - ost: 3681 - 2000-01-01: - west: 4397 - ost: 3630 - 2001-01-01: - west: 4448 - ost: 3732 - 2002-01-01: - west: 4500 - ost: 3750 - 2003-01-01: - west: 5100 - ost: 4250 - 2004-01-01: - west: 5150 - ost: 4350 - 2005-01-01: - west: 5200 - ost: 4400 - 2006-01-01: - west: 5250 - ost: 4400 - 2007-01-01: - deviation_from: previous - west: 5250 - ost: 4550 - 2008-01-01: - west: 5300 - ost: 4500 - 2009-01-01: - west: 5400 - ost: 4550 - 2010-01-01: - west: 5500 - ost: 4650 - 2011-01-01: - deviation_from: previous - west: 5500 - ost: 4800 - 2012-01-01: - deviation_from: previous - west: 5600 - ost: 4800 - 2013-01-01: - west: 5800 - ost: 4900 - 2014-01-01: - west: 5950 - ost: 5000 - note: >- - http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html - 2015-01-01: - west: 6050 - ost: 5200 - 2016-01-01: - west: 6200 - ost: 5400 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html - 2017-01-01: - west: 6350 - ost: 5700 - note: >- - https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html - 2018-01-01: - west: 6500 - ost: 5800 - 2019-01-01: - west: 6700 - ost: 6150 - 2020-01-01: - west: 6900 - ost: 6450 - reference: V. v. 17.12.2019 BGBl. I S. 2848 - 2021-01-01: - west: 7100 - ost: 6700 - reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. - 2022-01-01: - deviation_from: previous - west: 7050 - ost: 6750 - reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. - 2023-01-01: - west: 7300 - ost: 7100 - reference: V. v. 28.11.2022 BGBl. I. S. 2128. - 2024-01-01: - west: 7550 - ost: 7450 - reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 - 2025-01-01: - west: 8050 - ost: 8050 - reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 -arbeitgeberpauschale_bei_geringfügiger_beschäftigung: - name: - de: >- - Pauschalbeitrag des Arbeitgebers zur Rentenversicherung bei geringfügiger - Beschäftigung - en: >- - Fixed employer pension insurance contribution for marginal employment - description: - de: >- - Pauschalbetrag zur Rentenversicherung (§ 168 I Nr. 1b SGB VI) bei geringfügiger - Beschäftigung - en: >- - Fixed pension insurance contributions for marginal employment - (§ 168 I Nr. 1b SGB VI) - unit: Share - access_different_date: jahresanfang - 1984-01-01: - scalar: 0 - 1999-01-01: - scalar: 0.12 - 2003-04-01: - scalar: 0.12 - 2007-01-01: - scalar: 0.15 diff --git a/src/_gettsim/parameters/lohnst.yaml b/src/_gettsim/parameters/lohnst.yaml deleted file mode 100644 index 270a3bdd05..0000000000 --- a/src/_gettsim/parameters/lohnst.yaml +++ /dev/null @@ -1,75 +0,0 @@ ---- -lohnst_einkommensgrenzen: - name: - de: Einkommensgrenzen für Steuerklassen 5 und 6 - en: Thresholds for withholding tax classes 5 and 6 - description: - de: >- - Einkommensgrenzen für Steuerklassen 5 und 6, innerhalb derer - Mindest- und Maximalsteuern festgelegt sind. - en: >- - Thresholds for withholding tax classes 5 and 6, where - minimum and maximum tax rates apply. - reference: § 39b Absatz 2 Satz 7 EStG - unit: Euro - reference_period: Year - 2002-01-01: - 0: 8946 - 1: 27306 - 2: 10000000 - 2004-01-01: - 0: 9228 - 1: 26072 - 2: 10000000 - 2005-01-01: - 0: 9144 - 1: 25812 - 2: 200000 - 2009-01-01: - 0: 9225 - 1: 26276 - 2: 200320 - 2010-01-01: - 0: 9429 - 1: 26441 - 2: 200584 - 2013-01-01: - 0: 9550 - 1: 26441 - 2: 200584 - 2014-01-01: - 0: 9763 - 1: 26441 - 2: 200584 - 2016-01-01: - 0: 10070 - 1: 26832 - 2: 203557 - 2017-01-01: - 0: 10240 - 1: 27029 - 2: 205043 - 2018-01-01: - 0: 10440 - 1: 27475 - 2: 208426 - 2019-01-01: - 0: 10635 - 1: 27980 - 2: 212261 - 2020-01-01: - 0: 10898 - 1: 28526 - 2: 216400 - 2021-01-01: - 0: 11237 - 1: 28959 - 2: 219690 - 2022-01-01: - 0: 11793 - 1: 29298 - 2: 222260 - 2023-01-01: - 0: 12485 - 1: 31404 - 2: 222260 diff --git a/src/_gettsim/parameters/unterhalt.yaml b/src/_gettsim/parameters/unterhalt.yaml deleted file mode 100644 index 423d8db002..0000000000 --- a/src/_gettsim/parameters/unterhalt.yaml +++ /dev/null @@ -1,121 +0,0 @@ ---- -mindestunterhalt: - name: - de: Mindestunterhalt für Kinder - en: Minimum Child Alimony - description: - de: >- - § 1612a BGB, § 1 Mindesunterhaltsverordnung. Mindestunterhalt für Kinder in - Abhängigkeit des Alters (0 - 5 Jahre, 6 - 11 Jahre, 12 - 17 Jahre). - en: >- - Minimum Child Alimony depending on age of child (0 - 5 years, 6 - 11 years, 12 - - 17 years). - unit: Euro - reference_period: Month - 2016-01-01: - 1: - min_alter: 0 - max_alter: 5 - betrag: 335 - 2: - min_alter: 6 - max_alter: 11 - betrag: 384 - 3: - min_alter: 12 - max_alter: 17 - betrag: 450 - reference: V. v. 03.12.2015 BGBl. I S. 2188. - 2017-01-01: - deviation_from: previous - 1: - betrag: 342 - 2: - betrag: 393 - 3: - betrag: 460 - reference: V. v. 03.12.2015 BGBl. I S. 2188. - 2018-01-01: - deviation_from: previous - 1: - betrag: 348 - 2: - betrag: 399 - 3: - betrag: 467 - reference: Artikel 1 V. v. 28.09.2017 BGBl. I S. 3525. - 2019-01-01: - deviation_from: previous - 1: - betrag: 354 - 2: - betrag: 406 - 3: - betrag: 476 - reference: Artikel 1 V. v. 28.09.2017 BGBl. I S. 3525. - 2020-01-01: - deviation_from: previous - 1: - betrag: 369 - 2: - betrag: 424 - 3: - betrag: 497 - reference: Artikel 1 V. v. 12.09.2019 BGBl. I S. 1393. - 2021-01-01: - deviation_from: previous - 1: - betrag: 393 - 2: - betrag: 451 - 3: - betrag: 528 - reference: Artikel 1 V. v. 03.11.2020 BGBl. I S. 2344. - 2022-01-01: - deviation_from: previous - 1: - betrag: 396 - 2: - betrag: 455 - 3: - betrag: 533 - reference: Artikel 1 V. v. 30.11.2021 BGBl. I S. 5066. - 2023-01-01: - deviation_from: previous - 1: - betrag: 437 - 2: - betrag: 502 - 3: - betrag: 588 - reference: Artikel 1 V. v. 30.11.2022 BGBl. I S. 2130. - 2024-01-01: - deviation_from: previous - 1: - betrag: 480 - 2: - betrag: 551 - 3: - betrag: 645 - reference: Artikel 1 V. v. 29.11.2023 BGBl. I Nr. 330. -abzugsrate_kindergeld: - name: - de: Verringerung des Kindesunterhalts durch Kindergeld - en: Reduction of child alimony payments due to child benefit - description: - de: >- - Das Kindergeld zählt als Einkommen des Kindes, weshalb es bei der Berechnung von - Unterhalt Berücksichtigung findet. Erhält der betreuende Elternteil das - Kindergeld für ein minderjähriges Kind, so kann der andere unterhaltspflichtige - Elternteil das hälftige Kindergeld bei der Unterhaltsberechnung in Abzug bringen. - en: >- - Child benefit counts as the child's income, which is why it is taken into - account when calculating the child alimony payment. If the parent taking care of - the child receives the child benefit for a minor child, the other parent liable - for child alimony payments can deduct half of the child benefit when calculating - alimony. - reference: § 1612b BGB - unit: Share - 2008-01-01: - kind: 0.5 - erwachsener: 1 diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/__init__.py" "b/src/_gettsim/solidarit\303\244tszuschlag/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/__init__.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index f9e56ae62a..651ce44f13 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -1,6 +1,8 @@ """Solidarity Surcharge (Solidaritätszuschlag).""" -from ttsim import piecewise_polynomial, policy_function +from __future__ import annotations + +from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function @policy_function( @@ -9,7 +11,7 @@ def betrag_y_sn_ohne_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, - soli_st_params: dict, + parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, ) -> float: """Calculate the Solidarity Surcharge on Steuernummer level. @@ -24,29 +26,13 @@ def betrag_y_sn_ohne_abgelt_st( with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 SolzG 1995. - Parameters - ---------- - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - See :func:`einkommensteuer__betrag_mit_kinderfreibetrag_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - soli_st_params - See params documentation :ref:`soli_st_params <soli_st_params>`. - - Returns - ------- - """ - eink_st_per_individual = ( - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - / einkommensteuer__anzahl_personen_sn - ) - out = einkommensteuer__anzahl_personen_sn * solidaritätszuschlagstarif( - eink_st_per_individual, soli_st_params + return einkommensteuer__anzahl_personen_sn * solidaritätszuschlagstarif( + steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + / einkommensteuer__anzahl_personen_sn, + parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, ) - return out - @policy_function( start_date="2009-01-01", leaf_name="betrag_y_sn", vectorization_strategy="loop" @@ -55,7 +41,7 @@ def betrag_y_sn_mit_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, einkommensteuer__abgeltungssteuer__betrag_y_sn: float, - soli_st_params: dict, + parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, ) -> float: """Calculate the Solidarity Surcharge on Steuernummer level. @@ -70,57 +56,26 @@ def betrag_y_sn_mit_abgelt_st( with Solidarity Surcharge tax rate and no tax exempt level. §3 (3) S.2 SolzG 1995. - Parameters - ---------- - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - See :func:`einkommensteuer__betrag_mit_kinderfreibetrag_y_sn`. - einkommensteuer__anzahl_personen_sn - See :func:`einkommensteuer__anzahl_personen_sn`. - einkommensteuer__abgeltungssteuer__betrag_y_sn - See :func:`einkommensteuer__abgeltungssteuer__betrag_y_sn`. - soli_st_params - See params documentation :ref:`soli_st_params <soli_st_params>`. - - Returns - ------- - """ - eink_st_per_individual = ( - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - / einkommensteuer__anzahl_personen_sn - ) - out = ( + return ( einkommensteuer__anzahl_personen_sn - * solidaritätszuschlagstarif(eink_st_per_individual, soli_st_params) - + soli_st_params["soli_st"]["rates"][0, -1] + * solidaritätszuschlagstarif( + steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn + / einkommensteuer__anzahl_personen_sn, + parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, + ) + + parameter_solidaritätszuschlag.rates[0, -1] * einkommensteuer__abgeltungssteuer__betrag_y_sn ) - return out - - -def solidaritätszuschlagstarif(st_per_individual: float, soli_st_params: dict) -> float: - """The isolated function for Solidaritätszuschlag. - - Parameters - ---------- - st_per_individual: - the tax amount to be topped up - soli_st_params - See params documentation :ref:`soli_st_params <solo_st_params>` - Returns - solidarity surcharge - ------- - """ +def solidaritätszuschlagstarif( + steuer_pro_person: float, + parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, +) -> float: + """The isolated function for Solidaritätszuschlag.""" - out = piecewise_polynomial( - st_per_individual, - thresholds=soli_st_params["soli_st"]["thresholds"], - rates=soli_st_params["soli_st"]["rates"], - intercepts_at_lower_thresholds=soli_st_params["soli_st"][ - "intercepts_at_lower_thresholds" - ], + return piecewise_polynomial( + x=steuer_pro_person, + parameters=parameter_solidaritätszuschlag, ) - - return out diff --git a/src/_gettsim/parameters/soli_st.yaml "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.yaml" similarity index 79% rename from src/_gettsim/parameters/soli_st.yaml rename to "src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.yaml" index 7ba34dd95b..b5b9cc31d2 100644 --- a/src/_gettsim/parameters/soli_st.yaml +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.yaml" @@ -1,5 +1,5 @@ --- -soli_st: +parameter_solidaritätszuschlag: name: de: Solidaritätszuschlag en: null @@ -8,22 +8,24 @@ soli_st: Ab 1995, der upper threshold im Intervall 1 ist nach der Formel transition_threshold in soli_st.py berechnet. en: null + unit: Euros + reference_period: Year type: piecewise_linear 1991-01-01: reference: Artikel 1 G. v. 24.06.1991 BGBl. I S. 1318. 0: lower_threshold: -inf - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 upper_threshold: 0 1: lower_threshold: 0 - rate: 0.0375 + rate_linear: 0.0375 upper_threshold: inf 1993-01-01: 0: lower_threshold: -inf - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 upper_threshold: inf 1995-01-01: @@ -31,74 +33,74 @@ soli_st: 0: lower_threshold: -inf intercept_at_lower_threshold: 0 - rate: 0 + rate_linear: 0 upper_threshold: 681 1: upper_threshold: 1089.6 - rate: 0.2 + rate_linear: 0.2 2: - rate: 0.075 + rate_linear: 0.075 upper_threshold: inf 1998-01-01: reference: Artikel 1 G. v. 21.11.1997 BGBl. I S. 2743. 0: lower_threshold: -inf upper_threshold: 939 - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 1: upper_threshold: 1295.17 - rate: 0.2 + rate_linear: 0.2 2: - rate: 0.055 + rate_linear: 0.055 upper_threshold: inf 2002-01-01: reference: G. v. 15.10.2002 BGBl. I S. 4131. 0: lower_threshold: -inf upper_threshold: 972 - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 1: upper_threshold: 1340.69 - rate: 0.2 + rate_linear: 0.2 2: - rate: 0.055 + rate_linear: 0.055 upper_threshold: inf 2021-01-01: reference: Artikel 1 G. v. 10.12.2019 BGBl. I S. 2115. 0: lower_threshold: -inf upper_threshold: 16956 - rate: 0 + rate_linear: 0 intercept_at_lower_threshold: 0 1: upper_threshold: 31527.56 - rate: 0.119 + rate_linear: 0.119 2: - rate: 0.055 + rate_linear: 0.055 upper_threshold: inf 2023-01-01: reference: Art. 4 G. v. 08.12.2022 BGBl. I S. 2230. - deviation_from: previous + updates_previous: true 0: upper_threshold: 17543 1: upper_threshold: 32619.02 2024-01-01: reference: Art. 5 G. v. 08.12.2022 BGBl. I S. 2230. - deviation_from: previous + updates_previous: true 0: upper_threshold: 18130 1: upper_threshold: 33710.47 2025-01-01: - deviation_from: previous + updates_previous: true reference: Art. 3 G. v. 30.12.2024 BGBl. 2024 Nr. 449. 0: upper_threshold: 19950 2026-01-01: - deviation_from: previous + updates_previous: true reference: Art. 4 G. v. 30.12.2024 BGBl. 2024 Nr. 449. 0: upper_treshold: 20350 diff --git a/src/_gettsim/sozialversicherung/__init__.py b/src/_gettsim/sozialversicherung/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/__init__.py +++ b/src/_gettsim/sozialversicherung/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/__init__.py b/src/_gettsim/sozialversicherung/arbeitslosen/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/__init__.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml b/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml new file mode 100644 index 0000000000..b1e7b39ec2 --- /dev/null +++ b/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml @@ -0,0 +1,99 @@ +--- +stundengrenze: + name: + de: Stundengrenze für Bezug von Arbeitslosengeld + en: Working hours limit to receive unemployment benefit + description: + de: >- + §138 (3) SGB III, früher auch §102 (2) AFG. Grenze, ab der keine Arbeitslosigkeit + mehr unterstellt wird. + en: null + unit: Hours + reference_period: Week + type: scalar + 1969-07-01: + value: 20 + 1986-01-01: + value: 19 + reference: Art. 1 G. v. 20.12.1985 BGBl I S. 2484 + 1989-01-01: + value: 18 + reference: Art. 1 G. v. 20.12.1988 BGBl I S. 2343 + 2012-04-01: + value: 15 + reference: Art. 2 G. v. 20.12.2011 BGBl I S. 2854 +anspruchsdauer_nach_alter: + name: + de: Anspruchsdauer für ALG 1 nach Alter. + en: Period of ALG 1 eligibility based on age. + description: + de: >- + § 147 Abs. 2 SGB III + Dauer des Anspruchs auf ALG 1 richtet sich nach Alter und wie viele Monate + eine Person versicherungsplichtig in den letzten 5 Jahren war. + en: >- + § 147 Abs. 2 SGB III + The length of ALG 1 eligibility depends on age and on how many months a + person was subject to compulsory insurance + unit: Months + reference_period: null + type: piecewise_constant + 1997-03-24: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 0 + intercept_at_lower_threshold: 12 + 2: + lower_threshold: 50 + intercept_at_lower_threshold: 15 + 3: + lower_threshold: 55 + intercept_at_lower_threshold: 18 + 4: + lower_threshold: 58 + upper_threshold: inf + intercept_at_lower_threshold: 24 +anspruchsdauer_nach_versicherungspflichtigen_monaten: + name: + de: Anspruchsdauer für ALG 1 nach versicherungspflichtigen Monaten. + en: Period of ALG 1 eligibility based on months of compulsory insurance. + description: + de: >- + § 147 Abs. 2 SGB III + Dauer des Anspruchs auf ALG 1 richtet sich nach Alter und wie viele Monate + eine Person versicherungsplichtig in den letzten 5 Jahren war. + en: >- + § 147 Abs. 2 SGB III + The length of ALG 1 eligibility depends on age and on how many months a + person was subject to compulsory insurance + unit: Months + reference_period: null + type: piecewise_constant + 1997-03-24: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 12 + intercept_at_lower_threshold: 6 + 2: + lower_threshold: 18 + intercept_at_lower_threshold: 8 + 3: + lower_threshold: 20 + intercept_at_lower_threshold: 10 + 4: + lower_threshold: 24 + intercept_at_lower_threshold: 12 + 5: + lower_threshold: 30 + intercept_at_lower_threshold: 15 + 6: + lower_threshold: 36 + intercept_at_lower_threshold: 18 + 7: + lower_threshold: 48 + upper_threshold: inf + intercept_at_lower_threshold: 24 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index b2731be981..5325853f6b 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -1,40 +1,30 @@ """Unemployment benefits (Arbeitslosengeld).""" +from __future__ import annotations + from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif -from ttsim import piecewise_polynomial, policy_function -from ttsim.config import numpy_or_jax as np +from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function -@policy_function(vectorization_strategy="loop") +@policy_function(end_date="1998-07-31", leaf_name="betrag_m") +def betrag_m_not_implemented() -> float: + """Calculate individual unemployment benefit.""" + raise NotImplementedError("Not implemented yet.") + + +@policy_function(start_date="1998-08-01") def betrag_m( einkommensteuer__anzahl_kinderfreibeträge: int, grundsätzlich_anspruchsberechtigt: bool, einkommen_vorjahr_proxy_m: float, - arbeitsl_geld_params: dict, + satz: dict[str, float], ) -> float: - """Calculate individual unemployment benefit. - - Parameters - ---------- - einkommensteuer__anzahl_kinderfreibeträge - See :func: - `einkommensteuer__anzahl_kinderfreibeträge`. - grundsätzlich_anspruchsberechtigt - See :func:`grundsätzlich_anspruchsberechtigt`. - einkommen_vorjahr_proxy_m - See :func:`einkommen_vorjahr_proxy_m`. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params <arbeitsl_geld_params>`. - - Returns - ------- - - """ + """Calculate individual unemployment benefit.""" if einkommensteuer__anzahl_kinderfreibeträge == 0: - arbeitsl_geld_satz = arbeitsl_geld_params["satz_ohne_kinder"] - elif einkommensteuer__anzahl_kinderfreibeträge > 0: - arbeitsl_geld_satz = arbeitsl_geld_params["satz_mit_kindern"] + arbeitsl_geld_satz = satz["allgemein"] + else: + arbeitsl_geld_satz = satz["erhöht"] if grundsätzlich_anspruchsberechtigt: out = einkommen_vorjahr_proxy_m * arbeitsl_geld_satz @@ -50,7 +40,8 @@ def monate_verbleibender_anspruchsdauer( monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, anwartschaftszeit: bool, monate_durchgängigen_bezugs_von_arbeitslosengeld: float, - arbeitsl_geld_params: dict, + anspruchsdauer_nach_alter: PiecewisePolynomialParamValue, + anspruchsdauer_nach_versicherungspflichtigen_monaten: PiecewisePolynomialParamValue, ) -> int: """Calculate the remaining amount of months a person can receive unemployment benefits. @@ -58,48 +49,11 @@ def monate_verbleibender_anspruchsdauer( """ nach_alter = piecewise_polynomial( alter, - thresholds=np.array( - [ - *list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"]), - np.inf, - ] - ), - rates=np.array( - [[0] * len(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"])] - ), - intercepts_at_lower_thresholds=np.array( - list(arbeitsl_geld_params["anspruchsdauer"]["nach_alter"].values()) - ), + parameters=anspruchsdauer_nach_alter, ) nach_versich_pfl = piecewise_polynomial( monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, - thresholds=np.array( - [ - *list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtigen_monaten" - ] - ), - np.inf, - ] - ), - rates=np.array( - [ - [0] - * len( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtigen_monaten" - ] - ) - ] - ), - intercepts_at_lower_thresholds=np.array( - list( - arbeitsl_geld_params["anspruchsdauer"][ - "nach_versicherungspflichtigen_monaten" - ].values() - ) - ), + parameters=anspruchsdauer_nach_versicherungspflichtigen_monaten, ) if anwartschaftszeit: anspruchsdauer_gesamt = min(nach_alter, nach_versich_pfl) @@ -121,75 +75,32 @@ def grundsätzlich_anspruchsberechtigt( arbeitssuchend: bool, monate_verbleibender_anspruchsdauer: int, arbeitsstunden_w: float, - arbeitsl_geld_params: dict, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + stundengrenze: float, ) -> bool: - """Check eligibility for unemployment benefit. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - arbeitssuchend - See basic input variable :ref:`arbeitssuchend <arbeitssuchend>`. - monate_verbleibender_anspruchsdauer - See :func:`monate_verbleibender_anspruchsdauer`. - arbeitsstunden_w - See basic input variable :ref:`arbeitsstunden_w <arbeitsstunden_w>`. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params <arbeitsl_geld_params>`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - - """ + """Check eligibility for unemployment benefit.""" regelaltersgrenze = ( sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze ) - out = ( + return ( arbeitssuchend and (monate_verbleibender_anspruchsdauer > 0) and (alter < regelaltersgrenze) - and (arbeitsstunden_w < arbeitsl_geld_params["stundengrenze"]) + and (arbeitsstunden_w < stundengrenze) ) - return out - @policy_function(vectorization_strategy="loop") def einkommen_vorjahr_proxy_m( sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, - arbeitsl_geld_params: dict, - eink_st_params: dict, - eink_st_abzuege_params: dict, - soli_st_params: dict, + sozialversicherungspauschale: float, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, + solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, ) -> float: - """Approximate last years income for unemployment benefit. - - Parameters - ---------- - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - See :func: - `sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m>`. - arbeitsl_geld_params - See params documentation :ref:`arbeitsl_geld_params <arbeitsl_geld_params>`. - eink_st_params - See params documentation :ref:`eink_st_params <eink_st_params>`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - soli_st_params - See params documentation :ref:`soli_st_params <soli_st_params>`. - - Returns - ------- - - """ + """Approximate last years income for unemployment benefit.""" # Relevant wage is capped at the contribution thresholds max_wage = min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m, @@ -197,25 +108,21 @@ def einkommen_vorjahr_proxy_m( ) # We need to deduct lump-sum amounts for contributions, taxes and soli - prox_ssc = arbeitsl_geld_params["sozialv_pausch"] * max_wage + prox_ssc = sozialversicherungspauschale * max_wage # Fictive taxes (Lohnsteuer) are approximated by applying the wage to the tax tariff # Caution: currently wrong calculation due to - # 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"] not being + # 12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale not being # the same as zu versteuerndes einkommen # waiting for PR Lohnsteuer #150 to be merged to correct this problem prox_tax = einkommensteuertarif( - 12 * max_wage - eink_st_abzuege_params["werbungskostenpauschale"], - eink_st_params, + 12 * max_wage + - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale, + einkommensteuer__parameter_einkommensteuertarif, ) prox_soli = piecewise_polynomial( - prox_tax, - thresholds=soli_st_params["soli_st"]["thresholds"], - rates=soli_st_params["soli_st"]["rates"], - intercepts_at_lower_thresholds=soli_st_params["soli_st"][ - "intercepts_at_lower_thresholds" - ], + x=prox_tax, + parameters=solidaritätszuschlag__parameter_solidaritätszuschlag, ) out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 - out = max(out, 0.0) - return out + return max(out, 0.0) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index ccc9997f80..76350f031b 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -1,5 +1,7 @@ """Contributions to the unemployment insurance.""" +from __future__ import annotations + from ttsim import policy_function @@ -7,26 +9,11 @@ def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: - """Unemployment insurance contributions paid by the insured person. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - sozialversicherung__rente__beitrag__einkommen_m - See :func:`sozialversicherung__rente__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Unemployment insurance contributions paid by the insured person.""" betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m - * arbeitslosenversicherung_params["beitr_satz"] + sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 ) # Set to 0 for minijobs @@ -42,39 +29,20 @@ def betrag_versicherter_m_ohne_midijob( def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, - betrag_versicherter_midijob_m: float, + betrag_versicherter_in_gleitzone_m: float, sozialversicherung__rente__beitrag__einkommen_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: - """Unemployment insurance contributions paid by the insured person. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - betrag_versicherter_midijob_m - See :func:`betrag_versicherter_midijob_m`. - sozialversicherung__rente__beitrag__einkommen_m - See :func:`sozialversicherung__rente__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Unemployment insurance contributions paid by the insured person.""" betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m - * arbeitslosenversicherung_params["beitr_satz"] + sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 ) # Set to 0 for minijobs if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_versicherter_midijob_m + out = betrag_versicherter_in_gleitzone_m else: out = betrag_arbeitgeber_regulär_beschäftigt_m @@ -85,26 +53,11 @@ def betrag_versicherter_m_mit_midijob( def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: - """Employer's unemployment insurance contribution until March 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - sozialversicherung__rente__beitrag__einkommen_m - See :func:`sozialversicherung__rente__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Employer's unemployment insurance contribution until March 2003.""" betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m - * arbeitslosenversicherung_params["beitr_satz"] + sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 ) # Set to 0 for minijobs @@ -120,39 +73,20 @@ def betrag_arbeitgeber_m_ohne_midijob( def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, - betrag_arbeitgeber_midijob_m: float, + betrag_arbeitgeber_in_gleitzone_m: float, sozialversicherung__rente__beitrag__einkommen_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: - """Employer's unemployment insurance contribution since April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - sozialversicherung__rente__beitrag__einkommen_m - See :func:`sozialversicherung__rente__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Employer's unemployment insurance contribution since April 2003.""" betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m - * arbeitslosenversicherung_params["beitr_satz"] + sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 ) # Set to 0 for minijobs if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_arbeitgeber_midijob_m + out = betrag_arbeitgeber_in_gleitzone_m else: out = betrag_arbeitgeber_regulär_beschäftigt_m @@ -160,126 +94,67 @@ def betrag_arbeitgeber_m_mit_midijob( @policy_function(start_date="2003-04-01") -def betrag_gesamt_midijob_m( +def betrag_gesamt_in_gleitzone_m( sozialversicherung__midijob_bemessungsentgelt_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: """Sum of employee's and employer's unemployment insurance contribution - for midijobs. - - Parameters - ---------- - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ - return ( - sozialversicherung__midijob_bemessungsentgelt_m - * 2 - * arbeitslosenversicherung_params["beitr_satz"] - ) + for Midijobs.""" + return sozialversicherung__midijob_bemessungsentgelt_m * beitragssatz @policy_function( start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_arbeitgeber_midijob_m", + leaf_name="betrag_arbeitgeber_in_gleitzone_m", ) -def betrag_arbeitgeber_midijob_m_anteil_bruttolohn( +def betrag_arbeitgeber_in_gleitzone_m_anteil_bruttolohn( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: """Employers' unemployment insurance contribution for Midijobs until September - 2022. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - - Returns - ------- - - """ + 2022.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * arbeitslosenversicherung_params["beitr_satz"] + * beitragssatz + / 2 ) -@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") -def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( - betrag_gesamt_midijob_m: float, - betrag_versicherter_midijob_m: float, +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_in_gleitzone_m") +def betrag_arbeitgeber_in_gleitzone_m_als_differenz_von_gesamt_und_versichertenbeitrag( + betrag_gesamt_in_gleitzone_m: float, + betrag_versicherter_in_gleitzone_m: float, ) -> float: - """Employer's unemployment insurance contribution since October 2022. - - Parameters - ---------- - betrag_gesamt_midijob_m - See :func:`betrag_gesamt_midijob_m`. - betrag_versicherter_midijob_m - See :func:`betrag_versicherter_midijob_m`. - - Returns - ------- - - """ - return betrag_gesamt_midijob_m - betrag_versicherter_midijob_m + """Employer's unemployment insurance contribution since October 2022.""" + return betrag_gesamt_in_gleitzone_m - betrag_versicherter_in_gleitzone_m @policy_function( start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_versicherter_midijob_m", + leaf_name="betrag_versicherter_in_gleitzone_m", ) -def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( - betrag_gesamt_midijob_m: float, - betrag_arbeitgeber_midijob_m: float, +def betrag_versicherter_in_gleitzone_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_gesamt_in_gleitzone_m: float, + betrag_arbeitgeber_in_gleitzone_m: float, ) -> float: """Employee's unemployment insurance contribution for Midijobs until September 2022. - - Parameters - ---------- - betrag_gesamt_midijob_m - See :func:`betrag_gesamt_midijob_m`. - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - - Returns - ------- - """ - return betrag_gesamt_midijob_m - betrag_arbeitgeber_midijob_m + return betrag_gesamt_in_gleitzone_m - betrag_arbeitgeber_in_gleitzone_m -@policy_function(start_date="2022-10-01", leaf_name="betrag_versicherter_midijob_m") -def betrag_versicherter_midijob_m_mit_festem_beitragssatz( +@policy_function( + start_date="2022-10-01", leaf_name="betrag_versicherter_in_gleitzone_m" +) +def betrag_versicherter_in_gleitzone_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - arbeitslosenversicherung_params: dict, + beitragssatz: float, ) -> float: - """Employee's unemployment insurance contribution since October 2022. - - Parameters - ---------- - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Employee's unemployment insurance contribution since October 2022.""" return ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * arbeitslosenversicherung_params["beitr_satz"] + * beitragssatz + / 2 ) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitragssatz.yaml b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitragssatz.yaml new file mode 100644 index 0000000000..adb9e34edf --- /dev/null +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitragssatz.yaml @@ -0,0 +1,52 @@ +--- +beitragssatz: + name: + de: Allgemeiner Beitragssatz zur Arbeitslosenversicherung + en: Contribution rate to unemployment insurance. + description: + de: >- + Beitragssatz zur Arbeitslosenversicherung, wird aufgeteilt in Arbeitnehmer- und + Arbeitgeberanteil. + en: >- + Contribution rate to unemployment insurance, split into employee and + employer contribution. + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1984-01-01: + value: 0.046 + 1985-01-01: + value: 0.044 + 1986-01-01: + value: 0.041 + 1987-01-01: + value: 0.043 + 1992-01-01: + value: 0.063 + 1993-01-01: + value: 0.065 + 2007-01-01: + value: 0.042 + 2008-01-01: + value: 0.032 + 2009-01-01: + value: 0.028 + 2011-01-01: + value: 0.03 + 2019-01-01: + value: 0.025 + note: >- + Set to 0.013 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651. Temporarily + reduced to 0.0125 in BeiSaV 2019. + reference: V. v. 21.12.2018 BGBl. I S. 2663 + 2020-01-01: + value: 0.024 + note: Temporarily reduced to 0.012 in BeiSaV 2019. + reference: V. v. 02.12.2019 BGBl. I S. 1998 + 2023-01-01: + value: 0.026 + note: >- + Contribution rate was temporarily reduced from 2019 to 2022 in BeiSaV 2019. Back + to level specified in § 341 Abs. 2 SGB III. + reference: Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/betrag.yaml b/src/_gettsim/sozialversicherung/arbeitslosen/betrag.yaml new file mode 100644 index 0000000000..a848361753 --- /dev/null +++ b/src/_gettsim/sozialversicherung/arbeitslosen/betrag.yaml @@ -0,0 +1,107 @@ +--- +freibetrag_nebeneinkommen: + name: + de: Freibetrag bei der Anrechnung von Nebeneinkommen + en: Income which is not deducted from unemployment benefit. + description: + de: § 155 SGB III, vorher § 141 (1) S. 1 + en: null + unit: Euros + reference_period: Month + type: scalar + 1999-08-01: + value: 161 + reference: Art. 1 G. v. 21.07.1999 BGBl. I S. 1648 + note: Originalwert 315 DM. + 2002-01-01: + value: 165 + reference: Art. 3 G. v. 21.12.2000 BGBl. I S. 1983 +sozialversicherungspauschale: + name: + de: Sozialversicherungspauschale zur Berechnung des Leistungsentgelts + en: Fictitious social insurance contribution rate + description: + de: >- + § 153 (1) Nr. 1 SGB III. Wird angewendet auf das Bemessungsentgelt. ACHTUNG! Beim + Elterngeld gibt es eine ähnliche Größe. + en: null + unit: Share + reference_period: null + type: scalar + 1984-01-01: + value: 0.1727 + 1985-01-01: + value: 0.1745 + 1986-01-01: + value: 0.1775 + 1987-01-01: + value: 0.1774 + 1988-01-01: + value: 0.1794 + 1989-01-01: + value: 0.1795 + 1990-01-01: + value: 0.1775 + 1991-01-01: + value: 0.179 + 1992-01-01: + value: 0.184 + 1993-01-01: + value: 0.187 + 1994-01-01: + value: 0.1955 + 1995-01-01: + value: 0.1915 + 1996-01-01: + value: 0.1995 + 1997-01-01: + value: 0.2095 + 1998-01-01: + value: 0.2105 + 2000-01-01: + value: 0.20535 + 2001-01-01: + value: 0.2044 + 2002-01-01: + value: 0.2065 + 2003-01-01: + value: 0.2105 + 2004-01-01: + value: 0.2095 + 2005-01-01: + value: 0.2074 + 2006-01-01: + value: 0.2141 + 2007-01-01: + value: 0.2075 + 2008-01-01: + value: 0.20475 + 2009-01-01: + value: 0.20525 + 2010-01-01: + value: 0.20225 + 2011-01-01: + value: 0.20625 + 2012-01-01: + value: 0.21 + reference: Art. 2 G. v. 20.12.2011 BGBl. I S. 2854 + 2019-01-01: + value: 0.2 + reference: Art. 1 G. v. 18.12.2018 BGBl. I S. 2651 +satz: + name: + de: Ersatzrate des Arbeitslosengelds + en: Replacement rate of Arbeitslosengeld + description: + de: >- + §149 Nr. 2 SGB III, vorher § 129 SGB III. Höhe des Arbeitslosengeldes im + Verhältnis zum letzten Nettoentgelt. Unterscheidet sich für Personen mit/ohne + Kinder im Sinne des EStG. + en: null + unit: Share + reference_period: null + type: dict + 1998-08-01: + allgemein: 0.6 + erhöht: 0.67 + reference: Art. 1 G. v. 24.03.1997 BGBl. I S. 594 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index b4bbb333eb..108b73789a 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" index 4aca59f2f5..50a4c0cdfd 100644 --- "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -1,5 +1,7 @@ """Social insurance contributions.""" +from __future__ import annotations + from ttsim import policy_function @@ -10,23 +12,7 @@ def beiträge_versicherter_m( sozialversicherung__rente__beitrag__betrag_versicherter_m: float, sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: float, ) -> float: - """Sum of social insurance contributions paid by the insured person. - Parameters - ---------- - sozialversicherung__pflege__beitrag__betrag_versicherter_m - See :func:`sozialversicherung__pflege__beitrag__betrag_versicherter_m`. - sozialversicherung__kranken__beitrag__betrag_versicherter_m - See :func:`sozialversicherung__kranken__beitrag__betrag_versicherter_m`. - sozialversicherung__rente__beitrag__betrag_versicherter_m - See :func: - `sozialversicherung__rente__beitrag__betrag_versicherter_m`. - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m - See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m`. - - Returns - ------- - - """ + """Sum of social insurance contributions paid by the insured person.""" return ( sozialversicherung__pflege__beitrag__betrag_versicherter_m + sozialversicherung__kranken__beitrag__betrag_versicherter_m @@ -42,23 +28,7 @@ def beiträge_arbeitgeber_m( sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: float, sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: float, ) -> float: - """Sum of employer's social insurance contributions. - - Parameters - ---------- - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m - See :func:`sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m`. - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m - See :func:`sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m`. - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m - See :func:`sozialversicherung__rente__beitrag__betrag_arbeitgeber_m`. - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m - See :func:`sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m`. - - Returns - ------- - - """ + """Sum of employer's social insurance contributions.""" return ( sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m @@ -72,16 +42,5 @@ def beiträge_gesamt_m( beiträge_versicherter_m: float, beiträge_arbeitgeber_m: float, ) -> float: - """Sum of employer's and insured person's social insurance contributions. - - Parameters - ---------- - beiträge_versicherter_m - See :func:`beiträge_versicherter_m`. - beiträge_arbeitgeber_m - See :func:`beiträge_arbeitgeber_m`. - Returns - ------- - - """ + """Sum of employer's and insured person's social insurance contributions.""" return beiträge_versicherter_m + beiträge_arbeitgeber_m diff --git "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" deleted file mode 100644 index aed07b6d57..0000000000 --- "a/src/_gettsim/sozialversicherung/geringf\303\274gig_besch\303\244ftigt.py" +++ /dev/null @@ -1,118 +0,0 @@ -"""Marginally employed.""" - -from ttsim import RoundingSpec, policy_function - - -@policy_function() -def geringfügig_beschäftigt( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - minijob_grenze: float, -) -> bool: - """Individual earns less than marginal employment threshold. - - Marginal employed pay no social insurance contributions. - - Legal reference: § 8 Abs. 1 Satz 1 and 2 SGB IV - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - minijob_grenze - See :func:`minijob_grenze`. - - - Returns - ------- - Whether person earns less than marginal employment threshold. - - """ - return ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - <= minijob_grenze - ) - - -@policy_function( - end_date="1999-12-31", - leaf_name="minijob_grenze", - rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" - ), -) -def minijob_grenze_unterscheidung_ost_west( - wohnort_ost: bool, geringfügige_einkommen_params: dict -) -> float: - """Minijob income threshold depending on place of living (East or West Germany). - - Until 1999, the threshold is different for East and West Germany. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - geringfügige_einkommen_params - See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. - Returns - ------- - - """ - west = geringfügige_einkommen_params["grenzen_m"]["minijob"]["west"] - ost = geringfügige_einkommen_params["grenzen_m"]["minijob"]["ost"] - out = ost if wohnort_ost else west - return out - - -@policy_function( - start_date="2000-01-01", - end_date="2022-09-30", - leaf_name="minijob_grenze", - rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" - ), -) -def minijob_grenze_fixer_betrag(geringfügige_einkommen_params: dict) -> float: - """Minijob income threshold depending on place of living. - - From 2000 onwards, the threshold is the same for all of Germany. Until September - 2022, the threshold is exogenously set. - - Parameters - ---------- - geringfügige_einkommen_params - See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. - Returns - ------- - - """ - return geringfügige_einkommen_params["grenzen_m"]["minijob"] - - -@policy_function( - start_date="2022-10-01", - leaf_name="minijob_grenze", - rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" - ), -) -def minijob_grenze_abgeleitet_von_mindestlohn( - geringfügige_einkommen_params: dict, -) -> float: - """Minijob income threshold since 10/2022. Since then, it is calculated endogenously - from the statutory minimum wage. - - Parameters - ---------- - geringfügige_einkommen_params - See params documentation :ref:`geringfügige_einkommen_params <geringfügige_einkommen_params>`. - - Returns - ------- - Marginal Job Threshold - - """ - return ( - geringfügige_einkommen_params["mindestlohn"] - * geringfügige_einkommen_params["faktor_zähler"] - / geringfügige_einkommen_params["faktor_nenner"] - ) diff --git a/src/_gettsim/sozialversicherung/kranken/__init__.py b/src/_gettsim/sozialversicherung/kranken/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/kranken/__init__.py +++ b/src/_gettsim/sozialversicherung/kranken/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py b/src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index e88b7caf43..33116bf9f7 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -1,5 +1,7 @@ """Public health insurance contributions.""" +from __future__ import annotations + from ttsim import policy_function @@ -14,24 +16,6 @@ def betrag_versicherter_m_ohne_midijob( """Public health insurance contributions paid by the insured person. Before Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_rentner_m - See :func:`betrag_rentner_m`. - betrag_selbstständig_m - See :func:`betrag_selbstständig_m`. - betrag_versicherter_regulär_beschäftigt_m - See :func:`betrag_versicherter_regulär_beschäftigt_m`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - - Returns - ------- - """ if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m @@ -50,42 +34,20 @@ def betrag_versicherter_m_mit_midijob( betrag_rentner_m: float, betrag_selbstständig_m: float, sozialversicherung__in_gleitzone: bool, - betrag_versicherter_midijob_m: float, + betrag_versicherter_in_gleitzone_m: float, betrag_versicherter_regulär_beschäftigt_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, ) -> float: """Public health insurance contributions paid by the insured person. After Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_rentner_m - See :func:`betrag_rentner_m`. - betrag_selbstständig_m - See :func:`betrag_selbstständig_m`. - betrag_versicherter_midijob_m - See :func:`betrag_versicherter_midijob_m`. - betrag_versicherter_regulär_beschäftigt_m - See :func:`betrag_versicherter_regulär_beschäftigt_m`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - - Returns - ------- - """ if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_versicherter_midijob_m + out = betrag_versicherter_in_gleitzone_m else: out = betrag_versicherter_regulär_beschäftigt_m @@ -99,41 +61,19 @@ def betrag_arbeitgeber_m_ohne_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommen_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, - ges_krankenv_params: dict, + minijob_arbeitgeberpauschale: float, beitragssatz_arbeitgeber: float, ) -> float: """Employer's public health insurance contribution. Before Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - einkommen_m - See :func:`einkommen_m`. - beitragssatz_arbeitgeber - See :func:`beitragssatz_arbeitgeber`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - """ if einkommensteuer__einkünfte__ist_selbstständig: out = 0.0 elif sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_krankenv_params[ - "arbeitgeberpauschale_bei_geringfügiger_beschäftigung" - ] + * minijob_arbeitgeberpauschale ) else: out = einkommen_m * beitragssatz_arbeitgeber @@ -146,51 +86,25 @@ def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - betrag_arbeitgeber_midijob_m: float, + betrag_arbeitgeber_in_gleitzone_m: float, einkommen_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, - ges_krankenv_params: dict, + minijob_arbeitgeberpauschale: float, beitragssatz_arbeitgeber: float, ) -> float: """Employer's public health insurance contribution. After Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - einkommen_m - See :func:`einkommen_m`. - beitragssatz_arbeitgeber - See :func:`beitragssatz_arbeitgeber`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - """ if einkommensteuer__einkünfte__ist_selbstständig: out = 0.0 elif sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_krankenv_params[ - "arbeitgeberpauschale_bei_geringfügiger_beschäftigung" - ] + * minijob_arbeitgeberpauschale ) elif sozialversicherung__in_gleitzone: - out = betrag_arbeitgeber_midijob_m + out = betrag_arbeitgeber_in_gleitzone_m else: out = einkommen_m * beitragssatz_arbeitgeber @@ -202,49 +116,79 @@ def betrag_versicherter_regulär_beschäftigt_m( einkommen_m: float, beitragssatz_arbeitnehmer: float, ) -> float: - """Employee's health insurance contributions for regular jobs. + """Employee's health insurance contributions for regular jobs.""" + return beitragssatz_arbeitnehmer * einkommen_m - Parameters - ---------- - einkommen_m - See :func:`einkommen_m`. - beitragssatz_arbeitnehmer - See :func:`beitragssatz_arbeitnehmer`. - Returns - ------- +@policy_function( + vectorization_strategy="loop", + end_date="2005-06-30", + leaf_name="betrag_selbstständig_m", +) +def betrag_selbstständig_m_mit_einheitlichen_beitragssatz( + bemessungsgrundlage_selbstständig_m: float, + beitragssatz: float, +) -> float: + """Health insurance contributions for self-employed's income. The self-employed + pay the full reduced contribution. """ - return beitragssatz_arbeitnehmer * einkommen_m + return beitragssatz * bemessungsgrundlage_selbstständig_m -@policy_function(vectorization_strategy="loop") -def betrag_selbstständig_m( +@policy_function( + vectorization_strategy="loop", + start_date="2005-07-01", + end_date="2008-12-31", + leaf_name="betrag_selbstständig_m", +) +def betrag_selbstständig_m_ohne_ermäßigtem_beitragssatz( bemessungsgrundlage_selbstständig_m: float, - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: """Health insurance contributions for self-employed's income. The self-employed pay the full reduced contribution. + """ + return ( + parameter_beitragssatz["mean_allgemein"] * bemessungsgrundlage_selbstständig_m + ) - Parameters - ---------- - bemessungsgrundlage_selbstständig_m - See :func:`bemessungsgrundlage_selbstständig_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- +@policy_function( + vectorization_strategy="loop", + start_date="2009-01-01", + end_date="2014-12-31", + leaf_name="betrag_selbstständig_m", +) +def betrag_selbstständig_m_ohne_zusatzbeitrag( + bemessungsgrundlage_selbstständig_m: float, + parameter_beitragssatz: dict[str, float], +) -> float: + """Health insurance contributions for self-employed's income. The self-employed + pay the full reduced contribution. + """ + return parameter_beitragssatz["ermäßigt"] * bemessungsgrundlage_selbstständig_m + + +@policy_function( + vectorization_strategy="loop", + start_date="2015-01-01", + leaf_name="betrag_selbstständig_m", +) +def betrag_selbstständig_m_mit_zusatzbeitrag( + bemessungsgrundlage_selbstständig_m: float, + parameter_beitragssatz: dict[str, float], +) -> float: + """Health insurance contributions for self-employed's income. The self-employed + pay the full reduced contribution. + Contribution rate includes the insurance provider-specific Zusatzbeitrag introduced + in 2015. """ - params = ges_krankenv_params["beitr_satz"] - # The below must be done via dates_active in order to enable vectorization. - ermäßigter_beitrag = ( - params["ermäßigt"] if ("ermäßigt" in params) else params["mean_allgemein"] + beitrag = ( + parameter_beitragssatz["ermäßigt"] + + parameter_beitragssatz["mean_zusatzbeitrag"] ) - zusatzbeitrag = params.get("mean_zusatzbeitrag", 0.0) - ges_krankenv_beitr_satz_selbst = ermäßigter_beitrag + zusatzbeitrag - - return ges_krankenv_beitr_satz_selbst * bemessungsgrundlage_selbstständig_m + return beitrag * bemessungsgrundlage_selbstständig_m @policy_function() @@ -252,24 +196,13 @@ def betrag_rentner_m( bemessungsgrundlage_rente_m: float, beitragssatz_arbeitnehmer: float, ) -> float: - """Health insurance contributions for pension incomes. - - Parameters - ---------- - bemessungsgrundlage_rente_m - See :func:`bemessungsgrundlage_rente_m`. - beitragssatz_arbeitnehmer - See :func:`beitragssatz_arbeitnehmer`. - Returns - ------- - - """ + """Health insurance contributions for pension incomes.""" return beitragssatz_arbeitnehmer * bemessungsgrundlage_rente_m @policy_function(start_date="2003-04-01") -def betrag_gesamt_midijob_m( +def betrag_gesamt_in_gleitzone_m( sozialversicherung__midijob_bemessungsentgelt_m: float, beitragssatz_arbeitnehmer: float, beitragssatz_arbeitgeber: float, @@ -277,21 +210,6 @@ def betrag_gesamt_midijob_m( """Sum of employee and employer health insurance contribution for midijobs. Midijobs were introduced in April 2003. - - Parameters - ---------- - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - beitragssatz_arbeitnehmer - See - :func:`beitragssatz_arbeitnehmer`. - beitragssatz_arbeitgeber - See - :func:`beitragssatz_arbeitgeber`. - - Returns - ------- - """ return ( beitragssatz_arbeitnehmer + beitragssatz_arbeitgeber @@ -301,9 +219,9 @@ def betrag_gesamt_midijob_m( @policy_function( start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_arbeitgeber_midijob_m", + leaf_name="betrag_arbeitgeber_in_gleitzone_m", ) -def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz( +def betrag_arbeitgeber_in_gleitzone_m_mit_festem_beitragssatz( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, sozialversicherung__in_gleitzone: bool, beitragssatz_arbeitgeber: float, @@ -311,19 +229,6 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz( """Employers' health insurance contribution for midijobs until September 2022. Midijobs were introduced in April 2003. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - beitragssatz_arbeitgeber - See - :func:`beitragssatz_arbeitgeber`. - Returns - ------- - """ if sozialversicherung__in_gleitzone: out = ( @@ -336,32 +241,17 @@ def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz( return out -@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") -def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( - betrag_gesamt_midijob_m: float, - betrag_versicherter_midijob_m: float, +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_in_gleitzone_m") +def betrag_arbeitgeber_in_gleitzone_m_als_differenz_von_gesamt_und_versichertenbeitrag( + betrag_gesamt_in_gleitzone_m: float, + betrag_versicherter_in_gleitzone_m: float, sozialversicherung__in_gleitzone: bool, ) -> float: """Employer's health insurance contribution for midijobs since October 2022. - - Parameters - ---------- - betrag_gesamt_midijob_m - See :func:`betrag_gesamt_midijob_m`. - betrag_versicherter_midijob_m - See :func:`betrag_versicherter_midijob_m`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - beitragssatz_arbeitgeber - See - :func:`beitragssatz_arbeitgeber`. - Returns - ------- - """ if sozialversicherung__in_gleitzone: - out = betrag_gesamt_midijob_m - betrag_versicherter_midijob_m + out = betrag_gesamt_in_gleitzone_m - betrag_versicherter_in_gleitzone_m else: out = 0.0 @@ -371,45 +261,25 @@ def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitra @policy_function( start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_versicherter_midijob_m", + leaf_name="betrag_versicherter_in_gleitzone_m", ) -def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( - betrag_gesamt_midijob_m: float, - betrag_arbeitgeber_midijob_m: float, +def betrag_versicherter_in_gleitzone_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_gesamt_in_gleitzone_m: float, + betrag_arbeitgeber_in_gleitzone_m: float, ) -> float: - """Employee's health insurance contribution for midijobs until September 2022. + """Employee's health insurance contribution for midijobs until September 2022.""" + return betrag_gesamt_in_gleitzone_m - betrag_arbeitgeber_in_gleitzone_m - Parameters - ---------- - betrag_gesamt_midijob_m - See :func:`betrag_gesamt_midijob_m`. - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - Returns - ------- - """ - return betrag_gesamt_midijob_m - betrag_arbeitgeber_midijob_m - - -@policy_function(start_date="2022-10-01", leaf_name="betrag_versicherter_midijob_m") -def betrag_versicherter_midijob_m_mit_festem_beitragssatz( +@policy_function( + start_date="2022-10-01", + leaf_name="betrag_versicherter_in_gleitzone_m", +) +def betrag_versicherter_in_gleitzone_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, beitragssatz_arbeitnehmer: float, ) -> float: - """Employee's health insurance contribution for midijobs since October 2022. - - Parameters - ---------- - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. - beitragssatz_arbeitnehmer - See - :func:`beitragssatz_arbeitnehmer`. - Returns - ------- - - """ + """Employee's health insurance contribution for midijobs since October 2022.""" return ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m * beitragssatz_arbeitnehmer diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragsbemessungsgrenze.yaml b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragsbemessungsgrenze.yaml new file mode 100644 index 0000000000..62d79504b3 --- /dev/null +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragsbemessungsgrenze.yaml @@ -0,0 +1,140 @@ +--- +beitragsbemessungsgrenze_m: + name: + de: Beitragsbemessungsgrenze der gesetzlichen Krankenversicherung + en: Maximum income subject to health insurance contributions + description: + de: >- + Die Beitragsbemessungsgrenze ist einheitlich in der gesamten BRD. Die + Bemessungsgrenze gilt auch für die Pflegeversicherung. + en: >- + The income threshold is uniform throughout the Federal Republic of Germany. + The threshold also applies to long-term care insurance. + unit: Euros + reference_period: Month + type: scalar + 1984-01-01: + value: 1994 + 1985-01-01: + value: 2071 + 1986-01-01: + value: 2147 + 1987-01-01: + value: 2186 + 1988-01-01: + value: 2301 + 1989-01-01: + value: 2339 + 1990-01-01: + note: >- + The Bemessungsgrenze differs between West and East Germany. See + ``parameter_beitragsbemessungsgrenze_nach_wohnort``. + 2001-01-01: + value: 3336 + 2002-01-01: + value: 3375 + 2003-01-01: + value: 3450 + 2004-01-01: + value: 3488 + 2005-01-01: + value: 3525 + 2006-01-01: + value: 3562.5 + 2008-01-01: + value: 3600 + 2009-01-01: + value: 3675 + 2010-01-01: + value: 3750 + 2011-01-01: + value: 3712.5 + 2012-01-01: + value: 3825 + 2013-01-01: + value: 3937.5 + 2014-01-01: + value: 4050 + note: http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + 2015-01-01: + value: 4125 + 2016-01-01: + value: 4237.5 + note: https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + 2017-01-01: + value: 4350 + note: https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + 2018-01-01: + value: 4425 + 2019-01-01: + value: 4537.5 + 2020-01-01: + value: 4687.5 + reference: V. v. 17.12.2019 BGBl. I S. 2848 + 2021-01-01: + value: 4837.5 + reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + value: 4837.5 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + value: 4987.5 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + value: 5175 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2025-01-01: + value: 5512.5 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 +parameter_beitragsbemessungsgrenze_nach_wohnort: + name: + de: Beitragsbemessungsgrenze der gesetzlichen Krankenversicherung + en: Maximum income subject to health insurance contributions + description: + de: >- + Die Beitragsbemessungsgrenze für Krankenversicherung ist unterschiedlich + zwischen West- und Ostdeutschland. Die Bemessungsgrenze gilt auch für die + Pflegeversicherung. + en: >- + The income threshold is different for health insurance between West and East + Germany. The threshold also applies to long-term care insurance. + unit: Euros + reference_period: Month + type: dict + 1990-01-01: + west: 2416 + ost: 1035 + 1991-01-01: + west: 2493 + ost: 1151 + 1992-01-01: + west: 2608 + ost: 1841 + 1993-01-01: + west: 2761 + ost: 2032 + 1994-01-01: + west: 2914 + ost: 2262 + 1995-01-01: + west: 2991 + ost: 2454 + 1996-01-01: + west: 3068 + ost: 2608 + 1997-01-01: + west: 3144 + ost: 2723 + 1998-01-01: + west: 3221 + ost: 2684 + 1999-01-01: + west: 3259 + ost: 2761 + 2000-01-01: + west: 3298 + ost: 2723 + 2001-01-01: + note: >- + The Bemessungsgrenze does not differ between West and East Germany. See + ``beitragsbemessungsgrenze_m``. diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index a5d26dcf02..050e501b98 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -1,339 +1,279 @@ """Contribution rate for health insurance.""" -from ttsim import policy_function +from __future__ import annotations +from ttsim import param_function -@policy_function( - end_date="2005-06-30", -) -def beitragssatz_arbeitnehmer( - ges_krankenv_params: dict, -) -> float: + +@param_function(end_date="2005-06-30") +def beitragssatz_arbeitnehmer(beitragssatz: float) -> float: """Employee's health insurance contribution rate until June 2005. Basic split between employees and employers. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Beitragssatz for statutory health insurance. - """ - return ges_krankenv_params["beitr_satz"]["mean_allgemein"] / 2 + return beitragssatz / 2 -@policy_function( - end_date="2005-06-30", -) -def beitragssatz_arbeitnehmer_jahresanfang( - ges_krankenv_params: dict, -) -> float: +@param_function(end_date="2005-06-30") +def beitragssatz_arbeitnehmer_jahresanfang(beitragssatz_jahresanfang: float) -> float: """Employee's health insurance contribution rate for the beginning of the year until June 2005. Basic split between employees and employers. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Beitragssatz for statutory health insurance at the begging of the year. - """ - return ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] / 2 + return beitragssatz_jahresanfang / 2 -@policy_function( +@param_function( start_date="2005-07-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitnehmer", ) def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. From July 2005 until December 2008. The contribution rates consists of a general rate (split equally between employers and employees, differs across sickness funds) and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - zusatzbeitragssatz - See :func:`zusatzbeitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Beitragssatz for statutory health insurance. - """ + return ( + parameter_beitragssatz["mean_allgemein"] / 2 + + parameter_beitragssatz["sonderbeitrag"] + ) - mean_allgemein = ges_krankenv_params["beitr_satz"]["mean_allgemein"] - return mean_allgemein / 2 + zusatzbeitragssatz - - -@policy_function( +@param_function( start_date="2005-07-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitnehmer_jahresanfang", ) def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, + parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. From July 2005 until December 2008. The contribution rates consists of a general rate (split equally between employers and employees, differs across sickness funds) and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - zusatzbeitragssatz - See :func:`zusatzbeitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Beitragssatz for statutory health insurance at the beginning of the year. - """ + return ( + parameter_beitragssatz_jahresanfang["mean_allgemein"] / 2 + + parameter_beitragssatz_jahresanfang["sonderbeitrag"] + ) - mean_allgemein = ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] - - return mean_allgemein / 2 + zusatzbeitragssatz - -@policy_function( +@param_function( start_date="2009-01-01", - end_date="2018-12-31", + end_date="2014-12-31", leaf_name="beitragssatz_arbeitnehmer", ) -def beitragssatz_arbeitnehmer_einheitlicher_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, +def beitragssatz_arbeitnehmer_einheitlicher_beitrag_und_sonderbeitrag( + parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. - From January 2009 until December 2018. The contribution rates consists of a general + From January 2009 until December 2014. The contribution rates consists of a general rate (split equally between employers and employees, same for all sickness funds) and a top-up rate, which is fully paid by employees. - - Parameters - ---------- - zusatzbeitragssatz - See :func:`zusatzbeitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Beitragssatz for statutory health insurance. - """ + return ( + parameter_beitragssatz["allgemein"] / 2 + + parameter_beitragssatz["sonderbeitrag"] + ) - allgemein = ges_krankenv_params["beitr_satz"]["allgemein"] - - return allgemein / 2 + zusatzbeitragssatz - -@policy_function( +@param_function( start_date="2009-01-01", - end_date="2018-12-31", + end_date="2014-12-31", leaf_name="beitragssatz_arbeitnehmer_jahresanfang", ) -def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, +def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_sonderbeitrag( + parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. - From January 2009 until December 2018. The contribution rates consists of a general + From January 2009 until December 2014. The contribution rates consists of a general rate (split equally between employers and employees, same for all sickness funds) and a top-up rate, which is fully paid by employees. + """ + return ( + parameter_beitragssatz_jahresanfang["allgemein"] / 2 + + parameter_beitragssatz_jahresanfang["sonderbeitrag"] + ) - Parameters - ---------- - zusatzbeitragssatz - See :func:`zusatzbeitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- - Beitragssatz for statutory health insurance at the beginning of the year. +@param_function( + start_date="2015-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitnehmer", +) +def beitragssatz_arbeitnehmer_einheitlicher_beitrag_und_mittlerer_zusatzbeitrag( + parameter_beitragssatz: dict[str, float], +) -> float: + """Employee's health insurance contribution rate. + From January 2015 until December 2018. The contribution rates consists of a general + rate (split equally between employers and employees, same for all sickness funds) + and a top-up rate, which is fully paid by employees. """ + return ( + parameter_beitragssatz["allgemein"] / 2 + + parameter_beitragssatz["mean_zusatzbeitrag"] + ) - allgemein = ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] - return allgemein / 2 + zusatzbeitragssatz +@param_function( + start_date="2015-01-01", + end_date="2018-12-31", + leaf_name="beitragssatz_arbeitnehmer_jahresanfang", +) +def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_mittlerer_zusatzbeitrag( + parameter_beitragssatz_jahresanfang: dict[str, float], +) -> float: + """Employee's health insurance contribution rate at the beginning of the year. + + From January 2015 until December 2018. The contribution rates consists of a general + rate (split equally between employers and employees, same for all sickness funds) + and a top-up rate, which is fully paid by employees. + """ + return ( + parameter_beitragssatz_jahresanfang["allgemein"] / 2 + + parameter_beitragssatz_jahresanfang["mean_zusatzbeitrag"] + ) -@policy_function( +@param_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitnehmer", ) def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. Since 2019. Zusatzbeitrag is split equally between employers and employees. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - allgemeiner_beitr_satz = ges_krankenv_params["beitr_satz"]["allgemein"] - return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 + return ( + parameter_beitragssatz["allgemein"] + + parameter_beitragssatz["mean_zusatzbeitrag"] + ) / 2 -@policy_function( +@param_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitnehmer_jahresanfang", ) def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( - zusatzbeitragssatz: float, - ges_krankenv_params: dict, + parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. Zusatzbeitrag is now split equally between employers and employees. + """ + return ( + parameter_beitragssatz_jahresanfang["allgemein"] + + parameter_beitragssatz_jahresanfang["mean_zusatzbeitrag"] + ) / 2 - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- +@param_function( + end_date="2005-06-30", + leaf_name="beitragssatz_arbeitgeber", +) +def beitragssatz_arbeitgeber_bis_06_2005(beitragssatz: float) -> float: + """Employer's health insurance contribution rate. + Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - allgemeiner_beitr_satz = ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] - return (allgemeiner_beitr_satz + zusatzbeitragssatz) / 2 + return beitragssatz / 2 -@policy_function( - end_date="2008-12-31", - leaf_name="beitragssatz_arbeitgeber", + +@param_function( + end_date="2005-06-30", + leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) -def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( - ges_krankenv_params: dict, +def beitragssatz_arbeitgeber_jahresanfang_bis_06_2005( + beitragssatz_jahresanfang: float, ) -> float: """Employer's health insurance contribution rate. Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. + """ + + return beitragssatz_jahresanfang / 2 - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- +@param_function( + start_date="2005-07-01", + end_date="2008-12-31", + leaf_name="beitragssatz_arbeitgeber", +) +def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( + parameter_beitragssatz: dict[str, float], +) -> float: + """Employer's health insurance contribution rate. + Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - return ges_krankenv_params["beitr_satz"]["mean_allgemein"] / 2 + return parameter_beitragssatz["mean_allgemein"] / 2 -@policy_function( +@param_function( + start_date="2005-07-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( - ges_krankenv_params: dict, + parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employer's health insurance contribution rate at the begging of the year. Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - return ges_krankenv_params["beitr_satz_jahresanfang"]["mean_allgemein"] / 2 + return parameter_beitragssatz_jahresanfang["mean_allgemein"] / 2 -@policy_function( +@param_function( start_date="2009-01-01", end_date="2018-12-31", leaf_name="beitragssatz_arbeitgeber", ) def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: """Employer's health insurance contribution rate. From 2009 until 2018, the contribution rate was uniform for all health insurers, Zusatzbeitrag irrelevant. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - return ges_krankenv_params["beitr_satz"]["allgemein"] / 2 + return parameter_beitragssatz["allgemein"] / 2 -@policy_function( +@param_function( start_date="2009-01-01", end_date="2018-12-31", leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( - ges_krankenv_params: dict, + parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employer's health insurance contribution rate at the beginning of the year. From 2009 until 2018, the contribution rate was uniform for all health insurers, Zusatzbeitrag irrelevant. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - return ges_krankenv_params["beitr_satz_jahresanfang"]["allgemein"] / 2 + return parameter_beitragssatz_jahresanfang["allgemein"] / 2 -@policy_function( +@param_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitgeber", ) @@ -344,20 +284,11 @@ def beitragssatz_arbeitgeber_paritätischer_zusatzbeitrag( Since 2019, the full contribution rate is now split equally between employers and employees. - - Parameters - ---------- - beitragssatz_arbeitnehmer - See :func:`beitragssatz_arbeitnehmer`. - - Returns - ------- - """ return beitragssatz_arbeitnehmer -@policy_function( +@param_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) @@ -368,61 +299,30 @@ def beitragssatz_arbeitgeber_jahresanfang_paritätischer_zusatzbeitrag( Since 2019, the full contribution rate is now split equally between employers and employees. - - Parameters - ---------- - beitragssatz_arbeitnehmer - See :func:`beitragssatz_arbeitnehmer`. - - Returns - ------- - """ return beitragssatz_arbeitnehmer_jahresanfang -@policy_function( +@param_function( start_date="2005-07-01", end_date="2014-12-31", leaf_name="zusatzbeitragssatz", ) def zusatzbeitragssatz_von_sonderbeitrag( - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: - """Health insurance top-up (Zusatzbeitrag) rate until December 2014. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Zusatzbeitragssatz (based on Sonderbeitrag) + """Health insurance top-up (Zusatzbeitrag) rate until December 2014.""" - """ - - return ges_krankenv_params["beitr_satz"]["sonderbeitrag"] + return parameter_beitragssatz["sonderbeitrag"] -@policy_function( +@param_function( start_date="2015-01-01", leaf_name="zusatzbeitragssatz", ) def zusatzbeitragssatz_von_mean_zusatzbeitrag( - ges_krankenv_params: dict, + parameter_beitragssatz: dict[str, float], ) -> float: - """Health insurance top-up rate (Zusatzbeitrag) since January 2015. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Zusatzbeitragssatz (based on mean value of Zusatzbeitragssatz) - - """ + """Health insurance top-up rate (Zusatzbeitrag) since January 2015.""" - return ges_krankenv_params["beitr_satz"]["mean_zusatzbeitrag"] + return parameter_beitragssatz["mean_zusatzbeitrag"] diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.yaml b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.yaml new file mode 100644 index 0000000000..2e5bb54d69 --- /dev/null +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.yaml @@ -0,0 +1,139 @@ +--- +beitragssatz: + name: + de: Einheitlicher Beitragssatz zur gesetzlichen Krankenversicherung + en: Uniform contribution rate to statutory health insurance + description: + de: >- + Einheitlicher Beitragssatz für die gesetzliche Krankenversicherung über alle + Versicherungsträger. + en: >- + Uniform contribution rate for statutory health insurance over all insurance + providers. + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1984-01-01: + value: 0.1144 + 1985-01-01: + value: 0.118 + 1986-01-01: + value: 0.122 + 1987-01-01: + value: 0.1248 + 1988-01-01: + value: 0.1288 + 1989-01-01: + value: 0.129 + 1990-01-01: + value: 0.125 + 1991-01-01: + value: 0.128 + 1993-01-01: + value: 0.134 + 1995-01-01: + value: 0.132 + 1997-01-01: + value: 0.134 + 1998-01-01: + value: 0.136 + 2000-01-01: + value: 0.1357 + 2001-01-01: + value: 0.1358 + 2002-01-01: + value: 0.14 + 2003-01-01: + value: 0.144 + 2004-01-01: + value: 0.142 + 2005-01-01: + value: 0.142 + 2005-07-01: + note: >- + Einführung von Sonder- und Zusatzbeiträgen. See + ``parameter_beitragssatz``. +parameter_beitragssatz: + name: + de: Beitragssatz zur gesetzlichen Krankenversicherung mit Zusatzbeitrag + en: Contribution rate to statutory health insurance with top-up contribution + description: + de: >- + Beitragssätze für gesetzliche Krankenversicherung. mean_allgemein - + durchschnittlicher Beitragssatz, bis 2008 allgemein - allgemeiner Satz (§241 SGB + V), ab 2009 sonderbeitrag - bezahlt von Arbeitnehmern, ab Jul 2005 bis 2014 + ermäßigt - ermäßigter Satz (§243 SGB V) zusatz - durchschnittlicher + Zusatzbeitragssatz. + en: >- + Statury Contribution Rates for mandatory health insurance. mean_allgemein - + average contribution rate, 1992 to 2008 allgemein - general statutory + contribution rate, since 2009 sonderbeitrag - paid by employees, Jul 2005 to + 2014 ermäßigt - reduced rate zusatz - average top-up contribution rate + unit: Share + reference_period: null + type: dict + add_jahresanfang: true + 2005-07-01: + mean_allgemein: 0.133 + sonderbeitrag: 0.009 + note: >- + Allgemeiner Beitragssatz wird nicht mehr gleichmäßig aufgeteilt, Einführung des + Sonderbeitrags + reference: Art. 1 G. v. 15.12.2004, BGBl I S. 3445. + 2007-01-01: + updates_previous: true + mean_allgemein: 0.139 + 2008-01-01: + updates_previous: true + mean_allgemein: 0.14 + 2009-01-01: + allgemein: 0.146 + sonderbeitrag: 0.009 + ermäßigt: 0.140 + 2009-07-01: + updates_previous: true + allgemein: 0.14 + ermäßigt: 0.134 + 2011-01-01: + updates_previous: true + allgemein: 0.146 + ermäßigt: 0.14 + reference: Art. 1 G. v. 22.12.2010 BGBl. I S. 2309 + 2015-01-01: + allgemein: 0.146 + ermäßigt: 0.14 + mean_zusatzbeitrag: 0.009 + note: Abschaffung Sonderbeitrag, Einführung kassenabhängiger Zusatzbeitrag + 2016-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.011 + note: Bekanntmachung Bundesanzeiger 30.12.2015 + 2018-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.01 + 2019-01-01: + allgemein: 0.146 + ermäßigt: 0.14 + mean_zusatzbeitrag: 0.009 + note: Wiedereinführung der Parität. Art. 2 G. v. 11.12.2018, BGBl. I S. 2387 + 2020-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.011 + reference: BAnz AT 28.10.2019 B3 + 2021-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.013 + reference: BAnz AT 30.10.2020 B5 + 2023-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.016 + reference: BAnz AT 31.10.2022 B5 + 2024-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.017 + reference: BAnz AT 31.10.2023 B3 + 2025-01-01: + updates_previous: true + mean_zusatzbeitrag: 0.025 + reference: BAnz AT 07.11.2024 B4 diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index 4189407201..bd9e169afa 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -1,59 +1,36 @@ """Income relevant for public health insurance contributions.""" +from __future__ import annotations + from ttsim import policy_function @policy_function() def einkommen_m( - einkommen_regulär_beschäftigt_m: float, + einkommen_bis_beitragsbemessungsgrenze_m: float, sozialversicherung__regulär_beschäftigt: bool, ) -> float: """Wage subject to public health insurance contributions. This affects marginally employed persons and high wages for above the assessment ceiling. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. - sozialversicherung__regulär_beschäftigt - See :func:`sozialversicherung__regulär_beschäftigt`. - beitragsbemessungsgrenze_m - See :func:`beitragsbemessungsgrenze_m`. - - - Returns - ------- - """ if sozialversicherung__regulär_beschäftigt: - out = einkommen_regulär_beschäftigt_m + out = einkommen_bis_beitragsbemessungsgrenze_m else: out = 0.0 return out @policy_function() -def einkommen_regulär_beschäftigt_m( +def einkommen_bis_beitragsbemessungsgrenze_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, beitragsbemessungsgrenze_m: float, ) -> float: - """Income subject to public health insurance contributions. + """Income from dependent employment, capped at the contribution ceiling. This does not consider reduced contributions for Mini- and Midijobs. Relevant for the computation of payroll taxes. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. - beitragsbemessungsgrenze_m - See :func:`beitragsbemessungsgrenze_m`. - - Returns - ------- - Income subject to public health insurance contributions. """ return min( @@ -62,14 +39,14 @@ def einkommen_regulär_beschäftigt_m( ) -@policy_function() +@policy_function(start_date="1990-01-01") def bemessungsgrundlage_selbstständig_m( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, - bezugsgröße_selbstständig_m: float, + bezugsgröße_selbstständige_m: float, einkommensteuer__einkünfte__ist_selbstständig: bool, privat_versichert: bool, beitragsbemessungsgrenze_m: float, - ges_krankenv_params: dict, + mindestanteil_bezugsgröße_selbstständige: float, ) -> float: """Self-employed income which is subject to health insurance contributions. @@ -77,37 +54,13 @@ def bemessungsgrundlage_selbstständig_m( voluntarily contribute to the public health system. Reference: §240 SGB V Abs. 4 - - Parameters - ---------- - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m <einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m>`. - bezugsgröße_selbstständig_m - See :func:`bezugsgröße_selbstständig_m`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - privat_versichert - See basic input variable :ref:`privat_versichert <privat_versichert>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - beitragsbemessungsgrenze_m - See :func:`beitragsbemessungsgrenze_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ # Calculate if self employed insures via public health insurance. if einkommensteuer__einkünfte__ist_selbstständig and not privat_versichert: out = min( beitragsbemessungsgrenze_m, max( - bezugsgröße_selbstständig_m - * ges_krankenv_params[ - "mindestanteil_bezugsgröße_beitragspf_einnahme_selbst" - ], + bezugsgröße_selbstständige_m * mindestanteil_bezugsgröße_selbstständige, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m, ), ) @@ -117,55 +70,39 @@ def bemessungsgrundlage_selbstständig_m( return out -@policy_function() -def beitragsbemessungsgrenze_m(wohnort_ost: bool, ges_krankenv_params: dict) -> float: - """Income threshold up to which health insurance payments apply. - - Parameters - ---------- - wohnort_ost - See :func:`wohnort_ost`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - The income threshold up to which the rate of health insurance contributions apply. - - """ - params = ges_krankenv_params["beitr_bemess_grenze_m"] - - out = params["ost"] if wohnort_ost else params["west"] - - return out +@policy_function( + start_date="1990-01-01", + end_date="2000-12-31", + leaf_name="beitragsbemessungsgrenze_m", +) +def beitragsbemessungsgrenze_m_nach_wohnort( + wohnort_ost: bool, + parameter_beitragsbemessungsgrenze_nach_wohnort: dict[str, float], +) -> float: + """Income threshold up to which health insurance payments apply.""" + return ( + parameter_beitragsbemessungsgrenze_nach_wohnort["ost"] + if wohnort_ost + else parameter_beitragsbemessungsgrenze_nach_wohnort["west"] + ) -@policy_function() -def bezugsgröße_selbstständig_m(wohnort_ost: bool, ges_krankenv_params: dict) -> float: +@policy_function(start_date="1990-01-01", end_date="2024-12-31") +def bezugsgröße_selbstständige_m( + wohnort_ost: bool, + bezugsgröße_selbstständige_nach_wohnort: dict[str, float], +) -> float: """Threshold for self employment income subject to health insurance. Selecting by place of living the income threshold for self employed up to which the rate of health insurance contributions apply. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - out = ( - ges_krankenv_params["bezugsgröße_selbst_m"]["ost"] + return ( + bezugsgröße_selbstständige_nach_wohnort["ost"] if wohnort_ost - else ges_krankenv_params["bezugsgröße_selbst_m"]["west"] + else bezugsgröße_selbstständige_nach_wohnort["west"] ) - return out - @policy_function() def bemessungsgrundlage_rente_m( @@ -173,21 +110,7 @@ def bemessungsgrundlage_rente_m( sozialversicherung__rente__private_rente_betrag_m: float, beitragsbemessungsgrenze_m: float, ) -> float: - """Pension income which is subject to health insurance contribution. - - Parameters - ---------- - sozialversicherung__rente__altersrente__betrag_m: float, - See :func:`sozialversicherung__rente__altersrente__betrag_m`. - sozialversicherung__rente__private_rente_betrag_m: float, - See :func:`sozialversicherung__rente__private_rente_betrag_m`. - beitragsbemessungsgrenze_m - See :func:`beitragsbemessungsgrenze_m`. - - Returns - ------- - - """ + """Pension income which is subject to health insurance contribution.""" return min( sozialversicherung__rente__altersrente__betrag_m + sozialversicherung__rente__private_rente_betrag_m, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py index 8142a6713f..37c3ba12d5 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml b/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml new file mode 100644 index 0000000000..760cfab4b7 --- /dev/null +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml @@ -0,0 +1,24 @@ +--- +minijob_arbeitgeberpauschale: + name: + de: >- + Pauschalbeitrag des Arbeitgebers zur Krankenversicherung bei geringfügiger + Beschäftigung + en: Fixed employer health insurance contribution for marginal employment + description: + de: >- + Pauschalbeitrag des Arbeitgebers zur Krankenversicherung (§ 249b SGB V) bei + geringfügiger Beschäftigung + en: Fixed health insurance contributions for marginal employment (§ 249b SGB V) + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1984-01-01: + value: 0 + 1999-01-01: + value: 0.1 + 2003-04-01: + value: 0.11 + 2007-01-01: + value: 0.13 diff --git "a/src/_gettsim/sozialversicherung/kranken/beitrag/selbstst\303\244ndige.yaml" "b/src/_gettsim/sozialversicherung/kranken/beitrag/selbstst\303\244ndige.yaml" new file mode 100644 index 0000000000..1c6217c417 --- /dev/null +++ "b/src/_gettsim/sozialversicherung/kranken/beitrag/selbstst\303\244ndige.yaml" @@ -0,0 +1,175 @@ +--- +bezugsgröße_selbstständige_m: + name: + de: Einheitliche monatliche Bezugsgröße für Selbstständige + en: Uniform monthly reference size for self employed + description: + de: §18 SGB IV ynd https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + en: §18 SGB IV and https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + unit: Euros + reference_period: Month + type: scalar + add_jahresanfang: true + 1984-01-01: + value: 1396 + 1985-01-01: + value: 1432 + 1986-01-01: + value: 1467 + 1987-01-01: + value: 1539 + 1988-01-01: + value: 1575 + 1989-01-01: + value: 1611 + 1990-01-01: + note: >- + Die Bezugsgröße unterscheidet sich zwischen West und Ost. Siehe + ``parameter_bezugsgröße_selbstständige_nach_wohnort``. + 2025-01-01: + value: 3745 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365. +bezugsgröße_selbstständige_nach_wohnort: + name: + de: Monatliche Bezugsgröße für Selbstständige mit Unterschied zwischen West und Ost + en: Monthly reference size for self employed with different values for West and East + description: + de: §18 SGB IV und https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + en: §18 SGB IV and https://de.wikipedia.org/wiki/Bezugsgr%C3%B6%C3%9Fe + unit: Euros + reference_period: Month + type: dict + add_jahresanfang: true + 1990-01-01: + west: 1682 + ost: 715.8086336747059 + 1991-01-01: + west: 1718 + ost: 787.3894970421765 + 1992-01-01: + west: 1790 + ost: 1073.712950512059 + 1993-01-01: + west: 1897 + ost: 1395.826835665677 + 1994-01-01: + west: 2004 + ost: 1574.778994084353 + 1995-01-01: + west: 2076 + ost: 1682.150289135559 + 1996-01-01: + west: 2112 + ost: 1789.521584186765 + 1997-01-01: + west: 2183 + ost: 1861.102447554235 + 1998-01-01: + west: 2219 + ost: 1896.892879237971 + 1999-01-01: + west: 2255 + ost: 1896.892879237971 + 2000-01-01: + west: 2291 + ost: 1861.102447554235 + 2001-01-01: + updates_previous: true + ost: 1932.683310921706 + 2002-01-01: + west: 2345 + ost: 1960 + 2003-01-01: + west: 2380 + ost: 1995 + 2004-01-01: + west: 2415 + ost: 2030 + 2006-01-01: + west: 2450 + ost: 2065 + 2007-01-01: + updates_previous: true + ost: 2100 + 2008-01-01: + updates_previous: true + west: 2485 + 2009-01-01: + west: 2520 + ost: 2135 + 2010-01-01: + west: 2555 + ost: 2170 + 2011-01-01: + updates_previous: true + ost: 2240 + 2012-01-01: + updates_previous: true + west: 2625 + 2013-01-01: + west: 2695 + ost: 2275 + 2014-01-01: + note: http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + west: 2765 + ost: 2345 + 2015-01-01: + west: 2835 + ost: 2415 + 2016-01-01: + note: https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + west: 2905 + ost: 2520 + 2017-01-01: + note: https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + west: 2975 + ost: 2660 + 2018-01-01: + west: 3045 + ost: 2695 + 2019-01-01: + note: Sozialversicherungs-Rechengrößenverordnung 2019, BGBl I S. 2024, 27.11.2018 + west: 3115 + ost: 2870 + 2020-01-01: + reference: §2 V. v. 17.12.2019 BGBl. I S. 2848 + west: 3185 + ost: 3010 + 2021-01-01: + west: 3290 + ost: 3115 + reference: §2 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + west: 3290 + ost: 3150 + reference: §2 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 3395 + ost: 3290 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 3535 + ost: 3465 + reference: V. v. 29.11.2023 BGBl. 2023 I Nr. 322. + 2025-01-01: + note: Einheitliche Bezugsgröße für West und Ost + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365. +mindestanteil_bezugsgröße_selbstständige: + name: + de: Mindestberechungsbeitrag für Selbstständige als Anteil der Bezugsgröße + en: Minimum contribution for self employed as fraction of Bezugsgröße + description: + de: >- + §240 SGB V Abs. 4 + Als beitragspflichtige Einnahmen gilt für den Kalendertag mindestens der + neunzigste Teil der monatlichen Bezugsgröße (1/90*30) + en: >- + §240 SGB V Abs. 4 + Health Insurance contributions have to be payed, at the minimum, on the ninetieth + part of the monthly Bezugsgröße for each calender day + unit: Share + reference_period: null + type: scalar + 1990-01-01: + note: Exact date of introduction of this parameter unclear (was in place in 2006) + value: 0.33333333 diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 45581d2220..7e86d8a47f 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -1,33 +1,48 @@ """Midijob.""" +from __future__ import annotations + from ttsim import RoundingSpec, policy_function +@policy_function(start_date="2003-04-01") +def in_gleitzone( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + geringfügig_beschäftigt: bool, + midijobgrenze: float, +) -> bool: + """Individual's income is in Midijob range. + + Employed people with their wage in the range of Gleitzone pay reduced social + insurance contributions. + + Legal reference: § 20 Abs. 2 SGB IV + + """ + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= midijobgrenze + ) and (not geringfügig_beschäftigt) + + @policy_function() def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - minijob_grenze: float, - geringfügige_einkommen_params: dict, + minijobgrenze: float, + midijobgrenze: float, ) -> float: - """Income subject to employee social insurance contributions for midijob since - October 2022. - - Gesonderte Beitragspflichtige Einnahme is the reference income for midijobs subject - to employee social insurance contribution. + """Income subject to employee social insurance contributions for Bruttolöhne in + Gleitzone. - Legal reference: Changes in § 20 SGB IV from 01.10.2022 + Legal reference: § 20 SGB IV ("Gesonderte beitragspflichtige Einnahmen") """ - midijob_grenze = geringfügige_einkommen_params["grenzen_m"]["midijob"] - - quotient = midijob_grenze / (midijob_grenze - minijob_grenze) + quotient = midijobgrenze / (midijobgrenze - minijobgrenze) einkommen_diff = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - - minijob_grenze + - minijobgrenze ) - out = quotient * einkommen_diff - - return out + return quotient * einkommen_diff @policy_function( @@ -39,11 +54,12 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - ges_rentenv_params: dict, - arbeitslosenversicherung_params: dict, - ges_krankenv_params: dict, - ges_pflegev_params: dict, - geringfügige_einkommen_params: dict, + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang: float, + lohnsteuer__minijob_arbeitgeberpauschale: float, + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F until December 2004. @@ -52,9 +68,9 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - ges_rentenv_params["beitr_satz_jahresanfang"] - + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] - + ges_pflegev_params["beitr_satz_jahresanfang"] + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 + + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 + + sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang / 2 ) # Then calculate specific shares @@ -69,15 +85,13 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( # Sum over the shares which are specific for midijobs. pausch_mini = ( - ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] - + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] - + geringfügige_einkommen_params["arbeitgeberpauschale_lohnsteuer"] + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale + + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale + + lohnsteuer__minijob_arbeitgeberpauschale ) # Now calculate final factor - out = pausch_mini / (an_anteil + ag_anteil) - - return out + return pausch_mini / (an_anteil + ag_anteil) @policy_function( @@ -86,14 +100,17 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( leaf_name="midijob_faktor_f", rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) -def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( +def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - ges_rentenv_params: dict, - arbeitslosenversicherung_params: dict, - ges_krankenv_params: dict, - ges_pflegev_params: dict, - geringfügige_einkommen_params: dict, + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[ + str, float + ], + lohnsteuer__minijob_arbeitgeberpauschale: float, + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F between 2005 and September 2025. @@ -103,9 +120,12 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - ges_rentenv_params["beitr_satz_jahresanfang"] - + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] - + ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 + + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 + + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[ + "standard" + ] + / 2 ) an_anteil = ( @@ -119,15 +139,13 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( # Sum over the shares which are specific for midijobs. pausch_mini = ( - ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] - + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] - + geringfügige_einkommen_params["arbeitgeberpauschale_lohnsteuer"] + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale + + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale + + lohnsteuer__minijob_arbeitgeberpauschale ) # Now calculate final factor - out = pausch_mini / (an_anteil + ag_anteil) - - return out + return pausch_mini / (an_anteil + ag_anteil) @policy_function( @@ -139,16 +157,17 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005( def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - ges_rentenv_params: dict, - ges_pflegev_params: dict, - arbeitslosenversicherung_params: dict, - ges_krankenv_params: dict, + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[ + str, float + ], + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F since October 2022. Legal reference: § 163 Abs. 10 SGB VI - - """ # Calculate the Gesamtsozialversicherungsbeitragssatz by summing social # insurance contributions for employer and employee and @@ -156,9 +175,12 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - ges_rentenv_params["beitr_satz_jahresanfang"] - + ges_pflegev_params["beitr_satz_jahresanfang"]["standard"] - + arbeitslosenversicherung_params["beitr_satz_jahresanfang"] + sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 + + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[ + "standard" + ] + / 2 + + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 ) # Then calculate specific shares @@ -175,14 +197,12 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( # New formula only inludes the lump-sum contributions to health care # and pension insurance pausch_mini = ( - ges_krankenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] - + ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale + + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale ) # Now calculate final factor f - out = pausch_mini / (an_anteil + ag_anteil) - - return out + return pausch_mini / (an_anteil + ag_anteil) @policy_function( @@ -193,8 +213,8 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( def midijob_bemessungsentgelt_m_bis_09_2022( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, midijob_faktor_f: float, - minijob_grenze: float, - geringfügige_einkommen_params: dict, + minijobgrenze: float, + midijobgrenze: float, ) -> float: """Income subject to social insurance contributions for midijob until September 2022. @@ -206,18 +226,13 @@ def midijob_bemessungsentgelt_m_bis_09_2022( """ # Now use the factor to calculate the overall bemessungsentgelt - minijob_anteil = midijob_faktor_f * minijob_grenze + minijob_anteil = midijob_faktor_f * minijobgrenze lohn_über_mini = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - - minijob_grenze + - minijobgrenze ) - gewichtete_midijob_rate = ( - geringfügige_einkommen_params["grenzen_m"]["midijob"] - / (geringfügige_einkommen_params["grenzen_m"]["midijob"] - minijob_grenze) - ) - ( - minijob_grenze - / (geringfügige_einkommen_params["grenzen_m"]["midijob"] - minijob_grenze) - * midijob_faktor_f + gewichtete_midijob_rate = (midijobgrenze / (midijobgrenze - minijobgrenze)) - ( + minijobgrenze / (midijobgrenze - minijobgrenze) * midijob_faktor_f ) return minijob_anteil + lohn_über_mini * gewichtete_midijob_rate @@ -227,8 +242,8 @@ def midijob_bemessungsentgelt_m_bis_09_2022( def midijob_bemessungsentgelt_m_ab_10_2022( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, midijob_faktor_f: float, - minijob_grenze: float, - geringfügige_einkommen_params: dict, + minijobgrenze: float, + midijobgrenze: float, ) -> float: """Total income subject to social insurance contributions for midijobs since October 2022. @@ -241,38 +256,15 @@ def midijob_bemessungsentgelt_m_ab_10_2022( Legal reference: Changes in § 20 SGB IV from 01.10.2022 """ - midijob_grenze = geringfügige_einkommen_params["grenzen_m"]["midijob"] - quotient1 = (midijob_grenze) / (midijob_grenze - minijob_grenze) - quotient2 = (minijob_grenze) / (midijob_grenze - minijob_grenze) + quotient1 = (midijobgrenze) / (midijobgrenze - minijobgrenze) + quotient2 = (minijobgrenze) / (midijobgrenze - minijobgrenze) einkommen_diff = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - - minijob_grenze + - minijobgrenze ) - faktor1 = midijob_faktor_f * minijob_grenze + faktor1 = midijob_faktor_f * minijobgrenze faktor2 = (quotient1 - quotient2 * midijob_faktor_f) * einkommen_diff - out = faktor1 + faktor2 - - return out - - -@policy_function(start_date="2003-04-01") -def in_gleitzone( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - geringfügig_beschäftigt: bool, - geringfügige_einkommen_params: dict, -) -> bool: - """Individual's income is in midi-job range. - - Employed people with their wage in the range of gleitzone pay reduced social - insurance contributions. - Legal reference: § 20 Abs. 2 SGB IV - - """ - out = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - <= geringfügige_einkommen_params["grenzen_m"]["midijob"] - ) and (not geringfügig_beschäftigt) - return out + return faktor1 + faktor2 diff --git a/src/_gettsim/sozialversicherung/midijob.yaml b/src/_gettsim/sozialversicherung/midijob.yaml new file mode 100644 index 0000000000..d98c5194a3 --- /dev/null +++ b/src/_gettsim/sozialversicherung/midijob.yaml @@ -0,0 +1,24 @@ +--- +midijobgrenze: + name: + de: Midijobgrenze + en: Midijob threshold + description: + de: § 20 (2) SGB IV + en: null + unit: Euros + reference_period: Month + type: scalar + 2003-04-01: + value: 800 + 2013-01-01: + value: 850 + 2019-01-01: + value: 1300 + reference: Art. 4 G. v. 28.11.2018 BGBl. I S. 2016 + 2022-10-01: + value: 1600 + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 + 2023-01-01: + value: 2000 + reference: Art. 3 G. v. 11.11.2022 BGBl. I S. 1985 diff --git a/src/_gettsim/sozialversicherung/mindestlohn.yaml b/src/_gettsim/sozialversicherung/mindestlohn.yaml new file mode 100644 index 0000000000..923072c2a0 --- /dev/null +++ b/src/_gettsim/sozialversicherung/mindestlohn.yaml @@ -0,0 +1,42 @@ +--- +mindestlohn: + name: + de: Allgemeiner gesetzlicher Mindestlohn pro Stunde + en: Statutory hourly minimum wage + description: + de: >- + §1 (2) Mindestlohngesetz + Der Mindestlohn ist der niedrigste Stundenlohn, den ein Arbeitgeber für eine + regelmäßige, nicht mehr als 45 Stunden wöchentlich zu leistende Arbeitsleistung + zahlen muss. + en: >- + §1 (2) Mindestlohngesetz + The minimum wage is the lowest hourly wage that an employer must pay for a + regular, not more than 45 hours weekly work. + unit: Euros + reference_period: Hour + type: scalar + 2015-01-01: + value: 8.5 + 2017-01-01: + value: 8.84 + 2019-01-01: + value: 9.19 + 2020-01-01: + value: 9.35 + 2021-01-01: + value: 9.5 + 2021-07-01: + value: 9.6 + 2022-01-01: + value: 9.82 + 2022-07-01: + value: 10.45 + 2022-10-01: + value: 12 + 2024-01-01: + value: 12.41 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 + 2025-01-01: + value: 12.82 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 321 diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py new file mode 100644 index 0000000000..3353b807ba --- /dev/null +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -0,0 +1,64 @@ +"""Marginally employed.""" + +from __future__ import annotations + +from ttsim import RoundingSpec, param_function, policy_function +from ttsim.config import numpy_or_jax as np + + +@policy_function() +def geringfügig_beschäftigt( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijobgrenze: float, +) -> bool: + """Individual earns less than marginal employment threshold. + + Marginal employed pay no social insurance contributions. + + Legal reference: § 8 Abs. 1 Satz 1 and 2 SGB IV + """ + return ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= minijobgrenze + ) + + +@policy_function( + start_date="1990-01-01", + end_date="1999-12-31", + leaf_name="minijobgrenze", + rounding_spec=RoundingSpec( + base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" + ), +) +def minijobgrenze_unterscheidung_ost_west( + wohnort_ost: bool, parameter_minijobgrenze_ost_west_unterschied: dict[str, float] +) -> float: + """Minijob income threshold depending on place of living (East or West Germany). + + Until 1999, the threshold is different for East and West Germany. + """ + return ( + parameter_minijobgrenze_ost_west_unterschied["ost"] + if wohnort_ost + else parameter_minijobgrenze_ost_west_unterschied["west"] + ) + + +@param_function( + start_date="2022-10-01", + leaf_name="minijobgrenze", +) +def minijobgrenze_abgeleitet_von_mindestlohn( + mindestlohn: float, + faktoren_minijobformel: dict[str, float], +) -> float: + """Minijob income threshold, derived from the statutory minimum wage. + + Rounding according to § 8 Abs. 1a Satz 2 SGB IV. + """ + return np.ceil( + mindestlohn + * faktoren_minijobformel["zähler"] + / faktoren_minijobformel["nenner"] + ) diff --git a/src/_gettsim/sozialversicherung/minijob.yaml b/src/_gettsim/sozialversicherung/minijob.yaml new file mode 100644 index 0000000000..f9a5b649a7 --- /dev/null +++ b/src/_gettsim/sozialversicherung/minijob.yaml @@ -0,0 +1,98 @@ +--- +minijobgrenze: + name: + de: Minijobgrenze + en: Thresholds for marginal employment (minijobs) + description: + de: Minijob § 8 (1) Nr. 1 SGB IV + en: Minijob § 8 (1) Nr. 1 SGB IV + unit: Euros + reference_period: Month + type: scalar + 1984-01-01: + value: 199 + 1985-01-01: + value: 205 + 1986-01-01: + value: 210 + 1987-01-01: + value: 220 + 1988-01-01: + value: 225 + 1989-01-01: + value: 230 + 1990-01-01: + note: >- + Minijobgrenze differs between West and East Germany. See + ``parameter_minijobgrenze_ost_west_unterschied``. + 2000-01-01: + value: 322 + 2002-01-01: + value: 325 + 2003-04-01: + value: 400 + 2013-01-01: + value: 450 + 2022-10-01: + note: Minijob thresholds now calculated based on statutory minimum wage + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 +parameter_minijobgrenze_ost_west_unterschied: + name: + de: Minijobgrenze + en: Thresholds for marginal employment ('mini' jobs) + description: + de: Minijob § 8 (1) Nr. 1 SGB IV + en: Minijob § 8 (1) Nr. 1 SGB IV + unit: Euros + reference_period: Month + type: dict + 1990-01-01: + west: 240 + ost: 102 + 1991-01-01: + west: 245 + ost: 120 + 1992-01-01: + west: 256 + ost: 153 + 1993-01-01: + west: 271 + ost: 199 + 1994-01-01: + west: 286 + ost: 225 + 1995-01-01: + west: 297 + ost: 240 + 1996-01-01: + west: 302 + ost: 256 + 1997-01-01: + west: 312 + ost: 266 + 1998-01-01: + updates_previous: true + west: 317 + 1999-01-01: + west: 322 + ost: 271 + 2000-01-01: + note: >- + Minijob thresholds do not differ between West and East Germany. See + `minijobgrenze_m`. +faktoren_minijobformel: + name: + de: Zähler und Nenner im Faktor für die Berechnung der Geringfügigkeitsgrenze. + en: >- + Numerator and denominator in the factor for the calculation of the marginal + employment threshold. + description: + de: §8 (1a) SGB IV + en: §8 (1a) SGB IV + unit: null + reference_period: null + type: dict + 2022-10-01: + zähler: 130 + nenner: 3 + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 diff --git a/src/_gettsim/sozialversicherung/pflege/__init__.py b/src/_gettsim/sozialversicherung/pflege/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/pflege/__init__.py +++ b/src/_gettsim/sozialversicherung/pflege/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py b/src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 3ee3a8146a..07c36f64ce 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -1,40 +1,23 @@ """Contributions to public long-term care insurance.""" +from __future__ import annotations + from ttsim import policy_function @policy_function( + start_date="1995-01-01", end_date="2003-03-31", leaf_name="betrag_versicherter_m", - vectorization_strategy="loop", ) def betrag_versicherter_m_ohne_midijob( - betrag_versicherter_regulär_beschäftigt_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, + betrag_selbstständig_m: float, sozialversicherung__geringfügig_beschäftigt: bool, + betrag_versicherter_regulär_beschäftigt_m: float, betrag_rentner_m: float, - betrag_selbstständig_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, ) -> float: - """Long-term care insurance contributions paid by the insured person. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_rentner_m - See :func:`betrag_rentner_m`. - betrag_selbstständig_m - See :func:`betrag_selbstständig_m`. - betrag_versicherter_regulär_beschäftigt_m - See :func:`betrag_versicherter_regulär_beschäftigt_m`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - Returns - ------- - Long-term care insurance contributions paid by the insured person. - - """ + """Long-term care insurance contributions paid by the insured person.""" if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m @@ -50,48 +33,24 @@ def betrag_versicherter_m_ohne_midijob( @policy_function( start_date="2003-04-01", leaf_name="betrag_versicherter_m", - vectorization_strategy="loop", ) def betrag_versicherter_m_mit_midijob( - betrag_versicherter_regulär_beschäftigt_m: float, - sozialversicherung__geringfügig_beschäftigt: bool, - betrag_rentner_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, betrag_selbstständig_m: float, - betrag_versicherter_midijob_m: float, + sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, - einkommensteuer__einkünfte__ist_selbstständig: bool, + betrag_versicherter_in_gleitzone_m: float, + betrag_versicherter_regulär_beschäftigt_m: float, + betrag_rentner_m: float, ) -> float: - """Long-term care insurance contributions paid by the insured person. - - Parameters - ---------- - betrag_versicherter_regulär_beschäftigt_m - See :func:`betrag_versicherter_regulär_beschäftigt_m`. - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_rentner_m - See :func:`betrag_rentner_m`. - betrag_selbstständig_m - See :func:`betrag_selbstständig_m`. - betrag_versicherter_midijob_m - See :func:`betrag_versicherter_midijob_m`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - Returns - ------- - Long-term care insurance contributions paid by the insured person. - - """ + """Long-term care insurance contributions paid by the insured person.""" if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_versicherter_midijob_m + out = betrag_versicherter_in_gleitzone_m else: out = betrag_versicherter_regulär_beschäftigt_m @@ -99,65 +58,20 @@ def betrag_versicherter_m_mit_midijob( return out + betrag_rentner_m -@policy_function(vectorization_strategy="loop") -def betrag_versicherter_regulär_beschäftigt_m( - sozialversicherung__kranken__beitrag__einkommen_m: float, - beitragssatz: float, -) -> float: - """Long-term care insurance contributions paid by the insured person if regularly employed. - - Parameters - ---------- - sozialversicherung__kranken__beitrag__einkommen_m: - See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. - beitragssatz: - See :func:`beitragssatz`. - - Returns - ------- - Long-term care insurance contributions of employer and employee. - - """ - - return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz - - @policy_function( + start_date="1995-01-01", end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m", - vectorization_strategy="loop", ) def betrag_arbeitgeber_m_ohne_midijob( - sozialversicherung__geringfügig_beschäftigt: bool, - sozialversicherung__kranken__beitrag__einkommen_m: float, - ges_pflegev_params: dict, einkommensteuer__einkünfte__ist_selbstständig: bool, + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_arbeitgeber_regulär_beschäftigt_m: float, ) -> float: - """Employer's long-term care insurance contribution. + """Long-term care insurance contribution paid by the employer. Before Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - sozialversicherung__kranken__beitrag__einkommen_m - See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - Returns - ------- - Employer's long-term care insurance contributions. - """ - # Calculate care insurance contributions for regular jobs. - beitr_regulär_beschäftigt_m = ( - sozialversicherung__kranken__beitrag__einkommen_m - * ges_pflegev_params["beitr_satz"] - ) if ( einkommensteuer__einkünfte__ist_selbstständig @@ -165,7 +79,7 @@ def betrag_arbeitgeber_m_ohne_midijob( ): out = 0.0 else: - out = beitr_regulär_beschäftigt_m + out = betrag_arbeitgeber_regulär_beschäftigt_m return out @@ -173,45 +87,18 @@ def betrag_arbeitgeber_m_ohne_midijob( @policy_function( start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m", - vectorization_strategy="loop", ) def betrag_arbeitgeber_m_mit_midijob( + einkommensteuer__einkünfte__ist_selbstständig: bool, sozialversicherung__geringfügig_beschäftigt: bool, - betrag_arbeitgeber_midijob_m: float, - sozialversicherung__kranken__beitrag__einkommen_m: float, - ges_pflegev_params: dict, sozialversicherung__in_gleitzone: bool, - einkommensteuer__einkünfte__ist_selbstständig: bool, + betrag_arbeitgeber_in_gleitzone_m: float, + betrag_arbeitgeber_regulär_beschäftigt_m: float, ) -> float: - """Employer's long-term care insurance contribution. + """Long-term care insurance contribution paid by the employer. After Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - sozialversicherung__kranken__beitrag__einkommen_m - See :func:`sozialversicherung__kranken__beitrag__einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - einkommensteuer__einkünfte__ist_selbstständig - See basic input variable :ref:`einkommensteuer__einkünfte__ist_selbstständig <einkommensteuer__einkünfte__ist_selbstständig>`. - - Returns - ------- - Employer's long-term care insurance contributions. - """ - # Calculate care insurance contributions for regular jobs. - beitr_regulär_beschäftigt_m = ( - sozialversicherung__kranken__beitrag__einkommen_m - * ges_pflegev_params["beitr_satz"]["standard"] - ) if ( einkommensteuer__einkünfte__ist_selbstständig @@ -219,464 +106,213 @@ def betrag_arbeitgeber_m_mit_midijob( ): out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_arbeitgeber_midijob_m + out = betrag_arbeitgeber_in_gleitzone_m else: - out = beitr_regulär_beschäftigt_m + out = betrag_arbeitgeber_regulär_beschäftigt_m return out -@policy_function( - start_date="1995-01-01", - end_date="2004-12-31", - leaf_name="betrag_selbstständig_m", - vectorization_strategy="loop", -) -def betrag_selbstständig_m_ohne_zusatz_für_kinderlose( +@policy_function(start_date="1995-01-01") +def betrag_selbstständig_m( sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, - beitragssatz: float, + beitragssatz_arbeitnehmer: float, + beitragssatz_arbeitgeber: float, ) -> float: - """Self-employed individuals' long-term care insurance contribution until 2004. + """Self-employed individuals' long-term care insurance contribution. Self-employed pay the full contribution (employer + employee), which is either assessed on their self-employement income or 3/4 of the 'Bezugsgröße' - - Parameters - ---------- - - sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m - See :func: `sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m`. - - beitragssatz - See :func: `beitragssatz`. - - Returns - ------- - Self-employed long-term care insurance contributions. - """ return sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m * ( - beitragssatz * 2 + beitragssatz_arbeitnehmer + beitragssatz_arbeitgeber ) -@policy_function( - start_date="2005-01-01", - leaf_name="betrag_selbstständig_m", - vectorization_strategy="loop", -) -def betrag_selbstständig_m_mit_zusatz_für_kinderlose( - sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m: float, - beitragssatz: float, - ges_pflegev_params: dict, +@policy_function(start_date="1995-01-01") +def betrag_versicherter_regulär_beschäftigt_m( + sozialversicherung__kranken__beitrag__einkommen_m: float, + beitragssatz_arbeitnehmer: float, ) -> float: - """Self-employed individuals' long-term care insurance contribution since 2005. - - Self-employed pay the full contribution (employer + employee), which is either - assessed on their self-employement income or 3/4 of the 'Bezugsgröße' - - Parameters - ---------- - - sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m - See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m`. - - beitragssatz - See :func:`beitragssatz`. - - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Self-employed long-term care insurance contributions. - + """Long-term care insurance contributions paid by the insured person if regularly + employed. """ - return sozialversicherung__kranken__beitrag__bemessungsgrundlage_selbstständig_m * ( - beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] - ) - -@policy_function( - start_date="1995-01-01", - end_date="2004-03-31", - leaf_name="betrag_rentner_m", - vectorization_strategy="loop", -) -def betrag_rentner_m_reduzierter_beitrag( - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, - beitragssatz: float, -) -> float: - """Long-term care insurance contribution from pension income from 1995 until March - 2004. - - Pensioners pay the same contribution as employees. - - Parameters - ---------- - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m - See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. - beitragssatz - See :func:`beitragssatz`. - - Returns - ------- - Retiree's long-term care insurance contributions. - - """ - return ( - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * beitragssatz - ) + return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz_arbeitnehmer -@policy_function( - start_date="2004-04-01", - end_date="2004-12-31", - leaf_name="betrag_rentner_m", - vectorization_strategy="loop", -) -def betrag_rentner_m_ohne_zusatz_für_kinderlose( - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, - beitragssatz: float, +@policy_function(start_date="1995-01-01") +def betrag_arbeitgeber_regulär_beschäftigt_m( + sozialversicherung__kranken__beitrag__einkommen_m: float, + beitragssatz_arbeitgeber: float, ) -> float: - """Health insurance contribution from pension income from April until December 2004. - - Pensioners pay twice the contribution of employees. - - Parameters - ---------- - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m - See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. - beitragssatz - See :func:`beitragssatz`. - - Returns - ------- - Retiree's long-term care insurance contributions. - + """Long-term care insurance contributions paid by the employer under regular + employment. """ - return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( - beitragssatz * 2 - ) - - -@policy_function( - start_date="2005-01-01", leaf_name="betrag_rentner_m", vectorization_strategy="loop" -) -def betrag_rentner_m_mit_zusatz_für_kinderlose( - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, - beitragssatz: float, - ges_pflegev_params: dict, -) -> float: - """Health insurance contribution from pension income since 2005. - - Pensioners pay twice the contribution of employees, but only once the additional - charge for childless individuals. - Parameters - ---------- - sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m - See :func:`sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m`. - beitragssatz - See :func:`beitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Retiree's long-term care insurance contributions. - - """ - return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( - beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] - ) + return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz_arbeitgeber @policy_function( start_date="2003-04-01", - end_date="2004-12-31", - leaf_name="betrag_gesamt_m", - vectorization_strategy="loop", ) -def betrag_gesamt_m_bis_2004( +def betrag_gesamt_in_gleitzone_m( sozialversicherung__midijob_bemessungsentgelt_m: float, - beitragssatz: float, - ges_pflegev_params: dict, + beitragssatz_arbeitnehmer: float, + beitragssatz_arbeitgeber: float, ) -> float: - """Sum of employee and employer long-term care insurance contributions until 2004. - - Parameters - ---------- - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - beitragssatz - See :func:`beitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Long-term care insurance contributions of employer and employee. - - - """ + """Sum of employee and employer long-term care insurance contributions.""" return sozialversicherung__midijob_bemessungsentgelt_m * ( - beitragssatz + ges_pflegev_params["beitr_satz"] + beitragssatz_arbeitnehmer + beitragssatz_arbeitgeber ) @policy_function( - start_date="2005-01-01", - leaf_name="betrag_gesamt_m", - vectorization_strategy="loop", + start_date="2003-04-01", + end_date="2022-09-30", + leaf_name="betrag_versicherter_in_gleitzone_m", ) -def betrag_gesamt_m_ab_2005( - sozialversicherung__midijob_bemessungsentgelt_m: float, - beitragssatz: float, - ges_pflegev_params: dict, +def betrag_versicherter_in_gleitzone_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_arbeitgeber_in_gleitzone_m: float, + betrag_gesamt_in_gleitzone_m: float, ) -> float: - """Sum of employee and employer long-term care insurance contributions since 2005. - - Parameters - ---------- - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - beitragssatz - See :func:`beitragssatz`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. + """Employee's long-term care insurance contribution for Midijobs.""" + return betrag_gesamt_in_gleitzone_m - betrag_arbeitgeber_in_gleitzone_m - Returns - ------- - Long-term care insurance contributions of employer and employee. - - """ - return sozialversicherung__midijob_bemessungsentgelt_m * ( - beitragssatz + ges_pflegev_params["beitr_satz"]["standard"] +@policy_function( + start_date="2022-10-01", + end_date="2023-06-30", + leaf_name="betrag_versicherter_in_gleitzone_m", +) +def betrag_versicherter_in_gleitzone_m_direkt( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + beitragssatz_arbeitnehmer: float, +) -> float: + """Employee's long-term care insurance contribution for Midijobs.""" + return ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * beitragssatz_arbeitnehmer ) @policy_function( - end_date="2004-12-31", - leaf_name="betrag_arbeitgeber_midijob_m", - vectorization_strategy="loop", + start_date="2023-07-01", + leaf_name="betrag_versicherter_in_gleitzone_m", ) -def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_bis_2004( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - ges_pflegev_params: dict, +def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehreren_kindern( + anzahl_kinder_bis_24: int, + zahlt_zusatzbetrag_kinderlos: bool, + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + sozialversicherung__midijob_bemessungsentgelt_m: float, + beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: - """Employer's long-term care insurance contribution until December 2004. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - + """Employee's long-term care insurance contribution.""" - Returns - ------- - Employer's long-term care insurance contributions. - - - """ - - out = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_pflegev_params["beitr_satz"] + base = ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * beitragssatz_nach_kinderzahl["standard"] + / 2 ) - return out + add = 0.0 + if zahlt_zusatzbetrag_kinderlos: + add = ( + add + + sozialversicherung__midijob_bemessungsentgelt_m + * beitragssatz_nach_kinderzahl["zusatz_kinderlos"] + ) + if anzahl_kinder_bis_24 >= 2: + add = add - ( + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * beitragssatz_nach_kinderzahl["abschlag_für_kinder_bis_24"] + * min(anzahl_kinder_bis_24 - 1, 4) + ) + + return base + add @policy_function( - start_date="2005-01-01", + start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_arbeitgeber_midijob_m", - vectorization_strategy="loop", + leaf_name="betrag_arbeitgeber_in_gleitzone_m", ) -def betrag_arbeitgeber_midijob_m_mit_festem_beitragssatz_ab_2005( +def betrag_arbeitgeber_in_gleitzone_m_als_anteil_des_bruttolohns( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - ges_pflegev_params: dict, + beitragssatz_arbeitgeber: float, ) -> float: - """Employers' contribution to long-term care insurance between 2005 and September - 2022. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - out = ( + """Employer's long-term care insurance contribution for Midijobs.""" + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_pflegev_params["beitr_satz"]["standard"] + * beitragssatz_arbeitgeber ) - return out -@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_midijob_m") -def betrag_arbeitgeber_midijob_m_als_differenz_von_gesamt_und_versichertenbeitrag( - betrag_gesamt_m: float, - betrag_versicherter_m: float, +@policy_function(start_date="2022-10-01", leaf_name="betrag_arbeitgeber_in_gleitzone_m") +def betrag_arbeitgeber_in_gleitzone_m_als_anteil_der_beitragspflichtigen_einnahmen( + sozialversicherung__midijob_bemessungsentgelt_m: float, + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, + beitragssatz_arbeitgeber: float, + beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: - """Employer's long-term care insurance contribution since October 2022. - - Parameters - ---------- - betrag_gesamt_m - See :func:`betrag_gesamt_m`. - betrag_versicherter_m - See :func:`betrag_versicherter_m`. - - - Returns - ------- - Employer's long-term care insurance contributions. - - """ - out = betrag_gesamt_m - betrag_versicherter_m - return out + """Employer's long-term care insurance contribution for Midijobs.""" + return ( + sozialversicherung__midijob_bemessungsentgelt_m + * beitragssatz_nach_kinderzahl["standard"] + - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m + * beitragssatz_arbeitgeber + ) @policy_function( - end_date="2022-09-30", - leaf_name="betrag_versicherter_midijob_m", - vectorization_strategy="loop", + start_date="1995-01-01", + end_date="2004-03-31", + leaf_name="betrag_rentner_m", ) -def betrag_versicherter_midijob_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( - betrag_arbeitgeber_midijob_m: float, - betrag_gesamt_m: float, +def betrag_rentner_m_reduzierter_beitrag( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz_arbeitnehmer: float, ) -> float: - """Employee's long-term care insurance contribution for Midijobs - until September 2022. - - Parameters - ---------- - betrag_arbeitgeber_midijob_m - See :func:`betrag_arbeitgeber_midijob_m`. - betrag_gesamt_m - See :func:`betrag_gesamt_m`. - - Returns - ------- - Employee's long-term care insurance contributions. + """Long-term care insurance contribution from pension income. + Pensioners pay the same contribution as employees. """ - out = betrag_gesamt_m - betrag_arbeitgeber_midijob_m - - return out + return ( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m + * beitragssatz_arbeitnehmer + ) @policy_function( - start_date="2022-10-01", - end_date="2023-06-30", - leaf_name="betrag_versicherter_midijob_m", - vectorization_strategy="loop", + start_date="2004-04-01", + end_date="2004-12-31", + leaf_name="betrag_rentner_m", ) -def betrag_versicherter_midijob_m_mit_zusatzbeitrag_für_kinderlos( - zusatzbetrag_kinderlos: bool, - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - sozialversicherung__midijob_bemessungsentgelt_m: float, - ges_pflegev_params: dict, +def betrag_rentner_m_ohne_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz: float, ) -> float: - """Employee's long-term care insurance contribution between October 2022 and - June 2023. - - Parameters - ---------- - zusatzbetrag_kinderlos - See :func:`zusatzbetrag_kinderlos`. - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Employee's long-term care insurance contributions. + """Health insurance contribution from pension income. + Pensioners pay twice the contribution of employees. """ - # Calculate the employee care insurance contribution - an_beitr_midijob_m = ( - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * ges_pflegev_params["beitr_satz"]["standard"] + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( + beitragssatz ) - # Add additional contribution for childless individuals - if zusatzbetrag_kinderlos: - an_beitr_midijob_m += ( - sozialversicherung__midijob_bemessungsentgelt_m - * ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] - ) - - return an_beitr_midijob_m - -@policy_function( - start_date="2023-07-01", - leaf_name="betrag_versicherter_midijob_m", - vectorization_strategy="loop", -) -def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehreren_kindern( - anzahl_kinder_bis_24: int, - zusatzbetrag_kinderlos: bool, - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - sozialversicherung__midijob_bemessungsentgelt_m: float, - ges_pflegev_params: dict, +@policy_function(start_date="2005-01-01", leaf_name="betrag_rentner_m") +def betrag_rentner_m_mit_zusatz_für_kinderlose( + sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m: float, + beitragssatz_arbeitnehmer: float, + beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: - """Employee's long-term care insurance contribution since July 2023. - - Parameters - ---------- - anzahl_kinder_bis_24 - See :func:`anzahl_kinder_bis_24`. - zusatzbetrag_kinderlos - See :func:`zusatzbetrag_kinderlos`. - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - Employee's long-term care insurance contributions. + """Health insurance contribution from pension income. + Pensioners pay twice the contribution of employees, but only once the additional + charge for childless individuals. """ - # Calculate the employee care insurance rate - ges_pflegev_rate = ges_pflegev_params["beitr_satz"]["standard"] - - # Reduced contribution for individuals with two or more children under 25 - if anzahl_kinder_bis_24 >= 2: - ges_pflegev_rate -= ges_pflegev_params["beitr_satz"]["abschlag_kinder"] * min( - anzahl_kinder_bis_24 - 1, 4 - ) - - # Calculate the employee care insurance contribution - an_beitr_midijob_m = ( - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * ges_pflegev_rate + return sozialversicherung__kranken__beitrag__bemessungsgrundlage_rente_m * ( + beitragssatz_arbeitnehmer + beitragssatz_nach_kinderzahl["standard"] / 2 ) - - # Add additional contribution for childless individuals - if zusatzbetrag_kinderlos: - an_beitr_midijob_m += ( - sozialversicherung__midijob_bemessungsentgelt_m - * ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] - ) - - return an_beitr_midijob_m diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 21c6b86b04..7e44ed009d 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -1,169 +1,121 @@ """Contribution rate to public long-term care insurance.""" -from ttsim import AggType, agg_by_p_id_function, policy_function +from __future__ import annotations +from ttsim import AggType, agg_by_p_id_function, param_function, policy_function -@agg_by_p_id_function(agg_type=AggType.SUM) -def anzahl_kinder_bis_24_elternteil_1( - alter_bis_24: bool, - einkommensteuer__p_id_kinderfreibetragsempfänger_1: int, - p_id: int, -) -> int: - pass - -@agg_by_p_id_function(agg_type=AggType.SUM) -def anzahl_kinder_bis_24_elternteil_2( - alter_bis_24: bool, - einkommensteuer__p_id_kinderfreibetragsempfänger_2: int, - p_id: int, -) -> int: - pass - - -@policy_function( - start_date="1995-01-01", - end_date="2004-12-31", - leaf_name="beitragssatz", - vectorization_strategy="loop", -) -def beitragssatz_ohne_zusatz_für_kinderlose( - ges_pflegev_params: dict, -) -> float: - """Employee's long-term care insurance contribution rate. - - Before 2005, the contribution rate was independent of the number of children. - - Parameters - ---------- - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ - - return ges_pflegev_params["beitr_satz"] +@param_function(start_date="1995-01-01", end_date="2004-12-31") +def beitragssatz_arbeitnehmer(beitragssatz: float) -> float: + """Employee's long-term care insurance contribution rate.""" + return beitragssatz / 2 @policy_function( start_date="2005-01-01", end_date="2023-06-30", - leaf_name="beitragssatz", - vectorization_strategy="loop", + leaf_name="beitragssatz_arbeitnehmer", ) -def beitragssatz_zusatz_kinderlos_dummy( - zusatzbetrag_kinderlos: bool, - ges_pflegev_params: dict, +def beitragssatz_arbeitnehmer_zusatz_kinderlos_dummy( + zahlt_zusatzbetrag_kinderlos: bool, + beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: """Employee's long-term care insurance contribution rate. Since 2005, the contribution rate is increased for childless individuals. - - Parameters - ---------- - zusatzbetrag_kinderlos - See :func:`zusatzbetrag_kinderlos`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - out = ges_pflegev_params["beitr_satz"]["standard"] # Add additional contribution for childless individuals - if zusatzbetrag_kinderlos: - out += ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] + if zahlt_zusatzbetrag_kinderlos: + out = ( + beitragssatz_nach_kinderzahl["standard"] / 2 + + beitragssatz_nach_kinderzahl["zusatz_kinderlos"] + ) + else: + out = beitragssatz_nach_kinderzahl["standard"] / 2 return out @policy_function( - start_date="2023-07-01", leaf_name="beitragssatz", vectorization_strategy="loop" + start_date="2023-07-01", + leaf_name="beitragssatz_arbeitnehmer", ) -def beitragssatz_mit_kinder_abschlag( +def beitragssatz_arbeitnehmer_mit_abschlag_nach_kinderzahl( anzahl_kinder_bis_24: int, - zusatzbetrag_kinderlos: bool, - ges_pflegev_params: dict, + zahlt_zusatzbetrag_kinderlos: bool, + beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: """Employee's long-term care insurance contribution rate. Since July 2023, the contribution rate is reduced for individuals with children younger than 25. - - Parameters - ---------- - anzahl_kinder_bis_24: int, - See :func:`anzahl_kinder_bis_24`. - zusatzbetrag_kinderlos - See :func:`zusatzbetrag_kinderlos`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - out = ges_pflegev_params["beitr_satz"]["standard"] + base = beitragssatz_nach_kinderzahl["standard"] / 2 - # Add additional contribution for childless individuals - if zusatzbetrag_kinderlos: - out += ges_pflegev_params["beitr_satz"]["zusatz_kinderlos"] - - # Reduced contribution for individuals with two or more children under 25 + add = 0.0 + if zahlt_zusatzbetrag_kinderlos: + add = add + beitragssatz_nach_kinderzahl["zusatz_kinderlos"] if anzahl_kinder_bis_24 >= 2: - out -= ges_pflegev_params["beitr_satz"]["abschlag_kinder"] * min( + add = add - beitragssatz_nach_kinderzahl["abschlag_für_kinder_bis_24"] * min( anzahl_kinder_bis_24 - 1, 4 ) - return out + return base + add -@policy_function(start_date="2005-01-01", vectorization_strategy="loop") -def zusatzbetrag_kinderlos( +@policy_function(start_date="2005-01-01") +def zahlt_zusatzbetrag_kinderlos( hat_kinder: bool, alter: int, - ges_pflegev_params: dict, + zusatz_kinderlos_mindestalter: int, ) -> bool: """Whether additional care insurance contribution for childless individuals applies. Not relevant before 2005 because the contribution rate was independent of the number of children. + """ + return (not hat_kinder) and alter >= zusatz_kinderlos_mindestalter - Parameters - ---------- - hat_kinder - See basic input variable :ref:`hat_kinder <hat_kinder>`. - alter - See basic input variable :ref:`alter <alter>`. - ges_pflegev_params: dict, - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - Returns - ------- +@agg_by_p_id_function(agg_type=AggType.SUM, start_date="2005-01-01") +def anzahl_kinder_bis_24_elternteil_1( + alter_bis_24: bool, + einkommensteuer__p_id_kinderfreibetragsempfänger_1: int, + p_id: int, +) -> int: + pass - """ - mindestalter = ges_pflegev_params["zusatz_kinderlos_mindestalter"] - return (not hat_kinder) and alter >= mindestalter + +@agg_by_p_id_function(agg_type=AggType.SUM, start_date="2005-01-01") +def anzahl_kinder_bis_24_elternteil_2( + alter_bis_24: bool, + einkommensteuer__p_id_kinderfreibetragsempfänger_2: int, + p_id: int, +) -> int: + pass -@policy_function() +@policy_function(start_date="2005-01-01") def anzahl_kinder_bis_24( anzahl_kinder_bis_24_elternteil_1: int, anzahl_kinder_bis_24_elternteil_2: int, ) -> int: - """Number of children under 25 years of age. - Parameters - ---------- - anzahl_kinder_bis_24_elternteil_1 - See :func:`anzahl_kinder_bis_24_elternteil_1`. - anzahl_kinder_bis_24_elternteil_2 - See :func:`anzahl_kinder_bis_24_elternteil_2`. - - Returns - ------- - """ + """Number of children under 25 years of age.""" return anzahl_kinder_bis_24_elternteil_1 + anzahl_kinder_bis_24_elternteil_2 + + +@param_function( + start_date="1995-01-01", end_date="2004-12-31", leaf_name="beitragssatz_arbeitgeber" +) +def beitragssatz_arbeitgeber_einheitliche_basis(beitragssatz: float) -> float: + """Employer's long-term care insurance contribution rate.""" + return beitragssatz / 2 + + +@param_function(start_date="2005-01-01", leaf_name="beitragssatz_arbeitgeber") +def beitragssatz_arbeitgeber_basis_nach_kinderzahl( + beitragssatz_nach_kinderzahl: dict[str, float], +) -> float: + """Employer's long-term care insurance contribution rate.""" + return beitragssatz_nach_kinderzahl["standard"] / 2 diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.yaml b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.yaml new file mode 100644 index 0000000000..35cfde1707 --- /dev/null +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.yaml @@ -0,0 +1,89 @@ +--- +beitragssatz: + name: + de: Beitragssatz zur gesetzlichen Pflegeversicherung + en: Contribution rate to statutory care insurance + description: + de: >- + Beitragssatz ist unabhängig von der Anzahl der Kinder. + en: >- + Contribution rate is independent of the number of children. + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1995-01-01: + value: 0.01 + 1997-01-01: + value: 0.017 + 2005-01-01: + note: >- + Special contribution rate for childless individuals. See + beitragssatz_nach_kinderzahl. +beitragssatz_nach_kinderzahl: + name: + de: Beitragssätze zur gesetzlichen Pflegeversicherung + en: Contribution rate to statutory care insurance + description: + de: >- + Beitragssatz ist abhängig von der Anzahl der Kinder. + en: >- + Contribution rate is dependent on the number of children. + unit: Share + reference_period: null + type: dict + add_jahresanfang: true + 2005-01-01: + standard: 0.017 + zusatz_kinderlos: 0.0025 + 2008-01-01: + standard: 0.0195 + zusatz_kinderlos: 0.0025 + 2013-01-01: + updates_previous: true + standard: 0.0205 + 2015-01-01: + standard: 0.0235 + zusatz_kinderlos: 0.0025 + 2017-01-01: + updates_previous: true + standard: 0.0255 + 2019-01-01: + standard: 0.0305 + zusatz_kinderlos: 0.0025 + 2022-01-01: + updates_previous: true + zusatz_kinderlos: 0.0035 + reference: Art. 2 Nr. 14 G. v. 11.07.2021, BGBl. I S. 2754. + 2023-07-01: + standard: 0.034 + zusatz_kinderlos: 0.006 + abschlag_für_kinder_bis_24: 0.0025 + note: >- + Pflegeunterstützungs- und -entlastungsgesetz - PUEG + Increase of contribution rates and introduction of reduction of contribution rates + for people with children. + 2025-01-01: + updates_previous: true + standard: 0.036 + reference: >- + Pflege-Beitragssatz-Anpassungsverordnung 2025, Bundestag-Drucksache 20/1371 +zusatz_kinderlos_mindestalter: + name: + de: Mindestalter Beitragszuschlag für Kinderlose + en: Minimum age for additional contribution for childless + description: + de: >- + § 55 Abs. 3 SGB XI, KiBG Art. 1 + Kinderlose Mitglieder der sozialen Pflegeversicherung, die das 23. Lebensjahr + vollendet haben, müssen seit dem 1. Januar 2005 einen erhöhten Beitragssatz + entrichten. + en: >- + § 55 Abs. 3 SGB XI, KiBG Art. 1 + Childless members of the social care insurance, who have reached the age of 23, + have to pay a higher contribution rate since January 1, 2005. + unit: Years + reference_period: null + type: scalar + 2005-01-01: + value: 23 diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py index 3437f3f310..a5c1171db0 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index 5459c48242..75f6e9afd1 100644 --- "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -1,12 +1,14 @@ """Regularly employed.""" +from __future__ import annotations + from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") def regulär_beschäftigt_vor_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - minijob_grenze: float, + minijobgrenze: float, ) -> bool: """Regular employment check until March 2003. @@ -15,17 +17,16 @@ def regulär_beschäftigt_vor_midijob( regular employed. """ - out = ( + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - >= minijob_grenze + >= minijobgrenze ) - return out @policy_function(start_date="2003-04-01", leaf_name="regulär_beschäftigt") def regulär_beschäftigt_mit_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - geringfügige_einkommen_params: dict, + midijobgrenze: float, ) -> bool: """Regular employment check since April 2003. @@ -34,8 +35,7 @@ def regulär_beschäftigt_mit_midijob( regular employed. """ - out = ( + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - >= geringfügige_einkommen_params["grenzen_m"]["midijob"] + >= midijobgrenze ) - return out diff --git a/src/_gettsim/sozialversicherung/rente/__init__.py b/src/_gettsim/sozialversicherung/rente/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py index 0ea1c3f9e0..bcc08fed3f 100644 --- a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py +++ b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py @@ -1,5 +1,7 @@ """Public pension benefits.""" +from __future__ import annotations + from ttsim import policy_function @@ -17,23 +19,6 @@ def alter_bei_renteneintritt( persons eligible for pension at first of month after reaching the age threshold (§ 99 SGB VI) persons who retire in same month will be considered a month too young. Hence, subtract 1/12. - - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - jahr_renteneintritt - See basic input variable :ref:`jahr_renteneintritt <jahr_renteneintritt>`. - monat_renteneintritt - See basic input variable :ref:`monat_renteneintritt <monat_renteneintritt>`. - - Returns - ------- - Age at retirement. - """ return ( jahr_renteneintritt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 4dafd1023d..452792b881 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -1,14 +1,16 @@ """Age thresholds for public pension eligibility.""" +from __future__ import annotations + from ttsim import policy_function @policy_function( end_date="2011-12-31", - leaf_name="altersgrenze_abschlagsfrei", + leaf_name="altersgrenze", vectorization_strategy="loop", ) -def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( +def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -23,28 +25,6 @@ def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( Age at which pension can be claimed without deductions. This age is smaller or equal to the normal retirement age (FRA<=NRA) and depends on personal characteristics as gender, insurance duration, health/disability, employment status. - - Parameters - ---------- - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__für_frauen__altersgrenze - See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Full retirement age. - """ out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze @@ -70,10 +50,10 @@ def altersgrenze_abschlagsfrei_mit_arbeitsl_frauen_ohne_besond_langj( @policy_function( start_date="2012-01-01", end_date="2017-12-31", - leaf_name="altersgrenze_abschlagsfrei", + leaf_name="altersgrenze", vectorization_strategy="loop", ) -def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( +def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, @@ -95,32 +75,6 @@ def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( besonders langjährig Versicherte) is introduced. Policy becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__für_frauen__altersgrenze - See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Full retirement age. - """ out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze @@ -152,10 +106,10 @@ def altersgrenze_abschlagsfrei_mit_frauen_arbeitsl_besond_langj( @policy_function( start_date="2018-01-01", - leaf_name="altersgrenze_abschlagsfrei", + leaf_name="altersgrenze", vectorization_strategy="loop", ) -def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( +def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, @@ -168,24 +122,6 @@ def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( Age at which pension can be claimed without deductions. This age is smaller or equal to the normal retirement age (FRA<=NRA) and depends on personal characteristics as gender, insurance duration, health/disability, employment status. - - Parameters - ---------- - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Full retirement age. - """ out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze @@ -209,7 +145,7 @@ def altersgrenze_abschlagsfrei_mit_besond_langj_ohne_arbeitsl_frauen( leaf_name="altersgrenze_vorzeitig", vectorization_strategy="loop", ) -def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( +def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -224,28 +160,6 @@ def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( duration, health/disability, employment status. Policy becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig`. - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig - See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Early retirement age (potentially with deductions). - """ frauen_vorzeitig = ( sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig @@ -270,7 +184,7 @@ def altersgrenze_vorzeitig_mit_rente_arbeitsl_frauen( @policy_function(start_date="2018-01-01", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( +def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: float, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, @@ -279,20 +193,6 @@ def altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( Early retirement age depends on personal characteristics as gender, insurance duration, health/disability, employment status. - - Parameters - ---------- - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Early retirement age (potentially with deductions). - """ out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze @@ -308,7 +208,7 @@ def altersgrenze_vorzeitig_ohne_rente_arbeitsl_frauen( @policy_function( end_date="2017-12-31", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" ) -def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_rente_arbeitsl_frauen( +def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, @@ -319,58 +219,31 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_rente_arbeitsl_frauen( Frauen" or "Rente für Arbeitslose" (or -not yet implemented - for disabled). Policy becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. - - - Returns - ------- - Eligibility as bool. - """ - out = ( + return ( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt or sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt or sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ) - return out - @policy_function( start_date="2018-01-01", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" ) -def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_rente_arbeitsl_frauen( +def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, ) -> bool: """Eligibility for early retirement. Can only be claimed if eligible for "Rente für langjährig Versicherte". - - Parameters - ---------- - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - - Returns - ------- - Eligibility as bool. - """ return sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt @policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") -def referenzalter_abschlag_mit_rente_arbeitsl_frauen( +def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -385,28 +258,6 @@ def referenzalter_abschlag_mit_rente_arbeitsl_frauen( Normal retirement age if not eligible for early retirement. Policy becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. - - Parameters - ---------- - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze - See :func:`sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze`. - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__für_frauen__altersgrenze - See :func:`sozialversicherung__rente__altersrente__für_frauen__altersgrenze`. - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Reference age for deduction calculation. - """ if ( sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt @@ -455,7 +306,7 @@ def referenzalter_abschlag_mit_rente_arbeitsl_frauen( @policy_function(start_date="2018-01-01", leaf_name="referenzalter_abschlag") -def referenzalter_abschlag_ohne_rente_arbeitsl_frauen( +def referenzalter_abschlag_ohne_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, @@ -464,20 +315,6 @@ def referenzalter_abschlag_ohne_rente_arbeitsl_frauen( (Zugangsfaktor). Normal retirement age if not eligible for early retirement. - - Parameters - ---------- - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__langjährig__altersgrenze - See :func:`sozialversicherung__rente__altersrente__langjährig__altersgrenze`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - - Returns - ------- - Reference age for deduction calculation. - """ if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: out = sozialversicherung__rente__altersrente__langjährig__altersgrenze diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index 4af861c272..d43d13f30b 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -1,5 +1,7 @@ """Public pension benefits for retirement due to age.""" +from __future__ import annotations + from ttsim import RoundingSpec, policy_function @@ -28,346 +30,100 @@ def betrag_m_mit_grundrente( sozialversicherung__rente__grundrente__betrag_m: float, sozialversicherung__rente__bezieht_rente: bool, ) -> float: - """Calculate total individual public pension including Grundrentenzuschlag. - - Parameters - ---------- - bruttorente_m - See :func:`bruttorente_m`. - sozialversicherung__rente__grundrente__betrag_m - See :func:`sozialversicherung__rente__grundrente__betrag_m`. - sozialversicherung__rente__bezieht_rente - See basic input variable :ref:<sozialversicherung__rente__bezieht_rente>. - - Returns - ------- - - """ - out = ( + """Calculate total individual public pension including Grundrentenzuschlag.""" + return ( bruttorente_m + sozialversicherung__rente__grundrente__betrag_m if sozialversicherung__rente__bezieht_rente else 0.0 ) - return out @policy_function( - end_date="2016-12-31", - rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" - ), - leaf_name="bruttorente_m", + start_date="1992-01-01", + end_date="2023-06-30", + leaf_name="bruttorente_basisbetrag_m", ) -def bruttorente_m_mit_harter_hinzuverdienstgrenze( - alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - bruttorente_basisbetrag_m: float, - ges_rente_params: dict, +def bruttorente_basisbetrag_m_nach_wohnort( + zugangsfaktor: float, + sozialversicherung__rente__entgeltpunkte_ost: float, + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__bezieht_rente: bool, + parameter_rentenwert_nach_wohnort: dict[str, float], ) -> float: - """Pension benefits after earnings test for early retirees. - - If earnings are above an earnings limit, the pension is fully deducted. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - if ( - alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - ) or ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - <= ges_rente_params["hinzuverdienstgrenze"] - ): - out = bruttorente_basisbetrag_m - else: - out = 0.0 - - return out + """Old-Age Pensions claim. The function follows the following equation: + .. math:: -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", - leaf_name="bruttorente_m", - rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" - ), -) -def bruttorente_m_mit_hinzuverdienstdeckel( - alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - differenz_bruttolohn_hinzuverdienstdeckel_m: float, - zahlbetrag_ohne_deckel_m: float, -) -> float: - """Pension benefits after earnings test for early retirees. - - If sum of earnings and pension is larger than the highest income in the last 15 - years, the pension is fully deducted (Hinzuverdienstdeckel). - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - differenz_bruttolohn_hinzuverdienstdeckel_m - See :func:`differenz_bruttolohn_hinzuverdienstdeckel_m`. - zahlbetrag_ohne_deckel_m - See :func:`zahlbetrag_ohne_deckel_m`. - - Returns - ------- + Rente = Entgeltpunkte * Zugangsfaktor * Rentenwert + See: + - https://de.wikipedia.org/wiki/Rentenformel + - https://de.wikipedia.org/wiki/Rentenanpassungsformel """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - if ( - differenz_bruttolohn_hinzuverdienstdeckel_m > 0 - and alter - <= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - and einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - > 0 - ): - out = max( - zahlbetrag_ohne_deckel_m - differenz_bruttolohn_hinzuverdienstdeckel_m, - 0.0, - ) - else: - out = zahlbetrag_ohne_deckel_m - return out - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def zahlbetrag_ohne_deckel_m( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, - bruttorente_basisbetrag_m: float, - differenz_bruttolohn_hinzuverdienstgrenze_m: float, - ges_rente_params: dict, -) -> float: - """Pension benefits after earnings test without accounting for the earnings cap - (Hinzuverdienstdeckel). - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - alter - See basic input variable :ref:`alter <alter>`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - differenz_bruttolohn_hinzuverdienstgrenze_m - See :func:`differenz_bruttolohn_hinzuverdienstgrenze_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - # No deduction because of age or low earnings - if ( - alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - ) or ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - <= ges_rente_params["hinzuverdienstgrenze"] - ): - out = bruttorente_basisbetrag_m - # Basis deduction of 40% + if sozialversicherung__rente__bezieht_rente: + out = ( + sozialversicherung__rente__entgeltpunkte_west + * parameter_rentenwert_nach_wohnort["west"] + + sozialversicherung__rente__entgeltpunkte_ost + * parameter_rentenwert_nach_wohnort["ost"] + ) * zugangsfaktor else: - out = max( - bruttorente_basisbetrag_m - - ges_rente_params["abzugsrate_hinzuverdienst"] - * differenz_bruttolohn_hinzuverdienstgrenze_m, - 0.0, - ) + out = 0.0 return out +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def differenz_bruttolohn_hinzuverdienstgrenze_y( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - ges_rente_params: dict, -) -> float: - """Earnings that are subject to pension deductions. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - return max( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - - ges_rente_params["hinzuverdienstgrenze"], - 0.0, - ) - - -@policy_function( - start_date="2017-01-01", - end_date="2022-12-31", -) -def differenz_bruttolohn_hinzuverdienstdeckel_y( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - zahlbetrag_ohne_deckel_y: float, - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: float, -) -> float: - """Income above the earnings cap (Hinzuverdienstdeckel). - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y>`. - zahlbetrag_ohne_deckel_y - See :func:`zahlbetrag_ohne_deckel_y`. - höchster_bruttolohn_letzte_15_jahre_vor_rente_y - See basic input variable :ref:`höchster_bruttolohn_letzte_15_jahre_vor_rente_y - <höchster_bruttolohn_letzte_15_jahre_vor_rente_y>`. - - Returns - ------- - - """ - return max( - zahlbetrag_ohne_deckel_y - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - - höchster_bruttolohn_letzte_15_jahre_vor_rente_y, - 0.0, - ) - - -@policy_function( - start_date="2023-01-01", - leaf_name="bruttorente_m", - rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" - ), + start_date="2023-07-01", ) -def bruttorente_m_ohne_einkommensanrechnung( - bruttorente_basisbetrag_m: float, -) -> float: - """Public pension claim before Grundrentenzuschlag. - - Parameters - ---------- - bruttorente_basisbetrag_m - See :func:`bruttorente_basisbetrag_m`. - - Returns - ------- - - """ - return bruttorente_basisbetrag_m - - -@policy_function(start_date="1992-01-01") def bruttorente_basisbetrag_m( zugangsfaktor: float, sozialversicherung__rente__entgeltpunkte_ost: float, sozialversicherung__rente__entgeltpunkte_west: float, sozialversicherung__rente__bezieht_rente: bool, - ges_rente_params: dict, + rentenwert: float, ) -> float: """Old-Age Pensions claim. The function follows the following equation: .. math:: - R = EP * ZF * Rw - - models 'Rentenformel': - https://de.wikipedia.org/wiki/Rentenformel - https://de.wikipedia.org/wiki/Rentenanpassungsformel - - - Parameters - ---------- - zugangsfaktor - See :func:`zugangsfaktor`. - sozialversicherung__rente__entgeltpunkte_ost - See :func:`sozialversicherung__rente__entgeltpunkte_ost`. - sozialversicherung__rente__entgeltpunkte_west - See :func:`sozialversicherung__rente__entgeltpunkte_west`. - sozialversicherung__rente__bezieht_rente - See basic input variable :ref:`sozialversicherung__rente__bezieht_rente <sozialversicherung__rente__bezieht_rente>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- + Rente = Entgeltpunkte * Zugangsfaktor * Rentenwert + See: + - https://de.wikipedia.org/wiki/Rentenformel + - https://de.wikipedia.org/wiki/Rentenanpassungsformel """ if sozialversicherung__rente__bezieht_rente: out = ( - sozialversicherung__rente__entgeltpunkte_west - * ges_rente_params["rentenwert"]["west"] - + sozialversicherung__rente__entgeltpunkte_ost - * ges_rente_params["rentenwert"]["ost"] - ) * zugangsfaktor + ( + sozialversicherung__rente__entgeltpunkte_west + + sozialversicherung__rente__entgeltpunkte_ost + ) + * rentenwert + * zugangsfaktor + ) else: out = 0.0 return out -@policy_function() -def rentenwert(wohnort_ost: bool, ges_rente_params: dict) -> float: - """Select the rentenwert depending on place of living. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - params = ges_rente_params["rentenwert"] - - out = params["ost"] if wohnort_ost else params["west"] - - return out +@policy_function(start_date="1992-01-01", end_date="2023-06-30", leaf_name="rentenwert") +def rentenwert_nach_wohnort( + wohnort_ost: bool, + parameter_rentenwert_nach_wohnort: dict[str, float], +) -> float: + """Rentenwert.""" + return ( + parameter_rentenwert_nach_wohnort["ost"] + if wohnort_ost + else parameter_rentenwert_nach_wohnort["west"] + ) @policy_function() @@ -375,11 +131,11 @@ def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, referenzalter_abschlag: float, - altersgrenze_abschlagsfrei: float, + altersgrenze: float, altersgrenze_vorzeitig: float, vorzeitig_grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: bool, - ges_rente_params: dict, + zugangsfaktor_veränderung_pro_jahr: dict[str, float], ) -> float: """Zugangsfaktor (pension adjustment factor). @@ -399,41 +155,17 @@ def zugangsfaktor( within month does not matter. The eligibility always starts in the month after reaching the required age. - Returns 0 of the person is not eligible for receiving pension benefits because + Returns 0 if the person is not eligible for receiving pension benefits because either i) the person is younger than the earliest possible retirement age or ii) the person is not eligible for pension benefits because - `sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt` is False. - - Parameters - ---------- - sozialversicherung__rente__alter_bei_renteneintritt - See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze`. - referenzalter_abschlag - See :func:`referenzalter_abschlag`. - altersgrenze_abschlagsfrei - See :func:`altersgrenze_abschlagsfrei`. - altersgrenze_vorzeitig - See :func:`altersgrenze_vorzeitig`. - vorzeitig_grundsätzlich_anspruchsberechtigt - See :func:`vorzeitig_grundsätzlich_anspruchsberechtigt`. - sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt - See :func:`sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Zugangsfaktor - + `sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt` + is False. """ if sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: # Early retirement (before full retirement age): Zugangsfaktor < 1 if ( - sozialversicherung__rente__alter_bei_renteneintritt - < altersgrenze_abschlagsfrei + sozialversicherung__rente__alter_bei_renteneintritt < altersgrenze ): # [ERA,FRA) if vorzeitig_grundsätzlich_anspruchsberechtigt and ( sozialversicherung__rente__alter_bei_renteneintritt @@ -449,9 +181,7 @@ def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt - referenzalter_abschlag ) - * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ - "vorzeitiger_renteneintritt" - ] + * zugangsfaktor_veränderung_pro_jahr["vorzeitiger_renteneintritt"] ) else: # Early retirement although not eligible to do so. @@ -469,9 +199,7 @@ def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze ) - * ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ - "späterer_renteneintritt" - ] + * zugangsfaktor_veränderung_pro_jahr["späterer_renteneintritt"] ) # Retirement between full retirement age and normal retirement age: @@ -484,162 +212,4 @@ def zugangsfaktor( else: out = 0.0 - out = max(out, 0.0) - - return out - - -@policy_function() -def entgeltpunkte_west_updated( - wohnort_ost: bool, - sozialversicherung__rente__entgeltpunkte_west: float, - neue_entgeltpunkte: float, -) -> float: - """Update western earning points. - - Given earnings, social insurance rules, average - earnings in a particular year and potentially other - variables (e.g., benefits for raising children, - informal care), return the new earnings points. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - sozialversicherung__rente__entgeltpunkte_west - See basic input variable :ref:`ententgeltpunkte_westgeltp <sozialversicherung__rente__entgeltpunkte_west>`. - neue_entgeltpunkte - See :func:`neue_entgeltpunkte`. - - Returns - ------- - - """ - if wohnort_ost: - out = sozialversicherung__rente__entgeltpunkte_west - else: - out = sozialversicherung__rente__entgeltpunkte_west + neue_entgeltpunkte - return out - - -@policy_function() -def entgeltpunkte_ost_updated( - wohnort_ost: bool, - sozialversicherung__rente__entgeltpunkte_ost: float, - neue_entgeltpunkte: float, -) -> float: - """Update eastern earning points. - - Given earnings, social insurance rules, average - earnings in a particular year and potentially other - variables (e.g., benefits for raising children, - informal care), return the new earnings points. - - Parameters - ---------- - wohnort_ost - See basic input variable :ref:`wohnort_ost <wohnort_ost>`. - sozialversicherung__rente__entgeltpunkte_ost - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost <sozialversicherung__rente__entgeltpunkte_ost>`. - neue_entgeltpunkte - See :func:`neue_entgeltpunkte`. - - Returns - ------- - - """ - if wohnort_ost: - out = sozialversicherung__rente__entgeltpunkte_ost + neue_entgeltpunkte - else: - out = sozialversicherung__rente__entgeltpunkte_ost - return out - - -@policy_function() -def neue_entgeltpunkte( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - wohnort_ost: bool, - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, - ges_rente_params: dict, -) -> float: - """Return earning points for the wages earned in the last year. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - wohnort_ost - See :func:`wohnort_ost`. - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - See :func: - `sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - Returns - ------- - - """ - - # Scale bruttolohn up if earned in eastern Germany - if wohnort_ost: - bruttolohn_scaled_east = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_rente_params["umrechnung_entgeltpunkte_beitrittsgebiet"] - ) - else: - bruttolohn_scaled_east = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - ) - - # Calculate the (scaled) wage, which is subject to pension contributions. - if ( - bruttolohn_scaled_east - > sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - ): - bruttolohn_scaled_rentenv = ( - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - ) - else: - bruttolohn_scaled_rentenv = bruttolohn_scaled_east - - # Calculate monthly mean wage in Germany - durchschnittslohn_m = (1 / 12) * ges_rente_params[ - "beitragspflichtiges_durchschnittsentgelt" - ] - - out = bruttolohn_scaled_rentenv / durchschnittslohn_m - return out - - -@policy_function() -def anteil_entgeltpunkte_ost( - sozialversicherung__rente__entgeltpunkte_west: float, - sozialversicherung__rente__entgeltpunkte_ost: float, -) -> float: - """Proportion of Entgeltpunkte accumulated in East Germany - - Parameters - ---------- - sozialversicherung__rente__entgeltpunkte_west - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west <sozialversicherung__rente__entgeltpunkte_west> - sozialversicherung__rente__entgeltpunkte_ost - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost <sozialversicherung__rente__entgeltpunkte_ost> - - Returns - ------- - Proportion of Entgeltpunkte accumulated in East Germany - - """ - if ( - sozialversicherung__rente__entgeltpunkte_west - == sozialversicherung__rente__entgeltpunkte_ost - == 0.0 - ): - out = 0.0 - else: - out = sozialversicherung__rente__entgeltpunkte_ost / ( - sozialversicherung__rente__entgeltpunkte_west - + sozialversicherung__rente__entgeltpunkte_ost - ) - - return out + return max(out, 0.0) diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/altersgrenze.yaml" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/altersgrenze.yaml" new file mode 100644 index 0000000000..5811bbade5 --- /dev/null +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/altersgrenze.yaml" @@ -0,0 +1,113 @@ +--- +altersgrenze: + name: + de: Eintrittsalter für besonders langjährig Versicherte - abschlagsfrei + en: Entry age for very long term insured (45 insurance years) without deductions + description: + de: >- + § 38 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/249-altersrente-fuer-besonders-langjaehrig-versicherte.html + en: >- + § 38 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/249-altersrente-fuer-besonders-langjaehrig-versicherte.html + unit: Years + reference_period: null + type: scalar + 2007-04-30: + reference: RV-Altersgrenzenanpassungsgesetz 2007. BGBl. I S. 554 2007 + value: 65.0 + 2014-06-23: + note: Rente mit 63, see `altersgrenze_gestaffelt` + reference: RV-Leistungsverbesserungsgesetz 2014. BGBl. I S. 787 2014 + 2029-01-01: + value: 65.0 + note: Phase-in period is over +altersgrenze_gestaffelt: + name: + de: >- + Gestaffeltes Eintrittsalter der Rente für besonders langjährig Versicherte nach + Geburtsjahr + en: >- + Staggered normal retirement age (NRA) for very long term insured (45 insurance + years) without deductions + description: + de: >- + § 38 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/249-altersrente-fuer-besonders-langjaehrig-versicherte.html + Stückweise lineare Funktion, die die Regelaltersgrenze angibt, bei der das + Individuum mit seinem vollen Rentenanspruch in Rente gehen kann. Geht die Person + früher oder später in Rente, ist der Zugangsfaktor und damit der Rentenanspruch + höher oder niedriger, wenn keine Ausnahmeregelungen erfüllt sind. + Ab dem 1.7.2014 wurde die Altersgrenze für Kohorten bis 1952 auf 63 Jahre + gesenkt (für nachfolgende Kohorten steigt sie um 2 Monate pro Kohorte bis + 65). Personen, die vor dem 1.7.1951 (codiert als 1951.5) geboren wurden, + waren zu diesem Zeitpunkt aber schon älter als 63 und hatten ensprechend ein + höheres verfügbares Renteneintrittsalter. Nur Personen, die ab dem 1.7.1949 + geboren wurden konnten überhaupt profitieren, da alle anderen schon über 65 + waren. Für die Zugangsfaktor berechnung werden die tatsächlich verfügbaren + Renteneintrittsalter benötigt. Daher brauchen wir für die inputs eine + monatliche Präzision bis Kohorte 1952. + en: >- + § 38 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/249-altersrente-fuer-besonders-langjaehrig-versicherte.html + Stückweise lineare Funktion, die die Regelaltersgrenze angibt, bei der das + Piecewise linear function returning the regelaltersgrenze at which the agent + is allowed to get pensions with his full claim. If the agent retires earlier or + later, the Zugangsfaktor and therefore the pension claim is higher or lower, + unless special conditions apply. + From 1.7.2014 the retirement thresholds for cohorts born before 1953 was + lowered to 63 years (for subsequent cohort it raises by 2 months per cohort + up to 65 again). But people born before 1.7.1951 were already older than + 63 at that date. Only cohorts born after 1.7.1949 could benefit since the + others were above 65 already. As the zugangsfaktor function runs on retirement + age, we need the actually feasible retirement ages as inputs. The inputs + therefore require monthly precision up to cohort 1952. From then we need + annual precision. + unit: Years + reference_period: null + type: year_based_phase_inout_of_age_thresholds + 2014-06-23: + reference: RV-Leistungsverbesserungsgesetz 2014. BGBl. I S. 787 2014 + first_year_to_consider: 1900 + last_year_to_consider: 2031 + 1952: + years: 63 + months: 0 + 1953: + years: 63 + months: 2 + 1954: + years: 63 + months: 4 + 1955: + years: 63 + months: 6 + 1956: + years: 63 + months: 8 + 1957: + years: 63 + months: 10 + 1958: + years: 64 + months: 0 + 1959: + years: 64 + months: 2 + 1960: + years: 64 + months: 4 + 1961: + years: 64 + months: 6 + 1962: + years: 64 + months: 8 + 1963: + years: 64 + months: 10 + 1964: + years: 65 + months: 0 + 2029-01-01: + note: last cohort with entry age < 67 will have passed that age diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index b80ff7480e..a4f51c9c4c 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -1,45 +1,16 @@ """Pathway for the very long-term insured.""" -from ttsim import policy_function +from __future__ import annotations - -@policy_function( - start_date="2012-01-01", - end_date="2014-06-22", - leaf_name="altersgrenze", -) -def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: - """ - Full retirement age (FRA) for very long term insured. - - FRA is the same for each birth year. - - Calculate the threshold from which very long term insured people (at least 45 - years) can claim their full pension without deductions. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age (without deductions) for very long term insured. - - """ - return ges_rente_params["altersgrenze_besond_langj_versicherte"] +from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( - start_date="2014-06-23", leaf_name="altersgrenze", vectorization_strategy="loop" + start_date="2014-06-23", + end_date="2028-12-31", ) -def altersgrenze_mit_staffelung( - geburtsjahr: int, - ges_rente_params: dict, +def altersgrenze( + geburtsjahr: int, altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue ) -> float: """ Full retirement age (FRA) for very long term insured. @@ -50,41 +21,10 @@ def altersgrenze_mit_staffelung( years) can claim their full pension without deductions. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age (without deductions) for very long term insured. - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_besond_langj_versicherte"][geburtsjahr] - - return out + return altersgrenze_gestaffelt.values_to_look_up[ + geburtsjahr - altersgrenze_gestaffelt.base_to_subtract + ] @policy_function(start_date="2012-01-01") @@ -93,17 +33,6 @@ def grundsätzlich_anspruchsberechtigt( ) -> bool: """Determining the eligibility for Altersrente für besonders langjährig Versicherte (pension for very long-term insured). Wartezeit 45 years. aka "Rente mit 63". - - Parameters - ---------- - sozialversicherung__rente__wartezeit_45_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_45_jahre_erfüllt` - - - Returns - ------- - Eligibility as bool. - """ return sozialversicherung__rente__wartezeit_45_jahre_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py new file mode 100644 index 0000000000..685d2c9988 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py @@ -0,0 +1,78 @@ +from ttsim import policy_function + +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 + + +@policy_function() +def entgeltpunkte_west_updated( + wohnort_ost: bool, + sozialversicherung__rente__entgeltpunkte_west: float, + neue_entgeltpunkte: float, +) -> float: + """Updated Entgeltpunkte from West Germany based on current income. + + Given earnings, social insurance rules, average earnings in a particular year and + potentially other variables (e.g., benefits for raising children, informal care), + return the new earnings points. + """ + if wohnort_ost: + out = sozialversicherung__rente__entgeltpunkte_west + else: + out = sozialversicherung__rente__entgeltpunkte_west + neue_entgeltpunkte + return out + + +@policy_function() +def entgeltpunkte_ost_updated( + wohnort_ost: bool, + sozialversicherung__rente__entgeltpunkte_ost: float, + neue_entgeltpunkte: float, +) -> float: + """Updated Entgeltpunkte from East Germany based on current income. + + Given earnings, social insurance rules, average earnings in a particular year and + potentially other variables (e.g., benefits for raising children, informal care), + return the new earnings points. + """ + if wohnort_ost: + out = sozialversicherung__rente__entgeltpunkte_ost + neue_entgeltpunkte + else: + out = sozialversicherung__rente__entgeltpunkte_ost + return out + + +@policy_function() +def neue_entgeltpunkte( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + wohnort_ost: bool, + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, + beitragspflichtiges_durchschnittsentgelt_y: float, + umrechnung_entgeltpunkte_beitrittsgebiet: float, +) -> float: + """Return earning points for the wages earned in the last year.""" + + # Scale bruttolohn up if earned in eastern Germany + if wohnort_ost: + bruttolohn_scaled_east = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * umrechnung_entgeltpunkte_beitrittsgebiet + ) + else: + bruttolohn_scaled_east = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + + # Calculate the (scaled) wage, which is subject to pension contributions. + if ( + bruttolohn_scaled_east + > sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + ): + bruttolohn_scaled_rentenv = ( + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m + ) + else: + bruttolohn_scaled_rentenv = bruttolohn_scaled_east + + return bruttolohn_scaled_rentenv / (beitragspflichtiges_durchschnittsentgelt_y / 12) diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" new file mode 100644 index 0000000000..3b2f51d919 --- /dev/null +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" @@ -0,0 +1,588 @@ +--- +altersgrenze: + name: + de: Einheitliche Altersgrenze für abschlagsfreie Altersrente für Frauen + en: Uniform age threshold for pension for women (without deductions) + description: + de: >- + Renteneintrittsalter für "Altersrente für Frauen", ab dem die Altersrente ohne + Abschläge bezogen werden kann. + § 237a SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/25-altersrente-fuer-frauen.html + Frauen, die vor 1940 geboren wurden, konnten mit 60 abschlagsfrei in Rente gehen, + nach einer Wartezeit von 15 Jahren und mit mindestens 10 Beitragsjahren ab dem + Alter von 40. Ab 1940 wurde das Eintrittsalter sukzessive erhöhrt um einen Monat + pro Geburtsmonat auf das Alter 65. + en: >- + Full retirement age (FRA) for pathway "Altersrente für Frauen". + § 237a SGB VI + Women born before 1940 were able to retire at age 60 without deductions (required + waiting period of 15 years and 10 years of contributions after age 40). The age + threshold was increase by one month for each birthmonth up to age 65 for cohort + 1945. + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 60 + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: >- + Increase of full retirement age from 60 to 65 for birth cohort 1941-1952. See + `altersgrenze_gestaffelt`. +altersgrenze_gestaffelt: + name: + de: Gestaffelte Altersgrenze für abschlagsfreie Altersrente für Frauen + en: Staggered age threshold for pension for women (without deductions) + description: + de: >- + Renteneintrittsalter für "Altersrente für Frauen", ab dem die Altersrente ohne + Abschläge bezogen werden kann. + § 237a SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/25-altersrente-fuer-frauen.html + Frauen, die vor 1940 geboren wurden, konnten mit 60 abschlagsfrei in Rente gehen, + nach einer Wartezeit von 15 Jahren und mit mindestens 10 Beitragsjahren ab dem + Alter von 40. Ab 1940 wurde das Eintrittsalter sukzessive erhöhrt um einen Monat + pro Geburtsmonat auf das Alter 65. + en: >- + Full retirement age (FRA) for pathway "Altersrente für Frauen". + § 237a SGB VI + Women born before 1940 were able to retire at age 60 without deductions (required + waiting period of 15 years and 10 years of contributions after age 40). The age + threshold was increase by one month for each birthmonth up to age 65 for cohort + 1945. + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of full retirement age from 60 to 65 for birth cohort 1941-1952. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1940: + 12: + years: 60 + months: 0 + 1941: + 1: + years: 60 + months: 1 + 5: + years: 60 + months: 2 + 9: + years: 60 + months: 3 + 1942: + 1: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 9: + years: 60 + months: 6 + 1943: + 1: + years: 60 + months: 7 + 5: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 1944: + 1: + years: 60 + months: 10 + 5: + years: 61 + months: 11 + 9: + years: 61 + months: 0 + 1945: + 1: + years: 61 + months: 1 + 3: + years: 61 + months: 2 + 5: + years: 61 + months: 3 + 7: + years: 61 + months: 4 + 9: + years: 61 + months: 5 + 11: + years: 61 + months: 6 + 1946: + 1: + years: 61 + months: 7 + 3: + years: 61 + months: 8 + 5: + years: 61 + months: 9 + 7: + years: 61 + months: 10 + 9: + years: 61 + months: 11 + 11: + years: 62 + months: 0 + 1947: + 1: + years: 62 + months: 1 + 3: + years: 62 + months: 2 + 5: + years: 62 + months: 3 + 7: + years: 62 + months: 4 + 9: + years: 62 + months: 5 + 11: + years: 62 + months: 6 + 1948: + 1: + years: 62 + months: 7 + 3: + years: 62 + months: 8 + 5: + years: 62 + months: 9 + 7: + years: 62 + months: 10 + 9: + years: 62 + months: 11 + 11: + years: 63 + months: 0 + 1949: + 1: + years: 63 + months: 1 + 3: + years: 63 + months: 2 + 5: + years: 63 + months: 3 + 7: + years: 63 + months: 4 + 9: + years: 63 + months: 5 + 11: + years: 63 + months: 6 + 1950: + 1: + years: 63 + months: 7 + 3: + years: 63 + months: 8 + 5: + years: 63 + months: 9 + 7: + years: 63 + months: 10 + 9: + years: 63 + months: 11 + 11: + years: 64 + months: 0 + 1951: + 1: + years: 64 + months: 1 + 3: + years: 64 + months: 2 + 5: + years: 64 + months: 3 + 7: + years: 64 + months: 4 + 9: + years: 64 + months: 5 + 11: + years: 64 + months: 6 + 1952: + 1: + years: 64 + months: 7 + 3: + years: 64 + months: 8 + 5: + years: 64 + months: 9 + 7: + years: 64 + months: 10 + 9: + years: 64 + months: 11 + 11: + years: 65 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 + note: Increase of FRA accelerated with exemption (Vertrauensschutz). + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1939: + 12: + years: 60 + months: 0 + 1940: + 1: + years: 60 + months: 1 + 2: + years: 60 + months: 2 + 3: + years: 60 + months: 3 + 4: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 6: + years: 60 + months: 6 + 7: + years: 60 + months: 7 + 8: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 10: + years: 60 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 61 + months: 0 + 1941: + 1: + years: 61 + months: 1 + 2: + years: 61 + months: 2 + 3: + years: 61 + months: 3 + 4: + years: 61 + months: 4 + 5: + years: 61 + months: 5 + 6: + years: 61 + months: 6 + 7: + years: 61 + months: 7 + 8: + years: 61 + months: 8 + 9: + years: 61 + months: 9 + 10: + years: 61 + months: 10 + 11: + years: 61 + months: 11 + 12: + years: 62 + months: 0 + 1942: + 1: + years: 62 + months: 1 + 2: + years: 62 + months: 2 + 3: + years: 62 + months: 3 + 4: + years: 62 + months: 4 + 5: + years: 62 + months: 5 + 6: + years: 62 + months: 6 + 7: + years: 62 + months: 7 + 8: + years: 62 + months: 8 + 9: + years: 62 + months: 9 + 10: + years: 62 + months: 10 + 11: + years: 62 + months: 11 + 12: + years: 63 + months: 0 + 1943: + 1: + years: 63 + months: 1 + 2: + years: 63 + months: 2 + 3: + years: 63 + months: 3 + 4: + years: 63 + months: 4 + 5: + years: 63 + months: 5 + 6: + years: 63 + months: 6 + 7: + years: 63 + months: 7 + 8: + years: 63 + months: 8 + 9: + years: 63 + months: 9 + 10: + years: 63 + months: 10 + 11: + years: 63 + months: 11 + 12: + years: 64 + months: 0 + 1944: + 1: + years: 64 + months: 1 + 2: + years: 64 + months: 2 + 3: + years: 64 + months: 3 + 4: + years: 64 + months: 4 + 5: + years: 64 + months: 5 + 6: + years: 64 + months: 6 + 7: + years: 64 + months: 7 + 8: + years: 64 + months: 8 + 9: + years: 64 + months: 9 + 10: + years: 64 + months: 10 + 11: + years: 64 + months: 11 + 12: + years: 65 + months: 0 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. +altersgrenze_vorzeitig: + name: + de: Einheitliche Altersgrenze für vorzeitigen Bezug der Altersrente für Frauen. + en: Uniform early retirement age for women. + description: + de: >- + § 237a SGB VI + Frühestmögliches Alter ab dem die Altersrente für Frauen bezogen werden kann + (mit Abschlägen). + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + en: >- + § 237a SGB VI + Earliest possible age to receive pension for women (with deductions). + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 60.0 + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: >- + Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. See + `altersgrenze_vorzeitig_gestaffelt`. + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 + note: Increase of ERA was revoked. + value: 60.0 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. +altersgrenze_vorzeitig_gestaffelt: + name: + de: Gestaffelte Altersgrenze für vorzeitigen Bezug der Altersrente für Frauen. + en: Staggered early retirement age for women. + description: + de: >- + § 237a SGB VI + Frühestmögliches Alter ab dem die Altersrente für Frauen bezogen werden kann + (mit Abschlägen). + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + en: >- + § 237a SGB VI + Earliest possible age to receive pension for women (with deductions). + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1948: + 12: + years: 60 + months: 0 + 1949: + 1: + years: 60 + months: 1 + 3: + years: 60 + months: 2 + 5: + years: 60 + months: 3 + 7: + years: 60 + months: 4 + 9: + years: 60 + months: 5 + 11: + years: 60 + months: 6 + 1950: + 1: + years: 60 + months: 7 + 3: + years: 60 + months: 8 + 5: + years: 60 + months: 9 + 7: + years: 60 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 61 + months: 0 + 1951: + 1: + years: 61 + months: 1 + 3: + years: 61 + months: 2 + 5: + years: 61 + months: 3 + 7: + years: 61 + months: 4 + 9: + years: 61 + months: 5 + 11: + years: 61 + months: 6 + 1952: + 1: + years: 61 + months: 7 + 3: + years: 61 + months: 8 + 5: + years: 61 + months: 9 + 7: + years: 61 + months: 10 + 9: + years: 61 + months: 11 + 11: + years: 62 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 + note: Increase of ERA was revoked. See `altersgrenze_vorzeitig`. diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/anspruch.yaml" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/anspruch.yaml" new file mode 100644 index 0000000000..7b9ed877d5 --- /dev/null +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/anspruch.yaml" @@ -0,0 +1,42 @@ +--- +kohorte_abschaffung: + name: + de: Kohorte Abschaffung Rente für Frauen + en: Cohort abolishment pension for women + description: + de: >- + Kohorte, ab der die Rente für Frauen abgeschafft ist. + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + en: >- + Cohort from which pension for women has been abolished + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + unit: Years + reference_period: null + type: scalar + 1997-12-16: + reference: § 237a SGB VI, Rentenreformgesetz 1999. BGBl. I 1997 S. 2998 + value: 1952 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. +mindestpflichtbeitragsjahre_ab_alter_40: + name: + de: Mindestpflichbeitragsjahre ab 40 für Rente für Frauen + en: Minimum contribution since 40 pension for women. + description: + de: >- + Mindestpflichbeitragsjahre, nach dem 40. Lebensjahr, + die für Rente für Frauen berechtigt. + § 237a SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + en: >- + Minimum number of contribution years starting at age 40 required to be eligible + for pension for women. + § 237a SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/237a.html + unit: Years + reference_period: null + type: scalar + 1950-01-01: + value: 10 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index f90b9ce441..a08e185ca3 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -3,190 +3,55 @@ Revoked for birth cohorts after 1951. """ -from ttsim import policy_function +from __future__ import annotations - -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: - """Full retirement age (FRA) for women. - - FRA is the same for each birth cohort. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age for women. - - """ - - return ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"] +from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( - start_date="1989-12-18", leaf_name="altersgrenze", vectorization_strategy="loop" + start_date="1989-12-18", + end_date="2017-12-31", + leaf_name="altersgrenze", ) def altersgrenze_mit_staffelung( geburtsjahr: int, geburtsmonat: int, - ges_rente_params: dict, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Full retirement age (FRA) for women. FRA differs by birth cohort. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age for women. - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_für_frauen_abschlagsfrei"][geburtsjahr][ - geburtsmonat - ] - - return out - - -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age - """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] + return altersgrenze_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract + ] @policy_function( start_date="1989-12-18", end_date="1996-09-26", leaf_name="altersgrenze_vorzeitig", - vectorization_strategy="loop", ) def altersgrenze_vorzeitig_mit_staffelung( geburtsjahr: int, geburtsmonat: int, - ges_rente_params: dict, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Early retirement age (ERA) for Renten für Frauen. ERA depends on birth year and month. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_für_frauen_vorzeitig"][geburtsjahr][ - geburtsmonat - ] - - return out - - -@policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung_nach_1996(ges_rente_params: dict) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age - """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return ges_rente_params["altersgrenze_für_frauen_vorzeitig"] + return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract + ] @policy_function(end_date="1997-12-15", leaf_name="grundsätzlich_anspruchsberechtigt") @@ -194,7 +59,7 @@ def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( weiblich: bool, sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, pflichtsbeitragsjahre_ab_alter_40: float, - ges_rente_params: dict, + mindestpflichtbeitragsjahre_ab_alter_40: int, ) -> bool: """Eligibility for Altersrente für Frauen (pension for women). @@ -202,46 +67,27 @@ def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( Policy becomes inactive in 2018 because then all potential beneficiaries have reached the normal retirement age. - - Parameters - ---------- - weiblich - See basic input variable :ref:`weiblich <weiblich>`. - sozialversicherung__rente__wartezeit_15_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` - pflichtsbeitragsjahre_ab_alter_40 - See basic input variable :ref:`pflichtsbeitragsjahre_ab_alter_40 - <pflichtsbeitragsjahre_ab_alter_40>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Eligibility as bool. - """ - out = ( + return ( weiblich and sozialversicherung__rente__wartezeit_15_jahre_erfüllt - and pflichtsbeitragsjahre_ab_alter_40 - > ges_rente_params["rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40"] + and pflichtsbeitragsjahre_ab_alter_40 > mindestpflichtbeitragsjahre_ab_alter_40 ) - return out - @policy_function( start_date="1997-12-16", end_date="2017-12-31", leaf_name="grundsätzlich_anspruchsberechtigt", ) -def grundsätzlich_anspruchsberechtigt_mit_geburtsjahr_prüfung( +def grundsätzlich_anspruchsberechtigt_mit_prüfung_geburtsjahr( weiblich: bool, sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, pflichtsbeitragsjahre_ab_alter_40: float, geburtsjahr: int, - ges_rente_params: dict, + kohorte_abschaffung: int, + mindestpflichtbeitragsjahre_ab_alter_40: int, ) -> bool: """Eligibility for Altersrente für Frauen (pension for women). @@ -250,32 +96,11 @@ def grundsätzlich_anspruchsberechtigt_mit_geburtsjahr_prüfung( Wartezeit 15 years, contributions for 10 years after age 40, being a woman. Policy becomes inactive in 2018 because then all potential beneficiaries have reached the normal retirement age. - - Parameters - ---------- - weiblich - See basic input variable :ref:`weiblich <weiblich>`. - sozialversicherung__rente__wartezeit_15_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` - pflichtsbeitragsjahre_ab_alter_40 - See basic input variable :ref:`pflichtsbeitragsjahre_ab_alter_40 <pflichtsbeitragsjahre_ab_alter_40>`. - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Eligibility as bool. - """ - out = ( + return ( weiblich and sozialversicherung__rente__wartezeit_15_jahre_erfüllt - and pflichtsbeitragsjahre_ab_alter_40 - > ges_rente_params["rente_für_frauen_mindestpflichtbeitragsjahre_ab_alter_40"] - and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_frauen"] + and pflichtsbeitragsjahre_ab_alter_40 > mindestpflichtbeitragsjahre_ab_alter_40 + and geburtsjahr < kohorte_abschaffung ) - - return out diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" index 89ec4e5dad..0adeba9302 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py new file mode 100644 index 0000000000..74fd90e558 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py @@ -0,0 +1,158 @@ +from ttsim import RoundingSpec, policy_function + + +@policy_function( + end_date="2016-12-31", + rounding_spec=RoundingSpec( + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + ), + leaf_name="bruttorente_m", +) +def bruttorente_m_mit_harter_hinzuverdienstgrenze( + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + bruttorente_basisbetrag_m: float, + hinzuverdienstgrenze: float, +) -> float: + """Pension benefits after earnings test for early retirees. + + If earnings are above an earnings limit, the pension is fully deducted. + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + if ( + alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) or ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + <= hinzuverdienstgrenze + ): + out = bruttorente_basisbetrag_m + else: + out = 0.0 + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", + leaf_name="bruttorente_m", + rounding_spec=RoundingSpec( + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + ), +) +def bruttorente_m_mit_hinzuverdienstdeckel( + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + differenz_bruttolohn_hinzuverdienstdeckel_m: float, + zahlbetrag_ohne_deckel_m: float, +) -> float: + """Pension benefits after earnings test for early retirees. + + If sum of earnings and pension is larger than the highest income in the last 15 + years, the pension is fully deducted (Hinzuverdienstdeckel). + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + if ( + differenz_bruttolohn_hinzuverdienstdeckel_m > 0 + and alter + <= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + and einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + > 0 + ): + out = max( + zahlbetrag_ohne_deckel_m - differenz_bruttolohn_hinzuverdienstdeckel_m, + 0.0, + ) + else: + out = zahlbetrag_ohne_deckel_m + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def zahlbetrag_ohne_deckel_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + alter: int, + sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + bruttorente_basisbetrag_m: float, + differenz_bruttolohn_hinzuverdienstgrenze_m: float, + hinzuverdienstgrenze: float, + abzugsrate_hinzuverdienst: float, +) -> float: + """Pension benefits after earnings test without accounting for the earnings cap + (Hinzuverdienstdeckel). + """ + # TODO (@MImmesberger): Use age with monthly precision. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + # No deduction because of age or low earnings + if ( + alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + ) or ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + <= hinzuverdienstgrenze + ): + out = bruttorente_basisbetrag_m + # Basis deduction of 40% + else: + out = max( + bruttorente_basisbetrag_m + - abzugsrate_hinzuverdienst * differenz_bruttolohn_hinzuverdienstgrenze_m, + 0.0, + ) + + return out + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def differenz_bruttolohn_hinzuverdienstgrenze_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + hinzuverdienstgrenze: float, +) -> float: + """Earnings that are subject to pension deductions.""" + return max( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + - hinzuverdienstgrenze, + 0.0, + ) + + +@policy_function( + start_date="2017-01-01", + end_date="2022-12-31", +) +def differenz_bruttolohn_hinzuverdienstdeckel_y( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + zahlbetrag_ohne_deckel_y: float, + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: float, +) -> float: + """Income above the earnings cap (Hinzuverdienstdeckel).""" + return max( + zahlbetrag_ohne_deckel_y + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y + - höchster_bruttolohn_letzte_15_jahre_vor_rente_y, + 0.0, + ) + + +@policy_function( + start_date="2023-01-01", + leaf_name="bruttorente_m", + rounding_spec=RoundingSpec( + base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + ), +) +def bruttorente_m_ohne_einkommensanrechnung( + bruttorente_basisbetrag_m: float, +) -> float: + """Public pension claim before Grundrentenzuschlag.""" + return bruttorente_basisbetrag_m diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml new file mode 100644 index 0000000000..1fa8345e3b --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml @@ -0,0 +1,47 @@ +--- +abzugsrate_hinzuverdienst: + name: + de: Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze + en: Deduction rate for additional earnings during early retirement + description: + de: >- + Abzugsrate für Hinzuverdienst vor der Regelaltersgrenze + § 34 SGB VI; Artikel 1 G. v. 08.12.2016 BGBl. I S. 2838 + en: >- + Deduction rate for additional earnings during early retirement + § 34 SGB VI; Artikel 1 G. v. 08.12.2016 BGBl. I S. 2838 + unit: Years + reference_period: null + type: scalar + 2017-07-01: + value: 0.4 + 2023-01-01: + note: Revoked in 2023. +hinzuverdienstgrenze: + name: + de: Hinzuverdienstgrenze vor der Regelaltersgrenze + en: Additional earnings threshold during early retirement + description: + de: >- + § 34 SGB VI, Hinzuverdienstgrenze vor der Regelaltersgrenze + en: >- + § 34 SGB VI, additional earnings threshold during early retirement + unit: Euros + reference_period: Year + type: scalar + # Values need to be fixed + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/808 + 2002-01-01: + value: 350.0 + 2008-01-01: + value: 400.0 + 2013-01-01: + value: 450.0 + 2017-01-01: + value: 6300.0 + 2020-01-01: + value: 44590.0 + 2021-01-01: + value: 46060.0 + 2023-01-01: + note: Revoked in 2023. diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py index 738cb389ab..c2e5d75be5 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py @@ -1,8 +1,12 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @policy_input() def höchster_bruttolohn_letzte_15_jahre_vor_rente_y() -> float: - """Highest gross income from regular employment in the last 15 years before pension benefit claiming. Relevant to determine pension benefit deductions for retirees in early retirement.""" + """Highest gross income from regular employment in the last 15 years before pension + benefit claiming. Relevant to determine pension benefit deductions for retirees in + early retirement.""" diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/altersgrenze.yaml" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/altersgrenze.yaml" new file mode 100644 index 0000000000..00c029a23d --- /dev/null +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/altersgrenze.yaml" @@ -0,0 +1,358 @@ +--- +altersgrenze: + name: + de: Einheitlich Altersgrenze für langjährig Versicherte - abschlagsfrei + en: Uniform age threshold for long term insured without deductions + description: + de: >- + Eintrittsalter für langjährig Versicherte - abschlagsfrei + § 236 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/242-altersrente-fuer-langjaehrig-versicherte-altersgrenzen.html + en: >- + Entry age for long term insured (35 insurance years) without deductions (FRA) + § 236 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/242-altersrente-fuer-langjaehrig-versicherte-altersgrenzen.html + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 63.0 + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of full retirement age from 63 to 65 for birth cohort 1938-1943. +altersgrenze_gestaffelt: + name: + de: Gestaffelte Altersgrenze für langjährig Versicherte - abschlagsfrei + en: Staggered age threshold for long term insured without deductions + description: + de: >- + Eintrittsalter für langjährig Versicherte - abschlagsfrei + § 236 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/242-altersrente-fuer-langjaehrig-versicherte-altersgrenzen.html + en: >- + Entry age for long term insured (35 insurance years) without deductions (FRA) + § 236 SGB VI + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/242-altersrente-fuer-langjaehrig-versicherte-altersgrenzen.html + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of full retirement age from 63 to 65 for birth cohort 1938-1943. + first_year_to_consider: 1900 + last_year_to_consider: 2100 + 1937: + 12: + years: 63 + months: 0 + 1938: + 1: + years: 63 + months: 1 + 5: + years: 63 + months: 2 + 9: + years: 63 + months: 3 + 1939: + 1: + years: 63 + months: 4 + 5: + years: 63 + months: 5 + 9: + years: 63 + months: 6 + 1940: + 1: + years: 63 + months: 7 + 5: + years: 63 + months: 8 + 9: + years: 63 + months: 9 + 1941: + 1: + years: 63 + months: 10 + 5: + years: 63 + months: 11 + 9: + years: 64 + months: 0 + 1942: + 1: + years: 64 + months: 1 + 3: + years: 64 + months: 2 + 5: + years: 64 + months: 3 + 7: + years: 64 + months: 4 + 9: + years: 64 + months: 5 + 11: + years: 64 + months: 6 + 1943: + 1: + years: 64 + months: 7 + 3: + years: 64 + months: 8 + 5: + years: 64 + months: 9 + 7: + years: 64 + months: 10 + 9: + years: 64 + months: 11 + 11: + years: 65 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: FRA increase accelerated. + first_year_to_consider: 1900 + last_year_to_consider: 2100 + 1936: + 12: + years: 63 + months: 0 + 1937: + 1: + years: 63 + months: 1 + 2: + years: 63 + months: 2 + 3: + years: 63 + months: 3 + 4: + years: 63 + months: 4 + 5: + years: 63 + months: 5 + 6: + years: 63 + months: 6 + 7: + years: 63 + months: 7 + 8: + years: 63 + months: 8 + 9: + years: 63 + months: 9 + 10: + years: 63 + months: 10 + 11: + years: 63 + months: 11 + 12: + years: 64 + months: 0 + 1938: + 1: + years: 64 + months: 1 + 2: + years: 64 + months: 2 + 3: + years: 64 + months: 3 + 4: + years: 64 + months: 4 + 5: + years: 64 + months: 5 + 6: + years: 64 + months: 6 + 7: + years: 64 + months: 7 + 8: + years: 64 + months: 8 + 9: + years: 64 + months: 9 + 10: + years: 64 + months: 10 + 11: + years: 64 + months: 11 + 12: + years: 65 + months: 0 + 2007-04-20: + reference: RV-Altersgrenzenanpassungsgesetz 2007. BGBl. I S. 554 2007 + note: Increase of FRA from 65 to 67 for birth cohort 1949-1963. + first_year_to_consider: 1900 + last_year_to_consider: 2100 + 1948: + 12: + years: 65 + months: 0 + 1949: + 1: + years: 65 + months: 1 + 2: + years: 65 + months: 2 + 3: + years: 65 + months: 3 + 1950: + 1: + years: 65 + months: 4 + 1951: + 1: + years: 65 + months: 5 + 1952: + 1: + years: 65 + months: 6 + 1953: + 1: + years: 65 + months: 7 + 1954: + 1: + years: 65 + months: 8 + 1955: + 1: + years: 65 + months: 9 + 1956: + 1: + years: 65 + months: 10 + 1957: + 1: + years: 65 + months: 11 + 1958: + 1: + years: 66 + months: 0 + 1959: + 1: + years: 66 + months: 2 + 1960: + 1: + years: 66 + months: 4 + 1961: + 1: + years: 66 + months: 6 + 1962: + 1: + years: 66 + months: 8 + 1963: + 1: + years: 66 + months: 10 + 1964: + 1: + years: 67 + months: 0 +altersgrenze_vorzeitig: + name: + de: >- + Einheitliche Altersgrenze für vorzeitigen Bezug der Altersrente für langjährig + Versicherte. + en: Uniform age threshold for early retirement for long-term employed. + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für langjährig Versicherte + bezogen werden kann (mit Abschlägen). + § 236 SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/236.html + en: >- + Earliest possible age to receive pension for long term insured (with deductions). + § 236 SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/236.html + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 63.0 + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: >- + Early retirement age decreased from 63 to 62 starting from birth cohort 1944. See + `altersgrenze_vorzeitig_gestaffelt`. + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: ERA back to 63. + value: 63.0 + 1997-12-16: + reference: Rentenreformgesetz 1999. BGBl. I S. 2998 1997 + note: ERA back to 62. + value: 62.0 + 2007-04-20: + reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 + note: ERA back to 63. + value: 63.0 +altersgrenze_vorzeitig_gestaffelt: + name: + de: >- + Gestaffelte Altersgrenze für vorzeitigen Bezug der Altersrente für langjährig + Versicherte. + en: Staggered age threshold for early retirement for long-term employed. + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für langjährig Versicherte + bezogen werden kann (mit Abschlägen). + § 236 SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/236.html + en: >- + Earliest possible age to receive pension for long term insured (with deductions). + § 236 SGB VI + https://www.sozialgesetzbuch-sgb.de/sgbvi/236.html + unit: Years + reference_period: null + type: year_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Early retirement age decreased from 63 to 62 starting from birth cohort 1944. + first_year_to_consider: 1900 + last_year_to_consider: 2100 + 1943: + years: 63 + months: 0 + 1944: + years: 62 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: ERA back to 63. See `altersgrenze_vorzeitig`. diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index ec45403e82..fc54d04f5d 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -1,247 +1,52 @@ """Pathway for the long-term insured.""" -from ttsim import policy_function +from __future__ import annotations - -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: - """ - Full retirement age (FRA) for long term insured. - - FRA is the same for each birth year. - - Calculate the age, at which a long term insured person (at least 35 years) is - eligible to claim the full pension (without deductions). This pension scheme allows - for early retirement (e.g. age 63) with deductions. Hence this threshold is needed - as reference for calculating the zugangsfaktor. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age for long term insured. - - """ - return ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"] +from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( start_date="1989-12-18", - end_date="2007-04-19", leaf_name="altersgrenze", - vectorization_strategy="loop", -) -def altersgrenze_mit_staffelung_nach_geburtsmonat( - geburtsjahr: int, - geburtsmonat: int, - ges_rente_params: dict, -) -> float: - """ - Full retirement age (FRA) for long term insured. - - FRA depends on birth year and month. - - Calculate the age, at which a long term insured person (at least 35 years) is - eligible to claim the full pension (without deductions). This pension scheme allows - for early retirement (e.g. age 63) with deductions. Hence this threshold is needed - as reference for calculating the zugangsfaktor. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age (without deductions) for long term insured. - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - geburtsjahr - ][geburtsmonat] - - return out - - -@policy_function( - start_date="2007-04-20", leaf_name="altersgrenze", vectorization_strategy="loop" ) -def altersgrenze_mit_staffelung_nach_geburtsjahr( +def altersgrenze_gestaffelt_ab_1989( geburtsjahr: int, geburtsmonat: int, - ges_rente_params: dict, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """ Full retirement age (FRA) for long term insured. - FRA depends on birth year. - Calculate the age, at which a long term insured person (at least 35 years) is eligible to claim the full pension (without deductions). This pension scheme allows for early retirement (e.g. age 63) with deductions. Hence this threshold is needed as reference for calculating the zugangsfaktor. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age (without deductions) for long term insured. """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_abschlagsfrei"][ - geburtsjahr - ][geburtsmonat] - - return out + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: - """Early retirement age (ERA) for Rente für langjährig Versicherte. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age - - """ - - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] + return altersgrenze_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract + ] @policy_function( start_date="1989-12-18", end_date="1996-09-26", leaf_name="altersgrenze_vorzeitig", - vectorization_strategy="loop", ) -def altersgrenze_vorzeitig_mit_staffelung( +def altersgrenze_vorzeitig_gestaffelt_ab_1989_bis_1996( geburtsjahr: int, - ges_rente_params: dict, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: - """Early retirement age (ERA) for Renten für Frauen. - - ERA depends on birth year and month. + """Early retirement age (ERA) for Renten für langjährig Versicherte. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age - - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "entry_age_old_regime" - ] - else: - out = ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"][ - "entry_age_new_regime" - ] - - return out - - -@policy_function(start_date="1996-09-27", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung_nach_1996(ges_rente_params: dict) -> float: - """Early retirement age (ERA) for Rente für langjährig Versicherte. - - ERA does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age """ - return ges_rente_params["altersgrenze_langj_versicherte_vorzeitig"] + return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ + geburtsjahr - altersgrenze_vorzeitig_gestaffelt.base_to_subtract + ] @policy_function() @@ -251,16 +56,5 @@ def grundsätzlich_anspruchsberechtigt( """Determining the eligibility for Altersrente für langjährig Versicherte (pension for long-term insured). Wartezeit 35 years and crossing the age threshold. - - Parameters - ---------- - sozialversicherung__rente__wartezeit_35_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_35_jahre_erfüllt`. - - Returns - ------- - Eligibility as bool. - """ - return sozialversicherung__rente__wartezeit_35_jahre_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/altersgrenze.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/altersgrenze.yaml new file mode 100644 index 0000000000..dea8f05a12 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/altersgrenze.yaml @@ -0,0 +1,115 @@ +--- +altersgrenze: + name: + de: Einheitliches Eintrittsalter für Regelaltersrente + en: Uniform entry age for receiving regelaltersrente - normal retirement age (NRA) + description: + de: >- + § 35 Satz 2 SGB VI + Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in + Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher + oder niedriger, sofern keine Sonderregelungen gelten. + en: >- + § 35 Satz 2 SGB VI + Normal retirement age from which pension can be received. If retirement benefits + are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement + is higher or lower unless special regulations apply. + unit: Years + reference_period: null + type: scalar + 1957-02-26: + reference: Rentenreformgesetz 1957 BGBl. I S. 88 + value: 65.0 + 2007-04-19: + note: >- + Increase of the early retirement age from 65 to 67 for birth cohort 1947-1964. See + `altersgrenze_gestaffelt`. + 2031-01-01: + value: 67.0 + note: Phase-in period is over +altersgrenze_gestaffelt: + name: + de: Gestaffeltes Eintrittsalter für Regelaltersrente nach Geburtsjahr + en: Staggered normal retirement age (NRA) for Regelaltersrente by birth year + description: + de: >- + § 35 Satz 2 SGB VI + Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in + Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher + oder niedriger, sofern keine Sonderregelungen gelten. + en: >- + § 35 Satz 2 SGB VI + Normal retirement age from which pension can be received. If retirement benefits + are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement + is higher or lower unless special regulations apply. + unit: Years + reference_period: null + type: year_based_phase_inout_of_age_thresholds + 2007-04-20: + reference: RV-Altersgrenzenanpassungsgesetz 20.04.2007. BGBl. I S. 554 + note: >- + Increase of the early retirement age from 65 to 67 for birth cohort 1947-1964. + Vertrauensschutz (Art. 56) applies for birth cohorts before 1955 who were in + Altersteilzeit before January 1st, 2007 or received "Anpassungsgeld für + entlassene Arbeitnehmer des Bergbaus". + first_year_to_consider: 1900 + last_year_to_consider: 2031 + 1946: + years: 65 + months: 0 + 1947: + years: 65 + months: 1 + 1948: + years: 65 + months: 2 + 1949: + years: 65 + months: 3 + 1950: + years: 65 + months: 4 + 1951: + years: 65 + months: 5 + 1952: + years: 65 + months: 6 + 1953: + years: 65 + months: 7 + 1954: + years: 65 + months: 8 + 1955: + years: 65 + months: 9 + 1956: + years: 65 + months: 10 + 1957: + years: 65 + months: 11 + 1958: + years: 66 + months: 0 + 1959: + years: 66 + months: 2 + 1960: + years: 66 + months: 4 + 1961: + years: 66 + months: 6 + 1962: + years: 66 + months: 8 + 1963: + years: 66 + months: 10 + 1964: + years: 67 + months: 0 + 2031-01-01: + note: last cohort with entry age < 67 will have passed that age diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index abf68b30a4..377b70fee3 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -1,92 +1,33 @@ """Regular pathway.""" -from ttsim import policy_function +from __future__ import annotations +from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function -@policy_function(end_date="2007-04-19", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: - """Normal retirement age (NRA). - NRA is the same for every birth cohort. - - The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does - not serve as reference for calculating deductions. However, it serves as reference - for calculating gains in the Zugangsfakor in case of later retirement. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - - Returns - ------- - Normal retirement age (NRA). - - """ - return ges_rente_params["regelaltersgrenze"] +@policy_function(start_date="2007-04-20", end_date="2030-12-31") +def altersgrenze( + geburtsjahr: int, altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue +) -> float: + """Normal retirement age (NRA) during the phase-in period. - -@policy_function( - start_date="2007-04-20", leaf_name="altersgrenze", vectorization_strategy="loop" -) -def altersgrenze_mit_staffelung(geburtsjahr: int, ges_rente_params: dict) -> float: - """Normal retirement age (NRA). - - NRA differs by birth cohort. + Just a parameter otherwise. The Regelaltersrente cannot be claimed earlier than at the NRA, i.e. the NRA does not serve as reference for calculating deductions. However, it serves as reference for calculating gains in the Zugangsfakor in case of later retirement. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - - Returns - ------- - Normal retirement age (NRA). - """ - if geburtsjahr <= ges_rente_params["regelaltersgrenze"]["max_birthyear_old_regime"]: - out = ges_rente_params["regelaltersgrenze"]["entry_age_old_regime"] - elif ( - geburtsjahr >= ges_rente_params["regelaltersgrenze"]["min_birthyear_new_regime"] - ): - out = ges_rente_params["regelaltersgrenze"]["entry_age_new_regime"] - else: - out = ges_rente_params["regelaltersgrenze"][geburtsjahr] - - return out + return altersgrenze_gestaffelt.values_to_look_up[ + geburtsjahr - altersgrenze_gestaffelt.base_to_subtract + ] @policy_function() def grundsätzlich_anspruchsberechtigt( sozialversicherung__rente__mindestwartezeit_erfüllt: bool, ) -> bool: - """Determining the eligibility for the Regelaltersrente. - - Parameters - ---------- - sozialversicherung__rente__mindestwartezeit_erfüllt - See :func:`sozialversicherung__rente__mindestwartezeit_erfüllt`. - - Returns - ------- - Eligibility as bool. - - """ + """Determining the eligibility for the Regelaltersrente.""" return sozialversicherung__rente__mindestwartezeit_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml new file mode 100644 index 0000000000..955d6d50e6 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml @@ -0,0 +1,397 @@ +--- +zugangsfaktor_veränderung_pro_jahr: + name: + de: Veränderung des Zugangsfaktors pro Jahr relativ zur Regelaltersgrenze + en: Change in Zugangsfaktor per year relative to the normal retirement age + description: + de: >- + §77 Abs. 2 Nr. 2 SGB VI + Faktor um den sich der Zugangsfaktor für die staatliche Rente erhöht/senkt für + jedes Jahr, das länger/kürzer gearbeitet wird + Achtung: Es gibt viele Ausnahmen von dieser Regel! + en: >- + §77 Abs. 2 Nr. 2 SGB VI + Factor with which the Zugangsfaktor / "access factor" for receiving the statutory + pension is increased/decreased for each year of less/more work. + Careful: There are many exceptions to this rule! + unit: null + reference_period: Year + type: dict + 2001-01-01: + vorzeitiger_renteneintritt: 0.036 + späterer_renteneintritt: 0.06 +beitragspflichtiges_durchschnittsentgelt_y: + name: + de: Beitragspflichtiges Durchschnittsentgelt aller Versicherten + en: Mean relevant wage of all insured individuals + description: + de: >- + Anlage 1 SGB VI, Durchschnittsentgelt aller Versicherten im Sinne der deutschen + Sozialversicherung. Dieses wird benötigt zur Berechnung der Entgeltpunkte. + en: >- + Anlage 1 SGB VI, Mean wage of all insured people in the sense of the German social + insurance, which is needed to calculate the Entgeltpunkte. + unit: Euros + reference_period: Year + type: scalar + 2005-01-01: + value: 29202 + 2006-01-01: + value: 29494 + 2007-01-01: + value: 29951 + 2008-01-01: + value: 30625 + 2009-01-01: + value: 30506 + 2010-01-01: + value: 31144 + 2011-01-01: + value: 32100 + 2012-01-01: + value: 33002 + 2013-01-01: + value: 33659 + 2014-01-01: + value: 34514 + 2015-01-01: + value: 35363 + 2016-01-01: + value: 36187 + 2017-01-01: + value: 37077 + 2018-01-01: + value: 38212 + reference: V. v. 17.12.2019 BGBl. I S. 2848. + 2019-01-01: + value: 39301 + reference: V. v. 30.11.2020 BGBl. I S. 2612. + 2020-01-01: + value: 39167 + reference: §1 V. v. 30.11.2021, BGBl. I S. 5044. + 2021-01-01: + value: 40463 + reference: §3 V. v. 28.11.2022 BGBl. I S. 2128 (Nr. 47). + 2022-01-01: + value: 42053 + reference: §3 V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2023-01-01: + value: 44732 + reference: §3 V. v. 25.11.2024 BGBl. 2024 I Nr. 365. + 2024-01-01: + value: 45358 + reference: §3 V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + note: Vorläufiges Durchschnittsentgelt + 2025-01-01: + value: 50493 + reference: §3 V. v. 25.11.2024 BGBl. 2024 I Nr. 365. + note: Vorläufiges Durchschnittsentgelt +umrechnung_entgeltpunkte_beitrittsgebiet: + name: + de: Umrechnung der Beitragsbemessungsgrundlagen des Beitrittgebietes + en: Conversion of the Beitragsbemessungsgrundlage in former GDR + description: + de: >- + §256a SGB VI and Anlage 10 SGB VI + Für die Berechnung der Entgeltpunkte wird das Einkommen im "Beitrittsgebiet" um + diesen Faktor erhöht. + en: >- + §256a SGB VI and Anlage 10 SGB VI + To calculate the Entgeltpunkte, income in the former GDR is increased by this + factor. + unit: null + reference_period: null + type: scalar + 1945-01-01: + value: 1.0000 + 1950-01-01: + value: 0.9931 + 1951-01-01: + value: 1.0502 + 1952-01-01: + value: 1.0617 + 1953-01-01: + value: 1.0458 + 1954-01-01: + value: 1.0185 + 1955-01-01: + value: 1.0656 + 1956-01-01: + value: 1.1029 + 1957-01-01: + value: 1.1081 + 1958-01-01: + value: 1.0992 + 1959-01-01: + value: 1.0838 + 1960-01-01: + value: 1.1451 + 1961-01-01: + value: 1.2374 + 1962-01-01: + value: 1.3156 + 1963-01-01: + value: 1.3667 + 1964-01-01: + value: 1.4568 + 1965-01-01: + value: 1.5462 + 1966-01-01: + value: 1.6018 + 1967-01-01: + value: 1.5927 + 1968-01-01: + value: 1.6405 + 1969-01-01: + value: 1.7321 + 1970-01-01: + value: 1.8875 + 1971-01-01: + value: 2.0490 + 1972-01-01: + value: 2.1705 + 1973-01-01: + value: 2.3637 + 1974-01-01: + value: 2.5451 + 1975-01-01: + value: 2.6272 + 1976-01-01: + value: 2.7344 + 1977-01-01: + value: 2.8343 + 1978-01-01: + value: 2.8923 + 1979-01-01: + value: 2.9734 + 1980-01-01: + value: 3.1208 + 1981-01-01: + value: 3.1634 + 1982-01-01: + value: 3.2147 + 1983-01-01: + value: 3.2627 + 1984-01-01: + value: 3.2885 + 1985-01-01: + value: 3.3129 + 1986-01-01: + value: 3.2968 + 1987-01-01: + value: 3.2548 + 1988-01-01: + value: 3.2381 + 1989-01-01: + value: 3.2330 + 1990-01-01: + value: 3.0707 + 1990-06-01: + value: 2.3473 + 1991-01-01: + value: 1.7235 + 1992-01-01: + value: 1.4393 + 1993-01-01: + value: 1.3197 + 1994-01-01: + value: 1.2687 + 1995-01-01: + value: 1.2317 + 1996-01-01: + value: 1.2209 + 1997-01-01: + value: 1.2089 + 1998-01-01: + value: 1.2113 + 1999-01-01: + value: 1.2054 + 2000-01-01: + value: 1.2030 + 2001-01-01: + value: 1.2003 + 2002-01-01: + value: 1.1972 + 2003-01-01: + value: 1.1943 + 2004-01-01: + value: 1.1932 + 2005-01-01: + value: 1.1827 + 2006-01-01: + value: 1.1827 + 2007-01-01: + value: 1.1841 + 2008-01-01: + value: 1.1857 + 2009-01-01: + value: 1.1712 + 2010-01-01: + value: 1.1726 + 2011-01-01: + value: 1.1740 + 2012-01-01: + value: 1.1785 + 2013-01-01: + value: 1.1762 + 2014-01-01: + value: 1.1665 + 2015-01-01: + value: 1.1502 + 2016-01-01: + value: 1.1415 + 2017-01-01: + value: 1.1374 + 2018-01-01: + value: 1.1339 + 2019-01-01: + value: 1.0840 + 2020-01-01: + value: 1.0700 + 2021-01-01: + value: 1.0560 + 2022-01-01: + value: 1.0420 + 2023-01-01: + value: 1.0280 + 2024-01-01: + value: 1.0140 + 2025-01-01: + value: 1.0000 + note: Umrechnung entfällt. +parameter_rentenwert_nach_wohnort: + name: + de: Rentenwerte alte und neue Bundesländer + en: Pension value old and new federal states + description: + de: >- + statistik-rente.de/drv, § 68 SGB VI + Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für + einen Entgeltpunkt entspricht. + en: >- + statistik-rente.de/drv, § 68 SGB VI + The current pension value expresses the amount of monthly pension paid for one + Entgeltpunkt. + unit: Euros + reference_period: null + type: dict + 1992-01-01: + west: 21.19 + ost: 12.05 + 1992-07-01: + west: 21.80 + ost: 13.59 + 1993-01-01: + updates_previous: true + ost: 14.41 + 1993-07-01: + west: 22.75 + ost: 16.45 + 1994-01-01: + updates_previous: true + ost: 17.05 + 1994-07-01: + west: 23.52 + ost: 17.63 + 1995-01-01: + updates_previous: true + ost: 18.13 + 1995-07-01: + west: 23.64 + ost: 18.58 + 1996-01-01: + updates_previous: true + ost: 19.39 + 1996-07-01: + west: 23.86 + ost: 19.62 + 1997-07-01: + west: 24.26 + ost: 20.71 + 1998-07-01: + west: 24.36 + ost: 20.90 + 1999-07-01: + west: 24.69 + ost: 21.48 + 2000-07-01: + west: 24.84 + ost: 21.61 + 2001-07-01: + west: 25.31 + ost: 22.06 + 2002-07-01: + west: 25.86 + ost: 22.70 + 2003-07-01: + west: 26.13 + ost: 22.97 + 2007-07-01: + west: 26.27 + ost: 23.09 + 2008-07-01: + west: 26.56 + ost: 23.34 + 2009-07-01: + west: 27.2 + ost: 24.13 + 2011-07-01: + west: 27.47 + ost: 24.37 + 2012-07-01: + west: 28.07 + ost: 24.92 + 2013-07-01: + west: 28.14 + ost: 25.74 + 2014-07-01: + west: 28.61 + ost: 26.39 + 2015-07-01: + west: 29.21 + ost: 27.05 + 2016-07-01: + west: 30.45 + ost: 28.66 + 2017-07-01: + west: 31.03 + ost: 29.69 + 2018-07-01: + west: 32.03 + ost: 30.69 + 2019-07-01: + west: 33.05 + ost: 31.89 + 2020-07-01: + west: 34.19 + ost: 33.23 + 2021-07-01: + updates_previous: true + ost: 33.47 + 2022-07-01: + west: 36.02 + ost: 35.52 + 2023-07-01: + note: Rentenwert einheitlich. Siehe `rentenwert`. +rentenwert: + name: + de: Rentenwert (Wert eines Entgeltpunktes). + en: Value of one Entgeltpunkt. + description: + de: >- + statistik-rente.de/drv, § 68 SGB VI + Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für + einen Entgeltpunkt entspricht. + en: >- + statistik-rente.de/drv, § 68 SGB VI + The current pension value expresses the amount of monthly pension paid for one + Entgeltpunkt. + unit: Euros + reference_period: null + type: dict + access_different_date: vorjahr + 2023-07-01: + value: 37.60 + 2024-01-07: + value: 39.32 + reference: V. v. 17.06.2024 BGBl. 2024 I Nr. 194. diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml new file mode 100644 index 0000000000..609e863cb1 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml @@ -0,0 +1,1081 @@ +--- +altersgrenze: + name: + de: Einheitliche Altersgrenze für abschlagsfreie Altersrente wegen Arbeitslosigkeit + en: Uniform age threshold for pension for unemployed (without deductions) + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für Arbeitslose abschlagsfrei + bezogen werden kann. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + en: >- + Earliest possible age to receive pension for unemployed without deductions. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 60.0 + 1989-12-18: + note: >- + Increase of age threshold from 60 to 65 for birth cohort 1941-1952. See + `altersgrenze_gestaffelt`. +altersgrenze_gestaffelt: + name: + de: Gestaffelte Altersgrenze für Altersrente wegen Arbeitslosigkeit (abschlagsfrei) + en: Staggered age threshold for pension for unemployed (without deductions) + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für Arbeitslose abschlagsfrei + bezogen werden kann. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + en: >- + Earliest possible age to receive pension for unemployed without deductions. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of full retirement age from 60 to 65 for birth cohort 1941-1952. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1940: + 12: + years: 60 + months: 0 + 1941: + 1: + years: 60 + months: 1 + 5: + years: 60 + months: 2 + 9: + years: 60 + months: 3 + 1942: + 1: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 9: + years: 60 + months: 6 + 1943: + 1: + years: 60 + months: 7 + 5: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 1944: + 1: + years: 60 + months: 10 + 5: + years: 60 + months: 11 + 9: + years: 61 + months: 0 + 1945: + 1: + years: 61 + months: 1 + 5: + years: 61 + months: 3 + 7: + years: 61 + months: 4 + 9: + years: 61 + months: 5 + 11: + years: 61 + months: 6 + 1946: + 1: + years: 61 + months: 7 + 3: + years: 61 + months: 8 + 5: + years: 61 + months: 9 + 7: + years: 61 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 62 + months: 0 + 1947: + 1: + years: 62 + months: 1 + 3: + years: 62 + months: 2 + 5: + years: 62 + months: 3 + 7: + years: 62 + months: 4 + 9: + years: 62 + months: 5 + 11: + years: 62 + months: 6 + 1948: + 1: + years: 62 + months: 7 + 3: + years: 62 + months: 8 + 5: + years: 62 + months: 9 + 7: + years: 62 + months: 10 + 9: + years: 62 + months: 11 + 11: + years: 63 + months: 0 + 1949: + 1: + years: 63 + months: 1 + 3: + years: 63 + months: 2 + 5: + years: 63 + months: 3 + 7: + years: 63 + months: 4 + 9: + years: 63 + months: 5 + 11: + years: 63 + months: 6 + 1950: + 1: + years: 63 + months: 7 + 3: + years: 63 + months: 8 + 5: + years: 63 + months: 9 + 7: + years: 63 + months: 10 + 9: + years: 63 + months: 11 + 11: + years: 64 + months: 0 + 1951: + 1: + years: 64 + months: 1 + 3: + years: 64 + months: 2 + 5: + years: 64 + months: 3 + 7: + years: 64 + months: 4 + 9: + years: 64 + months: 5 + 11: + years: 64 + months: 6 + 1952: + 1: + years: 64 + months: 7 + 3: + years: 64 + months: 8 + 5: + years: 64 + months: 9 + 7: + years: 64 + months: 10 + 9: + years: 64 + months: 11 + 11: + years: 65 + months: 0 + 1996-07-29: + reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. + note: Increase of full retirement age from 60 to 65 for birth cohort 1937-1952. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1936: + 12: + years: 60 + months: 0 + 1937: + 1: + years: 60 + months: 1 + 2: + years: 60 + months: 2 + 3: + years: 60 + months: 3 + 4: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 6: + years: 60 + months: 6 + 7: + years: 60 + months: 7 + 8: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 10: + years: 60 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 61 + months: 0 + 1938: + 1: + years: 61 + months: 1 + 2: + years: 61 + months: 2 + 3: + years: 61 + months: 3 + 4: + years: 61 + months: 4 + 5: + years: 61 + months: 5 + 6: + years: 61 + months: 6 + 7: + years: 61 + months: 7 + 8: + years: 61 + months: 8 + 9: + years: 61 + months: 9 + 10: + years: 61 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 62 + months: 0 + 1939: + 1: + years: 62 + months: 1 + 2: + years: 62 + months: 2 + 3: + years: 62 + months: 3 + 4: + years: 62 + months: 4 + 5: + years: 62 + months: 5 + 6: + years: 62 + months: 6 + 7: + years: 62 + months: 7 + 8: + years: 62 + months: 8 + 9: + years: 62 + months: 9 + 10: + years: 62 + months: 10 + 11: + years: 62 + months: 11 + 12: + years: 63 + months: 0 + 1940: + 1: + years: 63 + months: 0 + 1949: + 1: + years: 63 + months: 1 + 3: + years: 63 + months: 2 + 5: + years: 63 + months: 3 + 7: + years: 63 + months: 4 + 9: + years: 63 + months: 5 + 11: + years: 63 + months: 6 + 1950: + 1: + years: 63 + months: 7 + 3: + years: 63 + months: 8 + 5: + years: 63 + months: 9 + 7: + years: 63 + months: 10 + 9: + years: 63 + months: 11 + 11: + years: 64 + months: 0 + 1951: + 1: + years: 64 + months: 1 + 3: + years: 64 + months: 2 + 5: + years: 64 + months: 3 + 7: + years: 64 + months: 4 + 9: + years: 64 + months: 5 + 11: + years: 64 + months: 6 + 1952: + 1: + years: 64 + months: 7 + 3: + years: 64 + months: 8 + 5: + years: 64 + months: 9 + 7: + years: 64 + months: 10 + 9: + years: 64 + months: 11 + 11: + years: 65 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: Increase of full retirement age from 60 to 65 for birth cohort 1937-1941. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1936: + 12: + years: 60 + months: 0 + 1937: + 1: + years: 60 + months: 1 + 2: + years: 60 + months: 2 + 3: + years: 60 + months: 3 + 4: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 6: + years: 60 + months: 6 + 7: + years: 60 + months: 7 + 8: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 10: + years: 60 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 61 + months: 0 + 1938: + 1: + years: 61 + months: 1 + 2: + years: 61 + months: 2 + 3: + years: 61 + months: 3 + 4: + years: 61 + months: 4 + 5: + years: 61 + months: 5 + 6: + years: 61 + months: 6 + 7: + years: 61 + months: 7 + 8: + years: 61 + months: 8 + 9: + years: 61 + months: 9 + 10: + years: 61 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 62 + months: 0 + 1939: + 1: + years: 62 + months: 1 + 2: + years: 62 + months: 2 + 3: + years: 62 + months: 3 + 4: + years: 62 + months: 4 + 5: + years: 62 + months: 5 + 6: + years: 62 + months: 6 + 7: + years: 62 + months: 7 + 8: + years: 62 + months: 8 + 9: + years: 62 + months: 9 + 10: + years: 62 + months: 10 + 11: + years: 62 + months: 11 + 12: + years: 63 + months: 0 + 1940: + 1: + years: 63 + months: 1 + 2: + years: 63 + months: 2 + 3: + years: 63 + months: 3 + 4: + years: 63 + months: 4 + 5: + years: 63 + months: 5 + 6: + years: 63 + months: 6 + 7: + years: 63 + months: 7 + 8: + years: 63 + months: 8 + 9: + years: 63 + months: 9 + 10: + years: 63 + months: 10 + 11: + years: 63 + months: 11 + 12: + years: 64 + months: 0 + 1941: + 1: + years: 64 + months: 1 + 2: + years: 64 + months: 2 + 3: + years: 64 + months: 3 + 4: + years: 64 + months: 4 + 5: + years: 64 + months: 5 + 6: + years: 64 + months: 6 + 7: + years: 64 + months: 7 + 8: + years: 64 + months: 8 + 9: + years: 64 + months: 9 + 10: + years: 64 + months: 10 + 11: + years: 64 + months: 11 + 12: + years: 65 + months: 0 +altersgrenze_gestaffelt_vertrauensschutz: + name: + de: >- + § 237 SGB VI Abs. 4 + Altersgrenze für Altersrente wegen Arbeitslosigkeit mit Vertrauensschutz + (abschlagsfrei). + en: >- + § 237 SGB VI Abs. 4 + Age threshold for pension for unemployed (without deductions) with + Vertrauensschutz + description: + de: >- + Vertrauensschutzregelungen schützen bestimmte Personengruppen vor der Erhöhung der + Altersgrenze. + en: >- + Trust protection rules protect certain groups of people from the increase of + the age threshold. + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1996-07-29: + reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. + note: >- + Increase of full retirement age according to old law (RRG 1992) for individuals + covered under Vertrauensschutz. The Vertrauensschutzregel was not revoked under + the subsequent Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 + 1996. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1940: + 12: + years: 60 + months: 0 + 1941: + 1: + years: 60 + months: 1 + 5: + years: 60 + months: 2 + 9: + years: 60 + months: 3 + 1942: + 1: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 9: + years: 60 + months: 6 + 1943: + 1: + years: 60 + months: 7 + 5: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 1944: + 1: + years: 60 + months: 10 + 2010-01-01: + note: >- + All potential beneficiaries of Vertrauensschutz have reached the + Regelaltersgrenze. +altersgrenze_vorzeitig: + name: + de: >- + Einheitliche Altersgrenze für vorzeitige Inanspruchnahme Altersrente wegen + Arbeitslosigkeit + en: Uniform age threshold early takeup of pension for unemployed + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für Arbeitslose + bezogen werden kann (mit Abschlägen). + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + https://www.buzer.de/Anlage_19_SGB_VI.htm + en: >- + Earliest possible age to receive pension for unemployed (with deductions), + including legitimate expectations. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + https://www.buzer.de/Anlage_19_SGB_VI.htm + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 60.0 + 1989-12-18: + note: >- + Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. See + `altersgrenze_vorzeitig_gestaffelt`. + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: Increase of ERA was revoked. + value: 60.0 + 2004-07-26: + reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 + note: Increase of the early retirement age from 60 to 63 for birth cohort 1946-1948. +altersgrenze_vorzeitig_gestaffelt: + name: + de: >- + Gestaffelte Altersgrenze für vorzeitige Inanspruchnahme Altersrente wegen + Arbeitslosigkeit + en: Staggered age threshold early takeup of pension for unemployed + description: + de: >- + Frühestmögliches Alter ab dem die Altersrente für Arbeitslose + bezogen werden kann (mit Abschlägen). + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + https://www.buzer.de/Anlage_19_SGB_VI.htm + en: >- + Earliest possible age to receive pension for unemployed (with deductions), + including legitimate expectations. + § 237 SGB VI + https://www.gesetze-im-internet.de/sgb_6/__237.html + https://www.buzer.de/Anlage_19_SGB_VI.htm + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of early retirement age from 60 to 62 for birth cohort 1949-1952. + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1948: + 12: + years: 60 + months: 0 + 1949: + 1: + years: 60 + months: 1 + 3: + years: 60 + months: 2 + 5: + years: 60 + months: 3 + 7: + years: 60 + months: 4 + 9: + years: 60 + months: 5 + 11: + years: 60 + months: 6 + 1950: + 1: + years: 60 + months: 7 + 3: + years: 60 + months: 8 + 5: + years: 60 + months: 9 + 7: + years: 60 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 61 + months: 0 + 1951: + 1: + years: 61 + months: 1 + 3: + years: 61 + months: 2 + 5: + years: 61 + months: 3 + 7: + years: 61 + months: 4 + 9: + years: 61 + months: 5 + 11: + years: 61 + months: 6 + 1952: + 1: + years: 61 + months: 7 + 3: + years: 61 + months: 8 + 5: + years: 61 + months: 9 + 7: + years: 61 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 62 + months: 0 + 1996-07-29: + reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. + note: Increase of early retirement age as before. (§ 237 SGB VI Abs.5). + first_year_to_consider: 1900 + last_year_to_consider: 2029 + 1948: + 12: + years: 60 + months: 0 + 1949: + 1: + years: 60 + months: 1 + 3: + years: 60 + months: 2 + 5: + years: 60 + months: 3 + 7: + years: 60 + months: 4 + 9: + years: 60 + months: 5 + 11: + years: 60 + months: 6 + 1950: + 1: + years: 60 + months: 7 + 3: + years: 60 + months: 8 + 5: + years: 60 + months: 9 + 7: + years: 60 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 61 + months: 0 + 1951: + 1: + years: 61 + months: 1 + 3: + years: 61 + months: 2 + 5: + years: 61 + months: 3 + 7: + years: 61 + months: 4 + 9: + years: 61 + months: 5 + 11: + years: 61 + months: 6 + 1952: + 1: + years: 61 + months: 7 + 3: + years: 61 + months: 8 + 5: + years: 61 + months: 9 + 7: + years: 61 + months: 10 + 9: + years: 60 + months: 11 + 11: + years: 62 + months: 0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: Increase of ERA was revoked. + 2004-07-26: + reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 + note: Increase of the early retirement age from 60 to 63 for birth cohort 1946-1948. + first_year_to_consider: 1900 + last_year_to_consider: 1951 + 1945: + 12: + years: 60 + months: 0 + 1946: + 1: + years: 60 + months: 1 + 2: + years: 60 + months: 2 + 3: + years: 60 + months: 3 + 4: + years: 60 + months: 4 + 5: + years: 60 + months: 5 + 6: + years: 60 + months: 6 + 7: + years: 60 + months: 7 + 8: + years: 60 + months: 8 + 9: + years: 60 + months: 9 + 10: + years: 60 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 61 + months: 0 + 1947: + 1: + years: 61 + months: 1 + 2: + years: 61 + months: 2 + 3: + years: 61 + months: 3 + 4: + years: 61 + months: 4 + 5: + years: 61 + months: 5 + 6: + years: 61 + months: 6 + 7: + years: 61 + months: 7 + 8: + years: 61 + months: 8 + 9: + years: 61 + months: 9 + 10: + years: 61 + months: 10 + 11: + years: 60 + months: 11 + 12: + years: 62 + months: 0 + 1948: + 1: + years: 62 + months: 1 + 2: + years: 62 + months: 2 + 3: + years: 62 + months: 3 + 4: + years: 62 + months: 4 + 5: + years: 62 + months: 5 + 6: + years: 62 + months: 6 + 7: + years: 62 + months: 7 + 8: + years: 62 + months: 8 + 9: + years: 62 + months: 9 + 10: + years: 62 + months: 10 + 11: + years: 62 + months: 11 + 12: + years: 63 + months: 0 +altersgrenze_vorzeitig_mit_vertrauensschutz: + name: + de: >- + Einheitliche Altersgrenze für vorzeitige Inanspruchnahme Altersrente wegen + Arbeitslosigkeit mit Vertrauensschutz + en: >- + Uniform age threshold early takeup of pension for unemployed with + Vertrauensschutz + description: + de: >- + Vertrauensschutzregelungen schützen bestimmte Personengruppen vor der Erhöhung der + Altersgrenze. + en: >- + Trust protection rules protect certain groups of people from the increase of + the age threshold. + unit: null + reference_period: null + type: scalar + 1996-07-29: + reference: Ruhestandsförderungsgesetz 1996. BGBl. I S. 1078 1996. + value: 60.0 + 1996-09-27: + reference: Wachstums- und Beschäftigungsförderungsgesetz 1996. BGBl. I S. 1461 1996 + note: Increase of ERA was revoked. + 2004-07-26: + reference: RV-Nachhaltigkeitsgesetz 2004. BGBl. I S. 1791 2004 + value: 60.0 diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/anspruch.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/anspruch.yaml new file mode 100644 index 0000000000..de1379de02 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/anspruch.yaml @@ -0,0 +1,16 @@ +--- +kohorte_abschaffung: + name: + de: Erster Geburtsjahrgang ohne Rente für Arbeitslose + en: First birth cohort without pension for unemployed + description: + de: >- + Erster Geburtsjahrgang ohne Rente für Arbeitslose + Rentenreformgesetz 1999. BGBl. I S. 2998 1997 + unit: Years + reference_period: null + type: scalar + 1997-12-16: + value: 1952 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py index 33811e3e9f..b0cff2a2d2 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @@ -15,9 +17,11 @@ def pflichtbeitragsjahre_8_von_10() -> bool: @policy_input() def vertrauensschutz_1997() -> bool: - """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit implemented in 1997 (§ 237 SGB VI Abs. 4).""" + """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit + implemented in 1997 (§ 237 SGB VI Abs. 4).""" @policy_input() def vertrauensschutz_2004() -> bool: - """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit enacted in July 2004 (§ 237 SGB VI Abs. 5).""" + """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit + enacted in July 2004 (§ 237 SGB VI Abs. 5).""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index 7a81d034c6..4e76ee85a2 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -1,170 +1,77 @@ """Pathway for unemployed individuals. Revoked for birth cohorts after 1951. -""" - -from ttsim import policy_function +In GETTSIM, this pathway becomes inactive at 2017-12-31 because by then statutory +retirement ages of this pathway were irrelevant (all potentially eligible individuals +are older than the Regelaltersgrenze). +""" -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze") -def altersgrenze_ohne_staffelung(ges_rente_params: dict) -> float: - """Full retirement age for unemployed. - - Before the WFG (Gesetz für Wachstum und Beschäftigung) was implemented in 1997 the - full retirement age was the same for every birth cohort. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - lowest full retirement age for unemployed. - - """ +from __future__ import annotations - return ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"] +from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( start_date="1989-12-18", end_date="1996-07-28", leaf_name="altersgrenze", - vectorization_strategy="loop", ) -def altersgrenze_ohne_vertrauensschutzprüfung_bis_1996( - altersgrenze_ohne_vertrauensschutzprüfung: float, +def altersgrenze_bis_1996( + geburtsjahr: int, + geburtsmonat: int, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Full retirement age for unemployed without Vertrauensschutz. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - altersgrenze_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. - - Returns - ------- - Full retirement age for unemployed. - """ - return altersgrenze_ohne_vertrauensschutzprüfung + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) + + return altersgrenze_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract + ] @policy_function( start_date="1996-07-29", end_date="2009-12-31", leaf_name="altersgrenze", - vectorization_strategy="loop", ) def altersgrenze_mit_vertrauensschutzprüfung( - geburtsjahr: int, - geburtsmonat: int, vertrauensschutz_1997: bool, - altersgrenze_ohne_vertrauensschutzprüfung: float, - ges_rente_params: dict, + altersgrenze_mit_vertrauensschutz: float, + altersgrenze_ohne_vertrauensschutz: float, ) -> float: """Full retirement age for unemployed with Vertrauensschutz. Full retirement age depends on birth year and month. Policy becomes inactive in 2010 - because then all potential beneficiaries have reached the normal retirement age. + because then all potential beneficiaries have reached the Regelaltersgrenze. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - vertrauensschutz_1997 - See basic input variable :ref:`vertrauensschutz_1997 <vertrauensschutz_1997>`. - altersgrenze_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Full retirement age for unemployed. - """ - if ( - vertrauensschutz_1997 - and geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"]["vertrauensschutz"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "vertrauensschutz" - ]["entry_age_old_regime"] - - elif vertrauensschutz_1997: - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "vertrauensschutz" - ][geburtsjahr][geburtsmonat] + if vertrauensschutz_1997: + return altersgrenze_mit_vertrauensschutz else: - out = altersgrenze_ohne_vertrauensschutzprüfung - - return out + return altersgrenze_ohne_vertrauensschutz @policy_function( start_date="2010-01-01", end_date="2017-12-31", leaf_name="altersgrenze", - vectorization_strategy="loop", ) -def altersgrenze_ohne_vertrauensschutzprüfung_ab_2010( - altersgrenze_ohne_vertrauensschutzprüfung: float, +def altersgrenze_ab_2010( + altersgrenze_ohne_vertrauensschutz: float, ) -> float: - """Full retirement age for unemployed without Vertrauensschutz. + """Full retirement age for unemployed. Full retirement age depends on birth year and month. Policy becomes inactive in 2017 - because then all potential beneficiaries have reached the normal retirement age. + because then all potential beneficiaries have reached the Regelaltersgrenze. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - altersgrenze_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_ohne_vertrauensschutzprüfung`. - - Returns - ------- - Full retirement age for unemployed. - - """ - return altersgrenze_ohne_vertrauensschutzprüfung - - -@policy_function(end_date="1989-12-17", leaf_name="altersgrenze_vorzeitig") -def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: - """Early retirement age of pension for unemployed. - - Early retirement age does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age for unemployed. - """ - - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] + return altersgrenze_ohne_vertrauensschutz @policy_function( @@ -173,23 +80,19 @@ def altersgrenze_vorzeitig_ohne_staffelung(ges_rente_params: dict) -> float: leaf_name="altersgrenze_vorzeitig", ) def altersgrenze_vorzeitig_ohne_vertrauensschutz_bis_1996_07( - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, + geburtsjahr: int, + geburtsmonat: int, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Early retirement age of pension for unemployed. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. - - Returns - ------- - Early retirement age for unemployed. """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung + return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract + ] @policy_function( @@ -197,67 +100,21 @@ def altersgrenze_vorzeitig_ohne_vertrauensschutz_bis_1996_07( end_date="1996-09-26", leaf_name="altersgrenze_vorzeitig", ) -def altersgrenze_vorzeitig_mit_vertrauensschutz_ab_1996_07_bis_1996_09( +def altersgrenze_vorzeitig_mit_vertrauensschutzprüfung_ab_07_1996_bis_09_1996( vertrauensschutz_1997: bool, - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, - ges_rente_params: dict, + altersgrenze_vorzeitig_ohne_vertrauensschutz: float, + altersgrenze_vorzeitig_mit_vertrauensschutz: float, ) -> float: """Early retirement age of pension for unemployed. Includes Vertrauensschutz rules implemented from July to September 1996. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - - vertrauensschutz_2004 - See basic input variable :ref:`vertrauensschutz_2004 <vertrauensschutz_2004>`. - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age for unemployed. """ - if vertrauensschutz_1997: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "vertrauensschutz" - ] + return altersgrenze_vorzeitig_mit_vertrauensschutz else: - arbeitsl_vorzeitig = altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung - - return arbeitsl_vorzeitig - - -@policy_function( - start_date="1996-09-27", - end_date="2004-07-25", - leaf_name="altersgrenze_vorzeitig", -) -def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09(ges_rente_params: dict) -> float: - """Early retirement age of pension for unemployed. - - Early retirement age does not depend on birth year and month. - - Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - ges_rente_params - See params documentation - :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age for unemployed. - - """ - - return ges_rente_params["altersgrenze_arbeitsl_vorzeitig"] + return altersgrenze_vorzeitig_ohne_vertrauensschutz @policy_function( @@ -265,10 +122,10 @@ def altersgrenze_vorzeitig_ohne_staffelung_ab_1996_09(ges_rente_params: dict) -> end_date="2017-12-31", leaf_name="altersgrenze_vorzeitig", ) -def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2004_07( +def altersgrenze_vorzeitig_mit_vertrauensschutzprüfung_ab_07_2004( vertrauensschutz_2004: bool, - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: float, - ges_rente_params: dict, + altersgrenze_vorzeitig_ohne_vertrauensschutz: float, + altersgrenze_vorzeitig_mit_vertrauensschutz: float, ) -> float: """Early retirement age of pension for unemployed. @@ -277,138 +134,94 @@ def ges_rente_arbeitsl_vorzeitig_mit_vertrauenss_ab_2004_07( age. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - vertrauensschutz_2004 - See basic input variable :ref:`vertrauensschutz_2004 <vertrauensschutz_2004>`. - altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung - See :func:`altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age for unemployed. """ - if vertrauensschutz_2004: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "vertrauensschutz" - ] + return altersgrenze_vorzeitig_mit_vertrauensschutz else: - arbeitsl_vorzeitig = altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung - - return arbeitsl_vorzeitig + return altersgrenze_vorzeitig_ohne_vertrauensschutz -@policy_function(end_date="2017-12-31", vectorization_strategy="loop") -def altersgrenze_ohne_vertrauensschutzprüfung( +@policy_function(start_date="1989-12-18", end_date="2017-12-31") +def altersgrenze_ohne_vertrauensschutz( geburtsjahr: int, geburtsmonat: int, - ges_rente_params: dict, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Full retirement age for unemployed without Vertrauensschutz. Full retirement age depends on birth year and month. Does not check for eligibility for this pathway into retirement. + """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation - :ref:`ges_rente_params <ges_rente_params>`. + return altersgrenze_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract + ] - Returns - ------- - Full retirement age for unemployed. - """ - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "max_birthyear_old_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "min_birthyear_new_regime" - ] - ): - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][ - "entry_age_new_regime" - ] - else: - out = ges_rente_params["altersgrenze_arbeitsl_abschlagsfrei"][geburtsjahr][ - geburtsmonat - ] +@policy_function(start_date="1996-07-29", end_date="2009-12-31") +def altersgrenze_mit_vertrauensschutz( + geburtsjahr: int, + geburtsmonat: int, + altersgrenze_gestaffelt_vertrauensschutz: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Full retirement age for unemployed for individuals under Vertrauensschutz.""" + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return out + return altersgrenze_gestaffelt_vertrauensschutz.values_to_look_up[ + birth_month_since_ad - altersgrenze_gestaffelt_vertrauensschutz.base_to_subtract + ] -@policy_function(end_date="2017-12-31", vectorization_strategy="loop") -def altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung( +@policy_function( + start_date="1989-12-18", + end_date="1996-09-26", + leaf_name="altersgrenze_vorzeitig_ohne_vertrauensschutz", +) +def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_12_1989_bis_09_1996( geburtsjahr: int, geburtsmonat: int, - ges_rente_params: dict, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Early retirement age of pension for unemployed without Vertrauensschutz. Relevant if the early retirement age depends on birth year and month. Does not check for eligibility for this pathway into retirement. - - Parameters - ---------- - geburtsjahr - See basic input variable :ref:`geburtsjahr <geburtsjahr>`. - geburtsmonat - See basic input variable :ref:`geburtsmonat <geburtsmonat>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Early retirement age for unemployed. """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - if ( - geburtsjahr - <= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "max_birthyear_old_regime" - ] - ): - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "entry_age_old_regime" - ] - elif ( - geburtsjahr - >= ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "min_birthyear_new_regime" - ] - ): - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - "entry_age_new_regime" - ] - else: - arbeitsl_vorzeitig = ges_rente_params["altersgrenze_arbeitsl_vorzeitig"][ - geburtsjahr - ][geburtsmonat] + return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract + ] + + +@policy_function( + start_date="2004-07-26", + end_date="2017-12-31", + leaf_name="altersgrenze_vorzeitig_ohne_vertrauensschutz", +) +def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_07_2004( + geburtsjahr: int, + geburtsmonat: int, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Early retirement age of pension for unemployed without Vertrauensschutz. + + Relevant if the early retirement age depends on birth year and month. + + Does not check for eligibility for this pathway into retirement. + """ + birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return arbeitsl_vorzeitig + return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ + birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract + ] @policy_function(end_date="2007-04-29", leaf_name="grundsätzlich_anspruchsberechtigt") -def grundsätzlich_anspruchsberechtigt_bis_2007( +def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( arbeitslos_für_1_jahr_nach_alter_58_ein_halb: bool, sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, pflichtbeitragsjahre_8_von_10: bool, @@ -420,43 +233,26 @@ def grundsätzlich_anspruchsberechtigt_bis_2007( unemployed at the time of claiming the pension. As there are no restrictions regarding voluntary unemployment this requirement may be viewed as always satisfied and is therefore not included when checking for eligibility. - - Parameters - ---------- - arbeitslos_für_1_jahr_nach_alter_58_ein_halb - See basic input variable - :ref:`arbeitslos_für_1_jahr_nach_alter_58_ein_halb <arbeitslos_für_1_jahr_nach_alter_58_ein_halb>`. - sozialversicherung__rente__wartezeit_15_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` - pflichtbeitragsjahre_8_von_10 - See basic input variable :ref:`pflichtbeitragsjahre_8_von_10 <pflichtbeitragsjahre_8_von_10>`. - - Returns - ------- - Eligibility as bool. - """ - out = ( + return ( arbeitslos_für_1_jahr_nach_alter_58_ein_halb and sozialversicherung__rente__wartezeit_15_jahre_erfüllt and pflichtbeitragsjahre_8_von_10 ) - return out - @policy_function( start_date="2007-04-30", end_date="2017-12-31", leaf_name="grundsätzlich_anspruchsberechtigt", ) -def grundsätzlich_anspruchsberechtigt_ab_2007( +def grundsätzlich_anspruchsberechtigt_mit_prüfung_geburtsjahr( arbeitslos_für_1_jahr_nach_alter_58_ein_halb: bool, sozialversicherung__rente__wartezeit_15_jahre_erfüllt: bool, pflichtbeitragsjahre_8_von_10: bool, geburtsjahr: int, - ges_rente_params: dict, + kohorte_abschaffung: int, ) -> bool: """Eligibility for Altersrente für Arbeitslose (pension for unemployed). @@ -466,32 +262,12 @@ def grundsätzlich_anspruchsberechtigt_ab_2007( restrictions regarding voluntary unemployment this requirement may be viewed as always satisfied and is therefore not included when checking for eligibility. Policy becomes inactive in 2018 because then all potential beneficiaries have reached the - normal retirement age. - - Parameters - ---------- - arbeitslos_für_1_jahr_nach_alter_58_ein_halb - See basic input variable :ref:`arbeitslos_für_1_jahr_nach_alter_58_ein_halb <arbeitslos_für_1_jahr_nach_alter_58_ein_halb>`. - sozialversicherung__rente__wartezeit_15_jahre_erfüllt - See :func:`sozialversicherung__rente__wartezeit_15_jahre_erfüllt` - pflichtbeitragsjahre_8_von_10 - See basic input variable :ref:`pflichtbeitragsjahre_8_von_10 <pflichtbeitragsjahre_8_von_10>`. - geburtsjahr - See :func:`geburtsjahr` - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Eligibility as bool. - + Regelaltersgrenze. """ - out = ( + return ( arbeitslos_für_1_jahr_nach_alter_58_ein_halb and sozialversicherung__rente__wartezeit_15_jahre_erfüllt and pflichtbeitragsjahre_8_von_10 - and geburtsjahr < ges_rente_params["first_birthyear_without_rente_für_arbeitsl"] + and geburtsjahr < kohorte_abschaffung ) - - return out diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/__init__.py b/src/_gettsim/sozialversicherung/rente/beitrag/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index 1f1de4b15e..3eb47d262e 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -1,37 +1,23 @@ """Public pension insurance contributions.""" +from __future__ import annotations + from ttsim import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, - einkommen_m: float, - ges_rentenv_params: dict, + betrag_versicherter_regulär_beschäftigt_m: float, ) -> float: """Public pension insurance contributions paid by the insured person. Before Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - einkommen_m - See :func:`einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] - if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = ges_rentenv_beitr_regular_job_m + out = betrag_versicherter_regulär_beschäftigt_m return out @@ -39,79 +25,81 @@ def betrag_versicherter_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_versicherter_m") def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, - betrag_midijob_arbeitnehmer_m: float, - einkommen_m: float, - ges_rentenv_params: dict, + betrag_in_gleitzone_arbeitnehmer_m: float, + betrag_versicherter_regulär_beschäftigt_m: float, sozialversicherung__in_gleitzone: bool, ) -> float: """Public pension insurance contributions paid by the insured person. After Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_midijob_arbeitnehmer_m - See :func:`betrag_midijob_arbeitnehmer_m`. - einkommen_m - See :func:`einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - - Returns - ------- - """ - ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: - out = betrag_midijob_arbeitnehmer_m + out = betrag_in_gleitzone_arbeitnehmer_m else: - out = ges_rentenv_beitr_regular_job_m + out = betrag_versicherter_regulär_beschäftigt_m return out -@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") -def betrag_arbeitgeber_m_ohne_midijob( - sozialversicherung__geringfügig_beschäftigt: bool, +@policy_function() +def betrag_versicherter_regulär_beschäftigt_m( einkommen_m: float, - ges_rentenv_params: dict, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + beitragssatz: float, ) -> float: - """Employer's public pension insurance contribution. + """Public pension insurance contributions paid by the insured person. Before Midijob introduction in April 2003. + """ + return einkommen_m * beitragssatz / 2 + + +@policy_function( + end_date="1998-12-31", + leaf_name="betrag_arbeitgeber_m", +) +def betrag_arbeitgeber_m_ohne_arbeitgeberpauschale( + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_versicherter_regulär_beschäftigt_m: float, +) -> float: + """Employer's public pension insurance contribution. + + Before Minijobs were subject to pension contributions. + """ + + if sozialversicherung__geringfügig_beschäftigt: + out = 0.0 + else: + out = betrag_versicherter_regulär_beschäftigt_m + + return out - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - einkommen_m - See :func:`einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - Returns - ------- +@policy_function( + start_date="1999-01-01", + end_date="2003-03-31", + leaf_name="betrag_arbeitgeber_m", +) +def betrag_arbeitgeber_m_mit_arbeitgeberpauschale( + sozialversicherung__geringfügig_beschäftigt: bool, + betrag_versicherter_regulär_beschäftigt_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijob_arbeitgeberpauschale: float, +) -> float: + """Employer's public pension insurance contribution. + Before Midijob introduction in April 2003. """ - ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + * minijob_arbeitgeberpauschale ) else: - out = ges_rentenv_beitr_regular_job_m + out = betrag_versicherter_regulär_beschäftigt_m return out @@ -119,46 +107,26 @@ def betrag_arbeitgeber_m_ohne_midijob( @policy_function(start_date="2003-04-01", leaf_name="betrag_arbeitgeber_m") def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, - betrag_midijob_arbeitgeber_m: float, - einkommen_m: float, - ges_rentenv_params: dict, + betrag_in_gleitzone_arbeitgeber_m: float, + betrag_versicherter_regulär_beschäftigt_m: float, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + minijob_arbeitgeberpauschale: float, ) -> float: """Employer's public pension insurance contribution. After Midijob introduction in April 2003. - - Parameters - ---------- - sozialversicherung__geringfügig_beschäftigt - See :func:`sozialversicherung__geringfügig_beschäftigt`. - betrag_midijob_arbeitgeber_m - See :func:`betrag_midijob_arbeitgeber_m`. - einkommen_m - See :func:`einkommen_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - sozialversicherung__in_gleitzone - See :func:`sozialversicherung__in_gleitzone`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - - Returns - ------- - """ - ges_rentenv_beitr_regular_job_m = einkommen_m * ges_rentenv_params["beitr_satz"] if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_rentenv_params["arbeitgeberpauschale_bei_geringfügiger_beschäftigung"] + * minijob_arbeitgeberpauschale ) elif sozialversicherung__in_gleitzone: - out = betrag_midijob_arbeitgeber_m + out = betrag_in_gleitzone_arbeitgeber_m else: - out = ges_rentenv_beitr_regular_job_m + out = betrag_versicherter_regulär_beschäftigt_m return out @@ -168,164 +136,90 @@ def einkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, beitragsbemessungsgrenze_m: float, ) -> float: - """Wage subject to pension and unemployment insurance contributions. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - beitragsbemessungsgrenze_m - See :func:`beitragsbemessungsgrenze_m`. - - - Returns - ------- - - """ + """Wage subject to pension and unemployment insurance contributions.""" return min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, beitragsbemessungsgrenze_m, ) -@policy_function() -def beitragsbemessungsgrenze_m(wohnort_ost: bool, ges_rentenv_params: dict) -> float: - """Income threshold up to which pension insurance payments apply. - - Parameters - ---------- - wohnort_ost - See :func:`wohnort_ost`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ - params = ges_rentenv_params["beitr_bemess_grenze_m"] - out = params["ost"] if wohnort_ost else params["west"] - - return out +@policy_function( + start_date="1990-01-01", + end_date="2024-12-31", + leaf_name="beitragsbemessungsgrenze_m", +) +def beitragsbemessungsgrenze_m_nach_wohnort( + wohnort_ost: bool, + parameter_beitragsbemessungsgrenze_nach_wohnort: dict[str, float], +) -> float: + """Income threshold up to which pension insurance payments apply.""" + return ( + parameter_beitragsbemessungsgrenze_nach_wohnort["ost"] + if wohnort_ost + else parameter_beitragsbemessungsgrenze_nach_wohnort["west"] + ) @policy_function(start_date="2003-04-01") -def betrag_midijob_gesamt_m( +def betrag_in_gleitzone_gesamt_m( sozialversicherung__midijob_bemessungsentgelt_m: float, - ges_rentenv_params: dict, + beitragssatz: float, ) -> float: """Sum of employer and employee pension insurance contribution for midijobs. Midijobs were introduced in April 2003. - - Parameters - ---------- - sozialversicherung__midijob_bemessungsentgelt_m - See :func:`sozialversicherung__midijob_bemessungsentgelt_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - """ - return ( - sozialversicherung__midijob_bemessungsentgelt_m - * 2 - * ges_rentenv_params["beitr_satz"] - ) + return sozialversicherung__midijob_bemessungsentgelt_m * beitragssatz @policy_function( + start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_midijob_arbeitgeber_m", + leaf_name="betrag_in_gleitzone_arbeitgeber_m", ) -def betrag_midijob_arbeitgeber_m_mit_festem_beitragssatz( +def betrag_in_gleitzone_arbeitgeber_m_mit_festem_beitragssatz( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - ges_rentenv_params: dict, + beitragssatz: float, ) -> float: - """Employer's unemployment insurance contribution until September 2022. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Employer's unemployment insurance contribution until September 2022.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * ges_rentenv_params["beitr_satz"] + * beitragssatz + / 2 ) -@policy_function(start_date="2022-10-01", leaf_name="betrag_midijob_arbeitgeber_m") -def betrag_midijob_arbeitgeber_m_als_differenz_von_gesamt_und_arbeitnehmerbeitrag( - betrag_midijob_gesamt_m: float, - betrag_midijob_arbeitnehmer_m: float, +@policy_function(start_date="2022-10-01", leaf_name="betrag_in_gleitzone_arbeitgeber_m") +def betrag_in_gleitzone_arbeitgeber_m_als_differenz_von_gesamt_und_arbeitnehmerbeitrag( + betrag_in_gleitzone_gesamt_m: float, + betrag_in_gleitzone_arbeitnehmer_m: float, ) -> float: - """Employer's unemployment insurance contribution since October 2022. - - Parameters - ---------- - betrag_midijob_gesamt_m - See :func:`betrag_midijob_gesamt_m`. - betrag_midijob_arbeitnehmer_m - See :func:`betrag_midijob_arbeitnehmer_m`. - - Returns - ------- - - """ - return betrag_midijob_gesamt_m - betrag_midijob_arbeitnehmer_m + """Employer's unemployment insurance contribution since October 2022.""" + return betrag_in_gleitzone_gesamt_m - betrag_in_gleitzone_arbeitnehmer_m @policy_function( + start_date="2003-04-01", end_date="2022-09-30", - leaf_name="betrag_midijob_arbeitnehmer_m", + leaf_name="betrag_in_gleitzone_arbeitnehmer_m", ) -def betrag_midijob_arbeitnehmer_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( - betrag_midijob_arbeitgeber_m: float, - betrag_midijob_gesamt_m: float, +def betrag_in_gleitzone_arbeitnehmer_m_als_differenz_von_gesamt_und_arbeitgeberbeitrag( + betrag_in_gleitzone_arbeitgeber_m: float, + betrag_in_gleitzone_gesamt_m: float, ) -> float: - """Employee's unemployment insurance contribution for midijobs until September 2022. + """Employee's unemployment insurance contribution for midijobs until September 2022.""" + return betrag_in_gleitzone_gesamt_m - betrag_in_gleitzone_arbeitgeber_m - Parameters - ---------- - betrag_midijob_arbeitgeber_m - See :func:`betrag_midijob_arbeitgeber_m`. - betrag_midijob_gesamt_m - See :func:`betrag_midijob_gesamt_m`. - Returns - ------- - - """ - return betrag_midijob_gesamt_m - betrag_midijob_arbeitgeber_m - - -@policy_function(start_date="2022-10-01", leaf_name="betrag_midijob_arbeitnehmer_m") -def betrag_midijob_arbeitnehmer_m_mit_festem_beitragssatz( +@policy_function( + start_date="2022-10-01", leaf_name="betrag_in_gleitzone_arbeitnehmer_m" +) +def betrag_in_gleitzone_arbeitnehmer_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, - ges_rentenv_params: dict, + beitragssatz: float, ) -> float: - """Employee's unemployment insurance contribution for midijobs since October 2022. - - Parameters - ---------- - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - See :func:`sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m`. - sozialv_beitr_params - See params documentation :ref:`sozialv_beitr_params <sozialv_beitr_params>`. - - Returns - ------- - - """ + """Employee's unemployment insurance contribution for midijobs since October 2022.""" return ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m - * ges_rentenv_params["beitr_satz"] + * beitragssatz + / 2 ) diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitragsbemessungsgrenze.yaml b/src/_gettsim/sozialversicherung/rente/beitrag/beitragsbemessungsgrenze.yaml new file mode 100644 index 0000000000..761afc3c91 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitragsbemessungsgrenze.yaml @@ -0,0 +1,161 @@ +--- +beitragsbemessungsgrenze_m: + name: + de: Beitragsbemessungsgrenzen der gesetzlichen Rentenversicherung + en: Maximum income subject to pension insurance contributions + description: + de: Beitragsbemessungsgrenze für die gesetzliche Rentenversicherung. + en: Income threshold for statutory pension insurance. + unit: Euros + reference_period: Month + type: scalar + 1984-01-01: + value: 2659 + 1985-01-01: + value: 2761 + 1986-01-01: + value: 2863 + 1987-01-01: + value: 2914 + 1988-01-01: + value: 3068 + 1989-01-01: + value: 3119 + 1990-01-01: + note: >- + Die Beitragsbemessungsgrenze unterscheidet sich zwischen West und Ost. Siehe + ``parameter_beitragsbemessungsgrenze_nach_wohnort``. + 2025-01-01: + value: 8050 + reference: V. v. 25.11.2024 BGBl. 2024 I Nr. 365 +parameter_beitragsbemessungsgrenze_nach_wohnort: + name: + de: Beitragsbemessungsgrenze der gesetzlichen Rentenversicherung + en: Maximum income subject to pension insurance contributions + description: + de: >- + Beitragsbemessungsgrenze für die gesetzliche Rentenversicherung mit Unterschied + zwischen West und Ost + en: >- + Maximum income subject to statutory pension insurance contributions with + different values for West and East + unit: Euros + reference_period: Month + type: dict + 1990-01-01: + west: 3221 + ost: 1380 + 1991-01-01: + west: 3323 + ost: 1534 + 1992-01-01: + west: 3477 + ost: 2454 + 1993-01-01: + west: 3681 + ost: 2710 + 1994-01-01: + west: 3886 + ost: 3017 + 1995-01-01: + west: 3988 + ost: 3272 + 1996-01-01: + west: 4090 + ost: 3477 + 1997-01-01: + west: 4193 + ost: 3630 + 1998-01-01: + west: 4295 + ost: 3579 + 1999-01-01: + west: 4339 + ost: 3681 + 2000-01-01: + west: 4397 + ost: 3630 + 2001-01-01: + west: 4448 + ost: 3732 + 2002-01-01: + west: 4500 + ost: 3750 + 2003-01-01: + west: 5100 + ost: 4250 + 2004-01-01: + west: 5150 + ost: 4350 + 2005-01-01: + west: 5200 + ost: 4400 + 2006-01-01: + west: 5250 + ost: 4400 + 2007-01-01: + west: 5250 + ost: 4550 + 2008-01-01: + west: 5300 + ost: 4500 + 2009-01-01: + west: 5400 + ost: 4550 + 2010-01-01: + west: 5500 + ost: 4650 + 2011-01-01: + west: 5500 + ost: 4800 + 2012-01-01: + west: 5600 + ost: 4800 + 2013-01-01: + west: 5800 + ost: 4900 + 2014-01-01: + west: 5950 + ost: 5000 + note: http://www.bundesregierung.de/ContentArchiv/DE/Archiv17/Artikel/2013/10/2013-10-16-rechengroessen-sozialversicherung.html + 2015-01-01: + west: 6050 + ost: 5200 + 2016-01-01: + west: 6200 + ost: 5400 + note: https://www.bundesregierung.de/Content/DE/Artikel/2015/10/2015-10-14-sozialversicherung.html + 2017-01-01: + west: 6350 + ost: 5700 + note: https://www.bundesregierung.de/Content/DE/Artikel/2016/10/2016-10-12-bemessunggrenzen-sozialversicherung.html + 2018-01-01: + west: 6500 + ost: 5800 + 2019-01-01: + west: 6700 + ost: 6150 + 2020-01-01: + west: 6900 + ost: 6450 + reference: V. v. 17.12.2019 BGBl. I S. 2848 + 2021-01-01: + west: 7100 + ost: 6700 + reference: §3, §4 V. v. 30.11.2020, BGBl. I S. 2612. + 2022-01-01: + west: 7050 + ost: 6750 + reference: §3 V. v. 30.11.2021, BGBl. I S. 5044. + 2023-01-01: + west: 7300 + ost: 7100 + reference: V. v. 28.11.2022 BGBl. I. S. 2128. + 2024-01-01: + west: 7550 + ost: 7450 + reference: V. v. 24.11.2023 BGBl. 2023 I Nr. 322 + 2025-01-01: + note: >- + Beitragsbemessungsgrenze ist einheitlich zwischen West und Ost. Siehe + ``beitragsbemessungsgrenze_m``. diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitragssatz.yaml b/src/_gettsim/sozialversicherung/rente/beitrag/beitragssatz.yaml new file mode 100644 index 0000000000..f2cc2f8d10 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitragssatz.yaml @@ -0,0 +1,53 @@ +--- +beitragssatz: + name: + de: Allgemeiner Beitragssatz zur gesetzlichen Rentenversicherung + en: Contribution rate to statutory pension insurance + description: + de: >- + Beitragssatz zur gesetzlichen Rentenversicherung, wird hälftig von + Arbeitnehmer/Arbeitgeber getragen. + en: >- + Contribution rate to statutory pension insurance, which is shared equally by + employees and employers. + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1984-01-01: + value: 0.185 + 1985-01-01: + value: 0.187 + 1986-01-01: + value: 0.192 + 1987-01-01: + value: 0.187 + 1992-01-01: + value: 0.177 + 1993-01-01: + value: 0.175 + 1994-01-01: + value: 0.192 + 1995-01-01: + value: 0.186 + 1996-01-01: + value: 0.192 + 1997-01-01: + value: 0.203 + 2000-01-01: + value: 0.193 + 2001-01-01: + value: 0.191 + 2003-01-01: + value: 0.195 + 2007-01-01: + value: 0.199 + 2012-01-01: + value: 0.196 + note: http://www.bmas.de/DE/Service/Presse/Pressemitteilungen/rentenbericht-16-11-2011.html + 2013-01-01: + value: 0.189 + 2015-01-01: + value: 0.187 + 2018-01-01: + value: 0.186 diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml b/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml new file mode 100644 index 0000000000..e04d597515 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml @@ -0,0 +1,25 @@ +--- +minijob_arbeitgeberpauschale: + name: + de: >- + Pauschalbeitrag des Arbeitgebers zur Rentenversicherung bei geringfügiger + Beschäftigung + en: >- + Fixed employer pension insurance contribution for marginal employment + description: + de: >- + Pauschalbetrag zur Rentenversicherung (§ 168 I Nr. 1b SGB VI) bei geringfügiger + Beschäftigung + en: >- + Fixed pension insurance contributions for marginal employment + (§ 168 I Nr. 1b SGB VI) + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true + 1999-01-01: + value: 0.12 + 2003-04-01: + value: 0.12 + 2007-01-01: + value: 0.15 diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/rentenanpassungsformel.yaml b/src/_gettsim/sozialversicherung/rente/beitrag/rentenanpassungsformel.yaml new file mode 100644 index 0000000000..ba9c7c1234 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/beitrag/rentenanpassungsformel.yaml @@ -0,0 +1,220 @@ +--- +alpha: + name: + de: Parameter alpha der Rentenanpassungsformel + en: Parameter alpha of the pension adjustment formula + description: + de: >- + §68 Abs. 4 S. 6 SGB VI + Teil des Nachhaltigkeitsfaktors in der Rentenanpassungsformel, welche das + Verhältnis von Rentnern zu Beitragszahlern modifiziert + en: >- + §68 Abs. 4 S. 6 SGB VI + Part of the sustainability factor in the pension adjustment formula which modifies + the ratio of pensioners to contributors + unit: null + reference_period: null + type: scalar + 2002-01-01: + value: 0.25 +altersvorsogeanteil: + name: + de: Altersvorsorgeanteil (AVA) + en: Personal pension share + description: + de: §68 Abs. 5 SGB VI (Teil des Riesterfaktors in der Rentenanpassungsformel) + en: §68 Abs. 5 SGB VI (Part of the Riesterfaktor in the pension adjustment formula) + unit: null + reference_period: null + type: scalar + 2002-01-01: + value: 0.5 + 2003-01-01: + value: 1.0 + 2004-01-01: + value: 1.5 + 2005-01-01: + value: 2.0 + 2009-01-01: + value: 2.5 + 2010-01-01: + value: 3.0 + 2011-01-01: + value: 3.5 + 2012-01-01: + value: 4.0 +beitragsvolumen: + name: + de: Beitragsvolumen der gesetzlichen Rentenversicherung + en: Contribution volume of the statutory pension insurance + description: + de: >- + Summe der Beiträge zur Rentenversicherung aller rentenversicherungspflichtig + Beschäftigten, der geringfügig Beschäftigten und der Bezieher von ALG. + statistik-rente.de/drv + en: >- + Sum of contributions to the pension insurance of all employees subject to pension + insurance, marginally employed and recipients of ALG. + unit: Euros + reference_period: Year + type: scalar + 1991-01-01: + value: 108688000 + 1992-01-01: + value: 117359000 + 1993-01-01: + value: 120559000 + 1994-01-01: + value: 132938000 + 1995-01-01: + value: 139921000 + 1996-01-01: + value: 146160000 + 1997-01-01: + value: 153658000 + 1998-01-01: + value: 153763000 + 1999-01-01: + value: 160506000 + 2000-01-01: + value: 163367000 + 2001-01-01: + value: 164694000 + 2002-01-01: + value: 165481000 + 2003-01-01: + value: 169425000 + 2004-01-01: + value: 169399000 + 2005-01-01: + value: 168954000 + 2006-01-01: + value: 180545000 + 2007-01-01: + value: 174726000 + 2008-01-01: + value: 180028000 + 2009-01-01: + value: 181572000 + 2010-01-01: + value: 185288000 + 2011-01-01: + value: 189850000 + 2012-01-01: + value: 193687000 + 2013-01-01: + value: 194334000 + 2014-01-01: + value: 201647000 + 2015-01-01: + value: 207317000 + 2016-01-01: + value: 215422000 + 2017-01-01: + value: 225244000 + 2018-01-01: + value: 236404000 + 2019-01-01: + value: 247949000 +durchschnittslohn: + name: + de: Durchschnittslohn + en: Mean Wage + description: + de: Durchschnittsbruttolohn aller Arbeitnehmer:innen in einem Jahr + en: Mean gross wage of all employees per year + unit: Euros + reference_period: Year + type: scalar + 2005-01-01: + value: 28468.23 + 2006-01-01: + value: 28673.22 + 2007-01-01: + value: 28978.19 + 2008-01-01: + value: 29262.71 + 2009-01-01: + value: 29774.24 + 2010-01-01: + value: 30086.57 + 2011-01-01: + value: 30770.62 + 2012-01-01: + value: 31452.49 + 2013-01-01: + value: 31583.35 + 2014-01-01: + value: 32313.66 + 2015-01-01: + value: 33047.02 + 2016-01-01: + value: 33608.42 +gesamtes_rentenvolumen: + name: + de: Rentenvolumen + en: pension volume + description: + de: Gesamtvolumen der ausgezahlten Renten + en: Total amount of paid pensions + unit: Euros + reference_period: Year + type: scalar + 1991-01-01: + value: 117912000 + 1992-01-01: + value: 130901000 + 1993-01-01: + value: 141180000 + 1994-01-01: + value: 152798000 + 1995-01-01: + value: 162625000 + 1996-01-01: + value: 168955000 + 1997-01-01: + value: 174479000 + 1998-01-01: + value: 180323800 + 1999-01-01: + value: 184139000 + 2000-01-01: + value: 190198000 + 2001-01-01: + value: 195776000 + 2002-01-01: + value: 202355000 + 2003-01-01: + value: 207749000 + 2004-01-01: + value: 210522000 + 2005-01-01: + value: 211861000 + 2006-01-01: + value: 212421000 + 2007-01-01: + value: 213649000 + 2008-01-01: + value: 216182000 + 2009-01-01: + value: 220841000 + 2010-01-01: + value: 224352000 + 2011-01-01: + value: 225411000 + 2012-01-01: + value: 229231000 + 2013-01-01: + value: 232297000 + 2014-01-01: + value: 238991000 + 2015-01-01: + value: 249568000 + 2016-01-01: + value: 259345000 + 2017-01-01: + value: 286860000 + 2018-01-01: + value: 277102000 + 2019-01-01: + value: 291359000 diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml new file mode 100644 index 0000000000..89dd77004d --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml @@ -0,0 +1,134 @@ +--- +altersgrenze: + name: + de: Altersgrenze für Erwerbsminderungsrente + en: Statutory retirement age for disability pension + description: + de: >- + § 77 SGB VI + Altersgrenze bis zu der man die Erwerbsminderungsrente ohne Abzüge in + Anspruch nehmen kann. + en: >- + § 77 SGB VI + Age limit up to which one can claim the public disability insurance without + deductions. + unit: Years + reference_period: null + type: scalar + 2001-01-01: + value: 63 +altersgrenze_gestaffelt: + name: + de: Altersgrenze für Erwerbsminderungsrente + en: Statutory retirement age for disability pension + description: + de: >- + § 77 SGB VI / § 264d SGB VI + Altersgrenze bis zu der man die Erwerbsminderungsrente ohne Abzüge in + Anspruch nehmen kann. Bis 2012 lag die Altersgrenze bei 63. Ab dann + schrittweise Anhebung bis 65. + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/295-erwerbsminderungsrente-und-rentenabschlaege.html + en: >- + § 77 SGB VI / § 264d SGB VI + Age limit up to which one can claim the public disability insurance without + deductions. Up to 2012, the standard retirement age was 63. + From then on gradual increase until 65. + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 2012-01-01: + reference: Art. 4 G. v. 05.12.2012 BGBl. I S. 2474 + first_year_to_consider: 1990 + last_year_to_consider: 2030 + 2011: + 12: + years: 63 + months: 0 + 2012: + 1: + years: 63 + months: 1 + 2: + years: 63 + months: 2 + 3: + years: 63 + months: 3 + 4: + years: 63 + months: 4 + 5: + years: 63 + months: 5 + 6: + years: 63 + months: 6 + 2013: + 1: + years: 63 + months: 7 + 2014: + 1: + years: 63 + months: 8 + 2015: + 1: + years: 63 + months: 9 + 2016: + 1: + years: 63 + months: 10 + 2017: + 1: + years: 63 + months: 11 + 2018: + 1: + years: 64 + months: 0 + 2019: + 1: + years: 64 + months: 2 + 2020: + 1: + years: 64 + months: 4 + 2021: + 1: + years: 64 + months: 6 + 2022: + 1: + years: 64 + months: 8 + 2023: + 1: + years: 64 + months: 10 + 2024: + 1: + years: 65 + months: 0 +altersgrenze_langjährig_versichert: + # TODO(@MImmesberger): Probably delete this. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/838 + name: + de: Altersgrenze für langjährige Versicherte + en: Statutory retirement age for long-term insured persons + description: + de: >- + § 77 Abs. 4 SGB VI + Altersgrenze bis zu der man die Erwerbsminderungsrente ohne Abzüge in Anspruch + nehmen kann, wenn man bestimmte zeitliche Bedingungen erfüllt. Bedingungen werden + in § 77 Abs. 4 SGB VI definiert. + en: >- + § 77 Abs. 4 SGB VI + Age limit up to which one can claim public disability insurance without deductions + under certain time conditions. These conditions are defined in § 77 4 SGB VI. + unit: Years + reference_period: null + type: scalar + 2001-01-01: + value: 63 diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 3eb4bc602f..67fc1f7a2d 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -1,49 +1,74 @@ """Public pension benefits for retirement due to reduced earnings potential.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + from ttsim import policy_function +if TYPE_CHECKING: + from ttsim import ConsecutiveInt1dLookupTableParamValue -@policy_function(start_date="2001-01-01") -def betrag_m( + +@policy_function(start_date="2001-01-01", end_date="2023-06-30", leaf_name="betrag_m") +def betrag_m_nach_wohnort( zugangsfaktor: float, entgeltpunkte_west: float, entgeltpunkte_ost: float, rentenartfaktor: float, grundsätzlich_anspruchsberechtigt: bool, - ges_rente_params: dict, + sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort: dict[ + str, float + ], ) -> float: - """Erwerbsminderungsrente (amount paid by public disability insurance if claimed) + """Erwerbsminderungsrente (public disability insurance). Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente + """ + if grundsätzlich_anspruchsberechtigt: + out = ( + ( + entgeltpunkte_west + * sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort[ + "west" + ] + + entgeltpunkte_ost + * sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort[ + "ost" + ] + ) + * zugangsfaktor + * rentenartfaktor + ) + else: + out = 0.0 + return out - Parameters - ---------- - zugangsfaktor - See :func:`zugangsfaktor`. - entgeltpunkte_west - See :func:`entgeltpunkte_west`. - entgeltpunkte_ost - See :func:`entgeltpunkte_ost`. - rentenwert - See :func:`rentenwert`. - rentenartfaktor - See :func:`rentenartfaktor`. - grundsätzlich_anspruchsberechtigt - See :func:`grundsätzlich_anspruchsberechtigt`. - Returns - ------- - Erwerbsminderungsrente (amount paid by public disability insurance if claimed) +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023 (first check whether this is also the case here, not +# only for old-age pensions). +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 +@policy_function(start_date="2023-07-01", leaf_name="betrag_m") +def betrag_m_einheitlich( + zugangsfaktor: float, + entgeltpunkte_west: float, + entgeltpunkte_ost: float, + rentenartfaktor: float, + grundsätzlich_anspruchsberechtigt: bool, + sozialversicherung__rente__altersrente__rentenwert: float, +) -> float: + """Erwerbsminderungsrente (public disability insurance). + + Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente """ if grundsätzlich_anspruchsberechtigt: out = ( - ( - entgeltpunkte_west * ges_rente_params["rentenwert"]["west"] - + entgeltpunkte_ost * ges_rente_params["rentenwert"]["ost"] - ) + (entgeltpunkte_ost + entgeltpunkte_west) * zugangsfaktor + * sozialversicherung__rente__altersrente__rentenwert * rentenartfaktor ) else: @@ -59,23 +84,9 @@ def grundsätzlich_anspruchsberechtigt( sozialversicherung__rente__mindestwartezeit_erfüllt: bool, ) -> bool: """ - Eligibility for Erwerbsminderungsrente (public disability insurance claim). - - Legal reference: § 43 Abs. 1 SGB VI - - Parameters - ---------- - voll_erwerbsgemindert - See basic input variable :ref:`voll_erwerbsgemindert <voll_erwerbsgemindert>. - teilweise_erwerbsgemindert - See basic input variable :ref:`teilweise_erwerbsgemindert <teilweise_erwerbsgemindert>. - sozialversicherung__rente__pflichtbeitragsmonate - See basic input variable :ref:`sozialversicherung__rente__pflichtbeitragsmonate <sozialversicherung__rente__pflichtbeitragsmonate>. - sozialversicherung__rente__mindestwartezeit_erfüllt - See :func:`sozialversicherung__rente__mindestwartezeit_erfüllt`. - Returns - ------- - Eligibility for Erwerbsminderungsrente (public disability insurance claim) as a bool + Eligibility for Erwerbsminderungsrente. + + Legal reference: § 43 Abs. 1 SGB VI. """ anspruch_erwerbsm_rente = ( @@ -87,155 +98,191 @@ def grundsätzlich_anspruchsberechtigt( return anspruch_erwerbsm_rente +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023 (first check whether this is also the case here, not +# only for old-age pensions). +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_function(start_date="2001-01-01") def entgeltpunkte_west( sozialversicherung__rente__entgeltpunkte_west: float, zurechnungszeit: float, - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: float, + anteil_entgeltpunkte_ost: float, ) -> float: - """Entgeltpunkte accumulated in Western Germany which Erwerbsminderungsrente - is based on (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - sozialversicherung__rente__entgeltpunkte_west - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_west <sozialversicherung__rente__entgeltpunkte_west> - zurechnungszeit - See :func:`zurechnungszeit`. - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost - See :func:`sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost`. - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) + """Entgeltpunkte from West German Beitrags- and Zurechnungszeiten. + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "zurechnungszeitgrenze". """ - out = sozialversicherung__rente__entgeltpunkte_west + ( - zurechnungszeit - * (1 - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost) + return sozialversicherung__rente__entgeltpunkte_west + ( + zurechnungszeit * (1 - anteil_entgeltpunkte_ost) ) - return out - +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023 (first check whether this is also the case here, not +# only for old-age pensions). +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_function(start_date="2001-01-01") def entgeltpunkte_ost( sozialversicherung__rente__entgeltpunkte_ost: float, zurechnungszeit: float, - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: float, + anteil_entgeltpunkte_ost: float, ) -> float: - """Entgeltpunkte accumulated in Eastern Germany which Erwerbsminderungsrente - is based on (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - sozialversicherung__rente__entgeltpunkte_ost - See basic input variable :ref:`sozialversicherung__rente__entgeltpunkte_ost <sozialversicherung__rente__entgeltpunkte_ost> - zurechnungszeit - See :func:`zurechnungszeit`. - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost - See :func:`sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost`. - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) + """Entgeltpunkte from East German Beitrags- and Zurechnungszeiten. + + Provides the Entgeltpunkt-basis for calculation of the Erwerbsminderungsrente. + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "zurechnungszeitgrenze". """ - out = sozialversicherung__rente__entgeltpunkte_ost + ( - zurechnungszeit - * sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost + return sozialversicherung__rente__entgeltpunkte_ost + ( + zurechnungszeit * anteil_entgeltpunkte_ost ) - return out - -@policy_function(start_date="2001-01-01") -def zurechnungszeit( - durchschnittliche_entgeltpunkte: float, +@policy_function( + start_date="2000-12-23", end_date="2014-06-30", leaf_name="zurechnungszeit" +) +def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( + mean_entgeltpunkte_pro_bewertungsmonat: float, sozialversicherung__rente__alter_bei_renteneintritt: float, - erwerbsm_rente_params: dict, + sozialversicherung__rente__jahr_renteneintritt: int, + sozialversicherung__rente__monat_renteneintritt: int, + zurechnungszeitgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: - """Additional Entgeltpunkte accumulated through "Zurechnungszeit" for - Erwerbsminderungsrente (public disability insurance) - In the case of the public disability insurance, - pensioners are credited with additional earning points. - They receive their average earned income points for - each year between their age of retirement and the "zurechnungszeitgrenze". - - Parameters - ---------- - durchschnittliche_entgeltpunkte - See :func:`durchschnittliche_entgeltpunkte`. - sozialversicherung__rente__alter_bei_renteneintritt - See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params <erwerbsm_rente_params>. - - - Returns - ------- - Final pension points for Erwerbsminderungsrente (public disability insurance) + """Additional Entgeltpunkte accumulated through "Zurechnungszeit". + + Provides the Entgeltpunkt-basis for calculation of the Erwerbsminderungsrente. + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "zurechnungszeitgrenze". """ - zurechnungszeitgrenze = erwerbsm_rente_params["zurechnungszeitgrenze"] + claiming_month_since_ad = ( + sozialversicherung__rente__jahr_renteneintritt * 12 + + sozialversicherung__rente__monat_renteneintritt + ) + altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.values_to_look_up[ + claiming_month_since_ad - zurechnungszeitgrenze_gestaffelt.base_to_subtract + ] + return ( + altersgrenze_zurechnungszeit + - (sozialversicherung__rente__alter_bei_renteneintritt) + ) * mean_entgeltpunkte_pro_bewertungsmonat + + +@policy_function( + start_date="2014-07-01", end_date="2017-07-16", leaf_name="zurechnungszeit" +) +def zurechnungszeit_mit_einheitlicher_altersgrenze( + mean_entgeltpunkte_pro_bewertungsmonat: float, + sozialversicherung__rente__alter_bei_renteneintritt: float, + zurechnungszeitgrenze: float, +) -> float: + """Additional Entgeltpunkte accumulated through "Zurechnungszeit". + + Provides the Entgeltpunkt-basis for calculation of the Erwerbsminderungsrente. - out = ( + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "zurechnungszeitgrenze". + """ + return ( zurechnungszeitgrenze - (sozialversicherung__rente__alter_bei_renteneintritt) - ) * durchschnittliche_entgeltpunkte + ) * mean_entgeltpunkte_pro_bewertungsmonat - return out + +@policy_function(start_date="2017-07-17", leaf_name="zurechnungszeit") +def zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( + mean_entgeltpunkte_pro_bewertungsmonat: float, + sozialversicherung__rente__alter_bei_renteneintritt: float, + sozialversicherung__rente__jahr_renteneintritt: int, + sozialversicherung__rente__monat_renteneintritt: int, + zurechnungszeitgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Additional Entgeltpunkte accumulated through "Zurechnungszeit". + + Provides the Entgeltpunkt-basis for calculation of the Erwerbsminderungsrente. + + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "zurechnungszeitgrenze". + """ + claiming_month_since_ad = ( + sozialversicherung__rente__jahr_renteneintritt * 12 + + sozialversicherung__rente__monat_renteneintritt + ) + altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.values_to_look_up[ + claiming_month_since_ad - zurechnungszeitgrenze_gestaffelt.base_to_subtract + ] + return ( + altersgrenze_zurechnungszeit + - (sozialversicherung__rente__alter_bei_renteneintritt) + ) * mean_entgeltpunkte_pro_bewertungsmonat @policy_function(start_date="2001-01-01") def rentenartfaktor( teilweise_erwerbsgemindert: bool, - erwerbsm_rente_params: dict, + parameter_rentenartfaktor: dict[str, float], ) -> float: - """rentenartfaktor for Erwerbsminderungsrente - (public disability insurance) + """Rentenartfaktor. Legal reference: SGB VI § 67: rentenartfaktor - - Parameters - ---------- - teilweise_erwerbsgemindert - See basic input variable :ref:`teilweise_erwerbsgemindert <teilweise_erwerbsgemindert>. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params <erwerbsm_rente_params>. - - Returns - ------- - rentenartfaktor - """ - if teilweise_erwerbsgemindert: - out = erwerbsm_rente_params["rentenartfaktor"]["teilw"] - + return parameter_rentenartfaktor["teilweise"] else: - out = erwerbsm_rente_params["rentenartfaktor"]["voll"] + return parameter_rentenartfaktor["voll"] - return out +@policy_function(end_date="2011-12-31", leaf_name="zugangsfaktor") +def zugangsfaktor_ohne_gestaffelte_altersgrenze( + sozialversicherung__rente__alter_bei_renteneintritt: float, + altersgrenze: float, + min_zugangsfaktor: float, + sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ + str, float + ], +) -> float: + """Zugangsfaktor. + + For each month that a pensioner retires before the age limit, a fraction of the + pension is deducted. The maximum deduction is capped. This max deduction is the norm + for the public disability insurance. -@policy_function(start_date="2001-01-01") -def zugangsfaktor( + Legal reference: § 77 Abs. 2-4 SGB VI + """ + zugangsfaktor = ( + 1 + + (sozialversicherung__rente__alter_bei_renteneintritt - altersgrenze) + * ( + sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr[ + "vorzeitiger_renteneintritt" + ] + ) + ) + return max(zugangsfaktor, min_zugangsfaktor) + + +@policy_function(start_date="2012-01-01", leaf_name="zugangsfaktor") +def zugangsfaktor_mit_gestaffelter_altersgrenze( sozialversicherung__rente__alter_bei_renteneintritt: float, wartezeit_langjährig_versichert_erfüllt: bool, - ges_rente_params: dict, - erwerbsm_rente_params: dict, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + sozialversicherung__rente__jahr_renteneintritt: int, + sozialversicherung__rente__monat_renteneintritt: int, + altersgrenze_langjährig_versichert: float, + min_zugangsfaktor: float, + sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ + str, float + ], ) -> float: - """Zugangsfaktor for Erwerbsminderungsrente (public disability insurance) + """Zugangsfaktor. For each month that a pensioner retires before the age limit, a fraction of the pension is deducted. The maximum deduction is capped. This max deduction is the norm @@ -246,47 +293,29 @@ def zugangsfaktor( Paragraph 4 regulates an exceptional case in which pensioners can already retire at 63 without deductions if they can prove 40 years of (Pflichtbeiträge, Berücksichtigungszeiten and certain Anrechnungszeiten or Ersatzzeiten). - - Parameters - ---------- - sozialversicherung__rente__alter_bei_renteneintritt - See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. - wartezeit_langjährig_versichert_erfüllt - See :func:`wartezeit_langjährig_versichert_erfüllt`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params <erwerbsm_rente_params>. - - - Returns - ------- - Zugangsfaktor for Erwerbsminderungsrente (public disability insurance) - """ + claiming_month_since_ad = ( + sozialversicherung__rente__jahr_renteneintritt * 12 + + sozialversicherung__rente__monat_renteneintritt + ) if wartezeit_langjährig_versichert_erfüllt: - altersgrenze_abschlagsfrei = erwerbsm_rente_params[ - "altersgrenze_langj_versicherte_abschlagsfrei" - ] + grenze_abschlagsfrei = altersgrenze_langjährig_versichert else: - altersgrenze_abschlagsfrei = erwerbsm_rente_params["altersgrenze_abschlagsfrei"] + grenze_abschlagsfrei = altersgrenze_gestaffelt.values_to_look_up[ + claiming_month_since_ad - altersgrenze_gestaffelt.base_to_subtract + ] zugangsfaktor = ( 1 - + ( - sozialversicherung__rente__alter_bei_renteneintritt - - altersgrenze_abschlagsfrei - ) + + (sozialversicherung__rente__alter_bei_renteneintritt - grenze_abschlagsfrei) * ( - ges_rente_params["zugangsfaktor_veränderung_pro_jahr"][ + sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr[ "vorzeitiger_renteneintritt" ] ) ) - out = max(zugangsfaktor, erwerbsm_rente_params["min_zugangsfaktor"]) - - return out + return max(zugangsfaktor, min_zugangsfaktor) # TODO(@MImmesberger): Reuse Altersrente Wartezeiten for Erwerbsminderungsrente @@ -299,8 +328,8 @@ def wartezeit_langjährig_versichert_erfüllt( sozialversicherung__rente__ersatzzeiten_monate: float, sozialversicherung__rente__kinderberücksichtigungszeiten_monate: float, sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: float, - ges_rente_params: dict, - erwerbsm_rente_params: dict, + sozialversicherung__rente__mindestpflichtbeitragsjahre_für_anrechenbarkeit_freiwilliger_beitragszeiten: float, + wartezeitgrenze_langjährig_versicherte: float, ) -> bool: """Wartezeit for Rente für langjährige Versicherte (Erwerbsminderung) is fulfilled. @@ -310,40 +339,10 @@ def wartezeit_langjährig_versichert_erfüllt( This pathway makes it possible to claim pension benefits without deductions at the age of 63. - - Parameters - ---------- - sozialversicherung__rente__pflichtbeitragsmonate - See basic input variable - :ref:<sozialversicherung__rente__pflichtbeitragsmonate>`. - sozialversicherung__rente__freiwillige_beitragsmonate - See basic input variable - :ref:<sozialversicherung__rente__freiwillige_beitragsmonate>`. - sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit - See :func:`sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit`. - sozialversicherung__rente__ersatzzeiten_monate - See basic input variable :ref:<sozialversicherung__rente__ersatzzeiten_monate>`. - sozialversicherung__rente__kinderberücksichtigungszeiten_monate - See basic input variable - :ref:<sozialversicherung__rente__kinderberücksichtigungszeiten_monate>`. - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate - See basic input variable - :ref:<sozialversicherung__rente__pflegeberücksichtigungszeiten_monate>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params <erwerbsm_rente_params>`. - - Returns - ------- - Wartezeit for Rente für langjährige Versicherte (Erwerbsminderung) is fulfilled - """ if ( sozialversicherung__rente__pflichtbeitragsmonate / 12 - >= ges_rente_params[ - "mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge" - ] + >= sozialversicherung__rente__mindestpflichtbeitragsjahre_für_anrechenbarkeit_freiwilliger_beitragszeiten ): freiwillige_beitragszeiten = ( sozialversicherung__rente__freiwillige_beitragsmonate @@ -358,48 +357,61 @@ def wartezeit_langjährig_versichert_erfüllt( + sozialversicherung__rente__ersatzzeiten_monate + sozialversicherung__rente__pflegeberücksichtigungszeiten_monate + sozialversicherung__rente__kinderberücksichtigungszeiten_monate - ) / 12 >= erwerbsm_rente_params[ - "wartezeitgrenze_langjährig_versicherte_abschlagsfrei" - ] + ) / 12 >= wartezeitgrenze_langjährig_versicherte + + +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023 (first check whether this is also the case here, not +# only for old-age pensions). +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 +@policy_function() +def anteil_entgeltpunkte_ost( + sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__entgeltpunkte_ost: float, +) -> float: + """Proportion of Entgeltpunkte accumulated in East Germany.""" + if ( + sozialversicherung__rente__entgeltpunkte_west + == sozialversicherung__rente__entgeltpunkte_ost + == 0.0 + ): + out = 0.0 + else: + out = sozialversicherung__rente__entgeltpunkte_ost / ( + sozialversicherung__rente__entgeltpunkte_west + + sozialversicherung__rente__entgeltpunkte_ost + ) + + return out +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023 (first check whether this is also the case here, not +# only for old-age pensions). +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_function() -def durchschnittliche_entgeltpunkte( +def mean_entgeltpunkte_pro_bewertungsmonat( sozialversicherung__rente__entgeltpunkte_west: float, sozialversicherung__rente__entgeltpunkte_ost: float, sozialversicherung__rente__alter_bei_renteneintritt: float, - erwerbsm_rente_params: dict, + altersgrenze_grundbewertung: float, ) -> float: - """Average earning points as part of the "Grundbewertung". - Earnings points are divided by "belegungsfähige Gesamtzeitraum" which is - the period from the age of 17 until the start of the pension. + """Average earning points per Bewertungsmonat (as part of the "Grundbewertung"). - Legal reference: SGB VI § 72: Grundbewertung + Earnings points are divided by "belegungsfähige Gesamtzeitraum" which is the period + from the age of 17 until the start of the pension. - Parameters - ---------- - sozialversicherung__rente__entgeltpunkte_west - See basic input variable :ref:<sozialversicherung__rente__entgeltpunkte_west> - sozialversicherung__rente__entgeltpunkte_ost - See basic input variable :ref:<sozialversicherung__rente__entgeltpunkte_ost> - sozialversicherung__rente__alter_bei_renteneintritt - See :func:`sozialversicherung__rente__alter_bei_renteneintritt`. - erwerbsm_rente_params - See params documentation :ref:`erwerbsm_rente_params <erwerbsm_rente_params>. - - Returns - ------- - average entgeltp + Legal reference: SGB VI § 72: Grundbewertung """ belegungsfähiger_gesamtzeitraum = ( sozialversicherung__rente__alter_bei_renteneintritt - - erwerbsm_rente_params["altersgrenze_grundbewertung"] + - altersgrenze_grundbewertung ) - durchschnittliche_entgeltpunkte = ( + mean_entgeltpunkte_pro_bewertungsmonat = ( sozialversicherung__rente__entgeltpunkte_west + sozialversicherung__rente__entgeltpunkte_ost ) / belegungsfähiger_gesamtzeitraum - return durchschnittliche_entgeltpunkte + return mean_entgeltpunkte_pro_bewertungsmonat diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/formel.yaml b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/formel.yaml new file mode 100644 index 0000000000..0129994b7d --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/formel.yaml @@ -0,0 +1,308 @@ +--- +zurechnungszeitgrenze: + name: + de: Alter bis zu dem Zurechnungszeiten angerechnet werden + en: Age limit for the supplementary period of the public disability insurance + description: + de: >- + § 59 SGB VI (after July 2014) + Zurechnungszeiten werden bis zu dieser Altersgrenze gewährt. + en: >- + § 59 SGB VI (after July 2014) + Supplementary periods are granted up to this age limit. + unit: Years + reference_period: null + type: scalar + 2014-07-01: + value: 62 + 2017-07-17: + note: Claiming year and month based limit. See `zurechnungszeitgrenze`. + reference: G. v. 17.07.2017 BGBl. I S. 2509 +zurechnungszeitgrenze_gestaffelt: + name: + de: Alter bis zu dem Zurechnungszeiten angerechnet werden + en: Age limit for the supplementary period of the public disability insurance + description: + de: >- + § 253a (Anlage 23 bis 2014) + Zurechnungszeiten werden bis zu dieser Altersgrenze gewährt. + en: >- + § 253a (Anlage 23 until 2014) + Supplementary periods are granted up to this age limit. + unit: Years + reference_period: null + type: month_based_phase_inout_of_age_thresholds + 2000-12-23: + reference: Anlage 23, G. v. 20.12.2000 BGBl. I S. 1827 + first_year_to_consider: 1990 + last_year_to_consider: 2030 + 2000: + 12: + years: 63 + months: 0 + 2001: + 1: + years: 62 + months: 11 + 2: + years: 62 + months: 10 + 3: + years: 62 + months: 9 + 4: + years: 62 + months: 8 + 5: + years: 62 + months: 7 + 6: + years: 62 + months: 6 + 7: + years: 62 + months: 5 + 8: + years: 62 + months: 4 + 9: + years: 62 + months: 3 + 10: + years: 62 + months: 2 + 11: + years: 62 + months: 1 + 12: + years: 62 + months: 0 + 2002: + 1: + years: 61 + months: 11 + 2: + years: 61 + months: 10 + 3: + years: 61 + months: 9 + 4: + years: 61 + months: 8 + 5: + years: 61 + months: 7 + 6: + years: 61 + months: 6 + 7: + years: 61 + months: 5 + 8: + years: 61 + months: 4 + 9: + years: 61 + months: 3 + 10: + years: 61 + months: 2 + 11: + years: 61 + months: 1 + 12: + years: 61 + months: 0 + 2003: + 1: + years: 60 + months: 11 + 2: + years: 60 + months: 10 + 3: + years: 60 + months: 9 + 4: + years: 60 + months: 8 + 5: + years: 60 + months: 7 + 6: + years: 60 + months: 6 + 7: + years: 60 + months: 5 + 8: + years: 60 + months: 4 + 9: + years: 60 + months: 3 + 10: + years: 60 + months: 2 + 11: + years: 60 + months: 1 + 12: + years: 60 + months: 0 + 2014-07-01: + reference: Art. 1 Nr. 4 G. v. 23.06.2014 BGBl. I S. 787 + note: Uniform age threshold of 62 years. See `zurechnungszeitgrenze`. + 2017-07-17: + reference: G. v. 17.07.2017 BGBl. I S. 2509 + first_year_to_consider: 1990 + last_year_to_consider: 2030 + 2017: + 12: + years: 62 + months: 0 + 2018: + 1: + years: 62 + months: 3 + 2019: + 1: + years: 62 + months: 6 + 2020: + 1: + years: 63 + months: 0 + 2021: + 1: + years: 63 + months: 6 + 2022: + 1: + years: 64 + months: 0 + 2023: + 1: + years: 64 + months: 6 + 2024: + 1: + years: 65 + months: 0 + 2018-11-28: + reference: Art. 1 G. v. 28.11.2018 BGBl. I S. 2016 + first_year_to_consider: 1990 + last_year_to_consider: 2040 + 2018: + 12: + years: 62 + months: 3 + 2019: + 1: + years: 65 + months: 8 + 2020: + 1: + years: 65 + months: 9 + 2021: + 1: + years: 65 + months: 10 + 2022: + 1: + years: 65 + months: 11 + 2023: + 1: + years: 66 + months: 0 + 2024: + 1: + years: 66 + months: 1 + 2025: + 1: + years: 66 + months: 2 + 2026: + 1: + years: 66 + months: 3 + 2027: + 1: + years: 66 + months: 4 + 2028: + 1: + years: 66 + months: 6 + 2029: + 1: + years: 66 + months: 8 + 2030: + 1: + years: 66 + months: 10 + 2031: + 1: + years: 67 + months: 0 +min_zugangsfaktor: + name: + de: Kleinster möglicher Zugangsfaktor bei der Erwerbsminderungsrente + en: Smallest possible access factor for public disability insurance + description: + de: >- + Abzüge wegen frühzeitigem Eintritt in die Erwerbsminderungsrente + sind bei 10.8% gedeckelt. + § 77 SGB VI, Rentenreformgesetz 1999 (RRG 1999) + http://www.portal-sozialpolitik.de/index.php?page=rentenversicherung + en: Deductions for early retirement are capped at 10.8%. + unit: null + reference_period: null + type: scalar + 2000-01-01: + value: 0.892 +parameter_rentenartfaktor: + name: + de: Rentenartfaktor für teilweise Erwerbsminderungsrente + en: Pension type factor for partial reduction in public disability insurance + description: + de: >- + § 67 SGB VI + Der Rentenartfaktor ist ein festgelegter Faktor für die Rentenberechnung und + bestimmt das Sicherungsziel der Rentenart im Verhältnis zu einer Altersrente. + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/1051-rentenartfaktor.html + en: >- + § 67 SGB VI + The pension type factor is a fixed factor for the pension calculation and + determines the security target of the pension type in relation to an old-age + pension. + https://sozialversicherung-kompetent.de/rentenversicherung/leistungsrecht/1051-rentenartfaktor.html + unit: null + reference_period: null + type: dict + 2001-01-01: + teilweise: 0.5 + voll: 1.0 +altersgrenze_grundbewertung: + name: + de: Altersgrenze des belegungsfähigen Gesamtzeitraum + en: Age limit of belegungsfähiger Gesamtzeitraum + description: + de: >- + SGB VI § 72 + Als Teil der Grundbewertung wird der belegungsfähige Gesamtzeitraum berechnet. + Dieser entspricht dem Zeitraum vom 17. Lebensjahr bis zum Beginn der Rente. + en: >- + SGB VI § 72 + As part of the "Grundbewertung" the "belegungsfähige Gesamtzeitraum" will be + calculated, which is the period from the age of 17 until the start of the pension. + unit: Years + reference_period: null + type: scalar + 2001-01-01: + value: 16 diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py index 8b258df540..9286fa5cb9 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py @@ -1,11 +1,13 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @policy_input() def teilweise_erwerbsgemindert() -> bool: - """Able to provide at least 3 but no more than 6 hours of market labor per day..""" + """Able to provide at least 3 but no more than 6 hours of market labor per day.""" @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/wartezeit.yaml b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/wartezeit.yaml new file mode 100644 index 0000000000..8e6bc4a030 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/wartezeit.yaml @@ -0,0 +1,21 @@ +--- +wartezeitgrenze_langjährig_versicherte: + name: + de: Wartezeitgrenze für Erwerbsminderungsrente + en: Waiting time limit for disability pension + description: + de: >- + § 264d SGB VI + Anzahl an Wartezeitjahren nach § 51 Absatz 3a SGB VI, die für eine abschlagsfreie + Erwerbsminderungsrente mit 63 nachgewiesen werden müssen. + en: >- + § 264d SGB VI + Number of waiting years in accordance with § 51 Absatz 3a SGB VI, which must be + proven for a public disability pension at 63 without deductions. + unit: Years + reference_period: null + type: scalar + 2001-01-01: + value: 35 + 2024-01-01: + value: 40 diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/__init__.py b/src/_gettsim/sozialversicherung/rente/grundrente/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/__init__.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/einkommen.yaml b/src/_gettsim/sozialversicherung/rente/grundrente/einkommen.yaml new file mode 100644 index 0000000000..a5aecb5431 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/grundrente/einkommen.yaml @@ -0,0 +1,57 @@ +--- +anzurechnendes_einkommen_ohne_partner: + name: + de: Einkommensanrechnung Grundrente für Personen ohne verheiratetem Partner + en: Crediting of income for basic pension for individuals without married partner + description: + de: >- + § 97a Abs. 4 S. 2, 4 SGB VI + Werte werden mit dem Rentenwert multipliziert, um Schwellen der + Einkommensanrechnung des Grundrentenzuschlags zu ermitteln + en: >- + § 97a Abs. 4 S. 2, 4 SGB VI + Values are multiplied with the Rentenwert to compute the thresholds of the income + crediting rule of Grundrentenzuschlag + unit: Share + reference_period: null + type: piecewise_linear + 2021-01-01: + 0: + lower_threshold: -inf + upper_threshold: 36.56 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + upper_threshold: 46.78 + rate_linear: 0.6 + 2: + upper_threshold: inf + rate_linear: 1 +anzurechnendes_einkommen_mit_partner: + name: + de: Einkommensanrechnung Grundrente für Personen mit verheiratetem Partner + en: Crediting of income for basic pension for individuals with married partner + description: + de: >- + § 97a Abs. 4 S. 2, 4 SGB VI + Werte werden mit dem Rentenwert multipliziert, um Schwellen der + Einkommensanrechnung des Grundrentenzuschlags zu ermitteln + en: >- + § 97a Abs. 4 S. 2, 4 SGB VI + Values are multiplied with the Rentenwert to compute the thresholds of the income + crediting rule of Grundrentenzuschlag + unit: Share + reference_period: null + type: piecewise_linear + 2021-01-01: + 0: + lower_threshold: -inf + upper_threshold: 57.03 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + upper_threshold: 67.27 + rate_linear: 0.6 + 2: + upper_threshold: inf + rate_linear: 1 diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 878b2ecb20..5393358786 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -1,4 +1,11 @@ -from ttsim import RoundingSpec, piecewise_polynomial, policy_function +from __future__ import annotations + +from ttsim import ( + PiecewisePolynomialParamValue, + RoundingSpec, + piecewise_polynomial, + policy_function, +) @policy_function( @@ -8,20 +15,7 @@ start_date="2021-01-01", ) def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: - """Calculate Grundrentenzuschlag (additional monthly pensions payments resulting - from Grundrente) - - Parameters - ---------- - basisbetrag_m - See :func:`basisbetrag_m`. - anzurechnendes_einkommen_m - See :func:`anzurechnendes_einkommen_m`. - - Returns - ------- - - """ + """Additional monthly pensions payments (Grundrentenzuschlag).""" out = basisbetrag_m - anzurechnendes_einkommen_m return max(out, 0.0) @@ -34,8 +28,7 @@ def einkommen_m( einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m: float, ) -> float: - """Calculate total income relevant for Grundrentenzuschlag before deductions are - subtracted. + """Income relevant for Grundrentenzuschlag before deductions. Some notes: @@ -54,27 +47,10 @@ def einkommen_m( `vorsorgeaufw` -> `freibeträge` Reference: § 97a Abs. 2 S. 1 SGB VI - - Parameters - ---------- - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m - See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m`. - - Returns - ------- - """ # Sum income over different income sources. - out = ( + return ( einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m # income from self-employment @@ -82,8 +58,6 @@ def einkommen_m( + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m ) - return out - @policy_function( rounding_spec=RoundingSpec( @@ -96,9 +70,10 @@ def anzurechnendes_einkommen_m( einkommen_m_ehe: float, familie__anzahl_personen_ehe: int, sozialversicherung__rente__altersrente__rentenwert: float, - ges_rente_params: dict, + anzurechnendes_einkommen_ohne_partner: PiecewisePolynomialParamValue, + anzurechnendes_einkommen_mit_partner: PiecewisePolynomialParamValue, ) -> float: - """Calculate income which is deducted from Grundrentenzuschlag. + """Income which is deducted from Grundrentenzuschlag. Apply allowances. There are upper and lower thresholds for singles and couples. 60% of income between the upper and lower threshold is credited against @@ -106,20 +81,6 @@ def anzurechnendes_einkommen_m( against the Grundrentenzuschlag. Reference: § 97a Abs. 4 S. 2, 4 SGB VI - - Parameters - ---------- - einkommen_m_ehe - See :func:`einkommen_m_ehe`. - familie__anzahl_personen_ehe - See :func:`familie__anzahl_personen_ehe`. - sozialversicherung__rente__altersrente__rentenwert - See :func:`sozialversicherung__rente__altersrente__rentenwert`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - Returns - ------- - """ # Calculate relevant income following the crediting rules using the values for @@ -127,23 +88,14 @@ def anzurechnendes_einkommen_m( # Note: Thresholds are defined relativ to rentenwert which is implemented by # dividing the income by rentenwert and multiply rentenwert to the result. if familie__anzahl_personen_ehe == 2: - einkommensanr_params = ges_rente_params["grundr_einkommensanr_verheiratet"] + params = anzurechnendes_einkommen_mit_partner else: - einkommensanr_params = ges_rente_params["grundr_einkommensanr_single"] - - out = ( - piecewise_polynomial( - x=einkommen_m_ehe / sozialversicherung__rente__altersrente__rentenwert, - thresholds=einkommensanr_params["thresholds"], - rates=einkommensanr_params["rates"], - intercepts_at_lower_thresholds=einkommensanr_params[ - "intercepts_at_lower_thresholds" - ], - ) - * sozialversicherung__rente__altersrente__rentenwert - ) + params = anzurechnendes_einkommen_ohne_partner - return out + return sozialversicherung__rente__altersrente__rentenwert * piecewise_polynomial( + x=einkommen_m_ehe / sozialversicherung__rente__altersrente__rentenwert, + parameters=params, + ) @policy_function( @@ -157,72 +109,37 @@ def basisbetrag_m( bewertungszeiten_monate: int, sozialversicherung__rente__altersrente__rentenwert: float, sozialversicherung__rente__altersrente__zugangsfaktor: float, - ges_rente_params: dict, + maximaler_zugangsfaktor: float, + berücksichtigte_wartezeit_monate: dict[str, int], ) -> float: - """Calculate additional monthly pensions payments resulting from Grundrente, without - taking into account income crediting rules. - - The Zugangsfaktor is limited to 1 and considered Grundrentezeiten - are limited to 35 years (420 months). - - Parameters - ---------- - mean_entgeltpunkte_zuschlag - See :func:`mean_entgeltpunkte_zuschlag`. - bewertungszeiten_monate - See basic input variable - :ref:`bewertungszeiten_monate <bewertungszeiten_monate>`. - sozialversicherung__rente__altersrente__rentenwert - See :func:`sozialversicherung__rente__altersrente__rentenwert`. - sozialversicherung__rente__altersrente__zugangsfaktor - See :func:`sozialversicherung__rente__altersrente__zugangsfaktor`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- + """Grundrente without taking into account income crediting rules. + The Zugangsfaktor is limited to 1 and considered Grundrentezeiten are limited to + 35 years (420 months). """ - # Winsorize Bewertungszeiten and Zugangsfaktor at maximum values - bewertungszeiten_monate_wins = min( + bewertungszeiten = min( bewertungszeiten_monate, - ges_rente_params["grundrentenzeiten_monate"]["max"], + berücksichtigte_wartezeit_monate["max"], ) - ges_rente_zugangsfaktor_wins = min( + zugangsfaktor = min( sozialversicherung__rente__altersrente__zugangsfaktor, - ges_rente_params["grundrente_zugangsfaktor_max"], + maximaler_zugangsfaktor, ) - out = ( + return ( mean_entgeltpunkte_zuschlag - * bewertungszeiten_monate_wins + * bewertungszeiten * sozialversicherung__rente__altersrente__rentenwert - * ges_rente_zugangsfaktor_wins + * zugangsfaktor ) - return out @policy_function(start_date="2021-01-01") -def durchschnittliche_entgeltpunkte( +def mean_entgeltpunkte_pro_bewertungsmonat( mean_entgeltpunkte: float, bewertungszeiten_monate: int ) -> float: - """Compute average number of Entgeltpunkte earned per month of - Grundrentenbewertungszeiten. - - Parameters - ---------- - mean_entgeltpunkte - See basic input variable - :ref:`mean_entgeltpunkte <mean_entgeltpunkte>`. - bewertungszeiten_monate - See basic input variable - :ref:`bewertungszeiten_monate <bewertungszeiten_monate>`. - - Returns - ------- - - """ + """Average number of Entgeltpunkte earned per month of Grundrentenbewertungszeiten.""" if bewertungszeiten_monate > 0: out = mean_entgeltpunkte / bewertungszeiten_monate @@ -243,39 +160,23 @@ def durchschnittliche_entgeltpunkte( ) def höchstbetrag_m( grundrentenzeiten_monate: int, - ges_rente_params: dict, + berücksichtigte_wartezeit_monate: dict[str, int], + höchstwert_der_entgeltpunkte: dict[str, float], ) -> float: - """Calculate the maximum allowed number of average Entgeltpunkte (per month) after - adding bonus of Entgeltpunkte for a given number of Grundrentenzeiten. - - Parameters - ---------- - grundrentenzeiten_monate - See basic input variable :ref:`grundrentenzeiten_monate <grundrentenzeiten_monate>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - # Calculate number of months above minimum threshold + """Maximum allowed number of average Entgeltpunkte.""" months_above_thresh = ( min( grundrentenzeiten_monate, - ges_rente_params["grundrentenzeiten_monate"]["max"], + berücksichtigte_wartezeit_monate["max"], ) - - ges_rente_params["grundrentenzeiten_monate"]["min"] + - berücksichtigte_wartezeit_monate["min"] ) - # Calculate höchstwert - out = ( - ges_rente_params["grundr_höchstwert"]["base"] - + ges_rente_params["grundr_höchstwert"]["increment"] * months_above_thresh + return ( + höchstwert_der_entgeltpunkte["base"] + + höchstwert_der_entgeltpunkte["increment"] * months_above_thresh ) - return out - @policy_function( rounding_spec=RoundingSpec( @@ -287,76 +188,45 @@ def höchstbetrag_m( vectorization_strategy="loop", ) def mean_entgeltpunkte_zuschlag( - durchschnittliche_entgeltpunkte: float, + mean_entgeltpunkte_pro_bewertungsmonat: float, höchstbetrag_m: float, grundrentenzeiten_monate: int, - ges_rente_params: dict, + berücksichtigte_wartezeit_monate: dict[str, int], + bonusfaktor: float, ) -> float: - """Calculate additional Entgeltpunkte for pensioner. + """Additional Entgeltpunkte. In general, the average of monthly Entgeltpunkte earnd in Grundrentenzeiten is doubled, or extended to the individual Höchstwert if doubling would exceed the Höchstwert. Then, the value is multiplied by 0.875. Legal reference: § 76g SGB VI - - Parameters - ---------- - durchschnittliche_entgeltpunkte - See :func:`durchschnittliche_entgeltpunkte`. - höchstbetrag_m - See :func:`höchstbetrag_m`. - grundrentenzeiten_monate - See basic input variable :ref:`grundrentenzeiten_monate <grundrentenzeiten_monate>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - """ # Return 0 if Grundrentenzeiten below minimum - if grundrentenzeiten_monate < ges_rente_params["grundrentenzeiten_monate"]["min"]: + if grundrentenzeiten_monate < berücksichtigte_wartezeit_monate["min"]: out = 0.0 else: # Case 1: Entgeltpunkte less than half of Höchstwert - if durchschnittliche_entgeltpunkte <= (0.5 * höchstbetrag_m): - out = durchschnittliche_entgeltpunkte + if mean_entgeltpunkte_pro_bewertungsmonat <= (0.5 * höchstbetrag_m): + out = mean_entgeltpunkte_pro_bewertungsmonat # Case 2: Entgeltpunkte more than half of Höchstwert, but below Höchstwert - elif durchschnittliche_entgeltpunkte < höchstbetrag_m: - out = höchstbetrag_m - durchschnittliche_entgeltpunkte + elif mean_entgeltpunkte_pro_bewertungsmonat < höchstbetrag_m: + out = höchstbetrag_m - mean_entgeltpunkte_pro_bewertungsmonat # Case 3: Entgeltpunkte above Höchstwert - elif durchschnittliche_entgeltpunkte > höchstbetrag_m: + elif mean_entgeltpunkte_pro_bewertungsmonat > höchstbetrag_m: out = 0.0 # Multiply additional Engeltpunkte by factor - out = out * ges_rente_params["grundr_faktor_bonus"] - - return out + return out * bonusfaktor @policy_function(start_date="2021-01-01") def grundsätzlich_anspruchsberechtigt( grundrentenzeiten_monate: int, - ges_rente_params: dict, + berücksichtigte_wartezeit_monate: dict[str, int], ) -> bool: - """Whether person has accumulated enough insured years to be eligible. - - Parameters - ---------- - grundrentenzeiten_monate - See :func:`grundrentenzeiten_monate`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - - """ - out = ( - grundrentenzeiten_monate >= ges_rente_params["grundrentenzeiten_monate"]["min"] - ) - return out + """Has accumulated enough insured years to be eligible.""" + return grundrentenzeiten_monate >= berücksichtigte_wartezeit_monate["min"] diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py index 6796f05265..80ce0bc727 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/rentenformel.yaml b/src/_gettsim/sozialversicherung/rente/grundrente/rentenformel.yaml new file mode 100644 index 0000000000..17846c05d6 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/grundrente/rentenformel.yaml @@ -0,0 +1,50 @@ +--- +höchstwert_der_entgeltpunkte: + name: + de: Höchstwert der Entgeltpunkte für Grundrente + en: Maximum value of Entgeltpunkte for Grundrente + description: + de: >- + § 76g Abs. 4 S. 3, 4 SGB VI + Konstante zur Bestimmung des Höchstwerts der durchschnittlichen Entgeltpunkte und + des Effekts eines weiteren Monats an Grundrentenzeiten auf Höchstwert. + en: >- + § 76g Abs. 4 S. 3, 4 SGB VI + constant to determine Höchstwert of additional Entgeltpunkte and effect of an + additional month of Grundrentenzeiten on Höchstwert. + unit: null + reference_period: null + type: dict + 2021-01-01: + base: 0.0334 + increment: 0.001389 +maximaler_zugangsfaktor: + name: + de: Zugangsfaktor bei Grundrente + en: Access factor for basic pension + description: + de: § 77 Abs. 2 SGB VI, Der Zugangsfaktor für die Grundrente ist auf 1 begrenzt. + en: § 77 Abs. 2 SGB VI, The entry factor for the basic pension is capped at 1. + unit: null + reference_period: null + type: scalar + 2021-01-01: + value: 1 +bonusfaktor: + name: + de: Bonusfaktor aus Grundrente + en: Bonus factor from basic pension + description: + de: >- + §§ 76g Abs. 4 S. 3, 4 SGB VI + Faktor mit dem die durch die Grundrente zusätzlich erhaltenen Entgeltpunkte + multipliziert werden. + en: >- + §§ 76g Abs. 4 S. 3, 4 SGB VI + The additional Entgeltpunkte from the basic pension are multiplied with this + factor. + unit: null + reference_period: null + type: scalar + 2021-01-01: + value: 0.875 diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/wartezeit.yaml b/src/_gettsim/sozialversicherung/rente/grundrente/wartezeit.yaml new file mode 100644 index 0000000000..d69d763e72 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/grundrente/wartezeit.yaml @@ -0,0 +1,21 @@ +--- +berücksichtigte_wartezeit_monate: + name: + de: Berücksichtigte Wartezeit für Grundrente + en: Recognized waiting time for basic pension + description: + de: >- + § 76g Abs. 4 S. 5,6 / Abs. 1 S. 1 SGB VI + Minimal benötigte Grundrentenzeiten um zur Grundrente berechtigt zu sein und Zahl + an Grundrentenzeiten ab der zusätzliche Monate an Grundrentenzeiten nicht + berücksichtigt werden + en: >- + § 76g Abs. 4 S. 5,6 / Abs. 1 S. 1 SGB VI + Minimal number of Grundrentenzeiten required to be entitled to Grundrente and + maximum number of months that are considered for Grundrente. + unit: Months + reference_period: null + type: dict + 2021-01-01: + min: 396 + max: 420 diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py index 8d96e516de..3370c3a264 100644 --- a/src/_gettsim/sozialversicherung/rente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input @@ -8,11 +10,17 @@ def bezieht_rente() -> bool: """Draws public pension benefits.""" +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_input() def entgeltpunkte_ost() -> float: """Earnings points for pension claim accumulated in Eastern states.""" +# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East +# Germany starting in July 2023. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_input() def entgeltpunkte_west() -> float: """Earnings points for pension claim accumulated in Western states.""" @@ -20,7 +28,8 @@ def entgeltpunkte_west() -> float: @policy_input() def ersatzzeiten_monate() -> float: - """Total months during military, persecution/escape, internment, and consecutive sickness.""" + """Total months during military, persecution/escape, internment, and consecutive + sickness.""" @policy_input() @@ -60,7 +69,8 @@ def monate_in_arbeitslosigkeit() -> float: @policy_input() def monate_in_arbeitsunfähigkeit() -> float: - """Total months of sickness, rehabilitation, measures for worklife participation(Teilhabe).""" + """Total months of sickness, rehabilitation, measures for worklife + participation(Teilhabe).""" @policy_input() @@ -80,7 +90,8 @@ def monate_in_schulausbildung() -> float: @policy_input() def monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit() -> float: - """Total months of unemployment (only time of Entgeltersatzleistungen, not ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld.""" + """Total months of unemployment (only time of Entgeltersatzleistungen, not + ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld.""" @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/wartezeit.py b/src/_gettsim/sozialversicherung/rente/wartezeit.py index 1c2d683b14..f4d95dd17c 100644 --- a/src/_gettsim/sozialversicherung/rente/wartezeit.py +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.py @@ -1,5 +1,7 @@ """Pension-relevant periods.""" +from __future__ import annotations + from ttsim import policy_function @@ -8,31 +10,12 @@ def mindestwartezeit_erfüllt( pflichtbeitragsmonate: float, freiwillige_beitragsmonate: float, ersatzzeiten_monate: float, - ges_rente_params: dict, + wartezeitgrenzen: dict[str, float], ) -> bool: - """Whether Allgemeine Wartezeit has been completed. Aggregates time - periods that are relevant for the general eligibility of the - regular pension (regelaltersrente). "Allgemeine Wartezeit". - - Parameters - ---------- - pflichtbeitragsmonate - See :func:`pflichtbeitragsmonate`. - freiwillige_beitragsmonate - See :func:`freiwillige_beitragsmonate`. - ersatzzeiten_monate - See :func:`ersatzzeiten_monate`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Fulfilled Wartezeit von 5 Jahren. - - """ + """Minimal Wartezeit has been completed.""" return ( pflichtbeitragsmonate + freiwillige_beitragsmonate + ersatzzeiten_monate - ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_5"] + ) / 12 >= wartezeitgrenzen["wartezeit_5"] @policy_function() @@ -40,31 +23,12 @@ def wartezeit_15_jahre_erfüllt( pflichtbeitragsmonate: float, freiwillige_beitragsmonate: float, ersatzzeiten_monate: float, - ges_rente_params: dict, + wartezeitgrenzen: dict[str, float], ) -> bool: - """Whether Wartezeit von 15 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the Altersrente für Frauen - and Leistungen zur Teilhabe. Wartezeit von 15 Jahren. - - Parameters - ---------- - pflichtbeitragsmonate - See :func:`pflichtbeitragsmonate`. - freiwillige_beitragsmonate - See :func:`freiwillige_beitragsmonate`. - ersatzzeiten_monate - See :func:`ersatzzeiten_monate`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Fulfilled Wartezeit von 15 Jahren - - """ + """Wartezeit of 15 years completed.""" return ( pflichtbeitragsmonate + freiwillige_beitragsmonate + ersatzzeiten_monate - ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_15"] + ) / 12 >= wartezeitgrenzen["wartezeit_15"] @policy_function() @@ -75,34 +39,11 @@ def wartezeit_35_jahre_erfüllt( ersatzzeiten_monate: float, kinderberücksichtigungszeiten_monate: float, pflegeberücksichtigungszeiten_monate: float, - ges_rente_params: dict, + wartezeitgrenzen: dict[str, float], ) -> bool: - """Whether Wartezeit von 35 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the eligibility of Altersrente für - langjährig Versicherte (pension for long-term insured). Wartezeit von 35 Jahren. All - "rentenrechtliche Zeiten" are considered. - - Parameters - ---------- - pflichtbeitragsmonate - See :func:`pflichtbeitragsmonate`. - freiwillige_beitragsmonate - See :func:`freiwillige_beitragsmonate`. - ersatzzeiten_monate - See :func:`ersatzzeiten_monate`. - anrechnungsmonate_35_jahre_wartezeit - See :func:`anrechnungsmonate_35_jahre_wartezeit`. - kinderberücksichtigungszeiten_monate - See :func:`kinderberücksichtigungszeiten_monate`. - pflegeberücksichtigungszeiten_monate - See :func:`pflegeberücksichtigungszeiten_monate`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Fulfilled Wartezeit von 35 Jahren + """Wartezeit of 35 years completed. + All "rentenrechtliche Zeiten" are considered. """ return ( pflichtbeitragsmonate @@ -111,7 +52,7 @@ def wartezeit_35_jahre_erfüllt( + ersatzzeiten_monate + kinderberücksichtigungszeiten_monate + pflegeberücksichtigungszeiten_monate - ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_35"] + ) / 12 >= wartezeitgrenzen["wartezeit_35"] @policy_function(start_date="2012-01-01") @@ -122,43 +63,19 @@ def wartezeit_45_jahre_erfüllt( ersatzzeiten_monate: float, kinderberücksichtigungszeiten_monate: float, pflegeberücksichtigungszeiten_monate: float, - ges_rente_params: dict, + wartezeitgrenzen: dict[str, float], + mindestpflichtbeitragsjahre_für_anrechenbarkeit_freiwilliger_beitragszeiten: float, ) -> bool: - """Whether Wartezeit von 45 Jahren Wartezeit has been completed. - Aggregates time periods that are relevant for the eligibility of Altersrente für - besonders langjährig Versicherte (pension for very long-term insured). Wartezeit von - 45 Jahren. Not all "rentenrechtliche Zeiten" are considered. Years with voluntary - contributions are only considered if at least 18 years of mandatory contributions - (pflichtbeitragsmonate). Not all anrechnungszeiten are considered, but only - specific ones (e.g. ALG I, Kurzarbeit but not ALG II). - - Parameters - ---------- - pflichtbeitragsmonate - See basic input variable :ref:`pflichtbeitragsmonate <pflichtbeitragsmonate>`. - freiwillige_beitragsmonate - See basic input variable :ref:`freiwillige_beitragsmonate <freiwillige_beitragsmonate>`. - anrechnungsmonate_45_jahre_wartezeit - See :func:`anrechnungsmonate_45_jahre_wartezeit`. - ersatzzeiten_monate - See basic input variable :ref:`ersatzzeiten_monate <ersatzzeiten_monate>`. - kinderberücksichtigungszeiten_monate - See basic input variable :ref:`kinderberücksichtigungszeiten_monate <kinderberücksichtigungszeiten_monate>`. - pflegeberücksichtigungszeiten_monate - See basic input variable :ref:`pflegeberücksichtigungszeiten_monate <pflegeberücksichtigungszeiten_monate>`. - ges_rente_params - See params documentation :ref:`ges_rente_params <ges_rente_params>`. - - Returns - ------- - Fulfilled Wartezeit von 45 Jahren + """Wartezeit of 45 years completed. + Not all "rentenrechtliche Zeiten" are considered. Years with voluntary contributions + are only considered if at least 18 years of mandatory contributions + (pflichtbeitragsmonate). Not all anrechnungszeiten are considered, but only specific + ones (e.g. ALG I, Kurzarbeit but not ALG II). """ if ( pflichtbeitragsmonate / 12 - >= ges_rente_params[ - "mindestpflichtbeitragsjahre_für_anrechnbarkeit_freiwilliger_beiträge" - ] + >= mindestpflichtbeitragsjahre_für_anrechenbarkeit_freiwilliger_beitragszeiten ): freiwillige_beitragszeiten = freiwillige_beitragsmonate else: @@ -171,7 +88,7 @@ def wartezeit_45_jahre_erfüllt( + ersatzzeiten_monate + pflegeberücksichtigungszeiten_monate + kinderberücksichtigungszeiten_monate - ) / 12 >= ges_rente_params["thresholds_wartezeiten"]["wartezeit_45"] + ) / 12 >= wartezeitgrenzen["wartezeit_45"] @policy_function() @@ -183,31 +100,10 @@ def anrechnungsmonate_35_jahre_wartezeit( monate_in_ausbildungssuche: float, monate_in_schulausbildung: float, ) -> float: - """Adds up all times that are accounted for in "Anrechnungszeiten" - relevant for "Wartezeit von 35 Jahren" i.e. for Altersrente für - langjährig Versicherte (pension for long term insured). - (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, - Wartezeiten, Ausgabe 2021, S. 24.) - - - Parameters - ---------- - monate_in_arbeitsunfähigkeit - See :func:`monate_in_arbeitsunfähigkeit`. - krankheitszeiten_ab_16_bis_24_monate - See :func:`krankheitszeiten_ab_16_bis_24_monate`. - monate_in_mutterschutz - See :func:`monate_in_mutterschutz`. - monate_in_arbeitslosigkeit - See :func:`monate_in_arbeitslosigkeit`. - monate_in_ausbildungssuche - See :func:`monate_in_ausbildungssuche`. - monate_in_schulausbildung - See :func:`monate_in_schulausbildung`. - - Returns - ------- - Anrechnungszeit in months + """Anrechnungszeit for 35 years of Wartezeit. + + Reference: Studientext der Deutschen Rentenversicherung, Nr. 19, + Wartezeiten, Ausgabe 2021, S. 24. """ return ( monate_in_arbeitsunfähigkeit @@ -225,26 +121,12 @@ def anrechnungsmonate_45_jahre_wartezeit( monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: float, monate_geringfügiger_beschäftigung: float, ) -> float: - """Adds up all times NOT included in Beitragszeiten, Berücksichtigungszeiten, - Ersatzzeiten (a variant of Anrechnungszeiten) that are accounted for in "Wartezeit - von 45 Jahren" i.e. for Altersrente für besonders langjährig Versicherte (pension - for very long term insured). "nur Anrechnungszeiten mit Bezug von - Entgeltersatzleistungen der Arbeitsförderung, Leistungen bei Krankheit und - Übergangsgeld". (Ref: Studientext der Deutschen Rentenversicherung, Nr. 19, - Wartezeiten, Ausgabe 2021, S. 24) - - Parameters - ---------- - monate_in_arbeitsunfähigkeit - See :func:`monate_in_arbeitsunfähigkeit`. - monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit - See :func:`monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit`. - monate_geringfügiger_beschäftigung - See :func:`monate_geringfügiger_beschäftigung`. - Returns - ------- - Anrechnungszeit in months. + """Anrechnungszeit relevant for 45 years of Wartezeit. + Reference: Studientext der Deutschen Rentenversicherung, Nr. 19, Wartezeiten, + Ausgabe 2021, S. 24. + > "nur Anrechnungszeiten mit Bezug von Entgeltersatzleistungen der Arbeitsförderung, + > Leistungen bei Krankheit und Übergangsgeld". """ return ( monate_in_arbeitsunfähigkeit diff --git a/src/_gettsim/sozialversicherung/rente/wartezeit.yaml b/src/_gettsim/sozialversicherung/rente/wartezeit.yaml new file mode 100644 index 0000000000..5e53d06f39 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.yaml @@ -0,0 +1,39 @@ +--- +wartezeitgrenzen: + name: + de: Zeitgrenzen für Wartezeiten + en: Time thresholds for waiting times + description: + de: >- + Zeitgrenzen, die für Erfüllung einer Wartezeit notwendig sind (in Jahren). + en: >- + Time thresholds for accomplishing waiting times (in years). + unit: Years + reference_period: null + type: dict + 1980-01-01: + wartezeit_5: 5 + wartezeit_15: 15 + wartezeit_35: 35 + 2012-01-01: + updates_previous: true + wartezeit_45: 45 +mindestpflichtbeitragsjahre_für_anrechenbarkeit_freiwilliger_beitragszeiten: + name: + de: >- + Anzahl der Mindestpflichtbeitragsjahre, von der an freiwillige Beiträge + angerechnet werden. + en: >- + Minimum statutory contribution years for the inclusion of voluntary contributions + description: + de: >- + § 51 Abs. 3a SGB VI + https://www.gesetze-im-internet.de/sgb_6/__51.html + en: >- + § 51 Abs. 3a SGB VI + https://www.gesetze-im-internet.de/sgb_6/__51.html + unit: Years + reference_period: null + type: scalar + 1980-01-01: + value: 18 diff --git a/src/_gettsim/unterhalt/__init__.py b/src/_gettsim/unterhalt/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/unterhalt/__init__.py +++ b/src/_gettsim/unterhalt/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/unterhalt/inputs.py b/src/_gettsim/unterhalt/inputs.py index 143c84345c..db0b65a2e7 100644 --- a/src/_gettsim/unterhalt/inputs.py +++ b/src/_gettsim/unterhalt/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/unterhalt/unterhalt.py b/src/_gettsim/unterhalt/unterhalt.py index a21c799f3c..e8eee90a6d 100644 --- a/src/_gettsim/unterhalt/unterhalt.py +++ b/src/_gettsim/unterhalt/unterhalt.py @@ -1,4 +1,6 @@ -"""Alimony payments (Unterhalt).""" +"""Unterhalt (child support).""" + +from __future__ import annotations from ttsim import policy_function @@ -7,29 +9,14 @@ def kind_festgelegter_zahlbetrag_m( anspruch_m: float, kindergeld__betrag_m: float, - unterhalt_params: dict, familie__kind: bool, + abzugsrate_kindergeld: dict[str, float], ) -> float: """Monthly actual child alimony payments to be received by the child after - deductions. - - Parameters - ---------- - anspruch_m - See basic input variable :ref:`anspruch_m <anspruch_m>`. - kindergeld__betrag_m - See :func:`kindergeld__betrag_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params <unterhalt_params>`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - - Returns - ------- - """ + deductions.""" if familie__kind: - abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["kind"] + abzugsrate = abzugsrate_kindergeld["minderjährig"] else: - abzugsrate = unterhalt_params["abzugsrate_kindergeld"]["erwachsener"] + abzugsrate = abzugsrate_kindergeld["volljährig"] return anspruch_m - abzugsrate * kindergeld__betrag_m diff --git a/src/_gettsim/unterhalt/unterhalt.yaml b/src/_gettsim/unterhalt/unterhalt.yaml new file mode 100644 index 0000000000..50dd0f4dcc --- /dev/null +++ b/src/_gettsim/unterhalt/unterhalt.yaml @@ -0,0 +1,25 @@ +--- +abzugsrate_kindergeld: + name: + de: Verringerung des Kindesunterhalts durch Kindergeld + en: Reduction of child alimony payments due to child benefit + description: + de: >- + § 1612b BGB + Das Kindergeld zählt als Einkommen des Kindes, weshalb es bei der Berechnung von + Unterhalt Berücksichtigung findet. Erhält der betreuende Elternteil das + Kindergeld für ein minderjähriges Kind, so kann der andere unterhaltspflichtige + Elternteil das hälftige Kindergeld bei der Unterhaltsberechnung in Abzug bringen. + en: >- + § 1612b BGB + Child benefit counts as the child's income, which is why it is taken into + account when calculating the child alimony payment. If the parent taking care of + the child receives the child benefit for a minor child, the other parent liable + for child alimony payments can deduct half of the child benefit when calculating + alimony. + unit: Share + reference_period: null + type: dict + 2008-01-01: + minderjährig: 0.5 + volljährig: 1 diff --git a/src/_gettsim/unterhaltsvorschuss/__init__.py b/src/_gettsim/unterhaltsvorschuss/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/unterhaltsvorschuss/__init__.py +++ b/src/_gettsim/unterhaltsvorschuss/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index ec27aebc26..b8f85f2b6d 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -1,15 +1,23 @@ """Advance alimony payments (Unterhaltsvorschuss).""" -import numpy +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING from ttsim import ( AggType, RoundingSpec, agg_by_p_id_function, join, + param_function, policy_function, ) +if TYPE_CHECKING: + from ttsim import ConsecutiveInt1dLookupTableParamValue, RawParam + from ttsim.typing import TTSIMArray + @agg_by_p_id_function(agg_type=AggType.SUM) def an_elternteil_auszuzahlender_betrag_m( @@ -45,19 +53,6 @@ def betrag_m( The amount is specified in §1612a BGB and, ultimately, in Mindestunterhaltsverordnung. - - Parameters - ---------- - unterhalt__tatsächlich_erhaltener_betrag_m - See basic input variable `unterhalt__tatsächlich_erhaltener_betrag_m`. - anspruchshöhe_m - See :func:`anspruchshöhe_m`. - elternteil_alleinerziehend - See :func:`elternteil_alleinerziehend`. - - Returns - ------- - """ if elternteil_alleinerziehend: out = max(anspruchshöhe_m - unterhalt__tatsächlich_erhaltener_betrag_m, 0.0) @@ -69,26 +64,13 @@ def betrag_m( @policy_function(vectorization_strategy="not_required") def elternteil_alleinerziehend( - kindergeld__p_id_empfänger: numpy.ndarray[int], - p_id: numpy.ndarray[int], - familie__alleinerziehend: numpy.ndarray[bool], -) -> numpy.ndarray[bool]: + kindergeld__p_id_empfänger: TTSIMArray, # int + p_id: TTSIMArray, # int + familie__alleinerziehend: TTSIMArray, # bool +) -> TTSIMArray: # bool """Check if parent that receives Kindergeld is a single parent. Only single parents receive Kindergeld. - - Parameters - ---------- - kindergeld__p_id_empfänger - See basic input variable :ref:`kindergeld__p_id_empfänger`. - p_id - See basic input variable :ref:`p_id`. - familie__alleinerziehend - See basic input variable :ref:`familie__alleinerziehend`. - - Returns - ------- - """ return join( foreign_key=kindergeld__p_id_empfänger, @@ -113,38 +95,22 @@ def not_implemented_m() -> float: ) -@policy_function(start_date="2023-01-01", leaf_name="kindergeld_erstes_kind_m") -def kindergeld_erstes_kind_ohne_staffelung_m(kindergeld_params: dict) -> float: - """Kindergeld for first child when Kindergeld does not depend on number of children. - - Parameters - ---------- - - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. - - Returns - ------- - - """ - return kindergeld_params["kindergeld"] - - -@policy_function(end_date="2022-12-31", leaf_name="kindergeld_erstes_kind_m") -def kindergeld_erstes_kind_gestaffelt_m(kindergeld_params: dict) -> float: - """Kindergeld for first child when Kindergeld does depend on number of children. - - Parameters - ---------- - - kindergeld_params - See params documentation :ref:`kindergeld_params <kindergeld_params>`. +@param_function(start_date="2023-01-01", leaf_name="kindergeld_erstes_kind_m") +def kindergeld_erstes_kind_ohne_staffelung_m( + kindergeld__satz: float, +) -> float: + """Kindergeld for first child when Kindergeld does not depend on number of children.""" + return kindergeld__satz - Returns - ------- - """ - return kindergeld_params["kindergeld"][1] +@param_function(end_date="2022-12-31", leaf_name="kindergeld_erstes_kind_m") +def kindergeld_erstes_kind_gestaffelt_m( + kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Kindergeld for first child when Kindergeld depends on number of children.""" + return kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ + 1 - kindergeld__satz_nach_anzahl_kinder.base_to_subtract + ] @policy_function( @@ -156,8 +122,9 @@ def kindergeld_erstes_kind_gestaffelt_m(kindergeld_params: dict) -> float: def unterhaltsvorschuss_anspruch_m_2009_bis_2014( alter: int, kindergeld_erstes_kind_m: float, - unterhaltsvors_params: dict, - eink_st_abzuege_params: dict, + berechtigte_altersgruppen: dict[str, Altersgrenzen], + faktor_jüngste_altersgruppe: float, + einkommensteuer__parameter_kinderfreibetrag: dict[str, float], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. @@ -169,37 +136,28 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( Rule was in priciple also active for 2015 but has been overwritten by an Anwendungsvorschrift as Kinderfreibetrag and Kindergeld changed on July 2015. - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kindergeld_erstes_kind_m - See :func:`kindergeld_erstes_kind_m`. - eink_st_abzuege_params - See params documentation :ref:`eink_st_abzuege_params <eink_st_abzuege_params>`. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params <unterhaltsvors_params>`. - - Returns - ------- - """ # TODO(@MImmesberger): Remove explicit parameter conversion. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/575 - altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] - - kinderfreibetrag_sächl_existenzmin = eink_st_abzuege_params["kinderfreib"][ - "sächl_existenzmin" + sächliches_existenzmininmum = einkommensteuer__parameter_kinderfreibetrag[ + "sächliches_existenzminimum" ] - if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: + if ( + berechtigte_altersgruppen["kleinkind"].min_alter + <= alter + <= berechtigte_altersgruppen["kleinkind"].max_alter + ): out = ( - unterhaltsvors_params["faktor_jüngste_altersgruppe"] - * (2 * kinderfreibetrag_sächl_existenzmin / 12) + faktor_jüngste_altersgruppe * (2 * sächliches_existenzmininmum / 12) - kindergeld_erstes_kind_m ) - elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: - out = 2 * kinderfreibetrag_sächl_existenzmin / 12 - kindergeld_erstes_kind_m + elif ( + berechtigte_altersgruppen["schulkind"].min_alter + <= alter + <= berechtigte_altersgruppen["schulkind"].max_alter + ): + out = 2 * sächliches_existenzmininmum / 12 - kindergeld_erstes_kind_m else: out = 0.0 @@ -214,33 +172,27 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( ) def anspruchshöhe_m_anwendungsvors( alter: int, - unterhaltsvors_params: dict, + berechtigte_altersgruppen: dict[str, Altersgrenzen], + unterhaltsvorschuss_nach_anwendungsvorschrift: dict[str, float], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. Rule anspruchshöhe_m_2009_bis_2014 was in priciple also active for 2015 but has been overwritten by an Anwendungsvorschrift as Kinderfreibetrag and Kindergeld changed in July 2015. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params <unterhaltsvors_params>`. - - Returns - ------- - """ - altersgrenzen = unterhaltsvors_params["altersgrenzen_bezug"] - - unterhaltsvors = unterhaltsvors_params["anwendungsvorschrift"] - - if altersgrenzen[1]["min_alter"] <= alter <= altersgrenzen[1]["max_alter"]: - out = unterhaltsvors[1] - elif altersgrenzen[2]["min_alter"] <= alter <= altersgrenzen[2]["max_alter"]: - out = unterhaltsvors[2] + if ( + berechtigte_altersgruppen["kleinkind"].min_alter + <= alter + <= berechtigte_altersgruppen["kleinkind"].max_alter + ): + out = unterhaltsvorschuss_nach_anwendungsvorschrift["kleinkind"] + elif ( + berechtigte_altersgruppen["schulkind"].min_alter + <= alter + <= berechtigte_altersgruppen["schulkind"].max_alter + ): + out = unterhaltsvorschuss_nach_anwendungsvorschrift["schulkind"] else: out = 0.0 @@ -256,7 +208,7 @@ def anspruchshöhe_m_anwendungsvors( def anspruchshöhe_m_2016_bis_2017_06( alter: int, kindergeld_erstes_kind_m: float, - unterhalt_params: dict, + mindestunterhalt_nach_alter: dict[str, Mindestunterhalt], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. @@ -265,26 +217,19 @@ def anspruchshöhe_m_2016_bis_2017_06( Kindes' (§ 1612a (1)) as well as a Verordnungsermächtigung (§ 1612a (4)). The § 1 Mindesunterhaltsverordnung applies fixed amounts and no relative definition as before. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - kindergeld_erstes_kind_m - See :func:`kindergeld_erstes_kind_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params <unterhalt_params>`. - - Returns - ------- - """ - mindestunterhalt = unterhalt_params["mindestunterhalt"] - - if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: - out = mindestunterhalt[1]["betrag"] - kindergeld_erstes_kind_m - elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: - out = mindestunterhalt[2]["betrag"] - kindergeld_erstes_kind_m + if ( + mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter + <= alter + <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter + ): + out = mindestunterhalt_nach_alter["kleinkind"].satz - kindergeld_erstes_kind_m + elif ( + mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter + <= alter + <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter + ): + out = mindestunterhalt_nach_alter["schulkind"].satz - kindergeld_erstes_kind_m else: out = 0.0 @@ -298,66 +243,46 @@ def anspruchshöhe_m_ab_2017_07( alter: int, elternteil_mindesteinkommen_erreicht: bool, kindergeld_erstes_kind_m: float, - unterhalt_params: dict, + mindestunterhalt_nach_alter: dict[str, Mindestunterhalt], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. Introduction of a minimum income threshold if child is older than some threshold and third age group (12-17) via Artikel 23 G. v. 14.08.2017 BGBl. I S. 3122. - - Parameters - ---------- - alter - See basic input variable :ref:`alter <alter>`. - elternteil_mindesteinkommen_erreicht - See :func:`elternteil_mindesteinkommen_erreicht`. - kindergeld_erstes_kind_m - See :func:`kindergeld_erstes_kind_m`. - unterhalt_params - See params documentation :ref:`unterhalt_params <unterhalt_params>`. - - Returns - ------- - """ - mindestunterhalt = unterhalt_params["mindestunterhalt"] - - if mindestunterhalt[1]["min_alter"] <= alter <= mindestunterhalt[1]["max_alter"]: - out = mindestunterhalt[1]["betrag"] - kindergeld_erstes_kind_m - elif mindestunterhalt[2]["min_alter"] <= alter <= mindestunterhalt[2]["max_alter"]: - out = mindestunterhalt[2]["betrag"] - kindergeld_erstes_kind_m + if ( + mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter + <= alter + <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter + ): + out = mindestunterhalt_nach_alter["kleinkind"].satz - kindergeld_erstes_kind_m elif ( - mindestunterhalt[3]["min_alter"] <= alter <= mindestunterhalt[3]["max_alter"] + mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter + <= alter + <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter + ): + out = mindestunterhalt_nach_alter["schulkind"].satz - kindergeld_erstes_kind_m + elif ( + mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.min_alter + <= alter + <= mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.max_alter and elternteil_mindesteinkommen_erreicht ): - out = mindestunterhalt[3]["betrag"] - kindergeld_erstes_kind_m + out = mindestunterhalt_nach_alter["jugendliche"].satz - kindergeld_erstes_kind_m else: out = 0.0 return out -@policy_function(start_date="2017-01-01", vectorization_strategy="not_required") +@policy_function(start_date="2017-07-01", vectorization_strategy="not_required") def elternteil_mindesteinkommen_erreicht( - kindergeld__p_id_empfänger: numpy.ndarray[int], - p_id: numpy.ndarray[int], - mindesteinkommen_erreicht: numpy.ndarray[bool], -) -> numpy.ndarray[bool]: + kindergeld__p_id_empfänger: TTSIMArray, # int + p_id: TTSIMArray, # int + mindesteinkommen_erreicht: TTSIMArray, # bool +) -> TTSIMArray: # bool """Income of Unterhaltsvorschuss recipient above threshold (this variable is - defined on child level). - - Parameters - ---------- - kindergeld__p_id_empfänger - See basic input variable :ref:`kindergeld__p_id_empfänger`. - p_id - See basic input variable :ref:`p_id`. - mindesteinkommen_erreicht - See :func:`mindesteinkommen_erreicht`. - - Returns - ------- - """ + defined on child level).""" return join( kindergeld__p_id_empfänger, p_id, @@ -366,28 +291,16 @@ def elternteil_mindesteinkommen_erreicht( ) -@policy_function(start_date="2017-01-01") +@policy_function(start_date="2017-07-01") def mindesteinkommen_erreicht( einkommen_m: float, - unterhaltsvors_params: dict, + mindesteinkommen: float, ) -> bool: - """Check if income is above the threshold for advance alimony payments. - - Parameters - ---------- - einkommen_m - See :func:`einkommen_m`. - unterhaltsvors_params - See params documentation :ref:`unterhaltsvors_params <unterhaltsvors_params>`. + """Check if income is above the threshold for advance alimony payments.""" + return einkommen_m >= mindesteinkommen - Returns - ------- - """ - return einkommen_m >= unterhaltsvors_params["mindesteinkommen"] - - -@policy_function(start_date="2017-01-01") +@policy_function(start_date="2017-07-01") def einkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, @@ -398,32 +311,8 @@ def einkommen_m( sozialversicherung__rente__private_rente_betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, ) -> float: - """Calculate relevant income for advance on alimony payment. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`. - einkommensteuer__einkünfte__sonstige__ohne_renten_m - See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See :func:`einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. - sozialversicherung__rente__altersrente__betrag_m - See :func:`sozialversicherung__rente__altersrente__betrag_m`. - sozialversicherung__rente__private_rente_betrag_m - See :func:`sozialversicherung__rente__private_rente_betrag_m`. - sozialversicherung__arbeitslosen__betrag_m - See :func:`sozialversicherung__arbeitslosen__betrag_m`. - - Returns - ------- - - """ - out = ( + """Calculate relevant income for advance on alimony payment.""" + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m @@ -434,11 +323,69 @@ def einkommen_m( + sozialversicherung__arbeitslosen__betrag_m ) - return out - @agg_by_p_id_function(agg_type=AggType.SUM) def unterhaltsvorschuss_spec_target( unterhaltsvorschuss_source_field: bool, p_id_field: int, p_id: int ) -> int: pass + + +@param_function(start_date="2008-01-01", end_date="2017-06-30") +def berechtigte_altersgruppen( + raw_berechtigte_altersgruppen: RawParam, +) -> dict[str, Altersgrenzen]: + return { + "kleinkind": Altersgrenzen( + min_alter=raw_berechtigte_altersgruppen["kleinkind"]["min_alter"], + max_alter=raw_berechtigte_altersgruppen["kleinkind"]["max_alter"], + ), + "schulkind": Altersgrenzen( + min_alter=raw_berechtigte_altersgruppen["schulkind"]["min_alter"], + max_alter=raw_berechtigte_altersgruppen["schulkind"]["max_alter"], + ), + } + + +@param_function(start_date="2016-01-01") +def mindestunterhalt_nach_alter( + raw_mindestunterhalt: RawParam, +) -> dict[str, Mindestunterhalt]: + kleinkind = Mindestunterhalt( + satz=raw_mindestunterhalt["kleinkind"]["satz"], + altersgrenzen=Altersgrenzen( + min_alter=raw_mindestunterhalt["kleinkind"]["min_alter"], + max_alter=raw_mindestunterhalt["kleinkind"]["max_alter"], + ), + ) + schulkind = Mindestunterhalt( + satz=raw_mindestunterhalt["schulkind"]["satz"], + altersgrenzen=Altersgrenzen( + min_alter=raw_mindestunterhalt["schulkind"]["min_alter"], + max_alter=raw_mindestunterhalt["schulkind"]["max_alter"], + ), + ) + jugendliche = Mindestunterhalt( + satz=raw_mindestunterhalt["jugendliche"]["satz"], + altersgrenzen=Altersgrenzen( + min_alter=raw_mindestunterhalt["jugendliche"]["min_alter"], + max_alter=raw_mindestunterhalt["jugendliche"]["max_alter"], + ), + ) + return { + "kleinkind": kleinkind, + "schulkind": schulkind, + "jugendliche": jugendliche, + } + + +@dataclass(frozen=True) +class Altersgrenzen: + min_alter: int + max_alter: int + + +@dataclass(frozen=True) +class Mindestunterhalt: + satz: float + altersgrenzen: Altersgrenzen diff --git a/src/_gettsim/parameters/unterhaltsvors.yaml b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml similarity index 55% rename from src/_gettsim/parameters/unterhaltsvors.yaml rename to src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml index 2d54a4ee36..db2b245064 100644 --- a/src/_gettsim/parameters/unterhaltsvors.yaml +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml @@ -1,56 +1,170 @@ --- +raw_mindestunterhalt: + name: + de: Mindestunterhalt für Kinder + en: Minimum Child Alimony + description: + de: >- + § 1612a BGB, § 1 Mindesunterhaltsverordnung. Mindestunterhalt für Kinder in + Abhängigkeit des Alters (0 - 5 Jahre, 6 - 11 Jahre, 12 - 17 Jahre). + en: >- + Minimum Child Alimony depending on age of child (0 - 5 years, 6 - 11 years, 12 - + 17 years). + unit: Euros + reference_period: Month + type: require_converter + 2016-01-01: + kleinkind: + min_alter: 0 + max_alter: 5 + satz: 335 + schulkind: + min_alter: 6 + max_alter: 11 + satz: 384 + jugendliche: + min_alter: 12 + max_alter: 17 + satz: 450 + reference: V. v. 03.12.2015 BGBl. I S. 2188. + 2017-01-01: + updates_previous: true + kleinkind: + satz: 342 + schulkind: + satz: 393 + jugendliche: + satz: 460 + reference: V. v. 03.12.2015 BGBl. I S. 2188. + 2018-01-01: + updates_previous: true + kleinkind: + satz: 348 + schulkind: + satz: 399 + jugendliche: + satz: 467 + reference: Artikel 1 V. v. 28.09.2017 BGBl. I S. 3525. + 2019-01-01: + updates_previous: true + kleinkind: + satz: 354 + schulkind: + satz: 406 + jugendliche: + satz: 476 + reference: Artikel 1 V. v. 28.09.2017 BGBl. I S. 3525. + 2020-01-01: + updates_previous: true + kleinkind: + satz: 369 + schulkind: + satz: 424 + jugendliche: + satz: 497 + reference: Artikel 1 V. v. 12.09.2019 BGBl. I S. 1393. + 2021-01-01: + updates_previous: true + kleinkind: + satz: 393 + schulkind: + satz: 451 + jugendliche: + satz: 528 + reference: Artikel 1 V. v. 03.11.2020 BGBl. I S. 2344. + 2022-01-01: + updates_previous: true + kleinkind: + satz: 396 + schulkind: + satz: 455 + jugendliche: + satz: 533 + reference: Artikel 1 V. v. 30.11.2021 BGBl. I S. 5066. + 2023-01-01: + updates_previous: true + kleinkind: + satz: 437 + schulkind: + satz: 502 + jugendliche: + satz: 588 + reference: Artikel 1 V. v. 30.11.2022 BGBl. I S. 2130. + 2024-01-01: + updates_previous: true + kleinkind: + satz: 480 + schulkind: + satz: 551 + jugendliche: + satz: 645 + reference: Artikel 1 V. v. 29.11.2023 BGBl. I Nr. 330. mindesteinkommen: name: de: >- - Monatliches Mindesteinkommen, um UHV für Kinder ab - `altersgrenze_mindesteinkommen` Jahren zu erhalten. + Monatliches Mindesteinkommen, um Unterhaltsvorschuss für Jugendliche (Kinder von + 12 bis 17 Jahren; siehe `mindestunterhalt`) zu erhalten. en: >- - Minimal income necessary to get Unterhaltsvorschuss for children of age at least - `altersgrenze_mindesteinkommen`. + Monthly minimum income necessary to get Unterhaltsvorschuss for children of age + 12 to 17 years (see `mindestunterhalt`). description: de: § 1 (1a) Nr. 2 Unterhaltsvorschussgesetz en: null - unit: Euro + unit: Euros reference_period: Month - 2017-01-01: - scalar: 600 + type: scalar + 2017-07-01: + value: 600 reference: Art. 23 G. v. 14.08.2017 BGBl. I S. 3122. -altersgrenzen_bezug: +raw_berechtigte_altersgruppen: name: - de: Altersgrenzen für den Bezug von Unterhaltsvorschuss bis Juni 2017. - en: Age limits for receiving alimony payments until June 2017. + de: Altersgrenzen für den Bezug von Unterhaltsvorschuss. + en: Age limits for receiving alimony payments. description: de: >- + § 1 Abs. 1, 1a UhVorschG Kinder, die das 12. Lebensjahr noch nicht vollendet haben und bei einem - alleinerziehenden Elternteil leben haben Anspruch auf Unterhaltszahlungen. Seit - Juli 2017 gelten die Altersgrenzen des Mindestunterhalts. + alleinerziehenden Elternteil leben haben Anspruch auf Unterhaltszahlungen. en: >- + § 1 Abs. 1, 1a UhVorschG Children under the age of 12 living with a single parent are entitled to alimony - payments. Since July 2017, the age limits of the minimum alimony apply. - reference: § 1 Abs. 1, 1a UhVorschG + payments. + unit: Years + reference_period: null + type: require_converter 2008-01-01: - 1: + kleinkind: min_alter: 0 max_alter: 5 - 2: + schulkind: min_alter: 6 max_alter: 11 reference: G. v. 21.12.2007 BGBl. I S. 3194 + 2017-07-01: + note: The age limits of the Mindestunterhalt apply. faktor_jüngste_altersgruppe: name: de: Faktor für den Unterhaltsvorschuss in der jüngsten Altersgruppe en: Factor for the advance child alimony of the youngest age group description: de: >- + § 1612a Abs. 1 BGB Faktor mit dem das sächliche Existenzminimum multipliziert wird um den Unterhaltsvorschuss für Kinder der jüngsten Altersgruppe zu berechnen. en: >- + § 1612a Abs. 1 BGB Factor by which the sächliche Existenzminimum is multiplied to calculate the advance child alimony for children of the youngest age group. + unit: null + reference_period: null + type: scalar 2009-01-01: - scalar: 0.87 - reference: § 1612a Abs. 1 BGB -anwendungsvorschrift: + value: 0.87 + 2015-01-01: + note: >- + Anspruchshöhe is calculated via an Anwendungsvorschrift in 2015. From 2016 it is + calculated based on the Mindestunterhalt. +unterhaltsvorschuss_nach_anwendungsvorschrift: name: de: Unterhaltsvorschuss für Kinder entsprechend Anwendungsvorschriften en: Advance Child Alimony according to application regulations @@ -72,12 +186,12 @@ anwendungsvorschrift: apply, which can be based on unchanged values for Kindergeld or child child allowance can be assumed. Here, the corresponding values for the advance child alimony (i.e. after deduction of the assumed Kindergeld) are used. - unit: Euro + unit: Euros reference_period: Month + type: dict 2015-01-01: - 1: 133 - 2: 180 - reference: null + kleinkind: 133 + schulkind: 180 note: >- Durch Anpassung des Kinderfreibetrags in der Mitte des Jahres gilt eine vorläufige Anwendungsvorschrift, welche den Mindestunterhalt basierend auf dem alten @@ -90,8 +204,8 @@ anwendungsvorschrift: Kindergeldes für das erste Kind vor Anpassung des Kinderfreibetrags (hier: 184 Euro). 2015-07-01: - 1: 144 - 2: 192 + kleinkind: 144 + schulkind: 192 reference: Artikel 9 Gesetz v. 16.07.2015 BGBl. I S. 1202. note: >- § 11a Anwendungsvorschrift: "Für die Zeit vom 1. Juli 2015 bis zum 31. Dezember diff --git "a/src/_gettsim/vorrangpr\303\274fungen/__init__.py" "b/src/_gettsim/vorrangpr\303\274fungen/__init__.py" index e69de29bb2..9d48db4f9f 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/__init__.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index fd321afb9e..c4bcd4b53b 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -1,5 +1,7 @@ """Priority checks of transfers against each other.""" +from __future__ import annotations + from ttsim import AggType, agg_by_group_function, policy_function @@ -27,19 +29,6 @@ def wohngeld_vorrang_vor_arbeitslosengeld_2_bg( Housing benefit has priority if the sum of housing benefit and income covers the needs according to SGB II of the Bedarfsgemeinschaft. - - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_bg - See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. - arbeitslosengeld_2__anzurechnendes_einkommen_m_bg - See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. - wohngeld__anspruchshöhe_m_bg - See :func:`wohngeld__anspruchshöhe_m_bg`. - - Returns - ------- - """ return ( arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + wohngeld__anspruchshöhe_m_bg @@ -53,21 +42,7 @@ def kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg( arbeitslosengeld_2__anzurechnendes_einkommen_m_bg: float, kinderzuschlag__anspruchshöhe_m_bg: float, ) -> bool: - """Check if child benefit has priority. - - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_bg - See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. - arbeitslosengeld_2__anzurechnendes_einkommen_m_bg - See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. - kinderzuschlag__anspruchshöhe_m_bg - See :func:`kinderzuschlag__anspruchshöhe_m_bg`. - - Returns - ------- - - """ + """Check if child benefit has priority.""" return ( arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + kinderzuschlag__anspruchshöhe_m_bg @@ -82,23 +57,7 @@ def wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg( kinderzuschlag__anspruchshöhe_m_bg: float, wohngeld__anspruchshöhe_m_bg: float, ) -> bool: - """Check if housing and child benefit have priority. - - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_bg - See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. - arbeitslosengeld_2__anzurechnendes_einkommen_m_bg - See :func:`arbeitslosengeld_2__anzurechnendes_einkommen_m_bg`. - kinderzuschlag__anspruchshöhe_m_bg - See :func:`kinderzuschlag__anspruchshöhe_m_bg`. - wohngeld__anspruchshöhe_m_bg - See :func:`wohngeld__anspruchshöhe_m_bg`. - - Returns - ------- - - """ + """Check if housing and child benefit have priority.""" return ( arbeitslosengeld_2__anzurechnendes_einkommen_m_bg diff --git a/src/_gettsim/wohnen/inputs.py b/src/_gettsim/wohnen/inputs.py index e21fc2491a..7d7dde2326 100644 --- a/src/_gettsim/wohnen/inputs.py +++ b/src/_gettsim/wohnen/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/wohngeld/__init__.py b/src/_gettsim/wohngeld/__init__.py index e69de29bb2..9d48db4f9f 100644 --- a/src/_gettsim/wohngeld/__init__.py +++ b/src/_gettsim/wohngeld/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 5c641d77f6..0edb791685 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -1,12 +1,15 @@ """Income relevant for housing benefit calculation.""" +from __future__ import annotations + from ttsim import ( AggType, + ConsecutiveInt1dLookupTableParamValue, + PiecewisePolynomialParamValue, agg_by_p_id_function, piecewise_polynomial, policy_function, ) -from ttsim.config import numpy_or_jax as np @agg_by_p_id_function(agg_type=AggType.SUM) @@ -23,7 +26,7 @@ def einkommen_m_wthh( anzahl_personen_wthh: int, freibetrag_m_wthh: float, einkommen_vor_freibetrag_m_wthh: float, - wohngeld_params: dict, + min_einkommen: dict[int, float], ) -> float: """Income relevant for Wohngeld calculation. @@ -32,26 +35,12 @@ def einkommen_m_wthh( This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften that passed the priority check against Arbeitslosengeld II / Bürgergeld. - Parameters - ---------- - anzahl_personen_wthh - See :func:`anzahl_personen_wthh`. - freibetrag_m_wthh - See :func:`freibetrag_m_wthh`. - einkommen_vor_freibetrag_m_wthh - See :func:`einkommen_vor_freibetrag_m_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - """ return einkommen( anzahl_personen=anzahl_personen_wthh, - einkommen_freibetrag=freibetrag_m_wthh, + einkommensfreibetrag=freibetrag_m_wthh, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_wthh, - params=wohngeld_params, + min_einkommen=min_einkommen, ) @@ -60,7 +49,7 @@ def einkommen_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, freibetrag_m_bg: float, einkommen_vor_freibetrag_m_bg: float, - wohngeld_params: dict, + min_einkommen: dict[int, float], ) -> float: """Income relevant for Wohngeld calculation. @@ -69,26 +58,12 @@ def einkommen_m_bg( This target is used for the priority check calculation against Arbeitslosengeld II / Bürgergeld on the Bedarfsgemeinschaft level. - Parameters - ---------- - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - freibetrag_m_bg - See :func:`freibetrag_m_bg`. - einkommen_vor_freibetrag_m_bg - See :func:`einkommen_vor_freibetrag_m_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - """ return einkommen( anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, - einkommen_freibetrag=freibetrag_m_bg, + einkommensfreibetrag=freibetrag_m_bg, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_bg, - params=wohngeld_params, + min_einkommen=min_einkommen, ) @@ -98,42 +73,24 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( sozialversicherung__rente__beitrag__betrag_versicherter_y: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y: float, familie__kind: bool, - wohngeld_params: dict, + abzugsbeträge_steuern_sozialversicherung: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Calculate housing benefit subtractions on the individual level. Note that einkommensteuer__betrag_y_sn is used as an approximation for taxes on income (as mentioned in § 16 WoGG Satz 1 Nr. 1). - Parameters - ---------- - einkommensteuer__betrag_y_sn - See :func: - `einkommensteuer__betrag_y_sn`. - sozialversicherung__rente__beitrag__betrag_versicherter_y - See :func: - `sozialversicherung__rente__beitrag__betrag_versicherter_y`. - sozialversicherung__kranken__beitrag__betrag_versicherter_y - See :func: - `sozialversicherung__kranken__beitrag__betrag_versicherter_y`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - """ - abzug_stufen = ( + stufe = ( (einkommensteuer__betrag_y_sn > 0) + (sozialversicherung__rente__beitrag__betrag_versicherter_y > 0) + (sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0) ) + abzug = abzugsbeträge_steuern_sozialversicherung if familie__kind: out = 0.0 else: - out = wohngeld_params["abzug_stufen"][abzug_stufen] + out = abzug.values_to_look_up[stufe - abzug.base_to_subtract] return out @@ -154,32 +111,6 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( and deducting individual housing benefit subtractions. Reference: § 14 WoGG - Parameters - ---------- - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See :func:`_eink_selbst`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. - sozialversicherung__arbeitslosen__betrag_m - See :func:`sozialversicherung__arbeitslosen__betrag_m`. - einkommensteuer__einkünfte__sonstige__ohne_renten_m - See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__einkünfte__sonstige__renteneinkünfte_m - See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_m`. - unterhalt__tatsächlich_erhaltener_betrag_m - See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung - See :func:`abzugsanteil_vom_einkommen_für_steuern_sozialversicherung`. - - Returns - ------- - """ einkommen = ( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m @@ -198,8 +129,7 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( eink_ind = ( einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m ) - out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind - return out + return (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind @policy_function(start_date="2007-01-01", leaf_name="einkommen_vor_freibetrag_m") @@ -220,33 +150,6 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( and deducting individual housing benefit subtractions. Reference: § 14 WoGG - Parameters - ---------- - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - See :func:`_eink_selbst`. - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m - See :func:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m`. - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m`. - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m - See :func:`einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m`. - sozialversicherung__arbeitslosen__betrag_m - See :func:`sozialversicherung__arbeitslosen__betrag_m`. - einkommensteuer__einkünfte__sonstige__ohne_renten_m - See :func:`einkommensteuer__einkünfte__sonstige__ohne_renten_m`. - einkommensteuer__einkünfte__sonstige__renteneinkünfte_m - See :func:`einkommensteuer__einkünfte__sonstige__renteneinkünfte_m`. - unterhalt__tatsächlich_erhaltener_betrag_m - See basic input variable :ref:`unterhalt__tatsächlich_erhaltener_betrag_m <unterhalt__tatsächlich_erhaltener_betrag_m>`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - elterngeld__anrechenbarer_betrag_m - See :func:`elterngeld__anrechenbarer_betrag_m`. - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung - See :func:`abzugsanteil_vom_einkommen_für_steuern_sozialversicherung`. - - Returns - ------- """ # TODO(@MImmesberger): Find out whether unterhalt__tatsächlich_erhaltener_betrag_m and @@ -270,8 +173,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( eink_ind = ( einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m ) - out = (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind - return out + return (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind @policy_function( @@ -284,56 +186,33 @@ def freibetrag_m_bis_2015( familie__alleinerziehend: bool, familie__kind: bool, alleinerziehendenbonus: int, - wohngeld_params: dict, + freibetrag_bei_behinderung_gestaffelt_y: PiecewisePolynomialParamValue, + freibetrag_kinder_m: dict[str, float], ) -> float: - """Calculate housing benefit subtractions for one individual until 2015. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - ist_kind_mit_erwerbseinkommen - See :func:`ist_kind_mit_erwerbseinkommen`. - behinderungsgrad - See basic input variable :ref:`behinderungsgrad <behinderungsgrad>`. - familie__alleinerziehend - See basic input variable :ref:`familie__alleinerziehend <familie__alleinerziehend>`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - alleinerziehendenbonus - See :func:`alleinerziehendenbonus`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- + """Calculate housing benefit subtractions for one individual until 2015.""" - """ - freibetrag_behinderung_m = piecewise_polynomial( - behinderungsgrad, - thresholds=np.array([*list(wohngeld_params["freibetrag_behinderung"]), np.inf]), - rates=np.array([[0] * len(wohngeld_params["freibetrag_behinderung"])]), - intercepts_at_lower_thresholds=[ - yearly_v / 12 - for yearly_v in wohngeld_params["freibetrag_behinderung"].values() - ], + freibetrag_bei_behinderung = ( + piecewise_polynomial( + x=behinderungsgrad, + parameters=freibetrag_bei_behinderung_gestaffelt_y, + ) + / 12 ) # Subtraction for single parents and working children if ist_kind_mit_erwerbseinkommen: - freibetrag_kinder_m = min( + freibetrag_kinder = min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, - wohngeld_params["freibetrag_kinder_m"]["arbeitendes_kind"], + freibetrag_kinder_m["arbeitendes_kind"], ) elif familie__alleinerziehend and (not familie__kind): - freibetrag_kinder_m = ( - alleinerziehendenbonus - * wohngeld_params["freibetrag_kinder_m"]["alleinerziehend"] + freibetrag_kinder = ( + alleinerziehendenbonus * freibetrag_kinder_m["alleinerziehend"] ) else: - freibetrag_kinder_m = 0.0 - return freibetrag_behinderung_m + freibetrag_kinder_m + freibetrag_kinder = 0.0 + return freibetrag_bei_behinderung + freibetrag_kinder @policy_function(start_date="2016-01-01", leaf_name="freibetrag_m") @@ -342,75 +221,40 @@ def freibetrag_m_ab_2016( ist_kind_mit_erwerbseinkommen: bool, behinderungsgrad: int, familie__alleinerziehend: bool, - wohngeld_params: dict, + freibetrag_bei_behinderung_pauschal_y: float, + freibetrag_kinder_m: dict[str, float], ) -> float: - """Calculate housing benefit subtracting for one individual since 2016. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - ist_kind_mit_erwerbseinkommen - See :func:`ist_kind_mit_erwerbseinkommen`. - behinderungsgrad - See basic input variable :ref:`behinderungsgrad <behinderungsgrad>`. - familie__alleinerziehend - See basic input variable :ref:`familie__alleinerziehend <familie__alleinerziehend>`. - familie__kind - See basic input variable :ref:`familie__kind <familie__kind>`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - Returns - ------- - - """ - freibetrag_behinderung_m = ( - wohngeld_params["freibetrag_behinderung"] / 12 if behinderungsgrad > 0 else 0 + """Calculate housing benefit subtracting for one individual since 2016.""" + freibetrag_bei_behinderung = ( + freibetrag_bei_behinderung_pauschal_y / 12 if behinderungsgrad > 0 else 0 ) if ist_kind_mit_erwerbseinkommen: - freibetrag_kinder_m = min( + freibetrag_kinder = min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, - wohngeld_params["freibetrag_kinder_m"]["arbeitendes_kind"], + freibetrag_kinder_m["arbeitendes_kind"], ) elif familie__alleinerziehend: - freibetrag_kinder_m = wohngeld_params["freibetrag_kinder_m"]["alleinerziehend"] + freibetrag_kinder = freibetrag_kinder_m["alleinerziehend"] else: - freibetrag_kinder_m = 0.0 + freibetrag_kinder = 0.0 - return freibetrag_behinderung_m + freibetrag_kinder_m + return freibetrag_bei_behinderung + freibetrag_kinder def einkommen( - anzahl_personen: int, - einkommen_freibetrag: float, einkommen_vor_freibetrag: float, - params: dict, + einkommensfreibetrag: float, + anzahl_personen: int, + min_einkommen: dict[int, float], ) -> float: """Calculate final income relevant for calculation of housing benefit on household level. - Reference: § 13 WoGG - - Parameters - ---------- - anzahl_personen - Number of people Wohngeld is being calculated for. - einkommen_freibetrag - Income that is not considered for Wohngeld calculation. - einkommen_vor_freibetrag - Sum of income. - params - See params documentation :ref:`params <params>`. - - Returns - ------- """ - eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommen_freibetrag - unteres_eink = params["min_eink"][min(anzahl_personen, max(params["min_eink"]))] - - out = max(eink_nach_abzug_m_hh, unteres_eink) - return out + eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommensfreibetrag + unteres_eink = min_einkommen[min(anzahl_personen, max(min_einkommen))] + return max(eink_nach_abzug_m_hh, unteres_eink) @policy_function() @@ -418,27 +262,7 @@ def ist_kind_mit_erwerbseinkommen( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, kindergeld__grundsätzlich_anspruchsberechtigt: bool, ) -> bool: - """Check if children are working. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - See basic input variable :ref:`einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m>`. - kindergeld__grundsätzlich_anspruchsberechtigt - See :func:`kindergeld__grundsätzlich_anspruchsberechtigt`. - - Returns - ------- - - """ - out = ( + """Check if children are working.""" + return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m > 0 ) and kindergeld__grundsätzlich_anspruchsberechtigt - return out - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def wohngeld_spec_target( - wohngeld_source_field: bool, p_id_field: int, p_id: int -) -> int: - pass diff --git a/src/_gettsim/wohngeld/einkommen.yaml b/src/_gettsim/wohngeld/einkommen.yaml new file mode 100644 index 0000000000..3a653d5f23 --- /dev/null +++ b/src/_gettsim/wohngeld/einkommen.yaml @@ -0,0 +1,244 @@ +--- +min_einkommen: + name: + de: Minimalwert für Parameter Y + en: null + description: + de: >- + WoGG - Anlage 3 (bis 2019 Anlage 2) (zu § 19 Abs. 2) + Parameter Y ist abhängig von der Anzahl der (wohngeldrechtlichen) + Haushaltsmitglieder. Keys in den Parameter-Dicts beziehen sich auf die Anzahl der + Haushaltsmitglieder. Bei mehr als 12 Mitgliedern wird der Wert für 12 Mitglieder + verwendet. + en: >- + WoGG - Appendix 3 (until 2019 Appendix 2) (to § 19 (2)) + Parameter Y is dependent on the number of household members (in the Wohngeld + sense). Keys in the parameter dicts refer to the number of household members. If + there are more than 12 members, the value for 12 members is used. + unit: Euros + reference_period: Month + type: dict + 1984-01-01: + 1: 0 + 2: 0 + 3: 0 + 4: 0 + 5: 0 + 6: 0 + 7: 0 + 8: 0 + 9: 0 + 10: 0 + 11: 0 + 12: 0 + 2001-01-01: + 1: 120 + 2: 150 + 3: 200 + 4: 250 + 5: 285 + 6: 320 + 7: 355 + 8: 385 + 9: 555 + 10: 730 + 11: 1000 + 12: 1175 + 2009-01-01: + 1: 205 + 2: 245 + 3: 265 + 4: 315 + 5: 345 + 6: 365 + 7: 385 + 8: 415 + 9: 585 + 10: 805 + 11: 1085 + 12: 1255 + 2016-01-01: + reference: Art. 1 G. v. 08.10.2015 BGBl Nr.38, S.1617 + 1: 239 + 2: 310 + 3: 360 + 4: 389 + 5: 463 + 6: 537 + 7: 610 + 8: 684 + 9: 758 + 10: 832 + 11: 1085 + 12: 1255 + 2020-01-01: + reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 + 1: 275 + 2: 357 + 3: 414 + 4: 447 + 5: 532 + 6: 618 + 7: 702 + 8: 787 + 9: 872 + 10: 957 + 11: 1248 + 12: 1443 + 2023-01-01: + reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 + 1: 350 + 2: 600 + 3: 800 + 4: 1000 + 5: 1200 + 6: 1400 + 7: 1600 + 8: 1800 + 9: 2000 + 10: 2200 + 11: 2400 + 12: 2600 + 2025-01-01: + reference: Art. 1 V. v. 21.10.2024 BGBl. 2024 I Nr. 314 + 1: 396 + 2: 679 + 3: 906 + 4: 1132 + 5: 1358 + 6: 1585 + 7: 1811 + 8: 2037 + 9: 2264 + 10: 2490 + 11: 2717 + 12: 2943 +abzugsbeträge_steuern_sozialversicherung: + name: + de: >- + Prozentualer Pauschalabzug vom Bruttoeinkommen, falls 0, 1, 2, 3 Kriterien erfüllt + sind + en: null + description: + de: >- + § 16 (1, 2) WoGG + Kriterien sind entrichtete Steuern / entrichtete GKV- und GPV-Beiträge / + entrichtete GRV-Beiträge + en: null + unit: Share + reference_period: null + type: consecutive_int_1d_lookup_table + 1984-01-01: + 0: 0.06 + 1: 0.125 + 2: 0.2 + 3: 0.3 + 1991-01-01: + updates_previous: true + 3: 0.26 + 2002-01-01: + updates_previous: true + 1: 0.1 + 3: 0.3 + 2016-01-01: + updates_previous: true + 0: 0.0 + reference: Art. G. v. 02.10.2015 BGBl I S. 1610 +freibetrag_kinder_m: + name: + de: Monatlicher Freibetrag für Alleinerziehende und arbeitende Kinder + en: null + description: + de: § 17 (4/5) WoGG + en: null + unit: Euros + reference_period: Month + type: dict + 1984-01-01: + alleinerziehend: 51 + arbeitendes_kind: 0 + 2001-01-01: + updates_previous: true + arbeitendes_kind: 51 + 2002-01-01: + alleinerziehend: 50 + arbeitendes_kind: 50 + 2016-01-01: + note: >- + neu §17 3. WoGG a) Alleinerziehend b) Kind unter 18 und neu §17 4. WoGG Kind noch + nicht 25J. + reference: Art. 1 G. v. 08.10.2015 BGBl Nr.38, S.1617 + alleinerziehend: 110 + arbeitendes_kind: 100 +freibetrag_bei_behinderung_gestaffelt_y: + name: + de: Jährlicher Freibetrag pro behindertes Haushaltsmitglied + en: Annual allowance per disabled household member + description: + de: >- + § 17 (2) WoGG + Der Betrag ist abhängig vom Behinderungsgrad der jeweiligen Person. + Achtung: Die Zahlen vor 1991 erscheinen falsch. Senkung in 1986 unwahrscheinlich, + im Zweifel wurde dort eher die Stufe mit Behinderungsgrad 1-80% eingeführt. + en: null + unit: Euros + reference_period: Year + type: piecewise_constant + 1984-01-01: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 80 + upper_threshold: inf + intercept_at_lower_threshold: 1224 + 1986-01-01: + updates_previous: true + 1: + lower_threshold: 80 + upper_threshold: inf + intercept_at_lower_threshold: 612 + 1991-01-01: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 1 + intercept_at_lower_threshold: 1224 + 2: + lower_threshold: 80 + upper_threshold: inf + intercept_at_lower_threshold: 1536 + 2002-01-01: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 1 + intercept_at_lower_threshold: 1200 + 2: + lower_threshold: 80 + upper_threshold: inf + intercept_at_lower_threshold: 1500 + 2016-01-01: + note: Replaced by new rule, see 'freibetrag_bei_behinderung_pauschal_y' +freibetrag_bei_behinderung_pauschal_y: + name: + de: Jährlicher Freibetrag pro behindertes Haushaltsmitglied + en: Annual allowance per disabled household member + description: + de: >- + § 17 Nr. 1 WoGG. + Für Menschen mit Behinderungsgrad unter 100% muss zusätzlich Pflegebedürftigkeit + gem. §14 SGB XI. und gleichzeitig Häusliche/teilstationäre/Kurzzeit-Pflege + vorliegen. Dies ist aktuell nicht implementiert. + en: null + unit: Euros + reference_period: Year + type: scalar + 2016-01-01: + reference: 2 Art. 1 G. v. 08.10.2015 BGBl Nr.38 S.1612 + value: 1500 + 2020-01-01: + reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 + value: 1800 diff --git a/src/_gettsim/wohngeld/inputs.py b/src/_gettsim/wohngeld/inputs.py index 66349c539c..698773a164 100644 --- a/src/_gettsim/wohngeld/inputs.py +++ b/src/_gettsim/wohngeld/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index f89acc5700..f72f3335f8 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -1,9 +1,134 @@ """Renting costs relevant for housing benefit calculation.""" -from ttsim import policy_function +from __future__ import annotations + +from ttsim import ( + ConsecutiveInt1dLookupTableParamValue, + ConsecutiveInt2dLookupTableParamValue, + get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_2d_lookup_table_param_value, + param_function, + policy_function, +) from ttsim.config import numpy_or_jax as np +@param_function( + start_date="1984-01-01", end_date="2008-12-31", leaf_name="max_miete_m_lookup" +) +def max_miete_m_lookup_mit_baujahr( + raw_max_miete_m_nach_baujahr: dict[int | str, dict[int, dict[int, float]]], + max_anzahl_personen: dict[str, int], +) -> dict[int, ConsecutiveInt2dLookupTableParamValue]: + """Maximum rent considered in Wohngeld calculation.""" + tmp = raw_max_miete_m_nach_baujahr.copy() + per_additional_person = tmp.pop("jede_weitere_person") + max_n_p_defined = max(tmp.keys()) + assert all(isinstance(i, int) for i in tmp) + baujahre = sorted(tmp[1].keys()) + out = {} + for baujahr in baujahre: + this_dict = {n_p: tmp[n_p][baujahr] for n_p in tmp} + for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] + this_dict[n_p] = { + ms: this_dict[max_n_p_defined][ms] + + (n_p - max_n_p_defined) * per_additional_person[baujahr][ms] # type: ignore[operator] + for ms in this_dict[max_n_p_defined] + } + out[baujahr] = get_consecutive_int_2d_lookup_table_param_value(this_dict) + return out + + +@param_function(start_date="2009-01-01", leaf_name="max_miete_m_lookup") +def max_miete_m_lookup_ohne_baujahr( + raw_max_miete_m: dict[int | str, dict[int, float]], + max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt2dLookupTableParamValue: + """Maximum rent considered in Wohngeld calculation.""" + expanded = raw_max_miete_m.copy() + per_additional_person = expanded.pop("jede_weitere_person") + max_n_p_defined = max(expanded.keys()) + assert all(isinstance(i, int) for i in expanded) + for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] + expanded[n_p] = { + ms: expanded[max_n_p_defined][ms] + + (n_p - max_n_p_defined) * per_additional_person[ms] # type: ignore[operator] + for ms in expanded[max_n_p_defined] + } + return get_consecutive_int_2d_lookup_table_param_value(expanded) + + +@param_function(start_date="1984-01-01") +def min_miete_lookup( + raw_min_miete_m: dict[int, float], + max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Minimum rent considered in Wohngeld calculation.""" + max_n_p_normal = max_anzahl_personen["normale_berechnung"] + assert max(raw_min_miete_m.keys()) == max_n_p_normal, ( + "The maximum number of persons for the normal calculation of the basic" + "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " + f"(got: {max_n_p_normal}) must be the same as the maximum number of household " + "members in `koeffizienten_berechnungsformel` " + f"(got: {max(raw_min_miete_m.keys())})" + ) + expanded = raw_min_miete_m.copy() + for n_p in range(max_n_p_normal + 1, max_anzahl_personen["indizierung"] + 1): + expanded[n_p] = raw_min_miete_m[max_n_p_normal] + return get_consecutive_int_1d_lookup_table_param_value(expanded) + + +@param_function(start_date="2021-01-01") +def heizkostenentlastung_m_lookup( + raw_heizkostenentlastung_m: dict[int | str, float], + max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Heizkostenentlastung as a lookup table.""" + expanded = raw_heizkostenentlastung_m.copy() + per_additional_person = expanded.pop("jede_weitere_person") + max_n_p_defined = max(expanded.keys()) + assert all(isinstance(i, int) for i in expanded) + for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] + expanded[n_p] = ( + expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] + ) + return get_consecutive_int_1d_lookup_table_param_value(expanded) + + +@param_function(start_date="2023-01-01") +def dauerhafte_heizkostenkomponente_m_lookup( + raw_dauerhafte_heizkostenkomponente_m: dict[int | str, float], + max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Dauerhafte Heizkostenenkomponente as a lookup table.""" + expanded = raw_dauerhafte_heizkostenkomponente_m.copy() + per_additional_person = expanded.pop("jede_weitere_person") + max_n_p_defined = max(expanded.keys()) + assert all(isinstance(i, int) for i in expanded) + for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] + expanded[n_p] = ( + expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] + ) + return get_consecutive_int_1d_lookup_table_param_value(expanded) + + +@param_function(start_date="2023-01-01") +def klimakomponente_m_lookup( + raw_klimakomponente_m: dict[int | str, float], + max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Klimakomponente as a lookup table.""" + expanded = raw_klimakomponente_m.copy() + per_additional_person = expanded.pop("jede_weitere_person") + max_n_p_defined = max(expanded.keys()) + assert all(isinstance(i, int) for i in expanded) + for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] + expanded[n_p] = ( + expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] + ) + return get_consecutive_int_1d_lookup_table_param_value(expanded) + + @policy_function() def miete_m_wthh( miete_m_hh: float, @@ -15,19 +140,6 @@ def miete_m_wthh( This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften that passed the priority check against Arbeitslosengeld II / Bürgergeld. - - Parameters - ---------- - miete_m_hh - See :func:`miete_m_hh`. - anzahl_personen_wthh - See :func:`anzahl_personen_wthh`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - - Returns - ------- - """ return miete_m_hh * (anzahl_personen_wthh / anzahl_personen_hh) @@ -42,230 +154,137 @@ def miete_m_bg( This target is used for the priority check calculation against Arbeitslosengeld II / Bürgergeld on the Bedarfsgemeinschaft level. - - Parameters - ---------- - miete_m_hh - See :func:`miete_m_hh`. - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - - Returns - ------- - """ return miete_m_hh * (arbeitslosengeld_2__anzahl_personen_bg / anzahl_personen_hh) -@policy_function(vectorization_strategy="loop") -def min_miete_m_hh(anzahl_personen_hh: int, wohngeld_params: dict) -> float: - """Minimum rent considered in Wohngeld calculation. - - Parameters - ---------- - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - Returns - ------- - - """ - out = wohngeld_params["min_miete"][ - min(anzahl_personen_hh, max(wohngeld_params["min_miete"])) +@policy_function() +def min_miete_m_hh( + anzahl_personen_hh: int, min_miete_lookup: ConsecutiveInt1dLookupTableParamValue +) -> float: + """Minimum rent considered in Wohngeld calculation.""" + return min_miete_lookup.values_to_look_up[ + anzahl_personen_hh - min_miete_lookup.base_to_subtract ] - return out @policy_function( - end_date="2008-12-31", leaf_name="miete_m_hh", vectorization_strategy="loop" + start_date="1984-01-01", + end_date="2008-12-31", + leaf_name="miete_m_hh", + vectorization_strategy="loop", ) -def miete_m_hh_bis_2008( +def miete_m_hh_mit_baujahr( mietstufe: int, wohnen__baujahr_immobilie_hh: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - wohngeld_params: dict, + max_miete_m_lookup: dict[int, ConsecutiveInt2dLookupTableParamValue], ) -> float: - """Rent considered in housing benefit calculation on household level until 2008. - - Parameters - ---------- - mietstufe - See basic input variable :ref:`mietstufe <mietstufe>`. - wohnen__baujahr_immobilie_hh - See basic input variable :ref:`wohnen__baujahr_immobilie_hh <wohnen__baujahr_immobilie_hh>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - wohnen__bruttokaltmiete_m_hh - See :func:`wohnen__bruttokaltmiete_m_hh`. - min_miete_m_hh - See :func:`min_miete_m_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - - """ - max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" - ] - berücks_personen = min(anzahl_personen_hh, max_berücks_personen) - - # Get yearly cutoff in params which is closest and above the construction year - # of the property. We assume that the same cutoffs exist for each household - # size. - params_max_miete = wohngeld_params["max_miete"] + """Rent considered in housing benefit calculation on household level until 2008.""" selected_bin_index = np.searchsorted( - np.asarray(sorted(params_max_miete[1])), + np.asarray(sorted(max_miete_m_lookup.keys())), wohnen__baujahr_immobilie_hh, side="left", ) + constr_year = list(max_miete_m_lookup.keys())[selected_bin_index] + lookup = max_miete_m_lookup[constr_year] + max_miete_m = lookup.values_to_look_up[ + anzahl_personen_hh - lookup.base_to_subtract_rows, + mietstufe - lookup.base_to_subtract_cols, + ] + return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) - constr_year = list(params_max_miete[1])[selected_bin_index] - - # Calc maximal considered rent - max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) - if anzahl_personen_hh <= max_definierte_hh_größe: - max_miete_m = params_max_miete[anzahl_personen_hh][constr_year][mietstufe] - else: - max_miete_m = params_max_miete[max_definierte_hh_größe][constr_year][ - mietstufe - ] + params_max_miete["jede_weitere_person"][constr_year][mietstufe] * ( - berücks_personen - max_definierte_hh_größe - ) - out = min(wohnen__bruttokaltmiete_m_hh, max_miete_m) - out = max(out, min_miete_m_hh) +@policy_function( + start_date="2009-01-01", + end_date="2020-12-31", + leaf_name="miete_m_hh", +) +def miete_m_hh_ohne_baujahr_ohne_heizkostenentlastung( + mietstufe: int, + anzahl_personen_hh: int, + wohnen__bruttokaltmiete_m_hh: float, + min_miete_m_hh: float, + max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, +) -> float: + """Rent considered in housing benefit since 2009.""" - return out + max_miete_m = max_miete_m_lookup.values_to_look_up[ + anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, + mietstufe - max_miete_m_lookup.base_to_subtract_cols, + ] + + return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @policy_function( - start_date="2009-01-01", leaf_name="miete_m_hh", vectorization_strategy="loop" + start_date="2021-01-01", + end_date="2022-12-31", + leaf_name="miete_m_hh", ) -def miete_m_hh_ab_2009( # noqa: PLR0912 (see #516) +def miete_m_hh_mit_heizkostenentlastung( mietstufe: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - wohngeld_params: dict, + max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, + heizkostenentlastung_m_lookup: ConsecutiveInt1dLookupTableParamValue, ) -> float: - """Rent considered in housing benefit since 2009. - - Parameters - ---------- - mietstufe - See basic input variable :ref:`mietstufe <mietstufe>`. - anzahl_personen_hh - See :func:`anzahl_personen_hh`. - wohnen__bruttokaltmiete_m_hh - See :func:`wohnen__bruttokaltmiete_m_hh`. - min_miete_m_hh - See :func:`min_miete_m_hh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- + """Rent considered in housing benefit since 2009.""" + max_miete_m = max_miete_m_lookup.values_to_look_up[ + anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, + mietstufe - max_miete_m_lookup.base_to_subtract_cols, + ] - """ - params_max_miete = wohngeld_params["max_miete"] + heating_allowance_m = heizkostenentlastung_m_lookup.values_to_look_up[ + anzahl_personen_hh - heizkostenentlastung_m_lookup.base_to_subtract + ] - max_berücks_personen = wohngeld_params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" + return ( + max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) + + heating_allowance_m + ) + + +@policy_function( + start_date="2023-01-01", + leaf_name="miete_m_hh", +) +def miete_m_hh_mit_heizkostenentlastung_dauerhafte_heizkostenkomponente_klimakomponente( + mietstufe: int, + anzahl_personen_hh: int, + wohnen__bruttokaltmiete_m_hh: float, + min_miete_m_hh: float, + max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, + heizkostenentlastung_m_lookup: ConsecutiveInt1dLookupTableParamValue, + dauerhafte_heizkostenkomponente_m_lookup: ConsecutiveInt1dLookupTableParamValue, + klimakomponente_m_lookup: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Rent considered in housing benefit since 2009.""" + max_miete_m = max_miete_m_lookup.values_to_look_up[ + anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, + mietstufe - max_miete_m_lookup.base_to_subtract_cols, ] - berücks_personen = min(anzahl_personen_hh, max_berücks_personen) - - # Calc maximal considered rent - max_definierte_hh_größe = max(i for i in params_max_miete if isinstance(i, int)) - if anzahl_personen_hh <= max_definierte_hh_größe: - max_miete_m = params_max_miete[anzahl_personen_hh][mietstufe] - else: - max_miete_m = ( - params_max_miete[max_definierte_hh_größe][mietstufe] - + (berücks_personen - max_definierte_hh_größe) - * params_max_miete["jede_weitere_person"][mietstufe] - ) - # Calc heating allowance. Until 2020, heating allowance was not - # introduced yet. For this time frame, the respective parameter is - # not part of wohngeld_params and heating allowance is set to 0. - # TODO(@MImmesberger): Apply policy_function decorator. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/711 - if "heizkostenentlastung_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i for i in wohngeld_params["heizkostenentlastung_m"] if isinstance(i, int) - ) - if "heizkostenentlastung_m" in wohngeld_params: - if anzahl_personen_hh <= max_def_hh_größe_heating: - heating_allowance_m = wohngeld_params["heizkostenentlastung_m"][ - anzahl_personen_hh - ] - else: - heating_allowance_m = ( - wohngeld_params["heizkostenentlastung_m"][max_def_hh_größe_heating] - + (berücks_personen - max_def_hh_größe_heating) - * (wohngeld_params["heizkostenentlastung_m"]["jede_weitere_person"]) - ) - else: - heating_allowance_m = 0 - - # Calc heating cost component. Until 2022, heating cost component was not - # introduced yet. For this time frame, the respective parameter is not part - # of params and heating cost component is set to 0. - if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i - for i in wohngeld_params["dauerhafte_heizkostenkomponente_m"] - if isinstance(i, int) - ) - if "dauerhafte_heizkostenkomponente_m" in wohngeld_params: - if anzahl_personen_hh <= max_def_hh_größe_heating: - heating_component_m = wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - anzahl_personen_hh - ] - else: - heating_component_m = ( - wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - max_def_hh_größe_heating - ] - + (berücks_personen - max_def_hh_größe_heating) - * ( - wohngeld_params["dauerhafte_heizkostenkomponente_m"][ - "jede_weitere_person" - ] - ) - ) - else: - heating_component_m = 0 - - # Calc climate component. Until 2022, climate component was not - # introduced yet. For this time frame, the respective parameter is not - # part of params and climate component is set to 0. - if "klimakomponente_m" in wohngeld_params: - max_def_hh_größe_heating = max( - i for i in wohngeld_params["klimakomponente_m"] if isinstance(i, int) + heizkostenentlastung = heizkostenentlastung_m_lookup.values_to_look_up[ + anzahl_personen_hh - heizkostenentlastung_m_lookup.base_to_subtract + ] + dauerhafte_heizkostenkomponente = ( + dauerhafte_heizkostenkomponente_m_lookup.values_to_look_up[ + anzahl_personen_hh + - dauerhafte_heizkostenkomponente_m_lookup.base_to_subtract + ] + ) + klimakomponente = klimakomponente_m_lookup.values_to_look_up[ + anzahl_personen_hh - klimakomponente_m_lookup.base_to_subtract + ] + return ( + max( + min(wohnen__bruttokaltmiete_m_hh, max_miete_m + klimakomponente), + min_miete_m_hh, ) - if "klimakomponente_m" in wohngeld_params: - if anzahl_personen_hh <= max_def_hh_größe_heating: - climate_component_m = wohngeld_params["klimakomponente_m"][ - anzahl_personen_hh - ] - else: - climate_component_m = ( - wohngeld_params["klimakomponente_m"][max_def_hh_größe_heating] - + (berücks_personen - max_def_hh_größe_heating) - * (wohngeld_params["klimakomponente_m"]["jede_weitere_person"]) - ) - else: - climate_component_m = 0 - - out = min(wohnen__bruttokaltmiete_m_hh, max_miete_m + climate_component_m) - out = max(out, min_miete_m_hh) + heating_allowance_m + heating_component_m - - return out + + heizkostenentlastung + + dauerhafte_heizkostenkomponente + ) diff --git a/src/_gettsim/parameters/wohngeld.yaml b/src/_gettsim/wohngeld/miete.yaml similarity index 55% rename from src/_gettsim/parameters/wohngeld.yaml rename to src/_gettsim/wohngeld/miete.yaml index 53f94db685..336a3788ec 100644 --- a/src/_gettsim/parameters/wohngeld.yaml +++ b/src/_gettsim/wohngeld/miete.yaml @@ -1,550 +1,22 @@ --- -faktor_berechnungsformel: +raw_min_miete_m: name: - de: Faktor am Anfang der Wohngeldformel - en: null - description: - de: Anlage 2 WoGG zu §19 Abs. 2 WoGG - en: null - 1984-01-01: - scalar: 1 - reference: null - 2009-01-01: - scalar: 1.08 - reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 - 2016-01-01: - scalar: 1.15 - reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 -koeffizienten_berechnungsformel: - name: - de: Parameter a, b, c der Wohngeldformel - en: null - description: - de: >- - WoGG - Anlage 2 (bis 2019 Anlage 1) (zu § 19 (1)). Seit 2022 auch §24 - Wohngeldverordnung (WoGV). - en: null - note: The keys from 1 to 12 below refer to the household size. - 1984-01-01: - note: Parameter aus Regressionsanalyse der Wohngeldtabellen - 1: - a: 0.0532 - b: 0.00135 - c: 0.0000632 - 2: - a: 0.0574 - b: 0.000957 - c: 0.0000352 - 3: - a: 0.0612 - b: 0.00078 - c: 0.0000202 - 4: - a: 0.0596 - b: 0.000613 - c: 2.78e-06 - 5: - a: 0.0572 - b: 0.000554 - c: 5.38e-07 - 6: - a: 0.0365 - b: 0.000531 - c: 4.62e-06 - 7: - a: 0.0129 - b: 0.000502 - c: 0.0000124 - 8: - a: -0.0176 - b: 0.000468 - c: 0.0000253 - 9: - a: -0.0397 - b: 0.000424 - c: 0.0000364 - 10: - a: -0.0595 - b: 0.000373 - c: 0.0000481 - 11: - a: -0.0595 - b: 0.000373 - c: 0.0000481 - 12: - a: -0.0595 - b: 0.000373 - c: 0.0000481 - 1990-01-01: - note: Parameter aus Regressionsanalyse der Wohngeldtabellen - 1: - a: 0.0648 - b: 0.00102 - c: 0.0000613 - 2: - a: 0.0694 - b: 0.000715 - c: 0.0000347 - 3: - a: 0.0741 - b: 0.000604 - c: 0.000011 - 4: - a: 0.0669 - b: 0.000476 - c: 1.75e-06 - 5: - a: 0.064 - b: 0.00043 - c: 9.14e-07 - 6: - a: 0.0445 - b: 0.000414 - c: 4.02e-06 - 7: - a: 0.0226 - b: 0.000397 - c: 9.44e-06 - 8: - a: -0.0005 - b: 0.000387 - c: 0.0000136 - 9: - a: -0.0281 - b: 0.000337 - c: 0.0000308 - 10: - a: -0.0455 - b: 0.000298 - c: 0.0000386 - 11: - a: -0.0455 - b: 0.000298 - c: 0.0000386 - 12: - a: -0.0455 - b: 0.000298 - c: 0.0000386 - 1992-01-01: - note: Parameter aus Regressionsanalyse der Wohngeldtabellen - 1: - a: 0.0666 - b: 0.00102 - c: 0.0000579 - 2: - a: 0.0716 - b: 0.000713 - c: 0.0000317 - 3: - a: 0.0748 - b: 0.000604 - c: 0.0000102 - 4: - a: 0.0671 - b: 0.000475 - c: 1.63e-06 - 5: - a: 0.0642 - b: 0.00043 - c: 8.96e-07 - 6: - a: 0.0463 - b: 0.000419 - c: 1.35e-06 - 7: - a: 0.0256 - b: 0.000404 - c: 5.66e-06 - 8: - a: -0.00252 - b: 0.000377 - c: 0.0000173 - 9: - a: -0.00252 - b: 0.000377 - c: 0.0000173 - 10: - a: -0.00252 - b: 0.000377 - c: 0.0000173 - 11: - a: -0.00252 - b: 0.000377 - c: 0.0000173 - 12: - a: -0.00252 - b: 0.000377 - c: 0.0000173 - 2001-01-01: - reference: Art. 5 G. v. 22.12.1999 BGBl. I S. 2671 - 1: - a: 0.063 - b: 0.000796 - c: 0.00009102 - 2: - a: 0.057 - b: 0.000576 - c: 0.00006431 - 3: - a: 0.055 - b: 0.000518 - c: 0.0000325 - 4: - a: 0.047 - b: 0.000395 - c: 0.00002325 - 5: - a: 0.042 - b: 0.000348 - c: 0.00002151 - 6: - a: 0.037 - b: 0.000327 - c: 0.00001519 - 7: - a: 0.033 - b: 0.000313 - c: 8.745e-06 - 8: - a: 0.023 - b: 0.000296 - c: 7.44e-06 - 9: - a: -0.017 - b: 0.000225 - c: 0.00003522 - 10: - a: -0.037 - b: 0.000157 - c: 0.00005547 - 11: - a: -0.067 - b: 0.000153 - c: 0.00005686 - 12: - a: -0.092 - b: 0.000136 - c: 0.00006182 - 2009-01-01: - reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 - 1: - a: 0.063 - b: 0.0007963 - c: 0.00009102 - 2: - a: 0.057 - b: 0.0005761 - c: 0.00006431 - 3: - a: 0.055 - b: 0.0005176 - c: 0.0000325 - 4: - a: 0.047 - b: 0.0003945 - c: 0.00002325 - 5: - a: 0.042 - b: 0.0003483 - c: 0.00002151 - 6: - a: 0.037 - b: 0.0003269 - c: 0.00001519 - 7: - a: 0.033 - b: 0.0003129 - c: 8.745e-06 - 8: - a: 0.023 - b: 0.0002959 - c: 7.44e-06 - 9: - a: -0.0197 - b: 0.0002245 - c: 0.00003459 - 10: - a: -0.0401 - b: 0.0001565 - c: 0.0000514 - 11: - a: -0.066 - b: 0.00012 - c: 0.00005686 - 12: - a: -0.0899 - b: 0.000109 - c: 0.00006182 - 2016-01-01: - reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 - 1: - a: 0.04 - b: 0.00063 - c: 0.000138 - 2: - a: 0.03 - b: 0.00044 - c: 0.000103 - 3: - a: 0.02 - b: 0.00038 - c: 0.000083 - 4: - a: 0.01 - b: 0.00034 - c: 0.000043 - 5: - a: 0 - b: 0.0003 - c: 0.000042 - 6: - a: -0.01 - b: 0.00028 - c: 0.000036 - 7: - a: -0.02 - b: 0.00026 - c: 0.000037 - 8: - a: -0.03 - b: 0.00023 - c: 0.000037 - 9: - a: -0.04 - b: 0.0002 - c: 0.000039 - 10: - a: -0.06 - b: 0.00016 - c: 0.000045 - 11: - a: -0.1 - b: 0.00012 - c: 0.000053 - 12: - a: -0.14 - b: 0.00011 - c: 0.00006 - 2020-01-01: - reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 - 1: - a: 0.04 - b: 0.00058 - c: 0.000118 - 2: - a: 0.03 - b: 0.000405 - c: 0.000088 - 3: - a: 0.02 - b: 0.00035 - c: 0.0000709 - 4: - a: 0.01 - b: 0.000313 - c: 0.0000368 - 5: - a: 0 - b: 0.000276 - c: 0.0000359 - 6: - a: -0.01 - b: 0.000258 - c: 0.0000308 - 7: - a: -0.02 - b: 0.000239 - c: 0.0000316 - 8: - a: -0.03 - b: 0.000212 - c: 0.0000316 - 9: - a: -0.04 - b: 0.000184 - c: 0.0000333 - 10: - a: -0.06 - b: 0.000147 - c: 0.0000385 - 11: - a: -0.1 - b: 0.00011 - c: 0.0000453 - 12: - a: -0.14 - b: 0.000101 - c: 0.0000513 - 2022-01-01: - reference: V. v. 03.06.2021 BGBl. I S. 1369. - 1: - a: 0.04 - b: 0.000564 - c: 0.0001157 - 2: - a: 0.03 - b: 0.000394 - c: 0.0000863 - 3: - a: 0.02 - b: 0.00034 - c: 0.0000695 - 4: - a: 0.01 - b: 0.000304 - c: 0.0000361 - 5: - a: 0 - b: 0.000268 - c: 0.0000352 - 6: - a: -0.01 - b: 0.000251 - c: 0.0000302 - 7: - a: -0.02 - b: 0.000232 - c: 0.000031 - 8: - a: -0.03 - b: 0.000206 - c: 0.000031 - 9: - a: -0.04 - b: 0.000179 - c: 0.0000326 - 10: - a: -0.06 - b: 0.000143 - c: 0.0000377 - 11: - a: -0.1 - b: 0.000107 - c: 0.0000444 - 12: - a: -0.14 - b: 0.000098 - c: 0.0000503 - 2023-01-01: - reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 - 1: - a: 0.04 - b: 0.0004991 - c: 0.0000462 - 2: - a: 0.03 - b: 0.0003716 - c: 0.0000345 - 3: - a: 0.02 - b: 0.0003035 - c: 0.0000278 - 4: - a: 0.01 - b: 0.0002251 - c: 0.00002 - 5: - a: 0 - b: 0.0001985 - c: 0.0000195 - 6: - a: -0.01 - b: 0.0001792 - c: 0.0000188 - 7: - a: -0.02 - b: 0.0001657 - c: 0.0000187 - 8: - a: -0.03 - b: 0.0001648 - c: 0.0000187 - 9: - a: -0.04 - b: 0.0001432 - c: 0.0000188 - 10: - a: -0.06 - b: 0.00013 - c: 0.0000188 - 11: - a: -0.09 - b: 0.0001188 - c: 0.0000222 - 12: - a: -0.12 - b: 0.0001152 - c: 0.0000251 -bonus_sehr_große_haushalte: - name: - de: Zusätzlicher Betrag für große Haushalte - en: Additional amount for big households + de: Minimalwert für Parameter M der Wohngeldformel + en: Minimum value for parameter M of the Wohngeld formula description: de: >- - Haushalte mit mehr als 12 Personen erhalten einen zusätzlichen Betrag pro Person, - der auf das Wohngeld für einen Haushalt mit 12 Personen angerechnet wird. + WoGG - Anlage 3 (bis 2019 Anlage 2) (zu § 19 Abs. 2) + Parameter ist abhängig von der Anzahl der Haushaltsmitglieder. Keys in den + Parameter-Dicts beziehen sich auf die Anzahl der Haushaltsmitglieder. Bei mehr als + 12 Mitgliedern wird der Wert für 12 Mitglieder verwendet. en: >- - Households with more than 12 persons receive an additional amount per person, - which is counted towards the housing allowance for a household of 12 people. - unit: Euro - reference: §19 Abs. 3 WoGG + WoGG - Appendix 3 (until 2019 Appendix 2) (to § 19 (2)) + Parameter is dependent on the number of household members. Keys in the parameter + dicts refer to the number of household members. If there are more than 12 members, + the value for 12 members is used. + unit: Euros reference_period: Month - 2001-01-01: - max_anz_personen_normale_berechnung: 12 - bonus_jede_weitere_person: 40 - reference: Art. 5 G. v. 22.12.1999 BGBl. I S. 2671 - 2009-01-01: - bonus_jede_weitere_person: 43 - deviation_from: previous - reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 - 2016-01-01: - bonus_jede_weitere_person: 47 - deviation_from: previous - reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 - 2020-01-01: - bonus_jede_weitere_person: 51 - deviation_from: previous - reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 - 2023-01-01: - bonus_jede_weitere_person: 57 - deviation_from: previous - reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 -abzug_stufen: - name: - de: >- - Prozentualer Pauschalabzug vom Bruttoeinkommen, falls 0, 1, 2, 3 Kriterien erfüllt - sind - en: null - description: - de: § 16 (1, 2) WoGG - en: null - note: >- - Kriterien sind - entrichtete Steuern - entrichtete GKV- und GPV-Beiträge - - entrichtete GRV-Beiträge - 1984-01-01: - 0: 0.06 - 1: 0.125 - 2: 0.2 - 3: 0.3 - 1991-01-01: - deviation_from: previous - 3: 0.26 - 2002-01-01: - deviation_from: previous - 1: 0.1 - 3: 0.3 - 2016-01-01: - deviation_from: previous - 0: 0.0 - reference: Art. G. v. 02.10.2015 BGBl I S. 1610 -min_miete: - name: - de: Minimalwert für Parameter M - en: null - description: - de: WoGG - Anlage 3 (bis 2019 Anlage 2) (zu § 19 Abs. 2) - en: null - unit: Euro + type: dict 1984-01-01: 1: 0 2: 0 @@ -612,189 +84,35 @@ min_miete: 10: 146 11: 180 12: 286 -min_eink: + 2025-01-01: + reference: Art. 1 V. v. 21.10.2024 BGBl. 2024 I Nr. 314 + 1: 54 + 2: 67 + 3: 79 + 4: 92 + 5: 103 + 6: 103 + 7: 115 + 8: 128 + 9: 140 + 10: 152 + 11: 187 + 12: 298 +raw_max_miete_m_nach_baujahr: name: - de: Minimalwert für Parameter Y - en: null - description: - de: WoGG - Anlage 3 (bis 2019 Anlage 2) (zu § 19 Abs. 2) - en: null - unit: Euro - 1984-01-01: - 1: 0 - 2: 0 - 3: 0 - 4: 0 - 5: 0 - 6: 0 - 7: 0 - 8: 0 - 9: 0 - 10: 0 - 11: 0 - 12: 0 - 2001-01-01: - 1: 120 - 2: 150 - 3: 200 - 4: 250 - 5: 285 - 6: 320 - 7: 355 - 8: 385 - 9: 555 - 10: 730 - 11: 1000 - 12: 1175 - 2009-01-01: - 1: 205 - 2: 245 - 3: 265 - 4: 315 - 5: 345 - 6: 365 - 7: 385 - 8: 415 - 9: 585 - 10: 805 - 11: 1085 - 12: 1255 - 2016-01-01: - reference: Art. 1 G. v. 08.10.2015 BGBl Nr.38, S.1617 - 1: 239 - 2: 310 - 3: 360 - 4: 389 - 5: 463 - 6: 537 - 7: 610 - 8: 684 - 9: 758 - 10: 832 - 11: 1085 - 12: 1255 - 2020-01-01: - reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 - 1: 275 - 2: 357 - 3: 414 - 4: 447 - 5: 532 - 6: 618 - 7: 702 - 8: 787 - 9: 872 - 10: 957 - 11: 1248 - 12: 1443 - 2023-01-01: - reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 - 1: 350 - 2: 600 - 3: 800 - 4: 1000 - 5: 1200 - 6: 1400 - 7: 1600 - 8: 1800 - 9: 2000 - 10: 2200 - 11: 2400 - 12: 2600 -freibetrag_kinder_m: - name: - de: Monatlicher Freibetrag für Alleinerziehende und arbeitende Kinder - en: null - description: - de: § 17 (4/5) WoGG - en: null - unit: Euro - reference_period: Month - 1984-01-01: - alleinerziehend: 51 - arbeitendes_kind: 0 - 2001-01-01: - deviation_from: previous - arbeitendes_kind: 51 - 2002-01-01: - alleinerziehend: 50 - arbeitendes_kind: 50 - 2016-01-01: - note: >- - neu §17 3. WoGG a) Alleinerziehend b) Kind unter 18 und neu §17 4. WoGG Kind noch - nicht 25J. - reference: Art. 1 G. v. 08.10.2015 BGBl Nr.38, S.1617 - alleinerziehend: 110 - arbeitendes_kind: 100 -freibetrag_behinderung: - name: - de: Jährlicher Freibetrag pro behindertes Haushaltsmitglied - en: null + de: Höchstbeträge für Miete und Belastung, nach Baujahr der Immobilie + en: Maximum values for rent and burden, by year of construction of the property description: de: >- - Der Betrag ist abhängig vom Behinderungsgrad der jeweiligen Person. Vor 2016 ist - der Betrag unterschiedlich für Personen mit Behinderungsgrad über bzw unter 80%. - Für Menschen mit Behinderungsgrad unter 100% muss zusätzlich Pflegebedürftigkeit - gem. §14 SGB XI. und gleichzeitig Häusliche/teilstationäre/Kurzzeit-Pflege - vorliegen. Dies ist aktuell nicht implementiert. § 17 Nr. 1 WoGG. (früher § 17 (2) - WoGG) + Anlage 1 WoGG, §8 (1) WoGG. + Die Werte sind geordnet nach + - Anzahl Personen + - maximales Baujahr des Hauses + - Mietstufe en: null - unit: Euro - reference_period: Year - 1984-01-01: - 0: 0 - 1: 0 - 80: 1224 - 1986-01-01: - deviation_from: previous - 80: 612 - 1991-01-01: - 0: 0 - 1: 1224 - 80: 1536 - 2002-01-01: - 0: 0 - 1: 1200 - 80: 1500 - 2016-01-01: - reference: 2 Art. 1 G. v. 08.10.2015 BGBl Nr.38 S.1612 - scalar: 1500 - note: >- - neue Regelung - §17 1. WoGG a) GDB = 100 b) GDB < 100 & pflegebedürftig gem. §14 - SGB XI. + gleichz. Häusliche/teilstationäre/Kurzzeit-Pflege - 2020-01-01: - reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 - scalar: 1800 -behinderungsgrad: - name: - de: Behinderungsgrad für Freibetrag - en: Degree of disability for allowance - description: - de: >- - Ein Wohngeld-Freibetrag wird Menschen mit Behinderung gewährt. Dabei hängt die - Höhe des Freibetrages vom Behinderungsgrad ab. - en: >- - A housing benefit allowance is granted to people with disabilities. The height of - the allowance depends on the degree of disability. - reference: § 17 Abs. 1 WoGG - unit: Percent - 1984-01-01: - 1: 0 - 2: 80 -max_miete: - name: - de: Höchstbeträge für Miete und Belastung - en: null - description: - de: >- - Anlage 1 WoGG, bis 2019 §12 (1) WoGG. Vor 2009 §8 (1) WoGG. Seit 2022 auch §24 - Wohngeldverordnung (WoGV). - en: null - note: >- - Die Werte sind nach Anzahl Personen - maximales Baujahr des Hauses (vor 2009) - - Mietstufe geordnet. Alle Werte in vollen Euro. - unit: Euro + unit: Euros reference_period: Month + type: require_converter 1981-01-01: 1: 1965: @@ -1622,6 +940,7 @@ max_miete: 3: 420 4: 454 5: 520 + 6: 550 # FixMe: made up 1991: 1: 400 2: 425 @@ -1682,6 +1001,22 @@ max_miete: 6: 90 reference: Art. 5 G. v. 22.12.1999, BGBl I S. 2671. note: Nimmt die Umrechnung in Euro von 2002 vorweg. + 2009-01-01: + note: Keine Differenzierung nach Baujahr, siehe `raw_max_miete_m`. +raw_max_miete_m: + name: + de: Höchstbeträge für Miete und Belastung + en: Maximum values for rent and burden + description: + de: >- + Anlage 1 WoGG, bis 2019 §12 (1) WoGG. Seit 2022 auch §24 Wohngeldverordnung + (WoGV). Die Werte sind geordnet nach + - Anzahl Personen + - Mietstufe + en: null + unit: Euros + reference_period: Month + type: require_converter 2009-01-01: 1: 1: 292 @@ -1870,41 +1205,57 @@ max_miete: 6: 143 7: 157 reference: V. v. 03.06.2021 BGBl. I S. 1369. -vermögensgrundfreibetrag: - name: - de: Vermögensgrundfreibetrag für den Haushalt - en: Basic wealth exemption at the household level - description: - de: >- - Wohngeld-Verwaltungsvorschift 21.37. Seit 2009 (G. v. 24.09.2008, BGBl. I S. 1856) - wird durch §21 Nr. 3 WoGG geregelt, dass hohes Vermögen ein Ausschlussgrund für - Wohngeld sein kann. Die genauen Werte regelt die Verwaltungsvorschrift vom April - 2009. Vorher war hohes Vermögen laut WoGG kein Ausschlussgrund. - en: Since 2009, wealth might be a reason not to grand housing benefit. - unit: Euro - 1970-01-01: - scalar: inf - note: No wealth threshold in place. - 2009-01-01: - scalar: 60000 - reference: Wohngeld-Verwaltungsvorschrift 2009. - note: At least in place since then. -vermögensfreibetrag_pers: - name: - de: Vermögensfreibetrag für jedes weitere Haushaltsmitglied - en: Additional wealth exemption for each additional household member - description: - de: Wohngeld-Verwaltungsvorschift 21.37 - en: null - unit: Euro - 1970-01-01: - scalar: inf - note: No wealth threshold in place - 2009-01-01: - scalar: 30000 - reference: Wohngeld-Verwaltungsvorschrift 2009. - note: At least in place since then. -heizkostenentlastung_m: + 2025-01-01: + reference: Art. 1 V. v. 21.10.2024 BGBl. 2024 I Nr. 314 + 1: + 1: 361 + 2: 408 + 3: 456 + 4: 511 + 5: 562 + 6: 615 + 7: 677 + 2: + 1: 437 + 2: 493 + 3: 551 + 4: 619 + 5: 680 + 6: 745 + 7: 820 + 3: + 1: 521 + 2: 587 + 3: 657 + 4: 737 + 5: 809 + 6: 887 + 7: 975 + 4: + 1: 608 + 2: 686 + 3: 766 + 4: 858 + 5: 946 + 6: 1035 + 7: 1139 + 5: + 1: 694 + 2: 782 + 3: 875 + 4: 982 + 5: 1080 + 6: 1183 + 7: 1302 + jede_weitere_person: + 1: 82 + 2: 94 + 3: 106 + 4: 119 + 5: 129 + 6: 149 + 7: 163 +raw_heizkostenentlastung_m: name: de: Heizkostenentlastung aufgrund der CO2-Bepreisung en: Reduction in heating costs due to CO2 pricing @@ -1915,17 +1266,18 @@ heizkostenentlastung_m: en: >- Amount of relief in heating costs due to CO2 pricing in Euro depending on household size - unit: Euro - reference: §12 (6) WoGG, Art. 1 G. v. 15.05.2020, BGBl I S. 1015. + unit: Euros reference_period: Month + type: require_converter 2021-01-01: + reference: §12 (6) WoGG, Art. 1 G. v. 15.05.2020, BGBl I S. 1015. 1: 14.4 2: 18.6 3: 22.2 4: 25.8 5: 29.4 jede_weitere_person: 3.6 -dauerhafte_heizkostenkomponente_m: +raw_dauerhafte_heizkostenkomponente_m: name: de: Dauerhafte Heizkostenkomponente en: Permanent heating cost component @@ -1936,20 +1288,21 @@ dauerhafte_heizkostenkomponente_m: en: >- Permanent heating cost component depending on household size introduced with the housing subsidy reform 2023 - unit: Euro - reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 + unit: Euros reference_period: Month + type: require_converter 2023-01-01: + reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 1: 96 2: 124 3: 148 4: 172 5: 196 jede_weitere_person: 24 -klimakomponente_m: +raw_klimakomponente_m: name: de: Klimakomponente - en: climate component + en: Climate component description: de: >- Als Klimakomponente zu berücksichtigender Zuschlag zu den Höchstbeträgen nach §12 @@ -1959,10 +1312,11 @@ klimakomponente_m: Surcharge to be taken into account as climate component in addition to the maximum amounts pursuant to § 12 (1) in Euro depending on the size of the household; introduced with the housing subsidy reform 2023 - unit: Euro - reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 + unit: Euros reference_period: Month + type: require_converter 2023-01-01: + reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 1: 19.20 2: 24.80 3: 29.60 diff --git a/src/_gettsim/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py index 0da17b81b8..be82c800d9 100644 --- a/src/_gettsim/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -1,115 +1,108 @@ """Eligibility checks for housing benefits (Wohngeld).""" +from __future__ import annotations + from ttsim import policy_function -@policy_function() -def grundsätzlich_anspruchsberechtigt_wthh( +@policy_function( + start_date="2005-01-01", + end_date="2008-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt_wthh", +) +def grundsätzlich_anspruchsberechtigt_wthh_ohne_vermögensprüfung( mindesteinkommen_erreicht_wthh: bool, - vermögensgrenze_unterschritten_wthh: bool, ) -> bool: """Check whether the household meets the conditions for Wohngeld. This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften that passed the priority check against Arbeitslosengeld II / Bürgergeld. - Parameters - ---------- - mindesteinkommen_erreicht_wthh - See :func:`mindesteinkommen_erreicht_wthh`. - vermögensgrenze_unterschritten_wthh - See :func:`vermögensgrenze_unterschritten_wthh`. + """ + return mindesteinkommen_erreicht_wthh + + +@policy_function( + start_date="2009-01-01", leaf_name="grundsätzlich_anspruchsberechtigt_wthh" +) +def grundsätzlich_anspruchsberechtigt_wthh_mit_vermögensprüfung( + mindesteinkommen_erreicht_wthh: bool, + vermögensgrenze_unterschritten_wthh: bool, +) -> bool: + """Check whether the household meets the conditions for Wohngeld. - Returns - ------- + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften + that passed the priority check against Arbeitslosengeld II / Bürgergeld. """ return mindesteinkommen_erreicht_wthh and vermögensgrenze_unterschritten_wthh -@policy_function() -def grundsätzlich_anspruchsberechtigt_bg( +@policy_function( + start_date="2005-01-01", + end_date="2008-12-31", + leaf_name="grundsätzlich_anspruchsberechtigt_bg", +) +def grundsätzlich_anspruchsberechtigt_bg_ohne_vermögensprüfung( mindesteinkommen_erreicht_bg: bool, - vermögensgrenze_unterschritten_bg: bool, ) -> bool: """Check whether the household meets the conditions for Wohngeld. This target is used for the priority check calculation against Arbeitslosengeld II / Bürgergeld on the Bedarfsgemeinschaft level. - Parameters - ---------- - mindesteinkommen_erreicht_bg - See :func:`mindesteinkommen_erreicht_bg`. - vermögensgrenze_unterschritten_bg - See :func:`vermögensgrenze_unterschritten_bg`. + """ + return mindesteinkommen_erreicht_bg + - Returns - ------- +@policy_function( + start_date="2009-01-01", leaf_name="grundsätzlich_anspruchsberechtigt_bg" +) +def grundsätzlich_anspruchsberechtigt_bg_mit_vermögensprüfung( + mindesteinkommen_erreicht_bg: bool, + vermögensgrenze_unterschritten_bg: bool, +) -> bool: + """Check whether the household meets the conditions for Wohngeld. + + This target is used for the priority check calculation against Arbeitslosengeld II / + Bürgergeld on the Bedarfsgemeinschaft level. """ return mindesteinkommen_erreicht_bg and vermögensgrenze_unterschritten_bg -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2009-01-01") def vermögensgrenze_unterschritten_wthh( vermögen_wthh: float, anzahl_personen_wthh: int, - wohngeld_params: dict, + parameter_vermögensfreibetrag: dict[str, float], ) -> bool: - """Wealth is below the eligibility threshold for housing benefits. - - Parameters - ---------- - vermögen_wthh - See :func:`vermögen_wthh <vermögen_wthh>`. - anzahl_personen_wthh - See :func:`anzahl_personen_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- + """Wealth is below the eligibility threshold for housing benefits.""" + vermögensfreibetrag = parameter_vermögensfreibetrag[ + "grundfreibetrag" + ] + parameter_vermögensfreibetrag["je_weitere_person"] * (anzahl_personen_wthh - 1) - """ - - return vermögensprüfung( - vermögen=vermögen_wthh, - anzahl_personen=anzahl_personen_wthh, - params=wohngeld_params, - ) + return vermögen_wthh <= vermögensfreibetrag -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2009-01-01") def vermögensgrenze_unterschritten_bg( vermögen_bg: float, arbeitslosengeld_2__anzahl_personen_bg: int, - wohngeld_params: dict, + parameter_vermögensfreibetrag: dict[str, float], ) -> bool: - """Wealth is below the eligibility threshold for housing benefits. - - Parameters - ---------- - vermögen_bg - See :func:`vermögen_bg <vermögen_bg>`. - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - - """ + """Wealth is below the eligibility threshold for housing benefits.""" - return vermögensprüfung( - vermögen=vermögen_bg, - anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, - params=wohngeld_params, + vermögensfreibetrag = parameter_vermögensfreibetrag[ + "grundfreibetrag" + ] + parameter_vermögensfreibetrag["je_weitere_person"] * ( + arbeitslosengeld_2__anzahl_personen_bg - 1 ) + return vermögen_bg <= vermögensfreibetrag + -@policy_function() +@policy_function(start_date="2005-01-01") def mindesteinkommen_erreicht_wthh( arbeitslosengeld_2__regelbedarf_m_wthh: float, einkommen_für_mindesteinkommen_m_wthh: float, @@ -125,23 +118,13 @@ def mindesteinkommen_erreicht_wthh( The allowance for discretionary judgment is ignored here. - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_wthh - See :func:`arbeitslosengeld_2__regelbedarf_m_wthh`. - einkommen_für_mindesteinkommen_m_wthh - See :func:`einkommen_für_mindesteinkommen_m_wthh`. - - Returns - ------- - """ return ( einkommen_für_mindesteinkommen_m_wthh >= arbeitslosengeld_2__regelbedarf_m_wthh ) -@policy_function() +@policy_function(start_date="2005-01-01") def mindesteinkommen_erreicht_bg( arbeitslosengeld_2__regelbedarf_m_bg: float, einkommen_für_mindesteinkommen_m_bg: float, @@ -157,21 +140,11 @@ def mindesteinkommen_erreicht_bg( The allowance for discretionary judgment is ignored here. - Parameters - ---------- - arbeitslosengeld_2__regelbedarf_m_bg - See :func:`arbeitslosengeld_2__regelbedarf_m_bg`. - einkommen_für_mindesteinkommen_m_bg - See :func:`einkommen_für_mindesteinkommen_m_bg`. - - Returns - ------- - """ return einkommen_für_mindesteinkommen_m_bg >= arbeitslosengeld_2__regelbedarf_m_bg -@policy_function() +@policy_function(start_date="2005-01-01") def einkommen_für_mindesteinkommen_m( arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, @@ -186,22 +159,6 @@ def einkommen_für_mindesteinkommen_m( According to BMI Erlass of 11.03.2020, Unterhaltsvorschuss, Kinderzuschlag and Kindergeld count as income for this check. - Parameters - ---------- - arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m - See :func:`arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m`. - unterhalt__tatsächlich_erhaltener_betrag_m - See :func:`unterhalt__tatsächlich_erhaltener_betrag_m`. - unterhaltsvorschuss__betrag_m - See :func:`unterhaltsvorschuss__betrag_m`. - kindergeld__betrag_m - See :func:`kindergeld__betrag_m`. - kinderzuschlag__anspruchshöhe_m - See :func:`kinderzuschlag__anspruchshöhe_m`. - - Returns - ------- - """ return ( @@ -211,33 +168,3 @@ def einkommen_für_mindesteinkommen_m( + kindergeld__betrag_m + kinderzuschlag__anspruchshöhe_m ) - - -def vermögensprüfung( - vermögen: float, - anzahl_personen: int, - params: dict, -) -> bool: - """Wealth check for housing benefit calculation. - - The payment depends on the wealth of the household and the number of household - members. - - Note: This function is not a direct target in the DAG, but a helper function to - re-use code in various places - - """ - - if anzahl_personen == 1: - vermögensfreibetrag = params["vermögensgrundfreibetrag"] - else: - vermögensfreibetrag = params["vermögensgrundfreibetrag"] + params[ - "vermögensfreibetrag_pers" - ] * (anzahl_personen - 1) - - if vermögen <= vermögensfreibetrag: - out = True - else: - out = False - - return out diff --git a/src/_gettsim/wohngeld/voraussetzungen.yaml b/src/_gettsim/wohngeld/voraussetzungen.yaml new file mode 100644 index 0000000000..b6713f609f --- /dev/null +++ b/src/_gettsim/wohngeld/voraussetzungen.yaml @@ -0,0 +1,19 @@ +--- +parameter_vermögensfreibetrag: + name: + de: Vermögensgrundfreibetrag für den Haushalt + en: Basic wealth exemption at the household level + description: + de: >- + Wohngeld-Verwaltungsvorschift 21.37. Seit 2009 (G. v. 24.09.2008, BGBl. I S. 1856) + wird durch §21 Nr. 3 WoGG geregelt, dass hohes Vermögen ein Ausschlussgrund für + Wohngeld sein kann. Die genauen Werte regelt die Verwaltungsvorschrift vom April + 2009. Vorher war hohes Vermögen laut WoGG kein Ausschlussgrund. + en: Since 2009, wealth might be a reason not to grand housing benefit. + unit: Euros + reference_period: null + type: dict + 2009-01-01: + grundfreibetrag: 60000 + je_weitere_person: 30000 + reference: Wohngeld-Verwaltungsvorschrift 2009. diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index b569947a73..2862b256a3 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -16,7 +16,31 @@ 3. In this sense, this implementation is an approximation of the actual Wohngeld. """ -from ttsim import AggType, RoundingSpec, agg_by_group_function, policy_function +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from ttsim import ( + AggType, + RoundingSpec, + agg_by_group_function, + get_consecutive_int_1d_lookup_table_param_value, + param_function, + policy_function, +) + +if TYPE_CHECKING: + from ttsim.param_objects import ConsecutiveInt1dLookupTableParamValue + + +@dataclass(frozen=True) +class BasisformelParamValues: + skalierungsfaktor: float + a: ConsecutiveInt1dLookupTableParamValue + b: ConsecutiveInt1dLookupTableParamValue + c: ConsecutiveInt1dLookupTableParamValue + zusatzbetrag_nach_haushaltsgröße: ConsecutiveInt1dLookupTableParamValue @agg_by_group_function(agg_type=AggType.COUNT) @@ -31,23 +55,7 @@ def betrag_m_wthh( vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh: bool, vorrangprüfungen__wohngeld_vorrang_wthh: bool, ) -> float: - """Housing benefit after wealth and priority checks. - - Parameters - ---------- - anspruchshöhe_m_wthh - See :func:`anspruchshöhe_m_wthh`. - erwachsene_alle_rentenbezieher_hh - See :func:`erwachsene_alle_rentenbezieher_hh <erwachsene_alle_rentenbezieher_hh>`. - vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh - See :func:`vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh`. - vorrangprüfungen__wohngeld_vorrang_wthh - See :func:`vorrangprüfungen__wohngeld_vorrang_wthh`. - - Returns - ------- - - """ + """Housing benefit after wealth and priority checks.""" # TODO (@MImmesberger): This implementation may be only an approximation of the # actual rules for individuals that are on the margin of the priority check. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/752 @@ -83,7 +91,7 @@ def anspruchshöhe_m_wthh( einkommen_m_wthh: float, miete_m_wthh: float, grundsätzlich_anspruchsberechtigt_wthh: bool, - wohngeld_params: dict, + basisformel_params: BasisformelParamValues, ) -> float: """Housing benefit after wealth and income check. @@ -91,29 +99,13 @@ def anspruchshöhe_m_wthh( the household that passed the priority check against Arbeitslosengeld 2. Returns zero if not eligible. - Parameters - ---------- - anzahl_personen_wthh - See :func:`anzahl_personen_wthh`. - einkommen_m_wthh - See :func:`einkommen_m_wthh`. - miete_m_wthh - See :func:`miete_m_wthh`. - grundsätzlich_anspruchsberechtigt_wthh - See :func:`grundsätzlich_anspruchsberechtigt_wthh`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - """ if grundsätzlich_anspruchsberechtigt_wthh: out = basisformel( anzahl_personen=anzahl_personen_wthh, einkommen_m=einkommen_m_wthh, miete_m=miete_m_wthh, - params=wohngeld_params, + params=basisformel_params, ) else: out = 0.0 @@ -134,35 +126,19 @@ def anspruchshöhe_m_bg( einkommen_m_bg: float, miete_m_bg: float, grundsätzlich_anspruchsberechtigt_bg: bool, - wohngeld_params: dict, + basisformel_params: BasisformelParamValues, ) -> float: """Housing benefit after wealth and income check. This target is used for the priority check calculation against Arbeitslosengeld 2. - Parameters - ---------- - arbeitslosengeld_2__anzahl_personen_bg - See :func:`arbeitslosengeld_2__anzahl_personen_bg`. - einkommen_m_bg - See :func:`einkommen_m_bg`. - miete_m_bg - See :func:`miete_m_bg`. - grundsätzlich_anspruchsberechtigt_bg - See :func:`grundsätzlich_anspruchsberechtigt_bg`. - wohngeld_params - See params documentation :ref:`wohngeld_params <wohngeld_params>`. - - Returns - ------- - """ if grundsätzlich_anspruchsberechtigt_bg: out = basisformel( anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, einkommen_m=einkommen_m_bg, miete_m=miete_m_bg, - params=wohngeld_params, + params=basisformel_params, ) else: out = 0.0 @@ -170,60 +146,69 @@ def anspruchshöhe_m_bg( return out +@param_function() +def basisformel_params( + skalierungsfaktor: float, + koeffizienten_berechnungsformel: dict[int, dict[str, float]], + max_anzahl_personen: dict[str, int], + zusatzbetrag_pro_person_in_großen_haushalten: float, +) -> BasisformelParamValues: + """Convert the parameters of the Wohngeld basis formula to a format that can be + used by Numpy and Jax. + """ + a = {i: v["a"] for i, v in koeffizienten_berechnungsformel.items()} + b = {i: v["b"] for i, v in koeffizienten_berechnungsformel.items()} + c = {i: v["c"] for i, v in koeffizienten_berechnungsformel.items()} + max_normal = max_anzahl_personen["normale_berechnung"] + for koeff in [a, b, c]: + assert max(koeff.keys()) == max_normal, ( + "The maximum number of persons for the normal calculation of the basic" + "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " + f"(got: {max_normal}) must be the same as the maximum number of household " + f"members in `koeffizienten_berechnungsformel` (got: {max(koeff.keys())})" + ) + zusatzbetrag_nach_haushaltsgröße = dict.fromkeys(range(max_normal + 1), 0.0) + for i in range(max_normal + 1, max_anzahl_personen["indizierung"] + 1): + for koeff in [a, b, c]: + koeff[i] = koeff[max_normal] + zusatzbetrag_nach_haushaltsgröße[i] = ( + i - max_normal + ) * zusatzbetrag_pro_person_in_großen_haushalten + + return BasisformelParamValues( + skalierungsfaktor=skalierungsfaktor, + a=get_consecutive_int_1d_lookup_table_param_value(a), + b=get_consecutive_int_1d_lookup_table_param_value(b), + c=get_consecutive_int_1d_lookup_table_param_value(c), + zusatzbetrag_nach_haushaltsgröße=get_consecutive_int_1d_lookup_table_param_value( + zusatzbetrag_nach_haushaltsgröße + ), + ) + + def basisformel( anzahl_personen: int, einkommen_m: float, miete_m: float, - params: dict, + params: BasisformelParamValues, ) -> float: """Basic formula for housing benefit calculation. Note: This function is not a direct target in the DAG, but a helper function to store the code for Wohngeld calculation. - Parameters - ---------- - anzahl_personen - Number of people Wohngeld is being calculated for. - einkommen_m - Sum of income of people Wohngeld should be calculated for. - miete_m - Sum of rent. - params - See params documentation :ref:`params <params>`. - - Returns - ------- - """ - max_berücks_personen = params["bonus_sehr_große_haushalte"][ - "max_anz_personen_normale_berechnung" - ] - - koeffizienten = params["koeffizienten_berechnungsformel"][ - min(anzahl_personen, max_berücks_personen) - ] - out = params["faktor_berechnungsformel"] * ( - miete_m - - ( - ( - koeffizienten["a"] - + (koeffizienten["b"] * miete_m) - + (koeffizienten["c"] * einkommen_m) - ) - * einkommen_m - ) + a = params.a.values_to_look_up[anzahl_personen - params.a.base_to_subtract] + b = params.b.values_to_look_up[anzahl_personen - params.b.base_to_subtract] + c = params.c.values_to_look_up[anzahl_personen - params.c.base_to_subtract] + zusatzbetrag_nach_haushaltsgröße = ( + params.zusatzbetrag_nach_haushaltsgröße.values_to_look_up[ + anzahl_personen - params.zusatzbetrag_nach_haushaltsgröße.base_to_subtract + ] ) - out = max(out, 0.0) - - if anzahl_personen > max_berücks_personen: - # If more than 12 persons, there is a lump-sum on top. - # The maximum is still capped at `miete_m`. - out = min( - out - + params["bonus_sehr_große_haushalte"]["bonus_jede_weitere_person"] - * (anzahl_personen - max_berücks_personen), - miete_m, - ) - - return out + out = max( + 0.0, + params.skalierungsfaktor + * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), + ) + return min(miete_m, out + zusatzbetrag_nach_haushaltsgröße) diff --git a/src/_gettsim/wohngeld/wohngeld.yaml b/src/_gettsim/wohngeld/wohngeld.yaml new file mode 100644 index 0000000000..62737b406c --- /dev/null +++ b/src/_gettsim/wohngeld/wohngeld.yaml @@ -0,0 +1,589 @@ +--- +max_anzahl_personen: + name: + de: Maximale Anzahl an Personen für die Wohngeldformel + en: Maximum number of persons for the Wohngeld formula + description: + de: >- + Dies sind rein technische Parameter, welche für das korrekte Setzen der + Datenstrukturen notwendig sind. + - `normale_berechnung` ist der Maximalwert an berücksichtigten Personen, für + welche die Wohngeldformel im Gesetz spezifiziert ist. + - `indizierung` hat keinerlei Referenz zu einem Gesetz und ist somit kein + Politikparameter, sondern bestimmt die Größe der Lookup-Tabellen. + en: >- + These are purely technical parameters that are necessary for the correct + setting of the data structures. + - `normale_berechnung` is the maximum number of persons considered for the + calculation of the housing allowance. + - `indizierung` is not a policy parameter, but determines the size of the + lookup tables. + unit: null + reference_period: null + type: dict + 1984-01-01: + normale_berechnung: 12 + indizierung: 50 +skalierungsfaktor: + name: + de: Faktor am Anfang der Wohngeldformel + en: Factor at the beginning of the Wohngeld formula + description: + de: Anlage 2 WoGG zu §19 Abs. 2 WoGG + en: null + unit: null + reference_period: null + type: scalar + 1984-01-01: + value: 1 + 2009-01-01: + value: 1.08 + reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 + 2016-01-01: + value: 1.15 + reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 +koeffizienten_berechnungsformel: + name: + de: Parameter a, b, c der Wohngeldformel + en: Parameters a, b, c of the Wohngeld formula + description: + de: >- + WoGG - Anlage 2 (bis 2019 Anlage 1) (zu § 19 (1)). Seit 2022 auch §24 + Wohngeldverordnung (WoGV). + Die Schlüssel von 1 to 12 beziehen sich auf die Haushaltsgröße. + en: The keys from 1 to 12 below refer to the household size. + unit: null + reference_period: null + type: require_converter + 1984-01-01: + note: Parameter aus Regressionsanalyse der Wohngeldtabellen + 1: + a: 0.0532 + b: 0.00135 + c: 0.0000632 + 2: + a: 0.0574 + b: 0.000957 + c: 0.0000352 + 3: + a: 0.0612 + b: 0.00078 + c: 0.0000202 + 4: + a: 0.0596 + b: 0.000613 + c: 2.78e-06 + 5: + a: 0.0572 + b: 0.000554 + c: 5.38e-07 + 6: + a: 0.0365 + b: 0.000531 + c: 4.62e-06 + 7: + a: 0.0129 + b: 0.000502 + c: 0.0000124 + 8: + a: -0.0176 + b: 0.000468 + c: 0.0000253 + 9: + a: -0.0397 + b: 0.000424 + c: 0.0000364 + 10: + a: -0.0595 + b: 0.000373 + c: 0.0000481 + 11: + a: -0.0595 + b: 0.000373 + c: 0.0000481 + 12: + a: -0.0595 + b: 0.000373 + c: 0.0000481 + 1990-01-01: + note: Parameter aus Regressionsanalyse der Wohngeldtabellen + updates_previous: true + 1: + a: 0.0648 + b: 0.00102 + c: 0.0000613 + 2: + a: 0.0694 + b: 0.000715 + c: 0.0000347 + 3: + a: 0.0741 + b: 0.000604 + c: 0.000011 + 4: + a: 0.0669 + b: 0.000476 + c: 1.75e-06 + 5: + a: 0.064 + b: 0.00043 + c: 9.14e-07 + 6: + a: 0.0445 + b: 0.000414 + c: 4.02e-06 + 7: + a: 0.0226 + b: 0.000397 + c: 9.44e-06 + 8: + a: -0.0005 + b: 0.000387 + c: 0.0000136 + 9: + a: -0.0281 + b: 0.000337 + c: 0.0000308 + 10: + a: -0.0455 + b: 0.000298 + c: 0.0000386 + 11: + a: -0.0455 + b: 0.000298 + c: 0.0000386 + 12: + a: -0.0455 + b: 0.000298 + c: 0.0000386 + 1992-01-01: + note: Parameter aus Regressionsanalyse der Wohngeldtabellen + updates_previous: true + 1: + a: 0.0666 + b: 0.00102 + c: 0.0000579 + 2: + a: 0.0716 + b: 0.000713 + c: 0.0000317 + 3: + a: 0.0748 + b: 0.000604 + c: 0.0000102 + 4: + a: 0.0671 + b: 0.000475 + c: 1.63e-06 + 5: + a: 0.0642 + b: 0.00043 + c: 8.96e-07 + 6: + a: 0.0463 + b: 0.000419 + c: 1.35e-06 + 7: + a: 0.0256 + b: 0.000404 + c: 5.66e-06 + 8: + a: -0.00252 + b: 0.000377 + c: 0.0000173 + 9: + a: -0.00252 + b: 0.000377 + c: 0.0000173 + 10: + a: -0.00252 + b: 0.000377 + c: 0.0000173 + 11: + a: -0.00252 + b: 0.000377 + c: 0.0000173 + 12: + a: -0.00252 + b: 0.000377 + c: 0.0000173 + 2001-01-01: + reference: Art. 5 G. v. 22.12.1999 BGBl. I S. 2671 + updates_previous: true + 1: + a: 0.063 + b: 0.000796 + c: 0.00009102 + 2: + a: 0.057 + b: 0.000576 + c: 0.00006431 + 3: + a: 0.055 + b: 0.000518 + c: 0.0000325 + 4: + a: 0.047 + b: 0.000395 + c: 0.00002325 + 5: + a: 0.042 + b: 0.000348 + c: 0.00002151 + 6: + a: 0.037 + b: 0.000327 + c: 0.00001519 + 7: + a: 0.033 + b: 0.000313 + c: 8.745e-06 + 8: + a: 0.023 + b: 0.000296 + c: 7.44e-06 + 9: + a: -0.017 + b: 0.000225 + c: 0.00003522 + 10: + a: -0.037 + b: 0.000157 + c: 0.00005547 + 11: + a: -0.067 + b: 0.000153 + c: 0.00005686 + 12: + a: -0.092 + b: 0.000136 + c: 0.00006182 + 2009-01-01: + reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 + 1: + a: 0.063 + b: 0.0007963 + c: 0.00009102 + 2: + a: 0.057 + b: 0.0005761 + c: 0.00006431 + 3: + a: 0.055 + b: 0.0005176 + c: 0.0000325 + 4: + a: 0.047 + b: 0.0003945 + c: 0.00002325 + 5: + a: 0.042 + b: 0.0003483 + c: 0.00002151 + 6: + a: 0.037 + b: 0.0003269 + c: 0.00001519 + 7: + a: 0.033 + b: 0.0003129 + c: 8.745e-06 + 8: + a: 0.023 + b: 0.0002959 + c: 7.44e-06 + 9: + a: -0.0197 + b: 0.0002245 + c: 0.00003459 + 10: + a: -0.0401 + b: 0.0001565 + c: 0.0000514 + 11: + a: -0.066 + b: 0.00012 + c: 0.00005686 + 12: + a: -0.0899 + b: 0.000109 + c: 0.00006182 + 2016-01-01: + reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 + 1: + a: 0.04 + b: 0.00063 + c: 0.000138 + 2: + a: 0.03 + b: 0.00044 + c: 0.000103 + 3: + a: 0.02 + b: 0.00038 + c: 0.000083 + 4: + a: 0.01 + b: 0.00034 + c: 0.000043 + 5: + a: 0 + b: 0.0003 + c: 0.000042 + 6: + a: -0.01 + b: 0.00028 + c: 0.000036 + 7: + a: -0.02 + b: 0.00026 + c: 0.000037 + 8: + a: -0.03 + b: 0.00023 + c: 0.000037 + 9: + a: -0.04 + b: 0.0002 + c: 0.000039 + 10: + a: -0.06 + b: 0.00016 + c: 0.000045 + 11: + a: -0.1 + b: 0.00012 + c: 0.000053 + 12: + a: -0.14 + b: 0.00011 + c: 0.00006 + 2020-01-01: + reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 + updates_previous: true + 1: + a: 0.04 + b: 0.00058 + c: 0.000118 + 2: + a: 0.03 + b: 0.000405 + c: 0.000088 + 3: + a: 0.02 + b: 0.00035 + c: 0.0000709 + 4: + a: 0.01 + b: 0.000313 + c: 0.0000368 + 5: + a: 0 + b: 0.000276 + c: 0.0000359 + 6: + a: -0.01 + b: 0.000258 + c: 0.0000308 + 7: + a: -0.02 + b: 0.000239 + c: 0.0000316 + 8: + a: -0.03 + b: 0.000212 + c: 0.0000316 + 9: + a: -0.04 + b: 0.000184 + c: 0.0000333 + 10: + a: -0.06 + b: 0.000147 + c: 0.0000385 + 11: + a: -0.1 + b: 0.00011 + c: 0.0000453 + 12: + a: -0.14 + b: 0.000101 + c: 0.0000513 + 2022-01-01: + reference: V. v. 03.06.2021 BGBl. I S. 1369. + updates_previous: true + 1: + a: 0.04 + b: 0.000564 + c: 0.0001157 + 2: + a: 0.03 + b: 0.000394 + c: 0.0000863 + 3: + a: 0.02 + b: 0.00034 + c: 0.0000695 + 4: + a: 0.01 + b: 0.000304 + c: 0.0000361 + 5: + a: 0 + b: 0.000268 + c: 0.0000352 + 6: + a: -0.01 + b: 0.000251 + c: 0.0000302 + 7: + a: -0.02 + b: 0.000232 + c: 0.000031 + 8: + a: -0.03 + b: 0.000206 + c: 0.000031 + 9: + a: -0.04 + b: 0.000179 + c: 0.0000326 + 10: + a: -0.06 + b: 0.000143 + c: 0.0000377 + 11: + a: -0.1 + b: 0.000107 + c: 0.0000444 + 12: + a: -0.14 + b: 0.000098 + c: 0.0000503 + 2023-01-01: + reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 + updates_previous: true + 1: + a: 0.04 + b: 0.0004991 + c: 0.0000462 + 2: + a: 0.03 + b: 0.0003716 + c: 0.0000345 + 3: + a: 0.02 + b: 0.0003035 + c: 0.0000278 + 4: + a: 0.01 + b: 0.0002251 + c: 0.00002 + 5: + a: 0 + b: 0.0001985 + c: 0.0000195 + 6: + a: -0.01 + b: 0.0001792 + c: 0.0000188 + 7: + a: -0.02 + b: 0.0001657 + c: 0.0000187 + 8: + a: -0.03 + b: 0.0001648 + c: 0.0000187 + 9: + a: -0.04 + b: 0.0001432 + c: 0.0000188 + 10: + a: -0.06 + b: 0.00013 + c: 0.0000188 + 11: + a: -0.09 + b: 0.0001188 + c: 0.0000222 + 12: + a: -0.12 + b: 0.0001152 + c: 0.0000251 + 2025-01-01: + reference: Art. 1 V. v. 21.10.2024 BGBl. 2024 I Nr. 314 + updates_previous: true + 1: + b: 4.797E-4 + c: 4.080E-5 + 2: + b: 3.571E-4 + c: 3.040E-5 + 3: + b: 2.917E-4 + c: 2.450E-5 + 4: + b: 2.163E-4 + c: 1.760E-5 + 5: + b: 1.907E-4 + c: 1.720E-5 + 6: + b: 1.722E-4 + c: 1.660E-5 + 7: + b: 1.592E-4 + c: 1.650E-5 + 8: + b: 1.583E-4 + c: 1.650E-5 + 9: + b: 1.376E-4 + c: 1.660E-5 + 10: + b: 1.249E-4 + c: 1.660E-5 + 11: + b: 1.141E-4 + c: 1.960E-5 + 12: + b: 1.107E-4 + c: 2.210E-5 +zusatzbetrag_pro_person_in_großen_haushalten: + name: + de: Zusätzlicher Betrag pro Person in sehr großen Haushalten + en: Additional amount per member in very big households + description: + de: >- + Haushalte mit mehr als 12 Personen erhalten einen zusätzlichen Betrag pro Person, + der auf das Wohngeld für einen Haushalt mit 12 Personen angerechnet wird. + §19 Abs. 3 WoGG + en: >- + Households with more than 12 persons receive an additional amount per person, + which is counted towards the housing allowance for a household of 12 people. + §19 Abs. 3 WoGG + unit: Euros + reference_period: Month + type: scalar + 1984-01-01: + value: 0 + note: Fix this via dates_active! + 2001-01-01: + value: 40 + reference: Art. 5 G. v. 22.12.1999 BGBl. I S. 2671 + 2009-01-01: + value: 43 + reference: Art. 1 G. v. 24.09 2008 BGBl. I S. 1856 + 2016-01-01: + value: 47 + reference: Art. 1 G. v. 08.10.2015 BGBl 38 S.1610 + 2020-01-01: + value: 51 + reference: Art. 1 G. v. 30.11.2019 BGBl. I S. 1877 + 2023-01-01: + value: 57 + reference: Art. 1 G. v. 08.12.2022 BGBl. I Nr. 48 S. 2160 + 2025-01-01: + value: 65 + reference: Art. 1 V. v. 21.10.2024 BGBl. 2024 I Nr. 314 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml index c9c46861e6..5ca911c0d0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml @@ -56,19 +56,19 @@ inputs: - false outputs: fg_id: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 bg_id: - - 100 - - 100 - - 100 - - 100 - - 100 - - 100 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 eg_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index 088df20c30..22594e0ef5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -21,7 +21,7 @@ inputs: - false - false arbeitslosengeld_2__p_id_einstandspartner: - - 47 + - 48 - -1 - 46 arbeitsstunden_w: @@ -69,9 +69,9 @@ inputs: - true - false familie__p_id_ehepartner: - - 47 - - 46 + - 48 - -1 + - 46 familie__p_id_elternteil_1: - -1 - 46 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 72e7f5bed5..4c2d290e71 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -21,7 +21,7 @@ inputs: - false - false arbeitslosengeld_2__p_id_einstandspartner: - - 57 + - 58 - -1 - 56 arbeitsstunden_w: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml index 0144dec8da..08cfbe46f9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml @@ -140,13 +140,13 @@ outputs: bg_id: - 0 - 0 - - 100 - - 100 + - 1 + - 1 - 0 - 0 - 0 - - 200 - - 200 + - 2 + - 2 arbeitslosengeld_2__bruttokaltmiete_m_bg: - 555.56 - 555.56 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 68c51283cd..c28df453a1 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 299b4e6859..84aafef3c6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1916.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index c37b82a60a..d63cc2a5bc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1927.8 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 91a0deb14b..20b7086107 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2334.2 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 9628777668..58889699b4 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2554.02 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index d5e6d6786b..fdae1f7274 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5000.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index a1577eb7e4..d8adbfbe88 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -18,10 +18,10 @@ inputs: einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 einkommensteuer__einkünfte__sonstige__ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index 3a0ab3069b..f4359c774e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -18,10 +18,10 @@ inputs: einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 einkommensteuer__einkünfte__sonstige__ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index f01c476902..24cdde07d7 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 2547.22 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index 037b76109b..854996bd5f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 3105.28 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index 3fa9aee207..d150afd938 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 5917.6 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index 1dcb65ea02..1b98f2b77b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index f9300005a4..059f54b8a3 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 990.74 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index 1306f8c033..6948ad2bf6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -14,9 +14,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - 1910.41 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 1bda733316..c8876a73e8 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -18,10 +18,10 @@ inputs: einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 einkommensteuer__einkünfte__sonstige__ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 6ec63c297a..435024e7b5 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -26,12 +26,12 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 - -1 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index 7aa37f9601..2811bfa849 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -1,6 +1,6 @@ --- info: - note: Result from source including Betreuungskosten + note: Result from source including kinderBetreuungskosten precision_atol: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: @@ -26,12 +26,12 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - 80.0 - 45.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 - 27 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 783e9da0f9..86706fe5e9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -1,6 +1,6 @@ --- info: - note: Result from source including Betreuungskosten + note: Result from source including kinderBetreuungskosten precision_atol: 0.01 source: https://www.bmf-steuerrechner.de/bdj/eingabeformbdj.xhtml?jahr=l_k_bdj_2020 inputs: @@ -26,12 +26,12 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - 62.5 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 - 31 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index e0f9e0997f..c9660f9386 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -8,6 +8,8 @@ inputs: provided: alter: - 43 + alter_monate: + - 516 arbeitslosengeld_2__p_id_einstandspartner: - -1 arbeitsstunden_w: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 4436f4910a..7d821b47fe 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -8,6 +8,8 @@ inputs: provided: alter: - 43 + alter_monate: + - 516 arbeitslosengeld_2__p_id_einstandspartner: - -1 arbeitsstunden_w: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index e18291ddd4..7df4400283 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 0 + alter_monate: + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 2b0f4d65dd..9077a6aa9d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 43 + alter_monate: + - 516 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - 56 - 55 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index 670db5dfb0..e8ab7b3f4a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -9,6 +9,9 @@ inputs: alter: - 0 - 42 + alter_monate: + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 67663d0403..4f4c2124df 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -8,6 +8,8 @@ inputs: provided: alter: - 43 + alter_monate: + - 516 arbeitslosengeld_2__p_id_einstandspartner: - -1 arbeitsstunden_w: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index f136a401d5..0f3ba5342a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 0 + alter_monate: + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index 0b945ca764..f9bb92630d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 0 - 43 + alter_monate: + - 516 + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index 309b7a1863..ee6c6ab70e 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 0 + alter_monate: + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 527e836f37..27e8372727 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -10,6 +10,10 @@ inputs: - 2 - 0 - 37 + alter_monate: + - 24 + - 0 + - 444 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index 6387b828d0..b16c022bd2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 43 - 0 + alter_monate: + - 516 + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - 72 - 71 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index 267e1b8985..dcc4f68810 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -11,6 +11,11 @@ inputs: - 0 - 0 - 43 + alter_monate: + - 516 + - 0 + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index a43674d3f7..49d5f535a6 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 0 - 43 + alter_monate: + - 516 + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index 309b7a1863..ee6c6ab70e 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 0 + alter_monate: + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index f136a401d5..0f3ba5342a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -9,6 +9,9 @@ inputs: alter: - 43 - 0 + alter_monate: + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index ae29c154d7..a5dccaf028 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 0 - 43 + alter_monate: + - 516 + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 3fa5cd7745..63f0a4814b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 0 - 43 + alter_monate: + - 516 + - 0 + - 516 arbeitslosengeld_2__p_id_einstandspartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index 72c55533be..c760415d4c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 43 - 0 + alter_monate: + - 516 + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - 1 - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index 3586ca3cd6..a4933bd6d2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -10,6 +10,10 @@ inputs: - 43 - 43 - 0 + alter_monate: + - 516 + - 516 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - 1 - 0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml index ecc174b550..b3c2eeae35 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml @@ -8,6 +8,9 @@ inputs: alter: - 30 - 1 + alter_monate: + - 360 + - 12 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml index da81ab82e9..1b81826104 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml @@ -8,6 +8,9 @@ inputs: alter: - 25 - 1 + alter_monate: + - 300 + - 12 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml index a0e76acc1b..9481dc1fa1 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml @@ -8,6 +8,9 @@ inputs: alter: - 30 - 1 + alter_monate: + - 360 + - 12 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml index dd96fbdb6c..2492107065 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml @@ -9,6 +9,10 @@ inputs: - 40 - 40 - 0 + alter_monate: + - 480 + - 480 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - 12 - 11 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml index 4ba7fa6814..a77edcc0ec 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml @@ -9,6 +9,10 @@ inputs: - 40 - 40 - 0 + alter_monate: + - 480 + - 480 + - 0 arbeitslosengeld_2__p_id_einstandspartner: - 9 - 8 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml index f9b2866fb3..fc0bae15f2 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml @@ -9,6 +9,10 @@ inputs: - 30 - 30 - 1 + alter_monate: + - 360 + - 360 + - 12 arbeitslosengeld_2__p_id_einstandspartner: - 4 - 3 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 73bcc50fd2..14af744b80 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -10,6 +10,11 @@ inputs: - 40 - 0 - 0 + alter_monate: + - 480 + - 480 + - 9 + - 3 arbeitslosengeld_2__p_id_einstandspartner: - 23 - 22 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 200e017d54..14650106d5 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -10,6 +10,11 @@ inputs: - 40 - 0 - 0 + alter_monate: + - 480 + - 480 + - 9 + - 3 arbeitslosengeld_2__p_id_einstandspartner: - 15 - 14 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml index 398de1e76d..25c0bb4f31 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml @@ -8,6 +8,9 @@ inputs: alter: - 30 - 1 + alter_monate: + - 360 + - 12 arbeitslosengeld_2__p_id_einstandspartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index b168ad4faf..bad1849d55 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -10,6 +10,11 @@ inputs: - 40 - 0 - 0 + alter_monate: + - 480 + - 480 + - 9 + - 3 arbeitslosengeld_2__p_id_einstandspartner: - 23 - 22 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index feed17dea3..b5e9055fc0 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -10,6 +10,11 @@ inputs: - 40 - 0 - 0 + alter_monate: + - 480 + - 480 + - 9 + - 3 arbeitslosengeld_2__p_id_einstandspartner: - 15 - 14 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index cf5ed5d409..09ab02d654 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -41,12 +41,12 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index 71697560e5..24447a8e66 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -41,12 +41,12 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 0abcaf3187..c7414e3c9a 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 204.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 7b234b5d8f..47c6359b10 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 205.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index ed7e64fbab..535e3fa7ff 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 206.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 720e1617ba..ebd16fc7ac 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 207.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index ae194531a5..fc73f16e8d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 208.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index c8026ec44d..ae07197035 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -20,9 +20,9 @@ inputs: - 0 einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - 0.0 - einkommensteuer__abzüge__betreuungskosten_m: + einkommensteuer__abzüge__kinderbetreuungskosten_m: - 0.0 - einkommensteuer__abzüge__p_id_betreuungskostenträger: + einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - -1 einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 2ddfb689ca..67ad0e2899 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -60,7 +60,7 @@ outputs: bg_id: - 0 - 0 - - 100 + - 1 eg_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml index a9665eeffd..76e839bf24 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml @@ -71,7 +71,7 @@ outputs: - 0 - 0 - 0 - - 100 + - 1 eg_id: - 0 - 0 diff --git "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" index d63b9b0175..d657cec559 100644 --- "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" +++ "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" @@ -70,7 +70,7 @@ outputs: bg_id: - 0 - 0 - - 100 + - 1 - 0 eg_id: - 0 diff --git "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" index 1ce98c29b4..f0e494103a 100644 --- "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" +++ "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" @@ -71,7 +71,7 @@ outputs: - 0 - 0 - 0 - - 100 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index 0da13e3baa..e93c399a34 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -85,8 +85,8 @@ outputs: - 0 - 0 - 0 - - 100 - - 100 + - 1 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml index dcde3b95c0..d92d55f95e 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml @@ -70,8 +70,8 @@ outputs: bg_id: - 0 - 0 - - 100 - - 100 + - 1 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml index c6f96a3269..d4e358f6d2 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml @@ -70,8 +70,8 @@ outputs: bg_id: - 0 - 0 - - 100 - - 100 + - 1 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml index 127ec0813c..72f2b5684f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml @@ -82,12 +82,12 @@ outputs: bg_id: - 0 - 0 - - 100 - - 0 - - 200 - - 300 - 1 - - 300 + - 0 + - 2 + - 3 + - 4 + - 3 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml index 4b741e6218..2f2c16022f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml @@ -91,38 +91,38 @@ inputs: - 3 - 5 outputs: - bg_id: - - 0 - - 100 - - 0 - - 200 - - 200 - - 100 - eg_id: + fg_id: - 0 - 1 + - 0 - 2 - - 3 - - 4 - - 5 - fg_id: + - 2 + - 1 + bg_id: - 0 - 1 - 0 - 2 - 2 - 1 - sn_id: + eg_id: - 0 - 1 + - 4 - 2 - 3 + - 5 + sn_id: + - 0 + - 1 - 4 + - 2 + - 3 - 5 ehe_id: - 0 - 1 + - 4 - 2 - 3 - - 4 - 5 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index aba7cb1f6a..92815cd0f1 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -73,7 +73,7 @@ outputs: - 0 - 0 - 0 - - 100 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index 6c56442a26..c2e921c778 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -73,7 +73,7 @@ outputs: - 0 - 0 - 0 - - 100 + - 1 eg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml index 9f3025c149..273e8f625f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml @@ -122,11 +122,11 @@ outputs: bg_id: - 0 - 0 - - 100 - - 100 + - 1 + - 1 - 0 - 0 - - 1 + - 2 fg_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml index b979ced211..df2a761846 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml @@ -122,11 +122,11 @@ outputs: bg_id: - 0 - 0 - - 100 - - 100 - - 200 - - 300 - 1 + - 1 + - 2 + - 3 + - 4 fg_id: - 0 - 0 @@ -138,8 +138,8 @@ outputs: wthh_id: - 0 - 0 - - 101 - - 101 - - 200 - - 200 + - 3 + - 3 + - 1 - 1 + - 2 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index b085c33f8d..f93afc179c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -43,6 +43,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index 9fac768da5..bb05e4daa6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index ad130907f7..863ebffbf4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index ef3d060d0f..355e6f1b47 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -39,6 +39,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index 566cda0945..b337e61159 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -30,6 +30,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index d4ecdc50a4..17fb9b8b6e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index d8a18a837c..9e8643596b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 2fb358eed4..7a8e140a1e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index d3d36d74a6..c52c8601c5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index 37e491e81c..aa5e9bb58a 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -39,6 +39,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 98dbf2b32c..8fbeb96456 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -39,6 +39,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index ba9b48820f..475b93dc05 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -30,6 +30,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 654d5e00ab..bc3f2a8e53 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 1d4fa1e77c..c46b215de5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 520de9e66e..4a08f102fb 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -41,6 +41,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index c827d8340d..849e9db61a 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -41,6 +41,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 3a13ef1317..62625d29a4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index c1ba9a54fe..cd08757081 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index 9610c3ff55..fa5de2535a 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -41,6 +41,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 69c5bb4f44..2d3c6104a3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -30,6 +30,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index 64fd7d88f6..9e4410bb72 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -30,6 +30,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index 3bee8284c3..1583057ace 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -39,6 +39,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - true - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 5921dee35b..6f051264f7 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -41,6 +41,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - true - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index 088ff88e6c..4bb395f8de 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -39,6 +39,9 @@ inputs: elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 0519b49746..cec713b5fc 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -28,6 +28,8 @@ inputs: - false elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index d4fd7bf08e..f82c0f6c87 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -2,7 +2,7 @@ info: note: >- Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions - (above freibetrag_vermögen_in_karenzzeit_bg). + (above vermögensfreibetrag_in_karenzzeit_bg). precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index 206313bca8..2c05e2a494 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -2,7 +2,7 @@ info: note: >- Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions - (still below freibetrag_vermögen_in_karenzzeit_bg). + (still below vermögensfreibetrag_in_karenzzeit_bg). precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml index b46c6d5ec5..dcf3fbbb9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml index 2d0598dd25..591087aa2e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml @@ -26,7 +26,7 @@ inputs: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml index 2f3e54cc9a..cfd01b933a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml index db98dd5198..842bc1ad02 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml index 6a0adc7c48..bf00946ef6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml index 96d85abc0e..6887b3a531 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml @@ -26,7 +26,7 @@ inputs: - 0.0091 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml index 26401aac34..f9d90ad217 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml @@ -26,7 +26,7 @@ inputs: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml index ce706b9513..6c1d406ad4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml @@ -26,7 +26,7 @@ inputs: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml index d608034fc8..efd43409c3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml index 4710309174..8765778b7f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml @@ -26,7 +26,7 @@ inputs: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml index ef53275d88..1e5f2284f0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml index 7fda4bb6dd..cea9c13d3c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml index 1718f94f9b..7106a6e256 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml @@ -26,7 +26,7 @@ inputs: - 0.0102 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml index 9ae01a4940..225bb34f27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml @@ -26,7 +26,7 @@ inputs: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml index cd18e4283f..c942c0ead8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml @@ -26,7 +26,7 @@ inputs: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml index c5a0a19673..d8bf75d5b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml @@ -26,7 +26,7 @@ inputs: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml index 5316c0fb34..20d8fe775d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml index b89d51b403..a2622e8991 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml @@ -26,7 +26,7 @@ inputs: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml index 850f66a537..ef27c3a976 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml @@ -26,7 +26,7 @@ inputs: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml index 74f2543ecc..eb6886b754 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml @@ -26,7 +26,7 @@ inputs: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml index 40dfc8721c..1e6e3fbc9f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml index 59ce3c2860..596d1642fb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml @@ -26,7 +26,7 @@ inputs: - 0.0101 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml index fc74630dfe..0d710d7bac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml index adf63b1b01..096f5b698c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml @@ -26,7 +26,7 @@ inputs: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml index 80d3d1dafe..6a075cd338 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml index c6220e6587..d380274e80 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml @@ -26,7 +26,7 @@ inputs: - 0.009899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml index ee3a10dfd2..3fba94d72f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml @@ -26,7 +26,7 @@ inputs: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml index a0a9ac91c7..91d178a9c2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml @@ -26,7 +26,7 @@ inputs: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml index 672ca23c8e..8a2e752237 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml @@ -26,7 +26,7 @@ inputs: - 0.0091 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml index 4696452783..37b568ef4d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml index 667cfc6004..afc2c33874 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml index 674900c52c..97130b38ad 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml @@ -26,7 +26,7 @@ inputs: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml index c7aa758b59..ed5b2da78d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml index 8e894b188d..4b6791ab49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml index 28dce1739f..7c572b7354 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml @@ -26,7 +26,7 @@ inputs: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml index 25a10c3607..bf1a9f2881 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml @@ -26,7 +26,7 @@ inputs: - 0.0083 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml index 68b5149b24..2ee1c3447e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml @@ -26,7 +26,7 @@ inputs: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml index e38ddc343c..599565fe46 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml index 17e3cde5d0..68be58912d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml @@ -26,7 +26,7 @@ inputs: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml index 34dfd808c1..0119cfe243 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml @@ -26,7 +26,7 @@ inputs: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml index 010429e463..9baae9d860 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml index 8262c4a8c1..0062681948 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml @@ -26,7 +26,7 @@ inputs: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml index 025a7a9497..1a09b5045d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml index 2735dd55c2..f65be8e3d3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml @@ -26,7 +26,7 @@ inputs: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml index 17f334d20d..b742f411fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml @@ -26,7 +26,7 @@ inputs: - 0.0102 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml index 463faa06dc..88373ded40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml @@ -26,7 +26,7 @@ inputs: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml index 78f975e336..1e4a330913 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml index 7470771193..540b9668ea 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml index 96bead6206..3aa315f6f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml index 9cd70a3114..465505b476 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml @@ -26,7 +26,7 @@ inputs: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml index f660dc4803..96c08e2f49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml index 453ec66588..83b121729c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml @@ -26,7 +26,7 @@ inputs: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml index 388dd82648..8ae7fe54fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml index 88f419334e..fe984a4379 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml index 4ea080951a..b6c13b048f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml index 1a0503ef9e..e156034bca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml index f8d51fbfca..5c48619561 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml @@ -26,7 +26,7 @@ inputs: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml index 39af00e97b..6ea693cef8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml index feb3e97e9a..82bfb61bf8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml index 269275062b..9372f4d370 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml @@ -26,7 +26,7 @@ inputs: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml index d07b324475..98e8f23143 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml index 3255165f2b..2e75e66e06 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml index 68201823d1..e74ba7a48a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml @@ -26,7 +26,7 @@ inputs: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml index 074e14775f..fd1f35bbb9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml index 795281a288..4f4e900ee3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml index 8d0c562276..ab939b009f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml @@ -26,7 +26,7 @@ inputs: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml index c0f8e73def..27fbc6888a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml index 56dd3cf5f7..430bfd573c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml @@ -26,7 +26,7 @@ inputs: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml index 8c5cbb20bc..6d3d0bcbd8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml @@ -26,7 +26,7 @@ inputs: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml index a5bde14b82..dae02e574f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml index bd2f457915..f126323dde 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml @@ -26,7 +26,7 @@ inputs: - 0.0115 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml index 28b0d8350f..30c904f603 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml index dc23543534..3fe891cb60 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml @@ -26,7 +26,7 @@ inputs: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml index 7615fc8676..9e33605a9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml index 61819d4d89..9392d4e11f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml @@ -26,7 +26,7 @@ inputs: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml index 64ce4babcc..f1d621d020 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml index 370b702779..f17787e998 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml index 2ffacbd666..bb8bb87902 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml @@ -26,7 +26,7 @@ inputs: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml index 9fb10703d0..c4d6b7d9cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml @@ -26,7 +26,7 @@ inputs: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml index 5a18e95881..73d8b31189 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml index 0969a9829e..7ee0108c46 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml @@ -26,7 +26,7 @@ inputs: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml index 0923596bc8..c4fdf670f6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml index 9262dd8a2d..5fed604245 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml index d2292f2746..61c35089c0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml @@ -26,7 +26,7 @@ inputs: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml index f18e847c9e..66162fadd0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml @@ -26,7 +26,7 @@ inputs: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml index 0e5fc6a523..f111f8919d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml @@ -26,7 +26,7 @@ inputs: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml index 2b2101b981..d6e23c632f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml @@ -26,7 +26,7 @@ inputs: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml index 63c19f8d0a..5f50b7a866 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml @@ -26,7 +26,7 @@ inputs: - 0.0096 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml index cfeab8b29b..74580f0caa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml @@ -26,7 +26,7 @@ inputs: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml index d5fdac8b0c..f6fd9becaf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml index cf31241d3c..500fe25323 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml @@ -26,7 +26,7 @@ inputs: - 0.0077 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml index 49dab70e52..f3118b0079 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml @@ -26,7 +26,7 @@ inputs: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml index fa2ad30429..c364e4d57f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml @@ -26,7 +26,7 @@ inputs: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml index ce1531ed1c..1cbd049ab4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml @@ -26,7 +26,7 @@ inputs: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml index 9f25fd85fc..94162f5402 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml index 32667cbac6..33c9cd0de1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml @@ -26,7 +26,7 @@ inputs: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml index a2d3bd52af..ed828f0fa8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml @@ -26,7 +26,7 @@ inputs: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml index 64c708a25d..21beb3d679 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml index a840495be4..bf2914b84e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml @@ -26,7 +26,7 @@ inputs: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml index 1d070c43d4..7904d69323 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml index 5e6b40fd27..0716bf52f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml @@ -26,7 +26,7 @@ inputs: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml index c9329c9450..2ffa3706ce 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml index abf9604db2..04e47e4ed2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml index aba48711cb..2a93ec58dd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml @@ -26,7 +26,7 @@ inputs: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml index e582926a42..de7c9de4a1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml @@ -26,7 +26,7 @@ inputs: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml index 94370160f7..a85d73b7a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml @@ -26,7 +26,7 @@ inputs: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml index 90b752e574..5c37abc1b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml @@ -26,7 +26,7 @@ inputs: - 0.015 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml index 9ed293e2c7..439ecab0f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml @@ -26,7 +26,7 @@ inputs: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml index bd47244565..8ea97a5ed6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml @@ -26,7 +26,7 @@ inputs: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml index 1ba523ffa3..8a476d2d65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml @@ -26,7 +26,7 @@ inputs: - 0.0144 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml index 4cf2621812..1c78bda488 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml @@ -26,7 +26,7 @@ inputs: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml index d5b1c85029..c20bedd9db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml @@ -26,7 +26,7 @@ inputs: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml index 7733b29be2..26408755c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml index effcac91df..60db437299 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml @@ -26,7 +26,7 @@ inputs: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml index 25a07c285c..3508791686 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml @@ -26,7 +26,7 @@ inputs: - 0.011699999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml index dacecae80d..c54e87bb1f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml index ddb2877c30..0fc1a2c844 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml index 06dac8c89d..d835dda247 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml @@ -26,7 +26,7 @@ inputs: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml index ee9e82c065..58da185bec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml @@ -26,7 +26,7 @@ inputs: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml index fc1e862399..0784b78d91 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml index 6b28f61b25..d44da7da0c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml @@ -26,7 +26,7 @@ inputs: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml index 6d07bffa14..bd2150e875 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml index 52dcff582b..25649fef7e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml @@ -26,7 +26,7 @@ inputs: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml index 05d0c2f73b..bfc112ca99 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml @@ -26,7 +26,7 @@ inputs: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml index 6a41d022eb..c032f42709 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml index 43d1ac196d..d9be61fb37 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml @@ -26,7 +26,7 @@ inputs: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml index 2fe0569270..6def0d8641 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml @@ -26,7 +26,7 @@ inputs: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml index 63c469e290..c083f4cc0c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml @@ -26,7 +26,7 @@ inputs: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml index 17e094e538..f7aa5d7286 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml @@ -26,7 +26,7 @@ inputs: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml index 0b322c85e3..29659bb613 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml index 253aa953bd..6294ac4190 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml @@ -26,7 +26,7 @@ inputs: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml index ee159e3452..6857edc339 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml index 8071b0e810..ac2d2dce17 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml index 90e9d67c0b..e96125f93e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml @@ -26,7 +26,7 @@ inputs: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml index b40f0d54ed..ab3ec00eba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml index 4cac5f3ab7..874f4097d8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml index a8d661d08e..3144b3cf5d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml index 2c4876f557..fa8dbc5bb5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml @@ -26,7 +26,7 @@ inputs: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml index 5a92e9a1a4..4fbfb0b5e0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml index b29022f543..ed42173ff7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml @@ -26,7 +26,7 @@ inputs: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml index 41630a2454..84a62c8018 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml index 2c537ea2e3..d741e7f5a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml @@ -26,7 +26,7 @@ inputs: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml index 150d6fa1da..3fe9ebd9b6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml @@ -26,7 +26,7 @@ inputs: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml index db229bf9d7..154f179f29 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml @@ -26,7 +26,7 @@ inputs: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml index 0ccaa4b7c4..90a846dda1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml index 0822a8f7c5..c8a15ef375 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml @@ -26,7 +26,7 @@ inputs: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml index 73ed58bbde..8a9b735a32 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml @@ -26,7 +26,7 @@ inputs: - 0.0066 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml index e77010a953..02c6e7f24d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml @@ -26,7 +26,7 @@ inputs: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml index b1a4c40728..a2a1e8ce16 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml @@ -26,7 +26,7 @@ inputs: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml index 2726cfe9ed..35264c9c8c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml @@ -26,7 +26,7 @@ inputs: - 0.011899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml index 9f645c78c1..f9d79abf51 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml @@ -26,7 +26,7 @@ inputs: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml index fc3a004332..8183bb2c1b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml @@ -26,7 +26,7 @@ inputs: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml index 2e130943c1..eee899ef05 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml @@ -26,7 +26,7 @@ inputs: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml index c29bbd2b42..e6d609e220 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml index ce9ddfc719..239781a4f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml @@ -26,7 +26,7 @@ inputs: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml index 4747a0fc3b..d46def87d8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml @@ -26,7 +26,7 @@ inputs: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml index 6c39219599..81b45bade0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml @@ -26,7 +26,7 @@ inputs: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml index 75ae248a51..749e59c97d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml @@ -26,7 +26,7 @@ inputs: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml index fa5ed1d65d..b7aad27137 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml @@ -26,7 +26,7 @@ inputs: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml index c3da7028bc..ebd7f0e947 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml @@ -26,7 +26,7 @@ inputs: - 0.0128 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml index ef9e3e948c..6550c0f8b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml index d48b3b5c34..70da60461d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml index 1f4aa5cdbb..6af4ebd1b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml index 69e0bc0541..218f8f5e12 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml @@ -26,7 +26,7 @@ inputs: - 0.008199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml index 5229aa5b6c..25daad8e70 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml index c0dffb698f..65917ebc3f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml index 6162ca154a..5d36fcb14d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml @@ -26,7 +26,7 @@ inputs: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml index 70c7f18c7e..70fb821bba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml @@ -26,7 +26,7 @@ inputs: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml index fb05e78a91..93f87538c0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml index c540565954..b3ca7a425b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml @@ -26,7 +26,7 @@ inputs: - 0.009899999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml index c31f93265b..234ae813e6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml index e137a89c62..1b304d7fdf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml @@ -26,7 +26,7 @@ inputs: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml index f2f7ef6f0b..2af973f8e1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml index 65d31c3515..e2a93f3afa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml @@ -26,7 +26,7 @@ inputs: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml index 76af5b7880..9103304d51 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml @@ -26,7 +26,7 @@ inputs: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml index 9fe11f37e1..1ee42db04d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml @@ -26,7 +26,7 @@ inputs: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml index 4ec580ac9d..b702b6a8cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml index f27ec82867..4015f5f62a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml @@ -26,7 +26,7 @@ inputs: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml index f82605959f..1b0c3e0f62 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml @@ -26,7 +26,7 @@ inputs: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml index 4bd5dbd3e9..c22a4f928f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml @@ -26,7 +26,7 @@ inputs: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml index 2264fde1b8..f9d01fcdcc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml @@ -26,7 +26,7 @@ inputs: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml index 68283d6b45..751c50e505 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml @@ -26,7 +26,7 @@ inputs: - 0.006999999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml index db57875f6d..9669db5a63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml @@ -26,7 +26,7 @@ inputs: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml index 020f5d0dcc..3c89a4215d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml @@ -26,7 +26,7 @@ inputs: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml index 0c85a0e1b5..6be788826d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml @@ -26,7 +26,7 @@ inputs: - 0.0083 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml index a4c0ca0e02..e30039e585 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml @@ -26,7 +26,7 @@ inputs: - 0.006 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml index 499d84efb2..bec8de4c0d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml @@ -26,7 +26,7 @@ inputs: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml index ad36b6fc1c..824bf3b6f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml @@ -26,7 +26,7 @@ inputs: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml index b9be176ba6..f65f879768 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml @@ -26,7 +26,7 @@ inputs: - 0.0072 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml index e8ba8653af..9f04f73190 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml @@ -26,7 +26,7 @@ inputs: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml index 675805e6aa..d6f9b4cce8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml index 91bf736d37..fb801bf093 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml @@ -26,7 +26,7 @@ inputs: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml index b2ca47f5ca..c0d14ed153 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml @@ -26,7 +26,7 @@ inputs: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml index c7f4f6cdd6..6afb561b42 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml @@ -26,7 +26,7 @@ inputs: - 0.015 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml index e35eb22f49..219a73292d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml index 0e3a32f527..97e1a8d0fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml @@ -26,7 +26,7 @@ inputs: - 0.0127 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml index b3d0e259f6..ef3629ff2c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml @@ -26,7 +26,7 @@ inputs: - 0.011000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml index 4d205dc665..d452d08f60 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml index 498a0ac3f8..646b78005b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml index e2a7a60540..ad288d2e99 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml @@ -26,7 +26,7 @@ inputs: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml index 0a01e849ec..d35c688dcf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml index 86b754e512..13874bc378 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml @@ -26,7 +26,7 @@ inputs: - 0.006 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml index 6786565c2c..5f4a00e81b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml index 4a61de8b3a..158242400a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml index 18dbb47784..e99d0ce9cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml @@ -26,7 +26,7 @@ inputs: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml index 1845050b3e..2f37e445dc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml index 23d30ba22b..e62cb2945b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml index d1a0918925..8cb86652d7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml index 2e047f32ad..dcbd6e23d6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml @@ -26,7 +26,7 @@ inputs: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml index e2fa348ea2..2e801285da 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml @@ -26,7 +26,7 @@ inputs: - 0.0085 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml index b6cfe19a22..8fad2d7fc9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml @@ -26,7 +26,7 @@ inputs: - 0.011200000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml index f849fc5df2..aa8f9633ba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml @@ -26,7 +26,7 @@ inputs: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml index b10888552e..5019790993 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml index 10016b6504..0c25b586db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml index 765fb3402d..bf1a022226 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml @@ -26,7 +26,7 @@ inputs: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml index 978513d7e6..04fb76ed5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml index 202c839cf7..f3c528685c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml index 29cfc78093..81505bc538 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml @@ -26,7 +26,7 @@ inputs: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml index 5292417390..3f223f88a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml @@ -26,7 +26,7 @@ inputs: - 0.0101 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml index 38ccfea3e9..b0771eeb8f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml @@ -26,7 +26,7 @@ inputs: - 0.0109 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml index 02f456f083..4270cb2c21 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml index 25d248984c..e3a3fc9055 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml index d770ac1827..96d465f74f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml @@ -26,7 +26,7 @@ inputs: - 0.0121 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml index 07d765b90b..a72cd3446a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml @@ -26,7 +26,7 @@ inputs: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml index 835ffc7219..28f57e0e9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml index 3b8aced12a..23ef00230f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml @@ -26,7 +26,7 @@ inputs: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml index 71c346b97b..9ec295c131 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml @@ -26,7 +26,7 @@ inputs: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml index 602f5bba9f..19dd097e33 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml index 8175d7f156..7b06232097 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml index be2560bedf..87ad922281 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml index 14dedcecff..f7a5354ecb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml @@ -26,7 +26,7 @@ inputs: - 0.0143 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml index 7a1831873d..be0471fd50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml @@ -26,7 +26,7 @@ inputs: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml index df1e87c9b7..73b7893643 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml @@ -26,7 +26,7 @@ inputs: - 0.0068000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml index 722c7ce4b8..6835a86617 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml @@ -26,7 +26,7 @@ inputs: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml index d3abbf7426..44892327e5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml index b87c55eae3..1029942700 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml index e23ee048be..a7d481eb01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml index 2377d92f38..8795fe32f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml @@ -26,7 +26,7 @@ inputs: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml index 1e81542cb4..c9fe14fce5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml @@ -26,7 +26,7 @@ inputs: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml index 60772fc050..402d68dfb6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml @@ -26,7 +26,7 @@ inputs: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml index c0371f0068..ee61065482 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml index 1666b711f2..5e5897601a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml @@ -26,7 +26,7 @@ inputs: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml index 1b7175fccf..50249f2b9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml index cfbe36ee51..a065f09cb5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml @@ -26,7 +26,7 @@ inputs: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml index 00a2386934..35d51d6b73 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml @@ -26,7 +26,7 @@ inputs: - 0.013500000000000002 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml index 59c9cd0c90..06147885bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml @@ -26,7 +26,7 @@ inputs: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml index 52dc26a347..3cef60e205 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml index 59a560b2f4..166c2d5409 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml index 10f77e8b3e..9383661e0d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml @@ -26,7 +26,7 @@ inputs: - 0.0113 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml index 224522f45a..65145a26cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml @@ -26,7 +26,7 @@ inputs: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml index db33663a7b..64cc4c541c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml @@ -26,7 +26,7 @@ inputs: - 0.0084 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml index b4a0ac021e..b978fef892 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml index 870698c9ab..e4b0ce75c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml @@ -26,7 +26,7 @@ inputs: - 0.013000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml index 5d809f2cd0..14ea7f9e8c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml @@ -26,7 +26,7 @@ inputs: - 0.0111 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml index 98b4a85b8b..622da622d7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml index 5cd887e08a..fcaadc6091 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml index d4344565b5..513db9f874 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml index e869bacc97..c6f703119e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml @@ -26,7 +26,7 @@ inputs: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml index 8d703b7e69..a513ec3fb0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml @@ -26,7 +26,7 @@ inputs: - 0.0127 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml index d5b720051a..9815b67966 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml @@ -26,7 +26,7 @@ inputs: - 0.0063 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml index 4ff6a56675..cfb86ef046 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml index b39924c094..350870c769 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml @@ -26,7 +26,7 @@ inputs: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml index 7504c3f4dd..6aab153675 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml @@ -26,7 +26,7 @@ inputs: - 0.0079 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml index 6d94b50a04..270c7d741e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml index df7b2e16b9..d74825e529 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml @@ -26,7 +26,7 @@ inputs: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml index 8f18e38a49..1ab4341248 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml index 3d44137e50..a8a6dd2df5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml @@ -26,7 +26,7 @@ inputs: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml index 9aea46a183..61fc573388 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml index 00844b8f02..cf098eeadb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml @@ -26,7 +26,7 @@ inputs: - 0.009000000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml index 16b5b8b1a7..42e7046a79 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml @@ -26,7 +26,7 @@ inputs: - 0.014499999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml index 3870bede5c..ed39273618 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml @@ -26,7 +26,7 @@ inputs: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml index a66f3b6bb2..cda75cc8db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml @@ -26,7 +26,7 @@ inputs: - 0.0148 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml index c8fd8331e9..cf68ecfc1a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml @@ -26,7 +26,7 @@ inputs: - 0.0064 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml index 9fe925f0b7..a036e5313b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml index 73a1285584..83edde5f7a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml @@ -26,7 +26,7 @@ inputs: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml index f3f4b21785..a28d5148e8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml @@ -26,7 +26,7 @@ inputs: - 0.0144 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml index ee150306a0..1cd2577f9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml index 2330911064..8953a5aa08 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml index 2f891e8371..80f8bb69d8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml @@ -26,7 +26,7 @@ inputs: - 0.006500000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml index 73009e4dee..517f8cf383 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml @@ -26,7 +26,7 @@ inputs: - 0.009300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml index 677781f202..08016b21dd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml @@ -26,7 +26,7 @@ inputs: - 0.0076 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml index 7a1834a8f9..9d5e9333c2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml @@ -26,7 +26,7 @@ inputs: - 0.0108 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml index 68c523c572..e15f482e38 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml @@ -26,7 +26,7 @@ inputs: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml index f9acc46a14..909eaadb64 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml @@ -26,7 +26,7 @@ inputs: - 0.008 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml index 6c4960d772..5cc1ba1269 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml @@ -26,7 +26,7 @@ inputs: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml index afbe9493fd..18c858cce5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml @@ -26,7 +26,7 @@ inputs: - 0.0086 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml index 8ef1a57323..8ad922219a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml @@ -26,7 +26,7 @@ inputs: - 0.0067 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml index ae66f5283a..e23d58eded 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml @@ -26,7 +26,7 @@ inputs: - 0.0103 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml index 13f0f6134a..7c16e91421 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml @@ -26,7 +26,7 @@ inputs: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml index 753c6b3af3..a48c95be92 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml index d391b0395c..eeb08682ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml @@ -26,7 +26,7 @@ inputs: - 0.0124 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml index 7b93a196cb..a3499113ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml @@ -26,7 +26,7 @@ inputs: - 0.014199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml index 9e682bd7b8..a42b85c642 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml @@ -26,7 +26,7 @@ inputs: - 0.0125 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml index e69b02bebc..8802e61682 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml @@ -26,7 +26,7 @@ inputs: - 0.0132 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml index 621c91a1ad..f3562e1aae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml @@ -26,7 +26,7 @@ inputs: - 0.0096 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml index 3e69491fa6..bc2dd9feb4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml index d639a5bced..a4ca6684a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml index b528f9d0d2..f255cbb8dc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml @@ -26,7 +26,7 @@ inputs: - 0.0060999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml index a367b92166..8db52c48bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml index 6117b97453..4835581981 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml index 2afa74177a..a070e47b40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml @@ -26,7 +26,7 @@ inputs: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml index bb027de7fa..5eb81340e1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml @@ -26,7 +26,7 @@ inputs: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml index d6717c74b4..0b5ce8f3fb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml @@ -26,7 +26,7 @@ inputs: - 0.0141 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml index 457acce306..93f4e911df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml @@ -26,7 +26,7 @@ inputs: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml index 615bc1ac4e..48ba79a121 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml @@ -26,7 +26,7 @@ inputs: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml index 937107507f..4af8a234e5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml @@ -26,7 +26,7 @@ inputs: - 0.0074 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml index 58e0fc2323..9964fa2517 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml index 6e86b8af99..3789f4b7b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml @@ -26,7 +26,7 @@ inputs: - 0.0092 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml index e2f41c1f93..e40000fae9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml index 767e4f2351..3b4dc80310 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml index 78b871bcc1..1e6960c6ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml index 1cd940d3e6..697fe12732 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml @@ -26,7 +26,7 @@ inputs: - 0.010700000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml index a6ff99ca62..50e7a571cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml @@ -26,7 +26,7 @@ inputs: - 0.009399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml index f26b3b9026..a13774ec85 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml index dbe7b5984d..7b63dbc36c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml @@ -26,7 +26,7 @@ inputs: - 0.0087 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml index 8ea2eaea65..a8d1b99712 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml @@ -26,7 +26,7 @@ inputs: - 0.0147 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml index 6eebd5e72a..55b0b60584 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml @@ -26,7 +26,7 @@ inputs: - 0.0116 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml index b69f56aa6c..730115c4de 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml @@ -26,7 +26,7 @@ inputs: - 0.012 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml index c28dc7acac..595b5fc525 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml @@ -26,7 +26,7 @@ inputs: - 0.0149 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml index 79cb6eb414..ed32a7fddd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml @@ -26,7 +26,7 @@ inputs: - 0.013600000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml index db06b9b7d9..5cff33d6d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml index 55e409584b..8bb08b1126 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml @@ -26,7 +26,7 @@ inputs: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml index 34d624e21c..f315ba66a6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml index 589eacd120..a830899f0a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml index 8c3fc0076c..64003e19ac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml @@ -26,7 +26,7 @@ inputs: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml index 64bf17ec92..ce7f291feb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml @@ -26,7 +26,7 @@ inputs: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml index 9d0b165694..fd8898e55b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml @@ -26,7 +26,7 @@ inputs: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml index 612de530bd..23f6cdba02 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml index d265cc14a7..fcb3357aa0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml @@ -26,7 +26,7 @@ inputs: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml index 1dff3d6df4..aca8fdd2c8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml @@ -26,7 +26,7 @@ inputs: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml index da7ffcf3c3..4f7c53f904 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml @@ -26,7 +26,7 @@ inputs: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml index a5fba5558c..a651ef71b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml @@ -26,7 +26,7 @@ inputs: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml index b63b02cb89..3ca3eb3665 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml index 59357e5fbc..baf3749a5e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml @@ -26,7 +26,7 @@ inputs: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml index debcf29e6a..cb194809c7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml @@ -26,7 +26,7 @@ inputs: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml index eed80f970d..5ca7aeb817 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml index 3bb84fe61d..066e5dc0c9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml index eb9c1025fd..4280b46b6b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml index 32b169130c..455712f1b1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml @@ -26,7 +26,7 @@ inputs: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml index 32f2d7371a..f53a44bcf3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml @@ -26,7 +26,7 @@ inputs: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml index 93e87c358d..3e075f7627 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml @@ -26,7 +26,7 @@ inputs: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml index 6f62be6a65..841ff96aeb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml index 519699f7cd..3665724516 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml index 4169a9e139..b9d69fcbe0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml @@ -26,7 +26,7 @@ inputs: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml index 1e9771e111..3d31b7afe9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml @@ -26,7 +26,7 @@ inputs: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml index 04a047267c..fb7f184dd9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml index 03050279a2..e619aed2cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml @@ -26,7 +26,7 @@ inputs: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml index f6d8b92b20..e2ad3b3f88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml index 26bd06420b..c58ed4ca21 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml index 201bb8ad52..25262ffa25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml @@ -26,7 +26,7 @@ inputs: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml index 549df1817b..36bb30eab1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml @@ -26,7 +26,7 @@ inputs: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml index dd474988fa..d7d99a8ce0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml index a6d8650792..6b44f4deb1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml @@ -26,7 +26,7 @@ inputs: - 0.0106 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml index 9e885819ca..4d26aa726a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml @@ -26,7 +26,7 @@ inputs: - 0.008100000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml index b2477e0cb3..5717af2a64 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml @@ -26,7 +26,7 @@ inputs: - 0.012199999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml index e92e39e80c..641a4e0a6e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml index 5b5cf12c56..1f0d6a6f7d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml @@ -26,7 +26,7 @@ inputs: - 0.0126 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml index 2b9f4ce092..d87de5645c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml @@ -26,7 +26,7 @@ inputs: - 0.013300000000000001 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml index 9fc5dbc6e7..a82d5082b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml @@ -26,7 +26,7 @@ inputs: - 0.0075 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml index ca45be0c3b..5e464d746b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml @@ -26,7 +26,7 @@ inputs: - 0.0139 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml index bb2286ba86..950e6478a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml @@ -26,7 +26,7 @@ inputs: - 0.0070999999999999995 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml index 4930d1f454..60202c3f33 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml @@ -26,7 +26,7 @@ inputs: - 0.0104 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml index 2806fbec47..6c071c34eb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml @@ -26,7 +26,7 @@ inputs: - 0.0123 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml index 65e39f8a2c..397a16c321 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml @@ -26,7 +26,7 @@ inputs: - 0.0089 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml index 611256ba82..4f75be6de3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml @@ -26,7 +26,7 @@ inputs: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml index ad9cb55c82..14542a2c16 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml @@ -26,7 +26,7 @@ inputs: - 0.0105 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml index 7a363fe80f..e7aac34b73 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml @@ -26,7 +26,7 @@ inputs: - 0.0137 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml index 0a5b601503..d08aa9b246 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml @@ -26,7 +26,7 @@ inputs: - 0.0097 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml index b5b5b6773e..3f9b3a18e8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml @@ -26,7 +26,7 @@ inputs: - 0.0118 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml index 5a521e5128..7861de9f68 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml @@ -26,7 +26,7 @@ inputs: - 0.01 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml index eb9c1025fd..4280b46b6b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml index 58002107c3..0e83395423 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml @@ -26,7 +26,7 @@ inputs: - 0.0069 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml index 32f2d7371a..f53a44bcf3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml @@ -26,7 +26,7 @@ inputs: - 0.0129 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml index ace1549838..566e665259 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml @@ -26,7 +26,7 @@ inputs: - 0.0098 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml index f7dddc5d9f..8d0c757828 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml @@ -26,7 +26,7 @@ inputs: - 0.0073 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml index 8a946184d6..914bf6d623 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml @@ -26,7 +26,7 @@ inputs: - 0.0062 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml index 6a4e319639..083466648b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml @@ -26,7 +26,7 @@ inputs: - 0.0146 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml index 1e9771e111..3d31b7afe9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml @@ -26,7 +26,7 @@ inputs: - 0.011399999999999999 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml index 8c03e817e5..99db977bdd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml @@ -26,7 +26,7 @@ inputs: - 0.0131 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml index 72818824c4..6df4e505e1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml @@ -26,7 +26,7 @@ inputs: - 0.0134 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml index f6d8b92b20..e2ad3b3f88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml index cd5799b8c4..832f162cb2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml @@ -26,7 +26,7 @@ inputs: - 0.0078000000000000005 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml index 6a630ee04a..b40c256052 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml @@ -26,7 +26,7 @@ inputs: - 0.0138 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - true sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml index 2d062014df..dc49a59859 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml @@ -26,7 +26,7 @@ inputs: - 0.0095 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml index dd474988fa..d7d99a8ce0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml @@ -26,7 +26,7 @@ inputs: - 0.0088 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml index 0da558fd12..f2391a812d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml @@ -26,7 +26,7 @@ inputs: - 0.0106 sozialversicherung__pflege__beitrag__hat_kinder: - false - sozialversicherung__pflege__beitrag__zusatzbetrag_kinderlos: + sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - false sozialversicherung__regulär_beschäftigt: - true diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 9b008edd49..3655c92eeb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -1,6 +1,5 @@ --- info: - note: '' precision_atol: 1 source: Regression test. Unclear whether numbers are correct by external standards. inputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" new file mode 100644 index 0000000000..cd2c37075d --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" @@ -0,0 +1,109 @@ +--- +info: + note: Zusatzbeitrag is assumed to be 0.013. + precision_atol: 0.01 + source: https://apps.datev.de/help-center/documents/1038903 +inputs: + assumed: {} + provided: + alter: + - 45 + - 45 + - 45 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 950.0 + - 950.0 + - 950.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + - 1 + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - true + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnort_ost: + - false + - false + - false + sozialversicherung__kranken__beitrag__zusatzbeitragssatz: + - 0.013 + - 0.013 + - 0.013 +outputs: + sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: + - 563.61 + - 563.61 + - 563.61 + sozialversicherung__midijob_bemessungsentgelt_m: + - 828.13 + - 828.13 + - 828.13 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 7.33 + - 7.33 + - 7.33 + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: + - 14.21 + - 14.21 + - 14.21 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 44.8 + - 44.8 + - 44.8 + sozialversicherung__kranken__beitrag__betrag_versicherter_in_gleitzone_m: + - 44.8 + - 44.8 + - 44.8 + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: + - 86.86 + - 86.86 + - 86.86 + sozialversicherung__kranken__beitrag__betrag_gesamt_in_gleitzone_m: + - 131.66 + - 131.66 + - 131.66 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 14.55 + - 9.58 + - 8.17 + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: + - 18.58 + - 18.58 + - 18.58 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 52.42 + - 52.42 + - 52.42 + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: + - 101.62 + - 101.62 + - 101.62 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" new file mode 100644 index 0000000000..d0ea0634ea --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" @@ -0,0 +1,97 @@ +--- +info: + note: '' + precision_atol: 0.02 + source: https://www.ihre-vorsorge.de/rechner/midijob-rechner +inputs: + assumed: {} + provided: + alter: + - 45 + - 45 + - 45 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 950.0 + - 950.0 + - 950.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensteuer__einkünfte__ist_selbstständig: + - false + - false + - false + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + sozialversicherung__kranken__beitrag__privat_versichert: + - false + - false + - false + sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: + - 0 + - 1 + - 2 + sozialversicherung__pflege__beitrag__hat_kinder: + - false + - true + - true + sozialversicherung__rente__altersrente__betrag_m: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung__rente__private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnort_ost: + - false + - false + - false +outputs: + sozialversicherung__midijob_bemessungsentgelt_m: + - 815.89 + - 815.89 + - 815.89 + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: + - 7.09 + - 7.09 + - 7.09 + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: + - 14.12 + - 14.12 + - 14.12 + sozialversicherung__kranken__beitrag__betrag_versicherter_m: + - 46.66 + - 46.66 + - 46.66 + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: + - 92.86 + - 92.86 + - 92.86 + sozialversicherung__pflege__beitrag__betrag_versicherter_m: + - 14.72 + - 9.82 + - 8.46 + sozialversicherung__pflege__beitrag__betrag_arbeitgeber_in_gleitzone_m: + - 19.56 + - 19.56 + - 19.56 + sozialversicherung__pflege__beitrag__betrag_gesamt_in_gleitzone_m: + - 34.27 + - 29.37 + - 27.33 + sozialversicherung__rente__beitrag__betrag_versicherter_m: + - 50.75 + - 50.75 + - 50.75 + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: + - 101.01 + - 101.01 + - 101.01 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" index 6b1401f03e..97332a6f30 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" @@ -1,6 +1,6 @@ --- info: - note: '' + note: Cannot test for targets that are purely parameters. precision_atol: 0.01 source: '' inputs: @@ -12,5 +12,5 @@ inputs: sozialversicherung__pflege__beitrag__hat_kinder: - false outputs: - sozialversicherung__minijob_grenze: + sozialversicherung__minijobgrenze: - 450.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" new file mode 100644 index 0000000000..3eb7107b94 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" @@ -0,0 +1,21 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false +outputs: + sozialversicherung__minijobgrenze: + - 520.0 + # TODO(@MImmesberger): Remove this target once testing infrastructure can handle + # single-row expected outputs. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/918 + sozialversicherung__pflege__beitrag__hat_kinder_hh: + - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" deleted file mode 100644 index 47ca597ed8..0000000000 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/skip_minijobgrenze.yaml" +++ /dev/null @@ -1,16 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - provided: - hh_id: - - 0 - p_id: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false -outputs: - sozialversicherung__minijob_grenze: - - 520.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" new file mode 100644 index 0000000000..73e9aa6b09 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" @@ -0,0 +1,21 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 + sozialversicherung__pflege__beitrag__hat_kinder: + - false +outputs: + sozialversicherung__minijobgrenze: + - 538.0 + # TODO(@MImmesberger): Remove this target once testing infrastructure can handle + # single-row expected outputs. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/918 + sozialversicherung__pflege__beitrag__hat_kinder_hh: + - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" deleted file mode 100644 index e3b0356d2d..0000000000 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/skip_minijobgrenze.yaml" +++ /dev/null @@ -1,16 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - provided: - hh_id: - - 0 - p_id: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false -outputs: - sozialversicherung__minijob_grenze: - - 538.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml index c01cad5e7b..cf94767bf6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml index 7cf85af5b2..b1766c0bc4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml index eade059e69..a1a833ab04 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml index 917d4f5d36..702bfb3a7b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml index c01cad5e7b..cf94767bf6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml index 7cf85af5b2..b1766c0bc4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml index d995adcf75..46a19524e0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml index 67d4413d2f..1aa7db2385 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml index e241a87b5e..3a5207adba 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.083333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml index d8c95e4b81..c9c2af9f96 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.083333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml index f3e328a677..d669afc6e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.333333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml index 6f29a7a8e8..2331bb49dc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.333333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml index 5dae99dbb7..c84a92b53b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.583333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml index 38a961901c..9190f90374 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.583333 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml index 11f56b741d..81e43af0c2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.833333 - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml index ff951c1d6d..65b1a2ff51 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.833333 - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml index fbfd731118..4442aeafaa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.083333 - 60.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml index 425f04e1a0..ef2bc82cf7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.083333 - 60.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml index f634bcef22..ef394454f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.583333 - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml index 435aaa3dc9..8b8b3c190e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.583333 - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml index ed0da9ddce..0d7dac45f0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 60.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml index 0cd8972687..ed9e6ebff5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 60.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml index 330acc06b9..3838dff2b7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml index ca18136435..a1adbfe047 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml index ec846c9bd7..2efe21e0ba 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml index b84a315610..4d665f831f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml index 07b370f1fe..282ab9eae5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 62.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml index 16742fa068..943a3edbde 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 62.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml index b2b7632cef..9ed57e66de 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 62.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml index 652ac11170..c3fc658bad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 62.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml index 6a869be871..86d0efeac3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml index 09df1eede5..192a567893 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml index e9b86cd649..bdcd382163 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml index 15c46996aa..1ba6d34f39 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml index c371552741..52e753dd82 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml index bc3da3dda6..b3a3f69843 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml index 41c69aea9b..0c99dfb9ff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml index 29ac061a9e..3469a16bca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml index 95008ef8df..bdbb5c8508 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml index 5f3790dc5a..8e8018aafb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml index c01cad5e7b..cf94767bf6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml index 7cf85af5b2..b1766c0bc4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml index 4adb20fe51..36aa2818f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml index 6320afe16d..7956462a01 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml index 3281990c33..e35651d3e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.083333 - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml index 9681c352f2..bf5107e834 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.083333 - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml index 16981c3707..3efdf47abd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.333333 - 62.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml index 79b1d24e4d..10e3b62c94 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.333333 - 62.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml index e5ffa90263..17da346859 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.583333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml index 499d5cc88e..4982b80449 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.583333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml index 696207750d..214da315f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.833333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml index 5e1710e6e4..9140e0b9f9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.833333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml index 3193b662d6..a32e2b8fce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.083333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml index 5382dd623e..cd3ada363d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.083333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml index 1550e83bc1..f6c15bc562 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.583333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml index 8cc06d3f98..c80d364b07 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 64.583333 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml index 8c2e2bc524..dbbee58e52 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml index bf140f831c..5477dd3ba6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml index c0da0767ac..ef87e2b3e8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml index 53569d309e..b991768d8a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml index 0a97cde5cd..5577b694d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml index 2e8f25ecfb..83c405d643 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml index 2fc12160e2..ac9e5eae9d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml index 494e93a395..0fb9bce7cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml index aaf3222a53..c627552280 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml index 0d50dc8dd7..2226b53f9f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml index 6a869be871..86d0efeac3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml index 09df1eede5..192a567893 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml index e9b86cd649..bdcd382163 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml index 15c46996aa..1ba6d34f39 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 63.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml index c371552741..52e753dd82 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml index bc3da3dda6..b3a3f69843 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml index 41c69aea9b..0c99dfb9ff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml index 29ac061a9e..3469a16bca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 64.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml index 95008ef8df..bdbb5c8508 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml @@ -88,7 +88,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml index 5f3790dc5a..8e8018aafb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml @@ -52,7 +52,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml index e0172180f1..320cbe4559 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml index b2f04f29aa..83c72cc4c7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml index 51592a94a9..c875fb1d7c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml index 5686fad2df..f12e703811 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml index b76bce666b..4be2b78250 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml index eb8e596ee5..e3e24d635e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml index 9c836f73f7..4e6e4ab468 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml index 8122d2472c..b15e90812f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml index bb6edbf2b6..9ea6ea0cdd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml index 3737e91bde..9862b97599 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml index ae8ae10066..6cccbb499c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml index 3a3348b5ee..5398d89e41 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml index 88ef7234e5..0f5054af8b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml index 157882c936..26a8870c8c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml index ae2efcca91..869cf20a08 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml index edc5ba1f4c..5e90745e4d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml index f51b9e37b6..e0b70ec902 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml index 93a36db8cb..25dffb3571 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml index b19b2377d6..8fe75a9cf7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml index 2fa083e195..67cc6a1428 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml index 5b70608ef1..aef0ac5de9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml index d4fae4d5e9..328328f540 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml index 5a7b0518dd..e30f794116 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml index 6dd040dd07..6766fbabbe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml index 3eae53e17d..42796a69ca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml @@ -150,7 +150,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml index 7208df668b..8521ab5098 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml @@ -84,7 +84,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 65.0 - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml index 05437bf930..7da3f8d5b7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml index 8ade695604..7a073760f0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml index f7a83e89be..4c2751df18 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml index 867828bea9..5646533637 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml index 2099ab8ed2..3ec5db3f98 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml index be2c85323c..737dae2972 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 - 63.0 - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml index 3ace5f9066..0fdbadc01c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml @@ -140,7 +140,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.083333 - 63.0 - 65.25 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml index a1553247db..261d808a18 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml @@ -140,7 +140,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.083333 - 63.0 - 65.25 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml index 0b1b5c6bd5..d8013ee26b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.333333 - 63.0 - 65.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml index 5c584bbc81..b8f95bbeea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.333333 - 63.0 - 65.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml index 173ec0223d..ff75d854d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.416667 - 63.0 - 65.416667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml index 0aa06d37da..1e6123efff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.416667 - 63.0 - 65.416667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml index 816c6989f4..2b3c4b1799 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 - 63.0 - 65.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml index 7f7b76079d..4f1ce9fb71 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 - 63.0 - 65.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml index 45167042d3..29b27830f5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.583333 - 63.166667 - 65.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml index de532bd4c5..5643e8c1d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.583333 - 63.166667 - 65.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml index 1a7a82b85a..e598bd94f0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.666667 - 63.333333 - 65.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml index 77b505f6b6..1cae54e873 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.666667 - 63.333333 - 65.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml index 06c0ccdbd4..c6d8e08ce6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.75 - 63.5 - 65.75 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml index 47a2abbad0..89c41a1175 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.75 - 63.5 - 65.75 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml index 8a8e08e313..8c0b1fddb9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.833333 - 63.666667 - 65.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml index 1f656d977b..db4e660c53 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.833333 - 63.666667 - 65.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml index 2fd349c760..aae4f0d724 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.916667 - 63.833333 - 65.916667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml index 0d22c81d19..978d77688b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.916667 - 63.833333 - 65.916667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml index d9bf6c315b..d06b837408 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.0 - 64.0 - 66.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml index 23210c9d68..06e399b83c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.0 - 64.0 - 66.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml index babee2ab92..31a260649f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.166667 - 64.166667 - 66.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml index 40d7d7ba82..edc2c5e13f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.166667 - 64.166667 - 66.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml index 24063d0450..67a6dfed6a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.333333 - 64.333333 - 66.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml index fa938cbf05..80059010f2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.333333 - 64.333333 - 66.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml index 860eb8b9bd..96034fd6ee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.5 - 64.5 - 66.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml index 86b59754c6..47f91da168 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.5 - 64.5 - 66.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml index fb4e67efa1..5566f1da85 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.666667 - 64.666667 - 66.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml index 523d556213..cb6170009c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.666667 - 64.666667 - 66.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml index 02697168fb..22a622edd8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.833333 - 64.833333 - 66.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml index 4f4cc919ab..e1458f33ff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.833333 - 64.833333 - 66.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml index 8b96b47765..ec7e28c590 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml @@ -35,7 +35,7 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 - 65.0 - 67.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml index 299d506ca8..1735d55486 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml @@ -35,7 +35,7 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 - 65.0 - 67.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml index 14315da7eb..86d997ff49 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml index fa7d8fc5d0..6810fa83d3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml index 2fab824391..a8bf32f847 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml index ed4c9b9e83..52ef270134 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml index 9d63f03c24..ecc0aa0f2a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml index 3e67cbe44e..a0fa51b016 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml index 6603b48bac..699d0b781e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml index aefa10cd0d..0a9ca2d708 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml index 00d32f50b2..38baff8403 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml index e6dd2b0761..05db8946d5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml index 15d7d7908d..3f6146a4ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml index cff059fbee..0e82e8565c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.333333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml index 72dd4a92f7..18cc04d806 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml index e935485a77..fe0e4e80cf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.833333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml index d3ac761d19..8fb348b546 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml index 842f4393f3..e5f3efc322 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml index 5056f186f6..fc2bd439f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml index a6229f5440..c3181eed54 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml index 9f492161ce..68d0c30333 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml index 7928b7ac94..3ff1eb6636 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml index 4f26b911ce..2e4fa500e7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml index ff3ba67bb4..230bf5a608 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml index 3ebea8e3d2..df08b7a10d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml index f53ff7fc15..284c18b106 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml index f29d3d3956..946f46fe8f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml index 4aa7711747..f94f7a1bf9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml index 6d2957158a..2bfda6aff2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml index f1f58e14e4..e88775b5df 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml index d6820dee9d..b1f7cf8d70 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml index 5077c6b058..98f49d5c9b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml index e77188d29f..b01a5fa024 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml index c94f9c883f..2d6e03c3ec 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.333333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.333333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml index 64b86ac5ea..79687963cf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml index 678e0fcf25..3fa93b7b36 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.833333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.833333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml index 9c28a4a059..fae0ad568c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml index 684fc38315..0dd1376537 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 61.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml index 112274a5e3..274baf4c72 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 62.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml index ff4adcb2aa..cefe3b47d1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 62.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml index 6f3fb0f279..ffb4c7bfb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.083333 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml index bd8743572d..b3adc4111e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.583333 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml index 7da9e989ae..fc6ed5d104 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.083333 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml index 295a1137d4..1f6fda5346 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.583333 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 61.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml index 691cdc32ea..23da050f3f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -57,9 +57,9 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml index d8ec67a50e..f810bf0b5d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml index 2713c62df0..3deda22766 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -45,7 +45,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -57,11 +57,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml index 3010b4361f..88a649ccfc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml index 0329a65c46..3ff92abdea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml index 7a7987e9d6..ef95d703e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml index ebc7e0c802..9ab372ca68 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 62.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index 76be409bad..c2dc2660b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml index a6719a46a6..dccd74677e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index 6e2d245f04..e9e34be27b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml index cb759dcc4e..babd61cc88 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index 34b3165814..2d39d01aa4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.333333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml index ff59e7391b..8d8e63f473 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index 9349226a3c..1f0c551d1f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml index 3fdd15042a..3d695a9208 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index 849c0130e5..543d91a28f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.833333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml index 121cb26010..a34497bd7a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml index b1db2823bf..94bebfe70d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml index f5ce7893b1..e7c012410c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml index 5044f0cbda..5b283551cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml index be12f00350..183675df20 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml index ab4951908d..b0e7d41072 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.083333 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml index 37c5ca3a59..84d9db4a90 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.583333 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml index 9600b8e378..d691f0572d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.083333 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml index a1e218d6ca..9dcca0a62c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.583333 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 61.583333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml index 637fe43fbb..3a5e224c39 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -59,9 +59,9 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml index 648926f53c..0648be83bd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml index 0edce97cac..16227f4f5b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.0 @@ -59,11 +59,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml index c4434b8404..7b09bde072 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index f69b564781..ab873ebfa5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.0 @@ -57,7 +57,7 @@ outputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 9722b4dbeb..b51af1371e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.0 @@ -57,7 +57,7 @@ outputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml index b868c32f46..1404abd5b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml index e484f66a38..be76f497b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml index f883f58206..2f680047d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 62.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index b387b111b4..a0790a4353 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml index 66cb461524..debdaf3dbe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index 244b535c19..e78ca6cbb1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml index cf6cea8c66..fce7dbe10d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index e4da431f3d..95fd14d798 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.333333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml index edbb27b993..c88909c925 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index d3d435fc74..40f6d50508 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index c25fed8266..1427f23ab2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -47,7 +47,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.833333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -59,7 +59,7 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml index 223a6d4042..83f4162ab6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index defc68eac0..065868e525 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.0 @@ -59,11 +59,11 @@ outputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 1eea5d7b04..3016ee5246 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.0 @@ -59,11 +59,11 @@ outputs: - false sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml index c44ebcedf8..16617c3a95 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml index 4f3dab4e6e..2963344848 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml index e3ab516322..4b291646c6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 62.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 62.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 0c62c72ece..2714b8ff6a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml index 924b0eaf71..2034f10bb2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 63.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index acfb986cc3..ef0c1632b3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml index 73cffc085b..85116e2107 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.083333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 64.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index e4f03750be..a01519fa69 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.333333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml index 4f32cf2497..9d0144a6fc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index dc5a4298a2..8b73e221be 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.583333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 196a4de592..d9156a46d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.833333 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml index 50da8c2ea2..fdf9e34fb0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml index a9b744dd34..4e39e63aad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.083333 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml index 29b17799a4..3725f685b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 61.083333 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 61.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml index 6395c6f8c3..5c598cc148 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 62.083333 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 62.083333 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml index 94483791d6..20cd02da89 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 63.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml index 3438bcc97e..0372273fad 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 @@ -61,11 +61,11 @@ outputs: - true sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - 65.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - 60.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml index 0bbc355bbd..f211cd8276 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -49,19 +49,11 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - false sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutzprüfung: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutzprüfung: - - 63.0 sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index 60ea0265c2..d2eea2d370 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index d4defef056..2434468445 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -65,7 +65,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.83333333 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 36.99837737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index f9dab51fc6..35d42f342f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 65b605e5b8..3fd61f41f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index c57cbdaf09..6b51a77962 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 15c9f15351..e9ce2bcbfb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -65,7 +65,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 21.77622985 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index 5b84870765..243b766b0a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -61,7 +61,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 60.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 10.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index 9344fd5872..b8d15f1421 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index 39b7cf5fa3..d2c45c008b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index 0c1a698b89..ff56b36ab6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.41666667 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index e4b2a1aeac..14bad8911b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -65,7 +65,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.41666667 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 36.99837737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 7febb3139b..8e07086cd1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.33333333 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index 6bc938352d..9a953c9182 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.16666667 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index e93181bc4b..fb20826243 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index 79773c1589..8449536d46 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index 932aed46ad..83f5e478f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -67,7 +67,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index b3a3dd6407..937fa7d4dc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index ca80396cef..3219837411 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.91666667 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index 8cd04fcdf8..2ef274557a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index 98fc086182..93e5e9809b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 11.04777563 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 7a15c646c1..686d46b989 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 67.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index af43dca5ff..e0d9dbaf4a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index bd3b997eb5..afdedde4c9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index c57cbdaf09..6b51a77962 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index c57cbdaf09..6b51a77962 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 64.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index edc258ebee..f5a8d4e89b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 61.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index 125e78b8f3..f034b35f16 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 39b7b2c5ef..012374c1f6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index 3487b57349..92203a43b5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml index 386b440b97..abf35d84da 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml @@ -49,5 +49,5 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml index ad51682383..a65e029c42 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml @@ -49,5 +49,5 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml index f95ac442a0..5e00a7093c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml @@ -49,5 +49,5 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml index dc3ae1c16e..7d99bcb6bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml @@ -49,5 +49,5 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 63.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml index ed5ce78234..b91056a5b1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.75 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 65.75 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml index 04fcf9e4b0..2b19bf2929 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml @@ -49,7 +49,7 @@ inputs: weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.0 sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - 66.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index e25337a68f..310706227c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.16666667 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index c42bda0945..2aa26e3816 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -65,7 +65,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.5 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 36.99837737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index 773816bf26..afbd7c6fc0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -65,7 +65,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 65.08333333 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 36.99837737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 41b9d840e6..2a708b678e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -63,7 +63,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze_abschlagsfrei: + sozialversicherung__rente__altersrente__altersgrenze: - 66.0 sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml index 515bd7cca6..8d791cbe5f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml @@ -14,5 +14,5 @@ inputs: sozialversicherung__rente__entgeltpunkte_west: - 0.0 outputs: - sozialversicherung__rente__altersrente__anteil_entgeltpunkte_ost: + sozialversicherung__rente__erwerbsminderung__anteil_entgeltpunkte_ost: - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index bd89c77fcb..e520ca8132 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 44.15686275 + - 44.0 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml index 3ba5568d2a..a6fcd7b3ba 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.43875686 + - 15.164534 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml index a7a00b236a..f39356c312 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 19.08474576 + - 18.813559 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index aa3d933d7e..c85d188146 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 44.03351955 + - 43.56424581005586 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 8610e79f67..b76405bef5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 30.70909091 + - 30.490909 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 8c7b38e131..f57e65474a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 4.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.45 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml index 886998c215..113a06e00d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 18.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.72 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml index 3f72f79e9e..bd5326e0d9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 15.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.45 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 8be4850b1f..7b138315b6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 14.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 1.2 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 5927f98d89..197baa03dc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 3.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.8 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml index 19e5e2e125..27f44b1237 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 4.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.45 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index a94ee395be..6f153c8a52 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 15.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.45 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 522edd1ef5..b04e9eda5f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 18.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.72 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 906dbb3f26..93d947ae48 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -19,7 +19,7 @@ inputs: - 14.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 1.2 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 8d585c4595..58efc6822f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -19,7 +19,7 @@ inputs: - 3.0 sozialversicherung__rente__ersatzzeiten_monate: - 0.0 - sozialversicherung__rente__erwerbsminderung__durchschnittliche_entgeltpunkte_y: + sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - 0.8 sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index e446c582fb..5c3925088f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -30,7 +30,7 @@ inputs: sozialversicherung__rente__jahr_renteneintritt: - 2018 sozialversicherung__rente__monat_renteneintritt: - - 2 + - 1 sozialversicherung__rente__pflichtbeitragsmonate: - 60.0 wohnort_ost: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 29.44 + - 30.0 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index fa46f4cbe2..eebcc0498a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 16.2035225 + - 16.291585 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 6abf56c602..a6b5896414 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 25.6744186 + - 25.813953 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 5dc4549f73..7ed14ac606 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 29.38403042 + - 29.543726 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index ed1693033f..1308af3d70 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -2,7 +2,7 @@ info: note: '' precision_atol: 0.01 - source: Own calculations + source: Regression test. inputs: assumed: geburtsjahr: @@ -40,7 +40,7 @@ outputs: sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - 0.0 sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 11.91366906 + - 11.978417 sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - true sozialversicherung__rente__erwerbsminderung__rentenartfaktor: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml new file mode 100644 index 0000000000..f3fce9e1c6 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -0,0 +1,87 @@ +--- +info: + note: Regression test. See issue # 919. + precision_atol: 1 + source: '' +inputs: + assumed: {} + provided: + alleinstehend: + - false + - false + alter: + - 70 + - 70 + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: + - 700.0 + - 700.0 + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: + - 0.0 + - 0.0 + familie__kind: + - false + - false + familie__p_id_ehepartner: + - 1 + - 0 + geburtsjahr: + - 1951 + - 1951 + hh_id: + - 0 + - 0 + p_id: + - 0 + - 1 + sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + - 0.0 + sozialversicherung__rente__altersrente__zugangsfaktor: + - 1.0 + - 1.0 + sozialversicherung__rente__bezieht_rente: + - true + - true + sozialversicherung__rente__entgeltpunkte_ost: + - 0.0 + - 0.0 + sozialversicherung__rente__entgeltpunkte_west: + - 19.2 + - 19.2 + sozialversicherung__rente__grundrente__bewertungszeiten_monate: + - 300 + - 300 + sozialversicherung__rente__grundrente__grundrentenzeiten_monate: + - 480 + - 480 + sozialversicherung__rente__grundrente__mean_entgeltpunkte: + - 15.0 + - 15.0 + einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: + - 0.0 + - 0.0 + wohnort_ost: + - false + - false +outputs: + sozialversicherung__rente__altersrente__betrag_m: + - 806.2 + - 806.2 + sozialversicherung__rente__grundrente__basisbetrag_m: + - 149.72 + - 149.72 + sozialversicherung__rente__grundrente__betrag_m: + - 149.75 + - 149.75 + sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: + - 0.014583333 + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index b82a6b099e..7664ff49ab 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -116,7 +116,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -134,6 +134,15 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index c124e29ce9..eb73602b6b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -78,7 +78,7 @@ inputs: - true - true - true - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -90,6 +90,12 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index c24f7ebd10..baac72617e 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -45,12 +45,15 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - true - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index c5c2e4b02c..b87a60cbfe 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -42,12 +42,15 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 4a5b3edac3..5960f3d5b6 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -42,12 +42,15 @@ inputs: einkommensteuer__gemeinsam_veranlagt: - true - true - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 elterngeld__betrag_m: - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index e98ef1ab97..f7c1cc9863 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -58,7 +58,7 @@ inputs: - true - true - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -66,6 +66,10 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index 4e2f520a6c..2fca8f2852 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -174,7 +174,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -202,6 +202,20 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index ad936d49d5..e20bdc3136 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -13,6 +13,13 @@ inputs: - 15 - 6 - 5 + alter_monate: + - 516 + - 576 + - 168 + - 180 + - 72 + - 60 anzahl_personen_hh: - 6 - 6 @@ -90,7 +97,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 89fff54046..5f863031ea 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -90,7 +90,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -104,6 +104,13 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index fadd7e87cc..fb6d19bce7 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -30,10 +30,12 @@ inputs: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 78d5c4c177..71bbba19dc 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -32,10 +32,12 @@ inputs: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 7e727c6e66..7007b63d75 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -34,10 +34,12 @@ inputs: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index 351481de86..e6063eeaf9 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -34,10 +34,12 @@ inputs: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 elterngeld__betrag_m: - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 familie__alleinerziehend: - false familie__kind: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index c5fa1f914d..7f5d3c490e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -62,7 +62,7 @@ inputs: - true - true - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -70,6 +70,10 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 180d626e9b..83a3cdb8f4 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -104,7 +104,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -118,6 +118,13 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index d546915245..9046d94de5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -76,7 +76,7 @@ inputs: - true - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -86,6 +86,11 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 9193d60b89..de3fe98ea8 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -90,7 +90,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -102,6 +102,12 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index d729aace8c..da689deb27 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -92,7 +92,7 @@ inputs: - true - true - true - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -106,6 +106,13 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false @@ -339,9 +346,9 @@ outputs: - false - false wthh_id: + - 2 + - 2 + - 0 + - 0 - 1 - 1 - - 100 - - 100 - - 200 - - 200 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 1000bec21b..0154f8293e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -84,7 +84,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -96,6 +96,12 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index ff9ca8260f..e67cba34a7 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -110,7 +110,7 @@ inputs: - false - false - false - einkommensteuer__einkünfte__sonstige__rente_ertragsanteil: + einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - 0.0 - 0.0 - 0.0 @@ -126,6 +126,14 @@ inputs: - 0.0 - 0.0 - 0.0 + elterngeld__anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 familie__alleinerziehend: - false - false @@ -378,11 +386,11 @@ outputs: bg_id: - 0 - 0 - - 100 - - 200 - - 200 - - 300 - - 300 + - 1 + - 2 + - 2 + - 3 + - 3 arbeitslosengeld_2__bruttokaltmiete_m_wthh: - 514.29 - 514.29 diff --git a/tests/ttsim/test_docs.py b/src/_gettsim_tests/test_docs.py similarity index 85% rename from tests/ttsim/test_docs.py rename to src/_gettsim_tests/test_docs.py index 1d645ef153..93a1ab84fc 100644 --- a/tests/ttsim/test_docs.py +++ b/src/_gettsim_tests/test_docs.py @@ -5,11 +5,10 @@ import pytest -from _gettsim.config import ( - RESOURCE_DIR, -) +from _gettsim.config import GETTSIM_ROOT from ttsim import PolicyInput -from ttsim.policy_environment import active_ttsim_objects_tree +from ttsim.loader import orig_tree_with_column_objects_and_param_functions +from ttsim.policy_environment import active_tree_with_column_objects_and_param_functions from ttsim.shared import remove_group_suffix @@ -32,9 +31,12 @@ def all_function_names(): @pytest.fixture(scope="module") def time_indep_function_names(all_function_names): time_dependent_functions = {} + _orig_tree_with_column_objects_and_param_functions = ( + orig_tree_with_column_objects_and_param_functions(root=GETTSIM_ROOT) + ) for year in range(1990, 2023): - year_functions = active_ttsim_objects_tree( - resource_dir=RESOURCE_DIR, + year_functions = active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, date=datetime.date(year=year, month=1, day=1), ) new_dict = {func.function.__name__: func.leaf_name for func in year_functions} @@ -81,7 +83,7 @@ def test_all_input_vars_documented( for c in arguments if (c not in defined_functions) and ( - remove_group_suffix(c, groupings=environment.grouping_levels) + remove_group_suffix(c, groupings=grouping_levels(policy_environment)) not in defined_functions ) and (not c.endswith("_params")) @@ -95,19 +97,19 @@ def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): documented_functions = { f.leaf_name for f in _load_functions( - RESOURCE_DIR / "functions" / "all_functions_for_docs.py", - package_root=RESOURCE_DIR, + GETTSIM_ROOT / "functions" / "all_functions_for_docs.py", + package_root=GETTSIM_ROOT, include_imported_functions=True, ) } - internal_function_files = [RESOURCE_DIR.joinpath(p) for p in RESOURCE_DIR] + internal_function_files = [GETTSIM_ROOT.joinpath(p) for p in GETTSIM_ROOT] internal_functions = { f.leaf_name for f in _load_functions( internal_function_files, - package_root=RESOURCE_DIR, + package_root=GETTSIM_ROOT, include_imported_functions=True, ) if not f.original_function_name.startswith("_") diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py index e3f2d5934c..de35ad43d4 100644 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ b/src/_gettsim_tests/test_full_taxes_and_transfers.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import dags.tree as dt import pytest @@ -7,7 +9,10 @@ load_policy_test_data, ) from ttsim import compute_taxes_and_transfers -from ttsim.ttsim_objects import PolicyInput, check_series_has_expected_type +from ttsim.column_objects_param_function import ( + PolicyInput, + check_series_has_expected_type, +) test_data = load_policy_test_data("full_taxes_and_transfers") @@ -18,27 +23,27 @@ def test_full_taxes_transfers(test: PolicyTest): compute_taxes_and_transfers( data_tree=test.input_tree, - environment=environment, + policy_environment=environment, targets_tree=test.target_structure, ) @pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) def test_data_types(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) + policy_environment = cached_set_up_policy_environment(date=test.date) result = compute_taxes_and_transfers( data_tree=test.input_tree, - environment=environment, + policy_environment=policy_environment, targets_tree=test.target_structure, ) flat_types_input_variables = { n: pi.data_type - for n, pi in dt.flatten_to_qual_names(environment.raw_objects_tree).items() + for n, pi in dt.flatten_to_qual_names(policy_environment).items() if isinstance(pi, PolicyInput) } - flat_functions = dt.flatten_to_qual_names(environment.raw_objects_tree) + flat_functions = dt.flatten_to_qual_names(policy_environment) for column_name, result_array in dt.flatten_to_qual_names(result).items(): if column_name in flat_types_input_variables: @@ -66,6 +71,6 @@ def test_allow_none_as_target_tree(test: PolicyTest): compute_taxes_and_transfers( data_tree=test.input_tree, - environment=environment, + policy_environment=environment, targets_tree=None, ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py index ab6ea89995..a8de3730fb 100644 --- a/src/_gettsim_tests/test_groupings.py +++ b/src/_gettsim_tests/test_groupings.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import dags.tree as dt import pytest from numpy.testing import assert_array_almost_equal @@ -8,7 +10,6 @@ load_policy_test_data, ) from ttsim import compute_taxes_and_transfers -from ttsim.config import numpy_or_jax as np test_data = load_policy_test_data("groupings") @@ -19,38 +20,12 @@ def test_groupings(test: PolicyTest): result = compute_taxes_and_transfers( data_tree=test.input_tree, - environment=environment, + policy_environment=environment, targets_tree=test.target_structure, ) flat_result = dt.flatten_to_qual_names(result) flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) - - -def test_fail_to_compute_sn_id_if_married_but_gemeinsam_veranlagt_differs(): - data = { - "p_id": np.array([0, 1]), - "familie": { - "p_id_ehepartner": np.array([1, 0]), - }, - "einkommensteuer": { - "gemeinsam_veranlagt": np.array([False, True]), - }, - } - - environment = cached_set_up_policy_environment("2023-01-01") - - with pytest.raises( - ValueError, - match="have different values for gemeinsam_veranlagt", - ): - compute_taxes_and_transfers( - data_tree=data, - environment=environment, - targets_tree={"sn_id": None}, - ) + for col, actual in flat_result.items(): + assert_array_almost_equal(actual, flat_expected_output_tree[col], decimal=2) diff --git a/src/_gettsim_tests/test_household_links.py b/src/_gettsim_tests/test_household_links.py index 92d6fafa3c..e94bc6986a 100644 --- a/src/_gettsim_tests/test_household_links.py +++ b/src/_gettsim_tests/test_household_links.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import dags.tree as dt import pytest from numpy.testing import assert_array_almost_equal @@ -18,14 +20,12 @@ def test_aggregate_by_p_id(test: PolicyTest): result = compute_taxes_and_transfers( data_tree=test.input_tree, - environment=environment, + policy_environment=environment, targets_tree=test.target_structure, ) flat_result = dt.flatten_to_qual_names(result) flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - for result, expected in zip( - flat_result.values(), flat_expected_output_tree.values() - ): - assert_array_almost_equal(result, expected, decimal=2) + for col, actual in flat_result.items(): + assert_array_almost_equal(actual, flat_expected_output_tree[col], decimal=2) diff --git a/tests/ttsim/test_import.py b/src/_gettsim_tests/test_import_version.py similarity index 58% rename from tests/ttsim/test_import.py rename to src/_gettsim_tests/test_import_version.py index c1d7c66b8c..f13136d096 100644 --- a/tests/ttsim/test_import.py +++ b/src/_gettsim_tests/test_import_version.py @@ -1,7 +1,13 @@ from __future__ import annotations +import sys + import gettsim def test_import(): assert hasattr(gettsim, "__version__") + + +def test_python_version(): + assert sys.version_info >= (3, 11) diff --git a/src/_gettsim_tests/test_interface.py b/src/_gettsim_tests/test_interface.py new file mode 100644 index 0000000000..28c7575e4a --- /dev/null +++ b/src/_gettsim_tests/test_interface.py @@ -0,0 +1,147 @@ +import optree +import pandas as pd +import pytest + +from _gettsim.interface import oss + + +@pytest.fixture +def example_inputs_df(): + return pd.DataFrame( + { + "id": [0, 1, 2], + "gross_wage": [2000, 0, 0], + "age": [20, 2, 2], + "birth_year": [1990, 2023, 2023], + "pointer_parent_1": [-1, 0, 0], + "recipient_child_benefits_id": [-1, 0, 0], + "is_single_parent": [True, False, False], + "has_children": [True, False, False], + } + ) + + +@pytest.fixture +def example_inputs_tree_to_inputs_df_columns(): + return { + "arbeitsstunden_w": 0, + "einkommensteuer": { + "abzüge": { + "kinderbetreuungskosten_m": 0.0, + "p_id_kinderbetreuungskostenträger": -1, + "beitrag_private_rentenversicherung_m": 0.0, + }, + "einkünfte": { + "ist_selbstständig": False, + "aus_nichtselbstständiger_arbeit": { + "bruttolohn_m": "gross_wage", + }, + "aus_selbstständiger_arbeit": { + "betrag_m": 0.0, + }, + "aus_gewerbebetrieb": { + "betrag_m": 0.0, + }, + "aus_forst_und_landwirtschaft": { + "betrag_m": 0.0, + }, + "aus_kapitalvermögen": { + "kapitalerträge_m": 0.0, + }, + "aus_vermietung_und_verpachtung": { + "betrag_m": 0.0, + }, + "sonstige": { + "ohne_renten_m": 0.0, + }, + }, + "gemeinsam_veranlagt": False, + }, + "alter": "age", + "behinderungsgrad": 0, + "p_id": "id", + "geburtsjahr": "birth_year", + "familie": { + "p_id_ehepartner": -1, + "p_id_elternteil_1": "pointer_parent_1", + "p_id_elternteil_2": -1, + "alleinerziehend": "is_single_parent", + }, + "kindergeld": { + "p_id_empfänger": "recipient_child_benefits_id", + "in_ausbildung": False, + }, + "sozialversicherung": { + "rente": { + "altersrente": { + "betrag_m": 0.0, + }, + "jahr_renteneintritt": 2060, + "private_rente_betrag_m": 0.0, + }, + "pflege": { + "beitrag": { + "hat_kinder": "has_children", + }, + }, + "kranken": { + "beitrag": { + "privat_versichert": False, + } + }, + }, + "wohnort_ost": False, + } + + +_EXAMPLE_TARGETS_TREE_TO_DF_COLUMNS = { + "einkommensteuer": { + "betrag_y_sn": "income_tax", # policy target + "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", # param target + }, +} + + +@pytest.mark.parametrize( + "targets_tree_to_outputs_df_columns", + [ + # Param target and policy target + { + "einkommensteuer": { + "betrag_y_sn": "income_tax", + "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", + }, + }, + # Policy target only + { + "einkommensteuer": { + "betrag_y_sn": "income_tax", + }, + }, + # Param target only + { + "einkommensteuer": { + "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", + }, + }, + ], +) +def test_oss_with_gettsim_policy_env( + targets_tree_to_outputs_df_columns, + example_inputs_df, + example_inputs_tree_to_inputs_df_columns, +): + results = oss( + date="2024-01-01", + inputs_df=example_inputs_df, + inputs_tree_to_inputs_df_columns=example_inputs_tree_to_inputs_df_columns, + targets_tree_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + ) + expected_columns: list[tuple[str]] = optree.tree_flatten( + targets_tree_to_outputs_df_columns + )[0] + assert results.shape == ( + example_inputs_df.shape[0], + len(expected_columns), + ) + assert all(col in results.columns for col in expected_columns) diff --git a/src/_gettsim_tests/test_lohnsteuer.py b/src/_gettsim_tests/test_lohnsteuer.py deleted file mode 100644 index fc92da0df7..0000000000 --- a/src/_gettsim_tests/test_lohnsteuer.py +++ /dev/null @@ -1,28 +0,0 @@ -from _gettsim.config import RESOURCE_DIR -from ttsim import set_up_policy_environment - - -def test_parsing_lohnsteuer_rv_anteil(): - environment = set_up_policy_environment( - resource_dir=RESOURCE_DIR, date="2018-01-01" - ) - - assert ( - abs( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] - - 0.72 - ) - < 1e-6 - ) - - environment = set_up_policy_environment( - resource_dir=RESOURCE_DIR, date="2023-01-01" - ) - - assert ( - abs( - environment.params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] - - 1 - ) - < 1e-6 - ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index d3fbb798f9..26731190fe 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from _gettsim_tests.utils import ( @@ -5,6 +7,7 @@ execute_test, get_policy_test_ids_and_cases, ) +from ttsim.config import IS_JAX_INSTALLED policy_test_ids_and_cases = get_policy_test_ids_and_cases() @@ -15,4 +18,7 @@ ids=policy_test_ids_and_cases.keys(), ) def test_policy(test: PolicyTest): - execute_test(test) + if IS_JAX_INSTALLED: + execute_test(test, jit=True) + else: + execute_test(test) diff --git a/src/_gettsim_tests/test_warn_if_repeated_execution.py b/src/_gettsim_tests/test_warn_if_repeated_execution.py index 8bfceff5f5..014a1ae0a2 100644 --- a/src/_gettsim_tests/test_warn_if_repeated_execution.py +++ b/src/_gettsim_tests/test_warn_if_repeated_execution.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py index 175365f565..d67a6afa64 100644 --- a/src/_gettsim_tests/utils.py +++ b/src/_gettsim_tests/utils.py @@ -1,6 +1,5 @@ from __future__ import annotations -import copy from functools import lru_cache from typing import TYPE_CHECKING @@ -9,17 +8,14 @@ import pandas as pd import yaml -from _gettsim.config import RESOURCE_DIR +from _gettsim.config import GETTSIM_ROOT from _gettsim_tests import TEST_DIR from ttsim import ( - GroupCreationFunction, - PolicyEnvironment, compute_taxes_and_transfers, merge_trees, set_up_policy_environment, to_datetime, ) -from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np # Set display options to show all columns without truncation @@ -30,18 +26,23 @@ import datetime from pathlib import Path - from ttsim.typing import DashedISOString, NestedDataDict, NestedInputStructureDict + from ttsim.typing import ( + DashedISOString, + NestedData, + NestedInputStructureDict, + NestedPolicyEnvironment, + ) def cached_set_up_policy_environment( date: datetime.date | DashedISOString, -) -> PolicyEnvironment: +) -> NestedPolicyEnvironment: return _cached_set_up_policy_environment(to_datetime(date)) @lru_cache(maxsize=100) -def _cached_set_up_policy_environment(date: datetime.date) -> PolicyEnvironment: - return set_up_policy_environment(date=date, resource_dir=RESOURCE_DIR) +def _cached_set_up_policy_environment(date: datetime.date) -> NestedPolicyEnvironment: + return set_up_policy_environment(date=date, root=GETTSIM_ROOT) class PolicyTest: @@ -49,9 +50,9 @@ class PolicyTest: def __init__( self, - info: NestedDataDict, - input_tree: NestedDataDict, - expected_output_tree: NestedDataDict, + info: NestedData, + input_tree: NestedData, + expected_output_tree: NestedData, path: Path, date: datetime.date, ) -> None: @@ -76,34 +77,13 @@ def name(self) -> str: def execute_test(test: PolicyTest, jit: bool = False) -> None: environment = cached_set_up_policy_environment(date=test.date) - if IS_JAX_INSTALLED: - ids = dict.fromkeys( - {f"{g}_id" for g in environment.grouping_levels}.intersection( - { - g - for g, t in environment.raw_objects_tree.items() - if isinstance(t, GroupCreationFunction) - } - ) - ) - result_ids = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=ids, - jit=False, - ) - data_tree = merge_trees(test.input_tree, result_ids) - targets_tree = copy.deepcopy(test.target_structure) - for i in [i for i in ids if i in targets_tree]: - del targets_tree[i] - else: - data_tree = test.input_tree - targets_tree = test.target_structure + data_tree = test.input_tree + targets_tree = test.target_structure if targets_tree: result = compute_taxes_and_transfers( data_tree=data_tree, - environment=environment, + policy_environment=environment, targets_tree=targets_tree, jit=jit, ) @@ -116,11 +96,7 @@ def execute_test(test: PolicyTest, jit: bool = False) -> None: if flat_expected_output_tree: expected_df = pd.DataFrame(flat_expected_output_tree) result_df = pd.DataFrame(flat_result) - if IS_JAX_INSTALLED: - for i in [i for i in ids if i in expected_df]: - result_df = pd.concat( - [result_df, pd.Series(result_ids[i], name=i)], axis=1 - ) + try: pd.testing.assert_frame_equal( result_df.sort_index(axis="columns"), @@ -168,7 +144,7 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: continue with path_to_yaml.open("r", encoding="utf-8") as file: - raw_test_data: NestedDataDict = yaml.safe_load(file) + raw_test_data: NestedData = yaml.safe_load(file) # TODO(@MImmesberger): Remove this before merging this PR. # https://github.com/iza-institute-of-labor-economics/gettsim/pull/884 @@ -186,7 +162,7 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: return out -def get_test_data_as_tree(test_data: NestedDataDict) -> NestedDataDict: +def get_test_data_as_tree(test_data: NestedData) -> NestedData: provided_inputs = test_data["inputs"].get("provided", {}) assumed_inputs = test_data["inputs"].get("assumed", {}) @@ -217,7 +193,7 @@ def _is_skipped(test_file: Path) -> bool: def _get_policy_tests_from_raw_test_data( - raw_test_data: NestedDataDict, path_to_yaml: Path + raw_test_data: NestedData, path_to_yaml: Path ) -> list[PolicyTest]: """Get a list of PolicyTest objects from raw test data. @@ -228,9 +204,9 @@ def _get_policy_tests_from_raw_test_data( Returns: A list of PolicyTest objects. """ - test_info: NestedDataDict = raw_test_data.get("info", {}) - inputs: NestedDataDict = raw_test_data.get("inputs", {}) - input_tree: NestedDataDict = dt.unflatten_from_tree_paths( + test_info: NestedData = raw_test_data.get("info", {}) + inputs: NestedData = raw_test_data.get("inputs", {}) + input_tree: NestedData = dt.unflatten_from_tree_paths( { k: pd.Series(v) for k, v in dt.flatten_to_tree_paths( @@ -239,7 +215,7 @@ def _get_policy_tests_from_raw_test_data( } ) - expected_output_tree: NestedDataDict = dt.unflatten_from_tree_paths( + expected_output_tree: NestedData = dt.unflatten_from_tree_paths( { k: pd.Series(v) for k, v in dt.flatten_to_tree_paths( diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index fdab109f16..268418f8f8 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -19,9 +19,8 @@ from _gettsim_tests import TEST_DIR from ttsim import ( - FunctionsAndColumnsOverlapWarning, + FunctionsAndDataOverlapWarning, GroupCreationFunction, - PolicyEnvironment, PolicyFunction, compute_taxes_and_transfers, group_creation_function, @@ -48,9 +47,8 @@ def test(*args: Any) -> None: __all__ = [ - "FunctionsAndColumnsOverlapWarning", + "FunctionsAndDataOverlapWarning", "GroupCreationFunction", - "PolicyEnvironment", "PolicyFunction", "__version__", "compute_taxes_and_transfers", diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 4cfefb9172..bfcd5c0e92 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,60 +1,104 @@ +from __future__ import annotations + from ttsim.aggregation import AggType from ttsim.automatically_added_functions import create_time_conversion_functions -from ttsim.combine_functions import combine_policy_functions_and_derived_functions -from ttsim.compute_taxes_and_transfers import ( - FunctionsAndColumnsOverlapWarning, - compute_taxes_and_transfers, -) -from ttsim.piecewise_polynomial import piecewise_polynomial -from ttsim.plot_dag import plot_dag -from ttsim.policy_environment import PolicyEnvironment, set_up_policy_environment -from ttsim.prepare_data import create_data_tree_from_df -from ttsim.rounding import RoundingSpec -from ttsim.shared import ( - insert_path_and_value, - join, - merge_trees, - to_datetime, - upsert_path_and_value, - upsert_tree, -) -from ttsim.ttsim_objects import ( +from ttsim.column_objects_param_function import ( AggByGroupFunction, AggByPIDFunction, FKType, GroupCreationFunction, + ParamFunction, PolicyFunction, PolicyInput, TimeConversionFunction, agg_by_group_function, agg_by_p_id_function, group_creation_function, + param_function, policy_function, policy_input, ) +from ttsim.compute_taxes_and_transfers import ( + FunctionsAndDataOverlapWarning, + _add_derived_functions, + compute_taxes_and_transfers, +) +from ttsim.convert_nested_data import dataframe_to_nested_data, nested_data_to_dataframe +from ttsim.param_objects import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt1dLookupTableParamValue, + ConsecutiveInt2dLookupTableParamValue, + DictParam, + ParamObject, + PiecewisePolynomialParam, + PiecewisePolynomialParamValue, + RawParam, + ScalarParam, +) +from ttsim.piecewise_polynomial import ( + get_piecewise_parameters, + piecewise_polynomial, +) +from ttsim.plot_dag import plot_dag +from ttsim.policy_environment import ( + OrigTreesWithFileNames, + active_tree, + get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_2d_lookup_table_param_value, + get_month_based_phase_inout_of_age_thresholds_param_value, + get_year_based_phase_inout_of_age_thresholds_param_value, + set_up_policy_environment, +) +from ttsim.rounding import RoundingSpec +from ttsim.shared import ( + insert_path_and_value, + join, + merge_trees, + to_datetime, + upsert_path_and_value, + upsert_tree, +) __all__ = [ "AggByGroupFunction", "AggByPIDFunction", "AggType", + "ConsecutiveInt1dLookupTableParam", + "ConsecutiveInt1dLookupTableParamValue", + "ConsecutiveInt2dLookupTableParamValue", + "DictParam", "FKType", - "FunctionsAndColumnsOverlapWarning", + "FunctionsAndDataOverlapWarning", "GroupCreationFunction", - "PolicyEnvironment", + "OrigTreesWithFileNames", + "ParamFunction", + "ParamObject", + "PiecewisePolynomialParam", + "PiecewisePolynomialParamValue", "PolicyFunction", "PolicyInput", + "RawParam", "RoundingSpec", + "ScalarParam", "TimeConversionFunction", + "_add_derived_functions", + "active_tree", "agg_by_group_function", "agg_by_p_id_function", - "combine_policy_functions_and_derived_functions", "compute_taxes_and_transfers", - "create_data_tree_from_df", "create_time_conversion_functions", + "dataframe_to_nested_data", + "get_consecutive_int_1d_lookup_table_param_value", + "get_consecutive_int_2d_lookup_table_param_value", + "get_month_based_phase_inout_of_age_thresholds_param_value", + "get_piecewise_parameters", + "get_year_based_phase_inout_of_age_thresholds_param_value", "group_creation_function", "insert_path_and_value", "join", "merge_trees", + "nested_data_to_dataframe", + "param_function", "piecewise_polynomial", "plot_dag", "policy_function", diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py index a4f92d9b77..6d4a2bafb9 100644 --- a/src/ttsim/aggregation.py +++ b/src/ttsim/aggregation.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from enum import StrEnum from ttsim import aggregation_jax, aggregation_numpy diff --git a/src/ttsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py index 2608b55857..d2b79d0945 100644 --- a/src/ttsim/aggregation_jax.py +++ b/src/ttsim/aggregation_jax.py @@ -19,8 +19,7 @@ def grouped_count(group_id: jnp.ndarray, num_segments: int) -> jnp.ndarray: out_on_hh = segment_sum( data=jnp.ones(len(group_id)), segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_sum( @@ -32,8 +31,7 @@ def grouped_sum( out_on_hh = segment_sum( data=column, segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_mean( @@ -46,8 +44,7 @@ def grouped_mean( data=jnp.ones(len(column)), segment_ids=group_id, num_segments=num_segments ) mean_on_hh = sum_on_hh / sizes - out = mean_on_hh[group_id] - return out + return mean_on_hh[group_id] def grouped_max( @@ -56,8 +53,7 @@ def grouped_max( out_on_hh = segment_max( data=column, segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_min( @@ -66,8 +62,7 @@ def grouped_min( out_on_hh = segment_min( data=column, segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_any( @@ -82,8 +77,7 @@ def grouped_any( out_on_hh = segment_max( data=my_col, segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_all( @@ -96,8 +90,7 @@ def grouped_all( out_on_hh = segment_min( data=column, segment_ids=group_id, num_segments=num_segments ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def count_by_p_id( @@ -131,8 +124,7 @@ def sum_by_p_id( # Scatter-add the contributions to the output array. out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) - out = out.at[mapped_index].add(contributions) - return out + return out.at[mapped_index].add(contributions) def mean_by_p_id( diff --git a/src/ttsim/aggregation_numpy.py b/src/ttsim/aggregation_numpy.py index 795da4adc9..1cceeb11b5 100644 --- a/src/ttsim/aggregation_numpy.py +++ b/src/ttsim/aggregation_numpy.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import numpy import numpy_groupies as npg @@ -5,11 +7,10 @@ def grouped_count(group_id: numpy.ndarray) -> numpy.ndarray: fail_if_dtype_not_int(group_id, agg_func="grouped_count") out_on_hh = npg.aggregate( - group_id, numpy.ones(len(group_id)), func="sum", fill_value=0 + group_id, numpy.ones(len(group_id), dtype=int), func="sum", fill_value=0 ) - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_sum(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: @@ -20,8 +21,7 @@ def grouped_sum(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray out_on_hh = npg.aggregate(group_id, column, func="sum", fill_value=0) # Expand to individual level - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_mean(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: @@ -31,8 +31,7 @@ def grouped_mean(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarra out_on_hh = npg.aggregate(group_id, column, func="mean", fill_value=0) # Expand to individual level - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_max(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: @@ -95,8 +94,7 @@ def grouped_any(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray out_on_hh = npg.aggregate(group_id, column, func="any", fill_value=0) # Expand to individual level - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def grouped_all(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: @@ -106,8 +104,7 @@ def grouped_all(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray out_on_hh = npg.aggregate(group_id, column, func="all", fill_value=0) # Expand to individual level - out = out_on_hh[group_id] - return out + return out_on_hh[group_id] def count_by_p_id( diff --git a/src/ttsim/automatically_added_functions.py b/src/ttsim/automatically_added_functions.py index a3083cb36f..a6fa7af9d1 100644 --- a/src/ttsim/automatically_added_functions.py +++ b/src/ttsim/automatically_added_functions.py @@ -3,38 +3,38 @@ import inspect from typing import TYPE_CHECKING -import dags import dags.tree as dt -from dags import rename_arguments +from dags import get_free_arguments, rename_arguments from ttsim.aggregation import grouped_sum +from ttsim.column_objects_param_function import ( + DEFAULT_END_DATE, + DEFAULT_START_DATE, + AggByGroupFunction, + ColumnFunction, + ColumnObject, + ParamFunction, + TimeConversionFunction, +) from ttsim.config import IS_JAX_INSTALLED +from ttsim.param_objects import ScalarParam from ttsim.shared import ( fail_if_multiple_time_units_for_same_base_name_and_group, get_base_name_and_grouping_suffix, - get_names_of_required_arguments, get_re_pattern_for_all_time_units_and_groupings, get_re_pattern_for_specific_time_units_and_groupings, group_pattern, ) -from ttsim.ttsim_objects import ( - DEFAULT_END_DATE, - DEFAULT_START_DATE, - AggByGroupFunction, - TimeConversionFunction, - TTSIMFunction, - TTSIMObject, -) if TYPE_CHECKING: import re from collections.abc import Callable from ttsim.typing import ( - QualNameDataDict, + QualNameColumnFunctions, + QualNameDataColumns, + QualNamePolicyEnvironment, QualNameTargetList, - QualNameTTSIMFunctionDict, - QualNameTTSIMObjectDict, ) @@ -396,13 +396,30 @@ def d_to_w(value: float) -> float: } +def _convertibles( + qual_name_policy_environment: QualNamePolicyEnvironment, +) -> dict[str, ColumnObject | ParamFunction | ScalarParam]: + return { + qn: e + for qn, e in qual_name_policy_environment.items() + if isinstance(e, (ColumnObject, ScalarParam)) + or ( + isinstance(e, ParamFunction) + and e.function.__annotations__["return"] in {"float", "int"} + ) + } + + def create_time_conversion_functions( - ttsim_objects: QualNameTTSIMObjectDict, - data: QualNameDataDict, + qual_name_policy_environment: QualNamePolicyEnvironment, + data_columns: QualNameDataColumns, groupings: tuple[str, ...], -) -> QualNameTTSIMFunctionDict: +) -> QualNameColumnFunctions: """ - Create functions that convert variables to different time units. + Create functions converting elements of the policy environment to other time units. + + Convertible elements are column objects, scalar parameters and param functions + returning a scalar (see function *_convertibles*) The time unit of a function is determined by a naming convention: @@ -431,8 +448,8 @@ def create_time_conversion_functions( functions The functions dict with qualified function names as keys and functions as values. - data - The data dict with qualified data names as keys and pandas Series as values. + data_columns + The data columns, represented by qualified names. Returns ------- @@ -444,10 +461,10 @@ def create_time_conversion_functions( groupings=groupings, time_units=all_time_units, ) - + # Map base name and grouping suffix to time conversion inputs. bngs_to_time_conversion_inputs = {} bngs_to_variations = {} - for qual_name, ttsim_object in ttsim_objects.items(): + for qual_name, element in _convertibles(qual_name_policy_environment).items(): match = pattern_all.fullmatch(qual_name) # We must not find multiple time units for the same base name and group. bngs = get_base_name_and_grouping_suffix(match) @@ -459,7 +476,7 @@ def create_time_conversion_functions( bngs_to_time_conversion_inputs[bngs] = { "base_name": bngs[0], "qual_name_source": qual_name, - "ttsim_object": ttsim_object, + "element": element, "time_unit": match.group("time_unit"), "grouping_suffix": bngs[1], "all_time_units": all_time_units, @@ -467,9 +484,9 @@ def create_time_conversion_functions( fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - converted_ttsim_objects: dict[str, TTSIMObject] = {} + converted_elements: dict[str, ColumnObject] = {} for bngs, inputs in bngs_to_time_conversion_inputs.items(): - for qual_name_data in data: + for qual_name_data in data_columns: # If base_name is in provided data, base time conversions on that. if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( base_name=bngs[0], @@ -481,35 +498,30 @@ def create_time_conversion_functions( break variations = _create_one_set_of_time_conversion_functions(**inputs) - for der_name in variations: - if der_name in converted_ttsim_objects or der_name in data: - raise ValueError( - "Fixme, should never end up here -- left for debugging" - ) - converted_ttsim_objects = {**converted_ttsim_objects, **variations} + converted_elements = {**converted_elements, **variations} - return converted_ttsim_objects + return converted_elements def _create_one_set_of_time_conversion_functions( base_name: str, qual_name_source: str, - ttsim_object: TTSIMObject, + element: ColumnObject, time_unit: str, grouping_suffix: str, all_time_units: tuple[str, ...], ) -> dict[str, TimeConversionFunction]: result: dict[str, TimeConversionFunction] = {} dependencies = ( - set(inspect.signature(ttsim_object).parameters) - if isinstance(ttsim_object, TTSIMFunction) + set(inspect.signature(element).parameters) + if isinstance(element, ColumnFunction) else set() ) for target_time_unit in [tu for tu in all_time_units if tu != time_unit]: new_name = f"{base_name}_{target_time_unit}{grouping_suffix}" - # Without this check, we could create cycles in the DAG: Consider a + # Without the following check, we could create cycles in the DAG: Consider a # hard-coded function `var_y` that takes `var_m` as an input, assuming it # to be provided in the input data. If we create a function `var_m`, which # would take `var_y` as input, we create a cycle. If `var_m` is actually @@ -530,8 +542,8 @@ def _create_one_set_of_time_conversion_functions( ], ), source=qual_name_source, - start_date=ttsim_object.start_date, - end_date=ttsim_object.end_date, + start_date=element.start_date, + end_date=element.end_date, ) return result @@ -548,18 +560,21 @@ def func(x: float) -> float: def create_agg_by_group_functions( - ttsim_functions_with_time_conversions: QualNameTTSIMObjectDict, - data: QualNameDataDict, + column_functions: QualNameColumnFunctions, + data_columns: QualNameDataColumns, targets: QualNameTargetList, groupings: tuple[str, ...], -) -> QualNameTTSIMFunctionDict: +) -> QualNameColumnFunctions: gp = group_pattern(groupings) - all_functions_and_data = {**ttsim_functions_with_time_conversions, **data} + all_functions_and_data = { + **column_functions, + **dict.fromkeys(data_columns), + } potential_agg_by_group_function_names = { # Targets that end with a grouping suffix are potential aggregation targets. *[t for t in targets if gp.match(t)], *_get_potential_agg_by_group_function_names_from_function_arguments( - functions=ttsim_functions_with_time_conversions, + functions=column_functions, group_pattern=gp, ), } @@ -582,7 +597,7 @@ def create_agg_by_group_functions( mapper = {"group_id": group_id, "column": base_name_with_time_unit} if IS_JAX_INSTALLED: mapper["num_segments"] = f"{group_id}_num_segments" - agg_func = dags.rename_arguments( + agg_func = rename_arguments( func=grouped_sum, mapper=mapper, ) @@ -596,8 +611,8 @@ def create_agg_by_group_functions( def _get_potential_agg_by_group_function_names_from_function_arguments( - functions: QualNameTTSIMFunctionDict, - group_pattern: re.Pattern, + functions: QualNameColumnFunctions, + group_pattern: re.Pattern[str], ) -> set[str]: """Get potential aggregation function names from function arguments. @@ -611,8 +626,6 @@ def _get_potential_agg_by_group_function_names_from_function_arguments( Set of potential aggregation targets. """ all_names = { - name - for func in functions.values() - for name in get_names_of_required_arguments(func) + name for func in functions.values() for name in get_free_arguments(func) } return {n for n in all_names if group_pattern.match(n)} diff --git a/src/ttsim/ttsim_objects.py b/src/ttsim/column_objects_param_function.py similarity index 76% rename from src/ttsim/ttsim_objects.py rename to src/ttsim/column_objects_param_function.py index 74a3f34a6e..28eacb406e 100644 --- a/src/ttsim/ttsim_objects.py +++ b/src/ttsim/column_objects_param_function.py @@ -7,9 +7,9 @@ from enum import StrEnum from typing import TYPE_CHECKING, Generic, Literal, ParamSpec, TypeVar -import dags import dags.tree as dt import numpy +from dags import rename_arguments from pandas.api.types import ( is_bool_dtype, is_datetime64_any_dtype, @@ -37,21 +37,19 @@ from ttsim.config import IS_JAX_INSTALLED from ttsim.rounding import RoundingSpec from ttsim.shared import to_datetime, validate_date_range -from ttsim.vectorization import make_vectorizable +from ttsim.vectorization import vectorize_function if TYPE_CHECKING: - from collections.abc import Callable - import pandas as pd from ttsim.config import numpy_or_jax as np - from ttsim.typing import DashedISOString + from ttsim.typing import DashedISOString, GenericCallable FunArgTypes = ParamSpec("FunArgTypes") ReturnType = TypeVar("ReturnType") DEFAULT_START_DATE = datetime.date(1900, 1, 1) -DEFAULT_END_DATE = datetime.date(2100, 12, 31) +DEFAULT_END_DATE = datetime.date(2099, 12, 31) class FKType(StrEnum): @@ -65,9 +63,19 @@ class FKType(StrEnum): @dataclass(frozen=True) -class TTSIMObject: - """ - Abstract base class for all TTSIM Functions and Inputs. +class ColumnObject: + """Base class for all objects operating on columns of data. + + Examples: + - PolicyInputs + - PolicyFunctions + - GroupCreationFunctions + - AggByGroupFunctions + - AggByPIDFunctions + - TimeConversionFunctions + + Parameters are not ColumnObjectParamFunctions. + """ leaf_name: str @@ -82,13 +90,13 @@ def remove_tree_logic( self, tree_path: tuple[str, ...], top_level_namespace: set[str], - ) -> TTSIMObject: + ) -> ColumnObject: """Remove tree logic from the function and update the function signature.""" raise NotImplementedError("Subclasses must implement this method.") @dataclass(frozen=True) -class PolicyInput(TTSIMObject): +class PolicyInput(ColumnObject): """ A dummy function representing an input variable. @@ -120,7 +128,7 @@ def policy_input( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, foreign_key_type: FKType = FKType.IRRELEVANT, -) -> Callable[[Callable], PolicyInput]: +) -> GenericCallable[[GenericCallable], PolicyInput]: """ Decorator that makes a (dummy) function a `PolicyInput`. @@ -145,7 +153,7 @@ def policy_input( """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def inner(func: Callable) -> PolicyInput: + def inner(func: GenericCallable) -> PolicyInput: data_type = func.__annotations__["return"] return PolicyInput( leaf_name=func.__name__, @@ -158,7 +166,7 @@ def inner(func: Callable) -> PolicyInput: return inner -def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable) -> None: +def _frozen_safe_update_wrapper(wrapper: object, wrapped: GenericCallable) -> None: """Update a frozen wrapper dataclass to look like the wrapped function. This is necessary because the wrapper is a frozen dataclass, so we cannot @@ -190,12 +198,12 @@ def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable) -> None: @dataclass(frozen=True) -class TTSIMFunction(TTSIMObject, Generic[FunArgTypes, ReturnType]): +class ColumnFunction(ColumnObject, Generic[FunArgTypes, ReturnType]): """ - Base class for all TTSIM functions. + Base class for all functions operating on columns of data. """ - function: Callable[FunArgTypes, ReturnType] + function: GenericCallable[FunArgTypes, ReturnType] rounding_spec: RoundingSpec | None = None foreign_key_type: FKType = FKType.IRRELEVANT @@ -244,18 +252,16 @@ def is_active(self, date: datetime.date) -> bool: @dataclass(frozen=True) -class PolicyFunction(TTSIMFunction): +class PolicyFunction(ColumnFunction): # type: ignore[type-arg] """ - A function that computes an output vector based on some input vectors and/or - parameters. + Computes a column based on at least one input column and/or parameters. Parameters ---------- leaf_name: The leaf name of the function in the functions tree. function: - The function to wrap. Argument values of the `@policy_function` are reused - unless explicitly overwritten. + The function that is called when the PolicyFunction is evaluated. start_date: The date from which the function is active (inclusive). end_date: @@ -292,23 +298,15 @@ def policy_function( rounding_spec: RoundingSpec | None = None, vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize", foreign_key_type: FKType = FKType.IRRELEVANT, -) -> Callable[[Callable], PolicyFunction]: +) -> GenericCallable[[GenericCallable], PolicyFunction]: """ Decorator that makes a `PolicyFunction` from a function. - **Dates active (start_date, end_date, leaf_name):** - - Specifies that a PolicyFunction is only active between two dates, `start` and `end`. - By using the `leaf_name` argument, you can specify a different name for the - PolicyFunction in the functions tree. - - Note that even if you use this decorator with the `leaf_name` argument, you must - ensure that the function name is unique in the file where it is defined. Otherwise, - the function would be overwritten by the last function with the same name. - - **Rounding specification (rounding_spec):** - - Adds the way rounding is to be done to a PolicyFunction. + PolicyFunctions are typically defined on scalars, but work on data columns (i.e., + arrays of the same length as `p_id`). TTSIM will handle this (see + `vectorization_strategy` below). Use `param_function` / `ParamFunction` for + functions that convert the parameters of the taxes and transfers system, which do + not require any columns from the data. Parameters ---------- @@ -322,7 +320,11 @@ def policy_function( rounding_spec The specification to be used for rounding. vectorization_strategy: - Whether and how the function should be vectorized. + Whether and how the function should be vectorized. Typically, functions will be + defined on scalars and will be vectorized by TTSIM. Stick to the default of + 'vectorize'. Exceptions: 'loop' for constructs that cannot be vectorized by + numpy or jax; 'not_required' if the function works natively with arrays (e.g., + joining two columns). foreign_key_type: Whether this is a foreign key and, if so, whether it may point to itself. @@ -333,11 +335,11 @@ def policy_function( start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def inner(func: Callable) -> PolicyFunction: + def inner(func: GenericCallable) -> PolicyFunction: func = ( func if vectorization_strategy == "not_required" - else _vectorize_func(func, vectorization_strategy=vectorization_strategy) + else vectorize_function(func, vectorization_strategy=vectorization_strategy) ) return PolicyFunction( leaf_name=leaf_name if leaf_name else func.__name__, @@ -351,27 +353,8 @@ def inner(func: Callable) -> PolicyFunction: return inner -def _vectorize_func( - func: Callable, vectorization_strategy: Literal["loop", "vectorize"] -) -> Callable: - if vectorization_strategy == "loop": - vectorized = functools.wraps(func)(numpy.vectorize(func)) - vectorized.__signature__ = inspect.signature(func) # type: ignore[attr-defined] - vectorized.__globals__ = func.__globals__ # type: ignore[attr-defined] - vectorized.__closure__ = func.__closure__ # type: ignore[attr-defined] - elif vectorization_strategy == "vectorize": - backend = "jax" if IS_JAX_INSTALLED else "numpy" - vectorized = make_vectorizable(func, backend=backend) - else: - raise ValueError( - f"Vectorization strategy {vectorization_strategy} is not supported. " - "Use 'loop' or 'vectorize'." - ) - return vectorized - - @dataclass(frozen=True) -class GroupCreationFunction(TTSIMFunction): +class GroupCreationFunction(ColumnFunction): # type: ignore[type-arg] """ A function that computes endogenous group_by IDs. @@ -412,13 +395,13 @@ def group_creation_function( leaf_name: str | None = None, start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, -) -> Callable[[Callable], GroupCreationFunction]: +) -> GenericCallable[[GenericCallable], GroupCreationFunction]: """ Decorator that creates a group_by function from a function. """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def decorator(func: Callable) -> GroupCreationFunction: + def decorator(func: GenericCallable) -> GroupCreationFunction: _leaf_name = func.__name__ if leaf_name is None else leaf_name return GroupCreationFunction( leaf_name=_leaf_name, @@ -431,7 +414,7 @@ def decorator(func: Callable) -> GroupCreationFunction: @dataclass(frozen=True) -class AggByGroupFunction(TTSIMFunction): +class AggByGroupFunction(ColumnFunction): # type: ignore[type-arg] """ A function that is an aggregation of another column by some group id. @@ -483,7 +466,7 @@ def agg_by_group_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> Callable[[Callable], AggByGroupFunction]: +) -> GenericCallable[[GenericCallable], AggByGroupFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -496,7 +479,7 @@ def agg_by_group_function( AggType.COUNT: grouped_count, } - def inner(func: Callable) -> AggByGroupFunction: + def inner(func: GenericCallable) -> AggByGroupFunction: orig_location = f"{func.__module__}.{func.__name__}" args = set(inspect.signature(func).parameters) group_ids = {p for p in args if p.endswith("_id")} @@ -511,7 +494,7 @@ def inner(func: Callable) -> AggByGroupFunction: mapper = {"group_id": group_id, "column": other_args.pop()} if IS_JAX_INSTALLED: mapper["num_segments"] = f"{group_id}_num_segments" - agg_func = dags.rename_arguments( + agg_func = rename_arguments( func=agg_registry[agg_type], mapper=mapper, ) @@ -555,7 +538,7 @@ def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str) -> N @dataclass(frozen=True) -class AggByPIDFunction(TTSIMFunction): +class AggByPIDFunction(ColumnFunction): # type: ignore[type-arg] """ A function that is an aggregation of another column by some group id. @@ -607,7 +590,7 @@ def agg_by_p_id_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> Callable[[Callable], AggByPIDFunction]: +) -> GenericCallable[[GenericCallable], AggByPIDFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -620,7 +603,7 @@ def agg_by_p_id_function( AggType.COUNT: count_by_p_id, } - def inner(func: Callable) -> AggByPIDFunction: + def inner(func: GenericCallable) -> AggByPIDFunction: orig_location = f"{func.__module__}.{func.__name__}" args = set(inspect.signature(func).parameters) other_p_ids = { @@ -644,13 +627,13 @@ def inner(func: Callable) -> AggByPIDFunction: "p_id_to_aggregate_by": other_p_ids.pop(), "p_id_to_store_by": "p_id", } - agg_func = dags.rename_arguments( + agg_func = rename_arguments( func=agg_registry[agg_type], mapper=mapper, ) functools.update_wrapper(agg_func, func) - agg_func.__signature__ = inspect.signature(func) # type: ignore[attr-defined] + agg_func.__signature__ = inspect.signature(func) return AggByPIDFunction( leaf_name=leaf_name if leaf_name else func.__name__, @@ -682,7 +665,7 @@ def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str) -> @dataclass(frozen=True) -class TimeConversionFunction(TTSIMFunction): +class TimeConversionFunction(ColumnFunction): # type: ignore[type-arg] """ A function that is a time conversion of another function. @@ -757,12 +740,14 @@ def _convert_and_validate_dates( def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: """Checks whether used series has already expected internal type. + Currently not used, but might become useful again. + Parameters ---------- - series : pandas.Series or pandas.DataFrame or dict of pandas.Series + series: pandas.Series or pandas.DataFrame or dict of pandas.Series Data provided by the user. - internal_type : TypeVar - One of the internal gettsim types. + internal_type: TypeVar + One of the types used by TTSIM. Returns ------- @@ -780,3 +765,113 @@ def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) - out = False return out + + +@dataclass(frozen=True) +class ParamFunction(Generic[FunArgTypes, ReturnType]): + """ + Compute a scalar or custom object from parameters of the taxes and transfers system. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the objects tree. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + function: + The function that is called when the ParamFunction is evaluated. + """ + + leaf_name: str + start_date: datetime.date + end_date: datetime.date + function: GenericCallable[FunArgTypes, ReturnType] + + def __post_init__(self) -> None: + # Expose the signature of the wrapped function for dependency resolution + _frozen_safe_update_wrapper(self, self.function) + + def __call__( + self, *args: FunArgTypes.args, **kwargs: FunArgTypes.kwargs + ) -> ReturnType: + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> set[str]: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + @property + def original_function_name(self) -> str: + """The name of the wrapped function.""" + return self.function.__name__ + + def is_active(self, date: datetime.date) -> bool: + """Check if the function is active at a given date.""" + return self.start_date <= date <= self.end_date + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: set[str], + ) -> ParamFunction: # type: ignore[type-arg] + """Remove tree logic from the function and update the function signature.""" + return ParamFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + start_date=self.start_date, + end_date=self.end_date, + ) + + +# Never returns a column, require precise annotation +def param_function( + *, + leaf_name: str | None = None, + start_date: str | datetime.date = DEFAULT_START_DATE, + end_date: str | datetime.date = DEFAULT_END_DATE, +) -> GenericCallable[[GenericCallable], ParamFunction]: + """ + Decorator that makes a `ParamFunction` from a function. + + ParamFunctions convert complex parameters (i.e., anything that is not a scalar, a + flat homogenous dictionary, or a set of parameters of a piecewise polynomial + function) to custom representations. They must not use any data columns (i.e., + arrays of the same length as `p_id`). Use `policy_function` / `PolicyFunction` for + functions that operate on data columns. + + As a consequence, the arguments of the decorated function must be found in the + params tree. They are typically defined as outermost keys in the yaml files with + parameters of the taxes and transfers system. + + Parameters + ---------- + leaf_name + The name that should be used as the ParamFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. + start_date + The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + end_date + The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). + + Returns + ------- + A decorator that returns a ParamFunction object. + """ + start_date, end_date = _convert_and_validate_dates(start_date, end_date) + + def inner(func: GenericCallable) -> ParamFunction: # type: ignore[type-arg] + return ParamFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + start_date=start_date, + end_date=end_date, + ) + + return inner diff --git a/src/ttsim/combine_functions.py b/src/ttsim/combine_functions.py deleted file mode 100644 index 432b49129e..0000000000 --- a/src/ttsim/combine_functions.py +++ /dev/null @@ -1,110 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.automatically_added_functions import ( - create_agg_by_group_functions, - create_time_conversion_functions, -) -from ttsim.shared import ( - format_errors_and_warnings, - format_list_linewise, -) -from ttsim.ttsim_objects import ( - TTSIMFunction, -) - -if TYPE_CHECKING: - from ttsim.typing import ( - QualNameDataDict, - QualNameTargetList, - QualNameTTSIMFunctionDict, - QualNameTTSIMObjectDict, - ) - - -def combine_policy_functions_and_derived_functions( - ttsim_objects: QualNameTTSIMObjectDict, - targets: QualNameTargetList, - data: QualNameDataDict, - groupings: tuple[str, ...], -) -> QualNameTTSIMFunctionDict: - """Add derived functions to the qualified functions dict. - - Derived functions are time converted functions and aggregation functions (aggregate - by p_id or by group). - - Checks that all targets have a corresponding function in the functions tree or can - be taken from the data. - - Parameters - ---------- - functions - Dict with qualified function names as keys and functions with qualified - arguments as values. - targets - The list of targets with qualified names. - data - Dict with qualified data names as keys and pandas Series as values. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The qualified functions dict with derived functions. - - """ - # Create functions for different time units - time_conversion_functions = create_time_conversion_functions( - ttsim_objects=ttsim_objects, - data=data, - groupings=groupings, - ) - current_functions = { - **{qn: f for qn, f in ttsim_objects.items() if isinstance(f, TTSIMFunction)}, - **time_conversion_functions, - } - # Create aggregation functions by group. - aggregate_by_group_functions = create_agg_by_group_functions( - ttsim_functions_with_time_conversions=current_functions, - data=data, - targets=targets, - groupings=groupings, - ) - current_functions = {**aggregate_by_group_functions, **current_functions} - - _fail_if_targets_not_in_functions(functions=current_functions, targets=targets) - - return current_functions - - -def _fail_if_targets_not_in_functions( - functions: QualNameTTSIMFunctionDict, targets: QualNameTargetList -) -> None: - """Fail if some target is not among functions. - - Parameters - ---------- - functions - Dictionary containing functions to build the DAG. - targets - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. - - Raises - ------ - ValueError - Raised if any member of `targets` is not among functions. - - """ - targets_not_in_functions_tree = [ - str(dt.tree_path_from_qual_name(n)) for n in targets if n not in functions - ] - if targets_not_in_functions_tree: - formatted = format_list_linewise(targets_not_in_functions_tree) - msg = format_errors_and_warnings( - f"The following targets have no corresponding function:\n\n{formatted}" - ) - raise ValueError(msg) diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index 8fcdba15a4..22ff356ede 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -1,22 +1,32 @@ from __future__ import annotations +import datetime import functools import inspect import warnings from typing import TYPE_CHECKING, Any -import dags import dags.tree as dt import networkx as nx import pandas as pd +from dags import concatenate_functions, create_dag, get_free_arguments -from ttsim.automatically_added_functions import TIME_UNIT_LABELS -from ttsim.combine_functions import ( - combine_policy_functions_and_derived_functions, +from ttsim.automatically_added_functions import ( + TIME_UNIT_LABELS, + create_agg_by_group_functions, + create_time_conversion_functions, +) +from ttsim.column_objects_param_function import ( + ColumnFunction, + ColumnObject, + FKType, + ParamFunction, + PolicyInput, ) from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np -from ttsim.policy_environment import PolicyEnvironment +from ttsim.param_objects import ParamObject, RawParam +from ttsim.policy_environment import fail_if_environment_not_valid, grouping_levels from ttsim.shared import ( assert_valid_ttsim_pytree, fail_if_multiple_time_units_for_same_base_name_and_group, @@ -24,44 +34,47 @@ format_list_linewise, get_base_name_and_grouping_suffix, get_name_of_group_by_id, - get_names_of_required_arguments, get_re_pattern_for_all_time_units_and_groupings, group_pattern, merge_trees, - partition_by_reference_dict, -) -from ttsim.ttsim_objects import ( - FKType, - TTSIMFunction, ) if TYPE_CHECKING: from ttsim.typing import ( - NestedDataDict, + NestedData, + NestedPolicyEnvironment, NestedTargetDict, - NestedTTSIMObjectDict, - QualNameDataDict, + QualNameColumnFunctions, + QualNameColumnFunctionsWithProcessedParamsAndScalars, + QualNameData, + QualNameDataColumns, + QualNamePolicyEnvironment, QualNameTargetList, - QualNameTTSIMFunctionDict, - QualNameTTSIMObjectDict, ) +_DUMMY_COLUMN_OBJECT = ColumnObject( + leaf_name="dummy", + start_date=datetime.date(1900, 1, 1), + end_date=datetime.date(2099, 12, 31), +) + + def compute_taxes_and_transfers( - data_tree: NestedDataDict, - environment: PolicyEnvironment, + data_tree: NestedData, + policy_environment: NestedPolicyEnvironment, targets_tree: NestedTargetDict, rounding: bool = True, debug: bool = False, jit: bool = False, -) -> NestedDataDict: +) -> NestedData: """Compute taxes and transfers. Parameters ---------- - data_tree : NestedDataDict + data_tree : NestedData Data provided by the user. - environment: PolicyEnvironment + environment: NestedPolicyEnvironment The policy environment which contains all necessary functions and parameters. targets_tree : NestedTargetDict | None The targets tree. @@ -76,7 +89,7 @@ def compute_taxes_and_transfers( Returns ------- - results : NestedDataDict + results : NestedData The computed variables as a tree. """ @@ -84,73 +97,79 @@ def compute_taxes_and_transfers( # Check user inputs _fail_if_targets_tree_not_valid(targets_tree) _fail_if_data_tree_not_valid(data_tree) - _fail_if_environment_not_valid(environment) + fail_if_environment_not_valid(policy_environment) - # Transform functions tree to qualified names dict with qualified arguments top_level_namespace = _get_top_level_namespace( - environment=environment, + policy_environment=policy_environment, time_units=tuple(TIME_UNIT_LABELS.keys()), ) - # Flatten nested objects to qualified names - targets = dt.qual_names(targets_tree) - data = dt.flatten_to_qual_names(data_tree) - ttsim_objects = remove_tree_logic_from_ttsim_objects_tree( - raw_objects_tree=environment.raw_objects_tree, + # Check that all paths in the params tree are valid + dt.fail_if_paths_are_invalid( + functions=policy_environment, + data_tree=data_tree, + targets=targets_tree, top_level_namespace=top_level_namespace, ) - # Add derived functions to the qualified functions tree. - functions = combine_policy_functions_and_derived_functions( - ttsim_objects=ttsim_objects, - targets=targets, - data=data, - groupings=environment.grouping_levels, + data = dt.flatten_to_qual_names(data_tree) + data_columns = set(data.keys()) + warn_if_elements_overridden_by_data( + policy_environment=policy_environment, + data_columns=data_columns, ) - functions_overridden, functions_to_be_used = partition_by_reference_dict( - to_partition=functions, - reference_dict=data, + _flat_policy_environment_with_derived_functions_and_without_overridden_functions = ( + flat_policy_environment_with_derived_functions_and_without_overridden_functions( + data=data, + policy_environment=policy_environment, + targets_tree=targets_tree, + top_level_namespace=top_level_namespace, + ) ) - - _warn_if_functions_overridden_by_data(functions_overridden) - - functions_with_rounding_specs = ( - _add_rounding_to_functions(functions=functions_to_be_used) - if rounding - else functions_to_be_used + _column_functions_and_processed_params_and_scalars = column_functions_with_processed_params_and_scalars( + flat_policy_environment_with_derived_functions_and_without_overridden_functions=_flat_policy_environment_with_derived_functions_and_without_overridden_functions, ) - functions_with_partialled_parameters = _partial_parameters_to_functions( - functions=functions_with_rounding_specs, - params=environment.params, + _required_column_functions = required_column_functions( + policy_environment_with_processed_params_and_scalars=_column_functions_and_processed_params_and_scalars, + rounding=rounding, ) + # Super-ugly, will be refactored + all_targets = dt.qual_names(targets_tree) + function_targets = [t for t in all_targets if t in _required_column_functions] + param_targets = [ + t + for t in set(all_targets) - set(function_targets) + if t + in _flat_policy_environment_with_derived_functions_and_without_overridden_functions + ] + # Will just return these. + own_targets = set(all_targets) - set(function_targets) - set(param_targets) # noqa: F841 # Remove unnecessary elements from user-provided data. input_data = _create_input_data_for_concatenated_function( data=data, - functions=functions_with_partialled_parameters, - targets=targets, + functions=_required_column_functions, + function_targets=function_targets, ) _fail_if_group_variables_not_constant_within_groups( data=input_data, - groupings=environment.grouping_levels, + groupings=grouping_levels(policy_environment), ) - _input_data_with_p_id = { - "p_id": data["p_id"], - **input_data, - } _fail_if_foreign_keys_are_invalid_in_data( - data=_input_data_with_p_id, - ttsim_objects=ttsim_objects, + data=data, + input_data=input_data, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=_flat_policy_environment_with_derived_functions_and_without_overridden_functions, ) if debug: - targets = sorted([*targets, *functions_with_partialled_parameters.keys()]) + function_targets = sorted(_required_column_functions.keys()) - tax_transfer_function = dags.concatenate_functions( - functions=functions_with_partialled_parameters, - targets=targets, + tax_transfer_function = concatenate_functions( + functions=_required_column_functions, + targets=list(function_targets), return_type="dict", aggregator=None, enforce_signature=True, + set_annotations=False, ) if jit: @@ -161,27 +180,71 @@ def compute_taxes_and_transfers( import jax static_args = { - argname: data[argname.removesuffix("_num_segments")].max() + 1 + argname: data_tree["p_id"].max() + 1 for argname in inspect.signature(tax_transfer_function).parameters if argname.endswith("_num_segments") } tax_transfer_function = functools.partial(tax_transfer_function, **static_args) tax_transfer_function = jax.jit(tax_transfer_function) - results = tax_transfer_function(**input_data) - - result_tree = dt.unflatten_from_qual_names(results) + column_results = tax_transfer_function(**input_data) + + results_tree = dt.unflatten_from_qual_names( + { + **column_results, + **{ + pt: _column_functions_and_processed_params_and_scalars[pt] + for pt in set(dt.qual_names(targets_tree)) - set(function_targets) + }, + } + ) if debug: - result_tree = merge_trees( - left=result_tree, + results_tree = merge_trees( + left=results_tree, right=dt.unflatten_from_qual_names(input_data), ) - return result_tree + return results_tree + + +def flat_policy_environment_with_derived_functions_and_without_overridden_functions( + policy_environment: NestedPolicyEnvironment, + data: QualNameDataColumns, + targets_tree: NestedTargetDict, + top_level_namespace: set[str], +) -> QualNamePolicyEnvironment: + """Return a flat policy environment with derived functions. + + Three steps: + 1. Remove all tree logic from the policy environment. + 2. Add derived functions to the policy environment. + 3. Remove all functions that are overridden by data columns. + + """ + flat = remove_tree_logic_from_policy_environment( + policy_environment=policy_environment, + top_level_namespace=top_level_namespace, + ) + flat_with_derived = _add_derived_functions( + qual_name_policy_environment=flat, + targets=dt.qual_names(targets_tree), + data_columns=set(data.keys()), + groupings=grouping_levels(policy_environment), + ) + out = {} + for n, f in flat_with_derived.items(): + # Put scalar data into the policy environment, else skip the key + if n in data: + if isinstance(data[n], int | float | bool): + out[n] = data[n] + else: + out[n] = f + + return out def _get_top_level_namespace( - environment: PolicyEnvironment, + policy_environment: NestedPolicyEnvironment, time_units: tuple[str, ...], ) -> set[str]: """Get the top level namespace. @@ -196,15 +259,21 @@ def _get_top_level_namespace( top_level_namespace: The top level namespace. """ - direct_top_level_names = set(environment.raw_objects_tree.keys()) + + direct_top_level_names = set(policy_environment.keys()) + + # Do not create variations for lower-level namespaces. + top_level_objects_for_variations = direct_top_level_names - { + k for k, v in policy_environment.items() if isinstance(v, dict) + } + pattern_all = get_re_pattern_for_all_time_units_and_groupings( - groupings=environment.grouping_levels, + groupings=grouping_levels(policy_environment), time_units=time_units, ) - - all_top_level_names = direct_top_level_names.copy() bngs_to_variations = {} - for name in direct_top_level_names: + all_top_level_names = direct_top_level_names.copy() + for name in top_level_objects_for_variations: match = pattern_all.fullmatch(name) # We must not find multiple time units for the same base name and group. bngs = get_base_name_and_grouping_suffix(match) @@ -217,43 +286,153 @@ def _get_top_level_namespace( all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - gp = group_pattern(environment.grouping_levels) + gp = group_pattern(grouping_levels(policy_environment)) potential_base_names = {n for n in all_top_level_names if not gp.match(n)} for name in potential_base_names: - for g in environment.grouping_levels: + for g in grouping_levels(policy_environment): all_top_level_names.add(f"{name}_{g}") # Add num_segments to grouping variables - for g in environment.grouping_levels: + for g in grouping_levels(policy_environment): all_top_level_names.add(f"{g}_id_num_segments") return all_top_level_names -def remove_tree_logic_from_ttsim_objects_tree( - raw_objects_tree: NestedTTSIMObjectDict, +def remove_tree_logic_from_policy_environment( + policy_environment: NestedPolicyEnvironment, top_level_namespace: set[str], -) -> QualNameTTSIMObjectDict: - """Map qualified names to TTSIM objects without tree logic.""" - return { - name: f_or_i.remove_tree_logic( - tree_path=dt.tree_path_from_qual_name(name), - top_level_namespace=top_level_namespace, - ) - for name, f_or_i in dt.flatten_to_qual_names(raw_objects_tree).items() +) -> QualNamePolicyEnvironment: + """Map qualified names to column objects / param functions without tree logic.""" + out = {} + for name, obj in dt.flatten_to_qual_names(policy_environment).items(): + if isinstance(obj, ParamObject): + out[name] = obj + else: + out[name] = obj.remove_tree_logic( + tree_path=dt.tree_path_from_qual_name(name), + top_level_namespace=top_level_namespace, + ) + return out + + +def _add_derived_functions( + qual_name_policy_environment: QualNamePolicyEnvironment, + targets: QualNameTargetList, + data_columns: QualNameDataColumns, + groupings: tuple[str, ...], +) -> QualNameColumnFunctions: + """Return a mapping of qualified names to functions operating on columns. + + Anything that is not a ColumnFunction is filtered out (e.g., ParamFunctions, + PolicyInputs). + + Derived functions are time converted functions and aggregation functions (aggregate + by p_id or by group). + + Check that all targets have a corresponding function in the functions tree or can + be taken from the data. + + Parameters + ---------- + column_objects_param_functions + Dict with qualified function names as keys and functions with qualified + arguments as values. + targets + The list of targets with qualified names. + data + Dict with qualified data names as keys and arrays as values. + top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The qualified functions dict with derived functions. + + """ + # Create functions for different time units + time_conversion_functions = create_time_conversion_functions( + qual_name_policy_environment=qual_name_policy_environment, + data_columns=data_columns, + groupings=groupings, + ) + column_functions = { + k: v + for k, v in { + **qual_name_policy_environment, + **time_conversion_functions, + }.items() + if isinstance(v, ColumnFunction) } + # Create aggregation functions by group. + aggregate_by_group_functions = create_agg_by_group_functions( + column_functions=column_functions, + data_columns=data_columns, + targets=targets, + groupings=groupings, + ) + out = { + **qual_name_policy_environment, + **time_conversion_functions, + **aggregate_by_group_functions, + } -def _create_input_data_for_concatenated_function( - data: QualNameDataDict, - functions: QualNameTTSIMFunctionDict, + _fail_if_targets_not_in_policy_environment_or_data( + policy_environment=out, + data_columns=data_columns, + targets=targets, + ) + + return out + + +def _fail_if_targets_not_in_policy_environment_or_data( + policy_environment: QualNamePolicyEnvironment, + data_columns: QualNameDataColumns, targets: QualNameTargetList, -) -> QualNameDataDict: +) -> None: + """Fail if some target is not among functions. + + Parameters + ---------- + functions + Dictionary containing functions to build the DAG. + data_columns + The columns which are available in the data tree. + targets + The targets which should be computed. They limit the DAG in the way that only + ancestors of these nodes need to be considered. + + Raises + ------ + ValueError + Raised if any member of `targets` is not among functions. + + """ + targets_not_in_policy_environment_or_data = [ + str(dt.tree_path_from_qual_name(n)) + for n in targets + if n not in policy_environment and n not in data_columns + ] + if targets_not_in_policy_environment_or_data: + formatted = format_list_linewise(targets_not_in_policy_environment_or_data) + msg = format_errors_and_warnings( + f"The following targets have no corresponding function:\n\n{formatted}" + ) + raise ValueError(msg) + + +def _create_input_data_for_concatenated_function( + data: QualNameData, + functions: QualNameColumnFunctions, + function_targets: QualNameTargetList, +) -> QualNameData: """Create input data for the concatenated function. 1. Check that all root nodes are present in the user-provided data. 2. Get only part of the data that is needed for the concatenated function. - 3. Convert pandas.Series to numpy.array. + 3. Convert inputs to np.array Parameters ---------- @@ -271,7 +450,7 @@ def _create_input_data_for_concatenated_function( """ # Create dag using processed functions - dag = dags.create_dag(functions=functions, targets=targets) + dag = create_dag(functions=functions, targets=function_targets) # Create root nodes tree root_nodes = nx.subgraph_view( @@ -288,11 +467,66 @@ def _create_input_data_for_concatenated_function( return {k: np.array(v) for k, v in data.items() if k in root_nodes} -def _partial_parameters_to_functions( - functions: QualNameTTSIMFunctionDict, - params: dict[str, Any], -) -> QualNameTTSIMFunctionDict: - """Round and partial parameters into functions. +def _apply_rounding(element: Any) -> Any: + return ( + element.rounding_spec.apply_rounding(element) + if getattr(element, "rounding_spec", False) + else element + ) + + +def column_functions_with_processed_params_and_scalars( + flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, +) -> QualNameColumnFunctionsWithProcessedParamsAndScalars: + """Process the parameters and param functions, remove RawParams from the tree.""" + params = { + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if isinstance(v, ParamObject) + } + scalars = { + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if isinstance(v, float | int | bool) + } + param_functions = { + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if isinstance(v, ParamFunction) + } + # Construct a function for the processing of all params. + process = concatenate_functions( + functions=param_functions, + targets=None, + return_type="dict", + aggregator=None, + enforce_signature=False, + set_annotations=False, + ) + # Call the processing function. + processed_param_functions = process( + **{k: v.value for k, v in params.items()}, + **scalars, + ) + processed_params = merge_trees( + left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, + right=processed_param_functions, + ) + return { + **{ + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if not isinstance(v, RawParam) + }, + **processed_params, + } + + +def required_column_functions( + policy_environment_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, + rounding: bool, +) -> QualNameColumnFunctions: + """Partial parameters to functions such that they disappear from the DAG. Parameters ---------- @@ -307,71 +541,44 @@ def _partial_parameters_to_functions( Functions tree with parameters partialled. """ - # Partial parameters to functions such that they disappear in the DAG. - # Note: Needs to be done after rounding such that dags recognizes partialled - # parameters. processed_functions = {} - for name, function in functions.items(): - arguments = get_names_of_required_arguments(function) - partial_params = { - arg: params[key] - for arg in arguments - for key in params - if arg.endswith(f"{key}_params") - } - if partial_params: - processed_functions[name] = functools.partial(function, **partial_params) - else: - processed_functions[name] = function + for name, _func in policy_environment_with_processed_params_and_scalars.items(): + if isinstance(_func, ColumnFunction): + func = _apply_rounding(_func) if rounding else _func + partial_params = {} + for arg in [ + a + for a in get_free_arguments(func) + if not isinstance( + policy_environment_with_processed_params_and_scalars.get( + a, _DUMMY_COLUMN_OBJECT + ), + ColumnObject, + ) + ]: + partial_params[arg] = ( + policy_environment_with_processed_params_and_scalars[arg] + ) + if partial_params: + processed_functions[name] = functools.partial(func, **partial_params) + else: + processed_functions[name] = func return processed_functions -def _add_rounding_to_functions( - functions: QualNameTTSIMFunctionDict, -) -> QualNameTTSIMFunctionDict: - """Add appropriate rounding of outputs to function. - - Parameters - ---------- - functions - Functions to which rounding should be added. - - Returns - ------- - Function with rounding added. - - """ - return { - name: func.rounding_spec.apply_rounding(func) - if getattr(func, "rounding_spec", False) - else func - for name, func in functions.items() - } - - -def _fail_if_environment_not_valid(environment: Any) -> None: - """ - Validate that the environment is a PolicyEnvironment. - """ - if not isinstance(environment, PolicyEnvironment): - raise TypeError( - f"The environment must be a PolicyEnvironment, got {type(environment)}." - ) - - def _fail_if_targets_tree_not_valid(targets_tree: NestedTargetDict) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. """ assert_valid_ttsim_pytree( tree=targets_tree, - leaf_checker=lambda leaf: leaf is None, + leaf_checker=lambda leaf: isinstance(leaf, (None | str)), tree_name="targets_tree", ) -def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: +def _fail_if_data_tree_not_valid(data_tree: NestedData) -> None: """ Validate that the data tree is a dictionary with string keys and pd.Series or np.ndarray leaves. @@ -385,7 +592,7 @@ def _fail_if_data_tree_not_valid(data_tree: NestedDataDict) -> None: def _fail_if_group_variables_not_constant_within_groups( - data: QualNameDataDict, + data: QualNameData, groupings: tuple[str, ...], ) -> None: """ @@ -428,7 +635,7 @@ def _fail_if_group_variables_not_constant_within_groups( raise ValueError(msg) -def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: +def _fail_if_p_id_is_non_unique(data_tree: NestedData) -> None: """Check that pid is unique.""" p_id = data_tree.get("p_id", None) if p_id is None: @@ -453,8 +660,9 @@ def _fail_if_p_id_is_non_unique(data_tree: NestedDataDict) -> None: def _fail_if_foreign_keys_are_invalid_in_data( - data: QualNameDataDict, - ttsim_objects: QualNameTTSIMObjectDict, + data: QualNameData, + input_data: QualNameData, + flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, ) -> None: """ Check that all foreign keys are valid. @@ -464,18 +672,23 @@ def _fail_if_foreign_keys_are_invalid_in_data( """ valid_ids = set(data["p_id"].tolist()) | {-1} + relevant_objects = { + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if isinstance(v, PolicyInput | ColumnFunction) + } - for fk_name, fk in ttsim_objects.items(): + for fk_name, fk in relevant_objects.items(): if fk.foreign_key_type == FKType.IRRELEVANT: continue - elif fk_name in data: + elif fk_name in input_data: path = dt.tree_path_from_qual_name(fk_name) # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in data[fk_name].tolist()): + if not all(i in valid_ids for i in input_data[fk_name].tolist()): message = format_errors_and_warnings( f""" For {path}, the following are not a valid p_id in the input - data: {[i for i in data[fk_name] if i not in valid_ids]}. + data: {[i for i in input_data[fk_name] if i not in valid_ids]}. """ ) raise ValueError(message) @@ -483,7 +696,7 @@ def _fail_if_foreign_keys_are_invalid_in_data( if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: equal_to_pid_in_same_row = [ i - for i, j in zip(data[fk_name].tolist(), data["p_id"].tolist()) + for i, j in zip(input_data[fk_name].tolist(), data["p_id"].tolist()) if i == j ] if any(equal_to_pid_in_same_row): @@ -496,18 +709,26 @@ def _fail_if_foreign_keys_are_invalid_in_data( raise ValueError(message) -def _warn_if_functions_overridden_by_data( - functions_overridden: QualNameTTSIMFunctionDict, +def warn_if_elements_overridden_by_data( + policy_environment: NestedPolicyEnvironment, + data_columns: QualNameDataColumns, ) -> None: """Warn if functions are overridden by data.""" - if len(functions_overridden) > 0: + overridden_elements = sorted( + { + col + for col in data_columns + if col in dt.flatten_to_qual_names(policy_environment) + } + ) + if len(overridden_elements) > 0: warnings.warn( - FunctionsAndColumnsOverlapWarning(functions_overridden.keys()), + FunctionsAndDataOverlapWarning(overridden_elements), stacklevel=3, ) -class FunctionsAndColumnsOverlapWarning(UserWarning): +class FunctionsAndDataOverlapWarning(UserWarning): """ Warning that functions which compute columns overlap with existing columns. @@ -517,7 +738,7 @@ class FunctionsAndColumnsOverlapWarning(UserWarning): Names of columns in the data that override hard-coded functions. """ - def __init__(self, columns_overriding_functions: set[str]) -> None: + def __init__(self, columns_overriding_functions: list[str]) -> None: n_cols = len(columns_overriding_functions) if n_cols == 1: first_part = format_errors_and_warnings("Your data provides the column:") @@ -525,9 +746,9 @@ def __init__(self, columns_overriding_functions: set[str]) -> None: """ This is already present among the hard-coded functions of the taxes and transfers system. If you want this data column to be used instead of - calculating it within GETTSIM you need not do anything. If you want this + calculating it within TTSIM you need not do anything. If you want this data column to be calculated by hard-coded functions, remove it from the - *data* you pass to GETTSIM. You need to pick one option for each column + *data* you pass to TTSIM. You need to pick one option for each column that appears in the list above. """ ) @@ -537,24 +758,24 @@ def __init__(self, columns_overriding_functions: set[str]) -> None: """ These are already present among the hard-coded functions of the taxes and transfers system. If you want a data column to be used instead of - calculating it within GETTSIM you do not need to do anything. If you + calculating it within TTSIM you do not need to do anything. If you want data columns to be calculated by hard-coded functions, remove them - from the *data* you pass to GETTSIM. You need to pick one option for + from the *data* you pass to TTSIM. You need to pick one option for each column that appears in the list above. """ ) - formatted = format_list_linewise(list(columns_overriding_functions)) + formatted = format_list_linewise(columns_overriding_functions) how_to_ignore = format_errors_and_warnings( """ If you want to ignore this warning, add the following code to your script - before calling GETTSIM: + before calling TTSIM: import warnings - from gettsim import FunctionsAndColumnsOverlapWarning + from ttsim import FunctionsAndDataOverlapWarning warnings.filterwarnings( "ignore", - category=FunctionsAndColumnsOverlapWarning + category=FunctionsAndDataOverlapWarning ) """ ) @@ -562,8 +783,8 @@ def __init__(self, columns_overriding_functions: set[str]) -> None: def _fail_if_root_nodes_are_missing( - functions: QualNameTTSIMFunctionDict, - data: QualNameDataDict, + functions: QualNameColumnFunctions, + data: QualNameData, root_nodes: list[str], ) -> None: """Fail if root nodes are missing. @@ -585,33 +806,16 @@ def _fail_if_root_nodes_are_missing( ValueError If root nodes are missing. """ - missing_nodes = [] - - for node in root_nodes: - if node in functions: - func = functions[node] - if _func_depends_on_parameters_only(func): - # Function depends on parameters only, so it does not have to be present - # in the data tree. - continue - elif node in data or node.endswith("_num_segments"): - # Root node is present in the data tree. - continue - else: - missing_nodes.append(node) + missing_nodes = [ + node + for node in root_nodes + if node not in functions + and node not in data + and not node.endswith("_num_segments") + ] if missing_nodes: formatted = format_list_linewise( [str(dt.tree_path_from_qual_name(mn)) for mn in missing_nodes] ) raise ValueError(f"The following data columns are missing.\n{formatted}") - - -def _func_depends_on_parameters_only(func: TTSIMFunction) -> bool: - """Check if a function depends on parameters only.""" - return ( - len( - [a for a in inspect.signature(func).parameters if not a.endswith("_params")] - ) - == 0 - ) diff --git a/src/ttsim/prepare_data.py b/src/ttsim/convert_nested_data.py similarity index 58% rename from src/ttsim/prepare_data.py rename to src/ttsim/convert_nested_data.py index 2da9c41c49..35adc7814c 100644 --- a/src/ttsim/prepare_data.py +++ b/src/ttsim/convert_nested_data.py @@ -3,19 +3,53 @@ from typing import TYPE_CHECKING import dags.tree as dt +import numpy as np import optree import pandas as pd from ttsim.shared import format_errors_and_warnings, format_list_linewise if TYPE_CHECKING: - from ttsim.typing import NestedDataDict, NestedInputsPathsToDfColumns + from ttsim.typing import NestedData, NestedStrings, QualNameData -def create_data_tree_from_df( - inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, +def nested_data_to_dataframe( + nested_data_with_p_id: NestedData, + nested_data_paths_to_outputs_df_columns: NestedStrings, +) -> pd.DataFrame: + """Convert a nested data structure to a DataFrame. + + Args: + nested_data_with_p_id: + A nested data structure. + nested_data_paths_to_outputs_df_columns: + A tree that maps paths (sequence of keys) to data columns names. + + Returns: + A DataFrame. + """ + paths_to_data = dt.flatten_to_tree_paths(nested_data_with_p_id) + paths_to_column_names = dt.flatten_to_tree_paths( + nested_data_paths_to_outputs_df_columns + ) + + _fail_if_data_paths_are_missing_in_paths_to_column_names( + available_paths=list(paths_to_column_names.keys()), + required_paths=list(paths_to_data.keys()), + ) + _fail_if_incompatible_objects_in_nested_data(paths_to_data) + + p_id_array = paths_to_data.pop(("p_id",)) + return pd.DataFrame( + {paths_to_column_names[path]: data for path, data in paths_to_data.items()}, + index=pd.Index(p_id_array, name="p_id"), + ) + + +def dataframe_to_nested_data( + inputs_tree_to_df_columns: NestedStrings, df: pd.DataFrame, -) -> NestedDataDict: +) -> NestedData: """Transform a pandas DataFrame to a nested dictionary expected by TTSIM. ` Args @@ -87,14 +121,61 @@ def create_data_tree_from_df( return dt.unflatten_from_qual_names(name_to_input_series) +def _fail_if_incompatible_objects_in_nested_data( + paths_to_data: QualNameData, +) -> None: + """Fail if the nested data contains incompatible objects.""" + _numeric_types = (int, float, bool, np.integer, np.floating, np.bool_) + + faulty_paths = [] + for path, data in paths_to_data.items(): + if isinstance(data, (pd.Series, np.ndarray, list)): + if all(isinstance(item, _numeric_types) for item in data): + continue + else: + faulty_paths.append(str(path)) + elif isinstance(data, _numeric_types): + continue + else: + faulty_paths.append(str(path)) + if faulty_paths: + msg = format_errors_and_warnings( + "The data returned contains objects that cannot be cast to " + "a pandas.DataFrame column. Make sure that the requested targets return " + "scalars (int, bool, float - or their numpy equivalents) only." + "The following paths contain non-scalar objects: " + f"{format_list_linewise(faulty_paths)}" + ) + raise TypeError(msg) + + +def _fail_if_data_paths_are_missing_in_paths_to_column_names( + available_paths: list[str], + required_paths: list[str], +) -> None: + """Fail if the data paths are missing in the paths to column names.""" + missing_paths = [ + str(path) + for path in required_paths + if path not in available_paths and path != ("p_id",) + ] + if missing_paths: + msg = format_errors_and_warnings( + "Converting the nested data to a DataFrame failed because the following " + "paths are not mapped to a column name: " + f"{format_list_linewise(list(missing_paths))}" + ) + raise ValueError(msg) + + def _fail_if_mapper_has_incorrect_format( - inputs_tree_to_df_columns: NestedInputsPathsToDfColumns, + inputs_tree_to_df_columns: NestedStrings, ) -> None: """Fail if the input tree to column name mapping has an incorrect format.""" if not isinstance(inputs_tree_to_df_columns, dict): msg = format_errors_and_warnings( - """The input tree to column mapping must be a (nested) dictionary. Call - `create_input_structure` to create a template.""" + """The inputs tree to column mapping must be a (nested) dictionary. Call + `dags.tree.create_tree_with_input_types` to create a template.""" ) raise TypeError(msg) @@ -110,7 +191,7 @@ def _fail_if_mapper_has_incorrect_format( {format_list_linewise(non_string_paths)} - Call `create_input_structure` to create a template. + Call `dags.tree.create_tree_with_input_types` to create a template. """ ) raise TypeError(msg) @@ -118,7 +199,7 @@ def _fail_if_mapper_has_incorrect_format( incorrect_types = { k: type(v) for k, v in dt.flatten_to_qual_names(inputs_tree_to_df_columns).items() - if not isinstance(v, str | int | bool) + if not isinstance(v, str | int | float | bool) } if incorrect_types: formatted_incorrect_types = "\n".join( @@ -126,7 +207,7 @@ def _fail_if_mapper_has_incorrect_format( ) msg = format_errors_and_warnings( f"""Values of the input tree to column mapping must be strings, integers, - or booleans. + floats, or Booleans. Found the following incorrect types: {formatted_incorrect_types} diff --git a/src/ttsim/loader.py b/src/ttsim/loader.py index 93e61d303f..6b015e2f23 100644 --- a/src/ttsim/loader.py +++ b/src/ttsim/loader.py @@ -3,120 +3,98 @@ import importlib.util import inspect import sys -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal -import dags.tree as dt +import yaml -from ttsim.ttsim_objects import TTSIMObject +from ttsim.column_objects_param_function import ColumnObject, ParamFunction if TYPE_CHECKING: - import datetime from pathlib import Path from types import ModuleType - from ttsim.typing import FlatTTSIMObjectDict, NestedTTSIMObjectDict + from ttsim.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + OrigParamSpec, + ) -def active_ttsim_objects_tree( - resource_dir: Path, date: datetime.date -) -> NestedTTSIMObjectDict: +def orig_tree_with_column_objects_and_param_functions( + root: Path, +) -> FlatColumnObjectsParamFunctions: """ - Traverse `resource_dir` and return all TTSIMObjects for a given date. - - Parameters - ---------- - resource_dir: - The directory to traverse. - date: - The date for which policy objects should be loaded. - - Returns - ------- - A tree of active TTSIMObjects. - """ - - orig_flat_objects_tree = orig_ttsim_objects_tree(resource_dir) - - flat_objects_tree = { - (*orig_path[:-2], obj.leaf_name): obj - for orig_path, obj in orig_flat_objects_tree.items() - if obj.is_active(date) - } - - return dt.unflatten_from_tree_paths(flat_objects_tree) - - -def orig_ttsim_objects_tree(resource_dir: Path) -> FlatTTSIMObjectDict: - """ - Load the original TTSIMObjects tree from the resource directory. + Load the original ColumnObjectParamFunctions tree from the resource directory. "Original" means: - Module names are not removed from the path. - - The last path element is the TTSIMObject's original name, not the leaf name. + - The last path element is the ColumnObject's original name, not the leaf name. Parameters ---------- - resource_dir: - The resource directory to load the TTSIMObjects tree from. + root: + The resource directory to load the ColumnObjectParamFunctions tree from. """ return { k: v - for path in _find_modules_recursively(resource_dir) - for k, v in _get_orig_ttsim_objects_from_module( - path=path, root_path=resource_dir + for path in _find_files_recursively(root=root, suffix=".py") + for k, v in _tree_path_to_orig_column_objects_params_functions( + path=path, root=root ).items() } -def _get_orig_ttsim_objects_from_module( - path: Path, - root_path: Path, -) -> FlatTTSIMObjectDict: - """Extract all active PolicyFunctions and GroupByFunctions from a module. +def _find_files_recursively(root: Path, suffix: Literal[".py", ".yaml"]) -> list[Path]: + """ + Find all files with *suffix* in *root* and its subdirectories. Parameters ---------- - path - The path to the module from which to extract the active functions. - root_path - The path to the directory that contains the functions. - date - The date for which to extract the active functions. + root: + The path from which to start the search for Python files. + suffix: + The suffix of files to look for. Returns ------- - A flat tree of TTSIMObjects. + Absolute paths to all discovered files with *suffix*. """ - module = _load_module(path=path, root_path=root_path) - tree_path = path.relative_to(root_path).parts - return { - (*tree_path, name): obj - for name, obj in inspect.getmembers(module) - if isinstance(obj, TTSIMObject) - } + names_to_exclude = {"__init__.py"} + return [ + file for file in root.rglob(f"*{suffix}") if file.name not in names_to_exclude + ] -def _find_modules_recursively(root_path: Path) -> list[Path]: - """ - Find all Python files reachable from the given root path. +def _tree_path_to_orig_column_objects_params_functions( + path: Path, root: Path +) -> FlatColumnObjectsParamFunctions: + """Extract all active PolicyFunctions and GroupByFunctions from a module. Parameters ---------- - root_path: - The path from which to start the search for Python files. + path + The path to the module from which to extract the active functions. + root + The path to the directory that contains the functions. Returns ------- - Absolute paths to all discovered Python files. + A flat tree of ColumnObjectParamFunctions. """ - return [file for file in root_path.rglob("*.py") if file.name != "__init__.py"] + module = _load_module(path=path, root=root) + tree_path = path.relative_to(root).parts + return { + (*tree_path, name): obj + for name, obj in inspect.getmembers(module) + if isinstance(obj, ColumnObject | ParamFunction) + } -def _load_module(path: Path, root_path: Path) -> ModuleType: - name = path.relative_to(root_path).with_suffix("").as_posix().replace("/", ".") +def _load_module(path: Path, root: Path) -> ModuleType: + name = path.relative_to(root).with_suffix("").as_posix().replace("/", ".") spec = importlib.util.spec_from_file_location(name=name, location=path) # Assert that spec is not None and spec.loader is not None, required for mypy - _msg = f"Could not load module spec for {path}, {root_path}" + _msg = f"Could not load module spec for {path}, {root}" if spec is None: raise ImportError(_msg) assert spec.loader is not None, _msg @@ -125,3 +103,46 @@ def _load_module(path: Path, root_path: Path) -> ModuleType: spec.loader.exec_module(module) return module + + +def orig_tree_with_params(root: Path) -> FlatOrigParamSpecs: + """ + Load the original contents of yaml files found in *root*. + + "Original" means: + - Module names are not removed from the path. + - The contents of the yaml files are not parsed, just the outermost key becomes part + of the tree path + + Parameters + ---------- + root: + The resource directory to load the ColumnObjectParamFunctions tree from. + """ + return { + k: v + for path in _find_files_recursively(root=root, suffix=".yaml") + for k, v in _tree_path_to_orig_yaml_object(path=path, root=root).items() + } + + +def _tree_path_to_orig_yaml_object(path: Path, root: Path) -> FlatOrigParamSpecs: + """Extract all active PolicyFunctions and GroupByFunctions from a module. + + Parameters + ---------- + path + The path to the yaml file from which to extract parameter specifications. + root + The path to the policy environment's root directory. + + Returns + ------- + A flat tree of yaml contents. + """ + raw_contents: dict[str, OrigParamSpec] = yaml.load( + path.read_text(encoding="utf-8"), + Loader=yaml.CSafeLoader, + ) + tree_path = path.relative_to(root).parts + return {(*tree_path, name): obj for name, obj in raw_contents.items()} diff --git a/src/ttsim/param_objects.py b/src/ttsim/param_objects.py new file mode 100644 index 0000000000..95d3cd202c --- /dev/null +++ b/src/ttsim/param_objects.py @@ -0,0 +1,152 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Literal, ParamSpec, TypeVar + +if TYPE_CHECKING: + import datetime + + from ttsim.config import numpy_or_jax as np + +FunArgTypes = ParamSpec("FunArgTypes") +ReturnType = TypeVar("ReturnType") + + +@dataclass(frozen=True) +class ParamObject: + """ + Abstract base class for all types of parameters. + """ + + leaf_name: str + start_date: datetime.date + end_date: datetime.date + unit: ( + None + | Literal[ + "Euros", + "DM", + "Share", + "Percent", + "Years", + "Months", + "Hours", + "Square Meters", + "Euros / Square Meter", + ] + ) + reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] + name: dict[Literal["de", "en"], str] + description: dict[Literal["de", "en"], str] + + +@dataclass(frozen=True) +class ScalarParam(ParamObject): + """ + A scalar parameter directly read from a YAML file. + """ + + value: bool | int | float + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class DictParam(ParamObject): + """ + A parameter directly read from a YAML file that is a flat dictionary. + """ + + value: ( + dict[str, int] + | dict[str, float] + | dict[str, bool] + | dict[int, int] + | dict[int, float] + | dict[int, bool] + ) + note: str | None = None + reference: str | None = None + + def __post_init__(self) -> None: + assert all(x not in self.value for x in ["note", "reference"]) + + +@dataclass(frozen=True) +class PiecewisePolynomialParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a PiecewisePolynomialParamValue object, i.e., it contains the + parameters for calling `piecewise_polynomial`. + """ + + value: PiecewisePolynomialParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class ConsecutiveInt1dLookupTableParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a ConsecutiveInt1dLookupTableParamValue object, i.e., it contains the + parameters for calling `lookup_table`. + """ + + value: ConsecutiveInt1dLookupTableParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class ConsecutiveInt2dLookupTableParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a ConsecutiveInt2dLookupTableParamValue object, i.e., it contains the + parameters for calling `lookup_table`. + """ + + value: ConsecutiveInt2dLookupTableParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class RawParam(ParamObject): + """ + A parameter directly read from a YAML file that is an arbitrarily nested + dictionary. + """ + + value: dict[str | int, Any] + note: str | None = None + reference: str | None = None + + def __post_init__(self) -> None: + assert all(x not in self.value for x in ["note", "reference"]) + + +@dataclass(frozen=True) +class PiecewisePolynomialParamValue: + """The parameters expected by piecewise_polynomial""" + + thresholds: np.ndarray + intercepts: np.ndarray + rates: np.ndarray + + +@dataclass(frozen=True) +class ConsecutiveInt1dLookupTableParamValue: + """The parameters expected by lookup_table""" + + base_to_subtract: int + values_to_look_up: np.ndarray + + +@dataclass(frozen=True) +class ConsecutiveInt2dLookupTableParamValue: + """The parameters expected by lookup_table""" + + base_to_subtract_rows: int + base_to_subtract_cols: int + values_to_look_up: np.ndarray diff --git a/src/ttsim/params-schema.json b/src/ttsim/params-schema.json index b9a56774a1..e3b302fa9f 100644 --- a/src/ttsim/params-schema.json +++ b/src/ttsim/params-schema.json @@ -1,90 +1,104 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "patternProperties": { - "^[a-zA-Z0-9äöüßÄÖÜ_]+$": { - "type": "object", - "properties": { - "name": { - "type": "object", - "properties": { - "de": { "type": "string" }, - "en": { "type": ["string", "null"] } - }, - "required": ["de"], - "additionalProperties": false - }, - "description": { - "type": "object", - "properties": { - "de": { "type": "string" }, - "en": { "type": ["string", "null"] } - }, - "required": ["de"], - "additionalProperties": false + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "patternProperties": { + "^[a-zA-Z0-9äöüßÄÖÜ_]+$": { + "type": "object", + "properties": { + "name": { + "type": "object", + "properties": { + "de": { "type": "string" }, + "en": { "type": ["string", "null"] } }, - "unit": { - "type": ["string", "null"], - "enum": [ - "Euro", - "DM", - "Share", - "Percent", - "Factor", - "Year", - "Month", - "Hour", - "Square Meter", - "Euro / Square Meter", - null - ] - }, - "type": { - "type": "string" - }, - "reference_period": { - "type": "string", - "enum": ["Year", "Quarter", "Month", "Week", "Day"] + "required": ["de"], + "additionalProperties": false + }, + "description": { + "type": "object", + "properties": { + "de": { "type": "string" }, + "en": { "type": ["string", "null"] } }, - "access_different_date": { - "type": "string", - "enum": ["vorjahr", "jahresanfang"] - } + "required": ["de"], + "additionalProperties": false + }, + "unit": { + "type": ["string", "null"], + "enum": [ + "Euros", + "DM", + "Share", + "Percent", + "Years", + "Months", + "Hours", + "Square Meters", + "Euros / Square Meter", + null + ] + }, + "type": { + "type": "string", + "enum": [ + "scalar", + "dict", + "piecewise_constant", + "piecewise_linear", + "piecewise_quadratic", + "piecewise_cubic", + "consecutive_int_1d_lookup_table", + "consecutive_int_2d_lookup_table", + "month_based_phase_inout_of_age_thresholds", + "year_based_phase_inout_of_age_thresholds", + "require_converter" + ] }, - "patternProperties": { - "^(19|20|21)[0-9]{2}-(0[1-9]|1[0-2])-[0-3][0-9]$": { - "type": "object", - "properties": { - "scalar": { "type": ["number", "string", "null"] }, - "reference": { "type": ["string", "null"] }, - "note": { "type": ["string", "null"] }, - "deviation_from": { "type": ["string", "null"] }, - "unit": { "type": "string" }, - "type": { "type": "string" }, - "min_alter": { "type": "number" }, - "max_alter": { "type": "number" }, - "betrag": { "type": "number" }, - "lower_threshold": { - "oneOf": [ - { "type": "number" }, - { "type": "string", "enum": ["-inf"] } - ] - }, - "upper_threshold": { - "oneOf": [ - { "type": "number" }, - { "type": "string", "enum": ["inf"] } - ] - }, - "rate": { "type": "number" }, - "intercept_at_lower_threshold": { "type": "number" } + "reference_period": { + "type": ["string", "null"], + "enum": ["Year", "Quarter", "Month", "Week", "Day", "Hour", null] + }, + "add_jahresanfang": {"type": "boolean"}, + "access_different_date": { + "type": "string", + "enum": ["vorjahr", "jahresanfang"] + } + }, + "patternProperties": { + "^(19|20)[0-9]{2}-(0[1-9]|1[0-2])-[0-3][0-9]$": { + "type": "object", + "properties": { + "value": { + "oneOf": [ + { "type": ["number"] }, + { "type": "string", "enum": ["inf", "-inf"] } + ] }, - "additionalProperties": true + "reference": { "type": "string" }, + "note": { "type": "string" }, + "deviation_from": { "type": "string" } + }, + "additionalProperties": true + } + }, + "additionalProperties": false, + "allOf": [ + { "required": [ + "name", + "description", + "unit", + "reference_period", + "type" + ] + }, + { + "minProperties": 1, + "patternProperties": { + "^(19|20)[0-9]{2}-(0[1-9]|1[0-2])-[0-3][0-9]$": {} } - }, - "required": ["name", "description"], - "additionalProperties": true - } - }, - "additionalProperties": false - } + } + ] + } + }, + "additionalProperties": false +} diff --git a/src/ttsim/piecewise_polynomial.py b/src/ttsim/piecewise_polynomial.py index 5236aee46f..c117e3661a 100644 --- a/src/ttsim/piecewise_polynomial.py +++ b/src/ttsim/piecewise_polynomial.py @@ -1,16 +1,55 @@ -from typing import TypedDict +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal, get_args import numpy from ttsim.config import numpy_or_jax as np +from ttsim.param_objects import PiecewisePolynomialParamValue + +FUNC_TYPES = Literal[ + "piecewise_constant", + "piecewise_linear", + "piecewise_quadratic", + "piecewise_cubic", +] + + +@dataclass(frozen=True) +class RatesOptions: + required_keys: tuple[Literal["rate_linear", "rate_quadratic", "rate_cubic"], ...] + rates_size: int + + +OPTIONS_REGISTRY = { + "piecewise_constant": RatesOptions( + required_keys=(), + rates_size=1, + ), + "piecewise_linear": RatesOptions( + required_keys=("rate_linear",), + rates_size=1, + ), + "piecewise_quadratic": RatesOptions( + required_keys=("rate_linear", "rate_quadratic"), + rates_size=2, + ), + "piecewise_cubic": RatesOptions( + required_keys=("rate_linear", "rate_quadratic", "rate_cubic"), + rates_size=3, + ), +} + +assert set(OPTIONS_REGISTRY.keys()) == set(get_args(FUNC_TYPES)), ( + "Keys in OPTIONS_REGISTRY must match FUNC_TYPES" +) def piecewise_polynomial( x: np.ndarray, - thresholds: np.ndarray, - rates: np.ndarray, - intercepts_at_lower_thresholds: np.ndarray, - rates_multiplier: np.ndarray = 1, + parameters: PiecewisePolynomialParamValue, + rates_multiplier: np.ndarray = 1.0, ) -> np.ndarray: """Calculate value of the piecewise function at `x`. If the first interval begins at -inf the polynomial of that interval can only have slope of 0. Requesting a @@ -25,7 +64,7 @@ def piecewise_polynomial( coefficients : np.ndarray A two-dimensional array where columns are interval sections and rows correspond to the coefficient of the nth polynomial. - intercepts_at_lower_thresholds : np.ndarray + intercepts : np.ndarray The intercepts at the lower threshold of each interval. rates_multiplier : np.ndarray Multiplier to create individual or scaled rates. @@ -36,17 +75,19 @@ def piecewise_polynomial( The value of `x` under the piecewise function. """ - order = rates.shape[0] + order = parameters.rates.shape[0] # Get interval of requested value - selected_bin = np.searchsorted(thresholds, x, side="right") - 1 - coefficients = rates[:, selected_bin].T + selected_bin = np.searchsorted(parameters.thresholds, x, side="right") - 1 + coefficients = parameters.rates[:, selected_bin].T # Calculate distance from X to lower threshold increment_to_calc = np.where( - thresholds[selected_bin] == -np.inf, 0, x - thresholds[selected_bin] + parameters.thresholds[selected_bin] == -np.inf, + 0, + x - parameters.thresholds[selected_bin], ) # Evaluate polynomial at X out = ( - intercepts_at_lower_thresholds[selected_bin] + parameters.intercepts[selected_bin] + ( ((increment_to_calc.reshape(-1, 1)) ** np.arange(1, order + 1, 1)) * (coefficients) @@ -56,66 +97,60 @@ def piecewise_polynomial( def get_piecewise_parameters( - parameter_dict: dict, - parameter: str, - func_type: str, -) -> dict: + leaf_name: str, + func_type: FUNC_TYPES, + parameter_dict: dict[int, dict[str, float]], +) -> PiecewisePolynomialParamValue: """Create the objects for piecewise polynomial. Parameters ---------- parameter_dict - parameter + leaf_name func_type Returns ------- """ - # Get all interval keys. - keys = sorted(key for key in parameter_dict if isinstance(key, int)) # Check if keys are consecutive numbers and starting at 0. - if keys != list(range(len(keys))): + if sorted(parameter_dict) != list(range(len(parameter_dict))): raise ValueError( - f"The keys of {parameter} do not start with 0 or are not consecutive" + f"The keys of {leaf_name} do not start with 0 or are not consecutive" f" numbers." ) # Extract lower thresholds. lower_thresholds, upper_thresholds, thresholds = check_and_get_thresholds( - parameter_dict=parameter_dict, parameter=parameter, keys=keys + leaf_name=leaf_name, + parameter_dict=parameter_dict, ) # Create and fill rates-array rates = _check_and_get_rates( parameter_dict=parameter_dict, - parameter=parameter, - keys=keys, + leaf_name=leaf_name, func_type=func_type, ) - # Create and fill interecept-array + # Create and fill intercept-array intercepts = _check_and_get_intercepts( parameter_dict=parameter_dict, - parameter=parameter, + leaf_name=leaf_name, lower_thresholds=lower_thresholds, upper_thresholds=upper_thresholds, rates=rates, - keys=keys, ) - piecewise_elements = { - "thresholds": numpy.array(thresholds), - "rates": rates, - "intercepts_at_lower_thresholds": intercepts, - } - - return piecewise_elements + return PiecewisePolynomialParamValue( + thresholds=thresholds, + rates=rates, + intercepts=intercepts, + ) def check_and_get_thresholds( - parameter_dict: dict, - parameter: str, - keys: list[int], + leaf_name: str, + parameter_dict: dict[int, dict[str, float]], ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """Check and transfer raw threshold data. @@ -125,33 +160,34 @@ def check_and_get_thresholds( Parameters ---------- parameter_dict - parameter + leaf_name keys Returns ------- """ - lower_thresholds = numpy.zeros(len(keys)) - upper_thresholds = numpy.zeros(len(keys)) + keys = sorted(parameter_dict.keys()) + lower_thresholds = numpy.zeros(len(parameter_dict)) + upper_thresholds = numpy.zeros(len(parameter_dict)) # Check if lowest threshold exists. if "lower_threshold" not in parameter_dict[0]: raise ValueError( - f"The first piece of {parameter} needs to contain a lower_threshold value." + f"The first piece of {leaf_name} needs to contain a lower_threshold value." ) lower_thresholds[0] = parameter_dict[0]["lower_threshold"] # Check if highest upper_threshold exists. if "upper_threshold" not in parameter_dict[keys[-1]]: raise ValueError( - f"The last piece of {parameter} needs to contain an upper_threshold value." + f"The last piece of {leaf_name} needs to contain an upper_threshold value." ) upper_thresholds[keys[-1]] = parameter_dict[keys[-1]]["upper_threshold"] # Check if the function is defined on the complete real line if (upper_thresholds[keys[-1]] != numpy.inf) | (lower_thresholds[0] != -numpy.inf): - raise ValueError(f"{parameter} needs to be defined on the entire real line.") + raise ValueError(f"{leaf_name} needs to be defined on the entire real line.") for interval in keys[1:]: if "lower_threshold" in parameter_dict[interval]: @@ -160,7 +196,7 @@ def check_and_get_thresholds( lower_thresholds[interval] = parameter_dict[interval - 1]["upper_threshold"] else: raise ValueError( - f"In {interval} of {parameter} is no lower upper threshold or an upper" + f"In {interval} of {leaf_name} is no lower upper threshold or an upper" f" in the piece before." ) @@ -171,28 +207,22 @@ def check_and_get_thresholds( upper_thresholds[interval] = parameter_dict[interval + 1]["lower_threshold"] else: raise ValueError( - f"In {interval} of {parameter} is no upper threshold or a lower" + f"In {interval} of {leaf_name} is no upper threshold or a lower" f" threshold in the piece after." ) if not numpy.allclose(lower_thresholds[1:], upper_thresholds[:-1]): raise ValueError( - f"The lower and upper thresholds of {parameter} have to coincide" + f"The lower and upper thresholds of {leaf_name} have to coincide" ) thresholds = sorted([lower_thresholds[0], *upper_thresholds]) - return lower_thresholds, upper_thresholds, thresholds - - -class Options(TypedDict): - necessary_keys: list[str] - rates_size: int + return np.array(lower_thresholds), np.array(upper_thresholds), np.array(thresholds) def _check_and_get_rates( - parameter_dict: dict, - parameter: str, - keys: list[int], - func_type: str, + leaf_name: str, + func_type: FUNC_TYPES, + parameter_dict: dict[int, dict[str, float]], ) -> np.ndarray: """Check and transfer raw rates data. @@ -202,7 +232,7 @@ def _check_and_get_rates( Parameters ---------- parameter_dict - parameter + leaf_name keys func_type @@ -210,52 +240,27 @@ def _check_and_get_rates( ------- """ - options_dict = { - "quadratic": Options( - necessary_keys=["rate_linear", "rate_quadratic"], - rates_size=2, - ), - "cubic": Options( - necessary_keys=["rate_linear", "rate_quadratic", "rate_cubic"], - rates_size=3, - ), - } - # Allow for specification of rate with "rate" and "rate_linear" - if func_type == "linear": - rates = numpy.zeros((1, len(keys))) + keys = sorted(parameter_dict.keys()) + rates = numpy.zeros((OPTIONS_REGISTRY[func_type].rates_size, len(keys))) + for i, rate_type in enumerate(OPTIONS_REGISTRY[func_type].required_keys): for interval in keys: - if "rate" in parameter_dict[interval]: - rates[0, interval] = parameter_dict[interval]["rate"] - elif "rate_linear" in parameter_dict[interval]: - rates[0, interval] = parameter_dict[interval]["rate_linear"] + if rate_type in parameter_dict[interval]: + rates[i, interval] = parameter_dict[interval][rate_type] else: raise ValueError( - f"In {interval} of {parameter} there is no rate specified." + f"In interval {interval} of {leaf_name}, {rate_type} is missing." ) - elif func_type in options_dict: - rates = numpy.zeros((options_dict[func_type]["rates_size"], len(keys))) - for i, rate_type in enumerate(options_dict[func_type]["necessary_keys"]): - for interval in keys: - if rate_type in parameter_dict[interval]: - rates[i, interval] = parameter_dict[interval][rate_type] - else: - raise ValueError( - f"In {interval} of {parameter} {rate_type} is missing." - ) - else: - raise ValueError(f"Piecewise function {func_type} not specified.") - return rates + return np.array(rates) def _check_and_get_intercepts( - parameter_dict: dict, - parameter: str, + leaf_name: str, + parameter_dict: dict[int, dict[str, float]], lower_thresholds: np.ndarray, upper_thresholds: np.ndarray, rates: np.ndarray, - keys: list[int], ) -> np.ndarray: - """Check and transfer raw intercepte data. If necessary create intercepts. + """Check and transfer raw intercept data. If necessary create intercepts. Transfer and check raw rates data, which needs to be specified in a piecewise_polynomial layout in the yaml file. @@ -263,7 +268,7 @@ def _check_and_get_intercepts( Parameters ---------- parameter_dict - parameter + leaf_name lower_thresholds upper_thresholds rates @@ -273,11 +278,12 @@ def _check_and_get_intercepts( ------- """ + keys = sorted(parameter_dict.keys()) intercepts = numpy.zeros(len(keys)) count_intercepts_supplied = 1 if "intercept_at_lower_threshold" not in parameter_dict[0]: - raise ValueError(f"The first piece of {parameter} needs an intercept.") + raise ValueError(f"The first piece of {leaf_name} needs an intercept.") else: intercepts[0] = parameter_dict[0]["intercept_at_lower_threshold"] # Check if all intercepts are supplied. @@ -300,7 +306,7 @@ def _check_and_get_intercepts( intercepts = _create_intercepts( lower_thresholds, upper_thresholds, rates, intercepts[0] ) - return intercepts + return np.array(intercepts) def _create_intercepts( @@ -334,17 +340,17 @@ def _create_intercepts( ------- """ - intercepts_at_lower_thresholds = numpy.full_like(upper_thresholds, numpy.nan) - intercepts_at_lower_thresholds[0] = intercept_at_lowest_threshold + intercepts = numpy.full_like(upper_thresholds, numpy.nan) + intercepts[0] = intercept_at_lowest_threshold for i, up_thr in enumerate(upper_thresholds[:-1]): - intercepts_at_lower_thresholds[i + 1] = _calculate_one_intercept( + intercepts[i + 1] = _calculate_one_intercept( x=up_thr, lower_thresholds=lower_thresholds, upper_thresholds=upper_thresholds, rates=rates, - intercepts_at_lower_thresholds=intercepts_at_lower_thresholds, + intercepts=intercepts, ) - return intercepts_at_lower_thresholds + return np.array(intercepts) def _calculate_one_intercept( @@ -352,7 +358,7 @@ def _calculate_one_intercept( lower_thresholds: np.ndarray, upper_thresholds: np.ndarray, rates: np.ndarray, - intercepts_at_lower_thresholds: np.ndarray, + intercepts: np.ndarray, ) -> float: """Calculate the intercepts from the raw data. @@ -367,7 +373,7 @@ def _calculate_one_intercept( rates : numpy.ndarray A two-dimensional array where columns are interval sections and rows correspond to the nth polynomial. - intercepts_at_lower_thresholds : numpy.ndarray + intercepts : numpy.ndarray The intercepts at the lower threshold of each interval. Returns @@ -381,7 +387,7 @@ def _calculate_one_intercept( if (x < lower_thresholds[0]) or (x > upper_thresholds[-1]) or numpy.isnan(x): return numpy.nan index_interval = numpy.searchsorted(upper_thresholds, x, side="left") - intercept_interval = intercepts_at_lower_thresholds[index_interval] + intercept_interval = intercepts[index_interval] # Select threshold and calculate corresponding increment into interval lower_threshold_interval = lower_thresholds[index_interval] diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 6338c5d3ce..064397c747 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -1,32 +1,35 @@ +from __future__ import annotations + import functools import inspect import operator from functools import reduce +from typing import TYPE_CHECKING import dags.tree as dt import networkx as nx import numpy import pandas as pd import plotly.graph_objects as go +from dags import get_free_arguments from pygments import highlight, lexers from pygments.formatters import HtmlFormatter -from ttsim.combine_functions import ( - combine_policy_functions_and_derived_functions, -) from ttsim.compute_taxes_and_transfers import ( - _partial_parameters_to_functions, + _add_derived_functions, + required_column_functions, ) -from ttsim.policy_environment import PolicyEnvironment from ttsim.shared import ( format_list_linewise, - get_names_of_required_arguments, partition_tree_by_reference_tree, ) +if TYPE_CHECKING: + from ttsim.typing import NestedPolicyEnvironment + def plot_dag( - environment: PolicyEnvironment, + policy_environment: NestedPolicyEnvironment, targets=None, columns_overriding_functions=None, selectors=None, @@ -65,7 +68,7 @@ def plot_dag( a hover information. Sometimes, the tooltip is not properly displayed. """ - targets = build_targets_tree(fixme if targets is None else targets) # noqa: F821 + targets = build_targets_tree(TODO if targets is None else targets) # noqa: F821 if isinstance(columns_overriding_functions, dict): names_of_columns_overriding_functions = dt.flatten_to_qual_names( @@ -79,8 +82,8 @@ def plot_dag( names_of_columns_overriding_functions = columns_overriding_functions # Load functions. - all_functions = combine_policy_functions_and_derived_functions( - environment=environment, + all_functions = _add_derived_functions( + environment=policy_environment, targets=targets, data=names_of_columns_overriding_functions, ) @@ -90,7 +93,7 @@ def plot_dag( )[1] # Create parameter input structure. - input_structure = dt.create_input_structure_tree( + input_structure = dt.create_tree_with_input_types( functions=functions_not_overridden, targets=None, # None because no functions should be filtered out ) @@ -103,14 +106,21 @@ def plot_dag( input_structure=input_structure, ) - processed_functions = _partial_parameters_to_functions( - functions=partition_tree_by_reference_tree( - tree_to_partition=functions_not_overridden, reference_tree=dag.nodes - )[0], - params=environment.params, + processed_tree_with_params = _process_tree_with_params( # noqa: F821 + tree_with_params=policy_environment.tree_with_params, + param_functions={ + k: v + for k, v in column_objects_param_functions.items() # noqa: F821 + if isinstance(v, ParamFunction) # noqa: F821 + }, + ) + + processed_functions = required_column_functions( + policy_environment_with_processed_params_and_scalars=functions_with_rounding_specs, # noqa: F821 + processed_params=processed_tree_with_params, ) - input_structure = dt.create_input_structure_tree( + input_structure = dt.create_tree_with_input_types( functions=processed_functions, targets=None, ) @@ -288,13 +298,11 @@ def _mock_parameters_arguments(functions): mocked_functions = {} for name, function in functions.items(): partial_params = { - i: {} - for i in get_names_of_required_arguments(function) - if i.endswith("_params") + i: {} for i in get_free_arguments(function) if i.endswith("_params") } # Fix old functions which requested the whole dictionary. Test if removable. - if "params" in get_names_of_required_arguments(function): + if "params" in get_free_arguments(function): partial_params["params"] = {} mocked_functions[name] = ( @@ -338,10 +346,7 @@ def _add_url_to_dag(dag): def _create_url(func_name): - return ( - f"https://gettsim.readthedocs.io/en/latest/gettsim_objects" - f"/functions.html#gettsim.functions.{func_name}" - ) + raise NotImplementedError("Not implemented yet.") def _replace_functions_with_source_code(dag): diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index cedf0f80b1..781de8e48c 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -3,167 +3,129 @@ import copy import datetime import itertools -from typing import TYPE_CHECKING, Any +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Literal import dags.tree as dt import numpy import optree -import yaml -from ttsim.loader import active_ttsim_objects_tree, orig_ttsim_objects_tree -from ttsim.piecewise_polynomial import ( - check_and_get_thresholds, - get_piecewise_parameters, - piecewise_polynomial, +from ttsim.column_objects_param_function import ( + DEFAULT_END_DATE, + ColumnObject, + ParamFunction, + policy_function, +) +from ttsim.config import numpy_or_jax as np +from ttsim.loader import ( + orig_tree_with_column_objects_and_param_functions, + orig_tree_with_params, +) +from ttsim.param_objects import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt1dLookupTableParamValue, + ConsecutiveInt2dLookupTableParamValue, + DictParam, + ParamObject, + PiecewisePolynomialParam, + RawParam, + ScalarParam, ) +from ttsim.piecewise_polynomial import get_piecewise_parameters from ttsim.shared import ( assert_valid_ttsim_pytree, + merge_trees, to_datetime, - upsert_path_and_value, upsert_tree, ) -from ttsim.ttsim_objects import ( - TTSIMObject, - policy_function, -) if TYPE_CHECKING: - from collections.abc import Callable from pathlib import Path from ttsim.typing import ( DashedISOString, - FlatTTSIMObjectDict, - NestedTTSIMObjectDict, + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + GenericCallable, + NestedAny, + NestedAnyTTSIMObject, + NestedColumnObjectsParamFunctions, + NestedParamObjects, + NestedPolicyEnvironment, + OrigParamSpec, + QualNamePolicyEnvironment, ) -class PolicyEnvironment: - """ - A container for policy functions and parameters. +def grouping_levels(policy_environment: QualNamePolicyEnvironment) -> tuple[str, ...]: + """The grouping levels of the policy environment.""" + return tuple( + name.rsplit("_", 1)[0] + for name in policy_environment + if name.endswith("_id") and name != "p_id" + ) - Almost always, instances are created with `set_up_policy_environment()`. - Parameters - ---------- - raw_objects_tree - The pytree of TTSIM objects (policy inputs, policy functions, agg functions). - params - A dictionary with policy parameters. - """ +def upsert_tree_into_policy_environment( + policy_environment: NestedPolicyEnvironment, tree_to_upsert: NestedAny +) -> NestedPolicyEnvironment: + """Update and insert *tree_to_upsert* into the existing objects tree. - def __init__( - self, - raw_objects_tree: NestedTTSIMObjectDict, - params: dict[str, Any] | None = None, - ): - # Check functions tree and convert functions to PolicyFunction if necessary - assert_valid_ttsim_pytree( - tree=raw_objects_tree, - leaf_checker=lambda leaf: isinstance(leaf, TTSIMObject), - tree_name="raw_objects_tree", - ) - self._raw_objects_tree = optree.tree_map( - lambda leaf: _convert_to_policy_function_if_not_ttsim_object(leaf), - raw_objects_tree, - ) - _fail_if_group_ids_are_outside_top_level_namespace(raw_objects_tree) - - # Read in parameters and aggregation specs - self._params = params if params is not None else {} - - @property - def raw_objects_tree(self) -> NestedTTSIMObjectDict: - """The raw TTSIM objects including policy_inputs. - - Does not include aggregations or time conversions. - """ - return self._raw_objects_tree - - @property - def params(self) -> dict[str, Any]: - """The parameters of the policy environment.""" - return self._params - - @property - def grouping_levels(self) -> tuple[str, ...]: - """The grouping levels of the policy environment.""" - return tuple( - name.rsplit("_", 1)[0] - for name in self._raw_objects_tree.keys() # noqa: SIM118 - if name.endswith("_id") and name != "p_id" - ) + Adds to or overwrites elements of the policy environment. Note that this + method does not modify the current policy environment but returns a new one. - def upsert_objects( - self, tree_to_upsert: NestedTTSIMObjectDict - ) -> PolicyEnvironment: - """Upsert GETTSIM's function tree with (parts of) a new TTSIM objects tree. + Parameters + ---------- + policy_environment + The policy environment to update. + tree_to_upsert + The functions to add or overwrite. Plain functions are converted to + PolicyFunctions. If you need `param_functions`, you will need to + decorate them with `@param_function`. - Adds to or overwrites TTSIM objects of the policy environment. Note that this - method does not modify the current policy environment but returns a new one. + Returns + ------- + The policy environment with the upserted functions. + """ - Parameters - ---------- + tree_to_upsert_with_correct_types = convert_plain_functions_to_policy_functions( tree_to_upsert - The functions to add or overwrite. - - Returns - ------- - The policy environment with the upserted functions. - """ - - tree_to_upsert_with_correct_types = optree.tree_map( - lambda leaf: _convert_to_policy_function_if_not_ttsim_object(leaf), - tree_to_upsert, - ) - _fail_if_name_of_last_branch_element_not_leaf_name_of_function( - tree_to_upsert_with_correct_types - ) - - # Add functions tree to upsert to new functions tree - new_tree = upsert_tree( - base={**self._raw_objects_tree}, - to_upsert=tree_to_upsert_with_correct_types, - ) - - _fail_if_group_ids_are_outside_top_level_namespace(new_tree) + ) + fail_if_name_of_last_branch_element_not_leaf_name_of_function( + tree_to_upsert_with_correct_types + ) - result = object.__new__(PolicyEnvironment) - result._raw_objects_tree = new_tree # noqa: SLF001 - result._params = self._params # noqa: SLF001 + # Add functions tree to upsert to new functions tree + new_environment = upsert_tree( + base=policy_environment, + to_upsert=tree_to_upsert_with_correct_types, + ) - return result + fail_if_group_ids_are_outside_top_level_namespace(new_environment) - def replace_all_parameters(self, params: dict[str, Any]) -> PolicyEnvironment: - """ - Replace all parameters of the policy environment. Note that this - method does not modify the current policy environment but returns a new one. + return new_environment - Parameters - ---------- - params: - The new parameters. - Returns - ------- - The policy environment with the new parameters. - """ - result = object.__new__(PolicyEnvironment) - result._raw_objects_tree = self._raw_objects_tree # noqa: SLF001 - result._params = params # noqa: SLF001 +@dataclass(frozen=True) +class OrigTreesWithFileNames: + """ + A container for the original trees of policy functions, policy inputs, + param functions and parameters. + """ - return result + column_objects_and_param_functions: FlatColumnObjectsParamFunctions + params: FlatOrigParamSpecs def set_up_policy_environment( - resource_dir: Path, date: datetime.date | DashedISOString -) -> PolicyEnvironment: + root: Path, date: datetime.date | DashedISOString +) -> NestedPolicyEnvironment: """ Set up the policy environment for a particular date. Parameters ---------- - resource_dir + root The directory to load the policy environment from. date The date for which the policy system is set up. An integer is @@ -176,487 +138,556 @@ def set_up_policy_environment( # Check policy date for correct format and convert to datetime.date date = to_datetime(date) + orig_trees = OrigTreesWithFileNames( + column_objects_and_param_functions=orig_tree_with_column_objects_and_param_functions( + root + ), + params=orig_tree_with_params(root), + ) # Will move this line out eventually. Just include in tests, do not run every time. - fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - orig_ttsim_objects_tree=orig_ttsim_objects_tree(resource_dir) + fail_because_active_periods_overlap(orig_trees) + + a_tree = active_tree(orig_trees=orig_trees, date=date) + assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" + a_tree["evaluationsjahr"] = ScalarParam( + leaf_name="evaluationsjahr", + start_date=date, + end_date=date, + value=date.year, + name={"de": "Evaluationsjahr. Implementation wird noch verbessert."}, + description={"de": "Der Zeitpunkt, für den die Berechnung durchgeführt wird."}, + unit="Year", + reference_period=None, + note=None, + reference=None, ) + fail_if_group_ids_are_outside_top_level_namespace(a_tree) + return a_tree - params = {} - if "_gettsim" in resource_dir.name: - from _gettsim.config import ( - INTERNAL_PARAMS_GROUPS as internal_params_groups, # noqa: N811 - ) - else: - internal_params_groups = [ - "payroll_tax", - "housing_benefits", - ] - for group in internal_params_groups: - params_one_group = _load_parameter_group_from_yaml( - date=date, - group=group, - parameters=None, - yaml_path=resource_dir / "parameters", - ) - # Align parameters for piecewise polynomial functions - params[group] = _parse_piecewise_parameters(params_one_group) +def convert_plain_functions_to_policy_functions( + tree: NestedAny, +) -> NestedAnyTTSIMObject: + """Convert all plain functions in a tree to PolicyFunctions. - if "_gettsim" in resource_dir.name: - # Extend dictionary with date-specific values which do not need an own function - params = _parse_kinderzuschl_max(date, params) - params = _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005( - date, params - ) - params = _parse_vorsorgepauschale_rentenv_anteil(date, params) + Convenience function if users do not want to apply decorators in modifications of + the taxes and transfers system. - return PolicyEnvironment( - raw_objects_tree=active_ttsim_objects_tree( - resource_dir=resource_dir, date=date - ), - params=params, + Parameters + ---------- + tree + The tree of functions to convert. + + Returns + ------- + converted_tree + The converted tree. + + """ + converted = optree.tree_map( + lambda leaf: _convert_to_policy_function_if_callable(leaf), + tree, ) + return converted -def fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - orig_ttsim_objects_tree: FlatTTSIMObjectDict, -) -> None: - """Check overlapping time periods of TTSIMObjects. +def _convert_to_policy_function_if_callable( + obj: ColumnObject | ParamFunction | GenericCallable | Any, +) -> ColumnObject: + """Convert a Callable to a PolicyFunction if it is not already a ColumnObject or + ParamFunction. If it is not a Callable, return it unchanged. + + Parameters + ---------- + obj + The object to convert. + + Returns + ------- + converted_object + The converted object. + + """ + if isinstance(obj, (ColumnObject, ParamFunction)) or not callable(obj): + converted_object = obj + else: + converted_object = policy_function(leaf_name=obj.__name__)(obj) + + return converted_object + + +def fail_because_active_periods_overlap(orig_trees: OrigTreesWithFileNames) -> None: + """Fail because active periods of objects / parameters overlap. + + Checks that objects or parameters with the same tree path / qualified name are not + active at the same time. Raises ------ - ConflictingTimeDependentObjectsError - If multiple objects with the same leaf name are active at the same time. + ConflictingActivePeriodsError + If multiple objects and/or parameters with the same leaf name are active at the + same time. """ - # Create mapping from leaf names to objects. - checker: dict[tuple[str, ...], list[TTSIMObject]] = {} - for orig_path, obj in orig_ttsim_objects_tree.items(): + overlap_checker: dict[ + tuple[str, ...], list[ColumnObject | ParamFunction | _ParamWithActivePeriod] + ] = {} + for orig_path, obj in orig_trees.column_objects_and_param_functions.items(): path = (*orig_path[:-2], obj.leaf_name) - if path in checker: - checker[path].append(obj) + if path in overlap_checker: + overlap_checker[path].append(obj) + else: + overlap_checker[path] = [obj] + + for orig_path, obj in orig_trees.params.items(): + path = (*orig_path[:-2], orig_path[-1]) + if path in overlap_checker: + overlap_checker[path].extend( + _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]) + ) else: - checker[path] = [obj] + overlap_checker[path] = _param_with_active_periods( + param_spec=obj, leaf_name=orig_path[-1] + ) # Check for overlapping start and end dates for time-dependent functions. - for path, objects in checker.items(): - dates_active = [(f.start_date, f.end_date) for f in objects] - for (start1, end1), (start2, end2) in itertools.combinations(dates_active, 2): + for path, objects in overlap_checker.items(): + active_period = [(f.start_date, f.end_date) for f in objects] + for (start1, end1), (start2, end2) in itertools.combinations(active_period, 2): if start1 <= end2 and start2 <= end1: - raise ConflictingTimeDependentObjectsError( - affected_ttsim_objects=objects, + raise ConflictingActivePeriodsError( + affected_column_objects=objects, path=path, overlap_start=max(start1, start2), overlap_end=min(end1, end2), ) -class ConflictingTimeDependentObjectsError(Exception): - def __init__( - self, - affected_ttsim_objects: list[TTSIMObject], - path: tuple[str, ...], - overlap_start: datetime.date, - overlap_end: datetime.date, - ) -> None: - self.affected_ttsim_objects = affected_ttsim_objects - self.path = path - self.overlap_start = overlap_start - self.overlap_end = overlap_end - - def __str__(self) -> str: - overlapping_objects = [ - obj.__getattribute__("original_function_name") - for obj in self.affected_ttsim_objects - if obj - ] - return f""" - Functions with path - - {self.path} - - have overlapping start and end dates. The following functions are affected: - - { - ''' - '''.join(overlapping_objects) - } - - Overlap from {self.overlap_start} to {self.overlap_end}.""" +def active_tree( + orig_trees: OrigTreesWithFileNames, date: datetime.date +) -> NestedPolicyEnvironment: + return merge_trees( + left=active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions=orig_trees.column_objects_and_param_functions, + date=date, + ), + right=active_tree_with_params( + orig_tree_with_params=orig_trees.params, date=date + ), + ) -def _convert_to_policy_function_if_not_ttsim_object( - input_object: Callable | TTSIMObject, -) -> TTSIMObject: - """Convert an object to a PolicyFunction if it is not already a TTSIMObject. +def active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, + date: datetime.date, +) -> NestedColumnObjectsParamFunctions: + """ + Traverse `root` and return all ColumnObjectParamFunctions for a given date. Parameters ---------- - input_object - The object to convert. + root: + The directory to traverse. + date: + The date for which policy objects should be loaded. Returns ------- - converted_object - The converted object. - + A tree of active ColumnObjectParamFunctions. """ - if isinstance(input_object, TTSIMObject): - converted_object = input_object - else: - converted_object = policy_function(leaf_name=input_object.__name__)( - input_object - ) - - return converted_object - -def _fail_if_group_ids_are_outside_top_level_namespace( - raw_objects_tree: NestedTTSIMObjectDict, -) -> None: - """Fail if group ids are outside the top level namespace.""" - group_ids_outside_top_level_namespace = { - tree_path - for tree_path in dt.flatten_to_tree_paths(raw_objects_tree) - if len(tree_path) > 1 and tree_path[-1].endswith("_id") + flat_objects_tree = { + (*orig_path[:-2], obj.leaf_name): obj + for orig_path, obj in orig_tree_with_column_objects_and_param_functions.items() + if obj.is_active(date) } - if group_ids_outside_top_level_namespace: - raise ValueError( - "Group identifiers must live in the top-level namespace. Got:\n\n" - f"{group_ids_outside_top_level_namespace}\n\n" - "To fix this error, move the group identifiers to the top-level namespace." - ) + return dt.unflatten_from_tree_paths(flat_objects_tree) -def _parse_piecewise_parameters(tax_data: dict[str, Any]) -> dict[str, Any]: - """Check if parameters are stored in implicit structures and align to general - structure. - Parameters - ---------- - tax_data - Loaded raw tax data. - - Returns - ------- - Parsed parameters ready to use in gettsim. +@dataclass(frozen=True) +class _ParamWithActivePeriod(ParamObject): + """A ParamObject object which mimics a ColumnObject regarding active periods. + Only used here for checking overlap. """ - for param in tax_data: # noqa: PLC0206 - if isinstance(tax_data[param], dict): - if "type" in tax_data[param]: - if tax_data[param]["type"].startswith("piecewise"): - if "progressionsfaktor" in tax_data[param]: - if tax_data[param]["progressionsfaktor"]: - tax_data[param] = add_progressionsfaktor( - tax_data[param], param - ) - tax_data[param] = get_piecewise_parameters( - tax_data[param], - param, - func_type=tax_data[param]["type"].split("_")[1], - ) - for key in ["type", "progressionsfaktor"]: - tax_data[param].pop(key, None) - - return tax_data - -def _parse_kinderzuschl_max( - date: datetime.date, params: dict[str, Any] -) -> dict[str, Any]: - """Prior to 2021, the maximum amount of the Kinderzuschlag was specified directly in - the laws and directives. + original_function_name: str - In 2021, 2022, and from 2024 on, this measure has been derived from - subsistence levels. This function implements that calculation. - For 2023 the amount is once again explicitly specified as a parameter. - - Parameters - ---------- - date - The date for which the policy parameters are set up. - params - A dictionary with parameters from the policy environment. +def _param_with_active_periods( + param_spec: OrigParamSpec, + leaf_name: str, +) -> list[_ParamWithActivePeriod]: + """Return parameter with active periods.""" - Returns - ------- - updated dictionary + def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, Any]: + """Remove note and reference from a parameter specification.""" + entry.pop("note", None) + entry.pop("reference", None) + return entry - """ + relevant = sorted( + [key for key in param_spec if isinstance(key, datetime.date)], + reverse=True, + ) + if not relevant: + raise ValueError(f"No relevant dates found for {param_spec}") + + params_header = { + "name": param_spec["name"], + "description": param_spec["description"], + "unit": param_spec["unit"], + "reference_period": param_spec["reference_period"], + } + out = [] + start_date: datetime.date | None = None + end_date = DEFAULT_END_DATE + for date in relevant: + if _remove_note_and_reference(param_spec[date]): + start_date = date + else: + if start_date: + out.append( + _ParamWithActivePeriod( + leaf_name=leaf_name, + start_date=start_date, + end_date=end_date, + original_function_name=leaf_name, + **params_header, + ) + ) + start_date = None + end_date = date - datetime.timedelta(days=1) + if start_date: + out.append( + _ParamWithActivePeriod( + leaf_name=leaf_name, + original_function_name=leaf_name, + start_date=start_date, + end_date=end_date, + **params_header, + ) + ) - if 2023 > date.year >= 2021: - assert {"kinderzuschl", "kindergeld"} <= params.keys() - params["kinderzuschl"]["maximum"] = ( - params["kinderzuschl"]["existenzminimum"]["regelsatz"]["kinder"] - + params["kinderzuschl"]["existenzminimum"]["kosten_der_unterkunft"][ - "kinder" - ] - + params["kinderzuschl"]["existenzminimum"]["heizkosten"]["kinder"] - ) / 12 - params["kindergeld"]["kindergeld"][1] + return out - return params +def active_tree_with_params( + orig_tree_with_params: FlatOrigParamSpecs, + date: datetime.date, +) -> NestedParamObjects: + """Parse the original yaml tree.""" + flat_tree_with_params = {} + for orig_path, orig_params_spec in orig_tree_with_params.items(): + path_to_keep = orig_path[:-2] + leaf_name = orig_path[-1] + param = get_one_param( + leaf_name=leaf_name, + spec=orig_params_spec, + date=date, + ) + if param is not None: + flat_tree_with_params[(*path_to_keep, leaf_name)] = param + if orig_params_spec.get("add_jahresanfang", False): + date_jan1 = date.replace(month=1, day=1) + leaf_name_jan1 = f"{leaf_name}_jahresanfang" + param = get_one_param( + leaf_name=leaf_name_jan1, + spec=orig_params_spec, + date=date_jan1, + ) + if param is not None: + flat_tree_with_params[(*path_to_keep, leaf_name_jan1)] = param + return dt.unflatten_from_tree_paths(flat_tree_with_params) -def _parse_einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005( - date: datetime.date, params: dict[str, Any] -) -> dict[str, Any]: - """Calculate introductory factor for pension expense deductions which depends on the - current year as follows: - In the years 2005-2025 the share of deductible contributions increases by - 2 percentage points each year from 60% in 2005 to 100% in 2025. +def get_one_param( # noqa: PLR0911 + leaf_name: str, + spec: OrigParamSpec, + date: datetime.date, +) -> ParamObject: + """Parse the original specification found in the yaml tree to a ParamObject.""" + cleaned_spec = _clean_one_param_spec(leaf_name=leaf_name, spec=spec, date=date) + + if cleaned_spec is None: + return None + elif spec["type"] == "scalar": + return ScalarParam(**cleaned_spec) + elif spec["type"] == "dict": + return DictParam(**cleaned_spec) + elif spec["type"].startswith("piecewise_"): + cleaned_spec["value"] = get_piecewise_parameters( + leaf_name=leaf_name, + func_type=spec["type"], + parameter_dict=cleaned_spec["value"], + ) + return PiecewisePolynomialParam(**cleaned_spec) + elif spec["type"] == "consecutive_int_1d_lookup_table": + cleaned_spec["value"] = get_consecutive_int_1d_lookup_table_param_value( + cleaned_spec["value"] + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + elif spec["type"] == "consecutive_int_2d_lookup_table": + cleaned_spec["value"] = get_consecutive_int_2d_lookup_table_param_value( + cleaned_spec["value"] + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + elif spec["type"] == "month_based_phase_inout_of_age_thresholds": + cleaned_spec["value"] = ( + get_month_based_phase_inout_of_age_thresholds_param_value( + cleaned_spec["value"] + ) + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + elif spec["type"] == "year_based_phase_inout_of_age_thresholds": + cleaned_spec["value"] = ( + get_year_based_phase_inout_of_age_thresholds_param_value( + cleaned_spec["value"] + ) + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + elif spec["type"] == "require_converter": + return RawParam(**cleaned_spec) + else: + raise ValueError(f"Unknown parameter type: {spec['type']} for {leaf_name}") + + +def _clean_one_param_spec( + leaf_name: str, spec: OrigParamSpec, date: datetime.date +) -> dict[str, Any] | None: + """Prepare the specification of one parameter for creating a ParamObject.""" + policy_dates = numpy.sort([key for key in spec if isinstance(key, datetime.date)]) + idx = numpy.searchsorted(policy_dates, date, side="right") # type: ignore[call-overload] + if idx == 0: + return None + + out: dict[str, Any] = {} + out["leaf_name"] = leaf_name + out["start_date"] = policy_dates[idx - 1] + out["end_date"] = ( + policy_dates[idx] - datetime.timedelta(days=1) + if len(policy_dates) > idx + else DEFAULT_END_DATE + ) + out["unit"] = spec.get("unit", None) + out["reference_period"] = spec.get("reference_period", None) + out["name"] = spec["name"] + out["description"] = spec["description"] + current_spec = copy.deepcopy(spec[policy_dates[idx - 1]]) + out["note"] = current_spec.pop("note", None) + out["reference"] = current_spec.pop("reference", None) + if len(current_spec) == 0: + return None + elif len(current_spec) == 1 and "updates_previous" in current_spec: + raise ValueError( + f"'updates_previous' cannot be specified as the only element, found{spec}" + ) + # Parameter ceased to exist + elif spec["type"] == "scalar": + assert "updates_previous" not in current_spec, ( + "'updates_previous' cannot be specified for scalar parameters" + ) + out["value"] = current_spec["value"] + else: + out["value"] = _get_param_value([spec[d] for d in policy_dates[:idx]]) + return out - Reference: § 10 Abs. 1 Nr. 2 Buchst. a und b EStG - Parameters - ---------- - date - The date for which the policy parameters are set up. - params - A dictionary with parameters from the policy environment. +def _get_param_value( + relevant_specs: list[dict[str | int, Any]], +) -> dict[str | int, Any]: + """Get the value of a parameter. - Returns - ------- - Updated dictionary. + Implementation is a recursion in order to handle the 'updates_previous' machinery. """ - jahr = date.year - if jahr >= 2005: - out = piecewise_polynomial( - jahr, - thresholds=params["eink_st_abzuege"]["einführungsfaktor"]["thresholds"], - rates=params["eink_st_abzuege"]["einführungsfaktor"]["rates"], - intercepts_at_lower_thresholds=params["eink_st_abzuege"][ - "einführungsfaktor" - ]["intercepts_at_lower_thresholds"], + current_spec = relevant_specs[-1].copy() + updates_previous = current_spec.pop("updates_previous", False) + current_spec.pop("note", None) + current_spec.pop("reference", None) + if updates_previous: + assert len(relevant_specs) > 1, ( + "'updates_previous' cannot be missing in the initial spec, found " + f"{relevant_specs}" ) - params["eink_st_abzuege"][ - "einführungsfaktor_vorsorgeaufwendungen_alter_ab_2005" - ] = out - return params - + return upsert_tree( + base=_get_param_value(relevant_specs=relevant_specs[:-1]), + to_upsert=current_spec, + ) + else: + return current_spec -def _parse_vorsorgepauschale_rentenv_anteil( - date: datetime.date, params: dict[str, Any] -) -> dict[str, Any]: - """Calculate the share of pension contributions to be deducted for Lohnsteuer - increases by year. - Parameters - ---------- - date - The date for which the policy parameters are set up. - params - A dictionary with parameters from the policy environment. +def get_consecutive_int_1d_lookup_table_param_value( + raw: dict[int, float | int | bool], +) -> ConsecutiveInt1dLookupTableParamValue: + """Get the parameters for a 1-dimensional lookup table.""" + lookup_keys = numpy.asarray(sorted(raw)) + assert (lookup_keys - min(lookup_keys) == np.arange(len(lookup_keys))).all(), ( + "Dictionary keys must be consecutive integers." + ) - Returns - ------- - out + return ConsecutiveInt1dLookupTableParamValue( + base_to_subtract=min(lookup_keys), + values_to_look_up=np.asarray([raw[k] for k in lookup_keys]), + ) - """ - jahr = date.year - if jahr >= 2005: - out = piecewise_polynomial( - jahr, - thresholds=params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"][ - "thresholds" - ], - rates=params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"][ - "rates" - ], - intercepts_at_lower_thresholds=params["eink_st_abzuege"][ - "vorsorgepauschale_rentenv_anteil" - ]["intercepts_at_lower_thresholds"], +def get_consecutive_int_2d_lookup_table_param_value( + raw: dict[int, dict[int, float | int | bool]], +) -> ConsecutiveInt2dLookupTableParamValue: + """Get the parameters for a 2-dimensional lookup table.""" + lookup_keys_rows = numpy.asarray(sorted(raw.keys())) + lookup_keys_cols = numpy.asarray(sorted(raw[lookup_keys_rows[0]].keys())) + for col_value in raw.values(): + lookup_keys_this_col = numpy.asarray(sorted(col_value.keys())) + assert (lookup_keys_cols == lookup_keys_this_col).all(), ( + "Column keys must be the same in each column, got:" + f"{lookup_keys_cols} and {lookup_keys_this_col}" ) - params["eink_st_abzuege"]["vorsorgepauschale_rentenv_anteil"] = out - - return params + for lookup_keys in lookup_keys_rows, lookup_keys_cols: + assert (lookup_keys - min(lookup_keys) == np.arange(len(lookup_keys))).all(), ( + f"Dictionary keys must be consecutive integers, got: {lookup_keys}" + ) + return ConsecutiveInt2dLookupTableParamValue( + base_to_subtract_rows=min(lookup_keys_rows), + base_to_subtract_cols=min(lookup_keys_cols), + values_to_look_up=np.array( + [ + raw[row][col] + for row, col in itertools.product(lookup_keys_rows, lookup_keys_cols) + ] + ).reshape(len(lookup_keys_rows), len(lookup_keys_cols)), + ) -def _load_parameter_group_from_yaml( - date: datetime.date, - group: str, - yaml_path: Path, - parameters: list[str] | None = None, -) -> dict[str, Any]: - """Load data from raw yaml group file. +def _year_fraction(r: dict[Literal["years", "months"], int]) -> float: + return r["years"] + r["months"] / 12 - Parameters - ---------- - date - The date for which the policy system is set up. - group - Policy system compartment. - parameters - List of parameters to be loaded. Only relevant for in function calls. - yaml_path - Path to directory of yaml_file. (Used for testing of this function). - Returns - ------- - Dictionary of parameters loaded from raw yaml file and striped of unnecessary keys. +def get_month_based_phase_inout_of_age_thresholds_param_value( + raw: dict[str | int, Any], +) -> dict[int, float]: + """Get the parameters for month-based phase-in/phase-out of age thresholds. + Fills up months for which no parameters are given with the last given value. """ - def subtract_years_from_date(date: datetime.date, years: int) -> datetime.date: - """Subtract one or more years from a date object.""" - try: - date = date.replace(year=date.year - years) - - # Take care of leap years - except ValueError: - date = date.replace(year=date.year - years, day=date.day - 1) - return date + def _m_since_ad(y: int, m: int) -> int: + return y * 12 + (m - 1) + + def _fill_phase_inout( + raw: dict[int, dict[int, dict[Literal["years", "months"], int]]], + first_m_since_ad_phase_inout: int, + last_m_since_ad_phase_inout: int, + ) -> dict[int, float]: + lookup_table = {} + for y, m_dict in raw.items(): + for m, v in m_dict.items(): + lookup_table[_m_since_ad(y=y, m=m)] = _year_fraction(v) + for m in range(first_m_since_ad_phase_inout, last_m_since_ad_phase_inout): + if m not in lookup_table: + lookup_table[m] = lookup_table[m - 1] + return lookup_table + + first_m_since_ad_to_consider = _m_since_ad(y=raw.pop("first_year_to_consider"), m=1) + last_m_since_ad_to_consider = _m_since_ad(y=raw.pop("last_year_to_consider"), m=12) + assert all(isinstance(k, int) for k in raw) + first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] + first_month_phase_inout: int = min(raw[first_year_phase_inout].keys()) + first_m_since_ad_phase_inout = _m_since_ad( + y=first_year_phase_inout, m=first_month_phase_inout + ) + last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] + last_month_phase_inout: int = max(raw[last_year_phase_inout].keys()) + last_m_since_ad_phase_inout = _m_since_ad( + y=last_year_phase_inout, m=last_month_phase_inout + ) + assert first_m_since_ad_to_consider <= first_m_since_ad_phase_inout + assert last_m_since_ad_to_consider >= last_m_since_ad_phase_inout + before_phase_inout: dict[int, float] = { + b_m: _year_fraction(raw[first_year_phase_inout][first_month_phase_inout]) + for b_m in range(first_m_since_ad_to_consider, first_m_since_ad_phase_inout) + } + during_phase_inout: dict[int, float] = _fill_phase_inout( + raw=raw, # type: ignore[arg-type] + first_m_since_ad_phase_inout=first_m_since_ad_phase_inout, + last_m_since_ad_phase_inout=last_m_since_ad_phase_inout, + ) + after_phase_inout: dict[int, float] = { + b_m: _year_fraction(raw[last_year_phase_inout][last_month_phase_inout]) + for b_m in range( + last_m_since_ad_phase_inout + 1, last_m_since_ad_to_consider + 1 + ) + } + return get_consecutive_int_1d_lookup_table_param_value( + {**before_phase_inout, **during_phase_inout, **after_phase_inout} + ) - def set_date_to_beginning_of_year(date: datetime.date) -> datetime.date: - """Set date to the beginning of the year.""" - date = date.replace(month=1, day=1) +def get_year_based_phase_inout_of_age_thresholds_param_value( + raw: dict[str | int, Any], +) -> dict[int, float]: + """Get the parameters for year-based phase-in/phase-out of age thresholds. - return date + Requires all years to be given. + """ - raw_group_data = yaml.load( - (yaml_path / f"{group}.yaml").read_text(encoding="utf-8"), - Loader=yaml.CLoader, + first_year_to_consider = raw.pop("first_year_to_consider") + last_year_to_consider = raw.pop("last_year_to_consider") + assert all(isinstance(k, int) for k in raw) + first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] + last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] + assert first_year_to_consider <= first_year_phase_inout + assert last_year_to_consider >= last_year_phase_inout + before_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[first_year_phase_inout]) + for b_y in range(first_year_to_consider, first_year_phase_inout) + } + during_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[b_y]) # type: ignore[misc] + for b_y in raw + } + after_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[last_year_phase_inout]) + for b_y in range(last_year_phase_inout + 1, last_year_to_consider + 1) + } + return get_consecutive_int_1d_lookup_table_param_value( + {**before_phase_inout, **during_phase_inout, **after_phase_inout} ) - # Load parameters (exclude 'rounding' parameters which are handled at the - # end of this function) - not_trans_keys = ["note", "reference", "deviation_from", "access_different_date"] - out_params = {} - if not parameters: - parameters = [k for k in raw_group_data if k != "rounding"] - - # Load values of all parameters at the specified date - for param in parameters: - policy_dates = sorted( - key for key in raw_group_data[param] if isinstance(key, datetime.date) - ) - past_policies = [d for d in policy_dates if d <= date] - - if not past_policies: - # If no policy exists, then we check if the policy maybe agrees right now - # with another one. - # Otherwise, do not create an entry for this parameter. - min_policy_date = numpy.array(policy_dates).min() - if "deviation_from" in raw_group_data[param][min_policy_date]: - future_policy = raw_group_data[param][min_policy_date] - if "." in future_policy["deviation_from"]: - path_list = future_policy["deviation_from"].split(".") - params_temp = _load_parameter_group_from_yaml( - date=date, - group=path_list[0], - parameters=[path_list[1]], - yaml_path=yaml_path, - ) - if path_list[1] in params_temp: - out_params[param] = params_temp[path_list[1]] - - else: - max_past_policy_date = numpy.array(past_policies).max() - policy_in_place = raw_group_data[param][max_past_policy_date] - if "scalar" in policy_in_place: - if policy_in_place["scalar"] == "inf": - out_params[param] = numpy.inf - else: - out_params[param] = policy_in_place["scalar"] - else: - out_params[param] = {} - # Keys which if given are transferred - add_trans_keys = ["type", "progressionsfaktor"] - for key in add_trans_keys: - if key in raw_group_data[param]: - out_params[param][key] = raw_group_data[param][key] - value_keys = ( - key for key in policy_in_place if key not in not_trans_keys - ) - if "deviation_from" in policy_in_place: - if policy_in_place["deviation_from"] == "previous": - new_date = max_past_policy_date - datetime.timedelta(days=1) - out_params[param] = _load_parameter_group_from_yaml( - new_date, group, parameters=[param], yaml_path=yaml_path - )[param] - elif "." in policy_in_place["deviation_from"]: - path_list = policy_in_place["deviation_from"].split(".") - out_params[param] = _load_parameter_group_from_yaml( - date, - path_list[0], - parameters=[path_list[1]], - yaml_path=yaml_path, - )[path_list[1]] - for key in value_keys: - key_list: list[str] = [] - out_params[param][key] = transfer_dictionary( - policy_in_place[key], - copy.deepcopy(out_params[param][key]), - key_list, - ) - else: - for key in value_keys: - out_params[param][key] = policy_in_place[key] - - # Also load earlier parameter values if this is specified in yaml - if "access_different_date" in raw_group_data[param]: - if raw_group_data[param]["access_different_date"] == "vorjahr": - date_last_year = subtract_years_from_date(date, years=1) - params_last_year = _load_parameter_group_from_yaml( - date_last_year, group, parameters=[param], yaml_path=yaml_path - ) - if param in params_last_year: - out_params[f"{param}_vorjahr"] = params_last_year[param] - elif raw_group_data[param]["access_different_date"] == "jahresanfang": - date_beginning_of_year = set_date_to_beginning_of_year(date) - if date_beginning_of_year == date: - out_params[f"{param}_jahresanfang"] = out_params[param] - else: - params_beginning_of_year = _load_parameter_group_from_yaml( - date_beginning_of_year, - group, - parameters=[param], - yaml_path=yaml_path, - ) - if param in params_beginning_of_year: - out_params[f"{param}_jahresanfang"] = ( - params_beginning_of_year[param] - ) - else: - raise ValueError( - "Currently, access_different_date is only implemented for " - "'vorjahr' (last year) and " - "'jahresanfang' (beginning of the year). " - f"For parameter {param} a different string is specified." - ) - - out_params["datum"] = numpy.datetime64(date) - return out_params +def fail_if_group_ids_are_outside_top_level_namespace( + policy_environment: NestedPolicyEnvironment, +) -> None: + """Fail if group ids are outside the top level namespace.""" + group_ids_outside_top_level_namespace = { + tree_path + for tree_path in dt.flatten_to_tree_paths(policy_environment) + if len(tree_path) > 1 and tree_path[-1].endswith("_id") + } + if group_ids_outside_top_level_namespace: + raise ValueError( + "Group identifiers must live in the top-level namespace. Got:\n\n" + f"{group_ids_outside_top_level_namespace}\n\n" + "To fix this error, move the group identifiers to the top-level namespace." + ) -def transfer_dictionary( - remaining_dict: dict[str, Any] | Any, new_dict: dict[str, Any], key_list: list[str] -) -> dict[str, Any]: - # To call recursive, always check if object is a dict - if isinstance(remaining_dict, dict): - for key in remaining_dict: - key_list_updated: list[str] = [*key_list, key] - new_dict = transfer_dictionary( - remaining_dict[key], new_dict, key_list_updated - ) - elif len(key_list) == 0: - return remaining_dict - else: - # Now remaining dict is just a scalar - new_dict = upsert_path_and_value( - base=new_dict, path_to_upsert=key_list, value_to_upsert=remaining_dict - ) - return new_dict +def fail_if_environment_not_valid(policy_environment: NestedPolicyEnvironment) -> None: + """Validate that the environment is a pytree with supported types.""" + assert_valid_ttsim_pytree( + tree=policy_environment, + leaf_checker=lambda leaf: isinstance( + leaf, ColumnObject | ParamFunction | ParamObject + ), + tree_name="policy_environment", + ) -def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedTTSIMObjectDict, +def fail_if_name_of_last_branch_element_not_leaf_name_of_function( + functions_tree: NestedColumnObjectsParamFunctions, ) -> None: """Raise error if a PolicyFunction does not have the same leaf name as the last branch element of the tree path. @@ -673,31 +704,35 @@ def _fail_if_name_of_last_branch_element_not_leaf_name_of_function( ) -def add_progressionsfaktor( - params_dict: dict[str | int, Any], parameter: str -) -> dict[str | int, Any]: - """Quadratic factor of tax tariff function. +class ConflictingActivePeriodsError(Exception): + def __init__( + self, + affected_column_objects: list[ColumnObject], + path: tuple[str, ...], + overlap_start: datetime.date, + overlap_end: datetime.date, + ) -> None: + self.affected_column_objects = affected_column_objects + self.path = path + self.overlap_start = overlap_start + self.overlap_end = overlap_end + + def __str__(self) -> str: + overlapping_objects = [ + obj.__getattribute__("original_function_name") + for obj in self.affected_column_objects + if obj + ] + return f""" + Functions with path + + {self.path} - The German tax tariff is defined on several income intervals with distinct - marginal tax rates at the thresholds. To ensure an almost linear increase of - the average tax rate, the German tax tariff is defined as a quadratic function, - where the quadratic rate is the so called linear Progressionsfaktor. For its - calculation one needs the lower (low_thres) and upper (upper_thres) thresholds of - the interval as well as the marginal tax rate of the interval (rate_iv) and of the - following interval (rate_fiv). The formula is then given by: + have overlapping start and end dates. The following functions are affected: - (rate_fiv - rate_iv) / (2 * (upper_thres - low_thres)) + { + ''' + '''.join(overlapping_objects) + } - """ - out_dict = copy.deepcopy(params_dict) - interval_keys = sorted(key for key in out_dict if isinstance(key, int)) - # Check and extract lower thresholds. - lower_thresholds, upper_thresholds = check_and_get_thresholds( - params_dict, parameter, interval_keys - )[:2] - for key in interval_keys: - if "rate_quadratic" not in out_dict[key]: - out_dict[key]["rate_quadratic"] = ( - out_dict[key + 1]["rate_linear"] - out_dict[key]["rate_linear"] - ) / (2 * (upper_thresholds[key] - lower_thresholds[key])) - return out_dict + Overlap from {self.overlap_start} to {self.overlap_end}.""" diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index 55e1b288b7..f01031ad05 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -1,7 +1,6 @@ from __future__ import annotations import datetime -import inspect import re import textwrap from typing import TYPE_CHECKING, Any @@ -12,12 +11,11 @@ from ttsim.config import numpy_or_jax as np if TYPE_CHECKING: - from ttsim.ttsim_objects import PolicyFunction from ttsim.typing import ( DashedISOString, GenericCallable, - NestedDataDict, - NestedTTSIMObjectDict, + NestedColumnObjectsParamFunctions, + NestedData, ) @@ -42,7 +40,7 @@ def validate_date_range(start: datetime.date, end: datetime.date) -> None: def get_re_pattern_for_all_time_units_and_groupings( groupings: tuple[str, ...], time_units: tuple[str, ...] -) -> re.Pattern: +) -> re.Pattern[str]: """Get a regex pattern for time units and groupings. The pattern matches strings in any of these formats: @@ -73,7 +71,7 @@ def get_re_pattern_for_all_time_units_and_groupings( ) -def group_pattern(groupings: tuple[str, ...]) -> re.Pattern: +def group_pattern(groupings: tuple[str, ...]) -> re.Pattern[str]: return re.compile( f"(?P<base_name_with_time_unit>.*)_(?P<group>{'|'.join(groupings)})$" ) @@ -83,7 +81,7 @@ def get_re_pattern_for_specific_time_units_and_groupings( base_name: str, all_time_units: tuple[str, ...], groupings: tuple[str, ...], -) -> re.Pattern: +) -> re.Pattern[str]: """Get a regex for a specific base name with optional time unit and aggregation. The pattern matches strings in any of these formats: @@ -116,7 +114,7 @@ def get_re_pattern_for_specific_time_units_and_groupings( ) -def get_base_name_and_grouping_suffix(match: re.Match) -> tuple[str, str]: +def get_base_name_and_grouping_suffix(match: re.Match[str]) -> tuple[str, str]: return ( match.group("base_name"), f"_{match.group('grouping')}" if match.group("grouping") else "", @@ -186,9 +184,7 @@ def create_tree_from_path_and_value( return nested_dict -def merge_trees( - left: NestedTTSIMObjectDict, right: NestedTTSIMObjectDict -) -> NestedTTSIMObjectDict: +def merge_trees(left: dict[str, Any], right: dict[str, Any]) -> dict[str, Any]: """ Merge two pytrees, raising an error if a path is present in both trees. @@ -204,15 +200,13 @@ def merge_trees( The merged pytree. """ - if set(optree.tree_paths(left)) & set(optree.tree_paths(right)): + if set(optree.tree_paths(left)) & set(optree.tree_paths(right)): # type: ignore[arg-type] raise ValueError("Conflicting paths in trees to merge.") return upsert_tree(base=left, to_upsert=right) -def upsert_tree( - base: NestedTTSIMObjectDict, to_upsert: NestedTTSIMObjectDict -) -> NestedTTSIMObjectDict: +def upsert_tree(base: dict[str, Any], to_upsert: dict[str, Any]) -> dict[str, Any]: """ Upsert a tree into another tree for trees defined by dictionaries only. @@ -278,11 +272,11 @@ def insert_path_and_value( def partition_tree_by_reference_tree( - tree_to_partition: NestedTTSIMObjectDict | NestedDataDict, - reference_tree: NestedTTSIMObjectDict | NestedDataDict, + tree_to_partition: NestedColumnObjectsParamFunctions | NestedData, + reference_tree: NestedColumnObjectsParamFunctions | NestedData, ) -> tuple[ - NestedTTSIMObjectDict | NestedDataDict, - NestedTTSIMObjectDict | NestedDataDict, + NestedColumnObjectsParamFunctions | NestedData, + NestedColumnObjectsParamFunctions | NestedData, ]: """ Partition a tree into two based on the presence of its paths in a reference tree. @@ -367,30 +361,6 @@ def format_errors_and_warnings(text: str, width: int = 79) -> str: return formatted_text -def get_names_of_required_arguments(function: PolicyFunction) -> list[str]: - """Get argument names without defaults. - - The detection of argument names also works for partialed functions. - - Examples - -------- - >>> def func(a, b): pass - >>> get_names_of_required_arguments(func) - ['a', 'b'] - >>> def g(c=0): pass - >>> get_names_of_required_arguments(g) - [] - >>> import functools - >>> func_ = functools.partial(func, a=1) - >>> get_names_of_required_arguments(func_) - ['b'] - - """ - parameters = inspect.signature(function).parameters - - return [p for p in parameters if parameters[p].default == parameters[p].empty] - - def remove_group_suffix(col: str, groupings: tuple[str, ...]) -> str: out = col for g in groupings: diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py index 27301d9d24..db77dd4a49 100644 --- a/src/ttsim/typing.py +++ b/src/ttsim/typing.py @@ -1,4 +1,6 @@ -from typing import TYPE_CHECKING, Any, NewType +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Literal, NewType from ttsim.config import IS_JAX_INSTALLED @@ -8,6 +10,7 @@ from numpy import ndarray as TTSIMArray # noqa: N812, TC002 if TYPE_CHECKING: + import datetime from collections.abc import Mapping # Make these available for import from other modules. @@ -18,21 +21,66 @@ QualNameTargetList, ) - from ttsim.ttsim_objects import PolicyInput, TTSIMFunction, TTSIMObject - - NestedTTSIMObjectDict = Mapping[str, TTSIMObject | "NestedTTSIMObjectDict"] - FlatTTSIMObjectDict = Mapping[tuple[str, ...], TTSIMObject] - QualNameTTSIMObjectDict = Mapping[str, TTSIMObject] - - # Specialise from dags' GenericCallable types to GETTSIM's functions. - NestedTTSIMFunctionDict = Mapping[str, TTSIMFunction | "NestedTTSIMFunctionDict"] - QualNameTTSIMFunctionDict = Mapping[str, TTSIMFunction] - QualNamePolicyInputDict = Mapping[str, PolicyInput] - - # Specialise from dags' NestedInputDict to GETTSIM's types. - NestedInputsPathsToDfColumns = Mapping[str, Any | "NestedInputsPathsToDfColumns"] - NestedDataDict = Mapping[str, TTSIMArray | "NestedDataDict"] - QualNameDataDict = Mapping[str, TTSIMArray] + from ttsim.column_objects_param_function import ( + ColumnFunction, + ColumnObject, + ParamFunction, + ) + from ttsim.param_objects import ParamObject + FlatColumnObjectsParamFunctions = Mapping[ + tuple[str, ...], ColumnObject | ParamFunction + ] + """Mapping of flat paths to column objects or param functions.""" + OrigParamSpec = ( + dict[str, str | None | dict[Literal["de", "en"], str | None]] # Header + | dict[ + datetime.date, dict[Literal["note", "reference"] | str | int, Any] # noqa: PYI051 + ] # Parameters at one point in time + ) + """The contents of a yaml files with parameters, excluding the outermost key.""" + FlatOrigParamSpecs = dict[tuple[str, ...], OrigParamSpec] + """Flat tree of yaml contents; the last element of the key is the leaf name.""" + NestedParamObjects = Mapping[str, ParamObject | "NestedParamObjects"] + """Tree mapping TTSIM paths to parameters.""" + NestedInputs = Mapping[str, str | bool | int | float | "NestedInputs"] + """Tree mapping TTSIM paths to df columns or constants.""" + NestedStrings = Mapping[str, str | "NestedStrings"] + """Tree mapping TTSIM paths to df columns or type hints.""" + NestedData = Mapping[str, TTSIMArray | "NestedData"] + """Tree mapping TTSIM paths to data (1-d arrays).""" + QualNameData = Mapping[str, TTSIMArray] + """Mapping of qualified name paths to data (1-d arrays).""" + QualNameDataColumns = set[str] + """The set of data columns, represented by qualified names.""" + NestedAnyTTSIMObject = Mapping[ + str, + ColumnObject + | ParamFunction + | ParamObject + | int + | float + | bool + | TTSIMArray + | "NestedAnyTTSIMObject", + ] + NestedAny = Mapping[str, Any | "NestedAnyTTSIMObject"] + """Tree mapping TTSIM paths to any type of TTSIM object.""" + NestedColumnObjectsParamFunctions = Mapping[ + str, ColumnObject | ParamFunction | "NestedColumnObjectsParamFunctions" + ] + NestedPolicyEnvironment = Mapping[ + str, + ColumnObject | ParamFunction | ParamObject | "NestedPolicyEnvironment", + ] + """Tree mapping TTSIM paths to column objects, param functions, param objects.""" + QualNamePolicyEnvironment = Mapping[str, ColumnObject | ParamFunction | ParamObject] + """Tree mapping TTSIM paths to column objects, param functions, param objects.""" + QualNameColumnObjectsParamFunctions = Mapping[str, ColumnObject | ParamFunction] + """Mapping of qualified name paths to column objects or param functions.""" + QualNameColumnFunctionsWithProcessedParamsAndScalars = Mapping[str, Any] + """A mapping of qualified names to fully processed parameters.""" + QualNameColumnFunctions = Mapping[str, ColumnFunction] + """Mapping of qualified name paths to functions operating on columns of data.""" DashedISOString = NewType("DashedISOString", str) """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/src/ttsim/vectorization.py b/src/ttsim/vectorization.py index 0cde027a3c..3114f2a79f 100644 --- a/src/ttsim/vectorization.py +++ b/src/ttsim/vectorization.py @@ -1,18 +1,46 @@ +from __future__ import annotations + import ast import functools import inspect import textwrap import types -from collections.abc import Callable from importlib import import_module -from typing import cast +from typing import TYPE_CHECKING, Literal, cast + +import numpy -from ttsim.config import numpy_or_jax +from ttsim.config import IS_JAX_INSTALLED +from ttsim.config import numpy_or_jax as np + +if TYPE_CHECKING: + from ttsim.typing import GenericCallable BACKEND_TO_MODULE = {"jax": "jax.numpy", "numpy": "numpy"} -def make_vectorizable(func: Callable, backend: str) -> Callable: +def vectorize_function( + func: GenericCallable, + vectorization_strategy: Literal["loop", "vectorize"], +) -> GenericCallable: + vectorized: GenericCallable + if vectorization_strategy == "loop": + vectorized = functools.wraps(func)(numpy.vectorize(func)) + vectorized.__signature__ = inspect.signature(func) + vectorized.__globals__ = func.__globals__ + vectorized.__closure__ = func.__closure__ + elif vectorization_strategy == "vectorize": + backend = "jax" if IS_JAX_INSTALLED else "numpy" + vectorized = _make_vectorizable(func, backend=backend) + else: + raise ValueError( + f"Vectorization strategy {vectorization_strategy} is not supported. " + "Use 'loop' or 'vectorize'." + ) + return vectorized + + +def _make_vectorizable(func: GenericCallable, backend: str) -> GenericCallable: """Redefine function to be vectorizable given backend. Args: @@ -50,7 +78,7 @@ def make_vectorizable(func: Callable, backend: str) -> Callable: return functools.wraps(func)(new_func) -def make_vectorizable_source(func: Callable, backend: str) -> str: +def make_vectorizable_source(func: GenericCallable, backend: str) -> str: """Redefine function source to be vectorizable given backend. Args: @@ -73,7 +101,7 @@ def make_vectorizable_source(func: Callable, backend: str) -> str: return ast.unparse(tree) -def _make_vectorizable_ast(func: Callable, module: str) -> ast.Module: +def _make_vectorizable_ast(func: GenericCallable, module: str) -> ast.Module: """Change if statement to where call in the ast of func and return new ast. Args: @@ -93,7 +121,7 @@ def _make_vectorizable_ast(func: Callable, module: str) -> ast.Module: return ast.fix_missing_locations(new_tree) -def _func_to_ast(func: Callable) -> ast.Module: +def _func_to_ast(func: GenericCallable) -> ast.Module: source = inspect.getsource(func) source_dedented = textwrap.dedent(source) source_without_decorators = _remove_decorator_lines(source_dedented) @@ -269,9 +297,9 @@ def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast args = node.args if len(args) == 1: - if type(args) not in (list, tuple, numpy_or_jax.ndarray): + if type(args) not in (list, tuple, np.ndarray): raise TranslateToVectorizableError( - f"Argument of function {func_id} is not a list or tuple." + f"Argument of function {func_id} is not a list, tuple, or valid array." f"\n\nFunction: {func_loc}\n\n" f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" ) diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py index 90bfed62e3..11567aaf8e 100644 --- a/tests/ttsim/mettsim/config.py +++ b/tests/ttsim/mettsim/config.py @@ -4,6 +4,8 @@ approach based on the Gondorian tax code. """ +from __future__ import annotations + from pathlib import Path -RESOURCE_DIR = Path(__file__).parent +METTSIM_ROOT = Path(__file__).parent diff --git a/tests/ttsim/mettsim/demographics.py b/tests/ttsim/mettsim/demographics.py index 70f9b79307..32dc684f68 100644 --- a/tests/ttsim/mettsim/demographics.py +++ b/tests/ttsim/mettsim/demographics.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import AggType, agg_by_group_function diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py index 8f56b4ab5b..d07f0b7d27 100644 --- a/tests/ttsim/mettsim/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import group_creation_function from ttsim.config import numpy_or_jax as np @@ -10,23 +12,11 @@ def sp_id( """ Compute the spouse (sp) group ID for each person. """ - p_id_to_sp_id: dict[int, int] = {} - next_sp_id: int = 0 - result: list[int] = [] - - for index, current_p_id in enumerate(map(int, p_id)): - current_p_id_spouse = int(p_id_spouse[index]) - - if current_p_id_spouse >= 0 and current_p_id_spouse in p_id_to_sp_id: - result.append(p_id_to_sp_id[current_p_id_spouse]) - continue - - # New married couple - result.append(next_sp_id) - p_id_to_sp_id[current_p_id] = next_sp_id - next_sp_id += 1 + n = np.max(p_id) + p_id_spouse = np.where(p_id_spouse < 0, p_id, p_id_spouse) + sp_id = np.maximum(p_id, p_id_spouse) + np.minimum(p_id, p_id_spouse) * n - return np.array(result) + return __reorder_ids(sp_id) @group_creation_function() @@ -40,53 +30,45 @@ def fam_id( """ Compute the family ID for each person. """ - # Build indexes - p_id_to_index: dict[int, int] = {} - p_id_to_p_ids_children: dict[int, list[int]] = {} - - for index, current_p_id in enumerate(map(int, p_id)): - p_id_to_index[current_p_id] = index - current_p_id_parent_1 = int(p_id_parent_1[index]) - current_p_id_parent_2 = int(p_id_parent_2[index]) - - if current_p_id_parent_1 >= 0: - if current_p_id_parent_1 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_p_id_parent_1] = [] - p_id_to_p_ids_children[current_p_id_parent_1].append(current_p_id) - - if current_p_id_parent_2 >= 0: - if current_p_id_parent_2 not in p_id_to_p_ids_children: - p_id_to_p_ids_children[current_p_id_parent_2] = [] - p_id_to_p_ids_children[current_p_id_parent_2].append(current_p_id) - - p_id_to_fam_id = {} - next_fam_id = 0 - - for index, current_p_id in enumerate(map(int, p_id)): - # Already assigned a fam_id to this p_id via spouse / parent - if current_p_id in p_id_to_fam_id: - continue - - p_id_to_fam_id[current_p_id] = next_fam_id - - current_p_id_spouse = int(p_id_spouse[index]) - current_p_id_children = p_id_to_p_ids_children.get(current_p_id, []) - - # Assign fam_id to spouse - if current_p_id_spouse >= 0: - p_id_to_fam_id[current_p_id_spouse] = next_fam_id - - # Assign fam_id to children - for current_p_id_child in current_p_id_children: - child_index = p_id_to_index[current_p_id_child] - child_age = age[child_index] - child_p_id_children = p_id_to_p_ids_children.get(current_p_id_child, []) - - if child_age < 25 and len(child_p_id_children) == 0: - p_id_to_fam_id[current_p_id_child] = next_fam_id - - next_fam_id += 1 - - # Compute result vector - result = [p_id_to_fam_id[current_p_id] for current_p_id in map(int, p_id)] - return np.array(result) + n = np.max(p_id) + + p_id_parent_1_loc = p_id_parent_1 + p_id_parent_2_loc = p_id_parent_2 + for i in range(p_id.shape[0]): + p_id_parent_1_loc = np.where(p_id_parent_1_loc == p_id[i], i, p_id_parent_1_loc) + p_id_parent_2_loc = np.where(p_id_parent_2_loc == p_id[i], i, p_id_parent_2_loc) + + children = np.isin(p_id, p_id_parent_1) + np.isin(p_id, p_id_parent_2) + fam_id = np.where( + p_id_spouse < 0, + p_id + p_id * n, + np.maximum(p_id, p_id_spouse) + np.minimum(p_id, p_id_spouse) * n, + ) + fam_id = np.where( + (fam_id == p_id + p_id * n) + * (p_id_parent_1_loc >= 0) + * (age < 25) + * (1 - children), + fam_id[p_id_parent_1_loc], + fam_id, + ) + fam_id = np.where( + (fam_id == p_id + p_id * n) + * (p_id_parent_2_loc >= 0) + * (age < 25) + * (1 - children), + fam_id[p_id_parent_2_loc], + fam_id, + ) + + return __reorder_ids(fam_id) + + +def __reorder_ids(ids: np.ndarray) -> np.ndarray: + """Make ID's consecutively numbered.""" + sorting = np.argsort(ids) + ids_sorted = ids[sorting] + index_after_sort = np.arange(ids.shape[0])[sorting] + diff_to_prev = np.where(np.diff(ids_sorted) >= 1, 1, 0) + cons_ids = np.concatenate((np.asarray([0]), np.cumsum(diff_to_prev))) + return cons_ids[np.argsort(index_after_sort)] diff --git a/tests/ttsim/mettsim/housing_benefits/amount.py b/tests/ttsim/mettsim/housing_benefits/amount.py index 025178ed77..efd833cd59 100644 --- a/tests/ttsim/mettsim/housing_benefits/amount.py +++ b/tests/ttsim/mettsim/housing_benefits/amount.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import policy_function @@ -5,9 +7,9 @@ def amount_m_fam( eligibility__requirement_fulfilled_fam: bool, income__amount_m_fam: float, - housing_benefits_params: dict, + assistance_rate: float, ) -> float: if eligibility__requirement_fulfilled_fam: - return income__amount_m_fam * housing_benefits_params["assistance_rate"] + return income__amount_m_fam * assistance_rate else: return 0 diff --git a/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml b/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml new file mode 100644 index 0000000000..5fc025379d --- /dev/null +++ b/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml @@ -0,0 +1,13 @@ +--- +assistance_rate: + name: + de: Unterstützungssatz + en: Assistance rate + description: + de: In Mittelerde passiert immer noch nichts. + en: Still nothing happens in Middle Earth. + unit: null + reference_period: null + type: scalar + 1900-01-01: + value: 0.5 diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index c6da9c0f65..c7c3141384 100644 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -9,7 +9,13 @@ - Subsistence income is calculated per spouse and child """ -from ttsim import AggType, agg_by_group_function, policy_function +from __future__ import annotations + +from ttsim import ( + AggType, + agg_by_group_function, + policy_function, +) @agg_by_group_function(agg_type=AggType.SUM, end_date="2019-12-31") @@ -29,12 +35,11 @@ def number_of_individuals_fam(fam_id: int) -> int: def requirement_fulfilled_fam_not_considering_children( housing_benefits__income__amount_m_fam: float, number_of_adults_fam: int, - housing_benefits_params: dict, + subsistence_income_level: dict[str, float], ) -> bool: return ( housing_benefits__income__amount_m_fam - < housing_benefits_params["eligibility"]["subsistence_income_per_spouse_m"] - * number_of_adults_fam + < subsistence_income_level["per_spouse"] * number_of_adults_fam ) @@ -44,11 +49,11 @@ def requirement_fulfilled_fam_not_considering_children( ) def requirement_fulfilled_fam_considering_children( housing_benefits__income__amount_m_fam: float, - housing_benefits_params: dict, number_of_family_members_considered_fam: int, + subsistence_income_level: dict[str, float], ) -> bool: return housing_benefits__income__amount_m_fam < ( - housing_benefits_params["eligibility"]["subsistence_income_per_individual_m"] + subsistence_income_level["per_individual"] * number_of_family_members_considered_fam ) @@ -56,25 +61,22 @@ def requirement_fulfilled_fam_considering_children( @policy_function(start_date="2020-01-01", vectorization_strategy="vectorize") def number_of_family_members_considered_fam( number_of_individuals_fam: int, - housing_benefits_params: dict, + max_number_of_family_members: int, ) -> int: - return min( - number_of_individuals_fam, - housing_benefits_params["eligibility"]["max_number_of_family_members"], - ) + return min(number_of_individuals_fam, max_number_of_family_members) @policy_function(vectorization_strategy="vectorize") def child( age: int, - housing_benefits_params: dict, + max_age_children: int, ) -> bool: - return age <= housing_benefits_params["max_age_children"] + return age <= max_age_children @policy_function(vectorization_strategy="vectorize") def adult( age: int, - housing_benefits_params: dict, + max_age_children: int, ) -> bool: - return age > housing_benefits_params["max_age_children"] + return age > max_age_children diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml new file mode 100644 index 0000000000..323e0642f9 --- /dev/null +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml @@ -0,0 +1,39 @@ +--- +subsistence_income_level: + name: + de: Anspruchsvoraussetzung Einkommen pro Partner/Person + en: Eligibility income per spouse/person + description: + de: Dict, da es sich über die Jahre ändert, aber der Paramtername gleich bleibt. + en: Dict, because it changes over time, but the parameter name remains the same. + unit: Euros + reference_period: Month + type: dict + 1900-01-01: + per_spouse: 500.0 + 2020-01-01: + per_individual: 500.0 +max_number_of_family_members: + name: + de: Maximalzahl der zu berücksichtigenden Personen + en: Maximum number of persons to consider + description: + de: Erst nach Reform 2020 relevant. + en: Only relevant after 2020 reform. + unit: null + reference_period: null + type: scalar + 2020-01-01: + value: 4 +max_age_children: + name: + de: Maximalalter der Kinder + en: Maximum age of children + description: + de: In Mittelerde passiert nichts, niemals. + en: In Middle Earth nothing happens, ever. + unit: Years + reference_period: null + type: scalar + 1900-01-01: + value: 18 diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py index 6cbd615fe2..6341998900 100644 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import RoundingSpec, policy_function diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py index 56b845470a..f42bffb224 100644 --- a/tests/ttsim/mettsim/inputs.py +++ b/tests/ttsim/mettsim/inputs.py @@ -1,4 +1,6 @@ -from ttsim import FKType, policy_input +from __future__ import annotations + +from ttsim import AggType, FKType, agg_by_group_function, policy_input @policy_input() @@ -36,6 +38,11 @@ def parent_is_noble() -> bool: """Whether at least one parent is noble.""" +@agg_by_group_function(agg_type=AggType.ANY) +def parent_is_noble_fam(parent_is_noble: bool, fam_id: int) -> bool: + pass + + @policy_input() def wealth() -> float: """Wealth of the person.""" diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py new file mode 100644 index 0000000000..87794e01af --- /dev/null +++ b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from ttsim import param_function, policy_function + +if TYPE_CHECKING: + from ttsim import RawParam + + +@dataclass(frozen=True) +class BountyPerLargeOrc: + noble_hunter: float + peasant_hunter: float + + +@dataclass(frozen=True) +class BountyPerOrc: + small_orc: int + large_orc: BountyPerLargeOrc + + +@param_function() +def bounty_per_orc(raw_bounties_per_orc: RawParam) -> BountyPerOrc: + return BountyPerOrc( + small_orc=raw_bounties_per_orc["small_orc"], + large_orc=BountyPerLargeOrc( + noble_hunter=raw_bounties_per_orc["large_orc"]["noble_hunter"], + peasant_hunter=raw_bounties_per_orc["large_orc"]["peasant_hunter"], + ), + ) + + +@policy_function(vectorization_strategy="vectorize") +def amount( + small_orcs_hunted: int, + large_orcs_hunted: int, + parent_is_noble: bool, + bounty_per_orc: BountyPerOrc, +) -> float: + """Orc-hunting bounty.""" + bounty_small_orcs = bounty_per_orc.small_orc * small_orcs_hunted + if parent_is_noble: + bounty_large_orcs = bounty_per_orc.large_orc.noble_hunter * large_orcs_hunted + else: + bounty_large_orcs = bounty_per_orc.large_orc.peasant_hunter * large_orcs_hunted + return bounty_small_orcs + bounty_large_orcs diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml new file mode 100644 index 0000000000..5640b03dec --- /dev/null +++ b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml @@ -0,0 +1,16 @@ +--- +raw_bounties_per_orc: + name: + de: Belohnung für das Jagen von Orks (tot oder lebendig) + en: Bounty for orc hunting (dead or alive) + description: + de: Test für den Typ require_converter + en: Test the require_converter type + unit: Euros + reference_period: null + type: require_converter + 1900-01-01: + small_orc: 100 + large_orc: + peasant_hunter: 200 + noble_hunter: 100 diff --git a/tests/ttsim/mettsim/parameters/housing_benefits.yaml b/tests/ttsim/mettsim/parameters/housing_benefits.yaml deleted file mode 100644 index 9605d50e26..0000000000 --- a/tests/ttsim/mettsim/parameters/housing_benefits.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -eligibility: - name: - de: Anspruchsvoraussetzungen - en: Eligibility - description: - de: In Mittelerde passiert nichts. - en: In Middle Earth nothing happens. - 1900-01-01: - subsistence_income_per_spouse_m: 500.0 - 2020-01-01: - subsistence_income_per_individual_m: 500.0 - max_number_of_family_members: 4 -assistance_rate: - name: - de: Unterstützungssatz - en: Assistance rate - description: - de: In Mittelerde passiert immer noch nichts. - en: Still nothing happens in Middle Earth. - 1900-01-01: - scalar: 0.5 -max_age_children: - name: - de: Maximalalter der Kinder - en: Maximum age of children - description: - de: In Mittelerde passiert nichts, niemals. - en: In Middle Earth nothing happens, ever. - 1900-01-01: - scalar: 18 diff --git a/tests/ttsim/mettsim/parameters/payroll_tax.yaml b/tests/ttsim/mettsim/parameters/payroll_tax.yaml deleted file mode 100644 index 6e5c200b73..0000000000 --- a/tests/ttsim/mettsim/parameters/payroll_tax.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -child_tax_credit: - name: - de: Kinderfreibetrag - en: Child tax credit - description: - de: In Mittelerde passiert nichts. - en: In Middle Earth nothing happens. - 1900-01-01: - child_amount_y: 100.0 - max_age: 18 -income: - name: - de: Einkommensteuertarif - en: Income tax schedule - description: - de: Name ergibt wenig Sinn. - en: The name makes little sense. - 1900-01-01: - lump_sum_deduction_y: 100.0 - rate: 0.3 - reduced_rate: 0.15 -wealth_threshold_for_reduced_tax_rate: - name: - de: Vermögensschwelle, bis zu der der niedrigere Steuersatz gilt - en: Wealth threshold below which the lower tax rate applies - description: - de: Umgekehrte Bennenung schiene sinnvoll. - en: The reverse naming would seem more sensible. - 1900-01-01: - scalar: 50000 diff --git a/tests/ttsim/mettsim/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py index 583551cda1..45b121dd52 100644 --- a/tests/ttsim/mettsim/payroll_tax/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/amount.py @@ -1,24 +1,47 @@ -from ttsim import AggType, agg_by_group_function, policy_function +from __future__ import annotations + +from ttsim import ( + PiecewisePolynomialParamValue, + piecewise_polynomial, + policy_function, +) @policy_function(vectorization_strategy="vectorize") def amount_y( - income__amount_y: float, - payroll_tax_params: dict, + amount_standard_y: float, + amount_reduced_y: float, parent_is_noble_fam: bool, wealth_fam: float, + wealth_threshold_for_reduced_tax_rate: float, ) -> float: if parent_is_noble_fam: return 0.0 - elif wealth_fam >= payroll_tax_params["wealth_threshold_for_reduced_tax_rate"]: - return income__amount_y * payroll_tax_params["income"]["reduced_rate"] + elif wealth_fam >= wealth_threshold_for_reduced_tax_rate: + return amount_reduced_y else: - return income__amount_y * payroll_tax_params["income"]["rate"] + return amount_standard_y + + +@policy_function(vectorization_strategy="vectorize") +def amount_standard_y( + income__amount_y: float, + tax_schedule_standard: PiecewisePolynomialParamValue, +) -> float: + """Payroll tax amount for the standard tax schedule.""" + return piecewise_polynomial( + x=income__amount_y, + parameters=tax_schedule_standard, + ) -@agg_by_group_function(agg_type=AggType.ANY) -def parent_is_noble_fam( - parent_is_noble: bool, - fam_id: int, -) -> bool: - pass +@policy_function(vectorization_strategy="vectorize") +def amount_reduced_y( + income__amount_y: float, + tax_schedule_reduced: PiecewisePolynomialParamValue, +) -> float: + """Payroll tax amount for the reduced tax schedule.""" + return piecewise_polynomial( + x=income__amount_y, + parameters=tax_schedule_reduced, + ) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index b74689711c..4fbb5fe385 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import ( AggType, agg_by_p_id_function, @@ -18,10 +20,10 @@ def amount_y( @policy_function(vectorization_strategy="vectorize") def claim_of_child_y( child_eligible: bool, - payroll_tax_params: dict, + schedule: dict[str, float], ) -> float: if child_eligible: - return payroll_tax_params["child_tax_credit"]["child_amount_y"] + return schedule["child_amount_y"] else: return 0 @@ -29,13 +31,10 @@ def claim_of_child_y( @policy_function(vectorization_strategy="vectorize") def child_eligible( age: int, - payroll_tax_params: dict, + schedule: dict[str, float], in_same_household_as_recipient: bool, ) -> bool: - return ( - age <= payroll_tax_params["child_tax_credit"]["max_age"] - and in_same_household_as_recipient - ) + return age <= schedule["max_age"] and in_same_household_as_recipient @policy_function(vectorization_strategy="not_required") diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml new file mode 100644 index 0000000000..a3fee6c3b7 --- /dev/null +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml @@ -0,0 +1,14 @@ +--- +schedule: + name: + de: Kinderfreibetrag + en: Child tax credit + description: + de: In Mittelerde passiert nichts. + en: In Middle Earth nothing happens. + unit: Euros + reference_period: Year + type: dict + 1900-01-01: + child_amount_y: 100.0 + max_age: 18 diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py index f74c704fbe..098c43ce21 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import FKType, policy_input diff --git a/tests/ttsim/mettsim/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py index 9f6d3fe3a8..69541b055f 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/income/amount.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from ttsim import policy_function diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py index 79a6f08fb0..50cbbe0602 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.py +++ b/tests/ttsim/mettsim/payroll_tax/income/deductions.py @@ -1,12 +1,11 @@ +from __future__ import annotations + from ttsim import policy_function @policy_function(vectorization_strategy="vectorize") def deductions_y( payroll_tax__child_tax_credit__amount_y: float, - payroll_tax_params: dict, + lump_sum_deduction_y: float, ) -> float: - return ( - payroll_tax_params["income"]["lump_sum_deduction_y"] - + payroll_tax__child_tax_credit__amount_y - ) + return lump_sum_deduction_y + payroll_tax__child_tax_credit__amount_y diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml b/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml new file mode 100644 index 0000000000..5a0ce39d78 --- /dev/null +++ b/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml @@ -0,0 +1,13 @@ +--- +lump_sum_deduction_y: + name: + de: Lohnsteuerpauschalabzug + en: Lump sum deduction for payroll tax + description: + de: Lohnsteuerpauschalabzug + en: Lump sum deduction for payroll tax + unit: Euros + reference_period: Year + type: scalar + 1900-01-01: + value: 100.0 diff --git a/tests/ttsim/mettsim/payroll_tax/income/inputs.py b/tests/ttsim/mettsim/payroll_tax/income/inputs.py index 2ffc246279..6637748de5 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/inputs.py +++ b/tests/ttsim/mettsim/payroll_tax/income/inputs.py @@ -1,5 +1,7 @@ """Input columns.""" +from __future__ import annotations + from ttsim import policy_input diff --git a/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml b/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml new file mode 100644 index 0000000000..b436ea6453 --- /dev/null +++ b/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml @@ -0,0 +1,57 @@ +--- +wealth_threshold_for_reduced_tax_rate: + name: + de: Vermögensschwelle, bis zu der der niedrigere Steuersatz gilt + en: Wealth threshold below which the lower tax rate applies + description: + de: Umgekehrte Bennenung schiene sinnvoll. + en: The reverse naming would seem more sensible. + unit: Euros + reference_period: null + type: scalar + 1900-01-01: + value: 50000 +tax_schedule_standard: + name: + de: Standard Lohnsteuersatz + en: Standard payroll tax schedule + description: + de: Für Angehörige von Familien mit niedrigem Vermögen + en: For member of families with low wealth + unit: Euros + reference_period: Year + type: piecewise_linear + 1900-01-01: + 0: + lower_threshold: -inf + upper_threshold: 0 + rate_linear: 0.0 + intercept_at_lower_threshold: 0 + 1: + upper_threshold: 100 + rate_linear: 0.1 + 2: + upper_threshold: inf + rate_linear: 0.3 +tax_schedule_reduced: + name: + de: Lohnsteuersatz + en: Payroll tax schedule + description: + de: Für Angehörige von Familien mit hohem Vermögen + en: For member of families with high wealth + unit: Euros + reference_period: Year + type: piecewise_linear + 1900-01-01: + 0: + lower_threshold: -inf + upper_threshold: 0 + rate_linear: 0 + intercept_at_lower_threshold: 0 + 1: + upper_threshold: 100 + rate_linear: 0.1 + 2: + upper_threshold: inf + rate_linear: 0.15 diff --git a/tests/ttsim/mettsim/property_tax/amount.py b/tests/ttsim/mettsim/property_tax/amount.py new file mode 100644 index 0000000000..ba2dd48d4e --- /dev/null +++ b/tests/ttsim/mettsim/property_tax/amount.py @@ -0,0 +1,23 @@ +"""Property tax. + +Three tax brackets: + - No acre + - small acre + - large acre +""" + +from __future__ import annotations + +from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function + + +@policy_function(vectorization_strategy="vectorize") +def amount_y( + acre_size_in_hectares: float, + tax_schedule: PiecewisePolynomialParamValue, +) -> float: + """Property tax amount for the standard tax schedule.""" + return piecewise_polynomial( + x=acre_size_in_hectares, + parameters=tax_schedule, + ) diff --git a/tests/ttsim/mettsim/property_tax/tax_schedule.yaml b/tests/ttsim/mettsim/property_tax/tax_schedule.yaml new file mode 100644 index 0000000000..defc7d52a0 --- /dev/null +++ b/tests/ttsim/mettsim/property_tax/tax_schedule.yaml @@ -0,0 +1,24 @@ +--- +tax_schedule: + name: + de: Vermögenssteuer auf Landbesitz + en: Wealth tax on land + description: + de: >- + Vermögenssteuer auf Landbesitz. Bemisst sich an Größe des landwirtschaftlich + nutzbaren Landes in Hektar. + en: Wealth tax on land. Depends on size of arable land in hectares. + unit: Euros + reference_period: null + type: piecewise_constant + 1900-01-01: + 0: + lower_threshold: -inf + intercept_at_lower_threshold: 0 + 1: + lower_threshold: 10 + intercept_at_lower_threshold: 1000 + 2: + lower_threshold: 100 + upper_threshold: inf + intercept_at_lower_threshold: 10000 diff --git a/tests/ttsim/test_aggregation_functions.py b/tests/ttsim/test_aggregation_functions.py index 65ccf4c33d..cec1ae0ef1 100644 --- a/tests/ttsim/test_aggregation_functions.py +++ b/tests/ttsim/test_aggregation_functions.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import copy import numpy diff --git a/tests/ttsim/test_time_conversion.py b/tests/ttsim/test_automatically_added_functions.py similarity index 80% rename from tests/ttsim/test_time_conversion.py rename to tests/ttsim/test_automatically_added_functions.py index 794c31d4bf..68e833eccb 100644 --- a/tests/ttsim/test_time_conversion.py +++ b/tests/ttsim/test_automatically_added_functions.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import inspect import pytest @@ -5,6 +7,7 @@ from ttsim import policy_function from ttsim.automatically_added_functions import ( _create_function_for_time_unit, + create_agg_by_group_functions, create_time_conversion_functions, d_to_m, d_to_q, @@ -33,6 +36,14 @@ def return_one() -> int: return 1 +def return_x_kin(x_kin: int) -> int: + return x_kin + + +def return_n1__x_kin(n1__x_kin: int) -> int: + return n1__x_kin + + @pytest.mark.parametrize( ("yearly_value", "quarterly_value"), [ @@ -278,8 +289,10 @@ def test_should_create_functions_for_other_time_units_for_functions( self, name: str, expected: list[str] ) -> None: time_conversion_functions = create_time_conversion_functions( - ttsim_objects={name: policy_function(leaf_name=name)(return_one)}, - data={}, + qual_name_policy_environment={ + name: policy_function(leaf_name=name)(return_one) + }, + data_columns=set(), groupings=("sn", "kin"), ) @@ -288,8 +301,10 @@ def test_should_create_functions_for_other_time_units_for_functions( def test_should_not_create_functions_automatically_that_exist_already(self) -> None: time_conversion_functions = create_time_conversion_functions( - ttsim_objects={"test1_d": policy_function(leaf_name="test1_d")(return_one)}, - data={"test2_y": None}, + qual_name_policy_environment={ + "test1_d": policy_function(leaf_name="test1_d")(return_one) + }, + data_columns={"test2_y"}, groupings=("sn", "kin"), ) @@ -300,8 +315,10 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri self, ) -> None: time_conversion_functions = create_time_conversion_functions( - ttsim_objects={"test_d": policy_function(leaf_name="test_d")(return_one)}, - data={"test_y": None}, + qual_name_policy_environment={ + "test_d": policy_function(leaf_name="test_d")(return_one) + }, + data_columns={"test_y"}, groupings=("sn", "kin"), ) @@ -326,15 +343,64 @@ def test_should_apply_converter(self): assert function(1) == 7 -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def test_should_not_create_cycle(): + # Check for: + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def x(test_m: int) -> int: return test_m time_conversion_functions = create_time_conversion_functions( - ttsim_objects={"test_d": policy_function(leaf_name="test_d")(x)}, - data={}, + qual_name_policy_environment={"test_d": policy_function(leaf_name="test_d")(x)}, + data_columns=set(), groupings=(), ) assert "test_m" not in time_conversion_functions + + +@pytest.mark.parametrize( + ( + "column_functions", + "targets", + "data_columns", + "expected", + ), + [ + ( + {"foo": policy_function(leaf_name="foo")(return_x_kin)}, + {}, + {"x"}, + ("x_kin"), + ), + ( + {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_kin)}, + {}, + {"n1__x"}, + ("n1__x_kin"), + ), + ( + {}, + {"x_kin": None}, + {"x"}, + ("x_kin"), + ), + ], +) +def test_derived_aggregation_functions_are_in_correct_namespace( + column_functions, + targets, + data_columns, + expected, +): + """Test that the derived aggregation functions are in the correct namespace. + + The namespace of the derived aggregation functions should be the same as the + namespace of the function that is being aggregated. + """ + result = create_agg_by_group_functions( + column_functions=column_functions, + data_columns=data_columns, + targets=targets, + groupings=("kin",), + ) + assert expected in result diff --git a/tests/ttsim/test_combine_functions.py b/tests/ttsim/test_combine_functions.py deleted file mode 100644 index b0adfe6d40..0000000000 --- a/tests/ttsim/test_combine_functions.py +++ /dev/null @@ -1,273 +0,0 @@ -import pandas as pd -import pytest - -from ttsim import ( - AggType, - PolicyEnvironment, - agg_by_group_function, - compute_taxes_and_transfers, - policy_function, - policy_input, -) -from ttsim.automatically_added_functions import create_agg_by_group_functions -from ttsim.combine_functions import _fail_if_targets_not_in_functions -from ttsim.config import IS_JAX_INSTALLED - -if IS_JAX_INSTALLED: - jit = True -else: - jit = False - - -@pytest.fixture -@policy_function(leaf_name="foo") -def function_with_bool_return(x: bool) -> bool: - return x - - -@policy_input() -def x() -> int: - pass - - -@policy_input() -def x_f() -> float: - pass - - -@policy_input() -def x_b() -> bool: - pass - - -@policy_input() -def p_id() -> int: - pass - - -@policy_input() -def kin_id() -> int: - pass - - -@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) -def y_kin(kin_id: int, x: int) -> int: - pass - - -@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) -def y_kin_namespaced_input(kin_id: int, inputs__x: int) -> int: - pass - - -@pytest.fixture -@policy_function(leaf_name="bar") -def function_with_int_return(x: int) -> int: - return x - - -@pytest.fixture -@policy_function(leaf_name="baz") -def function_with_float_return(x: int) -> float: - return x - - -def some_x(x): - return x - - -def return_x_kin(x_kin: int) -> int: - return x_kin - - -def return_y_kin(y_kin: int) -> int: - return y_kin - - -def return_n1__x_kin(n1__x_kin: int) -> int: - return n1__x_kin - - -@pytest.mark.parametrize( - ( - "objects_tree", - "targets_tree", - "data_tree", - ), - [ - ( - # Aggregations derived from simple function arguments - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(return_n1__x_kin), - "x": x, - }, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ( - # Aggregations derived from namespaced function arguments - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function(leaf_name="f")(return_x_kin), - "x": x, - }, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, - }, - ), - ( - # Aggregations derived from target - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(some_x), - "x": x, - }, - }, - {"n1": {"f_kin": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, - }, - ), - ( - # Explicit aggregation via objects tree with leaf name input - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(some_x), - "x": x, - }, - "y_kin": y_kin, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, - }, - ), - ( - # Explicit aggregation via objects tree with namespaced input - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(return_y_kin), - "y_kin": y_kin_namespaced_input, - }, - "inputs": {"x": x}, - }, - {"n1": {"f": None}}, - { - "inputs": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, - }, - ), - ], -) -def test_create_agg_by_group_functions( - objects_tree, - targets_tree, - data_tree, -): - environment = PolicyEnvironment(raw_objects_tree=objects_tree) - compute_taxes_and_transfers( - environment=environment, - data_tree=data_tree, - targets_tree=targets_tree, - jit=jit, - ) - - -@pytest.mark.parametrize( - "functions, targets, expected_error_match", - [ - ({"foo": some_x}, {"bar": None}, "('bar',)"), - ({"foo__baz": some_x}, {"foo__bar": None}, "('foo', 'bar')"), - ], -) -def test_fail_if_targets_are_not_among_functions( - functions, targets, expected_error_match -): - with pytest.raises(ValueError) as e: - _fail_if_targets_not_in_functions(functions, targets) - assert expected_error_match in str(e.value) - - -@pytest.mark.parametrize( - ( - "functions", - "targets", - "data", - "expected", - ), - [ - ( - {"foo": policy_function(leaf_name="foo")(return_x_kin)}, - {}, - {"x": pd.Series([1])}, - ("x_kin"), - ), - ( - {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_kin)}, - {}, - {"n1__x": pd.Series([1])}, - ("n1__x_kin"), - ), - ( - {}, - {"x_kin": None}, - {"x": pd.Series([1])}, - ("x_kin"), - ), - ], -) -def test_derived_aggregation_functions_are_in_correct_namespace( - functions, - targets, - data, - expected, -): - """Test that the derived aggregation functions are in the correct namespace. - - The namespace of the derived aggregation functions should be the same as the - namespace of the function that is being aggregated. - """ - result = create_agg_by_group_functions( - ttsim_functions_with_time_conversions=functions, - data=data, - targets=targets, - groupings=("kin",), - ) - assert expected in result diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index dbddf69dc5..b753685e01 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -1,23 +1,29 @@ from __future__ import annotations import copy -import re import warnings +from dataclasses import dataclass +from typing import TYPE_CHECKING import dags.tree as dt import numpy import pandas as pd import pytest -from mettsim.config import RESOURCE_DIR +from mettsim.config import METTSIM_ROOT from ttsim import ( AggType, - FunctionsAndColumnsOverlapWarning, - PolicyEnvironment, + DictParam, + FunctionsAndDataOverlapWarning, + PiecewisePolynomialParam, + PiecewisePolynomialParamValue, + RawParam, + ScalarParam, agg_by_group_function, agg_by_p_id_function, compute_taxes_and_transfers, merge_trees, + param_function, policy_function, policy_input, set_up_policy_environment, @@ -26,14 +32,18 @@ _fail_if_foreign_keys_are_invalid_in_data, _fail_if_group_variables_not_constant_within_groups, _fail_if_p_id_is_non_unique, + _fail_if_targets_not_in_policy_environment_or_data, _get_top_level_namespace, - _partial_parameters_to_functions, + column_functions_with_processed_params_and_scalars, + required_column_functions, ) from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np -from ttsim.shared import assert_valid_ttsim_pytree from ttsim.typing import TTSIMArray +if TYPE_CHECKING: + from ttsim.typing import NestedPolicyEnvironment + if IS_JAX_INSTALLED: jit = True else: @@ -75,6 +85,97 @@ def another_func(some_func: int) -> int: return some_func +@param_function() +def some_scalar_params_func(some_int_param: int) -> int: + return some_int_param + + +@dataclass(frozen=True) +class ConvertedParam: + some_float_param: float + some_bool_param: bool + + +@param_function() +def some_converting_params_func( + raw_param_spec: RawParam, +) -> ConvertedParam: + return ConvertedParam( + some_float_param=raw_param_spec["some_float_param"], + some_bool_param=raw_param_spec["some_bool_param"], + ) + + +@param_function() +def some_function_taking_scalar( + some_int_scalar: int, some_float_scalar: float, some_bool_scalar: bool +) -> float: + return some_int_scalar + some_float_scalar + int(some_bool_scalar) + + +SOME_RAW_PARAM = RawParam( + value={ + "some_float_param": 1, + "some_bool_param": False, + }, + leaf_name="raw_param_spec", + start_date="2025-01-01", + end_date="2025-12-31", + name="raw_param_spec", + description="Some raw param spec", + unit=None, + reference_period=None, + note=None, + reference=None, +) + + +SOME_INT_PARAM = ScalarParam( + value=1, + leaf_name="some_int_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_int_param", + description="Some int param", + unit=None, + reference_period=None, + note=None, + reference=None, +) + + +SOME_DICT_PARAM = DictParam( + value={"a": 1, "b": False}, + leaf_name="some_dict_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_dict_param", + description="Some dict param", + unit=None, + reference_period=None, + note=None, + reference=None, +) + + +SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( + value=PiecewisePolynomialParamValue( + thresholds=[1, 2, 3], + intercepts=[1, 2, 3], + rates=[1, 2, 3], + ), + leaf_name="some_piecewise_polynomial_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_piecewise_polynomial_param", + description="Some piecewise polynomial param", + unit=None, + reference_period=None, + note=None, + reference=None, +) + + @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 @@ -102,36 +203,243 @@ def foo_fam(foo: int, fam_id: int) -> int: @pytest.fixture(scope="module") -def mettsim_environment(): +def mettsim_environment() -> NestedPolicyEnvironment: return set_up_policy_environment( - resource_dir=RESOURCE_DIR, + root=METTSIM_ROOT, date="2025-01-01", ) # Create a function which is used by some tests below @policy_function() -def func_before_partial(arg_1, payroll_tax_params): - return arg_1 + payroll_tax_params["test_param_1"] +def func_before_partial(arg_1, some_param): + return arg_1 + some_param -func_after_partial = _partial_parameters_to_functions( - {"some_func": func_before_partial}, - {"payroll_tax": {"test_param_1": 1}}, +func_after_partial = required_column_functions( + policy_environment_with_processed_params_and_scalars={ + "some_func": func_before_partial, + "some_param": SOME_INT_PARAM.value, + }, + rounding=False, )["some_func"] -def test_output_as_tree(minimal_input_data): - environment = PolicyEnvironment( - { - "p_id": p_id, - "module": {"some_func": some_func}, - } +@pytest.fixture +@policy_function(leaf_name="foo") +def function_with_bool_return(x: bool) -> bool: + return x + + +@policy_input() +def x() -> int: + pass + + +@policy_input() +def x_f() -> float: + pass + + +@policy_input() +def x_b() -> bool: + pass + + +@policy_input() +def kin_id() -> int: + pass + + +@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) +def y_kin(kin_id: int, x: int) -> int: + pass + + +@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) +def y_kin_namespaced_input(kin_id: int, inputs__x: int) -> int: + pass + + +@pytest.fixture +@policy_function(leaf_name="bar") +def function_with_int_return(x: int) -> int: + return x + + +@pytest.fixture +@policy_function(leaf_name="baz") +def function_with_float_return(x: int) -> float: + return x + + +def some_x(x): + return x + + +def return_x_kin(x_kin: int) -> int: + return x_kin + + +def return_y_kin(y_kin: int) -> int: + return y_kin + + +def return_n1__x_kin(n1__x_kin: int) -> int: + return n1__x_kin + + +@pytest.mark.parametrize( + ( + "policy_environment", + "targets_tree", + "data_tree", + ), + [ + ( + # Aggregations derived from simple function arguments + { + "kin_id": kin_id, + "p_id": p_id, + "n1": { + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(return_n1__x_kin), + "x": x, + }, + }, + {"n1": {"f": None}}, + { + "n1": {"x": pd.Series([1, 1, 1])}, + "kin_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + }, + ), + ( + # Aggregations derived from namespaced function arguments + { + "kin_id": kin_id, + "p_id": p_id, + "n1": { + "f": policy_function(leaf_name="f")(return_x_kin), + "x": x, + }, + }, + {"n1": {"f": None}}, + { + "n1": {"x": pd.Series([1, 1, 1])}, + "kin_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, + }, + ), + ( + # Aggregations derived from target + { + "kin_id": kin_id, + "p_id": p_id, + "n1": { + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(some_x), + "x": x, + }, + }, + {"n1": {"f_kin": None}}, + { + "n1": {"x": pd.Series([1, 1, 1])}, + "kin_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, + }, + ), + ( + # Explicit aggregation via objects tree with leaf name input + { + "kin_id": kin_id, + "p_id": p_id, + "n1": { + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(some_x), + "x": x, + }, + "y_kin": y_kin, + }, + {"n1": {"f": None}}, + { + "n1": {"x": pd.Series([1, 1, 1])}, + "kin_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, + }, + ), + ( + # Explicit aggregation via objects tree with namespaced input + { + "kin_id": kin_id, + "p_id": p_id, + "n1": { + "f": policy_function( + leaf_name="f", vectorization_strategy="vectorize" + )(return_y_kin), + "y_kin": y_kin_namespaced_input, + }, + "inputs": {"x": x}, + }, + {"n1": {"f": None}}, + { + "inputs": {"x": pd.Series([1, 1, 1])}, + "kin_id": pd.Series([0, 0, 0]), + "p_id": pd.Series([0, 1, 2]), + "num_segments": 1, + }, + ), + ], +) +def test_create_agg_by_group_functions( + policy_environment, + targets_tree, + data_tree, +): + compute_taxes_and_transfers( + policy_environment=policy_environment, + data_tree=data_tree, + targets_tree=targets_tree, + jit=jit, ) + +@pytest.mark.parametrize( + "policy_environment, targets, data_columns, expected_error_match", + [ + ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), + ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), + ({"foo": some_x}, {"bar": None}, {"spam"}, "('bar',)"), + ({"foo__baz": some_x}, {"foo__bar": None}, {"spam"}, "('foo', 'bar')"), + ], +) +def test_fail_if_targets_not_in_policy_environment_or_data( + policy_environment, targets, data_columns, expected_error_match +): + with pytest.raises(ValueError) as e: + _fail_if_targets_not_in_policy_environment_or_data( + policy_environment=policy_environment, + targets=targets, + data_columns=data_columns, + ) + assert expected_error_match in str(e.value) + + +def test_output_is_tree(minimal_input_data): + policy_environment = { + "p_id": p_id, + "module": {"some_func": some_func}, + } + out = compute_taxes_and_transfers( data_tree=minimal_input_data, - environment=environment, + policy_environment=policy_environment, targets_tree={"module": {"some_func": None}}, jit=jit, ) @@ -141,58 +449,82 @@ def test_output_as_tree(minimal_input_data): assert isinstance(out["module"]["some_func"], TTSIMArray) -def test_warn_if_functions_and_columns_overlap(): - environment = PolicyEnvironment( - { - "some_func": some_func, - "some_target": another_func, - } +def test_params_target_is_allowed(minimal_input_data): + policy_environment = { + "p_id": p_id, + "module": {"some_func": some_func}, + "some_param": ScalarParam( + value=1, + leaf_name="some_param", + start_date="2025-01-01", + end_date="2025-12-31", + unit="Euros", + reference_period="Year", + name={"de": "Ein Parameter", "en": "Some parameter"}, + description={"de": "Ein Parameter", "en": "Some parameter"}, + note=None, + reference=None, + ), + } + + out = compute_taxes_and_transfers( + data_tree=minimal_input_data, + policy_environment=policy_environment, + targets_tree={"some_param": None, "module": {"some_func": None}}, + jit=jit, ) - with pytest.warns(FunctionsAndColumnsOverlapWarning): + + assert isinstance(out, dict) + assert "some_param" in out + assert out["some_param"] == 1 + + +def test_warn_if_functions_and_columns_overlap(): + with pytest.warns(FunctionsAndDataOverlapWarning): compute_taxes_and_transfers( data_tree={ "p_id": pd.Series([0]), "some_func": pd.Series([1]), }, - environment=environment, + policy_environment={ + "some_func": some_func, + "some_target": another_func, + }, targets_tree={"some_target": None}, jit=jit, ) def test_dont_warn_if_functions_and_columns_dont_overlap(): - environment = PolicyEnvironment({"some_func": some_func}) with warnings.catch_warnings(): - warnings.filterwarnings("error", category=FunctionsAndColumnsOverlapWarning) + warnings.filterwarnings("error", category=FunctionsAndDataOverlapWarning) compute_taxes_and_transfers( data_tree={ "p_id": pd.Series([0]), "x": pd.Series([1]), }, - environment=environment, + policy_environment={"some_func": some_func}, targets_tree={"some_func": None}, jit=jit, ) def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): - environment = PolicyEnvironment( - { - "some_func": some_func, - "unique": another_func, - } - ) + policy_environment = { + "some_func": some_func, + "unique": another_func, + } with warnings.catch_warnings( - category=FunctionsAndColumnsOverlapWarning, record=True + category=FunctionsAndDataOverlapWarning, record=True ) as warning_list: - warnings.filterwarnings("ignore", category=FunctionsAndColumnsOverlapWarning) + warnings.filterwarnings("ignore", category=FunctionsAndDataOverlapWarning) compute_taxes_and_transfers( data_tree={ "p_id": pd.Series([0]), "some_func": pd.Series([1]), "x": pd.Series([1]), }, - environment=environment, + policy_environment=policy_environment, targets_tree={"unique": None}, jit=jit, ) @@ -214,8 +546,10 @@ def test_fail_if_p_id_is_non_unique(): _fail_if_p_id_is_non_unique(data) -def test_fail_if_foreign_key_points_to_non_existing_p_id(mettsim_environment): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) +def test_fail_if_foreign_key_points_to_non_existing_p_id( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) data = { "p_id": pd.Series([1, 2, 3]), "p_id_spouse": pd.Series([0, 1, 2]), @@ -223,43 +557,55 @@ def test_fail_if_foreign_key_points_to_non_existing_p_id(mettsim_environment): with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): _fail_if_foreign_keys_are_invalid_in_data( - data=data, ttsim_objects=flat_objects_tree + data=data, + input_data={k: v for k, v in data.items() if k != "p_id"}, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, ) -def test_allow_minus_one_as_foreign_key(mettsim_environment): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) +def test_allow_minus_one_as_foreign_key(mettsim_environment: NestedPolicyEnvironment): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) data = { "p_id": pd.Series([1, 2, 3]), "p_id_spouse": pd.Series([-1, 1, 2]), } _fail_if_foreign_keys_are_invalid_in_data( - data=data, ttsim_objects=flat_objects_tree + data=data, + input_data={k: v for k, v in data.items() if k != "p_id"}, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, ) -def test_fail_if_foreign_key_points_to_same_row_if_not_allowed(mettsim_environment): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) +def test_fail_if_foreign_key_points_to_same_row_if_not_allowed( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) data = { "p_id": pd.Series([1, 2, 3]), "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), } _fail_if_foreign_keys_are_invalid_in_data( - data=data, ttsim_objects=flat_objects_tree + data=data, + input_data={k: v for k, v in data.items() if k != "p_id"}, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, ) -def test_fail_if_foreign_key_points_to_same_row_if_allowed(mettsim_environment): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment.raw_objects_tree) +def test_fail_if_foreign_key_points_to_same_row_if_allowed( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) data = { "p_id": pd.Series([1, 2, 3]), "p_id_child_": pd.Series([1, 3, 3]), } _fail_if_foreign_keys_are_invalid_in_data( - data=data, ttsim_objects=flat_objects_tree + data=data, + input_data={k: v for k, v in data.items() if k != "p_id"}, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, ) @@ -282,12 +628,10 @@ def b(a): def c(b): return b - environment = PolicyEnvironment( - { - "b": policy_function(leaf_name="b")(b), - "c": policy_function(leaf_name="c")(c), - } - ) + policy_environment = { + "b": policy_function(leaf_name="b")(b), + "c": policy_function(leaf_name="c")(c), + } with pytest.raises( ValueError, @@ -295,7 +639,7 @@ def c(b): ): compute_taxes_and_transfers( data_tree=minimal_input_data, - environment=environment, + policy_environment=policy_environment, targets_tree={"c": None}, jit=jit, ) @@ -310,10 +654,13 @@ def a() -> np.ndarray: def b(a): return a - environment = PolicyEnvironment({"a": a, "b": b}) + policy_environment = { + "a": a, + "b": b, + } compute_taxes_and_transfers( data_tree=minimal_input_data, - environment=environment, + policy_environment=policy_environment, targets_tree={"b": None}, jit=jit, ) @@ -322,15 +669,13 @@ def b(a): def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions( minimal_input_data, ): - environment = PolicyEnvironment({}) - with pytest.raises( ValueError, match="The following targets have no corresponding function", ): compute_taxes_and_transfers( data_tree=minimal_input_data, - environment=environment, + policy_environment={}, targets_tree={"unknown_target": None}, jit=jit, ) @@ -344,7 +689,7 @@ def test_fail_if_missing_p_id(): ): compute_taxes_and_transfers( data_tree=data, - environment=PolicyEnvironment({}), + policy_environment={}, targets_tree={}, jit=jit, ) @@ -360,27 +705,27 @@ def test_fail_if_non_unique_p_id(minimal_input_data): ): compute_taxes_and_transfers( data_tree=data, - environment=PolicyEnvironment({}), + policy_environment={}, targets_tree={}, jit=jit, ) -def test_partial_parameters_to_functions(): +def test_partial_params_to_functions(): # Partial function produces correct result assert func_after_partial(2) == 3 -def test_partial_parameters_to_functions_removes_argument(): +def test_partial_params_to_functions_removes_argument(): # Fails if params is added to partial function with pytest.raises( TypeError, match=("got multiple values for argument "), ): - func_after_partial(2, {"test_param_1": 1}) + func_after_partial(2, 1) # No error for original function - func_before_partial(2, {"test_param_1": 1}) + func_before_partial(2, 1) def test_user_provided_aggregate_by_group_specs(): @@ -390,7 +735,7 @@ def test_user_provided_aggregate_by_group_specs(): "module_name": {"betrag_m": pd.Series([100, 100, 100], name="betrag_m")}, } - inputs = { + policy_environment = { "p_id": p_id, "fam_id": fam_id, "module_name": {"betrag_m": betrag_m}, @@ -400,7 +745,7 @@ def test_user_provided_aggregate_by_group_specs(): out = compute_taxes_and_transfers( data_tree=data, - environment=PolicyEnvironment(raw_objects_tree=inputs), + policy_environment=policy_environment, targets_tree={"module_name": {"betrag_m_fam": None}}, jit=jit, ) @@ -428,20 +773,18 @@ def betrag_m_double(betrag_m): def betrag_m_double_fam(betrag_m_double, fam_id) -> float: pass - environment = PolicyEnvironment( - { - "p_id": p_id, - "fam_id": fam_id, - "module_name": { - "betrag_m_double": betrag_m_double, - "betrag_m_double_fam": betrag_m_double_fam, - }, - } - ) + policy_environment = { + "p_id": p_id, + "fam_id": fam_id, + "module_name": { + "betrag_m_double": betrag_m_double, + "betrag_m_double_fam": betrag_m_double_fam, + }, + } actual = compute_taxes_and_transfers( data_tree=data, - environment=environment, + policy_environment=policy_environment, targets_tree={"module_name": {"betrag_m_double_fam": None}}, debug=False, jit=jit, @@ -472,20 +815,18 @@ def betrag_double_m(betrag_m): def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: pass - environment = PolicyEnvironment( - { - "p_id": p_id, - "fam_id": fam_id, - "module_name": { - "betrag_double_m": betrag_double_m, - "max_betrag_double_m_fam": max_betrag_double_m_fam, - }, - } - ) + policy_environment = { + "p_id": p_id, + "fam_id": fam_id, + "module_name": { + "betrag_double_m": betrag_double_m, + "max_betrag_double_m_fam": max_betrag_double_m_fam, + }, + } actual = compute_taxes_and_transfers( data_tree=data, - environment=environment, + policy_environment=policy_environment, targets_tree={"module_name": {"max_betrag_double_y_fam": None}}, debug=False, jit=jit, @@ -546,7 +887,7 @@ def test_user_provided_aggregate_by_p_id_specs( def source() -> int: return np.array([100, 200, 300]) - raw_objects_tree = merge_trees( + policy_environment = merge_trees( agg_functions, { "module": {leaf_name: source}, @@ -555,10 +896,9 @@ def source() -> int: }, ) - environment = PolicyEnvironment(raw_objects_tree=raw_objects_tree) out = compute_taxes_and_transfers( - minimal_input_data_shared_fam, - environment, + data_tree=minimal_input_data_shared_fam, + policy_environment=policy_environment, targets_tree=target_tree, jit=jit, )["module"][next(iter(target_tree["module"].keys()))] @@ -566,68 +906,67 @@ def source() -> int: numpy.testing.assert_array_almost_equal(out, expected) -@pytest.mark.parametrize( - ("tree", "leaf_checker", "err_substr"), - [ - ( - {"a": 1, "b": 2}, - lambda leaf: leaf is None, - "Leaf at tree[a] is invalid: got 1 of type <class 'int'>.", - ), - ( - {"a": None, "b": {"c": None, "d": 1}}, - lambda leaf: leaf is None, - "Leaf at tree[b][d] is invalid: got 1 of type <class 'int'>.", - ), - ( - [1, 2, 3], - lambda leaf: leaf is None, - "tree must be a dict, got <class 'list'>.", - ), - ( - {1: 2}, - lambda leaf: leaf is None, - "Key 1 in tree must be a string but got <class 'int'>.", - ), - ], -) -def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): - with pytest.raises(TypeError, match=re.escape(err_substr)): - assert_valid_ttsim_pytree(tree, leaf_checker, "tree") - - @pytest.mark.parametrize( ( - "environment", + "policy_environment", "time_units", "expected", ), [ ( - PolicyEnvironment( - raw_objects_tree={ - "foo_m": policy_function(leaf_name="foo_m")(identity), - "fam_id": fam_id, - } - ), + { + "foo_m": policy_function(leaf_name="foo_m")(identity), + "fam_id": fam_id, + }, ["m", "y"], {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, ), ( - PolicyEnvironment( - raw_objects_tree={ - "foo": policy_function(leaf_name="foo")(identity), - "fam_id": fam_id, - } - ), + { + "foo": policy_function(leaf_name="foo")(identity), + "fam_id": fam_id, + }, ["m", "y"], {"foo", "foo_fam"}, ), ], ) -def test_get_top_level_namespace(environment, time_units, expected): +def test_get_top_level_namespace(policy_environment, time_units, expected): result = _get_top_level_namespace( - environment=environment, + policy_environment=policy_environment, time_units=time_units, ) assert all(name in result for name in expected) + + +def test_policy_environment_with_params_and_scalars_is_processed(): + policy_environment = { + "raw_param_spec": SOME_RAW_PARAM, + "some_int_param": SOME_INT_PARAM, + "some_dict_param": SOME_DICT_PARAM, + "some_piecewise_polynomial_param": SOME_PIECEWISE_POLYNOMIAL_PARAM, + "some_int_scalar": 1, + "some_float_scalar": 2.0, + "some_bool_scalar": True, + "some_scalar_params_func": some_scalar_params_func, + "some_converting_params_func": some_converting_params_func, + "some_function_taking_scalar": some_function_taking_scalar, + } + processed_tree_with_params = column_functions_with_processed_params_and_scalars( + flat_policy_environment_with_derived_functions_and_without_overridden_functions=policy_environment, + ) + expected = { + "some_converting_params_func": ConvertedParam( + some_float_param=1, + some_bool_param=False, + ), + "some_scalar_params_func": 1, + "some_int_param": SOME_INT_PARAM.value, + "some_dict_param": SOME_DICT_PARAM.value, + "some_piecewise_polynomial_param": SOME_PIECEWISE_POLYNOMIAL_PARAM.value, + "some_int_scalar": 1, + "some_float_scalar": 2.0, + "some_bool_scalar": True, + "some_function_taking_scalar": 4.0, + } + assert processed_tree_with_params == expected diff --git a/tests/ttsim/test_convert_nested_data.py b/tests/ttsim/test_convert_nested_data.py new file mode 100644 index 0000000000..8e1d9339e7 --- /dev/null +++ b/tests/ttsim/test_convert_nested_data.py @@ -0,0 +1,397 @@ +from __future__ import annotations + +import dags.tree as dt +import numpy as np +import pandas as pd +import pytest + +from ttsim import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt1dLookupTableParamValue, + DictParam, + PiecewisePolynomialParam, + PiecewisePolynomialParamValue, + ScalarParam, + compute_taxes_and_transfers, + dataframe_to_nested_data, + nested_data_to_dataframe, + param_function, + policy_function, +) + +_GENERIC_PARAM_SPEC = { + "start_date": "2024-01-01", + "end_date": "2024-12-31", + "unit": None, + "reference_period": None, + "name": { + "de": "generic_param", + "en": "generic_param", + }, + "description": { + "de": "generic_param", + "en": "generic_param", + }, +} + + +@policy_function() +def int_policy_function() -> int: + return 1 + + +@param_function() +def int_param_function() -> int: + return 1 + + +_SOME_SCALAR_PARAM = ScalarParam( + leaf_name="some_scalar_param", + value=1, + **_GENERIC_PARAM_SPEC, +) + + +_SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( + leaf_name="some_piecewise_polynomial_param", + value=PiecewisePolynomialParamValue( + thresholds=np.array([1, 2, 3]), + intercepts=np.array([1, 2, 3]), + rates=np.array([1, 2, 3]), + ), + **_GENERIC_PARAM_SPEC, +) + + +_SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM = ConsecutiveInt1dLookupTableParam( + leaf_name="some_consecutive_int_1d_lookup_table_param", + value=ConsecutiveInt1dLookupTableParamValue( + base_to_subtract=1, + values_to_look_up=np.array([1, 2, 3]), + ), + **_GENERIC_PARAM_SPEC, +) + + +_SOME_DICT_PARAM = DictParam( + leaf_name="some_dict_param", + value={"a": 1, "b": 2}, + **_GENERIC_PARAM_SPEC, +) + + +@pytest.fixture +def minimal_data_tree(): + return { + "hh_id": np.array([1, 2, 3]), + "p_id": np.array([1, 2, 3]), + } + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "df", + "expected_output", + ), + [ + ( + { + "n1": { + "n2": "a", + }, + }, + pd.DataFrame({"a": [1, 2, 3]}), + {"n1": {"n2": pd.Series([1, 2, 3])}}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": "b", + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": 3, + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, + ), + ], +) +def test_dataframe_to_nested_data( + inputs_tree_to_df_columns, + df, + expected_output, +): + result = dataframe_to_nested_data( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, + df=df, + ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output = dt.flatten_to_qual_names(expected_output) + + assert set(flat_result.keys()) == set(flat_expected_output.keys()) + for key in flat_result: + pd.testing.assert_series_equal( + flat_result[key], flat_expected_output[key], check_names=False + ) + + +@pytest.mark.parametrize( + "df", + [ + pd.DataFrame({True: [1, 2]}), + pd.DataFrame({1: [1, 2]}), + ], +) +def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): + with pytest.raises( + ValueError, match="DataFrame column names cannot be booleans or numbers." + ): + dataframe_to_nested_data(inputs_tree_to_df_columns={}, df=df) + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "expected_error_message", + ), + [ + ( + [], + "The inputs tree to column mapping must be a \\(nested\\) dictionary.", + ), + ( + { + "n1": { + "n2": pd.Series([1, 2, 3]), + }, + }, + "n1__n2: Series", + ), + ( + { + "n1": { + "n2": None, + }, + }, + "n1__n2: NoneType", + ), + ( + { + "n1": { + True: 2, + }, + }, + "All path elements of `inputs_tree_to_df_columns` must be strings.", + ), + ], +) +def test_create_data_tree_fails_if_mapper_has_incorrect_format( + inputs_tree_to_df_columns, expected_error_message +): + with pytest.raises(TypeError, match=expected_error_message): + dataframe_to_nested_data( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() + ) + + +@pytest.mark.parametrize( + ( + "environment", + "targets_tree_to_outputs_df_columns", + "expected_output", + ), + [ + # Two policy functions + ( + { + "some_policy_function": int_policy_function, + "another_policy_function": int_policy_function, + }, + { + "some_policy_function": "res1", + "another_policy_function": "res2", + }, + pd.DataFrame( + {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One policy function + ( + { + "some_policy_function": int_policy_function, + }, + { + "some_policy_function": "res1", + }, + pd.DataFrame( + {"res1": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One param function + ( + { + "some_param_function": int_param_function, + }, + { + "some_param_function": "res1", + }, + pd.DataFrame( + {"res1": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One param function and one policy function + ( + { + "some_param_function": int_param_function, + "some_policy_function": int_policy_function, + }, + { + "some_param_function": "res1", + "some_policy_function": "res2", + }, + pd.DataFrame( + {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One scalar param + ( + { + "some_scalar_param": _SOME_SCALAR_PARAM, + }, + {"some_scalar_param": "res1"}, + pd.DataFrame( + {"res1": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One scalar param and one policy function + ( + { + "some_scalar_param": _SOME_SCALAR_PARAM, + "some_policy_function": int_policy_function, + }, + { + "some_scalar_param": "res1", + "some_policy_function": "res2", + }, + pd.DataFrame( + {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + ], +) +def test_nested_data_to_dataframe( + environment, + minimal_data_tree, + targets_tree_to_outputs_df_columns, + expected_output, +): + result_nested_data = compute_taxes_and_transfers( + data_tree=minimal_data_tree, + policy_environment=environment, + targets_tree=targets_tree_to_outputs_df_columns, + ) + result_df = nested_data_to_dataframe( + nested_data_with_p_id={ + "p_id": minimal_data_tree["p_id"], + **result_nested_data, + }, + nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + ) + pd.testing.assert_frame_equal(result_df, expected_output, check_like=True) + + +@pytest.mark.parametrize( + ( + "environment", + "targets_tree_to_outputs_df_columns", + ), + [ + ( + { + "some_piecewise_polynomial_param": _SOME_PIECEWISE_POLYNOMIAL_PARAM, + }, + {"some_piecewise_polynomial_param": "res1"}, + ), + ( + { + "some_consecutive_int_1d_lookup_table_param": ( + _SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM + ), + }, + {"some_consecutive_int_1d_lookup_table_param": "res1"}, + ), + ], +) +def test_nested_data_to_dataframe_fails_if_noncompatible_objects_are_returned( + environment, + targets_tree_to_outputs_df_columns, + minimal_data_tree, +): + result_nested_data = compute_taxes_and_transfers( + data_tree=minimal_data_tree, + policy_environment=environment, + targets_tree=targets_tree_to_outputs_df_columns, + ) + with pytest.raises( + TypeError, match=r"The following paths contain non-scalar\nobjects" + ): + nested_data_to_dataframe( + nested_data_with_p_id={ + "p_id": minimal_data_tree["p_id"], + **result_nested_data, + }, + nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + ) + + +@pytest.mark.parametrize( + ( + "environment", + "targets_tree_to_outputs_df_columns", + ), + [ + ( + { + "some_dict_param": _SOME_DICT_PARAM, + }, + {"some_dict_param": "res1"}, + ), + ], +) +def test_nested_data_to_dataframe_fails_because_raw_param_dict_is_returned( + environment, + targets_tree_to_outputs_df_columns, + minimal_data_tree, +): + result_nested_data = compute_taxes_and_transfers( + data_tree=minimal_data_tree, + policy_environment=environment, + targets_tree=targets_tree_to_outputs_df_columns, + ) + with pytest.raises( + ValueError, + match="failed because the following paths\nare not mapped to a column name", + ): + nested_data_to_dataframe( + nested_data_with_p_id={ + "p_id": minimal_data_tree["p_id"], + **result_nested_data, + }, + nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + ) diff --git a/tests/ttsim/test_create_data_tree.py b/tests/ttsim/test_create_data_tree.py deleted file mode 100644 index 5fe98cd982..0000000000 --- a/tests/ttsim/test_create_data_tree.py +++ /dev/null @@ -1,121 +0,0 @@ -import dags.tree as dt -import pandas as pd -import pytest - -from ttsim import create_data_tree_from_df - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "df", - "expected_output", - ), - [ - ( - { - "n1": { - "n2": "a", - }, - }, - pd.DataFrame({"a": [1, 2, 3]}), - {"n1": {"n2": pd.Series([1, 2, 3])}}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": "b", - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": 3, - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, - ), - ], -) -def test_create_data_tree_from_df( - inputs_tree_to_df_columns, - df, - expected_output, -): - result = create_data_tree_from_df( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, - df=df, - ) - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output = dt.flatten_to_qual_names(expected_output) - - assert set(flat_result.keys()) == set(flat_expected_output.keys()) - for key in flat_result: - pd.testing.assert_series_equal( - flat_result[key], flat_expected_output[key], check_names=False - ) - - -@pytest.mark.parametrize( - "df", - [ - pd.DataFrame({True: [1, 2]}), - pd.DataFrame({1: [1, 2]}), - ], -) -def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): - with pytest.raises( - ValueError, match="DataFrame column names cannot be booleans or numbers." - ): - create_data_tree_from_df(inputs_tree_to_df_columns={}, df=df) - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "expected_error_message", - ), - [ - ( - [], - "The input tree to column mapping must be a \\(nested\\) dictionary.", - ), - ( - { - "n1": { - "n2": pd.Series([1, 2, 3]), - }, - }, - "n1__n2: Series", - ), - ( - { - "n1": { - "n2": None, - }, - }, - "n1__n2: NoneType", - ), - ( - { - "n1": { - True: 2, - }, - }, - "All path elements of `inputs_tree_to_df_columns` must be strings.", - ), - ], -) -def test_create_data_tree_fails_if_mapper_has_incorrect_format( - inputs_tree_to_df_columns, expected_error_message -): - with pytest.raises(TypeError, match=expected_error_message): - create_data_tree_from_df( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() - ) diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml index 7f5caf98d9..4d6b4115fc 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml @@ -40,7 +40,7 @@ outputs: - 0.0 - 0.0 housing_benefits__income__amount_m: - - 1052.0 + - 1054.00 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: - false diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml index 127f9a18d5..1380c06ad0 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml @@ -37,10 +37,10 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 281.0 - - 281.0 + - 282.0 + - 282.0 housing_benefits__income__amount_m: - - 562.0 + - 564.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: - true diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml index 2804adecad..a7813d0ab9 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml @@ -51,7 +51,7 @@ outputs: - 0.0 - 0.0 housing_benefits__income__amount_m: - - 1055 + - 1056.0 - 0.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml index 2930f71a80..da79ee227d 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml @@ -47,11 +47,11 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 282.5 - - 282.5 - - 282.5 + - 283.0 + - 283.0 + - 283.0 housing_benefits__income__amount_m: - - 565 + - 566.0 - 0.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml index d9a40ae46c..2f29c784c2 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml @@ -40,7 +40,7 @@ outputs: - 0.0 - 0.0 housing_benefits__income__amount_m: - - 1052.0 + - 1054.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: - false diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml index 5e4f933935..c7f11c642f 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml @@ -37,10 +37,10 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 281.0 - - 281.0 + - 282.0 + - 282.0 housing_benefits__income__amount_m: - - 562.0 + - 564.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: - true diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml index 9e6e4c5aaa..6ec69ba891 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml @@ -47,11 +47,11 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 527.5 - - 527.5 - - 527.5 + - 528.0 + - 528.0 + - 528.0 housing_benefits__income__amount_m: - - 1055 + - 1056.0 - 0.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml index 9c681c3516..1c98d1032d 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml @@ -47,11 +47,11 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 282.5 - - 282.5 - - 282.5 + - 283.0 + - 283.0 + - 283.0 housing_benefits__income__amount_m: - - 565 + - 566.0 - 0.0 - 0.0 housing_benefits__eligibility__requirement_fulfilled_fam: diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml index a5ea9b0ff6..b62b6153b3 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml @@ -67,13 +67,13 @@ inputs: - 0.0 outputs: housing_benefits__amount_m_fam: - - 296.5 - - 296.5 - - 296.5 - - 296.5 - - 296.5 + - 297.5 + - 297.5 + - 297.5 + - 297.5 + - 297.5 housing_benefits__income__amount_m: - - 593.0 + - 595.0 - 0.0 - 0.0 - 0.0 diff --git a/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml b/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml new file mode 100644 index 0000000000..f27df35bda --- /dev/null +++ b/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml @@ -0,0 +1,28 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + parent_is_noble: + - false + - false + - true + orc_hunting_bounty__small_orcs_hunted: + - 2 + - 0 + - 0 + orc_hunting_bounty__large_orcs_hunted: + - 0 + - 2 + - 1 +outputs: + orc_hunting_bounty__amount: + - 200.0 + - 400.0 + - 100.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml index 4b9890b470..ff65c690f2 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -49,7 +49,7 @@ outputs: - 9900.0 - 9900.0 payroll_tax__amount_y: - - 2970.0 + - 2950.0 - 0.0 payroll_tax__child_tax_credit__claim_of_child_y: - 0.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml index ee5aaba26d..8ba7f4a34e 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml @@ -49,7 +49,7 @@ outputs: - 9900 - 9900 payroll_tax__amount_y: - - 1485.0 + - 1480.0 - 0.0 payroll_tax__child_tax_credit__claim_of_child_y: - 0.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml index fde53efcf2..c747ccde38 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml @@ -55,7 +55,7 @@ outputs: - 0.0 - 0.0 payroll_tax__amount_y: - - 2940 + - 2920.0 - 0.0 - 0.0 payroll_tax__child_tax_credit__claim_of_child_y: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml index dd6a74ea07..012f8229c4 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml @@ -59,7 +59,7 @@ outputs: - 9800 - 0.0 payroll_tax__amount_y: - - 2940 + - 2920.0 - 0.0 - 0.0 payroll_tax__child_tax_credit__claim_of_child_y: diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml index 17ece9b9a3..33b3f20b5d 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml @@ -79,7 +79,7 @@ outputs: - 0.0 - 0.0 payroll_tax__amount_y: - - 2880.0 + - 2860.0 - 0.0 - 0.0 - 0.0 diff --git a/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml b/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml new file mode 100644 index 0000000000..1639eafc72 --- /dev/null +++ b/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml @@ -0,0 +1,20 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + property_tax__acre_size_in_hectares: + - 5 + - 20 + - 200 +outputs: + property_tax__amount_y: + - 0.0 + - 1000.0 + - 10000.0 diff --git a/tests/ttsim/test_dates_active.py b/tests/ttsim/test_dates_active.py deleted file mode 100644 index 6436a1a223..0000000000 --- a/tests/ttsim/test_dates_active.py +++ /dev/null @@ -1,267 +0,0 @@ -from __future__ import annotations - -import datetime -from typing import TYPE_CHECKING - -import pytest - -from ttsim import policy_function -from ttsim.policy_environment import ( - ConflictingTimeDependentObjectsError, - fail_if_multiple_ttsim_objects_are_active_at_the_same_time, -) - -if TYPE_CHECKING: - from ttsim.typing import FlatTTSIMObjectDict - - -@pytest.mark.parametrize( - "date_string, expected", - [ - ("2023-01-20", datetime.date(2023, 1, 20)), - ], -) -def test_start_date_valid(date_string: str, expected: datetime.date): - @policy_function(start_date=date_string) - def test_func(): - pass - - assert test_func.start_date == expected - - -@pytest.mark.parametrize( - "date_string", - [ - "20230120", - "20.1.2023", - "20th January 2023", - ], -) -def test_start_date_invalid(date_string: str): - with pytest.raises(ValueError): - - @policy_function(start_date=date_string) - def test_func(): - pass - - -def test_start_date_missing(): - @policy_function() - def test_func(): - pass - - assert test_func.start_date == datetime.date(1900, 1, 1) - - -# End date ------------------------------------------------- - - -@pytest.mark.parametrize( - "date_string, expected", - [ - ("2023-01-20", datetime.date(2023, 1, 20)), - ], -) -def test_end_date_valid(date_string: str, expected: datetime.date): - @policy_function(end_date=date_string) - def test_func(): - pass - - assert test_func.end_date == expected - - -@pytest.mark.parametrize( - "date_string", - [ - "20230120", - "20.1.2023", - "20th January 2023", - ], -) -def test_end_date_invalid(date_string: str): - with pytest.raises(ValueError): - - @policy_function(end_date=date_string) - def test_func(): - pass - - -def test_end_date_missing(): - @policy_function() - def test_func(): - pass - - assert test_func.end_date == datetime.date(2100, 12, 31) - - -# Change name ---------------------------------------------- - - -def test_dates_active_change_name_given(): - @policy_function(leaf_name="renamed_func") - def test_func(): - pass - - assert test_func.leaf_name == "renamed_func" - - -def test_dates_active_change_name_missing(): - @policy_function() - def test_func(): - pass - - assert test_func.leaf_name == "test_func" - - -# Empty interval ------------------------------------------- - - -def test_dates_active_empty_interval(): - with pytest.raises(ValueError): - - @policy_function(start_date="2023-01-20", end_date="2023-01-19") - def test_func(): - pass - - -# Conflicts ------------------------------------------------ - - -def identity(x): - return x - - -@pytest.mark.parametrize( - "orig_ttsim_objects_tree", - [ - # Same global module, no overlapping periods. - { - ("a",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - # Same submodule, no overlapping periods. - { - ("c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="g", - )(identity), - }, - # Different modules, no overlapping periods. - { - ("c", "f"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - )(identity), - ("d", "f"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - )(identity), - }, - # Different paths, overlapping periods. - { - ("x", "c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("y", "c", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="g", - )(identity), - }, - ], -) -def test_dates_active_no_conflicts(orig_ttsim_objects_tree): - fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - orig_ttsim_objects_tree=orig_ttsim_objects_tree - ) - - -@pytest.mark.parametrize( - "orig_ttsim_objects_tree", - [ - # Exact overlap. - { - ("a",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Active period for "a" is subset of "b". - { - ("a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b"): policy_function( - start_date="2021-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - }, - # Some overlap. - { - ("a",): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Same as before, but defined in different modules. - { - ("c", "a"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("d", "b"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Same as before, but defined in different modules without leaf name. - { - ("c", "f"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - )(identity), - ("d", "f"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - )(identity), - }, - ], -) -def test_dates_active_with_conflicts(orig_ttsim_objects_tree: FlatTTSIMObjectDict): - with pytest.raises(ConflictingTimeDependentObjectsError): - fail_if_multiple_ttsim_objects_are_active_at_the_same_time( - orig_ttsim_objects_tree=orig_ttsim_objects_tree - ) diff --git a/tests/ttsim/test_import_version.py b/tests/ttsim/test_import_version.py index 811cec60e9..7e946d6ee6 100644 --- a/tests/ttsim/test_import_version.py +++ b/tests/ttsim/test_import_version.py @@ -2,12 +2,15 @@ import sys -import gettsim +import pytest +import ttsim + +@pytest.mark.xfail(reason="Requires own package.") def test_import(): - assert hasattr(gettsim, "__version__") + assert hasattr(ttsim, "__version__") def test_python_version(): - assert sys.version_info >= (3, 9) + assert sys.version_info >= (3, 11) diff --git a/tests/ttsim/test_join.py b/tests/ttsim/test_join.py index 709386fc19..803709ecc1 100644 --- a/tests/ttsim/test_join.py +++ b/tests/ttsim/test_join.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from ttsim import join diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/test_loader.py index e02151c970..e041247e57 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/test_loader.py @@ -1,56 +1,22 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from mettsim.config import METTSIM_ROOT -import numpy -import pytest -from mettsim.config import RESOURCE_DIR - -from ttsim import policy_function from ttsim.loader import ( - _find_modules_recursively, + _find_files_recursively, _load_module, ) -from ttsim.ttsim_objects import _vectorize_func - -if TYPE_CHECKING: - from collections.abc import Callable def test_load_path(): assert _load_module( - RESOURCE_DIR / "payroll_tax" / "amount.py", - RESOURCE_DIR, + path=METTSIM_ROOT / "payroll_tax" / "amount.py", + root=METTSIM_ROOT, ) def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and AggregationSpecs.""" - all_files = _find_modules_recursively(RESOURCE_DIR) + all_files = _find_files_recursively(root=METTSIM_ROOT, suffix=".py") assert "__init__.py" not in [file.name for file in all_files] - - -def scalar_func(x: int) -> int: - if x < 0: - return 0 - else: - return x * 2 - - -@policy_function(vectorization_strategy="not_required") -def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: - return numpy.where(x < 0, 0, x * 2) - - -@pytest.mark.parametrize( - "vectorized_function", - [ - _vectorize_func(scalar_func, vectorization_strategy="loop"), - already_vectorized_func, - ], -) -def test_vectorize_func(vectorized_function: Callable) -> None: - assert numpy.array_equal( - vectorized_function(numpy.array([-1, 0, 2, 3])), numpy.array([0, 0, 4, 6]) - ) diff --git a/tests/ttsim/test_mettsim.py b/tests/ttsim/test_mettsim.py index f128a374a7..942e5699d3 100644 --- a/tests/ttsim/test_mettsim.py +++ b/tests/ttsim/test_mettsim.py @@ -1,3 +1,6 @@ +from __future__ import annotations + +import numpy as np import pytest from utils import ( PolicyTest, @@ -20,3 +23,20 @@ def test_mettsim(test: PolicyTest): execute_test(test, jit=True) else: execute_test(test, jit=False) + + +@pytest.mark.xfail( + reason="Testing infrastructure cannot handle single-element expected output" +) +def test_mettsim_single_element_expected_output(): + test = PolicyTest( + info={"precision_atol": 0.01}, + input_tree={ + "p_id": np.array([0]), + "property_tax": {"acre_size_in_hectares": np.array([20])}, + }, + expected_output_tree={"property_tax": {"amount_y": np.array([1000.0])}}, + path=None, + date="2020-01-01", + ) + execute_test(test, jit=False) diff --git a/tests/ttsim/test_parameters/__init__.py b/tests/ttsim/test_parameters/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/ttsim/test_parameters/test_add_jahresanfang.yaml b/tests/ttsim/test_parameters/test_add_jahresanfang.yaml new file mode 100644 index 0000000000..32b686ea89 --- /dev/null +++ b/tests/ttsim/test_parameters/test_add_jahresanfang.yaml @@ -0,0 +1,14 @@ +--- +foo: + name: + de: Test + en: Check + description: + de: Nichts zu sehen + en: Nothing to do + type: scalar + add_jahresanfang: true + 2020-01-01: + value: 1 + 2020-07-01: + value: 2 diff --git a/src/_gettsim/parameters/__init__.py b/tests/ttsim/test_parameters_old/__init__.py similarity index 100% rename from src/_gettsim/parameters/__init__.py rename to tests/ttsim/test_parameters_old/__init__.py diff --git a/tests/ttsim/test_parameters/invalid_access_diff_date.yaml b/tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml similarity index 89% rename from tests/ttsim/test_parameters/invalid_access_diff_date.yaml rename to tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml index 5904c7fc05..ccf98e6ed0 100644 --- a/tests/ttsim/test_parameters/invalid_access_diff_date.yaml +++ b/tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml @@ -3,7 +3,7 @@ sozialversicherung__rente__altersrente__rentenwert: description: de: Historische Rentenwerte alte und neue Bundesländer. statistik-rente.de/drv en: null - unit: Euro + unit: Euros access_different_date: vormonat 2018-07-01: west: 32.03 @@ -15,5 +15,5 @@ sozialversicherung__rente__altersrente__rentenwert: west: 34.19 ost: 33.23 2021-07-01: - deviation_from: previous + updates_previous: true ost: 33.47 diff --git a/tests/ttsim/test_parameters/test_access_diff_date_jahresanfang.yaml b/tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml similarity index 79% rename from tests/ttsim/test_parameters/test_access_diff_date_jahresanfang.yaml rename to tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml index 602906a9d6..5b9245f195 100644 --- a/tests/ttsim/test_parameters/test_access_diff_date_jahresanfang.yaml +++ b/tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml @@ -6,6 +6,6 @@ foo: unit: null access_different_date: jahresanfang 2020-01-01: - scalar: 2020 + value: 2020 2020-07-01: - scalar: 2021 + value: 2021 diff --git a/tests/ttsim/test_parameters/test_access_diff_date_vorjahr.yaml b/tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml similarity index 73% rename from tests/ttsim/test_parameters/test_access_diff_date_vorjahr.yaml rename to tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml index 417eaf904a..e5332283a6 100644 --- a/tests/ttsim/test_parameters/test_access_diff_date_vorjahr.yaml +++ b/tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml @@ -6,8 +6,8 @@ foo: unit: null access_different_date: vorjahr 2018-01-01: - scalar: 2018 + value: 2018 2019-01-01: - scalar: 2019 + value: 2019 2020-01-01: - scalar: 2020 + value: 2020 diff --git a/tests/ttsim/test_piecewise_polynomial.py b/tests/ttsim/test_piecewise_polynomial.py index ecd064fbe1..0e8ce51abe 100644 --- a/tests/ttsim/test_piecewise_polynomial.py +++ b/tests/ttsim/test_piecewise_polynomial.py @@ -2,21 +2,24 @@ Tests for `piecewise_polynomial` """ +from __future__ import annotations + import numpy import pytest from ttsim.config import numpy_or_jax as np from ttsim.piecewise_polynomial import ( + PiecewisePolynomialParamValue, get_piecewise_parameters, piecewise_polynomial, ) @pytest.fixture -def eink_st_params(): - params = { - "thresholds": np.array([-np.inf, 9168.0, 14254.0, 55960.0, 265326.0, np.inf]), - "rates": np.array( +def parameters(): + params = PiecewisePolynomialParamValue( + thresholds=np.array([-np.inf, 9168.0, 14254.0, 55960.0, 265326.0, np.inf]), + rates=np.array( [ [ 0.00000000e00, @@ -34,15 +37,13 @@ def eink_st_params(): ], ] ), - "intercepts_at_lower_thresholds": np.array( - [0.0, 0.0, 965.5771, 14722.3012, 102656.0212] - ), - } + intercepts=np.array([0.0, 0.0, 965.5771, 14722.3012, 102656.0212]), + ) return params def test_get_piecewise_parameters_all_intercepts_supplied(): - params_dict = { + parameter_dict = { 0: { "lower_threshold": "-inf", "upper_threshold": 2005, @@ -70,24 +71,22 @@ def test_get_piecewise_parameters_all_intercepts_supplied(): } actual = get_piecewise_parameters( - parameter_dict=params_dict, - parameter="test", - func_type="linear", - )["intercepts_at_lower_thresholds"] + leaf_name="test", + func_type="piecewise_linear", + parameter_dict=parameter_dict, + ) expected = numpy.array([0.27, 0.5, 0.8, 1]) - numpy.testing.assert_almost_equal(actual, expected, decimal=10) + numpy.testing.assert_allclose(actual.intercepts, expected, atol=1e-7) -def test_piecewise_polynomial(eink_st_params): +def test_piecewise_polynomial(parameters: PiecewisePolynomialParamValue): x = np.array([-1_000, 1_000, 10_000, 30_000, 100_000, 1_000_000]) expected = np.array([0.0, 0.0, 246.53, 10551.65, 66438.2, 866518.64]) actual = piecewise_polynomial( x=x, - thresholds=eink_st_params["thresholds"], - rates=eink_st_params["rates"], - intercepts_at_lower_thresholds=eink_st_params["intercepts_at_lower_thresholds"], + parameters=parameters, rates_multiplier=2, ) numpy.testing.assert_allclose(numpy.array(actual), expected, atol=0.01) diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index c2b96ee437..f7c89fcef9 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -1,8 +1,10 @@ +from __future__ import annotations + import networkx as nx import pytest -from mettsim.config import RESOURCE_DIR +from mettsim.config import METTSIM_ROOT -from ttsim import PolicyEnvironment, plot_dag, set_up_policy_environment +from ttsim import plot_dag, set_up_policy_environment from ttsim.plot_dag import ( _get_selected_nodes, _kth_order_neighbors, @@ -11,7 +13,7 @@ _select_nodes_in_dag, ) -environment = set_up_policy_environment(date="2020-01-01", resource_dir=RESOURCE_DIR) +environment = set_up_policy_environment(date="2020-01-01", root=METTSIM_ROOT) @pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @@ -130,7 +132,7 @@ def test_should_fail_if_target_is_missing(): ValueError, match="The following targets have no corresponding function" ): plot_dag( - environment=PolicyEnvironment({}), + environment={}, targets=["erwachsene_alle_rentenbezieher_kin"], ) diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index 4e669525e5..a86c39831b 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -2,32 +2,55 @@ from __future__ import annotations -from datetime import date, timedelta +import datetime from pathlib import Path from typing import TYPE_CHECKING import optree import pandas as pd import pytest -from mettsim.config import RESOURCE_DIR +from mettsim.config import METTSIM_ROOT from ttsim import ( - GroupCreationFunction, - PolicyEnvironment, + ScalarParam, group_creation_function, policy_function, set_up_policy_environment, ) +from ttsim.column_objects_param_function import DEFAULT_END_DATE +from ttsim.loader import ( + orig_tree_with_column_objects_and_param_functions, + orig_tree_with_params, +) from ttsim.policy_environment import ( - _fail_if_name_of_last_branch_element_not_leaf_name_of_function, - _load_parameter_group_from_yaml, - active_ttsim_objects_tree, + ConflictingActivePeriodsError, + OrigTreesWithFileNames, + _get_param_value, + _param_with_active_periods, + _ParamWithActivePeriod, + active_tree_with_column_objects_and_param_functions, + active_tree_with_params, + fail_because_active_periods_overlap, + fail_if_group_ids_are_outside_top_level_namespace, + fail_if_name_of_last_branch_element_not_leaf_name_of_function, + grouping_levels, + upsert_tree_into_policy_environment, ) if TYPE_CHECKING: - from ttsim.typing import NestedTTSIMObjectDict + from ttsim.typing import ( + FlatColumnObjectsParamFunctions, + NestedColumnObjectsParamFunctions, + NestedPolicyEnvironment, + OrigParamSpec, + ) -YAML_PATH = Path(__file__).parent / "test_parameters" +GENERIC_PARAM_HEADER = { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, +} def return_one(): @@ -47,90 +70,661 @@ def fam_id() -> int: pass -class TestPolicyEnvironment: - def test_func_exists_in_tree(self): - function = policy_function(leaf_name="foo")(return_one) - environment = PolicyEnvironment({"foo": function}) +@pytest.fixture(scope="module") +def some_params_spec_with_updates_previous(): + return [ + { + "a": 1, + "b": 2, + }, + { + "updates_previous": True, + "b": 4, + }, + ] + + +@pytest.fixture(scope="module") +def some_int_param(): + return ScalarParam( + value=1, + leaf_name="some_int_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_int_param", + description="Some int param", + unit=None, + reference_period=None, + note=None, + reference=None, + ) - assert environment.raw_objects_tree["foo"] == function - def test_func_does_not_exist_in_tree(self): - environment = PolicyEnvironment({}, {}) +def test_leap_year_correctly_handled(): + set_up_policy_environment(date="2020-02-29", root=METTSIM_ROOT) - assert "foo" not in environment.raw_objects_tree - @pytest.mark.parametrize( - "environment", - [ - PolicyEnvironment({}, {}), - PolicyEnvironment({"foo": policy_function(leaf_name="foo")(return_one)}), - PolicyEnvironment( - { - "foo": policy_function(leaf_name="foo")(return_one), - "bar": policy_function(leaf_name="bar")(return_two), - } - ), - ], +def test_fail_if_invalid_date(): + with pytest.raises(ValueError): + set_up_policy_environment(date="2020-02-30", root=METTSIM_ROOT) + + +def test_add_jahresanfang(): + _orig_tree_with_params = orig_tree_with_params( + root=Path(__file__).parent / "test_parameters" ) - def test_upsert_functions(self, environment: PolicyEnvironment): - new_function = policy_function(leaf_name="foo")(return_three) - new_environment = environment.upsert_objects({"foo": new_function}) - - assert new_environment.raw_objects_tree["foo"] == new_function - - @pytest.mark.parametrize( - "environment", - [ - PolicyEnvironment({}, {}), - PolicyEnvironment({}, {"foo": {"bar": 1}}), - ], + k = ("test_add_jahresanfang.yaml", "foo") + _active_ttsim_tree_with_params = active_tree_with_params( + orig_tree_with_params={k: _orig_tree_with_params[k]}, + date=pd.to_datetime("2020-07-01").date(), ) - def test_replace_all_parameters(self, environment: PolicyEnvironment): - new_params = {"foo": {"bar": 2}} - new_environment = environment.replace_all_parameters(new_params) + assert _active_ttsim_tree_with_params["foo"].value == 2 + assert _active_ttsim_tree_with_params["foo_jahresanfang"].value == 1 - assert new_environment.params == new_params +@pytest.mark.parametrize( + "functions_tree", + [ + {"foo": policy_function(leaf_name="bar")(return_one)}, + ], +) +def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( + functions_tree: NestedColumnObjectsParamFunctions, +): + with pytest.raises(KeyError): + fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) -def test_leap_year_correctly_handled(): - set_up_policy_environment(date="2020-02-29", resource_dir=RESOURCE_DIR) +def test_fail_if_group_ids_are_outside_top_level_namespace(): + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + fail_if_group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) -def test_fail_if_invalid_date(): + +def test_upsert_tree_into_policy_environment_fail_with_group_ids_outside_top_level_namespace(): # noqa: E501 + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + upsert_tree_into_policy_environment( + policy_environment={}, + tree_to_upsert={"n1": {"fam_id": fam_id}}, + ) + + +@pytest.mark.parametrize( + "policy_environment", + [ + {}, + {"foo": policy_function(leaf_name="foo")(return_one)}, + { + "foo": policy_function(leaf_name="foo")(return_one), + "bar": policy_function(leaf_name="bar")(return_two), + }, + ], +) +def test_upsert_tree_into_policy_environment( + policy_environment: NestedPolicyEnvironment, +): + new_function = policy_function(leaf_name="foo")(return_three) + new_environment = upsert_tree_into_policy_environment( + policy_environment=policy_environment, tree_to_upsert={"foo": new_function} + ) + + assert new_environment["foo"] == new_function + + +def test_input_is_recognized_as_potential_group_id(): + environment = set_up_policy_environment(root=METTSIM_ROOT, date="2020-01-01") + assert "kin" in grouping_levels(environment) + + +def test_p_id_not_recognized_as_potential_group_id(): + environment = set_up_policy_environment(root=METTSIM_ROOT, date="2020-01-01") + assert "p" not in grouping_levels(environment) + + +@pytest.mark.parametrize( + "date_string, expected", + [ + ("2023-01-20", datetime.date(2023, 1, 20)), + ], +) +def test_start_date_valid(date_string: str, expected: datetime.date): + @policy_function(start_date=date_string) + def test_func(): + pass + + assert test_func.start_date == expected + + +@pytest.mark.parametrize( + "date_string", + [ + "20230120", + "20.1.2023", + "20th January 2023", + ], +) +def test_start_date_invalid(date_string: str): + with pytest.raises(ValueError): + + @policy_function(start_date=date_string) + def test_func(): + pass + + +def test_start_date_missing(): + @policy_function() + def test_func(): + pass + + assert test_func.start_date == datetime.date(1900, 1, 1) + + +@pytest.mark.parametrize( + "date_string, expected", + [ + ("2023-01-20", datetime.date(2023, 1, 20)), + ], +) +def test_end_date_valid(date_string: str, expected: datetime.date): + @policy_function(end_date=date_string) + def test_func(): + pass + + assert test_func.end_date == expected + + +@pytest.mark.parametrize( + "date_string", + [ + "20230120", + "20.1.2023", + "20th January 2023", + ], +) +def test_end_date_invalid(date_string: str): with pytest.raises(ValueError): - set_up_policy_environment(date="2020-02-30", resource_dir=RESOURCE_DIR) + @policy_function(end_date=date_string) + def test_func(): + pass + + +def test_end_date_missing(): + @policy_function() + def test_func(): + pass -def test_fail_if_invalid_access_different_date(): + assert test_func.end_date == datetime.date(2099, 12, 31) + + +def test_active_period_is_empty(): with pytest.raises(ValueError): - _load_parameter_group_from_yaml( - date=pd.to_datetime("01-01-2020").date(), - group="invalid_access_diff_date", - parameters=None, - yaml_path=YAML_PATH, + + @policy_function(start_date="2023-01-20", end_date="2023-01-19") + def test_func(): + pass + + +def identity(x): + return x + + +@pytest.mark.parametrize( + "orig_trees", + [ + # Same global module, no overlapping periods, no name clashes. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + params={ + ("c", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 1}, + } + }, + ), + # Same submodule, overlapping periods, different leaf names so no name clashes. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("x", "c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("x", "c", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="g", + )(identity), + }, + params={ + ("x", "c", "h"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 2}, + } + }, + ), + # Different submodules, no overlapping periods, no name clashes. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("x", "c", "f"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + )(identity), + ("x", "d", "f"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + )(identity), + }, + params={ + ("x", "c", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 3}, + } + }, + ), + # Different paths, overlapping periods, same names but no clashes. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("x", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("y", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + params={ + ("z", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 4}, + } + }, + ), + # Different yaml files, no name clashes because of different names. + OrigTreesWithFileNames( + column_objects_and_param_functions={}, + params={ + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 5}, + }, + ("x", "b", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 6}, + }, + }, + ), + ], +) +def test_fail_because_active_periods_overlap_passes(orig_trees: OrigTreesWithFileNames): + fail_because_active_periods_overlap(orig_trees) + + +@pytest.mark.parametrize( + "orig_tree_with_column_objects_and_param_functions", + [ + # Exact overlap. + { + ("a",): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("b",): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + # Active period for "a" is subset of "b". + { + ("a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("b"): policy_function( + start_date="2021-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + }, + # Some overlap. + { + ("a",): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + ("b",): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + # Same as before, but defined in different modules. + { + ("c", "a"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + ("d", "b"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + # Same as before, but defined in different modules without leaf name. + { + ("c", "f"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + )(identity), + ("d", "f"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + )(identity), + }, + ], +) +def test_fail_because_of_conflicting_active_periods( + orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, +): + with pytest.raises(ConflictingActivePeriodsError): + fail_because_active_periods_overlap( + OrigTreesWithFileNames( + column_objects_and_param_functions=orig_tree_with_column_objects_and_param_functions, + params={}, + ) ) -def test_access_different_date_vorjahr(): - params = _load_parameter_group_from_yaml( - date=pd.to_datetime("01-01-2020").date(), - group="test_access_diff_date_vorjahr", - parameters=None, - yaml_path=YAML_PATH, - ) - assert params["foo"] == 2020 - assert params["foo_vorjahr"] == 2019 +@pytest.mark.parametrize( + "orig_trees", + [ + # Same global module, no overlap in functions, name clashes leaf name / yaml. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + params={ + ("c", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 1}, + } + }, + ), + # Same paths, no overlap in functions, name clashes leaf name / yaml. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("x", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("x", "a", "c"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + params={ + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 2}, + } + }, + ), + # Same paths, name clashes within params from different yaml files. + OrigTreesWithFileNames( + column_objects_and_param_functions={}, + params={ + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 3}, + }, + ("x", "b", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 4}, + }, + }, + ), + ], +) +def test_fail_because_of_conflicting_names(orig_trees: OrigTreesWithFileNames): + with pytest.raises(ConflictingActivePeriodsError): + fail_because_active_periods_overlap(orig_trees) + + +@pytest.mark.parametrize( + "orig_trees", + [ + # Same leaf names across functions / parameters, but no overlapping periods. + OrigTreesWithFileNames( + column_objects_and_param_functions={ + ("c", "a"): policy_function( + start_date="2012-01-01", + end_date="2015-12-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + params={ + ("c", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/foo", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + } + }, + ), + # Different periods specified in different files. + OrigTreesWithFileNames( + column_objects_and_param_functions={}, + params={ + ("c", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + }, + ("d", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/foo", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + }, + }, + ), + ], +) +def test_pass_because_no_overlap_functions_params(orig_trees: OrigTreesWithFileNames): + fail_because_active_periods_overlap(orig_trees) -def test_access_different_date_jahresanfang(): - params = _load_parameter_group_from_yaml( - date=pd.to_datetime("07-01-2020").date(), - group="test_access_diff_date_jahresanfang", - parameters=None, - yaml_path=YAML_PATH, +@pytest.mark.parametrize( + "param_spec, leaf_name, expected", + ( + ( + { + "name": {"de": "spam", "en": "spam"}, + "description": {"de": "spam", "en": "spam"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"note": "completely empty"}, + }, + "spam", + [], + ), + ( + { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + }, + "foo", + [ + _ParamWithActivePeriod( + leaf_name="foo", + original_function_name="foo", + start_date=datetime.date(1984, 1, 1), + end_date=DEFAULT_END_DATE, + **GENERIC_PARAM_HEADER, + ) + ], + ), + ( + { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"note": "stop"}, + }, + "foo", + [ + _ParamWithActivePeriod( + leaf_name="foo", + original_function_name="foo", + start_date=datetime.date(1984, 1, 1), + end_date=datetime.date(1984, 12, 31), + **GENERIC_PARAM_HEADER, + ) + ], + ), + ( + { + "name": {"de": "bar", "en": "bar"}, + "description": {"de": "bar", "en": "bar"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/bar", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + }, + "bar", + [ + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(2023, 3, 1), + end_date=DEFAULT_END_DATE, + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(2016, 1, 1), + end_date=datetime.date(2023, 1, 31), + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(1984, 1, 1), + end_date=datetime.date(2011, 12, 31), + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + ], + ), + ), +) +def test_ttsim_param_with_active_periods( + param_spec: OrigParamSpec, + leaf_name: str, + expected: list[_ParamWithActivePeriod], +): + actual = _param_with_active_periods( + param_spec=param_spec, + leaf_name=leaf_name, ) - assert params["foo"] == 2021 - assert params["foo_jahresanfang"] == 2020 + assert actual == expected @pytest.mark.parametrize( @@ -138,23 +732,28 @@ def test_access_different_date_jahresanfang(): [ ( {"housing_benefits": {"eligibility": {"requirement_fulfilled_fam": None}}}, - date(2019, 12, 31), + datetime.date(2019, 12, 31), "requirement_fulfilled_fam_not_considering_children", "requirement_fulfilled_fam_considering_children", ), ], ) -def test_load_functions_tree_for_date( - tree: NestedTTSIMObjectDict, - last_day: date, +def test_active_tree_with_column_objects_and_param_functions( + tree: NestedColumnObjectsParamFunctions, + last_day: datetime.date, function_name_last_day: str, function_name_next_day: str, ): - functions_last_day = active_ttsim_objects_tree( - resource_dir=RESOURCE_DIR, date=last_day + _orig_tree_with_column_objects_and_param_functions = ( + orig_tree_with_column_objects_and_param_functions(root=METTSIM_ROOT) + ) + functions_last_day = active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, + date=last_day, ) - functions_next_day = active_ttsim_objects_tree( - resource_dir=RESOURCE_DIR, date=last_day + timedelta(days=1) + functions_next_day = active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, + date=last_day + datetime.timedelta(days=1), ) accessor = optree.tree_accessors(tree, none_is_leaf=True)[0] @@ -163,50 +762,12 @@ def test_load_functions_tree_for_date( assert accessor(functions_next_day).__name__ == function_name_next_day -@pytest.mark.parametrize( - "functions_tree", - [ - {"foo": policy_function(leaf_name="bar")(return_one)}, - ], -) -def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedTTSIMObjectDict, +def test_get_params_contents_with_updated_previous( + some_params_spec_with_updates_previous, ): - with pytest.raises(KeyError): - _fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) - - -def test_dont_destroy_group_by_functions(): - functions_tree = { - "foo": group_creation_function()(return_one), + params_contents = _get_param_value(some_params_spec_with_updates_previous) + expected = { + "a": 1, + "b": 4, } - environment = PolicyEnvironment(functions_tree) - assert isinstance(environment.raw_objects_tree["foo"], GroupCreationFunction) - - -def test_creating_environment_fails_when_group_ids_are_outside_top_level_namespace(): - with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" - ): - PolicyEnvironment({"n1": {"fam_id": fam_id}}) - - -def test_upserting_group_ids_outside_top_level_namespace_fails(): - with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" - ): - PolicyEnvironment({}).upsert_objects({"n1": {"fam_id": fam_id}}) - - -def test_input_is_recognized_as_potential_group_id(): - environment = set_up_policy_environment( - resource_dir=RESOURCE_DIR, date="2020-01-01" - ) - assert "kin" in environment.grouping_levels - - -def test_p_id_not_recognized_as_potential_group_id(): - environment = set_up_policy_environment( - resource_dir=RESOURCE_DIR, date="2020-01-01" - ) - assert "p" not in environment.grouping_levels + assert params_contents == expected diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index ea0aaefec8..2fe9997426 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -1,10 +1,13 @@ +from __future__ import annotations + import pandas as pd import pytest from pandas._testing import assert_series_equal from ttsim import ( - PolicyEnvironment, + OrigTreesWithFileNames, RoundingSpec, + active_tree, compute_taxes_and_transfers, policy_function, policy_input, @@ -94,7 +97,12 @@ def test_malformed_rounding_specs(): def test_func(): return 0 - PolicyEnvironment({"test_func": test_func}) + active_tree( + orig_trees=OrigTreesWithFileNames( + column_objects_and_param_functions={"x.py": {"test_func": test_func}}, + params={}, + ) + ) @pytest.mark.parametrize( @@ -113,14 +121,11 @@ def test_func(x): "p_id": np.array([1, 2]), "namespace": {"x": np.array(input_values)}, } - - environment = PolicyEnvironment( - {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} - ) + policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} calc_result = compute_taxes_and_transfers( data_tree=data_tree, - environment=environment, + policy_environment=policy_environment, targets_tree={"namespace": {"test_func": None}}, ) assert_series_equal( @@ -143,17 +148,15 @@ def test_func_m(x): "x": np.array([1.2, 1.5]), } - environment = PolicyEnvironment( - { - "test_func_m": test_func_m, - "x": x, - "p_id": p_id, - } - ) + policy_environment = { + "test_func_m": test_func_m, + "x": x, + "p_id": p_id, + } calc_result = compute_taxes_and_transfers( data_tree=data, - environment=environment, + policy_environment=policy_environment, targets_tree={"test_func_y": None}, ) assert_series_equal( @@ -179,17 +182,15 @@ def test_func(x): data = {"p_id": np.array([1, 2])} data["x"] = np.array(input_values_exp_output) - environment = PolicyEnvironment( - { - "test_func": test_func, - "x": x, - "p_id": p_id, - } - ) + policy_environment = { + "test_func": test_func, + "x": x, + "p_id": p_id, + } calc_result = compute_taxes_and_transfers( data_tree=data, - environment=environment, + policy_environment=policy_environment, targets_tree={"test_func": None}, rounding=False, ) diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/test_shared.py index 0909dee056..efd1065d70 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -1,8 +1,12 @@ +from __future__ import annotations + +import re from dataclasses import dataclass import pytest from ttsim.shared import ( + assert_valid_ttsim_pytree, create_tree_from_path_and_value, get_name_of_group_by_id, get_re_pattern_for_all_time_units_and_groupings, @@ -20,6 +24,38 @@ class SampleDataClass: a: int +@pytest.mark.parametrize( + ("tree", "leaf_checker", "err_substr"), + [ + ( + {"a": 1, "b": 2}, + lambda leaf: leaf is None, + "Leaf at tree[a] is invalid: got 1 of type <class 'int'>.", + ), + ( + {"a": None, "b": {"c": None, "d": 1}}, + lambda leaf: leaf is None, + "Leaf at tree[b][d] is invalid: got 1 of type <class 'int'>.", + ), + ( + [1, 2, 3], + lambda leaf: leaf is None, + "tree must be a dict, got <class 'list'>.", + ), + ( + {1: 2}, + lambda leaf: leaf is None, + "Key 1 in tree must be a string but got <class 'int'>.", + ), + ], +) +def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): + with pytest.raises(TypeError, match=re.escape(err_substr)): + assert_valid_ttsim_pytree( + tree=tree, leaf_checker=leaf_checker, tree_name="tree" + ) + + @pytest.mark.parametrize( "base, path_to_upsert, value_to_upsert, expected", [ diff --git a/tests/ttsim/test_ttsim_objects.py b/tests/ttsim/test_ttsim_objects.py index 95ba037fa8..14853155ab 100644 --- a/tests/ttsim/test_ttsim_objects.py +++ b/tests/ttsim/test_ttsim_objects.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import inspect import pytest @@ -11,6 +13,7 @@ policy_function, policy_input, ) +from ttsim.column_objects_param_function import ParamFunction, param_function # ====================================================================================== # PolicyFunction and policy_function @@ -23,7 +26,7 @@ def simple_policy_function(x): @policy_function(leaf_name="simple_policy_function") -def policy_function_with_internal_name(x): +def policy_function_with_different_leaf_name(x): return x @@ -36,7 +39,7 @@ def policy_function_with_dates(x): "function", [ simple_policy_function, - policy_function_with_internal_name, + policy_function_with_different_leaf_name, ], ) def test_policy_function_type(function): @@ -47,7 +50,7 @@ def test_policy_function_type(function): "function", [ simple_policy_function, - policy_function_with_internal_name, + policy_function_with_different_leaf_name, ], ) def test_policy_function_name(function): @@ -59,6 +62,53 @@ def test_policy_function_with_dates(): assert str(policy_function_with_dates.end_date) == "2011-12-31" +# ====================================================================================== +# ParamFunction and param_function +# ====================================================================================== + + +@param_function() +def simple_param_function(x): + return x + + +@param_function(leaf_name="simple_param_function") +def param_function_with_different_leaf_name(x): + return x + + +@param_function(start_date="2007-01-01", end_date="2011-12-31") +def param_function_with_dates(x): + return x + + +@pytest.mark.parametrize( + "function", + [ + simple_param_function, + param_function_with_different_leaf_name, + ], +) +def test_param_function_type(function): + assert isinstance(function, ParamFunction) + + +@pytest.mark.parametrize( + "function", + [ + simple_param_function, + param_function_with_different_leaf_name, + ], +) +def test_param_function_name(function): + assert function.leaf_name == "simple_param_function" + + +def test_param_function_with_dates(): + assert str(param_function_with_dates.start_date) == "2007-01-01" + assert str(param_function_with_dates.end_date) == "2011-12-31" + + # ====================================================================================== # PolicyInput and policy_input # ====================================================================================== diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/test_vectorization.py index 9f4603447d..46d77d66de 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/test_vectorization.py @@ -1,30 +1,39 @@ +from __future__ import annotations + import datetime import functools import inspect import string -from pathlib import Path +from typing import TYPE_CHECKING import dags.tree as dt import numpy import pytest from dags import concatenate_functions +from ttsim.column_objects_param_function import AggByGroupFunction, AggByPIDFunction from ttsim.config import IS_JAX_INSTALLED -from ttsim.ttsim_objects import AggByGroupFunction, AggByPIDFunction if IS_JAX_INSTALLED: import jax.numpy +from mettsim.config import METTSIM_ROOT from numpy.testing import assert_array_equal from ttsim import GroupCreationFunction, PolicyInput, policy_function -from ttsim.policy_environment import active_ttsim_objects_tree +from ttsim.loader import orig_tree_with_column_objects_and_param_functions +from ttsim.policy_environment import active_tree_with_column_objects_and_param_functions from ttsim.vectorization import ( TranslateToVectorizableError, _is_lambda_function, - make_vectorizable, + _make_vectorizable, make_vectorizable_source, + vectorize_function, ) +if TYPE_CHECKING: + from collections.abc import Callable + + # ====================================================================================== # Backend # ====================================================================================== @@ -39,6 +48,10 @@ # String comparison # ====================================================================================== +ORIG_METTSIM_OBJECTS_TREE = orig_tree_with_column_objects_and_param_functions( + root=METTSIM_ROOT / "mettsim" +) + def string_equal(s1, s2): remove = string.punctuation + string.whitespace @@ -303,7 +316,7 @@ def test_change_if_to_where_source(func, expected, args): # noqa: ARG001 @pytest.mark.parametrize("func, expected, args", TEST_CASES) def test_change_if_to_where_wrapper(func, expected, args): - got_func = make_vectorizable(func, backend="numpy") + got_func = _make_vectorizable(func, backend="numpy") got = got_func(*args) exp = expected(*args) assert_array_equal(got, exp) @@ -346,7 +359,7 @@ def g4(x): def test_notimplemented_error(): with pytest.raises(NotImplementedError): - make_vectorizable(f1, backend="dask") + _make_vectorizable(f1, backend="dask") @pytest.mark.parametrize("func", [g1, g2, g3, g4]) @@ -358,11 +371,11 @@ def test_disallowed_operation_source(func): @pytest.mark.parametrize("func", [g1, g2, g3, g4]) def test_disallowed_operation_wrapper(func): with pytest.raises(TranslateToVectorizableError): - make_vectorizable(func, backend="numpy") + _make_vectorizable(func, backend="numpy") # ====================================================================================== -# Test that functions defined in gettsim can be made vectorizable +# Test that functions defined in METTSIM can be made vectorizable # ====================================================================================== @@ -373,8 +386,8 @@ def test_disallowed_operation_wrapper(func): [ (funcname, pf.function) for funcname, pf in dt.flatten_to_tree_paths( - active_ttsim_objects_tree( - resource_dir=Path(__file__).parent / "mettsim", + active_tree_with_column_objects_and_param_functions( + orig_tree_with_column_objects_and_param_functions=ORIG_METTSIM_OBJECTS_TREE, date=datetime.date(year=year, month=1, day=1), ) ).items() @@ -390,23 +403,24 @@ def test_disallowed_operation_wrapper(func): @pytest.mark.parametrize("backend", backends) def test_convertible(funcname, func, backend): # noqa: ARG001 # Leave funcname for debugging purposes. - make_vectorizable(func, backend=backend) + _make_vectorizable(func, backend=backend) # ====================================================================================== -# Test that vectorized functions defined in gettsim can be called with array input +# Test that vectorized functions defined in METTSIM can be called with array input # ====================================================================================== def mock__elterngeld__geschwisterbonus_m( basisbetrag_m: float, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: bool, - elterngeld_params: dict, + geschwisterbonus_aufschlag: float, + geschwisterbonus_minimum: float, ) -> float: if geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: out = max( - elterngeld_params["geschwisterbonus_aufschlag"] * basisbetrag_m, - elterngeld_params["geschwisterbonus_minimum"], + geschwisterbonus_aufschlag * basisbetrag_m, + geschwisterbonus_minimum, ) else: out = 0.0 @@ -417,23 +431,22 @@ def mock__elterngeld__geschwisterbonus_m( def test_geschwisterbonus_m(backend): full = modules[backend].full - # Test original gettsim function on scalar input + # Test original METTSIM function on scalar input # ================================================================================== basisbetrag_m = 3.0 geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = True - elterngeld_params = { - "geschwisterbonus_aufschlag": 1.0, - "geschwisterbonus_minimum": 2.0, - } + geschwisterbonus_aufschlag = 1.0 + geschwisterbonus_minimum = 2.0 exp = mock__elterngeld__geschwisterbonus_m( basisbetrag_m=basisbetrag_m, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - elterngeld_params=elterngeld_params, + geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, + geschwisterbonus_minimum=geschwisterbonus_minimum, ) assert exp == 3.0 - # Create array inputs and assert that gettsim functions raises error + # Create array inputs and assert that METTSIM functions raises error # ================================================================================== shape = (10, 2) basisbetrag_m = full(shape, basisbetrag_m) @@ -445,16 +458,20 @@ def test_geschwisterbonus_m(backend): mock__elterngeld__geschwisterbonus_m( basisbetrag_m=basisbetrag_m, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - elterngeld_params=elterngeld_params, + geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, + geschwisterbonus_minimum=geschwisterbonus_minimum, ) # Call converted function on array input and test result # ================================================================================== - converted = make_vectorizable(mock__elterngeld__geschwisterbonus_m, backend=backend) + converted = _make_vectorizable( + mock__elterngeld__geschwisterbonus_m, backend=backend + ) got = converted( basisbetrag_m=basisbetrag_m, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - elterngeld_params=elterngeld_params, + geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, + geschwisterbonus_minimum=geschwisterbonus_minimum, ) assert_array_equal(got, full(shape, exp)) @@ -465,11 +482,11 @@ def mock__elterngeld__grundsätzlich_anspruchsberechtigt( kind_grundsätzlich_anspruchsberechtigt_fg: bool, einkommen_vorjahr_unter_bezugsgrenze: bool, bezugsmonate_unter_grenze_fg: bool, - elterngeld_params: dict, + max_arbeitsstunden_w: int, ) -> bool: return ( claimed - and arbeitsstunden_w <= elterngeld_params["max_arbeitsstunden_w"] + and arbeitsstunden_w <= max_arbeitsstunden_w and einkommen_vorjahr_unter_bezugsgrenze and kind_grundsätzlich_anspruchsberechtigt_fg and bezugsmonate_unter_grenze_fg @@ -480,16 +497,14 @@ def mock__elterngeld__grundsätzlich_anspruchsberechtigt( def test_grundsätzlich_anspruchsberechtigt(backend): full = modules[backend].full - # Test original gettsim function on scalar input + # Test original METTSIM function on scalar input # ================================================================================== claimed = True arbeitsstunden_w = 20.0 kind_grundsätzlich_anspruchsberechtigt_fg = True einkommen_vorjahr_unter_bezugsgrenze = True bezugsmonate_unter_grenze_fg = True - elterngeld_params = { - "max_arbeitsstunden_w": 31.0, - } + max_arbeitsstunden_w = 31 exp = mock__elterngeld__grundsätzlich_anspruchsberechtigt( claimed=claimed, @@ -497,12 +512,12 @@ def test_grundsätzlich_anspruchsberechtigt(backend): kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - elterngeld_params=elterngeld_params, + max_arbeitsstunden_w=max_arbeitsstunden_w, ) assert exp is True - # Create array inputs and assert that gettsim functions raises error + # Create array inputs and assert that METTSIM functions raises error # ================================================================================== shape = (10, 1) arbeitsstunden_w = full(shape, arbeitsstunden_w) @@ -514,12 +529,12 @@ def test_grundsätzlich_anspruchsberechtigt(backend): kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - elterngeld_params=elterngeld_params, + max_arbeitsstunden_w=max_arbeitsstunden_w, ) # Call converted function on array input and test result # ================================================================================== - converted = make_vectorizable( + converted = _make_vectorizable( mock__elterngeld__grundsätzlich_anspruchsberechtigt, backend=backend ) got = converted( @@ -528,7 +543,7 @@ def test_grundsätzlich_anspruchsberechtigt(backend): kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - elterngeld_params=elterngeld_params, + max_arbeitsstunden_w=max_arbeitsstunden_w, ) assert_array_equal(got, full(shape, exp)) @@ -570,7 +585,7 @@ def test_is_lambda_function_non_function_input(): def test_lambda_functions_disallowed_make_vectorizable(): with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - make_vectorizable(lambda x: x, backend="numpy") + _make_vectorizable(lambda x: x, backend="numpy") def test_lambda_functions_disallowed_make_vectorizable_source(): @@ -588,7 +603,7 @@ def test_make_vectorizable_policy_func(): def alter_bis_24(alter: int) -> bool: return alter <= 24 - vectorized = make_vectorizable(alter_bis_24, backend="numpy") + vectorized = _make_vectorizable(alter_bis_24, backend="numpy") got = vectorized(numpy.array([20, 25, 30])) exp = numpy.array([True, False, False]) @@ -610,7 +625,7 @@ def f_b(a: int) -> int: def f_manual(x: int) -> int: return f_b(f_a(x)) - vectorized = make_vectorizable(f_manual, backend="numpy") + vectorized = _make_vectorizable(f_manual, backend="numpy") got = vectorized(numpy.array([1, 2, 3])) exp = numpy.array([3, 4, 5]) assert_array_equal(got, exp) @@ -632,7 +647,32 @@ def f_b(a: int) -> int: targets=["b"], ) - vectorized = make_vectorizable(f_dags, backend="numpy") + vectorized = _make_vectorizable(f_dags, backend="numpy") got = vectorized(numpy.array([1, 2, 3])) exp = numpy.array([3, 4, 5]) assert_array_equal(got, exp) + + +def scalar_func(x: int) -> int: + if x < 0: + return 0 + else: + return x * 2 + + +@policy_function(vectorization_strategy="not_required") +def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: # type: ignore[type-arg] + return numpy.where(x < 0, 0, x * 2) + + +@pytest.mark.parametrize( + "vectorized_function", + [ + vectorize_function(scalar_func, vectorization_strategy="loop"), + already_vectorized_func, + ], +) +def test_vectorize_func(vectorized_function: Callable): # type: ignore[type-arg] + assert numpy.array_equal( + vectorized_function(numpy.array([-1, 0, 2, 3])), numpy.array([0, 0, 4, 6]) + ) diff --git a/tests/ttsim/utils.py b/tests/ttsim/utils.py index 443e85c6ef..884b85138a 100644 --- a/tests/ttsim/utils.py +++ b/tests/ttsim/utils.py @@ -1,6 +1,5 @@ from __future__ import annotations -import copy from pathlib import Path from typing import TYPE_CHECKING @@ -8,13 +7,11 @@ import optree import pandas as pd import yaml -from mettsim.config import RESOURCE_DIR +from mettsim.config import METTSIM_ROOT from ttsim import compute_taxes_and_transfers, merge_trees, set_up_policy_environment -from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np from ttsim.shared import to_datetime -from ttsim.ttsim_objects import GroupCreationFunction TEST_DIR = Path(__file__).parent # Set display options to show all columns without truncation @@ -24,7 +21,7 @@ if TYPE_CHECKING: import datetime - from ttsim.typing import NestedDataDict, NestedInputStructureDict + from ttsim.typing import NestedData, NestedInputStructureDict class PolicyTest: @@ -32,9 +29,9 @@ class PolicyTest: def __init__( self, - info: NestedDataDict, - input_tree: NestedDataDict, - expected_output_tree: NestedDataDict, + info: NestedData, + input_tree: NestedData, + expected_output_tree: NestedData, path: Path, date: datetime.date, ) -> None: @@ -57,36 +54,15 @@ def name(self) -> str: def execute_test(test: PolicyTest, jit: bool = False) -> None: - environment = set_up_policy_environment(date=test.date, resource_dir=RESOURCE_DIR) - - if IS_JAX_INSTALLED: - ids = dict.fromkeys( - {f"{g}_id" for g in environment.grouping_levels}.intersection( - { - g - for g, t in environment.raw_objects_tree.items() - if isinstance(t, GroupCreationFunction) - } - ) - ) - result_ids = compute_taxes_and_transfers( - data_tree=test.input_tree, - environment=environment, - targets_tree=ids, - jit=False, - ) - data_tree = merge_trees(test.input_tree, result_ids) - targets_tree = copy.deepcopy(test.target_structure) - for i in [i for i in ids if i in targets_tree]: - del targets_tree[i] - else: - data_tree = test.input_tree - targets_tree = test.target_structure + environment = set_up_policy_environment(date=test.date, root=METTSIM_ROOT) + + data_tree = test.input_tree + targets_tree = test.target_structure if targets_tree: result = compute_taxes_and_transfers( data_tree=data_tree, - environment=environment, + policy_environment=environment, targets_tree=targets_tree, jit=jit, ) @@ -99,11 +75,6 @@ def execute_test(test: PolicyTest, jit: bool = False) -> None: if flat_expected_output_tree: expected_df = pd.DataFrame(flat_expected_output_tree) result_df = pd.DataFrame(flat_result) - if IS_JAX_INSTALLED: - for i in [i for i in ids if i in expected_df]: - result_df = pd.concat( - [result_df, pd.Series(result_ids[i], name=i)], axis=1 - ) try: pd.testing.assert_frame_equal( result_df.sort_index(axis="columns"), @@ -151,7 +122,7 @@ def load_policy_test_data(policy_name: str) -> list[PolicyTest]: continue with path_to_yaml.open("r", encoding="utf-8") as file: - raw_test_data: NestedDataDict = yaml.safe_load(file) + raw_test_data: NestedData = yaml.safe_load(file) out.extend( _get_policy_tests_from_raw_test_data( @@ -168,7 +139,7 @@ def _is_skipped(test_file: Path) -> bool: def _get_policy_tests_from_raw_test_data( - raw_test_data: NestedDataDict, path_to_yaml: Path + raw_test_data: NestedData, path_to_yaml: Path ) -> list[PolicyTest]: """Get a list of PolicyTest objects from raw test data. @@ -179,9 +150,9 @@ def _get_policy_tests_from_raw_test_data( Returns: A list of PolicyTest objects. """ - test_info: NestedDataDict = raw_test_data.get("info", {}) - inputs: NestedDataDict = raw_test_data.get("inputs", {}) - input_tree: NestedDataDict = dt.unflatten_from_tree_paths( + test_info: NestedData = raw_test_data.get("info", {}) + inputs: NestedData = raw_test_data.get("inputs", {}) + input_tree: NestedData = dt.unflatten_from_tree_paths( { k: pd.Series(v) for k, v in dt.flatten_to_tree_paths( @@ -190,7 +161,7 @@ def _get_policy_tests_from_raw_test_data( } ) - expected_output_tree: NestedDataDict = dt.unflatten_from_tree_paths( + expected_output_tree: NestedData = dt.unflatten_from_tree_paths( { k: pd.Series(v) for k, v in dt.flatten_to_tree_paths( diff --git a/typical_vars_in_data.yaml b/typical_vars_in_data.yaml new file mode 100644 index 0000000000..699406158d --- /dev/null +++ b/typical_vars_in_data.yaml @@ -0,0 +1,29 @@ +--- +arbeitslosengeld_2: + betrag_m_bg: 2005-01-01 / 2100-12-31 +elterngeld: + betrag_m: 2009-01-01 / 2100-12-31 +erziehungsgeld: + betrag_m: 1900-01-01 / 2008-12-31 +grundsicherung: + im_alter: + betrag_m_eg: 1900-01-01 / 2100-12-31 +kindergeld: + betrag_m: 1900-01-01 / 2100-12-31 +kinderzuschlag: + betrag_m_bg: 2005-01-01 / 2100-12-31 +sozialversicherung: + arbeitslosen: + betrag_m: 1900-01-01 / 2100-12-31 + rente: + altersrente: + betrag_m: 1900-01-01 / 2100-12-31 + bruttorente_m: 1900-01-01 / 2100-12-31 + erwerbsminderung: + betrag_m: 1900-01-01 / 2100-12-31 + grundrente: + betrag_m: 2021-01-01 / 2100-12-31 +unterhaltsvorschuss: + betrag_m: 1980-01-01 / 2100-12-31 +wohngeld: + betrag_m_wthh: 1965-01-01 / 2100-12-31 From 8069fe46638d4d6b8188d3d452693b99836abe7e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 3 Jun 2025 07:59:00 +0200 Subject: [PATCH 036/109] Move param dataclasses to param_types.py (#945) Move parameter dataclasses to `param_types.py` and create `SatzMitAltersgrenzen` class. --- src/_gettsim/arbeitslosengeld_2/bedarfe.yaml | 267 +----------------- .../arbeitslosengeld_2/regelbedarf.py | 115 ++------ src/_gettsim/erziehungsgeld/erziehungsgeld.py | 10 +- src/_gettsim/grundsicherung/bedarfe.py | 56 ++++ src/_gettsim/grundsicherung/bedarfe.yaml | 265 +++++++++++++++++ .../grundsicherung/im_alter/einkommen.py | 17 +- .../grundsicherung/im_alter/im_alter.py | 10 +- src/_gettsim/param_types.py | 12 + .../unterhaltsvorschuss.py | 26 +- src/_gettsim/wohngeld/wohngeld.py | 2 +- tests/ttsim/test_create_data_tree.py | 123 ++++++++ 11 files changed, 512 insertions(+), 391 deletions(-) create mode 100644 src/_gettsim/grundsicherung/bedarfe.py create mode 100644 src/_gettsim/grundsicherung/bedarfe.yaml create mode 100644 tests/ttsim/test_create_data_tree.py diff --git a/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml index d2b0b4f308..e1a0a114a0 100644 --- a/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml +++ b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml @@ -80,272 +80,7 @@ parameter_regelsatz_anteilsbasiert: basissatz: 359 reference: B. v. 07.06.2010 BGBl. I S. 820. Betrag unverändert. 2011-01-01: - note: Calculation method changed, see regelsatz_nach_regelbedarfsstufen. -parameter_regelsatz_nach_regelbedarfsstufen: - name: - de: Regelsatz mit direkter Angabe für Regelbedarfsstufen - en: Standard rate with direct specification of "Regelbedarfsstufen" - description: - de: >- - § 20 V SGB II. Neufassung SGB II § 20 (1a) und (2) durch - Artikel 6 G. v. 22.12.2016 BGBl. I S. 3159. - Regelbedafstufen: - 1: Alleinstehender Erwachsener - 2: Erwachsene in Partnerschaft - 3: Erwachsene unter 25 im Haushalt der Eltern - 4: Jugendliche - 5: Ältere Kinder - 6: Jüngste Kinder - en: >- - Regelbedarfsstufen: - 1: Single Adult - 2: Adults in a partner relationship - 3: Adults under 25 in the household of their parents - 4: Adolescents - 5: Older children - 6: Youngest children - unit: Euros - reference_period: Month - type: require_converter - 2011-01-01: - 1: 364 - 2: 328 - 3: 291 - 4: - min_alter: 14 - max_alter: 17 - betrag: 287 - 5: - min_alter: 6 - max_alter: 13 - betrag: 251 - 6: - min_alter: 0 - max_alter: 5 - betrag: 215 - reference: Artikel 1 G. v. 24.03.2011 BGBl. I S. 453. - 2012-01-01: - 1: 374 - 2: 337 - 3: 299 - 4: - min_alter: 14 - max_alter: 17 - betrag: 287 - 5: - min_alter: 6 - max_alter: 13 - betrag: 251 - 6: - min_alter: 0 - max_alter: 5 - betrag: 219 - reference: V. v. 20.10.2011 BGBl. I S. 2093. - 2013-01-01: - 1: 382 - 2: 345 - 3: 306 - 4: - min_alter: 14 - max_alter: 17 - betrag: 289 - 5: - min_alter: 6 - max_alter: 13 - betrag: 255 - 6: - min_alter: 0 - max_alter: 5 - betrag: 224 - reference: B. v. 18.10.2012 BGBl. I S. 2175. - 2014-01-01: - 1: 391 - 2: 353 - 3: 313 - 4: - min_alter: 14 - max_alter: 17 - betrag: 296 - 5: - min_alter: 6 - max_alter: 13 - betrag: 261 - 6: - min_alter: 0 - max_alter: 5 - betrag: 229 - reference: B. v. 16.10.2013 BGBl. I S. 3857. - 2015-01-01: - 1: 399 - 2: 360 - 3: 320 - 4: - min_alter: 14 - max_alter: 17 - betrag: 302 - 5: - min_alter: 6 - max_alter: 13 - betrag: 267 - 6: - min_alter: 0 - max_alter: 5 - betrag: 234 - reference: B. v. 15.10.2014 BGBl. I S. 1620. - 2016-01-01: - 1: 404 - 2: 364 - 3: 324 - 4: - min_alter: 14 - max_alter: 17 - betrag: 306 - 5: - min_alter: 6 - max_alter: 13 - betrag: 270 - 6: - min_alter: 0 - max_alter: 5 - betrag: 237 - reference: B. v. 22.10.2015 BGBl. I S. 1792. - 2017-01-01: - 1: 409 - 2: 368 - 3: 327 - 4: - min_alter: 14 - max_alter: 17 - betrag: 311 - 5: - min_alter: 6 - max_alter: 13 - betrag: 291 - 6: - min_alter: 0 - max_alter: 5 - betrag: 236 - reference: G. v. 22.12.2016 BGBl. I S. 3159. - 2018-01-01: - 1: 416 - 2: 374 - 3: 332 - 4: - min_alter: 14 - max_alter: 17 - betrag: 316 - 5: - min_alter: 6 - max_alter: 13 - betrag: 296 - 6: - min_alter: 0 - max_alter: 5 - betrag: 240 - reference: V. v. 08.11.2017 BGBl. I S. 3767. - 2019-01-01: - 1: 424 - 2: 382 - 3: 339 - 4: - min_alter: 14 - max_alter: 17 - betrag: 322 - 5: - min_alter: 6 - max_alter: 13 - betrag: 302 - 6: - min_alter: 0 - max_alter: 5 - betrag: 245 - reference: V. v. 19.10.2018 BGBl. I S. 1766. - 2020-01-01: - 1: 432 - 2: 389 - 3: 345 - 4: - min_alter: 14 - max_alter: 17 - betrag: 328 - 5: - min_alter: 6 - max_alter: 13 - betrag: 308 - 6: - min_alter: 0 - max_alter: 5 - betrag: 250 - reference: V. v. 15.10.2019 BGBl. I S. 1452. - 2021-01-01: - 1: 446 - 2: 401 - 3: 357 - 4: - min_alter: 14 - max_alter: 17 - betrag: 373 - 5: - min_alter: 6 - max_alter: 13 - betrag: 309 - 6: - min_alter: 0 - max_alter: 5 - betrag: 283 - reference: G. v. 09.12.2020 BGBl. I S. 2855. - 2022-01-01: - 1: 449 - 2: 404 - 3: 360 - 4: - min_alter: 14 - max_alter: 17 - betrag: 376 - 5: - min_alter: 6 - max_alter: 13 - betrag: 311 - 6: - min_alter: 0 - max_alter: 5 - betrag: 285 - reference: V. v. 13.10.2021 BGBl. I S. 4674. - 2023-01-01: - 1: 502 - 2: 451 - 3: 402 - 4: - min_alter: 14 - max_alter: 17 - betrag: 420 - 5: - min_alter: 6 - max_alter: 13 - betrag: 348 - 6: - min_alter: 0 - max_alter: 5 - betrag: 318 - reference: G. v. 20.12.2022 BGBl. I S. 2328. - note: Bürgergeld-Gesetz - 2024-01-01: - 1: 563 - 2: 506 - 3: 451 - 4: - min_alter: 14 - max_alter: 17 - betrag: 471 - 5: - min_alter: 6 - max_alter: 13 - betrag: 390 - 6: - min_alter: 0 - max_alter: 5 - betrag: 357 - reference: §2 V. v. 24.10.2024 BGBl. I Nr. 287 + note: Calculation method changed, see regelbedarfsstufen. kindersofortzuschlag: name: de: Kindersofortzuschlag für Arbeitslosengeld II diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 82b2041c8a..16212e2f69 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -8,6 +8,7 @@ from ttsim import param_function, policy_function if TYPE_CHECKING: + from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen from ttsim import RawParam @@ -114,32 +115,32 @@ def kindersatz_m_anteilsbasiert( def kindersatz_m_nach_regelbedarfsstufen_ohne_sofortzuschlag( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, - regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Basic monthly subsistence / SGB II needs of children since 2011. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ if ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_6.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_6.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_6.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_6.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz_nach_regelbedarfsstufen.rbs_6.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_6.satz elif ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_5.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_5.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_5.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_5.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz_nach_regelbedarfsstufen.rbs_5.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_5.satz elif ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_4.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_4.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_4.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_4.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = regelsatz_nach_regelbedarfsstufen.rbs_4.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_4.satz elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG - out = regelsatz_nach_regelbedarfsstufen.rbs_3.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_3 else: out = 0.0 @@ -153,7 +154,7 @@ def kindersatz_m_nach_regelbedarfsstufen_ohne_sofortzuschlag( def kindersatz_m_nach_regelbedarfsstufen_mit_sofortzuschlag( alter: int, kindergeld__gleiche_fg_wie_empfänger: bool, - regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, kindersofortzuschlag: float, ) -> float: """Basic monthly subsistence / SGB II needs of children since 2011. @@ -161,25 +162,25 @@ def kindersatz_m_nach_regelbedarfsstufen_mit_sofortzuschlag( Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ if ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_6.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_6.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_6.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_6.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_6.regelsatz + out = kindersofortzuschlag + grundsicherung__regelbedarfsstufen.rbs_6.satz elif ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_5.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_5.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_5.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_5.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_5.regelsatz + out = kindersofortzuschlag + grundsicherung__regelbedarfsstufen.rbs_5.satz elif ( - alter >= regelsatz_nach_regelbedarfsstufen.rbs_4.min_alter - and alter <= regelsatz_nach_regelbedarfsstufen.rbs_4.max_alter + alter >= grundsicherung__regelbedarfsstufen.rbs_4.altersgrenzen.min_alter + and alter <= grundsicherung__regelbedarfsstufen.rbs_4.altersgrenzen.max_alter and kindergeld__gleiche_fg_wie_empfänger ): - out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_4.regelsatz + out = kindersofortzuschlag + grundsicherung__regelbedarfsstufen.rbs_4.satz elif kindergeld__gleiche_fg_wie_empfänger: # adult children with parents in FG - out = kindersofortzuschlag + regelsatz_nach_regelbedarfsstufen.rbs_3.regelsatz + out = kindersofortzuschlag + grundsicherung__regelbedarfsstufen.rbs_3 else: out = 0.0 @@ -191,7 +192,7 @@ def kindersatz_m_nach_regelbedarfsstufen_mit_sofortzuschlag( end_date="2010-12-31", leaf_name="erwachsenensatz_m", ) -def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( +def erwachsenensatz_m_bis_2010( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, p_id_einstandspartner: int, @@ -216,11 +217,11 @@ def arbeitsl_geld_2_erwachsenensatz_m_bis_2010( start_date="2011-01-01", leaf_name="erwachsenensatz_m", ) -def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( +def erwachsenensatz_m_ab_2011( mehrbedarf_alleinerziehend_m: float, kindersatz_m: float, p_id_einstandspartner: int, - regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Basic monthly subsistence / SGB II needs for adults without dwelling since 2011. @@ -228,10 +229,10 @@ def arbeitsl_geld_2_erwachsenensatz_m_ab_2011( """ # BG has 2 adults if p_id_einstandspartner >= 0: - out = regelsatz_nach_regelbedarfsstufen.rbs_2.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_2 # This observation is not a child, so BG has 1 adult elif kindersatz_m == 0.0: - out = regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz + out = grundsicherung__regelbedarfsstufen.rbs_1 else: out = 0.0 @@ -444,66 +445,6 @@ def regelsatz_anteilsbasiert( ) -@dataclass(frozen=True) -class RegelbedarfsstufeErwachsener: - regelsatz: float - - -@dataclass(frozen=True) -class RegelbedarfsstufeKind: - regelsatz: float - min_alter: int - max_alter: int - - -@dataclass(frozen=True) -class RegelsatzNachRegelbedarfsstufen: - """Regelsatz as a fraction of the Basissatz.""" - - rbs_1: RegelbedarfsstufeErwachsener - rbs_2: RegelbedarfsstufeErwachsener - rbs_3: RegelbedarfsstufeErwachsener - rbs_4: RegelbedarfsstufeKind - rbs_5: RegelbedarfsstufeKind - rbs_6: RegelbedarfsstufeKind - - -@param_function(start_date="2011-01-01") -def regelsatz_nach_regelbedarfsstufen( - parameter_regelsatz_nach_regelbedarfsstufen: RawParam, -) -> RegelsatzNachRegelbedarfsstufen: - """Regelsatz nach Regelbedarfsstufen.""" - rbs_4 = RegelbedarfsstufeKind( - regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[4]["betrag"], - min_alter=parameter_regelsatz_nach_regelbedarfsstufen[4]["min_alter"], - max_alter=parameter_regelsatz_nach_regelbedarfsstufen[4]["max_alter"], - ) - rbs_5 = RegelbedarfsstufeKind( - regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[5]["betrag"], - min_alter=parameter_regelsatz_nach_regelbedarfsstufen[5]["min_alter"], - max_alter=parameter_regelsatz_nach_regelbedarfsstufen[5]["max_alter"], - ) - rbs_6 = RegelbedarfsstufeKind( - regelsatz=parameter_regelsatz_nach_regelbedarfsstufen[6]["betrag"], - min_alter=parameter_regelsatz_nach_regelbedarfsstufen[6]["min_alter"], - max_alter=parameter_regelsatz_nach_regelbedarfsstufen[6]["max_alter"], - ) - return RegelsatzNachRegelbedarfsstufen( - rbs_1=RegelbedarfsstufeErwachsener( - parameter_regelsatz_nach_regelbedarfsstufen[1] - ), - rbs_2=RegelbedarfsstufeErwachsener( - parameter_regelsatz_nach_regelbedarfsstufen[2] - ), - rbs_3=RegelbedarfsstufeErwachsener( - parameter_regelsatz_nach_regelbedarfsstufen[3] - ), - rbs_4=rbs_4, - rbs_5=rbs_5, - rbs_6=rbs_6, - ) - - @dataclass(frozen=True) class BerechtigteWohnflächeEigentum: anzahl_personen_zu_fläche: dict[int, float] diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 1d862a3e50..5b5f0be996 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -17,7 +17,7 @@ @dataclass(frozen=True) -class EinkommensgrenzeErziehungsgeld: +class Einkommensgrenze: regulär_alleinerziehend: dict[ErziehungsgeldSätze, float] regulär_paar: dict[ErziehungsgeldSätze, float] reduziert_alleinerziehend: dict[ErziehungsgeldSätze, float] @@ -30,9 +30,9 @@ class EinkommensgrenzeErziehungsgeld: ) def einkommensgrenze( parameter_einkommensgrenze: dict[str, Any], -) -> EinkommensgrenzeErziehungsgeld: +) -> Einkommensgrenze: """Parameter der Einkommensgrenze des Erziehungsgelds.""" - return EinkommensgrenzeErziehungsgeld( + return Einkommensgrenze( regulär_alleinerziehend=parameter_einkommensgrenze["regulär_alleinerziehend"], regulär_paar=parameter_einkommensgrenze["regulär_paar"], reduziert_alleinerziehend=parameter_einkommensgrenze[ @@ -304,7 +304,7 @@ def einkommensgrenze_ohne_geschwisterbonus( def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( familie__alleinerziehend_fg: bool, budgetsatz: bool, - einkommensgrenze: EinkommensgrenzeErziehungsgeld, + einkommensgrenze: Einkommensgrenze, ) -> float: """Base income threshold for parents of children younger than the age threshold. @@ -326,7 +326,7 @@ def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( def einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze( familie__alleinerziehend_fg: bool, budgetsatz: bool, - einkommensgrenze: EinkommensgrenzeErziehungsgeld, + einkommensgrenze: Einkommensgrenze, ) -> float: """Base income threshold for parents of children older than age threshold. diff --git a/src/_gettsim/grundsicherung/bedarfe.py b/src/_gettsim/grundsicherung/bedarfe.py new file mode 100644 index 0000000000..72599a8cd1 --- /dev/null +++ b/src/_gettsim/grundsicherung/bedarfe.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen +from ttsim import param_function + +if TYPE_CHECKING: + from ttsim import RawParam + + +@dataclass(frozen=True) +class Regelbedarfsstufen: + rbs_1: float + rbs_2: float + rbs_3: float + rbs_4: SatzMitAltersgrenzen + rbs_5: SatzMitAltersgrenzen + rbs_6: SatzMitAltersgrenzen + + +@param_function(start_date="2011-01-01") +def regelbedarfsstufen( + parameter_regelbedarfsstufen: RawParam, +) -> Regelbedarfsstufen: + """Regelbedarfsstufen nach SGB XII § 28 (Anlage).""" + rbs_4 = SatzMitAltersgrenzen( + satz=parameter_regelbedarfsstufen[4]["betrag"], + altersgrenzen=Altersgrenzen( + min_alter=parameter_regelbedarfsstufen[4]["min_alter"], + max_alter=parameter_regelbedarfsstufen[4]["max_alter"], + ), + ) + rbs_5 = SatzMitAltersgrenzen( + satz=parameter_regelbedarfsstufen[5]["betrag"], + altersgrenzen=Altersgrenzen( + min_alter=parameter_regelbedarfsstufen[5]["min_alter"], + max_alter=parameter_regelbedarfsstufen[5]["max_alter"], + ), + ) + rbs_6 = SatzMitAltersgrenzen( + satz=parameter_regelbedarfsstufen[6]["betrag"], + altersgrenzen=Altersgrenzen( + min_alter=parameter_regelbedarfsstufen[6]["min_alter"], + max_alter=parameter_regelbedarfsstufen[6]["max_alter"], + ), + ) + return Regelbedarfsstufen( + rbs_1=parameter_regelbedarfsstufen[1], + rbs_2=parameter_regelbedarfsstufen[2], + rbs_3=parameter_regelbedarfsstufen[3], + rbs_4=rbs_4, + rbs_5=rbs_5, + rbs_6=rbs_6, + ) diff --git a/src/_gettsim/grundsicherung/bedarfe.yaml b/src/_gettsim/grundsicherung/bedarfe.yaml new file mode 100644 index 0000000000..47c5b414e2 --- /dev/null +++ b/src/_gettsim/grundsicherung/bedarfe.yaml @@ -0,0 +1,265 @@ +--- +parameter_regelbedarfsstufen: + name: + de: Regelsatz mit direkter Angabe für Regelbedarfsstufen + en: Standard rate with direct specification of "Regelbedarfsstufen" + description: + de: >- + § 28 (Anlage) SGB XII. + Regelbedafstufen: + 1: Alleinstehender Erwachsener + 2: Erwachsene in Partnerschaft + 3: Erwachsene unter 25 im Haushalt der Eltern + 4: Jugendliche + 5: Ältere Kinder + 6: Jüngste Kinder + en: >- + Regelbedarfsstufen: + 1: Single Adult + 2: Adults in a partner relationship + 3: Adults under 25 in the household of their parents + 4: Adolescents + 5: Older children + 6: Youngest children + unit: Euros + reference_period: Month + type: require_converter + 2011-01-01: + 1: 364 + 2: 328 + 3: 291 + 4: + min_alter: 14 + max_alter: 17 + betrag: 287 + 5: + min_alter: 6 + max_alter: 13 + betrag: 251 + 6: + min_alter: 0 + max_alter: 5 + betrag: 215 + reference: Artikel 1 G. v. 24.03.2011 BGBl. I S. 453. + 2012-01-01: + 1: 374 + 2: 337 + 3: 299 + 4: + min_alter: 14 + max_alter: 17 + betrag: 287 + 5: + min_alter: 6 + max_alter: 13 + betrag: 251 + 6: + min_alter: 0 + max_alter: 5 + betrag: 219 + reference: V. v. 20.10.2011 BGBl. I S. 2093. + 2013-01-01: + 1: 382 + 2: 345 + 3: 306 + 4: + min_alter: 14 + max_alter: 17 + betrag: 289 + 5: + min_alter: 6 + max_alter: 13 + betrag: 255 + 6: + min_alter: 0 + max_alter: 5 + betrag: 224 + reference: B. v. 18.10.2012 BGBl. I S. 2175. + 2014-01-01: + 1: 391 + 2: 353 + 3: 313 + 4: + min_alter: 14 + max_alter: 17 + betrag: 296 + 5: + min_alter: 6 + max_alter: 13 + betrag: 261 + 6: + min_alter: 0 + max_alter: 5 + betrag: 229 + reference: B. v. 16.10.2013 BGBl. I S. 3857. + 2015-01-01: + 1: 399 + 2: 360 + 3: 320 + 4: + min_alter: 14 + max_alter: 17 + betrag: 302 + 5: + min_alter: 6 + max_alter: 13 + betrag: 267 + 6: + min_alter: 0 + max_alter: 5 + betrag: 234 + reference: B. v. 15.10.2014 BGBl. I S. 1620. + 2016-01-01: + 1: 404 + 2: 364 + 3: 324 + 4: + min_alter: 14 + max_alter: 17 + betrag: 306 + 5: + min_alter: 6 + max_alter: 13 + betrag: 270 + 6: + min_alter: 0 + max_alter: 5 + betrag: 237 + reference: B. v. 22.10.2015 BGBl. I S. 1792. + 2017-01-01: + 1: 409 + 2: 368 + 3: 327 + 4: + min_alter: 14 + max_alter: 17 + betrag: 311 + 5: + min_alter: 6 + max_alter: 13 + betrag: 291 + 6: + min_alter: 0 + max_alter: 5 + betrag: 236 + reference: G. v. 22.12.2016 BGBl. I S. 3159. + 2018-01-01: + 1: 416 + 2: 374 + 3: 332 + 4: + min_alter: 14 + max_alter: 17 + betrag: 316 + 5: + min_alter: 6 + max_alter: 13 + betrag: 296 + 6: + min_alter: 0 + max_alter: 5 + betrag: 240 + reference: V. v. 08.11.2017 BGBl. I S. 3767. + 2019-01-01: + 1: 424 + 2: 382 + 3: 339 + 4: + min_alter: 14 + max_alter: 17 + betrag: 322 + 5: + min_alter: 6 + max_alter: 13 + betrag: 302 + 6: + min_alter: 0 + max_alter: 5 + betrag: 245 + reference: V. v. 19.10.2018 BGBl. I S. 1766. + 2020-01-01: + 1: 432 + 2: 389 + 3: 345 + 4: + min_alter: 14 + max_alter: 17 + betrag: 328 + 5: + min_alter: 6 + max_alter: 13 + betrag: 308 + 6: + min_alter: 0 + max_alter: 5 + betrag: 250 + reference: V. v. 15.10.2019 BGBl. I S. 1452. + 2021-01-01: + 1: 446 + 2: 401 + 3: 357 + 4: + min_alter: 14 + max_alter: 17 + betrag: 373 + 5: + min_alter: 6 + max_alter: 13 + betrag: 309 + 6: + min_alter: 0 + max_alter: 5 + betrag: 283 + reference: G. v. 09.12.2020 BGBl. I S. 2855. + 2022-01-01: + 1: 449 + 2: 404 + 3: 360 + 4: + min_alter: 14 + max_alter: 17 + betrag: 376 + 5: + min_alter: 6 + max_alter: 13 + betrag: 311 + 6: + min_alter: 0 + max_alter: 5 + betrag: 285 + reference: V. v. 13.10.2021 BGBl. I S. 4674. + 2023-01-01: + 1: 502 + 2: 451 + 3: 402 + 4: + min_alter: 14 + max_alter: 17 + betrag: 420 + 5: + min_alter: 6 + max_alter: 13 + betrag: 348 + 6: + min_alter: 0 + max_alter: 5 + betrag: 318 + reference: G. v. 20.12.2022 BGBl. I S. 2328. + note: Bürgergeld-Gesetz + 2024-01-01: + 1: 563 + 2: 506 + 3: 451 + 4: + min_alter: 14 + max_alter: 17 + betrag: 471 + 5: + min_alter: 6 + max_alter: 13 + betrag: 390 + 6: + min_alter: 0 + max_alter: 5 + betrag: 357 + reference: §2 V. v. 24.10.2024 BGBl. I Nr. 287 diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index a5470a462a..3855886fa1 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -7,7 +7,7 @@ from ttsim import piecewise_polynomial, policy_function if TYPE_CHECKING: - from _gettsim.arbeitslosengeld_2.regelbedarf import RegelsatzNachRegelbedarfsstufen + from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen from ttsim import PiecewisePolynomialParam @@ -55,7 +55,7 @@ def erwerbseinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, anrechnungsfreier_anteil_erwerbseinkünfte: float, - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Calculate individual earnings considered in the calculation of Grundsicherung im Alter. @@ -65,7 +65,7 @@ def erwerbseinkommen_m( Notes: - Freibeträge for income are currently not considered - - Start date is 2011 because of the reference to regelsatz_nach_regelbedarfsstufen, + - Start date is 2011 because of the reference to regelbedarfsstufen, which was introduced in 2011. - The cap at 1/2 of Regelbedarf was only introduced in 2006 (which is currently not implemented): https://www.buzer.de/gesetz/3415/al3764-0.htm @@ -76,8 +76,7 @@ def erwerbseinkommen_m( ) earnings_after_max_deduction = ( - earnings - - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 + earnings - grundsicherung__regelbedarfsstufen.rbs_1 / 2 ) earnings = (1 - anrechnungsfreier_anteil_erwerbseinkünfte) * earnings @@ -113,7 +112,7 @@ def kapitaleinkommen_brutto_m_mit_freibetrag( def private_rente_betrag_m( sozialversicherung__rente__private_rente_betrag_m: float, anrechnungsfreier_anteil_private_renteneinkünfte: PiecewisePolynomialParam, - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Calculate individual private pension benefits considered in the calculation of Grundsicherung im Alter. @@ -126,7 +125,7 @@ def private_rente_betrag_m( parameters=anrechnungsfreier_anteil_private_renteneinkünfte, ) ) - upper = arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 + upper = grundsicherung__regelbedarfsstufen.rbs_1 / 2 return sozialversicherung__rente__private_rente_betrag_m - min( sozialversicherung__rente__private_rente_betrag_m_amount_exempt, upper @@ -149,7 +148,7 @@ def gesetzliche_rente_m_bis_2020( def gesetzliche_rente_m_ab_2021( sozialversicherung__rente__altersrente__betrag_m: float, sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: bool, - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, anrechnungsfreier_anteil_gesetzliche_rente: PiecewisePolynomialParam, ) -> float: """Calculate individual public pension benefits which are considered in the @@ -164,7 +163,7 @@ def gesetzliche_rente_m_ab_2021( parameters=anrechnungsfreier_anteil_gesetzliche_rente, ) - upper = arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz / 2 + upper = grundsicherung__regelbedarfsstufen.rbs_1 / 2 if sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: angerechnete_rente = min(angerechnete_rente, upper) else: diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index ec9a118bfa..d58273c8f4 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -5,7 +5,9 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: - from _gettsim.arbeitslosengeld_2.regelbedarf import RegelsatzNachRegelbedarfsstufen + from _gettsim.arbeitslosengeld_2.regelbedarf import ( + Regelbedarfsstufen, + ) from ttsim import policy_function @@ -75,15 +77,15 @@ def mehrbedarf_schwerbehinderung_g_m( schwerbehindert_grad_g: bool, arbeitslosengeld_2__anzahl_erwachsene_eg: int, mehrbedarf_bei_schwerbehinderungsgrad_g: float, - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen: RegelsatzNachRegelbedarfsstufen, + grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Calculate additional allowance for individuals with disabled person's pass G.""" mehrbedarf_single = ( - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_1.regelsatz + grundsicherung__regelbedarfsstufen.rbs_1 ) * mehrbedarf_bei_schwerbehinderungsgrad_g mehrbedarf_in_couple = ( - arbeitslosengeld_2__regelsatz_nach_regelbedarfsstufen.rbs_2.regelsatz + grundsicherung__regelbedarfsstufen.rbs_2 ) * mehrbedarf_bei_schwerbehinderungsgrad_g if (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg == 1): diff --git a/src/_gettsim/param_types.py b/src/_gettsim/param_types.py index 80358c9c14..83d42a200b 100644 --- a/src/_gettsim/param_types.py +++ b/src/_gettsim/param_types.py @@ -1,6 +1,18 @@ from dataclasses import dataclass +@dataclass(frozen=True) +class Altersgrenzen: + min_alter: int + max_alter: int + + +@dataclass(frozen=True) +class SatzMitAltersgrenzen: + satz: float + altersgrenzen: Altersgrenzen + + @dataclass(frozen=True) class ElementExistenzminimum: single: float diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index b8f85f2b6d..05c694943d 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -2,9 +2,9 @@ from __future__ import annotations -from dataclasses import dataclass from typing import TYPE_CHECKING +from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen from ttsim import ( AggType, RoundingSpec, @@ -208,7 +208,7 @@ def anspruchshöhe_m_anwendungsvors( def anspruchshöhe_m_2016_bis_2017_06( alter: int, kindergeld_erstes_kind_m: float, - mindestunterhalt_nach_alter: dict[str, Mindestunterhalt], + mindestunterhalt_nach_alter: dict[str, SatzMitAltersgrenzen], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. @@ -243,7 +243,7 @@ def anspruchshöhe_m_ab_2017_07( alter: int, elternteil_mindesteinkommen_erreicht: bool, kindergeld_erstes_kind_m: float, - mindestunterhalt_nach_alter: dict[str, Mindestunterhalt], + mindestunterhalt_nach_alter: dict[str, SatzMitAltersgrenzen], ) -> float: """Claim for advance on alimony payment (Unterhaltsvorschuss) on child level. @@ -350,22 +350,22 @@ def berechtigte_altersgruppen( @param_function(start_date="2016-01-01") def mindestunterhalt_nach_alter( raw_mindestunterhalt: RawParam, -) -> dict[str, Mindestunterhalt]: - kleinkind = Mindestunterhalt( +) -> dict[str, SatzMitAltersgrenzen]: + kleinkind = SatzMitAltersgrenzen( satz=raw_mindestunterhalt["kleinkind"]["satz"], altersgrenzen=Altersgrenzen( min_alter=raw_mindestunterhalt["kleinkind"]["min_alter"], max_alter=raw_mindestunterhalt["kleinkind"]["max_alter"], ), ) - schulkind = Mindestunterhalt( + schulkind = SatzMitAltersgrenzen( satz=raw_mindestunterhalt["schulkind"]["satz"], altersgrenzen=Altersgrenzen( min_alter=raw_mindestunterhalt["schulkind"]["min_alter"], max_alter=raw_mindestunterhalt["schulkind"]["max_alter"], ), ) - jugendliche = Mindestunterhalt( + jugendliche = SatzMitAltersgrenzen( satz=raw_mindestunterhalt["jugendliche"]["satz"], altersgrenzen=Altersgrenzen( min_alter=raw_mindestunterhalt["jugendliche"]["min_alter"], @@ -377,15 +377,3 @@ def mindestunterhalt_nach_alter( "schulkind": schulkind, "jugendliche": jugendliche, } - - -@dataclass(frozen=True) -class Altersgrenzen: - min_alter: int - max_alter: int - - -@dataclass(frozen=True) -class Mindestunterhalt: - satz: float - altersgrenzen: Altersgrenzen diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 2862b256a3..41a16d05c4 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -31,7 +31,7 @@ ) if TYPE_CHECKING: - from ttsim.param_objects import ConsecutiveInt1dLookupTableParamValue + from _gettsim.param_types import ConsecutiveInt1dLookupTableParamValue @dataclass(frozen=True) diff --git a/tests/ttsim/test_create_data_tree.py b/tests/ttsim/test_create_data_tree.py new file mode 100644 index 0000000000..2082630076 --- /dev/null +++ b/tests/ttsim/test_create_data_tree.py @@ -0,0 +1,123 @@ +from __future__ import annotations + +import dags.tree as dt +import pandas as pd +import pytest + +from ttsim import dataframe_to_nested_data + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "df", + "expected_output", + ), + [ + ( + { + "n1": { + "n2": "a", + }, + }, + pd.DataFrame({"a": [1, 2, 3]}), + {"n1": {"n2": pd.Series([1, 2, 3])}}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": "b", + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": 3, + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, + ), + ], +) +def test_dataframe_to_nested_data( + inputs_tree_to_df_columns, + df, + expected_output, +): + result = dataframe_to_nested_data( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, + df=df, + ) + flat_result = dt.flatten_to_qual_names(result) + flat_expected_output = dt.flatten_to_qual_names(expected_output) + + assert set(flat_result.keys()) == set(flat_expected_output.keys()) + for key in flat_result: + pd.testing.assert_series_equal( + flat_result[key], flat_expected_output[key], check_names=False + ) + + +@pytest.mark.parametrize( + "df", + [ + pd.DataFrame({True: [1, 2]}), + pd.DataFrame({1: [1, 2]}), + ], +) +def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): + with pytest.raises( + ValueError, match="DataFrame column names cannot be booleans or numbers." + ): + dataframe_to_nested_data(inputs_tree_to_df_columns={}, df=df) + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "expected_error_message", + ), + [ + ( + [], + "The inputs tree to column mapping must be a \\(nested\\) dictionary.", + ), + ( + { + "n1": { + "n2": pd.Series([1, 2, 3]), + }, + }, + "n1__n2: Series", + ), + ( + { + "n1": { + "n2": None, + }, + }, + "n1__n2: NoneType", + ), + ( + { + "n1": { + True: 2, + }, + }, + "All path elements of `inputs_tree_to_df_columns` must be strings.", + ), + ], +) +def test_create_data_tree_fails_if_mapper_has_incorrect_format( + inputs_tree_to_df_columns, expected_error_message +): + with pytest.raises(TypeError, match=expected_error_message): + dataframe_to_nested_data( + inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() + ) From 9263bebfbe63f790e42d567f4ab0d320d3494736 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 3 Jun 2025 08:06:30 +0200 Subject: [PATCH 037/109] METTSIM: Test overwriting scalar param / scalar param function with a data column (#947) Test that we can overwrite a scalar parameter / scalar function with a data column. --- .../ttsim/test_compute_taxes_and_transfers.py | 94 ++++++++++++++++++- ...eductions_param_overwritten_by_column.yaml | 24 +++++ 2 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index b753685e01..c99f6abee5 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -75,6 +75,11 @@ def identity(x: int) -> int: return x +@policy_function() +def identity_plus_one(identity: int) -> int: + return identity + 1 + + @policy_function() def some_func(p_id: int) -> int: return p_id @@ -90,6 +95,13 @@ def some_scalar_params_func(some_int_param: int) -> int: return some_int_param +@policy_function() +def some_policy_func_taking_scalar_params_func( + some_scalar_params_func: int, +) -> int: + return some_scalar_params_func + + @dataclass(frozen=True) class ConvertedParam: some_float_param: float @@ -107,12 +119,17 @@ def some_converting_params_func( @param_function() -def some_function_taking_scalar( +def some_param_function_taking_scalar( some_int_scalar: int, some_float_scalar: float, some_bool_scalar: bool ) -> float: return some_int_scalar + some_float_scalar + int(some_bool_scalar) +@policy_function() +def some_policy_function_taking_int_param(some_int_param: int) -> float: + return some_int_param + + SOME_RAW_PARAM = RawParam( value={ "some_float_param": 1, @@ -950,7 +967,7 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_bool_scalar": True, "some_scalar_params_func": some_scalar_params_func, "some_converting_params_func": some_converting_params_func, - "some_function_taking_scalar": some_function_taking_scalar, + "some_param_function_taking_scalar": some_param_function_taking_scalar, } processed_tree_with_params = column_functions_with_processed_params_and_scalars( flat_policy_environment_with_derived_functions_and_without_overridden_functions=policy_environment, @@ -967,6 +984,77 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_int_scalar": 1, "some_float_scalar": 2.0, "some_bool_scalar": True, - "some_function_taking_scalar": 4.0, + "some_param_function_taking_scalar": 4.0, } assert processed_tree_with_params == expected + + +@pytest.mark.parametrize( + ( + "nested_policy_environment", + "overriding_data", + "targets_tree", + "expected_output", + ), + [ + # Overwriting policy function + ( + { + "identity": identity, + "identity_plus_one": identity_plus_one, + }, + { + "identity": np.array([1, 2, 3, 4, 5]), + }, + {"identity_plus_one": None}, + {"identity_plus_one": np.array([2, 3, 4, 5, 6])}, + ), + # Overwriting parameter + ( + { + "some_int_param": SOME_INT_PARAM, + "some_policy_function_taking_int_param": some_policy_function_taking_int_param, # noqa: E501 + }, + { + "some_int_param": np.array([1, 2, 3, 4, 5]), + }, + {"some_policy_function_taking_int_param": None}, + {"some_policy_function_taking_int_param": np.array([1, 2, 3, 4, 5])}, + ), + # Overwriting parameter function + ( + { + "some_int_param": SOME_INT_PARAM, + "some_scalar_params_func": some_policy_function_taking_int_param, + "some_policy_func_taking_scalar_params_func": some_policy_func_taking_scalar_params_func, # noqa: E501 + }, + { + "some_scalar_params_func": np.array([1, 2, 3, 4, 5]), + }, + {"some_policy_func_taking_scalar_params_func": None}, + {"some_policy_func_taking_scalar_params_func": np.array([1, 2, 3, 4, 5])}, + ), + ], +) +def test_can_override_ttsim_objects_with_data( + nested_policy_environment, + overriding_data, + targets_tree, + expected_output, + minimal_input_data, +): + result = compute_taxes_and_transfers( + data_tree={ + **minimal_input_data, + **overriding_data, + }, + policy_environment=nested_policy_environment, + targets_tree=targets_tree, + ) + + flat_results = dt.flatten_to_tree_paths(result) + flat_expected = dt.flatten_to_tree_paths(expected_output) + + assert flat_results.keys() == flat_expected.keys() + for key in flat_expected: + numpy.testing.assert_array_almost_equal(flat_results[key], flat_expected[key]) diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml new file mode 100644 index 0000000000..def39d52c7 --- /dev/null +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml @@ -0,0 +1,24 @@ +--- +info: + note: Scalar parameter `lump_sum_deduction_y` is overwritten by a column. + precision_atol: 0.01 + source: '' +inputs: + provided: + p_id: + - 0 + - 1 + - 2 + payroll_tax__child_tax_credit__amount_y: + - 0.0 + - 0.0 + - 0.0 + payroll_tax__income__lump_sum_deduction_y: + - 100.0 + - 200.0 + - 300.0 +outputs: + payroll_tax__income__deductions_y: + - 100.0 + - 200.0 + - 300.0 From 53f87fcd8d0bd5485c5cc67036ff1c90bc0eb12a Mon Sep 17 00:00:00 2001 From: Max Jahn <max.jahn45@gmail.com> Date: Thu, 5 Jun 2025 05:44:14 +0200 Subject: [PATCH 038/109] Remove all occurrences of `vectorization_strategy='loop'` (#943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Some GETTSIM Functions still use numpy vectorization, indicated by `vectorization_strategy='loop'`. These should be modified to be either vectorized by default or use GETTSIM's vectorization functionality. ### Todo - [x] Remove `vectorization_strategy='loop'` - [x] `individual_characteristics.py` - [x] `miete.py` - [x] `einkommensteuer.py` - [x] `regelbedarf.py` - [x] `erziehungsgeld.py` - [x] `kindergeld.py` - [x] `einkommen.py` - [x] `lohnsteuer.py` - [x] `midijob.py` - [x] `solidaritätszuschlag.py` - [x] `arbeitslosengeld.py` - [x] `beitrag.py` - [x] `altersgrenzen.py` - [x] `grundrente.py` - [x] `unterhaltsvorschuss.py` - [x] `wohngeld.py` --- pixi.lock | 4 +- pyproject.toml | 3 +- .../arbeitslosengeld_2/regelbedarf.py | 62 ++- .../einkommensteuer/einkommensteuer.py | 18 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 24 +- src/_gettsim/individual_characteristics.py | 2 +- src/_gettsim/kinderzuschlag/einkommen.py | 2 +- src/_gettsim/lohnsteuer/lohnsteuer.py | 361 ++++++++++-------- .../solidarit\303\244tszuschlag.py" | 46 +-- .../arbeitslosen/arbeitslosengeld.py | 22 +- .../kranken/beitrag/beitrag.py | 4 - src/_gettsim/sozialversicherung/midijob.py | 1 - .../rente/altersrente/altersgrenzen.py | 61 ++- .../rente/grundrente/grundrente.py | 34 +- .../unterhaltsvorschuss.py | 52 +-- src/_gettsim/wohngeld/einkommen.py | 78 ++-- src/_gettsim/wohngeld/miete.py | 50 ++- src/_gettsim/wohngeld/wohngeld.py | 59 ++- 18 files changed, 462 insertions(+), 421 deletions(-) diff --git a/pixi.lock b/pixi.lock index 569b513473..3a6b98b663 100644 --- a/pixi.lock +++ b/pixi.lock @@ -6594,8 +6594,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev132+gef75b391.d20250529 - sha256: 662873dda0fc6cb172358c1bc9e16c6f7d1477e47890b08ae84c02951127c88c + version: 0.7.1.dev156+g763c5908 + sha256: b0ce3f2d410396211d11c6bab00d4f7256489daa06dfc2081810c543575aa7b4 requires_dist: - ipywidgets - networkx diff --git a/pyproject.toml b/pyproject.toml index f0c34cc6fe..26a524d905 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -261,7 +261,8 @@ exclude = [] "src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] "src/ttsim/piecewise_functions.py" = ["PLR"] "src/ttsim/plot_dag.py" = ["PLR"] -"src/_gettsim/*" = ["E501"] +"src/_gettsim/*" = ["E501", "PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} +"tests/ttsim/mettsim/*" = ["PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} "docs/**/*.ipynb" = ["T201"] # Files which should be ignored until we have rewritten them diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 16212e2f69..6ebcaa5dd3 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -5,7 +5,12 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim import param_function, policy_function +from ttsim import ( + ConsecutiveInt1dLookupTableParamValue, + get_consecutive_int_1d_lookup_table_param_value, + param_function, + policy_function, +) if TYPE_CHECKING: from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen @@ -26,7 +31,7 @@ def regelbedarf_m( return regelsatz_m + kosten_der_unterkunft_m -@policy_function(start_date="2005-01-01", vectorization_strategy="loop") +@policy_function(start_date="2005-01-01") def mehrbedarf_alleinerziehend_m( familie__alleinerziehend: bool, anzahl_kinder_fg: int, @@ -56,7 +61,8 @@ def mehrbedarf_alleinerziehend_m( "kind_bis_6_oder_mehrere_bis_15" ] if (anzahl_kinder_bis_6_fg >= 1) - or (2 <= anzahl_kinder_bis_15_fg <= 3) + or anzahl_kinder_bis_15_fg == 2 + or anzahl_kinder_bis_15_fg == 3 else 0.0 ), ), @@ -304,32 +310,22 @@ def anerkannte_warmmiete_je_qm_m( return min(out, mietobergrenze_pro_qm) -@policy_function(vectorization_strategy="loop", start_date="2005-01-01") +@policy_function(start_date="2005-01-01") def berechtigte_wohnfläche( wohnfläche: float, wohnen__bewohnt_eigentum_hh: bool, anzahl_personen_hh: int, berechtigte_wohnfläche_miete: dict[str, float], - berechtigte_wohnfläche_eigentum: BerechtigteWohnflächeEigentum, + berechtigte_wohnfläche_eigentum: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Calculate size of dwelling eligible to claim. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ if wohnen__bewohnt_eigentum_hh: - if anzahl_personen_hh <= berechtigte_wohnfläche_eigentum.max_anzahl_direkt: - maximum = berechtigte_wohnfläche_eigentum.anzahl_personen_zu_fläche[ - anzahl_personen_hh - ] - else: - maximum = ( - berechtigte_wohnfläche_eigentum.max_anzahl_direkt - + ( - anzahl_personen_hh - - berechtigte_wohnfläche_eigentum.max_anzahl_direkt - ) - * berechtigte_wohnfläche_eigentum.je_weitere_person - ) + maximum = berechtigte_wohnfläche_eigentum.values_to_look_up[ + anzahl_personen_hh - berechtigte_wohnfläche_eigentum.base_to_subtract + ] else: maximum = ( berechtigte_wohnfläche_miete["single"] @@ -445,29 +441,15 @@ def regelsatz_anteilsbasiert( ) -@dataclass(frozen=True) -class BerechtigteWohnflächeEigentum: - anzahl_personen_zu_fläche: dict[int, float] - je_weitere_person: float - max_anzahl_direkt: int - - @param_function(start_date="2005-01-01") def berechtigte_wohnfläche_eigentum( parameter_berechtigte_wohnfläche_eigentum: RawParam, -) -> BerechtigteWohnflächeEigentum: + wohngeld__max_anzahl_personen: dict[str, int], +) -> ConsecutiveInt1dLookupTableParamValue: """Berechtigte Wohnfläche für Eigenheim.""" - return BerechtigteWohnflächeEigentum( - anzahl_personen_zu_fläche={ - 1: parameter_berechtigte_wohnfläche_eigentum[1], - 2: parameter_berechtigte_wohnfläche_eigentum[2], - 3: parameter_berechtigte_wohnfläche_eigentum[3], - 4: parameter_berechtigte_wohnfläche_eigentum[4], - }, - je_weitere_person=parameter_berechtigte_wohnfläche_eigentum[ - "je_weitere_person" - ], - max_anzahl_direkt=parameter_berechtigte_wohnfläche_eigentum[ - "max_anzahl_direkt" - ], - ) + tmp = parameter_berechtigte_wohnfläche_eigentum.copy() + je_weitere_person = tmp.pop("je_weitere_person") + max_anzahl_direkt = tmp.pop("max_anzahl_direkt") + for i in range(wohngeld__max_anzahl_personen["indizierung"] - max_anzahl_direkt): + tmp[i] = tmp[max_anzahl_direkt] + i * je_weitere_person + return get_consecutive_int_1d_lookup_table_param_value(raw=tmp) diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 4af6eb6f9d..98701272c1 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -122,7 +122,6 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), - vectorization_strategy="loop", ) def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, @@ -137,8 +136,8 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_verst_eink_per_indiv = ( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn / anzahl_personen_sn ) - return anzahl_personen_sn * einkommensteuertarif( - x=zu_verst_eink_per_indiv, params=parameter_einkommensteuertarif + return anzahl_personen_sn * piecewise_polynomial( + x=zu_verst_eink_per_indiv, parameters=parameter_einkommensteuertarif ) @@ -146,7 +145,6 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( rounding_spec=RoundingSpec( base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" ), - vectorization_strategy="loop", ) def betrag_ohne_kinderfreibetrag_y_sn( gesamteinkommen_y: float, @@ -158,8 +156,8 @@ def betrag_ohne_kinderfreibetrag_y_sn( """ zu_verst_eink_per_indiv = gesamteinkommen_y / anzahl_personen_sn - return anzahl_personen_sn * einkommensteuertarif( - x=zu_verst_eink_per_indiv, params=parameter_einkommensteuertarif + return anzahl_personen_sn * piecewise_polynomial( + x=zu_verst_eink_per_indiv, parameters=parameter_einkommensteuertarif ) @@ -212,14 +210,6 @@ def relevantes_kindergeld_ohne_staffelung_m( return kindergeld__satz * kindergeld_ansprüche / 2 -def einkommensteuertarif(x: float, params: PiecewisePolynomialParamValue) -> float: - """The German income tax tariff.""" - return piecewise_polynomial( - x=x, - parameters=params, - ) - - @param_function(start_date="2002-01-01") def parameter_einkommensteuertarif( raw_parameter_einkommensteuertarif: RawParam, diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 5b5f0be996..a438f833e8 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -49,11 +49,9 @@ def anspruchshöhe_m( pass -@policy_function( - start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" -) +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def betrag_m( - anspruchshöhe_m: int, + anspruchshöhe_m: float, grundsätzlich_anspruchsberechtigt: bool, ) -> float: """Total parental leave benefits (Erziehungsgeld) received by the parent. @@ -61,7 +59,7 @@ def betrag_m( Legal reference: BErzGG (BGBl. I 1985 S. 2154; BGBl. I 2004 S. 206) """ if grundsätzlich_anspruchsberechtigt: - out: float = anspruchshöhe_m + out = anspruchshöhe_m else: out = 0.0 @@ -255,9 +253,7 @@ def anzurechnendes_einkommen_y( return out -@policy_function( - start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" -) +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def einkommensgrenze_y( einkommensgrenze_ohne_geschwisterbonus: float, arbeitslosengeld_2__anzahl_kinder_fg: float, @@ -278,9 +274,7 @@ def einkommensgrenze_y( return out -@policy_function( - start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" -) +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def einkommensgrenze_ohne_geschwisterbonus( alter_monate: int, einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze: float, @@ -298,9 +292,7 @@ def einkommensgrenze_ohne_geschwisterbonus( return einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze -@policy_function( - start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" -) +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( familie__alleinerziehend_fg: bool, budgetsatz: bool, @@ -320,9 +312,7 @@ def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( return einkommensgrenze.regulär_paar["regelsatz"] -@policy_function( - start_date="2004-01-01", end_date="2008-12-31", vectorization_strategy="loop" -) +@policy_function(start_date="2004-01-01", end_date="2008-12-31") def einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze( familie__alleinerziehend_fg: bool, budgetsatz: bool, diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 1d4c3b2bdf..13cc6eccda 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -7,7 +7,7 @@ from ttsim import policy_function -@policy_function(vectorization_strategy="loop") +@policy_function() def geburtsdatum( geburtsjahr: int, geburtsmonat: int, diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 6d7c1e95c2..9b489d24be 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -197,7 +197,7 @@ def anzurechnendes_einkommen_eltern_m_bg( return max(out, 0.0) -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2005-01-01") def kosten_der_unterkunft_m_bg( wohnbedarf_anteil_eltern_bg: float, arbeitslosengeld_2__bruttokaltmiete_m_bg: float, diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index f08a50cf66..f26238f032 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -2,36 +2,217 @@ from __future__ import annotations -from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif -from _gettsim.solidaritätszuschlag.solidaritätszuschlag import ( - solidaritätszuschlagstarif, +from ttsim import ( + PiecewisePolynomialParamValue, + param_function, + piecewise_polynomial, + policy_function, ) -from ttsim import PiecewisePolynomialParamValue, policy_function +from ttsim.config import numpy_or_jax as np -@policy_function(vectorization_strategy="loop") -def betrag_m( +def basis_für_klassen_5_6( + einkommen_y: float, parameter_einkommensteuertarif: PiecewisePolynomialParamValue +) -> float: + """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying + obtaining twice the difference between applying the factors 1.25 and 0.75 + to the lohnsteuer payment. + + §39 b Absatz 2 Satz 7 (part 1): + + Jahreslohnsteuer die sich aus dem Zweifachen des Unterschiedsbetrags zwischen + dem Steuerbetrag für das Eineinviertelfache und dem Steuerbetrag für das + Dreiviertelfache des zu versteuernden Jahresbetrags nach § 32a Absatz 1 ergibt; + die Jahreslohnsteuer beträgt jedoch mindestens 14 Prozent des zu versteuernden + Jahresbetrags. + + """ + + return 2 * ( + piecewise_polynomial( + x=einkommen_y * 1.25, parameters=parameter_einkommensteuertarif + ) + - piecewise_polynomial( + x=einkommen_y * 0.75, parameters=parameter_einkommensteuertarif + ) + ) + + +@param_function(start_date="2015-01-01") +def parameter_max_lohnsteuer_klasse_5_6( + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], +) -> PiecewisePolynomialParamValue: + """Create paramter values for the piecewise polynomial that represents the maximum amount of Lohnsteuer + that can be paid on incomes higher than the income thresholds for Steuerklasse 5 and 6. + """ + lohnsteuer_bis_erste_grenze = basis_für_klassen_5_6( + einkommensgrenzwerte_steuerklassen_5_6[1], + einkommensteuer__parameter_einkommensteuertarif, + ) + lohnsteuer_bis_zweite_grenze = basis_für_klassen_5_6( + einkommensgrenzwerte_steuerklassen_5_6[2], + einkommensteuer__parameter_einkommensteuertarif, + ) + lohnsteuer_bis_dritte_grenze = basis_für_klassen_5_6( + einkommensgrenzwerte_steuerklassen_5_6[3], + einkommensteuer__parameter_einkommensteuertarif, + ) + thresholds = np.asarray( + [ + 0, + einkommensgrenzwerte_steuerklassen_5_6[1], + einkommensgrenzwerte_steuerklassen_5_6[2], + einkommensgrenzwerte_steuerklassen_5_6[3], + ] + ) + intercepts = np.asarray( + [ + 0, + lohnsteuer_bis_erste_grenze, + lohnsteuer_bis_zweite_grenze, + lohnsteuer_bis_dritte_grenze, + ] + ) + rates = np.expand_dims( + einkommensteuer__parameter_einkommensteuertarif.rates[0][ + np.array([3, 3, 3, 4]) + ], + axis=0, + ) + parameter_max_lohnsteuer_klasse_5_6 = PiecewisePolynomialParamValue( + thresholds=thresholds, intercepts=intercepts, rates=rates + ) + + return parameter_max_lohnsteuer_klasse_5_6 + + +@policy_function(start_date="2015-01-01") +def basistarif( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, +) -> float: + """Lohnsteuer in the Basistarif.""" + return piecewise_polynomial( + x=einkommen_y, parameters=einkommensteuer__parameter_einkommensteuertarif + ) + + +@policy_function(start_date="2015-01-01") +def splittingtarif( + einkommen_y: float, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, +) -> float: + """Lohnsteuer in the Splittingtarif.""" + return 2 * piecewise_polynomial( + x=einkommen_y / 2, parameters=einkommensteuer__parameter_einkommensteuertarif + ) + + +@policy_function(start_date="2015-01-01") +def tarif_klassen_5_und_6( + einkommen_y: float, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + parameter_max_lohnsteuer_klasse_5_6: PiecewisePolynomialParamValue, +) -> float: + """Lohnsteuer for Lohnsteuerklassen 5 and 6.""" + + basis = basis_für_klassen_5_6( + einkommen_y, einkommensteuer__parameter_einkommensteuertarif + ) + max_lohnsteuer = piecewise_polynomial( + x=einkommen_y, parameters=parameter_max_lohnsteuer_klasse_5_6 + ) + min_lohnsteuer = ( + einkommensteuer__parameter_einkommensteuertarif.rates[0, 1] * einkommen_y + ) + return np.minimum(np.maximum(min_lohnsteuer, basis), max_lohnsteuer) + + +@policy_function(start_date="2015-01-01") +def betrag_y( steuerklasse: int, - einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], + basistarif: float, + splittingtarif: float, + tarif_klassen_5_und_6: float, ) -> float: """Withholding tax on earnings (Lohnsteuer)""" - return lohnsteuerformel( - einkommen_y=einkommen_y, - parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, - einkommensgrenzwerte_steuerklassen_5_6=einkommensgrenzwerte_steuerklassen_5_6, - steuerklasse=steuerklasse, + + if steuerklasse == 1 or steuerklasse == 2 or steuerklasse == 4: + out = basistarif + elif steuerklasse == 3: + out = splittingtarif + else: + out = tarif_klassen_5_und_6 + + return max(out, 0.0) + + +@policy_function(start_date="2015-01-01") +def basistarif_mit_kinderfreibetrag( + einkommen_y: float, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + kinderfreibetrag_soli_y: float, +) -> float: + """Lohnsteuer in the Basistarif deducting the Kindefreibetrag.""" + einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( + einkommen_y - kinderfreibetrag_soli_y, 0 + ) + return piecewise_polynomial( + x=einkommen_abzüglich_kinderfreibetrag_soli, + parameters=einkommensteuer__parameter_einkommensteuertarif, ) -@policy_function(vectorization_strategy="loop") -def betrag_mit_kinderfreibetrag_m( +@policy_function(start_date="2015-01-01") +def splittingtarif_mit_kinderfreibetrag( einkommen_y: float, + einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, kinderfreibetrag_soli_y: float, - steuerklasse: int, +) -> float: + """Lohnsteuer in the Splittingtarif deducting the Kindefreibetrag.""" + einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( + einkommen_y - kinderfreibetrag_soli_y, 0 + ) + return 2 * piecewise_polynomial( + x=einkommen_abzüglich_kinderfreibetrag_soli / 2, + parameters=einkommensteuer__parameter_einkommensteuertarif, + ) + + +@policy_function(start_date="2015-01-01") +def tarif_klassen_5_und_6_mit_kinderfreibetrag( + einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, - einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], + parameter_max_lohnsteuer_klasse_5_6: PiecewisePolynomialParamValue, + kinderfreibetrag_soli_y: float, +) -> float: + """Lohnsteuer for Lohnsteuerklassen 5 and 6 deducting the Kindefreibetrag.""" + einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( + einkommen_y - kinderfreibetrag_soli_y, 0 + ) + + basis = basis_für_klassen_5_6( + einkommen_abzüglich_kinderfreibetrag_soli, + einkommensteuer__parameter_einkommensteuertarif, + ) + max_lohnsteuer = piecewise_polynomial( + x=einkommen_abzüglich_kinderfreibetrag_soli, + parameters=parameter_max_lohnsteuer_klasse_5_6, + ) + min_lohnsteuer = ( + einkommensteuer__parameter_einkommensteuertarif.rates[0, 1] + * einkommen_abzüglich_kinderfreibetrag_soli + ) + return np.minimum(np.maximum(min_lohnsteuer, basis), max_lohnsteuer) + + +@policy_function(start_date="2015-01-01") +def betrag_mit_kinderfreibetrag_y( + steuerklasse: int, + basistarif_mit_kinderfreibetrag: float, + splittingtarif_mit_kinderfreibetrag: float, + tarif_klassen_5_und_6_mit_kinderfreibetrag: float, ) -> float: """Withholding tax taking child allowances into account. @@ -39,31 +220,29 @@ def betrag_mit_kinderfreibetrag_m( takes child allowance into account. Important only for calculation of Solidaritätszuschlag on Lohnsteuer! """ - einkommen_abzüglich_kinderfreibetrag_soli = max( - einkommen_y - kinderfreibetrag_soli_y, 0 - ) - return lohnsteuerformel( - einkommen_y=einkommen_abzüglich_kinderfreibetrag_soli, - parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, - einkommensgrenzwerte_steuerklassen_5_6=einkommensgrenzwerte_steuerklassen_5_6, - steuerklasse=steuerklasse, - ) + if steuerklasse == 1 or steuerklasse == 2 or steuerklasse == 4: + out = basistarif_mit_kinderfreibetrag + elif steuerklasse == 3: + out = splittingtarif_mit_kinderfreibetrag + else: + out = tarif_klassen_5_und_6_mit_kinderfreibetrag + return max(out, 0.0) -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2015-01-01") def betrag_soli_y( betrag_mit_kinderfreibetrag_y: float, solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, ) -> float: """Solidarity surcharge on Lohnsteuer (withholding tax on earnings).""" - return solidaritätszuschlagstarif( - steuer_pro_person=betrag_mit_kinderfreibetrag_y, - parameter_solidaritätszuschlag=solidaritätszuschlag__parameter_solidaritätszuschlag, + return piecewise_polynomial( + x=betrag_mit_kinderfreibetrag_y, + parameters=solidaritätszuschlag__parameter_solidaritätszuschlag, ) -@policy_function(vectorization_strategy="loop") +@policy_function(start_date="2015-01-01") def kinderfreibetrag_soli_y( steuerklasse: int, einkommensteuer__kinderfreibetrag_y: int, @@ -75,130 +254,10 @@ def kinderfreibetrag_soli_y( nothing. """ - if steuerklasse in {1, 2, 3}: + if steuerklasse == 1 or steuerklasse == 2 or steuerklasse == 3: out = 2 * einkommensteuer__kinderfreibetrag_y elif steuerklasse == 4: out = einkommensteuer__kinderfreibetrag_y else: out = 0 return out - - -def lohnsteuerformel( - einkommen_y: float, - parameter_einkommensteuertarif: PiecewisePolynomialParamValue, - einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], - steuerklasse: int, -) -> float: - """ - Calculates Lohnsteuer (withholding tax on earnings), paid monthly by the employer on - behalf of the employee. Apply the income tax tariff, but individually and with - different exemptions, determined by the 'steuerklasse'. Source: §39b EStG - - Calculation is differentiated by steuerklasse - - 1,2,4: Standard tariff (§32a (1) EStG) 3: Splitting tariff (§32a (5) EStG) 5,6: Take - twice the difference between applying the tariff on 5/4 and 3/4 of taxable income. - Tax rate may not be lower than the starting statutory one. - - """ - - lohnsteuer_basistarif = einkommensteuertarif( - einkommen_y, parameter_einkommensteuertarif - ) - lohnsteuer_splittingtarif = 2 * einkommensteuertarif( - einkommen_y / 2, parameter_einkommensteuertarif - ) - lohnsteuer_5_6_basis = basis_für_klassen_5_6( - einkommen_y=einkommen_y, - parameter_einkommensteuertarif=parameter_einkommensteuertarif, - ) - - lohnsteuer_grenze_1 = basis_für_klassen_5_6( - einkommen_y=einkommensgrenzwerte_steuerklassen_5_6[1], - parameter_einkommensteuertarif=parameter_einkommensteuertarif, - ) - max_lohnsteuer = ( - lohnsteuer_grenze_1 - + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[1]) - * parameter_einkommensteuertarif.rates[0, 3] - ) - lohnsteuer_grenze_2 = basis_für_klassen_5_6( - einkommen_y=einkommensgrenzwerte_steuerklassen_5_6[2], - parameter_einkommensteuertarif=parameter_einkommensteuertarif, - ) - lohnsteuer_zw_grenze_2_3 = ( - einkommensgrenzwerte_steuerklassen_5_6[3] - - einkommensgrenzwerte_steuerklassen_5_6[2] - ) * parameter_einkommensteuertarif.rates[0, 3] - lohnsteuer_klasse5_6_tmp = lohnsteuer_grenze_2 + lohnsteuer_zw_grenze_2_3 - - if einkommen_y < einkommensgrenzwerte_steuerklassen_5_6[1]: - lohnsteuer_klasse5_6 = lohnsteuer_5_6_basis - elif ( - einkommensgrenzwerte_steuerklassen_5_6[1] - <= einkommen_y - < einkommensgrenzwerte_steuerklassen_5_6[2] - ): - lohnsteuer_klasse5_6 = min( - max_lohnsteuer, - basis_für_klassen_5_6( - einkommen_y=einkommen_y, - parameter_einkommensteuertarif=parameter_einkommensteuertarif, - ), - ) - elif ( - einkommensgrenzwerte_steuerklassen_5_6[2] - <= einkommen_y - < einkommensgrenzwerte_steuerklassen_5_6[3] - ): - lohnsteuer_klasse5_6 = ( - lohnsteuer_grenze_2 - + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[2]) - * parameter_einkommensteuertarif.rates[0, 3] - ) - else: - lohnsteuer_klasse5_6 = ( - lohnsteuer_klasse5_6_tmp - + (einkommen_y - einkommensgrenzwerte_steuerklassen_5_6[3]) - * parameter_einkommensteuertarif.rates[0, 4] - ) - - if steuerklasse in {1, 2, 4}: - out = lohnsteuer_basistarif - elif steuerklasse == 3: - out = lohnsteuer_splittingtarif - else: - out = lohnsteuer_klasse5_6 - - out = out / 12 - - return max(out, 0.0) - - -def basis_für_klassen_5_6( - einkommen_y: float, parameter_einkommensteuertarif: PiecewisePolynomialParamValue -) -> float: - """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying - obtaining twice the difference between applying the factors 1.25 and 0.75 - to the lohnsteuer payment. There is a also a minimum amount, which is checked - afterwards. - - §39 b Absatz 2 Satz 7 (part 1): - - Jahreslohnsteuer die sich aus dem Zweifachen des Unterschiedsbetrags zwischen - dem Steuerbetrag für das Eineinviertelfache und dem Steuerbetrag für das - Dreiviertelfache des zu versteuernden Jahresbetrags nach § 32a Absatz 1 ergibt; - die Jahreslohnsteuer beträgt jedoch mindestens 14 Prozent des zu versteuernden - Jahresbetrags. - - """ - - return max( - 2 - * ( - einkommensteuertarif(einkommen_y * 1.25, parameter_einkommensteuertarif) - - einkommensteuertarif(einkommen_y * 0.75, parameter_einkommensteuertarif) - ), - einkommen_y * parameter_einkommensteuertarif.rates[0, 1], - ) diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index 651ce44f13..5ea6afeff9 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -5,9 +5,20 @@ from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function -@policy_function( - end_date="2008-12-31", leaf_name="betrag_y_sn", vectorization_strategy="loop" -) +def solidaritätszuschlagstarif( + steuer_pro_person: float, + einkommensteuer__anzahl_personen_sn: int, + parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, +) -> float: + """The isolated function for Solidaritätszuschlag.""" + + return einkommensteuer__anzahl_personen_sn * piecewise_polynomial( + x=steuer_pro_person / einkommensteuer__anzahl_personen_sn, + parameters=parameter_solidaritätszuschlag, + ) + + +@policy_function(end_date="2008-12-31", leaf_name="betrag_y_sn") def betrag_y_sn_ohne_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, @@ -27,16 +38,14 @@ def betrag_y_sn_ohne_abgelt_st( SolzG 1995. """ - return einkommensteuer__anzahl_personen_sn * solidaritätszuschlagstarif( - steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - / einkommensteuer__anzahl_personen_sn, + return solidaritätszuschlagstarif( + steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn, + einkommensteuer__anzahl_personen_sn=einkommensteuer__anzahl_personen_sn, parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, ) -@policy_function( - start_date="2009-01-01", leaf_name="betrag_y_sn", vectorization_strategy="loop" -) +@policy_function(start_date="2009-01-01", leaf_name="betrag_y_sn") def betrag_y_sn_mit_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, @@ -58,24 +67,11 @@ def betrag_y_sn_mit_abgelt_st( """ return ( - einkommensteuer__anzahl_personen_sn - * solidaritätszuschlagstarif( - steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn - / einkommensteuer__anzahl_personen_sn, + solidaritätszuschlagstarif( + steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn, + einkommensteuer__anzahl_personen_sn=einkommensteuer__anzahl_personen_sn, parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, ) + parameter_solidaritätszuschlag.rates[0, -1] * einkommensteuer__abgeltungssteuer__betrag_y_sn ) - - -def solidaritätszuschlagstarif( - steuer_pro_person: float, - parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, -) -> float: - """The isolated function for Solidaritätszuschlag.""" - - return piecewise_polynomial( - x=steuer_pro_person, - parameters=parameter_solidaritätszuschlag, - ) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index 5325853f6b..d7ab52428b 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -2,7 +2,6 @@ from __future__ import annotations -from _gettsim.einkommensteuer.einkommensteuer import einkommensteuertarif from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function @@ -34,7 +33,7 @@ def betrag_m( return out -@policy_function(vectorization_strategy="loop") +@policy_function() def monate_verbleibender_anspruchsdauer( alter: int, monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, @@ -42,25 +41,24 @@ def monate_verbleibender_anspruchsdauer( monate_durchgängigen_bezugs_von_arbeitslosengeld: float, anspruchsdauer_nach_alter: PiecewisePolynomialParamValue, anspruchsdauer_nach_versicherungspflichtigen_monaten: PiecewisePolynomialParamValue, -) -> int: +) -> float: """Calculate the remaining amount of months a person can receive unemployment benefits. """ nach_alter = piecewise_polynomial( - alter, + x=alter, parameters=anspruchsdauer_nach_alter, ) nach_versich_pfl = piecewise_polynomial( - monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, + x=monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, parameters=anspruchsdauer_nach_versicherungspflichtigen_monaten, ) - if anwartschaftszeit: - anspruchsdauer_gesamt = min(nach_alter, nach_versich_pfl) if anwartschaftszeit: out = max( - anspruchsdauer_gesamt - monate_durchgängigen_bezugs_von_arbeitslosengeld, + min(nach_alter, nach_versich_pfl) + - monate_durchgängigen_bezugs_von_arbeitslosengeld, 0, ) else: @@ -91,7 +89,7 @@ def grundsätzlich_anspruchsberechtigt( ) -@policy_function(vectorization_strategy="loop") +@policy_function() def einkommen_vorjahr_proxy_m( sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, @@ -115,10 +113,10 @@ def einkommen_vorjahr_proxy_m( # 12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale not being # the same as zu versteuerndes einkommen # waiting for PR Lohnsteuer #150 to be merged to correct this problem - prox_tax = einkommensteuertarif( - 12 * max_wage + prox_tax = piecewise_polynomial( + x=12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale, - einkommensteuer__parameter_einkommensteuertarif, + parameters=einkommensteuer__parameter_einkommensteuertarif, ) prox_soli = piecewise_polynomial( x=prox_tax, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 33116bf9f7..686e2628f2 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -121,7 +121,6 @@ def betrag_versicherter_regulär_beschäftigt_m( @policy_function( - vectorization_strategy="loop", end_date="2005-06-30", leaf_name="betrag_selbstständig_m", ) @@ -136,7 +135,6 @@ def betrag_selbstständig_m_mit_einheitlichen_beitragssatz( @policy_function( - vectorization_strategy="loop", start_date="2005-07-01", end_date="2008-12-31", leaf_name="betrag_selbstständig_m", @@ -154,7 +152,6 @@ def betrag_selbstständig_m_ohne_ermäßigtem_beitragssatz( @policy_function( - vectorization_strategy="loop", start_date="2009-01-01", end_date="2014-12-31", leaf_name="betrag_selbstständig_m", @@ -170,7 +167,6 @@ def betrag_selbstständig_m_ohne_zusatzbeitrag( @policy_function( - vectorization_strategy="loop", start_date="2015-01-01", leaf_name="betrag_selbstständig_m", ) diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 7e86d8a47f..a5bdec9d41 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -152,7 +152,6 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( start_date="2022-10-01", leaf_name="midijob_faktor_f", rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), - vectorization_strategy="loop", ) def midijob_faktor_f_ohne_minijob_steuerpauschale( sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 452792b881..0c2db7ff99 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -3,12 +3,12 @@ from __future__ import annotations from ttsim import policy_function +from ttsim.config import numpy_or_jax as np @policy_function( end_date="2011-12-31", leaf_name="altersgrenze", - vectorization_strategy="loop", ) def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, @@ -29,19 +29,17 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = min( - [out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze] + out = np.minimum( + out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze ) if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = min( - [ - out, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, - ] + out = np.minimum( + out, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, ) if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = min( - [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + out = np.minimum( + out, sozialversicherung__rente__altersrente__langjährig__altersgrenze ) return out @@ -51,7 +49,6 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( start_date="2012-01-01", end_date="2017-12-31", leaf_name="altersgrenze", - vectorization_strategy="loop", ) def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -79,26 +76,22 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = min( - [out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze] + out = np.minimum( + out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze ) if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = min( - [ - out, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, - ] + out = np.minimum( + out, + sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, ) if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = min( - [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + out = np.minimum( + out, sozialversicherung__rente__altersrente__langjährig__altersgrenze ) if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - out = min( - [ - out, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, - ] + out = np.minimum( + out, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, ) return out @@ -107,7 +100,6 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( @policy_function( start_date="2018-01-01", leaf_name="altersgrenze", - vectorization_strategy="loop", ) def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, @@ -126,15 +118,13 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = min( - [out, sozialversicherung__rente__altersrente__langjährig__altersgrenze] + out = np.minimum( + out, sozialversicherung__rente__altersrente__langjährig__altersgrenze ) if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - out = min( - [ - out, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, - ] + out = np.minimum( + out, + sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, ) return out @@ -143,7 +133,6 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( @policy_function( end_date="2017-12-31", leaf_name="altersgrenze_vorzeitig", - vectorization_strategy="loop", ) def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, @@ -176,9 +165,9 @@ def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: out = langjährig_vorzeitig if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = min([out, frauen_vorzeitig]) + out = np.minimum(out, frauen_vorzeitig) if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = min([out, arbeitsl_vorzeitig]) + out = np.minimum(out, arbeitsl_vorzeitig) return out diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 5393358786..3b91d86742 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -59,12 +59,23 @@ def einkommen_m( ) +def _anzurechnendes_einkommen_m( + einkommen_m_ehe: float, + rentenwert: float, + parameter_anzurechnendes_einkommen: PiecewisePolynomialParamValue, +) -> float: + """The isolated function for the relevant income for the Grundrentezuschlag.""" + return rentenwert * piecewise_polynomial( + x=einkommen_m_ehe / rentenwert, + parameters=parameter_anzurechnendes_einkommen, + ) + + @policy_function( rounding_spec=RoundingSpec( base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" ), start_date="2021-01-01", - vectorization_strategy="loop", ) def anzurechnendes_einkommen_m( einkommen_m_ehe: float, @@ -88,14 +99,18 @@ def anzurechnendes_einkommen_m( # Note: Thresholds are defined relativ to rentenwert which is implemented by # dividing the income by rentenwert and multiply rentenwert to the result. if familie__anzahl_personen_ehe == 2: - params = anzurechnendes_einkommen_mit_partner + out = _anzurechnendes_einkommen_m( + einkommen_m_ehe=einkommen_m_ehe, + rentenwert=sozialversicherung__rente__altersrente__rentenwert, + parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_mit_partner, + ) else: - params = anzurechnendes_einkommen_ohne_partner - - return sozialversicherung__rente__altersrente__rentenwert * piecewise_polynomial( - x=einkommen_m_ehe / sozialversicherung__rente__altersrente__rentenwert, - parameters=params, - ) + out = _anzurechnendes_einkommen_m( + einkommen_m_ehe=einkommen_m_ehe, + rentenwert=sozialversicherung__rente__altersrente__rentenwert, + parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_ohne_partner, + ) + return out @policy_function( @@ -185,7 +200,6 @@ def höchstbetrag_m( reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", - vectorization_strategy="loop", ) def mean_entgeltpunkte_zuschlag( mean_entgeltpunkte_pro_bewertungsmonat: float, @@ -202,7 +216,7 @@ def mean_entgeltpunkte_zuschlag( Legal reference: § 76g SGB VI """ - + out = 0.0 # Return 0 if Grundrentenzeiten below minimum if grundrentenzeiten_monate < berücksichtigte_wartezeit_monate["min"]: out = 0.0 diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 05c694943d..86553dfb42 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -117,7 +117,6 @@ def kindergeld_erstes_kind_gestaffelt_m( start_date="2009-01-01", end_date="2014-12-31", leaf_name="anspruchshöhe_m", - vectorization_strategy="loop", ) def unterhaltsvorschuss_anspruch_m_2009_bis_2014( alter: int, @@ -144,18 +143,16 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( ] if ( - berechtigte_altersgruppen["kleinkind"].min_alter - <= alter - <= berechtigte_altersgruppen["kleinkind"].max_alter + berechtigte_altersgruppen["kleinkind"].min_alter <= alter + and alter <= berechtigte_altersgruppen["kleinkind"].max_alter ): out = ( faktor_jüngste_altersgruppe * (2 * sächliches_existenzmininmum / 12) - kindergeld_erstes_kind_m ) elif ( - berechtigte_altersgruppen["schulkind"].min_alter - <= alter - <= berechtigte_altersgruppen["schulkind"].max_alter + berechtigte_altersgruppen["schulkind"].min_alter <= alter + and alter <= berechtigte_altersgruppen["schulkind"].max_alter ): out = 2 * sächliches_existenzmininmum / 12 - kindergeld_erstes_kind_m else: @@ -168,7 +165,6 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( start_date="2015-01-01", end_date="2015-12-31", leaf_name="anspruchshöhe_m", - vectorization_strategy="loop", ) def anspruchshöhe_m_anwendungsvors( alter: int, @@ -182,15 +178,13 @@ def anspruchshöhe_m_anwendungsvors( Kindergeld changed in July 2015. """ if ( - berechtigte_altersgruppen["kleinkind"].min_alter - <= alter - <= berechtigte_altersgruppen["kleinkind"].max_alter + berechtigte_altersgruppen["kleinkind"].min_alter <= alter + and alter <= berechtigte_altersgruppen["kleinkind"].max_alter ): out = unterhaltsvorschuss_nach_anwendungsvorschrift["kleinkind"] elif ( - berechtigte_altersgruppen["schulkind"].min_alter - <= alter - <= berechtigte_altersgruppen["schulkind"].max_alter + berechtigte_altersgruppen["schulkind"].min_alter <= alter + and alter <= berechtigte_altersgruppen["schulkind"].max_alter ): out = unterhaltsvorschuss_nach_anwendungsvorschrift["schulkind"] else: @@ -203,7 +197,6 @@ def anspruchshöhe_m_anwendungsvors( start_date="2016-01-01", end_date="2017-06-30", leaf_name="anspruchshöhe_m", - vectorization_strategy="loop", ) def anspruchshöhe_m_2016_bis_2017_06( alter: int, @@ -219,15 +212,13 @@ def anspruchshöhe_m_2016_bis_2017_06( before. """ if ( - mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter - <= alter - <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter + mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter <= alter + and alter <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter ): out = mindestunterhalt_nach_alter["kleinkind"].satz - kindergeld_erstes_kind_m elif ( - mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter - <= alter - <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter + mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter <= alter + and alter <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter ): out = mindestunterhalt_nach_alter["schulkind"].satz - kindergeld_erstes_kind_m else: @@ -236,9 +227,7 @@ def anspruchshöhe_m_2016_bis_2017_06( return out -@policy_function( - start_date="2017-07-01", leaf_name="anspruchshöhe_m", vectorization_strategy="loop" -) +@policy_function(start_date="2017-07-01", leaf_name="anspruchshöhe_m") def anspruchshöhe_m_ab_2017_07( alter: int, elternteil_mindesteinkommen_erreicht: bool, @@ -251,21 +240,18 @@ def anspruchshöhe_m_ab_2017_07( third age group (12-17) via Artikel 23 G. v. 14.08.2017 BGBl. I S. 3122. """ if ( - mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter - <= alter - <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter + mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.min_alter <= alter + and alter <= mindestunterhalt_nach_alter["kleinkind"].altersgrenzen.max_alter ): out = mindestunterhalt_nach_alter["kleinkind"].satz - kindergeld_erstes_kind_m elif ( - mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter - <= alter - <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter + mindestunterhalt_nach_alter["schulkind"].altersgrenzen.min_alter <= alter + and alter <= mindestunterhalt_nach_alter["schulkind"].altersgrenzen.max_alter ): out = mindestunterhalt_nach_alter["schulkind"].satz - kindergeld_erstes_kind_m elif ( - mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.min_alter - <= alter - <= mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.max_alter + mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.min_alter <= alter + and alter <= mindestunterhalt_nach_alter["jugendliche"].altersgrenzen.max_alter and elternteil_mindesteinkommen_erreicht ): out = mindestunterhalt_nach_alter["jugendliche"].satz - kindergeld_erstes_kind_m diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 0edb791685..7162b3767f 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -7,9 +7,12 @@ ConsecutiveInt1dLookupTableParamValue, PiecewisePolynomialParamValue, agg_by_p_id_function, + get_consecutive_int_1d_lookup_table_param_value, + param_function, piecewise_polynomial, policy_function, ) +from ttsim.config import numpy_or_jax as np @agg_by_p_id_function(agg_type=AggType.SUM) @@ -21,12 +24,41 @@ def alleinerziehendenbonus( pass -@policy_function(vectorization_strategy="loop") +@param_function() +def min_einkommen_lookup_table( + min_einkommen: dict[int, float], +) -> ConsecutiveInt1dLookupTableParamValue: + """Create a LookupTable for the min income thresholds.""" + return get_consecutive_int_1d_lookup_table_param_value(min_einkommen) + + +def einkommen( + einkommen_vor_freibetrag: float, + einkommensfreibetrag: float, + anzahl_personen: int, + min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, +) -> float: + """Calculate final income relevant for calculation of housing benefit on household + level. + + """ + eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommensfreibetrag + unteres_eink = min_einkommen_lookup_table.values_to_look_up[ + np.minimum( + anzahl_personen, min_einkommen_lookup_table.values_to_look_up.shape[0] + ) + - min_einkommen_lookup_table.base_to_subtract + ] + + return np.maximum(eink_nach_abzug_m_hh, unteres_eink) + + +@policy_function() def einkommen_m_wthh( anzahl_personen_wthh: int, freibetrag_m_wthh: float, einkommen_vor_freibetrag_m_wthh: float, - min_einkommen: dict[int, float], + min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Income relevant for Wohngeld calculation. @@ -40,16 +72,16 @@ def einkommen_m_wthh( anzahl_personen=anzahl_personen_wthh, einkommensfreibetrag=freibetrag_m_wthh, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_wthh, - min_einkommen=min_einkommen, + min_einkommen_lookup_table=min_einkommen_lookup_table, ) -@policy_function(vectorization_strategy="loop") +@policy_function() def einkommen_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, freibetrag_m_bg: float, einkommen_vor_freibetrag_m_bg: float, - min_einkommen: dict[int, float], + min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Income relevant for Wohngeld calculation. @@ -63,11 +95,11 @@ def einkommen_m_bg( anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, einkommensfreibetrag=freibetrag_m_bg, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_bg, - min_einkommen=min_einkommen, + min_einkommen_lookup_table=min_einkommen_lookup_table, ) -@policy_function(vectorization_strategy="loop") +@policy_function() def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( einkommensteuer__betrag_y_sn: float, sozialversicherung__rente__beitrag__betrag_versicherter_y: float, @@ -81,11 +113,14 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( on income (as mentioned in § 16 WoGG Satz 1 Nr. 1). """ - stufe = ( - (einkommensteuer__betrag_y_sn > 0) - + (sozialversicherung__rente__beitrag__betrag_versicherter_y > 0) - + (sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0) - ) + stufe = 0 + + if einkommensteuer__betrag_y_sn > 0: + stufe = stufe + 1 + if sozialversicherung__rente__beitrag__betrag_versicherter_y > 0: + stufe = stufe + 1 + if sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0: + stufe = stufe + 1 abzug = abzugsbeträge_steuern_sozialversicherung if familie__kind: out = 0.0 @@ -176,9 +211,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( return (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind -@policy_function( - end_date="2015-12-31", leaf_name="freibetrag_m", vectorization_strategy="loop" -) +@policy_function(end_date="2015-12-31", leaf_name="freibetrag_m") def freibetrag_m_bis_2015( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, ist_kind_mit_erwerbseinkommen: bool, @@ -242,21 +275,6 @@ def freibetrag_m_ab_2016( return freibetrag_bei_behinderung + freibetrag_kinder -def einkommen( - einkommen_vor_freibetrag: float, - einkommensfreibetrag: float, - anzahl_personen: int, - min_einkommen: dict[int, float], -) -> float: - """Calculate final income relevant for calculation of housing benefit on household - level. - - """ - eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommensfreibetrag - unteres_eink = min_einkommen[min(anzahl_personen, max(min_einkommen))] - return max(eink_nach_abzug_m_hh, unteres_eink) - - @policy_function() def ist_kind_mit_erwerbseinkommen( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index f72f3335f8..5b8d59ceb8 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -2,6 +2,8 @@ from __future__ import annotations +from dataclasses import dataclass + from ttsim import ( ConsecutiveInt1dLookupTableParamValue, ConsecutiveInt2dLookupTableParamValue, @@ -13,20 +15,30 @@ from ttsim.config import numpy_or_jax as np +@dataclass(frozen=True) +class LookupTableBaujahr: + baujahre: np.ndarray + lookup_table: np.ndarray + lookup_base_to_subtract_cols: np.ndarray + lookup_base_to_subtract_rows: np.ndarray + + @param_function( start_date="1984-01-01", end_date="2008-12-31", leaf_name="max_miete_m_lookup" ) def max_miete_m_lookup_mit_baujahr( raw_max_miete_m_nach_baujahr: dict[int | str, dict[int, dict[int, float]]], max_anzahl_personen: dict[str, int], -) -> dict[int, ConsecutiveInt2dLookupTableParamValue]: +) -> LookupTableBaujahr: """Maximum rent considered in Wohngeld calculation.""" tmp = raw_max_miete_m_nach_baujahr.copy() per_additional_person = tmp.pop("jede_weitere_person") max_n_p_defined = max(tmp.keys()) assert all(isinstance(i, int) for i in tmp) baujahre = sorted(tmp[1].keys()) - out = {} + values = [] + subtract_cols = [] + subtract_rows = [] for baujahr in baujahre: this_dict = {n_p: tmp[n_p][baujahr] for n_p in tmp} for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] @@ -35,8 +47,21 @@ def max_miete_m_lookup_mit_baujahr( + (n_p - max_n_p_defined) * per_additional_person[baujahr][ms] # type: ignore[operator] for ms in this_dict[max_n_p_defined] } - out[baujahr] = get_consecutive_int_2d_lookup_table_param_value(this_dict) - return out + lookup_table = get_consecutive_int_2d_lookup_table_param_value(this_dict) + values.append(lookup_table.values_to_look_up) + subtract_cols.append(lookup_table.base_to_subtract_cols) + subtract_rows.append(lookup_table.base_to_subtract_rows) + + full_lookup_table = np.stack(values, axis=0) + full_lookup_base_to_subtract_cols = np.asarray(subtract_cols) + full_lookup_base_to_subtract_rows = np.asarray(subtract_rows) + + return LookupTableBaujahr( + baujahre=np.asarray(baujahre), + lookup_table=full_lookup_table, + lookup_base_to_subtract_cols=full_lookup_base_to_subtract_cols, + lookup_base_to_subtract_rows=full_lookup_base_to_subtract_rows, + ) @param_function(start_date="2009-01-01", leaf_name="max_miete_m_lookup") @@ -172,7 +197,6 @@ def min_miete_m_hh( start_date="1984-01-01", end_date="2008-12-31", leaf_name="miete_m_hh", - vectorization_strategy="loop", ) def miete_m_hh_mit_baujahr( mietstufe: int, @@ -180,20 +204,20 @@ def miete_m_hh_mit_baujahr( anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - max_miete_m_lookup: dict[int, ConsecutiveInt2dLookupTableParamValue], + max_miete_m_lookup: LookupTableBaujahr, ) -> float: """Rent considered in housing benefit calculation on household level until 2008.""" + selected_bin_index = np.searchsorted( - np.asarray(sorted(max_miete_m_lookup.keys())), + max_miete_m_lookup.baujahre, wohnen__baujahr_immobilie_hh, side="left", ) - constr_year = list(max_miete_m_lookup.keys())[selected_bin_index] - lookup = max_miete_m_lookup[constr_year] - max_miete_m = lookup.values_to_look_up[ - anzahl_personen_hh - lookup.base_to_subtract_rows, - mietstufe - lookup.base_to_subtract_cols, - ] + max_miete_m = max_miete_m_lookup.lookup_table[ + selected_bin_index, + anzahl_personen_hh - max_miete_m_lookup.lookup_base_to_subtract_rows[selected_bin_index], + mietstufe - max_miete_m_lookup.lookup_base_to_subtract_cols[selected_bin_index], + ] # fmt: skip return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 41a16d05c4..2e3f0375f1 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -29,6 +29,7 @@ param_function, policy_function, ) +from ttsim.config import numpy_or_jax as np if TYPE_CHECKING: from _gettsim.param_types import ConsecutiveInt1dLookupTableParamValue @@ -78,13 +79,40 @@ def betrag_m_wthh( return out +def basisformel( + anzahl_personen: int, + einkommen_m: float, + miete_m: float, + params: BasisformelParamValues, +) -> float: + """Basic formula for housing benefit calculation. + + Note: This function is not a direct target in the DAG, but a helper function to + store the code for Wohngeld calculation. + + """ + a = params.a.values_to_look_up[anzahl_personen - params.a.base_to_subtract] + b = params.b.values_to_look_up[anzahl_personen - params.b.base_to_subtract] + c = params.c.values_to_look_up[anzahl_personen - params.c.base_to_subtract] + zusatzbetrag_nach_haushaltsgröße = ( + params.zusatzbetrag_nach_haushaltsgröße.values_to_look_up[ + anzahl_personen - params.zusatzbetrag_nach_haushaltsgröße.base_to_subtract + ] + ) + out = np.maximum( + 0.0, + params.skalierungsfaktor + * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), + ) + return np.minimum(miete_m, out + zusatzbetrag_nach_haushaltsgröße) + + @policy_function( rounding_spec=RoundingSpec( base=1, direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ), - vectorization_strategy="loop", ) def anspruchshöhe_m_wthh( anzahl_personen_wthh: int, @@ -119,7 +147,6 @@ def anspruchshöhe_m_wthh( direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ), - vectorization_strategy="loop", ) def anspruchshöhe_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, @@ -184,31 +211,3 @@ def basisformel_params( zusatzbetrag_nach_haushaltsgröße ), ) - - -def basisformel( - anzahl_personen: int, - einkommen_m: float, - miete_m: float, - params: BasisformelParamValues, -) -> float: - """Basic formula for housing benefit calculation. - - Note: This function is not a direct target in the DAG, but a helper function to - store the code for Wohngeld calculation. - - """ - a = params.a.values_to_look_up[anzahl_personen - params.a.base_to_subtract] - b = params.b.values_to_look_up[anzahl_personen - params.b.base_to_subtract] - c = params.c.values_to_look_up[anzahl_personen - params.c.base_to_subtract] - zusatzbetrag_nach_haushaltsgröße = ( - params.zusatzbetrag_nach_haushaltsgröße.values_to_look_up[ - anzahl_personen - params.zusatzbetrag_nach_haushaltsgröße.base_to_subtract - ] - ) - out = max( - 0.0, - params.skalierungsfaktor - * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), - ) - return min(miete_m, out + zusatzbetrag_nach_haushaltsgröße) From 692278d141c7bf95c69dd8552098a23e3f53b767 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Thu, 5 Jun 2025 05:56:30 +0200 Subject: [PATCH 039/109] Preliminary DAG-based interface (#948) - Draft of a new interface as outlined in GEP 7. - We can actually hide the two steps mentioned in the current version, so it becomes more natural than what we thought in the initial draft there. - Based on this, we realised that we need a hierarchical approach, which has been outlined in #951 - Since by converting all tests in #950 we touched a huge amount of code we'll merge before tackling the hierarchical approach to keep an overview. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Co-authored-by: Max Jahn <max.jahn45@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- outdated_docs/tutorials/advanced_usage.ipynb | 4 +- .../tutorials/policy_functions.ipynb | 4 +- pixi.lock | 84 +- pyproject.toml | 23 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 2 +- .../einkommensteuer/einkommensteuer.py | 3 +- src/_gettsim/interface.py | 39 +- src/_gettsim/sozialversicherung/minijob.py | 15 +- .../fg_id_not_sensitive_to_order.yaml | 85 +- .../2005-01-01/hh_id_8.yaml | 169 +-- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 120 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 113 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 149 +-- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 149 +-- .../regelsatz_multiple_children.yaml | 124 +- .../2005-01-01/regelsatz_no_adult_in_bg.yaml | 48 +- .../2006-01-01/hh_id_4.yaml | 453 +++---- .../2009-01-01/hh_id_3.yaml | 243 ++-- .../2009-01-01/kind_20_jahre_in_bg.yaml | 243 ++-- .../2013-01-01/hh_id_12.yaml | 239 ++-- .../2013-01-01/hh_id_13.yaml | 243 ++-- .../2013-01-01/hh_id_14.yaml | 249 ++-- .../2013-01-01/hh_id_15.yaml | 241 ++-- .../2013-01-01/hh_id_2.yaml | 243 ++-- .../2018-01-01/hh_id_9.yaml | 453 +++---- .../2019-01-01/hh_id_6.yaml | 317 ++--- .../2019-01-01/test_age_limits_13_14.yaml | 317 ++--- .../2019-01-01/test_age_limits_5_6.yaml | 317 ++--- .../2022-01-01/hh_id_10.yaml | 317 ++--- .../2022-01-01/hh_id_11.yaml | 309 ++--- .../2023-01-01/hh_id_16.yaml | 169 +-- .../2023-01-01/hh_id_19.yaml | 329 ++--- .../2023-01-01/hh_id_25.yaml | 329 ++--- .../2023-01-01/test_age_limits_17_18.yaml | 383 +++--- .../2023-01-01/test_family_high_wealth.yaml | 309 ++--- .../test_family_wealth_below_threshold.yaml | 317 ++--- .../2023-07-01/hh_id_20.yaml | 169 +-- .../2023-07-01/hh_id_21.yaml | 309 ++--- .../2023-07-01/hh_id_22.yaml | 317 ++--- .../2023-07-01/hh_id_23.yaml | 330 ++--- .../2023-07-01/hh_id_24.yaml | 169 +-- ...inerz_kein_kindergeld\303\274bertrag.yaml" | 309 ++--- ...nerz_teilw_kindergeld\303\274bertrag.yaml" | 351 +++--- ...erz_voller_kindergeld\303\274bertrag.yaml" | 347 +++--- .../kost_unterk_multiple_bg_in_hh.yaml | 245 ++-- .../2024-01-01/kost_unterk_one_bg_in_hh.yaml | 113 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 126 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 119 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 157 +-- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 157 +-- .../regelsatz_multiple_children.yaml | 124 +- .../2024-01-01/regelsatz_no_adult_in_bg.yaml | 48 +- .../2024-01-01/single_no_income.yaml | 185 +-- .../2004-01-01/hh_id_11.yaml" | 56 +- .../2005-01-01/hh_id_2.yaml" | 76 +- .../2005-01-01/hh_id_5.yaml" | 56 +- .../2005-01-01/hh_id_8.yaml" | 56 +- .../2005-01-01/hh_id_9.yaml" | 56 +- .../2010-01-01/hh_id_16.yaml" | 56 +- .../2010-01-01/hh_id_3.yaml" | 56 +- .../2010-01-01/hh_id_6.yaml" | 76 +- .../2018-01-01/hh_id_15.yaml" | 56 +- .../2020-01-01/hh_id_13.yaml" | 56 +- .../2021-01-01/hh_id_12.yaml" | 56 +- .../2022-01-01/hh_id_17.yaml" | 76 +- .../2022-01-01/hh_id_18.yaml" | 76 +- .../2023-01-01/hh_id_4.yaml" | 56 +- .../2023-01-01/hh_id_7.yaml" | 56 +- .../betrag/2009-01-01/hh_id_4.yaml | 47 +- .../betrag/2012-01-01/hh_id_3.yaml | 47 +- .../betrag/2015-01-01/hh_id_2.yaml | 87 +- .../betrag/2018-01-01/couple_1_child.yaml | 102 +- .../betrag/2018-01-01/hh_id_1.yaml | 47 +- .../betrag/2018-01-01/hh_id_5.yaml | 47 +- .../betrag/2023-01-01/hh_id_6.yaml | 47 +- .../betrag/2024-01-01/couple_1_child.yaml | 102 +- .../couple_above_soli_freibetrag.yaml | 73 +- .../single_above_soli_freibetrag.yaml | 47 +- .../single_below_soli_freibetrag.yaml | 47 +- .../2010-01-01/hh_id_4.yaml" | 114 +- .../2012-01-01/hh_id_2.yaml" | 48 +- .../2016-01-01/hh_id_1.yaml" | 92 +- .../skip_2019/hh_id_5.yaml" | 92 +- .../2010-01-01/hh_id_1.yaml | 150 ++- .../2010-01-01/hh_id_2.yaml | 150 ++- .../2010-01-01/hh_id_3.yaml | 150 ++- .../2010-01-01/hh_id_4.yaml | 150 ++- .../2010-01-01/hh_id_5.yaml | 150 ++- .../2015-01-01/hh_id_16.yaml | 150 ++- .../2015-01-01/hh_id_17.yaml | 214 ++-- .../2017-01-01/hh_id_18.yaml | 214 ++-- .../2018-01-01/hh_id_10.yaml | 150 ++- .../2018-01-01/hh_id_11.yaml | 150 ++- .../2018-01-01/hh_id_12.yaml | 150 ++- .../2018-01-01/hh_id_7.yaml | 150 ++- .../2018-01-01/hh_id_8.yaml | 150 ++- .../2018-01-01/hh_id_9.yaml | 150 ++- .../2019-01-01/hh_id_13.yaml | 214 ++-- .../2020-01-01/hh_id_14.yaml | 342 +++--- .../2020-01-01/hh_id_19.yaml | 342 +++--- .../2020-01-01/hh_id_20.yaml | 342 +++--- .../elterngeld/2017-01-01/hh_id_2.yaml | 101 +- .../elterngeld/2018-01-01/hh_id_1.yaml | 88 +- .../elterngeld/2018-01-01/hh_id_2.yaml | 126 +- .../elterngeld/2018-01-01/hh_id_3.yaml | 126 +- .../elterngeld/2018-01-01/hh_id_4.yaml | 126 +- .../elterngeld/2018-01-01/hh_id_6.yaml | 88 +- .../elterngeld/2019-01-01/hh_id_1.yaml | 126 +- .../elterngeld/2019-01-01/hh_id_3.yaml | 164 +-- .../elterngeld/2019-01-01/hh_id_5.yaml | 126 +- .../elterngeld/2019-01-01/hh_id_6.yaml | 172 +-- .../elterngeld/2019-01-01/hh_id_7.yaml | 164 +-- .../elterngeld/2019-01-01/hh_id_8.yaml | 200 ++-- .../2024-01-01/income_during_elterngeld.yaml | 172 +-- .../2024-01-01/maximum_elterngeld.yaml | 126 +- .../2024-01-01/minimum_elterngeld.yaml | 126 +- .../2024-01-01/net_income_approximation.yaml | 71 +- .../net_income_before_birth_1000.yaml | 164 +-- .../net_income_before_birth_790.yaml | 164 +-- .../2024-01-01/replacement_rate_decrease.yaml | 140 ++- .../2024-04-01/taxable_income_low.yaml | 148 +-- .../2024-04-01/taxable_income_too_high.yaml | 148 +-- .../alleinerz_one_child_budgetsatz.yaml | 108 +- ...inerz_one_child_regelsatz_high_income.yaml | 108 +- ...einerz_one_child_regelsatz_low_income.yaml | 108 +- ...ried_one_child_budgetsatz_high_income.yaml | 140 ++- ...rried_one_child_budgetsatz_low_income.yaml | 140 ++- .../married_one_child_regelsatz.yaml | 140 ++- ..._budgetsatz_and_regelsatz_high_income.yaml | 172 +-- ...n_budgetsatz_and_regelsatz_low_income.yaml | 183 +-- .../2007-01-01/born_after_abolishment.yaml | 108 +- ..._budgetsatz_and_regelsatz_high_income.yaml | 172 +-- ...n_budgetsatz_and_regelsatz_low_income.yaml | 172 +-- .../2019-01-01/hh_id_1.yaml | 707 +++++------ .../2019-01-01/hh_id_2.yaml | 709 +++++------ .../2019-01-01/hh_id_3.yaml | 301 ++--- .../2019-01-01/hh_id_4.yaml | 301 ++--- .../2019-01-01/hh_id_5.yaml | 301 ++--- .../2019-01-01/hh_id_6.yaml | 301 ++--- .../2019-01-01/hh_id_7.yaml | 301 ++--- .../2019-01-01/hh_id_8.yaml | 301 ++--- ...nderer_elternteil_in_anderem_haushalt.yaml | 63 +- ...rziehend_anderer_elternteil_unbekannt.yaml | 45 +- .../eltern_unverheiratet_2_kinder.yaml | 73 +- ...rheiratet_1_junges_1_erwachsenes_kind.yaml | 73 +- ...verheiratet_1_kind_anderer_verwandter.yaml | 73 +- ...t_1_kind_bis24_1_kind_\303\274ber_24.yaml" | 73 +- ...eiratet_1_kind_gro\303\237elternteil.yaml" | 73 +- ...n_verheiratet_1_kind_mit_eigenem_kind.yaml | 91 +- ...eltern_verheiratet_1_kind_verheiratet.yaml | 69 +- ...eltern_verheiratet_1_kind_with_income.yaml | 63 +- .../eltern_verheiratet_2_kinder.yaml | 73 +- ...rheiratet_getrennt_veranlagt_2_kinder.yaml | 73 +- ...eltern_verheiratet_kinder_verheiratet.yaml | 69 +- .../2023-01-01/eltern_viele_kinder.yaml | 108 +- .../mehrere_haushalte_durchmischt.yaml | 105 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 75 +- ...haushalt_anderer_elternteil_unbekannt.yaml | 59 +- ...nderer_elternteil_in_anderem_haushalt.yaml | 77 +- .../verschiedene_haushalte_nur_sn_id.yaml | 34 +- ...her_teilhaushalt_mehrere_generationen.yaml | 132 +- ...licher_teilhaushalt_mehrere_haushalte.yaml | 132 +- .../im_alter/2017-07-01/hh_id_13.yaml | 214 ++-- .../im_alter/2017-07-01/hh_id_16.yaml | 150 ++- .../im_alter/2017-07-01/hh_id_17.yaml | 150 ++- .../im_alter/2017-07-01/hh_id_6.yaml | 214 ++-- .../im_alter/2018-07-01/hh_id_12.yaml | 154 ++- .../im_alter/2018-07-01/hh_id_20.yaml | 150 ++- .../im_alter/2018-07-01/hh_id_22.yaml | 150 ++- .../im_alter/2018-07-01/hh_id_3.yaml | 150 ++- .../im_alter/2020-07-01/hh_id_18.yaml | 150 ++- .../im_alter/2020-07-01/hh_id_19.yaml | 214 ++-- .../im_alter/2021-07-01/hh_id_1.yaml | 214 ++-- .../im_alter/2021-07-01/hh_id_14.yaml | 154 ++- .../im_alter/2021-07-01/hh_id_15.yaml | 150 ++- .../im_alter/2021-07-01/hh_id_2.yaml | 150 ++- .../im_alter/2021-07-01/hh_id_21.yaml | 218 ++-- .../im_alter/2021-07-01/hh_id_23.yaml | 218 ++-- .../im_alter/2021-07-01/hh_id_5.yaml | 150 ++- .../im_alter/2021-07-01/hh_id_7.yaml | 150 ++- .../im_alter/2021-07-01/hh_id_9.yaml | 214 ++-- .../im_alter/2022-07-01/hh_id_10.yaml | 154 ++- .../im_alter/2022-07-01/hh_id_11.yaml | 154 ++- .../im_alter/2022-07-01/hh_id_24.yaml | 214 ++-- .../im_alter/2022-07-01/hh_id_25.yaml | 218 ++-- .../im_alter/2022-07-01/hh_id_4.yaml | 214 ++-- .../im_alter/2022-07-01/hh_id_8.yaml | 150 ++- .../2007-01-01/eltern_getrennt_1_kind.yaml | 160 +-- .../2007-01-01/eltern_verheiratet_1_kind.yaml | 152 +-- .../eltern_verheiratet_2_kinder.yaml | 188 +-- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 198 +-- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 118 +- .../2024-01-01/eltern_getrennt_1_kind.yaml | 126 +- .../2024-01-01/eltern_verheiratet_1_kind.yaml | 118 +- .../eltern_verheiratet_2_kinder.yaml | 146 +-- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 146 +-- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 118 +- .../kindergeld/2002-01-01/hh_id_2.yaml | 104 +- .../kindergeld/2010-01-01/hh_id_4.yaml | 34 +- .../kindergeld/2010-01-01/hh_id_6.yaml | 34 +- .../kindergeld/2011-01-01/hh_id_7.yaml | 118 +- .../kindergeld/2013-01-01/hh_id_8.yaml | 90 +- .../kindergeld/2019-01-01/hh_id_0.yaml | 90 +- .../kindergeld/2019-01-01/hh_id_1.yaml | 104 +- .../kindergeld/2019-01-01/hh_id_3.yaml | 34 +- .../kindergeld/2019-01-01/hh_id_5.yaml | 34 +- .../kindergeld/2020-01-01/hh_id_10.yaml | 61 +- .../kindergeld/2021-01-01/3_children.yaml | 91 +- .../kindergeld/2021-01-01/hh_id_11.yaml | 79 +- .../kindergeld/2021-01-01/hh_id_12.yaml | 43 +- .../kindergeld/2023-01-01/hh_id_13.yaml | 90 +- .../alleinerz_1_child_low_unterhalt.yaml | 34 +- .../alleinerz_1_child_no_unterhalt.yaml | 34 +- .../alleinerz_2_children_low_unterhalt.yaml | 44 +- .../alleinerz_2_children_no_unterhalt.yaml | 44 +- .../kinderzuschlag/2013-01-01/hh_id_2.yaml | 140 ++- .../kinderzuschlag/2016-01-01/hh_id_1.yaml | 180 +-- .../kinderzuschlag/2016-01-01/hh_id_11.yaml | 188 +-- .../kinderzuschlag/2016-01-01/hh_id_12.yaml | 192 +-- .../kinderzuschlag/2016-01-01/hh_id_13.yaml | 188 +-- .../kinderzuschlag/2016-01-01/hh_id_7.yaml | 188 +-- .../kinderzuschlag/2017-01-01/hh_id_9.yaml | 232 ++-- .../kinderzuschlag/2019-01-01/hh_id_6.yaml | 144 ++- .../kinderzuschlag/2020-01-01/hh_id_8.yaml | 144 ++- .../kinderzuschlag/2021-01-01/hh_id_10.yaml | 188 +-- .../kinderzuschlag/2023-01-01/hh_id_14.yaml | 144 ++- .../2023-01-01/test_child_income.yaml | 148 +-- .../2023-01-01/test_family_high_wealth.yaml | 144 ++- .../test_higher_wealth_exemptions.yaml | 148 +-- ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 215 ++-- .../2024-01-01/test_max_transfer.yaml | 163 +-- .../kinderzuschlag/skip_2006/hh_id_4.yaml | 257 ++-- .../kinderzuschlag/skip_2009/hh_id_3.yaml | 137 ++- .../lohnsteuer/2015-01-01/hh_id_1045.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1051.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1081.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1134.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_121.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1214.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1219.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1435.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1462.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1476.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1555.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1627.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1793.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1796.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1915.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_1982.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2042.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2174.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2224.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2451.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2552.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2593.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2601.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2639.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2726.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2732.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2861.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_2924.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_400.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_470.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_561.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_583.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_72.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_736.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_76.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_765.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_769.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_786.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_790.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_802.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_830.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_856.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_857.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_891.yaml | 54 +- .../lohnsteuer/2015-01-01/hh_id_925.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1000.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1086.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1115.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1133.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1175.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_123.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1281.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1335.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1367.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1532.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1700.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1705.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1822.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_1958.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2065.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2151.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2220.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2289.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2358.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2396.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2645.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2693.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2724.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2744.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2932.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_2961.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_307.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_435.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_444.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_583.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_699.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_765.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_779.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_807.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_821.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_898.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_9.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_950.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_965.yaml | 54 +- .../lohnsteuer/2016-01-01/hh_id_968.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1019.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1088.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1134.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1164.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1279.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_146.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1503.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_151.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1532.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1549.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1615.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1705.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1788.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1841.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1866.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1878.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1923.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_1945.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2005.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2151.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2177.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2226.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2293.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2512.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_266.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2677.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2729.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2881.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2918.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2934.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2956.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2974.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_2991.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_30.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_416.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_455.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_496.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_506.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_528.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_568.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_575.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_588.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_659.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_743.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_881.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_910.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_933.yaml | 54 +- .../lohnsteuer/2017-01-01/hh_id_996.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1159.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1213.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_130.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1314.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_152.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1632.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1727.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_174.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1786.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1802.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_184.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_1935.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2098.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2156.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2186.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2395.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2491.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2575.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2649.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2720.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2828.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2904.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_2999.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_315.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_375.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_417.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_559.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_624.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_791.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_796.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_81.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_835.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_851.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_947.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_959.yaml | 54 +- .../lohnsteuer/2018-01-01/hh_id_98.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1014.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1093.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1098.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_111.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1180.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1210.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1354.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1629.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1695.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1709.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_180.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1825.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_1846.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2025.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2070.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2159.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2204.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2375.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2393.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2469.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2516.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_265.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2708.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2729.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2736.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2760.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2818.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_286.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2900.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2904.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_2942.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_317.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_331.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_396.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_420.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_605.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_646.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_65.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_664.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_698.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_710.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_715.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_809.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_816.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_832.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_879.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_882.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_949.yaml | 54 +- .../lohnsteuer/2019-01-01/hh_id_978.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1015.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1096.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1118.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1273.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_13.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1310.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1378.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1417.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1468.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_160.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_161.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1705.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1767.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1775.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1788.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1790.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_1928.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2106.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2182.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2184.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2230.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2320.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2389.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2439.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2527.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2562.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2587.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_266.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2888.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2898.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2920.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2953.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_2998.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_367.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_400.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_409.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_481.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_513.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_630.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_648.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_70.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_798.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_835.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_901.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_926.yaml | 54 +- .../lohnsteuer/2020-01-01/hh_id_949.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_111.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1186.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1204.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1237.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1255.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1380.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1385.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1402.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_145.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1538.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1610.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_165.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1714.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1762.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1853.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1908.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_1999.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2022.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2208.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_225.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2258.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2295.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_238.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2400.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2416.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2476.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_262.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2766.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2782.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2836.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2886.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2945.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_2946.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_299.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_318.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_321.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_33.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_417.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_479.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_519.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_522.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_618.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_620.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_651.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_738.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_761.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_788.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_798.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_810.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_864.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_867.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_883.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_885.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_9.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_946.yaml | 54 +- .../lohnsteuer/2021-01-01/hh_id_948.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1019.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1166.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1209.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1305.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1364.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1473.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1519.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1667.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1770.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1784.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1881.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1904.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1907.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_1918.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2099.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2111.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2118.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2129.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_224.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_241.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2410.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2423.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2428.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2439.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2447.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2868.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_2962.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_664.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_688.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_720.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_840.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_848.yaml | 54 +- .../lohnsteuer/2022-01-01/hh_id_963.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1019.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1166.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1209.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1305.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1364.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1473.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1519.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1667.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1770.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1784.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1881.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1904.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1907.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_1918.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2099.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2111.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2118.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2129.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_224.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_241.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2410.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2423.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2428.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2439.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2447.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2868.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_2962.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_664.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_688.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_720.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_840.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_848.yaml | 54 +- .../lohnsteuer/2023-01-01/hh_id_963.yaml | 54 +- .../1991-01-01/hh_id_2.yaml" | 28 +- .../1993-01-01/hh_id_5.yaml" | 28 +- .../1996-01-01/hh_id_6.yaml" | 28 +- .../1999-01-01/hh_id_4.yaml" | 28 +- .../2003-01-01/hh_id_3.yaml" | 28 +- .../2022-01-01/hh_id_1.yaml" | 28 +- .../2023-01-01/hh_id_7.yaml" | 28 +- .../2024-01-01/couple_above_threshold.yaml" | 46 +- .../2024-01-01/couple_below_threshold.yaml" | 40 +- .../2024-01-01/single_above_threshold.yaml" | 28 +- .../2024-01-01/single_below_threshold.yaml" | 28 +- .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 69 +- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 49 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 49 +- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 49 +- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 69 +- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 69 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 132 +- ...eringf\303\274gig_besch\303\244ftigt.yaml" | 92 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 76 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 76 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 76 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 46 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 76 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 104 +- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 76 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 76 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 76 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 76 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 76 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 76 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 76 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 76 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 76 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 76 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 76 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 76 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 76 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 76 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 76 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 76 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 84 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 84 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 84 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 84 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 84 +- .../above_new_beitragsbemessungsgrenze.yaml" | 76 +- .../above_old_beitragsbemessungsgrenze.yaml" | 76 +- .../below_beitragsbemessungsgrenze.yaml" | 76 +- .../pflegev_anz_kinder_bis_24.yaml" | 50 +- .../2025-01-01/einkommen_in_gleitzone.yaml" | 164 +-- .../2023-01-01/minijobgrenze.yaml" | 22 +- .../2024-01-01/minijobgrenze.yaml" | 22 +- .../1989-01-01/cohort_1936_female.yaml | 247 ++-- .../1989-01-01/cohort_1936_male.yaml | 132 +- .../1989-01-01/cohort_1953_female.yaml | 247 ++-- .../1989-01-01/cohort_1953_male.yaml | 132 +- .../1992-01-01/cohort_1936_female.yaml | 247 ++-- .../1992-01-01/cohort_1936_male.yaml | 132 +- .../1992-01-01/cohort_1937_female.yaml | 247 ++-- .../1992-01-01/cohort_1937_male.yaml | 132 +- .../1992-01-01/cohort_1938_female.yaml | 247 ++-- .../1992-01-01/cohort_1938_male.yaml | 132 +- .../1992-01-01/cohort_1939_female.yaml | 247 ++-- .../1992-01-01/cohort_1939_male.yaml | 132 +- .../1992-01-01/cohort_1940_female.yaml | 247 ++-- .../1992-01-01/cohort_1940_male.yaml | 132 +- .../1992-01-01/cohort_1941_female.yaml | 247 ++-- .../1992-01-01/cohort_1941_male.yaml | 132 +- .../1992-01-01/cohort_1942_female.yaml | 247 ++-- .../1992-01-01/cohort_1942_male.yaml | 132 +- .../1992-01-01/cohort_1943_female.yaml | 247 ++-- .../1992-01-01/cohort_1943_male.yaml | 132 +- .../1992-01-01/cohort_1944_female.yaml | 247 ++-- .../1992-01-01/cohort_1944_male.yaml | 132 +- .../1992-01-01/cohort_1945_female.yaml | 247 ++-- .../1992-01-01/cohort_1945_male.yaml | 132 +- .../1992-01-01/cohort_1946_female.yaml | 247 ++-- .../1992-01-01/cohort_1946_male.yaml | 132 +- .../1992-01-01/cohort_1947_female.yaml | 247 ++-- .../1992-01-01/cohort_1947_male.yaml | 132 +- .../1992-01-01/cohort_1948_female.yaml | 247 ++-- .../1992-01-01/cohort_1948_male.yaml | 132 +- .../1992-01-01/cohort_1949_female.yaml | 247 ++-- .../1992-01-01/cohort_1949_male.yaml | 132 +- .../1992-01-01/cohort_1950_female.yaml | 247 ++-- .../1992-01-01/cohort_1950_male.yaml | 132 +- .../1992-01-01/cohort_1951_female.yaml | 247 ++-- .../1992-01-01/cohort_1951_male.yaml | 132 +- .../1992-01-01/cohort_1952_female.yaml | 247 ++-- .../1992-01-01/cohort_1952_male.yaml | 132 +- .../1992-01-01/cohort_1953_female.yaml | 247 ++-- .../1992-01-01/cohort_1953_male.yaml | 132 +- .../1996-07-29/cohort_1936_female.yaml | 247 ++-- .../1996-07-29/cohort_1936_male.yaml | 132 +- .../1996-07-29/cohort_1937_female.yaml | 247 ++-- .../1996-07-29/cohort_1937_male.yaml | 132 +- .../1996-07-29/cohort_1938_female.yaml | 247 ++-- .../1996-07-29/cohort_1938_male.yaml | 132 +- .../1996-07-29/cohort_1939_female.yaml | 247 ++-- .../1996-07-29/cohort_1939_male.yaml | 132 +- .../1996-07-29/cohort_1940_female.yaml | 247 ++-- .../1996-07-29/cohort_1940_male.yaml | 132 +- .../1996-07-29/cohort_1941_female.yaml | 247 ++-- .../1996-07-29/cohort_1941_male.yaml | 132 +- .../1996-07-29/cohort_1942_female.yaml | 247 ++-- .../1996-07-29/cohort_1942_male.yaml | 132 +- .../1996-07-29/cohort_1943_female.yaml | 247 ++-- .../1996-07-29/cohort_1943_male.yaml | 132 +- .../1996-07-29/cohort_1944_female.yaml | 247 ++-- .../1996-07-29/cohort_1944_male.yaml | 132 +- .../1996-07-29/cohort_1945_female.yaml | 247 ++-- .../1996-07-29/cohort_1945_male.yaml | 132 +- .../1996-07-29/cohort_1946_female.yaml | 247 ++-- .../1996-07-29/cohort_1946_male.yaml | 132 +- .../1996-07-29/cohort_1947_female.yaml | 247 ++-- .../1996-07-29/cohort_1947_male.yaml | 132 +- .../1996-07-29/cohort_1948_female.yaml | 247 ++-- .../1996-07-29/cohort_1948_male.yaml | 132 +- .../1996-07-29/cohort_1949_female.yaml | 247 ++-- .../1996-07-29/cohort_1949_male.yaml | 132 +- .../1996-07-29/cohort_1950_female.yaml | 247 ++-- .../1996-07-29/cohort_1950_male.yaml | 132 +- .../1996-07-29/cohort_1951_female.yaml | 247 ++-- .../1996-07-29/cohort_1951_male.yaml | 132 +- .../1996-07-29/cohort_1952_female.yaml | 247 ++-- .../1996-07-29/cohort_1952_male.yaml | 132 +- .../1996-07-29/cohort_1953_female.yaml | 247 ++-- .../1996-07-29/cohort_1953_male.yaml | 132 +- .../2012-01-01/cohort_1936_female.yaml | 431 +++---- .../2012-01-01/cohort_1936_male.yaml | 224 ++-- .../2012-01-01/cohort_1937_female.yaml | 431 +++---- .../2012-01-01/cohort_1937_male.yaml | 224 ++-- .../2012-01-01/cohort_1938_female.yaml | 431 +++---- .../2012-01-01/cohort_1938_male.yaml | 224 ++-- .../2012-01-01/cohort_1939_female.yaml | 431 +++---- .../2012-01-01/cohort_1939_male.yaml | 224 ++-- .../2012-01-01/cohort_1940_female.yaml | 431 +++---- .../2012-01-01/cohort_1940_male.yaml | 224 ++-- .../2012-01-01/cohort_1941_female.yaml | 431 +++---- .../2012-01-01/cohort_1941_male.yaml | 224 ++-- .../2012-01-01/cohort_1942_female.yaml | 431 +++---- .../2012-01-01/cohort_1942_male.yaml | 224 ++-- .../2012-01-01/cohort_1943_female.yaml | 431 +++---- .../2012-01-01/cohort_1943_male.yaml | 224 ++-- .../2012-01-01/cohort_1944_female.yaml | 431 +++---- .../2012-01-01/cohort_1944_male.yaml | 224 ++-- .../2012-01-01/cohort_1945_female.yaml | 431 +++---- .../2012-01-01/cohort_1945_male.yaml | 224 ++-- .../2012-01-01/cohort_1946_female.yaml | 431 +++---- .../2012-01-01/cohort_1946_male.yaml | 224 ++-- .../2012-01-01/cohort_1947_female.yaml | 431 +++---- .../2012-01-01/cohort_1947_male.yaml | 224 ++-- .../2012-01-01/cohort_1948_female.yaml | 431 +++---- .../2012-01-01/cohort_1948_male.yaml | 224 ++-- .../2024-01-01/cohort_1946_female.yaml | 83 +- .../2024-01-01/cohort_1946_male.yaml | 83 +- .../2024-01-01/cohort_1947_female.yaml | 83 +- .../2024-01-01/cohort_1947_male.yaml | 83 +- .../2024-01-01/cohort_1948_female.yaml | 83 +- .../2024-01-01/cohort_1948_male.yaml | 83 +- .../2024-01-01/cohort_1949_female.yaml | 353 +++--- .../2024-01-01/cohort_1949_male.yaml | 353 +++--- .../2024-01-01/cohort_1950_female.yaml | 83 +- .../2024-01-01/cohort_1950_male.yaml | 83 +- .../2024-01-01/cohort_1951_female.yaml | 83 +- .../2024-01-01/cohort_1951_male.yaml | 83 +- .../2024-01-01/cohort_1952_female.yaml | 83 +- .../2024-01-01/cohort_1952_male.yaml | 83 +- .../2024-01-01/cohort_1953_female.yaml | 83 +- .../2024-01-01/cohort_1953_male.yaml | 83 +- .../2024-01-01/cohort_1954_female.yaml | 83 +- .../2024-01-01/cohort_1954_male.yaml | 83 +- .../2024-01-01/cohort_1955_female.yaml | 83 +- .../2024-01-01/cohort_1955_male.yaml | 83 +- .../2024-01-01/cohort_1956_female.yaml | 83 +- .../2024-01-01/cohort_1956_male.yaml | 83 +- .../2024-01-01/cohort_1957_female.yaml | 83 +- .../2024-01-01/cohort_1957_male.yaml | 83 +- .../2024-01-01/cohort_1958_female.yaml | 83 +- .../2024-01-01/cohort_1958_male.yaml | 83 +- .../2024-01-01/cohort_1959_female.yaml | 83 +- .../2024-01-01/cohort_1959_male.yaml | 83 +- .../2024-01-01/cohort_1960_female.yaml | 83 +- .../2024-01-01/cohort_1960_male.yaml | 83 +- .../2024-01-01/cohort_1961_female.yaml | 83 +- .../2024-01-01/cohort_1961_male.yaml | 83 +- .../2024-01-01/cohort_1962_female.yaml | 83 +- .../2024-01-01/cohort_1962_male.yaml | 83 +- .../2024-01-01/cohort_1963_female.yaml | 83 +- .../2024-01-01/cohort_1963_male.yaml | 83 +- .../2024-01-01/cohort_1964_female.yaml | 83 +- .../2024-01-01/cohort_1964_male.yaml | 83 +- .../betrag/1991-01-01/cohort_1930_frauen.yaml | 102 +- .../betrag/1991-01-01/cohort_1930_langj.yaml | 103 +- .../cohort_1930_langj_and_arbeitsl.yaml | 103 +- .../cohort_1930_langj_and_frauen.yaml | 103 +- .../cohort_1930_ohne_vorzeitig.yaml | 94 +- .../cohort_1930_wegen_arbeitsl.yaml | 93 +- .../cohort_1937_wegen_arbeitsl.yaml | 93 +- .../cohort_1938_wegen_arbeitsl.yaml | 93 +- .../cohort_1939_wegen_arbeitsl.yaml | 93 +- .../cohort_1940_wegen_arbeitsl.yaml | 93 +- .../cohort_1941_wegen_arbeitsl.yaml | 93 +- .../cohort_1942_wegen_arbeitsl.yaml | 93 +- .../cohort_1943_wegen_arbeitsl.yaml | 93 +- .../cohort_1944_wegen_arbeitsl.yaml | 93 +- .../cohort_1945_wegen_arbeitsl.yaml | 93 +- .../cohort_1946_wegen_arbeitsl.yaml | 93 +- .../cohort_1947_wegen_arbeitsl.yaml | 93 +- .../cohort_1948_wegen_arbeitsl.yaml | 93 +- .../cohort_1949_wegen_arbeitsl.yaml | 93 +- .../cohort_1950_wegen_arbeitsl.yaml | 93 +- .../cohort_1951_wegen_arbeitsl.yaml | 93 +- .../cohort_1952_wegen_arbeitsl.yaml | 93 +- .../cohort_1953_wegen_arbeitsl.yaml | 93 +- .../cohort_1954_wegen_arbeitsl.yaml | 93 +- .../cohort_1955_wegen_arbeitsl.yaml | 93 +- .../1991-01-01/eligibility_pathways.yaml | 454 +++---- .../cohort_1930_wegen_arbeitsl.yaml | 106 +- .../cohort_1937_wegen_arbeitsl.yaml | 106 +- .../cohort_1938_wegen_arbeitsl.yaml | 106 +- .../cohort_1939_wegen_arbeitsl.yaml | 106 +- .../cohort_1940_wegen_arbeitsl.yaml | 106 +- .../cohort_1941_wegen_arbeitsl.yaml | 106 +- .../cohort_1942_wegen_arbeitsl.yaml | 106 +- .../cohort_1943_wegen_arbeitsl.yaml | 106 +- .../cohort_1944_wegen_arbeitsl.yaml | 106 +- .../cohort_1945_wegen_arbeitsl.yaml | 106 +- .../cohort_1946_wegen_arbeitsl.yaml | 106 +- .../cohort_1947_wegen_arbeitsl.yaml | 106 +- .../cohort_1948_wegen_arbeitsl.yaml | 106 +- .../cohort_1949_wegen_arbeitsl.yaml | 106 +- .../cohort_1950_wegen_arbeitsl.yaml | 106 +- .../cohort_1951_wegen_arbeitsl.yaml | 106 +- .../cohort_1952_wegen_arbeitsl.yaml | 106 +- .../cohort_1953_wegen_arbeitsl.yaml | 102 +- .../cohort_1954_wegen_arbeitsl.yaml | 106 +- .../cohort_1955_wegen_arbeitsl.yaml | 106 +- .../cohort_1936_wegen_arbeitsl.yaml | 89 +- .../cohort_1930_wegen_arbeitsl.yaml | 110 +- .../cohort_1937_wegen_arbeitsl.yaml | 110 +- .../cohort_1938_wegen_arbeitsl.yaml | 110 +- .../cohort_1939_wegen_arbeitsl.yaml | 110 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 110 +- .../cohort_1940_wegen_arbeitsl.yaml | 110 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 110 +- .../cohort_1941_wegen_arbeitsl.yaml | 110 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 110 +- .../cohort_1942_wegen_arbeitsl.yaml | 110 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 110 +- .../cohort_1943_wegen_arbeitsl.yaml | 110 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 110 +- .../cohort_1944_wegen_arbeitsl.yaml | 110 +- .../cohort_1945_wegen_arbeitsl.yaml | 110 +- .../cohort_1946_wegen_arbeitsl.yaml | 110 +- .../cohort_1947_wegen_arbeitsl.yaml | 110 +- .../cohort_1948_wegen_arbeitsl.yaml | 110 +- .../cohort_1949_wegen_arbeitsl.yaml | 110 +- .../cohort_1950_wegen_arbeitsl.yaml | 110 +- .../cohort_1951_wegen_arbeitsl.yaml | 110 +- .../cohort_1952_wegen_arbeitsl.yaml | 110 +- .../cohort_1953_wegen_arbeitsl.yaml | 106 +- .../cohort_1954_wegen_arbeitsl.yaml | 110 +- .../cohort_1955_wegen_arbeitsl.yaml | 110 +- .../cohort_1930_wegen_arbeitsl.yaml | 106 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 102 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 102 +- .../cohort_1937_wegen_arbeitsl.yaml | 106 +- .../cohort_1938_wegen_arbeitsl.yaml | 106 +- .../cohort_1939_wegen_arbeitsl.yaml | 106 +- ...ohort_1940_vertrauenss_wegen_arbeitsl.yaml | 106 +- .../cohort_1940_wegen_arbeitsl.yaml | 106 +- ...ohort_1941_vertrauenss_wegen_arbeitsl.yaml | 106 +- .../cohort_1941_wegen_arbeitsl.yaml | 106 +- ...ohort_1942_vertrauenss_wegen_arbeitsl.yaml | 106 +- .../cohort_1942_wegen_arbeitsl.yaml | 106 +- ...ohort_1943_vertrauenss_wegen_arbeitsl.yaml | 106 +- ...ohort_1944_vertrauenss_wegen_arbeitsl.yaml | 106 +- .../cohort_1930_wegen_arbeitsl.yaml | 114 +- ...hort_1933_ohne_vorauss_wegen_arbeitsl.yaml | 110 +- ...hort_1936_ohne_vorauss_wegen_arbeitsl.yaml | 110 +- .../cohort_1937_wegen_arbeitsl.yaml | 114 +- .../cohort_1938_wegen_arbeitsl.yaml | 114 +- .../cohort_1939_wegen_arbeitsl.yaml | 114 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 114 +- .../cohort_1940_wegen_arbeitsl.yaml | 114 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 114 +- .../cohort_1941_wegen_arbeitsl.yaml | 114 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 114 +- .../cohort_1942_wegen_arbeitsl.yaml | 114 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 114 +- ...trauenss_abschlagsfrei_wegen_arbeitsl.yaml | 114 +- .../cohort_1945_wegen_arbeitsl.yaml | 114 +- .../cohort_1946_wegen_arbeitsl.yaml | 114 +- .../cohort_1947_wegen_arbeitsl.yaml | 114 +- .../cohort_1948_wegen_arbeitsl.yaml | 114 +- .../cohort_1949_wegen_arbeitsl.yaml | 114 +- ...1_vertrauenss_abschlag_wegen_arbeitsl.yaml | 114 +- .../cohort_1952_wegen_arbeitsl.yaml | 90 +- .../rente/betrag/2010-07-01/hh_id_1.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_2.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_24.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_25.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 115 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 103 +- .../rente/betrag/2010-07-01/hh_id_4.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_5.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_6.yaml | 111 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 111 +- .../rente/betrag/2012-07-01/hh_id_10.yaml | 111 +- .../rente/betrag/2012-07-01/hh_id_11.yaml | 111 +- .../rente/betrag/2012-07-01/hh_id_8.yaml | 111 +- .../rente/betrag/2012-07-01/hh_id_9.yaml | 111 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 116 +- .../cohort_1951_wegen_arbeitsl.yaml | 77 +- .../2015-07-01/eligibility_pathways.yaml | 523 ++++---- .../rente/betrag/2015-07-01/hh_id_12.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_13.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_14.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_15.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_16.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_17.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_18.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_19.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_25.yaml | 111 +- .../rente/betrag/2015-07-01/hh_id_26.yaml | 115 +- .../rente/betrag/2015-07-01/hh_id_27.yaml | 115 +- .../rente/betrag/2015-07-01/hh_id_28.yaml | 124 +- .../rente/betrag/2015-07-01/hh_id_29.yaml | 138 ++- .../betrag/2018-07-01/age_at_retirement.yaml | 40 +- ...ohort_1952_altersgrenze_abschlagsfrei.yaml | 76 +- ...ohort_1953_altersgrenze_abschlagsfrei.yaml | 76 +- ...ohort_1954_altersgrenze_abschlagsfrei.yaml | 76 +- ...ohort_1955_altersgrenze_abschlagsfrei.yaml | 76 +- .../2018-07-01/cohort_1955_vorzeitig.yaml | 84 +- .../2018-07-01/cohort_1958_vorzeitig.yaml | 84 +- .../2018-07-01/eligibility_pathways.yaml | 188 +-- .../rente/betrag/2018-07-01/hh_id_20.yaml | 111 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 111 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 111 +- .../rente/betrag/2018-07-01/hh_id_23.yaml | 111 +- .../rente/betrag/2018-07-01/hh_id_24.yaml | 104 +- .../rente/betrag/2018-07-01/hh_id_25.yaml | 104 +- .../zero_entgeltpunkte_anteil_ost.yaml | 17 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1940_claim.yaml | 30 +- ...t_birthyear_1940_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1941_claim.yaml | 30 +- ...t_birthyear_1941_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1943_claim.yaml | 30 +- ...t_birthyear_1943_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1945_claim.yaml | 30 +- ...t_birthyear_1945_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1950_claim.yaml | 30 +- ...t_birthyear_1950_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 30 +- ...t_birthyear_1960_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 70 +- ...werbsgemindert_birthyear_1990_2_claim.yaml | 30 +- ...birthyear_1990_2_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 30 +- ...t_birthyear_1960_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 74 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 30 +- ...t_birthyear_1990_preliminary_products.yaml | 74 +- .../langj_versicherte_wartezeit_1.yaml | 41 +- .../langj_versicherte_wartezeit_2.yaml | 41 +- .../langj_versicherte_wartezeit_3.yaml | 41 +- .../langj_versicherte_wartezeit_4.yaml | 41 +- .../langj_versicherte_wartezeit_5.yaml | 41 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 30 +- ...t_birthyear_1995_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1960_claim.yaml | 30 +- ...t_birthyear_1960_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1980_claim.yaml | 30 +- ...t_birthyear_1980_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1990_claim.yaml | 30 +- ...t_birthyear_1990_preliminary_products.yaml | 70 +- ...werbsgemindert_birthyear_2000_2_claim.yaml | 30 +- ...birthyear_2000_2_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_2000_claim.yaml | 30 +- ...t_birthyear_2000_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1957_claim.yaml | 30 +- ...t_birthyear_1957_preliminary_products.yaml | 70 +- ...werbsgemindert_birthyear_1970_2_claim.yaml | 30 +- ...birthyear_1970_2_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1970_claim.yaml | 30 +- ...t_birthyear_1970_preliminary_products.yaml | 70 +- ...erwerbsgemindert_birthyear_1995_claim.yaml | 30 +- ...t_birthyear_1995_preliminary_products.yaml | 70 +- .../2016-01-01/einkommen_unter_grenze.yaml | 46 +- .../einkommen_\303\274ber_grenze.yaml" | 46 +- .../2018-01-01/hohes_einkommen.yaml | 50 +- .../2018-01-01/kein_einkommen.yaml | 50 +- .../2018-01-01/mittleres_einkommen.yaml | 50 +- .../2018-01-01/niedriges_einkommen.yaml | 50 +- .../2021-01-01/hohes_einkommen.yaml | 50 +- .../2021-01-01/kein_einkommen.yaml | 50 +- .../2021-01-01/mittleres_einkommen.yaml | 50 +- .../2021-01-01/niedriges_einkommen.yaml | 50 +- .../2023-01-01/hohes_einkommen.yaml | 42 +- .../2023-01-01/kein_einkommen.yaml | 42 +- .../2023-01-01/mittleres_einkommen.yaml | 42 +- .../2023-01-01/niedriges_einkommen.yaml | 42 +- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 100 +- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 102 +- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 100 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 100 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 100 +- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 96 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 101 +- .../grundrente/2021-07-01/married_couple.yaml | 138 ++- .../unterhalt/2023-01-01/hh_id_1.yaml | 20 +- .../unterhalt/2023-01-01/hh_id_2.yaml | 20 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 40 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 38 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 40 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- .../2018-01-01/hh_id_5.yaml | 112 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- .../older_child_parent_with_income.yaml | 144 ++- .../older_child_parent_without_income.yaml | 142 ++- .../young_child_parent_without_income.yaml | 144 ++- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- .../2019-08-01/hh_id_1.yaml | 112 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- ...uchsh\303\266he_mittlere_altergruppe.yaml" | 47 +- ...6he_obere_altergruppe_kein_einkommen.yaml" | 45 +- ...nkommen_\303\274ber_einkommensgrenze.yaml" | 47 +- ...pruchsh\303\266he_untere_altergruppe.yaml" | 47 +- .../2006-01-01/hh_id_4.yaml" | 227 ++-- .../2009-01-01/hh_id_3.yaml" | 145 ++- .../2013-01-01/hh_id_2.yaml" | 119 +- .../2014-01-01/hh_id_7.yaml" | 119 +- .../2016-01-01/hh_id_1.yaml" | 153 +-- .../2019-01-01/hh_id_6.yaml" | 126 +- .../2019-01-01/hh_id_8.yaml" | 83 +- .../wohngeld/2006-01-01/hh_id_15.yaml | 713 +++++------ .../wohngeld/2006-01-01/hh_id_4.yaml | 481 ++++---- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 257 ++-- .../wohngeld/2013-01-01/hh_id_2.yaml | 253 ++-- .../wohngeld/2013-01-01/hh_id_9.yaml | 253 ++-- .../wohngeld/2016-01-01/hh_id_1.yaml | 337 +++--- .../wohngeld/2018-01-01/hh_id_7.yaml | 1061 +++++++++-------- .../wohngeld/2018-01-01/hh_id_8.yaml | 543 +++++---- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 553 +++++---- .../wohngeld/2019-01-01/hh_id_5.yaml | 177 +-- .../wohngeld/2021-01-01/hh_id_10.yaml | 181 +-- .../wohngeld/2023-01-01/hh_id_11.yaml | 193 +-- .../wohngeld/2023-01-01/hh_id_12.yaml | 201 ++-- .../wohngeld/2023-01-01/hh_id_13.yaml | 361 +++--- .../wohngeld/2023-01-01/hh_id_14.yaml | 599 +++++----- .../wohngeld/2023-01-01/hh_id_16.yaml | 435 +++---- .../wohngeld/2023-01-01/hh_id_17.yaml | 517 ++++---- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 579 ++++----- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 532 +++++---- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 712 +++++------ .../test_full_taxes_and_transfers.py | 76 -- src/_gettsim_tests/test_groupings.py | 31 - src/_gettsim_tests/test_household_links.py | 31 - src/_gettsim_tests/test_policy.py | 21 +- src/_gettsim_tests/utils.py | 237 ---- src/gettsim/__init__.py | 10 +- src/ttsim/__init__.py | 290 ++++- src/ttsim/automatically_added_functions.py | 14 +- src/ttsim/column_objects_param_function.py | 9 +- src/ttsim/compute_taxes_and_transfers.py | 608 +++------- src/ttsim/convert_nested_data.py | 110 +- src/ttsim/failures_and_warnings.py | 719 +++++++++++ src/ttsim/plot_dag.py | 8 +- src/ttsim/policy_environment.py | 294 +---- src/ttsim/shared.py | 123 -- .../utils.py => src/ttsim/testing_utils.py | 135 ++- .../orc_hunting_bounty/orc_hunting_bounty.py | 2 +- .../test_automatically_added_functions.py | 14 +- .../ttsim/test_compute_taxes_and_transfers.py | 429 ++----- tests/ttsim/test_convert_nested_data.py | 74 +- .../group_by_ids/2025-01-01/group_by_ids.yaml | 29 +- .../amount_no_children_high_income.yaml | 49 +- .../amount_no_children_low_income.yaml | 49 +- .../amount_with_children_high_income.yaml | 63 +- .../amount_with_children_low_income.yaml | 63 +- .../amount_no_children_high_income.yaml | 61 +- .../amount_no_children_low_income.yaml | 61 +- .../amount_with_children_high_income.yaml | 79 +- .../amount_with_children_low_income.yaml | 79 +- .../2025-01-01/amount_with_many_children.yaml | 115 +- .../orc_hunting_bounty/1900-01-01/amount.yaml | 27 +- .../2025-01-01/amount_no_children.yaml | 79 +- .../amount_no_children_high_wealth.yaml | 79 +- .../amount_no_children_noble_parents.yaml | 79 +- .../2025-01-01/amount_with_children.yaml | 95 +- ..._children_inputs_need_to_be_converted.yaml | 103 +- .../2025-01-01/amount_with_many_children.yaml | 139 ++- ...eductions_param_overwritten_by_column.yaml | 30 +- .../property_tax/2000-01-01/acre_size.yaml | 19 +- tests/ttsim/test_failures_and_warnings.py | 881 ++++++++++++++ tests/ttsim/test_mettsim.py | 39 +- tests/ttsim/test_plot_dag.py | 7 +- tests/ttsim/test_policy_environment.py | 580 +-------- tests/ttsim/test_rounding.py | 63 +- tests/ttsim/test_shared.py | 40 +- tests/ttsim/test_ttsim_objects.py | 7 + 1201 files changed, 71422 insertions(+), 56953 deletions(-) delete mode 100644 src/_gettsim_tests/test_full_taxes_and_transfers.py delete mode 100644 src/_gettsim_tests/test_groupings.py delete mode 100644 src/_gettsim_tests/test_household_links.py delete mode 100644 src/_gettsim_tests/utils.py create mode 100644 src/ttsim/failures_and_warnings.py rename tests/ttsim/utils.py => src/ttsim/testing_utils.py (56%) create mode 100644 tests/ttsim/test_failures_and_warnings.py diff --git a/outdated_docs/tutorials/advanced_usage.ipynb b/outdated_docs/tutorials/advanced_usage.ipynb index b34cf9d4b1..56cd484ef9 100644 --- a/outdated_docs/tutorials/advanced_usage.ipynb +++ b/outdated_docs/tutorials/advanced_usage.ipynb @@ -28,14 +28,14 @@ "import plotly.express as px\n", "\n", "from gettsim import (\n", - " FunctionsAndDataOverlapWarning,\n", + " FunctionsAndDataColumnsOverlapWarning,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", " plot_dag,\n", " set_up_policy_environment,\n", ")\n", "\n", - "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataOverlapWarning)" + "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataColumnsOverlapWarning)" ] }, { diff --git a/outdated_docs/tutorials/policy_functions.ipynb b/outdated_docs/tutorials/policy_functions.ipynb index de48519ff0..6fd67bcd33 100644 --- a/outdated_docs/tutorials/policy_functions.ipynb +++ b/outdated_docs/tutorials/policy_functions.ipynb @@ -25,13 +25,13 @@ "import plotly.express as px\n", "\n", "from gettsim import (\n", - " FunctionsAndDataOverlapWarning,\n", + " FunctionsAndDataColumnsOverlapWarning,\n", " compute_taxes_and_transfers,\n", " create_synthetic_data,\n", " set_up_policy_environment,\n", ")\n", "\n", - "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataOverlapWarning)" + "warnings.filterwarnings(\"ignore\", category=FunctionsAndDataColumnsOverlapWarning)" ] }, { diff --git a/pixi.lock b/pixi.lock index 3a6b98b663..299134c89d 100644 --- a/pixi.lock +++ b/pixi.lock @@ -152,7 +152,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda @@ -265,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -405,7 +404,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda @@ -502,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -642,7 +640,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda @@ -739,7 +736,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -873,7 +870,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda @@ -983,7 +979,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -1144,7 +1140,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda @@ -1257,7 +1252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl @@ -1401,7 +1396,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda @@ -1498,7 +1492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -1642,7 +1636,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda @@ -1739,7 +1732,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl @@ -1877,7 +1870,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda @@ -1987,7 +1979,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl @@ -2152,7 +2144,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda @@ -2265,7 +2256,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -2405,7 +2396,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda @@ -2502,7 +2492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -2642,7 +2632,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda @@ -2739,7 +2728,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -2873,7 +2862,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda @@ -2983,7 +2971,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3144,7 +3132,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda @@ -3257,7 +3244,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3397,7 +3384,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda @@ -3494,7 +3480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3634,7 +3620,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda @@ -3731,7 +3716,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -3865,7 +3850,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda @@ -3975,7 +3959,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -4144,7 +4128,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda @@ -4260,7 +4243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -4408,7 +4391,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda @@ -4508,7 +4490,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -4656,7 +4638,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda @@ -4756,7 +4737,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -4890,7 +4871,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda @@ -5000,7 +4980,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl @@ -6066,9 +6046,9 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#e75df1f616efe6be2a0a6840209dc2c95eb9eb46 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 name: dags - version: 0.3.1.dev7+ge75df1f + version: 0.3.1.dev9+ga64509c requires_dist: - flatten-dict - networkx @@ -6594,8 +6574,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev156+g763c5908 - sha256: b0ce3f2d410396211d11c6bab00d4f7256489daa06dfc2081810c543575aa7b4 + version: 0.7.1.dev157+gc286f624 + sha256: 0ae3a2f3ecaecdaad0e8ebeaf6e6a0e5b65bf935ee411c8041f1193001c68330 requires_dist: - ipywidgets - networkx @@ -10211,22 +10191,6 @@ packages: - pytest>=7.2 ; extra == 'test' - pytest-cov>=4.0 ; extra == 'test' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda - sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 - md5: fd40bf7f7f4bc4b647dc8512053d9873 - depends: - - python >=3.10 - - python - constrains: - - numpy >=1.24 - - scipy >=1.10,!=1.11.0,!=1.11.1 - - matplotlib >=3.7 - - pandas >=2.0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 1265008 - timestamp: 1731521053408 - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 md5: 7ba3f09fceae6a120d664217e58fe686 diff --git a/pyproject.toml b/pyproject.toml index 26a524d905..d0d53aa946 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -111,7 +111,6 @@ numpydoc = "*" openpyxl = "*" ipywidgets = "*" jupyterlab = "*" -networkx = "*" # Remove once dags is a proper dependency plotly = ">=5.24,<6" pygments = "*" pygraphviz = "*" @@ -129,7 +128,7 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "allow-passing-dag-to-concatenate_functions"} pdbp = "*" [tool.pixi.target.unix.pypi-dependencies] @@ -248,6 +247,7 @@ extend-ignore = [ "INP001", # implicit namespace packages without init. "E721", # Use `is` and `is not` for type comparisons "TD003", # Missing issue link -- remove again once we got rid of ad-hoc TODOs. + "ERA001", # Commented out code. # Things ignored to avoid conflicts with ruff-format # ================================================== @@ -256,19 +256,20 @@ extend-ignore = [ exclude = [] [tool.ruff.lint.per-file-ignores] +"docs/**/*.ipynb" = ["T201"] +"src/_gettsim/*" = ["E501", "PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} "src/ttsim/compute_taxes_and_transfers.py" = ["E501"] -"src/ttsim/functions/all_functions_for_docs.py" = ["F401", "E501", "F403"] -"src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] +"src/ttsim/failures_and_warnings.py" = ["E501"] "src/ttsim/piecewise_functions.py" = ["PLR"] "src/ttsim/plot_dag.py" = ["PLR"] -"src/_gettsim/*" = ["E501", "PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} +"src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] "tests/ttsim/mettsim/*" = ["PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} -"docs/**/*.ipynb" = ["T201"] - -# Files which should be ignored until we have rewritten them -# ========================================================= +"tests/ttsim/test_failures_and_warnings.py" = ["E501"] +# TODO: remove once ported nicely "outdated_docs/**/*.ipynb" = ["T201"] "src/_gettsim_tests/test_docs.py" = ["F821"] +"src/ttsim/__init__.py" = ["PGH004"] +"tests/ttsim/test_plot_dag.py" = ["PGH004"] [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -308,7 +309,7 @@ disable_error_code = [ [[tool.mypy.overrides]] module = [ - "tests.ttsim.test_policy_environment", + "tests.ttsim.test_failures_and_warnings", ] disable_error_code = [ "misc", # Happens when constructing param dictionaries on the fly. @@ -356,7 +357,7 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore::ttsim.compute_taxes_and_transfers.FunctionsAndDataOverlapWarning" + "ignore::ttsim.failures_and_warnings.FunctionsAndDataColumnsOverlapWarning" ] markers = [ "wip: Tests that are work-in-progress.", diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 713e4be844..ca8ced2b46 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -14,7 +14,7 @@ from ttsim.shared import upsert_tree if TYPE_CHECKING: - from ttsim import RawParam + from ttsim.typing import RawParam @policy_function(start_date="2005-01-01") diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 98701272c1..e88503eb59 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -22,7 +22,8 @@ ) if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue, RawParam + from ttsim import ConsecutiveInt1dLookupTableParamValue + from ttsim.typing import RawParam @agg_by_group_function(agg_type=AggType.COUNT) diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 37505d62d4..911aac4479 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -4,10 +4,10 @@ from _gettsim.config import GETTSIM_ROOT from ttsim import ( - compute_taxes_and_transfers, dataframe_to_nested_data, - nested_data_to_dataframe, - set_up_policy_environment, + main, + nested_data_to_df_with_mapped_columns, + to_datetime, ) if TYPE_CHECKING: @@ -107,23 +107,18 @@ def oss( inputs_tree_to_df_columns=inputs_tree_to_inputs_df_columns, df=inputs_df, ) - environment = set_up_policy_environment( - date=date, - root=GETTSIM_ROOT, - ) - taxes_and_transfers_result = compute_taxes_and_transfers( - data_tree=data_tree, - policy_environment=environment, - targets_tree=targets_tree_to_outputs_df_columns, - rounding=True, - debug=False, - jit=False, - ) - nested_data_with_p_id = { - "p_id": data_tree["p_id"], - **taxes_and_transfers_result, - } - return nested_data_to_dataframe( - nested_data_with_p_id=nested_data_with_p_id, - nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + nested_result = main( + inputs={ + "date": to_datetime(date), + "root": GETTSIM_ROOT, + "data_tree": data_tree, + "targets_tree": targets_tree_to_outputs_df_columns, + "rounding": True, + }, + targets=["nested_results"], + )["nested_results"] + return nested_data_to_df_with_mapped_columns( + nested_data_to_convert=nested_result, + nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, + data_with_p_id=data_tree, ) diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py index 3353b807ba..72e4309a2d 100644 --- a/src/_gettsim/sozialversicherung/minijob.py +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -2,8 +2,7 @@ from __future__ import annotations -from ttsim import RoundingSpec, param_function, policy_function -from ttsim.config import numpy_or_jax as np +from ttsim import RoundingSpec, policy_function @policy_function() @@ -45,19 +44,21 @@ def minijobgrenze_unterscheidung_ost_west( ) -@param_function( +@policy_function( start_date="2022-10-01", leaf_name="minijobgrenze", + rounding_spec=RoundingSpec( + base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" + ), ) def minijobgrenze_abgeleitet_von_mindestlohn( mindestlohn: float, faktoren_minijobformel: dict[str, float], ) -> float: - """Minijob income threshold, derived from the statutory minimum wage. - - Rounding according to § 8 Abs. 1a Satz 2 SGB IV. + """Minijob income threshold since 10/2022. Since then, it is calculated endogenously + from the statutory minimum wage. """ - return np.ceil( + return ( mindestlohn * faktoren_minijobformel["zähler"] / faktoren_minijobformel["nenner"] diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml index 5ca911c0d0..2dfbb6f851 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/fg_id_not_sensitive_to_order.yaml @@ -1,17 +1,11 @@ --- info: note: '' - source: '' precision_atol: 0.01 + source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - - 5 alter: - 12 - 39 @@ -19,6 +13,36 @@ inputs: - 12 - 22 - 42 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - 5 + - -1 + - -1 + - -1 + - 1 + familie: + p_id_elternteil_1: + - 1 + - -1 + - 1 + - 1 + - 5 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - 5 + - -1 + - -1 hh_id: - 0 - 0 @@ -26,42 +50,14 @@ inputs: - 0 - 0 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - 5 - - -1 - - -1 - - -1 - - 1 - familie__p_id_elternteil_1: - - 1 - - -1 - - 1 + p_id: + - 0 - 1 + - 2 + - 3 + - 4 - 5 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - 5 - - -1 - - -1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false outputs: - fg_id: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 bg_id: - 0 - 0 @@ -76,3 +72,10 @@ outputs: - 3 - 4 - 1 + fg_id: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml index a4812bd1c8..bd8eccbbf4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml @@ -8,88 +8,109 @@ inputs: provided: alter: - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1960 hh_id: - 8 - kindergeld__betrag_m_bg: - - 0.0 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 4 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 92.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 92.0 + rente: + altersrente: + betrag_m: + - 0.0 + bezieht_rente: + - false + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - wohnen__heizkosten_m_hh: - - 100.0 - wohnen__wohnfläche_hh: - - 20.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 300.0 + heizkosten_m_hh: + - 100.0 + wohnfläche_hh: + - 20.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 92.534 - arbeitslosengeld_2__betrag_m_bg: - - 122.53 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 200.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 415.466 - arbeitslosengeld_2__regelsatz_m_bg: - - 338.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 92.534 + betrag_m_bg: + - 122.53 + kosten_der_unterkunft_m_bg: + - 200.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 415.466 + regelsatz_m_bg: + - 338.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index f26d94d909..86275f88dd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -10,71 +10,77 @@ inputs: alter: - 40 - 10 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 bg_id: - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 40.0 + - 40.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 8.75 - - 8.75 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 378.56 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 202.8 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 175.0 - - 175.0 - arbeitslosengeld_2__regelbedarf_m: - - 553.56 - - 377.8 - arbeitslosengeld_2__regelsatz_m: - - 378.56 - - 202.8 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + erwachsenensatz_m: + - 378.56 + - 0.0 + kindersatz_m: + - 0.0 + - 202.8 + kosten_der_unterkunft_m: + - 175.0 + - 175.0 + regelbedarf_m: + - 553.56 + - 377.8 + regelsatz_m: + - 378.56 + - 202.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index c53d53d743..204032954d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -10,68 +10,73 @@ inputs: alter: - 40 - 10 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - true + p_id_einstandspartner: + - -1 + - -1 bg_id: - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - true - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 40.0 + - 40.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 8.75 - - 8.75 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 378.56 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 202.8 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 175.0 - - 175.0 - arbeitslosengeld_2__regelbedarf_m: - - 553.56 - - 377.8 - arbeitslosengeld_2__regelsatz_m: - - 378.56 - - 202.8 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + erwachsenensatz_m: + - 378.56 + - 0.0 + kindersatz_m: + - 0.0 + - 202.8 + kosten_der_unterkunft_m: + - 175.0 + - 175.0 + regelbedarf_m: + - 553.56 + - 377.8 + regelsatz_m: + - 378.56 + - 202.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 0751f48251..d63ca832e7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -11,89 +11,94 @@ inputs: - 40 - 10 - 45 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 2 + - -1 + - 0 bg_id: - 0 - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 hh_id: - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - -1 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - -1 p_id: - 0 - 1 - 2 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 304.2 - - 0.0 - - 304.2 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 202.8 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 200.0 - - 200.0 - - 200.0 - arbeitslosengeld_2__regelbedarf_m: - - 504.2 - - 402.8 - - 504.2 - arbeitslosengeld_2__regelsatz_m: - - 304.2 - - 202.8 - - 304.2 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + erwachsenensatz_m: + - 304.2 + - 0.0 + - 304.2 + kindersatz_m: + - 0.0 + - 202.8 + - 0.0 + kosten_der_unterkunft_m: + - 200.0 + - 200.0 + - 200.0 + regelbedarf_m: + - 504.2 + - 402.8 + - 504.2 + regelsatz_m: + - 304.2 + - 202.8 + - 304.2 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 05057f7df5..09eae02ef4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -11,89 +11,94 @@ inputs: - 40 - 10 - 45 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - true + - false + p_id_einstandspartner: + - 2 + - -1 + - 0 bg_id: - 0 - 1 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - true - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 hh_id: - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - -1 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - -1 p_id: - 0 - 1 - 2 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 304.2 - - 0.0 - - 304.2 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 202.8 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 200.0 - - 200.0 - - 200.0 - arbeitslosengeld_2__regelbedarf_m: - - 504.2 - - 402.8 - - 504.2 - arbeitslosengeld_2__regelsatz_m: - - 304.2 - - 202.8 - - 304.2 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + erwachsenensatz_m: + - 304.2 + - 0.0 + - 304.2 + kindersatz_m: + - 0.0 + - 202.8 + - 0.0 + kosten_der_unterkunft_m: + - 200.0 + - 200.0 + - 200.0 + regelbedarf_m: + - 504.2 + - 402.8 + - 504.2 + regelsatz_m: + - 304.2 + - 202.8 + - 304.2 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index 53b57c0532..d191fe719d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -13,54 +13,57 @@ inputs: - 10 - 14 - 19 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - true - - false - - false - - false - - false - familie__kind: - - false - - true - - true - - true - - true - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + familie: + alleinerziehend: + - true + - false + - false + - false + - false + kind: + - false + - true + - true + - true + - true + p_id_elternteil_1: + - -1 + - 0 + - 0 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 hh_id: - 0 - 0 - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 - - 0 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - 0 + - 0 + - 0 p_id: - 0 - 1 @@ -69,21 +72,22 @@ inputs: - 4 provided: {} outputs: - arbeitslosengeld_2__erwachsenensatz_m: - - 500.24 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 202.8 - - 202.8 - - 270.4 - - 270.4 - arbeitslosengeld_2__regelsatz_m: - - 500.24 - - 202.8 - - 202.8 - - 270.4 - - 270.4 + arbeitslosengeld_2: + erwachsenensatz_m: + - 500.24 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kindersatz_m: + - 0.0 + - 202.8 + - 202.8 + - 270.4 + - 270.4 + regelsatz_m: + - 500.24 + - 202.8 + - 202.8 + - 270.4 + - 270.4 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml index 6a9f60d371..47aee23ee5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml @@ -1,37 +1,41 @@ --- info: note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. In this case, the child - should receive the adult Regelsatz. + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. In this case, the + child should receive the adult Regelsatz. precision_atol: 0.01 source: Made up. inputs: assumed: alter: - 17 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false - familie__kind: - - true - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + familie: + alleinerziehend: + - false + kind: + - true + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 hh_id: - 0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + p_id_empfänger: + - -1 p_id: - 0 provided: {} outputs: - arbeitslosengeld_2__erwachsenensatz_m: - - 338.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - arbeitslosengeld_2__regelsatz_m: - - 338.0 + arbeitslosengeld_2: + erwachsenensatz_m: + - 338.0 + kindersatz_m: + - 0.0 + regelsatz_m: + - 338.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml index e1d9d8b032..1c2f0711cd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml @@ -12,108 +12,118 @@ inputs: - 12 - 10 - 2 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 6 - - 5 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 6 + - 5 + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - - 5 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 - - 6 - - 6 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 5 + - 5 + - 5 + p_id_elternteil_2: + - -1 + - -1 + - 6 + - 6 + - 6 geburtsjahr: - 1973 - 1976 @@ -126,148 +136,159 @@ inputs: - 4 - 4 - 4 - kindergeld__betrag_m_bg: - - 462.0 - - 462.0 - - 462.0 - - 462.0 - - 462.0 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 5 - - 5 - - 5 + kindergeld: + betrag_m_bg: + - 462.0 + - 462.0 + - 462.0 + - 462.0 + - 462.0 + in_ausbildung: + - false + - false + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 5 + - 5 + - 5 p_id: - 5 - 6 - 7 - 8 - 9 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - unterhaltsvorschuss__betrag_m: - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohnfläche_hh: + - 110.0 + - 110.0 + - 110.0 + - 110.0 + - 110.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: - 0.0 - 0.0 - 0.0 - 0.0 - vermögen: - 0.0 + betrag_m_bg: + - 1680.71 + - 1680.71 + - 1680.71 + - 1680.71 + - 1680.71 + kindergeld_pro_kind_m: + - 154.0 - 0.0 - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - wohnen__heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - wohnen__wohnfläche_hh: - - 110.0 - - 110.0 - - 110.0 - - 110.0 - - 110.0 - wohngeld__anspruchshöhe_m_bg: + kosten_der_unterkunft_m_bg: + - 925.91 + - 925.91 + - 925.91 + - 925.91 + - 925.91 + nettoeinkommen_nach_abzug_freibetrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1680.71 - - 1680.71 - - 1680.71 - - 1680.71 - - 1680.71 - arbeitslosengeld_2__kindergeld_pro_kind_m: - - 154.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 925.91 - - 925.91 - - 925.91 - - 925.91 - - 925.91 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1216.8 - - 1216.8 - - 1216.8 - - 1216.8 - - 1216.8 + regelsatz_m_bg: + - 1216.8 + - 1216.8 + - 1216.8 + - 1216.8 + - 1216.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml index ea99549e96..7e6cf518f1 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml @@ -9,130 +9,151 @@ inputs: alter: - 28 - 1 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 1200.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 250.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 10 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 1200.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 250.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 10 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1981 - 2008 hh_id: - 3 - 3 - kindergeld__betrag_m: - - 164.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 10 + kindergeld: + betrag_m: + - 164.0 + - 0.0 + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 10 p_id: - 10 - 11 - solidaritätszuschlag__betrag_y_sn: - - 66.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 200.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 66.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 200.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 58.0 - - 58.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 58.0 + - 58.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 260.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 319.46 - - 319.46 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 684.5 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 687.96 - - 687.96 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 260.0 + - 0.0 + betrag_m_bg: + - 319.46 + - 319.46 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 684.5 + - 0.0 + regelsatz_m_bg: + - 687.96 + - 687.96 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index e73c5ae048..26314e0b2d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -9,130 +9,151 @@ inputs: alter: - 38 - 20 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 1200.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 250.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 10 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 1200.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 250.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 10 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1981 - 2008 hh_id: - 3 - 3 - kindergeld__betrag_m: - - 164.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 10 + kindergeld: + betrag_m: + - 164.0 + - 0.0 + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 10 p_id: - 10 - 11 - solidaritätszuschlag__betrag_y_sn: - - 66.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 200.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 66.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 200.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 58.0 - - 58.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 58.0 + - 58.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 260.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 305.42 - - 305.42 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 684.5 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 673.92 - - 673.92 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 260.0 + - 0.0 + betrag_m_bg: + - 305.42 + - 305.42 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 684.5 + - 0.0 + regelsatz_m_bg: + - 673.92 + - 673.92 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml index 909a237cf9..0dc4bc32fa 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml @@ -9,130 +9,151 @@ inputs: alter: - 70 - 70 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 26 - - 25 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 26 + - 25 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 26 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 26 + - 25 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1943 - 1943 hh_id: - 12 - 12 - kindergeld__betrag_m_bg: - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 25 - 26 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 50.0 - - 50.0 - sozialversicherung__rente__altersrente__betrag_m: - - 300.0 - - 300.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 50.0 + - 50.0 + rente: + altersrente: + betrag_m: + - 300.0 + - 300.0 + bezieht_rente: + - true + - true + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - vermögen: + wohnen: + bewohnt_eigentum_hh: + - true + - true + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - true - - true - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: + betrag_m_bg: - 0.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 350.0 - - 250.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 690.0 - - 690.0 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 350.0 + - 250.0 + regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml index 87d00d49ed..cc1c571f75 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml @@ -9,130 +9,151 @@ inputs: alter: - 40 - 70 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 28 - - 27 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 28 + - 27 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 28 - - 27 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 28 + - 27 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1943 hh_id: - 13 - 13 - kindergeld__betrag_m_bg: - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 27 - 28 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 50.0 - - 50.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 300.0 - sozialversicherung__rente__bezieht_rente: - - false - - true - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 50.0 + - 50.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 300.0 + bezieht_rente: + - false + - true + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - true - - true - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - true + - true + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 140.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 710.0 - - 710.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 210.0 - - 250.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 690.0 - - 690.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 140.0 + - 0.0 + betrag_m_bg: + - 710.0 + - 710.0 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 210.0 + - 250.0 + regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index 69984826a6..a75c298ffd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -11,133 +11,154 @@ inputs: alter: - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 36 - - 35 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 36 + - 35 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 36 - - 35 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 36 + - 35 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1973 hh_id: - 14 - 14 - kindergeld__betrag_m: - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m: + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 35 - 36 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 160.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 160.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 12900.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - true - - true - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - true + - true + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 35.0 - - 35.0 - arbeitslosengeld_2__betrag_m_bg: - - 670.0 - - 670.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 690.0 - - 690.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + berechtigte_wohnfläche: + - 35.0 + - 35.0 + betrag_m_bg: + - 670.0 + - 670.0 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index d5a5884402..f3843610d4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -11,130 +11,151 @@ inputs: alter: - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 38 - - 37 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 38 + - 37 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 38 - - 37 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 38 + - 37 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1973 hh_id: - 15 - 15 - kindergeld__betrag_m_bg: - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 37 - 38 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 160.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 160.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 14000.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - true - - true - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: + wohnen: + bewohnt_eigentum_hh: + - true + - true + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 - 0.0 + betrag_m_bg: - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 690.0 - - 690.0 + - 0.0 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml index 29b12b4f6a..dec4f7acf3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml @@ -9,130 +9,151 @@ inputs: alter: - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 16 - - 15 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 16 + - 15 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 16 - - 15 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 16 + - 15 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1973 hh_id: - 2 - 2 - kindergeld__betrag_m_bg: - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 15 - 16 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 160.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 160.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - true - - true - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - true + - true + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + wohnfläche_hh: + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 670.0 - - 670.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 480.0 - - 480.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 500.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 690.0 - - 690.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + betrag_m_bg: + - 670.0 + - 670.0 + kosten_der_unterkunft_m_bg: + - 480.0 + - 480.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 500.0 + - 0.0 + regelsatz_m_bg: + - 690.0 + - 690.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml index 32afb6f36c..de8f27b952 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml @@ -12,108 +12,118 @@ inputs: - 3 - 8 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - elterngeld__betrag_m: - - 372.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - - false - - false - familie__kind: - - false - - true - - true - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 17 - - 17 - - 17 - - 17 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + - false + elterngeld: + betrag_m: + - 372.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + - false + - false + kind: + - false + - true + - true + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 17 + - 17 + - 17 + - 17 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1988 - 2010 @@ -126,142 +136,153 @@ inputs: - 9 - 9 - 9 - kindergeld__betrag_m: - - 388.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - true - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 17 - - 17 - - 17 - - 17 + kindergeld: + betrag_m: + - 388.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + in_ausbildung: + - false + - true + - true + - true + - true + p_id_empfänger: + - -1 + - 17 + - 17 + - 17 + - 17 p_id: - 17 - 18 - 19 - 20 - 21 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - vermögen: - 0.0 - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 + betrag_m_bg: + - 1021.68 + - 1021.68 + - 1021.68 + - 1021.68 + - 1021.68 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 796.0 - 0.0 - 0.0 - 0.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1021.68 - - 1021.68 - - 1021.68 - - 1021.68 - - 1021.68 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 796.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1687.68 - - 1687.68 - - 1687.68 - - 1687.68 - - 1687.68 + regelsatz_m_bg: + - 1687.68 + - 1687.68 + - 1687.68 + - 1687.68 + - 1687.68 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml index 9ed7412be3..4dec8e9aaf 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml @@ -10,74 +10,84 @@ inputs: - 30 - 8 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 22 + - 22 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1989 - 2011 @@ -86,96 +96,107 @@ inputs: - 6 - 6 - 6 - kindergeld__betrag_m_bg: - - 388.0 - - 388.0 - - 388.0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 22 - - 22 + kindergeld: + betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 22 + - 22 p_id: - 22 - 23 - 24 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 457.64 - - 457.64 - - 457.64 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1123.64 - - 1123.64 - - 1123.64 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + betrag_m_bg: + - 457.64 + - 457.64 + - 457.64 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + regelsatz_m_bg: + - 1123.64 + - 1123.64 + - 1123.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml index 2dc1387907..a44a442983 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml @@ -10,74 +10,84 @@ inputs: - 30 - 14 - 13 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1989 - 2005 @@ -86,96 +96,107 @@ inputs: - 7 - 7 - 7 - kindergeld__betrag_m_bg: - - 388.0 - - 388.0 - - 388.0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 534.64 - - 534.64 - - 534.64 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1200.64 - - 1200.64 - - 1200.64 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + betrag_m_bg: + - 534.64 + - 534.64 + - 534.64 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + regelsatz_m_bg: + - 1200.64 + - 1200.64 + - 1200.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml index 419763c093..7072a94d09 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml @@ -10,74 +10,84 @@ inputs: - 30 - 6 - 5 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1989 - 2013 @@ -86,96 +96,107 @@ inputs: - 7 - 7 - 7 - kindergeld__betrag_m_bg: - - 388.0 - - 388.0 - - 388.0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 457.64 - - 457.64 - - 457.64 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1123.64 - - 1123.64 - - 1123.64 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + betrag_m_bg: + - 457.64 + - 457.64 + - 457.64 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + regelsatz_m_bg: + - 1123.64 + - 1123.64 + - 1123.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index ca116d5c9a..b33854b6b4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -12,74 +12,84 @@ inputs: - 30 - 8 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 29 - - 29 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 29 + - 29 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1992 - 2014 @@ -88,96 +98,107 @@ inputs: - 10 - 10 - 10 - kindergeld__betrag_m: - - 388.0 - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 29 - - 29 + kindergeld: + betrag_m: + - 388.0 + - 0.0 + - 0.0 + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 29 + - 29 p_id: - 29 - 30 - 31 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 212.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 10000.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 540.64 - - 540.64 - - 540.64 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1206.64 - - 1206.64 - - 1206.64 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 + - 0.0 + - 0.0 + betrag_m_bg: + - 540.64 + - 540.64 + - 540.64 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 + - 0.0 + - 0.0 + regelsatz_m_bg: + - 1206.64 + - 1206.64 + - 1206.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index 446949f5f7..d439c9a779 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -12,74 +12,84 @@ inputs: - 30 - 8 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 32 - - 32 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 32 + - 32 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1992 - 2014 @@ -88,96 +98,107 @@ inputs: - 11 - 11 - 11 - kindergeld__betrag_m_bg: - - 388.0 - - 388.0 - - 388.0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 32 - - 32 + kindergeld: + betrag_m_bg: + - 388.0 + - 388.0 + - 388.0 + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 32 + - 32 p_id: - 32 - 33 - 34 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 136.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 136.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 212.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: + - 13000.0 - 0.0 - - 212.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 438.0 + - 438.0 + - 438.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 240.0 - 0.0 - 0.0 - vermögen: - - 13000.0 + betrag_m_bg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 438.0 - - 438.0 - - 438.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 + kosten_der_unterkunft_m_bg: + - 518.0 + - 518.0 + - 518.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 424.0 - 0.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 240.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 518.0 - - 518.0 - - 518.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 424.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1206.64 - - 1206.64 - - 1206.64 + regelsatz_m_bg: + - 1206.64 + - 1206.64 + - 1206.64 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml index c3a8e8b5a6..8281194f25 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml @@ -8,88 +8,109 @@ inputs: provided: alter: - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 16 - kindergeld__betrag_m_bg: - - 0.0 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 39 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 204.0 + rente: + altersrente: + betrag_m: + - 0.0 + bezieht_rente: + - false + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 40000.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 300.0 - arbeitslosengeld_2__betrag_m_bg: - - 256.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 450.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 696.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 502.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 300.0 + betrag_m_bg: + - 256.0 + kosten_der_unterkunft_m_bg: + - 450.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + regelsatz_m_bg: + - 502.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index d416963a93..2ded081160 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed test - case after Karenzzeit with cost for living from testcase in 2011. + Test with old income thresholds, adjusted for Kindersofortzuschlag. Constructed + test case after Karenzzeit with cost for living from testcase in 2011. precision_atol: 0.01 source: '' inputs: @@ -12,74 +12,84 @@ inputs: - 30 - 3 - 35 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - true - - true - - true - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 48 - - -1 - - 46 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 48 + - -1 + - 46 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - - 0.0 - - 700.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 48 - - -1 - - 46 - familie__p_id_elternteil_1: - - -1 - - 46 - - -1 - familie__p_id_elternteil_2: - - -1 - - 48 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + - 0.0 + - 700.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 48 + - -1 + - 46 + p_id_elternteil_1: + - -1 + - 46 + - -1 + p_id_elternteil_2: + - -1 + - 48 + - -1 geburtsjahr: - 1993 - 2020 @@ -88,100 +98,111 @@ inputs: - 19 - 19 - 19 - kindergeld__anzahl_ansprüche: - - 0 - - 0 - - 0 - kindergeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 46 - - -1 + kindergeld: + anzahl_ansprüche: + - 0 + - 0 + - 0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 46 + - -1 p_id: - 46 - 47 - 48 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - - 0.0 - - 140.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - wohnen__heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnen__wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 300.0 - - 0.0 - - 220.0 - arbeitslosengeld_2__betrag_m_bg: - - 796.86 - - 796.86 - - 796.86 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 696.0 - - 0.0 - - 340.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 300.0 + - 0.0 + - 220.0 + betrag_m_bg: + - 796.86 + - 796.86 + - 796.86 + kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + - 0.0 + - 340.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index 22594e0ef5..aec1562187 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Test with old income thresholds with income from self employment, adjusted for - Kindersofortzuschlag. Constructed test based on hh 19. + Test with old income thresholds with income from self employment, adjusted + for Kindersofortzuschlag. Constructed test based on hh 19. precision_atol: 0.01 source: '' inputs: @@ -12,74 +12,84 @@ inputs: - 30 - 3 - 35 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - true - - true - - true - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 48 - - -1 - - 46 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 48 + - -1 + - 46 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 200.0 - - 0.0 - - 700.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 48 - - -1 - - 46 - familie__p_id_elternteil_1: - - -1 - - 46 - - -1 - familie__p_id_elternteil_2: - - -1 - - 48 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 200.0 + - 0.0 + - 700.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 48 + - -1 + - 46 + p_id_elternteil_1: + - -1 + - 46 + - -1 + p_id_elternteil_2: + - -1 + - 48 + - -1 geburtsjahr: - 1993 - 2020 @@ -88,100 +98,111 @@ inputs: - 19 - 19 - 19 - kindergeld__anzahl_ansprüche: - - 0 - - 0 - - 0 - kindergeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 46 - - -1 + kindergeld: + anzahl_ansprüche: + - 0 + - 0 + - 0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 46 + - -1 p_id: - 46 - 47 - 48 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - - 0.0 - - 140.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - wohnen__heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnen__wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 300.0 - - 0.0 - - 220.0 - arbeitslosengeld_2__betrag_m_bg: - - 796.86 - - 796.86 - - 796.86 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 696.0 - - 0.0 - - 340.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 300.0 + - 0.0 + - 220.0 + betrag_m_bg: + - 796.86 + - 796.86 + - 796.86 + kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + nettoeinkommen_nach_abzug_freibetrag_m: + - 696.0 + - 0.0 + - 340.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index 8865892d59..f05c676ba0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -13,91 +13,101 @@ inputs: - 38 - 18 - 17 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 44 - - 43 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 44 + - 43 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 44 - - 43 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 43 - - 43 - familie__p_id_elternteil_2: - - -1 - - -1 - - 44 - - 44 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 44 + - 43 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 43 + - 43 + p_id_elternteil_2: + - -1 + - -1 + - 44 + - 44 geburtsjahr: - 1983 - 1985 @@ -108,119 +118,130 @@ inputs: - 18 - 18 - 18 - kindergeld__betrag_m_bg: - - 500.0 - - 500.0 - - 500.0 - - 500.0 - kindergeld__in_ausbildung: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 43 - - 43 + kindergeld: + betrag_m_bg: + - 500.0 + - 500.0 + - 500.0 + - 500.0 + in_ausbildung: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 43 + - 43 p_id: - 43 - 44 - 45 - 46 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 140.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - vermögen: - 0.0 - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 750.0 + - 750.0 + - 750.0 + - 750.0 + heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohnfläche_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: - 0.0 + - 220.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 750.0 - - 750.0 - - 750.0 - - 750.0 - wohnen__heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - wohnen__wohnfläche_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 + betrag_m_bg: + - 1794.0 + - 1794.0 + - 1794.0 + - 1794.0 + kosten_der_unterkunft_m_bg: + - 870.0 + - 870.0 + - 870.0 + - 870.0 + nettoeinkommen_nach_abzug_freibetrag_m: - 0.0 + - 340.0 - 0.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 220.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1794.0 - - 1794.0 - - 1794.0 - - 1794.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 870.0 - - 870.0 - - 870.0 - - 870.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1764.0 - - 1764.0 - - 1764.0 - - 1764.0 + regelsatz_m_bg: + - 1764.0 + - 1764.0 + - 1764.0 + - 1764.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index 3b18930660..0cb03a6250 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -12,74 +12,84 @@ inputs: - 40 - 38 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 41 - - 40 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 41 + - 40 + - -1 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 41 - - 40 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 40 - familie__p_id_elternteil_2: - - -1 - - -1 - - 41 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 41 + - 40 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 40 + p_id_elternteil_2: + - -1 + - -1 + - 41 geburtsjahr: - 1983 - 1985 @@ -88,96 +98,107 @@ inputs: - 17 - 17 - 17 - kindergeld__betrag_m_bg: - - 250.0 - - 250.0 - - 250.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 40 + kindergeld: + betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 40 p_id: - 40 - 41 - 42 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 140.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: + - 85000.0 - 0.0 - unterhaltsvorschuss__betrag_m: - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: - 0.0 + - 220.0 - 0.0 - vermögen: - - 85000.0 + betrag_m_bg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 + kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + nettoeinkommen_nach_abzug_freibetrag_m: - 0.0 + - 340.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 220.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index d7a655ea4f..c877c373f9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -12,74 +12,84 @@ inputs: - 40 - 38 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 44 - - 43 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 44 + - 43 + - -1 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 44 - - 43 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 43 - familie__p_id_elternteil_2: - - -1 - - -1 - - 44 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 44 + - 43 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 43 + p_id_elternteil_2: + - -1 + - -1 + - 44 geburtsjahr: - 1983 - 1985 @@ -88,96 +98,107 @@ inputs: - 18 - 18 - 18 - kindergeld__betrag_m_bg: - - 250.0 - - 250.0 - - 250.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 43 + kindergeld: + betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 43 p_id: - 43 - 44 - 45 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 140.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 50000.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 220.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1400.0 - - 1400.0 - - 1400.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 340.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 0.0 + - 220.0 + - 0.0 + betrag_m_bg: + - 1400.0 + - 1400.0 + - 1400.0 + kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 340.0 + - 0.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml index 605ca77bdc..02632091b4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml @@ -8,88 +8,109 @@ inputs: provided: alter: - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 20 - kindergeld__betrag_m_bg: - - 0.0 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 49 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 204.0 + rente: + altersrente: + betrag_m: + - 0.0 + bezieht_rente: + - false + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 40000.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 348.0 - arbeitslosengeld_2__betrag_m_bg: - - 304.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 450.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 648.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 502.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 348.0 + betrag_m_bg: + - 304.0 + kosten_der_unterkunft_m_bg: + - 450.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + regelsatz_m_bg: + - 502.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index 93f391c6eb..c264c4ace3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -12,74 +12,84 @@ inputs: - 40 - 38 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 51 - - 50 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 51 + - 50 + - -1 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 51 - - 50 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 50 - familie__p_id_elternteil_2: - - -1 - - -1 - - 51 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 51 + - 50 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 50 + p_id_elternteil_2: + - -1 + - -1 + - 51 geburtsjahr: - 1983 - 1985 @@ -88,96 +98,107 @@ inputs: - 21 - 21 - 21 - kindergeld__betrag_m_bg: - - 250.0 - - 250.0 - - 250.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 50 + kindergeld: + betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 50 p_id: - 50 - 51 - 52 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 140.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: + - 85000.0 - 0.0 - unterhaltsvorschuss__betrag_m: - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: - 0.0 + - 238.0 - 0.0 - vermögen: - - 85000.0 + betrag_m_bg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 + kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + nettoeinkommen_nach_abzug_freibetrag_m: - 0.0 + - 322.0 - 0.0 -outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 238.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 322.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index 2d1cd6b991..ea3f4f4afc 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -12,74 +12,84 @@ inputs: - 40 - 38 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 54 - - 53 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 54 + - 53 + - -1 arbeitsstunden_w: - 0.0 - 12.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 700.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 54 - - 53 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 53 - familie__p_id_elternteil_2: - - -1 - - -1 - - 54 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 700.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 54 + - 53 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 53 + p_id_elternteil_2: + - -1 + - -1 + - 54 geburtsjahr: - 1983 - 1985 @@ -88,96 +98,107 @@ inputs: - 22 - 22 - 22 - kindergeld__betrag_m_bg: - - 250.0 - - 250.0 - - 250.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 53 + kindergeld: + betrag_m_bg: + - 250.0 + - 250.0 + - 250.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 53 p_id: - 53 - 54 - 55 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 140.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 140.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 50000.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 650.0 - - 650.0 - - 650.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 650.0 + - 650.0 + - 650.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 238.0 - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1418.0 - - 1418.0 - - 1418.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 750.0 - - 750.0 - - 750.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - - 322.0 - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 0.0 + - 238.0 + - 0.0 + betrag_m_bg: + - 1418.0 + - 1418.0 + - 1418.0 + kosten_der_unterkunft_m_bg: + - 750.0 + - 750.0 + - 750.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + - 322.0 + - 0.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 4c2d290e71..33d9f81b71 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -1,8 +1,9 @@ --- info: note: >- - Test with new income thresholds, adjusted for Kindersofortzuschlag. Constructed test - case after Karenzzeit with cost for living from 2011 testcase. + Test with new income thresholds, adjusted for Kindersofortzuschlag. + Constructed test case after Karenzzeit with cost for living from 2011 + testcase. precision_atol: 0.01 source: '' inputs: @@ -12,74 +13,84 @@ inputs: - 30 - 3 - 35 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - true - - true - - true - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 58 - - -1 - - 56 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - true + - true + - true + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 58 + - -1 + - 56 arbeitsstunden_w: - 20.0 - 0.0 - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - - 0.0 - - 700.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 58 - - -1 - - 56 - familie__p_id_elternteil_1: - - -1 - - 56 - - -1 - familie__p_id_elternteil_2: - - -1 - - 58 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + - 0.0 + - 700.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 58 + - -1 + - 56 + p_id_elternteil_1: + - -1 + - 56 + - -1 + p_id_elternteil_2: + - -1 + - 58 + - -1 geburtsjahr: - 1993 - 2020 @@ -88,100 +99,111 @@ inputs: - 23 - 23 - 23 - kindergeld__anzahl_ansprüche: - - 0 - - 0 - - 0 - kindergeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 56 - - -1 + kindergeld: + anzahl_ansprüche: + - 0 + - 0 + - 0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 56 + - -1 p_id: - 56 - 57 - 58 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - - 0.0 - - 140.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 204.0 + - 0.0 + - 140.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 720.0 - - 720.0 - - 720.0 - wohnen__heizkosten_m_hh: - - 110.0 - - 110.0 - - 110.0 - wohnen__wohnfläche_hh: - - 105.0 - - 105.0 - - 105.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 720.0 + - 720.0 + - 720.0 + heizkosten_m_hh: + - 110.0 + - 110.0 + - 110.0 + wohnfläche_hh: + - 105.0 + - 105.0 + - 105.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 348.0 - - 0.0 - - 238.0 - arbeitslosengeld_2__betrag_m_bg: - - 862.86 - - 862.86 - - 862.86 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 592.86 - - 592.86 - - 592.86 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 648.0 - - 0.0 - - 322.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1240.0 - - 1240.0 - - 1240.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 348.0 + - 0.0 + - 238.0 + betrag_m_bg: + - 862.86 + - 862.86 + - 862.86 + kosten_der_unterkunft_m_bg: + - 592.86 + - 592.86 + - 592.86 + nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + - 0.0 + - 322.0 + regelsatz_m_bg: + - 1240.0 + - 1240.0 + - 1240.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml index a81c83b3c8..622e43db86 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml @@ -8,88 +8,109 @@ inputs: provided: alter: - 42 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 1200.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 1200.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 25 - kindergeld__betrag_m_bg: - - 0.0 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 60 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 204.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 204.0 + rente: + altersrente: + betrag_m: + - 0.0 + bezieht_rente: + - false + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 40000.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 348.0 - arbeitslosengeld_2__betrag_m_bg: - - 304.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 450.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 648.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 502.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 348.0 + betrag_m_bg: + - 304.0 + kosten_der_unterkunft_m_bg: + - 450.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 648.0 + regelsatz_m_bg: + - 502.0 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" index 599355e06f..db5cbd523c 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Household with 2 children, where child income does not exceed needs. Hence, child - stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. + Household with 2 children, where child income does not exceed needs. Hence, + child stays in Bedarfsgemeinschaft and Kindergeldübertrag is zero. precision_atol: 0.01 source: https://www.das-steht-dir-zu.de/arbeit/buergergeld/der-buergergeld-rechner/index.html inputs: @@ -16,70 +16,80 @@ inputs: - 40 - 10 - 8 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 2014 @@ -88,100 +98,111 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - unterhaltsvorschuss__betrag_m: + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 +outputs: + arbeitslosengeld_2: + betrag_m_bg: + - 1455.68 + - 1455.68 + - 1455.68 + differenz_kindergeld_kindbedarf_m: - 0.0 - 0.0 - 0.0 - vermögen: + kindergeld_pro_kind_m: + - 250.0 - 0.0 - 0.0 + kindergeldübertrag_m: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - 0.0 - 0.0 - - 0.0 -outputs: - arbeitslosengeld_2__betrag_m_bg: - - 1455.68 - - 1455.68 - - 1455.68 - arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeld_pro_kind_m: - - 250.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindersatz_m_bg: - - 820.0 - - 820.0 - - 820.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 650.0 - - 650.0 - - 650.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 1585.68 - - 1585.68 - - 1585.68 + kindersatz_m_bg: + - 820.0 + - 820.0 + - 820.0 + kosten_der_unterkunft_m_bg: + - 650.0 + - 650.0 + - 650.0 + regelsatz_m_bg: + - 1585.68 + - 1585.68 + - 1585.68 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" index bddee15773..ab3e95cee5 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" @@ -1,9 +1,9 @@ --- info: note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. + Household with 2 children, where child income of second child exceeds needs. + Second child drops out of Bedarfsgemeinschaft and all of Kindergeld is + transfered to the parent via Kindergeldübertrag. precision_atol: 0.01 source: Made up. inputs: @@ -13,74 +13,84 @@ inputs: - 40 - 10 - 8 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - bg_id: - - 0 - - 0 - - 1 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 + bg_id: - 0 - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + - 1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 2014 @@ -89,112 +99,123 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 450.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 450.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 170.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__anzurechnendes_einkommen_m: - - 353.33 - - 250.0 - - 700.0 - arbeitslosengeld_2__betrag_m_bg: - - 1005.68 - - 1005.68 - - 0.0 - arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 73.33 - arbeitslosengeld_2__kindergeld_pro_kind_m: - - 250.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 73.33 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindersatz_m_bg: - - 410.0 - - 410.0 - - 410.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 433.33 - - 433.33 - - 216.67 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1609.01 - - 1609.01 - - 626.67 - arbeitslosengeld_2__regelsatz_m_bg: - - 1175.68 - - 1175.68 - - 410.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 170.0 + - 0.0 + - 0.0 + anzurechnendes_einkommen_m: + - 353.33 + - 250.0 + - 700.0 + betrag_m_bg: + - 1005.68 + - 1005.68 + - 0.0 + differenz_kindergeld_kindbedarf_m: + - 0.0 + - 0.0 + - 73.33 + kindergeld_pro_kind_m: + - 250.0 + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 73.33 + - 0.0 + - 0.0 + kindersatz_m_bg: + - 410.0 + - 410.0 + - 410.0 + kosten_der_unterkunft_m_bg: + - 433.33 + - 433.33 + - 216.67 + regelbedarf_m_bg: + - 1609.01 + - 1609.01 + - 626.67 + regelsatz_m_bg: + - 1175.68 + - 1175.68 + - 410.0 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" index a56296d368..062f2c3972 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" @@ -1,9 +1,9 @@ --- info: note: >- - Household with 2 children, where child income of second child exceeds needs. Second - child drops out of Bedarfsgemeinschaft and all of Kindergeld is transfered to the - parent via Kindergeldübertrag. + Household with 2 children, where child income of second child exceeds needs. + Second child drops out of Bedarfsgemeinschaft and all of Kindergeld is + transfered to the parent via Kindergeldübertrag. precision_atol: 0.01 source: Made up. inputs: @@ -17,70 +17,80 @@ inputs: - 40 - 10 - 8 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 450.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 450.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 2014 @@ -89,112 +99,123 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 800.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 800.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + - 600.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 170.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__anzurechnendes_einkommen_m: - - 530.0 - - 250.0 - - 1050.0 - arbeitslosengeld_2__betrag_m_bg: - - 829.01 - - 829.01 - - 0.0 - arbeitslosengeld_2__differenz_kindergeld_kindbedarf_m: - - 0.0 - - 0.0 - - 250.0 - arbeitslosengeld_2__kindergeld_pro_kind_m: - - 250.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 250.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindersatz_m_bg: - - 410.0 - - 410.0 - - 410.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 433.33 - - 433.33 - - 216.67 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1609.01 - - 1609.01 - - 626.67 - arbeitslosengeld_2__regelsatz_m_bg: - - 1175.68 - - 1175.68 - - 410.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 170.0 + - 0.0 + - 0.0 + anzurechnendes_einkommen_m: + - 530.0 + - 250.0 + - 1050.0 + betrag_m_bg: + - 829.01 + - 829.01 + - 0.0 + differenz_kindergeld_kindbedarf_m: + - 0.0 + - 0.0 + - 250.0 + kindergeld_pro_kind_m: + - 250.0 + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 250.0 + - 0.0 + - 0.0 + kindersatz_m_bg: + - 410.0 + - 410.0 + - 410.0 + kosten_der_unterkunft_m_bg: + - 433.33 + - 433.33 + - 216.67 + regelbedarf_m_bg: + - 1609.01 + - 1609.01 + - 626.67 + regelsatz_m_bg: + - 1175.68 + - 1175.68 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml index 08cfbe46f9..4a7464a470 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml @@ -15,76 +15,79 @@ inputs: - 10 - 30 - 30 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - - 8 - - 7 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - - true - - true - - true - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - 0 - - 0 - - 0 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - 1 - - 1 - - 1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + - 8 + - 7 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + familie: + kind: + - false + - false + - false + - false + - true + - true + - true + - false + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - 0 + - 0 + - 0 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - 1 + - 1 + - 1 + - -1 + - -1 hh_id: - 0 - 0 @@ -105,38 +108,60 @@ inputs: - 6 - 7 - 8 - wohnen__bruttokaltmiete_m_hh: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 provided: {} outputs: + arbeitslosengeld_2: + bruttokaltmiete_m_bg: + - 555.56 + - 555.56 + - 222.22 + - 222.22 + - 555.56 + - 555.56 + - 555.56 + - 222.22 + - 222.22 + heizkosten_m_bg: + - 55.56 + - 55.56 + - 22.22 + - 22.22 + - 55.56 + - 55.56 + - 55.56 + - 22.22 + - 22.22 bg_id: - 0 - 0 @@ -147,23 +172,3 @@ outputs: - 0 - 2 - 2 - arbeitslosengeld_2__bruttokaltmiete_m_bg: - - 555.56 - - 555.56 - - 222.22 - - 222.22 - - 555.56 - - 555.56 - - 555.56 - - 222.22 - - 222.22 - arbeitslosengeld_2__heizkosten_m_bg: - - 55.56 - - 55.56 - - 22.22 - - 22.22 - - 55.56 - - 55.56 - - 55.56 - - 22.22 - - 22.22 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml index 117e493a4a..5be90561c8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml @@ -10,41 +10,44 @@ inputs: - 30 - 10 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - false + familie: + kind: + - false + - false + - true + - true + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 hh_id: - 0 - 0 @@ -55,35 +58,37 @@ inputs: - 1 - 2 - 3 - wohnen__bruttokaltmiete_m_hh: + wohnen: + bruttokaltmiete_m_hh: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + provided: {} +outputs: + arbeitslosengeld_2: + bruttokaltmiete_m_bg: - 1000.0 - 1000.0 - 1000.0 - 1000.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + heizkosten_m_bg: - 100.0 - wohnen__wohnfläche_hh: - 100.0 - 100.0 - 100.0 - - 100.0 - provided: {} -outputs: bg_id: - 0 - 0 - 0 - 0 - arbeitslosengeld_2__bruttokaltmiete_m_bg: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - arbeitslosengeld_2__heizkosten_m_bg: - - 100.0 - - 100.0 - - 100.0 - - 100.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 996c159591..cb097ea71d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -10,74 +10,80 @@ inputs: alter: - 40 - 10 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 bg_id: - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 40.0 + - 40.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 8.75 - - 8.75 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 630.56 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 410.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 175.0 - - 175.0 - arbeitslosengeld_2__regelbedarf_m: - - 805.56 - - 585.0 - arbeitslosengeld_2__regelsatz_m: - - 630.56 - - 410.0 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 8.75 + - 8.75 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + erwachsenensatz_m: + - 630.56 + - 0.0 + kindersatz_m: + - 0.0 + - 410.0 + kosten_der_unterkunft_m: + - 175.0 + - 175.0 + regelbedarf_m: + - 805.56 + - 585.0 + regelsatz_m: + - 630.56 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index d70f67ad56..62e99ab7a8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -10,71 +10,76 @@ inputs: alter: - 40 - 10 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - true + p_id_einstandspartner: + - -1 + - -1 bg_id: - 0 - 1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - true - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - - 600.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 40.0 - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 600.0 + - 600.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + wohnfläche_hh: + - 40.0 + - 40.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 10.0 - - 10.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 630.56 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 410.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 350.0 - - 350.0 - arbeitslosengeld_2__regelbedarf_m: - - 980.56 - - 760.0 - arbeitslosengeld_2__regelsatz_m: - - 630.56 - - 410.0 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + erwachsenensatz_m: + - 630.56 + - 0.0 + kindersatz_m: + - 0.0 + - 410.0 + kosten_der_unterkunft_m: + - 350.0 + - 350.0 + regelbedarf_m: + - 980.56 + - 760.0 + regelsatz_m: + - 630.56 + - 410.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index a39ffccd6e..9276a6d4c0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -11,93 +11,98 @@ inputs: - 40 - 10 - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 2 + - -1 + - 0 bg_id: - 0 - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 hh_id: - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - -1 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - -1 p_id: - 0 - 1 - 2 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 900.0 - - 900.0 - - 900.0 - wohnen__heizkosten_m_hh: - - 150.0 - - 150.0 - - 150.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 900.0 + - 900.0 + - 900.0 + heizkosten_m_hh: + - 150.0 + - 150.0 + - 150.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 506.0 - - 0.0 - - 506.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 410.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 350.0 - - 350.0 - - 350.0 - arbeitslosengeld_2__regelbedarf_m: - - 856.0 - - 760.0 - - 856.0 - arbeitslosengeld_2__regelsatz_m: - - 506.0 - - 410.0 - - 506.0 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + erwachsenensatz_m: + - 506.0 + - 0.0 + - 506.0 + kindersatz_m: + - 0.0 + - 410.0 + - 0.0 + kosten_der_unterkunft_m: + - 350.0 + - 350.0 + - 350.0 + regelbedarf_m: + - 856.0 + - 760.0 + - 856.0 + regelsatz_m: + - 506.0 + - 410.0 + - 506.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index a484c036c6..5941a2c69e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -11,93 +11,98 @@ inputs: - 40 - 10 - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - true + - false + p_id_einstandspartner: + - 2 + - -1 + - 0 bg_id: - 0 - 1 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - true - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 hh_id: - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - -1 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - -1 p_id: - 0 - 1 - 2 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 900.0 - - 900.0 - - 900.0 - wohnen__heizkosten_m_hh: - - 150.0 - - 150.0 - - 150.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 900.0 + - 900.0 + - 900.0 + heizkosten_m_hh: + - 150.0 + - 150.0 + - 150.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 provided: {} outputs: - arbeitslosengeld_2__anerkannte_warmmiete_je_qm_m: - - 10.0 - - 10.0 - - 10.0 - arbeitslosengeld_2__berechtigte_wohnfläche: - - 20.0 - - 20.0 - - 20.0 - arbeitslosengeld_2__erwachsenensatz_m: - - 506.0 - - 0.0 - - 506.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 410.0 - - 0.0 - arbeitslosengeld_2__kosten_der_unterkunft_m: - - 350.0 - - 350.0 - - 350.0 - arbeitslosengeld_2__regelbedarf_m: - - 856.0 - - 760.0 - - 856.0 - arbeitslosengeld_2__regelsatz_m: - - 506.0 - - 410.0 - - 506.0 + arbeitslosengeld_2: + anerkannte_warmmiete_je_qm_m: + - 10.0 + - 10.0 + - 10.0 + berechtigte_wohnfläche: + - 20.0 + - 20.0 + - 20.0 + erwachsenensatz_m: + - 506.0 + - 0.0 + - 506.0 + kindersatz_m: + - 0.0 + - 410.0 + - 0.0 + kosten_der_unterkunft_m: + - 350.0 + - 350.0 + - 350.0 + regelbedarf_m: + - 856.0 + - 760.0 + - 856.0 + regelsatz_m: + - 506.0 + - 410.0 + - 506.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index fe735853b8..98b835136b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -13,60 +13,63 @@ inputs: - 10 - 14 - 19 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 bg_id: - 0 - 0 - 0 - 0 - 0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__alleinerziehend: - - true - - false - - false - - false - - false - familie__kind: - - false - - true - - true - - true - - true - familie__p_id_elternteil_1: - - -1 - - 0 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + - false + - false + - false + kind: + - false + - true + - true + - true + - true + p_id_elternteil_1: + - -1 + - 0 + - 0 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 hh_id: - 0 - 0 - 0 - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 - - 0 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + - 0 + - 0 + - 0 p_id: - 0 - 1 @@ -75,21 +78,22 @@ inputs: - 4 provided: {} outputs: - arbeitslosengeld_2__erwachsenensatz_m: - - 833.24 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - - 377.0 - - 410.0 - - 491.0 - - 471.0 - arbeitslosengeld_2__regelsatz_m: - - 833.24 - - 377.0 - - 410.0 - - 491.0 - - 471.0 + arbeitslosengeld_2: + erwachsenensatz_m: + - 833.24 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kindersatz_m: + - 0.0 + - 377.0 + - 410.0 + - 491.0 + - 471.0 + regelsatz_m: + - 833.24 + - 377.0 + - 410.0 + - 491.0 + - 471.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml index b5767919d8..130646419f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml @@ -1,37 +1,41 @@ --- info: note: >- - Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives the - adult Regelsatz. + Test Regelsatz when no adult is part of Bedarfsgemeinschaft. Child receives + the adult Regelsatz. precision_atol: 0.01 source: Made up. inputs: assumed: alter: - 17 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - familie__alleinerziehend: - - false - familie__kind: - - true - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + familie: + alleinerziehend: + - false + kind: + - true + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 hh_id: - 0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + p_id_empfänger: + - -1 p_id: - 0 provided: {} outputs: - arbeitslosengeld_2__erwachsenensatz_m: - - 563.0 - arbeitslosengeld_2__kindersatz_m: - - 0.0 - arbeitslosengeld_2__regelsatz_m: - - 563.0 + arbeitslosengeld_2: + erwachsenensatz_m: + - 563.0 + kindersatz_m: + - 0.0 + regelsatz_m: + - 563.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index dc29db6e28..b4f1c89a0d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -10,96 +10,121 @@ inputs: provided: alter: - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 0 - kindergeld__betrag_m_bg: - - 0.0 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_bg: + - 0.0 + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 0 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + bezieht_rente: + - false + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 60.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 wohnort_ost: - false outputs: - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - arbeitslosengeld_2__betrag_m_bg: - - 1013.0 - arbeitslosengeld_2__kosten_der_unterkunft_m_bg: - - 450.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - arbeitslosengeld_2__regelsatz_m_bg: - - 563.0 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 0.0 + betrag_m_bg: + - 1013.0 + kosten_der_unterkunft_m_bg: + - 450.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + regelsatz_m_bg: + - 563.0 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" index fde1cdf0c4..b9a3c2cfe6 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 150.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 150.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 11 p_id: - 1 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 237.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 36.75 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 294.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 237.0 + pflege: + beitrag: + betrag_versicherter_m: + - 36.75 + rente: + beitrag: + betrag_versicherter_m: + - 294.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2001 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2001 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" index 8c298496f2..22a08bac39 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" @@ -6,40 +6,56 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 334.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - true - familie__p_id_ehepartner: - - 3 - - 2 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 334.0 + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - true + p_id_ehepartner: + - 3 + - 2 hh_id: - 2 - 2 p_id: - 2 - 3 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 + - 0.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 3605 - - 3605 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 3605 + - 3605 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" index 74e391fb2c..4907a5f0a1 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 5 p_id: - 4 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2001 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2001 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" index dc30bd01b5..5efd53ca75 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4166.666667 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4166.666667 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 8 p_id: - 5 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 133.33 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 406.25 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 133.33 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 406.25 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2475 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2475 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" index 9f11def31e..0591cf5fdb 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1666.666667 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1666.666667 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 9 p_id: - 6 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 133.33 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 162.5 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 133.33 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 162.5 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2001 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2001 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" index d773a171a4..c3435b7598 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 16 p_id: - 17 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 30.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 120.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 22.5 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 150.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 30.0 + kranken: + beitrag: + betrag_versicherter_m: + - 120.0 + pflege: + beitrag: + betrag_versicherter_m: + - 22.5 + rente: + beitrag: + betrag_versicherter_m: + - 150.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2620 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2620 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" index 6dc45b5b26..22dff328b4 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 334.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 334.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 3 p_id: - 7 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 5205 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 5205 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" index b9acb09a65..364efa819a 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" @@ -6,40 +6,56 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - true - familie__p_id_ehepartner: - - 9 - - 8 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - true + p_id_ehepartner: + - 9 + - 8 hh_id: - 6 - 6 p_id: - 8 - 9 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 + - 0.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2400 - - 2400 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 2400 + - 2400 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" index 4002a73e0f..e3192de5f9 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 15 p_id: - 16 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 30.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 120.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 22.5 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 150.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 30.0 + kranken: + beitrag: + betrag_versicherter_m: + - 120.0 + pflege: + beitrag: + betrag_versicherter_m: + - 22.5 + rente: + beitrag: + betrag_versicherter_m: + - 150.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 3196 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 3196 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" index 9956bb83f2..9de229a0fa 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 150.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2583.33 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 150.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2583.33 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 13 p_id: - 14 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 232.5 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 232.5 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 3852 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 3852 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" index 51d1dcee27..40bb61faad 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 250.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4305.56 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 250.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4305.56 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 12 p_id: - 13 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 387.5 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 387.5 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 6666 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 6666 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" index e50a0de0a4..32cb43a090 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" @@ -6,40 +6,56 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 416.666667 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8333.333333 - - 1250.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 19 - - 18 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 416.666667 + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8333.333333 + - 1250.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - false + p_id_ehepartner: + - 19 + - 18 hh_id: - 17 - 17 p_id: - 18 - 19 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 660.333333 - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 660.333333 + - 0.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 11674 - - 11674 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 11674 + - 11674 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" index 0d4b638f70..998799c1bb 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" @@ -6,40 +6,56 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 333.333333 - - 1666.666667 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 - - 10000.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 21 - - 20 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 333.333333 + - 1666.666667 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5000.0 + - 10000.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - false + p_id_ehepartner: + - 21 + - 20 hh_id: - 18 - 18 p_id: - 20 - 21 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 22560 - - 22560 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 22560 + - 22560 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" index ca8785beef..bb3099c2c4 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 334.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 334.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 4 p_id: - 11 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 10008 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 10008 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" index bd2187a2b2..847dc3e681 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" @@ -6,28 +6,44 @@ info: inputs: assumed: {} provided: - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 7 p_id: - 12 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 500.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 500.0 outputs: - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 6000 + einkommensteuer: + abzüge: + vorsorgeaufwendungen_y_sn: + - 6000 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml index d94176800c..6800af355d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 2500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 50000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 42000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 2500.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 50000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 42000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 4 p_id: - 4 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 424.75 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 9830 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 12950 - solidaritätszuschlag__betrag_y_sn: - - 564.01 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 424.75 + betrag_mit_kinderfreibetrag_y_sn: + - 9830 + betrag_ohne_kinderfreibetrag_y_sn: + - 12950 + solidaritätszuschlag: + betrag_y_sn: + - 564.01 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml index 6836010614..cf1db009a1 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 1000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 20000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 20000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 1000.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 20000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 20000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 3 p_id: - 3 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 49.75 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 2700 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 2700 - solidaritätszuschlag__betrag_y_sn: - - 151.24 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 49.75 + betrag_mit_kinderfreibetrag_y_sn: + - 2700 + betrag_ohne_kinderfreibetrag_y_sn: + - 2700 + solidaritätszuschlag: + betrag_y_sn: + - 151.24 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml index 68c4cd239d..40cfb3bc18 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml @@ -6,30 +6,34 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 1300.0 - - 500.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__gesamteinkommen_y: - - 5000.0 - - 5000.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 5000.0 - - 5000.0 - - 0.0 - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 32 - - 2 - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 1300.0 + - 500.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + gesamteinkommen_y: + - 5000.0 + - 5000.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 + - 5000.0 + - 0.0 + familie: + kind: + - false + - false + - true + p_id_ehepartner: + - 32 + - 2 + - -1 hh_id: - 2 - 2 @@ -39,19 +43,22 @@ inputs: - 32 - 123 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 49.5 - - 49.5 - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 0 - - 0 - - 0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 0 - - 0 - - 0 - solidaritätszuschlag__betrag_y_sn: - - 2.72 - - 2.72 - - 0.0 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 49.5 + - 49.5 + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 0 + - 0 + - 0 + betrag_ohne_kinderfreibetrag_y_sn: + - 0 + - 0 + - 0 + solidaritätszuschlag: + betrag_y_sn: + - 2.72 + - 2.72 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml index bc67f8585d..a2e08770c7 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml @@ -6,60 +6,66 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 + - 0.0 + familie: + kind: + - false + - false + - true + p_id_ehepartner: + - 6 + - 5 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 5 + p_id_elternteil_2: + - -1 + - -1 + - 6 hh_id: - 4 - 4 - 4 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true p_id: - 5 - 6 - 7 outputs: - einkommensteuer__anzahl_kindergeld_ansprüche_1: - - 1 - - 0 - - 0 - einkommensteuer__anzahl_kindergeld_ansprüche_2: - - 0 - - 1 - - 0 - einkommensteuer__relevantes_kindergeld_m: - - 97 - - 97 - - 0 + einkommensteuer: + anzahl_kindergeld_ansprüche_1: + - 1 + - 0 + - 0 + anzahl_kindergeld_ansprüche_2: + - 0 + - 1 + - 0 + relevantes_kindergeld_m: + - 97 + - 97 + - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml index e6f738b476..7fc5ca487b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 500.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 5000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 5000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 500.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 5000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 1 p_id: - 1 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 0 - solidaritätszuschlag__betrag_y_sn: - - 0.0 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 0 + betrag_ohne_kinderfreibetrag_y_sn: + - 0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml index da705f6cba..626253e107 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 200000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 180000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 200000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 180000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 5 p_id: - 5 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 66978 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 75378 - solidaritätszuschlag__betrag_y_sn: - - 3683.79 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 66978 + betrag_ohne_kinderfreibetrag_y_sn: + - 75378 + solidaritätszuschlag: + betrag_y_sn: + - 3683.79 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml index dc8e9a27f6..5fdc379a79 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 36000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 36000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 36000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 6 p_id: - 6 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 6531 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 6531 - solidaritätszuschlag__betrag_y_sn: - - 0.0 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 6531 + betrag_ohne_kinderfreibetrag_y_sn: + - 6531 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml index 52b42a8d71..9795727d79 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml @@ -6,60 +6,66 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 200000.0 - - 200000.0 - - 0.0 - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 6 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 + - 0.0 + familie: + kind: + - false + - false + - true + p_id_ehepartner: + - 6 + - 5 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 5 + p_id_elternteil_2: + - -1 + - -1 + - 6 hh_id: - 4 - 4 - 4 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true p_id: - 5 - 6 - 7 outputs: - einkommensteuer__anzahl_kindergeld_ansprüche_1: - - 1 - - 0 - - 0 - einkommensteuer__anzahl_kindergeld_ansprüche_2: - - 0 - - 1 - - 0 - einkommensteuer__relevantes_kindergeld_m: - - 125 - - 125 - - 0 + einkommensteuer: + anzahl_kindergeld_ansprüche_1: + - 1 + - 0 + - 0 + anzahl_kindergeld_ansprüche_2: + - 0 + - 1 + - 0 + relevantes_kindergeld_m: + - 125 + - 125 + - 0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml index 107a9ea853..0336fc23a8 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml @@ -6,24 +6,28 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 200000.0 - - 200000.0 - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 4 - - 3 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + gesamteinkommen_y: + - 200000.0 + - 200000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 200000.0 + - 200000.0 + familie: + kind: + - false + - false + p_id_ehepartner: + - 4 + - 3 hh_id: - 3 - 3 @@ -31,18 +35,21 @@ inputs: - 3 - 4 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__anzahl_personen_sn: - - 2 - - 2 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 62726.0 - - 62726.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 62726.0 - - 62726.0 - solidaritätszuschlag__betrag_y_sn: - - 3149.45 - - 3149.45 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + anzahl_personen_sn: + - 2 + - 2 + betrag_mit_kinderfreibetrag_y_sn: + - 62726.0 + - 62726.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 62726.0 + - 62726.0 + solidaritätszuschlag: + betrag_y_sn: + - 3149.45 + - 3149.45 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml index 897eb140ef..5294702384 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 100000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 100000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 100000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 100000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 2 p_id: - 2 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 31363.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 31363.0 - solidaritätszuschlag__betrag_y_sn: - - 1574.72 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 31363.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 31363.0 + solidaritätszuschlag: + betrag_y_sn: + - 1574.72 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml index 1c6d4c4c92..8898234263 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml @@ -6,28 +6,35 @@ info: inputs: assumed: {} provided: - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 50000.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 50000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 50000.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 50000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 1 p_id: - 1 outputs: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 10872.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 10872.0 - solidaritätszuschlag__betrag_y_sn: - - 0.0 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 10872.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 10872.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" index 1efba97e08..ae30e15d5a 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" @@ -6,51 +6,54 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 18000.0 - - 18000.0 - - 0.0 - - 0.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 20000.0 - - 20000.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - einkommensteuer__gesamteinkommen_y: - - 150000.0 - - 150000.0 - - 10.0 - - 10.0 - einkommensteuer__relevantes_kindergeld_m: - - 194.0 - - 194.0 - - 0.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 142992.0 - - 142992.0 - - 10.0 - - 10.0 - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 6 - - 5 - - -1 - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 18000.0 + - 18000.0 + - 0.0 + - 0.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 20000.0 + - 20000.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + gesamteinkommen_y: + - 150000.0 + - 150000.0 + - 10.0 + - 10.0 + relevantes_kindergeld_m: + - 194.0 + - 194.0 + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 142992.0 + - 142992.0 + - 10.0 + - 10.0 + familie: + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 6 + - 5 + - -1 + - -1 hh_id: - 4 - 4 @@ -62,13 +65,14 @@ inputs: - 7 - 8 outputs: - einkommensteuer__betrag_y_sn: - - 20000.0 - - 20000.0 - - 0.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_y_sn: - - 150000.0 - - 150000.0 - - 10.0 - - 10.0 + einkommensteuer: + betrag_y_sn: + - 20000.0 + - 20000.0 + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_y_sn: + - 150000.0 + - 150000.0 + - 10.0 + - 10.0 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" index 9199016ea0..c0e6ef536c 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" @@ -6,30 +6,34 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 3000.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 5000.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 5000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__gesamteinkommen_y: - - 5000.0 - einkommensteuer__relevantes_kindergeld_m: - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 5000.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 3000.0 + betrag_mit_kinderfreibetrag_y_sn: + - 5000.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 5000.0 + gemeinsam_veranlagt: + - false + gesamteinkommen_y: + - 5000.0 + relevantes_kindergeld_m: + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5000.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 2 p_id: - 4 outputs: - einkommensteuer__betrag_y_sn: - - 5000 - einkommensteuer__zu_versteuerndes_einkommen_y_sn: - - 5000 + einkommensteuer: + betrag_y_sn: + - 5000 + zu_versteuerndes_einkommen_y_sn: + - 5000 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" index d9783dae6d..c95c344093 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -6,42 +6,45 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 7000.0 - - 7000.0 - - 0.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 10000.0 - - 10000.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__gesamteinkommen_y: - - 10000.0 - - 10000.0 - - 0.0 - einkommensteuer__relevantes_kindergeld_m: - - 97.0 - - 97.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 92752.0 - - 92752.0 - - 0.0 - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 2 - - 1 - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 7000.0 + - 7000.0 + - 0.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 10000.0 + - 10000.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + gesamteinkommen_y: + - 10000.0 + - 10000.0 + - 0.0 + relevantes_kindergeld_m: + - 97.0 + - 97.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 92752.0 + - 92752.0 + - 0.0 + familie: + kind: + - false + - false + - true + p_id_ehepartner: + - 2 + - 1 + - -1 hh_id: - 1 - 1 @@ -51,11 +54,12 @@ inputs: - 2 - 3 outputs: - einkommensteuer__betrag_y_sn: - - 9328 - - 9328 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_y_sn: - - 92752 - - 92752 - - 0 + einkommensteuer: + betrag_y_sn: + - 9328 + - 9328 + - 0 + zu_versteuerndes_einkommen_y_sn: + - 92752 + - 92752 + - 0 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" index 52cf9746ac..ee79bf875a 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -6,42 +6,45 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 10000.0 - - 10000.0 - - 0.0 - einkommensteuer__betrag_ohne_kinderfreibetrag_y_sn: - - 12000.0 - - 12000.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__gesamteinkommen_y: - - 120000.0 - - 120000.0 - - 0.0 - einkommensteuer__relevantes_kindergeld_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 109740.0 - - 109740.0 - - 0.0 - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 10 - - 9 - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 10000.0 + - 10000.0 + - 0.0 + betrag_ohne_kinderfreibetrag_y_sn: + - 12000.0 + - 12000.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + gesamteinkommen_y: + - 120000.0 + - 120000.0 + - 0.0 + relevantes_kindergeld_m: + - 0.0 + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 109740.0 + - 109740.0 + - 0.0 + familie: + kind: + - false + - false + - true + p_id_ehepartner: + - 10 + - 9 + - -1 hh_id: - 5 - 5 @@ -51,11 +54,12 @@ inputs: - 10 - 11 outputs: - einkommensteuer__betrag_y_sn: - - 19344.0 - - 19344.0 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_y_sn: - - 109740.0 - - 109740.0 - - 0.0 + einkommensteuer: + betrag_y_sn: + - 19344.0 + - 19344.0 + - 0.0 + zu_versteuerndes_einkommen_y_sn: + - 109740.0 + - 109740.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index c28df453a1..09fb41c423 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 0.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1970 hh_id: - 1 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 1 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2035 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2035 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 0 + gesamteinkommen_y: + - 0.0 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 84aafef3c6..71867f6946 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 1916.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 1916.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1970 hh_id: - 2 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 2 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2035 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2035 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 6280 - einkommensteuer__gesamteinkommen_y: - - 4328.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 4328.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 6280 + gesamteinkommen_y: + - 4328.0 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 4328.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index d63cc2a5bc..cea2a5d5d0 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 1927.8 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 1927.8 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1970 hh_id: - 3 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 3 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2035 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2035 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 9880 - einkommensteuer__gesamteinkommen_y: - - 7916.2 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 7916.2 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 9880 + gesamteinkommen_y: + - 7916.2 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 7916.2 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 20b7086107..036ef3dae2 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2334.2 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 2334.2 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1970 hh_id: - 4 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 4 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2035 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2035 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 13480 - einkommensteuer__gesamteinkommen_y: - - 11109.8 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 11109.8 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 13480 + gesamteinkommen_y: + - 11109.8 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 11109.8 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 58889699b4..c3b831575e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2554.02 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 2554.02 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1970 hh_id: - 5 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 5 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2035 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2035 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 17080 - einkommensteuer__gesamteinkommen_y: - - 14489.98 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 14489.98 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 17080 + gesamteinkommen_y: + - 14489.98 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 14489.98 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index fdae1f7274..0f21404f35 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 5000.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 5000.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1975 hh_id: - 16 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 22 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2040 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2040 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 35000 - einkommensteuer__gesamteinkommen_y: - - 29964.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 29964.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 35000 + gesamteinkommen_y: + - 29964.0 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 29964.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index d8adbfbe88..220257fd24 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -15,112 +15,134 @@ inputs: behinderungsgrad: - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 7700.0 - - 7700.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 2000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 24 - - 23 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + vorsorgeaufwendungen_y_sn: + - 7700.0 + - 7700.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 2000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 24 + - 23 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1975 - 1975 hh_id: - 17 - 17 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 23 - 24 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2040 - - 2040 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + pflege: + beitrag: + hat_kinder: + - false + - false + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2040 + - 2040 + private_rente_betrag_m: + - 0.0 + - 0.0 wohnort_ost: - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 35000 - - 23000 - einkommensteuer__gesamteinkommen_y: - - 50228.0 - - 50228.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 50228.0 - - 50228.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + - 0 + altersfreibetrag_y: + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 35000 + - 23000 + gesamteinkommen_y: + - 50228.0 + - 50228.0 + kinderfreibetrag_y_sn: + - 0 + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 50228.0 + - 50228.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index f4359c774e..dfb023fbcc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -15,112 +15,134 @@ inputs: behinderungsgrad: - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 10359.0 - - 10359.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 2500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 26 - - 25 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + vorsorgeaufwendungen_y_sn: + - 10359.0 + - 10359.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 2500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 26 + - 25 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1980 - 1982 hh_id: - 18 - 18 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 25 - 26 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2045 - - 2047 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2045 + - 2047 + private_rente_betrag_m: + - 0.0 + - 0.0 wohnort_ost: - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 35000 - - 29000 - einkommensteuer__gesamteinkommen_y: - - 53569.0 - - 53569.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 53569.0 - - 53569.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + - 0 + altersfreibetrag_y: + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 35000 + - 29000 + gesamteinkommen_y: + - 53569.0 + - 53569.0 + kinderfreibetrag_y_sn: + - 0 + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 53569.0 + - 53569.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index 24cdde07d7..433c130ca9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 2547.22 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 2547.22 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 10 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 10 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 13400 - einkommensteuer__gesamteinkommen_y: - - 10816.78 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 10816.78 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 13400 + gesamteinkommen_y: + - 10816.78 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 10816.78 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index 854996bd5f..7c29729539 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 3105.28 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 3105.28 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 11 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 11 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 17000 - einkommensteuer__gesamteinkommen_y: - - 13858.72 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 13858.72 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 17000 + gesamteinkommen_y: + - 13858.72 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 13858.72 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index d150afd938..4b4afd88bb 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 5917.6 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 5917.6 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 12 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 12 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 59000 - einkommensteuer__gesamteinkommen_y: - - 53046.4 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 53046.4 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 59000 + gesamteinkommen_y: + - 53046.4 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 53046.4 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index 1b98f2b77b..2a5420fe21 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 0.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 7 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 7 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 0 + gesamteinkommen_y: + - 0.0 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index 059f54b8a3..1c976c5526 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 990.74 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 990.74 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 8 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 8 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 6200 - einkommensteuer__gesamteinkommen_y: - - 5173.26 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 5173.26 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 6200 + gesamteinkommen_y: + - 5173.26 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 5173.26 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index 6948ad2bf6..ae1fda64c3 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -12,76 +12,98 @@ inputs: - 40.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 1910.41 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 100.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__gemeinsam_veranlagt: - - false - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + vorsorgeaufwendungen_y_sn: + - 1910.41 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 100.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1978 hh_id: - 9 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 9 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2043 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + jahr_renteneintritt: + - 2043 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 9800 - einkommensteuer__gesamteinkommen_y: - - 7853.59 - einkommensteuer__kinderfreibetrag_y_sn: - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 7853.59 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + altersfreibetrag_y: + - 0 + pauschbetrag_behinderung_y: + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 9800 + gesamteinkommen_y: + - 7853.59 + kinderfreibetrag_y_sn: + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 7853.59 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index c8876a73e8..fa392a7e25 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -15,112 +15,134 @@ inputs: behinderungsgrad: - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 3119.94 - - 3119.94 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - false - - false - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 13 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + vorsorgeaufwendungen_y_sn: + - 3119.94 + - 3119.94 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 13 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1984 - 2014 hh_id: - 13 - 13 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 13 + kindergeld: + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 13 p_id: - 13 - 14 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2050 - - 2070 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2050 + - 2070 + private_rente_betrag_m: + - 0.0 + - 0.0 wohnort_ost: - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 1908 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 17000 - - 0 - einkommensteuer__gesamteinkommen_y: - - 11936.06 - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 3810 - - 0.0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 8126.06 - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 1908 + - 0 + altersfreibetrag_y: + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 17000 + - 0 + gesamteinkommen_y: + - 11936.06 + - 0.0 + kinderfreibetrag_y_sn: + - 3810 + - 0.0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 8126.06 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 435024e7b5..fe0997979b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -21,96 +21,107 @@ inputs: - 0 - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 10901.0 - - 10901.0 - - 10901.0 - - 10901.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 16 - - 15 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 15 - - 15 - familie__p_id_elternteil_2: - - -1 - - -1 - - 16 - - 16 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + - -1 + - -1 + vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 10901.0 + - 10901.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 16 + - 15 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 15 + - 15 + p_id_elternteil_2: + - -1 + - -1 + - 16 + - 16 geburtsjahr: - 1975 - 1976 @@ -121,84 +132,95 @@ inputs: - 14 - 14 - 14 - kindergeld__in_ausbildung: - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 15 - - 15 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 15 + - 15 p_id: - 15 - 16 - 17 - 18 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2037 - - 2038 - - 2074 - - 2072 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnort_ost: - false - false - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 41000 - - 23000 - - 0 - - 0 - einkommensteuer__gesamteinkommen_y: - - 53027.0 - - 53027.0 - - 0.0 - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 15624 - - 15624 - - 0 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 37403.0 - - 37403.0 - - 0.0 - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 41000 + - 23000 + - 0 + - 0 + gesamteinkommen_y: + - 53027.0 + - 53027.0 + - 0.0 + - 0.0 + kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 37403.0 + - 37403.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index 2811bfa849..ab0dd1a247 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -21,96 +21,107 @@ inputs: - 0 - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - - 80.0 - - 45.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - - 27 - - 27 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 10901.0 - - 10901.0 - - 10901.0 - - 10901.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 28 - - 27 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 27 - - 27 - familie__p_id_elternteil_2: - - -1 - - -1 - - 28 - - 28 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + - 80.0 + - 45.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + - 27 + - 27 + vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 10901.0 + - 10901.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 28 + - 27 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 27 + - 27 + p_id_elternteil_2: + - -1 + - -1 + - 28 + - 28 geburtsjahr: - 1975 - 1976 @@ -121,84 +132,95 @@ inputs: - 19 - 19 - 19 - kindergeld__in_ausbildung: - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 27 - - 27 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 27 + - 27 p_id: - 27 - 28 - 29 - 30 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2037 - - 2038 - - 2074 - - 2072 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnort_ost: - false - false - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 41000 - - 23000 - - 0 - - 0 - einkommensteuer__gesamteinkommen_y: - - 52099.0 - - 52099.0 - - 0.0 - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 15624 - - 15624 - - 0 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 36475.0 - - 36475.0 - - 0.0 - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 41000 + - 23000 + - 0 + - 0 + gesamteinkommen_y: + - 52099.0 + - 52099.0 + - 0.0 + - 0.0 + kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36475.0 + - 36475.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 86706fe5e9..4ae34a4360 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -21,96 +21,107 @@ inputs: - 0 - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - - 62.5 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - - 31 - - -1 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__vorsorgeaufwendungen_y_sn: - - 10901.0 - - 10901.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3500.0 - - 2000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - - false - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 32 - - 31 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 31 - - 31 - familie__p_id_elternteil_2: - - -1 - - -1 - - 32 - - 32 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + - 62.5 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + - 31 + - -1 + vorsorgeaufwendungen_y_sn: + - 10901.0 + - 10901.0 + - 0.0 + - 0.0 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3500.0 + - 2000.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + - false + - false + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 32 + - 31 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 31 + - 31 + p_id_elternteil_2: + - -1 + - -1 + - 32 + - 32 geburtsjahr: - 1975 - 1976 @@ -121,84 +132,95 @@ inputs: - 20 - 20 - 20 - kindergeld__in_ausbildung: - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 31 - - 31 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 31 + - 31 p_id: - 31 - 32 - 33 - 34 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2037 - - 2038 - - 2074 - - 2072 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + jahr_renteneintritt: + - 2037 + - 2038 + - 2074 + - 2072 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 wohnort_ost: - false - false - false - false outputs: - einkommensteuer__abzüge__alleinerziehend_betrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__altersfreibetrag_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__abzüge__pauschbetrag_behinderung_y: - - 0 - - 0 - - 0 - - 0 - einkommensteuer__einkünfte__gesamtbetrag_der_einkünfte_y: - - 41000 - - 23000 - - 0 - - 0 - einkommensteuer__gesamteinkommen_y: - - 52599.0 - - 52599.0 - - 0.0 - - 0.0 - einkommensteuer__kinderfreibetrag_y_sn: - - 15624 - - 15624 - - 0 - - 0 - einkommensteuer__zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - - 36975.0 - - 36975.0 - - 0.0 - - 0.0 + einkommensteuer: + abzüge: + alleinerziehend_betrag_y: + - 0 + - 0 + - 0 + - 0 + altersfreibetrag_y: + - 0 + - 0 + - 0 + - 0 + pauschbetrag_behinderung_y: + - 0 + - 0 + - 0 + - 0 + einkünfte: + gesamtbetrag_der_einkünfte_y: + - 41000 + - 23000 + - 0 + - 0 + gesamteinkommen_y: + - 52599.0 + - 52599.0 + - 0.0 + - 0.0 + kinderfreibetrag_y_sn: + - 15624 + - 15624 + - 0 + - 0 + zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: + - 36975.0 + - 36975.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index c9660f9386..190d6e0095 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -10,34 +10,40 @@ inputs: - 43 alter_monate: - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 22.5 - einkommensteuer__betrag_y_sn: - - 218.96 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1800.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1800.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 18260.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 218.96 + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1800.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - false + nettoeinkommen_vorjahr_m: + - 1800.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 18260.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1974 geburtsmonat: @@ -46,26 +52,33 @@ inputs: - 3 hh_id: - 2 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 42 - solidaritätszuschlag__betrag_y_sn: - - 12.04 - sozialversicherung__beiträge_versicherter_m: - - 378.0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false + solidaritätszuschlag: + betrag_y_sn: + - 12.04 + sozialversicherung: + beiträge_versicherter_m: + - 378.0 + pflege: + beitrag: + hat_kinder: + - false wohnort_ost: - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - elterngeld__betrag_m: - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + betrag_m: + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 7d821b47fe..d19e56f5f2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -10,32 +10,38 @@ inputs: - 43 alter_monate: - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - false + nettoeinkommen_vorjahr_m: + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1972 geburtsmonat: @@ -44,22 +50,28 @@ inputs: - 1 hh_id: - 1 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 23 - sozialversicherung__pflege__beitrag__hat_kinder: - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true wohnort_ost: - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - elterngeld__betrag_m: - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + betrag_m: + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index 7df4400283..24c053bbf2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 3.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1800.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 18260.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 42 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - true + - false + nettoeinkommen_vorjahr_m: + - 1800.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 18260.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 42 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1974 - 2017 @@ -63,31 +69,37 @@ inputs: hh_id: - 2 - 2 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 42 - 43 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 1105.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 1105.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 9077a6aa9d..b872a4d948 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - 55 + arbeitslosengeld_2: + p_id_einstandspartner: + - 56 + - 55 arbeitsstunden_w: - 9.0 - 30.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - - 3400.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 900.0 - - 3600.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 7406.0 - - 39806.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 56 - - 55 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + - 3400.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - false + - false + nettoeinkommen_vorjahr_m: + - 900.0 + - 3600.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 7406.0 + - 39806.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 56 + - 55 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1976 - 1976 @@ -63,31 +69,37 @@ inputs: hh_id: - 3 - 3 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 55 - 56 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index e8ab7b3f4a..b36618d0aa 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 33.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - false - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - - 3400.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 37406.0 - familie__alleinerziehend: - - false - - true - familie__kind: - - true - - false - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - 57 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - false + - true + nettoeinkommen_vorjahr_m: + - 0.0 + - 3400.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 37406.0 + familie: + alleinerziehend: + - false + - true + kind: + - true + - false + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - 57 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 2017 - 1976 @@ -63,31 +69,37 @@ inputs: hh_id: - 4 - 4 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 59 - 57 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + - true wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 4f4c2124df..6330cb6ad1 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -10,32 +10,38 @@ inputs: - 43 alter_monate: - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 10.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 900.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 7406.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - false + nettoeinkommen_vorjahr_m: + - 900.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 7406.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1980 geburtsmonat: @@ -44,22 +50,28 @@ inputs: - 11 hh_id: - 6 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 19 - sozialversicherung__pflege__beitrag__hat_kinder: - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true wohnort_ost: - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - elterngeld__betrag_m: - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + betrag_m: + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index 0f3ba5342a..5c12675352 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - true + - false + nettoeinkommen_vorjahr_m: + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 23 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1972 - 2018 @@ -63,31 +69,37 @@ inputs: hh_id: - 1 - 1 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 23 - 18 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 300.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 300.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index f9bb92630d..9e656d8d5a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 + arbeitslosengeld_2: + p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 900.0 - - 0.0 - - 3400.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 5760.0 - - 0.0 - - 35760.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 900.0 + - 0.0 + - 3400.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 5760.0 + - 0.0 + - 35760.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 56 + - -1 + - 55 + p_id_elternteil_1: + - -1 + - 55 + - -1 + p_id_elternteil_2: + - -1 + - 56 + - -1 geburtsjahr: - 1976 - 2018 @@ -82,40 +88,46 @@ inputs: - 3 - 3 - 3 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 55 - 50 - 56 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__betrag_m: - - 648.0 - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + betrag_m: + - 648.0 + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index ee6c6ab70e..7e221cb198 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 3600.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 38160.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 58 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - true + - false + nettoeinkommen_vorjahr_m: + - 3600.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 38160.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 58 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1978 - 2018 @@ -63,31 +69,37 @@ inputs: hh_id: - 5 - 5 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 58 - 60 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 1800.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 1800.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 27e8372727..76a224c6ec 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -14,58 +14,64 @@ inputs: - 24 - 0 - 444 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 2 - elterngeld__claimed: - - false - - false - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - - 0.0 - - 900.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 0.0 - - 5760.0 - familie__alleinerziehend: - - false - - false - - true - familie__kind: - - true - - true - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - 19 - - 19 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 2 + claimed: + - false + - false + - true + nettoeinkommen_vorjahr_m: + - 0.0 + - 0.0 + - 900.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 0.0 + - 5760.0 + familie: + alleinerziehend: + - false + - false + - true + kind: + - true + - true + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - 19 + - 19 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 2017 - 2018 @@ -82,44 +88,50 @@ inputs: - 6 - 6 - 6 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 20 - 21 - 19 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__basisbetrag_m: - - 0.0 - - 0.0 - - 648.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 723.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - true - - true - - true - elterngeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + basisbetrag_m: + - 0.0 + - 0.0 + - 648.0 + betrag_m: + - 0.0 + - 0.0 + - 723.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - true + - true + - true + grundsätzlich_anspruchsberechtigt: + - false + - false + - true diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index b16c022bd2..fa942b10f2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - 72 - - 71 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 72 + - 71 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1800.0 - - 1800.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 16560.0 - - 16560.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 72 - - 71 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 71 - familie__p_id_elternteil_2: - - -1 - - -1 - - 72 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - true + - false + nettoeinkommen_vorjahr_m: + - 1800.0 + - 1800.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 16560.0 + - 16560.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 72 + - 71 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 71 + p_id_elternteil_2: + - -1 + - -1 + - 72 geburtsjahr: - 1976 - 1976 @@ -82,40 +88,46 @@ inputs: - 7 - 7 - 7 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 71 - 72 - 73 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__betrag_m: - - 1170.0 - - 1170.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + betrag_m: + - 1170.0 + - 1170.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index dcc4f68810..06396a81d9 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -16,71 +16,77 @@ inputs: - 0 - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - - 2 - elterngeld__claimed: - - false - - false - - false - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - - 0.0 - - 0.0 - - 900.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 5760.0 - familie__alleinerziehend: - - false - - false - - false - - true - familie__kind: - - true - - true - - true - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - 28 - - 28 - - 28 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + - 2 + claimed: + - false + - false + - false + - true + nettoeinkommen_vorjahr_m: + - 0.0 + - 0.0 + - 0.0 + - 900.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 5760.0 + familie: + alleinerziehend: + - false + - false + - false + - true + kind: + - true + - true + - true + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - 28 + - 28 + - 28 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 2017 - 2018 @@ -101,49 +107,55 @@ inputs: - 8 - 8 - 8 - kindergeld__in_ausbildung: - - false - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 + - 1 p_id: - 25 - 26 - 27 - 28 - sozialversicherung__pflege__beitrag__hat_kinder: + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + - false + - false + - true + wohnort_ost: - false - false - false - - true - wohnort_ost: - false +outputs: + elterngeld: + anzahl_mehrlinge_fg: + - 1 + - 1 + - 1 + - 1 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 1023.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - true + - true + - true + - true + grundsätzlich_anspruchsberechtigt: - false - false - false -outputs: - elterngeld__anzahl_mehrlinge_fg: - - 1 - - 1 - - 1 - - 1 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 1023.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - true - - true - - true - - true - elterngeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true + - true diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index 49d5f535a6..6538c73b55 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 + arbeitslosengeld_2: + p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 200.0 - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1000.0 - - 0.0 - - 3400.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 5760.0 - - 0.0 - - 35760.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 200.0 + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 1000.0 + - 0.0 + - 3400.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 5760.0 + - 0.0 + - 35760.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 56 + - -1 + - 55 + p_id_elternteil_1: + - -1 + - 55 + - -1 + p_id_elternteil_2: + - -1 + - 56 + - -1 geburtsjahr: - 1976 - 2018 @@ -82,18 +88,20 @@ inputs: - 3 - 3 - 3 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__betrag_m: - - 0.0 - - 0.0 - - 0.0 - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + steuerklasse: + - 1 + - 1 + - 1 p_id: - 55 - 50 @@ -102,28 +110,32 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__betrag_m: - - 536.0 - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + betrag_m: + - 536.0 + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index ee6c6ab70e..7e221cb198 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 3600.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 38160.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 58 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - true + - false + nettoeinkommen_vorjahr_m: + - 3600.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 38160.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 58 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1978 - 2018 @@ -63,31 +69,37 @@ inputs: hh_id: - 5 - 5 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 58 - 60 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 1800.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 1800.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index 0f3ba5342a..5c12675352 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -12,45 +12,51 @@ inputs: alter_monate: - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - elterngeld__claimed: - - true - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 0.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + claimed: + - true + - false + nettoeinkommen_vorjahr_m: + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 23 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1972 - 2018 @@ -63,31 +69,37 @@ inputs: hh_id: - 1 - 1 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 23 - 18 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false wohnort_ost: - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - elterngeld__betrag_m: - - 300.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + betrag_m: + - 300.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml index 2648e9d91b..b17430bb34 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml @@ -9,46 +9,57 @@ inputs: alter: - 43 - 43 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 10.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 200.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 200.0 + gemeinsam_veranlagt: + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 p_id: - 0 - 1 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + - false wohnort_ost: - false - false outputs: - elterngeld__nettoeinkommen_approximation_m: - - 790.0 - - 158.0 + elterngeld: + nettoeinkommen_approximation_m: + - 790.0 + - 158.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index a5dccaf028..f0bb7df6fc 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 + arbeitslosengeld_2: + p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1000.0 - - 0.0 - - 3400.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 5760.0 - - 0.0 - - 35760.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 1000.0 + - 0.0 + - 3400.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 5760.0 + - 0.0 + - 35760.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 56 + - -1 + - 55 + p_id_elternteil_1: + - -1 + - 55 + - -1 + p_id_elternteil_2: + - -1 + - 56 + - -1 geburtsjahr: - 1976 - 2018 @@ -82,40 +88,46 @@ inputs: - 3 - 3 - 3 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 55 - 50 - 56 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__betrag_m: - - 670.0 - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + betrag_m: + - 670.0 + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 63f0a4814b..999882a64a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 0 - 516 - arbeitslosengeld_2__p_id_einstandspartner: - - 56 - - -1 - - 55 + arbeitslosengeld_2: + p_id_einstandspartner: + - 56 + - -1 + - 55 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 790.0 - - 0.0 - - 3400.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 5760.0 - - 0.0 - - 35760.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 56 - - -1 - - 55 - familie__p_id_elternteil_1: - - -1 - - 55 - - -1 - familie__p_id_elternteil_2: - - -1 - - 56 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 790.0 + - 0.0 + - 3400.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 5760.0 + - 0.0 + - 35760.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 56 + - -1 + - 55 + p_id_elternteil_1: + - -1 + - 55 + - -1 + p_id_elternteil_2: + - -1 + - 56 + - -1 geburtsjahr: - 1976 - 2018 @@ -82,40 +88,46 @@ inputs: - 3 - 3 - 3 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 55 - 50 - 56 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__anzahl_mehrlinge_fg: - - 0 - - 0 - - 0 - elterngeld__betrag_m: - - 612.25 - - 0.0 - - 0.0 - elterngeld__geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - - false - - false - - false - elterngeld__grundsätzlich_anspruchsberechtigt: - - true - - false - - false + elterngeld: + anzahl_mehrlinge_fg: + - 0 + - 0 + - 0 + betrag_m: + - 612.25 + - 0.0 + - 0.0 + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: + - false + - false + - false + grundsätzlich_anspruchsberechtigt: + - true + - false + - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml index 044a1433c0..9a44db463a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml @@ -10,58 +10,64 @@ inputs: - 43 - 0 - 43 - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - -1 - - 0 + arbeitslosengeld_2: + p_id_einstandspartner: + - 2 + - -1 + - 0 arbeitsstunden_w: - 0.0 - 0.0 - 39.83 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 3600.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 1220.0 - - 0.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_ehepartner: - - 2 - - -1 - - 0 - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 3600.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 1220.0 + - 0.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - true + - false + p_id_ehepartner: + - 2 + - -1 + - 0 + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 geburtsjahr: - 1976 - 2018 @@ -78,28 +84,34 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 p_id: - 0 - 1 - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false - - true + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false + - true wohnort_ost: - false - false - false outputs: - elterngeld__lohnersatzanteil: - - 0.661 - - 0.67 - - 0.67 + elterngeld: + lohnersatzanteil: + - 0.661 + - 0.67 + - 0.67 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index c760415d4c..b0d0b31e99 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 1 + - 0 + - -1 arbeitsstunden_w: - 0.0 - 39.83 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 190000.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 2000.0 - - 13000.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 100000.0 - - 100000.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 190000.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 2000.0 + - 13000.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 100000.0 + - 100000.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 1 + - 0 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1976 - 1976 @@ -82,18 +88,20 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__betrag_m: - - 0.0 - - 0.0 - - 0.0 - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + steuerklasse: + - 1 + - 1 + - 1 p_id: - 0 - 1 @@ -102,16 +110,20 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false wohnort_ost: - false - false - false outputs: - elterngeld__betrag_m: - - 1300.0 - - 0.0 - - 0.0 + elterngeld: + betrag_m: + - 1300.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index a4933bd6d2..e4b653e91b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -14,58 +14,64 @@ inputs: - 516 - 516 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 1 + - 0 + - -1 arbeitsstunden_w: - 0.0 - 39.83 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 190000.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - false - - false - elterngeld__nettoeinkommen_vorjahr_m: - - 2000.0 - - 13000.0 - - 0.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 2000000.0 - - 2000000.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 190000.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + claimed: + - true + - false + - false + nettoeinkommen_vorjahr_m: + - 2000.0 + - 13000.0 + - 0.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 2000000.0 + - 2000000.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 1 + - 0 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1976 - 1976 @@ -82,18 +88,20 @@ inputs: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - false - lohnsteuer__betrag_m: - - 0.0 - - 0.0 - - 0.0 - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + lohnsteuer: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + steuerklasse: + - 1 + - 1 + - 1 p_id: - 0 - 1 @@ -102,16 +110,20 @@ inputs: - 0.0 - 0.0 - 0.0 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false wohnort_ost: - false - false - false outputs: - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 + elterngeld: + betrag_m: + - 0.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml index b3c2eeae35..c0f4a6d40d 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml @@ -11,39 +11,46 @@ inputs: alter_monate: - 360 - 12 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - 26 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 26 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1500.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1500.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - true + p_id_empfänger: + - -1 + - 26 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 26 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1975 - 2004 @@ -56,26 +63,31 @@ inputs: hh_id: - 9 - 9 - kindergeld__in_ausbildung: - - false - - false + kindergeld: + in_ausbildung: + - false + - false p_id: - 26 - 27 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 450.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 12980.8 - erziehungsgeld__betrag_m: - - 450.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 13500 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 450.0 + anzurechnendes_einkommen_y: + - 0 + - 12980.8 + betrag_m: + - 450.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml index 1b81826104..d1d5c041d2 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml @@ -11,39 +11,46 @@ inputs: alter_monate: - 300 - 12 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 29.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1700.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1700.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - erziehungsgeld__p_id_empfänger: - - -1 - - 6 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1700.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1700.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + p_id_empfänger: + - -1 + - 6 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 6 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1980 - 2004 @@ -56,26 +63,31 @@ inputs: hh_id: - 3 - 3 - kindergeld__in_ausbildung: - - false - - false + kindergeld: + in_ausbildung: + - false + - false p_id: - 6 - 7 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 235.8 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 14804.8 - erziehungsgeld__betrag_m: - - 235.8 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 13500 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 235.8 + anzurechnendes_einkommen_y: + - 0 + - 14804.8 + betrag_m: + - 235.8 + - 0.0 + einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml index 9481dc1fa1..de10484237 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml @@ -11,39 +11,46 @@ inputs: alter_monate: - 360 - 12 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - erziehungsgeld__p_id_empfänger: - - -1 - - 1 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1500.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1500.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + p_id_empfänger: + - -1 + - 1 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1975 - 2004 @@ -56,26 +63,31 @@ inputs: hh_id: - 1 - 1 - kindergeld__in_ausbildung: - - false - - false + kindergeld: + in_ausbildung: + - false + - false p_id: - 1 - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 300.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 12980.8 - erziehungsgeld__betrag_m: - - 300.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 13500 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 300.0 + anzurechnendes_einkommen_y: + - 0 + - 12980.8 + betrag_m: + - 300.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml index 2492107065..b9ce2b833f 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml @@ -13,50 +13,57 @@ inputs: - 480 - 480 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - 12 - - 11 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 12 + - 11 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - - 5000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1400.0 - - 5000.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1400.0 - - 5000.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 11 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 11 - familie__p_id_elternteil_2: - - -1 - - -1 - - 12 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + - 5000.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + - 5000.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1400.0 + - 5000.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 11 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 11 + p_id_elternteil_2: + - -1 + - -1 + - 12 geburtsjahr: - 1965 - 1965 @@ -73,33 +80,38 @@ inputs: - 5 - 5 - 5 - kindergeld__in_ausbildung: - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false p_id: - 11 - 12 - 13 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 56969.6 - erziehungsgeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 22086 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 0.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 56969.6 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml index a77edcc0ec..e004fe24fe 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml @@ -13,50 +13,57 @@ inputs: - 480 - 480 - 0 - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 9 + - 8 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - - 3000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1400.0 - - 3000.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1400.0 - - 3000.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 8 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 8 - familie__p_id_elternteil_2: - - -1 - - -1 - - 9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + - 3000.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + - 3000.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1400.0 + - 3000.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 8 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 8 + p_id_elternteil_2: + - -1 + - -1 + - 9 geburtsjahr: - 1965 - 1965 @@ -73,33 +80,38 @@ inputs: - 4 - 4 - 4 - kindergeld__in_ausbildung: - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false p_id: - 8 - 9 - 10 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 38729.6 - erziehungsgeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 22086 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 0.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 38729.6 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml index fc0bae15f2..42c4d9b438 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml @@ -13,50 +13,57 @@ inputs: - 360 - 360 - 12 - arbeitslosengeld_2__p_id_einstandspartner: - - 4 - - 3 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 4 + - 3 + - -1 arbeitsstunden_w: - 20.0 - 40.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2500.0 - - 2500.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2500.0 - - 2500.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 2500.0 - - 2500.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - false - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 3 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 3 - familie__p_id_elternteil_2: - - -1 - - -1 - - 4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2500.0 + - 2500.0 + - 0.0 + bruttolohn_vorjahr_m: + - 2500.0 + - 2500.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 2500.0 + - 2500.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 3 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 3 + p_id_elternteil_2: + - -1 + - -1 + - 4 geburtsjahr: - 1975 - 1975 @@ -73,33 +80,38 @@ inputs: - 2 - 2 - 2 - kindergeld__in_ausbildung: - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false p_id: - 3 - 4 - 5 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 108.4597333 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 44201.6 - erziehungsgeld__betrag_m: - - 108.4597333 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 16500 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 108.4597333 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 44201.6 + betrag_m: + - 108.4597333 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 16500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 14af744b80..941c423ab6 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -15,61 +15,68 @@ inputs: - 480 - 9 - 3 - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 29.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - true - - false - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 22 - - 22 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - true + - false + p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 geburtsjahr: - 1965 - 1965 @@ -90,40 +97,45 @@ inputs: - 8 - 8 - 8 - kindergeld__in_ausbildung: - - false - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false + - false p_id: - 22 - 23 - 24 - 25 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 333.55 - - 300.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 26873.6 - - 26873.6 - erziehungsgeld__betrag_m: - - 633.55 - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 19640 - - 33140 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 333.55 + - 300.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 26873.6 + - 26873.6 + betrag_m: + - 633.55 + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 33140 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 14650106d5..971a0f2461 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -15,61 +15,68 @@ inputs: - 480 - 9 - 3 - arbeitslosengeld_2__p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 14 - - 14 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 14 - - 14 - familie__p_id_elternteil_2: - - -1 - - -1 - - 15 - - 15 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + bruttolohn_vorjahr_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 14 + - 14 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 14 + - 14 + p_id_elternteil_2: + - -1 + - -1 + - 15 + - 15 geburtsjahr: - 1965 - 1965 @@ -90,45 +97,51 @@ inputs: - 6 - 6 - 6 - kindergeld__in_ausbildung: - - false - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false + - false p_id: - 14 - 15 - 16 - 17 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false provided: {} outputs: - arbeitslosengeld_2__anzahl_kinder_fg: - - 2 - - 2 - - 2 - - 2 - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 300.0 - - 450.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 14105.6 - - 14105.6 - erziehungsgeld__betrag_m: - - 750.0 - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 19640 - - 25226 + arbeitslosengeld_2: + anzahl_kinder_fg: + - 2 + - 2 + - 2 + - 2 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 300.0 + - 450.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 14105.6 + - 14105.6 + betrag_m: + - 750.0 + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 25226 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml index 25c0bb4f31..830b7f7181 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml @@ -11,39 +11,46 @@ inputs: alter_monate: - 360 - 12 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - 30 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 30 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1500.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1500.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - true + p_id_empfänger: + - -1 + - 30 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 30 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1975 - 2007 @@ -56,26 +63,31 @@ inputs: hh_id: - 11 - 11 - kindergeld__in_ausbildung: - - false - - false + kindergeld: + in_ausbildung: + - false + - false p_id: - 30 - 31 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0.0 - erziehungsgeld__betrag_m: - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0.0 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + anzurechnendes_einkommen_y: + - 0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index bad1849d55..6ba9519110 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -15,61 +15,68 @@ inputs: - 480 - 9 - 3 - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 29.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - true - - false - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 22 - - 22 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 1400.0 + - 1700.0 + - 0.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - true + - false + p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 geburtsjahr: - 1965 - 1965 @@ -90,40 +97,45 @@ inputs: - 8 - 8 - 8 - kindergeld__in_ausbildung: - - false - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false + - false p_id: - 22 - 23 - 24 - 25 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 333.55 - - 300.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 26873.6 - - 26873.6 - erziehungsgeld__betrag_m: - - 633.55 - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 19640 - - 33140 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 333.55 + - 300.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 26873.6 + - 26873.6 + betrag_m: + - 633.55 + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 33140 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index b5e9055fc0..e50ab48eed 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -15,61 +15,68 @@ inputs: - 480 - 9 - 3 - arbeitslosengeld_2__p_id_einstandspartner: - - 15 - - 14 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - 15 + - 14 + - -1 + - -1 arbeitsstunden_w: - 29.0 - 40.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - elterngeld__nettoeinkommen_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - erziehungsgeld__budgetsatz: - - false - - false - - false - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 14 - - 14 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 14 - - 14 - familie__p_id_elternteil_2: - - -1 - - -1 - - 15 - - 15 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + bruttolohn_vorjahr_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + elterngeld: + nettoeinkommen_vorjahr_m: + - 400.0 + - 1300.0 + - 0.0 + - 0.0 + erziehungsgeld: + budgetsatz: + - false + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 14 + - 14 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 14 + - 14 + p_id_elternteil_2: + - -1 + - -1 + - 15 + - 15 geburtsjahr: - 1965 - 1965 @@ -90,40 +97,45 @@ inputs: - 6 - 6 - 6 - kindergeld__in_ausbildung: - - false - - false - - false - - false + kindergeld: + in_ausbildung: + - false + - false + - false + - false p_id: - 14 - 15 - 16 - 17 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false provided: {} outputs: - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 300.0 - - 450.0 - erziehungsgeld__anzurechnendes_einkommen_y: - - 0 - - 0 - - 14105.6 - - 14105.6 - erziehungsgeld__betrag_m: - - 750.0 - - 0.0 - - 0.0 - - 0.0 - erziehungsgeld__einkommensgrenze_y: - - 0 - - 0 - - 19640 - - 25226 + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 300.0 + - 450.0 + anzurechnendes_einkommen_y: + - 0 + - 0 + - 14105.6 + - 14105.6 + betrag_m: + - 750.0 + - 0.0 + - 0.0 + - 0.0 + einkommensgrenze_y: + - 0 + - 0 + - 19640 + - 25226 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index 09ab02d654..b7b7e17b5e 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -11,21 +11,22 @@ inputs: - 62 - 37 - 49 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 @@ -36,115 +37,127 @@ inputs: - 0 - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 200.0 - - 200.0 - - 200.0 - - 200.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - - 600.0 - - 900.0 - - 1200.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 1.0 - - 2.0 - - 3.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - true - - true - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 1000.0 - - 2000.0 - - 3000.0 - - 4000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 12606.0 - - 24618.0 - - 36630.0 - - 48642.0 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + - -1 + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 200.0 + - 200.0 + - 200.0 + - 200.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + - 600.0 + - 900.0 + - 1200.0 + bruttolohn_vorjahr_m: + - 1000.0 + - 2000.0 + - 3000.0 + - 4000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 1.0 + - 2.0 + - 3.0 + ist_selbstständig: + - false + - false + - false + - false + sonstige: + ohne_renten_m: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + gemeinsam_veranlagt: + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + - 0 + claimed: + - true + - true + - true + - true + nettoeinkommen_vorjahr_m: + - 1000.0 + - 2000.0 + - 3000.0 + - 4000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 12606.0 + - 24618.0 + - 36630.0 + - 48642.0 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - false + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1958 - 1957 @@ -165,21 +178,23 @@ inputs: - 1 - 1 - 1 - kindergeld__in_ausbildung: - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - lohnsteuer__steuerklasse: - - 4 - - 4 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + lohnsteuer: + steuerklasse: + - 4 + - 4 + - 1 + - 1 p_id: - 1 - 2 @@ -190,176 +205,188 @@ inputs: - false - false - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - - true - - true - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - - false - - false - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - false - - false - - true - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 3.0 - - 4.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - - false - - true - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - - true - - false - - true - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - - 5.0 - - 5.0 - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 43 - - 44 - - 19 - - 31 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 43 - - 44 - - 19 - - 31 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 6.2776 - - 6.2776 - - 6.2776 - - 6.2776 - sozialversicherung__rente__jahr_renteneintritt: - - 2061 - - 2062 - - 2063 - - 2064 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - - 1 - - 1 - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - - 12.0 - - 12.0 - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 456.0 - - 468.0 - - 168.0 - - 312.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__anspruch_m: - - 177.0 - - 177.0 - - 177.0 - - 177.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 177.0 - - 177.0 - - 177.0 - - 177.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + - true + - true + - true + arbeitssuchend: + - false + - false + - false + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + - false + - false + - false + pflege: + beitrag: + hat_kinder: + - false + - false + - false + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 3.0 + - 4.0 + - 0.0 + - 0.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + entgeltpunkte_ost: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + entgeltpunkte_west: + - 6.2776 + - 6.2776 + - 6.2776 + - 6.2776 + ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + - false + - true + - false + voll_erwerbsgemindert: + - false + - true + - false + - true + freiwillige_beitragsmonate: + - 5.0 + - 5.0 + - 5.0 + - 5.0 + grundrente: + bewertungszeiten_monate: + - 43 + - 44 + - 19 + - 31 + grundrentenzeiten_monate: + - 43 + - 44 + - 19 + - 31 + mean_entgeltpunkte: + - 6.2776 + - 6.2776 + - 6.2776 + - 6.2776 + jahr_renteneintritt: + - 2061 + - 2062 + - 2063 + - 2064 + kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_mutterschutz: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_schulausbildung: + - 12.0 + - 12.0 + - 12.0 + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + pflichtbeitragsmonate: + - 456.0 + - 468.0 + - 168.0 + - 312.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + anspruch_m: + - 177.0 + - 177.0 + - 177.0 + - 177.0 + tatsächlich_erhaltener_betrag_m: + - 177.0 + - 177.0 + - 177.0 + - 177.0 vermögen: - 5500.0 - 0.0 @@ -370,36 +397,38 @@ inputs: - true - false - true - wohnen__baujahr_immobilie_hh: - - 3 - - 3 - - 3 - - 3 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + - 3 + - 3 + - 3 + bewohnt_eigentum_hh: + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 wohnort_ost: - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index 24447a8e66..234933d09b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -11,21 +11,22 @@ inputs: - 34 - 37 - 48 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 @@ -36,116 +37,128 @@ inputs: - 0 - 0 - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 200.0 - - 201.0 - - 202.0 - - 203.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 5000.0 - - 300.0 - - 600.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 7000.0 - - 2500.0 - - 2300.0 - - 1000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 4.0 - - 5.0 - - 6.0 - - 7.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - elterngeld__bisherige_bezugsmonate: - - 0 - - 0 - - 0 - - 0 - elterngeld__claimed: - - true - - true - - true - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 7000.0 - - 2500.0 - - 2300.0 - - 1000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 84654.0 - - 30678.0 - - 28302.0 - - 12726.0 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + - -1 + - -1 + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 200.0 + - 201.0 + - 202.0 + - 203.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 5000.0 + - 300.0 + - 600.0 + bruttolohn_vorjahr_m: + - 7000.0 + - 2500.0 + - 2300.0 + - 1000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 4.0 + - 5.0 + - 6.0 + - 7.0 + ist_selbstständig: + - false + - false + - false + - false + sonstige: + ohne_renten_m: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + - 0 + - 0 + - 0 + claimed: + - true + - true + - true + - true + nettoeinkommen_vorjahr_m: + - 7000.0 + - 2500.0 + - 2300.0 + - 1000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 84654.0 + - 30678.0 + - 28302.0 + - 12726.0 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - false + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1952 - 1985 @@ -166,21 +179,23 @@ inputs: - 2 - 2 - 2 - kindergeld__in_ausbildung: - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - lohnsteuer__steuerklasse: - - 1 - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + lohnsteuer: + steuerklasse: + - 1 + - 1 + - 1 + - 1 p_id: - 5 - 6 @@ -191,176 +206,188 @@ inputs: - false - false - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - - true - - true - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - - false - - false - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - - false - - false - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 8.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 6.2776 - - 6.2776 - - 1.7936 - - 1.7936 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - - false - - false - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - - false - - false - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - - 5.0 - - 5.0 - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 49 - - 16 - - 19 - - 30 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 49 - - 16 - - 19 - - 30 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 6.2776 - - 6.2776 - - 1.7936 - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2065 - - 2066 - - 2067 - - 2068 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - - 1 - - 1 - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - - 12.0 - - 12.0 - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 528.0 - - 132.0 - - 168.0 - - 300.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__anspruch_m: - - 177.0 - - 177.0 - - 177.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 177.0 - - 177.0 - - 177.0 - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + - true + - true + - true + arbeitssuchend: + - false + - false + - false + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + - false + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + - false + - false + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 8.0 + - 0.0 + - 0.0 + - 0.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + entgeltpunkte_ost: + - 6.2776 + - 6.2776 + - 1.7936 + - 1.7936 + entgeltpunkte_west: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + - false + - false + - false + voll_erwerbsgemindert: + - false + - false + - false + - false + freiwillige_beitragsmonate: + - 5.0 + - 5.0 + - 5.0 + - 5.0 + grundrente: + bewertungszeiten_monate: + - 49 + - 16 + - 19 + - 30 + grundrentenzeiten_monate: + - 49 + - 16 + - 19 + - 30 + mean_entgeltpunkte: + - 6.2776 + - 6.2776 + - 1.7936 + - 1.7936 + jahr_renteneintritt: + - 2065 + - 2066 + - 2067 + - 2068 + kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_mutterschutz: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + monate_in_schulausbildung: + - 12.0 + - 12.0 + - 12.0 + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + pflichtbeitragsmonate: + - 528.0 + - 132.0 + - 168.0 + - 300.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + anspruch_m: + - 177.0 + - 177.0 + - 177.0 + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 177.0 + - 177.0 + - 177.0 + - 0.0 vermögen: - 5500.0 - 0.0 @@ -371,36 +398,38 @@ inputs: - true - false - false - wohnen__baujahr_immobilie_hh: - - 3 - - 3 - - 3 - - 3 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 - - 80.0 - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + - 3 + - 3 + - 3 + bewohnt_eigentum_hh: + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 + - 80.0 + - 80.0 + wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 wohnort_ost: - true - true diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index c7414e3c9a..7d080e497b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 51 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 204.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 8.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 2000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 24750.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 204.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + bruttolohn_vorjahr_m: + - 2000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 8.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 2000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 24750.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1968 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 3 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 9 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 1.7936 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 33 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 33 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2069 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 336.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 1.7936 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - true + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 33 + grundrentenzeiten_monate: + - 33 + mean_entgeltpunkte: + - 1.7936 + jahr_renteneintritt: + - 2069 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 336.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 5500.0 weiblich: - true - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - true outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 47c6359b10..6c01f5bd74 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 55 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 205.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 3000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 9.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 3000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 36774.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 205.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + bruttolohn_vorjahr_m: + - 3000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 9.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 3000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 36774.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1964 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 4 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 10 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 1.7936 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 37 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 37 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2070 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 384.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 1.7936 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 37 + grundrentenzeiten_monate: + - 37 + mean_entgeltpunkte: + - 1.7936 + jahr_renteneintritt: + - 2070 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 384.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 5500.0 weiblich: - false - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 535e3fa7ff..1f39d229ba 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 52 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 20.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 206.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 4000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 10.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 4000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 48798.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 206.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + bruttolohn_vorjahr_m: + - 4000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 10.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 4000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 48798.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1967 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 5 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 11 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 1.7936 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 34 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 34 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2071 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 348.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 1.7936 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 34 + grundrentenzeiten_monate: + - 34 + mean_entgeltpunkte: + - 1.7936 + jahr_renteneintritt: + - 2071 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 348.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 5500.0 weiblich: - true - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index ebd16fc7ac..3683534159 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 207.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 7000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 11.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 7000.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 84822.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 207.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 + bruttolohn_vorjahr_m: + - 7000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 11.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 7000.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 84822.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1951 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 6 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 12 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 10.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 1.7936 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 50 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 50 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2072 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 10.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 1.7936 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 50 + grundrentenzeiten_monate: + - 50 + mean_entgeltpunkte: + - 1.7936 + jahr_renteneintritt: + - 2072 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 540.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 5500.0 weiblich: - false - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index fc73f16e8d..9f260c7082 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 59 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 208.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 12.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 2500.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 30804.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 208.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 700.0 + bruttolohn_vorjahr_m: + - 2500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 12.0 + ist_selbstständig: + - false + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 2500.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 30804.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1960 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 7 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 13 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 1.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 1.7936 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 41 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 41 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 1.7936 - sozialversicherung__rente__jahr_renteneintritt: - - 2073 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 432.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 1.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 1.7936 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 41 + grundrentenzeiten_monate: + - 41 + mean_entgeltpunkte: + - 1.7936 + jahr_renteneintritt: + - 2073 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 432.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 5500.0 weiblich: - true - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index ae07197035..5141600f43 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -8,60 +8,73 @@ inputs: provided: alter: - 60 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 arbeitsstunden_w: - 0.0 behinderungsgrad: - 0 - einkommensteuer__abzüge__beitrag_private_rentenversicherung_m: - - 0.0 - einkommensteuer__abzüge__kinderbetreuungskosten_m: - - 0.0 - einkommensteuer__abzüge__p_id_kinderbetreuungskostenträger: - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 2500.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 13.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 50.0 - einkommensteuer__einkünfte__aus_forst_und_landwirtschaft__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_gewerbebetrieb__betrag_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__bisherige_bezugsmonate: - - 0 - elterngeld__claimed: - - true - elterngeld__nettoeinkommen_vorjahr_m: - - 2300.0 - elterngeld__zu_versteuerndes_einkommen_vorjahr_y_sn: - - 25962.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 2300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 2500.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 13.0 + ist_selbstständig: + - true + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 2300.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 25962.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1959 geburtsmonat: @@ -70,100 +83,116 @@ inputs: - 1 hh_id: - 8 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 p_id: - 14 schwerbehindert_grad_g: - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 2.0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 19.7296 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 5.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 42 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 42 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 19.7296 - sozialversicherung__rente__jahr_renteneintritt: - - 2074 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 12.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 444.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__anspruch_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60.0 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 2.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 19.7296 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 42 + grundrentenzeiten_monate: + - 42 + mean_entgeltpunkte: + - 19.7296 + jahr_renteneintritt: + - 2074 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 444.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 vermögen: - 0.0 weiblich: - false - wohnen__baujahr_immobilie_hh: - - 3 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - wohnen__wohnfläche_hh: - - 50.0 - wohngeld__mietstufe: - - 3 + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe: + - 3 wohnort_ost: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml index 67ad0e2899..e6aa5998b3 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,8 +1,8 @@ --- info: note: >- - CZ: In case the other parent does not pay child support, the parent with p_id==0 - can request full kinderfreibetrag (Add this as input?) + CZ: In case the other parent does not pay child support, the parent with + p_id==0 can request full kinderfreibetrag precision_atol: 0.01 source: '' inputs: @@ -12,30 +12,33 @@ inputs: - 39 - 13 - 52 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - 2 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - 2 + - -1 geburtsjahr: - 1984 - 2010 @@ -65,6 +68,10 @@ outputs: - 0 - 1 - 2 + ehe_id: + - 0 + - 1 + - 2 fg_id: - 0 - 0 @@ -73,7 +80,3 @@ outputs: - 0 - 1 - 2 - ehe_id: - - 0 - - 1 - - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml index 2bfdd8b0d2..e14a387e1c 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/alleinerziehend_anderer_elternteil_unbekannt.yaml @@ -9,24 +9,27 @@ inputs: alter: - 39 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1984 - 2010 @@ -49,12 +52,12 @@ outputs: eg_id: - 0 - 1 + ehe_id: + - 0 + - 1 fg_id: - 0 - 0 sn_id: - 0 - 1 - ehe_id: - - 0 - - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml index 9aeab383ae..9fd7ea57cc 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_unverheiratet_2_kinder.yaml @@ -11,36 +11,39 @@ inputs: - 42 - 13 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -77,6 +80,11 @@ outputs: - 0 - 1 - 2 + ehe_id: + - 0 + - 1 + - 2 + - 3 fg_id: - 0 - 0 @@ -87,8 +95,3 @@ outputs: - 1 - 2 - 3 - ehe_id: - - 0 - - 1 - - 2 - - 3 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml index cae21e588b..316027abd0 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_junges_1_erwachsenes_kind.yaml @@ -11,36 +11,39 @@ inputs: - 52 - 23 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1974 - 1971 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 2 - fg_id: + ehe_id: - 0 - 0 + - 1 + - 2 + fg_id: - 0 - 0 - sn_id: - 0 - 0 - - 1 - - 2 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml index 76e839bf24..c8edb388d4 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_anderer_verwandter.yaml @@ -11,36 +11,39 @@ inputs: - 42 - 13 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 2 - fg_id: - - 0 + ehe_id: - 0 - 0 - 1 - sn_id: + - 2 + fg_id: + - 0 - 0 - 0 - 1 - - 2 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" index d657cec559..47b08de02e 100644 --- "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" +++ "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_bis24_1_kind_\303\274ber_24.yaml" @@ -11,36 +11,39 @@ inputs: - 52 - 27 - 23 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1974 - 1971 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 2 - fg_id: + ehe_id: - 0 - 0 - 1 - - 0 - sn_id: + - 2 + fg_id: - 0 - 0 - 1 - - 2 - ehe_id: + - 0 + sn_id: - 0 - 0 - 1 diff --git "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" index f0e494103a..9455eaca5a 100644 --- "a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" +++ "b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_gro\303\237elternteil.yaml" @@ -11,36 +11,39 @@ inputs: - 42 - 13 - 70 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - 3 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - 3 + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 2 - fg_id: - - 0 + ehe_id: - 0 - 0 - 1 - sn_id: + - 2 + fg_id: + - 0 - 0 - 0 - 1 - - 2 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml index e93c399a34..ef6056c47a 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_mit_eigenem_kind.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft never - covers more than 2 generations) + Child in separate Familiengemeinschaft if it has children (Bedarfsgemeinschaft + never covers more than 2 generations) precision_atol: 0.01 source: '' inputs: @@ -14,42 +14,45 @@ inputs: - 1 - 49 - 50 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - 4 - - 3 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - true - - true - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - 4 - - 3 - familie__p_id_elternteil_1: - - 3 - - -1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_2: - - 4 - - -1 - - 1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - 4 + - 3 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - true + - true + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + - 4 + - 3 + p_id_elternteil_1: + - 3 + - -1 + - 0 + - -1 + - -1 + p_id_elternteil_2: + - 4 + - -1 + - 1 + - -1 + - -1 geburtsjahr: - 2004 - 2001 @@ -93,6 +96,12 @@ outputs: - 1 - 2 - 2 + ehe_id: + - 0 + - 1 + - 2 + - 3 + - 3 fg_id: - 0 - 0 @@ -105,9 +114,3 @@ outputs: - 2 - 3 - 3 - ehe_id: - - 0 - - 1 - - 2 - - 3 - - 3 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml index d92d55f95e..2d2b97d702 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_verheiratet.yaml @@ -11,36 +11,39 @@ inputs: - 50 - 19 - 22 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - true + - true + familie: + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - 1 geburtsjahr: - 1974 - 1973 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 1 - fg_id: + ehe_id: - 0 - 0 - 1 - 1 - sn_id: + fg_id: - 0 - 0 - 1 - 1 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml index e4add453ab..968b95bf54 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_1_kind_with_income.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Child in separate Bedarfsgemeinschaft if he/she has enough income to fend for - him/herself + Child in separate Bedarfsgemeinschaft if he/she has enough income to fend + for him/herself precision_atol: 0.01 source: '' inputs: @@ -12,30 +12,33 @@ inputs: - 49 - 50 - 22 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - true - - true - - true - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - true + - true + - true + p_id_einstandspartner: + - 1 + - 0 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1974 - 1973 @@ -65,15 +68,15 @@ outputs: - 0 - 0 - 1 - fg_id: + ehe_id: - 0 - 0 + - 1 + fg_id: - 0 - sn_id: - 0 - 0 - - 1 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml index bc9c7f6e4b..27e5e19617 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_2_kinder.yaml @@ -11,36 +11,39 @@ inputs: - 42 - 13 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 2 - fg_id: + ehe_id: - 0 - 0 + - 1 + - 2 + fg_id: - 0 - 0 - sn_id: - 0 - 0 - - 1 - - 2 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml index f1cd9a9613..779ef34b24 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_getrennt_veranlagt_2_kinder.yaml @@ -11,36 +11,39 @@ inputs: - 42 - 13 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1984 - 1981 @@ -77,6 +80,11 @@ outputs: - 0 - 1 - 2 + ehe_id: + - 0 + - 0 + - 1 + - 2 fg_id: - 0 - 0 @@ -87,8 +95,3 @@ outputs: - 1 - 2 - 3 - ehe_id: - - 0 - - 0 - - 1 - - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml index d4e358f6d2..b8b4a43670 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_verheiratet_kinder_verheiratet.yaml @@ -11,36 +11,39 @@ inputs: - 52 - 23 - 20 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - true + - true + familie: + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1974 - 1971 @@ -77,17 +80,17 @@ outputs: - 0 - 1 - 1 - fg_id: + ehe_id: - 0 - 0 - 1 - 1 - sn_id: + fg_id: - 0 - 0 - 1 - 1 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml index 72f2b5684f..1b4e2ac285 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/eltern_viele_kinder.yaml @@ -15,51 +15,53 @@ inputs: - 24 - 24 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - true - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - - 0 - - 0 - - 0 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 - - 1 - - 1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + - 0 + - 0 + - 0 + - 5 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 + - 1 + - 1 + - 1 + - -1 hh_id: - 0 - 0 @@ -97,21 +99,21 @@ outputs: - 4 - 5 - 6 - fg_id: + ehe_id: - 0 - 0 - 1 - - 0 - 2 - 3 - - 0 - - 3 - ehe_id: + - 4 + - 5 + - 6 + fg_id: - 0 - 0 - 1 + - 0 - 2 - 3 - - 4 - - 5 - - 6 + - 0 + - 3 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml index 2f2c16022f..2c95e8f866 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/mehrere_haushalte_durchmischt.yaml @@ -13,48 +13,51 @@ inputs: - 39 - 13 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - - 2 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + - 2 + - 1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1984 - 1984 @@ -91,13 +94,6 @@ inputs: - 3 - 5 outputs: - fg_id: - - 0 - - 1 - - 0 - - 2 - - 2 - - 1 bg_id: - 0 - 1 @@ -112,14 +108,21 @@ outputs: - 2 - 3 - 5 - sn_id: + ehe_id: - 0 - 1 - 4 - 2 - 3 - 5 - ehe_id: + fg_id: + - 0 + - 1 + - 0 + - 2 + - 2 + - 1 + sn_id: - 0 - 1 - 4 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index 92815cd0f1..7dc2ea19c2 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -2,7 +2,7 @@ info: note: >- CZ: In case the other parent does not pay child support, the parent id==0, can - request full kinderfreibetrag (Add this as input?) + request full kinderfreibetrag precision_atol: 0.01 source: '' inputs: @@ -13,36 +13,39 @@ inputs: - 42 - 13 - 52 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 3 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - 3 + - -1 geburtsjahr: - 1984 - 1981 @@ -79,6 +82,11 @@ outputs: - 0 - 1 - 2 + ehe_id: + - 0 + - 1 + - 2 + - 3 fg_id: - 0 - 0 @@ -89,8 +97,3 @@ outputs: - 1 - 2 - 3 - ehe_id: - - 0 - - 1 - - 2 - - 3 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml index fc5b03b6ed..cfcd308733 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_unverheirateter_partner_1_kind_im_haushalt_anderer_elternteil_unbekannt.yaml @@ -10,30 +10,33 @@ inputs: - 39 - 42 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1984 - 1981 @@ -63,6 +66,10 @@ outputs: - 0 - 0 - 1 + ehe_id: + - 0 + - 1 + - 2 fg_id: - 0 - 0 @@ -71,7 +78,3 @@ outputs: - 0 - 1 - 2 - ehe_id: - - 0 - - 1 - - 2 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml index c2e921c778..e522b88be5 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/neuer_verheirateter_partner_1_kind_im_haushalt_anderer_elternteil_in_anderem_haushalt.yaml @@ -1,8 +1,8 @@ --- info: note: >- - not eligible for potentieller∞_unterhaltsvorschuss if parent in same household is - married to new partner (unterhalt__anspruch_m unaffected) + not eligible for potentieller∞_unterhaltsvorschuss if parent in same + household is married to new partner (unterhalt__anspruch_m unaffected) precision_atol: 0.01 source: '' inputs: @@ -13,36 +13,39 @@ inputs: - 42 - 13 - 52 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1984 - 1981 @@ -79,17 +82,17 @@ outputs: - 0 - 1 - 2 - fg_id: - - 0 + ehe_id: - 0 - 0 - 1 - sn_id: + - 2 + fg_id: + - 0 - 0 - 0 - 1 - - 2 - ehe_id: + sn_id: - 0 - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml index 0c9d3ce862..b0941cd5a7 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/verschiedene_haushalte_nur_sn_id.yaml @@ -6,22 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - - -1 - - 6 - - 5 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + - -1 + - 6 + - 5 p_id: - 0 - 1 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml index 273e8f625f..17ca4b0d2f 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_generationen.yaml @@ -14,54 +14,57 @@ inputs: - 13 - 13 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - true - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - 1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - 0 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - 1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -102,22 +105,23 @@ inputs: - 4 - 5 - 6 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - - true - - true - - false - - false - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - - true - - true - - false - - false - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + - true + - true + - false + - false + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + - true + - true + - false + - false + - true outputs: bg_id: - 0 diff --git a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml index df2a761846..87c8b35d25 100644 --- a/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml +++ b/src/_gettsim_tests/test_data/groupings/2023-01-01/wohngeldrechtlicher_teilhaushalt_mehrere_haushalte.yaml @@ -14,54 +14,57 @@ inputs: - 23 - 23 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - true - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - 0 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - 1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - true + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - 0 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - 1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -102,22 +105,23 @@ inputs: - 4 - 5 - 6 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - - true - - true - - false - - false - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - - true - - true - - false - - false - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + - true + - true + - false + - false + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + - true + - true + - false + - false + - true outputs: bg_id: - 0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index f93afc179c..4007ff81dc 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -13,54 +13,64 @@ inputs: alter: - 72 - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 18 - - 17 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 10.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 18 - - 17 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 18 + - 17 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 10.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 18 + - 17 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1945 - 1950 @@ -73,61 +83,73 @@ inputs: hh_id: - 13 - 13 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 17 - 18 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 860.6 - - 73.4 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - - 48 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 860.6 + - 73.4 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 300 + - 48 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 460.0 - - 460.0 - wohnen__heizkosten_m_hh: - - 60.0 - - 60.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 460.0 + - 460.0 + heizkosten_m_hh: + - 60.0 + - 60.0 + wohnfläche_hh: + - 60.0 + - 60.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 314.1666667 - - 314.1666667 + grundsicherung: + im_alter: + betrag_m_eg: + - 314.1666667 + - 314.1666667 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index bb05e4daa6..c59f048699 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 50 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1967 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 16 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 21 schwerbehindert_grad_g: - true - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 425.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 425.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 120 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 252.5 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 35.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 252.5 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 35.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 356.03 + grundsicherung: + im_alter: + betrag_m_eg: + - 356.03 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 863ebffbf4..08e4eb5edc 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 82 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1935 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 17 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 22 schwerbehindert_grad_g: - true - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 583.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 36 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 583.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 36 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - wohnen__heizkosten_m_hh: - - 40.5 - wohnen__wohnfläche_hh: - - 36.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 300.0 + heizkosten_m_hh: + - 40.5 + wohnfläche_hh: + - 36.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 236.03 + grundsicherung: + im_alter: + betrag_m_eg: + - 236.03 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 355e6f1b47..4b316c6b21 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -9,54 +9,64 @@ inputs: alter: - 72 - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 9 - - 8 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 9 + - 8 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 9 + - 8 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1945 - 1950 @@ -69,61 +79,73 @@ inputs: hh_id: - 6 - 6 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 8 - 9 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 860.6 - - 73.4 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - - 48 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 860.6 + - 73.4 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 300 + - 48 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 460.0 - - 460.0 - wohnen__heizkosten_m_hh: - - 60.0 - - 60.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 460.0 + - 460.0 + heizkosten_m_hh: + - 60.0 + - 60.0 + wohnfläche_hh: + - 60.0 + - 60.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 322.0 - - 322.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 322.0 + - 322.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index b337e61159..b34ba18b14 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Added minor capital income of 2 euros (no deduction from claim since below allowance - of 26 euros per year). Adjusted test case based on source. + Added minor capital income of 2 euros (no deduction from claim since below + allowance of 26 euros per year). Adjusted test case based on source. precision_atol: 0.01 source: https://www.bmas.de/SharedDocs/Downloads/DE/Publikationen/a207-sozialhilfe-und-grundsicherung.pdf?__blob=publicationFile&v=1 inputs: @@ -10,38 +10,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 2.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 2.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1950 geburtsmonat: @@ -50,42 +60,54 @@ inputs: - 1 hh_id: - 12 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 16 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 440.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - sozialversicherung__rente__private_rente_betrag_m: - - 400.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 440.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 300 + private_rente_betrag_m: + - 400.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 344.0 - wohnen__heizkosten_m_hh: - - 92.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 344.0 + heizkosten_m_hh: + - 92.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 202.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index 17fb9b8b6e..d3a956e9fe 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1950 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 20 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 26 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 440.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - sozialversicherung__rente__private_rente_betrag_m: - - 400.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 440.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 300 + private_rente_betrag_m: + - 400.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 5600.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 344.0 - wohnen__heizkosten_m_hh: - - 92.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 344.0 + heizkosten_m_hh: + - 92.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 0.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index 9e8643596b..e5c9323328 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1950 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 22 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 29 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 440.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - sozialversicherung__rente__private_rente_betrag_m: - - 400.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 440.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 300 + private_rente_betrag_m: + - 400.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 4900.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 344.0 - wohnen__heizkosten_m_hh: - - 92.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 344.0 + heizkosten_m_hh: + - 92.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 202.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 7a8e140a1e..08dc204d41 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1950 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 3 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 4 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 440.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 300 - sozialversicherung__rente__private_rente_betrag_m: - - 400.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 440.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 300 + private_rente_betrag_m: + - 400.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 344.0 - wohnen__heizkosten_m_hh: - - 92.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 344.0 + heizkosten_m_hh: + - 92.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 202.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 202.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index c52c8601c5..4194924dbc 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 80 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1940 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 18 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 23 schwerbehindert_grad_g: - true - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 200.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 200.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 120 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 250.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 35.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 250.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 35.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 605.44 + grundsicherung: + im_alter: + betrag_m_eg: + - 605.44 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index aa5e9bb58a..839912de77 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -9,54 +9,64 @@ inputs: alter: - 67 - 70 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 25 - - 24 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 25 - - 24 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 25 + - 24 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 25 + - 24 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1953 - 1950 @@ -69,61 +79,73 @@ inputs: hh_id: - 19 - 19 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 24 - 25 schwerbehindert_grad_g: - false - true - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 300.0 - - 700.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 144 - - 300 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 300.0 + - 700.0 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 144 + - 300 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 66.0 - - 66.0 - wohnen__wohnfläche_hh: - - 40.0 - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 66.0 + - 66.0 + wohnfläche_hh: + - 40.0 + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 210.13 - - 210.13 + grundsicherung: + im_alter: + betrag_m_eg: + - 210.13 + - 210.13 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 8fbeb96456..619c6dfad9 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -9,54 +9,64 @@ inputs: alter: - 70 - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - 1 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 2 - - 1 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 2 + - 1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 2 + - 1 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1951 - 1954 @@ -69,61 +79,73 @@ inputs: hh_id: - 1 - 1 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 1 - 2 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 350.0 - - 590.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 240 - - 240 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 350.0 + - 590.0 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 240 + - 240 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 66.0 - - 66.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 66.0 + - 66.0 + wohnfläche_hh: + - 50.0 + - 50.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 228.0 - - 228.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 228.0 + - 228.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index 475b93dc05..84815f9c60 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Adjusted test case by adding capital income of 50 euros (expected difference in - `grundsicherung__im_alter__betrag_m_eg`: (50 * 12 - 26) / 12 = 47.83333333)) + Adjusted test case by adding capital income of 50 euros (expected difference + in `grundsicherung__im_alter__betrag_m_eg`: (50 * 12 - 26) / 12 = 47.83333333)) precision_atol: 0.01 source: https://pflegebox.de/ratgeber/leben-im-alter/grundsicherung-im-alter/ inputs: @@ -10,38 +10,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 50.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 50.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1953 geburtsmonat: @@ -50,42 +60,54 @@ inputs: - 1 hh_id: - 14 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 19 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 430.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 430.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 350.0 - wohnen__heizkosten_m_hh: - - 35.0 - wohnen__wohnfläche_hh: - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 350.0 + heizkosten_m_hh: + - 35.0 + wohnfläche_hh: + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 353.17 + grundsicherung: + im_alter: + betrag_m_eg: + - 353.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index bc3f2a8e53..39fb23be2e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1954 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 15 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 20 schwerbehindert_grad_g: - true - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 325.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 325.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 335.0 - wohnen__heizkosten_m_hh: - - 35.0 - wohnen__wohnfläche_hh: - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 335.0 + heizkosten_m_hh: + - 35.0 + wohnfläche_hh: + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 566.82 + grundsicherung: + im_alter: + betrag_m_eg: + - 566.82 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index c46b215de5..246ddb8129 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 70 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1951 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 2 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 3 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 94.0 - sozialversicherung__rente__altersrente__betrag_m: - - 850.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 420 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 94.0 + rente: + altersrente: + betrag_m: + - 850.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 420 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 405.0 - wohnen__heizkosten_m_hh: - - 40.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 405.0 + heizkosten_m_hh: + - 40.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 358.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 358.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 4a08f102fb..88a3c8ab28 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Test with positive wealth above wealth allowance. Beispielpersonen Max B. und Inge - M. + Test with positive wealth above wealth allowance. Beispielpersonen Max B. + und Inge M. precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: @@ -11,54 +11,64 @@ inputs: alter: - 70 - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 28 - - 27 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 28 - - 27 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 28 + - 27 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 28 + - 27 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1951 - 1954 @@ -71,61 +81,73 @@ inputs: hh_id: - 21 - 21 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 27 - 28 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 350.0 - - 590.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 240 - - 240 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 350.0 + - 590.0 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 240 + - 240 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 10500.0 - 10500.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 66.0 - - 66.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 66.0 + - 66.0 + wohnfläche_hh: + - 50.0 + - 50.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 0.0 - - 0.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index 849e9db61a..4a1353c2a3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Test with positive wealth below wealth allowance. Beispielpersonen Max B. und Inge - M. + Test with positive wealth below wealth allowance. Beispielpersonen Max B. und + Inge M. precision_atol: 0.01 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundsicherung_hilfe_fuer_rentner.pdf?__blob=publicationFile&v=2 inputs: @@ -11,54 +11,64 @@ inputs: alter: - 70 - 67 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 31 - - 30 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 31 - - 30 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 31 + - 30 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 31 + - 30 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1951 - 1954 @@ -71,61 +81,73 @@ inputs: hh_id: - 23 - 23 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 30 - 31 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 350.0 - - 590.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 240 - - 240 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 350.0 + - 590.0 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 240 + - 240 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 8250.0 - 8250.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 66.0 - - 66.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 66.0 + - 66.0 + wohnfläche_hh: + - 50.0 + - 50.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 228.0 - - 228.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 228.0 + - 228.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 62625d29a4..3a1a38aaa4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1953 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 5 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 7 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 430.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 430.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 350.0 - wohnen__heizkosten_m_hh: - - 35.0 - wohnen__wohnfläche_hh: - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 350.0 + heizkosten_m_hh: + - 35.0 + wohnfläche_hh: + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 401.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 401.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index cd08757081..1979397fdd 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 68 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1953 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 7 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 10 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 430.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 430.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 350.0 - wohnen__heizkosten_m_hh: - - 35.0 - wohnen__wohnfläche_hh: - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 350.0 + heizkosten_m_hh: + - 35.0 + wohnfläche_hh: + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 401.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 401.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index fa5de2535a..52f486362c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -11,54 +11,64 @@ inputs: alter: - 70 - 60 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 13 - - 12 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 13 - - 12 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 13 + - 12 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 13 + - 12 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1951 - 1961 @@ -71,61 +81,73 @@ inputs: hh_id: - 9 - 9 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 12 - 13 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 350.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - true - - false - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 240 - - 240 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 350.0 + - 0.0 + bezieht_rente: + - true + - false + grundrente: + grundrentenzeiten_monate: + - 240 + - 240 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - - 300.0 - wohnen__heizkosten_m_hh: - - 66.0 - - 66.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 300.0 + - 300.0 + heizkosten_m_hh: + - 66.0 + - 66.0 + wohnfläche_hh: + - 50.0 + - 50.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 0.0 - - 0.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 2d3c6104a3..cc014ba63d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Capital income of 20 euros (monthly amount deducted from claim due to capital income - (20*12 - 26) / 12 = 17.83333333) + Capital income of 20 euros (monthly amount deducted from claim due to capital + income (20*12 - 26) / 12 = 17.83333333) precision_atol: 0.01 source: Self-created test case inputs: @@ -10,38 +10,48 @@ inputs: provided: alter: - 73 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 20.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 20.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1949 geburtsmonat: @@ -50,42 +60,54 @@ inputs: - 1 hh_id: - 10 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 14 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 250.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 250.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 120 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 300.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 531.17 + grundsicherung: + im_alter: + betrag_m_eg: + - 531.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index 9e4410bb72..c7f8bf2382 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Capital income of 50 euros (monthly amount deducted from claim due to capital income - (50*12 - 26) / 12 = 47.83333333) + Capital income of 50 euros (monthly amount deducted from claim due to capital + income (50*12 - 26) / 12 = 47.83333333) precision_atol: 0.01 source: Self-created test case inputs: @@ -10,38 +10,48 @@ inputs: provided: alter: - 69 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 50.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 50.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1953 geburtsmonat: @@ -50,42 +60,54 @@ inputs: - 1 hh_id: - 11 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 15 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 50.0 - sozialversicherung__rente__altersrente__betrag_m: - - 400.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 216 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 50.0 + rente: + altersrente: + betrag_m: + - 400.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 216 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - wohnen__heizkosten_m_hh: - - 70.0 - wohnen__wohnfläche_hh: - - 45.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 300.0 + heizkosten_m_hh: + - 70.0 + wohnfläche_hh: + - 45.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 421.17 + grundsicherung: + im_alter: + betrag_m_eg: + - 421.17 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index 1583057ace..f130e11e1c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -9,54 +9,64 @@ inputs: alter: - 50 - 16 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 33 - - 32 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - 33 - - 32 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 33 + - 32 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - 33 + - 32 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1972 - 2006 @@ -69,61 +79,73 @@ inputs: hh_id: - 24 - 24 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 32 - 33 schwerbehindert_grad_g: - true - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 425.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - true - - false - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 425.0 + - 0.0 + bezieht_rente: + - true + - false + grundrente: + grundrentenzeiten_monate: + - 120 + - 0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 5600.0 - 5600.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 252.5 - - 252.5 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 35.0 - - 35.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 252.5 + - 252.5 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 35.0 + - 35.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 0.0 - - 0.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 6f051264f7..128db4da59 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Test with child and positive wealth below wealth allowance (website did not add - general amount for child) + Test with child and positive wealth below wealth allowance (website did not + add general amount for child) precision_atol: 0.01 source: https://www.smart-rechner.de/grundsicherung/rechner.php inputs: @@ -11,54 +11,64 @@ inputs: alter: - 50 - 16 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 34 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 34 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1972 - 2006 @@ -71,61 +81,73 @@ inputs: hh_id: - 25 - 25 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - 34 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - 34 p_id: - 34 - 35 schwerbehindert_grad_g: - true - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 425.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - true - - false - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - - 0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 425.0 + - 0.0 + bezieht_rente: + - true + - false + grundrente: + grundrentenzeiten_monate: + - 120 + - 0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 5400.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 252.5 - - 252.5 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 35.0 - - 35.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 252.5 + - 252.5 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 35.0 + - 35.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 852.71 - - 0.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 852.71 + - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index 4bb395f8de..20ec1a9349 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -9,54 +9,64 @@ inputs: alter: - 76 - 70 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 6 - - 5 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 6 - - 5 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 6 + - 5 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 6 + - 5 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1946 - 1952 @@ -69,61 +79,73 @@ inputs: hh_id: - 4 - 4 - kindergeld__betrag_m_eg: - - 0.0 - - 0.0 - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + - 0.0 + p_id_empfänger: + - -1 + - -1 p_id: - 5 - 6 schwerbehindert_grad_g: - false - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 50.0 - - 50.0 - sozialversicherung__rente__altersrente__betrag_m: - - 360.0 - - 120.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 240 - - 120 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 50.0 + - 50.0 + rente: + altersrente: + betrag_m: + - 360.0 + - 120.0 + bezieht_rente: + - true + - true + grundrente: + grundrentenzeiten_monate: + - 240 + - 120 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 + - 0.0 vermögen_eg: - 0.0 - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 430.0 - - 430.0 - wohnen__heizkosten_m_hh: - - 70.0 - - 70.0 - wohnen__wohnfläche_hh: - - 55.0 - - 55.0 + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 430.0 + - 430.0 + heizkosten_m_hh: + - 70.0 + - 70.0 + wohnfläche_hh: + - 55.0 + - 55.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 928.0 - - 928.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 928.0 + - 928.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index cec713b5fc..85871ae30f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -8,38 +8,48 @@ inputs: provided: alter: - 77 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1945 geburtsmonat: @@ -48,42 +58,54 @@ inputs: - 1 hh_id: - 8 - kindergeld__betrag_m_eg: - - 0.0 - kindergeld__p_id_empfänger: - - -1 + kindergeld: + betrag_m_eg: + - 0.0 + p_id_empfänger: + - -1 p_id: - 11 schwerbehindert_grad_g: - false - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 50.0 - sozialversicherung__rente__altersrente__betrag_m: - - 250.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 120 - sozialversicherung__rente__private_rente_betrag_m: - - 400.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m_eg: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 50.0 + rente: + altersrente: + betrag_m: + - 250.0 + bezieht_rente: + - true + grundrente: + grundrentenzeiten_monate: + - 120 + private_rente_betrag_m: + - 400.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m_eg: + - 0.0 vermögen_eg: - 0.0 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 300.0 - wohnen__heizkosten_m_hh: - - 45.0 - wohnen__wohnfläche_hh: - - 40.0 + wohnen: + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 300.0 + heizkosten_m_hh: + - 45.0 + wohnfläche_hh: + - 40.0 outputs: - grundsicherung__im_alter__betrag_m_eg: - - 384.0 + grundsicherung: + im_alter: + betrag_m_eg: + - 384.0 diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml index 39829eb0b6..49ab591f56 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml @@ -10,46 +10,50 @@ inputs: - 37 - 37 - 3 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 - familie__alleinerziehend: - - true - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + grundsätzlich_anspruchsberechtigt: + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + familie: + alleinerziehend: + - true + - false + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1970 - 1970 @@ -66,44 +70,48 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 2904.0 - - 2904.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - erziehungsgeld__betrag_m: - - 150.0 - - 0.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 154.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 2904.0 + - 2904.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + erziehungsgeld: + betrag_m: + - 150.0 + - 0.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 154.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml index f830251969..0bc5571af6 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml @@ -10,42 +10,46 @@ inputs: - 37 - 37 - 3 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + grundsätzlich_anspruchsberechtigt: + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1970 - 1970 @@ -62,44 +66,48 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 2904.0 - - 2904.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - erziehungsgeld__betrag_m: - - 150.0 - - 0.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 154.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 2904.0 + - 2904.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + erziehungsgeld: + betrag_m: + - 150.0 + - 0.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 154.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml index 3574c670ba..9b3061995e 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml @@ -11,51 +11,55 @@ inputs: - 37 - 3 - 3 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 0 - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + - 150.0 + grundsätzlich_anspruchsberechtigt: + - true + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 0 + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1970 - 1970 @@ -76,54 +80,58 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - 3 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 2 - - 2 - - 0 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 5808.0 - - 5808.0 - - 0.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - - 1 - erziehungsgeld__betrag_m: - - 300.0 - - 0.0 - - 0.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 2 - - 0 - - 0 - - 0 - kindergeld__betrag_m: - - 308.0 - - 0.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 2 + - 2 + - 0 + - 0 + kinderfreibetrag_y: + - 5808.0 + - 5808.0 + - 0.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + - 1 + erziehungsgeld: + betrag_m: + - 300.0 + - 0.0 + - 0.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 2 + - 0 + - 0 + - 0 + betrag_m: + - 308.0 + - 0.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index 325cb969c3..e0861ff20f 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -11,56 +11,60 @@ inputs: - 37 - 3 - 3 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - erziehungsgeld__anspruchshöhe_kind_m: - - 0.0 - - 0.0 - - 150.0 - - 150.0 - erziehungsgeld__grundsätzlich_anspruchsberechtigt: - - true - - true - - true - - true - erziehungsgeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 1 - familie__alleinerziehend: - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + erziehungsgeld: + anspruchshöhe_kind_m: + - 0.0 + - 0.0 + - 150.0 + - 150.0 + grundsätzlich_anspruchsberechtigt: + - true + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 1 + familie: + alleinerziehend: + - false + - false + - false + - false + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1970 - 1970 @@ -81,54 +85,58 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 1 p_id: - 0 - 1 - 2 - 3 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 2 - - 1 - - 0 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 5808.0 - - 2904.0 - - 0.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - - -1 - erziehungsgeld__betrag_m: - - 150.0 - - 150.0 - - 0.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 1 - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 154.0 - - 154.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 2 + - 1 + - 0 + - 0 + kinderfreibetrag_y: + - 5808.0 + - 2904.0 + - 0.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + - -1 + erziehungsgeld: + betrag_m: + - 150.0 + - 150.0 + - 0.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 1 + - 1 + - 0 + - 0 + betrag_m: + - 154.0 + - 154.0 + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 0e827621e3..93cdc52861 100644 --- "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -10,38 +10,41 @@ inputs: - 74 - 74 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1933 - 1933 @@ -58,32 +61,35 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 2904.0 - - 2904.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 154.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 2904.0 + - 2904.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 154.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml index 749af39467..57070b9f5e 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml @@ -10,34 +10,37 @@ inputs: - 34 - 34 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - familie__alleinerziehend: - - true - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + familie: + alleinerziehend: + - true + - false + - false + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1990 - 1990 @@ -54,40 +57,43 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 4770.0 - - 4770.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 250.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 4770.0 + - 4770.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 250.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml index 84e0b10c71..7f887bfd18 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml @@ -10,30 +10,33 @@ inputs: - 34 - 34 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 geburtsjahr: - 1990 - 1990 @@ -50,40 +53,43 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 4770.0 - - 4770.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 250.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 4770.0 + - 4770.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 250.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml index 7cb3b51d55..2f0b5cac69 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml @@ -11,36 +11,39 @@ inputs: - 34 - 10 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - 1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - 1 geburtsjahr: - 1990 - 1990 @@ -61,49 +64,52 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 - 3 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 2 - - 2 - - 0 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 9540.0 - - 9540.0 - - 0.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - - 1 - kindergeld__anzahl_ansprüche: - - 2 - - 0 - - 0 - - 0 - kindergeld__betrag_m: - - 500.0 - - 0.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 2 + - 2 + - 0 + - 0 + kinderfreibetrag_y: + - 9540.0 + - 9540.0 + - 0.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + - 1 + kindergeld: + anzahl_ansprüche: + - 2 + - 0 + - 0 + - 0 + betrag_m: + - 500.0 + - 0.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index b88d28c450..fbfd94ce51 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -11,36 +11,39 @@ inputs: - 34 - 10 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - true + - true + - false + - false + familie: + p_id_ehepartner: + - 1 + - 0 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 geburtsjahr: - 1990 - 1990 @@ -61,49 +64,52 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 1 p_id: - 0 - 1 - 2 - 3 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 2 - - 1 - - 0 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 9540.0 - - 4770.0 - - 0.0 - - 0.0 - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - - -1 - kindergeld__anzahl_ansprüche: - - 1 - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 250.0 - - 250.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 2 + - 1 + - 0 + - 0 + kinderfreibetrag_y: + - 9540.0 + - 4770.0 + - 0.0 + - 0.0 + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + - -1 + kindergeld: + anzahl_ansprüche: + - 1 + - 1 + - 0 + - 0 + betrag_m: + - 250.0 + - 250.0 + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 2349fc5286..03aaa83934 100644 --- "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -10,38 +10,41 @@ inputs: - 74 - 74 - 10 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - einkommensteuer__p_id_kinderfreibetragsempfänger_1: - - -1 - - -1 - - 0 - einkommensteuer__p_id_kinderfreibetragsempfänger_2: - - -1 - - -1 - - 1 - familie__p_id_ehepartner: - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + gemeinsam_veranlagt: + - false + - false + - false + p_id_kinderfreibetragsempfänger_1: + - -1 + - -1 + - 0 + p_id_kinderfreibetragsempfänger_2: + - -1 + - -1 + - 1 + familie: + p_id_ehepartner: + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 geburtsjahr: - 1950 - 1950 @@ -58,32 +61,35 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 0 p_id: - 0 - 1 - 2 outputs: - einkommensteuer__anzahl_kinderfreibeträge: - - 1 - - 1 - - 0 - einkommensteuer__kinderfreibetrag_y: - - 4770.0 - - 4770.0 - - 0.0 - kindergeld__anzahl_ansprüche: - - 1 - - 0 - - 0 - kindergeld__betrag_m: - - 250.0 - - 0.0 - - 0.0 + einkommensteuer: + anzahl_kinderfreibeträge: + - 1 + - 1 + - 0 + kinderfreibetrag_y: + - 4770.0 + - 4770.0 + - 0.0 + kindergeld: + anzahl_ansprüche: + - 1 + - 0 + - 0 + betrag_m: + - 250.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml index b120ff51e3..fbc74c2641 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml @@ -20,27 +20,31 @@ inputs: - 0.0 - 2.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 0.0 - - 700.0 - - 200.0 - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - familie__kind: - - false - - false - - false - - false - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 0.0 + - 700.0 + - 200.0 + - 0.0 + - 0.0 + gesamteinkommen_y: + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + familie: + kind: + - false + - false + - false + - false + - true + - true hh_id: - 2 - 2 @@ -48,20 +52,21 @@ inputs: - 2 - 2 - 2 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 12 - - 12 - - 12 - - 12 + kindergeld: + in_ausbildung: + - false + - false + - true + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 12 + - 12 + - 12 + - 12 p_id: - 12 - 13 @@ -70,17 +75,18 @@ inputs: - 16 - 17 outputs: - kindergeld__betrag_m: - - 462 - - 0 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 462 - - 462 - - 462 - - 462 - - 462 - - 462 + kindergeld: + betrag_m: + - 462 + - 0 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 462 + - 462 + - 462 + - 462 + - 462 + - 462 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml index 19fb6a0bb3..dc7ce4e606 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml @@ -10,22 +10,28 @@ inputs: - 21 arbeitsstunden_w: - 10.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - familie__kind: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 700.0 + gesamteinkommen_y: + - 0.0 + familie: + kind: + - false hh_id: - 4 - kindergeld__in_ausbildung: - - true - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - true + p_id_empfänger: + - -1 p_id: - 19 outputs: - kindergeld__betrag_m: - - 0 - kindergeld__betrag_m_hh: - - 0 + kindergeld: + betrag_m: + - 0 + betrag_m_hh: + - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml index bee5f12763..382def3736 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml @@ -10,22 +10,28 @@ inputs: - 21 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - familie__kind: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + gesamteinkommen_y: + - 0.0 + familie: + kind: + - false hh_id: - 6 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 21 outputs: - kindergeld__betrag_m: - - 0 - kindergeld__betrag_m_hh: - - 0 + kindergeld: + betrag_m: + - 0 + betrag_m_hh: + - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml index 255e8bfc09..04cc3f9418 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml @@ -22,30 +22,34 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__kind: - - false - - true - - true - - true - - true - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gesamteinkommen_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + kind: + - false + - true + - true + - true + - true + - true + - true hh_id: - 7 - 7 @@ -54,22 +58,23 @@ inputs: - 7 - 7 - 7 - kindergeld__in_ausbildung: - - false - - true - - true - - true - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 22 - - 22 - - 22 - - 22 - - 22 - - 22 + kindergeld: + in_ausbildung: + - false + - true + - true + - true + - true + - true + - true + p_id_empfänger: + - -1 + - 22 + - 22 + - 22 + - 22 + - 22 + - 22 p_id: - 22 - 23 @@ -79,19 +84,20 @@ inputs: - 27 - 28 outputs: - kindergeld__betrag_m: - - 1203 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 1203 - - 1203 - - 1203 - - 1203 - - 1203 - - 1203 - - 1203 + kindergeld: + betrag_m: + - 1203 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 1203 + - 1203 + - 1203 + - 1203 + - 1203 + - 1203 + - 1203 diff --git a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml index b94d732e80..cfe8f86976 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml @@ -18,42 +18,47 @@ inputs: - 0.0 - 25.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 20000.0 - - 20000.0 - - 0.0 - - 800.0 - - 300.0 - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - - 200000.0 - - 200000.0 - - 200000.0 - familie__kind: - - false - - false - - true - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 20000.0 + - 20000.0 + - 0.0 + - 800.0 + - 300.0 + gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 200000.0 + - 200000.0 + - 200000.0 + familie: + kind: + - false + - false + - true + - true + - true hh_id: - 8 - 8 - 8 - 8 - 8 - kindergeld__in_ausbildung: - - false - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 29 - - 29 - - 29 + kindergeld: + in_ausbildung: + - false + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 29 + - 29 + - 29 p_id: - 29 - 30 @@ -61,15 +66,16 @@ inputs: - 32 - 33 outputs: - kindergeld__betrag_m: - - 558 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 558 - - 558 - - 558 - - 558 - - 558 + kindergeld: + betrag_m: + - 558 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 558 + - 558 + - 558 + - 558 + - 558 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml index 7875b3e7c9..f31bd3afeb 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml @@ -18,42 +18,47 @@ inputs: - 10.0 - 10.0 - 30.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 0.0 - - 700.0 - - 200.0 - - 200.0 - einkommensteuer__gesamteinkommen_y: - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - familie__kind: - - false - - false - - false - - false - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 0.0 + - 700.0 + - 200.0 + - 200.0 + gesamteinkommen_y: + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + familie: + kind: + - false + - false + - false + - false + - false hh_id: - 0 - 0 - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 1 - - 1 - - 1 + kindergeld: + in_ausbildung: + - false + - false + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 1 + - 1 + - 1 p_id: - 1 - 2 @@ -61,15 +66,16 @@ inputs: - 4 - 5 outputs: - kindergeld__betrag_m: - - 194 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 194 - - 194 - - 194 - - 194 - - 194 + kindergeld: + betrag_m: + - 194 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 194 + - 194 + - 194 + - 194 + - 194 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml index f76c34f824..9234618e5f 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml @@ -20,27 +20,31 @@ inputs: - 0.0 - 2.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 0.0 - - 700.0 - - 200.0 - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - familie__kind: - - false - - false - - false - - true - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 0.0 + - 700.0 + - 200.0 + - 0.0 + - 0.0 + gesamteinkommen_y: + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + familie: + kind: + - false + - false + - false + - true + - true + - true hh_id: - 1 - 1 @@ -48,20 +52,21 @@ inputs: - 1 - 1 - 1 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 6 - - 6 - - 6 - - 6 + kindergeld: + in_ausbildung: + - false + - false + - true + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 6 + - 6 + - 6 + - 6 p_id: - 6 - 7 @@ -70,17 +75,18 @@ inputs: - 10 - 11 outputs: - kindergeld__betrag_m: - - 588 - - 0 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 588 - - 588 - - 588 - - 588 - - 588 - - 588 + kindergeld: + betrag_m: + - 588 + - 0 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 588 + - 588 + - 588 + - 588 + - 588 + - 588 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml index 56a3a2aa80..b5f88a4762 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml @@ -10,22 +10,28 @@ inputs: - 21 arbeitsstunden_w: - 10.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - familie__kind: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 700.0 + gesamteinkommen_y: + - 0.0 + familie: + kind: + - false hh_id: - 3 - kindergeld__in_ausbildung: - - true - kindergeld__p_id_empfänger: - - 18 + kindergeld: + in_ausbildung: + - true + p_id_empfänger: + - 18 p_id: - 18 outputs: - kindergeld__betrag_m: - - 194 - kindergeld__betrag_m_hh: - - 194 + kindergeld: + betrag_m: + - 194 + betrag_m_hh: + - 194 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml index 9633493d69..e3150ee849 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml @@ -10,22 +10,28 @@ inputs: - 21 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - familie__kind: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + gesamteinkommen_y: + - 0.0 + familie: + kind: + - false hh_id: - 5 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - 20 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - 20 p_id: - 20 outputs: - kindergeld__betrag_m: - - 0 - kindergeld__betrag_m_hh: - - 0 + kindergeld: + betrag_m: + - 0 + betrag_m_hh: + - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml index abf27466be..f2435c0cac 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml @@ -12,37 +12,44 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - - 0.0 - familie__kind: - - false - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + gesamteinkommen_y: + - 0.0 + - 0.0 + familie: + kind: + - false + - true hh_id: - 10 - 10 - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 34 + kindergeld: + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 34 p_id: - 34 - 35 outputs: - kinderbonus__betrag_m: - - 25.0 - - 0 - kinderbonus__betrag_m_hh: - - 25.0 - - 25.0 - kindergeld__betrag_m: - - 204 - - 0 - kindergeld__betrag_m_hh: - - 204 - - 204 + kinderbonus: + betrag_m: + - 25.0 + - 0 + betrag_m_hh: + - 25.0 + - 25.0 + kindergeld: + betrag_m: + - 204 + - 0 + betrag_m_hh: + - 204 + - 204 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml index a438fd82da..da133f39d2 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml @@ -18,42 +18,47 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 20000.0 - - 20000.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - - 0.0 - - 0.0 - - 0.0 - familie__kind: - - false - - false - - true - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 20000.0 + - 20000.0 + - 0.0 + - 0.0 + - 0.0 + gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 0.0 + - 0.0 + - 0.0 + familie: + kind: + - false + - false + - true + - true + - true hh_id: - 0 - 0 - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 0 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - false + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 0 + - 0 + - 0 p_id: - 0 - 1 @@ -61,15 +66,17 @@ inputs: - 3 - 4 outputs: - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - - 221.0 - - 221.0 - - 221.0 - kindergeld__betrag_m: - - 663.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + arbeitslosengeld_2: + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + - 221.0 + - 221.0 + - 221.0 + kindergeld: + betrag_m: + - 663.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml index deaded273b..bd0ca1c59e 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml @@ -14,48 +14,55 @@ inputs: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 20000.0 - - 20000.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 200000.0 - - 200000.0 - - 200000.0 - familie__kind: - - false - - false - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 20000.0 + - 20000.0 + - 0.0 + gesamteinkommen_y: + - 200000.0 + - 200000.0 + - 200000.0 + familie: + kind: + - false + - false + - true hh_id: - 11 - 11 - 11 - kindergeld__in_ausbildung: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 36 + kindergeld: + in_ausbildung: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 36 p_id: - 36 - 37 - 38 outputs: - kinderbonus__betrag_m: - - 12.5 - - 0 - - 0 - kinderbonus__betrag_m_hh: - - 12.5 - - 12.5 - - 12.5 - kindergeld__betrag_m: - - 219 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 219 - - 219 - - 219 + kinderbonus: + betrag_m: + - 12.5 + - 0 + - 0 + betrag_m_hh: + - 12.5 + - 12.5 + - 12.5 + kindergeld: + betrag_m: + - 219 + - 0 + - 0 + betrag_m_hh: + - 219 + - 219 + - 219 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml index fadd4ea62c..dccedfcfca 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml @@ -10,26 +10,33 @@ inputs: - 35 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 0.0 - familie__kind: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + gesamteinkommen_y: + - 0.0 + familie: + kind: + - false hh_id: - 12 - kindergeld__in_ausbildung: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 p_id: - 39 outputs: - kinderbonus__betrag_m: - - 0.0 - kinderbonus__betrag_m_hh: - - 0.0 - kindergeld__betrag_m: - - 0 - kindergeld__betrag_m_hh: - - 0 + kinderbonus: + betrag_m: + - 0.0 + betrag_m_hh: + - 0.0 + kindergeld: + betrag_m: + - 0 + betrag_m_hh: + - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml index 50106af9c7..4a57f0cd23 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml @@ -18,42 +18,47 @@ inputs: - 0.0 - 2.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 0.0 - - 200.0 - - 0.0 - - 0.0 - einkommensteuer__gesamteinkommen_y: - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - - 3000.0 - familie__kind: - - false - - false - - true - - true - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 0.0 + - 200.0 + - 0.0 + - 0.0 + gesamteinkommen_y: + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + - 3000.0 + familie: + kind: + - false + - false + - true + - true + - true hh_id: - 13 - 13 - 13 - 13 - 13 - kindergeld__in_ausbildung: - - false - - false - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 40 - - 40 - - 40 + kindergeld: + in_ausbildung: + - false + - false + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 40 + - 40 + - 40 p_id: - 40 - 41 @@ -61,15 +66,16 @@ inputs: - 44 - 45 outputs: - kindergeld__betrag_m: - - 750 - - 0 - - 0 - - 0 - - 0 - kindergeld__betrag_m_hh: - - 750 - - 750 - - 750 - - 750 - - 750 + kindergeld: + betrag_m: + - 750 + - 0 + - 0 + - 0 + - 0 + betrag_m_hh: + - 750 + - 750 + - 750 + - 750 + - 750 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml index 5c65b90646..c92da5aa0d 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml @@ -12,25 +12,29 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - familie__kind: - - false - - true + familie: + kind: + - false + - true hh_id: - 0 - 0 - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 outputs: - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 250.0 - kindergeld__betrag_m: - - 250.0 - - 0.0 + arbeitslosengeld_2: + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 250.0 + kindergeld: + betrag_m: + - 250.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml index 5c65b90646..c92da5aa0d 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml @@ -12,25 +12,29 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - familie__kind: - - false - - true + familie: + kind: + - false + - true hh_id: - 0 - 0 - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 outputs: - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 250.0 - kindergeld__betrag_m: - - 250.0 - - 0.0 + arbeitslosengeld_2: + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 250.0 + kindergeld: + betrag_m: + - 250.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml index 28ddd9780f..fbdada159d 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml @@ -14,32 +14,36 @@ inputs: - 40.0 - 0.0 - 0.0 - familie__kind: - - false - - true - - true + familie: + kind: + - false + - true + - true hh_id: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 outputs: - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 250.0 - - 250.0 - kindergeld__betrag_m: - - 500.0 - - 0.0 - - 0.0 + arbeitslosengeld_2: + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 250.0 + - 250.0 + kindergeld: + betrag_m: + - 500.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml index 28ddd9780f..fbdada159d 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml @@ -14,32 +14,36 @@ inputs: - 40.0 - 0.0 - 0.0 - familie__kind: - - false - - true - - true + familie: + kind: + - false + - true + - true hh_id: - 0 - 0 - 0 - kindergeld__in_ausbildung: - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - 0 - - 0 + kindergeld: + in_ausbildung: + - false + - true + - true + p_id_empfänger: + - -1 + - 0 + - 0 p_id: - 0 - 1 - 2 outputs: - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 250.0 - - 250.0 - kindergeld__betrag_m: - - 500.0 - - 0.0 - - 0.0 + arbeitslosengeld_2: + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 250.0 + - 250.0 + kindergeld: + betrag_m: + - 500.0 + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml index 8af0fb5b30..7673404c54 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml @@ -9,85 +9,97 @@ inputs: alter: - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1973 hh_id: - 2 - 2 - kindergeld__betrag_m_hh: - - 0.0 - - 0.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 800.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 512.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 0.0 + - 0.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - -1 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 800.0 + - 0.0 + nettoeinkommen_eltern_m: + - 512.0 + - 0.0 p_id: - 4 - 5 - unterhalt__tatsächlich_erhaltener_betrag_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - unterhaltsvorschuss__betrag_m: + wohnen: + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 +outputs: + kinderzuschlag: + anspruchshöhe_m_bg: - 0.0 - 0.0 - vermögen: + basisbetrag_m_bg: - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 -outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml index e462edee7d..eccfb6fb78 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml @@ -10,50 +10,56 @@ inputs: - 30 - 30 - 2 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - 1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 2 + - 1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 1 + p_id_elternteil_2: + - -1 + - -1 + - 2 geburtsjahr: - 1986 - 1986 @@ -62,60 +68,66 @@ inputs: - 1 - 1 - 1 - kindergeld__betrag_m_hh: - - 190.0 - - 190.0 - - 190.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 1 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 600.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 322.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 1 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 600.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 322.0 + - 0.0 + - 0.0 p_id: - 1 - 2 - 3 - unterhalt__tatsächlich_erhaltener_betrag_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - unterhaltsvorschuss__betrag_m: + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 +outputs: + kinderzuschlag: + anspruchshöhe_m_bg: - 0.0 - 0.0 - 0.0 - vermögen: + basisbetrag_m_bg: - 0.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 -outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml index b45f3be1cf..48b6443977 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml @@ -10,50 +10,56 @@ inputs: - 40 - 40 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 31 - - 30 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 31 + - 30 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 30 - familie__p_id_elternteil_2: - - -1 - - -1 - - 31 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 30 + p_id_elternteil_2: + - -1 + - -1 + - 31 geburtsjahr: - 1976 - 1976 @@ -62,60 +68,66 @@ inputs: - 11 - 11 - 11 - kindergeld__betrag_m_hh: - - 190.0 - - 190.0 - - 190.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 30 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 644.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 30 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 p_id: - 30 - 31 - 32 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 4000.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 140.0 - - 140.0 - - 140.0 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 - - 140.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 140.0 + - 140.0 + - 140.0 + basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml index 09afb79ff9..04ca099273 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the first - month + Wealth above wealth allowance leading to a deduction in Kinderzuschlag in the + first month precision_atol: 0.01 source: Inspired by Page 12 of https://www.arbeitsagentur.de/datei/ba146349.pdf inputs: @@ -12,50 +12,56 @@ inputs: - 40 - 40 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 34 - - 33 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 34 + - 33 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 33 - familie__p_id_elternteil_2: - - -1 - - -1 - - 34 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 33 + p_id_elternteil_2: + - -1 + - -1 + - 34 geburtsjahr: - 1976 - 1976 @@ -64,60 +70,66 @@ inputs: - 12 - 12 - 12 - kindergeld__betrag_m_hh: - - 190.0 - - 190.0 - - 190.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 33 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 644.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 33 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 p_id: - 33 - 34 - 35 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 17400.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 90.0 - - 90.0 - - 90.0 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 - - 140.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 90.0 + - 90.0 + - 90.0 + basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml index b25e8ef23b..547d5856a7 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml @@ -10,50 +10,56 @@ inputs: - 40 - 40 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 37 - - 36 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 37 + - 36 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 36 - familie__p_id_elternteil_2: - - -1 - - -1 - - 37 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 36 + p_id_elternteil_2: + - -1 + - -1 + - 37 geburtsjahr: - 1976 - 1976 @@ -62,60 +68,66 @@ inputs: - 13 - 13 - 13 - kindergeld__betrag_m_hh: - - 190.0 - - 190.0 - - 190.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 36 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 644.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 36 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 p_id: - 36 - 37 - 38 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 25000.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 - - 140.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml index 112b7266e8..f57cb55a38 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml @@ -10,50 +10,56 @@ inputs: - 30 - 30 - 2 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 19 - - 18 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 19 + - 18 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 18 - familie__p_id_elternteil_2: - - -1 - - -1 - - 19 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 18 + p_id_elternteil_2: + - -1 + - -1 + - 19 geburtsjahr: - 1986 - 1986 @@ -62,60 +68,66 @@ inputs: - 7 - 7 - 7 - kindergeld__betrag_m_hh: - - 190.0 - - 190.0 - - 190.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 18 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1200.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 644.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 190.0 + - 190.0 + - 190.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 18 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 644.0 + - 0.0 + - 0.0 p_id: - 18 - 19 - 20 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 140.0 - - 140.0 - - 140.0 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 - - 140.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 140.0 + - 140.0 + - 140.0 + basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml index 9f63c26e15..c68e5b1d9c 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml @@ -11,61 +11,67 @@ inputs: - 38 - 15 - 13 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 24 - - 23 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 24 + - 23 + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1300.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 23 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 - - 24 - - 24 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1300.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 23 + - 23 + p_id_elternteil_2: + - -1 + - -1 + - 24 + - 24 geburtsjahr: - 1977 - 1979 @@ -76,74 +82,80 @@ inputs: - 9 - 9 - 9 - kindergeld__betrag_m_hh: - - 384.0 - - 384.0 - - 384.0 - - 384.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__in_ausbildung: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 23 - - 23 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1300.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 900.0 - - 0.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 384.0 + - 384.0 + - 384.0 + - 384.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + in_ausbildung: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 23 + - 23 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1300.0 + - 0.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 900.0 + - 0.0 + - 0.0 + - 0.0 p_id: - 23 - 24 - 25 - 26 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 800.0 - - 800.0 - - 800.0 - - 800.0 - wohnen__heizkosten_m_hh: - - 90.0 - - 90.0 - - 90.0 - - 90.0 + wohnen: + bruttokaltmiete_m_hh: + - 800.0 + - 800.0 + - 800.0 + - 800.0 + heizkosten_m_hh: + - 90.0 + - 90.0 + - 90.0 + - 90.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 340.0 - - 340.0 - - 340.0 - - 340.0 - kinderzuschlag__basisbetrag_m_bg: - - 340.0 - - 340.0 - - 340.0 - - 340.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 340.0 + - 340.0 + - 340.0 + - 340.0 + basisbetrag_m_bg: + - 340.0 + - 340.0 + - 340.0 + - 340.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml index ebe93d0120..ec39d11eaa 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml @@ -9,85 +9,97 @@ inputs: alter: - 28 - 1 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 16 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 16 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1991 - 2018 hh_id: - 6 - 6 - kindergeld__betrag_m_hh: - - 194.0 - - 194.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 16 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1000.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 719.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 194.0 + - 194.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 16 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + nettoeinkommen_eltern_m: + - 719.0 + - 0.0 p_id: - 16 - 17 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 + wohnen: + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 10.0 - - 10.0 - kinderzuschlag__basisbetrag_m_bg: - - 10.0 - - 10.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 10.0 + - 10.0 + basisbetrag_m_bg: + - 10.0 + - 10.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml index 7984ec380e..b9e15924f9 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml @@ -9,85 +9,97 @@ inputs: alter: - 38 - 15 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 21 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 21 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1982 - 2005 hh_id: - 8 - 8 - kindergeld__betrag_m_hh: - - 204.0 - - 204.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 21 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1000.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 719.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 204.0 + - 204.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 21 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + nettoeinkommen_eltern_m: + - 719.0 + - 0.0 p_id: - 21 - 22 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 + wohnen: + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 185 - - 185 - kinderzuschlag__basisbetrag_m_bg: - - 185 - - 185 + kinderzuschlag: + anspruchshöhe_m_bg: + - 185 + - 185 + basisbetrag_m_bg: + - 185 + - 185 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml index 14b4bd5f38..09a6ac954a 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml @@ -10,50 +10,56 @@ inputs: - 35 - 33 - 12 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 28 - - 27 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 28 + - 27 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1600.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 27 - familie__p_id_elternteil_2: - - -1 - - -1 - - 28 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1600.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 27 + p_id_elternteil_2: + - -1 + - -1 + - 28 geburtsjahr: - 1986 - 1988 @@ -62,60 +68,66 @@ inputs: - 10 - 10 - 10 - kindergeld__betrag_m_hh: - - 219.0 - - 219.0 - - 219.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__in_ausbildung: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 27 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1600.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1200.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 219.0 + - 219.0 + - 219.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + in_ausbildung: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 27 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1600.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1200.0 + - 0.0 + - 0.0 p_id: - 27 - 28 - 29 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 750.0 - - 750.0 - - 750.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 750.0 + - 750.0 + - 750.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 205.0 - - 205.0 - - 205.0 - kinderzuschlag__basisbetrag_m_bg: - - 205.0 - - 205.0 - - 205.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 205.0 + - 205.0 + - 205.0 + basisbetrag_m_bg: + - 205.0 + - 205.0 + - 205.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml index a404ee09b2..c91eeba816 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml @@ -9,85 +9,97 @@ inputs: alter: - 43 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 39 - familie__p_id_elternteil_2: - - -1 - - 39 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 39 + p_id_elternteil_2: + - -1 + - 39 geburtsjahr: - 1980 - 2012 hh_id: - 14 - 14 - kindergeld__betrag_m_hh: - - 250.0 - - 250.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 39 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1660.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1160.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 250.0 + - 250.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 39 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 p_id: - 39 - 40 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 5000.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 178.0 - - 178.0 - kinderzuschlag__basisbetrag_m_bg: - - 178.0 - - 178.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 178.0 + - 178.0 + basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml index bffe16314a..b69ea0ceec 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Caution: Regression test for child income. Same as hh_id_14.yaml but with made up - child income, so the results are not based on any source. + Caution: Regression test for child income. Same as hh_id_14.yaml but with made + up child income, so the results are not based on any source. precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: @@ -11,85 +11,97 @@ inputs: alter: - 38 - 15 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 2.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 150.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 45 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 150.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 45 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1980 - 2012 hh_id: - 17 - 17 - kindergeld__betrag_m_hh: - - 250.0 - - 250.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 45 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1660.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1160.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 250.0 + - 250.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 45 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 p_id: - 45 - 46 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 5000.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 160.0 - - 160.0 - kinderzuschlag__basisbetrag_m_bg: - - 160.0 - - 160.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 160.0 + - 160.0 + basisbetrag_m_bg: + - 160.0 + - 160.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index f82c0f6c87..307f27a17e 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -11,85 +11,97 @@ inputs: alter: - 43 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 43 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 43 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1980 - 2012 hh_id: - 16 - 16 - kindergeld__betrag_m_hh: - - 250.0 - - 250.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 43 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1660.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1160.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 250.0 + - 250.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 43 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 p_id: - 43 - 44 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 60000.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - kinderzuschlag__basisbetrag_m_bg: - - 178.0 - - 178.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index 2c05e2a494..c417a8d888 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth exemptions - (still below vermögensfreibetrag_in_karenzzeit_bg). + Same as hh_id_14.yaml but higher made up vermögen_bg to test wealth + exemptions (still below vermögensfreibetrag_in_karenzzeit_bg). precision_atol: 0.01 source: https://www.kinderzuschlagrechner24.de/kinderzuschlag/?hp=0&ap0=0&ap1a=0&ap1=1&ap2=0&ap4=0&ap5=0&ww=0&is=0&wgjn=0&kg=0&fuerJ=2023&lS=1&Seite=2#RechnerStart inputs: @@ -11,85 +11,97 @@ inputs: alter: - 43 - 11 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 41 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 41 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1980 - 2012 hh_id: - 15 - 15 - kindergeld__betrag_m_hh: - - 250.0 - - 250.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 41 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1660.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1160.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 250.0 + - 250.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - true + p_id_empfänger: + - -1 + - 41 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1660.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1160.0 + - 0.0 p_id: - 41 - 42 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 160.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 30000.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 + wohnen: + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 178.0 - - 178.0 - kinderzuschlag__basisbetrag_m_bg: - - 178.0 - - 178.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 178.0 + - 178.0 + basisbetrag_m_bg: + - 178.0 + - 178.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml index ea6683a1ff..a2346e9aac 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml @@ -10,120 +10,135 @@ inputs: - 40 - 10 - 40 - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__bruttoeinkommen_m: - - 1000.0 - - 0.0 - - 1000.0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 1000.0 - - 0.0 - - 1000.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + - 0.0 + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + - 0.0 + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + bruttoeinkommen_m: + - 1000.0 + - 0.0 + - 1000.0 + eigenbedarf_gedeckt: + - false + - false + - false + nettoeinkommen_nach_abzug_freibetrag_m: + - 1000.0 + - 0.0 + - 1000.0 + p_id_einstandspartner: + - -1 + - -1 + - -1 arbeitsstunden_w: - 40.0 - 0.0 - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - - 1000.0 - familie__alleinerziehend: - - true - - false - - false - familie__kind: - - false - - true - - false - familie__p_id_elternteil_1: - - -1 - - 49 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 0.0 + - 1000.0 + familie: + alleinerziehend: + - true + - false + - false + kind: + - false + - true + - false + p_id_elternteil_1: + - -1 + - 49 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 hh_id: - 18 - 18 - 18 - kindergeld__in_ausbildung: - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 49 - - -1 + kindergeld: + in_ausbildung: + - false + - false + - false + p_id_empfänger: + - -1 + - 49 + - -1 p_id: - 49 - 50 - 51 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohnen: + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 outputs: - arbeitslosengeld_2__bruttokaltmiete_m_bg: - - 466.67 - - 466.67 - - 233.33 - kinderzuschlag__anspruchshöhe_m_bg: - - 292.0 - - 292.0 - - 0.0 + arbeitslosengeld_2: + bruttokaltmiete_m_bg: + - 466.67 + - 466.67 + - 233.33 + kinderzuschlag: + anspruchshöhe_m_bg: + - 292.0 + - 292.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml index 0ea9c80e05..04eec5b8ed 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml @@ -9,91 +9,106 @@ inputs: alter: - 40 - 10 - arbeitslosengeld_2__anrechnungsfreies_einkommen_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__bruttoeinkommen_m: - - 1000.0 - - 0.0 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 1000.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + anrechnungsfreies_einkommen_m: + - 0.0 + - 0.0 + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + bruttoeinkommen_m: + - 1000.0 + - 0.0 + eigenbedarf_gedeckt: + - false + - false + nettoeinkommen_nach_abzug_freibetrag_m: + - 1000.0 + - 0.0 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 40.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 47 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 47 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 18 - 18 - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 47 + kindergeld: + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 47 p_id: - 47 - 48 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohnen: + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + heizkosten_m_hh: + - 100.0 + - 100.0 + wohnfläche_hh: + - 70.0 + - 70.0 +outputs: + arbeitslosengeld_2: + bruttokaltmiete_m_bg: - 700.0 - 700.0 - wohnen__heizkosten_m_hh: - - 100.0 - - 100.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 -outputs: - arbeitslosengeld_2__bruttokaltmiete_m_bg: - - 700.0 - - 700.0 - kinderzuschlag__anspruchshöhe_m_bg: - - 292.0 - - 292.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 292.0 + - 292.0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml index 293f6b50f3..2fbdec3714 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -12,63 +12,68 @@ inputs: - 12 - 10 - 2 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 9 + - 8 arbeitsstunden_w: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 2000.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 8 - - 8 - - 8 - familie__p_id_elternteil_2: - - -1 - - -1 - - 9 - - 9 - - 9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 2000.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 8 + - 8 + - 8 + p_id_elternteil_2: + - -1 + - -1 + - 9 + - 9 + - 9 geburtsjahr: - 1973 - 1976 @@ -81,88 +86,94 @@ inputs: - 4 - 4 - 4 - kindergeld__betrag_m_hh: - - 462.0 - - 462.0 - - 462.0 - - 462.0 - - 462.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - true - kindergeld__in_ausbildung: - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 8 - - 8 - - 8 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 2000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 1500.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 462.0 + - 462.0 + - 462.0 + - 462.0 + - 462.0 + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + in_ausbildung: + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 8 + - 8 + - 8 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 2000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + nettoeinkommen_eltern_m: + - 1500.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 p_id: - 8 - 9 - 10 - 11 - 12 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - wohnen__heizkosten_m_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 + wohnen: + bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + heizkosten_m_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 216.65 - - 216.65 - - 216.65 - - 216.65 - - 216.65 - kinderzuschlag__basisbetrag_m_bg: - - 216.65 - - 216.65 - - 216.65 - - 216.65 - - 216.65 + kinderzuschlag: + anspruchshöhe_m_bg: + - 216.65 + - 216.65 + - 216.65 + - 216.65 + - 216.65 + basisbetrag_m_bg: + - 216.65 + - 216.65 + - 216.65 + - 216.65 + - 216.65 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml index 1c87fbc0fb..a7b16d8abf 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -9,82 +9,93 @@ inputs: alter: - 28 - 1 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__mehrbedarf_alleinerziehend_m_bg: - - 0.36 - - 0.36 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + eigenbedarf_gedeckt: + - false + - false + mehrbedarf_alleinerziehend_m_bg: + - 0.36 + - 0.36 + p_id_einstandspartner: + - -1 + - -1 arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 6 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1981 - 2008 hh_id: - 3 - 3 - kindergeld__betrag_m_hh: - - 164.0 - - 164.0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__in_ausbildung: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - 6 - kinderzuschlag__bruttoeinkommen_eltern_m: - - 1000.0 - - 0.0 - kinderzuschlag__nettoeinkommen_eltern_m: - - 719.0 - - 0.0 + kindergeld: + betrag_m_hh: + - 164.0 + - 164.0 + grundsätzlich_anspruchsberechtigt: + - false + - true + in_ausbildung: + - false + - false + p_id_empfänger: + - -1 + - 6 + kinderzuschlag: + bruttoeinkommen_eltern_m: + - 1000.0 + - 0.0 + nettoeinkommen_eltern_m: + - 719.0 + - 0.0 p_id: - 6 - 7 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 80.0 - - 80.0 + wohnen: + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 80.0 + - 80.0 outputs: - kinderzuschlag__anspruchshöhe_m_bg: - - 140.0 - - 140.0 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 + kinderzuschlag: + anspruchshöhe_m_bg: + - 140.0 + - 140.0 + basisbetrag_m_bg: + - 140.0 + - 140.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml index dcf3fbbb9a..eb97c34d9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1616.0142857142855 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1616.0142857142855 hh_id: - 1045 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1045 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 309.0 - lohnsteuer__betrag_soli_m: - - 17.014285714285716 + lohnsteuer: + betrag_m: + - 309.0 + betrag_soli_m: + - 17.014285714285716 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml index 591087aa2e..90a7ff72e4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1625.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1625.1 hh_id: - 1051 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1051 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0111 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0111 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 347.0 - lohnsteuer__betrag_soli_m: - - 18.9 + lohnsteuer: + betrag_m: + - 347.0 + betrag_soli_m: + - 18.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml index cfd01b933a..dfc89f5ed4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1645.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1645.2 hh_id: - 1081 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1081 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 321.0 - lohnsteuer__betrag_soli_m: - - 17.4 + lohnsteuer: + betrag_m: + - 321.0 + betrag_soli_m: + - 17.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml index 842bc1ad02..7c01bf203d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7339.585 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7339.585 hh_id: - 1134 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1134 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2511.0 - lohnsteuer__betrag_soli_m: - - 138.1325 + lohnsteuer: + betrag_m: + - 2511.0 + betrag_soli_m: + - 138.1325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml index bf00946ef6..28cd3f8dcb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5890.408333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5890.408333333333 hh_id: - 121 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 121 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1879.0 - lohnsteuer__betrag_soli_m: - - 103.39083333333332 + lohnsteuer: + betrag_m: + - 1879.0 + betrag_soli_m: + - 103.39083333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml index 6887b3a531..3429fc679a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4583.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4583.1 hh_id: - 1214 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1214 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0091 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0091 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1388.0 - lohnsteuer__betrag_soli_m: - - 76.2 + lohnsteuer: + betrag_m: + - 1388.0 + betrag_soli_m: + - 76.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml index f9d90ad217..1192bc830a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6027.814285714286 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6027.814285714286 hh_id: - 1219 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1219 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1981.0 - lohnsteuer__betrag_soli_m: - - 108.98571428571428 + lohnsteuer: + betrag_m: + - 1981.0 + betrag_soli_m: + - 108.98571428571428 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml index 6c1d406ad4..bda5e6a407 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6083.808333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6083.808333333333 hh_id: - 1435 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1435 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0060999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0060999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1973.0 - lohnsteuer__betrag_soli_m: - - 108.5375 + lohnsteuer: + betrag_m: + - 1973.0 + betrag_soli_m: + - 108.5375 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml index efd43409c3..0e09406a63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4618.82 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4618.82 hh_id: - 1462 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1462 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1372.0 - lohnsteuer__betrag_soli_m: - - 75.48 + lohnsteuer: + betrag_m: + - 1372.0 + betrag_soli_m: + - 75.48 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml index 8765778b7f..5b44bb3ebf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2957.9541666666664 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2957.9541666666664 hh_id: - 1476 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1476 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0108 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0108 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 754.0 - lohnsteuer__betrag_soli_m: - - 41.52 + lohnsteuer: + betrag_m: + - 754.0 + betrag_soli_m: + - 41.52 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml index 1e5f2284f0..39d6b70aec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3159.12 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3159.12 hh_id: - 1555 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 1555 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 252.0 - lohnsteuer__betrag_soli_m: - - 13.88 + lohnsteuer: + betrag_m: + - 252.0 + betrag_soli_m: + - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml index cea9c13d3c..5e5d8852ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6069.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6069.3 hh_id: - 1627 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 1627 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1547.0 - lohnsteuer__betrag_soli_m: - - 84.9 + lohnsteuer: + betrag_m: + - 1547.0 + betrag_soli_m: + - 84.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml index 7106a6e256..620224ecb9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5900.91 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5900.91 hh_id: - 1793 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1793 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0102 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0102 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1913.0 - lohnsteuer__betrag_soli_m: - - 105.24 + lohnsteuer: + betrag_m: + - 1913.0 + betrag_soli_m: + - 105.24 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml index 225bb34f27..630eeeba5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7528.871666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7528.871666666667 hh_id: - 1796 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1796 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2587.0 - lohnsteuer__betrag_soli_m: - - 142.30333333333334 + lohnsteuer: + betrag_m: + - 2587.0 + betrag_soli_m: + - 142.30333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml index c942c0ead8..ba049ef8fb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6044.18 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6044.18 hh_id: - 1915 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1915 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0066 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0066 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1960.0 - lohnsteuer__betrag_soli_m: - - 107.81 + lohnsteuer: + betrag_m: + - 1960.0 + betrag_soli_m: + - 107.81 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml index d8bf75d5b7..1d80b429cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2966.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2966.4 hh_id: - 1982 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1982 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0116 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0116 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 756.0 - lohnsteuer__betrag_soli_m: - - 41.4 + lohnsteuer: + betrag_m: + - 756.0 + betrag_soli_m: + - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml index 20d8fe775d..0e6a6270da 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 77.52857142857142 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 77.52857142857142 hh_id: - 2042 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2042 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 8.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 8.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml index a2622e8991..01ed39fdba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1631.8508333333332 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1631.8508333333332 hh_id: - 2174 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2174 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 349.0 - lohnsteuer__betrag_soli_m: - - 19.2225 + lohnsteuer: + betrag_m: + - 349.0 + betrag_soli_m: + - 19.2225 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml index ef27c3a976..adccd2c186 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4384.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4384.5 hh_id: - 2224 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2224 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0074 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0074 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1317.0 - lohnsteuer__betrag_soli_m: - - 72.3 + lohnsteuer: + betrag_m: + - 1317.0 + betrag_soli_m: + - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml index eb6886b754..777e0e88fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7532.46 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7532.46 hh_id: - 2451 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2451 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0066 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0066 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2601.0 - lohnsteuer__betrag_soli_m: - - 143.08 + lohnsteuer: + betrag_m: + - 2601.0 + betrag_soli_m: + - 143.08 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml index 1e6e3fbc9f..b661768ce1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1575.0857142857142 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1575.0857142857142 hh_id: - 2552 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2552 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 293.0 - lohnsteuer__betrag_soli_m: - - 16.114285714285714 + lohnsteuer: + betrag_m: + - 293.0 + betrag_soli_m: + - 16.114285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml index 596d1642fb..e2e1836ae1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6051.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6051.3 hh_id: - 2593 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2593 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0101 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0101 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1936.0 - lohnsteuer__betrag_soli_m: - - 106.5 + lohnsteuer: + betrag_m: + - 1936.0 + betrag_soli_m: + - 106.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml index 0d710d7bac..cc6b4a5a45 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 40.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 40.8 hh_id: - 2601 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 2601 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml index 096f5b698c..a73b48ce19 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3018.7714285714283 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3018.7714285714283 hh_id: - 2639 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2639 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0074 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0074 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 814.0 - lohnsteuer__betrag_soli_m: - - 44.74285714285714 + lohnsteuer: + betrag_m: + - 814.0 + betrag_soli_m: + - 44.74285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml index 6a075cd338..eefd14a34d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7493.541666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7493.541666666667 hh_id: - 2726 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2726 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2559.0 - lohnsteuer__betrag_soli_m: - - 140.795 + lohnsteuer: + betrag_m: + - 2559.0 + betrag_soli_m: + - 140.795 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml index d380274e80..1e40463f1c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4471.500000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4471.500000000001 hh_id: - 2732 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2732 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1347.0 - lohnsteuer__betrag_soli_m: - - 74.10000000000001 + lohnsteuer: + betrag_m: + - 1347.0 + betrag_soli_m: + - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml index 3fba94d72f..88fc84541c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4617.042857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4617.042857142857 hh_id: - 2861 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2861 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0116 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0116 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1365.0 - lohnsteuer__betrag_soli_m: - - 75.08571428571427 + lohnsteuer: + betrag_m: + - 1365.0 + betrag_soli_m: + - 75.08571428571427 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml index 91d178a9c2..09d02b2696 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1484.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1484.7 hh_id: - 2924 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2924 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011699999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011699999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 294.0 - lohnsteuer__betrag_soli_m: - - 15.9 + lohnsteuer: + betrag_m: + - 294.0 + betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml index 8a2e752237..b1b72a468d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4425.514285714285 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4425.514285714285 hh_id: - 400 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 400 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0091 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0091 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1326.0 - lohnsteuer__betrag_soli_m: - - 72.9 + lohnsteuer: + betrag_m: + - 1326.0 + betrag_soli_m: + - 72.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml index 37b568ef4d..2fb5f2010b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 45.342857142857135 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 45.342857142857135 hh_id: - 470 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 470 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml index afc2c33874..3ed112237c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4493.36 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4493.36 hh_id: - 561 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 561 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1357.0 - lohnsteuer__betrag_soli_m: - - 74.68 + lohnsteuer: + betrag_m: + - 1357.0 + betrag_soli_m: + - 74.68 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml index 97130b38ad..2848e0bc7f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7448.75 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7448.75 hh_id: - 583 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 583 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2553.0 - lohnsteuer__betrag_soli_m: - - 140.45 + lohnsteuer: + betrag_m: + - 2553.0 + betrag_soli_m: + - 140.45 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml index ed5b2da78d..675dec066e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7543.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7543.5 hh_id: - 72 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 72 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2601.0 - lohnsteuer__betrag_soli_m: - - 143.05714285714285 + lohnsteuer: + betrag_m: + - 2601.0 + betrag_soli_m: + - 143.05714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml index 4b6791ab49..b8598ad43e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1612.88 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1612.88 hh_id: - 736 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 736 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 343.0 - lohnsteuer__betrag_soli_m: - - 18.88 + lohnsteuer: + betrag_m: + - 343.0 + betrag_soli_m: + - 18.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml index 7c572b7354..0405a29058 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2924.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2924.1 hh_id: - 76 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 4 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 4 p_id: - 76 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0076 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0076 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 435.0 - lohnsteuer__betrag_soli_m: - - 23.95714285714286 + lohnsteuer: + betrag_m: + - 435.0 + betrag_soli_m: + - 23.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml index bf1a9f2881..3343ed5c6d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6033.59 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6033.59 hh_id: - 765 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 765 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0083 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0083 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1989.0 - lohnsteuer__betrag_soli_m: - - 109.39 + lohnsteuer: + betrag_m: + - 1989.0 + betrag_soli_m: + - 109.39 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml index 2ee1c3447e..26940ec12f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4492.9325 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4492.9325 hh_id: - 769 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 769 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011699999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011699999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1316.0 - lohnsteuer__betrag_soli_m: - - 72.4075 + lohnsteuer: + betrag_m: + - 1316.0 + betrag_soli_m: + - 72.4075 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml index 599565fe46..910b7c2582 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 241.62857142857143 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 241.62857142857143 hh_id: - 786 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 786 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 27.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 27.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml index 68be58912d..931a29ab87 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5937.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5937.599999999999 hh_id: - 790 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 790 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0086 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0086 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1926.0 - lohnsteuer__betrag_soli_m: - - 105.9 + lohnsteuer: + betrag_m: + - 1926.0 + betrag_soli_m: + - 105.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml index 0119cfe243..f83c49dd4d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4625.3275 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4625.3275 hh_id: - 802 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 802 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0108 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0108 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1406.0 - lohnsteuer__betrag_soli_m: - - 77.37583333333333 + lohnsteuer: + betrag_m: + - 1406.0 + betrag_soli_m: + - 77.37583333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml index 9baae9d860..1cf5341f65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1478.27 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1478.27 hh_id: - 830 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 830 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 291.0 - lohnsteuer__betrag_soli_m: - - 16.03 + lohnsteuer: + betrag_m: + - 291.0 + betrag_soli_m: + - 16.03 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml index 0062681948..16df270eba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1520.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1520.4 hh_id: - 856 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 856 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 271.0 - lohnsteuer__betrag_soli_m: - - 14.7 + lohnsteuer: + betrag_m: + - 271.0 + betrag_soli_m: + - 14.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml index 1a09b5045d..09bcb0cd17 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 97.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 97.2 hh_id: - 857 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 857 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml index f65be8e3d3..1bb081d659 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1595.7058333333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1595.7058333333334 hh_id: - 891 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 891 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 337.0 - lohnsteuer__betrag_soli_m: - - 18.5625 + lohnsteuer: + betrag_m: + - 337.0 + betrag_soli_m: + - 18.5625 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml index b742f411fc..46b1ea4802 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1515.42 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1515.42 hh_id: - 925 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 925 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0102 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0102 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 270.0 - lohnsteuer__betrag_soli_m: - - 14.85 + lohnsteuer: + betrag_m: + - 270.0 + betrag_soli_m: + - 14.85 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml index 88373ded40..3633f4567e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4483.499999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4483.499999999999 hh_id: - 1000 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1000 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0098 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0098 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1336.0 - lohnsteuer__betrag_soli_m: - - 73.50000000000001 + lohnsteuer: + betrag_m: + - 1336.0 + betrag_soli_m: + - 73.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml index 1e4a330913..01ca5af1cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 68.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 68.7 hh_id: - 1086 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1086 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 7.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 7.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml index 540b9668ea..aac9cb41e0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1493.4658333333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1493.4658333333334 hh_id: - 1115 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1115 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 251.0 - lohnsteuer__betrag_soli_m: - - 13.850833333333334 + lohnsteuer: + betrag_m: + - 251.0 + betrag_soli_m: + - 13.850833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml index 3aa315f6f1..53e8e10f9d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6057.2425 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6057.2425 hh_id: - 1133 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1133 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1955.0 - lohnsteuer__betrag_soli_m: - - 107.56166666666668 + lohnsteuer: + betrag_m: + - 1955.0 + betrag_soli_m: + - 107.56166666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml index 465505b476..6236ed8753 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1530.66 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1530.66 hh_id: - 1175 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1175 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 266.0 - lohnsteuer__betrag_soli_m: - - 14.65 + lohnsteuer: + betrag_m: + - 266.0 + betrag_soli_m: + - 14.65 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml index 96c08e2f49..504b4357ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5882.06 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5882.06 hh_id: - 123 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 123 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1856.0 - lohnsteuer__betrag_soli_m: - - 102.09 + lohnsteuer: + betrag_m: + - 1856.0 + betrag_soli_m: + - 102.09 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml index 83b121729c..fc44044cba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6033.557142857142 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6033.557142857142 hh_id: - 1281 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1281 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0084 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0084 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1931.0 - lohnsteuer__betrag_soli_m: - - 106.2 + lohnsteuer: + betrag_m: + - 1931.0 + betrag_soli_m: + - 106.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml index 8ae7fe54fd..8642ae7da6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1575.08 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1575.08 hh_id: - 1335 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1335 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 284.0 - lohnsteuer__betrag_soli_m: - - 15.62 + lohnsteuer: + betrag_m: + - 284.0 + betrag_soli_m: + - 15.62 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml index fe984a4379..cc1f8553a1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 217.17 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 217.17 hh_id: - 1367 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1367 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 24.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 24.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml index b6c13b048f..9be15a54ea 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6006.257142857144 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6006.257142857144 hh_id: - 1532 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1532 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1915.0 - lohnsteuer__betrag_soli_m: - - 105.34285714285714 + lohnsteuer: + betrag_m: + - 1915.0 + betrag_soli_m: + - 105.34285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml index e156034bca..4ae0bcba9f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1596.27 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1596.27 hh_id: - 1700 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1700 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 292.0 - lohnsteuer__betrag_soli_m: - - 16.08 + lohnsteuer: + betrag_m: + - 292.0 + betrag_soli_m: + - 16.08 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml index 5c48619561..a6211e4719 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4566.9925 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4566.9925 hh_id: - 1705 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1705 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1368.0 - lohnsteuer__betrag_soli_m: - - 75.27666666666667 + lohnsteuer: + betrag_m: + - 1368.0 + betrag_soli_m: + - 75.27666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml index 6ea693cef8..b452f1602e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1468.05 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1468.05 hh_id: - 1822 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1822 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 278.0 - lohnsteuer__betrag_soli_m: - - 15.29 + lohnsteuer: + betrag_m: + - 278.0 + betrag_soli_m: + - 15.29 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml index 82bfb61bf8..1bc8313565 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3028.37 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3028.37 hh_id: - 1958 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1958 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 807.0 - lohnsteuer__betrag_soli_m: - - 44.4 + lohnsteuer: + betrag_m: + - 807.0 + betrag_soli_m: + - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml index 9372f4d370..ec179d1dd1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4603.77 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4603.77 hh_id: - 2065 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2065 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011200000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011200000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1377.0 - lohnsteuer__betrag_soli_m: - - 75.76 + lohnsteuer: + betrag_m: + - 1377.0 + betrag_soli_m: + - 75.76 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml index 98e8f23143..f54d7b3e53 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1664.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1664.7 hh_id: - 2151 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2151 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 355.0 - lohnsteuer__betrag_soli_m: - - 19.5 + lohnsteuer: + betrag_m: + - 355.0 + betrag_soli_m: + - 19.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml index 2e75e66e06..24b30df03f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1649.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1649.1 hh_id: - 2220 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2220 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 313.0 - lohnsteuer__betrag_soli_m: - - 17.099999999999998 + lohnsteuer: + betrag_m: + - 313.0 + betrag_soli_m: + - 17.099999999999998 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml index e74ba7a48a..4ba829dea2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5871.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5871.3 hh_id: - 2289 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2289 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0066 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0066 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1849.0 - lohnsteuer__betrag_soli_m: - - 101.7 + lohnsteuer: + betrag_m: + - 1849.0 + betrag_soli_m: + - 101.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml index fd1f35bbb9..86a98e4632 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6011.990000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6011.990000000001 hh_id: - 2358 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2358 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1901.0 - lohnsteuer__betrag_soli_m: - - 104.56416666666668 + lohnsteuer: + betrag_m: + - 1901.0 + betrag_soli_m: + - 104.56416666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml index 4f4e900ee3..18880b4532 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4525.457142857143 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4525.457142857143 hh_id: - 2396 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2396 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1353.0 - lohnsteuer__betrag_soli_m: - - 74.44285714285715 + lohnsteuer: + betrag_m: + - 1353.0 + betrag_soli_m: + - 74.44285714285715 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml index ab939b009f..d15bcfc3a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1494.6 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1494.6 hh_id: - 2645 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2645 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0097 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0097 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 288.0 - lohnsteuer__betrag_soli_m: - - 15.6 + lohnsteuer: + betrag_m: + - 288.0 + betrag_soli_m: + - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml index 27fbc6888a..2993f9d986 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1560.194166666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1560.194166666667 hh_id: - 2693 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2693 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 278.0 - lohnsteuer__betrag_soli_m: - - 15.299166666666666 + lohnsteuer: + betrag_m: + - 278.0 + betrag_soli_m: + - 15.299166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml index 430bfd573c..613ce64196 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 99.36 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 99.36 hh_id: - 2724 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2724 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011699999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011699999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml index 6d3d0bcbd8..9aa71fb822 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6066.561666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6066.561666666667 hh_id: - 2744 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2744 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0104 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0104 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1977.0 - lohnsteuer__betrag_soli_m: - - 108.77166666666666 + lohnsteuer: + betrag_m: + - 1977.0 + betrag_soli_m: + - 108.77166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml index dae02e574f..0c2d14b4b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4521.870833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4521.870833333333 hh_id: - 2932 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2932 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1312.0 - lohnsteuer__betrag_soli_m: - - 72.17333333333333 + lohnsteuer: + betrag_m: + - 1312.0 + betrag_soli_m: + - 72.17333333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml index f126323dde..cd3d1f6956 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4451.304166666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4451.304166666667 hh_id: - 2961 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2961 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0115 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0115 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1284.0 - lohnsteuer__betrag_soli_m: - - 70.67 + lohnsteuer: + betrag_m: + - 1284.0 + betrag_soli_m: + - 70.67 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml index 30c904f603..c279d7532d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 206.74285714285716 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 206.74285714285716 hh_id: - 307 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 307 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 23.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 23.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml index 3fe891cb60..893300cb0b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5911.495 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5911.495 hh_id: - 435 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 435 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0086 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0086 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1866.0 - lohnsteuer__betrag_soli_m: - - 102.66666666666669 + lohnsteuer: + betrag_m: + - 1866.0 + betrag_soli_m: + - 102.66666666666669 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml index 9e33605a9a..73b2aa4dc5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3126.98 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3126.98 hh_id: - 444 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 444 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 809.0 - lohnsteuer__betrag_soli_m: - - 44.5 + lohnsteuer: + betrag_m: + - 809.0 + betrag_soli_m: + - 44.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml index 9392d4e11f..587df30a4b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5930.696666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5930.696666666667 hh_id: - 583 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 583 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1918.0 - lohnsteuer__betrag_soli_m: - - 105.49 + lohnsteuer: + betrag_m: + - 1918.0 + betrag_soli_m: + - 105.49 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml index f1d621d020..0b676d539a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4523.385 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4523.385 hh_id: - 699 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 699 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1354.0 - lohnsteuer__betrag_soli_m: - - 74.49249999999999 + lohnsteuer: + betrag_m: + - 1354.0 + betrag_soli_m: + - 74.49249999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml index f17787e998..d02f67a548 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7536.900000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7536.900000000001 hh_id: - 765 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 765 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2542.0 - lohnsteuer__betrag_soli_m: - - 139.8 + lohnsteuer: + betrag_m: + - 2542.0 + betrag_soli_m: + - 139.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml index bb8bb87902..22945fa35c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3146.6825000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3146.6825000000003 hh_id: - 779 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 779 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0113 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0113 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 809.0 - lohnsteuer__betrag_soli_m: - - 44.5225 + lohnsteuer: + betrag_m: + - 809.0 + betrag_soli_m: + - 44.5225 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml index c4d6b7d9cf..c4a86a07f8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7434.730833333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7434.730833333334 hh_id: - 807 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 807 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0113 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0113 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2550.0 - lohnsteuer__betrag_soli_m: - - 140.29083333333332 + lohnsteuer: + betrag_m: + - 2550.0 + betrag_soli_m: + - 140.29083333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml index 73d8b31189..622f57cc10 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3143.8714285714286 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3143.8714285714286 hh_id: - 821 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 821 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 808.0 - lohnsteuer__betrag_soli_m: - - 44.48571428571429 + lohnsteuer: + betrag_m: + - 808.0 + betrag_soli_m: + - 44.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml index 7ee0108c46..86956f6849 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1657.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1657.8 hh_id: - 898 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 898 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0069 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0069 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 353.0 - lohnsteuer__betrag_soli_m: - - 19.41 + lohnsteuer: + betrag_m: + - 353.0 + betrag_soli_m: + - 19.41 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml index c4fdf670f6..d881538827 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5947.886666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5947.886666666666 hh_id: - 9 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 9 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1875.0 - lohnsteuer__betrag_soli_m: - - 103.175 + lohnsteuer: + betrag_m: + - 1875.0 + betrag_soli_m: + - 103.175 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml index 5fed604245..6c175a5432 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 69.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 69.9 hh_id: - 950 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 950 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml index 61c35089c0..f201c26923 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4586.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4586.7 hh_id: - 965 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 965 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0104 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0104 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1376.0 - lohnsteuer__betrag_soli_m: - - 75.60000000000001 + lohnsteuer: + betrag_m: + - 1376.0 + betrag_soli_m: + - 75.60000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml index 66162fadd0..4df3a73cf1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4500.0 hh_id: - 968 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 968 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1303.0 - lohnsteuer__betrag_soli_m: - - 71.7 + lohnsteuer: + betrag_m: + - 1303.0 + betrag_soli_m: + - 71.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml index f111f8919d..1fa87aa418 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4512.942857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4512.942857142857 hh_id: - 1019 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1019 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0146 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0146 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1324.0 - lohnsteuer__betrag_soli_m: - - 72.8142857142857 + lohnsteuer: + betrag_m: + - 1324.0 + betrag_soli_m: + - 72.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml index d6e23c632f..82eed76f7a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1502.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1502.7 hh_id: - 1088 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1088 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0075 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0075 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 285.0 - lohnsteuer__betrag_soli_m: - - 15.6 + lohnsteuer: + betrag_m: + - 285.0 + betrag_soli_m: + - 15.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml index 5f50b7a866..90c9027676 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 168.74 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 168.74 hh_id: - 1134 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1134 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0096 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0096 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 19.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 19.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml index 74580f0caa..a674213083 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4541.228571428571 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4541.228571428571 hh_id: - 1164 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1164 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0124 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0124 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1339.0 - lohnsteuer__betrag_soli_m: - - 73.67142857142858 + lohnsteuer: + betrag_m: + - 1339.0 + betrag_soli_m: + - 73.67142857142858 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml index f6fd9becaf..db65b3c6cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6067.799999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6067.799999999999 hh_id: - 1279 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1279 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1906.0 - lohnsteuer__betrag_soli_m: - - 104.7 + lohnsteuer: + betrag_m: + - 1906.0 + betrag_soli_m: + - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml index 500fe25323..ec9fc7c1a1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2943.71 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2943.71 hh_id: - 146 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 146 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0077 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0077 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 734.0 - lohnsteuer__betrag_soli_m: - - 40.37 + lohnsteuer: + betrag_m: + - 734.0 + betrag_soli_m: + - 40.37 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml index f3118b0079..3c8fdcc25a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2926.5857142857144 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2926.5857142857144 hh_id: - 1503 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1503 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006999999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006999999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 768.0 - lohnsteuer__betrag_soli_m: - - 42.25714285714286 + lohnsteuer: + betrag_m: + - 768.0 + betrag_soli_m: + - 42.25714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml index c364e4d57f..7116dfad79 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5880.86 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5880.86 hh_id: - 151 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 151 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0132 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0132 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1865.0 - lohnsteuer__betrag_soli_m: - - 102.58 + lohnsteuer: + betrag_m: + - 1865.0 + betrag_soli_m: + - 102.58 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml index 1cbd049ab4..c6a0831e9b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6083.400000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6083.400000000001 hh_id: - 1532 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1532 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1908.0 - lohnsteuer__betrag_soli_m: - - 104.7 + lohnsteuer: + betrag_m: + - 1908.0 + betrag_soli_m: + - 104.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml index 94162f5402..1ae46705bb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1582.96 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1582.96 hh_id: - 1549 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 1549 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml index 33c9cd0de1..139b4110c6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3150.6 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3150.6 hh_id: - 1615 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1615 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 844.0 - lohnsteuer__betrag_soli_m: - - 46.457142857142856 + lohnsteuer: + betrag_m: + - 844.0 + betrag_soli_m: + - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml index ed828f0fa8..229f338980 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7352.785 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7352.785 hh_id: - 1705 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1705 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0111 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0111 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2433.0 - lohnsteuer__betrag_soli_m: - - 133.865 + lohnsteuer: + betrag_m: + - 2433.0 + betrag_soli_m: + - 133.865 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml index 21beb3d679..ef151d48f3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6034.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6034.5 hh_id: - 1788 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1788 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1898.0 - lohnsteuer__betrag_soli_m: - - 104.4 + lohnsteuer: + betrag_m: + - 1898.0 + betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml index bf2914b84e..12d1671a01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3046.2000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3046.2000000000003 hh_id: - 1841 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1841 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0146 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0146 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 797.0 - lohnsteuer__betrag_soli_m: - - 43.8 + lohnsteuer: + betrag_m: + - 797.0 + betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml index 7904d69323..818fb58ae7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7458.8425 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7458.8425 hh_id: - 1866 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1866 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2515.0 - lohnsteuer__betrag_soli_m: - - 138.32916666666668 + lohnsteuer: + betrag_m: + - 2515.0 + betrag_soli_m: + - 138.32916666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml index 0716bf52f7..b1d694fda4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 170.51666666666668 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 170.51666666666668 hh_id: - 1878 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1878 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 7.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 7.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml index 2ffa3706ce..0021045cb7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.728571428572 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6000.728571428572 hh_id: - 1923 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1923 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1923.0 - lohnsteuer__betrag_soli_m: - - 105.8142857142857 + lohnsteuer: + betrag_m: + - 1923.0 + betrag_soli_m: + - 105.8142857142857 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml index 04e47e4ed2..f5cb79f3f8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5930.400000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5930.400000000001 hh_id: - 1945 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1945 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1900.0 - lohnsteuer__betrag_soli_m: - - 104.4 + lohnsteuer: + betrag_m: + - 1900.0 + betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml index 2a93ec58dd..a284a4841f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 127.94 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 127.94 hh_id: - 2005 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2005 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0147 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0147 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 14.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 14.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml index de7c9de4a1..03b6e8f615 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 79.07142857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 79.07142857142857 hh_id: - 2151 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2151 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0074 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0074 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 9.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 9.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml index a85d73b7a3..d77d93bac0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5933.099999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5933.099999999999 hh_id: - 2177 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2177 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1885.0 - lohnsteuer__betrag_soli_m: - - 103.5 + lohnsteuer: + betrag_m: + - 1885.0 + betrag_soli_m: + - 103.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml index 5c37abc1b5..4ad88e1281 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1553.5424999999998 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1553.5424999999998 hh_id: - 2226 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2226 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.015 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.015 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 269.0 - lohnsteuer__betrag_soli_m: - - 14.804166666666667 + lohnsteuer: + betrag_m: + - 269.0 + betrag_soli_m: + - 14.804166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml index 439ecab0f5..424c12509f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3013.3058333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3013.3058333333333 hh_id: - 2293 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2293 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011699999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011699999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 790.0 - lohnsteuer__betrag_soli_m: - - 43.45 + lohnsteuer: + betrag_m: + - 790.0 + betrag_soli_m: + - 43.45 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml index 8ea97a5ed6..1a2d7c1980 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1513.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1513.5 hh_id: - 2512 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2512 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0092 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0092 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 289.0 - lohnsteuer__betrag_soli_m: - - 15.9 + lohnsteuer: + betrag_m: + - 289.0 + betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml index 8a476d2d65..71c16778ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5958.49 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5958.49 hh_id: - 266 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 266 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0144 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0144 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1852.0 - lohnsteuer__betrag_soli_m: - - 101.89 + lohnsteuer: + betrag_m: + - 1852.0 + betrag_soli_m: + - 101.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml index 1c78bda488..0f1e1e98e2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5940.009999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5940.009999999999 hh_id: - 2677 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2677 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0124 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0124 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1860.0 - lohnsteuer__betrag_soli_m: - - 102.30416666666667 + lohnsteuer: + betrag_m: + - 1860.0 + betrag_soli_m: + - 102.30416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml index c20bedd9db..dfd4574538 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.06 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6000.06 hh_id: - 2729 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2729 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013600000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013600000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1870.0 - lohnsteuer__betrag_soli_m: - - 102.87 + lohnsteuer: + betrag_m: + - 1870.0 + betrag_soli_m: + - 102.87 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml index 26408755c4..95ebe1e1c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7491.471428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7491.471428571429 hh_id: - 2881 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2881 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2554.0 - lohnsteuer__betrag_soli_m: - - 140.4857142857143 + lohnsteuer: + betrag_m: + - 2554.0 + betrag_soli_m: + - 140.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml index 60db437299..1a8311acdf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 247.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 247.2 hh_id: - 2918 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2918 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 27.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 27.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml index 3508791686..7141ba562f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7380.342857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7380.342857142857 hh_id: - 2934 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2934 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011699999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011699999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2444.0 - lohnsteuer__betrag_soli_m: - - 134.39999999999998 + lohnsteuer: + betrag_m: + - 2444.0 + betrag_soli_m: + - 134.39999999999998 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml index c54e87bb1f..3635ac74d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7320.214285714285 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7320.214285714285 hh_id: - 2956 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2956 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2457.0 - lohnsteuer__betrag_soli_m: - - 135.17142857142855 + lohnsteuer: + betrag_m: + - 2457.0 + betrag_soli_m: + - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml index 0fc1a2c844..28cdceb686 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 106.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 106.8 hh_id: - 2974 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2974 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml index d835dda247..0f395cd993 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7449.2825 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7449.2825 hh_id: - 2991 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2991 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0137 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0137 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2487.0 - lohnsteuer__betrag_soli_m: - - 136.785 + lohnsteuer: + betrag_m: + - 2487.0 + betrag_soli_m: + - 136.785 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml index 58da185bec..23554d115f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4555.81 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4555.81 hh_id: - 30 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 30 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013500000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013500000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1343.0 - lohnsteuer__betrag_soli_m: - - 73.89 + lohnsteuer: + betrag_m: + - 1343.0 + betrag_soli_m: + - 73.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml index 0784b78d91..7ba515b16d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1624.763333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1624.763333333333 hh_id: - 416 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 416 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 333.0 - lohnsteuer__betrag_soli_m: - - 18.3425 + lohnsteuer: + betrag_m: + - 333.0 + betrag_soli_m: + - 18.3425 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml index d44da7da0c..9aea09dbcc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7401.342857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7401.342857142857 hh_id: - 455 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 455 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2458.0 - lohnsteuer__betrag_soli_m: - - 135.17142857142855 + lohnsteuer: + betrag_m: + - 2458.0 + betrag_soli_m: + - 135.17142857142855 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml index bd2150e875..ca80146330 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1526.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1526.8 hh_id: - 496 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 496 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 294.0 - lohnsteuer__betrag_soli_m: - - 16.22 + lohnsteuer: + betrag_m: + - 294.0 + betrag_soli_m: + - 16.22 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml index 25649fef7e..8b88598479 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7485.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7485.599999999999 hh_id: - 506 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 506 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0089 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0089 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1446.0 - lohnsteuer__betrag_soli_m: - - 79.5 + lohnsteuer: + betrag_m: + - 1446.0 + betrag_soli_m: + - 79.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml index bfc112ca99..deab542e58 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1582.72 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1582.72 hh_id: - 528 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 528 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0143 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0143 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 316.0 - lohnsteuer__betrag_soli_m: - - 17.43 + lohnsteuer: + betrag_m: + - 316.0 + betrag_soli_m: + - 17.43 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml index c032f42709..c8a8863f00 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 52.25 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 52.25 hh_id: - 568 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 568 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 5.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 5.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml index d9be61fb37..8d7b831ad3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2989.045 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2989.045 hh_id: - 575 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 575 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0084 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0084 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 785.0 - lohnsteuer__betrag_soli_m: - - 43.20666666666667 + lohnsteuer: + betrag_m: + - 785.0 + betrag_soli_m: + - 43.20666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml index 6def0d8641..34c16b44b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5868.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5868.3 hh_id: - 588 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 588 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0123 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0123 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1825.0 - lohnsteuer__betrag_soli_m: - - 100.2 + lohnsteuer: + betrag_m: + - 1825.0 + betrag_soli_m: + - 100.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml index c083f4cc0c..80e3b89635 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4579.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4579.8 hh_id: - 659 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 659 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1351.0 - lohnsteuer__betrag_soli_m: - - 74.10000000000001 + lohnsteuer: + betrag_m: + - 1351.0 + betrag_soli_m: + - 74.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml index f7aa5d7286..33cf0cdc95 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4563.1475 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4563.1475 hh_id: - 743 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 743 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1344.0 - lohnsteuer__betrag_soli_m: - - 73.92916666666666 + lohnsteuer: + betrag_m: + - 1344.0 + betrag_soli_m: + - 73.92916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml index 29659bb613..c6d955ddac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3096.6 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3096.6 hh_id: - 881 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 881 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 821.0 - lohnsteuer__betrag_soli_m: - - 45.0 + lohnsteuer: + betrag_m: + - 821.0 + betrag_soli_m: + - 45.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml index 6294ac4190..62a9bf72dd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2987.71 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2987.71 hh_id: - 910 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 910 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0095 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0095 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 783.0 - lohnsteuer__betrag_soli_m: - - 43.1 + lohnsteuer: + betrag_m: + - 783.0 + betrag_soli_m: + - 43.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml index 6857edc339..62f025c2e6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1647.428571428571 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1647.428571428571 hh_id: - 933 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 933 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 306.0 - lohnsteuer__betrag_soli_m: - - 16.799999999999997 + lohnsteuer: + betrag_m: + - 306.0 + betrag_soli_m: + - 16.799999999999997 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml index ac2d2dce17..310ed92b2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 93.865 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 93.865 hh_id: - 996 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 996 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 10.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 10.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml index e96125f93e..429e4d841e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 163.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 163.5 hh_id: - 1159 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1159 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 6.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 6.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml index ab3ec00eba..5d9fbf93d5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3146.2450000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3146.2450000000003 hh_id: - 1213 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1213 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 799.0 - lohnsteuer__betrag_soli_m: - - 43.97666666666667 + lohnsteuer: + betrag_m: + - 799.0 + betrag_soli_m: + - 43.97666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml index 874f4097d8..7387306764 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4388.33 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4388.33 hh_id: - 130 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 130 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1233.0 - lohnsteuer__betrag_soli_m: - - 67.85 + lohnsteuer: + betrag_m: + - 1233.0 + betrag_soli_m: + - 67.85 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml index 3144b3cf5d..df53c92332 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 182.92583333333332 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 182.92583333333332 hh_id: - 1314 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1314 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 8.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 8.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml index fa8dbc5bb5..05954cac09 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7371.771428571428 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7371.771428571428 hh_id: - 152 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 152 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2481.0 - lohnsteuer__betrag_soli_m: - - 136.45714285714288 + lohnsteuer: + betrag_m: + - 2481.0 + betrag_soli_m: + - 136.45714285714288 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml index 4fbfb0b5e0..de40006ba8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4440.64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4440.64 hh_id: - 1632 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1632 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1252.0 - lohnsteuer__betrag_soli_m: - - 68.89 + lohnsteuer: + betrag_m: + - 1252.0 + betrag_soli_m: + - 68.89 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml index ed42173ff7..78911f1ce3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4541.09 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4541.09 hh_id: - 1727 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1727 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013500000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013500000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1323.0 - lohnsteuer__betrag_soli_m: - - 72.8 + lohnsteuer: + betrag_m: + - 1323.0 + betrag_soli_m: + - 72.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml index 84a62c8018..5429672e91 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7360.929166666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7360.929166666666 hh_id: - 174 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 174 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2423.0 - lohnsteuer__betrag_soli_m: - - 133.27416666666667 + lohnsteuer: + betrag_m: + - 2423.0 + betrag_soli_m: + - 133.27416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml index d741e7f5a7..65495571ab 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6056.13 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6056.13 hh_id: - 1786 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1786 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0139 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0139 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1887.0 - lohnsteuer__betrag_soli_m: - - 103.81 + lohnsteuer: + betrag_m: + - 1887.0 + betrag_soli_m: + - 103.81 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml index 3fe9ebd9b6..1446400a1a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1687.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1687.3 hh_id: - 1802 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1802 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0095 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0095 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 314.0 - lohnsteuer__betrag_soli_m: - - 17.27 + lohnsteuer: + betrag_m: + - 314.0 + betrag_soli_m: + - 17.27 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml index 154f179f29..5e14f06f11 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6010.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6010.8 hh_id: - 184 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 184 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0111 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0111 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1899.0 - lohnsteuer__betrag_soli_m: - - 104.4 + lohnsteuer: + betrag_m: + - 1899.0 + betrag_soli_m: + - 104.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml index 90a846dda1..efe1f7d0d9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4563.08 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4563.08 hh_id: - 1935 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1935 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1304.0 - lohnsteuer__betrag_soli_m: - - 71.77 + lohnsteuer: + betrag_m: + - 1304.0 + betrag_soli_m: + - 71.77 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml index c8a15ef375..add3dea50c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1597.79 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1597.79 hh_id: - 2098 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2098 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011200000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011200000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 315.0 - lohnsteuer__betrag_soli_m: - - 17.37 + lohnsteuer: + betrag_m: + - 315.0 + betrag_soli_m: + - 17.37 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml index 8a9b735a32..fd04b58828 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2946.0857142857144 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2946.0857142857144 hh_id: - 2156 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2156 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0066 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0066 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 730.0 - lohnsteuer__betrag_soli_m: - - 40.15714285714285 + lohnsteuer: + betrag_m: + - 730.0 + betrag_soli_m: + - 40.15714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml index 02c6e7f24d..a1e6eefb71 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7371.23 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7371.23 hh_id: - 2186 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2186 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0147 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0147 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2414.0 - lohnsteuer__betrag_soli_m: - - 132.77 + lohnsteuer: + betrag_m: + - 2414.0 + betrag_soli_m: + - 132.77 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml index a2a1e8ce16..c5adcd7696 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2954.142857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2954.142857142857 hh_id: - 2395 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2395 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0069 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0069 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 766.0 - lohnsteuer__betrag_soli_m: - - 42.12857142857143 + lohnsteuer: + betrag_m: + - 766.0 + betrag_soli_m: + - 42.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml index 35264c9c8c..b6dbab4e82 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.8425 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.8425 hh_id: - 2491 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2491 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 743.0 - lohnsteuer__betrag_soli_m: - - 40.8875 + lohnsteuer: + betrag_m: + - 743.0 + betrag_soli_m: + - 40.8875 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml index f9d79abf51..77fe9ff45a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7519.978333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7519.978333333333 hh_id: - 2575 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2575 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0075 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0075 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2489.0 - lohnsteuer__betrag_soli_m: - - 136.945 + lohnsteuer: + betrag_m: + - 2489.0 + betrag_soli_m: + - 136.945 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml index 8183bb2c1b..25879c2e80 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1662.4191666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1662.4191666666666 hh_id: - 2649 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2649 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006999999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006999999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 305.0 - lohnsteuer__betrag_soli_m: - - 16.775000000000002 + lohnsteuer: + betrag_m: + - 305.0 + betrag_soli_m: + - 16.775000000000002 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml index eee899ef05..f8c67315ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4467.29 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4467.29 hh_id: - 2720 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2720 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0143 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0143 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1252.0 - lohnsteuer__betrag_soli_m: - - 68.87 + lohnsteuer: + betrag_m: + - 1252.0 + betrag_soli_m: + - 68.87 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml index e6d609e220..d32bbdfd35 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 105.8142857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 105.8142857142857 hh_id: - 2828 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2828 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 12.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 12.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml index 239781a4f7..a5a028f23e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7479.557142857143 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7479.557142857143 hh_id: - 2904 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 2904 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0132 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0132 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2025.0 - lohnsteuer__betrag_soli_m: - - 111.38571428571429 + lohnsteuer: + betrag_m: + - 2025.0 + betrag_soli_m: + - 111.38571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml index d46def87d8..f95bbd7893 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5995.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5995.8 hh_id: - 2999 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2999 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013500000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013500000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1888.0 - lohnsteuer__betrag_soli_m: - - 103.8 + lohnsteuer: + betrag_m: + - 1888.0 + betrag_soli_m: + - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml index 81b45bade0..5341325edf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7479.900000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7479.900000000001 hh_id: - 315 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 315 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0108 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0108 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2522.0 - lohnsteuer__betrag_soli_m: - - 138.6 + lohnsteuer: + betrag_m: + - 2522.0 + betrag_soli_m: + - 138.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml index 749e59c97d..2d48ab3c82 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3004.2000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3004.2000000000003 hh_id: - 375 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 375 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0076 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0076 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 786.0 - lohnsteuer__betrag_soli_m: - - 43.2 + lohnsteuer: + betrag_m: + - 786.0 + betrag_soli_m: + - 43.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml index b7aad27137..c65c176e69 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1521.3100000000002 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1521.3100000000002 hh_id: - 417 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 417 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0139 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0139 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 249.0 - lohnsteuer__betrag_soli_m: - - 13.731666666666667 + lohnsteuer: + betrag_m: + - 249.0 + betrag_soli_m: + - 13.731666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml index ebd7f0e947..54db0747fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 72.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 72.9 hh_id: - 559 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 559 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0128 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0128 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml index 6550c0f8b5..7bb58e53df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5990.524166666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5990.524166666666 hh_id: - 624 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 624 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1851.0 - lohnsteuer__betrag_soli_m: - - 101.8325 + lohnsteuer: + betrag_m: + - 1851.0 + betrag_soli_m: + - 101.8325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml index 70da60461d..721627c3c7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1689.428571428571 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1689.428571428571 hh_id: - 791 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 791 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 351.0 - lohnsteuer__betrag_soli_m: - - 19.328571428571426 + lohnsteuer: + betrag_m: + - 351.0 + betrag_soli_m: + - 19.328571428571426 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml index 6af4ebd1b7..165d7c98f0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7317.895 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7317.895 hh_id: - 796 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 796 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2451.0 - lohnsteuer__betrag_soli_m: - - 134.8325 + lohnsteuer: + betrag_m: + - 2451.0 + betrag_soli_m: + - 134.8325 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml index 218f8f5e12..1b9ee8232d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 113.93 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 113.93 hh_id: - 81 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 81 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 12.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 12.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml index 25daad8e70..ecf55c952e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4523.12 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4523.12 hh_id: - 835 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 835 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1322.0 - lohnsteuer__betrag_soli_m: - - 72.71 + lohnsteuer: + betrag_m: + - 1322.0 + betrag_soli_m: + - 72.71 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml index 65917ebc3f..8b82183693 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5955.24 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5955.24 hh_id: - 851 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 851 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1886.0 - lohnsteuer__betrag_soli_m: - - 103.73 + lohnsteuer: + betrag_m: + - 1886.0 + betrag_soli_m: + - 103.73 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml index 5d36fcb14d..499fad5d49 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7437.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7437.599999999999 hh_id: - 947 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 947 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0060999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0060999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2493.0 - lohnsteuer__betrag_soli_m: - - 137.1 + lohnsteuer: + betrag_m: + - 2493.0 + betrag_soli_m: + - 137.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml index 70fb821bba..79870a1b2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4503.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4503.0 hh_id: - 959 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 959 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.010700000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.010700000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1313.0 - lohnsteuer__betrag_soli_m: - - 72.25714285714285 + lohnsteuer: + betrag_m: + - 1313.0 + betrag_soli_m: + - 72.25714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml index 93f87538c0..8714e93ece 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7488.9325 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7488.9325 hh_id: - 98 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 98 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2478.0 - lohnsteuer__betrag_soli_m: - - 136.3125 + lohnsteuer: + betrag_m: + - 2478.0 + betrag_soli_m: + - 136.3125 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml index b3ca7a425b..69b928dd99 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1643.1428571428569 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1643.1428571428569 hh_id: - 1014 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1014 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009899999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009899999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 326.0 - lohnsteuer__betrag_soli_m: - - 17.95714285714286 + lohnsteuer: + betrag_m: + - 326.0 + betrag_soli_m: + - 17.95714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml index 234ae813e6..d68fc890d1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7512.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7512.3 hh_id: - 1093 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1093 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2505.0 - lohnsteuer__betrag_soli_m: - - 137.7 + lohnsteuer: + betrag_m: + - 2505.0 + betrag_soli_m: + - 137.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml index 1b304d7fdf..17cc533360 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5838.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5838.599999999999 hh_id: - 1098 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1098 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0124 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0124 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1781.0 - lohnsteuer__betrag_soli_m: - - 97.8 + lohnsteuer: + betrag_m: + - 1781.0 + betrag_soli_m: + - 97.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml index 2af973f8e1..8eeb6167eb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7376.400000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7376.400000000001 hh_id: - 111 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 111 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2452.0 - lohnsteuer__betrag_soli_m: - - 134.70000000000002 + lohnsteuer: + betrag_m: + - 2452.0 + betrag_soli_m: + - 134.70000000000002 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml index e2a93f3afa..64f0498f7a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7517.742857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7517.742857142857 hh_id: - 1180 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1180 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2497.0 - lohnsteuer__betrag_soli_m: - - 137.35714285714286 + lohnsteuer: + betrag_m: + - 2497.0 + betrag_soli_m: + - 137.35714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml index 9103304d51..ed7fc27dc9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1682.571428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1682.571428571429 hh_id: - 1210 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 1210 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml index 1ee42db04d..f26bd5656a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 34.49333333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 34.49333333333333 hh_id: - 1354 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1354 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0147 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0147 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml index b702b6a8cd..1087f5def6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1656.5716666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1656.5716666666667 hh_id: - 1629 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1629 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 331.0 - lohnsteuer__betrag_soli_m: - - 18.245833333333334 + lohnsteuer: + betrag_m: + - 331.0 + betrag_soli_m: + - 18.245833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml index 4015f5f62a..1228a6742b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2921.442857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2921.442857142857 hh_id: - 1695 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1695 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0092 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0092 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 747.0 - lohnsteuer__betrag_soli_m: - - 41.1 + lohnsteuer: + betrag_m: + - 747.0 + betrag_soli_m: + - 41.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml index 1b0c3e0f62..021eddb754 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5849.6033333333335 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5849.6033333333335 hh_id: - 1709 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1709 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1825.0 - lohnsteuer__betrag_soli_m: - - 100.37916666666666 + lohnsteuer: + betrag_m: + - 1825.0 + betrag_soli_m: + - 100.37916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml index c22a4f928f..afe73b4d0b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5892.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5892.3 hh_id: - 180 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 180 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1846.0 - lohnsteuer__betrag_soli_m: - - 101.4 + lohnsteuer: + betrag_m: + - 1846.0 + betrag_soli_m: + - 101.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml index f9d01fcdcc..f8a9a416fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5998.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5998.2 hh_id: - 1825 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1825 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0086 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0086 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1888.0 - lohnsteuer__betrag_soli_m: - - 103.8 + lohnsteuer: + betrag_m: + - 1888.0 + betrag_soli_m: + - 103.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml index 751c50e505..80a25ce885 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3072.5466666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3072.5466666666666 hh_id: - 1846 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1846 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006999999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006999999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 799.0 - lohnsteuer__betrag_soli_m: - - 43.9675 + lohnsteuer: + betrag_m: + - 799.0 + betrag_soli_m: + - 43.9675 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml index 9669db5a63..a143e7fc57 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 242.2225 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 242.2225 hh_id: - 2025 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2025 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0134 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0134 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 15.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 15.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml index 3c89a4215d..0298fdae4d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4625.142857142858 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4625.142857142858 hh_id: - 2070 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2070 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0084 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0084 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1311.0 - lohnsteuer__betrag_soli_m: - - 72.12857142857142 + lohnsteuer: + betrag_m: + - 1311.0 + betrag_soli_m: + - 72.12857142857142 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml index 6be788826d..5afd6f6fd1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1505.9208333333331 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1505.9208333333331 hh_id: - 2159 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2159 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0083 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0083 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 236.0 - lohnsteuer__betrag_soli_m: - - 13.020833333333334 + lohnsteuer: + betrag_m: + - 236.0 + betrag_soli_m: + - 13.020833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml index e30039e585..cf37a50184 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6060.8425 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6060.8425 hh_id: - 2204 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2204 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1879.0 - lohnsteuer__betrag_soli_m: - - 103.35416666666669 + lohnsteuer: + betrag_m: + - 1879.0 + betrag_soli_m: + - 103.35416666666669 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml index bec8de4c0d..473e37cc20 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7363.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7363.5 hh_id: - 2375 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2375 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0125 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0125 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2432.0 - lohnsteuer__betrag_soli_m: - - 133.5 + lohnsteuer: + betrag_m: + - 2432.0 + betrag_soli_m: + - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml index 824bf3b6f7..5a30266d8c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3108.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3108.3 hh_id: - 2393 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2393 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0092 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0092 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 774.0 - lohnsteuer__betrag_soli_m: - - 42.3 + lohnsteuer: + betrag_m: + - 774.0 + betrag_soli_m: + - 42.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml index f65f879768..6a830de0e3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1546.38 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1546.38 hh_id: - 2469 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2469 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0072 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0072 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 252.0 - lohnsteuer__betrag_soli_m: - - 13.88 + lohnsteuer: + betrag_m: + - 252.0 + betrag_soli_m: + - 13.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml index 9f04f73190..f030e2a658 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2922.6891666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2922.6891666666666 hh_id: - 2516 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2516 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011200000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011200000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 707.0 - lohnsteuer__betrag_soli_m: - - 38.935 + lohnsteuer: + betrag_m: + - 707.0 + betrag_soli_m: + - 38.935 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml index d6f9b4cce8..8fc5f2c22d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1523.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1523.7 hh_id: - 265 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 265 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 279.0 - lohnsteuer__betrag_soli_m: - - 15.385714285714284 + lohnsteuer: + betrag_m: + - 279.0 + betrag_soli_m: + - 15.385714285714284 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml index fb801bf093..8017e531b4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 130.3714285714286 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 130.3714285714286 hh_id: - 2708 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 2708 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0074 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0074 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml index c0d14ed153..94b819f9fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3164.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3164.2 hh_id: - 2729 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2729 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 790.0 - lohnsteuer__betrag_soli_m: - - 43.48 + lohnsteuer: + betrag_m: + - 790.0 + betrag_soli_m: + - 43.48 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml index 6afb561b42..837b8075cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3111.6 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3111.6 hh_id: - 2736 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2736 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.015 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.015 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 811.0 - lohnsteuer__betrag_soli_m: - - 44.4 + lohnsteuer: + betrag_m: + - 811.0 + betrag_soli_m: + - 44.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml index 219a73292d..bcb2098d66 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1501.4142857142854 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1501.4142857142854 hh_id: - 2760 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2760 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 271.0 - lohnsteuer__betrag_soli_m: - - 14.871428571428572 + lohnsteuer: + betrag_m: + - 271.0 + betrag_soli_m: + - 14.871428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml index 97e1a8d0fe..c3ca6c6a24 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1467.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1467.9 hh_id: - 2818 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2818 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0127 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0127 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 258.0 - lohnsteuer__betrag_soli_m: - - 14.1 + lohnsteuer: + betrag_m: + - 258.0 + betrag_soli_m: + - 14.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml index ef3629ff2c..f29a5b69a1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 76.37142857142858 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 76.37142857142858 hh_id: - 286 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 286 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml index d452d08f60..170692bc81 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 123.56 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 123.56 hh_id: - 2900 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2900 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml index 646b78005b..844fc21bb5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7360.12 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7360.12 hh_id: - 2904 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2904 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2393.0 - lohnsteuer__betrag_soli_m: - - 131.63 + lohnsteuer: + betrag_m: + - 2393.0 + betrag_soli_m: + - 131.63 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml index ad288d2e99..ea096e860a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1558.1999999999998 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1558.1999999999998 hh_id: - 2942 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2942 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0137 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0137 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 293.0 - lohnsteuer__betrag_soli_m: - - 15.9 + lohnsteuer: + betrag_m: + - 293.0 + betrag_soli_m: + - 15.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml index d35c688dcf..7d64867838 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5961.814285714285 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5961.814285714285 hh_id: - 317 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 317 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1827.0 - lohnsteuer__betrag_soli_m: - - 100.5 + lohnsteuer: + betrag_m: + - 1827.0 + betrag_soli_m: + - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml index 13874bc378..a676eda523 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5884.19 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5884.19 hh_id: - 331 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 331 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1805.0 - lohnsteuer__betrag_soli_m: - - 99.29 + lohnsteuer: + betrag_m: + - 1805.0 + betrag_soli_m: + - 99.29 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml index 5f4a00e81b..e20fb48670 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7315.6475 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7315.6475 hh_id: - 396 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 396 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2381.0 - lohnsteuer__betrag_soli_m: - - 130.99166666666667 + lohnsteuer: + betrag_m: + - 2381.0 + betrag_soli_m: + - 130.99166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml index 158242400a..f32c5240c3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 100.94166666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 100.94166666666666 hh_id: - 420 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 420 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 11.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 11.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml index e99d0ce9cc..9ad1535adb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1647.86 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1647.86 hh_id: - 605 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 605 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0076 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0076 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 328.0 - lohnsteuer__betrag_soli_m: - - 18.06 + lohnsteuer: + betrag_m: + - 328.0 + betrag_soli_m: + - 18.06 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml index 2f37e445dc..00459e8ac9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4621.500000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4621.500000000001 hh_id: - 646 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 646 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1316.0 - lohnsteuer__betrag_soli_m: - - 72.3 + lohnsteuer: + betrag_m: + - 1316.0 + betrag_soli_m: + - 72.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml index e62cb2945b..8572245bed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3056.7000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3056.7000000000003 hh_id: - 65 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 65 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 760.0 - lohnsteuer__betrag_soli_m: - - 41.7 + lohnsteuer: + betrag_m: + - 760.0 + betrag_soli_m: + - 41.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml index 8cb86652d7..94a6f56876 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 113.06 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 113.06 hh_id: - 664 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 664 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml index dcbd6e23d6..502c4f7f52 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 193.36666666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 193.36666666666667 hh_id: - 698 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 698 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 9.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 9.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml index 2e801285da..fce365fc62 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5892.900000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5892.900000000001 hh_id: - 710 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 710 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0085 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0085 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1811.0 - lohnsteuer__betrag_soli_m: - - 99.6 + lohnsteuer: + betrag_m: + - 1811.0 + betrag_soli_m: + - 99.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml index 8fad2d7fc9..367763efca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1593.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1593.3 hh_id: - 715 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 715 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011200000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011200000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 306.0 - lohnsteuer__betrag_soli_m: - - 16.8 + lohnsteuer: + betrag_m: + - 306.0 + betrag_soli_m: + - 16.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml index aa8f9633ba..e2ffcbc1f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4459.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4459.2 hh_id: - 809 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 809 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0060999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0060999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1293.0 - lohnsteuer__betrag_soli_m: - - 71.10000000000001 + lohnsteuer: + betrag_m: + - 1293.0 + betrag_soli_m: + - 71.10000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml index 5019790993..cbe7b78de7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7359.214285714286 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7359.214285714286 hh_id: - 816 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 816 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2393.0 - lohnsteuer__betrag_soli_m: - - 131.65714285714287 + lohnsteuer: + betrag_m: + - 2393.0 + betrag_soli_m: + - 131.65714285714287 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml index 0c25b586db..92c5f7144e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1484.9571428571428 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1484.9571428571428 hh_id: - 832 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 832 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 264.0 - lohnsteuer__betrag_soli_m: - - 14.52857142857143 + lohnsteuer: + betrag_m: + - 264.0 + betrag_soli_m: + - 14.52857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml index bf1a022226..85e155d471 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4560.0633333333335 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4560.0633333333335 hh_id: - 879 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 879 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0075 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0075 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1291.0 - lohnsteuer__betrag_soli_m: - - 71.05499999999999 + lohnsteuer: + betrag_m: + - 1291.0 + betrag_soli_m: + - 71.05499999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml index 04fb76ed5a..f237774a14 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2940.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2940.3 hh_id: - 882 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 882 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 753.0 - lohnsteuer__betrag_soli_m: - - 41.4 + lohnsteuer: + betrag_m: + - 753.0 + betrag_soli_m: + - 41.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml index f3c528685c..a441e3a74a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 87.30000000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 87.30000000000001 hh_id: - 949 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 949 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 9.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 9.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml index 81505bc538..293858a6f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5982.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5982.0 hh_id: - 978 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 978 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0113 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0113 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1874.0 - lohnsteuer__betrag_soli_m: - - 102.9 + lohnsteuer: + betrag_m: + - 1874.0 + betrag_soli_m: + - 102.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml index 3f223f88a5..04288693f9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1477.2325 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1477.2325 hh_id: - 1015 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1015 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0101 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0101 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 253.0 - lohnsteuer__betrag_soli_m: - - 13.933333333333332 + lohnsteuer: + betrag_m: + - 253.0 + betrag_soli_m: + - 13.933333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml index b0771eeb8f..0af3811ff7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5872.39 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5872.39 hh_id: - 1096 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1096 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0109 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0109 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1780.0 - lohnsteuer__betrag_soli_m: - - 97.92 + lohnsteuer: + betrag_m: + - 1780.0 + betrag_soli_m: + - 97.92 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml index 4270cb2c21..256f275140 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7334.400000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7334.400000000001 hh_id: - 1118 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1118 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2365.0 - lohnsteuer__betrag_soli_m: - - 129.9 + lohnsteuer: + betrag_m: + - 2365.0 + betrag_soli_m: + - 129.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml index e3a3fc9055..c24409c87e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7337.276666666668 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7337.276666666668 hh_id: - 1273 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1273 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2397.0 - lohnsteuer__betrag_soli_m: - - 131.83916666666667 + lohnsteuer: + betrag_m: + - 2397.0 + betrag_soli_m: + - 131.83916666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml index 96d465f74f..e3387ecb5b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7524.431666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7524.431666666666 hh_id: - 13 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 13 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0121 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0121 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2436.0 - lohnsteuer__betrag_soli_m: - - 133.98416666666665 + lohnsteuer: + betrag_m: + - 2436.0 + betrag_soli_m: + - 133.98416666666665 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml index a72cd3446a..82501a22b1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 58.68 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 58.68 hh_id: - 1310 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1310 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 6.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 6.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml index 28f57e0e9e..0e2bde8de8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7411.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7411.5 hh_id: - 1378 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1378 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2429.0 - lohnsteuer__betrag_soli_m: - - 133.5 + lohnsteuer: + betrag_m: + - 2429.0 + betrag_soli_m: + - 133.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml index 23ef00230f..5080e0a208 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4439.8133333333335 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4439.8133333333335 hh_id: - 1417 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1417 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0097 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0097 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1229.0 - lohnsteuer__betrag_soli_m: - - 67.61749999999999 + lohnsteuer: + betrag_m: + - 1229.0 + betrag_soli_m: + - 67.61749999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml index 9ec295c131..976c211584 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 83.99999999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 83.99999999999999 hh_id: - 1468 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1468 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0143 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0143 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 9.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 9.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml index 19dd097e33..fa97daa2c2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1657.285714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1657.285714285714 hh_id: - 160 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 160 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 323.0 - lohnsteuer__betrag_soli_m: - - 17.742857142857144 + lohnsteuer: + betrag_m: + - 323.0 + betrag_soli_m: + - 17.742857142857144 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml index 7b06232097..20f16fb5bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7321.994166666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7321.994166666666 hh_id: - 161 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 161 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2357.0 - lohnsteuer__betrag_soli_m: - - 129.67583333333332 + lohnsteuer: + betrag_m: + - 2357.0 + betrag_soli_m: + - 129.67583333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml index 87ad922281..2db6242d32 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7393.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7393.2 hh_id: - 1705 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1705 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2441.0 - lohnsteuer__betrag_soli_m: - - 134.1 + lohnsteuer: + betrag_m: + - 2441.0 + betrag_soli_m: + - 134.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml index f7a5354ecb..de81563466 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1706.4583333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1706.4583333333333 hh_id: - 1767 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1767 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0143 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0143 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 342.0 - lohnsteuer__betrag_soli_m: - - 18.8375 + lohnsteuer: + betrag_m: + - 342.0 + betrag_soli_m: + - 18.8375 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml index be0471fd50..5f628c7434 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4402.885714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4402.885714285714 hh_id: - 1775 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1775 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1248.0 - lohnsteuer__betrag_soli_m: - - 68.65714285714286 + lohnsteuer: + betrag_m: + - 1248.0 + betrag_soli_m: + - 68.65714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml index 73b7893643..8a40fecac1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4415.733333333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4415.733333333334 hh_id: - 1788 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1788 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0068000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0068000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1223.0 - lohnsteuer__betrag_soli_m: - - 67.30166666666666 + lohnsteuer: + betrag_m: + - 1223.0 + betrag_soli_m: + - 67.30166666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml index 6835a86617..a5a68d9364 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1660.4571428571428 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1660.4571428571428 hh_id: - 1790 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1790 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0069 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0069 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 324.0 - lohnsteuer__betrag_soli_m: - - 17.82857142857143 + lohnsteuer: + betrag_m: + - 324.0 + betrag_soli_m: + - 17.82857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml index 44892327e5..7920fcba1e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4515.385714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4515.385714285714 hh_id: - 1928 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1928 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1299.0 - lohnsteuer__betrag_soli_m: - - 71.4857142857143 + lohnsteuer: + betrag_m: + - 1299.0 + betrag_soli_m: + - 71.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml index 1029942700..772e625972 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7439.99 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7439.99 hh_id: - 2106 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2106 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2452.0 - lohnsteuer__betrag_soli_m: - - 134.88 + lohnsteuer: + betrag_m: + - 2452.0 + betrag_soli_m: + - 134.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml index a7d481eb01..fa2dff905b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 32.142857142857146 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 32.142857142857146 hh_id: - 2182 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2182 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml index 8795fe32f1..06f44032f2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3118.816666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3118.816666666667 hh_id: - 2184 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2184 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013600000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013600000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 804.0 - lohnsteuer__betrag_soli_m: - - 44.22916666666666 + lohnsteuer: + betrag_m: + - 804.0 + betrag_soli_m: + - 44.22916666666666 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml index c9fe14fce5..7b2f9254ef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5944.242857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5944.242857142857 hh_id: - 2230 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 2230 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1351.0 - lohnsteuer__betrag_soli_m: - - 74.31428571428572 + lohnsteuer: + betrag_m: + - 1351.0 + betrag_soli_m: + - 74.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml index 402d68dfb6..e8da68b4c2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1683.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1683.9 hh_id: - 2320 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2320 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0064 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0064 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 297.0 - lohnsteuer__betrag_soli_m: - - 16.2 + lohnsteuer: + betrag_m: + - 297.0 + betrag_soli_m: + - 16.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml index ee61065482..0993d923df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 107.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 107.4 hh_id: - 2389 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2389 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 12.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 12.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml index 5e5897601a..446b5db842 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7502.544166666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7502.544166666667 hh_id: - 2439 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2439 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0064 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0064 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2487.0 - lohnsteuer__betrag_soli_m: - - 136.82583333333335 + lohnsteuer: + betrag_m: + - 2487.0 + betrag_soli_m: + - 136.82583333333335 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml index 50249f2b9a..d84445488e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5989.17 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5989.17 hh_id: - 2527 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2527 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1864.0 - lohnsteuer__betrag_soli_m: - - 102.52 + lohnsteuer: + betrag_m: + - 1864.0 + betrag_soli_m: + - 102.52 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml index a065f09cb5..d01cce1ee9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5884.177500000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5884.177500000001 hh_id: - 2562 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2562 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0129 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0129 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1819.0 - lohnsteuer__betrag_soli_m: - - 100.06333333333332 + lohnsteuer: + betrag_m: + - 1819.0 + betrag_soli_m: + - 100.06333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml index 35d51d6b73..9f0a1db89a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7518.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7518.0 hh_id: - 2587 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2587 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013500000000000002 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013500000000000002 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2468.0 - lohnsteuer__betrag_soli_m: - - 135.6 + lohnsteuer: + betrag_m: + - 2468.0 + betrag_soli_m: + - 135.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml index 06147885bf..05f4387fe3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1472.0142857142855 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1472.0142857142855 hh_id: - 266 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 266 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0104 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0104 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 215.0 - lohnsteuer__betrag_soli_m: - - 11.828571428571427 + lohnsteuer: + betrag_m: + - 215.0 + betrag_soli_m: + - 11.828571428571427 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml index 3cef60e205..bbf1d4312d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5947.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5947.5 hh_id: - 2888 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2888 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1808.0 - lohnsteuer__betrag_soli_m: - - 99.46 + lohnsteuer: + betrag_m: + - 1808.0 + betrag_soli_m: + - 99.46 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml index 166c2d5409..4599fb4ff3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1484.35 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1484.35 hh_id: - 2898 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2898 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 219.0 - lohnsteuer__betrag_soli_m: - - 12.090833333333334 + lohnsteuer: + betrag_m: + - 219.0 + betrag_soli_m: + - 12.090833333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml index 9383661e0d..1cfcf7e9a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5943.534166666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5943.534166666667 hh_id: - 2920 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2920 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0113 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0113 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1839.0 - lohnsteuer__betrag_soli_m: - - 101.145 + lohnsteuer: + betrag_m: + - 1839.0 + betrag_soli_m: + - 101.145 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml index 65145a26cf..e4b1e79459 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5910.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5910.599999999999 hh_id: - 2953 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2953 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0134 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0134 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1828.0 - lohnsteuer__betrag_soli_m: - - 100.5 + lohnsteuer: + betrag_m: + - 1828.0 + betrag_soli_m: + - 100.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml index 64cc4c541c..c66a9fde2f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7359.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7359.0 hh_id: - 2998 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2998 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0084 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0084 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2411.0 - lohnsteuer__betrag_soli_m: - - 132.6 + lohnsteuer: + betrag_m: + - 2411.0 + betrag_soli_m: + - 132.6 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml index b978fef892..ad180f8498 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4459.240833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4459.240833333333 hh_id: - 367 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 367 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1232.0 - lohnsteuer__betrag_soli_m: - - 67.76416666666667 + lohnsteuer: + betrag_m: + - 1232.0 + betrag_soli_m: + - 67.76416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml index e4b0ce75c1..c5e2280a5b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3063.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3063.0 hh_id: - 400 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 400 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 784.0 - lohnsteuer__betrag_soli_m: - - 42.9 + lohnsteuer: + betrag_m: + - 784.0 + betrag_soli_m: + - 42.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml index 14ea7f9e8c..1fb1ca8424 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7384.743333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7384.743333333333 hh_id: - 409 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 409 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0111 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0111 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2428.0 - lohnsteuer__betrag_soli_m: - - 133.57666666666668 + lohnsteuer: + betrag_m: + - 2428.0 + betrag_soli_m: + - 133.57666666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml index 622da622d7..be2d251768 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1495.1033333333337 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1495.1033333333337 hh_id: - 481 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 481 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 260.0 - lohnsteuer__betrag_soli_m: - - 14.318333333333332 + lohnsteuer: + betrag_m: + - 260.0 + betrag_soli_m: + - 14.318333333333332 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml index fcaadc6091..61fae6b1ff 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4554.2716666666665 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4554.2716666666665 hh_id: - 513 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 513 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1271.0 - lohnsteuer__betrag_soli_m: - - 69.91416666666667 + lohnsteuer: + betrag_m: + - 1271.0 + betrag_soli_m: + - 69.91416666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml index 513db9f874..6c3b3170a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1612.8033333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1612.8033333333333 hh_id: - 630 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 630 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 306.0 - lohnsteuer__betrag_soli_m: - - 16.834166666666665 + lohnsteuer: + betrag_m: + - 306.0 + betrag_soli_m: + - 16.834166666666665 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml index c6f703119e..1c2bb3366c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3075.685714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3075.685714285714 hh_id: - 648 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 648 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014499999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014499999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 752.0 - lohnsteuer__betrag_soli_m: - - 41.35714285714285 + lohnsteuer: + betrag_m: + - 752.0 + betrag_soli_m: + - 41.35714285714285 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml index a513ec3fb0..652f9a2a95 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7321.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7321.5 hh_id: - 70 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 70 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0127 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0127 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2391.0 - lohnsteuer__betrag_soli_m: - - 131.4857142857143 + lohnsteuer: + betrag_m: + - 2391.0 + betrag_soli_m: + - 131.4857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml index 9815b67966..5422a94bdd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1664.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1664.1 hh_id: - 798 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 798 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0063 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0063 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 325.0 - lohnsteuer__betrag_soli_m: - - 17.7 + lohnsteuer: + betrag_m: + - 325.0 + betrag_soli_m: + - 17.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml index cfb86ef046..b258a1ad4c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5888.61 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5888.61 hh_id: - 835 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 835 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1782.0 - lohnsteuer__betrag_soli_m: - - 98.04 + lohnsteuer: + betrag_m: + - 1782.0 + betrag_soli_m: + - 98.04 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml index 350870c769..b47b8a8f3c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4541.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4541.1 hh_id: - 901 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 901 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0125 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0125 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1302.0 - lohnsteuer__betrag_soli_m: - - 71.39999999999999 + lohnsteuer: + betrag_m: + - 1302.0 + betrag_soli_m: + - 71.39999999999999 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml index 6aab153675..4f1deb7d1f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 86.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 86.7 hh_id: - 926 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 926 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0079 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0079 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml index 270c7d741e..5b2b4b774a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4446.9375 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4446.9375 hh_id: - 949 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 949 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1234.0 - lohnsteuer__betrag_soli_m: - - 67.90666666666667 + lohnsteuer: + betrag_m: + - 1234.0 + betrag_soli_m: + - 67.90666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml index d74825e529..13f0b491f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2939.78 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2939.78 hh_id: - 111 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 111 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 696.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 696.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml index 1ab4341248..550728e92a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5956.41 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5956.41 hh_id: - 1186 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1186 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1792.0 - lohnsteuer__betrag_soli_m: - - 45.16 + lohnsteuer: + betrag_m: + - 1792.0 + betrag_soli_m: + - 45.16 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml index a8a6dd2df5..6a80ef007e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7384.15 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7384.15 hh_id: - 1204 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1204 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014499999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014499999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2360.0 - lohnsteuer__betrag_soli_m: - - 112.72 + lohnsteuer: + betrag_m: + - 2360.0 + betrag_soli_m: + - 112.72 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml index 61fc573388..b43e0ca907 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4455.695833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4455.695833333333 hh_id: - 1237 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1237 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1226.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1226.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml index cf098eeadb..4b65a0a25c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6082.799999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6082.799999999999 hh_id: - 1255 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1255 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009000000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009000000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1880.0 - lohnsteuer__betrag_soli_m: - - 55.5 + lohnsteuer: + betrag_m: + - 1880.0 + betrag_soli_m: + - 55.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml index 42e7046a79..c3721dbf5b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4382.057142857143 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4382.057142857143 hh_id: - 1380 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1380 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014499999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014499999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1193.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1193.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml index ed39273618..b98d89b5e5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 149.5285714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 149.5285714285714 hh_id: - 1385 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1385 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0134 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0134 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 16.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 16.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml index cda75cc8db..07282426fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4587.52 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4587.52 hh_id: - 1402 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1402 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0148 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0148 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1300.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1300.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml index cf68ecfc1a..809b0e835d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4483.14 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4483.14 hh_id: - 145 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 145 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0064 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0064 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1277.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1277.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml index a036e5313b..d157e92c01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 229.84 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 229.84 hh_id: - 1538 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1538 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 25.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 25.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml index 83edde5f7a..e25a93b622 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6054.72 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6054.72 hh_id: - 1610 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 1610 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0086 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0086 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 867.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 867.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml index a28d5148e8..4d3c04c6c7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2973.4216666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2973.4216666666666 hh_id: - 165 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 165 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0144 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0144 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 743.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 743.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml index 1cd2577f9a..060d1c83f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3106.880833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3106.880833333333 hh_id: - 1714 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1714 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 754.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 754.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml index 8953a5aa08..9581caa582 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7386.214285714286 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7386.214285714286 hh_id: - 1762 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1762 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2359.0 - lohnsteuer__betrag_soli_m: - - 112.62857142857143 + lohnsteuer: + betrag_m: + - 2359.0 + betrag_soli_m: + - 112.62857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml index 80f8bb69d8..308103e456 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4412.828571428571 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4412.828571428571 hh_id: - 1853 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1853 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.006500000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.006500000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1247.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1247.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml index 517f8cf383..24f9c88273 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7311.471428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7311.471428571429 hh_id: - 1908 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1908 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2321.0 - lohnsteuer__betrag_soli_m: - - 108.12857142857143 + lohnsteuer: + betrag_m: + - 2321.0 + betrag_soli_m: + - 108.12857142857143 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml index 08016b21dd..70192f9de2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3048.61 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3048.61 hh_id: - 1999 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1999 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0076 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0076 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 771.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 771.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml index 9d5e9333c2..d4ef52cf38 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 186.17142857142855 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 186.17142857142855 hh_id: - 2022 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2022 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0108 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0108 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 20.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 20.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml index e15f482e38..9f57669ed9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7495.215833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7495.215833333333 hh_id: - 2208 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2208 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2395.0 - lohnsteuer__betrag_soli_m: - - 116.8575 + lohnsteuer: + betrag_m: + - 2395.0 + betrag_soli_m: + - 116.8575 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml index 909eaadb64..31d613cf48 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6003.833333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6003.833333333333 hh_id: - 225 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 225 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1851.0 - lohnsteuer__betrag_soli_m: - - 52.16166666666667 + lohnsteuer: + betrag_m: + - 1851.0 + betrag_soli_m: + - 52.16166666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml index 5cc1ba1269..6c2d85b3d0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3098.85 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3098.85 hh_id: - 2258 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2258 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0138 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0138 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 751.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 751.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml index 18c858cce5..f6263c3446 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 134.87 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 134.87 hh_id: - 2295 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 2295 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0086 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0086 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml index 8ad922219a..cc06f679cb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3077.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3077.4 hh_id: - 238 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 238 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0067 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0067 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 748.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 748.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml index e23d58eded..6cab7ecd68 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2938.465 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2938.465 hh_id: - 2400 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 2400 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0103 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0103 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 381.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 381.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml index 7c16e91421..995cfe6a6a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5887.885714285715 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5887.885714285715 hh_id: - 2416 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2416 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0147 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0147 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1758.0 - lohnsteuer__betrag_soli_m: - - 41.05714285714286 + lohnsteuer: + betrag_m: + - 1758.0 + betrag_soli_m: + - 41.05714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml index a48c95be92..c8c7bc084f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7544.785714285715 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7544.785714285715 hh_id: - 2476 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2476 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2465.0 - lohnsteuer__betrag_soli_m: - - 125.2714285714286 + lohnsteuer: + betrag_m: + - 2465.0 + betrag_soli_m: + - 125.2714285714286 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml index eeb08682ef..3d9e3bacc2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5905.285714285715 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5905.285714285715 hh_id: - 262 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 262 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0124 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0124 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1803.0 - lohnsteuer__betrag_soli_m: - - 46.457142857142856 + lohnsteuer: + betrag_m: + - 1803.0 + betrag_soli_m: + - 46.457142857142856 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml index a3499113ae..057212f8c6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 99.17142857142856 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 99.17142857142856 hh_id: - 2766 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2766 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.014199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.014199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 11.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 11.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml index a42b85c642..820d0612cf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5871.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5871.0 hh_id: - 2782 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2782 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0125 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0125 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1753.0 - lohnsteuer__betrag_soli_m: - - 40.50000000000001 + lohnsteuer: + betrag_m: + - 1753.0 + betrag_soli_m: + - 40.50000000000001 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml index 8802e61682..24a9f0adfb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6070.115833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6070.115833333333 hh_id: - 2836 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2836 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0132 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0132 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1866.0 - lohnsteuer__betrag_soli_m: - - 53.97583333333333 + lohnsteuer: + betrag_m: + - 1866.0 + betrag_soli_m: + - 53.97583333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml index f3562e1aae..bafd0509ca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7525.357499999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7525.357499999999 hh_id: - 2886 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2886 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0096 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0096 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2465.0 - lohnsteuer__betrag_soli_m: - - 125.29666666666668 + lohnsteuer: + betrag_m: + - 2465.0 + betrag_soli_m: + - 125.29666666666668 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml index bc2dd9feb4..315189eef4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3039.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3039.0 hh_id: - 2945 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2945 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 731.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 731.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml index a4ca6684a2..1fed370be4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5923.221666666667 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5923.221666666667 hh_id: - 2946 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2946 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1819.0 - lohnsteuer__betrag_soli_m: - - 48.36333333333334 + lohnsteuer: + betrag_m: + - 1819.0 + betrag_soli_m: + - 48.36333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml index f255cbb8dc..5e9b6f547f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 25.36 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 25.36 hh_id: - 299 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 299 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0060999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0060999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 2.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml index 8db52c48bf..3544eea580 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1635.6428571428569 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1635.6428571428569 hh_id: - 318 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 318 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 268.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 268.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml index 4835581981..8029961cd9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4485.771428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4485.771428571429 hh_id: - 321 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 321 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1276.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1276.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml index a070e47b40..431790ce4f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1650.9857142857145 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1650.9857142857145 hh_id: - 33 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 33 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.010700000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.010700000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 90.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 90.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml index 5eb81340e1..6802f414ee 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4588.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4588.2 hh_id: - 417 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 417 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0098 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0098 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1310.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1310.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml index 0b5ce8f3fb..a28a4d921b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 170.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 170.4 hh_id: - 479 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 479 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0141 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0141 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 18.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 18.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml index 93f4e911df..436b15ff74 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7332.599999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7332.599999999999 hh_id: - 519 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 519 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0116 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0116 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2346.0 - lohnsteuer__betrag_soli_m: - - 111.0 + lohnsteuer: + betrag_m: + - 2346.0 + betrag_soli_m: + - 111.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml index 48ba79a121..7ca833004f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5997.257142857143 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5997.257142857143 hh_id: - 522 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 522 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0138 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0138 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1801.0 - lohnsteuer__betrag_soli_m: - - 46.2 + lohnsteuer: + betrag_m: + - 1801.0 + betrag_soli_m: + - 46.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml index 4af8a234e5..0becc46497 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6001.071428571428 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6001.071428571428 hh_id: - 618 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 618 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0074 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0074 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1809.0 - lohnsteuer__betrag_soli_m: - - 47.14285714285714 + lohnsteuer: + betrag_m: + - 1809.0 + betrag_soli_m: + - 47.14285714285714 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml index 9964fa2517..0ace3068fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4424.4 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4424.4 hh_id: - 620 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 620 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1250.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1250.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml index 3789f4b7b5..c076770c63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1618.1999999999998 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1618.1999999999998 hh_id: - 651 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 651 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0092 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0092 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 261.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 261.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml index e40000fae9..3b764042f8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4581.16 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4581.16 hh_id: - 738 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 738 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1307.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1307.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml index 3b4dc80310..6f517a1c00 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4388.243333333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4388.243333333333 hh_id: - 761 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 761 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1201.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1201.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml index 1e6960c6ed..2c4226838f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4518.591666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4518.591666666666 hh_id: - 788 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 788 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1288.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1288.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml index 697fe12732..c5b15e35bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 143.27142857142857 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 143.27142857142857 hh_id: - 798 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 798 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.010700000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.010700000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 3.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 3.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml index 50e7a571cc..cdc2fd784b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1509.5141666666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1509.5141666666666 hh_id: - 810 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 810 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.009399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.009399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 255.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 255.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml index a13774ec85..8f15c9ed2f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5862.53 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5862.53 hh_id: - 864 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 1 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 1 p_id: - 864 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1280.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1280.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml index 7b63dbc36c..e106bca827 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 194.45416666666665 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 194.45416666666665 hh_id: - 867 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 867 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0087 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0087 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 21.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 21.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml index a8d1b99712..1cc7e35fe6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3019.6714285714293 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3019.6714285714293 hh_id: - 883 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 883 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0147 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0147 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 720.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 720.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml index 55b0b60584..c480ff5959 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1597.49 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1597.49 hh_id: - 885 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 885 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0116 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0116 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 253.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 253.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml index 730115c4de..4f1fd42627 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7505.94 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7505.94 hh_id: - 9 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 9 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2419.0 - lohnsteuer__betrag_soli_m: - - 119.72333333333334 + lohnsteuer: + betrag_m: + - 2419.0 + betrag_soli_m: + - 119.72333333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml index 595b5fc525..611a801822 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 227.07 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 227.07 hh_id: - 946 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 946 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0149 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0149 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 13.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 13.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml index ed32a7fddd..c9fb64d501 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3147.6 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3147.6 hh_id: - 948 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 3 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 3 p_id: - 948 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013600000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013600000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 174.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 174.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml index 5cff33d6d4..911dd98c7d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1461.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1461.0 hh_id: - 1019 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1019 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 178.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 178.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml index 8bb08b1126..4f1a491292 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4581.860833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4581.860833333333 hh_id: - 1166 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1166 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1295.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1295.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml index f315ba66a6..0138518f71 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6023.53 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6023.53 hh_id: - 1209 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1209 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1839.0 - lohnsteuer__betrag_soli_m: - - 50.76 + lohnsteuer: + betrag_m: + - 1839.0 + betrag_soli_m: + - 50.76 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml index a830899f0a..e8bfa95245 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4504.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4504.5 hh_id: - 1305 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1305 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1218.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1218.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml index 64003e19ac..12ae8bb34d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5890.971428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5890.971428571429 hh_id: - 1364 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1364 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1789.0 - lohnsteuer__betrag_soli_m: - - 44.78571428571428 + lohnsteuer: + betrag_m: + - 1789.0 + betrag_soli_m: + - 44.78571428571428 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml index ce7f291feb..a251b3c085 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5989.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5989.8 hh_id: - 1473 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1473 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0075 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0075 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1782.0 - lohnsteuer__betrag_soli_m: - - 43.8 + lohnsteuer: + betrag_m: + - 1782.0 + betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml index fd8898e55b..9133b362b3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6007.200000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6007.200000000001 hh_id: - 1519 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1519 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0139 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0139 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1783.0 - lohnsteuer__betrag_soli_m: - - 43.8 + lohnsteuer: + betrag_m: + - 1783.0 + betrag_soli_m: + - 43.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml index 23f6cdba02..5f2a664530 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 152.99999999999997 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 152.99999999999997 hh_id: - 1667 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1667 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 2.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml index fcb3357aa0..b8b6f22de0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1621.95 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1621.95 hh_id: - 1770 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1770 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0104 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0104 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 283.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 283.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml index aca8fdd2c8..78bedb5ee1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4582.43 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4582.43 hh_id: - 1784 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1784 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0123 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0123 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1289.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1289.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml index 4f7c53f904..1c01345cd6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4547.98 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4547.98 hh_id: - 1881 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1881 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0089 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0089 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1287.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1287.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml index a651ef71b8..b45c82eb72 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1512.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1512.0 hh_id: - 1904 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1904 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0129 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0129 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 198.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 198.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml index 3ca3eb3665..8f74121b02 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 139.99 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 139.99 hh_id: - 1907 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1907 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml index baf3749a5e..cbb34f7bbe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6012.0428571428565 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6012.0428571428565 hh_id: - 1918 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1918 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0137 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0137 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1785.0 - lohnsteuer__betrag_soli_m: - - 44.31428571428572 + lohnsteuer: + betrag_m: + - 1785.0 + betrag_soli_m: + - 44.31428571428572 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml index cb194809c7..45a28b8149 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2987.7000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2987.7000000000003 hh_id: - 2099 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2099 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0097 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0097 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 700.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 700.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml index 5ca7aeb817..a18887a25d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4500.68 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4500.68 hh_id: - 2111 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2111 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1217.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1217.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml index 066e5dc0c9..c0b6d03bf4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7352.099999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7352.099999999999 hh_id: - 2118 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2118 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2366.0 - lohnsteuer__betrag_soli_m: - - 113.4 + lohnsteuer: + betrag_m: + - 2366.0 + betrag_soli_m: + - 113.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml index 4280b46b6b..2a5887a1a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 79.45 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 79.45 hh_id: - 2129 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2129 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 8.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 8.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml index 455712f1b1..8b815d02b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7538.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7538.7 hh_id: - 224 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 224 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0069 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0069 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2451.0 - lohnsteuer__betrag_soli_m: - - 123.3 + lohnsteuer: + betrag_m: + - 2451.0 + betrag_soli_m: + - 123.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml index f53a44bcf3..bac5687d74 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 118.84285714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 118.84285714285714 hh_id: - 241 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 241 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0129 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0129 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 13.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 13.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml index 3e075f7627..4445eabee8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1638.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1638.3 hh_id: - 2410 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2410 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0098 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0098 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 289.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 289.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml index 841ff96aeb..d08c2a00f8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5988.849999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5988.849999999999 hh_id: - 2423 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2423 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1826.0 - lohnsteuer__betrag_soli_m: - - 49.17666666666667 + lohnsteuer: + betrag_m: + - 1826.0 + betrag_soli_m: + - 49.17666666666667 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml index 3665724516..cc03a5e305 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7378.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7378.2 hh_id: - 2428 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2428 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2381.0 - lohnsteuer__betrag_soli_m: - - 115.2 + lohnsteuer: + betrag_m: + - 2381.0 + betrag_soli_m: + - 115.2 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml index b9d69fcbe0..eb2bf3ef93 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1480.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1480.8 hh_id: - 2439 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2439 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0146 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0146 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 186.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 186.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml index 3d31b7afe9..8c701e2c52 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 183.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 183.9 hh_id: - 2447 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2447 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 20.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 20.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml index fb7f184dd9..79db0a0836 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6071.195833333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6071.195833333334 hh_id: - 2868 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2868 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1859.0 - lohnsteuer__betrag_soli_m: - - 53.09333333333333 + lohnsteuer: + betrag_m: + - 1859.0 + betrag_soli_m: + - 53.09333333333333 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml index e619aed2cd..c5d5c511f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5895.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5895.0 hh_id: - 2962 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2962 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0134 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0134 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1790.0 - lohnsteuer__betrag_soli_m: - - 44.7 + lohnsteuer: + betrag_m: + - 1790.0 + betrag_soli_m: + - 44.7 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml index e2ad3b3f88..f19dadad85 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 66.55714285714285 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 66.55714285714285 hh_id: - 664 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 664 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 7.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 7.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml index c58ed4ca21..03bac5309f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5878.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5878.1 hh_id: - 688 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 688 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1790.0 - lohnsteuer__betrag_soli_m: - - 44.88 + lohnsteuer: + betrag_m: + - 1790.0 + betrag_soli_m: + - 44.88 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml index 25262ffa25..5962cba20d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6084.329166666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6084.329166666666 hh_id: - 720 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 720 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0138 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0138 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1856.0 - lohnsteuer__betrag_soli_m: - - 52.76583333333334 + lohnsteuer: + betrag_m: + - 1856.0 + betrag_soli_m: + - 52.76583333333334 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml index 36bb30eab1..b6132a670e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3067.2000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3067.2000000000003 hh_id: - 840 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 840 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0095 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0095 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 771.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 771.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml index d7d99a8ce0..30226ff337 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 101.92583333333332 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 101.92583333333332 hh_id: - 848 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 848 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml index 6b44f4deb1..52a2b34cf0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1537.98 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1537.98 hh_id: - 963 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 963 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0106 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0106 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 208.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 208.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml index 4d26aa726a..8438daab6e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1461.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1461.0 hh_id: - 1019 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1019 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.008100000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.008100000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 154.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 154.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml index 5717af2a64..595aa4bbe3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4581.860833333333 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4581.860833333333 hh_id: - 1166 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1166 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.012199999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.012199999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1252.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1252.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml index 641a4e0a6e..a3e068bf1f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6023.53 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6023.53 hh_id: - 1209 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1209 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1784.0 - lohnsteuer__betrag_soli_m: - - 38.36 + lohnsteuer: + betrag_m: + - 1784.0 + betrag_soli_m: + - 38.36 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml index 1f0d6a6f7d..f6f1b1c460 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4504.5 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4504.5 hh_id: - 1305 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1305 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0126 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0126 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1175.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1175.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml index d87de5645c..3938d7cb7c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5890.971428571429 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5890.971428571429 hh_id: - 1364 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1364 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013300000000000001 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.013300000000000001 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1734.0 - lohnsteuer__betrag_soli_m: - - 32.48571428571429 + lohnsteuer: + betrag_m: + - 1734.0 + betrag_soli_m: + - 32.48571428571429 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml index a82d5082b9..ff6f8a6486 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5989.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5989.8 hh_id: - 1473 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1473 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0075 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0075 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1726.0 - lohnsteuer__betrag_soli_m: - - 31.5 + lohnsteuer: + betrag_m: + - 1726.0 + betrag_soli_m: + - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml index 5e464d746b..0c7acebc68 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6007.200000000001 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6007.200000000001 hh_id: - 1519 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1519 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0139 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0139 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1726.0 - lohnsteuer__betrag_soli_m: - - 31.5 + lohnsteuer: + betrag_m: + - 1726.0 + betrag_soli_m: + - 31.5 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml index 950e6478a7..0b0c075378 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 152.99999999999997 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 152.99999999999997 hh_id: - 1667 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1667 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0070999999999999995 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0070999999999999995 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml index 60202c3f33..99c2b31289 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1621.95 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1621.95 hh_id: - 1770 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1770 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0104 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0104 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 259.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 259.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml index 6c071c34eb..c3b44b35a4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4582.43 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4582.43 hh_id: - 1784 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1784 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0123 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0123 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1246.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1246.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml index 397a16c321..adb98992cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4547.98 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4547.98 hh_id: - 1881 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 1881 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0089 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0089 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1244.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1244.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml index 4f75be6de3..8fc283f772 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1512.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1512.0 hh_id: - 1904 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1904 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0129 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0129 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 173.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 173.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml index 14542a2c16..da07c5864f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 139.99 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 139.99 hh_id: - 1907 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1907 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0105 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0105 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml index e7aac34b73..4b0a0a40cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6012.0428571428565 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6012.0428571428565 hh_id: - 1918 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 1918 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0137 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0137 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1728.0 - lohnsteuer__betrag_soli_m: - - 31.757142857142853 + lohnsteuer: + betrag_m: + - 1728.0 + betrag_soli_m: + - 31.757142857142853 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml index d08aa9b246..2ae7e5560e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2987.7000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2987.7000000000003 hh_id: - 2099 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2099 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0097 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0097 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 667.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 667.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml index 3f9b3a18e8..07798cb868 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4500.68 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4500.68 hh_id: - 2111 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2111 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0118 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0118 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1174.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 1174.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml index 7861de9f68..e0049443bb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7352.099999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7352.099999999999 hh_id: - 2118 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2118 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.01 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.01 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2296.0 - lohnsteuer__betrag_soli_m: - - 99.3 + lohnsteuer: + betrag_m: + - 2296.0 + betrag_soli_m: + - 99.3 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml index 4280b46b6b..2a5887a1a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 79.45 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 79.45 hh_id: - 2129 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2129 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 8.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 8.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml index 0e83395423..a79aa725e3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7538.7 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7538.7 hh_id: - 224 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 224 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0069 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0069 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 2379.0 - lohnsteuer__betrag_soli_m: - - 108.9 + lohnsteuer: + betrag_m: + - 2379.0 + betrag_soli_m: + - 108.9 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml index f53a44bcf3..bac5687d74 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 118.84285714285714 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 118.84285714285714 hh_id: - 241 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 241 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0129 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0129 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 13.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 13.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml index 566e665259..ace1130ac6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1638.3 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1638.3 hh_id: - 2410 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2410 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0098 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0098 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 266.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 266.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml index 8d0c757828..f7fc0ac5d3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5988.849999999999 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5988.849999999999 hh_id: - 2423 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2423 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0073 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0073 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1771.0 - lohnsteuer__betrag_soli_m: - - 36.8 + lohnsteuer: + betrag_m: + - 1771.0 + betrag_soli_m: + - 36.8 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml index 914bf6d623..aae9dc8e2d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 7378.2 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 7378.2 hh_id: - 2428 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2428 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0062 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0062 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 2311.0 - lohnsteuer__betrag_soli_m: - - 101.1 + lohnsteuer: + betrag_m: + - 2311.0 + betrag_soli_m: + - 101.1 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml index 083466648b..7cabc93a59 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1480.8 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1480.8 hh_id: - 2439 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 2439 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0146 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0146 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 161.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 161.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml index 3d31b7afe9..8c701e2c52 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 183.9 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 183.9 hh_id: - 2447 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2447 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.011399999999999999 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.011399999999999999 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 20.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 20.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml index 99db977bdd..b89cf7865f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6071.195833333334 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6071.195833333334 hh_id: - 2868 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2868 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0131 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0131 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 1803.0 - lohnsteuer__betrag_soli_m: - - 40.6775 + lohnsteuer: + betrag_m: + - 1803.0 + betrag_soli_m: + - 40.6775 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml index 6df4e505e1..e1b3e1cd4f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5895.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5895.0 hh_id: - 2962 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 2962 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0134 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0134 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1736.0 - lohnsteuer__betrag_soli_m: - - 32.4 + lohnsteuer: + betrag_m: + - 1736.0 + betrag_soli_m: + - 32.4 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml index e2ad3b3f88..f19dadad85 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 66.55714285714285 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 66.55714285714285 hh_id: - 664 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 664 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 7.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 7.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml index 832f162cb2..8f4865627b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5878.1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5878.1 hh_id: - 688 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 688 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0078000000000000005 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0078000000000000005 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1735.0 - lohnsteuer__betrag_soli_m: - - 32.58 + lohnsteuer: + betrag_m: + - 1735.0 + betrag_soli_m: + - 32.58 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml index b40c256052..91d29c0fdc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6084.329166666666 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6084.329166666666 hh_id: - 720 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 720 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0138 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - true - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0138 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - true + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 1800.0 - lohnsteuer__betrag_soli_m: - - 40.310833333333335 + lohnsteuer: + betrag_m: + - 1800.0 + betrag_soli_m: + - 40.310833333333335 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml index dc49a59859..18c9dc2d1c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3067.2000000000003 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3067.2000000000003 hh_id: - 840 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 6 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 6 p_id: - 840 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0095 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0095 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - false outputs: - lohnsteuer__betrag_m: - - 736.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 736.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml index d7d99a8ce0..30226ff337 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 101.92583333333332 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 101.92583333333332 hh_id: - 848 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 848 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0088 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0088 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 0.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 0.0 + betrag_soli_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml index f2391a812d..dcc73fbb73 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml @@ -5,35 +5,49 @@ info: source: '' inputs: assumed: - familie__p_id_elternteil_1: -1 - familie__p_id_elternteil_2: -1 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 provided: alter: - 25 arbeitsstunden_w: - 40.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1537.98 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1537.98 hh_id: - 963 - kindergeld__in_ausbildung: - - false - lohnsteuer__steuerklasse: - - 5 + kindergeld: + in_ausbildung: + - false + lohnsteuer: + steuerklasse: + - 5 p_id: - 963 - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.0106 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__pflege__beitrag__zahlt_zusatzbetrag_kinderlos: - - false - sozialversicherung__regulär_beschäftigt: - - true + sozialversicherung: + kranken: + beitrag: + zusatzbeitragssatz: + - 0.0106 + pflege: + beitrag: + hat_kinder: + - false + zahlt_zusatzbetrag_kinderlos: + - false + regulär_beschäftigt: + - true wohnort_ost: - true outputs: - lohnsteuer__betrag_m: - - 183.0 - lohnsteuer__betrag_soli_m: - - 0.0 + lohnsteuer: + betrag_m: + - 183.0 + betrag_soli_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" index 11cf76feff..cc7af6ad0a 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 6000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 6000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 2 p_id: - 2 outputs: - solidaritätszuschlag__betrag_y_sn: - - 225.0 + solidaritätszuschlag: + betrag_y_sn: + - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" index fbd2b4db36..205baf7218 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 3000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 5 p_id: - 5 outputs: - solidaritätszuschlag__betrag_y_sn: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" index 24ab3f0d3d..5fbcb22451 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 3000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 6 p_id: - 6 outputs: - solidaritätszuschlag__betrag_y_sn: - - 225.0 + solidaritätszuschlag: + betrag_y_sn: + - 225.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" index 31e64f68e5..ccc7cf6965 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 3000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 3000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 4 p_id: - 4 outputs: - solidaritätszuschlag__betrag_y_sn: - - 165.0 + solidaritätszuschlag: + betrag_y_sn: + - 165.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" index 5a8c41a787..e6f743b909 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 5000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 5000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 3 p_id: - 3 outputs: - solidaritätszuschlag__betrag_y_sn: - - 275.0 + solidaritätszuschlag: + betrag_y_sn: + - 275.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" index 984e0f1a72..8173d0932b 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 2000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 2000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 1 p_id: - 1 outputs: - solidaritätszuschlag__betrag_y_sn: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" index 5a313713cf..c73908ce93 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 32027.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 32027.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 7 p_id: - 7 outputs: - solidaritätszuschlag__betrag_y_sn: - - 1723.6 + solidaritätszuschlag: + betrag_y_sn: + - 1723.6 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" index 614e27e30c..e62f6a03a6 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" @@ -6,24 +6,27 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__anzahl_personen_sn: - - 2 - - 2 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 62794.0 - - 62794.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + anzahl_personen_sn: + - 2 + - 2 + betrag_mit_kinderfreibetrag_y_sn: + - 62794.0 + - 62794.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - false + p_id_ehepartner: + - 1 + - 0 hh_id: - 0 - 0 @@ -34,6 +37,7 @@ inputs: - true - true outputs: - solidaritätszuschlag__betrag_y_sn: - - 3157.55 - - 3157.55 + solidaritätszuschlag: + betrag_y_sn: + - 3157.55 + - 3157.55 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" index 16211e1191..f0f8f9c193 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" @@ -6,21 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 36000.0 - - 36000.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 3 - - 2 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 36000.0 + - 36000.0 + gemeinsam_veranlagt: + - true + - true + familie: + kind: + - false + - false + p_id_ehepartner: + - 3 + - 2 hh_id: - 1 - 1 @@ -31,6 +34,7 @@ inputs: - true - true outputs: - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" index 1b297d4b2c..f6607429c8 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 73397.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 73397.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 2 p_id: - 4 outputs: - solidaritätszuschlag__betrag_y_sn: - - 4036.84 + solidaritätszuschlag: + betrag_y_sn: + - 4036.84 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" index cc8465d404..902dd83981 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" @@ -6,20 +6,24 @@ info: inputs: assumed: {} provided: - einkommensteuer__abgeltungssteuer__betrag_y_sn: - - 0.0 - einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: - - 18000.0 - einkommensteuer__gemeinsam_veranlagt: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + abgeltungssteuer: + betrag_y_sn: + - 0.0 + betrag_mit_kinderfreibetrag_y_sn: + - 18000.0 + gemeinsam_veranlagt: + - false + familie: + kind: + - false + p_id_ehepartner: + - -1 hh_id: - 2 p_id: - 5 outputs: - solidaritätszuschlag__betrag_y_sn: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index c3bfc61d29..039427e7e3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -4,21 +4,24 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - - false - sozialversicherung__arbeitslosen__arbeitssuchend: - - true - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 - - 0.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - true + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + - false + arbeitssuchend: + - true + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + - 0.0 provided: alter: - 40 @@ -26,18 +29,22 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2500.0 - - 0.0 - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 9 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 2500.0 + - 0.0 + familie: + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 9 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1970 - 2004 @@ -51,6 +58,8 @@ inputs: - false - false outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 1021.87 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 1021.87 + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index 52919f1b60..7e5732f8a2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -4,29 +4,36 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - true - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - true + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 provided: alter: - 66 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2300.0 - familie__kind: - - false - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 2300.0 + familie: + kind: + - false + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1945 hh_id: @@ -36,5 +43,7 @@ inputs: wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index 92f600d20d..e40010d35b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -4,29 +4,36 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - true - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - true + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 provided: alter: - 30 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1000.0 - familie__kind: - - false - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 1000.0 + familie: + kind: + - false + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1989 hh_id: @@ -36,5 +43,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 465.54 + sozialversicherung: + arbeitslosen: + betrag_m: + - 465.54 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 39a438f9b1..8e388cdf6a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -4,29 +4,36 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - true - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + arbeitssuchend: + - true + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 provided: alter: - 30 arbeitsstunden_w: - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2000.0 - familie__kind: - - false - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 2000.0 + familie: + kind: + - false + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1989 hh_id: @@ -36,5 +43,7 @@ inputs: wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 789.76 + sozialversicherung: + arbeitslosen: + betrag_m: + - 789.76 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index 8585b21db5..d81fe69917 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -4,21 +4,24 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - true - - false - sozialversicherung__arbeitslosen__anwartschaftszeit: - - false - - true - sozialversicherung__arbeitslosen__arbeitssuchend: - - false - - true - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 12.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 0.0 - - 0.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - true + - false + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - false + - true + arbeitssuchend: + - false + - true + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 12.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 0.0 + - 0.0 provided: alter: - 5 @@ -26,18 +29,22 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - - 3000.0 - familie__kind: - - true - - false - familie__p_id_elternteil_1: - - 4 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 0.0 + - 3000.0 + familie: + kind: + - true + - false + p_id_elternteil_1: + - 4 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 2014 - 1989 @@ -51,6 +58,8 @@ inputs: - false - false outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index 0dd15ef48e..d0e1105db2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -4,21 +4,24 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - sozialversicherung__arbeitslosen__anwartschaftszeit: - - true - - false - sozialversicherung__arbeitslosen__arbeitssuchend: - - true - - false - sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 - - 0.0 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - true + sozialversicherung: + arbeitslosen: + anwartschaftszeit: + - true + - false + arbeitssuchend: + - true + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0.0 + - 0.0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 12.0 + - 0.0 provided: alter: - 30 @@ -26,18 +29,22 @@ inputs: arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 4000.0 - - 0.0 - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 5 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_vorjahr_m: + - 4000.0 + - 0.0 + familie: + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 5 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1989 - 2014 @@ -51,6 +58,8 @@ inputs: - false - false outputs: - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 3655c92eeb..01d00247bc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -8,70 +8,90 @@ inputs: alter: - 40 - 40 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false hh_id: - 0 - 1 p_id: - 0 - 1 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + pflege: + beitrag: + hat_kinder: + - false + - false + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + wohnort_ost: - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 + - true +outputs: + sozialversicherung: + arbeitslosen: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + - 9.75 + betrag_versicherter_m: + - 0.0 + - 9.75 + beiträge_arbeitgeber_m: - 0.0 - sozialversicherung__rente__private_rente_betrag_m: + - 63.15 + beiträge_gesamt_m: - 0.0 + - 126.3 + beiträge_versicherter_m: - 0.0 - wohnort_ost: - - false + - 63.15 + geringfügig_beschäftigt: - true -outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - - 0.0 - - 9.75 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - - 9.75 - sozialversicherung__beiträge_gesamt_m: - - 0.0 - - 126.3 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - - 63.15 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 63.15 - sozialversicherung__geringfügig_beschäftigt: - - true - - false - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: - - 0.0 - - 20.4 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 20.4 - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: - - 0.0 - - 2.55 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - - 2.55 - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: - - 0.0 - - 30.45 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 - - 30.45 + - false + kranken: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + - 20.4 + betrag_versicherter_m: + - 0.0 + - 20.4 + pflege: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + - 2.55 + betrag_versicherter_m: + - 0.0 + - 2.55 + rente: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + - 30.45 + betrag_versicherter_m: + - 0.0 + - 30.45 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index 1c0422ada1..015418dcab 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -8,46 +8,66 @@ inputs: provided: alter: - 40 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 0 p_id: - 0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - - 0.0 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 66.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 66.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: - - 30.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: - - 36.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 66.0 + beiträge_gesamt_m: + - 66.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_arbeitgeber_m: + - 30.0 + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_arbeitgeber_m: + - 0.0 + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_arbeitgeber_m: + - 36.0 + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index 869473eccd..dd364e1088 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 700.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 13 p_id: - 111 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 22.75 - sozialversicherung__beiträge_gesamt_m: - - 289.1 - sozialversicherung__beiträge_arbeitgeber_m: - - 144.55 - sozialversicherung__beiträge_versicherter_m: - - 144.55 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 49.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 5.95 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 66.85 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 22.75 + beiträge_arbeitgeber_m: + - 144.55 + beiträge_gesamt_m: + - 289.1 + beiträge_versicherter_m: + - 144.55 + kranken: + beitrag: + betrag_versicherter_m: + - 49.0 + pflege: + beitrag: + betrag_versicherter_m: + - 5.95 + rente: + beitrag: + betrag_versicherter_m: + - 66.85 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index 2fddb11e2e..bceb4f0848 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 5000.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 5000.0 + ist_selbstständig: + - true hh_id: - 13 p_id: - 111 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 529.88 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 529.88 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 472.5 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 57.38 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 0.0 + beiträge_gesamt_m: + - 529.88 + beiträge_versicherter_m: + - 529.88 + kranken: + beitrag: + betrag_versicherter_m: + - 472.5 + pflege: + beitrag: + betrag_versicherter_m: + - 57.38 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index 785225828f..592b5d47b7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 500.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 500.0 + ist_selbstständig: + - true hh_id: - 13 p_id: - 111 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 122.72 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 122.72 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 109.43 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 13.29 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 0.0 + beiträge_gesamt_m: + - 122.72 + beiträge_versicherter_m: + - 122.72 + kranken: + beitrag: + betrag_versicherter_m: + - 109.43 + pflege: + beitrag: + betrag_versicherter_m: + - 13.29 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index 492eaf7ee6..98c32fabef 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -8,26 +8,40 @@ inputs: provided: alter: - 70 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 13 p_id: - 111 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 1000.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 1000.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 17.0 + sozialversicherung: + pflege: + beitrag: + betrag_versicherter_m: + - 17.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index dc5ee3af2d..42fd2dccf0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 10 p_id: - 54684 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 16.8 - sozialversicherung__beiträge_gesamt_m: - - 474.6 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.9 - sozialversicherung__beiträge_versicherter_m: - - 242.7 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 94.8 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 11.7 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 119.4 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 16.8 + beiträge_arbeitgeber_m: + - 231.9 + beiträge_gesamt_m: + - 474.6 + beiträge_versicherter_m: + - 242.7 + kranken: + beitrag: + betrag_versicherter_m: + - 94.8 + pflege: + beitrag: + betrag_versicherter_m: + - 11.7 + rente: + beitrag: + betrag_versicherter_m: + - 119.4 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index c0fba2f87e..d1e5caaf3c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -9,55 +9,75 @@ inputs: alter: - 20 - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - - 1500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + - 1500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false hh_id: - 11 - 11 p_id: - 35 - 36 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + pflege: + beitrag: + hat_kinder: + - true + - true + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 wohnort_ost: - false - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 21.0 - - 21.0 - sozialversicherung__beiträge_gesamt_m: - - 593.26 - - 593.26 - sozialversicherung__beiträge_arbeitgeber_m: - - 289.88 - - 289.88 - sozialversicherung__beiträge_versicherter_m: - - 303.375 - - 303.375 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 118.5 - - 118.5 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 14.625 - - 14.625 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 149.25 - - 149.25 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 21.0 + - 21.0 + beiträge_arbeitgeber_m: + - 289.88 + - 289.88 + beiträge_gesamt_m: + - 593.26 + - 593.26 + beiträge_versicherter_m: + - 303.375 + - 303.375 + kranken: + beitrag: + betrag_versicherter_m: + - 118.5 + - 118.5 + pflege: + beitrag: + betrag_versicherter_m: + - 14.625 + - 14.625 + rente: + beitrag: + betrag_versicherter_m: + - 149.25 + - 149.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index 0306363950..e6e9864a7c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 12 p_id: - 369 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 77.0 - sozialversicherung__beiträge_gesamt_m: - - 1880.37 - sozialversicherung__beiträge_arbeitgeber_m: - - 923.31 - sozialversicherung__beiträge_versicherter_m: - - 957.0625 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 296.25 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 36.5625 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 547.25 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 77.0 + beiträge_arbeitgeber_m: + - 923.31 + beiträge_gesamt_m: + - 1880.37 + beiträge_versicherter_m: + - 957.0625 + kranken: + beitrag: + betrag_versicherter_m: + - 296.25 + pflege: + beitrag: + betrag_versicherter_m: + - 36.5625 + rente: + beitrag: + betrag_versicherter_m: + - 547.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 5a0b82446c..5448af2742 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 7 p_id: - 3483 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 84.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 84.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 84.0 + beiträge_gesamt_m: + - 84.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index 4381b6f9d2..bb38ac8d40 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 8 p_id: - 874 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 7.0476 - sozialversicherung__beiträge_gesamt_m: - - 218.2 - sozialversicherung__beiträge_arbeitgeber_m: - - 115.95 - sozialversicherung__beiträge_versicherter_m: - - 102.24735 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 40.2033 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 4.90815 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.0883 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 7.0476 + beiträge_arbeitgeber_m: + - 115.95 + beiträge_gesamt_m: + - 218.2 + beiträge_versicherter_m: + - 102.24735 + kranken: + beitrag: + betrag_versicherter_m: + - 40.2033 + pflege: + beitrag: + betrag_versicherter_m: + - 4.90815 + rente: + beitrag: + betrag_versicherter_m: + - 50.0883 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index b5832a2f37..442e1c123e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 9 p_id: - 6414 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 12.6 - sozialversicherung__beiträge_gesamt_m: - - 355.96 - sozialversicherung__beiträge_arbeitgeber_m: - - 173.93 - sozialversicherung__beiträge_versicherter_m: - - 182.025 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 71.1 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 8.775 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 89.55 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 12.6 + beiträge_arbeitgeber_m: + - 173.93 + beiträge_gesamt_m: + - 355.96 + beiträge_versicherter_m: + - 182.025 + kranken: + beitrag: + betrag_versicherter_m: + - 71.1 + pflege: + beitrag: + betrag_versicherter_m: + - 8.775 + rente: + beitrag: + betrag_versicherter_m: + - 89.55 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index 646afae639..d8c17dbc8d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 1 p_id: - 8 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 84.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 84.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 84.0 + beiträge_gesamt_m: + - 84.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index b28a16aee8..7c90025895 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 2 p_id: - 9 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 6.93028 - sozialversicherung__beiträge_gesamt_m: - - 212.4 - sozialversicherung__beiträge_arbeitgeber_m: - - 116.25 - sozialversicherung__beiträge_versicherter_m: - - 96.15375 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 39.03746 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 7.21826 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 42.96774 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 6.93028 + beiträge_arbeitgeber_m: + - 116.25 + beiträge_gesamt_m: + - 212.4 + beiträge_versicherter_m: + - 96.15375 + kranken: + beitrag: + betrag_versicherter_m: + - 39.03746 + pflege: + beitrag: + betrag_versicherter_m: + - 7.21826 + rente: + beitrag: + betrag_versicherter_m: + - 42.96774 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index dfaccb5efe..fed67697ef 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 3 p_id: - 34 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 13.5 - sozialversicherung__beiträge_gesamt_m: - - 360.01 - sozialversicherung__beiträge_arbeitgeber_m: - - 174.38 - sozialversicherung__beiträge_versicherter_m: - - 185.625 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 74.7 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 13.725 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 83.7 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 13.5 + beiträge_arbeitgeber_m: + - 174.38 + beiträge_gesamt_m: + - 360.01 + beiträge_versicherter_m: + - 185.625 + kranken: + beitrag: + betrag_versicherter_m: + - 74.7 + pflege: + beitrag: + betrag_versicherter_m: + - 13.725 + rente: + beitrag: + betrag_versicherter_m: + - 83.7 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index c1db90b1bf..88fd762143 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 4 p_id: - 55 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 18.0 - sozialversicherung__beiträge_gesamt_m: - - 477.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 232.5 - sozialversicherung__beiträge_versicherter_m: - - 244.5 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 99.6 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 15.3 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 111.6 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 18.0 + beiträge_arbeitgeber_m: + - 232.5 + beiträge_gesamt_m: + - 477.0 + beiträge_versicherter_m: + - 244.5 + kranken: + beitrag: + betrag_versicherter_m: + - 99.6 + pflege: + beitrag: + betrag_versicherter_m: + - 15.3 + rente: + beitrag: + betrag_versicherter_m: + - 111.6 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index 1bec7ff37d..6a9c60c095 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 5 p_id: - 5 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 22.5 - sozialversicherung__beiträge_gesamt_m: - - 596.26 - sozialversicherung__beiträge_arbeitgeber_m: - - 290.63 - sozialversicherung__beiträge_versicherter_m: - - 305.625 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 124.5 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 19.125 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 139.5 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 22.5 + beiträge_arbeitgeber_m: + - 290.63 + beiträge_gesamt_m: + - 596.26 + beiträge_versicherter_m: + - 305.625 + kranken: + beitrag: + betrag_versicherter_m: + - 124.5 + pflege: + beitrag: + betrag_versicherter_m: + - 19.125 + rente: + beitrag: + betrag_versicherter_m: + - 139.5 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index 393f578225..e9293c811f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 25 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 6 p_id: - 1354 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 75.0 - sozialversicherung__beiträge_gesamt_m: - - 1883.13 - sozialversicherung__beiträge_arbeitgeber_m: - - 919.44 - sozialversicherung__beiträge_versicherter_m: - - 963.69375 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 367.275 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 56.41875 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 465.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 75.0 + beiträge_arbeitgeber_m: + - 919.44 + beiträge_gesamt_m: + - 1883.13 + beiträge_versicherter_m: + - 963.69375 + kranken: + beitrag: + betrag_versicherter_m: + - 367.275 + pflege: + beitrag: + betrag_versicherter_m: + - 56.41875 + rente: + beitrag: + betrag_versicherter_m: + - 465.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index 3a2c95fafd..f668ff3a3b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 20 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 1000.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 1000.0 + ist_selbstständig: + - true hh_id: - 23 p_id: - 3657 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 186.3808333 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 186.3808333 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 154.7116667 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 31.66916667 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 0.0 + beiträge_gesamt_m: + - 186.3808333 + beiträge_versicherter_m: + - 186.3808333 + kranken: + beitrag: + betrag_versicherter_m: + - 154.7116667 + pflege: + beitrag: + betrag_versicherter_m: + - 31.66916667 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 737f3e387b..f15a40fe5f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 30 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 4000.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 4000.0 + ist_selbstständig: + - true hh_id: - 24 p_id: - 798 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - true outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 718.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 718.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 596.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 122.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 0.0 + beiträge_gesamt_m: + - 718.0 + beiträge_versicherter_m: + - 718.0 + kranken: + beitrag: + betrag_versicherter_m: + - 596.0 + pflege: + beitrag: + betrag_versicherter_m: + - 122.0 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index 5557d2da46..553642f18a 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 40 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 15 p_id: - 222 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 36.0 - sozialversicherung__beiträge_gesamt_m: - - 1200.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 596.25 - sozialversicherung__beiträge_versicherter_m: - - 603.75 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 235.5 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 53.25 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 279.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 36.0 + beiträge_arbeitgeber_m: + - 596.25 + beiträge_gesamt_m: + - 1200.0 + beiträge_versicherter_m: + - 603.75 + kranken: + beitrag: + betrag_versicherter_m: + - 235.5 + pflege: + beitrag: + betrag_versicherter_m: + - 53.25 + rente: + beitrag: + betrag_versicherter_m: + - 279.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index e6b36a2caf..f2665ca46a 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 50 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 8000.0 - einkommensteuer__einkünfte__ist_selbstständig: - - true + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 8000.0 + ist_selbstständig: + - true hh_id: - 25 p_id: - 4987 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 862.5 - sozialversicherung__beiträge_arbeitgeber_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 862.5 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 707.8125 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 154.6875 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 0.0 + beiträge_gesamt_m: + - 862.5 + beiträge_versicherter_m: + - 862.5 + kranken: + beitrag: + betrag_versicherter_m: + - 707.8125 + pflege: + beitrag: + betrag_versicherter_m: + - 154.6875 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index a27ea58bc6..a6ff0cbbb3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 40 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 750.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 750.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 16 p_id: - 223 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 7.26 - sozialversicherung__beiträge_gesamt_m: - - 273.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 149.81 - sozialversicherung__beiträge_versicherter_m: - - 123.19 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 48.09 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 11.59 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 56.25 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 7.26 + beiträge_arbeitgeber_m: + - 149.81 + beiträge_gesamt_m: + - 273.0 + beiträge_versicherter_m: + - 123.19 + kranken: + beitrag: + betrag_versicherter_m: + - 48.09 + pflege: + beitrag: + betrag_versicherter_m: + - 11.59 + rente: + beitrag: + betrag_versicherter_m: + - 56.25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index 217615c3ed..de625de0ff 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 40 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1050.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1050.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 17 p_id: - 224 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 11.8 - sozialversicherung__beiträge_gesamt_m: - - 406.28 - sozialversicherung__beiträge_arbeitgeber_m: - - 209.74 - sozialversicherung__beiträge_versicherter_m: - - 196.54 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 78.22 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 15.01 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 91.51 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 11.8 + beiträge_arbeitgeber_m: + - 209.74 + beiträge_gesamt_m: + - 406.28 + beiträge_versicherter_m: + - 196.54 + kranken: + beitrag: + betrag_versicherter_m: + - 78.22 + pflege: + beitrag: + betrag_versicherter_m: + - 15.01 + rente: + beitrag: + betrag_versicherter_m: + - 91.51 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index a50f5613e8..8ee551701f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 30 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 510.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 510.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 18 p_id: - 225 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__beiträge_gesamt_m: - - 142.8 - sozialversicherung__beiträge_arbeitgeber_m: - - 142.8 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 0.0 + beiträge_arbeitgeber_m: + - 142.8 + beiträge_gesamt_m: + - 142.8 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + pflege: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + beitrag: + betrag_versicherter_m: + - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 8fbca605fe..88b7019e4e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 35 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1100.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1100.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 19 p_id: - 19 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 10.31 - sozialversicherung__beiträge_gesamt_m: - - 414.28 - sozialversicherung__beiträge_arbeitgeber_m: - - 239.04 - sozialversicherung__beiträge_versicherter_m: - - 175.24 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 68.32 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 16.7 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 79.91 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 10.31 + beiträge_arbeitgeber_m: + - 239.04 + beiträge_gesamt_m: + - 414.28 + beiträge_versicherter_m: + - 175.24 + kranken: + beitrag: + betrag_versicherter_m: + - 68.32 + pflege: + beitrag: + betrag_versicherter_m: + - 16.7 + rente: + beitrag: + betrag_versicherter_m: + - 79.91 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index d2e245559b..74b2aecd99 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 35 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 800.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 800.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 20 p_id: - 20 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 4.98 - sozialversicherung__beiträge_gesamt_m: - - 273.58 - sozialversicherung__beiträge_arbeitgeber_m: - - 190.71 - sozialversicherung__beiträge_versicherter_m: - - 82.87 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 32.96 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 6.33 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 38.58 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 4.98 + beiträge_arbeitgeber_m: + - 190.71 + beiträge_gesamt_m: + - 273.58 + beiträge_versicherter_m: + - 82.87 + kranken: + beitrag: + betrag_versicherter_m: + - 32.96 + pflege: + beitrag: + betrag_versicherter_m: + - 6.33 + rente: + beitrag: + betrag_versicherter_m: + - 38.58 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index 4449e4d23b..a0274a7d76 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1400.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 21 p_id: - 21 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 15.64 - sozialversicherung__beiträge_gesamt_m: - - 547.78 - sozialversicherung__beiträge_arbeitgeber_m: - - 287.38 - sozialversicherung__beiträge_versicherter_m: - - 260.4 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 103.64 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 19.88 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 121.24 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 15.64 + beiträge_arbeitgeber_m: + - 287.38 + beiträge_gesamt_m: + - 547.78 + beiträge_versicherter_m: + - 260.4 + kranken: + beitrag: + betrag_versicherter_m: + - 103.64 + pflege: + beitrag: + betrag_versicherter_m: + - 19.88 + rente: + beitrag: + betrag_versicherter_m: + - 121.24 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index 1252405251..71f543a37d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -10,38 +10,58 @@ inputs: provided: alter: - 50 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 22 p_id: - 22 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 8.53 - sozialversicherung__beiträge_gesamt_m: - - 368.17 - sozialversicherung__beiträge_arbeitgeber_m: - - 222.93 - sozialversicherung__beiträge_versicherter_m: - - 145.24 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 56.53 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 14.04 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 66.14 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 8.53 + beiträge_arbeitgeber_m: + - 222.93 + beiträge_gesamt_m: + - 368.17 + beiträge_versicherter_m: + - 145.24 + kranken: + beitrag: + betrag_versicherter_m: + - 56.53 + pflege: + beitrag: + betrag_versicherter_m: + - 14.04 + rente: + beitrag: + betrag_versicherter_m: + - 66.14 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index 7266a54b53..c6c86968ba 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen + mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz, 2 Kinder unter 25 Jahren. precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ @@ -11,40 +11,60 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 23 p_id: - 23 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 2 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 39.0 - sozialversicherung__beiträge_gesamt_m: - - 1216.5 - sozialversicherung__beiträge_arbeitgeber_m: - - 612.0 - sozialversicherung__beiträge_versicherter_m: - - 604.5 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 243.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 43.5 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 279.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 39.0 + beiträge_arbeitgeber_m: + - 612.0 + beiträge_gesamt_m: + - 1216.5 + beiträge_versicherter_m: + - 604.5 + kranken: + beitrag: + betrag_versicherter_m: + - 243.0 + pflege: + beitrag: + betrag_versicherter_m: + - 43.5 + rente: + beitrag: + betrag_versicherter_m: + - 279.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index b6d87e5dad..3787e27c61 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen + mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz, 1 Kind über 25 Jahren und Midijob precision_atol: 1 source: https://www.ihre-vorsorge.de/rechner/midijob-rechner @@ -11,40 +11,60 @@ inputs: provided: alter: - 50 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 24 p_id: - 24 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 8.43 - sozialversicherung__beiträge_gesamt_m: - - 363.87 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.55 - sozialversicherung__beiträge_versicherter_m: - - 132.32 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 52.54 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 11.03 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 60.32 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 8.43 + beiträge_arbeitgeber_m: + - 231.55 + beiträge_gesamt_m: + - 363.87 + beiträge_versicherter_m: + - 132.32 + kranken: + beitrag: + betrag_versicherter_m: + - 52.54 + pflege: + beitrag: + betrag_versicherter_m: + - 11.03 + rente: + beitrag: + betrag_versicherter_m: + - 60.32 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index da0188f37f..ade4e22db3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen + mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz, 5 Kinder unter 25 Jahren precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ @@ -11,40 +11,60 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 25 p_id: - 25 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 5 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 5 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 52.0 - sozialversicherung__beiträge_gesamt_m: - - 1592.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 816.0 - sozialversicherung__beiträge_versicherter_m: - - 776.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 324.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 28.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 372.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 52.0 + beiträge_arbeitgeber_m: + - 816.0 + beiträge_gesamt_m: + - 1592.0 + beiträge_versicherter_m: + - 776.0 + kranken: + beitrag: + betrag_versicherter_m: + - 324.0 + pflege: + beitrag: + betrag_versicherter_m: + - 28.0 + rente: + beitrag: + betrag_versicherter_m: + - 372.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index edbf0d13b9..7f4f6efe88 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen + mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz, keine Kinder precision_atol: 1 source: https://www.steuertipps.de/service/rechner/brutto-netto-gehaltsrechner/ @@ -11,40 +11,60 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 26 p_id: - 26 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 52.0 - sozialversicherung__beiträge_gesamt_m: - - 1656.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 816.0 - sozialversicherung__beiträge_versicherter_m: - - 840.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 324.0 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 92.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 372.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 52.0 + beiträge_arbeitgeber_m: + - 816.0 + beiträge_gesamt_m: + - 1656.0 + beiträge_versicherter_m: + - 840.0 + kranken: + beitrag: + betrag_versicherter_m: + - 324.0 + pflege: + beitrag: + betrag_versicherter_m: + - 92.0 + rente: + beitrag: + betrag_versicherter_m: + - 372.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index ce17edce53..b8895ce2d9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -1,8 +1,8 @@ --- info: note: >- - Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen mit - Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und + Erhöhung der Pflegeversicherungsraten & Änderung der Berechnung für Menschen + mit Kindern unter 25 Jahren (ab Juli 2023), Pflegeunterstützungs- und -entlastungsgesetz, keine Kinder und Midijob precision_atol: 1 source: https://www.smart-rechner.de/midijob/rechner.php @@ -11,40 +11,60 @@ inputs: provided: alter: - 50 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 27 p_id: - 27 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + hat_kinder: + - false + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 8.43 - sozialversicherung__beiträge_gesamt_m: - - 369.21 - sozialversicherung__beiträge_arbeitgeber_m: - - 231.54 - sozialversicherung__beiträge_versicherter_m: - - 137.67 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 52.54 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 16.38 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 60.32 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 8.43 + beiträge_arbeitgeber_m: + - 231.54 + beiträge_gesamt_m: + - 369.21 + beiträge_versicherter_m: + - 137.67 + kranken: + beitrag: + betrag_versicherter_m: + - 52.54 + pflege: + beitrag: + betrag_versicherter_m: + - 16.38 + rente: + beitrag: + betrag_versicherter_m: + - 60.32 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" index 01ae8da470..b763107331 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 0 p_id: - 0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 2 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 78.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 1145.75 - sozialversicherung__beiträge_versicherter_m: - - 1132.81 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 421.77 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 75.04 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 558.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 78.0 + beiträge_arbeitgeber_m: + - 1145.75 + beiträge_versicherter_m: + - 1132.81 + kranken: + beitrag: + betrag_versicherter_m: + - 421.77 + pflege: + beitrag: + betrag_versicherter_m: + - 75.04 + rente: + beitrag: + betrag_versicherter_m: + - 558.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" index 03915f9e56..c74a1763a7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4990.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4990.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 0 p_id: - 0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 2 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 64.87 - sozialversicherung__beiträge_arbeitgeber_m: - - 1020.46 - sozialversicherung__beiträge_versicherter_m: - - 1007.99 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 406.69 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 72.36 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 464.07 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 64.87 + beiträge_arbeitgeber_m: + - 1020.46 + beiträge_versicherter_m: + - 1007.99 + kranken: + beitrag: + betrag_versicherter_m: + - 406.69 + pflege: + beitrag: + betrag_versicherter_m: + - 72.36 + rente: + beitrag: + betrag_versicherter_m: + - 464.07 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" index 22f01029c3..d13f4f83b2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" @@ -8,38 +8,58 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + ist_selbstständig: + - false hh_id: - 0 p_id: - 0 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 2 + hat_kinder: + - true + rente: + altersrente: + betrag_m: + - 0.0 + private_rente_betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 39.0 - sozialversicherung__beiträge_arbeitgeber_m: - - 613.5 - sozialversicherung__beiträge_versicherter_m: - - 606.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 244.5 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 43.5 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 279.0 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 39.0 + beiträge_arbeitgeber_m: + - 613.5 + beiträge_versicherter_m: + - 606.0 + kranken: + beitrag: + betrag_versicherter_m: + - 244.5 + pflege: + beitrag: + betrag_versicherter_m: + - 43.5 + rente: + beitrag: + betrag_versicherter_m: + - 279.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" index 7b179033b2..2ba6f341ae 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/pflegev_anz_kinder_bis_24.yaml" @@ -1,8 +1,9 @@ --- info: note: >- - Number of children below 25 years of age. Necessary to calculate the long-term care - insurance contribution. Does not depend on Kindergeld eligibility. + Number of children below 25 years of age. Necessary to calculate the + long-term care insurance contribution. Does not depend on Kindergeld + eligibility. precision_atol: 1 source: '' inputs: @@ -12,26 +13,28 @@ inputs: - 50 - 24 - 24 - familie__p_id_elternteil_1: - - -1 - - -1 - - 0 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 - - 1 - - -1 + familie: + p_id_elternteil_1: + - -1 + - -1 + - 0 + - 0 + p_id_elternteil_2: + - -1 + - -1 + - 1 + - -1 hh_id: - 0 - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true p_id: - 0 - 1 @@ -39,8 +42,11 @@ inputs: - 3 provided: {} outputs: - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 2 - - 1 - - 0 - - 0 + sozialversicherung: + pflege: + beitrag: + anzahl_kinder_bis_24: + - 2 + - 1 + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" index d0ea0634ea..d1b6bf4ac8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" @@ -10,18 +10,22 @@ inputs: - 45 - 45 - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 950.0 - - 950.0 - - 950.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 950.0 + - 950.0 + - 950.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + - false hh_id: - 0 - 1 @@ -30,68 +34,84 @@ inputs: - 0 - 1 - 2 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - - 1 - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - true - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + - false + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + - 1 + - 2 + hat_kinder: + - false + - true + - true + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 wohnort_ost: - false - false - false outputs: - sozialversicherung__midijob_bemessungsentgelt_m: - - 815.89 - - 815.89 - - 815.89 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 7.09 - - 7.09 - - 7.09 - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - - 14.12 - - 14.12 - - 14.12 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 46.66 - - 46.66 - - 46.66 - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: - - 92.86 - - 92.86 - - 92.86 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 14.72 - - 9.82 - - 8.46 - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_in_gleitzone_m: - - 19.56 - - 19.56 - - 19.56 - sozialversicherung__pflege__beitrag__betrag_gesamt_in_gleitzone_m: - - 34.27 - - 29.37 - - 27.33 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.75 - - 50.75 - - 50.75 - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: - - 101.01 - - 101.01 - - 101.01 + sozialversicherung: + arbeitslosen: + beitrag: + betrag_arbeitgeber_m: + - 14.12 + - 14.12 + - 14.12 + betrag_versicherter_m: + - 7.09 + - 7.09 + - 7.09 + kranken: + beitrag: + betrag_arbeitgeber_m: + - 92.86 + - 92.86 + - 92.86 + betrag_versicherter_m: + - 46.66 + - 46.66 + - 46.66 + midijob_bemessungsentgelt_m: + - 815.89 + - 815.89 + - 815.89 + pflege: + beitrag: + betrag_arbeitgeber_in_gleitzone_m: + - 19.56 + - 19.56 + - 19.56 + betrag_gesamt_in_gleitzone_m: + - 34.27 + - 29.37 + - 27.33 + betrag_versicherter_m: + - 14.72 + - 9.82 + - 8.46 + rente: + beitrag: + betrag_arbeitgeber_m: + - 101.01 + - 101.01 + - 101.01 + betrag_versicherter_m: + - 50.75 + - 50.75 + - 50.75 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" index 3eb7107b94..b3b6ec989c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2023-01-01/minijobgrenze.yaml" @@ -4,18 +4,22 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: hh_id: - 0 p_id: - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false outputs: - sozialversicherung__minijobgrenze: - - 520.0 - # TODO(@MImmesberger): Remove this target once testing infrastructure can handle - # single-row expected outputs. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/918 - sozialversicherung__pflege__beitrag__hat_kinder_hh: - - false + sozialversicherung: + minijobgrenze: + - 520.0 + pflege: + beitrag: + hat_kinder_hh: + - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" index 73e9aa6b09..c02e3a9e29 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2024-01-01/minijobgrenze.yaml" @@ -4,18 +4,22 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: hh_id: - 0 p_id: - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false outputs: - sozialversicherung__minijobgrenze: - - 538.0 - # TODO(@MImmesberger): Remove this target once testing infrastructure can handle - # single-row expected outputs. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/918 - sozialversicherung__pflege__beitrag__hat_kinder_hh: - - false + sozialversicherung: + minijobgrenze: + - 538.0 + pflege: + beitrag: + hat_kinder_hh: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml index cf94767bf6..1d853275eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml index b1766c0bc4..42cdfffb09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1936_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml index a1a833ab04..8afdbe176c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml index 702bfb3a7b..6f63a0436b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1989-01-01/cohort_1953_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml index cf94767bf6..1d853275eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml index b1766c0bc4..42cdfffb09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1936_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml index 46a19524e0..e6c30ab782 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml index 1aa7db2385..a9253ad34d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1937_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml index 3a5207adba..0ac0dd8944 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml index c9c2af9f96..a6ef720cd3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1938_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.083333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.083333 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml index d669afc6e4..02ef924abd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml index 2331bb49dc..c6f707a20d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1939_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.333333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.333333 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml index c84a92b53b..fa9afb11cd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml index 9190f90374..9b7998cbfb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1940_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.583333 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.583333 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml index 81e43af0c2..9e2c10eb01 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml index 65b1a2ff51..5f71940220 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1941_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.833333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.833333 + - 60.083333 + - 60.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml index 4442aeafaa..2c0ffd32a6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + langjährig: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml index ef2bc82cf7..d7aae20798 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1942_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.083333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.083333 + - 60.333333 + - 60.333333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml index ef394454f7..29a827719b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + langjährig: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml index 8b8b3c190e..da78e766ce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1943_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.583333 + - 60.583333 + - 60.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml index 0d7dac45f0..df153c9932 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml index ed9e6ebff5..b2548534af 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1944_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 60.833333 + - 60.833333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml index 3838dff2b7..328d7caeea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml index a1adbfe047..54d32697fa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1945_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml index 2efe21e0ba..cdddbc9da5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml index 4d665f831f..1b2fded0a1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1946_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 61.583333 + - 61.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml index 282ab9eae5..709aa011b0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml index 943a3edbde..53c6311514 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1947_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml index 9ed57e66de..8ee1623766 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml index c3fc658bad..4a41273d11 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1948_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 62.583333 + - 62.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml index 86d0efeac3..9c9e66b24f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + für_frauen: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml index 192a567893..30806fa3bb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1949_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml index bdcd382163..e331cd5031 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + für_frauen: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml index 1ba6d34f39..a2eac6098b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1950_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml index 52e753dd82..0d5cad62ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + für_frauen: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml index b3a3f69843..0ccc694fb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1951_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml index 0c99dfb9ff..b55f1d2dcd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + für_frauen: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml index 3469a16bca..810fb8dcd2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1952_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml index bdbb5c8508..549cd62e8e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml index 8e8018aafb..16308f023e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1992-01-01/cohort_1953_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml index cf94767bf6..1d853275eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml index b1766c0bc4..42cdfffb09 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1936_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml index 36aa2818f8..f6c78a5ff0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml index 7956462a01..c3bf9539c5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1937_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.0 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.0 + - 60.083333 + - 60.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml index e35651d3e9..48b86e5232 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml index bf5107e834..cf7d9d85aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1938_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.083333 + - 61.083333 + - 61.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml index 3efdf47abd..e12e10c207 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml index 10e3b62c94..7541956b59 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1939_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.333333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + - 63.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.333333 + - 62.083333 + - 62.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml index 17da346859..f976e8649d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml index 4982b80449..d8950c703f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1940_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.583333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.583333 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml index 214da315f8..0b715b7c7c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml index 9140e0b9f9..d451db5ef2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1941_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 63.833333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + - 63.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 63.833333 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml index a32e2b8fce..373ae7d388 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - - 60.333333 - - 60.333333 - - 60.333333 - - 60.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + langjährig: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + - 60.333333 + - 60.333333 + - 60.333333 + - 60.333333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml index cd3ada363d..de61c46a82 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1942_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.083333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.083333 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml index f6c15bc562..01a7069041 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + langjährig: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml index c80d364b07..bc4cfa2e4d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1943_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 63.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 64.583333 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 63.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 64.583333 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml index dbbee58e52..342bddc3cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 60.833333 - - 60.833333 - - 60.833333 - - 60.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 60.833333 + - 60.833333 + - 60.833333 + - 60.833333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml index 5477dd3ba6..67352cf585 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1944_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml index ef87e2b3e8..864cf2f3be 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml index b991768d8a..bc9852d59c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1945_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml index 5577b694d4..69da6f8cab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml index 83c405d643..2cd2a5204a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1946_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml index ac9e5eae9d..0f8438c2d1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml index 0fb9bce7cc..d3263e9985 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1947_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml index c627552280..8625128855 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - - 62.583333 - - 62.583333 - - 62.583333 - - 62.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + für_frauen: + altersgrenze: + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + - 62.583333 + - 62.583333 + - 62.583333 + - 62.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml index 2226b53f9f..4d36ddceae 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1948_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.0 + - 63.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml index 86d0efeac3..9c9e66b24f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + für_frauen: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml index 192a567893..30806fa3bb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1949_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.083333 + - 60.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml index bdcd382163..e331cd5031 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + für_frauen: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml index 1ba6d34f39..a2eac6098b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1950_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 60.583333 - - 60.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - - 63.583333 - - 63.583333 - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - - 60.583333 - - 60.583333 - - 60.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 60.583333 + - 60.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 63.583333 + - 63.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + - 63.583333 + - 63.583333 + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + - 60.583333 + - 60.583333 + - 60.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml index 52e753dd82..0d5cad62ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + für_frauen: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml index b3a3f69843..0ccc694fb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1951_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.083333 + - 61.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml index 0c99dfb9ff..b55f1d2dcd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + für_frauen: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml index 3469a16bca..810fb8dcd2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1952_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 61.583333 - - 61.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - - 64.583333 - - 64.583333 - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - - 61.583333 - - 61.583333 - - 61.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 61.583333 + - 61.583333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 64.583333 + - 64.583333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + - 64.583333 + - 64.583333 + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + - 61.583333 + - 61.583333 + - 61.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml index bdbb5c8508..549cd62e8e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_female.yaml @@ -42,42 +42,48 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -88,84 +94,91 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml index 8e8018aafb..16308f023e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/1996-07-29/cohort_1953_male.yaml @@ -26,69 +26,81 @@ inputs: - 1 - 2 - 3 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false weiblich: - false - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - - 62.0 - - 62.0 - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + - 62.0 + - 62.0 + - 62.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + - 62.0 + - 62.0 + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml index 320cbe4559..821831402d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml index 83c72cc4c7..da40889445 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1936_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml index c875fb1d7c..b5d5724d96 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml index f12e703811..2e8c744a2d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1937_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml index 4be2b78250..20cb08a6e7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml index e3e24d635e..c9de433aa0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1938_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml index 4e6e4ab468..38ca1cf626 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml index b15e90812f..65c566b452 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1939_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 62.166667 - - 62.166667 - - 62.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 62.166667 - - 62.166667 - - 62.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 62.166667 + - 62.166667 + - 62.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 62.166667 + - 62.166667 + - 62.166667 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml index 9ea6ea0cdd..8aa0500fac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml index 9862b97599..a992602957 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1940_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 63.166667 + - 63.166667 + - 63.166667 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + - 63.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml index 6cccbb499c..d9afae0136 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml index 5398d89e41..79eca84608 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1941_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 64.166667 - - 64.166667 - - 64.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 64.166667 - - 64.166667 - - 64.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - - 64.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 64.166667 + - 64.166667 + - 64.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 64.166667 + - 64.166667 + - 64.166667 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + - 64.166667 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml index 0f5054af8b..5bbb62622e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml index 26a8870c8c..24393864ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1942_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml index 869cf20a08..bae44585d8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - - 63.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + - 63.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml index 5e90745e4d..5cb90e3c7f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1943_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml index e0b70ec902..2bc2b29e63 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - - 64.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + - 64.083333 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml index 25dffb3571..7ac837e729 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1944_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml index 8fe75a9cf7..5fbe86f924 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml index 67cc6a1428..976492b74d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1945_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml index aef0ac5de9..2ed1738af0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 - - 60.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 + - 60.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml index 328328f540..2f1549abf1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1946_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 60.166667 - - 60.166667 - - 60.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 - - 60.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 60.166667 + - 60.166667 + - 60.166667 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 + - 60.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml index e30f794116..7511415024 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 - - 61.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 + - 61.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml index 6766fbabbe..6488475543 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1947_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - - 61.166667 - - 61.166667 - - 61.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - - 65.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 - - 61.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + - 61.166667 + - 61.166667 + - 61.166667 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + - 65.083333 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 + - 61.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml index 42796a69ca..83f0347f4b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_female.yaml @@ -58,84 +58,91 @@ inputs: - 9 - 10 - 11 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false weiblich: - true - true @@ -150,133 +157,141 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - - 62.083333 - - 62.083333 - - 62.083333 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - - 60.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 - - 62.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + - 62.083333 + - 62.083333 + - 62.083333 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + - 60.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + für_frauen: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 + - 62.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml index 8521ab5098..ba2911c83c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2012-01-01/cohort_1948_male.yaml @@ -34,48 +34,55 @@ inputs: - 3 - 4 - 5 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - - false - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - true + - true + - true + vertrauensschutz_1997: + - false + - false + - false + - false + - false + - false + vertrauensschutz_2004: + - false + - false + - false + - false + - false + - false weiblich: - false - false @@ -84,66 +91,73 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - - 62.166667 - - 62.166667 - - 62.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.166667 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 - - 62.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + - 62.166667 + - 62.166667 + - 62.166667 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.166667 + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 + - 62.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml index 7da3f8d5b7..9b9bcd4d37 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml index 7a073760f0..30598c3311 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1946_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.0 - - 65.0 - - 65.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.0 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.0 + regelaltersrente: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml index 4c2751df18..c997e7f435 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + regelaltersrente: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml index 5646533637..08cffe01a8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1947_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.083333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.083333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.083333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.083333 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.083333 + regelaltersrente: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml index 3ec5db3f98..4d4ef66d6b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + regelaltersrente: + altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml index 737dae2972..5b54f6f426 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1948_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - - 63.0 - - 65.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - - 65.0 - - 65.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.166667 - - 65.166667 - - 65.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + - 63.0 + - 65.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.166667 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.0 + - 65.0 + - 65.166667 + regelaltersrente: + altersgrenze: + - 65.166667 + - 65.166667 + - 65.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml index 0fdbadc01c..b2c527d719 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_female.yaml @@ -82,44 +82,49 @@ inputs: - 15 - 16 - 17 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false weiblich: - true - true @@ -140,136 +145,142 @@ inputs: - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.083333 - - 63.0 - - 65.25 - - 65.166667 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.083333 - - 65.083333 - - 65.25 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.083333 + - 63.0 + - 65.25 + - 65.166667 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.083333 + - 65.083333 + - 65.25 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + regelaltersrente: + altersgrenze: + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml index 261d808a18..f1a0580e59 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1949_male.yaml @@ -82,44 +82,49 @@ inputs: - 15 - 16 - 17 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false + - true + - true + - false weiblich: - false - false @@ -140,136 +145,142 @@ inputs: - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.083333 - - 63.0 - - 65.25 - - 65.166667 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - - 65.25 - - 63.0 - - 65.25 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - - 63.0 - - 63.0 - - 65.25 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.083333 - - 65.083333 - - 65.083333 - - 65.166667 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.083333 - - 65.083333 - - 65.25 - - 65.166667 - - 65.166667 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 - - 65.25 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.083333 + - 63.0 + - 65.25 + - 65.166667 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + - 65.25 + - 63.0 + - 65.25 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + - 63.0 + - 63.0 + - 65.25 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.083333 + - 65.083333 + - 65.083333 + - 65.166667 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.083333 + - 65.083333 + - 65.25 + - 65.166667 + - 65.166667 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + regelaltersrente: + altersgrenze: + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 + - 65.25 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml index d8013ee26b..be987f516e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.333333 - - 63.0 - - 65.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.333333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.333333 - - 65.333333 - - 65.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.333333 + - 63.0 + - 65.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.333333 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.333333 + - 65.333333 + - 65.333333 + regelaltersrente: + altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml index b8f95bbeea..9d6cec9d5a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1950_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.333333 - - 63.0 - - 65.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.333333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.333333 - - 65.333333 - - 65.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.333333 - - 65.333333 - - 65.333333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.333333 + - 63.0 + - 65.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.333333 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.333333 + - 65.333333 + - 65.333333 + regelaltersrente: + altersgrenze: + - 65.333333 + - 65.333333 + - 65.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml index ff75d854d6..754a89544c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.416667 - - 63.0 - - 65.416667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.416667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.416667 - - 65.416667 - - 65.416667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.416667 + - 63.0 + - 65.416667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.416667 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.416667 + - 65.416667 + - 65.416667 + regelaltersrente: + altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml index 1e6123efff..2923dd92a2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1951_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.416667 - - 63.0 - - 65.416667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.416667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.416667 - - 65.416667 - - 65.416667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.416667 - - 65.416667 - - 65.416667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.416667 + - 63.0 + - 65.416667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.416667 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.416667 + - 65.416667 + - 65.416667 + regelaltersrente: + altersgrenze: + - 65.416667 + - 65.416667 + - 65.416667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml index 2b3c4b1799..3789448f3e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - - 63.0 - - 65.5 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.5 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.5 - - 65.5 - - 65.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.5 - - 65.5 - - 65.5 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.5 - - 65.5 - - 65.5 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + - 63.0 + - 65.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.5 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.5 + - 65.5 + - 65.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.5 + - 65.5 + - 65.5 + regelaltersrente: + altersgrenze: + - 65.5 + - 65.5 + - 65.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml index 4f1ce9fb71..eeae536af9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1952_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - - 63.0 - - 65.5 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.5 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.5 - - 65.5 - - 65.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.5 - - 65.5 - - 65.5 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.5 - - 65.5 - - 65.5 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + - 63.0 + - 65.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.5 + besonders_langjährig: + altersgrenze: + - 63.0 + - 63.0 + - 63.0 + langjährig: + altersgrenze: + - 65.5 + - 65.5 + - 65.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.5 + - 65.5 + - 65.5 + regelaltersrente: + altersgrenze: + - 65.5 + - 65.5 + - 65.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml index 29b27830f5..e755cff260 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.583333 - - 63.166667 - - 65.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.583333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.583333 - - 65.583333 - - 65.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.583333 + - 63.166667 + - 65.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.583333 + besonders_langjährig: + altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + langjährig: + altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.583333 + - 65.583333 + - 65.583333 + regelaltersrente: + altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml index 5643e8c1d7..6af2d3de56 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1953_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.583333 - - 63.166667 - - 65.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.583333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.166667 - - 63.166667 - - 63.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.583333 - - 65.583333 - - 65.583333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.583333 - - 65.583333 - - 65.583333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.583333 + - 63.166667 + - 65.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.583333 + besonders_langjährig: + altersgrenze: + - 63.166667 + - 63.166667 + - 63.166667 + langjährig: + altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.583333 + - 65.583333 + - 65.583333 + regelaltersrente: + altersgrenze: + - 65.583333 + - 65.583333 + - 65.583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml index e598bd94f0..43621ae618 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.666667 - - 63.333333 - - 65.666667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.666667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.666667 - - 65.666667 - - 65.666667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.666667 + - 63.333333 + - 65.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.666667 + besonders_langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + langjährig: + altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.666667 + - 65.666667 + - 65.666667 + regelaltersrente: + altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml index 1cae54e873..204ad8d909 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1954_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.666667 - - 63.333333 - - 65.666667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.666667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.333333 - - 63.333333 - - 63.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.666667 - - 65.666667 - - 65.666667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.666667 - - 65.666667 - - 65.666667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.666667 + - 63.333333 + - 65.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.666667 + besonders_langjährig: + altersgrenze: + - 63.333333 + - 63.333333 + - 63.333333 + langjährig: + altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.666667 + - 65.666667 + - 65.666667 + regelaltersrente: + altersgrenze: + - 65.666667 + - 65.666667 + - 65.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml index c6d8e08ce6..fe21e7564b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.75 - - 63.5 - - 65.75 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.75 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.5 - - 63.5 - - 63.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.75 - - 65.75 - - 65.75 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.75 - - 65.75 - - 65.75 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.75 - - 65.75 - - 65.75 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.75 + - 63.5 + - 65.75 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.75 + besonders_langjährig: + altersgrenze: + - 63.5 + - 63.5 + - 63.5 + langjährig: + altersgrenze: + - 65.75 + - 65.75 + - 65.75 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.75 + - 65.75 + - 65.75 + regelaltersrente: + altersgrenze: + - 65.75 + - 65.75 + - 65.75 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml index 89c41a1175..9ab47cbcc4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1955_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.75 - - 63.5 - - 65.75 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.75 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.5 - - 63.5 - - 63.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.75 - - 65.75 - - 65.75 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.75 - - 65.75 - - 65.75 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.75 - - 65.75 - - 65.75 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.75 + - 63.5 + - 65.75 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.75 + besonders_langjährig: + altersgrenze: + - 63.5 + - 63.5 + - 63.5 + langjährig: + altersgrenze: + - 65.75 + - 65.75 + - 65.75 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.75 + - 65.75 + - 65.75 + regelaltersrente: + altersgrenze: + - 65.75 + - 65.75 + - 65.75 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml index 8c0b1fddb9..dd2bb60ee2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.833333 - - 63.666667 - - 65.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.833333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.666667 - - 63.666667 - - 63.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.833333 - - 65.833333 - - 65.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.833333 + - 63.666667 + - 65.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.833333 + besonders_langjährig: + altersgrenze: + - 63.666667 + - 63.666667 + - 63.666667 + langjährig: + altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.833333 + - 65.833333 + - 65.833333 + regelaltersrente: + altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml index db4e660c53..cf3afba70c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1956_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.833333 - - 63.666667 - - 65.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.833333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.666667 - - 63.666667 - - 63.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.833333 - - 65.833333 - - 65.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.833333 - - 65.833333 - - 65.833333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.833333 + - 63.666667 + - 65.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.833333 + besonders_langjährig: + altersgrenze: + - 63.666667 + - 63.666667 + - 63.666667 + langjährig: + altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.833333 + - 65.833333 + - 65.833333 + regelaltersrente: + altersgrenze: + - 65.833333 + - 65.833333 + - 65.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml index aae4f0d724..b601423597 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.916667 - - 63.833333 - - 65.916667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.916667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.916667 - - 65.916667 - - 65.916667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.916667 + - 63.833333 + - 65.916667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.916667 + besonders_langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + langjährig: + altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.916667 + - 65.916667 + - 65.916667 + regelaltersrente: + altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml index 978d77688b..56999fc060 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1957_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.916667 - - 63.833333 - - 65.916667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 65.916667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 63.833333 - - 63.833333 - - 63.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.916667 - - 65.916667 - - 65.916667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 65.916667 - - 65.916667 - - 65.916667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.916667 + - 63.833333 + - 65.916667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 65.916667 + besonders_langjährig: + altersgrenze: + - 63.833333 + - 63.833333 + - 63.833333 + langjährig: + altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 65.916667 + - 65.916667 + - 65.916667 + regelaltersrente: + altersgrenze: + - 65.916667 + - 65.916667 + - 65.916667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml index d06b837408..7e0793d80c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.0 - - 64.0 - - 66.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.0 - - 64.0 - - 64.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.0 - - 66.0 - - 66.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.0 - - 66.0 - - 66.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.0 - - 66.0 - - 66.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.0 + - 64.0 + - 66.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.0 + besonders_langjährig: + altersgrenze: + - 64.0 + - 64.0 + - 64.0 + langjährig: + altersgrenze: + - 66.0 + - 66.0 + - 66.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.0 + - 66.0 + - 66.0 + regelaltersrente: + altersgrenze: + - 66.0 + - 66.0 + - 66.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml index 06e399b83c..6668f462ba 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1958_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.0 - - 64.0 - - 66.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.0 - - 64.0 - - 64.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.0 - - 66.0 - - 66.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.0 - - 66.0 - - 66.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.0 - - 66.0 - - 66.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.0 + - 64.0 + - 66.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.0 + besonders_langjährig: + altersgrenze: + - 64.0 + - 64.0 + - 64.0 + langjährig: + altersgrenze: + - 66.0 + - 66.0 + - 66.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.0 + - 66.0 + - 66.0 + regelaltersrente: + altersgrenze: + - 66.0 + - 66.0 + - 66.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml index 31a260649f..94b61bf7aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.166667 - - 64.166667 - - 66.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.166667 - - 66.166667 - - 66.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.166667 + - 64.166667 + - 66.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.166667 + besonders_langjährig: + altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + langjährig: + altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.166667 + - 66.166667 + - 66.166667 + regelaltersrente: + altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml index edc2c5e13f..5aa9062cfc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1959_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.166667 - - 64.166667 - - 66.166667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.166667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.166667 - - 64.166667 - - 64.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.166667 - - 66.166667 - - 66.166667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.166667 - - 66.166667 - - 66.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.166667 + - 64.166667 + - 66.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.166667 + besonders_langjährig: + altersgrenze: + - 64.166667 + - 64.166667 + - 64.166667 + langjährig: + altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.166667 + - 66.166667 + - 66.166667 + regelaltersrente: + altersgrenze: + - 66.166667 + - 66.166667 + - 66.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml index 67a6dfed6a..a127a46a77 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.333333 - - 64.333333 - - 66.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.333333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.333333 - - 64.333333 - - 64.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.333333 - - 66.333333 - - 66.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.333333 + - 64.333333 + - 66.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.333333 + besonders_langjährig: + altersgrenze: + - 64.333333 + - 64.333333 + - 64.333333 + langjährig: + altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.333333 + - 66.333333 + - 66.333333 + regelaltersrente: + altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml index 80059010f2..0429072e16 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1960_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.333333 - - 64.333333 - - 66.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.333333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.333333 - - 64.333333 - - 64.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.333333 - - 66.333333 - - 66.333333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.333333 - - 66.333333 - - 66.333333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.333333 + - 64.333333 + - 66.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.333333 + besonders_langjährig: + altersgrenze: + - 64.333333 + - 64.333333 + - 64.333333 + langjährig: + altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.333333 + - 66.333333 + - 66.333333 + regelaltersrente: + altersgrenze: + - 66.333333 + - 66.333333 + - 66.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml index 96034fd6ee..a4957ca999 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.5 - - 64.5 - - 66.5 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.5 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.5 - - 64.5 - - 64.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.5 - - 66.5 - - 66.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.5 - - 66.5 - - 66.5 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.5 - - 66.5 - - 66.5 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.5 + - 64.5 + - 66.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.5 + besonders_langjährig: + altersgrenze: + - 64.5 + - 64.5 + - 64.5 + langjährig: + altersgrenze: + - 66.5 + - 66.5 + - 66.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.5 + - 66.5 + - 66.5 + regelaltersrente: + altersgrenze: + - 66.5 + - 66.5 + - 66.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml index 47f91da168..34002ac9fe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1961_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.5 - - 64.5 - - 66.5 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.5 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.5 - - 64.5 - - 64.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.5 - - 66.5 - - 66.5 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.5 - - 66.5 - - 66.5 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.5 - - 66.5 - - 66.5 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.5 + - 64.5 + - 66.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.5 + besonders_langjährig: + altersgrenze: + - 64.5 + - 64.5 + - 64.5 + langjährig: + altersgrenze: + - 66.5 + - 66.5 + - 66.5 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.5 + - 66.5 + - 66.5 + regelaltersrente: + altersgrenze: + - 66.5 + - 66.5 + - 66.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml index 5566f1da85..73a70b0295 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.666667 - - 64.666667 - - 66.666667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.666667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.666667 - - 64.666667 - - 64.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.666667 - - 66.666667 - - 66.666667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.666667 + - 64.666667 + - 66.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.666667 + besonders_langjährig: + altersgrenze: + - 64.666667 + - 64.666667 + - 64.666667 + langjährig: + altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.666667 + - 66.666667 + - 66.666667 + regelaltersrente: + altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml index cb6170009c..5f89d3f7b7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1962_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.666667 - - 64.666667 - - 66.666667 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.666667 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.666667 - - 64.666667 - - 64.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.666667 - - 66.666667 - - 66.666667 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.666667 - - 66.666667 - - 66.666667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.666667 + - 64.666667 + - 66.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.666667 + besonders_langjährig: + altersgrenze: + - 64.666667 + - 64.666667 + - 64.666667 + langjährig: + altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.666667 + - 66.666667 + - 66.666667 + regelaltersrente: + altersgrenze: + - 66.666667 + - 66.666667 + - 66.666667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml index 22a622edd8..8d1a89c2ce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.833333 - - 64.833333 - - 66.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.833333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.833333 - - 64.833333 - - 64.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.833333 - - 66.833333 - - 66.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.833333 + - 64.833333 + - 66.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.833333 + besonders_langjährig: + altersgrenze: + - 64.833333 + - 64.833333 + - 64.833333 + langjährig: + altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.833333 + - 66.833333 + - 66.833333 + regelaltersrente: + altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml index e1458f33ff..e8151e06d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1963_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.833333 - - 64.833333 - - 66.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 66.833333 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 64.833333 - - 64.833333 - - 64.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 66.833333 - - 66.833333 - - 66.833333 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 66.833333 - - 66.833333 - - 66.833333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.833333 + - 64.833333 + - 66.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 66.833333 + besonders_langjährig: + altersgrenze: + - 64.833333 + - 64.833333 + - 64.833333 + langjährig: + altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 66.833333 + - 66.833333 + - 66.833333 + regelaltersrente: + altersgrenze: + - 66.833333 + - 66.833333 + - 66.833333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml index ec7e28c590..3a8c6f728b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_female.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - true - true - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - - 65.0 - - 67.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 67.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 67.0 - - 67.0 - - 67.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 67.0 - - 67.0 - - 67.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 67.0 - - 67.0 - - 67.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + - 65.0 + - 67.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 67.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 67.0 + - 67.0 + - 67.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 67.0 + - 67.0 + - 67.0 + regelaltersrente: + altersgrenze: + - 67.0 + - 67.0 + - 67.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml index 1735d55486..1fb284a8bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/altersgrenze/2024-01-01/cohort_1964_male.yaml @@ -22,44 +22,55 @@ inputs: - 0 - 1 - 2 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - - true - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + - true + - false weiblich: - false - false - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - - 65.0 - - 67.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 67.0 - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: - - 65.0 - - 65.0 - - 65.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 67.0 - - 67.0 - - 67.0 - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: - - 63.0 - - 63.0 - - 63.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 67.0 - - 67.0 - - 67.0 - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: - - 67.0 - - 67.0 - - 67.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + - 65.0 + - 67.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 67.0 + besonders_langjährig: + altersgrenze: + - 65.0 + - 65.0 + - 65.0 + langjährig: + altersgrenze: + - 67.0 + - 67.0 + - 67.0 + altersgrenze_vorzeitig: + - 63.0 + - 63.0 + - 63.0 + referenzalter_abschlag: + - 67.0 + - 67.0 + - 67.0 + regelaltersrente: + altersgrenze: + - 67.0 + - 67.0 + - 67.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml index 86d997ff49..dd11b5ad57 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_frauen.yaml @@ -14,52 +14,62 @@ inputs: - 21 p_id: - 21 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 11.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 180.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 180.0 weiblich: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__wartezeit_15_jahre_erfüllt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - true + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false + wartezeit_15_jahre_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml index 6810fa83d3..a369d8b460 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj.yaml @@ -14,52 +14,63 @@ inputs: - 24 p_id: - 24 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 63.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml index a8bf32f847..35877e0da3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_arbeitsl.yaml @@ -14,52 +14,63 @@ inputs: - 22 p_id: - 22 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml index 52ef270134..e9ebd41392 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_langj_and_frauen.yaml @@ -14,52 +14,63 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 12.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 12.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml index ecc0aa0f2a..7bb1c94d6d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_ohne_vorzeitig.yaml @@ -14,48 +14,58 @@ inputs: - 25 p_id: - 25 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 100.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 100.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml index a0fa51b016..74ba3c6b45 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml index 699d0b781e..152e6187e6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml index 0a9ca2d708..810e6b0f10 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml index 38baff8403..55af17af78 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml index 05db8946d5..a8a962177d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml index 3f6146a4ac..1fa5a1ca2b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml index 0e82e8565c..bc7d72adfc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.333333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.333333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml index 18cc04d806..e7213efb0b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml index fe0e4e80cf..610f6ab623 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.833333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 60.833333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml index 8fb348b546..4466d1ecbe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 61.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml index e5f3efc322..b5593627f2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 61.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml index fc2bd439f7..83f99d89ec 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 62.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml index c3181eed54..db89eb33e3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + referenzalter_abschlag: + - 62.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml index 68d0c30333..9e09ffc2a3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + referenzalter_abschlag: + - 63.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml index 3ff1eb6636..b7259071d2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 15 p_id: - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + referenzalter_abschlag: + - 63.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml index 2e4fa500e7..d33fdcacc9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 16 p_id: - 16 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + referenzalter_abschlag: + - 64.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml index 230bf5a608..5ad7aaeb44 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 17 p_id: - 17 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + referenzalter_abschlag: + - 64.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml index df08b7a10d..22c82d1577 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml index 284c18b106..62cfe3d991 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 19 p_id: - 19 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml index 946f46fe8f..717e285ae0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -14,48 +14,57 @@ inputs: - 20 p_id: - 20 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml index fafeda5de1..baf56cd5ee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1991-01-01/eligibility_pathways.yaml @@ -56,159 +56,164 @@ inputs: - 13 - 14 - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - - 0.0 - - 0.0 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + - 0.0 + - 0.0 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + pflichtbeitragsjahre_8_von_10: + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 weiblich: - false - false @@ -228,71 +233,78 @@ inputs: - false provided: {} outputs: - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - true - - true - - true - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: - - false - - true - - true - - true - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true + sozialversicherung: + rente: + altersrente: + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - true + - true + - true + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + regelaltersrente: + grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml index f94f7a1bf9..c65c935a90 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml index 2bfda6aff2..ab92c94575 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml index e88775b5df..c40fd06a84 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml index b1f7cf8d70..c9c0097741 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml index 98f49d5c9b..600fbe90d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml index b01a5fa024..4bcefe16bd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml index 2d6e03c3ec..92d2f82d14 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.333333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.333333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + altersgrenze_ohne_vertrauensschutz: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml index 79687963cf..362595522f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1943_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + altersgrenze_ohne_vertrauensschutz: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml index 3fa93b7b36..c48d26a17a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1944_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.833333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.833333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + altersgrenze_ohne_vertrauensschutz: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml index fae0ad568c..3afc78dcbe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1945_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 61.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + altersgrenze_ohne_vertrauensschutz: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml index 0dd1376537..88926e8842 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1946_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 61.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.583333 + altersgrenze_ohne_vertrauensschutz: + - 61.583333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml index 274baf4c72..006680f57f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1947_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 62.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + altersgrenze_ohne_vertrauensschutz: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml index cefe3b47d1..3c8494efac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1948_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 62.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 62.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.583333 + altersgrenze_ohne_vertrauensschutz: + - 62.583333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml index ffb4c7bfb5..82a1e7a1e2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1949_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml index b3adc4111e..750fb8d70f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1950_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 15 p_id: - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + altersgrenze_ohne_vertrauensschutz: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml index fc6ed5d104..a8ae52edfd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1951_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 16 p_id: - 16 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 61.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml index 1f6fda5346..d8c12f91f6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1952_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 17 p_id: - 17 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + altersgrenze_ohne_vertrauensschutz: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 61.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml index 23da050f3f..aca56ffd8f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1953_wegen_arbeitsl.yaml @@ -14,52 +14,62 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml index f810bf0b5d..e303d20094 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1954_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 19 p_id: - 19 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml index 3deda22766..99624c2d3d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1992-01-01/cohort_1955_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 20 p_id: - 20 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml index 87712ead19..457b15f513 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 62 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 entgeltp: - 31.0625 geburtsjahr: @@ -20,44 +23,54 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 + sozialversicherung: + rente: + altersrente: + langjährig: + altersgrenze: + - 63.0 + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml index 88a649ccfc..6e51f3b277 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml index 3ff92abdea..0e3b95fd2d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml index ef95d703e9..cca0086893 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 61.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + altersgrenze_ohne_vertrauensschutz: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml index 9ab372ca68..27d8e0bd0d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 62.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + altersgrenze_ohne_vertrauensschutz: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index c2dc2660b1..e16fabf233 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 21 p_id: - 21 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml index dccd74677e..aa6d8ee8e1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index e9e34be27b..7b95db1e53 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 22 p_id: - 22 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml index babd61cc88..fc43e23298 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index 2d39d01aa4..783cb3ee9b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.333333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.333333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml index 8d8e63f473..92a8d05dc5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index 1f0c551d1f..ae948138e7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml index 3d695a9208..046171d1f0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1943_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index 543d91a28f..ace973254a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 24 p_id: - 24 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.833333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.833333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml index a34497bd7a..a42868ceb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1944_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml index 94bebfe70d..4020f1c6a0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml index e7c012410c..1673133903 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml index 5b283551cc..833cf1ae64 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml index 183675df20..4b941e5abc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.0 + altersgrenze_ohne_vertrauensschutz: + - 63.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml index b0e7d41072..3b32e2ee74 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml index 84d9db4a90..f9a7c39e91 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1950_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 15 p_id: - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.583333 + altersgrenze_ohne_vertrauensschutz: + - 63.583333 + altersgrenze_vorzeitig: + - 60.583333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml index d691f0572d..f92fab44e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1951_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 16 p_id: - 16 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 61.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 61.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml index 9dcca0a62c..7eafa1b73a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 17 p_id: - 17 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 61.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.583333 + altersgrenze_ohne_vertrauensschutz: + - 64.583333 + altersgrenze_vorzeitig: + - 61.583333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 61.583333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml index 3a5e224c39..4eebca745d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1953_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml index 0648be83bd..a5a4f53349 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1954_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 19 p_id: - 19 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml index 16227f4f5b..5fd80bccf4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-08-01/cohort_1955_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 20 p_id: - 20 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml index 7b09bde072..0f91d51002 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1930_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index ab873ebfa5..8ac02de977 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -14,52 +14,62 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index b51af1371e..a93c2a8f6c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -14,52 +14,62 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml index 1404abd5b2..c44f35ff9a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1937_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml index be76f497b1..fe896a7a97 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1938_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 61.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + altersgrenze_ohne_vertrauensschutz: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml index 2f680047d7..089acd4715 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1939_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 62.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + altersgrenze_ohne_vertrauensschutz: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml index a0790a4353..6e16dadfda 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_vertrauenss_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml index debdaf3dbe..d74519d0b8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1940_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml index e78ca6cbb1..c98eaf924f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_vertrauenss_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml index fce7dbe10d..90b76192d8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1941_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml index 95fd14d798..fdb62465d8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_vertrauenss_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.333333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.333333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml index c88909c925..6471c4ee17 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1942_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml index 40f6d50508..748d913dd5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1943_vertrauenss_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml index 1427f23ab2..3d6bdfa882 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1997-01-01/cohort_1944_vertrauenss_wegen_arbeitsl.yaml @@ -14,54 +14,64 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.833333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.833333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml index 83f4162ab6..8cf1851332 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1930_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml index 065868e525..b6a16698d5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1933_ohne_vorauss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml index 3016ee5246..79ab0e94d0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1936_ohne_vorauss_wegen_arbeitsl.yaml @@ -14,56 +14,66 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 65.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml index 16617c3a95..f65447dcd6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1937_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml index 2963344848..0522c10bc2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1938_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 61.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 61.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 61.083333 + altersgrenze_ohne_vertrauensschutz: + - 61.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml index 4b291646c6..baf8e75e12 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1939_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 62.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 62.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 62.083333 + altersgrenze_ohne_vertrauensschutz: + - 62.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 2714b8ff6a..6b107fa5eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.0 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml index 2034f10bb2..ced6886aa3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1940_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 63.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 63.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 63.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 63.083333 + altersgrenze_ohne_vertrauensschutz: + - 63.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index ef0c1632b3..8ee895c900 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml index 85116e2107..df0f68c8f5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1941_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 64.083333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 64.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 64.083333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 64.083333 + altersgrenze_ohne_vertrauensschutz: + - 64.083333 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index a01519fa69..2a4ea815fd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.333333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.333333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.333333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.333333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.333333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml index 9d0144a6fc..b8f725ac65 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1942_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index 8b73e221be..25c1d7f3ec 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1943_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.583333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.583333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.583333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.583333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.583333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml index d9156a46d6..653e7ebdf5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1944_vertrauenss_abschlagsfrei_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 60.833333 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 60.833333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.833333 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 60.833333 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 60.833333 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml index fdf9e34fb0..8e814e92af 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1945_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 15 p_id: - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml index 4e39e63aad..2e5e922f0b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1946_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 16 p_id: - 16 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml index 3725f685b2..42769698ec 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1947_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 17 p_id: - 17 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 61.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 61.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 61.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 61.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml index 5c598cc148..22dea381bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1948_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 62.083333 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 62.083333 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 62.083333 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 62.083333 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 62.083333 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml index 20cd02da89..5acf4bd7bb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1949_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 19 p_id: - 19 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 63.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 63.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml index 0372273fad..47439fc1f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1951_vertrauenss_abschlag_wegen_arbeitsl.yaml @@ -14,58 +14,68 @@ inputs: - 20 p_id: - 20 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_ohne_vertrauensschutz: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig_ohne_vertrauensschutz: - - 60.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_ohne_vertrauensschutz: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + altersgrenze_vorzeitig_ohne_vertrauensschutz: + - 60.0 + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml index f211cd8276..a1d9eb26cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2007-08-01/cohort_1952_wegen_arbeitsl.yaml @@ -14,46 +14,56 @@ inputs: - 21 p_id: - 21 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index d2eea2d370..82e75d5740 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 39 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 geburtsjahr: - 1971 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.2826 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.2826 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 18.51378418 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.231184177 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 18.51378418 + neue_entgeltpunkte: + - 0.231184177 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index 2434468445..11d7ab5182 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 59 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 geburtsjahr: - 1956 geburtsmonat: @@ -20,56 +23,64 @@ inputs: - 19 p_id: - 19 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 35.2067 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 35.2067 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.83333333 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 36.99837737 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 1.79167737 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.83333333 + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index 35d42f342f..5f6825556e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 42 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 geburtsjahr: - 1968 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 21.3696 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 21.3696 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 21.71637627 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.346776265 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 21.71637627 + neue_entgeltpunkte: + - 0.346776265 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 3fd61f41f8..01c6b02327 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 71 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1938 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 24 p_id: - 24 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 15.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 22.42 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 108.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 9.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 22.42 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 108.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 60.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 9.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 10.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 22.99796044 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.577960442 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 22.99796044 + neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 6b51a77962..05d6742fea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index e9ce2bcbfb..650c20c57a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -1,8 +1,8 @@ --- info: note: >- - From eastern Germany: earns more Entgeltpunkte for same wage. Verified or corrected - based on source. + From eastern Germany: earns more Entgeltpunkte for same wage. Verified or + corrected based on source. precision_atol: 0.1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Online-Dienste/Online-Rechner/RentenbeginnUndHoehenRechner/rentenbeginnrechner_node.html inputs: @@ -10,8 +10,11 @@ inputs: provided: alter: - 42 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 geburtsjahr: - 1968 geburtsmonat: @@ -20,56 +23,64 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 21.3696 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 21.3696 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 21.77622985 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.406629848 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 21.77622985 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 0.406629848 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index 243b766b0a..a665a922d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 71 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1938 geburtsmonat: @@ -20,52 +23,60 @@ inputs: - 30 p_id: - 30 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 15.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 10.0 - sozialversicherung__rente__entgeltpunkte_west: - - 12.42 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 108.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 9.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + entgeltpunkte_ost: + - 10.0 + entgeltpunkte_west: + - 12.42 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 108.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 60.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 9.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 10.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 60.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 10.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 12.99796044 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.577960442 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 60.0 + entgeltpunkte_ost_updated: + - 10.0 + entgeltpunkte_west_updated: + - 12.99796044 + neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index b8d15f1421..c24f3ad719 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 46 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 geburtsjahr: - 1964 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 25.3484 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 25.3484 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 25.81076835 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.462368353 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 25.81076835 + neue_entgeltpunkte: + - 0.462368353 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index d2c45c008b..f4680a0896 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 43 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1967 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 22.42 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 22.42 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 22.99796044 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.577960442 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 22.99796044 + neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index ff56b36ab6..e50cf344fa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 59 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 geburtsjahr: - 1951 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 35.2067 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 35.2067 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.41666667 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 37.32588829 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 2.119188287 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.41666667 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 37.32588829 + neue_entgeltpunkte: + - 2.119188287 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index 14bad8911b..c67a0120c1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 59 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 geburtsjahr: - 1951 geburtsmonat: @@ -20,56 +23,64 @@ inputs: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 35.2067 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 35.2067 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.41666667 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 36.99837737 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 1.79167737 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.41666667 + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 8e07086cd1..8db63dc7f4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 52 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 700.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 700.0 geburtsjahr: - 1960 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 30.5626 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 30.5626 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.33333333 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 30.81713003 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.254530028 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.33333333 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 30.81713003 + neue_entgeltpunkte: + - 0.254530028 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index 9a953c9182..14eb7ca43d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 53 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1959 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 31.0625 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 31.0625 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.16666667 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 31.0625 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.16666667 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index fb20826243..c6e945929e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 27 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5000.0 geburtsjahr: - 1985 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 5.9814 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 5.9814 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 7.799471632 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 1.818071632 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 7.799471632 + neue_entgeltpunkte: + - 1.818071632 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index 8449536d46..1769c0da05 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 30 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 geburtsjahr: - 1982 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 8.5572 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 8.5572 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 8.666284298 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.109084298 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 8.666284298 + neue_entgeltpunkte: + - 0.109084298 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index 83f5e478f7..f8264761ea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 65 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: @@ -20,58 +23,67 @@ inputs: - 25 p_id: - 25 - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 15.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 22.42 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 108.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 60.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 9.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 10.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 420.0 + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 15.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 22.42 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 108.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 60.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 9.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 10.0 + pflichtbeitragsmonate: + - 420.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 22.99796044 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.577960442 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 22.99796044 + neue_entgeltpunkte: + - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml index 2044d636ae..1c68949f58 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/cohort_1951_wegen_arbeitsl.yaml @@ -14,40 +14,49 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_2004: + - false + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: - - 63.0 + sozialversicherung: + rente: + altersrente: + wegen_arbeitslosigkeit: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml index a8e4143d8c..e352140be4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/eligibility_pathways.yaml @@ -56,176 +56,181 @@ inputs: - 13 - 14 - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - - 0.0 - - 0.0 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - - 10.01 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - - true - - false - - true - - false - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 420.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + - 0.0 + - 0.0 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + - 10.01 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + pflichtbeitragsjahre_8_von_10: + - false + - true + - false + - true + - false + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + anrechnungsmonate_45_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 420.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 weiblich: - false - false @@ -245,88 +250,96 @@ inputs: - false provided: {} outputs: - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - false - - false - - false - - false - - false - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: - - false - - true - - true - - true - - true - - false - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - - true - - true - - true - - true - - false - - false - - false - - false + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + für_frauen: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - false + - false + - false + - false + - false + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + regelaltersrente: + grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - true + - true + - true + - true + - false + - false + - false + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index 937fa7d4dc..e2c16c96ff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 57 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 300.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 300.0 geburtsjahr: - 1958 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 34.9752 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 34.9752 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 35.07700132 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.101801318 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 35.07700132 + neue_entgeltpunkte: + - 0.101801318 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index 3219837411..1cf9e28493 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 58 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 geburtsjahr: - 1957 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 13 p_id: - 13 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 36.084 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 36.084 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.91666667 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 36.28760264 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.203602636 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.91666667 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 36.28760264 + neue_entgeltpunkte: + - 0.203602636 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index 2ef274557a..01354e0926 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 33 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 geburtsjahr: - 1982 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 14 p_id: - 14 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 10.6965 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 10.6965 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 11.00190395 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.305403953 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 11.00190395 + neue_entgeltpunkte: + - 0.305403953 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index 93e5e9809b..0042b9e8ce 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 33 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 900.0 geburtsjahr: - 1982 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 15 p_id: - 15 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 10.6965 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 10.6965 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 11.04777563 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.351275627 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 11.04777563 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 0.351275627 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 686d46b989..7d7419b439 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 geburtsjahr: - 1970 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 16 p_id: - 16 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 23.6979 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 23.6979 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 67.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 24.10510527 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.407205271 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 67.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 24.10510527 + neue_entgeltpunkte: + - 0.407205271 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index e0d9dbaf4a..b97a9f0c6f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1952 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 17 p_id: - 17 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index afdedde4c9..02e42d0432 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1944 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index 6b51a77962..05d6742fea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index 6b51a77962..05d6742fea 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 64.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 64.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index f5a8d4e89b..174d3df5b4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1940 geburtsmonat: @@ -18,58 +21,66 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 11.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 61.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 61.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index f034b35f16..ff04870ba2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 63 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1952 geburtsmonat: @@ -18,58 +21,66 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 11.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 012374c1f6..33f03fa9e0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 62 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: @@ -18,62 +21,71 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 182.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 182.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 63.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 63.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index 92203a43b5..cd024da2e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 62 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1500.0 geburtsjahr: - 1948 geburtsmonat: @@ -18,68 +21,79 @@ inputs: - 18 p_id: - 18 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 11.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 39.3795 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 430.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 11.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 39.3795 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 430.0 weiblich: - true wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 60.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 39.88850659 - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.509006589 - sozialversicherung__rente__altersrente__referenzalter_abschlag: - - 65.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - - true + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.0 + altersgrenze_vorzeitig: + - 60.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + für_frauen: + grundsätzlich_anspruchsberechtigt: + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - true + neue_entgeltpunkte: + - 0.509006589 + referenzalter_abschlag: + - 65.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - true + wegen_arbeitslosigkeit: + grundsätzlich_anspruchsberechtigt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml index f0952fc773..88d135315d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/age_at_retirement.yaml @@ -29,23 +29,27 @@ inputs: - 2 - 3 - 4 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - - 2018 - - 2018 - - 2018 - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 1 - - 1 - - 1 - - 1 - - 1 + sozialversicherung: + rente: + jahr_renteneintritt: + - 2018 + - 2018 + - 2018 + - 2018 + - 2018 + monat_renteneintritt: + - 1 + - 1 + - 1 + - 1 + - 1 provided: {} outputs: - sozialversicherung__rente__alter_bei_renteneintritt: - - 65.916667 - - 65.833333 - - 64.916667 - - 64.75 - - 63.916667 + sozialversicherung: + rente: + alter_bei_renteneintritt: + - 65.916667 + - 65.833333 + - 64.916667 + - 64.75 + - 63.916667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml index abf35d84da..6082bba918 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1952_altersgrenze_abschlagsfrei.yaml @@ -14,40 +14,48 @@ inputs: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 540.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml index a65e029c42..5268f5381c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1953_altersgrenze_abschlagsfrei.yaml @@ -14,40 +14,48 @@ inputs: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 540.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.166667 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml index 5e00a7093c..7b8925c4ef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1954_altersgrenze_abschlagsfrei.yaml @@ -14,40 +14,48 @@ inputs: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 540.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.333333 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.333333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml index 7d99bcb6bf..35d8e6e6d3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_altersgrenze_abschlagsfrei.yaml @@ -14,40 +14,48 @@ inputs: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 540.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 540.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 63.5 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 63.5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml index b91056a5b1..176a8454a6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1955_vorzeitig.yaml @@ -14,44 +14,52 @@ inputs: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.75 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 65.75 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.75 + altersgrenze_vorzeitig: + - 65.75 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml index 2b19bf2929..6cf677f030 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/cohort_1958_vorzeitig.yaml @@ -14,44 +14,52 @@ inputs: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - true - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 300.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - true + pflichtbeitragsjahre_8_von_10: + - true + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 300.0 weiblich: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.0 - sozialversicherung__rente__altersrente__altersgrenze_vorzeitig: - - 66.0 - sozialversicherung__rente__altersrente__vorzeitig_grundsätzlich_anspruchsberechtigt: - - false + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.0 + altersgrenze_vorzeitig: + - 66.0 + vorzeitig_grundsätzlich_anspruchsberechtigt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml index 444fd02a4b..18acd92756 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/eligibility_pathways.yaml @@ -23,95 +23,103 @@ inputs: - 5 - 6 - 7 - sozialversicherung__rente__anrechnungsmonate_35_jahre_wartezeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 540.0 - - 400.0 - - 120.0 - sozialversicherung__rente__anrechnungsmonate_45_jahre_wartezeit: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 420.0 - - 120.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - - 0.0 - - 60.0 - - 0.0 - - 12.0 - - 0.0 - - 0.0 - - 120.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 120.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 0.0 - - 60.0 - - 0.0 - - 408.0 - - 408.0 - - 0.0 - - 120.0 - - 120.0 + sozialversicherung: + rente: + anrechnungsmonate_35_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 540.0 + - 400.0 + - 120.0 + anrechnungsmonate_45_jahre_wartezeit: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 420.0 + - 120.0 + ersatzzeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + freiwillige_beitragsmonate: + - 0.0 + - 0.0 + - 60.0 + - 0.0 + - 12.0 + - 0.0 + - 0.0 + - 120.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 120.0 + pflichtbeitragsmonate: + - 0.0 + - 60.0 + - 0.0 + - 408.0 + - 408.0 + - 0.0 + - 120.0 + - 120.0 provided: {} outputs: - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - true - - true - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - true - - true - - true - - true - sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: - - false - - true - - true - - true - - true - - false - - true - - true + sozialversicherung: + rente: + altersrente: + besonders_langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - true + - true + langjährig: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - true + - true + - true + - true + regelaltersrente: + grundsätzlich_anspruchsberechtigt: + - false + - true + - true + - true + - true + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index 310706227c..8e75541b90 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 53 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1959 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 20 p_id: - 20 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 31.0625 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 31.0625 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.16666667 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 31.0625 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.16666667 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index 2aa26e3816..436dfe1783 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 59 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 geburtsjahr: - 1952 geburtsmonat: @@ -20,56 +23,64 @@ inputs: - 21 p_id: - 21 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 35.2067 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 35.2067 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.5 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 36.99837737 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 1.79167737 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.5 + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index afbd7c6fc0..150cc7f564 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -10,8 +10,11 @@ inputs: provided: alter: - 59 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 8000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 8000.0 geburtsjahr: - 1947 geburtsmonat: @@ -20,56 +23,64 @@ inputs: - 22 p_id: - 22 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 35.2067 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 35.2067 + entgeltpunkte_west: + - 0.0 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 65.08333333 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 36.99837737 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 0.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 1.79167737 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 65.08333333 + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 2a708b678e..5ac5ba35c6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 53 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1958 geburtsmonat: @@ -18,56 +21,64 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 31.0625 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - false + vertrauensschutz_2004: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 31.0625 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__altersgrenze: - - 66.0 - sozialversicherung__rente__altersrente__entgeltpunkte_ost_updated: - - 0.0 - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 31.0625 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.0 + sozialversicherung: + rente: + altersrente: + altersgrenze: + - 66.0 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index fdc2718917..cfe3a28b85 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 53 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1944 geburtsmonat: @@ -18,52 +21,61 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_west: - - 31.0625 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + entgeltpunkte_west: + - 31.0625 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 31.0625 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.0 + sozialversicherung: + rente: + altersrente: + entgeltpunkte_west_updated: + - 31.0625 + langjährig: + altersgrenze: + - 65.0 + neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index fdc2718917..cfe3a28b85 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -8,8 +8,11 @@ inputs: provided: alter: - 53 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1944 geburtsmonat: @@ -18,52 +21,61 @@ inputs: - 23 p_id: - 23 - sozialversicherung__rente__altersrente__für_frauen__pflichtsbeitragsjahre_ab_alter_40: - - 0.0 - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__arbeitslos_für_1_jahr_nach_alter_58_ein_halb: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__pflichtbeitragsjahre_8_von_10: - - false - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_1997: - - true - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__vertrauensschutz_2004: - - false - sozialversicherung__rente__entgeltpunkte_west: - - 31.0625 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__krankheitszeiten_ab_16_bis_24_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_in_ausbildungssuche: - - 0.0 - sozialversicherung__rente__monate_in_mutterschutz: - - 0.0 - sozialversicherung__rente__monate_in_schulausbildung: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 0.0 + wegen_arbeitslosigkeit: + arbeitslos_für_1_jahr_nach_alter_58_ein_halb: + - false + pflichtbeitragsjahre_8_von_10: + - false + vertrauensschutz_1997: + - true + vertrauensschutz_2004: + - false + entgeltpunkte_west: + - 31.0625 + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 weiblich: - false wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__entgeltpunkte_west_updated: - - 31.0625 - sozialversicherung__rente__altersrente__langjährig__altersgrenze: - - 65.0 - sozialversicherung__rente__altersrente__neue_entgeltpunkte: - - 0.0 + sozialversicherung: + rente: + altersrente: + entgeltpunkte_west_updated: + - 31.0625 + langjährig: + altersgrenze: + - 65.0 + neue_entgeltpunkte: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml index 8d791cbe5f..239c173219 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/zero_entgeltpunkte_anteil_ost.yaml @@ -9,10 +9,15 @@ inputs: - 0 p_id: - 0 - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 + sozialversicherung: + rente: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 0.0 outputs: - sozialversicherung__rente__erwerbsminderung__anteil_entgeltpunkte_ost: - - 0.0 + sozialversicherung: + rente: + erwerbsminderung: + anteil_entgeltpunkte_ost: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 3a950891a2..e8b997691c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 5 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 44.15686275 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 44.15686275 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 425.5864865 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 425.5864865 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index e520ca8132..0fb35de281 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 10 p_id: - 5 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2001 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2001 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 44.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 44.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml index c2b343116a..85890168d6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 1 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.43875686 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.949 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.43875686 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.949 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 363.9402804 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 363.9402804 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml index a6fcd7b3ba..be9f716a0b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 2 p_id: - 1 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2001 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2001 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.164534 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.949 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.164534 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.949 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml index 9e1eb6d65a..7e45b48ff8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 2 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 19.08474576 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.901 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 19.08474576 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.901 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 427.1326353 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 427.1326353 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml index f39356c312..b3c208add9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 4 p_id: - 2 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2001 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2001 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 18.813559 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.901 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.813559 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.901 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index bb422b79c7..174c7f89c3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 3 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 44.03351955 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 44.03351955 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 975.6630083 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 975.6630083 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index c85d188146..1cbf872b82 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 6 p_id: - 3 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2001 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2001 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 43.56424581005586 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 43.56424581005586 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 9594991694..e7add87e02 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 4 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 30.70909091 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 30.70909091 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 591.952113 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 591.952113 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index b76405bef5..2b1e3bee76 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 8 p_id: - 4 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2001 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2001 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 30.490909 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 30.490909 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index e68771e29e..29e86c78ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 10 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 24.27586207 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 24.27586207 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 248.6969821 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 248.6969821 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index f57e65474a..9b2ca8b428 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 10 p_id: - 10 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.45 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2004 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.45 + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2004 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 24.27586207 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 24.27586207 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml index b952546553..ddf1a997a3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 6 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.14340344 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.14340344 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 352.9618417 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 352.9618417 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml index 113a06e00d..b44d9d75c1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 4 p_id: - 7 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.72 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2004 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.72 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2004 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 17.50276243 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.937 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 17.50276243 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.937 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml index 7cbeed5963..aa0902cb60 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 7 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 17.50276243 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.937 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 17.50276243 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.937 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 428.5343098 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 428.5343098 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml index bd5326e0d9..43bb174830 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 2 p_id: - 6 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.45 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2004 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.45 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2004 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.14340344 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.14340344 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 54c59e36ed..6984034148 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 8 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 34.38139535 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 34.38139535 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 801.3601875 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 801.3601875 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 7b138315b6..6dfc1de7b8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 6 p_id: - 8 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 1.2 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2004 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 1.2 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2004 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 34.38139535 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 34.38139535 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index ea476124db..ab626f8818 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 9 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 17.40659341 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 17.40659341 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 356.6478699 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 356.6478699 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 197baa03dc..51e128f9bc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 8 p_id: - 9 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.8 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2004 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.8 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2004 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 17.40659341 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 17.40659341 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 47f9977e43..d0bacc950f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 15 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 15.64444444 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 15.64444444 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 161.1086791 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 161.1086791 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index a3ca7d3817..30ade68d0e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 10 p_id: - 15 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2008 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2008 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.64444444 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.64444444 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml index 9affe72e72..ce0a8d8c85 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 11 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.49902153 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.49902153 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 363.1860916 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 363.1860916 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml index b54e695844..8749812272 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 2 p_id: - 11 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2008 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2008 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 15.49902153 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.49902153 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 9da039e230..7d8af56207 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 12 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 24.55813953 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 24.55813953 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 575.4669544 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 575.4669544 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 3524b51d06..f18dadb8cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 4 p_id: - 12 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2008 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2008 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 24.55813953 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 24.55813953 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 66b87e0318..f92c7228d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 13 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 28.10646388 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 28.10646388 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 658.614271 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 658.614271 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 74430371e6..7e6ad659d4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 6 p_id: - 13 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2008 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2008 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 28.10646388 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 28.10646388 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 6ed8900a4c..56ef638cf3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 14 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 11.39568345 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 11.39568345 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 234.7086872 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 234.7086872 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index def5280e8f..85c42476ee 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 8 p_id: - 14 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2008 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2008 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 11.39568345 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 11.39568345 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml index d31acc99a2..503ea1dac6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 20 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 33.52380952 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 33.52380952 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 364.3709562 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 364.3709562 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml index 27f44b1237..4c763156c5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 10 p_id: - 20 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.45 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2012 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.45 + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2012 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 33.52380952 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 33.52380952 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index a90f2f498f..5f2880ddbe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 16 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 18.04100228 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.04100228 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 442.0630087 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 442.0630087 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 6f153c8a52..dfaa9e4e98 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 2 p_id: - 16 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.45 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2012 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.45 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2012 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 18.04100228 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.04100228 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 00054eb3f9..eacd499508 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 17 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 30.17142857 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 30.17142857 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 739.2977554 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 739.2977554 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index b04e9eda5f..a03b6c455d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 4 p_id: - 17 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.72 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2012 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.72 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2012 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 30.17142857 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 30.17142857 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 8b388a0966..ba20a985db 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 18 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 38.70157068 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 38.70157068 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 948.3138748 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 948.3138748 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 93d947ae48..865f07b2db 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 6 p_id: - 18 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 1.2 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2012 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 1.2 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2012 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 38.70157068 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 38.70157068 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index 4f0bf31468..15c04f4645 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 19 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 23.64179104 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 23.64179104 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 513.9261994 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 513.9261994 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 58efc6822f..0c4e774487 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -11,41 +11,47 @@ inputs: - 8 p_id: - 19 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__mean_entgeltpunkte_pro_bewertungsmonat_y: - - 0.8 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2012 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + mean_entgeltpunkte_pro_bewertungsmonat_y: + - 0.8 + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2012 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 23.64179104 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 23.64179104 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml index 782a8c1dee..c6fdc1b66b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_1.yaml @@ -6,23 +6,28 @@ inputs: assumed: p_id: - 21 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 108.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 380.0 + sozialversicherung: + rente: + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 108.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 380.0 provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - true + sozialversicherung: + rente: + erwerbsminderung: + wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml index d01a768db7..3766839f45 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_2.yaml @@ -6,23 +6,28 @@ inputs: assumed: p_id: - 22 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 120.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 100.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 200.0 + sozialversicherung: + rente: + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 120.0 + monate_geringfügiger_beschäftigung: + - 100.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 200.0 provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - true + sozialversicherung: + rente: + erwerbsminderung: + wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml index c769ef753a..08795a1530 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_3.yaml @@ -6,23 +6,28 @@ inputs: assumed: p_id: - 23 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 100.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 100.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 250.0 + sozialversicherung: + rente: + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 100.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 100.0 + pflichtbeitragsmonate: + - 250.0 provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - true + sozialversicherung: + rente: + erwerbsminderung: + wartezeit_langjährig_versichert_erfüllt: + - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml index 857e41448d..8ca9b38fc7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_4.yaml @@ -6,23 +6,28 @@ inputs: assumed: p_id: - 24 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false + sozialversicherung: + rente: + erwerbsminderung: + wartezeit_langjährig_versichert_erfüllt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml index 91cd75c8f3..fc54e3d811 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/langj_versicherte_wartezeit_5.yaml @@ -6,23 +6,28 @@ inputs: assumed: p_id: - 25 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__kinderberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__monate_geringfügiger_beschäftigung: - - 0.0 - sozialversicherung__rente__monate_in_arbeitsunfähigkeit: - - 0.0 - sozialversicherung__rente__monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: - - 0.0 - sozialversicherung__rente__pflegeberücksichtigungszeiten_monate: - - 0.0 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + ersatzzeiten_monate: + - 0.0 + freiwillige_beitragsmonate: + - 0.0 + kinderberücksichtigungszeiten_monate: + - 0.0 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 60.0 provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false + sozialversicherung: + rente: + erwerbsminderung: + wartezeit_langjährig_versichert_erfüllt: + - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml index ef702c7104..f85cf828dc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 25 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 29.44 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 29.44 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 389.8368256 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 389.8368256 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index 5c3925088f..d5efed79a9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 10 p_id: - 25 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 1 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2018 + monat_renteneintritt: + - 1 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 30.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 30.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index b65e38f811..ff489eb007 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 21 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 16.2035225 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 16.2035225 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 448.4934106 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 448.4934106 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index eebcc0498a..5eca5ea4d8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 2 p_id: - 21 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2018 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 16.291585 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 16.291585 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 96d83fe35f..e1460f8caf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 22 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 25.6744186 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 25.6744186 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 710.6360707 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 710.6360707 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index a6b5896414..0a21172bcd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 4 p_id: - 22 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2018 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 25.813953 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 25.813953 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 2fd8221baf..91d1682660 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 23 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 29.38403042 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 29.38403042 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 813.3135258 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 813.3135258 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 7ed14ac606..ebedb49a0d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 6 p_id: - 23 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2018 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 29.543726 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 29.543726 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index b6674b2c43..58168d79e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 24 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 11.91366906 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 11.91366906 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 315.5154164 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 315.5154164 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 1308af3d70..82001af7fd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 8 p_id: - 24 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2018 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2018 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 11.978417 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 11.978417 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml index eaafe164a8..4e85ff5859 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 31 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 61.23076923 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 61.23076923 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - false + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 0.0 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml index 0d13f3710d..7fd167c307 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 10 p_id: - 31 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 20.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 20.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 61.23076923 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - false - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 61.23076923 + grundsätzlich_anspruchsberechtigt: + - false + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml index 6112aaf930..ac6a44032a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 30 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 61.23076923 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 61.23076923 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 870.8815569 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 870.8815569 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml index c13b31da51..53547eb07c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 10 p_id: - 30 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 4.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 2 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 4.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 2 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 61.23076923 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 0.5 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 61.23076923 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 0.5 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml index 3f2f60ccf8..cdca7a635f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 28 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 14.84547069 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.997 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.84547069 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.997 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 489.170878 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 489.170878 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml index 074f42a92f..9924bb789a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 6 p_id: - 28 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - true - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 6 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - true + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 6 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 14.84547069 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.997 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.84547069 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.997 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml index 1034126f9c..7c15d30cda 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 27 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 26.1459854 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 26.1459854 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 770.7993372 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 770.7993372 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml index d651b00871..f521e00933 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 4 p_id: - 27 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 8 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 8 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 26.1459854 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 26.1459854 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index a56e56f97a..9a14b239c9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 26 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 21.57831325 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 21.57831325 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 636.1416217 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 636.1416217 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 31bea3863a..36a5312dd9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 2 p_id: - 26 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 15.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 10 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 15.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 10 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - false provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 21.57831325 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 21.57831325 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml index d17c4cce25..4aa17d1e91 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml @@ -7,19 +7,25 @@ inputs: assumed: p_id: - 29 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 17.38834951 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 17.38834951 + entgeltpunkte_west: + - 0.0 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__betrag_m: - - 494.6269037 + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 494.6269037 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index 4471c424a6..c9b87104ca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -11,39 +11,45 @@ inputs: - 8 p_id: - 29 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 3.0 - sozialversicherung__rente__ersatzzeiten_monate: - - 0.0 - sozialversicherung__rente__erwerbsminderung__teilweise_erwerbsgemindert: - - false - sozialversicherung__rente__erwerbsminderung__voll_erwerbsgemindert: - - true - sozialversicherung__rente__erwerbsminderung__wartezeit_langjährig_versichert_erfüllt: - - false - sozialversicherung__rente__freiwillige_beitragsmonate: - - 0.0 - sozialversicherung__rente__jahr_renteneintritt: - - 2020 - sozialversicherung__rente__monat_renteneintritt: - - 4 - sozialversicherung__rente__pflichtbeitragsmonate: - - 60.0 + sozialversicherung: + rente: + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 3.0 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - false + voll_erwerbsgemindert: + - true + wartezeit_langjährig_versichert_erfüllt: + - false + freiwillige_beitragsmonate: + - 0.0 + jahr_renteneintritt: + - 2020 + monat_renteneintritt: + - 4 + pflichtbeitragsmonate: + - 60.0 wohnort_ost: - true provided: {} outputs: - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__erwerbsminderung__entgeltpunkte_west: - - 17.38834951 - sozialversicherung__rente__erwerbsminderung__grundsätzlich_anspruchsberechtigt: - - true - sozialversicherung__rente__erwerbsminderung__rentenartfaktor: - - 1.0 - sozialversicherung__rente__erwerbsminderung__zugangsfaktor: - - 0.892 + sozialversicherung: + rente: + erwerbsminderung: + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 17.38834951 + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.892 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml index 17c2d8a268..f5f0d683cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml @@ -8,30 +8,40 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1168.4 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1168.4 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1168.4 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1168.4 + bruttorente_basisbetrag_m: + - 1168.4 + bruttorente_m: + - 1168.4 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" index eb65097bcc..0f0e00fddb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" @@ -8,30 +8,40 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1168.4 - sozialversicherung__rente__altersrente__bruttorente_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + bruttorente_basisbetrag_m: + - 1168.4 + bruttorente_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml index 5f751f44d7..8ba7ed7117 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml index b30d06b487..c22ad2d6b9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1241.2 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1241.2 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 1241.2 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml index dc621d26d4..8422bc14b9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 8000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 8000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1051.2 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1051.2 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1051.2 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 1051.2 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml index 59cc99fd29..e380e75c28 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 500.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1241.2 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1241.2 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1241.2 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 1241.2 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml index 91fc5c6cb7..5f5cbcb934 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 6000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 6000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml index 0a49f21561..8db503a928 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1367.6 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1367.6 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 1367.6 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml index d58160db3e..e0b6b15ad5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 4000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 4000.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 8000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 8000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1302.93 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1302.93 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1302.93 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 1302.93 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml index da827305f8..937844dec6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml @@ -8,32 +8,42 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 500.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 500.0 geburtsjahr: - 1957 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_m: - - 3000.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1367.6 - sozialversicherung__rente__altersrente__bruttorente_m: - - 1367.6 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1367.6 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 1367.6 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml index eed1a3d7cb..f81882d342 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml @@ -8,26 +8,36 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 5000.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 5000.0 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1440.8 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1440.8 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1440.8 + bruttorente_basisbetrag_m: + - 1440.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml index fb19270087..cc3fe34012 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml @@ -8,26 +8,36 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1440.8 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1440.8 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1440.8 + bruttorente_basisbetrag_m: + - 1440.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml index 6835ffd75f..672a72a1c8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml @@ -8,26 +8,36 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1600.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1600.0 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1440.8 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1440.8 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1440.8 + bruttorente_basisbetrag_m: + - 1440.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml index 370942eea9..5469071e2a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml @@ -8,26 +8,36 @@ inputs: provided: alter: - 64 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 600.0 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 600.0 hh_id: - 0 p_id: - 0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 40.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1440.8 - sozialversicherung__rente__altersrente__bruttorente_basisbetrag_m: - - 1440.8 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1440.8 + bruttorente_basisbetrag_m: + - 1440.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index f081b4fdcf..00260a134f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, - "Das Grundrentengesetz", + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das + Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 precision_atol: 1 inputs: @@ -12,52 +12,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 1 p_id: - 1 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 14.014 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 420 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 420 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 14.014 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 14.014 + grundrente: + bewertungszeiten_monate: + - 420 + grundrentenzeiten_monate: + - 420 + mean_entgeltpunkte: + - 14.014 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 897.97 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 418.83 - sozialversicherung__rente__grundrente__betrag_m: - - 418.83 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.029166667 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 897.97 + grundrente: + basisbetrag_m: + - 418.83 + betrag_m: + - 418.83 + mean_entgeltpunkte_zuschlag: + - 0.029166667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 8e21bc70b0..6a33227d50 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -11,52 +11,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 10 p_id: - 10 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 41.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 492 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 492 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 41.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 41.0 + grundrente: + bewertungszeiten_monate: + - 492 + grundrentenzeiten_monate: + - 492 + mean_entgeltpunkte: + - 41.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1402.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 0.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1402.0 + grundrente: + basisbetrag_m: + - 0.0 + betrag_m: + - 0.0 + mean_entgeltpunkte_zuschlag: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index 6f6c0e7327..e4cca5bfef 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -1,9 +1,9 @@ --- info: note: >- - adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag since - test case uses 0.8 as maximum instead of 0.8004. Beispiel Alexander Langkowski / - Hatice Yilmaz. + adjusted sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag + since test case uses 0.8 as maximum instead of 0.8004. Beispiel Alexander + Langkowski / Hatice Yilmaz. precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: @@ -13,52 +13,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 11 p_id: - 11 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 18.5 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 372 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 516 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 15.5 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 18.5 + grundrente: + bewertungszeiten_monate: + - 372 + grundrentenzeiten_monate: + - 516 + mean_entgeltpunkte: + - 15.5 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 911.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 279.0 - sozialversicherung__rente__grundrente__betrag_m: - - 279.0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.021875 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 911.0 + grundrente: + basisbetrag_m: + - 279.0 + betrag_m: + - 279.0 + mean_entgeltpunkte_zuschlag: + - 0.021875 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index de982e284c..ac5ba7c20c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -10,52 +10,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1990 hh_id: - 12 p_id: - 12 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - false - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 0 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 0.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - false + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 0.0 + grundrente: + bewertungszeiten_monate: + - 0 + grundrentenzeiten_monate: + - 0 + mean_entgeltpunkte: + - 0.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 0.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.0 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + grundrente: + basisbetrag_m: + - 0.0 + betrag_m: + - 0.0 + mean_entgeltpunkte_zuschlag: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index a2ffad08b1..6ebb3a49d1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, - "Das Grundrentengesetz", + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das + Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 precision_atol: 1 inputs: @@ -12,52 +12,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 2 p_id: - 2 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 17.5 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 420 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 420 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 17.5 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 17.5 + grundrente: + bewertungszeiten_monate: + - 420 + grundrentenzeiten_monate: + - 420 + mean_entgeltpunkte: + - 17.5 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 912.93 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 314.6 - sozialversicherung__rente__grundrente__betrag_m: - - 314.6 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.021908333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 912.93 + grundrente: + basisbetrag_m: + - 314.6 + betrag_m: + - 314.6 + mean_entgeltpunkte_zuschlag: + - 0.021908333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index 981b363f40..fb9b909984 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -3,8 +3,8 @@ info: note: '' precision_atol: 1 source: >- - Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, - "Das Grundrentengesetz", + Sylvia Dünn, Claudia Bilgen und Sophie-Charlotte Heckenberger, "Das + Grundrentengesetz", https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Zeitschriften/DRV_Hefte_deutsch/2020/ausgewaehlter_artikel_heft_3.pdf?__blob=publicationFile&v=4 inputs: assumed: {} @@ -13,52 +13,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 3 p_id: - 3 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 21.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 420 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 420 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 21.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 21.0 + grundrente: + bewertungszeiten_monate: + - 420 + grundrentenzeiten_monate: + - 420 + mean_entgeltpunkte: + - 21.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 927.88 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 209.89 - sozialversicherung__rente__grundrente__betrag_m: - - 209.89 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.014616667 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 927.88 + grundrente: + basisbetrag_m: + - 209.89 + betrag_m: + - 209.89 + mean_entgeltpunkte_zuschlag: + - 0.014616667 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index f5627b3f2e..b44522e958 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -12,52 +12,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 4 p_id: - 4 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 28.8 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 480 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 480 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 28.8 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 28.8 + grundrente: + bewertungszeiten_monate: + - 480 + grundrentenzeiten_monate: + - 480 + mean_entgeltpunkte: + - 28.8 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1069.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 83.77 - sozialversicherung__rente__grundrente__betrag_m: - - 83.77 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.0058625 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1069.0 + grundrente: + basisbetrag_m: + - 83.77 + betrag_m: + - 83.77 + mean_entgeltpunkte_zuschlag: + - 0.0058625 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index c2cb66ca7c..09bcf45317 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` since - test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. + Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` + since test case uses 0.8 as maximum instead of 0.8004. Beispiel Martin S. precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/SharedDocs/Downloads/DE/Broschueren/national/grundrente_zuschlag_zur_rente.html inputs: @@ -12,52 +12,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 5 p_id: - 5 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 18.7 - sozialversicherung__rente__entgeltpunkte_west: - - 0.0 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 408 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 408 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 18.7 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 18.7 + entgeltpunkte_west: + - 0.0 + grundrente: + bewertungszeiten_monate: + - 408 + grundrentenzeiten_monate: + - 408 + mean_entgeltpunkte: + - 18.7 wohnort_ost: - true outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 677.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 50.98 - sozialversicherung__rente__grundrente__betrag_m: - - 50.98 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.003698333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 677.0 + grundrente: + basisbetrag_m: + - 50.98 + betrag_m: + - 50.98 + mean_entgeltpunkte_zuschlag: + - 0.003698333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index bdaa4e720e..c539cec3dd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -11,52 +11,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 6 p_id: - 6 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 19.2 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 300 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 480 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 15.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 19.2 + grundrente: + bewertungszeiten_monate: + - 300 + grundrentenzeiten_monate: + - 480 + mean_entgeltpunkte: + - 15.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 806.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 149.72 - sozialversicherung__rente__grundrente__betrag_m: - - 149.72 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.014583333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 806.0 + grundrente: + basisbetrag_m: + - 149.72 + betrag_m: + - 149.72 + mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index ed444c50ab..b2d3c91a0d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -11,52 +11,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1400.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 7 p_id: - 7 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 19.2 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 300 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 480 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 15.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 19.2 + grundrente: + bewertungszeiten_monate: + - 300 + grundrentenzeiten_monate: + - 480 + mean_entgeltpunkte: + - 15.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 716.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 149.72 - sozialversicherung__rente__grundrente__betrag_m: - - 59.72 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.014583333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 716.0 + grundrente: + basisbetrag_m: + - 149.72 + betrag_m: + - 59.72 + mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 0587e2b6c0..019e6005ab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -11,52 +11,68 @@ inputs: - false alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 2400.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 2400.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 8 p_id: - 8 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 19.2 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 300 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 480 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 15.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 19.2 + grundrente: + bewertungszeiten_monate: + - 300 + grundrentenzeiten_monate: + - 480 + mean_entgeltpunkte: + - 15.0 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 656.0 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 149.72 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.014583333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 656.0 + grundrente: + basisbetrag_m: + - 149.72 + betrag_m: + - 0.0 + mean_entgeltpunkte_zuschlag: + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 5b0a6e5029..9713f44748 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -1,8 +1,9 @@ --- info: note: >- - Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` since - test case uses 0.8 as maximum instead of 0.8004. Beispiel Richard Frenzel. + Adjusted `sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag` + since test case uses 0.8 as maximum instead of 0.8004. Beispiel Richard + Frenzel. precision_atol: 1 source: https://www.deutsche-rentenversicherung.de/DRV/DE/Rente/Grundrente/grundrente_fallbeispiele_neu.html inputs: @@ -12,52 +13,68 @@ inputs: - true alter: - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 1380.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - familie__kind: - - false - familie__p_id_ehepartner: - - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 1380.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + familie: + kind: + - false + p_id_ehepartner: + - -1 geburtsjahr: - 1951 hh_id: - 9 p_id: - 9 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 34.5 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 552 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 552 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 34.5 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 34.5 + grundrente: + bewertungszeiten_monate: + - 552 + grundrentenzeiten_monate: + - 552 + mean_entgeltpunkte: + - 34.5 wohnort_ost: - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 1179.55 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 53.0 - sozialversicherung__rente__grundrente__betrag_m: - - 0.0 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.0037 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1179.55 + grundrente: + basisbetrag_m: + - 53.0 + betrag_m: + - 0.0 + mean_entgeltpunkte_zuschlag: + - 0.0037 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml index f3fce9e1c6..c6293becc2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -1,6 +1,6 @@ --- info: - note: Regression test. See issue # 919. + note: Regression test. See issue precision_atol: 1 source: '' inputs: @@ -12,27 +12,38 @@ inputs: alter: - 70 - 70 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - - 700.0 - - 700.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: - - 0.0 - - 0.0 - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + bruttolohn_vorjahr_m: + - 700.0 + - 700.0 + aus_selbstständiger_arbeit: + betrag_y: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_y: + - 0.0 + - 0.0 + sonstige: + renteneinkünfte_vorjahr_m: + - 0.0 + - 0.0 + familie: + kind: + - false + - false + p_id_ehepartner: + - 1 + - 0 geburtsjahr: - 1951 - 1951 @@ -42,46 +53,51 @@ inputs: p_id: - 0 - 1 - sozialversicherung__rente__altersrente__höchster_bruttolohn_letzte_15_jahre_vor_rente_y: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__zugangsfaktor: - - 1.0 - - 1.0 - sozialversicherung__rente__bezieht_rente: - - true - - true - sozialversicherung__rente__entgeltpunkte_ost: - - 0.0 - - 0.0 - sozialversicherung__rente__entgeltpunkte_west: - - 19.2 - - 19.2 - sozialversicherung__rente__grundrente__bewertungszeiten_monate: - - 300 - - 300 - sozialversicherung__rente__grundrente__grundrentenzeiten_monate: - - 480 - - 480 - sozialversicherung__rente__grundrente__mean_entgeltpunkte: - - 15.0 - - 15.0 - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + - 0.0 + zugangsfaktor: + - 1.0 + - 1.0 + bezieht_rente: + - true + - true + entgeltpunkte_ost: + - 0.0 + - 0.0 + entgeltpunkte_west: + - 19.2 + - 19.2 + grundrente: + bewertungszeiten_monate: + - 300 + - 300 + grundrentenzeiten_monate: + - 480 + - 480 + mean_entgeltpunkte: + - 15.0 + - 15.0 wohnort_ost: - false - false outputs: - sozialversicherung__rente__altersrente__betrag_m: - - 806.2 - - 806.2 - sozialversicherung__rente__grundrente__basisbetrag_m: - - 149.72 - - 149.72 - sozialversicherung__rente__grundrente__betrag_m: - - 149.75 - - 149.75 - sozialversicherung__rente__grundrente__mean_entgeltpunkte_zuschlag: - - 0.014583333 - - 0.014583333 + sozialversicherung: + rente: + altersrente: + betrag_m: + - 806.2 + - 806.2 + grundrente: + basisbetrag_m: + - 149.72 + - 149.72 + betrag_m: + - 149.75 + - 149.75 + mean_entgeltpunkte_zuschlag: + - 0.014583333 + - 0.014583333 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml index 08749b69ed..7761d9ad66 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml @@ -6,16 +6,20 @@ info: inputs: assumed: {} provided: - familie__kind: - - true + familie: + kind: + - true hh_id: - 1 - kindergeld__betrag_m: - - 250.0 + kindergeld: + betrag_m: + - 250.0 p_id: - 1 - unterhalt__anspruch_m: - - 528.0 + unterhalt: + anspruch_m: + - 528.0 outputs: - unterhalt__kind_festgelegter_zahlbetrag_m: - - 403.0 + unterhalt: + kind_festgelegter_zahlbetrag_m: + - 403.0 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml index a6e5445ce6..df182252ee 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml @@ -6,16 +6,20 @@ info: inputs: assumed: {} provided: - familie__kind: - - false + familie: + kind: + - false hh_id: - 2 - kindergeld__betrag_m: - - 250.0 + kindergeld: + betrag_m: + - 250.0 p_id: - 2 - unterhalt__anspruch_m: - - 905.0 + unterhalt: + anspruch_m: + - 905.0 outputs: - unterhalt__kind_festgelegter_zahlbetrag_m: - - 655.0 + unterhalt: + kind_festgelegter_zahlbetrag_m: + - 655.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 848823420e..75e5193c21 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 158.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 158.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 7a3c3ead93..c0b185ea2b 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2009-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 117.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 117.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 3acda80161..a459321320 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index b9ba6abb4c..2a1bd26491 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2010-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index f35499e569..29bbdb7d09 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index fab9916bde..faffd29b45 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2011-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index f35499e569..29bbdb7d09 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index fab9916bde..faffd29b45 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2012-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index f35499e569..29bbdb7d09 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index fab9916bde..faffd29b45 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2013-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index f35499e569..29bbdb7d09 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index fab9916bde..faffd29b45 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2014-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index f35499e569..29bbdb7d09 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 180.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 180.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index fab9916bde..faffd29b45 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 133.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 133.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 479602ec18..491636f0b0 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 192.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 192.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" index e12ba63862..95718414e6 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2015-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 144.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 144.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 44ce1d8c68..108aee30ff 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 194.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 194.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 475622650c..af50eadc16 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2016-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 145.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 145.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 75b52def49..1c50e07cc0 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 201.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 201.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index fc280fc17c..8e19f7b9df 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index e3480f27e8..eae2544ad8 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,28 +9,32 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 150.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 150.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index d84c57e8fc..5d5d40d302 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 201.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 201.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 342074243f..259bb31f61 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index b87bca7b73..6e663fd3bb 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 268.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 268.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 140de00acb..c3a665a23f 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 150.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 150.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 58add9ea35..6bf6632231 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 205.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 205.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 342074243f..259bb31f61 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index aa50400ccc..6928e0a335 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 273.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 273.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index f2e9aab664..a8d565db9a 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 154.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 154.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml index fdf024b1dd..87dfccfc94 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml @@ -9,61 +9,77 @@ inputs: alter: - 45 - 10 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 6 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 5 - 5 - kindergeld__p_id_empfänger: - - -1 - - 6 + kindergeld: + p_id_empfänger: + - -1 + - 6 monat: - 1 - 1 p_id: - 6 - 7 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 205.0 - unterhaltsvorschuss__elternteil_alleinerziehend: - - false - - true + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 205.0 + elternteil_alleinerziehend: + - false + - true diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index dfb26efea1..500b2d50b3 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 212.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 212.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 342074243f..259bb31f61 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index 17b3f4a000..1bd6bbbe08 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 282.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 282.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 8debea5abb..2b9f55480d 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 160.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 160.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml index 896466edba..730b3bcd89 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml @@ -10,50 +10,60 @@ inputs: - 45 - 11 - 14 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 610.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 610.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + p_id_elternteil_1: + - -1 + - 39 + - 39 + p_id_elternteil_2: + - -1 + - -1 + - -1 hh_id: - 4 - 4 - 4 - kindergeld__p_id_empfänger: - - -1 - - 39 - - 39 + kindergeld: + p_id_empfänger: + - -1 + - 39 + - 39 monat: - 1 - 1 @@ -62,28 +72,34 @@ inputs: - 39 - 41 - 43 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 212.0 - - 282.0 - unterhaltsvorschuss__elternteil_alleinerziehend: - - false - - true - - true + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 212.0 + - 282.0 + elternteil_alleinerziehend: + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml index 492416addc..0926a31a86 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml @@ -10,50 +10,60 @@ inputs: - 45 - 11 - 14 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + p_id_elternteil_1: + - -1 + - 39 + - 39 + p_id_elternteil_2: + - -1 + - -1 + - -1 hh_id: - 4 - 4 - 4 - kindergeld__p_id_empfänger: - - -1 - - 39 - - 39 + kindergeld: + p_id_empfänger: + - -1 + - 39 + - 39 monat: - 1 - 1 @@ -62,28 +72,34 @@ inputs: - 39 - 41 - 43 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 + - 212.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 212.0 - - 0.0 - unterhaltsvorschuss__elternteil_alleinerziehend: - - false - - true - - true + elternteil_alleinerziehend: + - false + - true + - true diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml index 5575f69bfb..1a238f76dd 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml @@ -10,50 +10,60 @@ inputs: - 45 - 4 - 11 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - - false - familie__p_id_elternteil_1: - - -1 - - 39 - - 39 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + - false + p_id_elternteil_1: + - -1 + - 39 + - 39 + p_id_elternteil_2: + - -1 + - -1 + - -1 hh_id: - 4 - 4 - 4 - kindergeld__p_id_empfänger: - - -1 - - 39 - - 39 + kindergeld: + p_id_empfänger: + - -1 + - 39 + - 39 monat: - 1 - 1 @@ -62,28 +72,34 @@ inputs: - 39 - 41 - 43 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 160.0 - - 212.0 - unterhaltsvorschuss__elternteil_alleinerziehend: - - false - - true - - true + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 160.0 + - 212.0 + elternteil_alleinerziehend: + - false + - true + - true diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 763c9141be..2c21ddbcc8 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 202.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 202.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 342074243f..259bb31f61 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index 68f775966b..d61e1d0057 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 272.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 272.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 140de00acb..c3a665a23f 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 150.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 150.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml index e7fb48fb62..fc9959c250 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml @@ -9,61 +9,77 @@ inputs: alter: - 40 - 8 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 23 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + p_id_einstandspartner: + - -1 + - -1 + einkommensteuer: + einkünfte: + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ohne_renten_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 23 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 1 - 1 - kindergeld__p_id_empfänger: - - -1 - - 23 + kindergeld: + p_id_empfänger: + - -1 + - 23 monat: - 8 - 8 p_id: - 23 - 25 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 202.0 - unterhaltsvorschuss__elternteil_alleinerziehend: - - false - - true + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 202.0 + elternteil_alleinerziehend: + - false + - true diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 72e9faf54f..0a827948af 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 220.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 220.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index d8241f739b..9157b2c107 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index b0613c06ed..7a1b4684f5 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 293.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 293.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 5e5060d7d1..60dcb450ab 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 165.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 165.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 205d1c0f7d..bb4ab8da0a 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 232.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 232.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 90389a03fa..98783410cc 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index a5dd5d78ce..8422793ce8 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 309.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 309.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 8a75dfedc9..a581c9f8b6 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 174.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 174.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 786325953f..346ee351fd 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 236.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 236.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 3c840199cb..6b0daf388c 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index a2dc9823d9..d57af966f9 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 314.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 314.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 0e1167bede..d547ce6dce 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 177.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 177.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 26594a6408..cfad6a9774 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 252.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 252.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index 1929e00b00..f8bcc91d9c 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index bfa00bdabd..4a05dc9bc3 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 338.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 338.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index 75595fd1da..a35f114646 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 187.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 187.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" index 6cd135d72e..9988a1ae0a 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 8 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 301.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 301.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" index d4d3fe6b3c..8bc6cdd9ef 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: - 0.0 - 0.0 -outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" index c285a0a029..d289812de3 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 15 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 1000.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 395.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 395.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" index a2da921fbd..1c0a0b022d 100644 --- "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -9,31 +9,36 @@ inputs: alter: - 45 - 4 - familie__alleinerziehend: - - true - - false - familie__p_id_elternteil_1: - - -1 - - 0 - familie__p_id_elternteil_2: - - -1 - - -1 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 hh_id: - 0 - 0 - kindergeld__p_id_empfänger: - - -1 - - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 p_id: - 0 - 1 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__einkommen_m: - - 0.0 - - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 outputs: - unterhaltsvorschuss__betrag_m: - - 0.0 - - 230.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 230.0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" index c4349e74d9..31d8b1adb4 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" @@ -12,60 +12,62 @@ inputs: - 12 - 10 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 362.0 - - 100.0 - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 9 - - 8 - - -1 - - -1 - - -1 - arbeitslosengeld_2__regelbedarf_m_bg: - - 2281.0 - - 2281.0 - - 2281.0 - - 2281.0 - - 2281.0 - familie__kind: - - false - - false - - true - - true - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 8 - - 8 - - 8 - familie__p_id_elternteil_2: - - -1 - - -1 - - 9 - - 9 - - 9 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 362.0 + - 100.0 + - 0.0 + - 0.0 + - 0.0 + p_id_einstandspartner: + - 9 + - 8 + - -1 + - -1 + - -1 + regelbedarf_m_bg: + - 2281.0 + - 2281.0 + - 2281.0 + - 2281.0 + - 2281.0 + familie: + kind: + - false + - false + - true + - true + - true + p_id_elternteil_1: + - -1 + - -1 + - 8 + - 8 + - 8 + p_id_elternteil_2: + - -1 + - -1 + - 9 + - 9 + - 9 geburtsjahr: - 1973 - 1976 @@ -78,70 +80,79 @@ inputs: - 4 - 4 - 4 - kinderzuschlag__basisbetrag_m_bg: - - 280.0 - - 280.0 - - 280.0 - - 280.0 - - 280.0 + kinderzuschlag: + basisbetrag_m_bg: + - 280.0 + - 280.0 + - 280.0 + - 280.0 + - 280.0 p_id: - 8 - 9 - 10 - 11 - 12 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - false + - false + - false + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 650.0 - - 650.0 - - 650.0 - - 650.0 - - 650.0 - wohngeld__anspruchshöhe_m_wthh: - - 650.0 - - 650.0 - - 650.0 - - 650.0 - - 650.0 + wohngeld: + anspruchshöhe_m_bg: + - 650.0 + - 650.0 + - 650.0 + - 650.0 + - 650.0 + anspruchshöhe_m_wthh: + - 650.0 + - 650.0 + - 650.0 + - 650.0 + - 650.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 1819.0 - - 1819.0 - - 1819.0 - - 1819.0 - - 1819.0 - kinderzuschlag__betrag_m_bg: - - 0 - - 0 - - 0 - - 0 - - 0 - wohngeld__betrag_m_wthh: - - 0 - - 0 - - 0 - - 0 - - 0 + arbeitslosengeld_2: + betrag_m_bg: + - 1819.0 + - 1819.0 + - 1819.0 + - 1819.0 + - 1819.0 + kinderzuschlag: + betrag_m_bg: + - 0 + - 0 + - 0 + - 0 + - 0 + wohngeld: + betrag_m_wthh: + - 0 + - 0 + - 0 + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" index 8ac4cd2620..a9b35c1cf7 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" @@ -9,82 +9,95 @@ inputs: alter: - 28 - 1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m_bg: - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 555.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1183.64 - - 1183.64 - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 6 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + kindergeldübertrag_m_bg: + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 555.0 + - 0.0 + p_id_einstandspartner: + - -1 + - -1 + regelbedarf_m_bg: + - 1183.64 + - 1183.64 + familie: + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 6 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1981 - 2008 hh_id: - 3 - 3 - kindergeld__p_id_empfänger: - - -1 - - 6 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 + kindergeld: + p_id_empfänger: + - -1 + - 6 + kinderzuschlag: + basisbetrag_m_bg: + - 140.0 + - 140.0 p_id: - 6 - 7 - sozialversicherung__rente__bezieht_rente: - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 500.0 - - 500.0 - wohngeld__anspruchshöhe_m_wthh: - - 500.0 - - 500.0 + wohngeld: + anspruchshöhe_m_bg: + - 500.0 + - 500.0 + anspruchshöhe_m_wthh: + - 500.0 + - 500.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - kinderzuschlag__betrag_m_bg: - - 140 - - 140 - vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - false - - false - wohngeld__betrag_m_wthh: - - 500 - - 500 + arbeitslosengeld_2: + betrag_m_bg: + - 0.0 + - 0.0 + kinderzuschlag: + betrag_m_bg: + - 140 + - 140 + vorrangprüfungen: + kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - false + - false + wohngeld: + betrag_m_wthh: + - 500 + - 500 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" index e41d6b06b7..479230ef73 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" @@ -9,70 +9,81 @@ inputs: alter: - 40 - 40 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 700.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 5 - - 4 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1170.0 - - 1170.0 - familie__kind: - - false - - false - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 700.0 + - 0.0 + p_id_einstandspartner: + - 5 + - 4 + regelbedarf_m_bg: + - 1170.0 + - 1170.0 + familie: + kind: + - false + - false + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1973 hh_id: - 2 - 2 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 - - 0.0 + kinderzuschlag: + basisbetrag_m_bg: + - 0.0 + - 0.0 p_id: - 4 - 5 - sozialversicherung__rente__bezieht_rente: - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 400.0 - - 400.0 - wohngeld__anspruchshöhe_m_wthh: - - 400.0 - - 400.0 + wohngeld: + anspruchshöhe_m_bg: + - 400.0 + - 400.0 + anspruchshöhe_m_wthh: + - 400.0 + - 400.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 470.0 - - 470.0 - kinderzuschlag__betrag_m_bg: - - 0 - - 0 - wohngeld__betrag_m_wthh: - - 0 - - 0 + arbeitslosengeld_2: + betrag_m_bg: + - 470.0 + - 470.0 + kinderzuschlag: + betrag_m_bg: + - 0 + - 0 + wohngeld: + betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" index 27e98c4cd1..0ad3cd48fa 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" @@ -9,70 +9,81 @@ inputs: alter: - 75 - 50 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 300.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 19 - - 18 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1046.0 - - 1046.0 - familie__kind: - - false - - false - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 300.0 + - 0.0 + p_id_einstandspartner: + - 19 + - 18 + regelbedarf_m_bg: + - 1046.0 + - 1046.0 + familie: + kind: + - false + - false + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1939 - 1964 hh_id: - 7 - 7 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 - - 0.0 + kinderzuschlag: + basisbetrag_m_bg: + - 0.0 + - 0.0 p_id: - 18 - 19 - sozialversicherung__rente__bezieht_rente: - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 78000.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - wohngeld__anspruchshöhe_m_wthh: - - 0.0 - - 0.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + - 0.0 + anspruchshöhe_m_wthh: + - 0.0 + - 0.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - kinderzuschlag__betrag_m_bg: - - 0 - - 0 - wohngeld__betrag_m_wthh: - - 0 - - 0 + arbeitslosengeld_2: + betrag_m_bg: + - 0.0 + - 0.0 + kinderzuschlag: + betrag_m_bg: + - 0 + - 0 + wohngeld: + betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" index 9d3d82576f..6cf2ae899c 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -10,42 +10,44 @@ inputs: - 30 - 30 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 1100.0 - - 200.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - 2 - - 1 - - -1 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1765.0 - - 1765.0 - - 1765.0 - familie__kind: - - false - - false - - true - familie__p_id_elternteil_1: - - -1 - - -1 - - 1 - familie__p_id_elternteil_2: - - -1 - - -1 - - 2 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 0.0 + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 1100.0 + - 200.0 + - 0.0 + p_id_einstandspartner: + - 2 + - 1 + - -1 + regelbedarf_m_bg: + - 1765.0 + - 1765.0 + - 1765.0 + familie: + kind: + - false + - false + - true + p_id_elternteil_1: + - -1 + - -1 + - 1 + p_id_elternteil_2: + - -1 + - -1 + - 2 geburtsjahr: - 1986 - 1986 @@ -54,48 +56,57 @@ inputs: - 1 - 1 - 1 - kinderzuschlag__basisbetrag_m_bg: - - 140.0 - - 140.0 - - 140.0 + kinderzuschlag: + basisbetrag_m_bg: + - 140.0 + - 140.0 + - 140.0 p_id: - 1 - 2 - 3 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: + sozialversicherung: + rente: + bezieht_rente: + - false + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - vermögen: + wohngeld: + anspruchshöhe_m_bg: + - 350.0 + - 350.0 + - 350.0 + anspruchshöhe_m_wthh: + - 350.0 + - 350.0 + - 350.0 +outputs: + arbeitslosengeld_2: + betrag_m_bg: - 0.0 - 0.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 350.0 - - 350.0 - - 350.0 - wohngeld__anspruchshöhe_m_wthh: - - 350.0 - - 350.0 - - 350.0 -outputs: - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - - 0.0 - - 0.0 - kinderzuschlag__betrag_m_bg: - - 140 - - 140 - - 140 - wohngeld__betrag_m_wthh: - - 350 - - 350 - - 350 + kinderzuschlag: + betrag_m_bg: + - 140 + - 140 + - 140 + wohngeld: + betrag_m_wthh: + - 350 + - 350 + - 350 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" index cd4e9b6945..21ee267fe9 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" @@ -9,73 +9,85 @@ inputs: alter: - 28 - 1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 555.0 - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1183.64 - - 1183.64 - familie__kind: - - false - - true - familie__p_id_elternteil_1: - - -1 - - 16 - familie__p_id_elternteil_2: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + - 0.0 + kindergeldübertrag_m: + - 0.0 + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 555.0 + - 0.0 + p_id_einstandspartner: + - -1 + - -1 + regelbedarf_m_bg: + - 1183.64 + - 1183.64 + familie: + kind: + - false + - true + p_id_elternteil_1: + - -1 + - 16 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1991 - 2018 hh_id: - 6 - 6 - kindergeld__betrag_m: - - 0.0 - - 0.0 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 - - 0.0 + kindergeld: + betrag_m: + - 0.0 + - 0.0 + kinderzuschlag: + basisbetrag_m_bg: + - 0.0 + - 0.0 p_id: - 16 - 17 - sozialversicherung__rente__bezieht_rente: - - false - - false - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - false + - false + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 356.0 - - 356.0 - wohngeld__anspruchshöhe_m_wthh: - - 356.0 - - 356.0 + wohngeld: + anspruchshöhe_m_bg: + - 356.0 + - 356.0 + anspruchshöhe_m_wthh: + - 356.0 + - 356.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 628.64 - - 628.64 - kinderzuschlag__betrag_m_bg: - - 0 - - 0 - wohngeld__betrag_m_wthh: - - 0 - - 0 + arbeitslosengeld_2: + betrag_m_bg: + - 628.64 + - 628.64 + kinderzuschlag: + betrag_m_bg: + - 0 + - 0 + wohngeld: + betrag_m_wthh: + - 0 + - 0 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" index 71c636012e..0878a36eb4 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" @@ -8,48 +8,59 @@ inputs: provided: alter: - 80 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__kindergeld_zur_bedarfsdeckung_m: - - 0.0 - arbeitslosengeld_2__kindergeldübertrag_m: - - 0.0 - arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: - - 0.0 - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - arbeitslosengeld_2__regelbedarf_m_bg: - - 1000.0 - familie__kind: - - false - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + kindergeld_zur_bedarfsdeckung_m: + - 0.0 + kindergeldübertrag_m: + - 0.0 + nettoeinkommen_nach_abzug_freibetrag_m: + - 0.0 + p_id_einstandspartner: + - -1 + regelbedarf_m_bg: + - 1000.0 + familie: + kind: + - false + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1939 hh_id: - 8 - kinderzuschlag__basisbetrag_m_bg: - - 0.0 + kinderzuschlag: + basisbetrag_m_bg: + - 0.0 p_id: - 20 - sozialversicherung__rente__bezieht_rente: - - true - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + sozialversicherung: + rente: + bezieht_rente: + - true + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 0.0 - wohngeld__anspruchshöhe_m_bg: - - 0.0 - wohngeld__anspruchshöhe_m_wthh: - - 0.0 + wohngeld: + anspruchshöhe_m_bg: + - 0.0 + anspruchshöhe_m_wthh: + - 0.0 outputs: - arbeitslosengeld_2__betrag_m_bg: - - 0.0 - kinderzuschlag__betrag_m_bg: - - 0 - wohngeld__betrag_m_wthh: - - 0 + arbeitslosengeld_2: + betrag_m_bg: + - 0.0 + kinderzuschlag: + betrag_m_bg: + - 0 + wohngeld: + betrag_m_wthh: + - 0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index 7664ff49ab..1729c29ec3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -1,8 +1,8 @@ --- info: note: >- - Expanded test case to include additional household members so that more than seven - people are eligible for housing subsidies + Expanded test case to include additional household members so that more than + seven people are eligible for housing subsidies precision_atol: 0.01 source: Regression test. inputs: @@ -26,24 +26,25 @@ inputs: - 8 - 8 - 8 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 67 - - 66 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 67 + - 66 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 @@ -53,141 +54,150 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1450.0 - - 1450.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - - true - - true - - true - familie__p_id_ehepartner: - - 67 - - 66 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 66 - - 66 - - 66 - - 66 - - 66 - - 66 - familie__p_id_elternteil_2: - - -1 - - -1 - - 67 - - 67 - - 67 - - 67 - - 67 - - 67 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1450.0 + - 1450.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + - true + - true + - true + p_id_ehepartner: + - 67 + - 66 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 66 + - 66 + - 66 + - 66 + - 66 + - 66 + p_id_elternteil_2: + - -1 + - -1 + - 67 + - 67 + - 67 + - 67 + - 67 + - 67 geburtsjahr: - 1964 - 1953 @@ -224,24 +234,25 @@ inputs: - 15 - 15 - 15 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 66 - - 66 - - 66 - - 66 - - 66 - - 66 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 66 + - 66 + - 66 + - 66 + - 66 + - 66 p_id: - 66 - 67 @@ -251,87 +262,97 @@ inputs: - 71 - 72 - 73 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 50.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 200000.0 - 0.0 @@ -341,94 +362,98 @@ inputs: - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_bg: - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - wohngeld__anspruchshöhe_m_wthh: - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 - - 93.0 + wohngeld: + anspruchshöhe_m_bg: + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + anspruchshöhe_m_wthh: + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 + - 93.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index eb73602b6b..5238f3522d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -18,114 +18,124 @@ inputs: - 5 - 5 - 5 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 23 - - 22 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 23 + - 22 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 1000.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - true - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - familie__p_id_ehepartner: - - 23 - - 22 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 22 - - 22 - - 22 - familie__p_id_elternteil_2: - - -1 - - -1 - - 23 - - 23 - - 23 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + - 1000.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - true + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + p_id_ehepartner: + - 23 + - 22 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 22 + - 22 + - 22 + p_id_elternteil_2: + - -1 + - -1 + - 23 + - 23 + - 23 geburtsjahr: - 1964 - 1953 @@ -150,142 +160,157 @@ inputs: - 4 - 4 - 4 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 22 - - 22 - - 22 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 22 + - 22 + - 22 p_id: - 22 - 23 - 24 - 25 - 26 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 50.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 200000.0 - 0.0 - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 850.0 - - 850.0 - - 850.0 - - 850.0 - - 850.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 70.0 - - 70.0 - - 70.0 - - 70.0 - - 70.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 850.0 + - 850.0 + - 850.0 + - 850.0 + - 850.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 70.0 + - 70.0 + - 70.0 + - 70.0 + - 70.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_bg: - - 104.0 - - 104.0 - - 104.0 - - 104.0 - - 104.0 - wohngeld__anspruchshöhe_m_wthh: - - 104.0 - - 104.0 - - 104.0 - - 104.0 - - 104.0 + wohngeld: + anspruchshöhe_m_bg: + - 104.0 + - 104.0 + - 104.0 + - 104.0 + - 104.0 + anspruchshöhe_m_wthh: + - 104.0 + - 104.0 + - 104.0 + - 104.0 + - 104.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index baac72617e..0ea1d52074 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -12,63 +12,73 @@ inputs: anzahl_personen_hh: - 2 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - -1 + - -1 behinderungsgrad: - 0 - 0 - einkommensteuer__betrag_y_sn: - - 1000.0 - - 1000.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 16000.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 250.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - true - - false - familie__kind: - - false - - true - familie__p_id_ehepartner: - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - 20 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 1000.0 + - 1000.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 16000.0 + - 0.0 + bruttolohn_m: + - 1000.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + ohne_renten_m: + - 250.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - true + - false + kind: + - false + - true + p_id_ehepartner: + - -1 + - -1 + p_id_elternteil_1: + - -1 + - 20 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1972 - 2001 @@ -81,73 +91,88 @@ inputs: hh_id: - 3 - 3 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - true - kindergeld__p_id_empfänger: - - -1 - - 20 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - true + p_id_empfänger: + - -1 + - 20 p_id: - 20 - 21 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + vermögen: + - 95000.0 - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 +outputs: + wohngeld: + anspruchshöhe_m_bg: - 0.0 - 0.0 - unterhaltsvorschuss__betrag_m: + anspruchshöhe_m_wthh: - 0.0 - 0.0 - vermögen: - - 95000.0 - - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 -outputs: - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - wohngeld__anspruchshöhe_m_wthh: - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index b87a60cbfe..5d195e7f84 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -12,60 +12,70 @@ inputs: anzahl_personen_hh: - 2 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 19 - - 18 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 19 + - 18 behinderungsgrad: - 50 - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1300.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 19 - - 18 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1300.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 19 + - 18 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1973 - 1958 @@ -78,73 +88,88 @@ inputs: hh_id: - 2 - 2 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 18 - 19 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 30000.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_bg: - - 73.0 - - 73.0 - wohngeld__anspruchshöhe_m_wthh: - - 73.0 - - 73.0 + wohngeld: + anspruchshöhe_m_bg: + - 73.0 + - 73.0 + anspruchshöhe_m_wthh: + - 73.0 + - 73.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 5960f3d5b6..e6a6f4dad0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -12,60 +12,70 @@ inputs: anzahl_personen_hh: - 2 - 2 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 54 - - 53 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + p_id_einstandspartner: + - 54 + - 53 behinderungsgrad: - 50 - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 100.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - familie__kind: - - false - - false - familie__p_id_ehepartner: - - 54 - - 53 - familie__p_id_elternteil_1: - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + ohne_renten_m: + - 100.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + kind: + - false + - false + p_id_ehepartner: + - 54 + - 53 + p_id_elternteil_1: + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 geburtsjahr: - 1963 - 1958 @@ -78,73 +88,88 @@ inputs: hh_id: - 9 - 9 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + p_id_empfänger: + - -1 + - -1 p_id: - 53 - 54 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 vermögen: - 90000.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - wohnen__baujahr_immobilie_hh: - - 2005 - - 2005 - wohnen__bewohnt_eigentum_hh: - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 400.0 - - 400.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + wohnen: + baujahr_immobilie_hh: + - 2005 + - 2005 + bewohnt_eigentum_hh: + - false + - false + bruttokaltmiete_m_hh: + - 400.0 + - 400.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + wohnfläche_hh: + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_bg: - - 108.0 - - 108.0 - wohngeld__anspruchshöhe_m_wthh: - - 108.0 - - 108.0 + wohngeld: + anspruchshöhe_m_bg: + - 108.0 + - 108.0 + anspruchshöhe_m_wthh: + - 108.0 + - 108.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index f7c1cc9863..50e5f519b2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -14,82 +14,92 @@ inputs: - 3 - 3 - 3 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 16 - - 15 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 16 + - 15 + - -1 behinderungsgrad: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 1000.0 - - 1000.0 - - 1000.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 1000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 25000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2000.0 - - 0.0 - - 200.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 16 - - 15 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 15 - familie__p_id_elternteil_2: - - -1 - - -1 - - 16 + einkommensteuer: + betrag_y_sn: + - 1000.0 + - 1000.0 + - 1000.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 1000.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 25000.0 + - 0.0 + - 0.0 + bruttolohn_m: + - 2000.0 + - 0.0 + - 200.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 16 + - 15 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 15 + p_id_elternteil_2: + - -1 + - -1 + - 16 geburtsjahr: - 1971 - 1970 @@ -106,96 +116,111 @@ inputs: - 1 - 1 - 1 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 15 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 15 p_id: - 15 - 16 - 17 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 120000.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 50.0 - - 50.0 - - 50.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 50.0 + - 50.0 + - 50.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_bg: - - 75.0 - - 75.0 - - 75.0 - wohngeld__anspruchshöhe_m_wthh: - - 75.0 - - 75.0 - - 75.0 + wohngeld: + anspruchshöhe_m_bg: + - 75.0 + - 75.0 + - 75.0 + anspruchshöhe_m_wthh: + - 75.0 + - 75.0 + - 75.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index 2fca8f2852..8487f7fa5d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -34,34 +34,35 @@ inputs: - 13 - 13 - 13 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 35 - - 34 - - 37 - - 36 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 35 + - 34 + - 37 + - 36 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 @@ -76,216 +77,225 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 2400.0 - - 2400.0 - - 2400.0 - - 2400.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - false - - false - - false - - false - - false - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true - familie__p_id_ehepartner: - - 35 - - 34 - - 37 - - 36 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - familie__p_id_elternteil_2: - - -1 - - -1 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 - - 35 + einkommensteuer: + betrag_y_sn: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2400.0 + - 2400.0 + - 2400.0 + - 2400.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - true + - true + - false + - false + - false + - false + - false + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - false + - false + - false + - true + - true + - true + - true + - true + - true + - true + - true + p_id_ehepartner: + - 35 + - 34 + - 37 + - 36 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + p_id_elternteil_2: + - -1 + - -1 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 + - 35 geburtsjahr: - 1973 - 1976 @@ -342,34 +352,35 @@ inputs: - 7 - 7 - 7 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - - -1 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 - - 34 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 + - 34 p_id: - 34 - 35 @@ -384,132 +395,142 @@ inputs: - 44 - 45 - 46 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 350.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 400.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 350.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 400.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 4100.0 - 0.0 @@ -524,130 +545,134 @@ inputs: - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - - 2000.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - - 120.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 - - 3 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + - 2000.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + - 120.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 + - 3 outputs: - wohngeld__anspruchshöhe_m_wthh: - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 - - 47.0 + wohngeld: + anspruchshöhe_m_wthh: + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 + - 47.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index e20bdc3136..5af7f2ae08 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -27,20 +27,21 @@ inputs: - 6 - 6 - 6 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 48 - - 47 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 48 + - 47 + - -1 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 @@ -48,104 +49,113 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 1000.0 - - 1000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3650.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 500.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - - true - familie__p_id_ehepartner: - - 48 - - 47 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 47 - - 47 - - 47 - - 47 - familie__p_id_elternteil_2: - - -1 - - -1 - - 48 - - 48 - - 48 - - 48 + einkommensteuer: + betrag_y_sn: + - 1000.0 + - 1000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3650.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + elterngeld: + betrag_m: + - 500.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + - true + p_id_ehepartner: + - 48 + - 47 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 47 + - 47 + - 47 + - 47 + p_id_elternteil_2: + - -1 + - -1 + - 48 + - 48 + - 48 + - 48 geburtsjahr: - 1975 - 1970 @@ -174,20 +184,21 @@ inputs: - 8 - 8 - 8 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 47 - - 47 - - 47 - - 47 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 47 + - 47 + - 47 + - 47 p_id: - 47 - 48 @@ -195,69 +206,79 @@ inputs: - 50 - 51 - 52 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 255.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 300.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 255.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 300.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 @@ -265,74 +286,78 @@ inputs: - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 4 - - 4 - - 4 - - 4 - - 4 - - 4 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 4 + - 4 + - 4 + - 4 + - 4 + - 4 outputs: - wohngeld__anspruchshöhe_m_bg: - - 24.0 - - 24.0 - - 24.0 - - 24.0 - - 24.0 - - 24.0 - wohngeld__anspruchshöhe_m_wthh: - - 24.0 - - 24.0 - - 24.0 - - 24.0 - - 24.0 - - 24.0 + wohngeld: + anspruchshöhe_m_bg: + - 24.0 + - 24.0 + - 24.0 + - 24.0 + - 24.0 + - 24.0 + anspruchshöhe_m_wthh: + - 24.0 + - 24.0 + - 24.0 + - 24.0 + - 24.0 + - 24.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 5f863031ea..b406779792 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -20,20 +20,21 @@ inputs: - 6 - 6 - 6 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 29 - - 28 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 29 + - 28 + - -1 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 @@ -41,111 +42,120 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - - 7000.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 3000.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 800.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - - true - familie__p_id_ehepartner: - - 29 - - 28 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 28 - - 28 - - 28 - - 28 - familie__p_id_elternteil_2: - - -1 - - -1 - - 29 - - 29 - - 29 - - 29 + einkommensteuer: + betrag_y_sn: + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + - 7000.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 800.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + - true + p_id_ehepartner: + - 29 + - 28 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 28 + - 28 + - 28 + - 28 + p_id_elternteil_2: + - -1 + - -1 + - 29 + - 29 + - 29 + - 29 geburtsjahr: - 1975 - 1970 @@ -174,20 +184,21 @@ inputs: - 6 - 6 - 6 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - 28 - - 28 - - 28 - - 28 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - 28 + - 28 + - 28 + - 28 p_id: - 28 - 29 @@ -195,151 +206,165 @@ inputs: - 31 - 32 - 33 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 255.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 300.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 255.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 300.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: + - 2000000.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + - 1995 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + - 1400.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 4 + - 4 + - 4 + - 4 + - 4 + - 4 + mindesteinkommen_erreicht_bg: + - true + - true + - true + - true + - true + - true +outputs: + wohngeld: + anspruchshöhe_m_bg: - 0.0 - unterhaltsvorschuss__betrag_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + anspruchshöhe_m_wthh: - 0.0 - vermögen: - - 2000000.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - - 1400.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 4 - - 4 - - 4 - - 4 - - 4 - - 4 - wohngeld__mindesteinkommen_erreicht_bg: - - true - - true - - true - - true - - true - - true -outputs: - wohngeld__anspruchshöhe_m_bg: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - wohngeld__anspruchshöhe_m_wthh: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index fb6d19bce7..3d5f478743 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -10,42 +10,52 @@ inputs: - 52 anzahl_personen_hh: - 1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 behinderungsgrad: - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1967 geburtsmonat: @@ -54,50 +64,65 @@ inputs: - 1 hh_id: - 5 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + p_id_empfänger: + - -1 p_id: - 27 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 0.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 55000.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - wohnen__baujahr_immobilie_hh: - - 1995 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 1200.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - wohngeld__mietstufe: - - 5 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1995 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 1200.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe: + - 5 outputs: - wohngeld__anspruchshöhe_m_bg: - - 59.0 - wohngeld__anspruchshöhe_m_wthh: - - 59.0 + wohngeld: + anspruchshöhe_m_bg: + - 59.0 + anspruchshöhe_m_wthh: + - 59.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 71bbba19dc..eabb276873 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -10,44 +10,54 @@ inputs: - 57 anzahl_personen_hh: - 1 - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 behinderungsgrad: - 0 - einkommensteuer__betrag_y_sn: - - 300.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 12600.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1050.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 300.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 12600.0 + bruttolohn_m: + - 1050.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1964 geburtsmonat: @@ -56,50 +66,65 @@ inputs: - 1 hh_id: - 10 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + p_id_empfänger: + - -1 p_id: - 55 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 31000.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - wohnen__baujahr_immobilie_hh: - - 1980 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - wohngeld__mietstufe: - - 5 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1980 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 600.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe: + - 5 outputs: - wohngeld__anspruchshöhe_m_bg: - - 249.0 - wohngeld__anspruchshöhe_m_wthh: - - 249.0 + wohngeld: + anspruchshöhe_m_bg: + - 249.0 + anspruchshöhe_m_wthh: + - 249.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 7007b63d75..387e77b11b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -10,46 +10,56 @@ inputs: - 57 anzahl_personen_hh: - 1 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 behinderungsgrad: - 0 - einkommensteuer__betrag_y_sn: - - 300.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 12600.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1050.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 300.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 12600.0 + bruttolohn_m: + - 1050.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1966 geburtsmonat: @@ -58,54 +68,69 @@ inputs: - 1 hh_id: - 11 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + p_id_empfänger: + - -1 p_id: - 55 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 5000.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - wohnen__baujahr_immobilie_hh: - - 1982 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - wohngeld__mietstufe: - - 5 - wohngeld__mindesteinkommen_erreicht_bg: - - true - wohngeld__mindesteinkommen_erreicht_wthh: - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1982 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 600.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe: + - 5 + mindesteinkommen_erreicht_bg: + - true + mindesteinkommen_erreicht_wthh: + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 425.0 - wohngeld__anspruchshöhe_m_wthh: - - 425.0 + wohngeld: + anspruchshöhe_m_bg: + - 425.0 + anspruchshöhe_m_wthh: + - 425.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index e6063eeaf9..c10f173fab 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -10,46 +10,56 @@ inputs: - 57 anzahl_personen_hh: - 1 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - arbeitslosengeld_2__p_id_einstandspartner: - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 behinderungsgrad: - 0 - einkommensteuer__betrag_y_sn: - - 300.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 12600.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1050.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - elterngeld__betrag_m: - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - familie__alleinerziehend: - - false - familie__kind: - - false - familie__p_id_ehepartner: - - -1 - familie__p_id_elternteil_1: - - -1 - familie__p_id_elternteil_2: - - -1 + einkommensteuer: + betrag_y_sn: + - 300.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 12600.0 + bruttolohn_m: + - 1050.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 geburtsjahr: - 1966 geburtsmonat: @@ -58,58 +68,73 @@ inputs: - 1 hh_id: - 12 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - kindergeld__p_id_empfänger: - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + p_id_empfänger: + - -1 p_id: - 56 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 80.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 vermögen: - 61000.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - wohnen__baujahr_immobilie_hh: - - 1982 - wohnen__bewohnt_eigentum_hh: - - false - wohnen__bruttokaltmiete_m_hh: - - 600.0 - wohnen__heizkosten_m_hh: - - 50.0 - wohnen__wohnfläche_hh: - - 40.0 - wohngeld__mietstufe: - - 5 - wohngeld__mindesteinkommen_erreicht_bg: - - true - wohngeld__mindesteinkommen_erreicht_wthh: - - true - wohngeld__vermögensgrenze_unterschritten_bg: - - true - wohngeld__vermögensgrenze_unterschritten_wthh: - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1982 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 600.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe: + - 5 + mindesteinkommen_erreicht_bg: + - true + mindesteinkommen_erreicht_wthh: + - true + vermögensgrenze_unterschritten_bg: + - true + vermögensgrenze_unterschritten_wthh: + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 425.0 - wohngeld__anspruchshöhe_m_wthh: - - 425.0 + wohngeld: + anspruchshöhe_m_bg: + - 425.0 + anspruchshöhe_m_wthh: + - 425.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 7f5d3c490e..539ba252cc 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -14,86 +14,96 @@ inputs: - 3 - 3 - 3 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 58 - - 57 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + p_id_einstandspartner: + - 58 + - 57 + - -1 behinderungsgrad: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 585.0 - - 585.0 - - 585.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 10800.0 - - 12600.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 900.0 - - 1050.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - familie__kind: - - false - - false - - true - familie__p_id_ehepartner: - - 58 - - 57 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 57 - familie__p_id_elternteil_2: - - -1 - - -1 - - 58 + einkommensteuer: + betrag_y_sn: + - 585.0 + - 585.0 + - 585.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 10800.0 + - 12600.0 + - 0.0 + bruttolohn_m: + - 900.0 + - 1050.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + kind: + - false + - false + - true + p_id_ehepartner: + - 58 + - 57 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 57 + p_id_elternteil_2: + - -1 + - -1 + - 58 geburtsjahr: - 1984 - 1988 @@ -110,104 +120,119 @@ inputs: - 13 - 13 - 13 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 57 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + p_id_empfänger: + - -1 + - -1 + - 57 p_id: - 57 - 58 - 59 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 68.57 - - 80.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 85.71 - - 100.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 68.57 + - 80.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 85.71 + - 100.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 vermögen: - 45000.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1970 - - 1970 - - 1970 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 700.0 - - 700.0 - - 700.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 60.0 - - 60.0 - - 60.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - wohngeld__mindesteinkommen_erreicht_bg: - - true - - true - - true - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1970 + - 1970 + - 1970 + bewohnt_eigentum_hh: + - false + - false + - false + bruttokaltmiete_m_hh: + - 700.0 + - 700.0 + - 700.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 60.0 + - 60.0 + - 60.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + mindesteinkommen_erreicht_bg: + - true + - true + - true + mindesteinkommen_erreicht_wthh: + - true + - true + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 469.0 - - 469.0 - - 469.0 - wohngeld__anspruchshöhe_m_wthh: - - 469.0 - - 469.0 - - 469.0 + wohngeld: + anspruchshöhe_m_bg: + - 469.0 + - 469.0 + - 469.0 + anspruchshöhe_m_wthh: + - 469.0 + - 469.0 + - 469.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 83a3cdb8f4..70e94f7c11 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -20,27 +20,28 @@ inputs: - 6 - 6 - 6 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 61 - - 60 - - -1 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 61 + - 60 + - -1 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 @@ -48,118 +49,127 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 15600.0 - - 14400.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1300.0 - - 1200.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - - true - familie__p_id_ehepartner: - - 61 - - 60 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 60 - - 60 - - 60 - - 60 - familie__p_id_elternteil_2: - - -1 - - -1 - - 61 - - 61 - - 61 - - 61 + einkommensteuer: + betrag_y_sn: + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 15600.0 + - 14400.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bruttolohn_m: + - 1300.0 + - 1200.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + - true + p_id_ehepartner: + - 61 + - 60 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 60 + - 60 + - 60 + - 60 + p_id_elternteil_2: + - -1 + - -1 + - 61 + - 61 + - 61 + - 61 geburtsjahr: - 1978 - 1983 @@ -188,20 +198,21 @@ inputs: - 14 - 14 - 14 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 60 - - 60 - - 60 - - 60 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 60 + - 60 + - 60 + - 60 p_id: - 60 - 61 @@ -209,69 +220,79 @@ inputs: - 63 - 64 - 65 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 99.0 - - 91.4 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 123.8 - - 114.3 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 99.0 + - 91.4 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 123.8 + - 114.3 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 85000.0 - 0.0 @@ -279,81 +300,85 @@ inputs: - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 1 - - 1 - - 1 - - 1 - - 1 - - 1 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true - - true - - true - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 1 + - 1 + - 1 + - 1 + - 1 + - 1 + mindesteinkommen_erreicht_wthh: + - true + - true + - true + - true + - true + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 777.0 - - 777.0 - - 777.0 - - 777.0 - - 777.0 - - 777.0 - wohngeld__anspruchshöhe_m_wthh: - - 777.0 - - 777.0 - - 777.0 - - 777.0 - - 777.0 - - 777.0 + wohngeld: + anspruchshöhe_m_bg: + - 777.0 + - 777.0 + - 777.0 + - 777.0 + - 777.0 + - 777.0 + anspruchshöhe_m_wthh: + - 777.0 + - 777.0 + - 777.0 + - 777.0 + - 777.0 + - 777.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index 9046d94de5..77ddd7edf0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -16,106 +16,116 @@ inputs: - 4 - 4 - 4 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 75 - - 74 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + p_id_einstandspartner: + - 75 + - 74 + - -1 + - -1 behinderungsgrad: - 0 - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 10770.0 - - 4770.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 5000.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - familie__p_id_ehepartner: - - 75 - - 74 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 74 - - 74 - familie__p_id_elternteil_2: - - -1 - - -1 - - 75 - - 75 + einkommensteuer: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 10770.0 + - 4770.0 + - 0.0 + - 0.0 + bruttolohn_m: + - 1000.0 + - 5000.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + kind: + - false + - false + - true + - true + p_id_ehepartner: + - 75 + - 74 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 74 + - 74 + p_id_elternteil_2: + - -1 + - -1 + - 75 + - 75 geburtsjahr: - 1984 - 1988 @@ -136,124 +146,139 @@ inputs: - 16 - 16 - 16 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 74 - - 74 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + p_id_empfänger: + - -1 + - -1 + - 74 + - 74 p_id: - 74 - 75 - 76 - 77 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 52.54 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 60.32 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 52.54 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 60.32 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1970 - - 1970 - - 1970 - - 1970 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 730.0 - - 730.0 - - 730.0 - - 730.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 3 - - 3 - - 3 - - 3 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1970 + - 1970 + - 1970 + - 1970 + bewohnt_eigentum_hh: + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 730.0 + - 730.0 + - 730.0 + - 730.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 3 + - 3 + - 3 + - 3 + mindesteinkommen_erreicht_wthh: + - true + - true + - true + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 758.0 - - 758.0 - - 758.0 - - 758.0 - wohngeld__anspruchshöhe_m_wthh: - - 758.0 - - 758.0 - - 758.0 - - 758.0 + wohngeld: + anspruchshöhe_m_bg: + - 758.0 + - 758.0 + - 758.0 + - 758.0 + anspruchshöhe_m_wthh: + - 758.0 + - 758.0 + - 758.0 + - 758.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index de3fe98ea8..03a34bd816 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -18,126 +18,136 @@ inputs: - 5 - 5 - 5 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 79 - - 78 - - -1 - - -1 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 79 + - 78 + - -1 + - -1 + - -1 behinderungsgrad: - 0 - 0 - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 714.0 - - 714.0 - - 714.0 - - 714.0 - - 714.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 15600.0 - - 14400.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1300.0 - - 1200.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - true - - true - - true - familie__p_id_ehepartner: - - 79 - - 78 - - -1 - - -1 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - 78 - - 78 - - 78 - familie__p_id_elternteil_2: - - -1 - - -1 - - 79 - - 79 - - 79 + einkommensteuer: + betrag_y_sn: + - 714.0 + - 714.0 + - 714.0 + - 714.0 + - 714.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 15600.0 + - 14400.0 + - 0.0 + - 0.0 + - 0.0 + bruttolohn_m: + - 1300.0 + - 1200.0 + - 0.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + kind: + - false + - false + - true + - true + - true + p_id_ehepartner: + - 79 + - 78 + - -1 + - -1 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - 78 + - 78 + - 78 + p_id_elternteil_2: + - -1 + - -1 + - 79 + - 79 + - 79 geburtsjahr: - 1978 - 1983 @@ -162,148 +172,163 @@ inputs: - 17 - 17 - 17 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - true - - true - - true - kindergeld__p_id_empfänger: - - -1 - - -1 - - 78 - - 78 - - 78 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - true + - true + - true + p_id_empfänger: + - -1 + - -1 + - 78 + - 78 + - 78 p_id: - 78 - 79 - 80 - 81 - 82 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 99.0 - - 91.4 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 123.8 - - 114.3 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 99.0 + - 91.4 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 123.8 + - 114.3 + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 85000.0 - 0.0 - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - true - - true - wohnen__baujahr_immobilie_hh: - - 1993 - - 1993 - - 1993 - - 1993 - - 1993 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - - 1300.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 1 - - 1 - - 1 - - 1 - - 1 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true - - true - - true + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - true + - true + wohnen: + baujahr_immobilie_hh: + - 1993 + - 1993 + - 1993 + - 1993 + - 1993 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + - 1300.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 1 + - 1 + - 1 + - 1 + - 1 + mindesteinkommen_erreicht_wthh: + - true + - true + - true + - true + - true outputs: - wohngeld__anspruchshöhe_m_bg: - - 631.0 - - 631.0 - - 631.0 - - 631.0 - - 631.0 - wohngeld__anspruchshöhe_m_wthh: - - 631.0 - - 631.0 - - 631.0 - - 631.0 - - 631.0 + wohngeld: + anspruchshöhe_m_bg: + - 631.0 + - 631.0 + - 631.0 + - 631.0 + - 631.0 + anspruchshöhe_m_wthh: + - 631.0 + - 631.0 + - 631.0 + - 631.0 + - 631.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index da689deb27..2e47064bef 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -15,27 +15,28 @@ inputs: - 40 - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - 5 - - 4 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + - 5 + - 4 behinderungsgrad: - 0 - 0 @@ -43,111 +44,120 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 200.0 - - 200.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1200.0 - - 1200.0 - - 750.0 - - 750.0 - - 600.0 - - 600.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - true - - true - - true - - true - - true - - true - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - 5 - - 4 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 200.0 + - 200.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1200.0 + - 1200.0 + - 750.0 + - 750.0 + - 600.0 + - 600.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - true + - true + - true + - true + - true + - true + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - false + - false + - false + - false + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - 5 + - 4 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 1983 @@ -176,20 +186,21 @@ inputs: - 1 - 2 - 2 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 p_id: - 0 - 1 @@ -197,76 +208,86 @@ inputs: - 3 - 4 - 5 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 200.0 - - 200.0 - - 100.0 - - 100.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 100.0 - - 100.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 100.0 - - 100.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 200.0 + - 200.0 + - 100.0 + - 100.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 100.0 + - 100.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + - 100.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 vermögen: - 0.0 - 0.0 @@ -274,77 +295,81 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnen__baujahr_immobilie_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - wohnen__bewohnt_eigentum_hh: - - false - - false + wohnen: + baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 500.0 + - 500.0 + - 500.0 + - 500.0 + - 500.0 + - 500.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 +outputs: + arbeitslosengeld_2: + regelbedarf_m_bg: + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + regelbedarf_m_wthh: + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + - 1452.0 + wohngeld: + einkommen_für_mindesteinkommen_m_wthh: + - 1983.33 + - 1983.33 + - 1295.83 + - 1295.83 + - 1200.0 + - 1200.0 + mindesteinkommen_erreicht_wthh: + - true + - true - false - false - false - false - wohnen__bruttokaltmiete_m_hh: - - 500.0 - - 500.0 - - 500.0 - - 500.0 - - 500.0 - - 500.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 -outputs: - arbeitslosengeld_2__regelbedarf_m_bg: - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - arbeitslosengeld_2__regelbedarf_m_wthh: - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - - 1452.0 - wohngeld__einkommen_für_mindesteinkommen_m_wthh: - - 1983.33 - - 1983.33 - - 1295.83 - - 1295.83 - - 1200.0 - - 1200.0 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - false - - false - - false - - false wthh_id: - 2 - 2 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 0154f8293e..076abc2c2a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -12,126 +12,136 @@ inputs: - 40 - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - false - - false - - false - - false - - false - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - 3 - - 2 - - -1 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - false + - false + - false + - false + - false + p_id_einstandspartner: + - 1 + - 0 + - 3 + - 2 + - -1 behinderungsgrad: - 0 - 0 - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 20.0 - - 20.0 - - 20.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 12000.0 - - 12000.0 - - 9600.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 1000.0 - - 800.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - 3 - - 2 - - -1 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 20.0 + - 20.0 + - 20.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 12000.0 + - 12000.0 + - 9600.0 + - 0.0 + - 0.0 + bruttolohn_m: + - 1000.0 + - 1000.0 + - 800.0 + - 0.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + kind: + - false + - false + - false + - false + - false + p_id_ehepartner: + - 1 + - 0 + - 3 + - 2 + - -1 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 1983 @@ -156,163 +166,179 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 p_id: - 0 - 1 - 2 - 3 - 4 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - vermögen: - 0.0 - 0.0 - 0.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - false + - false + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - false + - false + wohnen: + baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 +outputs: + arbeitslosengeld_2: + bruttokaltmiete_m_wthh: + - 600.0 + - 600.0 + - 600.0 + - 400.0 + - 400.0 + wohngeld: + anzahl_personen_wthh: + - 3 + - 3 + - 3 + - 2 + - 2 + betrag_m_wthh: + - 175.0 + - 175.0 + - 175.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + mindesteinkommen_erreicht_wthh: - true - true - true - false - false - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - false - - false - wohnen__baujahr_immobilie_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - - 1000.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 -outputs: - arbeitslosengeld_2__bruttokaltmiete_m_wthh: - - 600.0 - - 600.0 - - 600.0 - - 400.0 - - 400.0 - wohngeld__anzahl_personen_wthh: - - 3 - - 3 - - 3 - - 2 - - 2 - wohngeld__betrag_m_wthh: - - 175.0 - - 175.0 - - 175.0 - - 0.0 - - 0.0 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true - - false - - false wthh_id: - 1 - 1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index e67cba34a7..98f5a69933 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -14,30 +14,31 @@ inputs: - 40 - 40 - 40 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: - - false - - false - - false - - false - - false - - false - - false - arbeitslosengeld_2__eigenbedarf_gedeckt: - - true - - true - - false - - true - - true - - true - - true - arbeitslosengeld_2__p_id_einstandspartner: - - 1 - - 0 - - -1 - - 4 - - 3 - - 6 - - 5 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + - false + - false + - false + - false + - false + - false + eigenbedarf_gedeckt: + - true + - true + - false + - true + - true + - true + - true + p_id_einstandspartner: + - 1 + - 0 + - -1 + - 4 + - 3 + - 6 + - 5 behinderungsgrad: - 0 - 0 @@ -46,134 +47,143 @@ inputs: - 0 - 0 - 0 - einkommensteuer__betrag_y_sn: - - 20.0 - - 20.0 - - 20.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_y: - - 12000.0 - - 12000.0 - - 9600.0 - - 0.0 - - 0.0 - - 7200.0 - - 0.0 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 1000.0 - - 1000.0 - - 800.0 - - 0.0 - - 0.0 - - 600.0 - - 0.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__sonstige__ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__gemeinsam_veranlagt: - - false - - false - - false - - false - - false - - false - - false - einkommensteuer__einkünfte__sonstige__ertragsanteil_an_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - elterngeld__anrechenbarer_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - familie__alleinerziehend: - - false - - false - - false - - false - - false - - false - - false - familie__kind: - - false - - false - - false - - false - - false - - false - - false - familie__p_id_ehepartner: - - 1 - - 0 - - -1 - - 4 - - 3 - - 6 - - 5 - familie__p_id_elternteil_1: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - familie__p_id_elternteil_2: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + einkommensteuer: + betrag_y_sn: + - 20.0 + - 20.0 + - 20.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_nichtselbstständiger_arbeit: + betrag_ohne_minijob_y: + - 12000.0 + - 12000.0 + - 9600.0 + - 0.0 + - 0.0 + - 7200.0 + - 0.0 + bruttolohn_m: + - 1000.0 + - 1000.0 + - 800.0 + - 0.0 + - 0.0 + - 600.0 + - 0.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige: + ertragsanteil_an_rente: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + ohne_renten_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + gemeinsam_veranlagt: + - false + - false + - false + - false + - false + - false + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + familie: + alleinerziehend: + - false + - false + - false + - false + - false + - false + - false + kind: + - false + - false + - false + - false + - false + - false + - false + p_id_ehepartner: + - 1 + - 0 + - -1 + - 4 + - 3 + - 6 + - 5 + p_id_elternteil_1: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + p_id_elternteil_2: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 geburtsjahr: - 1983 - 1983 @@ -206,22 +216,23 @@ inputs: - 0 - 0 - 0 - kindergeld__grundsätzlich_anspruchsberechtigt: - - false - - false - - false - - false - - false - - false - - false - kindergeld__p_id_empfänger: - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 - - -1 + kindergeld: + grundsätzlich_anspruchsberechtigt: + - false + - false + - false + - false + - false + - false + - false + p_id_empfänger: + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 + - -1 p_id: - 0 - 1 @@ -230,103 +241,207 @@ inputs: - 4 - 5 - 6 - solidaritätszuschlag__betrag_y_sn: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__arbeitslosen__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__beiträge_versicherter_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 50.0 - - 50.0 - - 50.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__bezieht_rente: - - false - - false - - false - - false - - false - - false - - false - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhalt__tatsächlich_erhaltener_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - unterhaltsvorschuss__betrag_m: - - 0.0 - - 0.0 - - 0.0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beiträge_versicherter_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + beitrag: + betrag_versicherter_m: + - 50.0 + - 50.0 + - 50.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + bezieht_rente: + - false + - false + - false + - false + - false + - false + - false + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + vermögen: - 0.0 - 0.0 - 0.0 - 0.0 - vermögen: - 0.0 - 0.0 - 0.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - false + - false + - false + - false + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + - true + - true + - false + - false + - false + - false + wohnen: + baujahr_immobilie_hh: + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + - 2010 + bewohnt_eigentum_hh: + - false + - false + - false + - false + - false + - false + - false + bruttokaltmiete_m_hh: + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + - 1200.0 + heizkosten_m_hh: + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + - 50.0 + wohnfläche_hh: + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + - 100.0 + wohngeld: + mietstufe: + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 + - 5 +outputs: + arbeitslosengeld_2: + bruttokaltmiete_m_wthh: + - 514.29 + - 514.29 + - 514.29 + - 685.71 + - 685.71 + - 685.71 + - 685.71 + bg_id: + - 0 + - 0 + - 1 + - 2 + - 2 + - 3 + - 3 + wohngeld: + anzahl_personen_wthh: + - 3 + - 3 + - 3 + - 4 + - 4 + - 4 + - 4 + betrag_m_wthh: + - 128.0 + - 128.0 + - 128.0 - 0.0 - 0.0 - 0.0 - 0.0 - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: - - true - - true - - true - - false - - false - - false - - false - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + mindesteinkommen_erreicht_wthh: - true - true - true @@ -334,95 +449,6 @@ inputs: - false - false - false - wohnen__baujahr_immobilie_hh: - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - - 2010 - wohnen__bewohnt_eigentum_hh: - - false - - false - - false - - false - - false - - false - - false - wohnen__bruttokaltmiete_m_hh: - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - - 1200.0 - wohnen__heizkosten_m_hh: - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - - 50.0 - wohnen__wohnfläche_hh: - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - wohngeld__mietstufe: - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 - - 5 -outputs: - bg_id: - - 0 - - 0 - - 1 - - 2 - - 2 - - 3 - - 3 - arbeitslosengeld_2__bruttokaltmiete_m_wthh: - - 514.29 - - 514.29 - - 514.29 - - 685.71 - - 685.71 - - 685.71 - - 685.71 - wohngeld__anzahl_personen_wthh: - - 3 - - 3 - - 3 - - 4 - - 4 - - 4 - - 4 - wohngeld__betrag_m_wthh: - - 128.0 - - 128.0 - - 128.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - wohngeld__mindesteinkommen_erreicht_wthh: - - true - - true - - true - - false - - false - - false - - false wthh_id: - 1 - 1 diff --git a/src/_gettsim_tests/test_full_taxes_and_transfers.py b/src/_gettsim_tests/test_full_taxes_and_transfers.py deleted file mode 100644 index de35ad43d4..0000000000 --- a/src/_gettsim_tests/test_full_taxes_and_transfers.py +++ /dev/null @@ -1,76 +0,0 @@ -from __future__ import annotations - -import dags.tree as dt -import pytest - -from _gettsim_tests.utils import ( - PolicyTest, - cached_set_up_policy_environment, - load_policy_test_data, -) -from ttsim import compute_taxes_and_transfers -from ttsim.column_objects_param_function import ( - PolicyInput, - check_series_has_expected_type, -) - -test_data = load_policy_test_data("full_taxes_and_transfers") - - -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) -def test_full_taxes_transfers(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - compute_taxes_and_transfers( - data_tree=test.input_tree, - policy_environment=environment, - targets_tree=test.target_structure, - ) - - -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) -def test_data_types(test: PolicyTest): - policy_environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - policy_environment=policy_environment, - targets_tree=test.target_structure, - ) - - flat_types_input_variables = { - n: pi.data_type - for n, pi in dt.flatten_to_qual_names(policy_environment).items() - if isinstance(pi, PolicyInput) - } - flat_functions = dt.flatten_to_qual_names(policy_environment) - - for column_name, result_array in dt.flatten_to_qual_names(result).items(): - if column_name in flat_types_input_variables: - internal_type = flat_types_input_variables[column_name] - elif column_name in flat_functions: - internal_type = flat_functions[column_name].__annotations__["return"] - else: - # TODO (@hmgaudecker): Implement easy way to find out expected type of - # aggregated functions - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/604 - if column_name.endswith(("_sn", "_hh", "_fg", "_bg", "_eg", "_ehe")): - internal_type = None - else: - raise ValueError(f"Column name {column_name} unknown.") - if internal_type: - assert check_series_has_expected_type(result_array, internal_type) - - -@pytest.mark.skip( - reason="Got rid of DEFAULT_TARGETS, there might not be a replacement." -) -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) -def test_allow_none_as_target_tree(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - compute_taxes_and_transfers( - data_tree=test.input_tree, - policy_environment=environment, - targets_tree=None, - ) diff --git a/src/_gettsim_tests/test_groupings.py b/src/_gettsim_tests/test_groupings.py deleted file mode 100644 index a8de3730fb..0000000000 --- a/src/_gettsim_tests/test_groupings.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import annotations - -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests.utils import ( - PolicyTest, - cached_set_up_policy_environment, - load_policy_test_data, -) -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("groupings") - - -@pytest.mark.parametrize("test", test_data, ids=lambda x: x.name) -def test_groupings(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - policy_environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for col, actual in flat_result.items(): - assert_array_almost_equal(actual, flat_expected_output_tree[col], decimal=2) diff --git a/src/_gettsim_tests/test_household_links.py b/src/_gettsim_tests/test_household_links.py deleted file mode 100644 index e94bc6986a..0000000000 --- a/src/_gettsim_tests/test_household_links.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import annotations - -import dags.tree as dt -import pytest -from numpy.testing import assert_array_almost_equal - -from _gettsim_tests.utils import ( - PolicyTest, - cached_set_up_policy_environment, - load_policy_test_data, -) -from ttsim import compute_taxes_and_transfers - -test_data = load_policy_test_data("household_links") - - -@pytest.mark.parametrize("test", test_data) -def test_aggregate_by_p_id(test: PolicyTest): - environment = cached_set_up_policy_environment(date=test.date) - - result = compute_taxes_and_transfers( - data_tree=test.input_tree, - policy_environment=environment, - targets_tree=test.target_structure, - ) - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - for col, actual in flat_result.items(): - assert_array_almost_equal(actual, flat_expected_output_tree[col], decimal=2) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index 26731190fe..b680370f8f 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -1,24 +1,29 @@ from __future__ import annotations +from pathlib import Path + import pytest -from _gettsim_tests.utils import ( +from _gettsim.config import GETTSIM_ROOT +from ttsim.config import IS_JAX_INSTALLED +from ttsim.testing_utils import ( PolicyTest, execute_test, - get_policy_test_ids_and_cases, + load_policy_test_data, ) -from ttsim.config import IS_JAX_INSTALLED -policy_test_ids_and_cases = get_policy_test_ids_and_cases() +TEST_DIR = Path(__file__).parent + +POLICY_TEST_IDS_AND_CASES = load_policy_test_data(test_dir=TEST_DIR, policy_name="") @pytest.mark.parametrize( "test", - policy_test_ids_and_cases.values(), - ids=policy_test_ids_and_cases.keys(), + POLICY_TEST_IDS_AND_CASES.values(), + ids=POLICY_TEST_IDS_AND_CASES.keys(), ) def test_policy(test: PolicyTest): if IS_JAX_INSTALLED: - execute_test(test, jit=True) + execute_test(test, root=GETTSIM_ROOT, jit=True) else: - execute_test(test) + execute_test(test, root=GETTSIM_ROOT, jit=False) diff --git a/src/_gettsim_tests/utils.py b/src/_gettsim_tests/utils.py deleted file mode 100644 index d67a6afa64..0000000000 --- a/src/_gettsim_tests/utils.py +++ /dev/null @@ -1,237 +0,0 @@ -from __future__ import annotations - -from functools import lru_cache -from typing import TYPE_CHECKING - -import dags.tree as dt -import optree -import pandas as pd -import yaml - -from _gettsim.config import GETTSIM_ROOT -from _gettsim_tests import TEST_DIR -from ttsim import ( - compute_taxes_and_transfers, - merge_trees, - set_up_policy_environment, - to_datetime, -) -from ttsim.config import numpy_or_jax as np - -# Set display options to show all columns without truncation -pd.set_option("display.max_columns", None) -pd.set_option("display.width", None) - -if TYPE_CHECKING: - import datetime - from pathlib import Path - - from ttsim.typing import ( - DashedISOString, - NestedData, - NestedInputStructureDict, - NestedPolicyEnvironment, - ) - - -def cached_set_up_policy_environment( - date: datetime.date | DashedISOString, -) -> NestedPolicyEnvironment: - return _cached_set_up_policy_environment(to_datetime(date)) - - -@lru_cache(maxsize=100) -def _cached_set_up_policy_environment(date: datetime.date) -> NestedPolicyEnvironment: - return set_up_policy_environment(date=date, root=GETTSIM_ROOT) - - -class PolicyTest: - """A class for a single policy test.""" - - def __init__( - self, - info: NestedData, - input_tree: NestedData, - expected_output_tree: NestedData, - path: Path, - date: datetime.date, - ) -> None: - self.info = info - self.input_tree = optree.tree_map(np.array, input_tree) - self.expected_output_tree = expected_output_tree - self.path = path - self.date = date - - @property - def target_structure(self) -> NestedInputStructureDict: - flat_target_structure = dict.fromkeys( - dt.flatten_to_tree_paths(self.expected_output_tree) - ) - return dt.unflatten_from_tree_paths(flat_target_structure) - - @property - def name(self) -> str: - return self.path.relative_to(TEST_DIR / "test_data").as_posix() - - -def execute_test(test: PolicyTest, jit: bool = False) -> None: - environment = cached_set_up_policy_environment(date=test.date) - - data_tree = test.input_tree - targets_tree = test.target_structure - - if targets_tree: - result = compute_taxes_and_transfers( - data_tree=data_tree, - policy_environment=environment, - targets_tree=targets_tree, - jit=jit, - ) - else: - result = {} - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) - - if flat_expected_output_tree: - expected_df = pd.DataFrame(flat_expected_output_tree) - result_df = pd.DataFrame(flat_result) - - try: - pd.testing.assert_frame_equal( - result_df.sort_index(axis="columns"), - expected_df.sort_index(axis="columns"), - atol=test.info["precision_atol"], - check_dtype=False, - ) - except AssertionError as e: - assert set(result_df.columns) == set(expected_df.columns) - cols_with_differences = [] - for col in expected_df.columns: - try: - pd.testing.assert_series_equal( - result_df[col], - expected_df[col], - atol=test.info["precision_atol"], - check_dtype=False, - ) - except AssertionError: - cols_with_differences.append(col) - raise AssertionError( - f"""actual != expected in columns: {cols_with_differences}. - -actual[cols_with_differences]: - -{result_df[cols_with_differences]} - -expected[cols_with_differences]: - -{expected_df[cols_with_differences]} -""" - ) from e - - -def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: - all_policy_tests = load_policy_test_data("") - return {policy_test.name: policy_test for policy_test in all_policy_tests} - - -def load_policy_test_data(policy_name: str) -> list[PolicyTest]: - out = [] - - for path_to_yaml in (TEST_DIR / "test_data" / policy_name).glob("**/*.yaml"): - if _is_skipped(path_to_yaml): - continue - - with path_to_yaml.open("r", encoding="utf-8") as file: - raw_test_data: NestedData = yaml.safe_load(file) - - # TODO(@MImmesberger): Remove this before merging this PR. - # https://github.com/iza-institute-of-labor-economics/gettsim/pull/884 - raw_test_data["inputs"], raw_test_data["outputs"] = get_test_data_as_tree( - raw_test_data - ) - - out.extend( - _get_policy_tests_from_raw_test_data( - raw_test_data=raw_test_data, - path_to_yaml=path_to_yaml, - ) - ) - - return out - - -def get_test_data_as_tree(test_data: NestedData) -> NestedData: - provided_inputs = test_data["inputs"].get("provided", {}) - assumed_inputs = test_data["inputs"].get("assumed", {}) - - unflattened_dict = {} # type: ignore[var-annotated] - unflattened_dict["inputs"] = {} - unflattened_dict["outputs"] = {} - - if provided_inputs: - unflattened_dict["inputs"]["provided"] = dt.unflatten_from_qual_names( - provided_inputs - ) - else: - unflattened_dict["inputs"]["provided"] = {} - if assumed_inputs: - unflattened_dict["inputs"]["assumed"] = dt.unflatten_from_qual_names( - assumed_inputs - ) - else: - unflattened_dict["inputs"]["assumed"] = {} - - unflattened_dict["outputs"] = dt.unflatten_from_qual_names(test_data["outputs"]) - - return unflattened_dict["inputs"], unflattened_dict["outputs"] - - -def _is_skipped(test_file: Path) -> bool: - return "skip" in test_file.stem or "skip" in test_file.parent.name - - -def _get_policy_tests_from_raw_test_data( - raw_test_data: NestedData, path_to_yaml: Path -) -> list[PolicyTest]: - """Get a list of PolicyTest objects from raw test data. - - Args: - raw_test_data: The raw test data. - path_to_yaml: The path to the YAML file. - - Returns: - A list of PolicyTest objects. - """ - test_info: NestedData = raw_test_data.get("info", {}) - inputs: NestedData = raw_test_data.get("inputs", {}) - input_tree: NestedData = dt.unflatten_from_tree_paths( - { - k: pd.Series(v) - for k, v in dt.flatten_to_tree_paths( - merge_trees(inputs.get("provided", {}), inputs.get("assumed", {})) - ).items() - } - ) - - expected_output_tree: NestedData = dt.unflatten_from_tree_paths( - { - k: pd.Series(v) - for k, v in dt.flatten_to_tree_paths( - raw_test_data.get("outputs", {}) - ).items() - } - ) - - date: datetime.date = to_datetime(path_to_yaml.parent.name) - - return [ - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree=expected_output_tree, - path=path_to_yaml, - date=date, - ) - ] diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 268418f8f8..207c891ff1 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -19,14 +19,13 @@ from _gettsim_tests import TEST_DIR from ttsim import ( - FunctionsAndDataOverlapWarning, + FunctionsAndDataColumnsOverlapWarning, GroupCreationFunction, PolicyFunction, - compute_taxes_and_transfers, group_creation_function, plot_dag, + policy_environment, policy_function, - set_up_policy_environment, ) COUNTER_TEST_EXECUTIONS = itertools.count() @@ -47,13 +46,12 @@ def test(*args: Any) -> None: __all__ = [ - "FunctionsAndDataOverlapWarning", + "FunctionsAndDataColumnsOverlapWarning", "GroupCreationFunction", "PolicyFunction", "__version__", - "compute_taxes_and_transfers", "group_creation_function", "plot_dag", + "policy_environment", "policy_function", - "set_up_policy_environment", ] diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index bfcd5c0e92..931a468261 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,5 +1,13 @@ +# ruff: noqa +# type: ignore from __future__ import annotations +from typing import Any + +import dags +import networkx as nx +import numpy as np + from ttsim.aggregation import AggType from ttsim.automatically_added_functions import create_time_conversion_functions from ttsim.column_objects_param_function import ( @@ -19,11 +27,45 @@ policy_input, ) from ttsim.compute_taxes_and_transfers import ( - FunctionsAndDataOverlapWarning, _add_derived_functions, - compute_taxes_and_transfers, + column_functions_with_processed_params_and_scalars, + column_results, + flat_policy_environment_with_derived_functions_and_without_overridden_functions, + nested_results, + qual_name_column_targets, + qual_name_data, + qual_name_data_columns, + qual_name_input_data, + qual_name_own_targets, + qual_name_param_targets, + qual_name_results, + qual_name_targets, + required_column_functions, + tax_transfer_dag, + tax_transfer_function, + top_level_namespace, +) +from ttsim.convert_nested_data import ( + results_df, + data_tree, + dataframe_to_nested_data, + nested_data_to_df_with_mapped_columns, +) +from ttsim.failures_and_warnings import ( + FunctionsAndDataColumnsOverlapWarning, + fail_if_active_periods_overlap, + fail_if_environment_is_invalid, + fail_if_group_ids_are_outside_top_level_namespace, + fail_if_any_paths_are_invalid, + fail_if_data_tree_is_invalid, + fail_if_foreign_keys_are_invalid_in_data, + fail_if_group_variables_are_not_constant_within_groups, + fail_if_root_nodes_are_missing, + fail_if_targets_are_not_in_policy_environment_or_data, + fail_if_targets_tree_is_invalid, + warn_if_functions_and_data_columns_overlap, + format_list_linewise, ) -from ttsim.convert_nested_data import dataframe_to_nested_data, nested_data_to_dataframe from ttsim.param_objects import ( ConsecutiveInt1dLookupTableParam, ConsecutiveInt1dLookupTableParamValue, @@ -40,14 +82,19 @@ piecewise_polynomial, ) from ttsim.plot_dag import plot_dag +from ttsim.loader import ( + orig_tree_with_column_objects_and_param_functions, + orig_tree_with_params, +) from ttsim.policy_environment import ( - OrigTreesWithFileNames, - active_tree, + active_tree_with_column_objects_and_param_functions, + active_tree_with_params, get_consecutive_int_1d_lookup_table_param_value, get_consecutive_int_2d_lookup_table_param_value, get_month_based_phase_inout_of_age_thresholds_param_value, get_year_based_phase_inout_of_age_thresholds_param_value, - set_up_policy_environment, + grouping_levels, + policy_environment, ) from ttsim.rounding import RoundingSpec from ttsim.shared import ( @@ -59,6 +106,228 @@ upsert_tree, ) + +def function_collection(): + return { + "active_tree_with_column_objects_and_param_functions": active_tree_with_column_objects_and_param_functions, + "active_tree_with_params": active_tree_with_params, + "column_functions_with_processed_params_and_scalars": column_functions_with_processed_params_and_scalars, + "column_results": column_results, + "fail_if_active_periods_overlap": fail_if_active_periods_overlap, + "fail_if_any_paths_are_invalid": fail_if_any_paths_are_invalid, + "fail_if_data_tree_is_invalid": fail_if_data_tree_is_invalid, + "fail_if_environment_is_invalid": fail_if_environment_is_invalid, + "fail_if_foreign_keys_are_invalid_in_data": fail_if_foreign_keys_are_invalid_in_data, + "fail_if_group_ids_are_outside_top_level_namespace": fail_if_group_ids_are_outside_top_level_namespace, + "fail_if_group_variables_are_not_constant_within_groups": fail_if_group_variables_are_not_constant_within_groups, + "fail_if_root_nodes_are_missing": fail_if_root_nodes_are_missing, + "fail_if_targets_are_not_in_policy_environment_or_data": fail_if_targets_are_not_in_policy_environment_or_data, + "fail_if_targets_tree_is_invalid": fail_if_targets_tree_is_invalid, + "flat_policy_environment_with_derived_functions_and_without_overridden_functions": flat_policy_environment_with_derived_functions_and_without_overridden_functions, + "grouping_levels": grouping_levels, + "data_tree": data_tree, + "nested_results": nested_results, + "orig_tree_with_column_objects_and_param_functions": orig_tree_with_column_objects_and_param_functions, + "orig_tree_with_params": orig_tree_with_params, + "policy_environment": policy_environment, + "qual_name_column_targets": qual_name_column_targets, + "qual_name_data": qual_name_data, + "qual_name_data_columns": qual_name_data_columns, + "qual_name_input_data": qual_name_input_data, + "qual_name_own_targets": qual_name_own_targets, + "qual_name_param_targets": qual_name_param_targets, + "qual_name_results": qual_name_results, + "qual_name_targets": qual_name_targets, + "results_df": results_df, + "required_column_functions": required_column_functions, + "tax_transfer_dag": tax_transfer_dag, + "tax_transfer_function": tax_transfer_function, + "top_level_namespace": top_level_namespace, + "warn_if_functions_and_data_columns_overlap": warn_if_functions_and_data_columns_overlap, + } + + +def main(inputs: dict[str, Any], targets: list[str] | None = None) -> dict[str, Any]: + """ + Main function that processes the inputs and returns the outputs. + """ + possible_targets = function_collection() + for key in inputs: + if key in function_collection(): + del possible_targets[key] + + # Collect all missing targets first + missing_targets = [] + for t in targets: + if t not in possible_targets: + missing_targets.append(t) + + # Raise error with all missing targets listed nicely + if missing_targets: + if len(missing_targets) == 1: + raise ValueError(f"Target '{missing_targets[0]}' does not exist.") + else: + targets_str = format_list_linewise(missing_targets) + raise ValueError(f"Targets '{targets_str}' do not exist.") + + dag = dags.create_dag( + functions=possible_targets, + targets=targets, + ) + draw_dag(dag) + f = dags.concatenate_functions( + dag=dag, + functions=possible_targets, + targets=targets, + return_type="dict", + enforce_signature=False, + set_annotations=False, + ) + return f(**inputs) + + +def draw_dag( + dag: nx.DiGraph, + output_path: str = "tax_transfer_dag.html", +) -> None: + """Draw the DAG and save it as an interactive HTML file. + + Parameters + ---------- + dag + The DAG to draw. + output_path + The path where to save the HTML file. + """ + import plotly.graph_objects as go + + # Use Graphviz's dot layout for proper DAG visualization + try: + # Try to use pygraphviz for better DAG layout + pos = nx.nx_agraph.pygraphviz_layout(dag, prog="dot", args="-Grankdir=LR") + except (ImportError, FileNotFoundError): + # Fallback to spring layout if pygraphviz is not available + print("Warning: pygraphviz not available, using spring layout") + pos = nx.spring_layout(dag, k=2, iterations=50) + # Rotate to make it left-to-right + pos = {node: (y, -x) for node, (x, y) in pos.items()} + + # Create edge traces with arrows + edge_traces = [] + annotations = [] + + for edge in dag.edges(): + x0, y0 = pos[edge[0]] + x1, y1 = pos[edge[1]] + + # Calculate the direction vector + dx = x1 - x0 + dy = y1 - y0 + length = np.sqrt(dx**2 + dy**2) + + if length > 0: + # Normalize the direction vector + dx = dx / length + dy = dy / length + + # Calculate start and end points with symmetric offsets + offset = 50 # Offset in pygraphviz coordinate units + x0 = x0 + dx * offset + y0 = y0 + dy * offset + x1 = x1 - dx * offset + y1 = y1 - dy * offset + + # Create the edge line + edge_trace = go.Scatter( + x=[x0, x1], + y=[y0, y1], + line=dict(width=1.5, color="#888"), + hoverinfo="none", + mode="lines", + ) + edge_traces.append(edge_trace) + + # Add arrow using Plotly annotation + annotations.append( + dict( + x=x1, + y=y1, + ax=x0, + ay=y0, + xref="x", + yref="y", + axref="x", + ayref="y", + arrowhead=2, + arrowsize=1.25, + arrowwidth=2, + arrowcolor="#888", + showarrow=True, + text="", + ) + ) + + # Create node trace + node_x = [] + node_y = [] + node_text = [] + node_colors = [] + + for node in dag.nodes(): + x, y = pos[node] + node_x.append(x) + node_y.append(y) + node_text.append(node) + + # Color nodes that start with "fail_" in pale red + if node.startswith("fail_"): + node_colors.append("#ffb3b3") # Pale red + else: + node_colors.append("#1f77b4") # Blue + + node_trace = go.Scatter( + x=node_x, + y=node_y, + mode="markers", + hoverinfo="text", + text=node_text, + marker=dict( + showscale=False, + color=node_colors, + size=25, + line=dict(width=2, color="white"), + ), + ) + + # Create the figure with specified canvas size (600x900) + fig = go.Figure( + data=edge_traces + [node_trace], + layout=go.Layout( + title="DAG Visualization", + titlefont_size=16, + showlegend=False, + hovermode="closest", + margin=dict(b=40, l=40, r=40, t=60), + width=1800, + height=1200, + annotations=annotations, + xaxis=dict( + showgrid=False, + zeroline=False, + showticklabels=False, + ), + yaxis=dict( + showgrid=False, + zeroline=False, + showticklabels=False, + ), + ), + ) + + # Save as HTML + fig.write_html(output_path) + + __all__ = [ "AggByGroupFunction", "AggByPIDFunction", @@ -68,9 +337,8 @@ "ConsecutiveInt2dLookupTableParamValue", "DictParam", "FKType", - "FunctionsAndDataOverlapWarning", + "FunctionsAndDataColumnsOverlapWarning", "GroupCreationFunction", - "OrigTreesWithFileNames", "ParamFunction", "ParamObject", "PiecewisePolynomialParam", @@ -82,10 +350,8 @@ "ScalarParam", "TimeConversionFunction", "_add_derived_functions", - "active_tree", "agg_by_group_function", "agg_by_p_id_function", - "compute_taxes_and_transfers", "create_time_conversion_functions", "dataframe_to_nested_data", "get_consecutive_int_1d_lookup_table_param_value", @@ -97,13 +363,13 @@ "insert_path_and_value", "join", "merge_trees", - "nested_data_to_dataframe", + "nested_data_to_df_with_mapped_columns", "param_function", "piecewise_polynomial", "plot_dag", + "policy_environment", "policy_function", "policy_input", - "set_up_policy_environment", "to_datetime", "upsert_path_and_value", "upsert_tree", diff --git a/src/ttsim/automatically_added_functions.py b/src/ttsim/automatically_added_functions.py index a6fa7af9d1..709e42695d 100644 --- a/src/ttsim/automatically_added_functions.py +++ b/src/ttsim/automatically_added_functions.py @@ -17,9 +17,11 @@ TimeConversionFunction, ) from ttsim.config import IS_JAX_INSTALLED +from ttsim.failures_and_warnings import ( + fail_if_multiple_time_units_for_same_base_name_and_group, +) from ttsim.param_objects import ScalarParam from ttsim.shared import ( - fail_if_multiple_time_units_for_same_base_name_and_group, get_base_name_and_grouping_suffix, get_re_pattern_for_all_time_units_and_groupings, get_re_pattern_for_specific_time_units_and_groupings, @@ -412,7 +414,7 @@ def _convertibles( def create_time_conversion_functions( qual_name_policy_environment: QualNamePolicyEnvironment, - data_columns: QualNameDataColumns, + qual_name_data_columns: QualNameDataColumns, groupings: tuple[str, ...], ) -> QualNameColumnFunctions: """ @@ -448,7 +450,7 @@ def create_time_conversion_functions( functions The functions dict with qualified function names as keys and functions as values. - data_columns + qual_name_data_columns The data columns, represented by qualified names. Returns @@ -486,7 +488,7 @@ def create_time_conversion_functions( converted_elements: dict[str, ColumnObject] = {} for bngs, inputs in bngs_to_time_conversion_inputs.items(): - for qual_name_data in data_columns: + for qual_name_data in qual_name_data_columns: # If base_name is in provided data, base time conversions on that. if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( base_name=bngs[0], @@ -561,14 +563,14 @@ def func(x: float) -> float: def create_agg_by_group_functions( column_functions: QualNameColumnFunctions, - data_columns: QualNameDataColumns, + qual_name_data_columns: QualNameDataColumns, targets: QualNameTargetList, groupings: tuple[str, ...], ) -> QualNameColumnFunctions: gp = group_pattern(groupings) all_functions_and_data = { **column_functions, - **dict.fromkeys(data_columns), + **dict.fromkeys(qual_name_data_columns), } potential_agg_by_group_function_names = { # Targets that end with a grouping suffix are potential aggregation targets. diff --git a/src/ttsim/column_objects_param_function.py b/src/ttsim/column_objects_param_function.py index 28eacb406e..352ffb6ba9 100644 --- a/src/ttsim/column_objects_param_function.py +++ b/src/ttsim/column_objects_param_function.py @@ -36,7 +36,7 @@ ) from ttsim.config import IS_JAX_INSTALLED from ttsim.rounding import RoundingSpec -from ttsim.shared import to_datetime, validate_date_range +from ttsim.shared import to_datetime from ttsim.vectorization import vectorize_function if TYPE_CHECKING: @@ -171,7 +171,7 @@ def _frozen_safe_update_wrapper(wrapper: object, wrapped: GenericCallable) -> No This is necessary because the wrapper is a frozen dataclass, so we cannot use the `functools.update_wrapper` function or `self.__signature__ = ...` - assigments in the `__post_init__` method. + assignments in the `__post_init__` method. Args: wrapper: The wrapper dataclass to update. @@ -732,7 +732,10 @@ def _convert_and_validate_dates( start_date = to_datetime(start_date) end_date = to_datetime(end_date) - validate_date_range(start_date, end_date) + if start_date > end_date: + raise ValueError( + f"The start date {start_date} must be before the end date {end_date}." + ) return start_date, end_date diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py index 22ff356ede..d66062bf54 100644 --- a/src/ttsim/compute_taxes_and_transfers.py +++ b/src/ttsim/compute_taxes_and_transfers.py @@ -2,13 +2,10 @@ import datetime import functools -import inspect -import warnings from typing import TYPE_CHECKING, Any import dags.tree as dt import networkx as nx -import pandas as pd from dags import concatenate_functions, create_dag, get_free_arguments from ttsim.automatically_added_functions import ( @@ -19,27 +16,24 @@ from ttsim.column_objects_param_function import ( ColumnFunction, ColumnObject, - FKType, ParamFunction, - PolicyInput, ) -from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np +from ttsim.failures_and_warnings import ( + fail_if_multiple_time_units_for_same_base_name_and_group, +) from ttsim.param_objects import ParamObject, RawParam -from ttsim.policy_environment import fail_if_environment_not_valid, grouping_levels +from ttsim.policy_environment import grouping_levels from ttsim.shared import ( - assert_valid_ttsim_pytree, - fail_if_multiple_time_units_for_same_base_name_and_group, - format_errors_and_warnings, - format_list_linewise, get_base_name_and_grouping_suffix, - get_name_of_group_by_id, get_re_pattern_for_all_time_units_and_groupings, group_pattern, merge_trees, ) if TYPE_CHECKING: + from collections.abc import Callable + from ttsim.typing import ( NestedData, NestedPolicyEnvironment, @@ -60,156 +54,139 @@ ) -def compute_taxes_and_transfers( - data_tree: NestedData, - policy_environment: NestedPolicyEnvironment, - targets_tree: NestedTargetDict, - rounding: bool = True, - debug: bool = False, - jit: bool = False, -) -> NestedData: - """Compute taxes and transfers. +def column_results( + qual_name_input_data: QualNameData, + tax_transfer_function: Callable[[QualNameData], QualNameData], +) -> QualNameData: + return tax_transfer_function(qual_name_input_data) - Parameters - ---------- - data_tree : NestedData - Data provided by the user. - environment: NestedPolicyEnvironment - The policy environment which contains all necessary functions and parameters. - targets_tree : NestedTargetDict | None - The targets tree. - rounding : bool, default True - Indicator for whether rounding should be applied as specified in the law. - debug : bool - If debug is 'True', `compute_taxes_and_transfers` returns the input data tree - along with the computed targets. - jit : bool - If jit is 'True', the function is compiled using JAX's JIT compilation. To use - this feature, JAX must be installed. - Returns - ------- - results : NestedData - The computed variables as a tree. +def qual_name_data(data_tree: NestedData) -> QualNameData: + return dt.flatten_to_qual_names(data_tree) - """ - # Check user inputs - _fail_if_targets_tree_not_valid(targets_tree) - _fail_if_data_tree_not_valid(data_tree) - fail_if_environment_not_valid(policy_environment) +def qual_name_data_columns(qual_name_data: QualNameData) -> set[str]: + return set(qual_name_data.keys()) - top_level_namespace = _get_top_level_namespace( - policy_environment=policy_environment, - time_units=tuple(TIME_UNIT_LABELS.keys()), - ) - # Check that all paths in the params tree are valid - dt.fail_if_paths_are_invalid( - functions=policy_environment, - data_tree=data_tree, - targets=targets_tree, - top_level_namespace=top_level_namespace, - ) - data = dt.flatten_to_qual_names(data_tree) - data_columns = set(data.keys()) - warn_if_elements_overridden_by_data( - policy_environment=policy_environment, - data_columns=data_columns, - ) - _flat_policy_environment_with_derived_functions_and_without_overridden_functions = ( - flat_policy_environment_with_derived_functions_and_without_overridden_functions( - data=data, - policy_environment=policy_environment, - targets_tree=targets_tree, - top_level_namespace=top_level_namespace, - ) - ) - _column_functions_and_processed_params_and_scalars = column_functions_with_processed_params_and_scalars( - flat_policy_environment_with_derived_functions_and_without_overridden_functions=_flat_policy_environment_with_derived_functions_and_without_overridden_functions, - ) - _required_column_functions = required_column_functions( - policy_environment_with_processed_params_and_scalars=_column_functions_and_processed_params_and_scalars, - rounding=rounding, - ) - # Super-ugly, will be refactored - all_targets = dt.qual_names(targets_tree) - function_targets = [t for t in all_targets if t in _required_column_functions] - param_targets = [ - t - for t in set(all_targets) - set(function_targets) - if t - in _flat_policy_environment_with_derived_functions_and_without_overridden_functions - ] - # Will just return these. - own_targets = set(all_targets) - set(function_targets) - set(param_targets) # noqa: F841 - - # Remove unnecessary elements from user-provided data. - input_data = _create_input_data_for_concatenated_function( - data=data, - functions=_required_column_functions, - function_targets=function_targets, - ) +def nested_results(qual_name_results: QualNameData) -> NestedData: + return dt.unflatten_from_qual_names(qual_name_results) - _fail_if_group_variables_not_constant_within_groups( - data=input_data, - groupings=grouping_levels(policy_environment), - ) - _fail_if_foreign_keys_are_invalid_in_data( - data=data, - input_data=input_data, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=_flat_policy_environment_with_derived_functions_and_without_overridden_functions, + +def qual_name_results( + column_results: QualNameData, + qual_name_param_targets: QualNameTargetList, + column_functions_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, + qual_name_own_targets: QualNameTargetList, + qual_name_data: QualNameData, + qual_name_targets: QualNameTargetList, +) -> QualNameData: + unordered = { + **column_results, + **{ + pt: column_functions_with_processed_params_and_scalars[pt] + for pt in qual_name_param_targets + }, + **{ot: qual_name_data[ot] for ot in qual_name_own_targets}, + } + return {k: unordered[k] for k in qual_name_targets} + + +def tax_transfer_dag( + required_column_functions: QualNameColumnFunctions, + qual_name_column_targets: QualNameTargetList, +) -> nx.DiGraph: + """Thin wrapper around `create_dag`.""" + return create_dag( + functions=required_column_functions, + targets=qual_name_column_targets, ) - if debug: - function_targets = sorted(_required_column_functions.keys()) - tax_transfer_function = concatenate_functions( - functions=_required_column_functions, - targets=list(function_targets), + +def tax_transfer_function( + tax_transfer_dag: nx.DiGraph, + required_column_functions: QualNameColumnFunctions, + qual_name_column_targets: QualNameTargetList, + # backend: numpy | jax, +) -> Callable[[QualNameData], QualNameData]: + """Returns a function that takes a dictionary of arrays and unpacks them as keyword arguments.""" + + ttf_with_keyword_args = concatenate_functions( + dag=tax_transfer_dag, + functions=required_column_functions, + targets=list(qual_name_column_targets), return_type="dict", aggregator=None, enforce_signature=True, set_annotations=False, ) - if jit: - if not IS_JAX_INSTALLED: - raise ImportError( - "JAX is not installed. Please install JAX to use JIT compilation." - ) - import jax - - static_args = { - argname: data_tree["p_id"].max() + 1 - for argname in inspect.signature(tax_transfer_function).parameters - if argname.endswith("_num_segments") - } - tax_transfer_function = functools.partial(tax_transfer_function, **static_args) - tax_transfer_function = jax.jit(tax_transfer_function) - column_results = tax_transfer_function(**input_data) - - results_tree = dt.unflatten_from_qual_names( - { - **column_results, - **{ - pt: _column_functions_and_processed_params_and_scalars[pt] - for pt in set(dt.qual_names(targets_tree)) - set(function_targets) - }, - } - ) + # if backend == jax: + # if not IS_JAX_INSTALLED: + # raise ImportError( + # "JAX is not installed. Please install JAX to use JIT compilation." + # ) + # import jax + + # static_args = { + # argname: data_tree["p_id"].max() + 1 + # for argname in inspect.signature(ttf_with_keyword_args).parameters + # if argname.endswith("_num_segments") + # } + # ttf_with_keyword_args=functools.partial(ttf_with_keyword_args, **static_args) + # ttf_with_keyword_args = jax.jit(ttf_with_keyword_args) + + def wrapper(qual_name_data: QualNameData) -> QualNameData: + return ttf_with_keyword_args(**qual_name_data) + + return wrapper + + +def qual_name_targets(targets_tree: NestedTargetDict) -> QualNameTargetList: + """All targets in their qualified name-representation.""" + return dt.qual_names(targets_tree) + + +def qual_name_column_targets( + required_column_functions: QualNameColumnFunctions, + qual_name_targets: QualNameTargetList, +) -> QualNameTargetList: + """All targets that are column functions.""" + return [t for t in qual_name_targets if t in required_column_functions] + + +def qual_name_param_targets( + flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, + qual_name_targets: QualNameTargetList, + qual_name_column_targets: QualNameTargetList, +) -> QualNameTargetList: + possible_targets = set(qual_name_targets) - set(qual_name_column_targets) + return [ + t + for t in qual_name_targets + if t in possible_targets + and t + in flat_policy_environment_with_derived_functions_and_without_overridden_functions + ] - if debug: - results_tree = merge_trees( - left=results_tree, - right=dt.unflatten_from_qual_names(input_data), - ) - return results_tree +def qual_name_own_targets( + qual_name_targets: QualNameTargetList, + qual_name_column_targets: QualNameTargetList, + qual_name_param_targets: QualNameTargetList, +) -> QualNameTargetList: + possible_targets = ( + set(qual_name_targets) + - set(qual_name_column_targets) + - set(qual_name_param_targets) + ) + return [t for t in qual_name_targets if t in possible_targets] def flat_policy_environment_with_derived_functions_and_without_overridden_functions( policy_environment: NestedPolicyEnvironment, - data: QualNameDataColumns, + qual_name_data: QualNameData, + qual_name_data_columns: QualNameDataColumns, targets_tree: NestedTargetDict, top_level_namespace: set[str], ) -> QualNamePolicyEnvironment: @@ -221,31 +198,30 @@ def flat_policy_environment_with_derived_functions_and_without_overridden_functi 3. Remove all functions that are overridden by data columns. """ - flat = remove_tree_logic_from_policy_environment( + flat = _remove_tree_logic_from_policy_environment( policy_environment=policy_environment, top_level_namespace=top_level_namespace, ) flat_with_derived = _add_derived_functions( qual_name_policy_environment=flat, targets=dt.qual_names(targets_tree), - data_columns=set(data.keys()), + qual_name_data_columns=qual_name_data_columns, groupings=grouping_levels(policy_environment), ) out = {} for n, f in flat_with_derived.items(): # Put scalar data into the policy environment, else skip the key - if n in data: - if isinstance(data[n], int | float | bool): - out[n] = data[n] + if n in qual_name_data: + if isinstance(qual_name_data[n], int | float | bool): + out[n] = qual_name_data[n] else: out[n] = f return out -def _get_top_level_namespace( +def top_level_namespace( policy_environment: NestedPolicyEnvironment, - time_units: tuple[str, ...], ) -> set[str]: """Get the top level namespace. @@ -260,6 +236,7 @@ def _get_top_level_namespace( The top level namespace. """ + time_units = tuple(TIME_UNIT_LABELS.keys()) direct_top_level_names = set(policy_environment.keys()) # Do not create variations for lower-level namespaces. @@ -299,7 +276,7 @@ def _get_top_level_namespace( return all_top_level_names -def remove_tree_logic_from_policy_environment( +def _remove_tree_logic_from_policy_environment( policy_environment: NestedPolicyEnvironment, top_level_namespace: set[str], ) -> QualNamePolicyEnvironment: @@ -319,7 +296,7 @@ def remove_tree_logic_from_policy_environment( def _add_derived_functions( qual_name_policy_environment: QualNamePolicyEnvironment, targets: QualNameTargetList, - data_columns: QualNameDataColumns, + qual_name_data_columns: QualNameDataColumns, groupings: tuple[str, ...], ) -> QualNameColumnFunctions: """Return a mapping of qualified names to functions operating on columns. @@ -353,7 +330,7 @@ def _add_derived_functions( # Create functions for different time units time_conversion_functions = create_time_conversion_functions( qual_name_policy_environment=qual_name_policy_environment, - data_columns=data_columns, + qual_name_data_columns=qual_name_data_columns, groupings=groupings, ) column_functions = { @@ -368,7 +345,7 @@ def _add_derived_functions( # Create aggregation functions by group. aggregate_by_group_functions = create_agg_by_group_functions( column_functions=column_functions, - data_columns=data_columns, + qual_name_data_columns=qual_name_data_columns, targets=targets, groupings=groupings, ) @@ -378,55 +355,12 @@ def _add_derived_functions( **aggregate_by_group_functions, } - _fail_if_targets_not_in_policy_environment_or_data( - policy_environment=out, - data_columns=data_columns, - targets=targets, - ) - return out -def _fail_if_targets_not_in_policy_environment_or_data( - policy_environment: QualNamePolicyEnvironment, - data_columns: QualNameDataColumns, - targets: QualNameTargetList, -) -> None: - """Fail if some target is not among functions. - - Parameters - ---------- - functions - Dictionary containing functions to build the DAG. - data_columns - The columns which are available in the data tree. - targets - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. - - Raises - ------ - ValueError - Raised if any member of `targets` is not among functions. - - """ - targets_not_in_policy_environment_or_data = [ - str(dt.tree_path_from_qual_name(n)) - for n in targets - if n not in policy_environment and n not in data_columns - ] - if targets_not_in_policy_environment_or_data: - formatted = format_list_linewise(targets_not_in_policy_environment_or_data) - msg = format_errors_and_warnings( - f"The following targets have no corresponding function:\n\n{formatted}" - ) - raise ValueError(msg) - - -def _create_input_data_for_concatenated_function( - data: QualNameData, - functions: QualNameColumnFunctions, - function_targets: QualNameTargetList, +def qual_name_input_data( + tax_transfer_dag: nx.DiGraph, + qual_name_data: QualNameData, ) -> QualNameData: """Create input data for the concatenated function. @@ -449,22 +383,14 @@ def _create_input_data_for_concatenated_function( Inputs for the concatenated function. """ - # Create dag using processed functions - dag = create_dag(functions=functions, targets=function_targets) - # Create root nodes tree + # Obtain root nodes root_nodes = nx.subgraph_view( - dag, filter_node=lambda n: dag.in_degree(n) == 0 + tax_transfer_dag, filter_node=lambda n: tax_transfer_dag.in_degree(n) == 0 ).nodes - _fail_if_root_nodes_are_missing( - functions=functions, - data=data, - root_nodes=root_nodes, - ) - - # Get only part of the data tree that is needed - return {k: np.array(v) for k, v in data.items() if k in root_nodes} + # Restrict the passed data to the subset that is actually used. + return {k: np.array(v) for k, v in qual_name_data.items() if k in root_nodes} def _apply_rounding(element: Any) -> Any: @@ -523,7 +449,7 @@ def column_functions_with_processed_params_and_scalars( def required_column_functions( - policy_environment_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, + column_functions_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, rounding: bool, ) -> QualNameColumnFunctions: """Partial parameters to functions such that they disappear from the DAG. @@ -542,7 +468,7 @@ def required_column_functions( """ processed_functions = {} - for name, _func in policy_environment_with_processed_params_and_scalars.items(): + for name, _func in column_functions_with_processed_params_and_scalars.items(): if isinstance(_func, ColumnFunction): func = _apply_rounding(_func) if rounding else _func partial_params = {} @@ -550,14 +476,14 @@ def required_column_functions( a for a in get_free_arguments(func) if not isinstance( - policy_environment_with_processed_params_and_scalars.get( + column_functions_with_processed_params_and_scalars.get( a, _DUMMY_COLUMN_OBJECT ), ColumnObject, ) ]: partial_params[arg] = ( - policy_environment_with_processed_params_and_scalars[arg] + column_functions_with_processed_params_and_scalars[arg] ) if partial_params: processed_functions[name] = functools.partial(func, **partial_params) @@ -565,257 +491,3 @@ def required_column_functions( processed_functions[name] = func return processed_functions - - -def _fail_if_targets_tree_not_valid(targets_tree: NestedTargetDict) -> None: - """ - Validate that the targets tree is a dictionary with string keys and None leaves. - """ - assert_valid_ttsim_pytree( - tree=targets_tree, - leaf_checker=lambda leaf: isinstance(leaf, (None | str)), - tree_name="targets_tree", - ) - - -def _fail_if_data_tree_not_valid(data_tree: NestedData) -> None: - """ - Validate that the data tree is a dictionary with string keys and pd.Series or - np.ndarray leaves. - """ - assert_valid_ttsim_pytree( - tree=data_tree, - leaf_checker=lambda leaf: isinstance(leaf, int | pd.Series | np.ndarray), - tree_name="data_tree", - ) - _fail_if_p_id_is_non_unique(data_tree) - - -def _fail_if_group_variables_not_constant_within_groups( - data: QualNameData, - groupings: tuple[str, ...], -) -> None: - """ - Check that group variables are constant within each group. - - Parameters - ---------- - data - Dictionary of data. - groupings - The groupings available in the policy environment. - """ - faulty_data_columns = [] - - for name, data_column in data.items(): - group_by_id = get_name_of_group_by_id( - target_name=name, - groupings=groupings, - ) - if group_by_id in data: - group_by_id_series = pd.Series(data[group_by_id]) - leaf_series = pd.Series(data_column) - unique_counts = leaf_series.groupby(group_by_id_series).nunique( - dropna=False - ) - if not (unique_counts == 1).all(): - faulty_data_columns.append(name) - - if faulty_data_columns: - formatted = format_list_linewise(faulty_data_columns) - msg = format_errors_and_warnings( - f"""The following data inputs do not have a unique value within - each group defined by the provided grouping IDs: - - {formatted} - - To fix this error, assign the same value to each group. - """ - ) - raise ValueError(msg) - - -def _fail_if_p_id_is_non_unique(data_tree: NestedData) -> None: - """Check that pid is unique.""" - p_id = data_tree.get("p_id", None) - if p_id is None: - raise ValueError("The input data must contain the p_id.") - - # Check for non-unique p_ids - p_id_counts: dict[int, int] = {} - # Need the map because Jax loop items are 1-element arrays. - for i in map(int, p_id): - if i in p_id_counts: - p_id_counts[i] += 1 - else: - p_id_counts[i] = 1 - - non_unique_p_ids = [i for i, count in p_id_counts.items() if count > 1] - - if non_unique_p_ids: - message = ( - f"The following p_ids are non-unique in the input data:{non_unique_p_ids}" - ) - raise ValueError(message) - - -def _fail_if_foreign_keys_are_invalid_in_data( - data: QualNameData, - input_data: QualNameData, - flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, -) -> None: - """ - Check that all foreign keys are valid. - - Foreign keys must point to an existing `p_id` in the input data and must not refer - to the `p_id` of the same row. - """ - - valid_ids = set(data["p_id"].tolist()) | {-1} - relevant_objects = { - k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() - if isinstance(v, PolicyInput | ColumnFunction) - } - - for fk_name, fk in relevant_objects.items(): - if fk.foreign_key_type == FKType.IRRELEVANT: - continue - elif fk_name in input_data: - path = dt.tree_path_from_qual_name(fk_name) - # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in input_data[fk_name].tolist()): - message = format_errors_and_warnings( - f""" - For {path}, the following are not a valid p_id in the input - data: {[i for i in input_data[fk_name] if i not in valid_ids]}. - """ - ) - raise ValueError(message) - - if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: - equal_to_pid_in_same_row = [ - i - for i, j in zip(input_data[fk_name].tolist(), data["p_id"].tolist()) - if i == j - ] - if any(equal_to_pid_in_same_row): - message = format_errors_and_warnings( - f""" - For {path}, the following are equal to the p_id in the same - row: {equal_to_pid_in_same_row}. - """ - ) - raise ValueError(message) - - -def warn_if_elements_overridden_by_data( - policy_environment: NestedPolicyEnvironment, - data_columns: QualNameDataColumns, -) -> None: - """Warn if functions are overridden by data.""" - overridden_elements = sorted( - { - col - for col in data_columns - if col in dt.flatten_to_qual_names(policy_environment) - } - ) - if len(overridden_elements) > 0: - warnings.warn( - FunctionsAndDataOverlapWarning(overridden_elements), - stacklevel=3, - ) - - -class FunctionsAndDataOverlapWarning(UserWarning): - """ - Warning that functions which compute columns overlap with existing columns. - - Parameters - ---------- - columns_overriding_functions : set[str] - Names of columns in the data that override hard-coded functions. - """ - - def __init__(self, columns_overriding_functions: list[str]) -> None: - n_cols = len(columns_overriding_functions) - if n_cols == 1: - first_part = format_errors_and_warnings("Your data provides the column:") - second_part = format_errors_and_warnings( - """ - This is already present among the hard-coded functions of the taxes and - transfers system. If you want this data column to be used instead of - calculating it within TTSIM you need not do anything. If you want this - data column to be calculated by hard-coded functions, remove it from the - *data* you pass to TTSIM. You need to pick one option for each column - that appears in the list above. - """ - ) - else: - first_part = format_errors_and_warnings("Your data provides the columns:") - second_part = format_errors_and_warnings( - """ - These are already present among the hard-coded functions of the taxes - and transfers system. If you want a data column to be used instead of - calculating it within TTSIM you do not need to do anything. If you - want data columns to be calculated by hard-coded functions, remove them - from the *data* you pass to TTSIM. You need to pick one option for - each column that appears in the list above. - """ - ) - formatted = format_list_linewise(columns_overriding_functions) - how_to_ignore = format_errors_and_warnings( - """ - If you want to ignore this warning, add the following code to your script - before calling TTSIM: - - import warnings - from ttsim import FunctionsAndDataOverlapWarning - - warnings.filterwarnings( - "ignore", - category=FunctionsAndDataOverlapWarning - ) - """ - ) - super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") - - -def _fail_if_root_nodes_are_missing( - functions: QualNameColumnFunctions, - data: QualNameData, - root_nodes: list[str], -) -> None: - """Fail if root nodes are missing. - - Fails if there are root nodes in the DAG (i.e. nodes without predecessors that do - not depend on parameters only) that are not present in the data tree. - - Parameters - ---------- - functions - Dictionary of functions that are overridden by data. - root_nodes - List of root nodes. - data - Dictionary of data. - - Raises - ------ - ValueError - If root nodes are missing. - """ - missing_nodes = [ - node - for node in root_nodes - if node not in functions - and node not in data - and not node.endswith("_num_segments") - ] - - if missing_nodes: - formatted = format_list_linewise( - [str(dt.tree_path_from_qual_name(mn)) for mn in missing_nodes] - ) - raise ValueError(f"The following data columns are missing.\n{formatted}") diff --git a/src/ttsim/convert_nested_data.py b/src/ttsim/convert_nested_data.py index 35adc7814c..1e3d4d5f8a 100644 --- a/src/ttsim/convert_nested_data.py +++ b/src/ttsim/convert_nested_data.py @@ -7,42 +7,110 @@ import optree import pandas as pd -from ttsim.shared import format_errors_and_warnings, format_list_linewise +from ttsim.failures_and_warnings import format_errors_and_warnings, format_list_linewise if TYPE_CHECKING: from ttsim.typing import NestedData, NestedStrings, QualNameData -def nested_data_to_dataframe( - nested_data_with_p_id: NestedData, - nested_data_paths_to_outputs_df_columns: NestedStrings, +def results_df( + nested_results: NestedData, + data_tree: NestedData, + nested_outputs_df_column_names: NestedStrings, +) -> pd.DataFrame: + """The results DataFrame with mapped column names. + + Args: + nested_results: + The results of a TTSIM run. + data_tree: + The data tree of the TTSIM run. + nested_outputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + + Returns: + A DataFrame. + """ + return nested_data_to_df_with_mapped_columns( + nested_data_to_convert=nested_results, + nested_outputs_df_column_names=nested_outputs_df_column_names, + data_with_p_id=data_tree, + ) + + +def data_tree( + data_df: pd.DataFrame, + nested_inputs_df_column_names: NestedStrings, +) -> NestedData: + """The input DataFrame as a nested data structure. + + Args: + data_df: + The input DataFrame. + nested_inputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + + Returns: + A nested data structure. + """ + return dataframe_to_nested_data( + df=data_df, + inputs_tree_to_df_columns=nested_inputs_df_column_names, + ) + + +def nested_data_to_df_with_nested_columns( + nested_data_to_convert: NestedData, + data_with_p_id: NestedData | QualNameData, ) -> pd.DataFrame: """Convert a nested data structure to a DataFrame. Args: - nested_data_with_p_id: + nested_data_to_convert: A nested data structure. - nested_data_paths_to_outputs_df_columns: - A tree that maps paths (sequence of keys) to data columns names. + data_with_p_id: + Some data structure with a "p_id" column. Returns: A DataFrame. """ - paths_to_data = dt.flatten_to_tree_paths(nested_data_with_p_id) - paths_to_column_names = dt.flatten_to_tree_paths( - nested_data_paths_to_outputs_df_columns + flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) + + return pd.DataFrame( + flat_data_to_convert, index=pd.Index(data_with_p_id["p_id"], name="p_id") ) - _fail_if_data_paths_are_missing_in_paths_to_column_names( - available_paths=list(paths_to_column_names.keys()), - required_paths=list(paths_to_data.keys()), + +def nested_data_to_df_with_mapped_columns( + nested_data_to_convert: NestedData, + nested_outputs_df_column_names: NestedStrings, + data_with_p_id: NestedData | QualNameData, +) -> pd.DataFrame: + """Convert a nested data structure to a DataFrame. + + Args: + nested_data_to_convert: + A nested data structure. + nested_outputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + data_with_p_id: + Some data structure with a "p_id" column. + + Returns: + A DataFrame. + """ + flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) + flat_df_columns = dt.flatten_to_tree_paths(nested_outputs_df_column_names) + + fail_if_data_paths_are_missing_in_paths_to_column_names( + available_paths=list(flat_df_columns.keys()), + required_paths=list(flat_data_to_convert.keys()), ) - _fail_if_incompatible_objects_in_nested_data(paths_to_data) + fail_if_incompatible_objects_in_nested_data(flat_data_to_convert) - p_id_array = paths_to_data.pop(("p_id",)) return pd.DataFrame( - {paths_to_column_names[path]: data for path, data in paths_to_data.items()}, - index=pd.Index(p_id_array, name="p_id"), + {flat_df_columns[path]: data for path, data in flat_data_to_convert.items()}, + index=pd.Index(data_with_p_id["p_id"], name="p_id"), ) @@ -55,8 +123,8 @@ def dataframe_to_nested_data( Args ---- inputs_tree_to_df_columns: - A nested dictionary that defines the structure of the output tree. Keys - are strings that define the nested structure. Values can be: + A nested dictionary that defines the structure of the inputs tree. The + elements of the tree paths are strings. Leaves can be: - Strings that reference column names in the DataFrame. - Numeric or boolean values (which will be broadcasted to match the @@ -121,7 +189,7 @@ def dataframe_to_nested_data( return dt.unflatten_from_qual_names(name_to_input_series) -def _fail_if_incompatible_objects_in_nested_data( +def fail_if_incompatible_objects_in_nested_data( paths_to_data: QualNameData, ) -> None: """Fail if the nested data contains incompatible objects.""" @@ -149,7 +217,7 @@ def _fail_if_incompatible_objects_in_nested_data( raise TypeError(msg) -def _fail_if_data_paths_are_missing_in_paths_to_column_names( +def fail_if_data_paths_are_missing_in_paths_to_column_names( available_paths: list[str], required_paths: list[str], ) -> None: diff --git a/src/ttsim/failures_and_warnings.py b/src/ttsim/failures_and_warnings.py new file mode 100644 index 0000000000..3c305aadaa --- /dev/null +++ b/src/ttsim/failures_and_warnings.py @@ -0,0 +1,719 @@ +from __future__ import annotations + +import datetime +import itertools +import textwrap +import warnings +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any + +import dags.tree as dt +import networkx as nx +import pandas as pd + +from ttsim.column_objects_param_function import ( + DEFAULT_END_DATE, + ColumnFunction, + ColumnObject, + FKType, + ParamFunction, + PolicyInput, +) +from ttsim.config import numpy_or_jax as np +from ttsim.param_objects import ParamObject +from ttsim.shared import get_name_of_group_by_id + +if TYPE_CHECKING: + from ttsim.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + GenericCallable, + NestedColumnObjectsParamFunctions, + NestedData, + NestedPolicyEnvironment, + NestedTargetDict, + OrigParamSpec, + QualNameData, + QualNameDataColumns, + QualNamePolicyEnvironment, + QualNameTargetList, + ) + + +class KeyErrorMessage(str): + """Subclass str to allow for line breaks in KeyError messages.""" + + __slots__ = () + + def __repr__(self) -> str: + return str(self) + + +class ConflictingActivePeriodsError(Exception): + def __init__( + self, + affected_column_objects: list[ColumnObject], + path: tuple[str, ...], + overlap_start: datetime.date, + overlap_end: datetime.date, + ) -> None: + self.affected_column_objects = affected_column_objects + self.path = path + self.overlap_start = overlap_start + self.overlap_end = overlap_end + + def __str__(self) -> str: + overlapping_objects = [ + obj.__getattribute__("original_function_name") + for obj in self.affected_column_objects + if obj + ] + return f""" + Functions with path + + {self.path} + + have overlapping start and end dates. The following functions are affected: + + { + ''' + '''.join(overlapping_objects) + } + + Overlap from {self.overlap_start} to {self.overlap_end}.""" + + +class FunctionsAndDataColumnsOverlapWarning(UserWarning): + """ + Warning that functions which compute columns overlap with existing columns. + + Parameters + ---------- + columns_overriding_functions : set[str] + Names of columns in the data that override hard-coded functions. + """ + + def __init__(self, columns_overriding_functions: list[str]) -> None: + n_cols = len(columns_overriding_functions) + if n_cols == 1: + first_part = format_errors_and_warnings("Your data provides the column:") + second_part = format_errors_and_warnings( + """ + This is already present among the hard-coded functions of the taxes and + transfers system. If you want this data column to be used instead of + calculating it within TTSIM you need not do anything. If you want this + data column to be calculated by hard-coded functions, remove it from the + *data* you pass to TTSIM. You need to pick one option for each column + that appears in the list above. + """ + ) + else: + first_part = format_errors_and_warnings("Your data provides the columns:") + second_part = format_errors_and_warnings( + """ + These are already present among the hard-coded functions of the taxes + and transfers system. If you want a data column to be used instead of + calculating it within TTSIM you do not need to do anything. If you + want data columns to be calculated by hard-coded functions, remove them + from the *data* you pass to TTSIM. You need to pick one option for + each column that appears in the list above. + """ + ) + formatted = format_list_linewise(columns_overriding_functions) + how_to_ignore = format_errors_and_warnings( + """ + If you want to ignore this warning, add the following code to your script + before calling TTSIM: + + import warnings + from ttsim import FunctionsAndDataColumnsOverlapWarning + + warnings.filterfilters( + "ignore", + category=FunctionsAndDataColumnsOverlapWarning + ) + """ + ) + super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") + + +@dataclass(frozen=True) +class _ParamWithActivePeriod(ParamObject): + """A ParamObject object which mimics a ColumnObject regarding active periods. + + Only used here for checking overlap. + """ + + original_function_name: str + + +def assert_valid_ttsim_pytree( + tree: Any, leaf_checker: GenericCallable, tree_name: str +) -> None: + """ + Recursively assert that a pytree meets the following conditions: + - The tree is a dictionary. + - All keys are strings. + - All leaves satisfy a provided condition (leaf_checker). + + Parameters + ---------- + tree : Any + The tree to validate. + leaf_checker : GenericCallable + A function that takes a leaf and returns True if it is valid. + tree_name : str + The name of the tree (used for error messages). + + Raises + ------ + TypeError + If any branch or leaf does not meet the expected requirements. + """ + + def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: + def format_key_path(key_tuple: tuple[str, ...]) -> str: + return "".join(f"[{k}]" for k in key_tuple) + + if not isinstance(subtree, dict): + path_str = format_key_path(current_key) + msg = format_errors_and_warnings( + f"{tree_name}{path_str} must be a dict, got {type(subtree)}." + ) + raise TypeError(msg) + + for key, value in subtree.items(): + new_key_path = (*current_key, key) + if not isinstance(key, str): + msg = format_errors_and_warnings( + f"Key {key} in {tree_name}{format_key_path(current_key)} must be a " + f"string but got {type(key)}." + ) + raise TypeError(msg) + if isinstance(value, dict): + _assert_valid_ttsim_pytree(value, new_key_path) + else: + if not leaf_checker(value): + msg = format_errors_and_warnings( + f"Leaf at {tree_name}{format_key_path(new_key_path)} is " + f"invalid: got {value} of type {type(value)}." + ) + raise TypeError(msg) + + _assert_valid_ttsim_pytree(tree, current_key=()) + + +def fail_if_active_periods_overlap( + orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, + orig_tree_with_params: FlatOrigParamSpecs, +) -> None: + """Fail because active periods of objects / parameters overlap. + + Checks that objects or parameters with the same tree path / qualified name are not + active at the same time. + + Raises + ------ + ConflictingActivePeriodsError + If multiple objects and/or parameters with the same leaf name are active at the + same time. + """ + # Create mapping from leaf names to objects. + overlap_checker: dict[ + tuple[str, ...], list[ColumnObject | ParamFunction | _ParamWithActivePeriod] + ] = {} + for orig_path, obj in orig_tree_with_column_objects_and_param_functions.items(): + path = (*orig_path[:-2], obj.leaf_name) + if path in overlap_checker: + overlap_checker[path].append(obj) + else: + overlap_checker[path] = [obj] + + for orig_path, obj in orig_tree_with_params.items(): + path = (*orig_path[:-2], orig_path[-1]) + if path in overlap_checker: + overlap_checker[path].extend( + _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]) + ) + else: + overlap_checker[path] = _param_with_active_periods( + param_spec=obj, leaf_name=orig_path[-1] + ) + + # Check for overlapping start and end dates for time-dependent functions. + for path, objects in overlap_checker.items(): + active_period = [(f.start_date, f.end_date) for f in objects] + for (start1, end1), (start2, end2) in itertools.combinations(active_period, 2): + if start1 <= end2 and start2 <= end1: + raise ConflictingActivePeriodsError( + affected_column_objects=objects, + path=path, + overlap_start=max(start1, start2), + overlap_end=min(end1, end2), + ) + + +def fail_if_any_paths_are_invalid( + policy_environment: NestedPolicyEnvironment, + data_tree: NestedData, + targets_tree: NestedTargetDict, + top_level_namespace: set[str], +) -> None: + """Thin wrapper around `dt.fail_if_paths_are_invalid`.""" + return dt.fail_if_paths_are_invalid( + functions=policy_environment, + data_tree=data_tree, + targets=targets_tree, + top_level_namespace=top_level_namespace, + ) + + +def fail_if_data_paths_are_missing_in_paths_to_column_names( + available_paths: list[str], + required_paths: list[str], +) -> None: + """Fail if the data paths are missing in the paths to column names.""" + missing_paths = [ + str(path) + for path in required_paths + if path not in available_paths and path != ("p_id",) + ] + if missing_paths: + msg = format_errors_and_warnings( + "Converting the nested data to a DataFrame failed because the following " + "paths are not mapped to a column name: " + f"{format_list_linewise(list(missing_paths))}" + ) + raise ValueError(msg) + + +def fail_if_data_tree_is_invalid(data_tree: NestedData) -> None: + """ + Validate the basic structure of the data tree. + + 1. It must be is a dictionary with string keys and Series or Array leaves. + 2. It must contain the `p_id` column. + 3. Each element of `p_id` must uniquely identify a row. + + Parameters + ---------- + data_tree + The data tree. + + Raises + ------ + ValueError + If any of the above conditions is not met. + """ + assert_valid_ttsim_pytree( + tree=data_tree, + leaf_checker=lambda leaf: isinstance(leaf, int | pd.Series | np.ndarray), + tree_name="data_tree", + ) + p_id = data_tree.get("p_id", None) + if p_id is None: + raise ValueError("The input data must contain the `p_id` column.") + + # Check for non-unique p_ids + p_id_counts: dict[int, int] = {} + # Need the map because Jax loop items are 1-element arrays. + for i in map(int, p_id): + if i in p_id_counts: + p_id_counts[i] += 1 + else: + p_id_counts[i] = 1 + + non_unique_p_ids = [i for i, count in p_id_counts.items() if count > 1] + + if non_unique_p_ids: + message = ( + "The following `p_id`s are not unique in the input data:\n\n" + f"{non_unique_p_ids}\n\n" + ) + raise ValueError(message) + + +def fail_if_environment_is_invalid(policy_environment: NestedPolicyEnvironment) -> None: + """Validate that the environment is a pytree with supported types.""" + assert_valid_ttsim_pytree( + tree=policy_environment, + leaf_checker=lambda leaf: isinstance( + leaf, ColumnObject | ParamFunction | ParamObject + ), + tree_name="policy_environment", + ) + + +def fail_if_foreign_keys_are_invalid_in_data( + qual_name_input_data: QualNameData, + qual_name_data: QualNameData, + flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, +) -> None: + """ + Check that all foreign keys are valid. + + Foreign keys must point to an existing `p_id` in the input data and must not refer + to the `p_id` of the same row. + + We need qual_name_data because we cannot guarantee that `p_id` is present in the + input data. + """ + + valid_ids = set(qual_name_data["p_id"].tolist()) | {-1} + relevant_objects = { + k: v + for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + if isinstance(v, PolicyInput | ColumnFunction) + } + + for fk_name, fk in relevant_objects.items(): + if fk.foreign_key_type == FKType.IRRELEVANT: + continue + elif fk_name in qual_name_input_data: + path = dt.tree_path_from_qual_name(fk_name) + # Referenced `p_id` must exist in the input data + if not all(i in valid_ids for i in qual_name_input_data[fk_name].tolist()): + message = format_errors_and_warnings( + f""" + For {path}, the following are not a valid p_id in the input + data: {[i for i in qual_name_input_data[fk_name] if i not in valid_ids]}. + """ + ) + raise ValueError(message) + + if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: + equal_to_pid_in_same_row = [ + i + for i, j in zip( + qual_name_input_data[fk_name].tolist(), + qual_name_data["p_id"].tolist(), + ) + if i == j + ] + if any(equal_to_pid_in_same_row): + message = format_errors_and_warnings( + f""" + For {path}, the following are equal to the p_id in the same + row: {equal_to_pid_in_same_row}. + """ + ) + raise ValueError(message) + + +def fail_if_group_ids_are_outside_top_level_namespace( + policy_environment: NestedPolicyEnvironment, +) -> None: + """Fail if group ids are outside the top level namespace.""" + group_ids_outside_top_level_namespace = { + tree_path + for tree_path in dt.flatten_to_tree_paths(policy_environment) + if len(tree_path) > 1 and tree_path[-1].endswith("_id") + } + if group_ids_outside_top_level_namespace: + raise ValueError( + "Group identifiers must live in the top-level namespace. Got:\n\n" + f"{group_ids_outside_top_level_namespace}\n\n" + "To fix this error, move the group identifiers to the top-level namespace." + ) + + +def fail_if_group_variables_are_not_constant_within_groups( + qual_name_input_data: QualNameData, + grouping_levels: tuple[str, ...], +) -> None: + """ + Check that group variables are constant within each group. + + Parameters + ---------- + data + Dictionary of data. + groupings + The groupings available in the policy environment. + """ + faulty_data_columns = [] + + for name, data_column in qual_name_input_data.items(): + group_by_id = get_name_of_group_by_id( + target_name=name, + groupings=grouping_levels, + ) + if group_by_id in qual_name_input_data: + group_by_id_series = pd.Series(qual_name_input_data[group_by_id]) + leaf_series = pd.Series(data_column) + unique_counts = leaf_series.groupby(group_by_id_series).nunique( + dropna=False + ) + if not (unique_counts == 1).all(): + faulty_data_columns.append(name) + + if faulty_data_columns: + formatted = format_list_linewise(faulty_data_columns) + msg = format_errors_and_warnings( + f"""The following data inputs do not have a unique value within + each group defined by the provided grouping IDs: + + {formatted} + + To fix this error, assign the same value to each group. + """ + ) + raise ValueError(msg) + + +def fail_if_incompatible_objects_in_nested_data( + paths_to_data: QualNameData, +) -> None: + """Fail if the nested data contains incompatible objects.""" + _numeric_types = (int, float, bool, np.integer, np.floating, np.bool_) + + faulty_paths = [] + for path, data in paths_to_data.items(): + if isinstance(data, (pd.Series, np.ndarray, list)): + if all(isinstance(item, _numeric_types) for item in data): + continue + else: + faulty_paths.append(str(path)) + elif isinstance(data, _numeric_types): + continue + else: + faulty_paths.append(str(path)) + if faulty_paths: + msg = format_errors_and_warnings( + "The data returned contains objects that cannot be cast to " + "a pandas.DataFrame column. Make sure that the requested targets return " + "scalars (int, bool, float - or their numpy equivalents) only." + "The following paths contain non-scalar objects: " + f"{format_list_linewise(faulty_paths)}" + ) + raise TypeError(msg) + + +def fail_if_multiple_time_units_for_same_base_name_and_group( + base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], +) -> None: + invalid = { + b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 + } + if invalid: + raise ValueError(f"Multiple time units for base names: {invalid}") + + +def fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( + functions_tree: NestedColumnObjectsParamFunctions, +) -> None: + """Raise error if a PolicyFunction does not have the same leaf name as the last + branch element of the tree path. + """ + + for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): + if tree_path[-1] != function.leaf_name: + raise KeyError( + f""" + The name of the last branch element of the functions tree must be the + same as the leaf name of the PolicyFunction. The tree path {tree_path} + is not compatible with the PolicyFunction {function.leaf_name}. + """ + ) + + +def fail_if_root_nodes_are_missing( + tax_transfer_dag: nx.DiGraph, + qual_name_data: QualNameData, +) -> None: + """Fail if root nodes are missing. + + Parameters + ---------- + tax_transfer_dag + The DAG of taxes and transfers functions. + qual_name_data + The data tree in qualified name representation. + + Raises + ------ + ValueError + If root nodes are missing. + """ + + # Obtain root nodes + root_nodes = nx.subgraph_view( + tax_transfer_dag, filter_node=lambda n: tax_transfer_dag.in_degree(n) == 0 + ).nodes + + missing_nodes = [ + node + for node in root_nodes + if node not in qual_name_data and not node.endswith("_num_segments") + ] + + if missing_nodes: + formatted = format_list_linewise( + [str(dt.tree_path_from_qual_name(mn)) for mn in missing_nodes] + ) + raise ValueError(f"The following data columns are missing.\n{formatted}") + + +def fail_if_targets_are_not_in_policy_environment_or_data( + policy_environment: QualNamePolicyEnvironment, + qual_name_data_columns: QualNameDataColumns, + qual_name_targets: QualNameTargetList, +) -> None: + """Fail if some target is not among functions. + + Parameters + ---------- + functions + Dictionary containing functions to build the DAG. + qual_name_data_columns + The columns which are available in the data tree. + targets + The targets which should be computed. They limit the DAG in the way that only + ancestors of these nodes need to be considered. + + Raises + ------ + ValueError + Raised if any member of `targets` is not among functions. + + """ + targets_not_in_policy_environment_or_data = [ + str(dt.tree_path_from_qual_name(n)) + for n in qual_name_targets + if n not in policy_environment and n not in qual_name_data_columns + ] + if targets_not_in_policy_environment_or_data: + formatted = format_list_linewise(targets_not_in_policy_environment_or_data) + msg = format_errors_and_warnings( + f"The following targets have no corresponding function:\n\n{formatted}" + ) + raise ValueError(msg) + + +def fail_if_targets_tree_is_invalid(targets_tree: NestedTargetDict) -> None: + """ + Validate that the targets tree is a dictionary with string keys and None leaves. + """ + assert_valid_ttsim_pytree( + tree=targets_tree, + leaf_checker=lambda leaf: isinstance(leaf, (None | str)), + tree_name="targets_tree", + ) + + +def format_errors_and_warnings(text: str, width: int = 79) -> str: + """Format our own exception messages and warnings by dedenting paragraphs and + wrapping at the specified width. Mainly required because of messages are written as + part of indented blocks in our source code. + + Parameters + ---------- + text : str + The text which can include multiple paragraphs separated by two newlines. + width : int + The text will be wrapped by `width` characters. + + Returns + ------- + Correctly dedented, wrapped text. + + """ + text = text.lstrip("\n") + paragraphs = text.split("\n\n") + wrapped_paragraphs = [] + for paragraph in paragraphs: + dedented_paragraph = textwrap.dedent(paragraph) + wrapped_paragraph = textwrap.fill(dedented_paragraph, width=width) + wrapped_paragraphs.append(wrapped_paragraph) + + formatted_text = "\n\n".join(wrapped_paragraphs) + + return formatted_text + + +def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, unused-ignore] + formatted_list = '",\n "'.join(some_list) + return textwrap.dedent( + """ + [ + "{formatted_list}", + ] + """ + ).format(formatted_list=formatted_list) + + +def warn_if_functions_and_data_columns_overlap( + policy_environment: NestedPolicyEnvironment, + qual_name_data_columns: QualNameDataColumns, +) -> None: + """Warn if functions are overridden by data.""" + overridden_elements = sorted( + { + col + for col in qual_name_data_columns + if col in dt.flatten_to_qual_names(policy_environment) + } + ) + if len(overridden_elements) > 0: + warnings.warn( + FunctionsAndDataColumnsOverlapWarning(overridden_elements), + stacklevel=3, + ) + + +def _param_with_active_periods( + param_spec: OrigParamSpec, + leaf_name: str, +) -> list[_ParamWithActivePeriod]: + """Return parameter with active periods.""" + + def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, Any]: + """Remove note and reference from a parameter specification.""" + entry.pop("note", None) + entry.pop("reference", None) + return entry + + relevant = sorted( + [key for key in param_spec if isinstance(key, datetime.date)], + reverse=True, + ) + if not relevant: + raise ValueError(f"No relevant dates found for {param_spec}") + + params_header = { + "name": param_spec["name"], + "description": param_spec["description"], + "unit": param_spec["unit"], + "reference_period": param_spec["reference_period"], + } + out = [] + start_date: datetime.date | None = None + end_date = DEFAULT_END_DATE + for date in relevant: + if _remove_note_and_reference(param_spec[date]): + start_date = date + else: + if start_date: + out.append( + _ParamWithActivePeriod( + leaf_name=leaf_name, + start_date=start_date, + end_date=end_date, + original_function_name=leaf_name, + **params_header, + ) + ) + start_date = None + end_date = date - datetime.timedelta(days=1) + if start_date: + out.append( + _ParamWithActivePeriod( + leaf_name=leaf_name, + original_function_name=leaf_name, + start_date=start_date, + end_date=end_date, + **params_header, + ) + ) + + return out diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 064397c747..5447e2620e 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -19,10 +19,8 @@ _add_derived_functions, required_column_functions, ) -from ttsim.shared import ( - format_list_linewise, - partition_tree_by_reference_tree, -) +from ttsim.failures_and_warnings import format_list_linewise +from ttsim.shared import partition_tree_by_reference_tree if TYPE_CHECKING: from ttsim.typing import NestedPolicyEnvironment @@ -116,7 +114,7 @@ def plot_dag( ) processed_functions = required_column_functions( - policy_environment_with_processed_params_and_scalars=functions_with_rounding_specs, # noqa: F821 + column_functions_with_processed_params_and_scalars=functions_with_rounding_specs, # noqa: F821 processed_params=processed_tree_with_params, ) diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py index 781de8e48c..ae338d1c0b 100644 --- a/src/ttsim/policy_environment.py +++ b/src/ttsim/policy_environment.py @@ -3,7 +3,6 @@ import copy import datetime import itertools -from dataclasses import dataclass from typing import TYPE_CHECKING, Any, Literal import dags.tree as dt @@ -17,10 +16,6 @@ policy_function, ) from ttsim.config import numpy_or_jax as np -from ttsim.loader import ( - orig_tree_with_column_objects_and_param_functions, - orig_tree_with_params, -) from ttsim.param_objects import ( ConsecutiveInt1dLookupTableParam, ConsecutiveInt1dLookupTableParamValue, @@ -33,15 +28,12 @@ ) from ttsim.piecewise_polynomial import get_piecewise_parameters from ttsim.shared import ( - assert_valid_ttsim_pytree, merge_trees, to_datetime, upsert_tree, ) if TYPE_CHECKING: - from pathlib import Path - from ttsim.typing import ( DashedISOString, FlatColumnObjectsParamFunctions, @@ -66,59 +58,10 @@ def grouping_levels(policy_environment: QualNamePolicyEnvironment) -> tuple[str, ) -def upsert_tree_into_policy_environment( - policy_environment: NestedPolicyEnvironment, tree_to_upsert: NestedAny -) -> NestedPolicyEnvironment: - """Update and insert *tree_to_upsert* into the existing objects tree. - - Adds to or overwrites elements of the policy environment. Note that this - method does not modify the current policy environment but returns a new one. - - Parameters - ---------- - policy_environment - The policy environment to update. - tree_to_upsert - The functions to add or overwrite. Plain functions are converted to - PolicyFunctions. If you need `param_functions`, you will need to - decorate them with `@param_function`. - - Returns - ------- - The policy environment with the upserted functions. - """ - - tree_to_upsert_with_correct_types = convert_plain_functions_to_policy_functions( - tree_to_upsert - ) - fail_if_name_of_last_branch_element_not_leaf_name_of_function( - tree_to_upsert_with_correct_types - ) - - # Add functions tree to upsert to new functions tree - new_environment = upsert_tree( - base=policy_environment, - to_upsert=tree_to_upsert_with_correct_types, - ) - - fail_if_group_ids_are_outside_top_level_namespace(new_environment) - - return new_environment - - -@dataclass(frozen=True) -class OrigTreesWithFileNames: - """ - A container for the original trees of policy functions, policy inputs, - param functions and parameters. - """ - - column_objects_and_param_functions: FlatColumnObjectsParamFunctions - params: FlatOrigParamSpecs - - -def set_up_policy_environment( - root: Path, date: datetime.date | DashedISOString +def policy_environment( + active_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, # noqa: E501 + active_tree_with_params: FlatOrigParamSpecs, + date: datetime.date | DashedISOString, ) -> NestedPolicyEnvironment: """ Set up the policy environment for a particular date. @@ -138,16 +81,11 @@ def set_up_policy_environment( # Check policy date for correct format and convert to datetime.date date = to_datetime(date) - orig_trees = OrigTreesWithFileNames( - column_objects_and_param_functions=orig_tree_with_column_objects_and_param_functions( - root - ), - params=orig_tree_with_params(root), + a_tree = merge_trees( + left=active_tree_with_column_objects_and_param_functions, + right=active_tree_with_params, ) - # Will move this line out eventually. Just include in tests, do not run every time. - fail_because_active_periods_overlap(orig_trees) - a_tree = active_tree(orig_trees=orig_trees, date=date) assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" a_tree["evaluationsjahr"] = ScalarParam( leaf_name="evaluationsjahr", @@ -161,11 +99,10 @@ def set_up_policy_environment( note=None, reference=None, ) - fail_if_group_ids_are_outside_top_level_namespace(a_tree) return a_tree -def convert_plain_functions_to_policy_functions( +def _convert_plain_functions_to_policy_functions( tree: NestedAny, ) -> NestedAnyTTSIMObject: """Convert all plain functions in a tree to PolicyFunctions. @@ -216,67 +153,6 @@ def _convert_to_policy_function_if_callable( return converted_object -def fail_because_active_periods_overlap(orig_trees: OrigTreesWithFileNames) -> None: - """Fail because active periods of objects / parameters overlap. - - Checks that objects or parameters with the same tree path / qualified name are not - active at the same time. - - Raises - ------ - ConflictingActivePeriodsError - If multiple objects and/or parameters with the same leaf name are active at the - same time. - """ - # Create mapping from leaf names to objects. - overlap_checker: dict[ - tuple[str, ...], list[ColumnObject | ParamFunction | _ParamWithActivePeriod] - ] = {} - for orig_path, obj in orig_trees.column_objects_and_param_functions.items(): - path = (*orig_path[:-2], obj.leaf_name) - if path in overlap_checker: - overlap_checker[path].append(obj) - else: - overlap_checker[path] = [obj] - - for orig_path, obj in orig_trees.params.items(): - path = (*orig_path[:-2], orig_path[-1]) - if path in overlap_checker: - overlap_checker[path].extend( - _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]) - ) - else: - overlap_checker[path] = _param_with_active_periods( - param_spec=obj, leaf_name=orig_path[-1] - ) - - # Check for overlapping start and end dates for time-dependent functions. - for path, objects in overlap_checker.items(): - active_period = [(f.start_date, f.end_date) for f in objects] - for (start1, end1), (start2, end2) in itertools.combinations(active_period, 2): - if start1 <= end2 and start2 <= end1: - raise ConflictingActivePeriodsError( - affected_column_objects=objects, - path=path, - overlap_start=max(start1, start2), - overlap_end=min(end1, end2), - ) - - -def active_tree( - orig_trees: OrigTreesWithFileNames, date: datetime.date -) -> NestedPolicyEnvironment: - return merge_trees( - left=active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions=orig_trees.column_objects_and_param_functions, - date=date, - ), - right=active_tree_with_params( - orig_tree_with_params=orig_trees.params, date=date - ), - ) - - def active_tree_with_column_objects_and_param_functions( orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, date: datetime.date, @@ -305,74 +181,6 @@ def active_tree_with_column_objects_and_param_functions( return dt.unflatten_from_tree_paths(flat_objects_tree) -@dataclass(frozen=True) -class _ParamWithActivePeriod(ParamObject): - """A ParamObject object which mimics a ColumnObject regarding active periods. - - Only used here for checking overlap. - """ - - original_function_name: str - - -def _param_with_active_periods( - param_spec: OrigParamSpec, - leaf_name: str, -) -> list[_ParamWithActivePeriod]: - """Return parameter with active periods.""" - - def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, Any]: - """Remove note and reference from a parameter specification.""" - entry.pop("note", None) - entry.pop("reference", None) - return entry - - relevant = sorted( - [key for key in param_spec if isinstance(key, datetime.date)], - reverse=True, - ) - if not relevant: - raise ValueError(f"No relevant dates found for {param_spec}") - - params_header = { - "name": param_spec["name"], - "description": param_spec["description"], - "unit": param_spec["unit"], - "reference_period": param_spec["reference_period"], - } - out = [] - start_date: datetime.date | None = None - end_date = DEFAULT_END_DATE - for date in relevant: - if _remove_note_and_reference(param_spec[date]): - start_date = date - else: - if start_date: - out.append( - _ParamWithActivePeriod( - leaf_name=leaf_name, - start_date=start_date, - end_date=end_date, - original_function_name=leaf_name, - **params_header, - ) - ) - start_date = None - end_date = date - datetime.timedelta(days=1) - if start_date: - out.append( - _ParamWithActivePeriod( - leaf_name=leaf_name, - original_function_name=leaf_name, - start_date=start_date, - end_date=end_date, - **params_header, - ) - ) - - return out - - def active_tree_with_params( orig_tree_with_params: FlatOrigParamSpecs, date: datetime.date, @@ -382,7 +190,7 @@ def active_tree_with_params( for orig_path, orig_params_spec in orig_tree_with_params.items(): path_to_keep = orig_path[:-2] leaf_name = orig_path[-1] - param = get_one_param( + param = _get_one_param( leaf_name=leaf_name, spec=orig_params_spec, date=date, @@ -392,7 +200,7 @@ def active_tree_with_params( if orig_params_spec.get("add_jahresanfang", False): date_jan1 = date.replace(month=1, day=1) leaf_name_jan1 = f"{leaf_name}_jahresanfang" - param = get_one_param( + param = _get_one_param( leaf_name=leaf_name_jan1, spec=orig_params_spec, date=date_jan1, @@ -402,7 +210,7 @@ def active_tree_with_params( return dt.unflatten_from_tree_paths(flat_tree_with_params) -def get_one_param( # noqa: PLR0911 +def _get_one_param( # noqa: PLR0911 leaf_name: str, spec: OrigParamSpec, date: datetime.date, @@ -656,83 +464,3 @@ def get_year_based_phase_inout_of_age_thresholds_param_value( return get_consecutive_int_1d_lookup_table_param_value( {**before_phase_inout, **during_phase_inout, **after_phase_inout} ) - - -def fail_if_group_ids_are_outside_top_level_namespace( - policy_environment: NestedPolicyEnvironment, -) -> None: - """Fail if group ids are outside the top level namespace.""" - group_ids_outside_top_level_namespace = { - tree_path - for tree_path in dt.flatten_to_tree_paths(policy_environment) - if len(tree_path) > 1 and tree_path[-1].endswith("_id") - } - if group_ids_outside_top_level_namespace: - raise ValueError( - "Group identifiers must live in the top-level namespace. Got:\n\n" - f"{group_ids_outside_top_level_namespace}\n\n" - "To fix this error, move the group identifiers to the top-level namespace." - ) - - -def fail_if_environment_not_valid(policy_environment: NestedPolicyEnvironment) -> None: - """Validate that the environment is a pytree with supported types.""" - assert_valid_ttsim_pytree( - tree=policy_environment, - leaf_checker=lambda leaf: isinstance( - leaf, ColumnObject | ParamFunction | ParamObject - ), - tree_name="policy_environment", - ) - - -def fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedColumnObjectsParamFunctions, -) -> None: - """Raise error if a PolicyFunction does not have the same leaf name as the last - branch element of the tree path. - """ - - for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): - if tree_path[-1] != function.leaf_name: - raise KeyError( - f""" - The name of the last branch element of the functions tree must be the - same as the leaf name of the PolicyFunction. The tree path {tree_path} - is not compatible with the PolicyFunction {function.leaf_name}. - """ - ) - - -class ConflictingActivePeriodsError(Exception): - def __init__( - self, - affected_column_objects: list[ColumnObject], - path: tuple[str, ...], - overlap_start: datetime.date, - overlap_end: datetime.date, - ) -> None: - self.affected_column_objects = affected_column_objects - self.path = path - self.overlap_start = overlap_start - self.overlap_end = overlap_end - - def __str__(self) -> str: - overlapping_objects = [ - obj.__getattribute__("original_function_name") - for obj in self.affected_column_objects - if obj - ] - return f""" - Functions with path - - {self.path} - - have overlapping start and end dates. The following functions are affected: - - { - ''' - '''.join(overlapping_objects) - } - - Overlap from {self.overlap_start} to {self.overlap_end}.""" diff --git a/src/ttsim/shared.py b/src/ttsim/shared.py index f01031ad05..21254b0d1c 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/shared.py @@ -2,7 +2,6 @@ import datetime import re -import textwrap from typing import TYPE_CHECKING, Any import dags.tree as dt @@ -13,7 +12,6 @@ if TYPE_CHECKING: from ttsim.typing import ( DashedISOString, - GenericCallable, NestedColumnObjectsParamFunctions, NestedData, ) @@ -33,11 +31,6 @@ def to_datetime(date: datetime.date | DashedISOString) -> datetime.date: ) -def validate_date_range(start: datetime.date, end: datetime.date) -> None: - if start > end: - raise ValueError(f"The start date {start} must be before the end date {end}.") - - def get_re_pattern_for_all_time_units_and_groupings( groupings: tuple[str, ...], time_units: tuple[str, ...] ) -> re.Pattern[str]: @@ -121,36 +114,6 @@ def get_base_name_and_grouping_suffix(match: re.Match[str]) -> tuple[str, str]: ) -def fail_if_multiple_time_units_for_same_base_name_and_group( - base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], -) -> None: - invalid = { - b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 - } - if invalid: - raise ValueError(f"Multiple time units for base names: {invalid}") - - -class KeyErrorMessage(str): - """Subclass str to allow for line breaks in KeyError messages.""" - - __slots__ = () - - def __repr__(self) -> str: - return str(self) - - -def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, unused-ignore] - formatted_list = '",\n "'.join(some_list) - return textwrap.dedent( - """ - [ - "{formatted_list}", - ] - """ - ).format(formatted_list=formatted_list) - - def create_tree_from_path_and_value( path: tuple[str], value: Any = None ) -> dict[str, Any]: @@ -331,36 +294,6 @@ def partition_by_reference_dict( return intersection, difference -def format_errors_and_warnings(text: str, width: int = 79) -> str: - """Format our own exception messages and warnings by dedenting paragraphs and - wrapping at the specified width. Mainly required because of messages are written as - part of indented blocks in our source code. - - Parameters - ---------- - text : str - The text which can include multiple paragraphs separated by two newlines. - width : int - The text will be wrapped by `width` characters. - - Returns - ------- - Correctly dedented, wrapped text. - - """ - text = text.lstrip("\n") - paragraphs = text.split("\n\n") - wrapped_paragraphs = [] - for paragraph in paragraphs: - dedented_paragraph = textwrap.dedent(paragraph) - wrapped_paragraph = textwrap.fill(dedented_paragraph, width=width) - wrapped_paragraphs.append(wrapped_paragraph) - - formatted_text = "\n\n".join(wrapped_paragraphs) - - return formatted_text - - def remove_group_suffix(col: str, groupings: tuple[str, ...]) -> str: out = col for g in groupings: @@ -415,62 +348,6 @@ def join( return padded_targets.take(indices) -def assert_valid_ttsim_pytree( - tree: Any, leaf_checker: GenericCallable, tree_name: str -) -> None: - """ - Recursively assert that a pytree meets the following conditions: - - The tree is a dictionary. - - All keys are strings. - - All leaves satisfy a provided condition (leaf_checker). - - Parameters - ---------- - tree : Any - The tree to validate. - leaf_checker : GenericCallable - A function that takes a leaf and returns True if it is valid. - tree_name : str - The name of the tree (used for error messages). - - Raises - ------ - TypeError - If any branch or leaf does not meet the expected requirements. - """ - - def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: - def format_key_path(key_tuple: tuple[str, ...]) -> str: - return "".join(f"[{k}]" for k in key_tuple) - - if not isinstance(subtree, dict): - path_str = format_key_path(current_key) - msg = format_errors_and_warnings( - f"{tree_name}{path_str} must be a dict, got {type(subtree)}." - ) - raise TypeError(msg) - - for key, value in subtree.items(): - new_key_path = (*current_key, key) - if not isinstance(key, str): - msg = format_errors_and_warnings( - f"Key {key} in {tree_name}{format_key_path(current_key)} must be a " - f"string but got {type(key)}." - ) - raise TypeError(msg) - if isinstance(value, dict): - _assert_valid_ttsim_pytree(value, new_key_path) - else: - if not leaf_checker(value): - msg = format_errors_and_warnings( - f"Leaf at {tree_name}{format_key_path(new_key_path)} is " - f"invalid: got {value} of type {type(value)}." - ) - raise TypeError(msg) - - _assert_valid_ttsim_pytree(tree, current_key=()) - - def get_name_of_group_by_id( target_name: str, groupings: tuple[str, ...], diff --git a/tests/ttsim/utils.py b/src/ttsim/testing_utils.py similarity index 56% rename from tests/ttsim/utils.py rename to src/ttsim/testing_utils.py index 884b85138a..83ae003584 100644 --- a/tests/ttsim/utils.py +++ b/src/ttsim/testing_utils.py @@ -1,27 +1,44 @@ from __future__ import annotations -from pathlib import Path +from functools import lru_cache from typing import TYPE_CHECKING import dags.tree as dt import optree import pandas as pd import yaml -from mettsim.config import METTSIM_ROOT -from ttsim import compute_taxes_and_transfers, merge_trees, set_up_policy_environment +from ttsim import main, merge_trees from ttsim.config import numpy_or_jax as np +from ttsim.convert_nested_data import nested_data_to_df_with_nested_columns from ttsim.shared import to_datetime -TEST_DIR = Path(__file__).parent # Set display options to show all columns without truncation pd.set_option("display.max_columns", None) pd.set_option("display.width", None) if TYPE_CHECKING: import datetime + from pathlib import Path - from ttsim.typing import NestedData, NestedInputStructureDict + from ttsim.typing import ( + NestedData, + NestedInputStructureDict, + NestedPolicyEnvironment, + ) + + +@lru_cache(maxsize=100) +def cached_policy_environment( + date: datetime.date, root: Path +) -> NestedPolicyEnvironment: + return main( + inputs={ + "date": date, + "root": root, + }, + targets=["policy_environment"], + )["policy_environment"] class PolicyTest: @@ -34,12 +51,14 @@ def __init__( expected_output_tree: NestedData, path: Path, date: datetime.date, + test_dir: Path, ) -> None: self.info = info self.input_tree = optree.tree_map(np.array, input_tree) self.expected_output_tree = expected_output_tree self.path = path self.date = date + self.test_dir = test_dir @property def target_structure(self) -> NestedInputStructureDict: @@ -50,31 +69,34 @@ def target_structure(self) -> NestedInputStructureDict: @property def name(self) -> str: - return self.path.relative_to(TEST_DIR / "test_data").as_posix() - - -def execute_test(test: PolicyTest, jit: bool = False) -> None: - environment = set_up_policy_environment(date=test.date, root=METTSIM_ROOT) - - data_tree = test.input_tree - targets_tree = test.target_structure - - if targets_tree: - result = compute_taxes_and_transfers( - data_tree=data_tree, - policy_environment=environment, - targets_tree=targets_tree, - jit=jit, - ) + return self.path.relative_to(self.test_dir / "test_data").as_posix() + + +def execute_test(test: PolicyTest, root: Path, jit: bool = False) -> None: + environment = cached_policy_environment(date=test.date, root=root) + + if test.target_structure: + nested_result = main( + inputs={ + "data_tree": test.input_tree, + "policy_environment": environment, + "targets_tree": test.target_structure, + "rounding": True, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] else: - result = {} - - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output_tree = dt.flatten_to_qual_names(test.expected_output_tree) + nested_result = {} - if flat_expected_output_tree: - expected_df = pd.DataFrame(flat_expected_output_tree) - result_df = pd.DataFrame(flat_result) + if test.expected_output_tree: + expected_df = nested_data_to_df_with_nested_columns( + nested_data_to_convert=test.expected_output_tree, + data_with_p_id=test.input_tree, + ) + result_df = nested_data_to_df_with_nested_columns( + nested_data_to_convert=nested_result, data_with_p_id=test.input_tree + ) try: pd.testing.assert_frame_equal( result_df.sort_index(axis="columns"), @@ -109,27 +131,30 @@ def execute_test(test: PolicyTest, jit: bool = False) -> None: ) from e -def get_policy_test_ids_and_cases() -> dict[str, PolicyTest]: - all_policy_tests = load_policy_test_data("") - return {policy_test.name: policy_test for policy_test in all_policy_tests} +def load_policy_test_data(test_dir: Path, policy_name: str) -> dict[str, PolicyTest]: + """Load all tests found by recursively searching + test_dir / "test_data" / policy_name -def load_policy_test_data(policy_name: str) -> list[PolicyTest]: - out = [] + for yaml files. + + If policy_name is empty, all tests found in test_dir / "test_data" are loaded. + """ - for path_to_yaml in (TEST_DIR / "test_data" / policy_name).glob("**/*.yaml"): + out = {} + for path_to_yaml in (test_dir / "test_data" / policy_name).glob("**/*.yaml"): if _is_skipped(path_to_yaml): continue with path_to_yaml.open("r", encoding="utf-8") as file: raw_test_data: NestedData = yaml.safe_load(file) - out.extend( - _get_policy_tests_from_raw_test_data( + this_test = _get_policy_test_from_raw_test_data( + test_dir=test_dir, raw_test_data=raw_test_data, path_to_yaml=path_to_yaml, ) - ) + out[this_test.name] = this_test return out @@ -138,9 +163,11 @@ def _is_skipped(test_file: Path) -> bool: return "skip" in test_file.stem or "skip" in test_file.parent.name -def _get_policy_tests_from_raw_test_data( - raw_test_data: NestedData, path_to_yaml: Path -) -> list[PolicyTest]: +def _get_policy_test_from_raw_test_data( + test_dir: Path, + path_to_yaml: Path, + raw_test_data: NestedData, +) -> PolicyTest: """Get a list of PolicyTest objects from raw test data. Args: @@ -151,19 +178,20 @@ def _get_policy_tests_from_raw_test_data( A list of PolicyTest objects. """ test_info: NestedData = raw_test_data.get("info", {}) - inputs: NestedData = raw_test_data.get("inputs", {}) input_tree: NestedData = dt.unflatten_from_tree_paths( { - k: pd.Series(v) + k: np.array(v) for k, v in dt.flatten_to_tree_paths( - merge_trees(inputs.get("provided", {}), inputs.get("assumed", {})) + merge_trees( + left=raw_test_data["inputs"].get("provided", {}), + right=raw_test_data["inputs"].get("assumed", {}), + ) ).items() } ) - expected_output_tree: NestedData = dt.unflatten_from_tree_paths( { - k: pd.Series(v) + k: np.array(v) for k, v in dt.flatten_to_tree_paths( raw_test_data.get("outputs", {}) ).items() @@ -172,12 +200,11 @@ def _get_policy_tests_from_raw_test_data( date: datetime.date = to_datetime(path_to_yaml.parent.name) - return [ - PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree=expected_output_tree, - path=path_to_yaml, - date=date, - ) - ] + return PolicyTest( + info=test_info, + input_tree=input_tree, + expected_output_tree=expected_output_tree, + path=path_to_yaml, + date=date, + test_dir=test_dir, + ) diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py index 87794e01af..2a26baf892 100644 --- a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py +++ b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py @@ -6,7 +6,7 @@ from ttsim import param_function, policy_function if TYPE_CHECKING: - from ttsim import RawParam + from ttsim.typing import RawParam @dataclass(frozen=True) diff --git a/tests/ttsim/test_automatically_added_functions.py b/tests/ttsim/test_automatically_added_functions.py index 68e833eccb..5dadc77a37 100644 --- a/tests/ttsim/test_automatically_added_functions.py +++ b/tests/ttsim/test_automatically_added_functions.py @@ -292,7 +292,7 @@ def test_should_create_functions_for_other_time_units_for_functions( qual_name_policy_environment={ name: policy_function(leaf_name=name)(return_one) }, - data_columns=set(), + qual_name_data_columns=set(), groupings=("sn", "kin"), ) @@ -304,7 +304,7 @@ def test_should_not_create_functions_automatically_that_exist_already(self) -> N qual_name_policy_environment={ "test1_d": policy_function(leaf_name="test1_d")(return_one) }, - data_columns={"test2_y"}, + qual_name_data_columns={"test2_y"}, groupings=("sn", "kin"), ) @@ -318,7 +318,7 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri qual_name_policy_environment={ "test_d": policy_function(leaf_name="test_d")(return_one) }, - data_columns={"test_y"}, + qual_name_data_columns={"test_y"}, groupings=("sn", "kin"), ) @@ -351,7 +351,7 @@ def x(test_m: int) -> int: time_conversion_functions = create_time_conversion_functions( qual_name_policy_environment={"test_d": policy_function(leaf_name="test_d")(x)}, - data_columns=set(), + qual_name_data_columns=set(), groupings=(), ) @@ -362,7 +362,7 @@ def x(test_m: int) -> int: ( "column_functions", "targets", - "data_columns", + "qual_name_data_columns", "expected", ), [ @@ -389,7 +389,7 @@ def x(test_m: int) -> int: def test_derived_aggregation_functions_are_in_correct_namespace( column_functions, targets, - data_columns, + qual_name_data_columns, expected, ): """Test that the derived aggregation functions are in the correct namespace. @@ -399,7 +399,7 @@ def test_derived_aggregation_functions_are_in_correct_namespace( """ result = create_agg_by_group_functions( column_functions=column_functions, - data_columns=data_columns, + qual_name_data_columns=qual_name_data_columns, targets=targets, groupings=("kin",), ) diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/test_compute_taxes_and_transfers.py index c99f6abee5..ac8ebb26f5 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/test_compute_taxes_and_transfers.py @@ -1,7 +1,6 @@ from __future__ import annotations -import copy -import warnings +import datetime from dataclasses import dataclass from typing import TYPE_CHECKING @@ -14,28 +13,20 @@ from ttsim import ( AggType, DictParam, - FunctionsAndDataOverlapWarning, PiecewisePolynomialParam, PiecewisePolynomialParamValue, RawParam, ScalarParam, agg_by_group_function, agg_by_p_id_function, - compute_taxes_and_transfers, + column_functions_with_processed_params_and_scalars, + main, merge_trees, param_function, policy_function, policy_input, - set_up_policy_environment, -) -from ttsim.compute_taxes_and_transfers import ( - _fail_if_foreign_keys_are_invalid_in_data, - _fail_if_group_variables_not_constant_within_groups, - _fail_if_p_id_is_non_unique, - _fail_if_targets_not_in_policy_environment_or_data, - _get_top_level_namespace, - column_functions_with_processed_params_and_scalars, required_column_functions, + top_level_namespace, ) from ttsim.config import IS_JAX_INSTALLED from ttsim.config import numpy_or_jax as np @@ -221,10 +212,13 @@ def foo_fam(foo: int, fam_id: int) -> int: @pytest.fixture(scope="module") def mettsim_environment() -> NestedPolicyEnvironment: - return set_up_policy_environment( - root=METTSIM_ROOT, - date="2025-01-01", - ) + return main( + inputs={ + "root": METTSIM_ROOT, + "date": datetime.date(2025, 1, 1), + }, + targets=["policy_environment"], + )["policy_environment"] # Create a function which is used by some tests below @@ -234,7 +228,7 @@ def func_before_partial(arg_1, some_param): func_after_partial = required_column_functions( - policy_environment_with_processed_params_and_scalars={ + column_functions_with_processed_params_and_scalars={ "some_func": func_before_partial, "some_param": SOME_INT_PARAM.value, }, @@ -419,33 +413,16 @@ def test_create_agg_by_group_functions( targets_tree, data_tree, ): - compute_taxes_and_transfers( - policy_environment=policy_environment, - data_tree=data_tree, - targets_tree=targets_tree, - jit=jit, - ) - - -@pytest.mark.parametrize( - "policy_environment, targets, data_columns, expected_error_match", - [ - ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), - ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), - ({"foo": some_x}, {"bar": None}, {"spam"}, "('bar',)"), - ({"foo__baz": some_x}, {"foo__bar": None}, {"spam"}, "('foo', 'bar')"), - ], -) -def test_fail_if_targets_not_in_policy_environment_or_data( - policy_environment, targets, data_columns, expected_error_match -): - with pytest.raises(ValueError) as e: - _fail_if_targets_not_in_policy_environment_or_data( - policy_environment=policy_environment, - targets=targets, - data_columns=data_columns, - ) - assert expected_error_match in str(e.value) + main( + inputs={ + "policy_environment": policy_environment, + "data_tree": data_tree, + "targets_tree": targets_tree, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] def test_output_is_tree(minimal_input_data): @@ -454,12 +431,16 @@ def test_output_is_tree(minimal_input_data): "module": {"some_func": some_func}, } - out = compute_taxes_and_transfers( - data_tree=minimal_input_data, - policy_environment=policy_environment, - targets_tree={"module": {"some_func": None}}, - jit=jit, - ) + out = main( + inputs={ + "data_tree": minimal_input_data, + "policy_environment": policy_environment, + "targets_tree": {"module": {"some_func": None}}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] assert isinstance(out, dict) assert "some_func" in out["module"] @@ -484,188 +465,26 @@ def test_params_target_is_allowed(minimal_input_data): ), } - out = compute_taxes_and_transfers( - data_tree=minimal_input_data, - policy_environment=policy_environment, - targets_tree={"some_param": None, "module": {"some_func": None}}, - jit=jit, - ) + out = main( + inputs={ + "data_tree": minimal_input_data, + "policy_environment": policy_environment, + "targets_tree": {"some_param": None, "module": {"some_func": None}}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] assert isinstance(out, dict) assert "some_param" in out assert out["some_param"] == 1 -def test_warn_if_functions_and_columns_overlap(): - with pytest.warns(FunctionsAndDataOverlapWarning): - compute_taxes_and_transfers( - data_tree={ - "p_id": pd.Series([0]), - "some_func": pd.Series([1]), - }, - policy_environment={ - "some_func": some_func, - "some_target": another_func, - }, - targets_tree={"some_target": None}, - jit=jit, - ) - - -def test_dont_warn_if_functions_and_columns_dont_overlap(): - with warnings.catch_warnings(): - warnings.filterwarnings("error", category=FunctionsAndDataOverlapWarning) - compute_taxes_and_transfers( - data_tree={ - "p_id": pd.Series([0]), - "x": pd.Series([1]), - }, - policy_environment={"some_func": some_func}, - targets_tree={"some_func": None}, - jit=jit, - ) - - -def test_recipe_to_ignore_warning_if_functions_and_columns_overlap(): - policy_environment = { - "some_func": some_func, - "unique": another_func, - } - with warnings.catch_warnings( - category=FunctionsAndDataOverlapWarning, record=True - ) as warning_list: - warnings.filterwarnings("ignore", category=FunctionsAndDataOverlapWarning) - compute_taxes_and_transfers( - data_tree={ - "p_id": pd.Series([0]), - "some_func": pd.Series([1]), - "x": pd.Series([1]), - }, - policy_environment=policy_environment, - targets_tree={"unique": None}, - jit=jit, - ) - - assert len(warning_list) == 0 - - -def test_fail_if_p_id_does_not_exist(): - data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} - - with pytest.raises(ValueError): - _fail_if_p_id_is_non_unique(data) - - -def test_fail_if_p_id_is_non_unique(): - data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} - - with pytest.raises(ValueError): - _fail_if_p_id_is_non_unique(data) - - -def test_fail_if_foreign_key_points_to_non_existing_p_id( - mettsim_environment: NestedPolicyEnvironment, -): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) - data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_spouse": pd.Series([0, 1, 2]), - } - - with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): - _fail_if_foreign_keys_are_invalid_in_data( - data=data, - input_data={k: v for k, v in data.items() if k != "p_id"}, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, - ) - - -def test_allow_minus_one_as_foreign_key(mettsim_environment: NestedPolicyEnvironment): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) - data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_spouse": pd.Series([-1, 1, 2]), - } - - _fail_if_foreign_keys_are_invalid_in_data( - data=data, - input_data={k: v for k, v in data.items() if k != "p_id"}, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, - ) - - -def test_fail_if_foreign_key_points_to_same_row_if_not_allowed( - mettsim_environment: NestedPolicyEnvironment, -): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) - data = { - "p_id": pd.Series([1, 2, 3]), - "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), - } - - _fail_if_foreign_keys_are_invalid_in_data( - data=data, - input_data={k: v for k, v in data.items() if k != "p_id"}, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, - ) - - -def test_fail_if_foreign_key_points_to_same_row_if_allowed( - mettsim_environment: NestedPolicyEnvironment, -): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) - data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_child_": pd.Series([1, 3, 3]), - } - - _fail_if_foreign_keys_are_invalid_in_data( - data=data, - input_data={k: v for k, v in data.items() if k != "p_id"}, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, - ) - - -def test_fail_if_group_variables_not_constant_within_groups(): - data = { - "foo_kin": pd.Series([1, 2, 2], name="foo_kin"), - "kin_id": pd.Series([1, 1, 2], name="kin_id"), - } - with pytest.raises(ValueError): - _fail_if_group_variables_not_constant_within_groups( - data=data, - groupings=("kin",), - ) - - -def test_missing_root_nodes_raises_error(minimal_input_data): - def b(a): - return a - - def c(b): - return b - - policy_environment = { - "b": policy_function(leaf_name="b")(b), - "c": policy_function(leaf_name="c")(c), - } - - with pytest.raises( - ValueError, - match="The following data columns are missing", - ): - compute_taxes_and_transfers( - data_tree=minimal_input_data, - policy_environment=policy_environment, - targets_tree={"c": None}, - jit=jit, - ) - - def test_function_without_data_dependency_is_not_mistaken_for_data(minimal_input_data): @policy_function(leaf_name="a", vectorization_strategy="not_required") def a() -> np.ndarray: - return np.array(range(minimal_input_data["p_id"].size)) + return np.array(minimal_input_data["p_id"]) @policy_function(leaf_name="b") def b(a): @@ -675,59 +494,21 @@ def b(a): "a": a, "b": b, } - compute_taxes_and_transfers( - data_tree=minimal_input_data, - policy_environment=policy_environment, - targets_tree={"b": None}, - jit=jit, + nested_results = main( + inputs={ + "data_tree": minimal_input_data, + "policy_environment": policy_environment, + "targets_tree": {"b": None}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] + numpy.testing.assert_array_almost_equal( + nested_results["b"], np.array(minimal_input_data["p_id"]) ) -def test_fail_if_targets_are_not_in_functions_or_in_columns_overriding_functions( - minimal_input_data, -): - with pytest.raises( - ValueError, - match="The following targets have no corresponding function", - ): - compute_taxes_and_transfers( - data_tree=minimal_input_data, - policy_environment={}, - targets_tree={"unknown_target": None}, - jit=jit, - ) - - -def test_fail_if_missing_p_id(): - data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} - with pytest.raises( - ValueError, - match="The input data must contain the p_id", - ): - compute_taxes_and_transfers( - data_tree=data, - policy_environment={}, - targets_tree={}, - jit=jit, - ) - - -def test_fail_if_non_unique_p_id(minimal_input_data): - data = copy.deepcopy(minimal_input_data) - data["p_id"][:] = 1 - - with pytest.raises( - ValueError, - match="The following p_ids are non-unique", - ): - compute_taxes_and_transfers( - data_tree=data, - policy_environment={}, - targets_tree={}, - jit=jit, - ) - - def test_partial_params_to_functions(): # Partial function produces correct result assert func_after_partial(2) == 3 @@ -760,12 +541,16 @@ def test_user_provided_aggregate_by_group_specs(): expected_res = pd.Series([200, 200, 100]) - out = compute_taxes_and_transfers( - data_tree=data, - policy_environment=policy_environment, - targets_tree={"module_name": {"betrag_m_fam": None}}, - jit=jit, - ) + out = main( + inputs={ + "data_tree": data, + "policy_environment": policy_environment, + "targets_tree": {"module_name": {"betrag_m_fam": None}}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] numpy.testing.assert_array_almost_equal( out["module_name"]["betrag_m_fam"], expected_res @@ -799,13 +584,16 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: }, } - actual = compute_taxes_and_transfers( - data_tree=data, - policy_environment=policy_environment, - targets_tree={"module_name": {"betrag_m_double_fam": None}}, - debug=False, - jit=jit, - ) + actual = main( + inputs={ + "data_tree": data, + "policy_environment": policy_environment, + "targets_tree": {"module_name": {"betrag_m_double_fam": None}}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] numpy.testing.assert_array_almost_equal( actual["module_name"]["betrag_m_double_fam"], expected @@ -841,13 +629,16 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: }, } - actual = compute_taxes_and_transfers( - data_tree=data, - policy_environment=policy_environment, - targets_tree={"module_name": {"max_betrag_double_y_fam": None}}, - debug=False, - jit=jit, - ) + actual = main( + inputs={ + "data_tree": data, + "policy_environment": policy_environment, + "targets_tree": {"module_name": {"max_betrag_double_y_fam": None}}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"] numpy.testing.assert_array_almost_equal( actual["module_name"]["max_betrag_double_y_fam"], expected @@ -913,12 +704,16 @@ def source() -> int: }, ) - out = compute_taxes_and_transfers( - data_tree=minimal_input_data_shared_fam, - policy_environment=policy_environment, - targets_tree=target_tree, - jit=jit, - )["module"][next(iter(target_tree["module"].keys()))] + out = main( + inputs={ + "data_tree": minimal_input_data_shared_fam, + "policy_environment": policy_environment, + "targets_tree": target_tree, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results"], + )["nested_results"]["module"][next(iter(target_tree["module"].keys()))] numpy.testing.assert_array_almost_equal(out, expected) @@ -926,7 +721,6 @@ def source() -> int: @pytest.mark.parametrize( ( "policy_environment", - "time_units", "expected", ), [ @@ -935,7 +729,6 @@ def source() -> int: "foo_m": policy_function(leaf_name="foo_m")(identity), "fam_id": fam_id, }, - ["m", "y"], {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, ), ( @@ -943,16 +736,12 @@ def source() -> int: "foo": policy_function(leaf_name="foo")(identity), "fam_id": fam_id, }, - ["m", "y"], {"foo", "foo_fam"}, ), ], ) -def test_get_top_level_namespace(policy_environment, time_units, expected): - result = _get_top_level_namespace( - policy_environment=policy_environment, - time_units=time_units, - ) +def test_get_top_level_namespace(policy_environment, expected): + result = top_level_namespace(policy_environment=policy_environment) assert all(name in result for name in expected) @@ -1043,18 +832,22 @@ def test_can_override_ttsim_objects_with_data( expected_output, minimal_input_data, ): - result = compute_taxes_and_transfers( - data_tree={ - **minimal_input_data, - **overriding_data, + actual = main( + inputs={ + "data_tree": { + **minimal_input_data, + **overriding_data, + }, + "policy_environment": nested_policy_environment, + "targets_tree": targets_tree, + "rounding": False, }, - policy_environment=nested_policy_environment, - targets_tree=targets_tree, - ) + targets=["nested_results"], + )["nested_results"] - flat_results = dt.flatten_to_tree_paths(result) + flat_actual = dt.flatten_to_tree_paths(actual) flat_expected = dt.flatten_to_tree_paths(expected_output) - assert flat_results.keys() == flat_expected.keys() + assert flat_actual.keys() == flat_expected.keys() for key in flat_expected: - numpy.testing.assert_array_almost_equal(flat_results[key], flat_expected[key]) + numpy.testing.assert_array_almost_equal(flat_actual[key], flat_expected[key]) diff --git a/tests/ttsim/test_convert_nested_data.py b/tests/ttsim/test_convert_nested_data.py index 8e1d9339e7..4e6e2c4ed5 100644 --- a/tests/ttsim/test_convert_nested_data.py +++ b/tests/ttsim/test_convert_nested_data.py @@ -12,9 +12,9 @@ PiecewisePolynomialParam, PiecewisePolynomialParamValue, ScalarParam, - compute_taxes_and_transfers, dataframe_to_nested_data, - nested_data_to_dataframe, + main, + nested_data_to_df_with_mapped_columns, param_function, policy_function, ) @@ -301,17 +301,19 @@ def test_nested_data_to_dataframe( targets_tree_to_outputs_df_columns, expected_output, ): - result_nested_data = compute_taxes_and_transfers( - data_tree=minimal_data_tree, - policy_environment=environment, - targets_tree=targets_tree_to_outputs_df_columns, - ) - result_df = nested_data_to_dataframe( - nested_data_with_p_id={ - "p_id": minimal_data_tree["p_id"], - **result_nested_data, + nested_results = main( + inputs={ + "data_tree": minimal_data_tree, + "policy_environment": environment, + "targets_tree": targets_tree_to_outputs_df_columns, + "rounding": False, }, - nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + targets=["nested_results"], + )["nested_results"] + result_df = nested_data_to_df_with_mapped_columns( + nested_data_to_convert=nested_results, + nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, + data_with_p_id=minimal_data_tree, ) pd.testing.assert_frame_equal(result_df, expected_output, check_like=True) @@ -343,20 +345,22 @@ def test_nested_data_to_dataframe_fails_if_noncompatible_objects_are_returned( targets_tree_to_outputs_df_columns, minimal_data_tree, ): - result_nested_data = compute_taxes_and_transfers( - data_tree=minimal_data_tree, - policy_environment=environment, - targets_tree=targets_tree_to_outputs_df_columns, - ) + nested_results = main( + inputs={ + "data_tree": minimal_data_tree, + "policy_environment": environment, + "targets_tree": targets_tree_to_outputs_df_columns, + "rounding": False, + }, + targets=["nested_results"], + )["nested_results"] with pytest.raises( TypeError, match=r"The following paths contain non-scalar\nobjects" ): - nested_data_to_dataframe( - nested_data_with_p_id={ - "p_id": minimal_data_tree["p_id"], - **result_nested_data, - }, - nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + nested_data_to_df_with_mapped_columns( + nested_data_to_convert=nested_results, + nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, + data_with_p_id=minimal_data_tree, ) @@ -379,19 +383,21 @@ def test_nested_data_to_dataframe_fails_because_raw_param_dict_is_returned( targets_tree_to_outputs_df_columns, minimal_data_tree, ): - result_nested_data = compute_taxes_and_transfers( - data_tree=minimal_data_tree, - policy_environment=environment, - targets_tree=targets_tree_to_outputs_df_columns, - ) + nested_results = main( + inputs={ + "data_tree": minimal_data_tree, + "policy_environment": environment, + "targets_tree": targets_tree_to_outputs_df_columns, + "rounding": False, + }, + targets=["nested_results"], + )["nested_results"] with pytest.raises( ValueError, match="failed because the following paths\nare not mapped to a column name", ): - nested_data_to_dataframe( - nested_data_with_p_id={ - "p_id": minimal_data_tree["p_id"], - **result_nested_data, - }, - nested_data_paths_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + nested_data_to_df_with_mapped_columns( + nested_data_to_convert=nested_results, + nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, + data_with_p_id=minimal_data_tree, ) diff --git a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml index 3b146232b6..ee4c534aad 100644 --- a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml +++ b/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml @@ -4,15 +4,24 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: + age: + - 30 + - 30 + - 10 + gross_wage_y: + - 10000 + - 0 - 0 - - 1 - - 2 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,20 +34,12 @@ inputs: - 1 - 0 - -1 - age: - - 30 - - 30 - - 10 - gross_wage_y: - - 10000 - - 0 - - 0 outputs: - sp_id: + fam_id: - 0 - 0 - - 1 - fam_id: - 0 + sp_id: - 0 - 0 + - 1 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml index 4d6b4115fc..e4804a0e76 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,28 +24,31 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_m: - - 1500 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_m: + - 1500 + - 0 wealth: - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 0.0 - - 0.0 - housing_benefits__income__amount_m: - - 1054.00 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - false - - false + housing_benefits: + amount_m_fam: + - 0.0 + - 0.0 + eligibility: + requirement_fulfilled_fam: + - false + - false + income: + amount_m: + - 1054.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml index 1380c06ad0..51a013e23b 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,28 +24,31 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_m: - - 800 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_m: + - 800 + - 0 wealth: - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 282.0 - - 282.0 - housing_benefits__income__amount_m: - - 564.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true + housing_benefits: + amount_m_fam: + - 282.0 + - 282.0 + eligibility: + requirement_fulfilled_fam: + - true + - true + income: + amount_m: + - 564.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml index a7813d0ab9..d9835301a3 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,36 +30,38 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_m: - - 1500 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_m: + - 1500 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 0.0 - - 0.0 - - 0.0 - housing_benefits__income__amount_m: - - 1056.0 - - 0.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - false - - false - - false + housing_benefits: + amount_m_fam: + - 0.0 + - 0.0 + - 0.0 + eligibility: + requirement_fulfilled_fam: + - false + - false + - false + income: + amount_m: + - 1056.0 + - 0.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml index da79ee227d..763eec0dd6 100644 --- a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,36 +30,38 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_m: - - 800 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_m: + - 800 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 283.0 - - 283.0 - - 283.0 - housing_benefits__income__amount_m: - - 566.0 - - 0.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true - - true + housing_benefits: + amount_m_fam: + - 283.0 + - 283.0 + - 283.0 + eligibility: + requirement_fulfilled_fam: + - true + - true + - true + income: + amount_m: + - 566.0 + - 0.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml index 2f29c784c2..8c33de3318 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,34 +24,37 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_m: - - 1500 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_m: + - 1500 + - 0 wealth: - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 0.0 - - 0.0 - housing_benefits__income__amount_m: - - 1054.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - false - - false - housing_benefits__eligibility__number_of_family_members_considered_fam: - - 2 - - 2 - housing_benefits__eligibility__number_of_individuals_fam: - - 2 - - 2 + housing_benefits: + amount_m_fam: + - 0.0 + - 0.0 + eligibility: + number_of_family_members_considered_fam: + - 2 + - 2 + number_of_individuals_fam: + - 2 + - 2 + requirement_fulfilled_fam: + - false + - false + income: + amount_m: + - 1054.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml index c7f11c642f..99e35c3e5c 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,34 +24,37 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_m: - - 800 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_m: + - 800 + - 0 wealth: - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 282.0 - - 282.0 - housing_benefits__income__amount_m: - - 564.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true - housing_benefits__eligibility__number_of_family_members_considered_fam: - - 2 - - 2 - housing_benefits__eligibility__number_of_individuals_fam: - - 2 - - 2 + housing_benefits: + amount_m_fam: + - 282.0 + - 282.0 + eligibility: + number_of_family_members_considered_fam: + - 2 + - 2 + number_of_individuals_fam: + - 2 + - 2 + requirement_fulfilled_fam: + - true + - true + income: + amount_m: + - 564.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml index 6ec69ba891..05924b8221 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,44 +30,46 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_m: - - 1500 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_m: + - 1500 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 528.0 - - 528.0 - - 528.0 - housing_benefits__income__amount_m: - - 1056.0 - - 0.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true - - true - housing_benefits__eligibility__number_of_family_members_considered_fam: - - 3 - - 3 - - 3 - housing_benefits__eligibility__number_of_individuals_fam: - - 3 - - 3 - - 3 + housing_benefits: + amount_m_fam: + - 528.0 + - 528.0 + - 528.0 + eligibility: + number_of_family_members_considered_fam: + - 3 + - 3 + - 3 + number_of_individuals_fam: + - 3 + - 3 + - 3 + requirement_fulfilled_fam: + - true + - true + - true + income: + amount_m: + - 1056.0 + - 0.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml index 1c98d1032d..8ab89ee200 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,44 +30,46 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_m: - - 800 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_m: + - 800 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 283.0 - - 283.0 - - 283.0 - housing_benefits__income__amount_m: - - 566.0 - - 0.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true - - true - housing_benefits__eligibility__number_of_family_members_considered_fam: - - 3 - - 3 - - 3 - housing_benefits__eligibility__number_of_individuals_fam: - - 3 - - 3 - - 3 + housing_benefits: + amount_m_fam: + - 283.0 + - 283.0 + - 283.0 + eligibility: + number_of_family_members_considered_fam: + - 3 + - 3 + - 3 + number_of_individuals_fam: + - 3 + - 3 + - 3 + requirement_fulfilled_fam: + - true + - true + - true + income: + amount_m: + - 566.0 + - 0.0 + - 0.0 diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml index b62b6153b3..503e1ef30e 100644 --- a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml @@ -4,19 +4,26 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 + age: + - 30 + - 30 + - 10 + - 10 + - 10 kin_id: - 0 - 0 - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 p_id_parent_1: - -1 - -1 @@ -35,30 +42,27 @@ inputs: - -1 - -1 - -1 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - - 0 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - - 0 - - 0 - age: - - 30 - - 30 - - 10 - - 10 - - 10 parent_is_noble: - false - false - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + - 0 + - 0 + income: + gross_wage_y: + - 10000 + - 0 + - 0 + - 0 + - 0 wealth: - 0.0 - 0.0 @@ -66,33 +70,36 @@ inputs: - 0.0 - 0.0 outputs: - housing_benefits__amount_m_fam: - - 297.5 - - 297.5 - - 297.5 - - 297.5 - - 297.5 - housing_benefits__income__amount_m: - - 595.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - housing_benefits__eligibility__requirement_fulfilled_fam: - - true - - true - - true - - true - - true - housing_benefits__eligibility__number_of_family_members_considered_fam: - - 4 - - 4 - - 4 - - 4 - - 4 - housing_benefits__eligibility__number_of_individuals_fam: - - 5 - - 5 - - 5 - - 5 - - 5 + housing_benefits: + amount_m_fam: + - 297.5 + - 297.5 + - 297.5 + - 297.5 + - 297.5 + eligibility: + number_of_family_members_considered_fam: + - 4 + - 4 + - 4 + - 4 + - 4 + number_of_individuals_fam: + - 5 + - 5 + - 5 + - 5 + - 5 + requirement_fulfilled_fam: + - true + - true + - true + - true + - true + income: + amount_m: + - 595.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 diff --git a/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml b/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml index f27df35bda..3bad299280 100644 --- a/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml +++ b/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml @@ -4,7 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: + orc_hunting_bounty: + large_orcs_hunted: + - 0 + - 2 + - 1 + small_orcs_hunted: + - 2 + - 0 + - 0 p_id: - 0 - 1 @@ -13,16 +23,9 @@ inputs: - false - false - true - orc_hunting_bounty__small_orcs_hunted: - - 2 - - 0 - - 0 - orc_hunting_bounty__large_orcs_hunted: - - 0 - - 2 - - 1 outputs: - orc_hunting_bounty__amount: - - 200.0 - - 400.0 - - 100.0 + orc_hunting_bounty: + amount: + - 200.0 + - 400.0 + - 100.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml index ff65c690f2..230e71ae37 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,43 +24,46 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_y: + - 10000 + - 0 wealth: - 0.0 - 0.0 outputs: - payroll_tax__income__deductions_y: - - 100.0 - - 100.0 - payroll_tax__income__deductions_y_sp: - - 200.0 - - 200.0 - payroll_tax__income__amount_y: - - 9900.0 - - 0.0 - payroll_tax__income__amount_y_sp: - - 9900.0 - - 9900.0 - payroll_tax__amount_y: - - 2950.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false + payroll_tax: + amount_y: + - 2950.0 + - 0.0 + child_tax_credit: + child_eligible: + - false + - false + claim_of_child_y: + - 0.0 + - 0.0 + in_same_household_as_recipient: + - false + - false + income: + amount_y: + - 9900.0 + - 0.0 + amount_y_sp: + - 9900.0 + - 9900.0 + deductions_y: + - 100.0 + - 100.0 + deductions_y_sp: + - 200.0 + - 200.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml index 8ba7f4a34e..d1dbac9449 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,43 +24,46 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble: - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_y: + - 10000 + - 0 wealth: - 100000.0 - 100000.0 outputs: - payroll_tax__income__deductions_y: - - 100 - - 100.0 - payroll_tax__income__deductions_y_sp: - - 200 - - 200.0 - payroll_tax__income__amount_y: - - 9900 - - 0.0 - payroll_tax__income__amount_y_sp: - - 9900 - - 9900 - payroll_tax__amount_y: - - 1480.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false + payroll_tax: + amount_y: + - 1480.0 + - 0.0 + child_tax_credit: + child_eligible: + - false + - false + claim_of_child_y: + - 0.0 + - 0.0 + in_same_household_as_recipient: + - false + - false + income: + amount_y: + - 9900 + - 0.0 + amount_y_sp: + - 9900 + - 9900 + deductions_y: + - 100 + - 100.0 + deductions_y_sp: + - 200 + - 200.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml index 68ac4cf64c..b8201dedbf 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml @@ -4,13 +4,17 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 + age: + - 30 + - 30 kin_id: - 0 - 0 + p_id: + - 0 + - 1 p_id_parent_1: - -1 - -1 @@ -20,43 +24,46 @@ inputs: p_id_spouse: - 1 - 0 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - age: - - 30 - - 30 parent_is_noble_fam: - true - true + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + income: + gross_wage_y: + - 10000 + - 0 wealth: - 0.0 - 0.0 outputs: - payroll_tax__income__deductions_y: - - 100 - - 100.0 - payroll_tax__income__deductions_y_sp: - - 200 - - 200.0 - payroll_tax__income__amount_y: - - 9900 - - 0.0 - payroll_tax__income__amount_y_sp: - - 9900 - - 9900 - payroll_tax__amount_y: - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false + payroll_tax: + amount_y: + - 0.0 + - 0.0 + child_tax_credit: + child_eligible: + - false + - false + claim_of_child_y: + - 0.0 + - 0.0 + in_same_household_as_recipient: + - false + - false + income: + amount_y: + - 9900 + - 0.0 + amount_y_sp: + - 9900 + - 9900 + deductions_y: + - 100 + - 100.0 + deductions_y_sp: + - 200 + - 200.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml index c747ccde38..a945718673 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,52 +30,54 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_y: + - 10000 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - payroll_tax__income__deductions_y: - - 200 - - 100.0 - - 100.0 - payroll_tax__income__amount_y: - - 9800 - - 0.0 - - 0.0 - payroll_tax__amount_y: - - 2920.0 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - payroll_tax__child_tax_credit__amount_m: - - 8.333333 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - - true - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false - - true + payroll_tax: + amount_y: + - 2920.0 + - 0.0 + - 0.0 + child_tax_credit: + amount_m: + - 8.333333 + - 0.0 + - 0.0 + child_eligible: + - false + - false + - true + claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + in_same_household_as_recipient: + - false + - false + - true + income: + amount_y: + - 9800 + - 0.0 + - 0.0 + deductions_y: + - 200 + - 100.0 + - 100.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml index 012f8229c4..5f5ca4515a 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml @@ -4,15 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 + age: + - 30 + - 30 + - 10 kin_id: - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 p_id_parent_1: - -1 - -1 @@ -25,56 +30,58 @@ inputs: - 1 - 0 - -1 - payroll_tax__income__gross_wage_m: - - 833.333333 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - age: - - 30 - - 30 - - 10 parent_is_noble: - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + income: + gross_wage_m: + - 833.333333 + - 0 + - 0 wealth: - 0.0 - 0.0 - 0.0 outputs: - payroll_tax__income__deductions_y: - - 200 - - 100.0 - - 100.0 - payroll_tax__income__amount_y: - - 9800 - - 0.0 - - 0.0 - payroll_tax__income__amount_y_sp: - - 9800 - - 9800 - - 0.0 - payroll_tax__amount_y: - - 2920.0 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - payroll_tax__child_tax_credit__amount_m: - - 8.333333 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - - true - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false - - true + payroll_tax: + amount_y: + - 2920.0 + - 0.0 + - 0.0 + child_tax_credit: + amount_m: + - 8.333333 + - 0.0 + - 0.0 + child_eligible: + - false + - false + - true + claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + in_same_household_as_recipient: + - false + - false + - true + income: + amount_y: + - 9800 + - 0.0 + - 0.0 + amount_y_sp: + - 9800 + - 9800 + - 0.0 + deductions_y: + - 200 + - 100.0 + - 100.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml index 33b3f20b5d..1ff0068d95 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml @@ -4,19 +4,26 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 + age: + - 30 + - 30 + - 10 + - 10 + - 10 kin_id: - 0 - 0 - 0 - 0 - 0 + p_id: + - 0 + - 1 + - 2 + - 3 + - 4 p_id_parent_1: - -1 - -1 @@ -35,30 +42,27 @@ inputs: - -1 - -1 - -1 - payroll_tax__income__gross_wage_y: - - 10000 - - 0 - - 0 - - 0 - - 0 - payroll_tax__child_tax_credit__p_id_recipient: - - -1 - - -1 - - 0 - - 0 - - 0 - age: - - 30 - - 30 - - 10 - - 10 - - 10 parent_is_noble: - false - false - false - false - false + payroll_tax: + child_tax_credit: + p_id_recipient: + - -1 + - -1 + - 0 + - 0 + - 0 + income: + gross_wage_y: + - 10000 + - 0 + - 0 + - 0 + - 0 wealth: - 0.0 - 0.0 @@ -66,45 +70,48 @@ inputs: - 0.0 - 0.0 outputs: - payroll_tax__income__deductions_y: - - 400 - - 100.0 - - 100.0 - - 100.0 - - 100.0 - payroll_tax__income__amount_y: - - 9600 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - payroll_tax__amount_y: - - 2860.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - - 100.0 - - 100.0 - payroll_tax__child_tax_credit__amount_m: - - 25.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - payroll_tax__child_tax_credit__child_eligible: - - false - - false - - true - - true - - true - payroll_tax__child_tax_credit__in_same_household_as_recipient: - - false - - false - - true - - true - - true + payroll_tax: + amount_y: + - 2860.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + child_tax_credit: + amount_m: + - 25.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + child_eligible: + - false + - false + - true + - true + - true + claim_of_child_y: + - 0.0 + - 0.0 + - 100.0 + - 100.0 + - 100.0 + in_same_household_as_recipient: + - false + - false + - true + - true + - true + income: + amount_y: + - 9600 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + deductions_y: + - 400 + - 100.0 + - 100.0 + - 100.0 + - 100.0 diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml b/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml index def39d52c7..1202ee4386 100644 --- a/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml +++ b/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml @@ -4,21 +4,27 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: p_id: - 0 - 1 - 2 - payroll_tax__child_tax_credit__amount_y: - - 0.0 - - 0.0 - - 0.0 - payroll_tax__income__lump_sum_deduction_y: - - 100.0 - - 200.0 - - 300.0 + payroll_tax: + child_tax_credit: + amount_y: + - 0.0 + - 0.0 + - 0.0 + income: + lump_sum_deduction_y: + - 100.0 + - 200.0 + - 300.0 outputs: - payroll_tax__income__deductions_y: - - 100.0 - - 200.0 - - 300.0 + payroll_tax: + income: + deductions_y: + - 100.0 + - 200.0 + - 300.0 diff --git a/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml b/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml index 1639eafc72..d8aac0b655 100644 --- a/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml +++ b/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml @@ -4,17 +4,20 @@ info: precision_atol: 0.01 source: '' inputs: + assumed: {} provided: p_id: - 0 - 1 - 2 - property_tax__acre_size_in_hectares: - - 5 - - 20 - - 200 + property_tax: + acre_size_in_hectares: + - 5 + - 20 + - 200 outputs: - property_tax__amount_y: - - 0.0 - - 1000.0 - - 10000.0 + property_tax: + amount_y: + - 0.0 + - 1000.0 + - 10000.0 diff --git a/tests/ttsim/test_failures_and_warnings.py b/tests/ttsim/test_failures_and_warnings.py new file mode 100644 index 0000000000..fa460fbdd9 --- /dev/null +++ b/tests/ttsim/test_failures_and_warnings.py @@ -0,0 +1,881 @@ +from __future__ import annotations + +import copy +import datetime +import re +import warnings +from typing import TYPE_CHECKING + +import dags.tree as dt +import numpy +import pandas as pd +import pytest +from mettsim.config import METTSIM_ROOT + +from ttsim import main +from ttsim.column_objects_param_function import ( + DEFAULT_END_DATE, + group_creation_function, + policy_function, +) +from ttsim.failures_and_warnings import ( + ConflictingActivePeriodsError, + FunctionsAndDataColumnsOverlapWarning, + _param_with_active_periods, + _ParamWithActivePeriod, + assert_valid_ttsim_pytree, + fail_if_active_periods_overlap, + fail_if_data_tree_is_invalid, + fail_if_foreign_keys_are_invalid_in_data, + fail_if_group_ids_are_outside_top_level_namespace, + fail_if_group_variables_are_not_constant_within_groups, + fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name, + fail_if_targets_are_not_in_policy_environment_or_data, +) + +if TYPE_CHECKING: + from ttsim.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + NestedColumnObjectsParamFunctions, + NestedPolicyEnvironment, + OrigParamSpec, + ) + +GENERIC_PARAM_HEADER = { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, +} + + +def identity(x: int) -> int: + return x + + +def return_one() -> int: + return 1 + + +def return_two() -> int: + return 2 + + +def return_three() -> int: + return 3 + + +@policy_function() +def some_func(p_id: int) -> int: + return p_id + + +@policy_function() +def another_func(some_func: int) -> int: + return some_func + + +@group_creation_function() +def fam_id() -> int: + pass + + +@pytest.fixture(scope="module") +def minimal_input_data(): + n_individuals = 5 + out = { + "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), + "fam_id": pd.Series(numpy.arange(n_individuals), name="fam_id"), + } + return out + + +@pytest.fixture(scope="module") +def mettsim_environment() -> NestedPolicyEnvironment: + return main( + inputs={ + "root": METTSIM_ROOT, + "date": datetime.date(2025, 1, 1), + }, + targets=["policy_environment"], + )["policy_environment"] + + +def some_x(x): + return x + + +@pytest.mark.parametrize( + ("tree", "leaf_checker", "err_substr"), + [ + ( + {"a": 1, "b": 2}, + lambda leaf: leaf is None, + "Leaf at tree[a] is invalid: got 1 of type <class 'int'>.", + ), + ( + {"a": None, "b": {"c": None, "d": 1}}, + lambda leaf: leaf is None, + "Leaf at tree[b][d] is invalid: got 1 of type <class 'int'>.", + ), + ( + [1, 2, 3], + lambda leaf: leaf is None, + "tree must be a dict, got <class 'list'>.", + ), + ( + {1: 2}, + lambda leaf: leaf is None, + "Key 1 in tree must be a string but got <class 'int'>.", + ), + ], +) +def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): + with pytest.raises(TypeError, match=re.escape(err_substr)): + assert_valid_ttsim_pytree( + tree=tree, leaf_checker=leaf_checker, tree_name="tree" + ) + + +@pytest.mark.parametrize( + "orig_tree_with_column_objects_and_param_functions, orig_tree_with_params", + [ + # Same global module, no overlapping periods, no name clashes. + ( + { + ("c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + { + ("c", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 1}, + } + }, + ), + # Same submodule, overlapping periods, different leaf names so no name clashes. + ( + { + ("x", "c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("x", "c", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="g", + )(identity), + }, + { + ("x", "c", "h"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 2}, + } + }, + ), + # Different submodules, no overlapping periods, no name clashes. + ( + { + ("x", "c", "f"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + )(identity), + ("x", "d", "f"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + )(identity), + }, + { + ("x", "c", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 3}, + } + }, + ), + # Different paths, overlapping periods, same names but no clashes. + ( + { + ("x", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("y", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + { + ("z", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 4}, + } + }, + ), + # Different yaml files, no name clashes because of different names. + ( + {}, + { + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 5}, + }, + ("x", "b", "g"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 6}, + }, + }, + ), + # Same leaf names across functions / parameters, but no overlapping periods. + ( + { + ("c", "a"): policy_function( + start_date="2012-01-01", + end_date="2015-12-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + { + ("c", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/foo", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + } + }, + ), + # Different periods specified in different files. + ( + {}, + { + ("c", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + }, + ("d", "f"): { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/foo", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + }, + }, + ), + ], +) +def test_fail_because_active_periods_overlap_passes( + orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, + orig_tree_with_params: FlatOrigParamSpecs, +): + fail_if_active_periods_overlap( + orig_tree_with_column_objects_and_param_functions, + orig_tree_with_params, + ) + + +@pytest.mark.parametrize( + "orig_tree_with_column_objects_and_param_functions, orig_tree_with_params", + [ + # Exact overlap. + ( + { + ("a",): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("b",): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + {}, + ), + # Active period for "a" is subset of "b". + ( + { + ("a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("b"): policy_function( + start_date="2021-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + }, + {}, + ), + # Some overlap. + ( + { + ("a",): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + ("b",): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + {}, + ), + # Same as before, but defined in different modules. + ( + { + ("c", "a"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + leaf_name="f", + )(identity), + ("d", "b"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + }, + {}, + ), + # Same as before, but defined in different modules without leaf name. + ( + { + ("c", "f"): policy_function( + start_date="2023-01-02", + end_date="2023-02-01", + )(identity), + ("d", "f"): policy_function( + start_date="2022-01-01", + end_date="2023-01-31", + )(identity), + }, + {}, + ), + # Same global module, no overlap in functions, name clashes leaf name / yaml. + ( + { + ("c", "a"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("c", "b"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + { + ("c", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 1}, + } + }, + ), + # Same paths, no overlap in functions, name clashes leaf name / yaml. + ( + { + ("x", "a", "b"): policy_function( + start_date="2023-01-01", + end_date="2023-01-31", + leaf_name="f", + )(identity), + ("x", "a", "c"): policy_function( + start_date="2023-02-01", + end_date="2023-02-28", + leaf_name="f", + )(identity), + }, + { + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 2}, + } + }, + ), + # Same paths, name clashes within params from different yaml files. + ( + {}, + { + ("x", "a", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 3}, + }, + ("x", "b", "f"): { + **GENERIC_PARAM_HEADER, + datetime.date(2023, 1, 1): {"value": 4}, + }, + }, + ), + ], +) +def test_fail_because_active_periods_overlap_raises( + orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, + orig_tree_with_params: FlatOrigParamSpecs, +): + with pytest.raises(ConflictingActivePeriodsError): + fail_if_active_periods_overlap( + orig_tree_with_column_objects_and_param_functions, + orig_tree_with_params, + ) + + +def test_fail_if_data_tree_is_invalid(): + data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} + + with pytest.raises( + ValueError, match="The input data must contain the `p_id` column." + ): + fail_if_data_tree_is_invalid(data_tree=data) + + +def test_fail_if_data_tree_is_invalid_via_main(): + data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} + with pytest.raises( + ValueError, + match="The input data must contain the `p_id` column.", + ): + main( + inputs={ + "data_tree": data, + "policy_environment": {}, + "targets_tree": {}, + "rounding": False, + }, + targets=["fail_if_data_tree_is_invalid"], + )["fail_if_data_tree_is_invalid"] + + +def test_fail_if_foreign_keys_are_invalid_in_data_allow_minus_one_as_foreign_key( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + data = { + "p_id": pd.Series([1, 2, 3]), + "p_id_spouse": pd.Series([-1, 1, 2]), + } + + fail_if_foreign_keys_are_invalid_in_data( + qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, + qual_name_data=data, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + ) + + +def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_non_existing_p_id( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + data = { + "p_id": pd.Series([1, 2, 3]), + "p_id_spouse": pd.Series([0, 1, 2]), + } + + with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): + fail_if_foreign_keys_are_invalid_in_data( + qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, + qual_name_data=data, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + ) + + +def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_allowed( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + data = { + "p_id": pd.Series([1, 2, 3]), + "p_id_child_": pd.Series([1, 3, 3]), + } + + fail_if_foreign_keys_are_invalid_in_data( + qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, + qual_name_data=data, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + ) + + +def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_not_allowed( + mettsim_environment: NestedPolicyEnvironment, +): + flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + data = { + "p_id": pd.Series([1, 2, 3]), + "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), + } + + fail_if_foreign_keys_are_invalid_in_data( + qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, + qual_name_data=data, + flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + ) + + +def test_fail_if_group_ids_are_outside_top_level_namespace(): + with pytest.raises( + ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ): + fail_if_group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) + + +def test_fail_if_group_variables_are_not_constant_within_groups(): + data = { + "foo_kin": pd.Series([1, 2, 2], name="foo_kin"), + "kin_id": pd.Series([1, 1, 2], name="kin_id"), + } + with pytest.raises(ValueError): + fail_if_group_variables_are_not_constant_within_groups( + qual_name_input_data=data, + grouping_levels=("kin",), + ) + + +def test_fail_if_p_id_does_not_exist(): + data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} + + with pytest.raises( + ValueError, match="The input data must contain the `p_id` column." + ): + fail_if_data_tree_is_invalid(data_tree=data) + + +def test_fail_if_p_id_does_not_exist_via_main(): + data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} + with pytest.raises( + ValueError, + match="The input data must contain the `p_id` column.", + ): + main( + inputs={ + "data_tree": data, + "policy_environment": {}, + "targets_tree": {}, + "rounding": False, + # "jit": jit, + }, + targets=["fail_if_data_tree_is_invalid"], + )["fail_if_data_tree_is_invalid"] + + +@pytest.mark.parametrize( + "functions_tree", + [ + {"foo": policy_function(leaf_name="bar")(return_one)}, + ], +) +def test_fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( + functions_tree: NestedColumnObjectsParamFunctions, +): + with pytest.raises(KeyError): + fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( + functions_tree + ) + + +def test_fail_if_p_id_is_not_unique(): + data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} + + with pytest.raises( + ValueError, match="The following `p_id`s are not unique in the input data" + ): + fail_if_data_tree_is_invalid(data_tree=data) + + +def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data): + data = copy.deepcopy(minimal_input_data) + data["p_id"][:] = 1 + + with pytest.raises( + ValueError, + match="The following `p_id`s are not unique in the input data", + ): + main( + inputs={ + "data_tree": data, + "policy_environment": {}, + "targets_tree": {}, + "rounding": False, + }, + targets=["fail_if_data_tree_is_invalid"], + )["fail_if_data_tree_is_invalid"] + + +def test_fail_if_root_nodes_are_missing_via_main(minimal_input_data): + def b(a): + return a + + def c(b): + return b + + policy_environment = { + "b": policy_function(leaf_name="b")(b), + "c": policy_function(leaf_name="c")(c), + } + + with pytest.raises( + ValueError, + match="The following data columns are missing", + ): + main( + inputs={ + "data_tree": minimal_input_data, + "policy_environment": policy_environment, + "targets_tree": {"c": None}, + "rounding": False, + # "jit": jit, + }, + targets=["nested_results", "fail_if_root_nodes_are_missing"], + ) + + +@pytest.mark.parametrize( + "policy_environment, targets, qual_name_data_columns, expected_error_match", + [ + ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), + ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), + ({"foo": some_x}, {"bar": None}, {"spam"}, "('bar',)"), + ({"foo__baz": some_x}, {"foo__bar": None}, {"spam"}, "('foo', 'bar')"), + ], +) +def test_fail_if_targets_are_not_in_policy_environment_or_data( + policy_environment, targets, qual_name_data_columns, expected_error_match +): + with pytest.raises( + ValueError, match="The following targets have no corresponding function" + ) as e: + fail_if_targets_are_not_in_policy_environment_or_data( + policy_environment=policy_environment, + qual_name_targets=targets, + qual_name_data_columns=qual_name_data_columns, + ) + assert expected_error_match in str(e.value) + + +def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( + minimal_input_data, +): + with pytest.raises( + ValueError, + match="The following targets have no corresponding function", + ): + main( + inputs={ + "data_tree": minimal_input_data, + "policy_environment": {}, + "targets_tree": {"unknown_target": None}, + "rounding": False, + }, + targets=["fail_if_targets_are_not_in_policy_environment_or_data"], + ) + + +@pytest.mark.parametrize( + "param_spec, leaf_name, expected", + ( + ( + { + "name": {"de": "spam", "en": "spam"}, + "description": {"de": "spam", "en": "spam"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"note": "completely empty"}, + }, + "spam", + [], + ), + ( + { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + }, + "foo", + [ + _ParamWithActivePeriod( + leaf_name="foo", + original_function_name="foo", + start_date=datetime.date(1984, 1, 1), + end_date=DEFAULT_END_DATE, + **GENERIC_PARAM_HEADER, + ) + ], + ), + ( + { + "name": {"de": "foo", "en": "foo"}, + "description": {"de": "foo", "en": "foo"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"note": "stop"}, + }, + "foo", + [ + _ParamWithActivePeriod( + leaf_name="foo", + original_function_name="foo", + start_date=datetime.date(1984, 1, 1), + end_date=datetime.date(1984, 12, 31), + **GENERIC_PARAM_HEADER, + ) + ], + ), + ( + { + "name": {"de": "bar", "en": "bar"}, + "description": {"de": "bar", "en": "bar"}, + "unit": None, + "reference_period": None, + "type": "scalar", + datetime.date(1984, 1, 1): {"value": 1}, + datetime.date(1985, 1, 1): {"value": 3}, + datetime.date(1995, 1, 1): {"value": 5}, + datetime.date(2012, 1, 1): {"note": "more complex, see function"}, + datetime.date(2016, 1, 1): {"value": 10}, + datetime.date(2023, 2, 1): { + "note": "more complex, see function", + "reference": "https://example.com/bar", + }, + datetime.date(2023, 3, 1): { + "value": 13, + "note": "Complex didn't last long.", + }, + }, + "bar", + [ + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(2023, 3, 1), + end_date=DEFAULT_END_DATE, + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(2016, 1, 1), + end_date=datetime.date(2023, 1, 31), + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + _ParamWithActivePeriod( + leaf_name="bar", + original_function_name="bar", + start_date=datetime.date(1984, 1, 1), + end_date=datetime.date(2011, 12, 31), + name={"de": "bar", "en": "bar"}, + description={"de": "bar", "en": "bar"}, + unit=None, + reference_period=None, + ), + ], + ), + ), +) +def test_ttsim_param_with_active_periods( + param_spec: OrigParamSpec, + leaf_name: str, + expected: list[_ParamWithActivePeriod], +): + actual = _param_with_active_periods( + param_spec=param_spec, + leaf_name=leaf_name, + ) + assert actual == expected + + +def test_warn_if_functions_and_data_columns_overlap(): + with pytest.warns(FunctionsAndDataColumnsOverlapWarning): + main( + inputs={ + "data_tree": { + "p_id": pd.Series([0]), + "some_func": pd.Series([1]), + }, + "policy_environment": { + "some_func": some_func, + "some_target": another_func, + }, + "targets_tree": {"some_target": None}, + "rounding": False, + # "jit": jit, + }, + targets=["warn_if_functions_and_data_columns_overlap"], + ) + + +def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(): + with warnings.catch_warnings(): + warnings.filterwarnings("error", category=FunctionsAndDataColumnsOverlapWarning) + main( + inputs={ + "data_tree": { + "p_id": pd.Series([0]), + "x": pd.Series([1]), + }, + "policy_environment": {"some_func": some_func}, + "targets_tree": {"some_func": None}, + "rounding": False, + # "jit": jit, + }, + targets=["warn_if_functions_and_data_columns_overlap"], + ) diff --git a/tests/ttsim/test_mettsim.py b/tests/ttsim/test_mettsim.py index 942e5699d3..a5c0e8558d 100644 --- a/tests/ttsim/test_mettsim.py +++ b/tests/ttsim/test_mettsim.py @@ -1,42 +1,29 @@ from __future__ import annotations -import numpy as np +from pathlib import Path + import pytest -from utils import ( +from mettsim.config import METTSIM_ROOT + +from ttsim.config import IS_JAX_INSTALLED +from ttsim.testing_utils import ( PolicyTest, execute_test, - get_policy_test_ids_and_cases, + load_policy_test_data, ) -from ttsim.config import IS_JAX_INSTALLED +TEST_DIR = Path(__file__).parent -policy_test_ids_and_cases = get_policy_test_ids_and_cases() +POLICY_TEST_IDS_AND_CASES = load_policy_test_data(test_dir=TEST_DIR, policy_name="") @pytest.mark.parametrize( "test", - policy_test_ids_and_cases.values(), - ids=policy_test_ids_and_cases.keys(), + POLICY_TEST_IDS_AND_CASES.values(), + ids=POLICY_TEST_IDS_AND_CASES.keys(), ) def test_mettsim(test: PolicyTest): if IS_JAX_INSTALLED: - execute_test(test, jit=True) + execute_test(test, root=METTSIM_ROOT, jit=True) else: - execute_test(test, jit=False) - - -@pytest.mark.xfail( - reason="Testing infrastructure cannot handle single-element expected output" -) -def test_mettsim_single_element_expected_output(): - test = PolicyTest( - info={"precision_atol": 0.01}, - input_tree={ - "p_id": np.array([0]), - "property_tax": {"acre_size_in_hectares": np.array([20])}, - }, - expected_output_tree={"property_tax": {"amount_y": np.array([1000.0])}}, - path=None, - date="2020-01-01", - ) - execute_test(test, jit=False) + execute_test(test, root=METTSIM_ROOT, jit=False) diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index f7c89fcef9..bd35b904ed 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -1,10 +1,11 @@ +# ruff: noqa +# type: ignore from __future__ import annotations import networkx as nx import pytest -from mettsim.config import METTSIM_ROOT -from ttsim import plot_dag, set_up_policy_environment +from ttsim import plot_dag from ttsim.plot_dag import ( _get_selected_nodes, _kth_order_neighbors, @@ -13,7 +14,7 @@ _select_nodes_in_dag, ) -environment = set_up_policy_environment(date="2020-01-01", root=METTSIM_ROOT) +# environment = policy_environment(date="2020-01-01", root=METTSIM_ROOT) @pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/test_policy_environment.py index a86c39831b..5a106a7776 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/test_policy_environment.py @@ -13,62 +13,24 @@ from ttsim import ( ScalarParam, - group_creation_function, + main, policy_function, - set_up_policy_environment, ) -from ttsim.column_objects_param_function import DEFAULT_END_DATE from ttsim.loader import ( orig_tree_with_column_objects_and_param_functions, orig_tree_with_params, ) from ttsim.policy_environment import ( - ConflictingActivePeriodsError, - OrigTreesWithFileNames, _get_param_value, - _param_with_active_periods, - _ParamWithActivePeriod, active_tree_with_column_objects_and_param_functions, active_tree_with_params, - fail_because_active_periods_overlap, - fail_if_group_ids_are_outside_top_level_namespace, - fail_if_name_of_last_branch_element_not_leaf_name_of_function, - grouping_levels, - upsert_tree_into_policy_environment, ) if TYPE_CHECKING: from ttsim.typing import ( - FlatColumnObjectsParamFunctions, NestedColumnObjectsParamFunctions, - NestedPolicyEnvironment, - OrigParamSpec, ) -GENERIC_PARAM_HEADER = { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, -} - - -def return_one(): - return 1 - - -def return_two(): - return 2 - - -def return_three(): - return 3 - - -@group_creation_function() -def fam_id() -> int: - pass - @pytest.fixture(scope="module") def some_params_spec_with_updates_previous(): @@ -100,15 +62,6 @@ def some_int_param(): ) -def test_leap_year_correctly_handled(): - set_up_policy_environment(date="2020-02-29", root=METTSIM_ROOT) - - -def test_fail_if_invalid_date(): - with pytest.raises(ValueError): - set_up_policy_environment(date="2020-02-30", root=METTSIM_ROOT) - - def test_add_jahresanfang(): _orig_tree_with_params = orig_tree_with_params( root=Path(__file__).parent / "test_parameters" @@ -122,66 +75,26 @@ def test_add_jahresanfang(): assert _active_ttsim_tree_with_params["foo_jahresanfang"].value == 1 -@pytest.mark.parametrize( - "functions_tree", - [ - {"foo": policy_function(leaf_name="bar")(return_one)}, - ], -) -def test_fail_if_name_of_last_branch_element_not_leaf_name_of_function( - functions_tree: NestedColumnObjectsParamFunctions, -): - with pytest.raises(KeyError): - fail_if_name_of_last_branch_element_not_leaf_name_of_function(functions_tree) - - -def test_fail_if_group_ids_are_outside_top_level_namespace(): - with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" - ): - fail_if_group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) - - -def test_upsert_tree_into_policy_environment_fail_with_group_ids_outside_top_level_namespace(): # noqa: E501 - with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" - ): - upsert_tree_into_policy_environment( - policy_environment={}, - tree_to_upsert={"n1": {"fam_id": fam_id}}, - ) - - -@pytest.mark.parametrize( - "policy_environment", - [ - {}, - {"foo": policy_function(leaf_name="foo")(return_one)}, - { - "foo": policy_function(leaf_name="foo")(return_one), - "bar": policy_function(leaf_name="bar")(return_two), - }, - ], -) -def test_upsert_tree_into_policy_environment( - policy_environment: NestedPolicyEnvironment, -): - new_function = policy_function(leaf_name="foo")(return_three) - new_environment = upsert_tree_into_policy_environment( - policy_environment=policy_environment, tree_to_upsert={"foo": new_function} - ) - - assert new_environment["foo"] == new_function - - def test_input_is_recognized_as_potential_group_id(): - environment = set_up_policy_environment(root=METTSIM_ROOT, date="2020-01-01") - assert "kin" in grouping_levels(environment) + grouping_levels = main( + inputs={ + "root": METTSIM_ROOT, + "date": datetime.date(2020, 1, 1), + }, + targets=["grouping_levels"], + )["grouping_levels"] + assert "kin" in grouping_levels def test_p_id_not_recognized_as_potential_group_id(): - environment = set_up_policy_environment(root=METTSIM_ROOT, date="2020-01-01") - assert "p" not in grouping_levels(environment) + grouping_levels = main( + inputs={ + "root": METTSIM_ROOT, + "date": datetime.date(2020, 1, 1), + }, + targets=["grouping_levels"], + )["grouping_levels"] + assert "p" not in grouping_levels @pytest.mark.parametrize( @@ -268,465 +181,6 @@ def test_func(): pass -def identity(x): - return x - - -@pytest.mark.parametrize( - "orig_trees", - [ - # Same global module, no overlapping periods, no name clashes. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - params={ - ("c", "g"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 1}, - } - }, - ), - # Same submodule, overlapping periods, different leaf names so no name clashes. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("x", "c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("x", "c", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="g", - )(identity), - }, - params={ - ("x", "c", "h"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 2}, - } - }, - ), - # Different submodules, no overlapping periods, no name clashes. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("x", "c", "f"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - )(identity), - ("x", "d", "f"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - )(identity), - }, - params={ - ("x", "c", "g"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 3}, - } - }, - ), - # Different paths, overlapping periods, same names but no clashes. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("x", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("y", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - params={ - ("z", "a", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 4}, - } - }, - ), - # Different yaml files, no name clashes because of different names. - OrigTreesWithFileNames( - column_objects_and_param_functions={}, - params={ - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 5}, - }, - ("x", "b", "g"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 6}, - }, - }, - ), - ], -) -def test_fail_because_active_periods_overlap_passes(orig_trees: OrigTreesWithFileNames): - fail_because_active_periods_overlap(orig_trees) - - -@pytest.mark.parametrize( - "orig_tree_with_column_objects_and_param_functions", - [ - # Exact overlap. - { - ("a",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Active period for "a" is subset of "b". - { - ("a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b"): policy_function( - start_date="2021-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - }, - # Some overlap. - { - ("a",): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Same as before, but defined in different modules. - { - ("c", "a"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("d", "b"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - # Same as before, but defined in different modules without leaf name. - { - ("c", "f"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - )(identity), - ("d", "f"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - )(identity), - }, - ], -) -def test_fail_because_of_conflicting_active_periods( - orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, -): - with pytest.raises(ConflictingActivePeriodsError): - fail_because_active_periods_overlap( - OrigTreesWithFileNames( - column_objects_and_param_functions=orig_tree_with_column_objects_and_param_functions, - params={}, - ) - ) - - -@pytest.mark.parametrize( - "orig_trees", - [ - # Same global module, no overlap in functions, name clashes leaf name / yaml. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - params={ - ("c", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 1}, - } - }, - ), - # Same paths, no overlap in functions, name clashes leaf name / yaml. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("x", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("x", "a", "c"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - params={ - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 2}, - } - }, - ), - # Same paths, name clashes within params from different yaml files. - OrigTreesWithFileNames( - column_objects_and_param_functions={}, - params={ - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 3}, - }, - ("x", "b", "f"): { - **GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 4}, - }, - }, - ), - ], -) -def test_fail_because_of_conflicting_names(orig_trees: OrigTreesWithFileNames): - with pytest.raises(ConflictingActivePeriodsError): - fail_because_active_periods_overlap(orig_trees) - - -@pytest.mark.parametrize( - "orig_trees", - [ - # Same leaf names across functions / parameters, but no overlapping periods. - OrigTreesWithFileNames( - column_objects_and_param_functions={ - ("c", "a"): policy_function( - start_date="2012-01-01", - end_date="2015-12-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - params={ - ("c", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/foo", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - } - }, - ), - # Different periods specified in different files. - OrigTreesWithFileNames( - column_objects_and_param_functions={}, - params={ - ("c", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - }, - ("d", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/foo", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - }, - }, - ), - ], -) -def test_pass_because_no_overlap_functions_params(orig_trees: OrigTreesWithFileNames): - fail_because_active_periods_overlap(orig_trees) - - -@pytest.mark.parametrize( - "param_spec, leaf_name, expected", - ( - ( - { - "name": {"de": "spam", "en": "spam"}, - "description": {"de": "spam", "en": "spam"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"note": "completely empty"}, - }, - "spam", - [], - ), - ( - { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - }, - "foo", - [ - _ParamWithActivePeriod( - leaf_name="foo", - original_function_name="foo", - start_date=datetime.date(1984, 1, 1), - end_date=DEFAULT_END_DATE, - **GENERIC_PARAM_HEADER, - ) - ], - ), - ( - { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"note": "stop"}, - }, - "foo", - [ - _ParamWithActivePeriod( - leaf_name="foo", - original_function_name="foo", - start_date=datetime.date(1984, 1, 1), - end_date=datetime.date(1984, 12, 31), - **GENERIC_PARAM_HEADER, - ) - ], - ), - ( - { - "name": {"de": "bar", "en": "bar"}, - "description": {"de": "bar", "en": "bar"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/bar", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - }, - "bar", - [ - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(2023, 3, 1), - end_date=DEFAULT_END_DATE, - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(2016, 1, 1), - end_date=datetime.date(2023, 1, 31), - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(1984, 1, 1), - end_date=datetime.date(2011, 12, 31), - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - ], - ), - ), -) -def test_ttsim_param_with_active_periods( - param_spec: OrigParamSpec, - leaf_name: str, - expected: list[_ParamWithActivePeriod], -): - actual = _param_with_active_periods( - param_spec=param_spec, - leaf_name=leaf_name, - ) - assert actual == expected - - @pytest.mark.parametrize( "tree, last_day, function_name_last_day, function_name_next_day", [ diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/test_rounding.py index 2fe9997426..f32033cb66 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/test_rounding.py @@ -5,10 +5,9 @@ from pandas._testing import assert_series_equal from ttsim import ( - OrigTreesWithFileNames, RoundingSpec, - active_tree, - compute_taxes_and_transfers, + main, + policy_environment, policy_function, policy_input, ) @@ -97,11 +96,10 @@ def test_malformed_rounding_specs(): def test_func(): return 0 - active_tree( - orig_trees=OrigTreesWithFileNames( - column_objects_and_param_functions={"x.py": {"test_func": test_func}}, - params={}, - ) + policy_environment( + active_tree_with_column_objects_and_param_functions={ + "x.py": {"test_func": test_func} + }, ) @@ -123,13 +121,17 @@ def test_func(x): } policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} - calc_result = compute_taxes_and_transfers( - data_tree=data_tree, - policy_environment=policy_environment, - targets_tree={"namespace": {"test_func": None}}, - ) + nested_results = main( + inputs={ + "data_tree": data_tree, + "policy_environment": policy_environment, + "targets_tree": {"namespace": {"test_func": None}}, + "rounding": True, + }, + targets=["nested_results"], + )["nested_results"] assert_series_equal( - pd.Series(calc_result["namespace"]["test_func"]), + pd.Series(nested_results["namespace"]["test_func"]), pd.Series(exp_output, dtype=DTYPE), check_names=False, ) @@ -154,13 +156,17 @@ def test_func_m(x): "p_id": p_id, } - calc_result = compute_taxes_and_transfers( - data_tree=data, - policy_environment=policy_environment, - targets_tree={"test_func_y": None}, - ) + nested_results = main( + inputs={ + "data_tree": data, + "policy_environment": policy_environment, + "targets_tree": {"test_func_y": None}, + "rounding": True, + }, + targets=["nested_results"], + )["nested_results"] assert_series_equal( - pd.Series(calc_result["test_func_y"]), + pd.Series(nested_results["test_func_y"]), pd.Series([12.0, 12.0], dtype=DTYPE), check_names=False, ) @@ -188,14 +194,17 @@ def test_func(x): "p_id": p_id, } - calc_result = compute_taxes_and_transfers( - data_tree=data, - policy_environment=policy_environment, - targets_tree={"test_func": None}, - rounding=False, - ) + nested_results = main( + inputs={ + "data_tree": data, + "policy_environment": policy_environment, + "targets_tree": {"test_func": None}, + "rounding": False, + }, + targets=["nested_results"], + )["nested_results"] assert_series_equal( - pd.Series(calc_result["test_func"]), + pd.Series(nested_results["test_func"]), pd.Series(input_values_exp_output, dtype=DTYPE), check_names=False, ) diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/test_shared.py index efd1065d70..fbe1de7b96 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/test_shared.py @@ -1,12 +1,10 @@ from __future__ import annotations -import re from dataclasses import dataclass import pytest from ttsim.shared import ( - assert_valid_ttsim_pytree, create_tree_from_path_and_value, get_name_of_group_by_id, get_re_pattern_for_all_time_units_and_groupings, @@ -14,6 +12,7 @@ insert_path_and_value, merge_trees, partition_tree_by_reference_tree, + to_datetime, upsert_path_and_value, upsert_tree, ) @@ -24,36 +23,13 @@ class SampleDataClass: a: int -@pytest.mark.parametrize( - ("tree", "leaf_checker", "err_substr"), - [ - ( - {"a": 1, "b": 2}, - lambda leaf: leaf is None, - "Leaf at tree[a] is invalid: got 1 of type <class 'int'>.", - ), - ( - {"a": None, "b": {"c": None, "d": 1}}, - lambda leaf: leaf is None, - "Leaf at tree[b][d] is invalid: got 1 of type <class 'int'>.", - ), - ( - [1, 2, 3], - lambda leaf: leaf is None, - "tree must be a dict, got <class 'list'>.", - ), - ( - {1: 2}, - lambda leaf: leaf is None, - "Key 1 in tree must be a string but got <class 'int'>.", - ), - ], -) -def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): - with pytest.raises(TypeError, match=re.escape(err_substr)): - assert_valid_ttsim_pytree( - tree=tree, leaf_checker=leaf_checker, tree_name="tree" - ) +def test_leap_year_correctly_handled(): + to_datetime(date="2020-02-29") + + +def test_fail_if_invalid_date(): + with pytest.raises(ValueError): + to_datetime(date="2020-02-30") @pytest.mark.parametrize( diff --git a/tests/ttsim/test_ttsim_objects.py b/tests/ttsim/test_ttsim_objects.py index 14853155ab..5cfb621847 100644 --- a/tests/ttsim/test_ttsim_objects.py +++ b/tests/ttsim/test_ttsim_objects.py @@ -14,6 +14,7 @@ policy_input, ) from ttsim.column_objects_param_function import ParamFunction, param_function +from ttsim.config import numpy_or_jax as np # ====================================================================================== # PolicyFunction and policy_function @@ -280,3 +281,9 @@ def aggregate_by_p_id_multiple_other_p_ids_present( p_id, p_id_specifier_one, p_id_specifier_two ): pass + + +def test_agg_by_p_id_sum_with_all_missing_p_ids(): + aggregate_by_p_id_sum( + p_id=np.array([180]), p_id_specifier=np.array([-1]), source=np.array([False]) + ) From d19f22a341653912aab36d44bf6ac83236d139ed Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 5 Jun 2025 11:51:06 +0200 Subject: [PATCH 040/109] =?UTF-8?q?Improve=20implementation=20of=20Mehrbed?= =?UTF-8?q?arf=20f=C3=BCr=20Alleinerziehende.=20(#954)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Makes Mehrbedarf more readable, came up in #943. Also fixes a bug where Mehrbedarf was given for all children, not only those below 18. Adjusted regression tests that were affected by this change. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../arbeitslosengeld_2/aggregations.py | 5 ++ src/_gettsim/arbeitslosengeld_2/bedarfe.yaml | 26 ++++----- .../arbeitslosengeld_2/regelbedarf.py | 53 +++++++++---------- .../regelsatz_multiple_children.yaml | 6 +-- .../2009-01-01/kind_20_jahre_in_bg.yaml | 8 +-- .../regelsatz_multiple_children.yaml | 6 +-- 6 files changed, 54 insertions(+), 50 deletions(-) diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index 26706c8250..5bca81453d 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -27,6 +27,11 @@ def anzahl_kinder_bis_15_fg(familie__kind_bis_15: bool, fg_id: int) -> int: pass +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_bis_17_fg(familie__kind_bis_17: bool, fg_id: int) -> int: + pass + + @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) def anzahl_erwachsene_bg(familie__erwachsen: bool, bg_id: int) -> int: pass diff --git a/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml index e1a0a114a0..0505329e3f 100644 --- a/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml +++ b/src/_gettsim/arbeitslosengeld_2/bedarfe.yaml @@ -114,25 +114,25 @@ parameter_mehrbedarf_alleinerziehend: description: de: >- § 21 (3) Nr. 1 SGB II. Mehrbedarfe für Alleinerziehende sind als Anteile vom - maßgebenden Regelbedarf angegeben. ``kind_bis_6_oder_mehrere_bis_15`` gibt den - Anteil bei mind. einem Kind bis 6 Jahren oder zwei oder drei Kindern bis 15 Jahre - an. ``min_1_kind`` gibt den maßgeblichen Anteil vom Regelbedarf je Kind an, wenn - der daraus resultierende Anspruch größer ist als der Anspruch durch - ``kind_bis_6_oder_mehrere_bis_15``. ``max`` gibt den Maximalanteil vom Regelbedarf - an, der für Alleinerziehende als Mehrbedarf berücksichtigt wird. + maßgebenden Regelbedarf angegeben. ``kind_bis_6_oder_2_3_kinder_bis_15`` gibt den + Anteil bei einem Kind bis 6 Jahren oder zwei oder drei Kindern bis 15 Jahre an. + ``basis_je_kind_bis_17`` gibt den maßgeblichen Anteil vom Regelbedarf je Kind an, + wenn der daraus resultierende Anspruch größer ist als der Anspruch durch + ``kind_bis_6_oder_2_3_kinder_bis_15``. ``max`` gibt den Maximalanteil vom + Regelbedarf an, der für Alleinerziehende als Mehrbedarf berücksichtigt wird. en: >- § 21 (3) Nr. 1 SGB II. Additional needs for single parents are given as shares of - the relevant Regelbedarf. ``kind_bis_6_oder_mehrere_bis_15`` gives the share when - there is at least one child up to 6 years or two or three children up to 15 years. - ``min_1_kind`` gives the relevant share of the Regelbedarf per child when the - resulting claim is greater than the claim through - ``kind_bis_6_oder_mehrere_bis_15``. ``max`` gives the maximum share of the + the relevant Regelbedarf. ``kind_bis_6_oder_2_3_kinder_bis_15`` gives the share + when there is one child up to 6 years or two or three children up to 15 years. + ``basis_je_kind_bis_17`` gives the relevant share of the Regelbedarf per child + when the resulting claim is greater than the claim through + ``kind_bis_6_oder_2_3_kinder_bis_15``. ``max`` gives the maximum share of the Regelbedarf that is considered as an additional need for single parents. unit: Share reference_period: Month type: dict 2005-01-01: - min_1_kind: 0.12 - kind_bis_6_oder_mehrere_bis_15: 0.36 + basis_je_kind_bis_17: 0.12 + kind_bis_6_oder_2_3_kinder_bis_15: 0.36 max: 0.6 reference: G. v. 24.12.2003 BGBl. I S. 2954. diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 6ebcaa5dd3..cccc5d5738 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -34,43 +34,42 @@ def regelbedarf_m( @policy_function(start_date="2005-01-01") def mehrbedarf_alleinerziehend_m( familie__alleinerziehend: bool, - anzahl_kinder_fg: int, + anzahl_kinder_bis_17_fg: int, anzahl_kinder_bis_6_fg: int, anzahl_kinder_bis_15_fg: int, parameter_mehrbedarf_alleinerziehend: dict[str, float], ) -> float: - """Compute additional SGB II need for single parents. + """Mehrbedarf (additional need) for single parents as a share of the Regelsatz. - Additional need for single parents. Maximum 60% of the standard amount on top if - you have at least one kid below 6 or two or three below 15, you get 36% - on top alternatively, you get 12% per kid, depending on what's higher. + Mehrbedarf for single parents is capped at 60% of the Regelsatz. There are special + rules for parents of one child up to 6 years old and two or three children up to 15 + years old. + + Reference: §21 SGB II Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ - if familie__alleinerziehend: - # Clip value at calculated minimal share and given upper share - # Note that upper limit is applied last (for many children lower - # could be greater than upper) - out = min( - max( - # Minimal Mehrbedarf share. Minimal rate times number of children - parameter_mehrbedarf_alleinerziehend["min_1_kind"] * anzahl_kinder_fg, - # Increased rated if children up to 6 and/or 2-3 up to 15 are present. - ( - parameter_mehrbedarf_alleinerziehend[ - "kind_bis_6_oder_mehrere_bis_15" - ] - if (anzahl_kinder_bis_6_fg >= 1) - or anzahl_kinder_bis_15_fg == 2 - or anzahl_kinder_bis_15_fg == 3 - else 0.0 - ), - ), - parameter_mehrbedarf_alleinerziehend["max"], + basis_mehrbedarf = ( + parameter_mehrbedarf_alleinerziehend["basis_je_kind_bis_17"] + * anzahl_kinder_bis_17_fg + ) + + if ( + anzahl_kinder_bis_6_fg == 1 + or anzahl_kinder_bis_15_fg == 2 + or anzahl_kinder_bis_15_fg == 3 + ): + mehrbedarf = max( + parameter_mehrbedarf_alleinerziehend["kind_bis_6_oder_2_3_kinder_bis_15"], + mehrbedarf_base, ) else: - out = 0.0 - return out + mehrbedarf = mehrbedarf_base + + if familie__alleinerziehend: + return min(mehrbedarf, parameter_mehrbedarf_alleinerziehend["max"]) + else: + return 0.0 @policy_function( diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index d191fe719d..bb80f8cc02 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -4,7 +4,7 @@ info: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. precision_atol: 0.01 - source: Made up. + source: Regression test. inputs: assumed: alter: @@ -74,7 +74,7 @@ inputs: outputs: arbeitslosengeld_2: erwachsenensatz_m: - - 500.24 + - 459.68 - 0.0 - 0.0 - 0.0 @@ -86,7 +86,7 @@ outputs: - 270.4 - 270.4 regelsatz_m: - - 500.24 + - 459.68 - 202.8 - 202.8 - 270.4 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index 26314e0b2d..c090938ecd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -146,8 +146,8 @@ outputs: - 260.0 - 0.0 betrag_m_bg: - - 305.42 - - 305.42 + - 263.3 + - 263.3 kosten_der_unterkunft_m_bg: - 480.0 - 480.0 @@ -155,5 +155,5 @@ outputs: - 684.5 - 0.0 regelsatz_m_bg: - - 673.92 - - 673.92 + - 631.8 + - 631.8 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index 98b835136b..e4703c6dee 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -4,7 +4,7 @@ info: Test Regelsatz when Familiengemeinschaft (1 adult, 1 kid) is the same as Bedarfsgemeinschaft. precision_atol: 0.01 - source: Made up. + source: Regression test. inputs: assumed: alter: @@ -80,7 +80,7 @@ inputs: outputs: arbeitslosengeld_2: erwachsenensatz_m: - - 833.24 + - 765.68 - 0.0 - 0.0 - 0.0 @@ -92,7 +92,7 @@ outputs: - 491.0 - 471.0 regelsatz_m: - - 833.24 + - 765.68 - 377.0 - 410.0 - 491.0 From ae5936e10e0cdb36fac177403a46ef66fdcde8b3 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Thu, 5 Jun 2025 15:45:52 +0200 Subject: [PATCH 041/109] Fix small typo; #954 was merged a bit too fast. --- src/_gettsim/arbeitslosengeld_2/regelbedarf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index cccc5d5738..49544fb8fe 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -61,10 +61,10 @@ def mehrbedarf_alleinerziehend_m( ): mehrbedarf = max( parameter_mehrbedarf_alleinerziehend["kind_bis_6_oder_2_3_kinder_bis_15"], - mehrbedarf_base, + basis_mehrbedarf, ) else: - mehrbedarf = mehrbedarf_base + mehrbedarf = basis_mehrbedarf if familie__alleinerziehend: return min(mehrbedarf, parameter_mehrbedarf_alleinerziehend["max"]) From ba6d1aa922607c4bf5f4650b66048f87e96da499 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 5 Jun 2025 16:31:39 +0200 Subject: [PATCH 042/109] Consecutiveint type for Anspruchsdauer ALG1 (#955) Replaces piecewise polynomial with ConsecutiveInt1dLookUp type for ALG1 Anspruchsdauer. Came up in #943. --- .../arbeitslosen/anspruchsberechtigt.yaml | 79 +++++++-------- .../arbeitslosen/arbeitslosengeld.py | 96 +++++++++++++++---- .../sozialversicherung/arbeitslosen/inputs.py | 4 +- .../2019-01-01/hh_id_1.yaml | 26 ++--- .../2019-01-01/hh_id_2.yaml | 26 ++--- .../2019-01-01/hh_id_3.yaml | 8 +- .../2019-01-01/hh_id_4.yaml | 8 +- .../2019-01-01/hh_id_5.yaml | 8 +- .../2019-01-01/hh_id_6.yaml | 8 +- .../2019-01-01/hh_id_7.yaml | 8 +- .../2019-01-01/hh_id_8.yaml | 8 +- .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 14 +-- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 8 +- .../2015-01-01/skip_hh_id_5.yaml | 10 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 8 +- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 8 +- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 14 +-- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 10 +- 18 files changed, 201 insertions(+), 150 deletions(-) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml b/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml index b1e7b39ec2..774760086e 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml +++ b/src/_gettsim/sozialversicherung/arbeitslosen/anspruchsberechtigt.yaml @@ -22,7 +22,7 @@ stundengrenze: 2012-04-01: value: 15 reference: Art. 2 G. v. 20.12.2011 BGBl I S. 2854 -anspruchsdauer_nach_alter: +raw_anspruchsdauer_nach_alter: name: de: Anspruchsdauer für ALG 1 nach Alter. en: Period of ALG 1 eligibility based on age. @@ -37,25 +37,14 @@ anspruchsdauer_nach_alter: person was subject to compulsory insurance unit: Months reference_period: null - type: piecewise_constant + type: require_converter 1997-03-24: - 0: - lower_threshold: -inf - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 0 - intercept_at_lower_threshold: 12 - 2: - lower_threshold: 50 - intercept_at_lower_threshold: 15 - 3: - lower_threshold: 55 - intercept_at_lower_threshold: 18 - 4: - lower_threshold: 58 - upper_threshold: inf - intercept_at_lower_threshold: 24 -anspruchsdauer_nach_versicherungspflichtigen_monaten: + 0: 12 + 50: 15 + 55: 18 + 58: 24 + max_age: 120 +raw_anspruchsdauer_nach_versicherungspflichtigen_monaten: name: de: Anspruchsdauer für ALG 1 nach versicherungspflichtigen Monaten. en: Period of ALG 1 eligibility based on months of compulsory insurance. @@ -70,30 +59,30 @@ anspruchsdauer_nach_versicherungspflichtigen_monaten: person was subject to compulsory insurance unit: Months reference_period: null - type: piecewise_constant + type: require_converter 1997-03-24: - 0: - lower_threshold: -inf - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 12 - intercept_at_lower_threshold: 6 - 2: - lower_threshold: 18 - intercept_at_lower_threshold: 8 - 3: - lower_threshold: 20 - intercept_at_lower_threshold: 10 - 4: - lower_threshold: 24 - intercept_at_lower_threshold: 12 - 5: - lower_threshold: 30 - intercept_at_lower_threshold: 15 - 6: - lower_threshold: 36 - intercept_at_lower_threshold: 18 - 7: - lower_threshold: 48 - upper_threshold: inf - intercept_at_lower_threshold: 24 + 0: 0 + 12: 6 + 18: 8 + 20: 10 + 24: 12 + 30: 15 + 36: 18 + 48: 24 + max_months: 700 +mindestversicherungsmonate: + name: + de: Mindestanzahl an Beitragsmonaten in den letzten 30 Monaten vor ALG 1 Bezug + en: Minimum number of months of insurance in the last 30 months before ALG 1 receipt + description: + de: >- + § 142 Abs. 2 SGB III + Mindestanzahl an Beitragsmonaten in den letzten 30 Monaten vor ALG 1 Bezug + en: >- + § 142 Abs. 2 SGB III + Minimum number of months of insurance in the last 30 months before ALG 1 receipt + unit: Months + reference_period: null + type: scalar + 1997-03-24: + value: 12 diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index d7ab52428b..cb31752f14 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -2,7 +2,20 @@ from __future__ import annotations -from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function +from typing import TYPE_CHECKING + +from ttsim import ( + get_consecutive_int_1d_lookup_table_param_value, + param_function, + piecewise_polynomial, + policy_function, +) + +if TYPE_CHECKING: + from ttsim import ( + ConsecutiveInt1dLookupTableParamValue, + PiecewisePolynomialParamValue, + ) @policy_function(end_date="1998-07-31", leaf_name="betrag_m") @@ -37,27 +50,25 @@ def betrag_m( def monate_verbleibender_anspruchsdauer( alter: int, monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, - anwartschaftszeit: bool, + mindestversicherungszeit_erreicht: bool, monate_durchgängigen_bezugs_von_arbeitslosengeld: float, - anspruchsdauer_nach_alter: PiecewisePolynomialParamValue, - anspruchsdauer_nach_versicherungspflichtigen_monaten: PiecewisePolynomialParamValue, + anspruchsdauer_nach_alter: ConsecutiveInt1dLookupTableParamValue, + anspruchsdauer_nach_versicherungspflichtigen_monaten: ConsecutiveInt1dLookupTableParamValue, ) -> float: - """Calculate the remaining amount of months a person can receive unemployment - benefits. - - """ - nach_alter = piecewise_polynomial( - x=alter, - parameters=anspruchsdauer_nach_alter, - ) - nach_versich_pfl = piecewise_polynomial( - x=monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren, - parameters=anspruchsdauer_nach_versicherungspflichtigen_monaten, + """Remaining amount of months of potential unemployment benefit claims.""" + auf_altersbasis = anspruchsdauer_nach_alter.values_to_look_up[ + alter - anspruchsdauer_nach_alter.base_to_subtract + ] + auf_basis_versicherungspflichtiger_monate = ( + anspruchsdauer_nach_versicherungspflichtigen_monaten.values_to_look_up[ + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren + - anspruchsdauer_nach_versicherungspflichtigen_monaten.base_to_subtract + ] ) - if anwartschaftszeit: + if mindestversicherungszeit_erreicht: out = max( - min(nach_alter, nach_versich_pfl) + min(auf_altersbasis, auf_basis_versicherungspflichtiger_monate) - monate_durchgängigen_bezugs_von_arbeitslosengeld, 0, ) @@ -67,6 +78,19 @@ def monate_verbleibender_anspruchsdauer( return out +@policy_function() +def mindestversicherungszeit_erreicht( + monate_beitragspflichtig_versichert_in_letzten_30_monaten: int, + mindestversicherungsmonate: int, +) -> bool: + """At least 12 months of unemployment contributions in the 30 months before claiming + unemployment insurance.""" + return ( + monate_beitragspflichtig_versichert_in_letzten_30_monaten + >= mindestversicherungsmonate + ) + + @policy_function() def grundsätzlich_anspruchsberechtigt( alter: int, @@ -124,3 +148,41 @@ def einkommen_vorjahr_proxy_m( ) out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 return max(out, 0.0) + + +@param_function(start_date="1997-03-24") +def anspruchsdauer_nach_alter( + raw_anspruchsdauer_nach_alter: dict[str | int, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Amount of potential months of unemployment benefit claims by age.""" + tmp = raw_anspruchsdauer_nach_alter.copy() + max_age: int = tmp.pop("max_age") + ages_in_spec: list[int] = sorted(tmp.keys()) # type: ignore[arg-type] + + full_spec: dict[int, int] = {} + for a in range(min(ages_in_spec), max_age): + if a not in ages_in_spec: + full_spec[a] = full_spec[a - 1] + else: + full_spec[a] = tmp[a] + + return get_consecutive_int_1d_lookup_table_param_value(full_spec) + + +@param_function(start_date="1997-03-24") +def anspruchsdauer_nach_versicherungspflichtigen_monaten( + raw_anspruchsdauer_nach_versicherungspflichtigen_monaten: dict[str | int, int], +) -> ConsecutiveInt1dLookupTableParamValue: + """Amount of potential months of unemployment benefit claims by age.""" + tmp = raw_anspruchsdauer_nach_versicherungspflichtigen_monaten.copy() + max_months: int = tmp.pop("max_months") + ages_in_spec: list[int] = sorted(tmp.keys()) # type: ignore[arg-type] + + full_spec: dict[int, int] = {} + for a in range(max_months): + if a not in ages_in_spec: + full_spec[a] = full_spec[a - 1] + else: + full_spec[a] = tmp[a] + + return get_consecutive_int_1d_lookup_table_param_value(full_spec) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index 108b73789a..5384bbeee5 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -6,8 +6,8 @@ @policy_input() -def anwartschaftszeit() -> bool: - """At least 12 months of unemployment contributions in the 30 months before claiming unemployment insurance.""" +def monate_beitragspflichtig_versichert_in_letzten_30_monaten() -> int: + """Number of months of compulsory insurance in the 30 months before claiming unemployment.""" @policy_input() diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index b7b7e17b5e..c5ae464c78 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -207,26 +207,26 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true - - true - - true - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + - 13 + - 14 + - 15 arbeitssuchend: - false - false - false - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + - 0 + - 0 + - 0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + - 60 + - 60 + - 60 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index 234933d09b..ffde0fc060 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -208,26 +208,26 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true - - true - - true - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + - 13 + - 14 + - 15 arbeitssuchend: - false - false - false - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + - 0 + - 0 + - 0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 - - 60.0 - - 60.0 - - 60.0 + - 60 + - 60 + - 60 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 7d080e497b..7d0b50d0b0 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 6c01f5bd74..753f0d61d9 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 1f39d229ba..9d5089af0d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 3683534159..6ec238d21f 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index 9f260c7082..ddcf7d6e46 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index 5141600f43..5fe81971d2 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -97,14 +97,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 60.0 + - 60 kranken: beitrag: privat_versichert: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index 039427e7e3..f72aa0cfae 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -10,18 +10,18 @@ inputs: - true sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true - - false + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + - 11 arbeitssuchend: - true - false monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 + - 0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 - - 0.0 + - 12 + - 0 provided: alter: - 40 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index 7e5732f8a2..d320417775 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -9,14 +9,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - true monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + - 12 provided: alter: - 66 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml index 9782b3dce3..6ed57b340d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml @@ -8,18 +8,18 @@ inputs: kindergeld__grundsätzlich_anspruchsberechtigt: - false - true - sozialversicherung__arbeitslosen__anwartschaftszeit: + sozialversicherung__arbeitslosen__mindestversicherungszeit_erreicht: - true - false sozialversicherung__arbeitslosen__arbeitssuchend: - true - false sozialversicherung__arbeitslosen__monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 0.0 + - 0 + - 0 sozialversicherung__arbeitslosen__monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 - - 0.0 + - 12 + - 0 provided: alter: - 30 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index e40010d35b..5e8316133d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -9,14 +9,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - true monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + - 12 provided: alter: - 30 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 8e388cdf6a..02736333cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -9,14 +9,14 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 arbeitssuchend: - true monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 + - 0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 + - 12 provided: alter: - 30 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index d81fe69917..4c9be70c0c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -10,18 +10,18 @@ inputs: - false sozialversicherung: arbeitslosen: - anwartschaftszeit: - - false - - true + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 10 + - 12 arbeitssuchend: - false - true monate_durchgängigen_bezugs_von_arbeitslosengeld: - - 0.0 - - 12.0 + - 0 + - 12 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 0.0 - - 0.0 + - 0 + - 0 provided: alter: - 5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index d0e1105db2..d0c9ff7c60 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -10,9 +10,9 @@ inputs: - true sozialversicherung: arbeitslosen: - anwartschaftszeit: - - true - - false + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + - 11 arbeitssuchend: - true - false @@ -20,8 +20,8 @@ inputs: - 0.0 - 0.0 monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: - - 12.0 - - 0.0 + - 12 + - 0 provided: alter: - 30 From cdd961182c39ce70cd2f3ee75d84aa0316be290e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:13:23 +0200 Subject: [PATCH 043/109] Use relative paths for taxes and transfers (#957) Replace absolute with relative paths whenever possible. Closes #849 --- .../zu_versteuerndes_einkommen.py | 16 +- .../sozialversicherung/beitr\303\244ge.py" | 32 +-- src/_gettsim/sozialversicherung/midijob.py | 100 ++++---- .../rente/altersrente/altersgrenzen.py | 226 ++++++++---------- .../rente/altersrente/altersrente.py | 14 +- .../altersrente/hinzuverdienstgrenzen.py | 17 +- 6 files changed, 184 insertions(+), 221 deletions(-) diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index 88ba2dcb03..0a99661a33 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -14,14 +14,14 @@ ) def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, - einkommensteuer__gesamteinkommen_y: float, + gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: - out = einkommensteuer__gesamteinkommen_y + out = gesamteinkommen_y return out @@ -39,14 +39,14 @@ def zu_versteuerndes_einkommen_y_sn_mit_abrundungsregel( ) def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, - einkommensteuer__gesamteinkommen_y: float, + gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: - out = einkommensteuer__gesamteinkommen_y + out = gesamteinkommen_y return out @@ -63,24 +63,24 @@ def zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel( ) def zu_versteuerndes_einkommen_y_sn_mit_dmark_rundungsregel( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, - einkommensteuer__gesamteinkommen_y: float, + gesamteinkommen_y: float, kinderfreibetrag_günstiger_sn: bool, ) -> float: """Calculate taxable income on Steuernummer level.""" if kinderfreibetrag_günstiger_sn: out = zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn else: - out = einkommensteuer__gesamteinkommen_y + out = gesamteinkommen_y return out @policy_function() def zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn( - einkommensteuer__gesamteinkommen_y: float, + gesamteinkommen_y: float, kinderfreibetrag_y_sn: float, ) -> float: """Calculate taxable income with child allowance on Steuernummer level.""" - out = einkommensteuer__gesamteinkommen_y - kinderfreibetrag_y_sn + out = gesamteinkommen_y - kinderfreibetrag_y_sn return max(out, 0.0) diff --git "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" index 50a4c0cdfd..d3de38e028 100644 --- "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -7,33 +7,33 @@ @policy_function() def beiträge_versicherter_m( - sozialversicherung__pflege__beitrag__betrag_versicherter_m: float, - sozialversicherung__kranken__beitrag__betrag_versicherter_m: float, - sozialversicherung__rente__beitrag__betrag_versicherter_m: float, - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: float, + pflege__beitrag__betrag_versicherter_m: float, + kranken__beitrag__betrag_versicherter_m: float, + rente__beitrag__betrag_versicherter_m: float, + arbeitslosen__beitrag__betrag_versicherter_m: float, ) -> float: """Sum of social insurance contributions paid by the insured person.""" return ( - sozialversicherung__pflege__beitrag__betrag_versicherter_m - + sozialversicherung__kranken__beitrag__betrag_versicherter_m - + sozialversicherung__rente__beitrag__betrag_versicherter_m - + sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m + pflege__beitrag__betrag_versicherter_m + + kranken__beitrag__betrag_versicherter_m + + rente__beitrag__betrag_versicherter_m + + arbeitslosen__beitrag__betrag_versicherter_m ) @policy_function() def beiträge_arbeitgeber_m( - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: float, - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: float, - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: float, - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: float, + pflege__beitrag__betrag_arbeitgeber_m: float, + kranken__beitrag__betrag_arbeitgeber_m: float, + rente__beitrag__betrag_arbeitgeber_m: float, + arbeitslosen__beitrag__betrag_arbeitgeber_m: float, ) -> float: """Sum of employer's social insurance contributions.""" return ( - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m - + sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m - + sozialversicherung__rente__beitrag__betrag_arbeitgeber_m - + sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m + pflege__beitrag__betrag_arbeitgeber_m + + kranken__beitrag__betrag_arbeitgeber_m + + rente__beitrag__betrag_arbeitgeber_m + + arbeitslosen__beitrag__betrag_arbeitgeber_m ) diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index a5bdec9d41..7c34628853 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -52,14 +52,14 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + rente__beitrag__beitragssatz_jahresanfang: float, + arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + pflege__beitrag__beitragssatz_jahresanfang: float, lohnsteuer__minijob_arbeitgeberpauschale: float, - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, - sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, + kranken__beitrag__minijob_arbeitgeberpauschale: float, + rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F until December 2004. @@ -68,25 +68,23 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 - + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 - + sozialversicherung__pflege__beitrag__beitragssatz_jahresanfang / 2 + rente__beitrag__beitragssatz_jahresanfang / 2 + + arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 + + pflege__beitrag__beitragssatz_jahresanfang / 2 ) # Then calculate specific shares an_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang ) ag_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang ) # Sum over the shares which are specific for midijobs. pausch_mini = ( - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale - + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale + kranken__beitrag__minijob_arbeitgeberpauschale + + rente__beitrag__minijob_arbeitgeberpauschale + lohnsteuer__minijob_arbeitgeberpauschale ) @@ -101,16 +99,14 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[ - str, float - ], + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + rente__beitrag__beitragssatz_jahresanfang: float, + arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float], lohnsteuer__minijob_arbeitgeberpauschale: float, - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, - sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, + kranken__beitrag__minijob_arbeitgeberpauschale: float, + rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F between 2005 and September 2025. @@ -120,27 +116,22 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 - + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 - + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[ - "standard" - ] - / 2 + rente__beitrag__beitragssatz_jahresanfang / 2 + + arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 + + pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang["standard"] / 2 ) an_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang ) ag_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang ) # Sum over the shares which are specific for midijobs. pausch_mini = ( - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale - + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale + kranken__beitrag__minijob_arbeitgeberpauschale + + rente__beitrag__minijob_arbeitgeberpauschale + lohnsteuer__minijob_arbeitgeberpauschale ) @@ -154,15 +145,13 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_ohne_minijob_steuerpauschale( - sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[ - str, float - ], - sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang: float, - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale: float, - sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale: float, + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + rente__beitrag__beitragssatz_jahresanfang: float, + pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float], + arbeitslosen__beitrag__beitragssatz_jahresanfang: float, + kranken__beitrag__minijob_arbeitgeberpauschale: float, + rente__beitrag__minijob_arbeitgeberpauschale: float, ) -> float: """Midijob Faktor F since October 2022. @@ -174,30 +163,25 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( # First calculate the factor F from the formula in § 163 (10) SGB VI # Therefore sum the contributions which are the same for employee and employer allg_sozialv_beitr = ( - sozialversicherung__rente__beitrag__beitragssatz_jahresanfang / 2 - + sozialversicherung__pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang[ - "standard" - ] - / 2 - + sozialversicherung__arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 + rente__beitrag__beitragssatz_jahresanfang / 2 + + pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang["standard"] / 2 + + arbeitslosen__beitrag__beitragssatz_jahresanfang / 2 ) # Then calculate specific shares an_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang ) ag_anteil = ( - allg_sozialv_beitr - + sozialversicherung__kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang + allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang ) # Sum over the shares which are specific for midijobs. # New formula only inludes the lump-sum contributions to health care # and pension insurance pausch_mini = ( - sozialversicherung__kranken__beitrag__minijob_arbeitgeberpauschale - + sozialversicherung__rente__beitrag__minijob_arbeitgeberpauschale + kranken__beitrag__minijob_arbeitgeberpauschale + + rente__beitrag__minijob_arbeitgeberpauschale ) # Now calculate final factor f diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 0c2db7ff99..1290fd1445 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -11,13 +11,13 @@ leaf_name="altersgrenze", ) def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + wegen_arbeitslosigkeit__altersgrenze: float, + für_frauen__grundsätzlich_anspruchsberechtigt: bool, + für_frauen__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze: float, + regelaltersrente__altersgrenze: float, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -27,20 +27,16 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( gender, insurance duration, health/disability, employment status. """ - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = np.minimum( - out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze - ) - if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = regelaltersrente__altersgrenze + if für_frauen__grundsätzlich_anspruchsberechtigt: + out = np.minimum(out, für_frauen__altersgrenze) + if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: out = np.minimum( out, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, - ) - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum( - out, sozialversicherung__rente__altersrente__langjährig__altersgrenze + wegen_arbeitslosigkeit__altersgrenze, ) + if langjährig__grundsätzlich_anspruchsberechtigt: + out = np.minimum(out, langjährig__altersgrenze) return out @@ -51,15 +47,15 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( leaf_name="altersgrenze", ) def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + für_frauen__grundsätzlich_anspruchsberechtigt: bool, + für_frauen__altersgrenze: float, + wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + wegen_arbeitslosigkeit__altersgrenze: float, + besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, + besonders_langjährig__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze: float, + regelaltersrente__altersgrenze: float, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -74,24 +70,20 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( Rente für Frauen have reached the normal retirement age. """ - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = np.minimum( - out, sozialversicherung__rente__altersrente__für_frauen__altersgrenze - ) - if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = regelaltersrente__altersgrenze + if für_frauen__grundsätzlich_anspruchsberechtigt: + out = np.minimum(out, für_frauen__altersgrenze) + if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: out = np.minimum( out, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + wegen_arbeitslosigkeit__altersgrenze, ) - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum( - out, sozialversicherung__rente__altersrente__langjährig__altersgrenze - ) - if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + if langjährig__grundsätzlich_anspruchsberechtigt: + out = np.minimum(out, langjährig__altersgrenze) + if besonders_langjährig__grundsätzlich_anspruchsberechtigt: out = np.minimum( out, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, + besonders_langjährig__altersgrenze, ) return out @@ -102,11 +94,11 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( leaf_name="altersgrenze", ) def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + besonders_langjährig__grundsätzlich_anspruchsberechtigt: bool, + besonders_langjährig__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze: float, + regelaltersrente__altersgrenze: float, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -116,15 +108,13 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( gender, insurance duration, health/disability, employment status. """ - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum( - out, sozialversicherung__rente__altersrente__langjährig__altersgrenze - ) - if sozialversicherung__rente__altersrente__besonders_langjährig__grundsätzlich_anspruchsberechtigt: + out = regelaltersrente__altersgrenze + if langjährig__grundsätzlich_anspruchsberechtigt: + out = np.minimum(out, langjährig__altersgrenze) + if besonders_langjährig__grundsätzlich_anspruchsberechtigt: out = np.minimum( out, - sozialversicherung__rente__altersrente__besonders_langjährig__altersgrenze, + besonders_langjährig__altersgrenze, ) return out @@ -135,13 +125,13 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( leaf_name="altersgrenze_vorzeitig", ) def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig: float, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + wegen_arbeitslosigkeit__altersgrenze_vorzeitig: float, + für_frauen__grundsätzlich_anspruchsberechtigt: bool, + für_frauen__altersgrenze_vorzeitig: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze_vorzeitig: float, + regelaltersrente__altersgrenze: float, ) -> float: """Earliest possible retirement age after checking for eligibility. @@ -150,23 +140,19 @@ def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. """ - frauen_vorzeitig = ( - sozialversicherung__rente__altersrente__für_frauen__altersgrenze_vorzeitig - ) + frauen_vorzeitig = für_frauen__altersgrenze_vorzeitig - arbeitsl_vorzeitig = sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze_vorzeitig + arbeitsl_vorzeitig = wegen_arbeitslosigkeit__altersgrenze_vorzeitig - langjährig_vorzeitig = ( - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig - ) + langjährig_vorzeitig = langjährig__altersgrenze_vorzeitig - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + out = regelaltersrente__altersgrenze - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: + if langjährig__grundsätzlich_anspruchsberechtigt: out = langjährig_vorzeitig - if sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: + if für_frauen__grundsätzlich_anspruchsberechtigt: out = np.minimum(out, frauen_vorzeitig) - if sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: out = np.minimum(out, arbeitsl_vorzeitig) return out @@ -174,9 +160,9 @@ def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( @policy_function(start_date="2018-01-01", leaf_name="altersgrenze_vorzeitig") def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze_vorzeitig: float, + regelaltersrente__altersgrenze: float, ) -> float: """Earliest possible retirement age after checking for eligibility. @@ -184,12 +170,12 @@ def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( duration, health/disability, employment status. """ - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + out = regelaltersrente__altersgrenze - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = sozialversicherung__rente__altersrente__langjährig__altersgrenze_vorzeitig + if langjährig__grundsätzlich_anspruchsberechtigt: + out = langjährig__altersgrenze_vorzeitig else: - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + out = regelaltersrente__altersgrenze return out @@ -198,9 +184,9 @@ def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( end_date="2017-12-31", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" ) def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + für_frauen__grundsätzlich_anspruchsberechtigt: bool, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, ) -> bool: """Eligibility for some form ofearly retirement. @@ -211,9 +197,9 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( """ return ( - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - or sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - or sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + für_frauen__grundsätzlich_anspruchsberechtigt + or langjährig__grundsätzlich_anspruchsberechtigt + or wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ) @@ -221,25 +207,25 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( start_date="2018-01-01", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" ) def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__grundsätzlich_anspruchsberechtigt: bool, ) -> bool: """Eligibility for early retirement. Can only be claimed if eligible for "Rente für langjährig Versicherte". """ - return sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt + return langjährig__grundsätzlich_anspruchsberechtigt @policy_function(end_date="2017-12-31", leaf_name="referenzalter_abschlag") def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze: float, - sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__für_frauen__altersgrenze: float, - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: bool, + wegen_arbeitslosigkeit__altersgrenze: float, + für_frauen__grundsätzlich_anspruchsberechtigt: bool, + für_frauen__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze: float, + regelaltersrente__altersgrenze: float, ) -> float: """Reference age for deduction calculation in case of early retirement (Zugangsfaktor). @@ -249,65 +235,63 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( and Rente für Frauen have reached the normal retirement age. """ if ( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - and sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt - and sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + langjährig__grundsätzlich_anspruchsberechtigt + and für_frauen__grundsätzlich_anspruchsberechtigt + and wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ): out = min( [ - sozialversicherung__rente__altersrente__für_frauen__altersgrenze, - sozialversicherung__rente__altersrente__langjährig__altersgrenze, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + für_frauen__altersgrenze, + langjährig__altersgrenze, + wegen_arbeitslosigkeit__altersgrenze, ] ) elif ( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - and sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt + langjährig__grundsätzlich_anspruchsberechtigt + and für_frauen__grundsätzlich_anspruchsberechtigt ): out = min( [ - sozialversicherung__rente__altersrente__für_frauen__altersgrenze, - sozialversicherung__rente__altersrente__langjährig__altersgrenze, + für_frauen__altersgrenze, + langjährig__altersgrenze, ] ) elif ( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt - and sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt + langjährig__grundsätzlich_anspruchsberechtigt + and wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ): out = min( [ - sozialversicherung__rente__altersrente__langjährig__altersgrenze, - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze, + langjährig__altersgrenze, + wegen_arbeitslosigkeit__altersgrenze, ] ) - elif sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = sozialversicherung__rente__altersrente__langjährig__altersgrenze - elif sozialversicherung__rente__altersrente__für_frauen__grundsätzlich_anspruchsberechtigt: - out = sozialversicherung__rente__altersrente__für_frauen__altersgrenze - elif sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = ( - sozialversicherung__rente__altersrente__wegen_arbeitslosigkeit__altersgrenze - ) + elif langjährig__grundsätzlich_anspruchsberechtigt: + out = langjährig__altersgrenze + elif für_frauen__grundsätzlich_anspruchsberechtigt: + out = für_frauen__altersgrenze + elif wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: + out = wegen_arbeitslosigkeit__altersgrenze else: - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + out = regelaltersrente__altersgrenze return out @policy_function(start_date="2018-01-01", leaf_name="referenzalter_abschlag") def referenzalter_abschlag_ohne_arbeitslosigkeit_frauen( - sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__langjährig__altersgrenze: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + langjährig__grundsätzlich_anspruchsberechtigt: bool, + langjährig__altersgrenze: float, + regelaltersrente__altersgrenze: float, ) -> float: """Reference age for deduction calculation in case of early retirement (Zugangsfaktor). Normal retirement age if not eligible for early retirement. """ - if sozialversicherung__rente__altersrente__langjährig__grundsätzlich_anspruchsberechtigt: - out = sozialversicherung__rente__altersrente__langjährig__altersgrenze + if langjährig__grundsätzlich_anspruchsberechtigt: + out = langjährig__altersgrenze else: - out = sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + out = regelaltersrente__altersgrenze return out diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index d43d13f30b..e3ae03ffec 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -129,12 +129,12 @@ def rentenwert_nach_wohnort( @policy_function() def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt: float, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + regelaltersrente__altersgrenze: float, referenzalter_abschlag: float, altersgrenze: float, altersgrenze_vorzeitig: float, vorzeitig_grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: bool, + regelaltersrente__grundsätzlich_anspruchsberechtigt: bool, zugangsfaktor_veränderung_pro_jahr: dict[str, float], ) -> float: """Zugangsfaktor (pension adjustment factor). @@ -158,11 +158,11 @@ def zugangsfaktor( Returns 0 if the person is not eligible for receiving pension benefits because either i) the person is younger than the earliest possible retirement age or ii) the person is not eligible for pension benefits because - `sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt` + `regelaltersrente__grundsätzlich_anspruchsberechtigt` is False. """ - if sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt: + if regelaltersrente__grundsätzlich_anspruchsberechtigt: # Early retirement (before full retirement age): Zugangsfaktor < 1 if ( sozialversicherung__rente__alter_bei_renteneintritt < altersgrenze @@ -191,13 +191,13 @@ def zugangsfaktor( # Zugangsfaktor > 1 elif ( sozialversicherung__rente__alter_bei_renteneintritt - > sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + > regelaltersrente__altersgrenze ): out = ( 1 + ( sozialversicherung__rente__alter_bei_renteneintritt - - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + - regelaltersrente__altersgrenze ) * zugangsfaktor_veränderung_pro_jahr["späterer_renteneintritt"] ) @@ -207,7 +207,7 @@ def zugangsfaktor( out = 1.0 # Claiming pension is not possible if - # sozialversicherung__rente__altersrente__regelaltersrente__grundsätzlich_anspruchsberechtigt is + # regelaltersrente__grundsätzlich_anspruchsberechtigt is # 'False'. Return 0 in this case. Then, the pension payment is 0 as well. else: out = 0.0 diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py index 74fd90e558..e106733cda 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py @@ -10,7 +10,7 @@ ) def bruttorente_m_mit_harter_hinzuverdienstgrenze( alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + regelaltersrente__altersgrenze: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, bruttorente_basisbetrag_m: float, hinzuverdienstgrenze: float, @@ -21,9 +21,7 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( """ # TODO (@MImmesberger): Use age with monthly precision. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 - if ( - alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - ) or ( + if (alter >= regelaltersrente__altersgrenze) or ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <= hinzuverdienstgrenze ): @@ -44,7 +42,7 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( ) def bruttorente_m_mit_hinzuverdienstdeckel( alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + regelaltersrente__altersgrenze: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, differenz_bruttolohn_hinzuverdienstdeckel_m: float, zahlbetrag_ohne_deckel_m: float, @@ -58,8 +56,7 @@ def bruttorente_m_mit_hinzuverdienstdeckel( # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 if ( differenz_bruttolohn_hinzuverdienstdeckel_m > 0 - and alter - <= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze + and alter <= regelaltersrente__altersgrenze and einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y > 0 ): @@ -80,7 +77,7 @@ def bruttorente_m_mit_hinzuverdienstdeckel( def zahlbetrag_ohne_deckel_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, alter: int, - sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze: float, + regelaltersrente__altersgrenze: float, bruttorente_basisbetrag_m: float, differenz_bruttolohn_hinzuverdienstgrenze_m: float, hinzuverdienstgrenze: float, @@ -92,9 +89,7 @@ def zahlbetrag_ohne_deckel_m( # TODO (@MImmesberger): Use age with monthly precision. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 # No deduction because of age or low earnings - if ( - alter >= sozialversicherung__rente__altersrente__regelaltersrente__altersgrenze - ) or ( + if (alter >= regelaltersrente__altersgrenze) or ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y <= hinzuverdienstgrenze ): From e5aaf0a74b52481a28e27dad87933201c6020d67 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 25 Jun 2025 18:39:47 +0200 Subject: [PATCH 044/109] Hierarchical interface (#953) Add a prototype of the new interface, implementing the sketch at #951 and discussions mostly in #970, #976. Many more improvements. We now have two DAGs: - The interface DAG (new) - The taxes & transfers DAG (which already used to be there) --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Co-authored-by: Max Jahn <max.jahn45@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tim Mensinger <mensingertim@gmail.com> --- .github/dependabot.yml | 11 + .pre-commit-config.yaml | 5 +- conftest.py | 44 + docs/conf.py | 4 +- interface-prototype.ipynb | 456 ++++++++ pixi.lock | 177 ++- pyproject.toml | 157 +-- sandbox/check-autocomplete.ipynb | 92 ++ .../arbeitslosengeld_2/aggregations.py | 2 +- .../arbeitslosengeld_2/arbeitslosengeld_2.py | 2 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 23 +- .../freibetr\303\244ge_verm\303\266gen.py" | 6 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 6 +- .../kindergeld\303\274bertrag.py" | 41 +- .../arbeitslosengeld_2/regelbedarf.py | 19 +- src/_gettsim/config.py | 6 - .../abgeltungssteuer/abgeltungssteuer.py | 4 +- .../abz\303\274ge/alleinerziehend.py" | 5 +- .../einkommensteuer/abz\303\274ge/alter.py" | 20 +- .../abz\303\274ge/behinderung.py" | 11 +- .../einkommensteuer/abz\303\274ge/betrag.py" | 2 +- .../einkommensteuer/abz\303\274ge/inputs.py" | 2 +- .../abz\303\274ge/sonderausgaben.py" | 9 +- .../abz\303\274ge/vorsorge.py" | 12 +- src/_gettsim/einkommensteuer/einkommen.py | 5 +- .../einkommensteuer/einkommensteuer.py | 46 +- .../aus_forst_und_landwirtschaft/inputs.py" | 2 +- .../aus_gewerbebetrieb/inputs.py" | 2 +- .../aus_kapitalverm\303\266gen.py" | 5 +- .../aus_kapitalverm\303\266gen/inputs.py" | 2 +- ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 3 +- .../inputs.py" | 2 +- .../inputs.py" | 2 +- .../aus_vermietung_und_verpachtung/inputs.py" | 2 +- .../eink\303\274nfte/eink\303\274nfte.py" | 2 +- .../eink\303\274nfte/inputs.py" | 2 +- .../eink\303\274nfte/sonstige/inputs.py" | 4 +- .../eink\303\274nfte/sonstige/sonstige.py" | 13 +- src/_gettsim/einkommensteuer/inputs.py | 2 +- .../einkommensteuer/kinderfreibetrag.py | 7 +- .../zu_versteuerndes_einkommen.py | 7 +- src/_gettsim/elterngeld/einkommen.py | 10 +- src/_gettsim/elterngeld/elterngeld.py | 9 +- src/_gettsim/elterngeld/geschwisterbonus.py | 2 +- src/_gettsim/elterngeld/inputs.py | 2 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 19 +- src/_gettsim/erziehungsgeld/inputs.py | 6 +- src/_gettsim/familie/familie.py | 2 +- src/_gettsim/familie/inputs.py | 2 +- src/_gettsim/grundsicherung/bedarfe.py | 4 +- .../grundsicherung/im_alter/einkommen.py | 19 +- .../grundsicherung/im_alter/im_alter.py | 4 +- src/_gettsim/household_characteristics.py | 8 +- src/_gettsim/ids.py | 221 ++-- src/_gettsim/individual_characteristics.py | 6 +- src/_gettsim/inputs.py | 4 +- src/_gettsim/interface.py | 45 +- src/_gettsim/kinderbonus/kinderbonus.py | 3 +- src/_gettsim/kindergeld/inputs.py | 2 +- src/_gettsim/kindergeld/kindergeld.py | 36 +- src/_gettsim/kinderzuschlag/einkommen.py | 52 +- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 18 +- src/_gettsim/lohnsteuer/einkommen.py | 13 +- src/_gettsim/lohnsteuer/inputs.py | 2 +- src/_gettsim/lohnsteuer/lohnsteuer.py | 94 +- .../solidarit\303\244tszuschlag.py" | 18 +- .../arbeitslosen/arbeitslosengeld.py | 21 +- .../arbeitslosen/beitrag/beitrag.py | 11 +- .../sozialversicherung/arbeitslosen/inputs.py | 2 +- .../sozialversicherung/beitr\303\244ge.py" | 2 +- .../kranken/beitrag/beitrag.py | 3 +- .../kranken/beitrag/beitragssatz.py | 11 +- .../kranken/beitrag/einkommen.py | 3 +- .../kranken/beitrag/inputs.py | 2 +- src/_gettsim/sozialversicherung/midijob.py | 3 +- src/_gettsim/sozialversicherung/minijob.py | 13 +- .../pflege/beitrag/beitrag.py | 10 +- .../pflege/beitrag/beitragssatz.py | 15 +- .../pflege/beitrag/inputs.py | 2 +- .../regul\303\244r_besch\303\244ftigt.py" | 2 +- .../rente/alter_bei_renteneintritt.py | 2 +- .../rente/altersrente/altersgrenzen.py | 52 +- .../rente/altersrente/altersrente.py | 16 +- .../besonders_langj\303\244hrig.py" | 6 +- .../rente/altersrente/entgeltpunkte.py | 5 +- .../f\303\274r_frauen/f\303\274r_frauen.py" | 4 +- .../altersrente/f\303\274r_frauen/inputs.py" | 4 +- .../altersrente/hinzuverdienstgrenzen.py | 26 +- .../rente/altersrente/inputs.py | 5 +- .../langj\303\244hrig/langj\303\244hrig.py" | 2 +- .../regelaltersrente/regelaltersrente.py | 6 +- .../wegen_arbeitslosigkeit/altersgrenze.yaml | 2 + .../wegen_arbeitslosigkeit/inputs.py | 16 +- .../wegen_arbeitslosigkeit.py | 4 +- .../rente/beitrag/beitrag.py | 9 +- .../erwerbsminderung/erwerbsminderung.py | 27 +- .../rente/erwerbsminderung/inputs.py | 2 +- .../rente/grundrente/grundrente.py | 30 +- .../rente/grundrente/inputs.py | 8 +- .../sozialversicherung/rente/inputs.py | 11 +- .../sozialversicherung/rente/wartezeit.py | 2 +- src/_gettsim/unterhalt/inputs.py | 2 +- src/_gettsim/unterhalt/unterhalt.py | 5 +- .../unterhaltsvorschuss.py | 58 +- .../vorrangpr\303\274fungen.py" | 9 +- src/_gettsim/wohnen/inputs.py | 10 +- src/_gettsim/wohngeld/einkommen.py | 26 +- src/_gettsim/wohngeld/inputs.py | 2 +- src/_gettsim/wohngeld/miete.py | 58 +- src/_gettsim/wohngeld/voraussetzungen.py | 10 +- src/_gettsim/wohngeld/wohngeld.py | 24 +- src/_gettsim_tests/test_docs.py | 159 --- src/_gettsim_tests/test_interface.py | 22 +- src/_gettsim_tests/test_plot_dag.py | 27 + src/_gettsim_tests/test_policy.py | 123 +- src/_gettsim_tests/test_templates.py | 61 + .../test_warn_if_repeated_execution.py | 12 - src/gettsim/__init__.py | 37 +- src/ttsim/__init__.py | 375 +----- src/ttsim/aggregation.py | 40 - src/ttsim/aggregation_jax.py | 167 --- src/ttsim/argument_templates/input_data.py | 61 + src/ttsim/compute_taxes_and_transfers.py | 493 -------- src/ttsim/config.py | 16 - src/ttsim/convert_nested_data.py | 311 ----- src/ttsim/interface_dag.py | 275 +++++ src/ttsim/interface_dag_elements/__init__.py | 168 +++ .../automatically_added_functions.py | 171 +-- src/ttsim/interface_dag_elements/backend.py | 47 + .../interface_dag_elements/data_converters.py | 153 +++ src/ttsim/interface_dag_elements/dates.py | 25 + .../fail_if.py} | 520 +++++---- .../interface_dag_elements/input_data.py | 98 ++ .../interface_node_objects.py | 373 ++++++ src/ttsim/interface_dag_elements/labels.py | 206 ++++ .../orig_policy_objects.py} | 93 +- .../policy_environment.py | 284 +++++ .../interface_dag_elements/processed_data.py | 50 + .../interface_dag_elements/raw_results.py | 58 + src/ttsim/interface_dag_elements/results.py | 92 ++ .../{ => interface_dag_elements}/shared.py | 122 +- .../specialized_environment.py | 332 ++++++ src/ttsim/interface_dag_elements/targets.py | 42 + src/ttsim/interface_dag_elements/templates.py | 48 + src/ttsim/interface_dag_elements/typing.py | 109 ++ src/ttsim/interface_dag_elements/warn_if.py | 84 ++ src/ttsim/param_objects.py | 152 --- src/ttsim/plot_dag.py | 1006 ++++++++--------- src/ttsim/policy_environment.py | 466 -------- src/ttsim/stale_code_storage.py | 147 +++ src/ttsim/testing_utils.py | 196 +++- src/ttsim/tt_dag_elements/__init__.py | 79 ++ src/ttsim/tt_dag_elements/aggregation.py | 500 ++++++++ src/ttsim/tt_dag_elements/aggregation_jax.py | 202 ++++ .../aggregation_numpy.py | 195 ++-- .../column_objects_param_function.py | 323 +++--- src/ttsim/tt_dag_elements/param_objects.py | 308 +++++ .../piecewise_polynomial.py | 220 ++-- src/ttsim/{ => tt_dag_elements}/rounding.py | 35 +- src/ttsim/tt_dag_elements/shared.py | 93 ++ src/ttsim/tt_dag_elements/typing.py | 19 + .../{ => tt_dag_elements}/vectorization.py | 212 +++- src/ttsim/typing.py | 86 -- .../test_automatically_added_functions.py | 46 +- .../test_data_converters.py | 272 +++++ .../test_failures.py} | 629 +++++++---- .../interface_dag_elements/test_labels.py | 45 + .../interface_dag_elements/test_mettsim.py | 113 ++ .../test_orig_policy_objects.py} | 13 +- .../test_policy_environment.py | 108 +- .../test_shared.py | 36 +- .../test_specialized_environment.py} | 404 +++---- .../interface_dag_elements/test_templates.py | 173 +++ .../interface_dag_elements/test_warnings.py | 65 ++ tests/ttsim/mettsim/config.py | 11 - tests/ttsim/mettsim/demographics.py | 2 +- tests/ttsim/mettsim/group_by_ids.py | 109 +- .../ttsim/mettsim/housing_benefits/amount.py | 2 +- .../eligibility/eligibility.py | 2 +- .../mettsim/housing_benefits/income/income.py | 2 +- tests/ttsim/mettsim/inputs.py | 2 +- .../orc_hunting_bounty/orc_hunting_bounty.py | 14 +- tests/ttsim/mettsim/payroll_tax/amount.py | 11 +- .../child_tax_credit/child_tax_credit.py | 9 +- .../payroll_tax/child_tax_credit/inputs.py | 2 +- .../mettsim/payroll_tax/income/amount.py | 2 +- .../mettsim/payroll_tax/income/deductions.py | 2 +- .../mettsim/payroll_tax/income/inputs.py | 2 +- tests/ttsim/mettsim/property_tax/amount.py | 19 +- .../group_by_ids/2025-01-01/group_by_ids.yaml | 0 .../amount_no_children_high_income.yaml | 0 .../amount_no_children_low_income.yaml | 0 .../amount_with_children_high_income.yaml | 0 .../amount_with_children_low_income.yaml | 0 .../amount_no_children_high_income.yaml | 0 .../amount_no_children_low_income.yaml | 0 .../amount_with_children_high_income.yaml | 0 .../amount_with_children_low_income.yaml | 0 .../2025-01-01/amount_with_many_children.yaml | 0 .../orc_hunting_bounty/1900-01-01/amount.yaml | 0 .../2025-01-01/amount_no_children.yaml | 0 .../amount_no_children_high_wealth.yaml | 0 .../amount_no_children_noble_parents.yaml | 0 .../2025-01-01/amount_with_children.yaml | 0 ..._children_inputs_need_to_be_converted.yaml | 0 .../2025-01-01/amount_with_many_children.yaml | 0 ...eductions_param_overwritten_by_column.yaml | 0 .../property_tax/2000-01-01/acre_size.yaml | 0 tests/ttsim/test_aggregation_functions.py | 529 --------- tests/ttsim/test_convert_nested_data.py | 403 ------- tests/ttsim/test_create_data_tree.py | 123 -- tests/ttsim/test_end_to_end.py | 106 ++ tests/ttsim/test_interface_dag.py | 229 ++++ tests/ttsim/test_join.py | 52 - tests/ttsim/test_mettsim.py | 29 - .../test_add_jahresanfang.yaml | 14 - .../invalid_access_diff_date.yaml | 19 - .../test_access_diff_date_jahresanfang.yaml | 11 - .../test_access_diff_date_vorjahr.yaml | 13 - tests/ttsim/test_plot_dag.py | 426 ++++--- .../__init__.py | 0 .../test_aggregation_functions.py | 642 +++++++++++ .../test_piecewise_polynomial.py | 39 +- .../{ => tt_dag_elements}/test_rounding.py | 146 ++- tests/ttsim/tt_dag_elements/test_shared.py | 66 ++ .../test_ttsim_objects.py | 47 +- .../test_vectorization.py | 191 ++-- typical_vars_in_data.yaml | 29 - 228 files changed, 10534 insertions(+), 6536 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 conftest.py create mode 100644 interface-prototype.ipynb create mode 100644 sandbox/check-autocomplete.ipynb delete mode 100644 src/_gettsim/config.py delete mode 100644 src/_gettsim_tests/test_docs.py create mode 100644 src/_gettsim_tests/test_plot_dag.py create mode 100644 src/_gettsim_tests/test_templates.py delete mode 100644 src/_gettsim_tests/test_warn_if_repeated_execution.py delete mode 100644 src/ttsim/aggregation.py delete mode 100644 src/ttsim/aggregation_jax.py create mode 100644 src/ttsim/argument_templates/input_data.py delete mode 100644 src/ttsim/compute_taxes_and_transfers.py delete mode 100644 src/ttsim/config.py delete mode 100644 src/ttsim/convert_nested_data.py create mode 100644 src/ttsim/interface_dag.py create mode 100644 src/ttsim/interface_dag_elements/__init__.py rename src/ttsim/{ => interface_dag_elements}/automatically_added_functions.py (78%) create mode 100644 src/ttsim/interface_dag_elements/backend.py create mode 100644 src/ttsim/interface_dag_elements/data_converters.py create mode 100644 src/ttsim/interface_dag_elements/dates.py rename src/ttsim/{failures_and_warnings.py => interface_dag_elements/fail_if.py} (55%) create mode 100644 src/ttsim/interface_dag_elements/input_data.py create mode 100644 src/ttsim/interface_dag_elements/interface_node_objects.py create mode 100644 src/ttsim/interface_dag_elements/labels.py rename src/ttsim/{loader.py => interface_dag_elements/orig_policy_objects.py} (71%) create mode 100644 src/ttsim/interface_dag_elements/policy_environment.py create mode 100644 src/ttsim/interface_dag_elements/processed_data.py create mode 100644 src/ttsim/interface_dag_elements/raw_results.py create mode 100644 src/ttsim/interface_dag_elements/results.py rename src/ttsim/{ => interface_dag_elements}/shared.py (74%) create mode 100644 src/ttsim/interface_dag_elements/specialized_environment.py create mode 100644 src/ttsim/interface_dag_elements/targets.py create mode 100644 src/ttsim/interface_dag_elements/templates.py create mode 100644 src/ttsim/interface_dag_elements/typing.py create mode 100644 src/ttsim/interface_dag_elements/warn_if.py delete mode 100644 src/ttsim/param_objects.py delete mode 100644 src/ttsim/policy_environment.py create mode 100644 src/ttsim/stale_code_storage.py create mode 100644 src/ttsim/tt_dag_elements/__init__.py create mode 100644 src/ttsim/tt_dag_elements/aggregation.py create mode 100644 src/ttsim/tt_dag_elements/aggregation_jax.py rename src/ttsim/{ => tt_dag_elements}/aggregation_numpy.py (59%) rename src/ttsim/{ => tt_dag_elements}/column_objects_param_function.py (77%) create mode 100644 src/ttsim/tt_dag_elements/param_objects.py rename src/ttsim/{ => tt_dag_elements}/piecewise_polynomial.py (70%) rename src/ttsim/{ => tt_dag_elements}/rounding.py (68%) create mode 100644 src/ttsim/tt_dag_elements/shared.py create mode 100644 src/ttsim/tt_dag_elements/typing.py rename src/ttsim/{ => tt_dag_elements}/vectorization.py (67%) delete mode 100644 src/ttsim/typing.py rename tests/ttsim/{ => interface_dag_elements}/test_automatically_added_functions.py (92%) create mode 100644 tests/ttsim/interface_dag_elements/test_data_converters.py rename tests/ttsim/{test_failures_and_warnings.py => interface_dag_elements/test_failures.py} (59%) create mode 100644 tests/ttsim/interface_dag_elements/test_labels.py create mode 100644 tests/ttsim/interface_dag_elements/test_mettsim.py rename tests/ttsim/{test_loader.py => interface_dag_elements/test_orig_policy_objects.py} (66%) rename tests/ttsim/{ => interface_dag_elements}/test_policy_environment.py (63%) rename tests/ttsim/{ => interface_dag_elements}/test_shared.py (89%) rename tests/ttsim/{test_compute_taxes_and_transfers.py => interface_dag_elements/test_specialized_environment.py} (65%) create mode 100644 tests/ttsim/interface_dag_elements/test_templates.py create mode 100644 tests/ttsim/interface_dag_elements/test_warnings.py delete mode 100644 tests/ttsim/mettsim/config.py rename tests/ttsim/{test_data => mettsim_test_data}/group_by_ids/2025-01-01/group_by_ids.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2000-01-01/amount_no_children_high_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2000-01-01/amount_no_children_low_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2000-01-01/amount_with_children_high_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2000-01-01/amount_with_children_low_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2025-01-01/amount_no_children_high_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2025-01-01/amount_no_children_low_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2025-01-01/amount_with_children_high_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2025-01-01/amount_with_children_low_income.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/housing_benefits/2025-01-01/amount_with_many_children.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/orc_hunting_bounty/1900-01-01/amount.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_no_children.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_with_children.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/amount_with_many_children.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml (100%) rename tests/ttsim/{test_data => mettsim_test_data}/property_tax/2000-01-01/acre_size.yaml (100%) delete mode 100644 tests/ttsim/test_aggregation_functions.py delete mode 100644 tests/ttsim/test_convert_nested_data.py delete mode 100644 tests/ttsim/test_create_data_tree.py create mode 100644 tests/ttsim/test_end_to_end.py create mode 100644 tests/ttsim/test_interface_dag.py delete mode 100644 tests/ttsim/test_join.py delete mode 100644 tests/ttsim/test_mettsim.py delete mode 100644 tests/ttsim/test_parameters/test_add_jahresanfang.yaml delete mode 100644 tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml delete mode 100644 tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml delete mode 100644 tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml rename tests/ttsim/{test_parameters_old => tt_dag_elements}/__init__.py (100%) create mode 100644 tests/ttsim/tt_dag_elements/test_aggregation_functions.py rename tests/ttsim/{ => tt_dag_elements}/test_piecewise_polynomial.py (66%) rename tests/ttsim/{ => tt_dag_elements}/test_rounding.py (59%) create mode 100644 tests/ttsim/tt_dag_elements/test_shared.py rename tests/ttsim/{ => tt_dag_elements}/test_ttsim_objects.py (87%) rename tests/ttsim/{ => tt_dag_elements}/test_vectorization.py (78%) delete mode 100644 typical_vars_in_data.yaml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..931cdd022f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +--- +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + groups: + github-actions: + patterns: + - '*' diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a1afbc511e..e600c0ff79 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -86,16 +86,19 @@ repos: - '88' files: (docs/.|CHANGES.md|CODE_OF_CONDUCT.md) - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.15.0 + rev: v1.16.0 hooks: - id: mypy args: - --ignore-missing-imports - --config=pyproject.toml + - --allow-redefinition-new + - --local-partial-types additional_dependencies: - types-PyYAML - types-pytz - numpy >= 2 + - jaxtyping # - dags >= 0.3 - optree >= 0.15 - repo: https://github.com/python-jsonschema/check-jsonschema diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000000..1e8149ab36 --- /dev/null +++ b/conftest.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import pytest + +from ttsim.interface_dag_elements.backend import dnp as ttsim_dnp +from ttsim.interface_dag_elements.backend import xnp as ttsim_xnp + +if TYPE_CHECKING: + from types import ModuleType + from typing import Literal + + +# content of conftest.py +def pytest_addoption(parser): + parser.addoption( + "--backend", + action="store", + default="numpy", + help="The backend to test against (e.g., --backend=numpy --backend=jax)", + ) + + +@pytest.fixture +def backend(request) -> Literal["numpy", "jax"]: + return request.config.getoption("--backend") + + +@pytest.fixture +def xnp(request) -> ModuleType: + return ttsim_xnp(request.config.getoption("--backend")) + + +@pytest.fixture +def dnp(request) -> ModuleType: + return ttsim_dnp(request.config.getoption("--backend")) + + +@pytest.fixture(autouse=True) +def skipif_jax(request, backend): + """Automatically skip tests marked with skipif_jax when backend is jax.""" + if request.node.get_closest_marker("skipif_jax") and backend == "jax": + pytest.skip("Cannot run this test with Jax") diff --git a/docs/conf.py b/docs/conf.py index 7973aee266..53be2a516d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,7 +14,7 @@ # -- Project information ----------------------------------------------------- project = "GETTSIM" -copyright = f"2019-{datetime.today().year}, GETTSIM team" # noqa: A001 +copyright = f"2019-{datetime.today().year}, GETTSIM team" # noqa: A001, DTZ002 author = "GETTSIM team" release = "0.7.0" version = ".".join(release.split(".")[:2]) @@ -122,7 +122,7 @@ "**": [ "relations.html", # needs 'show_related': True theme option to display "searchbox.html", - ] + ], } # Napoleon settings diff --git a/interface-prototype.ipynb b/interface-prototype.ipynb new file mode 100644 index 0000000000..ad71f34b04 --- /dev/null +++ b/interface-prototype.ipynb @@ -0,0 +1,456 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import pandas as pd\n", + "\n", + "from ttsim import main\n", + "from ttsim.tt_dag_elements import ScalarParam\n", + "\n", + "GETTSIM_ROOT = Path.cwd() / \"src\" / \"_gettsim\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prototypes of GETTSIM's new interface\n", + "\n", + "[GEP 7](https://gettsim--855.org.readthedocs.build/en/855/geps/gep-07.html) discusses\n", + "the principles of the new interface. This notebook demonstrates two candidates for\n", + "GETTIM's new interface. We would like to get your feedback on which one you prefer.\n", + "\n", + "In this notebook, we compute income taxes and social security contributions for example\n", + "data.\n", + "\n", + "## Setup\n", + "\n", + "This notebook requires to have GETTSIM installed in its current development version.\n", + "\n", + "To do this:\n", + "1. Clone the GETTSIM repository.\n", + "2. Install the [pixi package manager](https://pixi.sh/latest/) on your system.\n", + "3. `cd` into the GETTSIM repository and run `git checkout inputs-for-main`.\n", + "4. Run `pixi run jupyter-notebook` and select the `interface-prototype.ipynb` notebook.\n", + "\n", + "If you have trouble with the setup, please reach out." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating the Data\n", + "\n", + "First, we create some example data. Here, we use a pandas DataFrame with column names\n", + "that are different from the ones GETTSIM expects." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Some example data as a standard pandas DataFrame\n", + "DATA = pd.DataFrame(\n", + " {\n", + " \"age\": [30, 30, 10],\n", + " \"working_hours\": [35, 35, 0],\n", + " \"disability_grade\": [0, 0, 0],\n", + " \"birth_year\": [1995, 1995, 2015],\n", + " \"hh_id\": [0, 0, 0],\n", + " \"p_id\": [0, 1, 2],\n", + " \"east_germany\": [False, False, False],\n", + " \"self_employed\": [False, False, False],\n", + " \"income_from_self_employment\": [0, 0, 0],\n", + " \"income_from_rent\": [0, 0, 0],\n", + " \"income_from_employment\": [5000, 4000, 0],\n", + " \"income_from_forest_and_agriculture\": [0, 0, 0],\n", + " \"income_from_capital\": [500, 0, 0],\n", + " \"income_from_other_sources\": [0, 0, 0],\n", + " \"pension_income\": [0, 0, 0],\n", + " \"contribution_to_private_pension_insurance\": [0, 0, 0],\n", + " \"childcare_expenses\": [0, 0, 0],\n", + " \"person_that_pays_childcare_expenses\": [-1, -1, 0],\n", + " \"joint_taxation\": [True, True, False],\n", + " \"amount_private_pension_income\": [0, 0, 0],\n", + " \"contribution_private_health_insurance\": [0, 0, 0],\n", + " \"has_children\": [True, True, False],\n", + " \"single_parent\": [False, False, False],\n", + " \"is_child\": [False, False, True],\n", + " \"spouse_id\": [1, 0, -1],\n", + " \"parent_id_1\": [-1, -1, 0],\n", + " \"parent_id_2\": [-1, -1, 1],\n", + " \"in_training\": [False, False, False],\n", + " \"id_recipient_child_allowance\": [-1, -1, 0],\n", + " \"wohngeld\": [0, 0, 0],\n", + " \"kinderzuschlag\": [0, 0, 0],\n", + " \"elterngeld\": [0, 0, 0],\n", + " \"alg1\": [0, 0, 0],\n", + " \"old_age_pension_income\": [0, 0, 0],\n", + " \"bürgergeld\": [0, 0, 0],\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first step in GETTSIM's new workflow is to define the targets you're interested in.\n", + "The keys of the nested dictionary below are the paths GETTSIM will use as targets. For\n", + "instance, via the keys `einkommensteuer` and `betrag_m_sn`, we request the income tax as\n", + "a target.\n", + "\n", + "The values on the lowest level of the dictionaries will be used as the column names of\n", + "the resulting DataFrame. Here, `income_tax_y` will be the name of the column containing\n", + "the income tax results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "TARGETS_TREE = {\n", + " \"einkommensteuer\": {\"betrag_y_sn\": \"income_tax_y\"},\n", + " \"sozialversicherung\": {\n", + " \"pflege\": {\n", + " \"beitrag\": {\n", + " \"betrag_versicherter_m\": \"long_term_care_insurance_contribution_m\"\n", + " }\n", + " },\n", + " \"kranken\": {\n", + " \"beitrag\": {\"betrag_versicherter_m\": \"health_insurance_contribution_m\"}\n", + " },\n", + " \"rente\": {\n", + " \"beitrag\": {\"betrag_versicherter_m\": \"pension_insurance_contribution_m\"}\n", + " },\n", + " \"arbeitslosen\": {\n", + " \"beitrag\": {\n", + " \"betrag_versicherter_m\": \"unemployment_insurance_contribution_m\"\n", + " }\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we define a mapping from GETTSIM's expected input structure to your data. As\n", + "above, we map the paths GETTSIM uses to the columns of your data. (We will provide\n", + "templates for this, so you won't have to type the paths manually.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "TREE_TO_DF_MAPPER = {\n", + " \"alter\": \"age\",\n", + " \"arbeitsstunden_w\": \"working_hours\",\n", + " \"behinderungsgrad\": \"disability_grade\",\n", + " \"geburtsjahr\": \"birth_year\",\n", + " \"hh_id\": \"hh_id\",\n", + " \"p_id\": \"p_id\",\n", + " \"wohnort_ost\": \"east_germany\",\n", + " \"einkommensteuer\": {\n", + " \"einkünfte\": {\n", + " \"ist_selbstständig\": \"self_employed\",\n", + " \"aus_gewerbebetrieb\": {\"betrag_m\": \"income_from_self_employment\"},\n", + " \"aus_vermietung_und_verpachtung\": {\"betrag_m\": \"income_from_rent\"},\n", + " \"aus_nichtselbstständiger_arbeit\": {\n", + " \"bruttolohn_m\": \"income_from_employment\"\n", + " },\n", + " \"aus_forst_und_landwirtschaft\": {\n", + " \"betrag_m\": \"income_from_forest_and_agriculture\"\n", + " },\n", + " \"aus_selbstständiger_arbeit\": {\"betrag_m\": \"income_from_self_employment\"},\n", + " \"aus_kapitalvermögen\": {\"kapitalerträge_m\": \"income_from_capital\"},\n", + " \"sonstige\": {\n", + " \"ohne_renten_m\": \"income_from_other_sources\",\n", + " \"renteneinkünfte_m\": \"pension_income\",\n", + " },\n", + " },\n", + " \"abzüge\": {\n", + " \"beitrag_private_rentenversicherung_m\": \"contribution_to_private_pension_insurance\", # noqa: E501\n", + " \"kinderbetreuungskosten_m\": \"childcare_expenses\",\n", + " \"p_id_kinderbetreuungskostenträger\": \"person_that_pays_childcare_expenses\",\n", + " },\n", + " \"gemeinsam_veranlagt\": \"joint_taxation\",\n", + " },\n", + " \"sozialversicherung\": {\n", + " \"arbeitslosen\": {\"betrag_m\": \"alg1\"},\n", + " \"rente\": {\n", + " \"private_rente_betrag_m\": \"amount_private_pension_income\",\n", + " \"altersrente\": {\n", + " \"betrag_m\": \"old_age_pension_income\",\n", + " },\n", + " },\n", + " \"kranken\": {\n", + " \"beitrag\": {\"privat_versichert\": \"contribution_private_health_insurance\"}\n", + " },\n", + " \"pflege\": {\"beitrag\": {\"hat_kinder\": \"has_children\"}},\n", + " },\n", + " \"familie\": {\n", + " \"alleinerziehend\": \"single_parent\",\n", + " \"kind\": \"is_child\",\n", + " \"p_id_ehepartner\": \"spouse_id\",\n", + " \"p_id_elternteil_1\": \"parent_id_1\",\n", + " \"p_id_elternteil_2\": \"parent_id_2\",\n", + " },\n", + " \"wohngeld\": {\n", + " \"betrag_m_wthh\": \"wohngeld\",\n", + " },\n", + " \"kinderzuschlag\": {\n", + " \"betrag_m_bg\": \"kinderzuschlag\",\n", + " },\n", + " \"elterngeld\": {\n", + " \"betrag_m\": \"elterngeld\",\n", + " },\n", + " \"arbeitslosengeld_2\": {\n", + " \"betrag_m_bg\": \"bürgergeld\",\n", + " },\n", + " \"kindergeld\": {\n", + " \"in_ausbildung\": \"in_training\",\n", + " \"p_id_empfänger\": \"id_recipient_child_allowance\",\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using GETTSIM's interface\n", + "\n", + "Just as for taxes and transfers, GETTSIM's infrastructure is a DAG. GETTSIM's interface\n", + "is a function that allows you to interact with this DAG. This comes with the\n", + "advantages GETTSIM's users already know from the taxes and transfers part:\n", + "- Users can select any part of the DAG as a target. This means that users can access\n", + " any intermediate objects.\n", + "- Users can feed any part of the DAG as input. This means that users can overwrite\n", + " specific parts of the DAG (e.g. the policy environment).\n", + "- Users can decide which parts of the DAG not to compute. For example, users can choose\n", + " not to perform safety checks on the input data. This means that GETTSIM is quicker in\n", + " computing the result (at the expense of informative errors).\n", + "\n", + "First, we look at the one-stop shop: computing the targets defined above using the input\n", + "data. In a second example, we manipulate the policy environment to see why the interface\n", + "DAG is useful.\n", + "\n", + "### One-stop-shop: Computing taxes and transfers with GETTSIM\n", + "\n", + "Now we can compute taxes and transfers. For this, we need to call the `main` function.\n", + "`main` takes two input arguments:\n", + "- `inputs`: a nested dictionary of the inputs you're passing to GETTSIM.\n", + "- `output_names`: a list of the outputs you want to get from GETTSIM.\n", + "\n", + "`inputs` can be specified as a nested dictionary (see below) or as strings, separating\n", + "nesting levels with `__` (e.g. `\"input_data__df_with_mapper_df\"`).\n", + "\n", + "Let's calculate taxes and transfers first:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = main(\n", + " inputs={\n", + " \"date_str\": \"2025-01-01\",\n", + " \"input_data\": {\n", + " \"df_and_mapper\": {\n", + " \"df\": DATA,\n", + " \"mapper\": TREE_TO_DF_MAPPER,\n", + " },\n", + " },\n", + " \"targets\": {\n", + " \"tree\": TARGETS_TREE,\n", + " },\n", + " \"orig_policy_objects\": {\n", + " \"root\": GETTSIM_ROOT\n", + " }, # don't worry about this, will be gone in the future\n", + " },\n", + " output_names=[\"results__df_with_mapper\"],\n", + ")[\"results__df_with_mapper\"]\n", + "result.T" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Input data can also be specified directly as a tree:\n", + "\n", + "```python\n", + "result = main(\n", + " inputs={\n", + " \"input_data\": {\n", + " \"tree\": INPUT_TREE,\n", + " },\n", + " ...\n", + "```\n", + "\n", + "Or as a DataFrame with MultiIndex columns:\n", + "\n", + "```python\n", + "result = main(\n", + " inputs={\n", + " \"input_data\": {\n", + " \"df_with_nested_columns\": DF_WITH_NESTED_COLUMNS,\n", + " },\n", + " ...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Manipulating the policy environment\n", + "\n", + "First, we obtain the policy environment for the policy date we're interested in. Similar\n", + "to above, we have to call the `main` function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "policy_environment = main(\n", + " inputs={\n", + " \"date_str\": \"2025-01-01\",\n", + " \"orig_policy_objects\": {\n", + " \"root\": GETTSIM_ROOT\n", + " }, # don't worry about this, will be gone in the future\n", + " },\n", + " output_names=[\"policy_environment\"],\n", + ")[\"policy_environment\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we slightly modify the policy environment. In this simple example, we increase the\n", + "contribution rate of the public pension insurance by 1 percentage point.\n", + "\n", + "The contribution rate is a `ScalarParam` object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "type(policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We replace the `ScalarParam` object with a new one. Then, we add this parameter to the\n", + "new policy environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "old_beitragssatz = policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\n", + " \"beitragssatz\"\n", + "]\n", + "new_beitragssatz = ScalarParam( # don't worry too much about this, will get easier\n", + " leaf_name=old_beitragssatz.leaf_name,\n", + " start_date=old_beitragssatz.start_date,\n", + " end_date=old_beitragssatz.end_date,\n", + " value=old_beitragssatz.value + 0.01,\n", + " unit=old_beitragssatz.unit,\n", + " description=old_beitragssatz.description,\n", + " name=old_beitragssatz.name,\n", + " reference_period=old_beitragssatz.reference_period,\n", + ")\n", + "\n", + "modified_policy_environment = policy_environment.copy()\n", + "modified_policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\n", + " \"beitragssatz\"\n", + "] = new_beitragssatz" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can compute taxes and transfers using the modified policy environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "result = main(\n", + " inputs={\n", + " \"date_str\": \"2025-01-01\",\n", + " \"input_data\": {\n", + " \"df_and_mapper\": {\n", + " \"df\": DATA,\n", + " \"mapper\": TREE_TO_DF_MAPPER,\n", + " },\n", + " },\n", + " \"targets\": {\n", + " \"tree\": TARGETS_TREE,\n", + " },\n", + " \"policy_environment\": policy_environment,\n", + " },\n", + " output_names=[\"results__df_with_mapper\"],\n", + ")[\"results__df_with_mapper\"]\n", + "result.T" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pixi.lock b/pixi.lock index 299134c89d..c9782a37e2 100644 --- a/pixi.lock +++ b/pixi.lock @@ -264,13 +264,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -500,13 +502,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -736,13 +740,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -979,14 +985,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ mypy: channels: @@ -1252,17 +1260,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -1492,17 +1503,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -1732,17 +1746,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -1979,18 +1996,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ py311: channels: @@ -2256,13 +2276,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -2492,13 +2514,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -2728,13 +2752,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -2971,14 +2997,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ py312: channels: @@ -3244,13 +3272,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -3480,13 +3510,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -3716,13 +3748,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -3959,14 +3993,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ py312-jax: channels: @@ -4243,13 +4279,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -4490,13 +4529,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda @@ -4737,13 +4779,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda @@ -4980,10 +5025,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl + - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl @@ -4993,6 +5040,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -6046,9 +6094,9 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=allow-passing-dag-to-concatenate_functions#a64509cc155ebcaff39b8070e4354274ebc9fbb1 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 name: dags - version: 0.3.1.dev9+ga64509c + version: 0.3.1.dev13+g49c284f requires_dist: - flatten-dict - networkx @@ -6574,8 +6622,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev157+gc286f624 - sha256: 0ae3a2f3ecaecdaad0e8ebeaf6e6a0e5b65bf935ee411c8041f1193001c68330 + version: 0.7.1.dev519+g2a6b1b5b.d20250623 + sha256: bb7cab681df8ce6c4fbc6d66a2c91efc4d497688c8f0c4e74ae87ee0785b8409 requires_dist: - ipywidgets - networkx @@ -7443,6 +7491,16 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1580534 timestamp: 1747653718316 +- pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 + name: jax-datetime + version: 0.1.0 + requires_dist: + - jax + - numpy + - absl-py ; extra == 'tests' + - chex ; extra == 'tests' + - pytest ; extra == 'tests' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl name: jaxlib version: 0.6.1 @@ -7526,6 +7584,20 @@ packages: - pkg:pypi/jaxlib?source=hash-mapping size: 56004263 timestamp: 1747478692111 +- pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + name: jaxtyping + version: 0.3.2 + sha256: 6a020fd276226ddb5ac4f5725323843dd65e3c7e85c64fd62431e5f738c74e04 + requires_dist: + - wadler-lindig>=0.1.3 + - hippogriffe==0.2.0 ; extra == 'docs' + - mkdocs-include-exclude-files==0.1.0 ; extra == 'docs' + - mkdocs-ipynb==0.1.0 ; extra == 'docs' + - mkdocs-material==9.6.7 ; extra == 'docs' + - mkdocs==1.6.1 ; extra == 'docs' + - mkdocstrings[python]==0.28.3 ; extra == 'docs' + - pymdown-extensions==10.14.3 ; extra == 'docs' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 @@ -9996,13 +10068,14 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 200130 timestamp: 1736539205286 -- pypi: https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl name: mypy - version: 1.15.0 - sha256: 171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22 + version: 1.16.0 + sha256: bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 + - pathspec>=0.9.0 - tomli>=1.1.0 ; python_full_version < '3.11' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' @@ -10010,13 +10083,14 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.15.0 - sha256: aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd + version: 1.16.0 + sha256: b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 + - pathspec>=0.9.0 - tomli>=1.1.0 ; python_full_version < '3.11' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' @@ -10024,13 +10098,14 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl name: mypy - version: 1.15.0 - sha256: 8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee + version: 1.16.0 + sha256: c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 + - pathspec>=0.9.0 - tomli>=1.1.0 ; python_full_version < '3.11' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' @@ -10038,13 +10113,14 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl name: mypy - version: 1.15.0 - sha256: 2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f + version: 1.16.0 + sha256: f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 + - pathspec>=0.9.0 - tomli>=1.1.0 ; python_full_version < '3.11' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' @@ -11434,6 +11510,11 @@ packages: - pkg:pypi/parso?source=hash-mapping size: 75295 timestamp: 1733271352153 +- pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl + name: pathspec + version: 0.12.1 + sha256: a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda sha256: 27c4014f616326240dcce17b5f3baca3953b6bc5f245ceb49c3fa1e6320571eb md5: b90bece58b4c2bf25969b70f3be42d25 @@ -13889,6 +13970,22 @@ packages: purls: [] size: 17873 timestamp: 1743195097269 +- pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + name: wadler-lindig + version: 0.1.6 + sha256: d707f63994c7d3e1e125e7fb7e196f4adb6f80f4a11beb955c6da937754026a3 + requires_dist: + - numpy ; extra == 'dev' + - pre-commit ; extra == 'dev' + - pytest ; extra == 'dev' + - hippogriffe==0.1.0 ; extra == 'docs' + - mkdocs-include-exclude-files==0.1.0 ; extra == 'docs' + - mkdocs-ipynb==0.1.0 ; extra == 'docs' + - mkdocs-material==9.6.7 ; extra == 'docs' + - mkdocs==1.6.1 ; extra == 'docs' + - mkdocstrings[python]==0.28.3 ; extra == 'docs' + - pymdown-extensions==10.14.3 ; extra == 'docs' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda sha256: 73d809ec8056c2f08e077f9d779d7f4e4c2b625881cad6af303c33dc1562ea01 md5: a37843723437ba75f42c9270ffe800b1 diff --git a/pyproject.toml b/pyproject.toml index d0d53aa946..7de12f152d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -128,7 +128,8 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "allow-passing-dag-to-concatenate_functions"} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "update-type-hints"} +jaxtyping = "*" pdbp = "*" [tool.pixi.target.unix.pypi-dependencies] @@ -150,12 +151,15 @@ python = "3.12.*" jax = ">=0.4.20" jaxlib = ">=0.4.20" +[tool.pixi.feature.jax.pypi-dependencies] +jax-datetime = { git = "https://github.com/google/jax-datetime.git" } + [tool.pixi.feature.jax.target.win-64.pypi-dependencies] jax = { version = ">=0.4.20", extras = ["cpu"] } jaxlib = ">=0.4.20" [tool.pixi.feature.mypy.pypi-dependencies] -mypy = "==1.15.0" +mypy = "~=1.16" types-PyYAML = "*" types-pytz = "*" @@ -165,6 +169,9 @@ types-pytz = "*" [tool.pixi.feature.test.tasks] tests = "pytest" +[tool.pixi.feature.jax.tasks] +tests-jax = "pytest --backend=jax" + [tool.pixi.feature.mypy.tasks] mypy = "mypy --ignore-missing-imports" @@ -190,86 +197,55 @@ unsafe-fixes = false [tool.ruff.lint] select = ["ALL"] extend-ignore = [ - "ICN001", # numpy should be np, but different convention here. - # Docstrings - "D103", # missing docstring in public function - "D107", - "D203", - "D212", - "D213", - "D402", - "D413", - "D415", - "D416", - "D417", - # Others. - "D404", # Do not start module docstring with "This". - "RET504", # unnecessary variable assignment before return. - "S101", # raise errors for asserts. - "B905", # strict parameter for zip that was implemented in py310. - - "FBT", # flake8-boolean-trap - "EM", # flake8-errmsg - "ANN401", # flake8-annotate typing.Any - "PD", # pandas-vet - "E731", # do not assign a lambda expression, use a def - "RET", # unnecessary elif or else statements after return, raise, continue, ... - "S324", # Probable use of insecure hash function. - "COM812", # trailing comma missing, but black takes care of that - "PT007", # wrong type in parametrize, gave false positives - "DTZ001", # use of `datetime.datetime()` without `tzinfo` argument is not allowed - "DTZ002", # use of `datetime.datetime.today()` is not allowed - "PT012", # `pytest.raises()` block should contain a single simple statement - "PLR5501", # elif not supported by Jax converter - "TRY003", # Avoid specifying long messages outside the exception class + "COM812", # Avoid conflicts with ruff-format + "EM101", # Exception must not use a string literal + "EM102", # Exception must not use an f-string literal + "F722", # https://docs.kidger.site/jaxtyping/faq/#flake8-or-ruff-are-throwing-an-error + "FBT001", # Boolean-typed positional argument in function definition + "FBT002", # Boolean default positional argument in function definition "FIX002", # Line contains TODO -- Use stuff from TD area. + "ICN001", # numpy should be np, but different convention here. + "ISC001", # Avoid conflicts with ruff-format + "N999", # Allow non-ASCII characters in file names. "PLC2401", # Allow non-ASCII characters in variable names. "PLC2403", # Allow non-ASCII function names for imports. "PLR0913", # Allow too many arguments in function definitions. - "N999", # Allow non-ASCII characters in file names. - "PLR0913", # Too many arguments in function definition. - - # Things we are not sure we want - # ============================== - "SIM102", # Use single if statement instead of nested if statements - "SIM108", # Use ternary operator instead of if-else block - "SIM117", # do not use nested with statements - "BLE001", # Do not catch blind exceptions (even after handling some specific ones) - "PLR2004", # Magic values used in comparison - "PT006", # Allows only lists of tuples in parametrize, even if single argument + "PLR5501", # elif not supported by vectorization converter for Jax + "TRY003", # Avoid specifying long messages outside the exception class - # Things ignored during transition phase + # Ignored during transition phase # ====================================== "D", # docstrings - "ANN", # missing annotations - "C901", # function too complex - "PT011", # pytest raises without match statement "INP001", # implicit namespace packages without init. - "E721", # Use `is` and `is not` for type comparisons - "TD003", # Missing issue link -- remove again once we got rid of ad-hoc TODOs. - "ERA001", # Commented out code. + "PLR2004", # Magic values used in comparison + "PT006", # Allows only lists of tuples in parametrize, even if single argument + "PT007", # wrong type in parametrize + "S101", # use of asserts outside of tests - # Things ignored to avoid conflicts with ruff-format - # ================================================== - "ISC001", ] exclude = [] [tool.ruff.lint.per-file-ignores] +"conftest.py" = ["ANN"] "docs/**/*.ipynb" = ["T201"] -"src/_gettsim/*" = ["E501", "PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} -"src/ttsim/compute_taxes_and_transfers.py" = ["E501"] -"src/ttsim/failures_and_warnings.py" = ["E501"] -"src/ttsim/piecewise_functions.py" = ["PLR"] -"src/ttsim/plot_dag.py" = ["PLR"] -"src/ttsim/typing.py" = ["PGH", "PLR", "SIM114"] -"tests/ttsim/mettsim/*" = ["PLR1714", "PLR1716"] # Vectorization can't handle x <= y <= z or x in {x,y} -"tests/ttsim/test_failures_and_warnings.py" = ["E501"] +# Mostly things vectorization can't handle +"src/_gettsim/*" = ["E501", "PLR1714", "PLR1716", "E721", "SIM108", "RET"] +# All tests return None and use asserts +"src/_gettsim_tests/**/*.py" = ["ANN", "S101"] +"src/ttsim/interface_dag_elements/specialized_environment.py" = ["E501"] +"src/ttsim/interface_dag_elements/fail_if.py" = ["E501"] +"src/ttsim/interface_dag_elements/typing.py" = ["PGH", "PLR", "SIM114"] +"src/ttsim/plot_dag.py" = ["FBT002"] +# Mostly things vectorization can't handle +"tests/ttsim/mettsim/**/*.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] +"tests/ttsim/tt_dag_elements/test_vectorization.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] +# All tests return None and use asserts +"tests/ttsim/**/*.py" = ["ANN", "S101"] +"tests/ttsim/interface_dag_elements/test_failures.py" = ["E501"] # TODO: remove once ported nicely -"outdated_docs/**/*.ipynb" = ["T201"] -"src/_gettsim_tests/test_docs.py" = ["F821"] -"src/ttsim/__init__.py" = ["PGH004"] -"tests/ttsim/test_plot_dag.py" = ["PGH004"] +"src/ttsim/stale_code_storage.py" = ["ALL"] +"outdated_docs/**/*.ipynb" = ["ALL"] +"src/_gettsim_tests/test_docs.py" = ["ALL"] [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -290,55 +266,25 @@ warn_redundant_casts = true warn_unused_ignores = true explicit_package_bases = true disallow_empty_bodies = false +disable_error_code = ["overload-cannot-match"] [[tool.mypy.overrides]] module = [ - "src.ttsim.plot_dag", + "conftest", + "src.ttsim.stale_code_storage", "src._gettsim_tests.test_docs", ] disallow_untyped_defs = false ignore_errors = true -[[tool.mypy.overrides]] -module = [ - "tests.*", -] -disable_error_code = [ - "no-untyped-def", # All tests return None, don't clutter source code. -] [[tool.mypy.overrides]] -module = [ - "tests.ttsim.test_failures_and_warnings", -] -disable_error_code = [ - "misc", # Happens when constructing param dictionaries on the fly. -] - - -[[tool.mypy.overrides]] -module = [ - "src.ttsim.aggregation_numpy", -] -disable_error_code = [ - "type-arg" # ndarray is not typed further. -] +module = ["tests.*",] +disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter source code. [[tool.mypy.overrides]] -module = [ - "src._gettsim_tests.*", -] -disable_error_code = [ - "no-untyped-def", # All tests return None, don't clutter source code. -] - -[[tool.mypy.overrides]] -module = [ - "tests.ttsim.test_vectorization", -] -disable_error_code = [ - "assignment" -] +module = ["src._gettsim_tests.*",] +disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter source code. [tool.check-manifest] ignore = ["src/_gettsim/_version.py"] @@ -357,13 +303,14 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore::ttsim.failures_and_warnings.FunctionsAndDataColumnsOverlapWarning" + "ignore:ttsim.interface_dag_elements.warn_if.FunctionsAndDataColumnsOverlapWarning" ] markers = [ "wip: Tests that are work-in-progress.", "unit: Flag for unit tests which target mainly a single function.", "integration: Flag for integration tests which may comprise of multiple unit tests.", "end_to_end: Flag for tests that cover the whole program.", + "skipif_jax: skip test if backend is jax" ] norecursedirs = ["docs"] testpaths = [ diff --git a/sandbox/check-autocomplete.ipynb b/sandbox/check-autocomplete.ipynb new file mode 100644 index 0000000000..7b0786ada2 --- /dev/null +++ b/sandbox/check-autocomplete.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "from ttsim import IDEs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = IDEs()\n", + "x.input_data.df_and_mapper.df = pd.DataFrame()\n", + "x.input_data.df_and_mapper.mapper = {}\n", + "x.date_str = \"2025-01-01\"\n", + "x.backend = \"numpy\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x.input_data.tree = {\"a\": [1, 2, 3]}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index 5bca81453d..776a831386 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import AggType, agg_by_group_function +from ttsim.tt_dag_elements import AggType, agg_by_group_function # TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index d79ea710b9..6dd7077573 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(start_date="2005-01-01") diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index ca8ced2b46..3f7df5c77e 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -4,17 +4,19 @@ from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.interface_dag_elements.shared import upsert_tree +from ttsim.tt_dag_elements import ( PiecewisePolynomialParamValue, get_piecewise_parameters, param_function, piecewise_polynomial, policy_function, ) -from ttsim.shared import upsert_tree if TYPE_CHECKING: - from ttsim.typing import RawParam + from types import ModuleType + + from ttsim.interface_dag_elements.typing import RawParam @policy_function(start_date="2005-01-01") @@ -147,12 +149,14 @@ def anrechnungsfreies_einkommen_m_basierend_auf_nettoquote( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, nettoquote: float, parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Share of income which remains to the individual.""" return piecewise_polynomial( x=einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, parameters=parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, rates_multiplier=nettoquote, + xnp=xnp, ) @@ -164,6 +168,7 @@ def anrechnungsfreies_einkommen_m( einkommensteuer__anzahl_kinderfreibeträge: int, parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: PiecewisePolynomialParamValue, parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Calculate share of income, which remains to the individual since 10/2005. @@ -184,11 +189,13 @@ def anrechnungsfreies_einkommen_m( out = piecewise_polynomial( x=eink_erwerbstätigkeit, parameters=parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg, + xnp=xnp, ) else: out = piecewise_polynomial( x=eink_erwerbstätigkeit, parameters=parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, + xnp=xnp, ) return out @@ -196,13 +203,16 @@ def anrechnungsfreies_einkommen_m( @param_function(start_date="2005-01-01") def parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg( raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: RawParam, + xnp: ModuleType, ) -> PiecewisePolynomialParamValue: """Parameter for calculation of income not subject to transfer withdrawal when - children are not in the Bedarfsgemeinschaft.""" + children are not in the Bedarfsgemeinschaft. + """ return get_piecewise_parameters( leaf_name="parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg", func_type="piecewise_linear", parameter_dict=raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, + xnp=xnp, ) @@ -210,9 +220,11 @@ def parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg( def parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg( raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: RawParam, raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: RawParam, + xnp: ModuleType, ) -> PiecewisePolynomialParamValue: """Parameter for calculation of income not subject to transfer withdrawal when - children are in the Bedarfsgemeinschaft.""" + children are in the Bedarfsgemeinschaft. + """ updated_parameters: dict[int, dict[str, float]] = upsert_tree( base=raw_parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg, to_upsert=raw_parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg, @@ -221,4 +233,5 @@ def parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg( leaf_name="parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg", func_type="piecewise_linear", parameter_dict=updated_parameters, + xnp=xnp, ) diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 35e356287d..5212d9fbb6 100644 --- "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(start_date="2005-01-01", end_date="2022-12-31") @@ -75,7 +75,9 @@ def vermögensfreibetrag_in_karenzzeit_bg( @policy_function( - start_date="2005-01-01", end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg" + start_date="2005-01-01", + end_date="2022-12-31", + leaf_name="vermögensfreibetrag_bg", ) def vermögensfreibetrag_bg_bis_2022( grundfreibetrag_vermögen_bg: float, diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index 3a842432f4..0fc6857d80 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import FKType, policy_input +from ttsim.tt_dag_elements import FKType, policy_input @policy_input(start_date="2023-01-01") @@ -13,9 +13,9 @@ def bezug_im_vorjahr() -> bool: # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once # Bedarfsgemeinschaften are fully endogenous # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 -@policy_input(start_date="2023-01-01") +@policy_input(start_date="2005-01-01") def eigenbedarf_gedeckt() -> bool: - """Received Arbeitslosengeld II / Bürgergeld in previous year.""" + """Needs according to SGB II are covered by own income.""" @policy_input(start_date="2005-01-01", foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index 6f7211f0ff..fd54a1658f 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -4,21 +4,27 @@ from typing import TYPE_CHECKING -from ttsim import AggType, agg_by_p_id_function, join, policy_function +from ttsim.tt_dag_elements import AggType, agg_by_p_id_function, join, policy_function if TYPE_CHECKING: - from ttsim.config import numpy_or_jax as np + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, FloatColumn, IntColumn @agg_by_p_id_function(start_date="2005-01-01", agg_type=AggType.SUM) def kindergeldübertrag_m( - differenz_kindergeld_kindbedarf_m: float, kindergeld__p_id_empfänger: int, p_id: int + differenz_kindergeld_kindbedarf_m: float, + kindergeld__p_id_empfänger: int, + p_id: int, ) -> float: pass @policy_function( - start_date="2005-01-01", end_date="2022-12-31", leaf_name="kindergeld_pro_kind_m" + start_date="2005-01-01", + end_date="2022-12-31", + leaf_name="kindergeld_pro_kind_m", ) def _mean_kindergeld_per_child_gestaffelt_m( kindergeld__betrag_m: float, @@ -56,10 +62,11 @@ def _mean_kindergeld_per_child_ohne_staffelung_m( @policy_function(start_date="2005-01-01", vectorization_strategy="not_required") def kindergeld_zur_bedarfsdeckung_m( - kindergeld_pro_kind_m: float, - kindergeld__p_id_empfänger: np.ndarray, # int - p_id: np.ndarray, # int -) -> np.ndarray: # float + kindergeld_pro_kind_m: FloatColumn, + kindergeld__p_id_empfänger: IntColumn, + p_id: IntColumn, + xnp: ModuleType, +) -> FloatColumn: """Kindergeld that is used to cover the SGB II Regelbedarf of the child. Even though the Kindergeld is paid to the parent (see function @@ -71,10 +78,11 @@ def kindergeld_zur_bedarfsdeckung_m( """ return join( - kindergeld__p_id_empfänger, - p_id, - kindergeld_pro_kind_m, + foreign_key=kindergeld__p_id_empfänger, + primary_key=p_id, + target=kindergeld_pro_kind_m, value_if_foreign_key_is_missing=0.0, + xnp=xnp, ) @@ -119,15 +127,16 @@ def differenz_kindergeld_kindbedarf_m( @policy_function(start_date="2005-01-01", vectorization_strategy="not_required") def in_anderer_bg_als_kindergeldempfänger( - p_id: np.ndarray, # int - kindergeld__p_id_empfänger: np.ndarray, # int - bg_id: np.ndarray, # int -) -> np.ndarray: # bool + p_id: IntColumn, + kindergeld__p_id_empfänger: IntColumn, + bg_id: IntColumn, + xnp: ModuleType, # Will become necessary for Jax. # noqa: ARG001 +) -> BoolColumn: """True if the person is in a different Bedarfsgemeinschaft than the Kindergeldempfänger of that person. """ # Create a dictionary to map p_id to bg_id - p_id_to_bg_id = dict(zip(p_id, bg_id)) + p_id_to_bg_id = dict(zip(p_id, bg_id, strict=False)) # Map each kindergeld__p_id_empfänger to its corresponding bg_id empf_bg_id = [ diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 49544fb8fe..33ce824523 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -5,16 +5,19 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( ConsecutiveInt1dLookupTableParamValue, get_consecutive_int_1d_lookup_table_param_value, param_function, policy_function, + policy_input, ) if TYPE_CHECKING: + from types import ModuleType + from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen - from ttsim import RawParam + from ttsim.tt_dag_elements import RawParam @policy_function(start_date="2005-01-01") @@ -73,7 +76,9 @@ def mehrbedarf_alleinerziehend_m( @policy_function( - start_date="2005-01-01", end_date="2010-12-31", leaf_name="kindersatz_m" + start_date="2005-01-01", + end_date="2010-12-31", + leaf_name="kindersatz_m", ) def kindersatz_m_anteilsbasiert( alter: int, @@ -269,6 +274,11 @@ def kosten_der_unterkunft_m_bis_2022( return berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m +@policy_input(start_date="2023-01-01") +def arbeitslosengeld_2_bezug_im_vorjahr() -> bool: + """Whether the person received Arbeitslosengeld 2 / Bürgergeld in the previous year.""" + + @policy_function( start_date="2023-01-01", leaf_name="kosten_der_unterkunft_m", @@ -444,6 +454,7 @@ def regelsatz_anteilsbasiert( def berechtigte_wohnfläche_eigentum( parameter_berechtigte_wohnfläche_eigentum: RawParam, wohngeld__max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Berechtigte Wohnfläche für Eigenheim.""" tmp = parameter_berechtigte_wohnfläche_eigentum.copy() @@ -451,4 +462,4 @@ def berechtigte_wohnfläche_eigentum( max_anzahl_direkt = tmp.pop("max_anzahl_direkt") for i in range(wohngeld__max_anzahl_personen["indizierung"] - max_anzahl_direkt): tmp[i] = tmp[max_anzahl_direkt] + i * je_weitere_person - return get_consecutive_int_1d_lookup_table_param_value(raw=tmp) + return get_consecutive_int_1d_lookup_table_param_value(raw=tmp, xnp=xnp) diff --git a/src/_gettsim/config.py b/src/_gettsim/config.py deleted file mode 100644 index ab52bdc9bb..0000000000 --- a/src/_gettsim/config.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -# Obtain the root directory of the package. -GETTSIM_ROOT = Path(__file__).parent.resolve() diff --git a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py index 2909807cad..f91d7c489e 100644 --- a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(start_date="2009-01-01") @@ -13,7 +13,7 @@ def betrag_y_sn(zu_versteuerndes_kapitaleinkommen_y_sn: float, satz: float) -> f @policy_function(start_date="2009-01-01") def zu_versteuerndes_kapitaleinkommen_y_sn( - einkommensteuer__anzahl_personen_sn: float, + einkommensteuer__anzahl_personen_sn: int, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn: float, einkommensteuer__einkünfte__aus_kapitalvermögen__sparerpauschbetrag: float, ) -> float: diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" index a671a6abae..f965941fc6 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" @@ -2,12 +2,13 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2014-12-31", leaf_name="alleinerziehend_betrag_y") def alleinerziehend_betrag_y_pauschal( - einkommensteuer__alleinerziehend_sn: bool, alleinerziehendenfreibetrag_basis: float + einkommensteuer__alleinerziehend_sn: bool, + alleinerziehendenfreibetrag_basis: float, ) -> float: """Calculate tax deduction allowance for single parents until 2014""" if einkommensteuer__alleinerziehend_sn: diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" index 9b061bba96..cc1cdc8166 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" @@ -4,14 +4,16 @@ from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( get_consecutive_int_1d_lookup_table_param_value, param_function, policy_function, ) if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue + from types import ModuleType + + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue @policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") @@ -94,6 +96,7 @@ def altersfreibetrag_y_ab_2005( @param_function(start_date="2005-01-01") def altersentlastungsquote_gestaffelt( raw_altersentlastungsquote_gestaffelt: dict[str | int, int | float], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" spec = raw_altersentlastungsquote_gestaffelt.copy() @@ -104,12 +107,14 @@ def altersentlastungsquote_gestaffelt( raw=spec_int_float, left_tail_key=first_birthyear_to_consider, right_tail_key=last_birthyear_to_consider, + xnp=xnp, ) @param_function(start_date="2005-01-01") def maximaler_altersentlastungsbetrag_gestaffelt( raw_maximaler_altersentlastungsbetrag_gestaffelt: dict[str | int, int | float], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" spec = raw_maximaler_altersentlastungsbetrag_gestaffelt.copy() @@ -120,6 +125,7 @@ def maximaler_altersentlastungsbetrag_gestaffelt( raw=spec_int_float, left_tail_key=first_birthyear_to_consider, right_tail_key=last_birthyear_to_consider, + xnp=xnp, ) @@ -127,6 +133,7 @@ def get_consecutive_int_1d_lookup_table_with_filled_up_tails( raw: dict[int, float], left_tail_key: int, right_tail_key: int, + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Create a consecutive integer lookup table with filled tails. @@ -142,11 +149,14 @@ def get_consecutive_int_1d_lookup_table_with_filled_up_tails( "Dictionary keys must be consecutive integers." ) consecutive_dict_start = dict.fromkeys( - range(left_tail_key, min_key_in_spec), raw[min_key_in_spec] + range(left_tail_key, min_key_in_spec), + raw[min_key_in_spec], ) consecutive_dict_end = dict.fromkeys( - range(max_key_in_spec + 1, right_tail_key + 1), raw[max_key_in_spec] + range(max_key_in_spec + 1, right_tail_key + 1), + raw[max_key_in_spec], ) return get_consecutive_int_1d_lookup_table_param_value( - {**consecutive_dict_start, **raw, **consecutive_dict_end} + raw={**consecutive_dict_start, **raw, **consecutive_dict_end}, + xnp=xnp, ) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" index fbb9cb745f..08394fac4b 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" @@ -4,18 +4,23 @@ from typing import TYPE_CHECKING -from ttsim import piecewise_polynomial, policy_function +from ttsim.tt_dag_elements import piecewise_polynomial, policy_function if TYPE_CHECKING: - from ttsim import PiecewisePolynomialParam + from types import ModuleType + + from ttsim.tt_dag_elements import PiecewisePolynomialParam @policy_function() def pauschbetrag_behinderung_y( - behinderungsgrad: int, parameter_behindertenpauschbetrag: PiecewisePolynomialParam + behinderungsgrad: int, + parameter_behindertenpauschbetrag: PiecewisePolynomialParam, + xnp: ModuleType, ) -> float: """Assign tax deduction allowance for handicaped to different handicap degrees.""" return piecewise_polynomial( x=behinderungsgrad, parameters=parameter_behindertenpauschbetrag, + xnp=xnp, ) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" index 09b4bfad65..f139dd483e 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" index 010c381cb8..70970b01b8 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index b70bd22275..37d17874cc 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_p_id_function, @@ -12,7 +12,9 @@ @agg_by_p_id_function(agg_type=AggType.SUM) def kinderbetreuungskosten_elternteil_m( - kinderbetreuungskosten_m: float, p_id_kinderbetreuungskostenträger: int, p_id: int + kinderbetreuungskosten_m: float, + p_id_kinderbetreuungskostenträger: int, + p_id: int, ) -> float: pass @@ -28,7 +30,6 @@ def sonderausgaben_y_sn_nur_pauschale( """ - return sonderausgabenpauschbetrag * einkommensteuer__anzahl_personen_sn @@ -44,7 +45,6 @@ def sonderausgaben_y_sn_mit_kinderbetreuung( details here https://www.buzer.de/s1.htm?a=10&g=estg. """ - return max( absetzbare_kinderbetreuungskosten_y_sn, sonderausgabenpauschbetrag * einkommensteuer__anzahl_personen_sn, @@ -76,7 +76,6 @@ def absetzbare_kinderbetreuungskosten_y_sn( """ - return ( gedeckelte_kinderbetreuungskosten_y_sn * parameter_absetzbare_kinderbetreuungskosten["anteil"] diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" index ef3d0494d7..5d9601dada 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" @@ -2,11 +2,13 @@ from typing import TYPE_CHECKING, Any -from ttsim import RoundingSpec, piecewise_polynomial, policy_function -from ttsim.column_objects_param_function import param_function +from ttsim.tt_dag_elements import RoundingSpec, piecewise_polynomial, policy_function +from ttsim.tt_dag_elements.column_objects_param_function import param_function if TYPE_CHECKING: - from ttsim.param_objects import PiecewisePolynomialParamValue + from types import ModuleType + + from ttsim.tt_dag_elements.param_objects import PiecewisePolynomialParamValue @policy_function( @@ -36,7 +38,6 @@ def vorsorgeaufwendungen_y_sn_ab_2005_bis_2009( Günstigerprüfung against the regime until 2004. """ - return max( vorsorgeaufwendungen_regime_bis_2004_y_sn, vorsorgeaufwendungen_globale_kappung_y_sn, @@ -58,7 +59,6 @@ def vorsorgeaufwendungen_y_sn_ab_2010_bis_2019( Günstigerprüfung against the regime until 2004. """ - return max( vorsorgeaufwendungen_regime_bis_2004_y_sn, vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn, @@ -201,6 +201,7 @@ def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( def rate_abzugsfähige_altersvorsorgeaufwendungen( evaluationsjahr: int, parameter_einführungsfaktor_altersvorsorgeaufwendungen: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the current year as follows: @@ -215,6 +216,7 @@ def rate_abzugsfähige_altersvorsorgeaufwendungen( return piecewise_polynomial( x=evaluationsjahr, parameters=parameter_einführungsfaktor_altersvorsorgeaufwendungen, + xnp=xnp, ) diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index 27be21ef4b..e6e7468634 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -1,11 +1,12 @@ """Einkommen. Einkommen are Einkünfte minus Sonderausgaben, Vorsorgeaufwendungen, außergewöhnliche -Belastungen and sonstige Abzüge.""" +Belastungen and sonstige Abzüge. +""" from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index e88503eb59..9931c9f5ac 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -6,7 +6,7 @@ import optree -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, PiecewisePolynomialParamValue, RoundingSpec, @@ -16,14 +16,16 @@ piecewise_polynomial, policy_function, ) -from ttsim.piecewise_polynomial import ( +from ttsim.tt_dag_elements.piecewise_polynomial import ( check_and_get_thresholds, get_piecewise_parameters, ) if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue - from ttsim.typing import RawParam + from types import ModuleType + + from ttsim.interface_dag_elements.typing import RawParam + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue @agg_by_group_function(agg_type=AggType.COUNT) @@ -58,7 +60,9 @@ def anzahl_kindergeld_ansprüche_2( end_date="1996-12-31", leaf_name="betrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S. 6 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S. 6 EStG", ), ) def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( @@ -74,7 +78,9 @@ def betrag_y_sn_kindergeld_kinderfreibetrag_parallel( start_date="1997-01-01", leaf_name="betrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S.6 EStG", ), ) def betrag_y_sn_kindergeld_oder_kinderfreibetrag( @@ -110,7 +116,9 @@ def kinderfreibetrag_günstiger_sn( end_date="2001-12-31", leaf_name="betrag_mit_kinderfreibetrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S.6 EStG", ), ) def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: @@ -121,13 +129,16 @@ def betrag_mit_kinderfreibetrag_y_sn_bis_2001() -> float: start_date="2002-01-01", leaf_name="betrag_mit_kinderfreibetrag_y_sn", rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S.6 EStG", ), ) def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: float, anzahl_personen_sn: int, parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Taxes with child allowance on Steuernummer level. @@ -138,19 +149,24 @@ def betrag_mit_kinderfreibetrag_y_sn_ab_2002( zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn / anzahl_personen_sn ) return anzahl_personen_sn * piecewise_polynomial( - x=zu_verst_eink_per_indiv, parameters=parameter_einkommensteuertarif + x=zu_verst_eink_per_indiv, + parameters=parameter_einkommensteuertarif, + xnp=xnp, ) @policy_function( rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S.6 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S.6 EStG", ), ) def betrag_ohne_kinderfreibetrag_y_sn( gesamteinkommen_y: float, anzahl_personen_sn: int, parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Taxes without child allowance on Steuernummer level. Also referred to as "tarifliche ESt II". @@ -158,7 +174,9 @@ def betrag_ohne_kinderfreibetrag_y_sn( """ zu_verst_eink_per_indiv = gesamteinkommen_y / anzahl_personen_sn return anzahl_personen_sn * piecewise_polynomial( - x=zu_verst_eink_per_indiv, parameters=parameter_einkommensteuertarif + x=zu_verst_eink_per_indiv, + parameters=parameter_einkommensteuertarif, + xnp=xnp, ) @@ -214,6 +232,7 @@ def relevantes_kindergeld_ohne_staffelung_m( @param_function(start_date="2002-01-01") def parameter_einkommensteuertarif( raw_parameter_einkommensteuertarif: RawParam, + xnp: ModuleType, ) -> PiecewisePolynomialParamValue: """Add the quadratic terms to tax tariff function. @@ -229,13 +248,15 @@ def parameter_einkommensteuertarif( """ expanded: dict[int, dict[str, float]] = optree.tree_map( # type: ignore[assignment] - float, raw_parameter_einkommensteuertarif + float, + raw_parameter_einkommensteuertarif, ) # Check and extract lower thresholds. lower_thresholds, upper_thresholds = check_and_get_thresholds( leaf_name="parameter_einkommensteuertarif", parameter_dict=expanded, + xnp=xnp, )[:2] for key in sorted(raw_parameter_einkommensteuertarif.keys()): if "rate_quadratic" not in raw_parameter_einkommensteuertarif[key]: @@ -246,4 +267,5 @@ def parameter_einkommensteuertarif( leaf_name="parameter_einkommensteuertarif", func_type="piecewise_quadratic", parameter_dict=expanded, + xnp=xnp, ) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" index 0e6ca5e7dc..c0d1bc53b3 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" index f13fa1a6d4..52d4eb22db 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" index 52d1857920..f31755a030 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2008-12-31", leaf_name="betrag_y") @@ -13,7 +13,8 @@ def betrag_y_mit_sparerfreibetrag_und_werbungskostenpauschbetrag( ) -> float: """Calculate taxable capital income on Steuernummer level.""" return max( - kapitalerträge_y - sparerfreibetrag + sparer_werbungskostenpauschbetrag, 0.0 + kapitalerträge_y - sparerfreibetrag + sparer_werbungskostenpauschbetrag, + 0.0, ) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" index 64809bb836..2f9b60fb92 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" index 544e995763..6bcd1de406 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() @@ -24,5 +24,4 @@ def betrag_y( @policy_function() def betrag_ohne_minijob_y(bruttolohn_y: float, werbungskostenpauschale: float) -> float: """Take gross wage and deduct Werbungskostenpauschale.""" - return max(bruttolohn_y - werbungskostenpauschale, 0.0) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" index 74e93ea683..85f3ec3993 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" index d87c0aeb4b..994b04672d 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" index 874080d09f..2546550f91 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" index a79faf7ef1..ee57f9e3cc 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2008-12-31", leaf_name="gesamtbetrag_der_einkünfte_y") diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" index bfb915305a..6b3bc60c8c 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" index ce5f80fd53..aae73b27d0 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() @@ -14,7 +14,7 @@ def ohne_renten_m() -> float: """ -@policy_input() +@policy_input(start_date="2021-01-01") def renteneinkünfte_vorjahr_m() -> float: """Income from private and public pensions in the previous year. diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" index 30fd6458bc..ae33362be0 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -2,7 +2,16 @@ from __future__ import annotations -from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( + PiecewisePolynomialParamValue, + piecewise_polynomial, + policy_function, +) @policy_function() @@ -31,9 +40,11 @@ def renteneinkünfte_m( def ertragsanteil_an_rente( sozialversicherung__rente__jahr_renteneintritt: int, parameter_ertragsanteil_an_rente: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Share of pensions subject to income taxation.""" return piecewise_polynomial( x=sozialversicherung__rente__jahr_renteneintritt, parameters=parameter_ertragsanteil_an_rente, + xnp=xnp, ) diff --git a/src/_gettsim/einkommensteuer/inputs.py b/src/_gettsim/einkommensteuer/inputs.py index ee79e66ee9..1bd3dbb102 100644 --- a/src/_gettsim/einkommensteuer/inputs.py +++ b/src/_gettsim/einkommensteuer/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index dd445b7783..e9545b65fb 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -2,7 +2,12 @@ from __future__ import annotations -from ttsim import AggType, agg_by_p_id_function, param_function, policy_function +from ttsim.tt_dag_elements import ( + AggType, + agg_by_p_id_function, + param_function, + policy_function, +) @policy_function() diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index 0a99661a33..feb6540ceb 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -2,12 +2,14 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function( rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 32a Abs. 1 S.1 EStG" + base=1, + direction="down", + reference="§ 32a Abs. 1 S.1 EStG", ), start_date="2004-01-01", leaf_name="zu_versteuerndes_einkommen_y_sn", @@ -81,6 +83,5 @@ def zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn( kinderfreibetrag_y_sn: float, ) -> float: """Calculate taxable income with child allowance on Steuernummer level.""" - out = gesamteinkommen_y - kinderfreibetrag_y_sn return max(out, 0.0) diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index 3ec0d02be8..661783ac5d 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function(start_date="2007-01-01") @@ -61,7 +61,8 @@ def einkommen_vorjahr_unter_bezugsgrenze_mit_unterscheidung_single_paar( familie__alleinerziehend: bool, zu_versteuerndes_einkommen_vorjahr_y_sn: float, max_zu_versteuerndes_einkommen_vorjahr_nach_alleinerziehendenstatus: dict[ - str, float + str, + float, ], ) -> bool: """Income before birth is below income threshold for Elterngeld.""" @@ -83,7 +84,8 @@ def einkommen_vorjahr_unter_bezugsgrenze_mit_unterscheidung_single_paar( @policy_function( - start_date="2024-04-01", leaf_name="einkommen_vorjahr_unter_bezugsgrenze" + start_date="2024-04-01", + leaf_name="einkommen_vorjahr_unter_bezugsgrenze", ) def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( zu_versteuerndes_einkommen_vorjahr_y_sn: float, @@ -97,7 +99,7 @@ def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( @policy_function( - start_date="2006-01-01", + start_date="2012-09-18", rounding_spec=RoundingSpec(base=0.01, direction="down"), ) def nettoeinkommen_approximation_m( diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 34e0dea3df..32f91768e3 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_group_function, @@ -13,7 +13,8 @@ @agg_by_group_function(agg_type=AggType.ANY) def kind_grundsätzlich_anspruchsberechtigt_fg( - kind_grundsätzlich_anspruchsberechtigt: bool, fg_id: int + kind_grundsätzlich_anspruchsberechtigt: bool, + fg_id: int, ) -> bool: pass @@ -49,7 +50,8 @@ def anzahl_kinder_bis_5_fg(familie__kind_bis_5: bool, fg_id: int) -> int: @agg_by_group_function(agg_type=AggType.SUM) def anzahl_mehrlinge_jüngstes_kind_fg( - jüngstes_kind_oder_mehrling: bool, fg_id: int + jüngstes_kind_oder_mehrling: bool, + fg_id: int, ) -> int: pass @@ -220,7 +222,6 @@ def lohnersatzanteil( decreases above the second step until prozent_minimum. """ - # Higher replacement rate if considered income is below a threshold if ( nettoeinkommen_vorjahr_m diff --git a/src/_gettsim/elterngeld/geschwisterbonus.py b/src/_gettsim/elterngeld/geschwisterbonus.py index 91418e2ac1..cc5f00952e 100644 --- a/src/_gettsim/elterngeld/geschwisterbonus.py +++ b/src/_gettsim/elterngeld/geschwisterbonus.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(start_date="2007-01-01") diff --git a/src/_gettsim/elterngeld/inputs.py b/src/_gettsim/elterngeld/inputs.py index 7f7e0b0ad7..bd981139e3 100644 --- a/src/_gettsim/elterngeld/inputs.py +++ b/src/_gettsim/elterngeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index a438f833e8..e727d498b8 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import Any, Literal -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_p_id_function, @@ -42,9 +42,11 @@ def einkommensgrenze( ) -@agg_by_p_id_function(agg_type=AggType.SUM) +@agg_by_p_id_function(end_date="2008-12-31", agg_type=AggType.SUM) def anspruchshöhe_m( - anspruchshöhe_kind_m: float, p_id_empfänger: int, p_id: int + anspruchshöhe_kind_m: float, + p_id_empfänger: int, + p_id: int, ) -> float: pass @@ -76,7 +78,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> NotImplementedError: """ Erziehungsgeld is not implemented yet prior to 2004, see https://github.com/iza-institute-of-labor-economics/gettsim/issues/673 - """ + """, ) @@ -241,7 +243,6 @@ def anzurechnendes_einkommen_y( There is special rule for "Beamte, Soldaten und Richter" which is not implemented yet. """ - if kind_grundsätzlich_anspruchsberechtigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg @@ -264,7 +265,6 @@ def einkommensgrenze_y( Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) """ - out = ( einkommensgrenze_ohne_geschwisterbonus + (arbeitslosengeld_2__anzahl_kinder_fg - 1) * aufschlag_einkommen @@ -330,10 +330,3 @@ def einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze( return einkommensgrenze.reduziert_alleinerziehend["regelsatz"] else: return einkommensgrenze.reduziert_paar["regelsatz"] - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def erziehungsgeld_spec_target( - erziehungsgeld_source_field: bool, p_id_field: int, p_id: int -) -> int: - pass diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py index 43fc2c879f..f9612184c7 100644 --- a/src/_gettsim/erziehungsgeld/inputs.py +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -2,14 +2,14 @@ from __future__ import annotations -from ttsim import FKType, policy_input +from ttsim.tt_dag_elements import FKType, policy_input -@policy_input() +@policy_input(end_date="2008-12-31") def budgetsatz() -> bool: """Applied for "Budgetsatz" of parental leave benefit.""" -@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) +@policy_input(end_date="2008-12-31", foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_empfänger() -> int: pass diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index 408ee1c81b..1fd6d67edd 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -6,7 +6,7 @@ from __future__ import annotations -from ttsim import AggType, agg_by_group_function, policy_function +from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function @agg_by_group_function(agg_type=AggType.COUNT) diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index 8b8261e417..792b1c8d41 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import FKType, policy_input +from ttsim.tt_dag_elements import FKType, policy_input @policy_input() diff --git a/src/_gettsim/grundsicherung/bedarfe.py b/src/_gettsim/grundsicherung/bedarfe.py index 72599a8cd1..24e5d95a3e 100644 --- a/src/_gettsim/grundsicherung/bedarfe.py +++ b/src/_gettsim/grundsicherung/bedarfe.py @@ -4,10 +4,10 @@ from typing import TYPE_CHECKING from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen -from ttsim import param_function +from ttsim.tt_dag_elements import param_function if TYPE_CHECKING: - from ttsim import RawParam + from ttsim.tt_dag_elements import RawParam @dataclass(frozen=True) diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index 3855886fa1..988a8f1090 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -4,11 +4,13 @@ from typing import TYPE_CHECKING -from ttsim import piecewise_polynomial, policy_function +from ttsim.tt_dag_elements import piecewise_polynomial, policy_function if TYPE_CHECKING: + from types import ModuleType + from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen - from ttsim import PiecewisePolynomialParam + from ttsim.tt_dag_elements import PiecewisePolynomialParam @policy_function() @@ -28,7 +30,6 @@ def einkommen_m( """Calculate individual income considered in the calculation of Grundsicherung im Alter. """ - # Income total_income = ( erwerbseinkommen_m @@ -62,8 +63,8 @@ def erwerbseinkommen_m( Legal reference: § 82 SGB XII Abs. 3 - Notes: - + Notes + ----- - Freibeträge for income are currently not considered - Start date is 2011 because of the reference to regelbedarfsstufen, which was introduced in 2011. @@ -113,6 +114,7 @@ def private_rente_betrag_m( sozialversicherung__rente__private_rente_betrag_m: float, anrechnungsfreier_anteil_private_renteneinkünfte: PiecewisePolynomialParam, grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, + xnp: ModuleType, ) -> float: """Calculate individual private pension benefits considered in the calculation of Grundsicherung im Alter. @@ -123,12 +125,14 @@ def private_rente_betrag_m( piecewise_polynomial( x=sozialversicherung__rente__private_rente_betrag_m, parameters=anrechnungsfreier_anteil_private_renteneinkünfte, + xnp=xnp, ) ) upper = grundsicherung__regelbedarfsstufen.rbs_1 / 2 return sozialversicherung__rente__private_rente_betrag_m - min( - sozialversicherung__rente__private_rente_betrag_m_amount_exempt, upper + sozialversicherung__rente__private_rente_betrag_m_amount_exempt, + upper, ) @@ -150,6 +154,7 @@ def gesetzliche_rente_m_ab_2021( sozialversicherung__rente__grundrente__grundsätzlich_anspruchsberechtigt: bool, grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, anrechnungsfreier_anteil_gesetzliche_rente: PiecewisePolynomialParam, + xnp: ModuleType, ) -> float: """Calculate individual public pension benefits which are considered in the calculation of Grundsicherung im Alter since 2021. @@ -157,10 +162,10 @@ def gesetzliche_rente_m_ab_2021( Starting from 2021: If eligible for Grundrente, can deduct 100€ completely and 30% of private pension above 100 (but no more than 1/2 of regelbedarf) """ - angerechnete_rente = piecewise_polynomial( x=sozialversicherung__rente__altersrente__betrag_m, parameters=anrechnungsfreier_anteil_gesetzliche_rente, + xnp=xnp, ) upper = grundsicherung__regelbedarfsstufen.rbs_1 / 2 diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index d58273c8f4..c2809af2a7 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -9,7 +9,7 @@ Regelbedarfsstufen, ) -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() @@ -32,7 +32,6 @@ def betrag_m_eg( # ToDo: currently not implemented for retirees. """ - # TODO(@ChristianZimpelmann): Treatment of Bedarfsgemeinschaften with both retirees # and unemployed job seekers probably incorrect # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 @@ -80,7 +79,6 @@ def mehrbedarf_schwerbehinderung_g_m( grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: """Calculate additional allowance for individuals with disabled person's pass G.""" - mehrbedarf_single = ( grundsicherung__regelbedarfsstufen.rbs_1 ) * mehrbedarf_bei_schwerbehinderungsgrad_g diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/household_characteristics.py index 95cd72d573..740d74d8e9 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/household_characteristics.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import AggType, agg_by_group_function, policy_function +from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function @agg_by_group_function(agg_type=AggType.SUM) @@ -10,7 +10,8 @@ def anzahl_erwachsene_hh(familie__erwachsen: bool, hh_id: int) -> int: @agg_by_group_function(agg_type=AggType.SUM) def anzahl_rentenbezieher_hh( - sozialversicherung__rente__bezieht_rente: bool, hh_id: int + sozialversicherung__rente__bezieht_rente: bool, + hh_id: int, ) -> int: pass @@ -22,7 +23,8 @@ def anzahl_personen_hh(hh_id: int) -> int: @policy_function() def erwachsene_alle_rentenbezieher_hh( - anzahl_erwachsene_hh: int, anzahl_rentenbezieher_hh: int + anzahl_erwachsene_hh: int, + anzahl_rentenbezieher_hh: int, ) -> bool: """Calculate if all adults in the household are pensioners.""" return anzahl_erwachsene_hh == anzahl_rentenbezieher_hh diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index d5bd0e6de6..75e4673517 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -2,8 +2,14 @@ from __future__ import annotations -from ttsim import group_creation_function, policy_input -from ttsim.config import numpy_or_jax as np +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import group_creation_function, policy_input + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn @policy_input() @@ -18,93 +24,110 @@ def hh_id() -> int: @group_creation_function() def ehe_id( - p_id: np.ndarray, - familie__p_id_ehepartner: np.ndarray, -) -> np.ndarray: + p_id: IntColumn, + familie__p_id_ehepartner: IntColumn, + xnp: ModuleType, +) -> IntColumn: """Couples that are either married or in a civil union.""" - n = np.max(p_id) + 1 - p_id_ehepartner_or_own_p_id = np.where( - familie__p_id_ehepartner < 0, p_id, familie__p_id_ehepartner + n = xnp.max(p_id) + 1 + p_id_ehepartner_or_own_p_id = xnp.where( + familie__p_id_ehepartner < 0, + p_id, + familie__p_id_ehepartner, ) result = ( - np.maximum(p_id, p_id_ehepartner_or_own_p_id) - + np.minimum(p_id, p_id_ehepartner_or_own_p_id) * n + xnp.maximum(p_id, p_id_ehepartner_or_own_p_id) + + xnp.minimum(p_id, p_id_ehepartner_or_own_p_id) * n ) - return _reorder_ids(result) + return result @group_creation_function() def fg_id( - arbeitslosengeld_2__p_id_einstandspartner: np.ndarray, - p_id: np.ndarray, - hh_id: np.ndarray, - alter: np.ndarray, - familie__p_id_elternteil_1: np.ndarray, - familie__p_id_elternteil_2: np.ndarray, -) -> np.ndarray: + arbeitslosengeld_2__p_id_einstandspartner: IntColumn, + p_id: IntColumn, + hh_id: IntColumn, + alter: IntColumn, + familie__p_id_elternteil_1: IntColumn, + familie__p_id_elternteil_2: IntColumn, + xnp: ModuleType, +) -> IntColumn: """Familiengemeinschaft. Base unit for some transfers. Maximum of two generations, the relevant base unit for Bürgergeld / Arbeitslosengeld 2, before excluding children who have enough income fend for themselves. """ - n = np.max(p_id) + 1 + n = xnp.max(p_id) + 1 # Get the array index for all p_ids of parents p_id_elternteil_1_loc = familie__p_id_elternteil_1 p_id_elternteil_2_loc = familie__p_id_elternteil_2 for i in range(p_id.shape[0]): - p_id_elternteil_1_loc = np.where( - familie__p_id_elternteil_1 == p_id[i], i, p_id_elternteil_1_loc + p_id_elternteil_1_loc = xnp.where( + familie__p_id_elternteil_1 == p_id[i], + i, + p_id_elternteil_1_loc, ) - p_id_elternteil_2_loc = np.where( - familie__p_id_elternteil_2 == p_id[i], i, p_id_elternteil_2_loc + p_id_elternteil_2_loc = xnp.where( + familie__p_id_elternteil_2 == p_id[i], + i, + p_id_elternteil_2_loc, ) - children = np.isin(p_id, familie__p_id_elternteil_1) | np.isin( - p_id, familie__p_id_elternteil_2 + children = xnp.isin(p_id, familie__p_id_elternteil_1) | xnp.isin( + p_id, + familie__p_id_elternteil_2, ) # Assign the same fg_id to everybody who has an Einstandspartner, # otherwise create a new one from p_id - fg_id = np.where( + out = xnp.where( arbeitslosengeld_2__p_id_einstandspartner < 0, p_id + p_id * n, - np.maximum(p_id, arbeitslosengeld_2__p_id_einstandspartner) - + np.minimum(p_id, arbeitslosengeld_2__p_id_einstandspartner) * n, + xnp.maximum(p_id, arbeitslosengeld_2__p_id_einstandspartner) + + xnp.minimum(p_id, arbeitslosengeld_2__p_id_einstandspartner) * n, ) - fg_id = _assign_parents_fg_id( - fg_id, p_id, p_id_elternteil_1_loc, hh_id, alter, children, n + out = _assign_parents_fg_id( + fg_id=out, + p_id=p_id, + p_id_elternteil_loc=p_id_elternteil_1_loc, + hh_id=hh_id, + alter=alter, + children=children, + n=n, + xnp=xnp, ) - fg_id = _assign_parents_fg_id( - fg_id, p_id, p_id_elternteil_2_loc, hh_id, alter, children, n + out = _assign_parents_fg_id( + fg_id=out, + p_id=p_id, + p_id_elternteil_loc=p_id_elternteil_2_loc, + hh_id=hh_id, + alter=alter, + children=children, + n=n, + xnp=xnp, ) - return _reorder_ids(fg_id) + return out def _assign_parents_fg_id( - fg_id: np.ndarray, - p_id: np.ndarray, - p_id_elternteil_loc: np.ndarray, - hh_id: np.ndarray, - alter: np.ndarray, - children: np.ndarray, - n: np.ndarray, -) -> np.ndarray: - """Get the fg_id of the childs parents. - - If the child is not married, has no children, is under 25 and in the same household, - assign the fg_id of its parents.""" - - # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt - # once Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + fg_id: IntColumn, + p_id: IntColumn, + p_id_elternteil_loc: IntColumn, + hh_id: IntColumn, + alter: IntColumn, + children: IntColumn, + n: IntColumn, + xnp: ModuleType, +) -> IntColumn: + """Return the fg_id of the child's parents.""" # TODO(@MImmesberger): Remove hard-coded number # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - return np.where( + return xnp.where( (p_id_elternteil_loc >= 0) * (fg_id == p_id + p_id * n) * (hh_id == hh_id[p_id_elternteil_loc]) @@ -117,111 +140,93 @@ def _assign_parents_fg_id( @group_creation_function() def bg_id( - fg_id: np.ndarray, - p_id: np.ndarray, - arbeitslosengeld_2__eigenbedarf_gedeckt: np.ndarray, - alter: np.ndarray, -) -> np.ndarray: - """Bedarfsgemeinschaft + fg_id: IntColumn, + p_id: IntColumn, + arbeitslosengeld_2__eigenbedarf_gedeckt: BoolColumn, + alter: IntColumn, + xnp: ModuleType, +) -> IntColumn: + """Bedarfsgemeinschaft. Relevant unit for Bürgergeld / Arbeitslosengeld 2. Familiengemeinschaft except for children who have enough income to fend for - themselves. Relevant unit for Bürgergeld / Arbeitslosengeld 2 + themselves. """ + offset = xnp.max(fg_id) + 1 # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt # once Bedarfsgemeinschaften are fully endogenous # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 # TODO(@MImmesberger): Remove hard-coded number # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 - offset = np.max(fg_id) + 1 - # Create new id for everyone who is not part of the Bedarfsgemeinschaft - bg_id = np.where( + return xnp.where( (arbeitslosengeld_2__eigenbedarf_gedeckt) * (alter < 25), offset + p_id, fg_id, ) - return _reorder_ids(bg_id) - @group_creation_function() def eg_id( - arbeitslosengeld_2__p_id_einstandspartner: np.ndarray, - p_id: np.ndarray, -) -> np.ndarray: + arbeitslosengeld_2__p_id_einstandspartner: IntColumn, + p_id: IntColumn, + xnp: ModuleType, +) -> IntColumn: """Einstandsgemeinschaft / Einstandspartner according to SGB II. A couple whose members are deemed to be responsible for each other. """ - n = np.max(p_id) + 1 - p_id_einstandspartner__or_own_p_id = np.where( + n = xnp.max(p_id) + 1 + p_id_einstandspartner__or_own_p_id = xnp.where( arbeitslosengeld_2__p_id_einstandspartner < 0, p_id, arbeitslosengeld_2__p_id_einstandspartner, ) - result = ( - np.maximum(p_id, p_id_einstandspartner__or_own_p_id) - + np.minimum(p_id, p_id_einstandspartner__or_own_p_id) * n - ) - return _reorder_ids(result) + return ( + xnp.maximum(p_id, p_id_einstandspartner__or_own_p_id) + + xnp.minimum(p_id, p_id_einstandspartner__or_own_p_id) * n + ) @group_creation_function() def wthh_id( - hh_id: np.ndarray, - vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: np.ndarray, - vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: np.ndarray, -) -> np.ndarray: + hh_id: IntColumn, + vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: BoolColumn, + vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: BoolColumn, + xnp: ModuleType, +) -> IntColumn: """Wohngeldrechtlicher Teilhaushalt. The relevant unit for Wohngeld. Members of a household for whom the Wohngeld priority check compared to Bürgergeld yields the same result ∈ {True, False}. """ - offset = np.max(hh_id) + 1 - wthh_id = np.where( + offset = xnp.max(hh_id) + 1 + + return xnp.where( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg | vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg, hh_id + offset, hh_id, ) - return _reorder_ids(wthh_id) @group_creation_function() def sn_id( - p_id: np.ndarray, - familie__p_id_ehepartner: np.ndarray, - einkommensteuer__gemeinsam_veranlagt: np.ndarray, -) -> np.ndarray: - """Steuernummer. - - Spouses filing taxes jointly or individuals. - """ - - n = np.max(p_id) + 1 - - p_id_ehepartner_or_own_p_id = np.where( + p_id: IntColumn, + familie__p_id_ehepartner: IntColumn, + einkommensteuer__gemeinsam_veranlagt: BoolColumn, + xnp: ModuleType, +) -> IntColumn: + """Steuernummer. Spouses filing taxes jointly or individuals.""" + n = xnp.max(p_id) + 1 + + p_id_ehepartner_or_own_p_id = xnp.where( (familie__p_id_ehepartner >= 0) * (einkommensteuer__gemeinsam_veranlagt), familie__p_id_ehepartner, p_id, ) - result = ( - np.maximum(p_id, p_id_ehepartner_or_own_p_id) - + np.minimum(p_id, p_id_ehepartner_or_own_p_id) * n + return ( + xnp.maximum(p_id, p_id_ehepartner_or_own_p_id) + + xnp.minimum(p_id, p_id_ehepartner_or_own_p_id) * n ) - - return _reorder_ids(result) - - -def _reorder_ids(ids: np.ndarray) -> np.ndarray: - """Make ID's consecutively numbered.""" - sorting = np.argsort(ids) - ids_sorted = ids[sorting] - index_after_sort = np.arange(ids.shape[0])[sorting] - # Look for difference from previous entry in sorted array - diff_to_prev = np.where(np.diff(ids_sorted) >= 1, 1, 0) - # Sum up all differences to get new id - cons_ids = np.concatenate((np.asarray([0]), np.cumsum(diff_to_prev))) - return cons_ids[np.argsort(index_after_sort)] diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 13cc6eccda..1817b200b9 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -4,7 +4,7 @@ import numpy -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() @@ -15,11 +15,11 @@ def geburtsdatum( ) -> numpy.datetime64: """Create date of birth datetime variable.""" return numpy.datetime64( - datetime.datetime( + datetime.datetime( # noqa: DTZ001 geburtsjahr, geburtsmonat, geburtstag, - ) + ), ).astype("datetime64[D]") diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index 865fef5aea..62581092d2 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() @@ -52,7 +52,7 @@ def vermögen() -> float: """Assets for means testing on individual level. {ref}`See this page for more details. <means_testing>`""" -@policy_input() +@policy_input(end_date="2017-12-31") def weiblich() -> bool: """Female.""" diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py index 911aac4479..cf55c8b986 100644 --- a/src/_gettsim/interface.py +++ b/src/_gettsim/interface.py @@ -1,26 +1,28 @@ from __future__ import annotations +from pathlib import Path from typing import TYPE_CHECKING -from _gettsim.config import GETTSIM_ROOT -from ttsim import ( - dataframe_to_nested_data, - main, +import numpy + +from ttsim import main +from ttsim.interface_dag_elements.data_converters import ( + df_with_mapped_columns_to_nested_data, nested_data_to_df_with_mapped_columns, - to_datetime, ) +from ttsim.interface_dag_elements.shared import to_datetime if TYPE_CHECKING: import pandas as pd - from ttsim.typing import NestedInputs, NestedStrings + from ttsim.interface_dag_elements.typing import NestedInputs, NestedStrings def oss( date: str, inputs_df: pd.DataFrame, inputs_tree_to_inputs_df_columns: NestedInputs, - targets_tree_to_outputs_df_columns: NestedStrings, + targets__tree: NestedStrings, ) -> pd.DataFrame: """One-stop-shop for computing taxes and transfers. @@ -34,14 +36,15 @@ def oss( A tree that has the inputs required by GETTSIM as the path (sequence of keys) and maps them to the data provided by the user. The leaves of the tree are strings that reference column names in *inputs_df* or constants. - targets_tree_to_outputs_df_columns: + targets__tree: A tree that has the desired targets as the path (sequence of keys) and maps them to the data columns the user would like to have. - Returns: + Returns + ------- A DataFrame with the results. - Examples: + Examples -------- >>> inputs_df = pd.DataFrame( ... { @@ -95,7 +98,7 @@ def oss( ... date="2025-01-01", ... inputs_df=inputs_df, ... inputs_tree_to_inputs_df_columns=inputs_map, - ... targets_tree_to_outputs_df_columns=targets_map, + ... targets__tree=targets_map, ... ) ltci_contrib 0 14.72 @@ -103,22 +106,24 @@ def oss( 2 0.00 3 9.82 """ - data_tree = dataframe_to_nested_data( - inputs_tree_to_df_columns=inputs_tree_to_inputs_df_columns, + input_data__tree = df_with_mapped_columns_to_nested_data( + mapper=inputs_tree_to_inputs_df_columns, df=inputs_df, + xnp=numpy, ) nested_result = main( inputs={ "date": to_datetime(date), - "root": GETTSIM_ROOT, - "data_tree": data_tree, - "targets_tree": targets_tree_to_outputs_df_columns, + "orig_policy_objects__root": Path(__file__).parent, + "input_data__tree": input_data__tree, + "targets__tree": targets__tree, "rounding": True, + "backend": "numpy", }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] return nested_data_to_df_with_mapped_columns( nested_data_to_convert=nested_result, - nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, - data_with_p_id=data_tree, + nested_outputs_df_column_names=targets__tree, + data_with_p_id=input_data__tree, ) diff --git a/src/_gettsim/kinderbonus/kinderbonus.py b/src/_gettsim/kinderbonus/kinderbonus.py index 55ae065965..b09b986a08 100644 --- a/src/_gettsim/kinderbonus/kinderbonus.py +++ b/src/_gettsim/kinderbonus/kinderbonus.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(start_date="2020-01-01", end_date="2021-12-31") @@ -12,7 +12,6 @@ def betrag_y(kindergeld__betrag_y: float, satz: float) -> float: (one-time payment, non-allowable against transfer payments) """ - if kindergeld__betrag_y > 0: out = satz else: diff --git a/src/_gettsim/kindergeld/inputs.py b/src/_gettsim/kindergeld/inputs.py index eb0b22855c..db5cc5d0ac 100644 --- a/src/_gettsim/kindergeld/inputs.py +++ b/src/_gettsim/kindergeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import FKType, policy_input +from ttsim.tt_dag_elements import FKType, policy_input @policy_input() diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 2a7b2901a1..41965f971c 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, agg_by_p_id_function, get_consecutive_int_1d_lookup_table_param_value, @@ -14,13 +14,17 @@ ) if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue - from ttsim.config import numpy_or_jax as np + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_ansprüche( - grundsätzlich_anspruchsberechtigt: bool, p_id_empfänger: int, p_id: int + grundsätzlich_anspruchsberechtigt: bool, + p_id_empfänger: int, + p_id: int, ) -> int: pass @@ -36,7 +40,6 @@ def betrag_ohne_staffelung_m( of children. """ - return satz * anzahl_ansprüche @@ -120,16 +123,18 @@ def kind_bis_10_mit_kindergeld( @policy_function(vectorization_strategy="not_required") def gleiche_fg_wie_empfänger( - p_id: np.ndarray, # int - p_id_empfänger: np.ndarray, # int - fg_id: np.ndarray, # int -) -> np.ndarray: # bool + p_id: IntColumn, + p_id_empfänger: IntColumn, + fg_id: IntColumn, + xnp: ModuleType, +) -> BoolColumn: """The child's Kindergeldempfänger is in the same Familiengemeinschaft.""" fg_id_kindergeldempfänger = join( - p_id_empfänger, - p_id, - fg_id, + foreign_key=p_id_empfänger, + primary_key=p_id, + target=fg_id, value_if_foreign_key_is_missing=-1, + xnp=xnp, ) return fg_id_kindergeldempfänger == fg_id @@ -138,9 +143,11 @@ def gleiche_fg_wie_empfänger( @param_function(end_date="2022-12-31") def satz_nach_anzahl_kinder( satz_gestaffelt: dict[int, float], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Convert the Kindergeld-Satz by child to the amount of Kindergeld by number of - children.""" + children. + """ max_num_children = 30 max_num_children_in_spec = max(satz_gestaffelt.keys()) base_spec = { @@ -153,5 +160,6 @@ def satz_nach_anzahl_kinder( for k in range(max_num_children_in_spec + 1, max_num_children) } return get_consecutive_int_1d_lookup_table_param_value( - {0: 0.0, **base_spec, **extended_spec} + raw={0: 0.0, **base_spec, **extended_spec}, + xnp=xnp, ) diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index 9b489d24be..b5cc2b694c 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -10,7 +10,7 @@ ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe, ) -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_group_function, @@ -19,13 +19,11 @@ ) if TYPE_CHECKING: - from ttsim import RawParam + from ttsim.tt_dag_elements import RawParam -@agg_by_group_function(agg_type=AggType.SUM, start_date="2005-01-01") -def arbeitslosengeld_2__anzahl_kinder_bg( - kindergeld__anzahl_ansprüche: int, bg_id: int -) -> int: +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_bg(kindergeld__anzahl_ansprüche: int, bg_id: int) -> int: pass @@ -105,7 +103,7 @@ def nettoeinkommen_eltern_m_mit_genauer_rundung( ) def maximales_nettoeinkommen_m_bg_vor_06_2022( erwachsenenbedarf_m_bg: float, - arbeitslosengeld_2__anzahl_kinder_bg: int, + anzahl_kinder_bg: int, satz: float, ) -> float: """Calculate maximum income to be eligible for additional child benefit @@ -114,7 +112,7 @@ def maximales_nettoeinkommen_m_bg_vor_06_2022( There is a maximum income threshold, depending on the need, plus the potential kiz receipt (§6a (1) Nr. 3 BKGG). """ - return erwachsenenbedarf_m_bg + satz * arbeitslosengeld_2__anzahl_kinder_bg + return erwachsenenbedarf_m_bg + satz * anzahl_kinder_bg @policy_function( @@ -124,7 +122,7 @@ def maximales_nettoeinkommen_m_bg_vor_06_2022( ) def maximales_nettoeinkommen_m_bg_ab_06_2022_bis_12_2022( erwachsenenbedarf_m_bg: float, - arbeitslosengeld_2__anzahl_kinder_bg: int, + anzahl_kinder_bg: int, arbeitslosengeld_2__kindersofortzuschlag: float, satz: float, ) -> float: @@ -136,16 +134,15 @@ def maximales_nettoeinkommen_m_bg_ab_06_2022_bis_12_2022( """ return ( erwachsenenbedarf_m_bg - + satz * arbeitslosengeld_2__anzahl_kinder_bg - + arbeitslosengeld_2__kindersofortzuschlag - * arbeitslosengeld_2__anzahl_kinder_bg + + satz * anzahl_kinder_bg + + arbeitslosengeld_2__kindersofortzuschlag * anzahl_kinder_bg ) @policy_function(start_date="2023-01-01", leaf_name="maximales_nettoeinkommen_m_bg") def maximales_nettoeinkommen_m_bg_ab_01_2023( erwachsenenbedarf_m_bg: float, - arbeitslosengeld_2__anzahl_kinder_bg: int, + anzahl_kinder_bg: int, satz: float, ) -> float: """Calculate maximum income to be eligible for additional child benefit @@ -156,13 +153,13 @@ def maximales_nettoeinkommen_m_bg_ab_01_2023( There is a maximum income threshold, depending on the need, plus the potential kiz receipt (§6a (1) Nr. 3 BKGG). """ - return erwachsenenbedarf_m_bg + satz * arbeitslosengeld_2__anzahl_kinder_bg + return erwachsenenbedarf_m_bg + satz * anzahl_kinder_bg @policy_function(start_date="2008-10-01") def mindestbruttoeinkommen_m_bg( - arbeitslosengeld_2__anzahl_kinder_bg: int, - familie__alleinerziehend_bg: bool, + anzahl_kinder_bg: int, + arbeitslosengeld_2__alleinerziehend_bg: bool, mindesteinkommen: dict[str, float], ) -> float: """Calculate minimal claim of child benefit (kinderzuschlag). @@ -170,9 +167,9 @@ def mindestbruttoeinkommen_m_bg( Min income to be eligible for KIZ (different for singles and couples) (§6a (1) Nr. 2 BKGG). """ - if arbeitslosengeld_2__anzahl_kinder_bg == 0: + if anzahl_kinder_bg == 0: out = 0.0 - elif familie__alleinerziehend_bg: + elif arbeitslosengeld_2__alleinerziehend_bg: out = mindesteinkommen["single"] else: out = mindesteinkommen["paar"] @@ -215,7 +212,9 @@ def kosten_der_unterkunft_m_bg( @param_function( - start_date="2005-01-01", end_date="2011-12-31", leaf_name="existenzminimum" + start_date="2005-01-01", + end_date="2011-12-31", + leaf_name="existenzminimum", ) def existenzminimum_ohne_bildung_und_teilhabe( parameter_existenzminimum: RawParam, @@ -268,15 +267,15 @@ def existenzminimum_mit_bildung_und_teilhabe( kosten_der_unterkunft=kosten_der_unterkunft, heizkosten=heizkosten, bildung_und_teilhabe=ElementExistenzminimumNurKind( - kind=parameter_existenzminimum["bildung_und_teilhabe"]["kind"] + kind=parameter_existenzminimum["bildung_und_teilhabe"]["kind"], ), ) @policy_function(start_date="2005-01-01") def wohnbedarf_anteil_eltern_bg( - arbeitslosengeld_2__anzahl_kinder_bg: int, - familie__alleinerziehend_bg: bool, + anzahl_kinder_bg: int, + arbeitslosengeld_2__alleinerziehend_bg: bool, existenzminimum: ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe | ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, wohnbedarf_anteil_berücksichtigte_kinder: int, @@ -287,8 +286,7 @@ def wohnbedarf_anteil_eltern_bg( Reference: § 6a Abs. 5 S. 3 BKGG """ - - if familie__alleinerziehend_bg: + if arbeitslosengeld_2__alleinerziehend_bg: elternbetrag = ( existenzminimum.kosten_der_unterkunft.single + existenzminimum.heizkosten.single @@ -299,7 +297,8 @@ def wohnbedarf_anteil_eltern_bg( ) kinderbetrag = min( - arbeitslosengeld_2__anzahl_kinder_bg, wohnbedarf_anteil_berücksichtigte_kinder + anzahl_kinder_bg, + wohnbedarf_anteil_berücksichtigte_kinder, ) * (existenzminimum.kosten_der_unterkunft.kind + existenzminimum.heizkosten.kind) return elternbetrag / (elternbetrag + kinderbetrag) @@ -307,7 +306,8 @@ def wohnbedarf_anteil_eltern_bg( @policy_function(start_date="2005-01-01") def erwachsenenbedarf_m_bg( - arbeitslosengeld_2__regelsatz_m_bg: float, kosten_der_unterkunft_m_bg: float + arbeitslosengeld_2__regelsatz_m_bg: float, + kosten_der_unterkunft_m_bg: float, ) -> float: """Aggregate relevant income and rental costs.""" return arbeitslosengeld_2__regelsatz_m_bg + kosten_der_unterkunft_m_bg diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index 8bc801a558..7f12497fe2 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -4,13 +4,13 @@ from typing import TYPE_CHECKING -from ttsim import param_function, policy_function +from ttsim.tt_dag_elements import param_function, policy_function if TYPE_CHECKING: from _gettsim.param_types import ( ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, ) - from ttsim import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue @param_function(start_date="2021-01-01", end_date="2022-12-31", leaf_name="satz") @@ -27,7 +27,6 @@ def satz_mit_gestaffeltem_kindergeld( For 2023 the amount is once again explicitly specified as a parameter. """ - return max( ( existenzminimum.regelsatz.kind @@ -53,7 +52,6 @@ def satz_mit_einheitlichem_kindergeld_und_kindersofortzuschlag( Formula according to § 6a (2) BKGG. """ - current_formula = ( existenzminimum.regelsatz.kind + existenzminimum.kosten_der_unterkunft.kind @@ -61,7 +59,8 @@ def satz_mit_einheitlichem_kindergeld_und_kindersofortzuschlag( ) / 12 - kindergeld__satz satz_ohne_kindersofortzuschlag = max( - current_formula, satz_vorjahr_ohne_kindersofortzuschlag + current_formula, + satz_vorjahr_ohne_kindersofortzuschlag, ) return satz_ohne_kindersofortzuschlag + arbeitslosengeld_2__kindersofortzuschlag @@ -103,7 +102,6 @@ def anspruchshöhe_m_bg( vermögensfreibetrag_bg: float, ) -> float: """Kinderzuschlag claim at the Bedarfsgemeinschaft level.""" - if vermögen_bg > vermögensfreibetrag_bg: out = max( basisbetrag_m_bg - (vermögen_bg - vermögensfreibetrag_bg), @@ -115,13 +113,14 @@ def anspruchshöhe_m_bg( @policy_function( - start_date="2005-01-01", end_date="2022-12-31", leaf_name="vermögensfreibetrag_bg" + start_date="2005-01-01", + end_date="2022-12-31", + leaf_name="vermögensfreibetrag_bg", ) def vermögensfreibetrag_bg_bis_2022( arbeitslosengeld_2__vermögensfreibetrag_bg: float, ) -> float: """Wealth exemptions for Kinderzuschlag until 2022.""" - return arbeitslosengeld_2__vermögensfreibetrag_bg @@ -130,7 +129,6 @@ def vermögensfreibetrag_bg_ab_2023( arbeitslosengeld_2__vermögensfreibetrag_in_karenzzeit_bg: float, ) -> float: """Wealth exemptions for Kinderzuschlag since 2023.""" - return arbeitslosengeld_2__vermögensfreibetrag_in_karenzzeit_bg @@ -156,7 +154,6 @@ def basisbetrag_m_bg_check_maximales_netteinkommen( (arbeitslosengeld_2__anzahl_personen_bg > 1). """ - if ( nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg ) and arbeitslosengeld_2__anzahl_personen_bg > 1: @@ -192,7 +189,6 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen_und_maximales_nettoeinkommen( (arbeitslosengeld_2__anzahl_personen_bg > 1). """ - if ( (bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg) and (nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg) diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 986505e189..c69be4d155 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -2,9 +2,12 @@ from __future__ import annotations -from typing import Any +from typing import TYPE_CHECKING, Any -from ttsim import ( +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( PiecewisePolynomialParamValue, RoundingSpec, param_function, @@ -63,7 +66,6 @@ def vorsorge_krankenversicherungsbeiträge_option_a( but only up to a certain threshold. """ - vorsorge_krankenversicherungsbeiträge_option_a_basis = ( vorsorgepauschale_mindestanteil * sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y @@ -127,7 +129,6 @@ def vorsorge_krankenversicherungsbeiträge_option_b_ab_2019( a" and "Option b". This function calculates option b where the actual contributions are used. """ - return ( sozialversicherung__kranken__beitrag__einkommen_bis_beitragsbemessungsgrenze_y * ( @@ -142,6 +143,7 @@ def vorsorge_krankenversicherungsbeiträge_option_b_ab_2019( def einführungsfaktor_rentenversicherungsaufwendungen( evaluationsjahr: int, parameter_einführungsfaktor_rentenversicherungsaufwendungen: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the current year as follows: @@ -156,6 +158,7 @@ def einführungsfaktor_rentenversicherungsaufwendungen( return piecewise_polynomial( x=evaluationsjahr, parameters=parameter_einführungsfaktor_rentenversicherungsaufwendungen, + xnp=xnp, ) @@ -177,7 +180,6 @@ def vorsorgepauschale_y_ab_2010_bis_2022( used when calculating Einkommensteuer. """ - rente = ( sozialversicherung__rente__beitrag__einkommen_y * sozialversicherung__rente__beitrag__beitragssatz @@ -208,7 +210,6 @@ def vorsorgepauschale_y_ab_2023( used when calculating Einkommensteuer. """ - rente = ( sozialversicherung__rente__beitrag__einkommen_y * sozialversicherung__rente__beitrag__beitragssatz diff --git a/src/_gettsim/lohnsteuer/inputs.py b/src/_gettsim/lohnsteuer/inputs.py index e6415b51f7..1b9e9adc47 100644 --- a/src/_gettsim/lohnsteuer/inputs.py +++ b/src/_gettsim/lohnsteuer/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index f26238f032..526f517c48 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -2,17 +2,25 @@ from __future__ import annotations -from ttsim import ( +from typing import TYPE_CHECKING + +import numpy + +from ttsim.tt_dag_elements import ( PiecewisePolynomialParamValue, param_function, piecewise_polynomial, policy_function, ) -from ttsim.config import numpy_or_jax as np + +if TYPE_CHECKING: + from types import ModuleType def basis_für_klassen_5_6( - einkommen_y: float, parameter_einkommensteuertarif: PiecewisePolynomialParamValue + einkommen_y: float, + parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying obtaining twice the difference between applying the factors 1.25 and 0.75 @@ -27,13 +35,16 @@ def basis_für_klassen_5_6( Jahresbetrags. """ - return 2 * ( piecewise_polynomial( - x=einkommen_y * 1.25, parameters=parameter_einkommensteuertarif + x=einkommen_y * 1.25, + parameters=parameter_einkommensteuertarif, + xnp=xnp, ) - piecewise_polynomial( - x=einkommen_y * 0.75, parameters=parameter_einkommensteuertarif + x=einkommen_y * 0.75, + parameters=parameter_einkommensteuertarif, + xnp=xnp, ) ) @@ -42,6 +53,7 @@ def basis_für_klassen_5_6( def parameter_max_lohnsteuer_klasse_5_6( einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, einkommensgrenzwerte_steuerklassen_5_6: dict[int, float], + xnp: ModuleType, ) -> PiecewisePolynomialParamValue: """Create paramter values for the piecewise polynomial that represents the maximum amount of Lohnsteuer that can be paid on incomes higher than the income thresholds for Steuerklasse 5 and 6. @@ -49,39 +61,44 @@ def parameter_max_lohnsteuer_klasse_5_6( lohnsteuer_bis_erste_grenze = basis_für_klassen_5_6( einkommensgrenzwerte_steuerklassen_5_6[1], einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) lohnsteuer_bis_zweite_grenze = basis_für_klassen_5_6( einkommensgrenzwerte_steuerklassen_5_6[2], einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) lohnsteuer_bis_dritte_grenze = basis_für_klassen_5_6( einkommensgrenzwerte_steuerklassen_5_6[3], einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) - thresholds = np.asarray( + thresholds = numpy.asarray( [ 0, einkommensgrenzwerte_steuerklassen_5_6[1], einkommensgrenzwerte_steuerklassen_5_6[2], einkommensgrenzwerte_steuerklassen_5_6[3], - ] + ], ) - intercepts = np.asarray( + intercepts = numpy.asarray( [ 0, lohnsteuer_bis_erste_grenze, lohnsteuer_bis_zweite_grenze, lohnsteuer_bis_dritte_grenze, - ] + ], ) - rates = np.expand_dims( + rates = numpy.expand_dims( einkommensteuer__parameter_einkommensteuertarif.rates[0][ - np.array([3, 3, 3, 4]) + numpy.array([3, 3, 3, 4]) ], axis=0, ) parameter_max_lohnsteuer_klasse_5_6 = PiecewisePolynomialParamValue( - thresholds=thresholds, intercepts=intercepts, rates=rates + thresholds=xnp.asarray(thresholds), + intercepts=xnp.asarray(intercepts), + rates=xnp.asarray(rates), ) return parameter_max_lohnsteuer_klasse_5_6 @@ -91,10 +108,13 @@ def parameter_max_lohnsteuer_klasse_5_6( def basistarif( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Lohnsteuer in the Basistarif.""" return piecewise_polynomial( - x=einkommen_y, parameters=einkommensteuer__parameter_einkommensteuertarif + x=einkommen_y, + parameters=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) @@ -102,10 +122,13 @@ def basistarif( def splittingtarif( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Lohnsteuer in the Splittingtarif.""" return 2 * piecewise_polynomial( - x=einkommen_y / 2, parameters=einkommensteuer__parameter_einkommensteuertarif + x=einkommen_y / 2, + parameters=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) @@ -114,19 +137,23 @@ def tarif_klassen_5_und_6( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, parameter_max_lohnsteuer_klasse_5_6: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Lohnsteuer for Lohnsteuerklassen 5 and 6.""" - basis = basis_für_klassen_5_6( - einkommen_y, einkommensteuer__parameter_einkommensteuertarif + einkommen_y, + einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) max_lohnsteuer = piecewise_polynomial( - x=einkommen_y, parameters=parameter_max_lohnsteuer_klasse_5_6 + x=einkommen_y, + parameters=parameter_max_lohnsteuer_klasse_5_6, + xnp=xnp, ) min_lohnsteuer = ( einkommensteuer__parameter_einkommensteuertarif.rates[0, 1] * einkommen_y ) - return np.minimum(np.maximum(min_lohnsteuer, basis), max_lohnsteuer) + return xnp.minimum(xnp.maximum(min_lohnsteuer, basis), max_lohnsteuer) @policy_function(start_date="2015-01-01") @@ -137,7 +164,6 @@ def betrag_y( tarif_klassen_5_und_6: float, ) -> float: """Withholding tax on earnings (Lohnsteuer)""" - if steuerklasse == 1 or steuerklasse == 2 or steuerklasse == 4: out = basistarif elif steuerklasse == 3: @@ -153,14 +179,17 @@ def basistarif_mit_kinderfreibetrag( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, kinderfreibetrag_soli_y: float, + xnp: ModuleType, ) -> float: """Lohnsteuer in the Basistarif deducting the Kindefreibetrag.""" - einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( - einkommen_y - kinderfreibetrag_soli_y, 0 + einkommen_abzüglich_kinderfreibetrag_soli = xnp.maximum( + einkommen_y - kinderfreibetrag_soli_y, + 0, ) return piecewise_polynomial( x=einkommen_abzüglich_kinderfreibetrag_soli, parameters=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) @@ -169,14 +198,17 @@ def splittingtarif_mit_kinderfreibetrag( einkommen_y: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, kinderfreibetrag_soli_y: float, + xnp: ModuleType, ) -> float: """Lohnsteuer in the Splittingtarif deducting the Kindefreibetrag.""" - einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( - einkommen_y - kinderfreibetrag_soli_y, 0 + einkommen_abzüglich_kinderfreibetrag_soli = xnp.maximum( + einkommen_y - kinderfreibetrag_soli_y, + 0, ) return 2 * piecewise_polynomial( x=einkommen_abzüglich_kinderfreibetrag_soli / 2, parameters=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) @@ -186,25 +218,29 @@ def tarif_klassen_5_und_6_mit_kinderfreibetrag( einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, parameter_max_lohnsteuer_klasse_5_6: PiecewisePolynomialParamValue, kinderfreibetrag_soli_y: float, + xnp: ModuleType, ) -> float: """Lohnsteuer for Lohnsteuerklassen 5 and 6 deducting the Kindefreibetrag.""" - einkommen_abzüglich_kinderfreibetrag_soli = np.maximum( - einkommen_y - kinderfreibetrag_soli_y, 0 + einkommen_abzüglich_kinderfreibetrag_soli = xnp.maximum( + einkommen_y - kinderfreibetrag_soli_y, + 0, ) basis = basis_für_klassen_5_6( einkommen_abzüglich_kinderfreibetrag_soli, einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) max_lohnsteuer = piecewise_polynomial( x=einkommen_abzüglich_kinderfreibetrag_soli, parameters=parameter_max_lohnsteuer_klasse_5_6, + xnp=xnp, ) min_lohnsteuer = ( einkommensteuer__parameter_einkommensteuertarif.rates[0, 1] * einkommen_abzüglich_kinderfreibetrag_soli ) - return np.minimum(np.maximum(min_lohnsteuer, basis), max_lohnsteuer) + return xnp.minimum(xnp.maximum(min_lohnsteuer, basis), max_lohnsteuer) @policy_function(start_date="2015-01-01") @@ -233,12 +269,13 @@ def betrag_mit_kinderfreibetrag_y( def betrag_soli_y( betrag_mit_kinderfreibetrag_y: float, solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Solidarity surcharge on Lohnsteuer (withholding tax on earnings).""" - return piecewise_polynomial( x=betrag_mit_kinderfreibetrag_y, parameters=solidaritätszuschlag__parameter_solidaritätszuschlag, + xnp=xnp, ) @@ -253,7 +290,6 @@ def kinderfreibetrag_soli_y( benefit, Steuerklasse 4 gets the child benefit once, and Steuerklasse 5/6 gets nothing. """ - if steuerklasse == 1 or steuerklasse == 2 or steuerklasse == 3: out = 2 * einkommensteuer__kinderfreibetrag_y elif steuerklasse == 4: diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index 5ea6afeff9..3bb96420f6 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -2,19 +2,29 @@ from __future__ import annotations -from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( + PiecewisePolynomialParamValue, + piecewise_polynomial, + policy_function, +) def solidaritätszuschlagstarif( steuer_pro_person: float, einkommensteuer__anzahl_personen_sn: int, parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """The isolated function for Solidaritätszuschlag.""" - return einkommensteuer__anzahl_personen_sn * piecewise_polynomial( x=steuer_pro_person / einkommensteuer__anzahl_personen_sn, parameters=parameter_solidaritätszuschlag, + xnp=xnp, ) @@ -23,6 +33,7 @@ def betrag_y_sn_ohne_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Calculate the Solidarity Surcharge on Steuernummer level. @@ -42,6 +53,7 @@ def betrag_y_sn_ohne_abgelt_st( steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn, einkommensteuer__anzahl_personen_sn=einkommensteuer__anzahl_personen_sn, parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, + xnp=xnp, ) @@ -51,6 +63,7 @@ def betrag_y_sn_mit_abgelt_st( einkommensteuer__anzahl_personen_sn: int, einkommensteuer__abgeltungssteuer__betrag_y_sn: float, parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Calculate the Solidarity Surcharge on Steuernummer level. @@ -71,6 +84,7 @@ def betrag_y_sn_mit_abgelt_st( steuer_pro_person=einkommensteuer__betrag_mit_kinderfreibetrag_y_sn, einkommensteuer__anzahl_personen_sn=einkommensteuer__anzahl_personen_sn, parameter_solidaritätszuschlag=parameter_solidaritätszuschlag, + xnp=xnp, ) + parameter_solidaritätszuschlag.rates[0, -1] * einkommensteuer__abgeltungssteuer__betrag_y_sn diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index cb31752f14..457fc00409 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( get_consecutive_int_1d_lookup_table_param_value, param_function, piecewise_polynomial, @@ -12,7 +12,9 @@ ) if TYPE_CHECKING: - from ttsim import ( + from types import ModuleType + + from ttsim.tt_dag_elements import ( ConsecutiveInt1dLookupTableParamValue, PiecewisePolynomialParamValue, ) @@ -32,7 +34,6 @@ def betrag_m( satz: dict[str, float], ) -> float: """Calculate individual unemployment benefit.""" - if einkommensteuer__anzahl_kinderfreibeträge == 0: arbeitsl_geld_satz = satz["allgemein"] else: @@ -54,7 +55,7 @@ def monate_verbleibender_anspruchsdauer( monate_durchgängigen_bezugs_von_arbeitslosengeld: float, anspruchsdauer_nach_alter: ConsecutiveInt1dLookupTableParamValue, anspruchsdauer_nach_versicherungspflichtigen_monaten: ConsecutiveInt1dLookupTableParamValue, -) -> float: +) -> int: """Remaining amount of months of potential unemployment benefit claims.""" auf_altersbasis = anspruchsdauer_nach_alter.values_to_look_up[ alter - anspruchsdauer_nach_alter.base_to_subtract @@ -84,7 +85,8 @@ def mindestversicherungszeit_erreicht( mindestversicherungsmonate: int, ) -> bool: """At least 12 months of unemployment contributions in the 30 months before claiming - unemployment insurance.""" + unemployment insurance. + """ return ( monate_beitragspflichtig_versichert_in_letzten_30_monaten >= mindestversicherungsmonate @@ -121,6 +123,7 @@ def einkommen_vorjahr_proxy_m( einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Approximate last years income for unemployment benefit.""" # Relevant wage is capped at the contribution thresholds @@ -141,10 +144,12 @@ def einkommen_vorjahr_proxy_m( x=12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale, parameters=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, ) prox_soli = piecewise_polynomial( x=prox_tax, parameters=solidaritätszuschlag__parameter_solidaritätszuschlag, + xnp=xnp, ) out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 return max(out, 0.0) @@ -153,6 +158,7 @@ def einkommen_vorjahr_proxy_m( @param_function(start_date="1997-03-24") def anspruchsdauer_nach_alter( raw_anspruchsdauer_nach_alter: dict[str | int, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Amount of potential months of unemployment benefit claims by age.""" tmp = raw_anspruchsdauer_nach_alter.copy() @@ -166,12 +172,13 @@ def anspruchsdauer_nach_alter( else: full_spec[a] = tmp[a] - return get_consecutive_int_1d_lookup_table_param_value(full_spec) + return get_consecutive_int_1d_lookup_table_param_value(raw=full_spec, xnp=xnp) @param_function(start_date="1997-03-24") def anspruchsdauer_nach_versicherungspflichtigen_monaten( raw_anspruchsdauer_nach_versicherungspflichtigen_monaten: dict[str | int, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Amount of potential months of unemployment benefit claims by age.""" tmp = raw_anspruchsdauer_nach_versicherungspflichtigen_monaten.copy() @@ -185,4 +192,4 @@ def anspruchsdauer_nach_versicherungspflichtigen_monaten( else: full_spec[a] = tmp[a] - return get_consecutive_int_1d_lookup_table_param_value(full_spec) + return get_consecutive_int_1d_lookup_table_param_value(raw=full_spec, xnp=xnp) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index 76350f031b..e8979302c6 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") @@ -99,7 +99,8 @@ def betrag_gesamt_in_gleitzone_m( beitragssatz: float, ) -> float: """Sum of employee's and employer's unemployment insurance contribution - for Midijobs.""" + for Midijobs. + """ return sozialversicherung__midijob_bemessungsentgelt_m * beitragssatz @@ -113,7 +114,8 @@ def betrag_arbeitgeber_in_gleitzone_m_anteil_bruttolohn( beitragssatz: float, ) -> float: """Employers' unemployment insurance contribution for Midijobs until September - 2022.""" + 2022. + """ return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m * beitragssatz @@ -146,7 +148,8 @@ def betrag_versicherter_in_gleitzone_m_als_differenz_von_gesamt_und_arbeitgeberb @policy_function( - start_date="2022-10-01", leaf_name="betrag_versicherter_in_gleitzone_m" + start_date="2022-10-01", + leaf_name="betrag_versicherter_in_gleitzone_m", ) def betrag_versicherter_in_gleitzone_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index 5384bbeee5..23f4c6c050 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" index d3de38e028..1f7a168d8e 100644 --- "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 686e2628f2..6e84e6df41 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") @@ -193,7 +193,6 @@ def betrag_rentner_m( beitragssatz_arbeitnehmer: float, ) -> float: """Health insurance contributions for pension incomes.""" - return beitragssatz_arbeitnehmer * bemessungsgrundlage_rente_m diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index 050e501b98..aeaf135b13 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import param_function +from ttsim.tt_dag_elements import param_function @param_function(end_date="2005-06-30") @@ -11,7 +11,6 @@ def beitragssatz_arbeitnehmer(beitragssatz: float) -> float: Basic split between employees and employers. """ - return beitragssatz / 2 @@ -188,7 +187,6 @@ def beitragssatz_arbeitgeber_bis_06_2005(beitragssatz: float) -> float: Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - return beitragssatz / 2 @@ -203,7 +201,6 @@ def beitragssatz_arbeitgeber_jahresanfang_bis_06_2005( Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - return beitragssatz_jahresanfang / 2 @@ -219,7 +216,6 @@ def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - return parameter_beitragssatz["mean_allgemein"] / 2 @@ -235,7 +231,6 @@ def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. """ - return parameter_beitragssatz_jahresanfang["mean_allgemein"] / 2 @@ -252,7 +247,6 @@ def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( From 2009 until 2018, the contribution rate was uniform for all health insurers, Zusatzbeitrag irrelevant. """ - return parameter_beitragssatz["allgemein"] / 2 @@ -269,7 +263,6 @@ def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( From 2009 until 2018, the contribution rate was uniform for all health insurers, Zusatzbeitrag irrelevant. """ - return parameter_beitragssatz_jahresanfang["allgemein"] / 2 @@ -312,7 +305,6 @@ def zusatzbeitragssatz_von_sonderbeitrag( parameter_beitragssatz: dict[str, float], ) -> float: """Health insurance top-up (Zusatzbeitrag) rate until December 2014.""" - return parameter_beitragssatz["sonderbeitrag"] @@ -324,5 +316,4 @@ def zusatzbeitragssatz_von_mean_zusatzbeitrag( parameter_beitragssatz: dict[str, float], ) -> float: """Health insurance top-up rate (Zusatzbeitrag) since January 2015.""" - return parameter_beitragssatz["mean_zusatzbeitrag"] diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index bd9e169afa..794ebcec72 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() @@ -32,7 +32,6 @@ def einkommen_bis_beitragsbemessungsgrenze_m( This does not consider reduced contributions for Mini- and Midijobs. Relevant for the computation of payroll taxes. """ - return min( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m, beitragsbemessungsgrenze_m, diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py index 37c3ba12d5..e3051a86e6 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 7c34628853..10ac215055 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function(start_date="2003-04-01") @@ -239,7 +239,6 @@ def midijob_bemessungsentgelt_m_ab_10_2022( Legal reference: Changes in § 20 SGB IV from 01.10.2022 """ - quotient1 = (midijobgrenze) / (midijobgrenze - minijobgrenze) quotient2 = (minijobgrenze) / (midijobgrenze - minijobgrenze) einkommen_diff = ( diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py index 72e4309a2d..e0bbf1b772 100644 --- a/src/_gettsim/sozialversicherung/minijob.py +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function() @@ -27,11 +27,14 @@ def geringfügig_beschäftigt( end_date="1999-12-31", leaf_name="minijobgrenze", rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" + base=1, + direction="up", + reference="§ 8 Abs. 1a Satz 2 SGB IV", ), ) def minijobgrenze_unterscheidung_ost_west( - wohnort_ost: bool, parameter_minijobgrenze_ost_west_unterschied: dict[str, float] + wohnort_ost: bool, + parameter_minijobgrenze_ost_west_unterschied: dict[str, float], ) -> float: """Minijob income threshold depending on place of living (East or West Germany). @@ -48,7 +51,9 @@ def minijobgrenze_unterscheidung_ost_west( start_date="2022-10-01", leaf_name="minijobgrenze", rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 8 Abs. 1a Satz 2 SGB IV" + base=1, + direction="up", + reference="§ 8 Abs. 1a Satz 2 SGB IV", ), ) def minijobgrenze_abgeleitet_von_mindestlohn( diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 07c36f64ce..a61b2ad06c 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function( @@ -18,7 +18,6 @@ def betrag_versicherter_m_ohne_midijob( betrag_rentner_m: float, ) -> float: """Long-term care insurance contributions paid by the insured person.""" - if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: @@ -44,7 +43,6 @@ def betrag_versicherter_m_mit_midijob( betrag_rentner_m: float, ) -> float: """Long-term care insurance contributions paid by the insured person.""" - if einkommensteuer__einkünfte__ist_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: @@ -72,7 +70,6 @@ def betrag_arbeitgeber_m_ohne_midijob( Before Midijob introduction in April 2003. """ - if ( einkommensteuer__einkünfte__ist_selbstständig or sozialversicherung__geringfügig_beschäftigt @@ -99,7 +96,6 @@ def betrag_arbeitgeber_m_mit_midijob( After Midijob introduction in April 2003. """ - if ( einkommensteuer__einkünfte__ist_selbstständig or sozialversicherung__geringfügig_beschäftigt @@ -137,7 +133,6 @@ def betrag_versicherter_regulär_beschäftigt_m( """Long-term care insurance contributions paid by the insured person if regularly employed. """ - return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz_arbeitnehmer @@ -149,7 +144,6 @@ def betrag_arbeitgeber_regulär_beschäftigt_m( """Long-term care insurance contributions paid by the employer under regular employment. """ - return sozialversicherung__kranken__beitrag__einkommen_m * beitragssatz_arbeitgeber @@ -162,7 +156,6 @@ def betrag_gesamt_in_gleitzone_m( beitragssatz_arbeitgeber: float, ) -> float: """Sum of employee and employer long-term care insurance contributions.""" - return sozialversicherung__midijob_bemessungsentgelt_m * ( beitragssatz_arbeitnehmer + beitragssatz_arbeitgeber ) @@ -209,7 +202,6 @@ def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehre beitragssatz_nach_kinderzahl: dict[str, float], ) -> float: """Employee's long-term care insurance contribution.""" - base = ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m * beitragssatz_nach_kinderzahl["standard"] diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 7e44ed009d..41707593e4 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -2,7 +2,12 @@ from __future__ import annotations -from ttsim import AggType, agg_by_p_id_function, param_function, policy_function +from ttsim.tt_dag_elements import ( + AggType, + agg_by_p_id_function, + param_function, + policy_function, +) @param_function(start_date="1995-01-01", end_date="2004-12-31") @@ -24,7 +29,6 @@ def beitragssatz_arbeitnehmer_zusatz_kinderlos_dummy( Since 2005, the contribution rate is increased for childless individuals. """ - # Add additional contribution for childless individuals if zahlt_zusatzbetrag_kinderlos: out = ( @@ -58,7 +62,8 @@ def beitragssatz_arbeitnehmer_mit_abschlag_nach_kinderzahl( add = add + beitragssatz_nach_kinderzahl["zusatz_kinderlos"] if anzahl_kinder_bis_24 >= 2: add = add - beitragssatz_nach_kinderzahl["abschlag_für_kinder_bis_24"] * min( - anzahl_kinder_bis_24 - 1, 4 + anzahl_kinder_bis_24 - 1, + 4, ) return base + add @@ -106,7 +111,9 @@ def anzahl_kinder_bis_24( @param_function( - start_date="1995-01-01", end_date="2004-12-31", leaf_name="beitragssatz_arbeitgeber" + start_date="1995-01-01", + end_date="2004-12-31", + leaf_name="beitragssatz_arbeitgeber", ) def beitragssatz_arbeitgeber_einheitliche_basis(beitragssatz: float) -> float: """Employer's long-term care insurance contribution rate.""" diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py index a5c1171db0..b907a69946 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index 75f6e9afd1..23df15a21f 100644 --- "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") diff --git a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py index bcc08fed3f..3fdba002f2 100644 --- a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py +++ b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 1290fd1445..48e76af71e 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -2,8 +2,12 @@ from __future__ import annotations -from ttsim import policy_function -from ttsim.config import numpy_or_jax as np +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import policy_function + +if TYPE_CHECKING: + from types import ModuleType @policy_function( @@ -18,6 +22,7 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( langjährig__grundsätzlich_anspruchsberechtigt: bool, langjährig__altersgrenze: float, regelaltersrente__altersgrenze: float, + xnp: ModuleType, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -26,17 +31,16 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_ohne_besonders_langjährig( to the normal retirement age (FRA<=NRA) and depends on personal characteristics as gender, insurance duration, health/disability, employment status. """ - out = regelaltersrente__altersgrenze if für_frauen__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, für_frauen__altersgrenze) + out = xnp.minimum(out, für_frauen__altersgrenze) if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = np.minimum( + out = xnp.minimum( out, wegen_arbeitslosigkeit__altersgrenze, ) if langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, langjährig__altersgrenze) + out = xnp.minimum(out, langjährig__altersgrenze) return out @@ -56,6 +60,7 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( langjährig__grundsätzlich_anspruchsberechtigt: bool, langjährig__altersgrenze: float, regelaltersrente__altersgrenze: float, + xnp: ModuleType, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -69,19 +74,18 @@ def altersgrenze_mit_arbeitslosigkeit_frauen_besonders_langjährig( because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. """ - out = regelaltersrente__altersgrenze if für_frauen__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, für_frauen__altersgrenze) + out = xnp.minimum(out, für_frauen__altersgrenze) if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = np.minimum( + out = xnp.minimum( out, wegen_arbeitslosigkeit__altersgrenze, ) if langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, langjährig__altersgrenze) + out = xnp.minimum(out, langjährig__altersgrenze) if besonders_langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum( + out = xnp.minimum( out, besonders_langjährig__altersgrenze, ) @@ -99,6 +103,7 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( langjährig__grundsätzlich_anspruchsberechtigt: bool, langjährig__altersgrenze: float, regelaltersrente__altersgrenze: float, + xnp: ModuleType, ) -> float: """Full retirement age after eligibility checks, assuming eligibility for Regelaltersrente. @@ -107,12 +112,11 @@ def altersgrenze_mit_besonders_langjährig_ohne_arbeitslosigkeit_frauen( to the normal retirement age (FRA<=NRA) and depends on personal characteristics as gender, insurance duration, health/disability, employment status. """ - out = regelaltersrente__altersgrenze if langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, langjährig__altersgrenze) + out = xnp.minimum(out, langjährig__altersgrenze) if besonders_langjährig__grundsätzlich_anspruchsberechtigt: - out = np.minimum( + out = xnp.minimum( out, besonders_langjährig__altersgrenze, ) @@ -132,6 +136,7 @@ def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( langjährig__grundsätzlich_anspruchsberechtigt: bool, langjährig__altersgrenze_vorzeitig: float, regelaltersrente__altersgrenze: float, + xnp: ModuleType, ) -> float: """Earliest possible retirement age after checking for eligibility. @@ -151,9 +156,9 @@ def altersgrenze_vorzeitig_mit_arbeitslosigkeit_frauen( if langjährig__grundsätzlich_anspruchsberechtigt: out = langjährig_vorzeitig if für_frauen__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, frauen_vorzeitig) + out = xnp.minimum(out, frauen_vorzeitig) if wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt: - out = np.minimum(out, arbeitsl_vorzeitig) + out = xnp.minimum(out, arbeitsl_vorzeitig) return out @@ -169,7 +174,6 @@ def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( Early retirement age depends on personal characteristics as gender, insurance duration, health/disability, employment status. """ - out = regelaltersrente__altersgrenze if langjährig__grundsätzlich_anspruchsberechtigt: @@ -181,7 +185,8 @@ def altersgrenze_vorzeitig_ohne_arbeitslosigkeit_frauen( @policy_function( - end_date="2017-12-31", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" + end_date="2017-12-31", + leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt", ) def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( für_frauen__grundsätzlich_anspruchsberechtigt: bool, @@ -195,7 +200,6 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( becomes inactive in 2018 because then all potential beneficiaries of the Rente wg. Arbeitslosigkeit and Rente für Frauen have reached the normal retirement age. """ - return ( für_frauen__grundsätzlich_anspruchsberechtigt or langjährig__grundsätzlich_anspruchsberechtigt @@ -204,7 +208,8 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_mit_arbeitslosigkeit_frauen( @policy_function( - start_date="2018-01-01", leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt" + start_date="2018-01-01", + leaf_name="vorzeitig_grundsätzlich_anspruchsberechtigt", ) def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_arbeitslosigkeit_frauen( langjährig__grundsätzlich_anspruchsberechtigt: bool, @@ -213,7 +218,6 @@ def vorzeitig_grundsätzlich_anspruchsberechtigt_vorzeitig_ohne_arbeitslosigkeit Can only be claimed if eligible for "Rente für langjährig Versicherte". """ - return langjährig__grundsätzlich_anspruchsberechtigt @@ -244,7 +248,7 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( für_frauen__altersgrenze, langjährig__altersgrenze, wegen_arbeitslosigkeit__altersgrenze, - ] + ], ) elif ( langjährig__grundsätzlich_anspruchsberechtigt @@ -254,7 +258,7 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( [ für_frauen__altersgrenze, langjährig__altersgrenze, - ] + ], ) elif ( langjährig__grundsätzlich_anspruchsberechtigt @@ -264,7 +268,7 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( [ langjährig__altersgrenze, wegen_arbeitslosigkeit__altersgrenze, - ] + ], ) elif langjährig__grundsätzlich_anspruchsberechtigt: out = langjährig__altersgrenze diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index e3ae03ffec..335fbf62d5 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -2,18 +2,21 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function( end_date="2020-12-31", rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), leaf_name="betrag_m", ) def betrag_m( - bruttorente_m: float, sozialversicherung__rente__bezieht_rente: bool + bruttorente_m: float, + sozialversicherung__rente__bezieht_rente: bool, ) -> float: return bruttorente_m if sozialversicherung__rente__bezieht_rente else 0.0 @@ -21,7 +24,9 @@ def betrag_m( @policy_function( start_date="2021-01-01", rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), leaf_name="betrag_m", ) @@ -60,7 +65,6 @@ def bruttorente_basisbetrag_m_nach_wohnort( - https://de.wikipedia.org/wiki/Rentenformel - https://de.wikipedia.org/wiki/Rentenanpassungsformel """ - if sozialversicherung__rente__bezieht_rente: out = ( sozialversicherung__rente__entgeltpunkte_west @@ -97,7 +101,6 @@ def bruttorente_basisbetrag_m( - https://de.wikipedia.org/wiki/Rentenformel - https://de.wikipedia.org/wiki/Rentenanpassungsformel """ - if sozialversicherung__rente__bezieht_rente: out = ( ( @@ -161,7 +164,6 @@ def zugangsfaktor( `regelaltersrente__grundsätzlich_anspruchsberechtigt` is False. """ - if regelaltersrente__grundsätzlich_anspruchsberechtigt: # Early retirement (before full retirement age): Zugangsfaktor < 1 if ( diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index a4f51c9c4c..dda7a4b30d 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( @@ -10,7 +10,8 @@ end_date="2028-12-31", ) def altersgrenze( - geburtsjahr: int, altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue + geburtsjahr: int, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """ Full retirement age (FRA) for very long term insured. @@ -34,5 +35,4 @@ def grundsätzlich_anspruchsberechtigt( """Determining the eligibility for Altersrente für besonders langjährig Versicherte (pension for very long-term insured). Wartezeit 45 years. aka "Rente mit 63". """ - return sozialversicherung__rente__wartezeit_45_jahre_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py index 685d2c9988..236342ed4b 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py @@ -1,4 +1,6 @@ -from ttsim import policy_function +from __future__ import annotations + +from ttsim.tt_dag_elements import policy_function # TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East # Germany starting in July 2023. @@ -52,7 +54,6 @@ def neue_entgeltpunkte( umrechnung_entgeltpunkte_beitrittsgebiet: float, ) -> float: """Return earning points for the wages earned in the last year.""" - # Scale bruttolohn up if earned in eastern Germany if wohnort_ost: bruttolohn_scaled_east = ( diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index a08e185ca3..58a281f15b 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -5,7 +5,7 @@ from __future__ import annotations -from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( @@ -68,7 +68,6 @@ def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( Policy becomes inactive in 2018 because then all potential beneficiaries have reached the normal retirement age. """ - return ( weiblich and sozialversicherung__rente__wartezeit_15_jahre_erfüllt @@ -97,7 +96,6 @@ def grundsätzlich_anspruchsberechtigt_mit_prüfung_geburtsjahr( becomes inactive in 2018 because then all potential beneficiaries have reached the normal retirement age. """ - return ( weiblich and sozialversicherung__rente__wartezeit_15_jahre_erfüllt diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" index 0adeba9302..a010412eeb 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" @@ -2,9 +2,9 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input -@policy_input() +@policy_input(end_date="2017-12-31") def pflichtsbeitragsjahre_ab_alter_40() -> float: """Total years of mandatory contributions after age 40.""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py index e106733cda..69fe2f39e9 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py @@ -1,10 +1,14 @@ -from ttsim import RoundingSpec, policy_function +from __future__ import annotations + +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function( - end_date="2016-12-31", + end_date="2017-06-30", rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), leaf_name="bruttorente_m", ) @@ -33,11 +37,13 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( @policy_function( - start_date="2017-01-01", + start_date="2017-07-01", end_date="2022-12-31", leaf_name="bruttorente_m", rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), ) def bruttorente_m_mit_hinzuverdienstdeckel( @@ -71,7 +77,7 @@ def bruttorente_m_mit_hinzuverdienstdeckel( @policy_function( - start_date="2017-01-01", + start_date="2017-07-01", end_date="2022-12-31", ) def zahlbetrag_ohne_deckel_m( @@ -106,7 +112,7 @@ def zahlbetrag_ohne_deckel_m( @policy_function( - start_date="2017-01-01", + start_date="2017-07-01", end_date="2022-12-31", ) def differenz_bruttolohn_hinzuverdienstgrenze_y( @@ -122,7 +128,7 @@ def differenz_bruttolohn_hinzuverdienstgrenze_y( @policy_function( - start_date="2017-01-01", + start_date="2017-07-01", end_date="2022-12-31", ) def differenz_bruttolohn_hinzuverdienstdeckel_y( @@ -143,7 +149,9 @@ def differenz_bruttolohn_hinzuverdienstdeckel_y( start_date="2023-01-01", leaf_name="bruttorente_m", rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), ) def bruttorente_m_ohne_einkommensanrechnung( diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py index c2e5d75be5..4ebdce1736 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py @@ -2,11 +2,12 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() def höchster_bruttolohn_letzte_15_jahre_vor_rente_y() -> float: """Highest gross income from regular employment in the last 15 years before pension benefit claiming. Relevant to determine pension benefit deductions for retirees in - early retirement.""" + early retirement. + """ diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index fc54d04f5d..80bb5f6681 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index 377b70fee3..c90339d238 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -2,12 +2,13 @@ from __future__ import annotations -from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function(start_date="2007-04-20", end_date="2030-12-31") def altersgrenze( - geburtsjahr: int, altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue + geburtsjahr: int, + altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Normal retirement age (NRA) during the phase-in period. @@ -29,5 +30,4 @@ def grundsätzlich_anspruchsberechtigt( sozialversicherung__rente__mindestwartezeit_erfüllt: bool, ) -> bool: """Determining the eligibility for the Regelaltersrente.""" - return sozialversicherung__rente__mindestwartezeit_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml index 609e863cb1..bc930e7b8d 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/altersgrenze.yaml @@ -631,6 +631,8 @@ altersgrenze_gestaffelt: 12: years: 65 months: 0 + 2018-01-01: + note: Irrelevant because last cohort has passed the normal retirement age. altersgrenze_gestaffelt_vertrauensschutz: name: de: >- diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py index b0cff2a2d2..749aea7c92 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py @@ -2,26 +2,28 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input -@policy_input() +@policy_input(end_date="2017-12-31") def arbeitslos_für_1_jahr_nach_alter_58_ein_halb() -> bool: """Has been unemployed at least 1 year after age 58.5.""" -@policy_input() +@policy_input(end_date="2017-12-31") def pflichtbeitragsjahre_8_von_10() -> bool: """Has at least 8 contribution years in past 10 years.""" -@policy_input() +@policy_input(start_date="1996-07-29", end_date="2009-12-31") def vertrauensschutz_1997() -> bool: """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit - implemented in 1997 (§ 237 SGB VI Abs. 4).""" + implemented in 1997 (§ 237 SGB VI Abs. 4). + """ -@policy_input() +@policy_input(start_date="2004-07-26", end_date="2017-12-31") def vertrauensschutz_2004() -> bool: """Is covered by Vertrauensschutz rules for the Altersrente wegen Arbeitslosigkeit - enacted in July 2004 (§ 237 SGB VI Abs. 5).""" + enacted in July 2004 (§ 237 SGB VI Abs. 5). + """ diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index 4e76ee85a2..4b614857a1 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -9,7 +9,7 @@ from __future__ import annotations -from ttsim import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function @policy_function( @@ -234,7 +234,6 @@ def grundsätzlich_anspruchsberechtigt_ohne_prüfung_geburtsjahr( regarding voluntary unemployment this requirement may be viewed as always satisfied and is therefore not included when checking for eligibility. """ - return ( arbeitslos_für_1_jahr_nach_alter_58_ein_halb and sozialversicherung__rente__wartezeit_15_jahre_erfüllt @@ -264,7 +263,6 @@ def grundsätzlich_anspruchsberechtigt_mit_prüfung_geburtsjahr( becomes inactive in 2018 because then all potential beneficiaries have reached the Regelaltersgrenze. """ - return ( arbeitslos_für_1_jahr_nach_alter_58_ein_halb and sozialversicherung__rente__wartezeit_15_jahre_erfüllt diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index 3eb47d262e..933bcb7ece 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") @@ -33,7 +33,6 @@ def betrag_versicherter_m_mit_midijob( After Midijob introduction in April 2003. """ - if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: @@ -68,7 +67,6 @@ def betrag_arbeitgeber_m_ohne_arbeitgeberpauschale( Before Minijobs were subject to pension contributions. """ - if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: @@ -92,7 +90,6 @@ def betrag_arbeitgeber_m_mit_arbeitgeberpauschale( Before Midijob introduction in April 2003. """ - if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m @@ -117,7 +114,6 @@ def betrag_arbeitgeber_m_mit_midijob( After Midijob introduction in April 2003. """ - if sozialversicherung__geringfügig_beschäftigt: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m @@ -211,7 +207,8 @@ def betrag_in_gleitzone_arbeitnehmer_m_als_differenz_von_gesamt_und_arbeitgeberb @policy_function( - start_date="2022-10-01", leaf_name="betrag_in_gleitzone_arbeitnehmer_m" + start_date="2022-10-01", + leaf_name="betrag_in_gleitzone_arbeitnehmer_m", ) def betrag_in_gleitzone_arbeitnehmer_m_mit_festem_beitragssatz( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: float, diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 67fc1f7a2d..ed3cbd2db2 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -4,10 +4,10 @@ from typing import TYPE_CHECKING -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue @policy_function(start_date="2001-01-01", end_date="2023-06-30", leaf_name="betrag_m") @@ -18,14 +18,14 @@ def betrag_m_nach_wohnort( rentenartfaktor: float, grundsätzlich_anspruchsberechtigt: bool, sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort: dict[ - str, float + str, + float, ], ) -> float: """Erwerbsminderungsrente (public disability insurance). Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente """ - if grundsätzlich_anspruchsberechtigt: out = ( ( @@ -63,7 +63,6 @@ def betrag_m_einheitlich( Legal reference: SGB VI § 64: Rentenformel für Monatsbetrag der Rente """ - if grundsätzlich_anspruchsberechtigt: out = ( (entgeltpunkte_ost + entgeltpunkte_west) @@ -88,7 +87,6 @@ def grundsätzlich_anspruchsberechtigt( Legal reference: § 43 Abs. 1 SGB VI. """ - anspruch_erwerbsm_rente = ( (voll_erwerbsgemindert or teilweise_erwerbsgemindert) and sozialversicherung__rente__mindestwartezeit_erfüllt @@ -114,7 +112,6 @@ def entgeltpunkte_west( additional earning points. They receive their average earned income points for each year between their age of retirement and the "zurechnungszeitgrenze". """ - return sozialversicherung__rente__entgeltpunkte_west + ( zurechnungszeit * (1 - anteil_entgeltpunkte_ost) ) @@ -138,14 +135,15 @@ def entgeltpunkte_ost( additional earning points. They receive their average earned income points for each year between their age of retirement and the "zurechnungszeitgrenze". """ - return sozialversicherung__rente__entgeltpunkte_ost + ( zurechnungszeit * anteil_entgeltpunkte_ost ) @policy_function( - start_date="2000-12-23", end_date="2014-06-30", leaf_name="zurechnungszeit" + start_date="2000-12-23", + end_date="2014-06-30", + leaf_name="zurechnungszeit", ) def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( mean_entgeltpunkte_pro_bewertungsmonat: float, @@ -176,7 +174,9 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( @policy_function( - start_date="2014-07-01", end_date="2017-07-16", leaf_name="zurechnungszeit" + start_date="2014-07-01", + end_date="2017-07-16", + leaf_name="zurechnungszeit", ) def zurechnungszeit_mit_einheitlicher_altersgrenze( mean_entgeltpunkte_pro_bewertungsmonat: float, @@ -246,7 +246,8 @@ def zugangsfaktor_ohne_gestaffelte_altersgrenze( altersgrenze: float, min_zugangsfaktor: float, sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ - str, float + str, + float, ], ) -> float: """Zugangsfaktor. @@ -279,7 +280,8 @@ def zugangsfaktor_mit_gestaffelter_altersgrenze( altersgrenze_langjährig_versichert: float, min_zugangsfaktor: float, sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ - str, float + str, + float, ], ) -> float: """Zugangsfaktor. @@ -403,7 +405,6 @@ def mean_entgeltpunkte_pro_bewertungsmonat( Legal reference: SGB VI § 72: Grundbewertung """ - belegungsfähiger_gesamtzeitraum = ( sozialversicherung__rente__alter_bei_renteneintritt - altersgrenze_grundbewertung diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py index 9286fa5cb9..ca264511f5 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 3b91d86742..e40ae628a8 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -1,16 +1,23 @@ from __future__ import annotations -from ttsim import ( +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import ( PiecewisePolynomialParamValue, RoundingSpec, piecewise_polynomial, policy_function, ) +if TYPE_CHECKING: + from types import ModuleType + @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", ) @@ -48,7 +55,6 @@ def einkommen_m( Reference: § 97a Abs. 2 S. 1 SGB VI """ - # Sum income over different income sources. return ( einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m @@ -63,17 +69,21 @@ def _anzurechnendes_einkommen_m( einkommen_m_ehe: float, rentenwert: float, parameter_anzurechnendes_einkommen: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """The isolated function for the relevant income for the Grundrentezuschlag.""" return rentenwert * piecewise_polynomial( x=einkommen_m_ehe / rentenwert, parameters=parameter_anzurechnendes_einkommen, + xnp=xnp, ) @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", ) @@ -83,6 +93,7 @@ def anzurechnendes_einkommen_m( sozialversicherung__rente__altersrente__rentenwert: float, anzurechnendes_einkommen_ohne_partner: PiecewisePolynomialParamValue, anzurechnendes_einkommen_mit_partner: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Income which is deducted from Grundrentenzuschlag. @@ -93,7 +104,6 @@ def anzurechnendes_einkommen_m( Reference: § 97a Abs. 4 S. 2, 4 SGB VI """ - # Calculate relevant income following the crediting rules using the values for # singles and those for married subjects # Note: Thresholds are defined relativ to rentenwert which is implemented by @@ -103,19 +113,23 @@ def anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, rentenwert=sozialversicherung__rente__altersrente__rentenwert, parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_mit_partner, + xnp=xnp, ) else: out = _anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, rentenwert=sozialversicherung__rente__altersrente__rentenwert, parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_ohne_partner, + xnp=xnp, ) return out @policy_function( rounding_spec=RoundingSpec( - base=0.01, direction="nearest", reference="§ 123 SGB VI Abs. 1" + base=0.01, + direction="nearest", + reference="§ 123 SGB VI Abs. 1", ), start_date="2021-01-01", ) @@ -132,7 +146,6 @@ def basisbetrag_m( The Zugangsfaktor is limited to 1 and considered Grundrentezeiten are limited to 35 years (420 months). """ - bewertungszeiten = min( bewertungszeiten_monate, berücksichtigte_wartezeit_monate["max"], @@ -152,7 +165,8 @@ def basisbetrag_m( @policy_function(start_date="2021-01-01") def mean_entgeltpunkte_pro_bewertungsmonat( - mean_entgeltpunkte: float, bewertungszeiten_monate: int + mean_entgeltpunkte: float, + bewertungszeiten_monate: int, ) -> float: """Average number of Entgeltpunkte earned per month of Grundrentenbewertungszeiten.""" if bewertungszeiten_monate > 0: diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py index 80ce0bc727..adf11aa4d4 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py @@ -2,19 +2,19 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input -@policy_input() +@policy_input(start_date="2021-01-01") def bewertungszeiten_monate() -> int: """Number of months determining amount of Grundrente.""" -@policy_input() +@policy_input(start_date="2021-01-01") def grundrentenzeiten_monate() -> int: """Number of months determining eligibility for Grundrente.""" -@policy_input() +@policy_input(start_date="2021-01-01") def mean_entgeltpunkte() -> float: """Mean Entgeltpunkte during Bewertungszeiten.""" diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py index 3370c3a264..f5069f2d37 100644 --- a/src/_gettsim/sozialversicherung/rente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() @@ -29,7 +29,8 @@ def entgeltpunkte_west() -> float: @policy_input() def ersatzzeiten_monate() -> float: """Total months during military, persecution/escape, internment, and consecutive - sickness.""" + sickness. + """ @policy_input() @@ -70,7 +71,8 @@ def monate_in_arbeitslosigkeit() -> float: @policy_input() def monate_in_arbeitsunfähigkeit() -> float: """Total months of sickness, rehabilitation, measures for worklife - participation(Teilhabe).""" + participation(Teilhabe). + """ @policy_input() @@ -91,7 +93,8 @@ def monate_in_schulausbildung() -> float: @policy_input() def monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit() -> float: """Total months of unemployment (only time of Entgeltersatzleistungen, not - ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld.""" + ALGII),i.e. Arbeitslosengeld, Unterhaltsgeld, Übergangsgeld. + """ @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/wartezeit.py b/src/_gettsim/sozialversicherung/rente/wartezeit.py index f4d95dd17c..2a277e54ce 100644 --- a/src/_gettsim/sozialversicherung/rente/wartezeit.py +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() diff --git a/src/_gettsim/unterhalt/inputs.py b/src/_gettsim/unterhalt/inputs.py index db0b65a2e7..6c6af23c56 100644 --- a/src/_gettsim/unterhalt/inputs.py +++ b/src/_gettsim/unterhalt/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/unterhalt/unterhalt.py b/src/_gettsim/unterhalt/unterhalt.py index e8eee90a6d..3a6facbda0 100644 --- a/src/_gettsim/unterhalt/unterhalt.py +++ b/src/_gettsim/unterhalt/unterhalt.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function() @@ -13,7 +13,8 @@ def kind_festgelegter_zahlbetrag_m( abzugsrate_kindergeld: dict[str, float], ) -> float: """Monthly actual child alimony payments to be received by the child after - deductions.""" + deductions. + """ if familie__kind: abzugsrate = abzugsrate_kindergeld["minderjährig"] else: diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 86553dfb42..f1d0f29d5d 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_p_id_function, @@ -15,13 +15,17 @@ ) if TYPE_CHECKING: - from ttsim import ConsecutiveInt1dLookupTableParamValue, RawParam - from ttsim.typing import TTSIMArray + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn + from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, RawParam @agg_by_p_id_function(agg_type=AggType.SUM) def an_elternteil_auszuzahlender_betrag_m( - betrag_m: float, kindergeld__p_id_empfänger: int, p_id: int + betrag_m: float, + kindergeld__p_id_empfänger: int, + p_id: int, ) -> float: pass @@ -29,7 +33,9 @@ def an_elternteil_auszuzahlender_betrag_m( @policy_function( start_date="2009-01-01", rounding_spec=RoundingSpec( - base=1, direction="up", reference="§ 9 Abs. 3 UhVorschG" + base=1, + direction="up", + reference="§ 9 Abs. 3 UhVorschG", ), ) def betrag_m( @@ -64,10 +70,11 @@ def betrag_m( @policy_function(vectorization_strategy="not_required") def elternteil_alleinerziehend( - kindergeld__p_id_empfänger: TTSIMArray, # int - p_id: TTSIMArray, # int - familie__alleinerziehend: TTSIMArray, # bool -) -> TTSIMArray: # bool + kindergeld__p_id_empfänger: IntColumn, + p_id: IntColumn, + familie__alleinerziehend: BoolColumn, + xnp: ModuleType, +) -> BoolColumn: """Check if parent that receives Kindergeld is a single parent. Only single parents receive Kindergeld. @@ -77,6 +84,7 @@ def elternteil_alleinerziehend( primary_key=p_id, target=familie__alleinerziehend, value_if_foreign_key_is_missing=False, + xnp=xnp, ) @@ -84,14 +92,16 @@ def elternteil_alleinerziehend( end_date="2008-12-31", leaf_name="betrag_m", rounding_spec=RoundingSpec( - base=1, direction="down", reference="§ 9 Abs. 3 UhVorschG" + base=1, + direction="down", + reference="§ 9 Abs. 3 UhVorschG", ), ) def not_implemented_m() -> float: raise NotImplementedError( """ Unterhaltsvorschuss is not implemented prior to 2009. - """ + """, ) @@ -263,17 +273,20 @@ def anspruchshöhe_m_ab_2017_07( @policy_function(start_date="2017-07-01", vectorization_strategy="not_required") def elternteil_mindesteinkommen_erreicht( - kindergeld__p_id_empfänger: TTSIMArray, # int - p_id: TTSIMArray, # int - mindesteinkommen_erreicht: TTSIMArray, # bool -) -> TTSIMArray: # bool + kindergeld__p_id_empfänger: IntColumn, + p_id: IntColumn, + mindesteinkommen_erreicht: BoolColumn, + xnp: ModuleType, +) -> BoolColumn: """Income of Unterhaltsvorschuss recipient above threshold (this variable is - defined on child level).""" + defined on child level). + """ return join( - kindergeld__p_id_empfänger, - p_id, - mindesteinkommen_erreicht, + foreign_key=kindergeld__p_id_empfänger, + primary_key=p_id, + target=mindesteinkommen_erreicht, value_if_foreign_key_is_missing=False, + xnp=xnp, ) @@ -310,13 +323,6 @@ def einkommen_m( ) -@agg_by_p_id_function(agg_type=AggType.SUM) -def unterhaltsvorschuss_spec_target( - unterhaltsvorschuss_source_field: bool, p_id_field: int, p_id: int -) -> int: - pass - - @param_function(start_date="2008-01-01", end_date="2017-06-30") def berechtigte_altersgruppen( raw_berechtigte_altersgruppen: RawParam, diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index c4bcd4b53b..bbeae1f513 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -2,19 +2,21 @@ from __future__ import annotations -from ttsim import AggType, agg_by_group_function, policy_function +from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function @agg_by_group_function(agg_type=AggType.ANY) def wohngeld_vorrang_wthh( - wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, wthh_id: int + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, + wthh_id: int, ) -> bool: pass @agg_by_group_function(agg_type=AggType.ANY) def wohngeld_kinderzuschlag_vorrang_wthh( - wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, wthh_id: int + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, + wthh_id: int, ) -> bool: pass @@ -58,7 +60,6 @@ def wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg( wohngeld__anspruchshöhe_m_bg: float, ) -> bool: """Check if housing and child benefit have priority.""" - return ( arbeitslosengeld_2__anzurechnendes_einkommen_m_bg + wohngeld__anspruchshöhe_m_bg diff --git a/src/_gettsim/wohnen/inputs.py b/src/_gettsim/wohnen/inputs.py index 7d7dde2326..d95a7b63eb 100644 --- a/src/_gettsim/wohnen/inputs.py +++ b/src/_gettsim/wohnen/inputs.py @@ -2,15 +2,15 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input -@policy_input() +@policy_input(end_date="2008-12-31") def baujahr_immobilie_hh() -> int: """Year of construction of the household dwelling.""" -@policy_input() +@policy_input(start_date="2005-01-01") def bewohnt_eigentum_hh() -> bool: """Owner-occupied housing.""" @@ -20,11 +20,11 @@ def bruttokaltmiete_m_hh() -> float: """Rent expenses excluding utilities.""" -@policy_input() +@policy_input(start_date="2005-01-01") def heizkosten_m_hh() -> float: """Heating expenses.""" -@policy_input() +@policy_input(start_date="2005-01-01") def wohnfläche_hh() -> float: """Size of household dwelling in square meters.""" diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 7162b3767f..bb6b5be7f7 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -2,7 +2,9 @@ from __future__ import annotations -from ttsim import ( +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import ( AggType, ConsecutiveInt1dLookupTableParamValue, PiecewisePolynomialParamValue, @@ -12,7 +14,9 @@ piecewise_polynomial, policy_function, ) -from ttsim.config import numpy_or_jax as np + +if TYPE_CHECKING: + from types import ModuleType @agg_by_p_id_function(agg_type=AggType.SUM) @@ -27,9 +31,10 @@ def alleinerziehendenbonus( @param_function() def min_einkommen_lookup_table( min_einkommen: dict[int, float], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Create a LookupTable for the min income thresholds.""" - return get_consecutive_int_1d_lookup_table_param_value(min_einkommen) + return get_consecutive_int_1d_lookup_table_param_value(raw=min_einkommen, xnp=xnp) def einkommen( @@ -37,6 +42,7 @@ def einkommen( einkommensfreibetrag: float, anzahl_personen: int, min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + xnp: ModuleType, ) -> float: """Calculate final income relevant for calculation of housing benefit on household level. @@ -44,13 +50,14 @@ def einkommen( """ eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommensfreibetrag unteres_eink = min_einkommen_lookup_table.values_to_look_up[ - np.minimum( - anzahl_personen, min_einkommen_lookup_table.values_to_look_up.shape[0] + xnp.minimum( + anzahl_personen, + min_einkommen_lookup_table.values_to_look_up.shape[0], ) - min_einkommen_lookup_table.base_to_subtract ] - return np.maximum(eink_nach_abzug_m_hh, unteres_eink) + return xnp.maximum(eink_nach_abzug_m_hh, unteres_eink) @policy_function() @@ -59,6 +66,7 @@ def einkommen_m_wthh( freibetrag_m_wthh: float, einkommen_vor_freibetrag_m_wthh: float, min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + xnp: ModuleType, ) -> float: """Income relevant for Wohngeld calculation. @@ -73,6 +81,7 @@ def einkommen_m_wthh( einkommensfreibetrag=freibetrag_m_wthh, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_wthh, min_einkommen_lookup_table=min_einkommen_lookup_table, + xnp=xnp, ) @@ -82,6 +91,7 @@ def einkommen_m_bg( freibetrag_m_bg: float, einkommen_vor_freibetrag_m_bg: float, min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + xnp: ModuleType, ) -> float: """Income relevant for Wohngeld calculation. @@ -96,6 +106,7 @@ def einkommen_m_bg( einkommensfreibetrag=freibetrag_m_bg, einkommen_vor_freibetrag=einkommen_vor_freibetrag_m_bg, min_einkommen_lookup_table=min_einkommen_lookup_table, + xnp=xnp, ) @@ -221,13 +232,14 @@ def freibetrag_m_bis_2015( alleinerziehendenbonus: int, freibetrag_bei_behinderung_gestaffelt_y: PiecewisePolynomialParamValue, freibetrag_kinder_m: dict[str, float], + xnp: ModuleType, ) -> float: """Calculate housing benefit subtractions for one individual until 2015.""" - freibetrag_bei_behinderung = ( piecewise_polynomial( x=behinderungsgrad, parameters=freibetrag_bei_behinderung_gestaffelt_y, + xnp=xnp, ) / 12 ) diff --git a/src/_gettsim/wohngeld/inputs.py b/src/_gettsim/wohngeld/inputs.py index 698773a164..8a1ac18353 100644 --- a/src/_gettsim/wohngeld/inputs.py +++ b/src/_gettsim/wohngeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index 5b8d59ceb8..f31f23d308 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -3,8 +3,9 @@ from __future__ import annotations from dataclasses import dataclass +from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( ConsecutiveInt1dLookupTableParamValue, ConsecutiveInt2dLookupTableParamValue, get_consecutive_int_1d_lookup_table_param_value, @@ -12,23 +13,30 @@ param_function, policy_function, ) -from ttsim.config import numpy_or_jax as np + +if TYPE_CHECKING: + from types import ModuleType + + from jaxtyping import Array, Float, Int @dataclass(frozen=True) class LookupTableBaujahr: - baujahre: np.ndarray - lookup_table: np.ndarray - lookup_base_to_subtract_cols: np.ndarray - lookup_base_to_subtract_rows: np.ndarray + baujahre: Int[Array, " n_baujahr_categories"] + lookup_base_to_subtract_cols: Int[Array, " n_baujahr_categories"] + lookup_base_to_subtract_rows: Int[Array, " n_baujahr_categories"] + lookup_table: Float[Array, "n_baujahr_categories max_n_p_indizierung_n_mietstufen"] @param_function( - start_date="1984-01-01", end_date="2008-12-31", leaf_name="max_miete_m_lookup" + start_date="1984-01-01", + end_date="2008-12-31", + leaf_name="max_miete_m_lookup", ) def max_miete_m_lookup_mit_baujahr( raw_max_miete_m_nach_baujahr: dict[int | str, dict[int, dict[int, float]]], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> LookupTableBaujahr: """Maximum rent considered in Wohngeld calculation.""" tmp = raw_max_miete_m_nach_baujahr.copy() @@ -47,17 +55,20 @@ def max_miete_m_lookup_mit_baujahr( + (n_p - max_n_p_defined) * per_additional_person[baujahr][ms] # type: ignore[operator] for ms in this_dict[max_n_p_defined] } - lookup_table = get_consecutive_int_2d_lookup_table_param_value(this_dict) + lookup_table = get_consecutive_int_2d_lookup_table_param_value( + raw=this_dict, + xnp=xnp, + ) values.append(lookup_table.values_to_look_up) subtract_cols.append(lookup_table.base_to_subtract_cols) subtract_rows.append(lookup_table.base_to_subtract_rows) - full_lookup_table = np.stack(values, axis=0) - full_lookup_base_to_subtract_cols = np.asarray(subtract_cols) - full_lookup_base_to_subtract_rows = np.asarray(subtract_rows) + full_lookup_table = xnp.stack(values, axis=0) + full_lookup_base_to_subtract_cols = xnp.asarray(subtract_cols) + full_lookup_base_to_subtract_rows = xnp.asarray(subtract_rows) return LookupTableBaujahr( - baujahre=np.asarray(baujahre), + baujahre=xnp.asarray(baujahre), lookup_table=full_lookup_table, lookup_base_to_subtract_cols=full_lookup_base_to_subtract_cols, lookup_base_to_subtract_rows=full_lookup_base_to_subtract_rows, @@ -68,6 +79,7 @@ def max_miete_m_lookup_mit_baujahr( def max_miete_m_lookup_ohne_baujahr( raw_max_miete_m: dict[int | str, dict[int, float]], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt2dLookupTableParamValue: """Maximum rent considered in Wohngeld calculation.""" expanded = raw_max_miete_m.copy() @@ -80,13 +92,14 @@ def max_miete_m_lookup_ohne_baujahr( + (n_p - max_n_p_defined) * per_additional_person[ms] # type: ignore[operator] for ms in expanded[max_n_p_defined] } - return get_consecutive_int_2d_lookup_table_param_value(expanded) + return get_consecutive_int_2d_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="1984-01-01") def min_miete_lookup( raw_min_miete_m: dict[int, float], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Minimum rent considered in Wohngeld calculation.""" max_n_p_normal = max_anzahl_personen["normale_berechnung"] @@ -100,13 +113,14 @@ def min_miete_lookup( expanded = raw_min_miete_m.copy() for n_p in range(max_n_p_normal + 1, max_anzahl_personen["indizierung"] + 1): expanded[n_p] = raw_min_miete_m[max_n_p_normal] - return get_consecutive_int_1d_lookup_table_param_value(expanded) + return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2021-01-01") def heizkostenentlastung_m_lookup( raw_heizkostenentlastung_m: dict[int | str, float], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Heizkostenentlastung as a lookup table.""" expanded = raw_heizkostenentlastung_m.copy() @@ -117,13 +131,14 @@ def heizkostenentlastung_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(expanded) + return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2023-01-01") def dauerhafte_heizkostenkomponente_m_lookup( raw_dauerhafte_heizkostenkomponente_m: dict[int | str, float], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Dauerhafte Heizkostenenkomponente as a lookup table.""" expanded = raw_dauerhafte_heizkostenkomponente_m.copy() @@ -134,13 +149,14 @@ def dauerhafte_heizkostenkomponente_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(expanded) + return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2023-01-01") def klimakomponente_m_lookup( raw_klimakomponente_m: dict[int | str, float], max_anzahl_personen: dict[str, int], + xnp: ModuleType, ) -> ConsecutiveInt1dLookupTableParamValue: """Klimakomponente as a lookup table.""" expanded = raw_klimakomponente_m.copy() @@ -151,7 +167,7 @@ def klimakomponente_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(expanded) + return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) @policy_function() @@ -185,7 +201,8 @@ def miete_m_bg( @policy_function() def min_miete_m_hh( - anzahl_personen_hh: int, min_miete_lookup: ConsecutiveInt1dLookupTableParamValue + anzahl_personen_hh: int, + min_miete_lookup: ConsecutiveInt1dLookupTableParamValue, ) -> float: """Minimum rent considered in Wohngeld calculation.""" return min_miete_lookup.values_to_look_up[ @@ -205,10 +222,10 @@ def miete_m_hh_mit_baujahr( wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, max_miete_m_lookup: LookupTableBaujahr, + xnp: ModuleType, ) -> float: """Rent considered in housing benefit calculation on household level until 2008.""" - - selected_bin_index = np.searchsorted( + selected_bin_index = xnp.searchsorted( max_miete_m_lookup.baujahre, wohnen__baujahr_immobilie_hh, side="left", @@ -234,7 +251,6 @@ def miete_m_hh_ohne_baujahr_ohne_heizkostenentlastung( max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.values_to_look_up[ anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, mietstufe - max_miete_m_lookup.base_to_subtract_cols, diff --git a/src/_gettsim/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py index be82c800d9..8724d293d9 100644 --- a/src/_gettsim/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function( @@ -23,7 +23,8 @@ def grundsätzlich_anspruchsberechtigt_wthh_ohne_vermögensprüfung( @policy_function( - start_date="2009-01-01", leaf_name="grundsätzlich_anspruchsberechtigt_wthh" + start_date="2009-01-01", + leaf_name="grundsätzlich_anspruchsberechtigt_wthh", ) def grundsätzlich_anspruchsberechtigt_wthh_mit_vermögensprüfung( mindesteinkommen_erreicht_wthh: bool, @@ -56,7 +57,8 @@ def grundsätzlich_anspruchsberechtigt_bg_ohne_vermögensprüfung( @policy_function( - start_date="2009-01-01", leaf_name="grundsätzlich_anspruchsberechtigt_bg" + start_date="2009-01-01", + leaf_name="grundsätzlich_anspruchsberechtigt_bg", ) def grundsätzlich_anspruchsberechtigt_bg_mit_vermögensprüfung( mindesteinkommen_erreicht_bg: bool, @@ -92,7 +94,6 @@ def vermögensgrenze_unterschritten_bg( parameter_vermögensfreibetrag: dict[str, float], ) -> bool: """Wealth is below the eligibility threshold for housing benefits.""" - vermögensfreibetrag = parameter_vermögensfreibetrag[ "grundfreibetrag" ] + parameter_vermögensfreibetrag["je_weitere_person"] * ( @@ -160,7 +161,6 @@ def einkommen_für_mindesteinkommen_m( Kindergeld count as income for this check. """ - return ( arbeitslosengeld_2__nettoeinkommen_vor_abzug_freibetrag_m + unterhalt__tatsächlich_erhaltener_betrag_m diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 2e3f0375f1..f99e7c19f5 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -21,7 +21,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, RoundingSpec, agg_by_group_function, @@ -29,9 +29,10 @@ param_function, policy_function, ) -from ttsim.config import numpy_or_jax as np if TYPE_CHECKING: + from types import ModuleType + from _gettsim.param_types import ConsecutiveInt1dLookupTableParamValue @@ -84,6 +85,7 @@ def basisformel( einkommen_m: float, miete_m: float, params: BasisformelParamValues, + xnp: ModuleType, ) -> float: """Basic formula for housing benefit calculation. @@ -99,12 +101,12 @@ def basisformel( anzahl_personen - params.zusatzbetrag_nach_haushaltsgröße.base_to_subtract ] ) - out = np.maximum( + out = xnp.maximum( 0.0, params.skalierungsfaktor * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), ) - return np.minimum(miete_m, out + zusatzbetrag_nach_haushaltsgröße) + return xnp.minimum(miete_m, out + zusatzbetrag_nach_haushaltsgröße) @policy_function( @@ -120,6 +122,7 @@ def anspruchshöhe_m_wthh( miete_m_wthh: float, grundsätzlich_anspruchsberechtigt_wthh: bool, basisformel_params: BasisformelParamValues, + xnp: ModuleType, ) -> float: """Housing benefit after wealth and income check. @@ -134,6 +137,7 @@ def anspruchshöhe_m_wthh( einkommen_m=einkommen_m_wthh, miete_m=miete_m_wthh, params=basisformel_params, + xnp=xnp, ) else: out = 0.0 @@ -154,6 +158,7 @@ def anspruchshöhe_m_bg( miete_m_bg: float, grundsätzlich_anspruchsberechtigt_bg: bool, basisformel_params: BasisformelParamValues, + xnp: ModuleType, ) -> float: """Housing benefit after wealth and income check. @@ -166,6 +171,7 @@ def anspruchshöhe_m_bg( einkommen_m=einkommen_m_bg, miete_m=miete_m_bg, params=basisformel_params, + xnp=xnp, ) else: out = 0.0 @@ -179,6 +185,7 @@ def basisformel_params( koeffizienten_berechnungsformel: dict[int, dict[str, float]], max_anzahl_personen: dict[str, int], zusatzbetrag_pro_person_in_großen_haushalten: float, + xnp: ModuleType, ) -> BasisformelParamValues: """Convert the parameters of the Wohngeld basis formula to a format that can be used by Numpy and Jax. @@ -204,10 +211,11 @@ def basisformel_params( return BasisformelParamValues( skalierungsfaktor=skalierungsfaktor, - a=get_consecutive_int_1d_lookup_table_param_value(a), - b=get_consecutive_int_1d_lookup_table_param_value(b), - c=get_consecutive_int_1d_lookup_table_param_value(c), + a=get_consecutive_int_1d_lookup_table_param_value(raw=a, xnp=xnp), + b=get_consecutive_int_1d_lookup_table_param_value(raw=b, xnp=xnp), + c=get_consecutive_int_1d_lookup_table_param_value(raw=c, xnp=xnp), zusatzbetrag_nach_haushaltsgröße=get_consecutive_int_1d_lookup_table_param_value( - zusatzbetrag_nach_haushaltsgröße + raw=zusatzbetrag_nach_haushaltsgröße, + xnp=xnp, ), ) diff --git a/src/_gettsim_tests/test_docs.py b/src/_gettsim_tests/test_docs.py deleted file mode 100644 index 93a1ab84fc..0000000000 --- a/src/_gettsim_tests/test_docs.py +++ /dev/null @@ -1,159 +0,0 @@ -from __future__ import annotations - -import datetime -import inspect - -import pytest - -from _gettsim.config import GETTSIM_ROOT -from ttsim import PolicyInput -from ttsim.loader import orig_tree_with_column_objects_and_param_functions -from ttsim.policy_environment import active_tree_with_column_objects_and_param_functions -from ttsim.shared import remove_group_suffix - - -def _nice_output_list_of_strings(list_of_strings): - my_str = "\n".join(sorted(list_of_strings)) - return f"\n\n{my_str}\n\n" - - -@pytest.fixture(scope="module") -def default_input_variables(): - return sorted(f for f in todo_functions_tree if isinstance(f, PolicyInput)) - - -@pytest.fixture(scope="module") -def all_function_names(): - functions = _load_internal_functions() - return sorted([func.leaf_name for func in functions]) - - -@pytest.fixture(scope="module") -def time_indep_function_names(all_function_names): - time_dependent_functions = {} - _orig_tree_with_column_objects_and_param_functions = ( - orig_tree_with_column_objects_and_param_functions(root=GETTSIM_ROOT) - ) - for year in range(1990, 2023): - year_functions = active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, - date=datetime.date(year=year, month=1, day=1), - ) - new_dict = {func.function.__name__: func.leaf_name for func in year_functions} - time_dependent_functions = {**time_dependent_functions, **new_dict} - - # Only use time dependent function names - time_indep_function_names = [ - (time_dependent_functions.get(c, c)) for c in sorted(all_function_names) - ] - - # Remove duplicates - time_indep_function_names = list(dict.fromkeys(time_indep_function_names)) - return time_indep_function_names - - -@pytest.mark.xfail( - reason="Uses an internal function to load functions," - " which does not include derived functions." -) -def test_all_input_vars_documented( - default_input_variables, - time_indep_function_names, - all_function_names, -): - """Test if arguments of all non-internal functions are either the name of another - function, a documented input variable, or a parameter dictionary.""" - functions = _load_internal_functions() - - # Collect arguments of all non-internal functions (do not start with underscore) - arguments = [ - i - for f in functions - for i in list(inspect.signature(f).parameters) - if not f.leaf_name.startswith("_") - ] - - # Remove duplicates - arguments = list(dict.fromkeys(arguments)) - defined_functions = ( - time_indep_function_names + all_function_names + default_input_variables - ) - check = [ - c - for c in arguments - if (c not in defined_functions) - and ( - remove_group_suffix(c, groupings=grouping_levels(policy_environment)) - not in defined_functions - ) - and (not c.endswith("_params")) - ] - - assert not check, _nice_output_list_of_strings(check) - - -@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") -def test_funcs_in_doc_module_and_func_from_internal_files_are_the_same(): - documented_functions = { - f.leaf_name - for f in _load_functions( - GETTSIM_ROOT / "functions" / "all_functions_for_docs.py", - package_root=GETTSIM_ROOT, - include_imported_functions=True, - ) - } - - internal_function_files = [GETTSIM_ROOT.joinpath(p) for p in GETTSIM_ROOT] - - internal_functions = { - f.leaf_name - for f in _load_functions( - internal_function_files, - package_root=GETTSIM_ROOT, - include_imported_functions=True, - ) - if not f.original_function_name.startswith("_") - } - - assert documented_functions == internal_functions - - -@pytest.mark.xfail(reason="Not able to load functions regardless of date any more.") -def test_type_hints(): # noqa: PLR0912 - """Check if output and input types of all functions coincide.""" - types = {} - - for func in _load_internal_functions(): - if func.vectorization_strategy == "not_required": - continue - - name = func.leaf_name - - for var, internal_type in func.__annotations__.items(): - if var == "return": - if name in types: - if types[name] != internal_type: - raise ValueError( - f"The return type hint of {func.original_function_name}, " - f"does not coincide with the input type hint of " - f"another function." - ) - else: - types[name] = internal_type - else: - if var in TYPES_INPUT_VARIABLES: - if internal_type != TYPES_INPUT_VARIABLES[var]: - raise ValueError( - f"The input type hint of {var} in function " - f"{func.original_function_name} does not coincide with the " - f"standard data types provided in the config file." - ) - elif var in types: - if types[var] != internal_type: - raise ValueError( - f"The type hint of {var} in {func.original_function_name} " - f"does not coincide with the input type hint " - f"of another function." - ) - else: - types[var] = internal_type diff --git a/src/_gettsim_tests/test_interface.py b/src/_gettsim_tests/test_interface.py index 28c7575e4a..e39d23ee38 100644 --- a/src/_gettsim_tests/test_interface.py +++ b/src/_gettsim_tests/test_interface.py @@ -17,7 +17,7 @@ def example_inputs_df(): "recipient_child_benefits_id": [-1, 0, 0], "is_single_parent": [True, False, False], "has_children": [True, False, False], - } + }, ) @@ -87,23 +87,15 @@ def example_inputs_tree_to_inputs_df_columns(): "kranken": { "beitrag": { "privat_versichert": False, - } + }, }, }, "wohnort_ost": False, } -_EXAMPLE_TARGETS_TREE_TO_DF_COLUMNS = { - "einkommensteuer": { - "betrag_y_sn": "income_tax", # policy target - "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", # param target - }, -} - - @pytest.mark.parametrize( - "targets_tree_to_outputs_df_columns", + "targets__tree", [ # Param target and policy target { @@ -127,7 +119,7 @@ def example_inputs_tree_to_inputs_df_columns(): ], ) def test_oss_with_gettsim_policy_env( - targets_tree_to_outputs_df_columns, + targets__tree, example_inputs_df, example_inputs_tree_to_inputs_df_columns, ): @@ -135,11 +127,9 @@ def test_oss_with_gettsim_policy_env( date="2024-01-01", inputs_df=example_inputs_df, inputs_tree_to_inputs_df_columns=example_inputs_tree_to_inputs_df_columns, - targets_tree_to_outputs_df_columns=targets_tree_to_outputs_df_columns, + targets__tree=targets__tree, ) - expected_columns: list[tuple[str]] = optree.tree_flatten( - targets_tree_to_outputs_df_columns - )[0] + expected_columns: list[tuple[str]] = optree.tree_flatten(targets__tree)[0] assert results.shape == ( example_inputs_df.shape[0], len(expected_columns), diff --git a/src/_gettsim_tests/test_plot_dag.py b/src/_gettsim_tests/test_plot_dag.py new file mode 100644 index 0000000000..e28874a815 --- /dev/null +++ b/src/_gettsim_tests/test_plot_dag.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +from pathlib import Path + +from ttsim.plot_dag import plot_tt_dag + +GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" + + +def test_gettsim_policy_environment_dag_with_params(): + plot_tt_dag( + date_str="2025-01-01", + root=GETTSIM_ROOT, + include_params=True, + title="GETTSIM Policy Environment DAG with parameters", + show_node_description=True, + ) + + +def test_gettsim_policy_environment_dag_without_params(): + plot_tt_dag( + date_str="2025-01-01", + root=GETTSIM_ROOT, + include_params=False, + title="GETTSIM Policy Environment DAG without parameters", + show_node_description=True, + ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index b680370f8f..d9b34f684e 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -1,20 +1,71 @@ from __future__ import annotations +from datetime import timedelta from pathlib import Path +from typing import TYPE_CHECKING, Literal +import dags.tree as dt +import numpy import pytest -from _gettsim.config import GETTSIM_ROOT -from ttsim.config import IS_JAX_INSTALLED +from ttsim import main from ttsim.testing_utils import ( PolicyTest, + check_env_completeness, execute_test, load_policy_test_data, ) +if TYPE_CHECKING: + import datetime + + from ttsim.interface_dag_elements.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + ) + +GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" TEST_DIR = Path(__file__).parent -POLICY_TEST_IDS_AND_CASES = load_policy_test_data(test_dir=TEST_DIR, policy_name="") +POLICY_TEST_IDS_AND_CASES = load_policy_test_data( + test_dir=TEST_DIR, + policy_name="", + xnp=numpy, +) + + +def get_orig_gettsim_objects() -> dict[ + str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs +]: + return main( + orig_policy_objects={"root": GETTSIM_ROOT}, + output_names=[ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ], + ) + + +def dates_in_orig_gettsim_objects() -> list[datetime.date]: + orig_objects = get_orig_gettsim_objects() + start_dates = { + v.start_date + for v in orig_objects[ + "orig_policy_objects__column_objects_and_param_functions" + ].values() + } + end_dates = { + v.end_date + timedelta(days=1) + for v in orig_objects[ + "orig_policy_objects__column_objects_and_param_functions" + ].values() + } + return sorted(start_dates | end_dates) + + +@pytest.fixture +def orig_gettsim_objects(): + return get_orig_gettsim_objects() @pytest.mark.parametrize( @@ -22,8 +73,64 @@ POLICY_TEST_IDS_AND_CASES.values(), ids=POLICY_TEST_IDS_AND_CASES.keys(), ) -def test_policy(test: PolicyTest): - if IS_JAX_INSTALLED: - execute_test(test, root=GETTSIM_ROOT, jit=True) - else: - execute_test(test, root=GETTSIM_ROOT, jit=False) +def test_policy(test: PolicyTest, backend: Literal["numpy", "jax"]): + execute_test(test=test, root=GETTSIM_ROOT, backend=backend) + + +@pytest.mark.parametrize( + "date", + dates_in_orig_gettsim_objects(), + ids=lambda x: x.isoformat(), +) +def test_gettsim_policy_environment_is_complete(orig_gettsim_objects, date): + """Test that GETTSIM's policy environment contains all root nodes of its DAG.""" + if date.year < 2015: + pytest.skip( + "Policy environment for dates before 2015 are not complete. See issue #962." + ) + + check_env_completeness( + name="GETTSIM", + date=date, + orig_policy_objects=orig_gettsim_objects, + ) + + +@pytest.mark.parametrize( + "date", + dates_in_orig_gettsim_objects(), + ids=lambda x: x.isoformat(), +) +def test_top_level_elements_not_repeated_in_paths( + date, backend: Literal["numpy", "jax"] +): + try: + gettsim_objects = main( + inputs={ + "orig_policy_objects__root": GETTSIM_ROOT, + "backend": backend, + "date_str": date.isoformat(), + "rounding": False, + }, + output_names=[ + "specialized_environment__with_partialled_params_and_scalars", + "labels__top_level_namespace", + ], + ) + except Exception: # noqa: BLE001 + msg = ( + "Skipped because environment cannot be created for date " + f"{date.isoformat()}." + ) + pytest.skip(msg) + + dt.fail_if_top_level_elements_repeated_in_paths( + all_tree_paths=dt.flatten_to_tree_paths( + dt.unflatten_from_qnames( + gettsim_objects[ + "specialized_environment__with_partialled_params_and_scalars" + ] + ) + ), + top_level_namespace=gettsim_objects["labels__top_level_namespace"], + ) diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py new file mode 100644 index 0000000000..24e5d9929c --- /dev/null +++ b/src/_gettsim_tests/test_templates.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from pathlib import Path + +import dags.tree as dt + +from ttsim import main +from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS +from ttsim.interface_dag_elements.shared import ( + get_re_pattern_for_all_time_units_and_groupings, +) + +GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" + + +def test_template_all_outputs_no_inputs(backend): + res = main( + orig_policy_objects={"root": GETTSIM_ROOT}, + rounding=True, + date_str="2025-01-01", + backend=backend, + output_names=["labels__grouping_levels", "templates__input_data_dtypes"], + ) + + paths_with_unspecified_dtypes = [] + flat_res = dt.flatten_to_tree_paths(res["templates__input_data_dtypes"]) + for p, dtype in flat_res.items(): + if "|" in dtype: + paths_with_unspecified_dtypes.append(p) + if paths_with_unspecified_dtypes: + formatted = "\n".join([str(p) for p in paths_with_unspecified_dtypes]) + msg = ( + "The following paths have a generic union type (indicated by '|' in dtype):" + f"\n{formatted}" + "\n\n" + "To fix this, make sure you specified all input variables as PolicyInput " + "with the correct type hints." + ) + raise AssertionError(msg) + + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + time_units=list(TIME_UNIT_LABELS), + grouping_levels=res["labels__grouping_levels"], + ) + bn_to_variations = {} + for qname in dt.qnames(res["templates__input_data_dtypes"]): + match = pattern_all.fullmatch(qname) + # We must not find multiple time units for the same base name and group. + base_name = match.group("base_name") + if base_name not in bn_to_variations: + bn_to_variations[base_name] = [qname] + else: + bn_to_variations[base_name].append(qname) + dups = {bn: v for bn, v in bn_to_variations.items() if len(v) > 1} + if dups: + formatted = "" + for base_name, variations in dups.items(): + formatted += f"\n{base_name}:\n " + formatted += "\n ".join(variations) + formatted += "\n" + raise AssertionError(f"More than one variation for base names:\n{formatted}") diff --git a/src/_gettsim_tests/test_warn_if_repeated_execution.py b/src/_gettsim_tests/test_warn_if_repeated_execution.py deleted file mode 100644 index 014a1ae0a2..0000000000 --- a/src/_gettsim_tests/test_warn_if_repeated_execution.py +++ /dev/null @@ -1,12 +0,0 @@ -from __future__ import annotations - -import pytest - - -def test_warn_when_internal_tests_are_executed_repeatedly(): - from gettsim import test - - test("--collect-only") - - with pytest.warns(UserWarning, match="Repeated execution of the test suite"): - test("--collect-only") diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 207c891ff1..7ff33ea070 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -11,47 +11,18 @@ __version__ = "unknown" -import itertools -import warnings -from typing import Any +from typing import Literal import pytest from _gettsim_tests import TEST_DIR -from ttsim import ( - FunctionsAndDataColumnsOverlapWarning, - GroupCreationFunction, - PolicyFunction, - group_creation_function, - plot_dag, - policy_environment, - policy_function, -) -COUNTER_TEST_EXECUTIONS = itertools.count() - -def test(*args: Any) -> None: - n_test_executions = next(COUNTER_TEST_EXECUTIONS) - - if n_test_executions == 0: - pytest.main([str(TEST_DIR), "--noconftest", *args]) - else: - warnings.warn( - "Repeated execution of the test suite is not possible. Start a new Python " - "session or restart the kernel in a Jupyter/IPython notebook to re-run the " - "tests.", - stacklevel=2, - ) +def test(backend: Literal["numpy", "jax"] = "numpy") -> None: + pytest.main([str(TEST_DIR), "--backend", backend]) __all__ = [ - "FunctionsAndDataColumnsOverlapWarning", - "GroupCreationFunction", - "PolicyFunction", "__version__", - "group_creation_function", - "plot_dag", - "policy_environment", - "policy_function", + "test", ] diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 931a468261..6e6997afb4 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,376 +1,11 @@ -# ruff: noqa -# type: ignore from __future__ import annotations -from typing import Any - -import dags -import networkx as nx -import numpy as np - -from ttsim.aggregation import AggType -from ttsim.automatically_added_functions import create_time_conversion_functions -from ttsim.column_objects_param_function import ( - AggByGroupFunction, - AggByPIDFunction, - FKType, - GroupCreationFunction, - ParamFunction, - PolicyFunction, - PolicyInput, - TimeConversionFunction, - agg_by_group_function, - agg_by_p_id_function, - group_creation_function, - param_function, - policy_function, - policy_input, -) -from ttsim.compute_taxes_and_transfers import ( - _add_derived_functions, - column_functions_with_processed_params_and_scalars, - column_results, - flat_policy_environment_with_derived_functions_and_without_overridden_functions, - nested_results, - qual_name_column_targets, - qual_name_data, - qual_name_data_columns, - qual_name_input_data, - qual_name_own_targets, - qual_name_param_targets, - qual_name_results, - qual_name_targets, - required_column_functions, - tax_transfer_dag, - tax_transfer_function, - top_level_namespace, -) -from ttsim.convert_nested_data import ( - results_df, - data_tree, - dataframe_to_nested_data, - nested_data_to_df_with_mapped_columns, -) -from ttsim.failures_and_warnings import ( - FunctionsAndDataColumnsOverlapWarning, - fail_if_active_periods_overlap, - fail_if_environment_is_invalid, - fail_if_group_ids_are_outside_top_level_namespace, - fail_if_any_paths_are_invalid, - fail_if_data_tree_is_invalid, - fail_if_foreign_keys_are_invalid_in_data, - fail_if_group_variables_are_not_constant_within_groups, - fail_if_root_nodes_are_missing, - fail_if_targets_are_not_in_policy_environment_or_data, - fail_if_targets_tree_is_invalid, - warn_if_functions_and_data_columns_overlap, - format_list_linewise, -) -from ttsim.param_objects import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt1dLookupTableParamValue, - ConsecutiveInt2dLookupTableParamValue, - DictParam, - ParamObject, - PiecewisePolynomialParam, - PiecewisePolynomialParamValue, - RawParam, - ScalarParam, -) -from ttsim.piecewise_polynomial import ( - get_piecewise_parameters, - piecewise_polynomial, -) -from ttsim.plot_dag import plot_dag -from ttsim.loader import ( - orig_tree_with_column_objects_and_param_functions, - orig_tree_with_params, -) -from ttsim.policy_environment import ( - active_tree_with_column_objects_and_param_functions, - active_tree_with_params, - get_consecutive_int_1d_lookup_table_param_value, - get_consecutive_int_2d_lookup_table_param_value, - get_month_based_phase_inout_of_age_thresholds_param_value, - get_year_based_phase_inout_of_age_thresholds_param_value, - grouping_levels, - policy_environment, -) -from ttsim.rounding import RoundingSpec -from ttsim.shared import ( - insert_path_and_value, - join, - merge_trees, - to_datetime, - upsert_path_and_value, - upsert_tree, -) - - -def function_collection(): - return { - "active_tree_with_column_objects_and_param_functions": active_tree_with_column_objects_and_param_functions, - "active_tree_with_params": active_tree_with_params, - "column_functions_with_processed_params_and_scalars": column_functions_with_processed_params_and_scalars, - "column_results": column_results, - "fail_if_active_periods_overlap": fail_if_active_periods_overlap, - "fail_if_any_paths_are_invalid": fail_if_any_paths_are_invalid, - "fail_if_data_tree_is_invalid": fail_if_data_tree_is_invalid, - "fail_if_environment_is_invalid": fail_if_environment_is_invalid, - "fail_if_foreign_keys_are_invalid_in_data": fail_if_foreign_keys_are_invalid_in_data, - "fail_if_group_ids_are_outside_top_level_namespace": fail_if_group_ids_are_outside_top_level_namespace, - "fail_if_group_variables_are_not_constant_within_groups": fail_if_group_variables_are_not_constant_within_groups, - "fail_if_root_nodes_are_missing": fail_if_root_nodes_are_missing, - "fail_if_targets_are_not_in_policy_environment_or_data": fail_if_targets_are_not_in_policy_environment_or_data, - "fail_if_targets_tree_is_invalid": fail_if_targets_tree_is_invalid, - "flat_policy_environment_with_derived_functions_and_without_overridden_functions": flat_policy_environment_with_derived_functions_and_without_overridden_functions, - "grouping_levels": grouping_levels, - "data_tree": data_tree, - "nested_results": nested_results, - "orig_tree_with_column_objects_and_param_functions": orig_tree_with_column_objects_and_param_functions, - "orig_tree_with_params": orig_tree_with_params, - "policy_environment": policy_environment, - "qual_name_column_targets": qual_name_column_targets, - "qual_name_data": qual_name_data, - "qual_name_data_columns": qual_name_data_columns, - "qual_name_input_data": qual_name_input_data, - "qual_name_own_targets": qual_name_own_targets, - "qual_name_param_targets": qual_name_param_targets, - "qual_name_results": qual_name_results, - "qual_name_targets": qual_name_targets, - "results_df": results_df, - "required_column_functions": required_column_functions, - "tax_transfer_dag": tax_transfer_dag, - "tax_transfer_function": tax_transfer_function, - "top_level_namespace": top_level_namespace, - "warn_if_functions_and_data_columns_overlap": warn_if_functions_and_data_columns_overlap, - } - - -def main(inputs: dict[str, Any], targets: list[str] | None = None) -> dict[str, Any]: - """ - Main function that processes the inputs and returns the outputs. - """ - possible_targets = function_collection() - for key in inputs: - if key in function_collection(): - del possible_targets[key] - - # Collect all missing targets first - missing_targets = [] - for t in targets: - if t not in possible_targets: - missing_targets.append(t) - - # Raise error with all missing targets listed nicely - if missing_targets: - if len(missing_targets) == 1: - raise ValueError(f"Target '{missing_targets[0]}' does not exist.") - else: - targets_str = format_list_linewise(missing_targets) - raise ValueError(f"Targets '{targets_str}' do not exist.") - - dag = dags.create_dag( - functions=possible_targets, - targets=targets, - ) - draw_dag(dag) - f = dags.concatenate_functions( - dag=dag, - functions=possible_targets, - targets=targets, - return_type="dict", - enforce_signature=False, - set_annotations=False, - ) - return f(**inputs) - - -def draw_dag( - dag: nx.DiGraph, - output_path: str = "tax_transfer_dag.html", -) -> None: - """Draw the DAG and save it as an interactive HTML file. - - Parameters - ---------- - dag - The DAG to draw. - output_path - The path where to save the HTML file. - """ - import plotly.graph_objects as go - - # Use Graphviz's dot layout for proper DAG visualization - try: - # Try to use pygraphviz for better DAG layout - pos = nx.nx_agraph.pygraphviz_layout(dag, prog="dot", args="-Grankdir=LR") - except (ImportError, FileNotFoundError): - # Fallback to spring layout if pygraphviz is not available - print("Warning: pygraphviz not available, using spring layout") - pos = nx.spring_layout(dag, k=2, iterations=50) - # Rotate to make it left-to-right - pos = {node: (y, -x) for node, (x, y) in pos.items()} - - # Create edge traces with arrows - edge_traces = [] - annotations = [] - - for edge in dag.edges(): - x0, y0 = pos[edge[0]] - x1, y1 = pos[edge[1]] - - # Calculate the direction vector - dx = x1 - x0 - dy = y1 - y0 - length = np.sqrt(dx**2 + dy**2) - - if length > 0: - # Normalize the direction vector - dx = dx / length - dy = dy / length - - # Calculate start and end points with symmetric offsets - offset = 50 # Offset in pygraphviz coordinate units - x0 = x0 + dx * offset - y0 = y0 + dy * offset - x1 = x1 - dx * offset - y1 = y1 - dy * offset - - # Create the edge line - edge_trace = go.Scatter( - x=[x0, x1], - y=[y0, y1], - line=dict(width=1.5, color="#888"), - hoverinfo="none", - mode="lines", - ) - edge_traces.append(edge_trace) - - # Add arrow using Plotly annotation - annotations.append( - dict( - x=x1, - y=y1, - ax=x0, - ay=y0, - xref="x", - yref="y", - axref="x", - ayref="y", - arrowhead=2, - arrowsize=1.25, - arrowwidth=2, - arrowcolor="#888", - showarrow=True, - text="", - ) - ) - - # Create node trace - node_x = [] - node_y = [] - node_text = [] - node_colors = [] - - for node in dag.nodes(): - x, y = pos[node] - node_x.append(x) - node_y.append(y) - node_text.append(node) - - # Color nodes that start with "fail_" in pale red - if node.startswith("fail_"): - node_colors.append("#ffb3b3") # Pale red - else: - node_colors.append("#1f77b4") # Blue - - node_trace = go.Scatter( - x=node_x, - y=node_y, - mode="markers", - hoverinfo="text", - text=node_text, - marker=dict( - showscale=False, - color=node_colors, - size=25, - line=dict(width=2, color="white"), - ), - ) - - # Create the figure with specified canvas size (600x900) - fig = go.Figure( - data=edge_traces + [node_trace], - layout=go.Layout( - title="DAG Visualization", - titlefont_size=16, - showlegend=False, - hovermode="closest", - margin=dict(b=40, l=40, r=40, t=60), - width=1800, - height=1200, - annotations=annotations, - xaxis=dict( - showgrid=False, - zeroline=False, - showticklabels=False, - ), - yaxis=dict( - showgrid=False, - zeroline=False, - showticklabels=False, - ), - ), - ) - - # Save as HTML - fig.write_html(output_path) - +from ttsim.argument_templates import input_data +from ttsim.interface_dag import main +from ttsim.interface_dag_elements.shared import merge_trees __all__ = [ - "AggByGroupFunction", - "AggByPIDFunction", - "AggType", - "ConsecutiveInt1dLookupTableParam", - "ConsecutiveInt1dLookupTableParamValue", - "ConsecutiveInt2dLookupTableParamValue", - "DictParam", - "FKType", - "FunctionsAndDataColumnsOverlapWarning", - "GroupCreationFunction", - "ParamFunction", - "ParamObject", - "PiecewisePolynomialParam", - "PiecewisePolynomialParamValue", - "PolicyFunction", - "PolicyInput", - "RawParam", - "RoundingSpec", - "ScalarParam", - "TimeConversionFunction", - "_add_derived_functions", - "agg_by_group_function", - "agg_by_p_id_function", - "create_time_conversion_functions", - "dataframe_to_nested_data", - "get_consecutive_int_1d_lookup_table_param_value", - "get_consecutive_int_2d_lookup_table_param_value", - "get_month_based_phase_inout_of_age_thresholds_param_value", - "get_piecewise_parameters", - "get_year_based_phase_inout_of_age_thresholds_param_value", - "group_creation_function", - "insert_path_and_value", - "join", + "input_data", + "main", "merge_trees", - "nested_data_to_df_with_mapped_columns", - "param_function", - "piecewise_polynomial", - "plot_dag", - "policy_environment", - "policy_function", - "policy_input", - "to_datetime", - "upsert_path_and_value", - "upsert_tree", ] diff --git a/src/ttsim/aggregation.py b/src/ttsim/aggregation.py deleted file mode 100644 index 6d4a2bafb9..0000000000 --- a/src/ttsim/aggregation.py +++ /dev/null @@ -1,40 +0,0 @@ -from __future__ import annotations - -from enum import StrEnum - -from ttsim import aggregation_jax, aggregation_numpy -from ttsim.config import IS_JAX_INSTALLED - - -class AggType(StrEnum): - """ - Enum for aggregation types. - """ - - COUNT = "count" - SUM = "sum" - MEAN = "mean" - MAX = "max" - MIN = "min" - ANY = "any" - ALL = "all" - - -aggregation_module = aggregation_jax if IS_JAX_INSTALLED else aggregation_numpy - -# The signature of the functions must be the same in both modules, except that all JAX -# functions have the additional `num_segments` argument. -grouped_count = aggregation_module.grouped_count -grouped_sum = aggregation_module.grouped_sum -grouped_mean = aggregation_module.grouped_mean -grouped_max = aggregation_module.grouped_max -grouped_min = aggregation_module.grouped_min -grouped_any = aggregation_module.grouped_any -grouped_all = aggregation_module.grouped_all -count_by_p_id = aggregation_module.count_by_p_id -sum_by_p_id = aggregation_module.sum_by_p_id -mean_by_p_id = aggregation_module.mean_by_p_id -max_by_p_id = aggregation_module.max_by_p_id -min_by_p_id = aggregation_module.min_by_p_id -any_by_p_id = aggregation_module.any_by_p_id -all_by_p_id = aggregation_module.all_by_p_id diff --git a/src/ttsim/aggregation_jax.py b/src/ttsim/aggregation_jax.py deleted file mode 100644 index d2b79d0945..0000000000 --- a/src/ttsim/aggregation_jax.py +++ /dev/null @@ -1,167 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -try: - import jax.numpy as jnp - from jax.ops import segment_max, segment_min, segment_sum -except ImportError: - pass - -if TYPE_CHECKING: - try: - import jax.numpy as jnp - except ImportError: - import numpy as jnp # noqa: TC004 - - -def grouped_count(group_id: jnp.ndarray, num_segments: int) -> jnp.ndarray: - out_on_hh = segment_sum( - data=jnp.ones(len(group_id)), segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def grouped_sum( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - if column.dtype in ["bool"]: - column = column.astype(int) - - out_on_hh = segment_sum( - data=column, segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def grouped_mean( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - sum_on_hh = segment_sum( - data=column, segment_ids=group_id, num_segments=num_segments - ) - sizes = segment_sum( - data=jnp.ones(len(column)), segment_ids=group_id, num_segments=num_segments - ) - mean_on_hh = sum_on_hh / sizes - return mean_on_hh[group_id] - - -def grouped_max( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - out_on_hh = segment_max( - data=column, segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def grouped_min( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - out_on_hh = segment_min( - data=column, segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def grouped_any( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - # Convert to boolean if necessary - if jnp.issubdtype(column.dtype, jnp.integer): - my_col = column.astype("bool") - else: - my_col = column - - out_on_hh = segment_max( - data=my_col, segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def grouped_all( - column: jnp.ndarray, group_id: jnp.ndarray, num_segments: int -) -> jnp.ndarray: - # Convert to boolean if necessary - if jnp.issubdtype(column.dtype, jnp.integer): - column = column.astype("bool") - - out_on_hh = segment_min( - data=column, segment_ids=group_id, num_segments=num_segments - ) - return out_on_hh[group_id] - - -def count_by_p_id( - p_id_to_aggregate_by: jnp.ndarray, p_id_to_store_by: jnp.ndarray -) -> jnp.ndarray: - raise NotImplementedError - - -def sum_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - if column.dtype == bool: - column = column.astype(int) - - # Build an index mapping from p_id values to positions in p_id_to_store_by. - sorted_idx = jnp.argsort(p_id_to_store_by) - sorted_store = p_id_to_store_by[sorted_idx] - - # For every element in p_id_to_aggregate_by (even negatives), - # use searchsorted to get its candidate index in sorted_store. - candidate = jnp.searchsorted(sorted_store, p_id_to_aggregate_by) - candidate_idx = sorted_idx[candidate] - - # For invalid (negative) IDs, force a dummy index (0) that will be masked out. - mapped_index = jnp.where(p_id_to_aggregate_by >= 0, candidate_idx, 0) - - # Only valid entries contribute to the sum. - contributions = jnp.where(p_id_to_aggregate_by >= 0, column, 0) - - # Scatter-add the contributions to the output array. - out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) - return out.at[mapped_index].add(contributions) - - -def mean_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - raise NotImplementedError - - -def max_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - raise NotImplementedError - - -def min_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - raise NotImplementedError - - -def any_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - raise NotImplementedError - - -def all_by_p_id( - column: jnp.ndarray, - p_id_to_aggregate_by: jnp.ndarray, - p_id_to_store_by: jnp.ndarray, -) -> jnp.ndarray: - raise NotImplementedError diff --git a/src/ttsim/argument_templates/input_data.py b/src/ttsim/argument_templates/input_data.py new file mode 100644 index 0000000000..50a5cf7c54 --- /dev/null +++ b/src/ttsim/argument_templates/input_data.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import re +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + import pandas as pd + + from ttsim.interface_dag_elements.typing import ( + FlatData, + NestedData, + QNameData, + ) + + +def _camel_to_snake(name: str) -> str: + s1 = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name) + s2 = re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1) + return s2.lower() + + +@dataclass(frozen=True) +class ABC: + def to_dict(self) -> dict[str, Any]: + name = _camel_to_snake(self.__class__.__name__) + if len(self.__dict__) == 1: + return {name: self.data} # type: ignore[attr-defined] + return {name: self.__dict__} + + +@dataclass(frozen=True) +class DfAndMapper(ABC): + df: pd.DataFrame + """A dataframe with arbitrary columns.""" + mapper: dict[str, Any] + """A nested dictionary mapping expected inputs to column names in df.""" + + +@dataclass(frozen=True) +class DfWithNestedColumns(ABC): + data: pd.DataFrame + """A df with a MultiIndex in the column dimension, elements correspond to expected tree paths.""" # noqa: E501 + + +@dataclass(frozen=True) +class Tree(ABC): + data: NestedData + """A nested dictionary mapping expected input names to vectors of data.""" + + +@dataclass(frozen=True) +class Flat(ABC): + data: FlatData + """A dictionary mapping tree paths to vectors of data.""" + + +@dataclass(frozen=True) +class QName(ABC): + data: QNameData + """A dictionary mapping qualified names to vectors of data.""" diff --git a/src/ttsim/compute_taxes_and_transfers.py b/src/ttsim/compute_taxes_and_transfers.py deleted file mode 100644 index d66062bf54..0000000000 --- a/src/ttsim/compute_taxes_and_transfers.py +++ /dev/null @@ -1,493 +0,0 @@ -from __future__ import annotations - -import datetime -import functools -from typing import TYPE_CHECKING, Any - -import dags.tree as dt -import networkx as nx -from dags import concatenate_functions, create_dag, get_free_arguments - -from ttsim.automatically_added_functions import ( - TIME_UNIT_LABELS, - create_agg_by_group_functions, - create_time_conversion_functions, -) -from ttsim.column_objects_param_function import ( - ColumnFunction, - ColumnObject, - ParamFunction, -) -from ttsim.config import numpy_or_jax as np -from ttsim.failures_and_warnings import ( - fail_if_multiple_time_units_for_same_base_name_and_group, -) -from ttsim.param_objects import ParamObject, RawParam -from ttsim.policy_environment import grouping_levels -from ttsim.shared import ( - get_base_name_and_grouping_suffix, - get_re_pattern_for_all_time_units_and_groupings, - group_pattern, - merge_trees, -) - -if TYPE_CHECKING: - from collections.abc import Callable - - from ttsim.typing import ( - NestedData, - NestedPolicyEnvironment, - NestedTargetDict, - QualNameColumnFunctions, - QualNameColumnFunctionsWithProcessedParamsAndScalars, - QualNameData, - QualNameDataColumns, - QualNamePolicyEnvironment, - QualNameTargetList, - ) - - -_DUMMY_COLUMN_OBJECT = ColumnObject( - leaf_name="dummy", - start_date=datetime.date(1900, 1, 1), - end_date=datetime.date(2099, 12, 31), -) - - -def column_results( - qual_name_input_data: QualNameData, - tax_transfer_function: Callable[[QualNameData], QualNameData], -) -> QualNameData: - return tax_transfer_function(qual_name_input_data) - - -def qual_name_data(data_tree: NestedData) -> QualNameData: - return dt.flatten_to_qual_names(data_tree) - - -def qual_name_data_columns(qual_name_data: QualNameData) -> set[str]: - return set(qual_name_data.keys()) - - -def nested_results(qual_name_results: QualNameData) -> NestedData: - return dt.unflatten_from_qual_names(qual_name_results) - - -def qual_name_results( - column_results: QualNameData, - qual_name_param_targets: QualNameTargetList, - column_functions_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, - qual_name_own_targets: QualNameTargetList, - qual_name_data: QualNameData, - qual_name_targets: QualNameTargetList, -) -> QualNameData: - unordered = { - **column_results, - **{ - pt: column_functions_with_processed_params_and_scalars[pt] - for pt in qual_name_param_targets - }, - **{ot: qual_name_data[ot] for ot in qual_name_own_targets}, - } - return {k: unordered[k] for k in qual_name_targets} - - -def tax_transfer_dag( - required_column_functions: QualNameColumnFunctions, - qual_name_column_targets: QualNameTargetList, -) -> nx.DiGraph: - """Thin wrapper around `create_dag`.""" - return create_dag( - functions=required_column_functions, - targets=qual_name_column_targets, - ) - - -def tax_transfer_function( - tax_transfer_dag: nx.DiGraph, - required_column_functions: QualNameColumnFunctions, - qual_name_column_targets: QualNameTargetList, - # backend: numpy | jax, -) -> Callable[[QualNameData], QualNameData]: - """Returns a function that takes a dictionary of arrays and unpacks them as keyword arguments.""" - - ttf_with_keyword_args = concatenate_functions( - dag=tax_transfer_dag, - functions=required_column_functions, - targets=list(qual_name_column_targets), - return_type="dict", - aggregator=None, - enforce_signature=True, - set_annotations=False, - ) - - # if backend == jax: - # if not IS_JAX_INSTALLED: - # raise ImportError( - # "JAX is not installed. Please install JAX to use JIT compilation." - # ) - # import jax - - # static_args = { - # argname: data_tree["p_id"].max() + 1 - # for argname in inspect.signature(ttf_with_keyword_args).parameters - # if argname.endswith("_num_segments") - # } - # ttf_with_keyword_args=functools.partial(ttf_with_keyword_args, **static_args) - # ttf_with_keyword_args = jax.jit(ttf_with_keyword_args) - - def wrapper(qual_name_data: QualNameData) -> QualNameData: - return ttf_with_keyword_args(**qual_name_data) - - return wrapper - - -def qual_name_targets(targets_tree: NestedTargetDict) -> QualNameTargetList: - """All targets in their qualified name-representation.""" - return dt.qual_names(targets_tree) - - -def qual_name_column_targets( - required_column_functions: QualNameColumnFunctions, - qual_name_targets: QualNameTargetList, -) -> QualNameTargetList: - """All targets that are column functions.""" - return [t for t in qual_name_targets if t in required_column_functions] - - -def qual_name_param_targets( - flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, - qual_name_targets: QualNameTargetList, - qual_name_column_targets: QualNameTargetList, -) -> QualNameTargetList: - possible_targets = set(qual_name_targets) - set(qual_name_column_targets) - return [ - t - for t in qual_name_targets - if t in possible_targets - and t - in flat_policy_environment_with_derived_functions_and_without_overridden_functions - ] - - -def qual_name_own_targets( - qual_name_targets: QualNameTargetList, - qual_name_column_targets: QualNameTargetList, - qual_name_param_targets: QualNameTargetList, -) -> QualNameTargetList: - possible_targets = ( - set(qual_name_targets) - - set(qual_name_column_targets) - - set(qual_name_param_targets) - ) - return [t for t in qual_name_targets if t in possible_targets] - - -def flat_policy_environment_with_derived_functions_and_without_overridden_functions( - policy_environment: NestedPolicyEnvironment, - qual_name_data: QualNameData, - qual_name_data_columns: QualNameDataColumns, - targets_tree: NestedTargetDict, - top_level_namespace: set[str], -) -> QualNamePolicyEnvironment: - """Return a flat policy environment with derived functions. - - Three steps: - 1. Remove all tree logic from the policy environment. - 2. Add derived functions to the policy environment. - 3. Remove all functions that are overridden by data columns. - - """ - flat = _remove_tree_logic_from_policy_environment( - policy_environment=policy_environment, - top_level_namespace=top_level_namespace, - ) - flat_with_derived = _add_derived_functions( - qual_name_policy_environment=flat, - targets=dt.qual_names(targets_tree), - qual_name_data_columns=qual_name_data_columns, - groupings=grouping_levels(policy_environment), - ) - out = {} - for n, f in flat_with_derived.items(): - # Put scalar data into the policy environment, else skip the key - if n in qual_name_data: - if isinstance(qual_name_data[n], int | float | bool): - out[n] = qual_name_data[n] - else: - out[n] = f - - return out - - -def top_level_namespace( - policy_environment: NestedPolicyEnvironment, -) -> set[str]: - """Get the top level namespace. - - Parameters - ---------- - environment: - The policy environment. - - Returns - ------- - top_level_namespace: - The top level namespace. - """ - - time_units = tuple(TIME_UNIT_LABELS.keys()) - direct_top_level_names = set(policy_environment.keys()) - - # Do not create variations for lower-level namespaces. - top_level_objects_for_variations = direct_top_level_names - { - k for k, v in policy_environment.items() if isinstance(v, dict) - } - - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - groupings=grouping_levels(policy_environment), - time_units=time_units, - ) - bngs_to_variations = {} - all_top_level_names = direct_top_level_names.copy() - for name in top_level_objects_for_variations: - match = pattern_all.fullmatch(name) - # We must not find multiple time units for the same base name and group. - bngs = get_base_name_and_grouping_suffix(match) - if match.group("time_unit"): - if bngs not in bngs_to_variations: - bngs_to_variations[bngs] = [name] - else: - bngs_to_variations[bngs].append(name) - for time_unit in time_units: - all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") - fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - - gp = group_pattern(grouping_levels(policy_environment)) - potential_base_names = {n for n in all_top_level_names if not gp.match(n)} - - for name in potential_base_names: - for g in grouping_levels(policy_environment): - all_top_level_names.add(f"{name}_{g}") - - # Add num_segments to grouping variables - for g in grouping_levels(policy_environment): - all_top_level_names.add(f"{g}_id_num_segments") - return all_top_level_names - - -def _remove_tree_logic_from_policy_environment( - policy_environment: NestedPolicyEnvironment, - top_level_namespace: set[str], -) -> QualNamePolicyEnvironment: - """Map qualified names to column objects / param functions without tree logic.""" - out = {} - for name, obj in dt.flatten_to_qual_names(policy_environment).items(): - if isinstance(obj, ParamObject): - out[name] = obj - else: - out[name] = obj.remove_tree_logic( - tree_path=dt.tree_path_from_qual_name(name), - top_level_namespace=top_level_namespace, - ) - return out - - -def _add_derived_functions( - qual_name_policy_environment: QualNamePolicyEnvironment, - targets: QualNameTargetList, - qual_name_data_columns: QualNameDataColumns, - groupings: tuple[str, ...], -) -> QualNameColumnFunctions: - """Return a mapping of qualified names to functions operating on columns. - - Anything that is not a ColumnFunction is filtered out (e.g., ParamFunctions, - PolicyInputs). - - Derived functions are time converted functions and aggregation functions (aggregate - by p_id or by group). - - Check that all targets have a corresponding function in the functions tree or can - be taken from the data. - - Parameters - ---------- - column_objects_param_functions - Dict with qualified function names as keys and functions with qualified - arguments as values. - targets - The list of targets with qualified names. - data - Dict with qualified data names as keys and arrays as values. - top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The qualified functions dict with derived functions. - - """ - # Create functions for different time units - time_conversion_functions = create_time_conversion_functions( - qual_name_policy_environment=qual_name_policy_environment, - qual_name_data_columns=qual_name_data_columns, - groupings=groupings, - ) - column_functions = { - k: v - for k, v in { - **qual_name_policy_environment, - **time_conversion_functions, - }.items() - if isinstance(v, ColumnFunction) - } - - # Create aggregation functions by group. - aggregate_by_group_functions = create_agg_by_group_functions( - column_functions=column_functions, - qual_name_data_columns=qual_name_data_columns, - targets=targets, - groupings=groupings, - ) - out = { - **qual_name_policy_environment, - **time_conversion_functions, - **aggregate_by_group_functions, - } - - return out - - -def qual_name_input_data( - tax_transfer_dag: nx.DiGraph, - qual_name_data: QualNameData, -) -> QualNameData: - """Create input data for the concatenated function. - - 1. Check that all root nodes are present in the user-provided data. - 2. Get only part of the data that is needed for the concatenated function. - 3. Convert inputs to np.array - - Parameters - ---------- - data - Data provided by the user. - functions - Nested function dictionary. - targets - Targets provided by the user. - - - Returns - ------- - Inputs for the concatenated function. - - """ - - # Obtain root nodes - root_nodes = nx.subgraph_view( - tax_transfer_dag, filter_node=lambda n: tax_transfer_dag.in_degree(n) == 0 - ).nodes - - # Restrict the passed data to the subset that is actually used. - return {k: np.array(v) for k, v in qual_name_data.items() if k in root_nodes} - - -def _apply_rounding(element: Any) -> Any: - return ( - element.rounding_spec.apply_rounding(element) - if getattr(element, "rounding_spec", False) - else element - ) - - -def column_functions_with_processed_params_and_scalars( - flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, -) -> QualNameColumnFunctionsWithProcessedParamsAndScalars: - """Process the parameters and param functions, remove RawParams from the tree.""" - params = { - k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() - if isinstance(v, ParamObject) - } - scalars = { - k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() - if isinstance(v, float | int | bool) - } - param_functions = { - k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() - if isinstance(v, ParamFunction) - } - # Construct a function for the processing of all params. - process = concatenate_functions( - functions=param_functions, - targets=None, - return_type="dict", - aggregator=None, - enforce_signature=False, - set_annotations=False, - ) - # Call the processing function. - processed_param_functions = process( - **{k: v.value for k, v in params.items()}, - **scalars, - ) - processed_params = merge_trees( - left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, - right=processed_param_functions, - ) - return { - **{ - k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() - if not isinstance(v, RawParam) - }, - **processed_params, - } - - -def required_column_functions( - column_functions_with_processed_params_and_scalars: QualNameColumnFunctionsWithProcessedParamsAndScalars, - rounding: bool, -) -> QualNameColumnFunctions: - """Partial parameters to functions such that they disappear from the DAG. - - Parameters - ---------- - functions - The functions dict with qualified function names as keys and functions as - values. - params - Dictionary of parameters. - - Returns - ------- - Functions tree with parameters partialled. - - """ - processed_functions = {} - for name, _func in column_functions_with_processed_params_and_scalars.items(): - if isinstance(_func, ColumnFunction): - func = _apply_rounding(_func) if rounding else _func - partial_params = {} - for arg in [ - a - for a in get_free_arguments(func) - if not isinstance( - column_functions_with_processed_params_and_scalars.get( - a, _DUMMY_COLUMN_OBJECT - ), - ColumnObject, - ) - ]: - partial_params[arg] = ( - column_functions_with_processed_params_and_scalars[arg] - ) - if partial_params: - processed_functions[name] = functools.partial(func, **partial_params) - else: - processed_functions[name] = func - - return processed_functions diff --git a/src/ttsim/config.py b/src/ttsim/config.py deleted file mode 100644 index 70f8a8a9bb..0000000000 --- a/src/ttsim/config.py +++ /dev/null @@ -1,16 +0,0 @@ -from __future__ import annotations - -try: - import jax -except ImportError: - IS_JAX_INSTALLED = False -else: - IS_JAX_INSTALLED = True - - -if IS_JAX_INSTALLED: - numpy_or_jax = jax.numpy -else: - import numpy - - numpy_or_jax = numpy diff --git a/src/ttsim/convert_nested_data.py b/src/ttsim/convert_nested_data.py deleted file mode 100644 index 1e3d4d5f8a..0000000000 --- a/src/ttsim/convert_nested_data.py +++ /dev/null @@ -1,311 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt -import numpy as np -import optree -import pandas as pd - -from ttsim.failures_and_warnings import format_errors_and_warnings, format_list_linewise - -if TYPE_CHECKING: - from ttsim.typing import NestedData, NestedStrings, QualNameData - - -def results_df( - nested_results: NestedData, - data_tree: NestedData, - nested_outputs_df_column_names: NestedStrings, -) -> pd.DataFrame: - """The results DataFrame with mapped column names. - - Args: - nested_results: - The results of a TTSIM run. - data_tree: - The data tree of the TTSIM run. - nested_outputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - - Returns: - A DataFrame. - """ - return nested_data_to_df_with_mapped_columns( - nested_data_to_convert=nested_results, - nested_outputs_df_column_names=nested_outputs_df_column_names, - data_with_p_id=data_tree, - ) - - -def data_tree( - data_df: pd.DataFrame, - nested_inputs_df_column_names: NestedStrings, -) -> NestedData: - """The input DataFrame as a nested data structure. - - Args: - data_df: - The input DataFrame. - nested_inputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - - Returns: - A nested data structure. - """ - return dataframe_to_nested_data( - df=data_df, - inputs_tree_to_df_columns=nested_inputs_df_column_names, - ) - - -def nested_data_to_df_with_nested_columns( - nested_data_to_convert: NestedData, - data_with_p_id: NestedData | QualNameData, -) -> pd.DataFrame: - """Convert a nested data structure to a DataFrame. - - Args: - nested_data_to_convert: - A nested data structure. - data_with_p_id: - Some data structure with a "p_id" column. - - Returns: - A DataFrame. - """ - flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) - - return pd.DataFrame( - flat_data_to_convert, index=pd.Index(data_with_p_id["p_id"], name="p_id") - ) - - -def nested_data_to_df_with_mapped_columns( - nested_data_to_convert: NestedData, - nested_outputs_df_column_names: NestedStrings, - data_with_p_id: NestedData | QualNameData, -) -> pd.DataFrame: - """Convert a nested data structure to a DataFrame. - - Args: - nested_data_to_convert: - A nested data structure. - nested_outputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - data_with_p_id: - Some data structure with a "p_id" column. - - Returns: - A DataFrame. - """ - flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) - flat_df_columns = dt.flatten_to_tree_paths(nested_outputs_df_column_names) - - fail_if_data_paths_are_missing_in_paths_to_column_names( - available_paths=list(flat_df_columns.keys()), - required_paths=list(flat_data_to_convert.keys()), - ) - fail_if_incompatible_objects_in_nested_data(flat_data_to_convert) - - return pd.DataFrame( - {flat_df_columns[path]: data for path, data in flat_data_to_convert.items()}, - index=pd.Index(data_with_p_id["p_id"], name="p_id"), - ) - - -def dataframe_to_nested_data( - inputs_tree_to_df_columns: NestedStrings, - df: pd.DataFrame, -) -> NestedData: - """Transform a pandas DataFrame to a nested dictionary expected by TTSIM. - ` - Args - ---- - inputs_tree_to_df_columns: - A nested dictionary that defines the structure of the inputs tree. The - elements of the tree paths are strings. Leaves can be: - - - Strings that reference column names in the DataFrame. - - Numeric or boolean values (which will be broadcasted to match the - DataFrame length) - df: - The pandas DataFrame containing the source data. - - Returns - ------- - A nested dictionary structure containing the data organized according to the - mapping definition. - - Examples - -------- - >>> df = pd.DataFrame({ - ... "a": [1, 2, 3], - ... "b": [4, 5, 6], - ... "c": [7, 8, 9], - ... }) - >>> inputs_tree_to_df_columns = { - ... "n1": { - ... "n2": "a", - ... "n3": "b", - ... }, - ... "n4": 3, - ... } - >>> result = create_data_tree( - ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, - ... df=df, - ... ) - >>> result - { - "n1": { - "n2": pd.Series([1, 2, 3]), - "n3": pd.Series([4, 5, 6]), - }, - "n4": pd.Series([3, 3, 3]), - } - - - """ - _fail_if_df_has_bool_or_numeric_column_names(df) - _fail_if_mapper_has_incorrect_format(inputs_tree_to_df_columns) - - qualified_inputs_tree_to_df_columns = dt.flatten_to_qual_names( - inputs_tree_to_df_columns - ) - - name_to_input_series = {} - for ( - qualified_input_name, - input_value, - ) in qualified_inputs_tree_to_df_columns.items(): - if input_value in df.columns: - name_to_input_series[qualified_input_name] = df[input_value] - else: - name_to_input_series[qualified_input_name] = pd.Series( - [input_value] * len(df), - index=df.index, - ) - - return dt.unflatten_from_qual_names(name_to_input_series) - - -def fail_if_incompatible_objects_in_nested_data( - paths_to_data: QualNameData, -) -> None: - """Fail if the nested data contains incompatible objects.""" - _numeric_types = (int, float, bool, np.integer, np.floating, np.bool_) - - faulty_paths = [] - for path, data in paths_to_data.items(): - if isinstance(data, (pd.Series, np.ndarray, list)): - if all(isinstance(item, _numeric_types) for item in data): - continue - else: - faulty_paths.append(str(path)) - elif isinstance(data, _numeric_types): - continue - else: - faulty_paths.append(str(path)) - if faulty_paths: - msg = format_errors_and_warnings( - "The data returned contains objects that cannot be cast to " - "a pandas.DataFrame column. Make sure that the requested targets return " - "scalars (int, bool, float - or their numpy equivalents) only." - "The following paths contain non-scalar objects: " - f"{format_list_linewise(faulty_paths)}" - ) - raise TypeError(msg) - - -def fail_if_data_paths_are_missing_in_paths_to_column_names( - available_paths: list[str], - required_paths: list[str], -) -> None: - """Fail if the data paths are missing in the paths to column names.""" - missing_paths = [ - str(path) - for path in required_paths - if path not in available_paths and path != ("p_id",) - ] - if missing_paths: - msg = format_errors_and_warnings( - "Converting the nested data to a DataFrame failed because the following " - "paths are not mapped to a column name: " - f"{format_list_linewise(list(missing_paths))}" - ) - raise ValueError(msg) - - -def _fail_if_mapper_has_incorrect_format( - inputs_tree_to_df_columns: NestedStrings, -) -> None: - """Fail if the input tree to column name mapping has an incorrect format.""" - if not isinstance(inputs_tree_to_df_columns, dict): - msg = format_errors_and_warnings( - """The inputs tree to column mapping must be a (nested) dictionary. Call - `dags.tree.create_tree_with_input_types` to create a template.""" - ) - raise TypeError(msg) - - non_string_paths = [ - str(path) - for path in optree.tree_paths(inputs_tree_to_df_columns, none_is_leaf=True) # type: ignore[arg-type] - if not all(isinstance(part, str) for part in path) - ] - if non_string_paths: - msg = format_errors_and_warnings( - f"""All path elements of `inputs_tree_to_df_columns` must be strings. - Found the following paths that contain non-string elements: - - {format_list_linewise(non_string_paths)} - - Call `dags.tree.create_tree_with_input_types` to create a template. - """ - ) - raise TypeError(msg) - - incorrect_types = { - k: type(v) - for k, v in dt.flatten_to_qual_names(inputs_tree_to_df_columns).items() - if not isinstance(v, str | int | float | bool) - } - if incorrect_types: - formatted_incorrect_types = "\n".join( - f" - {k}: {v.__name__}" for k, v in incorrect_types.items() - ) - msg = format_errors_and_warnings( - f"""Values of the input tree to column mapping must be strings, integers, - floats, or Booleans. - Found the following incorrect types: - - {formatted_incorrect_types} - """ - ) - raise TypeError(msg) - - -def _fail_if_df_has_bool_or_numeric_column_names(df: pd.DataFrame) -> None: - """Fail if the DataFrame has bool or numeric column names.""" - common_msg = format_errors_and_warnings( - """DataFrame column names cannot be booleans or numbers. This restriction - prevents ambiguity between actual column references and values intended for - broadcasting. - """ - ) - bool_column_names = [col for col in df.columns if isinstance(col, bool)] - numeric_column_names = [ - col - for col in df.columns - if isinstance(col, (int, float)) or (isinstance(col, str) and col.isnumeric()) - ] - - if bool_column_names or numeric_column_names: - msg = format_errors_and_warnings( - f""" - {common_msg} - - Boolean column names: {bool_column_names}. - Numeric column names: {numeric_column_names}. - """ - ) - raise ValueError(msg) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py new file mode 100644 index 0000000000..d6a06aba58 --- /dev/null +++ b/src/ttsim/interface_dag.py @@ -0,0 +1,275 @@ +from __future__ import annotations + +import inspect +import re +from dataclasses import asdict +from pathlib import Path +from typing import TYPE_CHECKING, Any, Literal + +import dags +import dags.tree as dt +import optree + +from ttsim.argument_templates import input_data +from ttsim.interface_dag_elements import _InterfaceDAGElements +from ttsim.interface_dag_elements.fail_if import ( + format_errors_and_warnings, + format_list_linewise, +) +from ttsim.interface_dag_elements.interface_node_objects import ( + FailOrWarnFunction, + InputDependentInterfaceFunction, + InterfaceFunction, + InterfaceInput, +) +from ttsim.interface_dag_elements.orig_policy_objects import load_module + +if TYPE_CHECKING: + import datetime + + from ttsim.interface_dag_elements.typing import ( + NestedTargetDict, + QNameStrings, + UnorderedQNames, + ) + + +def main( + *, + date_str: str | None = None, + output_names: NestedTargetDict | QNameStrings | None = None, + input_data: input_data.DfAndMapper + | input_data.DfWithNestedColumns + | input_data.Flat + | input_data.QName + | None = None, + targets: dict[str, Any] | None = None, + backend: Literal["numpy", "jax"] | None = None, + rounding: bool = True, + fail_and_warn: bool = True, + orig_policy_objects: dict[str, Any] | None = None, + raw_results: dict[str, Any] | None = None, + results: dict[str, Any] | None = None, + specialized_environment: dict[str, Any] | None = None, + policy_environment: dict[str, Any] | None = None, + processed_data: dict[str, Any] | None = None, + dnp: dict[str, Any] | None = None, + xnp: dict[str, Any] | None = None, + date: datetime.date | None = None, + labels: dict[str, Any] | None = None, +) -> dict[str, Any]: + """ + Main function that processes the inputs and returns the outputs. + """ + + flat_inputs = _harmonize_inputs(locals()) + output_qnames = _harmonize_output_names(output_names) + + if not any(re.match("(input|processed)_data", s) for s in flat_inputs): + flat_inputs["processed_data"] = {} + flat_inputs["processed_data_columns"] = None + + nodes = { + p: n + for p, n in load_interface_functions_and_inputs().items() + if p not in flat_inputs + } + + _fail_if_requested_nodes_cannot_be_found( + output_qnames=output_qnames, + nodes=nodes, + ) + + # Replace InputDependentInterfaceFunction with InterfaceFunction + for p, n in nodes.items(): + if isinstance(n, InputDependentInterfaceFunction): + nodes[p] = n.resolve_to_static_interface_function(list(flat_inputs.keys())) + + functions = { + p: n + for p, n in nodes.items() + if isinstance(n, InterfaceFunction) + and not isinstance(n, InputDependentInterfaceFunction) + } + + # If targets are None, all failures and warnings are included, anyhow. + if fail_and_warn and output_qnames is not None: + output_qnames = include_fail_and_warn_nodes( + functions=functions, + output_qnames=output_qnames, + ) + + f = dags.concatenate_functions( + functions=functions, + targets=output_qnames, + return_type="dict", + enforce_signature=False, + set_annotations=False, + ) + return f(**flat_inputs) + + +def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: + # Iterate over the skeleton and see whether we need to convert anything to + # qualified names. + flat_inputs = {} + accs, vals = optree.tree_flatten_with_accessor( # type: ignore[var-annotated] + asdict(_InterfaceDAGElements()), # type: ignore[arg-type] + none_is_leaf=True, + )[:2] + if "input_data" in inputs and isinstance(inputs["input_data"], input_data.ABC): + inputs["input_data"] = inputs["input_data"].to_dict() + for acc, val in zip(accs, vals, strict=False): + qname = dt.qname_from_tree_path(acc.path) + if qname in inputs: + flat_inputs[qname] = inputs[qname] + else: + try: + flat_inputs[qname] = acc(inputs) + except (KeyError, TypeError): + flat_inputs[qname] = val + return {k: v for k, v in flat_inputs.items() if v is not None} + + +def _harmonize_output_names( + output_names: QNameStrings | NestedTargetDict | None, +) -> list[str] | None: + if output_names is None: + return None + if isinstance(output_names, dict): + return dt.qnames(output_names) + return output_names + + +def include_fail_and_warn_nodes( + functions: dict[str, InterfaceFunction], + output_qnames: QNameStrings, +) -> list[str]: + """Extend targets with failures and warnings that can be computed within the graph. + + FailOrWarnFunctions which are included in the targets are treated like regular + functions. + + """ + fail_or_warn_functions = { + p: n + for p, n in functions.items() + if isinstance(n, FailOrWarnFunction) and p not in output_qnames + } + workers_and_their_inputs = dags.create_dag( + functions={ + p: n + for p, n in functions.items() + if not isinstance(n, FailOrWarnFunction) or p in output_qnames + }, + targets=output_qnames, + ) + out = output_qnames.copy() + for p, n in fail_or_warn_functions.items(): + args = inspect.signature(n).parameters + if all(a in workers_and_their_inputs for a in args) and ( + # all([]) evaluates to True. + ( + n.include_if_all_elements_present + and all( + a in workers_and_their_inputs + for a in n.include_if_all_elements_present + ) + ) + or any( + a in workers_and_their_inputs for a in n.include_if_any_element_present + ) + ): + out.append(p) + return out + + +def load_interface_functions_and_inputs() -> dict[ + str, + InterfaceFunction | InterfaceInput, +]: + """Load the collection of functions and inputs from the current directory.""" + orig_functions = _load_orig_functions() + return _remove_tree_logic_from_function_collection( + orig_functions=orig_functions, + top_level_namespace={path[0] for path in orig_functions}, + ) + + +def _load_orig_functions() -> dict[tuple[str, ...], InterfaceFunction | InterfaceInput]: + """ + Load the interface functions and inputs from the current directory. + + """ + root = Path(__file__).parent / "interface_dag_elements" + paths = [ + p for p in root.rglob("*.py") if p.name not in ["__init__.py", "typing.py"] + ] + flat_functions: dict[ + tuple[str, ...], InterfaceFunction | InterfaceInput | FailOrWarnFunction + ] = {} + for path in paths: + module = load_module(path=path, root=root) + for name, obj in inspect.getmembers(module): + if isinstance(obj, InterfaceFunction | InterfaceInput): + if obj.in_top_level_namespace: + flat_functions[(name,)] = obj + else: + flat_functions[(str(module.__name__), name)] = obj + + return flat_functions + + +def _remove_tree_logic_from_function_collection( + orig_functions: dict[tuple[str, ...], InterfaceFunction | InterfaceInput], + top_level_namespace: UnorderedQNames, +) -> dict[str, InterfaceFunction | InterfaceInput]: + """Map qualified names to column objects / param functions without tree logic.""" + return { + dags.tree.qname_from_tree_path(path): obj.remove_tree_logic( + tree_path=path, + top_level_namespace=top_level_namespace, + ) + for path, obj in orig_functions.items() + } + + +def _fail_if_requested_nodes_cannot_be_found( + output_qnames: list[str] | None, + nodes: dict[str, InterfaceFunction | InterfaceInput], +) -> None: + """Fail if some qname is not among nodes.""" + all_qnames = set(nodes.keys()) + interface_function_names = { + p for p, n in nodes.items() if isinstance(n, InterfaceFunction) + } + fail_or_warn_functions = { + p: n for p, n in nodes.items() if isinstance(n, FailOrWarnFunction) + } + + # Output qnames not in interface functions + if output_qnames is not None: + missing_output_qnames = set(output_qnames) - set(interface_function_names) + else: + missing_output_qnames = set() + + # Qnames from include condtions of fail_or_warn functions not in nodes + for n in fail_or_warn_functions.values(): + qns = {*n.include_if_all_elements_present, *n.include_if_any_element_present} + missing_qnames_from_include_conditions = qns - all_qnames + + if missing_output_qnames or missing_qnames_from_include_conditions: + if missing_output_qnames: + msg = format_errors_and_warnings( + "The following output names for the interface DAG are not among the " + "interface functions or inputs:\n" + ) + format_list_linewise(sorted(missing_output_qnames)) + else: + msg = "" + if missing_qnames_from_include_conditions: + msg += format_errors_and_warnings( + "\n\nThe following elements specified in some include condition of " + "`fail_or_warn_function`s are not among the interface functions or " + "inputs:\n" + ) + format_list_linewise(sorted(missing_qnames_from_include_conditions)) + raise ValueError(msg) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py new file mode 100644 index 0000000000..498a66f06b --- /dev/null +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -0,0 +1,168 @@ +from __future__ import annotations + +import datetime +from dataclasses import asdict, dataclass, field +from pathlib import Path +from typing import Any, Literal, get_type_hints + +import dags.tree as dt +import pandas as pd + +__all__ = [] # type: ignore[var-annotated] + +from ttsim.interface_dag_elements.interface_node_objects import ( + FailOrWarnFunction, + InterfaceFunction, + InterfaceInput, +) + + +class NestedInit: + def __init_subclass__(cls) -> None: + super().__init_subclass__() + for name, type_ in get_type_hints(cls).items(): + if hasattr(type_, "__origin__") and type_.__origin__ is type: + setattr(cls, name, type_()) + + def __setattr__(self, name: str, value: Any) -> None: + if name in get_type_hints(self.__class__): + object.__setattr__(self, name, value) + else: + raise AttributeError( + f"'{self.__class__.__name__}' has no attribute '{name}'" + ) + + +@dataclass +class WarnIf(NestedInit): + functions_and_data_columns_overlap: FailOrWarnFunction | None = None + + +@dataclass +class FailIf(NestedInit): + active_periods_overlap: FailOrWarnFunction | None = None + any_paths_are_invalid: FailOrWarnFunction | None = None + paths_are_missing_in_targets_tree_mapper: FailOrWarnFunction | None = None + environment_is_invalid: FailOrWarnFunction | None = None + foreign_keys_are_invalid_in_data: FailOrWarnFunction | None = None + group_ids_are_outside_top_level_namespace: FailOrWarnFunction | None = None + group_variables_are_not_constant_within_groups: FailOrWarnFunction | None = None + input_data_tree_is_invalid: FailOrWarnFunction | None = None + input_df_has_bool_or_numeric_column_names: FailOrWarnFunction | None = None + input_df_mapper_columns_missing_in_df: FailOrWarnFunction | None = None + input_df_mapper_has_incorrect_format: FailOrWarnFunction | None = None + non_convertible_objects_in_results_tree: FailOrWarnFunction | None = None + root_nodes_are_missing: FailOrWarnFunction | None = None + targets_are_not_in_specialized_environment_or_data: FailOrWarnFunction | None = None + targets_tree_is_invalid: FailOrWarnFunction | None = None + + +@dataclass +class Results(NestedInit): + df_with_mapper: InterfaceFunction | None = None + df_with_nested_columns: InterfaceFunction | None = None + tree: InterfaceFunction | None = None + + +@dataclass +class RawResults(NestedInit): + columns: InterfaceFunction | None = None + combined: InterfaceFunction | None = None + from_input_data: InterfaceFunction | None = None + params: InterfaceFunction | None = None + + +@dataclass +class SpecializedEnvironment(NestedInit): + without_tree_logic_and_with_derived_functions: InterfaceFunction | None = None + with_processed_params_and_scalars: InterfaceFunction | None = None + with_partialled_params_and_scalars: InterfaceFunction | None = None + tax_transfer_dag: InterfaceFunction | None = None + tax_transfer_function: InterfaceFunction | None = None + + +@dataclass +class Targets(NestedInit): + qname: InterfaceFunction | None = None + tree: dict[str, Any] | None = None + + +@dataclass +class Labels(NestedInit): + column_targets: InterfaceFunction | None = None + grouping_levels: InterfaceFunction | None = None + input_data_targets: InterfaceFunction | None = None + param_targets: InterfaceFunction | None = None + processed_data_columns: InterfaceFunction | None = None + input_columns: InterfaceFunction | None = None + root_nodes: InterfaceFunction | None = None + top_level_namespace: InterfaceFunction | None = None + + +@dataclass +class DfAndMapper(NestedInit): + df: pd.DataFrame | None = None + mapper: dict[str, Any] | None = None + + +@dataclass +class InputData(NestedInit): + df_and_mapper: DfAndMapper = field(default_factory=DfAndMapper) + df_with_nested_columns: InterfaceFunction | None = None + flat: InterfaceFunction | None = None + tree: InterfaceFunction | None = None + + +@dataclass +class OrigPolicyObjects(NestedInit): + column_objects_and_param_functions: InterfaceFunction | None = None + param_specs: InterfaceFunction | None = None + root: Path | None = None + + +@dataclass +class Templates(NestedInit): + input_data_dtypes: InterfaceFunction | None = None + + +@dataclass +class _InterfaceDAGElements: + backend: Literal["numpy", "jax"] = "numpy" + """The backend to use for computations.""" + date_str: str | None = None + input_data: InputData = field(default_factory=InputData) + targets: Targets = field(default_factory=Targets) + orig_policy_objects: OrigPolicyObjects = field(default_factory=OrigPolicyObjects) + raw_results: RawResults = field(default_factory=RawResults) + results: Results = field(default_factory=Results) + specialized_environment: SpecializedEnvironment = field( + default_factory=SpecializedEnvironment + ) + policy_environment: InterfaceFunction | None = None + processed_data: InterfaceFunction | None = None + dnp: InterfaceFunction | None = None + xnp: InterfaceFunction | None = None + date: datetime.date | None = None + labels: Labels = field(default_factory=Labels) + rounding: bool = True + templates: Templates = field(default_factory=Templates) + warn_if: WarnIf = field(default_factory=WarnIf) + fail_if: FailIf = field(default_factory=FailIf) + + def __setattr__(self, name: str, value: Any) -> None: + object.__setattr__(self, name, value) + + def to_dict(self) -> dict[str, Any]: + # Skeleton comes from having all leaves equal to None. + flat = { + p: getattr(path=p, obj=self) + for p in dt.tree_paths(asdict(_InterfaceDAGElements())) + } + return dt.unflatten_from_tree_paths(flat) + + +def getattr(path: tuple[str, ...], obj: Any) -> Any: + val = obj.__getattribute__(path[0]) + if len(path) == 1: + return val + return getattr(path[1:], val) diff --git a/src/ttsim/automatically_added_functions.py b/src/ttsim/interface_dag_elements/automatically_added_functions.py similarity index 78% rename from src/ttsim/automatically_added_functions.py rename to src/ttsim/interface_dag_elements/automatically_added_functions.py index 709e42695d..bf4d1e49e9 100644 --- a/src/ttsim/automatically_added_functions.py +++ b/src/ttsim/interface_dag_elements/automatically_added_functions.py @@ -1,13 +1,19 @@ from __future__ import annotations import inspect -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, overload import dags.tree as dt from dags import get_free_arguments, rename_arguments -from ttsim.aggregation import grouped_sum -from ttsim.column_objects_param_function import ( +from ttsim.interface_dag_elements.shared import ( + get_base_name_and_grouping_suffix, + get_re_pattern_for_all_time_units_and_groupings, + get_re_pattern_for_specific_time_units_and_groupings, + group_pattern, +) +from ttsim.tt_dag_elements.aggregation import grouped_sum +from ttsim.tt_dag_elements.column_objects_param_function import ( DEFAULT_END_DATE, DEFAULT_START_DATE, AggByGroupFunction, @@ -16,36 +22,28 @@ ParamFunction, TimeConversionFunction, ) -from ttsim.config import IS_JAX_INSTALLED -from ttsim.failures_and_warnings import ( - fail_if_multiple_time_units_for_same_base_name_and_group, -) -from ttsim.param_objects import ScalarParam -from ttsim.shared import ( - get_base_name_and_grouping_suffix, - get_re_pattern_for_all_time_units_and_groupings, - get_re_pattern_for_specific_time_units_and_groupings, - group_pattern, -) +from ttsim.tt_dag_elements.param_objects import ScalarParam if TYPE_CHECKING: import re from collections.abc import Callable - from ttsim.typing import ( - QualNameColumnFunctions, - QualNameDataColumns, - QualNamePolicyEnvironment, - QualNameTargetList, + from ttsim.interface_dag_elements.typing import ( + BoolColumn, + FloatColumn, + IntColumn, + OrderedQNames, + QNamePolicyEnvironment, + UnorderedQNames, ) TIME_UNIT_LABELS = { - "y": "year", - "q": "quarter", - "m": "month", - "w": "week", - "d": "day", + "y": "Year", + "q": "Quarter", + "m": "Month", + "w": "Week", + "d": "Day", } _Q_PER_Y = 4 @@ -54,6 +52,16 @@ _D_PER_Y = 365.25 +def fail_if_multiple_time_units_for_same_base_name_and_group( + base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], +) -> None: + invalid = { + b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 + } + if invalid: + raise ValueError(f"Multiple time units for base names: {invalid}") + + def y_to_q(value: float) -> float: """ Converts yearly to quarterly values. @@ -399,11 +407,11 @@ def d_to_w(value: float) -> float: def _convertibles( - qual_name_policy_environment: QualNamePolicyEnvironment, + qname_policy_environment: QNamePolicyEnvironment, ) -> dict[str, ColumnObject | ParamFunction | ScalarParam]: return { qn: e - for qn, e in qual_name_policy_environment.items() + for qn, e in qname_policy_environment.items() if isinstance(e, (ColumnObject, ScalarParam)) or ( isinstance(e, ParamFunction) @@ -413,10 +421,10 @@ def _convertibles( def create_time_conversion_functions( - qual_name_policy_environment: QualNamePolicyEnvironment, - qual_name_data_columns: QualNameDataColumns, - groupings: tuple[str, ...], -) -> QualNameColumnFunctions: + qname_policy_environment: QNamePolicyEnvironment, + input_columns: UnorderedQNames, + grouping_levels: OrderedQNames, +) -> UnorderedQNames: """ Create functions converting elements of the policy environment to other time units. @@ -450,52 +458,53 @@ def create_time_conversion_functions( functions The functions dict with qualified function names as keys and functions as values. - qual_name_data_columns - The data columns, represented by qualified names. + input_columns + The names of the input columns, represented by qualified names. + grouping_levels + The grouping levels. Returns ------- The functions dict with the new time conversion functions. """ - - all_time_units = tuple(TIME_UNIT_LABELS) + time_units = tuple(TIME_UNIT_LABELS) pattern_all = get_re_pattern_for_all_time_units_and_groupings( - groupings=groupings, - time_units=all_time_units, + grouping_levels=grouping_levels, + time_units=time_units, ) # Map base name and grouping suffix to time conversion inputs. bngs_to_time_conversion_inputs = {} bngs_to_variations = {} - for qual_name, element in _convertibles(qual_name_policy_environment).items(): - match = pattern_all.fullmatch(qual_name) + for qname, element in _convertibles(qname_policy_environment).items(): + match = pattern_all.fullmatch(qname) # We must not find multiple time units for the same base name and group. bngs = get_base_name_and_grouping_suffix(match) if match.group("time_unit"): if bngs not in bngs_to_variations: - bngs_to_variations[bngs] = [qual_name] + bngs_to_variations[bngs] = [qname] else: - bngs_to_variations[bngs].append(qual_name) + bngs_to_variations[bngs].append(qname) bngs_to_time_conversion_inputs[bngs] = { "base_name": bngs[0], - "qual_name_source": qual_name, + "qname_source": qname, "element": element, "time_unit": match.group("time_unit"), "grouping_suffix": bngs[1], - "all_time_units": all_time_units, + "time_units": time_units, } fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) converted_elements: dict[str, ColumnObject] = {} for bngs, inputs in bngs_to_time_conversion_inputs.items(): - for qual_name_data in qual_name_data_columns: + for col_name in input_columns: # If base_name is in provided data, base time conversions on that. if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( base_name=bngs[0], - all_time_units=all_time_units, - groupings=groupings, - ).fullmatch(qual_name_data): - inputs["qual_name_source"] = qual_name_data + all_time_units=time_units, + grouping_levels=grouping_levels, + ).fullmatch(col_name): + inputs["qname_source"] = col_name inputs["time_unit"] = pattern_specific.group("time_unit") break @@ -507,11 +516,11 @@ def create_time_conversion_functions( def _create_one_set_of_time_conversion_functions( base_name: str, - qual_name_source: str, + qname_source: str, element: ColumnObject, time_unit: str, grouping_suffix: str, - all_time_units: tuple[str, ...], + time_units: OrderedQNames, ) -> dict[str, TimeConversionFunction]: result: dict[str, TimeConversionFunction] = {} dependencies = ( @@ -520,7 +529,7 @@ def _create_one_set_of_time_conversion_functions( else set() ) - for target_time_unit in [tu for tu in all_time_units if tu != time_unit]: + for target_time_unit in [tu for tu in time_units if tu != time_unit]: new_name = f"{base_name}_{target_time_unit}{grouping_suffix}" # Without the following check, we could create cycles in the DAG: Consider a @@ -536,41 +545,59 @@ def _create_one_set_of_time_conversion_functions( continue result[new_name] = TimeConversionFunction( - leaf_name=dt.tree_path_from_qual_name(new_name)[-1], + leaf_name=dt.tree_path_from_qname(new_name)[-1], function=_create_function_for_time_unit( - source=qual_name_source, + source=qname_source, converter=_time_conversion_functions[ f"{time_unit}_to_{target_time_unit}" ], ), - source=qual_name_source, + source=qname_source, start_date=element.start_date, end_date=element.end_date, + description=( + f"Time conversion of {dt.tree_path_from_qname(qname_source)} " + f"from {time_unit} to {target_time_unit}" + ), ) return result def _create_function_for_time_unit( - source: str, converter: Callable[[float], float] -) -> Callable[[float], float]: + source: str, + converter: Callable[[float], float], +) -> Callable[[BoolColumn | FloatColumn | IntColumn], FloatColumn]: + @overload + @rename_arguments(mapper={"x": source}) + def func(x: FloatColumn) -> FloatColumn: ... + + @overload @rename_arguments(mapper={"x": source}) - def func(x: float) -> float: + def func(x: IntColumn) -> FloatColumn: ... + + @overload + @rename_arguments(mapper={"x": source}) + def func(x: BoolColumn) -> FloatColumn: ... + + @rename_arguments(mapper={"x": source}) + def func(x: FloatColumn | IntColumn | BoolColumn) -> FloatColumn: return converter(x) - return func + return func # type: ignore[has-type] def create_agg_by_group_functions( - column_functions: QualNameColumnFunctions, - qual_name_data_columns: QualNameDataColumns, - targets: QualNameTargetList, - groupings: tuple[str, ...], -) -> QualNameColumnFunctions: - gp = group_pattern(groupings) + column_functions: dict[str, ColumnFunction], + input_columns: UnorderedQNames, + targets: OrderedQNames, + grouping_levels: OrderedQNames, + # backend: Literal["numpy", "jax"], +) -> UnorderedQNames: + gp = group_pattern(grouping_levels) all_functions_and_data = { **column_functions, - **dict.fromkeys(qual_name_data_columns), + **dict.fromkeys(input_columns), } potential_agg_by_group_function_names = { # Targets that end with a grouping suffix are potential aggregation targets. @@ -584,7 +611,8 @@ def create_agg_by_group_functions( potential_agg_by_group_sources = { qn: o for qn, o in all_functions_and_data.items() if not gp.match(qn) } - # Exclude objects that have been explicitly provided. + # Exclude objects that have been explicitly provided.u + agg_by_group_function_names = { t for t in potential_agg_by_group_function_names @@ -597,25 +625,28 @@ def create_agg_by_group_functions( if base_name_with_time_unit in potential_agg_by_group_sources: group_id = f"{match.group('group')}_id" mapper = {"group_id": group_id, "column": base_name_with_time_unit} - if IS_JAX_INSTALLED: - mapper["num_segments"] = f"{group_id}_num_segments" agg_func = rename_arguments( func=grouped_sum, mapper=mapper, ) out[abgfn] = AggByGroupFunction( - leaf_name=dt.tree_path_from_qual_name(abgfn)[-1], + leaf_name=dt.tree_path_from_qname(abgfn)[-1], function=agg_func, start_date=DEFAULT_START_DATE, end_date=DEFAULT_END_DATE, + description=( + f"Automatic sum aggregation of " + f"{dt.tree_path_from_qname(base_name_with_time_unit)} by " + f"{match.group('group')} ID." + ), ) return out def _get_potential_agg_by_group_function_names_from_function_arguments( - functions: QualNameColumnFunctions, + functions: UnorderedQNames, group_pattern: re.Pattern[str], -) -> set[str]: +) -> UnorderedQNames: """Get potential aggregation function names from function arguments. Parameters diff --git a/src/ttsim/interface_dag_elements/backend.py b/src/ttsim/interface_dag_elements/backend.py new file mode 100644 index 0000000000..69f567b894 --- /dev/null +++ b/src/ttsim/interface_dag_elements/backend.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Literal + +if TYPE_CHECKING: + from types import ModuleType +import numpy + +from ttsim.interface_dag_elements.interface_node_objects import ( + interface_function, + interface_input, +) + + +@interface_input(in_top_level_namespace=True) +def backend() -> Literal["numpy", "jax"]: + """The computing backend to use for the taxes and transfers function.""" + + +@interface_function(in_top_level_namespace=True) +def xnp(backend: Literal["numpy", "jax"]) -> ModuleType: + """ + Return the backend for numerical operations (either NumPy or jax). + """ + if backend == "numpy": + xnp = numpy + elif backend == "jax": + import jax + + xnp = jax.numpy + else: + raise ValueError(f"Unsupported backend: {backend}. Choose 'numpy' or 'jax'.") + return xnp + + +@interface_function(in_top_level_namespace=True) +def dnp(backend: Literal["numpy", "jax"]) -> ModuleType: + """ + Return the backend for datetime objects (either NumPy or jax-datetime) + """ + if backend == "numpy": + dnp = numpy + elif backend == "jax": + import jax_datetime + + dnp = jax_datetime + return dnp diff --git a/src/ttsim/interface_dag_elements/data_converters.py b/src/ttsim/interface_dag_elements/data_converters.py new file mode 100644 index 0000000000..d7c88b921a --- /dev/null +++ b/src/ttsim/interface_dag_elements/data_converters.py @@ -0,0 +1,153 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +import dags.tree as dt +import pandas as pd + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import ( + NestedData, + NestedInputsMapper, + NestedStrings, + QNameData, + ) + + +def nested_data_to_df_with_nested_columns( + nested_data_to_convert: NestedData, + data_with_p_id: NestedData | QNameData, +) -> pd.DataFrame: + """Convert a nested data structure to a DataFrame. + + Args: + nested_data_to_convert: + A nested data structure. + data_with_p_id: + Some data structure with a "p_id" column. + + Returns + ------- + A DataFrame. + """ + flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) + + return pd.DataFrame( + flat_data_to_convert, + index=pd.Index(data_with_p_id["p_id"], name="p_id"), + ) + + +def nested_data_to_df_with_mapped_columns( + nested_data_to_convert: NestedData, + nested_outputs_df_column_names: NestedStrings, + data_with_p_id: NestedData | QNameData, +) -> pd.DataFrame: + """Convert a nested data structure to a DataFrame. + + Args: + nested_data_to_convert: + A nested data structure. + nested_outputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + data_with_p_id: + Some data structure with a "p_id" column. + + Returns + ------- + A DataFrame. + """ + flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) + flat_df_columns = dt.flatten_to_tree_paths(nested_outputs_df_column_names) + + return pd.DataFrame( + {flat_df_columns[path]: data for path, data in flat_data_to_convert.items()}, + index=pd.Index(data_with_p_id["p_id"], name="p_id"), + ) + + +def df_with_mapped_columns_to_nested_data( + mapper: NestedInputsMapper, + df: pd.DataFrame, + xnp: ModuleType, +) -> NestedData: + """Transform a pandas DataFrame to a nested dictionary expected by TTSIM. + ` + Args + ---- + inputs_tree_to_df_columns: + A nested dictionary that defines the structure of the inputs tree. The + elements of the tree paths are strings. Leaves can be: + + - Strings that reference column names in the DataFrame. + - Numeric or boolean values (which will be broadcasted to match the + DataFrame length) + df: + The pandas DataFrame containing the source data. + + Returns + ------- + A nested dictionary structure containing the data organized according to the + mapping definition. + + Examples + -------- + >>> df = pd.DataFrame({ + ... "a": [1, 2, 3], + ... "b": [4, 5, 6], + ... "c": [7, 8, 9], + ... }) + >>> inputs_tree_to_df_columns = { + ... "n1": { + ... "n2": "a", + ... "n3": "b", + ... }, + ... "n4": 3, + ... } + >>> result = create_data_tree( + ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, + ... df=df, + ... ) + >>> result + { + "n1": { + "n2": np.array([1, 2, 3]), + "n3": np.array([4, 5, 6]), + }, + "n4": np.array([3, 3, 3]), + } + + + """ + qname_to_array = {} + for qname, df_col_name in dt.flatten_to_qnames(mapper).items(): + if df_col_name in df.columns: + qname_to_array[qname] = xnp.asarray(df[df_col_name]) + else: + qname_to_array[qname] = xnp.asarray( + pd.Series( + [df_col_name] * len(df), + index=df.index, + ), + ) + + return dt.unflatten_from_qnames(qname_to_array) + + +def df_with_nested_columns_to_nested_data( + df: pd.DataFrame, + xnp: ModuleType, +) -> NestedData: + """Convert a DataFrame with nested columns to a nested data structure.""" + flat_dict_with_correct_leaf_types = { + _remove_nan_from_keys(key): xnp.asarray(value) + for key, value in df.to_dict(orient="list").items() + } + return dt.unflatten_from_tree_paths(flat_dict_with_correct_leaf_types) + + +def _remove_nan_from_keys(path: tuple[str | Any, ...]) -> tuple[str, ...]: + """Remove nan string from string tuples.""" + return tuple(el for el in path if not pd.isna(el)) diff --git a/src/ttsim/interface_dag_elements/dates.py b/src/ttsim/interface_dag_elements/dates.py new file mode 100644 index 0000000000..2dfc2fec34 --- /dev/null +++ b/src/ttsim/interface_dag_elements/dates.py @@ -0,0 +1,25 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim.interface_dag_elements.interface_node_objects import ( + interface_function, + interface_input, +) +from ttsim.interface_dag_elements.shared import to_datetime + +if TYPE_CHECKING: + import datetime + + from ttsim.interface_dag_elements.typing import DashedISOString + + +@interface_input(in_top_level_namespace=True) +def date_str() -> DashedISOString: + """The date to be used as policy date and evaluation date.""" + + +@interface_function(in_top_level_namespace=True) +def date(date_str: DashedISOString) -> datetime.date: + """The date to be used as policy date and evaluation date.""" + return to_datetime(date_str) diff --git a/src/ttsim/failures_and_warnings.py b/src/ttsim/interface_dag_elements/fail_if.py similarity index 55% rename from src/ttsim/failures_and_warnings.py rename to src/ttsim/interface_dag_elements/fail_if.py index 3c305aadaa..ed04029c40 100644 --- a/src/ttsim/failures_and_warnings.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -3,15 +3,19 @@ import datetime import itertools import textwrap -import warnings from dataclasses import dataclass +from types import ModuleType from typing import TYPE_CHECKING, Any import dags.tree as dt import networkx as nx +import numpy +import optree import pandas as pd -from ttsim.column_objects_param_function import ( +from ttsim.interface_dag_elements.interface_node_objects import fail_or_warn_function +from ttsim.interface_dag_elements.shared import get_name_of_group_by_id +from ttsim.tt_dag_elements.column_objects_param_function import ( DEFAULT_END_DATE, ColumnFunction, ColumnObject, @@ -19,24 +23,26 @@ ParamFunction, PolicyInput, ) -from ttsim.config import numpy_or_jax as np -from ttsim.param_objects import ParamObject -from ttsim.shared import get_name_of_group_by_id +from ttsim.tt_dag_elements.param_objects import ParamObject if TYPE_CHECKING: - from ttsim.typing import ( + from collections.abc import Callable + + from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, - GenericCallable, - NestedColumnObjectsParamFunctions, NestedData, NestedPolicyEnvironment, + NestedStrings, NestedTargetDict, + OrderedQNames, OrigParamSpec, - QualNameData, - QualNameDataColumns, - QualNamePolicyEnvironment, - QualNameTargetList, + QNameData, + QNameDataColumns, + QNamePolicyEnvironment, + QNameSpecializedEnvironment0, + QNameSpecializedEnvironment2, + UnorderedQNames, ) @@ -53,7 +59,7 @@ class ConflictingActivePeriodsError(Exception): def __init__( self, affected_column_objects: list[ColumnObject], - path: tuple[str, ...], + path: OrderedQNames, overlap_start: datetime.date, overlap_end: datetime.date, ) -> None: @@ -83,60 +89,6 @@ def __str__(self) -> str: Overlap from {self.overlap_start} to {self.overlap_end}.""" -class FunctionsAndDataColumnsOverlapWarning(UserWarning): - """ - Warning that functions which compute columns overlap with existing columns. - - Parameters - ---------- - columns_overriding_functions : set[str] - Names of columns in the data that override hard-coded functions. - """ - - def __init__(self, columns_overriding_functions: list[str]) -> None: - n_cols = len(columns_overriding_functions) - if n_cols == 1: - first_part = format_errors_and_warnings("Your data provides the column:") - second_part = format_errors_and_warnings( - """ - This is already present among the hard-coded functions of the taxes and - transfers system. If you want this data column to be used instead of - calculating it within TTSIM you need not do anything. If you want this - data column to be calculated by hard-coded functions, remove it from the - *data* you pass to TTSIM. You need to pick one option for each column - that appears in the list above. - """ - ) - else: - first_part = format_errors_and_warnings("Your data provides the columns:") - second_part = format_errors_and_warnings( - """ - These are already present among the hard-coded functions of the taxes - and transfers system. If you want a data column to be used instead of - calculating it within TTSIM you do not need to do anything. If you - want data columns to be calculated by hard-coded functions, remove them - from the *data* you pass to TTSIM. You need to pick one option for - each column that appears in the list above. - """ - ) - formatted = format_list_linewise(columns_overriding_functions) - how_to_ignore = format_errors_and_warnings( - """ - If you want to ignore this warning, add the following code to your script - before calling TTSIM: - - import warnings - from ttsim import FunctionsAndDataColumnsOverlapWarning - - warnings.filterfilters( - "ignore", - category=FunctionsAndDataColumnsOverlapWarning - ) - """ - ) - super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") - - @dataclass(frozen=True) class _ParamWithActivePeriod(ParamObject): """A ParamObject object which mimics a ColumnObject regarding active periods. @@ -148,7 +100,9 @@ class _ParamWithActivePeriod(ParamObject): def assert_valid_ttsim_pytree( - tree: Any, leaf_checker: GenericCallable, tree_name: str + tree: Any, # noqa: ANN401 + leaf_checker: Callable[..., Any], + tree_name: str, ) -> None: """ Recursively assert that a pytree meets the following conditions: @@ -160,7 +114,7 @@ def assert_valid_ttsim_pytree( ---------- tree : Any The tree to validate. - leaf_checker : GenericCallable + leaf_checker : Callable[..., Any] A function that takes a leaf and returns True if it is valid. tree_name : str The name of the tree (used for error messages). @@ -171,14 +125,14 @@ def assert_valid_ttsim_pytree( If any branch or leaf does not meet the expected requirements. """ - def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: + def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: # noqa: ANN401 def format_key_path(key_tuple: tuple[str, ...]) -> str: return "".join(f"[{k}]" for k in key_tuple) if not isinstance(subtree, dict): path_str = format_key_path(current_key) msg = format_errors_and_warnings( - f"{tree_name}{path_str} must be a dict, got {type(subtree)}." + f"{tree_name}{path_str} must be a dict, got {type(subtree)}.", ) raise TypeError(msg) @@ -187,7 +141,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: if not isinstance(key, str): msg = format_errors_and_warnings( f"Key {key} in {tree_name}{format_key_path(current_key)} must be a " - f"string but got {type(key)}." + f"string but got {type(key)}.", ) raise TypeError(msg) if isinstance(value, dict): @@ -196,16 +150,17 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: if not leaf_checker(value): msg = format_errors_and_warnings( f"Leaf at {tree_name}{format_key_path(new_key_path)} is " - f"invalid: got {value} of type {type(value)}." + f"invalid: got {value} of type {type(value)}.", ) raise TypeError(msg) _assert_valid_ttsim_pytree(tree, current_key=()) -def fail_if_active_periods_overlap( - orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, - orig_tree_with_params: FlatOrigParamSpecs, +@fail_or_warn_function() +def active_periods_overlap( + orig_policy_objects__column_objects_and_param_functions: FlatColumnObjectsParamFunctions, + orig_policy_objects__param_specs: FlatOrigParamSpecs, ) -> None: """Fail because active periods of objects / parameters overlap. @@ -220,24 +175,29 @@ def fail_if_active_periods_overlap( """ # Create mapping from leaf names to objects. overlap_checker: dict[ - tuple[str, ...], list[ColumnObject | ParamFunction | _ParamWithActivePeriod] + tuple[str, ...], + list[ColumnObject | ParamFunction | _ParamWithActivePeriod], ] = {} - for orig_path, obj in orig_tree_with_column_objects_and_param_functions.items(): + for ( + orig_path, + obj, + ) in orig_policy_objects__column_objects_and_param_functions.items(): path = (*orig_path[:-2], obj.leaf_name) if path in overlap_checker: overlap_checker[path].append(obj) else: overlap_checker[path] = [obj] - for orig_path, obj in orig_tree_with_params.items(): + for orig_path, obj in orig_policy_objects__param_specs.items(): path = (*orig_path[:-2], orig_path[-1]) if path in overlap_checker: overlap_checker[path].extend( - _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]) + _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]), ) else: overlap_checker[path] = _param_with_active_periods( - param_spec=obj, leaf_name=orig_path[-1] + param_spec=obj, + leaf_name=orig_path[-1], ) # Check for overlapping start and end dates for time-dependent functions. @@ -253,41 +213,44 @@ def fail_if_active_periods_overlap( ) -def fail_if_any_paths_are_invalid( +@fail_or_warn_function() +def any_paths_are_invalid( policy_environment: NestedPolicyEnvironment, - data_tree: NestedData, - targets_tree: NestedTargetDict, - top_level_namespace: set[str], + input_data__tree: NestedData, + targets__tree: NestedTargetDict, + labels__top_level_namespace: UnorderedQNames, ) -> None: """Thin wrapper around `dt.fail_if_paths_are_invalid`.""" return dt.fail_if_paths_are_invalid( functions=policy_environment, - data_tree=data_tree, - targets=targets_tree, - top_level_namespace=top_level_namespace, + data_tree=input_data__tree, + targets=targets__tree, + top_level_namespace=labels__top_level_namespace, ) -def fail_if_data_paths_are_missing_in_paths_to_column_names( - available_paths: list[str], - required_paths: list[str], +@fail_or_warn_function(include_if_all_elements_present=["results__df_with_mapper"]) +def paths_are_missing_in_targets_tree_mapper( + results__tree: NestedData, + targets__tree: NestedStrings, ) -> None: """Fail if the data paths are missing in the paths to column names.""" - missing_paths = [ - str(path) - for path in required_paths - if path not in available_paths and path != ("p_id",) - ] + paths_in_data = dt.flatten_to_tree_paths(results__tree) + paths_in_mapper = dt.flatten_to_tree_paths(targets__tree) + missing_paths = [str(p) for p in paths_in_mapper if p not in paths_in_data] if missing_paths: - msg = format_errors_and_warnings( - "Converting the nested data to a DataFrame failed because the following " - "paths are not mapped to a column name: " - f"{format_list_linewise(list(missing_paths))}" + msg = ( + format_errors_and_warnings( + "Converting the nested data to a DataFrame failed because the following " + "paths are not mapped to a column name: " + ) + + f"\n{format_list_linewise(list(missing_paths))}", ) raise ValueError(msg) -def fail_if_data_tree_is_invalid(data_tree: NestedData) -> None: +@fail_or_warn_function() +def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> None: """ Validate the basic structure of the data tree. @@ -297,7 +260,7 @@ def fail_if_data_tree_is_invalid(data_tree: NestedData) -> None: Parameters ---------- - data_tree + input_data__tree The data tree. Raises @@ -306,11 +269,14 @@ def fail_if_data_tree_is_invalid(data_tree: NestedData) -> None: If any of the above conditions is not met. """ assert_valid_ttsim_pytree( - tree=data_tree, - leaf_checker=lambda leaf: isinstance(leaf, int | pd.Series | np.ndarray), - tree_name="data_tree", + tree=input_data__tree, + leaf_checker=lambda leaf: isinstance( + leaf, + int | pd.Series | numpy.ndarray | xnp.ndarray, + ), + tree_name="input_data__tree", ) - p_id = data_tree.get("p_id", None) + p_id = input_data__tree.get("p_id", None) if p_id is None: raise ValueError("The input data must contain the `p_id` column.") @@ -333,21 +299,27 @@ def fail_if_data_tree_is_invalid(data_tree: NestedData) -> None: raise ValueError(message) -def fail_if_environment_is_invalid(policy_environment: NestedPolicyEnvironment) -> None: +@fail_or_warn_function() +def environment_is_invalid( + policy_environment: NestedPolicyEnvironment, +) -> None: """Validate that the environment is a pytree with supported types.""" assert_valid_ttsim_pytree( tree=policy_environment, leaf_checker=lambda leaf: isinstance( - leaf, ColumnObject | ParamFunction | ParamObject - ), + leaf, + ColumnObject | ParamFunction | ParamObject | ModuleType, + ) + or (isinstance(leaf, str) and leaf in ["numpy", "jax"]), tree_name="policy_environment", ) -def fail_if_foreign_keys_are_invalid_in_data( - qual_name_input_data: QualNameData, - qual_name_data: QualNameData, - flat_policy_environment_with_derived_functions_and_without_overridden_functions: QualNamePolicyEnvironment, +@fail_or_warn_function() +def foreign_keys_are_invalid_in_data( + labels__root_nodes: UnorderedQNames, + processed_data: QNameData, + specialized_environment__without_tree_logic_and_with_derived_functions: QNamePolicyEnvironment, ) -> None: """ Check that all foreign keys are valid. @@ -355,29 +327,28 @@ def fail_if_foreign_keys_are_invalid_in_data( Foreign keys must point to an existing `p_id` in the input data and must not refer to the `p_id` of the same row. - We need qual_name_data because we cannot guarantee that `p_id` is present in the + We need processed_data because we cannot guarantee that `p_id` is present in the input data. """ - - valid_ids = set(qual_name_data["p_id"].tolist()) | {-1} + valid_ids = set(processed_data["p_id"].tolist()) | {-1} relevant_objects = { k: v - for k, v in flat_policy_environment_with_derived_functions_and_without_overridden_functions.items() + for k, v in specialized_environment__without_tree_logic_and_with_derived_functions.items() if isinstance(v, PolicyInput | ColumnFunction) } for fk_name, fk in relevant_objects.items(): if fk.foreign_key_type == FKType.IRRELEVANT: continue - elif fk_name in qual_name_input_data: - path = dt.tree_path_from_qual_name(fk_name) + if fk_name in labels__root_nodes: + path = dt.tree_path_from_qname(fk_name) # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in qual_name_input_data[fk_name].tolist()): + if not all(i in valid_ids for i in processed_data[fk_name].tolist()): message = format_errors_and_warnings( f""" For {path}, the following are not a valid p_id in the input - data: {[i for i in qual_name_input_data[fk_name] if i not in valid_ids]}. - """ + data: {[i for i in processed_data[fk_name] if i not in valid_ids]}. + """, ) raise ValueError(message) @@ -385,8 +356,9 @@ def fail_if_foreign_keys_are_invalid_in_data( equal_to_pid_in_same_row = [ i for i, j in zip( - qual_name_input_data[fk_name].tolist(), - qual_name_data["p_id"].tolist(), + processed_data[fk_name].tolist(), + processed_data["p_id"].tolist(), + strict=False, ) if i == j ] @@ -395,12 +367,13 @@ def fail_if_foreign_keys_are_invalid_in_data( f""" For {path}, the following are equal to the p_id in the same row: {equal_to_pid_in_same_row}. - """ + """, ) raise ValueError(message) -def fail_if_group_ids_are_outside_top_level_namespace( +@fail_or_warn_function() +def group_ids_are_outside_top_level_namespace( policy_environment: NestedPolicyEnvironment, ) -> None: """Fail if group ids are outside the top level namespace.""" @@ -413,13 +386,15 @@ def fail_if_group_ids_are_outside_top_level_namespace( raise ValueError( "Group identifiers must live in the top-level namespace. Got:\n\n" f"{group_ids_outside_top_level_namespace}\n\n" - "To fix this error, move the group identifiers to the top-level namespace." + "To fix this error, move the group identifiers to the top-level namespace.", ) -def fail_if_group_variables_are_not_constant_within_groups( - qual_name_input_data: QualNameData, - grouping_levels: tuple[str, ...], +@fail_or_warn_function() +def group_variables_are_not_constant_within_groups( + labels__grouping_levels: OrderedQNames, + labels__root_nodes: UnorderedQNames, + processed_data: QNameData, ) -> None: """ Check that group variables are constant within each group. @@ -428,21 +403,21 @@ def fail_if_group_variables_are_not_constant_within_groups( ---------- data Dictionary of data. - groupings - The groupings available in the policy environment. + grouping_levels + The grouping levels available in the policy environment. """ faulty_data_columns = [] - for name, data_column in qual_name_input_data.items(): + for name in labels__root_nodes: group_by_id = get_name_of_group_by_id( target_name=name, - groupings=grouping_levels, + grouping_levels=labels__grouping_levels, ) - if group_by_id in qual_name_input_data: - group_by_id_series = pd.Series(qual_name_input_data[group_by_id]) - leaf_series = pd.Series(data_column) + if group_by_id in processed_data: + group_by_id_series = pd.Series(processed_data[group_by_id]) + leaf_series = pd.Series(processed_data[name]) unique_counts = leaf_series.groupby(group_by_id_series).nunique( - dropna=False + dropna=False, ) if not (unique_counts == 1).all(): faulty_data_columns.append(name) @@ -456,108 +431,209 @@ def fail_if_group_variables_are_not_constant_within_groups( {formatted} To fix this error, assign the same value to each group. - """ + """, ) raise ValueError(msg) -def fail_if_incompatible_objects_in_nested_data( - paths_to_data: QualNameData, +@fail_or_warn_function( + include_if_any_element_present=[ + "results__df_with_mapper", + "results_df__df_with_nested_columns", + ] +) +def non_convertible_objects_in_results_tree( + processed_data: QNameData, + results__tree: NestedData, + xnp: ModuleType, ) -> None: - """Fail if the nested data contains incompatible objects.""" - _numeric_types = (int, float, bool, np.integer, np.floating, np.bool_) - - faulty_paths = [] - for path, data in paths_to_data.items(): - if isinstance(data, (pd.Series, np.ndarray, list)): - if all(isinstance(item, _numeric_types) for item in data): - continue - else: - faulty_paths.append(str(path)) + """Fail if results should be converted to a DataFrame but contain non-convertible + objects. + """ + _numeric_types = (int, float, bool, xnp.integer, xnp.floating, xnp.bool_) + expected_object_length = len(next(iter(processed_data.values()))) + + paths_with_incorrect_types: list[str] = [] + paths_with_incorrect_length: list[str] = [] + for path, data in dt.flatten_to_tree_paths(results__tree).items(): + if isinstance(data, xnp.ndarray): + if len(data) not in {1, expected_object_length}: + paths_with_incorrect_length.append(str(path)) elif isinstance(data, _numeric_types): continue else: - faulty_paths.append(str(path)) - if faulty_paths: - msg = format_errors_and_warnings( - "The data returned contains objects that cannot be cast to " - "a pandas.DataFrame column. Make sure that the requested targets return " - "scalars (int, bool, float - or their numpy equivalents) only." - "The following paths contain non-scalar objects: " - f"{format_list_linewise(faulty_paths)}" + paths_with_incorrect_types.append(str(path)) + + if paths_with_incorrect_types: + msg = ( + format_errors_and_warnings( + "The data contains objects that cannot be cast to a pandas.DataFrame " + "column. Make sure that the requested targets return scalars or arrays of " + "scalars only. The following paths contain incompatible objects: " + ) + + f"\n{format_list_linewise(paths_with_incorrect_types)}" ) raise TypeError(msg) + if paths_with_incorrect_length: + msg = ( + format_errors_and_warnings( + "The data contains paths that don't have the same length as the input data " + "and are not scalars. The following paths are faulty: " + ) + + f"\n{format_list_linewise(paths_with_incorrect_length)}" + ) + raise ValueError(msg) -def fail_if_multiple_time_units_for_same_base_name_and_group( - base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], +@fail_or_warn_function() +def input_df_has_bool_or_numeric_column_names( + input_data__df_and_mapper__df: pd.DataFrame, ) -> None: - invalid = { - b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 - } - if invalid: - raise ValueError(f"Multiple time units for base names: {invalid}") + """Fail if the DataFrame has bool or numeric column names.""" + common_msg = format_errors_and_warnings( + """DataFrame column names cannot be booleans or numbers. This restriction + prevents ambiguity between actual column references and values intended for + broadcasting. + """, + ) + bool_column_names = [ + col for col in input_data__df_and_mapper__df.columns if isinstance(col, bool) + ] + numeric_column_names = [ + col + for col in input_data__df_and_mapper__df.columns + if isinstance(col, (int, float)) or (isinstance(col, str) and col.isnumeric()) + ] + + if bool_column_names or numeric_column_names: + msg = format_errors_and_warnings( + f""" + {common_msg} + + Boolean column names: {bool_column_names}. + Numeric column names: {numeric_column_names}. + """, + ) + raise ValueError(msg) -def fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( - functions_tree: NestedColumnObjectsParamFunctions, +@fail_or_warn_function() +def input_df_mapper_columns_missing_in_df( + input_data__df_and_mapper__df: pd.DataFrame, + input_data__df_and_mapper__mapper: NestedStrings, ) -> None: - """Raise error if a PolicyFunction does not have the same leaf name as the last - branch element of the tree path. - """ + """Fail if the input mapper has columns that are not in the input dataframe.""" + mapper_vals = dt.flatten_to_qnames(input_data__df_and_mapper__mapper).values() + missing_columns = [ + col for col in mapper_vals if col not in input_data__df_and_mapper__df.columns + ] + if missing_columns: + msg = format_errors_and_warnings( + "All columns in the input mapper must be present in the input dataframe. " + f"The following columns are missing: {missing_columns}", + ) + raise ValueError(msg) - for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): - if tree_path[-1] != function.leaf_name: - raise KeyError( - f""" - The name of the last branch element of the functions tree must be the - same as the leaf name of the PolicyFunction. The tree path {tree_path} - is not compatible with the PolicyFunction {function.leaf_name}. - """ - ) +@fail_or_warn_function() +def input_df_mapper_has_incorrect_format( + input_data__df_and_mapper__mapper: NestedStrings, +) -> None: + """Fail if the input tree to column name mapping has an incorrect format.""" + if not isinstance(input_data__df_and_mapper__mapper, dict): + msg = format_errors_and_warnings( + """The inputs tree to column mapping must be a (nested) dictionary. Call + `dags.tree.create_tree_with_input_types` to create a template.""", + ) + raise TypeError(msg) + + non_string_paths = [ + str(path) + for path in optree.tree_paths( + input_data__df_and_mapper__mapper, # type: ignore[arg-type] + none_is_leaf=True, + ) + if not all(isinstance(part, str) for part in path) + ] + if non_string_paths: + msg = format_errors_and_warnings( + f"""All path elements of `inputs_tree_to_df_columns` must be strings. + Found the following paths that contain non-string elements: + + {format_list_linewise(non_string_paths)} + + Call `dags.tree.create_tree_with_input_types` to create a template. + """, + ) + raise TypeError(msg) + + incorrect_types = { + k: type(v) + for k, v in dt.flatten_to_qnames(input_data__df_and_mapper__mapper).items() + if not isinstance(v, str | int | float | bool) + } + if incorrect_types: + formatted_incorrect_types = "\n".join( + f" - {k}: {v.__name__}" for k, v in incorrect_types.items() + ) + msg = format_errors_and_warnings( + f"""Values of the input tree to column mapping must be strings, integers, + floats, or Booleans. + Found the following incorrect types: + + {formatted_incorrect_types} + """, + ) + raise TypeError(msg) -def fail_if_root_nodes_are_missing( - tax_transfer_dag: nx.DiGraph, - qual_name_data: QualNameData, + +@fail_or_warn_function() +def root_nodes_are_missing( + specialized_environment__tax_transfer_dag: nx.DiGraph, + specialized_environment__with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + processed_data: QNameData, ) -> None: """Fail if root nodes are missing. Parameters ---------- - tax_transfer_dag + specialized_environment__tax_transfer_dag The DAG of taxes and transfers functions. - qual_name_data - The data tree in qualified name representation. + processed_data + The processed data to be used as an input to the taxes & transfers function. Raises ------ ValueError If root nodes are missing. """ - # Obtain root nodes root_nodes = nx.subgraph_view( - tax_transfer_dag, filter_node=lambda n: tax_transfer_dag.in_degree(n) == 0 + specialized_environment__tax_transfer_dag, + filter_node=lambda n: specialized_environment__tax_transfer_dag.in_degree(n) + == 0, ).nodes missing_nodes = [ node for node in root_nodes - if node not in qual_name_data and not node.endswith("_num_segments") + if node not in processed_data + # Catches policy functions which do not take arguments. + and node not in specialized_environment__with_partialled_params_and_scalars ] if missing_nodes: formatted = format_list_linewise( - [str(dt.tree_path_from_qual_name(mn)) for mn in missing_nodes] + [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes], ) raise ValueError(f"The following data columns are missing.\n{formatted}") -def fail_if_targets_are_not_in_policy_environment_or_data( - policy_environment: QualNamePolicyEnvironment, - qual_name_data_columns: QualNameDataColumns, - qual_name_targets: QualNameTargetList, +@fail_or_warn_function() +def targets_are_not_in_specialized_environment_or_data( + specialized_environment__without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, + labels__processed_data_columns: QNameDataColumns, + targets__qname: OrderedQNames, ) -> None: """Fail if some target is not among functions. @@ -565,7 +641,7 @@ def fail_if_targets_are_not_in_policy_environment_or_data( ---------- functions Dictionary containing functions to build the DAG. - qual_name_data_columns + labels__processed_data_columns The columns which are available in the data tree. targets The targets which should be computed. They limit the DAG in the way that only @@ -577,27 +653,28 @@ def fail_if_targets_are_not_in_policy_environment_or_data( Raised if any member of `targets` is not among functions. """ - targets_not_in_policy_environment_or_data = [ - str(dt.tree_path_from_qual_name(n)) - for n in qual_name_targets - if n not in policy_environment and n not in qual_name_data_columns + missing_targets = [ + str(dt.tree_path_from_qname(n)) + for n in targets__qname + if n + not in specialized_environment__without_tree_logic_and_with_derived_functions + and n not in labels__processed_data_columns ] - if targets_not_in_policy_environment_or_data: - formatted = format_list_linewise(targets_not_in_policy_environment_or_data) - msg = format_errors_and_warnings( - f"The following targets have no corresponding function:\n\n{formatted}" - ) + if missing_targets: + formatted = format_list_linewise(missing_targets) + msg = f"The following targets have no corresponding function:\n\n{formatted}" raise ValueError(msg) -def fail_if_targets_tree_is_invalid(targets_tree: NestedTargetDict) -> None: +@fail_or_warn_function() +def targets_tree_is_invalid(targets__tree: NestedTargetDict) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. """ assert_valid_ttsim_pytree( - tree=targets_tree, + tree=targets__tree, leaf_checker=lambda leaf: isinstance(leaf, (None | str)), - tree_name="targets_tree", + tree_name="targets__tree", ) @@ -626,9 +703,7 @@ def format_errors_and_warnings(text: str, width: int = 79) -> str: wrapped_paragraph = textwrap.fill(dedented_paragraph, width=width) wrapped_paragraphs.append(wrapped_paragraph) - formatted_text = "\n\n".join(wrapped_paragraphs) - - return formatted_text + return "\n\n".join(wrapped_paragraphs) def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, unused-ignore] @@ -638,29 +713,10 @@ def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, [ "{formatted_list}", ] - """ + """, ).format(formatted_list=formatted_list) -def warn_if_functions_and_data_columns_overlap( - policy_environment: NestedPolicyEnvironment, - qual_name_data_columns: QualNameDataColumns, -) -> None: - """Warn if functions are overridden by data.""" - overridden_elements = sorted( - { - col - for col in qual_name_data_columns - if col in dt.flatten_to_qual_names(policy_environment) - } - ) - if len(overridden_elements) > 0: - warnings.warn( - FunctionsAndDataColumnsOverlapWarning(overridden_elements), - stacklevel=3, - ) - - def _param_with_active_periods( param_spec: OrigParamSpec, leaf_name: str, @@ -701,7 +757,7 @@ def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, A end_date=end_date, original_function_name=leaf_name, **params_header, - ) + ), ) start_date = None end_date = date - datetime.timedelta(days=1) @@ -713,7 +769,7 @@ def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, A start_date=start_date, end_date=end_date, **params_header, - ) + ), ) return out diff --git a/src/ttsim/interface_dag_elements/input_data.py b/src/ttsim/interface_dag_elements/input_data.py new file mode 100644 index 0000000000..48645ad065 --- /dev/null +++ b/src/ttsim/interface_dag_elements/input_data.py @@ -0,0 +1,98 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.data_converters import ( + df_with_mapped_columns_to_nested_data, + df_with_nested_columns_to_nested_data, +) +from ttsim.interface_dag_elements.interface_node_objects import ( + InterfaceFunctionVariant, + input_dependent_interface_function, + interface_function, + interface_input, +) + +if TYPE_CHECKING: + from types import ModuleType + + import pandas as pd + + from ttsim.interface_dag_elements.typing import ( + FlatData, + NestedData, + NestedInputsMapper, + ) + + +def _mapped_df_to_nested_data( + input_data__df_and_mapper__df: pd.DataFrame, + input_data__df_and_mapper__mapper: NestedInputsMapper, + xnp: ModuleType, +) -> NestedData: + return df_with_mapped_columns_to_nested_data( + df=input_data__df_and_mapper__df, + mapper=input_data__df_and_mapper__mapper, + xnp=xnp, + ) + + +def _df_with_nested_columns_to_nested_data( + input_data__df_with_nested_columns: pd.DataFrame, + xnp: ModuleType, +) -> NestedData: + return df_with_nested_columns_to_nested_data( + df=input_data__df_with_nested_columns, + xnp=xnp, + ) + + +@interface_input() +def df_and_mapper__df() -> pd.DataFrame: + pass + + +@interface_input() +def df_and_mapper__mapper() -> NestedInputsMapper: + pass + + +@interface_input() +def df_with_nested_columns() -> pd.DataFrame: + pass + + +@input_dependent_interface_function( + variants=[ + InterfaceFunctionVariant( + required_input_qnames=["input_data__df_with_nested_columns"], + function=_df_with_nested_columns_to_nested_data, + ), + InterfaceFunctionVariant( + required_input_qnames=[ + "input_data__df_and_mapper__df", + "input_data__df_and_mapper__mapper", + ], + function=_mapped_df_to_nested_data, + ), + ] +) +def tree() -> NestedData: + pass + + +@interface_function() +def flat(tree: NestedData) -> FlatData: + """The input DataFrame as a flattened data structure. + + Args: + tree: + The input tree. + + Returns + ------- + Mapping of tree paths to input data. + """ + return dt.flatten_to_tree_paths(tree) diff --git a/src/ttsim/interface_dag_elements/interface_node_objects.py b/src/ttsim/interface_dag_elements/interface_node_objects.py new file mode 100644 index 0000000000..1b63d8fb20 --- /dev/null +++ b/src/ttsim/interface_dag_elements/interface_node_objects.py @@ -0,0 +1,373 @@ +from __future__ import annotations + +import inspect +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Generic, ParamSpec, TypeVar + +import dags.tree as dt + +if TYPE_CHECKING: + from collections.abc import Callable, Iterable + + from ttsim.interface_dag_elements.typing import UnorderedQNames + + +FunArgTypes = ParamSpec("FunArgTypes") +ReturnType = TypeVar("ReturnType") + + +@dataclass(frozen=True) +class InterfaceNodeObject: + """Base class for all objects operating on columns of data. + + Examples + -------- + - PolicyInputs + - PolicyFunctions + - GroupCreationFunctions + - AggByGroupFunctions + - AggByPIDFunctions + - TimeConversionFunctions + + Parameters are not ColumnObjectParamFunctions. + + """ + + leaf_name: str + in_top_level_namespace: bool + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: UnorderedQNames, + ) -> InterfaceNodeObject: + """Remove tree logic from the function and update the function signature.""" + raise NotImplementedError("Subclasses must implement this method.") + + +@dataclass(frozen=True) +class InterfaceInput(InterfaceNodeObject): + """A dummy function representing an input node.""" + + return_type: type + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], # noqa: ARG002 + top_level_namespace: UnorderedQNames, # noqa: ARG002 + ) -> InterfaceInput: + return self + + +def interface_input( + in_top_level_namespace: bool = False, +) -> Callable[[Callable[..., Any]], InterfaceInput]: + """ + Decorator that makes a (dummy) function an `InterfaceInput`. + + Returns + ------- + A decorator that returns an InterfaceInput object. + """ + + def inner(func: Callable[..., Any]) -> InterfaceInput: + return InterfaceInput( + leaf_name=func.__name__, + in_top_level_namespace=in_top_level_namespace, + return_type=func.__annotations__["return"], + ) + + return inner + + +def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable[..., Any]) -> None: + """Update a frozen wrapper dataclass to look like the wrapped function. + + This is necessary because the wrapper is a frozen dataclass, so we cannot + use the `functools.update_wrapper` function or `self.__signature__ = ...` + assignments in the `__post_init__` method. + + Args: + wrapper: The wrapper dataclass to update. + wrapped: The function to update the wrapper to. + + """ + object.__setattr__(wrapper, "__signature__", inspect.signature(wrapped)) + + WRAPPER_ASSIGNMENTS = ( # noqa: N806 + "__globals__", + "__closure__", + "__doc__", + "__name__", + "__QName__", + "__module__", + "__annotations__", + "__type_params__", + ) + for attr in WRAPPER_ASSIGNMENTS: + if hasattr(wrapped, attr): + object.__setattr__(wrapper, attr, getattr(wrapped, attr)) + + getattr(wrapper, "__dict__", {}).update(getattr(wrapped, "__dict__", {})) + + +@dataclass(frozen=True) +class InterfaceFunction(InterfaceNodeObject, Generic[FunArgTypes, ReturnType]): + """ + Base class for all functions operating on columns of data. + """ + + function: Callable[FunArgTypes, ReturnType] + + def __post_init__(self) -> None: + # Expose the signature of the wrapped function for dependency resolution + _frozen_safe_update_wrapper(self, self.function) + + def __call__( + self, + *args: FunArgTypes.args, + **kwargs: FunArgTypes.kwargs, + ) -> ReturnType: + return self.function(*args, **kwargs) + + @property + def dependencies(self) -> UnorderedQNames: + """The names of input variables that the function depends on.""" + return set(inspect.signature(self).parameters) + + @property + def original_function_name(self) -> str: + """The name of the wrapped function.""" + return self.function.__name__ + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: UnorderedQNames, + ) -> InterfaceFunction: # type: ignore[type-arg] + """Remove tree logic from the function and update the function signature.""" + return InterfaceFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + in_top_level_namespace=self.in_top_level_namespace, + ) + + +def interface_function( + *, + leaf_name: str | None = None, + in_top_level_namespace: bool = False, +) -> Callable[[Callable[..., Any]], InterfaceFunction[..., Any]]: + """ + Decorator that makes an `InterfaceFunction` from a function. + + Parameters + ---------- + leaf_name + The name that should be used as the PolicyFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. + in_top_level_namespace: + Whether the function is in the top-level namespace of the interface-DAG. + + Returns + ------- + A decorator that returns an InterfaceFunction object. + """ + + def inner(func: Callable[..., Any]) -> InterfaceFunction: # type: ignore[type-arg] + return InterfaceFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + in_top_level_namespace=in_top_level_namespace, + ) + + return inner + + +@dataclass(frozen=True) +class InputDependentInterfaceFunction(InterfaceFunction[FunArgTypes, ReturnType]): + """A function that dynamically changes its behavior based on which InterfaceInput + nodes are given by the user.""" + + specs: list[InterfaceFunctionVariant] + + def resolve_to_static_interface_function( + self, user_input_qnames: list[str] + ) -> ( + InterfaceFunction[FunArgTypes, ReturnType] + | InputDependentInterfaceFunction[FunArgTypes, ReturnType] + ): + """Generate a static function based on the user inputs.""" + _fail_if_more_than_one_function_variant_matches_inputs( + specs=self.specs, + user_input_qnames=user_input_qnames, + ) + matching_variant = None + for spec in self.specs: + if set(spec.required_input_qnames) <= set(user_input_qnames): + matching_variant = spec + break + + if matching_variant: + return InterfaceFunction( + leaf_name=self.leaf_name, + function=matching_variant.function, + in_top_level_namespace=self.in_top_level_namespace, + ) + return self + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], # noqa: ARG002 + top_level_namespace: UnorderedQNames, # noqa: ARG002 + ) -> InputDependentInterfaceFunction[FunArgTypes, ReturnType]: + return self + + +def input_dependent_interface_function( + *, + variants: list[InterfaceFunctionVariant], + leaf_name: str | None = None, + in_top_level_namespace: bool = False, +) -> Callable[ + [Callable[..., Any]], InputDependentInterfaceFunction[FunArgTypes, ReturnType] +]: + """ + Decorator that makes an `InputDependentInterfaceFunction` from a function. + + Parameters + ---------- + variants + List of function variants that define different behaviors based on input + availability. + leaf_name + The name that should be used as the function's leaf name in the DAG. If omitted, + we use the name of the function as defined. + in_top_level_namespace + Whether the function is in the top-level namespace of the interface-DAG. + + Returns + ------- + A decorator that returns an InputDependentInterfaceFunction object. + """ + + def inner( + func: Callable[..., Any], + ) -> InputDependentInterfaceFunction[FunArgTypes, ReturnType]: + return InputDependentInterfaceFunction( + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + in_top_level_namespace=in_top_level_namespace, + specs=variants, + ) + + return inner + + +@dataclass(frozen=True) +class InterfaceFunctionVariant: + required_input_qnames: list[str] + function: Callable[..., Any] + + +def _fail_if_more_than_one_function_variant_matches_inputs( + specs: list[InterfaceFunctionVariant], + user_input_qnames: list[str], +) -> None: + """Validate that not more than one function variant matches the provided user + inputs. + + This function ensures that the user has provided the correct combination of inputs + to uniquely determine which function variant should be used. + """ + potential_qnames = [spec.required_input_qnames for spec in specs] + qnames_from_user_satisfying_specs = [ + spec.required_input_qnames + for spec in specs + if set(spec.required_input_qnames) <= set(user_input_qnames) + ] + + if len(qnames_from_user_satisfying_specs) > 1: + potential_qnames_str = "\n".join( + [f"[{', '.join(s)}]" for s in potential_qnames] + ) + qnames_from_user_str = "\n".join( + [f"[{', '.join(s)}]" for s in qnames_from_user_satisfying_specs] + ) + msg = ( + "Exactly one of the following sets of inputs is required:\n\n" + f"{potential_qnames_str}" + "\n\n" + "Multiple sets of inputs were found that satisfy the requirements:\n\n" + f"{qnames_from_user_str}" + "\n\n" + "Please provide only one of these." + ) + raise ValueError(msg) + + +@dataclass(frozen=True) +class FailOrWarnFunction(InterfaceFunction): # type: ignore[type-arg] + """ + Base class for all functions operating on columns of data. + """ + + include_if_any_element_present: Iterable[str] + include_if_all_elements_present: Iterable[str] + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: UnorderedQNames, + ) -> FailOrWarnFunction: + """Remove tree logic from the function and update the function signature.""" + return FailOrWarnFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + in_top_level_namespace=self.in_top_level_namespace, + include_if_any_element_present=self.include_if_any_element_present, + include_if_all_elements_present=self.include_if_all_elements_present, + ) + + +def fail_or_warn_function( + *, + include_if_any_element_present: Iterable[str] = (), + include_if_all_elements_present: Iterable[str] = (), + leaf_name: str | None = None, + in_top_level_namespace: bool = False, +) -> Callable[[Callable[..., Any]], FailOrWarnFunction]: + """ + Decorator that makes an `InterfaceFunction` from a function. + + Parameters + ---------- + leaf_name + The name that should be used as the PolicyFunction's leaf name in the DAG. If + omitted, we use the name of the function as defined. + in_top_level_namespace: + Whether the function is in the top-level namespace of the interface-DAG. + + Returns + ------- + A decorator that returns an InterfaceFunction object. + """ + + def inner(func: Callable[..., Any]) -> FailOrWarnFunction: + return FailOrWarnFunction( + include_if_any_element_present=include_if_any_element_present, + include_if_all_elements_present=include_if_all_elements_present, + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + in_top_level_namespace=in_top_level_namespace, + ) + + return inner diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py new file mode 100644 index 0000000000..0ab8feba84 --- /dev/null +++ b/src/ttsim/interface_dag_elements/labels.py @@ -0,0 +1,206 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt +import networkx as nx + +from ttsim.interface_dag_elements.automatically_added_functions import ( + TIME_UNIT_LABELS, +) +from ttsim.interface_dag_elements.interface_node_objects import interface_function +from ttsim.interface_dag_elements.shared import ( + get_base_name_and_grouping_suffix, + get_re_pattern_for_all_time_units_and_groupings, + group_pattern, +) +from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + NestedPolicyEnvironment, + OrderedQNames, + QNameData, + QNameSpecializedEnvironment0, + UnorderedQNames, + ) + + +@interface_function() +def grouping_levels( + policy_environment: NestedPolicyEnvironment, +) -> OrderedQNames: + """The grouping levels of the policy environment.""" + return tuple( + name.rsplit("_", 1)[0] + for name in policy_environment + if name.endswith("_id") and name != "p_id" + ) + + +@interface_function() +def top_level_namespace( + policy_environment: NestedPolicyEnvironment, + grouping_levels: OrderedQNames, +) -> UnorderedQNames: + """Get the top level namespace. + + Parameters + ---------- + policy_environment: + The policy environment. + + + Returns + ------- + top_level_namespace: + The top level namespace. + """ + time_units = tuple(TIME_UNIT_LABELS) + direct_top_level_names = set(policy_environment) + + # Do not create variations for lower-level namespaces. + top_level_objects_for_variations = direct_top_level_names - { + k for k, v in policy_environment.items() if isinstance(v, dict) + } + + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + time_units=time_units, + grouping_levels=grouping_levels, + ) + bngs_to_variations = {} + all_top_level_names = direct_top_level_names.copy() + for name in top_level_objects_for_variations: + match = pattern_all.fullmatch(name) + # We must not find multiple time units for the same base name and group. + bngs = get_base_name_and_grouping_suffix(match) + if match.group("time_unit"): + if bngs not in bngs_to_variations: + bngs_to_variations[bngs] = [name] + else: + bngs_to_variations[bngs].append(name) + for time_unit in time_units: + all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") + fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) + + gp = group_pattern(grouping_levels) + potential_base_names = {n for n in all_top_level_names if not gp.match(n)} + + for name in potential_base_names: + for g in grouping_levels: + all_top_level_names.add(f"{name}_{g}") + + return all_top_level_names + + +@interface_function() +def processed_data_columns(processed_data: QNameData) -> UnorderedQNames: + """The (qualified) column names in the processed data.""" + return set(processed_data.keys()) + + +@interface_function() +def input_columns( + processed_data_columns: UnorderedQNames, + policy_environment: NestedPolicyEnvironment, +) -> UnorderedQNames: + """The (qualified) column names in the processed data or policy environment. + + Parameters + ---------- + processed_data_columns: + The column names in the processed data. + policy_environment: + The policy environment. The qualified names of the PolicyInput elements will + be returned if the processed_data_columns are empty. + + Returns + ------- + input_columns: + The (qualified) column names in the processed data or policy environment. + """ + if not processed_data_columns: + return { + k + for k, v in dt.flatten_to_qnames(policy_environment).items() + if isinstance(v, PolicyInput) + } + return processed_data_columns + + +@interface_function() +def root_nodes( + specialized_environment__tax_transfer_dag: nx.DiGraph, + processed_data_columns: UnorderedQNames, +) -> UnorderedQNames: + """Names of the columns in `processed_data` required for the tax transfer function. + + Parameters + ---------- + specialized_environment__tax_transfer_dag: + The tax transfer DAG. + processed_data: + The processed data. + + Returns + ------- + The names of the columns in `processed_data` required for the tax transfer function. + + """ + # Obtain root nodes + root_nodes = nx.subgraph_view( + specialized_environment__tax_transfer_dag, + filter_node=lambda n: specialized_environment__tax_transfer_dag.in_degree(n) + == 0, + ).nodes + + # Restrict the passed data to the subset that is actually used. + return {k for k in processed_data_columns if k in root_nodes} + + +def fail_if_multiple_time_units_for_same_base_name_and_group( + base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], +) -> None: + invalid = { + b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 + } + if invalid: + raise ValueError(f"Multiple time units for base names: {invalid}") + + +@interface_function() +def column_targets( + specialized_environment__with_partialled_params_and_scalars: UnorderedQNames, + targets__qname: OrderedQNames, +) -> OrderedQNames: + """All targets that are column functions.""" + return [ + t + for t in targets__qname + if t in specialized_environment__with_partialled_params_and_scalars + ] + + +@interface_function() +def param_targets( + specialized_environment__without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, # noqa: E501 + targets__qname: OrderedQNames, + column_targets: OrderedQNames, +) -> OrderedQNames: + possible_targets = set(targets__qname) - set(column_targets) + return [ + t + for t in targets__qname + if t in possible_targets + and t in specialized_environment__without_tree_logic_and_with_derived_functions + ] + + +@interface_function() +def input_data_targets( + targets__qname: OrderedQNames, + column_targets: OrderedQNames, + param_targets: OrderedQNames, +) -> OrderedQNames: + possible_targets = set(targets__qname) - set(column_targets) - set(param_targets) + return [t for t in targets__qname if t in possible_targets] diff --git a/src/ttsim/loader.py b/src/ttsim/interface_dag_elements/orig_policy_objects.py similarity index 71% rename from src/ttsim/loader.py rename to src/ttsim/interface_dag_elements/orig_policy_objects.py index 6b015e2f23..befadda1f2 100644 --- a/src/ttsim/loader.py +++ b/src/ttsim/interface_dag_elements/orig_policy_objects.py @@ -7,20 +7,34 @@ import yaml -from ttsim.column_objects_param_function import ColumnObject, ParamFunction +from ttsim.interface_dag_elements.interface_node_objects import ( + interface_function, + interface_input, +) +from ttsim.tt_dag_elements.column_objects_param_function import ( + ColumnObject, + ParamFunction, + policy_input, +) if TYPE_CHECKING: from pathlib import Path from types import ModuleType - from ttsim.typing import ( + from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, OrigParamSpec, ) -def orig_tree_with_column_objects_and_param_functions( +@interface_input() +def root() -> Path: + """The root directory of the policy environment's elements.""" + + +@interface_function() +def column_objects_and_param_functions( root: Path, ) -> FlatColumnObjectsParamFunctions: """ @@ -35,13 +49,54 @@ def orig_tree_with_column_objects_and_param_functions( root: The resource directory to load the ColumnObjectParamFunctions tree from. """ - return { + + @policy_input() + def backend() -> Literal["numpy", "jax"]: + """The backend to use for computations.""" + + @policy_input() + def num_segments() -> int: + """The number of segments for segment sums in jax.""" + + out = { k: v for path in _find_files_recursively(root=root, suffix=".py") for k, v in _tree_path_to_orig_column_objects_params_functions( - path=path, root=root + path=path, + root=root, ).items() } + # Add backend so we can decide between numpy and jax for aggregation functions + assert "backend" not in out + out[("backend",)] = backend + + # Add num_segments for segment sums in jax. + assert "num_segments" not in out + out[("num_segments",)] = num_segments + + return out + + +@interface_function() +def param_specs(root: Path) -> FlatOrigParamSpecs: + """ + Load the original contents of yaml files found in *root*. + + "Original" means: + - Module names are not removed from the path. + - The outermost key in each yaml file becomes the leaf name of the tree path. + Beyond that, the contents of the yaml files are not parsed. + + Parameters + ---------- + root: + The resource directory to load the parameter specifications from. + """ + return { + k: v + for path in _find_files_recursively(root=root, suffix=".yaml") + for k, v in _tree_path_to_orig_yaml_object(path=path, root=root).items() + } def _find_files_recursively(root: Path, suffix: Literal[".py", ".yaml"]) -> list[Path]: @@ -66,7 +121,8 @@ def _find_files_recursively(root: Path, suffix: Literal[".py", ".yaml"]) -> list def _tree_path_to_orig_column_objects_params_functions( - path: Path, root: Path + path: Path, + root: Path, ) -> FlatColumnObjectsParamFunctions: """Extract all active PolicyFunctions and GroupByFunctions from a module. @@ -81,7 +137,7 @@ def _tree_path_to_orig_column_objects_params_functions( ------- A flat tree of ColumnObjectParamFunctions. """ - module = _load_module(path=path, root=root) + module = load_module(path=path, root=root) tree_path = path.relative_to(root).parts return { (*tree_path, name): obj @@ -90,7 +146,7 @@ def _tree_path_to_orig_column_objects_params_functions( } -def _load_module(path: Path, root: Path) -> ModuleType: +def load_module(path: Path, root: Path) -> ModuleType: name = path.relative_to(root).with_suffix("").as_posix().replace("/", ".") spec = importlib.util.spec_from_file_location(name=name, location=path) # Assert that spec is not None and spec.loader is not None, required for mypy @@ -105,27 +161,6 @@ def _load_module(path: Path, root: Path) -> ModuleType: return module -def orig_tree_with_params(root: Path) -> FlatOrigParamSpecs: - """ - Load the original contents of yaml files found in *root*. - - "Original" means: - - Module names are not removed from the path. - - The contents of the yaml files are not parsed, just the outermost key becomes part - of the tree path - - Parameters - ---------- - root: - The resource directory to load the ColumnObjectParamFunctions tree from. - """ - return { - k: v - for path in _find_files_recursively(root=root, suffix=".yaml") - for k, v in _tree_path_to_orig_yaml_object(path=path, root=root).items() - } - - def _tree_path_to_orig_yaml_object(path: Path, root: Path) -> FlatOrigParamSpecs: """Extract all active PolicyFunctions and GroupByFunctions from a module. diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py new file mode 100644 index 0000000000..5474386762 --- /dev/null +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -0,0 +1,284 @@ +from __future__ import annotations + +import copy +import datetime +from typing import TYPE_CHECKING, Any, Literal + +import dags.tree as dt +import numpy + +from ttsim.interface_dag_elements.interface_node_objects import interface_function +from ttsim.interface_dag_elements.shared import ( + merge_trees, + to_datetime, + upsert_tree, +) +from ttsim.tt_dag_elements import ( + ConsecutiveInt1dLookupTableParam, + DictParam, + ParamObject, + PiecewisePolynomialParam, + RawParam, + ScalarParam, + get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_2d_lookup_table_param_value, + get_month_based_phase_inout_of_age_thresholds_param_value, + get_year_based_phase_inout_of_age_thresholds_param_value, +) +from ttsim.tt_dag_elements.column_objects_param_function import ( + DEFAULT_END_DATE, +) +from ttsim.tt_dag_elements.piecewise_polynomial import get_piecewise_parameters + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import ( + DashedISOString, + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + NestedColumnObjectsParamFunctions, + NestedParamObjects, + NestedPolicyEnvironment, + OrigParamSpec, + ) + + +@interface_function(in_top_level_namespace=True) +def policy_environment( + orig_policy_objects__column_objects_and_param_functions: NestedColumnObjectsParamFunctions, # noqa: E501 + orig_policy_objects__param_specs: FlatOrigParamSpecs, + date: datetime.date | DashedISOString, + backend: Literal["numpy", "jax"], + xnp: ModuleType, + dnp: ModuleType, +) -> NestedPolicyEnvironment: + """ + Set up the policy environment for a particular date. + + Parameters + ---------- + root + The directory to load the policy environment from. + date + The date for which the policy system is set up. An integer is + interpreted as the year. + + Returns + ------- + The policy environment for the specified date. + """ + # Check policy date for correct format and convert to datetime.date + date = to_datetime(date) + + a_tree = merge_trees( + left=_active_column_objects_and_param_functions( + orig=orig_policy_objects__column_objects_and_param_functions, + date=date, + ), + right=_active_param_objects( + orig=orig_policy_objects__param_specs, + date=date, + xnp=xnp, + ), + ) + + assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" + a_tree["evaluationsjahr"] = ScalarParam( + leaf_name="evaluationsjahr", + start_date=date, + end_date=date, + value=date.year, + name={"de": "Evaluationsjahr. Implementation wird noch verbessert."}, + description={"de": "Der Zeitpunkt, für den die Berechnung durchgeführt wird."}, + unit="Year", + reference_period=None, + note=None, + reference=None, + ) + a_tree["backend"] = backend + a_tree["xnp"] = xnp + a_tree["dnp"] = dnp + return a_tree + + +def _active_column_objects_and_param_functions( + orig: FlatColumnObjectsParamFunctions, + date: datetime.date, +) -> NestedColumnObjectsParamFunctions: + """ + Traverse `root` and return all ColumnObjectParamFunctions for a given date. + + Parameters + ---------- + root: + The directory to traverse. + date: + The date for which policy objects should be loaded. + + Returns + ------- + A tree of active ColumnObjectParamFunctions. + """ + flat_objects_tree = { + (*orig_path[:-2], obj.leaf_name): obj + for orig_path, obj in orig.items() + if obj.is_active(date) + } + + return dt.unflatten_from_tree_paths(flat_objects_tree) + + +def _active_param_objects( + orig: FlatOrigParamSpecs, + date: datetime.date, + xnp: ModuleType, +) -> NestedParamObjects: + """Parse the original yaml tree.""" + flat_tree_with_params = {} + for orig_path, orig_params_spec in orig.items(): + path_to_keep = orig_path[:-2] + leaf_name = orig_path[-1] + param = _get_one_param( + leaf_name=leaf_name, + spec=orig_params_spec, + date=date, + xnp=xnp, + ) + if param is not None: + flat_tree_with_params[(*path_to_keep, leaf_name)] = param + if orig_params_spec.get("add_jahresanfang", False): + date_jan1 = date.replace(month=1, day=1) + leaf_name_jan1 = f"{leaf_name}_jahresanfang" + param = _get_one_param( + leaf_name=leaf_name_jan1, + spec=orig_params_spec, + date=date_jan1, + xnp=xnp, + ) + if param is not None: + flat_tree_with_params[(*path_to_keep, leaf_name_jan1)] = param + return dt.unflatten_from_tree_paths(flat_tree_with_params) + + +def _get_one_param( # noqa: PLR0911 + leaf_name: str, + spec: OrigParamSpec, + date: datetime.date, + xnp: ModuleType, +) -> ParamObject: + """Parse the original specification found in the yaml tree to a ParamObject.""" + cleaned_spec = _clean_one_param_spec(leaf_name=leaf_name, spec=spec, date=date) + + if cleaned_spec is None: + return None + if spec["type"] == "scalar": + return ScalarParam(**cleaned_spec) + if spec["type"] == "dict": + return DictParam(**cleaned_spec) + if spec["type"].startswith("piecewise_"): + cleaned_spec["value"] = get_piecewise_parameters( + leaf_name=leaf_name, + func_type=spec["type"], + parameter_dict=cleaned_spec["value"], + xnp=xnp, + ) + return PiecewisePolynomialParam(**cleaned_spec) + if spec["type"] == "consecutive_int_1d_lookup_table": + cleaned_spec["value"] = get_consecutive_int_1d_lookup_table_param_value( + raw=cleaned_spec["value"], + xnp=xnp, + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + if spec["type"] == "consecutive_int_2d_lookup_table": + cleaned_spec["value"] = get_consecutive_int_2d_lookup_table_param_value( + raw=cleaned_spec["value"], + xnp=xnp, + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + if spec["type"] == "month_based_phase_inout_of_age_thresholds": + cleaned_spec["value"] = ( + get_month_based_phase_inout_of_age_thresholds_param_value( + raw=cleaned_spec["value"], + xnp=xnp, + ) + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + if spec["type"] == "year_based_phase_inout_of_age_thresholds": + cleaned_spec["value"] = ( + get_year_based_phase_inout_of_age_thresholds_param_value( + raw=cleaned_spec["value"], + xnp=xnp, + ) + ) + return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + if spec["type"] == "require_converter": + return RawParam(**cleaned_spec) + raise ValueError(f"Unknown parameter type: {spec['type']} for {leaf_name}") + + +def _clean_one_param_spec( + leaf_name: str, + spec: OrigParamSpec, + date: datetime.date, +) -> dict[str, Any] | None: + """Prepare the specification of one parameter for creating a ParamObject.""" + policy_dates = numpy.sort([key for key in spec if isinstance(key, datetime.date)]) + idx = numpy.searchsorted(policy_dates, date, side="right") # type: ignore[call-overload] + if idx == 0: + return None + + out: dict[str, Any] = {} + out["leaf_name"] = leaf_name + out["start_date"] = policy_dates[idx - 1] + out["end_date"] = ( + policy_dates[idx] - datetime.timedelta(days=1) + if len(policy_dates) > idx + else DEFAULT_END_DATE + ) + out["unit"] = spec.get("unit", None) + out["reference_period"] = spec.get("reference_period", None) + out["name"] = spec["name"] + out["description"] = spec["description"] + current_spec = copy.deepcopy(spec[policy_dates[idx - 1]]) + out["note"] = current_spec.pop("note", None) + out["reference"] = current_spec.pop("reference", None) + if len(current_spec) == 0: + return None + if len(current_spec) == 1 and "updates_previous" in current_spec: + raise ValueError( + f"'updates_previous' cannot be specified as the only element, found{spec}", + ) + # Parameter ceased to exist + if spec["type"] == "scalar": + assert "updates_previous" not in current_spec, ( + "'updates_previous' cannot be specified for scalar parameters" + ) + out["value"] = current_spec["value"] + else: + out["value"] = _get_param_value([spec[d] for d in policy_dates[:idx]]) + return out + + +def _get_param_value( + relevant_specs: list[dict[str | int, Any]], +) -> dict[str | int, Any]: + """Get the value of a parameter. + + Implementation is a recursion in order to handle the 'updates_previous' machinery. + + """ + current_spec = relevant_specs[-1].copy() + updates_previous = current_spec.pop("updates_previous", False) + current_spec.pop("note", None) + current_spec.pop("reference", None) + if updates_previous: + assert len(relevant_specs) > 1, ( + "'updates_previous' cannot be missing in the initial spec, found " + f"{relevant_specs}" + ) + return upsert_tree( + base=_get_param_value(relevant_specs=relevant_specs[:-1]), + to_upsert=current_spec, + ) + return current_spec diff --git a/src/ttsim/interface_dag_elements/processed_data.py b/src/ttsim/interface_dag_elements/processed_data.py new file mode 100644 index 0000000000..e49ae9e810 --- /dev/null +++ b/src/ttsim/interface_dag_elements/processed_data.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.interface_node_objects import interface_function +from ttsim.tt_dag_elements.column_objects_param_function import reorder_ids + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import FlatData, QNameData + + +@interface_function(in_top_level_namespace=True) +def processed_data(input_data__flat: FlatData, xnp: ModuleType) -> QNameData: + """Process the data for use in the taxes and transfers function. + + Replace id's by consecutive integers starting at zero. + The Jax-based backend will work correctly only with these transformed indices. + They will be transformed back when converting raw results to results. + + Args: + input_data__tree: + The input data provided by the user. + + Returns + ------- + A DataFrame. + """ + processed_input_data = {} + orig_p_ids = xnp.asarray(input_data__flat[("p_id",)]) + internal_p_ids = reorder_ids(ids=orig_p_ids, xnp=xnp) + for path, data in input_data__flat.items(): + qname = dt.qname_from_tree_path(path) + if path[-1].endswith("_id"): + processed_input_data[qname] = reorder_ids(ids=xnp.asarray(data), xnp=xnp) + elif path[-1].startswith("p_id_"): + variable_with_new_ids = xnp.asarray(data) + for i in range(internal_p_ids.shape[0]): + variable_with_new_ids = xnp.where( + data == orig_p_ids[i], + internal_p_ids[i], + variable_with_new_ids, + ) + processed_input_data[qname] = variable_with_new_ids + else: + processed_input_data[qname] = xnp.asarray(data) + return processed_input_data diff --git a/src/ttsim/interface_dag_elements/raw_results.py b/src/ttsim/interface_dag_elements/raw_results.py new file mode 100644 index 0000000000..c2d1247a79 --- /dev/null +++ b/src/ttsim/interface_dag_elements/raw_results.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim.interface_dag_elements.interface_node_objects import interface_function + +if TYPE_CHECKING: + from collections.abc import Callable + + from ttsim.interface_dag_elements.typing import ( + OrderedQNames, + QNameData, + QNameSpecializedEnvironment1, + UnorderedQNames, + ) + + +@interface_function() +def columns( + labels__root_nodes: UnorderedQNames, + processed_data: QNameData, + specialized_environment__tax_transfer_function: Callable[[QNameData], QNameData], +) -> QNameData: + return specialized_environment__tax_transfer_function( + {k: v for k, v in processed_data.items() if k in labels__root_nodes}, + ) + + +@interface_function() +def params( + labels__param_targets: OrderedQNames, + specialized_environment__with_processed_params_and_scalars: QNameSpecializedEnvironment1, # noqa: E501 +) -> QNameData: + return { + pt: specialized_environment__with_processed_params_and_scalars[pt] + for pt in labels__param_targets + } + + +@interface_function() +def from_input_data( + labels__input_data_targets: OrderedQNames, + processed_data: QNameData, +) -> QNameData: + return {ot: processed_data[ot] for ot in labels__input_data_targets} + + +@interface_function() +def combined( + columns: QNameData, + params: QNameData, + from_input_data: QNameData, +) -> QNameData: + return { + **columns, + **params, + **from_input_data, + } diff --git a/src/ttsim/interface_dag_elements/results.py b/src/ttsim/interface_dag_elements/results.py new file mode 100644 index 0000000000..93b9d4ff16 --- /dev/null +++ b/src/ttsim/interface_dag_elements/results.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.data_converters import ( + nested_data_to_df_with_mapped_columns, + nested_data_to_df_with_nested_columns, +) +from ttsim.interface_dag_elements.interface_node_objects import interface_function + +if TYPE_CHECKING: + import pandas as pd + + from ttsim.interface_dag_elements.typing import ( + FlatData, + NestedData, + NestedStrings, + QNameData, + ) + + +@interface_function() +def tree(raw_results__combined: QNameData, input_data__flat: FlatData) -> NestedData: + """The combined results as a tree. + + The transformed id's are converted back to their original values. + + """ + out = {} + for k in raw_results__combined: + path = dt.tree_path_from_qname(k) + if path in input_data__flat and ( + path[-1].endswith("_id") or path[-1].startswith("p_id_") + ): + out[k] = input_data__flat[path] + else: + out[k] = raw_results__combined[k] + return dt.unflatten_from_qnames(out) + + +@interface_function() +def df_with_mapper( + tree: NestedData, + input_data__tree: NestedData, + targets__tree: NestedStrings, +) -> pd.DataFrame: + """The results DataFrame with mapped column names. + + Args: + tree: + The results of a TTSIM run. + input_data__tree: + The data tree of the TTSIM run. + nested_outputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + + Returns + ------- + A DataFrame. + """ + return nested_data_to_df_with_mapped_columns( + nested_data_to_convert=tree, + nested_outputs_df_column_names=targets__tree, + data_with_p_id=input_data__tree, + ) + + +@interface_function() +def df_with_nested_columns( + tree: NestedData, + input_data__tree: NestedData, +) -> pd.DataFrame: + """The results DataFrame with mapped column names. + + Args: + tree: + The results of a TTSIM run. + input_data__tree: + The data tree of the TTSIM run. + nested_outputs_df_column_names: + A tree that maps paths (sequence of keys) to data columns names. + + Returns + ------- + A DataFrame. + """ + return nested_data_to_df_with_nested_columns( + nested_data_to_convert=tree, + data_with_p_id=input_data__tree, + ) diff --git a/src/ttsim/shared.py b/src/ttsim/interface_dag_elements/shared.py similarity index 74% rename from src/ttsim/shared.py rename to src/ttsim/interface_dag_elements/shared.py index 21254b0d1c..1f319ae136 100644 --- a/src/ttsim/shared.py +++ b/src/ttsim/interface_dag_elements/shared.py @@ -7,13 +7,12 @@ import dags.tree as dt import optree -from ttsim.config import numpy_or_jax as np - if TYPE_CHECKING: - from ttsim.typing import ( + from ttsim.interface_dag_elements.typing import ( DashedISOString, NestedColumnObjectsParamFunctions, NestedData, + OrderedQNames, ) @@ -25,16 +24,16 @@ def to_datetime(date: datetime.date | DashedISOString) -> datetime.date: return date if isinstance(date, str) and _DASHED_ISO_DATE_REGEX.fullmatch(date): return datetime.date.fromisoformat(date) - else: - raise ValueError( - f"Date {date} neither matches the format YYYY-MM-DD nor is a datetime.date." - ) + raise ValueError( + f"Date {date} neither matches the format YYYY-MM-DD nor is a datetime.date.", + ) def get_re_pattern_for_all_time_units_and_groupings( - groupings: tuple[str, ...], time_units: tuple[str, ...] + time_units: OrderedQNames, + grouping_levels: OrderedQNames, ) -> re.Pattern[str]: - """Get a regex pattern for time units and groupings. + """Get a regex pattern for time units and grouping_levels. The pattern matches strings in any of these formats: - <base_name> (may contain underscores) @@ -44,10 +43,10 @@ def get_re_pattern_for_all_time_units_and_groupings( Parameters ---------- - groupings - The supported groupings. time_units The supported time units. + grouping_levels + The supported grouping levels. Returns ------- @@ -55,25 +54,25 @@ def get_re_pattern_for_all_time_units_and_groupings( The regex pattern. """ re_units = "".join(time_units) - re_groupings = "|".join(groupings) + re_groupings = "|".join(grouping_levels) return re.compile( f"(?P<base_name>.*?)" f"(?:_(?P<time_unit>[{re_units}]))?" f"(?:_(?P<grouping>{re_groupings}))?" - f"$" + f"$", ) -def group_pattern(groupings: tuple[str, ...]) -> re.Pattern[str]: +def group_pattern(grouping_levels: OrderedQNames) -> re.Pattern[str]: return re.compile( - f"(?P<base_name_with_time_unit>.*)_(?P<group>{'|'.join(groupings)})$" + f"(?P<base_name_with_time_unit>.*)_(?P<group>{'|'.join(grouping_levels)})$", ) def get_re_pattern_for_specific_time_units_and_groupings( base_name: str, - all_time_units: tuple[str, ...], - groupings: tuple[str, ...], + all_time_units: OrderedQNames, + grouping_levels: OrderedQNames, ) -> re.Pattern[str]: """Get a regex for a specific base name with optional time unit and aggregation. @@ -89,8 +88,8 @@ def get_re_pattern_for_specific_time_units_and_groupings( The specific base name to match. time_units The supported time units. - groupings - The supported groupings. + grouping_levels + The supported grouping levels. Returns ------- @@ -98,12 +97,12 @@ def get_re_pattern_for_specific_time_units_and_groupings( The regex pattern. """ re_units = "".join(all_time_units) - re_groupings = "|".join(groupings) + re_groupings = "|".join(grouping_levels) return re.compile( f"(?P<base_name>{re.escape(base_name)})" f"(?:_(?P<time_unit>[{re_units}]))?" f"(?:_(?P<grouping>{re_groupings}))?" - f"$" + f"$", ) @@ -115,7 +114,8 @@ def get_base_name_and_grouping_suffix(match: re.Match[str]) -> tuple[str, str]: def create_tree_from_path_and_value( - path: tuple[str], value: Any = None + path: tuple[str], + value: Any = None, # noqa: ANN401 ) -> dict[str, Any]: """Create a nested dict with 'path' as keys and 'value' as leaf. @@ -140,7 +140,6 @@ def create_tree_from_path_and_value( ------- The tree structure. """ - nested_dict = value for entry in reversed(path): nested_dict = {entry: nested_dict} @@ -162,7 +161,6 @@ def merge_trees(left: dict[str, Any], right: dict[str, Any]) -> dict[str, Any]: ------- The merged pytree. """ - if set(optree.tree_paths(left)) & set(optree.tree_paths(right)): # type: ignore[arg-type] raise ValueError("Conflicting paths in trees to merge.") @@ -206,7 +204,9 @@ def upsert_tree(base: dict[str, Any], to_upsert: dict[str, Any]) -> dict[str, An def upsert_path_and_value( - base: dict[str, Any], path_to_upsert: tuple[str], value_to_upsert: Any = None + base: dict[str, Any], + path_to_upsert: tuple[str], + value_to_upsert: Any = None, # noqa: ANN401 ) -> dict[str, Any]: """Update tree with a path and value. @@ -215,13 +215,16 @@ def upsert_path_and_value( will be updated. """ to_upsert = create_tree_from_path_and_value( - path=path_to_upsert, value=value_to_upsert + path=path_to_upsert, + value=value_to_upsert, ) return upsert_tree(base=base, to_upsert=to_upsert) def insert_path_and_value( - base: dict[str, Any], path_to_insert: tuple[str], value_to_insert: Any = None + base: dict[str, Any], + path_to_insert: tuple[str], + value_to_insert: Any = None, # noqa: ANN401 ) -> dict[str, Any]: """Insert a path and value into a tree. @@ -229,7 +232,8 @@ def insert_path_and_value( path must not exist in base. """ to_insert = create_tree_from_path_and_value( - path=path_to_insert, value=value_to_insert + path=path_to_insert, + value=value_to_insert, ) return merge_trees(left=base, right=to_insert) @@ -260,10 +264,10 @@ def partition_tree_by_reference_tree( ref_paths = set(dt.tree_paths(reference_tree)) flat = dt.flatten_to_tree_paths(tree_to_partition) intersection = dt.unflatten_from_tree_paths( - {path: leaf for path, leaf in flat.items() if path in ref_paths} + {path: leaf for path, leaf in flat.items() if path in ref_paths}, ) difference = dt.unflatten_from_tree_paths( - {path: leaf for path, leaf in flat.items() if path not in ref_paths} + {path: leaf for path, leaf in flat.items() if path not in ref_paths}, ) return intersection, difference @@ -294,63 +298,17 @@ def partition_by_reference_dict( return intersection, difference -def remove_group_suffix(col: str, groupings: tuple[str, ...]) -> str: +def remove_group_suffix(col: str, grouping_levels: OrderedQNames) -> str: out = col - for g in groupings: + for g in grouping_levels: out = out.removesuffix(f"_{g}") return out -def join( - foreign_key: np.ndarray, - primary_key: np.ndarray, - target: np.ndarray, - value_if_foreign_key_is_missing: float | bool, -) -> np.ndarray: - """ - Given a foreign key, find the corresponding primary key, and return the target at - the same index as the primary key. When using Jax, does not work on String Arrays. - - Parameters - ---------- - foreign_key : np.ndarray[Key] - The foreign keys. - primary_key : np.ndarray[Key] - The primary keys. - target : np.ndarray[Out] - The targets in the same order as the primary keys. - value_if_foreign_key_is_missing : Out - The value to return if no matching primary key is found. - - Returns - ------- - The joined array. - """ - # For each foreign key and for each primary key, check if they match - matches_foreign_key = foreign_key[:, None] == primary_key - - # For each foreign key, add a column with True at the end, to later fall back to - # the value for unresolved foreign keys - padded_matches_foreign_key = np.pad( - matches_foreign_key, ((0, 0), (0, 1)), "constant", constant_values=True - ) - - # For each foreign key, compute the index of the first matching primary key - indices = np.argmax(padded_matches_foreign_key, axis=1) - - # Add the value for unresolved foreign keys at the end of the target array - padded_targets = np.pad( - target, (0, 1), "constant", constant_values=value_if_foreign_key_is_missing - ) - - # Return the target at the index of the first matching primary key - return padded_targets.take(indices) - - def get_name_of_group_by_id( target_name: str, - groupings: tuple[str, ...], + grouping_levels: OrderedQNames, ) -> str | None: """Get the group-by-identifier name for some target. @@ -361,14 +319,14 @@ def get_name_of_group_by_id( ---------- target_name The name of the target. - groupings - The supported groupings. + grouping_levels + The supported grouping levels. Returns ------- The group-by-identifier, or an empty tuple if it is an individual-level variable. """ - for g in groupings: + for g in grouping_levels: if target_name.endswith(f"_{g}"): return f"{g}_id" return None diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py new file mode 100644 index 0000000000..249679fd84 --- /dev/null +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -0,0 +1,332 @@ +from __future__ import annotations + +import functools +from types import ModuleType +from typing import TYPE_CHECKING, Literal + +import dags.tree as dt +from dags import concatenate_functions, create_dag, get_free_arguments + +from ttsim.interface_dag_elements.automatically_added_functions import ( + create_agg_by_group_functions, + create_time_conversion_functions, +) +from ttsim.interface_dag_elements.interface_node_objects import ( + interface_function, + interface_input, +) +from ttsim.interface_dag_elements.shared import merge_trees +from ttsim.tt_dag_elements.column_objects_param_function import ( + ColumnFunction, + ColumnObject, + ParamFunction, +) +from ttsim.tt_dag_elements.param_objects import ParamObject, RawParam + +if TYPE_CHECKING: + from collections.abc import Callable + + import networkx as nx + + from ttsim.interface_dag_elements.typing import ( + NestedPolicyEnvironment, + OrderedQNames, + QNameData, + QNamePolicyEnvironment, + QNameSpecializedEnvironment0, + QNameSpecializedEnvironment1, + QNameSpecializedEnvironment2, + UnorderedQNames, + ) + + +@interface_input(in_top_level_namespace=True) +def rounding() -> bool: + """Whether to apply rounding to policy functions.""" + + +@interface_function() +def without_tree_logic_and_with_derived_functions( + policy_environment: NestedPolicyEnvironment, + targets__qname: OrderedQNames, + labels__input_columns: UnorderedQNames, + labels__top_level_namespace: UnorderedQNames, + labels__grouping_levels: OrderedQNames, +) -> QNameSpecializedEnvironment0: + """Return a flat policy environment with derived functions. + + Two steps: + 1. Remove all tree logic from the policy environment. + 2. Add derived functions to the policy environment. + + """ + qname_env_without_tree_logic = _remove_tree_logic_from_policy_environment( + qname_env=dt.flatten_to_qnames(policy_environment), + labels__top_level_namespace=labels__top_level_namespace, + ) + return _add_derived_functions( + qname_env_without_tree_logic=qname_env_without_tree_logic, + targets=targets__qname, + input_columns=labels__input_columns, + grouping_levels=labels__grouping_levels, + ) + + +def _remove_tree_logic_from_policy_environment( + qname_env: QNamePolicyEnvironment, + labels__top_level_namespace: UnorderedQNames, +) -> QNameSpecializedEnvironment0: + """Map qualified names to column objects / param functions without tree logic.""" + out = {} + for name, obj in qname_env.items(): + if hasattr(obj, "remove_tree_logic"): + out[name] = obj.remove_tree_logic( + tree_path=dt.tree_path_from_qname(name), + top_level_namespace=labels__top_level_namespace, + ) + else: + out[name] = obj + return out + + +def _add_derived_functions( + qname_env_without_tree_logic: QNameSpecializedEnvironment0, + targets: OrderedQNames, + input_columns: UnorderedQNames, + grouping_levels: OrderedQNames, +) -> QNameSpecializedEnvironment0: + """Return a mapping of qualified names to functions operating on columns. + + Anything that is not a ColumnFunction is filtered out (e.g., ParamFunctions, + PolicyInputs). + + Derived functions are time converted functions and aggregation functions (aggregate + by p_id or by group). + + Check that all targets have a corresponding function in the functions tree or can + be taken from the data. + + Parameters + ---------- + column_objects_param_functions + Dict with qualified function names as keys and functions with qualified + arguments as values. + targets + The list of targets with qualified names. + data + Dict with qualified data names as keys and arrays as values. + labels__top_level_namespace + Set of top-level namespaces. + + Returns + ------- + The specialized environment with derived functions (aggregations and time + conversions), and without tree logic, i.e. absolute qualified names in all keys + and function arguments. + + """ + # Create functions for different time units + time_conversion_functions = create_time_conversion_functions( + qname_policy_environment=qname_env_without_tree_logic, + input_columns=input_columns, + grouping_levels=grouping_levels, + ) + column_functions = { + k: v + for k, v in { + **qname_env_without_tree_logic, + **time_conversion_functions, + }.items() + if isinstance(v, ColumnFunction) + } + + # Create aggregation functions by group. + aggregate_by_group_functions = create_agg_by_group_functions( + column_functions=column_functions, + input_columns=input_columns, + targets=targets, + grouping_levels=grouping_levels, + ) + return { + **qname_env_without_tree_logic, + **time_conversion_functions, + **aggregate_by_group_functions, + } + + +@interface_function() +def with_processed_params_and_scalars( + without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, + processed_data: QNameData, +) -> QNameSpecializedEnvironment1: + """Process the parameters and param functions, remove RawParams from the tree. + + Parameters + ---------- + without_tree_logic_and_with_derived_functions + The specialized environment with vectorized column functions, derived functions + (aggregations and time conversions), and without tree logic, i.e. absolute + qualified names in all keys and function arguments. + processed_data + The processed data. + + Returns + ------- + The specialized environment with processed parameters and scalars. Input nodes + that come in via the processed data are removed from the environment. + """ + + all_nodes = {} + for n, f in without_tree_logic_and_with_derived_functions.items(): + if n in processed_data: + # Put scalars into the policy environment. + if isinstance(processed_data[n], int | float | bool): + all_nodes[n] = processed_data[n] + # Else, remove the node. Will be an input of the taxes-transfers function. + else: + # Leave nodes not in the data what they are. + all_nodes[n] = f + # The number of segments for jax' segment sum. After processing the data, we know + # that the number of ids is at most the length of the data. + if processed_data: + all_nodes["num_segments"] = len(next(iter(processed_data.values()))) + else: + all_nodes["num_segments"] = 0 + + params = {k: v for k, v in all_nodes.items() if isinstance(v, ParamObject)} + scalars = { + k: v + for k, v in all_nodes.items() + if isinstance(v, float | int | bool) or k == "backend" + } + modules = {k: v for k, v in all_nodes.items() if isinstance(v, ModuleType)} + param_functions = { + k: v for k, v in all_nodes.items() if isinstance(v, ParamFunction) + } + # Construct a function for the processing of all params. + process = concatenate_functions( + functions=param_functions, + targets=None, + return_type="dict", + aggregator=None, + enforce_signature=False, + set_annotations=False, + ) + # Call the processing function. + processed_param_functions = process( + **{k: v.value for k, v in params.items()}, + **scalars, + **modules, + ) + processed_params = merge_trees( + left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, + right=processed_param_functions, + ) + return { + **{k: v for k, v in all_nodes.items() if not isinstance(v, RawParam)}, + **processed_params, + } + + +@interface_function() +def with_partialled_params_and_scalars( + with_processed_params_and_scalars: QNameSpecializedEnvironment1, + rounding: bool, + backend: Literal["numpy", "jax"], + xnp: ModuleType, +) -> QNameSpecializedEnvironment2: + """Partial parameters to functions such that they disappear from the DAG. + + Parameters + ---------- + with_processed_params_and_scalars + The tree with qualified names as keys and column objects or processed + parameters / scalars as values. + rounding + Whether to apply rounding to functions. + + Returns + ------- + Tree with column functions that depend on columns only. + + """ + column_functions = { + k: v + for k, v in with_processed_params_and_scalars.items() + if isinstance(v, ColumnFunction) + } + processed_functions = {} + for name, col_func in column_functions.items(): + vect_col_func = ( + col_func.vectorize(backend=backend, xnp=xnp) + if hasattr(col_func, "vectorize") + else col_func + ) + rounded_col_func = ( + _apply_rounding(vect_col_func, xnp) if rounding else vect_col_func + ) + partial_params = { + arg: with_processed_params_and_scalars[arg] + for arg in get_free_arguments(rounded_col_func) + if ( + arg in with_processed_params_and_scalars + and not isinstance(with_processed_params_and_scalars[arg], ColumnObject) + ) + } + if partial_params: + processed_functions[name] = functools.partial( + rounded_col_func, **partial_params + ) + else: + processed_functions[name] = rounded_col_func + + return processed_functions + + +def _apply_rounding(element: ColumnFunction, xnp: ModuleType) -> ColumnFunction: + return ( + element.rounding_spec.apply_rounding(element, xnp=xnp) + if getattr(element, "rounding_spec", False) + else element + ) + + +@interface_function() +def tax_transfer_dag( + with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + labels__column_targets: OrderedQNames, +) -> nx.DiGraph: + """Thin wrapper around `create_dag`.""" + return create_dag( + functions=with_partialled_params_and_scalars, + targets=labels__column_targets, + ) + + +@interface_function() +def tax_transfer_function( + tax_transfer_dag: nx.DiGraph, + with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + labels__column_targets: OrderedQNames, + backend: Literal["numpy", "jax"], +) -> Callable[[QNameData], QNameData]: + """Returns a function that takes a dictionary of arrays and unpacks them as keyword arguments.""" + ttf_with_keyword_args = concatenate_functions( + dag=tax_transfer_dag, + functions=with_partialled_params_and_scalars, + targets=list(labels__column_targets), + return_type="dict", + aggregator=None, + enforce_signature=True, + set_annotations=False, + ) + + if backend == "jax": + import jax + + ttf_with_keyword_args = jax.jit(ttf_with_keyword_args) + + def wrapper(processed_data: QNameData) -> QNameData: + return ttf_with_keyword_args(**processed_data) + + return wrapper diff --git a/src/ttsim/interface_dag_elements/targets.py b/src/ttsim/interface_dag_elements/targets.py new file mode 100644 index 0000000000..eff7925a4d --- /dev/null +++ b/src/ttsim/interface_dag_elements/targets.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.interface_node_objects import ( + interface_function, +) +from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + NestedPolicyEnvironment, + NestedTargetDict, + OrderedQNames, + ) + + +@interface_function() +def tree(policy_environment: NestedPolicyEnvironment) -> NestedTargetDict: + """Targets as a tree. Will typically be provided by the user. + + If requesting `df_with_mapper` as the targets, the leaves must be the desired + column names. + + If not provided, the targets will be inferred from the policy environment by using + all ColumnFunctions in the policy environment. + """ + return dt.unflatten_from_tree_paths( + { + k: None + for k, v in dt.flatten_to_tree_paths(policy_environment).items() + if isinstance(v, ColumnFunction) + } + ) + + +@interface_function() +def qname(tree: NestedTargetDict) -> OrderedQNames: + """Targets in their qualified name-representation.""" + return dt.flatten_to_qnames(tree) diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py new file mode 100644 index 0000000000..db179aaf1e --- /dev/null +++ b/src/ttsim/interface_dag_elements/templates.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.interface_node_objects import interface_function +from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput +from ttsim.tt_dag_elements.vectorization import scalar_type_to_array_type + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + NestedInputStructureDict, + NestedPolicyEnvironment, + OrderedQNames, + QNameSpecializedEnvironment0, + UnorderedQNames, + ) + + +@interface_function() +def input_data_dtypes( + specialized_environment__with_partialled_params_and_scalars: QNameSpecializedEnvironment0, # noqa: E501 + policy_environment: NestedPolicyEnvironment, + targets__qname: OrderedQNames, + labels__top_level_namespace: UnorderedQNames, +) -> NestedInputStructureDict: + base_dtype_tree = dt.create_tree_with_input_types( + functions=dt.unflatten_from_qnames( + specialized_environment__with_partialled_params_and_scalars, + ), + targets=targets__qname, + top_level_inputs=labels__top_level_namespace, + ) + + # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | IntColumn + # | BoolColumn' with the actual dtype of the policy environment. + flat_policy_env = dt.flatten_to_tree_paths(policy_environment) + flat_dtype_tree = dt.flatten_to_tree_paths(base_dtype_tree) + out = {} + for p, derived_dtype_in_base in flat_dtype_tree.items(): + policy_env_element = flat_policy_env[p] + if isinstance(policy_env_element, PolicyInput) and "|" in derived_dtype_in_base: + out[p] = scalar_type_to_array_type(policy_env_element.data_type) + else: + out[p] = derived_dtype_in_base + + return dt.unflatten_from_tree_paths(out) diff --git a/src/ttsim/interface_dag_elements/typing.py b/src/ttsim/interface_dag_elements/typing.py new file mode 100644 index 0000000000..88889dd557 --- /dev/null +++ b/src/ttsim/interface_dag_elements/typing.py @@ -0,0 +1,109 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Literal, NewType, TypeAlias, TypeVar + +from jaxtyping import Array, Bool, Float, Int + +BoolColumn: TypeAlias = Bool[Array, " n_obs"] +IntColumn: TypeAlias = Int[Array, " n_obs"] +FloatColumn: TypeAlias = Float[Array, " n_obs"] + + +if TYPE_CHECKING: + # Make these available for import from other modules. + import datetime + from collections.abc import Iterable, Mapping + + OrigParamSpec = ( + # Header + dict[str, str | None | dict[Literal["de", "en"], str | None]] + | + # Parameters at one point in time + dict[ + datetime.date, + dict[Literal["note", "reference"] | str | int, Any], # noqa: PYI051 + ] + ) + DashedISOString = NewType("DashedISOString", str) + """A string representing a date in the format 'YYYY-MM-DD'.""" + + from dags.tree.typing import ( # noqa: F401 + NestedInputStructureDict, + NestedTargetDict, + ) + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Possible leaves of the various trees. + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + from ttsim.tt_dag_elements import ( + ColumnFunction, + ColumnObject, + ParamFunction, + ParamObject, + PolicyInput, + ) + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Tree-like data structures for input, processing, and output; including metadata. + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + NestedData = Mapping[str, FloatColumn | IntColumn | BoolColumn | "NestedData"] + """Tree mapping TTSIM paths to 1d arrays.""" + FlatData = Mapping[str, FloatColumn | IntColumn | BoolColumn | "FlatData"] + """Flattened tree mapping TTSIM paths to 1d arrays.""" + NestedInputsMapper = Mapping[str, str | bool | int | float | "NestedInputsMapper"] + """Tree mapping TTSIM paths to df columns or constants.""" + QNameData = Mapping[str, FloatColumn | IntColumn | BoolColumn] + """Mapping of qualified name paths to 1d arrays.""" + QNameStrings = Iterable[str] + """A list, tuple, or set of qualified names.""" + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Collections of names etc. + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + NestedStrings = Mapping[str, str | "NestedStrings"] + """Tree mapping TTSIM paths to df columns or type hints.""" + UnorderedQNames = set[str] + """A set of qualified names.""" + OrderedQNames = TypeVar("OrderedQNames", tuple[str, ...], list[str]) + """A tuple or a list of qualified names.""" + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Tree-like data structures for policy objects + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + NestedPolicyInputs = Mapping[str, PolicyInput | "NestedPolicyInputs"] + """Tree of policy inputs.""" + FlatColumnObjects = Mapping[str, ColumnObject] + """Flat mapping of paths to column objects.""" + FlatColumnObjectsParamFunctions = Mapping[ + tuple[str, ...], + ColumnObject | ParamFunction, + ] + """Flat mapping of paths to column objects or param functions.""" + NestedColumnObjectsParamFunctions = Mapping[ + str, + ColumnObject | ParamFunction | "NestedColumnObjectsParamFunctions", + ] + """Tree of column objects or param functions.""" + FlatOrigParamSpecs = dict[tuple[str, ...], OrigParamSpec] + """Flat mapping of paths to yaml contents; the leaf name is also the last element of the key.""" # noqa: E501 + NestedParamObjects = Mapping[str, ParamObject | "NestedParamObjects"] + """Tree with param objects.""" + NestedPolicyEnvironment = Mapping[ + str, + ColumnObject | ParamFunction | ParamObject | "NestedPolicyEnvironment", + ] + """Tree of column objects, param functions, and param objects.""" + QNamePolicyEnvironment = dict[ + str, + ColumnObject | ParamFunction | ParamObject, + ] + """Tree of column objects, param functions, and param objects.""" + QNameSpecializedEnvironment0 = Mapping[ + str, + ColumnObject | ParamFunction | ParamObject | int | float | bool, + ] + """Map qualified names to column objects, param functions, param objects, or scalars from processed data.""" # noqa: E501 + QNameSpecializedEnvironment1 = Mapping[str, ColumnObject | Any] + """Map qualified names to column objects and anything that comes out of processing the params.""" # noqa: E501 + QNameSpecializedEnvironment2 = Mapping[str, ColumnFunction] + """Map qualified names to column functions that depend on columns only.""" diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py new file mode 100644 index 0000000000..721b5a1a1b --- /dev/null +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -0,0 +1,84 @@ +from __future__ import annotations + +import warnings +from typing import TYPE_CHECKING + +import dags.tree as dt + +from ttsim.interface_dag_elements.fail_if import ( + format_errors_and_warnings, + format_list_linewise, +) +from ttsim.interface_dag_elements.interface_node_objects import fail_or_warn_function + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + NestedPolicyEnvironment, + OrderedQNames, + QNameDataColumns, + ) + + +class FunctionsAndDataColumnsOverlapWarning(UserWarning): + """ + Warning that functions which compute columns overlap with existing columns. + + Parameters + ---------- + columns_overriding_functions : UnorderedQNames + Names of columns in the data that override hard-coded functions. + """ + + def __init__(self, columns_overriding_functions: OrderedQNames) -> None: + n_cols = len(columns_overriding_functions) + if n_cols == 1: + first_part = format_errors_and_warnings("Your data provides the column:") + second_part = format_errors_and_warnings( + """ + This is already present among the hard-coded functions of the taxes and + transfers system. If you want this data column to be used instead of + calculating it within TTSIM you need not do anything. If you want this + data column to be calculated by hard-coded functions, remove it from the + *data* you pass to TTSIM. You need to pick one option for each column + that appears in the list above. + """, + ) + else: + first_part = format_errors_and_warnings("Your data provides the columns:") + second_part = format_errors_and_warnings( + """ + These are already present among the hard-coded functions of the taxes + and transfers system. If you want a data column to be used instead of + calculating it within TTSIM you do not need to do anything. If you + want data columns to be calculated by hard-coded functions, remove them + from the *data* you pass to TTSIM. You need to pick one option for + each column that appears in the list above. + """, + ) + formatted = format_list_linewise(columns_overriding_functions) + how_to_ignore = format_errors_and_warnings( + """ + In order to not perform this check, you can ... TODO + """, + ) + super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") + + +@fail_or_warn_function() +def functions_and_data_columns_overlap( + policy_environment: NestedPolicyEnvironment, + labels__processed_data_columns: QNameDataColumns, +) -> None: + """Warn if functions are overridden by data.""" + overridden_elements = sorted( + { + col + for col in labels__processed_data_columns + if col in dt.flatten_to_qnames(policy_environment) + }, + ) + if len(overridden_elements) > 0: + warnings.warn( + FunctionsAndDataColumnsOverlapWarning(overridden_elements), + stacklevel=2, + ) diff --git a/src/ttsim/param_objects.py b/src/ttsim/param_objects.py deleted file mode 100644 index 95d3cd202c..0000000000 --- a/src/ttsim/param_objects.py +++ /dev/null @@ -1,152 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any, Literal, ParamSpec, TypeVar - -if TYPE_CHECKING: - import datetime - - from ttsim.config import numpy_or_jax as np - -FunArgTypes = ParamSpec("FunArgTypes") -ReturnType = TypeVar("ReturnType") - - -@dataclass(frozen=True) -class ParamObject: - """ - Abstract base class for all types of parameters. - """ - - leaf_name: str - start_date: datetime.date - end_date: datetime.date - unit: ( - None - | Literal[ - "Euros", - "DM", - "Share", - "Percent", - "Years", - "Months", - "Hours", - "Square Meters", - "Euros / Square Meter", - ] - ) - reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] - name: dict[Literal["de", "en"], str] - description: dict[Literal["de", "en"], str] - - -@dataclass(frozen=True) -class ScalarParam(ParamObject): - """ - A scalar parameter directly read from a YAML file. - """ - - value: bool | int | float - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class DictParam(ParamObject): - """ - A parameter directly read from a YAML file that is a flat dictionary. - """ - - value: ( - dict[str, int] - | dict[str, float] - | dict[str, bool] - | dict[int, int] - | dict[int, float] - | dict[int, bool] - ) - note: str | None = None - reference: str | None = None - - def __post_init__(self) -> None: - assert all(x not in self.value for x in ["note", "reference"]) - - -@dataclass(frozen=True) -class PiecewisePolynomialParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. - - Its value is a PiecewisePolynomialParamValue object, i.e., it contains the - parameters for calling `piecewise_polynomial`. - """ - - value: PiecewisePolynomialParamValue - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class ConsecutiveInt1dLookupTableParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. - - Its value is a ConsecutiveInt1dLookupTableParamValue object, i.e., it contains the - parameters for calling `lookup_table`. - """ - - value: ConsecutiveInt1dLookupTableParamValue - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class ConsecutiveInt2dLookupTableParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. - - Its value is a ConsecutiveInt2dLookupTableParamValue object, i.e., it contains the - parameters for calling `lookup_table`. - """ - - value: ConsecutiveInt2dLookupTableParamValue - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class RawParam(ParamObject): - """ - A parameter directly read from a YAML file that is an arbitrarily nested - dictionary. - """ - - value: dict[str | int, Any] - note: str | None = None - reference: str | None = None - - def __post_init__(self) -> None: - assert all(x not in self.value for x in ["note", "reference"]) - - -@dataclass(frozen=True) -class PiecewisePolynomialParamValue: - """The parameters expected by piecewise_polynomial""" - - thresholds: np.ndarray - intercepts: np.ndarray - rates: np.ndarray - - -@dataclass(frozen=True) -class ConsecutiveInt1dLookupTableParamValue: - """The parameters expected by lookup_table""" - - base_to_subtract: int - values_to_look_up: np.ndarray - - -@dataclass(frozen=True) -class ConsecutiveInt2dLookupTableParamValue: - """The parameters expected by lookup_table""" - - base_to_subtract_rows: int - base_to_subtract_cols: int - values_to_look_up: np.ndarray diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 5447e2620e..ccae6a53cc 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -1,589 +1,569 @@ from __future__ import annotations -import functools +import colorsys +import copy import inspect -import operator -from functools import reduce -from typing import TYPE_CHECKING +import textwrap +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Literal, overload +import dags import dags.tree as dt import networkx as nx import numpy -import pandas as pd import plotly.graph_objects as go -from dags import get_free_arguments -from pygments import highlight, lexers -from pygments.formatters import HtmlFormatter -from ttsim.compute_taxes_and_transfers import ( - _add_derived_functions, - required_column_functions, +from ttsim import main +from ttsim.interface_dag import load_interface_functions_and_inputs +from ttsim.interface_dag_elements.interface_node_objects import ( + FailOrWarnFunction, + InputDependentInterfaceFunction, + InterfaceFunction, + InterfaceInput, + interface_function, +) +from ttsim.tt_dag_elements import ( + ColumnFunction, + ParamFunction, + ParamObject, + PolicyFunction, + PolicyInput, + param_function, + policy_function, ) -from ttsim.failures_and_warnings import format_list_linewise -from ttsim.shared import partition_tree_by_reference_tree if TYPE_CHECKING: - from ttsim.typing import NestedPolicyEnvironment - - -def plot_dag( - policy_environment: NestedPolicyEnvironment, - targets=None, - columns_overriding_functions=None, - selectors=None, - orientation="v", - show_labels=None, - hover_source_code=False, -): - """Plot the dag of the tax and transfer system. Note that if 10 or less nodes are - plotted, labels are always displayed. - - Parameters - ---------- - environment: - The policy environment. - targets : str, list of str - String or list of strings with names of functions whose output is actually - needed by the user. - columns_overriding_functions : str list of str - Names of columns in the data which are preferred over function defined in the - tax and transfer system. - selectors : str or list of str or dict or list of dict or list of str and dict - Selectors allow to you to select and de-select nodes in the graph for - visualization. For the full list of options, see the tutorial about - `visualization <../docs/tutorials/visualize.ipynb>`_. By default, all nodes are - shown. - orientation :str,default "v" - Whether the graph is horizontal or vertical - show_labels : bool, default None - Whether the graph is annotated with labels next to each node. By default, - the labels are shown when the number of nodes is at most 10. - Otherwise, names are displayed next to the node only when hovering over it. - It is also possible to display labels regardless of the number of nodes, setting - variable as True or hide labels when the variable is False. - hover_source_code: bool, default as false - Experimental feature which makes the source code of the functions accessible as - a hover information. Sometimes, the tooltip is not properly displayed. - - """ - targets = build_targets_tree(TODO if targets is None else targets) # noqa: F821 - - if isinstance(columns_overriding_functions, dict): - names_of_columns_overriding_functions = dt.flatten_to_qual_names( - columns_overriding_functions - ).keys() - elif isinstance(columns_overriding_functions, str): - names_of_columns_overriding_functions = [columns_overriding_functions] - elif columns_overriding_functions is None: - names_of_columns_overriding_functions = [] - else: - names_of_columns_overriding_functions = columns_overriding_functions - - # Load functions. - all_functions = _add_derived_functions( - environment=policy_environment, - targets=targets, - data=names_of_columns_overriding_functions, - ) - functions_not_overridden = partition_tree_by_reference_tree( - tree_to_partition=all_functions, - reference_tree=names_of_columns_overriding_functions, - )[1] - - # Create parameter input structure. - input_structure = dt.create_tree_with_input_types( - functions=functions_not_overridden, - targets=None, # None because no functions should be filtered out - ) - - # Select necessary nodes by creating a preliminary DAG. - dag = set_up_dag( # noqa: F821 - all_functions=functions_not_overridden, - targets=targets, - names_of_columns_overriding_functions=names_of_columns_overriding_functions, - input_structure=input_structure, - ) - - processed_tree_with_params = _process_tree_with_params( # noqa: F821 - tree_with_params=policy_environment.tree_with_params, - param_functions={ - k: v - for k, v in column_objects_param_functions.items() # noqa: F821 - if isinstance(v, ParamFunction) # noqa: F821 - }, - ) - - processed_functions = required_column_functions( - column_functions_with_processed_params_and_scalars=functions_with_rounding_specs, # noqa: F821 - processed_params=processed_tree_with_params, - ) + from collections.abc import Callable + from pathlib import Path + from types import ModuleType - input_structure = dt.create_tree_with_input_types( - functions=processed_functions, - targets=None, - ) - - # Calculate results. - dag = set_up_dag( # noqa: F821 - all_functions=processed_functions, - targets=targets, - names_of_columns_overriding_functions=names_of_columns_overriding_functions, - input_structure=input_structure, - ) - - selectors = [] if selectors is None else _to_list(selectors) - dag = _select_nodes_in_dag(dag, selectors) - dag = _add_url_to_dag(dag) - # Even if we do not show the source codes , we need to remove the functions. - dag = _replace_functions_with_source_code(dag) - layout_df = _create_pygraphviz_layout(dag, orientation) - # prepare for the nodes dataframe including their url - names = layout_df.index - node_x_coord = layout_df[0].values - node_y_coord = layout_df[1].values - url = numpy.array([dag.nodes[x]["url"] for x in names]) - codes = [dag.nodes[x]["source_code"] for x in names] - - combo = pd.DataFrame( - {"x": node_x_coord, "y": node_y_coord, "url": url, "source_code": codes} - ) - combo.source_code = combo.source_code.str.split("\n").str.join("<br>") - - # prepare for the edges dataframe - df = pd.DataFrame(list(dag.edges)) - if len(df) == 0: - df["x0"] = 0 - df["y0"] = 0 - else: - df["x0"] = df[0].map(layout_df[0]) - df["y0"] = df[0].map(layout_df[1]) - df["x1"] = df[1].map(layout_df[0]) - df["y1"] = df[1].map(layout_df[1]) - df["None"] = "" - if len(df) == 0: - edge_x = [] - edge_y = [] - else: - edge_x = df[["x0", "x1", "None"]].apply(tuple, axis=1).tolist() - edge_x = list(reduce(operator.concat, edge_x)) - edge_y = df[["y0", "y1", "None"]].apply(tuple, axis=1).tolist() - edge_y = list(reduce(operator.concat, edge_y)) - arrows = [ - go.layout.Annotation( - x=df["x1"][i], - y=df["y1"][i], - xref="x", - yref="y", - text="", - showarrow=True, - axref="x", - ayref="y", - ax=df["x0"][i], - ay=df["y0"][i], - arrowhead=2, - arrowsize=2, - startstandoff=5, - standoff=5, - arrowcolor="gray", - ) - for i in range(len(df)) - ] - - # plot the nodes, edges and arrows together - fig = go.FigureWidget( - layout=go.Layout( - showlegend=False, - hovermode="closest", - annotations=arrows, - hoverlabel_font_size=10, - margin={"b": 20, "l": 5, "r": 5, "t": 40}, - xaxis={"showgrid": False, "zeroline": False, "showticklabels": False}, - yaxis={"showgrid": False, "zeroline": False, "showticklabels": False}, - ) - ) - fig.add_scatter( - x=edge_x, - y=edge_y, - line={"width": 0.5, "color": "blue"}, - hoverinfo="none", - mode="lines", - showlegend=False, - ) - # choose the different options for plotting - # When show_lebels = None and number of nodes >10 - # labels are shown when hovering over it. - # Same happens when show_labels is False, - # Otherwise, labels are displayed next to the nodes. - if show_labels or (show_labels is None and len(names) <= 10): - mode = "markers+text" - hover_info = "skip" - else: - mode = "markers" - hover_info = "text" - - fig.add_scatter( - x=combo.x, - y=combo.y, - mode=mode, - hoverinfo=hover_info, - textposition="bottom center", - text=list(names), - showlegend=False, - marker={ - "showscale": False, - "reversescale": True, - "color": "red", - "size": 15, - }, + from ttsim.interface_dag_elements.typing import ( + NestedPolicyEnvironment, + QNameSpecializedEnvironment0, ) - # add the source code to the graph, - # that is displayed as hover information - - if hover_source_code: - for i in range(len(combo)): - fig.add_scatter( - x=[combo.x[i]], - y=[combo.y[i]], - mode=mode, - hovertext=combo.source_code[i], - hoverinfo="text", - textposition="bottom center", - hoverlabel={"bgcolor": "lightgrey", "font": {"color": "black"}}, - text=names[i], - showlegend=False, - name=names[i], - marker={ - "showscale": False, - "reversescale": True, - "color": "red", - "size": 15, - }, - ) - - elif not hover_source_code: - fig.add_scatter( - x=combo.x, - y=combo.y, - mode=mode, - hoverinfo="skip", - textposition="bottom center", - text=list(names), - showlegend=False, - marker={ - "showscale": False, - "reversescale": True, - "color": "red", - "size": 15, - }, - ) - else: - raise ValueError( - "hover_source_code must be either True" - f" or False, but got {hover_source_code!r}" - ) - - return fig - - -def _mock_parameters_arguments(functions): - """Mock the parameter arguments. - - Functions have parameter arguments which should not be visible while plotting the - DAG. Thus, partial empty dictionaries to the functions. - - """ - mocked_functions = {} - for name, function in functions.items(): - partial_params = { - i: {} for i in get_free_arguments(function) if i.endswith("_params") - } - - # Fix old functions which requested the whole dictionary. Test if removable. - if "params" in get_free_arguments(function): - partial_params["params"] = {} - - mocked_functions[name] = ( - functools.partial(function, **partial_params) - if partial_params - else function - ) - - return mocked_functions - -def _select_nodes_in_dag(dag, raw_selectors): - """Select nodes in the DAG based on the selectors.""" - raw_selectors = _convert_non_dict_selectors(raw_selectors) - selectors, deselectors = _separate_selectors_and_deselectors(raw_selectors) - dag = _apply_selectors_and_deselectors(dag, selectors, deselectors) +@dataclass(frozen=True) +class NodeSelector: + """Select nodes from the DAG.""" - if len(dag.nodes) == 0: - raise ValueError("After selection and de-selection, the DAG contains no nodes.") + node_paths: list[tuple[str, ...]] + type: Literal["neighbors", "descendants", "ancestors", "nodes"] + order: int | None = None - return dag +@dataclass(frozen=True) +class _QNameNodeSelector: + """Select nodes from the DAG.""" -def _add_url_to_dag(dag): - for node in dag.nodes: - # Retrieve the name from the function because some functions are defined for - # time periods and the node name will point to a non-existent function, but the - # function name is a valid target. E.g., freibetrag_m and - # freibetrag_m_bis_2015. - if "function" in dag.nodes[node]: - # Fix for partialed functions. - try: - name = dag.nodes[node]["function"].__name__ - except AttributeError: - name = dag.nodes[node]["function"].func.__name__ - else: - name = node - dag.nodes[node]["url"] = _create_url(name) + qnames: list[str] + type: Literal["neighbors", "descendants", "ancestors", "nodes"] + order: int | None = None - return dag +@dataclass(frozen=True) +class NodeMetaData: + description: str + namespace: str -def _create_url(func_name): - raise NotImplementedError("Not implemented yet.") - -def _replace_functions_with_source_code(dag): - """Replace functions in the DAG with their source code. +def plot_tt_dag( + date_str: str, + root: Path, + node_selector: NodeSelector | None = None, + title: str = "", + include_params: bool = True, + include_other_objects: bool = False, + show_node_description: bool = False, + output_path: Path | None = None, +) -> go.Figure: + """Plot the TT DAG. Parameters ---------- - dag : networkx.DiGraph - The graph whose nodes can contain Python functions in the node attributes. + date_str + The date string. + root + The root path. + node_selector + The node selector. Default is None, i.e. the entire DAG is plotted. + title + The title of the plot. + include_params + Include param functions when plotting the DAG. + include_other_objects + Include backend policy inputs when plotting the DAG. Most users will not want + this. + show_node_description + Show a description of the node when hovering over it. + output_path + If provided, the figure is written to the path. Returns ------- - dag : nx.DiGraph - The graph whose nodes can contain a string of the source code of Python - function. - + The figure. """ - for node in dag.nodes: - if "function" in dag.nodes[node]: - function = dag.nodes[node].pop("function") - if isinstance(function, functools.partial): - source = inspect.getsource(function.func) - else: - source = inspect.getsource(function) - dag.nodes[node]["source_code_highlighted"] = _highlight_source_code(source) - dag.nodes[node]["source_code"] = source - else: - dag.nodes[node]["source_code"] = "Column in data" + environment = main( + inputs={ + "date_str": date_str, + "orig_policy_objects__root": root, + "backend": "numpy", + }, + output_names=["policy_environment"], + )["policy_environment"] + + if node_selector: + qname_node_selector = _QNameNodeSelector( + qnames=[dt.qname_from_tree_path(qn) for qn in node_selector.node_paths], + type=node_selector.type, + order=node_selector.order, + ) + else: + qname_node_selector = None - return dag + dag_with_node_metadata = _get_tt_dag_with_node_metadata( + environment=environment, + node_selector=qname_node_selector, + include_params=include_params, + include_other_objects=include_other_objects, + ) + fig = _plot_dag( + dag=dag_with_node_metadata, + title=title, + show_node_description=show_node_description, + ) + if output_path: + fig.write_html(output_path) + return fig -def _highlight_source_code(source): - """Highlight the source code of functions. - Parameters - ---------- - source : str - Source code of the function. +def plot_interface_dag( + include_fail_and_warn_nodes: bool = True, + show_node_description: bool = False, + output_path: Path | None = None, +) -> go.Figure: + """Plot the full interface DAG.""" + nodes = { + p: dummy_callable(n) if not callable(n) else n + for p, n in load_interface_functions_and_inputs().items() + } + if not include_fail_and_warn_nodes: + nodes = { + p: n for p, n in nodes.items() if not isinstance(n, FailOrWarnFunction) + } - Returns - ------- - highlighted_source : str - The source code of the function in HTML format and highlighted. + dag = dags.create_dag(functions=nodes, targets=None) + + # Add edges manually for InputDependentInterfaceFunction + for name, node_object in nodes.items(): + if isinstance(node_object, InputDependentInterfaceFunction): + for variant in node_object.specs: + for required_func in variant.required_input_qnames: + dag.add_edge(required_func, name) + + for name, node_object in nodes.items(): + f = node_object.function if hasattr(node_object, "function") else node_object + description = inspect.getdoc(f) or "No description available." + namespace = name.split("__")[0] if "__" in name else "top-level" + dag.nodes[name]["node_metadata"] = NodeMetaData( + description=description, + namespace=namespace, + ) - """ - lex = lexers.get_lexer_by_name("python") - formatter = HtmlFormatter(full=True) - return highlight(source, lex, formatter) + fig = _plot_dag( + dag=dag, + title="Full Interface DAG", + show_node_description=show_node_description, + ) + if output_path: + fig.write_html(output_path) -def _create_pygraphviz_layout(dag, orientation): - # Convert node labels to integers because some names cannot be handled by pydot. - dag_w_integer_nodes = nx.relabel.convert_node_labels_to_integers(dag) + return fig - # Remove all node attributes from the graph, because they cannot be serialized to - # JSON. - for node in dag_w_integer_nodes.nodes: - for attr in list(dag_w_integer_nodes.nodes[node]): - dag_w_integer_nodes.nodes[node].pop(attr) - # Create the integer layout. - integer_layout = nx.nx_agraph.pygraphviz_layout(dag_w_integer_nodes, prog="dot") +def _get_tt_dag_with_node_metadata( + environment: NestedPolicyEnvironment, + node_selector: _QNameNodeSelector | None = None, + include_params: bool = True, + include_other_objects: bool = False, +) -> nx.DiGraph: + """Get the TT DAG to plot.""" + qname_environment = dt.flatten_to_qnames(environment) + qnames_to_plot = list(qname_environment) + if node_selector: + # Node selector might contain derived functions that are not in qnames_to_plot + qnames_to_plot.extend(node_selector.qnames) + + qnames_policy_inputs = [ + k + for k, v in qname_environment.items() + if isinstance(v, PolicyInput) and k in qnames_to_plot + ] + tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" + env = main( + inputs={ + "policy_environment": environment, + "labels__processed_data_columns": qnames_policy_inputs, + "targets__qname": qnames_to_plot, + "backend": "numpy", + }, + output_names=[tgt], + )[tgt] - # Remap layout from integers to labels. - integer_to_labels = dict(zip(dag_w_integer_nodes.nodes, dag.nodes)) - layout = { - integer_to_labels[i]: numpy.array(integer_layout[i]) for i in integer_to_labels + all_nodes = { + qn: dummy_callable(n) if not callable(n) else n for qn, n in env.items() } - # Convert nonnegative integer coordinates from the layout to unit cube. - min_x = min(i[0] for i in layout.values()) - min_y = min(i[1] for i in layout.values()) - min_ = numpy.array([min_x, min_y]) - - max_x = max(i[0] for i in layout.values()) - max_y = max(i[1] for i in layout.values()) - max_ = numpy.array([max_x, max_y]) - - for k, v in layout.items(): - layout[k] = (v - (max_ + min_) / 2) / ((max_ - min_) / 2).clip(1) - - if orientation == "v": - layout_df = numpy.transpose(pd.DataFrame.from_dict(layout)) - - elif orientation == "h": - layout_df = numpy.transpose(pd.DataFrame.from_dict(layout)) - layout_df[[0, 1]] = layout_df[[1, 0]] - layout_df[0] = layout_df[0] * (-1) + complete_dag = dags.create_dag(functions=all_nodes, targets=qnames_to_plot) + if node_selector is None: + selected_dag = complete_dag else: - raise ValueError( - f"orientation must be one of 'v', 'h', but got {orientation!r}" + selected_dag = _create_dag_with_selected_nodes( + complete_dag=complete_dag, + node_selector=node_selector, ) - return layout_df - + if not include_params: + selected_dag.remove_nodes_from( + [qn for qn, v in env.items() if isinstance(v, (ParamObject, ParamFunction))] + ) + if not include_other_objects: + selected_dag.remove_nodes_from( + [ + qn + for qn, n in env.items() + if not isinstance(n, (ColumnFunction, ParamFunction, ParamObject)) + ] + ) -def _to_list(scalar_or_iter): - """Convert scalars and iterables to list. + node_descriptions = _get_node_descriptions(env) + # Add Node Metadata to DAG + for qn in all_nodes: + if qn not in selected_dag.nodes(): + continue + description = node_descriptions[qn] + node_namespace = qn.split("__")[0] if "__" in qn else "top-level" + selected_dag.nodes[qn]["node_metadata"] = NodeMetaData( + description=description, + namespace=node_namespace, + ) - Parameters - ---------- - scalar_or_iter : str or list + return selected_dag + + +def _get_node_descriptions(env: QNameSpecializedEnvironment0) -> dict[str, str]: + """Get the descriptions of the nodes in the environment.""" + out = {} + for qn, n in env.items(): + descr = None + if hasattr(n, "description"): + if isinstance(n.description, str): + descr = n.description + elif ( + isinstance(n.description, dict) + and "en" in n.description + and n.description["en"] is not None + ): + descr = n.description["en"] + if not descr: + descr = "No description available." + # Wrap description at 79 characters + descr = textwrap.fill(descr, width=79) + out[qn] = descr + return out + + +@overload +def dummy_callable(obj: PolicyInput) -> PolicyFunction: ... + + +@overload +def dummy_callable(obj: ParamObject) -> ParamFunction: ... + + +@overload +def dummy_callable(obj: InterfaceInput) -> InterfaceFunction: ... + + +def dummy_callable(obj: ModuleType | str | float | bool) -> Callable[[], Any]: + """Dummy callable, for plotting and checking DAG completeness.""" + + def dummy(): # type: ignore[no-untyped-def] # noqa: ANN202 + pass + + if isinstance(obj, PolicyInput): + return policy_function( + leaf_name=obj.leaf_name, + start_date=obj.start_date, + end_date=obj.end_date, + foreign_key_type=obj.foreign_key_type, + )(dummy) + if isinstance(obj, ParamObject): + return param_function( + leaf_name=obj.leaf_name, + start_date=obj.start_date, + end_date=obj.end_date, + )(dummy) + if isinstance(obj, InterfaceInput): + return interface_function( + leaf_name=obj.leaf_name, + in_top_level_namespace=obj.in_top_level_namespace, + )(dummy) + return dummy + + +def _create_dag_with_selected_nodes( + complete_dag: nx.DiGraph, + node_selector: _QNameNodeSelector, +) -> nx.DiGraph: + """Select nodes based on the node selector.""" + selected_nodes: set[str] = set() + if node_selector.type == "nodes": + selected_nodes.update(node_selector.qnames) + elif node_selector.type == "ancestors": + for node in node_selector.qnames: + selected_nodes.update( + _kth_order_predecessors(complete_dag, node, order=node_selector.order) + if node_selector.order + else list(nx.ancestors(complete_dag, node)) + ) + elif node_selector.type == "descendants": + for node in node_selector.qnames: + selected_nodes.update( + _kth_order_successors(complete_dag, node, order=node_selector.order) + if node_selector.order + else list(nx.descendants(complete_dag, node)) + ) + elif node_selector.type == "neighbors": + order = node_selector.order or 1 + for node in node_selector.qnames: + selected_nodes.update(_kth_order_neighbors(complete_dag, node, order=order)) + else: + msg = ( + f"Invalid node selector type: {node_selector.type}. " + "Choose one of 'nodes', 'ancestors', 'descendants', or 'neighbors'." + ) + raise ValueError(msg) - Returns - ------- - list + dag_copy = copy.deepcopy(complete_dag) + dag_copy.remove_nodes_from(set(complete_dag.nodes) - set(selected_nodes)) + return dag_copy - Examples - -------- - >>> _to_list("a") - ['a'] - >>> _to_list(["b"]) - ['b'] - """ - return ( - [scalar_or_iter] - if isinstance(scalar_or_iter, str | dict) - else list(scalar_or_iter) +def _plot_dag( + dag: nx.DiGraph, + title: str, + show_node_description: bool, +) -> go.Figure: + """Plot the DAG.""" + nice_dag = nx.relabel_nodes( + dag, {qn: qn.replace("__", "<br>") for qn in dag.nodes()} ) + pos = nx.nx_agraph.pygraphviz_layout(nice_dag, prog="dot", args="-Grankdir=LR") + # Create edge traces with arrows + edge_traces = [] + annotations = [] + + for edge in nice_dag.edges(): + x0, y0 = pos[edge[0]] + x1, y1 = pos[edge[1]] + + # Calculate the direction vector + dx = x1 - x0 + dy = y1 - y0 + length = numpy.sqrt(dx**2 + dy**2) + + if length > 0: + # Normalize the direction vector + dx = dx / length + dy = dy / length + + # Calculate start and end points with symmetric offsets + offset = 50 # Offset in pygraphviz coordinate units + x0 = x0 + dx * offset + y0 = y0 + dy * offset + x1 = x1 - dx * offset + y1 = y1 - dy * offset + + # Create the edge line + edge_trace = go.Scatter( + x=[x0, x1], + y=[y0, y1], + line={"width": 1.5, "color": "#888"}, + hoverinfo="none", + mode="lines", + ) + edge_traces.append(edge_trace) + + # Add arrow using Plotly annotation + annotations.append( + { + "x": x1, + "y": y1, + "ax": x0, + "ay": y0, + "xref": "x", + "yref": "y", + "axref": "x", + "ayref": "y", + "arrowhead": 2, + "arrowsize": 1.25, + "arrowwidth": 2, + "arrowcolor": "#888", + "showarrow": True, + "text": "", + } + ) -def _convert_non_dict_selectors(selectors_): - selectors = [i for i in selectors_ if isinstance(i, dict)] - str_selectors = [i for i in selectors_ if not isinstance(i, dict)] - - if str_selectors: - selector = {"node": str_selectors, "type": "nodes", "select": True} - selectors += [selector] - - return selectors - - -def _separate_selectors_and_deselectors(selectors_): - selectors = [] - deselectors = [] - for selector in selectors_: - if selector.get("select", True): - selectors.append(selector) - else: - deselectors.append(selector) - - return selectors, deselectors + # Create node trace + node_x = [] + node_y = [] + node_text = [] + node_colors = [] + + # Create namespace to color mapping with unique colors + top_level_namespaces = { + dag.nodes[node]["node_metadata"].namespace + for node in dag.nodes() + if "node_metadata" in dag.nodes[node] + } + n_namespaces = len(top_level_namespaces) + namespace_colors = { + namespace: hsl_to_hex(hue=i / n_namespaces, saturation=0.7, lightness=0.5) + for i, namespace in enumerate(sorted(top_level_namespaces)) + } + for node in nice_dag.nodes(): + metadata: NodeMetaData = nice_dag.nodes[node]["node_metadata"] -def _apply_selectors_and_deselectors(dag, selectors, deselectors): - if selectors: - selected_nodes = set().union( - *[_get_selected_nodes(dag, selector) for selector in selectors] + x, y = pos[node] + node_x.append(x) + node_y.append(y) + node_text.append( + node + "<br><br>" + metadata.description.replace("\n", "<br>") + if show_node_description + else node ) - else: - selected_nodes = set(dag.nodes) - selected_nodes_not_in_dag = selected_nodes - set(dag.nodes) - if selected_nodes_not_in_dag: - raise ValueError( - "The following selected nodes are not in the DAG:" - f"\n{format_list_linewise(selected_nodes_not_in_dag)}" + node_color = ( + "#1f77b4" # blue + if metadata.namespace == "top-level" + else namespace_colors[metadata.namespace] ) - - deselected_nodes = set().union( - *[_get_selected_nodes(dag, deselector) for deselector in deselectors] + node_colors.append(node_color) + + node_trace = go.Scatter( + x=node_x, + y=node_y, + mode="markers", + hoverinfo="text", + text=node_text, + hoverlabel={ + "bgcolor": "white", + "font": {"color": "black"}, + "bordercolor": "lightgray", + }, + marker={ + "showscale": False, + "color": node_colors, + "size": 25, + "line": {"width": 2, "color": "white"}, + }, ) - deselected_nodes_not_in_dag = deselected_nodes - set(dag.nodes) - if deselected_nodes_not_in_dag: - raise ValueError( - "The following de-selected nodes are not in the DAG:" - f"\n{format_list_linewise(deselected_nodes_not_in_dag)}" - ) - - nodes_to_be_removed = set(dag.nodes) - set(selected_nodes) | set(deselected_nodes) - - dag.remove_nodes_from(nodes_to_be_removed) - - return dag - - -def _get_selected_nodes(dag, selector): - if selector["type"] == "nodes": - selected_nodes = _to_list(selector["node"]) - elif selector["type"] == "ancestors": - selected_nodes = _node_and_ancestors( - dag, selector["node"], selector.get("order", None) - ) - elif selector["type"] == "descendants": - selected_nodes = _node_and_descendants( - dag, selector["node"], selector.get("order", None) - ) - elif selector["type"] in ["neighbors", "neighbours"]: - selected_nodes = list( - _kth_order_neighbors(dag, selector["node"], selector.get("order", 1)) - ) - else: - raise NotImplementedError( - f"Selector type {selector['type']!r} is not defined. " - "Allowed are only 'nodes', 'ancestors', 'descendants', or 'neighbors'." - ) - - return set(selected_nodes) - - -def _node_and_ancestors(dag, node, order): - ancestors = list(nx.ancestors(dag, node)) - if order: - ancestors = list(_kth_order_predecessors(dag, node, order=order)) - return [node, *ancestors] - - -def _node_and_descendants(dag, node, order): - descendants = list(nx.descendants(dag, node)) - if order: - descendants = list(_kth_order_successors(dag, node, order=order)) - return [node, *descendants] + # Create the figure with specified canvas size + return go.Figure( + data=[*edge_traces, node_trace], + layout=go.Layout( + title=title, + titlefont_size=16, + showlegend=False, + hovermode="closest", + margin={"b": 40, "l": 40, "r": 40, "t": 60}, + width=1800, + height=1200, + annotations=annotations, + xaxis={ + "showgrid": False, + "zeroline": False, + "showticklabels": False, + }, + yaxis={ + "showgrid": False, + "zeroline": False, + "showticklabels": False, + }, + ), + ) -def _kth_order_neighbors(dag, node, order): - yield node +def _kth_order_neighbors( + dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None +) -> set[str]: + base = base or set() + base.add(node) if order >= 1: for predecessor in dag.predecessors(node): - yield from _kth_order_predecessors(dag, predecessor, order=order - 1) - + base.update( + _kth_order_predecessors(dag, predecessor, order=order - 1, base=base) + ) for successor in dag.successors(node): - yield from _kth_order_successors(dag, successor, order=order - 1) - + base.update( + _kth_order_successors(dag, successor, order=order - 1, base=base) + ) + return base -def _kth_order_predecessors(dag, node, order): - yield node +def _kth_order_predecessors( + dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None +) -> set[str]: + base = base or set() + base.add(node) if order >= 1: for predecessor in dag.predecessors(node): - yield from _kth_order_predecessors(dag, predecessor, order=order - 1) - + base.update( + _kth_order_predecessors(dag, predecessor, order=order - 1, base=base) + ) + return base -def _kth_order_successors(dag, node, order): - yield node +def _kth_order_successors( + dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None +) -> set[str]: + base = base or set() + base.add(node) if order >= 1: for successor in dag.successors(node): - yield from _kth_order_successors(dag, successor, order=order - 1) + base.update( + _kth_order_successors(dag, successor, order=order - 1, base=base) + ) + return base + + +def hsl_to_hex(hue: float, saturation: float, lightness: float) -> str: + """Convert HSL color values to hexadecimal color code. + + Parameters + ---------- + hue : float + Hue value between 0 and 1, representing the position on the color wheel + (0 = red, 0.33 = green, 0.66 = blue, 1 = red again) + saturation : float + Saturation value between 0 and 1, representing color intensity + (0 = grayscale, 1 = fully saturated) + lightness : float + Lightness value between 0 and 1, representing brightness + (0 = black, 0.5 = normal, 1 = white) + + Returns + ------- + str + Hexadecimal color code in the format '#RRGGBB' + """ + + rgb = colorsys.hls_to_rgb(h=hue, l=lightness, s=saturation) + return f"#{int(rgb[0] * 255):02x}{int(rgb[1] * 255):02x}{int(rgb[2] * 255):02x}" diff --git a/src/ttsim/policy_environment.py b/src/ttsim/policy_environment.py deleted file mode 100644 index ae338d1c0b..0000000000 --- a/src/ttsim/policy_environment.py +++ /dev/null @@ -1,466 +0,0 @@ -from __future__ import annotations - -import copy -import datetime -import itertools -from typing import TYPE_CHECKING, Any, Literal - -import dags.tree as dt -import numpy -import optree - -from ttsim.column_objects_param_function import ( - DEFAULT_END_DATE, - ColumnObject, - ParamFunction, - policy_function, -) -from ttsim.config import numpy_or_jax as np -from ttsim.param_objects import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt1dLookupTableParamValue, - ConsecutiveInt2dLookupTableParamValue, - DictParam, - ParamObject, - PiecewisePolynomialParam, - RawParam, - ScalarParam, -) -from ttsim.piecewise_polynomial import get_piecewise_parameters -from ttsim.shared import ( - merge_trees, - to_datetime, - upsert_tree, -) - -if TYPE_CHECKING: - from ttsim.typing import ( - DashedISOString, - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - GenericCallable, - NestedAny, - NestedAnyTTSIMObject, - NestedColumnObjectsParamFunctions, - NestedParamObjects, - NestedPolicyEnvironment, - OrigParamSpec, - QualNamePolicyEnvironment, - ) - - -def grouping_levels(policy_environment: QualNamePolicyEnvironment) -> tuple[str, ...]: - """The grouping levels of the policy environment.""" - return tuple( - name.rsplit("_", 1)[0] - for name in policy_environment - if name.endswith("_id") and name != "p_id" - ) - - -def policy_environment( - active_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, # noqa: E501 - active_tree_with_params: FlatOrigParamSpecs, - date: datetime.date | DashedISOString, -) -> NestedPolicyEnvironment: - """ - Set up the policy environment for a particular date. - - Parameters - ---------- - root - The directory to load the policy environment from. - date - The date for which the policy system is set up. An integer is - interpreted as the year. - - Returns - ------- - The policy environment for the specified date. - """ - # Check policy date for correct format and convert to datetime.date - date = to_datetime(date) - - a_tree = merge_trees( - left=active_tree_with_column_objects_and_param_functions, - right=active_tree_with_params, - ) - - assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" - a_tree["evaluationsjahr"] = ScalarParam( - leaf_name="evaluationsjahr", - start_date=date, - end_date=date, - value=date.year, - name={"de": "Evaluationsjahr. Implementation wird noch verbessert."}, - description={"de": "Der Zeitpunkt, für den die Berechnung durchgeführt wird."}, - unit="Year", - reference_period=None, - note=None, - reference=None, - ) - return a_tree - - -def _convert_plain_functions_to_policy_functions( - tree: NestedAny, -) -> NestedAnyTTSIMObject: - """Convert all plain functions in a tree to PolicyFunctions. - - Convenience function if users do not want to apply decorators in modifications of - the taxes and transfers system. - - Parameters - ---------- - tree - The tree of functions to convert. - - Returns - ------- - converted_tree - The converted tree. - - """ - converted = optree.tree_map( - lambda leaf: _convert_to_policy_function_if_callable(leaf), - tree, - ) - return converted - - -def _convert_to_policy_function_if_callable( - obj: ColumnObject | ParamFunction | GenericCallable | Any, -) -> ColumnObject: - """Convert a Callable to a PolicyFunction if it is not already a ColumnObject or - ParamFunction. If it is not a Callable, return it unchanged. - - Parameters - ---------- - obj - The object to convert. - - Returns - ------- - converted_object - The converted object. - - """ - if isinstance(obj, (ColumnObject, ParamFunction)) or not callable(obj): - converted_object = obj - else: - converted_object = policy_function(leaf_name=obj.__name__)(obj) - - return converted_object - - -def active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, - date: datetime.date, -) -> NestedColumnObjectsParamFunctions: - """ - Traverse `root` and return all ColumnObjectParamFunctions for a given date. - - Parameters - ---------- - root: - The directory to traverse. - date: - The date for which policy objects should be loaded. - - Returns - ------- - A tree of active ColumnObjectParamFunctions. - """ - - flat_objects_tree = { - (*orig_path[:-2], obj.leaf_name): obj - for orig_path, obj in orig_tree_with_column_objects_and_param_functions.items() - if obj.is_active(date) - } - - return dt.unflatten_from_tree_paths(flat_objects_tree) - - -def active_tree_with_params( - orig_tree_with_params: FlatOrigParamSpecs, - date: datetime.date, -) -> NestedParamObjects: - """Parse the original yaml tree.""" - flat_tree_with_params = {} - for orig_path, orig_params_spec in orig_tree_with_params.items(): - path_to_keep = orig_path[:-2] - leaf_name = orig_path[-1] - param = _get_one_param( - leaf_name=leaf_name, - spec=orig_params_spec, - date=date, - ) - if param is not None: - flat_tree_with_params[(*path_to_keep, leaf_name)] = param - if orig_params_spec.get("add_jahresanfang", False): - date_jan1 = date.replace(month=1, day=1) - leaf_name_jan1 = f"{leaf_name}_jahresanfang" - param = _get_one_param( - leaf_name=leaf_name_jan1, - spec=orig_params_spec, - date=date_jan1, - ) - if param is not None: - flat_tree_with_params[(*path_to_keep, leaf_name_jan1)] = param - return dt.unflatten_from_tree_paths(flat_tree_with_params) - - -def _get_one_param( # noqa: PLR0911 - leaf_name: str, - spec: OrigParamSpec, - date: datetime.date, -) -> ParamObject: - """Parse the original specification found in the yaml tree to a ParamObject.""" - cleaned_spec = _clean_one_param_spec(leaf_name=leaf_name, spec=spec, date=date) - - if cleaned_spec is None: - return None - elif spec["type"] == "scalar": - return ScalarParam(**cleaned_spec) - elif spec["type"] == "dict": - return DictParam(**cleaned_spec) - elif spec["type"].startswith("piecewise_"): - cleaned_spec["value"] = get_piecewise_parameters( - leaf_name=leaf_name, - func_type=spec["type"], - parameter_dict=cleaned_spec["value"], - ) - return PiecewisePolynomialParam(**cleaned_spec) - elif spec["type"] == "consecutive_int_1d_lookup_table": - cleaned_spec["value"] = get_consecutive_int_1d_lookup_table_param_value( - cleaned_spec["value"] - ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) - elif spec["type"] == "consecutive_int_2d_lookup_table": - cleaned_spec["value"] = get_consecutive_int_2d_lookup_table_param_value( - cleaned_spec["value"] - ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) - elif spec["type"] == "month_based_phase_inout_of_age_thresholds": - cleaned_spec["value"] = ( - get_month_based_phase_inout_of_age_thresholds_param_value( - cleaned_spec["value"] - ) - ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) - elif spec["type"] == "year_based_phase_inout_of_age_thresholds": - cleaned_spec["value"] = ( - get_year_based_phase_inout_of_age_thresholds_param_value( - cleaned_spec["value"] - ) - ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) - elif spec["type"] == "require_converter": - return RawParam(**cleaned_spec) - else: - raise ValueError(f"Unknown parameter type: {spec['type']} for {leaf_name}") - - -def _clean_one_param_spec( - leaf_name: str, spec: OrigParamSpec, date: datetime.date -) -> dict[str, Any] | None: - """Prepare the specification of one parameter for creating a ParamObject.""" - policy_dates = numpy.sort([key for key in spec if isinstance(key, datetime.date)]) - idx = numpy.searchsorted(policy_dates, date, side="right") # type: ignore[call-overload] - if idx == 0: - return None - - out: dict[str, Any] = {} - out["leaf_name"] = leaf_name - out["start_date"] = policy_dates[idx - 1] - out["end_date"] = ( - policy_dates[idx] - datetime.timedelta(days=1) - if len(policy_dates) > idx - else DEFAULT_END_DATE - ) - out["unit"] = spec.get("unit", None) - out["reference_period"] = spec.get("reference_period", None) - out["name"] = spec["name"] - out["description"] = spec["description"] - current_spec = copy.deepcopy(spec[policy_dates[idx - 1]]) - out["note"] = current_spec.pop("note", None) - out["reference"] = current_spec.pop("reference", None) - if len(current_spec) == 0: - return None - elif len(current_spec) == 1 and "updates_previous" in current_spec: - raise ValueError( - f"'updates_previous' cannot be specified as the only element, found{spec}" - ) - # Parameter ceased to exist - elif spec["type"] == "scalar": - assert "updates_previous" not in current_spec, ( - "'updates_previous' cannot be specified for scalar parameters" - ) - out["value"] = current_spec["value"] - else: - out["value"] = _get_param_value([spec[d] for d in policy_dates[:idx]]) - return out - - -def _get_param_value( - relevant_specs: list[dict[str | int, Any]], -) -> dict[str | int, Any]: - """Get the value of a parameter. - - Implementation is a recursion in order to handle the 'updates_previous' machinery. - - """ - current_spec = relevant_specs[-1].copy() - updates_previous = current_spec.pop("updates_previous", False) - current_spec.pop("note", None) - current_spec.pop("reference", None) - if updates_previous: - assert len(relevant_specs) > 1, ( - "'updates_previous' cannot be missing in the initial spec, found " - f"{relevant_specs}" - ) - return upsert_tree( - base=_get_param_value(relevant_specs=relevant_specs[:-1]), - to_upsert=current_spec, - ) - else: - return current_spec - - -def get_consecutive_int_1d_lookup_table_param_value( - raw: dict[int, float | int | bool], -) -> ConsecutiveInt1dLookupTableParamValue: - """Get the parameters for a 1-dimensional lookup table.""" - lookup_keys = numpy.asarray(sorted(raw)) - assert (lookup_keys - min(lookup_keys) == np.arange(len(lookup_keys))).all(), ( - "Dictionary keys must be consecutive integers." - ) - - return ConsecutiveInt1dLookupTableParamValue( - base_to_subtract=min(lookup_keys), - values_to_look_up=np.asarray([raw[k] for k in lookup_keys]), - ) - - -def get_consecutive_int_2d_lookup_table_param_value( - raw: dict[int, dict[int, float | int | bool]], -) -> ConsecutiveInt2dLookupTableParamValue: - """Get the parameters for a 2-dimensional lookup table.""" - lookup_keys_rows = numpy.asarray(sorted(raw.keys())) - lookup_keys_cols = numpy.asarray(sorted(raw[lookup_keys_rows[0]].keys())) - for col_value in raw.values(): - lookup_keys_this_col = numpy.asarray(sorted(col_value.keys())) - assert (lookup_keys_cols == lookup_keys_this_col).all(), ( - "Column keys must be the same in each column, got:" - f"{lookup_keys_cols} and {lookup_keys_this_col}" - ) - for lookup_keys in lookup_keys_rows, lookup_keys_cols: - assert (lookup_keys - min(lookup_keys) == np.arange(len(lookup_keys))).all(), ( - f"Dictionary keys must be consecutive integers, got: {lookup_keys}" - ) - return ConsecutiveInt2dLookupTableParamValue( - base_to_subtract_rows=min(lookup_keys_rows), - base_to_subtract_cols=min(lookup_keys_cols), - values_to_look_up=np.array( - [ - raw[row][col] - for row, col in itertools.product(lookup_keys_rows, lookup_keys_cols) - ] - ).reshape(len(lookup_keys_rows), len(lookup_keys_cols)), - ) - - -def _year_fraction(r: dict[Literal["years", "months"], int]) -> float: - return r["years"] + r["months"] / 12 - - -def get_month_based_phase_inout_of_age_thresholds_param_value( - raw: dict[str | int, Any], -) -> dict[int, float]: - """Get the parameters for month-based phase-in/phase-out of age thresholds. - - Fills up months for which no parameters are given with the last given value. - """ - - def _m_since_ad(y: int, m: int) -> int: - return y * 12 + (m - 1) - - def _fill_phase_inout( - raw: dict[int, dict[int, dict[Literal["years", "months"], int]]], - first_m_since_ad_phase_inout: int, - last_m_since_ad_phase_inout: int, - ) -> dict[int, float]: - lookup_table = {} - for y, m_dict in raw.items(): - for m, v in m_dict.items(): - lookup_table[_m_since_ad(y=y, m=m)] = _year_fraction(v) - for m in range(first_m_since_ad_phase_inout, last_m_since_ad_phase_inout): - if m not in lookup_table: - lookup_table[m] = lookup_table[m - 1] - return lookup_table - - first_m_since_ad_to_consider = _m_since_ad(y=raw.pop("first_year_to_consider"), m=1) - last_m_since_ad_to_consider = _m_since_ad(y=raw.pop("last_year_to_consider"), m=12) - assert all(isinstance(k, int) for k in raw) - first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] - first_month_phase_inout: int = min(raw[first_year_phase_inout].keys()) - first_m_since_ad_phase_inout = _m_since_ad( - y=first_year_phase_inout, m=first_month_phase_inout - ) - last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] - last_month_phase_inout: int = max(raw[last_year_phase_inout].keys()) - last_m_since_ad_phase_inout = _m_since_ad( - y=last_year_phase_inout, m=last_month_phase_inout - ) - assert first_m_since_ad_to_consider <= first_m_since_ad_phase_inout - assert last_m_since_ad_to_consider >= last_m_since_ad_phase_inout - before_phase_inout: dict[int, float] = { - b_m: _year_fraction(raw[first_year_phase_inout][first_month_phase_inout]) - for b_m in range(first_m_since_ad_to_consider, first_m_since_ad_phase_inout) - } - during_phase_inout: dict[int, float] = _fill_phase_inout( - raw=raw, # type: ignore[arg-type] - first_m_since_ad_phase_inout=first_m_since_ad_phase_inout, - last_m_since_ad_phase_inout=last_m_since_ad_phase_inout, - ) - after_phase_inout: dict[int, float] = { - b_m: _year_fraction(raw[last_year_phase_inout][last_month_phase_inout]) - for b_m in range( - last_m_since_ad_phase_inout + 1, last_m_since_ad_to_consider + 1 - ) - } - return get_consecutive_int_1d_lookup_table_param_value( - {**before_phase_inout, **during_phase_inout, **after_phase_inout} - ) - - -def get_year_based_phase_inout_of_age_thresholds_param_value( - raw: dict[str | int, Any], -) -> dict[int, float]: - """Get the parameters for year-based phase-in/phase-out of age thresholds. - - Requires all years to be given. - """ - - first_year_to_consider = raw.pop("first_year_to_consider") - last_year_to_consider = raw.pop("last_year_to_consider") - assert all(isinstance(k, int) for k in raw) - first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] - last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] - assert first_year_to_consider <= first_year_phase_inout - assert last_year_to_consider >= last_year_phase_inout - before_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[first_year_phase_inout]) - for b_y in range(first_year_to_consider, first_year_phase_inout) - } - during_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[b_y]) # type: ignore[misc] - for b_y in raw - } - after_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[last_year_phase_inout]) - for b_y in range(last_year_phase_inout + 1, last_year_to_consider + 1) - } - return get_consecutive_int_1d_lookup_table_param_value( - {**before_phase_inout, **during_phase_inout, **after_phase_inout} - ) diff --git a/src/ttsim/stale_code_storage.py b/src/ttsim/stale_code_storage.py new file mode 100644 index 0000000000..1d86d307e3 --- /dev/null +++ b/src/ttsim/stale_code_storage.py @@ -0,0 +1,147 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +import optree + +from ttsim.tt_dag_elements import ( + ColumnObject, + ParamFunction, + ParamObject, + policy_function, +) + +if TYPE_CHECKING: + from collections.abc import Callable, Mapping + + NestedAnyTTSIMObject = Mapping[ + str, + ColumnObject + | ParamFunction + | ParamObject + | int + | float + | bool + | BoolColumn + | IntColumn + | FloatColumn + | DatetimeColumn + | "NestedAnyTTSIMObject", + ] + NestedAny = Mapping[str, Any | "NestedAnyTTSIMObject"] + """Tree mapping TTSIM paths to any type of TTSIM object.""" + + +def _convert_plain_functions_to_policy_functions( + tree: NestedAny, +) -> NestedAnyTTSIMObject: + """Convert all plain functions in a tree to PolicyFunctions. + + Convenience function if users do not want to apply decorators in modifications of + the taxes and transfers system. + + Parameters + ---------- + tree + The tree of functions to convert. + + Returns + ------- + converted_tree + The converted tree. + + """ + converted: NestedAnyTTSIMObject = optree.tree_map( + lambda leaf: _convert_to_policy_function_if_callable(leaf), + tree, # type: ignore[arg-type] + ) # type: ignore[assignment] + return converted + + +def _convert_to_policy_function_if_callable( + obj: ColumnObject | ParamFunction | Callable[..., Any] | Any, +) -> ColumnObject: + """Convert a Callable to a PolicyFunction if it is not already a ColumnObject or + ParamFunction. If it is not a Callable, return it unchanged. + + Parameters + ---------- + obj + The object to convert. + + Returns + ------- + converted_object + The converted object. + + """ + if isinstance(obj, (ColumnObject, ParamFunction)) or not callable(obj): + converted_object = obj + else: + converted_object = policy_function(leaf_name=obj.__name__)(obj) + + return converted_object + + +@interface_function() +def name_of_last_branch_element_is_not_the_functions_leaf_name( + functions_tree: NestedColumnObjectsParamFunctions, +) -> None: + """Raise error if a PolicyFunction does not have the same leaf name as the last + branch element of the tree path. + """ + + for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): + if tree_path[-1] != function.leaf_name: + raise KeyError( + f""" + The name of the last branch element of the functions tree must be the + same as the leaf name of the PolicyFunction. The tree path {tree_path} + is not compatible with the PolicyFunction {function.leaf_name}. + """ + ) + + +@pytest.mark.parametrize( + "functions_tree", + [ + {"foo": policy_function(leaf_name="bar")(return_one)}, + ], +) +def test_fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( + functions_tree: NestedColumnObjectsParamFunctions, +): + with pytest.raises(KeyError): + name_of_last_branch_element_is_not_the_functions_leaf_name(functions_tree) + + +def check_series_has_expected_type( + series: pd.Series, internal_type: numpy.dtype, dnp: ModuleType +) -> bool: + """Checks whether used series has already expected internal type. + + Currently not used, but might become useful again. + + Parameters + ---------- + series: pandas.Series or pandas.DataFrame or dict of pandas.Series + Data provided by the user. + internal_type: TypeVar + One of the types used by TTSIM. + + Returns + ------- + Bool + + """ + if ( + (internal_type == float) & (is_float_dtype(series)) + or (internal_type == int) & (is_integer_dtype(series)) + or (internal_type == bool) & (is_bool_dtype(series)) + or (internal_type == dnp.datetime64) & (is_datetime64_any_dtype(series)) + ): + out = True + else: + out = False + + return out diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index 83ae003584..2a4d38e13f 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -1,17 +1,23 @@ from __future__ import annotations +import inspect from functools import lru_cache -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal +import dags import dags.tree as dt import optree import pandas as pd import yaml from ttsim import main, merge_trees -from ttsim.config import numpy_or_jax as np -from ttsim.convert_nested_data import nested_data_to_df_with_nested_columns -from ttsim.shared import to_datetime +from ttsim.interface_dag_elements.data_converters import ( + nested_data_to_df_with_nested_columns, +) +from ttsim.interface_dag_elements.fail_if import format_list_linewise +from ttsim.interface_dag_elements.shared import to_datetime +from ttsim.plot_dag import dummy_callable +from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput # Set display options to show all columns without truncation pd.set_option("display.max_columns", None) @@ -20,8 +26,11 @@ if TYPE_CHECKING: import datetime from pathlib import Path + from types import ModuleType - from ttsim.typing import ( + from ttsim.interface_dag_elements.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, NestedData, NestedInputStructureDict, NestedPolicyEnvironment, @@ -30,14 +39,18 @@ @lru_cache(maxsize=100) def cached_policy_environment( - date: datetime.date, root: Path + date: datetime.date, + root: Path, + backend: Literal["numpy", "jax"], ) -> NestedPolicyEnvironment: return main( inputs={ "date": date, - "root": root, + "orig_policy_objects__root": root, + "backend": backend, + "include_fail_and_warn_nodes": False, }, - targets=["policy_environment"], + output_names=["policy_environment"], )["policy_environment"] @@ -52,18 +65,20 @@ def __init__( path: Path, date: datetime.date, test_dir: Path, + xnp: ModuleType, ) -> None: self.info = info - self.input_tree = optree.tree_map(np.array, input_tree) + self.input_tree = optree.tree_map(xnp.array, input_tree) self.expected_output_tree = expected_output_tree self.path = path self.date = date self.test_dir = test_dir + self.xnp = xnp @property def target_structure(self) -> NestedInputStructureDict: flat_target_structure = dict.fromkeys( - dt.flatten_to_tree_paths(self.expected_output_tree) + dt.flatten_to_tree_paths(self.expected_output_tree), ) return dt.unflatten_from_tree_paths(flat_target_structure) @@ -72,53 +87,53 @@ def name(self) -> str: return self.path.relative_to(self.test_dir / "test_data").as_posix() -def execute_test(test: PolicyTest, root: Path, jit: bool = False) -> None: - environment = cached_policy_environment(date=test.date, root=root) +def execute_test( + test: PolicyTest, + root: Path, + backend: Literal["numpy", "jax"], +) -> None: + environment = cached_policy_environment(date=test.date, root=root, backend=backend) if test.target_structure: - nested_result = main( + result_df = main( inputs={ - "data_tree": test.input_tree, + "input_data__tree": test.input_tree, "policy_environment": environment, - "targets_tree": test.target_structure, + "targets__tree": test.target_structure, "rounding": True, - # "jit": jit, + "backend": backend, + "include_fail_and_warn_nodes": False, }, - targets=["nested_results"], - )["nested_results"] - else: - nested_result = {} - - if test.expected_output_tree: - expected_df = nested_data_to_df_with_nested_columns( - nested_data_to_convert=test.expected_output_tree, - data_with_p_id=test.input_tree, - ) - result_df = nested_data_to_df_with_nested_columns( - nested_data_to_convert=nested_result, data_with_p_id=test.input_tree - ) - try: - pd.testing.assert_frame_equal( - result_df.sort_index(axis="columns"), - expected_df.sort_index(axis="columns"), - atol=test.info["precision_atol"], - check_dtype=False, + output_names=["results__df_with_nested_columns"], + )["results__df_with_nested_columns"] + + if test.expected_output_tree: + expected_df = nested_data_to_df_with_nested_columns( + nested_data_to_convert=test.expected_output_tree, + data_with_p_id=test.input_tree, ) - except AssertionError as e: - assert set(result_df.columns) == set(expected_df.columns) - cols_with_differences = [] - for col in expected_df.columns: - try: - pd.testing.assert_series_equal( - result_df[col], - expected_df[col], - atol=test.info["precision_atol"], - check_dtype=False, - ) - except AssertionError: - cols_with_differences.append(col) - raise AssertionError( - f"""actual != expected in columns: {cols_with_differences}. + try: + pd.testing.assert_frame_equal( + result_df.sort_index(axis="columns"), + expected_df.sort_index(axis="columns"), + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError as e: + assert set(result_df.columns) == set(expected_df.columns) + cols_with_differences = [] + for col in expected_df.columns: + try: + pd.testing.assert_series_equal( + result_df[col], + expected_df[col], + atol=test.info["precision_atol"], + check_dtype=False, + ) + except AssertionError: + cols_with_differences.append(col) + raise AssertionError( + f"""actual != expected in columns: {cols_with_differences}. actual[cols_with_differences]: @@ -127,11 +142,15 @@ def execute_test(test: PolicyTest, root: Path, jit: bool = False) -> None: expected[cols_with_differences]: {expected_df[cols_with_differences]} -""" - ) from e +""", + ) from e -def load_policy_test_data(test_dir: Path, policy_name: str) -> dict[str, PolicyTest]: +def load_policy_test_data( + test_dir: Path, + policy_name: str, + xnp: ModuleType, +) -> dict[str, PolicyTest]: """Load all tests found by recursively searching test_dir / "test_data" / policy_name @@ -140,7 +159,6 @@ def load_policy_test_data(test_dir: Path, policy_name: str) -> dict[str, PolicyT If policy_name is empty, all tests found in test_dir / "test_data" are loaded. """ - out = {} for path_to_yaml in (test_dir / "test_data" / policy_name).glob("**/*.yaml"): if _is_skipped(path_to_yaml): @@ -153,6 +171,7 @@ def load_policy_test_data(test_dir: Path, policy_name: str) -> dict[str, PolicyT test_dir=test_dir, raw_test_data=raw_test_data, path_to_yaml=path_to_yaml, + xnp=xnp, ) out[this_test.name] = this_test @@ -167,6 +186,7 @@ def _get_policy_test_from_raw_test_data( test_dir: Path, path_to_yaml: Path, raw_test_data: NestedData, + xnp: ModuleType, ) -> PolicyTest: """Get a list of PolicyTest objects from raw test data. @@ -174,28 +194,30 @@ def _get_policy_test_from_raw_test_data( raw_test_data: The raw test data. path_to_yaml: The path to the YAML file. - Returns: + Returns + ------- A list of PolicyTest objects. """ test_info: NestedData = raw_test_data.get("info", {}) input_tree: NestedData = dt.unflatten_from_tree_paths( { - k: np.array(v) + k: xnp.array(v) for k, v in dt.flatten_to_tree_paths( merge_trees( left=raw_test_data["inputs"].get("provided", {}), right=raw_test_data["inputs"].get("assumed", {}), - ) + ), ).items() - } + }, ) + expected_output_tree: NestedData = dt.unflatten_from_tree_paths( { - k: np.array(v) + k: xnp.array(v) for k, v in dt.flatten_to_tree_paths( - raw_test_data.get("outputs", {}) + raw_test_data.get("outputs", {}), ).items() - } + }, ) date: datetime.date = to_datetime(path_to_yaml.parent.name) @@ -207,4 +229,56 @@ def _get_policy_test_from_raw_test_data( path=path_to_yaml, date=date, test_dir=test_dir, + xnp=xnp, ) + + +def check_env_completeness( + name: str, + date: datetime.date, + orig_policy_objects: dict[ + str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs + ], +) -> None: + environment = main( + inputs={ + "date": date, + "backend": "numpy", + **orig_policy_objects, + }, + output_names=["policy_environment"], + )["policy_environment"] + qname_environment = dt.flatten_to_qnames(environment) + qnames_policy_inputs = [ + k for k, v in qname_environment.items() if isinstance(v, PolicyInput) + ] + tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" + qname_env_with_derived_functions = main( + inputs={ + "policy_environment": environment, + "labels__processed_data_columns": qnames_policy_inputs, + "targets__qname": list(qname_environment), + "backend": "numpy", + }, + output_names=[tgt], + )[tgt] + all_nodes = { + qn: dummy_callable(n) if not callable(n) else n + for qn, n in qname_env_with_derived_functions.items() + } + f = dags.concatenate_functions( + functions=all_nodes, + targets=list(qname_env_with_derived_functions.keys()), + return_type="dict", + enforce_signature=False, + set_annotations=False, + ) + args = inspect.signature(f).parameters + if args: + raise ValueError( + f"{name}'s full DAG should include all root nodes but the following inputs " + "are missing in the specialized policy environment:" + f"\n\n{format_list_linewise(args.keys())}\n\n" + "Please add corresponding elements. Typically, these will be " + "`@policy_input()`s or parameters in the yaml files." + ) diff --git a/src/ttsim/tt_dag_elements/__init__.py b/src/ttsim/tt_dag_elements/__init__.py new file mode 100644 index 0000000000..a69a258983 --- /dev/null +++ b/src/ttsim/tt_dag_elements/__init__.py @@ -0,0 +1,79 @@ +from ttsim.tt_dag_elements.aggregation import AggType +from ttsim.tt_dag_elements.column_objects_param_function import ( + AggByGroupFunction, + AggByPIDFunction, + ColumnFunction, + ColumnObject, + FKType, + GroupCreationFunction, + ParamFunction, + PolicyFunction, + PolicyInput, + TimeConversionFunction, + agg_by_group_function, + agg_by_p_id_function, + group_creation_function, + param_function, + policy_function, + policy_input, +) +from ttsim.tt_dag_elements.param_objects import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt1dLookupTableParamValue, + ConsecutiveInt2dLookupTableParam, + ConsecutiveInt2dLookupTableParamValue, + DictParam, + ParamObject, + PiecewisePolynomialParam, + PiecewisePolynomialParamValue, + RawParam, + ScalarParam, + get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_2d_lookup_table_param_value, + get_month_based_phase_inout_of_age_thresholds_param_value, + get_year_based_phase_inout_of_age_thresholds_param_value, +) +from ttsim.tt_dag_elements.piecewise_polynomial import ( + get_piecewise_parameters, + piecewise_polynomial, +) +from ttsim.tt_dag_elements.rounding import RoundingSpec +from ttsim.tt_dag_elements.shared import join + +__all__ = [ + "AggByGroupFunction", + "AggByPIDFunction", + "AggType", + "ColumnFunction", + "ColumnObject", + "ConsecutiveInt1dLookupTableParam", + "ConsecutiveInt1dLookupTableParamValue", + "ConsecutiveInt2dLookupTableParam", + "ConsecutiveInt2dLookupTableParamValue", + "DictParam", + "FKType", + "GroupCreationFunction", + "ParamFunction", + "ParamObject", + "PiecewisePolynomialParam", + "PiecewisePolynomialParamValue", + "PolicyFunction", + "PolicyInput", + "RawParam", + "RoundingSpec", + "ScalarParam", + "TimeConversionFunction", + "agg_by_group_function", + "agg_by_p_id_function", + "get_consecutive_int_1d_lookup_table_param_value", + "get_consecutive_int_2d_lookup_table_param_value", + "get_month_based_phase_inout_of_age_thresholds_param_value", + "get_piecewise_parameters", + "get_year_based_phase_inout_of_age_thresholds_param_value", + "group_creation_function", + "join", + "param_function", + "piecewise_polynomial", + "policy_function", + "policy_input", +] diff --git a/src/ttsim/tt_dag_elements/aggregation.py b/src/ttsim/tt_dag_elements/aggregation.py new file mode 100644 index 0000000000..20fb25f843 --- /dev/null +++ b/src/ttsim/tt_dag_elements/aggregation.py @@ -0,0 +1,500 @@ +from __future__ import annotations + +from enum import StrEnum +from typing import TYPE_CHECKING, Literal, overload + +from ttsim.tt_dag_elements import aggregation_jax, aggregation_numpy + +if TYPE_CHECKING: + from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn + + +class AggType(StrEnum): + """ + Enum for aggregation types. + """ + + COUNT = "count" + SUM = "sum" + MEAN = "mean" + MAX = "max" + MIN = "min" + ANY = "any" + ALL = "all" + + +# The signature of the functions must be the same in both modules, except that all JAX +# functions have the additional `num_segments` argument. +def grouped_count( + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: + if backend == "numpy": + return aggregation_numpy.grouped_count(group_id) + return aggregation_jax.grouped_count(group_id, num_segments) + + +@overload +def grouped_sum( + column: FloatColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def grouped_sum( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +@overload +def grouped_sum( + column: BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def grouped_sum( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.grouped_sum(column, group_id) + return aggregation_jax.grouped_sum(column, group_id, num_segments) + + +@overload +def grouped_mean( + column: FloatColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... +@overload +def grouped_mean( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... +@overload +def grouped_mean( + column: BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... +def grouped_mean( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: + if backend == "numpy": + return aggregation_numpy.grouped_mean(column, group_id) + return aggregation_jax.grouped_mean(column, group_id, num_segments) + + +@overload +def grouped_max( + column: FloatColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def grouped_max( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def grouped_max( + column: FloatColumn | IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.grouped_max(column, group_id) + return aggregation_jax.grouped_max(column, group_id, num_segments) + + +@overload +def grouped_min( + column: FloatColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def grouped_min( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def grouped_min( + column: FloatColumn | IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.grouped_min(column, group_id) + return aggregation_jax.grouped_min(column, group_id, num_segments) + + +@overload +def grouped_any( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +@overload +def grouped_any( + column: BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +def grouped_any( + column: IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: + if backend == "numpy": + return aggregation_numpy.grouped_any(column, group_id) + return aggregation_jax.grouped_any(column, group_id, num_segments) + + +@overload +def grouped_all( + column: IntColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +@overload +def grouped_all( + column: BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +def grouped_all( + column: IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: + if backend == "numpy": + return aggregation_numpy.grouped_all(column, group_id) + return aggregation_jax.grouped_all(column, group_id, num_segments) + + +def count_by_p_id( + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: + if backend == "numpy": + return aggregation_numpy.count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) + return aggregation_jax.count_by_p_id( + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def sum_by_p_id( + column: FloatColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... +@overload +def sum_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +@overload +def sum_by_p_id( + column: BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def sum_by_p_id( + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.sum_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.sum_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def mean_by_p_id( + column: FloatColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def mean_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def mean_by_p_id( + column: BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +def mean_by_p_id( + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: + if backend == "numpy": + return aggregation_numpy.mean_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.mean_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def max_by_p_id( + column: FloatColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def max_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def max_by_p_id( + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.max_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.max_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def min_by_p_id( + column: FloatColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn: ... + + +@overload +def min_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +def min_by_p_id( + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> FloatColumn | IntColumn: + if backend == "numpy": + return aggregation_numpy.min_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.min_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def any_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +@overload +def any_by_p_id( + column: BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +def any_by_p_id( + column: IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: + if backend == "numpy": + return aggregation_numpy.any_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.any_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) + + +@overload +def all_by_p_id( + column: IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> IntColumn: ... + + +@overload +def all_by_p_id( + column: BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: ... + + +def all_by_p_id( + column: IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, + backend: Literal["numpy", "jax"], +) -> BoolColumn: + if backend == "numpy": + return aggregation_numpy.all_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + ) + return aggregation_jax.all_by_p_id( + column, + p_id_to_aggregate_by, + p_id_to_store_by, + num_segments, + ) diff --git a/src/ttsim/tt_dag_elements/aggregation_jax.py b/src/ttsim/tt_dag_elements/aggregation_jax.py new file mode 100644 index 0000000000..6163054010 --- /dev/null +++ b/src/ttsim/tt_dag_elements/aggregation_jax.py @@ -0,0 +1,202 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +try: + import jax.numpy as jnp + from jax.ops import segment_max, segment_min, segment_sum +except ImportError: + pass + +if TYPE_CHECKING: + from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn + + +def grouped_count(group_id: IntColumn, num_segments: int) -> jnp.ndarray: + out_grouped = segment_sum( + data=jnp.ones(len(group_id)), + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def grouped_sum( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, +) -> FloatColumn | IntColumn: + if column.dtype in ["bool"]: + column = column.astype(int) + + out_grouped = segment_sum( + data=column, + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def grouped_mean( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, + num_segments: int, +) -> FloatColumn: + if column.dtype in ["bool"]: + column = column.astype(int) + sum_grouped = segment_sum( + data=column, + segment_ids=group_id, + num_segments=num_segments, + ) + sizes = segment_sum( + data=jnp.ones(len(column)), + segment_ids=group_id, + num_segments=num_segments, + ) + mean_grouped = sum_grouped / sizes + return mean_grouped[group_id] + + +def grouped_max( + column: FloatColumn | IntColumn, + group_id: IntColumn, + num_segments: int, +) -> FloatColumn | IntColumn: + out_grouped = segment_max( + data=column, + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def grouped_min( + column: FloatColumn | IntColumn, + group_id: IntColumn, + num_segments: int, +) -> FloatColumn | IntColumn: + out_grouped = segment_min( + data=column, + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def grouped_any( + column: BoolColumn | IntColumn, + group_id: IntColumn, + num_segments: int, +) -> BoolColumn: + # Convert to boolean if necessary + if jnp.issubdtype(column.dtype, jnp.integer): + my_col = column.astype("bool") + else: + my_col = column + + out_grouped = segment_max( + data=my_col, + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def grouped_all( + column: BoolColumn | IntColumn, + group_id: IntColumn, + num_segments: int, +) -> BoolColumn: + # Convert to boolean if necessary + if jnp.issubdtype(column.dtype, jnp.integer): + column = column.astype("bool") + + out_grouped = segment_min( + data=column, + segment_ids=group_id, + num_segments=num_segments, + ) + return out_grouped[group_id] + + +def count_by_p_id( + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> IntColumn: + raise NotImplementedError + + +def sum_by_p_id( + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, # noqa: ARG001 +) -> FloatColumn | IntColumn: + if column.dtype == bool: + column = column.astype(int) + + # Build an index mapping from p_id values to positions in p_id_to_store_by. + sorted_idx = jnp.argsort(p_id_to_store_by) + sorted_store = p_id_to_store_by[sorted_idx] + + # For every element in p_id_to_aggregate_by (even negatives), + # use searchsorted to get its candidate index in sorted_store. + candidate = jnp.searchsorted(sorted_store, p_id_to_aggregate_by) + candidate_idx = sorted_idx[candidate] + + # For invalid (negative) IDs, force a dummy index (0) that will be masked out. + mapped_index = jnp.where(p_id_to_aggregate_by >= 0, candidate_idx, 0) + + # Only valid entries contribute to the sum. + contributions = jnp.where(p_id_to_aggregate_by >= 0, column, 0) + + # Scatter-add the contributions to the output array. + out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) + return out.at[mapped_index].add(contributions) + + +def mean_by_p_id( + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> FloatColumn: + raise NotImplementedError + + +def max_by_p_id( + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> FloatColumn | IntColumn: + raise NotImplementedError + + +def min_by_p_id( + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> FloatColumn | IntColumn: + raise NotImplementedError + + +def any_by_p_id( + column: BoolColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> BoolColumn: + raise NotImplementedError + + +def all_by_p_id( + column: BoolColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, + num_segments: int, +) -> BoolColumn: + raise NotImplementedError diff --git a/src/ttsim/aggregation_numpy.py b/src/ttsim/tt_dag_elements/aggregation_numpy.py similarity index 59% rename from src/ttsim/aggregation_numpy.py rename to src/ttsim/tt_dag_elements/aggregation_numpy.py index 1cceeb11b5..31afc2ba19 100644 --- a/src/ttsim/aggregation_numpy.py +++ b/src/ttsim/tt_dag_elements/aggregation_numpy.py @@ -1,42 +1,59 @@ from __future__ import annotations +from typing import TYPE_CHECKING + import numpy import numpy_groupies as npg +if TYPE_CHECKING: + from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn + -def grouped_count(group_id: numpy.ndarray) -> numpy.ndarray: +def grouped_count(group_id: IntColumn) -> IntColumn: fail_if_dtype_not_int(group_id, agg_func="grouped_count") - out_on_hh = npg.aggregate( - group_id, numpy.ones(len(group_id), dtype=int), func="sum", fill_value=0 + out_grouped = npg.aggregate( + group_id, + numpy.ones(len(group_id), dtype=int), + func="sum", + fill_value=0, ) - return out_on_hh[group_id] + return out_grouped[group_id] -def grouped_sum(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: - fail_if_dtype_not_int(group_id, agg_func="grouped_sum") +def grouped_sum( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, +) -> FloatColumn | IntColumn: fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_sum") + fail_if_dtype_not_int(group_id, agg_func="grouped_sum") if column.dtype == bool: column = column.astype(int) - out_on_hh = npg.aggregate(group_id, column, func="sum", fill_value=0) + out_grouped = npg.aggregate(group_id, column, func="sum", fill_value=0) # Expand to individual level - return out_on_hh[group_id] + return out_grouped[group_id] -def grouped_mean(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: +def grouped_mean( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, +) -> FloatColumn: + fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_mean") fail_if_dtype_not_int(group_id, agg_func="grouped_mean") - fail_if_dtype_not_float(column, agg_func="grouped_mean") - out_on_hh = npg.aggregate(group_id, column, func="mean", fill_value=0) + out_grouped = npg.aggregate(group_id, column, func="mean", fill_value=0) # Expand to individual level - return out_on_hh[group_id] + return out_grouped[group_id] -def grouped_max(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: - fail_if_dtype_not_int(group_id, agg_func="grouped_max") +def grouped_max( + column: FloatColumn | IntColumn | BoolColumn, + group_id: IntColumn, +) -> FloatColumn | IntColumn: fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_max") + fail_if_dtype_not_int(group_id, agg_func="grouped_max") # For datetime, convert to integer (as numpy_groupies can handle datetime only if # numba is installed) @@ -44,72 +61,77 @@ def grouped_max(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray dtype = column.dtype float_col = column.astype("datetime64[D]").astype(int) - out_on_hh_float = npg.aggregate(group_id, float_col, func="max") + out_grouped_float = npg.aggregate(group_id, float_col, func="max") - out_on_hh = out_on_hh_float.astype("datetime64[D]").astype(dtype) + out_grouped = out_grouped_float.astype("datetime64[D]").astype(dtype) # Expand to individual level - out = out_on_hh[group_id] + out = out_grouped[group_id] else: - out_on_hh = npg.aggregate(group_id, column, func="max") + out_grouped = npg.aggregate(group_id, column, func="max") # Expand to individual level - out = out_on_hh[group_id] + out = out_grouped[group_id] return out -def grouped_min(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: - fail_if_dtype_not_int(group_id, agg_func="grouped_min") +def grouped_min( + column: FloatColumn | IntColumn, + group_id: IntColumn, +) -> FloatColumn | IntColumn: fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_min") + fail_if_dtype_not_int(group_id, agg_func="grouped_min") # For datetime, convert to integer (as numpy_groupies can handle datetime only if # numba is installed) if numpy.issubdtype(column.dtype, numpy.datetime64) or numpy.issubdtype( - column.dtype, numpy.timedelta64 + column.dtype, + numpy.timedelta64, ): dtype = column.dtype float_col = column.astype("datetime64[D]").astype(int) - out_on_hh_float = npg.aggregate(group_id, float_col, func="min") + out_grouped_float = npg.aggregate(group_id, float_col, func="min") - out_on_hh = out_on_hh_float.astype("datetime64[D]").astype(dtype) + out_grouped = out_grouped_float.astype("datetime64[D]").astype(dtype) # Expand to individual level - out = out_on_hh[group_id] + out = out_grouped[group_id] else: - out_on_hh = npg.aggregate(group_id, column, func="min") + out_grouped = npg.aggregate(group_id, column, func="min") # Expand to individual level - out = out_on_hh[group_id] + out = out_grouped[group_id] return out -def grouped_any(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: - fail_if_dtype_not_int(group_id, agg_func="grouped_any") +def grouped_any(column: BoolColumn | IntColumn, group_id: IntColumn) -> BoolColumn: fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_any") + fail_if_dtype_not_int(group_id, agg_func="grouped_any") - out_on_hh = npg.aggregate(group_id, column, func="any", fill_value=0) + out_grouped = npg.aggregate(group_id, column, func="any", fill_value=0) # Expand to individual level - return out_on_hh[group_id] + return out_grouped[group_id] -def grouped_all(column: numpy.ndarray, group_id: numpy.ndarray) -> numpy.ndarray: - fail_if_dtype_not_int(group_id, agg_func="grouped_all") +def grouped_all(column: BoolColumn | IntColumn, group_id: IntColumn) -> BoolColumn: fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_all") + fail_if_dtype_not_int(group_id, agg_func="grouped_all") - out_on_hh = npg.aggregate(group_id, column, func="all", fill_value=0) + out_grouped = npg.aggregate(group_id, column, func="all", fill_value=0) # Expand to individual level - return out_on_hh[group_id] + return out_grouped[group_id] def count_by_p_id( - p_id_to_aggregate_by: numpy.ndarray, p_id_to_store_by: numpy.ndarray -) -> numpy.ndarray: + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> IntColumn: fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="count_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="count_by_p_id") @@ -117,13 +139,13 @@ def count_by_p_id( def sum_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> FloatColumn | IntColumn: + fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="sum_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="sum_by_p_id") - fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") if column.dtype in ["bool"]: column = column.astype(int) @@ -138,109 +160,124 @@ def sum_by_p_id( def mean_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: FloatColumn | IntColumn | BoolColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> FloatColumn: + fail_if_dtype_not_numeric_or_boolean(column, agg_func="mean_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="mean_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="mean_by_p_id") - fail_if_dtype_not_float(column, agg_func="mean_by_p_id") raise NotImplementedError def max_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> FloatColumn | IntColumn: + fail_if_dtype_not_numeric_or_datetime(column, agg_func="max_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="max_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="max_by_p_id") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="max_by_p_id") raise NotImplementedError def min_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: FloatColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> FloatColumn | IntColumn: + fail_if_dtype_not_numeric_or_datetime(column, agg_func="min_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="min_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="min_by_p_id") - fail_if_dtype_not_numeric_or_datetime(column, agg_func="min_by_p_id") raise NotImplementedError def any_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: BoolColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> BoolColumn: + fail_if_dtype_not_boolean_or_int(column, agg_func="any_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="any_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="any_by_p_id") - fail_if_dtype_not_boolean_or_int(column, agg_func="any_by_p_id") raise NotImplementedError def all_by_p_id( - column: numpy.ndarray, - p_id_to_aggregate_by: numpy.ndarray, - p_id_to_store_by: numpy.ndarray, -) -> numpy.ndarray: + column: BoolColumn | IntColumn, + p_id_to_aggregate_by: IntColumn, + p_id_to_store_by: IntColumn, +) -> BoolColumn: + fail_if_dtype_not_boolean_or_int(column, agg_func="all_by_p_id") fail_if_dtype_not_int(p_id_to_store_by, agg_func="all_by_p_id") fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="all_by_p_id") - fail_if_dtype_not_boolean_or_int(column, agg_func="all_by_p_id") raise NotImplementedError -def fail_if_dtype_not_numeric(column: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_numeric( + column: FloatColumn | IntColumn | BoolColumn, + agg_func: str, +) -> None: if not numpy.issubdtype(column.dtype, numpy.number): raise TypeError( f"Aggregation function {agg_func} was applied to a column " - f"with dtype {column.dtype}. Allowed are only numerical dtypes." + f"with dtype {column.dtype}. Allowed are only numerical dtypes.", ) -def fail_if_dtype_not_float(column: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_float( + column: FloatColumn | IntColumn | BoolColumn, + agg_func: str, +) -> None: if not numpy.issubdtype(column.dtype, numpy.floating): raise TypeError( f"Aggregation function {agg_func} was applied to a column " - f"with dtype {column.dtype}. Allowed is only float." + f"with dtype {column.dtype}. Allowed is only float.", ) -def fail_if_dtype_not_int(p_id_to_aggregate_by: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_int(p_id_to_aggregate_by: IntColumn, agg_func: str) -> None: if not numpy.issubdtype(p_id_to_aggregate_by.dtype, numpy.integer): raise TypeError( f"The dtype of id columns must be integer. Aggregation function {agg_func} " - f"was applied to a id columns that has dtype {p_id_to_aggregate_by.dtype}." + f"was applied to a id columns that has dtype {p_id_to_aggregate_by.dtype}.", ) -def fail_if_dtype_not_numeric_or_boolean(column: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_numeric_or_boolean( + column: FloatColumn | IntColumn | BoolColumn, + agg_func: str, +) -> None: if not (numpy.issubdtype(column.dtype, numpy.number) or column.dtype == "bool"): raise TypeError( f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only numerical or Boolean dtypes." + f"{column.dtype}. Allowed are only numerical or Boolean dtypes.", ) -def fail_if_dtype_not_numeric_or_datetime(column: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_numeric_or_datetime( + column: FloatColumn | IntColumn | BoolColumn, + agg_func: str, +) -> None: if not ( numpy.issubdtype(column.dtype, numpy.number) or numpy.issubdtype(column.dtype, numpy.datetime64) ): raise TypeError( f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only numerical or datetime dtypes." + f"{column.dtype}. Allowed are only numerical or datetime dtypes.", ) -def fail_if_dtype_not_boolean_or_int(column: numpy.ndarray, agg_func: str) -> None: +def fail_if_dtype_not_boolean_or_int( + column: BoolColumn | IntColumn, + agg_func: str, +) -> None: if not ( numpy.issubdtype(column.dtype, numpy.integer) or numpy.issubdtype(column.dtype, numpy.bool_) ): raise TypeError( f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only Boolean and int dtypes." + f"{column.dtype}. Allowed are only Boolean and int dtypes.", ) diff --git a/src/ttsim/column_objects_param_function.py b/src/ttsim/tt_dag_elements/column_objects_param_function.py similarity index 77% rename from src/ttsim/column_objects_param_function.py rename to src/ttsim/tt_dag_elements/column_objects_param_function.py index 352ffb6ba9..7e2b1f70a5 100644 --- a/src/ttsim/column_objects_param_function.py +++ b/src/ttsim/tt_dag_elements/column_objects_param_function.py @@ -5,19 +5,13 @@ import inspect from dataclasses import dataclass from enum import StrEnum -from typing import TYPE_CHECKING, Generic, Literal, ParamSpec, TypeVar +from typing import TYPE_CHECKING, Any, Generic, Literal, ParamSpec, TypeVar import dags.tree as dt -import numpy from dags import rename_arguments -from pandas.api.types import ( - is_bool_dtype, - is_datetime64_any_dtype, - is_float_dtype, - is_integer_dtype, -) -from ttsim.aggregation import ( +from ttsim.interface_dag_elements.shared import to_datetime +from ttsim.tt_dag_elements.aggregation import ( AggType, all_by_p_id, any_by_p_id, @@ -34,16 +28,18 @@ min_by_p_id, sum_by_p_id, ) -from ttsim.config import IS_JAX_INSTALLED -from ttsim.rounding import RoundingSpec -from ttsim.shared import to_datetime -from ttsim.vectorization import vectorize_function +from ttsim.tt_dag_elements.rounding import RoundingSpec +from ttsim.tt_dag_elements.vectorization import vectorize_function if TYPE_CHECKING: - import pandas as pd + from collections.abc import Callable + from types import ModuleType - from ttsim.config import numpy_or_jax as np - from ttsim.typing import DashedISOString, GenericCallable + from ttsim.interface_dag_elements.typing import ( + DashedISOString, + IntColumn, + UnorderedQNames, + ) FunArgTypes = ParamSpec("FunArgTypes") ReturnType = TypeVar("ReturnType") @@ -66,7 +62,8 @@ class FKType(StrEnum): class ColumnObject: """Base class for all objects operating on columns of data. - Examples: + Examples + -------- - PolicyInputs - PolicyFunctions - GroupCreationFunctions @@ -81,6 +78,7 @@ class ColumnObject: leaf_name: str start_date: datetime.date end_date: datetime.date + description: str def is_active(self, date: datetime.date) -> bool: """Check if the function is active at a given date.""" @@ -89,7 +87,7 @@ def is_active(self, date: datetime.date) -> bool: def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> ColumnObject: """Remove tree logic from the function and update the function signature.""" raise NotImplementedError("Subclasses must implement this method.") @@ -118,7 +116,7 @@ class PolicyInput(ColumnObject): def remove_tree_logic( self, tree_path: tuple[str, ...], # noqa: ARG002 - top_level_namespace: set[str], # noqa: ARG002 + top_level_namespace: UnorderedQNames, # noqa: ARG002 ) -> PolicyInput: return self @@ -128,7 +126,7 @@ def policy_input( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, foreign_key_type: FKType = FKType.IRRELEVANT, -) -> GenericCallable[[GenericCallable], PolicyInput]: +) -> Callable[[Callable[..., Any]], PolicyInput]: """ Decorator that makes a (dummy) function a `PolicyInput`. @@ -153,7 +151,7 @@ def policy_input( """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def inner(func: GenericCallable) -> PolicyInput: + def inner(func: Callable[..., Any]) -> PolicyInput: data_type = func.__annotations__["return"] return PolicyInput( leaf_name=func.__name__, @@ -161,12 +159,13 @@ def inner(func: GenericCallable) -> PolicyInput: start_date=start_date, end_date=end_date, foreign_key_type=foreign_key_type, + description=str(inspect.getdoc(func)), ) return inner -def _frozen_safe_update_wrapper(wrapper: object, wrapped: GenericCallable) -> None: +def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable[..., Any]) -> None: """Update a frozen wrapper dataclass to look like the wrapped function. This is necessary because the wrapper is a frozen dataclass, so we cannot @@ -183,9 +182,10 @@ def _frozen_safe_update_wrapper(wrapper: object, wrapped: GenericCallable) -> No WRAPPER_ASSIGNMENTS = ( # noqa: N806 "__globals__", "__closure__", + "__code__", "__doc__", "__name__", - "__qualname__", + "__QName__", "__module__", "__annotations__", "__type_params__", @@ -203,41 +203,24 @@ class ColumnFunction(ColumnObject, Generic[FunArgTypes, ReturnType]): Base class for all functions operating on columns of data. """ - function: GenericCallable[FunArgTypes, ReturnType] + function: Callable[FunArgTypes, ReturnType] rounding_spec: RoundingSpec | None = None foreign_key_type: FKType = FKType.IRRELEVANT def __post_init__(self) -> None: - self._fail_if_rounding_has_wrong_type(self.rounding_spec) + _fail_if_rounding_has_wrong_type(self.rounding_spec) # Expose the signature of the wrapped function for dependency resolution _frozen_safe_update_wrapper(self, self.function) - def _fail_if_rounding_has_wrong_type( - self, rounding_spec: RoundingSpec | None - ) -> None: - """Check if rounding_spec has the correct type. - - Parameters - ---------- - rounding_spec - The rounding specification to check. - - Raises - ------ - AssertionError - If rounding_spec is not a RoundingSpec or None. - """ - assert isinstance(rounding_spec, RoundingSpec | None), ( - f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" - ) - def __call__( - self, *args: FunArgTypes.args, **kwargs: FunArgTypes.kwargs + self, + *args: FunArgTypes.args, + **kwargs: FunArgTypes.kwargs, ) -> ReturnType: return self.function(*args, **kwargs) @property - def dependencies(self) -> set[str]: + def dependencies(self) -> UnorderedQNames: """The names of input variables that the function depends on.""" return set(inspect.signature(self).parameters) @@ -251,6 +234,24 @@ def is_active(self, date: datetime.date) -> bool: return self.start_date <= date <= self.end_date +def _fail_if_rounding_has_wrong_type(rounding_spec: RoundingSpec | None) -> None: + """Check if rounding_spec has the correct type. + + Parameters + ---------- + rounding_spec + The rounding specification to check. + + Raises + ------ + AssertionError + If rounding_spec is not a RoundingSpec or None. + """ + assert isinstance(rounding_spec, RoundingSpec | None), ( + f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" + ) + + @dataclass(frozen=True) class PolicyFunction(ColumnFunction): # type: ignore[type-arg] """ @@ -270,23 +271,57 @@ class PolicyFunction(ColumnFunction): # type: ignore[type-arg] The rounding specification. """ + vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize" + def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> PolicyFunction: """Remove tree logic from the function and update the function signature.""" + + function_without_tree_logic = dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ) + # All functions that will be vectorized require the globals attribute to be + # the same as for the initially defined function, since otherwise global + # variables or imported functions cannot be found after vectorization. + # This is not done by dt.one_function_without_tree_logic, so we do it here. + function_without_tree_logic.__globals__.update(self.function.__globals__) + return PolicyFunction( leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), + function=function_without_tree_logic, + start_date=self.start_date, + end_date=self.end_date, + description=self.description, + rounding_spec=self.rounding_spec, + foreign_key_type=self.foreign_key_type, + vectorization_strategy=self.vectorization_strategy, + ) + + def vectorize(self, backend: str, xnp: ModuleType) -> PolicyFunction: + func = ( + self.function + if self.vectorization_strategy == "not_required" + else vectorize_function( + self.function, + vectorization_strategy=self.vectorization_strategy, + backend=backend, + xnp=xnp, + ) + ) + return PolicyFunction( + leaf_name=self.leaf_name, + function=func, start_date=self.start_date, end_date=self.end_date, + description=self.description, rounding_spec=self.rounding_spec, foreign_key_type=self.foreign_key_type, + vectorization_strategy="not_required", ) @@ -298,7 +333,7 @@ def policy_function( rounding_spec: RoundingSpec | None = None, vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize", foreign_key_type: FKType = FKType.IRRELEVANT, -) -> GenericCallable[[GenericCallable], PolicyFunction]: +) -> Callable[[Callable[..., Any]], PolicyFunction]: """ Decorator that makes a `PolicyFunction` from a function. @@ -332,27 +367,45 @@ def policy_function( ------- A decorator that returns a PolicyFunction object. """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def inner(func: GenericCallable) -> PolicyFunction: - func = ( - func - if vectorization_strategy == "not_required" - else vectorize_function(func, vectorization_strategy=vectorization_strategy) - ) + def inner(func: Callable[..., Any]) -> PolicyFunction: return PolicyFunction( leaf_name=leaf_name if leaf_name else func.__name__, function=func, start_date=start_date, end_date=end_date, + description=str(inspect.getdoc(func)), rounding_spec=rounding_spec, foreign_key_type=foreign_key_type, + vectorization_strategy=vectorization_strategy, ) return inner +def reorder_ids(ids: IntColumn, xnp: ModuleType) -> IntColumn: + """Make ID's consecutively numbered. + + Takes the given IDs and replaces them by consecutive numbers + starting at 0. + + [43,44,70,50] -> [0,1,3,2] + + """ + sorting = xnp.argsort(ids) + ids_sorted = ids[sorting] + index_after_sort = xnp.arange(ids.shape[0])[sorting] + + # Look for difference from previous entry in sorted array + diff_to_prev = xnp.where(xnp.diff(ids_sorted) >= 1, 1, 0) + + # Sum up all differences to get new id + consecutive_ids = xnp.concatenate((xnp.asarray([0]), xnp.cumsum(diff_to_prev))) + + return consecutive_ids[xnp.argsort(index_after_sort)] + + @dataclass(frozen=True) class GroupCreationFunction(ColumnFunction): # type: ignore[type-arg] """ @@ -373,7 +426,7 @@ class GroupCreationFunction(ColumnFunction): # type: ignore[type-arg] def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> GroupCreationFunction: """Remove tree logic from the function and update the function signature.""" return GroupCreationFunction( @@ -385,6 +438,7 @@ def remove_tree_logic( ), start_date=self.start_date, end_date=self.end_date, + description=self.description, rounding_spec=self.rounding_spec, foreign_key_type=self.foreign_key_type, ) @@ -395,19 +449,39 @@ def group_creation_function( leaf_name: str | None = None, start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, -) -> GenericCallable[[GenericCallable], GroupCreationFunction]: + reorder: bool = True, +) -> Callable[[Callable[..., Any]], GroupCreationFunction]: """ Decorator that creates a group_by function from a function. + + Parameters + ---------- + leaf_name: + The leaf name of the function in the functions tree. + start_date: + The date from which the function is active (inclusive). + end_date: + The date until which the function is active (inclusive). + reorder: + Whether the created Group ID's should be reordered to be + consecutively numbered starting from 0. """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def decorator(func: GenericCallable) -> GroupCreationFunction: + def decorator(func: Callable[..., Any]) -> GroupCreationFunction: _leaf_name = func.__name__ if leaf_name is None else leaf_name + func_with_reorder = lambda **kwargs: reorder_ids( # noqa: E731 + ids=func(**kwargs), + xnp=kwargs["xnp"], + ) + functools.update_wrapper(func_with_reorder, func) + return GroupCreationFunction( leaf_name=_leaf_name, - function=func, + function=func_with_reorder if reorder else func, start_date=start_date, end_date=end_date, + description=str(inspect.getdoc(func)), ) return decorator @@ -442,7 +516,7 @@ class AggByGroupFunction(ColumnFunction): # type: ignore[type-arg] def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> AggByGroupFunction: """Remove tree logic from the function and update the function signature.""" return AggByGroupFunction( @@ -454,6 +528,7 @@ def remove_tree_logic( ), start_date=self.start_date, end_date=self.end_date, + description=self.description, rounding_spec=self.rounding_spec, foreign_key_type=self.foreign_key_type, orig_location=self.orig_location, @@ -466,7 +541,7 @@ def agg_by_group_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> GenericCallable[[GenericCallable], AggByGroupFunction]: +) -> Callable[[Callable[..., Any]], AggByGroupFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -479,31 +554,29 @@ def agg_by_group_function( AggType.COUNT: grouped_count, } - def inner(func: GenericCallable) -> AggByGroupFunction: + def inner(func: Callable[..., Any]) -> AggByGroupFunction: orig_location = f"{func.__module__}.{func.__name__}" args = set(inspect.signature(func).parameters) group_ids = {p for p in args if p.endswith("_id")} _fail_if_group_id_is_invalid(group_ids, orig_location) group_id = group_ids.pop() - other_args = args - {group_id} + other_args = args - {group_id, "num_segments", "backend"} if agg_type == AggType.COUNT: _fail_if_other_arg_is_present(other_args, orig_location) mapper = {"group_id": group_id} else: _fail_if_other_arg_is_invalid(other_args, orig_location) mapper = {"group_id": group_id, "column": other_args.pop()} - if IS_JAX_INSTALLED: - mapper["num_segments"] = f"{group_id}_num_segments" agg_func = rename_arguments( func=agg_registry[agg_type], mapper=mapper, ) - return AggByGroupFunction( leaf_name=leaf_name if leaf_name else func.__name__, function=agg_func, start_date=start_date, end_date=end_date, + description=str(inspect.getdoc(func)), foreign_key_type=FKType.IRRELEVANT, orig_location=f"{func.__module__}.{func.__name__}", ) @@ -511,29 +584,38 @@ def inner(func: GenericCallable) -> AggByGroupFunction: return inner -def _fail_if_group_id_is_invalid(group_ids: set[str], orig_location: str) -> None: +def _fail_if_group_id_is_invalid( + group_ids: UnorderedQNames, + orig_location: str, +) -> None: if len(group_ids) != 1: raise ValueError( "Require exactly one group identifier ending with '_id' for " "aggregation by group. Got " - f"{', '.join(group_ids) if group_ids else 'nothing'} in {orig_location}." + f"{', '.join(group_ids) if group_ids else 'nothing'} in {orig_location}.", ) -def _fail_if_other_arg_is_present(other_args: set[str], orig_location: str) -> None: +def _fail_if_other_arg_is_present( + other_args: UnorderedQNames, + orig_location: str, +) -> None: if other_args: raise ValueError( "There must be no argument besides identifiers for counting. Got: " - f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}." + f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}.", ) -def _fail_if_other_arg_is_invalid(other_args: set[str], orig_location: str) -> None: +def _fail_if_other_arg_is_invalid( + other_args: UnorderedQNames, + orig_location: str, +) -> None: if len(other_args) != 1: raise ValueError( - "There must be exactly one argument besides identifiers for aggregations. " - "Got: " - f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}." + "There must be exactly one argument besides identifiers, num_segments, and " + "backend for aggregations. Got: " + f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}.", ) @@ -566,7 +648,7 @@ class AggByPIDFunction(ColumnFunction): # type: ignore[type-arg] def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> AggByGroupFunction: """Remove tree logic from the function and update the function signature.""" return AggByGroupFunction( @@ -578,6 +660,7 @@ def remove_tree_logic( ), start_date=self.start_date, end_date=self.end_date, + description=self.description, rounding_spec=self.rounding_spec, foreign_key_type=self.foreign_key_type, orig_location=self.orig_location, @@ -590,7 +673,7 @@ def agg_by_p_id_function( start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, agg_type: AggType, -) -> GenericCallable[[GenericCallable], AggByPIDFunction]: +) -> Callable[[Callable[..., Any]], AggByPIDFunction]: start_date, end_date = _convert_and_validate_dates(start_date, end_date) agg_registry = { @@ -603,15 +686,15 @@ def agg_by_p_id_function( AggType.COUNT: count_by_p_id, } - def inner(func: GenericCallable) -> AggByPIDFunction: + def inner(func: Callable[..., Any]) -> AggByPIDFunction: orig_location = f"{func.__module__}.{func.__name__}" args = set(inspect.signature(func).parameters) other_p_ids = { p for p in args - if any(e.startswith("p_id_") for e in dt.tree_path_from_qual_name(p)) + if any(e.startswith("p_id_") for e in dt.tree_path_from_qname(p)) } - other_args = args - {*other_p_ids, "p_id"} + other_args = args - {*other_p_ids, "p_id", "num_segments", "backend"} _fail_if_p_id_is_not_present(args, orig_location) _fail_if_other_p_id_is_invalid(other_p_ids, orig_location) if agg_type == AggType.COUNT: @@ -619,6 +702,8 @@ def inner(func: GenericCallable) -> AggByPIDFunction: mapper = { "p_id_to_aggregate_by": other_p_ids.pop(), "p_id_to_store_by": "p_id", + "num_segments": "num_segments", + "backend": "backend", } else: _fail_if_other_arg_is_invalid(other_args, orig_location) @@ -626,20 +711,19 @@ def inner(func: GenericCallable) -> AggByPIDFunction: "column": other_args.pop(), "p_id_to_aggregate_by": other_p_ids.pop(), "p_id_to_store_by": "p_id", + "num_segments": "num_segments", + "backend": "backend", } agg_func = rename_arguments( func=agg_registry[agg_type], mapper=mapper, ) - - functools.update_wrapper(agg_func, func) - agg_func.__signature__ = inspect.signature(func) - return AggByPIDFunction( leaf_name=leaf_name if leaf_name else func.__name__, function=agg_func, start_date=start_date, end_date=end_date, + description=str(inspect.getdoc(func)), foreign_key_type=FKType.IRRELEVANT, orig_location=f"{func.__module__}.{func.__name__}", ) @@ -647,20 +731,23 @@ def inner(func: GenericCallable) -> AggByPIDFunction: return inner -def _fail_if_p_id_is_not_present(args: set[str], orig_location: str) -> None: +def _fail_if_p_id_is_not_present(args: UnorderedQNames, orig_location: str) -> None: if "p_id" not in args: raise ValueError( "The function must have the argument named 'p_id' for aggregation by p_id. " - f"Got {', '.join(args) if args else 'nothing'} in {orig_location}." + f"Got {', '.join(args) if args else 'nothing'} in {orig_location}.", ) -def _fail_if_other_p_id_is_invalid(other_p_ids: set[str], orig_location: str) -> None: +def _fail_if_other_p_id_is_invalid( + other_p_ids: UnorderedQNames, + orig_location: str, +) -> None: if len(other_p_ids) != 1: raise ValueError( "Require exactly one identifier starting with 'p_id_' for " "aggregation by p_id. Got: " - f"{', '.join(other_p_ids) if other_p_ids else 'nothing'} in {orig_location}." # noqa: E501 + f"{', '.join(other_p_ids) if other_p_ids else 'nothing'} in {orig_location}.", # noqa: E501 ) @@ -693,7 +780,7 @@ def __post_init__(self) -> None: def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> TimeConversionFunction: """Remove tree logic from the function and update the function signature.""" return TimeConversionFunction( @@ -706,6 +793,7 @@ def remove_tree_logic( ), start_date=self.start_date, end_date=self.end_date, + description=self.description, rounding_spec=self.rounding_spec, foreign_key_type=self.foreign_key_type, ) @@ -734,42 +822,12 @@ def _convert_and_validate_dates( if start_date > end_date: raise ValueError( - f"The start date {start_date} must be before the end date {end_date}." + f"The start date {start_date} must be before the end date {end_date}.", ) return start_date, end_date -def check_series_has_expected_type(series: pd.Series, internal_type: np.dtype) -> bool: - """Checks whether used series has already expected internal type. - - Currently not used, but might become useful again. - - Parameters - ---------- - series: pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. - internal_type: TypeVar - One of the types used by TTSIM. - - Returns - ------- - Bool - - """ - if ( - (internal_type == float) & (is_float_dtype(series)) - or (internal_type == int) & (is_integer_dtype(series)) - or (internal_type == bool) & (is_bool_dtype(series)) - or (internal_type == numpy.datetime64) & (is_datetime64_any_dtype(series)) - ): - out = True - else: - out = False - - return out - - @dataclass(frozen=True) class ParamFunction(Generic[FunArgTypes, ReturnType]): """ @@ -790,19 +848,22 @@ class ParamFunction(Generic[FunArgTypes, ReturnType]): leaf_name: str start_date: datetime.date end_date: datetime.date - function: GenericCallable[FunArgTypes, ReturnType] + function: Callable[FunArgTypes, ReturnType] + description: str def __post_init__(self) -> None: # Expose the signature of the wrapped function for dependency resolution _frozen_safe_update_wrapper(self, self.function) def __call__( - self, *args: FunArgTypes.args, **kwargs: FunArgTypes.kwargs + self, + *args: FunArgTypes.args, + **kwargs: FunArgTypes.kwargs, ) -> ReturnType: return self.function(*args, **kwargs) @property - def dependencies(self) -> set[str]: + def dependencies(self) -> UnorderedQNames: """The names of input variables that the function depends on.""" return set(inspect.signature(self).parameters) @@ -818,7 +879,7 @@ def is_active(self, date: datetime.date) -> bool: def remove_tree_logic( self, tree_path: tuple[str, ...], - top_level_namespace: set[str], + top_level_namespace: UnorderedQNames, ) -> ParamFunction: # type: ignore[type-arg] """Remove tree logic from the function and update the function signature.""" return ParamFunction( @@ -830,6 +891,7 @@ def remove_tree_logic( ), start_date=self.start_date, end_date=self.end_date, + description=self.description, ) @@ -839,7 +901,7 @@ def param_function( leaf_name: str | None = None, start_date: str | datetime.date = DEFAULT_START_DATE, end_date: str | datetime.date = DEFAULT_END_DATE, -) -> GenericCallable[[GenericCallable], ParamFunction]: +) -> Callable[[Callable[..., Any]], ParamFunction[..., Any]]: """ Decorator that makes a `ParamFunction` from a function. @@ -869,12 +931,13 @@ def param_function( """ start_date, end_date = _convert_and_validate_dates(start_date, end_date) - def inner(func: GenericCallable) -> ParamFunction: # type: ignore[type-arg] + def inner(func: Callable[..., Any]) -> ParamFunction: # type: ignore[type-arg] return ParamFunction( leaf_name=leaf_name if leaf_name else func.__name__, function=func, start_date=start_date, end_date=end_date, + description=str(inspect.getdoc(func)), ) return inner diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py new file mode 100644 index 0000000000..6363e19b1f --- /dev/null +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -0,0 +1,308 @@ +from __future__ import annotations + +import itertools +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Literal + +import numpy + +if TYPE_CHECKING: + import datetime + from types import ModuleType + + from jaxtyping import Array, Float + + +@dataclass(frozen=True) +class ParamObject: + """ + Abstract base class for all types of parameters. + """ + + leaf_name: str + start_date: datetime.date + end_date: datetime.date + unit: ( + None + | Literal[ + "Euros", + "DM", + "Share", + "Percent", + "Years", + "Months", + "Hours", + "Square Meters", + "Euros / Square Meter", + ] + ) + reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] + name: dict[Literal["de", "en"], str] + description: dict[Literal["de", "en"], str] + + +@dataclass(frozen=True) +class ScalarParam(ParamObject): + """ + A scalar parameter directly read from a YAML file. + """ + + value: bool | int | float + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class DictParam(ParamObject): + """ + A parameter directly read from a YAML file that is a flat dictionary. + """ + + value: ( + dict[str, int] + | dict[str, float] + | dict[str, bool] + | dict[int, int] + | dict[int, float] + | dict[int, bool] + ) + note: str | None = None + reference: str | None = None + + def __post_init__(self) -> None: + assert all(x not in self.value for x in ["note", "reference"]) + + +@dataclass(frozen=True) +class PiecewisePolynomialParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a PiecewisePolynomialParamValue object, i.e., it contains the + parameters for calling `piecewise_polynomial`. + """ + + value: PiecewisePolynomialParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class ConsecutiveInt1dLookupTableParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a ConsecutiveInt1dLookupTableParamValue object, i.e., it contains the + parameters for calling `lookup_table`. + """ + + value: ConsecutiveInt1dLookupTableParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class ConsecutiveInt2dLookupTableParam(ParamObject): + """A parameter with its contents read and converted from a YAML file. + + Its value is a ConsecutiveInt2dLookupTableParamValue object, i.e., it contains the + parameters for calling `lookup_table`. + """ + + value: ConsecutiveInt2dLookupTableParamValue + note: str | None = None + reference: str | None = None + + +@dataclass(frozen=True) +class RawParam(ParamObject): + """ + A parameter directly read from a YAML file that is an arbitrarily nested + dictionary. + """ + + value: dict[str | int, Any] + note: str | None = None + reference: str | None = None + + def __post_init__(self) -> None: + assert all(x not in self.value for x in ["note", "reference"]) + + +@dataclass(frozen=True) +class PiecewisePolynomialParamValue: + """The parameters expected by `piecewise_polynomial`. + + thresholds: + Thresholds defining the pieces / different segments on the real line. + intercepts: + Intercepts of the polynomial on each segment. + rates: + Slope and higher-order coefficients of the polynomial on each segment. + """ + + thresholds: Float[Array, " n_segments"] + intercepts: Float[Array, " n_segments"] + rates: Float[Array, " n_segments"] + + +@dataclass(frozen=True) +class ConsecutiveInt1dLookupTableParamValue: + """The parameters expected by lookup_table""" + + base_to_subtract: int + values_to_look_up: Float[Array, " n_values_to_look_up"] + + +@dataclass(frozen=True) +class ConsecutiveInt2dLookupTableParamValue: + """The parameters expected by lookup_table""" + + base_to_subtract_rows: int + base_to_subtract_cols: int + values_to_look_up: Float[Array, "n_rows n_cols"] + + +def get_consecutive_int_1d_lookup_table_param_value( + raw: dict[int, float | int | bool], + xnp: ModuleType, +) -> ConsecutiveInt1dLookupTableParamValue: + """Get the parameters for a 1-dimensional lookup table.""" + lookup_keys = numpy.asarray(sorted(raw)) + assert (lookup_keys - min(lookup_keys) == numpy.arange(len(lookup_keys))).all(), ( + "Dictionary keys must be consecutive integers." + ) + + return ConsecutiveInt1dLookupTableParamValue( + base_to_subtract=min(lookup_keys), + values_to_look_up=xnp.asarray([raw[k] for k in lookup_keys]), + ) + + +def get_consecutive_int_2d_lookup_table_param_value( + raw: dict[int, dict[int, float | int | bool]], + xnp: ModuleType, +) -> ConsecutiveInt2dLookupTableParamValue: + """Get the parameters for a 2-dimensional lookup table.""" + lookup_keys_rows = xnp.asarray(sorted(raw.keys())) + lookup_keys_cols = xnp.asarray(sorted(raw[lookup_keys_rows[0]].keys())) + for col_value in raw.values(): + lookup_keys_this_col = xnp.asarray(sorted(col_value.keys())) + assert (lookup_keys_cols == lookup_keys_this_col).all(), ( + "Column keys must be the same in each column, got:" + f"{lookup_keys_cols} and {lookup_keys_this_col}" + ) + for lookup_keys in lookup_keys_rows, lookup_keys_cols: + assert (lookup_keys - min(lookup_keys) == xnp.arange(len(lookup_keys))).all(), ( + f"Dictionary keys must be consecutive integers, got: {lookup_keys}" + ) + return ConsecutiveInt2dLookupTableParamValue( + base_to_subtract_rows=min(lookup_keys_rows), + base_to_subtract_cols=min(lookup_keys_cols), + values_to_look_up=xnp.array( + [ + raw[row][col] + for row, col in itertools.product(lookup_keys_rows, lookup_keys_cols) + ], + ).reshape(len(lookup_keys_rows), len(lookup_keys_cols)), + ) + + +def _year_fraction(r: dict[Literal["years", "months"], int]) -> float: + return r["years"] + r["months"] / 12 + + +def get_month_based_phase_inout_of_age_thresholds_param_value( + raw: dict[str | int, Any], + xnp: ModuleType, +) -> ConsecutiveInt1dLookupTableParamValue: + """Get the parameters for month-based phase-in/phase-out of age thresholds. + + Fills up months for which no parameters are given with the last given value. + """ + + def _m_since_ad(y: int, m: int) -> int: + return y * 12 + (m - 1) + + def _fill_phase_inout( + raw: dict[int, dict[int, dict[Literal["years", "months"], int]]], + first_m_since_ad_phase_inout: int, + last_m_since_ad_phase_inout: int, + ) -> dict[int, float]: + lookup_table = {} + for y, m_dict in raw.items(): + for m, v in m_dict.items(): + lookup_table[_m_since_ad(y=y, m=m)] = _year_fraction(v) + for m in range(first_m_since_ad_phase_inout, last_m_since_ad_phase_inout): + if m not in lookup_table: + lookup_table[m] = lookup_table[m - 1] + return lookup_table + + first_m_since_ad_to_consider = _m_since_ad(y=raw.pop("first_year_to_consider"), m=1) + last_m_since_ad_to_consider = _m_since_ad(y=raw.pop("last_year_to_consider"), m=12) + assert all(isinstance(k, int) for k in raw) + first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] + first_month_phase_inout: int = min(raw[first_year_phase_inout].keys()) + first_m_since_ad_phase_inout = _m_since_ad( + y=first_year_phase_inout, + m=first_month_phase_inout, + ) + last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] + last_month_phase_inout: int = max(raw[last_year_phase_inout].keys()) + last_m_since_ad_phase_inout = _m_since_ad( + y=last_year_phase_inout, + m=last_month_phase_inout, + ) + assert first_m_since_ad_to_consider <= first_m_since_ad_phase_inout + assert last_m_since_ad_to_consider >= last_m_since_ad_phase_inout + before_phase_inout: dict[int, float] = { + b_m: _year_fraction(raw[first_year_phase_inout][first_month_phase_inout]) + for b_m in range(first_m_since_ad_to_consider, first_m_since_ad_phase_inout) + } + during_phase_inout: dict[int, float] = _fill_phase_inout( + raw=raw, # type: ignore[arg-type] + first_m_since_ad_phase_inout=first_m_since_ad_phase_inout, + last_m_since_ad_phase_inout=last_m_since_ad_phase_inout, + ) + after_phase_inout: dict[int, float] = { + b_m: _year_fraction(raw[last_year_phase_inout][last_month_phase_inout]) + for b_m in range( + last_m_since_ad_phase_inout + 1, + last_m_since_ad_to_consider + 1, + ) + } + return get_consecutive_int_1d_lookup_table_param_value( + raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, + xnp=xnp, + ) + + +def get_year_based_phase_inout_of_age_thresholds_param_value( + raw: dict[str | int, Any], + xnp: ModuleType, +) -> ConsecutiveInt1dLookupTableParamValue: + """Get the parameters for year-based phase-in/phase-out of age thresholds. + + Requires all years to be given. + """ + first_year_to_consider = raw.pop("first_year_to_consider") + last_year_to_consider = raw.pop("last_year_to_consider") + assert all(isinstance(k, int) for k in raw) + first_year_phase_inout: int = sorted(raw)[0] # type: ignore[assignment] + last_year_phase_inout: int = sorted(raw)[-1] # type: ignore[assignment] + assert first_year_to_consider <= first_year_phase_inout + assert last_year_to_consider >= last_year_phase_inout + before_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[first_year_phase_inout]) + for b_y in range(first_year_to_consider, first_year_phase_inout) + } + during_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[b_y]) # type: ignore[misc] + for b_y in raw + } + after_phase_inout: dict[int, float] = { + b_y: _year_fraction(raw[last_year_phase_inout]) + for b_y in range(last_year_phase_inout + 1, last_year_to_consider + 1) + } + return get_consecutive_int_1d_lookup_table_param_value( + raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, + xnp=xnp, + ) diff --git a/src/ttsim/piecewise_polynomial.py b/src/ttsim/tt_dag_elements/piecewise_polynomial.py similarity index 70% rename from src/ttsim/piecewise_polynomial.py rename to src/ttsim/tt_dag_elements/piecewise_polynomial.py index c117e3661a..335fa2eda5 100644 --- a/src/ttsim/piecewise_polynomial.py +++ b/src/ttsim/tt_dag_elements/piecewise_polynomial.py @@ -1,12 +1,16 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Literal, get_args +from typing import TYPE_CHECKING, Literal, get_args import numpy -from ttsim.config import numpy_or_jax as np -from ttsim.param_objects import PiecewisePolynomialParamValue +from ttsim.tt_dag_elements.param_objects import PiecewisePolynomialParamValue + +if TYPE_CHECKING: + from types import ModuleType + + from jaxtyping import Array, Float FUNC_TYPES = Literal[ "piecewise_constant", @@ -47,59 +51,58 @@ class RatesOptions: def piecewise_polynomial( - x: np.ndarray, + x: Float[Array, " n_pp_values"], parameters: PiecewisePolynomialParamValue, - rates_multiplier: np.ndarray = 1.0, -) -> np.ndarray: + xnp: ModuleType, + rates_multiplier: Float[Array, " n_segments"] | float = 1.0, +) -> Float[Array, " n_pp_values"]: """Calculate value of the piecewise function at `x`. If the first interval begins at -inf the polynomial of that interval can only have slope of 0. Requesting a value outside of the provided thresholds will lead to undefined behaviour. Parameters ---------- - x : np.ndarray + x: Array with values at which the piecewise polynomial is to be calculated. - thresholds : np.array - A one-dimensional array containing the thresholds for all intervals. - coefficients : np.ndarray - A two-dimensional array where columns are interval sections and rows - correspond to the coefficient of the nth polynomial. - intercepts : np.ndarray - The intercepts at the lower threshold of each interval. - rates_multiplier : np.ndarray - Multiplier to create individual or scaled rates. + parameters: + Thresholds defining the pieces and coefficients on each piece. + xnp: + The backend module to use for calculations. + rates_multiplier: + Multiplier to create individual or scaled rates. Returns ------- - out : np.ndarray + out: The value of `x` under the piecewise function. """ order = parameters.rates.shape[0] # Get interval of requested value - selected_bin = np.searchsorted(parameters.thresholds, x, side="right") - 1 + selected_bin = xnp.searchsorted(parameters.thresholds, x, side="right") - 1 coefficients = parameters.rates[:, selected_bin].T - # Calculate distance from X to lower threshold - increment_to_calc = np.where( - parameters.thresholds[selected_bin] == -np.inf, + # Calculate distance from x to lower threshold + increment_to_calc = xnp.where( + parameters.thresholds[selected_bin] == -xnp.inf, 0, x - parameters.thresholds[selected_bin], ) - # Evaluate polynomial at X + # Evaluate polynomial at x out = ( parameters.intercepts[selected_bin] + ( - ((increment_to_calc.reshape(-1, 1)) ** np.arange(1, order + 1, 1)) + ((increment_to_calc.reshape(-1, 1)) ** xnp.arange(1, order + 1, 1)) * (coefficients) ).sum(axis=1) ) * rates_multiplier - return np.squeeze(out) + return xnp.squeeze(out) def get_piecewise_parameters( leaf_name: str, func_type: FUNC_TYPES, parameter_dict: dict[int, dict[str, float]], + xnp: ModuleType, ) -> PiecewisePolynomialParamValue: """Create the objects for piecewise polynomial. @@ -113,18 +116,18 @@ def get_piecewise_parameters( ------- """ - # Check if keys are consecutive numbers and starting at 0. if sorted(parameter_dict) != list(range(len(parameter_dict))): raise ValueError( f"The keys of {leaf_name} do not start with 0 or are not consecutive" - f" numbers." + f" numbers.", ) # Extract lower thresholds. lower_thresholds, upper_thresholds, thresholds = check_and_get_thresholds( leaf_name=leaf_name, parameter_dict=parameter_dict, + xnp=xnp, ) # Create and fill rates-array @@ -132,6 +135,7 @@ def get_piecewise_parameters( parameter_dict=parameter_dict, leaf_name=leaf_name, func_type=func_type, + xnp=xnp, ) # Create and fill intercept-array intercepts = _check_and_get_intercepts( @@ -140,6 +144,7 @@ def get_piecewise_parameters( lower_thresholds=lower_thresholds, upper_thresholds=upper_thresholds, rates=rates, + xnp=xnp, ) return PiecewisePolynomialParamValue( thresholds=thresholds, @@ -148,10 +153,15 @@ def get_piecewise_parameters( ) -def check_and_get_thresholds( +def check_and_get_thresholds( # noqa: C901 leaf_name: str, parameter_dict: dict[int, dict[str, float]], -) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + xnp: ModuleType, +) -> tuple[ + Float[Array, " n_segments"], + Float[Array, " n_segments"], + Float[Array, " n_segments"], +]: """Check and transfer raw threshold data. Transfer and check raw threshold data, which needs to be specified in a @@ -162,6 +172,8 @@ def check_and_get_thresholds( parameter_dict leaf_name keys + xnp : ModuleType + The numpy module to use for calculations. Returns ------- @@ -174,14 +186,14 @@ def check_and_get_thresholds( # Check if lowest threshold exists. if "lower_threshold" not in parameter_dict[0]: raise ValueError( - f"The first piece of {leaf_name} needs to contain a lower_threshold value." + f"The first piece of {leaf_name} needs to contain a lower_threshold value.", ) lower_thresholds[0] = parameter_dict[0]["lower_threshold"] # Check if highest upper_threshold exists. if "upper_threshold" not in parameter_dict[keys[-1]]: raise ValueError( - f"The last piece of {leaf_name} needs to contain an upper_threshold value." + f"The last piece of {leaf_name} needs to contain an upper_threshold value.", ) upper_thresholds[keys[-1]] = parameter_dict[keys[-1]]["upper_threshold"] @@ -197,7 +209,7 @@ def check_and_get_thresholds( else: raise ValueError( f"In {interval} of {leaf_name} is no lower upper threshold or an upper" - f" in the piece before." + f" in the piece before.", ) for interval in keys[:-1]: @@ -208,22 +220,27 @@ def check_and_get_thresholds( else: raise ValueError( f"In {interval} of {leaf_name} is no upper threshold or a lower" - f" threshold in the piece after." + f" threshold in the piece after.", ) if not numpy.allclose(lower_thresholds[1:], upper_thresholds[:-1]): raise ValueError( - f"The lower and upper thresholds of {leaf_name} have to coincide" + f"The lower and upper thresholds of {leaf_name} have to coincide", ) thresholds = sorted([lower_thresholds[0], *upper_thresholds]) - return np.array(lower_thresholds), np.array(upper_thresholds), np.array(thresholds) + return ( + xnp.array(lower_thresholds), + xnp.array(upper_thresholds), + xnp.array(thresholds), + ) def _check_and_get_rates( leaf_name: str, func_type: FUNC_TYPES, parameter_dict: dict[int, dict[str, float]], -) -> np.ndarray: + xnp: ModuleType, +) -> Float[Array, " n_segments"]: """Check and transfer raw rates data. Transfer and check raw rates data, which needs to be specified in a @@ -235,6 +252,8 @@ def _check_and_get_rates( leaf_name keys func_type + xnp : ModuleType + The numpy module to use for calculations. Returns ------- @@ -248,35 +267,23 @@ def _check_and_get_rates( rates[i, interval] = parameter_dict[interval][rate_type] else: raise ValueError( - f"In interval {interval} of {leaf_name}, {rate_type} is missing." + f"In interval {interval} of {leaf_name}, {rate_type} is missing.", ) - return np.array(rates) + return xnp.array(rates) def _check_and_get_intercepts( leaf_name: str, parameter_dict: dict[int, dict[str, float]], - lower_thresholds: np.ndarray, - upper_thresholds: np.ndarray, - rates: np.ndarray, -) -> np.ndarray: + lower_thresholds: Float[Array, " n_segments"], + upper_thresholds: Float[Array, " n_segments"], + rates: Float[Array, " n_segments"], + xnp: ModuleType, +) -> Float[Array, " n_segments"]: """Check and transfer raw intercept data. If necessary create intercepts. Transfer and check raw rates data, which needs to be specified in a piecewise_polynomial layout in the yaml file. - - Parameters - ---------- - parameter_dict - leaf_name - lower_thresholds - upper_thresholds - rates - keys - - Returns - ------- - """ keys = sorted(parameter_dict.keys()) intercepts = numpy.zeros(len(keys)) @@ -284,57 +291,59 @@ def _check_and_get_intercepts( if "intercept_at_lower_threshold" not in parameter_dict[0]: raise ValueError(f"The first piece of {leaf_name} needs an intercept.") - else: - intercepts[0] = parameter_dict[0]["intercept_at_lower_threshold"] - # Check if all intercepts are supplied. - for interval in keys[1:]: - if "intercept_at_lower_threshold" in parameter_dict[interval]: - count_intercepts_supplied += 1 - intercepts[interval] = parameter_dict[interval][ - "intercept_at_lower_threshold" - ] - if (count_intercepts_supplied > 1) & (count_intercepts_supplied != len(keys)): - raise ValueError( - "More than one, but not all intercepts are supplied. " - "The dictionaries should contain either only the lowest intercept " - "or all intercepts." - ) - elif count_intercepts_supplied == len(keys): - pass + intercepts[0] = parameter_dict[0]["intercept_at_lower_threshold"] + # Check if all intercepts are supplied. + for interval in keys[1:]: + if "intercept_at_lower_threshold" in parameter_dict[interval]: + count_intercepts_supplied += 1 + intercepts[interval] = parameter_dict[interval][ + "intercept_at_lower_threshold" + ] + if (count_intercepts_supplied > 1) & (count_intercepts_supplied != len(keys)): + raise ValueError( + "More than one, but not all intercepts are supplied. " + "The dictionaries should contain either only the lowest intercept " + "or all intercepts.", + ) + if count_intercepts_supplied == len(keys): + pass - else: - intercepts = _create_intercepts( - lower_thresholds, upper_thresholds, rates, intercepts[0] - ) - return np.array(intercepts) + else: + intercepts = _create_intercepts( + lower_thresholds, + upper_thresholds, + rates, + intercepts[0], + xnp=xnp, + ) + return xnp.array(intercepts) def _create_intercepts( - lower_thresholds: np.ndarray, - upper_thresholds: np.ndarray, - rates: np.ndarray, - intercept_at_lowest_threshold: np.ndarray, -) -> np.ndarray: + lower_thresholds: Float[Array, " n_segments"], + upper_thresholds: Float[Array, " n_segments"], + rates: Float[Array, " n_segments"], + intercept_at_lowest_threshold: float, + xnp: ModuleType, +) -> Float[Array, " n_segments"]: """Create intercepts from raw data. Parameters ---------- - lower_thresholds : numpy.array - The lower thresholds defining the intervals + lower_thresholds: + The lower thresholds defining the intervals - upper_thresholds : numpy.array - The upper thresholds defining the intervals + upper_thresholds: + The upper thresholds defining the intervals - rates : numpy.array - The slope in the interval below the corresponding element of - *upper_thresholds*. + rates: + The slope in the interval below the corresponding element of *upper_thresholds*. - intercept_at_lowest_threshold : numpy.array - Intercept at the lowest threshold + intercept_at_lowest_threshold: + Intercept at the lowest threshold - fun: function handle (currently only piecewise_linear, will need to think about - whether we can have a generic function with a different interface or make - it specific ) + xnp: ModuleType + The module to use for calculations. Returns ------- @@ -350,39 +359,38 @@ def _create_intercepts( rates=rates, intercepts=intercepts, ) - return np.array(intercepts) + return xnp.array(intercepts) def _calculate_one_intercept( x: float, - lower_thresholds: np.ndarray, - upper_thresholds: np.ndarray, - rates: np.ndarray, - intercepts: np.ndarray, + lower_thresholds: Float[Array, " n_segments"], + upper_thresholds: Float[Array, " n_segments"], + rates: Float[Array, " n_segments"], + intercepts: Float[Array, " n_segments"], ) -> float: - """Calculate the intercepts from the raw data. + """Calculate the intercept for the segment `x` lies in. Parameters ---------- - x : float + x The value that the function is applied to. - lower_thresholds : numpy.ndarray + lower_thresholds A one-dimensional array containing lower thresholds of each interval. - upper_thresholds : numpy.ndarray + upper_thresholds A one-dimensional array containing upper thresholds each interval. - rates : numpy.ndarray + rates A two-dimensional array where columns are interval sections and rows correspond to the nth polynomial. - intercepts : numpy.ndarray + intercepts The intercepts at the lower threshold of each interval. Returns ------- - out : float + out The value of `x` under the piecewise function. """ - # Check if value lies within the defined range. if (x < lower_thresholds[0]) or (x > upper_thresholds[-1]) or numpy.isnan(x): return numpy.nan diff --git a/src/ttsim/rounding.py b/src/ttsim/tt_dag_elements/rounding.py similarity index 68% rename from src/ttsim/rounding.py rename to src/ttsim/tt_dag_elements/rounding.py index 9d26d8ac11..1a9e6cd801 100644 --- a/src/ttsim/rounding.py +++ b/src/ttsim/tt_dag_elements/rounding.py @@ -4,12 +4,14 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Literal, ParamSpec, get_args -from ttsim.config import numpy_or_jax as np - -ROUNDING_DIRECTION = Literal["up", "down", "nearest"] - if TYPE_CHECKING: from collections.abc import Callable + from types import ModuleType + + from ttsim.interface_dag_elements.typing import FloatColumn + + +ROUNDING_DIRECTION = Literal["up", "down", "nearest"] P = ParamSpec("P") @@ -28,39 +30,44 @@ def __post_init__(self) -> None: valid_directions = get_args(ROUNDING_DIRECTION) if self.direction not in valid_directions: raise ValueError( - f"`direction` must be one of {valid_directions}, got {self.direction!r}" + f"`direction` must be one of {valid_directions}, " + f"got {self.direction!r}", ) if type(self.to_add_after_rounding) not in [int, float]: raise ValueError( - f"Additive part must be a number, got {self.to_add_after_rounding!r}" + f"Additive part must be a number, got {self.to_add_after_rounding!r}", ) - def apply_rounding(self, func: Callable[P, np.ndarray]) -> Callable[P, np.ndarray]: + def apply_rounding( + self, + func: Callable[P, FloatColumn], + xnp: ModuleType, + ) -> Callable[P, FloatColumn]: """Decorator to round the output of a function. Parameters ---------- func Function to be rounded. + xnp + The computing module to use. Returns ------- Function with rounding applied. """ - # Make sure that signature is preserved. @functools.wraps(func) - def wrapper(*args: P.args, **kwargs: P.kwargs) -> np.ndarray: + def wrapper(*args: P.args, **kwargs: P.kwargs) -> FloatColumn: out = func(*args, **kwargs) if self.direction == "up": - rounded_out = self.base * np.ceil(out / self.base) + rounded_out = self.base * xnp.ceil(out / self.base) elif self.direction == "down": - rounded_out = self.base * np.floor(out / self.base) + rounded_out = self.base * xnp.floor(out / self.base) elif self.direction == "nearest": - rounded_out = self.base * (np.asarray(out) / self.base).round() + rounded_out = self.base * (xnp.asarray(out) / self.base).round() - rounded_out += self.to_add_after_rounding - return rounded_out + return rounded_out + self.to_add_after_rounding return wrapper diff --git a/src/ttsim/tt_dag_elements/shared.py b/src/ttsim/tt_dag_elements/shared.py new file mode 100644 index 0000000000..8337600415 --- /dev/null +++ b/src/ttsim/tt_dag_elements/shared.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, overload + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, FloatColumn, IntColumn + + +@overload +def join( + foreign_key: IntColumn, + primary_key: IntColumn, + target: FloatColumn, + value_if_foreign_key_is_missing: float | bool, + xnp: ModuleType, +) -> FloatColumn: ... + + +@overload +def join( + foreign_key: IntColumn, + primary_key: IntColumn, + target: IntColumn, + value_if_foreign_key_is_missing: float | bool, + xnp: ModuleType, +) -> IntColumn: ... + + +@overload +def join( + foreign_key: IntColumn, + primary_key: IntColumn, + target: BoolColumn, + value_if_foreign_key_is_missing: float | bool, + xnp: ModuleType, +) -> BoolColumn: ... + + +def join( + foreign_key: IntColumn, + primary_key: IntColumn, + target: FloatColumn | IntColumn | BoolColumn, + value_if_foreign_key_is_missing: float | bool, + xnp: ModuleType, +) -> FloatColumn | IntColumn | BoolColumn: + """ + Given a foreign key, find the corresponding primary key, and return the target at + the same index as the primary key. When using Jax, does not work on String Arrays. + + Parameters + ---------- + foreign_key: + The foreign keys. + primary_key: + The primary keys. + target: + The targets, in the same order as the primary keys. + value_if_foreign_key_is_missing: + The value to return if no matching primary key is found. + xnp: + The numpy module to use for calculations. + + Returns + ------- + The joined array. + """ + # For each foreign key and for each primary key, check if they match + matches_foreign_key = foreign_key[:, None] == primary_key + + # For each foreign key, add a column with True at the end, to later fall back to + # the value for unresolved foreign keys + padded_matches_foreign_key = xnp.pad( + matches_foreign_key, + ((0, 0), (0, 1)), + "constant", + constant_values=True, + ) + + # For each foreign key, compute the index of the first matching primary key + indices = xnp.argmax(padded_matches_foreign_key, axis=1) + + # Add the value for unresolved foreign keys at the end of the target array + padded_targets = xnp.pad( + target, + (0, 1), + "constant", + constant_values=value_if_foreign_key_is_missing, + ) + + # Return the target at the index of the first matching primary key + return padded_targets.take(indices) diff --git a/src/ttsim/tt_dag_elements/typing.py b/src/ttsim/tt_dag_elements/typing.py new file mode 100644 index 0000000000..2a2688ec3e --- /dev/null +++ b/src/ttsim/tt_dag_elements/typing.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Literal, NewType + +if TYPE_CHECKING: + import datetime + + OrigParamSpec = ( + # Header + dict[str, str | None | dict[Literal["de", "en"], str | None]] + | + # Parameters at one point in time + dict[ + datetime.date, + dict[Literal["note", "reference"] | str | int, Any], # noqa: PYI051 + ] + ) + DashedISOString = NewType("DashedISOString", str) + """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/src/ttsim/vectorization.py b/src/ttsim/tt_dag_elements/vectorization.py similarity index 67% rename from src/ttsim/vectorization.py rename to src/ttsim/tt_dag_elements/vectorization.py index 3114f2a79f..574c0e63ce 100644 --- a/src/ttsim/vectorization.py +++ b/src/ttsim/tt_dag_elements/vectorization.py @@ -6,41 +6,75 @@ import textwrap import types from importlib import import_module -from typing import TYPE_CHECKING, Literal, cast +from types import ModuleType +from typing import TYPE_CHECKING, Any, Literal, cast import numpy - -from ttsim.config import IS_JAX_INSTALLED -from ttsim.config import numpy_or_jax as np +from dags.signature import rename_arguments if TYPE_CHECKING: - from ttsim.typing import GenericCallable + from collections.abc import Callable + from types import ModuleType + BACKEND_TO_MODULE = {"jax": "jax.numpy", "numpy": "numpy"} def vectorize_function( - func: GenericCallable, + func: Callable[..., Any], vectorization_strategy: Literal["loop", "vectorize"], -) -> GenericCallable: - vectorized: GenericCallable + backend: Literal["numpy", "jax"], + xnp: ModuleType, +) -> Callable[..., Any]: + """Returns a new PolicyFunction with the function attribute vectorized. + + Args: + policy_function: PolicyFunction to vectorize. + vectorization_strategy: Strategy to use for vectorization. + backend: Backend to use for vectorization. + xnp: Module to use for vectorization. + + Returns + ------- + New PolicyFunction with the function attribute vectorized. + + Raises + ------ + ValueError: If the vectorization strategy is not supported. + TranslateToVectorizableError: If the function cannot be vectorized. + + """ + + vectorized: Callable[..., Any] if vectorization_strategy == "loop": - vectorized = functools.wraps(func)(numpy.vectorize(func)) - vectorized.__signature__ = inspect.signature(func) - vectorized.__globals__ = func.__globals__ - vectorized.__closure__ = func.__closure__ + assigned = ( + "__signature__", + "__globals__", + "__closure__", + *functools.WRAPPER_ASSIGNMENTS, + ) + vectorized = functools.wraps(func, assigned=assigned)(numpy.vectorize(func)) elif vectorization_strategy == "vectorize": - backend = "jax" if IS_JAX_INSTALLED else "numpy" - vectorized = _make_vectorizable(func, backend=backend) + vectorized = _make_vectorizable(func, backend=backend, xnp=xnp) else: raise ValueError( f"Vectorization strategy {vectorization_strategy} is not supported. " - "Use 'loop' or 'vectorize'." + "Use 'loop' or 'vectorize'.", ) + + # Update annotations and signature to reflect that the inputs are now expected to be + # arrays. + vectorized.__signature__ = _create_vectorized_signature(func) # type: ignore[attr-defined] + vectorized.__annotations__ = _create_vectorized_annotations(func) + return vectorized -def _make_vectorizable(func: GenericCallable, backend: str) -> GenericCallable: +def _make_vectorizable( + func: Callable[..., Any], + backend: str, + xnp: ModuleType, +) -> Callable[..., Any]: """Redefine function to be vectorizable given backend. Args: @@ -48,24 +82,25 @@ def _make_vectorizable(func: GenericCallable, backend: str) -> GenericCallable: backend: Backend library. Currently supported backends are 'jax' and 'numpy'. Array module must export function `where` that behaves as `numpy.where`. - Returns: + Returns + ------- New function with altered ast. """ if _is_lambda_function(func): raise TranslateToVectorizableError( "Lambda functions are not supported for vectorization. Please define a " - "named function and use that." + "named function and use that.", ) module = _module_from_backend(backend) - tree = _make_vectorizable_ast(func, module=module) + tree = _make_vectorizable_ast(func, module=module, xnp=xnp) # recreate scope of function, add array library scope = dict(func.__globals__) if func.__closure__: closure_vars = func.__code__.co_freevars closure_cells = [c.cell_contents for c in func.__closure__] - scope.update(dict(zip(closure_vars, closure_cells))) + scope.update(dict(zip(closure_vars, closure_cells, strict=False))) scope[module] = import_module(module) @@ -75,10 +110,28 @@ def _make_vectorizable(func: GenericCallable, backend: str) -> GenericCallable: # assign created function new_func = scope[func.__name__] - return functools.wraps(func)(new_func) + _vectorized = functools.wraps(func)(new_func) + + # For functions whose argument names are renamed dynamically, we need to match the + # argument names, since the vectorization works on the AST level, which is not + # affected by the original renaming. This assumes that the argument ordering is + # the same in the function and its AST. + _original_args = _args_from_func_ast(_func_to_ast(func)) + _args_name_mapper = dict( + zip( + _original_args, + list(inspect.signature(func).parameters), + strict=False, + ) + ) + return rename_arguments(_vectorized, mapper=_args_name_mapper) -def make_vectorizable_source(func: GenericCallable, backend: str) -> str: +def make_vectorizable_source( + func: Callable[..., Any], + backend: str, + xnp: ModuleType, +) -> str: """Redefine function source to be vectorizable given backend. Args: @@ -87,28 +140,34 @@ def make_vectorizable_source(func: GenericCallable, backend: str) -> str: backends. Array module must export function `where` that behaves as `numpy.where`. - Returns: + Returns + ------- Source code of new function with altered ast. """ if _is_lambda_function(func): raise TranslateToVectorizableError( "Lambda functions are not supported for vectorization. Please define a " - "named function and use that." + "named function and use that.", ) module = _module_from_backend(backend) - tree = _make_vectorizable_ast(func, module=module) + tree = _make_vectorizable_ast(func, module=module, xnp=xnp) return ast.unparse(tree) -def _make_vectorizable_ast(func: GenericCallable, module: str) -> ast.Module: +def _make_vectorizable_ast( + func: Callable[..., Any], + module: str, + xnp: ModuleType, +) -> ast.Module: """Change if statement to where call in the ast of func and return new ast. Args: func: Function. module: Module which exports the function `where` that behaves as `numpy.where`. - Returns: + Returns + ------- AST of new function with altered ast. """ tree = _func_to_ast(func) @@ -117,23 +176,27 @@ def _make_vectorizable_ast(func: GenericCallable, module: str) -> ast.Module: func_loc = f"{func.__module__}/{func.__name__}" # transform tree nodes - new_tree = Transformer(module, func_loc).visit(tree) + new_tree = Transformer(module, func_loc, xnp).visit(tree) return ast.fix_missing_locations(new_tree) -def _func_to_ast(func: GenericCallable) -> ast.Module: +def _func_to_ast(func: Callable[..., Any]) -> ast.Module: source = inspect.getsource(func) source_dedented = textwrap.dedent(source) source_without_decorators = _remove_decorator_lines(source_dedented) return ast.parse(source_without_decorators) +def _args_from_func_ast(func_ast: ast.Module) -> list[str]: + """Get function arguments from function ast.""" + return [arg.arg for arg in func_ast.body[0].args.args] # type: ignore[attr-defined] + + def _remove_decorator_lines(source: str) -> str: """Removes leading decorator lines from function source code.""" if source.startswith("def "): return source - else: - return "def " + source.split("\ndef ")[1] + return "def " + source.split("\ndef ")[1] # ====================================================================================== @@ -142,28 +205,32 @@ def _remove_decorator_lines(source: str) -> str: class Transformer(ast.NodeTransformer): - def __init__(self, module: str, func_loc: str) -> None: + def __init__(self, module: str, func_loc: str, xnp: ModuleType) -> None: self.module = module self.func_loc = func_loc + self.xnp = xnp def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 self.generic_visit(node) return _call_to_call_from_module( - node, module=self.module, func_loc=self.func_loc + node, + module=self.module, + func_loc=self.func_loc, + xnp=self.xnp, ) def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.UnaryOp | ast.Call: # noqa: N802 if isinstance(node.op, ast.Not): return _not_to_call(node, module=self.module) - else: - return node + return node def visit_BoolOp(self, node: ast.BoolOp) -> ast.Call: # noqa: N802 self.generic_visit(node) return _boolop_to_call(node, module=self.module) def visit_If( # noqa: N802 - self, node: ast.If + self, + node: ast.If, ) -> ast.Call | ast.Return | ast.Assign | ast.AugAssign: self.generic_visit(node) call = _if_to_call(node, module=self.module, func_loc=self.func_loc) @@ -207,11 +274,11 @@ def _if_to_call(node: ast.If, module: str, func_loc: str) -> ast.Call: if len(node.orelse) > 1 or len(node.body) > 1: msg = _too_many_operations_error_message(node, func_loc=func_loc) raise TranslateToVectorizableError(msg) - elif node.orelse == []: + if node.orelse == []: if isinstance(node.body[0], ast.Return): msg = _return_and_no_else_error_message(node.body[0], func_loc=func_loc) raise TranslateToVectorizableError(msg) - elif hasattr(node.body[0], "targets"): + if hasattr(node.body[0], "targets"): name = ast.Name(id=node.body[0].targets[0].id, ctx=ast.Load()) else: name = ast.Name(id=node.body[0].target.id, ctx=ast.Load()) # type: ignore[attr-defined] @@ -233,7 +300,9 @@ def _if_to_call(node: ast.If, module: str, func_loc: str) -> ast.Call: return ast.Call( func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), attr="where", ctx=ast.Load() + value=ast.Name(id=module, ctx=ast.Load()), + attr="where", + ctx=ast.Load(), ), args=args, keywords=[], @@ -252,7 +321,9 @@ def _ifexp_to_call(node: ast.IfExp, module: str) -> ast.Call: return ast.Call( func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), attr="where", ctx=ast.Load() + value=ast.Name(id=module, ctx=ast.Load()), + attr="where", + ctx=ast.Load(), ), args=args, keywords=[], @@ -283,7 +354,12 @@ def _constructor(left: ast.Call | ast.expr, right: ast.Call | ast.expr) -> ast.C return cast("ast.Call", functools.reduce(_constructor, values)) -def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast.AST: +def _call_to_call_from_module( + node: ast.Call, + module: str, + func_loc: str, + xnp: ModuleType, +) -> ast.AST: """Transform built-in Calls to Calls from module.""" to_transform = ("sum", "any", "all", "max", "min") @@ -297,11 +373,11 @@ def _call_to_call_from_module(node: ast.Call, module: str, func_loc: str) -> ast args = node.args if len(args) == 1: - if type(args) not in (list, tuple, np.ndarray): + if type(args) not in (list, tuple, xnp.ndarray): raise TranslateToVectorizableError( f"Argument of function {func_id} is not a list, tuple, or valid array." f"\n\nFunction: {func_loc}\n\n" - f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" + f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n", ) call.func = ast.Attribute( @@ -400,5 +476,53 @@ def _module_from_backend(backend: str) -> str: return BACKEND_TO_MODULE[backend] raise NotImplementedError( - f"Argument 'backend' is {backend} but must be in {BACKEND_TO_MODULE.keys()}." + f"Argument 'backend' is {backend} but must be in {BACKEND_TO_MODULE.keys()}.", + ) + + +# ====================================================================================== +# Signature and annotations +# ====================================================================================== + + +def _create_vectorized_signature(func: Callable[..., Any]) -> inspect.Signature: + """Create a signature for the vectorized function.""" + parameters = [ + inspect.Parameter( + name=param.name, + kind=param.kind, + default=param.default, + annotation=scalar_type_to_array_type(param.annotation), + ) + for param in inspect.signature(func).parameters.values() + ] + return_annotation = scalar_type_to_array_type( + inspect.signature(func).return_annotation ) + return inspect.Signature(parameters=parameters, return_annotation=return_annotation) + + +def _create_vectorized_annotations(func: Callable[..., Any]) -> dict[str, Any]: + """Create annotations for the vectorized function.""" + parameters_and_return = ["return", *inspect.signature(func).parameters] + annotations = inspect.get_annotations(func) + return { + name: scalar_type_to_array_type( + # If no annotation is available, we assume it is a numerical scalar type, + # which is converted to an array type. + annotations.get(name, "IntColumn | FloatColumn | BoolColumn"), + ) + for name in parameters_and_return + } + + +def scalar_type_to_array_type(orig_type: Literal["int", "float", "bool"]) -> str: + """Convert a scalar type to the corresponding array type.""" + registry = { + "int": "IntColumn", + "float": "FloatColumn", + "bool": "BoolColumn", + } + if orig_type in registry: + return registry[orig_type] + return orig_type diff --git a/src/ttsim/typing.py b/src/ttsim/typing.py deleted file mode 100644 index db77dd4a49..0000000000 --- a/src/ttsim/typing.py +++ /dev/null @@ -1,86 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Literal, NewType - -from ttsim.config import IS_JAX_INSTALLED - -if IS_JAX_INSTALLED: - from jax import Array as TTSIMArray -else: - from numpy import ndarray as TTSIMArray # noqa: N812, TC002 - -if TYPE_CHECKING: - import datetime - from collections.abc import Mapping - - # Make these available for import from other modules. - from dags.tree.typing import ( # noqa: F401 - GenericCallable, - NestedInputStructureDict, - NestedTargetDict, - QualNameTargetList, - ) - - from ttsim.column_objects_param_function import ( - ColumnFunction, - ColumnObject, - ParamFunction, - ) - from ttsim.param_objects import ParamObject - - FlatColumnObjectsParamFunctions = Mapping[ - tuple[str, ...], ColumnObject | ParamFunction - ] - """Mapping of flat paths to column objects or param functions.""" - OrigParamSpec = ( - dict[str, str | None | dict[Literal["de", "en"], str | None]] # Header - | dict[ - datetime.date, dict[Literal["note", "reference"] | str | int, Any] # noqa: PYI051 - ] # Parameters at one point in time - ) - """The contents of a yaml files with parameters, excluding the outermost key.""" - FlatOrigParamSpecs = dict[tuple[str, ...], OrigParamSpec] - """Flat tree of yaml contents; the last element of the key is the leaf name.""" - NestedParamObjects = Mapping[str, ParamObject | "NestedParamObjects"] - """Tree mapping TTSIM paths to parameters.""" - NestedInputs = Mapping[str, str | bool | int | float | "NestedInputs"] - """Tree mapping TTSIM paths to df columns or constants.""" - NestedStrings = Mapping[str, str | "NestedStrings"] - """Tree mapping TTSIM paths to df columns or type hints.""" - NestedData = Mapping[str, TTSIMArray | "NestedData"] - """Tree mapping TTSIM paths to data (1-d arrays).""" - QualNameData = Mapping[str, TTSIMArray] - """Mapping of qualified name paths to data (1-d arrays).""" - QualNameDataColumns = set[str] - """The set of data columns, represented by qualified names.""" - NestedAnyTTSIMObject = Mapping[ - str, - ColumnObject - | ParamFunction - | ParamObject - | int - | float - | bool - | TTSIMArray - | "NestedAnyTTSIMObject", - ] - NestedAny = Mapping[str, Any | "NestedAnyTTSIMObject"] - """Tree mapping TTSIM paths to any type of TTSIM object.""" - NestedColumnObjectsParamFunctions = Mapping[ - str, ColumnObject | ParamFunction | "NestedColumnObjectsParamFunctions" - ] - NestedPolicyEnvironment = Mapping[ - str, - ColumnObject | ParamFunction | ParamObject | "NestedPolicyEnvironment", - ] - """Tree mapping TTSIM paths to column objects, param functions, param objects.""" - QualNamePolicyEnvironment = Mapping[str, ColumnObject | ParamFunction | ParamObject] - """Tree mapping TTSIM paths to column objects, param functions, param objects.""" - QualNameColumnObjectsParamFunctions = Mapping[str, ColumnObject | ParamFunction] - """Mapping of qualified name paths to column objects or param functions.""" - QualNameColumnFunctionsWithProcessedParamsAndScalars = Mapping[str, Any] - """A mapping of qualified names to fully processed parameters.""" - QualNameColumnFunctions = Mapping[str, ColumnFunction] - """Mapping of qualified name paths to functions operating on columns of data.""" - DashedISOString = NewType("DashedISOString", str) - """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/tests/ttsim/test_automatically_added_functions.py b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py similarity index 92% rename from tests/ttsim/test_automatically_added_functions.py rename to tests/ttsim/interface_dag_elements/test_automatically_added_functions.py index 5dadc77a37..9729bd1977 100644 --- a/tests/ttsim/test_automatically_added_functions.py +++ b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py @@ -4,8 +4,7 @@ import pytest -from ttsim import policy_function -from ttsim.automatically_added_functions import ( +from ttsim.interface_dag_elements.automatically_added_functions import ( _create_function_for_time_unit, create_agg_by_group_functions, create_time_conversion_functions, @@ -30,6 +29,7 @@ y_to_q, y_to_w, ) +from ttsim.tt_dag_elements import policy_function def return_one() -> int: @@ -286,14 +286,16 @@ class TestCreateFunctionsForTimeUnits: ], ) def test_should_create_functions_for_other_time_units_for_functions( - self, name: str, expected: list[str] + self, + name: str, + expected: list[str], ) -> None: time_conversion_functions = create_time_conversion_functions( - qual_name_policy_environment={ - name: policy_function(leaf_name=name)(return_one) + qname_policy_environment={ + name: policy_function(leaf_name=name)(return_one), }, - qual_name_data_columns=set(), - groupings=("sn", "kin"), + input_columns=set(), + grouping_levels=("sn", "kin"), ) for expected_name in expected: @@ -301,11 +303,11 @@ def test_should_create_functions_for_other_time_units_for_functions( def test_should_not_create_functions_automatically_that_exist_already(self) -> None: time_conversion_functions = create_time_conversion_functions( - qual_name_policy_environment={ - "test1_d": policy_function(leaf_name="test1_d")(return_one) + qname_policy_environment={ + "test1_d": policy_function(leaf_name="test1_d")(return_one), }, - qual_name_data_columns={"test2_y"}, - groupings=("sn", "kin"), + input_columns={"test2_y"}, + grouping_levels=("sn", "kin"), ) assert "test1_d" not in time_conversion_functions @@ -315,11 +317,11 @@ def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_peri self, ) -> None: time_conversion_functions = create_time_conversion_functions( - qual_name_policy_environment={ - "test_d": policy_function(leaf_name="test_d")(return_one) + qname_policy_environment={ + "test_d": policy_function(leaf_name="test_d")(return_one), }, - qual_name_data_columns={"test_y"}, - groupings=("sn", "kin"), + input_columns={"test_y"}, + grouping_levels=("sn", "kin"), ) assert "test_d" in time_conversion_functions @@ -350,9 +352,9 @@ def x(test_m: int) -> int: return test_m time_conversion_functions = create_time_conversion_functions( - qual_name_policy_environment={"test_d": policy_function(leaf_name="test_d")(x)}, - qual_name_data_columns=set(), - groupings=(), + qname_policy_environment={"test_d": policy_function(leaf_name="test_d")(x)}, + input_columns=set(), + grouping_levels=(), ) assert "test_m" not in time_conversion_functions @@ -362,7 +364,7 @@ def x(test_m: int) -> int: ( "column_functions", "targets", - "qual_name_data_columns", + "input_columns", "expected", ), [ @@ -389,7 +391,7 @@ def x(test_m: int) -> int: def test_derived_aggregation_functions_are_in_correct_namespace( column_functions, targets, - qual_name_data_columns, + input_columns, expected, ): """Test that the derived aggregation functions are in the correct namespace. @@ -399,8 +401,8 @@ def test_derived_aggregation_functions_are_in_correct_namespace( """ result = create_agg_by_group_functions( column_functions=column_functions, - qual_name_data_columns=qual_name_data_columns, + input_columns=input_columns, targets=targets, - groupings=("kin",), + grouping_levels=("kin",), ) assert expected in result diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py new file mode 100644 index 0000000000..151e164d22 --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -0,0 +1,272 @@ +from __future__ import annotations + +import dags.tree as dt +import numpy +import pandas as pd +import pytest +from numpy.testing import assert_array_equal + +from ttsim import ( + main, +) +from ttsim.interface_dag_elements.data_converters import ( + df_with_mapped_columns_to_nested_data, + df_with_nested_columns_to_nested_data, + nested_data_to_df_with_mapped_columns, +) +from ttsim.tt_dag_elements import ( + ScalarParam, + param_function, + policy_function, +) + +_GENERIC_PARAM_SPEC = { + "start_date": "2024-01-01", + "end_date": "2024-12-31", + "unit": None, + "reference_period": None, + "name": { + "de": "generic_param", + "en": "generic_param", + }, + "description": { + "de": "generic_param", + "en": "generic_param", + }, +} + + +@policy_function() +def int_policy_function() -> int: + return 1 + + +@param_function() +def int_param_function() -> int: + return 1 + + +_SOME_SCALAR_PARAM = ScalarParam( + leaf_name="some_scalar_param", + value=1, + **_GENERIC_PARAM_SPEC, +) + + +@pytest.fixture +def minimal_data_tree(): + return { + "hh_id": numpy.array([1, 2, 3]), + "p_id": numpy.array([1, 2, 3]), + } + + +@pytest.mark.parametrize( + ( + "inputs_tree_to_df_columns", + "df", + "expected_output", + ), + [ + ( + { + "n1": { + "n2": "a", + }, + }, + pd.DataFrame({"a": [1, 2, 3]}), + {"n1": {"n2": pd.Series([1, 2, 3])}}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": "b", + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, + ), + ( + { + "n1": { + "n2": "a", + }, + "n3": 3, + }, + pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), + {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, + ), + ], +) +def test_df_with_mapped_columns_to_nested_data( + inputs_tree_to_df_columns, + df, + expected_output, +): + result = df_with_mapped_columns_to_nested_data( + mapper=inputs_tree_to_df_columns, + df=df, + xnp=numpy, + ) + flat_result = dt.flatten_to_qnames(result) + flat_expected_output = dt.flatten_to_qnames(expected_output) + + assert set(flat_result.keys()) == set(flat_expected_output.keys()) + for key in flat_result: + pd.testing.assert_series_equal( + pd.Series(flat_result[key]), + flat_expected_output[key], + check_names=False, + ) + + +@pytest.mark.parametrize( + ( + "environment", + "targets__tree", + "expected_output", + ), + [ + # Two policy functions + ( + { + "some_policy_function": int_policy_function, + "another_policy_function": int_policy_function, + }, + { + "some_policy_function": "res1", + "another_policy_function": "res2", + }, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One policy function + ( + { + "some_policy_function": int_policy_function, + }, + { + "some_policy_function": "res1", + }, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One param function + ( + { + "some_param_function": int_param_function, + }, + { + "some_param_function": "res1", + }, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One param function and one policy function + ( + { + "some_param_function": int_param_function, + "some_policy_function": int_policy_function, + }, + { + "some_param_function": "res1", + "some_policy_function": "res2", + }, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One scalar param + ( + { + "some_scalar_param": _SOME_SCALAR_PARAM, + }, + {"some_scalar_param": "res1"}, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + # One scalar param and one policy function + ( + { + "some_scalar_param": _SOME_SCALAR_PARAM, + "some_policy_function": int_policy_function, + }, + { + "some_scalar_param": "res1", + "some_policy_function": "res2", + }, + pd.DataFrame( + {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, + index=pd.Index([1, 2, 3], name="p_id"), + ), + ), + ], +) +def test_nested_data_to_dataframe( + environment, + minimal_data_tree, + targets__tree, + expected_output, + backend, +): + results__tree = main( + inputs={ + "input_data__tree": minimal_data_tree, + "policy_environment": environment, + "targets__tree": targets__tree, + "rounding": False, + "backend": backend, + }, + output_names=["results__tree"], + )["results__tree"] + result_df = nested_data_to_df_with_mapped_columns( + nested_data_to_convert=results__tree, + nested_outputs_df_column_names=targets__tree, + data_with_p_id=minimal_data_tree, + ) + pd.testing.assert_frame_equal( + result_df, + expected_output, + check_like=True, + check_dtype=False, + check_index_type=False, + ) + + +@pytest.mark.parametrize( + ( + "df", + "expected", + ), + [ + ( + pd.DataFrame({("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}), + {"a": {"b": numpy.array([1, 2, 3])}, "c": numpy.array([4, 5, 6])}, + ), + ( + pd.DataFrame({("a", "b"): [1, 2, 3], ("b",): [4, 5, 6]}), + {"a": {"b": numpy.array([1, 2, 3])}, "b": numpy.array([4, 5, 6])}, + ), + ], +) +def test_df_with_nested_columns_to_nested_data(df, expected): + result = df_with_nested_columns_to_nested_data( + df=df, + xnp=numpy, + ) + flat_result = dt.flatten_to_tree_paths(result) + flat_expected = dt.flatten_to_tree_paths(expected) + + assert set(flat_result.keys()) == set(flat_expected.keys()) + for key in flat_result: + assert_array_equal(flat_result[key], flat_expected[key]) diff --git a/tests/ttsim/test_failures_and_warnings.py b/tests/ttsim/interface_dag_elements/test_failures.py similarity index 59% rename from tests/ttsim/test_failures_and_warnings.py rename to tests/ttsim/interface_dag_elements/test_failures.py index fa460fbdd9..646c00ab3b 100644 --- a/tests/ttsim/test_failures_and_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -3,51 +3,98 @@ import copy import datetime import re -import warnings +from pathlib import Path from typing import TYPE_CHECKING import dags.tree as dt import numpy import pandas as pd import pytest -from mettsim.config import METTSIM_ROOT from ttsim import main -from ttsim.column_objects_param_function import ( - DEFAULT_END_DATE, - group_creation_function, - policy_function, -) -from ttsim.failures_and_warnings import ( +from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, - FunctionsAndDataColumnsOverlapWarning, _param_with_active_periods, _ParamWithActivePeriod, + active_periods_overlap, assert_valid_ttsim_pytree, - fail_if_active_periods_overlap, - fail_if_data_tree_is_invalid, - fail_if_foreign_keys_are_invalid_in_data, - fail_if_group_ids_are_outside_top_level_namespace, - fail_if_group_variables_are_not_constant_within_groups, - fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name, - fail_if_targets_are_not_in_policy_environment_or_data, + foreign_keys_are_invalid_in_data, + group_ids_are_outside_top_level_namespace, + group_variables_are_not_constant_within_groups, + input_data_tree_is_invalid, + input_df_has_bool_or_numeric_column_names, + input_df_mapper_has_incorrect_format, + non_convertible_objects_in_results_tree, + paths_are_missing_in_targets_tree_mapper, + targets_are_not_in_specialized_environment_or_data, +) +from ttsim.tt_dag_elements import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt1dLookupTableParamValue, + DictParam, + PiecewisePolynomialParam, + PiecewisePolynomialParamValue, + group_creation_function, + param_function, + policy_function, ) if TYPE_CHECKING: - from ttsim.typing import ( + from types import ModuleType + + from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, - NestedColumnObjectsParamFunctions, + IntColumn, NestedPolicyEnvironment, OrigParamSpec, ) -GENERIC_PARAM_HEADER = { +_GENERIC_PARAM_HEADER = { "name": {"de": "foo", "en": "foo"}, "description": {"de": "foo", "en": "foo"}, "unit": None, "reference_period": None, } +_GENERIC_PARAM_SPEC = { + "start_date": "2024-01-01", + "end_date": "2024-12-31", + **_GENERIC_PARAM_HEADER, +} + +_SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM = ConsecutiveInt1dLookupTableParam( + leaf_name="some_consecutive_int_1d_lookup_table_param", + value=ConsecutiveInt1dLookupTableParamValue( + base_to_subtract=1, + values_to_look_up=numpy.array([1, 2, 3]), + ), + **_GENERIC_PARAM_SPEC, +) + +_SOME_DICT_PARAM = DictParam( + leaf_name="some_dict_param", + value={"a": 1, "b": 2}, + **_GENERIC_PARAM_SPEC, +) + + +_SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( + leaf_name="some_piecewise_polynomial_param", + value=PiecewisePolynomialParamValue( + thresholds=numpy.array([1, 2, 3]), + intercepts=numpy.array([1, 2, 3]), + rates=numpy.array([1, 2, 3]), + ), + **_GENERIC_PARAM_SPEC, +) + + +@pytest.fixture +def minimal_data_tree(): + return { + "hh_id": numpy.array([1, 2, 3]), + "p_id": numpy.array([1, 2, 3]), + } def identity(x: int) -> int: @@ -66,16 +113,6 @@ def return_three() -> int: return 3 -@policy_function() -def some_func(p_id: int) -> int: - return p_id - - -@policy_function() -def another_func(some_func: int) -> int: - return some_func - - @group_creation_function() def fam_id() -> int: pass @@ -84,21 +121,20 @@ def fam_id() -> int: @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 - out = { + return { "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), "fam_id": pd.Series(numpy.arange(n_individuals), name="fam_id"), } - return out -@pytest.fixture(scope="module") -def mettsim_environment() -> NestedPolicyEnvironment: +def mettsim_environment(backend) -> NestedPolicyEnvironment: return main( inputs={ - "root": METTSIM_ROOT, + "orig_policy_objects__root": Path(__file__).parent.parent / "mettsim", "date": datetime.date(2025, 1, 1), + "backend": backend, }, - targets=["policy_environment"], + output_names=["policy_environment"], )["policy_environment"] @@ -106,6 +142,16 @@ def some_x(x): return x +@policy_function() +def some_policy_func_returning_array_of_length_2(xnp: ModuleType) -> IntColumn: + return xnp.array([1, 2]) + + +@param_function() +def some_param_func_returning_list_of_length_2() -> list[int]: + return [1, 2] + + @pytest.mark.parametrize( ("tree", "leaf_checker", "err_substr"), [ @@ -134,7 +180,9 @@ def some_x(x): def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): with pytest.raises(TypeError, match=re.escape(err_substr)): assert_valid_ttsim_pytree( - tree=tree, leaf_checker=leaf_checker, tree_name="tree" + tree=tree, + leaf_checker=leaf_checker, + tree_name="tree", ) @@ -156,10 +204,10 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): )(identity), }, { - ("c", "g"): { - **GENERIC_PARAM_HEADER, + ("c", "g"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 1}, - } + }, }, ), # Same submodule, overlapping periods, different leaf names so no name clashes. @@ -177,10 +225,10 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): )(identity), }, { - ("x", "c", "h"): { - **GENERIC_PARAM_HEADER, + ("x", "c", "h"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 2}, - } + }, }, ), # Different submodules, no overlapping periods, no name clashes. @@ -196,10 +244,10 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): )(identity), }, { - ("x", "c", "g"): { - **GENERIC_PARAM_HEADER, + ("x", "c", "g"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 3}, - } + }, }, ), # Different paths, overlapping periods, same names but no clashes. @@ -217,22 +265,22 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): )(identity), }, { - ("z", "a", "f"): { - **GENERIC_PARAM_HEADER, + ("z", "a", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 4}, - } + }, }, ), # Different yaml files, no name clashes because of different names. ( {}, { - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, + ("x", "a", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 5}, }, - ("x", "b", "g"): { - **GENERIC_PARAM_HEADER, + ("x", "b", "g"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 6}, }, }, @@ -271,7 +319,7 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): "value": 13, "note": "Complex didn't last long.", }, - } + }, }, ), # Different periods specified in different files. @@ -309,11 +357,11 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): ), ], ) -def test_fail_because_active_periods_overlap_passes( +def test_fail_if_active_periods_overlap_passes( orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, orig_tree_with_params: FlatOrigParamSpecs, ): - fail_if_active_periods_overlap( + active_periods_overlap( orig_tree_with_column_objects_and_param_functions, orig_tree_with_params, ) @@ -415,10 +463,10 @@ def test_fail_because_active_periods_overlap_passes( )(identity), }, { - ("c", "f"): { - **GENERIC_PARAM_HEADER, + ("c", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 1}, - } + }, }, ), # Same paths, no overlap in functions, name clashes leaf name / yaml. @@ -436,159 +484,180 @@ def test_fail_because_active_periods_overlap_passes( )(identity), }, { - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, + ("x", "a", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 2}, - } + }, }, ), # Same paths, name clashes within params from different yaml files. ( {}, { - ("x", "a", "f"): { - **GENERIC_PARAM_HEADER, + ("x", "a", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 3}, }, - ("x", "b", "f"): { - **GENERIC_PARAM_HEADER, + ("x", "b", "f"): { # type: ignore[misc] + **_GENERIC_PARAM_HEADER, datetime.date(2023, 1, 1): {"value": 4}, }, }, ), ], ) -def test_fail_because_active_periods_overlap_raises( +def test_fail_if_active_periods_overlap_raises( orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, orig_tree_with_params: FlatOrigParamSpecs, ): with pytest.raises(ConflictingActivePeriodsError): - fail_if_active_periods_overlap( + active_periods_overlap( orig_tree_with_column_objects_and_param_functions, orig_tree_with_params, ) -def test_fail_if_data_tree_is_invalid(): - data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} - - with pytest.raises( - ValueError, match="The input data must contain the `p_id` column." - ): - fail_if_data_tree_is_invalid(data_tree=data) - - -def test_fail_if_data_tree_is_invalid_via_main(): - data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} +@pytest.mark.parametrize( + ( + "environment", + "targets__tree", + ), + [ + ( + { + "some_dict_param": _SOME_DICT_PARAM, + }, + {"some_dict_param": "res1"}, + ), + ], +) +def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( + environment, + targets__tree, + minimal_data_tree, + backend, +): + results__tree = main( + inputs={ + "input_data__tree": minimal_data_tree, + "policy_environment": environment, + "targets__tree": targets__tree, + "rounding": False, + "backend": backend, + }, + output_names=["results__tree"], + )["results__tree"] with pytest.raises( ValueError, - match="The input data must contain the `p_id` column.", + match="are not mapped to a column name", ): - main( - inputs={ - "data_tree": data, - "policy_environment": {}, - "targets_tree": {}, - "rounding": False, - }, - targets=["fail_if_data_tree_is_invalid"], - )["fail_if_data_tree_is_invalid"] + paths_are_missing_in_targets_tree_mapper( + results__tree=results__tree, + targets__tree=targets__tree, + ) def test_fail_if_foreign_keys_are_invalid_in_data_allow_minus_one_as_foreign_key( - mettsim_environment: NestedPolicyEnvironment, + backend, ): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { "p_id": pd.Series([1, 2, 3]), "p_id_spouse": pd.Series([-1, 1, 2]), } - fail_if_foreign_keys_are_invalid_in_data( - qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, - qual_name_data=data, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + foreign_keys_are_invalid_in_data( + labels__root_nodes={n for n in data if n != "p_id"}, + processed_data=data, + specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_non_existing_p_id( - mettsim_environment: NestedPolicyEnvironment, + backend, ): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { "p_id": pd.Series([1, 2, 3]), "p_id_spouse": pd.Series([0, 1, 2]), } with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): - fail_if_foreign_keys_are_invalid_in_data( - qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, - qual_name_data=data, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + foreign_keys_are_invalid_in_data( + labels__root_nodes={n for n in data if n != "p_id"}, + processed_data=data, + specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_allowed( - mettsim_environment: NestedPolicyEnvironment, + backend, ): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { "p_id": pd.Series([1, 2, 3]), "p_id_child_": pd.Series([1, 3, 3]), } - fail_if_foreign_keys_are_invalid_in_data( - qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, - qual_name_data=data, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + foreign_keys_are_invalid_in_data( + labels__root_nodes={n for n in data if n != "p_id"}, + processed_data=data, + specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_not_allowed( - mettsim_environment: NestedPolicyEnvironment, + backend, ): - flat_objects_tree = dt.flatten_to_qual_names(mettsim_environment) + flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { "p_id": pd.Series([1, 2, 3]), "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), } - fail_if_foreign_keys_are_invalid_in_data( - qual_name_input_data={k: v for k, v in data.items() if k != "p_id"}, - qual_name_data=data, - flat_policy_environment_with_derived_functions_and_without_overridden_functions=flat_objects_tree, + foreign_keys_are_invalid_in_data( + labels__root_nodes={n for n in data if n != "p_id"}, + processed_data=data, + specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) def test_fail_if_group_ids_are_outside_top_level_namespace(): with pytest.raises( - ValueError, match="Group identifiers must live in the top-level namespace. Got:" + ValueError, + match="Group identifiers must live in the top-level namespace. Got:", ): - fail_if_group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) + group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) def test_fail_if_group_variables_are_not_constant_within_groups(): data = { - "foo_kin": pd.Series([1, 2, 2], name="foo_kin"), - "kin_id": pd.Series([1, 1, 2], name="kin_id"), + "p_id": numpy.array([0, 1, 2]), + "foo_kin": numpy.array([1, 2, 2]), + "kin_id": numpy.array([1, 1, 2]), } - with pytest.raises(ValueError): - fail_if_group_variables_are_not_constant_within_groups( - qual_name_input_data=data, - grouping_levels=("kin",), + with pytest.raises( + ValueError, + match="The following data inputs do not have a unique value within", + ): + group_variables_are_not_constant_within_groups( + labels__grouping_levels=("kin",), + labels__root_nodes={n for n in data if n != "p_id"}, + processed_data=data, ) -def test_fail_if_p_id_does_not_exist(): +def test_fail_if_input_data_tree_is_invalid(xnp): data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} with pytest.raises( - ValueError, match="The input data must contain the `p_id` column." + ValueError, + match="The input data must contain the `p_id` column.", ): - fail_if_data_tree_is_invalid(data_tree=data) + input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) -def test_fail_if_p_id_does_not_exist_via_main(): +def test_fail_if_input_data_tree_is_invalid_via_main(backend): data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} with pytest.raises( ValueError, @@ -596,41 +665,218 @@ def test_fail_if_p_id_does_not_exist_via_main(): ): main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": {}, - "targets_tree": {}, + "targets__tree": {}, "rounding": False, - # "jit": jit, + "backend": backend, + }, + output_names=["fail_if__input_data_tree_is_invalid"], + )["fail_if__input_data_tree_is_invalid"] + + +@pytest.mark.parametrize( + "df", + [ + pd.DataFrame({True: [1, 2]}), + pd.DataFrame({1: [1, 2]}), + ], +) +def test_fail_if_input_df_has_bool_or_numeric_column_names(df): + with pytest.raises( + ValueError, + match="DataFrame column names cannot be booleans or numbers.", + ): + input_df_has_bool_or_numeric_column_names(df) + + +@pytest.mark.parametrize( + ( + "input_data__df_and_mapper__mapper", + "expected_error_message", + ), + [ + ( + [], + "The inputs tree to column mapping must be a \\(nested\\) dictionary.", + ), + ( + { + "n1": { + "n2": pd.Series([1, 2, 3]), + }, + }, + "n1__n2: Series", + ), + ( + { + "n1": { + "n2": None, + }, }, - targets=["fail_if_data_tree_is_invalid"], - )["fail_if_data_tree_is_invalid"] + "n1__n2: NoneType", + ), + ( + { + "n1": { + True: 2, + }, + }, + "All path elements of `inputs_tree_to_df_columns` must be strings.", + ), + ], +) +def test_fail_if_input_df_mapper_has_incorrect_format( + input_data__df_and_mapper__mapper, + expected_error_message, +): + with pytest.raises(TypeError, match=expected_error_message): + input_df_mapper_has_incorrect_format(input_data__df_and_mapper__mapper) @pytest.mark.parametrize( - "functions_tree", + ( + "environment", + "targets__tree", + "match", + ), [ - {"foo": policy_function(leaf_name="bar")(return_one)}, + ( + { + "some_piecewise_polynomial_param": _SOME_PIECEWISE_POLYNOMIAL_PARAM, + }, + {"some_piecewise_polynomial_param": "res1"}, + "The data contains objects that cannot be cast to a pandas.DataFrame", + ), + ( + { + "some_consecutive_int_1d_lookup_table_param": ( + _SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM + ), + }, + {"some_consecutive_int_1d_lookup_table_param": "res1"}, + "The data contains objects that cannot be cast to a pandas.DataFrame", + ), + ( + { + "some_param_func_returning_list_of_length_2": some_param_func_returning_list_of_length_2, + }, + {"some_param_func_returning_list_of_length_2": "res1"}, + "The data contains objects that cannot be cast to a pandas.DataFrame", + ), + ], +) +def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( + environment, + targets__tree, + minimal_data_tree, + match, + backend, + xnp, +): + environment["backend"] = backend + environment["xnp"] = xnp + actual = main( + inputs={ + "input_data__tree": minimal_data_tree, + "policy_environment": environment, + "targets__tree": targets__tree, + "rounding": False, + "backend": backend, + }, + output_names=["processed_data", "results__tree"], + ) + with pytest.raises(TypeError, match=match): + non_convertible_objects_in_results_tree( + processed_data=actual["processed_data"], + results__tree=actual["results__tree"], + xnp=xnp, + ) + + +@pytest.mark.parametrize( + ( + "environment", + "targets__tree", + "match", + ), + [ + ( + { + "some_policy_func_returning_array_of_length_2": some_policy_func_returning_array_of_length_2, + }, + {"some_policy_func_returning_array_of_length_2": "res1"}, + "The data contains paths that don't have the same length", + ), ], ) -def test_fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( - functions_tree: NestedColumnObjectsParamFunctions, +def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_length( + environment, + targets__tree, + minimal_data_tree, + match, + backend, + xnp, ): - with pytest.raises(KeyError): - fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( - functions_tree + environment["backend"] = backend + environment["xnp"] = xnp + actual = main( + inputs={ + "input_data__tree": minimal_data_tree, + "policy_environment": environment, + "targets__tree": targets__tree, + "rounding": False, + "backend": backend, + }, + output_names=["processed_data", "results__tree"], + ) + with pytest.raises(ValueError, match=match): + non_convertible_objects_in_results_tree( + processed_data=actual["processed_data"], + results__tree=actual["results__tree"], + xnp=xnp, ) -def test_fail_if_p_id_is_not_unique(): +def test_fail_if_p_id_does_not_exist(xnp): + data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} + + with pytest.raises( + ValueError, + match="The input data must contain the `p_id` column.", + ): + input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) + + +def test_fail_if_p_id_does_not_exist_via_main(backend): + data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} + with pytest.raises( + ValueError, + match="The input data must contain the `p_id` column.", + ): + main( + inputs={ + "input_data__tree": data, + "policy_environment": {}, + "targets__tree": {}, + "rounding": False, + "backend": backend, + }, + output_names=["fail_if__input_data_tree_is_invalid"], + )["fail_if__input_data_tree_is_invalid"] + + +def test_fail_if_p_id_is_not_unique(xnp): data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} with pytest.raises( - ValueError, match="The following `p_id`s are not unique in the input data" + ValueError, + match="The following `p_id`s are not unique in the input data", ): - fail_if_data_tree_is_invalid(data_tree=data) + input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) -def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data): +def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): data = copy.deepcopy(minimal_input_data) data["p_id"][:] = 1 @@ -640,16 +886,17 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data): ): main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": {}, - "targets_tree": {}, + "targets__tree": {}, "rounding": False, + "backend": backend, }, - targets=["fail_if_data_tree_is_invalid"], - )["fail_if_data_tree_is_invalid"] + output_names=["fail_if__input_data_tree_is_invalid"], + )["fail_if__input_data_tree_is_invalid"] -def test_fail_if_root_nodes_are_missing_via_main(minimal_input_data): +def test_fail_if_root_nodes_are_missing_via_main(minimal_input_data, backend): def b(a): return a @@ -667,18 +914,18 @@ def c(b): ): main( inputs={ - "data_tree": minimal_input_data, + "input_data__tree": minimal_input_data, "policy_environment": policy_environment, - "targets_tree": {"c": None}, + "targets__tree": {"c": None}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results", "fail_if_root_nodes_are_missing"], + output_names=["results__tree", "fail_if__root_nodes_are_missing"], ) @pytest.mark.parametrize( - "policy_environment, targets, qual_name_data_columns, expected_error_match", + "policy_environment, targets, labels__processed_data_columns, expected_error_match", [ ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), @@ -686,22 +933,29 @@ def c(b): ({"foo__baz": some_x}, {"foo__bar": None}, {"spam"}, "('foo', 'bar')"), ], ) -def test_fail_if_targets_are_not_in_policy_environment_or_data( - policy_environment, targets, qual_name_data_columns, expected_error_match +def test_fail_if_targets_are_not_in_specialized_environment_or_data( + policy_environment, + targets, + labels__processed_data_columns, + expected_error_match, ): with pytest.raises( - ValueError, match="The following targets have no corresponding function" + ValueError, + match="The following targets have no corresponding function", ) as e: - fail_if_targets_are_not_in_policy_environment_or_data( - policy_environment=policy_environment, - qual_name_targets=targets, - qual_name_data_columns=qual_name_data_columns, + targets_are_not_in_specialized_environment_or_data( + specialized_environment__without_tree_logic_and_with_derived_functions=dt.flatten_to_qnames( + policy_environment + ), + targets__qname=targets, + labels__processed_data_columns=labels__processed_data_columns, ) assert expected_error_match in str(e.value) -def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( +def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( minimal_input_data, + backend, ): with pytest.raises( ValueError, @@ -709,12 +963,15 @@ def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( ): main( inputs={ - "data_tree": minimal_input_data, + "input_data__tree": minimal_input_data, "policy_environment": {}, - "targets_tree": {"unknown_target": None}, + "targets__tree": {"unknown_target": None}, "rounding": False, + "backend": backend, }, - targets=["fail_if_targets_are_not_in_policy_environment_or_data"], + output_names=[ + "fail_if__targets_are_not_in_specialized_environment_or_data" + ], ) @@ -748,9 +1005,9 @@ def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( leaf_name="foo", original_function_name="foo", start_date=datetime.date(1984, 1, 1), - end_date=DEFAULT_END_DATE, - **GENERIC_PARAM_HEADER, - ) + end_date=datetime.date(2099, 12, 31), + **_GENERIC_PARAM_HEADER, + ), ], ), ( @@ -770,8 +1027,8 @@ def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( original_function_name="foo", start_date=datetime.date(1984, 1, 1), end_date=datetime.date(1984, 12, 31), - **GENERIC_PARAM_HEADER, - ) + **_GENERIC_PARAM_HEADER, + ), ], ), ( @@ -801,7 +1058,7 @@ def test_fail_if_targets_are_not_in_policy_environment_or_data_via_main( leaf_name="bar", original_function_name="bar", start_date=datetime.date(2023, 3, 1), - end_date=DEFAULT_END_DATE, + end_date=datetime.date(2099, 12, 31), name={"de": "bar", "en": "bar"}, description={"de": "bar", "en": "bar"}, unit=None, @@ -841,41 +1098,3 @@ def test_ttsim_param_with_active_periods( leaf_name=leaf_name, ) assert actual == expected - - -def test_warn_if_functions_and_data_columns_overlap(): - with pytest.warns(FunctionsAndDataColumnsOverlapWarning): - main( - inputs={ - "data_tree": { - "p_id": pd.Series([0]), - "some_func": pd.Series([1]), - }, - "policy_environment": { - "some_func": some_func, - "some_target": another_func, - }, - "targets_tree": {"some_target": None}, - "rounding": False, - # "jit": jit, - }, - targets=["warn_if_functions_and_data_columns_overlap"], - ) - - -def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(): - with warnings.catch_warnings(): - warnings.filterwarnings("error", category=FunctionsAndDataColumnsOverlapWarning) - main( - inputs={ - "data_tree": { - "p_id": pd.Series([0]), - "x": pd.Series([1]), - }, - "policy_environment": {"some_func": some_func}, - "targets_tree": {"some_func": None}, - "rounding": False, - # "jit": jit, - }, - targets=["warn_if_functions_and_data_columns_overlap"], - ) diff --git a/tests/ttsim/interface_dag_elements/test_labels.py b/tests/ttsim/interface_dag_elements/test_labels.py new file mode 100644 index 0000000000..4dd6299298 --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_labels.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +import pytest + +from ttsim.interface_dag_elements.labels import grouping_levels, top_level_namespace +from ttsim.tt_dag_elements import policy_function, policy_input + + +def identity(x: int) -> int: + return x + + +@policy_input() +def fam_id() -> int: + pass + + +@pytest.mark.parametrize( + ( + "policy_environment", + "expected", + ), + [ + ( + { + "foo_m": policy_function(leaf_name="foo_m")(identity), + "fam_id": fam_id, + }, + {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, + ), + ( + { + "foo": policy_function(leaf_name="foo")(identity), + "fam_id": fam_id, + }, + {"foo", "foo_fam"}, + ), + ], +) +def test_get_top_level_namespace(policy_environment, expected): + result = top_level_namespace( + policy_environment=policy_environment, + grouping_levels=grouping_levels(policy_environment), + ) + assert all(name in result for name in expected) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py new file mode 100644 index 0000000000..01e1e3a68d --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -0,0 +1,113 @@ +from __future__ import annotations + +from datetime import timedelta +from pathlib import Path +from typing import TYPE_CHECKING, Literal + +import numpy +import pytest + +from ttsim import main +from ttsim.plot_dag import ( + plot_tt_dag, +) +from ttsim.testing_utils import ( + PolicyTest, + check_env_completeness, + execute_test, + load_policy_test_data, +) + +if TYPE_CHECKING: + import datetime + + from ttsim.interface_dag_elements.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + ) + +METTSIM_ROOT = Path(__file__).parent / "mettsim" + + +POLICY_TEST_IDS_AND_CASES = load_policy_test_data( + test_dir=Path(__file__).parent / "mettsim_test_data", + policy_name="", + xnp=numpy, +) + + +def get_orig_mettsim_objects() -> dict[ + str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs +]: + return main( + orig_policy_objects={"root": METTSIM_ROOT}, + output_names=[ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ], + ) + + +def dates_in_orig_mettsim_objects() -> list[datetime.date]: + orig_objects = get_orig_mettsim_objects() + start_dates = { + v.start_date + for v in orig_objects[ + "orig_policy_objects__column_objects_and_param_functions" + ].values() + } + end_dates = { + v.end_date + timedelta(days=1) + for v in orig_objects[ + "orig_policy_objects__column_objects_and_param_functions" + ].values() + } + return sorted(start_dates | end_dates) + + +@pytest.fixture +def orig_mettsim_objects(): + return get_orig_mettsim_objects() + + +@pytest.mark.parametrize( + "test", + POLICY_TEST_IDS_AND_CASES.values(), + ids=POLICY_TEST_IDS_AND_CASES.keys(), +) +def test_mettsim(test: PolicyTest, backend: Literal["numpy", "jax"]): + execute_test(test=test, root=METTSIM_ROOT, backend=backend) + + +def test_mettsim_policy_environment_dag_with_params(): + plot_tt_dag( + date_str="2020-01-01", + root=METTSIM_ROOT, + include_params=True, + title="METTSIM Policy Environment DAG with parameters", + show_node_description=True, + ) + + +def test_mettsim_policy_environment_dag_without_params(): + plot_tt_dag( + date_str="2020-01-01", + root=METTSIM_ROOT, + include_params=False, + title="METTSIM Policy Environment DAG without parameters", + show_node_description=True, + ) + + +@pytest.mark.parametrize( + "date", + dates_in_orig_mettsim_objects(), + ids=lambda x: x.isoformat(), +) +def test_mettsim_policy_environment_is_complete(orig_mettsim_objects, date): + """Test that METTSIM's policy environment contains all root nodes of its DAG.""" + check_env_completeness( + name="METTSIM", + date=date, + orig_policy_objects=orig_mettsim_objects, + ) diff --git a/tests/ttsim/test_loader.py b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py similarity index 66% rename from tests/ttsim/test_loader.py rename to tests/ttsim/interface_dag_elements/test_orig_policy_objects.py index e041247e57..34f7d7d837 100644 --- a/tests/ttsim/test_loader.py +++ b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py @@ -1,15 +1,17 @@ from __future__ import annotations -from mettsim.config import METTSIM_ROOT +from pathlib import Path -from ttsim.loader import ( +from ttsim.interface_dag_elements.orig_policy_objects import ( _find_files_recursively, - _load_module, + load_module, ) +METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" + def test_load_path(): - assert _load_module( + assert load_module( path=METTSIM_ROOT / "payroll_tax" / "amount.py", root=METTSIM_ROOT, ) @@ -17,6 +19,7 @@ def test_load_path(): def test_dont_load_init_py(): """Don't load __init__.py files as sources for PolicyFunctions and - AggregationSpecs.""" + AggregationSpecs. + """ all_files = _find_files_recursively(root=METTSIM_ROOT, suffix=".py") assert "__init__.py" not in [file.name for file in all_files] diff --git a/tests/ttsim/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py similarity index 63% rename from tests/ttsim/test_policy_environment.py rename to tests/ttsim/interface_dag_elements/test_policy_environment.py index 5a106a7776..74768c1b85 100644 --- a/tests/ttsim/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -9,28 +9,25 @@ import optree import pandas as pd import pytest -from mettsim.config import METTSIM_ROOT -from ttsim import ( - ScalarParam, - main, - policy_function, +from ttsim import main +from ttsim.interface_dag_elements.orig_policy_objects import ( + column_objects_and_param_functions, ) -from ttsim.loader import ( - orig_tree_with_column_objects_and_param_functions, - orig_tree_with_params, -) -from ttsim.policy_environment import ( +from ttsim.interface_dag_elements.policy_environment import ( + _active_column_objects_and_param_functions, + _active_param_objects, _get_param_value, - active_tree_with_column_objects_and_param_functions, - active_tree_with_params, ) +from ttsim.tt_dag_elements import ScalarParam, policy_function if TYPE_CHECKING: - from ttsim.typing import ( + from ttsim.interface_dag_elements.typing import ( NestedColumnObjectsParamFunctions, ) +METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" + @pytest.fixture(scope="module") def some_params_spec_with_updates_previous(): @@ -62,39 +59,50 @@ def some_int_param(): ) -def test_add_jahresanfang(): - _orig_tree_with_params = orig_tree_with_params( - root=Path(__file__).parent / "test_parameters" - ) - k = ("test_add_jahresanfang.yaml", "foo") - _active_ttsim_tree_with_params = active_tree_with_params( - orig_tree_with_params={k: _orig_tree_with_params[k]}, +def test_add_jahresanfang(xnp): + spec = { + "name": {"de": "Test", "en": "Check"}, + "description": {"de": "Nichts zu sehen", "en": "Nothing to do"}, + "type": "scalar", + "add_jahresanfang": True, + datetime.date(2020, 1, 1): {"value": 1}, + datetime.date(2020, 7, 1): {"value": 2}, + } + _active_ttsim_tree_with_params = _active_param_objects( + orig={("spam.yaml", "foo"): spec}, date=pd.to_datetime("2020-07-01").date(), + xnp=xnp, ) assert _active_ttsim_tree_with_params["foo"].value == 2 assert _active_ttsim_tree_with_params["foo_jahresanfang"].value == 1 -def test_input_is_recognized_as_potential_group_id(): - grouping_levels = main( - inputs={ - "root": METTSIM_ROOT, - "date": datetime.date(2020, 1, 1), - }, - targets=["grouping_levels"], - )["grouping_levels"] - assert "kin" in grouping_levels +def test_input_is_recognized_as_potential_group_id(backend): + assert ( + "kin" + in main( + inputs={ + "orig_policy_objects__root": METTSIM_ROOT, + "date": datetime.date(2020, 1, 1), + "backend": backend, + }, + output_names=["labels__grouping_levels"], + )["labels__grouping_levels"] + ) -def test_p_id_not_recognized_as_potential_group_id(): - grouping_levels = main( - inputs={ - "root": METTSIM_ROOT, - "date": datetime.date(2020, 1, 1), - }, - targets=["grouping_levels"], - )["grouping_levels"] - assert "p" not in grouping_levels +def test_p_id_not_recognized_as_potential_group_id(backend): + assert ( + "p" + not in main( + inputs={ + "orig_policy_objects__root": METTSIM_ROOT, + "date": datetime.date(2020, 1, 1), + "backend": backend, + }, + output_names=["labels__grouping_levels"], + )["labels__grouping_levels"] + ) @pytest.mark.parametrize( @@ -120,7 +128,10 @@ def test_func(): ], ) def test_start_date_invalid(date_string: str): - with pytest.raises(ValueError): + with pytest.raises( + ValueError, + match="neither matches the format YYYY-MM-DD nor is a datetime.date", + ): @policy_function(start_date=date_string) def test_func(): @@ -158,7 +169,10 @@ def test_func(): ], ) def test_end_date_invalid(date_string: str): - with pytest.raises(ValueError): + with pytest.raises( + ValueError, + match="neither matches the format YYYY-MM-DD nor is a datetime.date", + ): @policy_function(end_date=date_string) def test_func(): @@ -174,7 +188,7 @@ def test_func(): def test_active_period_is_empty(): - with pytest.raises(ValueError): + with pytest.raises(ValueError, match="must be before the end date"): @policy_function(start_date="2023-01-20", end_date="2023-01-19") def test_func(): @@ -198,15 +212,13 @@ def test_active_tree_with_column_objects_and_param_functions( function_name_last_day: str, function_name_next_day: str, ): - _orig_tree_with_column_objects_and_param_functions = ( - orig_tree_with_column_objects_and_param_functions(root=METTSIM_ROOT) - ) - functions_last_day = active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, + orig = column_objects_and_param_functions(root=METTSIM_ROOT) + functions_last_day = _active_column_objects_and_param_functions( + orig=orig, date=last_day, ) - functions_next_day = active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions=_orig_tree_with_column_objects_and_param_functions, + functions_next_day = _active_column_objects_and_param_functions( + orig=orig, date=last_day + datetime.timedelta(days=1), ) diff --git a/tests/ttsim/test_shared.py b/tests/ttsim/interface_dag_elements/test_shared.py similarity index 89% rename from tests/ttsim/test_shared.py rename to tests/ttsim/interface_dag_elements/test_shared.py index fbe1de7b96..4565b9167f 100644 --- a/tests/ttsim/test_shared.py +++ b/tests/ttsim/interface_dag_elements/test_shared.py @@ -4,7 +4,7 @@ import pytest -from ttsim.shared import ( +from ttsim.interface_dag_elements.shared import ( create_tree_from_path_and_value, get_name_of_group_by_id, get_re_pattern_for_all_time_units_and_groupings, @@ -28,7 +28,7 @@ def test_leap_year_correctly_handled(): def test_fail_if_invalid_date(): - with pytest.raises(ValueError): + with pytest.raises(ValueError, match="day is out of range for month"): to_datetime(date="2020-02-30") @@ -43,7 +43,9 @@ def test_fail_if_invalid_date(): ) def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): result = upsert_path_and_value( - base=base, path_to_upsert=path_to_upsert, value_to_upsert=value_to_upsert + base=base, + path_to_upsert=path_to_upsert, + value_to_upsert=value_to_upsert, ) assert result == expected @@ -57,7 +59,9 @@ def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): ) def test_insert_path_and_value(base, path_to_insert, value_to_insert, expected): result = insert_path_and_value( - base=base, path_to_insert=path_to_insert, value_to_insert=value_to_insert + base=base, + path_to_insert=path_to_insert, + value_to_insert=value_to_insert, ) assert result == expected @@ -71,7 +75,9 @@ def test_insert_path_and_value(base, path_to_insert, value_to_insert, expected): def test_insert_path_and_value_invalid(base, path_to_insert, value_to_insert): with pytest.raises(ValueError, match="Conflicting paths in trees to merge."): insert_path_and_value( - base=base, path_to_insert=path_to_insert, value_to_insert=value_to_insert + base=base, + path_to_insert=path_to_insert, + value_to_insert=value_to_insert, ) @@ -195,7 +201,8 @@ def test_upsert_tree(base_dict, update_dict, expected): ) def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, expected): in_reference_tree, not_in_reference_tree = partition_tree_by_reference_tree( - tree_to_partition=tree_to_partition, reference_tree=reference_tree + tree_to_partition=tree_to_partition, + reference_tree=reference_tree, ) assert in_reference_tree == expected[0] @@ -215,7 +222,7 @@ def test_get_name_of_group_by_id(target_name, expected): assert ( get_name_of_group_by_id( target_name=target_name, - groupings=("kin", "fam"), + grouping_levels=("kin", "fam"), ) == expected ) @@ -225,7 +232,7 @@ def test_get_name_of_group_by_id(target_name, expected): ( "func_name", "time_units", - "groupings", + "grouping_levels", "expected_base_name", "expected_time_unit", "expected_grouping", @@ -243,14 +250,14 @@ def test_get_name_of_group_by_id(target_name, expected): def test_get_re_pattern_for_time_units_and_groupings( func_name, time_units, - groupings, + grouping_levels, expected_base_name, expected_time_unit, expected_grouping, ): result = get_re_pattern_for_all_time_units_and_groupings( time_units=time_units, - groupings=groupings, + grouping_levels=grouping_levels, ) match = result.fullmatch(func_name) assert match.group("base_name") == expected_base_name @@ -262,7 +269,7 @@ def test_get_re_pattern_for_time_units_and_groupings( ( "base_name", "time_units", - "groupings", + "grouping_levels", "expected_match", ), [ @@ -272,11 +279,14 @@ def test_get_re_pattern_for_time_units_and_groupings( ], ) def test_get_re_pattern_for_some_base_name( - base_name, time_units, groupings, expected_match + base_name, + time_units, + grouping_levels, + expected_match, ): re_pattern = get_re_pattern_for_specific_time_units_and_groupings( base_name=base_name, all_time_units=time_units, - groupings=groupings, + grouping_levels=grouping_levels, ) assert re_pattern.fullmatch(expected_match) diff --git a/tests/ttsim/test_compute_taxes_and_transfers.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py similarity index 65% rename from tests/ttsim/test_compute_taxes_and_transfers.py rename to tests/ttsim/interface_dag_elements/test_specialized_environment.py index ac8ebb26f5..5fc073cd19 100644 --- a/tests/ttsim/test_compute_taxes_and_transfers.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -2,15 +2,20 @@ import datetime from dataclasses import dataclass -from typing import TYPE_CHECKING +from pathlib import Path +from typing import TYPE_CHECKING, Literal import dags.tree as dt import numpy import pandas as pd import pytest -from mettsim.config import METTSIM_ROOT -from ttsim import ( +from ttsim import main, merge_trees +from ttsim.interface_dag_elements.specialized_environment import ( + with_partialled_params_and_scalars, + with_processed_params_and_scalars, +) +from ttsim.tt_dag_elements import ( AggType, DictParam, PiecewisePolynomialParam, @@ -19,26 +24,13 @@ ScalarParam, agg_by_group_function, agg_by_p_id_function, - column_functions_with_processed_params_and_scalars, - main, - merge_trees, param_function, policy_function, policy_input, - required_column_functions, - top_level_namespace, ) -from ttsim.config import IS_JAX_INSTALLED -from ttsim.config import numpy_or_jax as np -from ttsim.typing import TTSIMArray if TYPE_CHECKING: - from ttsim.typing import NestedPolicyEnvironment - -if IS_JAX_INSTALLED: - jit = True -else: - jit = False + from ttsim.interface_dag_elements.typing import IntColumn, NestedPolicyEnvironment @policy_input() @@ -61,22 +53,22 @@ def betrag_m() -> float: pass -@policy_function() +@policy_function(vectorization_strategy="vectorize") def identity(x: int) -> int: return x -@policy_function() +@policy_function(vectorization_strategy="vectorize") def identity_plus_one(identity: int) -> int: return identity + 1 -@policy_function() +@policy_function(vectorization_strategy="vectorize") def some_func(p_id: int) -> int: return p_id -@policy_function() +@policy_function(vectorization_strategy="vectorize") def another_func(some_func: int) -> int: return some_func @@ -86,7 +78,7 @@ def some_scalar_params_func(some_int_param: int) -> int: return some_int_param -@policy_function() +@policy_function(vectorization_strategy="vectorize") def some_policy_func_taking_scalar_params_func( some_scalar_params_func: int, ) -> int: @@ -111,12 +103,14 @@ def some_converting_params_func( @param_function() def some_param_function_taking_scalar( - some_int_scalar: int, some_float_scalar: float, some_bool_scalar: bool + some_int_scalar: int, + some_float_scalar: float, + some_bool_scalar: bool, ) -> float: return some_int_scalar + some_float_scalar + int(some_bool_scalar) -@policy_function() +@policy_function(vectorization_strategy="vectorize") def some_policy_function_taking_int_param(some_int_param: int) -> float: return some_int_param @@ -187,22 +181,20 @@ def some_policy_function_taking_int_param(some_int_param: int) -> float: @pytest.fixture(scope="module") def minimal_input_data(): n_individuals = 5 - out = { - "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "fam_id": pd.Series(numpy.arange(n_individuals), name="fam_id"), + return { + "p_id": numpy.arange(n_individuals), + "fam_id": numpy.arange(n_individuals), } - return out @pytest.fixture(scope="module") def minimal_input_data_shared_fam(): n_individuals = 3 - out = { - "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "fam_id": pd.Series([0, 0, 1], name="fam_id"), - "p_id_someone_else": pd.Series([1, 0, -1], name="p_id_someone_else"), + return { + "p_id": numpy.arange(n_individuals), + "fam_id": numpy.array([0, 0, 1]), + "p_id_someone_else": numpy.array([1, 0, -1]), } - return out @agg_by_group_function(agg_type=AggType.SUM) @@ -214,30 +206,21 @@ def foo_fam(foo: int, fam_id: int) -> int: def mettsim_environment() -> NestedPolicyEnvironment: return main( inputs={ - "root": METTSIM_ROOT, + "orig_policy_objects__root": Path(__file__).parent.parent / "mettsim", "date": datetime.date(2025, 1, 1), }, - targets=["policy_environment"], + output_names=["policy_environment"], )["policy_environment"] # Create a function which is used by some tests below -@policy_function() +@policy_function(vectorization_strategy="vectorize") def func_before_partial(arg_1, some_param): return arg_1 + some_param -func_after_partial = required_column_functions( - column_functions_with_processed_params_and_scalars={ - "some_func": func_before_partial, - "some_param": SOME_INT_PARAM.value, - }, - rounding=False, -)["some_func"] - - @pytest.fixture -@policy_function(leaf_name="foo") +@policy_function(leaf_name="foo", vectorization_strategy="vectorize") def function_with_bool_return(x: bool) -> bool: return x @@ -273,13 +256,13 @@ def y_kin_namespaced_input(kin_id: int, inputs__x: int) -> int: @pytest.fixture -@policy_function(leaf_name="bar") +@policy_function(leaf_name="bar", vectorization_strategy="vectorize") def function_with_int_return(x: int) -> int: return x @pytest.fixture -@policy_function(leaf_name="baz") +@policy_function(leaf_name="baz", vectorization_strategy="vectorize") def function_with_float_return(x: int) -> float: return x @@ -303,8 +286,8 @@ def return_n1__x_kin(n1__x_kin: int) -> int: @pytest.mark.parametrize( ( "policy_environment", - "targets_tree", - "data_tree", + "targets__tree", + "input_data__tree", ), [ ( @@ -313,9 +296,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(return_n1__x_kin), + "f": policy_function(vectorization_strategy="vectorize")( + return_n1__x_kin + ), "x": x, }, }, @@ -332,7 +315,9 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function(leaf_name="f")(return_x_kin), + "f": policy_function(vectorization_strategy="vectorize")( + return_x_kin + ), "x": x, }, }, @@ -341,7 +326,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, + "num_segments": 3, }, ), ( @@ -350,9 +335,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(some_x), + "f": policy_function(vectorization_strategy="vectorize")(some_x), "x": x, }, }, @@ -361,7 +344,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, + "num_segments": 3, }, ), ( @@ -370,9 +353,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "kin_id": kin_id, "p_id": p_id, "n1": { - "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" - )(some_x), + "f": policy_function(vectorization_strategy="vectorize")(some_x), "x": x, }, "y_kin": y_kin, @@ -382,7 +363,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, + "num_segments": 3, }, ), ( @@ -392,7 +373,8 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "p_id": p_id, "n1": { "f": policy_function( - leaf_name="f", vectorization_strategy="vectorize" + leaf_name="f", + vectorization_strategy="vectorize", )(return_y_kin), "y_kin": y_kin_namespaced_input, }, @@ -403,29 +385,32 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "inputs": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 1, + "num_segments": 3, }, ), ], ) def test_create_agg_by_group_functions( policy_environment, - targets_tree, - data_tree, + targets__tree, + input_data__tree, + backend, ): + policy_environment["backend"] = backend + policy_environment["num_segments"] = len(input_data__tree["p_id"]) main( inputs={ "policy_environment": policy_environment, - "data_tree": data_tree, - "targets_tree": targets_tree, + "input_data__tree": input_data__tree, + "targets__tree": targets__tree, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] -def test_output_is_tree(minimal_input_data): +def test_output_is_tree(minimal_input_data, backend, xnp): policy_environment = { "p_id": p_id, "module": {"some_func": some_func}, @@ -433,18 +418,18 @@ def test_output_is_tree(minimal_input_data): out = main( inputs={ - "data_tree": minimal_input_data, + "input_data__tree": minimal_input_data, "policy_environment": policy_environment, - "targets_tree": {"module": {"some_func": None}}, + "targets__tree": {"module": {"some_func": None}}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] assert isinstance(out, dict) assert "some_func" in out["module"] - assert isinstance(out["module"]["some_func"], TTSIMArray) + assert isinstance(out["module"]["some_func"], xnp.ndarray) def test_params_target_is_allowed(minimal_input_data): @@ -467,54 +452,79 @@ def test_params_target_is_allowed(minimal_input_data): out = main( inputs={ - "data_tree": minimal_input_data, + "input_data__tree": minimal_input_data, "policy_environment": policy_environment, - "targets_tree": {"some_param": None, "module": {"some_func": None}}, + "targets__tree": {"some_param": None, "module": {"some_func": None}}, "rounding": False, - # "jit": jit, + "backend": "numpy", }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] assert isinstance(out, dict) assert "some_param" in out assert out["some_param"] == 1 -def test_function_without_data_dependency_is_not_mistaken_for_data(minimal_input_data): +def test_function_without_data_dependency_is_not_mistaken_for_data( + minimal_input_data, + backend, + xnp, +): @policy_function(leaf_name="a", vectorization_strategy="not_required") - def a() -> np.ndarray: - return np.array(minimal_input_data["p_id"]) + def a() -> IntColumn: + return xnp.array(minimal_input_data["p_id"]) @policy_function(leaf_name="b") - def b(a): + def b(a: int) -> int: return a policy_environment = { "a": a, "b": b, } - nested_results = main( + results__tree = main( inputs={ - "data_tree": minimal_input_data, + "input_data__tree": minimal_input_data, "policy_environment": policy_environment, - "targets_tree": {"b": None}, + "targets__tree": {"b": None}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] numpy.testing.assert_array_almost_equal( - nested_results["b"], np.array(minimal_input_data["p_id"]) + results__tree["b"], + xnp.array(minimal_input_data["p_id"]), ) -def test_partial_params_to_functions(): +def test_partial_params_to_functions(xnp, backend): # Partial function produces correct result + func_after_partial = with_partialled_params_and_scalars( + with_processed_params_and_scalars={ + "some_func": func_before_partial, + "some_param": SOME_INT_PARAM.value, + }, + rounding=False, + xnp=xnp, + backend=backend, + )["some_func"] + assert func_after_partial(2) == 3 -def test_partial_params_to_functions_removes_argument(): +def test_partial_params_to_functions_removes_argument(xnp, backend): + func_after_partial = with_partialled_params_and_scalars( + with_processed_params_and_scalars={ + "some_func": func_before_partial, + "some_param": SOME_INT_PARAM.value, + }, + rounding=False, + xnp=xnp, + backend=backend, + )["some_func"] + # Fails if params is added to partial function with pytest.raises( TypeError, @@ -526,7 +536,7 @@ def test_partial_params_to_functions_removes_argument(): func_before_partial(2, 1) -def test_user_provided_aggregate_by_group_specs(): +def test_user_provided_aggregate_by_group_specs(backend): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "fam_id": pd.Series([1, 1, 2], name="fam_id"), @@ -537,35 +547,38 @@ def test_user_provided_aggregate_by_group_specs(): "p_id": p_id, "fam_id": fam_id, "module_name": {"betrag_m": betrag_m}, + "backend": backend, } - expected_res = pd.Series([200, 200, 100]) + expected = pd.Series([200, 200, 100], index=pd.Index(data["p_id"], name="p_id")) - out = main( + actual = main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": policy_environment, - "targets_tree": {"module_name": {"betrag_m_fam": None}}, + "targets__tree": {"module_name": {"betrag_m_fam": None}}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] - - numpy.testing.assert_array_almost_equal( - out["module_name"]["betrag_m_fam"], expected_res + output_names=["results__df_with_nested_columns"], + )["results__df_with_nested_columns"] + + pd.testing.assert_series_equal( + actual[("module_name", "betrag_m_fam")], + expected, + check_names=False, + check_dtype=False, ) -def test_user_provided_aggregation(): +def test_user_provided_aggregation(backend): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "fam_id": pd.Series([1, 1, 2], name="fam_id"), "module_name": {"betrag_m": pd.Series([200, 100, 100], name="betrag_m")}, } - data["num_segments"] = len(data["fam_id"].unique()) # Double up, then take max fam_id - expected = pd.Series([400, 400, 200]) + expected = pd.Series([400, 400, 200], index=pd.Index(data["p_id"], name="p_id")) @policy_function(vectorization_strategy="vectorize") def betrag_m_double(betrag_m): @@ -582,25 +595,30 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: "betrag_m_double": betrag_m_double, "betrag_m_double_fam": betrag_m_double_fam, }, + "backend": backend, + "num_segments": len(data["p_id"]), } actual = main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": policy_environment, - "targets_tree": {"module_name": {"betrag_m_double_fam": None}}, + "targets__tree": {"module_name": {"betrag_m_double_fam": None}}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] - - numpy.testing.assert_array_almost_equal( - actual["module_name"]["betrag_m_double_fam"], expected + output_names=["results__df_with_nested_columns"], + )["results__df_with_nested_columns"] + + pd.testing.assert_series_equal( + actual[("module_name", "betrag_m_double_fam")], + expected, + check_names=False, + check_dtype=False, ) -def test_user_provided_aggregation_with_time_conversion(): +def test_user_provided_aggregation_with_time_conversion(backend): data = { "p_id": pd.Series([1, 2, 3], name="p_id"), "fam_id": pd.Series([1, 1, 2], name="fam_id"), @@ -610,7 +628,10 @@ def test_user_provided_aggregation_with_time_conversion(): } # Double up, convert to quarter, then take max fam_id - expected = pd.Series([400 * 12, 400 * 12, 200 * 12]) + expected = pd.Series( + [400 * 12, 400 * 12, 200 * 12], + index=pd.Index(data["p_id"], name="p_id"), + ) @policy_function(vectorization_strategy="vectorize") def betrag_double_m(betrag_m): @@ -627,34 +648,47 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: "betrag_double_m": betrag_double_m, "max_betrag_double_m_fam": max_betrag_double_m_fam, }, + "backend": backend, + "num_segments": len(data["p_id"]), } actual = main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": policy_environment, - "targets_tree": {"module_name": {"max_betrag_double_y_fam": None}}, + "targets__tree": {"module_name": {"max_betrag_double_y_fam": None}}, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] - - numpy.testing.assert_array_almost_equal( - actual["module_name"]["max_betrag_double_y_fam"], expected + output_names=["results__df_with_nested_columns"], + )["results__df_with_nested_columns"] + + pd.testing.assert_series_equal( + actual[("module_name", "max_betrag_double_y_fam")], + expected, + check_names=False, + check_dtype=False, ) @agg_by_p_id_function(agg_type=AggType.SUM) def sum_source_by_p_id_someone_else( - source: int, p_id: int, p_id_someone_else: int + source: int, + p_id: int, + p_id_someone_else: int, + num_segments: int, + backend: Literal["numpy", "jax"], ) -> int: pass @agg_by_p_id_function(agg_type=AggType.SUM) def sum_source_m_by_p_id_someone_else( - source_m: int, p_id: int, p_id_someone_else: int + source_m: int, + p_id: int, + p_id_someone_else: int, + num_segments: int, + backend: Literal["numpy", "jax"], ) -> int: pass @@ -665,22 +699,22 @@ def sum_source_m_by_p_id_someone_else( ( { "module": { - "sum_source_by_p_id_someone_else": sum_source_by_p_id_someone_else - } + "sum_source_by_p_id_someone_else": sum_source_by_p_id_someone_else, + }, }, "source", {"module": {"sum_source_by_p_id_someone_else": None}}, - pd.Series([200, 100, 0]), + pd.Series([200, 100, 0], index=pd.Index([0, 1, 2], name="p_id")), ), ( { "module": { - "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else # noqa: E501 - } + "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else, # noqa: E501 + }, }, "source_m", {"module": {"sum_source_m_by_p_id_someone_else": None}}, - pd.Series([200, 100, 0]), + pd.Series([200, 100, 0], index=pd.Index([0, 1, 2], name="p_id")), ), ], ) @@ -690,10 +724,12 @@ def test_user_provided_aggregate_by_p_id_specs( target_tree, expected, minimal_input_data_shared_fam, + backend, + xnp, ): @policy_function(leaf_name=leaf_name, vectorization_strategy="not_required") def source() -> int: - return np.array([100, 200, 300]) + return xnp.array([100, 200, 300]) policy_environment = merge_trees( agg_functions, @@ -701,51 +737,31 @@ def source() -> int: "module": {leaf_name: source}, "p_id": p_id, "p_id_someone_else": p_id_someone_else, + "backend": backend, + "num_segments": len(minimal_input_data_shared_fam["p_id"]), }, ) - out = main( + actual = main( inputs={ - "data_tree": minimal_input_data_shared_fam, + "input_data__tree": minimal_input_data_shared_fam, "policy_environment": policy_environment, - "targets_tree": target_tree, + "targets__tree": target_tree, "rounding": False, - # "jit": jit, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"]["module"][next(iter(target_tree["module"].keys()))] - - numpy.testing.assert_array_almost_equal(out, expected) - - -@pytest.mark.parametrize( - ( - "policy_environment", - "expected", - ), - [ - ( - { - "foo_m": policy_function(leaf_name="foo_m")(identity), - "fam_id": fam_id, - }, - {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, - ), - ( - { - "foo": policy_function(leaf_name="foo")(identity), - "fam_id": fam_id, - }, - {"foo", "foo_fam"}, - ), - ], -) -def test_get_top_level_namespace(policy_environment, expected): - result = top_level_namespace(policy_environment=policy_environment) - assert all(name in result for name in expected) + output_names=["results__df_with_nested_columns"], + )["results__df_with_nested_columns"] + + pd.testing.assert_series_equal( + actual[("module", next(iter(target_tree["module"].keys())))], + expected, + check_names=False, + check_dtype=False, + ) -def test_policy_environment_with_params_and_scalars_is_processed(): +def test_policy_environment_with_params_and_scalars_is_processed(backend, xnp): policy_environment = { "raw_param_spec": SOME_RAW_PARAM, "some_int_param": SOME_INT_PARAM, @@ -757,9 +773,11 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_scalar_params_func": some_scalar_params_func, "some_converting_params_func": some_converting_params_func, "some_param_function_taking_scalar": some_param_function_taking_scalar, + "backend": backend, } - processed_tree_with_params = column_functions_with_processed_params_and_scalars( - flat_policy_environment_with_derived_functions_and_without_overridden_functions=policy_environment, + actual = with_processed_params_and_scalars( + without_tree_logic_and_with_derived_functions=policy_environment, + processed_data={"x": xnp.array([1, 2, 3])}, ) expected = { "some_converting_params_func": ConvertedParam( @@ -774,15 +792,17 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_float_scalar": 2.0, "some_bool_scalar": True, "some_param_function_taking_scalar": 4.0, + "num_segments": 3, + "backend": backend, } - assert processed_tree_with_params == expected + assert actual == expected @pytest.mark.parametrize( ( "nested_policy_environment", "overriding_data", - "targets_tree", + "targets__tree", "expected_output", ), [ @@ -793,10 +813,10 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "identity_plus_one": identity_plus_one, }, { - "identity": np.array([1, 2, 3, 4, 5]), + "identity": numpy.array([1, 2, 3, 4, 5]), }, {"identity_plus_one": None}, - {"identity_plus_one": np.array([2, 3, 4, 5, 6])}, + {"identity_plus_one": numpy.array([2, 3, 4, 5, 6])}, ), # Overwriting parameter ( @@ -805,10 +825,10 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_policy_function_taking_int_param": some_policy_function_taking_int_param, # noqa: E501 }, { - "some_int_param": np.array([1, 2, 3, 4, 5]), + "some_int_param": numpy.array([1, 2, 3, 4, 5]), }, {"some_policy_function_taking_int_param": None}, - {"some_policy_function_taking_int_param": np.array([1, 2, 3, 4, 5])}, + {"some_policy_function_taking_int_param": numpy.array([1, 2, 3, 4, 5])}, ), # Overwriting parameter function ( @@ -818,32 +838,38 @@ def test_policy_environment_with_params_and_scalars_is_processed(): "some_policy_func_taking_scalar_params_func": some_policy_func_taking_scalar_params_func, # noqa: E501 }, { - "some_scalar_params_func": np.array([1, 2, 3, 4, 5]), + "some_scalar_params_func": numpy.array([1, 2, 3, 4, 5]), }, {"some_policy_func_taking_scalar_params_func": None}, - {"some_policy_func_taking_scalar_params_func": np.array([1, 2, 3, 4, 5])}, + { + "some_policy_func_taking_scalar_params_func": numpy.array( + [1, 2, 3, 4, 5], + ), + }, ), ], ) def test_can_override_ttsim_objects_with_data( nested_policy_environment, overriding_data, - targets_tree, + targets__tree, expected_output, minimal_input_data, + backend, ): actual = main( inputs={ - "data_tree": { + "input_data__tree": { **minimal_input_data, **overriding_data, }, "policy_environment": nested_policy_environment, - "targets_tree": targets_tree, + "targets__tree": targets__tree, "rounding": False, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] flat_actual = dt.flatten_to_tree_paths(actual) flat_expected = dt.flatten_to_tree_paths(expected_output) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py new file mode 100644 index 0000000000..ee68815c3d --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -0,0 +1,173 @@ +from __future__ import annotations + +from pathlib import Path + +import numpy + +from ttsim import main +from ttsim.testing_utils import ( + load_policy_test_data, +) +from ttsim.tt_dag_elements.column_objects_param_function import ( + policy_function, + policy_input, +) +from ttsim.tt_dag_elements.param_objects import DictParam, ScalarParam + +METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" + +TEST_DIR = Path(__file__).parent + +POLICY_TEST_IDS_AND_CASES = load_policy_test_data( + test_dir=TEST_DIR, + policy_name="", + xnp=numpy, +) + + +p1 = ScalarParam( + value=1, + leaf_name="some_int_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_int_param", + description="Some int param", + unit=None, + reference_period=None, + note=None, + reference=None, +) + +p2 = DictParam( + value={"a": 1, "b": 2}, + leaf_name="some_dict_param", + start_date="2025-01-01", + end_date="2025-12-31", + name="some_dict_param", + description="Some dict param", + unit=None, + reference_period=None, + note=None, + reference=None, +) + + +@policy_input() +def inp1() -> int: + pass + + +@policy_input() +def inp2() -> float: + pass + + +@policy_function() +def x(inp1: int, p1: int, p2: dict[str, int]) -> int: + return inp1 + p1 + p2["a"] + p2["b"] + + +@policy_function() +def y(inp2: float, p2: dict[str, int]) -> float: + return inp2 + p2["b"] + + +@policy_function() +def z(a__x: int, a__y: float) -> float: + return a__x + a__y + + +def test_template_all_outputs_no_inputs(backend): + actual = main( + inputs={ + "policy_environment": { + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, + }, + }, + "rounding": True, + "date_str": "2025-01-01", + "backend": backend, + }, + output_names=["templates__input_data_dtypes"], + )["templates__input_data_dtypes"] + assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} + + +def test_template_all_outputs_with_inputs(backend): + actual = main( + inputs={ + "input_data__tree": { + "p_id": [4, 5, 6], + "a": { + "inp2": [1, 2, 3], + }, + "inp1": [0, 1, 2], + }, + "policy_environment": { + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, + }, + }, + "rounding": True, + "date_str": "2025-01-01", + "backend": backend, + }, + output_names=["templates__input_data_dtypes"], + )["templates__input_data_dtypes"] + assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} + + +def test_template_output_y_no_inputs(backend): + actual = main( + inputs={ + "targets__tree": {"a": {"y": None}}, + "policy_environment": { + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, + }, + }, + "rounding": True, + "date_str": "2025-01-01", + "backend": backend, + }, + output_names=["templates__input_data_dtypes"], + )["templates__input_data_dtypes"] + assert actual == {"a": {"inp2": "FloatColumn"}} + + +def test_template_output_x_with_inputs(backend): + actual = main( + inputs={ + "input_data__tree": { + "p_id": [4, 5, 6], + "a": { + "inp2": [1, 2, 3], + }, + "inp1": [0, 1, 2], + }, + "targets__tree": {"a": {"x": None}}, + "policy_environment": { + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, + }, + }, + "rounding": True, + "date_str": "2025-01-01", + "backend": backend, + }, + output_names=["templates__input_data_dtypes"], + )["templates__input_data_dtypes"] + assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py new file mode 100644 index 0000000000..f5ad7a77cb --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +import warnings + +import pandas as pd + +from ttsim import main +from ttsim.interface_dag_elements import warn_if +from ttsim.tt_dag_elements.column_objects_param_function import policy_function + + +@policy_function() +def some_func(p_id: int) -> int: + return p_id + + +@policy_function() +def another_func(some_func: int) -> int: + return some_func + + +def test_warn_if_functions_and_data_columns_overlap(backend): + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + main( + inputs={ + "input_data__tree": { + "p_id": pd.Series([0]), + "some_func": pd.Series([1]), + }, + "policy_environment": { + "some_func": some_func, + "some_target": another_func, + }, + "targets__tree": {"some_target": None}, + "rounding": False, + "backend": backend, + }, + output_names=["warn_if__functions_and_data_columns_overlap"], + ) + # Check that we got exactly one warning + assert len(w) == 1 + # Check that it's the right type of warning + assert w[0].category.__name__ == "FunctionsAndDataColumnsOverlapWarning" + + +def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend): + with warnings.catch_warnings(): + warnings.filterwarnings( + "error", + category=warn_if.FunctionsAndDataColumnsOverlapWarning, + ) + main( + inputs={ + "input_data__tree": { + "p_id": pd.Series([0]), + "x": pd.Series([1]), + }, + "policy_environment": {"some_func": some_func}, + "targets__tree": {"some_func": None}, + "rounding": False, + "backend": backend, + }, + output_names=["warn_if__functions_and_data_columns_overlap"], + ) diff --git a/tests/ttsim/mettsim/config.py b/tests/ttsim/mettsim/config.py deleted file mode 100644 index 11567aaf8e..0000000000 --- a/tests/ttsim/mettsim/config.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Middle-Earth Taxes and Transfers Simulator. - -TTSIM specification for testing purposes. Taxes and transfer names follow a law-to-code -approach based on the Gondorian tax code. -""" - -from __future__ import annotations - -from pathlib import Path - -METTSIM_ROOT = Path(__file__).parent diff --git a/tests/ttsim/mettsim/demographics.py b/tests/ttsim/mettsim/demographics.py index 32dc684f68..3955bb9d5c 100644 --- a/tests/ttsim/mettsim/demographics.py +++ b/tests/ttsim/mettsim/demographics.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import AggType, agg_by_group_function +from ttsim.tt_dag_elements import AggType, agg_by_group_function @agg_by_group_function(agg_type=AggType.COUNT) diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py index d07f0b7d27..61c3da7945 100644 --- a/tests/ttsim/mettsim/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -1,74 +1,93 @@ from __future__ import annotations -from ttsim import group_creation_function -from ttsim.config import numpy_or_jax as np +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import group_creation_function + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import IntColumn @group_creation_function() -def sp_id( - p_id: np.ndarray, - p_id_spouse: np.ndarray, -) -> np.ndarray: +def sp_id(p_id: IntColumn, p_id_spouse: IntColumn, xnp: ModuleType) -> IntColumn: """ Compute the spouse (sp) group ID for each person. """ - n = np.max(p_id) - p_id_spouse = np.where(p_id_spouse < 0, p_id, p_id_spouse) - sp_id = np.maximum(p_id, p_id_spouse) + np.minimum(p_id, p_id_spouse) * n - - return __reorder_ids(sp_id) + n = xnp.max(p_id) + p_id_spouse = xnp.where(p_id_spouse < 0, p_id, p_id_spouse) + return xnp.maximum(p_id, p_id_spouse) + xnp.minimum(p_id, p_id_spouse) * n @group_creation_function() def fam_id( - p_id_spouse: np.ndarray, - p_id: np.ndarray, - age: np.ndarray, - p_id_parent_1: np.ndarray, - p_id_parent_2: np.ndarray, -) -> np.ndarray: + p_id_spouse: IntColumn, + p_id: IntColumn, + age: IntColumn, + p_id_parent_1: IntColumn, + p_id_parent_2: IntColumn, + xnp: ModuleType, +) -> IntColumn: """ Compute the family ID for each person. """ - n = np.max(p_id) + n = xnp.max(p_id) + 1 + # Get the array index for all p_ids of parents p_id_parent_1_loc = p_id_parent_1 p_id_parent_2_loc = p_id_parent_2 for i in range(p_id.shape[0]): - p_id_parent_1_loc = np.where(p_id_parent_1_loc == p_id[i], i, p_id_parent_1_loc) - p_id_parent_2_loc = np.where(p_id_parent_2_loc == p_id[i], i, p_id_parent_2_loc) + p_id_parent_1_loc = xnp.where(p_id_parent_1 == p_id[i], i, p_id_parent_1_loc) + p_id_parent_2_loc = xnp.where(p_id_parent_2 == p_id[i], i, p_id_parent_2_loc) + + children = xnp.isin(p_id, p_id_parent_1) | xnp.isin(p_id, p_id_parent_2) - children = np.isin(p_id, p_id_parent_1) + np.isin(p_id, p_id_parent_2) - fam_id = np.where( + # Assign the same fam_id to everybody who has a spouse, + # otherwise create a new one from p_id + out = xnp.where( p_id_spouse < 0, p_id + p_id * n, - np.maximum(p_id, p_id_spouse) + np.minimum(p_id, p_id_spouse) * n, + xnp.maximum(p_id, p_id_spouse) + xnp.minimum(p_id, p_id_spouse) * n, ) - fam_id = np.where( - (fam_id == p_id + p_id * n) - * (p_id_parent_1_loc >= 0) - * (age < 25) - * (1 - children), - fam_id[p_id_parent_1_loc], - fam_id, + + out = _assign_parents_fam_id( + fam_id=out, + p_id=p_id, + p_id_parent_loc=p_id_parent_1_loc, + age=age, + children=children, + n=n, + xnp=xnp, + ) + out = _assign_parents_fam_id( + fam_id=out, + p_id=p_id, + p_id_parent_loc=p_id_parent_2_loc, + age=age, + children=children, + n=n, + xnp=xnp, ) - fam_id = np.where( + + return out + + +def _assign_parents_fam_id( + fam_id: IntColumn, + p_id: IntColumn, + p_id_parent_loc: IntColumn, + age: IntColumn, + children: IntColumn, + n: int, + xnp: ModuleType, +) -> IntColumn: + """Return the fam_id of the child's parents.""" + return xnp.where( (fam_id == p_id + p_id * n) - * (p_id_parent_2_loc >= 0) + * (p_id_parent_loc >= 0) * (age < 25) * (1 - children), - fam_id[p_id_parent_2_loc], + fam_id[p_id_parent_loc], fam_id, ) - - return __reorder_ids(fam_id) - - -def __reorder_ids(ids: np.ndarray) -> np.ndarray: - """Make ID's consecutively numbered.""" - sorting = np.argsort(ids) - ids_sorted = ids[sorting] - index_after_sort = np.arange(ids.shape[0])[sorting] - diff_to_prev = np.where(np.diff(ids_sorted) >= 1, 1, 0) - cons_ids = np.concatenate((np.asarray([0]), np.cumsum(diff_to_prev))) - return cons_ids[np.argsort(index_after_sort)] diff --git a/tests/ttsim/mettsim/housing_benefits/amount.py b/tests/ttsim/mettsim/housing_benefits/amount.py index efd833cd59..81a74c29ed 100644 --- a/tests/ttsim/mettsim/housing_benefits/amount.py +++ b/tests/ttsim/mettsim/housing_benefits/amount.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(vectorization_strategy="vectorize") diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py index c7c3141384..3c7919e5fa 100644 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py @@ -11,7 +11,7 @@ from __future__ import annotations -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, agg_by_group_function, policy_function, diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py index 6341998900..6edc2dad14 100644 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ b/tests/ttsim/mettsim/housing_benefits/income/income.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import RoundingSpec, policy_function +from ttsim.tt_dag_elements import RoundingSpec, policy_function @policy_function( diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py index f42bffb224..dd32cd939d 100644 --- a/tests/ttsim/mettsim/inputs.py +++ b/tests/ttsim/mettsim/inputs.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import AggType, FKType, agg_by_group_function, policy_input +from ttsim.tt_dag_elements import AggType, FKType, agg_by_group_function, policy_input @policy_input() diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py index 2a26baf892..7039d2bd0a 100644 --- a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py +++ b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py @@ -3,10 +3,10 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim import param_function, policy_function +from ttsim.tt_dag_elements import param_function, policy_function, policy_input if TYPE_CHECKING: - from ttsim.typing import RawParam + from ttsim.interface_dag_elements.typing import RawParam @dataclass(frozen=True) @@ -32,6 +32,16 @@ def bounty_per_orc(raw_bounties_per_orc: RawParam) -> BountyPerOrc: ) +@policy_input() +def small_orcs_hunted() -> int: + """The number of small orcs hunted.""" + + +@policy_input() +def large_orcs_hunted() -> int: + """The number of large orcs hunted.""" + + @policy_function(vectorization_strategy="vectorize") def amount( small_orcs_hunted: int, diff --git a/tests/ttsim/mettsim/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py index 45b121dd52..f8b5fd11eb 100644 --- a/tests/ttsim/mettsim/payroll_tax/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/amount.py @@ -1,6 +1,11 @@ from __future__ import annotations -from ttsim import ( +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( PiecewisePolynomialParamValue, piecewise_polynomial, policy_function, @@ -27,11 +32,13 @@ def amount_y( def amount_standard_y( income__amount_y: float, tax_schedule_standard: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Payroll tax amount for the standard tax schedule.""" return piecewise_polynomial( x=income__amount_y, parameters=tax_schedule_standard, + xnp=xnp, ) @@ -39,9 +46,11 @@ def amount_standard_y( def amount_reduced_y( income__amount_y: float, tax_schedule_reduced: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Payroll tax amount for the reduced tax schedule.""" return piecewise_polynomial( x=income__amount_y, parameters=tax_schedule_reduced, + xnp=xnp, ) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 4fbb5fe385..7076e773de 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -1,6 +1,11 @@ from __future__ import annotations -from ttsim import ( +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( AggType, agg_by_p_id_function, join, @@ -42,6 +47,7 @@ def in_same_household_as_recipient( p_id: int, kin_id: int, p_id_recipient: int, + xnp: ModuleType, ) -> bool: return ( join( @@ -49,6 +55,7 @@ def in_same_household_as_recipient( primary_key=p_id, target=kin_id, value_if_foreign_key_is_missing=-1, + xnp=xnp, ) == kin_id ) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py index 098c43ce21..f93d891b4b 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import FKType, policy_input +from ttsim.tt_dag_elements import FKType, policy_input @policy_input(foreign_key_type=FKType.MAY_POINT_TO_SELF) diff --git a/tests/ttsim/mettsim/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py index 69541b055f..652a41c33b 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/amount.py +++ b/tests/ttsim/mettsim/payroll_tax/income/amount.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(vectorization_strategy="vectorize") diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py index 50cbbe0602..601c01c7bc 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.py +++ b/tests/ttsim/mettsim/payroll_tax/income/deductions.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim import policy_function +from ttsim.tt_dag_elements import policy_function @policy_function(vectorization_strategy="vectorize") diff --git a/tests/ttsim/mettsim/payroll_tax/income/inputs.py b/tests/ttsim/mettsim/payroll_tax/income/inputs.py index 6637748de5..7ea02d6b29 100644 --- a/tests/ttsim/mettsim/payroll_tax/income/inputs.py +++ b/tests/ttsim/mettsim/payroll_tax/income/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim import policy_input +from ttsim.tt_dag_elements import policy_input @policy_input() diff --git a/tests/ttsim/mettsim/property_tax/amount.py b/tests/ttsim/mettsim/property_tax/amount.py index ba2dd48d4e..0938f2d7d6 100644 --- a/tests/ttsim/mettsim/property_tax/amount.py +++ b/tests/ttsim/mettsim/property_tax/amount.py @@ -8,16 +8,33 @@ from __future__ import annotations -from ttsim import PiecewisePolynomialParamValue, piecewise_polynomial, policy_function +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( + PiecewisePolynomialParamValue, + piecewise_polynomial, + policy_function, + policy_input, +) + + +@policy_input() +def acre_size_in_hectares() -> float: + """The size of the acre in hectares.""" @policy_function(vectorization_strategy="vectorize") def amount_y( acre_size_in_hectares: float, tax_schedule: PiecewisePolynomialParamValue, + xnp: ModuleType, ) -> float: """Property tax amount for the standard tax schedule.""" return piecewise_polynomial( x=acre_size_in_hectares, parameters=tax_schedule, + xnp=xnp, ) diff --git a/tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/mettsim_test_data/group_by_ids/2025-01-01/group_by_ids.yaml similarity index 100% rename from tests/ttsim/test_data/group_by_ids/2025-01-01/group_by_ids.yaml rename to tests/ttsim/mettsim_test_data/group_by_ids/2025-01-01/group_by_ids.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml diff --git a/tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml similarity index 100% rename from tests/ttsim/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml rename to tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml diff --git a/tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml b/tests/ttsim/mettsim_test_data/orc_hunting_bounty/1900-01-01/amount.yaml similarity index 100% rename from tests/ttsim/test_data/orc_hunting_bounty/1900-01-01/amount.yaml rename to tests/ttsim/mettsim_test_data/orc_hunting_bounty/1900-01-01/amount.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml diff --git a/tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml b/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml similarity index 100% rename from tests/ttsim/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml rename to tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml diff --git a/tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml b/tests/ttsim/mettsim_test_data/property_tax/2000-01-01/acre_size.yaml similarity index 100% rename from tests/ttsim/test_data/property_tax/2000-01-01/acre_size.yaml rename to tests/ttsim/mettsim_test_data/property_tax/2000-01-01/acre_size.yaml diff --git a/tests/ttsim/test_aggregation_functions.py b/tests/ttsim/test_aggregation_functions.py deleted file mode 100644 index cec1ae0ef1..0000000000 --- a/tests/ttsim/test_aggregation_functions.py +++ /dev/null @@ -1,529 +0,0 @@ -from __future__ import annotations - -import copy - -import numpy -import pytest - -from ttsim.aggregation import ( - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, - sum_by_p_id, -) -from ttsim.config import IS_JAX_INSTALLED -from ttsim.config import numpy_or_jax as np - - -def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): - """Apply pytest.mark.parametrize based on a dictionary.""" - test_cases = copy.copy(test_cases) - if keys_of_test_cases: - # Only use requested keys - test_cases = { - k: { - k_inner: v_inner - for k_inner, v_inner in v.items() - if k_inner in keys_of_test_cases - } - for k, v in test_cases.items() - if all(e in v for e in keys_of_test_cases) - } - - # Return parametrization - return pytest.mark.parametrize( - argnames=(argnames := sorted({k for v in test_cases.values() for k in v})), - argvalues=[[v.get(k) for k in argnames] for v in test_cases.values()], - ids=test_cases.keys(), - ) - - -test_grouped_specs = { - "constant_column": { - "column_to_aggregate": np.array([1, 1, 1, 1, 1]), - "group_id": np.array([0, 0, 1, 1, 1]), - "expected_res_count": np.array([2, 2, 3, 3, 3]), - "expected_res_sum": np.array([2, 2, 3, 3, 3]), - "expected_res_max": np.array([1, 1, 1, 1, 1]), - "expected_res_min": np.array([1, 1, 1, 1, 1]), - "expected_res_any": np.array([True, True, True, True, True]), - "expected_res_all": np.array([True, True, True, True, True]), - }, - "constant_column_group_id_unsorted": { - "column_to_aggregate": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "group_id": np.array([0, 1, 0, 1, 0]), - "expected_res_count": np.array([3, 2, 3, 2, 3]), - "expected_res_sum": np.array([3.0, 2.0, 3.0, 2.0, 3.0]), - "expected_res_mean": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "expected_res_max": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "expected_res_min": np.array([1.0, 1.0, 1.0, 1.0, 1.0]), - }, - "basic_case": { - "column_to_aggregate": np.array([0, 1, 2, 3, 4]), - "group_id": np.array([0, 0, 1, 1, 1]), - "expected_res_sum": np.array([1, 1, 9, 9, 9]), - "expected_res_max": np.array([1, 1, 4, 4, 4]), - "expected_res_min": np.array([0, 0, 2, 2, 2]), - "expected_res_any": np.array([True, True, True, True, True]), - "expected_res_all": np.array([False, False, True, True, True]), - }, - "unique_group_ids_with_gaps": { - "column_to_aggregate": np.array([0.0, 1.0, 2.0, 3.0, 4.0]), - "group_id": np.array([0, 0, 3, 3, 3]), - "expected_res_count": np.array([2, 2, 3, 3, 3]), - "expected_res_sum": np.array([1.0, 1.0, 9.0, 9.0, 9.0]), - "expected_res_mean": np.array([0.5, 0.5, 3.0, 3.0, 3.0]), - "expected_res_max": np.array([1.0, 1.0, 4.0, 4.0, 4.0]), - "expected_res_min": np.array([0.0, 0.0, 2.0, 2.0, 2.0]), - }, - "float_column": { - "column_to_aggregate": np.array([0.0, 1.5, 2.0, 3.0, 4.0]), - "group_id": np.array([0, 0, 3, 3, 3]), - "expected_res_sum": np.array([1.5, 1.5, 9.0, 9.0, 9.0]), - "expected_res_mean": np.array([0.75, 0.75, 3.0, 3.0, 3.0]), - "expected_res_max": np.array([1.5, 1.5, 4.0, 4.0, 4.0]), - "expected_res_min": np.array([0.0, 0.0, 2.0, 2.0, 2.0]), - }, - "more_than_two_groups": { - "column_to_aggregate": np.array([0.0, 1.0, 2.0, 3.0, 4.0]), - "group_id": np.array([1, 0, 1, 1, 3]), - "expected_res_count": np.array([3, 1, 3, 3, 1]), - "expected_res_sum": np.array([5.0, 1.0, 5.0, 5.0, 4.0]), - "expected_res_mean": np.array([5.0 / 3.0, 1.0, 5.0 / 3.0, 5.0 / 3.0, 4.0]), - "expected_res_max": np.array([3.0, 1.0, 3.0, 3.0, 4.0]), - "expected_res_min": np.array([0.0, 1.0, 0.0, 0.0, 4.0]), - }, - "basic_case_bool": { - "column_to_aggregate": np.array([True, False, True, False, False]), - "group_id": np.array([0, 0, 1, 1, 1]), - "expected_res_any": np.array([True, True, True, True, True]), - "expected_res_all": np.array([False, False, False, False, False]), - "expected_res_sum": np.array([1, 1, 1, 1, 1]), - }, - "group_id_unsorted_bool": { - "column_to_aggregate": np.array([True, False, True, True, True]), - "group_id": np.array([0, 1, 0, 1, 0]), - "expected_res_any": np.array([True, True, True, True, True]), - "expected_res_all": np.array([True, False, True, False, True]), - "expected_res_sum": np.array([3, 1, 3, 1, 3]), - }, - "unique_group_ids_with_gaps_bool": { - "column_to_aggregate": np.array([True, False, False, False, False]), - "group_id": np.array([0, 0, 3, 3, 3]), - "expected_res_any": np.array([True, True, False, False, False]), - "expected_res_all": np.array([False, False, False, False, False]), - "expected_res_sum": np.array([1, 1, 0, 0, 0]), - }, - "sum_by_p_id_float": { - "column_to_aggregate": np.array([10.0, 20.0, 30.0, 40.0, 50.0]), - "p_id_to_aggregate_by": np.array([-1, -1, 8, 8, 10]), - "p_id_to_store_by": np.array([7, 8, 9, 10, 11]), - "expected_res": np.array([0.0, 70.0, 0.0, 50.0, 0.0]), - "expected_type": numpy.floating, - }, - "sum_by_p_id_int": { - "column_to_aggregate": np.array([10, 20, 30, 40, 50]), - "p_id_to_aggregate_by": np.array([-1, -1, 8, 8, 10]), - "p_id_to_store_by": np.array([7, 8, 9, 10, 11]), - "expected_res": np.array([0, 70, 0, 50, 0]), - "expected_type": numpy.integer, - }, -} - -test_grouped_raises_specs = { - "dtype_boolean": { - "column_to_aggregate": np.array([True, True, True, False, False]), - "group_id": np.array([0, 0, 1, 1, 1]), - "error_mean": TypeError, - "error_max": TypeError, - "error_min": TypeError, - "exception_match": "grouped_", - }, - "float_group_id": { - "column_to_aggregate": np.array([0, 1, 2, 3, 4]), - "group_id": np.array([0, 0, 3.5, 3.5, 3.5]), - "p_id_to_store_by": np.array([0, 1, 2, 3, 4]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_max": TypeError, - "error_min": TypeError, - "error_sum_by_p_id": TypeError, - "exception_match": "The dtype of id columns must be integer.", - }, - "dtype_float": { - "column_to_aggregate": np.array([1.5, 2, 3.5, 4, 5]), - "group_id": np.array([0, 0, 1, 1, 1]), - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", - }, - "dtype_integer": { - "column_to_aggregate": np.array([1, 2, 3, 4, 5]), - "group_id": np.array([0, 0, 1, 1, 1]), - "error_mean": TypeError, - "exception_match": "grouped_", - }, - "float_group_id_bool": { - "column_to_aggregate": np.array([True, True, True, False, False]), - "group_id": np.array([0, 0, 3.5, 3.5, 3.5]), - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "The dtype of id columns must be integer.", - }, -} -# We cannot even set up these fixtures in JAX. -if not IS_JAX_INSTALLED: - test_grouped_specs["datetime"] = { - "column_to_aggregate": np.array( - [ - np.datetime64("2000"), - np.datetime64("2001"), - np.datetime64("2002"), - np.datetime64("2003"), - np.datetime64("2004"), - ] - ), - "group_id": np.array([1, 0, 1, 1, 1]), - "expected_res_max": np.array( - [ - np.datetime64("2004"), - np.datetime64("2001"), - np.datetime64("2004"), - np.datetime64("2004"), - np.datetime64("2004"), - ] - ), - "expected_res_min": np.array( - [ - np.datetime64("2000"), - np.datetime64("2001"), - np.datetime64("2000"), - np.datetime64("2000"), - np.datetime64("2000"), - ] - ), - } - - test_grouped_raises_specs["dtype_string"] = { - "column_to_aggregate": np.array(["0", "1", "2", "3", "4"]), - "group_id": np.array([0, 0, 1, 1, 1]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_max": TypeError, - "error_min": TypeError, - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", - } - test_grouped_raises_specs["datetime"] = { - "column_to_aggregate": np.array( - [ - np.datetime64("2000"), - np.datetime64("2001"), - np.datetime64("2002"), - np.datetime64("2003"), - np.datetime64("2004"), - ] - ), - "group_id": np.array([0, 0, 1, 1, 1]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", - } - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=["group_id", "expected_res_count"], -) -def test_grouped_count(group_id, expected_res_count): - if IS_JAX_INSTALLED: - result = grouped_count( - group_id=group_id, - num_segments=group_id.max() + 1, - ) - else: - result = grouped_count(group_id=group_id) - numpy.testing.assert_array_almost_equal(result, expected_res_count) - - -def _run_agg_by_group(agg_func, column_to_aggregate, group_id): - if IS_JAX_INSTALLED: - return agg_func( - column=column_to_aggregate, - group_id=group_id, - num_segments=group_id.max() + 1, - ) - else: - return agg_func(column=column_to_aggregate, group_id=group_id) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_sum", - ], -) -def test_grouped_sum(column_to_aggregate, group_id, expected_res_sum): - result = _run_agg_by_group( - agg_func=grouped_sum, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_sum) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_mean", - ], -) -def test_grouped_mean(column_to_aggregate, group_id, expected_res_mean): - result = _run_agg_by_group( - agg_func=grouped_mean, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_mean) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_max", - ], -) -def test_grouped_max(column_to_aggregate, group_id, expected_res_max): - result = _run_agg_by_group( - agg_func=grouped_max, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_equal(result, expected_res_max) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_min", - ], -) -def test_grouped_min(column_to_aggregate, group_id, expected_res_min): - result = _run_agg_by_group( - agg_func=grouped_min, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_equal(result, expected_res_min) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_any", - ], -) -def test_grouped_any(column_to_aggregate, group_id, expected_res_any): - result = _run_agg_by_group( - agg_func=grouped_any, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_any) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_all", - ], -) -def test_grouped_all(column_to_aggregate, group_id, expected_res_all): - result = _run_agg_by_group( - agg_func=grouped_all, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_all) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_sum", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_sum_raises(column_to_aggregate, group_id, error_sum, exception_match): - with pytest.raises( - error_sum, - match=exception_match, - ): - grouped_sum(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_mean", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_mean_raises( - column_to_aggregate, group_id, error_mean, exception_match -): - with pytest.raises( - error_mean, - match=exception_match, - ): - grouped_mean(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_max", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_max_raises(column_to_aggregate, group_id, error_max, exception_match): - with pytest.raises( - error_max, - match=exception_match, - ): - grouped_max(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_min", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_min_raises(column_to_aggregate, group_id, error_min, exception_match): - with pytest.raises( - error_min, - match=exception_match, - ): - grouped_min(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_any", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_any_raises(column_to_aggregate, group_id, error_any, exception_match): - with pytest.raises( - error_any, - match=exception_match, - ): - grouped_any(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_all", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_grouped_all_raises(column_to_aggregate, group_id, error_all, exception_match): - with pytest.raises( - error_all, - match=exception_match, - ): - grouped_all(column_to_aggregate, group_id) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "p_id_to_aggregate_by", - "p_id_to_store_by", - "expected_res", - "expected_type", - ], -) -def test_sum_by_p_id( - column_to_aggregate, - p_id_to_aggregate_by, - p_id_to_store_by, - expected_res, - expected_type, -): - result = sum_by_p_id( - column=column_to_aggregate, - p_id_to_aggregate_by=p_id_to_aggregate_by, - p_id_to_store_by=p_id_to_store_by, - ) - numpy.testing.assert_array_almost_equal(result, expected_res) - assert numpy.issubdtype(result.dtype.type, expected_type), ( - "The dtype of the result is not as expected." - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "p_id_to_store_by", - "error_sum_by_p_id", - "exception_match", - ], -) -@pytest.mark.skipif(IS_JAX_INSTALLED, reason="Cannot raise errors in jitted JAX.") -def test_sum_by_p_id_raises( - column_to_aggregate, group_id, p_id_to_store_by, error_sum_by_p_id, exception_match -): - with pytest.raises( - error_sum_by_p_id, - match=exception_match, - ): - sum_by_p_id( - column=column_to_aggregate, - p_id_to_aggregate_by=group_id, - p_id_to_store_by=p_id_to_store_by, - ) diff --git a/tests/ttsim/test_convert_nested_data.py b/tests/ttsim/test_convert_nested_data.py deleted file mode 100644 index 4e6e2c4ed5..0000000000 --- a/tests/ttsim/test_convert_nested_data.py +++ /dev/null @@ -1,403 +0,0 @@ -from __future__ import annotations - -import dags.tree as dt -import numpy as np -import pandas as pd -import pytest - -from ttsim import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt1dLookupTableParamValue, - DictParam, - PiecewisePolynomialParam, - PiecewisePolynomialParamValue, - ScalarParam, - dataframe_to_nested_data, - main, - nested_data_to_df_with_mapped_columns, - param_function, - policy_function, -) - -_GENERIC_PARAM_SPEC = { - "start_date": "2024-01-01", - "end_date": "2024-12-31", - "unit": None, - "reference_period": None, - "name": { - "de": "generic_param", - "en": "generic_param", - }, - "description": { - "de": "generic_param", - "en": "generic_param", - }, -} - - -@policy_function() -def int_policy_function() -> int: - return 1 - - -@param_function() -def int_param_function() -> int: - return 1 - - -_SOME_SCALAR_PARAM = ScalarParam( - leaf_name="some_scalar_param", - value=1, - **_GENERIC_PARAM_SPEC, -) - - -_SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( - leaf_name="some_piecewise_polynomial_param", - value=PiecewisePolynomialParamValue( - thresholds=np.array([1, 2, 3]), - intercepts=np.array([1, 2, 3]), - rates=np.array([1, 2, 3]), - ), - **_GENERIC_PARAM_SPEC, -) - - -_SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM = ConsecutiveInt1dLookupTableParam( - leaf_name="some_consecutive_int_1d_lookup_table_param", - value=ConsecutiveInt1dLookupTableParamValue( - base_to_subtract=1, - values_to_look_up=np.array([1, 2, 3]), - ), - **_GENERIC_PARAM_SPEC, -) - - -_SOME_DICT_PARAM = DictParam( - leaf_name="some_dict_param", - value={"a": 1, "b": 2}, - **_GENERIC_PARAM_SPEC, -) - - -@pytest.fixture -def minimal_data_tree(): - return { - "hh_id": np.array([1, 2, 3]), - "p_id": np.array([1, 2, 3]), - } - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "df", - "expected_output", - ), - [ - ( - { - "n1": { - "n2": "a", - }, - }, - pd.DataFrame({"a": [1, 2, 3]}), - {"n1": {"n2": pd.Series([1, 2, 3])}}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": "b", - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": 3, - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, - ), - ], -) -def test_dataframe_to_nested_data( - inputs_tree_to_df_columns, - df, - expected_output, -): - result = dataframe_to_nested_data( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, - df=df, - ) - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output = dt.flatten_to_qual_names(expected_output) - - assert set(flat_result.keys()) == set(flat_expected_output.keys()) - for key in flat_result: - pd.testing.assert_series_equal( - flat_result[key], flat_expected_output[key], check_names=False - ) - - -@pytest.mark.parametrize( - "df", - [ - pd.DataFrame({True: [1, 2]}), - pd.DataFrame({1: [1, 2]}), - ], -) -def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): - with pytest.raises( - ValueError, match="DataFrame column names cannot be booleans or numbers." - ): - dataframe_to_nested_data(inputs_tree_to_df_columns={}, df=df) - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "expected_error_message", - ), - [ - ( - [], - "The inputs tree to column mapping must be a \\(nested\\) dictionary.", - ), - ( - { - "n1": { - "n2": pd.Series([1, 2, 3]), - }, - }, - "n1__n2: Series", - ), - ( - { - "n1": { - "n2": None, - }, - }, - "n1__n2: NoneType", - ), - ( - { - "n1": { - True: 2, - }, - }, - "All path elements of `inputs_tree_to_df_columns` must be strings.", - ), - ], -) -def test_create_data_tree_fails_if_mapper_has_incorrect_format( - inputs_tree_to_df_columns, expected_error_message -): - with pytest.raises(TypeError, match=expected_error_message): - dataframe_to_nested_data( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() - ) - - -@pytest.mark.parametrize( - ( - "environment", - "targets_tree_to_outputs_df_columns", - "expected_output", - ), - [ - # Two policy functions - ( - { - "some_policy_function": int_policy_function, - "another_policy_function": int_policy_function, - }, - { - "some_policy_function": "res1", - "another_policy_function": "res2", - }, - pd.DataFrame( - {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One policy function - ( - { - "some_policy_function": int_policy_function, - }, - { - "some_policy_function": "res1", - }, - pd.DataFrame( - {"res1": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One param function - ( - { - "some_param_function": int_param_function, - }, - { - "some_param_function": "res1", - }, - pd.DataFrame( - {"res1": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One param function and one policy function - ( - { - "some_param_function": int_param_function, - "some_policy_function": int_policy_function, - }, - { - "some_param_function": "res1", - "some_policy_function": "res2", - }, - pd.DataFrame( - {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One scalar param - ( - { - "some_scalar_param": _SOME_SCALAR_PARAM, - }, - {"some_scalar_param": "res1"}, - pd.DataFrame( - {"res1": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One scalar param and one policy function - ( - { - "some_scalar_param": _SOME_SCALAR_PARAM, - "some_policy_function": int_policy_function, - }, - { - "some_scalar_param": "res1", - "some_policy_function": "res2", - }, - pd.DataFrame( - {"res1": np.array([1, 1, 1]), "res2": np.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - ], -) -def test_nested_data_to_dataframe( - environment, - minimal_data_tree, - targets_tree_to_outputs_df_columns, - expected_output, -): - nested_results = main( - inputs={ - "data_tree": minimal_data_tree, - "policy_environment": environment, - "targets_tree": targets_tree_to_outputs_df_columns, - "rounding": False, - }, - targets=["nested_results"], - )["nested_results"] - result_df = nested_data_to_df_with_mapped_columns( - nested_data_to_convert=nested_results, - nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, - data_with_p_id=minimal_data_tree, - ) - pd.testing.assert_frame_equal(result_df, expected_output, check_like=True) - - -@pytest.mark.parametrize( - ( - "environment", - "targets_tree_to_outputs_df_columns", - ), - [ - ( - { - "some_piecewise_polynomial_param": _SOME_PIECEWISE_POLYNOMIAL_PARAM, - }, - {"some_piecewise_polynomial_param": "res1"}, - ), - ( - { - "some_consecutive_int_1d_lookup_table_param": ( - _SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM - ), - }, - {"some_consecutive_int_1d_lookup_table_param": "res1"}, - ), - ], -) -def test_nested_data_to_dataframe_fails_if_noncompatible_objects_are_returned( - environment, - targets_tree_to_outputs_df_columns, - minimal_data_tree, -): - nested_results = main( - inputs={ - "data_tree": minimal_data_tree, - "policy_environment": environment, - "targets_tree": targets_tree_to_outputs_df_columns, - "rounding": False, - }, - targets=["nested_results"], - )["nested_results"] - with pytest.raises( - TypeError, match=r"The following paths contain non-scalar\nobjects" - ): - nested_data_to_df_with_mapped_columns( - nested_data_to_convert=nested_results, - nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, - data_with_p_id=minimal_data_tree, - ) - - -@pytest.mark.parametrize( - ( - "environment", - "targets_tree_to_outputs_df_columns", - ), - [ - ( - { - "some_dict_param": _SOME_DICT_PARAM, - }, - {"some_dict_param": "res1"}, - ), - ], -) -def test_nested_data_to_dataframe_fails_because_raw_param_dict_is_returned( - environment, - targets_tree_to_outputs_df_columns, - minimal_data_tree, -): - nested_results = main( - inputs={ - "data_tree": minimal_data_tree, - "policy_environment": environment, - "targets_tree": targets_tree_to_outputs_df_columns, - "rounding": False, - }, - targets=["nested_results"], - )["nested_results"] - with pytest.raises( - ValueError, - match="failed because the following paths\nare not mapped to a column name", - ): - nested_data_to_df_with_mapped_columns( - nested_data_to_convert=nested_results, - nested_outputs_df_column_names=targets_tree_to_outputs_df_columns, - data_with_p_id=minimal_data_tree, - ) diff --git a/tests/ttsim/test_create_data_tree.py b/tests/ttsim/test_create_data_tree.py deleted file mode 100644 index 2082630076..0000000000 --- a/tests/ttsim/test_create_data_tree.py +++ /dev/null @@ -1,123 +0,0 @@ -from __future__ import annotations - -import dags.tree as dt -import pandas as pd -import pytest - -from ttsim import dataframe_to_nested_data - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "df", - "expected_output", - ), - [ - ( - { - "n1": { - "n2": "a", - }, - }, - pd.DataFrame({"a": [1, 2, 3]}), - {"n1": {"n2": pd.Series([1, 2, 3])}}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": "b", - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": 3, - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, - ), - ], -) -def test_dataframe_to_nested_data( - inputs_tree_to_df_columns, - df, - expected_output, -): - result = dataframe_to_nested_data( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, - df=df, - ) - flat_result = dt.flatten_to_qual_names(result) - flat_expected_output = dt.flatten_to_qual_names(expected_output) - - assert set(flat_result.keys()) == set(flat_expected_output.keys()) - for key in flat_result: - pd.testing.assert_series_equal( - flat_result[key], flat_expected_output[key], check_names=False - ) - - -@pytest.mark.parametrize( - "df", - [ - pd.DataFrame({True: [1, 2]}), - pd.DataFrame({1: [1, 2]}), - ], -) -def test_create_data_tree_fails_if_df_has_bool_or_numeric_column_names(df): - with pytest.raises( - ValueError, match="DataFrame column names cannot be booleans or numbers." - ): - dataframe_to_nested_data(inputs_tree_to_df_columns={}, df=df) - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "expected_error_message", - ), - [ - ( - [], - "The inputs tree to column mapping must be a \\(nested\\) dictionary.", - ), - ( - { - "n1": { - "n2": pd.Series([1, 2, 3]), - }, - }, - "n1__n2: Series", - ), - ( - { - "n1": { - "n2": None, - }, - }, - "n1__n2: NoneType", - ), - ( - { - "n1": { - True: 2, - }, - }, - "All path elements of `inputs_tree_to_df_columns` must be strings.", - ), - ], -) -def test_create_data_tree_fails_if_mapper_has_incorrect_format( - inputs_tree_to_df_columns, expected_error_message -): - with pytest.raises(TypeError, match=expected_error_message): - dataframe_to_nested_data( - inputs_tree_to_df_columns=inputs_tree_to_df_columns, df=pd.DataFrame() - ) diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py new file mode 100644 index 0000000000..146980efb3 --- /dev/null +++ b/tests/ttsim/test_end_to_end.py @@ -0,0 +1,106 @@ +from pathlib import Path +from typing import Literal + +import pandas as pd +import pytest + +from ttsim import input_data, main + +DF_WITH_NESTED_COLUMNS = pd.DataFrame( + { + ("age",): [30, 30, 10], + ("kin_id",): [0, 0, 0], + ("p_id",): [0, 1, 2], + ("p_id_parent_1",): [-1, -1, 0], + ("p_id_parent_2",): [-1, -1, 1], + ("p_id_spouse",): [1, 0, -1], + ("parent_is_noble",): [False, False, False], + ("wealth",): [0.0, 0.0, 0.0], + ("payroll_tax", "child_tax_credit", "p_id_recipient"): [-1, -1, 0], + ("payroll_tax", "income", "gross_wage_y"): [10000, 0, 0], + }, +) + + +DF_FOR_MAPPER = pd.DataFrame( + { + "age": [30, 30, 10], + "kin_id": [0, 0, 0], + "p_id": [0, 1, 2], + "parent_1": [-1, -1, 0], + "parent_2": [-1, -1, 1], + "spouse": [1, 0, -1], + "parent_is_noble": [False, False, False], + "child_tax_credit_recipient": [-1, -1, 0], + "gross_wage_y": [10000, 0, 0], + "wealth": [0.0, 0.0, 0.0], + }, +) + + +INPUT_DF_MAPPER = { + "age": "age", + "kin_id": "kin_id", + "p_id": "p_id", + "p_id_parent_1": "parent_1", + "p_id_parent_2": "parent_2", + "p_id_spouse": "spouse", + "parent_is_noble": "parent_is_noble", + "wealth": "wealth", + "payroll_tax": { + "child_tax_credit": { + "p_id_recipient": "child_tax_credit_recipient", + }, + "income": { + "gross_wage_y": "gross_wage_y", + }, + }, +} + + +TARGETS_TREE = { + "payroll_tax": { + "amount_y": "payroll_tax_amount_y", + "child_tax_credit": { + "amount_m": "payroll_tax_child_tax_credit_amount_m", + }, + }, +} + + +EXPECTED_RESULTS = pd.DataFrame( + { + "payroll_tax_amount_y": [2920.0, 0.0, 0.0], + "payroll_tax_child_tax_credit_amount_m": [8.333333, 0.0, 0.0], + }, + index=pd.Index([0, 1, 2], name="p_id"), +) + + +@pytest.mark.parametrize( + "input_data_arg", + [ + # Correct way to do it + input_data.DfAndMapper(df=DF_FOR_MAPPER, mapper=INPUT_DF_MAPPER), + input_data.DfWithNestedColumns(data=DF_WITH_NESTED_COLUMNS), + # May or may not continue to work. + {"df_and_mapper": {"df": DF_FOR_MAPPER, "mapper": INPUT_DF_MAPPER}}, + {"df_with_nested_columns": DF_WITH_NESTED_COLUMNS}, + ], +) +def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): + result = main( + input_data=input_data_arg, + targets={"tree": TARGETS_TREE}, + date_str="2025-01-01", + rounding=False, + orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, + backend=backend, + output_names=["results__df_with_mapper"], + ) + pd.testing.assert_frame_equal( + EXPECTED_RESULTS, + result["results__df_with_mapper"], + check_dtype=False, + check_index_type=False, + ) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py new file mode 100644 index 0000000000..8d69a01282 --- /dev/null +++ b/tests/ttsim/test_interface_dag.py @@ -0,0 +1,229 @@ +from __future__ import annotations + +import inspect + +import dags +import pytest + +from ttsim.interface_dag import ( + _fail_if_requested_nodes_cannot_be_found, + _harmonize_inputs, + load_interface_functions_and_inputs, +) +from ttsim.interface_dag_elements import _InterfaceDAGElements +from ttsim.interface_dag_elements.fail_if import format_list_linewise +from ttsim.interface_dag_elements.interface_node_objects import ( + InterfaceFunctionVariant, + fail_or_warn_function, + input_dependent_interface_function, +) +from ttsim.plot_dag import dummy_callable +from ttsim.tt_dag_elements.column_objects_param_function import policy_function + + +@fail_or_warn_function( + include_if_all_elements_present=["a"], + include_if_any_element_present=["b"], +) +def some_fail_or_warn_function() -> None: + pass + + +@input_dependent_interface_function( + variants=[ + InterfaceFunctionVariant( + required_input_qnames=["input_1"], + function=lambda input_1: input_1, + ), + InterfaceFunctionVariant( + required_input_qnames=["input_2", "n1__input_2"], + function=lambda input_2, n1__input_2: input_2 + n1__input_2, + ), + ] +) +def some_input_dependent_interface_function() -> int: + pass + + +@input_dependent_interface_function( + variants=[ + InterfaceFunctionVariant( + required_input_qnames=["input_1"], + function=lambda input_1: input_1, + ), + InterfaceFunctionVariant( + required_input_qnames=["input_1", "n1__input_2"], + function=lambda input_1, n1__input_2: input_1 + n1__input_2, + ), + ] +) +def some_input_dependent_interface_function_with_conflicting_variants() -> int: + pass + + +def test_load_interface_functions_and_inputs() -> None: + load_interface_functions_and_inputs() + + +def test_interface_dag_is_complete() -> None: + nodes = { + p: dummy_callable(n) if not callable(n) else n + for p, n in load_interface_functions_and_inputs().items() + } + + f = dags.concatenate_functions( + functions=nodes, + targets=None, + return_type="dict", + enforce_signature=False, + set_annotations=False, + ) + args = inspect.signature(f).parameters + if args: + raise ValueError( + "The full interface DAG should include all root nodes but requires inputs:" + f"\n\n{format_list_linewise(args.keys())}" + ) + + +@pytest.mark.parametrize( + ("output_qnames", "nodes", "error_match"), + [ + ( + ["a"], + load_interface_functions_and_inputs(), + r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"a"', + ), + ( + ["input_data"], + load_interface_functions_and_inputs(), + r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"input_data"', + ), + ( + [], + { + **load_interface_functions_and_inputs(), + "some_fail_or_warn_function": some_fail_or_warn_function, + }, + r'include\scondition[\s\S]+functions or inputs:[\s\S]+"a",\s+"b"', + ), + ], +) +def test_fail_if_requested_nodes_cannot_be_found( + output_qnames, nodes, error_match +) -> None: + with pytest.raises(ValueError, match=error_match): + _fail_if_requested_nodes_cannot_be_found( + output_qnames=output_qnames, + nodes=nodes, + ) + + +@policy_function() +def e(c: int, d: float) -> float: + return c + d + + +def test_harmonize_inputs_interface_dag_elements_input(): + x = _InterfaceDAGElements() + x.input_data.df_and_mapper.df = {"cannot use df because comparison fails"} + x.input_data.df_and_mapper.mapper = {"c": "a", "d": "b", "p_id": "p_id"} + x.targets.tree = {"e": "f"} + x.date = "2025-01-01" + x.orig_policy_objects.column_objects_and_param_functions = {("x.py", "e"): e} + x.orig_policy_objects.param_specs = {} + + harmonized = _harmonize_inputs(inputs=x) + + assert harmonized == { + "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, + "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, + "targets__tree": {"e": "f"}, + "date": "2025-01-01", + "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, + "orig_policy_objects__param_specs": {}, + "backend": "numpy", + "rounding": True, + } + + +def test_harmonize_inputs_qname_input(): + x = { + "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, + "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, + "targets__tree": {"e": "f"}, + "date": "2025-01-01", + "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, + "orig_policy_objects__param_specs": {}, + } + harmonized = _harmonize_inputs(inputs=x) + + assert harmonized == {**x, "backend": "numpy", "rounding": True} + + +def test_harmonize_inputs_tree_input(): + x = { + "input_data": { + "df_and_mapper": { + "df": {"cannot use df because comparison fails"}, + "mapper": {"c": "a", "d": "b", "p_id": "p_id"}, + } + }, + "targets": {"tree": {"e": "f"}}, + "date": "2025-01-01", + "orig_policy_objects": { + "column_objects_and_param_functions": {("x.py", "e"): e}, + "param_specs": {}, + }, + "backend": "numpy", + "rounding": True, + } + harmonized = _harmonize_inputs(inputs=x) + + assert harmonized == { + "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, + "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, + "targets__tree": {"e": "f"}, + "date": "2025-01-01", + "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, + "orig_policy_objects__param_specs": {}, + "backend": "numpy", + "rounding": True, + } + + +@pytest.mark.parametrize( + ( + "input_qnames", + "expected_function_args", + ), + [ + ( + ["input_2", "n1__input_2"], + ["input_2", "n1__input_2"], + ), + ( + ["input_1"], + ["input_1"], + ), + ( + ["input_1", "n2__input_2"], + ["input_1"], + ), + ], +) +def test_input_dependent_interface_functions_have_correct_args( + input_qnames, expected_function_args +): + func = some_input_dependent_interface_function.resolve_to_static_interface_function( + input_qnames + ) + assert list(inspect.signature(func).parameters.keys()) == expected_function_args + + +def test_input_dependent_interface_functions_with_conflicting_variants(): + match = r"Multiple sets of inputs were found that satisfy the requirements:" + with pytest.raises(ValueError, match=match): + some_input_dependent_interface_function_with_conflicting_variants.resolve_to_static_interface_function( + ["input_1", "n1__input_2"] + ) diff --git a/tests/ttsim/test_join.py b/tests/ttsim/test_join.py deleted file mode 100644 index 803709ecc1..0000000000 --- a/tests/ttsim/test_join.py +++ /dev/null @@ -1,52 +0,0 @@ -from __future__ import annotations - -import pytest - -from ttsim import join -from ttsim.config import numpy_or_jax as np - - -@pytest.mark.parametrize( - "foreign_key, primary_key, target, value_if_foreign_key_is_missing, expected", - [ - ( - np.array([1, 2, 3]), - np.array([1, 2, 3]), - np.array([1, 2, 3]), - 4, - np.array([1, 2, 3]), - ), - ( - np.array([3, 2, 1]), - np.array([1, 2, 3]), - np.array([1, 2, 3]), - 4, - np.array([3, 2, 1]), - ), - ( - np.array([1, 1, 1]), - np.array([1, 2, 3]), - np.array([1, 2, 3]), - 4, - np.array([1, 1, 1]), - ), - ( - np.array([-1]), - np.array([1]), - np.array([1]), - 4, - np.array([4]), - ), - ], -) -def test_join( - foreign_key: np.ndarray, - primary_key: np.ndarray, - target: np.ndarray, - value_if_foreign_key_is_missing: int, - expected: np.ndarray, -): - assert np.array_equal( - join(foreign_key, primary_key, target, value_if_foreign_key_is_missing), - expected, - ) diff --git a/tests/ttsim/test_mettsim.py b/tests/ttsim/test_mettsim.py deleted file mode 100644 index a5c0e8558d..0000000000 --- a/tests/ttsim/test_mettsim.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -import pytest -from mettsim.config import METTSIM_ROOT - -from ttsim.config import IS_JAX_INSTALLED -from ttsim.testing_utils import ( - PolicyTest, - execute_test, - load_policy_test_data, -) - -TEST_DIR = Path(__file__).parent - -POLICY_TEST_IDS_AND_CASES = load_policy_test_data(test_dir=TEST_DIR, policy_name="") - - -@pytest.mark.parametrize( - "test", - POLICY_TEST_IDS_AND_CASES.values(), - ids=POLICY_TEST_IDS_AND_CASES.keys(), -) -def test_mettsim(test: PolicyTest): - if IS_JAX_INSTALLED: - execute_test(test, root=METTSIM_ROOT, jit=True) - else: - execute_test(test, root=METTSIM_ROOT, jit=False) diff --git a/tests/ttsim/test_parameters/test_add_jahresanfang.yaml b/tests/ttsim/test_parameters/test_add_jahresanfang.yaml deleted file mode 100644 index 32b686ea89..0000000000 --- a/tests/ttsim/test_parameters/test_add_jahresanfang.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -foo: - name: - de: Test - en: Check - description: - de: Nichts zu sehen - en: Nothing to do - type: scalar - add_jahresanfang: true - 2020-01-01: - value: 1 - 2020-07-01: - value: 2 diff --git a/tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml b/tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml deleted file mode 100644 index ccf98e6ed0..0000000000 --- a/tests/ttsim/test_parameters_old/invalid_access_diff_date.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -sozialversicherung__rente__altersrente__rentenwert: - description: - de: Historische Rentenwerte alte und neue Bundesländer. statistik-rente.de/drv - en: null - unit: Euros - access_different_date: vormonat - 2018-07-01: - west: 32.03 - ost: 30.69 - 2019-07-01: - west: 33.05 - ost: 31.89 - 2020-07-01: - west: 34.19 - ost: 33.23 - 2021-07-01: - updates_previous: true - ost: 33.47 diff --git a/tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml b/tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml deleted file mode 100644 index 5b9245f195..0000000000 --- a/tests/ttsim/test_parameters_old/test_access_diff_date_jahresanfang.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -foo: - description: - de: null - en: null - unit: null - access_different_date: jahresanfang - 2020-01-01: - value: 2020 - 2020-07-01: - value: 2021 diff --git a/tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml b/tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml deleted file mode 100644 index e5332283a6..0000000000 --- a/tests/ttsim/test_parameters_old/test_access_diff_date_vorjahr.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -foo: - description: - de: null - en: null - unit: null - access_different_date: vorjahr - 2018-01-01: - value: 2018 - 2019-01-01: - value: 2019 - 2020-01-01: - value: 2020 diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index bd35b904ed..3e43aaa851 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -1,189 +1,329 @@ -# ruff: noqa -# type: ignore from __future__ import annotations -import networkx as nx +from pathlib import Path + import pytest -from ttsim import plot_dag +from ttsim.interface_dag import main from ttsim.plot_dag import ( - _get_selected_nodes, - _kth_order_neighbors, - _node_and_ancestors, - _node_and_descendants, - _select_nodes_in_dag, + _get_tt_dag_with_node_metadata, + _QNameNodeSelector, + plot_interface_dag, ) - -# environment = policy_environment(date="2020-01-01", root=METTSIM_ROOT) - - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -@pytest.mark.parametrize( - "n_nodes, node, order, expected", - [(5, 3, 1, {2, 3, 4}), (5, 1, 2, {0, 1, 2, 3})], +from ttsim.tt_dag_elements import ( + ParamObject, + param_function, + policy_function, ) -def test_kth_order_neighbors(n_nodes, node, order, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_kth_order_neighbors(dag, node, order)) - assert nodes == expected - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -@pytest.mark.parametrize( - "n_nodes, node, order, expected", - [(5, 3, None, {0, 1, 2, 3}), (5, 1, None, {0, 1})], +SOME_PARAM_OBJECT = ParamObject( + leaf_name="some_param", + start_date="2025-01-01", + end_date="2025-12-31", + unit=None, + reference_period="", + name="", + description="", ) -def test_node_and_ancestors(n_nodes, node, order, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_node_and_ancestors(dag, node, order)) - assert nodes == expected -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -@pytest.mark.parametrize( - "n_nodes, node, order, expected", - [(5, 3, 1, {2, 3}), (5, 1, 2, {0, 1})], +@param_function( + start_date="2025-01-01", + end_date="2025-12-31", ) -def test_node_and_ancestors_order(n_nodes, node, order, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_node_and_ancestors(dag, node, order)) - assert nodes == expected +def some_param_function(): + return 1 -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -@pytest.mark.parametrize( - "n_nodes, node, order, expected", - [(5, 3, None, {3, 4, 5}), (5, 1, None, {1, 2, 3, 4, 5})], -) -def test_node_and_descendants(n_nodes, node, order, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_node_and_descendants(dag, node, order)) - assert nodes == expected +def some_other_object(): + return 1 -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -@pytest.mark.parametrize( - "n_nodes, node, order, expected", - [(5, 3, 1, {3, 4}), (5, 1, 2, {1, 2, 3})], +@policy_function( + start_date="2025-01-01", + end_date="2025-12-31", ) -def test_node_and_descendants_order(n_nodes, node, order, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_node_and_descendants(dag, node, order)) - assert nodes == expected +def some_policy_function(): + return 1 -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( - "n_nodes, selector, expected", + ("include_fail_and_warn_nodes",), [ - (5, {"node": 1, "type": "ancestors"}, {0, 1}), - (5, {"node": 2, "type": "descendants"}, {2, 3, 4, 5}), - (5, {"node": 1, "type": "ancestors", "order": 2}, {0, 1}), - (5, {"node": 2, "type": "descendants", "order": 2}, {2, 3, 4}), - (5, {"node": 3, "type": "neighbors", "order": 1}, {2, 3, 4}), - (5, {"node": 3, "type": "neighbours", "order": 2}, {1, 2, 3, 4, 5}), - (5, {"node": [5, 1, 2], "type": "nodes"}, {1, 2, 5}), + (True,), + (False,), ], ) -def test_get_selected_nodes(n_nodes, selector, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - nodes = set(_get_selected_nodes(dag, selector)) - assert nodes == expected +def test_plot_full_interface_dag(include_fail_and_warn_nodes): + fig = plot_interface_dag(include_fail_and_warn_nodes=include_fail_and_warn_nodes) # noqa: F841 -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") @pytest.mark.parametrize( - "n_nodes, selectors, expected", + ( + "node_selector", + "expected_nodes", + ), [ - (5, [{"node": [1, 2], "type": "nodes"}], {1, 2}), ( - 5, - [{"node": [0], "type": "nodes"}, {"node": 3, "type": "descendants"}], - {0, 3, 4, 5}, + _QNameNodeSelector( + qnames=["payroll_tax__amount_y"], + type="ancestors", + order=1, + ), + [ + "payroll_tax__amount_y", + "payroll_tax__amount_standard_y", + "payroll_tax__amount_reduced_y", + "parent_is_noble_fam", + "wealth_fam", + "payroll_tax__wealth_threshold_for_reduced_tax_rate", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="ancestors", + order=1, + ), + [ + "payroll_tax__amount_m", + "payroll_tax__amount_y", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="ancestors", + order=2, + ), + [ + "payroll_tax__amount_m", + "payroll_tax__amount_y", + "payroll_tax__amount_standard_y", + "payroll_tax__amount_reduced_y", + "parent_is_noble_fam", + "wealth_fam", + "payroll_tax__wealth_threshold_for_reduced_tax_rate", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m", "property_tax__amount_m"], + type="ancestors", + order=1, + ), + [ + "payroll_tax__amount_m", + "payroll_tax__amount_y", + "property_tax__amount_m", + "property_tax__amount_y", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_y"], + type="neighbors", + order=1, + ), + [ + "payroll_tax__amount_m", + "payroll_tax__amount_y", + "payroll_tax__amount_standard_y", + "payroll_tax__amount_reduced_y", + "parent_is_noble_fam", + "wealth_fam", + "payroll_tax__wealth_threshold_for_reduced_tax_rate", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="neighbors", + order=1, + ), + [ + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + "payroll_tax__amount_y", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="neighbors", + order=2, + ), + [ + "housing_benefits__income__amount_m_fam", + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + "payroll_tax__amount_y", + "payroll_tax__amount_standard_y", + "payroll_tax__amount_reduced_y", + "parent_is_noble_fam", + "wealth_fam", + "payroll_tax__wealth_threshold_for_reduced_tax_rate", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m", "property_tax__amount_m"], + type="neighbors", + order=1, + ), + [ + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + "payroll_tax__amount_y", + "property_tax__amount_m", + "property_tax__amount_y", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_y"], + type="descendants", + order=1, + ), + [ + "payroll_tax__amount_m", + "payroll_tax__amount_y", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="descendants", + order=1, + ), + [ + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m"], + type="descendants", + order=2, + ), + [ + "housing_benefits__income__amount_m_fam", + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + ], + ), + ( + _QNameNodeSelector( + qnames=["payroll_tax__amount_m", "property_tax__amount_m"], + type="descendants", + order=1, + ), + [ + "housing_benefits__income__amount_m", + "payroll_tax__amount_m", + "property_tax__amount_m", + ], ), ( - 5, + _QNameNodeSelector( + qnames=["payroll_tax__amount_m", "property_tax__amount_m"], + type="nodes", + ), [ - {"node": [0], "type": "nodes"}, - {"node": 3, "type": "descendants"}, - {"node": [4], "type": "nodes", "select": False}, + "payroll_tax__amount_m", + "property_tax__amount_m", ], - {0, 3, 5}, ), ], ) -def test_select_nodes_in_dag(n_nodes, selectors, expected): - dag = nx.DiGraph([(i, i + 1) for i in range(n_nodes)]) - dag = _select_nodes_in_dag(dag, selectors) - assert set(dag.nodes) == expected - - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_plot_dag(): - """Make sure that minimal example doesn't produce an error.""" - plot_dag( +def test_node_selector(node_selector, expected_nodes): + environment = main( + inputs={ + "date_str": "2025-01-01", + "orig_policy_objects__root": Path(__file__).parent / "mettsim", + "backend": "numpy", + }, + output_names=["policy_environment"], + )["policy_environment"] + dag = _get_tt_dag_with_node_metadata( environment=environment, - targets=["erwachsene_alle_rentenbezieher_kin"], + node_selector=node_selector, + include_params=True, ) + assert set(dag.nodes()) == set(expected_nodes) -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_should_fail_if_target_is_missing(): - with pytest.raises( - ValueError, match="The following targets have no corresponding function" - ): - plot_dag( - environment={}, - targets=["erwachsene_alle_rentenbezieher_kin"], - ) - - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_one_dot_plot_dag(): - """Make sure that the one dot graph example doesn't produce an error.""" - selectors = "einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_y_sn" - plot_dag(environment=environment, selectors=selectors) - - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_10_dots_plot_dag(): - """Make sure that when No.of nodes is larger than 10 or show_labels is false, the - graph example doesn't produce an error and hover information works properly.""" - selector = { - "type": "descendants", - "node": "sozialversicherung__geringfügig_beschäftigt", +@pytest.mark.parametrize( + ( + "include_params", + "expected_nodes", + ), + [ + ( + True, + [ + "some_param", + "some_param_function", + "some_policy_function", + ], + ), + ( + False, + [ + "some_policy_function", + ], + ), + ], +) +def test_params_are_removed_from_dag(include_params, expected_nodes): + environment = { + "some_param": SOME_PARAM_OBJECT, + "some_param_function": some_param_function, + "some_policy_function": some_policy_function, } - plot_dag(environment=environment, selectors=selector, orientation="h") - - -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_horizontal_plot_dag(): - """Make sure that when we choose horizontal orientation, the graph example doesn't - produce an error.""" - plot_dag( + dag = _get_tt_dag_with_node_metadata( environment=environment, - selectors=[ - { - "node": "einkommensteuer__abgeltungssteuer__zu_versteuernde_kapitaleinkünfte_y_sn", # noqa: E501 - "type": "neighbors", - } - ], - orientation="h", + include_params=include_params, ) + assert set(dag.nodes()) == set(expected_nodes) -@pytest.mark.skip(reason="plot_dag has not been updated to the new interface.") -def test_hover_source_code_plot_dag(): - """Make sure that when hover information is source code, the graph example doesn't - produce an error and works properly.""" - plot_dag( +@pytest.mark.parametrize( + ( + "include_other_objects", + "expected_nodes", + ), + [ + ( + True, + [ + "some_param", + "some_param_function", + "some_policy_function", + "other_object", + ], + ), + ( + False, + [ + "some_param", + "some_param_function", + "some_policy_function", + ], + ), + ], +) +def test_other_objects_are_removed_from_dag(include_other_objects, expected_nodes): + environment = { + "some_param": SOME_PARAM_OBJECT, + "some_param_function": some_param_function, + "some_policy_function": some_policy_function, + "other_object": some_other_object, + } + dag = _get_tt_dag_with_node_metadata( environment=environment, - selectors=[ - { - "node": "einkommensteuer__abgeltungssteuer__zu_versteuernde_kapitaleinkünfte_y_sn", # noqa: E501 - "type": "neighbors", - } - ], - orientation="h", - hover_source_code=True, + include_params=True, + include_other_objects=include_other_objects, ) + assert set(dag.nodes()) == set(expected_nodes) diff --git a/tests/ttsim/test_parameters_old/__init__.py b/tests/ttsim/tt_dag_elements/__init__.py similarity index 100% rename from tests/ttsim/test_parameters_old/__init__.py rename to tests/ttsim/tt_dag_elements/__init__.py diff --git a/tests/ttsim/tt_dag_elements/test_aggregation_functions.py b/tests/ttsim/tt_dag_elements/test_aggregation_functions.py new file mode 100644 index 0000000000..870185dcbf --- /dev/null +++ b/tests/ttsim/tt_dag_elements/test_aggregation_functions.py @@ -0,0 +1,642 @@ +from __future__ import annotations + +import copy + +import numpy +import pytest + +try: + import jax_datetime + + my_datetime = jax_datetime.to_datetime +except ImportError: + my_datetime = lambda x: x # noqa: E731 + + +from ttsim.tt_dag_elements.aggregation import ( + grouped_all, + grouped_any, + grouped_count, + grouped_max, + grouped_mean, + grouped_min, + grouped_sum, + sum_by_p_id, +) + + +def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): + """Apply pytest.mark.parametrize based on a dictionary.""" + test_cases = copy.copy(test_cases) + if keys_of_test_cases: + # Only use requested keys + test_cases = { + k: { + k_inner: v_inner + for k_inner, v_inner in v.items() + if k_inner in keys_of_test_cases + } + for k, v in test_cases.items() + if all(e in v for e in keys_of_test_cases) + } + + # Return parametrization + return pytest.mark.parametrize( + argnames=(argnames := sorted({k for v in test_cases.values() for k in v})), + argvalues=[[v.get(k) for k in argnames] for v in test_cases.values()], + ids=test_cases.keys(), + ) + + +test_grouped_specs = { + "constant_column": { + "column_to_aggregate": numpy.array([1, 1, 1, 1, 1]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "expected_res_count": numpy.array([2, 2, 3, 3, 3]), + "expected_res_sum": numpy.array([2, 2, 3, 3, 3]), + "expected_res_max": numpy.array([1, 1, 1, 1, 1]), + "expected_res_min": numpy.array([1, 1, 1, 1, 1]), + "expected_res_any": numpy.array([True, True, True, True, True]), + "expected_res_all": numpy.array([True, True, True, True, True]), + }, + "constant_column_group_id_unsorted": { + "column_to_aggregate": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), + "group_id": numpy.array([0, 1, 0, 1, 0]), + "expected_res_count": numpy.array([3, 2, 3, 2, 3]), + "expected_res_sum": numpy.array([3.0, 2.0, 3.0, 2.0, 3.0]), + "expected_res_mean": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), + "expected_res_max": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), + "expected_res_min": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), + }, + "int_column": { + "column_to_aggregate": numpy.array([0, 1, 2, 3, 4]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "expected_res_sum": numpy.array([1, 1, 9, 9, 9]), + "expected_res_mean": numpy.array([0.5, 0.5, 3, 3, 3]), + "expected_res_max": numpy.array([1, 1, 4, 4, 4]), + "expected_res_min": numpy.array([0, 0, 2, 2, 2]), + "expected_res_any": numpy.array([True, True, True, True, True]), + "expected_res_all": numpy.array([False, False, True, True, True]), + }, + "unique_group_ids_with_gaps": { + "column_to_aggregate": numpy.array([0.0, 1.0, 2.0, 3.0, 4.0]), + "group_id": numpy.array([0, 0, 3, 3, 3]), + "expected_res_count": numpy.array([2, 2, 3, 3, 3]), + "expected_res_sum": numpy.array([1.0, 1.0, 9.0, 9.0, 9.0]), + "expected_res_mean": numpy.array([0.5, 0.5, 3.0, 3.0, 3.0]), + "expected_res_max": numpy.array([1.0, 1.0, 4.0, 4.0, 4.0]), + "expected_res_min": numpy.array([0.0, 0.0, 2.0, 2.0, 2.0]), + }, + "float_column": { + "column_to_aggregate": numpy.array([0.0, 1.5, 2.0, 3.0, 4.0]), + "group_id": numpy.array([0, 0, 3, 3, 3]), + "expected_res_sum": numpy.array([1.5, 1.5, 9.0, 9.0, 9.0]), + "expected_res_mean": numpy.array([0.75, 0.75, 3.0, 3.0, 3.0]), + "expected_res_max": numpy.array([1.5, 1.5, 4.0, 4.0, 4.0]), + "expected_res_min": numpy.array([0.0, 0.0, 2.0, 2.0, 2.0]), + }, + "more_than_two_groups": { + "column_to_aggregate": numpy.array([0.0, 1.0, 2.0, 3.0, 4.0]), + "group_id": numpy.array([1, 0, 1, 1, 3]), + "expected_res_count": numpy.array([3, 1, 3, 3, 1]), + "expected_res_sum": numpy.array([5.0, 1.0, 5.0, 5.0, 4.0]), + "expected_res_mean": numpy.array([5.0 / 3.0, 1.0, 5.0 / 3.0, 5.0 / 3.0, 4.0]), + "expected_res_max": numpy.array([3.0, 1.0, 3.0, 3.0, 4.0]), + "expected_res_min": numpy.array([0.0, 1.0, 0.0, 0.0, 4.0]), + }, + "bool_column": { + "column_to_aggregate": numpy.array([True, False, True, False, False]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "expected_res_any": numpy.array([True, True, True, True, True]), + "expected_res_all": numpy.array([False, False, False, False, False]), + "expected_res_sum": numpy.array([1, 1, 1, 1, 1]), + "expected_res_mean": numpy.array([0.5, 0.5, 1 / 3, 1 / 3, 1 / 3]), + }, + "group_id_unsorted_bool": { + "column_to_aggregate": numpy.array([True, False, True, True, True]), + "group_id": numpy.array([0, 1, 0, 1, 0]), + "expected_res_any": numpy.array([True, True, True, True, True]), + "expected_res_all": numpy.array([True, False, True, False, True]), + "expected_res_sum": numpy.array([3, 1, 3, 1, 3]), + }, + "unique_group_ids_with_gaps_bool": { + "column_to_aggregate": numpy.array([True, False, False, False, False]), + "group_id": numpy.array([0, 0, 3, 3, 3]), + "expected_res_any": numpy.array([True, True, False, False, False]), + "expected_res_all": numpy.array([False, False, False, False, False]), + "expected_res_sum": numpy.array([1, 1, 0, 0, 0]), + }, + "sum_by_p_id_float": { + "column_to_aggregate": numpy.array([10.0, 20.0, 30.0, 40.0, 50.0]), + "p_id_to_aggregate_by": numpy.array([-1, -1, 8, 8, 10]), + "p_id_to_store_by": numpy.array([7, 8, 9, 10, 11]), + "expected_res": numpy.array([0.0, 70.0, 0.0, 50.0, 0.0]), + "expected_type": numpy.floating, + }, + "sum_by_p_id_int": { + "column_to_aggregate": numpy.array([10, 20, 30, 40, 50]), + "p_id_to_aggregate_by": numpy.array([-1, -1, 8, 8, 10]), + "p_id_to_store_by": numpy.array([7, 8, 9, 10, 11]), + "expected_res": numpy.array([0, 70, 0, 50, 0]), + "expected_type": numpy.integer, + }, +} + +test_grouped_raises_specs = { + "dtype_boolean": { + "column_to_aggregate": numpy.array([True, True, True, False, False]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "error_max": TypeError, + "error_min": TypeError, + "exception_match": "grouped_", + }, + "float_group_id": { + "column_to_aggregate": numpy.array([0, 1, 2, 3, 4]), + "group_id": numpy.array([0, 0, 3.5, 3.5, 3.5]), + "p_id_to_store_by": numpy.array([0, 1, 2, 3, 4]), + "error_sum": TypeError, + "error_mean": TypeError, + "error_max": TypeError, + "error_min": TypeError, + "error_sum_by_p_id": TypeError, + "exception_match": "The dtype of id columns must be integer.", + }, + "dtype_float": { + "column_to_aggregate": numpy.array([1.5, 2, 3.5, 4, 5]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "error_any": TypeError, + "error_all": TypeError, + "exception_match": "grouped_", + }, + "float_group_id_bool": { + "column_to_aggregate": numpy.array([True, True, True, False, False]), + "group_id": numpy.array([0, 0, 3.5, 3.5, 3.5]), + "error_any": TypeError, + "error_all": TypeError, + "exception_match": "The dtype of id columns must be integer.", + }, +} +test_grouped_specs["datetime"] = { + "column_to_aggregate": numpy.array( + [ + numpy.datetime64("2000"), + numpy.datetime64("2001"), + numpy.datetime64("2002"), + numpy.datetime64("2003"), + numpy.datetime64("2004"), + ], + ), + "group_id": numpy.array([1, 0, 1, 1, 1]), + "expected_res_max": numpy.array( + [ + numpy.datetime64("2004"), + numpy.datetime64("2001"), + numpy.datetime64("2004"), + numpy.datetime64("2004"), + numpy.datetime64("2004"), + ], + ), + "expected_res_min": numpy.array( + [ + numpy.datetime64("2000"), + numpy.datetime64("2001"), + numpy.datetime64("2000"), + numpy.datetime64("2000"), + numpy.datetime64("2000"), + ], + ), +} + +test_grouped_raises_specs["dtype_string"] = { + "column_to_aggregate": numpy.array(["0", "1", "2", "3", "4"]), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "error_sum": TypeError, + "error_mean": TypeError, + "error_max": TypeError, + "error_min": TypeError, + "error_any": TypeError, + "error_all": TypeError, + "exception_match": "grouped_", +} +test_grouped_raises_specs["datetime"] = { + "column_to_aggregate": numpy.array( + [ + numpy.datetime64("2000"), + numpy.datetime64("2001"), + numpy.datetime64("2002"), + numpy.datetime64("2003"), + numpy.datetime64("2004"), + ], + ), + "group_id": numpy.array([0, 0, 1, 1, 1]), + "error_sum": TypeError, + "error_mean": TypeError, + "error_any": TypeError, + "error_all": TypeError, + "exception_match": "grouped_", +} + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=["group_id", "expected_res_count"], +) +def test_grouped_count(group_id, expected_res_count, backend): + result = grouped_count( + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res_count) + + +def _run_agg_by_group(agg_func, column_to_aggregate, group_id, backend): + return agg_func( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_sum", + ], +) +def test_grouped_sum(column_to_aggregate, group_id, expected_res_sum, backend): + result = _run_agg_by_group( + agg_func=grouped_sum, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res_sum) + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_mean", + ], +) +def test_grouped_mean(column_to_aggregate, group_id, expected_res_mean, backend): + result = _run_agg_by_group( + agg_func=grouped_mean, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res_mean) + + +@parameterize_based_on_dict( + {k: v for k, v in test_grouped_specs.items() if "datetime" not in k}, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_max", + ], +) +def test_grouped_max(column_to_aggregate, group_id, expected_res_max, backend): + result = _run_agg_by_group( + agg_func=grouped_max, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_equal(result, expected_res_max) + + +@pytest.mark.skipif_jax +@parameterize_based_on_dict( + {k: v for k, v in test_grouped_specs.items() if "datetime" in k}, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_max", + ], +) +def test_grouped_max_datetime(column_to_aggregate, group_id, expected_res_max, backend): + result = _run_agg_by_group( + agg_func=grouped_max, + column_to_aggregate=my_datetime(column_to_aggregate), + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_equal(result, expected_res_max) + + +@parameterize_based_on_dict( + {k: v for k, v in test_grouped_specs.items() if "datetime" not in k}, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_min", + ], +) +def test_grouped_min(column_to_aggregate, group_id, expected_res_min, backend): + result = _run_agg_by_group( + agg_func=grouped_min, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_equal(result, expected_res_min) + + +@pytest.mark.skipif_jax +@parameterize_based_on_dict( + {k: v for k, v in test_grouped_specs.items() if "datetime" in k}, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_min", + ], +) +def test_grouped_min_datetime(column_to_aggregate, group_id, expected_res_min, backend): + result = _run_agg_by_group( + agg_func=grouped_min, + column_to_aggregate=my_datetime(column_to_aggregate), + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_equal(result, expected_res_min) + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_any", + ], +) +def test_grouped_any(column_to_aggregate, group_id, expected_res_any, backend): + result = _run_agg_by_group( + agg_func=grouped_any, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res_any) + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "expected_res_all", + ], +) +def test_grouped_all(column_to_aggregate, group_id, expected_res_all, backend): + result = _run_agg_by_group( + agg_func=grouped_all, + column_to_aggregate=column_to_aggregate, + group_id=group_id, + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res_all) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_sum", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_sum_raises( + column_to_aggregate, + group_id, + error_sum, + exception_match, + backend, +): + with pytest.raises( + error_sum, + match=exception_match, + ): + grouped_sum( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_mean", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_mean_raises( + column_to_aggregate, + group_id, + error_mean, + exception_match, + backend, +): + with pytest.raises( + error_mean, + match=exception_match, + ): + grouped_mean( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_max", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_max_raises( + column_to_aggregate, + group_id, + error_max, + exception_match, + backend, +): + with pytest.raises( + error_max, + match=exception_match, + ): + grouped_max( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_min", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_min_raises( + column_to_aggregate, + group_id, + error_min, + exception_match, + backend, +): + with pytest.raises( + error_min, + match=exception_match, + ): + grouped_min( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_any", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_any_raises( + column_to_aggregate, + group_id, + error_any, + exception_match, + backend, +): + with pytest.raises( + error_any, + match=exception_match, + ): + grouped_any( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "error_all", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_grouped_all_raises( + column_to_aggregate, + group_id, + error_all, + exception_match, + backend, +): + with pytest.raises( + error_all, + match=exception_match, + ): + grouped_all( + column=column_to_aggregate, + group_id=group_id, + num_segments=len(group_id), + backend=backend, + ) + + +@parameterize_based_on_dict( + test_grouped_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "p_id_to_aggregate_by", + "p_id_to_store_by", + "expected_res", + "expected_type", + ], +) +def test_sum_by_p_id( + column_to_aggregate, + p_id_to_aggregate_by, + p_id_to_store_by, + expected_res, + expected_type, + backend, +): + result = sum_by_p_id( + column=column_to_aggregate, + p_id_to_aggregate_by=p_id_to_aggregate_by, + p_id_to_store_by=p_id_to_store_by, + num_segments=len(p_id_to_aggregate_by), + backend=backend, + ) + numpy.testing.assert_array_almost_equal(result, expected_res) + assert numpy.issubdtype(result.dtype.type, expected_type), ( + "The dtype of the result is not as expected." + ) + + +@parameterize_based_on_dict( + test_grouped_raises_specs, + keys_of_test_cases=[ + "column_to_aggregate", + "group_id", + "p_id_to_store_by", + "error_sum_by_p_id", + "exception_match", + ], +) +@pytest.mark.skipif_jax +def test_sum_by_p_id_raises( + column_to_aggregate, + group_id, + p_id_to_store_by, + error_sum_by_p_id, + exception_match, + backend, +): + with pytest.raises( + error_sum_by_p_id, + match=exception_match, + ): + sum_by_p_id( + column=column_to_aggregate, + p_id_to_aggregate_by=group_id, + p_id_to_store_by=p_id_to_store_by, + num_segments=len(group_id), + backend=backend, + ) diff --git a/tests/ttsim/test_piecewise_polynomial.py b/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py similarity index 66% rename from tests/ttsim/test_piecewise_polynomial.py rename to tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py index 0e8ce51abe..acf3b8781a 100644 --- a/tests/ttsim/test_piecewise_polynomial.py +++ b/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py @@ -4,11 +4,16 @@ from __future__ import annotations +from typing import TYPE_CHECKING + import numpy import pytest -from ttsim.config import numpy_or_jax as np -from ttsim.piecewise_polynomial import ( +if TYPE_CHECKING: + from types import ModuleType + + +from ttsim.tt_dag_elements.piecewise_polynomial import ( PiecewisePolynomialParamValue, get_piecewise_parameters, piecewise_polynomial, @@ -16,10 +21,10 @@ @pytest.fixture -def parameters(): - params = PiecewisePolynomialParamValue( - thresholds=np.array([-np.inf, 9168.0, 14254.0, 55960.0, 265326.0, np.inf]), - rates=np.array( +def parameters(xnp): + return PiecewisePolynomialParamValue( + thresholds=xnp.array([-xnp.inf, 9168.0, 14254.0, 55960.0, 265326.0, xnp.inf]), + rates=xnp.array( [ [ 0.00000000e00, @@ -35,14 +40,13 @@ def parameters(): 0.00000000e00, 0.00000000e00, ], - ] + ], ), - intercepts=np.array([0.0, 0.0, 965.5771, 14722.3012, 102656.0212]), + intercepts=xnp.array([0.0, 0.0, 965.5771, 14722.3012, 102656.0212]), ) - return params -def test_get_piecewise_parameters_all_intercepts_supplied(): +def test_get_piecewise_parameters_all_intercepts_supplied(xnp): parameter_dict = { 0: { "lower_threshold": "-inf", @@ -74,19 +78,24 @@ def test_get_piecewise_parameters_all_intercepts_supplied(): leaf_name="test", func_type="piecewise_linear", parameter_dict=parameter_dict, + xnp=xnp, ) - expected = numpy.array([0.27, 0.5, 0.8, 1]) + expected = xnp.array([0.27, 0.5, 0.8, 1]) numpy.testing.assert_allclose(actual.intercepts, expected, atol=1e-7) -def test_piecewise_polynomial(parameters: PiecewisePolynomialParamValue): - x = np.array([-1_000, 1_000, 10_000, 30_000, 100_000, 1_000_000]) - expected = np.array([0.0, 0.0, 246.53, 10551.65, 66438.2, 866518.64]) +def test_piecewise_polynomial( + parameters: PiecewisePolynomialParamValue, + xnp: ModuleType, +): + x = xnp.array([-1_000, 1_000, 10_000, 30_000, 100_000, 1_000_000]) + expected = xnp.array([0.0, 0.0, 246.53, 10551.65, 66438.2, 866518.64]) actual = piecewise_polynomial( x=x, parameters=parameters, rates_multiplier=2, + xnp=xnp, ) - numpy.testing.assert_allclose(numpy.array(actual), expected, atol=0.01) + numpy.testing.assert_allclose(xnp.array(actual), expected, atol=0.01) diff --git a/tests/ttsim/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py similarity index 59% rename from tests/ttsim/test_rounding.py rename to tests/ttsim/tt_dag_elements/test_rounding.py index f32033cb66..b89384c9a8 100644 --- a/tests/ttsim/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -1,23 +1,16 @@ from __future__ import annotations +import numpy import pandas as pd import pytest from pandas._testing import assert_series_equal -from ttsim import ( +from ttsim import main +from ttsim.tt_dag_elements import ( RoundingSpec, - main, - policy_environment, policy_function, policy_input, ) -from ttsim.config import IS_JAX_INSTALLED -from ttsim.config import numpy_or_jax as np - -if IS_JAX_INSTALLED: - DTYPE = "float32" -else: - DTYPE = "float64" @policy_input() @@ -33,48 +26,48 @@ def p_id() -> int: rounding_specs_and_exp_results = [ ( RoundingSpec(base=1, direction="up"), - np.array([100.24, 100.78]), - np.array([101.0, 101.0]), + numpy.array([100.24, 100.78]), + numpy.array([101.0, 101.0]), ), ( RoundingSpec(base=1, direction="down"), - np.array([100.24, 100.78]), - np.array([100.0, 100.0]), + numpy.array([100.24, 100.78]), + numpy.array([100.0, 100.0]), ), ( RoundingSpec(base=1, direction="nearest"), - np.array([100.24, 100.78]), - np.array([100.0, 101.0]), + numpy.array([100.24, 100.78]), + numpy.array([100.0, 101.0]), ), ( RoundingSpec(base=5, direction="up"), - np.array([100.24, 100.78]), - np.array([105.0, 105.0]), + numpy.array([100.24, 100.78]), + numpy.array([105.0, 105.0]), ), ( RoundingSpec(base=0.1, direction="down"), - np.array([100.24, 100.78]), - np.array([100.2, 100.7]), + numpy.array([100.24, 100.78]), + numpy.array([100.2, 100.7]), ), ( RoundingSpec(base=0.001, direction="nearest"), - np.array([100.24, 100.78]), - np.array([100.24, 100.78]), + numpy.array([100.24, 100.78]), + numpy.array([100.24, 100.78]), ), ( RoundingSpec(base=1, direction="up", to_add_after_rounding=10), - np.array([100.24, 100.78]), - np.array([111.0, 111.0]), + numpy.array([100.24, 100.78]), + numpy.array([111.0, 111.0]), ), ( RoundingSpec(base=1, direction="down", to_add_after_rounding=10), - np.array([100.24, 100.78]), - np.array([110.0, 110.0]), + numpy.array([100.24, 100.78]), + numpy.array([110.0, 110.0]), ), ( RoundingSpec(base=1, direction="nearest", to_add_after_rounding=10), - np.array([100.24, 100.78]), - np.array([110.0, 111.0]), + numpy.array([100.24, 100.78]), + numpy.array([110.0, 111.0]), ), ] @@ -96,18 +89,12 @@ def test_malformed_rounding_specs(): def test_func(): return 0 - policy_environment( - active_tree_with_column_objects_and_param_functions={ - "x.py": {"test_func": test_func} - }, - ) - @pytest.mark.parametrize( "rounding_spec, input_values, exp_output", rounding_specs_and_exp_results, ) -def test_rounding(rounding_spec, input_values, exp_output): +def test_rounding(rounding_spec, input_values, exp_output, backend): """Check if rounding is correct.""" # Define function that should be rounded @@ -115,29 +102,31 @@ def test_rounding(rounding_spec, input_values, exp_output): def test_func(x): return x - data_tree = { - "p_id": np.array([1, 2]), - "namespace": {"x": np.array(input_values)}, + input_data__tree = { + "p_id": numpy.array([1, 2]), + "namespace": {"x": numpy.array(input_values)}, } policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} - nested_results = main( + results__tree = main( inputs={ - "data_tree": data_tree, + "input_data__tree": input_data__tree, "policy_environment": policy_environment, - "targets_tree": {"namespace": {"test_func": None}}, + "targets__tree": {"namespace": {"test_func": None}}, "rounding": True, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] assert_series_equal( - pd.Series(nested_results["namespace"]["test_func"]), - pd.Series(exp_output, dtype=DTYPE), + pd.Series(results__tree["namespace"]["test_func"]), + pd.Series(exp_output), check_names=False, + check_dtype=False, ) -def test_rounding_with_time_conversion(): +def test_rounding_with_time_conversion(backend, xnp): """Check if rounding is correct for time-converted functions.""" # Define function that should be rounded @@ -146,8 +135,8 @@ def test_func_m(x): return x data = { - "p_id": np.array([1, 2]), - "x": np.array([1.2, 1.5]), + "p_id": xnp.array([1, 2]), + "x": xnp.array([1.2, 1.5]), } policy_environment = { @@ -156,19 +145,21 @@ def test_func_m(x): "p_id": p_id, } - nested_results = main( + results__tree = main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": policy_environment, - "targets_tree": {"test_func_y": None}, + "targets__tree": {"test_func_y": None}, "rounding": True, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] assert_series_equal( - pd.Series(nested_results["test_func_y"]), - pd.Series([12.0, 12.0], dtype=DTYPE), + pd.Series(results__tree["test_func_y"]), + pd.Series([12.0, 12.0]), check_names=False, + check_dtype=False, ) @@ -180,33 +171,36 @@ def test_no_rounding( rounding_spec, input_values_exp_output, ignore_since_no_rounding, # noqa: ARG001 + backend, ): # Define function that should be rounded @policy_function(rounding_spec=rounding_spec) def test_func(x): return x - data = {"p_id": np.array([1, 2])} - data["x"] = np.array(input_values_exp_output) + data = {"p_id": numpy.array([1, 2])} + data["x"] = numpy.array(input_values_exp_output) policy_environment = { "test_func": test_func, "x": x, "p_id": p_id, } - nested_results = main( + results__tree = main( inputs={ - "data_tree": data, + "input_data__tree": data, "policy_environment": policy_environment, - "targets_tree": {"test_func": None}, + "targets__tree": {"test_func": None}, "rounding": False, + "backend": backend, }, - targets=["nested_results"], - )["nested_results"] + output_names=["results__tree"], + )["results__tree"] assert_series_equal( - pd.Series(nested_results["test_func"]), - pd.Series(input_values_exp_output, dtype=DTYPE), + pd.Series(results__tree["test_func"]), + pd.Series(input_values_exp_output), check_names=False, + check_dtype=False, ) @@ -214,18 +208,19 @@ def test_func(x): "rounding_spec, input_values, exp_output", rounding_specs_and_exp_results, ) -def test_rounding_callable(rounding_spec, input_values, exp_output): +def test_rounding_callable(rounding_spec, input_values, exp_output, xnp): """Check if callable is rounded correctly.""" def test_func(income): return income - func_with_rounding = rounding_spec.apply_rounding(test_func) + func_with_rounding = rounding_spec.apply_rounding(test_func, xnp=xnp) assert_series_equal( pd.Series(func_with_rounding(input_values)), pd.Series(exp_output), check_names=False, + check_dtype=False, ) @@ -233,34 +228,35 @@ def test_func(income): "rounding_spec, input_values, exp_output", rounding_specs_and_exp_results, ) -def test_rounding_spec(rounding_spec, input_values, exp_output): +def test_rounding_spec(rounding_spec, input_values, exp_output, xnp): """Test RoundingSpec directly.""" def test_func(income): return income - rounded_func = rounding_spec.apply_rounding(test_func) + rounded_func = rounding_spec.apply_rounding(test_func, xnp=xnp) result = rounded_func(input_values) assert_series_equal( pd.Series(result), pd.Series(exp_output), check_names=False, + check_dtype=False, ) @pytest.mark.parametrize( - "base, direction, to_add_after_rounding", + "base, direction, to_add_after_rounding, match", [ - (1, "upper", 0), - ("0.1", "down", 0), - (5, "closest", 0), - (5, "up", "0"), + (1, "upper", 0, "`direction` must be one of"), + (5, "closest", 0, "`direction` must be one of"), + ("0.1", "down", 0, "base needs to be a number"), + (5, "up", "0", "Additive part must be a number"), ], ) -def test_rounding_spec_validation(base, direction, to_add_after_rounding): +def test_rounding_spec_validation(base, direction, to_add_after_rounding, match): """Test validation of RoundingSpec parameters.""" - with pytest.raises(ValueError): + with pytest.raises(ValueError, match=match): RoundingSpec( base=base, direction=direction, diff --git a/tests/ttsim/tt_dag_elements/test_shared.py b/tests/ttsim/tt_dag_elements/test_shared.py new file mode 100644 index 0000000000..136d85542e --- /dev/null +++ b/tests/ttsim/tt_dag_elements/test_shared.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy +import pytest + +from ttsim.tt_dag_elements import join + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import IntColumn + + +@pytest.mark.parametrize( + "foreign_key, primary_key, target, value_if_foreign_key_is_missing, expected", + [ + ( + numpy.array([1, 2, 3]), + numpy.array([1, 2, 3]), + numpy.array([1, 2, 3]), + 4, + numpy.array([1, 2, 3]), + ), + ( + numpy.array([3, 2, 1]), + numpy.array([1, 2, 3]), + numpy.array([1, 2, 3]), + 4, + numpy.array([3, 2, 1]), + ), + ( + numpy.array([1, 1, 1]), + numpy.array([1, 2, 3]), + numpy.array([1, 2, 3]), + 4, + numpy.array([1, 1, 1]), + ), + ( + numpy.array([-1]), + numpy.array([1]), + numpy.array([1]), + 4, + numpy.array([4]), + ), + ], +) +def test_join( + foreign_key: IntColumn, + primary_key: IntColumn, + target: IntColumn, + value_if_foreign_key_is_missing: int, + expected: IntColumn, + xnp: ModuleType, +): + assert numpy.array_equal( + join( + foreign_key=xnp.asarray(foreign_key), + primary_key=xnp.asarray(primary_key), + target=xnp.asarray(target), + value_if_foreign_key_is_missing=value_if_foreign_key_is_missing, + xnp=xnp, + ), + expected, + ) diff --git a/tests/ttsim/test_ttsim_objects.py b/tests/ttsim/tt_dag_elements/test_ttsim_objects.py similarity index 87% rename from tests/ttsim/test_ttsim_objects.py rename to tests/ttsim/tt_dag_elements/test_ttsim_objects.py index 5cfb621847..f1b2f2406c 100644 --- a/tests/ttsim/test_ttsim_objects.py +++ b/tests/ttsim/tt_dag_elements/test_ttsim_objects.py @@ -4,7 +4,7 @@ import pytest -from ttsim import ( +from ttsim.tt_dag_elements import ( AggType, PolicyFunction, PolicyInput, @@ -13,8 +13,10 @@ policy_function, policy_input, ) -from ttsim.column_objects_param_function import ParamFunction, param_function -from ttsim.config import numpy_or_jax as np +from ttsim.tt_dag_elements.column_objects_param_function import ( + ParamFunction, + param_function, +) # ====================================================================================== # PolicyFunction and policy_function @@ -175,7 +177,7 @@ def test_agg_by_group_function_type(function, expected_group_id, expected_other_ def test_agg_by_group_count_other_arg_present(): - match = "There must be no argument besides identifiers for counting." + match = "There must be no argument besides identifiers" with pytest.raises(ValueError, match=match): @agg_by_group_function(agg_type=AggType.COUNT) @@ -184,7 +186,7 @@ def aggregate_by_group_count_other_arg_present(group_id, wrong_arg): def test_agg_by_group_sum_wrong_amount_of_args(): - match = "There must be exactly one argument besides identifiers for aggregations." + match = "There must be exactly one argument besides identifiers" with pytest.raises(ValueError, match=match): @agg_by_group_function(agg_type=AggType.SUM) @@ -204,7 +206,8 @@ def test_wrong_number_of_group_ids_present(): @agg_by_group_function(agg_type=AggType.COUNT) def aggregate_by_group_count_multiple_group_ids_present( - group_id, another_group_id + group_id, + another_group_id, ): pass @@ -226,7 +229,7 @@ def aggregate_by_p_id_count(p_id, p_id_specifier): @agg_by_p_id_function(agg_type=AggType.SUM) -def aggregate_by_p_id_sum(p_id, p_id_specifier, source): +def aggregate_by_p_id_sum(p_id, p_id_specifier, column): pass @@ -238,7 +241,7 @@ def aggregate_by_p_id_sum(p_id, p_id_specifier, source): ), [ (aggregate_by_p_id_count, "p_id", None), - (aggregate_by_p_id_sum, "p_id", "source"), + (aggregate_by_p_id_sum, "p_id", "column"), ], ) def test_agg_by_p_id_function_type(function, expected_foreign_p_id, expected_other_arg): @@ -249,7 +252,7 @@ def test_agg_by_p_id_function_type(function, expected_foreign_p_id, expected_oth def test_agg_by_p_id_count_other_arg_present(): - match = "There must be no argument besides identifiers for counting." + match = "There must be no argument besides identifiers" with pytest.raises(ValueError, match=match): @agg_by_p_id_function(agg_type=AggType.COUNT) @@ -257,17 +260,25 @@ def aggregate_by_p_id_count_other_arg_present(p_id, p_id_specifier, wrong_arg): pass -def test_agg_by_p_id_sum_wrong_amount_of_args(): - match = "There must be exactly one argument besides identifiers for aggregations." +def test_agg_by_p_id_sum_no_arg_present(): + match = "There must be exactly one argument besides identifiers" with pytest.raises(ValueError, match=match): @agg_by_p_id_function(agg_type=AggType.SUM) def aggregate_by_p_id_sum_no_arg_present(p_id, p_id_specifier): pass + +def test_agg_by_p_id_sum_multiple_args_present(): + match = "There must be exactly one argument besides identifiers" + with pytest.raises(ValueError, match=match): + @agg_by_p_id_function(agg_type=AggType.SUM) def aggregate_by_p_id_sum_multiple_args_present( - p_id, p_id_specifier, arg, another_arg + p_id, + p_id_specifier, + arg, + another_arg, ): pass @@ -278,12 +289,18 @@ def test_agg_by_p_id_multiple_other_p_ids_present(): @agg_by_p_id_function(agg_type=AggType.SUM) def aggregate_by_p_id_multiple_other_p_ids_present( - p_id, p_id_specifier_one, p_id_specifier_two + p_id, + p_id_specifier_one, + p_id_specifier_two, ): pass -def test_agg_by_p_id_sum_with_all_missing_p_ids(): +def test_agg_by_p_id_sum_with_all_missing_p_ids(backend, xnp): aggregate_by_p_id_sum( - p_id=np.array([180]), p_id_specifier=np.array([-1]), source=np.array([False]) + p_id=xnp.array([180]), + p_id_specifier=xnp.array([-1]), + column=xnp.array([0]), + num_segments=1, + backend=backend, ) diff --git a/tests/ttsim/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py similarity index 78% rename from tests/ttsim/test_vectorization.py rename to tests/ttsim/tt_dag_elements/test_vectorization.py index 46d77d66de..13f37246ca 100644 --- a/tests/ttsim/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -4,25 +4,31 @@ import functools import inspect import string +from pathlib import Path from typing import TYPE_CHECKING import dags.tree as dt import numpy import pytest from dags import concatenate_functions - -from ttsim.column_objects_param_function import AggByGroupFunction, AggByPIDFunction -from ttsim.config import IS_JAX_INSTALLED - -if IS_JAX_INSTALLED: - import jax.numpy -from mettsim.config import METTSIM_ROOT from numpy.testing import assert_array_equal -from ttsim import GroupCreationFunction, PolicyInput, policy_function -from ttsim.loader import orig_tree_with_column_objects_and_param_functions -from ttsim.policy_environment import active_tree_with_column_objects_and_param_functions -from ttsim.vectorization import ( +from ttsim.interface_dag_elements.orig_policy_objects import ( + column_objects_and_param_functions, +) +from ttsim.interface_dag_elements.policy_environment import ( + _active_column_objects_and_param_functions, +) +from ttsim.tt_dag_elements import ( + GroupCreationFunction, + PolicyInput, + policy_function, +) +from ttsim.tt_dag_elements.column_objects_param_function import ( + AggByGroupFunction, + AggByPIDFunction, +) +from ttsim.tt_dag_elements.vectorization import ( TranslateToVectorizableError, _is_lambda_function, _make_vectorizable, @@ -31,27 +37,14 @@ ) if TYPE_CHECKING: - from collections.abc import Callable - + from types import ModuleType -# ====================================================================================== -# Backend -# ====================================================================================== - -backends = ["jax", "numpy"] if IS_JAX_INSTALLED else ["numpy"] - -modules = {"numpy": numpy} -if IS_JAX_INSTALLED: - modules["jax"] = jax.numpy + from ttsim.interface_dag_elements.typing import IntColumn # ====================================================================================== # String comparison # ====================================================================================== -ORIG_METTSIM_OBJECTS_TREE = orig_tree_with_column_objects_and_param_functions( - root=METTSIM_ROOT / "mettsim" -) - def string_equal(s1, s2): remove = string.punctuation + string.whitespace @@ -310,13 +303,13 @@ def f18_exp(x): def test_change_if_to_where_source(func, expected, args): # noqa: ARG001 exp = inspect.getsource(expected) exp = exp.replace("_exp", "") - got = make_vectorizable_source(func, backend="numpy") + got = make_vectorizable_source(func, backend="numpy", xnp=numpy) assert string_equal(exp, got) @pytest.mark.parametrize("func, expected, args", TEST_CASES) def test_change_if_to_where_wrapper(func, expected, args): - got_func = _make_vectorizable(func, backend="numpy") + got_func = _make_vectorizable(func, backend="numpy", xnp=numpy) got = got_func(*args) exp = expected(*args) assert_array_equal(got, exp) @@ -359,19 +352,19 @@ def g4(x): def test_notimplemented_error(): with pytest.raises(NotImplementedError): - _make_vectorizable(f1, backend="dask") + _make_vectorizable(f1, backend="dask", xnp=numpy) @pytest.mark.parametrize("func", [g1, g2, g3, g4]) def test_disallowed_operation_source(func): with pytest.raises(TranslateToVectorizableError): - make_vectorizable_source(func, backend="numpy") + make_vectorizable_source(func, backend="numpy", xnp=numpy) @pytest.mark.parametrize("func", [g1, g2, g3, g4]) def test_disallowed_operation_wrapper(func): with pytest.raises(TranslateToVectorizableError): - _make_vectorizable(func, backend="numpy") + _make_vectorizable(func, backend="numpy", xnp=numpy) # ====================================================================================== @@ -383,13 +376,15 @@ def test_disallowed_operation_wrapper(func): @pytest.mark.parametrize( "funcname, func", - [ + ( (funcname, pf.function) for funcname, pf in dt.flatten_to_tree_paths( - active_tree_with_column_objects_and_param_functions( - orig_tree_with_column_objects_and_param_functions=ORIG_METTSIM_OBJECTS_TREE, + _active_column_objects_and_param_functions( + orig=column_objects_and_param_functions( + root=Path(__file__).parent.parent / "mettsim" + ), date=datetime.date(year=year, month=1, day=1), - ) + ), ).items() if not isinstance( pf, @@ -398,12 +393,11 @@ def test_disallowed_operation_wrapper(func): | AggByPIDFunction | PolicyInput, ) - ], + ), ) - @pytest.mark.parametrize("backend", backends) - def test_convertible(funcname, func, backend): # noqa: ARG001 + def test_convertible(funcname, func, backend, xnp): # noqa: ARG001 # Leave funcname for debugging purposes. - _make_vectorizable(func, backend=backend) + _make_vectorizable(func, backend=backend, xnp=xnp) # ====================================================================================== @@ -427,12 +421,9 @@ def mock__elterngeld__geschwisterbonus_m( return out -@pytest.mark.parametrize("backend", backends) -def test_geschwisterbonus_m(backend): - full = modules[backend].full - +def test_geschwisterbonus_m(backend, xnp): # Test original METTSIM function on scalar input - # ================================================================================== + # ============================================================================== basisbetrag_m = 3.0 geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = True geschwisterbonus_aufschlag = 1.0 @@ -447,11 +438,12 @@ def test_geschwisterbonus_m(backend): assert exp == 3.0 # Create array inputs and assert that METTSIM functions raises error - # ================================================================================== + # ============================================================================== shape = (10, 2) - basisbetrag_m = full(shape, basisbetrag_m) - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = full( - shape, geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg + basisbetrag_m = xnp.full(shape, basisbetrag_m) + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = xnp.full( + shape, + geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, ) with pytest.raises(ValueError, match="truth value of an array with more than"): @@ -463,9 +455,11 @@ def test_geschwisterbonus_m(backend): ) # Call converted function on array input and test result - # ================================================================================== + # ============================================================================== converted = _make_vectorizable( - mock__elterngeld__geschwisterbonus_m, backend=backend + mock__elterngeld__geschwisterbonus_m, + backend=backend, + xnp=xnp, ) got = converted( basisbetrag_m=basisbetrag_m, @@ -473,7 +467,7 @@ def test_geschwisterbonus_m(backend): geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, geschwisterbonus_minimum=geschwisterbonus_minimum, ) - assert_array_equal(got, full(shape, exp)) + assert_array_equal(got, xnp.full(shape, exp)) def mock__elterngeld__grundsätzlich_anspruchsberechtigt( @@ -493,12 +487,9 @@ def mock__elterngeld__grundsätzlich_anspruchsberechtigt( ) -@pytest.mark.parametrize("backend", backends) -def test_grundsätzlich_anspruchsberechtigt(backend): - full = modules[backend].full - +def test_grundsätzlich_anspruchsberechtigt(backend, xnp): # Test original METTSIM function on scalar input - # ================================================================================== + # ============================================================================== claimed = True arbeitsstunden_w = 20.0 kind_grundsätzlich_anspruchsberechtigt_fg = True @@ -518,9 +509,9 @@ def test_grundsätzlich_anspruchsberechtigt(backend): assert exp is True # Create array inputs and assert that METTSIM functions raises error - # ================================================================================== + # ============================================================================== shape = (10, 1) - arbeitsstunden_w = full(shape, arbeitsstunden_w) + arbeitsstunden_w = xnp.full(shape, arbeitsstunden_w) with pytest.raises(ValueError, match="truth value of an array with more than"): mock__elterngeld__grundsätzlich_anspruchsberechtigt( @@ -533,9 +524,11 @@ def test_grundsätzlich_anspruchsberechtigt(backend): ) # Call converted function on array input and test result - # ================================================================================== + # ============================================================================== converted = _make_vectorizable( - mock__elterngeld__grundsätzlich_anspruchsberechtigt, backend=backend + mock__elterngeld__grundsätzlich_anspruchsberechtigt, + backend=backend, + xnp=xnp, ) got = converted( claimed=claimed, @@ -545,7 +538,7 @@ def test_grundsätzlich_anspruchsberechtigt(backend): bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, max_arbeitsstunden_w=max_arbeitsstunden_w, ) - assert_array_equal(got, full(shape, exp)) + assert_array_equal(got, xnp.full(shape, exp)) # ====================================================================================== @@ -585,12 +578,12 @@ def test_is_lambda_function_non_function_input(): def test_lambda_functions_disallowed_make_vectorizable(): with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - _make_vectorizable(lambda x: x, backend="numpy") + _make_vectorizable(lambda x: x, backend="numpy", xnp=numpy) def test_lambda_functions_disallowed_make_vectorizable_source(): with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - make_vectorizable_source(lambda x: x, backend="numpy") + make_vectorizable_source(lambda x: x, backend="numpy", xnp=numpy) # ====================================================================================== @@ -598,15 +591,15 @@ def test_lambda_functions_disallowed_make_vectorizable_source(): # ====================================================================================== -def test_make_vectorizable_policy_func(): +def test_make_vectorizable_policy_func(backend, xnp): @policy_function() def alter_bis_24(alter: int) -> bool: return alter <= 24 - vectorized = _make_vectorizable(alter_bis_24, backend="numpy") + vectorized = alter_bis_24.vectorize(backend=backend, xnp=xnp) - got = vectorized(numpy.array([20, 25, 30])) - exp = numpy.array([True, False, False]) + got = vectorized(xnp.array([20, 25, 30])) + exp = xnp.array([True, False, False]) assert_array_equal(got, exp) @@ -625,7 +618,7 @@ def f_b(a: int) -> int: def f_manual(x: int) -> int: return f_b(f_a(x)) - vectorized = _make_vectorizable(f_manual, backend="numpy") + vectorized = _make_vectorizable(f_manual, backend="numpy", xnp=numpy) got = vectorized(numpy.array([1, 2, 3])) exp = numpy.array([3, 4, 5]) assert_array_equal(got, exp) @@ -647,12 +640,13 @@ def f_b(a: int) -> int: targets=["b"], ) - vectorized = _make_vectorizable(f_dags, backend="numpy") + vectorized = _make_vectorizable(f_dags, backend="numpy", xnp=numpy) got = vectorized(numpy.array([1, 2, 3])) exp = numpy.array([3, 4, 5]) assert_array_equal(got, exp) +@policy_function() def scalar_func(x: int) -> int: if x < 0: return 0 @@ -661,18 +655,55 @@ def scalar_func(x: int) -> int: @policy_function(vectorization_strategy="not_required") -def already_vectorized_func(x: numpy.ndarray) -> numpy.ndarray: # type: ignore[type-arg] - return numpy.where(x < 0, 0, x * 2) +def already_vectorized_func(x: IntColumn, xnp: ModuleType) -> IntColumn: + return xnp.where(x < 0, 0, x * 2) -@pytest.mark.parametrize( - "vectorized_function", - [ - vectorize_function(scalar_func, vectorization_strategy="loop"), - already_vectorized_func, - ], -) -def test_vectorize_func(vectorized_function: Callable): # type: ignore[type-arg] +def test_loop_vectorize_scalar_func(backend, xnp): + fun = vectorize_function( + scalar_func.function, + vectorization_strategy="loop", + backend=backend, + xnp=numpy, + ) + assert numpy.array_equal(fun(xnp.array([-1, 0, 2, 3])), xnp.array([0, 0, 4, 6])) + + +def test_vectorize_scalar_func(backend, xnp): + fun = vectorize_function( + scalar_func.function, + vectorization_strategy="vectorize", + backend=backend, + xnp=numpy, + ) + assert numpy.array_equal(fun(xnp.array([-1, 0, 2, 3])), xnp.array([0, 0, 4, 6])) + + +def test_already_vectorized_func(xnp): assert numpy.array_equal( - vectorized_function(numpy.array([-1, 0, 2, 3])), numpy.array([0, 0, 4, 6]) + already_vectorized_func(xnp.array([-1, 0, 2, 3]), xnp), + xnp.array([0, 0, 4, 6]), + ) + + +def test_vectorize_function_annotations(backend, xnp): + def f(a, x: int, y: float, z: bool, p1: str, p2: dict[str, float]) -> float: # noqa: ARG001 + return 1.0 + + vectorized = vectorize_function( + f, + vectorization_strategy="vectorize", + backend=backend, + xnp=xnp, ) + + expected_annotations = { + "a": "IntColumn | FloatColumn | BoolColumn", + "x": "IntColumn", + "y": "FloatColumn", + "z": "BoolColumn", + "p1": "str", + "p2": "dict[str, float]", + "return": "FloatColumn", + } + assert inspect.get_annotations(vectorized) == expected_annotations diff --git a/typical_vars_in_data.yaml b/typical_vars_in_data.yaml deleted file mode 100644 index 699406158d..0000000000 --- a/typical_vars_in_data.yaml +++ /dev/null @@ -1,29 +0,0 @@ ---- -arbeitslosengeld_2: - betrag_m_bg: 2005-01-01 / 2100-12-31 -elterngeld: - betrag_m: 2009-01-01 / 2100-12-31 -erziehungsgeld: - betrag_m: 1900-01-01 / 2008-12-31 -grundsicherung: - im_alter: - betrag_m_eg: 1900-01-01 / 2100-12-31 -kindergeld: - betrag_m: 1900-01-01 / 2100-12-31 -kinderzuschlag: - betrag_m_bg: 2005-01-01 / 2100-12-31 -sozialversicherung: - arbeitslosen: - betrag_m: 1900-01-01 / 2100-12-31 - rente: - altersrente: - betrag_m: 1900-01-01 / 2100-12-31 - bruttorente_m: 1900-01-01 / 2100-12-31 - erwerbsminderung: - betrag_m: 1900-01-01 / 2100-12-31 - grundrente: - betrag_m: 2021-01-01 / 2100-12-31 -unterhaltsvorschuss: - betrag_m: 1980-01-01 / 2100-12-31 -wohngeld: - betrag_m_wthh: 1965-01-01 / 2100-12-31 From edf184a073e0712dc2a7490895ff391a2b685c2c Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Fri, 27 Jun 2025 08:32:28 +0200 Subject: [PATCH 045/109] Add 'output' keyword to main, fix tests (#984) As discussed in #976, add an `output` keyword to `main()`, which could be a `Name` or `Names`. If `Name`, return a single element instead of a dictionary. --- pixi.lock | 90 +++++------ pyproject.toml | 1 + src/_gettsim/interface.py | 129 --------------- src/_gettsim_tests/test_interface.py | 137 ---------------- src/_gettsim_tests/test_policy.py | 43 +++-- src/_gettsim_tests/test_templates.py | 6 +- src/ttsim/__init__.py | 3 +- .../input_data.py | 0 src/ttsim/arg_templates/output.py | 27 ++++ src/ttsim/interface_dag.py | 94 +++++++---- src/ttsim/interface_dag_elements/__init__.py | 13 +- src/ttsim/plot_dag.py | 27 ++-- src/ttsim/testing_utils.py | 60 +++---- .../test_data_converters.py | 17 +- .../interface_dag_elements/test_failures.py | 136 +++++++--------- .../interface_dag_elements/test_mettsim.py | 23 ++- .../test_policy_environment.py | 32 ++-- .../test_specialized_environment.py | 149 ++++++++---------- .../interface_dag_elements/test_templates.py | 114 +++++++------- .../interface_dag_elements/test_warnings.py | 40 ++--- tests/ttsim/test_end_to_end.py | 6 +- tests/ttsim/test_interface_dag.py | 49 +++--- tests/ttsim/test_plot_dag.py | 13 +- tests/ttsim/tt_dag_elements/test_rounding.py | 50 +++--- 24 files changed, 492 insertions(+), 767 deletions(-) delete mode 100644 src/_gettsim/interface.py delete mode 100644 src/_gettsim_tests/test_interface.py rename src/ttsim/{argument_templates => arg_templates}/input_data.py (100%) create mode 100644 src/ttsim/arg_templates/output.py diff --git a/pixi.lock b/pixi.lock index c9782a37e2..1c1c38880c 100644 --- a/pixi.lock +++ b/pixi.lock @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -273,7 +273,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -502,7 +502,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -511,7 +511,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -740,7 +740,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -749,7 +749,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -985,7 +985,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -995,7 +995,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . mypy: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1260,7 +1260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -1274,7 +1274,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1503,7 +1503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -1517,7 +1517,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1746,7 +1746,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -1760,7 +1760,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1996,7 +1996,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -2011,7 +2011,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -2276,7 +2276,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -2285,7 +2285,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2514,7 +2514,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -2523,7 +2523,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2752,7 +2752,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -2761,7 +2761,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2997,7 +2997,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -3007,7 +3007,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . py312: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -3272,7 +3272,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -3281,7 +3281,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3510,7 +3510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -3519,7 +3519,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3748,7 +3748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -3757,7 +3757,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3993,7 +3993,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -4003,7 +4003,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . py312-jax: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -4279,7 +4279,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4289,7 +4289,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4529,7 +4529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4539,7 +4539,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4779,7 +4779,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4789,7 +4789,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -5025,7 +5025,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 @@ -5041,7 +5041,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: . packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -6094,9 +6094,9 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#49c284f14cff8fe0d191f2fda88cd14b7427e809 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 name: dags - version: 0.3.1.dev13+g49c284f + version: 0.3.1.dev19+g8b3a4bf requires_dist: - flatten-dict - networkx @@ -6620,10 +6620,10 @@ packages: purls: [] size: 21903 timestamp: 1694400856979 -- pypi: ./ +- pypi: . name: gettsim - version: 0.7.1.dev519+g2a6b1b5b.d20250623 - sha256: bb7cab681df8ce6c4fbc6d66a2c91efc4d497688c8f0c4e74ae87ee0785b8409 + version: 0.7.1.dev137+gb255f8af0 + sha256: ef42085575c8d56d2dae9c7fae1deabef1e96d5806b5760f6f72bc560791ea6a requires_dist: - ipywidgets - networkx diff --git a/pyproject.toml b/pyproject.toml index 7de12f152d..e4b8784508 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -233,6 +233,7 @@ exclude = [] # All tests return None and use asserts "src/_gettsim_tests/**/*.py" = ["ANN", "S101"] "src/ttsim/interface_dag_elements/specialized_environment.py" = ["E501"] +"src/ttsim/interface_dag_elements/__init__.py" = ["TC"] "src/ttsim/interface_dag_elements/fail_if.py" = ["E501"] "src/ttsim/interface_dag_elements/typing.py" = ["PGH", "PLR", "SIM114"] "src/ttsim/plot_dag.py" = ["FBT002"] diff --git a/src/_gettsim/interface.py b/src/_gettsim/interface.py deleted file mode 100644 index cf55c8b986..0000000000 --- a/src/_gettsim/interface.py +++ /dev/null @@ -1,129 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -import numpy - -from ttsim import main -from ttsim.interface_dag_elements.data_converters import ( - df_with_mapped_columns_to_nested_data, - nested_data_to_df_with_mapped_columns, -) -from ttsim.interface_dag_elements.shared import to_datetime - -if TYPE_CHECKING: - import pandas as pd - - from ttsim.interface_dag_elements.typing import NestedInputs, NestedStrings - - -def oss( - date: str, - inputs_df: pd.DataFrame, - inputs_tree_to_inputs_df_columns: NestedInputs, - targets__tree: NestedStrings, -) -> pd.DataFrame: - """One-stop-shop for computing taxes and transfers. - - Args: - date: - The date to compute taxes and transfers for. The date determines the policy - environment for which the taxes and transfers are computed. - inputs_df: - The DataFrame containing the data. - inputs_tree_to_inputs_df_columns: - A tree that has the inputs required by GETTSIM as the path (sequence of - keys) and maps them to the data provided by the user. The leaves of the tree - are strings that reference column names in *inputs_df* or constants. - targets__tree: - A tree that has the desired targets as the path (sequence of keys) and maps - them to the data columns the user would like to have. - - Returns - ------- - A DataFrame with the results. - - Examples - -------- - >>> inputs_df = pd.DataFrame( - ... { - ... "age": [25, 45, 3, 65], - ... "wage": [950, 950, 0, 950], - ... "id": [0, 1, 2, 3], - ... "hh_id": [0, 1, 1, 2], - ... "mother_id": [-1, -1, 1, -1], - ... "has_kids": [False, True, False, True], - ... } - ... ) - >>> inputs_map = { - ... "p_id": "id", - ... "hh_id": "hh_id", - ... "alter": "age", - ... "familie":{ - ... "p_id_elternteil_1": "mother_id", - ... "p_id_elternteil_2": -1, - ... }, - ... "einkommensteuer": { - ... "einkünfte": { - ... "aus_nichtselbstständiger_arbeit": {"bruttolohn_m": "wage"}, - ... "ist_selbstständig": False, - ... "aus_selbstständiger_arbeit": {"betrag_m": 0.0}, - ... } - ... }, - ... "sozialversicherung": { - ... "pflege": { - ... "beitrag": { - ... "hat_kinder": "has_kids", - ... } - ... }, - ... "kranken": { - ... "beitrag":{ - ... "bemessungsgrundlage_rente_m": 0.0, - ... "privat_versichert": False - ... } - ... } - ... }, - ... } - >>> targets_map={ - ... "sozialversicherung": { - ... "pflege": { - ... "beitrag": { - ... "betrag_versicherter_m": "ltci_contrib", - ... } - ... } - ... } - ... } - >>> oss( - ... date="2025-01-01", - ... inputs_df=inputs_df, - ... inputs_tree_to_inputs_df_columns=inputs_map, - ... targets__tree=targets_map, - ... ) - ltci_contrib - 0 14.72 - 1 9.82 - 2 0.00 - 3 9.82 - """ - input_data__tree = df_with_mapped_columns_to_nested_data( - mapper=inputs_tree_to_inputs_df_columns, - df=inputs_df, - xnp=numpy, - ) - nested_result = main( - inputs={ - "date": to_datetime(date), - "orig_policy_objects__root": Path(__file__).parent, - "input_data__tree": input_data__tree, - "targets__tree": targets__tree, - "rounding": True, - "backend": "numpy", - }, - output_names=["results__tree"], - )["results__tree"] - return nested_data_to_df_with_mapped_columns( - nested_data_to_convert=nested_result, - nested_outputs_df_column_names=targets__tree, - data_with_p_id=input_data__tree, - ) diff --git a/src/_gettsim_tests/test_interface.py b/src/_gettsim_tests/test_interface.py deleted file mode 100644 index e39d23ee38..0000000000 --- a/src/_gettsim_tests/test_interface.py +++ /dev/null @@ -1,137 +0,0 @@ -import optree -import pandas as pd -import pytest - -from _gettsim.interface import oss - - -@pytest.fixture -def example_inputs_df(): - return pd.DataFrame( - { - "id": [0, 1, 2], - "gross_wage": [2000, 0, 0], - "age": [20, 2, 2], - "birth_year": [1990, 2023, 2023], - "pointer_parent_1": [-1, 0, 0], - "recipient_child_benefits_id": [-1, 0, 0], - "is_single_parent": [True, False, False], - "has_children": [True, False, False], - }, - ) - - -@pytest.fixture -def example_inputs_tree_to_inputs_df_columns(): - return { - "arbeitsstunden_w": 0, - "einkommensteuer": { - "abzüge": { - "kinderbetreuungskosten_m": 0.0, - "p_id_kinderbetreuungskostenträger": -1, - "beitrag_private_rentenversicherung_m": 0.0, - }, - "einkünfte": { - "ist_selbstständig": False, - "aus_nichtselbstständiger_arbeit": { - "bruttolohn_m": "gross_wage", - }, - "aus_selbstständiger_arbeit": { - "betrag_m": 0.0, - }, - "aus_gewerbebetrieb": { - "betrag_m": 0.0, - }, - "aus_forst_und_landwirtschaft": { - "betrag_m": 0.0, - }, - "aus_kapitalvermögen": { - "kapitalerträge_m": 0.0, - }, - "aus_vermietung_und_verpachtung": { - "betrag_m": 0.0, - }, - "sonstige": { - "ohne_renten_m": 0.0, - }, - }, - "gemeinsam_veranlagt": False, - }, - "alter": "age", - "behinderungsgrad": 0, - "p_id": "id", - "geburtsjahr": "birth_year", - "familie": { - "p_id_ehepartner": -1, - "p_id_elternteil_1": "pointer_parent_1", - "p_id_elternteil_2": -1, - "alleinerziehend": "is_single_parent", - }, - "kindergeld": { - "p_id_empfänger": "recipient_child_benefits_id", - "in_ausbildung": False, - }, - "sozialversicherung": { - "rente": { - "altersrente": { - "betrag_m": 0.0, - }, - "jahr_renteneintritt": 2060, - "private_rente_betrag_m": 0.0, - }, - "pflege": { - "beitrag": { - "hat_kinder": "has_children", - }, - }, - "kranken": { - "beitrag": { - "privat_versichert": False, - }, - }, - }, - "wohnort_ost": False, - } - - -@pytest.mark.parametrize( - "targets__tree", - [ - # Param target and policy target - { - "einkommensteuer": { - "betrag_y_sn": "income_tax", - "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", - }, - }, - # Policy target only - { - "einkommensteuer": { - "betrag_y_sn": "income_tax", - }, - }, - # Param target only - { - "einkommensteuer": { - "kinderfreibetrag_pro_kind_y": "child_tax_credit_per_child", - }, - }, - ], -) -def test_oss_with_gettsim_policy_env( - targets__tree, - example_inputs_df, - example_inputs_tree_to_inputs_df_columns, -): - results = oss( - date="2024-01-01", - inputs_df=example_inputs_df, - inputs_tree_to_inputs_df_columns=example_inputs_tree_to_inputs_df_columns, - targets__tree=targets__tree, - ) - expected_columns: list[tuple[str]] = optree.tree_flatten(targets__tree)[0] - assert results.shape == ( - example_inputs_df.shape[0], - len(expected_columns), - ) - assert all(col in results.columns for col in expected_columns) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index d9b34f684e..b4f495bfb6 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -8,7 +8,7 @@ import numpy import pytest -from ttsim import main +from ttsim import main, output from ttsim.testing_utils import ( PolicyTest, check_env_completeness, @@ -37,28 +37,27 @@ def get_orig_gettsim_objects() -> dict[ str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs ]: - return main( + out = main( orig_policy_objects={"root": GETTSIM_ROOT}, - output_names=[ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ], + output=output.Names( + [ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ] + ), ) + return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} def dates_in_orig_gettsim_objects() -> list[datetime.date]: orig_objects = get_orig_gettsim_objects() start_dates = { v.start_date - for v in orig_objects[ - "orig_policy_objects__column_objects_and_param_functions" - ].values() + for v in orig_objects["column_objects_and_param_functions"].values() } end_dates = { v.end_date + timedelta(days=1) - for v in orig_objects[ - "orig_policy_objects__column_objects_and_param_functions" - ].values() + for v in orig_objects["column_objects_and_param_functions"].values() } return sorted(start_dates | end_dates) @@ -106,16 +105,16 @@ def test_top_level_elements_not_repeated_in_paths( ): try: gettsim_objects = main( - inputs={ - "orig_policy_objects__root": GETTSIM_ROOT, - "backend": backend, - "date_str": date.isoformat(), - "rounding": False, - }, - output_names=[ - "specialized_environment__with_partialled_params_and_scalars", - "labels__top_level_namespace", - ], + orig_policy_objects={"root": GETTSIM_ROOT}, + backend=backend, + date=date, + rounding=False, + output=output.Names( + [ + "specialized_environment__with_partialled_params_and_scalars", + "labels__top_level_namespace", + ], + ), ) except Exception: # noqa: BLE001 msg = ( diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 24e5d9929c..a6b76d4c1a 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -4,7 +4,7 @@ import dags.tree as dt -from ttsim import main +from ttsim import main, output from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.shared import ( get_re_pattern_for_all_time_units_and_groupings, @@ -19,7 +19,9 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output_names=["labels__grouping_levels", "templates__input_data_dtypes"], + output=output.Names( + ["labels__grouping_levels", "templates__input_data_dtypes"] + ), ) paths_with_unspecified_dtypes = [] diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 6e6997afb4..394001887b 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim.argument_templates import input_data +from ttsim.arg_templates import input_data, output from ttsim.interface_dag import main from ttsim.interface_dag_elements.shared import merge_trees @@ -8,4 +8,5 @@ "input_data", "main", "merge_trees", + "output", ] diff --git a/src/ttsim/argument_templates/input_data.py b/src/ttsim/arg_templates/input_data.py similarity index 100% rename from src/ttsim/argument_templates/input_data.py rename to src/ttsim/arg_templates/input_data.py diff --git a/src/ttsim/arg_templates/output.py b/src/ttsim/arg_templates/output.py new file mode 100644 index 0000000000..d03b8fd1d9 --- /dev/null +++ b/src/ttsim/arg_templates/output.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from collections.abc import Iterable + + from ttsim.interface_dag_elements.typing import NestedTargetDict + + +@dataclass(frozen=True) +class ABC: + def to_dict(self) -> dict[str, Any]: + return self.__dict__ + + +@dataclass(frozen=True) +class Name(ABC): + name: str | tuple[str, ...] + """A single output name. Could be a qualified name or a tree path.""" + + +@dataclass(frozen=True) +class Names(ABC): + names: Iterable[str | tuple[str, ...]] | NestedTargetDict + """An iterable of output names. Could be qualified names or tree paths.""" diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index d6a06aba58..a060f485f9 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -10,7 +10,7 @@ import dags.tree as dt import optree -from ttsim.argument_templates import input_data +from ttsim import arg_templates from ttsim.interface_dag_elements import _InterfaceDAGElements from ttsim.interface_dag_elements.fail_if import ( format_errors_and_warnings, @@ -28,7 +28,6 @@ import datetime from ttsim.interface_dag_elements.typing import ( - NestedTargetDict, QNameStrings, UnorderedQNames, ) @@ -37,11 +36,12 @@ def main( *, date_str: str | None = None, - output_names: NestedTargetDict | QNameStrings | None = None, - input_data: input_data.DfAndMapper - | input_data.DfWithNestedColumns - | input_data.Flat - | input_data.QName + output: arg_templates.output.Name | arg_templates.output.Names | None = None, + input_data: arg_templates.input_data.DfAndMapper + | arg_templates.input_data.DfWithNestedColumns + | arg_templates.input_data.Flat + | arg_templates.input_data.QName + | arg_templates.input_data.Tree | None = None, targets: dict[str, Any] | None = None, backend: Literal["numpy", "jax"] | None = None, @@ -63,7 +63,7 @@ def main( """ flat_inputs = _harmonize_inputs(locals()) - output_qnames = _harmonize_output_names(output_names) + flat_output = _harmonize_outputs(output) if not any(re.match("(input|processed)_data", s) for s in flat_inputs): flat_inputs["processed_data"] = {} @@ -76,7 +76,7 @@ def main( } _fail_if_requested_nodes_cannot_be_found( - output_qnames=output_qnames, + output_qnames=flat_output["names"], nodes=nodes, ) @@ -93,19 +93,26 @@ def main( } # If targets are None, all failures and warnings are included, anyhow. - if fail_and_warn and output_qnames is not None: - output_qnames = include_fail_and_warn_nodes( + if fail_and_warn and flat_output["names"] is not None: + flat_output["names"] = include_fail_and_warn_nodes( functions=functions, - output_qnames=output_qnames, + output_qnames=flat_output["names"], + ) + if flat_output["name"] is None: + f = dags.concatenate_functions( + functions=functions, + targets=flat_output["names"], + return_type="dict", + enforce_signature=False, + set_annotations=False, + ) + else: + f = dags.concatenate_functions( + functions=functions, + targets=flat_output["name"], + enforce_signature=False, + set_annotations=False, ) - - f = dags.concatenate_functions( - functions=functions, - targets=output_qnames, - return_type="dict", - enforce_signature=False, - set_annotations=False, - ) return f(**flat_inputs) @@ -117,7 +124,9 @@ def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: asdict(_InterfaceDAGElements()), # type: ignore[arg-type] none_is_leaf=True, )[:2] - if "input_data" in inputs and isinstance(inputs["input_data"], input_data.ABC): + if "input_data" in inputs and isinstance( + inputs["input_data"], arg_templates.input_data.ABC + ): inputs["input_data"] = inputs["input_data"].to_dict() for acc, val in zip(accs, vals, strict=False): qname = dt.qname_from_tree_path(acc.path) @@ -131,14 +140,41 @@ def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: return {k: v for k, v in flat_inputs.items() if v is not None} -def _harmonize_output_names( - output_names: QNameStrings | NestedTargetDict | None, -) -> list[str] | None: - if output_names is None: - return None - if isinstance(output_names, dict): - return dt.qnames(output_names) - return output_names +def _harmonize_outputs( + output: arg_templates.output.Name | arg_templates.output.Names | None, +) -> dict[str, Any]: + if output is None: + flat_output = { + "qname": None, + "qnames": None, + } + elif isinstance(output, arg_templates.output.ABC): + flat_output = output.to_dict() + flat_output["name"] = flat_output.get("name") + if isinstance(flat_output["name"], tuple): + flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) + elif isinstance(flat_output["name"], dict): + if len(flat_output["name"]) > 1: + raise ValueError( + "The output Name must be a single qualified name, a tuple or a " + "dict with one element. If you want to output multiple elements, " + "use Names." + ) + flat_output["name"] = dt.qnames(flat_output["name"])[0] + flat_output["names"] = flat_output.get( + "names", [flat_output["name"]] if flat_output["name"] is not None else None + ) + if isinstance(flat_output["names"], dict): + flat_output["names"] = dt.qnames(flat_output["names"]) + elif isinstance(flat_output["names"][0], tuple): + flat_output["names"] = [ + dt.qname_from_tree_path(tp) for tp in flat_output["names"] + ] + elif isinstance(flat_output["names"][0], dict): + # Happens if a dict was passed to Name. + flat_output["names"] = dt.qnames(flat_output["names"][0]) + + return flat_output def include_fail_and_warn_nodes( diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 498a66f06b..3e551c3f0d 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -8,12 +8,9 @@ import dags.tree as dt import pandas as pd -__all__ = [] # type: ignore[var-annotated] - from ttsim.interface_dag_elements.interface_node_objects import ( FailOrWarnFunction, InterfaceFunction, - InterfaceInput, ) @@ -24,7 +21,7 @@ def __init_subclass__(cls) -> None: if hasattr(type_, "__origin__") and type_.__origin__ is type: setattr(cls, name, type_()) - def __setattr__(self, name: str, value: Any) -> None: + def __setattr__(self, name: str, value: Any) -> None: # noqa: ANN401 if name in get_type_hints(self.__class__): object.__setattr__(self, name, value) else: @@ -149,20 +146,20 @@ class _InterfaceDAGElements: warn_if: WarnIf = field(default_factory=WarnIf) fail_if: FailIf = field(default_factory=FailIf) - def __setattr__(self, name: str, value: Any) -> None: + def __setattr__(self, name: str, value: Any) -> None: # noqa: ANN401 object.__setattr__(self, name, value) def to_dict(self) -> dict[str, Any]: # Skeleton comes from having all leaves equal to None. flat = { - p: getattr(path=p, obj=self) + p: _getattr(path=p, obj=self) for p in dt.tree_paths(asdict(_InterfaceDAGElements())) } return dt.unflatten_from_tree_paths(flat) -def getattr(path: tuple[str, ...], obj: Any) -> Any: +def _getattr(path: tuple[str, ...], obj: Any) -> Any: # noqa: ANN401 val = obj.__getattribute__(path[0]) if len(path) == 1: return val - return getattr(path[1:], val) + return _getattr(path[1:], val) diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index ccae6a53cc..1d3f9efebf 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -14,6 +14,7 @@ import plotly.graph_objects as go from ttsim import main +from ttsim.arg_templates import output from ttsim.interface_dag import load_interface_functions_and_inputs from ttsim.interface_dag_elements.interface_node_objects import ( FailOrWarnFunction, @@ -104,13 +105,11 @@ def plot_tt_dag( The figure. """ environment = main( - inputs={ - "date_str": date_str, - "orig_policy_objects__root": root, - "backend": "numpy", - }, - output_names=["policy_environment"], - )["policy_environment"] + date_str=date_str, + orig_policy_objects={"root": root}, + backend="numpy", + output=output.Name("policy_environment"), + ) if node_selector: qname_node_selector = _QNameNodeSelector( @@ -203,14 +202,12 @@ def _get_tt_dag_with_node_metadata( ] tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" env = main( - inputs={ - "policy_environment": environment, - "labels__processed_data_columns": qnames_policy_inputs, - "targets__qname": qnames_to_plot, - "backend": "numpy", - }, - output_names=[tgt], - )[tgt] + policy_environment=environment, + labels={"processed_data_columns": qnames_policy_inputs}, + targets={"qname": qnames_to_plot}, + backend="numpy", + output=output.Name(tgt), + ) all_nodes = { qn: dummy_callable(n) if not callable(n) else n for qn, n in env.items() diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index 2a4d38e13f..fc2b89bb7b 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -10,7 +10,7 @@ import pandas as pd import yaml -from ttsim import main, merge_trees +from ttsim import main, merge_trees, output from ttsim.interface_dag_elements.data_converters import ( nested_data_to_df_with_nested_columns, ) @@ -44,14 +44,12 @@ def cached_policy_environment( backend: Literal["numpy", "jax"], ) -> NestedPolicyEnvironment: return main( - inputs={ - "date": date, - "orig_policy_objects__root": root, - "backend": backend, - "include_fail_and_warn_nodes": False, - }, - output_names=["policy_environment"], - )["policy_environment"] + date=date, + orig_policy_objects={"root": root}, + backend=backend, + fail_and_warn=False, + output=output.Name("policy_environment"), + ) class PolicyTest: @@ -96,16 +94,14 @@ def execute_test( if test.target_structure: result_df = main( - inputs={ - "input_data__tree": test.input_tree, - "policy_environment": environment, - "targets__tree": test.target_structure, - "rounding": True, - "backend": backend, - "include_fail_and_warn_nodes": False, - }, - output_names=["results__df_with_nested_columns"], - )["results__df_with_nested_columns"] + input_data={"tree": test.input_tree}, + policy_environment=environment, + targets={"tree": test.target_structure}, + rounding=True, + backend=backend, + fail_and_warn=False, + output=output.Name("results__df_with_nested_columns"), + ) if test.expected_output_tree: expected_df = nested_data_to_df_with_nested_columns( @@ -241,27 +237,23 @@ def check_env_completeness( ], ) -> None: environment = main( - inputs={ - "date": date, - "backend": "numpy", - **orig_policy_objects, - }, - output_names=["policy_environment"], - )["policy_environment"] + date=date, + backend="numpy", + output=output.Name("policy_environment"), + orig_policy_objects=orig_policy_objects, + ) qname_environment = dt.flatten_to_qnames(environment) qnames_policy_inputs = [ k for k, v in qname_environment.items() if isinstance(v, PolicyInput) ] tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" qname_env_with_derived_functions = main( - inputs={ - "policy_environment": environment, - "labels__processed_data_columns": qnames_policy_inputs, - "targets__qname": list(qname_environment), - "backend": "numpy", - }, - output_names=[tgt], - )[tgt] + policy_environment=environment, + labels={"processed_data_columns": qnames_policy_inputs}, + targets={"qname": list(qname_environment)}, + backend="numpy", + output=output.Name(tgt), + ) all_nodes = { qn: dummy_callable(n) if not callable(n) else n for qn, n in qname_env_with_derived_functions.items() diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 151e164d22..1224e4e8f9 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -8,6 +8,7 @@ from ttsim import ( main, + output, ) from ttsim.interface_dag_elements.data_converters import ( df_with_mapped_columns_to_nested_data, @@ -220,15 +221,13 @@ def test_nested_data_to_dataframe( backend, ): results__tree = main( - inputs={ - "input_data__tree": minimal_data_tree, - "policy_environment": environment, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) result_df = nested_data_to_df_with_mapped_columns( nested_data_to_convert=results__tree, nested_outputs_df_column_names=targets__tree, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 646c00ab3b..e46a34bbe4 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -11,7 +11,7 @@ import pandas as pd import pytest -from ttsim import main +from ttsim import main, output from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -129,13 +129,11 @@ def minimal_input_data(): def mettsim_environment(backend) -> NestedPolicyEnvironment: return main( - inputs={ - "orig_policy_objects__root": Path(__file__).parent.parent / "mettsim", - "date": datetime.date(2025, 1, 1), - "backend": backend, - }, - output_names=["policy_environment"], - )["policy_environment"] + orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, + date=datetime.date(2025, 1, 1), + backend=backend, + output=output.Name("policy_environment"), + ) def some_x(x): @@ -538,15 +536,13 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( backend, ): results__tree = main( - inputs={ - "input_data__tree": minimal_data_tree, - "policy_environment": environment, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) with pytest.raises( ValueError, match="are not mapped to a column name", @@ -664,15 +660,13 @@ def test_fail_if_input_data_tree_is_invalid_via_main(backend): match="The input data must contain the `p_id` column.", ): main( - inputs={ - "input_data__tree": data, - "policy_environment": {}, - "targets__tree": {}, - "rounding": False, - "backend": backend, - }, - output_names=["fail_if__input_data_tree_is_invalid"], - )["fail_if__input_data_tree_is_invalid"] + input_data={"tree": data}, + policy_environment={}, + targets={"tree": {}}, + rounding=False, + backend=backend, + output=output.Name("fail_if__input_data_tree_is_invalid"), + ) @pytest.mark.parametrize( @@ -777,14 +771,12 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( environment["backend"] = backend environment["xnp"] = xnp actual = main( - inputs={ - "input_data__tree": minimal_data_tree, - "policy_environment": environment, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["processed_data", "results__tree"], + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Names(["processed_data", "results__tree"]), ) with pytest.raises(TypeError, match=match): non_convertible_objects_in_results_tree( @@ -821,14 +813,12 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt environment["backend"] = backend environment["xnp"] = xnp actual = main( - inputs={ - "input_data__tree": minimal_data_tree, - "policy_environment": environment, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["processed_data", "results__tree"], + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Names(["processed_data", "results__tree"]), ) with pytest.raises(ValueError, match=match): non_convertible_objects_in_results_tree( @@ -855,15 +845,13 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): match="The input data must contain the `p_id` column.", ): main( - inputs={ - "input_data__tree": data, - "policy_environment": {}, - "targets__tree": {}, - "rounding": False, - "backend": backend, - }, - output_names=["fail_if__input_data_tree_is_invalid"], - )["fail_if__input_data_tree_is_invalid"] + input_data={"tree": data}, + policy_environment={}, + targets={"tree": {}}, + rounding=False, + backend=backend, + output=output.Name("fail_if__input_data_tree_is_invalid"), + ) def test_fail_if_p_id_is_not_unique(xnp): @@ -885,15 +873,13 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): match="The following `p_id`s are not unique in the input data", ): main( - inputs={ - "input_data__tree": data, - "policy_environment": {}, - "targets__tree": {}, - "rounding": False, - "backend": backend, - }, - output_names=["fail_if__input_data_tree_is_invalid"], - )["fail_if__input_data_tree_is_invalid"] + input_data={"tree": data}, + policy_environment={}, + targets={"tree": {}}, + rounding=False, + backend=backend, + output=output.Name("fail_if__input_data_tree_is_invalid"), + ) def test_fail_if_root_nodes_are_missing_via_main(minimal_input_data, backend): @@ -913,14 +899,12 @@ def c(b): match="The following data columns are missing", ): main( - inputs={ - "input_data__tree": minimal_input_data, - "policy_environment": policy_environment, - "targets__tree": {"c": None}, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree", "fail_if__root_nodes_are_missing"], + input_data={"tree": minimal_input_data}, + policy_environment=policy_environment, + targets={"tree": {"c": None}}, + rounding=False, + backend=backend, + output=output.Names(["results__tree", "fail_if__root_nodes_are_missing"]), ) @@ -962,16 +946,14 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( match="The following targets have no corresponding function", ): main( - inputs={ - "input_data__tree": minimal_input_data, - "policy_environment": {}, - "targets__tree": {"unknown_target": None}, - "rounding": False, - "backend": backend, - }, - output_names=[ + input_data={"tree": minimal_input_data}, + policy_environment={}, + targets={"tree": {"unknown_target": None}}, + rounding=False, + backend=backend, + output=output.Name( "fail_if__targets_are_not_in_specialized_environment_or_data" - ], + ), ) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index 01e1e3a68d..c7b9b62e66 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -7,7 +7,7 @@ import numpy import pytest -from ttsim import main +from ttsim import main, output from ttsim.plot_dag import ( plot_tt_dag, ) @@ -39,28 +39,27 @@ def get_orig_mettsim_objects() -> dict[ str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs ]: - return main( + out = main( orig_policy_objects={"root": METTSIM_ROOT}, - output_names=[ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ], + output=output.Names( + [ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ] + ), ) + return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} def dates_in_orig_mettsim_objects() -> list[datetime.date]: orig_objects = get_orig_mettsim_objects() start_dates = { v.start_date - for v in orig_objects[ - "orig_policy_objects__column_objects_and_param_functions" - ].values() + for v in orig_objects["column_objects_and_param_functions"].values() } end_dates = { v.end_date + timedelta(days=1) - for v in orig_objects[ - "orig_policy_objects__column_objects_and_param_functions" - ].values() + for v in orig_objects["column_objects_and_param_functions"].values() } return sorted(start_dates | end_dates) diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index 74768c1b85..8de1c436a7 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import main +from ttsim import main, output from ttsim.interface_dag_elements.orig_policy_objects import ( column_objects_and_param_functions, ) @@ -78,30 +78,20 @@ def test_add_jahresanfang(xnp): def test_input_is_recognized_as_potential_group_id(backend): - assert ( - "kin" - in main( - inputs={ - "orig_policy_objects__root": METTSIM_ROOT, - "date": datetime.date(2020, 1, 1), - "backend": backend, - }, - output_names=["labels__grouping_levels"], - )["labels__grouping_levels"] + assert "kin" in main( + orig_policy_objects={"root": METTSIM_ROOT}, + date=datetime.date(2020, 1, 1), + backend=backend, + output=output.Name("labels__grouping_levels"), ) def test_p_id_not_recognized_as_potential_group_id(backend): - assert ( - "p" - not in main( - inputs={ - "orig_policy_objects__root": METTSIM_ROOT, - "date": datetime.date(2020, 1, 1), - "backend": backend, - }, - output_names=["labels__grouping_levels"], - )["labels__grouping_levels"] + assert "p" not in main( + orig_policy_objects={"root": METTSIM_ROOT}, + date=datetime.date(2020, 1, 1), + backend=backend, + output=output.Name("labels__grouping_levels"), ) diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 5fc073cd19..e907607ef3 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import main, merge_trees +from ttsim import main, merge_trees, output from ttsim.interface_dag_elements.specialized_environment import ( with_partialled_params_and_scalars, with_processed_params_and_scalars, @@ -399,15 +399,13 @@ def test_create_agg_by_group_functions( policy_environment["backend"] = backend policy_environment["num_segments"] = len(input_data__tree["p_id"]) main( - inputs={ - "policy_environment": policy_environment, - "input_data__tree": input_data__tree, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + policy_environment=policy_environment, + input_data={"tree": input_data__tree}, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) def test_output_is_tree(minimal_input_data, backend, xnp): @@ -417,15 +415,13 @@ def test_output_is_tree(minimal_input_data, backend, xnp): } out = main( - inputs={ - "input_data__tree": minimal_input_data, - "policy_environment": policy_environment, - "targets__tree": {"module": {"some_func": None}}, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + policy_environment=policy_environment, + input_data={"tree": minimal_input_data}, + targets={"tree": {"module": {"some_func": None}}}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) assert isinstance(out, dict) assert "some_func" in out["module"] @@ -451,15 +447,13 @@ def test_params_target_is_allowed(minimal_input_data): } out = main( - inputs={ - "input_data__tree": minimal_input_data, - "policy_environment": policy_environment, - "targets__tree": {"some_param": None, "module": {"some_func": None}}, - "rounding": False, - "backend": "numpy", - }, - output_names=["results__tree"], - )["results__tree"] + policy_environment=policy_environment, + input_data={"tree": minimal_input_data}, + targets={"tree": {"some_param": None, "module": {"some_func": None}}}, + rounding=False, + backend="numpy", + output=output.Name("results__tree"), + ) assert isinstance(out, dict) assert "some_param" in out @@ -484,15 +478,13 @@ def b(a: int) -> int: "b": b, } results__tree = main( - inputs={ - "input_data__tree": minimal_input_data, - "policy_environment": policy_environment, - "targets__tree": {"b": None}, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + policy_environment=policy_environment, + input_data={"tree": minimal_input_data}, + targets={"tree": {"b": None}}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) numpy.testing.assert_array_almost_equal( results__tree["b"], xnp.array(minimal_input_data["p_id"]), @@ -553,15 +545,13 @@ def test_user_provided_aggregate_by_group_specs(backend): expected = pd.Series([200, 200, 100], index=pd.Index(data["p_id"], name="p_id")) actual = main( - inputs={ - "input_data__tree": data, - "policy_environment": policy_environment, - "targets__tree": {"module_name": {"betrag_m_fam": None}}, - "rounding": False, - "backend": backend, - }, - output_names=["results__df_with_nested_columns"], - )["results__df_with_nested_columns"] + policy_environment=policy_environment, + input_data={"tree": data}, + targets={"tree": {"module_name": {"betrag_m_fam": None}}}, + rounding=False, + backend=backend, + output=output.Name("results__df_with_nested_columns"), + ) pd.testing.assert_series_equal( actual[("module_name", "betrag_m_fam")], @@ -600,15 +590,13 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: } actual = main( - inputs={ - "input_data__tree": data, - "policy_environment": policy_environment, - "targets__tree": {"module_name": {"betrag_m_double_fam": None}}, - "rounding": False, - "backend": backend, - }, - output_names=["results__df_with_nested_columns"], - )["results__df_with_nested_columns"] + policy_environment=policy_environment, + input_data={"tree": data}, + targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, + rounding=False, + backend=backend, + output=output.Name("results__df_with_nested_columns"), + ) pd.testing.assert_series_equal( actual[("module_name", "betrag_m_double_fam")], @@ -653,15 +641,13 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: } actual = main( - inputs={ - "input_data__tree": data, - "policy_environment": policy_environment, - "targets__tree": {"module_name": {"max_betrag_double_y_fam": None}}, - "rounding": False, - "backend": backend, - }, - output_names=["results__df_with_nested_columns"], - )["results__df_with_nested_columns"] + policy_environment=policy_environment, + input_data={"tree": data}, + targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, + rounding=False, + backend=backend, + output=output.Name("results__df_with_nested_columns"), + ) pd.testing.assert_series_equal( actual[("module_name", "max_betrag_double_y_fam")], @@ -743,15 +729,13 @@ def source() -> int: ) actual = main( - inputs={ - "input_data__tree": minimal_input_data_shared_fam, - "policy_environment": policy_environment, - "targets__tree": target_tree, - "rounding": False, - "backend": backend, - }, - output_names=["results__df_with_nested_columns"], - )["results__df_with_nested_columns"] + input_data={"tree": minimal_input_data_shared_fam}, + policy_environment=policy_environment, + targets={"tree": target_tree}, + rounding=False, + backend=backend, + output=output.Name("results__df_with_nested_columns"), + ) pd.testing.assert_series_equal( actual[("module", next(iter(target_tree["module"].keys())))], @@ -858,18 +842,13 @@ def test_can_override_ttsim_objects_with_data( backend, ): actual = main( - inputs={ - "input_data__tree": { - **minimal_input_data, - **overriding_data, - }, - "policy_environment": nested_policy_environment, - "targets__tree": targets__tree, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": {**minimal_input_data, **overriding_data}}, + policy_environment=nested_policy_environment, + targets={"tree": targets__tree}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) flat_actual = dt.flatten_to_tree_paths(actual) flat_expected = dt.flatten_to_tree_paths(expected_output) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index ee68815c3d..16678d1962 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -4,7 +4,7 @@ import numpy -from ttsim import main +from ttsim import main, output from ttsim.testing_utils import ( load_policy_test_data, ) @@ -79,95 +79,91 @@ def z(a__x: int, a__y: float) -> float: def test_template_all_outputs_no_inputs(backend): actual = main( - inputs={ - "policy_environment": { - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, + policy_environment={ + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, }, - "rounding": True, - "date_str": "2025-01-01", - "backend": backend, }, - output_names=["templates__input_data_dtypes"], - )["templates__input_data_dtypes"] + rounding=True, + date_str="2025-01-01", + backend=backend, + output=output.Name("templates__input_data_dtypes"), + ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} def test_template_all_outputs_with_inputs(backend): actual = main( - inputs={ - "input_data__tree": { + input_data={ + "tree": { "p_id": [4, 5, 6], "a": { "inp2": [1, 2, 3], }, "inp1": [0, 1, 2], + } + }, + policy_environment={ + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, }, - "policy_environment": { - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - "rounding": True, - "date_str": "2025-01-01", - "backend": backend, }, - output_names=["templates__input_data_dtypes"], - )["templates__input_data_dtypes"] + rounding=True, + date_str="2025-01-01", + backend=backend, + output=output.Name("templates__input_data_dtypes"), + ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} def test_template_output_y_no_inputs(backend): actual = main( - inputs={ - "targets__tree": {"a": {"y": None}}, - "policy_environment": { - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, + targets={"tree": {"a": {"y": None}}}, + policy_environment={ + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, }, - "rounding": True, - "date_str": "2025-01-01", - "backend": backend, }, - output_names=["templates__input_data_dtypes"], - )["templates__input_data_dtypes"] + rounding=True, + date_str="2025-01-01", + backend=backend, + output=output.Name("templates__input_data_dtypes"), + ) assert actual == {"a": {"inp2": "FloatColumn"}} def test_template_output_x_with_inputs(backend): actual = main( - inputs={ - "input_data__tree": { + input_data={ + "tree": { "p_id": [4, 5, 6], "a": { "inp2": [1, 2, 3], }, "inp1": [0, 1, 2], + } + }, + targets={"tree": {"a": {"x": None}}}, + policy_environment={ + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, }, - "targets__tree": {"a": {"x": None}}, - "policy_environment": { - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - "rounding": True, - "date_str": "2025-01-01", - "backend": backend, }, - output_names=["templates__input_data_dtypes"], - )["templates__input_data_dtypes"] + rounding=True, + date_str="2025-01-01", + backend=backend, + output=output.Name("templates__input_data_dtypes"), + ) assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index f5ad7a77cb..8b9e0b5c0d 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -4,7 +4,7 @@ import pandas as pd -from ttsim import main +from ttsim import main, output from ttsim.interface_dag_elements import warn_if from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -23,20 +23,20 @@ def test_warn_if_functions_and_data_columns_overlap(backend): with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") main( - inputs={ - "input_data__tree": { + input_data={ + "tree": { "p_id": pd.Series([0]), "some_func": pd.Series([1]), - }, - "policy_environment": { - "some_func": some_func, - "some_target": another_func, - }, - "targets__tree": {"some_target": None}, - "rounding": False, - "backend": backend, + } }, - output_names=["warn_if__functions_and_data_columns_overlap"], + policy_environment={ + "some_func": some_func, + "some_target": another_func, + }, + targets={"tree": {"some_target": None}}, + rounding=False, + backend=backend, + output=output.Name("warn_if__functions_and_data_columns_overlap"), ) # Check that we got exactly one warning assert len(w) == 1 @@ -51,15 +51,15 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) category=warn_if.FunctionsAndDataColumnsOverlapWarning, ) main( - inputs={ - "input_data__tree": { + input_data={ + "tree": { "p_id": pd.Series([0]), "x": pd.Series([1]), - }, - "policy_environment": {"some_func": some_func}, - "targets__tree": {"some_func": None}, - "rounding": False, - "backend": backend, + } }, - output_names=["warn_if__functions_and_data_columns_overlap"], + policy_environment={"some_func": some_func}, + targets={"tree": {"some_func": None}}, + rounding=False, + backend=backend, + output=output.Name("warn_if__functions_and_data_columns_overlap"), ) diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index 146980efb3..bb2451078c 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -4,7 +4,7 @@ import pandas as pd import pytest -from ttsim import input_data, main +from ttsim import input_data, main, output DF_WITH_NESTED_COLUMNS = pd.DataFrame( { @@ -96,11 +96,11 @@ def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): rounding=False, orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend=backend, - output_names=["results__df_with_mapper"], + output=output.Name("results__df_with_mapper"), ) pd.testing.assert_frame_equal( EXPECTED_RESULTS, - result["results__df_with_mapper"], + result, check_dtype=False, check_index_type=False, ) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 8d69a01282..c111ce8467 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -5,12 +5,13 @@ import dags import pytest +from ttsim import arg_templates from ttsim.interface_dag import ( _fail_if_requested_nodes_cannot_be_found, _harmonize_inputs, + _harmonize_outputs, load_interface_functions_and_inputs, ) -from ttsim.interface_dag_elements import _InterfaceDAGElements from ttsim.interface_dag_elements.fail_if import format_list_linewise from ttsim.interface_dag_elements.interface_node_objects import ( InterfaceFunctionVariant, @@ -124,29 +125,6 @@ def e(c: int, d: float) -> float: return c + d -def test_harmonize_inputs_interface_dag_elements_input(): - x = _InterfaceDAGElements() - x.input_data.df_and_mapper.df = {"cannot use df because comparison fails"} - x.input_data.df_and_mapper.mapper = {"c": "a", "d": "b", "p_id": "p_id"} - x.targets.tree = {"e": "f"} - x.date = "2025-01-01" - x.orig_policy_objects.column_objects_and_param_functions = {("x.py", "e"): e} - x.orig_policy_objects.param_specs = {} - - harmonized = _harmonize_inputs(inputs=x) - - assert harmonized == { - "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, - "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - "targets__tree": {"e": "f"}, - "date": "2025-01-01", - "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, - "orig_policy_objects__param_specs": {}, - "backend": "numpy", - "rounding": True, - } - - def test_harmonize_inputs_qname_input(): x = { "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, @@ -227,3 +205,26 @@ def test_input_dependent_interface_functions_with_conflicting_variants(): some_input_dependent_interface_function_with_conflicting_variants.resolve_to_static_interface_function( ["input_1", "n1__input_2"] ) + + +@pytest.mark.parametrize( + ("output", "expected"), + [ + (arg_templates.output.Name("a__b"), {"name": "a__b", "names": ["a__b"]}), + (arg_templates.output.Name(("a", "b")), {"name": "a__b", "names": ["a__b"]}), + ( + arg_templates.output.Name({"a": {"b": None}}), + {"name": "a__b", "names": ["a__b"]}, + ), + (arg_templates.output.Names(["a__b"]), {"name": None, "names": ["a__b"]}), + (arg_templates.output.Names([("a", "b")]), {"name": None, "names": ["a__b"]}), + ( + arg_templates.output.Names({"a": {"b": None}}), + {"name": None, "names": ["a__b"]}, + ), + ], +) +def test_harmonize_outputs(output, expected): + harmonized = _harmonize_outputs(output=output) + + assert harmonized == expected diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 3e43aaa851..3d43eee28d 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -4,6 +4,7 @@ import pytest +from ttsim import output from ttsim.interface_dag import main from ttsim.plot_dag import ( _get_tt_dag_with_node_metadata, @@ -239,13 +240,11 @@ def test_plot_full_interface_dag(include_fail_and_warn_nodes): ) def test_node_selector(node_selector, expected_nodes): environment = main( - inputs={ - "date_str": "2025-01-01", - "orig_policy_objects__root": Path(__file__).parent / "mettsim", - "backend": "numpy", - }, - output_names=["policy_environment"], - )["policy_environment"] + date_str="2025-01-01", + orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, + backend="numpy", + output=output.Name("policy_environment"), + ) dag = _get_tt_dag_with_node_metadata( environment=environment, node_selector=node_selector, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index b89384c9a8..3f66321758 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -5,7 +5,7 @@ import pytest from pandas._testing import assert_series_equal -from ttsim import main +from ttsim import main, output from ttsim.tt_dag_elements import ( RoundingSpec, policy_function, @@ -109,15 +109,13 @@ def test_func(x): policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} results__tree = main( - inputs={ - "input_data__tree": input_data__tree, - "policy_environment": policy_environment, - "targets__tree": {"namespace": {"test_func": None}}, - "rounding": True, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": input_data__tree}, + policy_environment=policy_environment, + targets={"tree": {"namespace": {"test_func": None}}}, + rounding=True, + backend=backend, + output=output.Name("results__tree"), + ) assert_series_equal( pd.Series(results__tree["namespace"]["test_func"]), pd.Series(exp_output), @@ -146,15 +144,13 @@ def test_func_m(x): } results__tree = main( - inputs={ - "input_data__tree": data, - "policy_environment": policy_environment, - "targets__tree": {"test_func_y": None}, - "rounding": True, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": data}, + policy_environment=policy_environment, + targets={"tree": {"test_func_y": None}}, + rounding=True, + backend=backend, + output=output.Name("results__tree"), + ) assert_series_equal( pd.Series(results__tree["test_func_y"]), pd.Series([12.0, 12.0]), @@ -187,15 +183,13 @@ def test_func(x): } results__tree = main( - inputs={ - "input_data__tree": data, - "policy_environment": policy_environment, - "targets__tree": {"test_func": None}, - "rounding": False, - "backend": backend, - }, - output_names=["results__tree"], - )["results__tree"] + input_data={"tree": data}, + policy_environment=policy_environment, + targets={"tree": {"test_func": None}}, + rounding=False, + backend=backend, + output=output.Name("results__tree"), + ) assert_series_equal( pd.Series(results__tree["test_func"]), pd.Series(input_values_exp_output), From 152909f8620ab89b4dfcd9f5d127287b26b115c1 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Fri, 27 Jun 2025 13:12:54 +0200 Subject: [PATCH 046/109] Update dags branch after merge over there. --- pixi.lock | 90 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/pixi.lock b/pixi.lock index 1c1c38880c..ecee049050 100644 --- a/pixi.lock +++ b/pixi.lock @@ -264,7 +264,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -273,7 +273,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -502,7 +502,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -511,7 +511,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -740,7 +740,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -749,7 +749,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -985,7 +985,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -995,7 +995,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ mypy: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1260,7 +1260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -1274,7 +1274,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1503,7 +1503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -1517,7 +1517,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1746,7 +1746,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -1760,7 +1760,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -1996,7 +1996,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -2011,7 +2011,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -2276,7 +2276,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -2285,7 +2285,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2514,7 +2514,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -2523,7 +2523,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2752,7 +2752,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -2761,7 +2761,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -2997,7 +2997,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -3007,7 +3007,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ py312: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -3272,7 +3272,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl @@ -3281,7 +3281,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3510,7 +3510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl @@ -3519,7 +3519,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3748,7 +3748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl @@ -3757,7 +3757,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -3993,7 +3993,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl @@ -4003,7 +4003,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ py312-jax: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -4279,7 +4279,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4289,7 +4289,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4529,7 +4529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4539,7 +4539,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -4779,7 +4779,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl @@ -4789,7 +4789,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda @@ -5025,7 +5025,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 @@ -5041,7 +5041,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: . + - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -6094,9 +6094,9 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=update-type-hints#8b3a4bf0236a0f2594c8fc106c5d36e2c27da617 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 name: dags - version: 0.3.1.dev19+g8b3a4bf + version: 0.3.1.dev10+ga3c665e requires_dist: - flatten-dict - networkx @@ -6620,10 +6620,10 @@ packages: purls: [] size: 21903 timestamp: 1694400856979 -- pypi: . +- pypi: ./ name: gettsim - version: 0.7.1.dev137+gb255f8af0 - sha256: ef42085575c8d56d2dae9c7fae1deabef1e96d5806b5760f6f72bc560791ea6a + version: 0.7.1.dev133+gedf184a0.d20250627 + sha256: f78591f5fd720b7e572f4607f22427fea04c25120da6000a9244fc956578a297 requires_dist: - ipywidgets - networkx diff --git a/pyproject.toml b/pyproject.toml index e4b8784508..7856626b31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -128,7 +128,7 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "update-type-hints"} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} jaxtyping = "*" pdbp = "*" From 786630644a66eb2583a0c55f581bc5697d0243f1 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 30 Jun 2025 11:39:22 +0200 Subject: [PATCH 047/109] Make date input dependent, improve logic of `InputDependentInterfaceFunction`s (#985) ### What problem do you want to solve? Closes #967 Seemed like a small change but I needed to adjust our `InputDependentInterfaceFunction` infrastructure to allow for `include_if_any_input_present` and `include_if_all_input_present` keywords (similar to the fail if functions). While doing this, I switched to the `leaf_name` logic we discussed earlier. ### Todo - [x] Check that plotting works - [x] Fix tests --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- pixi.lock | 5095 +++++++++-------- sandbox/plots.ipynb | 37 + src/ttsim/interface_dag.py | 133 +- .../interface_dag_elements/data_converters.py | 73 +- src/ttsim/interface_dag_elements/dates.py | 53 + .../interface_dag_elements/input_data.py | 108 +- .../interface_node_objects.py | 125 +- .../policy_environment.py | 18 +- src/ttsim/interface_dag_elements/results.py | 8 +- src/ttsim/interface_dag_elements/typing.py | 12 +- src/ttsim/plot_dag.py | 72 +- .../test_data_converters.py | 45 +- tests/ttsim/test_interface_dag.py | 170 +- tests/ttsim/test_plot_dag.py | 2 +- 14 files changed, 3115 insertions(+), 2836 deletions(-) create mode 100644 sandbox/plots.ipynb diff --git a/pixi.lock b/pixi.lock index ecee049050..7d8b48ea27 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,10 +9,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -25,19 +25,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -76,14 +76,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -91,51 +91,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -154,58 +154,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -219,23 +219,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -243,7 +242,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -261,25 +260,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -290,19 +293,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -327,7 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -340,14 +343,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -355,24 +358,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -380,24 +383,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -408,59 +411,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -474,23 +477,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -499,25 +501,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -528,19 +534,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -565,7 +571,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -578,14 +584,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -593,24 +599,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -618,24 +624,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -646,59 +652,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -712,23 +718,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -737,24 +742,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -764,20 +773,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -798,9 +807,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -811,7 +820,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -819,7 +828,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -827,41 +836,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -878,40 +887,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -920,15 +929,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -942,29 +951,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -982,20 +990,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . mypy: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1005,10 +1013,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1021,19 +1029,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -1059,7 +1067,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -1072,14 +1080,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1087,51 +1095,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -1150,58 +1158,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1215,23 +1223,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -1239,7 +1246,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -1257,30 +1264,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1291,19 +1302,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1328,7 +1339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -1341,14 +1352,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1356,24 +1367,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -1381,24 +1392,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1409,59 +1420,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1475,23 +1486,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1500,30 +1510,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1534,19 +1548,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1571,7 +1585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -1584,14 +1598,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1599,24 +1613,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -1624,24 +1638,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1652,59 +1666,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1718,23 +1732,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1743,29 +1756,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1775,20 +1792,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1809,9 +1826,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -1822,7 +1839,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -1830,7 +1847,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1838,41 +1855,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -1889,40 +1906,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -1931,15 +1948,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1953,29 +1970,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1993,25 +2009,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -2021,10 +2037,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2037,19 +2053,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -2075,7 +2091,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -2088,14 +2104,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2103,51 +2119,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -2166,58 +2182,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py311h519dc76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2231,23 +2247,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -2255,7 +2270,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -2273,25 +2288,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2302,19 +2321,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py311ha3cf9ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2339,7 +2358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -2352,14 +2371,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2367,24 +2386,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -2392,24 +2411,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2420,59 +2439,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py311h9224382_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2486,23 +2505,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2511,25 +2529,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2540,19 +2562,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2577,7 +2599,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -2590,14 +2612,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2605,24 +2627,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -2630,24 +2652,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2658,59 +2680,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py311h4379d9d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2724,23 +2746,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2749,24 +2770,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2776,20 +2801,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2810,9 +2835,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -2823,7 +2848,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -2831,7 +2856,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2839,41 +2864,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -2890,40 +2915,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py311hc907d76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -2932,15 +2957,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2954,29 +2979,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2994,20 +3018,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . py312: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -3017,10 +3041,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3033,19 +3057,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -3071,7 +3095,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -3084,14 +3108,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3099,51 +3123,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -3162,58 +3186,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3227,23 +3251,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -3251,7 +3274,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -3269,25 +3292,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3298,19 +3325,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3335,7 +3362,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -3348,14 +3375,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3363,24 +3390,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -3388,24 +3415,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3416,59 +3443,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3482,23 +3509,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3507,25 +3533,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3536,19 +3566,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3573,7 +3603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -3586,14 +3616,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3601,24 +3631,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -3626,24 +3656,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3654,59 +3684,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3720,23 +3750,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3745,24 +3774,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3772,20 +3805,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3806,9 +3839,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -3819,7 +3852,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -3827,7 +3860,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3835,41 +3868,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -3886,40 +3919,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -3928,15 +3961,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3950,29 +3983,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3990,20 +4022,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . py312-jax: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -4013,10 +4045,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4029,20 +4061,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -4068,7 +4100,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -4081,72 +4113,72 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -4166,61 +4198,61 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4234,23 +4266,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -4258,7 +4289,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -4276,26 +4307,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4306,20 +4341,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4344,7 +4379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -4357,42 +4392,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -4400,27 +4435,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4432,62 +4467,62 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4501,23 +4536,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4526,26 +4560,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4556,20 +4594,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4594,7 +4632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -4607,42 +4645,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -4650,27 +4688,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4682,62 +4720,62 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4751,23 +4789,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4776,25 +4813,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4804,20 +4845,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4838,9 +4879,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -4851,7 +4892,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -4859,7 +4900,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4867,41 +4908,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -4918,40 +4959,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -4960,15 +5001,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4982,29 +5023,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5022,26 +5062,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - - pypi: ./ + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: . packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -5079,9 +5119,9 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 -- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - sha256: 63e532087119112c81d81c067e00d1fd49ff1b842ffea4469b78b505be63c042 - md5: 11539f9e49efaa281da735ded100b152 +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + sha256: 824a7349bbb2ef8014077ddcfd418065a0a4de873ada1bd1b8826e20bed18c15 + md5: eeb18017386c92765ad8ffa986c3f4ce depends: - __unix - hicolor-icon-theme @@ -5089,8 +5129,8 @@ packages: license: LGPL-3.0-or-later OR CC-BY-SA-3.0 license_family: LGPL purls: [] - size: 610380 - timestamp: 1741999835753 + size: 619606 + timestamp: 1750236493212 - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea md5: 1fd9696649f65fd6611fcdb4ffec738a @@ -5132,9 +5172,9 @@ packages: - pkg:pypi/appnope?source=hash-mapping size: 10076 timestamp: 1733332433806 -- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f - md5: a7ee488b71c30ada51c48468337b85ba +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad + md5: 8ac12aff0860280ee0cff7fa2cf63f3b depends: - argon2-cffi-bindings - python >=3.9 @@ -5144,9 +5184,9 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/argon2-cffi?source=hash-mapping - size: 18594 - timestamp: 1733311166338 + - pkg:pypi/argon2-cffi?source=compressed-mapping + size: 18715 + timestamp: 1749017288144 - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda sha256: d1af1fbcb698c2e07b0d1d2b98384dd6021fa55c8bcb920e3652e0b0c393881b md5: 18143eab7fcd6662c604b85850f0db1e @@ -5399,7 +5439,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=compressed-mapping + - pkg:pypi/babel?source=hash-mapping size: 6938256 timestamp: 1738490268466 - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda @@ -5439,9 +5479,9 @@ packages: purls: [] size: 4213 timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 - md5: d21daab070d76490cb39a8f1d1729d79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda + sha256: 4fab04fcc599853efb2904ea3f935942108613c7515f7dd57e7f034650738c52 + md5: 8565f7297b28af62e5de2d968ca32e31 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5449,16 +5489,16 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libbrotlicommon 1.1.0 hb9d3cd8_3 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 350367 - timestamp: 1725267768486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf + - pkg:pypi/brotli?source=compressed-mapping + size: 350166 + timestamp: 1749230304421 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 + md5: a32e0c069f6c3dcac635f7b0b0dac67e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5466,82 +5506,82 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libbrotlicommon 1.1.0 hb9d3cd8_3 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 - md5: d75f06ee06001794aa83a05e885f1520 + - pkg:pypi/brotli?source=compressed-mapping + size: 351721 + timestamp: 1749230265727 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda + sha256: 63f3771e23a1f3f9866ece0252586b5b57eefba8d83a2871a72c82716944cc7b + md5: 7259b2f4870cab602f1512562e5cbb30 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 h00291cd_2 + - libbrotlicommon 1.1.0 h6e16a3a_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 363793 - timestamp: 1725267947069 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 - md5: b95025822e43128835826ec0cc45a551 + size: 367210 + timestamp: 1749230581348 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 + md5: 11489c0fc22f550acf63da5e7ec7304d depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 h00291cd_2 + - libbrotlicommon 1.1.0 h6e16a3a_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 363178 - timestamp: 1725267893889 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad - md5: c8793a23206344faa25f4e0b5d0e7908 + size: 367262 + timestamp: 1749230495846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda + sha256: 7414997b02a5f07d0b089fb24f1e755347fd827fa5fd158681766fce9583dd9b + md5: ba41239b4753557a20cf2ac2cd4250c5 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + - libbrotlicommon 1.1.0 h5505292_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 339584 - timestamp: 1725268241628 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d + size: 338502 + timestamp: 1749230799184 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + sha256: 35df7079768b4c51764149c42b14ccc25c4415e4365ecc06c38f74562d9e4d16 + md5: c7c728df70dc05a443f1e337c28de22d depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + - libbrotlicommon 1.1.0 h5505292_3 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 - md5: a0ea2839841a06740a1c110ba3317b42 + - pkg:pypi/brotli?source=compressed-mapping + size: 339365 + timestamp: 1749230606596 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda + sha256: a602b15fe1b3a6b40aab7d99099a410b69ccad9bb273779531cef00fc52d762e + md5: 2d99144abeb3b6b65608fdd7810dbcbd depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -5549,16 +5589,16 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_2 + - libbrotlicommon 1.1.0 h2466b09_3 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 322114 - timestamp: 1725268368720 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c - md5: a99aec1ac46794a5fb1cd3cf5d2b6110 + - pkg:pypi/brotli?source=compressed-mapping + size: 321757 + timestamp: 1749231264056 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f + md5: a87a39f9eb9fd5f171b13d8c79f7a99a depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5566,13 +5606,13 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_2 + - libbrotlicommon 1.1.0 h2466b09_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 321874 - timestamp: 1725268491976 + size: 321941 + timestamp: 1749231054102 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -5647,24 +5687,24 @@ packages: purls: [] size: 179696 timestamp: 1744128058734 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 - md5: 23c7fd5062b48d8294fc7f61bf157fba +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 + md5: b01649832f7bc7ff94f8df8bd2ee6457 depends: - __win license: ISC purls: [] - size: 152945 - timestamp: 1745653639656 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac - md5: 95db94f75ba080a22eb623590993167b + size: 151351 + timestamp: 1749990170707 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 + md5: 72525f07d72806e3b639ad4504c30ce5 depends: - __unix license: ISC purls: [] - size: 152283 - timestamp: 1745653616541 + size: 151069 + timestamp: 1749990087500 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -5771,16 +5811,16 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c - md5: c33eeaaa33f45031be34cda513df39b6 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + sha256: d71c85835813072cd6d7ce4b24be34215cd90c104785b15a5d58f4cd0cb50778 + md5: 781d068df0cc2407d4db0ecfbb29225b depends: - python >=3.9 license: ISC purls: - pkg:pypi/certifi?source=hash-mapping - size: 157200 - timestamp: 1746569627830 + size: 155377 + timestamp: 1749972291158 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -5929,6 +5969,14 @@ packages: - pkg:pypi/charset-normalizer?source=hash-mapping size: 50481 timestamp: 1746214981991 +- pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + name: choreographer + version: 1.0.9 + sha256: b3277e30953843a83d3d730e49958a6be82013885d2a4f54b3950a3715191d7f + requires_dist: + - logistro>=1.0.11 + - simplejson>=3.19.3 + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -5952,9 +6000,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12103 timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda - sha256: dabff490f3a4a4beb70c16624766286aa47dfb7dec0275966498a0854951e754 - md5: e761745f85b5fc909aab137ff59bc9cb +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py311h2dc5d0c_0.conda + sha256: 09245391f91135f4eea87d64107e82d4fb4b7d4fbd6596ea6cc126645191220c + md5: f524bd18889f169f2fa8dc70df1c53c3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5965,11 +6013,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381652 - timestamp: 1747842278784 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - sha256: 783fc98faff93d840ee278e8f9f9288cb10baaa820f4ea84d085caaeef5c581b - md5: d0cfba188d8eba0c3676af3d88e3b832 + size: 383591 + timestamp: 1749833491301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + sha256: bef32c5830b7701705660ef18d5d6ad7c597ebab196954c012e8a1cb4af0d3bc + md5: 4c18b79fa2a3371557ed3663876e5dcc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5980,11 +6028,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 372130 - timestamp: 1747842174442 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda - sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b - md5: a232a2c290d493aec5c321d42e8bb5f3 + size: 371371 + timestamp: 1749833562595 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py311ha3cf9ac_0.conda + sha256: 0de23c66e7b1c98b77ea1386fcbdf886da18de6792d7ee8b411f65e083ddda67 + md5: 72fe7ebc78fc52de43832bed81cfa5e4 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -5994,11 +6042,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381834 - timestamp: 1747842238160 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - sha256: 01055509fdbf957da8101111f55d4ba4093d80ba41fa9db265918f83d74781c6 - md5: e2e4abc59d34ee3a3496e43fde06fe4a + size: 380820 + timestamp: 1749833536701 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda + sha256: f2483b4748c8037ef30b323d38e97050321557c1b2a51f0d9e2b6f0677d88183 + md5: 460f9c5cbe9b811198c8b48631bd01ba depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -6008,11 +6056,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 370818 - timestamp: 1747842400404 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda - sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 - md5: 3311b8464e609c253df8ed73b030a91b + size: 372323 + timestamp: 1749833457406 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py311h4921393_0.conda + sha256: 43c3fc41a6c790a4f88cc7f59358ecca06d1f7e32f75fcddfc3d4347403f058c + md5: d05861abb8d6097acd60e08d79cd1c4d depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6023,11 +6071,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381607 - timestamp: 1747842318714 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - sha256: 965ccddf2fad18d09e45406317e0ffc9edff585ecec573c514b88a0e42aae793 - md5: 969b54224937a2b948a395ab6c972339 + size: 380898 + timestamp: 1749833551848 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda + sha256: 0f8ed3cb0b702c6a9df9fafd31a45023c3c6ca1c66d85453cde7a0e2e5812c05 + md5: 738b5ae0d38352a804fba9750bca81a0 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6038,11 +6086,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 372341 - timestamp: 1747842541199 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda - sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 - md5: 11cfa5d9997512db18ba2eb46edcce37 + size: 373189 + timestamp: 1749833686158 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py311h5082efb_0.conda + sha256: 821c280024834cdf88038452e3c131140c9e8bc310617349c0deecffca2c2196 + md5: a12491bec053dd704f8e467127e20b6a depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -6054,11 +6102,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 407188 - timestamp: 1747842536793 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - sha256: 008dcd8dc25f8f8cd4f3c92f32638026acc8be3cef8f1b1f030a9bd99b60d451 - md5: f8cb7f4c4409b75b52935f914eeb091f + size: 407907 + timestamp: 1749833673698 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda + sha256: d8a7874de0cd78242cd24b592c41ca2fab7898eedf3b6aa9e7243027ee9aed22 + md5: 05437668629deb7fdb7af513d43249c0 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -6070,30 +6118,30 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 398869 - timestamp: 1747842451626 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda + size: 399371 + timestamp: 1749834041463 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda noarch: generic - sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 - md5: 451718359f1658c6819d8665f82585ab + sha256: ab70477f5cfb60961ba27d84a4c933a24705ac4b1736d8f3da14858e95bbfa7a + md5: 4666fd336f6d48d866a58490684704cd depends: - python >=3.11,<3.12.0a0 - python_abi * *_cp311 license: Python-2.0 purls: [] - size: 47661 - timestamp: 1744323121098 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + size: 47495 + timestamp: 1749048148121 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda noarch: generic - sha256: acb47715abf1cd8177a5c20f42a34555b5d9cebb68ff39a58706e84effe218e2 - md5: 7584a4b1e802afa25c89c0dcc72d0826 + sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a + md5: e5279009e7a7f7edd3cd2880c502b3cc depends: - python >=3.12,<3.13.0a0 - python_abi * *_cp312 license: Python-2.0 purls: [] - size: 45861 - timestamp: 1744323195619 + size: 45852 + timestamp: 1749047748072 - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 name: dags version: 0.3.1.dev10+ga3c665e @@ -6243,7 +6291,7 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/decorator?source=compressed-mapping + - pkg:pypi/decorator?source=hash-mapping size: 14129 timestamp: 1740385067843 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -6608,21 +6656,24 @@ packages: purls: [] size: 509570 timestamp: 1715783199780 -- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c - md5: 714d0882dc5e692ca4683d8e520f73c6 +- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 + md5: 49c36fcad2e9af6b91e91f2ce5be8ebd depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 license: LGPL-3.0-only - license_family: GPL + license_family: LGPL purls: [] - size: 21903 - timestamp: 1694400856979 -- pypi: ./ + size: 26238 + timestamp: 1750744808182 +- pypi: . name: gettsim - version: 0.7.1.dev133+gedf184a0.d20250627 + version: 0.7.1.dev156+g137c6180.d20250628 sha256: f78591f5fd720b7e572f4607f22427fea04c25120da6000a9244fc956578a297 requires_dist: - ipywidgets @@ -6683,40 +6734,43 @@ packages: - pkg:pypi/gprof2dot?source=hash-mapping size: 39376 timestamp: 1734700339768 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add - md5: f87c7b7c2cb45f323ffbce941c78ab7c +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + sha256: cac69f3ff7756912bbed4c28363de94f545856b35033c0b86193366b95f5317d + md5: 951ff8d9e5536896408e89d63230b8d5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 96855 - timestamp: 1711634169756 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a - md5: fc7124f86e1d359fc5d878accd9e814c + size: 98419 + timestamp: 1750079957535 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + sha256: 13d802efe1fcadc171a1e0f87b99accef290cd0190af5d25cb46acd5f111104a + md5: 4b0af0e3ba3b3bb8e28d009a8ed1ab35 depends: - - libcxx >=16 + - __osx >=10.13 + - libcxx >=18 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 84384 - timestamp: 1711634311095 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 - md5: 339991336eeddb70076d8ca826dac625 + size: 85046 + timestamp: 1750080155200 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + sha256: e1c431b66b0a632e8fcc2b886cccde4eb5ec5eb8a3d84e89b7639d603c174646 + md5: 64d15e1dfe86fa13cf0d519d1074dcd9 depends: - - libcxx >=16 + - __osx >=11.0 + - libcxx >=18 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 79774 - timestamp: 1711634444608 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f - md5: 3194499ee7d1a67404a87d0eefdd92c6 + size: 81566 + timestamp: 1750080158744 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + sha256: bcbcece7719f2a14ede6bfead8f5fdbb65ed102d47769c817b375e4e9d43be39 + md5: 692bc31c646f7e221af07ccc924e1ae4 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -6724,8 +6778,8 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 95406 - timestamp: 1711634622644 + size: 95862 + timestamp: 1750080330012 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda sha256: e6866409ba03df392ac5ec6f0d6ff9751a685ed917bfbcd8a73f550c5fe83c2b md5: df7835d2c73cd1889d377cfd6694ada4 @@ -7185,18 +7239,18 @@ packages: purls: [] size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - sha256: 02f47df6c6982b796aecb086b434627207e87c0a90a50226f11f2cc99c089770 - md5: 8d5b9b702810fb3054d52ba146023bc3 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55 + md5: 84463b10c1eb198541cd54125c7efe90 depends: - python >=3.9 - ukkonen license: MIT license_family: MIT purls: - - pkg:pypi/identify?source=hash-mapping - size: 79057 - timestamp: 1745098917031 + - pkg:pypi/identify?source=compressed-mapping + size: 78926 + timestamp: 1748049754416 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -7227,8 +7281,9 @@ packages: - zipp >=3.20 - python license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=compressed-mapping + - pkg:pypi/importlib-metadata?source=hash-mapping size: 34641 timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -7337,9 +7392,9 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - sha256: 83e4cfdcf09c1273ec31548aacf7f81076dc4245548e78ac3b47d1da361da03b - md5: a7b419c1d0ae931d86cd9cab158f698e +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 + md5: 73e4ba4c8247f744be670f4da4f132e2 depends: - __win - colorama @@ -7360,11 +7415,11 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 619872 - timestamp: 1745672185321 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - sha256: 539d003c379c22a71df1eb76cd4167a3e2d59f45e6dbc3416c45619f4c1381fb - md5: 7330ee1244209cfebfb23d828dd9aae5 + size: 621095 + timestamp: 1748711232331 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd + md5: 270dbfb30fe759b39ce0c9fdbcd7be10 depends: - __unix - pexpect >4.3 @@ -7385,8 +7440,8 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 620691 - timestamp: 1745672166398 + size: 621859 + timestamp: 1748713870748 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -7427,58 +7482,39 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl name: jax - version: 0.6.1 - sha256: 69a4e4506caa5466702bdfd0d7a13d1f9b7281d473885721100a3087fcabf8f9 + version: 0.6.2 + sha256: bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c requires_dist: - - jaxlib<=0.6.1,>=0.6.1 + - jaxlib<=0.6.2,>=0.6.2 - ml-dtypes>=0.5.0 - - numpy>=1.25 - - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=1.26 - opt-einsum - - scipy>=1.11.1 - - jaxlib==0.6.1 ; extra == 'minimum-jaxlib' - - jaxlib==0.6.0 ; extra == 'ci' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'tpu' - - libtpu==0.0.15.* ; extra == 'tpu' + - scipy>=1.12 + - jaxlib==0.6.2 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.1 ; extra == 'ci' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'tpu' + - libtpu==0.0.17.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.1,>=0.6.1 ; extra == 'rocm' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda12' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'rocm' + - jax-rocm60-plugin<=0.6.2,>=0.6.2 ; extra == 'rocm' - kubernetes ; extra == 'k8s' + - xprof ; extra == 'xprof' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - sha256: be7644c955cd4be330a13a8f64c0b73d520f8b3ab6bb64b8b1d3a17945345684 - md5: f19f3d281603af8e67d533dbeac279ce +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + sha256: 573a5582dfba84a8f67c351b6218cb9579cb8d0f6d4b4186a806852111d4a6f1 + md5: bd364feb12c744cf5c60e1e5b586171b depends: - importlib-metadata >=4.6 - - jaxlib >=0.5.1,<=0.5.2 - - ml_dtypes >=0.4.0 - - numpy >=1.25 - - opt_einsum - - python >=3.10 - - scipy >=1.11.1 - constrains: - - cudnn >=9.2.1.18,<10.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jax?source=hash-mapping - size: 1556886 - timestamp: 1741182198677 -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - sha256: 411389e87b2a393192a52f1848fea1190f4d2c8f52a0838f38088c6a0b72a562 - md5: aee167037a824dff5fb393ab62046dfb - depends: - - importlib-metadata >=4.6 - - jaxlib >=0.5.3,<=0.5.3 - - ml_dtypes >=0.4.0 + - jaxlib >=0.6.0,<=0.6.0 + - ml_dtypes >=0.5.0 - numpy >=1.25 - opt_einsum - python >=3.10 @@ -7489,8 +7525,8 @@ packages: license_family: APACHE purls: - pkg:pypi/jax?source=hash-mapping - size: 1580534 - timestamp: 1747653718316 + size: 1538293 + timestamp: 1748688029463 - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 name: jax-datetime version: 0.1.0 @@ -7501,18 +7537,18 @@ packages: - chex ; extra == 'tests' - pytest ; extra == 'tests' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.6.1 - sha256: 76d6f65f3153ffb70e20a76b915d4431823cf70a786d86ba1b76a9c5bf66a0a4 + version: 0.6.2 + sha256: 921dbd4db214eba19a29ba9f2450d880e08b2b2c7b968f28cc89da3e62366af4 requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 + - scipy>=1.12 + - numpy>=1.26 + - ml-dtypes>=0.5.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda - sha256: c225000615df5829717e0b04785236f44d92077a7d2e39e4c0556b183a4216f0 - md5: e12b4670e149ca7f9287820d7653e810 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda + sha256: 8941335debcba5835d378717cb5f691fe4e8749e179653c6fae7a39ad593f33d + md5: df8ebae58f002df33e6bb75394656a34 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -7528,16 +7564,16 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.5.2 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 69147479 - timestamp: 1747094254155 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda - sha256: 8eff53d14971a29caac20533dbdc49a4c00a73f99df933841342a16630211d60 - md5: f1fe1bb10662b8e1b00ca0f07711bd06 + size: 60656001 + timestamp: 1748656526943 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda + sha256: 00bedbc1f41d96de00757fd79cda6c691e708c2cedce8aaabebda2006d728ef5 + md5: d2d260a9fdc8afbdffa9b3b9391dc70a depends: - __osx >=10.15 - libabseil * cxx17* @@ -7552,16 +7588,16 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.5.3 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 67083755 - timestamp: 1747480017557 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda - sha256: 8ca793da0f4aed6426cf4d1ee55093837daa729eb0913ca4e5c8c4f58f470652 - md5: 4771dac0bde78fccfaa0ddf588a2ce94 + size: 62923901 + timestamp: 1748651932948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda + sha256: b7d9ba3dd95f998e9c20c272293d06f570c7d6e101940acc4e62c1283d09a312 + md5: 694baa9a80a8229587db65e4063de530 depends: - __osx >=11.0 - libabseil * cxx17* @@ -7577,13 +7613,13 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.5.3 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 56004263 - timestamp: 1747478692111 + size: 51803228 + timestamp: 1748652224641 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -7618,7 +7654,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=compressed-mapping + - pkg:pypi/jinja2?source=hash-mapping size: 112714 timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -7730,9 +7766,9 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42235 timestamp: 1725303419414 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 - md5: a3cead9264b331b32fe8f0aabc967522 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + sha256: 812134fabb49493a50f7f443dc0ffafd0f63766f403a0bd8e71119763e57456a + md5: 59220749abcd119d645e6879983497a1 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 @@ -7745,8 +7781,8 @@ packages: license_family: MIT purls: - pkg:pypi/jsonschema?source=hash-mapping - size: 74256 - timestamp: 1733472818764 + size: 75124 + timestamp: 1748294389597 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda sha256: 66fbad7480f163509deec8bd028cd3ea68e58022982c838683586829f63f3efa md5: 41ff526b1083fde51fbdc93f29282e0e @@ -7760,15 +7796,15 @@ packages: - pkg:pypi/jsonschema-specifications?source=hash-mapping size: 19168 timestamp: 1745424244298 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d - md5: a5b1a8065857cc4bd8b7a38d063bb728 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + sha256: 970a1efffe29474d6bb3e4d63bc04105c5611d1c7e2cd7e2d43d1ba468f33c20 + md5: b4eaebf6fac318db166238796d2a9702 depends: - fqdn - idna - isoduration - jsonpointer >1.13 - - jsonschema >=4.23.0,<4.23.1.0a0 + - jsonschema >=4.24.0,<4.24.1.0a0 - rfc3339-validator - rfc3986-validator >0.1.0 - uri-template @@ -7776,21 +7812,22 @@ packages: license: MIT license_family: MIT purls: [] - size: 7135 - timestamp: 1733472820035 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 - md5: 0b4c3908e5a38ea22ebb98ee5888c768 + size: 7717 + timestamp: 1748294391013 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + sha256: f2ca86b121bcfeaf0241a927824459ba8712e64806b98dd262eb2b1a7c4e82a6 + md5: 7ed6505c703f3c4e1a58864bf84505e2 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - python >=3.9 + - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyter-lsp?source=hash-mapping - size: 55221 - timestamp: 1733493006611 + size: 57659 + timestamp: 1748550130303 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 @@ -7808,9 +7845,9 @@ packages: - pkg:pypi/jupyter-client?source=hash-mapping size: 106342 timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 + md5: b7d89d860ebcda28a5303526cdee68ab depends: - __unix - platformdirs >=2.5 @@ -7819,12 +7856,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=hash-mapping - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd - md5: 46d87d1c0ea5da0aae36f77fa406e20d + - pkg:pypi/jupyter-core?source=compressed-mapping + size: 59562 + timestamp: 1748333186063 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + sha256: 928c2514c2974fda78447903217f01ca89a77eefedd46bf6a2fe97072df57e8d + md5: 324e60a0d3f39f268e899709575ea3cd depends: - __win - cpython @@ -7835,9 +7872,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=hash-mapping - size: 58269 - timestamp: 1727164026641 + - pkg:pypi/jupyter-core?source=compressed-mapping + size: 59972 + timestamp: 1748333368923 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 md5: f56000b36f09ab7533877e695e4e8cb0 @@ -7855,7 +7892,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-events?source=compressed-mapping + - pkg:pypi/jupyter-events?source=hash-mapping size: 23647 timestamp: 1738765986736 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda @@ -7900,9 +7937,9 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 - md5: 1f5f3b0fcff308d8fbaa73c43af08e2f +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + sha256: fc0235a71d852734fe92183a78cb91827367573450eba82465ae522c64230736 + md5: 4861a0c2a5a5d0481a450a9dfaf9febe depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -7924,8 +7961,8 @@ packages: license_family: BSD purls: - pkg:pypi/jupyterlab?source=hash-mapping - size: 8593072 - timestamp: 1746536121732 + size: 8236973 + timestamp: 1748273017680 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -7978,24 +8015,16 @@ packages: name: kaleido version: 0.1.0.post1 sha256: 2a942606a13c70dfd0a02e092ec140a1083e093ae06661c5e1b1179e477a9e44 -- pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - name: kaleido - version: 0.2.1 - sha256: bb9a5d1f710357d5d432ee240ef6658a6d124c3e610935817b4b42da9c787c05 - requires_dist: - - pathlib ; python_full_version < '3.4' -- pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - name: kaleido - version: 0.2.1 - sha256: aa21cf1bf1c78f8fa50a9f7d45e1003c387bd3d6fe0a767cfbbf344b95bdc3a8 - requires_dist: - - pathlib ; python_full_version < '3.4' -- pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl name: kaleido - version: 0.2.1 - sha256: ca6f73e7ff00aaebf2843f73f1d3bacde1930ef5041093fe76b83a15785049a7 + version: 1.0.0 + sha256: a7e8bd95648378d2746f6c86084d419d15f95b1ec7bb0ec810289b7feb25b18d requires_dist: - - pathlib ; python_full_version < '3.4' + - choreographer>=1.0.5 + - logistro>=1.0.8 + - orjson>=3.10.15 + - packaging + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 @@ -8061,9 +8090,9 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 - md5: 01f8d123c96816249efd255a31ad7712 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 + md5: 6dc9e1305e7d3129af4ad0dabda30e56 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -8071,8 +8100,8 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - size: 671240 - timestamp: 1740155456116 + size: 670635 + timestamp: 1749858327854 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -8162,169 +8191,170 @@ packages: purls: [] size: 1192962 timestamp: 1742369814061 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - build_number: 31 - sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 - md5: 728dbebd0f7a20337218beacffd37916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + build_number: 32 + sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338 + md5: 2af9f3d5c2e39f417ce040f5a35c40c6 depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas + - libcblas 3.9.0 32*_openblas - mkl <2025 - - libcblas =3.9.0=31*_openblas + - liblapacke 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16859 - timestamp: 1740087969120 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - build_number: 31 - sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d - md5: a8c1c9f95d1c46d67028a6146c1ea77c + size: 17330 + timestamp: 1750388798074 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + build_number: 32 + sha256: e441fcc46858a9a073e4344c80e267aee3b95ec01b02e37205c36be79eec0694 + md5: 0f7197e3b4ecfa8aa24a371c3eaabb8a depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas + - liblapack 3.9.0 32*_openblas + - blas 2.132 openblas - mkl <2025 - - liblapack =3.9.0=31*_openblas + - liblapacke 3.9.0 32*_openblas + - libcblas 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17105 - timestamp: 1740087945188 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - build_number: 31 - sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f - md5: 39b053da5e7035c6592102280aa7612a + size: 17571 + timestamp: 1750389030403 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + build_number: 32 + sha256: 2775472dd81d43dc20804b484028560bfecd5ab4779e39f1fb95684da3ff2029 + md5: d4a1732d2b330c9d5d4be16438a0ac78 depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas - mkl <2025 - - liblapack =3.9.0=31*_openblas + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17123 - timestamp: 1740088119350 -- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - build_number: 31 - sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8 - md5: d05563c577fe2f37693a554b3f271e8f + size: 17520 + timestamp: 1750388963178 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + build_number: 32 + sha256: 809d78b096e70fed7ebb17c867dd5dde2f9f4ed8564967a6e10c65b3513b0c31 + md5: 49b36a01450e96c516bbc5486d4a0ea0 depends: - mkl 2024.2.2 h66d3029_15 constrains: - - libcblas =3.9.0=31*_mkl - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl - - liblapack =3.9.0=31*_mkl + - libcblas 3.9.0 32*_mkl + - liblapack 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3733728 - timestamp: 1740088452830 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - build_number: 31 - sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d - md5: abb32c727da370c481a1c206f5159ce9 + size: 3735390 + timestamp: 1750389080409 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + build_number: 32 + sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9 + md5: 3d3f9355e52f269cd8bc2c440d8a5263 depends: - - libblas 3.9.0 31_h59b9bed_openblas + - libblas 3.9.0 32_h59b9bed_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16796 - timestamp: 1740087984429 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - build_number: 31 - sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c - md5: c655cc2b0c48ec454f7a4db92415d012 + size: 17308 + timestamp: 1750388809353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + build_number: 32 + sha256: 745f6dd420389809c333734df6edc99d75caa3633e4778158c7549c6844af440 + md5: 2c1e774d4546cf542eaee5781eb8940b depends: - - libblas 3.9.0 31_h7f60823_openblas + - libblas 3.9.0 32_h7f60823_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17006 - timestamp: 1740087955460 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - build_number: 31 - sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 - md5: 7353c2bf0e90834cb70545671996d871 + size: 17574 + timestamp: 1750389040732 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + build_number: 32 + sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c + md5: d8e8ba717ae863b13a7495221f2b5a71 depends: - - libblas 3.9.0 31_h10e41b3_openblas + - libblas 3.9.0 32_h10e41b3_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17032 - timestamp: 1740088127097 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - build_number: 31 - sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8 - md5: 43c100b94ad2607382b0cf0f3a6b0bf3 + size: 17485 + timestamp: 1750388970626 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + build_number: 32 + sha256: d0f81145ae795592f3f3b5d7ff641c1019a99d6b308bfaf2a4cc5ba24b067bb0 + md5: 054b9b4b48296e4413cf93e6ece7b27d depends: - - libblas 3.9.0 31_h641d27c_mkl + - libblas 3.9.0 32_h641d27c_mkl constrains: - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl - - liblapack =3.9.0=31*_mkl + - liblapack 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3733549 - timestamp: 1740088502127 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 - md5: d4529f4dff3057982a7617c7ac58fde3 + size: 3735392 + timestamp: 1750389122586 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55 + md5: d4a250da4737ee127fb1fa6452a9002e depends: - - krb5 >=1.21.1,<1.22.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 license: Apache-2.0 license_family: Apache purls: [] - size: 4519402 - timestamp: 1689195353551 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 - md5: 9dde68cee0a231b19e189954ac29027b + size: 4523621 + timestamp: 1749905341688 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 + md5: 8b47ade37d4e75417b4e993179c09f5d depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 562408 - timestamp: 1747262455533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 - md5: 4ef1bdb94d42055f511bb358f2048c58 + size: 562573 + timestamp: 1749846921724 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 + md5: 881de227abdddbe596239fa9e82eb3ab depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 568010 - timestamp: 1747262879889 + size: 567189 + timestamp: 1749847129529 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -8590,45 +8620,42 @@ packages: purls: [] size: 337007 timestamp: 1745370226578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 + md5: 9e60c55e725c20d23125a5f0dd69af5d depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 + - libgcc-ng ==15.1.0=*_3 + - libgomp 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 829108 - timestamp: 1746642191935 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be - md5: 9bedb24480136bfeb81ebc81d4285e70 + size: 824921 + timestamp: 1750808216066 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + sha256: 05978c4e8c826dd3b727884e009a19ceee75b0a530c18fc14f0ba56b090f2ea3 + md5: d8314be93c803e2e2b430f6389d6ce6a depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: + - libgomp 15.1.0 h1383e82_3 - msys2-conda-epoch <0.0a0 - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h1383e82_2 + - libgcc-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 673459 - timestamp: 1746656621653 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 + size: 669602 + timestamp: 1750808309041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 + md5: e66f2b8ad787e7beb0f846e4bd7e8493 depends: - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 34586 - timestamp: 1746642200749 + size: 29033 + timestamp: 1750808224854 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd md5: 68fc66282364981589ef36868b1a7c78 @@ -8715,75 +8742,73 @@ packages: purls: [] size: 165838 timestamp: 1737548342665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 - md5: f92e6e0a3c0c0c85561ef61aa59d555d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183 + md5: bfbca721fd33188ef923dfe9ba172f29 depends: - - libgfortran5 15.1.0 hcea5267_2 + - libgfortran5 15.1.0 hcea5267_3 constrains: - - libgfortran-ng ==15.1.0=*_2 + - libgfortran-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 34541 - timestamp: 1746642233221 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 - md5: 6b27baf030f5d6603713c7e72d3f6b9a + size: 29057 + timestamp: 1750808257258 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e + md5: 090b3c9ae1282c8f9b394ac9e4773b10 depends: - - libgfortran5 14.2.0 h58528f3_105 + - libgfortran5 14.2.0 h51e75f0_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 155635 - timestamp: 1743911593527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 - md5: ad35937216e65cfeecd828979ee5e9e6 + size: 156202 + timestamp: 1743862427451 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 + md5: 044a210bc1d5b8367857755665157413 depends: - - libgfortran5 14.2.0 h2c44a93_105 + - libgfortran5 14.2.0 h6c33f7e_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 155474 - timestamp: 1743913530958 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc + size: 156291 + timestamp: 1743863532821 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a + md5: 530566b68c3b8ce7eec4cd047eae19fe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.1.0 constrains: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 1569986 - timestamp: 1746642212331 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 - md5: 94560312ff3c78225bed62ab59854c31 + size: 1565627 + timestamp: 1750808236464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 + md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 14_2_0_*_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1224385 - timestamp: 1743911552203 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 - md5: 06f35a3b1479ec55036e1c9872f97f2c + size: 1225013 + timestamp: 1743862382377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 + md5: 69806c1e957069f1d515830dcc9f6cbb depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 5.0.0 14_2_0_*_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 806283 - timestamp: 1743913488925 + size: 806566 + timestamp: 1743863491726 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd md5: 072ab14a02164b7c0c089055368ff776 @@ -8850,28 +8875,26 @@ packages: purls: [] size: 3771466 timestamp: 1747837394297 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 + md5: 3cd1a7238a0dd3d0860fdefc496cc854 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 452635 - timestamp: 1746642113092 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 - md5: 5fbacaa9b41e294a6966602205b99747 + size: 447068 + timestamp: 1750808138400 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 + md5: 94545e52b3d21a7ab89961f7bda3da0d depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 540903 - timestamp: 1746656563815 + size: 535456 + timestamp: 1750808243424 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 md5: c3cfd72cbb14113abee7bbd86f44ad69 @@ -9065,206 +9088,203 @@ packages: purls: [] size: 838154 timestamp: 1745268437136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - build_number: 31 - sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 - md5: 452b98eafe050ecff932f0ec832dd03f +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + build_number: 32 + sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 + md5: 6c3f04ccb6c578138e9f9899da0bd714 depends: - - libblas 3.9.0 31_h59b9bed_openblas + - libblas 3.9.0 32_h59b9bed_openblas constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas + - libcblas 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16790 - timestamp: 1740087997375 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - build_number: 31 - sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 - md5: d0f3bc17e0acef003cb9d9195a205888 + size: 17316 + timestamp: 1750388820745 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + build_number: 32 + sha256: 1e26450b80525b3f656e9c75fd26a10ebaa1d339fe4ca9c7affbebd9acbeac03 + md5: ccdca0c0730ad795e064d81dbe540723 depends: - - libblas 3.9.0 31_h7f60823_openblas + - libblas 3.9.0 32_h7f60823_openblas constrains: - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapacke =3.9.0=31*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + - libcblas 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17033 - timestamp: 1740087965941 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - build_number: 31 - sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 - md5: ff57a55a2cbce171ef5707fb463caf19 + size: 17553 + timestamp: 1750389051033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + build_number: 32 + sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 + md5: bf9ead3fa92fd75ad473c6a1d255ffcb depends: - - libblas 3.9.0 31_h10e41b3_openblas + - libblas 3.9.0 32_h10e41b3_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.132 openblas + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17033 - timestamp: 1740088134988 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - build_number: 31 - sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad - md5: 40b47ee720a185289760960fc6185750 + size: 17507 + timestamp: 1750388977861 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + build_number: 32 + sha256: 5629e592137114b24bfdea71e1c4b6bee11379631409ed91dfe2f83b32a8b298 + md5: 1652285573db93afc3ba9b3b9356e3d3 depends: - - libblas 3.9.0 31_h641d27c_mkl + - libblas 3.9.0 32_h641d27c_mkl constrains: - - libcblas =3.9.0=31*_mkl - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl + - libcblas 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3732648 - timestamp: 1740088548986 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c - md5: a76fd702c93cd2dfd89eff30a5fd45a8 + size: 3735534 + timestamp: 1750389164366 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 + md5: 1a580f7796c7bf6393fddb8bbbde58dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 112845 - timestamp: 1746531470399 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 - md5: f87e8821e0e38a4140a7ed4f52530053 + size: 112894 + timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 + md5: 8468beea04b9065b9807fc8b9cdc5894 depends: - __osx >=10.13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104814 - timestamp: 1746531577001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 - md5: 4e8ef3d79c97c9021b34d682c24c2044 + size: 104826 + timestamp: 1749230155443 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 + md5: d6df911d4564d77c4374b02552cb17d1 depends: - __osx >=11.0 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 92218 - timestamp: 1746531818330 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 - md5: 14a1042c163181e143a7522dfb8ad6ab + size: 92286 + timestamp: 1749230283517 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc + md5: c15148b2e18da456f5108ccb5e411446 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104699 - timestamp: 1746531718026 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + size: 104935 + timestamp: 1749230611612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: LGPL-2.1-only license_family: GPL purls: [] - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 - md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + size: 33731 + timestamp: 1750274110928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + sha256: 225f4cfdb06b3b73f870ad86f00f49a9ca0a8a2d2afe59440521fafe2b6c23d9 + md5: 323dc8f259224d13078aaf7ce96c3efe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - - libgfortran5 >=14.2.0 + - libgfortran5 >=14.3.0 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 5919288 - timestamp: 1739825731827 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a - md5: a30dc52b2a8b6300f17eaabd2f940d41 + size: 5916819 + timestamp: 1750379877844 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 + md5: 29c54869a3c7d33b6a0add39c5a325fe depends: - __osx >=10.13 - - libgfortran >=5 - - libgfortran5 >=13.2.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 6170847 - timestamp: 1739826107594 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 - md5: 0cd1148c68f09027ee0b0f0179f77c30 + size: 6179547 + timestamp: 1750380498501 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 + md5: 5d7dbaa423b4c253c476c24784286e4b depends: - __osx >=11.0 - - libgfortran >=5 - - libgfortran5 >=13.2.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 4168442 - timestamp: 1739825514918 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 - md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + size: 4163399 + timestamp: 1750378829050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + sha256: c8f5dc929ba5fcee525a66777498e03bbcbfefc05a0773e5163bb08ac5122f1a + md5: 37511c874cf3b8d0034c8d24e73c0884 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 288701 - timestamp: 1739952993639 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 - md5: 8461ab86d2cdb76d6e971aab225be73f + size: 289506 + timestamp: 1750095629466 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + sha256: 37be190992433d20336187b6fee4986cbdb11e9f901bc888aca5b2d7e5a2acc6 + md5: b9eabfc716af02b8d3ec5a51cb89b4a9 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 266874 - timestamp: 1739953034029 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f - md5: 3550e05e3af94a3fa9cef2694417ccdf + size: 267502 + timestamp: 1750095826947 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + sha256: b1050f6da51de507eec6902367cc2a3f381dd548eaaccb85673784543dcdee1a + md5: 90be56ffd1a6b1950268f88c12e17c69 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 259332 - timestamp: 1739953032676 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 - md5: ad620e92b82d2948bc019e029c574ebb + size: 259291 + timestamp: 1750095759683 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + sha256: 8876a2d32d3538675e035b6560691471a1571835c0bcbf23816c24c460d31439 + md5: 27269977c8f25d499727ceabc47cee3d depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -9272,8 +9292,8 @@ packages: - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 346511 - timestamp: 1745771984515 + size: 347727 + timestamp: 1750096091724 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf md5: edb86556cf4a0c133e7932a1597ff236 @@ -9317,52 +9337,49 @@ packages: purls: [] size: 2613087 timestamp: 1745158781377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda - sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668 - md5: 545e93a513c10603327c76c15485e946 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda + sha256: 89535af669f63e0dc4ae75a5fc9abb69b724b35e0f2ca0304c3d9744a55c8310 + md5: f6881c04e6617ebba22d237c36f1b88e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 210073 - timestamp: 1741121121238 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda - sha256: 2bdf91b94486a06bdcc2aedcae4f0b9280301b0bb39e3168e29767c0c7b8bd85 - md5: 93ff94e5535b7051133b980d2ab1c858 + size: 211720 + timestamp: 1751053073521 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda + sha256: 979a49a54fcfb38f4de258d970b5c572fa29e780a67e847ea18860f99af39020 + md5: 2ba834cda1154dd23d8f1bba2f8f13e0 depends: - - __osx >=10.14 + - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 179620 - timestamp: 1741121212954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda - sha256: 038db1da2b9f353df6532af224c20d985228d3408d2af25aa34974f6dbee76e1 - md5: 1466284c71c62f7a9c4fa08ed8940f20 + size: 180092 + timestamp: 1751053180332 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda + sha256: d125de07bcdeadddd415d2f855f7fe383b066a373fa88244e51c58fef5cb8774 + md5: ce95f5724e52eb76f4cd4be6e7a0d9ae depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 167268 - timestamp: 1741121355716 + size: 167704 + timestamp: 1751053331260 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 md5: d27665b20bc4d074b86e628b3ba5ab8b @@ -9453,69 +9470,68 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 - md5: 93048463501053a00739215ea3f36324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda + sha256: 9a9e5bf30178f821d4f8de25eac0ae848915bfde6a78a66ae8b77d9c33d9d0e5 + md5: c7c4888059a8324e52de475d1e7bdc53 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 916313 - timestamp: 1746637007836 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d - md5: 9377ba1ade655ea3fc831b456f4a2351 + size: 919723 + timestamp: 1750925531920 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + sha256: 1baa156fb0c358fd693a8e00296e0a5ef9691a638d3d496d6095dc61f9de7bb4 + md5: fcdfee03f4b159a3a2e60bbb71aec334 depends: - __osx >=10.13 + - icu >=75.1,<76.0a0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 977388 - timestamp: 1746637093883 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 - md5: 85f443033cd5b3df82b5cabf79bddb09 + size: 984025 + timestamp: 1750925722213 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + sha256: a007d6aa37586d3a71ff9503e6ec70baac64fc40241c668a39581399502940ec + md5: b351c3e11d75aab0b8145de530afbe58 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 899462 - timestamp: 1746637228408 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 - md5: a3900c97ba9e03332e9a911fe63f7d64 + size: 902114 + timestamp: 1750925723817 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + sha256: 08fbdeed89ae10fb383c40f0bab3e39e3675f49700b7185a109b31e273f8762a + md5: 0bc3f5143b8cb9ccf9101c2f9391c594 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: Unlicense purls: [] - size: 1081123 - timestamp: 1746637406471 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa + size: 1285518 + timestamp: 1750925870715 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 + md5: 6d11a5edae89fe413c0569f16d308f5a depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 3902355 - timestamp: 1746642227493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb + size: 3896407 + timestamp: 1750808251302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b + md5: 57541755b5a51691955012b8e197c06c depends: - - libstdcxx 15.1.0 h8f9b012_2 + - libstdcxx 15.1.0 h8f9b012_3 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL purls: [] - size: 34647 - timestamp: 1746642266826 + size: 29093 + timestamp: 1750808292700 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 md5: e79a094918988bb1807462cd42c83962 @@ -9820,30 +9836,35 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - sha256: f858ef4cbc7f449da06e7e5cf62d6db0f8269e4e723144be35b0ef3531e28591 - md5: 7b6a67507141ea93541943f0c011a872 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d + md5: e240159643214102dc88395c4ecee9cf depends: - __osx >=10.13 constrains: - - openmp 20.1.5|20.1.5.* + - openmp 20.1.7|20.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 306529 - timestamp: 1747367226775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - sha256: 3515d520338a334c987ce2737dfba1ebd66eb1e360582c7511738ad3dc8a9145 - md5: 66771cb733ad80bd46b66f856601001a + size: 306443 + timestamp: 1749892271445 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 + md5: 741e1da0a0798d32e13e3724f2ca2dcf depends: - __osx >=11.0 constrains: - - openmp 20.1.5|20.1.5.* + - openmp 20.1.7|20.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 282100 - timestamp: 1747367434936 + size: 281996 + timestamp: 1749892286735 +- pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + name: logistro + version: 1.1.0 + sha256: 4f88541fe7f3c545561b754d86121abd9c6d4d8b312381046a78dcd794fddc7c + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -10068,10 +10089,10 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 200130 timestamp: 1736539205286 -- pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.16.0 - sha256: bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec + version: 1.16.1 + sha256: 0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10083,10 +10104,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl name: mypy - version: 1.16.0 - sha256: b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8 + version: 1.16.1 + sha256: 1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10098,10 +10119,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl name: mypy - version: 1.16.0 - sha256: c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13 + version: 1.16.1 + sha256: af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10113,10 +10134,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl name: mypy - version: 1.16.0 - sha256: f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090 + version: 1.16.1 + sha256: 66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10232,28 +10253,26 @@ packages: - pkg:pypi/nest-asyncio?source=hash-mapping size: 11543 timestamp: 1733325673691 -- pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl name: networkx - version: 3.4.2 - sha256: df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f + version: '3.5' + sha256: 0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec requires_dist: - - numpy>=1.24 ; extra == 'default' - - scipy>=1.10,!=1.11.0,!=1.11.1 ; extra == 'default' - - matplotlib>=3.7 ; extra == 'default' + - numpy>=1.25 ; extra == 'default' + - scipy>=1.11.2 ; extra == 'default' + - matplotlib>=3.8 ; extra == 'default' - pandas>=2.0 ; extra == 'default' - - changelist==0.5 ; extra == 'developer' - - pre-commit>=3.2 ; extra == 'developer' - - mypy>=1.1 ; extra == 'developer' - - rtoml ; extra == 'developer' - - sphinx>=7.3 ; extra == 'doc' - - pydata-sphinx-theme>=0.15 ; extra == 'doc' - - sphinx-gallery>=0.16 ; extra == 'doc' + - pre-commit>=4.1 ; extra == 'developer' + - mypy>=1.15 ; extra == 'developer' + - sphinx>=8.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.16 ; extra == 'doc' + - sphinx-gallery>=0.18 ; extra == 'doc' - numpydoc>=1.8.0 ; extra == 'doc' - - pillow>=9.4 ; extra == 'doc' + - pillow>=10 ; extra == 'doc' - texext>=0.6.7 ; extra == 'doc' - myst-nb>=1.1 ; extra == 'doc' - intersphinx-registry ; extra == 'doc' - - osmnx>=1.9 ; extra == 'example' + - osmnx>=2.0.0 ; extra == 'example' - momepy>=0.7.2 ; extra == 'example' - contextily>=1.6 ; extra == 'example' - seaborn>=0.13 ; extra == 'example' @@ -10266,7 +10285,10 @@ packages: - sympy>=1.10 ; extra == 'extra' - pytest>=7.2 ; extra == 'test' - pytest-cov>=4.0 ; extra == 'test' - requires_python: '>=3.10' + - pytest-xdist>=3.0 ; extra == 'test' + - pytest-mpl ; extra == 'test-extras' + - pytest-randomly ; extra == 'test-extras' + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 md5: 7ba3f09fceae6a120d664217e58fe686 @@ -10291,9 +10313,9 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda - sha256: f28273a72d25f4d7d62a9ba031d5271082afc498121bd0f6783d72b4103dbbc7 - md5: babce4d9841ebfcee64249d98eb4e0d4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py311h519dc76_0.conda + sha256: a9a6f36c2982837e19448c231435a914376948eb493e2cd8e9f69b133ca0e796 + md5: 002e600fcc82f415bfaad7d05a44c016 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10308,12 +10330,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 9068997 - timestamp: 1747545091884 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 - md5: 17fac9db62daa5c810091c2882b28f45 + - pkg:pypi/numpy?source=compressed-mapping + size: 9085116 + timestamp: 1749430956961 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda + sha256: 59da92a150737e830c75e8de56c149d6dc4e42c9d38ba30d2f0d4787a0c43342 + md5: 8b4095ed29d1072f7e4badfbaf9e5851 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10329,11 +10351,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8490501 - timestamp: 1747545073507 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda - sha256: bcb2c6fd701f3591fd4cd04580ec62ad88622c09671139a98d82ca80e2ae365f - md5: 8e850d1284fd8a90aeb4b5195a0116f3 + size: 8417476 + timestamp: 1749430957684 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py311h9224382_0.conda + sha256: 29b6b4912f1e91a186365b68a524df3d98ad319f80731befd27f465f2d703778 + md5: 91eb2cc588b04797414f36c781cb398f depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10348,11 +10370,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8182747 - timestamp: 1747545065417 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - sha256: 22bc6d7ac48df0a3130a24b9426a004977cb5dc8b5edbb3f3d2579a478121cbd - md5: 486e149e3648cbf8b92b0512db99bce3 + size: 8141094 + timestamp: 1749430994201 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda + sha256: f4b6d6ba9365011d45fd5524d61647021298baf957acf0872a2d89a2815b4458 + md5: a3b98020195219903fc9085a2a48dea5 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10367,11 +10389,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7691449 - timestamp: 1747545110970 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda - sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 - md5: 9446d2629b529e92769dfb34c7c194bb + size: 7608138 + timestamp: 1749430934103 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py311h4379d9d_0.conda + sha256: 2ed53589ec66c38895abfaacccc11e0c875dd146147ab02ebf2849665671430d + md5: 56ade1d0ea3530973648464b23a5b131 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10387,11 +10409,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7018728 - timestamp: 1747545122995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e - md5: fff7ab22b4f5c7036d3c2e1f92632fa4 + size: 7148890 + timestamp: 1749431035775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda + sha256: 270572c176133798bec6282b30e34c4bf552c441c1c23e8a0bf625468cb3de0f + md5: e0fb333bee06c1fd1064f594612a6aa7 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10407,11 +10429,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6437085 - timestamp: 1747545094808 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda - sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d - md5: 6612dfa4e68dd90c539f2e9f40a42514 + size: 6443862 + timestamp: 1749431046679 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py311hc907d76_0.conda + sha256: 4514c2901cdeb49f1b5955255b89358fbeecbada2a18a316ce976458954154ac + md5: d065ccc4e3e6bf1f3fbaf93d879e0a7d depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10427,11 +10449,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7800740 - timestamp: 1747545419079 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - sha256: 18d5bfd2830702fa40374aa1f03cca8b77fa5f1df92fecf52d17d5a0a246be46 - md5: f0811ca68448b3e8b53e05db7667e64d + size: 7294411 + timestamp: 1749431357461 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda + sha256: 76d6e28804ab7f9a8088771f19b34631142303ef89f9ec965f86b2d36b2ccac9 + md5: 54c2aae9e18ee3250e4e8a06efe75f9a depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10447,8 +10469,8 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7028854 - timestamp: 1747545411647 + size: 6630003 + timestamp: 1749431225390 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f md5: 5402c2b046432ceb2d192a82802e7854 @@ -10456,24 +10478,24 @@ packages: - numpy - python >=3.9 license: BSD-2-Clause + license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping size: 38384 timestamp: 1747937493897 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 - md5: 5af206d64d18d6c8dfb3122b4d9e643b +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 + md5: 66f9ba52d846feffa1c5d62522324b4f depends: - python >=3.9 - sphinx >=6 - - tabulate >=0.8.10 - tomli >=1.1.0 + - python license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping - size: 58041 - timestamp: 1733650959971 + size: 60220 + timestamp: 1750861325361 - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 @@ -10651,12 +10673,12 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62479 timestamp: 1733688053334 -- pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.15.0 - sha256: def5b08f219c31edd029b47624e689ffa07747b0694222156f28a28d341d29ac + version: 0.16.0 + sha256: 95f0f9b05dbd53cb04f37c49a508f6462ce06fbdb1bb0e0552129de91f8d36b6 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10670,8 +10692,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10683,20 +10705,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl name: optree - version: 0.15.0 - sha256: ba2eee9de9d57e145b4c1a71749f7f8b8fe1c645abbb306d4a26cfa45a9cdbb5 + version: 0.16.0 + sha256: 6ae2bf009f2a6a7c38f69d70eb0d8e9afd7a871b80c8682d98ce8f25cc50df40 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10710,8 +10725,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10723,20 +10738,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl name: optree - version: 0.15.0 - sha256: 01a0dc75c594c884d0ca502b8d169cec538e19a70883d2e5f5b9b08fce740958 + version: 0.16.0 + sha256: f703d7926c36eebdd56fc08aabefcf32a8b7292a9dd4468e56b0ab61bf6214bd requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10750,8 +10758,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10763,20 +10771,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl name: optree - version: 0.15.0 - sha256: f8d58949ef132beb3a025ace512a71a0fcf92e0e5ef350f289f33a782ae6cb85 + version: 0.16.0 + sha256: 768d2e12d3626a3d37f8594b7e0d7e633ff66d5de420ca6a1df7132c6a8cdc15 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10790,8 +10791,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10803,20 +10804,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl name: optree - version: 0.15.0 - sha256: 4aad5023686cd7caad68d70ad3706b82cfe9ae8ff9a13c08c1edef2a9b4c9d72 + version: 0.16.0 + sha256: 22b015d8d7b948d7815924763d473cc7f691731f3b67198f83cea835ae3e2c98 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10830,8 +10824,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10843,20 +10837,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl name: optree - version: 0.15.0 - sha256: a1f185b0d21bc4dda1f4fd03f5ba9e2bc9d28ca14bce3ce3d36b5817140a345e + version: 0.16.0 + sha256: b08eee60cd0756cd9874ffb44f5e47337c698100fd19dcdc18b86eb1518e3a0a requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10870,8 +10857,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10883,20 +10870,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl name: optree - version: 0.15.0 - sha256: d6525d6a550a1030957e5205e57a415d608a9f7561154e0fb29670e967424578 + version: 0.16.0 + sha256: 71e667b1dd0d331590e1356af506ab9896803acb85aea114f9e76a16a4e1be36 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10910,8 +10890,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10923,20 +10903,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.15.0 - sha256: c15d98e6f587badb9df67d67fa914fcfa0b63db2db270951915c563816c29f3d + version: 0.16.0 + sha256: f08aaa1c2ae092b3e662125ad19860046c63d7451d41be133ddd6594920e295e requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10950,8 +10923,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10963,14 +10936,27 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.10.18 + sha256: 50c15557afb7f6d63bc6d6348e0337a880a04eaa9cd7c9d569bcb4e760a24753 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.10.18 + sha256: 9dca85398d6d093dd41dc0983cbf54ab8e6afd1c547b6b8a311643917fbf4e0c + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.10.18 + sha256: e0a183ac3b8e40471e8d843105da6fbe7c070faab023be3b08188ee3f85719b8 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.10.18 + sha256: 9da552683bc9da222379c7a01779bddd0ad39dd699dd6300abaf43eadee38334 + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -10995,9 +10981,9 @@ packages: - pkg:pypi/packaging?source=compressed-mapping size: 62477 timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda - sha256: 98cd49bfc4b803d950f9dbc4799793903aec1eaacd388c244a0b46d644159831 - md5: c9f8fe78840d5c04e61666474bd739b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda + sha256: 402602238308e04062e599b2df0984ed77beca8f9fe49cc78559cc716d816e2d + md5: 805040d254f51cb15df55eff6e213d09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11010,46 +10996,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - odfpy >=1.4.1 - - numba >=0.56.4 - - qtpy >=2.3.0 - - pyarrow >=10.0.1 - - matplotlib >=3.6.3 + - pyqt5 >=5.15.9 - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 + - odfpy >=1.4.1 + - s3fs >=2022.11.0 - lxml >=4.9.2 - bottleneck >=1.3.6 - - tabulate >=0.9.0 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 - - sqlalchemy >=2.0.0 - - xlrd >=2.0.1 - - fastparquet >=2022.12.0 - - numexpr >=2.8.4 - - pyqt5 >=5.15.9 - - pytables >=3.8.0 - - pyreadstat >=1.2.0 - - fsspec >=2022.11.0 - - html5lib >=1.1 + - tzdata >=2022.7 + - numba >=0.56.4 - xarray >=2022.12.0 - - blosc >=1.21.3 - - openpyxl >=3.1.0 + - scipy >=1.10.0 + - xlrd >=2.0.1 + - matplotlib >=3.6.3 - pandas-gbq >=0.19.0 - - tzdata >=2022.7 - - pyxlsb >=1.0.10 + - zstandard >=0.19.0 - psycopg2 >=2.9.6 - - scipy >=1.10.0 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 - python-calamine >=0.1.7 + - tabulate >=0.9.0 - xlsxwriter >=3.0.5 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - qtpy >=2.3.0 + - html5lib >=1.1 + - fsspec >=2022.11.0 + - numexpr >=2.8.4 + - gcsfs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - pyarrow >=10.0.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15689443 - timestamp: 1744430942431 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - sha256: b0bed36b95757bbd269d30b2367536b802158bdf7947800ee7ae55089cfa8b9c - md5: 2979458c23c7755683a0598fb33e7666 + size: 15299103 + timestamp: 1749100113269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + sha256: 44f5587c1e1a9f0257387dd18735bcf65a67a6089e723302dc7947be09d9affe + md5: ac82ac336dbe61106e21fb2e11704459 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11062,46 +11048,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - tabulate >=0.9.0 - - pytables >=3.8.0 - - html5lib >=1.1 - - lxml >=4.9.2 - - gcsfs >=2022.11.0 - - odfpy >=1.4.1 - - numexpr >=2.8.4 - - psycopg2 >=2.9.6 - - fsspec >=2022.11.0 - - qtpy >=2.3.0 - - tzdata >=2022.7 - - pyarrow >=10.0.1 + - bottleneck >=1.3.6 + - blosc >=1.21.3 + - numba >=0.56.4 - pyqt5 >=5.15.9 - - xlrd >=2.0.1 - - sqlalchemy >=2.0.0 - - xarray >=2022.12.0 + - pyarrow >=10.0.1 + - gcsfs >=2022.11.0 + - xlsxwriter >=3.0.5 - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - numexpr >=2.8.4 - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - matplotlib >=3.6.3 - - bottleneck >=1.3.6 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 + - lxml >=4.9.2 + - xlrd >=2.0.1 - openpyxl >=3.1.0 - - blosc >=1.21.3 - - beautifulsoup4 >=4.11.2 + - qtpy >=2.3.0 + - s3fs >=2022.11.0 - pandas-gbq >=0.19.0 - - xlsxwriter >=3.0.5 - - numba >=0.56.4 - - pyxlsb >=1.0.10 + - pytables >=3.8.0 - python-calamine >=0.1.7 + - fsspec >=2022.11.0 + - psycopg2 >=2.9.6 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - pyxlsb >=1.0.10 + - tabulate >=0.9.0 + - odfpy >=1.4.1 + - pyreadstat >=1.2.0 + - html5lib >=1.1 + - zstandard >=0.19.0 + - sqlalchemy >=2.0.0 + - tzdata >=2022.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15392153 - timestamp: 1744430987175 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda - sha256: 5a25e7353b25fcf0af48a3a127b4c204b478b2abe2f7e5b863a68ea91955328b - md5: f763d55519fd9595b2d0e85265810137 + size: 14958450 + timestamp: 1749100123120 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda + sha256: 9259d581c4e0f0edc8ac47919dfd751d206d0b7ee242c0fa63ddd5b22fdeddb9 + md5: aa02add77b5abd716fbe0aaf0a0da7ee depends: - __osx >=10.13 - libcxx >=18 @@ -11113,46 +11099,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - tabulate >=0.9.0 - - zstandard >=0.19.0 - - bottleneck >=1.3.6 - - psycopg2 >=2.9.6 - - matplotlib >=3.6.3 - - xarray >=2022.12.0 - - openpyxl >=3.1.0 - - html5lib >=1.1 - - pytables >=3.8.0 - - pyxlsb >=1.0.10 - - numexpr >=2.8.4 - - pyarrow >=10.0.1 - pandas-gbq >=0.19.0 + - blosc >=1.21.3 - qtpy >=2.3.0 - - tzdata >=2022.7 - - pyqt5 >=5.15.9 - - sqlalchemy >=2.0.0 + - html5lib >=1.1 + - pyarrow >=10.0.1 + - openpyxl >=3.1.0 - beautifulsoup4 >=4.11.2 + - pyxlsb >=1.0.10 + - sqlalchemy >=2.0.0 + - matplotlib >=3.6.3 + - python-calamine >=0.1.7 + - bottleneck >=1.3.6 + - pyreadstat >=1.2.0 - lxml >=4.9.2 - - s3fs >=2022.11.0 - - numba >=0.56.4 - - fastparquet >=2022.12.0 - - fsspec >=2022.11.0 - - blosc >=1.21.3 - - pyreadstat >=1.2.0 - - xlsxwriter >=3.0.5 - - python-calamine >=0.1.7 - - scipy >=1.10.0 - odfpy >=1.4.1 + - xlsxwriter >=3.0.5 + - pytables >=3.8.0 + - xarray >=2022.12.0 - gcsfs >=2022.11.0 + - scipy >=1.10.0 + - tzdata >=2022.7 + - zstandard >=0.19.0 + - pyqt5 >=5.15.9 + - fsspec >=2022.11.0 + - numba >=0.56.4 + - s3fs >=2022.11.0 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - tabulate >=0.9.0 - xlrd >=2.0.1 + - fastparquet >=2022.12.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14756244 - timestamp: 1744430913476 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - sha256: b9c98565d165384a53ecdb14c8ccd9144d672b58c81e057598d197c6be0aba98 - md5: 50fcc3531441b73cb493ef9b2604abde + size: 14526764 + timestamp: 1749100213048 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + sha256: 67a07b607c9f81fdd90c2aeba55fd53261eda5e155fe907088c31cada8ee0496 + md5: 5aabeb910da8efba6e5128aa7aaf3256 depends: - __osx >=10.13 - libcxx >=18 @@ -11164,46 +11150,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - qtpy >=2.3.0 + - zstandard >=0.19.0 + - tabulate >=0.9.0 - numba >=0.56.4 - - pyarrow >=10.0.1 - - python-calamine >=0.1.7 - - bottleneck >=1.3.6 + - numexpr >=2.8.4 + - odfpy >=1.4.1 + - pytables >=3.8.0 - tzdata >=2022.7 - - lxml >=4.9.2 - - gcsfs >=2022.11.0 + - blosc >=1.21.3 + - sqlalchemy >=2.0.0 + - s3fs >=2022.11.0 - html5lib >=1.1 + - beautifulsoup4 >=4.11.2 + - matplotlib >=3.6.3 - pandas-gbq >=0.19.0 - - psycopg2 >=2.9.6 - - numexpr >=2.8.4 - - fastparquet >=2022.12.0 - - zstandard >=0.19.0 - - tabulate >=0.9.0 - - xarray >=2022.12.0 + - gcsfs >=2022.11.0 - xlsxwriter >=3.0.5 - - odfpy >=1.4.1 + - lxml >=4.9.2 - pyreadstat >=1.2.0 - - openpyxl >=3.1.0 - - xlrd >=2.0.1 - - beautifulsoup4 >=4.11.2 - - s3fs >=2022.11.0 - - matplotlib >=3.6.3 - - scipy >=1.10.0 + - python-calamine >=0.1.7 - fsspec >=2022.11.0 - - pytables >=3.8.0 - - qtpy >=2.3.0 - - blosc >=1.21.3 - pyqt5 >=5.15.9 - - pyxlsb >=1.0.10 + - psycopg2 >=2.9.6 + - xlrd >=2.0.1 + - bottleneck >=1.3.6 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - fastparquet >=2022.12.0 + - scipy >=1.10.0 + - xarray >=2022.12.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14590879 - timestamp: 1744431018654 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda - sha256: 2fedf5cec20945d5ce1a5264f06a8adf23bc6b355cef365e92241a3f1f6a6d11 - md5: 29ae2c4e0ee3c65fa8520cafbf479ff7 + size: 14183743 + timestamp: 1749100129960 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda + sha256: dc90abbeaa1b73b77c47269aec1faac72f2bf71c55e6a51a523ac92b53f09a53 + md5: ea3aa0995e65698bd1d59999c1482d15 depends: - __osx >=11.0 - libcxx >=18 @@ -11216,46 +11202,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - python-calamine >=0.1.7 + - html5lib >=1.1 + - tabulate >=0.9.0 + - bottleneck >=1.3.6 + - fsspec >=2022.11.0 + - beautifulsoup4 >=4.11.2 - pytables >=3.8.0 - - s3fs >=2022.11.0 - - openpyxl >=3.1.0 - - pyarrow >=10.0.1 - - tzdata >=2022.7 - - xarray >=2022.12.0 - - fastparquet >=2022.12.0 - - pyqt5 >=5.15.9 + - gcsfs >=2022.11.0 + - scipy >=1.10.0 + - python-calamine >=0.1.7 - numba >=0.56.4 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - lxml >=4.9.2 - pyxlsb >=1.0.10 - - xlrd >=2.0.1 - - bottleneck >=1.3.6 - - matplotlib >=3.6.3 - - xlsxwriter >=3.0.5 + - sqlalchemy >=2.0.0 + - fastparquet >=2022.12.0 + - xarray >=2022.12.0 - zstandard >=0.19.0 + - matplotlib >=3.6.3 - odfpy >=1.4.1 - - qtpy >=2.3.0 - - numexpr >=2.8.4 - - gcsfs >=2022.11.0 - - tabulate >=0.9.0 + - openpyxl >=3.1.0 + - xlsxwriter >=3.0.5 + - tzdata >=2022.7 - pyreadstat >=1.2.0 - - pandas-gbq >=0.19.0 + - pyqt5 >=5.15.9 + - s3fs >=2022.11.0 - blosc >=1.21.3 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - lxml >=4.9.2 - - html5lib >=1.1 - - fsspec >=2022.11.0 - - psycopg2 >=2.9.6 - - sqlalchemy >=2.0.0 + - pyarrow >=10.0.1 + - pandas-gbq >=0.19.0 + - xlrd >=2.0.1 + - qtpy >=2.3.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14820281 - timestamp: 1744430962289 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - sha256: 57beb95a8c5c3c35a87d0c5a6c3235fb3673618445e60be952a2502781534613 - md5: 63af5cccfa8b67825d8358b149e96466 + size: 14290986 + timestamp: 1749100100341 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + sha256: 3105a94036f37429ed292763d3034008fd0b4911bd565bdf86c33e898655dcdf + md5: d95b29a40430115d6aa817f70be5b5b1 depends: - __osx >=11.0 - libcxx >=18 @@ -11268,46 +11254,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - zstandard >=0.19.0 + - xlrd >=2.0.1 + - pyxlsb >=1.0.10 - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - matplotlib >=3.6.3 + - s3fs >=2022.11.0 + - pyqt5 >=5.15.9 + - lxml >=4.9.2 - blosc >=1.21.3 + - tabulate >=0.9.0 - fastparquet >=2022.12.0 - - qtpy >=2.3.0 - - openpyxl >=3.1.0 - - psycopg2 >=2.9.6 + - numba >=0.56.4 + - scipy >=1.10.0 - xlsxwriter >=3.0.5 - - lxml >=4.9.2 - - xarray >=2022.12.0 - - pyxlsb >=1.0.10 - - matplotlib >=3.6.3 - - python-calamine >=0.1.7 - gcsfs >=2022.11.0 - - numba >=0.56.4 - - pandas-gbq >=0.19.0 + - html5lib >=1.1 - odfpy >=1.4.1 - - fsspec >=2022.11.0 - - numexpr >=2.8.4 - - xlrd >=2.0.1 - - scipy >=1.10.0 - bottleneck >=1.3.6 - - pyqt5 >=5.15.9 - - s3fs >=2022.11.0 - - html5lib >=1.1 - - pytables >=3.8.0 - - tabulate >=0.9.0 + - numexpr >=2.8.4 - beautifulsoup4 >=4.11.2 - pyarrow >=10.0.1 - - sqlalchemy >=2.0.0 + - openpyxl >=3.1.0 + - qtpy >=2.3.0 + - pytables >=3.8.0 - tzdata >=2022.7 + - zstandard >=0.19.0 + - psycopg2 >=2.9.6 + - xarray >=2022.12.0 + - sqlalchemy >=2.0.0 + - python-calamine >=0.1.7 + - pandas-gbq >=0.19.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14442730 - timestamp: 1744431003090 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda - sha256: 7aabb8d23a6817844a7f1b402e7e147e341cade5f470a908b8239f969c7b681c - md5: 84c8b4aab176baefd352cd34f7e69469 + size: 14054660 + timestamp: 1749100309197 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda + sha256: b785d7a6d3146b4b9b13d200bb410ba2db31fa69da500e47be8e9f617e34d170 + md5: 5856ab7c6cd759b51b7d80ad0b7b92e7 depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -11320,46 +11306,46 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - lxml >=4.9.2 - - pandas-gbq >=0.19.0 - - psycopg2 >=2.9.6 - - pyxlsb >=1.0.10 - - python-calamine >=0.1.7 - - html5lib >=1.1 - - sqlalchemy >=2.0.0 - - fastparquet >=2022.12.0 - - xarray >=2022.12.0 - - matplotlib >=3.6.3 + - pytables >=3.8.0 + - pyreadstat >=1.2.0 - numexpr >=2.8.4 - - pyqt5 >=5.15.9 - - openpyxl >=3.1.0 + - blosc >=1.21.3 + - html5lib >=1.1 - tzdata >=2022.7 - - bottleneck >=1.3.6 - - tabulate >=0.9.0 - numba >=0.56.4 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - s3fs >=2022.11.0 - - gcsfs >=2022.11.0 - - qtpy >=2.3.0 - - odfpy >=1.4.1 - - pyreadstat >=1.2.0 + - python-calamine >=0.1.7 + - fastparquet >=2022.12.0 - xlrd >=2.0.1 - - pyarrow >=10.0.1 + - beautifulsoup4 >=4.11.2 - zstandard >=0.19.0 - - blosc >=1.21.3 - fsspec >=2022.11.0 - - pytables >=3.8.0 - xlsxwriter >=3.0.5 + - s3fs >=2022.11.0 + - openpyxl >=3.1.0 + - odfpy >=1.4.1 + - matplotlib >=3.6.3 + - scipy >=1.10.0 + - qtpy >=2.3.0 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - lxml >=4.9.2 + - pandas-gbq >=0.19.0 + - sqlalchemy >=2.0.0 + - pyarrow >=10.0.1 + - tabulate >=0.9.0 + - psycopg2 >=2.9.6 + - pyxlsb >=1.0.10 + - gcsfs >=2022.11.0 + - pyqt5 >=5.15.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14530915 - timestamp: 1744431484551 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - sha256: 86fe04c5f0dcae3644e3d2d892ddf6760d89eeb8fe1a31ef30290ac5a6a9f125 - md5: 08b4650b022c9f3233d45f231fb9471f + size: 14178063 + timestamp: 1749100482385 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + sha256: e4c8a685cfa1334a566b642523c9584d79ba78ed05888c7b7809d9116b6e9e25 + md5: e2ab2d8cc52281c9ebe19451936802eb depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -11372,43 +11358,43 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - pyxlsb >=1.0.10 - - psycopg2 >=2.9.6 - - bottleneck >=1.3.6 - - html5lib >=1.1 - - openpyxl >=3.1.0 - - python-calamine >=0.1.7 - - tabulate >=0.9.0 - - numexpr >=2.8.4 - - beautifulsoup4 >=4.11.2 - - odfpy >=1.4.1 + - pyarrow >=10.0.1 - gcsfs >=2022.11.0 - - pytables >=3.8.0 - - pyqt5 >=5.15.9 - - zstandard >=0.19.0 - - scipy >=1.10.0 - - xarray >=2022.12.0 - - blosc >=1.21.3 - - qtpy >=2.3.0 - - sqlalchemy >=2.0.0 - - pyreadstat >=1.2.0 - fsspec >=2022.11.0 - lxml >=4.9.2 + - tabulate >=0.9.0 + - openpyxl >=3.1.0 + - pyreadstat >=1.2.0 - xlrd >=2.0.1 - - tzdata >=2022.7 - - fastparquet >=2022.12.0 + - pyqt5 >=5.15.9 + - pyxlsb >=1.0.10 - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - numexpr >=2.8.4 + - python-calamine >=0.1.7 + - beautifulsoup4 >=4.11.2 + - fastparquet >=2022.12.0 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 - xlsxwriter >=3.0.5 - - pandas-gbq >=0.19.0 - - numba >=0.56.4 - - pyarrow >=10.0.1 + - sqlalchemy >=2.0.0 + - psycopg2 >=2.9.6 - matplotlib >=3.6.3 + - blosc >=1.21.3 + - pytables >=3.8.0 + - html5lib >=1.1 + - numba >=0.56.4 + - tzdata >=2022.7 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - odfpy >=1.4.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14150000 - timestamp: 1744431235710 + size: 13859642 + timestamp: 1749100498003 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -11583,7 +11569,7 @@ packages: - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=compressed-mapping + - pkg:pypi/pexpect?source=hash-mapping size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -11597,9 +11583,9 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a - md5: d2f1c87d4416d1e7344cf92b1aaee1c4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d + md5: 39b4228a867772d610c02e06f939a5b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11607,33 +11593,33 @@ packages: license: MIT license_family: MIT purls: [] - size: 398664 - timestamp: 1746011575217 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 - md5: 808d70603573b87f3427b61501fa376d + size: 402222 + timestamp: 1749552884791 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 + md5: e1e0595633f79ce40f3fba9a337a155b depends: - __osx >=10.13 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 341650 - timestamp: 1746011664546 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b - md5: d098a1cca9d588cd4d258d06a08a454e + size: 345091 + timestamp: 1749552991974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 + md5: 0587a57e200568a71982173c07684423 depends: - __osx >=11.0 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 213341 - timestamp: 1746011718977 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 - md5: 01617534ef71b5385ebba940a6d6150d + size: 214660 + timestamp: 1749553221709 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e + md5: 2566a45fb15e2f540eff14261f1242af depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -11641,8 +11627,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 472718 - timestamp: 1746016414502 + size: 476515 + timestamp: 1749553103224 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 md5: 5a5870a74432aa332f7d32180633ad05 @@ -11707,17 +11693,17 @@ packages: - pkg:pypi/pre-commit?source=hash-mapping size: 195854 timestamp: 1742475656293 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - sha256: 31d2fbd381d6ecc9f01d106da5e095104b235917a0b3c342887ee66ca0e85025 - md5: 7bfaef51c8364f6f5096a5a60bb83413 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + sha256: 454e2c0ef14accc888dd2cd2e8adb8c6a3a607d2d3c2f93962698b5718e6176d + md5: c64b77ccab10b822722904d889fa83b5 depends: - python >=3.9 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/prometheus-client?source=hash-mapping - size: 53514 - timestamp: 1747487319612 + size: 52641 + timestamp: 1748896836631 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b md5: d17ae9db4dc594267181bd199bf9a551 @@ -11729,7 +11715,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/prompt-toolkit?source=compressed-mapping + - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271841 timestamp: 1744724188108 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda @@ -11899,17 +11885,17 @@ packages: purls: [] size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a + md5: 6b6ece66ebcae2d5f326c77ef2c5a066 depends: - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/pygments?source=hash-mapping - size: 888600 - timestamp: 1736243563082 + - pkg:pypi/pygments?source=compressed-mapping + size: 889287 + timestamp: 1750615908735 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda sha256: 0ddfbff3596d382b7498b42185d1852625cd949f77dab25f392329b2b61fdd1e md5: 7ec06aad0aaf2bbb04b3e97eebb95a3e @@ -12030,12 +12016,12 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 147736 timestamp: 1727646635489 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - sha256: 7cc9dd5c836631c733173c88187231bfc0438135e0ddf94e866e45b3d10592bd - md5: 3b2f520d27fa7cf9c6c73fb43c69a321 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda + sha256: 1124855261a8ddbe89d3d3d9bff81baa367d2f8b8300d0d94bb0db011f34e07c + md5: 9ed5f7f859b030414087e221e6881fe1 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - setuptools @@ -12043,14 +12029,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 489258 - timestamp: 1736891091428 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - sha256: 91a27ede294fec129d115f2e0b0ce881f0c12332ee5e9c33ba522c037ad14bbb - md5: 0925c0e6ee32098c461423ea93490b97 + size: 486545 + timestamp: 1750207980507 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + sha256: d4376eba59828c0134a439d5c82ee1d7a2dcd4f7c80878859b363865979b3f56 + md5: 5cdd230ab8467ca37570cd09a3977e17 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - setuptools @@ -12058,14 +12044,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 489634 - timestamp: 1736891165910 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - sha256: 7eb9c40a460ea769f024aaf45dae9fde7ca41137ca82154c50c8aead8a32ff88 - md5: cc865b09e7a02328840b163fb8856731 + size: 484609 + timestamp: 1750207854345 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda + sha256: ae4d7acab635209c88586849e1023892fc3242b0540567178efc17546eb33586 + md5: bff41faa73404184a27ec3903bc1baf2 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -12074,14 +12060,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 480994 - timestamp: 1736891387770 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 - md5: 0726db04477a28c51d1a260afb356b67 + size: 476864 + timestamp: 1750208146293 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + sha256: d4b1ae7f925720c1a6643c03199c6a47ba6a536bfd630f522baa5fe6ebf4a786 + md5: 02247b8a9ba52a15a53edd6d4cf9dac4 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -12090,45 +12076,45 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 478921 - timestamp: 1736891272846 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - sha256: 94e00e4c9b5c5d8b2374321a0f908b7812b06ac8c9cb99242ddaa4ea0091f0be - md5: d16654f6b3f602bb0acab446c55bcafb + size: 474838 + timestamp: 1750207878592 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda + sha256: f8055dedb38952114787e56cf56827108daff2b9c1e340e0fe1e45164eef3825 + md5: 1ea1af1e872c875b1532c6b5c562a0ee depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 385111 - timestamp: 1736927116099 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - sha256: 974fc6659f162a6e9cf201e5544f32d5c38d795a1141b327f87be2821dc7bf07 - md5: 2486dd4f176f772531e0ecf22a8b85bd + size: 384309 + timestamp: 1750225386024 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + sha256: df309c1fd5a015d92c687200a10661a63955387620f61b1dd17a151d4a6ad4d1 + md5: dc83fce82c147af35c199348ce4938a6 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 381786 - timestamp: 1736927108218 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - sha256: 33635759c626103696963a4d439f01cc534fe94c318ce5a14c7b9ddbe8dfb78c - md5: 39da4013010bd559600f775ebf6a5915 + size: 380589 + timestamp: 1750225380233 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda + sha256: 78d7e37661a41f18190a9b51c74712e69f7fdc2505fb2d5866d1d1843acb98e3 + md5: 1cdf530164d41cf7424e28f39562fe83 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -12136,15 +12122,15 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 389214 - timestamp: 1736927161972 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - sha256: 53d099865f8f758029708f4365ee7c9184d9ffcc8fc8210971b723a3936f9c00 - md5: dc263e6e18b32318a43252dbb0596ad4 + size: 390526 + timestamp: 1750225447749 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + sha256: a6f262fe5706c73dce7ca7fbec9a055fc225422ad8d7fc45dd66ad9dddb0afe3 + md5: 5b7a58b273bca2c67dd8ddaea92e404e depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -12152,8 +12138,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 383608 - timestamp: 1736927118445 + size: 386128 + timestamp: 1750225477437 - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl name: pyreadline3 version: 3.5.4 @@ -12190,15 +12176,16 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 - md5: c3c9316209dec74a705a36797970c6be - depends: - - colorama - - exceptiongroup >=1.0.0rc8 - - iniconfig - - packaging - - pluggy <2,>=1.5 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: a49c2283f24696a7b30367b7346a0144 + depends: + - colorama >=0.4 + - exceptiongroup >=1 + - iniconfig >=1 + - packaging >=20 + - pluggy >=1.5,<2 + - pygments >=2.7.2 - python >=3.9 - tomli >=1 constrains: @@ -12207,11 +12194,11 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=hash-mapping - size: 259816 - timestamp: 1740946648058 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd - md5: 1e35d8f975bc0e984a19819aa91c440a + size: 276562 + timestamp: 1750239526127 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 + md5: ce978e1b9ed8b8d49164e90a5cdc94cd depends: - coverage >=7.5 - pytest >=4.6 @@ -12220,9 +12207,9 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytest-cov?source=hash-mapping - size: 27565 - timestamp: 1743886993683 + - pkg:pypi/pytest-cov?source=compressed-mapping + size: 28216 + timestamp: 1749778064293 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda sha256: b6fed61a0f6aba248fe4ad590427d92ed94a85c3a2fd238362f4c1d3b5d900a4 md5: 07ab2b7111d3e814cfd73581e34cb9a1 @@ -12237,9 +12224,9 @@ packages: - pkg:pypi/pytest-profiling?source=hash-mapping size: 15889 timestamp: 1740145872989 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 - md5: 59aad4fb37cabc0bacc73cf344612ddd +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 + md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 depends: - execnet >=2.1 - pytest >=7.0.0 @@ -12250,11 +12237,11 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-xdist?source=hash-mapping - size: 38147 - timestamp: 1733240891538 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 - md5: b61d4fbf583b8393d9d00ec106ad3658 + size: 39210 + timestamp: 1748342202415 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda + sha256: 9979a7d4621049388892489267139f1aa629b10c26601ba5dce96afc2b1551d4 + md5: 8c399445b6dc73eab839659e6c7b5ad1 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -12264,7 +12251,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -12277,11 +12264,11 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 30545496 - timestamp: 1744325586785 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 - md5: a41d26cd4d47092d683915d058380dec + size: 30629559 + timestamp: 1749050021812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d + md5: 94206474a5608243a10c92cefbe0908f depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -12291,7 +12278,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -12304,18 +12291,18 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 31279179 - timestamp: 1744325164633 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - sha256: fcd4b8a9a206940321d1d6569ddac2e99f359f0d5864e48140374a85aed5c27f - md5: cfa36957cba60dca8e79a974d09b6a2c + size: 31445023 + timestamp: 1749050216615 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda + sha256: d8e15db837c10242658979bc475298059bd6615524f2f71365ab8e54fbfea43c + md5: 6e28c31688c6f1fdea3dc3d48d33e1c0 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12326,18 +12313,18 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15467842 - timestamp: 1744324543915 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 - md5: 597c4102c97504ede5297d06fb763951 + size: 15423460 + timestamp: 1749049420299 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b + md5: 06049132ecd09d0c1dc3d54d93cf1d5d depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12348,18 +12335,18 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13783219 - timestamp: 1744324415187 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - sha256: ea91eb5bc7160cbc6f8110702f9250c87e378ff1dc83ab8daa8ae7832fb5d0de - md5: 6ab5f6a9e85f1b1848b6518e7eea63ee + size: 13571569 + timestamp: 1749049058713 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda + sha256: 2c966293ef9e97e66b55747c7a97bc95ba0311ac1cf0d04be4a51aafac60dcb1 + md5: 95facc4683b7b3b9cf8ae0ed10f30dce depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12370,18 +12357,18 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 13584762 - timestamp: 1744323773319 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e - md5: c88f1a7e1e7b917d9c139f03b0960fea + size: 14573820 + timestamp: 1749048947732 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + sha256: cde8b944c2dc378a5afbc48028d0843583fd215493d5885a80f1b41de085552f + md5: 9207ebad7cfbe2a4af0702c92fd031c4 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12392,17 +12379,17 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 12932743 - timestamp: 1744323815320 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - sha256: 41e1c07eecff9436b9bb27724822229b2da6073af8461ede6c81b508c0677c56 - md5: c1f91331274f591340e2f50e737dfbe9 + size: 13009234 + timestamp: 1749048134449 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda + sha256: 723dbca1384f30bd2070f77dd83eefd0e8d7e4dda96ac3332fbf8fe5573a8abb + md5: bedbb6f7bb654839719cd528f9b298ad depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -12414,17 +12401,17 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 18299489 - timestamp: 1744323460367 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - sha256: a791fa8f5ce68ab00543ecd3798bfa573db327902ccd5cb7598fd7e94ea194d3 - md5: 495e849ebc04562381539d25cf303a9f + size: 18242669 + timestamp: 1749048351218 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e + md5: 6aa5e62df29efa6319542ae5025f4376 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -12436,20 +12423,20 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 15941050 - timestamp: 1744323489788 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e + size: 15829289 + timestamp: 1749047682640 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 depends: - python >=3.9 - six >=1.5 + - python license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping - size: 222505 - timestamp: 1733215763718 + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c @@ -12480,7 +12467,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=compressed-mapping + - pkg:pypi/tzdata?source=hash-mapping size: 144160 timestamp: 1742745254292 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda @@ -12698,9 +12685,9 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 181734 timestamp: 1737455207230 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda - sha256: e78fc8c500b96070359311082b4ebc5d66e52ddb2891861c728a247cf52892ba - md5: eb719a63f26215bba3ee5b0227c6452b +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda + sha256: 1bf06369b9c22caf69351aecef3aed2282ba5224338aa6a8316dc5754f3f9a85 + md5: 43618006ed69ec49e144206b34ab93e6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -12713,11 +12700,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 390342 - timestamp: 1743831429166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - sha256: 65a264837f189b0c69c5431ea8ef44e405c472fedba145b05055f284f08bc663 - md5: fa0ab7d5bee9efbc370e71bcb5da9856 + size: 391376 + timestamp: 1749898590440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + sha256: 8564a7beb906476813a59a81a814d00e8f9697c155488dbc59a5c6e950d5f276 + md5: 4b9a9cda3292668831cf47257ade22a6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -12730,11 +12717,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 379554 - timestamp: 1743831426292 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda - sha256: 9577a68dd2702b0ed969b79e92702935f1d0dc00368375b1da94003cdd12cdb8 - md5: 3aeb333ef7ca17c4294ccf2a6ae49438 + size: 378610 + timestamp: 1749898590652 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda + sha256: fa4a587bde9a77eec7d9eaaed98946c51e26b7fd48c7faa52e79e0d8c5d325b1 + md5: 784c983706654c4d3571ace6aa22287d depends: - __osx >=10.13 - libcxx >=18 @@ -12746,11 +12733,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 369941 - timestamp: 1743831465910 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - sha256: 9e89fab2c70a47298e72429b70cbf233d69f16f92c7dcad3b60db2e22afea00d - md5: 7c068120e36588fefecf8e91b1b3ae38 + size: 368679 + timestamp: 1749898684495 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + sha256: 6a488eea1e0661e3b96634a254bf82f497ef800b0051510fcaea6d22c0dacd17 + md5: e5af6563b9fceeee0cba3b1863682a5f depends: - __osx >=10.13 - libcxx >=18 @@ -12762,11 +12749,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365060 - timestamp: 1743831517482 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda - sha256: 5f50272cbe00701a79d3b5f3aa14808b6f8b80a3ea636f99f4746f109f02030d - md5: 461e2af0a7a77162309bda6f92a1a66c + size: 363095 + timestamp: 1749898689287 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda + sha256: 44e2bd871b2a0e122ffbda49cd8545ba1b08eaa90927d245ab59d45fea3c25f8 + md5: 2f9bf162aa29335b0c16a4a9fa9dad4f depends: - __osx >=11.0 - libcxx >=18 @@ -12779,11 +12766,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 367977 - timestamp: 1743831535027 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - sha256: b8b41da0aac8aab5e48e62ff341374f12cd0ace7a59b80f56bc75371aa4796d5 - md5: 1e2a85e9493ad7c892ecbca89a11837c + size: 365985 + timestamp: 1749898718919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + sha256: 709c673d5b45774ce003648427103732c834a300447452a3c8369469e2aa6bfd + md5: 0ff6afa66b15299c051f57e5ec257e88 depends: - __osx >=11.0 - libcxx >=18 @@ -12796,11 +12783,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 364333 - timestamp: 1743831518152 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda - sha256: d917b120cb10b32d90d40fc2b6a612cf75a9298d159e11da3a8672a3474b4f93 - md5: 0497becb33761fca9b8cfcb9f7278361 + size: 359326 + timestamp: 1749898793266 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda + sha256: cc47fc0264c839c9062423406d8c2e4b25360041bb47d33277daeaeab3f88101 + md5: 5ff8a3328db08043afb64b77cdc4b6ea depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 @@ -12813,11 +12800,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 372040 - timestamp: 1743831788464 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - sha256: 07fbf17632c6300e53550f829f2e10d2c6f68923aa139d0618eaeadf2d0043ae - md5: ccfe948627071c03e36aa46d9e94bf12 + size: 374069 + timestamp: 1749899010761 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + sha256: e66267a7a61bfba5cdb50089c04a6f140edb9133c5ce34331ee2f95370460b8c + md5: 37d6508caaa4c3a91e3434192d192685 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 @@ -12830,38 +12817,35 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 363177 - timestamp: 1743831815399 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda - sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486 - md5: 6f445fb139c356f903746b2b91bbe786 + size: 364291 + timestamp: 1749899188003 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + sha256: 7a0b82cb162229e905f500f18e32118ef581e1fd182036f3298510b8e8663134 + md5: 2b4249747a9091608dbff2bd22afde44 depends: - - libre2-11 2024.07.02 hba17884_3 + - libre2-11 2025.06.26 hba17884_0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 26811 - timestamp: 1741121137599 -- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda - sha256: 291ebc1f3c6d479077399298c42c5e510e354664212cba74c04b9ab13ad811de - md5: 11dae9af12311eee952f3431282c822d + size: 27330 + timestamp: 1751053087063 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda + sha256: 362d3172f6074f37688a4aa6f5caa8b46ffb7552887d3dfe7eaef2039aca6441 + md5: 2dc6248cb8249c98bd88c51ff1c86e24 depends: - - libre2-11 2024.07.02 h08ce7b7_3 + - libre2-11 2025.06.26 hfc00f1c_0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 26925 - timestamp: 1741121237531 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda - sha256: 248af2869bf54f77f5b4c6e144b535bbc2a6d4c27228f4fb2ed689f8df9f071b - md5: d4e82bd66b71c29da35e1f634548e039 + size: 27456 + timestamp: 1751053203733 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda + sha256: d7c4f0144530c829bc9c39d1e17f31242a15f4e91c9d7d0f8dda58ab245988bb + md5: d519f1f98599719494472639406faffb depends: - - libre2-11 2024.07.02 hd41c47c_3 + - libre2-11 2025.06.26 hd41c47c_0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 26954 - timestamp: 1741121389739 + size: 27423 + timestamp: 1751053372858 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -12908,9 +12892,9 @@ packages: - pkg:pypi/referencing?source=hash-mapping size: 51668 timestamp: 1737836872415 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 + md5: f6082eae112814f1447b56a5e1f6ed05 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 @@ -12923,8 +12907,8 @@ packages: license_family: APACHE purls: - pkg:pypi/requests?source=hash-mapping - size: 58723 - timestamp: 1733217126197 + size: 59407 + timestamp: 1749498221996 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 md5: 36de09a8d3e5d5e6f4ee63af49e59706 @@ -13088,12 +13072,12 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 252939 timestamp: 1747837730306 -- pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl name: scipy - version: 1.15.3 - sha256: 52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed + version: 1.16.0 + sha256: adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49 requires_dist: - - numpy>=1.23.5,<2.5 + - numpy>=1.25.2,<2.6 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -13105,11 +13089,11 @@ packages: - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.0,<2.1.1 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<8.0.0 ; extra == 'doc' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' - intersphinx-registry ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-copybutton ; extra == 'doc' @@ -13117,10 +13101,11 @@ packages: - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - - myst-nb ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' - pooch ; extra == 'doc' - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' - mypy==1.10.0 ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' @@ -13130,7 +13115,7 @@ packages: - rich-click ; extra == 'dev' - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' - requires_python: '>=3.10' + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda sha256: b9faaa024b77a3678a988c5a490f02c4029c0d5903998b585100e05bc7d4ff36 md5: 00b999c5f9d01fb633db819d79186bd4 @@ -13237,17 +13222,47 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - sha256: 56ce31d15786e1df2f1105076f3650cd7c1892e0afeeb9aa92a08d2551af2e34 - md5: ea075e94dc0106c7212128b6a25bbc4c +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 + md5: 4de79c071274a53dcaf2a8c749d1499e depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/setuptools?source=hash-mapping - size: 748621 - timestamp: 1747807014292 + size: 748788 + timestamp: 1748804951958 +- pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl + name: simplejson + version: 3.20.1 + sha256: 03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 88a7baa8211089b9e58d78fbc1b0b322103f3f3d459ff16f03a36cece0d0fcf0 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl + name: simplejson + version: 3.20.1 + sha256: 299b1007b8101d50d95bc0db1bf5c38dc372e85b504cf77f596462083ee77e3f + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: d492ed8e92f3a9f9be829205f44b1d0a89af6582f0cf43e0d129fa477b93fe0c + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -13424,17 +13439,6 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a - md5: 959484a66b4b76befcddc4fa97c95567 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tabulate?source=hash-mapping - size: 37554 - timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -13513,40 +13517,43 @@ packages: - pkg:pypi/tinycss2?source=hash-mapping size: 28285 timestamp: 1729802975370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 + md5: a0116df4f4ed05c303811a837d5b39d8 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD purls: [] - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 - md5: bf830ba5afc507c6232d4ef0fb1a882d + size: 3285204 + timestamp: 1748387766691 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc + md5: 9864891a6946c2fe037c02fca7392ab4 depends: - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD purls: [] - size: 3270220 - timestamp: 1699202389792 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 3259809 + timestamp: 1748387843735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e + md5: 7362396c170252e7b7b0c8fb37fe9c78 depends: - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD purls: [] - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 - md5: fc048363eb8f03cd1737600a5d08aafe + size: 3125538 + timestamp: 1748388189063 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 + md5: ebd0e761de9aa879a51d22cc721bd095 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -13554,8 +13561,8 @@ packages: license: TCL license_family: BSD purls: [] - size: 3503410 - timestamp: 1699202577803 + size: 3466348 + timestamp: 1748388121356 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 md5: b0dd904de08b7db706167240bf37b164 @@ -13578,9 +13585,9 @@ packages: - pkg:pypi/tomli?source=hash-mapping size: 19167 timestamp: 1733256819729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda - sha256: d297d5c0cb91627b17d49b4c633d1bb923b8e76a8796edcc6176b0d4379508db - md5: e6aa9d8ca506982ed2a059b3c6057fc3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda + sha256: 66cc98dbf7aafe11a4cb886a8278a559c1616c098ee9f36d41697eaeb0830a4d + md5: 24e9f474abd101554b7a91313b9dfad6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13589,12 +13596,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 867280 - timestamp: 1747384567722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - sha256: 4a3bb32e1c59dfc1001ed880702a3f734dfea58e99bd80fe8efa8caf65c3fd1a - md5: 2a91ae5d15666fd76f00835ade9816fd + - pkg:pypi/tornado?source=hash-mapping + size: 869342 + timestamp: 1748003427256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 + md5: c532a6ee766bed75c4fa0c39e959d132 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13604,11 +13611,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 849653 - timestamp: 1747384561578 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda - sha256: 5923cc6ffbef6da367c30d63d82e6f751b9503d5eef6d6488e92eab6d907a476 - md5: 5776f9693ac1c592a26a2b8fb7220e4d + size: 850902 + timestamp: 1748003427956 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda + sha256: 60a04246a108ebd17dc12062cc4cd2b8a136788119c4ad2504239f5f5387b0b6 + md5: ce6eeb4f8a9e5621a97351345fc45102 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -13617,11 +13624,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 869019 - timestamp: 1747384732145 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - sha256: 7ee3fc14d22d24d65656dd13e893d8954e84be2f4bdfb94fdeb298fdccf0a3af - md5: 31d9b2888fc8d9757457176056ea7025 + size: 869842 + timestamp: 1748003575841 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + sha256: 6e97d6785c466ddd0fe3dad3aa54db6434824bcab40f7490e90943018560bf67 + md5: 62b3f3d78cb285b2090024e2a1e795f7 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -13630,11 +13637,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 849286 - timestamp: 1747384668864 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda - sha256: 675c378b691d33a09f70ff684493c2395821c0d2934b37bea8ad9f260461a048 - md5: ff86e96e324c0e08a55aee1111d93582 + size: 850340 + timestamp: 1748003643552 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda + sha256: 640183a5955f373f86f56193dbd0f289d98cdf8e19f37284ac52e8fd37ea2632 + md5: 8b0ba58f117a8e1754f87b4c69818d21 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -13643,12 +13650,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 867849 - timestamp: 1747384810805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - sha256: 763ab5fbc08e4f025a8fd2020f57b6c299c2839dd3f1fa19f997eb3a2e10b319 - md5: d804565fc1c83e368c7bfd8beb17c627 + - pkg:pypi/tornado?source=hash-mapping + size: 867366 + timestamp: 1748003598139 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + sha256: 02835bf9f49a7c6f73622614be67dc20f9b5c2ce9f663f427150dc0579007daa + md5: 375a5a90946ff09cd98b9cf5b833023c depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -13658,11 +13665,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 849071 - timestamp: 1747384649681 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda - sha256: f727706508f0d4e18ae760478ec2488ac83f3df0687bf7a8acbbefae8e7e1a4e - md5: b022fa1dba1d3a72c5695501d017c0c8 + size: 851614 + timestamp: 1748003575892 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda + sha256: c7b28b96f21fa9cf675b051fe3039682038debf69ab8a3aa25cfdf3fa4aa9f8e + md5: 3b58e6c2e18a83cf64ecc550513b940c depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -13672,12 +13679,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 870561 - timestamp: 1747384847474 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - sha256: 289c367de4e4ab4b24204c06171415581dcb6637a10635107e35d808df9fa195 - md5: 591190f2c78d8d6a8466e7aa6bb9f68a + - pkg:pypi/tornado?source=hash-mapping + size: 869036 + timestamp: 1748003680143 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + sha256: cec4ab331788122f7f01dd02f57f8e21d9ae14553dedd6389d7dfeceb3592399 + md5: 06b156bbbe1597eb5ea30b931cadaa32 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -13688,8 +13695,8 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 853373 - timestamp: 1747384811468 + size: 853357 + timestamp: 1748003925528 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -13721,28 +13728,28 @@ packages: version: 6.0.12.20250516 sha256: 8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530 requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 - md5: 568ed1300869dca0ba09fb750cda5dbb +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 + md5: a1cdd40fc962e2f7944bc19e01c7e584 depends: - - typing_extensions ==4.13.2 pyh29332c3_0 + - typing_extensions ==4.14.0 pyhe01879c_0 license: PSF-2.0 license_family: PSF purls: [] - size: 89900 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 - md5: 83fc6ae00127671e301c9f44254c31b8 + size: 90310 + timestamp: 1748959427551 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c + md5: 2adcd9bb86f656d3d43bf84af59a1faf depends: - python >=3.9 - python license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/typing-extensions?source=compressed-mapping - size: 52189 - timestamp: 1744302253997 + - pkg:pypi/typing-extensions?source=hash-mapping + size: 50978 + timestamp: 1748959427551 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -13907,9 +13914,9 @@ packages: - pkg:pypi/uri-template?source=hash-mapping size: 23990 timestamp: 1733323714454 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c - md5: c1e349028e0052c4eea844e94f773065 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 + md5: 436c165519e140cb08d246a4472a9d6a depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -13920,32 +13927,32 @@ packages: license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 100791 - timestamp: 1744323705540 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 - md5: d3f0381e38093bde620a8d85f266ae55 + size: 101735 + timestamp: 1750271478254 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 + md5: 18b6bf6f878501547786f7bf8052a34d depends: - - vc14_runtime >=14.42.34433 + - vc14_runtime >=14.44.35208 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17893 - timestamp: 1743195261486 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 - md5: 91651a36d31aa20c7ba36299fb7068f4 + size: 17914 + timestamp: 1750371462857 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 + md5: 14d65350d3f5c8ff163dc4f76d6e2830 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34438.* *_26 + - vs2015_runtime 14.44.35208.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 750733 - timestamp: 1743195092905 + size: 756109 + timestamp: 1750371459116 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 md5: c0600c1b374efa7a1ff444befee108ca @@ -13960,20 +13967,20 @@ packages: - pkg:pypi/virtualenv?source=hash-mapping size: 4133755 timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 - md5: 3357e4383dbce31eed332008ede242ab +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b + md5: 312f3a0a6b3c5908e79ce24002411e32 depends: - - vc14_runtime >=14.42.34438 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD purls: [] - size: 17873 - timestamp: 1743195097269 -- pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + size: 17888 + timestamp: 1750371463202 +- pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl name: wadler-lindig - version: 0.1.6 - sha256: d707f63994c7d3e1e125e7fb7e196f4adb6f80f4a11beb955c6da937754026a3 + version: 0.1.7 + sha256: e3ec83835570fd0a9509f969162aeb9c65618f998b1f42918cfc8d45122fe953 requires_dist: - numpy ; extra == 'dev' - pre-commit ; extra == 'dev' @@ -14052,7 +14059,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/widgetsnbextension?source=compressed-mapping + - pkg:pypi/widgetsnbextension?source=hash-mapping size: 889285 timestamp: 1744291155057 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda @@ -14073,9 +14080,9 @@ packages: license_family: MIT purls: [] size: 1176306 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - sha256: 83ad2be5eb1d359b4cd7d7a93a6b25cdbfdce9d27b37508e2a4efe90d3a4ed80 - md5: 7c91bfc90672888259675ad2ad28af9c +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + sha256: a5d4af601f71805ec67403406e147c48d6bad7aaeae92b0622b7e2396842d3fe + md5: 397a013c2dc5145a70737871aaa87e98 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14083,8 +14090,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 392870 - timestamp: 1745806998840 + size: 392406 + timestamp: 1749375847832 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -14473,17 +14480,17 @@ packages: purls: [] size: 2527503 timestamp: 1731585151036 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 - md5: 0c3cc595284c5e8f0f9900a9b228a332 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad + md5: df5e78d904988eb55042c0c97446079f depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/zipp?source=hash-mapping - size: 21809 - timestamp: 1732827613585 + size: 22963 + timestamp: 1749421737203 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda sha256: 76d28240cc9fa0c3cb2cde750ecaf98716ce397afaf1ce90f8d18f5f43a122f1 md5: ca02de88df1cc3cfc8f24766ff50cb3c diff --git a/sandbox/plots.ipynb b/sandbox/plots.ipynb new file mode 100644 index 0000000000..14eafeae61 --- /dev/null +++ b/sandbox/plots.ipynb @@ -0,0 +1,37 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from ttsim.plot_dag import plot_interface_dag\n", + "\n", + "plot_interface_dag()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index a060f485f9..84b91d5e1c 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -28,6 +28,7 @@ import datetime from ttsim.interface_dag_elements.typing import ( + FlatInterfaceObjects, QNameStrings, UnorderedQNames, ) @@ -62,58 +63,51 @@ def main( Main function that processes the inputs and returns the outputs. """ - flat_inputs = _harmonize_inputs(locals()) - flat_output = _harmonize_outputs(output) + input_qnames = _harmonize_inputs(locals()) + output_qnames = _harmonize_outputs(output) - if not any(re.match("(input|processed)_data", s) for s in flat_inputs): - flat_inputs["processed_data"] = {} - flat_inputs["processed_data_columns"] = None + if not any(re.match("(input|processed)_data", s) for s in input_qnames): + input_qnames["processed_data"] = {} + input_qnames["processed_data_columns"] = None - nodes = { - p: n - for p, n in load_interface_functions_and_inputs().items() - if p not in flat_inputs - } + nodes = _resolve_dynamic_interface_objects_to_static_nodes( + flat_interface_objects=load_flat_interface_functions_and_inputs(), + input_qnames=list(input_qnames), + ) _fail_if_requested_nodes_cannot_be_found( - output_qnames=flat_output["names"], + output_qnames=output_qnames["names"], nodes=nodes, ) - # Replace InputDependentInterfaceFunction with InterfaceFunction - for p, n in nodes.items(): - if isinstance(n, InputDependentInterfaceFunction): - nodes[p] = n.resolve_to_static_interface_function(list(flat_inputs.keys())) - functions = { - p: n - for p, n in nodes.items() - if isinstance(n, InterfaceFunction) - and not isinstance(n, InputDependentInterfaceFunction) + qn: n + for qn, n in nodes.items() + if isinstance(n, InterfaceFunction) and qn not in input_qnames } # If targets are None, all failures and warnings are included, anyhow. - if fail_and_warn and flat_output["names"] is not None: - flat_output["names"] = include_fail_and_warn_nodes( + if fail_and_warn and output_qnames["names"] is not None: + output_qnames["names"] = include_fail_and_warn_nodes( functions=functions, - output_qnames=flat_output["names"], + output_qnames=output_qnames["names"], ) - if flat_output["name"] is None: + if output_qnames["name"]: f = dags.concatenate_functions( functions=functions, - targets=flat_output["names"], - return_type="dict", + targets=output_qnames["name"], enforce_signature=False, set_annotations=False, ) else: f = dags.concatenate_functions( functions=functions, - targets=flat_output["name"], + targets=output_qnames["names"], + return_type="dict", enforce_signature=False, set_annotations=False, ) - return f(**flat_inputs) + return f(**input_qnames) def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: @@ -177,6 +171,74 @@ def _harmonize_outputs( return flat_output +def _resolve_dynamic_interface_objects_to_static_nodes( + flat_interface_objects: FlatInterfaceObjects, + input_qnames: list[str], +) -> dict[str, InterfaceFunction | InterfaceInput]: + """Resolve dynamic interface objects to static nodes. + + Make InputDependentInterfaceFunctions static by checking the input data and picking + among the functions with the same leaf name the one that satisfies the include + condition. + + Fails if multiple functions with the same leaf name satisfy the include condition. + + Parameters + ---------- + flat_interface_objects + The interface objects to resolve. + input_qnames + The input qnames to check the include conditions against. + + Returns + ------- + A dictionary of static interface objects. + + """ + static_nodes: dict[str, InterfaceFunction | InterfaceInput] = {} + path_to_idif: dict[tuple[str, ...], list[InputDependentInterfaceFunction]] = {} + for orig_p, orig_object in flat_interface_objects.items(): + if isinstance(orig_object, InputDependentInterfaceFunction): + new_path = orig_p[:-1] + (orig_object.leaf_name,) + if new_path not in path_to_idif: + path_to_idif[new_path] = [] + path_to_idif[new_path].append(orig_object) + else: + static_nodes[dt.qname_from_tree_path(orig_p)] = orig_object + + for p, functions in path_to_idif.items(): + functions_satisfying_include_condition = [ + f for f in functions if f.include_condition_satisfied(input_qnames) + ] + _fail_if_multiple_functions_satisfy_include_condition( + funcs=functions_satisfying_include_condition, + path=p, + ) + if functions_satisfying_include_condition: + static_nodes[dt.qname_from_tree_path(p)] = ( + functions_satisfying_include_condition[0] + ) + return static_nodes + + +def _fail_if_multiple_functions_satisfy_include_condition( + funcs: list[InputDependentInterfaceFunction], + path: tuple[str, ...], +) -> None: + """Fail if multiple functions satisfy the include condition.""" + if len(funcs) > 1: + func_names = "\n".join(f.original_function_name for f in funcs) + msg = ( + f"Multiple InputDependentInterfaceFunctions with the path {path} " + "satisfy their include conditions:\n\n" + f"{func_names}\n\n" + "Put differently, there are multiple ways to build a specific target. " + "Make sure the input data you provide satisfies only one of the include " + "conditions." + ) + raise ValueError(msg) + + def include_fail_and_warn_nodes( functions: dict[str, InterfaceFunction], output_qnames: QNameStrings, @@ -220,13 +282,10 @@ def include_fail_and_warn_nodes( return out -def load_interface_functions_and_inputs() -> dict[ - str, - InterfaceFunction | InterfaceInput, -]: +def load_flat_interface_functions_and_inputs() -> FlatInterfaceObjects: """Load the collection of functions and inputs from the current directory.""" orig_functions = _load_orig_functions() - return _remove_tree_logic_from_function_collection( + return _remove_tree_logic_from_functions_in_collection( orig_functions=orig_functions, top_level_namespace={path[0] for path in orig_functions}, ) @@ -256,13 +315,13 @@ def _load_orig_functions() -> dict[tuple[str, ...], InterfaceFunction | Interfac return flat_functions -def _remove_tree_logic_from_function_collection( +def _remove_tree_logic_from_functions_in_collection( orig_functions: dict[tuple[str, ...], InterfaceFunction | InterfaceInput], top_level_namespace: UnorderedQNames, -) -> dict[str, InterfaceFunction | InterfaceInput]: - """Map qualified names to column objects / param functions without tree logic.""" +) -> FlatInterfaceObjects: + """Map paths to column objects / param functions without tree logic.""" return { - dags.tree.qname_from_tree_path(path): obj.remove_tree_logic( + path: obj.remove_tree_logic( tree_path=path, top_level_namespace=top_level_namespace, ) diff --git a/src/ttsim/interface_dag_elements/data_converters.py b/src/ttsim/interface_dag_elements/data_converters.py index d7c88b921a..97eb539a01 100644 --- a/src/ttsim/interface_dag_elements/data_converters.py +++ b/src/ttsim/interface_dag_elements/data_converters.py @@ -9,6 +9,7 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import ( + FlatData, NestedData, NestedInputsMapper, NestedStrings, @@ -16,9 +17,17 @@ ) +def _get_p_id_index(data_with_p_id: NestedData | QNameData | FlatData) -> pd.Index: + if "p_id" in data_with_p_id: + return pd.Index(data_with_p_id["p_id"], name="p_id") + if ("p_id",) in data_with_p_id: + return pd.Index(data_with_p_id[("p_id",)], name="p_id") + raise ValueError("No p_id found in data_with_p_id") + + def nested_data_to_df_with_nested_columns( nested_data_to_convert: NestedData, - data_with_p_id: NestedData | QNameData, + data_with_p_id: NestedData | QNameData | FlatData, ) -> pd.DataFrame: """Convert a nested data structure to a DataFrame. @@ -34,16 +43,18 @@ def nested_data_to_df_with_nested_columns( """ flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) + p_id_index = _get_p_id_index(data_with_p_id) + return pd.DataFrame( flat_data_to_convert, - index=pd.Index(data_with_p_id["p_id"], name="p_id"), + index=p_id_index, ) def nested_data_to_df_with_mapped_columns( nested_data_to_convert: NestedData, nested_outputs_df_column_names: NestedStrings, - data_with_p_id: NestedData | QNameData, + data_with_p_id: NestedData | QNameData | FlatData, ) -> pd.DataFrame: """Convert a nested data structure to a DataFrame. @@ -61,19 +72,20 @@ def nested_data_to_df_with_mapped_columns( """ flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) flat_df_columns = dt.flatten_to_tree_paths(nested_outputs_df_column_names) + p_id_index = _get_p_id_index(data_with_p_id) return pd.DataFrame( {flat_df_columns[path]: data for path, data in flat_data_to_convert.items()}, - index=pd.Index(data_with_p_id["p_id"], name="p_id"), + index=p_id_index, ) -def df_with_mapped_columns_to_nested_data( +def df_with_mapped_columns_to_flat_data( mapper: NestedInputsMapper, df: pd.DataFrame, xnp: ModuleType, -) -> NestedData: - """Transform a pandas DataFrame to a nested dictionary expected by TTSIM. +) -> FlatData: + """Transform a pandas DataFrame to a flattened data structure. ` Args ---- @@ -89,7 +101,7 @@ def df_with_mapped_columns_to_nested_data( Returns ------- - A nested dictionary structure containing the data organized according to the + A flattened data structure containing the data organized according to the mapping definition. Examples @@ -112,40 +124,55 @@ def df_with_mapped_columns_to_nested_data( ... ) >>> result { - "n1": { - "n2": np.array([1, 2, 3]), - "n3": np.array([4, 5, 6]), - }, - "n4": np.array([3, 3, 3]), + ("n1", "n2"): np.array([1, 2, 3]), + ("n1", "n3"): np.array([4, 5, 6]), + ("n4",): np.array([3, 3, 3]), } """ - qname_to_array = {} - for qname, df_col_name in dt.flatten_to_qnames(mapper).items(): + path_to_array = {} + for path, df_col_name in dt.flatten_to_tree_paths(mapper).items(): if df_col_name in df.columns: - qname_to_array[qname] = xnp.asarray(df[df_col_name]) + path_to_array[path] = xnp.asarray(df[df_col_name]) else: - qname_to_array[qname] = xnp.asarray( + path_to_array[path] = xnp.asarray( pd.Series( [df_col_name] * len(df), index=df.index, ), ) - return dt.unflatten_from_qnames(qname_to_array) + return path_to_array -def df_with_nested_columns_to_nested_data( +def df_with_nested_columns_to_flat_data( df: pd.DataFrame, xnp: ModuleType, -) -> NestedData: - """Convert a DataFrame with nested columns to a nested data structure.""" - flat_dict_with_correct_leaf_types = { +) -> FlatData: + """Convert a DataFrame with nested columns to a flattened data structure. + + Args: + df: + The pandas DataFrame with nested columns. + xnp: + The numpy module. + + Returns + ------- + A flattened data structure. + + Examples + -------- + >>> df = pd.DataFrame({("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}) + >>> result = df_with_nested_columns_to_flat_data(df, xnp=np) + >>> result + {("a", "b"): np.array([1, 2, 3]), ("c",): np.array([4, 5, 6])} + """ + return { _remove_nan_from_keys(key): xnp.asarray(value) for key, value in df.to_dict(orient="list").items() } - return dt.unflatten_from_tree_paths(flat_dict_with_correct_leaf_types) def _remove_nan_from_keys(path: tuple[str | Any, ...]) -> tuple[str, ...]: diff --git a/src/ttsim/interface_dag_elements/dates.py b/src/ttsim/interface_dag_elements/dates.py index 2dfc2fec34..54d91348fa 100644 --- a/src/ttsim/interface_dag_elements/dates.py +++ b/src/ttsim/interface_dag_elements/dates.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING from ttsim.interface_dag_elements.interface_node_objects import ( + input_dependent_interface_function, interface_function, interface_input, ) @@ -19,7 +20,59 @@ def date_str() -> DashedISOString: """The date to be used as policy date and evaluation date.""" +@interface_input(in_top_level_namespace=True) +def policy_date_str() -> DashedISOString: + """The date to be used as policy date.""" + + +@interface_input(in_top_level_namespace=True) +def evaluation_date_str() -> DashedISOString: + """The date to be used as evaluation date.""" + + @interface_function(in_top_level_namespace=True) def date(date_str: DashedISOString) -> datetime.date: """The date to be used as policy date and evaluation date.""" return to_datetime(date_str) + + +@input_dependent_interface_function( + include_if_all_inputs_present=["policy_date_str", "evaluation_date_str"], + leaf_name="policy_date", + in_top_level_namespace=True, +) +def policy_date_from_policy_date_str(policy_date_str: DashedISOString) -> datetime.date: + """The date to be used as policy date.""" + return to_datetime(policy_date_str) + + +@input_dependent_interface_function( + include_if_any_input_present=["date", "date_str"], + leaf_name="policy_date", + in_top_level_namespace=True, +) +def policy_date_from_date(date: datetime.date) -> datetime.date: + """The date to be used as policy date.""" + return date + + +@input_dependent_interface_function( + include_if_all_inputs_present=["policy_date_str", "evaluation_date_str"], + leaf_name="evaluation_date", + in_top_level_namespace=True, +) +def evaluation_date_from_evaluation_date_str( + evaluation_date_str: DashedISOString, +) -> datetime.date: + """The date to be used as evaluation date.""" + return to_datetime(evaluation_date_str) + + +@input_dependent_interface_function( + include_if_any_input_present=["date", "date_str"], + leaf_name="evaluation_date", + in_top_level_namespace=True, +) +def evaluation_date_from_date(date: datetime.date) -> datetime.date: + """The date to be used as evaluation date.""" + return date diff --git a/src/ttsim/interface_dag_elements/input_data.py b/src/ttsim/interface_dag_elements/input_data.py index 48645ad065..5dde30092c 100644 --- a/src/ttsim/interface_dag_elements/input_data.py +++ b/src/ttsim/interface_dag_elements/input_data.py @@ -5,13 +5,11 @@ import dags.tree as dt from ttsim.interface_dag_elements.data_converters import ( - df_with_mapped_columns_to_nested_data, - df_with_nested_columns_to_nested_data, + df_with_mapped_columns_to_flat_data, + df_with_nested_columns_to_flat_data, ) from ttsim.interface_dag_elements.interface_node_objects import ( - InterfaceFunctionVariant, input_dependent_interface_function, - interface_function, interface_input, ) @@ -27,28 +25,6 @@ ) -def _mapped_df_to_nested_data( - input_data__df_and_mapper__df: pd.DataFrame, - input_data__df_and_mapper__mapper: NestedInputsMapper, - xnp: ModuleType, -) -> NestedData: - return df_with_mapped_columns_to_nested_data( - df=input_data__df_and_mapper__df, - mapper=input_data__df_and_mapper__mapper, - xnp=xnp, - ) - - -def _df_with_nested_columns_to_nested_data( - input_data__df_with_nested_columns: pd.DataFrame, - xnp: ModuleType, -) -> NestedData: - return df_with_nested_columns_to_nested_data( - df=input_data__df_with_nested_columns, - xnp=xnp, - ) - - @interface_input() def df_and_mapper__df() -> pd.DataFrame: pass @@ -64,27 +40,71 @@ def df_with_nested_columns() -> pd.DataFrame: pass -@input_dependent_interface_function( - variants=[ - InterfaceFunctionVariant( - required_input_qnames=["input_data__df_with_nested_columns"], - function=_df_with_nested_columns_to_nested_data, - ), - InterfaceFunctionVariant( - required_input_qnames=[ - "input_data__df_and_mapper__df", - "input_data__df_and_mapper__mapper", - ], - function=_mapped_df_to_nested_data, - ), - ] -) +@interface_input() def tree() -> NestedData: pass -@interface_function() -def flat(tree: NestedData) -> FlatData: +@input_dependent_interface_function( + include_if_all_inputs_present=[ + "input_data__df_and_mapper__df", + "input_data__df_and_mapper__mapper", + ], + leaf_name="flat", +) +def flat_from_df_and_mapper( + df_and_mapper__df: pd.DataFrame, + df_and_mapper__mapper: NestedInputsMapper, + xnp: ModuleType, +) -> FlatData: + """The input DataFrame as a flattened data structure. + + Args: + df_and_mapper__df: + The input DataFrame. + df_and_mapper__mapper: + Dictionary mapping tree paths to column names. + + Returns + ------- + Flattened data structure. + """ + return df_with_mapped_columns_to_flat_data( + df=df_and_mapper__df, + mapper=df_and_mapper__mapper, + xnp=xnp, + ) + + +@input_dependent_interface_function( + include_if_all_inputs_present=["input_data__df_with_nested_columns"], + leaf_name="flat", +) +def flat_from_df_with_nested_columns( + df_with_nested_columns: pd.DataFrame, + xnp: ModuleType, +) -> FlatData: + """The input DataFrame as a flattened data structure. + + Args: + df_with_nested_columns: + The input DataFrame with nested column names. + + Returns + ------- + Flattened data structure. + """ + return df_with_nested_columns_to_flat_data( + df=df_with_nested_columns, + xnp=xnp, + ) + + +@input_dependent_interface_function( + include_if_all_inputs_present=["input_data__tree"], + leaf_name="flat", +) +def flat_from_tree(tree: NestedData) -> FlatData: """The input DataFrame as a flattened data structure. Args: @@ -93,6 +113,6 @@ def flat(tree: NestedData) -> FlatData: Returns ------- - Mapping of tree paths to input data. + Flattened data structure. """ return dt.flatten_to_tree_paths(tree) diff --git a/src/ttsim/interface_dag_elements/interface_node_objects.py b/src/ttsim/interface_dag_elements/interface_node_objects.py index 1b63d8fb20..68f2268497 100644 --- a/src/ttsim/interface_dag_elements/interface_node_objects.py +++ b/src/ttsim/interface_dag_elements/interface_node_objects.py @@ -60,6 +60,7 @@ def remove_tree_logic( def interface_input( + leaf_name: str | None = None, in_top_level_namespace: bool = False, ) -> Callable[[Callable[..., Any]], InterfaceInput]: """ @@ -72,7 +73,7 @@ def interface_input( def inner(func: Callable[..., Any]) -> InterfaceInput: return InterfaceInput( - leaf_name=func.__name__, + leaf_name=leaf_name if leaf_name else func.__name__, in_top_level_namespace=in_top_level_namespace, return_type=func.__annotations__["return"], ) @@ -193,44 +194,52 @@ class InputDependentInterfaceFunction(InterfaceFunction[FunArgTypes, ReturnType] """A function that dynamically changes its behavior based on which InterfaceInput nodes are given by the user.""" - specs: list[InterfaceFunctionVariant] - - def resolve_to_static_interface_function( - self, user_input_qnames: list[str] - ) -> ( - InterfaceFunction[FunArgTypes, ReturnType] - | InputDependentInterfaceFunction[FunArgTypes, ReturnType] - ): - """Generate a static function based on the user inputs.""" - _fail_if_more_than_one_function_variant_matches_inputs( - specs=self.specs, - user_input_qnames=user_input_qnames, - ) - matching_variant = None - for spec in self.specs: - if set(spec.required_input_qnames) <= set(user_input_qnames): - matching_variant = spec - break - - if matching_variant: - return InterfaceFunction( - leaf_name=self.leaf_name, - function=matching_variant.function, - in_top_level_namespace=self.in_top_level_namespace, + include_if_any_input_present: Iterable[str] + include_if_all_inputs_present: Iterable[str] + + def __post_init__(self) -> None: + super().__post_init__() + if ( + not self.include_if_all_inputs_present + and not self.include_if_any_input_present + ): + raise ValueError( + "At least one of `include_if_all_inputs_present` or " + "`include_if_any_input_present` must be specified." ) - return self + + def include_condition_satisfied(self, input_names: Iterable[str]) -> bool: + """Check if the input names match the include condition.""" + # all(()) evaluates to True, so include first bit + all_cond = self.include_if_all_inputs_present and all( + i in input_names for i in self.include_if_all_inputs_present + ) + any_cond = any(i in input_names for i in self.include_if_any_input_present) + return all_cond or any_cond def remove_tree_logic( self, - tree_path: tuple[str, ...], # noqa: ARG002 - top_level_namespace: UnorderedQNames, # noqa: ARG002 - ) -> InputDependentInterfaceFunction[FunArgTypes, ReturnType]: - return self + tree_path: tuple[str, ...], + top_level_namespace: UnorderedQNames, + ) -> InputDependentInterfaceFunction: # type: ignore[type-arg] + """Remove tree logic from the function and update the function signature.""" + return InputDependentInterfaceFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + in_top_level_namespace=self.in_top_level_namespace, + include_if_any_input_present=self.include_if_any_input_present, + include_if_all_inputs_present=self.include_if_all_inputs_present, + ) def input_dependent_interface_function( *, - variants: list[InterfaceFunctionVariant], + include_if_any_input_present: Iterable[str] = (), + include_if_all_inputs_present: Iterable[str] = (), leaf_name: str | None = None, in_top_level_namespace: bool = False, ) -> Callable[ @@ -241,9 +250,12 @@ def input_dependent_interface_function( Parameters ---------- - variants - List of function variants that define different behaviors based on input - availability. + include_if_any_input_present + List of input names that must be present for the function to be used if any of + the inputs are present. + include_if_all_inputs_present + List of input names that must be present for the function to be used if all of + the inputs are present. leaf_name The name that should be used as the function's leaf name in the DAG. If omitted, we use the name of the function as defined. @@ -262,54 +274,13 @@ def inner( leaf_name=leaf_name if leaf_name else func.__name__, function=func, in_top_level_namespace=in_top_level_namespace, - specs=variants, + include_if_any_input_present=include_if_any_input_present, + include_if_all_inputs_present=include_if_all_inputs_present, ) return inner -@dataclass(frozen=True) -class InterfaceFunctionVariant: - required_input_qnames: list[str] - function: Callable[..., Any] - - -def _fail_if_more_than_one_function_variant_matches_inputs( - specs: list[InterfaceFunctionVariant], - user_input_qnames: list[str], -) -> None: - """Validate that not more than one function variant matches the provided user - inputs. - - This function ensures that the user has provided the correct combination of inputs - to uniquely determine which function variant should be used. - """ - potential_qnames = [spec.required_input_qnames for spec in specs] - qnames_from_user_satisfying_specs = [ - spec.required_input_qnames - for spec in specs - if set(spec.required_input_qnames) <= set(user_input_qnames) - ] - - if len(qnames_from_user_satisfying_specs) > 1: - potential_qnames_str = "\n".join( - [f"[{', '.join(s)}]" for s in potential_qnames] - ) - qnames_from_user_str = "\n".join( - [f"[{', '.join(s)}]" for s in qnames_from_user_satisfying_specs] - ) - msg = ( - "Exactly one of the following sets of inputs is required:\n\n" - f"{potential_qnames_str}" - "\n\n" - "Multiple sets of inputs were found that satisfy the requirements:\n\n" - f"{qnames_from_user_str}" - "\n\n" - "Please provide only one of these." - ) - raise ValueError(msg) - - @dataclass(frozen=True) class FailOrWarnFunction(InterfaceFunction): # type: ignore[type-arg] """ diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index 5474386762..a5b6703343 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -10,7 +10,6 @@ from ttsim.interface_dag_elements.interface_node_objects import interface_function from ttsim.interface_dag_elements.shared import ( merge_trees, - to_datetime, upsert_tree, ) from ttsim.tt_dag_elements import ( @@ -34,7 +33,6 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import ( - DashedISOString, FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, NestedColumnObjectsParamFunctions, @@ -48,7 +46,8 @@ def policy_environment( orig_policy_objects__column_objects_and_param_functions: NestedColumnObjectsParamFunctions, # noqa: E501 orig_policy_objects__param_specs: FlatOrigParamSpecs, - date: datetime.date | DashedISOString, + policy_date: datetime.date, + evaluation_date: datetime.date, backend: Literal["numpy", "jax"], xnp: ModuleType, dnp: ModuleType, @@ -68,17 +67,14 @@ def policy_environment( ------- The policy environment for the specified date. """ - # Check policy date for correct format and convert to datetime.date - date = to_datetime(date) - a_tree = merge_trees( left=_active_column_objects_and_param_functions( orig=orig_policy_objects__column_objects_and_param_functions, - date=date, + date=policy_date, ), right=_active_param_objects( orig=orig_policy_objects__param_specs, - date=date, + date=policy_date, xnp=xnp, ), ) @@ -86,9 +82,9 @@ def policy_environment( assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" a_tree["evaluationsjahr"] = ScalarParam( leaf_name="evaluationsjahr", - start_date=date, - end_date=date, - value=date.year, + start_date=evaluation_date, + end_date=evaluation_date, + value=evaluation_date.year, name={"de": "Evaluationsjahr. Implementation wird noch verbessert."}, description={"de": "Der Zeitpunkt, für den die Berechnung durchgeführt wird."}, unit="Year", diff --git a/src/ttsim/interface_dag_elements/results.py b/src/ttsim/interface_dag_elements/results.py index 93b9d4ff16..d56cdf7376 100644 --- a/src/ttsim/interface_dag_elements/results.py +++ b/src/ttsim/interface_dag_elements/results.py @@ -43,7 +43,7 @@ def tree(raw_results__combined: QNameData, input_data__flat: FlatData) -> Nested @interface_function() def df_with_mapper( tree: NestedData, - input_data__tree: NestedData, + input_data__flat: FlatData, targets__tree: NestedStrings, ) -> pd.DataFrame: """The results DataFrame with mapped column names. @@ -63,14 +63,14 @@ def df_with_mapper( return nested_data_to_df_with_mapped_columns( nested_data_to_convert=tree, nested_outputs_df_column_names=targets__tree, - data_with_p_id=input_data__tree, + data_with_p_id=input_data__flat, ) @interface_function() def df_with_nested_columns( tree: NestedData, - input_data__tree: NestedData, + input_data__flat: FlatData, ) -> pd.DataFrame: """The results DataFrame with mapped column names. @@ -88,5 +88,5 @@ def df_with_nested_columns( """ return nested_data_to_df_with_nested_columns( nested_data_to_convert=tree, - data_with_p_id=input_data__tree, + data_with_p_id=input_data__flat, ) diff --git a/src/ttsim/interface_dag_elements/typing.py b/src/ttsim/interface_dag_elements/typing.py index 88889dd557..1a87b2de3f 100644 --- a/src/ttsim/interface_dag_elements/typing.py +++ b/src/ttsim/interface_dag_elements/typing.py @@ -32,6 +32,16 @@ NestedTargetDict, ) + from ttsim.interface_dag_elements import ( + InterfaceFunction, + InterfaceInput, + ) + + FlatInterfaceObjects = Mapping[ + tuple[str, ...], InterfaceFunction | InterfaceInput | "FlatInterfaceObjects" + ] + """Flattened tree of interface objects.""" + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Possible leaves of the various trees. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -48,7 +58,7 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # NestedData = Mapping[str, FloatColumn | IntColumn | BoolColumn | "NestedData"] """Tree mapping TTSIM paths to 1d arrays.""" - FlatData = Mapping[str, FloatColumn | IntColumn | BoolColumn | "FlatData"] + FlatData = Mapping[tuple[str, ...], FloatColumn | IntColumn | BoolColumn] """Flattened tree mapping TTSIM paths to 1d arrays.""" NestedInputsMapper = Mapping[str, str | bool | int | float | "NestedInputsMapper"] """Tree mapping TTSIM paths to df columns or constants.""" diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 1d3f9efebf..b49863da8f 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -15,7 +15,7 @@ from ttsim import main from ttsim.arg_templates import output -from ttsim.interface_dag import load_interface_functions_and_inputs +from ttsim.interface_dag import load_flat_interface_functions_and_inputs from ttsim.interface_dag_elements.interface_node_objects import ( FailOrWarnFunction, InputDependentInterfaceFunction, @@ -143,30 +143,46 @@ def plot_interface_dag( output_path: Path | None = None, ) -> go.Figure: """Plot the full interface DAG.""" - nodes = { - p: dummy_callable(n) if not callable(n) else n - for p, n in load_interface_functions_and_inputs().items() + interface_functions_and_inputs = load_flat_interface_functions_and_inputs() + nodes_without_idifs = { + dt.qname_from_tree_path(p): dummy_callable(n) if not callable(n) else n + for p, n in interface_functions_and_inputs.items() + if not isinstance(n, InputDependentInterfaceFunction) } if not include_fail_and_warn_nodes: - nodes = { - p: n for p, n in nodes.items() if not isinstance(n, FailOrWarnFunction) + nodes_without_idifs = { + qn: n + for qn, n in nodes_without_idifs.items() + if not isinstance(n, FailOrWarnFunction) } - dag = dags.create_dag(functions=nodes, targets=None) + dag = dags.create_dag(functions=nodes_without_idifs, targets=None) # Add edges manually for InputDependentInterfaceFunction - for name, node_object in nodes.items(): - if isinstance(node_object, InputDependentInterfaceFunction): - for variant in node_object.specs: - for required_func in variant.required_input_qnames: - dag.add_edge(required_func, name) - - for name, node_object in nodes.items(): - f = node_object.function if hasattr(node_object, "function") else node_object - description = inspect.getdoc(f) or "No description available." - namespace = name.split("__")[0] if "__" in name else "top-level" - dag.nodes[name]["node_metadata"] = NodeMetaData( - description=description, + input_dependent_interface_functions = { + qn: n + for qn, n in interface_functions_and_inputs.items() + if isinstance(n, InputDependentInterfaceFunction) + } + qnames_of_idif_to_their_ancestors = _qnames_of_idif_to_their_ancestors( + input_dependent_interface_functions + ) + for qn, ancestors in qnames_of_idif_to_their_ancestors.items(): + for ancestor in ancestors: + dag.add_edge(ancestor, qn) + + for node_name in dag.nodes(): + interface_object = nodes_without_idifs.get(node_name) + if interface_object: + f = ( + interface_object.function + if hasattr(interface_object, "function") + else interface_object + ) + description = inspect.getdoc(f) + namespace = node_name.split("__")[0] if "__" in node_name else "top-level" + dag.nodes[node_name]["node_metadata"] = NodeMetaData( + description=description or "No description available.", namespace=namespace, ) @@ -182,6 +198,24 @@ def plot_interface_dag( return fig +def _qnames_of_idif_to_their_ancestors( + input_dependent_interface_functions: dict[ + tuple[str, ...], InputDependentInterfaceFunction + ], +) -> dict[str, list[str]]: + """Get the qnames of the input dependent interface functions to their ancestors.""" + idif_qname_to_idif_inputs: dict[str, list[str]] = {} + for orig_p, orig_object in input_dependent_interface_functions.items(): + qname = dt.qname_from_tree_path(orig_p[:-1] + (orig_object.leaf_name,)) + if qname not in idif_qname_to_idif_inputs: + idif_qname_to_idif_inputs[qname] = [] + ancestors = set(orig_object.include_if_all_inputs_present) | set( + orig_object.include_if_any_input_present + ) + idif_qname_to_idif_inputs[qname].extend(list(ancestors)) + return idif_qname_to_idif_inputs + + def _get_tt_dag_with_node_metadata( environment: NestedPolicyEnvironment, node_selector: _QNameNodeSelector | None = None, diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 1224e4e8f9..298e948943 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -1,6 +1,5 @@ from __future__ import annotations -import dags.tree as dt import numpy import pandas as pd import pytest @@ -11,8 +10,8 @@ output, ) from ttsim.interface_dag_elements.data_converters import ( - df_with_mapped_columns_to_nested_data, - df_with_nested_columns_to_nested_data, + df_with_mapped_columns_to_flat_data, + df_with_nested_columns_to_flat_data, nested_data_to_df_with_mapped_columns, ) from ttsim.tt_dag_elements import ( @@ -66,7 +65,7 @@ def minimal_data_tree(): ( "inputs_tree_to_df_columns", "df", - "expected_output", + "expected", ), [ ( @@ -76,7 +75,7 @@ def minimal_data_tree(): }, }, pd.DataFrame({"a": [1, 2, 3]}), - {"n1": {"n2": pd.Series([1, 2, 3])}}, + {("n1", "n2"): pd.Series([1, 2, 3])}, ), ( { @@ -86,7 +85,7 @@ def minimal_data_tree(): "n3": "b", }, pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([4, 5, 6])}, + {("n1", "n2"): pd.Series([1, 2, 3]), ("n3",): pd.Series([4, 5, 6])}, ), ( { @@ -96,28 +95,26 @@ def minimal_data_tree(): "n3": 3, }, pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {"n1": {"n2": pd.Series([1, 2, 3])}, "n3": pd.Series([3, 3, 3])}, + {("n1", "n2"): pd.Series([1, 2, 3]), ("n3",): pd.Series([3, 3, 3])}, ), ], ) -def test_df_with_mapped_columns_to_nested_data( +def test_df_with_mapped_columns_to_flat_data( inputs_tree_to_df_columns, df, - expected_output, + expected, ): - result = df_with_mapped_columns_to_nested_data( + result = df_with_mapped_columns_to_flat_data( mapper=inputs_tree_to_df_columns, df=df, xnp=numpy, ) - flat_result = dt.flatten_to_qnames(result) - flat_expected_output = dt.flatten_to_qnames(expected_output) - assert set(flat_result.keys()) == set(flat_expected_output.keys()) - for key in flat_result: + assert set(result.keys()) == set(expected.keys()) + for key in result: pd.testing.assert_series_equal( - pd.Series(flat_result[key]), - flat_expected_output[key], + pd.Series(result[key]), + expected[key], check_names=False, ) @@ -250,22 +247,20 @@ def test_nested_data_to_dataframe( [ ( pd.DataFrame({("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}), - {"a": {"b": numpy.array([1, 2, 3])}, "c": numpy.array([4, 5, 6])}, + {("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}, ), ( pd.DataFrame({("a", "b"): [1, 2, 3], ("b",): [4, 5, 6]}), - {"a": {"b": numpy.array([1, 2, 3])}, "b": numpy.array([4, 5, 6])}, + {("a", "b"): [1, 2, 3], ("b",): [4, 5, 6]}, ), ], ) -def test_df_with_nested_columns_to_nested_data(df, expected): - result = df_with_nested_columns_to_nested_data( +def test_df_with_nested_columns_to_flat_data(df, expected): + result = df_with_nested_columns_to_flat_data( df=df, xnp=numpy, ) - flat_result = dt.flatten_to_tree_paths(result) - flat_expected = dt.flatten_to_tree_paths(expected) - assert set(flat_result.keys()) == set(flat_expected.keys()) - for key in flat_result: - assert_array_equal(flat_result[key], flat_expected[key]) + assert set(result.keys()) == set(expected.keys()) + for key in result: + assert_array_equal(result[key], expected[key]) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index c111ce8467..48bd1cddac 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -1,8 +1,10 @@ from __future__ import annotations import inspect +from typing import Any import dags +import dags.tree as dt import pytest from ttsim import arg_templates @@ -10,13 +12,16 @@ _fail_if_requested_nodes_cannot_be_found, _harmonize_inputs, _harmonize_outputs, - load_interface_functions_and_inputs, + _resolve_dynamic_interface_objects_to_static_nodes, + load_flat_interface_functions_and_inputs, ) from ttsim.interface_dag_elements.fail_if import format_list_linewise from ttsim.interface_dag_elements.interface_node_objects import ( - InterfaceFunctionVariant, + InputDependentInterfaceFunction, + InterfaceInput, fail_or_warn_function, input_dependent_interface_function, + interface_input, ) from ttsim.plot_dag import dummy_callable from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -31,49 +36,60 @@ def some_fail_or_warn_function() -> None: @input_dependent_interface_function( - variants=[ - InterfaceFunctionVariant( - required_input_qnames=["input_1"], - function=lambda input_1: input_1, - ), - InterfaceFunctionVariant( - required_input_qnames=["input_2", "n1__input_2"], - function=lambda input_2, n1__input_2: input_2 + n1__input_2, - ), - ] + leaf_name="some_idif", + include_if_all_inputs_present=["input_1"], ) -def some_input_dependent_interface_function() -> int: - pass +def some_idif_require_input_1(input_1: int) -> int: + return input_1 @input_dependent_interface_function( - variants=[ - InterfaceFunctionVariant( - required_input_qnames=["input_1"], - function=lambda input_1: input_1, - ), - InterfaceFunctionVariant( - required_input_qnames=["input_1", "n1__input_2"], - function=lambda input_1, n1__input_2: input_1 + n1__input_2, - ), - ] + leaf_name="some_idif", + include_if_all_inputs_present=["input_2", "n1__input_2"], ) -def some_input_dependent_interface_function_with_conflicting_variants() -> int: - pass +def some_idif_require_input_2_and_n1__input_2(input_2: int, n1__input_2: int) -> int: + return input_2 + n1__input_2 + + +@input_dependent_interface_function( + leaf_name="some_idif_with_conflicting_conditions", + include_if_all_inputs_present=["input_1"], +) +def some_idif_with_conflicting_conditions_require_input_1(input_1: int) -> int: + return input_1 + + +@input_dependent_interface_function( + leaf_name="some_idif_with_conflicting_conditions", + include_if_any_input_present=["input_1", "n1__input_2"], +) +def some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2( + input_1: int, n1__input_2: int +) -> int: + return input_1 + n1__input_2 -def test_load_interface_functions_and_inputs() -> None: - load_interface_functions_and_inputs() +def test_load_flat_interface_functions_and_inputs() -> None: + load_flat_interface_functions_and_inputs() def test_interface_dag_is_complete() -> None: - nodes = { - p: dummy_callable(n) if not callable(n) else n - for p, n in load_interface_functions_and_inputs().items() - } + # Convert InputDependentInterfaceFunctions to InterfaceInputs. + nodes_without_idifs = {} + for p, n in load_flat_interface_functions_and_inputs().items(): + if isinstance(n, InputDependentInterfaceFunction): + interface_input = _replace_idif_with_interface_inputs(n) + new_path = p[:-1] + (interface_input.leaf_name,) + nodes_without_idifs[dt.qname_from_tree_path(new_path)] = interface_input + else: + nodes_without_idifs[dt.qname_from_tree_path(p)] = n + nodes_with_dummy_callables = { + qn: dummy_callable(n) if not callable(n) else n + for qn, n in nodes_without_idifs.items() + } f = dags.concatenate_functions( - functions=nodes, + functions=nodes_with_dummy_callables, targets=None, return_type="dict", enforce_signature=False, @@ -87,23 +103,45 @@ def test_interface_dag_is_complete() -> None: ) +def _replace_idif_with_interface_inputs( + n: InputDependentInterfaceFunction, +) -> InterfaceInput: + @interface_input( + in_top_level_namespace=n.in_top_level_namespace, + leaf_name=n.leaf_name, + ) + def interface_input_for_idif() -> Any: + pass + + return interface_input_for_idif + + @pytest.mark.parametrize( ("output_qnames", "nodes", "error_match"), [ ( ["a"], - load_interface_functions_and_inputs(), + { + dt.qname_from_tree_path(p): n + for p, n in load_flat_interface_functions_and_inputs().items() + }, r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"a"', ), ( ["input_data"], - load_interface_functions_and_inputs(), + { + dt.qname_from_tree_path(p): n + for p, n in load_flat_interface_functions_and_inputs().items() + }, r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"input_data"', ), ( [], { - **load_interface_functions_and_inputs(), + **{ + dt.qname_from_tree_path(p): n + for p, n in load_flat_interface_functions_and_inputs().items() + }, "some_fail_or_warn_function": some_fail_or_warn_function, }, r'include\scondition[\s\S]+functions or inputs:[\s\S]+"a",\s+"b"', @@ -172,38 +210,70 @@ def test_harmonize_inputs_tree_input(): @pytest.mark.parametrize( ( + "flat_interface_objects", "input_qnames", - "expected_function_args", + "expected_function_name", ), [ ( + { + ("some_idif_require_input_1",): some_idif_require_input_1, + ( + "some_idif_require_input_2_and_n1__input_2", + ): some_idif_require_input_2_and_n1__input_2, + }, ["input_2", "n1__input_2"], - ["input_2", "n1__input_2"], + "some_idif_require_input_2_and_n1__input_2", ), ( + { + ("some_idif_require_input_1",): some_idif_require_input_1, + ( + "some_idif_require_input_2_and_n1__input_2", + ): some_idif_require_input_2_and_n1__input_2, + }, ["input_1"], - ["input_1"], + "some_idif_require_input_1", ), ( - ["input_1", "n2__input_2"], - ["input_1"], + { + ("some_idif_require_input_1",): some_idif_require_input_1, + ( + "some_idif_require_input_2_and_n1__input_2", + ): some_idif_require_input_2_and_n1__input_2, + }, + ["input_2", "n1__input_2", "input_3"], + "some_idif_require_input_2_and_n1__input_2", ), ], ) -def test_input_dependent_interface_functions_have_correct_args( - input_qnames, expected_function_args +def test_resolve_dynamic_interface_objects_to_static_nodes_returns_correct_function( + flat_interface_objects, input_qnames, expected_function_name ): - func = some_input_dependent_interface_function.resolve_to_static_interface_function( - input_qnames + static_func = next( + iter( + _resolve_dynamic_interface_objects_to_static_nodes( + flat_interface_objects=flat_interface_objects, + input_qnames=input_qnames, + ).values() + ) ) - assert list(inspect.signature(func).parameters.keys()) == expected_function_args + assert static_func.original_function_name == expected_function_name -def test_input_dependent_interface_functions_with_conflicting_variants(): - match = r"Multiple sets of inputs were found that satisfy the requirements:" +def test_resolve_dynamic_interface_objects_to_static_nodes_with_conflicting_conditions(): # noqa: E501 + match = r"Multiple InputDependentInterfaceFunctions" with pytest.raises(ValueError, match=match): - some_input_dependent_interface_function_with_conflicting_variants.resolve_to_static_interface_function( - ["input_1", "n1__input_2"] + _resolve_dynamic_interface_objects_to_static_nodes( + flat_interface_objects={ + ( + "some_idif_with_conflicting_conditions_require_input_1", + ): some_idif_with_conflicting_conditions_require_input_1, + ( + "some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2", + ): some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2, + }, + input_qnames=["input_1", "n1__input_2"], ) diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 3d43eee28d..ac077a9e47 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -56,7 +56,7 @@ def some_policy_function(): ], ) def test_plot_full_interface_dag(include_fail_and_warn_nodes): - fig = plot_interface_dag(include_fail_and_warn_nodes=include_fail_and_warn_nodes) # noqa: F841 + plot_interface_dag(include_fail_and_warn_nodes=include_fail_and_warn_nodes) @pytest.mark.parametrize( From e9efb9001f3885c3660d44f3214c9303807ba267 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 30 Jun 2025 11:43:06 +0200 Subject: [PATCH 048/109] Run fail_if functions first, closes #981 (#987) Implement the fix outlined in #981. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- pixi.lock | 5141 ++++++++--------- pyproject.toml | 2 +- src/_gettsim/lohnsteuer/lohnsteuer.py | 2 +- src/ttsim/interface_dag.py | 29 +- .../interface_dag_elements/test_mettsim.py | 21 +- 5 files changed, 2606 insertions(+), 2589 deletions(-) diff --git a/pixi.lock b/pixi.lock index 7d8b48ea27..e7339050b2 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,10 +9,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -25,19 +25,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -76,14 +76,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -91,51 +91,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -154,58 +154,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -219,22 +219,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -242,7 +243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -260,29 +261,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -293,19 +290,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -330,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -343,14 +340,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -358,24 +355,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -383,24 +380,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -411,59 +408,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -477,22 +474,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -501,29 +499,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -534,19 +528,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -571,7 +565,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -584,14 +578,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -599,24 +593,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -624,24 +618,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -652,59 +646,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -718,22 +712,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -742,28 +737,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -773,20 +764,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -807,9 +798,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -820,7 +811,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -828,7 +819,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -836,41 +827,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -887,40 +878,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -929,15 +920,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -951,28 +942,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -990,20 +982,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ mypy: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1013,10 +1005,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1029,19 +1021,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -1067,7 +1059,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -1080,14 +1072,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1095,51 +1087,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -1158,58 +1150,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1223,22 +1215,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -1246,7 +1239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -1264,34 +1257,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1302,19 +1291,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1339,7 +1328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -1352,14 +1341,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1367,24 +1356,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -1392,24 +1381,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1420,59 +1409,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1486,22 +1475,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1510,34 +1500,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1548,19 +1534,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1585,7 +1571,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -1598,14 +1584,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1613,24 +1599,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -1638,24 +1624,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1666,59 +1652,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1732,22 +1718,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1756,33 +1743,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -1792,20 +1775,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -1826,9 +1809,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -1839,7 +1822,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -1847,7 +1830,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -1855,41 +1838,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -1906,40 +1889,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -1948,15 +1931,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -1970,28 +1953,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2009,25 +1993,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ py311: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -2037,10 +2021,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2053,19 +2037,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -2091,7 +2075,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -2104,14 +2088,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2119,51 +2103,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -2182,58 +2166,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py311h519dc76_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2247,22 +2231,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -2270,7 +2255,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -2288,29 +2273,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2321,19 +2302,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2358,7 +2339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -2371,14 +2352,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2386,24 +2367,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -2411,24 +2392,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2439,59 +2420,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py311h9224382_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2505,22 +2486,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2529,29 +2511,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2562,19 +2540,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2599,7 +2577,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -2612,14 +2590,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2627,24 +2605,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -2652,24 +2630,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -2680,59 +2658,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py311h4379d9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2746,22 +2724,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2770,28 +2749,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2801,20 +2776,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -2835,9 +2810,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -2848,7 +2823,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -2856,7 +2831,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2864,41 +2839,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -2915,40 +2890,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py311hc907d76_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -2957,15 +2932,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2979,28 +2954,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3018,20 +2994,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ py312: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -3041,10 +3017,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3057,19 +3033,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -3095,7 +3071,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -3108,14 +3084,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3123,51 +3099,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -3186,58 +3162,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3251,22 +3227,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -3274,7 +3251,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -3292,29 +3269,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3325,19 +3298,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3362,7 +3335,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -3375,14 +3348,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3390,24 +3363,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -3415,24 +3388,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3443,59 +3416,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3509,22 +3482,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3533,29 +3507,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3566,19 +3536,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3603,7 +3573,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -3616,14 +3586,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3631,24 +3601,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -3656,24 +3626,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3684,59 +3654,59 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3750,22 +3720,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3774,28 +3745,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3805,20 +3772,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3839,9 +3806,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -3852,7 +3819,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -3860,7 +3827,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3868,41 +3835,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -3919,40 +3886,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -3961,15 +3928,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3983,28 +3950,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4022,20 +3990,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ py312-jax: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -4045,10 +4013,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4061,20 +4029,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -4100,7 +4068,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -4113,72 +4081,72 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda @@ -4198,61 +4166,61 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4266,22 +4234,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -4289,7 +4258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -4307,30 +4276,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4341,20 +4306,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4379,7 +4344,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -4392,42 +4357,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -4435,27 +4400,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4467,62 +4432,62 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4536,22 +4501,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4560,30 +4526,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4594,20 +4556,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4632,7 +4594,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -4645,42 +4607,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -4688,27 +4650,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4720,62 +4682,62 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4789,22 +4751,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4813,29 +4776,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4845,20 +4804,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4879,9 +4838,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -4892,7 +4851,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -4900,7 +4859,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4908,41 +4867,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -4959,40 +4918,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda @@ -5001,15 +4960,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -5023,28 +4982,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5062,26 +5022,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - - pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: . + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -5119,9 +5079,9 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 -- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - sha256: 824a7349bbb2ef8014077ddcfd418065a0a4de873ada1bd1b8826e20bed18c15 - md5: eeb18017386c92765ad8ffa986c3f4ce +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + sha256: 63e532087119112c81d81c067e00d1fd49ff1b842ffea4469b78b505be63c042 + md5: 11539f9e49efaa281da735ded100b152 depends: - __unix - hicolor-icon-theme @@ -5129,8 +5089,8 @@ packages: license: LGPL-3.0-or-later OR CC-BY-SA-3.0 license_family: LGPL purls: [] - size: 619606 - timestamp: 1750236493212 + size: 610380 + timestamp: 1741999835753 - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea md5: 1fd9696649f65fd6611fcdb4ffec738a @@ -5172,9 +5132,9 @@ packages: - pkg:pypi/appnope?source=hash-mapping size: 10076 timestamp: 1733332433806 -- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad - md5: 8ac12aff0860280ee0cff7fa2cf63f3b +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba depends: - argon2-cffi-bindings - python >=3.9 @@ -5184,9 +5144,9 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/argon2-cffi?source=compressed-mapping - size: 18715 - timestamp: 1749017288144 + - pkg:pypi/argon2-cffi?source=hash-mapping + size: 18594 + timestamp: 1733311166338 - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda sha256: d1af1fbcb698c2e07b0d1d2b98384dd6021fa55c8bcb920e3652e0b0c393881b md5: 18143eab7fcd6662c604b85850f0db1e @@ -5439,7 +5399,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=hash-mapping + - pkg:pypi/babel?source=compressed-mapping size: 6938256 timestamp: 1738490268466 - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda @@ -5479,9 +5439,9 @@ packages: purls: [] size: 4213 timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda - sha256: 4fab04fcc599853efb2904ea3f935942108613c7515f7dd57e7f034650738c52 - md5: 8565f7297b28af62e5de2d968ca32e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 + md5: d21daab070d76490cb39a8f1d1729d79 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5489,16 +5449,16 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_3 + - libbrotlicommon 1.1.0 hb9d3cd8_2 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping - size: 350166 - timestamp: 1749230304421 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 - md5: a32e0c069f6c3dcac635f7b0b0dac67e + - pkg:pypi/brotli?source=hash-mapping + size: 350367 + timestamp: 1725267768486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5506,82 +5466,82 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_3 + - libbrotlicommon 1.1.0 hb9d3cd8_2 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping - size: 351721 - timestamp: 1749230265727 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda - sha256: 63f3771e23a1f3f9866ece0252586b5b57eefba8d83a2871a72c82716944cc7b - md5: 7259b2f4870cab602f1512562e5cbb30 + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 + md5: d75f06ee06001794aa83a05e885f1520 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=17 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 h6e16a3a_3 + - libbrotlicommon 1.1.0 h00291cd_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 367210 - timestamp: 1749230581348 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 - md5: 11489c0fc22f550acf63da5e7ec7304d + size: 363793 + timestamp: 1725267947069 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 + md5: b95025822e43128835826ec0cc45a551 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=17 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 h6e16a3a_3 + - libbrotlicommon 1.1.0 h00291cd_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 367262 - timestamp: 1749230495846 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda - sha256: 7414997b02a5f07d0b089fb24f1e755347fd827fa5fd158681766fce9583dd9b - md5: ba41239b4753557a20cf2ac2cd4250c5 + size: 363178 + timestamp: 1725267893889 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad + md5: c8793a23206344faa25f4e0b5d0e7908 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=17 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 h5505292_3 + - libbrotlicommon 1.1.0 hd74edd7_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 338502 - timestamp: 1749230799184 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - sha256: 35df7079768b4c51764149c42b14ccc25c4415e4365ecc06c38f74562d9e4d16 - md5: c7c728df70dc05a443f1e337c28de22d + size: 339584 + timestamp: 1725268241628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=17 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 h5505292_3 + - libbrotlicommon 1.1.0 hd74edd7_2 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping - size: 339365 - timestamp: 1749230606596 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda - sha256: a602b15fe1b3a6b40aab7d99099a410b69ccad9bb273779531cef00fc52d762e - md5: 2d99144abeb3b6b65608fdd7810dbcbd + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 + md5: a0ea2839841a06740a1c110ba3317b42 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -5589,16 +5549,16 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_3 + - libbrotlicommon 1.1.0 h2466b09_2 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping - size: 321757 - timestamp: 1749231264056 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f - md5: a87a39f9eb9fd5f171b13d8c79f7a99a + - pkg:pypi/brotli?source=hash-mapping + size: 322114 + timestamp: 1725268368720 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c + md5: a99aec1ac46794a5fb1cd3cf5d2b6110 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5606,13 +5566,13 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_3 + - libbrotlicommon 1.1.0 h2466b09_2 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 321941 - timestamp: 1749231054102 + size: 321874 + timestamp: 1725268491976 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -5687,24 +5647,24 @@ packages: purls: [] size: 179696 timestamp: 1744128058734 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 - md5: b01649832f7bc7ff94f8df8bd2ee6457 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 + md5: 23c7fd5062b48d8294fc7f61bf157fba depends: - __win license: ISC purls: [] - size: 151351 - timestamp: 1749990170707 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 - md5: 72525f07d72806e3b639ad4504c30ce5 + size: 152945 + timestamp: 1745653639656 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac + md5: 95db94f75ba080a22eb623590993167b depends: - __unix license: ISC purls: [] - size: 151069 - timestamp: 1749990087500 + size: 152283 + timestamp: 1745653616541 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -5811,16 +5771,16 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - sha256: d71c85835813072cd6d7ce4b24be34215cd90c104785b15a5d58f4cd0cb50778 - md5: 781d068df0cc2407d4db0ecfbb29225b +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c + md5: c33eeaaa33f45031be34cda513df39b6 depends: - python >=3.9 license: ISC purls: - pkg:pypi/certifi?source=hash-mapping - size: 155377 - timestamp: 1749972291158 + size: 157200 + timestamp: 1746569627830 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -5969,14 +5929,6 @@ packages: - pkg:pypi/charset-normalizer?source=hash-mapping size: 50481 timestamp: 1746214981991 -- pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - name: choreographer - version: 1.0.9 - sha256: b3277e30953843a83d3d730e49958a6be82013885d2a4f54b3950a3715191d7f - requires_dist: - - logistro>=1.0.11 - - simplejson>=3.19.3 - requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -6000,9 +5952,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12103 timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py311h2dc5d0c_0.conda - sha256: 09245391f91135f4eea87d64107e82d4fb4b7d4fbd6596ea6cc126645191220c - md5: f524bd18889f169f2fa8dc70df1c53c3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda + sha256: dabff490f3a4a4beb70c16624766286aa47dfb7dec0275966498a0854951e754 + md5: e761745f85b5fc909aab137ff59bc9cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6013,11 +5965,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 383591 - timestamp: 1749833491301 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py312h178313f_0.conda - sha256: bef32c5830b7701705660ef18d5d6ad7c597ebab196954c012e8a1cb4af0d3bc - md5: 4c18b79fa2a3371557ed3663876e5dcc + size: 381652 + timestamp: 1747842278784 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + sha256: 783fc98faff93d840ee278e8f9f9288cb10baaa820f4ea84d085caaeef5c581b + md5: d0cfba188d8eba0c3676af3d88e3b832 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6028,11 +5980,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 371371 - timestamp: 1749833562595 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py311ha3cf9ac_0.conda - sha256: 0de23c66e7b1c98b77ea1386fcbdf886da18de6792d7ee8b411f65e083ddda67 - md5: 72fe7ebc78fc52de43832bed81cfa5e4 + size: 372130 + timestamp: 1747842174442 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda + sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b + md5: a232a2c290d493aec5c321d42e8bb5f3 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -6042,11 +5994,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 380820 - timestamp: 1749833536701 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py312h3520af0_0.conda - sha256: f2483b4748c8037ef30b323d38e97050321557c1b2a51f0d9e2b6f0677d88183 - md5: 460f9c5cbe9b811198c8b48631bd01ba + size: 381834 + timestamp: 1747842238160 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + sha256: 01055509fdbf957da8101111f55d4ba4093d80ba41fa9db265918f83d74781c6 + md5: e2e4abc59d34ee3a3496e43fde06fe4a depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -6056,11 +6008,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 372323 - timestamp: 1749833457406 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py311h4921393_0.conda - sha256: 43c3fc41a6c790a4f88cc7f59358ecca06d1f7e32f75fcddfc3d4347403f058c - md5: d05861abb8d6097acd60e08d79cd1c4d + size: 370818 + timestamp: 1747842400404 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda + sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 + md5: 3311b8464e609c253df8ed73b030a91b depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6071,11 +6023,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 380898 - timestamp: 1749833551848 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py312h998013c_0.conda - sha256: 0f8ed3cb0b702c6a9df9fafd31a45023c3c6ca1c66d85453cde7a0e2e5812c05 - md5: 738b5ae0d38352a804fba9750bca81a0 + size: 381607 + timestamp: 1747842318714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + sha256: 965ccddf2fad18d09e45406317e0ffc9edff585ecec573c514b88a0e42aae793 + md5: 969b54224937a2b948a395ab6c972339 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6086,11 +6038,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 373189 - timestamp: 1749833686158 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py311h5082efb_0.conda - sha256: 821c280024834cdf88038452e3c131140c9e8bc310617349c0deecffca2c2196 - md5: a12491bec053dd704f8e467127e20b6a + size: 372341 + timestamp: 1747842541199 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda + sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 + md5: 11cfa5d9997512db18ba2eb46edcce37 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -6102,11 +6054,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 407907 - timestamp: 1749833673698 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py312h31fea79_0.conda - sha256: d8a7874de0cd78242cd24b592c41ca2fab7898eedf3b6aa9e7243027ee9aed22 - md5: 05437668629deb7fdb7af513d43249c0 + size: 407188 + timestamp: 1747842536793 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + sha256: 008dcd8dc25f8f8cd4f3c92f32638026acc8be3cef8f1b1f030a9bd99b60d451 + md5: f8cb7f4c4409b75b52935f914eeb091f depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -6118,33 +6070,33 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 399371 - timestamp: 1749834041463 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda + size: 398869 + timestamp: 1747842451626 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda noarch: generic - sha256: ab70477f5cfb60961ba27d84a4c933a24705ac4b1736d8f3da14858e95bbfa7a - md5: 4666fd336f6d48d866a58490684704cd + sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 + md5: 451718359f1658c6819d8665f82585ab depends: - python >=3.11,<3.12.0a0 - python_abi * *_cp311 license: Python-2.0 purls: [] - size: 47495 - timestamp: 1749048148121 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + size: 47661 + timestamp: 1744323121098 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda noarch: generic - sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a - md5: e5279009e7a7f7edd3cd2880c502b3cc + sha256: acb47715abf1cd8177a5c20f42a34555b5d9cebb68ff39a58706e84effe218e2 + md5: 7584a4b1e802afa25c89c0dcc72d0826 depends: - python >=3.12,<3.13.0a0 - python_abi * *_cp312 license: Python-2.0 purls: [] - size: 45852 - timestamp: 1749047748072 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#a3c665ee426904f316c3a6d5866c66e514126a12 + size: 45861 + timestamp: 1744323195619 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a name: dags - version: 0.3.1.dev10+ga3c665e + version: 0.3.1.dev11+g006c10e requires_dist: - flatten-dict - networkx @@ -6291,7 +6243,7 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/decorator?source=hash-mapping + - pkg:pypi/decorator?source=compressed-mapping size: 14129 timestamp: 1740385067843 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -6656,25 +6608,22 @@ packages: purls: [] size: 509570 timestamp: 1715783199780 -- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 - md5: 49c36fcad2e9af6b91e91f2ce5be8ebd +- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c + md5: 714d0882dc5e692ca4683d8e520f73c6 depends: - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: LGPL-3.0-only - license_family: LGPL + license_family: GPL purls: [] - size: 26238 - timestamp: 1750744808182 -- pypi: . + size: 21903 + timestamp: 1694400856979 +- pypi: ./ name: gettsim - version: 0.7.1.dev156+g137c6180.d20250628 - sha256: f78591f5fd720b7e572f4607f22427fea04c25120da6000a9244fc956578a297 + version: 0.7.1.dev134+g152909f8.d20250627 + sha256: 6f25ca2af6cfdf8f1b645a0f73727c6a6e39ec8d082c3332b8142c54198e5020 requires_dist: - ipywidgets - networkx @@ -6734,43 +6683,40 @@ packages: - pkg:pypi/gprof2dot?source=hash-mapping size: 39376 timestamp: 1734700339768 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - sha256: cac69f3ff7756912bbed4c28363de94f545856b35033c0b86193366b95f5317d - md5: 951ff8d9e5536896408e89d63230b8d5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc-ng >=12 + - libstdcxx-ng >=12 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 98419 - timestamp: 1750079957535 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - sha256: 13d802efe1fcadc171a1e0f87b99accef290cd0190af5d25cb46acd5f111104a - md5: 4b0af0e3ba3b3bb8e28d009a8ed1ab35 + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a + md5: fc7124f86e1d359fc5d878accd9e814c depends: - - __osx >=10.13 - - libcxx >=18 + - libcxx >=16 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 85046 - timestamp: 1750080155200 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - sha256: e1c431b66b0a632e8fcc2b886cccde4eb5ec5eb8a3d84e89b7639d603c174646 - md5: 64d15e1dfe86fa13cf0d519d1074dcd9 + size: 84384 + timestamp: 1711634311095 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 depends: - - __osx >=11.0 - - libcxx >=18 + - libcxx >=16 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 81566 - timestamp: 1750080158744 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - sha256: bcbcece7719f2a14ede6bfead8f5fdbb65ed102d47769c817b375e4e9d43be39 - md5: 692bc31c646f7e221af07ccc924e1ae4 + size: 79774 + timestamp: 1711634444608 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f + md5: 3194499ee7d1a67404a87d0eefdd92c6 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -6778,8 +6724,8 @@ packages: license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 95862 - timestamp: 1750080330012 + size: 95406 + timestamp: 1711634622644 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda sha256: e6866409ba03df392ac5ec6f0d6ff9751a685ed917bfbcd8a73f550c5fe83c2b md5: df7835d2c73cd1889d377cfd6694ada4 @@ -7239,18 +7185,18 @@ packages: purls: [] size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55 - md5: 84463b10c1eb198541cd54125c7efe90 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + sha256: 02f47df6c6982b796aecb086b434627207e87c0a90a50226f11f2cc99c089770 + md5: 8d5b9b702810fb3054d52ba146023bc3 depends: - python >=3.9 - ukkonen license: MIT license_family: MIT purls: - - pkg:pypi/identify?source=compressed-mapping - size: 78926 - timestamp: 1748049754416 + - pkg:pypi/identify?source=hash-mapping + size: 79057 + timestamp: 1745098917031 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -7281,9 +7227,8 @@ packages: - zipp >=3.20 - python license: Apache-2.0 - license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=hash-mapping + - pkg:pypi/importlib-metadata?source=compressed-mapping size: 34641 timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -7392,9 +7337,9 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 - md5: 73e4ba4c8247f744be670f4da4f132e2 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + sha256: 83e4cfdcf09c1273ec31548aacf7f81076dc4245548e78ac3b47d1da361da03b + md5: a7b419c1d0ae931d86cd9cab158f698e depends: - __win - colorama @@ -7415,11 +7360,11 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 621095 - timestamp: 1748711232331 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd - md5: 270dbfb30fe759b39ce0c9fdbcd7be10 + size: 619872 + timestamp: 1745672185321 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + sha256: 539d003c379c22a71df1eb76cd4167a3e2d59f45e6dbc3416c45619f4c1381fb + md5: 7330ee1244209cfebfb23d828dd9aae5 depends: - __unix - pexpect >4.3 @@ -7440,8 +7385,8 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 621859 - timestamp: 1748713870748 + size: 620691 + timestamp: 1745672166398 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -7482,39 +7427,58 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl name: jax - version: 0.6.2 - sha256: bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c + version: 0.6.1 + sha256: 69a4e4506caa5466702bdfd0d7a13d1f9b7281d473885721100a3087fcabf8f9 requires_dist: - - jaxlib<=0.6.2,>=0.6.2 + - jaxlib<=0.6.1,>=0.6.1 - ml-dtypes>=0.5.0 - - numpy>=1.26 + - numpy>=1.25 + - numpy>=1.26.0 ; python_full_version >= '3.12' - opt-einsum - - scipy>=1.12 - - jaxlib==0.6.2 ; extra == 'minimum-jaxlib' - - jaxlib==0.6.1 ; extra == 'ci' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'tpu' - - libtpu==0.0.17.* ; extra == 'tpu' + - scipy>=1.11.1 + - jaxlib==0.6.1 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.0 ; extra == 'ci' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'tpu' + - libtpu==0.0.15.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda12' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.2,>=0.6.2 ; extra == 'rocm' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda12' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' + - jaxlib<=0.6.1,>=0.6.1 ; extra == 'rocm' + - jax-rocm60-plugin<=0.6.1,>=0.6.1 ; extra == 'rocm' - kubernetes ; extra == 'k8s' - - xprof ; extra == 'xprof' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - sha256: 573a5582dfba84a8f67c351b6218cb9579cb8d0f6d4b4186a806852111d4a6f1 - md5: bd364feb12c744cf5c60e1e5b586171b +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda + sha256: be7644c955cd4be330a13a8f64c0b73d520f8b3ab6bb64b8b1d3a17945345684 + md5: f19f3d281603af8e67d533dbeac279ce depends: - importlib-metadata >=4.6 - - jaxlib >=0.6.0,<=0.6.0 - - ml_dtypes >=0.5.0 + - jaxlib >=0.5.1,<=0.5.2 + - ml_dtypes >=0.4.0 + - numpy >=1.25 + - opt_einsum + - python >=3.10 + - scipy >=1.11.1 + constrains: + - cudnn >=9.2.1.18,<10.0 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/jax?source=hash-mapping + size: 1556886 + timestamp: 1741182198677 +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda + sha256: 411389e87b2a393192a52f1848fea1190f4d2c8f52a0838f38088c6a0b72a562 + md5: aee167037a824dff5fb393ab62046dfb + depends: + - importlib-metadata >=4.6 + - jaxlib >=0.5.3,<=0.5.3 + - ml_dtypes >=0.4.0 - numpy >=1.25 - opt_einsum - python >=3.10 @@ -7525,8 +7489,8 @@ packages: license_family: APACHE purls: - pkg:pypi/jax?source=hash-mapping - size: 1538293 - timestamp: 1748688029463 + size: 1580534 + timestamp: 1747653718316 - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 name: jax-datetime version: 0.1.0 @@ -7537,18 +7501,18 @@ packages: - chex ; extra == 'tests' - pytest ; extra == 'tests' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.6.2 - sha256: 921dbd4db214eba19a29ba9f2450d880e08b2b2c7b968f28cc89da3e62366af4 + version: 0.6.1 + sha256: 76d6f65f3153ffb70e20a76b915d4431823cf70a786d86ba1b76a9c5bf66a0a4 requires_dist: - - scipy>=1.12 - - numpy>=1.26 - - ml-dtypes>=0.5.0 + - scipy>=1.11.1 + - numpy>=1.25 + - ml-dtypes>=0.2.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda - sha256: 8941335debcba5835d378717cb5f691fe4e8749e179653c6fae7a39ad593f33d - md5: df8ebae58f002df33e6bb75394656a34 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda + sha256: c225000615df5829717e0b04785236f44d92077a7d2e39e4c0556b183a4216f0 + md5: e12b4670e149ca7f9287820d7653e810 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -7564,16 +7528,16 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.6.0 + - jax >=0.5.2 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 60656001 - timestamp: 1748656526943 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda - sha256: 00bedbc1f41d96de00757fd79cda6c691e708c2cedce8aaabebda2006d728ef5 - md5: d2d260a9fdc8afbdffa9b3b9391dc70a + size: 69147479 + timestamp: 1747094254155 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda + sha256: 8eff53d14971a29caac20533dbdc49a4c00a73f99df933841342a16630211d60 + md5: f1fe1bb10662b8e1b00ca0f07711bd06 depends: - __osx >=10.15 - libabseil * cxx17* @@ -7588,16 +7552,16 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.6.0 + - jax >=0.5.3 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 62923901 - timestamp: 1748651932948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda - sha256: b7d9ba3dd95f998e9c20c272293d06f570c7d6e101940acc4e62c1283d09a312 - md5: 694baa9a80a8229587db65e4063de530 + size: 67083755 + timestamp: 1747480017557 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda + sha256: 8ca793da0f4aed6426cf4d1ee55093837daa729eb0913ca4e5c8c4f58f470652 + md5: 4771dac0bde78fccfaa0ddf588a2ce94 depends: - __osx >=11.0 - libabseil * cxx17* @@ -7613,13 +7577,13 @@ packages: - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - - jax >=0.6.0 + - jax >=0.5.3 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 51803228 - timestamp: 1748652224641 + size: 56004263 + timestamp: 1747478692111 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -7654,7 +7618,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=hash-mapping + - pkg:pypi/jinja2?source=compressed-mapping size: 112714 timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -7766,9 +7730,9 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42235 timestamp: 1725303419414 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - sha256: 812134fabb49493a50f7f443dc0ffafd0f63766f403a0bd8e71119763e57456a - md5: 59220749abcd119d645e6879983497a1 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 @@ -7781,8 +7745,8 @@ packages: license_family: MIT purls: - pkg:pypi/jsonschema?source=hash-mapping - size: 75124 - timestamp: 1748294389597 + size: 74256 + timestamp: 1733472818764 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda sha256: 66fbad7480f163509deec8bd028cd3ea68e58022982c838683586829f63f3efa md5: 41ff526b1083fde51fbdc93f29282e0e @@ -7796,15 +7760,15 @@ packages: - pkg:pypi/jsonschema-specifications?source=hash-mapping size: 19168 timestamp: 1745424244298 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - sha256: 970a1efffe29474d6bb3e4d63bc04105c5611d1c7e2cd7e2d43d1ba468f33c20 - md5: b4eaebf6fac318db166238796d2a9702 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - fqdn - idna - isoduration - jsonpointer >1.13 - - jsonschema >=4.24.0,<4.24.1.0a0 + - jsonschema >=4.23.0,<4.23.1.0a0 - rfc3339-validator - rfc3986-validator >0.1.0 - uri-template @@ -7812,22 +7776,21 @@ packages: license: MIT license_family: MIT purls: [] - size: 7717 - timestamp: 1748294391013 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - sha256: f2ca86b121bcfeaf0241a927824459ba8712e64806b98dd262eb2b1a7c4e82a6 - md5: 7ed6505c703f3c4e1a58864bf84505e2 + size: 7135 + timestamp: 1733472820035 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - python >=3.9 - - python license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/jupyter-lsp?source=hash-mapping - size: 57659 - timestamp: 1748550130303 + size: 55221 + timestamp: 1733493006611 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 @@ -7845,9 +7808,9 @@ packages: - pkg:pypi/jupyter-client?source=hash-mapping size: 106342 timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 - md5: b7d89d860ebcda28a5303526cdee68ab +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - __unix - platformdirs >=2.5 @@ -7856,12 +7819,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=compressed-mapping - size: 59562 - timestamp: 1748333186063 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - sha256: 928c2514c2974fda78447903217f01ca89a77eefedd46bf6a2fe97072df57e8d - md5: 324e60a0d3f39f268e899709575ea3cd + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd + md5: 46d87d1c0ea5da0aae36f77fa406e20d depends: - __win - cpython @@ -7872,9 +7835,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=compressed-mapping - size: 59972 - timestamp: 1748333368923 + - pkg:pypi/jupyter-core?source=hash-mapping + size: 58269 + timestamp: 1727164026641 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 md5: f56000b36f09ab7533877e695e4e8cb0 @@ -7892,7 +7855,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-events?source=hash-mapping + - pkg:pypi/jupyter-events?source=compressed-mapping size: 23647 timestamp: 1738765986736 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda @@ -7937,9 +7900,9 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.3-pyhd8ed1ab_0.conda - sha256: fc0235a71d852734fe92183a78cb91827367573450eba82465ae522c64230736 - md5: 4861a0c2a5a5d0481a450a9dfaf9febe +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 + md5: 1f5f3b0fcff308d8fbaa73c43af08e2f depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -7961,8 +7924,8 @@ packages: license_family: BSD purls: - pkg:pypi/jupyterlab?source=hash-mapping - size: 8236973 - timestamp: 1748273017680 + size: 8593072 + timestamp: 1746536121732 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -8015,16 +7978,24 @@ packages: name: kaleido version: 0.1.0.post1 sha256: 2a942606a13c70dfd0a02e092ec140a1083e093ae06661c5e1b1179e477a9e44 -- pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl name: kaleido - version: 1.0.0 - sha256: a7e8bd95648378d2746f6c86084d419d15f95b1ec7bb0ec810289b7feb25b18d + version: 0.2.1 + sha256: bb9a5d1f710357d5d432ee240ef6658a6d124c3e610935817b4b42da9c787c05 requires_dist: - - choreographer>=1.0.5 - - logistro>=1.0.8 - - orjson>=3.10.15 - - packaging - requires_python: '>=3.8' + - pathlib ; python_full_version < '3.4' +- pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + name: kaleido + version: 0.2.1 + sha256: aa21cf1bf1c78f8fa50a9f7d45e1003c387bd3d6fe0a767cfbbf344b95bdc3a8 + requires_dist: + - pathlib ; python_full_version < '3.4' +- pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + name: kaleido + version: 0.2.1 + sha256: ca6f73e7ff00aaebf2843f73f1d3bacde1930ef5041093fe76b83a15785049a7 + requires_dist: + - pathlib ; python_full_version < '3.4' - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 @@ -8090,9 +8061,9 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 - md5: 6dc9e1305e7d3129af4ad0dabda30e56 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -8100,8 +8071,8 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - size: 670635 - timestamp: 1749858327854 + size: 671240 + timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -8191,170 +8162,169 @@ packages: purls: [] size: 1192962 timestamp: 1742369814061 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - build_number: 32 - sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338 - md5: 2af9f3d5c2e39f417ce040f5a35c40c6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - libcblas 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 - - liblapacke 3.9.0 32*_openblas - - blas 2.132 openblas - - liblapack 3.9.0 32*_openblas + - libcblas =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17330 - timestamp: 1750388798074 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - build_number: 32 - sha256: e441fcc46858a9a073e4344c80e267aee3b95ec01b02e37205c36be79eec0694 - md5: 0f7197e3b4ecfa8aa24a371c3eaabb8a + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda + build_number: 31 + sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d + md5: a8c1c9f95d1c46d67028a6146c1ea77c depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapack 3.9.0 32*_openblas - - blas 2.132 openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 - - liblapacke 3.9.0 32*_openblas - - libcblas 3.9.0 32*_openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17571 - timestamp: 1750389030403 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - build_number: 32 - sha256: 2775472dd81d43dc20804b484028560bfecd5ab4779e39f1fb95684da3ff2029 - md5: d4a1732d2b330c9d5d4be16438a0ac78 + size: 17105 + timestamp: 1740087945188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a depends: - - libopenblas >=0.3.30,<0.3.31.0a0 - - libopenblas >=0.3.30,<1.0a0 + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas 2.132 openblas - - liblapack 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas - mkl <2025 - - libcblas 3.9.0 32*_openblas - - liblapacke 3.9.0 32*_openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17520 - timestamp: 1750388963178 -- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - build_number: 32 - sha256: 809d78b096e70fed7ebb17c867dd5dde2f9f4ed8564967a6e10c65b3513b0c31 - md5: 49b36a01450e96c516bbc5486d4a0ea0 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + build_number: 31 + sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8 + md5: d05563c577fe2f37693a554b3f271e8f depends: - mkl 2024.2.2 h66d3029_15 constrains: - - libcblas 3.9.0 32*_mkl - - liblapack 3.9.0 32*_mkl - - liblapacke 3.9.0 32*_mkl - - blas 2.132 mkl + - libcblas =3.9.0=31*_mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl + - liblapack =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3735390 - timestamp: 1750389080409 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - build_number: 32 - sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9 - md5: 3d3f9355e52f269cd8bc2c440d8a5263 + size: 3733728 + timestamp: 1740088452830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 depends: - - libblas 3.9.0 32_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - blas 2.132 openblas - - liblapack 3.9.0 32*_openblas - - liblapacke 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17308 - timestamp: 1750388809353 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - build_number: 32 - sha256: 745f6dd420389809c333734df6edc99d75caa3633e4778158c7549c6844af440 - md5: 2c1e774d4546cf542eaee5781eb8940b + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda + build_number: 31 + sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c + md5: c655cc2b0c48ec454f7a4db92415d012 depends: - - libblas 3.9.0 32_h7f60823_openblas + - libblas 3.9.0 31_h7f60823_openblas constrains: - - blas 2.132 openblas - - liblapack 3.9.0 32*_openblas - - liblapacke 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17574 - timestamp: 1750389040732 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - build_number: 32 - sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c - md5: d8e8ba717ae863b13a7495221f2b5a71 + size: 17006 + timestamp: 1740087955460 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 depends: - - libblas 3.9.0 32_h10e41b3_openblas + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas 2.132 openblas - - liblapack 3.9.0 32*_openblas - - liblapacke 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17485 - timestamp: 1750388970626 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - build_number: 32 - sha256: d0f81145ae795592f3f3b5d7ff641c1019a99d6b308bfaf2a4cc5ba24b067bb0 - md5: 054b9b4b48296e4413cf93e6ece7b27d + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + build_number: 31 + sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8 + md5: 43c100b94ad2607382b0cf0f3a6b0bf3 depends: - - libblas 3.9.0 32_h641d27c_mkl + - libblas 3.9.0 31_h641d27c_mkl constrains: - - liblapack 3.9.0 32*_mkl - - liblapacke 3.9.0 32*_mkl - - blas 2.132 mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl + - liblapack =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3735392 - timestamp: 1750389122586 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55 - md5: d4a250da4737ee127fb1fa6452a9002e + size: 3733549 + timestamp: 1740088502127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 + md5: d4529f4dff3057982a7617c7ac58fde3 depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 + - krb5 >=1.21.1,<1.22.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 license: Apache-2.0 license_family: Apache purls: [] - size: 4523621 - timestamp: 1749905341688 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 - md5: 8b47ade37d4e75417b4e993179c09f5d + size: 4519402 + timestamp: 1689195353551 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 + md5: 9dde68cee0a231b19e189954ac29027b depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 562573 - timestamp: 1749846921724 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 - md5: 881de227abdddbe596239fa9e82eb3ab + size: 562408 + timestamp: 1747262455533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 + md5: 4ef1bdb94d42055f511bb358f2048c58 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 567189 - timestamp: 1749847129529 + size: 568010 + timestamp: 1747262879889 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -8620,42 +8590,45 @@ packages: purls: [] size: 337007 timestamp: 1745370226578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 - md5: 9e60c55e725c20d23125a5f0dd69af5d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 + md5: ea8ac52380885ed41c1baa8f1d6d2b93 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.1.0=*_3 - - libgomp 15.1.0 h767d61c_3 + - libgcc-ng ==15.1.0=*_2 + - libgomp 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 824921 - timestamp: 1750808216066 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - sha256: 05978c4e8c826dd3b727884e009a19ceee75b0a530c18fc14f0ba56b090f2ea3 - md5: d8314be93c803e2e2b430f6389d6ce6a + size: 829108 + timestamp: 1746642191935 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be + md5: 9bedb24480136bfeb81ebc81d4285e70 depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - - libgomp 15.1.0 h1383e82_3 - msys2-conda-epoch <0.0a0 - - libgcc-ng ==15.1.0=*_3 + - libgcc-ng ==15.1.0=*_2 + - libgomp 15.1.0 h1383e82_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 669602 - timestamp: 1750808309041 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 - md5: e66f2b8ad787e7beb0f846e4bd7e8493 + size: 673459 + timestamp: 1746656621653 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae + md5: ddca86c7040dd0e73b2b69bd7833d225 depends: - - libgcc 15.1.0 h767d61c_3 + - libgcc 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 29033 - timestamp: 1750808224854 + size: 34586 + timestamp: 1746642200749 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd md5: 68fc66282364981589ef36868b1a7c78 @@ -8742,73 +8715,75 @@ packages: purls: [] size: 165838 timestamp: 1737548342665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183 - md5: bfbca721fd33188ef923dfe9ba172f29 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda + sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 + md5: f92e6e0a3c0c0c85561ef61aa59d555d depends: - - libgfortran5 15.1.0 hcea5267_3 + - libgfortran5 15.1.0 hcea5267_2 constrains: - - libgfortran-ng ==15.1.0=*_3 + - libgfortran-ng ==15.1.0=*_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 29057 - timestamp: 1750808257258 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e - md5: 090b3c9ae1282c8f9b394ac9e4773b10 + size: 34541 + timestamp: 1746642233221 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 + md5: 6b27baf030f5d6603713c7e72d3f6b9a depends: - - libgfortran5 14.2.0 h51e75f0_103 + - libgfortran5 14.2.0 h58528f3_105 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 156202 - timestamp: 1743862427451 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 - md5: 044a210bc1d5b8367857755665157413 + size: 155635 + timestamp: 1743911593527 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 + md5: ad35937216e65cfeecd828979ee5e9e6 depends: - - libgfortran5 14.2.0 h6c33f7e_103 + - libgfortran5 14.2.0 h2c44a93_105 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 156291 - timestamp: 1743863532821 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a - md5: 530566b68c3b8ce7eec4cd047eae19fe + size: 155474 + timestamp: 1743913530958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 + md5: 01de444988ed960031dbe84cf4f9b1fc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.1.0 constrains: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 1565627 - timestamp: 1750808236464 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 - md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 + size: 1569986 + timestamp: 1746642212331 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 + md5: 94560312ff3c78225bed62ab59854c31 depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 14_2_0_*_103 + - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1225013 - timestamp: 1743862382377 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 - md5: 69806c1e957069f1d515830dcc9f6cbb + size: 1224385 + timestamp: 1743911552203 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 + md5: 06f35a3b1479ec55036e1c9872f97f2c depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 14_2_0_*_103 + - libgfortran 14.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 806566 - timestamp: 1743863491726 + size: 806283 + timestamp: 1743913488925 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd md5: 072ab14a02164b7c0c089055368ff776 @@ -8875,26 +8850,28 @@ packages: purls: [] size: 3771466 timestamp: 1747837394297 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 - md5: 3cd1a7238a0dd3d0860fdefc496cc854 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb + md5: fbe7d535ff9d3a168c148e07358cd5b1 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 447068 - timestamp: 1750808138400 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 - md5: 94545e52b3d21a7ab89961f7bda3da0d + size: 452635 + timestamp: 1746642113092 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 + md5: 5fbacaa9b41e294a6966602205b99747 depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 535456 - timestamp: 1750808243424 + size: 540903 + timestamp: 1746656563815 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 md5: c3cfd72cbb14113abee7bbd86f44ad69 @@ -9088,203 +9065,206 @@ packages: purls: [] size: 838154 timestamp: 1745268437136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - build_number: 32 - sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 - md5: 6c3f04ccb6c578138e9f9899da0bd714 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f depends: - - libblas 3.9.0 32_h59b9bed_openblas + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - libcblas 3.9.0 32*_openblas - - blas 2.132 openblas - - liblapacke 3.9.0 32*_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17316 - timestamp: 1750388820745 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - build_number: 32 - sha256: 1e26450b80525b3f656e9c75fd26a10ebaa1d339fe4ca9c7affbebd9acbeac03 - md5: ccdca0c0730ad795e064d81dbe540723 + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda + build_number: 31 + sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 + md5: d0f3bc17e0acef003cb9d9195a205888 depends: - - libblas 3.9.0 32_h7f60823_openblas + - libblas 3.9.0 31_h7f60823_openblas constrains: - - blas 2.132 openblas - - liblapacke 3.9.0 32*_openblas - - libcblas 3.9.0 32*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17553 - timestamp: 1750389051033 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - build_number: 32 - sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 - md5: bf9ead3fa92fd75ad473c6a1d255ffcb + size: 17033 + timestamp: 1740087965941 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 depends: - - libblas 3.9.0 32_h10e41b3_openblas + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas 2.132 openblas - - libcblas 3.9.0 32*_openblas - - liblapacke 3.9.0 32*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17507 - timestamp: 1750388977861 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - build_number: 32 - sha256: 5629e592137114b24bfdea71e1c4b6bee11379631409ed91dfe2f83b32a8b298 - md5: 1652285573db93afc3ba9b3b9356e3d3 + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + build_number: 31 + sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad + md5: 40b47ee720a185289760960fc6185750 depends: - - libblas 3.9.0 32_h641d27c_mkl + - libblas 3.9.0 31_h641d27c_mkl constrains: - - libcblas 3.9.0 32*_mkl - - liblapacke 3.9.0 32*_mkl - - blas 2.132 mkl + - libcblas =3.9.0=31*_mkl + - blas =2.131=mkl + - liblapacke =3.9.0=31*_mkl license: BSD-3-Clause license_family: BSD purls: [] - size: 3735534 - timestamp: 1750389164366 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 - md5: 1a580f7796c7bf6393fddb8bbbde58dc + size: 3732648 + timestamp: 1740088548986 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda + sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c + md5: a76fd702c93cd2dfd89eff30a5fd45a8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 112894 - timestamp: 1749230047870 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 - md5: 8468beea04b9065b9807fc8b9cdc5894 + size: 112845 + timestamp: 1746531470399 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda + sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 + md5: f87e8821e0e38a4140a7ed4f52530053 depends: - __osx >=10.13 constrains: - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104826 - timestamp: 1749230155443 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 - md5: d6df911d4564d77c4374b02552cb17d1 + size: 104814 + timestamp: 1746531577001 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda + sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 + md5: 4e8ef3d79c97c9021b34d682c24c2044 depends: - __osx >=11.0 constrains: - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 92286 - timestamp: 1749230283517 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc - md5: c15148b2e18da456f5108ccb5e411446 + size: 92218 + timestamp: 1746531818330 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 + md5: 14a1042c163181e143a7522dfb8ad6ab depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - xz 5.8.1.* + - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104935 - timestamp: 1749230611612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 - md5: d864d34357c3b65a4b731f78c0801dc4 + size: 104699 + timestamp: 1746531718026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=12 license: LGPL-2.1-only license_family: GPL purls: [] - size: 33731 - timestamp: 1750274110928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - sha256: 225f4cfdb06b3b73f870ad86f00f49a9ca0a8a2d2afe59440521fafe2b6c23d9 - md5: 323dc8f259224d13078aaf7ce96c3efe + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.2.0 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 5916819 - timestamp: 1750379877844 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 - md5: 29c54869a3c7d33b6a0add39c5a325fe + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda + sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a + md5: a30dc52b2a8b6300f17eaabd2f940d41 depends: - __osx >=10.13 - - libgfortran 5.* - - libgfortran5 >=13.3.0 + - libgfortran >=5 + - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 6179547 - timestamp: 1750380498501 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 - md5: 5d7dbaa423b4c253c476c24784286e4b + size: 6170847 + timestamp: 1739826107594 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.3.0 + - libgfortran >=5 + - libgfortran5 >=13.2.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.30,<0.3.31.0a0 + - openblas >=0.3.29,<0.3.30.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 4163399 - timestamp: 1750378829050 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - sha256: c8f5dc929ba5fcee525a66777498e03bbcbfefc05a0773e5163bb08ac5122f1a - md5: 37511c874cf3b8d0034c8d24e73c0884 + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 289506 - timestamp: 1750095629466 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - sha256: 37be190992433d20336187b6fee4986cbdb11e9f901bc888aca5b2d7e5a2acc6 - md5: b9eabfc716af02b8d3ec5a51cb89b4a9 + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 + md5: 8461ab86d2cdb76d6e971aab225be73f depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 267502 - timestamp: 1750095826947 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - sha256: b1050f6da51de507eec6902367cc2a3f381dd548eaaccb85673784543dcdee1a - md5: 90be56ffd1a6b1950268f88c12e17c69 + size: 266874 + timestamp: 1739953034029 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - size: 259291 - timestamp: 1750095759683 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - sha256: 8876a2d32d3538675e035b6560691471a1571835c0bcbf23816c24c460d31439 - md5: 27269977c8f25d499727ceabc47cee3d + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 + md5: ad620e92b82d2948bc019e029c574ebb depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -9292,8 +9272,8 @@ packages: - vc14_runtime >=14.29.30139 license: zlib-acknowledgement purls: [] - size: 347727 - timestamp: 1750096091724 + size: 346511 + timestamp: 1745771984515 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf md5: edb86556cf4a0c133e7932a1597ff236 @@ -9337,49 +9317,52 @@ packages: purls: [] size: 2613087 timestamp: 1745158781377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - sha256: 89535af669f63e0dc4ae75a5fc9abb69b724b35e0f2ca0304c3d9744a55c8310 - md5: f6881c04e6617ebba22d237c36f1b88e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda + sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668 + md5: 545e93a513c10603327c76c15485e946 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 constrains: - - re2 2025.06.26.* + - re2 2024.07.02.* license: BSD-3-Clause + license_family: BSD purls: [] - size: 211720 - timestamp: 1751053073521 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - sha256: 979a49a54fcfb38f4de258d970b5c572fa29e780a67e847ea18860f99af39020 - md5: 2ba834cda1154dd23d8f1bba2f8f13e0 + size: 210073 + timestamp: 1741121121238 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda + sha256: 2bdf91b94486a06bdcc2aedcae4f0b9280301b0bb39e3168e29767c0c7b8bd85 + md5: 93ff94e5535b7051133b980d2ab1c858 depends: - - __osx >=10.13 + - __osx >=10.14 - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libcxx >=18 constrains: - - re2 2025.06.26.* + - re2 2024.07.02.* license: BSD-3-Clause + license_family: BSD purls: [] - size: 180092 - timestamp: 1751053180332 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - sha256: d125de07bcdeadddd415d2f855f7fe383b066a373fa88244e51c58fef5cb8774 - md5: ce95f5724e52eb76f4cd4be6e7a0d9ae + size: 179620 + timestamp: 1741121212954 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda + sha256: 038db1da2b9f353df6532af224c20d985228d3408d2af25aa34974f6dbee76e1 + md5: 1466284c71c62f7a9c4fa08ed8940f20 depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 + - libabseil >=20250127.0,<20250128.0a0 - libcxx >=18 constrains: - - re2 2025.06.26.* + - re2 2024.07.02.* license: BSD-3-Clause + license_family: BSD purls: [] - size: 167704 - timestamp: 1751053331260 + size: 167268 + timestamp: 1741121355716 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 md5: d27665b20bc4d074b86e628b3ba5ab8b @@ -9470,68 +9453,69 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_7.conda - sha256: 9a9e5bf30178f821d4f8de25eac0ae848915bfde6a78a66ae8b77d9c33d9d0e5 - md5: c7c4888059a8324e52de475d1e7bdc53 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 + md5: 93048463501053a00739215ea3f36324 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 919723 - timestamp: 1750925531920 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.1-h7cec44d_7.conda - sha256: 1baa156fb0c358fd693a8e00296e0a5ef9691a638d3d496d6095dc61f9de7bb4 - md5: fcdfee03f4b159a3a2e60bbb71aec334 + size: 916313 + timestamp: 1746637007836 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d + md5: 9377ba1ade655ea3fc831b456f4a2351 depends: - __osx >=10.13 - - icu >=75.1,<76.0a0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 984025 - timestamp: 1750925722213 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.1-h6fb428d_7.conda - sha256: a007d6aa37586d3a71ff9503e6ec70baac64fc40241c668a39581399502940ec - md5: b351c3e11d75aab0b8145de530afbe58 + size: 977388 + timestamp: 1746637093883 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 + md5: 85f443033cd5b3df82b5cabf79bddb09 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 902114 - timestamp: 1750925723817 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.1-hf5d6505_7.conda - sha256: 08fbdeed89ae10fb383c40f0bab3e39e3675f49700b7185a109b31e273f8762a - md5: 0bc3f5143b8cb9ccf9101c2f9391c594 + size: 899462 + timestamp: 1746637228408 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 + md5: a3900c97ba9e03332e9a911fe63f7d64 depends: - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 license: Unlicense purls: [] - size: 1285518 - timestamp: 1750925870715 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 - md5: 6d11a5edae89fe413c0569f16d308f5a + size: 1081123 + timestamp: 1746637406471 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 + md5: 1cb1c67961f6dd257eae9e9691b341aa depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_3 + - libgcc 15.1.0 h767d61c_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 3896407 - timestamp: 1750808251302 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b - md5: 57541755b5a51691955012b8e197c06c + size: 3902355 + timestamp: 1746642227493 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b + md5: 9d2072af184b5caa29492bf2344597bb depends: - - libstdcxx 15.1.0 h8f9b012_3 + - libstdcxx 15.1.0 h8f9b012_2 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] - size: 29093 - timestamp: 1750808292700 + size: 34647 + timestamp: 1746642266826 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 md5: e79a094918988bb1807462cd42c83962 @@ -9836,35 +9820,30 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d - md5: e240159643214102dc88395c4ecee9cf +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + sha256: f858ef4cbc7f449da06e7e5cf62d6db0f8269e4e723144be35b0ef3531e28591 + md5: 7b6a67507141ea93541943f0c011a872 depends: - __osx >=10.13 constrains: - - openmp 20.1.7|20.1.7.* + - openmp 20.1.5|20.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 306443 - timestamp: 1749892271445 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 - md5: 741e1da0a0798d32e13e3724f2ca2dcf + size: 306529 + timestamp: 1747367226775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + sha256: 3515d520338a334c987ce2737dfba1ebd66eb1e360582c7511738ad3dc8a9145 + md5: 66771cb733ad80bd46b66f856601001a depends: - __osx >=11.0 constrains: - - openmp 20.1.7|20.1.7.* + - openmp 20.1.5|20.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 281996 - timestamp: 1749892286735 -- pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - name: logistro - version: 1.1.0 - sha256: 4f88541fe7f3c545561b754d86121abd9c6d4d8b312381046a78dcd794fddc7c - requires_python: '>=3.8' + size: 282100 + timestamp: 1747367434936 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -10089,10 +10068,10 @@ packages: - pkg:pypi/ml-dtypes?source=hash-mapping size: 200130 timestamp: 1736539205286 -- pypi: https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl name: mypy - version: 1.16.1 - sha256: 0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15 + version: 1.16.0 + sha256: bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10104,10 +10083,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.16.1 - sha256: 1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b + version: 1.16.0 + sha256: b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10119,10 +10098,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl name: mypy - version: 1.16.1 - sha256: af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d + version: 1.16.0 + sha256: c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10134,10 +10113,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl name: mypy - version: 1.16.1 - sha256: 66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9 + version: 1.16.0 + sha256: f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -10253,26 +10232,28 @@ packages: - pkg:pypi/nest-asyncio?source=hash-mapping size: 11543 timestamp: 1733325673691 -- pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl name: networkx - version: '3.5' - sha256: 0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec + version: 3.4.2 + sha256: df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f requires_dist: - - numpy>=1.25 ; extra == 'default' - - scipy>=1.11.2 ; extra == 'default' - - matplotlib>=3.8 ; extra == 'default' + - numpy>=1.24 ; extra == 'default' + - scipy>=1.10,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.7 ; extra == 'default' - pandas>=2.0 ; extra == 'default' - - pre-commit>=4.1 ; extra == 'developer' - - mypy>=1.15 ; extra == 'developer' - - sphinx>=8.0 ; extra == 'doc' - - pydata-sphinx-theme>=0.16 ; extra == 'doc' - - sphinx-gallery>=0.18 ; extra == 'doc' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7.3 ; extra == 'doc' + - pydata-sphinx-theme>=0.15 ; extra == 'doc' + - sphinx-gallery>=0.16 ; extra == 'doc' - numpydoc>=1.8.0 ; extra == 'doc' - - pillow>=10 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' - texext>=0.6.7 ; extra == 'doc' - myst-nb>=1.1 ; extra == 'doc' - intersphinx-registry ; extra == 'doc' - - osmnx>=2.0.0 ; extra == 'example' + - osmnx>=1.9 ; extra == 'example' - momepy>=0.7.2 ; extra == 'example' - contextily>=1.6 ; extra == 'example' - seaborn>=0.13 ; extra == 'example' @@ -10285,10 +10266,7 @@ packages: - sympy>=1.10 ; extra == 'extra' - pytest>=7.2 ; extra == 'test' - pytest-cov>=4.0 ; extra == 'test' - - pytest-xdist>=3.0 ; extra == 'test' - - pytest-mpl ; extra == 'test-extras' - - pytest-randomly ; extra == 'test-extras' - requires_python: '>=3.11' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 md5: 7ba3f09fceae6a120d664217e58fe686 @@ -10313,9 +10291,9 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py311h519dc76_0.conda - sha256: a9a6f36c2982837e19448c231435a914376948eb493e2cd8e9f69b133ca0e796 - md5: 002e600fcc82f415bfaad7d05a44c016 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda + sha256: f28273a72d25f4d7d62a9ba031d5271082afc498121bd0f6783d72b4103dbbc7 + md5: babce4d9841ebfcee64249d98eb4e0d4 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10330,12 +10308,12 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 9085116 - timestamp: 1749430956961 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - sha256: 59da92a150737e830c75e8de56c149d6dc4e42c9d38ba30d2f0d4787a0c43342 - md5: 8b4095ed29d1072f7e4badfbaf9e5851 + - pkg:pypi/numpy?source=hash-mapping + size: 9068997 + timestamp: 1747545091884 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 + md5: 17fac9db62daa5c810091c2882b28f45 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10351,11 +10329,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8417476 - timestamp: 1749430957684 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py311h9224382_0.conda - sha256: 29b6b4912f1e91a186365b68a524df3d98ad319f80731befd27f465f2d703778 - md5: 91eb2cc588b04797414f36c781cb398f + size: 8490501 + timestamp: 1747545073507 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda + sha256: bcb2c6fd701f3591fd4cd04580ec62ad88622c09671139a98d82ca80e2ae365f + md5: 8e850d1284fd8a90aeb4b5195a0116f3 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10370,11 +10348,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8141094 - timestamp: 1749430994201 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py312h3b44349_0.conda - sha256: f4b6d6ba9365011d45fd5524d61647021298baf957acf0872a2d89a2815b4458 - md5: a3b98020195219903fc9085a2a48dea5 + size: 8182747 + timestamp: 1747545065417 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + sha256: 22bc6d7ac48df0a3130a24b9426a004977cb5dc8b5edbb3f3d2579a478121cbd + md5: 486e149e3648cbf8b92b0512db99bce3 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -10389,11 +10367,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7608138 - timestamp: 1749430934103 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py311h4379d9d_0.conda - sha256: 2ed53589ec66c38895abfaacccc11e0c875dd146147ab02ebf2849665671430d - md5: 56ade1d0ea3530973648464b23a5b131 + size: 7691449 + timestamp: 1747545110970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda + sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 + md5: 9446d2629b529e92769dfb34c7c194bb depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10409,11 +10387,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7148890 - timestamp: 1749431035775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py312h113b91d_0.conda - sha256: 270572c176133798bec6282b30e34c4bf552c441c1c23e8a0bf625468cb3de0f - md5: e0fb333bee06c1fd1064f594612a6aa7 + size: 7018728 + timestamp: 1747545122995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e + md5: fff7ab22b4f5c7036d3c2e1f92632fa4 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -10429,11 +10407,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6443862 - timestamp: 1749431046679 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py311hc907d76_0.conda - sha256: 4514c2901cdeb49f1b5955255b89358fbeecbada2a18a316ce976458954154ac - md5: d065ccc4e3e6bf1f3fbaf93d879e0a7d + size: 6437085 + timestamp: 1747545094808 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda + sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d + md5: 6612dfa4e68dd90c539f2e9f40a42514 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10449,11 +10427,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7294411 - timestamp: 1749431357461 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py312h3647826_0.conda - sha256: 76d6e28804ab7f9a8088771f19b34631142303ef89f9ec965f86b2d36b2ccac9 - md5: 54c2aae9e18ee3250e4e8a06efe75f9a + size: 7800740 + timestamp: 1747545419079 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + sha256: 18d5bfd2830702fa40374aa1f03cca8b77fa5f1df92fecf52d17d5a0a246be46 + md5: f0811ca68448b3e8b53e05db7667e64d depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -10469,8 +10447,8 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6630003 - timestamp: 1749431225390 + size: 7028854 + timestamp: 1747545411647 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f md5: 5402c2b046432ceb2d192a82802e7854 @@ -10478,24 +10456,24 @@ packages: - numpy - python >=3.9 license: BSD-2-Clause - license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping size: 38384 timestamp: 1747937493897 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 - md5: 66f9ba52d846feffa1c5d62522324b4f +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 + md5: 5af206d64d18d6c8dfb3122b4d9e643b depends: - python >=3.9 - sphinx >=6 + - tabulate >=0.8.10 - tomli >=1.1.0 - - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping - size: 60220 - timestamp: 1750861325361 + size: 58041 + timestamp: 1733650959971 - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 @@ -10673,12 +10651,12 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62479 timestamp: 1733688053334 -- pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl name: optree - version: 0.16.0 - sha256: 95f0f9b05dbd53cb04f37c49a508f6462ce06fbdb1bb0e0552129de91f8d36b6 + version: 0.15.0 + sha256: def5b08f219c31edd029b47624e689ffa07747b0694222156f28a28d341d29ac requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10692,8 +10670,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10705,13 +10683,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl name: optree - version: 0.16.0 - sha256: 6ae2bf009f2a6a7c38f69d70eb0d8e9afd7a871b80c8682d98ce8f25cc50df40 + version: 0.15.0 + sha256: ba2eee9de9d57e145b4c1a71749f7f8b8fe1c645abbb306d4a26cfa45a9cdbb5 requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10725,8 +10710,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10738,13 +10723,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.16.0 - sha256: f703d7926c36eebdd56fc08aabefcf32a8b7292a9dd4468e56b0ab61bf6214bd + version: 0.15.0 + sha256: 01a0dc75c594c884d0ca502b8d169cec538e19a70883d2e5f5b9b08fce740958 requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10758,8 +10750,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10771,13 +10763,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl name: optree - version: 0.16.0 - sha256: 768d2e12d3626a3d37f8594b7e0d7e633ff66d5de420ca6a1df7132c6a8cdc15 + version: 0.15.0 + sha256: f8d58949ef132beb3a025ace512a71a0fcf92e0e5ef350f289f33a782ae6cb85 requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10791,8 +10790,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10804,13 +10803,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl name: optree - version: 0.16.0 - sha256: 22b015d8d7b948d7815924763d473cc7f691731f3b67198f83cea835ae3e2c98 + version: 0.15.0 + sha256: 4aad5023686cd7caad68d70ad3706b82cfe9ae8ff9a13c08c1edef2a9b4c9d72 requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10824,8 +10830,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10837,13 +10843,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.16.0 - sha256: b08eee60cd0756cd9874ffb44f5e47337c698100fd19dcdc18b86eb1518e3a0a + version: 0.15.0 + sha256: a1f185b0d21bc4dda1f4fd03f5ba9e2bc9d28ca14bce3ce3d36b5817140a345e requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10857,8 +10870,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10870,13 +10883,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl name: optree - version: 0.16.0 - sha256: 71e667b1dd0d331590e1356af506ab9896803acb85aea114f9e76a16a4e1be36 + version: 0.15.0 + sha256: d6525d6a550a1030957e5205e57a415d608a9f7561154e0fb29670e967424578 requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10890,8 +10910,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10903,13 +10923,20 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl name: optree - version: 0.16.0 - sha256: f08aaa1c2ae092b3e662125ad19860046c63d7451d41be133ddd6594920e295e + version: 0.15.0 + sha256: c15d98e6f587badb9df67d67fa914fcfa0b63db2db270951915c563816c29f3d requires_dist: - - typing-extensions>=4.6.0 + - typing-extensions>=4.5.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -10923,8 +10950,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' - - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -10936,27 +10963,14 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - name: orjson - version: 3.10.18 - sha256: 50c15557afb7f6d63bc6d6348e0337a880a04eaa9cd7c9d569bcb4e760a24753 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: orjson - version: 3.10.18 - sha256: 9dca85398d6d093dd41dc0983cbf54ab8e6afd1c547b6b8a311643917fbf4e0c - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - name: orjson - version: 3.10.18 - sha256: e0a183ac3b8e40471e8d843105da6fbe7c070faab023be3b08188ee3f85719b8 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: orjson - version: 3.10.18 - sha256: 9da552683bc9da222379c7a01779bddd0ad39dd699dd6300abaf43eadee38334 - requires_python: '>=3.9' + - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' + - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' + - torchvision ; extra == 'benchmark' + - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' + - pandas ; extra == 'benchmark' + - tabulate ; extra == 'benchmark' + - termcolor ; extra == 'benchmark' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -10981,9 +10995,9 @@ packages: - pkg:pypi/packaging?source=compressed-mapping size: 62477 timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda - sha256: 402602238308e04062e599b2df0984ed77beca8f9fe49cc78559cc716d816e2d - md5: 805040d254f51cb15df55eff6e213d09 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda + sha256: 98cd49bfc4b803d950f9dbc4799793903aec1eaacd388c244a0b46d644159831 + md5: c9f8fe78840d5c04e61666474bd739b2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10996,46 +11010,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - pyqt5 >=5.15.9 - - beautifulsoup4 >=4.11.2 - odfpy >=1.4.1 - - s3fs >=2022.11.0 - - lxml >=4.9.2 - - bottleneck >=1.3.6 - - tzdata >=2022.7 - numba >=0.56.4 - - xarray >=2022.12.0 - - scipy >=1.10.0 - - xlrd >=2.0.1 + - qtpy >=2.3.0 + - pyarrow >=10.0.1 - matplotlib >=3.6.3 - - pandas-gbq >=0.19.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - lxml >=4.9.2 + - bottleneck >=1.3.6 + - tabulate >=0.9.0 + - s3fs >=2022.11.0 - zstandard >=0.19.0 - - psycopg2 >=2.9.6 - sqlalchemy >=2.0.0 + - xlrd >=2.0.1 + - fastparquet >=2022.12.0 + - numexpr >=2.8.4 + - pyqt5 >=5.15.9 + - pytables >=3.8.0 + - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - html5lib >=1.1 + - xarray >=2022.12.0 + - blosc >=1.21.3 + - openpyxl >=3.1.0 + - pandas-gbq >=0.19.0 + - tzdata >=2022.7 - pyxlsb >=1.0.10 + - psycopg2 >=2.9.6 + - scipy >=1.10.0 - python-calamine >=0.1.7 - - tabulate >=0.9.0 - xlsxwriter >=3.0.5 - - openpyxl >=3.1.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - qtpy >=2.3.0 - - html5lib >=1.1 - - fsspec >=2022.11.0 - - numexpr >=2.8.4 - - gcsfs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - pyarrow >=10.0.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15299103 - timestamp: 1749100113269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - sha256: 44f5587c1e1a9f0257387dd18735bcf65a67a6089e723302dc7947be09d9affe - md5: ac82ac336dbe61106e21fb2e11704459 + size: 15689443 + timestamp: 1744430942431 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + sha256: b0bed36b95757bbd269d30b2367536b802158bdf7947800ee7ae55089cfa8b9c + md5: 2979458c23c7755683a0598fb33e7666 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11048,46 +11062,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - bottleneck >=1.3.6 - - blosc >=1.21.3 - - numba >=0.56.4 - - pyqt5 >=5.15.9 - - pyarrow >=10.0.1 + - tabulate >=0.9.0 + - pytables >=3.8.0 + - html5lib >=1.1 + - lxml >=4.9.2 - gcsfs >=2022.11.0 - - xlsxwriter >=3.0.5 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 + - odfpy >=1.4.1 - numexpr >=2.8.4 - - fastparquet >=2022.12.0 - - lxml >=4.9.2 - - xlrd >=2.0.1 - - openpyxl >=3.1.0 - - qtpy >=2.3.0 - - s3fs >=2022.11.0 - - pandas-gbq >=0.19.0 - - pytables >=3.8.0 - - python-calamine >=0.1.7 - - fsspec >=2022.11.0 - psycopg2 >=2.9.6 + - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - tzdata >=2022.7 + - pyarrow >=10.0.1 + - pyqt5 >=5.15.9 + - xlrd >=2.0.1 + - sqlalchemy >=2.0.0 - xarray >=2022.12.0 - - matplotlib >=3.6.3 - - pyxlsb >=1.0.10 - - tabulate >=0.9.0 - - odfpy >=1.4.1 + - scipy >=1.10.0 + - fastparquet >=2022.12.0 - pyreadstat >=1.2.0 - - html5lib >=1.1 + - matplotlib >=3.6.3 + - bottleneck >=1.3.6 + - s3fs >=2022.11.0 - zstandard >=0.19.0 - - sqlalchemy >=2.0.0 - - tzdata >=2022.7 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - beautifulsoup4 >=4.11.2 + - pandas-gbq >=0.19.0 + - xlsxwriter >=3.0.5 + - numba >=0.56.4 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14958450 - timestamp: 1749100123120 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda - sha256: 9259d581c4e0f0edc8ac47919dfd751d206d0b7ee242c0fa63ddd5b22fdeddb9 - md5: aa02add77b5abd716fbe0aaf0a0da7ee + size: 15392153 + timestamp: 1744430987175 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda + sha256: 5a25e7353b25fcf0af48a3a127b4c204b478b2abe2f7e5b863a68ea91955328b + md5: f763d55519fd9595b2d0e85265810137 depends: - __osx >=10.13 - libcxx >=18 @@ -11099,46 +11113,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - pandas-gbq >=0.19.0 - - blosc >=1.21.3 - - qtpy >=2.3.0 - - html5lib >=1.1 - - pyarrow >=10.0.1 + - tabulate >=0.9.0 + - zstandard >=0.19.0 + - bottleneck >=1.3.6 + - psycopg2 >=2.9.6 + - matplotlib >=3.6.3 + - xarray >=2022.12.0 - openpyxl >=3.1.0 - - beautifulsoup4 >=4.11.2 + - html5lib >=1.1 + - pytables >=3.8.0 - pyxlsb >=1.0.10 + - numexpr >=2.8.4 + - pyarrow >=10.0.1 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - tzdata >=2022.7 + - pyqt5 >=5.15.9 - sqlalchemy >=2.0.0 - - matplotlib >=3.6.3 - - python-calamine >=0.1.7 - - bottleneck >=1.3.6 - - pyreadstat >=1.2.0 + - beautifulsoup4 >=4.11.2 - lxml >=4.9.2 - - odfpy >=1.4.1 + - s3fs >=2022.11.0 + - numba >=0.56.4 + - fastparquet >=2022.12.0 + - fsspec >=2022.11.0 + - blosc >=1.21.3 + - pyreadstat >=1.2.0 - xlsxwriter >=3.0.5 - - pytables >=3.8.0 - - xarray >=2022.12.0 - - gcsfs >=2022.11.0 + - python-calamine >=0.1.7 - scipy >=1.10.0 - - tzdata >=2022.7 - - zstandard >=0.19.0 - - pyqt5 >=5.15.9 - - fsspec >=2022.11.0 - - numba >=0.56.4 - - s3fs >=2022.11.0 - - numexpr >=2.8.4 - - psycopg2 >=2.9.6 - - tabulate >=0.9.0 + - odfpy >=1.4.1 + - gcsfs >=2022.11.0 - xlrd >=2.0.1 - - fastparquet >=2022.12.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14526764 - timestamp: 1749100213048 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - sha256: 67a07b607c9f81fdd90c2aeba55fd53261eda5e155fe907088c31cada8ee0496 - md5: 5aabeb910da8efba6e5128aa7aaf3256 + size: 14756244 + timestamp: 1744430913476 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + sha256: b9c98565d165384a53ecdb14c8ccd9144d672b58c81e057598d197c6be0aba98 + md5: 50fcc3531441b73cb493ef9b2604abde depends: - __osx >=10.13 - libcxx >=18 @@ -11150,46 +11164,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - pyxlsb >=1.0.10 - - qtpy >=2.3.0 - - zstandard >=0.19.0 - - tabulate >=0.9.0 + - sqlalchemy >=2.0.0 - numba >=0.56.4 - - numexpr >=2.8.4 - - odfpy >=1.4.1 - - pytables >=3.8.0 + - pyarrow >=10.0.1 + - python-calamine >=0.1.7 + - bottleneck >=1.3.6 - tzdata >=2022.7 - - blosc >=1.21.3 - - sqlalchemy >=2.0.0 - - s3fs >=2022.11.0 + - lxml >=4.9.2 + - gcsfs >=2022.11.0 - html5lib >=1.1 - - beautifulsoup4 >=4.11.2 - - matplotlib >=3.6.3 - pandas-gbq >=0.19.0 - - gcsfs >=2022.11.0 + - psycopg2 >=2.9.6 + - numexpr >=2.8.4 + - fastparquet >=2022.12.0 + - zstandard >=0.19.0 + - tabulate >=0.9.0 + - xarray >=2022.12.0 - xlsxwriter >=3.0.5 - - lxml >=4.9.2 + - odfpy >=1.4.1 - pyreadstat >=1.2.0 - - python-calamine >=0.1.7 - - fsspec >=2022.11.0 - - pyqt5 >=5.15.9 - - psycopg2 >=2.9.6 - - xlrd >=2.0.1 - - bottleneck >=1.3.6 - openpyxl >=3.1.0 - - pyarrow >=10.0.1 - - fastparquet >=2022.12.0 + - xlrd >=2.0.1 + - beautifulsoup4 >=4.11.2 + - s3fs >=2022.11.0 + - matplotlib >=3.6.3 - scipy >=1.10.0 - - xarray >=2022.12.0 + - fsspec >=2022.11.0 + - pytables >=3.8.0 + - qtpy >=2.3.0 + - blosc >=1.21.3 + - pyqt5 >=5.15.9 + - pyxlsb >=1.0.10 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14183743 - timestamp: 1749100129960 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda - sha256: dc90abbeaa1b73b77c47269aec1faac72f2bf71c55e6a51a523ac92b53f09a53 - md5: ea3aa0995e65698bd1d59999c1482d15 + size: 14590879 + timestamp: 1744431018654 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda + sha256: 2fedf5cec20945d5ce1a5264f06a8adf23bc6b355cef365e92241a3f1f6a6d11 + md5: 29ae2c4e0ee3c65fa8520cafbf479ff7 depends: - __osx >=11.0 - libcxx >=18 @@ -11202,46 +11216,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - html5lib >=1.1 - - tabulate >=0.9.0 - - bottleneck >=1.3.6 - - fsspec >=2022.11.0 - - beautifulsoup4 >=4.11.2 - - pytables >=3.8.0 - - gcsfs >=2022.11.0 - - scipy >=1.10.0 - python-calamine >=0.1.7 + - pytables >=3.8.0 + - s3fs >=2022.11.0 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - tzdata >=2022.7 + - xarray >=2022.12.0 + - fastparquet >=2022.12.0 + - pyqt5 >=5.15.9 - numba >=0.56.4 - - numexpr >=2.8.4 - - psycopg2 >=2.9.6 - - lxml >=4.9.2 - pyxlsb >=1.0.10 - - sqlalchemy >=2.0.0 - - fastparquet >=2022.12.0 - - xarray >=2022.12.0 - - zstandard >=0.19.0 + - xlrd >=2.0.1 + - bottleneck >=1.3.6 - matplotlib >=3.6.3 - - odfpy >=1.4.1 - - openpyxl >=3.1.0 - xlsxwriter >=3.0.5 - - tzdata >=2022.7 + - zstandard >=0.19.0 + - odfpy >=1.4.1 + - qtpy >=2.3.0 + - numexpr >=2.8.4 + - gcsfs >=2022.11.0 + - tabulate >=0.9.0 - pyreadstat >=1.2.0 - - pyqt5 >=5.15.9 - - s3fs >=2022.11.0 - - blosc >=1.21.3 - - pyarrow >=10.0.1 - pandas-gbq >=0.19.0 - - xlrd >=2.0.1 - - qtpy >=2.3.0 + - blosc >=1.21.3 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - lxml >=4.9.2 + - html5lib >=1.1 + - fsspec >=2022.11.0 + - psycopg2 >=2.9.6 + - sqlalchemy >=2.0.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14290986 - timestamp: 1749100100341 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - sha256: 3105a94036f37429ed292763d3034008fd0b4911bd565bdf86c33e898655dcdf - md5: d95b29a40430115d6aa817f70be5b5b1 + size: 14820281 + timestamp: 1744430962289 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + sha256: 57beb95a8c5c3c35a87d0c5a6c3235fb3673618445e60be952a2502781534613 + md5: 63af5cccfa8b67825d8358b149e96466 depends: - __osx >=11.0 - libcxx >=18 @@ -11254,46 +11268,46 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - xlrd >=2.0.1 - - pyxlsb >=1.0.10 + - zstandard >=0.19.0 - pyreadstat >=1.2.0 - - fsspec >=2022.11.0 - - matplotlib >=3.6.3 - - s3fs >=2022.11.0 - - pyqt5 >=5.15.9 - - lxml >=4.9.2 - blosc >=1.21.3 - - tabulate >=0.9.0 - fastparquet >=2022.12.0 - - numba >=0.56.4 - - scipy >=1.10.0 + - qtpy >=2.3.0 + - openpyxl >=3.1.0 + - psycopg2 >=2.9.6 - xlsxwriter >=3.0.5 + - lxml >=4.9.2 + - xarray >=2022.12.0 + - pyxlsb >=1.0.10 + - matplotlib >=3.6.3 + - python-calamine >=0.1.7 - gcsfs >=2022.11.0 - - html5lib >=1.1 + - numba >=0.56.4 + - pandas-gbq >=0.19.0 - odfpy >=1.4.1 - - bottleneck >=1.3.6 + - fsspec >=2022.11.0 - numexpr >=2.8.4 + - xlrd >=2.0.1 + - scipy >=1.10.0 + - bottleneck >=1.3.6 + - pyqt5 >=5.15.9 + - s3fs >=2022.11.0 + - html5lib >=1.1 + - pytables >=3.8.0 + - tabulate >=0.9.0 - beautifulsoup4 >=4.11.2 - pyarrow >=10.0.1 - - openpyxl >=3.1.0 - - qtpy >=2.3.0 - - pytables >=3.8.0 - - tzdata >=2022.7 - - zstandard >=0.19.0 - - psycopg2 >=2.9.6 - - xarray >=2022.12.0 - sqlalchemy >=2.0.0 - - python-calamine >=0.1.7 - - pandas-gbq >=0.19.0 + - tzdata >=2022.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14054660 - timestamp: 1749100309197 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda - sha256: b785d7a6d3146b4b9b13d200bb410ba2db31fa69da500e47be8e9f617e34d170 - md5: 5856ab7c6cd759b51b7d80ad0b7b92e7 + size: 14442730 + timestamp: 1744431003090 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda + sha256: 7aabb8d23a6817844a7f1b402e7e147e341cade5f470a908b8239f969c7b681c + md5: 84c8b4aab176baefd352cd34f7e69469 depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -11306,46 +11320,46 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - pytables >=3.8.0 - - pyreadstat >=1.2.0 - - numexpr >=2.8.4 - - blosc >=1.21.3 + - lxml >=4.9.2 + - pandas-gbq >=0.19.0 + - psycopg2 >=2.9.6 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 - html5lib >=1.1 + - sqlalchemy >=2.0.0 + - fastparquet >=2022.12.0 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - numexpr >=2.8.4 + - pyqt5 >=5.15.9 + - openpyxl >=3.1.0 - tzdata >=2022.7 + - bottleneck >=1.3.6 + - tabulate >=0.9.0 - numba >=0.56.4 - - python-calamine >=0.1.7 - - fastparquet >=2022.12.0 - - xlrd >=2.0.1 + - scipy >=1.10.0 - beautifulsoup4 >=4.11.2 - - zstandard >=0.19.0 - - fsspec >=2022.11.0 - - xlsxwriter >=3.0.5 - s3fs >=2022.11.0 - - openpyxl >=3.1.0 - - odfpy >=1.4.1 - - matplotlib >=3.6.3 - - scipy >=1.10.0 + - gcsfs >=2022.11.0 - qtpy >=2.3.0 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - lxml >=4.9.2 - - pandas-gbq >=0.19.0 - - sqlalchemy >=2.0.0 + - odfpy >=1.4.1 + - pyreadstat >=1.2.0 + - xlrd >=2.0.1 - pyarrow >=10.0.1 - - tabulate >=0.9.0 - - psycopg2 >=2.9.6 - - pyxlsb >=1.0.10 - - gcsfs >=2022.11.0 - - pyqt5 >=5.15.9 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - fsspec >=2022.11.0 + - pytables >=3.8.0 + - xlsxwriter >=3.0.5 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14178063 - timestamp: 1749100482385 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - sha256: e4c8a685cfa1334a566b642523c9584d79ba78ed05888c7b7809d9116b6e9e25 - md5: e2ab2d8cc52281c9ebe19451936802eb + size: 14530915 + timestamp: 1744431484551 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + sha256: 86fe04c5f0dcae3644e3d2d892ddf6760d89eeb8fe1a31ef30290ac5a6a9f125 + md5: 08b4650b022c9f3233d45f231fb9471f depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -11358,43 +11372,43 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - pyarrow >=10.0.1 - - gcsfs >=2022.11.0 - - fsspec >=2022.11.0 - - lxml >=4.9.2 - - tabulate >=0.9.0 - - openpyxl >=3.1.0 - - pyreadstat >=1.2.0 - - xlrd >=2.0.1 - - pyqt5 >=5.15.9 - pyxlsb >=1.0.10 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 - - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - bottleneck >=1.3.6 + - html5lib >=1.1 + - openpyxl >=3.1.0 - python-calamine >=0.1.7 + - tabulate >=0.9.0 + - numexpr >=2.8.4 - beautifulsoup4 >=4.11.2 - - fastparquet >=2022.12.0 - - bottleneck >=1.3.6 + - odfpy >=1.4.1 + - gcsfs >=2022.11.0 + - pytables >=3.8.0 + - pyqt5 >=5.15.9 + - zstandard >=0.19.0 + - scipy >=1.10.0 - xarray >=2022.12.0 - - xlsxwriter >=3.0.5 - - sqlalchemy >=2.0.0 - - psycopg2 >=2.9.6 - - matplotlib >=3.6.3 - blosc >=1.21.3 - - pytables >=3.8.0 - - html5lib >=1.1 - - numba >=0.56.4 + - qtpy >=2.3.0 + - sqlalchemy >=2.0.0 + - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - lxml >=4.9.2 + - xlrd >=2.0.1 - tzdata >=2022.7 + - fastparquet >=2022.12.0 + - s3fs >=2022.11.0 + - xlsxwriter >=3.0.5 - pandas-gbq >=0.19.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - odfpy >=1.4.1 + - numba >=0.56.4 + - pyarrow >=10.0.1 + - matplotlib >=3.6.3 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 13859642 - timestamp: 1749100498003 + size: 14150000 + timestamp: 1744431235710 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -11569,7 +11583,7 @@ packages: - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=hash-mapping + - pkg:pypi/pexpect?source=compressed-mapping size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -11583,9 +11597,9 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d - md5: 39b4228a867772d610c02e06f939a5b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a + md5: d2f1c87d4416d1e7344cf92b1aaee1c4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -11593,33 +11607,33 @@ packages: license: MIT license_family: MIT purls: [] - size: 402222 - timestamp: 1749552884791 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 - md5: e1e0595633f79ce40f3fba9a337a155b + size: 398664 + timestamp: 1746011575217 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 + md5: 808d70603573b87f3427b61501fa376d depends: - __osx >=10.13 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 345091 - timestamp: 1749552991974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 - md5: 0587a57e200568a71982173c07684423 + size: 341650 + timestamp: 1746011664546 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b + md5: d098a1cca9d588cd4d258d06a08a454e depends: - __osx >=11.0 - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 214660 - timestamp: 1749553221709 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e - md5: 2566a45fb15e2f540eff14261f1242af + size: 213341 + timestamp: 1746011718977 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 + md5: 01617534ef71b5385ebba940a6d6150d depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -11627,8 +11641,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 476515 - timestamp: 1749553103224 + size: 472718 + timestamp: 1746016414502 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 md5: 5a5870a74432aa332f7d32180633ad05 @@ -11693,17 +11707,17 @@ packages: - pkg:pypi/pre-commit?source=hash-mapping size: 195854 timestamp: 1742475656293 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - sha256: 454e2c0ef14accc888dd2cd2e8adb8c6a3a607d2d3c2f93962698b5718e6176d - md5: c64b77ccab10b822722904d889fa83b5 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + sha256: 31d2fbd381d6ecc9f01d106da5e095104b235917a0b3c342887ee66ca0e85025 + md5: 7bfaef51c8364f6f5096a5a60bb83413 depends: - python >=3.9 license: Apache-2.0 license_family: Apache purls: - pkg:pypi/prometheus-client?source=hash-mapping - size: 52641 - timestamp: 1748896836631 + size: 53514 + timestamp: 1747487319612 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b md5: d17ae9db4dc594267181bd199bf9a551 @@ -11715,7 +11729,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/prompt-toolkit?source=hash-mapping + - pkg:pypi/prompt-toolkit?source=compressed-mapping size: 271841 timestamp: 1744724188108 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda @@ -11885,17 +11899,17 @@ packages: purls: [] size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a - md5: 6b6ece66ebcae2d5f326c77ef2c5a066 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 depends: - python >=3.9 license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/pygments?source=compressed-mapping - size: 889287 - timestamp: 1750615908735 + - pkg:pypi/pygments?source=hash-mapping + size: 888600 + timestamp: 1736243563082 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda sha256: 0ddfbff3596d382b7498b42185d1852625cd949f77dab25f392329b2b61fdd1e md5: 7ec06aad0aaf2bbb04b3e97eebb95a3e @@ -12016,12 +12030,12 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 147736 timestamp: 1727646635489 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda - sha256: 1124855261a8ddbe89d3d3d9bff81baa367d2f8b8300d0d94bb0db011f34e07c - md5: 9ed5f7f859b030414087e221e6881fe1 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda + sha256: 7cc9dd5c836631c733173c88187231bfc0438135e0ddf94e866e45b3d10592bd + md5: 3b2f520d27fa7cf9c6c73fb43c69a321 depends: - __osx >=10.13 - - libffi >=3.4.6,<3.5.0a0 + - libffi >=3.4,<4.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - setuptools @@ -12029,14 +12043,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 486545 - timestamp: 1750207980507 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - sha256: d4376eba59828c0134a439d5c82ee1d7a2dcd4f7c80878859b363865979b3f56 - md5: 5cdd230ab8467ca37570cd09a3977e17 + size: 489258 + timestamp: 1736891091428 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda + sha256: 91a27ede294fec129d115f2e0b0ce881f0c12332ee5e9c33ba522c037ad14bbb + md5: 0925c0e6ee32098c461423ea93490b97 depends: - __osx >=10.13 - - libffi >=3.4.6,<3.5.0a0 + - libffi >=3.4,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - setuptools @@ -12044,14 +12058,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 484609 - timestamp: 1750207854345 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda - sha256: ae4d7acab635209c88586849e1023892fc3242b0540567178efc17546eb33586 - md5: bff41faa73404184a27ec3903bc1baf2 + size: 489634 + timestamp: 1736891165910 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda + sha256: 7eb9c40a460ea769f024aaf45dae9fde7ca41137ca82154c50c8aead8a32ff88 + md5: cc865b09e7a02328840b163fb8856731 depends: - __osx >=11.0 - - libffi >=3.4.6,<3.5.0a0 + - libffi >=3.4,<4.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -12060,14 +12074,14 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 476864 - timestamp: 1750208146293 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - sha256: d4b1ae7f925720c1a6643c03199c6a47ba6a536bfd630f522baa5fe6ebf4a786 - md5: 02247b8a9ba52a15a53edd6d4cf9dac4 + size: 480994 + timestamp: 1736891387770 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda + sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 + md5: 0726db04477a28c51d1a260afb356b67 depends: - __osx >=11.0 - - libffi >=3.4.6,<3.5.0a0 + - libffi >=3.4,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -12076,45 +12090,45 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 474838 - timestamp: 1750207878592 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda - sha256: f8055dedb38952114787e56cf56827108daff2b9c1e340e0fe1e45164eef3825 - md5: 1ea1af1e872c875b1532c6b5c562a0ee + size: 478921 + timestamp: 1736891272846 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda + sha256: 94e00e4c9b5c5d8b2374321a0f908b7812b06ac8c9cb99242ddaa4ea0091f0be + md5: d16654f6b3f602bb0acab446c55bcafb depends: - __osx >=10.13 - - libffi >=3.4.6,<3.5.0a0 - - pyobjc-core 11.1.* + - libffi >=3.4,<4.0a0 + - pyobjc-core 11.0.* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 384309 - timestamp: 1750225386024 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - sha256: df309c1fd5a015d92c687200a10661a63955387620f61b1dd17a151d4a6ad4d1 - md5: dc83fce82c147af35c199348ce4938a6 + size: 385111 + timestamp: 1736927116099 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + sha256: 974fc6659f162a6e9cf201e5544f32d5c38d795a1141b327f87be2821dc7bf07 + md5: 2486dd4f176f772531e0ecf22a8b85bd depends: - __osx >=10.13 - - libffi >=3.4.6,<3.5.0a0 - - pyobjc-core 11.1.* + - libffi >=3.4,<4.0a0 + - pyobjc-core 11.0.* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 380589 - timestamp: 1750225380233 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda - sha256: 78d7e37661a41f18190a9b51c74712e69f7fdc2505fb2d5866d1d1843acb98e3 - md5: 1cdf530164d41cf7424e28f39562fe83 + size: 381786 + timestamp: 1736927108218 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda + sha256: 33635759c626103696963a4d439f01cc534fe94c318ce5a14c7b9ddbe8dfb78c + md5: 39da4013010bd559600f775ebf6a5915 depends: - __osx >=11.0 - - libffi >=3.4.6,<3.5.0a0 - - pyobjc-core 11.1.* + - libffi >=3.4,<4.0a0 + - pyobjc-core 11.0.* - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -12122,15 +12136,15 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 390526 - timestamp: 1750225447749 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - sha256: a6f262fe5706c73dce7ca7fbec9a055fc225422ad8d7fc45dd66ad9dddb0afe3 - md5: 5b7a58b273bca2c67dd8ddaea92e404e + size: 389214 + timestamp: 1736927161972 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + sha256: 53d099865f8f758029708f4365ee7c9184d9ffcc8fc8210971b723a3936f9c00 + md5: dc263e6e18b32318a43252dbb0596ad4 depends: - __osx >=11.0 - - libffi >=3.4.6,<3.5.0a0 - - pyobjc-core 11.1.* + - libffi >=3.4,<4.0a0 + - pyobjc-core 11.0.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -12138,8 +12152,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 386128 - timestamp: 1750225477437 + size: 383608 + timestamp: 1736927118445 - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl name: pyreadline3 version: 3.5.4 @@ -12176,16 +12190,15 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d - md5: a49c2283f24696a7b30367b7346a0144 - depends: - - colorama >=0.4 - - exceptiongroup >=1 - - iniconfig >=1 - - packaging >=20 - - pluggy >=1.5,<2 - - pygments >=2.7.2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 + md5: c3c9316209dec74a705a36797970c6be + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 - python >=3.9 - tomli >=1 constrains: @@ -12194,11 +12207,11 @@ packages: license_family: MIT purls: - pkg:pypi/pytest?source=hash-mapping - size: 276562 - timestamp: 1750239526127 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 - md5: ce978e1b9ed8b8d49164e90a5cdc94cd + size: 259816 + timestamp: 1740946648058 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd + md5: 1e35d8f975bc0e984a19819aa91c440a depends: - coverage >=7.5 - pytest >=4.6 @@ -12207,9 +12220,9 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytest-cov?source=compressed-mapping - size: 28216 - timestamp: 1749778064293 + - pkg:pypi/pytest-cov?source=hash-mapping + size: 27565 + timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda sha256: b6fed61a0f6aba248fe4ad590427d92ed94a85c3a2fd238362f4c1d3b5d900a4 md5: 07ab2b7111d3e814cfd73581e34cb9a1 @@ -12224,9 +12237,9 @@ packages: - pkg:pypi/pytest-profiling?source=hash-mapping size: 15889 timestamp: 1740145872989 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 - md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 + md5: 59aad4fb37cabc0bacc73cf344612ddd depends: - execnet >=2.1 - pytest >=7.0.0 @@ -12237,11 +12250,11 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-xdist?source=hash-mapping - size: 39210 - timestamp: 1748342202415 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda - sha256: 9979a7d4621049388892489267139f1aa629b10c26601ba5dce96afc2b1551d4 - md5: 8c399445b6dc73eab839659e6c7b5ad1 + size: 38147 + timestamp: 1733240891538 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda + sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 + md5: b61d4fbf583b8393d9d00ec106ad3658 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -12251,7 +12264,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -12264,11 +12277,11 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 30629559 - timestamp: 1749050021812 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d - md5: 94206474a5608243a10c92cefbe0908f + size: 30545496 + timestamp: 1744325586785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 + md5: a41d26cd4d47092d683915d058380dec depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -12278,7 +12291,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -12291,18 +12304,18 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 31445023 - timestamp: 1749050216615 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda - sha256: d8e15db837c10242658979bc475298059bd6615524f2f71365ab8e54fbfea43c - md5: 6e28c31688c6f1fdea3dc3d48d33e1c0 + size: 31279179 + timestamp: 1744325164633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda + sha256: fcd4b8a9a206940321d1d6569ddac2e99f359f0d5864e48140374a85aed5c27f + md5: cfa36957cba60dca8e79a974d09b6a2c depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12313,18 +12326,18 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15423460 - timestamp: 1749049420299 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b - md5: 06049132ecd09d0c1dc3d54d93cf1d5d + size: 15467842 + timestamp: 1744324543915 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 + md5: 597c4102c97504ede5297d06fb763951 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12335,18 +12348,18 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13571569 - timestamp: 1749049058713 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda - sha256: 2c966293ef9e97e66b55747c7a97bc95ba0311ac1cf0d04be4a51aafac60dcb1 - md5: 95facc4683b7b3b9cf8ae0ed10f30dce + size: 13783219 + timestamp: 1744324415187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda + sha256: ea91eb5bc7160cbc6f8110702f9250c87e378ff1dc83ab8daa8ae7832fb5d0de + md5: 6ab5f6a9e85f1b1848b6518e7eea63ee depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12357,18 +12370,18 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 14573820 - timestamp: 1749048947732 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - sha256: cde8b944c2dc378a5afbc48028d0843583fd215493d5885a80f1b41de085552f - md5: 9207ebad7cfbe2a4af0702c92fd031c4 + size: 13584762 + timestamp: 1744323773319 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e + md5: c88f1a7e1e7b917d9c139f03b0960fea depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -12379,17 +12392,17 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13009234 - timestamp: 1749048134449 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda - sha256: 723dbca1384f30bd2070f77dd83eefd0e8d7e4dda96ac3332fbf8fe5573a8abb - md5: bedbb6f7bb654839719cd528f9b298ad + size: 12932743 + timestamp: 1744323815320 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda + sha256: 41e1c07eecff9436b9bb27724822229b2da6073af8461ede6c81b508c0677c56 + md5: c1f91331274f591340e2f50e737dfbe9 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -12401,17 +12414,17 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 18242669 - timestamp: 1749048351218 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e - md5: 6aa5e62df29efa6319542ae5025f4376 + size: 18299489 + timestamp: 1744323460367 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + sha256: a791fa8f5ce68ab00543ecd3798bfa573db327902ccd5cb7598fd7e94ea194d3 + md5: 495e849ebc04562381539d25cf303a9f depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.50.0,<4.0a0 + - libsqlite >=3.49.1,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -12423,20 +12436,20 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 15829289 - timestamp: 1749047682640 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 - md5: 5b8d21249ff20967101ffa321cab24e8 + size: 15941050 + timestamp: 1744323489788 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 - - python license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping - size: 233310 - timestamp: 1751104122689 + size: 222505 + timestamp: 1733215763718 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c @@ -12467,7 +12480,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=hash-mapping + - pkg:pypi/tzdata?source=compressed-mapping size: 144160 timestamp: 1742745254292 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda @@ -12685,9 +12698,9 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 181734 timestamp: 1737455207230 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda - sha256: 1bf06369b9c22caf69351aecef3aed2282ba5224338aa6a8316dc5754f3f9a85 - md5: 43618006ed69ec49e144206b34ab93e6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda + sha256: e78fc8c500b96070359311082b4ebc5d66e52ddb2891861c728a247cf52892ba + md5: eb719a63f26215bba3ee5b0227c6452b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -12700,11 +12713,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 391376 - timestamp: 1749898590440 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - sha256: 8564a7beb906476813a59a81a814d00e8f9697c155488dbc59a5c6e950d5f276 - md5: 4b9a9cda3292668831cf47257ade22a6 + size: 390342 + timestamp: 1743831429166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + sha256: 65a264837f189b0c69c5431ea8ef44e405c472fedba145b05055f284f08bc663 + md5: fa0ab7d5bee9efbc370e71bcb5da9856 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -12717,11 +12730,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 378610 - timestamp: 1749898590652 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda - sha256: fa4a587bde9a77eec7d9eaaed98946c51e26b7fd48c7faa52e79e0d8c5d325b1 - md5: 784c983706654c4d3571ace6aa22287d + size: 379554 + timestamp: 1743831426292 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda + sha256: 9577a68dd2702b0ed969b79e92702935f1d0dc00368375b1da94003cdd12cdb8 + md5: 3aeb333ef7ca17c4294ccf2a6ae49438 depends: - __osx >=10.13 - libcxx >=18 @@ -12733,11 +12746,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 368679 - timestamp: 1749898684495 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - sha256: 6a488eea1e0661e3b96634a254bf82f497ef800b0051510fcaea6d22c0dacd17 - md5: e5af6563b9fceeee0cba3b1863682a5f + size: 369941 + timestamp: 1743831465910 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + sha256: 9e89fab2c70a47298e72429b70cbf233d69f16f92c7dcad3b60db2e22afea00d + md5: 7c068120e36588fefecf8e91b1b3ae38 depends: - __osx >=10.13 - libcxx >=18 @@ -12749,11 +12762,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 363095 - timestamp: 1749898689287 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda - sha256: 44e2bd871b2a0e122ffbda49cd8545ba1b08eaa90927d245ab59d45fea3c25f8 - md5: 2f9bf162aa29335b0c16a4a9fa9dad4f + size: 365060 + timestamp: 1743831517482 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda + sha256: 5f50272cbe00701a79d3b5f3aa14808b6f8b80a3ea636f99f4746f109f02030d + md5: 461e2af0a7a77162309bda6f92a1a66c depends: - __osx >=11.0 - libcxx >=18 @@ -12766,11 +12779,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 365985 - timestamp: 1749898718919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - sha256: 709c673d5b45774ce003648427103732c834a300447452a3c8369469e2aa6bfd - md5: 0ff6afa66b15299c051f57e5ec257e88 + size: 367977 + timestamp: 1743831535027 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + sha256: b8b41da0aac8aab5e48e62ff341374f12cd0ace7a59b80f56bc75371aa4796d5 + md5: 1e2a85e9493ad7c892ecbca89a11837c depends: - __osx >=11.0 - libcxx >=18 @@ -12783,11 +12796,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 359326 - timestamp: 1749898793266 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda - sha256: cc47fc0264c839c9062423406d8c2e4b25360041bb47d33277daeaeab3f88101 - md5: 5ff8a3328db08043afb64b77cdc4b6ea + size: 364333 + timestamp: 1743831518152 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda + sha256: d917b120cb10b32d90d40fc2b6a612cf75a9298d159e11da3a8672a3474b4f93 + md5: 0497becb33761fca9b8cfcb9f7278361 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 @@ -12800,11 +12813,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 374069 - timestamp: 1749899010761 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - sha256: e66267a7a61bfba5cdb50089c04a6f140edb9133c5ce34331ee2f95370460b8c - md5: 37d6508caaa4c3a91e3434192d192685 + size: 372040 + timestamp: 1743831788464 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + sha256: 07fbf17632c6300e53550f829f2e10d2c6f68923aa139d0618eaeadf2d0043ae + md5: ccfe948627071c03e36aa46d9e94bf12 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.12,<3.13.0a0 @@ -12817,35 +12830,38 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 364291 - timestamp: 1749899188003 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - sha256: 7a0b82cb162229e905f500f18e32118ef581e1fd182036f3298510b8e8663134 - md5: 2b4249747a9091608dbff2bd22afde44 + size: 363177 + timestamp: 1743831815399 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda + sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486 + md5: 6f445fb139c356f903746b2b91bbe786 depends: - - libre2-11 2025.06.26 hba17884_0 + - libre2-11 2024.07.02 hba17884_3 license: BSD-3-Clause + license_family: BSD purls: [] - size: 27330 - timestamp: 1751053087063 -- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - sha256: 362d3172f6074f37688a4aa6f5caa8b46ffb7552887d3dfe7eaef2039aca6441 - md5: 2dc6248cb8249c98bd88c51ff1c86e24 + size: 26811 + timestamp: 1741121137599 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda + sha256: 291ebc1f3c6d479077399298c42c5e510e354664212cba74c04b9ab13ad811de + md5: 11dae9af12311eee952f3431282c822d depends: - - libre2-11 2025.06.26 hfc00f1c_0 + - libre2-11 2024.07.02 h08ce7b7_3 license: BSD-3-Clause + license_family: BSD purls: [] - size: 27456 - timestamp: 1751053203733 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - sha256: d7c4f0144530c829bc9c39d1e17f31242a15f4e91c9d7d0f8dda58ab245988bb - md5: d519f1f98599719494472639406faffb + size: 26925 + timestamp: 1741121237531 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda + sha256: 248af2869bf54f77f5b4c6e144b535bbc2a6d4c27228f4fb2ed689f8df9f071b + md5: d4e82bd66b71c29da35e1f634548e039 depends: - - libre2-11 2025.06.26 hd41c47c_0 + - libre2-11 2024.07.02 hd41c47c_3 license: BSD-3-Clause + license_family: BSD purls: [] - size: 27423 - timestamp: 1751053372858 + size: 26954 + timestamp: 1741121389739 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -12892,9 +12908,9 @@ packages: - pkg:pypi/referencing?source=hash-mapping size: 51668 timestamp: 1737836872415 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 - md5: f6082eae112814f1447b56a5e1f6ed05 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 @@ -12907,8 +12923,8 @@ packages: license_family: APACHE purls: - pkg:pypi/requests?source=hash-mapping - size: 59407 - timestamp: 1749498221996 + size: 58723 + timestamp: 1733217126197 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 md5: 36de09a8d3e5d5e6f4ee63af49e59706 @@ -13072,12 +13088,12 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 252939 timestamp: 1747837730306 -- pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl name: scipy - version: 1.16.0 - sha256: adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49 + version: 1.15.3 + sha256: 52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed requires_dist: - - numpy>=1.25.2,<2.6 + - numpy>=1.23.5,<2.5 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -13089,11 +13105,11 @@ packages: - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.3.1 ; extra == 'test' + - array-api-strict>=2.0,<2.1.1 ; extra == 'test' - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - sphinx>=5.0.0,<8.0.0 ; extra == 'doc' - intersphinx-registry ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-copybutton ; extra == 'doc' @@ -13101,11 +13117,10 @@ packages: - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - - myst-nb>=1.2.0 ; extra == 'doc' + - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - - linkify-it-py ; extra == 'doc' - mypy==1.10.0 ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' @@ -13115,7 +13130,7 @@ packages: - rich-click ; extra == 'dev' - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' - requires_python: '>=3.11' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda sha256: b9faaa024b77a3678a988c5a490f02c4029c0d5903998b585100e05bc7d4ff36 md5: 00b999c5f9d01fb633db819d79186bd4 @@ -13222,47 +13237,17 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 - md5: 4de79c071274a53dcaf2a8c749d1499e +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + sha256: 56ce31d15786e1df2f1105076f3650cd7c1892e0afeeb9aa92a08d2551af2e34 + md5: ea075e94dc0106c7212128b6a25bbc4c depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/setuptools?source=hash-mapping - size: 748788 - timestamp: 1748804951958 -- pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - name: simplejson - version: 3.20.1 - sha256: 03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832 - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - name: simplejson - version: 3.20.1 - sha256: 884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6 - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - name: simplejson - version: 3.20.1 - sha256: 88a7baa8211089b9e58d78fbc1b0b322103f3f3d459ff16f03a36cece0d0fcf0 - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - name: simplejson - version: 3.20.1 - sha256: 299b1007b8101d50d95bc0db1bf5c38dc372e85b504cf77f596462083ee77e3f - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: simplejson - version: 3.20.1 - sha256: 455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49 - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: simplejson - version: 3.20.1 - sha256: d492ed8e92f3a9f9be829205f44b1d0a89af6582f0cf43e0d129fa477b93fe0c - requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' + size: 748621 + timestamp: 1747807014292 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -13439,6 +13424,17 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 37554 + timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -13517,43 +13513,40 @@ packages: - pkg:pypi/tinycss2?source=hash-mapping size: 28285 timestamp: 1729802975370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 - md5: a0116df4f4ed05c303811a837d5b39d8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 license: TCL license_family: BSD purls: [] - size: 3285204 - timestamp: 1748387766691 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc - md5: 9864891a6946c2fe037c02fca7392ab4 + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 license: TCL license_family: BSD purls: [] - size: 3259809 - timestamp: 1748387843735 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e - md5: 7362396c170252e7b7b0c8fb37fe9c78 + size: 3270220 + timestamp: 1699202389792 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 license: TCL license_family: BSD purls: [] - size: 3125538 - timestamp: 1748388189063 -- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 - md5: ebd0e761de9aa879a51d22cc721bd095 + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -13561,8 +13554,8 @@ packages: license: TCL license_family: BSD purls: [] - size: 3466348 - timestamp: 1748388121356 + size: 3503410 + timestamp: 1699202577803 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 md5: b0dd904de08b7db706167240bf37b164 @@ -13585,9 +13578,9 @@ packages: - pkg:pypi/tomli?source=hash-mapping size: 19167 timestamp: 1733256819729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda - sha256: 66cc98dbf7aafe11a4cb886a8278a559c1616c098ee9f36d41697eaeb0830a4d - md5: 24e9f474abd101554b7a91313b9dfad6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda + sha256: d297d5c0cb91627b17d49b4c633d1bb923b8e76a8796edcc6176b0d4379508db + md5: e6aa9d8ca506982ed2a059b3c6057fc3 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13596,12 +13589,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 869342 - timestamp: 1748003427256 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 - md5: c532a6ee766bed75c4fa0c39e959d132 + - pkg:pypi/tornado?source=compressed-mapping + size: 867280 + timestamp: 1747384567722 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + sha256: 4a3bb32e1c59dfc1001ed880702a3f734dfea58e99bd80fe8efa8caf65c3fd1a + md5: 2a91ae5d15666fd76f00835ade9816fd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -13611,11 +13604,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 850902 - timestamp: 1748003427956 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda - sha256: 60a04246a108ebd17dc12062cc4cd2b8a136788119c4ad2504239f5f5387b0b6 - md5: ce6eeb4f8a9e5621a97351345fc45102 + size: 849653 + timestamp: 1747384561578 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda + sha256: 5923cc6ffbef6da367c30d63d82e6f751b9503d5eef6d6488e92eab6d907a476 + md5: 5776f9693ac1c592a26a2b8fb7220e4d depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -13624,11 +13617,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 869842 - timestamp: 1748003575841 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - sha256: 6e97d6785c466ddd0fe3dad3aa54db6434824bcab40f7490e90943018560bf67 - md5: 62b3f3d78cb285b2090024e2a1e795f7 + size: 869019 + timestamp: 1747384732145 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + sha256: 7ee3fc14d22d24d65656dd13e893d8954e84be2f4bdfb94fdeb298fdccf0a3af + md5: 31d9b2888fc8d9757457176056ea7025 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -13637,11 +13630,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 850340 - timestamp: 1748003643552 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda - sha256: 640183a5955f373f86f56193dbd0f289d98cdf8e19f37284ac52e8fd37ea2632 - md5: 8b0ba58f117a8e1754f87b4c69818d21 + size: 849286 + timestamp: 1747384668864 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda + sha256: 675c378b691d33a09f70ff684493c2395821c0d2934b37bea8ad9f260461a048 + md5: ff86e96e324c0e08a55aee1111d93582 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -13650,12 +13643,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 867366 - timestamp: 1748003598139 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - sha256: 02835bf9f49a7c6f73622614be67dc20f9b5c2ce9f663f427150dc0579007daa - md5: 375a5a90946ff09cd98b9cf5b833023c + - pkg:pypi/tornado?source=compressed-mapping + size: 867849 + timestamp: 1747384810805 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + sha256: 763ab5fbc08e4f025a8fd2020f57b6c299c2839dd3f1fa19f997eb3a2e10b319 + md5: d804565fc1c83e368c7bfd8beb17c627 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -13665,11 +13658,11 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 851614 - timestamp: 1748003575892 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda - sha256: c7b28b96f21fa9cf675b051fe3039682038debf69ab8a3aa25cfdf3fa4aa9f8e - md5: 3b58e6c2e18a83cf64ecc550513b940c + size: 849071 + timestamp: 1747384649681 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda + sha256: f727706508f0d4e18ae760478ec2488ac83f3df0687bf7a8acbbefae8e7e1a4e + md5: b022fa1dba1d3a72c5695501d017c0c8 depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -13679,12 +13672,12 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=hash-mapping - size: 869036 - timestamp: 1748003680143 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - sha256: cec4ab331788122f7f01dd02f57f8e21d9ae14553dedd6389d7dfeceb3592399 - md5: 06b156bbbe1597eb5ea30b931cadaa32 + - pkg:pypi/tornado?source=compressed-mapping + size: 870561 + timestamp: 1747384847474 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + sha256: 289c367de4e4ab4b24204c06171415581dcb6637a10635107e35d808df9fa195 + md5: 591190f2c78d8d6a8466e7aa6bb9f68a depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -13695,8 +13688,8 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 853357 - timestamp: 1748003925528 + size: 853373 + timestamp: 1747384811468 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -13728,28 +13721,28 @@ packages: version: 6.0.12.20250516 sha256: 8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530 requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 - md5: a1cdd40fc962e2f7944bc19e01c7e584 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 + md5: 568ed1300869dca0ba09fb750cda5dbb depends: - - typing_extensions ==4.14.0 pyhe01879c_0 + - typing_extensions ==4.13.2 pyh29332c3_0 license: PSF-2.0 license_family: PSF purls: [] - size: 90310 - timestamp: 1748959427551 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c - md5: 2adcd9bb86f656d3d43bf84af59a1faf + size: 89900 + timestamp: 1744302253997 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 + md5: 83fc6ae00127671e301c9f44254c31b8 depends: - python >=3.9 - python license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 50978 - timestamp: 1748959427551 + - pkg:pypi/typing-extensions?source=compressed-mapping + size: 52189 + timestamp: 1744302253997 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -13914,9 +13907,9 @@ packages: - pkg:pypi/uri-template?source=hash-mapping size: 23990 timestamp: 1733323714454 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 - md5: 436c165519e140cb08d246a4472a9d6a +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c + md5: c1e349028e0052c4eea844e94f773065 depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -13927,32 +13920,32 @@ packages: license_family: MIT purls: - pkg:pypi/urllib3?source=hash-mapping - size: 101735 - timestamp: 1750271478254 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 - md5: 18b6bf6f878501547786f7bf8052a34d + size: 100791 + timestamp: 1744323705540 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 + md5: d3f0381e38093bde620a8d85f266ae55 depends: - - vc14_runtime >=14.44.35208 + - vc14_runtime >=14.42.34433 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17914 - timestamp: 1750371462857 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 - md5: 14d65350d3f5c8ff163dc4f76d6e2830 + size: 17893 + timestamp: 1743195261486 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 + md5: 91651a36d31aa20c7ba36299fb7068f4 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.44.35208.* *_26 + - vs2015_runtime 14.42.34438.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 756109 - timestamp: 1750371459116 + size: 750733 + timestamp: 1743195092905 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 md5: c0600c1b374efa7a1ff444befee108ca @@ -13967,20 +13960,20 @@ packages: - pkg:pypi/virtualenv?source=hash-mapping size: 4133755 timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b - md5: 312f3a0a6b3c5908e79ce24002411e32 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 + md5: 3357e4383dbce31eed332008ede242ab depends: - - vc14_runtime >=14.44.35208 + - vc14_runtime >=14.42.34438 license: BSD-3-Clause license_family: BSD purls: [] - size: 17888 - timestamp: 1750371463202 -- pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + size: 17873 + timestamp: 1743195097269 +- pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl name: wadler-lindig - version: 0.1.7 - sha256: e3ec83835570fd0a9509f969162aeb9c65618f998b1f42918cfc8d45122fe953 + version: 0.1.6 + sha256: d707f63994c7d3e1e125e7fb7e196f4adb6f80f4a11beb955c6da937754026a3 requires_dist: - numpy ; extra == 'dev' - pre-commit ; extra == 'dev' @@ -14059,7 +14052,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/widgetsnbextension?source=hash-mapping + - pkg:pypi/widgetsnbextension?source=compressed-mapping size: 889285 timestamp: 1744291155057 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda @@ -14080,9 +14073,9 @@ packages: license_family: MIT purls: [] size: 1176306 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - sha256: a5d4af601f71805ec67403406e147c48d6bad7aaeae92b0622b7e2396842d3fe - md5: 397a013c2dc5145a70737871aaa87e98 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + sha256: 83ad2be5eb1d359b4cd7d7a93a6b25cdbfdce9d27b37508e2a4efe90d3a4ed80 + md5: 7c91bfc90672888259675ad2ad28af9c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14090,8 +14083,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 392406 - timestamp: 1749375847832 + size: 392870 + timestamp: 1745806998840 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -14480,17 +14473,17 @@ packages: purls: [] size: 2527503 timestamp: 1731585151036 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad - md5: df5e78d904988eb55042c0c97446079f +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/zipp?source=hash-mapping - size: 22963 - timestamp: 1749421737203 + size: 21809 + timestamp: 1732827613585 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda sha256: 76d28240cc9fa0c3cb2cde750ecaf98716ce397afaf1ce90f8d18f5f43a122f1 md5: ca02de88df1cc3cfc8f24766ff50cb3c diff --git a/pyproject.toml b/pyproject.toml index 7856626b31..456079c025 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -128,7 +128,7 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "lexsort"} jaxtyping = "*" pdbp = "*" diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index 526f517c48..08318c1e87 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -282,7 +282,7 @@ def betrag_soli_y( @policy_function(start_date="2015-01-01") def kinderfreibetrag_soli_y( steuerklasse: int, - einkommensteuer__kinderfreibetrag_y: int, + einkommensteuer__kinderfreibetrag_y: float, ) -> float: """Child Allowance (Kinderfreibetrag) for Lohnsteuer-Soli. diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 84b91d5e1c..43e15fcc31 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -92,12 +92,17 @@ def main( functions=functions, output_qnames=output_qnames["names"], ) + + def lexsort_key(x: str) -> int: + return 0 if x.startswith("fail_if") else 1 + if output_qnames["name"]: f = dags.concatenate_functions( functions=functions, targets=output_qnames["name"], enforce_signature=False, set_annotations=False, + lexsort_key=lexsort_key, ) else: f = dags.concatenate_functions( @@ -106,6 +111,7 @@ def main( return_type="dict", enforce_signature=False, set_annotations=False, + lexsort_key=lexsort_key, ) return f(**input_qnames) @@ -265,20 +271,21 @@ def include_fail_and_warn_nodes( out = output_qnames.copy() for p, n in fail_or_warn_functions.items(): args = inspect.signature(n).parameters - if all(a in workers_and_their_inputs for a in args) and ( - # all([]) evaluates to True. - ( - n.include_if_all_elements_present - and all( + if p == "fail_if__root_nodes_are_missing": + check = all(a in workers_and_their_inputs for a in args) + if n.include_if_all_elements_present or n.include_if_any_element_present: + # all(()) evaluates to True, so include first bit + all_cond = n.include_if_all_elements_present and all( a in workers_and_their_inputs for a in n.include_if_all_elements_present ) - ) - or any( - a in workers_and_their_inputs for a in n.include_if_any_element_present - ) - ): - out.append(p) + any_cond = any( + a in workers_and_their_inputs + for a in n.include_if_any_element_present + ) + check = check and (all_cond or any_cond) + if check: + out.append(p) return out diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index c7b9b62e66..a4d6201b94 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -7,7 +7,8 @@ import numpy import pytest -from ttsim import main, output +from ttsim import main +from ttsim.arg_templates import input_data, output from ttsim.plot_dag import ( plot_tt_dag, ) @@ -26,7 +27,7 @@ FlatOrigParamSpecs, ) -METTSIM_ROOT = Path(__file__).parent / "mettsim" +METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" POLICY_TEST_IDS_AND_CASES = load_policy_test_data( @@ -110,3 +111,19 @@ def test_mettsim_policy_environment_is_complete(orig_mettsim_objects, date): date=date, orig_policy_objects=orig_mettsim_objects, ) + + +def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "jax"]): + data = {("p_id",): numpy.array([0, 1, 2, 3])} + with pytest.raises( + ValueError, + match=r"The following data columns are missing.", + ): + main( + date_str="2020-01-01", + input_data=input_data.Flat(data), + orig_policy_objects={"root": METTSIM_ROOT}, + targets={"tree": {"property_tax": {"amount_y": None}}}, + output=output.Names(["results__tree"]), + backend=backend, + ) From ef2ead8bc6459ba8cd03a738211f9f2c7a0e5e16 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 2 Jul 2025 09:09:25 +0200 Subject: [PATCH 049/109] Make GETTSIM functions jittable (#986) ### What problem do you want to solve? - Make sure the GETTSIM functions can be jitted. - Make sure GETTSIM tests run with Jax backend. - Update environments to include Python 3.13, Jax, CUDA-enabled Jax - Enable Jax testing on GHA --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: mj023 <max.jahn45@gmail.com> --- .github/workflows/main.yaml | 37 +- conftest.py | 7 + pixi.lock | 6463 +++++++++++++++-- pyproject.toml | 50 +- .../kindergeld\303\274bertrag.py" | 19 +- src/_gettsim/erziehungsgeld/formel.yaml | 10 +- src/_gettsim/individual_characteristics.py | 20 - src/_gettsim/lohnsteuer/lohnsteuer.py | 44 +- .../arbeitslosen/arbeitslosengeld.py | 6 +- .../sozialversicherung/arbeitslosen/inputs.py | 4 +- .../kranken/beitrag/beitragssatz.py | 25 +- .../rente/altersrente/altersgrenzen.py | 39 +- .../rente/altersrente/rentenformel.yaml | 3 +- .../erwerbsminderung/erwerbsminderung.py | 5 +- src/_gettsim_tests/test_jittability.py | 97 + src/ttsim/interface_dag.py | 8 + src/ttsim/interface_dag_elements/backend.py | 4 +- src/ttsim/interface_dag_elements/results.py | 4 +- .../specialized_environment.py | 3 +- src/ttsim/params-schema.json | 6 +- src/ttsim/plot_dag.py | 3 +- src/ttsim/tt_dag_elements/aggregation_jax.py | 2 +- src/ttsim/tt_dag_elements/param_objects.py | 10 +- .../tt_dag_elements/piecewise_polynomial.py | 5 +- 24 files changed, 6066 insertions(+), 808 deletions(-) create mode 100644 src/_gettsim_tests/test_jittability.py diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b94cfa8aa8..fa4d7f51cd 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -25,38 +25,43 @@ jobs: environment: - py311 - py312 - # - py312-jax + - py313 + - py313-jax exclude: - os: macos-latest - environment: py311 + environment: py311, py312 - os: windows-latest - environment: py311 + environment: py311, py312 steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.2 + - uses: prefix-dev/setup-pixi@v0.8.8 with: - pixi-version: v0.41.1 + pixi-version: v0.48.2 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} frozen: true environments: ${{ matrix.environment }} - - name: Run tests on Linux (with NumPy backend) - # Ignore MacOS for being slow -- no reason that would break if JAX works. - if: runner.os == 'Linux' - run: pixi run -e ${{ matrix.environment }} pytest --cov=./ --cov-report=xml - shell: bash -el {0} - name: Configure dot on macOS if: runner.os == 'macOS' run: pixi run -e ${{ matrix.environment }} dot -c - - name: Run tests on macOS & Windows (with JAX backend) - # TODO: remove exclusion of Linux once --use-jax is fixed. + - name: Run tests on Linux (with NumPy backend and without coverage) + if: matrix.environment == 'py311' || matrix.environment == 'py312' + run: pixi run -e ${{ matrix.environment }} tests + shell: bash -el {0} + - name: Run tests on Linux (with NumPy backend and coverage) + if: runner.os == 'Linux' && matrix.environment == 'py313' + run: pixi run -e ${{ matrix.environment }} tests --cov=./ --cov-report=xml + shell: bash -el {0} + - name: Run tests on MacOS / Windows (with NumPy backend and without coverage) if: runner.os != 'Linux' - run: pixi run -e ${{ matrix.environment }} pytest - # TODO: add to the end of previous line to actually run with Jax backend - # --use-jax + run: pixi run -e ${{ matrix.environment }} tests + shell: bash -el {0} + - name: Run tests with JAX backend + if: matrix.environment == 'py313-jax' + run: pixi run -e ${{ matrix.environment }} tests-jax shell: bash -el {0} - name: Upload coverage reports - if: runner.os == 'Linux' && matrix.environment == 'py312' + if: runner.os == 'Linux' && matrix.environment == 'py313' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/conftest.py b/conftest.py index 1e8149ab36..af4b279eb4 100644 --- a/conftest.py +++ b/conftest.py @@ -42,3 +42,10 @@ def skipif_jax(request, backend): """Automatically skip tests marked with skipif_jax when backend is jax.""" if request.node.get_closest_marker("skipif_jax") and backend == "jax": pytest.skip("Cannot run this test with Jax") + + +@pytest.fixture(autouse=True) +def skipif_numpy(request, backend): + """Automatically skip tests marked with skipif_numpy when backend is numpy.""" + if request.node.get_closest_marker("skipif_numpy") and backend == "numpy": + pytest.skip("Cannot run this test with Numpy") diff --git a/pixi.lock b/pixi.lock index e7339050b2..b4affa862a 100644 --- a/pixi.lock +++ b/pixi.lock @@ -171,7 +171,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -220,7 +219,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -264,13 +262,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -425,7 +429,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -475,7 +478,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -502,13 +504,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -663,7 +671,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -713,7 +720,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -740,13 +746,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -894,7 +906,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -944,7 +955,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -985,14 +995,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -1167,7 +1183,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -1216,7 +1231,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -1260,16 +1274,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl @@ -1426,7 +1446,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -1476,7 +1495,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -1503,16 +1521,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl @@ -1669,7 +1693,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -1719,7 +1742,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1746,16 +1768,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl @@ -1905,7 +1933,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -1955,7 +1982,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -1996,17 +2022,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl @@ -2183,7 +2215,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -2232,7 +2263,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -2276,13 +2306,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -2437,7 +2473,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -2487,7 +2522,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -2514,13 +2548,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -2675,7 +2715,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -2725,7 +2764,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -2752,13 +2790,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -2906,7 +2950,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -2956,7 +2999,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -2997,14 +3039,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/01/85/b52f24859237b4e9d523d5655796d911ba3d46e242eb1959c45b6af5aedd/simplejson-3.20.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -3179,7 +3227,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -3228,7 +3275,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -3272,13 +3318,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -3433,7 +3485,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -3483,7 +3534,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -3510,13 +3560,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -3671,7 +3727,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -3721,7 +3776,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -3748,13 +3802,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ @@ -3902,7 +3962,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda @@ -3952,7 +4011,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -3993,18 +4051,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ - py312-jax: + py313: channels: - url: https://conda.anaconda.org/conda-forge/ indexes: @@ -4013,11 +4077,1357 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + py313-cuda: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + py313-jax: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4029,22 +5439,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4068,7 +5478,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -4081,84 +5491,83 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4166,61 +5575,60 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4234,23 +5642,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -4258,7 +5664,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -4276,27 +5682,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4306,21 +5717,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4344,7 +5755,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -4357,42 +5768,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -4400,31 +5811,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4432,62 +5844,61 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4501,23 +5912,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4526,27 +5935,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4556,21 +5970,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4594,7 +6008,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -4607,42 +6021,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -4650,31 +6064,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4682,62 +6097,61 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4751,23 +6165,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4776,26 +6188,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4804,21 +6221,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4838,9 +6255,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -4851,7 +6268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -4859,56 +6276,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -4918,57 +6336,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4982,29 +6399,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5022,25 +6437,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - - pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -5091,6 +6511,18 @@ packages: purls: [] size: 610380 timestamp: 1741999835753 +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + sha256: 824a7349bbb2ef8014077ddcfd418065a0a4de873ada1bd1b8826e20bed18c15 + md5: eeb18017386c92765ad8ffa986c3f4ce + depends: + - __unix + - hicolor-icon-theme + - librsvg + license: LGPL-3.0-or-later OR CC-BY-SA-3.0 + license_family: LGPL + purls: [] + size: 619606 + timestamp: 1750236493212 - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda sha256: 6c4456a138919dae9edd3ac1a74b6fbe5fd66c05675f54df2f8ab8c8d0cc6cea md5: 1fd9696649f65fd6611fcdb4ffec738a @@ -5147,6 +6579,21 @@ packages: - pkg:pypi/argon2-cffi?source=hash-mapping size: 18594 timestamp: 1733311166338 +- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad + md5: 8ac12aff0860280ee0cff7fa2cf63f3b + depends: + - argon2-cffi-bindings + - python >=3.9 + - typing-extensions + constrains: + - argon2_cffi ==999 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi?source=compressed-mapping + size: 18715 + timestamp: 1749017288144 - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda sha256: d1af1fbcb698c2e07b0d1d2b98384dd6021fa55c8bcb920e3652e0b0c393881b md5: 18143eab7fcd6662c604b85850f0db1e @@ -5177,6 +6624,21 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 34847 timestamp: 1725356749774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + sha256: b17e5477dbc6a01286ea736216f49039d35335ea3283fa0f07d2c7cea57002ae + md5: 49fa2ed332b1239d6b0b2fe5e0393421 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.0.1 + - libgcc >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi-bindings?source=hash-mapping + size: 34900 + timestamp: 1725356714671 - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda sha256: fa5eb633b320e10fc2138f3d842d8a8ca72815f106acbab49a68ec9783e4d70d md5: 29b46bd410067f668c4cef7fdc78fe25 @@ -5205,6 +6667,20 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 31898 timestamp: 1725356938246 +- conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + sha256: d8b9baae87e315b0106d85eb769d7dcff9691abce4b313d8ca410c26998217b2 + md5: 2a9ccef1e31a58c4a77ffc92d3cc9c55 + depends: + - __osx >=10.13 + - cffi >=1.0.1 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi-bindings?source=hash-mapping + size: 32046 + timestamp: 1725356858173 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda sha256: 6eabd1bcefc235b7943688d865519577d7668a2f4dc3a24ee34d81eb4bfe77d1 md5: 1e8260965552c6ec86453b7d15a598de @@ -5235,6 +6711,21 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 32838 timestamp: 1725356954187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + sha256: 2ced37cabe03f64f2ecc36a089576b79b27f3f2d4beefceb0d614bf40450d53a + md5: ba06ad3e96ea794fec0eddfa92e121b5 + depends: + - __osx >=11.0 + - cffi >=1.0.1 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi-bindings?source=hash-mapping + size: 32946 + timestamp: 1725356801521 - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda sha256: 8bbce5e61e012a06e248f58bb675fdc82ba2900c78590696d185150fb9cea91f md5: 8917bf795c40ec1839ed9d0ab3ad9735 @@ -5267,6 +6758,22 @@ packages: - pkg:pypi/argon2-cffi-bindings?source=hash-mapping size: 34399 timestamp: 1725357069475 +- conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + sha256: 36b79f862177b3a104762f68664e445615e7c831ca5fe76dc4596ad531ed46a3 + md5: 6d6dbb065c660e9e358b32bdab9ada31 + depends: + - cffi >=1.0.1 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/argon2-cffi-bindings?source=hash-mapping + size: 34467 + timestamp: 1725357154522 - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 md5: 46b53236fdd990271b03c3978d4218a9 @@ -5415,6 +6922,27 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 146613 timestamp: 1744783307123 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda + sha256: 27ae158d415ff2942214b32ac7952e642f0f4c2a45ab683691e2a9a9159f868c + md5: 18852d82df8e5737e320a8731ace51b9 + depends: + - ld_impl_linux-64 2.43 h712a8e2_5 + - sysroot_linux-64 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 6376971 + timestamp: 1749852878015 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda + sha256: fccbb1974d5557cd5bd4dfccc13c0d15ca198c6a45c2124341dea8c952538512 + md5: 327ef163ac88b57833c1c1a20a9e7e0d + depends: + - binutils_impl_linux-64 2.43 h4bf12b8_5 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 36038 + timestamp: 1749852914153 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd md5: f0b4c8e370446ef89797608d60a564b3 @@ -5473,6 +7001,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 349867 timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + sha256: e510ad1db7ea882505712e815ff02514490560fd74b5ec3a45a6c7cf438f754d + md5: 2babfedd9588ad40c7113ddfe6a5ca82 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 350295 + timestamp: 1749230225293 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 md5: d75f06ee06001794aa83a05e885f1520 @@ -5505,6 +7050,22 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 363178 timestamp: 1725267893889 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + sha256: b486b5d469bd412fcf5a49d50056a069d84d44f0762b64e18f5a3027b1871278 + md5: b48636a1c2074e650b7a930e3a68f104 + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 h6e16a3a_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 366909 + timestamp: 1749230725855 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad md5: c8793a23206344faa25f4e0b5d0e7908 @@ -5539,6 +7100,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 339360 timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + sha256: 0f2f3c7b3f6a19a27b2878b58bfd16af69cea90d0d3052a2a0b4e0a2cbede8f9 + md5: 3030bcec50cc407b596f9311eeaa611f + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.1.0 h5505292_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 338938 + timestamp: 1749230456550 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 md5: a0ea2839841a06740a1c110ba3317b42 @@ -5573,6 +7151,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 321874 timestamp: 1725268491976 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda + sha256: 152e1f4bb8076b4f37a70e80dcd457a50e14e0bd5501351cd0fc602c5ef782a5 + md5: a25f98cfd4eb1ac26325c1869f11edf5 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=compressed-mapping + size: 321652 + timestamp: 1749231335599 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -5665,6 +7260,24 @@ packages: purls: [] size: 152283 timestamp: 1745653616541 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 + md5: b01649832f7bc7ff94f8df8bd2ee6457 + depends: + - __win + license: ISC + purls: [] + size: 151351 + timestamp: 1749990170707 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 + md5: 72525f07d72806e3b639ad4504c30ce5 + depends: + - __unix + license: ISC + purls: [] + size: 151069 + timestamp: 1749990087500 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -5781,6 +7394,16 @@ packages: - pkg:pypi/certifi?source=hash-mapping size: 157200 timestamp: 1746569627830 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + sha256: d71c85835813072cd6d7ce4b24be34215cd90c104785b15a5d58f4cd0cb50778 + md5: 781d068df0cc2407d4db0ecfbb29225b + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=hash-mapping + size: 155377 + timestamp: 1749972291158 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -5813,6 +7436,22 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 294403 timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + sha256: 73cd6199b143a8a6cbf733ce124ed57defc1b9a7eab9b10fd437448caf8eaa45 + md5: ce6386a5892ef686d6d680c345c40ad1 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 295514 + timestamp: 1725560706794 - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda sha256: 012ee7b1ed4f9b0490d6e90c72decf148d7575173c7eaf851cd87fd434d2cacc md5: a4b0f531064fa3dd5e3afbb782ea2cd5 @@ -5843,6 +7482,21 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 282425 timestamp: 1725560725144 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + sha256: 660c8f8488f78c500a1bb4a803c31403104b1ee2cabf1476a222a3b8abf5a4d7 + md5: 98afc301e6601a3480f9e0b9f8867ee0 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 284540 + timestamp: 1725560667915 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda sha256: 253605b305cc4548b8f97eb7c2e146697e0c7672b099c4862ec5ca7e8e995307 md5: a42272c5dbb6ffbc1a5af70f24c7b448 @@ -5875,6 +7529,22 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 281206 timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + sha256: 50650dfa70ccf12b9c4a117d7ef0b41895815bb7328d830d667a6ba3525b60e8 + md5: 6d24d5587a8615db33c961a4ca0a8034 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 282115 + timestamp: 1725560759157 - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda sha256: 9689fbd8a31fdf273f826601e90146006f6631619767a67955048c7ad7798a1d md5: e1c69be23bd05471a6c623e91680ad59 @@ -5907,6 +7577,22 @@ packages: - pkg:pypi/cffi?source=hash-mapping size: 288142 timestamp: 1725560896359 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff + md5: 519a29d7ac273f8c165efc0af099da42 + depends: + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 291828 + timestamp: 1725561211547 - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f md5: 57df494053e17dce2ac3a0b33e1b2a2e @@ -5929,6 +7615,14 @@ packages: - pkg:pypi/charset-normalizer?source=hash-mapping size: 50481 timestamp: 1746214981991 +- pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + name: choreographer + version: 1.0.9 + sha256: b3277e30953843a83d3d730e49958a6be82013885d2a4f54b3950a3715191d7f + requires_dist: + - logistro>=1.0.11 + - simplejson>=3.19.3 + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 md5: 962b9857ee8e7018c22f2776ffa0b2d7 @@ -5982,6 +7676,21 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 372130 timestamp: 1747842174442 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda + sha256: 876bb057fb7c40322471d0e65c8d149512991b89b7c1dfac92b59a9fe2a318f9 + md5: 5e959c405af6d6b603810fdf12b6f191 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 381728 + timestamp: 1749833700835 - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b md5: a232a2c290d493aec5c321d42e8bb5f3 @@ -6010,6 +7719,20 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 370818 timestamp: 1747842400404 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda + sha256: 7bc7f5e6017f34c3acefba80c0cc0179de35539e1858a70d1aa54b92f0f0af23 + md5: dc9348f206ef595c238e426ba1a61503 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 379153 + timestamp: 1749833527306 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 md5: 3311b8464e609c253df8ed73b030a91b @@ -6040,6 +7763,21 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 372341 timestamp: 1747842541199 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda + sha256: 1c7ce80d0dd114744b00c962f189b3e437e34f6a5699ee8316d84fd4d8c9f2e6 + md5: bf5f193d77ff3d2372c6e678e4711e59 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 380492 + timestamp: 1749833499891 - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 md5: 11cfa5d9997512db18ba2eb46edcce37 @@ -6072,6 +7810,22 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 398869 timestamp: 1747842451626 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda + sha256: d58320b827b6428d090d966f40802a3793d10b0e6b79f5e116c98421a4365735 + md5: 1c4e3215bb5f74caf6653bb802d3fc02 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 405028 + timestamp: 1749833588845 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda noarch: generic sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 @@ -6094,9 +7848,308 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=lexsort#006c10e9bb7eb7dd8c50f15e7c971afa6604be7a +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + noarch: generic + sha256: 058c8156ff880b1180a36b94307baad91f9130d0e3019ad8c7ade035852016fb + md5: 0401f31e3c9e48cebf215472aa3e7104 + depends: + - python >=3.13,<3.14.0a0 + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + size: 47560 + timestamp: 1750062514868 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda + sha256: 2ee3b9564ca326226e5cda41d11b251482df8e7c757e333d28ec75213c75d126 + md5: 87ff6381e33b76e5b9b179a2cdd005ec + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1150650 + timestamp: 1746189825236 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda + sha256: 4eb613ef188815d1dadab3d9db855a7590e2894132290840e743a41b30ce302d + md5: 412444e37a455216a2afb9fc7d6a4f16 + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 94416 + timestamp: 1749226536213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda + sha256: 4475409f91176c0a77ead29e961617366ef1fbe932c7315abdd5699ad134f0be + md5: ba98092d1090d5f5ddd2d7f827e7d3a5 + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 28928 + timestamp: 1749226545023 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda + sha256: 57d1294ecfaf9dc8cdb5fc4be3e63ebc7614538bddb5de53cfd9b1b7de43aed5 + md5: cb15315d19b58bd9cd424084e58ad081 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.9.79 h3f2d84a_0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 23242 + timestamp: 1749218416505 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda + sha256: 04d8235cb3cb3510c0492c3515a9d1a6053b50ef39be42b60cafb05044b5f4c6 + md5: ba38a7c3b4c14625de45784b773f0c71 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart 12.9.79 h5888daf_0 + - cuda-cudart-dev_linux-64 12.9.79 h3f2d84a_0 + - cuda-cudart-static 12.9.79 h5888daf_0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 23687 + timestamp: 1749218464010 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda + sha256: ffe86ed0144315b276f18020d836c8ef05bf971054cf7c3eb167af92494080d5 + md5: 86e40eb67d83f1a58bdafdd44e5a77c6 + depends: + - cuda-cccl_linux-64 + - cuda-cudart-static_linux-64 + - cuda-cudart_linux-64 + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 389140 + timestamp: 1749218427266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda + sha256: 6261e1d9af80e1ec308e3e5e2ff825d189ef922d24093beaf6efca12e67ce060 + md5: d3c4ac48f4967f09dd910d9c15d40c81 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart-static_linux-64 12.9.79 h3f2d84a_0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 23283 + timestamp: 1749218442382 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda + sha256: d435f8a19b59b52ce460ee3a6bfd877288a0d1d645119a6ba60f1c3627dc5032 + md5: b87bf315d81218dd63eb46cc1eaef775 + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1148889 + timestamp: 1749218381225 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda + sha256: 6cde0ace2b995b49d0db2eefb7bc30bf00ffc06bb98ef7113632dec8f8907475 + md5: 64508631775fbbf9eca83c84b1df0cae + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 197249 + timestamp: 1749218394213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda + sha256: 55922005d1b31ba090455ab39d2e5a9b771fe503713d4b7699752a76aedccb2b + md5: 229b3cc1f6b6b633923e1c9856ee0d80 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1842820 + timestamp: 1749218443367 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda + sha256: 13b46369781c4202ba50fc26788e0304720de87272304fb7fdb46ad6818f96c0 + md5: 9ab84df0819a61a0f9c09c8adce8bf5a + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-cupti 12.9.79 h9ab20c4_0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - cuda-cupti-static >=12.9.79 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 4604126 + timestamp: 1749218509769 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda + sha256: a15574d966e73135a79d5e6570c87e13accdb44bd432449b5deea71644ad442c + md5: d411828daa36ac84eab210ba3bbe5a64 + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 37714 + timestamp: 1749218405324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda + sha256: 95f85c1a2312b3e8d6798351dd1d5d422cef68e02fc96992b8183857af76611e + md5: 25bdced18e0be0fd5a34052b50016cb3 + depends: + - cuda-nvcc_linux-64 12.9.86.* + - gcc_linux-64 + - gxx_linux-64 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 24843 + timestamp: 1749237630943 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda + sha256: f8d9cacab5614932d2de4151a51ff6342adf044e34393a8d2591b9fe362331ff + md5: ac5a9c950dc4304d1eaa11cd638f8f1b + depends: + - cuda-crt-dev_linux-64 12.9.86 ha770c72_1 + - cuda-nvvm-dev_linux-64 12.9.86 ha770c72_1 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=6 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 14432867 + timestamp: 1749226726672 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda + sha256: 4344c5e67efcabb0ab31532f91de8890b1920aa0968b01ab0f9821cb1c073901 + md5: b5feb908d5a881c875114e88f077acbf + depends: + - cuda-cudart >=12.9.79,<13.0a0 + - cuda-cudart-dev + - cuda-nvcc-dev_linux-64 12.9.86 he91c749_1 + - cuda-nvcc-tools 12.9.86 he02047a_1 + - cuda-nvvm-impl 12.9.86 he02047a_1 + - cuda-version >=12.9,<12.10.0a0 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 27232 + timestamp: 1749226774033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda + sha256: 7e5ab4ae67254c6d814007708a8183355684c81a917b383a7f042c25149737c3 + md5: a076f1ec812ce8fceacd538d6e672f37 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.9.86 ha770c72_1 + - cuda-nvvm-tools 12.9.86 he02047a_1 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 27490340 + timestamp: 1749226666055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda + sha256: 9f095c092bbbb8c239ab1c0964ef0e13145dba75489f8533fefb18c4409f1259 + md5: a8576d02a07751eed7704ae871e76229 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart-dev_linux-64 12.9.* + - cuda-driver-dev_linux-64 12.9.* + - cuda-nvcc-dev_linux-64 12.9.86.* + - cuda-nvcc-impl 12.9.86.* + - cuda-nvcc-tools 12.9.86.* + - sysroot_linux-64 >=2.17,<3.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 26786 + timestamp: 1749237630270 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda + sha256: 4d339c411c23d40ff3a8671284e476a31b31273b1a4d29c680c01940a559bd95 + md5: 9c52e4389e54d4f5800b23512e479479 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 67183992 + timestamp: 1749221543691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda + sha256: 8a09c380831215cd3c996bac59c5e3bd774648a2a19e4edfc99b283b65605844 + md5: 50e6a4a31fb588f158ab850b1d545747 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 29292 + timestamp: 1749221478549 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda + sha256: 11257afbadd3f74be233918abdd9392b8c01d75677e3dbba249d6a8531e3685b + md5: 496f29d1fc3db945e826d9702a67b1a2 + depends: + - cuda-version >=12.9,<12.10.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 26899 + timestamp: 1749226552449 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda + sha256: 323b51bd2fd6cf7d150cfe47220324bf804d938fbeb88667e70645075188f569 + md5: 0d27b5ea4684c8181db41bac711a3dcd + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=12 + - libstdcxx >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21406180 + timestamp: 1749226570771 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda + sha256: 0958aee5a72f4be02c8f988539261cf549c9fcd6b61c6ce895bc6a13fe61f5d6 + md5: f716064b73c93d9aab74b5cc7f57985d + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=12 + - libstdcxx >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 24248725 + timestamp: 1749226615764 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda + sha256: 5f5f428031933f117ff9f7fcc650e6ea1b3fef5936cf84aa24af79167513b656 + md5: b6d5d7f1c171cbd228ea06b556cfa859 + constrains: + - cudatoolkit 12.9|12.9.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21578 + timestamp: 1746134436166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda + sha256: 746cfa7c0e9b9eba3429465cf9a70786a63da2f4b2c322c33d74b5ff2db6d8ae + md5: 5aa5b04b995ebe10fe44de6fe93b1850 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12,<13.0a0 + - libcudnn-dev 9.10.1.4 hcd2ec93_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - cudnn-jit <0a + license: LicenseRef-cuDNN-Software-License-Agreement + purls: [] + size: 19516 + timestamp: 1747774432049 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 name: dags - version: 0.3.1.dev11+g006c10e + version: 0.3.1.dev11+g9b996e0 requires_dist: - flatten-dict - networkx @@ -6147,6 +8200,21 @@ packages: - pkg:pypi/debugpy?source=hash-mapping size: 2630748 timestamp: 1744321406939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + sha256: bc2f3c177dcfe90f66df4c15803d6c44fd1f2e163683a70f816851c91a37631b + md5: 8c162409281c1e91b1e659c3a2115d28 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2620835 + timestamp: 1744321405497 - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda sha256: b6f42ebdded9c43c6f953d674a1467ba6396a4c98e77e5b79bc793bbc45ae7ce md5: 58114700054f024b45fa86243eefdc55 @@ -6175,6 +8243,20 @@ packages: - pkg:pypi/debugpy?source=hash-mapping size: 2557869 timestamp: 1744321625095 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + sha256: 939eede351b9010f239289b4d703277f66b105a54d1222d6fe65f1da347bbecd + md5: a3418707dd82069f9c9758c297a2f363 + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2578110 + timestamp: 1744321484203 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda sha256: 509d756a8809179e51868a65882e28e9932ef80d1515536e76f158c6cddd1f52 md5: eba659c4735d39271b8117b2349237a8 @@ -6205,6 +8287,21 @@ packages: - pkg:pypi/debugpy?source=hash-mapping size: 2581221 timestamp: 1744321582400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + sha256: e1fef24f7d220dd77522f06598d2c8c5b6ca68123f06515436c57a8777871481 + md5: 6521542d1c40d124657586810f220571 + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2534826 + timestamp: 1744321649930 - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda sha256: 71127b53485a633f708f6645d8d023aef2efa325ca063466b21446b778d49b94 md5: 253acd78a14d333ea1c6de5b16b5a0ae @@ -6235,6 +8332,21 @@ packages: - pkg:pypi/debugpy?source=hash-mapping size: 3561750 timestamp: 1744321803729 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + sha256: dafd02b080118f11c7aea830d8e1c263134b90cf7e5518440fab46992130c100 + md5: d5d1eaa5f605092cc407ed0bfb5e16bf + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 3589078 + timestamp: 1744321801176 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 md5: 9ce473d1d1be1cc3810856a48b3fab32 @@ -6564,6 +8676,34 @@ packages: purls: [] size: 64567 timestamp: 1604417122064 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda + sha256: 0047d4da9f48b731a089d70b60a21031b809791089170f163d6660512676ebd9 + md5: 12a6a74cab2878a284f9af96f3e1a1e8 + depends: + - binutils_impl_linux-64 >=2.40 + - libgcc >=14.3.0 + - libgcc-devel_linux-64 14.3.0 h85bb3a7_103 + - libgomp >=14.3.0 + - libsanitizer 14.3.0 hd08acf3_3 + - libstdcxx >=14.3.0 + - sysroot_linux-64 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 71226373 + timestamp: 1750808482839 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda + sha256: 0d7fe52c578ef99f03defe8cab5308124b388c694e88f5494716d11532a6d12a + md5: 2e650506e6371ac4289c9bf7fc207f3b + depends: + - binutils_linux-64 + - gcc_impl_linux-64 14.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 32512 + timestamp: 1748905876846 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb md5: 201db6c2d9a3c5e46573ac4cb2e92f4f @@ -6608,6 +8748,21 @@ packages: purls: [] size: 509570 timestamp: 1715783199780 +- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 + md5: 49c36fcad2e9af6b91e91f2ce5be8ebd + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 26238 + timestamp: 1750744808182 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c md5: 714d0882dc5e692ca4683d8e520f73c6 @@ -6622,8 +8777,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev134+g152909f8.d20250627 - sha256: 6f25ca2af6cfdf8f1b645a0f73727c6a6e39ec8d082c3332b8142c54198e5020 + version: 0.7.1.dev160+gfc3b135d.d20250701 + sha256: 5a56c79c24772b7105864b21415a41af8307f132dd8bf2592cd44aa30e97f83a requires_dist: - ipywidgets - networkx @@ -6632,7 +8787,7 @@ packages: - openpyxl - optree - pandas - - plotly + - plotly>=6.2 - pygments - pygraphviz - pytest @@ -6694,6 +8849,18 @@ packages: purls: [] size: 96855 timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + sha256: cac69f3ff7756912bbed4c28363de94f545856b35033c0b86193366b95f5317d + md5: 951ff8d9e5536896408e89d63230b8d5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 98419 + timestamp: 1750079957535 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a md5: fc7124f86e1d359fc5d878accd9e814c @@ -6704,6 +8871,17 @@ packages: purls: [] size: 84384 timestamp: 1711634311095 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + sha256: 13d802efe1fcadc171a1e0f87b99accef290cd0190af5d25cb46acd5f111104a + md5: 4b0af0e3ba3b3bb8e28d009a8ed1ab35 + depends: + - __osx >=10.13 + - libcxx >=18 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 85046 + timestamp: 1750080155200 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 md5: 339991336eeddb70076d8ca826dac625 @@ -6714,6 +8892,17 @@ packages: purls: [] size: 79774 timestamp: 1711634444608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + sha256: e1c431b66b0a632e8fcc2b886cccde4eb5ec5eb8a3d84e89b7639d603c174646 + md5: 64d15e1dfe86fa13cf0d519d1074dcd9 + depends: + - __osx >=11.0 + - libcxx >=18 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 81566 + timestamp: 1750080158744 - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f md5: 3194499ee7d1a67404a87d0eefdd92c6 @@ -6726,6 +8915,18 @@ packages: purls: [] size: 95406 timestamp: 1711634622644 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + sha256: bcbcece7719f2a14ede6bfead8f5fdbb65ed102d47769c817b375e4e9d43be39 + md5: 692bc31c646f7e221af07ccc924e1ae4 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 95862 + timestamp: 1750080330012 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda sha256: e6866409ba03df392ac5ec6f0d6ff9751a685ed917bfbcd8a73f550c5fe83c2b md5: df7835d2c73cd1889d377cfd6694ada4 @@ -6956,6 +9157,32 @@ packages: purls: [] size: 188688 timestamp: 1686545648050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda + sha256: 2d6923f30622fcba78cb85687d9cd54df77d4d25e4dba8687bb712eb8bfd4d9b + md5: bb5fcb5c14e9e4b0304a63ced52e41bb + depends: + - gcc_impl_linux-64 14.3.0 hd9e9e21_3 + - libstdcxx-devel_linux-64 14.3.0 h85bb3a7_103 + - sysroot_linux-64 + - tzdata + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 14731173 + timestamp: 1750808663844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda + sha256: 6c06752e4773dfd61a1928e9f7e9d21c3b97068daf27b84696c33057a091fe27 + md5: d4af016b3511135302a19f2a58544fcd + depends: + - binutils_linux-64 + - gcc_linux-64 14.3.0 h1382650_11 + - gxx_impl_linux-64 14.3.0.* + - sysroot_linux-64 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 30802 + timestamp: 1748905895571 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda sha256: f64b68148c478c3bfc8f8d519541de7d2616bf59d44485a5271041d40c061887 md5: 4b69232755285701bc86a5afe4d9933a @@ -7197,6 +9424,18 @@ packages: - pkg:pypi/identify?source=hash-mapping size: 79057 timestamp: 1745098917031 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55 + md5: 84463b10c1eb198541cd54125c7efe90 + depends: + - python >=3.9 + - ukkonen + license: MIT + license_family: MIT + purls: + - pkg:pypi/identify?source=compressed-mapping + size: 78926 + timestamp: 1748049754416 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -7387,6 +9626,56 @@ packages: - pkg:pypi/ipython?source=hash-mapping size: 620691 timestamp: 1745672166398 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 + md5: 73e4ba4c8247f744be670f4da4f132e2 + depends: + - __win + - colorama + - decorator + - exceptiongroup + - ipython_pygments_lexers + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.11 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 621095 + timestamp: 1748711232331 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd + md5: 270dbfb30fe759b39ce0c9fdbcd7be10 + depends: + - __unix + - pexpect >4.3 + - decorator + - exceptiongroup + - ipython_pygments_lexers + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.11 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 621859 + timestamp: 1748713870748 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -7427,117 +9716,134 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl name: jax - version: 0.6.1 - sha256: 69a4e4506caa5466702bdfd0d7a13d1f9b7281d473885721100a3087fcabf8f9 + version: 0.6.2 + sha256: bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c requires_dist: - - jaxlib<=0.6.1,>=0.6.1 + - jaxlib<=0.6.2,>=0.6.2 - ml-dtypes>=0.5.0 - - numpy>=1.25 - - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=1.26 - opt-einsum - - scipy>=1.11.1 - - jaxlib==0.6.1 ; extra == 'minimum-jaxlib' - - jaxlib==0.6.0 ; extra == 'ci' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'tpu' - - libtpu==0.0.15.* ; extra == 'tpu' + - scipy>=1.12 + - jaxlib==0.6.2 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.1 ; extra == 'ci' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'tpu' + - libtpu==0.0.17.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.1,>=0.6.1 ; extra == 'rocm' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda12' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' + - jaxlib<=0.6.2,>=0.6.2 ; extra == 'rocm' + - jax-rocm60-plugin<=0.6.2,>=0.6.2 ; extra == 'rocm' - kubernetes ; extra == 'k8s' + - xprof ; extra == 'xprof' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.2-pyhd8ed1ab_0.conda - sha256: be7644c955cd4be330a13a8f64c0b73d520f8b3ab6bb64b8b1d3a17945345684 - md5: f19f3d281603af8e67d533dbeac279ce +- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + sha256: 573a5582dfba84a8f67c351b6218cb9579cb8d0f6d4b4186a806852111d4a6f1 + md5: bd364feb12c744cf5c60e1e5b586171b depends: - importlib-metadata >=4.6 - - jaxlib >=0.5.1,<=0.5.2 - - ml_dtypes >=0.4.0 + - jaxlib >=0.6.0,<=0.6.0 + - ml_dtypes >=0.5.0 - numpy >=1.25 - opt_einsum - python >=3.10 - scipy >=1.11.1 constrains: - - cudnn >=9.2.1.18,<10.0 + - cudnn >=9.8,<10.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jax?source=hash-mapping - size: 1556886 - timestamp: 1741182198677 -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.5.3-pyhd8ed1ab_0.conda - sha256: 411389e87b2a393192a52f1848fea1190f4d2c8f52a0838f38088c6a0b72a562 - md5: aee167037a824dff5fb393ab62046dfb + size: 1538293 + timestamp: 1748688029463 +- pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl + name: jaxlib + version: 0.6.2 + sha256: b977604cd36c74b174d25ed685017379468138eb747d865f75e466cb273c801d + requires_dist: + - scipy>=1.12 + - numpy>=1.26 + - ml-dtypes>=0.5.0 + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda + sha256: bd6abb44e16ef94bad40a554ab6c23becca05093250d58f62f90c72cddddf5d6 + md5: a581353603f02b9c5b07da446b01b4b3 depends: - - importlib-metadata >=4.6 - - jaxlib >=0.5.3,<=0.5.3 - - ml_dtypes >=0.4.0 - - numpy >=1.25 - - opt_einsum - - python >=3.10 - - scipy >=1.11.1 + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20250127.1,<20250128.0a0 + - libgcc >=13 + - libgrpc >=1.71.0,<1.72.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - ml_dtypes >=0.2.0 + - numpy >=1.21,<3 + - openssl >=3.5.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - scipy >=1.9 constrains: - - cudnn >=9.8,<10.0 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/jax?source=hash-mapping - size: 1580534 - timestamp: 1747653718316 -- pypi: git+https://github.com/google/jax-datetime.git#e79cec944828e71f9faf790a4725545edff7e3b7 - name: jax-datetime - version: 0.1.0 - requires_dist: - - jax - - numpy - - absl-py ; extra == 'tests' - - chex ; extra == 'tests' - - pytest ; extra == 'tests' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/1b/12/2bc629d530ee1b333edc81a1d68d262bad2f813ce60fdd46e98d48cc8a20/jaxlib-0.6.1-cp312-cp312-win_amd64.whl - name: jaxlib - version: 0.6.1 - sha256: 76d6f65f3153ffb70e20a76b915d4431823cf70a786d86ba1b76a9c5bf66a0a4 - requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.5.2-cpu_py312h860c521_2.conda - sha256: c225000615df5829717e0b04785236f44d92077a7d2e39e4c0556b183a4216f0 - md5: e12b4670e149ca7f9287820d7653e810 + - pkg:pypi/jaxlib?source=hash-mapping + size: 60644089 + timestamp: 1748673286014 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda + sha256: a844966afa3cf9af2ec3a08fd31f605cf10db14217c93ff9877308718adfcf83 + md5: 8d7e109d11f32a6aab5fc954970f8687 depends: + - __cuda - __glibc >=2.17,<3.0.a0 + - cuda-cudart >=12.6.77,<13.0a0 + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-cupti-dev + - cuda-nvcc-tools + - cuda-nvtx >=12.6.77,<13.0a0 + - cuda-version >=12.6,<13 + - cudnn >=9.10.1.4,<10.0a0 - libabseil * cxx17* - libabseil >=20250127.1,<20250128.0a0 + - libcublas >=12.6.4.1,<13.0a0 + - libcublas-dev + - libcufft >=11.3.0.4,<12.0a0 + - libcufft-dev + - libcurand >=10.3.7.77,<11.0a0 + - libcurand-dev + - libcusolver >=11.7.1.2,<12.0a0 + - libcusolver-dev + - libcusparse >=12.5.4.2,<13.0a0 + - libcusparse-dev - libgcc >=13 - libgrpc >=1.71.0,<1.72.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 + - nccl >=2.26.6.1,<3.0a0 + - numpy >=1.21,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - scipy >=1.9 constrains: - - jax >=0.5.2 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: + - pkg:pypi/jax-cuda12-pjrt?source=hash-mapping + - pkg:pypi/jax-cuda12-plugin?source=hash-mapping - pkg:pypi/jaxlib?source=hash-mapping - size: 69147479 - timestamp: 1747094254155 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.5.3-cpu_py312ha70eef1_0.conda - sha256: 8eff53d14971a29caac20533dbdc49a4c00a73f99df933841342a16630211d60 - md5: f1fe1bb10662b8e1b00ca0f07711bd06 + size: 146979645 + timestamp: 1748672910601 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda + sha256: e3ce3161e8dfe5214bc30077f808e3d70d0433891eecc27c3995e12c6712140a + md5: 7fbfdb825fd801801751c5f6c8828a21 depends: - __osx >=10.15 - libabseil * cxx17* @@ -7546,22 +9852,22 @@ packages: - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 + - numpy >=1.21,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - scipy >=1.9 constrains: - - jax >=0.5.3 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 67083755 - timestamp: 1747480017557 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.5.3-cpu_py312he253ca6_0.conda - sha256: 8ca793da0f4aed6426cf4d1ee55093837daa729eb0913ca4e5c8c4f58f470652 - md5: 4771dac0bde78fccfaa0ddf588a2ce94 + size: 62943198 + timestamp: 1748652158666 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda + sha256: ee01e4530fc50b0ff2ff65967659b011e11ff12d82bdf9a3fab19c78c5401701 + md5: 63eed54ff1d03a21f0d4f3bac853d256 depends: - __osx >=11.0 - libabseil * cxx17* @@ -7570,20 +9876,20 @@ packages: - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 + - numpy >=1.21,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - scipy >=1.9 constrains: - - jax >=0.5.3 + - jax >=0.6.0 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 56004263 - timestamp: 1747478692111 + size: 51815557 + timestamp: 1748656482648 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -7656,6 +9962,18 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 17277 timestamp: 1725303032027 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + sha256: 18d412dc91ee7560f0f94c19bb1c3c23f413b9a7f55948e2bb3ce44340439a58 + md5: 668d64b50e7ce7984cfe09ed7045b9fa + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jsonpointer?source=hash-mapping + size: 17568 + timestamp: 1725303033801 - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda sha256: 2499e5ebb3efa4186d6922122224d16bac791a5c0adad5b48b2bcd1e1e2afc8d md5: b6c1710105dad14d47001a339cd14da6 @@ -7680,6 +9998,18 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 17560 timestamp: 1725303027769 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + sha256: f4fdd6b6451492d0b179efcd31b0b3b75ec6d6ee962ea50e693f5e71a94089b7 + md5: a93dd2fcffa0290ca107f3bda7bc68ac + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jsonpointer?source=hash-mapping + size: 17733 + timestamp: 1725303034373 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda sha256: 736304347653ed421b13c56ba6f4f87c1d78d24cd3fa74db0db6fb70c814fa65 md5: 5bce88ac1bef7d47c62cb574b25891ae @@ -7706,6 +10036,19 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 17865 timestamp: 1725303130815 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + sha256: cc2f68ceb34bca53b7b9a3eb3806cc893ef8713a5a6df7edf7ff989f559ef81d + md5: f2757998237755a74a12680a4e6a6bd6 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jsonpointer?source=hash-mapping + size: 18232 + timestamp: 1725303194596 - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda sha256: 9a667eeae67936e710ff69ee7ce0e784d6052eeba9670b268c565a55178098c4 md5: 943f7fab631e12750641efd7279a268c @@ -7730,6 +10073,18 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42235 timestamp: 1725303419414 +- conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + sha256: a0625cb0e86775b8996b4ee7117f1912b2fa3d76be8d10bf1d7b39578f5d99f7 + md5: 001efbf150f0ca5fd0a0c5e6e713c1d1 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jsonpointer?source=hash-mapping + size: 42805 + timestamp: 1725303293802 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 md5: a3cead9264b331b32fe8f0aabc967522 @@ -7747,6 +10102,23 @@ packages: - pkg:pypi/jsonschema?source=hash-mapping size: 74256 timestamp: 1733472818764 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + sha256: 812134fabb49493a50f7f443dc0ffafd0f63766f403a0bd8e71119763e57456a + md5: 59220749abcd119d645e6879983497a1 + depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 + - python >=3.9 + - referencing >=0.28.4 + - rpds-py >=0.7.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema?source=hash-mapping + size: 75124 + timestamp: 1748294389597 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda sha256: 66fbad7480f163509deec8bd028cd3ea68e58022982c838683586829f63f3efa md5: 41ff526b1083fde51fbdc93f29282e0e @@ -7778,6 +10150,24 @@ packages: purls: [] size: 7135 timestamp: 1733472820035 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + sha256: 970a1efffe29474d6bb3e4d63bc04105c5611d1c7e2cd7e2d43d1ba468f33c20 + md5: b4eaebf6fac318db166238796d2a9702 + depends: + - fqdn + - idna + - isoduration + - jsonpointer >1.13 + - jsonschema >=4.24.0,<4.24.1.0a0 + - rfc3339-validator + - rfc3986-validator >0.1.0 + - uri-template + - webcolors >=24.6.0 + license: MIT + license_family: MIT + purls: [] + size: 7717 + timestamp: 1748294391013 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 md5: 0b4c3908e5a38ea22ebb98ee5888c768 @@ -7791,6 +10181,20 @@ packages: - pkg:pypi/jupyter-lsp?source=hash-mapping size: 55221 timestamp: 1733493006611 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + sha256: f2ca86b121bcfeaf0241a927824459ba8712e64806b98dd262eb2b1a7c4e82a6 + md5: 7ed6505c703f3c4e1a58864bf84505e2 + depends: + - importlib-metadata >=4.8.3 + - jupyter_server >=1.1.2 + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-lsp?source=hash-mapping + size: 57659 + timestamp: 1748550130303 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 @@ -7838,6 +10242,36 @@ packages: - pkg:pypi/jupyter-core?source=hash-mapping size: 58269 timestamp: 1727164026641 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 + md5: b7d89d860ebcda28a5303526cdee68ab + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=compressed-mapping + size: 59562 + timestamp: 1748333186063 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + sha256: 928c2514c2974fda78447903217f01ca89a77eefedd46bf6a2fe97072df57e8d + md5: 324e60a0d3f39f268e899709575ea3cd + depends: + - __win + - cpython + - platformdirs >=2.5 + - python >=3.8 + - pywin32 >=300 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=compressed-mapping + size: 59972 + timestamp: 1748333368923 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 md5: f56000b36f09ab7533877e695e4e8cb0 @@ -7893,16 +10327,42 @@ packages: md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - python >=3.9 - - terminado >=0.8.3 + - terminado >=0.8.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-server-terminals?source=hash-mapping + size: 19711 + timestamp: 1733428049134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 + md5: 1f5f3b0fcff308d8fbaa73c43af08e2f + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0 + - importlib-metadata >=4.8.3 + - ipykernel >=6.5.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.9 + - setuptools >=41.1.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-server-terminals?source=hash-mapping - size: 19711 - timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 - md5: 1f5f3b0fcff308d8fbaa73c43af08e2f + - pkg:pypi/jupyterlab?source=hash-mapping + size: 8593072 + timestamp: 1746536121732 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + sha256: a6efcdbe973e12bc8bd61aa26af77f733364975000c8fdaa0d6374338018e0db + md5: dbd991d0080c48dae5113a27ab6d0d70 depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -7923,9 +10383,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab?source=hash-mapping - size: 8593072 - timestamp: 1746536121732 + - pkg:pypi/jupyterlab?source=compressed-mapping + size: 8316249 + timestamp: 1751119910935 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -7974,28 +10434,26 @@ packages: - pkg:pypi/jupyterlab-widgets?source=hash-mapping size: 189133 timestamp: 1746450926999 -- pypi: https://files.pythonhosted.org/packages/41/90/51523adbedc808e03271c7448fd71da1660cc02603eaaf10b9ab4f102146/kaleido-0.1.0.post1-py2.py3-none-win_amd64.whl - name: kaleido - version: 0.1.0.post1 - sha256: 2a942606a13c70dfd0a02e092ec140a1083e093ae06661c5e1b1179e477a9e44 -- pypi: https://files.pythonhosted.org/packages/45/8e/4297556be5a07b713bb42dde0f748354de9a6918dee251c0e6bdcda341e7/kaleido-0.2.1-py2.py3-none-macosx_11_0_arm64.whl - name: kaleido - version: 0.2.1 - sha256: bb9a5d1f710357d5d432ee240ef6658a6d124c3e610935817b4b42da9c787c05 - requires_dist: - - pathlib ; python_full_version < '3.4' -- pypi: https://files.pythonhosted.org/packages/ae/b3/a0f0f4faac229b0011d8c4a7ee6da7c2dca0b6fd08039c95920846f23ca4/kaleido-0.2.1-py2.py3-none-manylinux1_x86_64.whl - name: kaleido - version: 0.2.1 - sha256: aa21cf1bf1c78f8fa50a9f7d45e1003c387bd3d6fe0a767cfbbf344b95bdc3a8 - requires_dist: - - pathlib ; python_full_version < '3.4' -- pypi: https://files.pythonhosted.org/packages/e0/f7/0ccaa596ec341963adbb4f839774c36d5659e75a0812d946732b927d480e/kaleido-0.2.1-py2.py3-none-macosx_10_11_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl name: kaleido - version: 0.2.1 - sha256: ca6f73e7ff00aaebf2843f73f1d3bacde1930ef5041093fe76b83a15785049a7 + version: 1.0.0 + sha256: a7e8bd95648378d2746f6c86084d419d15f95b1ec7bb0ec810289b7feb25b18d requires_dist: - - pathlib ; python_full_version < '3.4' + - choreographer>=1.0.5 + - logistro>=1.0.8 + - orjson>=3.10.15 + - packaging + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda + sha256: a922841ad80bd7b222502e65c07ecb67e4176c4fa5b03678a005f39fcc98be4b + md5: ad8527bf134a90e1c9ed35fa0b64318c + constrains: + - sysroot_linux-64 ==2.17 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 + license_family: GPL + purls: [] + size: 943486 + timestamp: 1729794504440 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 @@ -8061,6 +10519,18 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 + md5: 6dc9e1305e7d3129af4ad0dabda30e56 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 670635 + timestamp: 1749858327854 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 md5: 01f8d123c96816249efd255a31ad7712 @@ -8073,6 +10543,18 @@ packages: purls: [] size: 671240 timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda + sha256: de097284f497b391fe9d000c75b684583c30aad172d9508ed05df23ce39d75cb + md5: acd9213a63cb62521290e581ef82de80 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 670525 + timestamp: 1749852860076 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -8180,6 +10662,24 @@ packages: purls: [] size: 16859 timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + build_number: 32 + sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338 + md5: 2af9f3d5c2e39f417ce040f5a35c40c6 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - libcblas 3.9.0 32*_openblas + - mkl <2025 + - liblapacke 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17330 + timestamp: 1750388798074 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda build_number: 31 sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d @@ -8198,6 +10698,24 @@ packages: purls: [] size: 17105 timestamp: 1740087945188 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + build_number: 32 + sha256: e441fcc46858a9a073e4344c80e267aee3b95ec01b02e37205c36be79eec0694 + md5: 0f7197e3b4ecfa8aa24a371c3eaabb8a + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - liblapack 3.9.0 32*_openblas + - blas 2.132 openblas + - mkl <2025 + - liblapacke 3.9.0 32*_openblas + - libcblas 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17571 + timestamp: 1750389030403 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda build_number: 31 sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f @@ -8216,6 +10734,24 @@ packages: purls: [] size: 17123 timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + build_number: 32 + sha256: 2775472dd81d43dc20804b484028560bfecd5ab4779e39f1fb95684da3ff2029 + md5: d4a1732d2b330c9d5d4be16438a0ac78 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - mkl <2025 + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17520 + timestamp: 1750388963178 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda build_number: 31 sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8 @@ -8232,6 +10768,22 @@ packages: purls: [] size: 3733728 timestamp: 1740088452830 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + build_number: 32 + sha256: 809d78b096e70fed7ebb17c867dd5dde2f9f4ed8564967a6e10c65b3513b0c31 + md5: 49b36a01450e96c516bbc5486d4a0ea0 + depends: + - mkl 2024.2.2 h66d3029_15 + constrains: + - libcblas 3.9.0 32*_mkl + - liblapack 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3735390 + timestamp: 1750389080409 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda build_number: 31 sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d @@ -8247,6 +10799,21 @@ packages: purls: [] size: 16796 timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + build_number: 32 + sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9 + md5: 3d3f9355e52f269cd8bc2c440d8a5263 + depends: + - libblas 3.9.0 32_h59b9bed_openblas + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17308 + timestamp: 1750388809353 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda build_number: 31 sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c @@ -8262,6 +10829,21 @@ packages: purls: [] size: 17006 timestamp: 1740087955460 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + build_number: 32 + sha256: 745f6dd420389809c333734df6edc99d75caa3633e4778158c7549c6844af440 + md5: 2c1e774d4546cf542eaee5781eb8940b + depends: + - libblas 3.9.0 32_h7f60823_openblas + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17574 + timestamp: 1750389040732 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda build_number: 31 sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 @@ -8277,6 +10859,21 @@ packages: purls: [] size: 17032 timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + build_number: 32 + sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c + md5: d8e8ba717ae863b13a7495221f2b5a71 + depends: + - libblas 3.9.0 32_h10e41b3_openblas + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17485 + timestamp: 1750388970626 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda build_number: 31 sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8 @@ -8292,6 +10889,110 @@ packages: purls: [] size: 3733549 timestamp: 1740088502127 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + build_number: 32 + sha256: d0f81145ae795592f3f3b5d7ff641c1019a99d6b308bfaf2a4cc5ba24b067bb0 + md5: 054b9b4b48296e4413cf93e6ece7b27d + depends: + - libblas 3.9.0 32_h641d27c_mkl + constrains: + - liblapack 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3735392 + timestamp: 1750389122586 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda + sha256: 38bc99de89687ec391750dc603203364bdedfb92c600dcb2916dd3cd8558f5f5 + md5: 605f995d88cdb64714bd9979aadc7cd4 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 467680700 + timestamp: 1749227622432 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda + sha256: 935d6b3aa00d3b07f4abc811a9288ef331f344b12e87a85c985d45647e2e36b3 + md5: 0c1751a225676415945cbbbbb41605bc + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-crt-dev_linux-64 + - cuda-cudart-dev_linux-64 + - cuda-version >=12.9,<12.10.0a0 + - libcublas 12.9.1.4 h9ab20c4_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcublas-static >=12.9.1.4 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 93594 + timestamp: 1749228328524 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda + sha256: 5f21148b7bdfbcf5e40b4debaccd6d36b8a75405fdef1c66d75059a12d43bd0e + md5: c19f7281266ca77da5458d2ccf17ba82 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12,<13.0a0 + - libcublas + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libcudnn-jit <0a + license: LicenseRef-cuDNN-Software-License-Agreement + purls: [] + size: 527020675 + timestamp: 1747773945760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda + sha256: 34fb3c9fa9b67a18fd0b4d28518fdacf11dbed3ad3fbf24aec341d1b8490d3c0 + md5: bce8ec010b35f2c1e5db441f3f396754 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12,<13.0a0 + - libcudnn 9.10.1.4 h4840ae0_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcudnn-jit-dev <0a + license: LicenseRef-cuDNN-Software-License-Agreement + purls: [] + size: 44217 + timestamp: 1747774406255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda + sha256: fb4d2b0c23104d2c42400a3f69f311f087a3b71ab9c9c36bb249919e599b7e8d + md5: 2da1a83a3b1951e7e8d1c9c3d1340c41 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 162077229 + timestamp: 1749221627451 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda + sha256: 8885e88ff6b52e971ab1dadca150a67bbc12b7aa9ea510be81e8a7d7a65ff99e + md5: 62c9c50b9a7f4dc72b7ed82e7233597d + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libcufft 11.4.1.4 h5888daf_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcufft-static >=11.4.1.4 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 34644 + timestamp: 1749221956811 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 md5: d4529f4dff3057982a7617c7ac58fde3 @@ -8305,6 +11006,106 @@ packages: purls: [] size: 4519402 timestamp: 1689195353551 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55 + md5: d4a250da4737ee127fb1fa6452a9002e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 4523621 + timestamp: 1749905341688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda + sha256: c4576976b8b5ceb060b32d24fc08db5253606256c3c99b42ace343e9be2229db + md5: c745bc0dd1f066e6752c8b2909216b62 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 46161381 + timestamp: 1746193213392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda + sha256: 1d59e844f3a79c19040efc1f15f23e33bb6b13df19bb63714e9b34515fc9d8fc + md5: 9a7e41b2c3cf57f6a3a1aeac35ebebc0 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libcurand 10.3.10.19 h9ab20c4_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcurand-static >=10.3.10.19 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 253530 + timestamp: 1746193336357 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda + sha256: fadacf0aacead8bb6264c4bce4051f4ef7830c218a4e867a67c02d3c4b28bd08 + md5: ecaa51e8bc0039aab1ac44c1270c70b8 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libcublas >=12.9.1.4,<12.10.0a0 + - libcusparse >=12.5.10.65,<12.6.0a0 + - libgcc >=13 + - libnvjitlink >=12.9.86,<12.10.0a0 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 205162082 + timestamp: 1749232252911 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda + sha256: 4b78e364f6780f3dcfc774af9e3b1437fbea58530c33deb426d8a021f01cc325 + md5: ff90346cfdbfb1dd37c793481ec53ec5 + depends: + - __glibc >=2.28,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libcusolver 11.7.5.82 h9ab20c4_0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libcusolver-static >=11.7.5.82 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 61344 + timestamp: 1749232543931 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda + sha256: 2e69a61c10633651c80dee982d7e46ed5aef6c06ee47622188403d6b9f99b889 + md5: 662ed6e77f131380286d772f6a364ac2 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libgcc >=13 + - libnvjitlink >=12.9.86,<12.10.0a0 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 208848587 + timestamp: 1749224709022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda + sha256: 94ef211a16c4f16fb50a2f70215c9b50b6472b44efd84be28bc0763e55aa3fda + md5: 3ecb445ead42d21959806703af8e23f5 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.9,<12.10.0a0 + - libcusparse 12.5.10.65 h5888daf_0 + - libgcc >=13 + - libnvjitlink >=12.9.86,<12.10.0a0 + - libstdcxx >=13 + constrains: + - libcusparse-static >=12.5.10.65 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 52878 + timestamp: 1749225093845 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 md5: 9dde68cee0a231b19e189954ac29027b @@ -8315,6 +11116,16 @@ packages: purls: [] size: 562408 timestamp: 1747262455533 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 + md5: 8b47ade37d4e75417b4e993179c09f5d + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 562573 + timestamp: 1749846921724 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 md5: 4ef1bdb94d42055f511bb358f2048c58 @@ -8325,6 +11136,16 @@ packages: purls: [] size: 568010 timestamp: 1747262879889 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 + md5: 881de227abdddbe596239fa9e82eb3ab + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 567189 + timestamp: 1749847129529 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -8604,6 +11425,19 @@ packages: purls: [] size: 829108 timestamp: 1746642191935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 + md5: 9e60c55e725c20d23125a5f0dd69af5d + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.1.0=*_3 + - libgomp 15.1.0 h767d61c_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 824921 + timestamp: 1750808216066 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be md5: 9bedb24480136bfeb81ebc81d4285e70 @@ -8619,6 +11453,30 @@ packages: purls: [] size: 673459 timestamp: 1746656621653 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + sha256: 05978c4e8c826dd3b727884e009a19ceee75b0a530c18fc14f0ba56b090f2ea3 + md5: d8314be93c803e2e2b430f6389d6ce6a + depends: + - _openmp_mutex >=4.5 + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - libgomp 15.1.0 h1383e82_3 + - msys2-conda-epoch <0.0a0 + - libgcc-ng ==15.1.0=*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 669602 + timestamp: 1750808309041 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda + sha256: 81d51ff07d3faf3daf99a8a3f0e49e8289c94dec7d6ed4c7d28eebeb5d3b7f1a + md5: fc4911352ac0969aa171031fa4ba29d0 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 2725528 + timestamp: 1750808302968 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae md5: ddca86c7040dd0e73b2b69bd7833d225 @@ -8629,6 +11487,15 @@ packages: purls: [] size: 34586 timestamp: 1746642200749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 + md5: e66f2b8ad787e7beb0f846e4bd7e8493 + depends: + - libgcc 15.1.0 h767d61c_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 29033 + timestamp: 1750808224854 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda sha256: 19e5be91445db119152217e8e8eec4fd0499d854acc7d8062044fb55a70971cd md5: 68fc66282364981589ef36868b1a7c78 @@ -8727,6 +11594,17 @@ packages: purls: [] size: 34541 timestamp: 1746642233221 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183 + md5: bfbca721fd33188ef923dfe9ba172f29 + depends: + - libgfortran5 15.1.0 hcea5267_3 + constrains: + - libgfortran-ng ==15.1.0=*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 29057 + timestamp: 1750808257258 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 md5: 6b27baf030f5d6603713c7e72d3f6b9a @@ -8737,6 +11615,16 @@ packages: purls: [] size: 155635 timestamp: 1743911593527 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e + md5: 090b3c9ae1282c8f9b394ac9e4773b10 + depends: + - libgfortran5 14.2.0 h51e75f0_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 156202 + timestamp: 1743862427451 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 md5: ad35937216e65cfeecd828979ee5e9e6 @@ -8747,6 +11635,16 @@ packages: purls: [] size: 155474 timestamp: 1743913530958 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 + md5: 044a210bc1d5b8367857755665157413 + depends: + - libgfortran5 14.2.0 h6c33f7e_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 156291 + timestamp: 1743863532821 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 md5: 01de444988ed960031dbe84cf4f9b1fc @@ -8760,6 +11658,30 @@ packages: purls: [] size: 1569986 timestamp: 1746642212331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a + md5: 530566b68c3b8ce7eec4cd047eae19fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15.1.0 + constrains: + - libgfortran 15.1.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 1565627 + timestamp: 1750808236464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 + md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 14_2_0_*_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1225013 + timestamp: 1743862382377 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 md5: 94560312ff3c78225bed62ab59854c31 @@ -8784,6 +11706,18 @@ packages: purls: [] size: 806283 timestamp: 1743913488925 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 + md5: 69806c1e957069f1d515830dcc9f6cbb + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 14_2_0_*_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 806566 + timestamp: 1743863491726 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd md5: 072ab14a02164b7c0c089055368ff776 @@ -8860,6 +11794,15 @@ packages: purls: [] size: 452635 timestamp: 1746642113092 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 + md5: 3cd1a7238a0dd3d0860fdefc496cc854 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 447068 + timestamp: 1750808138400 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 md5: 5fbacaa9b41e294a6966602205b99747 @@ -8872,6 +11815,17 @@ packages: purls: [] size: 540903 timestamp: 1746656563815 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 + md5: 94545e52b3d21a7ab89961f7bda3da0d + depends: + - libwinpthread >=12.0.0.r4.gg4f2fc60ca + constrains: + - msys2-conda-epoch <0.0a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 535456 + timestamp: 1750808243424 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 md5: c3cfd72cbb14113abee7bbd86f44ad69 @@ -9080,6 +12034,21 @@ packages: purls: [] size: 16790 timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + build_number: 32 + sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 + md5: 6c3f04ccb6c578138e9f9899da0bd714 + depends: + - libblas 3.9.0 32_h59b9bed_openblas + constrains: + - libcblas 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17316 + timestamp: 1750388820745 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda build_number: 31 sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 @@ -9095,6 +12064,21 @@ packages: purls: [] size: 17033 timestamp: 1740087965941 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + build_number: 32 + sha256: 1e26450b80525b3f656e9c75fd26a10ebaa1d339fe4ca9c7affbebd9acbeac03 + md5: ccdca0c0730ad795e064d81dbe540723 + depends: + - libblas 3.9.0 32_h7f60823_openblas + constrains: + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + - libcblas 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17553 + timestamp: 1750389051033 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda build_number: 31 sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 @@ -9110,6 +12094,21 @@ packages: purls: [] size: 17033 timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + build_number: 32 + sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 + md5: bf9ead3fa92fd75ad473c6a1d255ffcb + depends: + - libblas 3.9.0 32_h10e41b3_openblas + constrains: + - blas 2.132 openblas + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17507 + timestamp: 1750388977861 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda build_number: 31 sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad @@ -9125,6 +12124,21 @@ packages: purls: [] size: 3732648 timestamp: 1740088548986 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + build_number: 32 + sha256: 5629e592137114b24bfdea71e1c4b6bee11379631409ed91dfe2f83b32a8b298 + md5: 1652285573db93afc3ba9b3b9356e3d3 + depends: + - libblas 3.9.0 32_h641d27c_mkl + constrains: + - libcblas 3.9.0 32*_mkl + - liblapacke 3.9.0 32*_mkl + - blas 2.132 mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3735534 + timestamp: 1750389164366 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c md5: a76fd702c93cd2dfd89eff30a5fd45a8 @@ -9138,6 +12152,18 @@ packages: purls: [] size: 112845 timestamp: 1746531470399 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 + md5: 1a580f7796c7bf6393fddb8bbbde58dc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - xz 5.8.1.* + license: 0BSD + purls: [] + size: 112894 + timestamp: 1749230047870 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 md5: f87e8821e0e38a4140a7ed4f52530053 @@ -9145,11 +12171,22 @@ packages: - __osx >=10.13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 + - xz ==5.8.1=*_1 + license: 0BSD + purls: [] + size: 104814 + timestamp: 1746531577001 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 + md5: 8468beea04b9065b9807fc8b9cdc5894 + depends: + - __osx >=10.13 + constrains: + - xz 5.8.1.* license: 0BSD purls: [] - size: 104814 - timestamp: 1746531577001 + size: 104826 + timestamp: 1749230155443 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 md5: 4e8ef3d79c97c9021b34d682c24c2044 @@ -9162,6 +12199,17 @@ packages: purls: [] size: 92218 timestamp: 1746531818330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 + md5: d6df911d4564d77c4374b02552cb17d1 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.1.* + license: 0BSD + purls: [] + size: 92286 + timestamp: 1749230283517 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 md5: 14a1042c163181e143a7522dfb8ad6ab @@ -9176,6 +12224,62 @@ packages: purls: [] size: 104699 timestamp: 1746531718026 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc + md5: c15148b2e18da456f5108ccb5e411446 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - xz 5.8.1.* + license: 0BSD + purls: [] + size: 104935 + timestamp: 1749230611612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee + md5: c7e925f37e3b40d893459e625f6a53f1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 91183 + timestamp: 1748393666725 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + sha256: 98299c73c7a93cd4f5ff8bb7f43cd80389f08b5a27a296d806bdef7841cc9b9e + md5: 18b81186a6adb43f000ad19ed7b70381 + depends: + - __osx >=10.13 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 77667 + timestamp: 1748393757154 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2 + md5: 85ccccb47823dd9f7a99d2c7f530342f + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 71829 + timestamp: 1748393749336 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf + md5: 74860100b2029e2523cf480804c76b9b + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 88657 + timestamp: 1723861474602 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -9186,6 +12290,18 @@ packages: purls: [] size: 33408 timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_0.conda + sha256: 2df595ff4cd599446ed7ca01cdfaccc6bc8de89de45b834dd8d5b044ef1d0aea + md5: 7bc06365942b9e4a037746c182feff4d + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12,<12.10.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30525691 + timestamp: 1749219248901 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 @@ -9201,6 +12317,21 @@ packages: purls: [] size: 5919288 timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + sha256: 225f4cfdb06b3b73f870ad86f00f49a9ca0a8a2d2afe59440521fafe2b6c23d9 + md5: 323dc8f259224d13078aaf7ce96c3efe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5916819 + timestamp: 1750379877844 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a md5: a30dc52b2a8b6300f17eaabd2f940d41 @@ -9216,6 +12347,21 @@ packages: purls: [] size: 6170847 timestamp: 1739826107594 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 + md5: 29c54869a3c7d33b6a0add39c5a325fe + depends: + - __osx >=10.13 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6179547 + timestamp: 1750380498501 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 md5: 0cd1148c68f09027ee0b0f0179f77c30 @@ -9231,6 +12377,21 @@ packages: purls: [] size: 4168442 timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 + md5: 5d7dbaa423b4c253c476c24784286e4b + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4163399 + timestamp: 1750378829050 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 md5: 55199e2ae2c3651f6f9b2a447b47bdc9 @@ -9242,6 +12403,17 @@ packages: purls: [] size: 288701 timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + sha256: c8f5dc929ba5fcee525a66777498e03bbcbfefc05a0773e5163bb08ac5122f1a + md5: 37511c874cf3b8d0034c8d24e73c0884 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 289506 + timestamp: 1750095629466 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 md5: 8461ab86d2cdb76d6e971aab225be73f @@ -9252,6 +12424,16 @@ packages: purls: [] size: 266874 timestamp: 1739953034029 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + sha256: 37be190992433d20336187b6fee4986cbdb11e9f901bc888aca5b2d7e5a2acc6 + md5: b9eabfc716af02b8d3ec5a51cb89b4a9 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 267502 + timestamp: 1750095826947 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f md5: 3550e05e3af94a3fa9cef2694417ccdf @@ -9262,6 +12444,16 @@ packages: purls: [] size: 259332 timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + sha256: b1050f6da51de507eec6902367cc2a3f381dd548eaaccb85673784543dcdee1a + md5: 90be56ffd1a6b1950268f88c12e17c69 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 259291 + timestamp: 1750095759683 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 md5: ad620e92b82d2948bc019e029c574ebb @@ -9274,6 +12466,18 @@ packages: purls: [] size: 346511 timestamp: 1745771984515 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + sha256: 8876a2d32d3538675e035b6560691471a1571835c0bcbf23816c24c460d31439 + md5: 27269977c8f25d499727ceabc47cee3d + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement + purls: [] + size: 347727 + timestamp: 1750096091724 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf md5: edb86556cf4a0c133e7932a1597ff236 @@ -9317,52 +12521,49 @@ packages: purls: [] size: 2613087 timestamp: 1745158781377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hba17884_3.conda - sha256: 392ec1e49370eb03270ffd4cc8d727f8e03e1e3a92b12f10c53f396ae4554668 - md5: 545e93a513c10603327c76c15485e946 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda + sha256: 89535af669f63e0dc4ae75a5fc9abb69b724b35e0f2ca0304c3d9744a55c8310 + md5: f6881c04e6617ebba22d237c36f1b88e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libgcc >=13 - libstdcxx >=13 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 210073 - timestamp: 1741121121238 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2024.07.02-h08ce7b7_3.conda - sha256: 2bdf91b94486a06bdcc2aedcae4f0b9280301b0bb39e3168e29767c0c7b8bd85 - md5: 93ff94e5535b7051133b980d2ab1c858 + size: 211720 + timestamp: 1751053073521 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda + sha256: 979a49a54fcfb38f4de258d970b5c572fa29e780a67e847ea18860f99af39020 + md5: 2ba834cda1154dd23d8f1bba2f8f13e0 depends: - - __osx >=10.14 + - __osx >=10.13 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 179620 - timestamp: 1741121212954 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-hd41c47c_3.conda - sha256: 038db1da2b9f353df6532af224c20d985228d3408d2af25aa34974f6dbee76e1 - md5: 1466284c71c62f7a9c4fa08ed8940f20 + size: 180092 + timestamp: 1751053180332 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda + sha256: d125de07bcdeadddd415d2f855f7fe383b066a373fa88244e51c58fef5cb8774 + md5: ce95f5724e52eb76f4cd4be6e7a0d9ae depends: - __osx >=11.0 - libabseil * cxx17* - - libabseil >=20250127.0,<20250128.0a0 + - libabseil >=20250127.1,<20250128.0a0 - libcxx >=18 constrains: - - re2 2024.07.02.* + - re2 2025.06.26.* license: BSD-3-Clause - license_family: BSD purls: [] - size: 167268 - timestamp: 1741121355716 + size: 167704 + timestamp: 1751053331260 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 md5: d27665b20bc4d074b86e628b3ba5ab8b @@ -9415,6 +12616,18 @@ packages: purls: [] size: 4607782 timestamp: 1743369546790 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda + sha256: b9c75b534d3e6e6beec48e316fac44592126be861def4d0d161dbb0b9adcaf68 + md5: 66f4c3def354c5a6dd0c830db7341fa7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.3.0 + - libstdcxx >=14.3.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 5072646 + timestamp: 1750808425881 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -9464,6 +12677,17 @@ packages: purls: [] size: 916313 timestamp: 1746637007836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + sha256: 07649c7c19b916179926006df5c38074618d35bf36cd33ab3fe8b22182bbd258 + md5: b04c7eda6d7dab1e6503135e7fad4d25 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 918887 + timestamp: 1751135622316 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d md5: 9377ba1ade655ea3fc831b456f4a2351 @@ -9474,6 +12698,16 @@ packages: purls: [] size: 977388 timestamp: 1746637093883 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + sha256: bd3ab15e14d7e88851c962034d97519a135d86f79f88b3237fbfb34194c114cb + md5: 678284738efc450afcf90f70365f7318 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 980106 + timestamp: 1751135725501 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 md5: 85f443033cd5b3df82b5cabf79bddb09 @@ -9484,6 +12718,16 @@ packages: purls: [] size: 899462 timestamp: 1746637228408 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + sha256: 6b51a9e7366d6cd26e50d1d0646331d457999ebb88af258f06a74f075e95bf68 + md5: b2dc1707166040e738df2d514f8a1d22 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 901519 + timestamp: 1751135765345 - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 md5: a3900c97ba9e03332e9a911fe63f7d64 @@ -9495,6 +12739,17 @@ packages: purls: [] size: 1081123 timestamp: 1746637406471 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + sha256: d136ecf423f83208156daa6a8c1de461a7e9780e8e4423c23c7e136be3c2ff0a + md5: e1e6cac409e95538acdc3d33a0f34d6a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Unlicense + purls: [] + size: 1285981 + timestamp: 1751135695346 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 md5: 1cb1c67961f6dd257eae9e9691b341aa @@ -9506,6 +12761,26 @@ packages: purls: [] size: 3902355 timestamp: 1746642227493 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 + md5: 6d11a5edae89fe413c0569f16d308f5a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.1.0 h767d61c_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 3896407 + timestamp: 1750808251302 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda + sha256: 0a2a6298beb7225bb850011241b5be9dbeef52e5942d74c592f577b16c38334f + md5: 8f310e4b92c1b1ec1bd3ee16931c149f + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 14063448 + timestamp: 1750808328742 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b md5: 9d2072af184b5caa29492bf2344597bb @@ -9516,6 +12791,15 @@ packages: purls: [] size: 34647 timestamp: 1746642266826 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b + md5: 57541755b5a51691955012b8e197c06c + depends: + - libstdcxx 15.1.0 h8f9b012_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + purls: [] + size: 29093 + timestamp: 1750808292700 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 md5: e79a094918988bb1807462cd42c83962 @@ -9832,6 +13116,18 @@ packages: purls: [] size: 306529 timestamp: 1747367226775 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d + md5: e240159643214102dc88395c4ecee9cf + depends: + - __osx >=10.13 + constrains: + - openmp 20.1.7|20.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 306443 + timestamp: 1749892271445 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda sha256: 3515d520338a334c987ce2737dfba1ebd66eb1e360582c7511738ad3dc8a9145 md5: 66771cb733ad80bd46b66f856601001a @@ -9844,6 +13140,23 @@ packages: purls: [] size: 282100 timestamp: 1747367434936 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 + md5: 741e1da0a0798d32e13e3724f2ca2dcf + depends: + - __osx >=11.0 + constrains: + - openmp 20.1.7|20.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 281996 + timestamp: 1749892286735 +- pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + name: logistro + version: 1.1.0 + sha256: 4f88541fe7f3c545561b754d86121abd9c6d4d8b312381046a78dcd794fddc7c + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -9876,6 +13189,22 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24604 timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + sha256: d812caf52efcea7c9fd0eafb21d45dadfd0516812f667b928bee50e87634fae5 + md5: 21b62c55924f01b6eef6827167b46acb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24856 + timestamp: 1733219782830 - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda sha256: e9965b5d4c29b17b1512035b24a7c126ed7bdb6b39103b52cae099d5bb4194a9 md5: 1d6596ca7c7b66215c5c0d58b3cb0dd3 @@ -9906,6 +13235,21 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 23888 timestamp: 1733219886634 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + sha256: 297242943522a907c270bc2f191d16142707d970541b9a093640801b767d7aa7 + md5: a6fbde71416d6eb9898fcabf505a85c5 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24363 + timestamp: 1733219815199 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 @@ -9938,6 +13282,22 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 24048 timestamp: 1733219945697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + sha256: 81759af8a9872c8926af3aa59dc4986eee90a0956d1ec820b42ac4f949a71211 + md5: 3acf05d8e42ff0d99820d2d889776fff + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24757 + timestamp: 1733219916634 - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py311h5082efb_1.conda sha256: 6f756e13ccf1a521d3960bd3cadddf564e013e210eaeced411c5259f070da08e md5: c1f2ddad665323278952a453912dc3bd @@ -9972,6 +13332,23 @@ packages: - pkg:pypi/markupsafe?source=hash-mapping size: 27582 timestamp: 1733220007802 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + sha256: f16cb398915f52d582bcea69a16cf69a56dab6ea2fab6f069da9c2c10f09534c + md5: ec9ecf6ee4cceb73a0c9a8cdfdf58bed + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 27930 + timestamp: 1733220059655 - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 md5: af6ab708897df59bd6e7283ceab1b56b @@ -10008,10 +13385,10 @@ packages: purls: [] size: 103106385 timestamp: 1730232843711 -- pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl name: ml-dtypes version: 0.5.1 - sha256: 9626d0bca1fb387d5791ca36bacbba298c5ef554747b7ebeafefb4564fc83566 + sha256: fd918d4e6a4e0c110e2e05be7a7814d10dc1b95872accbf6512b80a109b71ae1 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -10024,50 +13401,50 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - sha256: 87928a36d350c470455a322c4c2b82266b88322d0fd5187ae8cc6fb5e3aad61f - md5: c45ac8395a27736c27b2e50b53ffe62c +- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda + sha256: 99b0aed0c8c0f365ea35dded676fb19a106aac48b2a1ae5990de317f35dc8955 + md5: f30e252cdd2ecb7f2bb9a6e5f0c334de depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - numpy >=1.21,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 290991 - timestamp: 1736538940686 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda - sha256: 7a8fa9ae4dee10c522211734be6e53397b14deddd861826b5163f2358e9cb903 - md5: f14f61abbbb6a7882dfb5835d21a0f32 + size: 293551 + timestamp: 1736538997988 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda + sha256: 7538ec20c66991b55d08ab1984b6601ca9d4592a337f3956af220cca0ab78808 + md5: 528edd24e533daec77508f10cf597fd8 depends: - __osx >=10.13 - libcxx >=18 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - numpy >=1.21,<3 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 227886 - timestamp: 1736539035640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda - sha256: 17f70a0f345722e67f7437895a78cce84b758419f1c373186cec671607270747 - md5: d7a33fc18bf71480224e069be3072bbf + size: 229597 + timestamp: 1736539182780 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda + sha256: fcc861786a58082b83cf3fb3fcba7b7f9bba7fbd63ebb30679dc06eddd245a8a + md5: 073b3b0e062b1f369297c9de7a786a87 depends: - __osx >=11.0 - libcxx >=18 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - numpy >=1.21,<3 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 200130 - timestamp: 1736539205286 + size: 201206 + timestamp: 1736539081874 - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl name: mypy version: 1.16.0 @@ -10133,6 +13510,46 @@ packages: version: 1.1.0 sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + name: narwhals + version: 1.44.0 + sha256: a170ea0bab4cf1f323d9f8bf17f2d7042c3d73802bea321996b39bf075d57de5 + requires_dist: + - cudf>=24.10.0 ; extra == 'cudf' + - dask[dataframe]>=2024.8 ; extra == 'dask' + - duckdb>=1.0 ; extra == 'duckdb' + - ibis-framework>=6.0.0 ; extra == 'ibis' + - packaging ; extra == 'ibis' + - pyarrow-hotfix ; extra == 'ibis' + - rich ; extra == 'ibis' + - modin ; extra == 'modin' + - pandas>=1.1.3 ; extra == 'pandas' + - polars>=0.20.3 ; extra == 'polars' + - pyarrow>=11.0.0 ; extra == 'pyarrow' + - pyspark>=3.5.0 ; extra == 'pyspark' + - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' + - sqlframe>=3.22.0 ; extra == 'sqlframe' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + name: narwhals + version: 1.45.0 + sha256: 0585612aa7ec89f9d061e78410b6fb8772794389d1a29d5799572d6b81999497 + requires_dist: + - cudf>=24.10.0 ; extra == 'cudf' + - dask[dataframe]>=2024.8 ; extra == 'dask' + - duckdb>=1.0 ; extra == 'duckdb' + - ibis-framework>=6.0.0 ; extra == 'ibis' + - packaging ; extra == 'ibis' + - pyarrow-hotfix ; extra == 'ibis' + - rich ; extra == 'ibis' + - modin ; extra == 'modin' + - pandas>=1.1.3 ; extra == 'pandas' + - polars>=0.20.4 ; extra == 'polars' + - pyarrow>=11.0.0 ; extra == 'pyarrow' + - pyspark>=3.5.0 ; extra == 'pyspark' + - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' + - sqlframe>=3.22.0 ; extra == 'sqlframe' + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 md5: 6bb0d77277061742744176ab555b723c @@ -10193,6 +13610,19 @@ packages: - pkg:pypi/nbformat?source=hash-mapping size: 100945 timestamp: 1733402844974 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda + sha256: d94d3252a0c1b893947e4e2cb3ff9184868645d6156dec6609c6832c3b5d9fe5 + md5: cac7e04909de453bca7ef38beb28e3c5 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12,<13.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 213637740 + timestamp: 1750419797926 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -10267,6 +13697,42 @@ packages: - pytest>=7.2 ; extra == 'test' - pytest-cov>=4.0 ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + name: networkx + version: '3.5' + sha256: 0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec + requires_dist: + - numpy>=1.25 ; extra == 'default' + - scipy>=1.11.2 ; extra == 'default' + - matplotlib>=3.8 ; extra == 'default' + - pandas>=2.0 ; extra == 'default' + - pre-commit>=4.1 ; extra == 'developer' + - mypy>=1.15 ; extra == 'developer' + - sphinx>=8.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.16 ; extra == 'doc' + - sphinx-gallery>=0.18 ; extra == 'doc' + - numpydoc>=1.8.0 ; extra == 'doc' + - pillow>=10 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - osmnx>=2.0.0 ; extra == 'example' + - momepy>=0.7.2 ; extra == 'example' + - contextily>=1.6 ; extra == 'example' + - seaborn>=0.13 ; extra == 'example' + - cairocffi>=1.7 ; extra == 'example' + - igraph>=0.11 ; extra == 'example' + - scikit-learn>=1.5 ; extra == 'example' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.14 ; extra == 'extra' + - pydot>=3.0.1 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + - pytest-xdist>=3.0 ; extra == 'test' + - pytest-mpl ; extra == 'test-extras' + - pytest-randomly ; extra == 'test-extras' + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 md5: 7ba3f09fceae6a120d664217e58fe686 @@ -10301,19 +13767,59 @@ packages: - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 9068997 + timestamp: 1747545091884 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 + md5: 17fac9db62daa5c810091c2882b28f45 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8490501 + timestamp: 1747545073507 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda + sha256: 8b88ade24df5229c5d76c5ef09568ae4630b1095982e94648fbbeb18f475aa61 + md5: db18a34466bef0863e9301b518a75e8f + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 9068997 - timestamp: 1747545091884 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 - md5: 17fac9db62daa5c810091c2882b28f45 + size: 8545037 + timestamp: 1749430954481 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + sha256: 96b2ad622ac6521bb58586e9e671e49efe84988bc34a14cbd113b98c67728d5d + md5: 3a155f4d1e110a7330c17ccdce55d315 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -10321,16 +13827,16 @@ packages: - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8490501 - timestamp: 1747545073507 + size: 8553831 + timestamp: 1751342634355 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda sha256: bcb2c6fd701f3591fd4cd04580ec62ad88622c09671139a98d82ca80e2ae365f md5: 8e850d1284fd8a90aeb4b5195a0116f3 @@ -10369,6 +13875,25 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 7691449 timestamp: 1747545110970 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda + sha256: 6e751f573b6aa727b83bdcb6534c9a4ffe05bcb56a659eb3f1418d28794213cc + md5: 9ff00ee247ea2b114a56de1a31a5d5af + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=compressed-mapping + size: 7634474 + timestamp: 1749431208151 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 md5: 9446d2629b529e92769dfb34c7c194bb @@ -10409,6 +13934,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6437085 timestamp: 1747545094808 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda + sha256: d473005786a27cf4e1430d45a99a61626c2fbf61eb25b4d021cee8d217b973d2 + md5: 0dc3aa075f3e64bdda6e779e2cbf5aa9 + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=compressed-mapping + size: 6525213 + timestamp: 1749430964570 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d md5: 6612dfa4e68dd90c539f2e9f40a42514 @@ -10449,6 +13994,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 7028854 timestamp: 1747545411647 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda + sha256: b2d8af00021061b43fc43f24ad7f135ff3641bc642e25dab0a175126facb749b + md5: 34a477d1a0c5396c6d82d6f7765ca339 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6646194 + timestamp: 1749431079208 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f md5: 5402c2b046432ceb2d192a82802e7854 @@ -10474,6 +14039,19 @@ packages: - pkg:pypi/numpydoc?source=hash-mapping size: 58041 timestamp: 1733650959971 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 + md5: 66f9ba52d846feffa1c5d62522324b4f + depends: + - python >=3.9 + - sphinx >=6 + - tomli >=1.1.0 + - python + license: BSD-3-Clause + purls: + - pkg:pypi/numpydoc?source=hash-mapping + size: 60220 + timestamp: 1750861325361 - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 @@ -10502,6 +14080,20 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 695844 timestamp: 1725461065535 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + sha256: 940b03a15c0c0758b352078621ed8b2d982a29af6fccd27fe5c6764727a6f4de + md5: fa6ac78dbc7b71ca9f599f8a3f4b5b32 + depends: + - et_xmlfile + - libgcc >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/openpyxl?source=hash-mapping + size: 483786 + timestamp: 1725461014573 - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda sha256: 7ac670b3c6b7b877555ab23c8de80a788c9c395e31c26989c9022984ada91b2d md5: 4745570a97df2e827f8c706b2786532b @@ -10528,6 +14120,19 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 654641 timestamp: 1725461063935 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + sha256: dd7bea83172cf6834900faefdd975bd24cba1f60d9e21dec40499abe72107850 + md5: 84d3df4316ae9b031c44fbdd1e0db98d + depends: + - et_xmlfile + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/openpyxl?source=hash-mapping + size: 486781 + timestamp: 1725461093432 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda sha256: 48ad14fdff3e40de359a1c422a3fe4a3147e3dcce655353da4cce980549c0364 md5: 4ca778433ccd2f029f0e29e71fb799c0 @@ -10556,6 +14161,20 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 652292 timestamp: 1725461042452 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + sha256: 01c9d6e5e3c39c915ee531f37df62f81e374d5c0a0043a8e19eff9ba13479e80 + md5: d95e17c66b833ff87db71540cde0b28a + depends: + - et_xmlfile + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/openpyxl?source=hash-mapping + size: 486426 + timestamp: 1725461219833 - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda sha256: 91f7063cd6bee70a3ce46fdade2d658581bcbe2eeaebd0de49c28ee0ab1169a5 md5: 6854279652cb238abfacb0bd993a745a @@ -10588,6 +14207,22 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 627490 timestamp: 1725461370219 +- conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + sha256: 9c79a234b21e0e46cd710fcfd2458519b9503cddd91508006c7355a8c3c6495f + md5: 53bb97fa4d46a1bab5fa19560d08b989 + depends: + - et_xmlfile + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/openpyxl?source=hash-mapping + size: 483476 + timestamp: 1725461014622 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 md5: de356753cfdbffcde5bb1e86e3aa6cd0 @@ -10600,6 +14235,18 @@ packages: purls: [] size: 3117410 timestamp: 1746223723843 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + sha256: 942347492164190559e995930adcdf84e2fea05307ec8012c02a505f5be87462 + md5: c87df2ab1448ba69169652ab9547082d + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3131002 + timestamp: 1751390382076 - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda sha256: bcac94cb82a458b4e3164da8d9bced08cc8c3da2bc3bd7330711a3689c1464a5 md5: 919faa07b9647beb99a0e7404596a465 @@ -10971,6 +14618,183 @@ packages: - tabulate ; extra == 'benchmark' - termcolor ; extra == 'benchmark' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + name: optree + version: 0.16.0 + sha256: e974f28c699baf1565765645a71cfe5a47886fd6297225090c18204f49b4037c + requires_dist: + - typing-extensions>=4.6.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - doc8 ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - covdefaults ; extra == 'test' + - rich ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + name: optree + version: 0.16.0 + sha256: b7390b7f65809555ed43598c1df18a8757b3a4396c279e5f9fcfab88ad0bc59b + requires_dist: + - typing-extensions>=4.6.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - doc8 ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - covdefaults ; extra == 'test' + - rich ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + name: optree + version: 0.16.0 + sha256: 33a839c1740c73de589bf2a8154f27e4729df6fc0ca9fee5c11ccbeb167a5f4e + requires_dist: + - typing-extensions>=4.6.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - doc8 ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - covdefaults ; extra == 'test' + - rich ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: optree + version: 0.16.0 + sha256: 408203ecdff202d34c31f49daec9b3a279e1c027e24729a8b13ab19d5f1b19e6 + requires_dist: + - typing-extensions>=4.6.0 + - jax ; extra == 'jax' + - numpy ; extra == 'numpy' + - torch ; extra == 'torch' + - ruff ; extra == 'lint' + - pylint[spelling] ; extra == 'lint' + - mypy ; extra == 'lint' + - doc8 ; extra == 'lint' + - pyenchant ; extra == 'lint' + - xdoctest ; extra == 'lint' + - cpplint ; extra == 'lint' + - pre-commit ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - covdefaults ; extra == 'test' + - rich ; extra == 'test' + - sphinx ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - sphinxcontrib-bibtex ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - docutils ; extra == 'docs' + - jax[cpu] ; extra == 'docs' + - numpy ; extra == 'docs' + - torch ; extra == 'docs' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.10.18 + sha256: 69c34b9441b863175cc6a01f2935de994025e773f814412030f269da4f7be147 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.10.18 + sha256: 50c15557afb7f6d63bc6d6348e0337a880a04eaa9cd7c9d569bcb4e760a24753 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.10.18 + sha256: 9dca85398d6d093dd41dc0983cbf54ab8e6afd1c547b6b8a311643917fbf4e0c + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + name: orjson + version: 3.10.18 + sha256: aed411bcb68bf62e85588f2a7e03a6082cc42e5a2796e06e72a962d7c6310b52 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.10.18 + sha256: bb70d489bc79b7519e5803e2cc4c72343c9dc1154258adf2f8925d0b60da7c58 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl + name: orjson + version: 3.10.18 + sha256: c28082933c71ff4bc6ccc82a454a2bffcef6e1d7379756ca567c772e4fb3278a + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + name: orjson + version: 3.10.18 + sha256: e0a183ac3b8e40471e8d843105da6fbe7c070faab023be3b08188ee3f85719b8 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: orjson + version: 3.10.18 + sha256: 9da552683bc9da222379c7a01779bddd0ad39dd699dd6300abaf43eadee38334 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl + name: orjson + version: 3.10.18 + sha256: f9f94cf6d3f9cd720d641f8399e390e7411487e493962213390d1ae45c7814fc + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -11084,21 +14908,73 @@ packages: - matplotlib >=3.6.3 - bottleneck >=1.3.6 - s3fs >=2022.11.0 - - zstandard >=0.19.0 + - zstandard >=0.19.0 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - beautifulsoup4 >=4.11.2 + - pandas-gbq >=0.19.0 + - xlsxwriter >=3.0.5 + - numba >=0.56.4 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15392153 + timestamp: 1744430987175 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + sha256: c4a6e9bc13454c5afd17600c2ee2b6b07fee8b2629cb1c193c22c048faa9bdcc + md5: 8664b4fa9b5b23b0d1cdc55c7195fcfe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.13.* *_cp313 + - pytz >=2020.1 + constrains: + - zstandard >=0.19.0 + - sqlalchemy >=2.0.0 + - pyqt5 >=5.15.9 + - pyxlsb >=1.0.10 + - qtpy >=2.3.0 + - odfpy >=1.4.1 + - python-calamine >=0.1.7 + - pytables >=3.8.0 + - numexpr >=2.8.4 + - s3fs >=2022.11.0 + - html5lib >=1.1 + - pyarrow >=10.0.1 + - xarray >=2022.12.0 + - lxml >=4.9.2 - openpyxl >=3.1.0 - - blosc >=1.21.3 - - beautifulsoup4 >=4.11.2 + - fastparquet >=2022.12.0 + - fsspec >=2022.11.0 + - matplotlib >=3.6.3 + - scipy >=1.10.0 - pandas-gbq >=0.19.0 - xlsxwriter >=3.0.5 + - blosc >=1.21.3 + - xlrd >=2.0.1 + - bottleneck >=1.3.6 - numba >=0.56.4 - - pyxlsb >=1.0.10 - - python-calamine >=0.1.7 + - beautifulsoup4 >=4.11.2 + - pyreadstat >=1.2.0 + - tabulate >=0.9.0 + - tzdata >=2022.7 + - gcsfs >=2022.11.0 + - psycopg2 >=2.9.6 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15392153 - timestamp: 1744430987175 + size: 14991000 + timestamp: 1749100101435 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda sha256: 5a25e7353b25fcf0af48a3a127b4c204b478b2abe2f7e5b863a68ea91955328b md5: f763d55519fd9595b2d0e85265810137 @@ -11201,6 +15077,57 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14590879 timestamp: 1744431018654 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + sha256: e403af69c29fc477a1857a60a77b7e33063ca07b9c312818a820adcb29ab948e + md5: 54635bd0e921609f8331e07cf6344a90 + depends: + - __osx >=10.13 + - libcxx >=18 + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.13.* *_cp313 + - pytz >=2020.1 + constrains: + - xlsxwriter >=3.0.5 + - html5lib >=1.1 + - s3fs >=2022.11.0 + - tabulate >=0.9.0 + - psycopg2 >=2.9.6 + - beautifulsoup4 >=4.11.2 + - odfpy >=1.4.1 + - xarray >=2022.12.0 + - zstandard >=0.19.0 + - python-calamine >=0.1.7 + - pyreadstat >=1.2.0 + - xlrd >=2.0.1 + - blosc >=1.21.3 + - fsspec >=2022.11.0 + - pyqt5 >=5.15.9 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - scipy >=1.10.0 + - pandas-gbq >=0.19.0 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - qtpy >=2.3.0 + - pytables >=3.8.0 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - pyxlsb >=1.0.10 + - fastparquet >=2022.12.0 + - numba >=0.56.4 + - lxml >=4.9.2 + - gcsfs >=2022.11.0 + - matplotlib >=3.6.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14196191 + timestamp: 1749100236221 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda sha256: 2fedf5cec20945d5ce1a5264f06a8adf23bc6b355cef365e92241a3f1f6a6d11 md5: 29ae2c4e0ee3c65fa8520cafbf479ff7 @@ -11305,6 +15232,58 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14442730 timestamp: 1744431003090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + sha256: 3e2495cb6bd1ee035cb1cb91dd91df6e8ffc7ff87b1be24570e566327de830f9 + md5: 97e2df3a9bbf80677b74ba80ba461c60 + depends: + - __osx >=11.0 + - libcxx >=18 + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.13.* *_cp313 + - pytz >=2020.1 + constrains: + - fastparquet >=2022.12.0 + - html5lib >=1.1 + - python-calamine >=0.1.7 + - lxml >=4.9.2 + - numba >=0.56.4 + - tabulate >=0.9.0 + - xlrd >=2.0.1 + - psycopg2 >=2.9.6 + - pyxlsb >=1.0.10 + - scipy >=1.10.0 + - tzdata >=2022.7 + - fsspec >=2022.11.0 + - zstandard >=0.19.0 + - matplotlib >=3.6.3 + - bottleneck >=1.3.6 + - beautifulsoup4 >=4.11.2 + - pyarrow >=10.0.1 + - pandas-gbq >=0.19.0 + - gcsfs >=2022.11.0 + - pyreadstat >=1.2.0 + - xlsxwriter >=3.0.5 + - sqlalchemy >=2.0.0 + - pytables >=3.8.0 + - s3fs >=2022.11.0 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - odfpy >=1.4.1 + - xarray >=2022.12.0 + - numexpr >=2.8.4 + - pyqt5 >=5.15.9 + - qtpy >=2.3.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14010057 + timestamp: 1749100339950 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda sha256: 7aabb8d23a6817844a7f1b402e7e147e341cade5f470a908b8239f969c7b681c md5: 84c8b4aab176baefd352cd34f7e69469 @@ -11409,6 +15388,58 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14150000 timestamp: 1744431235710 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + sha256: 2dac0e788df070dfb12e7f3630386973b0bb9730d04b7f774c519e3f3f1db21f + md5: 06f537fc2102679d5c1567cf2d38391d + depends: + - numpy >=1.21,<3 + - numpy >=1.22.4 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.13.* *_cp313 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - pytables >=3.8.0 + - scipy >=1.10.0 + - xlsxwriter >=3.0.5 + - sqlalchemy >=2.0.0 + - tzdata >=2022.7 + - python-calamine >=0.1.7 + - pyqt5 >=5.15.9 + - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - qtpy >=2.3.0 + - matplotlib >=3.6.3 + - xlrd >=2.0.1 + - odfpy >=1.4.1 + - pyxlsb >=1.0.10 + - pandas-gbq >=0.19.0 + - fastparquet >=2022.12.0 + - openpyxl >=3.1.0 + - tabulate >=0.9.0 + - gcsfs >=2022.11.0 + - bottleneck >=1.3.6 + - numexpr >=2.8.4 + - pyarrow >=10.0.1 + - beautifulsoup4 >=4.11.2 + - pyreadstat >=1.2.0 + - lxml >=4.9.2 + - xarray >=2022.12.0 + - html5lib >=1.1 + - numba >=0.56.4 + - fsspec >=2022.11.0 + - psycopg2 >=2.9.6 + - blosc >=1.21.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 13929307 + timestamp: 1749100343118 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -11440,6 +15471,27 @@ packages: purls: [] size: 453100 timestamp: 1743352484196 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf + md5: 79f71230c069a287efe3a8614069ddf1 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libgcc >=13 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 455420 + timestamp: 1751292466873 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda sha256: ff2cc0b201ce1b68a9f38c1dc71dbd26f70eef103089ae4ee26b7e80d336f0ab md5: 17bcc6d5206e8a1a13cc478a777d79e5 @@ -11609,6 +15661,18 @@ packages: purls: [] size: 398664 timestamp: 1746011575217 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d + md5: 39b4228a867772d610c02e06f939a5b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + purls: [] + size: 402222 + timestamp: 1749552884791 - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 md5: 808d70603573b87f3427b61501fa376d @@ -11620,6 +15684,17 @@ packages: purls: [] size: 341650 timestamp: 1746011664546 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 + md5: e1e0595633f79ce40f3fba9a337a155b + depends: + - __osx >=10.13 + - libcxx >=18 + license: MIT + license_family: MIT + purls: [] + size: 345091 + timestamp: 1749552991974 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b md5: d098a1cca9d588cd4d258d06a08a454e @@ -11631,6 +15706,17 @@ packages: purls: [] size: 213341 timestamp: 1746011718977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 + md5: 0587a57e200568a71982173c07684423 + depends: + - __osx >=11.0 + - libcxx >=18 + license: MIT + license_family: MIT + purls: [] + size: 214660 + timestamp: 1749553221709 - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 md5: 01617534ef71b5385ebba940a6d6150d @@ -11643,6 +15729,18 @@ packages: purls: [] size: 472718 timestamp: 1746016414502 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e + md5: 2566a45fb15e2f540eff14261f1242af + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 476515 + timestamp: 1749553103224 - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 md5: 5a5870a74432aa332f7d32180633ad05 @@ -11665,21 +15763,46 @@ packages: - pkg:pypi/platformdirs?source=hash-mapping size: 23531 timestamp: 1746710438805 -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda - sha256: d1bbf2d80105bfc8a7ed9817888f4a1686ed393d6435572921add09cc9347c1c - md5: 71ac632876630091c81c50a05ec5e030 - depends: +- pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + name: plotly + version: 6.2.0 + sha256: 32c444d4c940887219cb80738317040363deefdfee4f354498cc0b6dab8978bd + requires_dist: + - narwhals>=1.15.1 - packaging - - python >=3.9 - - tenacity >=6.2.0 - constrains: - - ipywidgets >=7.6 - license: MIT - license_family: MIT - purls: - - pkg:pypi/plotly?source=hash-mapping - size: 8022748 - timestamp: 1733733328161 + - numpy ; extra == 'express' + - kaleido>=1.0.0 ; extra == 'kaleido' + - pytest ; extra == 'dev-core' + - requests ; extra == 'dev-core' + - ruff==0.11.12 ; extra == 'dev-core' + - plotly[dev-core] ; extra == 'dev-build' + - build ; extra == 'dev-build' + - jupyter ; extra == 'dev-build' + - plotly[dev-build] ; extra == 'dev-optional' + - plotly[kaleido] ; extra == 'dev-optional' + - anywidget ; extra == 'dev-optional' + - colorcet ; extra == 'dev-optional' + - fiona<=1.9.6 ; python_full_version < '3.9' and extra == 'dev-optional' + - geopandas ; extra == 'dev-optional' + - inflect ; extra == 'dev-optional' + - numpy ; extra == 'dev-optional' + - orjson ; extra == 'dev-optional' + - pandas ; extra == 'dev-optional' + - pdfrw ; extra == 'dev-optional' + - pillow ; extra == 'dev-optional' + - plotly-geo ; extra == 'dev-optional' + - polars[timezone] ; extra == 'dev-optional' + - pyarrow ; extra == 'dev-optional' + - pyshp ; extra == 'dev-optional' + - pytz ; extra == 'dev-optional' + - scikit-image ; extra == 'dev-optional' + - scipy ; extra == 'dev-optional' + - shapely ; extra == 'dev-optional' + - statsmodels ; extra == 'dev-optional' + - vaex ; python_full_version < '3.10' and extra == 'dev-optional' + - xarray ; extra == 'dev-optional' + - plotly[dev-optional] ; extra == 'dev' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc md5: 7da7ccd349dbf6487a7778579d2bb971 @@ -11718,6 +15841,17 @@ packages: - pkg:pypi/prometheus-client?source=hash-mapping size: 53514 timestamp: 1747487319612 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + sha256: 454e2c0ef14accc888dd2cd2e8adb8c6a3a607d2d3c2f93962698b5718e6176d + md5: c64b77ccab10b822722904d889fa83b5 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/prometheus-client?source=hash-mapping + size: 52641 + timestamp: 1748896836631 - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda sha256: ebc1bb62ac612af6d40667da266ff723662394c0ca78935340a5b5c14831227b md5: d17ae9db4dc594267181bd199bf9a551 @@ -11760,6 +15894,20 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 466219 timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852 + md5: 8f315d1fce04a046c1b93fa6e536661d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 475101 + timestamp: 1740663284505 - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda sha256: e290563f61f810f745b32d4c1ebe4ec87827323134f6bee2e8cc894391cbc548 md5: 7b5cdf63ced6576ead40a82ea0616322 @@ -11786,6 +15934,19 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 473946 timestamp: 1740663466925 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + sha256: b117f61eaf3d5fb640d773c3021f222c833a69c2ac123d7f4b028b3e5d638dd4 + md5: 2c8969aaee2cf24bc8931f5fc36cccfd + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 482494 + timestamp: 1740663492867 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda sha256: 3ea107f769b3ac99411f6bd6d86f946566ba3983894cbeb0e43439934a90c2f5 md5: 12f8d65fb5a6bd03aedd5ac74391f1ea @@ -11814,6 +15975,20 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 476376 timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + sha256: a3d8376cf24ee336f63d3e6639485b68c592cf5ed3e1501ac430081be055acf9 + md5: 21105780750e89c761d1c72dc5304930 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 484139 + timestamp: 1740663381126 - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda sha256: e3844e26821651f744ea57a1538a8f970872f15a1c6eb38fc208f0efd1c3706c md5: fc2a628caa77146532ee4747894bccd5 @@ -11844,6 +16019,21 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 484682 timestamp: 1740663813103 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda + sha256: d8e5d86e939d5f308c7922835a94458afb29d81c90b5d43c43a5537c9c7adbc1 + md5: 3cdf99cf98b01856af9f26c5d8036353 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + size: 491314 + timestamp: 1740663777370 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -11910,6 +16100,17 @@ packages: - pkg:pypi/pygments?source=hash-mapping size: 888600 timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a + md5: 6b6ece66ebcae2d5f326c77ef2c5a066 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=compressed-mapping + size: 889287 + timestamp: 1750615908735 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda sha256: 0ddfbff3596d382b7498b42185d1852625cd949f77dab25f392329b2b61fdd1e md5: 7ec06aad0aaf2bbb04b3e97eebb95a3e @@ -11940,6 +16141,21 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 145598 timestamp: 1727646199446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + sha256: 74f27bfadba6ceab7f62c137390cd1d6a5c9460380a09dbc4b43478dcdc2f2cb + md5: 1a8c6ec6aa900ec36f07a70a50c35e5c + depends: + - __glibc >=2.17,<3.0.a0 + - graphviz >=12.0.0,<13.0a0 + - libgcc >=13 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pygraphviz?source=hash-mapping + size: 146981 + timestamp: 1727646139934 - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda sha256: cbcf37b305cc386ecbe3879eeccee682cbc34a021696fd0478a69b56542fcfa7 md5: 846b2a1965c4d7b9cdc96bdf7961aa0b @@ -11966,8 +16182,22 @@ packages: license_family: BSD purls: - pkg:pypi/pygraphviz?source=hash-mapping - size: 141223 - timestamp: 1727646168866 + size: 141223 + timestamp: 1727646168866 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + sha256: fff8589c4226a565f5801f1501e5c393a5a9ee05d3379c20fea43f0fcfc35bb4 + md5: 77b8d374b349f91e194a26c94e91e622 + depends: + - __osx >=10.13 + - graphviz >=12.0.0,<13.0a0 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pygraphviz?source=hash-mapping + size: 142780 + timestamp: 1727646181311 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda sha256: 698959fb86daadd8b3e1a7753f3b1867babb0e5d7e09857ae908963157c87fdb md5: c279de4ce02ab14a92024b5aaefc8018 @@ -11998,6 +16228,21 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 140852 timestamp: 1727646245535 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + sha256: 81d04df00d7fdaf6f3b93f0c9507b419922f296721e8944d510e5549bdda3645 + md5: c0b8ad301050cdec367e319e2d12d58d + depends: + - __osx >=11.0 + - graphviz >=12.0.0,<13.0a0 + - python >=3.13.0rc2,<3.14.0a0 + - python >=3.13.0rc2,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pygraphviz?source=hash-mapping + size: 141819 + timestamp: 1727646243823 - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda sha256: 1c17ea4c275490b38b5749a5aac515dbfb7ac66e0f45839c7b511d71b6f4c2bb md5: d13800ff226f1057834b7f912d0122ed @@ -12030,6 +16275,22 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 147736 timestamp: 1727646635489 +- conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda + sha256: 92c0efa51b4d907376b3caaa4b5a268b4331cbe6c9b48c5f0a16faf153adefed + md5: 416751b1e17cfa1cd353be1c2a4daec1 + depends: + - graphviz >=12.0.0,<13.0a0 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pygraphviz?source=hash-mapping + size: 148154 + timestamp: 1727646741491 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda sha256: 7cc9dd5c836631c733173c88187231bfc0438135e0ddf94e866e45b3d10592bd md5: 3b2f520d27fa7cf9c6c73fb43c69a321 @@ -12060,6 +16321,21 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 489634 timestamp: 1736891165910 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + sha256: 17d1aeea68b091508e2bc8e58023788dcd7592143c909ede5b634d059d930f30 + md5: 6b77cb82a5311aa457295cec63adbbc8 + depends: + - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-core?source=hash-mapping + size: 488220 + timestamp: 1750207845515 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda sha256: 7eb9c40a460ea769f024aaf45dae9fde7ca41137ca82154c50c8aead8a32ff88 md5: cc865b09e7a02328840b163fb8856731 @@ -12092,6 +16368,22 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 478921 timestamp: 1736891272846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + sha256: 93fcab93a20f8776fb9340d19098f12a27c01283c0c96caac49dbeba27dd9652 + md5: 4f7ff79ebe0f28877b62adced9e49acb + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-core?source=hash-mapping + size: 478833 + timestamp: 1750208041268 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda sha256: 94e00e4c9b5c5d8b2374321a0f908b7812b06ac8c9cb99242ddaa4ea0091f0be md5: d16654f6b3f602bb0acab446c55bcafb @@ -12122,6 +16414,21 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 381786 timestamp: 1736927108218 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + sha256: f370c937cf20d0ef198f9ce1870ed61e6384d0fe4e85a01853d866ba86eb58ab + md5: f9b008619c45d0381e0900912c4ff554 + depends: + - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping + size: 382930 + timestamp: 1750225358268 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda sha256: 33635759c626103696963a4d439f01cc534fe94c318ce5a14c7b9ddbe8dfb78c md5: 39da4013010bd559600f775ebf6a5915 @@ -12154,6 +16461,22 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 383608 timestamp: 1736927118445 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + sha256: e2c40cc492a5e213b94e580ad8afd988ed4e4fb652046b3d65235e255a23b708 + md5: 9b7a787178df2ffe1f0e4fee33b66045 + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping + size: 385067 + timestamp: 1750225411095 - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl name: pyreadline3 version: 3.5.4 @@ -12209,6 +16532,26 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 259816 timestamp: 1740946648058 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d + md5: a49c2283f24696a7b30367b7346a0144 + depends: + - colorama >=0.4 + - exceptiongroup >=1 + - iniconfig >=1 + - packaging >=20 + - pluggy >=1.5,<2 + - pygments >=2.7.2 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 276562 + timestamp: 1750239526127 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd md5: 1e35d8f975bc0e984a19819aa91c440a @@ -12223,6 +16566,20 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 27565 timestamp: 1743886993683 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 + md5: ce978e1b9ed8b8d49164e90a5cdc94cd + depends: + - coverage >=7.5 + - pytest >=4.6 + - python >=3.9 + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-cov?source=compressed-mapping + size: 28216 + timestamp: 1749778064293 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda sha256: b6fed61a0f6aba248fe4ad590427d92ed94a85c3a2fd238362f4c1d3b5d900a4 md5: 07ab2b7111d3e814cfd73581e34cb9a1 @@ -12252,6 +16609,21 @@ packages: - pkg:pypi/pytest-xdist?source=hash-mapping size: 38147 timestamp: 1733240891538 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 + md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 + depends: + - execnet >=2.1 + - pytest >=7.0.0 + - python >=3.9 + constrains: + - psutil >=3.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-xdist?source=hash-mapping + size: 39210 + timestamp: 1748342202415 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 md5: b61d4fbf583b8393d9d00ec106ad3658 @@ -12306,6 +16678,33 @@ packages: purls: [] size: 31279179 timestamp: 1744325164633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + build_number: 102 + sha256: c2cdcc98ea3cbf78240624e4077e164dc9d5588eefb044b4097c3df54d24d504 + md5: 89e07d92cf50743886f41638d58c4328 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 33273132 + timestamp: 1750064035176 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda sha256: fcd4b8a9a206940321d1d6569ddac2e99f359f0d5864e48140374a85aed5c27f md5: cfa36957cba60dca8e79a974d09b6a2c @@ -12350,6 +16749,30 @@ packages: purls: [] size: 13783219 timestamp: 1744324415187 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + build_number: 102 + sha256: 8b2f14010eb0baf04ed1eb3908c9e184cd14512c4d64c43f313251b90e75b345 + md5: afa9492a7d31f6f7189ca8f08aceadac + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 13955531 + timestamp: 1750063132430 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda sha256: ea91eb5bc7160cbc6f8110702f9250c87e378ff1dc83ab8daa8ae7832fb5d0de md5: 6ab5f6a9e85f1b1848b6518e7eea63ee @@ -12394,6 +16817,30 @@ packages: purls: [] size: 12932743 timestamp: 1744323815320 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + build_number: 102 + sha256: ee1b09fb5563be8509bb9b29b2b436a0af75488b5f1fa6bcd93fe0fba597d13f + md5: 123b7f04e7b8d6fc206cf2d3466f8a4b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + size: 12931515 + timestamp: 1750062475020 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda sha256: 41e1c07eecff9436b9bb27724822229b2da6073af8461ede6c81b508c0677c56 md5: c1f91331274f591340e2f50e737dfbe9 @@ -12438,6 +16885,42 @@ packages: purls: [] size: 15941050 timestamp: 1744323489788 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + build_number: 102 + sha256: 3de2b9f89b220cb779f6947cf87b328f73d54eed4f7e75a3f9337caeb4443910 + md5: a9a4658f751155c819d6cd4c47f0a4d2 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Python-2.0 + purls: [] + size: 16825621 + timestamp: 1750062318985 + python_site_packages_path: Lib/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 + depends: + - python >=3.9 + - six >=1.5 + - python + license: Apache-2.0 + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -12505,6 +16988,17 @@ packages: purls: [] size: 6971 timestamp: 1745258861359 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + build_number: 7 + sha256: 0595134584589064f56e67d3de1d8fcbb673a972946bce25fb593fb092fdcd97 + md5: e84b44e6300f1703cb25d29120c5b1d8 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6988 + timestamp: 1745258852285 - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0 md5: bc8e3267d44011051f2eb14d22fb0960 @@ -12546,6 +17040,21 @@ packages: - pkg:pypi/pywin32?source=hash-mapping size: 6032183 timestamp: 1728636767192 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + sha256: 0a68b324ea47ae720c62522c5d0bb5ea3e4987e1c5870d6490c7f954fbe14cbe + md5: 7113bd6cfe34e80d8211f7c019d14357 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/pywin32?source=hash-mapping + size: 6060096 + timestamp: 1728636763526 - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda sha256: fbf3e3f2d5596e755bd4b83b5007fa629b184349781f46e137a4e80b6754c7c0 md5: 8a142e0fcd43513c2e876d97ba98c0fa @@ -12578,6 +17087,22 @@ packages: - pkg:pypi/pywinpty?source=hash-mapping size: 215864 timestamp: 1738661787591 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + sha256: 4210038442e3f34d67de9aeab2691fa2a6f80dc8c16ab77d5ecbb2b756e04ff0 + md5: cd1fadcdf82a423c2441a95435eeab3c + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - winpty + license: MIT + license_family: MIT + purls: + - pkg:pypi/pywinpty?source=hash-mapping + size: 217133 + timestamp: 1738661059040 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 md5: 014417753f948da1f70d132b2de573be @@ -12608,6 +17133,21 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 206903 timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + sha256: 6826217690cfe92d6d49cdeedb6d63ab32f51107105d6a459d30052a467037a0 + md5: 50992ba61a8a1f8c2d346168ae1c86df + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 205919 + timestamp: 1737454783637 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda sha256: 4855c51eedcde05f3d9666a0766050c7cbdff29b150d63c1adc4071637ba61d7 md5: f49b0da3b1e172263f4f1e2f261a490d @@ -12636,6 +17176,20 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 193577 timestamp: 1737454858212 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + sha256: 27501e9b3b5c6bfabb3068189fd40c650356a258e4a82b0cfe31c60f568dcb85 + md5: b7f2984724531d2233b77c89c54be594 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 196573 + timestamp: 1737455046063 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f md5: 250b2ee8777221153fd2de9c279a7efa @@ -12666,6 +17220,21 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 192148 timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + sha256: 58c41b86ff2dabcf9ccd9010973b5763ec28b14030f9e1d9b371d22b538bce73 + md5: 03a7926e244802f570f25401c25c13bc + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 194243 + timestamp: 1737454911892 - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda sha256: 6095e1d58c666f6a06c55338df09485eac34c76e43d92121d5786794e195aa4d md5: e474ba674d780f0fa3b979ae9e81ba91 @@ -12698,6 +17267,22 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 181734 timestamp: 1737455207230 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + sha256: 5b496c96e48f495de41525cb1b603d0147f2079f88a8cf061aaf9e17a2fe1992 + md5: d14f685b5d204b023c641b188a8d0d7c + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 182783 + timestamp: 1737455202579 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda sha256: e78fc8c500b96070359311082b4ebc5d66e52ddb2891861c728a247cf52892ba md5: eb719a63f26215bba3ee5b0227c6452b @@ -12732,6 +17317,23 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 379554 timestamp: 1743831426292 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + sha256: 6446721c43ba540c02ced4dde564f5a9a0131e40aa406e8af6313084c4a2024f + md5: c912a00e5cb59357ef55b7930a48cf48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 384549 + timestamp: 1749898593849 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda sha256: 9577a68dd2702b0ed969b79e92702935f1d0dc00368375b1da94003cdd12cdb8 md5: 3aeb333ef7ca17c4294ccf2a6ae49438 @@ -12764,6 +17366,22 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 365060 timestamp: 1743831517482 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + sha256: a97ec0b43ec20c6730dd4765d033eeef7370364467190899aa554db1be4cff02 + md5: 0dfe209a2803bf6c87f2bdbe92697c31 + depends: + - __osx >=10.13 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 369843 + timestamp: 1749898684229 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda sha256: 5f50272cbe00701a79d3b5f3aa14808b6f8b80a3ea636f99f4746f109f02030d md5: 461e2af0a7a77162309bda6f92a1a66c @@ -12798,6 +17416,23 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 364333 timestamp: 1743831518152 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + sha256: da722b8ee2785d764182c2d3b9007fb5ef8bc4096f5fc018fd3b3026719b1ee7 + md5: 2cacb246854e185506768b3f7ae23a69 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 363932 + timestamp: 1749899287142 - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda sha256: d917b120cb10b32d90d40fc2b6a612cf75a9298d159e11da3a8672a3474b4f93 md5: 0497becb33761fca9b8cfcb9f7278361 @@ -12832,36 +17467,50 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 363177 timestamp: 1743831815399 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_3.conda - sha256: 66d34e3b4881f856486d11914392c585713100ca547ccfc0947f3a4765c2c486 - md5: 6f445fb139c356f903746b2b91bbe786 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda + sha256: a5c2b81169250a6a6d292395c9f54aec3f13f6388b6c7b88d69451e96b2402bc + md5: 4db98bb029ca5432eb1c2ddbff5837a9 depends: - - libre2-11 2024.07.02 hba17884_3 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zeromq >=4.3.5,<4.3.6.0a0 license: BSD-3-Clause license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 370348 + timestamp: 1749898835643 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + sha256: 7a0b82cb162229e905f500f18e32118ef581e1fd182036f3298510b8e8663134 + md5: 2b4249747a9091608dbff2bd22afde44 + depends: + - libre2-11 2025.06.26 hba17884_0 + license: BSD-3-Clause purls: [] - size: 26811 - timestamp: 1741121137599 -- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2024.07.02-hf8a452e_3.conda - sha256: 291ebc1f3c6d479077399298c42c5e510e354664212cba74c04b9ab13ad811de - md5: 11dae9af12311eee952f3431282c822d + size: 27330 + timestamp: 1751053087063 +- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda + sha256: 362d3172f6074f37688a4aa6f5caa8b46ffb7552887d3dfe7eaef2039aca6441 + md5: 2dc6248cb8249c98bd88c51ff1c86e24 depends: - - libre2-11 2024.07.02 h08ce7b7_3 + - libre2-11 2025.06.26 hfc00f1c_0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 26925 - timestamp: 1741121237531 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_3.conda - sha256: 248af2869bf54f77f5b4c6e144b535bbc2a6d4c27228f4fb2ed689f8df9f071b - md5: d4e82bd66b71c29da35e1f634548e039 + size: 27456 + timestamp: 1751053203733 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda + sha256: d7c4f0144530c829bc9c39d1e17f31242a15f4e91c9d7d0f8dda58ab245988bb + md5: d519f1f98599719494472639406faffb depends: - - libre2-11 2024.07.02 hd41c47c_3 + - libre2-11 2025.06.26 hd41c47c_0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 26954 - timestamp: 1741121389739 + size: 27423 + timestamp: 1751053372858 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -12925,6 +17574,23 @@ packages: - pkg:pypi/requests?source=hash-mapping size: 58723 timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 + md5: f6082eae112814f1447b56a5e1f6ed05 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 59407 + timestamp: 1749498221996 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 md5: 36de09a8d3e5d5e6f4ee63af49e59706 @@ -12979,17 +17645,33 @@ packages: md5: ea8f79edf890d1f9b2f1bd6fbb11be1e depends: - python - - __glibc >=2.17,<3.0.a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 391950 + timestamp: 1747837859184 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + sha256: 2efdf436726331563221b41413cfa580df960c929f0e75619775cda880d59bd3 + md5: 109d190262b861bb608b7c977c6971ff + depends: + - python - libgcc >=13 - - python_abi 3.12.* *_cp312 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 391950 - timestamp: 1747837859184 + size: 391302 + timestamp: 1747837838085 - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda sha256: 87bab663373ff8b3461dbc73a963f86d3c4c4b442727c5efe89ba40d1d57e470 md5: 2071cf0f0fd57946d37b825b227f5b02 @@ -13020,6 +17702,21 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 370933 timestamp: 1747837775787 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda + sha256: 318f65abb743ee3f80e9b74bf0aee8f69134d9b97c218fc0c3ba8e9b07d8f170 + md5: c99c56b5536b1e367c57acd7a88082f9 + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 370871 + timestamp: 1747837744984 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda sha256: 8928c4cacc668db0c62dd9a11415319f6fa7f06d01360e5398264941c0ab404d md5: 3c969fae89e5832566890421a074eb92 @@ -13052,6 +17749,22 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 360032 timestamp: 1747837743255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda + sha256: 00c61b2054307fb60feaeb1d21515acb6ee917ff73cfc622fef55d4c24a32767 + md5: 1df95fc541f0881e89dc4a52bd53b9ee + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 360004 + timestamp: 1747837756479 - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda sha256: 3a76edb8f446351f36eb43a215e0df0b444f73b0f22453c0966611653b05c06f md5: 9cbe2af742a0fa8387caef089682a92f @@ -13088,12 +17801,30 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 252939 timestamp: 1747837730306 -- pypi: https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda + sha256: f9a4e4e57fb6b6f82a70f533edc5b2be1084770b6cd99913713ab856886da7d9 + md5: 16d91b61a62fa344b9c1200b13925fbd + depends: + - python + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 252641 + timestamp: 1747837734433 +- pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl name: scipy - version: 1.15.3 - sha256: 52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed + version: 1.16.0 + sha256: 79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe requires_dist: - - numpy>=1.23.5,<2.5 + - numpy>=1.25.2,<2.6 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -13105,11 +17836,11 @@ packages: - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.0,<2.1.1 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' - cython ; extra == 'test' - meson ; extra == 'test' - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<8.0.0 ; extra == 'doc' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' - intersphinx-registry ; extra == 'doc' - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - sphinx-copybutton ; extra == 'doc' @@ -13117,10 +17848,11 @@ packages: - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - - myst-nb ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' - pooch ; extra == 'doc' - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' - mypy==1.10.0 ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' @@ -13130,10 +17862,10 @@ packages: - rich-click ; extra == 'dev' - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' - requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py312ha707e6e_0.conda - sha256: b9faaa024b77a3678a988c5a490f02c4029c0d5903998b585100e05bc7d4ff36 - md5: 00b999c5f9d01fb633db819d79186bd4 + requires_python: '>=3.11' +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda + sha256: 75bee2b5cb27616bcbd700d42dacc06577b90f1f9e31dc7682f4244867982a78 + md5: 8c60fe574a5abab59cd365d32e279872 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -13143,62 +17875,61 @@ packages: - libgfortran5 >=13.3.0 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - numpy <2.5 - - numpy >=1.19,<3 - - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - numpy <2.6 + - numpy >=1.23,<3 + - numpy >=1.25.2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 17064784 - timestamp: 1739791925628 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py312hd04560d_0.conda - sha256: 4c34ef6a688c3ea99a11a9c32941133800f4e10ff5af0074998abed80392c75a - md5: cea880e674e00193c7fb915eea6c8200 + size: 16727241 + timestamp: 1751148531084 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda + sha256: 6b85b8831917595fb06ae7e6200446dd1d9da5c9103838058408fe0e4c130485 + md5: ffba48a156734dfa47fabea9b59b7fa1 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - - libgfortran >=5 - - libgfortran5 >=13.2.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - libgfortran5 >=14.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.5 - - numpy >=1.19,<3 - - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - numpy <2.6 + - numpy >=1.23,<3 + - numpy >=1.25.2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 15547115 - timestamp: 1739791861956 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py312h99a188d_0.conda - sha256: af61f6e29a0d3d4c66699a35b19ce6849d6e0fa15017d7a9ef6268cc1c4e1264 - md5: b1d324bf5018b451152bbdc4ffd3d378 + size: 15306838 + timestamp: 1751149135933 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda + sha256: b9ea57c3e26b1c5198c883db971463124fe9cda2da3d42954c059fe48b205151 + md5: d8334c85c9e8f1b55bee0c6526f7eb33 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - - libgfortran >=5 - - libgfortran5 >=13.2.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - libgfortran5 >=14.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.5 - - numpy >=1.19,<3 - - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - numpy <2.6 + - numpy >=1.23,<3 + - numpy >=1.25.2 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 14394729 - timestamp: 1739792424558 + size: 14004890 + timestamp: 1751149424601 - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 md5: 938c8de6b9de091997145b3bf25cdbf9 @@ -13248,6 +17979,77 @@ packages: - pkg:pypi/setuptools?source=hash-mapping size: 748621 timestamp: 1747807014292 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 + md5: 4de79c071274a53dcaf2a8c749d1499e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=hash-mapping + size: 748788 + timestamp: 1748804951958 +- pypi: https://files.pythonhosted.org/packages/01/85/b52f24859237b4e9d523d5655796d911ba3d46e242eb1959c45b6af5aedd/simplejson-3.20.1-cp311-cp311-win_amd64.whl + name: simplejson + version: 3.20.1 + sha256: 896a6c04d7861d507d800da7642479c3547060bf97419d9ef73d98ced8258766 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl + name: simplejson + version: 3.20.1 + sha256: 03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 88a7baa8211089b9e58d78fbc1b0b322103f3f3d459ff16f03a36cece0d0fcf0 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + name: simplejson + version: 3.20.1 + sha256: 627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl + name: simplejson + version: 3.20.1 + sha256: 299b1007b8101d50d95bc0db1bf5c38dc372e85b504cf77f596462083ee77e3f + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl + name: simplejson + version: 3.20.1 + sha256: 1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: 455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49 + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: simplejson + version: 3.20.1 + sha256: d492ed8e92f3a9f9be829205f44b1d0a89af6582f0cf43e0d129fa477b93fe0c + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + name: simplejson + version: 3.20.1 + sha256: 1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb + requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -13417,6 +18219,17 @@ packages: - pkg:pypi/stack-data?source=hash-mapping size: 26988 timestamp: 1733569565672 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624 + md5: 460eba7851277ec1fd80a1a24080787a + depends: + - kernel-headers_linux-64 3.10.0 he073ed8_18 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 + license_family: GPL + purls: [] + size: 15166921 + timestamp: 1735290488259 - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl name: tabcompleter version: 1.4.0 @@ -13448,17 +18261,6 @@ packages: purls: [] size: 151460 timestamp: 1732982860332 -- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - sha256: fd9ab8829947a6a405d1204904776a3b206323d78b29d99ae8b60532c43d6844 - md5: 5d99943f2ae3cc69e1ada12ce9d4d701 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/tenacity?source=hash-mapping - size: 25364 - timestamp: 1743640859268 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -13524,6 +18326,18 @@ packages: purls: [] size: 3318875 timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 + md5: a0116df4f4ed05c303811a837d5b39d8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3285204 + timestamp: 1748387766691 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 md5: bf830ba5afc507c6232d4ef0fb1a882d @@ -13534,6 +18348,17 @@ packages: purls: [] size: 3270220 timestamp: 1699202389792 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc + md5: 9864891a6946c2fe037c02fca7392ab4 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3259809 + timestamp: 1748387843735 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b @@ -13544,6 +18369,29 @@ packages: purls: [] size: 3145523 timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e + md5: 7362396c170252e7b7b0c8fb37fe9c78 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3125538 + timestamp: 1748388189063 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 + md5: ebd0e761de9aa879a51d22cc721bd095 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + purls: [] + size: 3466348 + timestamp: 1748388121356 - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 md5: fc048363eb8f03cd1737600a5d08aafe @@ -13606,6 +18454,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849653 timestamp: 1747384561578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + sha256: 282c9c3380217119c779fc4c432b0e4e1e42e9a6265bfe36b6f17f6b5d4e6614 + md5: e9434a5155db25c38ade26f71a2f5a48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 873269 + timestamp: 1748003477089 - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda sha256: 5923cc6ffbef6da367c30d63d82e6f751b9503d5eef6d6488e92eab6d907a476 md5: 5776f9693ac1c592a26a2b8fb7220e4d @@ -13632,6 +18494,19 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849286 timestamp: 1747384668864 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + sha256: 16dc65432ce637d64475c4f02233be2d905edac9c1dba25419bfd5b8055d52b4 + md5: 7554d07cbe64f41c73a403e99bccf3c6 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 874905 + timestamp: 1748003585372 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda sha256: 675c378b691d33a09f70ff684493c2395821c0d2934b37bea8ad9f260461a048 md5: ff86e96e324c0e08a55aee1111d93582 @@ -13660,6 +18535,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849071 timestamp: 1747384649681 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + sha256: 29c623cfb1f9ea7c1d865cf5f52ae6faa6497ceddbe7841ae27901a21f8cf79f + md5: 1ab3bef3e9aa0bba9eee2dfbedab1dba + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 874352 + timestamp: 1748003547444 - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda sha256: f727706508f0d4e18ae760478ec2488ac83f3df0687bf7a8acbbefae8e7e1a4e md5: b022fa1dba1d3a72c5695501d017c0c8 @@ -13690,6 +18579,21 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 853373 timestamp: 1747384811468 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda + sha256: 4d5511a98b3450157f40479eb3d00bbf3c4741c97149e2914258f71715c5cb47 + md5: a6a7c54e5dfc3bfad645e714cc14854c + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 878044 + timestamp: 1748003914685 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -13731,6 +18635,16 @@ packages: purls: [] size: 89900 timestamp: 1744302253997 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 + md5: a1cdd40fc962e2f7944bc19e01c7e584 + depends: + - typing_extensions ==4.14.0 pyhe01879c_0 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 90310 + timestamp: 1748959427551 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 md5: 83fc6ae00127671e301c9f44254c31b8 @@ -13743,6 +18657,18 @@ packages: - pkg:pypi/typing-extensions?source=compressed-mapping size: 52189 timestamp: 1744302253997 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c + md5: 2adcd9bb86f656d3d43bf84af59a1faf + depends: + - python >=3.9 + - python + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 50978 + timestamp: 1748959427551 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -13802,6 +18728,22 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 13904 timestamp: 1725784191021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7 + md5: 5bcffe10a500755da4a71cc0fb62a420 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 13916 + timestamp: 1725784177558 - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda sha256: d1aaec2edf78eeb79407d907679a78ecc0c97f7390046a45d561e22b348de553 md5: 1b576e5588d90b82f96e3e21490b085d @@ -13832,6 +18774,21 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 13031 timestamp: 1725784199719 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + sha256: 6abf14f984a1fc3641908cb7e96ba8f2ce56e6f81069852b384e1755f8f5225e + md5: 6185cafe9e489071688304666923c2ad + depends: + - __osx >=10.13 + - cffi + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 13126 + timestamp: 1725784265187 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda sha256: f48499c8f639265c53dc794ff2f2d0aa163845eb31841c226ec172f64861654d md5: d5fe38d502e3d758c8f0fed8ba9ea652 @@ -13864,6 +18821,22 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 13605 timestamp: 1725784243533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + sha256: 482eac475928c031948790647ae10c2cb1d4a779c2e8f35f5fd1925561b13203 + md5: 8ddba23e26957f0afe5fc9236c73124a + depends: + - __osx >=11.0 + - cffi + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 13689 + timestamp: 1725784235751 - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda sha256: 7624abb32c075e234dad59acb5b580006adfef348cd1aefcbe0be31546aa5b73 md5: 938a78ac20d6ed625b8d76015c6be88d @@ -13896,6 +18869,22 @@ packages: - pkg:pypi/ukkonen?source=hash-mapping size: 17213 timestamp: 1725784449622 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0 + md5: 97337494471e4265a203327f9a194234 + depends: + - cffi + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ukkonen?source=hash-mapping + size: 17210 + timestamp: 1725784604368 - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb @@ -13922,6 +18911,21 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 100791 timestamp: 1744323705540 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 + md5: 436c165519e140cb08d246a4472a9d6a + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 101735 + timestamp: 1750271478254 - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 md5: d3f0381e38093bde620a8d85f266ae55 @@ -13934,6 +18938,18 @@ packages: purls: [] size: 17893 timestamp: 1743195261486 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 + md5: 18b6bf6f878501547786f7bf8052a34d + depends: + - vc14_runtime >=14.44.35208 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17914 + timestamp: 1750371462857 - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 md5: 91651a36d31aa20c7ba36299fb7068f4 @@ -13946,6 +18962,18 @@ packages: purls: [] size: 750733 timestamp: 1743195092905 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 + md5: 14d65350d3f5c8ff163dc4f76d6e2830 + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.44.35208.* *_26 + license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime + license_family: Proprietary + purls: [] + size: 756109 + timestamp: 1750371459116 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 md5: c0600c1b374efa7a1ff444befee108ca @@ -13970,6 +18998,16 @@ packages: purls: [] size: 17873 timestamp: 1743195097269 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b + md5: 312f3a0a6b3c5908e79ce24002411e32 + depends: + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17888 + timestamp: 1750371463202 - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl name: wadler-lindig version: 0.1.6 @@ -13986,6 +19024,22 @@ packages: - mkdocstrings[python]==0.28.3 ; extra == 'docs' - pymdown-extensions==10.14.3 ; extra == 'docs' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + name: wadler-lindig + version: 0.1.7 + sha256: e3ec83835570fd0a9509f969162aeb9c65618f998b1f42918cfc8d45122fe953 + requires_dist: + - numpy ; extra == 'dev' + - pre-commit ; extra == 'dev' + - pytest ; extra == 'dev' + - hippogriffe==0.1.0 ; extra == 'docs' + - mkdocs-include-exclude-files==0.1.0 ; extra == 'docs' + - mkdocs-ipynb==0.1.0 ; extra == 'docs' + - mkdocs-material==9.6.7 ; extra == 'docs' + - mkdocs==1.6.1 ; extra == 'docs' + - mkdocstrings[python]==0.28.3 ; extra == 'docs' + - pymdown-extensions==10.14.3 ; extra == 'docs' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda sha256: 73d809ec8056c2f08e077f9d779d7f4e4c2b625881cad6af303c33dc1562ea01 md5: a37843723437ba75f42c9270ffe800b1 @@ -14085,6 +19139,18 @@ packages: purls: [] size: 392870 timestamp: 1745806998840 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + sha256: a5d4af601f71805ec67403406e147c48d6bad7aaeae92b0622b7e2396842d3fe + md5: 397a013c2dc5145a70737871aaa87e98 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.12,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 392406 + timestamp: 1749375847832 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -14484,6 +19550,17 @@ packages: - pkg:pypi/zipp?source=hash-mapping size: 21809 timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad + md5: df5e78d904988eb55042c0c97446079f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 22963 + timestamp: 1749421737203 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda sha256: 76d28240cc9fa0c3cb2cde750ecaf98716ce397afaf1ce90f8d18f5f43a122f1 md5: ca02de88df1cc3cfc8f24766ff50cb3c @@ -14514,6 +19591,21 @@ packages: - pkg:pypi/zstandard?source=compressed-mapping size: 732224 timestamp: 1745869780524 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + sha256: ea9c542ef78c9e3add38bf1032e8ca5d18703114db353f6fca5c498f923f8ab8 + md5: a026ac7917310da90a98eac2c782723c + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 736909 + timestamp: 1745869790689 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda sha256: 72ab78bbde3396ffb2b81a2513f48a27c128ddc4e06a8d3dbcfa790479deab40 md5: 2712198232a6fcc673f9eef62fce85d5 @@ -14542,6 +19634,20 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 690063 timestamp: 1745869852235 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + sha256: ab53cc54d0af1a8d85a50510209595d09c584101668f35c0fd3c4fbd59c4ece2 + md5: 3babd14037340de278106b258fdb28d9 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 696588 + timestamp: 1745869877231 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda sha256: 7c7f7e24ff49dc6ecb804373bedca663d3c24d57cac55524be8c83da90313928 md5: 9fd87c9aae7db68b4a3427886b5f3eea @@ -14572,6 +19678,21 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 532173 timestamp: 1745870087418 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + sha256: 70ed0c931f9cfad3e3a75a1faf557c5fc5bf638675c6afa2fb8673e4f88fb2c5 + md5: 1f465c71f83bd92cfe9df941437dcd7c + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 536612 + timestamp: 1745870248616 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda sha256: aaae40057eac5b5996db4e6b3d8eb00d38455e67571e796135d29702a19736bd md5: 8355ec073f73581e29adf77c49096aed @@ -14604,6 +19725,22 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 444685 timestamp: 1745870132644 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda + sha256: b7bfe264fe3810b1abfe7f80c0f21f470d7cc730ada7ce3b3d08a90cb871999c + md5: b4d967b4d695a2ba8554738b3649d754 + depends: + - cffi >=1.11 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 449871 + timestamp: 1745870298072 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 diff --git a/pyproject.toml b/pyproject.toml index 456079c025..3a61a126ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ "numpy-groupies", "pandas", "openpyxl", - "plotly", + "plotly>=6.2", "optree", "pygments", "pygraphviz", @@ -103,15 +103,14 @@ platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] # -------------------------------------------------------------------------------------- [tool.pixi.dependencies] -python = ">=3.11,<3.13" +python = ">=3.11,<3.14" pre-commit = "*" -pandas = ">=2.1" +pandas = ">=2.2" numpy_groupies = "*" numpydoc = "*" openpyxl = "*" ipywidgets = "*" jupyterlab = "*" -plotly = ">=5.24,<6" pygments = "*" pygraphviz = "*" pyyaml = "*" @@ -128,15 +127,11 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "lexsort"} +dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} jaxtyping = "*" +kaleido = ">=1.0" pdbp = "*" -[tool.pixi.target.unix.pypi-dependencies] -kaleido = "*" - -[tool.pixi.target.win-64.pypi-dependencies] -kaleido = ">=0.1.0.post1,<=0.1.0.post1" # Features # -------------------------------------------------------------------------------------- @@ -147,16 +142,28 @@ python = "3.11.*" [tool.pixi.feature.py312.dependencies] python = "3.12.*" +[tool.pixi.feature.py313.dependencies] +python = "3.13.*" + [tool.pixi.feature.jax.target.unix.dependencies] -jax = ">=0.4.20" -jaxlib = ">=0.4.20" +jax = ">=0.6" +jaxlib = ">=0.6" -[tool.pixi.feature.jax.pypi-dependencies] -jax-datetime = { git = "https://github.com/google/jax-datetime.git" } +# [tool.pixi.feature.jax.pypi-dependencies] +# jax-datetime = { git = "https://github.com/google/jax-datetime.git" } [tool.pixi.feature.jax.target.win-64.pypi-dependencies] -jax = { version = ">=0.4.20", extras = ["cpu"] } -jaxlib = ">=0.4.20" +jax = { version = ">=0.6", extras = ["cpu"] } +jaxlib = ">=0.6" + +[tool.pixi.feature.cuda] +platforms = ["linux-64"] +system-requirements = {cuda = "12"} + +[tool.pixi.feature.cuda.target.linux-64.dependencies] +jax = ">=0.6" +jaxlib = { version = ">=0.6", build = "cuda12*" } +cuda-nvcc = "~=12" [tool.pixi.feature.mypy.pypi-dependencies] mypy = "~=1.16" @@ -172,6 +179,9 @@ tests = "pytest" [tool.pixi.feature.jax.tasks] tests-jax = "pytest --backend=jax" +[tool.pixi.feature.cuda.tasks] +tests-cuda = "pytest --backend=jax" + [tool.pixi.feature.mypy.tasks] mypy = "mypy --ignore-missing-imports" @@ -182,8 +192,9 @@ mypy = "mypy --ignore-missing-imports" mypy = ["mypy"] py311 = ["test", "py311"] py312 = ["test", "py312"] -py312-jax = ["py312", "test", "jax"] - +py313 = ["test", "py313"] +py313-jax = ["py313", "test", "jax"] +py313-cuda = ["py313", "test", "cuda"] # ====================================================================================== # Ruff configuration @@ -311,7 +322,8 @@ markers = [ "unit: Flag for unit tests which target mainly a single function.", "integration: Flag for integration tests which may comprise of multiple unit tests.", "end_to_end: Flag for tests that cover the whole program.", - "skipif_jax: skip test if backend is jax" + "skipif_jax: skip test if backend is jax", + "skipif_numpy: skip test if backend is numpy" ] norecursedirs = ["docs"] testpaths = [ diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index fd54a1658f..d86d980e77 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -130,19 +130,22 @@ def in_anderer_bg_als_kindergeldempfänger( p_id: IntColumn, kindergeld__p_id_empfänger: IntColumn, bg_id: IntColumn, - xnp: ModuleType, # Will become necessary for Jax. # noqa: ARG001 + xnp: ModuleType, ) -> BoolColumn: """True if the person is in a different Bedarfsgemeinschaft than the Kindergeldempfänger of that person. """ - # Create a dictionary to map p_id to bg_id - p_id_to_bg_id = dict(zip(p_id, bg_id, strict=False)) + # Get the array index for all p_ids of empfängers + p_id_empfänger_loc = kindergeld__p_id_empfänger + for i in range(p_id.shape[0]): + p_id_empfänger_loc = xnp.where( + kindergeld__p_id_empfänger == p_id[i], + i, + p_id_empfänger_loc, + ) # Map each kindergeld__p_id_empfänger to its corresponding bg_id - empf_bg_id = [ - p_id_to_bg_id[empfänger_id] if empfänger_id >= 0 else -1 - for empfänger_id in kindergeld__p_id_empfänger - ] + empf_bg_id = bg_id[p_id_empfänger_loc] # Compare bg_id array with the mapped bg_ids of kindergeld__p_id_empfänger - return bg_id != empf_bg_id + return empf_bg_id != bg_id diff --git a/src/_gettsim/erziehungsgeld/formel.yaml b/src/_gettsim/erziehungsgeld/formel.yaml index a18d705b8d..42cf632801 100644 --- a/src/_gettsim/erziehungsgeld/formel.yaml +++ b/src/_gettsim/erziehungsgeld/formel.yaml @@ -15,7 +15,7 @@ satz: https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 regelsatz: 300 budgetsatz: 450 - 2008-12-31: + 2009-01-01: note: Erziehungsgeld revoked and replaced by Elterngeld. parameter_einkommensgrenze: name: @@ -50,7 +50,7 @@ parameter_einkommensgrenze: reduziert_paar: regelsatz: 16500 budgetsatz: 16500 - 2008-12-31: + 2009-01-01: note: Erziehungsgeld revoked and replaced by Elterngeld. aufschlag_einkommen: name: @@ -67,7 +67,7 @@ aufschlag_einkommen: note: >- https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 value: 3140 - 2008-12-31: + 2009-01-01: note: Erziehungsgeld revoked and replaced by Elterngeld. abschlagsfaktor: name: @@ -92,7 +92,7 @@ abschlagsfaktor: note: >- https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 value: 0.052 - 2008-12-31: + 2009-01-01: note: Erziehungsgeld revoked and replaced by Elterngeld. pauschaler_abzug_vom_einkommen: name: @@ -113,5 +113,5 @@ pauschaler_abzug_vom_einkommen: note: >- https://www.bgbl.de/xaver/bgbl/start.xav?startbk=Bundesanzeiger_BGBl&jumpTo=bgbl104s0206.pdf#__bgbl__%2F%2F*%5B%40attr_id%3D%27bgbl104s0206.pdf%27%5D__1685621730529 value: 0.76 - 2008-12-31: + 2009-01-01: note: Erziehungsgeld revoked and replaced by Elterngeld. diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 1817b200b9..7832197bf9 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -1,28 +1,8 @@ from __future__ import annotations -import datetime - -import numpy - from ttsim.tt_dag_elements import policy_function -@policy_function() -def geburtsdatum( - geburtsjahr: int, - geburtsmonat: int, - geburtstag: int, -) -> numpy.datetime64: - """Create date of birth datetime variable.""" - return numpy.datetime64( - datetime.datetime( # noqa: DTZ001 - geburtsjahr, - geburtsmonat, - geburtstag, - ), - ).astype("datetime64[D]") - - @policy_function() def alter_bis_24(alter: int) -> bool: """Age is 24 years at most. diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index 08318c1e87..702bd01c9b 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -16,12 +16,14 @@ if TYPE_CHECKING: from types import ModuleType + from ttsim.interface_dag_elements.typing import FloatColumn + def basis_für_klassen_5_6( - einkommen_y: float, + einkommen_y: FloatColumn, parameter_einkommensteuertarif: PiecewisePolynomialParamValue, xnp: ModuleType, -) -> float: +) -> FloatColumn: """Calculate base for Lohnsteuer for steuerklasse 5 and 6, by applying obtaining twice the difference between applying the factors 1.25 and 0.75 to the lohnsteuer payment. @@ -58,21 +60,6 @@ def parameter_max_lohnsteuer_klasse_5_6( """Create paramter values for the piecewise polynomial that represents the maximum amount of Lohnsteuer that can be paid on incomes higher than the income thresholds for Steuerklasse 5 and 6. """ - lohnsteuer_bis_erste_grenze = basis_für_klassen_5_6( - einkommensgrenzwerte_steuerklassen_5_6[1], - einkommensteuer__parameter_einkommensteuertarif, - xnp=xnp, - ) - lohnsteuer_bis_zweite_grenze = basis_für_klassen_5_6( - einkommensgrenzwerte_steuerklassen_5_6[2], - einkommensteuer__parameter_einkommensteuertarif, - xnp=xnp, - ) - lohnsteuer_bis_dritte_grenze = basis_für_klassen_5_6( - einkommensgrenzwerte_steuerklassen_5_6[3], - einkommensteuer__parameter_einkommensteuertarif, - xnp=xnp, - ) thresholds = numpy.asarray( [ 0, @@ -84,9 +71,21 @@ def parameter_max_lohnsteuer_klasse_5_6( intercepts = numpy.asarray( [ 0, - lohnsteuer_bis_erste_grenze, - lohnsteuer_bis_zweite_grenze, - lohnsteuer_bis_dritte_grenze, + basis_für_klassen_5_6( + einkommen_y=thresholds[1], + parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, + ).item(), + basis_für_klassen_5_6( + einkommen_y=thresholds[2], + parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, + ).item(), + basis_für_klassen_5_6( + einkommen_y=thresholds[3], + parameter_einkommensteuertarif=einkommensteuer__parameter_einkommensteuertarif, + xnp=xnp, + ).item(), ], ) rates = numpy.expand_dims( @@ -95,14 +94,12 @@ def parameter_max_lohnsteuer_klasse_5_6( ], axis=0, ) - parameter_max_lohnsteuer_klasse_5_6 = PiecewisePolynomialParamValue( + return PiecewisePolynomialParamValue( thresholds=xnp.asarray(thresholds), intercepts=xnp.asarray(intercepts), rates=xnp.asarray(rates), ) - return parameter_max_lohnsteuer_klasse_5_6 - @policy_function(start_date="2015-01-01") def basistarif( @@ -170,7 +167,6 @@ def betrag_y( out = splittingtarif else: out = tarif_klassen_5_und_6 - return max(out, 0.0) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index 457fc00409..40a73bb6a1 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -23,7 +23,7 @@ @policy_function(end_date="1998-07-31", leaf_name="betrag_m") def betrag_m_not_implemented() -> float: """Calculate individual unemployment benefit.""" - raise NotImplementedError("Not implemented yet.") + raise NotImplementedError("Arbeitslosengeld before August 1998 is not implemented.") @policy_function(start_date="1998-08-01") @@ -50,9 +50,9 @@ def betrag_m( @policy_function() def monate_verbleibender_anspruchsdauer( alter: int, - monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: float, + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: int, mindestversicherungszeit_erreicht: bool, - monate_durchgängigen_bezugs_von_arbeitslosengeld: float, + monate_durchgängigen_bezugs_von_arbeitslosengeld: int, anspruchsdauer_nach_alter: ConsecutiveInt1dLookupTableParamValue, anspruchsdauer_nach_versicherungspflichtigen_monaten: ConsecutiveInt1dLookupTableParamValue, ) -> int: diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index 23f4c6c050..e12086ce85 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -16,10 +16,10 @@ def arbeitssuchend() -> bool: @policy_input() -def monate_durchgängigen_bezugs_von_arbeitslosengeld() -> float: +def monate_durchgängigen_bezugs_von_arbeitslosengeld() -> int: """Number of months the individual already receives Arbeitslosengeld without interruption.""" @policy_input() -def monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren() -> float: +def monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren() -> int: """Months of subjection to compulsory insurance in the 5 years before claiming unemployment.""" diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index aeaf135b13..e171f118ad 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -14,7 +14,7 @@ def beitragssatz_arbeitnehmer(beitragssatz: float) -> float: return beitragssatz / 2 -@param_function(end_date="2005-06-30") +@param_function(end_date="2005-12-31") def beitragssatz_arbeitnehmer_jahresanfang(beitragssatz_jahresanfang: float) -> float: """Employee's health insurance contribution rate for the beginning of the year until June 2005. @@ -45,7 +45,7 @@ def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( @param_function( - start_date="2005-07-01", + start_date="2006-01-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitnehmer_jahresanfang", ) @@ -54,9 +54,7 @@ def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbe ) -> float: """Employee's health insurance contribution rate at the beginning of the year. - From July 2005 until December 2008. The contribution rates consists of a general - rate (split equally between employers and employees, differs across sickness funds) - and a top-up rate, which is fully paid by employees. + Starting in 2006, the "Jahresanfang" contribution rate includes the Sonderbeitrag. """ return ( parameter_beitragssatz_jahresanfang["mean_allgemein"] / 2 @@ -220,7 +218,22 @@ def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( @param_function( - start_date="2005-07-01", + start_date="2005-01-01", + end_date="2005-12-31", + leaf_name="beitragssatz_arbeitgeber_jahresanfang", +) +def beitragssatz_arbeitgeber_jahresanfang_2005( + beitragssatz_jahresanfang: float, +) -> float: + """Employer's health insurance contribution rate at the begging of the year. + + Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. + """ + return beitragssatz_jahresanfang / 2 + + +@param_function( + start_date="2006-01-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitgeber_jahresanfang", ) diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index 48e76af71e..da43c958a0 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -230,6 +230,7 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( langjährig__grundsätzlich_anspruchsberechtigt: bool, langjährig__altersgrenze: float, regelaltersrente__altersgrenze: float, + xnp: ModuleType, ) -> float: """Reference age for deduction calculation in case of early retirement (Zugangsfaktor). @@ -243,32 +244,38 @@ def referenzalter_abschlag_mit_arbeitslosigkeit_frauen( and für_frauen__grundsätzlich_anspruchsberechtigt and wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ): - out = min( - [ - für_frauen__altersgrenze, - langjährig__altersgrenze, - wegen_arbeitslosigkeit__altersgrenze, - ], + out = xnp.min( + xnp.asarray( + [ + für_frauen__altersgrenze, + langjährig__altersgrenze, + wegen_arbeitslosigkeit__altersgrenze, + ] + ), ) elif ( langjährig__grundsätzlich_anspruchsberechtigt and für_frauen__grundsätzlich_anspruchsberechtigt ): - out = min( - [ - für_frauen__altersgrenze, - langjährig__altersgrenze, - ], + out = xnp.min( + xnp.asarray( + [ + für_frauen__altersgrenze, + langjährig__altersgrenze, + ] + ), ) elif ( langjährig__grundsätzlich_anspruchsberechtigt and wegen_arbeitslosigkeit__grundsätzlich_anspruchsberechtigt ): - out = min( - [ - langjährig__altersgrenze, - wegen_arbeitslosigkeit__altersgrenze, - ], + out = xnp.min( + xnp.asarray( + [ + langjährig__altersgrenze, + wegen_arbeitslosigkeit__altersgrenze, + ] + ), ) elif langjährig__grundsätzlich_anspruchsberechtigt: out = langjährig__altersgrenze diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml index 955d6d50e6..a04e564df8 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml +++ b/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml @@ -388,8 +388,7 @@ rentenwert: Entgeltpunkt. unit: Euros reference_period: null - type: dict - access_different_date: vorjahr + type: scalar 2023-07-01: value: 37.60 2024-01-07: diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index ed3cbd2db2..b9e43245c7 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -373,9 +373,8 @@ def anteil_entgeltpunkte_ost( ) -> float: """Proportion of Entgeltpunkte accumulated in East Germany.""" if ( - sozialversicherung__rente__entgeltpunkte_west - == sozialversicherung__rente__entgeltpunkte_ost - == 0.0 + sozialversicherung__rente__entgeltpunkte_west == 0 + and sozialversicherung__rente__entgeltpunkte_ost == 0 ): out = 0.0 else: diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py new file mode 100644 index 0000000000..00bf926296 --- /dev/null +++ b/src/_gettsim_tests/test_jittability.py @@ -0,0 +1,97 @@ +from __future__ import annotations + +import contextlib +import datetime +import inspect +from functools import lru_cache +from pathlib import Path +from typing import TYPE_CHECKING, Literal + +import dags.tree as dt +import pytest +from dags import get_free_arguments + +from ttsim import main, output +from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + QNameSpecializedEnvironment2, + ) + +GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" + + +def get_orig_gettsim_objects() -> dict[ + str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs +]: + out = main( + orig_policy_objects={"root": GETTSIM_ROOT}, + output=output.Names( + [ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ] + ), + ) + return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} + + +def get_orig_gettsim_column_functions() -> list[ColumnFunction]: + orig = get_orig_gettsim_objects()["column_objects_and_param_functions"] + return [(tp, cf) for tp, cf in orig.items() if isinstance(cf, ColumnFunction)] + + +@lru_cache(maxsize=100) +def cached_specialized_environment( + date: datetime.date, + root: Path, + backend: Literal["numpy", "jax"], +) -> QNameSpecializedEnvironment2: + return main( + date=date, + orig_policy_objects={"root": root}, + backend=backend, + fail_and_warn=False, + output=output.Name( + ("specialized_environment", "with_partialled_params_and_scalars") + ), + ) + + +@pytest.mark.skipif_numpy +@pytest.mark.parametrize( + "tree_path, fun", + get_orig_gettsim_column_functions(), + ids=[str(x[0]) for x in get_orig_gettsim_column_functions()], +) +def test_jittable(tree_path, fun, backend, xnp): + today = datetime.date.today() # noqa: DTZ011 + date = min(fun.end_date, today) + qname = dt.qname_from_tree_path(tree_path[:-2] + (fun.leaf_name,)) + env = {qname: cached_specialized_environment(date, GETTSIM_ROOT, backend)[qname]} + + processed_data = {} + for arg_name in get_free_arguments(env[qname]): + arg = inspect.signature(env[qname]).parameters[arg_name] + if "FloatColumn" in arg.annotation: + processed_data[arg_name] = xnp.zeros(1, dtype=float) + elif "IntColumn" in arg.annotation: + processed_data[arg_name] = xnp.zeros(1, dtype=int) + elif "BoolColumn" in arg.annotation: + processed_data[arg_name] = xnp.zeros(1, dtype=bool) + else: + raise ValueError(f"Unknown column type: {arg.annotation}") + + with contextlib.suppress(NotImplementedError): + main( + date=date, + specialized_environment={"with_partialled_params_and_scalars": env}, + processed_data=processed_data, + targets={"qname": [qname]}, + backend=backend, + output=output.Name(("raw_results", "columns")), + fail_and_warn=False, + ) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 43e15fcc31..bb76279bcd 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -93,11 +93,18 @@ def main( output_qnames=output_qnames["names"], ) + # Not strictly necessary, but helps with debugging. + dag = dags.create_dag( + functions=functions, + targets=output_qnames["names"], + ) + def lexsort_key(x: str) -> int: return 0 if x.startswith("fail_if") else 1 if output_qnames["name"]: f = dags.concatenate_functions( + dag=dag, functions=functions, targets=output_qnames["name"], enforce_signature=False, @@ -106,6 +113,7 @@ def lexsort_key(x: str) -> int: ) else: f = dags.concatenate_functions( + dag=dag, functions=functions, targets=output_qnames["names"], return_type="dict", diff --git a/src/ttsim/interface_dag_elements/backend.py b/src/ttsim/interface_dag_elements/backend.py index 69f567b894..51b6480be4 100644 --- a/src/ttsim/interface_dag_elements/backend.py +++ b/src/ttsim/interface_dag_elements/backend.py @@ -41,7 +41,7 @@ def dnp(backend: Literal["numpy", "jax"]) -> ModuleType: if backend == "numpy": dnp = numpy elif backend == "jax": - import jax_datetime + # import jax_datetime # noqa: ERA001 - dnp = jax_datetime + dnp = numpy # jax_datetime return dnp diff --git a/src/ttsim/interface_dag_elements/results.py b/src/ttsim/interface_dag_elements/results.py index d56cdf7376..41a92771cf 100644 --- a/src/ttsim/interface_dag_elements/results.py +++ b/src/ttsim/interface_dag_elements/results.py @@ -72,7 +72,7 @@ def df_with_nested_columns( tree: NestedData, input_data__flat: FlatData, ) -> pd.DataFrame: - """The results DataFrame with mapped column names. + """The results DataFrame with nested column names corresponding to tree paths.. Args: tree: @@ -84,7 +84,7 @@ def df_with_nested_columns( Returns ------- - A DataFrame. + A DataFrame with a hierarchical index in the column dimension. """ return nested_data_to_df_with_nested_columns( nested_data_to_convert=tree, diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index 249679fd84..ac761f90c2 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -191,7 +191,8 @@ def with_processed_params_and_scalars( if processed_data: all_nodes["num_segments"] = len(next(iter(processed_data.values()))) else: - all_nodes["num_segments"] = 0 + # Leave at a recognisable value; just used in jittability tests. + all_nodes["num_segments"] = 11111 params = {k: v for k, v in all_nodes.items() if isinstance(v, ParamObject)} scalars = { diff --git a/src/ttsim/params-schema.json b/src/ttsim/params-schema.json index e3b302fa9f..0e5153b8f4 100644 --- a/src/ttsim/params-schema.json +++ b/src/ttsim/params-schema.json @@ -58,11 +58,7 @@ "type": ["string", "null"], "enum": ["Year", "Quarter", "Month", "Week", "Day", "Hour", null] }, - "add_jahresanfang": {"type": "boolean"}, - "access_different_date": { - "type": "string", - "enum": ["vorjahr", "jahresanfang"] - } + "add_jahresanfang": {"type": "boolean"} }, "patternProperties": { "^(19|20)[0-9]{2}-(0[1-9]|1[0-2])-[0-3][0-9]$": { diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index b49863da8f..4915ada4ce 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -510,8 +510,7 @@ def _plot_dag( return go.Figure( data=[*edge_traces, node_trace], layout=go.Layout( - title=title, - titlefont_size=16, + title={"text": title, "font": {"size": 16}}, showlegend=False, hovermode="closest", margin={"b": 40, "l": 40, "r": 40, "t": 60}, diff --git a/src/ttsim/tt_dag_elements/aggregation_jax.py b/src/ttsim/tt_dag_elements/aggregation_jax.py index 6163054010..ff0566fea0 100644 --- a/src/ttsim/tt_dag_elements/aggregation_jax.py +++ b/src/ttsim/tt_dag_elements/aggregation_jax.py @@ -14,7 +14,7 @@ def grouped_count(group_id: IntColumn, num_segments: int) -> jnp.ndarray: out_grouped = segment_sum( - data=jnp.ones(len(group_id)), + data=jnp.ones(len(group_id), dtype=jnp.int32), segment_ids=group_id, num_segments=num_segments, ) diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py index 6363e19b1f..d3553f5c37 100644 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -172,7 +172,7 @@ def get_consecutive_int_1d_lookup_table_param_value( ) return ConsecutiveInt1dLookupTableParamValue( - base_to_subtract=min(lookup_keys), + base_to_subtract=min(lookup_keys).item(), values_to_look_up=xnp.asarray([raw[k] for k in lookup_keys]), ) @@ -183,7 +183,7 @@ def get_consecutive_int_2d_lookup_table_param_value( ) -> ConsecutiveInt2dLookupTableParamValue: """Get the parameters for a 2-dimensional lookup table.""" lookup_keys_rows = xnp.asarray(sorted(raw.keys())) - lookup_keys_cols = xnp.asarray(sorted(raw[lookup_keys_rows[0]].keys())) + lookup_keys_cols = xnp.asarray(sorted(raw[lookup_keys_rows[0].item()].keys())) for col_value in raw.values(): lookup_keys_this_col = xnp.asarray(sorted(col_value.keys())) assert (lookup_keys_cols == lookup_keys_this_col).all(), ( @@ -195,11 +195,11 @@ def get_consecutive_int_2d_lookup_table_param_value( f"Dictionary keys must be consecutive integers, got: {lookup_keys}" ) return ConsecutiveInt2dLookupTableParamValue( - base_to_subtract_rows=min(lookup_keys_rows), - base_to_subtract_cols=min(lookup_keys_cols), + base_to_subtract_rows=min(lookup_keys_rows).item(), + base_to_subtract_cols=min(lookup_keys_cols).item(), values_to_look_up=xnp.array( [ - raw[row][col] + raw[row.item()][col.item()] for row, col in itertools.product(lookup_keys_rows, lookup_keys_cols) ], ).reshape(len(lookup_keys_rows), len(lookup_keys_cols)), diff --git a/src/ttsim/tt_dag_elements/piecewise_polynomial.py b/src/ttsim/tt_dag_elements/piecewise_polynomial.py index 335fa2eda5..47036c417c 100644 --- a/src/ttsim/tt_dag_elements/piecewise_polynomial.py +++ b/src/ttsim/tt_dag_elements/piecewise_polynomial.py @@ -88,14 +88,13 @@ def piecewise_polynomial( x - parameters.thresholds[selected_bin], ) # Evaluate polynomial at x - out = ( + return rates_multiplier * ( parameters.intercepts[selected_bin] + ( ((increment_to_calc.reshape(-1, 1)) ** xnp.arange(1, order + 1, 1)) * (coefficients) ).sum(axis=1) - ) * rates_multiplier - return xnp.squeeze(out) + ) def get_piecewise_parameters( From c916252bce01c0c60052a685765ed3421aed952d Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 3 Jul 2025 09:11:54 +0100 Subject: [PATCH 050/109] Remove config elements from policy environment (#990) ### What problem do you want to solve? Removes the following config elements from the policy environment by putting them in the interface DAG and partialling them into params and policy functions: - backend - xnp - dnp - num_segments - evaluation_date (partial in evaluation_year, _month, _day) --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../abz\303\274ge/vorsorge.py" | 4 +- src/_gettsim/lohnsteuer/einkommen.py | 4 +- src/ttsim/interface_dag.py | 4 +- src/ttsim/interface_dag_elements/labels.py | 13 ++- .../interface_dag_elements/num_segments.py | 21 +++++ .../orig_policy_objects.py | 21 +---- .../policy_environment.py | 27 +------ .../specialized_environment.py | 79 +++++++++++++------ src/ttsim/plot_dag.py | 9 +++ src/ttsim/testing_utils.py | 14 +++- .../test_data_converters.py | 3 + .../interface_dag_elements/test_failures.py | 8 +- .../test_specialized_environment.py | 41 +++++----- tests/ttsim/tt_dag_elements/test_rounding.py | 5 ++ 14 files changed, 155 insertions(+), 98 deletions(-) create mode 100644 src/ttsim/interface_dag_elements/num_segments.py diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" index 5d9601dada..2dddce5af4 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" @@ -199,8 +199,8 @@ def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( @param_function(start_date="2005-01-01", end_date="2022-12-31") def rate_abzugsfähige_altersvorsorgeaufwendungen( - evaluationsjahr: int, parameter_einführungsfaktor_altersvorsorgeaufwendungen: PiecewisePolynomialParamValue, + evaluation_year: int, xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the @@ -214,7 +214,7 @@ def rate_abzugsfähige_altersvorsorgeaufwendungen( """ return piecewise_polynomial( - x=evaluationsjahr, + x=evaluation_year, parameters=parameter_einführungsfaktor_altersvorsorgeaufwendungen, xnp=xnp, ) diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index c69be4d155..8cff6587e0 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -141,8 +141,8 @@ def vorsorge_krankenversicherungsbeiträge_option_b_ab_2019( @param_function(start_date="2005-01-01", end_date="2022-12-31") def einführungsfaktor_rentenversicherungsaufwendungen( - evaluationsjahr: int, parameter_einführungsfaktor_rentenversicherungsaufwendungen: PiecewisePolynomialParamValue, + evaluation_year: int, xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the @@ -156,7 +156,7 @@ def einführungsfaktor_rentenversicherungsaufwendungen( """ return piecewise_polynomial( - x=evaluationsjahr, + x=evaluation_year, parameters=parameter_einführungsfaktor_rentenversicherungsaufwendungen, xnp=xnp, ) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index bb76279bcd..ef41bb3b2b 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -302,7 +302,9 @@ def load_flat_interface_functions_and_inputs() -> FlatInterfaceObjects: orig_functions = _load_orig_functions() return _remove_tree_logic_from_functions_in_collection( orig_functions=orig_functions, - top_level_namespace={path[0] for path in orig_functions}, + top_level_namespace={ + (*path[:-1], func.leaf_name)[0] for path, func in orig_functions.items() + }, ) diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py index 0ab8feba84..c1710347e6 100644 --- a/src/ttsim/interface_dag_elements/labels.py +++ b/src/ttsim/interface_dag_elements/labels.py @@ -90,7 +90,18 @@ def top_level_namespace( for g in grouping_levels: all_top_level_names.add(f"{name}_{g}") - return all_top_level_names + # Add config variables that are not part of the policy environment. + return all_top_level_names.union( + { + "xnp", + "dnp", + "num_segments", + "backend", + "evaluation_year", + "evaluation_month", + "evaluation_day", + } + ) @interface_function() diff --git a/src/ttsim/interface_dag_elements/num_segments.py b/src/ttsim/interface_dag_elements/num_segments.py new file mode 100644 index 0000000000..f96f0dadee --- /dev/null +++ b/src/ttsim/interface_dag_elements/num_segments.py @@ -0,0 +1,21 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim.interface_dag_elements.interface_node_objects import interface_function + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import QNameData + + +@interface_function(in_top_level_namespace=True) +def num_segments(processed_data: QNameData) -> int: + """The number of segments for segment sums in jax. + + After processing the data, we know that the number of ids is at most the length of + the data. + """ + if processed_data: + return len(next(iter(processed_data.values()))) + # Leave at a recognisable value; just used in jittability tests. + return 11111 diff --git a/src/ttsim/interface_dag_elements/orig_policy_objects.py b/src/ttsim/interface_dag_elements/orig_policy_objects.py index befadda1f2..36421cc7b5 100644 --- a/src/ttsim/interface_dag_elements/orig_policy_objects.py +++ b/src/ttsim/interface_dag_elements/orig_policy_objects.py @@ -14,7 +14,6 @@ from ttsim.tt_dag_elements.column_objects_param_function import ( ColumnObject, ParamFunction, - policy_input, ) if TYPE_CHECKING: @@ -49,16 +48,7 @@ def column_objects_and_param_functions( root: The resource directory to load the ColumnObjectParamFunctions tree from. """ - - @policy_input() - def backend() -> Literal["numpy", "jax"]: - """The backend to use for computations.""" - - @policy_input() - def num_segments() -> int: - """The number of segments for segment sums in jax.""" - - out = { + return { k: v for path in _find_files_recursively(root=root, suffix=".py") for k, v in _tree_path_to_orig_column_objects_params_functions( @@ -66,15 +56,6 @@ def num_segments() -> int: root=root, ).items() } - # Add backend so we can decide between numpy and jax for aggregation functions - assert "backend" not in out - out[("backend",)] = backend - - # Add num_segments for segment sums in jax. - assert "num_segments" not in out - out[("num_segments",)] = num_segments - - return out @interface_function() diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index a5b6703343..b2b6427006 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -2,7 +2,7 @@ import copy import datetime -from typing import TYPE_CHECKING, Any, Literal +from typing import TYPE_CHECKING, Any import dags.tree as dt import numpy @@ -47,10 +47,7 @@ def policy_environment( orig_policy_objects__column_objects_and_param_functions: NestedColumnObjectsParamFunctions, # noqa: E501 orig_policy_objects__param_specs: FlatOrigParamSpecs, policy_date: datetime.date, - evaluation_date: datetime.date, - backend: Literal["numpy", "jax"], xnp: ModuleType, - dnp: ModuleType, ) -> NestedPolicyEnvironment: """ Set up the policy environment for a particular date. @@ -62,12 +59,14 @@ def policy_environment( date The date for which the policy system is set up. An integer is interpreted as the year. + xnp + The numpy-like module to use for computations. Returns ------- The policy environment for the specified date. """ - a_tree = merge_trees( + return merge_trees( left=_active_column_objects_and_param_functions( orig=orig_policy_objects__column_objects_and_param_functions, date=policy_date, @@ -79,24 +78,6 @@ def policy_environment( ), ) - assert "evaluationsjahr" not in a_tree, "evaluationsjahr must not be specified" - a_tree["evaluationsjahr"] = ScalarParam( - leaf_name="evaluationsjahr", - start_date=evaluation_date, - end_date=evaluation_date, - value=evaluation_date.year, - name={"de": "Evaluationsjahr. Implementation wird noch verbessert."}, - description={"de": "Der Zeitpunkt, für den die Berechnung durchgeführt wird."}, - unit="Year", - reference_period=None, - note=None, - reference=None, - ) - a_tree["backend"] = backend - a_tree["xnp"] = xnp - a_tree["dnp"] = dnp - return a_tree - def _active_column_objects_and_param_functions( orig: FlatColumnObjectsParamFunctions, diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index ac761f90c2..b00f70baef 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -1,7 +1,6 @@ from __future__ import annotations import functools -from types import ModuleType from typing import TYPE_CHECKING, Literal import dags.tree as dt @@ -24,7 +23,9 @@ from ttsim.tt_dag_elements.param_objects import ParamObject, RawParam if TYPE_CHECKING: + import datetime from collections.abc import Callable + from types import ModuleType import networkx as nx @@ -158,6 +159,10 @@ def _add_derived_functions( def with_processed_params_and_scalars( without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, processed_data: QNameData, + backend: Literal["numpy", "jax"], + xnp: ModuleType, + dnp: ModuleType, + evaluation_date: datetime.date, ) -> QNameSpecializedEnvironment1: """Process the parameters and param functions, remove RawParams from the tree. @@ -169,6 +174,15 @@ def with_processed_params_and_scalars( qualified names in all keys and function arguments. processed_data The processed data. + backend + The backend to use for computations. + xnp + The numpy-like module to use for computations. + dnp + The numpy-like module to use for datetime objects. + evaluation_date + The date for which the policy system is set up. An integer is + interpreted as the year. Returns ------- @@ -186,21 +200,9 @@ def with_processed_params_and_scalars( else: # Leave nodes not in the data what they are. all_nodes[n] = f - # The number of segments for jax' segment sum. After processing the data, we know - # that the number of ids is at most the length of the data. - if processed_data: - all_nodes["num_segments"] = len(next(iter(processed_data.values()))) - else: - # Leave at a recognisable value; just used in jittability tests. - all_nodes["num_segments"] = 11111 params = {k: v for k, v in all_nodes.items() if isinstance(v, ParamObject)} - scalars = { - k: v - for k, v in all_nodes.items() - if isinstance(v, float | int | bool) or k == "backend" - } - modules = {k: v for k, v in all_nodes.items() if isinstance(v, ModuleType)} + scalars = {k: v for k, v in all_nodes.items() if isinstance(v, float | int | bool)} param_functions = { k: v for k, v in all_nodes.items() if isinstance(v, ParamFunction) } @@ -217,7 +219,12 @@ def with_processed_params_and_scalars( processed_param_functions = process( **{k: v.value for k, v in params.items()}, **scalars, - **modules, + xnp=xnp, + dnp=dnp, + backend=backend, + evaluation_year=evaluation_date.year, + evaluation_month=evaluation_date.month, + evaluation_day=evaluation_date.day, ) processed_params = merge_trees( left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, @@ -233,8 +240,11 @@ def with_processed_params_and_scalars( def with_partialled_params_and_scalars( with_processed_params_and_scalars: QNameSpecializedEnvironment1, rounding: bool, + num_segments: int, backend: Literal["numpy", "jax"], xnp: ModuleType, + dnp: ModuleType, + evaluation_date: datetime.date, ) -> QNameSpecializedEnvironment2: """Partial parameters to functions such that they disappear from the DAG. @@ -245,6 +255,17 @@ def with_partialled_params_and_scalars( parameters / scalars as values. rounding Whether to apply rounding to functions. + num_segments + The number of segments for segment sums in jax. + backend + The backend to use for computations. + xnp + The numpy-like module to use for computations. + dnp + The numpy-like module to use for datetime objects. + evaluation_date + The date for which the policy system is set up. An integer is + interpreted as the year. Returns ------- @@ -256,6 +277,21 @@ def with_partialled_params_and_scalars( for k, v in with_processed_params_and_scalars.items() if isinstance(v, ColumnFunction) } + all_partial_params = { + **{ + k: v + for k, v in with_processed_params_and_scalars.items() + if not isinstance(v, ColumnObject) + }, + "num_segments": num_segments, + "backend": backend, + "xnp": xnp, + "dnp": dnp, + "evaluation_year": evaluation_date.year, + "evaluation_month": evaluation_date.month, + "evaluation_day": evaluation_date.day, + } + processed_functions = {} for name, col_func in column_functions.items(): vect_col_func = ( @@ -266,17 +302,14 @@ def with_partialled_params_and_scalars( rounded_col_func = ( _apply_rounding(vect_col_func, xnp) if rounding else vect_col_func ) - partial_params = { - arg: with_processed_params_and_scalars[arg] + partial_params_of_this_column_function = { + arg: all_partial_params[arg] for arg in get_free_arguments(rounded_col_func) - if ( - arg in with_processed_params_and_scalars - and not isinstance(with_processed_params_and_scalars[arg], ColumnObject) - ) + if arg in all_partial_params } - if partial_params: + if partial_params_of_this_column_function: processed_functions[name] = functools.partial( - rounded_col_func, **partial_params + rounded_col_func, **partial_params_of_this_column_function ) else: processed_functions[name] = rounded_col_func diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 4915ada4ce..3cbbf086fb 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -126,6 +126,15 @@ def plot_tt_dag( include_params=include_params, include_other_objects=include_other_objects, ) + # Remove backend, xnp, dnp, and num_segments from the TT DAG. + dag_with_node_metadata.remove_nodes_from( + [ + "backend", + "xnp", + "dnp", + "num_segments", + ] + ) fig = _plot_dag( dag=dag_with_node_metadata, title=title, diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index fc2b89bb7b..e3314784a9 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -91,11 +91,11 @@ def execute_test( backend: Literal["numpy", "jax"], ) -> None: environment = cached_policy_environment(date=test.date, root=root, backend=backend) - if test.target_structure: result_df = main( input_data={"tree": test.input_tree}, policy_environment=environment, + date=test.date, targets={"tree": test.target_structure}, rounding=True, backend=backend, @@ -265,12 +265,20 @@ def check_env_completeness( enforce_signature=False, set_annotations=False, ) - args = inspect.signature(f).parameters + args = set(inspect.signature(f).parameters) - { + "backend", + "xnp", + "dnp", + "num_segments", + "evaluation_year", + "evaluation_month", + "evaluation_day", + } if args: raise ValueError( f"{name}'s full DAG should include all root nodes but the following inputs " "are missing in the specialized policy environment:" - f"\n\n{format_list_linewise(args.keys())}\n\n" + f"\n\n{format_list_linewise(args)}\n\n" "Please add corresponding elements. Typically, these will be " "`@policy_input()`s or parameters in the yaml files." ) diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 298e948943..2eeeecf022 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -1,5 +1,7 @@ from __future__ import annotations +import datetime + import numpy import pandas as pd import pytest @@ -220,6 +222,7 @@ def test_nested_data_to_dataframe( results__tree = main( input_data={"tree": minimal_data_tree}, policy_environment=environment, + date=datetime.date(2024, 1, 1), targets={"tree": targets__tree}, rounding=False, backend=backend, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index e46a34bbe4..bbbaed7eb8 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -537,6 +537,7 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( ): results__tree = main( input_data={"tree": minimal_data_tree}, + date=datetime.date(2024, 1, 1), policy_environment=environment, targets={"tree": targets__tree}, rounding=False, @@ -768,11 +769,10 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( backend, xnp, ): - environment["backend"] = backend - environment["xnp"] = xnp actual = main( input_data={"tree": minimal_data_tree}, policy_environment=environment, + date=datetime.date(2024, 1, 1), targets={"tree": targets__tree}, rounding=False, backend=backend, @@ -810,11 +810,10 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt backend, xnp, ): - environment["backend"] = backend - environment["xnp"] = xnp actual = main( input_data={"tree": minimal_data_tree}, policy_environment=environment, + date=datetime.date(2024, 1, 1), targets={"tree": targets__tree}, rounding=False, backend=backend, @@ -901,6 +900,7 @@ def c(b): main( input_data={"tree": minimal_input_data}, policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": {"c": None}}, rounding=False, backend=backend, diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index e907607ef3..8511f576af 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -326,7 +326,6 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 3, }, ), ( @@ -344,7 +343,6 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 3, }, ), ( @@ -363,7 +361,6 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "n1": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 3, }, ), ( @@ -385,7 +382,6 @@ def return_n1__x_kin(n1__x_kin: int) -> int: "inputs": {"x": pd.Series([1, 1, 1])}, "kin_id": pd.Series([0, 0, 0]), "p_id": pd.Series([0, 1, 2]), - "num_segments": 3, }, ), ], @@ -396,11 +392,10 @@ def test_create_agg_by_group_functions( input_data__tree, backend, ): - policy_environment["backend"] = backend - policy_environment["num_segments"] = len(input_data__tree["p_id"]) main( policy_environment=policy_environment, input_data={"tree": input_data__tree}, + date=datetime.date(2024, 1, 1), targets={"tree": targets__tree}, rounding=False, backend=backend, @@ -417,6 +412,7 @@ def test_output_is_tree(minimal_input_data, backend, xnp): out = main( policy_environment=policy_environment, input_data={"tree": minimal_input_data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"module": {"some_func": None}}}, rounding=False, backend=backend, @@ -449,6 +445,7 @@ def test_params_target_is_allowed(minimal_input_data): out = main( policy_environment=policy_environment, input_data={"tree": minimal_input_data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"some_param": None, "module": {"some_func": None}}}, rounding=False, backend="numpy", @@ -480,6 +477,7 @@ def b(a: int) -> int: results__tree = main( policy_environment=policy_environment, input_data={"tree": minimal_input_data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"b": None}}, rounding=False, backend=backend, @@ -491,13 +489,16 @@ def b(a: int) -> int: ) -def test_partial_params_to_functions(xnp, backend): +def test_partial_params_to_functions(xnp, dnp, backend): # Partial function produces correct result func_after_partial = with_partialled_params_and_scalars( with_processed_params_and_scalars={ "some_func": func_before_partial, "some_param": SOME_INT_PARAM.value, }, + num_segments=1, + evaluation_date=datetime.date(2024, 1, 1), + dnp=dnp, rounding=False, xnp=xnp, backend=backend, @@ -506,14 +507,17 @@ def test_partial_params_to_functions(xnp, backend): assert func_after_partial(2) == 3 -def test_partial_params_to_functions_removes_argument(xnp, backend): +def test_partial_params_to_functions_removes_argument(xnp, dnp, backend): func_after_partial = with_partialled_params_and_scalars( with_processed_params_and_scalars={ "some_func": func_before_partial, "some_param": SOME_INT_PARAM.value, }, + num_segments=1, + evaluation_date=datetime.date(2024, 1, 1), rounding=False, xnp=xnp, + dnp=dnp, backend=backend, )["some_func"] @@ -539,7 +543,6 @@ def test_user_provided_aggregate_by_group_specs(backend): "p_id": p_id, "fam_id": fam_id, "module_name": {"betrag_m": betrag_m}, - "backend": backend, } expected = pd.Series([200, 200, 100], index=pd.Index(data["p_id"], name="p_id")) @@ -547,6 +550,7 @@ def test_user_provided_aggregate_by_group_specs(backend): actual = main( policy_environment=policy_environment, input_data={"tree": data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"module_name": {"betrag_m_fam": None}}}, rounding=False, backend=backend, @@ -585,13 +589,12 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: "betrag_m_double": betrag_m_double, "betrag_m_double_fam": betrag_m_double_fam, }, - "backend": backend, - "num_segments": len(data["p_id"]), } actual = main( policy_environment=policy_environment, input_data={"tree": data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, rounding=False, backend=backend, @@ -636,13 +639,12 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: "betrag_double_m": betrag_double_m, "max_betrag_double_m_fam": max_betrag_double_m_fam, }, - "backend": backend, - "num_segments": len(data["p_id"]), } actual = main( policy_environment=policy_environment, input_data={"tree": data}, + date=datetime.date(2024, 1, 1), targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, rounding=False, backend=backend, @@ -723,14 +725,13 @@ def source() -> int: "module": {leaf_name: source}, "p_id": p_id, "p_id_someone_else": p_id_someone_else, - "backend": backend, - "num_segments": len(minimal_input_data_shared_fam["p_id"]), }, ) actual = main( input_data={"tree": minimal_input_data_shared_fam}, policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": target_tree}, rounding=False, backend=backend, @@ -745,7 +746,7 @@ def source() -> int: ) -def test_policy_environment_with_params_and_scalars_is_processed(backend, xnp): +def test_policy_environment_with_params_and_scalars_is_processed(xnp, dnp, backend): policy_environment = { "raw_param_spec": SOME_RAW_PARAM, "some_int_param": SOME_INT_PARAM, @@ -757,11 +758,14 @@ def test_policy_environment_with_params_and_scalars_is_processed(backend, xnp): "some_scalar_params_func": some_scalar_params_func, "some_converting_params_func": some_converting_params_func, "some_param_function_taking_scalar": some_param_function_taking_scalar, - "backend": backend, } actual = with_processed_params_and_scalars( without_tree_logic_and_with_derived_functions=policy_environment, processed_data={"x": xnp.array([1, 2, 3])}, + backend=backend, + xnp=xnp, + dnp=dnp, + evaluation_date=datetime.date(2024, 1, 1), ) expected = { "some_converting_params_func": ConvertedParam( @@ -776,8 +780,6 @@ def test_policy_environment_with_params_and_scalars_is_processed(backend, xnp): "some_float_scalar": 2.0, "some_bool_scalar": True, "some_param_function_taking_scalar": 4.0, - "num_segments": 3, - "backend": backend, } assert actual == expected @@ -844,6 +846,7 @@ def test_can_override_ttsim_objects_with_data( actual = main( input_data={"tree": {**minimal_input_data, **overriding_data}}, policy_environment=nested_policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": targets__tree}, rounding=False, backend=backend, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index 3f66321758..9547e9ff49 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -1,5 +1,7 @@ from __future__ import annotations +import datetime + import numpy import pandas as pd import pytest @@ -111,6 +113,7 @@ def test_func(x): results__tree = main( input_data={"tree": input_data__tree}, policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": {"namespace": {"test_func": None}}}, rounding=True, backend=backend, @@ -146,6 +149,7 @@ def test_func_m(x): results__tree = main( input_data={"tree": data}, policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": {"test_func_y": None}}, rounding=True, backend=backend, @@ -185,6 +189,7 @@ def test_func(x): results__tree = main( input_data={"tree": data}, policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), targets={"tree": {"test_func": None}}, rounding=False, backend=backend, From 53a61c3162962f81ff6a372a06bc0a23a40f5d3f Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 3 Jul 2025 16:12:17 +0100 Subject: [PATCH 051/109] Fail if length of data input arrays differs. (#992) ### What problem do you want to solve? - Adds checks regarding consistency of input array lengths - Moves other input data checks from `tree` to `flat` --- src/ttsim/interface_dag_elements/__init__.py | 2 + src/ttsim/interface_dag_elements/fail_if.py | 53 +++++++++++--- .../interface_dag_elements/test_failures.py | 71 +++++++++++++++---- 3 files changed, 103 insertions(+), 23 deletions(-) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 3e551c3f0d..593c6d0651 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -45,6 +45,8 @@ class FailIf(NestedInit): group_ids_are_outside_top_level_namespace: FailOrWarnFunction | None = None group_variables_are_not_constant_within_groups: FailOrWarnFunction | None = None input_data_tree_is_invalid: FailOrWarnFunction | None = None + input_arrays_have_different_lengths: FailOrWarnFunction | None = None + invalid_p_id_values: FailOrWarnFunction | None = None input_df_has_bool_or_numeric_column_names: FailOrWarnFunction | None = None input_df_mapper_columns_missing_in_df: FailOrWarnFunction | None = None input_df_mapper_has_incorrect_format: FailOrWarnFunction | None = None diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index ed04029c40..033fe7e9b3 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -28,6 +28,7 @@ if TYPE_CHECKING: from collections.abc import Callable + from ttsim.interface_dag_elements.input_data import FlatData from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, @@ -252,21 +253,12 @@ def paths_are_missing_in_targets_tree_mapper( @fail_or_warn_function() def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> None: """ - Validate the basic structure of the data tree. - - 1. It must be is a dictionary with string keys and Series or Array leaves. - 2. It must contain the `p_id` column. - 3. Each element of `p_id` must uniquely identify a row. + Validate the basic structure of the input data tree. Parameters ---------- input_data__tree The data tree. - - Raises - ------ - ValueError - If any of the above conditions is not met. """ assert_valid_ttsim_pytree( tree=input_data__tree, @@ -276,10 +268,49 @@ def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> ), tree_name="input_data__tree", ) - p_id = input_data__tree.get("p_id", None) + + +@fail_or_warn_function(include_if_any_element_present=["input_data__flat"]) +def input_arrays_have_different_lengths( + input_data__flat: FlatData, +) -> None: + """Fail if the input arrays have different lengths.""" + len_p_id_array = len(input_data__flat[("p_id",)]) + faulty_arrays: list[str] = [] + for key, arr in input_data__flat.items(): + if len(arr) != len_p_id_array: + faulty_arrays.append(key) + if faulty_arrays: + formatted_faulty_paths = "\n".join(f" - {p}" for p in faulty_arrays) + msg = format_errors_and_warnings( + "The lengths of the following columns do not match the length of the `p_id`" + f" column:\n{formatted_faulty_paths}" + ) + raise ValueError(msg) + + +@fail_or_warn_function(include_if_any_element_present=["input_data__flat"]) +def invalid_p_id_values( + input_data__flat: FlatData, + xnp: ModuleType, +) -> None: + """Fail if the `p_id` column is invalid. + + Fails if: + - The `p_id` column is missing. + - The `p_id` column has non-unique values. + """ + p_id = input_data__flat.get(("p_id",), None) if p_id is None: raise ValueError("The input data must contain the `p_id` column.") + if not all(isinstance(i, (int, xnp.integer)) for i in p_id): + types = (type(i) for i in p_id if not isinstance(i, int)) + msg = format_errors_and_warnings( + f"The `p_id` column must contain integers only. Got: {types}." + ) + raise ValueError(msg) + # Check for non-unique p_ids p_id_counts: dict[int, int] = {} # Need the map because Jax loop items are 1-element arrays. diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index bbbaed7eb8..e905856a34 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -21,9 +21,9 @@ foreign_keys_are_invalid_in_data, group_ids_are_outside_top_level_namespace, group_variables_are_not_constant_within_groups, - input_data_tree_is_invalid, input_df_has_bool_or_numeric_column_names, input_df_mapper_has_incorrect_format, + invalid_p_id_values, non_convertible_objects_in_results_tree, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, @@ -644,17 +644,17 @@ def test_fail_if_group_variables_are_not_constant_within_groups(): ) -def test_fail_if_input_data_tree_is_invalid(xnp): - data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} +def test_fail_if_invalid_p_id_values(xnp): + data = {("fam_id",): numpy.array([1, 2, 3])} with pytest.raises( ValueError, match="The input data must contain the `p_id` column.", ): - input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) + invalid_p_id_values(data, xnp) -def test_fail_if_input_data_tree_is_invalid_via_main(backend): +def test_fail_if_invalid_p_id_values_via_main(backend): data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} with pytest.raises( ValueError, @@ -666,7 +666,7 @@ def test_fail_if_input_data_tree_is_invalid_via_main(backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__input_data_tree_is_invalid"), + output=output.Name("fail_if__invalid_p_id_values"), ) @@ -828,13 +828,13 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt def test_fail_if_p_id_does_not_exist(xnp): - data = {"fam_id": pd.Series(data=numpy.arange(8), name="fam_id")} + data = {("fam_id",): numpy.array([1, 2, 3])} with pytest.raises( ValueError, match="The input data must contain the `p_id` column.", ): - input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) + invalid_p_id_values(data, xnp) def test_fail_if_p_id_does_not_exist_via_main(backend): @@ -849,18 +849,18 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__input_data_tree_is_invalid"), + output=output.Name("fail_if__invalid_p_id_values"), ) def test_fail_if_p_id_is_not_unique(xnp): - data = {"p_id": pd.Series(data=numpy.arange(4).repeat(2), name="p_id")} + data = {("p_id",): numpy.array([1, 1, 3, 4])} with pytest.raises( ValueError, match="The following `p_id`s are not unique in the input data", ): - input_data_tree_is_invalid(input_data__tree=data, xnp=xnp) + invalid_p_id_values(data, xnp) def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): @@ -877,7 +877,54 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__input_data_tree_is_invalid"), + output=output.Name("fail_if__invalid_p_id_values"), + ) + + +@pytest.mark.parametrize( + "data", + [ + {("p_id",): [1, "2", 3]}, + {("p_id",): [1, "2", 3.0]}, + {("p_id",): numpy.array([1, "2", 3])}, + {("p_id",): numpy.array([1, 2, 3.0])}, + {("p_id",): pd.Series([1, 2, 3.0])}, + {("p_id",): pd.Series([1, "2", 3.0])}, + ], +) +def test_fail_if_p_id_is_not_int(data, xnp): + with pytest.raises( + ValueError, + match="The `p_id` column must contain integers only.", + ): + invalid_p_id_values(data, xnp) + + +@pytest.mark.parametrize( + "data", + [ + {("p_id",): [1, 2, 3]}, + {("p_id",): numpy.array([1, 2, 3])}, + {("p_id",): pd.Series([1, 2, 3])}, + ], +) +def test_p_id_can_be_specified_as_list_series_and_array(data, xnp): + invalid_p_id_values(data, xnp) + + +def test_fail_if_input_arrays_have_different_lengths(backend): + data = {"p_id": numpy.arange(4), "a": numpy.arange(8)} + with pytest.raises( + ValueError, + match="The lengths of the following columns do not match the length of the", + ): + main( + input_data={"tree": data}, + policy_environment={}, + targets={"tree": {}}, + rounding=False, + backend=backend, + output=output.Name("fail_if__input_arrays_have_different_lengths"), ) From e4c7305438559f6b51fbd83ddbefae8378ba5e7a Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Fri, 4 Jul 2025 07:50:11 +0100 Subject: [PATCH 052/109] Upserting of params (#993) ### What problem do you want to solve? Closes #980 As discussed, makes all arguments but 'value' of the params dataclasses optional. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/interface_dag_elements/fail_if.py | 14 ++++++- src/ttsim/tt_dag_elements/param_objects.py | 39 ++++++++++++------- .../test_orig_policy_objects.py | 29 ++++++++++++++ tests/ttsim/test_plot_dag.py | 5 ++- 4 files changed, 69 insertions(+), 18 deletions(-) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 033fe7e9b3..7158e26b03 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -23,7 +23,11 @@ ParamFunction, PolicyInput, ) -from ttsim.tt_dag_elements.param_objects import ParamObject +from ttsim.tt_dag_elements.param_objects import ( + PLACEHOLDER_FIELD, + PLACEHOLDER_VALUE, + ParamObject, +) if TYPE_CHECKING: from collections.abc import Callable @@ -97,7 +101,13 @@ class _ParamWithActivePeriod(ParamObject): Only used here for checking overlap. """ - original_function_name: str + original_function_name: str = PLACEHOLDER_FIELD + + def __post_init__(self) -> None: + if self.original_function_name is PLACEHOLDER_VALUE: + raise ValueError( + "'original_function_name' field must be specified for _ParamWithActivePeriod" + ) def assert_valid_ttsim_pytree( diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py index d3553f5c37..89bcd88cdf 100644 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -1,11 +1,14 @@ from __future__ import annotations import itertools -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import TYPE_CHECKING, Any, Literal import numpy +PLACEHOLDER_VALUE = object() +PLACEHOLDER_FIELD = field(default_factory=lambda: PLACEHOLDER_VALUE) + if TYPE_CHECKING: import datetime from types import ModuleType @@ -19,9 +22,9 @@ class ParamObject: Abstract base class for all types of parameters. """ - leaf_name: str - start_date: datetime.date - end_date: datetime.date + leaf_name: str | None = None + start_date: datetime.date | None = None + end_date: datetime.date | None = None unit: ( None | Literal[ @@ -35,10 +38,16 @@ class ParamObject: "Square Meters", "Euros / Square Meter", ] - ) - reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] - name: dict[Literal["de", "en"], str] - description: dict[Literal["de", "en"], str] + ) = None + reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] = None + name: dict[Literal["de", "en"], str] | None = None + description: dict[Literal["de", "en"], str] | None = None + + def __post_init__(self) -> None: + if self.value is PLACEHOLDER_VALUE: # type: ignore[attr-defined] + raise ValueError( + "'value' field must be specified for any type of 'ParamObject'" + ) @dataclass(frozen=True) @@ -47,7 +56,7 @@ class ScalarParam(ParamObject): A scalar parameter directly read from a YAML file. """ - value: bool | int | float + value: bool | int | float = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None @@ -65,11 +74,12 @@ class DictParam(ParamObject): | dict[int, int] | dict[int, float] | dict[int, bool] - ) + ) = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None def __post_init__(self) -> None: + super().__post_init__() assert all(x not in self.value for x in ["note", "reference"]) @@ -81,7 +91,7 @@ class PiecewisePolynomialParam(ParamObject): parameters for calling `piecewise_polynomial`. """ - value: PiecewisePolynomialParamValue + value: PiecewisePolynomialParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None @@ -94,7 +104,7 @@ class ConsecutiveInt1dLookupTableParam(ParamObject): parameters for calling `lookup_table`. """ - value: ConsecutiveInt1dLookupTableParamValue + value: ConsecutiveInt1dLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None @@ -107,7 +117,7 @@ class ConsecutiveInt2dLookupTableParam(ParamObject): parameters for calling `lookup_table`. """ - value: ConsecutiveInt2dLookupTableParamValue + value: ConsecutiveInt2dLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None @@ -119,11 +129,12 @@ class RawParam(ParamObject): dictionary. """ - value: dict[str | int, Any] + value: dict[str | int, Any] = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None def __post_init__(self) -> None: + super().__post_init__() assert all(x not in self.value for x in ["note", "reference"]) diff --git a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py index 34f7d7d837..d0734f5288 100644 --- a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py +++ b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py @@ -2,10 +2,20 @@ from pathlib import Path +import pytest + from ttsim.interface_dag_elements.orig_policy_objects import ( _find_files_recursively, load_module, ) +from ttsim.tt_dag_elements.param_objects import ( + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt2dLookupTableParam, + DictParam, + PiecewisePolynomialParam, + RawParam, + ScalarParam, +) METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" @@ -23,3 +33,22 @@ def test_dont_load_init_py(): """ all_files = _find_files_recursively(root=METTSIM_ROOT, suffix=".py") assert "__init__.py" not in [file.name for file in all_files] + + +@pytest.mark.parametrize( + "param_object", + [ + ScalarParam, + DictParam, + PiecewisePolynomialParam, + ConsecutiveInt1dLookupTableParam, + ConsecutiveInt2dLookupTableParam, + RawParam, + ], +) +def test_param_object_requires_value(param_object): + with pytest.raises( + ValueError, + match="'value' field must be specified for any type of 'ParamObject'", + ): + param_object() diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index ac077a9e47..b952698d56 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -12,12 +12,13 @@ plot_interface_dag, ) from ttsim.tt_dag_elements import ( - ParamObject, + ScalarParam, param_function, policy_function, ) -SOME_PARAM_OBJECT = ParamObject( +SOME_PARAM_OBJECT = ScalarParam( + value=111, leaf_name="some_param", start_date="2025-01-01", end_date="2025-12-31", From aa1e29a870b131c01cfb8d489f084735b7d0710b Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Fri, 4 Jul 2025 14:25:53 +0200 Subject: [PATCH 053/109] Implement remaining interface components (#991) Update the interface so that we end up with: ```python def main( *, output: Output | None = None, date_str: DashedISOString | None = None, input_data: InputData | None = None, targets: Targets | None = None, backend: Literal["numpy", "jax"] | None = None, rounding: bool = True, fail_and_warn: bool = True, orig_policy_objects: OrigPolicyObjects | None = None, raw_results: RawResults | None = None, results: Results | None = None, specialized_environment: SpecializedEnvironment | None = None, policy_environment: NestedPolicyEnvironment | None = None, processed_data: QNameData | None = None, date: datetime.date | None = None, policy_date_str: DashedISOString | None = None, evaluation_date_str: DashedISOString | None = None, policy_date: datetime.date | None = None, evaluation_date: datetime.date | None = None, labels: Labels | None = None, ) -> dict[str, Any]: ``` Also get rid of the `_InterfaceDAGElements` class. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- pixi.lock | 4 +- pyproject.toml | 6 + sandbox/plots.ipynb | 9 + src/_gettsim_tests/test_jittability.py | 12 +- src/_gettsim_tests/test_policy.py | 6 +- src/_gettsim_tests/test_templates.py | 4 +- src/gettsim/__init__.py | 76 ++++- src/ttsim/__init__.py | 21 +- src/ttsim/arg_templates/input_data.py | 61 ---- src/ttsim/arg_templates/output.py | 27 -- src/ttsim/interface_dag.py | 141 ++++----- src/ttsim/interface_dag_elements/__init__.py | 275 ++++++++---------- src/ttsim/interface_dag_elements/fail_if.py | 19 +- .../interface_dag_elements/input_data.py | 4 +- src/ttsim/interface_dag_elements/labels.py | 12 +- .../orig_policy_objects.py | 4 +- .../policy_environment.py | 4 +- .../interface_dag_elements/raw_results.py | 4 +- .../specialized_environment.py | 33 +-- src/ttsim/interface_dag_elements/targets.py | 4 +- src/ttsim/interface_dag_elements/templates.py | 8 +- src/ttsim/interface_dag_elements/typing.py | 15 +- src/ttsim/interface_dag_elements/warn_if.py | 4 +- src/ttsim/main_args.py | 197 +++++++++++++ src/ttsim/plot_dag.py | 16 +- src/ttsim/testing_utils.py | 14 +- .../test_data_converters.py | 4 +- .../interface_dag_elements/test_failures.py | 26 +- .../interface_dag_elements/test_mettsim.py | 8 +- .../test_policy_environment.py | 6 +- .../test_specialized_environment.py | 24 +- .../interface_dag_elements/test_templates.py | 10 +- .../interface_dag_elements/test_warnings.py | 6 +- tests/ttsim/test_end_to_end.py | 8 +- tests/ttsim/test_interface_dag.py | 87 ++++-- tests/ttsim/test_plot_dag.py | 4 +- tests/ttsim/tt_dag_elements/test_rounding.py | 8 +- 37 files changed, 695 insertions(+), 476 deletions(-) delete mode 100644 src/ttsim/arg_templates/input_data.py delete mode 100644 src/ttsim/arg_templates/output.py create mode 100644 src/ttsim/main_args.py diff --git a/pixi.lock b/pixi.lock index b4affa862a..a732c42f87 100644 --- a/pixi.lock +++ b/pixi.lock @@ -8777,8 +8777,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev160+gfc3b135d.d20250701 - sha256: 5a56c79c24772b7105864b21415a41af8307f132dd8bf2592cd44aa30e97f83a + version: 0.7.1.dev143+g3ea7bb7e + sha256: c5355249b6f857e84730bb8cd55fee3915cebceafec924ab7ccbb7a24b770f05 requires_dist: - ipywidgets - networkx diff --git a/pyproject.toml b/pyproject.toml index 3a61a126ae..f244d6c53c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -298,10 +298,16 @@ disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter module = ["src._gettsim_tests.*",] disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter source code. +[[tool.mypy.overrides]] +module = ["src.ttsim.main_args",] +disable_error_code = ["no-redef"] # Instantiate dataclass with same name as elements. + + [tool.check-manifest] ignore = ["src/_gettsim/_version.py"] + # ====================================================================================== # pytest configuration # ====================================================================================== diff --git a/sandbox/plots.ipynb b/sandbox/plots.ipynb index 14eafeae61..a54d9341cd 100644 --- a/sandbox/plots.ipynb +++ b/sandbox/plots.ipynb @@ -11,6 +11,15 @@ "plot_interface_dag()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_interface_dag(include_fail_and_warn_nodes=False, show_node_description=True)" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index 00bf926296..9d02eaa24f 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -11,14 +11,14 @@ import pytest from dags import get_free_arguments -from ttsim import main, output +from ttsim import Output, main from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, - QNameSpecializedEnvironment2, + SpecEnvWithPartialledParamsAndScalars, ) GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" @@ -29,7 +29,7 @@ def get_orig_gettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": GETTSIM_ROOT}, - output=output.Names( + output=Output.names( [ "orig_policy_objects__column_objects_and_param_functions", "orig_policy_objects__param_specs", @@ -49,13 +49,13 @@ def cached_specialized_environment( date: datetime.date, root: Path, backend: Literal["numpy", "jax"], -) -> QNameSpecializedEnvironment2: +) -> SpecEnvWithPartialledParamsAndScalars: return main( date=date, orig_policy_objects={"root": root}, backend=backend, fail_and_warn=False, - output=output.Name( + output=Output.name( ("specialized_environment", "with_partialled_params_and_scalars") ), ) @@ -92,6 +92,6 @@ def test_jittable(tree_path, fun, backend, xnp): processed_data=processed_data, targets={"qname": [qname]}, backend=backend, - output=output.Name(("raw_results", "columns")), + output=Output.name(("raw_results", "columns")), fail_and_warn=False, ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index b4f495bfb6..c3956d8045 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -8,7 +8,7 @@ import numpy import pytest -from ttsim import main, output +from ttsim import Output, main from ttsim.testing_utils import ( PolicyTest, check_env_completeness, @@ -39,7 +39,7 @@ def get_orig_gettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": GETTSIM_ROOT}, - output=output.Names( + output=Output.names( [ "orig_policy_objects__column_objects_and_param_functions", "orig_policy_objects__param_specs", @@ -109,7 +109,7 @@ def test_top_level_elements_not_repeated_in_paths( backend=backend, date=date, rounding=False, - output=output.Names( + output=Output.names( [ "specialized_environment__with_partialled_params_and_scalars", "labels__top_level_namespace", diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index a6b76d4c1a..41c850e91a 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -4,7 +4,7 @@ import dags.tree as dt -from ttsim import main, output +from ttsim import Output, main from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.shared import ( get_re_pattern_for_all_time_units_and_groupings, @@ -19,7 +19,7 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=output.Names( + output=Output.names( ["labels__grouping_levels", "templates__input_data_dtypes"] ), ) diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 7ff33ea070..d58f3afe07 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -11,17 +11,91 @@ __version__ = "unknown" -from typing import Literal +from dataclasses import dataclass +from pathlib import Path +from typing import TYPE_CHECKING, Any, Literal import pytest +import ttsim from _gettsim_tests import TEST_DIR +from ttsim import ( + InputData, + Labels, + Output, + RawResults, + Results, + SpecializedEnvironment, + Targets, + merge_trees, +) + +if TYPE_CHECKING: + import datetime + + from ttsim.interface_dag_elements.typing import ( + DashedISOString, + FlatColumnObjectsParamFunctions, + FlatOrigParamSpecs, + PolicyEnvironment, + QNameData, + ) def test(backend: Literal["numpy", "jax"] = "numpy") -> None: pytest.main([str(TEST_DIR), "--backend", backend]) +@dataclass(frozen=True) +class OrigPolicyObjects(ttsim.main_args.MainArg): + column_objects_and_param_functions: FlatColumnObjectsParamFunctions | None = None + param_specs: FlatOrigParamSpecs | None = None + + +def main( + *, + output: Output | None = None, + date_str: DashedISOString | None = None, + input_data: InputData | None = None, + targets: Targets | None = None, + backend: Literal["numpy", "jax"] = "numpy", + rounding: bool = True, + fail_and_warn: bool = True, + orig_policy_objects: OrigPolicyObjects | None = None, + raw_results: RawResults | None = None, + results: Results | None = None, + specialized_environment: SpecializedEnvironment | None = None, + policy_environment: PolicyEnvironment | None = None, + processed_data: QNameData | None = None, + date: datetime.date | None = None, + policy_date_str: DashedISOString | None = None, + evaluation_date_str: DashedISOString | None = None, + policy_date: datetime.date | None = None, + evaluation_date: datetime.date | None = None, + labels: Labels | None = None, +) -> dict[str, Any]: + if orig_policy_objects is None: + orig_policy_objects = ttsim.main_args.OrigPolicyObjects( + root=Path(__file__).parent.parent / "_gettsim" + ) + + return ttsim.main(**locals()) + + +__all__ = [ + "InputData", + "Labels", + "OrigPolicyObjects", + "Output", + "RawResults", + "Results", + "SpecializedEnvironment", + "Targets", + "main", + "merge_trees", +] + + __all__ = [ "__version__", "test", diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 394001887b..3fb618506f 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,12 +1,27 @@ from __future__ import annotations -from ttsim.arg_templates import input_data, output from ttsim.interface_dag import main from ttsim.interface_dag_elements.shared import merge_trees +from ttsim.main_args import ( + InputData, + Labels, + OrigPolicyObjects, + Output, + RawResults, + Results, + SpecializedEnvironment, + Targets, +) __all__ = [ - "input_data", + "InputData", + "Labels", + "OrigPolicyObjects", + "Output", + "RawResults", + "Results", + "SpecializedEnvironment", + "Targets", "main", "merge_trees", - "output", ] diff --git a/src/ttsim/arg_templates/input_data.py b/src/ttsim/arg_templates/input_data.py deleted file mode 100644 index 50a5cf7c54..0000000000 --- a/src/ttsim/arg_templates/input_data.py +++ /dev/null @@ -1,61 +0,0 @@ -from __future__ import annotations - -import re -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - import pandas as pd - - from ttsim.interface_dag_elements.typing import ( - FlatData, - NestedData, - QNameData, - ) - - -def _camel_to_snake(name: str) -> str: - s1 = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name) - s2 = re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1) - return s2.lower() - - -@dataclass(frozen=True) -class ABC: - def to_dict(self) -> dict[str, Any]: - name = _camel_to_snake(self.__class__.__name__) - if len(self.__dict__) == 1: - return {name: self.data} # type: ignore[attr-defined] - return {name: self.__dict__} - - -@dataclass(frozen=True) -class DfAndMapper(ABC): - df: pd.DataFrame - """A dataframe with arbitrary columns.""" - mapper: dict[str, Any] - """A nested dictionary mapping expected inputs to column names in df.""" - - -@dataclass(frozen=True) -class DfWithNestedColumns(ABC): - data: pd.DataFrame - """A df with a MultiIndex in the column dimension, elements correspond to expected tree paths.""" # noqa: E501 - - -@dataclass(frozen=True) -class Tree(ABC): - data: NestedData - """A nested dictionary mapping expected input names to vectors of data.""" - - -@dataclass(frozen=True) -class Flat(ABC): - data: FlatData - """A dictionary mapping tree paths to vectors of data.""" - - -@dataclass(frozen=True) -class QName(ABC): - data: QNameData - """A dictionary mapping qualified names to vectors of data.""" diff --git a/src/ttsim/arg_templates/output.py b/src/ttsim/arg_templates/output.py deleted file mode 100644 index d03b8fd1d9..0000000000 --- a/src/ttsim/arg_templates/output.py +++ /dev/null @@ -1,27 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from collections.abc import Iterable - - from ttsim.interface_dag_elements.typing import NestedTargetDict - - -@dataclass(frozen=True) -class ABC: - def to_dict(self) -> dict[str, Any]: - return self.__dict__ - - -@dataclass(frozen=True) -class Name(ABC): - name: str | tuple[str, ...] - """A single output name. Could be a qualified name or a tree path.""" - - -@dataclass(frozen=True) -class Names(ABC): - names: Iterable[str | tuple[str, ...]] | NestedTargetDict - """An iterable of output names. Could be qualified names or tree paths.""" diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index ef41bb3b2b..8143796b13 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -2,6 +2,7 @@ import inspect import re +from contextlib import suppress from dataclasses import asdict from pathlib import Path from typing import TYPE_CHECKING, Any, Literal @@ -10,8 +11,7 @@ import dags.tree as dt import optree -from ttsim import arg_templates -from ttsim.interface_dag_elements import _InterfaceDAGElements +from ttsim.interface_dag_elements import AllOutputNames from ttsim.interface_dag_elements.fail_if import ( format_errors_and_warnings, format_list_linewise, @@ -23,49 +23,61 @@ InterfaceInput, ) from ttsim.interface_dag_elements.orig_policy_objects import load_module +from ttsim.main_args import MainArg if TYPE_CHECKING: import datetime from ttsim.interface_dag_elements.typing import ( + DashedISOString, FlatInterfaceObjects, + PolicyEnvironment, + QNameData, QNameStrings, UnorderedQNames, ) + from ttsim.main_args import ( + InputData, + Labels, + OrigPolicyObjects, + Output, + RawResults, + Results, + SpecializedEnvironment, + Targets, + ) def main( *, - date_str: str | None = None, - output: arg_templates.output.Name | arg_templates.output.Names | None = None, - input_data: arg_templates.input_data.DfAndMapper - | arg_templates.input_data.DfWithNestedColumns - | arg_templates.input_data.Flat - | arg_templates.input_data.QName - | arg_templates.input_data.Tree - | None = None, - targets: dict[str, Any] | None = None, + output: Output | None = None, + date_str: DashedISOString | None = None, + input_data: InputData | None = None, + targets: Targets | None = None, backend: Literal["numpy", "jax"] | None = None, rounding: bool = True, fail_and_warn: bool = True, - orig_policy_objects: dict[str, Any] | None = None, - raw_results: dict[str, Any] | None = None, - results: dict[str, Any] | None = None, - specialized_environment: dict[str, Any] | None = None, - policy_environment: dict[str, Any] | None = None, - processed_data: dict[str, Any] | None = None, - dnp: dict[str, Any] | None = None, - xnp: dict[str, Any] | None = None, + orig_policy_objects: OrigPolicyObjects | None = None, + raw_results: RawResults | None = None, + results: Results | None = None, + specialized_environment: SpecializedEnvironment | None = None, + policy_environment: PolicyEnvironment | None = None, + processed_data: QNameData | None = None, date: datetime.date | None = None, - labels: dict[str, Any] | None = None, + policy_date_str: DashedISOString | None = None, + evaluation_date_str: DashedISOString | None = None, + policy_date: datetime.date | None = None, + evaluation_date: datetime.date | None = None, + labels: Labels | None = None, ) -> dict[str, Any]: """ Main function that processes the inputs and returns the outputs. """ input_qnames = _harmonize_inputs(locals()) - output_qnames = _harmonize_outputs(output) + output_qnames = _harmonize_output(output) + # If requesting an input template, we do not require any data. if not any(re.match("(input|processed)_data", s) for s in input_qnames): input_qnames["processed_data"] = {} input_qnames["processed_data_columns"] = None @@ -125,62 +137,51 @@ def lexsort_key(x: str) -> int: def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: - # Iterate over the skeleton and see whether we need to convert anything to - # qualified names. - flat_inputs = {} - accs, vals = optree.tree_flatten_with_accessor( # type: ignore[var-annotated] - asdict(_InterfaceDAGElements()), # type: ignore[arg-type] - none_is_leaf=True, - )[:2] - if "input_data" in inputs and isinstance( - inputs["input_data"], arg_templates.input_data.ABC - ): - inputs["input_data"] = inputs["input_data"].to_dict() - for acc, val in zip(accs, vals, strict=False): + dict_inputs = { + k: v.to_dict() if isinstance(v, MainArg) else v for k, v in inputs.items() + } + qname_inputs = {} + opo = dict_inputs.get("orig_policy_objects") + if opo and "root" in opo: + qname_inputs["orig_policy_objects__root"] = opo.pop("root") + for acc in optree.tree_accessors(asdict(AllOutputNames()), none_is_leaf=True): # type: ignore[arg-type] qname = dt.qname_from_tree_path(acc.path) - if qname in inputs: - flat_inputs[qname] = inputs[qname] - else: - try: - flat_inputs[qname] = acc(inputs) - except (KeyError, TypeError): - flat_inputs[qname] = val - return {k: v for k, v in flat_inputs.items() if v is not None} + with suppress(KeyError, TypeError): + qname_inputs[qname] = acc(dict_inputs) + return {k: v for k, v in qname_inputs.items() if v is not None} -def _harmonize_outputs( - output: arg_templates.output.Name | arg_templates.output.Names | None, -) -> dict[str, Any]: +def _harmonize_output(output: Output | None) -> dict[str, Any]: if output is None: flat_output = { - "qname": None, - "qnames": None, + "name": None, + "names": None, } - elif isinstance(output, arg_templates.output.ABC): + elif hasattr(output, "to_dict"): # Check if it's a MainArg-like object flat_output = output.to_dict() - flat_output["name"] = flat_output.get("name") - if isinstance(flat_output["name"], tuple): - flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) - elif isinstance(flat_output["name"], dict): - if len(flat_output["name"]) > 1: - raise ValueError( - "The output Name must be a single qualified name, a tuple or a " - "dict with one element. If you want to output multiple elements, " - "use Names." - ) - flat_output["name"] = dt.qnames(flat_output["name"])[0] - flat_output["names"] = flat_output.get( - "names", [flat_output["name"]] if flat_output["name"] is not None else None - ) + if flat_output["name"] is not None: + if isinstance(flat_output["name"], tuple): + flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) + elif isinstance(flat_output["name"], dict): + if len(flat_output["name"]) > 1: + raise ValueError( + "The output Name must be a single qualified name, a tuple or a " + "dict with one element. If you want to output multiple " + "elements, use 'names'." + ) + flat_output["name"] = dt.qnames(flat_output["name"])[0] + flat_output["names"] = [flat_output["name"]] if isinstance(flat_output["names"], dict): flat_output["names"] = dt.qnames(flat_output["names"]) elif isinstance(flat_output["names"][0], tuple): flat_output["names"] = [ dt.qname_from_tree_path(tp) for tp in flat_output["names"] ] - elif isinstance(flat_output["names"][0], dict): - # Happens if a dict was passed to Name. - flat_output["names"] = dt.qnames(flat_output["names"][0]) + else: + msg = format_errors_and_warnings( + f"Expected an instance of class Output, got {type(output)}" + ) + raise TypeError(msg) return flat_output @@ -195,7 +196,7 @@ def _resolve_dynamic_interface_objects_to_static_nodes( among the functions with the same leaf name the one that satisfies the include condition. - Fails if multiple functions with the same leaf name satisfy the include condition. + Fail if multiple functions with the same leaf name satisfy the include condition. Parameters ---------- @@ -213,7 +214,7 @@ def _resolve_dynamic_interface_objects_to_static_nodes( path_to_idif: dict[tuple[str, ...], list[InputDependentInterfaceFunction]] = {} for orig_p, orig_object in flat_interface_objects.items(): if isinstance(orig_object, InputDependentInterfaceFunction): - new_path = orig_p[:-1] + (orig_object.leaf_name,) + new_path = (*orig_p[:-1], orig_object.leaf_name) if new_path not in path_to_idif: path_to_idif[new_path] = [] path_to_idif[new_path].append(orig_object) @@ -322,12 +323,14 @@ def _load_orig_functions() -> dict[tuple[str, ...], InterfaceFunction | Interfac ] = {} for path in paths: module = load_module(path=path, root=root) - for name, obj in inspect.getmembers(module): + for qname, obj in inspect.getmembers(module): + # If nesting happens (e.g., df+mapper), we need to be consistent. + tree_path = dt.tree_path_from_qname(qname) if isinstance(obj, InterfaceFunction | InterfaceInput): if obj.in_top_level_namespace: - flat_functions[(name,)] = obj + flat_functions[tree_path] = obj else: - flat_functions[(str(module.__name__), name)] = obj + flat_functions[(str(module.__name__), *tree_path)] = obj return flat_functions diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 593c6d0651..ea04dae6f7 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -1,167 +1,140 @@ from __future__ import annotations -import datetime -from dataclasses import asdict, dataclass, field -from pathlib import Path -from typing import Any, Literal, get_type_hints - -import dags.tree as dt -import pandas as pd - -from ttsim.interface_dag_elements.interface_node_objects import ( - FailOrWarnFunction, - InterfaceFunction, -) - - -class NestedInit: - def __init_subclass__(cls) -> None: - super().__init_subclass__() - for name, type_ in get_type_hints(cls).items(): - if hasattr(type_, "__origin__") and type_.__origin__ is type: - setattr(cls, name, type_()) - - def __setattr__(self, name: str, value: Any) -> None: # noqa: ANN401 - if name in get_type_hints(self.__class__): - object.__setattr__(self, name, value) - else: - raise AttributeError( - f"'{self.__class__.__name__}' has no attribute '{name}'" - ) - - -@dataclass -class WarnIf(NestedInit): - functions_and_data_columns_overlap: FailOrWarnFunction | None = None - - -@dataclass -class FailIf(NestedInit): - active_periods_overlap: FailOrWarnFunction | None = None - any_paths_are_invalid: FailOrWarnFunction | None = None - paths_are_missing_in_targets_tree_mapper: FailOrWarnFunction | None = None - environment_is_invalid: FailOrWarnFunction | None = None - foreign_keys_are_invalid_in_data: FailOrWarnFunction | None = None - group_ids_are_outside_top_level_namespace: FailOrWarnFunction | None = None - group_variables_are_not_constant_within_groups: FailOrWarnFunction | None = None - input_data_tree_is_invalid: FailOrWarnFunction | None = None - input_arrays_have_different_lengths: FailOrWarnFunction | None = None - invalid_p_id_values: FailOrWarnFunction | None = None - input_df_has_bool_or_numeric_column_names: FailOrWarnFunction | None = None - input_df_mapper_columns_missing_in_df: FailOrWarnFunction | None = None - input_df_mapper_has_incorrect_format: FailOrWarnFunction | None = None - non_convertible_objects_in_results_tree: FailOrWarnFunction | None = None - root_nodes_are_missing: FailOrWarnFunction | None = None - targets_are_not_in_specialized_environment_or_data: FailOrWarnFunction | None = None - targets_tree_is_invalid: FailOrWarnFunction | None = None - - -@dataclass -class Results(NestedInit): - df_with_mapper: InterfaceFunction | None = None - df_with_nested_columns: InterfaceFunction | None = None - tree: InterfaceFunction | None = None - - -@dataclass -class RawResults(NestedInit): - columns: InterfaceFunction | None = None - combined: InterfaceFunction | None = None - from_input_data: InterfaceFunction | None = None - params: InterfaceFunction | None = None - - -@dataclass -class SpecializedEnvironment(NestedInit): - without_tree_logic_and_with_derived_functions: InterfaceFunction | None = None - with_processed_params_and_scalars: InterfaceFunction | None = None - with_partialled_params_and_scalars: InterfaceFunction | None = None - tax_transfer_dag: InterfaceFunction | None = None - tax_transfer_function: InterfaceFunction | None = None - - -@dataclass -class Targets(NestedInit): - qname: InterfaceFunction | None = None - tree: dict[str, Any] | None = None - - -@dataclass -class Labels(NestedInit): - column_targets: InterfaceFunction | None = None - grouping_levels: InterfaceFunction | None = None - input_data_targets: InterfaceFunction | None = None - param_targets: InterfaceFunction | None = None - processed_data_columns: InterfaceFunction | None = None - input_columns: InterfaceFunction | None = None - root_nodes: InterfaceFunction | None = None - top_level_namespace: InterfaceFunction | None = None - - -@dataclass -class DfAndMapper(NestedInit): - df: pd.DataFrame | None = None - mapper: dict[str, Any] | None = None - - -@dataclass -class InputData(NestedInit): +from dataclasses import dataclass, field + + +@dataclass(frozen=True) +class WarnIf: + functions_and_data_columns_overlap: str = "functions_and_data_columns_overlap" + + +@dataclass(frozen=True) +class FailIf: + active_periods_overlap: str = "active_periods_overlap" + any_paths_are_invalid: str = "any_paths_are_invalid" + environment_is_invalid: str = "environment_is_invalid" + foreign_keys_are_invalid_in_data: str = "foreign_keys_are_invalid_in_data" + group_ids_are_outside_top_level_namespace: str = ( + "group_ids_are_outside_top_level_namespace" + ) + group_variables_are_not_constant_within_groups: str = ( + "group_variables_are_not_constant_within_groups" + ) + input_arrays_have_different_lengths: str = "input_arrays_have_different_lengths" + input_data_tree_is_invalid: str = "input_data_tree_is_invalid" + input_df_has_bool_or_numeric_column_names: str = ( + "input_df_has_bool_or_numeric_column_names" + ) + input_df_mapper_columns_missing_in_df: str = "input_df_mapper_columns_missing_in_df" + input_df_mapper_has_incorrect_format: str = "input_df_mapper_has_incorrect_format" + invalid_p_id_values: str = "invalid_p_id_values" + non_convertible_objects_in_results_tree: str = ( + "non_convertible_objects_in_results_tree" + ) + paths_are_missing_in_targets_tree_mapper: str = ( + "paths_are_missing_in_targets_tree_mapper" + ) + root_nodes_are_missing: str = "root_nodes_are_missing" + targets_are_not_in_specialized_environment_or_data: str = ( + "targets_are_not_in_specialized_environment_or_data" + ) + targets_tree_is_invalid: str = "targets_tree_is_invalid" + + +@dataclass(frozen=True) +class Results: + df_with_mapper: str = "df_with_mapper" + df_with_nested_columns: str = "df_with_nested_columns" + tree: str = "tree" + + +@dataclass(frozen=True) +class RawResults: + columns: str = "columns" + combined: str = "combined" + from_input_data: str = "from_input_data" + params: str = "params" + + +@dataclass(frozen=True) +class SpecializedEnvironment: + without_tree_logic_and_with_derived_functions: str = ( + "without_tree_logic_and_with_derived_functions" + ) + with_processed_params_and_scalars: str = "with_processed_params_and_scalars" + with_partialled_params_and_scalars: str = "with_partialled_params_and_scalars" + tax_transfer_dag: str = "tax_transfer_dag" + tax_transfer_function: str = "tax_transfer_function" + + +@dataclass(frozen=True) +class Targets: + qname: str = "qname" + tree: str = "tree" + + +@dataclass(frozen=True) +class Labels: + column_targets: str = "column_targets" + grouping_levels: str = "grouping_levels" + input_data_targets: str = "input_data_targets" + param_targets: str = "param_targets" + processed_data_columns: str = "processed_data_columns" + input_columns: str = "input_columns" + root_nodes: str = "root_nodes" + top_level_namespace: str = "top_level_namespace" + + +@dataclass(frozen=True) +class DfAndMapper: + df: str = "df" + mapper: str = "mapper" + + +@dataclass(frozen=True) +class InputData: df_and_mapper: DfAndMapper = field(default_factory=DfAndMapper) - df_with_nested_columns: InterfaceFunction | None = None - flat: InterfaceFunction | None = None - tree: InterfaceFunction | None = None + df_with_nested_columns: str = "df_with_nested_columns" + flat: str = "flat" + tree: str = "tree" -@dataclass -class OrigPolicyObjects(NestedInit): - column_objects_and_param_functions: InterfaceFunction | None = None - param_specs: InterfaceFunction | None = None - root: Path | None = None +@dataclass(frozen=True) +class OrigPolicyObjects: + column_objects_and_param_functions: str = "column_objects_and_param_functions" + param_specs: str = "param_specs" + # Do not include root here, will be pre-defined in user-facing implementations. -@dataclass -class Templates(NestedInit): - input_data_dtypes: InterfaceFunction | None = None +@dataclass(frozen=True) +class Templates: + input_data_dtypes: str = "input_data_dtypes" -@dataclass -class _InterfaceDAGElements: - backend: Literal["numpy", "jax"] = "numpy" - """The backend to use for computations.""" - date_str: str | None = None - input_data: InputData = field(default_factory=InputData) - targets: Targets = field(default_factory=Targets) - orig_policy_objects: OrigPolicyObjects = field(default_factory=OrigPolicyObjects) - raw_results: RawResults = field(default_factory=RawResults) +@dataclass(frozen=True) +class AllOutputNames: + policy_environment: str = "policy_environment" + templates: Templates = field(default_factory=Templates) results: Results = field(default_factory=Results) + orig_policy_objects: OrigPolicyObjects = field(default_factory=OrigPolicyObjects) specialized_environment: SpecializedEnvironment = field( default_factory=SpecializedEnvironment ) - policy_environment: InterfaceFunction | None = None - processed_data: InterfaceFunction | None = None - dnp: InterfaceFunction | None = None - xnp: InterfaceFunction | None = None - date: datetime.date | None = None + processed_data: str = "processed_data" + raw_results: RawResults = field(default_factory=RawResults) labels: Labels = field(default_factory=Labels) - rounding: bool = True - templates: Templates = field(default_factory=Templates) + input_data: InputData = field(default_factory=InputData) + targets: Targets = field(default_factory=Targets) + backend: str = "backend" + date_str: str = "date_str" + date: str = "date" + evaluation_date_str: str = "evaluation_date_str" + evaluation_date: str = "evaluation_date" + policy_date_str: str = "policy_date_str" + policy_date: str = "policy_date" + xnp: str = "xnp" + dnp: str = "dnp" + num_segments: str = "num_segments" + rounding: str = "rounding" warn_if: WarnIf = field(default_factory=WarnIf) fail_if: FailIf = field(default_factory=FailIf) - - def __setattr__(self, name: str, value: Any) -> None: # noqa: ANN401 - object.__setattr__(self, name, value) - - def to_dict(self) -> dict[str, Any]: - # Skeleton comes from having all leaves equal to None. - flat = { - p: _getattr(path=p, obj=self) - for p in dt.tree_paths(asdict(_InterfaceDAGElements())) - } - return dt.unflatten_from_tree_paths(flat) - - -def _getattr(path: tuple[str, ...], obj: Any) -> Any: # noqa: ANN401 - val = obj.__getattribute__(path[0]) - if len(path) == 1: - return val - return _getattr(path[1:], val) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 7158e26b03..7cb1478875 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -37,16 +37,15 @@ FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, NestedData, - NestedPolicyEnvironment, NestedStrings, NestedTargetDict, OrderedQNames, OrigParamSpec, + PolicyEnvironment, QNameData, QNameDataColumns, - QNamePolicyEnvironment, - QNameSpecializedEnvironment0, - QNameSpecializedEnvironment2, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, UnorderedQNames, ) @@ -226,7 +225,7 @@ def active_periods_overlap( @fail_or_warn_function() def any_paths_are_invalid( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, input_data__tree: NestedData, targets__tree: NestedTargetDict, labels__top_level_namespace: UnorderedQNames, @@ -342,7 +341,7 @@ def invalid_p_id_values( @fail_or_warn_function() def environment_is_invalid( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, ) -> None: """Validate that the environment is a pytree with supported types.""" assert_valid_ttsim_pytree( @@ -360,7 +359,7 @@ def environment_is_invalid( def foreign_keys_are_invalid_in_data( labels__root_nodes: UnorderedQNames, processed_data: QNameData, - specialized_environment__without_tree_logic_and_with_derived_functions: QNamePolicyEnvironment, + specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, ) -> None: """ Check that all foreign keys are valid. @@ -415,7 +414,7 @@ def foreign_keys_are_invalid_in_data( @fail_or_warn_function() def group_ids_are_outside_top_level_namespace( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, ) -> None: """Fail if group ids are outside the top level namespace.""" group_ids_outside_top_level_namespace = { @@ -631,7 +630,7 @@ def input_df_mapper_has_incorrect_format( @fail_or_warn_function() def root_nodes_are_missing( specialized_environment__tax_transfer_dag: nx.DiGraph, - specialized_environment__with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, processed_data: QNameData, ) -> None: """Fail if root nodes are missing. @@ -672,7 +671,7 @@ def root_nodes_are_missing( @fail_or_warn_function() def targets_are_not_in_specialized_environment_or_data( - specialized_environment__without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, + specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, labels__processed_data_columns: QNameDataColumns, targets__qname: OrderedQNames, ) -> None: diff --git a/src/ttsim/interface_dag_elements/input_data.py b/src/ttsim/interface_dag_elements/input_data.py index 5dde30092c..2edf9ca1ad 100644 --- a/src/ttsim/interface_dag_elements/input_data.py +++ b/src/ttsim/interface_dag_elements/input_data.py @@ -25,12 +25,12 @@ ) -@interface_input() +@interface_input(leaf_name="df") def df_and_mapper__df() -> pd.DataFrame: pass -@interface_input() +@interface_input(leaf_name="mapper") def df_and_mapper__mapper() -> NestedInputsMapper: pass diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py index c1710347e6..c3fac47f7e 100644 --- a/src/ttsim/interface_dag_elements/labels.py +++ b/src/ttsim/interface_dag_elements/labels.py @@ -18,17 +18,17 @@ if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( - NestedPolicyEnvironment, OrderedQNames, + PolicyEnvironment, QNameData, - QNameSpecializedEnvironment0, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, UnorderedQNames, ) @interface_function() def grouping_levels( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, ) -> OrderedQNames: """The grouping levels of the policy environment.""" return tuple( @@ -40,7 +40,7 @@ def grouping_levels( @interface_function() def top_level_namespace( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, grouping_levels: OrderedQNames, ) -> UnorderedQNames: """Get the top level namespace. @@ -113,7 +113,7 @@ def processed_data_columns(processed_data: QNameData) -> UnorderedQNames: @interface_function() def input_columns( processed_data_columns: UnorderedQNames, - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, ) -> UnorderedQNames: """The (qualified) column names in the processed data or policy environment. @@ -194,7 +194,7 @@ def column_targets( @interface_function() def param_targets( - specialized_environment__without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, # noqa: E501 + specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 targets__qname: OrderedQNames, column_targets: OrderedQNames, ) -> OrderedQNames: diff --git a/src/ttsim/interface_dag_elements/orig_policy_objects.py b/src/ttsim/interface_dag_elements/orig_policy_objects.py index 36421cc7b5..696faf9415 100644 --- a/src/ttsim/interface_dag_elements/orig_policy_objects.py +++ b/src/ttsim/interface_dag_elements/orig_policy_objects.py @@ -37,7 +37,7 @@ def column_objects_and_param_functions( root: Path, ) -> FlatColumnObjectsParamFunctions: """ - Load the original ColumnObjectParamFunctions tree from the resource directory. + Load the original ColumnObjectParamFunctions dictionary from the resource directory. "Original" means: - Module names are not removed from the path. @@ -46,7 +46,7 @@ def column_objects_and_param_functions( Parameters ---------- root: - The resource directory to load the ColumnObjectParamFunctions tree from. + The resource directory to load the ColumnObjectParamFunctions dictionary from. """ return { k: v diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index b2b6427006..4a98639f07 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -37,8 +37,8 @@ FlatOrigParamSpecs, NestedColumnObjectsParamFunctions, NestedParamObjects, - NestedPolicyEnvironment, OrigParamSpec, + PolicyEnvironment, ) @@ -48,7 +48,7 @@ def policy_environment( orig_policy_objects__param_specs: FlatOrigParamSpecs, policy_date: datetime.date, xnp: ModuleType, -) -> NestedPolicyEnvironment: +) -> PolicyEnvironment: """ Set up the policy environment for a particular date. diff --git a/src/ttsim/interface_dag_elements/raw_results.py b/src/ttsim/interface_dag_elements/raw_results.py index c2d1247a79..a841b84ab6 100644 --- a/src/ttsim/interface_dag_elements/raw_results.py +++ b/src/ttsim/interface_dag_elements/raw_results.py @@ -10,7 +10,7 @@ from ttsim.interface_dag_elements.typing import ( OrderedQNames, QNameData, - QNameSpecializedEnvironment1, + SpecEnvWithProcessedParamsAndScalars, UnorderedQNames, ) @@ -29,7 +29,7 @@ def columns( @interface_function() def params( labels__param_targets: OrderedQNames, - specialized_environment__with_processed_params_and_scalars: QNameSpecializedEnvironment1, # noqa: E501 + specialized_environment__with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars, # noqa: E501 ) -> QNameData: return { pt: specialized_environment__with_processed_params_and_scalars[pt] diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index b00f70baef..1e9c611c6d 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -30,13 +30,12 @@ import networkx as nx from ttsim.interface_dag_elements.typing import ( - NestedPolicyEnvironment, OrderedQNames, + PolicyEnvironment, QNameData, - QNamePolicyEnvironment, - QNameSpecializedEnvironment0, - QNameSpecializedEnvironment1, - QNameSpecializedEnvironment2, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, + SpecEnvWithProcessedParamsAndScalars, UnorderedQNames, ) @@ -48,12 +47,12 @@ def rounding() -> bool: @interface_function() def without_tree_logic_and_with_derived_functions( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, targets__qname: OrderedQNames, labels__input_columns: UnorderedQNames, labels__top_level_namespace: UnorderedQNames, labels__grouping_levels: OrderedQNames, -) -> QNameSpecializedEnvironment0: +) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: """Return a flat policy environment with derived functions. Two steps: @@ -74,9 +73,9 @@ def without_tree_logic_and_with_derived_functions( def _remove_tree_logic_from_policy_environment( - qname_env: QNamePolicyEnvironment, + qname_env: dict[str, ColumnObject | ParamFunction | ParamObject], labels__top_level_namespace: UnorderedQNames, -) -> QNameSpecializedEnvironment0: +) -> dict[str, ColumnObject | ParamFunction | ParamObject]: """Map qualified names to column objects / param functions without tree logic.""" out = {} for name, obj in qname_env.items(): @@ -91,11 +90,11 @@ def _remove_tree_logic_from_policy_environment( def _add_derived_functions( - qname_env_without_tree_logic: QNameSpecializedEnvironment0, + qname_env_without_tree_logic: dict[str, ColumnObject | ParamFunction | ParamObject], targets: OrderedQNames, input_columns: UnorderedQNames, grouping_levels: OrderedQNames, -) -> QNameSpecializedEnvironment0: +) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: """Return a mapping of qualified names to functions operating on columns. Anything that is not a ColumnFunction is filtered out (e.g., ParamFunctions, @@ -157,13 +156,13 @@ def _add_derived_functions( @interface_function() def with_processed_params_and_scalars( - without_tree_logic_and_with_derived_functions: QNameSpecializedEnvironment0, + without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, processed_data: QNameData, backend: Literal["numpy", "jax"], xnp: ModuleType, dnp: ModuleType, evaluation_date: datetime.date, -) -> QNameSpecializedEnvironment1: +) -> SpecEnvWithProcessedParamsAndScalars: """Process the parameters and param functions, remove RawParams from the tree. Parameters @@ -238,14 +237,14 @@ def with_processed_params_and_scalars( @interface_function() def with_partialled_params_and_scalars( - with_processed_params_and_scalars: QNameSpecializedEnvironment1, + with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars, rounding: bool, num_segments: int, backend: Literal["numpy", "jax"], xnp: ModuleType, dnp: ModuleType, evaluation_date: datetime.date, -) -> QNameSpecializedEnvironment2: +) -> SpecEnvWithPartialledParamsAndScalars: """Partial parameters to functions such that they disappear from the DAG. Parameters @@ -327,7 +326,7 @@ def _apply_rounding(element: ColumnFunction, xnp: ModuleType) -> ColumnFunction: @interface_function() def tax_transfer_dag( - with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, labels__column_targets: OrderedQNames, ) -> nx.DiGraph: """Thin wrapper around `create_dag`.""" @@ -340,7 +339,7 @@ def tax_transfer_dag( @interface_function() def tax_transfer_function( tax_transfer_dag: nx.DiGraph, - with_partialled_params_and_scalars: QNameSpecializedEnvironment2, + with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, labels__column_targets: OrderedQNames, backend: Literal["numpy", "jax"], ) -> Callable[[QNameData], QNameData]: diff --git a/src/ttsim/interface_dag_elements/targets.py b/src/ttsim/interface_dag_elements/targets.py index eff7925a4d..208eb8ca7d 100644 --- a/src/ttsim/interface_dag_elements/targets.py +++ b/src/ttsim/interface_dag_elements/targets.py @@ -11,14 +11,14 @@ if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( - NestedPolicyEnvironment, NestedTargetDict, OrderedQNames, + PolicyEnvironment, ) @interface_function() -def tree(policy_environment: NestedPolicyEnvironment) -> NestedTargetDict: +def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict: """Targets as a tree. Will typically be provided by the user. If requesting `df_with_mapper` as the targets, the leaves must be the desired diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index db179aaf1e..969db080bf 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -11,17 +11,17 @@ if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( NestedInputStructureDict, - NestedPolicyEnvironment, OrderedQNames, - QNameSpecializedEnvironment0, + PolicyEnvironment, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, UnorderedQNames, ) @interface_function() def input_data_dtypes( - specialized_environment__with_partialled_params_and_scalars: QNameSpecializedEnvironment0, # noqa: E501 - policy_environment: NestedPolicyEnvironment, + specialized_environment__with_partialled_params_and_scalars: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 + policy_environment: PolicyEnvironment, targets__qname: OrderedQNames, labels__top_level_namespace: UnorderedQNames, ) -> NestedInputStructureDict: diff --git a/src/ttsim/interface_dag_elements/typing.py b/src/ttsim/interface_dag_elements/typing.py index 1a87b2de3f..1b07fdd7e6 100644 --- a/src/ttsim/interface_dag_elements/typing.py +++ b/src/ttsim/interface_dag_elements/typing.py @@ -98,22 +98,17 @@ """Flat mapping of paths to yaml contents; the leaf name is also the last element of the key.""" # noqa: E501 NestedParamObjects = Mapping[str, ParamObject | "NestedParamObjects"] """Tree with param objects.""" - NestedPolicyEnvironment = Mapping[ + PolicyEnvironment = Mapping[ str, - ColumnObject | ParamFunction | ParamObject | "NestedPolicyEnvironment", + ColumnObject | ParamFunction | ParamObject | "PolicyEnvironment", ] """Tree of column objects, param functions, and param objects.""" - QNamePolicyEnvironment = dict[ - str, - ColumnObject | ParamFunction | ParamObject, - ] - """Tree of column objects, param functions, and param objects.""" - QNameSpecializedEnvironment0 = Mapping[ + SpecEnvWithoutTreeLogicAndWithDerivedFunctions = Mapping[ str, ColumnObject | ParamFunction | ParamObject | int | float | bool, ] """Map qualified names to column objects, param functions, param objects, or scalars from processed data.""" # noqa: E501 - QNameSpecializedEnvironment1 = Mapping[str, ColumnObject | Any] + SpecEnvWithProcessedParamsAndScalars = Mapping[str, ColumnObject | Any] """Map qualified names to column objects and anything that comes out of processing the params.""" # noqa: E501 - QNameSpecializedEnvironment2 = Mapping[str, ColumnFunction] + SpecEnvWithPartialledParamsAndScalars = Mapping[str, ColumnFunction] """Map qualified names to column functions that depend on columns only.""" diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py index 721b5a1a1b..9f6f1cf713 100644 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -13,8 +13,8 @@ if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( - NestedPolicyEnvironment, OrderedQNames, + PolicyEnvironment, QNameDataColumns, ) @@ -66,7 +66,7 @@ def __init__(self, columns_overriding_functions: OrderedQNames) -> None: @fail_or_warn_function() def functions_and_data_columns_overlap( - policy_environment: NestedPolicyEnvironment, + policy_environment: PolicyEnvironment, labels__processed_data_columns: QNameDataColumns, ) -> None: """Warn if functions are overridden by data.""" diff --git a/src/ttsim/main_args.py b/src/ttsim/main_args.py new file mode 100644 index 0000000000..c004fbd273 --- /dev/null +++ b/src/ttsim/main_args.py @@ -0,0 +1,197 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from collections.abc import Callable, Iterable + from pathlib import Path + + import networkx as nx + import pandas as pd + + from ttsim.interface_dag_elements import AllOutputNames + from ttsim.interface_dag_elements.typing import ( + FlatColumnObjectsParamFunctions, + FlatData, + FlatOrigParamSpecs, + NestedData, + NestedStrings, + NestedTargetDict, + OrderedQNames, + QNameData, + QNameStrings, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, + SpecEnvWithProcessedParamsAndScalars, + UnorderedQNames, + ) + + +@dataclass(frozen=True) +class MainArg: + def to_dict(self) -> dict[str, Any]: + return self.__dict__ + + +@dataclass(frozen=True) +class Output(MainArg): + name: str | tuple[str, ...] | None + names: Iterable[str | tuple[str, ...]] | NestedTargetDict | None + + def __init__(self, *args: Any, **kwargs: Any): # noqa: ANN401, ARG002, ANN204 + raise RuntimeError("Use any of the class methods to instantiate this class.") + + @classmethod + def name(cls, name: AllOutputNames | str | tuple[str, ...]) -> Output: + """A single output name. Could be a qualified name or a tree path.""" + obj = object.__new__(cls) + object.__setattr__(obj, "name", name) + object.__setattr__(obj, "names", None) + return obj + + @classmethod + def names(cls, names: Iterable[AllOutputNames | str | tuple[str, ...]]) -> Output: + """An iterable of output names. Could be qualified names, tree paths, or a pytree.""" # noqa: E501 + obj = object.__new__(cls) + object.__setattr__(obj, "name", None) + object.__setattr__(obj, "names", names) + return obj + + +@dataclass(frozen=True) +class DfAndMapper: + df: pd.DataFrame + """A dataframe with arbitrary columns.""" + mapper: NestedStrings + """A nested dictionary mapping expected inputs to column names in df.""" + + def to_dict(self) -> dict[str, Any]: + return self.__dict__ + + +@dataclass(frozen=True) +class InputData(MainArg): + df_and_mapper: DfAndMapper | None + df_with_nested_columns: pd.DataFrame | None + tree: NestedData | None + flat: FlatData | None + qname: QNameData | None + + def __init__(self, *args: Any, **kwargs: Any): # noqa: ANN401, ARG002, ANN204 + raise RuntimeError("Use any of the class methods to instantiate this class.") + + @classmethod + def df_and_mapper(cls, df: pd.DataFrame, mapper: NestedStrings) -> InputData: + """A df with arbitrary columns and a nested dictionary mapping expected inputs to column names in this df.""" # noqa: E501 + obj = object.__new__(cls) + object.__setattr__(obj, "df_and_mapper", DfAndMapper(df=df, mapper=mapper)) + object.__setattr__(obj, "df_with_nested_columns", None) + object.__setattr__(obj, "tree", None) + object.__setattr__(obj, "flat", None) + object.__setattr__(obj, "qname", None) + return obj + + @classmethod + def df_with_nested_columns(cls, df_with_nested_columns: pd.DataFrame) -> InputData: + """A df with a MultiIndex in the column dimension, elements correspond to expected tree paths.""" # noqa: E501 + obj = object.__new__(cls) + object.__setattr__(obj, "df_and_mapper", None) + object.__setattr__(obj, "df_with_nested_columns", df_with_nested_columns) + object.__setattr__(obj, "tree", None) + object.__setattr__(obj, "flat", None) + object.__setattr__(obj, "qname", None) + return obj + + @classmethod + def tree(cls, tree: NestedData) -> InputData: + """A nested dictionary mapping expected input names to vectors of data.""" + obj = object.__new__(cls) + object.__setattr__(obj, "df_and_mapper", None) + object.__setattr__(obj, "df_with_nested_columns", None) + object.__setattr__(obj, "tree", tree) + object.__setattr__(obj, "flat", None) + object.__setattr__(obj, "qname", None) + return obj + + @classmethod + def flat(cls, flat: FlatData) -> InputData: + """A dictionary mapping tree paths to vectors of data.""" + obj = object.__new__(cls) + object.__setattr__(obj, "df_and_mapper", None) + object.__setattr__(obj, "df_with_nested_columns", None) + object.__setattr__(obj, "tree", None) + object.__setattr__(obj, "flat", flat) + object.__setattr__(obj, "qname", None) + return obj + + @classmethod + def qname(cls, qname: QNameData) -> InputData: + """A dictionary mapping qualified names to vectors of data.""" + obj = object.__new__(cls) + object.__setattr__(obj, "df_and_mapper", None) + object.__setattr__(obj, "df_with_nested_columns", None) + object.__setattr__(obj, "tree", None) + object.__setattr__(obj, "flat", None) + object.__setattr__(obj, "qname", qname) + return obj + + def to_dict(self) -> dict[str, Any]: + if self.df_and_mapper is not None: + return {"df_and_mapper": self.df_and_mapper.to_dict()} + return {k: v for k, v in self.__dict__.items() if v is not None} + + +@dataclass(frozen=True) +class OrigPolicyObjects(MainArg): + root: Path | None = None + column_objects_and_param_functions: FlatColumnObjectsParamFunctions | None = None + param_specs: FlatOrigParamSpecs | None = None + + +@dataclass(frozen=True) +class Labels(MainArg): + column_targets: OrderedQNames | None = None + grouping_levels: OrderedQNames | None = None + input_data_targets: OrderedQNames | None = None + param_targets: OrderedQNames | None = None + processed_data_columns: UnorderedQNames | None = None + input_columns: UnorderedQNames | None = None + root_nodes: UnorderedQNames | None = None + top_level_namespace: UnorderedQNames | None = None + + +@dataclass(frozen=True) +class RawResults(MainArg): + columns: QNameData | None = None + params: QNameData | None = None + from_input_data: QNameData | None = None + combined: QNameData | None = None + + +@dataclass(frozen=True) +class Results(MainArg): + df_with_mapper: pd.DataFrame | None = None + df_with_nested_columns: pd.DataFrame | None = None + tree: NestedData | None = None + + +@dataclass(frozen=True) +class Targets(MainArg): + qname: QNameStrings | None = None + tree: NestedStrings | None = None + + +@dataclass(frozen=True) +class SpecializedEnvironment(MainArg): + without_tree_logic_and_with_derived_functions: ( + SpecEnvWithoutTreeLogicAndWithDerivedFunctions | None + ) = None + with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars | None = ( + None + ) + with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars | None = ( + None + ) + tax_transfer_dag: nx.DiGraph | None = None + tax_transfer_function: Callable[[QNameData], QNameData] | None = None diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 3cbbf086fb..11312191ba 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -14,7 +14,6 @@ import plotly.graph_objects as go from ttsim import main -from ttsim.arg_templates import output from ttsim.interface_dag import load_flat_interface_functions_and_inputs from ttsim.interface_dag_elements.interface_node_objects import ( FailOrWarnFunction, @@ -23,6 +22,7 @@ InterfaceInput, interface_function, ) +from ttsim.main_args import Output from ttsim.tt_dag_elements import ( ColumnFunction, ParamFunction, @@ -39,8 +39,8 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import ( - NestedPolicyEnvironment, - QNameSpecializedEnvironment0, + PolicyEnvironment, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, ) @@ -108,7 +108,7 @@ def plot_tt_dag( date_str=date_str, orig_policy_objects={"root": root}, backend="numpy", - output=output.Name("policy_environment"), + output=Output.name("policy_environment"), ) if node_selector: @@ -226,7 +226,7 @@ def _qnames_of_idif_to_their_ancestors( def _get_tt_dag_with_node_metadata( - environment: NestedPolicyEnvironment, + environment: PolicyEnvironment, node_selector: _QNameNodeSelector | None = None, include_params: bool = True, include_other_objects: bool = False, @@ -249,7 +249,7 @@ def _get_tt_dag_with_node_metadata( labels={"processed_data_columns": qnames_policy_inputs}, targets={"qname": qnames_to_plot}, backend="numpy", - output=output.Name(tgt), + output=Output.name(tgt), ) all_nodes = { @@ -294,7 +294,9 @@ def _get_tt_dag_with_node_metadata( return selected_dag -def _get_node_descriptions(env: QNameSpecializedEnvironment0) -> dict[str, str]: +def _get_node_descriptions( + env: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, +) -> dict[str, str]: """Get the descriptions of the nodes in the environment.""" out = {} for qn, n in env.items(): diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index e3314784a9..4d97159afc 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -10,7 +10,7 @@ import pandas as pd import yaml -from ttsim import main, merge_trees, output +from ttsim import Output, main, merge_trees from ttsim.interface_dag_elements.data_converters import ( nested_data_to_df_with_nested_columns, ) @@ -33,7 +33,7 @@ FlatOrigParamSpecs, NestedData, NestedInputStructureDict, - NestedPolicyEnvironment, + PolicyEnvironment, ) @@ -42,13 +42,13 @@ def cached_policy_environment( date: datetime.date, root: Path, backend: Literal["numpy", "jax"], -) -> NestedPolicyEnvironment: +) -> PolicyEnvironment: return main( date=date, orig_policy_objects={"root": root}, backend=backend, fail_and_warn=False, - output=output.Name("policy_environment"), + output=Output.name("policy_environment"), ) @@ -100,7 +100,7 @@ def execute_test( rounding=True, backend=backend, fail_and_warn=False, - output=output.Name("results__df_with_nested_columns"), + output=Output.name("results__df_with_nested_columns"), ) if test.expected_output_tree: @@ -239,7 +239,7 @@ def check_env_completeness( environment = main( date=date, backend="numpy", - output=output.Name("policy_environment"), + output=Output.name("policy_environment"), orig_policy_objects=orig_policy_objects, ) qname_environment = dt.flatten_to_qnames(environment) @@ -252,7 +252,7 @@ def check_env_completeness( labels={"processed_data_columns": qnames_policy_inputs}, targets={"qname": list(qname_environment)}, backend="numpy", - output=output.Name(tgt), + output=Output.name(tgt), ) all_nodes = { qn: dummy_callable(n) if not callable(n) else n diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 2eeeecf022..cc89c56c0a 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -8,8 +8,8 @@ from numpy.testing import assert_array_equal from ttsim import ( + Output, main, - output, ) from ttsim.interface_dag_elements.data_converters import ( df_with_mapped_columns_to_flat_data, @@ -226,7 +226,7 @@ def test_nested_data_to_dataframe( targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) result_df = nested_data_to_df_with_mapped_columns( nested_data_to_convert=results__tree, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index e905856a34..4cdeb79ca4 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -11,7 +11,7 @@ import pandas as pd import pytest -from ttsim import main, output +from ttsim import Output, main from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -46,8 +46,8 @@ FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, IntColumn, - NestedPolicyEnvironment, OrigParamSpec, + PolicyEnvironment, ) _GENERIC_PARAM_HEADER = { @@ -127,12 +127,12 @@ def minimal_input_data(): } -def mettsim_environment(backend) -> NestedPolicyEnvironment: +def mettsim_environment(backend) -> PolicyEnvironment: return main( orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, date=datetime.date(2025, 1, 1), backend=backend, - output=output.Name("policy_environment"), + output=Output.name("policy_environment"), ) @@ -542,7 +542,7 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) with pytest.raises( ValueError, @@ -666,7 +666,7 @@ def test_fail_if_invalid_p_id_values_via_main(backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__invalid_p_id_values"), + output=Output.name("fail_if__invalid_p_id_values"), ) @@ -776,7 +776,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Names(["processed_data", "results__tree"]), + output=Output.names(["processed_data", "results__tree"]), ) with pytest.raises(TypeError, match=match): non_convertible_objects_in_results_tree( @@ -817,7 +817,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Names(["processed_data", "results__tree"]), + output=Output.names(["processed_data", "results__tree"]), ) with pytest.raises(ValueError, match=match): non_convertible_objects_in_results_tree( @@ -849,7 +849,7 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__invalid_p_id_values"), + output=Output.name("fail_if__invalid_p_id_values"), ) @@ -877,7 +877,7 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__invalid_p_id_values"), + output=Output.name("fail_if__invalid_p_id_values"), ) @@ -924,7 +924,7 @@ def test_fail_if_input_arrays_have_different_lengths(backend): targets={"tree": {}}, rounding=False, backend=backend, - output=output.Name("fail_if__input_arrays_have_different_lengths"), + output=Output.name("fail_if__input_arrays_have_different_lengths"), ) @@ -951,7 +951,7 @@ def c(b): targets={"tree": {"c": None}}, rounding=False, backend=backend, - output=output.Names(["results__tree", "fail_if__root_nodes_are_missing"]), + output=Output.names(["results__tree", "fail_if__root_nodes_are_missing"]), ) @@ -998,7 +998,7 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( targets={"tree": {"unknown_target": None}}, rounding=False, backend=backend, - output=output.Name( + output=Output.name( "fail_if__targets_are_not_in_specialized_environment_or_data" ), ) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index a4d6201b94..784c8da794 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -8,7 +8,7 @@ import pytest from ttsim import main -from ttsim.arg_templates import input_data, output +from ttsim.main_args import InputData, Output from ttsim.plot_dag import ( plot_tt_dag, ) @@ -42,7 +42,7 @@ def get_orig_mettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": METTSIM_ROOT}, - output=output.Names( + output=Output.names( [ "orig_policy_objects__column_objects_and_param_functions", "orig_policy_objects__param_specs", @@ -121,9 +121,9 @@ def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "ja ): main( date_str="2020-01-01", - input_data=input_data.Flat(data), + input_data=InputData.flat(data), orig_policy_objects={"root": METTSIM_ROOT}, targets={"tree": {"property_tax": {"amount_y": None}}}, - output=output.Names(["results__tree"]), + output=Output.names(["results__tree"]), backend=backend, ) diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index 8de1c436a7..bd5f893380 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import main, output +from ttsim import Output, main from ttsim.interface_dag_elements.orig_policy_objects import ( column_objects_and_param_functions, ) @@ -82,7 +82,7 @@ def test_input_is_recognized_as_potential_group_id(backend): orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - output=output.Name("labels__grouping_levels"), + output=Output.name("labels__grouping_levels"), ) @@ -91,7 +91,7 @@ def test_p_id_not_recognized_as_potential_group_id(backend): orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - output=output.Name("labels__grouping_levels"), + output=Output.name("labels__grouping_levels"), ) diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 8511f576af..787e2ec766 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import main, merge_trees, output +from ttsim import Output, main, merge_trees from ttsim.interface_dag_elements.specialized_environment import ( with_partialled_params_and_scalars, with_processed_params_and_scalars, @@ -30,7 +30,7 @@ ) if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import IntColumn, NestedPolicyEnvironment + from ttsim.interface_dag_elements.typing import IntColumn, PolicyEnvironment @policy_input() @@ -203,7 +203,7 @@ def foo_fam(foo: int, fam_id: int) -> int: @pytest.fixture(scope="module") -def mettsim_environment() -> NestedPolicyEnvironment: +def mettsim_environment() -> PolicyEnvironment: return main( inputs={ "orig_policy_objects__root": Path(__file__).parent.parent / "mettsim", @@ -399,7 +399,7 @@ def test_create_agg_by_group_functions( targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) @@ -416,7 +416,7 @@ def test_output_is_tree(minimal_input_data, backend, xnp): targets={"tree": {"module": {"some_func": None}}}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) assert isinstance(out, dict) @@ -449,7 +449,7 @@ def test_params_target_is_allowed(minimal_input_data): targets={"tree": {"some_param": None, "module": {"some_func": None}}}, rounding=False, backend="numpy", - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) assert isinstance(out, dict) @@ -481,7 +481,7 @@ def b(a: int) -> int: targets={"tree": {"b": None}}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) numpy.testing.assert_array_almost_equal( results__tree["b"], @@ -554,7 +554,7 @@ def test_user_provided_aggregate_by_group_specs(backend): targets={"tree": {"module_name": {"betrag_m_fam": None}}}, rounding=False, backend=backend, - output=output.Name("results__df_with_nested_columns"), + output=Output.name("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -598,7 +598,7 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, rounding=False, backend=backend, - output=output.Name("results__df_with_nested_columns"), + output=Output.name("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -648,7 +648,7 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, rounding=False, backend=backend, - output=output.Name("results__df_with_nested_columns"), + output=Output.name("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -735,7 +735,7 @@ def source() -> int: targets={"tree": target_tree}, rounding=False, backend=backend, - output=output.Name("results__df_with_nested_columns"), + output=Output.name("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -850,7 +850,7 @@ def test_can_override_ttsim_objects_with_data( targets={"tree": targets__tree}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) flat_actual = dt.flatten_to_tree_paths(actual) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index 16678d1962..3383e318ac 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -4,7 +4,7 @@ import numpy -from ttsim import main, output +from ttsim import Output, main from ttsim.testing_utils import ( load_policy_test_data, ) @@ -90,7 +90,7 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=output.Name("templates__input_data_dtypes"), + output=Output.name("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} @@ -117,7 +117,7 @@ def test_template_all_outputs_with_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=output.Name("templates__input_data_dtypes"), + output=Output.name("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} @@ -136,7 +136,7 @@ def test_template_output_y_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=output.Name("templates__input_data_dtypes"), + output=Output.name("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}} @@ -164,6 +164,6 @@ def test_template_output_x_with_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=output.Name("templates__input_data_dtypes"), + output=Output.name("templates__input_data_dtypes"), ) assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index 8b9e0b5c0d..cf1520810a 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -4,7 +4,7 @@ import pandas as pd -from ttsim import main, output +from ttsim import Output, main from ttsim.interface_dag_elements import warn_if from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -36,7 +36,7 @@ def test_warn_if_functions_and_data_columns_overlap(backend): targets={"tree": {"some_target": None}}, rounding=False, backend=backend, - output=output.Name("warn_if__functions_and_data_columns_overlap"), + output=Output.name("warn_if__functions_and_data_columns_overlap"), ) # Check that we got exactly one warning assert len(w) == 1 @@ -61,5 +61,5 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) targets={"tree": {"some_func": None}}, rounding=False, backend=backend, - output=output.Name("warn_if__functions_and_data_columns_overlap"), + output=Output.name("warn_if__functions_and_data_columns_overlap"), ) diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index bb2451078c..f1f0b11fcc 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -4,7 +4,7 @@ import pandas as pd import pytest -from ttsim import input_data, main, output +from ttsim import InputData, Output, main DF_WITH_NESTED_COLUMNS = pd.DataFrame( { @@ -81,8 +81,8 @@ "input_data_arg", [ # Correct way to do it - input_data.DfAndMapper(df=DF_FOR_MAPPER, mapper=INPUT_DF_MAPPER), - input_data.DfWithNestedColumns(data=DF_WITH_NESTED_COLUMNS), + InputData.df_and_mapper(df=DF_FOR_MAPPER, mapper=INPUT_DF_MAPPER), + InputData.df_with_nested_columns(DF_WITH_NESTED_COLUMNS), # May or may not continue to work. {"df_and_mapper": {"df": DF_FOR_MAPPER, "mapper": INPUT_DF_MAPPER}}, {"df_with_nested_columns": DF_WITH_NESTED_COLUMNS}, @@ -96,7 +96,7 @@ def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): rounding=False, orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend=backend, - output=output.Name("results__df_with_mapper"), + output=Output.name("results__df_with_mapper"), ) pd.testing.assert_frame_equal( EXPECTED_RESULTS, diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 48bd1cddac..437dc0c9c8 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -1,20 +1,22 @@ from __future__ import annotations import inspect +from dataclasses import asdict from typing import Any import dags import dags.tree as dt import pytest -from ttsim import arg_templates +from ttsim import InputData, OrigPolicyObjects, Output, Targets from ttsim.interface_dag import ( _fail_if_requested_nodes_cannot_be_found, _harmonize_inputs, - _harmonize_outputs, + _harmonize_output, _resolve_dynamic_interface_objects_to_static_nodes, load_flat_interface_functions_and_inputs, ) +from ttsim.interface_dag_elements import AllOutputNames from ttsim.interface_dag_elements.fail_if import format_list_linewise from ttsim.interface_dag_elements.interface_node_objects import ( InputDependentInterfaceFunction, @@ -74,19 +76,15 @@ def test_load_flat_interface_functions_and_inputs() -> None: def test_interface_dag_is_complete() -> None: - # Convert InputDependentInterfaceFunctions to InterfaceInputs. - nodes_without_idifs = {} - for p, n in load_flat_interface_functions_and_inputs().items(): - if isinstance(n, InputDependentInterfaceFunction): - interface_input = _replace_idif_with_interface_inputs(n) - new_path = p[:-1] + (interface_input.leaf_name,) - nodes_without_idifs[dt.qname_from_tree_path(new_path)] = interface_input - else: - nodes_without_idifs[dt.qname_from_tree_path(p)] = n + # This will keep only one of possibly many InputDependentInterfaceFunctions. Here, + # we only care about some function with a leaf name, not the precise content. + nodes = { + dt.qname_from_tree_path((*p[:-1], f.leaf_name)): f + for p, f in load_flat_interface_functions_and_inputs().items() + } nodes_with_dummy_callables = { - qn: dummy_callable(n) if not callable(n) else n - for qn, n in nodes_without_idifs.items() + qn: dummy_callable(n) if not callable(n) else n for qn, n in nodes.items() } f = dags.concatenate_functions( functions=nodes_with_dummy_callables, @@ -103,6 +101,28 @@ def test_interface_dag_is_complete() -> None: ) +def test_all_output_names_is_complete() -> None: + # This will keep only one of possibly many InputDependentInterfaceFunctions. Here, + # we only care about some function with a leaf name, not the precise content. + nodes = { + (*p[:-1], f.leaf_name) + for p, f in load_flat_interface_functions_and_inputs().items() + } + + # We do include the root path in AllOutputNames because it will be pre-defined in + # user-facing implementations. + nodes -= { + ( + "orig_policy_objects", + "root", + ), + } + + all_output_names = set(dt.tree_paths(asdict(AllOutputNames()))) + + assert nodes == all_output_names + + def _replace_idif_with_interface_inputs( n: InputDependentInterfaceFunction, ) -> InterfaceInput: @@ -163,18 +183,33 @@ def e(c: int, d: float) -> float: return c + d -def test_harmonize_inputs_qname_input(): +def test_harmonize_inputs_main_args_input(): x = { + "input_data": InputData.df_and_mapper( + df={"cannot use df because comparison fails"}, + mapper={"c": "a", "d": "b", "p_id": "p_id"}, + ), + "targets": Targets(tree={"e": "f"}), + "date": "2025-01-01", + "backend": "numpy", + "rounding": True, + "orig_policy_objects": OrigPolicyObjects( + column_objects_and_param_functions={("x.py", "e"): e}, + param_specs={}, + ), + } + harmonized = _harmonize_inputs(inputs=x) + + assert harmonized == { "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, "targets__tree": {"e": "f"}, "date": "2025-01-01", "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, "orig_policy_objects__param_specs": {}, + "backend": "numpy", + "rounding": True, } - harmonized = _harmonize_inputs(inputs=x) - - assert harmonized == {**x, "backend": "numpy", "rounding": True} def test_harmonize_inputs_tree_input(): @@ -187,12 +222,12 @@ def test_harmonize_inputs_tree_input(): }, "targets": {"tree": {"e": "f"}}, "date": "2025-01-01", + "backend": "numpy", + "rounding": True, "orig_policy_objects": { "column_objects_and_param_functions": {("x.py", "e"): e}, "param_specs": {}, }, - "backend": "numpy", - "rounding": True, } harmonized = _harmonize_inputs(inputs=x) @@ -280,21 +315,21 @@ def test_resolve_dynamic_interface_objects_to_static_nodes_with_conflicting_cond @pytest.mark.parametrize( ("output", "expected"), [ - (arg_templates.output.Name("a__b"), {"name": "a__b", "names": ["a__b"]}), - (arg_templates.output.Name(("a", "b")), {"name": "a__b", "names": ["a__b"]}), + (Output.name("a__b"), {"name": "a__b", "names": ["a__b"]}), + (Output.name(("a", "b")), {"name": "a__b", "names": ["a__b"]}), ( - arg_templates.output.Name({"a": {"b": None}}), + Output.name({"a": {"b": None}}), {"name": "a__b", "names": ["a__b"]}, ), - (arg_templates.output.Names(["a__b"]), {"name": None, "names": ["a__b"]}), - (arg_templates.output.Names([("a", "b")]), {"name": None, "names": ["a__b"]}), + (Output.names(["a__b"]), {"name": None, "names": ["a__b"]}), + (Output.names([("a", "b")]), {"name": None, "names": ["a__b"]}), ( - arg_templates.output.Names({"a": {"b": None}}), + Output.names({"a": {"b": None}}), {"name": None, "names": ["a__b"]}, ), ], ) def test_harmonize_outputs(output, expected): - harmonized = _harmonize_outputs(output=output) + harmonized = _harmonize_output(output=output) assert harmonized == expected diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index b952698d56..7061997f0d 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -4,7 +4,7 @@ import pytest -from ttsim import output +from ttsim import Output from ttsim.interface_dag import main from ttsim.plot_dag import ( _get_tt_dag_with_node_metadata, @@ -244,7 +244,7 @@ def test_node_selector(node_selector, expected_nodes): date_str="2025-01-01", orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend="numpy", - output=output.Name("policy_environment"), + output=Output.name("policy_environment"), ) dag = _get_tt_dag_with_node_metadata( environment=environment, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index 9547e9ff49..86817b8e8f 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -7,7 +7,7 @@ import pytest from pandas._testing import assert_series_equal -from ttsim import main, output +from ttsim import Output, main from ttsim.tt_dag_elements import ( RoundingSpec, policy_function, @@ -117,7 +117,7 @@ def test_func(x): targets={"tree": {"namespace": {"test_func": None}}}, rounding=True, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) assert_series_equal( pd.Series(results__tree["namespace"]["test_func"]), @@ -153,7 +153,7 @@ def test_func_m(x): targets={"tree": {"test_func_y": None}}, rounding=True, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func_y"]), @@ -193,7 +193,7 @@ def test_func(x): targets={"tree": {"test_func": None}}, rounding=False, backend=backend, - output=output.Name("results__tree"), + output=Output.name("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func"]), From 8f5eed61e22e89359669097e221de6dc0da73156 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 7 Jul 2025 08:41:11 +0100 Subject: [PATCH 054/109] Small fixes related to #991 (#996) #### What problem do you want to solve? - Allow for dict output spec in main - Return qnames when using AllOutputNames - Fix behaviour of AllOutputNames so we don't instantiate the class. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/__init__.py | 2 + src/ttsim/interface_dag.py | 50 +++--- src/ttsim/interface_dag_elements/__init__.py | 173 +++++++++++-------- src/ttsim/main_args.py | 3 +- tests/ttsim/test_end_to_end.py | 4 +- tests/ttsim/test_interface_dag.py | 3 +- 6 files changed, 133 insertions(+), 102 deletions(-) diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 3fb618506f..0a77ae7af9 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,6 +1,7 @@ from __future__ import annotations from ttsim.interface_dag import main +from ttsim.interface_dag_elements import AllOutputNames from ttsim.interface_dag_elements.shared import merge_trees from ttsim.main_args import ( InputData, @@ -14,6 +15,7 @@ ) __all__ = [ + "AllOutputNames", "InputData", "Labels", "OrigPolicyObjects", diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 8143796b13..ee809e1432 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -3,7 +3,6 @@ import inspect import re from contextlib import suppress -from dataclasses import asdict from pathlib import Path from typing import TYPE_CHECKING, Any, Literal @@ -144,7 +143,7 @@ def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: opo = dict_inputs.get("orig_policy_objects") if opo and "root" in opo: qname_inputs["orig_policy_objects__root"] = opo.pop("root") - for acc in optree.tree_accessors(asdict(AllOutputNames()), none_is_leaf=True): # type: ignore[arg-type] + for acc in optree.tree_accessors(AllOutputNames.to_dict(), none_is_leaf=True): qname = dt.qname_from_tree_path(acc.path) with suppress(KeyError, TypeError): qname_inputs[qname] = acc(dict_inputs) @@ -153,35 +152,36 @@ def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: def _harmonize_output(output: Output | None) -> dict[str, Any]: if output is None: - flat_output = { + flat_output: dict[str, Any] = { "name": None, "names": None, } elif hasattr(output, "to_dict"): # Check if it's a MainArg-like object flat_output = output.to_dict() - if flat_output["name"] is not None: - if isinstance(flat_output["name"], tuple): - flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) - elif isinstance(flat_output["name"], dict): - if len(flat_output["name"]) > 1: - raise ValueError( - "The output Name must be a single qualified name, a tuple or a " - "dict with one element. If you want to output multiple " - "elements, use 'names'." - ) - flat_output["name"] = dt.qnames(flat_output["name"])[0] - flat_output["names"] = [flat_output["name"]] - if isinstance(flat_output["names"], dict): - flat_output["names"] = dt.qnames(flat_output["names"]) - elif isinstance(flat_output["names"][0], tuple): - flat_output["names"] = [ - dt.qname_from_tree_path(tp) for tp in flat_output["names"] - ] else: - msg = format_errors_and_warnings( - f"Expected an instance of class Output, got {type(output)}" - ) - raise TypeError(msg) + flat_output = { + "name": output.get("name"), + "names": output.get("names"), + } + + if flat_output["name"] is not None: + if isinstance(flat_output["name"], tuple): + flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) + elif isinstance(flat_output["name"], dict): + if len(flat_output["name"]) > 1: + raise ValueError( + "The output Name must be a single qualified name, a tuple or a " + "dict with one element. If you want to output multiple " + "elements, use 'names'." + ) + flat_output["name"] = dt.qnames(flat_output["name"])[0] + flat_output["names"] = [flat_output["name"]] + if isinstance(flat_output["names"], dict): + flat_output["names"] = dt.qnames(flat_output["names"]) + elif isinstance(flat_output["names"][0], tuple): + flat_output["names"] = [ + dt.qname_from_tree_path(tp) for tp in flat_output["names"] + ] return flat_output diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index ea04dae6f7..634770b6aa 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -1,130 +1,159 @@ from __future__ import annotations from dataclasses import dataclass, field +from typing import Any @dataclass(frozen=True) -class WarnIf: - functions_and_data_columns_overlap: str = "functions_and_data_columns_overlap" +class _ABC: + @classmethod + def to_dict(cls) -> dict[str, Any]: + return { + k: v.to_dict() if isinstance(v, type(_ABC)) else v + for k, v in cls.__dict__.items() + if not k.startswith("_") + } + + def __post_init__(self) -> None: + raise NotImplementedError("Do not instantiate this class directly.") + + +@dataclass(frozen=True) +class WarnIf(_ABC): + functions_and_data_columns_overlap: str = ( + "warn_if__functions_and_data_columns_overlap" + ) @dataclass(frozen=True) -class FailIf: - active_periods_overlap: str = "active_periods_overlap" - any_paths_are_invalid: str = "any_paths_are_invalid" - environment_is_invalid: str = "environment_is_invalid" - foreign_keys_are_invalid_in_data: str = "foreign_keys_are_invalid_in_data" +class FailIf(_ABC): + active_periods_overlap: str = "fail_if__active_periods_overlap" + any_paths_are_invalid: str = "fail_if__any_paths_are_invalid" + environment_is_invalid: str = "fail_if__environment_is_invalid" + foreign_keys_are_invalid_in_data: str = "fail_if__foreign_keys_are_invalid_in_data" group_ids_are_outside_top_level_namespace: str = ( - "group_ids_are_outside_top_level_namespace" + "fail_if__group_ids_are_outside_top_level_namespace" ) group_variables_are_not_constant_within_groups: str = ( - "group_variables_are_not_constant_within_groups" + "fail_if__group_variables_are_not_constant_within_groups" + ) + input_arrays_have_different_lengths: str = ( + "fail_if__input_arrays_have_different_lengths" ) - input_arrays_have_different_lengths: str = "input_arrays_have_different_lengths" - input_data_tree_is_invalid: str = "input_data_tree_is_invalid" + input_data_tree_is_invalid: str = "fail_if__input_data_tree_is_invalid" input_df_has_bool_or_numeric_column_names: str = ( - "input_df_has_bool_or_numeric_column_names" + "fail_if__input_df_has_bool_or_numeric_column_names" ) - input_df_mapper_columns_missing_in_df: str = "input_df_mapper_columns_missing_in_df" - input_df_mapper_has_incorrect_format: str = "input_df_mapper_has_incorrect_format" - invalid_p_id_values: str = "invalid_p_id_values" + input_df_mapper_columns_missing_in_df: str = ( + "fail_if__input_df_mapper_columns_missing_in_df" + ) + input_df_mapper_has_incorrect_format: str = ( + "fail_if__input_df_mapper_has_incorrect_format" + ) + invalid_p_id_values: str = "fail_if__invalid_p_id_values" non_convertible_objects_in_results_tree: str = ( - "non_convertible_objects_in_results_tree" + "fail_if__non_convertible_objects_in_results_tree" ) paths_are_missing_in_targets_tree_mapper: str = ( - "paths_are_missing_in_targets_tree_mapper" + "fail_if__paths_are_missing_in_targets_tree_mapper" ) - root_nodes_are_missing: str = "root_nodes_are_missing" + root_nodes_are_missing: str = "fail_if__root_nodes_are_missing" targets_are_not_in_specialized_environment_or_data: str = ( - "targets_are_not_in_specialized_environment_or_data" + "fail_if__targets_are_not_in_specialized_environment_or_data" ) - targets_tree_is_invalid: str = "targets_tree_is_invalid" + targets_tree_is_invalid: str = "fail_if__targets_tree_is_invalid" @dataclass(frozen=True) -class Results: - df_with_mapper: str = "df_with_mapper" - df_with_nested_columns: str = "df_with_nested_columns" - tree: str = "tree" +class Results(_ABC): + df_with_mapper: str = "results__df_with_mapper" + df_with_nested_columns: str = "results__df_with_nested_columns" + tree: str = "results__tree" @dataclass(frozen=True) -class RawResults: - columns: str = "columns" - combined: str = "combined" - from_input_data: str = "from_input_data" - params: str = "params" +class RawResults(_ABC): + columns: str = "raw_results__columns" + combined: str = "raw_results__combined" + from_input_data: str = "raw_results__from_input_data" + params: str = "raw_results__params" @dataclass(frozen=True) -class SpecializedEnvironment: +class SpecializedEnvironment(_ABC): without_tree_logic_and_with_derived_functions: str = ( - "without_tree_logic_and_with_derived_functions" + "specialized_environment__without_tree_logic_and_with_derived_functions" + ) + with_processed_params_and_scalars: str = ( + "specialized_environment__with_processed_params_and_scalars" ) - with_processed_params_and_scalars: str = "with_processed_params_and_scalars" - with_partialled_params_and_scalars: str = "with_partialled_params_and_scalars" - tax_transfer_dag: str = "tax_transfer_dag" - tax_transfer_function: str = "tax_transfer_function" + with_partialled_params_and_scalars: str = ( + "specialized_environment__with_partialled_params_and_scalars" + ) + tax_transfer_dag: str = "specialized_environment__tax_transfer_dag" + tax_transfer_function: str = "specialized_environment__tax_transfer_function" @dataclass(frozen=True) -class Targets: - qname: str = "qname" - tree: str = "tree" +class Targets(_ABC): + qname: str = "targets__qname" + tree: str = "targets__tree" @dataclass(frozen=True) -class Labels: - column_targets: str = "column_targets" - grouping_levels: str = "grouping_levels" - input_data_targets: str = "input_data_targets" - param_targets: str = "param_targets" - processed_data_columns: str = "processed_data_columns" - input_columns: str = "input_columns" - root_nodes: str = "root_nodes" - top_level_namespace: str = "top_level_namespace" +class Labels(_ABC): + column_targets: str = "labels__column_targets" + grouping_levels: str = "labels__grouping_levels" + input_data_targets: str = "labels__input_data_targets" + param_targets: str = "labels__param_targets" + processed_data_columns: str = "labels__processed_data_columns" + input_columns: str = "labels__input_columns" + root_nodes: str = "labels__root_nodes" + top_level_namespace: str = "labels__top_level_namespace" @dataclass(frozen=True) -class DfAndMapper: - df: str = "df" - mapper: str = "mapper" +class DfAndMapper(_ABC): + df: str = "input_data__df_and_mapper__df" + mapper: str = "input_data__df_and_mapper__mapper" @dataclass(frozen=True) -class InputData: - df_and_mapper: DfAndMapper = field(default_factory=DfAndMapper) - df_with_nested_columns: str = "df_with_nested_columns" - flat: str = "flat" - tree: str = "tree" +class InputData(_ABC): + df_and_mapper: type[DfAndMapper] = field(default=DfAndMapper) + df_with_nested_columns: str = "input_data__df_with_nested_columns" + flat: str = "input_data__flat" + tree: str = "input_data__tree" @dataclass(frozen=True) -class OrigPolicyObjects: - column_objects_and_param_functions: str = "column_objects_and_param_functions" - param_specs: str = "param_specs" +class OrigPolicyObjects(_ABC): + column_objects_and_param_functions: str = ( + "orig_policy_objects__column_objects_and_param_functions" + ) + param_specs: str = "orig_policy_objects__param_specs" # Do not include root here, will be pre-defined in user-facing implementations. @dataclass(frozen=True) -class Templates: - input_data_dtypes: str = "input_data_dtypes" +class Templates(_ABC): + input_data_dtypes: str = "templates__input_data_dtypes" @dataclass(frozen=True) -class AllOutputNames: +class AllOutputNames(_ABC): + results: type[Results] = field(default=Results) policy_environment: str = "policy_environment" - templates: Templates = field(default_factory=Templates) - results: Results = field(default_factory=Results) - orig_policy_objects: OrigPolicyObjects = field(default_factory=OrigPolicyObjects) - specialized_environment: SpecializedEnvironment = field( - default_factory=SpecializedEnvironment + templates: type[Templates] = field(default=Templates) + orig_policy_objects: type[OrigPolicyObjects] = field(default=OrigPolicyObjects) + specialized_environment: type[SpecializedEnvironment] = field( + default=SpecializedEnvironment ) processed_data: str = "processed_data" - raw_results: RawResults = field(default_factory=RawResults) - labels: Labels = field(default_factory=Labels) - input_data: InputData = field(default_factory=InputData) - targets: Targets = field(default_factory=Targets) + raw_results: type[RawResults] = field(default=RawResults) + labels: type[Labels] = field(default=Labels) + input_data: type[InputData] = field(default=InputData) + targets: type[Targets] = field(default=Targets) backend: str = "backend" date_str: str = "date_str" date: str = "date" @@ -136,5 +165,5 @@ class AllOutputNames: dnp: str = "dnp" num_segments: str = "num_segments" rounding: str = "rounding" - warn_if: WarnIf = field(default_factory=WarnIf) - fail_if: FailIf = field(default_factory=FailIf) + warn_if: type[WarnIf] = field(default=WarnIf) + fail_if: type[FailIf] = field(default=FailIf) diff --git a/src/ttsim/main_args.py b/src/ttsim/main_args.py index c004fbd273..039a5ad0e8 100644 --- a/src/ttsim/main_args.py +++ b/src/ttsim/main_args.py @@ -3,6 +3,8 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Any +from ttsim.interface_dag_elements import AllOutputNames # noqa: TC001 + if TYPE_CHECKING: from collections.abc import Callable, Iterable from pathlib import Path @@ -10,7 +12,6 @@ import networkx as nx import pandas as pd - from ttsim.interface_dag_elements import AllOutputNames from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatData, diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index f1f0b11fcc..1f246e0454 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -4,7 +4,7 @@ import pandas as pd import pytest -from ttsim import InputData, Output, main +from ttsim import AllOutputNames, InputData, Output, main DF_WITH_NESTED_COLUMNS = pd.DataFrame( { @@ -90,13 +90,13 @@ ) def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): result = main( + output=Output.name(AllOutputNames.results.df_with_mapper), input_data=input_data_arg, targets={"tree": TARGETS_TREE}, date_str="2025-01-01", rounding=False, orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend=backend, - output=Output.name("results__df_with_mapper"), ) pd.testing.assert_frame_equal( EXPECTED_RESULTS, diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 437dc0c9c8..faeb68da32 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -1,7 +1,6 @@ from __future__ import annotations import inspect -from dataclasses import asdict from typing import Any import dags @@ -118,7 +117,7 @@ def test_all_output_names_is_complete() -> None: ), } - all_output_names = set(dt.tree_paths(asdict(AllOutputNames()))) + all_output_names = set(dt.tree_paths(AllOutputNames.to_dict())) assert nodes == all_output_names From c22b3caef5e7dd23163c1046af3146c2231c8e61 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 7 Jul 2025 11:39:12 +0100 Subject: [PATCH 055/109] Improve errors when executing the interface DAG (#997) ### What problem do you want to solve? Closes #979 Todo: - [x] Missing root node errors for interface DAG - [x] Fail if mapper value is invalid when mapping DF cols to flat data - [x] Add a hint that if grouped root nodes are missing, users can insert individual-level variables as well. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../eink\303\274nfte/sonstige/rente.yaml" | 2 +- .../eink\303\274nfte/sonstige/sonstige.py" | 10 +++--- .../wohngeld/2006-01-01/hh_id_15.yaml | 2 +- .../wohngeld/2006-01-01/hh_id_4.yaml | 2 +- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 2 +- .../wohngeld/2013-01-01/hh_id_2.yaml | 2 +- .../wohngeld/2013-01-01/hh_id_9.yaml | 2 +- .../wohngeld/2016-01-01/hh_id_1.yaml | 2 +- .../wohngeld/2018-01-01/hh_id_7.yaml | 2 +- .../wohngeld/2018-01-01/hh_id_8.yaml | 2 +- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 2 +- .../wohngeld/2019-01-01/hh_id_5.yaml | 2 +- .../wohngeld/2021-01-01/hh_id_10.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_11.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_12.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_13.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_14.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_16.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_17.yaml | 2 +- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 2 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 2 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 2 +- src/ttsim/interface_dag.py | 28 ++++++++++++++- .../interface_dag_elements/data_converters.py | 16 ++++++--- src/ttsim/interface_dag_elements/fail_if.py | 22 ++++++++++-- .../test_data_converters.py | 12 +++++++ .../interface_dag_elements/test_failures.py | 33 ++++++++++++++++++ tests/ttsim/test_interface_dag.py | 34 +++++++++++++++++++ 28 files changed, 163 insertions(+), 34 deletions(-) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" index 6c500cabe3..33da0c585c 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" @@ -1,5 +1,5 @@ --- -parameter_ertragsanteil_an_rente: +parameter_ertragsanteil_der_rente: name: de: >- Ertragsanteil-Funktion für den Anteil an sozialversicherungspflichtigen diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" index ae33362be0..139acecf85 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -25,26 +25,26 @@ def betrag_m( @policy_function() def renteneinkünfte_m( - ertragsanteil_an_rente: float, + ertragsanteil_der_rente: float, sozialversicherung__rente__altersrente__betrag_m: float, sozialversicherung__rente__private_rente_betrag_m: float, ) -> float: """Pension income counting towards taxable income.""" - return ertragsanteil_an_rente * ( + return ertragsanteil_der_rente * ( sozialversicherung__rente__altersrente__betrag_m + sozialversicherung__rente__private_rente_betrag_m ) @policy_function() -def ertragsanteil_an_rente( +def ertragsanteil_der_rente( sozialversicherung__rente__jahr_renteneintritt: int, - parameter_ertragsanteil_an_rente: PiecewisePolynomialParamValue, + parameter_ertragsanteil_der_rente: PiecewisePolynomialParamValue, xnp: ModuleType, ) -> float: """Share of pensions subject to income taxation.""" return piecewise_polynomial( x=sozialversicherung__rente__jahr_renteneintritt, - parameters=parameter_ertragsanteil_an_rente, + parameters=parameter_ertragsanteil_der_rente, xnp=xnp, ) diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index 1729c29ec3..ffbdc50dda 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -106,7 +106,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index 5238f3522d..d8bcb06cd8 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -74,7 +74,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index 0ea1d52074..de2a8234aa 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -47,7 +47,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index 5d195e7f84..689a6c3299 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -44,7 +44,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index e6a6f4dad0..5b703b219a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -44,7 +44,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 ohne_renten_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index 50e5f519b2..4386f47795 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -58,7 +58,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index 8487f7fa5d..51f79e5e7b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -154,7 +154,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index 5af7f2ae08..2aa69d9a85 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -91,7 +91,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index b406779792..92f26c911e 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -84,7 +84,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index 3d5f478743..2ee409aae2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -34,7 +34,7 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 ohne_renten_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index eabb276873..d0dac32f6c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -36,7 +36,7 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 ohne_renten_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 387e77b11b..88b7d43724 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -38,7 +38,7 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 ohne_renten_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index c10f173fab..c76182c805 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -38,7 +38,7 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 ohne_renten_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 539ba252cc..711b3c902a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -62,7 +62,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 70e94f7c11..d80d20f580 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -98,7 +98,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index 77ddd7edf0..418f633b2e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -74,7 +74,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 03a34bd816..7e79244fe2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -86,7 +86,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index 2e47064bef..adec9ad453 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -86,7 +86,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 076abc2c2a..42b9ca3f15 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -80,7 +80,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 98f5a69933..c519f9ca17 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -102,7 +102,7 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_an_rente: + ertragsanteil_der_rente: - 0.0 - 0.0 - 0.0 diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index ee809e1432..a7a3b32470 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -8,6 +8,7 @@ import dags import dags.tree as dt +import networkx as nx import optree from ttsim.interface_dag_elements import AllOutputNames @@ -104,12 +105,16 @@ def main( output_qnames=output_qnames["names"], ) - # Not strictly necessary, but helps with debugging. dag = dags.create_dag( functions=functions, targets=output_qnames["names"], ) + _fail_if_root_nodes_of_interface_dag_are_missing( + dag=dag, + input_qnames=input_qnames, + ) + def lexsort_key(x: str) -> int: return 0 if x.startswith("fail_if") else 1 @@ -349,6 +354,27 @@ def _remove_tree_logic_from_functions_in_collection( } +def _fail_if_root_nodes_of_interface_dag_are_missing( + dag: dags.DiGraph, + input_qnames: dict[str, Any], +) -> None: + """Fail if root nodes are missing.""" + root_nodes = nx.subgraph_view( + dag, + filter_node=lambda n: dag.in_degree(n) == 0, + ).nodes + + missing_nodes = [node for node in root_nodes if node not in input_qnames] + if missing_nodes: + formatted = format_list_linewise( + [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes], + ) + raise ValueError( + f"The following arguments to `main` are missing for computing the " + f"desired output:\n{formatted}" + ) + + def _fail_if_requested_nodes_cannot_be_found( output_qnames: list[str] | None, nodes: dict[str, InterfaceFunction | InterfaceInput], diff --git a/src/ttsim/interface_dag_elements/data_converters.py b/src/ttsim/interface_dag_elements/data_converters.py index 97eb539a01..0b8d5d3a09 100644 --- a/src/ttsim/interface_dag_elements/data_converters.py +++ b/src/ttsim/interface_dag_elements/data_converters.py @@ -132,16 +132,22 @@ def df_with_mapped_columns_to_flat_data( """ path_to_array = {} - for path, df_col_name in dt.flatten_to_tree_paths(mapper).items(): - if df_col_name in df.columns: - path_to_array[path] = xnp.asarray(df[df_col_name]) - else: + for path, mapper_value in dt.flatten_to_tree_paths(mapper).items(): + if mapper_value in df.columns: + path_to_array[path] = xnp.asarray(df[mapper_value]) + elif isinstance(mapper_value, int | float | bool): path_to_array[path] = xnp.asarray( pd.Series( - [df_col_name] * len(df), + [mapper_value] * len(df), index=df.index, ), ) + else: + msg = ( + f"Value of mapper path {path} is neither a column name in the provided " + "DataFrame nor a scalar value." + ) + raise ValueError(msg) return path_to_array diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 7cb1478875..e5fcd8d0f6 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -632,6 +632,7 @@ def root_nodes_are_missing( specialized_environment__tax_transfer_dag: nx.DiGraph, specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, processed_data: QNameData, + labels__grouping_levels: OrderedQNames, ) -> None: """Fail if root nodes are missing. @@ -639,8 +640,12 @@ def root_nodes_are_missing( ---------- specialized_environment__tax_transfer_dag The DAG of taxes and transfers functions. + specialized_environment__with_partialled_params_and_scalars + The specialized environment with partialled params and scalars. processed_data The processed data to be used as an input to the taxes & transfers function. + labels__grouping_levels + The grouping levels available in the policy environment. Raises ------ @@ -663,10 +668,23 @@ def root_nodes_are_missing( ] if missing_nodes: - formatted = format_list_linewise( + grouping_levels_in_missing_nodes = ( + lvl + for lvl in labels__grouping_levels + if any(qn.endswith(lvl) for qn in missing_nodes) + ) + formatted_missing_nodes = format_list_linewise( [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes], ) - raise ValueError(f"The following data columns are missing.\n{formatted}") + msg = f"The following data columns are missing.\n{formatted_missing_nodes}" + if grouping_levels_in_missing_nodes: + msg += ( + "\n\nNote that the missing nodes contain columns that are grouped by " + f"the following grouping levels: {grouping_levels_in_missing_nodes}. " + "Consider passing the individual level columns instead, in which case " + "that the aggregation will be handled automatically." + ) + raise ValueError(msg) @fail_or_warn_function() diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index cc89c56c0a..6f2a75a37a 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -121,6 +121,18 @@ def test_df_with_mapped_columns_to_flat_data( ) +def test_df_with_mapped_columns_to_flat_data_fails_if_mapper_value_not_in_df(xnp): + with pytest.raises(ValueError, match="Value of mapper path"): + df_with_mapped_columns_to_flat_data( + mapper={ + "n1": "a", + "n2": "b", + }, + df=pd.DataFrame({"a": [1, 2, 3]}), + xnp=xnp, + ) + + @pytest.mark.parametrize( ( "environment", diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 4cdeb79ca4..4d8bc832e8 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -37,6 +37,7 @@ group_creation_function, param_function, policy_function, + policy_input, ) if TYPE_CHECKING: @@ -955,6 +956,38 @@ def c(b): ) +def test_fail_if_root_nodes_are_missing_asks_for_individual_level_columns( + minimal_input_data, backend +): + @policy_function() + def b(a_fam): + return a_fam + + @policy_input() + def a() -> int: + pass + + policy_environment = { + "fam_id": fam_id, + "a": a, + "b": b, + } + + with pytest.raises( + ValueError, + match="Consider passing the individual level columns instead", + ): + main( + input_data={"tree": minimal_input_data}, + policy_environment=policy_environment, + date=datetime.date(2024, 1, 1), + targets={"tree": {"b": None}}, + rounding=False, + backend=backend, + output=Output.names(["results__tree", "fail_if__root_nodes_are_missing"]), + ) + + @pytest.mark.parametrize( "policy_environment, targets, labels__processed_data_columns, expected_error_match", [ diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index faeb68da32..c5bf978cea 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -10,6 +10,7 @@ from ttsim import InputData, OrigPolicyObjects, Output, Targets from ttsim.interface_dag import ( _fail_if_requested_nodes_cannot_be_found, + _fail_if_root_nodes_of_interface_dag_are_missing, _harmonize_inputs, _harmonize_output, _resolve_dynamic_interface_objects_to_static_nodes, @@ -22,12 +23,28 @@ InterfaceInput, fail_or_warn_function, input_dependent_interface_function, + interface_function, interface_input, ) from ttsim.plot_dag import dummy_callable from ttsim.tt_dag_elements.column_objects_param_function import policy_function +@interface_function(leaf_name="interface_function_a") +def interface_function_a(a: int) -> int: + return a + + +@interface_function(leaf_name="interface_function_b") +def interface_function_b(b: int) -> int: + return b + + +@interface_function(leaf_name="interface_function_c") +def interface_function_c(interface_function_a: int, interface_function_b: int) -> int: + return interface_function_a + interface_function_b + + @fail_or_warn_function( include_if_all_elements_present=["a"], include_if_any_element_present=["b"], @@ -332,3 +349,20 @@ def test_harmonize_outputs(output, expected): harmonized = _harmonize_output(output=output) assert harmonized == expected + + +def test_fail_if_root_nodes_of_interface_dag_are_missing(): + dag = dags.create_dag( + functions={ + "interface_function_a": interface_function_a, + "interface_function_b": interface_function_b, + "interface_function_c": interface_function_c, + }, + targets=None, + ) + + with pytest.raises( + ValueError, + match=(r"The following arguments to `main` are missing for computing the"), + ): + _fail_if_root_nodes_of_interface_dag_are_missing(dag=dag, input_qnames=["a"]) From a74e7630345fa0ac73ab0e068787028df3ce6dbc Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 7 Jul 2025 16:26:15 +0200 Subject: [PATCH 056/109] Rename: output -> main_target(s), targets -> tt_targets (#1001) Renamings and improved behaviour for clarity. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- src/_gettsim_tests/test_jittability.py | 20 +-- src/_gettsim_tests/test_policy.py | 22 ++- src/_gettsim_tests/test_templates.py | 6 +- src/gettsim/__init__.py | 15 +- src/ttsim/__init__.py | 10 +- src/ttsim/interface_dag.py | 150 ++++++++++-------- src/ttsim/interface_dag_elements/__init__.py | 8 +- .../automatically_added_functions.py | 4 +- src/ttsim/interface_dag_elements/fail_if.py | 26 +-- src/ttsim/interface_dag_elements/labels.py | 16 +- src/ttsim/interface_dag_elements/results.py | 4 +- .../specialized_environment.py | 10 +- src/ttsim/interface_dag_elements/templates.py | 4 +- .../{targets.py => tt_targets.py} | 6 +- src/ttsim/main_args.py | 32 +--- src/ttsim/plot_dag.py | 7 +- src/ttsim/testing_utils.py | 14 +- .../test_automatically_added_functions.py | 6 +- .../test_data_converters.py | 11 +- .../interface_dag_elements/test_failures.py | 66 ++++---- .../interface_dag_elements/test_mettsim.py | 16 +- .../test_policy_environment.py | 6 +- .../test_specialized_environment.py | 46 +++--- .../interface_dag_elements/test_templates.py | 14 +- .../interface_dag_elements/test_warnings.py | 10 +- tests/ttsim/test_end_to_end.py | 6 +- tests/ttsim/test_interface_dag.py | 75 +++++---- tests/ttsim/test_plot_dag.py | 3 +- tests/ttsim/tt_dag_elements/test_rounding.py | 14 +- 29 files changed, 307 insertions(+), 320 deletions(-) rename src/ttsim/interface_dag_elements/{targets.py => tt_targets.py} (86%) diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index 9d02eaa24f..da189b0be3 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -11,7 +11,7 @@ import pytest from dags import get_free_arguments -from ttsim import Output, main +from ttsim import main from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction if TYPE_CHECKING: @@ -29,12 +29,10 @@ def get_orig_gettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": GETTSIM_ROOT}, - output=Output.names( - [ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ] - ), + main_targets=[ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ], ) return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} @@ -55,9 +53,7 @@ def cached_specialized_environment( orig_policy_objects={"root": root}, backend=backend, fail_and_warn=False, - output=Output.name( - ("specialized_environment", "with_partialled_params_and_scalars") - ), + main_target=("specialized_environment", "with_partialled_params_and_scalars"), ) @@ -90,8 +86,8 @@ def test_jittable(tree_path, fun, backend, xnp): date=date, specialized_environment={"with_partialled_params_and_scalars": env}, processed_data=processed_data, - targets={"qname": [qname]}, + tt_targets={"qname": [qname]}, backend=backend, - output=Output.name(("raw_results", "columns")), + main_target=("raw_results", "columns"), fail_and_warn=False, ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index c3956d8045..5a430a7a8e 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -8,7 +8,7 @@ import numpy import pytest -from ttsim import Output, main +from ttsim import main from ttsim.testing_utils import ( PolicyTest, check_env_completeness, @@ -39,12 +39,10 @@ def get_orig_gettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": GETTSIM_ROOT}, - output=Output.names( - [ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ] - ), + main_targets=[ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ], ) return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} @@ -109,12 +107,10 @@ def test_top_level_elements_not_repeated_in_paths( backend=backend, date=date, rounding=False, - output=Output.names( - [ - "specialized_environment__with_partialled_params_and_scalars", - "labels__top_level_namespace", - ], - ), + main_targets=[ + "specialized_environment__with_partialled_params_and_scalars", + "labels__top_level_namespace", + ], ) except Exception: # noqa: BLE001 msg = ( diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 41c850e91a..93bca03e45 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -4,7 +4,7 @@ import dags.tree as dt -from ttsim import Output, main +from ttsim import main from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.shared import ( get_re_pattern_for_all_time_units_and_groupings, @@ -19,9 +19,7 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=Output.names( - ["labels__grouping_levels", "templates__input_data_dtypes"] - ), + main_targets=["labels__grouping_levels", "templates__input_data_dtypes"], ) paths_with_unspecified_dtypes = [] diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index d58f3afe07..76e0c1df2b 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -22,21 +22,23 @@ from ttsim import ( InputData, Labels, - Output, + MainTarget, RawResults, Results, SpecializedEnvironment, - Targets, + TTTargets, merge_trees, ) if TYPE_CHECKING: import datetime + from collections.abc import Iterable from ttsim.interface_dag_elements.typing import ( DashedISOString, FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, + NestedTargetDict, PolicyEnvironment, QNameData, ) @@ -54,10 +56,11 @@ class OrigPolicyObjects(ttsim.main_args.MainArg): def main( *, - output: Output | None = None, + main_target: str | tuple[str, ...] | NestedTargetDict | None = None, + main_targets: Iterable[str | tuple[str, ...]] | None = None, date_str: DashedISOString | None = None, input_data: InputData | None = None, - targets: Targets | None = None, + tt_targets: TTTargets | None = None, backend: Literal["numpy", "jax"] = "numpy", rounding: bool = True, fail_and_warn: bool = True, @@ -85,12 +88,12 @@ def main( __all__ = [ "InputData", "Labels", + "MainTarget", "OrigPolicyObjects", - "Output", "RawResults", "Results", "SpecializedEnvironment", - "Targets", + "TTTargets", "main", "merge_trees", ] diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 0a77ae7af9..01252b15c2 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,29 +1,27 @@ from __future__ import annotations from ttsim.interface_dag import main -from ttsim.interface_dag_elements import AllOutputNames +from ttsim.interface_dag_elements import MainTarget from ttsim.interface_dag_elements.shared import merge_trees from ttsim.main_args import ( InputData, Labels, OrigPolicyObjects, - Output, RawResults, Results, SpecializedEnvironment, - Targets, + TTTargets, ) __all__ = [ - "AllOutputNames", "InputData", "Labels", + "MainTarget", "OrigPolicyObjects", - "Output", "RawResults", "Results", "SpecializedEnvironment", - "Targets", + "TTTargets", "main", "merge_trees", ] diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index a7a3b32470..ae76792a4f 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -11,7 +11,7 @@ import networkx as nx import optree -from ttsim.interface_dag_elements import AllOutputNames +from ttsim.interface_dag_elements import MainTarget from ttsim.interface_dag_elements.fail_if import ( format_errors_and_warnings, format_list_linewise, @@ -27,33 +27,34 @@ if TYPE_CHECKING: import datetime + from collections.abc import Iterable from ttsim.interface_dag_elements.typing import ( DashedISOString, FlatInterfaceObjects, + NestedTargetDict, PolicyEnvironment, QNameData, - QNameStrings, UnorderedQNames, ) from ttsim.main_args import ( InputData, Labels, OrigPolicyObjects, - Output, RawResults, Results, SpecializedEnvironment, - Targets, + TTTargets, ) def main( *, - output: Output | None = None, + main_target: str | tuple[str, ...] | NestedTargetDict | None = None, + main_targets: Iterable[str | tuple[str, ...]] | None = None, date_str: DashedISOString | None = None, input_data: InputData | None = None, - targets: Targets | None = None, + tt_targets: TTTargets | None = None, backend: Literal["numpy", "jax"] | None = None, rounding: bool = True, fail_and_warn: bool = True, @@ -75,7 +76,15 @@ def main( """ input_qnames = _harmonize_inputs(locals()) - output_qnames = _harmonize_output(output) + if main_target is not None: + if main_targets is not None: + raise ValueError( + "Either `main_target` or `main_targets` must be provided, but not both." + ) + main_target = _harmonize_main_target(main_target) + main_targets = [main_target] + elif main_targets is not None: + main_targets = _harmonize_main_targets(main_targets) # If requesting an input template, we do not require any data. if not any(re.match("(input|processed)_data", s) for s in input_qnames): @@ -88,7 +97,7 @@ def main( ) _fail_if_requested_nodes_cannot_be_found( - output_qnames=output_qnames["names"], + main_targets=main_targets, # type: ignore[arg-type] nodes=nodes, ) @@ -98,16 +107,16 @@ def main( if isinstance(n, InterfaceFunction) and qn not in input_qnames } - # If targets are None, all failures and warnings are included, anyhow. - if fail_and_warn and output_qnames["names"] is not None: - output_qnames["names"] = include_fail_and_warn_nodes( + # If main_targets are None, all failures and warnings are included, anyhow. + if fail_and_warn and main_targets is not None: + main_targets = include_fail_and_warn_nodes( functions=functions, - output_qnames=output_qnames["names"], + main_targets=main_targets, # type: ignore[arg-type] ) dag = dags.create_dag( functions=functions, - targets=output_qnames["names"], + targets=main_targets, ) _fail_if_root_nodes_of_interface_dag_are_missing( @@ -118,11 +127,11 @@ def main( def lexsort_key(x: str) -> int: return 0 if x.startswith("fail_if") else 1 - if output_qnames["name"]: + if main_target: f = dags.concatenate_functions( dag=dag, functions=functions, - targets=output_qnames["name"], + targets=main_target, enforce_signature=False, set_annotations=False, lexsort_key=lexsort_key, @@ -131,7 +140,7 @@ def lexsort_key(x: str) -> int: f = dags.concatenate_functions( dag=dag, functions=functions, - targets=output_qnames["names"], + targets=main_targets, return_type="dict", enforce_signature=False, set_annotations=False, @@ -148,47 +157,43 @@ def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: opo = dict_inputs.get("orig_policy_objects") if opo and "root" in opo: qname_inputs["orig_policy_objects__root"] = opo.pop("root") - for acc in optree.tree_accessors(AllOutputNames.to_dict(), none_is_leaf=True): + for acc in optree.tree_accessors(MainTarget.to_dict(), none_is_leaf=True): qname = dt.qname_from_tree_path(acc.path) with suppress(KeyError, TypeError): qname_inputs[qname] = acc(dict_inputs) return {k: v for k, v in qname_inputs.items() if v is not None} -def _harmonize_output(output: Output | None) -> dict[str, Any]: - if output is None: - flat_output: dict[str, Any] = { - "name": None, - "names": None, - } - elif hasattr(output, "to_dict"): # Check if it's a MainArg-like object - flat_output = output.to_dict() +def _harmonize_main_target( + main_target: str | tuple[str, ...] | NestedTargetDict, +) -> str: + msg = ( + "`main_target` must be a single qualified name, a tuple, or a dict with " + "one element. If in doubt, use `MainTarget` and tab-complete. If you want to " + "output multiple elements, use `main_targets` instead." + ) + if isinstance(main_target, tuple): + return dt.qname_from_tree_path(main_target) + if isinstance(main_target, dict): + if len(optree.tree_flatten(main_target, none_is_leaf=True)[0]) > 1: # type: ignore[arg-type] + raise ValueError(msg) + return dt.qnames(main_target)[0] + if isinstance(main_target, str): + return main_target + raise ValueError(msg) + + +def _harmonize_main_targets( + main_targets: Iterable[str | tuple[str, ...]] | NestedTargetDict, +) -> list[str]: + if isinstance(main_targets, dict): + out = dt.qnames(main_targets) + elif isinstance(main_targets[0], tuple): # type: ignore[index] + out = [dt.qname_from_tree_path(tp) for tp in main_targets] else: - flat_output = { - "name": output.get("name"), - "names": output.get("names"), - } + out = list(main_targets) - if flat_output["name"] is not None: - if isinstance(flat_output["name"], tuple): - flat_output["name"] = dt.qname_from_tree_path(flat_output["name"]) - elif isinstance(flat_output["name"], dict): - if len(flat_output["name"]) > 1: - raise ValueError( - "The output Name must be a single qualified name, a tuple or a " - "dict with one element. If you want to output multiple " - "elements, use 'names'." - ) - flat_output["name"] = dt.qnames(flat_output["name"])[0] - flat_output["names"] = [flat_output["name"]] - if isinstance(flat_output["names"], dict): - flat_output["names"] = dt.qnames(flat_output["names"]) - elif isinstance(flat_output["names"][0], tuple): - flat_output["names"] = [ - dt.qname_from_tree_path(tp) for tp in flat_output["names"] - ] - - return flat_output + return out def _resolve_dynamic_interface_objects_to_static_nodes( @@ -261,28 +266,28 @@ def _fail_if_multiple_functions_satisfy_include_condition( def include_fail_and_warn_nodes( functions: dict[str, InterfaceFunction], - output_qnames: QNameStrings, + main_targets: list[str], ) -> list[str]: - """Extend targets with failures and warnings that can be computed within the graph. + """Extend main targets with failures and warnings that can be computed. - FailOrWarnFunctions which are included in the targets are treated like regular - functions. + FailOrWarnFunctions which are included explicitly among the main targets are treated + like regular functions. """ fail_or_warn_functions = { p: n for p, n in functions.items() - if isinstance(n, FailOrWarnFunction) and p not in output_qnames + if isinstance(n, FailOrWarnFunction) and p not in main_targets } workers_and_their_inputs = dags.create_dag( functions={ p: n for p, n in functions.items() - if not isinstance(n, FailOrWarnFunction) or p in output_qnames + if not isinstance(n, FailOrWarnFunction) or p in main_targets }, - targets=output_qnames, + targets=main_targets, ) - out = output_qnames.copy() + out = main_targets.copy() for p, n in fail_or_warn_functions.items(): args = inspect.signature(n).parameters if p == "fail_if__root_nodes_are_missing": @@ -376,11 +381,11 @@ def _fail_if_root_nodes_of_interface_dag_are_missing( def _fail_if_requested_nodes_cannot_be_found( - output_qnames: list[str] | None, + main_targets: list[str] | None, nodes: dict[str, InterfaceFunction | InterfaceInput], ) -> None: """Fail if some qname is not among nodes.""" - all_qnames = set(nodes.keys()) + all_nodes = set(nodes.keys()) interface_function_names = { p for p, n in nodes.items() if isinstance(n, InterfaceFunction) } @@ -388,29 +393,34 @@ def _fail_if_requested_nodes_cannot_be_found( p: n for p, n in nodes.items() if isinstance(n, FailOrWarnFunction) } - # Output qnames not in interface functions - if output_qnames is not None: - missing_output_qnames = set(output_qnames) - set(interface_function_names) + # main targets not in interface functions + if main_targets is not None: + missing_main_targets = set(main_targets) - set(interface_function_names) else: - missing_output_qnames = set() + missing_main_targets = set() # Qnames from include condtions of fail_or_warn functions not in nodes for n in fail_or_warn_functions.values(): - qns = {*n.include_if_all_elements_present, *n.include_if_any_element_present} - missing_qnames_from_include_conditions = qns - all_qnames + ns: set[str] = { + *n.include_if_all_elements_present, + *n.include_if_any_element_present, + } + missing_main_targets_from_include_conditions = ns - all_nodes - if missing_output_qnames or missing_qnames_from_include_conditions: - if missing_output_qnames: + if missing_main_targets or missing_main_targets_from_include_conditions: + if missing_main_targets: msg = format_errors_and_warnings( "The following output names for the interface DAG are not among the " "interface functions or inputs:\n" - ) + format_list_linewise(sorted(missing_output_qnames)) + ) + format_list_linewise(sorted(missing_main_targets)) else: msg = "" - if missing_qnames_from_include_conditions: + if missing_main_targets_from_include_conditions: msg += format_errors_and_warnings( "\n\nThe following elements specified in some include condition of " "`fail_or_warn_function`s are not among the interface functions or " "inputs:\n" - ) + format_list_linewise(sorted(missing_qnames_from_include_conditions)) + ) + format_list_linewise( + sorted(missing_main_targets_from_include_conditions) + ) raise ValueError(msg) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 634770b6aa..50fd8b0dab 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -96,8 +96,8 @@ class SpecializedEnvironment(_ABC): @dataclass(frozen=True) class Targets(_ABC): - qname: str = "targets__qname" - tree: str = "targets__tree" + qname: str = "tt_targets__qname" + tree: str = "tt_targets__tree" @dataclass(frozen=True) @@ -141,7 +141,7 @@ class Templates(_ABC): @dataclass(frozen=True) -class AllOutputNames(_ABC): +class MainTarget(_ABC): results: type[Results] = field(default=Results) policy_environment: str = "policy_environment" templates: type[Templates] = field(default=Templates) @@ -153,7 +153,7 @@ class AllOutputNames(_ABC): raw_results: type[RawResults] = field(default=RawResults) labels: type[Labels] = field(default=Labels) input_data: type[InputData] = field(default=InputData) - targets: type[Targets] = field(default=Targets) + tt_targets: type[Targets] = field(default=Targets) backend: str = "backend" date_str: str = "date_str" date: str = "date" diff --git a/src/ttsim/interface_dag_elements/automatically_added_functions.py b/src/ttsim/interface_dag_elements/automatically_added_functions.py index bf4d1e49e9..6f9a29cb9a 100644 --- a/src/ttsim/interface_dag_elements/automatically_added_functions.py +++ b/src/ttsim/interface_dag_elements/automatically_added_functions.py @@ -590,7 +590,7 @@ def func(x: FloatColumn | IntColumn | BoolColumn) -> FloatColumn: def create_agg_by_group_functions( column_functions: dict[str, ColumnFunction], input_columns: UnorderedQNames, - targets: OrderedQNames, + tt_targets: OrderedQNames, grouping_levels: OrderedQNames, # backend: Literal["numpy", "jax"], ) -> UnorderedQNames: @@ -601,7 +601,7 @@ def create_agg_by_group_functions( } potential_agg_by_group_function_names = { # Targets that end with a grouping suffix are potential aggregation targets. - *[t for t in targets if gp.match(t)], + *[t for t in tt_targets if gp.match(t)], *_get_potential_agg_by_group_function_names_from_function_arguments( functions=column_functions, group_pattern=gp, diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index e5fcd8d0f6..33d0f4439f 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -227,14 +227,14 @@ def active_periods_overlap( def any_paths_are_invalid( policy_environment: PolicyEnvironment, input_data__tree: NestedData, - targets__tree: NestedTargetDict, + tt_targets__tree: NestedTargetDict, labels__top_level_namespace: UnorderedQNames, ) -> None: """Thin wrapper around `dt.fail_if_paths_are_invalid`.""" return dt.fail_if_paths_are_invalid( functions=policy_environment, data_tree=input_data__tree, - targets=targets__tree, + tt_targets=tt_targets__tree, top_level_namespace=labels__top_level_namespace, ) @@ -242,11 +242,11 @@ def any_paths_are_invalid( @fail_or_warn_function(include_if_all_elements_present=["results__df_with_mapper"]) def paths_are_missing_in_targets_tree_mapper( results__tree: NestedData, - targets__tree: NestedStrings, + tt_targets__tree: NestedStrings, ) -> None: """Fail if the data paths are missing in the paths to column names.""" paths_in_data = dt.flatten_to_tree_paths(results__tree) - paths_in_mapper = dt.flatten_to_tree_paths(targets__tree) + paths_in_mapper = dt.flatten_to_tree_paths(tt_targets__tree) missing_paths = [str(p) for p in paths_in_mapper if p not in paths_in_data] if missing_paths: msg = ( @@ -691,7 +691,7 @@ def root_nodes_are_missing( def targets_are_not_in_specialized_environment_or_data( specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, labels__processed_data_columns: QNameDataColumns, - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, ) -> None: """Fail if some target is not among functions. @@ -701,19 +701,19 @@ def targets_are_not_in_specialized_environment_or_data( Dictionary containing functions to build the DAG. labels__processed_data_columns The columns which are available in the data tree. - targets - The targets which should be computed. They limit the DAG in the way that only - ancestors of these nodes need to be considered. + tt_targets__qname + The taxes & transfers targets which should be computed. They limit the DAG in + the way that only ancestors of these nodes need to be considered. Raises ------ ValueError - Raised if any member of `targets` is not among functions. + Raised if any member of `tt_targets` is not among functions. """ missing_targets = [ str(dt.tree_path_from_qname(n)) - for n in targets__qname + for n in tt_targets__qname if n not in specialized_environment__without_tree_logic_and_with_derived_functions and n not in labels__processed_data_columns @@ -725,14 +725,14 @@ def targets_are_not_in_specialized_environment_or_data( @fail_or_warn_function() -def targets_tree_is_invalid(targets__tree: NestedTargetDict) -> None: +def targets_tree_is_invalid(tt_targets__tree: NestedTargetDict) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. """ assert_valid_ttsim_pytree( - tree=targets__tree, + tree=tt_targets__tree, leaf_checker=lambda leaf: isinstance(leaf, (None | str)), - tree_name="targets__tree", + tree_name="tt_targets__tree", ) diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py index c3fac47f7e..77fccd4b52 100644 --- a/src/ttsim/interface_dag_elements/labels.py +++ b/src/ttsim/interface_dag_elements/labels.py @@ -182,12 +182,12 @@ def fail_if_multiple_time_units_for_same_base_name_and_group( @interface_function() def column_targets( specialized_environment__with_partialled_params_and_scalars: UnorderedQNames, - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, ) -> OrderedQNames: """All targets that are column functions.""" return [ t - for t in targets__qname + for t in tt_targets__qname if t in specialized_environment__with_partialled_params_and_scalars ] @@ -195,13 +195,13 @@ def column_targets( @interface_function() def param_targets( specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, column_targets: OrderedQNames, ) -> OrderedQNames: - possible_targets = set(targets__qname) - set(column_targets) + possible_targets = set(tt_targets__qname) - set(column_targets) return [ t - for t in targets__qname + for t in tt_targets__qname if t in possible_targets and t in specialized_environment__without_tree_logic_and_with_derived_functions ] @@ -209,9 +209,9 @@ def param_targets( @interface_function() def input_data_targets( - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, column_targets: OrderedQNames, param_targets: OrderedQNames, ) -> OrderedQNames: - possible_targets = set(targets__qname) - set(column_targets) - set(param_targets) - return [t for t in targets__qname if t in possible_targets] + possible_targets = set(tt_targets__qname) - set(column_targets) - set(param_targets) + return [t for t in tt_targets__qname if t in possible_targets] diff --git a/src/ttsim/interface_dag_elements/results.py b/src/ttsim/interface_dag_elements/results.py index 41a92771cf..b4ebb7ee01 100644 --- a/src/ttsim/interface_dag_elements/results.py +++ b/src/ttsim/interface_dag_elements/results.py @@ -44,7 +44,7 @@ def tree(raw_results__combined: QNameData, input_data__flat: FlatData) -> Nested def df_with_mapper( tree: NestedData, input_data__flat: FlatData, - targets__tree: NestedStrings, + tt_targets__tree: NestedStrings, ) -> pd.DataFrame: """The results DataFrame with mapped column names. @@ -62,7 +62,7 @@ def df_with_mapper( """ return nested_data_to_df_with_mapped_columns( nested_data_to_convert=tree, - nested_outputs_df_column_names=targets__tree, + nested_outputs_df_column_names=tt_targets__tree, data_with_p_id=input_data__flat, ) diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index 1e9c611c6d..eea092da3a 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -48,7 +48,7 @@ def rounding() -> bool: @interface_function() def without_tree_logic_and_with_derived_functions( policy_environment: PolicyEnvironment, - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, labels__input_columns: UnorderedQNames, labels__top_level_namespace: UnorderedQNames, labels__grouping_levels: OrderedQNames, @@ -66,7 +66,7 @@ def without_tree_logic_and_with_derived_functions( ) return _add_derived_functions( qname_env_without_tree_logic=qname_env_without_tree_logic, - targets=targets__qname, + tt_targets=tt_targets__qname, input_columns=labels__input_columns, grouping_levels=labels__grouping_levels, ) @@ -91,7 +91,7 @@ def _remove_tree_logic_from_policy_environment( def _add_derived_functions( qname_env_without_tree_logic: dict[str, ColumnObject | ParamFunction | ParamObject], - targets: OrderedQNames, + tt_targets: OrderedQNames, input_columns: UnorderedQNames, grouping_levels: OrderedQNames, ) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: @@ -111,7 +111,7 @@ def _add_derived_functions( column_objects_param_functions Dict with qualified function names as keys and functions with qualified arguments as values. - targets + tt_targets The list of targets with qualified names. data Dict with qualified data names as keys and arrays as values. @@ -144,7 +144,7 @@ def _add_derived_functions( aggregate_by_group_functions = create_agg_by_group_functions( column_functions=column_functions, input_columns=input_columns, - targets=targets, + tt_targets=tt_targets, grouping_levels=grouping_levels, ) return { diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index 969db080bf..028eb7033f 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -22,14 +22,14 @@ def input_data_dtypes( specialized_environment__with_partialled_params_and_scalars: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 policy_environment: PolicyEnvironment, - targets__qname: OrderedQNames, + tt_targets__qname: OrderedQNames, labels__top_level_namespace: UnorderedQNames, ) -> NestedInputStructureDict: base_dtype_tree = dt.create_tree_with_input_types( functions=dt.unflatten_from_qnames( specialized_environment__with_partialled_params_and_scalars, ), - targets=targets__qname, + targets=tt_targets__qname, top_level_inputs=labels__top_level_namespace, ) diff --git a/src/ttsim/interface_dag_elements/targets.py b/src/ttsim/interface_dag_elements/tt_targets.py similarity index 86% rename from src/ttsim/interface_dag_elements/targets.py rename to src/ttsim/interface_dag_elements/tt_targets.py index 208eb8ca7d..d8bb65820b 100644 --- a/src/ttsim/interface_dag_elements/targets.py +++ b/src/ttsim/interface_dag_elements/tt_targets.py @@ -21,11 +21,11 @@ def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict: """Targets as a tree. Will typically be provided by the user. - If requesting `df_with_mapper` as the targets, the leaves must be the desired + If requesting `df_with_mapper` as a main target, the leaves must be the desired column names. - If not provided, the targets will be inferred from the policy environment by using - all ColumnFunctions in the policy environment. + If not provided, the targets will be inferred from the policy environment (i.e., + use all ColumnFunctions in the policy environment). """ return dt.unflatten_from_tree_paths( { diff --git a/src/ttsim/main_args.py b/src/ttsim/main_args.py index 039a5ad0e8..f07063d768 100644 --- a/src/ttsim/main_args.py +++ b/src/ttsim/main_args.py @@ -3,10 +3,8 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Any -from ttsim.interface_dag_elements import AllOutputNames # noqa: TC001 - if TYPE_CHECKING: - from collections.abc import Callable, Iterable + from collections.abc import Callable from pathlib import Path import networkx as nx @@ -18,7 +16,6 @@ FlatOrigParamSpecs, NestedData, NestedStrings, - NestedTargetDict, OrderedQNames, QNameData, QNameStrings, @@ -35,31 +32,6 @@ def to_dict(self) -> dict[str, Any]: return self.__dict__ -@dataclass(frozen=True) -class Output(MainArg): - name: str | tuple[str, ...] | None - names: Iterable[str | tuple[str, ...]] | NestedTargetDict | None - - def __init__(self, *args: Any, **kwargs: Any): # noqa: ANN401, ARG002, ANN204 - raise RuntimeError("Use any of the class methods to instantiate this class.") - - @classmethod - def name(cls, name: AllOutputNames | str | tuple[str, ...]) -> Output: - """A single output name. Could be a qualified name or a tree path.""" - obj = object.__new__(cls) - object.__setattr__(obj, "name", name) - object.__setattr__(obj, "names", None) - return obj - - @classmethod - def names(cls, names: Iterable[AllOutputNames | str | tuple[str, ...]]) -> Output: - """An iterable of output names. Could be qualified names, tree paths, or a pytree.""" # noqa: E501 - obj = object.__new__(cls) - object.__setattr__(obj, "name", None) - object.__setattr__(obj, "names", names) - return obj - - @dataclass(frozen=True) class DfAndMapper: df: pd.DataFrame @@ -178,7 +150,7 @@ class Results(MainArg): @dataclass(frozen=True) -class Targets(MainArg): +class TTTargets(MainArg): qname: QNameStrings | None = None tree: NestedStrings | None = None diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 11312191ba..d4e045d633 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -22,7 +22,6 @@ InterfaceInput, interface_function, ) -from ttsim.main_args import Output from ttsim.tt_dag_elements import ( ColumnFunction, ParamFunction, @@ -108,7 +107,7 @@ def plot_tt_dag( date_str=date_str, orig_policy_objects={"root": root}, backend="numpy", - output=Output.name("policy_environment"), + main_target="policy_environment", ) if node_selector: @@ -247,9 +246,9 @@ def _get_tt_dag_with_node_metadata( env = main( policy_environment=environment, labels={"processed_data_columns": qnames_policy_inputs}, - targets={"qname": qnames_to_plot}, + tt_targets={"qname": qnames_to_plot}, backend="numpy", - output=Output.name(tgt), + main_target=tgt, ) all_nodes = { diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index 4d97159afc..b1696602ce 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -10,7 +10,7 @@ import pandas as pd import yaml -from ttsim import Output, main, merge_trees +from ttsim import main, merge_trees from ttsim.interface_dag_elements.data_converters import ( nested_data_to_df_with_nested_columns, ) @@ -48,7 +48,7 @@ def cached_policy_environment( orig_policy_objects={"root": root}, backend=backend, fail_and_warn=False, - output=Output.name("policy_environment"), + main_target="policy_environment", ) @@ -96,11 +96,11 @@ def execute_test( input_data={"tree": test.input_tree}, policy_environment=environment, date=test.date, - targets={"tree": test.target_structure}, + tt_targets={"tree": test.target_structure}, rounding=True, backend=backend, fail_and_warn=False, - output=Output.name("results__df_with_nested_columns"), + main_target="results__df_with_nested_columns", ) if test.expected_output_tree: @@ -239,7 +239,7 @@ def check_env_completeness( environment = main( date=date, backend="numpy", - output=Output.name("policy_environment"), + main_target=("policy_environment"), orig_policy_objects=orig_policy_objects, ) qname_environment = dt.flatten_to_qnames(environment) @@ -250,9 +250,9 @@ def check_env_completeness( qname_env_with_derived_functions = main( policy_environment=environment, labels={"processed_data_columns": qnames_policy_inputs}, - targets={"qname": list(qname_environment)}, + tt_targets={"qname": list(qname_environment)}, backend="numpy", - output=Output.name(tgt), + main_target=(tgt), ) all_nodes = { qn: dummy_callable(n) if not callable(n) else n diff --git a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py index 9729bd1977..327bcfe8b4 100644 --- a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py +++ b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py @@ -363,7 +363,7 @@ def x(test_m: int) -> int: @pytest.mark.parametrize( ( "column_functions", - "targets", + "tt_targets", "input_columns", "expected", ), @@ -390,7 +390,7 @@ def x(test_m: int) -> int: ) def test_derived_aggregation_functions_are_in_correct_namespace( column_functions, - targets, + tt_targets, input_columns, expected, ): @@ -402,7 +402,7 @@ def test_derived_aggregation_functions_are_in_correct_namespace( result = create_agg_by_group_functions( column_functions=column_functions, input_columns=input_columns, - targets=targets, + tt_targets=tt_targets, grouping_levels=("kin",), ) assert expected in result diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 6f2a75a37a..27e26da0f2 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -8,7 +8,6 @@ from numpy.testing import assert_array_equal from ttsim import ( - Output, main, ) from ttsim.interface_dag_elements.data_converters import ( @@ -136,7 +135,7 @@ def test_df_with_mapped_columns_to_flat_data_fails_if_mapper_value_not_in_df(xnp @pytest.mark.parametrize( ( "environment", - "targets__tree", + "tt_targets__tree", "expected_output", ), [ @@ -227,7 +226,7 @@ def test_df_with_mapped_columns_to_flat_data_fails_if_mapper_value_not_in_df(xnp def test_nested_data_to_dataframe( environment, minimal_data_tree, - targets__tree, + tt_targets__tree, expected_output, backend, ): @@ -235,14 +234,14 @@ def test_nested_data_to_dataframe( input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) result_df = nested_data_to_df_with_mapped_columns( nested_data_to_convert=results__tree, - nested_outputs_df_column_names=targets__tree, + nested_outputs_df_column_names=tt_targets__tree, data_with_p_id=minimal_data_tree, ) pd.testing.assert_frame_equal( diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 4d8bc832e8..bc386ed8c2 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -11,7 +11,7 @@ import pandas as pd import pytest -from ttsim import Output, main +from ttsim import main from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -133,7 +133,7 @@ def mettsim_environment(backend) -> PolicyEnvironment: orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, date=datetime.date(2025, 1, 1), backend=backend, - output=Output.name("policy_environment"), + main_target=("policy_environment"), ) @@ -519,7 +519,7 @@ def test_fail_if_active_periods_overlap_raises( @pytest.mark.parametrize( ( "environment", - "targets__tree", + "tt_targets__tree", ), [ ( @@ -532,7 +532,7 @@ def test_fail_if_active_periods_overlap_raises( ) def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( environment, - targets__tree, + tt_targets__tree, minimal_data_tree, backend, ): @@ -540,10 +540,10 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( input_data={"tree": minimal_data_tree}, date=datetime.date(2024, 1, 1), policy_environment=environment, - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) with pytest.raises( ValueError, @@ -551,7 +551,7 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( ): paths_are_missing_in_targets_tree_mapper( results__tree=results__tree, - targets__tree=targets__tree, + tt_targets__tree=tt_targets__tree, ) @@ -664,10 +664,10 @@ def test_fail_if_invalid_p_id_values_via_main(backend): main( input_data={"tree": data}, policy_environment={}, - targets={"tree": {}}, + tt_targets={"tree": {}}, rounding=False, backend=backend, - output=Output.name("fail_if__invalid_p_id_values"), + main_target=("fail_if__invalid_p_id_values"), ) @@ -733,7 +733,7 @@ def test_fail_if_input_df_mapper_has_incorrect_format( @pytest.mark.parametrize( ( "environment", - "targets__tree", + "tt_targets__tree", "match", ), [ @@ -764,7 +764,7 @@ def test_fail_if_input_df_mapper_has_incorrect_format( ) def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( environment, - targets__tree, + tt_targets__tree, minimal_data_tree, match, backend, @@ -774,10 +774,10 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.names(["processed_data", "results__tree"]), + main_targets=["processed_data", "results__tree"], ) with pytest.raises(TypeError, match=match): non_convertible_objects_in_results_tree( @@ -790,7 +790,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( @pytest.mark.parametrize( ( "environment", - "targets__tree", + "tt_targets__tree", "match", ), [ @@ -805,7 +805,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( ) def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_length( environment, - targets__tree, + tt_targets__tree, minimal_data_tree, match, backend, @@ -815,10 +815,10 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.names(["processed_data", "results__tree"]), + main_targets=["processed_data", "results__tree"], ) with pytest.raises(ValueError, match=match): non_convertible_objects_in_results_tree( @@ -847,10 +847,10 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): main( input_data={"tree": data}, policy_environment={}, - targets={"tree": {}}, + tt_targets={"tree": {}}, rounding=False, backend=backend, - output=Output.name("fail_if__invalid_p_id_values"), + main_target=("fail_if__invalid_p_id_values"), ) @@ -875,10 +875,10 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): main( input_data={"tree": data}, policy_environment={}, - targets={"tree": {}}, + tt_targets={"tree": {}}, rounding=False, backend=backend, - output=Output.name("fail_if__invalid_p_id_values"), + main_target=("fail_if__invalid_p_id_values"), ) @@ -922,10 +922,10 @@ def test_fail_if_input_arrays_have_different_lengths(backend): main( input_data={"tree": data}, policy_environment={}, - targets={"tree": {}}, + tt_targets={"tree": {}}, rounding=False, backend=backend, - output=Output.name("fail_if__input_arrays_have_different_lengths"), + main_target=("fail_if__input_arrays_have_different_lengths"), ) @@ -949,10 +949,10 @@ def c(b): input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": {"c": None}}, + tt_targets={"tree": {"c": None}}, rounding=False, backend=backend, - output=Output.names(["results__tree", "fail_if__root_nodes_are_missing"]), + main_targets=["results__tree", "fail_if__root_nodes_are_missing"], ) @@ -981,15 +981,15 @@ def a() -> int: input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": {"b": None}}, + tt_targets={"tree": {"b": None}}, rounding=False, backend=backend, - output=Output.names(["results__tree", "fail_if__root_nodes_are_missing"]), + main_targets=["results__tree", "fail_if__root_nodes_are_missing"], ) @pytest.mark.parametrize( - "policy_environment, targets, labels__processed_data_columns, expected_error_match", + "policy_environment, tt_targets, labels__processed_data_columns, expected_error_match", [ ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), @@ -999,7 +999,7 @@ def a() -> int: ) def test_fail_if_targets_are_not_in_specialized_environment_or_data( policy_environment, - targets, + tt_targets, labels__processed_data_columns, expected_error_match, ): @@ -1011,7 +1011,7 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data( specialized_environment__without_tree_logic_and_with_derived_functions=dt.flatten_to_qnames( policy_environment ), - targets__qname=targets, + tt_targets__qname=tt_targets, labels__processed_data_columns=labels__processed_data_columns, ) assert expected_error_match in str(e.value) @@ -1028,12 +1028,10 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( main( input_data={"tree": minimal_input_data}, policy_environment={}, - targets={"tree": {"unknown_target": None}}, + tt_targets={"tree": {"unknown_target": None}}, rounding=False, backend=backend, - output=Output.name( - "fail_if__targets_are_not_in_specialized_environment_or_data" - ), + main_target=("fail_if__targets_are_not_in_specialized_environment_or_data"), ) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index 784c8da794..e9b1081b91 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -8,7 +8,7 @@ import pytest from ttsim import main -from ttsim.main_args import InputData, Output +from ttsim.main_args import InputData from ttsim.plot_dag import ( plot_tt_dag, ) @@ -42,12 +42,10 @@ def get_orig_mettsim_objects() -> dict[ ]: out = main( orig_policy_objects={"root": METTSIM_ROOT}, - output=Output.names( - [ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ] - ), + main_targets=[ + "orig_policy_objects__column_objects_and_param_functions", + "orig_policy_objects__param_specs", + ], ) return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} @@ -123,7 +121,7 @@ def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "ja date_str="2020-01-01", input_data=InputData.flat(data), orig_policy_objects={"root": METTSIM_ROOT}, - targets={"tree": {"property_tax": {"amount_y": None}}}, - output=Output.names(["results__tree"]), + tt_targets={"tree": {"property_tax": {"amount_y": None}}}, + main_target="results__tree", backend=backend, ) diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index bd5f893380..ec2b6877d4 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import Output, main +from ttsim import main from ttsim.interface_dag_elements.orig_policy_objects import ( column_objects_and_param_functions, ) @@ -82,7 +82,7 @@ def test_input_is_recognized_as_potential_group_id(backend): orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - output=Output.name("labels__grouping_levels"), + main_target=("labels__grouping_levels"), ) @@ -91,7 +91,7 @@ def test_p_id_not_recognized_as_potential_group_id(backend): orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - output=Output.name("labels__grouping_levels"), + main_target=("labels__grouping_levels"), ) diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 787e2ec766..86197321bb 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -10,7 +10,7 @@ import pandas as pd import pytest -from ttsim import Output, main, merge_trees +from ttsim import main, merge_trees from ttsim.interface_dag_elements.specialized_environment import ( with_partialled_params_and_scalars, with_processed_params_and_scalars, @@ -286,7 +286,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: @pytest.mark.parametrize( ( "policy_environment", - "targets__tree", + "tt_targets__tree", "input_data__tree", ), [ @@ -388,7 +388,7 @@ def return_n1__x_kin(n1__x_kin: int) -> int: ) def test_create_agg_by_group_functions( policy_environment, - targets__tree, + tt_targets__tree, input_data__tree, backend, ): @@ -396,10 +396,10 @@ def test_create_agg_by_group_functions( policy_environment=policy_environment, input_data={"tree": input_data__tree}, date=datetime.date(2024, 1, 1), - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) @@ -413,10 +413,10 @@ def test_output_is_tree(minimal_input_data, backend, xnp): policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"module": {"some_func": None}}}, + tt_targets={"tree": {"module": {"some_func": None}}}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) assert isinstance(out, dict) @@ -446,10 +446,10 @@ def test_params_target_is_allowed(minimal_input_data): policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"some_param": None, "module": {"some_func": None}}}, + tt_targets={"tree": {"some_param": None, "module": {"some_func": None}}}, rounding=False, backend="numpy", - output=Output.name("results__tree"), + main_target=("results__tree"), ) assert isinstance(out, dict) @@ -478,10 +478,10 @@ def b(a: int) -> int: policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"b": None}}, + tt_targets={"tree": {"b": None}}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) numpy.testing.assert_array_almost_equal( results__tree["b"], @@ -551,10 +551,10 @@ def test_user_provided_aggregate_by_group_specs(backend): policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"module_name": {"betrag_m_fam": None}}}, + tt_targets={"tree": {"module_name": {"betrag_m_fam": None}}}, rounding=False, backend=backend, - output=Output.name("results__df_with_nested_columns"), + main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -595,10 +595,10 @@ def betrag_m_double_fam(betrag_m_double, fam_id) -> float: policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, + tt_targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, rounding=False, backend=backend, - output=Output.name("results__df_with_nested_columns"), + main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -645,10 +645,10 @@ def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), - targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, + tt_targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, rounding=False, backend=backend, - output=Output.name("results__df_with_nested_columns"), + main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -732,10 +732,10 @@ def source() -> int: input_data={"tree": minimal_input_data_shared_fam}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": target_tree}, + tt_targets={"tree": target_tree}, rounding=False, backend=backend, - output=Output.name("results__df_with_nested_columns"), + main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -788,7 +788,7 @@ def test_policy_environment_with_params_and_scalars_is_processed(xnp, dnp, backe ( "nested_policy_environment", "overriding_data", - "targets__tree", + "tt_targets__tree", "expected_output", ), [ @@ -838,7 +838,7 @@ def test_policy_environment_with_params_and_scalars_is_processed(xnp, dnp, backe def test_can_override_ttsim_objects_with_data( nested_policy_environment, overriding_data, - targets__tree, + tt_targets__tree, expected_output, minimal_input_data, backend, @@ -847,10 +847,10 @@ def test_can_override_ttsim_objects_with_data( input_data={"tree": {**minimal_input_data, **overriding_data}}, policy_environment=nested_policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": targets__tree}, + tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) flat_actual = dt.flatten_to_tree_paths(actual) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index 3383e318ac..1495ee847f 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -4,7 +4,7 @@ import numpy -from ttsim import Output, main +from ttsim import main from ttsim.testing_utils import ( load_policy_test_data, ) @@ -90,7 +90,7 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=Output.name("templates__input_data_dtypes"), + main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} @@ -117,14 +117,14 @@ def test_template_all_outputs_with_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=Output.name("templates__input_data_dtypes"), + main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} def test_template_output_y_no_inputs(backend): actual = main( - targets={"tree": {"a": {"y": None}}}, + tt_targets={"tree": {"a": {"y": None}}}, policy_environment={ "inp1": inp1, "p1": p1, @@ -136,7 +136,7 @@ def test_template_output_y_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=Output.name("templates__input_data_dtypes"), + main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}} @@ -152,7 +152,7 @@ def test_template_output_x_with_inputs(backend): "inp1": [0, 1, 2], } }, - targets={"tree": {"a": {"x": None}}}, + tt_targets={"tree": {"a": {"x": None}}}, policy_environment={ "inp1": inp1, "p1": p1, @@ -164,6 +164,6 @@ def test_template_output_x_with_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - output=Output.name("templates__input_data_dtypes"), + main_target=("templates__input_data_dtypes"), ) assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index cf1520810a..1a52bc426c 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -4,7 +4,7 @@ import pandas as pd -from ttsim import Output, main +from ttsim import main from ttsim.interface_dag_elements import warn_if from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -33,10 +33,10 @@ def test_warn_if_functions_and_data_columns_overlap(backend): "some_func": some_func, "some_target": another_func, }, - targets={"tree": {"some_target": None}}, + tt_targets={"tree": {"some_target": None}}, rounding=False, backend=backend, - output=Output.name("warn_if__functions_and_data_columns_overlap"), + main_target=("warn_if__functions_and_data_columns_overlap"), ) # Check that we got exactly one warning assert len(w) == 1 @@ -58,8 +58,8 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) } }, policy_environment={"some_func": some_func}, - targets={"tree": {"some_func": None}}, + tt_targets={"tree": {"some_func": None}}, rounding=False, backend=backend, - output=Output.name("warn_if__functions_and_data_columns_overlap"), + main_target=("warn_if__functions_and_data_columns_overlap"), ) diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index 1f246e0454..6b8447e598 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -4,7 +4,7 @@ import pandas as pd import pytest -from ttsim import AllOutputNames, InputData, Output, main +from ttsim import InputData, MainTarget, TTTargets, main DF_WITH_NESTED_COLUMNS = pd.DataFrame( { @@ -90,9 +90,9 @@ ) def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): result = main( - output=Output.name(AllOutputNames.results.df_with_mapper), + main_target=(MainTarget.results.df_with_mapper), input_data=input_data_arg, - targets={"tree": TARGETS_TREE}, + tt_targets=TTTargets(tree=TARGETS_TREE), date_str="2025-01-01", rounding=False, orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index c5bf978cea..3fb48045a2 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -7,16 +7,17 @@ import dags.tree as dt import pytest -from ttsim import InputData, OrigPolicyObjects, Output, Targets +from ttsim import InputData, OrigPolicyObjects, TTTargets from ttsim.interface_dag import ( _fail_if_requested_nodes_cannot_be_found, _fail_if_root_nodes_of_interface_dag_are_missing, _harmonize_inputs, - _harmonize_output, + _harmonize_main_target, + _harmonize_main_targets, _resolve_dynamic_interface_objects_to_static_nodes, load_flat_interface_functions_and_inputs, ) -from ttsim.interface_dag_elements import AllOutputNames +from ttsim.interface_dag_elements import MainTarget from ttsim.interface_dag_elements.fail_if import format_list_linewise from ttsim.interface_dag_elements.interface_node_objects import ( InputDependentInterfaceFunction, @@ -125,7 +126,7 @@ def test_all_output_names_is_complete() -> None: for p, f in load_flat_interface_functions_and_inputs().items() } - # We do include the root path in AllOutputNames because it will be pre-defined in + # We do include the root path in MainTarget because it will be pre-defined in # user-facing implementations. nodes -= { ( @@ -134,7 +135,7 @@ def test_all_output_names_is_complete() -> None: ), } - all_output_names = set(dt.tree_paths(AllOutputNames.to_dict())) + all_output_names = set(dt.tree_paths(MainTarget.to_dict())) assert nodes == all_output_names @@ -153,7 +154,7 @@ def interface_input_for_idif() -> Any: @pytest.mark.parametrize( - ("output_qnames", "nodes", "error_match"), + ("main_targets", "nodes", "error_match"), [ ( ["a"], @@ -185,11 +186,11 @@ def interface_input_for_idif() -> Any: ], ) def test_fail_if_requested_nodes_cannot_be_found( - output_qnames, nodes, error_match + main_targets, nodes, error_match ) -> None: with pytest.raises(ValueError, match=error_match): _fail_if_requested_nodes_cannot_be_found( - output_qnames=output_qnames, + main_targets=main_targets, nodes=nodes, ) @@ -205,7 +206,7 @@ def test_harmonize_inputs_main_args_input(): df={"cannot use df because comparison fails"}, mapper={"c": "a", "d": "b", "p_id": "p_id"}, ), - "targets": Targets(tree={"e": "f"}), + "tt_targets": TTTargets(tree={"e": "f"}), "date": "2025-01-01", "backend": "numpy", "rounding": True, @@ -219,7 +220,7 @@ def test_harmonize_inputs_main_args_input(): assert harmonized == { "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - "targets__tree": {"e": "f"}, + "tt_targets__tree": {"e": "f"}, "date": "2025-01-01", "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, "orig_policy_objects__param_specs": {}, @@ -236,7 +237,7 @@ def test_harmonize_inputs_tree_input(): "mapper": {"c": "a", "d": "b", "p_id": "p_id"}, } }, - "targets": {"tree": {"e": "f"}}, + "tt_targets": {"tree": {"e": "f"}}, "date": "2025-01-01", "backend": "numpy", "rounding": True, @@ -250,7 +251,7 @@ def test_harmonize_inputs_tree_input(): assert harmonized == { "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - "targets__tree": {"e": "f"}, + "tt_targets__tree": {"e": "f"}, "date": "2025-01-01", "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, "orig_policy_objects__param_specs": {}, @@ -329,24 +330,44 @@ def test_resolve_dynamic_interface_objects_to_static_nodes_with_conflicting_cond @pytest.mark.parametrize( - ("output", "expected"), + ("main_target", "expected"), [ - (Output.name("a__b"), {"name": "a__b", "names": ["a__b"]}), - (Output.name(("a", "b")), {"name": "a__b", "names": ["a__b"]}), - ( - Output.name({"a": {"b": None}}), - {"name": "a__b", "names": ["a__b"]}, - ), - (Output.names(["a__b"]), {"name": None, "names": ["a__b"]}), - (Output.names([("a", "b")]), {"name": None, "names": ["a__b"]}), - ( - Output.names({"a": {"b": None}}), - {"name": None, "names": ["a__b"]}, - ), + ("a__b", "a__b"), + (("a", "b"), "a__b"), + ({"a": {"b": None}}, "a__b"), + ], +) +def test_harmonize_main_target(main_target, expected): + harmonized = _harmonize_main_target(main_target=main_target) + + assert harmonized == expected + + +@pytest.mark.parametrize( + "main_target", + [ + ["a", "b"], + {"a": {"b": None}, "c": None}, + {"a": {"b": None, "c": None}}, + ], +) +def test_harmonize_main_target_fails_for_multiple_elements(main_target): + with pytest.raises( + ValueError, match="must be a single qualified name, a tuple, or a dict" + ): + _harmonize_main_target(main_target=main_target) + + +@pytest.mark.parametrize( + ("main_targets", "expected"), + [ + (["a__b"], ["a__b"]), + ([("a", "b")], ["a__b"]), + ({"a": {"b": None}}, ["a__b"]), ], ) -def test_harmonize_outputs(output, expected): - harmonized = _harmonize_output(output=output) +def test_harmonize_main_targets(main_targets, expected): + harmonized = _harmonize_main_targets(main_targets=main_targets) assert harmonized == expected diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 7061997f0d..97f2aa23e6 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -4,7 +4,6 @@ import pytest -from ttsim import Output from ttsim.interface_dag import main from ttsim.plot_dag import ( _get_tt_dag_with_node_metadata, @@ -244,7 +243,7 @@ def test_node_selector(node_selector, expected_nodes): date_str="2025-01-01", orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend="numpy", - output=Output.name("policy_environment"), + main_target=("policy_environment"), ) dag = _get_tt_dag_with_node_metadata( environment=environment, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index 86817b8e8f..fdda9a15a4 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -7,7 +7,7 @@ import pytest from pandas._testing import assert_series_equal -from ttsim import Output, main +from ttsim import main from ttsim.tt_dag_elements import ( RoundingSpec, policy_function, @@ -114,10 +114,10 @@ def test_func(x): input_data={"tree": input_data__tree}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": {"namespace": {"test_func": None}}}, + tt_targets={"tree": {"namespace": {"test_func": None}}}, rounding=True, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["namespace"]["test_func"]), @@ -150,10 +150,10 @@ def test_func_m(x): input_data={"tree": data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": {"test_func_y": None}}, + tt_targets={"tree": {"test_func_y": None}}, rounding=True, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func_y"]), @@ -190,10 +190,10 @@ def test_func(x): input_data={"tree": data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), - targets={"tree": {"test_func": None}}, + tt_targets={"tree": {"test_func": None}}, rounding=False, backend=backend, - output=Output.name("results__tree"), + main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func"]), From 4a161940a977201e3f077cf6e7afb6acf5a7ba81 Mon Sep 17 00:00:00 2001 From: Max Jahn <max.jahn45@gmail.com> Date: Mon, 7 Jul 2025 17:10:14 +0200 Subject: [PATCH 057/109] Add N-Dimensional Lookup Table (#998) Address #989 by adding a new Class of N-Dimensional Lookup Tables that replaces the old classes for specific-dimensional tables. ### Todo - [x] Create N-Dim. Lookup Table Object - [x] Replace all occurrences of 1-Dim and 2-Dim Lookup Tables --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../arbeitslosengeld_2/regelbedarf.py | 14 +- .../einkommensteuer/abz\303\274ge/alter.py" | 26 ++- .../einkommensteuer/einkommensteuer.py | 11 +- src/_gettsim/kindergeld/kindergeld.py | 14 +- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 8 +- .../arbeitslosen/arbeitslosengeld.py | 25 ++- .../besonders_langj\303\244hrig.py" | 8 +- .../f\303\274r_frauen/altersgrenze.yaml" | 2 +- .../f\303\274r_frauen/f\303\274r_frauen.py" | 16 +- .../langj\303\244hrig/langj\303\244hrig.py" | 15 +- .../regelaltersrente/regelaltersrente.py | 8 +- .../wegen_arbeitslosigkeit.py | 38 ++--- .../erwerbsminderung/erwerbsminderung.py | 24 ++- .../unterhaltsvorschuss.py | 8 +- src/_gettsim/wohngeld/einkommen.py | 24 ++- src/_gettsim/wohngeld/einkommen.yaml | 2 +- src/_gettsim/wohngeld/miete.py | 122 +++++--------- src/_gettsim/wohngeld/wohngeld.py | 32 ++-- .../policy_environment.py | 21 +-- src/ttsim/params-schema.json | 3 +- src/ttsim/tt_dag_elements/__init__.py | 18 +-- src/ttsim/tt_dag_elements/param_objects.py | 150 +++++++++--------- src/ttsim/tt_dag_elements/typing.py | 3 +- .../interface_dag_elements/test_failures.py | 19 +-- .../test_orig_policy_objects.py | 6 +- 25 files changed, 255 insertions(+), 362 deletions(-) diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 33ce824523..ec5ce08c65 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -6,8 +6,8 @@ from typing import TYPE_CHECKING from ttsim.tt_dag_elements import ( - ConsecutiveInt1dLookupTableParamValue, - get_consecutive_int_1d_lookup_table_param_value, + ConsecutiveIntLookupTableParamValue, + get_consecutive_int_lookup_table_param_value, param_function, policy_function, policy_input, @@ -325,16 +325,14 @@ def berechtigte_wohnfläche( wohnen__bewohnt_eigentum_hh: bool, anzahl_personen_hh: int, berechtigte_wohnfläche_miete: dict[str, float], - berechtigte_wohnfläche_eigentum: ConsecutiveInt1dLookupTableParamValue, + berechtigte_wohnfläche_eigentum: ConsecutiveIntLookupTableParamValue, ) -> float: """Calculate size of dwelling eligible to claim. Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ if wohnen__bewohnt_eigentum_hh: - maximum = berechtigte_wohnfläche_eigentum.values_to_look_up[ - anzahl_personen_hh - berechtigte_wohnfläche_eigentum.base_to_subtract - ] + maximum = berechtigte_wohnfläche_eigentum.look_up(anzahl_personen_hh) else: maximum = ( berechtigte_wohnfläche_miete["single"] @@ -455,11 +453,11 @@ def berechtigte_wohnfläche_eigentum( parameter_berechtigte_wohnfläche_eigentum: RawParam, wohngeld__max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Berechtigte Wohnfläche für Eigenheim.""" tmp = parameter_berechtigte_wohnfläche_eigentum.copy() je_weitere_person = tmp.pop("je_weitere_person") max_anzahl_direkt = tmp.pop("max_anzahl_direkt") for i in range(wohngeld__max_anzahl_personen["indizierung"] - max_anzahl_direkt): tmp[i] = tmp[max_anzahl_direkt] + i * je_weitere_person - return get_consecutive_int_1d_lookup_table_param_value(raw=tmp, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=tmp, xnp=xnp) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" index cc1cdc8166..d106f151b9 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING from ttsim.tt_dag_elements import ( - get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, param_function, policy_function, ) @@ -13,7 +13,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue @policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") @@ -60,14 +60,12 @@ def altersfreibetrag_y_ab_2005( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_y: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y: float, altersentlastungsbetrag_altersgrenze: int, - maximaler_altersentlastungsbetrag_gestaffelt: ConsecutiveInt1dLookupTableParamValue, - altersentlastungsquote_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + maximaler_altersentlastungsbetrag_gestaffelt: ConsecutiveIntLookupTableParamValue, + altersentlastungsquote_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Calculate tax deduction allowance for elderly since 2005.""" maximaler_altersentlastungsbetrag = ( - maximaler_altersentlastungsbetrag_gestaffelt.values_to_look_up[ - geburtsjahr - maximaler_altersentlastungsbetrag_gestaffelt.base_to_subtract - ] + maximaler_altersentlastungsbetrag_gestaffelt.look_up(geburtsjahr) ) einkommen_lohn = ( @@ -81,9 +79,9 @@ def altersfreibetrag_y_ab_2005( + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_y, 0.0, ) - betrag = altersentlastungsquote_gestaffelt.values_to_look_up[ - geburtsjahr - altersentlastungsquote_gestaffelt.base_to_subtract - ] * (einkommen_lohn + weiteres_einkommen) + betrag = altersentlastungsquote_gestaffelt.look_up(geburtsjahr) * ( + einkommen_lohn + weiteres_einkommen + ) if alter > altersentlastungsbetrag_altersgrenze: out = min(betrag, maximaler_altersentlastungsbetrag) @@ -97,7 +95,7 @@ def altersfreibetrag_y_ab_2005( def altersentlastungsquote_gestaffelt( raw_altersentlastungsquote_gestaffelt: dict[str | int, int | float], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" spec = raw_altersentlastungsquote_gestaffelt.copy() first_birthyear_to_consider: int = int(spec.pop("first_birthyear_to_consider")) @@ -115,7 +113,7 @@ def altersentlastungsquote_gestaffelt( def maximaler_altersentlastungsbetrag_gestaffelt( raw_maximaler_altersentlastungsbetrag_gestaffelt: dict[str | int, int | float], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Convert the raw parameters for the age-based tax deduction allowance to a dict.""" spec = raw_maximaler_altersentlastungsbetrag_gestaffelt.copy() first_birthyear_to_consider: int = int(spec.pop("first_birthyear_to_consider")) @@ -134,7 +132,7 @@ def get_consecutive_int_1d_lookup_table_with_filled_up_tails( left_tail_key: int, right_tail_key: int, xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Create a consecutive integer lookup table with filled tails. This function takes a dictionary of consecutive integer keys and their corresponding @@ -156,7 +154,7 @@ def get_consecutive_int_1d_lookup_table_with_filled_up_tails( range(max_key_in_spec + 1, right_tail_key + 1), raw[max_key_in_spec], ) - return get_consecutive_int_1d_lookup_table_param_value( + return get_consecutive_int_lookup_table_param_value( raw={**consecutive_dict_start, **raw, **consecutive_dict_end}, xnp=xnp, ) diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 9931c9f5ac..268b9d6e52 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -25,7 +25,7 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import RawParam - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue @agg_by_group_function(agg_type=AggType.COUNT) @@ -184,7 +184,7 @@ def betrag_ohne_kinderfreibetrag_y_sn( def relevantes_kindergeld_mit_staffelung_m( anzahl_kindergeld_ansprüche_1: int, anzahl_kindergeld_ansprüche_2: int, - kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, + kindergeld__satz_nach_anzahl_kinder: ConsecutiveIntLookupTableParamValue, ) -> float: """Kindergeld relevant for income tax. For each parent, half of the actual Kindergeld claim is considered. @@ -198,12 +198,7 @@ def relevantes_kindergeld_mit_staffelung_m( """ kindergeld_ansprüche = anzahl_kindergeld_ansprüche_1 + anzahl_kindergeld_ansprüche_2 - return ( - kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ - kindergeld_ansprüche - kindergeld__satz_nach_anzahl_kinder.base_to_subtract - ] - / 2 - ) + return kindergeld__satz_nach_anzahl_kinder.look_up(kindergeld_ansprüche) / 2 @policy_function( diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 41965f971c..e0d4299453 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -7,7 +7,7 @@ from ttsim.tt_dag_elements import ( AggType, agg_by_p_id_function, - get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, join, param_function, policy_function, @@ -17,7 +17,7 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue @agg_by_p_id_function(agg_type=AggType.SUM) @@ -46,7 +46,7 @@ def betrag_ohne_staffelung_m( @policy_function(end_date="2022-12-31", leaf_name="betrag_m") def betrag_gestaffelt_m( anzahl_ansprüche: int, - satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, + satz_nach_anzahl_kinder: ConsecutiveIntLookupTableParamValue, ) -> float: """Sum of Kindergeld that parents receive for their children. @@ -54,9 +54,7 @@ def betrag_gestaffelt_m( being claimed for. """ - return satz_nach_anzahl_kinder.values_to_look_up[ - anzahl_ansprüche - satz_nach_anzahl_kinder.base_to_subtract - ] + return satz_nach_anzahl_kinder.look_up(anzahl_ansprüche) @policy_function( @@ -144,7 +142,7 @@ def gleiche_fg_wie_empfänger( def satz_nach_anzahl_kinder( satz_gestaffelt: dict[int, float], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Convert the Kindergeld-Satz by child to the amount of Kindergeld by number of children. """ @@ -159,7 +157,7 @@ def satz_nach_anzahl_kinder( + satz_gestaffelt[max_num_children_in_spec] * (k - max_num_children_in_spec) for k in range(max_num_children_in_spec + 1, max_num_children) } - return get_consecutive_int_1d_lookup_table_param_value( + return get_consecutive_int_lookup_table_param_value( raw={0: 0.0, **base_spec, **extended_spec}, xnp=xnp, ) diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index 7f12497fe2..b3f417f067 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -10,13 +10,13 @@ from _gettsim.param_types import ( ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, ) - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue @param_function(start_date="2021-01-01", end_date="2022-12-31", leaf_name="satz") def satz_mit_gestaffeltem_kindergeld( existenzminimum: ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, - kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, + kindergeld__satz_nach_anzahl_kinder: ConsecutiveIntLookupTableParamValue, satz_vorjahr_ohne_kindersofortzuschlag: float, ) -> float: """Prior to 2021, the maximum amount of the Kinderzuschlag was specified directly in @@ -34,9 +34,7 @@ def satz_mit_gestaffeltem_kindergeld( + existenzminimum.heizkosten.kind ) / 12 - - kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ - 1 - kindergeld__satz_nach_anzahl_kinder.base_to_subtract - ], + - kindergeld__satz_nach_anzahl_kinder.look_up(1), satz_vorjahr_ohne_kindersofortzuschlag, ) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index 40a73bb6a1..ad2c34e42e 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING from ttsim.tt_dag_elements import ( - get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, param_function, piecewise_polynomial, policy_function, @@ -15,7 +15,7 @@ from types import ModuleType from ttsim.tt_dag_elements import ( - ConsecutiveInt1dLookupTableParamValue, + ConsecutiveIntLookupTableParamValue, PiecewisePolynomialParamValue, ) @@ -53,18 +53,15 @@ def monate_verbleibender_anspruchsdauer( monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: int, mindestversicherungszeit_erreicht: bool, monate_durchgängigen_bezugs_von_arbeitslosengeld: int, - anspruchsdauer_nach_alter: ConsecutiveInt1dLookupTableParamValue, - anspruchsdauer_nach_versicherungspflichtigen_monaten: ConsecutiveInt1dLookupTableParamValue, + anspruchsdauer_nach_alter: ConsecutiveIntLookupTableParamValue, + anspruchsdauer_nach_versicherungspflichtigen_monaten: ConsecutiveIntLookupTableParamValue, ) -> int: """Remaining amount of months of potential unemployment benefit claims.""" - auf_altersbasis = anspruchsdauer_nach_alter.values_to_look_up[ - alter - anspruchsdauer_nach_alter.base_to_subtract - ] + auf_altersbasis = anspruchsdauer_nach_alter.look_up(alter) auf_basis_versicherungspflichtiger_monate = ( - anspruchsdauer_nach_versicherungspflichtigen_monaten.values_to_look_up[ + anspruchsdauer_nach_versicherungspflichtigen_monaten.look_up( monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren - - anspruchsdauer_nach_versicherungspflichtigen_monaten.base_to_subtract - ] + ) ) if mindestversicherungszeit_erreicht: @@ -159,7 +156,7 @@ def einkommen_vorjahr_proxy_m( def anspruchsdauer_nach_alter( raw_anspruchsdauer_nach_alter: dict[str | int, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Amount of potential months of unemployment benefit claims by age.""" tmp = raw_anspruchsdauer_nach_alter.copy() max_age: int = tmp.pop("max_age") @@ -172,14 +169,14 @@ def anspruchsdauer_nach_alter( else: full_spec[a] = tmp[a] - return get_consecutive_int_1d_lookup_table_param_value(raw=full_spec, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=full_spec, xnp=xnp) @param_function(start_date="1997-03-24") def anspruchsdauer_nach_versicherungspflichtigen_monaten( raw_anspruchsdauer_nach_versicherungspflichtigen_monaten: dict[str | int, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Amount of potential months of unemployment benefit claims by age.""" tmp = raw_anspruchsdauer_nach_versicherungspflichtigen_monaten.copy() max_months: int = tmp.pop("max_months") @@ -192,4 +189,4 @@ def anspruchsdauer_nach_versicherungspflichtigen_monaten( else: full_spec[a] = tmp[a] - return get_consecutive_int_1d_lookup_table_param_value(raw=full_spec, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=full_spec, xnp=xnp) diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index dda7a4b30d..a662ecb679 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( @@ -11,7 +11,7 @@ ) def altersgrenze( geburtsjahr: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """ Full retirement age (FRA) for very long term insured. @@ -23,9 +23,7 @@ def altersgrenze( Does not check for eligibility for this pathway into retirement. """ - return altersgrenze_gestaffelt.values_to_look_up[ - geburtsjahr - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(geburtsjahr) @policy_function(start_date="2012-01-01") diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" index 3b2f51d919..b42e61806c 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/altersgrenze.yaml" @@ -98,7 +98,7 @@ altersgrenze_gestaffelt: years: 60 months: 10 5: - years: 61 + years: 60 months: 11 9: years: 61 diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index 58a281f15b..e9b27b1355 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -5,7 +5,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( @@ -16,7 +16,7 @@ def altersgrenze_mit_staffelung( geburtsjahr: int, geburtsmonat: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Full retirement age (FRA) for women. @@ -25,10 +25,7 @@ def altersgrenze_mit_staffelung( Does not check for eligibility for this pathway into retirement. """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - - return altersgrenze_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(birth_month_since_ad) @policy_function( @@ -39,7 +36,7 @@ def altersgrenze_mit_staffelung( def altersgrenze_vorzeitig_mit_staffelung( geburtsjahr: int, geburtsmonat: int, - altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Early retirement age (ERA) for Renten für Frauen. @@ -48,10 +45,7 @@ def altersgrenze_vorzeitig_mit_staffelung( Does not check for eligibility for this pathway into retirement. """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - - return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract - ] + return altersgrenze_vorzeitig_gestaffelt.look_up(birth_month_since_ad) @policy_function(end_date="1997-12-15", leaf_name="grundsätzlich_anspruchsberechtigt") diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index 80bb5f6681..b5958bea55 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( @@ -12,7 +12,7 @@ def altersgrenze_gestaffelt_ab_1989( geburtsjahr: int, geburtsmonat: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """ Full retirement age (FRA) for long term insured. @@ -25,10 +25,7 @@ def altersgrenze_gestaffelt_ab_1989( Does not check for eligibility for this pathway into retirement. """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - - return altersgrenze_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(birth_month_since_ad) @policy_function( @@ -38,15 +35,13 @@ def altersgrenze_gestaffelt_ab_1989( ) def altersgrenze_vorzeitig_gestaffelt_ab_1989_bis_1996( geburtsjahr: int, - altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Early retirement age (ERA) for Renten für langjährig Versicherte. Does not check for eligibility for this pathway into retirement. """ - return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ - geburtsjahr - altersgrenze_vorzeitig_gestaffelt.base_to_subtract - ] + return altersgrenze_vorzeitig_gestaffelt.look_up(geburtsjahr) @policy_function() diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index c90339d238..0cf9a78ecd 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -2,13 +2,13 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function @policy_function(start_date="2007-04-20", end_date="2030-12-31") def altersgrenze( geburtsjahr: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Normal retirement age (NRA) during the phase-in period. @@ -20,9 +20,7 @@ def altersgrenze( Does not check for eligibility for this pathway into retirement. """ - return altersgrenze_gestaffelt.values_to_look_up[ - geburtsjahr - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(geburtsjahr) @policy_function() diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index 4b614857a1..f300a8d597 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -9,7 +9,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, policy_function +from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( @@ -20,7 +20,7 @@ def altersgrenze_bis_1996( geburtsjahr: int, geburtsmonat: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Full retirement age for unemployed without Vertrauensschutz. @@ -28,9 +28,7 @@ def altersgrenze_bis_1996( """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(birth_month_since_ad) @policy_function( @@ -82,7 +80,7 @@ def altersgrenze_ab_2010( def altersgrenze_vorzeitig_ohne_vertrauensschutz_bis_1996_07( geburtsjahr: int, geburtsmonat: int, - altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Early retirement age of pension for unemployed. @@ -90,9 +88,7 @@ def altersgrenze_vorzeitig_ohne_vertrauensschutz_bis_1996_07( """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract - ] + return altersgrenze_vorzeitig_gestaffelt.look_up(birth_month_since_ad) @policy_function( @@ -145,7 +141,7 @@ def altersgrenze_vorzeitig_mit_vertrauensschutzprüfung_ab_07_2004( def altersgrenze_ohne_vertrauensschutz( geburtsjahr: int, geburtsmonat: int, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Full retirement age for unemployed without Vertrauensschutz. @@ -155,23 +151,19 @@ def altersgrenze_ohne_vertrauensschutz( """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_gestaffelt.base_to_subtract - ] + return altersgrenze_gestaffelt.look_up(birth_month_since_ad) @policy_function(start_date="1996-07-29", end_date="2009-12-31") def altersgrenze_mit_vertrauensschutz( geburtsjahr: int, geburtsmonat: int, - altersgrenze_gestaffelt_vertrauensschutz: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt_vertrauensschutz: ConsecutiveIntLookupTableParamValue, ) -> float: """Full retirement age for unemployed for individuals under Vertrauensschutz.""" birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_gestaffelt_vertrauensschutz.values_to_look_up[ - birth_month_since_ad - altersgrenze_gestaffelt_vertrauensschutz.base_to_subtract - ] + return altersgrenze_gestaffelt_vertrauensschutz.look_up(birth_month_since_ad) @policy_function( @@ -182,7 +174,7 @@ def altersgrenze_mit_vertrauensschutz( def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_12_1989_bis_09_1996( geburtsjahr: int, geburtsmonat: int, - altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Early retirement age of pension for unemployed without Vertrauensschutz. @@ -192,9 +184,7 @@ def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_12_1989_bis_09_1996( """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract - ] + return altersgrenze_vorzeitig_gestaffelt.look_up(birth_month_since_ad) @policy_function( @@ -205,7 +195,7 @@ def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_12_1989_bis_09_1996( def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_07_2004( geburtsjahr: int, geburtsmonat: int, - altersgrenze_vorzeitig_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_vorzeitig_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Early retirement age of pension for unemployed without Vertrauensschutz. @@ -215,9 +205,7 @@ def altersgrenze_vorzeitig_ohne_vertrauensschutz_ab_07_2004( """ birth_month_since_ad = geburtsjahr * 12 + (geburtsmonat - 1) - return altersgrenze_vorzeitig_gestaffelt.values_to_look_up[ - birth_month_since_ad - altersgrenze_vorzeitig_gestaffelt.base_to_subtract - ] + return altersgrenze_vorzeitig_gestaffelt.look_up(birth_month_since_ad) @policy_function(end_date="2007-04-29", leaf_name="grundsätzlich_anspruchsberechtigt") diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index b9e43245c7..61da6402ba 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -7,7 +7,7 @@ from ttsim.tt_dag_elements import policy_function if TYPE_CHECKING: - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue @policy_function(start_date="2001-01-01", end_date="2023-06-30", leaf_name="betrag_m") @@ -150,7 +150,7 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__jahr_renteneintritt: int, sozialversicherung__rente__monat_renteneintritt: int, - zurechnungszeitgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + zurechnungszeitgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Additional Entgeltpunkte accumulated through "Zurechnungszeit". @@ -164,9 +164,9 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( sozialversicherung__rente__jahr_renteneintritt * 12 + sozialversicherung__rente__monat_renteneintritt ) - altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.values_to_look_up[ - claiming_month_since_ad - zurechnungszeitgrenze_gestaffelt.base_to_subtract - ] + altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.look_up( + claiming_month_since_ad + ) return ( altersgrenze_zurechnungszeit - (sozialversicherung__rente__alter_bei_renteneintritt) @@ -202,7 +202,7 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__jahr_renteneintritt: int, sozialversicherung__rente__monat_renteneintritt: int, - zurechnungszeitgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + zurechnungszeitgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, ) -> float: """Additional Entgeltpunkte accumulated through "Zurechnungszeit". @@ -216,9 +216,9 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( sozialversicherung__rente__jahr_renteneintritt * 12 + sozialversicherung__rente__monat_renteneintritt ) - altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.values_to_look_up[ - claiming_month_since_ad - zurechnungszeitgrenze_gestaffelt.base_to_subtract - ] + altersgrenze_zurechnungszeit = zurechnungszeitgrenze_gestaffelt.look_up( + claiming_month_since_ad + ) return ( altersgrenze_zurechnungszeit - (sozialversicherung__rente__alter_bei_renteneintritt) @@ -274,7 +274,7 @@ def zugangsfaktor_ohne_gestaffelte_altersgrenze( def zugangsfaktor_mit_gestaffelter_altersgrenze( sozialversicherung__rente__alter_bei_renteneintritt: float, wartezeit_langjährig_versichert_erfüllt: bool, - altersgrenze_gestaffelt: ConsecutiveInt1dLookupTableParamValue, + altersgrenze_gestaffelt: ConsecutiveIntLookupTableParamValue, sozialversicherung__rente__jahr_renteneintritt: int, sozialversicherung__rente__monat_renteneintritt: int, altersgrenze_langjährig_versichert: float, @@ -304,9 +304,7 @@ def zugangsfaktor_mit_gestaffelter_altersgrenze( if wartezeit_langjährig_versichert_erfüllt: grenze_abschlagsfrei = altersgrenze_langjährig_versichert else: - grenze_abschlagsfrei = altersgrenze_gestaffelt.values_to_look_up[ - claiming_month_since_ad - altersgrenze_gestaffelt.base_to_subtract - ] + grenze_abschlagsfrei = altersgrenze_gestaffelt.look_up(claiming_month_since_ad) zugangsfaktor = ( 1 diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index f1d0f29d5d..6c717250ea 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -18,7 +18,7 @@ from types import ModuleType from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn - from ttsim.tt_dag_elements import ConsecutiveInt1dLookupTableParamValue, RawParam + from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, RawParam @agg_by_p_id_function(agg_type=AggType.SUM) @@ -115,12 +115,10 @@ def kindergeld_erstes_kind_ohne_staffelung_m( @param_function(end_date="2022-12-31", leaf_name="kindergeld_erstes_kind_m") def kindergeld_erstes_kind_gestaffelt_m( - kindergeld__satz_nach_anzahl_kinder: ConsecutiveInt1dLookupTableParamValue, + kindergeld__satz_nach_anzahl_kinder: ConsecutiveIntLookupTableParamValue, ) -> float: """Kindergeld for first child when Kindergeld depends on number of children.""" - return kindergeld__satz_nach_anzahl_kinder.values_to_look_up[ - 1 - kindergeld__satz_nach_anzahl_kinder.base_to_subtract - ] + return kindergeld__satz_nach_anzahl_kinder.look_up(1) @policy_function( diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index bb6b5be7f7..20da1ad036 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -6,10 +6,10 @@ from ttsim.tt_dag_elements import ( AggType, - ConsecutiveInt1dLookupTableParamValue, + ConsecutiveIntLookupTableParamValue, PiecewisePolynomialParamValue, agg_by_p_id_function, - get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, param_function, piecewise_polynomial, policy_function, @@ -32,16 +32,16 @@ def alleinerziehendenbonus( def min_einkommen_lookup_table( min_einkommen: dict[int, float], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Create a LookupTable for the min income thresholds.""" - return get_consecutive_int_1d_lookup_table_param_value(raw=min_einkommen, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=min_einkommen, xnp=xnp) def einkommen( einkommen_vor_freibetrag: float, einkommensfreibetrag: float, anzahl_personen: int, - min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + min_einkommen_lookup_table: ConsecutiveIntLookupTableParamValue, xnp: ModuleType, ) -> float: """Calculate final income relevant for calculation of housing benefit on household @@ -49,13 +49,12 @@ def einkommen( """ eink_nach_abzug_m_hh = einkommen_vor_freibetrag - einkommensfreibetrag - unteres_eink = min_einkommen_lookup_table.values_to_look_up[ + unteres_eink = min_einkommen_lookup_table.look_up( xnp.minimum( anzahl_personen, min_einkommen_lookup_table.values_to_look_up.shape[0], ) - - min_einkommen_lookup_table.base_to_subtract - ] + ) return xnp.maximum(eink_nach_abzug_m_hh, unteres_eink) @@ -65,7 +64,7 @@ def einkommen_m_wthh( anzahl_personen_wthh: int, freibetrag_m_wthh: float, einkommen_vor_freibetrag_m_wthh: float, - min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + min_einkommen_lookup_table: ConsecutiveIntLookupTableParamValue, xnp: ModuleType, ) -> float: """Income relevant for Wohngeld calculation. @@ -90,7 +89,7 @@ def einkommen_m_bg( arbeitslosengeld_2__anzahl_personen_bg: int, freibetrag_m_bg: float, einkommen_vor_freibetrag_m_bg: float, - min_einkommen_lookup_table: ConsecutiveInt1dLookupTableParamValue, + min_einkommen_lookup_table: ConsecutiveIntLookupTableParamValue, xnp: ModuleType, ) -> float: """Income relevant for Wohngeld calculation. @@ -116,7 +115,7 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( sozialversicherung__rente__beitrag__betrag_versicherter_y: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y: float, familie__kind: bool, - abzugsbeträge_steuern_sozialversicherung: ConsecutiveInt1dLookupTableParamValue, + abzugsbeträge_steuern_sozialversicherung: ConsecutiveIntLookupTableParamValue, ) -> float: """Calculate housing benefit subtractions on the individual level. @@ -132,11 +131,10 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( stufe = stufe + 1 if sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0: stufe = stufe + 1 - abzug = abzugsbeträge_steuern_sozialversicherung if familie__kind: out = 0.0 else: - out = abzug.values_to_look_up[stufe - abzug.base_to_subtract] + out = abzugsbeträge_steuern_sozialversicherung.look_up(stufe) return out diff --git a/src/_gettsim/wohngeld/einkommen.yaml b/src/_gettsim/wohngeld/einkommen.yaml index 3a653d5f23..769aac0fb5 100644 --- a/src/_gettsim/wohngeld/einkommen.yaml +++ b/src/_gettsim/wohngeld/einkommen.yaml @@ -127,7 +127,7 @@ abzugsbeträge_steuern_sozialversicherung: en: null unit: Share reference_period: null - type: consecutive_int_1d_lookup_table + type: consecutive_int_lookup_table 1984-01-01: 0: 0.06 1: 0.125 diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index f31f23d308..a7182d3922 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -6,10 +6,8 @@ from typing import TYPE_CHECKING from ttsim.tt_dag_elements import ( - ConsecutiveInt1dLookupTableParamValue, - ConsecutiveInt2dLookupTableParamValue, - get_consecutive_int_1d_lookup_table_param_value, - get_consecutive_int_2d_lookup_table_param_value, + ConsecutiveIntLookupTableParamValue, + get_consecutive_int_lookup_table_param_value, param_function, policy_function, ) @@ -17,15 +15,13 @@ if TYPE_CHECKING: from types import ModuleType - from jaxtyping import Array, Float, Int + from jaxtyping import Array, Int @dataclass(frozen=True) class LookupTableBaujahr: baujahre: Int[Array, " n_baujahr_categories"] - lookup_base_to_subtract_cols: Int[Array, " n_baujahr_categories"] - lookup_base_to_subtract_rows: Int[Array, " n_baujahr_categories"] - lookup_table: Float[Array, "n_baujahr_categories max_n_p_indizierung_n_mietstufen"] + lookup_table: ConsecutiveIntLookupTableParamValue @param_function( @@ -44,10 +40,8 @@ def max_miete_m_lookup_mit_baujahr( max_n_p_defined = max(tmp.keys()) assert all(isinstance(i, int) for i in tmp) baujahre = sorted(tmp[1].keys()) - values = [] - subtract_cols = [] - subtract_rows = [] - for baujahr in baujahre: + lookup_dict = {} + for i, baujahr in enumerate(baujahre): this_dict = {n_p: tmp[n_p][baujahr] for n_p in tmp} for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] this_dict[n_p] = { @@ -55,23 +49,13 @@ def max_miete_m_lookup_mit_baujahr( + (n_p - max_n_p_defined) * per_additional_person[baujahr][ms] # type: ignore[operator] for ms in this_dict[max_n_p_defined] } - lookup_table = get_consecutive_int_2d_lookup_table_param_value( - raw=this_dict, - xnp=xnp, - ) - values.append(lookup_table.values_to_look_up) - subtract_cols.append(lookup_table.base_to_subtract_cols) - subtract_rows.append(lookup_table.base_to_subtract_rows) - - full_lookup_table = xnp.stack(values, axis=0) - full_lookup_base_to_subtract_cols = xnp.asarray(subtract_cols) - full_lookup_base_to_subtract_rows = xnp.asarray(subtract_rows) + lookup_dict[i] = this_dict return LookupTableBaujahr( baujahre=xnp.asarray(baujahre), - lookup_table=full_lookup_table, - lookup_base_to_subtract_cols=full_lookup_base_to_subtract_cols, - lookup_base_to_subtract_rows=full_lookup_base_to_subtract_rows, + lookup_table=get_consecutive_int_lookup_table_param_value( + raw=lookup_dict, xnp=xnp + ), ) @@ -80,7 +64,7 @@ def max_miete_m_lookup_ohne_baujahr( raw_max_miete_m: dict[int | str, dict[int, float]], max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt2dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Maximum rent considered in Wohngeld calculation.""" expanded = raw_max_miete_m.copy() per_additional_person = expanded.pop("jede_weitere_person") @@ -92,7 +76,7 @@ def max_miete_m_lookup_ohne_baujahr( + (n_p - max_n_p_defined) * per_additional_person[ms] # type: ignore[operator] for ms in expanded[max_n_p_defined] } - return get_consecutive_int_2d_lookup_table_param_value(raw=expanded, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="1984-01-01") @@ -100,7 +84,7 @@ def min_miete_lookup( raw_min_miete_m: dict[int, float], max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Minimum rent considered in Wohngeld calculation.""" max_n_p_normal = max_anzahl_personen["normale_berechnung"] assert max(raw_min_miete_m.keys()) == max_n_p_normal, ( @@ -113,7 +97,7 @@ def min_miete_lookup( expanded = raw_min_miete_m.copy() for n_p in range(max_n_p_normal + 1, max_anzahl_personen["indizierung"] + 1): expanded[n_p] = raw_min_miete_m[max_n_p_normal] - return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2021-01-01") @@ -121,7 +105,7 @@ def heizkostenentlastung_m_lookup( raw_heizkostenentlastung_m: dict[int | str, float], max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Heizkostenentlastung as a lookup table.""" expanded = raw_heizkostenentlastung_m.copy() per_additional_person = expanded.pop("jede_weitere_person") @@ -131,7 +115,7 @@ def heizkostenentlastung_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2023-01-01") @@ -139,7 +123,7 @@ def dauerhafte_heizkostenkomponente_m_lookup( raw_dauerhafte_heizkostenkomponente_m: dict[int | str, float], max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Dauerhafte Heizkostenenkomponente as a lookup table.""" expanded = raw_dauerhafte_heizkostenkomponente_m.copy() per_additional_person = expanded.pop("jede_weitere_person") @@ -149,7 +133,7 @@ def dauerhafte_heizkostenkomponente_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=expanded, xnp=xnp) @param_function(start_date="2023-01-01") @@ -157,7 +141,7 @@ def klimakomponente_m_lookup( raw_klimakomponente_m: dict[int | str, float], max_anzahl_personen: dict[str, int], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Klimakomponente as a lookup table.""" expanded = raw_klimakomponente_m.copy() per_additional_person = expanded.pop("jede_weitere_person") @@ -167,7 +151,7 @@ def klimakomponente_m_lookup( expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] ) - return get_consecutive_int_1d_lookup_table_param_value(raw=expanded, xnp=xnp) + return get_consecutive_int_lookup_table_param_value(raw=expanded, xnp=xnp) @policy_function() @@ -202,12 +186,10 @@ def miete_m_bg( @policy_function() def min_miete_m_hh( anzahl_personen_hh: int, - min_miete_lookup: ConsecutiveInt1dLookupTableParamValue, + min_miete_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Minimum rent considered in Wohngeld calculation.""" - return min_miete_lookup.values_to_look_up[ - anzahl_personen_hh - min_miete_lookup.base_to_subtract - ] + return min_miete_lookup.look_up(anzahl_personen_hh) @policy_function( @@ -225,16 +207,14 @@ def miete_m_hh_mit_baujahr( xnp: ModuleType, ) -> float: """Rent considered in housing benefit calculation on household level until 2008.""" - selected_bin_index = xnp.searchsorted( + baujahr_index = xnp.searchsorted( max_miete_m_lookup.baujahre, wohnen__baujahr_immobilie_hh, side="left", ) - max_miete_m = max_miete_m_lookup.lookup_table[ - selected_bin_index, - anzahl_personen_hh - max_miete_m_lookup.lookup_base_to_subtract_rows[selected_bin_index], - mietstufe - max_miete_m_lookup.lookup_base_to_subtract_cols[selected_bin_index], - ] # fmt: skip + max_miete_m = max_miete_m_lookup.lookup_table.look_up( + baujahr_index, anzahl_personen_hh, mietstufe + ) return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @@ -248,13 +228,10 @@ def miete_m_hh_ohne_baujahr_ohne_heizkostenentlastung( anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, + max_miete_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.values_to_look_up[ - anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, - mietstufe - max_miete_m_lookup.base_to_subtract_cols, - ] + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @@ -269,18 +246,13 @@ def miete_m_hh_mit_heizkostenentlastung( anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, - heizkostenentlastung_m_lookup: ConsecutiveInt1dLookupTableParamValue, + max_miete_m_lookup: ConsecutiveIntLookupTableParamValue, + heizkostenentlastung_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.values_to_look_up[ - anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, - mietstufe - max_miete_m_lookup.base_to_subtract_cols, - ] + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) - heating_allowance_m = heizkostenentlastung_m_lookup.values_to_look_up[ - anzahl_personen_hh - heizkostenentlastung_m_lookup.base_to_subtract - ] + heating_allowance_m = heizkostenentlastung_m_lookup.look_up(anzahl_personen_hh) return ( max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @@ -297,29 +269,19 @@ def miete_m_hh_mit_heizkostenentlastung_dauerhafte_heizkostenkomponente_klimakom anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, - max_miete_m_lookup: ConsecutiveInt2dLookupTableParamValue, - heizkostenentlastung_m_lookup: ConsecutiveInt1dLookupTableParamValue, - dauerhafte_heizkostenkomponente_m_lookup: ConsecutiveInt1dLookupTableParamValue, - klimakomponente_m_lookup: ConsecutiveInt1dLookupTableParamValue, + max_miete_m_lookup: ConsecutiveIntLookupTableParamValue, + heizkostenentlastung_m_lookup: ConsecutiveIntLookupTableParamValue, + dauerhafte_heizkostenkomponente_m_lookup: ConsecutiveIntLookupTableParamValue, + klimakomponente_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.values_to_look_up[ - anzahl_personen_hh - max_miete_m_lookup.base_to_subtract_rows, - mietstufe - max_miete_m_lookup.base_to_subtract_cols, - ] - - heizkostenentlastung = heizkostenentlastung_m_lookup.values_to_look_up[ - anzahl_personen_hh - heizkostenentlastung_m_lookup.base_to_subtract - ] - dauerhafte_heizkostenkomponente = ( - dauerhafte_heizkostenkomponente_m_lookup.values_to_look_up[ - anzahl_personen_hh - - dauerhafte_heizkostenkomponente_m_lookup.base_to_subtract - ] + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) + + heizkostenentlastung = heizkostenentlastung_m_lookup.look_up(anzahl_personen_hh) + dauerhafte_heizkostenkomponente = dauerhafte_heizkostenkomponente_m_lookup.look_up( + anzahl_personen_hh ) - klimakomponente = klimakomponente_m_lookup.values_to_look_up[ - anzahl_personen_hh - klimakomponente_m_lookup.base_to_subtract - ] + klimakomponente = klimakomponente_m_lookup.look_up(anzahl_personen_hh) return ( max( min(wohnen__bruttokaltmiete_m_hh, max_miete_m + klimakomponente), diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index f99e7c19f5..e7417e29db 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -25,7 +25,7 @@ AggType, RoundingSpec, agg_by_group_function, - get_consecutive_int_1d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, param_function, policy_function, ) @@ -33,16 +33,16 @@ if TYPE_CHECKING: from types import ModuleType - from _gettsim.param_types import ConsecutiveInt1dLookupTableParamValue + from _gettsim.param_types import ConsecutiveIntLookupTableParamValue @dataclass(frozen=True) class BasisformelParamValues: skalierungsfaktor: float - a: ConsecutiveInt1dLookupTableParamValue - b: ConsecutiveInt1dLookupTableParamValue - c: ConsecutiveInt1dLookupTableParamValue - zusatzbetrag_nach_haushaltsgröße: ConsecutiveInt1dLookupTableParamValue + a: ConsecutiveIntLookupTableParamValue + b: ConsecutiveIntLookupTableParamValue + c: ConsecutiveIntLookupTableParamValue + zusatzbetrag_nach_haushaltsgröße: ConsecutiveIntLookupTableParamValue @agg_by_group_function(agg_type=AggType.COUNT) @@ -93,13 +93,11 @@ def basisformel( store the code for Wohngeld calculation. """ - a = params.a.values_to_look_up[anzahl_personen - params.a.base_to_subtract] - b = params.b.values_to_look_up[anzahl_personen - params.b.base_to_subtract] - c = params.c.values_to_look_up[anzahl_personen - params.c.base_to_subtract] - zusatzbetrag_nach_haushaltsgröße = ( - params.zusatzbetrag_nach_haushaltsgröße.values_to_look_up[ - anzahl_personen - params.zusatzbetrag_nach_haushaltsgröße.base_to_subtract - ] + a = params.a.look_up(anzahl_personen) + b = params.b.look_up(anzahl_personen) + c = params.c.look_up(anzahl_personen) + zusatzbetrag_nach_haushaltsgröße = params.zusatzbetrag_nach_haushaltsgröße.look_up( + anzahl_personen ) out = xnp.maximum( 0.0, @@ -211,10 +209,10 @@ def basisformel_params( return BasisformelParamValues( skalierungsfaktor=skalierungsfaktor, - a=get_consecutive_int_1d_lookup_table_param_value(raw=a, xnp=xnp), - b=get_consecutive_int_1d_lookup_table_param_value(raw=b, xnp=xnp), - c=get_consecutive_int_1d_lookup_table_param_value(raw=c, xnp=xnp), - zusatzbetrag_nach_haushaltsgröße=get_consecutive_int_1d_lookup_table_param_value( + a=get_consecutive_int_lookup_table_param_value(raw=a, xnp=xnp), + b=get_consecutive_int_lookup_table_param_value(raw=b, xnp=xnp), + c=get_consecutive_int_lookup_table_param_value(raw=c, xnp=xnp), + zusatzbetrag_nach_haushaltsgröße=get_consecutive_int_lookup_table_param_value( raw=zusatzbetrag_nach_haushaltsgröße, xnp=xnp, ), diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index 4a98639f07..f1b37300bd 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -13,14 +13,13 @@ upsert_tree, ) from ttsim.tt_dag_elements import ( - ConsecutiveInt1dLookupTableParam, + ConsecutiveIntLookupTableParam, DictParam, ParamObject, PiecewisePolynomialParam, RawParam, ScalarParam, - get_consecutive_int_1d_lookup_table_param_value, - get_consecutive_int_2d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, get_month_based_phase_inout_of_age_thresholds_param_value, get_year_based_phase_inout_of_age_thresholds_param_value, ) @@ -161,18 +160,12 @@ def _get_one_param( # noqa: PLR0911 xnp=xnp, ) return PiecewisePolynomialParam(**cleaned_spec) - if spec["type"] == "consecutive_int_1d_lookup_table": - cleaned_spec["value"] = get_consecutive_int_1d_lookup_table_param_value( + if spec["type"] == "consecutive_int_lookup_table": + cleaned_spec["value"] = get_consecutive_int_lookup_table_param_value( raw=cleaned_spec["value"], xnp=xnp, ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) - if spec["type"] == "consecutive_int_2d_lookup_table": - cleaned_spec["value"] = get_consecutive_int_2d_lookup_table_param_value( - raw=cleaned_spec["value"], - xnp=xnp, - ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + return ConsecutiveIntLookupTableParam(**cleaned_spec) if spec["type"] == "month_based_phase_inout_of_age_thresholds": cleaned_spec["value"] = ( get_month_based_phase_inout_of_age_thresholds_param_value( @@ -180,7 +173,7 @@ def _get_one_param( # noqa: PLR0911 xnp=xnp, ) ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + return ConsecutiveIntLookupTableParam(**cleaned_spec) if spec["type"] == "year_based_phase_inout_of_age_thresholds": cleaned_spec["value"] = ( get_year_based_phase_inout_of_age_thresholds_param_value( @@ -188,7 +181,7 @@ def _get_one_param( # noqa: PLR0911 xnp=xnp, ) ) - return ConsecutiveInt1dLookupTableParam(**cleaned_spec) + return ConsecutiveIntLookupTableParam(**cleaned_spec) if spec["type"] == "require_converter": return RawParam(**cleaned_spec) raise ValueError(f"Unknown parameter type: {spec['type']} for {leaf_name}") diff --git a/src/ttsim/params-schema.json b/src/ttsim/params-schema.json index 0e5153b8f4..ef1d680e78 100644 --- a/src/ttsim/params-schema.json +++ b/src/ttsim/params-schema.json @@ -47,8 +47,7 @@ "piecewise_linear", "piecewise_quadratic", "piecewise_cubic", - "consecutive_int_1d_lookup_table", - "consecutive_int_2d_lookup_table", + "consecutive_int_lookup_table", "month_based_phase_inout_of_age_thresholds", "year_based_phase_inout_of_age_thresholds", "require_converter" diff --git a/src/ttsim/tt_dag_elements/__init__.py b/src/ttsim/tt_dag_elements/__init__.py index a69a258983..e8a1a3b53b 100644 --- a/src/ttsim/tt_dag_elements/__init__.py +++ b/src/ttsim/tt_dag_elements/__init__.py @@ -18,18 +18,15 @@ policy_input, ) from ttsim.tt_dag_elements.param_objects import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt1dLookupTableParamValue, - ConsecutiveInt2dLookupTableParam, - ConsecutiveInt2dLookupTableParamValue, + ConsecutiveIntLookupTableParam, + ConsecutiveIntLookupTableParamValue, DictParam, ParamObject, PiecewisePolynomialParam, PiecewisePolynomialParamValue, RawParam, ScalarParam, - get_consecutive_int_1d_lookup_table_param_value, - get_consecutive_int_2d_lookup_table_param_value, + get_consecutive_int_lookup_table_param_value, get_month_based_phase_inout_of_age_thresholds_param_value, get_year_based_phase_inout_of_age_thresholds_param_value, ) @@ -46,10 +43,8 @@ "AggType", "ColumnFunction", "ColumnObject", - "ConsecutiveInt1dLookupTableParam", - "ConsecutiveInt1dLookupTableParamValue", - "ConsecutiveInt2dLookupTableParam", - "ConsecutiveInt2dLookupTableParamValue", + "ConsecutiveIntLookupTableParam", + "ConsecutiveIntLookupTableParamValue", "DictParam", "FKType", "GroupCreationFunction", @@ -65,8 +60,7 @@ "TimeConversionFunction", "agg_by_group_function", "agg_by_p_id_function", - "get_consecutive_int_1d_lookup_table_param_value", - "get_consecutive_int_2d_lookup_table_param_value", + "get_consecutive_int_lookup_table_param_value", "get_month_based_phase_inout_of_age_thresholds_param_value", "get_piecewise_parameters", "get_year_based_phase_inout_of_age_thresholds_param_value", diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py index 89bcd88cdf..65bf10f24b 100644 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -1,11 +1,8 @@ from __future__ import annotations -import itertools from dataclasses import dataclass, field from typing import TYPE_CHECKING, Any, Literal -import numpy - PLACEHOLDER_VALUE = object() PLACEHOLDER_FIELD = field(default_factory=lambda: PLACEHOLDER_VALUE) @@ -13,7 +10,9 @@ import datetime from types import ModuleType - from jaxtyping import Array, Float + from jaxtyping import Array, Bool, Float, Int + + from ttsim.tt_dag_elements.typing import NestedLookupDict @dataclass(frozen=True) @@ -97,29 +96,56 @@ class PiecewisePolynomialParam(ParamObject): @dataclass(frozen=True) -class ConsecutiveInt1dLookupTableParam(ParamObject): +class ConsecutiveIntLookupTableParam(ParamObject): """A parameter with its contents read and converted from a YAML file. - Its value is a ConsecutiveInt1dLookupTableParamValue object, i.e., it contains the + Its value is a ConsecutiveIntLookupTableParamValue object, i.e., it contains the parameters for calling `lookup_table`. """ - value: ConsecutiveInt1dLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] + value: ConsecutiveIntLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] note: str | None = None reference: str | None = None -@dataclass(frozen=True) -class ConsecutiveInt2dLookupTableParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. +class ConsecutiveIntLookupTableParamValue: + """The `value` for ConsecutiveIntLookupTable.""" - Its value is a ConsecutiveInt2dLookupTableParamValue object, i.e., it contains the - parameters for calling `lookup_table`. - """ + bases_to_subtract: Int[Array, "n_rows n_cols"] + lookup_multipliers: Int[Array, "n_rows n_cols"] + values_to_look_up: ( + Float[Array, "n_rows n_cols"] + | Int[Array, "n_rows n_cols"] + | Bool[Array, "n_rows n_cols"] + ) + xnp: ModuleType + + def __init__( + self, + xnp: ModuleType, + values_to_look_up: Float[Array, "n_rows n_cols"] + | Int[Array, "n_rows n_cols"] + | Bool[Array, "n_rows n_cols"], + bases_to_subtract: Int[Array, "n_rows n_cols"], + ) -> None: + self.xnp = xnp + self.values_to_look_up = values_to_look_up.flatten() + self.bases_to_subtract = xnp.expand_dims(bases_to_subtract, axis=1) + self.lookup_multipliers = xnp.concatenate( + [ + (xnp.cumprod(xnp.asarray(values_to_look_up.shape)[::-1])[::-1])[1:], + xnp.asarray([1]), + ] + ) - value: ConsecutiveInt2dLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None + def look_up( + self: ConsecutiveIntLookupTableParamValue, *args: int + ) -> float | int | bool: + index = self.xnp.asarray(args) + corrected_index = self.xnp.dot( + (index - self.bases_to_subtract).T, self.lookup_multipliers + ) + return self.values_to_look_up[corrected_index] @dataclass(frozen=True) @@ -155,65 +181,35 @@ class PiecewisePolynomialParamValue: rates: Float[Array, " n_segments"] -@dataclass(frozen=True) -class ConsecutiveInt1dLookupTableParamValue: - """The parameters expected by lookup_table""" - - base_to_subtract: int - values_to_look_up: Float[Array, " n_values_to_look_up"] - - -@dataclass(frozen=True) -class ConsecutiveInt2dLookupTableParamValue: - """The parameters expected by lookup_table""" - - base_to_subtract_rows: int - base_to_subtract_cols: int - values_to_look_up: Float[Array, "n_rows n_cols"] - - -def get_consecutive_int_1d_lookup_table_param_value( - raw: dict[int, float | int | bool], +def get_consecutive_int_lookup_table_param_value( + raw: NestedLookupDict, xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: - """Get the parameters for a 1-dimensional lookup table.""" - lookup_keys = numpy.asarray(sorted(raw)) - assert (lookup_keys - min(lookup_keys) == numpy.arange(len(lookup_keys))).all(), ( - "Dictionary keys must be consecutive integers." - ) - - return ConsecutiveInt1dLookupTableParamValue( - base_to_subtract=min(lookup_keys).item(), - values_to_look_up=xnp.asarray([raw[k] for k in lookup_keys]), - ) - +) -> ConsecutiveIntLookupTableParamValue: + """Get the parameters for a N-dimensional lookup table.""" + bases_to_substract = {} + + # Function is recursive to step through all levels of dict + def process_level( + i: int, level_i_dict: NestedLookupDict + ) -> Float[Array, "n_rows n_cols"]: + sorted_keys = sorted(level_i_dict.keys()) + bases_to_substract[i] = min(xnp.asarray(sorted_keys)) + if isinstance(level_i_dict[sorted_keys[0]], dict): + return xnp.concatenate( + [ + xnp.expand_dims(process_level(i + 1, level_i_dict[key]), axis=0) + for key in level_i_dict + ] + ) + return xnp.asarray([level_i_dict[k] for k in sorted_keys]) -def get_consecutive_int_2d_lookup_table_param_value( - raw: dict[int, dict[int, float | int | bool]], - xnp: ModuleType, -) -> ConsecutiveInt2dLookupTableParamValue: - """Get the parameters for a 2-dimensional lookup table.""" - lookup_keys_rows = xnp.asarray(sorted(raw.keys())) - lookup_keys_cols = xnp.asarray(sorted(raw[lookup_keys_rows[0].item()].keys())) - for col_value in raw.values(): - lookup_keys_this_col = xnp.asarray(sorted(col_value.keys())) - assert (lookup_keys_cols == lookup_keys_this_col).all(), ( - "Column keys must be the same in each column, got:" - f"{lookup_keys_cols} and {lookup_keys_this_col}" - ) - for lookup_keys in lookup_keys_rows, lookup_keys_cols: - assert (lookup_keys - min(lookup_keys) == xnp.arange(len(lookup_keys))).all(), ( - f"Dictionary keys must be consecutive integers, got: {lookup_keys}" - ) - return ConsecutiveInt2dLookupTableParamValue( - base_to_subtract_rows=min(lookup_keys_rows).item(), - base_to_subtract_cols=min(lookup_keys_cols).item(), - values_to_look_up=xnp.array( - [ - raw[row.item()][col.item()] - for row, col in itertools.product(lookup_keys_rows, lookup_keys_cols) - ], - ).reshape(len(lookup_keys_rows), len(lookup_keys_cols)), + values = process_level(0, raw) + return ConsecutiveIntLookupTableParamValue( + xnp=xnp, + values_to_look_up=values, + bases_to_subtract=xnp.asarray( + [bases_to_substract[key] for key in sorted(bases_to_substract.keys())] + ), ) @@ -224,7 +220,7 @@ def _year_fraction(r: dict[Literal["years", "months"], int]) -> float: def get_month_based_phase_inout_of_age_thresholds_param_value( raw: dict[str | int, Any], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Get the parameters for month-based phase-in/phase-out of age thresholds. Fills up months for which no parameters are given with the last given value. @@ -280,7 +276,7 @@ def _fill_phase_inout( last_m_since_ad_to_consider + 1, ) } - return get_consecutive_int_1d_lookup_table_param_value( + return get_consecutive_int_lookup_table_param_value( raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, xnp=xnp, ) @@ -289,7 +285,7 @@ def _fill_phase_inout( def get_year_based_phase_inout_of_age_thresholds_param_value( raw: dict[str | int, Any], xnp: ModuleType, -) -> ConsecutiveInt1dLookupTableParamValue: +) -> ConsecutiveIntLookupTableParamValue: """Get the parameters for year-based phase-in/phase-out of age thresholds. Requires all years to be given. @@ -313,7 +309,7 @@ def get_year_based_phase_inout_of_age_thresholds_param_value( b_y: _year_fraction(raw[last_year_phase_inout]) for b_y in range(last_year_phase_inout + 1, last_year_to_consider + 1) } - return get_consecutive_int_1d_lookup_table_param_value( + return get_consecutive_int_lookup_table_param_value( raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, xnp=xnp, ) diff --git a/src/ttsim/tt_dag_elements/typing.py b/src/ttsim/tt_dag_elements/typing.py index 2a2688ec3e..66486f5ad6 100644 --- a/src/ttsim/tt_dag_elements/typing.py +++ b/src/ttsim/tt_dag_elements/typing.py @@ -1,10 +1,11 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Literal, NewType +from typing import TYPE_CHECKING, Any, Literal, NewType, TypeAlias if TYPE_CHECKING: import datetime + NestedLookupDict: TypeAlias = dict[int, float | int | bool | "NestedLookupDict"] OrigParamSpec = ( # Header dict[str, str | None | dict[Literal["de", "en"], str | None]] diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index bc386ed8c2..4451f0752d 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -29,8 +29,8 @@ targets_are_not_in_specialized_environment_or_data, ) from ttsim.tt_dag_elements import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt1dLookupTableParamValue, + ConsecutiveIntLookupTableParam, + ConsecutiveIntLookupTableParamValue, DictParam, PiecewisePolynomialParam, PiecewisePolynomialParamValue, @@ -63,10 +63,11 @@ **_GENERIC_PARAM_HEADER, } -_SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM = ConsecutiveInt1dLookupTableParam( - leaf_name="some_consecutive_int_1d_lookup_table_param", - value=ConsecutiveInt1dLookupTableParamValue( - base_to_subtract=1, +_SOME_CONSECUTIVE_INT_LOOKUP_TABLE_PARAM = ConsecutiveIntLookupTableParam( + leaf_name="some_consecutive_int_nd_lookup_table_param", + value=ConsecutiveIntLookupTableParamValue( + bases_to_subtract=numpy.array([1]), + xnp=numpy, values_to_look_up=numpy.array([1, 2, 3]), ), **_GENERIC_PARAM_SPEC, @@ -746,11 +747,11 @@ def test_fail_if_input_df_mapper_has_incorrect_format( ), ( { - "some_consecutive_int_1d_lookup_table_param": ( - _SOME_CONSECUTIVE_INT_1D_LOOKUP_TABLE_PARAM + "some_consecutive_int_lookup_table_param": ( + _SOME_CONSECUTIVE_INT_LOOKUP_TABLE_PARAM ), }, - {"some_consecutive_int_1d_lookup_table_param": "res1"}, + {"some_consecutive_int_lookup_table_param": "res1"}, "The data contains objects that cannot be cast to a pandas.DataFrame", ), ( diff --git a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py index d0734f5288..fcb4475fc6 100644 --- a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py +++ b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py @@ -9,8 +9,7 @@ load_module, ) from ttsim.tt_dag_elements.param_objects import ( - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt2dLookupTableParam, + ConsecutiveIntLookupTableParam, DictParam, PiecewisePolynomialParam, RawParam, @@ -41,8 +40,7 @@ def test_dont_load_init_py(): ScalarParam, DictParam, PiecewisePolynomialParam, - ConsecutiveInt1dLookupTableParam, - ConsecutiveInt2dLookupTableParam, + ConsecutiveIntLookupTableParam, RawParam, ], ) From 02168becb81732d8bda1540bc597ce8c05d780a7 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 8 Jul 2025 10:24:10 +0100 Subject: [PATCH 058/109] Use individual-specific Zusatzbeitrag (#1000) ### What problem do you want to solve? - Closes #929 - Improve some error messages. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .github/workflows/main.yaml | 6 +- pixi.lock | 2667 +++++++++-------- pyproject.toml | 55 +- .../kranken/beitrag/beitrag.py | 6 +- .../kranken/beitrag/beitragssatz.py | 193 +- src/_gettsim/sozialversicherung/midijob.py | 59 +- .../2019-01-01/midijob_faktor.yaml" | 17 + .../2020-01-01/midijob_faktor.yaml" | 17 + .../2021-01-01/midijob_faktor.yaml" | 17 + .../2022-01-01/midijob_faktor.yaml" | 17 + .../2022-10-01/midijobfaktor.yaml" | 17 + .../2023-07-01/midijob_faktor.yaml" | 17 + .../2024-01-01/einkommen_in_gleitzone.yaml" | 129 + .../2024-01-01/midijob_faktor.yaml" | 17 + .../skip_einkommen_in_gleitzone.yaml" | 109 - .../2025-01-01/midijob_faktor.yaml" | 17 + .../2022-01-01/minijobgrenze.yaml" | 20 + .../2022-01-01/skip_minijobgrenze.yaml" | 16 - src/ttsim/interface_dag.py | 16 +- src/ttsim/interface_dag_elements/__init__.py | 28 +- .../specialized_environment.py | 14 +- .../interface_dag_elements/test_failures.py | 11 +- 22 files changed, 1888 insertions(+), 1577 deletions(-) create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2021-01-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/midijobfaktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/midijob_faktor.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/midijob_faktor.yaml" create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/minijobgrenze.yaml" delete mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index fa4d7f51cd..7d401dc1d7 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -26,7 +26,7 @@ jobs: - py311 - py312 - py313 - - py313-jax + - py312-jax exclude: - os: macos-latest environment: py311, py312 @@ -34,7 +34,7 @@ jobs: environment: py311, py312 steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.8 + - uses: prefix-dev/setup-pixi@v0.8.10 with: pixi-version: v0.48.2 cache: true @@ -57,7 +57,7 @@ jobs: run: pixi run -e ${{ matrix.environment }} tests shell: bash -el {0} - name: Run tests with JAX backend - if: matrix.environment == 'py313-jax' + if: matrix.environment == 'py312-jax' run: pixi run -e ${{ matrix.environment }} tests-jax shell: bash -el {0} - name: Upload coverage reports diff --git a/pixi.lock b/pixi.lock index a732c42f87..d5232ef7a9 100644 --- a/pixi.lock +++ b/pixi.lock @@ -100,7 +100,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -156,12 +156,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -180,13 +180,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -218,7 +218,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -269,8 +268,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -368,7 +367,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -414,12 +413,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -437,15 +436,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -477,7 +476,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -511,8 +509,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -610,7 +608,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -656,12 +654,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -679,15 +677,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -719,7 +717,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -753,8 +750,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -848,7 +845,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -892,12 +889,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -914,13 +911,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -953,7 +950,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -1002,8 +998,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -1112,7 +1108,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1168,12 +1164,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -1192,13 +1188,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1230,7 +1226,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -1283,8 +1278,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl @@ -1385,7 +1380,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1431,12 +1426,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -1454,15 +1449,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1494,7 +1489,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -1530,8 +1524,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl @@ -1632,7 +1626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1678,12 +1672,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -1701,15 +1695,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1741,7 +1735,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1777,8 +1770,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl @@ -1875,7 +1868,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1919,12 +1912,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -1941,13 +1934,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1980,7 +1973,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -2031,8 +2023,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl @@ -2144,7 +2136,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2200,12 +2192,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -2224,13 +2216,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2262,7 +2254,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -2313,8 +2304,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2412,7 +2403,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2458,12 +2449,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -2481,15 +2472,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2521,7 +2512,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -2555,8 +2545,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2654,7 +2644,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2700,12 +2690,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -2723,15 +2713,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2763,7 +2753,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -2797,8 +2786,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2892,7 +2881,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2936,12 +2925,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -2958,13 +2947,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2997,7 +2986,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -3046,8 +3034,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -3156,7 +3144,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3212,12 +3200,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -3236,13 +3224,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3274,7 +3262,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -3325,8 +3312,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -3424,7 +3411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3470,12 +3457,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -3493,15 +3480,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3533,7 +3520,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -3567,8 +3553,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -3666,7 +3652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3712,12 +3698,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -3735,15 +3721,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3775,7 +3761,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -3809,8 +3794,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -3904,7 +3889,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3948,12 +3933,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -3970,13 +3955,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -4009,7 +3994,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -4058,8 +4042,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -4068,7 +4052,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - pypi: ./ - py313: + py312-cuda: channels: - url: https://conda.anaconda.org/conda-forge/ indexes: @@ -4091,10 +4075,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -4105,7 +4092,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -4128,6 +4139,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda @@ -4135,6 +4148,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda @@ -4151,10 +4166,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -4172,13 +4189,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda @@ -4186,23 +4217,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda @@ -4214,23 +4252,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda @@ -4253,7 +4294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -4263,13 +4304,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -4285,6 +4328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -4293,15 +4337,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4334,7 +4378,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -4344,41 +4388,52 @@ environments: - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - osx-64: + py312-jax: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -4388,43 +4443,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -4438,98 +4495,113 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda @@ -4544,83 +4616,101 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - osx-arm64: + osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -4630,28 +4720,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 @@ -4659,14 +4749,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -4680,97 +4772,105 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -4788,17 +4888,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -4807,60 +4907,63 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -4870,47 +4973,51 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -4918,94 +5025,106 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda @@ -5020,136 +5139,81 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - py313-cuda: - channels: - - url: https://conda.anaconda.org/conda-forge/ - indexes: - - https://pypi.org/simple - packages: - linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -5159,55 +5223,47 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -5215,131 +5271,94 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda @@ -5354,67 +5373,70 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - py313-jax: + py313: channels: - url: https://conda.anaconda.org/conda-forge/ indexes: @@ -5441,7 +5463,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -5502,8 +5523,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -5525,7 +5544,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda @@ -5542,7 +5560,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda @@ -5550,8 +5567,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda @@ -5567,7 +5582,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -5580,7 +5594,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda @@ -5608,7 +5621,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -5618,7 +5631,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda @@ -5626,7 +5638,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -5719,7 +5730,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -5779,8 +5789,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -5800,7 +5808,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda @@ -5814,7 +5821,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda @@ -5823,8 +5829,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda @@ -5836,7 +5840,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -5849,7 +5852,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda @@ -5878,7 +5880,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -5888,7 +5890,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda @@ -5896,7 +5897,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -5972,7 +5972,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -6032,8 +6031,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -6053,7 +6050,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda @@ -6067,7 +6063,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda @@ -6076,8 +6071,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda @@ -6089,7 +6082,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -6102,7 +6094,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda @@ -6131,7 +6122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6141,7 +6132,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda @@ -6149,7 +6139,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -6366,7 +6355,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6443,21 +6432,16 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -6922,27 +6906,27 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 146613 timestamp: 1744783307123 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_5.conda - sha256: 27ae158d415ff2942214b32ac7952e642f0f4c2a45ab683691e2a9a9159f868c - md5: 18852d82df8e5737e320a8731ace51b9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda + sha256: 6c9b85a6ece53c809d5878aa2746c980fe8411e4d6dc499e60f417aea4790464 + md5: 7a1b5c3fbc0419961eaed361eedc90d4 depends: - - ld_impl_linux-64 2.43 h712a8e2_5 + - ld_impl_linux-64 2.44 h1423503_0 - sysroot_linux-64 license: GPL-3.0-only license_family: GPL purls: [] - size: 6376971 - timestamp: 1749852878015 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_5.conda - sha256: fccbb1974d5557cd5bd4dfccc13c0d15ca198c6a45c2124341dea8c952538512 - md5: 327ef163ac88b57833c1c1a20a9e7e0d + size: 3577149 + timestamp: 1751601722583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda + sha256: cedff4ae20d7e7c6a9b5ea050b68b09210e761594af21ae6bbd596abb73215be + md5: 9f88de9963795dcfab936e092eac3424 depends: - - binutils_impl_linux-64 2.43 h4bf12b8_5 + - binutils_impl_linux-64 2.44 h4bf12b8_0 license: GPL-3.0-only license_family: GPL purls: [] - size: 36038 - timestamp: 1749852914153 + size: 35967 + timestamp: 1751601742970 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd md5: f0b4c8e370446ef89797608d60a564b3 @@ -7691,6 +7675,21 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 381728 timestamp: 1749833700835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + sha256: 69b0f5fe8f7f0f8ee3afb3d921e59ebd572accf059f949066edb7433c5e23c44 + md5: 5efd7abeadb3e88a6a219066682942de + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 380574 + timestamp: 1751548788766 - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b md5: a232a2c290d493aec5c321d42e8bb5f3 @@ -7733,6 +7732,20 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 379153 timestamp: 1749833527306 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + sha256: 46ff39735c0a4f4d985da67bdf7590eb3dd694180acd45e50b396594c7ec05b8 + md5: 855af2d2eb136ec60e572d8403775500 + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 379708 + timestamp: 1751548928911 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 md5: 3311b8464e609c253df8ed73b030a91b @@ -7778,6 +7791,21 @@ packages: - pkg:pypi/coverage?source=compressed-mapping size: 380492 timestamp: 1749833499891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + sha256: 8c5481c4c55075daa925d1ae46f7e929ac7bcfef4244baf7147613babb1c7822 + md5: e144bd6bff226c1d9f457fc19a44f831 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 380474 + timestamp: 1751549023528 - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 md5: 11cfa5d9997512db18ba2eb46edcce37 @@ -7826,6 +7854,22 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 405028 timestamp: 1749833588845 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + sha256: ea883df3693de7df35ddfaa8b241aa31b304cf353e0ae269c1512d7f0e680d8b + md5: ca4e891fc844d646fe0b5ebdb6d131fc + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 405164 + timestamp: 1751549097131 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda noarch: generic sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 @@ -8777,17 +8821,17 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev143+g3ea7bb7e - sha256: c5355249b6f857e84730bb8cd55fee3915cebceafec924ab7ccbb7a24b770f05 + version: 0.7.1.dev149+g1bca1def.d20250707 + sha256: 6e4b1d747a09c493b5c1daf3772ddf89a981c1303a9b28738f4f8c14a576aacc requires_dist: - ipywidgets - - networkx + - networkx>=3.5,<4 - numpy - numpy-groupies - openpyxl - - optree + - optree>=0.16.0,<0.17 - pandas - - plotly>=6.2 + - plotly>=6.2.0,<7 - pygments - pygraphviz - pytest @@ -9624,11 +9668,61 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 620691 - timestamp: 1745672166398 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 - md5: 73e4ba4c8247f744be670f4da4f132e2 + size: 620691 + timestamp: 1745672166398 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 + md5: 73e4ba4c8247f744be670f4da4f132e2 + depends: + - __win + - colorama + - decorator + - exceptiongroup + - ipython_pygments_lexers + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.11 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 621095 + timestamp: 1748711232331 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd + md5: 270dbfb30fe759b39ce0c9fdbcd7be10 + depends: + - __unix + - pexpect >4.3 + - decorator + - exceptiongroup + - ipython_pygments_lexers + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.11 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + size: 621859 + timestamp: 1748713870748 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda + sha256: 8fb441c9f4b50e38b6059e8984e49208a4e2a4ec4e41b543ebaa894f8261d4c9 + md5: b551e25e4fb27ccb51aff2c5dcf178f4 depends: - __win - colorama @@ -9649,11 +9743,11 @@ packages: license_family: BSD purls: - pkg:pypi/ipython?source=hash-mapping - size: 621095 - timestamp: 1748711232331 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd - md5: 270dbfb30fe759b39ce0c9fdbcd7be10 + size: 627419 + timestamp: 1751470649672 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda + sha256: ff5138bf6071ca01d84e1329f6baa96f0723df6fe183cfa1ab3ebc96240e6d8f + md5: cb7706b10f35e7507917cefa0978a66d depends: - __unix - pexpect >4.3 @@ -9673,9 +9767,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/ipython?source=hash-mapping - size: 621859 - timestamp: 1748713870748 + - pkg:pypi/ipython?source=compressed-mapping + size: 628259 + timestamp: 1751465044469 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -10334,32 +10428,6 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 - md5: 1f5f3b0fcff308d8fbaa73c43af08e2f - depends: - - async-lru >=1.0.0 - - httpx >=0.25.0 - - importlib-metadata >=4.8.3 - - ipykernel >=6.5.0 - - jinja2 >=3.0.3 - - jupyter-lsp >=2.0.0 - - jupyter_core - - jupyter_server >=2.4.0,<3 - - jupyterlab_server >=2.27.1,<3 - - notebook-shim >=0.2 - - packaging - - python >=3.9 - - setuptools >=41.1.0 - - tomli >=1.2.2 - - tornado >=6.2.0 - - traitlets - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jupyterlab?source=hash-mapping - size: 8593072 - timestamp: 1746536121732 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda sha256: a6efcdbe973e12bc8bd61aa26af77f733364975000c8fdaa0d6374338018e0db md5: dbd991d0080c48dae5113a27ab6d0d70 @@ -10543,18 +10611,18 @@ packages: purls: [] size: 671240 timestamp: 1740155456116 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_5.conda - sha256: de097284f497b391fe9d000c75b684583c30aad172d9508ed05df23ce39d75cb - md5: acd9213a63cb62521290e581ef82de80 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + sha256: 2a34aa8146f97f9e2fc1f3ff34e17c1008afd4a7b0e2fea164b8e5df00b8cbb4 + md5: e31316a586cac398b1fcdb10ace786b9 depends: - __glibc >=2.17,<3.0.a0 constrains: - - binutils_impl_linux-64 2.43 + - binutils_impl_linux-64 2.44 license: GPL-3.0-only license_family: GPL purls: [] - size: 670525 - timestamp: 1749852860076 + size: 675719 + timestamp: 1751601710789 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -11953,6 +12021,16 @@ packages: purls: [] size: 97229 timestamp: 1746229336518 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + sha256: 33828b83c29f4fcee0ae5f740b5e4660bee3793df8c9079e279284604858c0ac + md5: 27e7ef1f0d8c47ae5acd6e0e15c08f8d + depends: + - __osx >=10.13 + - libiconv >=1.18,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 97550 + timestamp: 1751558234755 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda sha256: fb6d211d9e75e6becfbf339d255ea01f7bd3a61fe6237b3dad740de1b74b3b81 md5: 0dca9914f2722b773c863508723dfe6e @@ -11963,6 +12041,16 @@ packages: purls: [] size: 90547 timestamp: 1746229257769 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a + md5: 5103f6a6b210a3912faf8d7db516918c + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 90957 + timestamp: 1751558394144 - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 @@ -12290,9 +12378,9 @@ packages: purls: [] size: 33408 timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_0.conda - sha256: 2df595ff4cd599446ed7ca01cdfaccc6bc8de89de45b834dd8d5b044ef1d0aea - md5: 7bc06365942b9e4a037746c182feff4d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_1.conda + sha256: 55478faf21bd0ea6679189fa998fb3282f8bae93b1a4edf38b3e259bacce841d + md5: f38e71689d0807320af7373dd458b77d depends: - __glibc >=2.17,<3.0.a0 - cuda-version >=12,<12.10.0a0 @@ -12300,8 +12388,8 @@ packages: - libstdcxx >=13 license: LicenseRef-NVIDIA-End-User-License-Agreement purls: [] - size: 30525691 - timestamp: 1749219248901 + size: 30527890 + timestamp: 1751470375759 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 @@ -12414,6 +12502,17 @@ packages: purls: [] size: 289506 timestamp: 1750095629466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + sha256: c7b212bdd3f9d5450c4bae565ccb9385222bf9bb92458c2a23be36ff1b981389 + md5: 51de14db340a848869e69c632b43cca7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 289215 + timestamp: 1751559366724 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 md5: 8461ab86d2cdb76d6e971aab225be73f @@ -12434,6 +12533,16 @@ packages: purls: [] size: 267502 timestamp: 1750095826947 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + sha256: a6b51f7056d3f5cf7e71f87314e7b3bb3b6ac5e38a4fb366cf500790e325ffd2 + md5: 0b750895b4a3cbd06e685f86c24c205d + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 267202 + timestamp: 1751559565046 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f md5: 3550e05e3af94a3fa9cef2694417ccdf @@ -12454,6 +12563,16 @@ packages: purls: [] size: 259291 timestamp: 1750095759683 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + sha256: 38d89e4ceae81f24a11129d2f5e8d10acfc12f057b7b4fd5af9043604a689941 + md5: f39e4bd5424259d8dfcbdbf0e068558e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + purls: [] + size: 260895 + timestamp: 1751559636317 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 md5: ad620e92b82d2948bc019e029c574ebb @@ -12478,6 +12597,18 @@ packages: purls: [] size: 347727 timestamp: 1750096091724 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda + sha256: 17f3bfb6d852eec200f68a4cfb4ef1d8950b73dfa48931408e3dbdfc89a4848a + md5: 2e63db2e13cd6a5e2c08f771253fb8a0 + depends: + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: zlib-acknowledgement + purls: [] + size: 352422 + timestamp: 1751559786122 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf md5: edb86556cf4a0c133e7932a1597ff236 @@ -12533,6 +12664,7 @@ packages: constrains: - re2 2025.06.26.* license: BSD-3-Clause + license_family: BSD purls: [] size: 211720 timestamp: 1751053073521 @@ -12547,6 +12679,7 @@ packages: constrains: - re2 2025.06.26.* license: BSD-3-Clause + license_family: BSD purls: [] size: 180092 timestamp: 1751053180332 @@ -12561,6 +12694,7 @@ packages: constrains: - re2 2025.06.26.* license: BSD-3-Clause + license_family: BSD purls: [] size: 167704 timestamp: 1751053331260 @@ -13662,41 +13796,6 @@ packages: - pkg:pypi/nest-asyncio?source=hash-mapping size: 11543 timestamp: 1733325673691 -- pypi: https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl - name: networkx - version: 3.4.2 - sha256: df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f - requires_dist: - - numpy>=1.24 ; extra == 'default' - - scipy>=1.10,!=1.11.0,!=1.11.1 ; extra == 'default' - - matplotlib>=3.7 ; extra == 'default' - - pandas>=2.0 ; extra == 'default' - - changelist==0.5 ; extra == 'developer' - - pre-commit>=3.2 ; extra == 'developer' - - mypy>=1.1 ; extra == 'developer' - - rtoml ; extra == 'developer' - - sphinx>=7.3 ; extra == 'doc' - - pydata-sphinx-theme>=0.15 ; extra == 'doc' - - sphinx-gallery>=0.16 ; extra == 'doc' - - numpydoc>=1.8.0 ; extra == 'doc' - - pillow>=9.4 ; extra == 'doc' - - texext>=0.6.7 ; extra == 'doc' - - myst-nb>=1.1 ; extra == 'doc' - - intersphinx-registry ; extra == 'doc' - - osmnx>=1.9 ; extra == 'example' - - momepy>=0.7.2 ; extra == 'example' - - contextily>=1.6 ; extra == 'example' - - seaborn>=0.13 ; extra == 'example' - - cairocffi>=1.7 ; extra == 'example' - - igraph>=0.11 ; extra == 'example' - - scikit-learn>=1.5 ; extra == 'example' - - lxml>=4.6 ; extra == 'extra' - - pygraphviz>=1.14 ; extra == 'extra' - - pydot>=3.0.1 ; extra == 'extra' - - sympy>=1.10 ; extra == 'extra' - - pytest>=7.2 ; extra == 'test' - - pytest-cov>=4.0 ; extra == 'test' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl name: networkx version: '3.5' @@ -13894,6 +13993,25 @@ packages: - pkg:pypi/numpy?source=compressed-mapping size: 7634474 timestamp: 1749431208151 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + sha256: a3a4c28b173227f32d99776212798b822deeef3907f87badc76b74931b27ed72 + md5: 1bd9317ab52825bc8fa33a32ccc17935 + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7602309 + timestamp: 1751342608687 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 md5: 9446d2629b529e92769dfb34c7c194bb @@ -13954,6 +14072,26 @@ packages: - pkg:pypi/numpy?source=compressed-mapping size: 6525213 timestamp: 1749430964570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + sha256: 35346fa9da0a6a8776d4235469c1513b116d2ba3844802da00d5e821bb3e9828 + md5: 3ed1eeb92906e8653c7346854c32dc6e + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6567388 + timestamp: 1751342678109 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d md5: 6612dfa4e68dd90c539f2e9f40a42514 @@ -14014,6 +14152,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6646194 timestamp: 1749431079208 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + sha256: 4a07411ed54fda72f2bc800130f1f0d520591aa78eba5c5f39d092810a6e908e + md5: 7d719836eecd25d2cf2bfb44c3c1be2c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7302895 + timestamp: 1751342919937 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f md5: 5402c2b046432ceb2d192a82802e7854 @@ -14021,24 +14179,11 @@ packages: - numpy - python >=3.9 license: BSD-2-Clause + license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping size: 38384 timestamp: 1747937493897 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 - md5: 5af206d64d18d6c8dfb3122b4d9e643b - depends: - - python >=3.9 - - sphinx >=6 - - tabulate >=0.8.10 - - tomli >=1.1.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpydoc?source=hash-mapping - size: 58041 - timestamp: 1733650959971 - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 md5: 66f9ba52d846feffa1c5d62522324b4f @@ -14048,6 +14193,7 @@ packages: - tomli >=1.1.0 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping size: 60220 @@ -14258,6 +14404,17 @@ packages: purls: [] size: 2739181 timestamp: 1746224401118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda + sha256: d5dc7da2ef7502a14f88443675c4894db336592ac7b9ae0517e1339ebb94f38a + md5: f1ac2dbc36ce2017bd8f471960b1261d + depends: + - __osx >=10.13 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2744123 + timestamp: 1751391059798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda sha256: 73d366c1597a10bcd5f3604b5f0734b31c23225536e03782c6a13f9be9d01bff md5: 5c7aef00ef60738a14e0e612cfc5bcde @@ -14269,6 +14426,17 @@ packages: purls: [] size: 3064197 timestamp: 1746223530698 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + sha256: f94fde0f096fa79794c8aa0a2665630bbf9026cc6438e8253f6555fc7281e5a8 + md5: a8ac77e7c7e58d43fa34d60bd4361062 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3071649 + timestamp: 1751390309393 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda sha256: 02846553d2a4c9bde850c60824d0f02803eb9c9b674d5c1a8cce25bc387e748f md5: 72c07e46b6766bb057018a9a74861b89 @@ -14282,6 +14450,19 @@ packages: purls: [] size: 9025176 timestamp: 1746227349882 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda + sha256: 2b2eb73b0661ff1aed55576a3d38614852b5d857c2fa9205ac115820c523306c + md5: d124fc2fd7070177b5e2450627f8fc1a + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 9327033 + timestamp: 1751392489008 - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl name: opt-einsum version: 3.4.0 @@ -14298,12 +14479,12 @@ packages: - pkg:pypi/opt-einsum?source=hash-mapping size: 62479 timestamp: 1733688053334 -- pypi: https://files.pythonhosted.org/packages/25/33/cd41ab38ef313874eb2000f1037ccce001dd680873713cc2d1a2ae5d0041/optree-0.15.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl name: optree - version: 0.15.0 - sha256: def5b08f219c31edd029b47624e689ffa07747b0694222156f28a28d341d29ac + version: 0.16.0 + sha256: e974f28c699baf1565765645a71cfe5a47886fd6297225090c18204f49b4037c requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14317,8 +14498,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14330,20 +14511,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/32/a5/2589d9790a6dd7c4b1dd22bd228238c575ec5384ce5bc16a30e7f43cdd99/optree-0.15.0-cp312-cp312-macosx_10_13_universal2.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl name: optree - version: 0.15.0 - sha256: ba2eee9de9d57e145b4c1a71749f7f8b8fe1c645abbb306d4a26cfa45a9cdbb5 + version: 0.16.0 + sha256: b7390b7f65809555ed43598c1df18a8757b3a4396c279e5f9fcfab88ad0bc59b requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14357,8 +14531,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14370,20 +14544,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/86/f0/a00cf9f2cf1e8d54f71116ad5eea73fc5b1177644283704535bb8e43090e/optree-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree - version: 0.15.0 - sha256: 01a0dc75c594c884d0ca502b8d169cec538e19a70883d2e5f5b9b08fce740958 + version: 0.16.0 + sha256: 95f0f9b05dbd53cb04f37c49a508f6462ce06fbdb1bb0e0552129de91f8d36b6 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14397,8 +14564,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14410,20 +14577,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/98/a5/f8d6c278ce72b2ed8c1ebac968c3c652832bd2d9e65ec81fe6a21082c313/optree-0.15.0-cp311-cp311-macosx_11_0_arm64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl name: optree - version: 0.15.0 - sha256: f8d58949ef132beb3a025ace512a71a0fcf92e0e5ef350f289f33a782ae6cb85 + version: 0.16.0 + sha256: 6ae2bf009f2a6a7c38f69d70eb0d8e9afd7a871b80c8682d98ce8f25cc50df40 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14437,8 +14597,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14450,20 +14610,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/a5/2c/5363abf03c8d47ad7bc3b45a735cbdf24a10f99f82e776ef2949ffce77c6/optree-0.15.0-cp312-cp312-macosx_11_0_arm64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl name: optree - version: 0.15.0 - sha256: 4aad5023686cd7caad68d70ad3706b82cfe9ae8ff9a13c08c1edef2a9b4c9d72 + version: 0.16.0 + sha256: 33a839c1740c73de589bf2a8154f27e4729df6fc0ca9fee5c11ccbeb167a5f4e requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14477,8 +14630,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14490,20 +14643,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/aa/3d/52a75740d6c449073d4bb54da382f6368553f285fb5a680b27dd198dd839/optree-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl name: optree - version: 0.15.0 - sha256: a1f185b0d21bc4dda1f4fd03f5ba9e2bc9d28ca14bce3ce3d36b5817140a345e + version: 0.16.0 + sha256: f703d7926c36eebdd56fc08aabefcf32a8b7292a9dd4468e56b0ab61bf6214bd requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14517,8 +14663,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14530,20 +14676,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/b0/86/9743be6eac8cc5ef69fa2b6585a36254aca0815714f57a0763bcfa774906/optree-0.15.0-cp311-cp311-win_amd64.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl name: optree - version: 0.15.0 - sha256: d6525d6a550a1030957e5205e57a415d608a9f7561154e0fb29670e967424578 + version: 0.16.0 + sha256: 768d2e12d3626a3d37f8594b7e0d7e633ff66d5de420ca6a1df7132c6a8cdc15 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14557,8 +14696,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14570,20 +14709,13 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/e8/89/1267444a074b6e4402b5399b73b930a7b86cde054a41cecb9694be726a92/optree-0.15.0-cp311-cp311-macosx_10_9_universal2.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl name: optree - version: 0.15.0 - sha256: c15d98e6f587badb9df67d67fa914fcfa0b63db2db270951915c563816c29f3d + version: 0.16.0 + sha256: 22b015d8d7b948d7815924763d473cc7f691731f3b67198f83cea835ae3e2c98 requires_dist: - - typing-extensions>=4.5.0 + - typing-extensions>=4.6.0 - jax ; extra == 'jax' - numpy ; extra == 'numpy' - torch ; extra == 'torch' @@ -14597,8 +14729,8 @@ packages: - pre-commit ; extra == 'lint' - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - - pytest-xdist ; extra == 'test' - covdefaults ; extra == 'test' + - rich ; extra == 'test' - sphinx ; extra == 'docs' - sphinx-autoapi ; extra == 'docs' - sphinx-autobuild ; extra == 'docs' @@ -14610,18 +14742,11 @@ packages: - jax[cpu] ; extra == 'docs' - numpy ; extra == 'docs' - torch ; extra == 'docs' - - jax[cpu]>=0.4.6,<0.5.0a0 ; extra == 'benchmark' - - torch>=2.0,<2.6.0a0 ; extra == 'benchmark' - - torchvision ; extra == 'benchmark' - - dm-tree>=0.1,<0.2.0a0 ; extra == 'benchmark' - - pandas ; extra == 'benchmark' - - tabulate ; extra == 'benchmark' - - termcolor ; extra == 'benchmark' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree version: 0.16.0 - sha256: e974f28c699baf1565765645a71cfe5a47886fd6297225090c18204f49b4037c + sha256: 408203ecdff202d34c31f49daec9b3a279e1c027e24729a8b13ab19d5f1b19e6 requires_dist: - typing-extensions>=4.6.0 - jax ; extra == 'jax' @@ -14651,10 +14776,10 @@ packages: - numpy ; extra == 'docs' - torch ; extra == 'docs' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl name: optree version: 0.16.0 - sha256: b7390b7f65809555ed43598c1df18a8757b3a4396c279e5f9fcfab88ad0bc59b + sha256: b08eee60cd0756cd9874ffb44f5e47337c698100fd19dcdc18b86eb1518e3a0a requires_dist: - typing-extensions>=4.6.0 - jax ; extra == 'jax' @@ -14684,10 +14809,10 @@ packages: - numpy ; extra == 'docs' - torch ; extra == 'docs' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl name: optree version: 0.16.0 - sha256: 33a839c1740c73de589bf2a8154f27e4729df6fc0ca9fee5c11ccbeb167a5f4e + sha256: 71e667b1dd0d331590e1356af506ab9896803acb85aea114f9e76a16a4e1be36 requires_dist: - typing-extensions>=4.6.0 - jax ; extra == 'jax' @@ -14717,10 +14842,10 @@ packages: - numpy ; extra == 'docs' - torch ; extra == 'docs' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: optree version: 0.16.0 - sha256: 408203ecdff202d34c31f49daec9b3a279e1c027e24729a8b13ab19d5f1b19e6 + sha256: f08aaa1c2ae092b3e662125ad19860046c63d7451d41be133ddd6594920e295e requires_dist: - typing-extensions>=4.6.0 - jax ; extra == 'jax' @@ -14819,9 +14944,9 @@ packages: - pkg:pypi/packaging?source=compressed-mapping size: 62477 timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda - sha256: 98cd49bfc4b803d950f9dbc4799793903aec1eaacd388c244a0b46d644159831 - md5: c9f8fe78840d5c04e61666474bd739b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda + sha256: 402602238308e04062e599b2df0984ed77beca8f9fe49cc78559cc716d816e2d + md5: 805040d254f51cb15df55eff6e213d09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14834,46 +14959,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - odfpy >=1.4.1 - - numba >=0.56.4 - - qtpy >=2.3.0 - - pyarrow >=10.0.1 - - matplotlib >=3.6.3 - - beautifulsoup4 >=4.11.2 - - gcsfs >=2022.11.0 - - lxml >=4.9.2 - - bottleneck >=1.3.6 - - tabulate >=0.9.0 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 - - sqlalchemy >=2.0.0 - - xlrd >=2.0.1 - - fastparquet >=2022.12.0 - - numexpr >=2.8.4 - - pyqt5 >=5.15.9 - - pytables >=3.8.0 - - pyreadstat >=1.2.0 - - fsspec >=2022.11.0 - - html5lib >=1.1 + - pyqt5 >=5.15.9 + - beautifulsoup4 >=4.11.2 + - odfpy >=1.4.1 + - s3fs >=2022.11.0 + - lxml >=4.9.2 + - bottleneck >=1.3.6 + - tzdata >=2022.7 + - numba >=0.56.4 - xarray >=2022.12.0 - - blosc >=1.21.3 - - openpyxl >=3.1.0 + - scipy >=1.10.0 + - xlrd >=2.0.1 + - matplotlib >=3.6.3 - pandas-gbq >=0.19.0 - - tzdata >=2022.7 - - pyxlsb >=1.0.10 + - zstandard >=0.19.0 - psycopg2 >=2.9.6 - - scipy >=1.10.0 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 - python-calamine >=0.1.7 + - tabulate >=0.9.0 - xlsxwriter >=3.0.5 + - openpyxl >=3.1.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - qtpy >=2.3.0 + - html5lib >=1.1 + - fsspec >=2022.11.0 + - numexpr >=2.8.4 + - gcsfs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - pyarrow >=10.0.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15689443 - timestamp: 1744430942431 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_3.conda - sha256: b0bed36b95757bbd269d30b2367536b802158bdf7947800ee7ae55089cfa8b9c - md5: 2979458c23c7755683a0598fb33e7666 + size: 15299103 + timestamp: 1749100113269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + sha256: 44f5587c1e1a9f0257387dd18735bcf65a67a6089e723302dc7947be09d9affe + md5: ac82ac336dbe61106e21fb2e11704459 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -14886,43 +15011,43 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - tabulate >=0.9.0 - - pytables >=3.8.0 - - html5lib >=1.1 - - lxml >=4.9.2 - - gcsfs >=2022.11.0 - - odfpy >=1.4.1 - - numexpr >=2.8.4 - - psycopg2 >=2.9.6 - - fsspec >=2022.11.0 - - qtpy >=2.3.0 - - tzdata >=2022.7 - - pyarrow >=10.0.1 + - bottleneck >=1.3.6 + - blosc >=1.21.3 + - numba >=0.56.4 - pyqt5 >=5.15.9 - - xlrd >=2.0.1 - - sqlalchemy >=2.0.0 - - xarray >=2022.12.0 + - pyarrow >=10.0.1 + - gcsfs >=2022.11.0 + - xlsxwriter >=3.0.5 - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - numexpr >=2.8.4 - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 - - matplotlib >=3.6.3 - - bottleneck >=1.3.6 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 + - lxml >=4.9.2 + - xlrd >=2.0.1 - openpyxl >=3.1.0 - - blosc >=1.21.3 - - beautifulsoup4 >=4.11.2 + - qtpy >=2.3.0 + - s3fs >=2022.11.0 - pandas-gbq >=0.19.0 - - xlsxwriter >=3.0.5 - - numba >=0.56.4 - - pyxlsb >=1.0.10 + - pytables >=3.8.0 - python-calamine >=0.1.7 + - fsspec >=2022.11.0 + - psycopg2 >=2.9.6 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - pyxlsb >=1.0.10 + - tabulate >=0.9.0 + - odfpy >=1.4.1 + - pyreadstat >=1.2.0 + - html5lib >=1.1 + - zstandard >=0.19.0 + - sqlalchemy >=2.0.0 + - tzdata >=2022.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15392153 - timestamp: 1744430987175 + size: 14958450 + timestamp: 1749100123120 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda sha256: c4a6e9bc13454c5afd17600c2ee2b6b07fee8b2629cb1c193c22c048faa9bdcc md5: 8664b4fa9b5b23b0d1cdc55c7195fcfe @@ -14975,9 +15100,9 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14991000 timestamp: 1749100101435 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py311hcf53e2f_3.conda - sha256: 5a25e7353b25fcf0af48a3a127b4c204b478b2abe2f7e5b863a68ea91955328b - md5: f763d55519fd9595b2d0e85265810137 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda + sha256: 9259d581c4e0f0edc8ac47919dfd751d206d0b7ee242c0fa63ddd5b22fdeddb9 + md5: aa02add77b5abd716fbe0aaf0a0da7ee depends: - __osx >=10.13 - libcxx >=18 @@ -14989,46 +15114,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - tabulate >=0.9.0 - - zstandard >=0.19.0 - - bottleneck >=1.3.6 - - psycopg2 >=2.9.6 - - matplotlib >=3.6.3 - - xarray >=2022.12.0 - - openpyxl >=3.1.0 - - html5lib >=1.1 - - pytables >=3.8.0 - - pyxlsb >=1.0.10 - - numexpr >=2.8.4 - - pyarrow >=10.0.1 - pandas-gbq >=0.19.0 + - blosc >=1.21.3 - qtpy >=2.3.0 - - tzdata >=2022.7 - - pyqt5 >=5.15.9 - - sqlalchemy >=2.0.0 + - html5lib >=1.1 + - pyarrow >=10.0.1 + - openpyxl >=3.1.0 - beautifulsoup4 >=4.11.2 - - lxml >=4.9.2 - - s3fs >=2022.11.0 - - numba >=0.56.4 - - fastparquet >=2022.12.0 - - fsspec >=2022.11.0 - - blosc >=1.21.3 - - pyreadstat >=1.2.0 - - xlsxwriter >=3.0.5 + - pyxlsb >=1.0.10 + - sqlalchemy >=2.0.0 + - matplotlib >=3.6.3 - python-calamine >=0.1.7 - - scipy >=1.10.0 + - bottleneck >=1.3.6 + - pyreadstat >=1.2.0 + - lxml >=4.9.2 - odfpy >=1.4.1 + - xlsxwriter >=3.0.5 + - pytables >=3.8.0 + - xarray >=2022.12.0 - gcsfs >=2022.11.0 + - scipy >=1.10.0 + - tzdata >=2022.7 + - zstandard >=0.19.0 + - pyqt5 >=5.15.9 + - fsspec >=2022.11.0 + - numba >=0.56.4 + - s3fs >=2022.11.0 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - tabulate >=0.9.0 - xlrd >=2.0.1 + - fastparquet >=2022.12.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14756244 - timestamp: 1744430913476 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.3-py312hec45ffd_3.conda - sha256: b9c98565d165384a53ecdb14c8ccd9144d672b58c81e057598d197c6be0aba98 - md5: 50fcc3531441b73cb493ef9b2604abde + size: 14526764 + timestamp: 1749100213048 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + sha256: 67a07b607c9f81fdd90c2aeba55fd53261eda5e155fe907088c31cada8ee0496 + md5: 5aabeb910da8efba6e5128aa7aaf3256 depends: - __osx >=10.13 - libcxx >=18 @@ -15040,43 +15165,43 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - qtpy >=2.3.0 + - zstandard >=0.19.0 + - tabulate >=0.9.0 - numba >=0.56.4 - - pyarrow >=10.0.1 - - python-calamine >=0.1.7 - - bottleneck >=1.3.6 + - numexpr >=2.8.4 + - odfpy >=1.4.1 + - pytables >=3.8.0 - tzdata >=2022.7 - - lxml >=4.9.2 - - gcsfs >=2022.11.0 + - blosc >=1.21.3 + - sqlalchemy >=2.0.0 + - s3fs >=2022.11.0 - html5lib >=1.1 + - beautifulsoup4 >=4.11.2 + - matplotlib >=3.6.3 - pandas-gbq >=0.19.0 - - psycopg2 >=2.9.6 - - numexpr >=2.8.4 - - fastparquet >=2022.12.0 - - zstandard >=0.19.0 - - tabulate >=0.9.0 - - xarray >=2022.12.0 + - gcsfs >=2022.11.0 - xlsxwriter >=3.0.5 - - odfpy >=1.4.1 + - lxml >=4.9.2 - pyreadstat >=1.2.0 - - openpyxl >=3.1.0 - - xlrd >=2.0.1 - - beautifulsoup4 >=4.11.2 - - s3fs >=2022.11.0 - - matplotlib >=3.6.3 - - scipy >=1.10.0 + - python-calamine >=0.1.7 - fsspec >=2022.11.0 - - pytables >=3.8.0 - - qtpy >=2.3.0 - - blosc >=1.21.3 - pyqt5 >=5.15.9 - - pyxlsb >=1.0.10 + - psycopg2 >=2.9.6 + - xlrd >=2.0.1 + - bottleneck >=1.3.6 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - fastparquet >=2022.12.0 + - scipy >=1.10.0 + - xarray >=2022.12.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14590879 - timestamp: 1744431018654 + size: 14183743 + timestamp: 1749100129960 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda sha256: e403af69c29fc477a1857a60a77b7e33063ca07b9c312818a820adcb29ab948e md5: 54635bd0e921609f8331e07cf6344a90 @@ -15128,9 +15253,9 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14196191 timestamp: 1749100236221 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311hca32420_3.conda - sha256: 2fedf5cec20945d5ce1a5264f06a8adf23bc6b355cef365e92241a3f1f6a6d11 - md5: 29ae2c4e0ee3c65fa8520cafbf479ff7 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda + sha256: dc90abbeaa1b73b77c47269aec1faac72f2bf71c55e6a51a523ac92b53f09a53 + md5: ea3aa0995e65698bd1d59999c1482d15 depends: - __osx >=11.0 - libcxx >=18 @@ -15143,46 +15268,46 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - python-calamine >=0.1.7 + - html5lib >=1.1 + - tabulate >=0.9.0 + - bottleneck >=1.3.6 + - fsspec >=2022.11.0 + - beautifulsoup4 >=4.11.2 - pytables >=3.8.0 - - s3fs >=2022.11.0 - - openpyxl >=3.1.0 - - pyarrow >=10.0.1 - - tzdata >=2022.7 - - xarray >=2022.12.0 - - fastparquet >=2022.12.0 - - pyqt5 >=5.15.9 + - gcsfs >=2022.11.0 + - scipy >=1.10.0 + - python-calamine >=0.1.7 - numba >=0.56.4 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - lxml >=4.9.2 - pyxlsb >=1.0.10 - - xlrd >=2.0.1 - - bottleneck >=1.3.6 - - matplotlib >=3.6.3 - - xlsxwriter >=3.0.5 + - sqlalchemy >=2.0.0 + - fastparquet >=2022.12.0 + - xarray >=2022.12.0 - zstandard >=0.19.0 + - matplotlib >=3.6.3 - odfpy >=1.4.1 - - qtpy >=2.3.0 - - numexpr >=2.8.4 - - gcsfs >=2022.11.0 - - tabulate >=0.9.0 + - openpyxl >=3.1.0 + - xlsxwriter >=3.0.5 + - tzdata >=2022.7 - pyreadstat >=1.2.0 - - pandas-gbq >=0.19.0 + - pyqt5 >=5.15.9 + - s3fs >=2022.11.0 - blosc >=1.21.3 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - lxml >=4.9.2 - - html5lib >=1.1 - - fsspec >=2022.11.0 - - psycopg2 >=2.9.6 - - sqlalchemy >=2.0.0 + - pyarrow >=10.0.1 + - pandas-gbq >=0.19.0 + - xlrd >=2.0.1 + - qtpy >=2.3.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14820281 - timestamp: 1744430962289 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcb1e3ce_3.conda - sha256: 57beb95a8c5c3c35a87d0c5a6c3235fb3673618445e60be952a2502781534613 - md5: 63af5cccfa8b67825d8358b149e96466 + size: 14290986 + timestamp: 1749100100341 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + sha256: 3105a94036f37429ed292763d3034008fd0b4911bd565bdf86c33e898655dcdf + md5: d95b29a40430115d6aa817f70be5b5b1 depends: - __osx >=11.0 - libcxx >=18 @@ -15195,43 +15320,43 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - zstandard >=0.19.0 + - xlrd >=2.0.1 + - pyxlsb >=1.0.10 - pyreadstat >=1.2.0 + - fsspec >=2022.11.0 + - matplotlib >=3.6.3 + - s3fs >=2022.11.0 + - pyqt5 >=5.15.9 + - lxml >=4.9.2 - blosc >=1.21.3 + - tabulate >=0.9.0 - fastparquet >=2022.12.0 - - qtpy >=2.3.0 - - openpyxl >=3.1.0 - - psycopg2 >=2.9.6 + - numba >=0.56.4 + - scipy >=1.10.0 - xlsxwriter >=3.0.5 - - lxml >=4.9.2 - - xarray >=2022.12.0 - - pyxlsb >=1.0.10 - - matplotlib >=3.6.3 - - python-calamine >=0.1.7 - gcsfs >=2022.11.0 - - numba >=0.56.4 - - pandas-gbq >=0.19.0 + - html5lib >=1.1 - odfpy >=1.4.1 - - fsspec >=2022.11.0 - - numexpr >=2.8.4 - - xlrd >=2.0.1 - - scipy >=1.10.0 - bottleneck >=1.3.6 - - pyqt5 >=5.15.9 - - s3fs >=2022.11.0 - - html5lib >=1.1 - - pytables >=3.8.0 - - tabulate >=0.9.0 + - numexpr >=2.8.4 - beautifulsoup4 >=4.11.2 - pyarrow >=10.0.1 - - sqlalchemy >=2.0.0 + - openpyxl >=3.1.0 + - qtpy >=2.3.0 + - pytables >=3.8.0 - tzdata >=2022.7 + - zstandard >=0.19.0 + - psycopg2 >=2.9.6 + - xarray >=2022.12.0 + - sqlalchemy >=2.0.0 + - python-calamine >=0.1.7 + - pandas-gbq >=0.19.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14442730 - timestamp: 1744431003090 + size: 14054660 + timestamp: 1749100309197 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda sha256: 3e2495cb6bd1ee035cb1cb91dd91df6e8ffc7ff87b1be24570e566327de830f9 md5: 97e2df3a9bbf80677b74ba80ba461c60 @@ -15284,9 +15409,9 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14010057 timestamp: 1749100339950 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py311hcf9f919_3.conda - sha256: 7aabb8d23a6817844a7f1b402e7e147e341cade5f470a908b8239f969c7b681c - md5: 84c8b4aab176baefd352cd34f7e69469 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda + sha256: b785d7a6d3146b4b9b13d200bb410ba2db31fa69da500e47be8e9f617e34d170 + md5: 5856ab7c6cd759b51b7d80ad0b7b92e7 depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -15299,46 +15424,46 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - lxml >=4.9.2 - - pandas-gbq >=0.19.0 - - psycopg2 >=2.9.6 - - pyxlsb >=1.0.10 - - python-calamine >=0.1.7 - - html5lib >=1.1 - - sqlalchemy >=2.0.0 - - fastparquet >=2022.12.0 - - xarray >=2022.12.0 - - matplotlib >=3.6.3 + - pytables >=3.8.0 + - pyreadstat >=1.2.0 - numexpr >=2.8.4 - - pyqt5 >=5.15.9 - - openpyxl >=3.1.0 + - blosc >=1.21.3 + - html5lib >=1.1 - tzdata >=2022.7 - - bottleneck >=1.3.6 - - tabulate >=0.9.0 - numba >=0.56.4 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - s3fs >=2022.11.0 - - gcsfs >=2022.11.0 - - qtpy >=2.3.0 - - odfpy >=1.4.1 - - pyreadstat >=1.2.0 + - python-calamine >=0.1.7 + - fastparquet >=2022.12.0 - xlrd >=2.0.1 - - pyarrow >=10.0.1 + - beautifulsoup4 >=4.11.2 - zstandard >=0.19.0 - - blosc >=1.21.3 - fsspec >=2022.11.0 - - pytables >=3.8.0 - xlsxwriter >=3.0.5 + - s3fs >=2022.11.0 + - openpyxl >=3.1.0 + - odfpy >=1.4.1 + - matplotlib >=3.6.3 + - scipy >=1.10.0 + - qtpy >=2.3.0 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - lxml >=4.9.2 + - pandas-gbq >=0.19.0 + - sqlalchemy >=2.0.0 + - pyarrow >=10.0.1 + - tabulate >=0.9.0 + - psycopg2 >=2.9.6 + - pyxlsb >=1.0.10 + - gcsfs >=2022.11.0 + - pyqt5 >=5.15.9 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14530915 - timestamp: 1744431484551 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.3-py312h72972c8_3.conda - sha256: 86fe04c5f0dcae3644e3d2d892ddf6760d89eeb8fe1a31ef30290ac5a6a9f125 - md5: 08b4650b022c9f3233d45f231fb9471f + size: 14178063 + timestamp: 1749100482385 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + sha256: e4c8a685cfa1334a566b642523c9584d79ba78ed05888c7b7809d9116b6e9e25 + md5: e2ab2d8cc52281c9ebe19451936802eb depends: - numpy >=1.19,<3 - numpy >=1.22.4 @@ -15351,43 +15476,43 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - pyxlsb >=1.0.10 - - psycopg2 >=2.9.6 - - bottleneck >=1.3.6 - - html5lib >=1.1 - - openpyxl >=3.1.0 - - python-calamine >=0.1.7 - - tabulate >=0.9.0 - - numexpr >=2.8.4 - - beautifulsoup4 >=4.11.2 - - odfpy >=1.4.1 + - pyarrow >=10.0.1 - gcsfs >=2022.11.0 - - pytables >=3.8.0 - - pyqt5 >=5.15.9 - - zstandard >=0.19.0 - - scipy >=1.10.0 - - xarray >=2022.12.0 - - blosc >=1.21.3 - - qtpy >=2.3.0 - - sqlalchemy >=2.0.0 - - pyreadstat >=1.2.0 - fsspec >=2022.11.0 - lxml >=4.9.2 + - tabulate >=0.9.0 + - openpyxl >=3.1.0 + - pyreadstat >=1.2.0 - xlrd >=2.0.1 - - tzdata >=2022.7 - - fastparquet >=2022.12.0 + - pyqt5 >=5.15.9 + - pyxlsb >=1.0.10 - s3fs >=2022.11.0 + - zstandard >=0.19.0 + - numexpr >=2.8.4 + - python-calamine >=0.1.7 + - beautifulsoup4 >=4.11.2 + - fastparquet >=2022.12.0 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 - xlsxwriter >=3.0.5 - - pandas-gbq >=0.19.0 - - numba >=0.56.4 - - pyarrow >=10.0.1 + - sqlalchemy >=2.0.0 + - psycopg2 >=2.9.6 - matplotlib >=3.6.3 + - blosc >=1.21.3 + - pytables >=3.8.0 + - html5lib >=1.1 + - numba >=0.56.4 + - tzdata >=2022.7 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - odfpy >=1.4.1 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14150000 - timestamp: 1744431235710 + size: 13859642 + timestamp: 1749100498003 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda sha256: 2dac0e788df070dfb12e7f3630386973b0bb9730d04b7f774c519e3f3f1db21f md5: 06f537fc2102679d5c1567cf2d38391d @@ -15511,6 +15636,26 @@ packages: purls: [] size: 432439 timestamp: 1743352942656 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda + sha256: baab8ebf970fb6006ad26884f75f151316e545c47fb308a1de2dd47ddd0381c5 + md5: 8c6316c058884ffda0af1f1272910f94 + depends: + - __osx >=10.13 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 432832 + timestamp: 1751292511389 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda sha256: 76e3843f37878629e744ec75d5f3acfc54a7bb23f9970139f4040f93209ef574 md5: 2e5cef90f7d355790fa96f2459ee648f @@ -15530,6 +15675,26 @@ packages: purls: [] size: 426212 timestamp: 1743352728692 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda + sha256: 705484ad60adee86cab1aad3d2d8def03a699ece438c864e8ac995f6f66401a6 + md5: 7d57f8b4b7acfc75c777bc231f0d31be + depends: + - __osx >=11.0 + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 426931 + timestamp: 1751292636271 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda sha256: ac86897c455349145da6c19daecf50f86af9280f3aa8c2a1d507e3bc04558354 md5: 463526d86a59a821902c6a5337312005 @@ -15551,6 +15716,28 @@ packages: purls: [] size: 454284 timestamp: 1743352979658 +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda + sha256: dcda7e9bedc1c87f51ceef7632a5901e26081a1f74a89799a3e50dbdc801c0bd + md5: 452d6d3b409edead3bd90fc6317cd6d4 + depends: + - cairo >=1.18.4,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + purls: [] + size: 454854 + timestamp: 1751292618315 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc md5: 5c092057b6badd30f75b06244ecd01c9 @@ -16089,17 +16276,6 @@ packages: purls: [] size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - purls: - - pkg:pypi/pygments?source=hash-mapping - size: 888600 - timestamp: 1736243563082 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -16513,25 +16689,6 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 - md5: c3c9316209dec74a705a36797970c6be - depends: - - colorama - - exceptiongroup >=1.0.0rc8 - - iniconfig - - packaging - - pluggy <2,>=1.5 - - python >=3.9 - - tomli >=1 - constrains: - - pytest-faulthandler >=2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest?source=hash-mapping - size: 259816 - timestamp: 1740946648058 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d md5: a49c2283f24696a7b30367b7346a0144 @@ -16552,20 +16709,6 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 276562 timestamp: 1750239526127 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd - md5: 1e35d8f975bc0e984a19819aa91c440a - depends: - - coverage >=7.5 - - pytest >=4.6 - - python >=3.9 - - toml - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-cov?source=hash-mapping - size: 27565 - timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 md5: ce978e1b9ed8b8d49164e90a5cdc94cd @@ -16594,9 +16737,9 @@ packages: - pkg:pypi/pytest-profiling?source=hash-mapping size: 15889 timestamp: 1740145872989 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 - md5: 59aad4fb37cabc0bacc73cf344612ddd +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + sha256: b7b58a5be090883198411337b99afb6404127809c3d1c9f96e99b59f36177a96 + md5: 8375cfbda7c57fbceeda18229be10417 depends: - execnet >=2.1 - pytest >=7.0.0 @@ -16607,23 +16750,8 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-xdist?source=hash-mapping - size: 38147 - timestamp: 1733240891538 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 - md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 - depends: - - execnet >=2.1 - - pytest >=7.0.0 - - python >=3.9 - constrains: - - psutil >=3.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-xdist?source=hash-mapping - size: 39210 - timestamp: 1748342202415 + size: 39300 + timestamp: 1751452761594 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 md5: b61d4fbf583b8393d9d00ec106ad3658 @@ -17490,6 +17618,7 @@ packages: depends: - libre2-11 2025.06.26 hba17884_0 license: BSD-3-Clause + license_family: BSD purls: [] size: 27330 timestamp: 1751053087063 @@ -17499,6 +17628,7 @@ packages: depends: - libre2-11 2025.06.26 hfc00f1c_0 license: BSD-3-Clause + license_family: BSD purls: [] size: 27456 timestamp: 1751053203733 @@ -17508,6 +17638,7 @@ packages: depends: - libre2-11 2025.06.26 hd41c47c_0 license: BSD-3-Clause + license_family: BSD purls: [] size: 27423 timestamp: 1751053372858 @@ -17672,6 +17803,22 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 391302 timestamp: 1747837838085 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda + sha256: 1fcae82b7f316d2199113cae3f33664bf14c1244bbd7d33d57f81e8434886404 + md5: ef99c1212c7a66b10920105e8636d1e7 + depends: + - python + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 388125 + timestamp: 1751467685278 - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda sha256: 87bab663373ff8b3461dbc73a963f86d3c4c4b442727c5efe89ba40d1d57e470 md5: 2071cf0f0fd57946d37b825b227f5b02 @@ -17717,6 +17864,21 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 370871 timestamp: 1747837744984 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + sha256: f686fda2556c7c548f9ae9e342fab5d1c1973e198acf91ac28d24f3b721acb2e + md5: 1d9600ff9dfed62fc4e95b3e699dcea7 + depends: + - python + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 368619 + timestamp: 1751467169263 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda sha256: 8928c4cacc668db0c62dd9a11415319f6fa7f06d01360e5398264941c0ab404d md5: 3c969fae89e5832566890421a074eb92 @@ -17765,6 +17927,22 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 360004 timestamp: 1747837756479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda + sha256: 661349c89b3dd7234cf9a470f9b00f9284d5bf26f053e80ea288e0174e8ec907 + md5: c911da8ab509760e4d30bc02c8d6935a + depends: + - python + - python 3.13.* *_cp313 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 356822 + timestamp: 1751467136573 - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda sha256: 3a76edb8f446351f36eb43a215e0df0b444f73b0f22453c0966611653b05c06f md5: 9cbe2af742a0fa8387caef089682a92f @@ -17819,6 +17997,24 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 252641 timestamp: 1747837734433 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda + sha256: 3c4568a18a3b039fc87a83e9613768094cd0264bae6da248fab34aa080feb583 + md5: 6bf2ea52f3e6cf2ee838e9ca3570a7ac + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 250938 + timestamp: 1751467095409 - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl name: scipy version: 1.16.0 @@ -17881,6 +18077,7 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping size: 16727241 @@ -17903,6 +18100,7 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping size: 15306838 @@ -17926,6 +18124,7 @@ packages: - python >=3.13,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping size: 14004890 @@ -18237,17 +18436,6 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a - md5: 959484a66b4b76befcddc4fa97c95567 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tabulate?source=hash-mapping - size: 37554 - timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -18645,6 +18833,15 @@ packages: purls: [] size: 90310 timestamp: 1748959427551 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + sha256: 349951278fa8d0860ec6b61fcdc1e6f604e6fce74fabf73af2e39a37979d0223 + md5: 75be1a943e0a7f99fcf118309092c635 + depends: + - typing_extensions ==4.14.1 pyhe01879c_0 + license: PSF-2.0 + purls: [] + size: 90486 + timestamp: 1751643513473 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 md5: 83fc6ae00127671e301c9f44254c31b8 @@ -18669,6 +18866,17 @@ packages: - pkg:pypi/typing-extensions?source=hash-mapping size: 50978 timestamp: 1748959427551 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + sha256: 4f52390e331ea8b9019b87effaebc4f80c6466d09f68453f52d5cdc2a3e1194f + md5: e523f4f1e980ed7a4240d7e27e9ec81f + depends: + - python >=3.9 + - python + license: PSF-2.0 + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 51065 + timestamp: 1751643513473 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -19054,6 +19262,19 @@ packages: purls: [] size: 321099 timestamp: 1745806602179 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda + sha256: ba673427dcd480cfa9bbc262fd04a9b1ad2ed59a159bd8f7e750d4c52282f34c + md5: 0f2ca7906bf166247d1d760c3422cb8a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + purls: [] + size: 330474 + timestamp: 1751817998141 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 md5: b68980f2495d096e71c7fd9d7ccf63e6 diff --git a/pyproject.toml b/pyproject.toml index f244d6c53c..a58af2cc46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,20 +40,7 @@ classifiers = [ ] # Dependencies and requirements requires-python = ">=3.11" -dependencies = [ - # "dags>=0.3.1", - "ipywidgets", - "networkx", - "numpy", - "numpy-groupies", - "pandas", - "openpyxl", - "plotly>=6.2", - "optree", - "pygments", - "pygraphviz", - "pytest", - "pyyaml", +dependencies = [ "ipywidgets", "numpy", "numpy-groupies", "pandas", "openpyxl", "pygments", "pygraphviz", "pytest", "pyyaml", "networkx>=3.5,<4", "plotly>=6.2.0,<7", "optree>=0.16.0,<0.17", ] @@ -104,21 +91,21 @@ platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] [tool.pixi.dependencies] python = ">=3.11,<3.14" -pre-commit = "*" -pandas = ">=2.2" -numpy_groupies = "*" -numpydoc = "*" -openpyxl = "*" -ipywidgets = "*" -jupyterlab = "*" -pygments = "*" -pygraphviz = "*" -pyyaml = "*" -toml = "*" -pytest = "*" -pytest-cov = "*" -pytest-profiling = "*" -pytest-xdist = "*" +pre-commit = ">=4.2.0,<5" +pandas = ">=2.3.0,<3" +numpy_groupies = ">=0.11.3,<0.12" +numpydoc = ">=1.9.0,<2" +openpyxl = ">=3.1.5,<4" +ipywidgets = ">=8.1.7,<9" +jupyterlab = ">=4.4.4,<5" +pygments = ">=2.19.2,<3" +pygraphviz = ">=1.14,<2" +pyyaml = ">=6.0.2,<7" +toml = ">=0.10.2,<0.11" +pytest = ">=8.4.1,<9" +pytest-cov = ">=6.2.1,<7" +pytest-profiling = ">=1.8.1,<2" +pytest-xdist = ">=3.8.0,<4" snakeviz = ">=2.2.2,<3" @@ -128,9 +115,9 @@ snakeviz = ">=2.2.2,<3" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} -jaxtyping = "*" -kaleido = ">=1.0" -pdbp = "*" +jaxtyping = ">=0.3.2, <0.4" +kaleido = ">=1.0.0, <2" +pdbp = ">=1.7.0, <2" # Features @@ -193,8 +180,8 @@ mypy = ["mypy"] py311 = ["test", "py311"] py312 = ["test", "py312"] py313 = ["test", "py313"] -py313-jax = ["py313", "test", "jax"] -py313-cuda = ["py313", "test", "cuda"] +py312-jax = ["py313", "test", "jax"] +py312-cuda = ["py313", "test", "cuda"] # ====================================================================================== # Ruff configuration diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 6e84e6df41..da3488206d 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -173,6 +173,7 @@ def betrag_selbstständig_m_ohne_zusatzbeitrag( def betrag_selbstständig_m_mit_zusatzbeitrag( bemessungsgrundlage_selbstständig_m: float, parameter_beitragssatz: dict[str, float], + zusatzbeitragssatz: float, ) -> float: """Health insurance contributions for self-employed's income. The self-employed pay the full reduced contribution. @@ -180,10 +181,7 @@ def betrag_selbstständig_m_mit_zusatzbeitrag( Contribution rate includes the insurance provider-specific Zusatzbeitrag introduced in 2015. """ - beitrag = ( - parameter_beitragssatz["ermäßigt"] - + parameter_beitragssatz["mean_zusatzbeitrag"] - ) + beitrag = parameter_beitragssatz["ermäßigt"] + zusatzbeitragssatz return beitrag * bemessungsgrundlage_selbstständig_m diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index e171f118ad..e7db3415ce 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import param_function +from ttsim.tt_dag_elements import param_function, policy_function @param_function(end_date="2005-06-30") @@ -15,7 +15,7 @@ def beitragssatz_arbeitnehmer(beitragssatz: float) -> float: @param_function(end_date="2005-12-31") -def beitragssatz_arbeitnehmer_jahresanfang(beitragssatz_jahresanfang: float) -> float: +def beitragssatz_arbeitnehmer_midijob(beitragssatz_jahresanfang: float) -> float: """Employee's health insurance contribution rate for the beginning of the year until June 2005. @@ -24,32 +24,30 @@ def beitragssatz_arbeitnehmer_jahresanfang(beitragssatz_jahresanfang: float) -> return beitragssatz_jahresanfang / 2 -@param_function( +@policy_function( start_date="2005-07-01", end_date="2008-12-31", leaf_name="beitragssatz_arbeitnehmer", ) -def beitragssatz_arbeitnehmer_mittlerer_kassenspezifischer_zusatzbeitrag( +def beitragssatz_arbeitnehmer_voller_zusatzbeitrag_ab_07_2005_bis_2008( + zusatzbeitragssatz: float, parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. - From July 2005 until December 2008. The contribution rates consists of a general - rate (split equally between employers and employees, differs across sickness funds) - and a top-up rate, which is fully paid by employees. + From July 2005 the contribution rates consists of a general rate (split equally + between employers and employees, differs across sickness funds) and a top-up rate, + which is fully paid by employees. """ - return ( - parameter_beitragssatz["mean_allgemein"] / 2 - + parameter_beitragssatz["sonderbeitrag"] - ) + return parameter_beitragssatz["mean_allgemein"] / 2 + zusatzbeitragssatz @param_function( start_date="2006-01-01", end_date="2008-12-31", - leaf_name="beitragssatz_arbeitnehmer_jahresanfang", + leaf_name="beitragssatz_arbeitnehmer_midijob", ) -def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbeitrag( +def beitragssatz_arbeitnehmer_midijob_voller_zusatzbeitrag_ab_2006_bis_2008( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. @@ -62,39 +60,37 @@ def beitragssatz_arbeitnehmer_jahresanfang_mittlerer_kassenspezifischer_zusatzbe ) -@param_function( +@policy_function( start_date="2009-01-01", - end_date="2014-12-31", + end_date="2018-12-31", leaf_name="beitragssatz_arbeitnehmer", ) -def beitragssatz_arbeitnehmer_einheitlicher_beitrag_und_sonderbeitrag( +def beitragssatz_arbeitnehmer_voller_zusatzbeitrag_ab_2009_bis_2018( + zusatzbeitragssatz: float, parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. - From January 2009 until December 2014. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. + From July 2005 the contribution rates consists of a general rate (split equally + between employers and employees, differs across sickness funds) and a top-up rate, + which is fully paid by employees. """ - return ( - parameter_beitragssatz["allgemein"] / 2 - + parameter_beitragssatz["sonderbeitrag"] - ) + return parameter_beitragssatz["allgemein"] / 2 + zusatzbeitragssatz @param_function( start_date="2009-01-01", end_date="2014-12-31", - leaf_name="beitragssatz_arbeitnehmer_jahresanfang", + leaf_name="beitragssatz_arbeitnehmer_midijob", ) -def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_sonderbeitrag( +def beitragssatz_arbeitnehmer_midijob_voller_sonderbeitragssatz( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. - From January 2009 until December 2014. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. + From July 2005 the contribution rates consists of a general rate (split equally + between employers and employees, differs across sickness funds) and a top-up rate, + which is fully paid by employees. """ return ( parameter_beitragssatz_jahresanfang["allgemein"] / 2 @@ -105,36 +101,16 @@ def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_sonderbeitr @param_function( start_date="2015-01-01", end_date="2018-12-31", - leaf_name="beitragssatz_arbeitnehmer", -) -def beitragssatz_arbeitnehmer_einheitlicher_beitrag_und_mittlerer_zusatzbeitrag( - parameter_beitragssatz: dict[str, float], -) -> float: - """Employee's health insurance contribution rate. - - From January 2015 until December 2018. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. - """ - return ( - parameter_beitragssatz["allgemein"] / 2 - + parameter_beitragssatz["mean_zusatzbeitrag"] - ) - - -@param_function( - start_date="2015-01-01", - end_date="2018-12-31", - leaf_name="beitragssatz_arbeitnehmer_jahresanfang", + leaf_name="beitragssatz_arbeitnehmer_midijob", ) -def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_mittlerer_zusatzbeitrag( +def beitragssatz_arbeitnehmer_midijob_voller_zusatzbeitragssatz( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. - From January 2015 until December 2018. The contribution rates consists of a general - rate (split equally between employers and employees, same for all sickness funds) - and a top-up rate, which is fully paid by employees. + From July 2005 the contribution rates consists of a general rate (split equally + between employers and employees, differs across sickness funds) and a top-up rate, + which is fully paid by employees. """ return ( parameter_beitragssatz_jahresanfang["allgemein"] / 2 @@ -142,33 +118,31 @@ def beitragssatz_arbeitnehmer_jahresanfang_einheitlicher_beitrag_und_mittlerer_z ) -@param_function( +@policy_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitnehmer", ) def beitragssatz_arbeitnehmer_paritätischer_zusatzbeitrag( + zusatzbeitragssatz: float, parameter_beitragssatz: dict[str, float], ) -> float: """Employee's health insurance contribution rate. Since 2019. Zusatzbeitrag is split equally between employers and employees. """ - return ( - parameter_beitragssatz["allgemein"] - + parameter_beitragssatz["mean_zusatzbeitrag"] - ) / 2 + return (parameter_beitragssatz["allgemein"] + zusatzbeitragssatz) / 2 @param_function( start_date="2019-01-01", - leaf_name="beitragssatz_arbeitnehmer_jahresanfang", + leaf_name="beitragssatz_arbeitnehmer_midijob", ) -def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( +def beitragssatz_arbeitnehmer_midijob_paritätischer_zusatzbeitrag( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: """Employee's health insurance contribution rate at the beginning of the year. - Zusatzbeitrag is now split equally between employers and employees. + Zusatzbeitrag is split equally between employers and employees. """ return ( parameter_beitragssatz_jahresanfang["allgemein"] @@ -181,24 +155,18 @@ def beitragssatz_arbeitnehmer_jahresanfang_paritätischer_zusatzbeitrag( leaf_name="beitragssatz_arbeitgeber", ) def beitragssatz_arbeitgeber_bis_06_2005(beitragssatz: float) -> float: - """Employer's health insurance contribution rate. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - """ + """Employer's health insurance contribution rate.""" return beitragssatz / 2 @param_function( - end_date="2005-06-30", - leaf_name="beitragssatz_arbeitgeber_jahresanfang", + end_date="2005-12-31", + leaf_name="beitragssatz_arbeitgeber_midijob", ) -def beitragssatz_arbeitgeber_jahresanfang_bis_06_2005( +def beitragssatz_arbeitgeber_midijob_bis_06_2005( beitragssatz_jahresanfang: float, ) -> float: - """Employer's health insurance contribution rate. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - """ + """Employer's health insurance contribution rate at the beginning of the year.""" return beitragssatz_jahresanfang / 2 @@ -207,43 +175,22 @@ def beitragssatz_arbeitgeber_jahresanfang_bis_06_2005( end_date="2008-12-31", leaf_name="beitragssatz_arbeitgeber", ) -def beitragssatz_arbeitgeber_mittlerer_kassenspezifischer( +def beitragssatz_arbeitgeber_ohne_zusatzbeitrag_ab_07_2005_bis_2008( parameter_beitragssatz: dict[str, float], ) -> float: - """Employer's health insurance contribution rate. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - """ + """Employer's health insurance contribution rate.""" return parameter_beitragssatz["mean_allgemein"] / 2 -@param_function( - start_date="2005-01-01", - end_date="2005-12-31", - leaf_name="beitragssatz_arbeitgeber_jahresanfang", -) -def beitragssatz_arbeitgeber_jahresanfang_2005( - beitragssatz_jahresanfang: float, -) -> float: - """Employer's health insurance contribution rate at the begging of the year. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - """ - return beitragssatz_jahresanfang / 2 - - @param_function( start_date="2006-01-01", end_date="2008-12-31", - leaf_name="beitragssatz_arbeitgeber_jahresanfang", + leaf_name="beitragssatz_arbeitgeber_midijob", ) -def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( +def beitragssatz_arbeitgeber_midijob_ohne_zusatzbeitrag_ab_06_2006_bis_2008( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: - """Employer's health insurance contribution rate at the begging of the year. - - Until 2008, the top-up contribution rate (Zusatzbeitrag) was not considered. - """ + """Employer's health insurance contribution rate at the begging of the year.""" return parameter_beitragssatz_jahresanfang["mean_allgemein"] / 2 @@ -252,34 +199,26 @@ def beitragssatz_arbeitgeber_jahresanfang_mittlerer_kassenspezifischer( end_date="2018-12-31", leaf_name="beitragssatz_arbeitgeber", ) -def beitragssatz_arbeitgeber_einheitlicher_zusatzbeitrag( +def beitragssatz_arbeitgeber_ohne_zusatzbeitrag_ab_09_2009_bis_2018( parameter_beitragssatz: dict[str, float], ) -> float: - """Employer's health insurance contribution rate. - - From 2009 until 2018, the contribution rate was uniform for all health insurers, - Zusatzbeitrag irrelevant. - """ + """Employer's health insurance contribution rate.""" return parameter_beitragssatz["allgemein"] / 2 @param_function( start_date="2009-01-01", end_date="2018-12-31", - leaf_name="beitragssatz_arbeitgeber_jahresanfang", + leaf_name="beitragssatz_arbeitgeber_midijob", ) -def beitragssatz_arbeitgeber_jahresanfang_einheitlicher_zusatzbeitrag( +def beitragssatz_arbeitgeber_midijob_ohne_zusatzbeitrag_ab_09_2009_bis_2018( parameter_beitragssatz_jahresanfang: dict[str, float], ) -> float: - """Employer's health insurance contribution rate at the beginning of the year. - - From 2009 until 2018, the contribution rate was uniform for all health insurers, - Zusatzbeitrag irrelevant. - """ + """Employer's health insurance contribution rate at the beginning of the year.""" return parameter_beitragssatz_jahresanfang["allgemein"] / 2 -@param_function( +@policy_function( start_date="2019-01-01", leaf_name="beitragssatz_arbeitgeber", ) @@ -296,17 +235,17 @@ def beitragssatz_arbeitgeber_paritätischer_zusatzbeitrag( @param_function( start_date="2019-01-01", - leaf_name="beitragssatz_arbeitgeber_jahresanfang", + leaf_name="beitragssatz_arbeitgeber_midijob", ) -def beitragssatz_arbeitgeber_jahresanfang_paritätischer_zusatzbeitrag( - beitragssatz_arbeitnehmer_jahresanfang: float, +def beitragssatz_arbeitgeber_midijob_paritätischer_zusatzbeitrag( + beitragssatz_arbeitnehmer_midijob: float, ) -> float: """Employer's health insurance contribution rate at the beginning of the year. Since 2019, the full contribution rate is now split equally between employers and employees. """ - return beitragssatz_arbeitnehmer_jahresanfang + return beitragssatz_arbeitnehmer_midijob @param_function( @@ -314,19 +253,25 @@ def beitragssatz_arbeitgeber_jahresanfang_paritätischer_zusatzbeitrag( end_date="2014-12-31", leaf_name="zusatzbeitragssatz", ) -def zusatzbeitragssatz_von_sonderbeitrag( +def zusatzbeitragssatz_genannt_sonderbeitrag( parameter_beitragssatz: dict[str, float], ) -> float: - """Health insurance top-up (Zusatzbeitrag) rate until December 2014.""" + """Health insurance top-up (Zusatzbeitrag) rate until December 2014. + + Overwrite this in order to use an individual-specific Zusatzbeitragssatz. + """ return parameter_beitragssatz["sonderbeitrag"] -@param_function( - start_date="2015-01-01", - leaf_name="zusatzbeitragssatz", -) -def zusatzbeitragssatz_von_mean_zusatzbeitrag( +@param_function(start_date="2015-01-01") +def zusatzbeitragssatz( parameter_beitragssatz: dict[str, float], ) -> float: - """Health insurance top-up rate (Zusatzbeitrag) since January 2015.""" + """Health insurance top-up rate (Zusatzbeitrag) since January 2015. + + Most datasets will not contain information about the individual-specific + Zusatzbeitrag. This function returns the mean Zusatzbeitrag of the specific policy + date. Overwrite this function in order to use an individual-specific + Zusatzbeitragssatz. + """ return parameter_beitragssatz["mean_zusatzbeitrag"] diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index 10ac215055..c64b1ebb8e 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from ttsim.tt_dag_elements import param_function, policy_function @policy_function(start_date="2003-04-01") @@ -45,15 +45,14 @@ def beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m( return quotient * einkommen_diff -@policy_function( +@param_function( start_date="2003-04-01", end_date="2004-12-31", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( - kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitnehmer_midijob: float, + kranken__beitrag__beitragssatz_arbeitgeber_midijob: float, rente__beitrag__beitragssatz_jahresanfang: float, arbeitslosen__beitrag__beitragssatz_jahresanfang: float, pflege__beitrag__beitragssatz_jahresanfang: float, @@ -74,12 +73,8 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( ) # Then calculate specific shares - an_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - ) - ag_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - ) + an_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_midijob + ag_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_midijob # Sum over the shares which are specific for midijobs. pausch_mini = ( @@ -88,19 +83,18 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_bis_2004( + lohnsteuer__minijob_arbeitgeberpauschale ) - # Now calculate final factor - return pausch_mini / (an_anteil + ag_anteil) + # Midijob Faktor F is rounded to 4 decimal places. + return round(pausch_mini / (an_anteil + ag_anteil), ndigits=4) -@policy_function( +@param_function( start_date="2005-01-01", end_date="2022-09-30", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( - kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitnehmer_midijob: float, + kranken__beitrag__beitragssatz_arbeitgeber_midijob: float, rente__beitrag__beitragssatz_jahresanfang: float, arbeitslosen__beitrag__beitragssatz_jahresanfang: float, pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float], @@ -121,12 +115,8 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( + pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang["standard"] / 2 ) - an_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - ) - ag_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - ) + an_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_midijob + ag_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_midijob # Sum over the shares which are specific for midijobs. pausch_mini = ( @@ -135,18 +125,17 @@ def midijob_faktor_f_mit_minijob_steuerpauschale_ab_2005_bis_2022_09( + lohnsteuer__minijob_arbeitgeberpauschale ) - # Now calculate final factor - return pausch_mini / (an_anteil + ag_anteil) + # Midijob Faktor F is rounded to 4 decimal places. + return round(pausch_mini / (an_anteil + ag_anteil), ndigits=4) -@policy_function( +@param_function( start_date="2022-10-01", leaf_name="midijob_faktor_f", - rounding_spec=RoundingSpec(base=0.0001, direction="nearest"), ) def midijob_faktor_f_ohne_minijob_steuerpauschale( - kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang: float, - kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang: float, + kranken__beitrag__beitragssatz_arbeitnehmer_midijob: float, + kranken__beitrag__beitragssatz_arbeitgeber_midijob: float, rente__beitrag__beitragssatz_jahresanfang: float, pflege__beitrag__beitragssatz_nach_kinderzahl_jahresanfang: dict[str, float], arbeitslosen__beitrag__beitragssatz_jahresanfang: float, @@ -169,12 +158,8 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( ) # Then calculate specific shares - an_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_jahresanfang - ) - ag_anteil = ( - allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_jahresanfang - ) + an_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitnehmer_midijob + ag_anteil = allg_sozialv_beitr + kranken__beitrag__beitragssatz_arbeitgeber_midijob # Sum over the shares which are specific for midijobs. # New formula only inludes the lump-sum contributions to health care @@ -184,8 +169,8 @@ def midijob_faktor_f_ohne_minijob_steuerpauschale( + rente__beitrag__minijob_arbeitgeberpauschale ) - # Now calculate final factor f - return pausch_mini / (an_anteil + ag_anteil) + # Midijob Faktor F is rounded to 4 decimal places. + return round(pausch_mini / (an_anteil + ag_anteil), ndigits=4) @policy_function( diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..3528959ffa --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2019 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.7566 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..c39305be24 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2020 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.7547 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2021-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2021-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..7b08018e60 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2021-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2021 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.7509 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..adc8498e5b --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2022 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.7509 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/midijobfaktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/midijobfaktor.yaml" new file mode 100644 index 0000000000..02bff135c9 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/midijobfaktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.0001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2022 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.7009 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..eac58bc80d --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2023 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.6922 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" new file mode 100644 index 0000000000..97682057db --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" @@ -0,0 +1,129 @@ +--- +info: + note: Zusatzbeitrag is assumed to be 0.013. + precision_atol: 0.02 + source: https://apps.datev.de/help-center/documents/1038903 +inputs: + assumed: {} + provided: + alter: + - 45 + - 45 + - 45 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 950.0 + - 950.0 + - 950.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + ist_selbstständig: + - false + - false + - false + hh_id: + - 0 + - 1 + - 2 + p_id: + - 0 + - 1 + - 2 + sozialversicherung: + kranken: + beitrag: + privat_versichert: + - false + - false + - false + zusatzbeitragssatz: + - 0.013 + - 0.013 + - 0.013 + pflege: + beitrag: + anzahl_kinder_bis_24: + - 0 + - 1 + - 2 + hat_kinder: + - false + - true + - true + rente: + altersrente: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + private_rente_betrag_m: + - 0.0 + - 0.0 + - 0.0 + wohnort_ost: + - false + - false + - false +outputs: + sozialversicherung: + beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: + - 563.61 + - 563.61 + - 563.61 + midijob_bemessungsentgelt_m: + - 828.13 + - 828.13 + - 828.13 + arbeitslosen: + beitrag: + betrag_versicherter_m: + - 7.33 + - 7.33 + - 7.33 + betrag_arbeitgeber_m: + - 14.21 + - 14.21 + - 14.21 + kranken: + beitrag: + betrag_versicherter_m: + - 44.8 + - 44.8 + - 44.8 + betrag_versicherter_in_gleitzone_m: + - 44.8 + - 44.8 + - 44.8 + betrag_arbeitgeber_m: + - 86.86 + - 86.86 + - 86.86 + betrag_gesamt_in_gleitzone_m: + - 131.66 + - 131.66 + - 131.66 + pflege: + beitrag: + betrag_versicherter_m: + - 14.55 + - 9.58 + - 8.17 + betrag_arbeitgeber_m: + - 18.58 + - 18.58 + - 18.58 + rente: + beitrag: + betrag_versicherter_m: + - 52.42 + - 52.42 + - 52.42 + betrag_arbeitgeber_m: + - 101.62 + - 101.62 + - 101.62 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..71a46dec38 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2024 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.6846 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" deleted file mode 100644 index cd2c37075d..0000000000 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/skip_einkommen_in_gleitzone.yaml" +++ /dev/null @@ -1,109 +0,0 @@ ---- -info: - note: Zusatzbeitrag is assumed to be 0.013. - precision_atol: 0.01 - source: https://apps.datev.de/help-center/documents/1038903 -inputs: - assumed: {} - provided: - alter: - - 45 - - 45 - - 45 - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: - - 950.0 - - 950.0 - - 950.0 - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: - - 0.0 - - 0.0 - - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: - - false - - false - - false - hh_id: - - 0 - - 1 - - 2 - p_id: - - 0 - - 1 - - 2 - sozialversicherung__kranken__beitrag__privat_versichert: - - false - - false - - false - sozialversicherung__pflege__beitrag__anzahl_kinder_bis_24: - - 0 - - 1 - - 2 - sozialversicherung__pflege__beitrag__hat_kinder: - - false - - true - - true - sozialversicherung__rente__altersrente__betrag_m: - - 0.0 - - 0.0 - - 0.0 - sozialversicherung__rente__private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - wohnort_ost: - - false - - false - - false - sozialversicherung__kranken__beitrag__zusatzbeitragssatz: - - 0.013 - - 0.013 - - 0.013 -outputs: - sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m: - - 563.61 - - 563.61 - - 563.61 - sozialversicherung__midijob_bemessungsentgelt_m: - - 828.13 - - 828.13 - - 828.13 - sozialversicherung__arbeitslosen__beitrag__betrag_versicherter_m: - - 7.33 - - 7.33 - - 7.33 - sozialversicherung__arbeitslosen__beitrag__betrag_arbeitgeber_m: - - 14.21 - - 14.21 - - 14.21 - sozialversicherung__kranken__beitrag__betrag_versicherter_m: - - 44.8 - - 44.8 - - 44.8 - sozialversicherung__kranken__beitrag__betrag_versicherter_in_gleitzone_m: - - 44.8 - - 44.8 - - 44.8 - sozialversicherung__kranken__beitrag__betrag_arbeitgeber_m: - - 86.86 - - 86.86 - - 86.86 - sozialversicherung__kranken__beitrag__betrag_gesamt_in_gleitzone_m: - - 131.66 - - 131.66 - - 131.66 - sozialversicherung__pflege__beitrag__betrag_versicherter_m: - - 14.55 - - 9.58 - - 8.17 - sozialversicherung__pflege__beitrag__betrag_arbeitgeber_m: - - 18.58 - - 18.58 - - 18.58 - sozialversicherung__rente__beitrag__betrag_versicherter_m: - - 52.42 - - 52.42 - - 52.42 - sozialversicherung__rente__beitrag__betrag_arbeitgeber_m: - - 101.62 - - 101.62 - - 101.62 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/midijob_faktor.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/midijob_faktor.yaml" new file mode 100644 index 0000000000..57588ae8f9 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/midijob_faktor.yaml" @@ -0,0 +1,17 @@ +--- +info: + note: '' + precision_atol: 0.00001 + source: >- + Bekanntmachung des Gesamtsozialversicherungsbeitragssatzes und des Faktors F für das + Jahr 2025 +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 +outputs: + sozialversicherung: + midijob_faktor_f: + - 0.6683 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/minijobgrenze.yaml" new file mode 100644 index 0000000000..83bb2dab0c --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/minijobgrenze.yaml" @@ -0,0 +1,20 @@ +--- +info: + note: Minijobgrenze is a parameter. + precision_atol: 0.01 + source: '' +inputs: + provided: + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false +outputs: + sozialversicherung: + minijobgrenze: + - 450.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" deleted file mode 100644 index 97332a6f30..0000000000 --- "a/src/_gettsim_tests/test_data/sozialversicherung/geringf\303\274gig_besch\303\244ftigt/2022-01-01/skip_minijobgrenze.yaml" +++ /dev/null @@ -1,16 +0,0 @@ ---- -info: - note: Cannot test for targets that are purely parameters. - precision_atol: 0.01 - source: '' -inputs: - provided: - hh_id: - - 0 - p_id: - - 0 - sozialversicherung__pflege__beitrag__hat_kinder: - - false -outputs: - sozialversicherung__minijobgrenze: - - 450.0 diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index ae76792a4f..e4ea0af4ee 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -11,7 +11,7 @@ import networkx as nx import optree -from ttsim.interface_dag_elements import MainTarget +from ttsim.interface_dag_elements import MainTarget, MainTargetABC from ttsim.interface_dag_elements.fail_if import ( format_errors_and_warnings, format_list_linewise, @@ -180,6 +180,12 @@ def _harmonize_main_target( return dt.qnames(main_target)[0] if isinstance(main_target, str): return main_target + if isinstance(main_target, type(MainTargetABC)): + raise TypeError( + "`main_target` must be an atomic element of `MainTarget`, got: " + f"`{main_target.__name__}`. Best use an IDE and tab-complete until you " + "have reached the end of a path." + ) raise ValueError(msg) @@ -193,6 +199,14 @@ def _harmonize_main_targets( else: out = list(main_targets) + for i in out: + if isinstance(i, type(MainTargetABC)): + raise TypeError( + "Elements of `main_targets` must be atomic elements of `MainTarget`, " + f"got: `{i.__name__}`. Best use an IDE and tab-complete until you " + "have reached the end of a path." + ) + return out diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 50fd8b0dab..ede3a4611c 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -5,11 +5,11 @@ @dataclass(frozen=True) -class _ABC: +class MainTargetABC: @classmethod def to_dict(cls) -> dict[str, Any]: return { - k: v.to_dict() if isinstance(v, type(_ABC)) else v + k: v.to_dict() if isinstance(v, type(MainTargetABC)) else v for k, v in cls.__dict__.items() if not k.startswith("_") } @@ -19,14 +19,14 @@ def __post_init__(self) -> None: @dataclass(frozen=True) -class WarnIf(_ABC): +class WarnIf(MainTargetABC): functions_and_data_columns_overlap: str = ( "warn_if__functions_and_data_columns_overlap" ) @dataclass(frozen=True) -class FailIf(_ABC): +class FailIf(MainTargetABC): active_periods_overlap: str = "fail_if__active_periods_overlap" any_paths_are_invalid: str = "fail_if__any_paths_are_invalid" environment_is_invalid: str = "fail_if__environment_is_invalid" @@ -65,14 +65,14 @@ class FailIf(_ABC): @dataclass(frozen=True) -class Results(_ABC): +class Results(MainTargetABC): df_with_mapper: str = "results__df_with_mapper" df_with_nested_columns: str = "results__df_with_nested_columns" tree: str = "results__tree" @dataclass(frozen=True) -class RawResults(_ABC): +class RawResults(MainTargetABC): columns: str = "raw_results__columns" combined: str = "raw_results__combined" from_input_data: str = "raw_results__from_input_data" @@ -80,7 +80,7 @@ class RawResults(_ABC): @dataclass(frozen=True) -class SpecializedEnvironment(_ABC): +class SpecializedEnvironment(MainTargetABC): without_tree_logic_and_with_derived_functions: str = ( "specialized_environment__without_tree_logic_and_with_derived_functions" ) @@ -95,13 +95,13 @@ class SpecializedEnvironment(_ABC): @dataclass(frozen=True) -class Targets(_ABC): +class Targets(MainTargetABC): qname: str = "tt_targets__qname" tree: str = "tt_targets__tree" @dataclass(frozen=True) -class Labels(_ABC): +class Labels(MainTargetABC): column_targets: str = "labels__column_targets" grouping_levels: str = "labels__grouping_levels" input_data_targets: str = "labels__input_data_targets" @@ -113,13 +113,13 @@ class Labels(_ABC): @dataclass(frozen=True) -class DfAndMapper(_ABC): +class DfAndMapper(MainTargetABC): df: str = "input_data__df_and_mapper__df" mapper: str = "input_data__df_and_mapper__mapper" @dataclass(frozen=True) -class InputData(_ABC): +class InputData(MainTargetABC): df_and_mapper: type[DfAndMapper] = field(default=DfAndMapper) df_with_nested_columns: str = "input_data__df_with_nested_columns" flat: str = "input_data__flat" @@ -127,7 +127,7 @@ class InputData(_ABC): @dataclass(frozen=True) -class OrigPolicyObjects(_ABC): +class OrigPolicyObjects(MainTargetABC): column_objects_and_param_functions: str = ( "orig_policy_objects__column_objects_and_param_functions" ) @@ -136,12 +136,12 @@ class OrigPolicyObjects(_ABC): @dataclass(frozen=True) -class Templates(_ABC): +class Templates(MainTargetABC): input_data_dtypes: str = "templates__input_data_dtypes" @dataclass(frozen=True) -class MainTarget(_ABC): +class MainTarget(MainTargetABC): results: type[Results] = field(default=Results) policy_environment: str = "policy_environment" templates: type[Templates] = field(default=Templates) diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index eea092da3a..a8c22c77f7 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -168,9 +168,9 @@ def with_processed_params_and_scalars( Parameters ---------- without_tree_logic_and_with_derived_functions - The specialized environment with vectorized column functions, derived functions - (aggregations and time conversions), and without tree logic, i.e. absolute - qualified names in all keys and function arguments. + The specialized environment without tree logic, i.e. absolute qualified names in + all keys and function arguments and with derived functions (aggregations and + time conversions). processed_data The processed data. backend @@ -180,13 +180,13 @@ def with_processed_params_and_scalars( dnp The numpy-like module to use for datetime objects. evaluation_date - The date for which the policy system is set up. An integer is - interpreted as the year. + The date for which the policy system is set up. An integer is interpreted as the + year. Returns ------- - The specialized environment with processed parameters and scalars. Input nodes - that come in via the processed data are removed from the environment. + The specialized environment with processed parameters and scalars. Input nodes that + come in via the processed data are removed from the environment. """ all_nodes = {} diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 4451f0752d..f0cfa4e3bb 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -43,10 +43,11 @@ if TYPE_CHECKING: from types import ModuleType + from jaxtyping import Array, Float + from ttsim.interface_dag_elements.typing import ( FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, - IntColumn, OrigParamSpec, PolicyEnvironment, ) @@ -142,8 +143,8 @@ def some_x(x): return x -@policy_function() -def some_policy_func_returning_array_of_length_2(xnp: ModuleType) -> IntColumn: +@param_function() +def some_param_func_returning_array_of_length_2(xnp: ModuleType) -> Float[Array, 2]: return xnp.array([1, 2]) @@ -797,9 +798,9 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( [ ( { - "some_policy_func_returning_array_of_length_2": some_policy_func_returning_array_of_length_2, + "some_param_func_returning_array_of_length_2": some_param_func_returning_array_of_length_2, }, - {"some_policy_func_returning_array_of_length_2": "res1"}, + {"some_param_func_returning_array_of_length_2": "res1"}, "The data contains paths that don't have the same length", ), ], From a8dca0c579139400b24d600560762c8ba4e243d8 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 8 Jul 2025 11:34:20 +0200 Subject: [PATCH 059/109] Update hooks and run them, fix new failures. --- .github/workflows/main.yaml | 2 +- .pre-commit-config.yaml | 8 ++++---- pyproject.toml | 2 ++ src/_gettsim_tests/test_jittability.py | 2 +- src/ttsim/interface_dag_elements/backend.py | 2 +- .../interface_dag_elements/specialized_environment.py | 2 +- src/ttsim/plot_dag.py | 2 +- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 7d401dc1d7..b73ea32a89 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -36,7 +36,7 @@ jobs: - uses: actions/checkout@v4 - uses: prefix-dev/setup-pixi@v0.8.10 with: - pixi-version: v0.48.2 + pixi-version: v0.49.0 cache: true cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} frozen: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e600c0ff79..5829bad3d2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,11 +38,11 @@ repos: - id: check-ast - id: check-docstring-first - repo: https://github.com/adrienverge/yamllint.git - rev: v1.37.0 + rev: v1.37.1 hooks: - id: yamllint - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.7 + rev: v0.12.2 hooks: # Run the linter. - id: ruff @@ -86,7 +86,7 @@ repos: - '88' files: (docs/.|CHANGES.md|CODE_OF_CONDUCT.md) - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.16.0 + rev: v1.16.1 hooks: - id: mypy args: @@ -102,7 +102,7 @@ repos: # - dags >= 0.3 - optree >= 0.15 - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.33.0 + rev: 0.33.2 hooks: - id: check-jsonschema name: Validate JSON/YAML files against schema diff --git a/pyproject.toml b/pyproject.toml index a58af2cc46..ab7c0a83a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -226,6 +226,8 @@ exclude = [] [tool.ruff.lint.per-file-ignores] "conftest.py" = ["ANN"] "docs/**/*.ipynb" = ["T201"] +# Cannot have default values in test functions with fixtures -- not an issue here. +"src/gettsim/__init__.py" = ["PT028"] # Mostly things vectorization can't handle "src/_gettsim/*" = ["E501", "PLR1714", "PLR1716", "E721", "SIM108", "RET"] # All tests return None and use asserts diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index da189b0be3..5b0d7d38c4 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -66,7 +66,7 @@ def cached_specialized_environment( def test_jittable(tree_path, fun, backend, xnp): today = datetime.date.today() # noqa: DTZ011 date = min(fun.end_date, today) - qname = dt.qname_from_tree_path(tree_path[:-2] + (fun.leaf_name,)) + qname = dt.qname_from_tree_path(*tree_path[:-2], fun.leaf_name) env = {qname: cached_specialized_environment(date, GETTSIM_ROOT, backend)[qname]} processed_data = {} diff --git a/src/ttsim/interface_dag_elements/backend.py b/src/ttsim/interface_dag_elements/backend.py index 51b6480be4..cb6d0b74ba 100644 --- a/src/ttsim/interface_dag_elements/backend.py +++ b/src/ttsim/interface_dag_elements/backend.py @@ -25,7 +25,7 @@ def xnp(backend: Literal["numpy", "jax"]) -> ModuleType: if backend == "numpy": xnp = numpy elif backend == "jax": - import jax + import jax # noqa: PLC0415 xnp = jax.numpy else: diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index a8c22c77f7..5270a1f236 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -355,7 +355,7 @@ def tax_transfer_function( ) if backend == "jax": - import jax + import jax # noqa: PLC0415 ttf_with_keyword_args = jax.jit(ttf_with_keyword_args) diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index d4e045d633..8e40664c41 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -214,7 +214,7 @@ def _qnames_of_idif_to_their_ancestors( """Get the qnames of the input dependent interface functions to their ancestors.""" idif_qname_to_idif_inputs: dict[str, list[str]] = {} for orig_p, orig_object in input_dependent_interface_functions.items(): - qname = dt.qname_from_tree_path(orig_p[:-1] + (orig_object.leaf_name,)) + qname = dt.qname_from_tree_path(*orig_p[:-1], orig_object.leaf_name) if qname not in idif_qname_to_idif_inputs: idif_qname_to_idif_inputs[qname] = [] ancestors = set(orig_object.include_if_all_inputs_present) | set( From 3b09e4c8c42c78725e051801a0dc6cadd2e4d55b Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 8 Jul 2025 11:50:58 +0200 Subject: [PATCH 060/109] Bring in some stuff from #855 s.t. diff is minimal. --- .readthedocs.yaml | 19 +- docs/gettsim_objects/functions.md | 10 - docs/gettsim_objects/index.md | 4 - docs/gettsim_objects/interface.md | 21 - docs/gettsim_objects/params.md | 24 - docs/rtd_environment.yml | 34 - pixi.lock | 2754 +++++++++++++++--- pyproject.toml | 48 +- sandbox/plots.ipynb | 13 +- src/_gettsim_tests/test_jittability.py | 2 +- src/ttsim/interface_dag.py | 14 +- src/ttsim/interface_dag_elements/__init__.py | 8 +- src/ttsim/plot_dag.py | 2 +- 13 files changed, 2419 insertions(+), 534 deletions(-) delete mode 100644 docs/gettsim_objects/functions.md delete mode 100644 docs/gettsim_objects/interface.md delete mode 100644 docs/gettsim_objects/params.md delete mode 100644 docs/rtd_environment.yml diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 140fd2691c..e8e61f41ac 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,10 +3,15 @@ version: 2 build: os: ubuntu-lts-latest tools: - python: mambaforge-latest -conda: - environment: docs/rtd_environment.yml -sphinx: - builder: html - configuration: docs/conf.py - fail_on_warning: false + python: '3.13' + jobs: + create_environment: + - asdf plugin add pixi + - asdf install pixi latest + - asdf global pixi latest + install: + # assuming you have an environment called "docs" + - pixi install -e docs + build: + html: + - pixi run -e docs sphinx-build -T -b html docs $READTHEDOCS_OUTPUT/html diff --git a/docs/gettsim_objects/functions.md b/docs/gettsim_objects/functions.md deleted file mode 100644 index c45fb2f0c6..0000000000 --- a/docs/gettsim_objects/functions.md +++ /dev/null @@ -1,10 +0,0 @@ -(functions)= - -# Policy functions in GETTSIM - -This section documents the internal functions provided by GETTSIM to model the tax and -transfer system. They are sorted alphabetically. - -You can click on the functions in the table to be redirected to the functions signature -further below. By clicking on the `source` hyperlink next to the function signatures, -you can see the full source code of the function. diff --git a/docs/gettsim_objects/index.md b/docs/gettsim_objects/index.md index 3369536083..e072aae856 100644 --- a/docs/gettsim_objects/index.md +++ b/docs/gettsim_objects/index.md @@ -6,9 +6,5 @@ This section documents the code inside GETTSIM. --- maxdepth: 1 --- -interface -functions -input_variables -params means_testing ``` diff --git a/docs/gettsim_objects/interface.md b/docs/gettsim_objects/interface.md deleted file mode 100644 index 50768ecec0..0000000000 --- a/docs/gettsim_objects/interface.md +++ /dev/null @@ -1,21 +0,0 @@ -# The interface of GETTSIM - -This section provides the documentation of the two interface functions. If you want to -have more information on how they work and how you can use them please see -{ref}`how_to_guides` and {ref}`tutorials`. - -```{eval-rst} -.. currentmodule:: ttsim.compute_taxes_and_transfers -``` - -```{eval-rst} -.. autofunction:: compute_taxes_and_transfers -``` - -```{eval-rst} -.. currentmodule:: ttsim.policy_environment -``` - -```{eval-rst} -.. autofunction:: set_up_policy_environment -``` diff --git a/docs/gettsim_objects/params.md b/docs/gettsim_objects/params.md deleted file mode 100644 index 9190f53cbb..0000000000 --- a/docs/gettsim_objects/params.md +++ /dev/null @@ -1,24 +0,0 @@ -(params_files)= - -# Parameter files - -The parameters of the tax and transfer system are stored in compartment specific -dictionaries. The {code}`params` argument created in -{func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>` -and then used in -{func}`compute_taxes_and_transfers <ttsim.compute_taxes_and_transfers.compute_taxes_and_transfers>` -is a dictionary of these compartment specific dictionaries. Thus it is a dictionary of -dictionaries, where the keys are the name of the compartment. The files from which -{func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>` -loads the default parameters for each year, can be found -[here](https://github.com/iza-institute-of-labor-economics/gettsim/tree/main/gettsim/parameters) -and are named by the compartment. Our current guidlines on how these files are set up -can be found in the GEP-2. - -Inside GETTSIM, functions don't operate with the full {code}`params` file and instead -just use each compartment specific parameter dictionary. The names of these dictionaries -are named by the structure {code}`compartment_name + _params`. The explicit names can be -found in the table below. GETTSIM reads the function arguments and selects the -corresponding part of the {code}`params` file. For GETTSIM to read and process the -arguments of functions correctly the {code}`compartment_name + _params` variables have -to be last inputs in the function signature. diff --git a/docs/rtd_environment.yml b/docs/rtd_environment.yml deleted file mode 100644 index a4a04dbec9..0000000000 --- a/docs/rtd_environment.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: gettsim-rtd -channels: - - conda-forge - - nodefaults -dependencies: - - python=3.11 - - pip - - ipywidgets - - jupyterlab - - # gettsim dependencies - - dags>=0.3.0 - - ipywidgets - - networkx - - numpy - - numpy_groupies - - pandas - - pip - - plotly>=5.24,<6 - - pygments - - pygraphviz - - pytest - - pyyaml - - # dependencies for building the documentation - - myst-parser - - nbsphinx - - pydata-sphinx-theme - - sphinx - - sphinx-automodapi<0.17.0 - - sphinx-copybutton - - pip: - - -e ../ diff --git a/pixi.lock b/pixi.lock index d5232ef7a9..4549f5aa4e 100644 --- a/pixi.lock +++ b/pixi.lock @@ -100,7 +100,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -156,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -180,13 +180,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -218,6 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -367,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -413,7 +414,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -436,15 +437,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -476,6 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -608,7 +610,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -654,7 +656,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -677,15 +679,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -717,6 +719,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -779,15 +782,1062 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: ./ + docs: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-automodapi-0.16.0-pyh6ff6d48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.7.0.2-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-automodapi-0.16.0-pyh6ff6d48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.7.0.2-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-automodapi-0.16.0-pyh6ff6d48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: ./ + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -807,9 +1857,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -820,7 +1870,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -828,20 +1878,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -851,98 +1901,110 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-automodapi-0.16.0-pyh6ff6d48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -953,24 +2015,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -988,8 +2050,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -997,16 +2059,16 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ mypy: channels: @@ -1108,7 +2170,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1164,7 +2226,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -1188,13 +2250,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1226,6 +2288,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -1380,7 +2443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1426,7 +2489,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -1449,15 +2512,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1489,6 +2552,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -1626,7 +2690,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1672,7 +2736,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -1695,15 +2759,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1735,6 +2799,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1868,7 +2933,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -1912,7 +2977,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -1934,13 +2999,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -1973,6 +3038,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -2136,7 +3202,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2192,7 +3258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -2216,13 +3282,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2254,6 +3320,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -2403,7 +3470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2449,7 +3516,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -2472,15 +3539,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2512,6 +3579,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -2644,7 +3712,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2690,7 +3758,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -2713,15 +3781,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2753,6 +3821,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -2881,7 +3950,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -2925,7 +3994,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -2947,13 +4016,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -2986,6 +4055,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -3144,7 +4214,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3200,7 +4270,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -3224,13 +4294,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3262,6 +4332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -3411,7 +4482,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3457,7 +4528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -3480,15 +4551,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3520,6 +4591,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -3652,7 +4724,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3698,7 +4770,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -3721,15 +4793,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3761,6 +4833,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -3889,7 +4962,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda @@ -3933,7 +5006,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda @@ -3955,13 +5028,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -3994,6 +5067,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -4065,7 +5139,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4079,7 +5153,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda @@ -4087,12 +5161,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda @@ -4118,7 +5192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4171,11 +5245,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py312hbc630d6_200.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -4229,7 +5303,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda @@ -4246,13 +5320,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4261,15 +5336,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -4283,27 +5358,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -4311,8 +5386,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -4334,14 +5409,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -4370,7 +5445,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -4378,13 +5453,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -4401,7 +5476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4413,7 +5488,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda @@ -4421,14 +5496,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4477,11 +5552,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -4521,7 +5596,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda @@ -4535,13 +5610,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4549,15 +5625,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -4571,27 +5647,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -4599,8 +5675,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -4621,14 +5697,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -4657,7 +5733,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -4665,13 +5741,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -4681,7 +5757,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4691,7 +5767,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda @@ -4699,13 +5775,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -4754,11 +5830,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -4794,7 +5870,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda @@ -4807,10 +5882,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -4818,15 +5893,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -4840,28 +5915,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -4869,8 +5944,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py312hd0c0319_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -4891,14 +5966,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -4910,7 +5985,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -4918,13 +5993,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -4934,7 +6009,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -4944,7 +6019,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda @@ -4952,13 +6027,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -5007,11 +6082,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -5047,7 +6122,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda @@ -5060,10 +6134,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -5071,15 +6145,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -5093,28 +6167,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -5122,8 +6196,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py312hcedbd36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -5144,14 +6218,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -5163,7 +6237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -5171,13 +6245,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -5186,7 +6260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -5195,21 +6269,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -5257,7 +6331,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -5290,7 +6364,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda @@ -5300,7 +6373,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -5310,14 +6383,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -5330,34 +6403,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -5379,15 +6452,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda @@ -5412,27 +6485,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -5621,7 +6694,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -5880,7 +6953,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6122,7 +7195,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6355,7 +7428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6483,6 +7556,18 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 +- conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda + sha256: 1307719f0d8ee694fc923579a39c0621c23fdaa14ccdf9278a5aac5665ac58e9 + md5: 74ac5069774cdbc53910ec4d631a3999 + depends: + - pygments + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/accessible-pygments?source=hash-mapping + size: 1326096 + timestamp: 1734956217254 - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda sha256: 63e532087119112c81d81c067e00d1fd49ff1b842ffea4469b78b505be63c042 md5: 11539f9e49efaa281da735ded100b152 @@ -6985,6 +8070,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 349867 timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 + md5: a32e0c069f6c3dcac635f7b0b0dac67e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=compressed-mapping + size: 351721 + timestamp: 1749230265727 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda sha256: e510ad1db7ea882505712e815ff02514490560fd74b5ec3a45a6c7cf438f754d md5: 2babfedd9588ad40c7113ddfe6a5ca82 @@ -7034,6 +8136,22 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 363178 timestamp: 1725267893889 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 + md5: 11489c0fc22f550acf63da5e7ec7304d + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h6e16a3a_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 367262 + timestamp: 1749230495846 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda sha256: b486b5d469bd412fcf5a49d50056a069d84d44f0762b64e18f5a3027b1871278 md5: b48636a1c2074e650b7a930e3a68f104 @@ -7067,6 +8185,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 339584 timestamp: 1725268241628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + sha256: 35df7079768b4c51764149c42b14ccc25c4415e4365ecc06c38f74562d9e4d16 + md5: c7c728df70dc05a443f1e337c28de22d + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h5505292_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=compressed-mapping + size: 339365 + timestamp: 1749230606596 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af md5: a83c2ef76ccb11bc2349f4f17696b15d @@ -7135,6 +8270,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 321874 timestamp: 1725268491976 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f + md5: a87a39f9eb9fd5f171b13d8c79f7a99a + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 h2466b09_3 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 321941 + timestamp: 1749231054102 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda sha256: 152e1f4bb8076b4f37a70e80dcd457a50e14e0bd5501351cd0fc602c5ef782a5 md5: a25f98cfd4eb1ac26325c1869f11edf5 @@ -7675,6 +8827,21 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 381728 timestamp: 1749833700835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda + sha256: fff058f8a145faed110680339ebbadfeb57b8ecb7164a415856d27f3c2fb6b1f + md5: c6fbd05ceaeed83ef044de66e3f26fef + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 372127 + timestamp: 1751548868805 - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda sha256: 69b0f5fe8f7f0f8ee3afb3d921e59ebd572accf059f949066edb7433c5e23c44 md5: 5efd7abeadb3e88a6a219066682942de @@ -7732,6 +8899,20 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 379153 timestamp: 1749833527306 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda + sha256: 5701b6a96a82d368f4fb7dbdb81a23c12deeb3d9c7c9af4287661de427b95776 + md5: cff69f4e178c2a18f45487bb8756570b + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 371093 + timestamp: 1751548869105 - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda sha256: 46ff39735c0a4f4d985da67bdf7590eb3dd694180acd45e50b396594c7ec05b8 md5: 855af2d2eb136ec60e572d8403775500 @@ -7791,6 +8972,21 @@ packages: - pkg:pypi/coverage?source=compressed-mapping size: 380492 timestamp: 1749833499891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda + sha256: 12ddfe26cfcb59297de81e8a24bfd9dacb98824b17ebc1fd7ad06f07993e6d27 + md5: 1c0c01571d606a8c2d9298712876c537 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + size: 373786 + timestamp: 1751548939736 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda sha256: 8c5481c4c55075daa925d1ae46f7e929ac7bcfef4244baf7147613babb1c7822 md5: e144bd6bff226c1d9f457fc19a44f831 @@ -7854,6 +9050,22 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 405028 timestamp: 1749833588845 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda + sha256: e1eca9b5dccb42fe3b6030cc6ec2a54a8ba62416dad77981a4d9e6db04d80db4 + md5: a210adf138c93e937a61548442be65b1 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=hash-mapping + size: 397923 + timestamp: 1751548946035 - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda sha256: ea883df3693de7df35ddfaa8b241aa31b304cf353e0ae269c1512d7f0e680d8b md5: ca4e891fc844d646fe0b5ebdb6d131fc @@ -7892,6 +9104,17 @@ packages: purls: [] size: 45861 timestamp: 1744323195619 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda + noarch: generic + sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a + md5: e5279009e7a7f7edd3cd2880c502b3cc + depends: + - python >=3.12,<3.13.0a0 + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 45852 + timestamp: 1749047748072 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda noarch: generic sha256: 058c8156ff880b1180a36b94307baad91f9130d0e3019ad8c7ade035852016fb @@ -8821,8 +10044,8 @@ packages: timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev149+g1bca1def.d20250707 - sha256: 6e4b1d747a09c493b5c1daf3772ddf89a981c1303a9b28738f4f8c14a576aacc + version: 0.7.1.dev473+gda336ccf.d20250708 + sha256: 200e42aa1bfcd4df812564cc1be2976981ea5e6a6432212a240d307b4c9aa58e requires_dist: - ipywidgets - networkx>=3.5,<4 @@ -9855,18 +11078,18 @@ packages: - pkg:pypi/jax?source=hash-mapping size: 1538293 timestamp: 1748688029463 -- pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl name: jaxlib version: 0.6.2 - sha256: b977604cd36c74b174d25ed685017379468138eb747d865f75e466cb273c801d + sha256: 921dbd4db214eba19a29ba9f2450d880e08b2b2c7b968f28cc89da3e62366af4 requires_dist: - scipy>=1.12 - numpy>=1.26 - ml-dtypes>=0.5.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py313h8f0a827_0.conda - sha256: bd6abb44e16ef94bad40a554ab6c23becca05093250d58f62f90c72cddddf5d6 - md5: a581353603f02b9c5b07da446b01b4b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda + sha256: 8941335debcba5835d378717cb5f691fe4e8749e179653c6fae7a39ad593f33d + md5: df8ebae58f002df33e6bb75394656a34 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* @@ -9876,10 +11099,10 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.21,<3 + - numpy >=1.19,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - jax >=0.6.0 @@ -9887,11 +11110,11 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 60644089 - timestamp: 1748673286014 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py313hb1b46e1_200.conda - sha256: a844966afa3cf9af2ec3a08fd31f605cf10db14217c93ff9877308718adfcf83 - md5: 8d7e109d11f32a6aab5fc954970f8687 + size: 60656001 + timestamp: 1748656526943 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py312hbc630d6_200.conda + sha256: d67fd06908390d26f5f507702d2260b0bd75cf27596bf6311e06c7020f710078 + md5: 3de8a21a60c5cc5775f5feb1ddcda18b depends: - __cuda - __glibc >=2.17,<3.0.a0 @@ -9920,10 +11143,10 @@ packages: - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - nccl >=2.26.6.1,<3.0a0 - - numpy >=1.21,<3 + - numpy >=1.19,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - jax >=0.6.0 @@ -9933,11 +11156,11 @@ packages: - pkg:pypi/jax-cuda12-pjrt?source=hash-mapping - pkg:pypi/jax-cuda12-plugin?source=hash-mapping - pkg:pypi/jaxlib?source=hash-mapping - size: 146979645 - timestamp: 1748672910601 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py313h0ee9c32_0.conda - sha256: e3ce3161e8dfe5214bc30077f808e3d70d0433891eecc27c3995e12c6712140a - md5: 7fbfdb825fd801801751c5f6c8828a21 + size: 147507034 + timestamp: 1748663899155 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda + sha256: 00bedbc1f41d96de00757fd79cda6c691e708c2cedce8aaabebda2006d728ef5 + md5: d2d260a9fdc8afbdffa9b3b9391dc70a depends: - __osx >=10.15 - libabseil * cxx17* @@ -9946,10 +11169,10 @@ packages: - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.21,<3 + - numpy >=1.19,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - jax >=0.6.0 @@ -9957,11 +11180,11 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 62943198 - timestamp: 1748652158666 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py313ha57edf9_0.conda - sha256: ee01e4530fc50b0ff2ff65967659b011e11ff12d82bdf9a3fab19c78c5401701 - md5: 63eed54ff1d03a21f0d4f3bac853d256 + size: 62923901 + timestamp: 1748651932948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda + sha256: b7d9ba3dd95f998e9c20c272293d06f570c7d6e101940acc4e62c1283d09a312 + md5: 694baa9a80a8229587db65e4063de530 depends: - __osx >=11.0 - libabseil * cxx17* @@ -9970,11 +11193,11 @@ packages: - libgrpc >=1.71.0,<1.72.0a0 - libzlib >=1.3.1,<2.0a0 - ml_dtypes >=0.2.0 - - numpy >=1.21,<3 + - numpy >=1.19,<3 - openssl >=3.5.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 - scipy >=1.9 constrains: - jax >=0.6.0 @@ -9982,8 +11205,8 @@ packages: license_family: APACHE purls: - pkg:pypi/jaxlib?source=hash-mapping - size: 51815557 - timestamp: 1748656482648 + size: 51803228 + timestamp: 1748652224641 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -10428,6 +11651,32 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 + md5: 1f5f3b0fcff308d8fbaa73c43af08e2f + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0 + - importlib-metadata >=4.8.3 + - ipykernel >=6.5.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.9 + - setuptools >=41.1.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyterlab?source=hash-mapping + size: 8593072 + timestamp: 1746536121732 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda sha256: a6efcdbe973e12bc8bd61aa26af77f733364975000c8fdaa0d6374338018e0db md5: dbd991d0080c48dae5113a27ab6d0d70 @@ -12368,6 +13617,17 @@ packages: purls: [] size: 88657 timestamp: 1723861474602 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33731 + timestamp: 1750274110928 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -13291,6 +14551,18 @@ packages: version: 1.1.0 sha256: 4f88541fe7f3c545561b754d86121abd9c6d4d8b312381046a78dcd794fddc7c requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/markdown-it-py?source=hash-mapping + size: 64430 + timestamp: 1733250550053 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 md5: 6565a715337ae279e351d0abd8ffe88a @@ -13495,6 +14767,29 @@ packages: - pkg:pypi/matplotlib-inline?source=hash-mapping size: 14467 timestamp: 1733417051523 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda + sha256: c63ed79d9745109c0a70397713b0c07f06e7d3561abcb122cfc80a141ab3b449 + md5: af2060041d4f3250a7eb6ab3ec0e549b + depends: + - markdown-it-py >=1.0.0,<4.0.0 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdit-py-plugins?source=hash-mapping + size: 42180 + timestamp: 1733854816517 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdurl?source=hash-mapping + size: 14465 + timestamp: 1733255681319 - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 md5: 7ec6576e328bc128f4982cd646eeba85 @@ -13519,10 +14814,10 @@ packages: purls: [] size: 103106385 timestamp: 1730232843711 -- pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl name: ml-dtypes version: 0.5.1 - sha256: fd918d4e6a4e0c110e2e05be7a7814d10dc1b95872accbf6512b80a109b71ae1 + sha256: 9626d0bca1fb387d5791ca36bacbba298c5ef554747b7ebeafefb4564fc83566 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -13535,50 +14830,50 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py313ha87cce1_0.conda - sha256: 99b0aed0c8c0f365ea35dded676fb19a106aac48b2a1ae5990de317f35dc8955 - md5: f30e252cdd2ecb7f2bb9a6e5f0c334de +- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda + sha256: 87928a36d350c470455a322c4c2b82266b88322d0fd5187ae8cc6fb5e3aad61f + md5: c45ac8395a27736c27b2e50b53ffe62c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - numpy >=1.21,<3 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 293551 - timestamp: 1736538997988 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py313h2e7108f_0.conda - sha256: 7538ec20c66991b55d08ab1984b6601ca9d4592a337f3956af220cca0ab78808 - md5: 528edd24e533daec77508f10cf597fd8 + size: 290991 + timestamp: 1736538940686 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda + sha256: 7a8fa9ae4dee10c522211734be6e53397b14deddd861826b5163f2358e9cb903 + md5: f14f61abbbb6a7882dfb5835d21a0f32 depends: - __osx >=10.13 - libcxx >=18 - - numpy >=1.21,<3 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 229597 - timestamp: 1736539182780 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py313h668b085_0.conda - sha256: fcc861786a58082b83cf3fb3fcba7b7f9bba7fbd63ebb30679dc06eddd245a8a - md5: 073b3b0e062b1f369297c9de7a786a87 + size: 227886 + timestamp: 1736539035640 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda + sha256: 17f70a0f345722e67f7437895a78cce84b758419f1c373186cec671607270747 + md5: d7a33fc18bf71480224e069be3072bbf depends: - __osx >=11.0 - libcxx >=18 - - numpy >=1.21,<3 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: MPL-2.0 AND Apache-2.0 purls: - pkg:pypi/ml-dtypes?source=hash-mapping - size: 201206 - timestamp: 1736539081874 + size: 200130 + timestamp: 1736539205286 - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl name: mypy version: 1.16.0 @@ -13644,6 +14939,23 @@ packages: version: 1.1.0 sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda + sha256: f035d0ea623f63247f0f944eb080eaa2a45fb5b7fda8947f4ac94d381ef3bf33 + md5: b528795158847039003033ee0db20e9b + depends: + - docutils >=0.19,<0.22 + - jinja2 + - markdown-it-py >=3.0.0,<4.0.0 + - mdit-py-plugins >=0.4.1,<1 + - python >=3.10 + - pyyaml + - sphinx >=7,<9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/myst-parser?source=hash-mapping + size: 73074 + timestamp: 1739381945342 - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl name: narwhals version: 1.44.0 @@ -13664,10 +14976,10 @@ packages: - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' - sqlframe>=3.22.0 ; extra == 'sqlframe' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/fe/a4/337a229d184b23ee63e6b730ac1588d77067af77c550dbf69cf1d74c3298/narwhals-1.45.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl name: narwhals - version: 1.45.0 - sha256: 0585612aa7ec89f9d061e78410b6fb8772794389d1a29d5799572d6b81999497 + version: 1.46.0 + sha256: f15d2255695d7e99f624f76aa5b765eb3fff8a509d3215049707af3a3feebc90 requires_dist: - cudf>=24.10.0 ; extra == 'cudf' - dask[dataframe]>=2024.8 ; extra == 'dask' @@ -13699,6 +15011,17 @@ packages: - pkg:pypi/nbclient?source=hash-mapping size: 28045 timestamp: 1734628936013 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda + sha256: 5480b7e05bf3079fcb7357a5a15a96c3a1649cc1371d0c468c806898a7e53088 + md5: aa90ea40c80d4bd3da35cb17ed668f22 + depends: + - nbconvert-core ==7.16.6 pyh29332c3_0 + - nbconvert-pandoc ==7.16.6 hed9df3c_0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5241 + timestamp: 1738067871725 - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda sha256: dcccb07c5a1acb7dc8be94330e62d54754c0e9c9cb2bb6865c8e3cfe44cf5a58 md5: d24beda1d30748afcc87c429454ece1b @@ -13729,6 +15052,17 @@ packages: - pkg:pypi/nbconvert?source=hash-mapping size: 200601 timestamp: 1738067871724 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda + sha256: 1e8923f1557c2ddb7bba915033cfaf8b8c1b7462c745172458102c11caee1002 + md5: 5b0afb6c52e74a7eca2cf809a874acf4 + depends: + - nbconvert-core ==7.16.6 pyh29332c3_0 + - pandoc + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5722 + timestamp: 1738067871725 - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 md5: bbe1963f1e47f594070ffe87cdf612ea @@ -13744,6 +15078,23 @@ packages: - pkg:pypi/nbformat?source=hash-mapping size: 100945 timestamp: 1733402844974 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.7-pyhd8ed1ab_0.conda + sha256: eb99d3f00e6d1fd2b07bb20a721a64deab97bccf38d9abc1d4a93e389daa9fb3 + md5: 9a3844478c73b5fe288426d001453261 + depends: + - docutils + - jinja2 + - nbconvert + - nbformat + - python >=3.6 + - sphinx + - traitlets + license: MIT + license_family: MIT + purls: + - pkg:pypi/nbsphinx?source=hash-mapping + size: 34324 + timestamp: 1741075538022 - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda sha256: d94d3252a0c1b893947e4e2cb3ff9184868645d6156dec6609c6832c3b5d9fe5 md5: cac7e04909de453bca7ef38beb28e3c5 @@ -13916,6 +15267,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 8545037 timestamp: 1749430954481 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + sha256: 731325aea31b3825c8c1b371f4314c096f7981de1c2cc276a7931f889b5bb6d8 + md5: 7e086a30150af2536a1059885368dcf0 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8364184 + timestamp: 1751342617648 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda sha256: 96b2ad622ac6521bb58586e9e671e49efe84988bc34a14cbd113b98c67728d5d md5: 3a155f4d1e110a7330c17ccdce55d315 @@ -13993,6 +15364,25 @@ packages: - pkg:pypi/numpy?source=compressed-mapping size: 7634474 timestamp: 1749431208151 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda + sha256: b06383b035b13ad7edaa307c56591604af4bc65c3c8ef8654534b376a82b7bd0 + md5: 81571392e3badcb8df4d02f143c59326 + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7644002 + timestamp: 1751342736297 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda sha256: a3a4c28b173227f32d99776212798b822deeef3907f87badc76b74931b27ed72 md5: 1bd9317ab52825bc8fa33a32ccc17935 @@ -14072,6 +15462,26 @@ packages: - pkg:pypi/numpy?source=compressed-mapping size: 6525213 timestamp: 1749430964570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda + sha256: b9c79d31c214964614e6c70606ff99c7993a1eb1b8743cba484b268a386a5c46 + md5: 84048f61fe33762c214055fb2df161f0 + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6504304 + timestamp: 1751342649896 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda sha256: 35346fa9da0a6a8776d4235469c1513b116d2ba3844802da00d5e821bb3e9828 md5: 3ed1eeb92906e8653c7346854c32dc6e @@ -14152,6 +15562,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6646194 timestamp: 1749431079208 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda + sha256: 2b0081eedda950026080f5e93fba915f73e75cf0c1c8e483a08cde82b3cf0a27 + md5: f11fc3fd4a1d4615cc84e50046c661ed + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7070261 + timestamp: 1751342914306 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda sha256: 4a07411ed54fda72f2bc800130f1f0d520591aa78eba5c5f39d092810a6e908e md5: 7d719836eecd25d2cf2bfb44c3c1be2c @@ -14179,11 +15609,24 @@ packages: - numpy - python >=3.9 license: BSD-2-Clause - license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping size: 38384 timestamp: 1747937493897 +- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 + md5: 5af206d64d18d6c8dfb3122b4d9e643b + depends: + - python >=3.9 + - sphinx >=6 + - tabulate >=0.8.10 + - tomli >=1.1.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpydoc?source=hash-mapping + size: 58041 + timestamp: 1733650959971 - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 md5: 66f9ba52d846feffa1c5d62522324b4f @@ -14193,7 +15636,6 @@ packages: - tomli >=1.1.0 - python license: BSD-3-Clause - license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping size: 60220 @@ -15565,6 +17007,38 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 13929307 timestamp: 1749100343118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda + sha256: 243c49b34caa9328e9d5f62c98be9eb046be8fee9836854b88d9022ce8013497 + md5: db0c1632047d38997559ce2c4741dd91 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 21704062 + timestamp: 1748609438645 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.7.0.2-h694c41f_0.conda + sha256: e81e9e988705861090f80bef7c84e72daeb8947b27c547d9450e28cae46132ad + md5: 5298c9bb35f2c09f47e55e444f02b3df + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 14781678 + timestamp: 1748609465341 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.7.0.2-hce30654_0.conda + sha256: 8cd35b1ff32538cd257be20f2adfd92f842cdd65a065650c8e3fc2d2a0acc773 + md5: 62031b5e240df47db4c26e672013587c + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 27400568 + timestamp: 1748609466843 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda + sha256: 7fff0deca558c5ab6c836127481decbec83c0add3a0ab2b81d1f10130146c357 + md5: a77c859d9469f24691d6c6590b56fa45 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + size: 25783551 + timestamp: 1748609806484 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -16276,6 +17750,35 @@ packages: purls: [] size: 110100 timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda + sha256: 073473ba9c0cc3946026dde9112d2edb0ac52f6cc35d2126f4bff8bad1cc74a6 + md5: 837aaf71ddf3b27acae0e7e9015eebc6 + depends: + - accessible-pygments + - babel + - beautifulsoup4 + - docutils !=0.17.0 + - pygments >=2.7 + - python >=3.9 + - sphinx >=6.1 + - typing_extensions + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pydata-sphinx-theme?source=hash-mapping + size: 1547597 + timestamp: 1734446468767 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=hash-mapping + size: 888600 + timestamp: 1736243563082 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -16497,6 +18000,21 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 489634 timestamp: 1736891165910 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + sha256: d4376eba59828c0134a439d5c82ee1d7a2dcd4f7c80878859b363865979b3f56 + md5: 5cdd230ab8467ca37570cd09a3977e17 + depends: + - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-core?source=hash-mapping + size: 484609 + timestamp: 1750207854345 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda sha256: 17d1aeea68b091508e2bc8e58023788dcd7592143c909ede5b634d059d930f30 md5: 6b77cb82a5311aa457295cec63adbbc8 @@ -16544,6 +18062,22 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 478921 timestamp: 1736891272846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + sha256: d4b1ae7f925720c1a6643c03199c6a47ba6a536bfd630f522baa5fe6ebf4a786 + md5: 02247b8a9ba52a15a53edd6d4cf9dac4 + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-core?source=hash-mapping + size: 474838 + timestamp: 1750207878592 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda sha256: 93fcab93a20f8776fb9340d19098f12a27c01283c0c96caac49dbeba27dd9652 md5: 4f7ff79ebe0f28877b62adced9e49acb @@ -16590,6 +18124,21 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 381786 timestamp: 1736927108218 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda + sha256: df309c1fd5a015d92c687200a10661a63955387620f61b1dd17a151d4a6ad4d1 + md5: dc83fce82c147af35c199348ce4938a6 + depends: + - __osx >=10.13 + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping + size: 380589 + timestamp: 1750225380233 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda sha256: f370c937cf20d0ef198f9ce1870ed61e6384d0fe4e85a01853d866ba86eb58ab md5: f9b008619c45d0381e0900912c4ff554 @@ -16637,6 +18186,22 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 383608 timestamp: 1736927118445 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + sha256: a6f262fe5706c73dce7ca7fbec9a055fc225422ad8d7fc45dd66ad9dddb0afe3 + md5: 5b7a58b273bca2c67dd8ddaea92e404e + depends: + - __osx >=11.0 + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping + size: 386128 + timestamp: 1750225477437 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda sha256: e2c40cc492a5e213b94e580ad8afd988ed4e4fb652046b3d65235e255a23b708 md5: 9b7a787178df2ffe1f0e4fee33b66045 @@ -16689,6 +18254,25 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda + sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 + md5: c3c9316209dec74a705a36797970c6be + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=hash-mapping + size: 259816 + timestamp: 1740946648058 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d md5: a49c2283f24696a7b30367b7346a0144 @@ -16706,9 +18290,23 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytest?source=hash-mapping - size: 276562 - timestamp: 1750239526127 + - pkg:pypi/pytest?source=hash-mapping + size: 276562 + timestamp: 1750239526127 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd + md5: 1e35d8f975bc0e984a19819aa91c440a + depends: + - coverage >=7.5 + - pytest >=4.6 + - python >=3.9 + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-cov?source=hash-mapping + size: 27565 + timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 md5: ce978e1b9ed8b8d49164e90a5cdc94cd @@ -16737,6 +18335,36 @@ packages: - pkg:pypi/pytest-profiling?source=hash-mapping size: 15889 timestamp: 1740145872989 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda + sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 + md5: 59aad4fb37cabc0bacc73cf344612ddd + depends: + - execnet >=2.1 + - pytest >=7.0.0 + - python >=3.9 + constrains: + - psutil >=3.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-xdist?source=hash-mapping + size: 38147 + timestamp: 1733240891538 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 + md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 + depends: + - execnet >=2.1 + - pytest >=7.0.0 + - python >=3.9 + constrains: + - psutil >=3.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-xdist?source=hash-mapping + size: 39210 + timestamp: 1748342202415 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda sha256: b7b58a5be090883198411337b99afb6404127809c3d1c9f96e99b59f36177a96 md5: 8375cfbda7c57fbceeda18229be10417 @@ -16806,6 +18434,33 @@ packages: purls: [] size: 31279179 timestamp: 1744325164633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d + md5: 94206474a5608243a10c92cefbe0908f + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 31445023 + timestamp: 1749050216615 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda build_number: 102 sha256: c2cdcc98ea3cbf78240624e4077e164dc9d5588eefb044b4097c3df54d24d504 @@ -16877,6 +18532,28 @@ packages: purls: [] size: 13783219 timestamp: 1744324415187 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b + md5: 06049132ecd09d0c1dc3d54d93cf1d5d + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 13571569 + timestamp: 1749049058713 - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda build_number: 102 sha256: 8b2f14010eb0baf04ed1eb3908c9e184cd14512c4d64c43f313251b90e75b345 @@ -16945,6 +18622,28 @@ packages: purls: [] size: 12932743 timestamp: 1744323815320 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + sha256: cde8b944c2dc378a5afbc48028d0843583fd215493d5885a80f1b41de085552f + md5: 9207ebad7cfbe2a4af0702c92fd031c4 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 13009234 + timestamp: 1749048134449 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda build_number: 102 sha256: ee1b09fb5563be8509bb9b29b2b436a0af75488b5f1fa6bcd93fe0fba597d13f @@ -17013,6 +18712,28 @@ packages: purls: [] size: 15941050 timestamp: 1744323489788 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e + md5: 6aa5e62df29efa6319542ae5025f4376 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 15829289 + timestamp: 1749047682640 - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda build_number: 102 sha256: 3de2b9f89b220cb779f6947cf87b328f73d54eed4f7e75a3f9337caeb4443910 @@ -17445,6 +19166,23 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 379554 timestamp: 1743831426292 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda + sha256: 8564a7beb906476813a59a81a814d00e8f9697c155488dbc59a5c6e950d5f276 + md5: 4b9a9cda3292668831cf47257ade22a6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 378610 + timestamp: 1749898590652 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda sha256: 6446721c43ba540c02ced4dde564f5a9a0131e40aa406e8af6313084c4a2024f md5: c912a00e5cb59357ef55b7930a48cf48 @@ -17494,6 +19232,22 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 365060 timestamp: 1743831517482 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda + sha256: 6a488eea1e0661e3b96634a254bf82f497ef800b0051510fcaea6d22c0dacd17 + md5: e5af6563b9fceeee0cba3b1863682a5f + depends: + - __osx >=10.13 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 363095 + timestamp: 1749898689287 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda sha256: a97ec0b43ec20c6730dd4765d033eeef7370364467190899aa554db1be4cff02 md5: 0dfe209a2803bf6c87f2bdbe92697c31 @@ -17544,6 +19298,23 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 364333 timestamp: 1743831518152 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda + sha256: 709c673d5b45774ce003648427103732c834a300447452a3c8369469e2aa6bfd + md5: 0ff6afa66b15299c051f57e5ec257e88 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 359326 + timestamp: 1749898793266 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda sha256: da722b8ee2785d764182c2d3b9007fb5ef8bc4096f5fc018fd3b3026719b1ee7 md5: 2cacb246854e185506768b3f7ae23a69 @@ -17595,6 +19366,23 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 363177 timestamp: 1743831815399 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + sha256: e66267a7a61bfba5cdb50089c04a6f140edb9133c5ce34331ee2f95370460b8c + md5: 37d6508caaa4c3a91e3434192d192685 + depends: + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zeromq >=4.3.5,<4.3.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364291 + timestamp: 1749899188003 - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda sha256: a5c2b81169250a6a6d292395c9f54aec3f13f6388b6c7b88d69451e96b2402bc md5: 4db98bb029ca5432eb1c2ddbff5837a9 @@ -17803,6 +19591,22 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 391302 timestamp: 1747837838085 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda + sha256: bb051358e7550fd8ef9129def61907ad03853604f5e641108b1dbe2ce93247cc + md5: 5b251d4dd547d8b5970152bae2cc1600 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=compressed-mapping + size: 389020 + timestamp: 1751467350968 - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda sha256: 1fcae82b7f316d2199113cae3f33664bf14c1244bbd7d33d57f81e8434886404 md5: ef99c1212c7a66b10920105e8636d1e7 @@ -17864,6 +19668,21 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 370871 timestamp: 1747837744984 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda + sha256: db18ba4141dbe15884b4c561321d79e1f7cd26156273aa50f004a65a6edcf936 + md5: 5a007039dde7ef3c00aad0ce02955404 + depends: + - python + - __osx >=10.13 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 369273 + timestamp: 1751467164542 - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda sha256: f686fda2556c7c548f9ae9e342fab5d1c1973e198acf91ac28d24f3b721acb2e md5: 1d9600ff9dfed62fc4e95b3e699dcea7 @@ -17927,6 +19746,22 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 360004 timestamp: 1747837756479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda + sha256: b22152ead8e06a489cc6ed03828b884bfccfa085d972a0420179757809d721fd + md5: 19681f34a4071b4380a986fc524fe1c4 + depends: + - python + - __osx >=11.0 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 357102 + timestamp: 1751467161700 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda sha256: 661349c89b3dd7234cf9a470f9b00f9284d5bf26f053e80ea288e0174e8ec907 md5: c911da8ab509760e4d30bc02c8d6935a @@ -17997,6 +19832,24 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 252641 timestamp: 1747837734433 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda + sha256: 665d771c3d4a028dc49c45e47634ef3adac80500ed6206ba6837885f02b0947f + md5: 353d4c6bd46906805189af9a7394b0d1 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + size: 250960 + timestamp: 1751467083088 - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda sha256: 3c4568a18a3b039fc87a83e9613768094cd0264bae6da248fab34aa080feb583 md5: 6bf2ea52f3e6cf2ee838e9ca3570a7ac @@ -18015,10 +19868,10 @@ packages: - pkg:pypi/rpds-py?source=compressed-mapping size: 250938 timestamp: 1751467095409 -- pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl name: scipy version: 1.16.0 - sha256: 79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe + sha256: adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49 requires_dist: - numpy>=1.25.2,<2.6 - pytest ; extra == 'test' @@ -18059,9 +19912,9 @@ packages: - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.11' -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py313h86fcf2b_0.conda - sha256: 75bee2b5cb27616bcbd700d42dacc06577b90f1f9e31dc7682f4244867982a78 - md5: 8c60fe574a5abab59cd365d32e279872 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda + sha256: 8406e26bf853e699b1ea97792f63987808783ff4ab6ddeff9cf1ec0b9d1aa342 + md5: 7513ac56209d27a85ffa1582033f10a8 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -18074,17 +19927,17 @@ packages: - numpy <2.6 - numpy >=1.23,<3 - numpy >=1.25.2 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 16727241 - timestamp: 1751148531084 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py313h7e69c36_0.conda - sha256: 6b85b8831917595fb06ae7e6200446dd1d9da5c9103838058408fe0e4c130485 - md5: ffba48a156734dfa47fabea9b59b7fa1 + size: 16847456 + timestamp: 1751148548291 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py312hd0c0319_0.conda + sha256: 4aab814a523927c14062a008fd2c42b91961a6e9d9adc54a18f9b49ffc058caf + md5: 713d61abff10ba1c063cf931ca5bac7d depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -18097,17 +19950,17 @@ packages: - numpy <2.6 - numpy >=1.23,<3 - numpy >=1.25.2 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 15306838 - timestamp: 1751149135933 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py313h9a24e0a_0.conda - sha256: b9ea57c3e26b1c5198c883db971463124fe9cda2da3d42954c059fe48b205151 - md5: d8334c85c9e8f1b55bee0c6526f7eb33 + size: 15221024 + timestamp: 1751148523429 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py312hcedbd36_0.conda + sha256: d0033c0414910c2bb6005e005e0df266a6c21e1928efec2df3251736245c1258 + md5: b3ab5755feaabeaf889063663790eb25 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -18120,15 +19973,15 @@ packages: - numpy <2.6 - numpy >=1.23,<3 - numpy >=1.25.2 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/scipy?source=hash-mapping - size: 14004890 - timestamp: 1751149424601 + size: 13846609 + timestamp: 1751148522848 - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 md5: 938c8de6b9de091997145b3bf25cdbf9 @@ -18333,6 +20186,30 @@ packages: - pkg:pypi/sphinx?source=hash-mapping size: 1424416 timestamp: 1740956642838 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-automodapi-0.16.0-pyh6ff6d48_0.conda + sha256: b6b002163c3135cdc69318c43f55d110a15df38c2bbc1a06e359ce3a36d9e8c2 + md5: c2dfb5d38d19546cf818d75801c21ed0 + depends: + - python >=3.7 + - sphinx >=4 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sphinx-automodapi?source=hash-mapping + size: 49062 + timestamp: 1692304668055 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_1.conda + sha256: 8cd892e49cb4d00501bc4439fb0c73ca44905f01a65b2b7fa05ba0e8f3924f19 + md5: bf22cb9c439572760316ce0748af3713 + depends: + - python >=3.9 + - sphinx >=1.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sphinx-copybutton?source=hash-mapping + size: 17893 + timestamp: 1734573117732 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba md5: 16e3f039c0aa6446513e94ab18a8784b @@ -18436,6 +20313,17 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 37554 + timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -18642,6 +20530,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849653 timestamp: 1747384561578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 + md5: c532a6ee766bed75c4fa0c39e959d132 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 850902 + timestamp: 1748003427956 - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda sha256: 282c9c3380217119c779fc4c432b0e4e1e42e9a6265bfe36b6f17f6b5d4e6614 md5: e9434a5155db25c38ade26f71a2f5a48 @@ -18682,6 +20584,19 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849286 timestamp: 1747384668864 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda + sha256: 6e97d6785c466ddd0fe3dad3aa54db6434824bcab40f7490e90943018560bf67 + md5: 62b3f3d78cb285b2090024e2a1e795f7 + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 850340 + timestamp: 1748003643552 - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda sha256: 16dc65432ce637d64475c4f02233be2d905edac9c1dba25419bfd5b8055d52b4 md5: 7554d07cbe64f41c73a403e99bccf3c6 @@ -18723,6 +20638,20 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 849071 timestamp: 1747384649681 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + sha256: 02835bf9f49a7c6f73622614be67dc20f9b5c2ce9f663f427150dc0579007daa + md5: 375a5a90946ff09cd98b9cf5b833023c + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 851614 + timestamp: 1748003575892 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda sha256: 29c623cfb1f9ea7c1d865cf5f52ae6faa6497ceddbe7841ae27901a21f8cf79f md5: 1ab3bef3e9aa0bba9eee2dfbedab1dba @@ -18767,6 +20696,21 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 853373 timestamp: 1747384811468 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + sha256: cec4ab331788122f7f01dd02f57f8e21d9ae14553dedd6389d7dfeceb3592399 + md5: 06b156bbbe1597eb5ea30b931cadaa32 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 853357 + timestamp: 1748003925528 - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda sha256: 4d5511a98b3450157f40479eb3d00bbf3c4741c97149e2914258f71715c5cb47 md5: a6a7c54e5dfc3bfad645e714cc14854c @@ -18803,6 +20747,16 @@ packages: - pkg:pypi/types-python-dateutil?source=hash-mapping size: 22634 timestamp: 1747417327584 +- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + sha256: 843bbc8e763a96b2b4ea568cf7918b6027853d03b5d8810ab77aaa9af472a6e2 + md5: b6d4c200582ead6427f49a189e2c6d65 + depends: + - python >=3.9 + license: Apache-2.0 AND MIT + purls: + - pkg:pypi/types-python-dateutil?source=hash-mapping + size: 24739 + timestamp: 1751956725061 - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl name: types-pytz version: 2025.2.0.20250516 diff --git a/pyproject.toml b/pyproject.toml index ab7c0a83a4..3daf7250a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,24 +90,23 @@ platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] # -------------------------------------------------------------------------------------- [tool.pixi.dependencies] +ipywidgets = "*" +jupyterlab = "*" +numpy_groupies = "*" +numpydoc = "*" +openpyxl = "*" +pandas = ">=2.3" +pre-commit = "*" +pygments = "*" +pygraphviz = "*" +pytest = "*" +pytest-cov = "*" +pytest-profiling = "*" +pytest-xdist = "*" python = ">=3.11,<3.14" -pre-commit = ">=4.2.0,<5" -pandas = ">=2.3.0,<3" -numpy_groupies = ">=0.11.3,<0.12" -numpydoc = ">=1.9.0,<2" -openpyxl = ">=3.1.5,<4" -ipywidgets = ">=8.1.7,<9" -jupyterlab = ">=4.4.4,<5" -pygments = ">=2.19.2,<3" -pygraphviz = ">=1.14,<2" -pyyaml = ">=6.0.2,<7" -toml = ">=0.10.2,<0.11" -pytest = ">=8.4.1,<9" -pytest-cov = ">=6.2.1,<7" -pytest-profiling = ">=1.8.1,<2" -pytest-xdist = ">=3.8.0,<4" -snakeviz = ">=2.2.2,<3" - +pyyaml = "*" +snakeviz = ">=2.2.2" +toml = "*" # Development Dependencies (pypi) # -------------------------------------------------------------------------------------- @@ -157,6 +156,14 @@ mypy = "~=1.16" types-PyYAML = "*" types-pytz = "*" +[tool.pixi.feature.docs.dependencies] +myst-parser = "*" +nbsphinx = "*" +pydata-sphinx-theme = "*" +sphinx = "*" +sphinx-automodapi = "<0.17.0" +sphinx-copybutton = "*" + # Tasks # -------------------------------------------------------------------------------------- @@ -176,12 +183,13 @@ mypy = "mypy --ignore-missing-imports" # -------------------------------------------------------------------------------------- [tool.pixi.environments] -mypy = ["mypy"] py311 = ["test", "py311"] py312 = ["test", "py312"] py313 = ["test", "py313"] -py312-jax = ["py313", "test", "jax"] -py312-cuda = ["py313", "test", "cuda"] +py312-jax = ["py312", "test", "jax"] +py312-cuda = ["py312", "test", "cuda"] +mypy = ["mypy"] +docs = ["docs", "py313"] # ====================================================================================== # Ruff configuration diff --git a/sandbox/plots.ipynb b/sandbox/plots.ipynb index a54d9341cd..b766625a92 100644 --- a/sandbox/plots.ipynb +++ b/sandbox/plots.ipynb @@ -25,7 +25,18 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from gettsim import MainTarget, main" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "main(main_target=MainTarget.date_str)" + ] } ], "metadata": { diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index 5b0d7d38c4..59e629f20a 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -66,7 +66,7 @@ def cached_specialized_environment( def test_jittable(tree_path, fun, backend, xnp): today = datetime.date.today() # noqa: DTZ011 date = min(fun.end_date, today) - qname = dt.qname_from_tree_path(*tree_path[:-2], fun.leaf_name) + qname = dt.qname_from_tree_path((*tree_path[:-2], fun.leaf_name)) env = {qname: cached_specialized_environment(date, GETTSIM_ROOT, backend)[qname]} processed_data = {} diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index e4ea0af4ee..2a7eeb552a 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -55,21 +55,21 @@ def main( date_str: DashedISOString | None = None, input_data: InputData | None = None, tt_targets: TTTargets | None = None, - backend: Literal["numpy", "jax"] | None = None, rounding: bool = True, + backend: Literal["numpy", "jax"] | None = None, fail_and_warn: bool = True, - orig_policy_objects: OrigPolicyObjects | None = None, - raw_results: RawResults | None = None, - results: Results | None = None, - specialized_environment: SpecializedEnvironment | None = None, - policy_environment: PolicyEnvironment | None = None, - processed_data: QNameData | None = None, date: datetime.date | None = None, policy_date_str: DashedISOString | None = None, evaluation_date_str: DashedISOString | None = None, policy_date: datetime.date | None = None, evaluation_date: datetime.date | None = None, + orig_policy_objects: OrigPolicyObjects | None = None, + policy_environment: PolicyEnvironment | None = None, + processed_data: QNameData | None = None, + specialized_environment: SpecializedEnvironment | None = None, + raw_results: RawResults | None = None, labels: Labels | None = None, + results: Results | None = None, ) -> dict[str, Any]: """ Main function that processes the inputs and returns the outputs. diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index ede3a4611c..eda089da4a 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -143,19 +143,20 @@ class Templates(MainTargetABC): @dataclass(frozen=True) class MainTarget(MainTargetABC): results: type[Results] = field(default=Results) - policy_environment: str = "policy_environment" templates: type[Templates] = field(default=Templates) - orig_policy_objects: type[OrigPolicyObjects] = field(default=OrigPolicyObjects) + policy_environment: str = "policy_environment" specialized_environment: type[SpecializedEnvironment] = field( default=SpecializedEnvironment ) + orig_policy_objects: type[OrigPolicyObjects] = field(default=OrigPolicyObjects) processed_data: str = "processed_data" raw_results: type[RawResults] = field(default=RawResults) labels: type[Labels] = field(default=Labels) + date_str: str = "date_str" input_data: type[InputData] = field(default=InputData) tt_targets: type[Targets] = field(default=Targets) + num_segments: str = "num_segments" backend: str = "backend" - date_str: str = "date_str" date: str = "date" evaluation_date_str: str = "evaluation_date_str" evaluation_date: str = "evaluation_date" @@ -163,7 +164,6 @@ class MainTarget(MainTargetABC): policy_date: str = "policy_date" xnp: str = "xnp" dnp: str = "dnp" - num_segments: str = "num_segments" rounding: str = "rounding" warn_if: type[WarnIf] = field(default=WarnIf) fail_if: type[FailIf] = field(default=FailIf) diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 8e40664c41..9c24444caf 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -214,7 +214,7 @@ def _qnames_of_idif_to_their_ancestors( """Get the qnames of the input dependent interface functions to their ancestors.""" idif_qname_to_idif_inputs: dict[str, list[str]] = {} for orig_p, orig_object in input_dependent_interface_functions.items(): - qname = dt.qname_from_tree_path(*orig_p[:-1], orig_object.leaf_name) + qname = dt.qname_from_tree_path((*orig_p[:-1], orig_object.leaf_name)) if qname not in idif_qname_to_idif_inputs: idif_qname_to_idif_inputs[qname] = [] ancestors = set(orig_object.include_if_all_inputs_present) | set( From e475e36ecfb352e326b18a7a7061188ec977672c Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 8 Jul 2025 13:45:24 +0200 Subject: [PATCH 061/109] Improve error message. --- src/ttsim/interface_dag_elements/fail_if.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 33d0f4439f..fd5a53acb0 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -668,7 +668,7 @@ def root_nodes_are_missing( ] if missing_nodes: - grouping_levels_in_missing_nodes = ( + grouping_levels_in_missing_nodes = tuple( lvl for lvl in labels__grouping_levels if any(qn.endswith(lvl) for qn in missing_nodes) @@ -681,8 +681,9 @@ def root_nodes_are_missing( msg += ( "\n\nNote that the missing nodes contain columns that are grouped by " f"the following grouping levels: {grouping_levels_in_missing_nodes}. " - "Consider passing the individual level columns instead, in which case " - "that the aggregation will be handled automatically." + "In some cases, it may be useful to consider passing the individual-" + "level columns instead, in which case the aggregation will be handled " + "automatically." ) raise ValueError(msg) From ceee61b30c89167244e2b39ebdc3bbfe1eb08d48 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 8 Jul 2025 21:55:32 +0200 Subject: [PATCH 062/109] Fix regex in tests. --- src/ttsim/interface_dag_elements/fail_if.py | 5 ++--- tests/ttsim/interface_dag_elements/test_failures.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index fd5a53acb0..6b2108cbc0 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -681,9 +681,8 @@ def root_nodes_are_missing( msg += ( "\n\nNote that the missing nodes contain columns that are grouped by " f"the following grouping levels: {grouping_levels_in_missing_nodes}. " - "In some cases, it may be useful to consider passing the individual-" - "level columns instead, in which case the aggregation will be handled " - "automatically." + "In some cases, it may be useful to pass the individual-level columns " + "instead, in which case the aggregation will be handled automatically." ) raise ValueError(msg) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index f0cfa4e3bb..168734bcd1 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -977,7 +977,7 @@ def a() -> int: with pytest.raises( ValueError, - match="Consider passing the individual level columns instead", + match="Note that the missing nodes contain columns that are grouped by ", ): main( input_data={"tree": minimal_input_data}, From 0f870c0bbf0d5cedae433fa8f35a7adb1d65c4a3 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sat, 12 Jul 2025 13:29:51 +0200 Subject: [PATCH 063/109] Remove `kind` input (#1007) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Closes #704 This PR attempts to remove the `kind` input variable. This is not a quick and innocent change because `kind` tells GETTSIM much about the role of group members when it comes to transfer eligibility. I chose the following tricks to get rid of `kind`: **Unterhalt** Innocent changes. **Elterngeld / Erziehungsgeld** I didn't want to use the Familiengemeinschaft concept too much because it is not part of the Elterngeldgesetz. I added `ist_leistungsbegründendes_kind` which is True for children that may give rise to an Elterngeld/Erziehungsgeld claim. I also added this concept to the Kindergeld, makes things much clearer IMO. Alternative: As below, analyse the `fg` structure and look for children. **ALG2** Use `ist_kind_in_bedarfsgemeinschaft` / `ist_kind_in_familiengemeinschaft` in order to tell which data raw refers to a child in the SGB II sense. Note that children who live in their own BG are now considered to be "adults" from the POV of GETTSIM's SGB II rules. See #1009. This might be correct or not. Before, users could specify this themselves via the `kind` input. But I doubt anyone did that and we didn't support it systematically, so I wouldn't worry about this too much. **Wohngeld** Innocent changes I believe. I removed a wrong if statement in `abzugsanteil_vom_einkommen_für_steuern_sozialversicherung` and an unnecessary check in `freibetrag_m_bis_2015`. **Kinderzuschlag** I replaced the `erwachsen` conditions with a condition derived from parent-child links (`hat_kind_in_gleicher_bedarfsgemeinschaft`). Again, treatment of children might be wrong here as children who live in their own BG are considered to be adults by GETTSIM. --- In general, we are very bad when it comes to children who claim transfers for themselves (KiZ, ALG2, Wohngeld). But this is a general problem of GETTSIM; this PR highlights it but doesn't make it worse. See issue #1009 and related ones (#750, ...) --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../tutorials/policy_functions.ipynb | 6 +- .../arbeitslosengeld_2/aggregations.py | 114 ++++--- .../arbeitslosengeld_2/arbeitslosengeld_2.py | 6 +- .../freibetr\303\244ge_verm\303\266gen.py" | 16 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 2 +- .../arbeitslosengeld_2/regelbedarf.py | 24 +- .../einkommensteuer/einkommensteuer.py | 4 +- .../einkommensteuer/kinderfreibetrag.py | 4 +- src/_gettsim/elterngeld/elterngeld.py | 87 ++--- src/_gettsim/elterngeld/geschwisterbonus.py | 12 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 65 ++-- src/_gettsim/familie/familie.py | 149 +++++++-- src/_gettsim/familie/inputs.py | 5 - src/_gettsim/grundsicherung/aggregations.py | 54 ++++ .../grundsicherung/im_alter/im_alter.py | 37 +-- ...aracteristics.py => hh_characteristics.py} | 8 +- src/_gettsim/kindergeld/kindergeld.py | 19 +- src/_gettsim/kinderzuschlag/einkommen.py | 30 +- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 22 +- src/_gettsim/unterhalt/unterhalt.py | 8 +- src/_gettsim/wohngeld/einkommen.py | 14 +- src/_gettsim/wohngeld/wohngeld.py | 6 +- .../2005-01-01/hh_id_8.yaml | 4 +- ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 3 - ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 3 - ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 4 - ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 4 - .../regelsatz_multiple_children.yaml | 6 - .../2005-01-01/regelsatz_no_adult_in_bg.yaml | 2 - .../2006-01-01/hh_id_4.yaml | 8 +- .../2009-01-01/hh_id_3.yaml | 5 +- .../2009-01-01/kind_20_jahre_in_bg.yaml | 5 +- .../2013-01-01/hh_id_12.yaml | 5 +- .../2013-01-01/hh_id_13.yaml | 5 +- .../2013-01-01/hh_id_14.yaml | 5 +- .../2013-01-01/hh_id_15.yaml | 5 +- .../2013-01-01/hh_id_2.yaml | 5 +- .../2018-01-01/hh_id_9.yaml | 8 +- .../2019-01-01/hh_id_6.yaml | 6 +- .../2019-01-01/test_age_limits_13_14.yaml | 6 +- .../2019-01-01/test_age_limits_5_6.yaml | 6 +- .../2022-01-01/hh_id_10.yaml | 6 +- .../2022-01-01/hh_id_11.yaml | 6 +- .../2023-01-01/hh_id_16.yaml | 4 +- .../2023-01-01/hh_id_19.yaml | 6 +- .../2023-01-01/hh_id_25.yaml | 6 +- .../2023-01-01/test_age_limits_17_18.yaml | 7 +- .../2023-01-01/test_family_high_wealth.yaml | 6 +- .../test_family_wealth_below_threshold.yaml | 6 +- .../2023-07-01/hh_id_20.yaml | 4 +- .../2023-07-01/hh_id_21.yaml | 6 +- .../2023-07-01/hh_id_22.yaml | 6 +- .../2023-07-01/hh_id_23.yaml | 6 +- .../2023-07-01/hh_id_24.yaml | 4 +- ...inerz_kein_kindergeld\303\274bertrag.yaml" | 6 +- ...nerz_teilw_kindergeld\303\274bertrag.yaml" | 6 +- ...erz_voller_kindergeld\303\274bertrag.yaml" | 6 +- .../kost_unterk_multiple_bg_in_hh.yaml | 10 - .../2024-01-01/kost_unterk_one_bg_in_hh.yaml | 5 - ...lbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml | 5 +- ..._fg_with_1_adult_1_kid_split_in_2_bgs.yaml | 5 +- ...bedarf_fg_with_2_adults_1_kid_in_1_bg.yaml | 6 +- ...fg_with_2_adults_1_kid_split_in_2_bgs.yaml | 6 +- .../regelsatz_multiple_children.yaml | 6 - .../2024-01-01/regelsatz_no_adult_in_bg.yaml | 2 - .../2024-01-01/single_no_income.yaml | 4 +- .../2024-01-01/skip_single_no_children.yaml | 4 +- .../2004-01-01/hh_id_11.yaml" | 2 - .../2005-01-01/hh_id_2.yaml" | 3 - .../2005-01-01/hh_id_5.yaml" | 2 - .../2005-01-01/hh_id_8.yaml" | 2 - .../2005-01-01/hh_id_9.yaml" | 2 - .../2010-01-01/hh_id_16.yaml" | 2 - .../2010-01-01/hh_id_3.yaml" | 2 - .../2010-01-01/hh_id_6.yaml" | 3 - .../2018-01-01/hh_id_15.yaml" | 2 - .../2020-01-01/hh_id_13.yaml" | 2 - .../2021-01-01/hh_id_12.yaml" | 2 - .../2022-01-01/hh_id_17.yaml" | 3 - .../2022-01-01/hh_id_18.yaml" | 3 - .../2023-01-01/hh_id_4.yaml" | 2 - .../2023-01-01/hh_id_7.yaml" | 2 - .../betrag/2009-01-01/hh_id_4.yaml | 2 - .../betrag/2012-01-01/hh_id_3.yaml | 2 - .../betrag/2015-01-01/hh_id_2.yaml | 4 - .../betrag/2018-01-01/couple_1_child.yaml | 6 +- .../betrag/2018-01-01/hh_id_1.yaml | 2 - .../betrag/2018-01-01/hh_id_5.yaml | 2 - .../betrag/2023-01-01/hh_id_6.yaml | 2 - .../betrag/2024-01-01/couple_1_child.yaml | 6 +- .../couple_above_soli_freibetrag.yaml | 3 - .../single_above_soli_freibetrag.yaml | 2 - .../single_below_soli_freibetrag.yaml | 2 - .../2010-01-01/hh_id_4.yaml" | 5 - .../2012-01-01/hh_id_2.yaml" | 2 - .../2016-01-01/hh_id_1.yaml" | 4 - .../skip_2019/hh_id_5.yaml" | 4 - .../2010-01-01/hh_id_1.yaml | 2 - .../2010-01-01/hh_id_2.yaml | 2 - .../2010-01-01/hh_id_3.yaml | 2 - .../2010-01-01/hh_id_4.yaml | 2 - .../2010-01-01/hh_id_5.yaml | 2 - .../2015-01-01/hh_id_16.yaml | 2 - .../2015-01-01/hh_id_17.yaml | 3 - .../2017-01-01/hh_id_18.yaml | 3 - .../2018-01-01/hh_id_10.yaml | 2 - .../2018-01-01/hh_id_11.yaml | 2 - .../2018-01-01/hh_id_12.yaml | 2 - .../2018-01-01/hh_id_7.yaml | 2 - .../2018-01-01/hh_id_8.yaml | 2 - .../2018-01-01/hh_id_9.yaml | 2 - .../2019-01-01/hh_id_13.yaml | 3 - .../2020-01-01/hh_id_14.yaml | 5 - .../2020-01-01/hh_id_19.yaml | 5 - .../2020-01-01/hh_id_20.yaml | 5 - .../elterngeld/2017-01-01/hh_id_2.yaml | 2 - .../elterngeld/2018-01-01/hh_id_1.yaml | 2 - .../elterngeld/2018-01-01/hh_id_2.yaml | 3 - .../elterngeld/2018-01-01/hh_id_3.yaml | 3 - .../elterngeld/2018-01-01/hh_id_4.yaml | 3 - .../elterngeld/2018-01-01/hh_id_6.yaml | 2 - .../elterngeld/2019-01-01/hh_id_1.yaml | 3 - .../elterngeld/2019-01-01/hh_id_3.yaml | 4 - .../elterngeld/2019-01-01/hh_id_5.yaml | 3 - .../elterngeld/2019-01-01/hh_id_6.yaml | 4 - .../elterngeld/2019-01-01/hh_id_7.yaml | 4 - .../elterngeld/2019-01-01/hh_id_8.yaml | 7 +- .../2024-01-01/income_during_elterngeld.yaml | 4 - .../2024-01-01/maximum_elterngeld.yaml | 3 - .../2024-01-01/minimum_elterngeld.yaml | 3 - .../net_income_before_birth_1000.yaml | 4 - .../net_income_before_birth_790.yaml | 4 - .../2024-01-01/replacement_rate_decrease.yaml | 4 - .../2024-04-01/taxable_income_low.yaml | 4 - .../2024-04-01/taxable_income_too_high.yaml | 4 - .../alleinerz_one_child_budgetsatz.yaml | 3 - ...inerz_one_child_regelsatz_high_income.yaml | 3 - ...einerz_one_child_regelsatz_low_income.yaml | 3 - ...ried_one_child_budgetsatz_high_income.yaml | 4 - ...rried_one_child_budgetsatz_low_income.yaml | 4 - .../married_one_child_regelsatz.yaml | 4 - ..._budgetsatz_and_regelsatz_high_income.yaml | 5 - ...n_budgetsatz_and_regelsatz_low_income.yaml | 7 +- .../2007-01-01/born_after_abolishment.yaml | 3 - ..._budgetsatz_and_regelsatz_high_income.yaml | 5 - ...n_budgetsatz_and_regelsatz_low_income.yaml | 5 - .../2019-01-01/hh_id_1.yaml | 7 +- .../2019-01-01/hh_id_2.yaml | 7 +- .../2019-01-01/hh_id_3.yaml | 4 +- .../2019-01-01/hh_id_4.yaml | 4 +- .../2019-01-01/hh_id_5.yaml | 4 +- .../2019-01-01/hh_id_6.yaml | 4 +- .../2019-01-01/hh_id_7.yaml | 4 +- .../2019-01-01/hh_id_8.yaml | 4 +- .../im_alter/2017-07-01/hh_id_13.yaml | 3 - .../im_alter/2017-07-01/hh_id_16.yaml | 2 - .../im_alter/2017-07-01/hh_id_17.yaml | 2 - .../im_alter/2017-07-01/hh_id_6.yaml | 3 - .../im_alter/2018-07-01/hh_id_12.yaml | 2 - .../im_alter/2018-07-01/hh_id_20.yaml | 2 - .../im_alter/2018-07-01/hh_id_22.yaml | 2 - .../im_alter/2018-07-01/hh_id_3.yaml | 2 - .../im_alter/2020-07-01/hh_id_18.yaml | 2 - .../im_alter/2020-07-01/hh_id_19.yaml | 3 - .../im_alter/2021-07-01/hh_id_1.yaml | 3 - .../im_alter/2021-07-01/hh_id_14.yaml | 2 - .../im_alter/2021-07-01/hh_id_15.yaml | 2 - .../im_alter/2021-07-01/hh_id_2.yaml | 2 - .../im_alter/2021-07-01/hh_id_21.yaml | 3 - .../im_alter/2021-07-01/hh_id_23.yaml | 3 - .../im_alter/2021-07-01/hh_id_5.yaml | 4 +- .../im_alter/2021-07-01/hh_id_7.yaml | 2 - .../im_alter/2021-07-01/hh_id_9.yaml | 3 - .../im_alter/2022-07-01/hh_id_10.yaml | 2 - .../im_alter/2022-07-01/hh_id_11.yaml | 2 - .../im_alter/2022-07-01/hh_id_24.yaml | 11 +- .../im_alter/2022-07-01/hh_id_25.yaml | 3 - .../im_alter/2022-07-01/hh_id_4.yaml | 3 - .../im_alter/2022-07-01/hh_id_8.yaml | 2 - .../2007-01-01/eltern_getrennt_1_kind.yaml | 2 +- .../2007-01-01/eltern_verheiratet_1_kind.yaml | 2 +- .../eltern_verheiratet_2_kinder.yaml | 2 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 2 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 2 +- .../2024-01-01/eltern_getrennt_1_kind.yaml | 2 +- .../2024-01-01/eltern_verheiratet_1_kind.yaml | 2 +- .../eltern_verheiratet_2_kinder.yaml | 2 +- ...t_2_kinder_1_kind_mit_anderem_partner.yaml | 2 +- ...03\237eltern_1_kind_eltern_unbekannt.yaml" | 2 +- .../kindergeld/2002-01-01/hh_id_2.yaml | 8 - .../kindergeld/2010-01-01/hh_id_4.yaml | 3 - .../kindergeld/2010-01-01/hh_id_6.yaml | 3 - .../kindergeld/2011-01-01/hh_id_7.yaml | 9 - .../kindergeld/2013-01-01/hh_id_8.yaml | 7 - .../kindergeld/2019-01-01/hh_id_0.yaml | 7 - .../kindergeld/2019-01-01/hh_id_1.yaml | 8 - .../kindergeld/2019-01-01/hh_id_3.yaml | 3 - .../kindergeld/2019-01-01/hh_id_5.yaml | 3 - .../kindergeld/2020-01-01/hh_id_10.yaml | 4 - .../kindergeld/2021-01-01/3_children.yaml | 7 - .../kindergeld/2021-01-01/hh_id_11.yaml | 5 - .../kindergeld/2021-01-01/hh_id_12.yaml | 3 - .../kindergeld/2023-01-01/hh_id_13.yaml | 7 - .../alleinerz_1_child_low_unterhalt.yaml | 4 - .../alleinerz_1_child_no_unterhalt.yaml | 4 - .../alleinerz_2_children_low_unterhalt.yaml | 5 - .../alleinerz_2_children_no_unterhalt.yaml | 5 - .../kinderzuschlag/2013-01-01/hh_id_2.yaml | 5 +- .../kinderzuschlag/2016-01-01/hh_id_1.yaml | 6 +- .../kinderzuschlag/2016-01-01/hh_id_11.yaml | 6 +- .../kinderzuschlag/2016-01-01/hh_id_12.yaml | 6 +- .../kinderzuschlag/2016-01-01/hh_id_13.yaml | 6 +- .../kinderzuschlag/2016-01-01/hh_id_7.yaml | 6 +- .../kinderzuschlag/2017-01-01/hh_id_9.yaml | 7 +- .../kinderzuschlag/2019-01-01/hh_id_6.yaml | 5 +- .../kinderzuschlag/2020-01-01/hh_id_8.yaml | 5 +- .../kinderzuschlag/2021-01-01/hh_id_10.yaml | 6 +- .../kinderzuschlag/2023-01-01/hh_id_14.yaml | 5 +- .../2023-01-01/test_child_income.yaml | 5 +- .../2023-01-01/test_family_high_wealth.yaml | 5 +- .../test_higher_wealth_exemptions.yaml | 5 +- ...test_bruttokaltmiete_mehrere_bg_in_hh.yaml | 6 +- .../2024-01-01/test_max_transfer.yaml | 5 +- .../kinderzuschlag/skip_2006/hh_id_4.yaml | 8 +- .../kinderzuschlag/skip_2009/hh_id_3.yaml | 5 +- .../1991-01-01/hh_id_2.yaml" | 2 - .../1993-01-01/hh_id_5.yaml" | 2 - .../1996-01-01/hh_id_6.yaml" | 2 - .../1999-01-01/hh_id_4.yaml" | 2 - .../2003-01-01/hh_id_3.yaml" | 2 - .../2022-01-01/hh_id_1.yaml" | 2 - .../2023-01-01/hh_id_7.yaml" | 2 - .../2024-01-01/couple_above_threshold.yaml" | 3 - .../2024-01-01/couple_below_threshold.yaml" | 3 - .../2024-01-01/single_above_threshold.yaml" | 2 - .../2024-01-01/single_below_threshold.yaml" | 2 - .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 5 +- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 4 +- .../2015-01-01/skip_hh_id_5.yaml | 5 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 4 +- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 4 +- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 5 +- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_10.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_11.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_12.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_2.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_3.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_4.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_5.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_6.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_7.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_8.yaml | 2 - .../rente/grundrente/2021-07-01/hh_id_9.yaml | 2 - .../grundrente/2021-07-01/married_couple.yaml | 3 - .../unterhalt/2023-01-01/hh_id_1.yaml | 5 +- .../unterhalt/2023-01-01/hh_id_2.yaml | 5 +- .../2006-01-01/hh_id_4.yaml" | 6 - .../2009-01-01/hh_id_3.yaml" | 3 - .../2013-01-01/hh_id_2.yaml" | 3 - .../2014-01-01/hh_id_7.yaml" | 3 - .../2016-01-01/hh_id_1.yaml" | 4 - .../2019-01-01/hh_id_6.yaml" | 3 - .../2019-01-01/hh_id_8.yaml" | 2 - .../wohngeld/2006-01-01/hh_id_15.yaml | 11 +- .../wohngeld/2006-01-01/hh_id_4.yaml | 8 +- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 5 +- .../wohngeld/2013-01-01/hh_id_2.yaml | 5 +- .../wohngeld/2013-01-01/hh_id_9.yaml | 5 +- .../wohngeld/2016-01-01/hh_id_1.yaml | 6 +- .../wohngeld/2018-01-01/hh_id_7.yaml | 16 +- .../wohngeld/2018-01-01/hh_id_8.yaml | 9 +- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 9 +- .../wohngeld/2019-01-01/hh_id_5.yaml | 4 +- .../wohngeld/2021-01-01/hh_id_10.yaml | 4 +- .../wohngeld/2023-01-01/hh_id_11.yaml | 6 +- .../wohngeld/2023-01-01/hh_id_12.yaml | 6 +- .../wohngeld/2023-01-01/hh_id_13.yaml | 8 +- .../wohngeld/2023-01-01/hh_id_14.yaml | 11 +- .../wohngeld/2023-01-01/hh_id_16.yaml | 9 +- .../wohngeld/2023-01-01/hh_id_17.yaml | 10 +- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 11 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 10 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 12 +- .../tt_dag_elements/test_vectorization.py | 296 ++++++++++++------ 286 files changed, 765 insertions(+), 1315 deletions(-) create mode 100644 src/_gettsim/grundsicherung/aggregations.py rename src/_gettsim/{household_characteristics.py => hh_characteristics.py} (73%) diff --git a/outdated_docs/tutorials/policy_functions.ipynb b/outdated_docs/tutorials/policy_functions.ipynb index 6fd67bcd33..ab103fdfc4 100644 --- a/outdated_docs/tutorials/policy_functions.ipynb +++ b/outdated_docs/tutorials/policy_functions.ipynb @@ -77,9 +77,9 @@ "source": [ "def arbeitslosengeld_2__betrag_m_bg(\n", " arbeitslosengeld_2__anspruchshöhe_m_bg,\n", - " erwachsene_alle_rentenbezieher_hh,\n", + " volljährige_alle_rentenbezieher_hh,\n", "):\n", - " if erwachsene_alle_rentenbezieher_hh:\n", + " if volljährige_alle_rentenbezieher_hh:\n", " out = 0.0\n", " else:\n", " out = arbeitslosengeld_2__anspruchshöhe_m_bg\n", @@ -370,7 +370,7 @@ "aggregate_by_p_id_kindergeld = {\n", " \"kindergeld__anzahl_ansprüche\": {\n", " \"p_id_to_aggregate_by\": \"kindergeld__p_id_empfänger\",\n", - " \"source\": \"kindergeld__grundsätzlich_anspruchsberechtigt\",\n", + " \"source\": \"kindergeld__ist_leistungsbegründendes_kind\",\n", " \"agg\": \"sum\",\n", " },\n", "}\n", diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index 776a831386..f1512e6e5f 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -2,53 +2,85 @@ from __future__ import annotations -from ttsim.tt_dag_elements import AggType, agg_by_group_function +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import ( + AggType, + agg_by_group_function, + join, + policy_function, +) + +if TYPE_CHECKING: + from ttsim.tt_dag_elements.typing import BoolColumn, IntColumn, ModuleType + + +@policy_function(start_date="2005-01-01") +def ist_kind_in_bedarfsgemeinschaft( + familie__p_id_elternteil_1: IntColumn, + familie__p_id_elternteil_2: IntColumn, + p_id: IntColumn, + bg_id: IntColumn, + xnp: ModuleType, +) -> BoolColumn: + """Child in a Bedarfsgemeinschaft.""" + bg_id_elternteil_1 = join( + foreign_key=familie__p_id_elternteil_1, + primary_key=p_id, + target=bg_id, + value_if_foreign_key_is_missing=-1, + xnp=xnp, + ) + bg_id_elternteil_2 = join( + foreign_key=familie__p_id_elternteil_2, + primary_key=p_id, + target=bg_id, + value_if_foreign_key_is_missing=-1, + xnp=xnp, + ) + in_gleicher_fg_wie_elternteil_1 = bg_id_elternteil_1 == bg_id + in_gleicher_fg_wie_elternteil_2 = bg_id_elternteil_2 == bg_id + return in_gleicher_fg_wie_elternteil_1 | in_gleicher_fg_wie_elternteil_2 + + +@policy_function(start_date="2005-01-01") +def ist_erwachsener_in_bedarfsgemeinschaft( + ist_kind_in_bedarfsgemeinschaft: bool, +) -> bool: + """Adult in a Bedarfsgemeinschaft.""" + return not ist_kind_in_bedarfsgemeinschaft -# TODO(@MImmesberger): Many of these keys can go once we have `_eg` for SGB XII. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_erwachsene_fg(familie__erwachsen: bool, fg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_fg(familie__kind: bool, fg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_bis_6_fg(familie__kind_bis_6: bool, fg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_bis_15_fg(familie__kind_bis_15: bool, fg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_bis_17_fg(familie__kind_bis_17: bool, fg_id: int) -> int: +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) +def anzahl_personen_bg(bg_id: int) -> int: pass @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_erwachsene_bg(familie__erwachsen: bool, bg_id: int) -> int: +def anzahl_erwachsene_bg( + ist_erwachsener_in_bedarfsgemeinschaft: bool, + bg_id: int, +) -> int: pass @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_bg(familie__kind: bool, bg_id: int) -> int: +def anzahl_kinder_bg(ist_kind_in_bedarfsgemeinschaft: bool, bg_id: int) -> int: pass -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) -def anzahl_personen_bg(bg_id: int) -> int: - pass +@policy_function(start_date="2005-01-01") +def ist_kind_bis_17_in_bedarfsgemeinschaft( + alter: int, ist_kind_in_bedarfsgemeinschaft: bool +) -> bool: + """Child under the age of 18 in Bedarfsgemeinschaft.""" + return ist_kind_in_bedarfsgemeinschaft and (alter <= 17) @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_bis_17_bg(familie__kind_bis_17: bool, bg_id: int) -> int: +def anzahl_kinder_bis_17_bg( + ist_kind_bis_17_in_bedarfsgemeinschaft: bool, bg_id: int +) -> int: pass @@ -57,16 +89,10 @@ def alleinerziehend_bg(familie__alleinerziehend: bool, bg_id: int) -> bool: pass -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_erwachsene_eg(familie__erwachsen: bool, eg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) -def anzahl_kinder_eg(familie__kind: bool, eg_id: int) -> int: - pass - - -@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) -def anzahl_personen_eg(eg_id: int) -> int: - pass +@policy_function(start_date="2005-01-01") +def hat_kind_in_gleicher_bedarfsgemeinschaft( + anzahl_kinder_bg: int, + ist_erwachsener_in_bedarfsgemeinschaft: bool, +) -> bool: + """Has a child in the same Bedarfsgemeinschaft.""" + return anzahl_kinder_bg >= 1 and ist_erwachsener_in_bedarfsgemeinschaft diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 6dd7077573..8129bd93a2 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -11,7 +11,7 @@ def betrag_m_bg( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg: bool, vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: bool, - erwachsene_alle_rentenbezieher_hh: bool, + volljährige_alle_rentenbezieher_hh: bool, ) -> float: """Calculate final monthly subsistence payment on household level. @@ -21,13 +21,13 @@ def betrag_m_bg( # Alter (SGB XII) is implemented yet. We assume for now that households with only # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is - # resolved, remove the `erwachsene_alle_rentenbezieher_hh` condition. + # resolved, remove the `volljährige_alle_rentenbezieher_hh` condition. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 if ( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg or vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg or vorrangprüfungen__wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg - or erwachsene_alle_rentenbezieher_hh + or volljährige_alle_rentenbezieher_hh ): out = 0.0 else: diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 5212d9fbb6..35e742990c 100644 --- "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -5,9 +5,11 @@ from ttsim.tt_dag_elements import policy_function +# TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 @policy_function(start_date="2005-01-01", end_date="2022-12-31") def grundfreibetrag_vermögen( - familie__kind: bool, + ist_kind_in_bedarfsgemeinschaft: bool, alter: int, geburtsjahr: int, maximaler_grundfreibetrag_vermögen: float, @@ -20,7 +22,7 @@ def grundfreibetrag_vermögen( threshold_years = list(vermögensgrundfreibetrag_je_lebensjahr.keys()) if geburtsjahr <= threshold_years[0]: out = next(iter(vermögensgrundfreibetrag_je_lebensjahr.values())) * alter - elif (geburtsjahr >= threshold_years[1]) and (not familie__kind): + elif (geburtsjahr >= threshold_years[1]) and (not ist_kind_in_bedarfsgemeinschaft): out = list(vermögensgrundfreibetrag_je_lebensjahr.values())[1] * alter else: out = 0.0 @@ -30,10 +32,12 @@ def grundfreibetrag_vermögen( # TODO(@MImmesberger): Parameter should be defined as a piecewise_constant. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/911 +# TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. +# https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 @policy_function(start_date="2005-01-01", end_date="2022-12-31") def maximaler_grundfreibetrag_vermögen( geburtsjahr: int, - familie__kind: bool, + ist_kind_in_bedarfsgemeinschaft: bool, obergrenze_vermögensgrundfreibetrag: dict[int, float], ) -> float: """Calculate maximal wealth exemptions by year of birth. @@ -42,7 +46,7 @@ def maximaler_grundfreibetrag_vermögen( """ threshold_years = list(obergrenze_vermögensgrundfreibetrag.keys()) obergrenzen = list(obergrenze_vermögensgrundfreibetrag.values()) - if familie__kind: + if ist_kind_in_bedarfsgemeinschaft: out = 0.0 else: if geburtsjahr < threshold_years[1]: @@ -101,7 +105,7 @@ def vermögensfreibetrag_bg_bis_2022( def vermögensfreibetrag_bg_ab_2023( anzahl_personen_bg: int, vermögensfreibetrag_in_karenzzeit_bg: float, - arbeitslosengeld_2_bezug_im_vorjahr: bool, + bezug_im_vorjahr: bool, vermögensfreibetrag_je_person_nach_karenzzeit: dict[str, float], ) -> float: """Calculate actual wealth exemptions since 2023. @@ -110,7 +114,7 @@ def vermögensfreibetrag_bg_ab_2023( Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ - if arbeitslosengeld_2_bezug_im_vorjahr: + if bezug_im_vorjahr: out = ( anzahl_personen_bg * vermögensfreibetrag_je_person_nach_karenzzeit["normaler_satz"] diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index 0fc6857d80..e331247cdb 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -7,7 +7,7 @@ @policy_input(start_date="2023-01-01") def bezug_im_vorjahr() -> bool: - """Received Arbeitslosengeld II / Bürgergeld in previous year.""" + """Whether the person received Arbeitslosengeld 2 / Bürgergeld in the previous year.""" # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index ec5ce08c65..de6b8eae63 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -10,7 +10,6 @@ get_consecutive_int_lookup_table_param_value, param_function, policy_function, - policy_input, ) if TYPE_CHECKING: @@ -37,9 +36,9 @@ def regelbedarf_m( @policy_function(start_date="2005-01-01") def mehrbedarf_alleinerziehend_m( familie__alleinerziehend: bool, - anzahl_kinder_bis_17_fg: int, - anzahl_kinder_bis_6_fg: int, - anzahl_kinder_bis_15_fg: int, + familie__anzahl_kinder_bis_17_fg: int, + familie__anzahl_kinder_bis_6_fg: int, + familie__anzahl_kinder_bis_15_fg: int, parameter_mehrbedarf_alleinerziehend: dict[str, float], ) -> float: """Mehrbedarf (additional need) for single parents as a share of the Regelsatz. @@ -54,13 +53,13 @@ def mehrbedarf_alleinerziehend_m( """ basis_mehrbedarf = ( parameter_mehrbedarf_alleinerziehend["basis_je_kind_bis_17"] - * anzahl_kinder_bis_17_fg + * familie__anzahl_kinder_bis_17_fg ) if ( - anzahl_kinder_bis_6_fg == 1 - or anzahl_kinder_bis_15_fg == 2 - or anzahl_kinder_bis_15_fg == 3 + familie__anzahl_kinder_bis_6_fg == 1 + or familie__anzahl_kinder_bis_15_fg == 2 + or familie__anzahl_kinder_bis_15_fg == 3 ): mehrbedarf = max( parameter_mehrbedarf_alleinerziehend["kind_bis_6_oder_2_3_kinder_bis_15"], @@ -274,11 +273,6 @@ def kosten_der_unterkunft_m_bis_2022( return berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m -@policy_input(start_date="2023-01-01") -def arbeitslosengeld_2_bezug_im_vorjahr() -> bool: - """Whether the person received Arbeitslosengeld 2 / Bürgergeld in the previous year.""" - - @policy_function( start_date="2023-01-01", leaf_name="kosten_der_unterkunft_m", @@ -286,7 +280,7 @@ def arbeitslosengeld_2_bezug_im_vorjahr() -> bool: def kosten_der_unterkunft_m_ab_2023( bruttokaltmiete_m: float, heizkosten_m: float, - arbeitslosengeld_2_bezug_im_vorjahr: bool, + bezug_im_vorjahr: bool, berechtigte_wohnfläche: float, anerkannte_warmmiete_je_qm_m: float, ) -> float: @@ -296,7 +290,7 @@ def kosten_der_unterkunft_m_ab_2023( Note: Since 2023, Arbeitslosengeld 2 is referred to as Bürgergeld. """ - if arbeitslosengeld_2_bezug_im_vorjahr: + if bezug_im_vorjahr: out = berechtigte_wohnfläche * anerkannte_warmmiete_je_qm_m else: out = bruttokaltmiete_m + heizkosten_m diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 268b9d6e52..7e0236eb81 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -40,7 +40,7 @@ def alleinerziehend_sn(familie__alleinerziehend: bool, sn_id: int) -> bool: @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_kindergeld_ansprüche_1( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, familie__p_id_elternteil_1: int, p_id: int, ) -> int: @@ -49,7 +49,7 @@ def anzahl_kindergeld_ansprüche_1( @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_kindergeld_ansprüche_2( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, familie__p_id_elternteil_2: int, p_id: int, ) -> int: diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index e9545b65fb..ded854cad8 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -42,7 +42,7 @@ def anzahl_kinderfreibeträge( @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_kinderfreibeträge_1( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, p_id_kinderfreibetragsempfänger_1: int, p_id: int, ) -> int: @@ -51,7 +51,7 @@ def anzahl_kinderfreibeträge_1( @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_kinderfreibeträge_2( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, p_id_kinderfreibetragsempfänger_2: int, p_id: int, ) -> int: diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 32f91768e3..e124154a72 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -11,47 +11,58 @@ ) -@agg_by_group_function(agg_type=AggType.ANY) -def kind_grundsätzlich_anspruchsberechtigt_fg( - kind_grundsätzlich_anspruchsberechtigt: bool, - fg_id: int, +@policy_function(start_date="2007-01-01") +def ist_leistungsbegründendes_kind( + alter_monate: int, + max_bezugsmonate: dict[str, int], ) -> bool: - pass - - -@agg_by_group_function(agg_type=AggType.SUM) -def anzahl_anträge_fg(claimed: bool, fg_id: int) -> int: - pass + """ + Determines whether the given person is considered a 'leistungsbegründendes Kind' + (benefit-establishing child) for the purpose of parental leave benefits. + A 'leistungsbegründende Person' is a person whose existence or characteristics give + rise to a potential entitlement to a transfer benefit. This person is not + necessarily the same as the benefit recipient or the one being evaluated for + eligibility. -@agg_by_p_id_function(agg_type=AggType.SUM) -def bezugsmonate_partner( - bisherige_bezugsmonate: int, - arbeitslosengeld_2__p_id_einstandspartner: int, - p_id: int, -) -> int: - pass + This function returns True if the person is young enough to give rise to a potential + Elterngeld claim. + """ + # TODO(@MImmesberger): This age threshold is not correct once we account for + # Elterngeld plus (currently not implemented). + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/151 + return ( + alter_monate + <= max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] + ) -@agg_by_group_function(agg_type=AggType.MIN) -def alter_monate_jüngstes_mitglied_fg(alter_monate: int, fg_id: int) -> float: +@agg_by_group_function(agg_type=AggType.ANY) +def leistungsbegründende_kinder_in_fg( + ist_leistungsbegründendes_kind: bool, + fg_id: int, +) -> bool: pass @agg_by_group_function(agg_type=AggType.SUM) -def anzahl_kinder_bis_2_fg(familie__kind_bis_2: bool, fg_id: int) -> int: +def anzahl_mehrlinge_jüngstes_kind_fg( + jüngstes_kind_oder_mehrling: bool, + fg_id: int, +) -> int: pass @agg_by_group_function(agg_type=AggType.SUM) -def anzahl_kinder_bis_5_fg(familie__kind_bis_5: bool, fg_id: int) -> int: +def anzahl_anträge_fg(claimed: bool, fg_id: int) -> int: pass -@agg_by_group_function(agg_type=AggType.SUM) -def anzahl_mehrlinge_jüngstes_kind_fg( - jüngstes_kind_oder_mehrling: bool, - fg_id: int, +@agg_by_p_id_function(agg_type=AggType.SUM) +def bezugsmonate_partner( + bisherige_bezugsmonate: int, + arbeitslosengeld_2__p_id_einstandspartner: int, + p_id: int, ) -> int: pass @@ -134,7 +145,7 @@ def anspruchshöhe_m( def grundsätzlich_anspruchsberechtigt_ohne_maximales_vorjahreseinkommen( claimed: bool, arbeitsstunden_w: float, - kind_grundsätzlich_anspruchsberechtigt_fg: bool, + leistungsbegründende_kinder_in_fg: bool, bezugsmonate_unter_grenze_fg: bool, max_arbeitsstunden_w: int, ) -> bool: @@ -142,7 +153,7 @@ def grundsätzlich_anspruchsberechtigt_ohne_maximales_vorjahreseinkommen( return ( claimed and arbeitsstunden_w <= max_arbeitsstunden_w - and kind_grundsätzlich_anspruchsberechtigt_fg + and leistungsbegründende_kinder_in_fg and bezugsmonate_unter_grenze_fg ) @@ -151,7 +162,7 @@ def grundsätzlich_anspruchsberechtigt_ohne_maximales_vorjahreseinkommen( def grundsätzlich_anspruchsberechtigt_mit_maximales_vorjahreseinkommen( claimed: bool, arbeitsstunden_w: float, - kind_grundsätzlich_anspruchsberechtigt_fg: bool, + leistungsbegründende_kinder_in_fg: bool, einkommen_vorjahr_unter_bezugsgrenze: bool, bezugsmonate_unter_grenze_fg: bool, max_arbeitsstunden_w: int, @@ -164,7 +175,7 @@ def grundsätzlich_anspruchsberechtigt_mit_maximales_vorjahreseinkommen( claimed and arbeitsstunden_w <= max_arbeitsstunden_w and einkommen_vorjahr_unter_bezugsgrenze - and kind_grundsätzlich_anspruchsberechtigt_fg + and leistungsbegründende_kinder_in_fg and bezugsmonate_unter_grenze_fg ) @@ -196,15 +207,6 @@ def bezugsmonate_unter_grenze_fg( return out -@policy_function(start_date="2007-01-01") -def kind_grundsätzlich_anspruchsberechtigt( - alter: int, - max_bezugsmonate: dict[str, int], -) -> bool: - """Child is young enough to give rise to Elterngeld claim.""" - return alter <= max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] - - @policy_function(start_date="2011-01-01") def lohnersatzanteil( nettoeinkommen_vorjahr_m: float, @@ -283,15 +285,16 @@ def anrechenbarer_betrag_m( @policy_function() def jüngstes_kind_oder_mehrling( alter_monate: int, - alter_monate_jüngstes_mitglied_fg: float, - familie__kind: bool, + familie__alter_monate_jüngstes_mitglied_fg: float, + ist_leistungsbegründendes_kind: bool, ) -> bool: """Check if person is the youngest child in the household or a twin, triplet, etc. of the youngest child. - # ToDo: replace familie__kind by some age restriction # ToDo: Check definition as relevant for Elterngeld. Currently, it is calculated as # ToDo: age not being larger than 0.1 of a month """ - return ((alter_monate - alter_monate_jüngstes_mitglied_fg) < 0.1) and familie__kind + return ( + (alter_monate - familie__alter_monate_jüngstes_mitglied_fg) < 0.1 + ) and ist_leistungsbegründendes_kind diff --git a/src/_gettsim/elterngeld/geschwisterbonus.py b/src/_gettsim/elterngeld/geschwisterbonus.py index cc5f00952e..eaa4b240fa 100644 --- a/src/_gettsim/elterngeld/geschwisterbonus.py +++ b/src/_gettsim/elterngeld/geschwisterbonus.py @@ -34,13 +34,17 @@ def mehrlingsbonus_m(anzahl_mehrlinge_fg: int, mehrlingsbonus_pro_kind: float) - @policy_function(start_date="2007-01-01") def geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg( - anzahl_kinder_bis_2_fg: int, - anzahl_kinder_bis_5_fg: int, + familie__anzahl_kinder_bis_2_fg: int, + familie__anzahl_kinder_bis_5_fg: int, geschwisterbonus_altersgrenzen: dict[int, int], ) -> bool: """Siblings that give rise to Elterngeld siblings bonus.""" - geschwister_unter_3 = anzahl_kinder_bis_2_fg >= geschwisterbonus_altersgrenzen[3] - geschwister_unter_6 = anzahl_kinder_bis_5_fg >= geschwisterbonus_altersgrenzen[6] + geschwister_unter_3 = ( + familie__anzahl_kinder_bis_2_fg >= geschwisterbonus_altersgrenzen[3] + ) + geschwister_unter_6 = ( + familie__anzahl_kinder_bis_5_fg >= geschwisterbonus_altersgrenzen[6] + ) return geschwister_unter_3 or geschwister_unter_6 diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index e727d498b8..5a7c431f40 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -8,6 +8,7 @@ from ttsim.tt_dag_elements import ( AggType, RoundingSpec, + agg_by_group_function, agg_by_p_id_function, param_function, policy_function, @@ -42,6 +43,14 @@ def einkommensgrenze( ) +@agg_by_group_function(end_date="2008-12-31", agg_type=AggType.ANY) +def leistungsbegründende_kinder_fg( + ist_leistungsbegründendes_kind: bool, + fg_id: int, +) -> bool: + pass + + @agg_by_p_id_function(end_date="2008-12-31", agg_type=AggType.SUM) def anspruchshöhe_m( anspruchshöhe_kind_m: float, @@ -89,7 +98,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> NotImplementedError: rounding_spec=RoundingSpec(base=0.01, direction="nearest"), ) def anspruchshöhe_kind_mit_budgetsatz_m( - kind_grundsätzlich_anspruchsberechtigt: bool, + ist_leistungsbegründendes_kind: bool, abzug_durch_einkommen_m: float, basisbetrag_m: float, ) -> float: @@ -100,7 +109,7 @@ def anspruchshöhe_kind_mit_budgetsatz_m( Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 """ - if kind_grundsätzlich_anspruchsberechtigt: + if ist_leistungsbegründendes_kind: out = max( basisbetrag_m - abzug_durch_einkommen_m, 0.0, @@ -160,10 +169,10 @@ def abzug_durch_einkommen_m( @policy_function( start_date="2004-01-01", end_date="2006-12-10", - leaf_name="kind_grundsätzlich_anspruchsberechtigt", + leaf_name="ist_leistungsbegründendes_kind", ) -def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( - familie__kind: bool, +def _leistungsbegründendes_kind_vor_abschaffung( + p_id_empfänger: bool, alter_monate: int, budgetsatz: bool, maximales_kindsalter_budgetsatz: float, @@ -174,10 +183,10 @@ def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) """ if budgetsatz: - out = familie__kind and alter_monate <= maximales_kindsalter_budgetsatz + out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_budgetsatz else: - out = familie__kind and alter_monate <= maximales_kindsalter_regelsatz + out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_regelsatz return out @@ -185,10 +194,10 @@ def _kind_grundsätzlich_anspruchsberechtigt_vor_abschaffung( @policy_function( start_date="2006-12-11", end_date="2008-12-31", - leaf_name="kind_grundsätzlich_anspruchsberechtigt", + leaf_name="ist_leistungsbegründendes_kind", ) -def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( - familie__kind: bool, +def _leistungsbegründendes_kind_nach_abschaffung( + p_id_empfänger: int, geburtsjahr: int, alter_monate: int, budgetsatz: bool, @@ -196,16 +205,24 @@ def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( maximales_kindsalter_budgetsatz: float, maximales_kindsalter_regelsatz: float, ) -> bool: - """Eligibility for parental leave benefit (Erziehungsgeld) on child level. Abolished - for children born after the cut-off date. + """ + Determines whether the given person is considered a 'leistungsbegründendes Kind' + (benefit-establishing child) for the purpose of parental leave benefits. + + A 'leistungsbegründende Person' is a person whose existence or characteristics give + rise to a potential entitlement to a transfer benefit. This person is not + necessarily the same as the benefit recipient or the one being evaluated for + eligibility. + + Abolished for children born after the cut-off date. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) """ if budgetsatz and geburtsjahr <= abolishment_cohort: - out = familie__kind and alter_monate <= maximales_kindsalter_budgetsatz + out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_budgetsatz elif geburtsjahr <= abolishment_cohort: - out = familie__kind and alter_monate <= maximales_kindsalter_regelsatz + out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_regelsatz else: out = False @@ -216,14 +233,14 @@ def _kind_grundsätzlich_anspruchsberechtigt_nach_abschaffung( @policy_function(start_date="2004-01-01", end_date="2008-12-31") def grundsätzlich_anspruchsberechtigt( arbeitsstunden_w: float, - kind_grundsätzlich_anspruchsberechtigt_fg: bool, + leistungsbegründende_kinder_fg: bool, maximale_wochenarbeitszeit: float, ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on parental level. Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.207) """ - return kind_grundsätzlich_anspruchsberechtigt_fg and ( + return leistungsbegründende_kinder_fg and ( arbeitsstunden_w <= maximale_wochenarbeitszeit ) @@ -231,8 +248,8 @@ def grundsätzlich_anspruchsberechtigt( @policy_function(start_date="2004-01-01", end_date="2008-12-31") def anzurechnendes_einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg: float, - arbeitslosengeld_2__anzahl_erwachsene_fg: int, - kind_grundsätzlich_anspruchsberechtigt: bool, + familie__anzahl_erwachsene_fg: int, + ist_leistungsbegründendes_kind: bool, pauschaler_abzug_vom_einkommen: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, ) -> float: @@ -243,11 +260,11 @@ def anzurechnendes_einkommen_y( There is special rule for "Beamte, Soldaten und Richter" which is not implemented yet. """ - if kind_grundsätzlich_anspruchsberechtigt: + if ist_leistungsbegründendes_kind: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale - * arbeitslosengeld_2__anzahl_erwachsene_fg + * familie__anzahl_erwachsene_fg ) * pauschaler_abzug_vom_einkommen else: out = 0.0 @@ -257,8 +274,8 @@ def anzurechnendes_einkommen_y( @policy_function(start_date="2004-01-01", end_date="2008-12-31") def einkommensgrenze_y( einkommensgrenze_ohne_geschwisterbonus: float, - arbeitslosengeld_2__anzahl_kinder_fg: float, - kind_grundsätzlich_anspruchsberechtigt: bool, + familie__anzahl_kinder_fg: float, + ist_leistungsbegründendes_kind: bool, aufschlag_einkommen: float, ) -> float: """Income threshold for parental leave benefit (Erziehungsgeld). @@ -267,9 +284,9 @@ def einkommensgrenze_y( """ out = ( einkommensgrenze_ohne_geschwisterbonus - + (arbeitslosengeld_2__anzahl_kinder_fg - 1) * aufschlag_einkommen + + (familie__anzahl_kinder_fg - 1) * aufschlag_einkommen ) - if not kind_grundsätzlich_anspruchsberechtigt: + if not ist_leistungsbegründendes_kind: out = 0.0 return out diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index 1fd6d67edd..0eb50feece 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -6,45 +6,152 @@ from __future__ import annotations -from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import AggType, agg_by_group_function, join, policy_function + +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.tt_dag_elements.typing import BoolColumn, IntColumn + + +@policy_function(vectorization_strategy="not_required") +def ist_kind_in_familiengemeinschaft( + p_id_elternteil_1: IntColumn, + p_id_elternteil_2: IntColumn, + p_id: IntColumn, + fg_id: IntColumn, + xnp: ModuleType, +) -> BoolColumn: + """ + Determines whether the given person is a child in a family group. + """ + fg_id_elternteil_1 = join( + foreign_key=p_id_elternteil_1, + primary_key=p_id, + target=fg_id, + value_if_foreign_key_is_missing=-1, + xnp=xnp, + ) + fg_id_elternteil_2 = join( + foreign_key=p_id_elternteil_2, + primary_key=p_id, + target=fg_id, + value_if_foreign_key_is_missing=-1, + xnp=xnp, + ) + in_gleicher_fg_wie_elternteil_1 = fg_id_elternteil_1 == fg_id + in_gleicher_fg_wie_elternteil_2 = fg_id_elternteil_2 == fg_id + return in_gleicher_fg_wie_elternteil_1 | in_gleicher_fg_wie_elternteil_2 + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_fg(ist_kind_in_familiengemeinschaft: bool, fg_id: int) -> int: + pass -@agg_by_group_function(agg_type=AggType.COUNT) -def anzahl_personen_ehe(ehe_id: int) -> int: +@policy_function() +def ist_kind_bis_2_in_familiengemeinschaft( + alter: int, ist_kind_in_familiengemeinschaft: bool +) -> bool: + """Child under the age of 3 in Familiengemeinschaft.""" + return ist_kind_in_familiengemeinschaft and (alter <= 2) + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_2_fg( + ist_kind_bis_2_in_familiengemeinschaft: bool, fg_id: int +) -> int: pass @policy_function() -def kind_bis_2(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 3.""" - return kind and (alter <= 2) +def ist_kind_bis_5_in_familiengemeinschaft( + alter: int, ist_kind_in_familiengemeinschaft: bool +) -> bool: + """Child under the age of 6 in Familiengemeinschaft.""" + return ist_kind_in_familiengemeinschaft and (alter <= 5) + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_kinder_bis_5_fg( + ist_kind_bis_5_in_familiengemeinschaft: bool, fg_id: int +) -> int: + pass @policy_function() -def kind_bis_5(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 6.""" - return kind and (alter <= 5) +def ist_kind_bis_6_in_familiengemeinschaft( + alter: int, ist_kind_in_familiengemeinschaft: bool +) -> bool: + """Child under the age of 7 in Familiengemeinschaft.""" + return ist_kind_in_familiengemeinschaft and (alter <= 6) + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_bis_6_fg( + ist_kind_bis_6_in_familiengemeinschaft: bool, fg_id: int +) -> int: + pass @policy_function() -def kind_bis_6(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 7.""" - return kind and (alter <= 6) +def ist_kind_bis_15_in_familiengemeinschaft( + alter: int, ist_kind_in_familiengemeinschaft: bool +) -> bool: + """Child under the age of 16 in Familiengemeinschaft.""" + return ist_kind_in_familiengemeinschaft and (alter <= 15) + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_bis_15_fg( + ist_kind_bis_15_in_familiengemeinschaft: bool, fg_id: int +) -> int: + pass @policy_function() -def kind_bis_15(alter: int, kind: bool) -> bool: - """Calculate if child under the age of 16.""" - return kind and (alter <= 15) +def ist_kind_bis_17_in_familiengemeinschaft( + alter: int, ist_kind_in_familiengemeinschaft: bool +) -> bool: + """Child under the age of 18 in Familiengemeinschaft.""" + return ist_kind_in_familiengemeinschaft and (alter <= 17) + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_bis_17_fg( + ist_kind_bis_17_in_familiengemeinschaft: bool, fg_id: int +) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_fg( + ist_erwachsener_in_familiengemeinschaft: bool, fg_id: int +) -> int: + pass + + +@agg_by_group_function(agg_type=AggType.MIN) +def alter_monate_jüngstes_mitglied_fg(alter_monate: int, fg_id: int) -> float: + pass @policy_function() -def kind_bis_17(alter: int, kind: bool) -> bool: - """Calculate if underage person.""" - return kind and (alter <= 17) +def volljährig(alter: int) -> bool: + """Person over the age of 18.""" + return alter >= 18 + + +@agg_by_group_function(agg_type=AggType.COUNT) +def anzahl_personen_ehe(ehe_id: int) -> int: + pass @policy_function() -def erwachsen(kind: bool) -> bool: - """Calculate if adult.""" - return not kind +def ist_erwachsener_in_familiengemeinschaft( + ist_kind_in_familiengemeinschaft: bool, +) -> bool: + """Person is an adult in the Familengemeinschaft.""" + return not ist_kind_in_familiengemeinschaft diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index 792b1c8d41..f345a26309 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -10,11 +10,6 @@ def alleinerziehend() -> bool: """Single parent.""" -@policy_input() -def kind() -> bool: - """Dependent child living with parents.""" - - @policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_ehepartner() -> int: """Identifier of married partner.""" diff --git a/src/_gettsim/grundsicherung/aggregations.py b/src/_gettsim/grundsicherung/aggregations.py new file mode 100644 index 0000000000..b33aac7e99 --- /dev/null +++ b/src/_gettsim/grundsicherung/aggregations.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + +from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function + +if TYPE_CHECKING: + from ttsim.tt_dag_elements import BoolColumn, IntColumn + + +@policy_function(vectorization_strategy="not_required") +def ist_kind_in_einstandsgemeinschaft(alter: IntColumn) -> BoolColumn: + """Determines whether the given person is a child in a Einstandsgemeinschaft. + + The 'child' definition follows §27 SGB XII. + """ + # TODO(@MImmesberger): This assumes that parents are part of the minor's (SGB XII) + # Einstandsgemeinschaft. This is not necessarily true. Rewrite once we refactor SGB + # XII. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 + return alter <= 17 + + +@policy_function() +def ist_erwachsener_in_einstandsgemeinschaft( + ist_kind_in_einstandsgemeinschaft: bool, +) -> bool: + """ + Determines whether the given person is an adult in a Einstandsgemeinschaft. + + The 'adult' definition follows §27 SGB XII. + """ + # TODO(@MImmesberger): This assumes that parents are part of the minor's + # Einstandsgemeinschaft. This is not necessarily true. Rewrite once we refactor SGB + # XII. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 + return not ist_kind_in_einstandsgemeinschaft + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_kinder_eg(ist_kind_in_einstandsgemeinschaft: bool, eg_id: int) -> int: + pass + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) +def anzahl_erwachsene_eg( + ist_erwachsener_in_einstandsgemeinschaft: bool, eg_id: int +) -> int: + pass + + +@agg_by_group_function(start_date="2005-01-01", agg_type=AggType.COUNT) +def anzahl_personen_eg(eg_id: int) -> int: + pass diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index c2809af2a7..2e2c2856a4 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -20,11 +20,11 @@ def betrag_m_eg( unterhalt__tatsächlich_erhaltener_betrag_m_eg: float, unterhaltsvorschuss__betrag_m_eg: float, einkommen_m_eg: float, - erwachsene_alle_rentenbezieher_hh: bool, + volljährige_alle_rentenbezieher_hh: bool, vermögen_eg: float, vermögensfreibetrag_eg: float, - arbeitslosengeld_2__anzahl_kinder_eg: int, - arbeitslosengeld_2__anzahl_personen_eg: int, + grundsicherung__anzahl_kinder_eg: int, + grundsicherung__anzahl_personen_eg: int, ) -> float: """Calculate Grundsicherung im Alter on household level. @@ -40,9 +40,9 @@ def betrag_m_eg( # `arbeitslosengeld_2__regelbedarf_m_bg` # https://github.com/iza-institute-of-labor-economics/gettsim/issues/702 - # TODO (@MImmesberger): Remove `arbeitslosengeld_2__anzahl_kinder_eg == - # arbeitslosengeld_2__anzahl_personen_eg` condition once - # `erwachsene_alle_rentenbezieher_hh`` is replaced by a more accurate + # TODO (@MImmesberger): Remove `grundsicherung__anzahl_kinder_eg == + # grundsicherung__anzahl_personen_eg` condition once + # `volljährige_alle_rentenbezieher_hh`` is replaced by a more accurate # variable. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/696 @@ -50,11 +50,8 @@ def betrag_m_eg( # Only pay Grundsicherung im Alter if all adults are retired (see docstring) if ( (vermögen_eg >= vermögensfreibetrag_eg) - or (not erwachsene_alle_rentenbezieher_hh) - or ( - arbeitslosengeld_2__anzahl_kinder_eg - == arbeitslosengeld_2__anzahl_personen_eg - ) + or (not volljährige_alle_rentenbezieher_hh) + or (grundsicherung__anzahl_kinder_eg == grundsicherung__anzahl_personen_eg) ): out = 0.0 else: @@ -74,7 +71,7 @@ def betrag_m_eg( @policy_function(start_date="2011-01-01") def mehrbedarf_schwerbehinderung_g_m( schwerbehindert_grad_g: bool, - arbeitslosengeld_2__anzahl_erwachsene_eg: int, + grundsicherung__anzahl_erwachsene_eg: int, mehrbedarf_bei_schwerbehinderungsgrad_g: float, grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, ) -> float: @@ -86,9 +83,9 @@ def mehrbedarf_schwerbehinderung_g_m( grundsicherung__regelbedarfsstufen.rbs_2 ) * mehrbedarf_bei_schwerbehinderungsgrad_g - if (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg == 1): + if (schwerbehindert_grad_g) and (grundsicherung__anzahl_erwachsene_eg == 1): out = mehrbedarf_single - elif (schwerbehindert_grad_g) and (arbeitslosengeld_2__anzahl_erwachsene_eg > 1): + elif (schwerbehindert_grad_g) and (grundsicherung__anzahl_erwachsene_eg > 1): out = mehrbedarf_in_couple else: out = 0.0 @@ -98,13 +95,13 @@ def mehrbedarf_schwerbehinderung_g_m( @policy_function(start_date="2005-01-01") def vermögensfreibetrag_eg( - arbeitslosengeld_2__anzahl_erwachsene_fg: int, - arbeitslosengeld_2__anzahl_kinder_fg: int, + familie__anzahl_kinder_fg: int, + familie__anzahl_erwachsene_fg: int, parameter_vermögensfreibetrag: dict[str, float], ) -> float: - """Calculate wealth not considered for Grundsicherung im Alter on household level.""" + """Calculate wealth not considered for Grundsicherung im Alter on household + level.""" return ( - parameter_vermögensfreibetrag["erwachsene"] - * arbeitslosengeld_2__anzahl_erwachsene_fg - + parameter_vermögensfreibetrag["kinder"] * arbeitslosengeld_2__anzahl_kinder_fg + parameter_vermögensfreibetrag["erwachsene"] * familie__anzahl_erwachsene_fg + + parameter_vermögensfreibetrag["kinder"] * familie__anzahl_kinder_fg ) diff --git a/src/_gettsim/household_characteristics.py b/src/_gettsim/hh_characteristics.py similarity index 73% rename from src/_gettsim/household_characteristics.py rename to src/_gettsim/hh_characteristics.py index 740d74d8e9..2432b38502 100644 --- a/src/_gettsim/household_characteristics.py +++ b/src/_gettsim/hh_characteristics.py @@ -4,7 +4,7 @@ @agg_by_group_function(agg_type=AggType.SUM) -def anzahl_erwachsene_hh(familie__erwachsen: bool, hh_id: int) -> int: +def anzahl_volljährige_hh(familie__volljährig: bool, hh_id: int) -> int: pass @@ -22,9 +22,9 @@ def anzahl_personen_hh(hh_id: int) -> int: @policy_function() -def erwachsene_alle_rentenbezieher_hh( - anzahl_erwachsene_hh: int, +def volljährige_alle_rentenbezieher_hh( + anzahl_volljährige_hh: int, anzahl_rentenbezieher_hh: int, ) -> bool: """Calculate if all adults in the household are pensioners.""" - return anzahl_erwachsene_hh == anzahl_rentenbezieher_hh + return anzahl_volljährige_hh == anzahl_rentenbezieher_hh diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index e0d4299453..b00ee9c954 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -22,7 +22,7 @@ @agg_by_p_id_function(agg_type=AggType.SUM) def anzahl_ansprüche( - grundsätzlich_anspruchsberechtigt: bool, + ist_leistungsbegründendes_kind: bool, p_id_empfänger: int, p_id: int, ) -> int: @@ -59,16 +59,16 @@ def betrag_gestaffelt_m( @policy_function( end_date="2011-12-31", - leaf_name="grundsätzlich_anspruchsberechtigt", + leaf_name="ist_leistungsbegründendes_kind", ) -def grundsätzlich_anspruchsberechtigt_nach_lohn( +def leistungsbegründendes_kind_nach_lohn( alter: int, in_ausbildung: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, altersgrenze: dict[str, int], maximales_einkommen_des_kindes: float, ) -> bool: - """Determine kindergeld eligibility for an individual child depending on kids wage. + """Child gives rise to a Kindergeld claim. Until 2011, there was an income ceiling for children returns a boolean variable whether a specific person is a child eligible for @@ -87,17 +87,16 @@ def grundsätzlich_anspruchsberechtigt_nach_lohn( @policy_function( start_date="2012-01-01", - leaf_name="grundsätzlich_anspruchsberechtigt", + leaf_name="ist_leistungsbegründendes_kind", ) -def grundsätzlich_anspruchsberechtigt_nach_stunden( +def leistungsbegründendes_kind_nach_stunden( alter: int, in_ausbildung: bool, arbeitsstunden_w: float, altersgrenze: dict[str, int], maximale_arbeitsstunden_des_kindes: float, ) -> bool: - """Determine kindergeld eligibility for an individual child depending on working - hours. + """Child gives rise to a Kindergeld claim. The current eligibility rule is, that kids must not work more than 20 hour and are below 25. @@ -113,10 +112,10 @@ def grundsätzlich_anspruchsberechtigt_nach_stunden( @policy_function() def kind_bis_10_mit_kindergeld( alter: int, - grundsätzlich_anspruchsberechtigt: bool, + ist_leistungsbegründendes_kind: bool, ) -> bool: """Child under the age of 11 and eligible for Kindergeld.""" - return grundsätzlich_anspruchsberechtigt and (alter <= 10) + return ist_leistungsbegründendes_kind and (alter <= 10) @policy_function(vectorization_strategy="not_required") diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index b5cc2b694c..c2b9fc6260 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -30,18 +30,16 @@ def anzahl_kinder_bg(kindergeld__anzahl_ansprüche: int, bg_id: int) -> int: @policy_function(start_date="2005-01-01") def bruttoeinkommen_eltern_m( arbeitslosengeld_2__bruttoeinkommen_m: float, - kindergeld__grundsätzlich_anspruchsberechtigt: bool, - familie__erwachsen: bool, + arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: bool, ) -> float: """Calculate parental gross income for calculation of child benefit. This variable is used to check whether the minimum income threshold for child benefit is met. """ - # TODO(@MImmesberger): Redesign the conditions in this function: False for adults - # who do not have Kindergeld claims. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 - if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__bruttoeinkommen_m else: out = 0.0 @@ -57,16 +55,14 @@ def bruttoeinkommen_eltern_m( ) def nettoeinkommen_eltern_m_mit_grober_rundung( arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, - kindergeld__grundsätzlich_anspruchsberechtigt: bool, - familie__erwachsen: bool, + arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: bool, ) -> float: """Parental income (after deduction of taxes, social insurance contributions, and other deductions) for calculation of child benefit. """ - # TODO(@MImmesberger): Redesign the conditions in this function: False for adults - # who do not have Kindergeld claims. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 - if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m else: out = 0.0 @@ -80,16 +76,14 @@ def nettoeinkommen_eltern_m_mit_grober_rundung( ) def nettoeinkommen_eltern_m_mit_genauer_rundung( arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m: float, - kindergeld__grundsätzlich_anspruchsberechtigt: bool, - familie__erwachsen: bool, + arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: bool, ) -> float: """Parental income (after deduction of taxes, social insurance contributions, and other deductions) for calculation of child benefit. """ - # TODO(@MImmesberger): Redesign the conditions in this function: False for adults - # who do not have Kindergeld claims. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/704 - if familie__erwachsen and (not kindergeld__grundsätzlich_anspruchsberechtigt): + # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. + # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m else: out = 0.0 diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index b3f417f067..e3d73759fa 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -140,7 +140,7 @@ def basisbetrag_m_bg_check_maximales_netteinkommen( maximales_nettoeinkommen_m_bg: float, basisbetrag_kind_m_bg: float, anzurechnendes_einkommen_eltern_m_bg: float, - arbeitslosengeld_2__anzahl_personen_bg: int, + arbeitslosengeld_2__anzahl_erwachsene_bg: int, ) -> float: """Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or Arbeitslosengeld 2 applies will be checked later. @@ -149,12 +149,12 @@ def basisbetrag_m_bg_check_maximales_netteinkommen( threshold. Kinderzuschlag is only paid out if parents are part of the BG - (arbeitslosengeld_2__anzahl_personen_bg > 1). + (arbeitslosengeld_2__anzahl_erwachsene_bg >= 1). """ if ( nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg - ) and arbeitslosengeld_2__anzahl_personen_bg > 1: + ) and arbeitslosengeld_2__anzahl_erwachsene_bg >= 1: out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) else: out = 0.0 @@ -174,7 +174,7 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen_und_maximales_nettoeinkommen( maximales_nettoeinkommen_m_bg: float, basisbetrag_kind_m_bg: float, anzurechnendes_einkommen_eltern_m_bg: float, - arbeitslosengeld_2__anzahl_personen_bg: int, + arbeitslosengeld_2__anzahl_erwachsene_bg: int, ) -> float: """Calculate Kinderzuschlag since 2005 until 06/2019. Whether Kinderzuschlag or Arbeitslosengeld 2 applies will be checked later. @@ -184,13 +184,13 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen_und_maximales_nettoeinkommen( threshold. Kinderzuschlag is only paid out if parents are part of the BG - (arbeitslosengeld_2__anzahl_personen_bg > 1). + (arbeitslosengeld_2__anzahl_erwachsene_bg >= 1). """ if ( (bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg) and (nettoeinkommen_eltern_m_bg <= maximales_nettoeinkommen_m_bg) - and arbeitslosengeld_2__anzahl_personen_bg > 1 + and arbeitslosengeld_2__anzahl_erwachsene_bg >= 1 ): out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) else: @@ -205,7 +205,7 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen( mindestbruttoeinkommen_m_bg: float, basisbetrag_kind_m_bg: float, anzurechnendes_einkommen_eltern_m_bg: float, - arbeitslosengeld_2__anzahl_personen_bg: int, + arbeitslosengeld_2__anzahl_erwachsene_bg: int, ) -> float: """Calculate Kinderzuschlag since 07/2019. Whether Kinderzuschlag or Arbeitslosengeld 2 applies will be checked later. @@ -214,12 +214,12 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen( minimum income threshold. Kinderzuschlag is only paid out if parents are part of the BG - (arbeitslosengeld_2__anzahl_personen_bg > 1). + (arbeitslosengeld_2__anzahl_erwachsene_bg >= 1). """ if ( bruttoeinkommen_eltern_m_bg >= mindestbruttoeinkommen_m_bg - ) and arbeitslosengeld_2__anzahl_personen_bg > 1: + ) and arbeitslosengeld_2__anzahl_erwachsene_bg >= 1: out = max(basisbetrag_kind_m_bg - anzurechnendes_einkommen_eltern_m_bg, 0.0) else: out = 0.0 @@ -229,7 +229,7 @@ def basisbetrag_m_bg_check_mindestbruttoeinkommen( @policy_function(start_date="2005-01-01") def basisbetrag_kind_m( - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, @@ -238,7 +238,7 @@ def basisbetrag_kind_m( entzugsrate_kindeseinkommen: float, ) -> float: """Kinderzuschlag after income for each possibly eligible child is considered.""" - out = kindergeld__grundsätzlich_anspruchsberechtigt * ( + out = kindergeld__ist_leistungsbegründendes_kind * ( satz - entzugsrate_kindeseinkommen * ( diff --git a/src/_gettsim/unterhalt/unterhalt.py b/src/_gettsim/unterhalt/unterhalt.py index 3a6facbda0..6c6a6382ab 100644 --- a/src/_gettsim/unterhalt/unterhalt.py +++ b/src/_gettsim/unterhalt/unterhalt.py @@ -9,15 +9,15 @@ def kind_festgelegter_zahlbetrag_m( anspruch_m: float, kindergeld__betrag_m: float, - familie__kind: bool, + familie__volljährig: bool, abzugsrate_kindergeld: dict[str, float], ) -> float: """Monthly actual child alimony payments to be received by the child after deductions. """ - if familie__kind: - abzugsrate = abzugsrate_kindergeld["minderjährig"] - else: + if familie__volljährig: abzugsrate = abzugsrate_kindergeld["volljährig"] + else: + abzugsrate = abzugsrate_kindergeld["minderjährig"] return anspruch_m - abzugsrate * kindergeld__betrag_m diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index 20da1ad036..e6356559eb 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -114,7 +114,6 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( einkommensteuer__betrag_y_sn: float, sozialversicherung__rente__beitrag__betrag_versicherter_y: float, sozialversicherung__kranken__beitrag__betrag_versicherter_y: float, - familie__kind: bool, abzugsbeträge_steuern_sozialversicherung: ConsecutiveIntLookupTableParamValue, ) -> float: """Calculate housing benefit subtractions on the individual level. @@ -131,11 +130,7 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( stufe = stufe + 1 if sozialversicherung__kranken__beitrag__betrag_versicherter_y > 0: stufe = stufe + 1 - if familie__kind: - out = 0.0 - else: - out = abzugsbeträge_steuern_sozialversicherung.look_up(stufe) - return out + return abzugsbeträge_steuern_sozialversicherung.look_up(stufe) @policy_function(end_date="2006-12-31", leaf_name="einkommen_vor_freibetrag_m") @@ -226,7 +221,6 @@ def freibetrag_m_bis_2015( ist_kind_mit_erwerbseinkommen: bool, behinderungsgrad: int, familie__alleinerziehend: bool, - familie__kind: bool, alleinerziehendenbonus: int, freibetrag_bei_behinderung_gestaffelt_y: PiecewisePolynomialParamValue, freibetrag_kinder_m: dict[str, float], @@ -249,7 +243,7 @@ def freibetrag_m_bis_2015( freibetrag_kinder_m["arbeitendes_kind"], ) - elif familie__alleinerziehend and (not familie__kind): + elif familie__alleinerziehend: freibetrag_kinder = ( alleinerziehendenbonus * freibetrag_kinder_m["alleinerziehend"] ) @@ -288,9 +282,9 @@ def freibetrag_m_ab_2016( @policy_function() def ist_kind_mit_erwerbseinkommen( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - kindergeld__grundsätzlich_anspruchsberechtigt: bool, + kindergeld__ist_leistungsbegründendes_kind: bool, ) -> bool: """Check if children are working.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m > 0 - ) and kindergeld__grundsätzlich_anspruchsberechtigt + ) and kindergeld__ist_leistungsbegründendes_kind diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index e7417e29db..9c05ecd705 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -53,7 +53,7 @@ def anzahl_personen_wthh(wthh_id: int) -> int: @policy_function() def betrag_m_wthh( anspruchshöhe_m_wthh: float, - erwachsene_alle_rentenbezieher_hh: bool, + volljährige_alle_rentenbezieher_hh: bool, vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh: bool, vorrangprüfungen__wohngeld_vorrang_wthh: bool, ) -> float: @@ -66,10 +66,10 @@ def betrag_m_wthh( # Alter (SGB XII) is implemented yet. We assume for now that households with only # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is - # resolved, remove the `erwachsene_alle_rentenbezieher_hh` condition. + # resolved, remove the `volljährige_alle_rentenbezieher_hh` condition. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 - if not erwachsene_alle_rentenbezieher_hh and ( + if not volljährige_alle_rentenbezieher_hh and ( vorrangprüfungen__wohngeld_vorrang_wthh or vorrangprüfungen__wohngeld_kinderzuschlag_vorrang_wthh ): diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml index bd8eccbbf4..812be118cd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml @@ -9,7 +9,7 @@ inputs: alter: - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index 86275f88dd..e0eece526d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -28,9 +28,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 204032954d..6ccbeea092 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -24,9 +24,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index d63ca832e7..825893dcf3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -29,10 +29,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 09eae02ef4..2c0d0fb1e0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -29,10 +29,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml index bb80f8cc02..ee496c6274 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_multiple_children.yaml @@ -33,12 +33,6 @@ inputs: - false - false - false - kind: - - false - - true - - true - - true - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml index 47aee23ee5..a1efa55c9e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/regelsatz_no_adult_in_bg.yaml @@ -17,8 +17,6 @@ inputs: familie: alleinerziehend: - false - kind: - - true p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml index 1c2f0711cd..831e1edd8f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml @@ -13,7 +13,7 @@ inputs: - 10 - 2 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -100,12 +100,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true p_id_ehepartner: - 6 - 5 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml index 7e6cf518f1..337c42872a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml @@ -10,7 +10,7 @@ inputs: - 28 - 1 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -58,9 +58,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index c090938ecd..a2bd195312 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -10,7 +10,7 @@ inputs: - 38 - 20 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -58,9 +58,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml index 0dc4bc32fa..540e6297b0 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml @@ -10,7 +10,7 @@ inputs: - 70 - 70 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -58,9 +58,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 26 - 25 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml index cc1c571f75..47bd13e12d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml @@ -10,7 +10,7 @@ inputs: - 40 - 70 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -58,9 +58,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 28 - 27 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index a75c298ffd..7409799333 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -12,7 +12,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -60,9 +60,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 36 - 35 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index f3843610d4..9c1b48f284 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -12,7 +12,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -60,9 +60,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 38 - 37 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml index dec4f7acf3..c7a08dac2f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml @@ -10,7 +10,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -58,9 +58,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 16 - 15 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml index de8f27b952..e2d850deb9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml @@ -13,7 +13,7 @@ inputs: - 8 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -100,12 +100,6 @@ inputs: - false - false - false - kind: - - false - - true - - true - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml index 4dec8e9aaf..17173ded18 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml @@ -11,7 +11,7 @@ inputs: - 8 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -72,10 +72,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml index a44a442983..ffeb1d6150 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml @@ -11,7 +11,7 @@ inputs: - 14 - 13 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -72,10 +72,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml index 7072a94d09..31b20fb862 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml @@ -11,7 +11,7 @@ inputs: - 6 - 5 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -72,10 +72,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index b33854b6b4..9712f59518 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -13,7 +13,7 @@ inputs: - 8 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index d439c9a779..75e8f0599d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -13,7 +13,7 @@ inputs: - 8 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml index 8281194f25..f62e270e54 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml @@ -9,7 +9,7 @@ inputs: alter: - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index 2ded081160..af6615e126 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -13,7 +13,7 @@ inputs: - 3 - 35 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - true - true - true @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 48 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index aec1562187..e2f18ff7f6 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -13,7 +13,7 @@ inputs: - 3 - 35 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - true - true - true @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 48 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index f05c676ba0..b342be0668 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -14,7 +14,7 @@ inputs: - 18 - 17 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -88,11 +88,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_ehepartner: - 44 - 43 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index 0cb03a6250..ab0dc9a7d4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -13,7 +13,7 @@ inputs: - 38 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 41 - 40 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index c877c373f9..2128fb1744 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -13,7 +13,7 @@ inputs: - 38 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 44 - 43 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml index 02632091b4..89abed0e88 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml @@ -9,7 +9,7 @@ inputs: alter: - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index c264c4ace3..5fb2200f85 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -13,7 +13,7 @@ inputs: - 38 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 51 - 50 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index ea3f4f4afc..9c77c02a62 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -13,7 +13,7 @@ inputs: - 38 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 54 - 53 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 33d9f81b71..7f02722f20 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -14,7 +14,7 @@ inputs: - 3 - 35 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - true - true - true @@ -75,10 +75,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 58 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml index 622e43db86..18f40b9438 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml @@ -9,7 +9,7 @@ inputs: alter: - 42 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" index db5cbd523c..4722243cda 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" @@ -17,7 +17,7 @@ inputs: - 10 - 8 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -74,10 +74,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" index ab3e95cee5..78455bc48e 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" @@ -14,7 +14,7 @@ inputs: - 10 - 8 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -75,10 +75,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" index 062f2c3972..26f957be4b 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" @@ -18,7 +18,7 @@ inputs: - 10 - 8 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -75,10 +75,6 @@ inputs: - true - false - false - kind: - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml index 4a7464a470..3a3ff8fa1d 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_multiple_bg_in_hh.yaml @@ -48,16 +48,6 @@ inputs: - false - false familie: - kind: - - false - - false - - false - - false - - true - - true - - true - - false - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml index 5be90561c8..12d9d9c9b7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/kost_unterk_one_bg_in_hh.yaml @@ -28,11 +28,6 @@ inputs: - false - false familie: - kind: - - false - - false - - true - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml index cb097ea71d..22fcfc05fb 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_in_1_bg.yaml @@ -11,7 +11,7 @@ inputs: - 40 - 10 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -31,9 +31,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml index 62e99ab7a8..7fcdb50534 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_1_adult_1_kid_split_in_2_bgs.yaml @@ -11,7 +11,7 @@ inputs: - 40 - 10 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -27,9 +27,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml index 9276a6d4c0..ddf7a66469 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_in_1_bg.yaml @@ -12,7 +12,7 @@ inputs: - 10 - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -33,10 +33,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml index 5941a2c69e..8a77b0db41 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelbedarf_fg_with_2_adults_1_kid_split_in_2_bgs.yaml @@ -12,7 +12,7 @@ inputs: - 10 - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -33,10 +33,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml index e4703c6dee..c3327e006f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_multiple_children.yaml @@ -39,12 +39,6 @@ inputs: - false - false - false - kind: - - false - - true - - true - - true - - true p_id_elternteil_1: - -1 - 0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml index 130646419f..207ce77bf5 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/regelsatz_no_adult_in_bg.yaml @@ -17,8 +17,6 @@ inputs: familie: alleinerziehend: - false - kind: - - true p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index b4f1c89a0d..d4bf523705 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -11,7 +11,7 @@ inputs: alter: - 45 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -48,8 +48,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index 294949e66d..3d8ab23d34 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -10,7 +10,7 @@ inputs: provided: alter: - 45 - arbeitslosengeld_2__arbeitslosengeld_2_bezug_im_vorjahr: + arbeitslosengeld_2__bezug_im_vorjahr: - false arbeitslosengeld_2__eigenbedarf_gedeckt: - false @@ -38,8 +38,6 @@ inputs: - 0.0 familie__alleinerziehend: - false - familie__kind: - - false familie__p_id_ehepartner: - -1 familie__p_id_elternteil_1: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" index b9a3c2cfe6..8177573862 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2004-01-01/hh_id_11.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" index 22a08bac39..6c12b8c88e 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_2.yaml" @@ -20,9 +20,6 @@ inputs: - true - true familie: - kind: - - false - - true p_id_ehepartner: - 3 - 2 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" index 4907a5f0a1..8fc3c15dee 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_5.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" index 5efd53ca75..7b19342198 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_8.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" index 0591cf5fdb..5825b38ac1 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2005-01-01/hh_id_9.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" index c3435b7598..2a92d79403 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_16.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" index 22dff328b4..a93453b503 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_3.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" index 364efa819a..fd28872b44 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2010-01-01/hh_id_6.yaml" @@ -20,9 +20,6 @@ inputs: - true - true familie: - kind: - - false - - true p_id_ehepartner: - 9 - 8 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" index e3192de5f9..5b0d53ac37 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2018-01-01/hh_id_15.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" index 9de229a0fa..cfdde6a2cd 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2020-01-01/hh_id_13.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" index 40bb61faad..9afac702bc 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2021-01-01/hh_id_12.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" index 32cb43a090..3833a0a4f8 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_17.yaml" @@ -20,9 +20,6 @@ inputs: - true - true familie: - kind: - - false - - false p_id_ehepartner: - 19 - 18 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" index 998799c1bb..e11d0e0885 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2022-01-01/hh_id_18.yaml" @@ -20,9 +20,6 @@ inputs: - true - true familie: - kind: - - false - - false p_id_ehepartner: - 21 - 20 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" index bb3099c2c4..1b06e2d43c 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_4.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" index 847dc3e681..7df11df87b 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/abz\303\274ge/vorsorgeaufwendungen/2023-01-01/hh_id_7.yaml" @@ -17,8 +17,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml index 6800af355d..240f8b3069 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2009-01-01/hh_id_4.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 42000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml index cf1db009a1..2ffde0581d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2012-01-01/hh_id_3.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 20000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml index 40cfb3bc18..e2689b9f3f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2015-01-01/hh_id_2.yaml @@ -26,10 +26,6 @@ inputs: - 5000.0 - 0.0 familie: - kind: - - false - - false - - true p_id_ehepartner: - 32 - 2 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml index a2e08770c7..605e79e0dc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/couple_1_child.yaml @@ -26,10 +26,6 @@ inputs: - 200000.0 - 0.0 familie: - kind: - - false - - false - - true p_id_ehepartner: - 6 - 5 @@ -47,7 +43,7 @@ inputs: - 4 - 4 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml index 7fc5ca487b..c2f02f5a25 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_1.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 5000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml index 626253e107..bb8f5fb49d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2018-01-01/hh_id_5.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 180000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml index 5fdc379a79..9e013ddb4c 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2023-01-01/hh_id_6.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 36000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml index 9795727d79..b1b96abf21 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_1_child.yaml @@ -26,10 +26,6 @@ inputs: - 200000.0 - 0.0 familie: - kind: - - false - - false - - true p_id_ehepartner: - 6 - 5 @@ -47,7 +43,7 @@ inputs: - 4 - 4 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml index 0336fc23a8..61c49dc065 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/couple_above_soli_freibetrag.yaml @@ -22,9 +22,6 @@ inputs: - 200000.0 - 200000.0 familie: - kind: - - false - - false p_id_ehepartner: - 4 - 3 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml index 5294702384..e0ac7155de 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_above_soli_freibetrag.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 100000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml index 8898234263..305622e870 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/betrag/2024-01-01/single_below_soli_freibetrag.yaml @@ -18,8 +18,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 50000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" index ae30e15d5a..434cffd310 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2010-01-01/hh_id_4.yaml" @@ -44,11 +44,6 @@ inputs: - 10.0 - 10.0 familie: - kind: - - false - - false - - true - - true p_id_ehepartner: - 6 - 5 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" index c0e6ef536c..b3822c146b 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2012-01-01/hh_id_2.yaml" @@ -23,8 +23,6 @@ inputs: zu_versteuerndes_einkommen_mit_kinderfreibetrag_y_sn: - 5000.0 familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" index c95c344093..b02f13ad9c 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -37,10 +37,6 @@ inputs: - 92752.0 - 0.0 familie: - kind: - - false - - false - - true p_id_ehepartner: - 2 - 1 diff --git "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" index ee79bf875a..fac9617f15 100644 --- "a/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/einkommensteuer/g\303\274nstigerpr\303\274fungen/skip_2019/hh_id_5.yaml" @@ -37,10 +37,6 @@ inputs: - 109740.0 - 0.0 familie: - kind: - - false - - false - - true p_id_ehepartner: - 10 - 9 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 09fb41c423..5f94c53542 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 71867f6946..2274ac59bb 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index cea2a5d5d0..9ccc92fc1a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 036ef3dae2..d218c9faec 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index c3b831575e..66e918d57e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index 0f21404f35..43af7e078f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index 220257fd24..2c4491275b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -68,9 +68,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 24 - 23 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index dfb023fbcc..31b0b6b21a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -68,9 +68,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 26 - 25 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index 433c130ca9..3c1e11befb 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index 7c29729539..42cbdb658c 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index 4b4afd88bb..df887e2299 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index 2a5420fe21..7c08af4767 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index 1c976c5526..8891955f4e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index ae1fda64c3..3a95560f4e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -51,8 +51,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index fa392a7e25..20dddcb012 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -68,9 +68,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index fe0997979b..b8aea40bec 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -102,11 +102,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_ehepartner: - 16 - 15 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index ab0dd1a247..919aacbfe0 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -102,11 +102,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_ehepartner: - 28 - 27 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 4ae34a4360..73329fd1c1 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -102,11 +102,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_ehepartner: - 32 - 31 diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index 190d6e0095..175aa9fe87 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -36,8 +36,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index d19e56f5f2..73666b624b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -34,8 +34,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index 24c053bbf2..5438204f5b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index b872a4d948..74ca7454ee 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 56 - 55 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index b36618d0aa..b2974b815c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - false - true - kind: - - true - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 6330cb6ad1..829f2e5cd7 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -34,8 +34,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index 5c12675352..bafbf7b3d2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index 9e656d8d5a..cd28c1befb 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index 7e221cb198..1d3a91cccb 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 76a224c6ec..93853a923d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -56,10 +56,6 @@ inputs: - false - false - true - kind: - - true - - true - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index fa942b10f2..d081a20217 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 72 - 71 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index 06396a81d9..5fec0c8aa3 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -12,7 +12,7 @@ inputs: - 0 - 43 alter_monate: - - 516 + - 12 - 0 - 0 - 516 @@ -67,11 +67,6 @@ inputs: - false - false - true - kind: - - true - - true - - true - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index 6538c73b55..a38c9a5890 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index 7e221cb198..1d3a91cccb 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index 5c12675352..bafbf7b3d2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -45,9 +45,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index f0bb7df6fc..5c9864da13 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 999882a64a..6d8d3bc118 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 56 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml index 9a44db463a..180ae79701 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml @@ -52,10 +52,6 @@ inputs: - false - false - false - kind: - - false - - true - - false p_id_ehepartner: - 2 - -1 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index b0d0b31e99..4f09776874 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 1 - 0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index e4b653e91b..f647c251d1 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -56,10 +56,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 1 - 0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml index c0f4a6d40d..84a132b9ac 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml @@ -42,9 +42,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 26 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml index d1d5c041d2..6ae8cdd575 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml @@ -42,9 +42,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 6 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml index de10484237..4392ff5a5e 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml @@ -42,9 +42,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml index b9ce2b833f..99a48038a0 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml @@ -52,10 +52,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml index e004fe24fe..f180dbcdc7 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml @@ -52,10 +52,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml index 42c4d9b438..d61de60e8c 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml @@ -52,10 +52,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 941c423ab6..c7afe63743 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -62,11 +62,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index 971a0f2461..a7fda1e314 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -62,11 +62,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_elternteil_1: - -1 - -1 @@ -118,7 +113,7 @@ inputs: - false provided: {} outputs: - arbeitslosengeld_2: + familie: anzahl_kinder_fg: - 2 - 2 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml index 830b7f7181..cea6ea40b1 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml @@ -42,9 +42,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 30 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 6ba9519110..676c13f47b 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -62,11 +62,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index e50ab48eed..b9b18680ee 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -62,11 +62,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index c5ae464c78..6e9393a0d3 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -12,7 +12,7 @@ inputs: - 37 - 49 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -138,11 +138,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index ffde0fc060..cd12021123 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -12,7 +12,7 @@ inputs: - 37 - 48 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -139,11 +139,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 7d0b50d0b0..9071e8e7e1 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -9,7 +9,7 @@ inputs: alter: - 51 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 753f0d61d9..0d189bf447 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -9,7 +9,7 @@ inputs: alter: - 55 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 9d5089af0d..d0828dcdf6 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -9,7 +9,7 @@ inputs: alter: - 52 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 6ec238d21f..255048bbfc 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -9,7 +9,7 @@ inputs: alter: - 68 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index ddcf7d6e46..cd1a544bda 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -9,7 +9,7 @@ inputs: alter: - 59 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index 5fe81971d2..784e13b3f5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -9,7 +9,7 @@ inputs: alter: - 60 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -67,8 +67,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index 4007ff81dc..cc50adebde 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -59,9 +59,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 18 - 17 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index c59f048699..4fef8a8103 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 08e4eb5edc..7015cb5738 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 4b316c6b21..3b39286bb1 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -55,9 +55,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 9 - 8 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index b34ba18b14..b77ed766a6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index d3a956e9fe..b1a173c8de 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index e5c9323328..f13100ec0b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 08dc204d41..5d37abf66e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index 4194924dbc..f0a8040a82 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index 839912de77..6829d3f168 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -55,9 +55,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 25 - 24 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 619c6dfad9..62c9451e16 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -55,9 +55,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 2 - 1 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index 84815f9c60..c626c03bff 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index 39fb23be2e..b5db5800d8 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 246ddb8129..787f3474d5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 88a3c8ab28..8a5ccf66c0 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -57,9 +57,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 28 - 27 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index 4a1353c2a3..7df1543889 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -57,9 +57,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 31 - 30 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 3a1a38aaa4..663b67a383 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -42,10 +42,10 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 + p_id_einstandspartner: + - -1 p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index 1979397fdd..5f7e60798b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index 52f486362c..f55ced73e6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -57,9 +57,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 13 - 12 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index cc014ba63d..2ee73da981 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index c7f8bf2382..a9b2bf3089 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -44,8 +44,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index f130e11e1c..612d4b83bd 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -14,8 +14,8 @@ inputs: - false - false p_id_einstandspartner: - - 33 - - 32 + - -1 + - -1 einkommensteuer: betrag_y_sn: - 0.0 @@ -55,12 +55,9 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - - 33 - - 32 + - -1 + - -1 p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 128db4da59..188ad95da5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -57,9 +57,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index 20ec1a9349..f370a3686c 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -55,9 +55,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 6 - 5 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 85871ae30f..49b1f261a5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -42,8 +42,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml index 49ab591f56..4ba0ab2fcb 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_getrennt_1_kind.yaml @@ -71,7 +71,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml index 0bc5571af6..7759c4a428 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_1_kind.yaml @@ -67,7 +67,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml index 9b3061995e..c72a3dfd95 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder.yaml @@ -81,7 +81,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index e0861ff20f..71a2fadeed 100644 --- a/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2007-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -86,7 +86,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 93cdc52861..679b862c84 100644 --- "a/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2007-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -62,7 +62,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml index 57070b9f5e..0ca9aca937 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_getrennt_1_kind.yaml @@ -58,7 +58,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml index 7f887bfd18..4877997811 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_1_kind.yaml @@ -54,7 +54,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml index 2f0b5cac69..ebd95f47c7 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder.yaml @@ -65,7 +65,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml index fbfd94ce51..6a47dfdc3f 100644 --- a/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml +++ b/src/_gettsim_tests/test_data/household_links/2024-01-01/eltern_verheiratet_2_kinder_1_kind_mit_anderem_partner.yaml @@ -65,7 +65,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" index 03aaa83934..5faaffb3d3 100644 --- "a/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" +++ "b/src/_gettsim_tests/test_data/household_links/2024-01-01/gro\303\237eltern_1_kind_eltern_unbekannt.yaml" @@ -62,7 +62,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml index fbc74c2641..cbccda6b6b 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2002-01-01/hh_id_2.yaml @@ -37,14 +37,6 @@ inputs: - 3000.0 - 3000.0 - 3000.0 - familie: - kind: - - false - - false - - false - - false - - true - - true hh_id: - 2 - 2 diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml index dc7ce4e606..469b807115 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_4.yaml @@ -17,9 +17,6 @@ inputs: - 700.0 gesamteinkommen_y: - 0.0 - familie: - kind: - - false hh_id: - 4 kindergeld: diff --git a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml index 382def3736..84f476d9a4 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2010-01-01/hh_id_6.yaml @@ -17,9 +17,6 @@ inputs: - 0.0 gesamteinkommen_y: - 0.0 - familie: - kind: - - false hh_id: - 6 kindergeld: diff --git a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml index 04cc3f9418..b24e6ca720 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2011-01-01/hh_id_7.yaml @@ -41,15 +41,6 @@ inputs: - 0.0 - 0.0 - 0.0 - familie: - kind: - - false - - true - - true - - true - - true - - true - - true hh_id: - 7 - 7 diff --git a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml index cfe8f86976..3cc8239bc2 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2013-01-01/hh_id_8.yaml @@ -33,13 +33,6 @@ inputs: - 200000.0 - 200000.0 - 200000.0 - familie: - kind: - - false - - false - - true - - true - - true hh_id: - 8 - 8 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml index f31bd3afeb..11e3c5a020 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_0.yaml @@ -33,13 +33,6 @@ inputs: - 3000.0 - 3000.0 - 3000.0 - familie: - kind: - - false - - false - - false - - false - - false hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml index 9234618e5f..95f9aec66a 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_1.yaml @@ -37,14 +37,6 @@ inputs: - 3000.0 - 3000.0 - 3000.0 - familie: - kind: - - false - - false - - false - - true - - true - - true hh_id: - 1 - 1 diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml index b5f88a4762..30fefbb8a4 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_3.yaml @@ -17,9 +17,6 @@ inputs: - 700.0 gesamteinkommen_y: - 0.0 - familie: - kind: - - false hh_id: - 3 kindergeld: diff --git a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml index e3150ee849..6999e67775 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2019-01-01/hh_id_5.yaml @@ -17,9 +17,6 @@ inputs: - 0.0 gesamteinkommen_y: - 0.0 - familie: - kind: - - false hh_id: - 5 kindergeld: diff --git a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml index f2435c0cac..b922baddd9 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2020-01-01/hh_id_10.yaml @@ -21,10 +21,6 @@ inputs: gesamteinkommen_y: - 0.0 - 0.0 - familie: - kind: - - false - - true hh_id: - 10 - 10 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml index da133f39d2..a88cfc1dc9 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/3_children.yaml @@ -33,13 +33,6 @@ inputs: - 0.0 - 0.0 - 0.0 - familie: - kind: - - false - - false - - true - - true - - true hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml index bd0ca1c59e..a8509a2964 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_11.yaml @@ -25,11 +25,6 @@ inputs: - 200000.0 - 200000.0 - 200000.0 - familie: - kind: - - false - - false - - true hh_id: - 11 - 11 diff --git a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml index dccedfcfca..595c7f2944 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2021-01-01/hh_id_12.yaml @@ -17,9 +17,6 @@ inputs: - 0.0 gesamteinkommen_y: - 0.0 - familie: - kind: - - false hh_id: - 12 kindergeld: diff --git a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml index 4a57f0cd23..3e99977d50 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2023-01-01/hh_id_13.yaml @@ -33,13 +33,6 @@ inputs: - 3000.0 - 3000.0 - 3000.0 - familie: - kind: - - false - - false - - true - - true - - true hh_id: - 13 - 13 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml index c92da5aa0d..ec06ade4c6 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_low_unterhalt.yaml @@ -12,10 +12,6 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - familie: - kind: - - false - - true hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml index c92da5aa0d..ec06ade4c6 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_1_child_no_unterhalt.yaml @@ -12,10 +12,6 @@ inputs: arbeitsstunden_w: - 40.0 - 0.0 - familie: - kind: - - false - - true hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml index fbdada159d..0e20035908 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_low_unterhalt.yaml @@ -14,11 +14,6 @@ inputs: - 40.0 - 0.0 - 0.0 - familie: - kind: - - false - - true - - true hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml index fbdada159d..0e20035908 100644 --- a/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml +++ b/src/_gettsim_tests/test_data/kindergeld/2024-01-01/alleinerz_2_children_no_unterhalt.yaml @@ -14,11 +14,6 @@ inputs: - 40.0 - 0.0 - 0.0 - familie: - kind: - - false - - true - - true hh_id: - 0 - 0 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml index 7673404c54..e5825a5ba5 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2013-01-01/hh_id_2.yaml @@ -10,7 +10,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -39,9 +39,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml index eccfb6fb78..54a7e30cb4 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_1.yaml @@ -11,7 +11,7 @@ inputs: - 30 - 2 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -48,10 +48,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml index 48b6443977..82d5ac2ad1 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_11.yaml @@ -11,7 +11,7 @@ inputs: - 40 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -48,10 +48,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml index 04ca099273..e201194907 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_12.yaml @@ -13,7 +13,7 @@ inputs: - 40 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -50,10 +50,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml index 547d5856a7..b025a72c19 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_13.yaml @@ -11,7 +11,7 @@ inputs: - 40 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -48,10 +48,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml index f57cb55a38..4d5f6caa96 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2016-01-01/hh_id_7.yaml @@ -11,7 +11,7 @@ inputs: - 30 - 2 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -48,10 +48,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml index c68e5b1d9c..5e0ed08f63 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2017-01-01/hh_id_9.yaml @@ -12,7 +12,7 @@ inputs: - 15 - 13 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -57,11 +57,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml index ec39d11eaa..8aec0f8b00 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2019-01-01/hh_id_6.yaml @@ -10,7 +10,7 @@ inputs: - 28 - 1 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -39,9 +39,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 16 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml index b9e15924f9..fcb684caba 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2020-01-01/hh_id_8.yaml @@ -10,7 +10,7 @@ inputs: - 38 - 15 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -39,9 +39,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 21 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml index 09a6ac954a..04254ddd1d 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2021-01-01/hh_id_10.yaml @@ -11,7 +11,7 @@ inputs: - 33 - 12 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -48,10 +48,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml index c91eeba816..3f339c5dc7 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/hh_id_14.yaml @@ -10,7 +10,7 @@ inputs: - 43 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -39,9 +39,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 39 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml index b69ea0ceec..48a5477190 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_child_income.yaml @@ -12,7 +12,7 @@ inputs: - 38 - 15 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -41,9 +41,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 45 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml index 307f27a17e..97e6410116 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_family_high_wealth.yaml @@ -12,7 +12,7 @@ inputs: - 43 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -41,9 +41,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 43 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml index c417a8d888..5cbd33e709 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2023-01-01/test_higher_wealth_exemptions.yaml @@ -12,7 +12,7 @@ inputs: - 43 - 11 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -41,9 +41,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 41 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml index a2346e9aac..9c4d19a542 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_bruttokaltmiete_mehrere_bg_in_hh.yaml @@ -19,7 +19,7 @@ inputs: - 0.0 - 0.0 - 0.0 - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -55,10 +55,6 @@ inputs: - true - false - false - kind: - - false - - true - - false p_id_elternteil_1: - -1 - 49 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml index 04eec5b8ed..8c60d06cb0 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/2024-01-01/test_max_transfer.yaml @@ -16,7 +16,7 @@ inputs: anspruchshöhe_m_bg: - 0.0 - 0.0 - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false bruttoeinkommen_m: @@ -44,9 +44,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 47 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml index 2fbdec3714..238be9971a 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2006/hh_id_4.yaml @@ -13,7 +13,7 @@ inputs: - 10 - 2 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -56,12 +56,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true p_id_elternteil_1: - -1 - -1 diff --git a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml index a7b16d8abf..333a1f0e90 100644 --- a/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/kinderzuschlag/skip_2009/hh_id_3.yaml @@ -10,7 +10,7 @@ inputs: - 28 - 1 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false eigenbedarf_gedeckt: @@ -35,9 +35,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_elternteil_1: - -1 - 6 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" index cc7af6ad0a..3c6a668b24 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1991-01-01/hh_id_2.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" index 205baf7218..b672f4e7f8 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1993-01-01/hh_id_5.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" index 5fbcb22451..7d4d71d96d 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1996-01-01/hh_id_6.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" index ccc7cf6965..4086d3b431 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/1999-01-01/hh_id_4.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" index e6f743b909..549646ba4f 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2003-01-01/hh_id_3.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" index 8173d0932b..6d96146845 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2022-01-01/hh_id_1.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" index c73908ce93..b7ab5aec29 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2023-01-01/hh_id_7.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" index e62f6a03a6..c7a70e7274 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_above_threshold.yaml" @@ -21,9 +21,6 @@ inputs: - true - true familie: - kind: - - false - - false p_id_ehepartner: - 1 - 0 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" index f0f8f9c193..f720bdaa3d 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/couple_below_threshold.yaml" @@ -18,9 +18,6 @@ inputs: - true - true familie: - kind: - - false - - false p_id_ehepartner: - 3 - 2 diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" index f6607429c8..f1676d537a 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_above_threshold.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" index 902dd83981..fc2119d441 100644 --- "a/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" +++ "b/src/_gettsim_tests/test_data/solidarit\303\244tszuschlag/2024-01-01/single_below_threshold.yaml" @@ -15,8 +15,6 @@ inputs: gemeinsam_veranlagt: - false familie: - kind: - - false p_id_ehepartner: - -1 hh_id: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index f72aa0cfae..b1169ed9cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - true sozialversicherung: @@ -36,9 +36,6 @@ inputs: - 2500.0 - 0.0 familie: - kind: - - false - - true p_id_elternteil_1: - -1 - 9 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index d320417775..4a0f517a5f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false sozialversicherung: arbeitslosen: @@ -28,8 +28,6 @@ inputs: bruttolohn_vorjahr_m: - 2300.0 familie: - kind: - - false p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml index 6ed57b340d..95eb147d52 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml @@ -5,7 +5,7 @@ info: source: none inputs: assumed: - kindergeld__grundsätzlich_anspruchsberechtigt: + kindergeld__ist_leistungsbegründendes_kind: - false - true sozialversicherung__arbeitslosen__mindestversicherungszeit_erreicht: @@ -30,9 +30,6 @@ inputs: einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: - 7000.0 - 0.0 - familie__kind: - - false - - true familie__p_id_elternteil_1: - -1 - 7 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index 5e8316133d..7e9d3349ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false sozialversicherung: arbeitslosen: @@ -28,8 +28,6 @@ inputs: bruttolohn_vorjahr_m: - 1000.0 familie: - kind: - - false p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 02736333cb..a918ee6c5e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false sozialversicherung: arbeitslosen: @@ -28,8 +28,6 @@ inputs: bruttolohn_vorjahr_m: - 2000.0 familie: - kind: - - false p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index 4c9be70c0c..acbe0e3bc3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - true - false sozialversicherung: @@ -36,9 +36,6 @@ inputs: - 0.0 - 3000.0 familie: - kind: - - true - - false p_id_elternteil_1: - 4 - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index d0c9ff7c60..2426596604 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -5,7 +5,7 @@ info: inputs: assumed: kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - true sozialversicherung: @@ -36,9 +36,6 @@ inputs: - 4000.0 - 0.0 familie: - kind: - - false - - true p_id_elternteil_1: - -1 - 5 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index 00260a134f..0c9e71003d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -32,8 +32,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 6a33227d50..cc3677e5fb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -31,8 +31,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index e4cca5bfef..071c6f6222 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -33,8 +33,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index ac5ba7c20c..950beaed9c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -30,8 +30,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 6ebb3a49d1..e501520800 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -32,8 +32,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index fb9b909984..df65585e2c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -33,8 +33,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index b44522e958..ab84abf463 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -32,8 +32,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index 09bcf45317..1a5c6768e9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -32,8 +32,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index c539cec3dd..0f1528aecb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -31,8 +31,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index b2d3c91a0d..5bae86312d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -31,8 +31,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 019e6005ab..04740b6801 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -31,8 +31,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 9713f44748..5ab8c055cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -33,8 +33,6 @@ inputs: renteneinkünfte_vorjahr_m: - 0.0 familie: - kind: - - false p_id_ehepartner: - -1 geburtsjahr: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml index c6293becc2..33510592b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -38,9 +38,6 @@ inputs: - 0.0 - 0.0 familie: - kind: - - false - - false p_id_ehepartner: - 1 - 0 diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml index 7761d9ad66..9c1caabb8f 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_1.yaml @@ -6,9 +6,8 @@ info: inputs: assumed: {} provided: - familie: - kind: - - true + alter: + - 12 hh_id: - 1 kindergeld: diff --git a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml index df182252ee..f426890745 100644 --- a/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/unterhalt/2023-01-01/hh_id_2.yaml @@ -6,9 +6,8 @@ info: inputs: assumed: {} provided: - familie: - kind: - - false + alter: + - 19 hh_id: - 2 kindergeld: diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" index 31d8b1adb4..90547f53db 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2006-01-01/hh_id_4.yaml" @@ -50,12 +50,6 @@ inputs: - 2281.0 - 2281.0 familie: - kind: - - false - - false - - true - - true - - true p_id_elternteil_1: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" index a9b35c1cf7..b1df62ed61 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2009-01-01/hh_id_3.yaml" @@ -29,9 +29,6 @@ inputs: - 1183.64 - 1183.64 familie: - kind: - - false - - true p_id_elternteil_1: - -1 - 6 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" index 479230ef73..122b02a177 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2013-01-01/hh_id_2.yaml" @@ -29,9 +29,6 @@ inputs: - 1170.0 - 1170.0 familie: - kind: - - false - - false p_id_elternteil_1: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" index 0ad3cd48fa..2721ef2cce 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2014-01-01/hh_id_7.yaml" @@ -29,9 +29,6 @@ inputs: - 1046.0 - 1046.0 familie: - kind: - - false - - false p_id_elternteil_1: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" index 6cf2ae899c..3f03c1bf06 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2016-01-01/hh_id_1.yaml" @@ -36,10 +36,6 @@ inputs: - 1765.0 - 1765.0 familie: - kind: - - false - - false - - true p_id_elternteil_1: - -1 - -1 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" index 21ee267fe9..8a9377eba7 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_6.yaml" @@ -29,9 +29,6 @@ inputs: - 1183.64 - 1183.64 familie: - kind: - - false - - true p_id_elternteil_1: - -1 - 16 diff --git "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" index 0878a36eb4..34a805462c 100644 --- "a/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/vorrangpr\303\274fungen/2019-01-01/hh_id_8.yaml" @@ -22,8 +22,6 @@ inputs: regelbedarf_m_bg: - 1000.0 familie: - kind: - - false p_id_elternteil_1: - -1 p_id_elternteil_2: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index ffbdc50dda..13fa7fd6a8 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -162,15 +162,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true - - true - - true - - true p_id_ehepartner: - 67 - 66 @@ -235,7 +226,7 @@ inputs: - 15 - 15 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index d8bcb06cd8..eb388bfb55 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -112,12 +112,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true p_id_ehepartner: - 23 - 22 @@ -161,7 +155,7 @@ inputs: - 4 - 4 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index de2a8234aa..619dd8731e 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -67,9 +67,6 @@ inputs: alleinerziehend: - true - false - kind: - - false - - true p_id_ehepartner: - -1 - -1 @@ -92,7 +89,7 @@ inputs: - 3 - 3 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - true p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index 689a6c3299..fde60c8a6f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -64,9 +64,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 19 - 18 @@ -89,7 +86,7 @@ inputs: - 2 - 2 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 5b703b219a..1346bdb801 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -64,9 +64,6 @@ inputs: alleinerziehend: - false - false - kind: - - false - - false p_id_ehepartner: - 54 - 53 @@ -89,7 +86,7 @@ inputs: - 9 - 9 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false p_id_empfänger: diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index 4386f47795..389bf838ce 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -84,10 +84,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 16 - 15 @@ -117,7 +113,7 @@ inputs: - 1 - 1 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index 51f79e5e7b..b46c7e19b2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -240,20 +240,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false - - false - - true - - true - - true - - true - - true - - true - - true - - true p_id_ehepartner: - 35 - 34 @@ -353,7 +339,7 @@ inputs: - 7 - 7 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index 2aa69d9a85..518ea3fc7c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -128,13 +128,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true - - true p_id_ehepartner: - 48 - 47 @@ -185,7 +178,7 @@ inputs: - 8 - 8 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 92f26c911e..84b38bfdaa 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -128,13 +128,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true - - true p_id_ehepartner: - 29 - 28 @@ -185,7 +178,7 @@ inputs: - 6 - 6 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index 2ee409aae2..1b4b8de28e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -48,8 +48,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: @@ -65,7 +63,7 @@ inputs: hh_id: - 5 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false p_id_empfänger: - -1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index d0dac32f6c..1949892339 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -50,8 +50,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: @@ -67,7 +65,7 @@ inputs: hh_id: - 10 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false p_id_empfänger: - -1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 88b7d43724..b145be968c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -11,7 +11,7 @@ inputs: anzahl_personen_hh: - 1 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -52,8 +52,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: @@ -69,7 +67,7 @@ inputs: hh_id: - 11 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false p_id_empfänger: - -1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index c76182c805..3d0f30782f 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -11,7 +11,7 @@ inputs: anzahl_personen_hh: - 1 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false eigenbedarf_gedeckt: - false @@ -52,8 +52,6 @@ inputs: familie: alleinerziehend: - false - kind: - - false p_id_ehepartner: - -1 p_id_elternteil_1: @@ -69,7 +67,7 @@ inputs: hh_id: - 12 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false p_id_empfänger: - -1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 711b3c902a..d5d164eec6 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -15,7 +15,7 @@ inputs: - 3 - 3 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -88,10 +88,6 @@ inputs: - false - false - false - kind: - - false - - false - - true p_id_ehepartner: - 58 - 57 @@ -121,7 +117,7 @@ inputs: - 13 - 13 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index d80d20f580..8c18f26c46 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -21,7 +21,7 @@ inputs: - 6 - 6 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -142,13 +142,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true - - true p_id_ehepartner: - 61 - 60 @@ -199,7 +192,7 @@ inputs: - 14 - 14 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index 418f633b2e..a1569da9a5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -17,7 +17,7 @@ inputs: - 4 - 4 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -106,11 +106,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true p_id_ehepartner: - 75 - 74 @@ -147,7 +142,7 @@ inputs: - 16 - 16 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 7e79244fe2..666c987818 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -19,7 +19,7 @@ inputs: - 5 - 5 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -124,12 +124,6 @@ inputs: - false - false - false - kind: - - false - - false - - true - - true - - true p_id_ehepartner: - 79 - 78 @@ -173,7 +167,7 @@ inputs: - 17 - 17 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index adec9ad453..8eb2ef52a0 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -16,7 +16,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -130,13 +130,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false - - false - - false p_id_ehepartner: - 1 - 0 @@ -187,7 +180,7 @@ inputs: - 2 - 2 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 42b9ca3f15..a76bc49800 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -13,7 +13,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -118,12 +118,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false - - false p_id_ehepartner: - 1 - 0 @@ -167,7 +161,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index c519f9ca17..2a24081326 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -15,7 +15,7 @@ inputs: - 40 - 40 arbeitslosengeld_2: - arbeitslosengeld_2_bezug_im_vorjahr: + bezug_im_vorjahr: - false - false - false @@ -152,14 +152,6 @@ inputs: - false - false - false - kind: - - false - - false - - false - - false - - false - - false - - false p_id_ehepartner: - 1 - 0 @@ -217,7 +209,7 @@ inputs: - 0 - 0 kindergeld: - grundsätzlich_anspruchsberechtigt: + ist_leistungsbegründendes_kind: - false - false - false diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py index 13f37246ca..d502d484ff 100644 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -405,140 +405,252 @@ def test_convertible(funcname, func, backend, xnp): # noqa: ARG001 # ====================================================================================== -def mock__elterngeld__geschwisterbonus_m( - basisbetrag_m: float, - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: bool, - geschwisterbonus_aufschlag: float, - geschwisterbonus_minimum: float, -) -> float: - if geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg: - out = max( - geschwisterbonus_aufschlag * basisbetrag_m, - geschwisterbonus_minimum, +def test_housing_benefits_amount_m_fam(backend, xnp): + """Test housing benefits amount function with conditional logic.""" + # Test original function on scalar input + # ============================================================================== + eligibility__requirement_fulfilled_fam = True + income__amount_m_fam = 1000.0 + assistance_rate = 0.8 + + from tests.ttsim.mettsim.housing_benefits.amount import ( # noqa: PLC0415 + amount_m_fam, + ) + + exp = amount_m_fam.function( + eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, + income__amount_m_fam=income__amount_m_fam, + assistance_rate=assistance_rate, + ) + assert exp == 800.0 + + exp_false = amount_m_fam.function( + eligibility__requirement_fulfilled_fam=False, + income__amount_m_fam=income__amount_m_fam, + assistance_rate=assistance_rate, + ) + assert exp_false == 0.0 + + # Create array inputs and assert that original function raises error + # ============================================================================== + shape = (10, 2) + eligibility__requirement_fulfilled_fam = xnp.full(shape, True) # noqa: FBT003 + income__amount_m_fam = xnp.full(shape, income__amount_m_fam) + assistance_rate = xnp.full(shape, assistance_rate) + + with pytest.raises(ValueError, match="truth value of an array with more than"): + amount_m_fam.function( + eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, + income__amount_m_fam=income__amount_m_fam, + assistance_rate=assistance_rate, ) - else: - out = 0.0 - return out + + # Call converted function on array input and test result + # ============================================================================== + converted = _make_vectorizable( + amount_m_fam.function, + backend=backend, + xnp=xnp, + ) + got = converted( + eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, + income__amount_m_fam=income__amount_m_fam, + assistance_rate=assistance_rate, + ) + assert_array_equal(got, xnp.full(shape, exp)) + + # Test mixed eligibility + eligibility__requirement_fulfilled_fam = xnp.array([[True, False], [False, True]]) + income__amount_m_fam = xnp.array([[1000.0, 1000.0], [1000.0, 1000.0]]) + assistance_rate = xnp.array([[0.8, 0.8], [0.8, 0.8]]) + + got_mixed = converted( + eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, + income__amount_m_fam=income__amount_m_fam, + assistance_rate=assistance_rate, + ) + expected_mixed = xnp.array([[800.0, 0.0], [0.0, 800.0]]) + assert_array_equal(got_mixed, expected_mixed) -def test_geschwisterbonus_m(backend, xnp): - # Test original METTSIM function on scalar input +def test_payroll_tax_amount_y(backend, xnp): + """Test payroll tax amount function with multiple conditional logic.""" + # Test original function on scalar input # ============================================================================== - basisbetrag_m = 3.0 - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = True - geschwisterbonus_aufschlag = 1.0 - geschwisterbonus_minimum = 2.0 - - exp = mock__elterngeld__geschwisterbonus_m( - basisbetrag_m=basisbetrag_m, - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, - geschwisterbonus_minimum=geschwisterbonus_minimum, + amount_standard_y = 1000.0 + amount_reduced_y = 800.0 + parent_is_noble_fam = False + wealth_fam = 30000.0 # Below threshold + wealth_threshold_for_reduced_tax_rate = 40000.0 + + from tests.ttsim.mettsim.payroll_tax.amount import amount_y # noqa: PLC0415 + + exp_standard = amount_y.function( + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=parent_is_noble_fam, + wealth_fam=wealth_fam, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, + ) + assert exp_standard == 1000.0 + + exp_reduced = amount_y.function( + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=parent_is_noble_fam, + wealth_fam=60000.0, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, ) - assert exp == 3.0 + assert exp_reduced == 800.0 + + exp_noble = amount_y.function( + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=True, + wealth_fam=wealth_fam, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, + ) + assert exp_noble == 0.0 - # Create array inputs and assert that METTSIM functions raises error + # Create array inputs and assert that original function raises error # ============================================================================== shape = (10, 2) - basisbetrag_m = xnp.full(shape, basisbetrag_m) - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg = xnp.full( - shape, - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, + amount_standard_y = xnp.full(shape, amount_standard_y) + amount_reduced_y = xnp.full(shape, amount_reduced_y) + parent_is_noble_fam = xnp.full(shape, parent_is_noble_fam) + wealth_fam = xnp.full(shape, wealth_fam) + wealth_threshold_for_reduced_tax_rate = xnp.full( + shape, wealth_threshold_for_reduced_tax_rate ) with pytest.raises(ValueError, match="truth value of an array with more than"): - mock__elterngeld__geschwisterbonus_m( - basisbetrag_m=basisbetrag_m, - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, - geschwisterbonus_minimum=geschwisterbonus_minimum, + amount_y.function( + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=parent_is_noble_fam, + wealth_fam=wealth_fam, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, ) # Call converted function on array input and test result # ============================================================================== converted = _make_vectorizable( - mock__elterngeld__geschwisterbonus_m, + amount_y.function, backend=backend, xnp=xnp, ) got = converted( - basisbetrag_m=basisbetrag_m, - geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg=geschwisterbonus_grundsätzlich_anspruchsberechtigt_fg, - geschwisterbonus_aufschlag=geschwisterbonus_aufschlag, - geschwisterbonus_minimum=geschwisterbonus_minimum, + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=parent_is_noble_fam, + wealth_fam=wealth_fam, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, + ) + assert_array_equal(got, xnp.full(shape, exp_standard)) + + # Test mixed conditions + parent_is_noble_fam = xnp.array([[True, False], [False, True]]) + wealth_fam = xnp.array([[30000.0, 60000.0], [30000.0, 70000.0]]) + amount_standard_y = xnp.array([[1000.0, 1000.0], [1000.0, 1000.0]]) + amount_reduced_y = xnp.array([[800.0, 800.0], [800.0, 800.0]]) + wealth_threshold_for_reduced_tax_rate = xnp.array( + [[40000.0, 40000.0], [40000.0, 40000.0]] ) - assert_array_equal(got, xnp.full(shape, exp)) - -def mock__elterngeld__grundsätzlich_anspruchsberechtigt( - claimed: bool, - arbeitsstunden_w: float, - kind_grundsätzlich_anspruchsberechtigt_fg: bool, - einkommen_vorjahr_unter_bezugsgrenze: bool, - bezugsmonate_unter_grenze_fg: bool, - max_arbeitsstunden_w: int, -) -> bool: - return ( - claimed - and arbeitsstunden_w <= max_arbeitsstunden_w - and einkommen_vorjahr_unter_bezugsgrenze - and kind_grundsätzlich_anspruchsberechtigt_fg - and bezugsmonate_unter_grenze_fg + got_mixed = converted( + amount_standard_y=amount_standard_y, + amount_reduced_y=amount_reduced_y, + parent_is_noble_fam=parent_is_noble_fam, + wealth_fam=wealth_fam, + wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, ) + # Expected: noble=0, reduced=800, standard=1000, noble=0 + expected_mixed = xnp.array([[0.0, 800.0], [1000.0, 0.0]]) + assert_array_equal(got_mixed, expected_mixed) -def test_grundsätzlich_anspruchsberechtigt(backend, xnp): - # Test original METTSIM function on scalar input +def test_orc_hunting_bounty_amount(backend, xnp): + """Test orc hunting bounty function with conditional logic.""" + # Test original function on scalar input # ============================================================================== - claimed = True - arbeitsstunden_w = 20.0 - kind_grundsätzlich_anspruchsberechtigt_fg = True - einkommen_vorjahr_unter_bezugsgrenze = True - bezugsmonate_unter_grenze_fg = True - max_arbeitsstunden_w = 31 - - exp = mock__elterngeld__grundsätzlich_anspruchsberechtigt( - claimed=claimed, - arbeitsstunden_w=arbeitsstunden_w, - kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, - einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, - bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - max_arbeitsstunden_w=max_arbeitsstunden_w, + small_orcs_hunted = 5 + large_orcs_hunted = 2 + parent_is_noble = True + bounty_per_orc = type( + "BountyPerOrc", + (), + { + "small_orc": 10, + "large_orc": type( + "BountyPerLargeOrc", (), {"noble_hunter": 50, "peasant_hunter": 30} + )(), + }, + )() + + from tests.ttsim.mettsim.orc_hunting_bounty.orc_hunting_bounty import ( # noqa: PLC0415 + amount, + ) + + exp_noble = amount.function( + small_orcs_hunted=small_orcs_hunted, + large_orcs_hunted=large_orcs_hunted, + parent_is_noble=parent_is_noble, + bounty_per_orc=bounty_per_orc, ) + assert exp_noble == 150.0 # 5*10 + 2*50 - assert exp is True + exp_peasant = amount.function( + small_orcs_hunted=small_orcs_hunted, + large_orcs_hunted=large_orcs_hunted, + parent_is_noble=False, + bounty_per_orc=bounty_per_orc, + ) + assert exp_peasant == 110.0 # 5*10 + 2*30 - # Create array inputs and assert that METTSIM functions raises error + # Create array inputs and assert that original function raises error # ============================================================================== - shape = (10, 1) - arbeitsstunden_w = xnp.full(shape, arbeitsstunden_w) + shape = (10, 2) + small_orcs_hunted = xnp.full(shape, small_orcs_hunted) + large_orcs_hunted = xnp.full(shape, large_orcs_hunted) + parent_is_noble = xnp.full(shape, parent_is_noble) with pytest.raises(ValueError, match="truth value of an array with more than"): - mock__elterngeld__grundsätzlich_anspruchsberechtigt( - arbeitsstunden_w=arbeitsstunden_w, - claimed=claimed, - kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, - einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, - bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - max_arbeitsstunden_w=max_arbeitsstunden_w, + amount.function( + small_orcs_hunted=small_orcs_hunted, + large_orcs_hunted=large_orcs_hunted, + parent_is_noble=parent_is_noble, + bounty_per_orc=bounty_per_orc, ) # Call converted function on array input and test result # ============================================================================== converted = _make_vectorizable( - mock__elterngeld__grundsätzlich_anspruchsberechtigt, + amount.function, backend=backend, xnp=xnp, ) got = converted( - claimed=claimed, - arbeitsstunden_w=arbeitsstunden_w, - kind_grundsätzlich_anspruchsberechtigt_fg=kind_grundsätzlich_anspruchsberechtigt_fg, - einkommen_vorjahr_unter_bezugsgrenze=einkommen_vorjahr_unter_bezugsgrenze, - bezugsmonate_unter_grenze_fg=bezugsmonate_unter_grenze_fg, - max_arbeitsstunden_w=max_arbeitsstunden_w, + small_orcs_hunted=small_orcs_hunted, + large_orcs_hunted=large_orcs_hunted, + parent_is_noble=parent_is_noble, + bounty_per_orc=bounty_per_orc, ) - assert_array_equal(got, xnp.full(shape, exp)) + assert_array_equal(got, xnp.full(shape, exp_noble)) + + # Test mixed noble/peasant conditions + parent_is_noble = xnp.array([[True, False], [False, True]]) + small_orcs_hunted = xnp.array([[5, 5], [5, 5]]) + large_orcs_hunted = xnp.array([[2, 2], [2, 2]]) + + got_mixed = converted( + small_orcs_hunted=small_orcs_hunted, + large_orcs_hunted=large_orcs_hunted, + parent_is_noble=parent_is_noble, + bounty_per_orc=bounty_per_orc, + ) + # Expected: noble=150, peasant=110, peasant=110, noble=150 + expected_mixed = xnp.array([[150.0, 110.0], [110.0, 150.0]]) + assert_array_equal(got_mixed, expected_mixed) # ====================================================================================== From d1e1641f8d64d8d0f9af13963b9d44173c5a5f7e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sat, 12 Jul 2025 14:12:04 +0200 Subject: [PATCH 064/109] Simple renamings. (#1011) ### What problem do you want to solve? Closes #451, #513, #726, #545 --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- outdated_docs/tutorials/debugging.ipynb | 2 +- src/_gettsim/inputs.py | 4 ++-- .../kranken/beitrag/einkommen.py | 8 ++++---- src/_gettsim/sozialversicherung/minijob.py | 4 ++-- .../sozialversicherung/pflege/beitrag/inputs.py | 3 ++- .../rente/altersrente/altersrente.py | 4 ++-- .../rente/altersrente/entgeltpunkte.py | 12 ++++++------ .../sozialversicherung/rente/beitrag/beitrag.py | 4 ++-- src/_gettsim/unterhalt/inputs.py | 4 ++-- src/_gettsim/wohngeld/inputs.py | 2 +- src/_gettsim/wohngeld/miete.py | 16 ++++++++-------- .../2024-01-01/single_no_income.yaml | 2 +- .../2024-01-01/skip_single_no_children.yaml | 2 +- .../2010-01-01/hh_id_1.yaml | 2 +- .../2010-01-01/hh_id_2.yaml | 2 +- .../2010-01-01/hh_id_3.yaml | 2 +- .../2010-01-01/hh_id_4.yaml | 2 +- .../2010-01-01/hh_id_5.yaml | 2 +- .../2015-01-01/hh_id_16.yaml | 2 +- .../2015-01-01/hh_id_17.yaml | 2 +- .../2017-01-01/hh_id_18.yaml | 2 +- .../2018-01-01/hh_id_10.yaml | 2 +- .../2018-01-01/hh_id_11.yaml | 2 +- .../2018-01-01/hh_id_12.yaml | 2 +- .../2018-01-01/hh_id_7.yaml | 2 +- .../2018-01-01/hh_id_8.yaml | 2 +- .../2018-01-01/hh_id_9.yaml | 2 +- .../2019-01-01/hh_id_13.yaml | 2 +- .../2020-01-01/hh_id_14.yaml | 2 +- .../2020-01-01/hh_id_19.yaml | 2 +- .../2020-01-01/hh_id_20.yaml | 2 +- .../test_data/elterngeld/2017-01-01/hh_id_2.yaml | 2 +- .../test_data/elterngeld/2018-01-01/hh_id_1.yaml | 2 +- .../test_data/elterngeld/2018-01-01/hh_id_2.yaml | 2 +- .../test_data/elterngeld/2018-01-01/hh_id_3.yaml | 2 +- .../test_data/elterngeld/2018-01-01/hh_id_4.yaml | 2 +- .../test_data/elterngeld/2018-01-01/hh_id_6.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_1.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_3.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_5.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_6.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_7.yaml | 2 +- .../test_data/elterngeld/2019-01-01/hh_id_8.yaml | 2 +- .../2024-01-01/income_during_elterngeld.yaml | 2 +- .../2024-01-01/maximum_elterngeld.yaml | 2 +- .../2024-01-01/minimum_elterngeld.yaml | 2 +- .../2024-01-01/net_income_approximation.yaml | 2 +- .../2024-01-01/net_income_before_birth_1000.yaml | 2 +- .../2024-01-01/net_income_before_birth_790.yaml | 2 +- .../2024-01-01/replacement_rate_decrease.yaml | 2 +- .../2024-04-01/taxable_income_low.yaml | 2 +- .../2024-04-01/taxable_income_too_high.yaml | 2 +- .../2019-01-01/hh_id_1.yaml | 4 ++-- .../2019-01-01/hh_id_2.yaml | 4 ++-- .../2019-01-01/hh_id_3.yaml | 4 ++-- .../2019-01-01/hh_id_4.yaml | 4 ++-- .../2019-01-01/hh_id_5.yaml | 4 ++-- .../2019-01-01/hh_id_6.yaml | 4 ++-- .../2019-01-01/hh_id_7.yaml | 4 ++-- .../2019-01-01/hh_id_8.yaml | 4 ++-- .../lohnsteuer/2015-01-01/hh_id_1045.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1051.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1081.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_121.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1214.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1219.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1435.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1462.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1476.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1555.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1627.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1793.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1796.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1915.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_1982.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2042.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2174.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2224.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2451.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2552.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2593.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2601.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2639.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2726.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2732.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2861.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_2924.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_470.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_561.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_72.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_736.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_76.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_769.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_786.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_790.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_802.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_830.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_856.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_857.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_891.yaml | 2 +- .../lohnsteuer/2015-01-01/hh_id_925.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1000.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1086.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1115.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1133.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1175.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_123.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1281.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1335.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1367.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1700.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1822.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_1958.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2065.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2220.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2289.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2358.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2396.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2645.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2693.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2724.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2744.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2932.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_2961.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_307.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_435.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_444.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_583.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_699.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_765.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_779.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_807.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_821.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_898.yaml | 2 +- .../test_data/lohnsteuer/2016-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_950.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_965.yaml | 2 +- .../lohnsteuer/2016-01-01/hh_id_968.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1088.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1134.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1164.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1279.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_146.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1503.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1532.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1549.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1615.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1841.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1866.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1878.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1923.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_1945.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2005.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2151.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2177.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2226.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2293.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2512.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2677.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2918.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2934.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2956.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2974.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_2991.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_30.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_416.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_455.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_496.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_506.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_528.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_568.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_575.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_588.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_659.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_743.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_881.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_910.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_933.yaml | 2 +- .../lohnsteuer/2017-01-01/hh_id_996.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1159.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1213.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_130.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1314.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_152.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1632.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1727.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_174.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1786.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1802.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_184.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_1935.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2098.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2156.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2186.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2395.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2491.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2575.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2649.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2720.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2828.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_2999.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_315.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_375.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_559.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_624.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_791.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_796.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_81.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_851.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_947.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_959.yaml | 2 +- .../lohnsteuer/2018-01-01/hh_id_98.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1014.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1093.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1098.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1210.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1354.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1629.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1695.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1709.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_180.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1825.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_1846.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2025.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2070.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2159.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2204.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2375.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2393.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2469.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2516.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_265.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2708.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2729.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2736.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2760.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2818.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_286.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2900.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2904.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_2942.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_317.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_331.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_396.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_420.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_605.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_646.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_65.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_698.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_710.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_715.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_809.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_816.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_832.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_879.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_882.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2019-01-01/hh_id_978.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1015.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1096.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1118.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1273.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_13.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1310.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1378.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1417.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1468.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_160.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_161.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1705.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1767.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1775.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1788.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1790.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_1928.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2106.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2182.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2184.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2230.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2320.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2389.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2527.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2562.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2587.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_266.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2888.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2898.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2920.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2953.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_2998.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_367.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_400.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_409.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_481.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_513.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_630.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_648.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_70.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_835.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_901.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_926.yaml | 2 +- .../lohnsteuer/2020-01-01/hh_id_949.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_111.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1186.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1204.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1237.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1255.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1380.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1385.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1402.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_145.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1538.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1610.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_165.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1714.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1762.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1853.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1908.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_1999.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2022.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2208.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_225.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2258.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2295.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_238.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2400.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2416.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2476.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_262.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2766.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2782.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2836.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2886.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2945.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_2946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_299.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_318.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_321.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_33.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_417.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_479.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_519.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_522.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_618.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_620.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_651.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_738.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_761.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_788.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_798.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_810.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_864.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_867.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_883.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_885.yaml | 2 +- .../test_data/lohnsteuer/2021-01-01/hh_id_9.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_946.yaml | 2 +- .../lohnsteuer/2021-01-01/hh_id_948.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2022-01-01/hh_id_963.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1019.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1166.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1209.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1305.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1364.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1473.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1519.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1667.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1770.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1784.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1881.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1904.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1907.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_1918.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2099.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2111.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2118.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2129.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_224.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_241.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2410.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2423.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2428.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2439.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2447.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2868.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_2962.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_664.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_688.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_720.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_840.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_848.yaml | 2 +- .../lohnsteuer/2023-01-01/hh_id_963.yaml | 2 +- .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 2 +- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 2 +- .../2015-01-01/skip_hh_id_5.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 2 +- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 2 +- ...\303\274gig_besch\303\244ftigt_nur_west.yaml" | 2 +- .../geringf\303\274gig_besch\303\244ftigt.yaml" | 2 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 2 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 2 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 2 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 2 +- .../above_new_beitragsbemessungsgrenze.yaml" | 2 +- .../above_old_beitragsbemessungsgrenze.yaml" | 2 +- .../below_beitragsbemessungsgrenze.yaml" | 2 +- .../2024-01-01/einkommen_in_gleitzone.yaml" | 2 +- .../2025-01-01/einkommen_in_gleitzone.yaml" | 2 +- .../1996-07-01/cohort_1936_wegen_arbeitsl.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_1.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_2.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_24.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_4.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_5.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_6.yaml | 2 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_10.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_11.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_8.yaml | 2 +- .../rente/betrag/2012-07-01/hh_id_9.yaml | 2 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_12.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_13.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_14.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_15.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_16.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_17.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_18.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_19.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_25.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_26.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_27.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_28.yaml | 2 +- .../rente/betrag/2015-07-01/hh_id_29.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_20.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_23.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_24.yaml | 2 +- .../rente/betrag/2018-07-01/hh_id_25.yaml | 2 +- ...lw_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1940_claim.yaml | 2 +- ...dert_birthyear_1940_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1941_claim.yaml | 2 +- ...dert_birthyear_1941_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...lw_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1943_claim.yaml | 2 +- ...dert_birthyear_1943_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1945_claim.yaml | 2 +- ...dert_birthyear_1945_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...lw_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1950_claim.yaml | 2 +- ...dert_birthyear_1950_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...dert_birthyear_1960_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ..._erwerbsgemindert_birthyear_1990_2_claim.yaml | 2 +- ...rt_birthyear_1990_2_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...dert_birthyear_1960_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1990_claim.yaml | 2 +- ...dert_birthyear_1990_preliminary_products.yaml | 2 +- ...lw_erwerbsgemindert_birthyear_1995_claim.yaml | 2 +- ...dert_birthyear_1995_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1960_claim.yaml | 2 +- ...dert_birthyear_1960_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1980_claim.yaml | 2 +- ...dert_birthyear_1980_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1990_claim.yaml | 2 +- ...dert_birthyear_1990_preliminary_products.yaml | 2 +- ..._erwerbsgemindert_birthyear_2000_2_claim.yaml | 2 +- ...rt_birthyear_2000_2_preliminary_products.yaml | 2 +- ...lw_erwerbsgemindert_birthyear_2000_claim.yaml | 2 +- ...dert_birthyear_2000_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1957_claim.yaml | 2 +- ...dert_birthyear_1957_preliminary_products.yaml | 2 +- ..._erwerbsgemindert_birthyear_1970_2_claim.yaml | 2 +- ...rt_birthyear_1970_2_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1970_claim.yaml | 2 +- ...dert_birthyear_1970_preliminary_products.yaml | 2 +- ...ll_erwerbsgemindert_birthyear_1995_claim.yaml | 2 +- ...dert_birthyear_1995_preliminary_products.yaml | 2 +- .../2016-01-01/einkommen_unter_grenze.yaml | 2 +- .../einkommen_\303\274ber_grenze.yaml" | 2 +- .../2018-01-01/hohes_einkommen.yaml | 2 +- .../2018-01-01/kein_einkommen.yaml | 2 +- .../2018-01-01/mittleres_einkommen.yaml | 2 +- .../2018-01-01/niedriges_einkommen.yaml | 2 +- .../2021-01-01/hohes_einkommen.yaml | 2 +- .../2021-01-01/kein_einkommen.yaml | 2 +- .../2021-01-01/mittleres_einkommen.yaml | 2 +- .../2021-01-01/niedriges_einkommen.yaml | 2 +- .../2023-01-01/hohes_einkommen.yaml | 2 +- .../2023-01-01/kein_einkommen.yaml | 2 +- .../2023-01-01/mittleres_einkommen.yaml | 2 +- .../2023-01-01/niedriges_einkommen.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 2 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 2 +- .../grundrente/2021-07-01/married_couple.yaml | 2 +- .../test_data/wohngeld/2006-01-01/hh_id_15.yaml | 2 +- .../test_data/wohngeld/2006-01-01/hh_id_4.yaml | 2 +- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 2 +- .../test_data/wohngeld/2013-01-01/hh_id_2.yaml | 2 +- .../test_data/wohngeld/2013-01-01/hh_id_9.yaml | 2 +- .../test_data/wohngeld/2016-01-01/hh_id_1.yaml | 2 +- .../test_data/wohngeld/2018-01-01/hh_id_7.yaml | 2 +- .../test_data/wohngeld/2018-01-01/hh_id_8.yaml | 2 +- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 2 +- .../test_data/wohngeld/2019-01-01/hh_id_5.yaml | 2 +- .../test_data/wohngeld/2021-01-01/hh_id_10.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_11.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_12.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_13.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_14.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_16.yaml | 2 +- .../test_data/wohngeld/2023-01-01/hh_id_17.yaml | 2 +- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 2 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 2 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 2 +- 637 files changed, 666 insertions(+), 665 deletions(-) diff --git a/outdated_docs/tutorials/debugging.ipynb b/outdated_docs/tutorials/debugging.ipynb index 70b4bc3f14..ff8d7fa480 100644 --- a/outdated_docs/tutorials/debugging.ipynb +++ b/outdated_docs/tutorials/debugging.ipynb @@ -40,7 +40,7 @@ " \"p_id\": 1,\n", " \"hh_id\": 1,\n", " \"einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m\": 1000.0, # noqa: E501\n", - " \"wohnort_ost\": False,\n", + " \"wohnort_ost_hh\": False,\n", " },\n", " index=[0],\n", ")\n", diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index 62581092d2..f707763920 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -58,5 +58,5 @@ def weiblich() -> bool: @policy_input() -def wohnort_ost() -> bool: - """Whether the person lives in the Eastern part of Germany.""" +def wohnort_ost_hh() -> bool: + """Whether the household is located in the new Länder (Beitrittsgebiet).""" diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index 794ebcec72..d38f512e44 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -75,20 +75,20 @@ def bemessungsgrundlage_selbstständig_m( leaf_name="beitragsbemessungsgrenze_m", ) def beitragsbemessungsgrenze_m_nach_wohnort( - wohnort_ost: bool, + wohnort_ost_hh: bool, parameter_beitragsbemessungsgrenze_nach_wohnort: dict[str, float], ) -> float: """Income threshold up to which health insurance payments apply.""" return ( parameter_beitragsbemessungsgrenze_nach_wohnort["ost"] - if wohnort_ost + if wohnort_ost_hh else parameter_beitragsbemessungsgrenze_nach_wohnort["west"] ) @policy_function(start_date="1990-01-01", end_date="2024-12-31") def bezugsgröße_selbstständige_m( - wohnort_ost: bool, + wohnort_ost_hh: bool, bezugsgröße_selbstständige_nach_wohnort: dict[str, float], ) -> float: """Threshold for self employment income subject to health insurance. @@ -98,7 +98,7 @@ def bezugsgröße_selbstständige_m( """ return ( bezugsgröße_selbstständige_nach_wohnort["ost"] - if wohnort_ost + if wohnort_ost_hh else bezugsgröße_selbstständige_nach_wohnort["west"] ) diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py index e0bbf1b772..2248f4e1eb 100644 --- a/src/_gettsim/sozialversicherung/minijob.py +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -33,7 +33,7 @@ def geringfügig_beschäftigt( ), ) def minijobgrenze_unterscheidung_ost_west( - wohnort_ost: bool, + wohnort_ost_hh: bool, parameter_minijobgrenze_ost_west_unterschied: dict[str, float], ) -> float: """Minijob income threshold depending on place of living (East or West Germany). @@ -42,7 +42,7 @@ def minijobgrenze_unterscheidung_ost_west( """ return ( parameter_minijobgrenze_ost_west_unterschied["ost"] - if wohnort_ost + if wohnort_ost_hh else parameter_minijobgrenze_ost_west_unterschied["west"] ) diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py index b907a69946..d4230e91fe 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py @@ -7,4 +7,5 @@ @policy_input() def hat_kinder() -> bool: - """Has kids (incl. not in hh).""" + """Parent of at least one child (including children in other households, + adopted, adult, and deceased children).""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index 335fbf62d5..0c14722023 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -118,13 +118,13 @@ def bruttorente_basisbetrag_m( @policy_function(start_date="1992-01-01", end_date="2023-06-30", leaf_name="rentenwert") def rentenwert_nach_wohnort( - wohnort_ost: bool, + wohnort_ost_hh: bool, parameter_rentenwert_nach_wohnort: dict[str, float], ) -> float: """Rentenwert.""" return ( parameter_rentenwert_nach_wohnort["ost"] - if wohnort_ost + if wohnort_ost_hh else parameter_rentenwert_nach_wohnort["west"] ) diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py index 236342ed4b..6827bf604d 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py @@ -9,7 +9,7 @@ @policy_function() def entgeltpunkte_west_updated( - wohnort_ost: bool, + wohnort_ost_hh: bool, sozialversicherung__rente__entgeltpunkte_west: float, neue_entgeltpunkte: float, ) -> float: @@ -19,7 +19,7 @@ def entgeltpunkte_west_updated( potentially other variables (e.g., benefits for raising children, informal care), return the new earnings points. """ - if wohnort_ost: + if wohnort_ost_hh: out = sozialversicherung__rente__entgeltpunkte_west else: out = sozialversicherung__rente__entgeltpunkte_west + neue_entgeltpunkte @@ -28,7 +28,7 @@ def entgeltpunkte_west_updated( @policy_function() def entgeltpunkte_ost_updated( - wohnort_ost: bool, + wohnort_ost_hh: bool, sozialversicherung__rente__entgeltpunkte_ost: float, neue_entgeltpunkte: float, ) -> float: @@ -38,7 +38,7 @@ def entgeltpunkte_ost_updated( potentially other variables (e.g., benefits for raising children, informal care), return the new earnings points. """ - if wohnort_ost: + if wohnort_ost_hh: out = sozialversicherung__rente__entgeltpunkte_ost + neue_entgeltpunkte else: out = sozialversicherung__rente__entgeltpunkte_ost @@ -48,14 +48,14 @@ def entgeltpunkte_ost_updated( @policy_function() def neue_entgeltpunkte( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - wohnort_ost: bool, + wohnort_ost_hh: bool, sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, beitragspflichtiges_durchschnittsentgelt_y: float, umrechnung_entgeltpunkte_beitrittsgebiet: float, ) -> float: """Return earning points for the wages earned in the last year.""" # Scale bruttolohn up if earned in eastern Germany - if wohnort_ost: + if wohnort_ost_hh: bruttolohn_scaled_east = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m * umrechnung_entgeltpunkte_beitrittsgebiet diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index 933bcb7ece..c79e3e561e 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -145,13 +145,13 @@ def einkommen_m( leaf_name="beitragsbemessungsgrenze_m", ) def beitragsbemessungsgrenze_m_nach_wohnort( - wohnort_ost: bool, + wohnort_ost_hh: bool, parameter_beitragsbemessungsgrenze_nach_wohnort: dict[str, float], ) -> float: """Income threshold up to which pension insurance payments apply.""" return ( parameter_beitragsbemessungsgrenze_nach_wohnort["ost"] - if wohnort_ost + if wohnort_ost_hh else parameter_beitragsbemessungsgrenze_nach_wohnort["west"] ) diff --git a/src/_gettsim/unterhalt/inputs.py b/src/_gettsim/unterhalt/inputs.py index 6c6af23c56..16be46cfa8 100644 --- a/src/_gettsim/unterhalt/inputs.py +++ b/src/_gettsim/unterhalt/inputs.py @@ -7,9 +7,9 @@ @policy_input() def anspruch_m() -> float: - """Monthly gross child alimony payments to be received by the child as determined by the court.""" + """Monthly gross alimony payments to be received as determined by the court.""" @policy_input() def tatsächlich_erhaltener_betrag_m() -> float: - """Child alimony payments the child actually receives.""" + """Alimony payments the recipient actually receives.""" diff --git a/src/_gettsim/wohngeld/inputs.py b/src/_gettsim/wohngeld/inputs.py index 8a1ac18353..544f5ccd52 100644 --- a/src/_gettsim/wohngeld/inputs.py +++ b/src/_gettsim/wohngeld/inputs.py @@ -6,5 +6,5 @@ @policy_input() -def mietstufe() -> int: +def mietstufe_hh() -> int: """Municipality's rent classification.""" diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index a7182d3922..d975802931 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -198,7 +198,7 @@ def min_miete_m_hh( leaf_name="miete_m_hh", ) def miete_m_hh_mit_baujahr( - mietstufe: int, + mietstufe_hh: int, wohnen__baujahr_immobilie_hh: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, @@ -213,7 +213,7 @@ def miete_m_hh_mit_baujahr( side="left", ) max_miete_m = max_miete_m_lookup.lookup_table.look_up( - baujahr_index, anzahl_personen_hh, mietstufe + baujahr_index, anzahl_personen_hh, mietstufe_hh ) return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @@ -224,14 +224,14 @@ def miete_m_hh_mit_baujahr( leaf_name="miete_m_hh", ) def miete_m_hh_ohne_baujahr_ohne_heizkostenentlastung( - mietstufe: int, + mietstufe_hh: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, max_miete_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe_hh) return max(min(wohnen__bruttokaltmiete_m_hh, max_miete_m), min_miete_m_hh) @@ -242,7 +242,7 @@ def miete_m_hh_ohne_baujahr_ohne_heizkostenentlastung( leaf_name="miete_m_hh", ) def miete_m_hh_mit_heizkostenentlastung( - mietstufe: int, + mietstufe_hh: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, @@ -250,7 +250,7 @@ def miete_m_hh_mit_heizkostenentlastung( heizkostenentlastung_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe_hh) heating_allowance_m = heizkostenentlastung_m_lookup.look_up(anzahl_personen_hh) @@ -265,7 +265,7 @@ def miete_m_hh_mit_heizkostenentlastung( leaf_name="miete_m_hh", ) def miete_m_hh_mit_heizkostenentlastung_dauerhafte_heizkostenkomponente_klimakomponente( - mietstufe: int, + mietstufe_hh: int, anzahl_personen_hh: int, wohnen__bruttokaltmiete_m_hh: float, min_miete_m_hh: float, @@ -275,7 +275,7 @@ def miete_m_hh_mit_heizkostenentlastung_dauerhafte_heizkostenkomponente_klimakom klimakomponente_m_lookup: ConsecutiveIntLookupTableParamValue, ) -> float: """Rent considered in housing benefit since 2009.""" - max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe) + max_miete_m = max_miete_m_lookup.look_up(anzahl_personen_hh, mietstufe_hh) heizkostenentlastung = heizkostenentlastung_m_lookup.look_up(anzahl_personen_hh) dauerhafte_heizkostenkomponente = dauerhafte_heizkostenkomponente_m_lookup.look_up( diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index d4bf523705..7c80b973ca 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -112,7 +112,7 @@ inputs: wohngeld: anspruchshöhe_m_bg: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: arbeitslosengeld_2: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index 3d8ab23d34..71f3819a9e 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -90,7 +90,7 @@ inputs: - 60.0 wohngeld__anspruchshöhe_m_bg: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: arbeitslosengeld_2__anrechnungsfreies_einkommen_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 5f94c53542..580f89951a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -85,7 +85,7 @@ inputs: - 2035 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 2274ac59bb..04ab71cca9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -85,7 +85,7 @@ inputs: - 2035 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index 9ccc92fc1a..c932fa135b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -85,7 +85,7 @@ inputs: - 2035 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index d218c9faec..7d2078fe32 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -85,7 +85,7 @@ inputs: - 2035 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 66e918d57e..f069ff56cc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -85,7 +85,7 @@ inputs: - 2035 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index 43af7e078f..155c1d825a 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -85,7 +85,7 @@ inputs: - 2040 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index 2c4491275b..30839d7e22 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -115,7 +115,7 @@ inputs: private_rente_betrag_m: - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index 31b0b6b21a..5afbb8f136 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -115,7 +115,7 @@ inputs: private_rente_betrag_m: - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index 3c1e11befb..c20cd346a5 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index 42cbdb658c..f357aa34b5 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index df887e2299..1f8d3bbe8c 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index 7c08af4767..b55e720cf5 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index 8891955f4e..26fb0534cc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index 3a95560f4e..d52ffa19a9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -85,7 +85,7 @@ inputs: - 2043 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: einkommensteuer: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 20dddcb012..133f688621 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -115,7 +115,7 @@ inputs: private_rente_betrag_m: - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index b8aea40bec..34c12722dd 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -175,7 +175,7 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index 919aacbfe0..562364880f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -175,7 +175,7 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 73329fd1c1..8f77366410 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -175,7 +175,7 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index 175aa9fe87..d460553963 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -68,7 +68,7 @@ inputs: beitrag: hat_kinder: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: elterngeld: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 73666b624b..95352892b7 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -61,7 +61,7 @@ inputs: beitrag: hat_kinder: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: elterngeld: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index 5438204f5b..77d309b380 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - true - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 74ca7454ee..2d543367b7 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - false - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index b2974b815c..fe0b025e7d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - false - true - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index 829f2e5cd7..d959ef9301 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -61,7 +61,7 @@ inputs: beitrag: hat_kinder: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: elterngeld: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index bafbf7b3d2..b1d629c15d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - true - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index cd28c1befb..c1b3736d27 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -105,7 +105,7 @@ inputs: - true - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index 1d3a91cccb..a2f29b0c36 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - true - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index 93853a923d..fdf4feaf7d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -105,7 +105,7 @@ inputs: - false - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index d081a20217..20c61e3794 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -105,7 +105,7 @@ inputs: - true - true - false - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index 5fec0c8aa3..3279e7639b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -127,7 +127,7 @@ inputs: - false - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index a38c9a5890..996a94b8a2 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -113,7 +113,7 @@ inputs: - true - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index 1d3a91cccb..a2f29b0c36 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - true - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index bafbf7b3d2..b1d629c15d 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -83,7 +83,7 @@ inputs: hat_kinder: - true - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml index b17430bb34..d6d5f3dc61 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml @@ -55,7 +55,7 @@ inputs: hat_kinder: - false - false - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index 5c9864da13..f465912f22 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -105,7 +105,7 @@ inputs: - true - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index 6d8d3bc118..d2dd260981 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -105,7 +105,7 @@ inputs: - true - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml index 180ae79701..2cc15ae06b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml @@ -101,7 +101,7 @@ inputs: - true - false - true - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index 4f09776874..bdc41c9418 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -113,7 +113,7 @@ inputs: - true - true - false - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index f647c251d1..c954351492 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -113,7 +113,7 @@ inputs: - true - true - false - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index 6e9393a0d3..c676431677 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -419,12 +419,12 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 - 3 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index cd12021123..d537b90c2c 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -420,12 +420,12 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 - 3 - wohnort_ost: + wohnort_ost_hh: - true - true - true diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 9071e8e7e1..8da7f476cb 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - true outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 0d189bf447..afce7c89b5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index d0828dcdf6..d50bf71fd6 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 255048bbfc..003a248e91 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index cd1a544bda..18824116fe 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index 784e13b3f5..a613bc404f 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -189,8 +189,8 @@ inputs: wohnfläche_hh: - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - wohnort_ost: + wohnort_ost_hh: - false outputs: {} diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml index eb97c34d9e..505b5625a3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1045.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml index 90a7ff72e4..a534aa5af4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1051.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml index dfc89f5ed4..ebab2d5cb2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1081.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml index 7c01bf203d..2bb1ba5568 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1134.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml index 28cd3f8dcb..9b86776287 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_121.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml index 3429fc679a..c07252a1f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1214.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml index 1192bc830a..ad6d322e0f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1219.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml index bda5e6a407..33ee09526f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1435.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml index 0e09406a63..759e9cb81e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1462.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml index 5b44bb3ebf..a2dea3108d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1476.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml index 39d6b70aec..3e33c7681d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1555.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml index 5e5d8852ef..bedccb219f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1627.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml index 620224ecb9..fe9fc93d1f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1793.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml index 630eeeba5a..6d007cfd11 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1796.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml index ba049ef8fb..a9274a465e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1915.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml index 1d80b429cf..f5135f74e2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_1982.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml index 0e6a6270da..198a5eac1d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2042.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml index 01ed39fdba..e11dd81263 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2174.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml index adccd2c186..492f64a072 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2224.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml index 777e0e88fd..d9192041b6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2451.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml index b661768ce1..3a3edade30 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2552.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml index e2e1836ae1..f1e0af478b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2593.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml index cc6b4a5a45..2c726d5cba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2601.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml index a73b48ce19..dcd8904bda 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2639.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml index eefd14a34d..6398e31e40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2726.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml index 1e40463f1c..bcbd60f44c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2732.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml index 88fc84541c..773b60af72 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2861.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml index 09d02b2696..b9d8200fee 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_2924.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml index b1b72a468d..51c1553f40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_400.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml index 2fb5f2010b..facf70d4bc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_470.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml index 3ed112237c..a1e5683076 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_561.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml index 2848e0bc7f..709bb114f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_583.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml index 675dec066e..80a836757c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_72.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml index b8598ad43e..f097ff8946 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_736.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml index 0405a29058..28dadbb6fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_76.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml index 3343ed5c6d..21614c715a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_765.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml index 26940ec12f..c92020d548 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_769.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml index 910b7c2582..edba8d3a7d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_786.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml index 931a29ab87..9d61fe27b7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_790.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml index f83c49dd4d..0feedb24f4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_802.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml index 1cf5341f65..d5ed13794f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_830.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml index 16df270eba..08625c22e0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_856.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml index 09bcb0cd17..39d75375ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_857.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml index 1bb081d659..4af325e61d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_891.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml index 46b1ea4802..1afe6a382a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2015-01-01/hh_id_925.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml index 3633f4567e..d622fe9bd5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1000.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml index 01ca5af1cb..74f078d86b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1086.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml index aac9cb41e0..a25adf7e58 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1115.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml index 53e8e10f9d..f1b37909c4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1133.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml index 6236ed8753..0b78642121 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1175.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml index 504b4357ec..c0f71a0e94 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_123.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml index fc44044cba..5add580578 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1281.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml index 8642ae7da6..397ddb9a63 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1335.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml index cc1f8553a1..c99855a998 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1367.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml index 9be15a54ea..45626a2acf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1532.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml index 4ae0bcba9f..488087275b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1700.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml index a6211e4719..5e2ffbbc50 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1705.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml index b452f1602e..5e39ee4214 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1822.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml index 1bc8313565..5d6011d3e8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_1958.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml index ec179d1dd1..22e5d4d4a9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2065.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml index f54d7b3e53..9edba01666 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2151.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml index 24b30df03f..0e9611a718 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2220.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml index 4ba829dea2..542b3381ee 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2289.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml index 86a98e4632..8b799690d6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2358.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml index 18880b4532..a1637a2950 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2396.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml index d15bcfc3a3..48b65831d7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2645.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml index 2993f9d986..e7440619bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2693.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml index 613ce64196..a1a97bd1bb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2724.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml index 9aa71fb822..7c1de7118c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2744.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml index 0c2d14b4b5..21b5f07e5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2932.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml index cd3d1f6956..3b3754bb48 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_2961.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml index c279d7532d..694ef09ee3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_307.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml index 893300cb0b..19e5fda7ca 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_435.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml index 73b2aa4dc5..5416e97ea9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_444.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml index 587df30a4b..10fbd3edc9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_583.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml index 0b676d539a..84d31d7b9a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_699.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml index d02f67a548..854a8d55ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_765.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml index 22945fa35c..1c265c228a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_779.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml index c4a86a07f8..fbcec70073 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_807.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml index 622f57cc10..5f5566f1b0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_821.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml index 86956f6849..961ed1e220 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_898.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml index d881538827..4170d785da 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_9.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml index 6c175a5432..b4b362b148 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_950.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml index f201c26923..521e494174 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_965.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml index 4df3a73cf1..dbd0ad5c46 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2016-01-01/hh_id_968.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml index 1fa87aa418..aaddc05830 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1019.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml index 82eed76f7a..fe0bd583f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1088.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml index 90c9027676..5626cff12f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1134.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml index a674213083..99d29e8e55 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1164.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml index db65b3c6cf..bd67c464c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1279.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml index ec9fc7c1a1..458451e339 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_146.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml index 3c8fdcc25a..7ac4c476e7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1503.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml index 7116dfad79..e57bbbaa37 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_151.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml index c6a0831e9b..1e67de15a8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1532.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml index 1ae46705bb..8d4e145c73 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1549.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml index 139b4110c6..b61d274ee5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1615.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml index 229f338980..3760adc6a9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1705.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml index ef151d48f3..7367190711 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1788.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml index 12d1671a01..a13cfcbda0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1841.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml index 818fb58ae7..a90d48bdbb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1866.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml index b1d694fda4..8d8ecbab04 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1878.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml index 0021045cb7..911f931159 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1923.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml index f5cb79f3f8..e64a905447 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_1945.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml index a284a4841f..68b3479af6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2005.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml index 03b6e8f615..2aeaba654f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2151.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml index d77d93bac0..6c602dc010 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2177.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml index 4ad88e1281..20e0563e19 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2226.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml index 424c12509f..64f4a597d6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2293.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml index 1a2d7c1980..ae4c5e86cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2512.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml index 71c16778ec..f03a182679 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_266.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml index 0f1e1e98e2..f238e41d44 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2677.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml index dfd4574538..9fbd34c587 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2729.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml index 95ebe1e1c1..4956460c88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2881.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml index 1a8311acdf..7e13c39834 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2918.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml index 7141ba562f..7115ea96ac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2934.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml index 3635ac74d4..8126c51943 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2956.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml index 28cdceb686..93649407bd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2974.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml index 0f395cd993..16b34267ba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_2991.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml index 23554d115f..65b0820e71 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_30.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml index 7ba515b16d..05eaca9ce9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_416.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml index 9aea09dbcc..7f487b229d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_455.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml index ca80146330..8bcb37dcb3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_496.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml index 8b88598479..8c58f7f8ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_506.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml index deab542e58..dc340bfb96 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_528.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml index c8a8863f00..67ca20d8b9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_568.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml index 8d7b831ad3..ffc91ff2e4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_575.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml index 34c16b44b9..efc970975d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_588.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml index 80e3b89635..959095e681 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_659.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml index 33cf0cdc95..913bd4fe25 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_743.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml index c6d955ddac..0b33f06dde 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_881.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml index 62a9bf72dd..e9ea6f299e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_910.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml index 62f025c2e6..3a9b1827a8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_933.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml index 310ed92b2b..5ae237c0d6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2017-01-01/hh_id_996.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml index 429e4d841e..8176f5d21c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1159.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml index 5d9fbf93d5..738a541f9e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1213.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml index 7387306764..9c1c678c55 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_130.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml index df53c92332..4ff569b5ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1314.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml index 05954cac09..643722ddba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_152.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml index de40006ba8..9465d4b578 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1632.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml index 78911f1ce3..011c0768db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1727.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml index 5429672e91..14b7a97e88 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_174.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml index 65495571ab..9f375d7e8e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1786.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml index 1446400a1a..6275681a1e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1802.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml index 5e14f06f11..7084ad5be0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_184.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml index efe1f7d0d9..d91f2d7924 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_1935.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml index add3dea50c..13d72ae3ac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2098.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml index fd04b58828..23990414fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2156.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml index a1e6eefb71..8d9b6db7fa 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2186.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml index c5adcd7696..491ac412f7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2395.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml index b6dbab4e82..d32bb5b1e8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2491.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml index 77fe9ff45a..8045f3cb91 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2575.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml index 25879c2e80..bca59ede7e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2649.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml index f8c67315ef..8fc7f929bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2720.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml index d32bbdfd35..2a60259781 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2828.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml index a5a028f23e..58a70a86c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2904.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml index f95bbd7893..f819a0f9db 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_2999.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml index 5341325edf..407694dcf7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_315.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml index 2d48ab3c82..36476d39b1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_375.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml index c65c176e69..8573a706ad 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_417.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml index 54db0747fc..c9e5f0c5ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_559.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml index 7bb58e53df..bab4973576 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_624.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml index 721627c3c7..2e14522325 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_791.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml index 165d7c98f0..e8072ea910 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_796.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml index 1b9ee8232d..45ba50df65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_81.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml index ecf55c952e..1acc1778a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_835.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml index 8b82183693..73c3e78a4c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_851.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml index 499fad5d49..538fece789 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_947.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml index 79870a1b2b..9d46d190ba 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_959.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml index 8714e93ece..0e599fbd73 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2018-01-01/hh_id_98.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml index 69b928dd99..64975aa65b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1014.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml index d68fc890d1..00a767419a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1093.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml index 17cc533360..657e00a9c1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1098.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml index 8eeb6167eb..184167536a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_111.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml index 64f0498f7a..6da667cf65 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1180.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml index ed7fc27dc9..a033e40634 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1210.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml index f26bd5656a..9172960aa6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1354.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml index 1087f5def6..57a11f9f99 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1629.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml index 1228a6742b..1a078b4223 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1695.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml index 021eddb754..ec937fe73e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1709.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml index afe73b4d0b..56f0503d47 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_180.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml index f8a9a416fd..fdf3524a29 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1825.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml index 80a25ce885..13867a2a56 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_1846.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml index a143e7fc57..21bdccb812 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2025.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml index 0298fdae4d..98d4a75ac2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2070.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml index 5afd6f6fd1..6a8063c93d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2159.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml index cf37a50184..f2a8dbbadd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2204.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml index 473e37cc20..c175ee68b6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2375.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml index 5a30266d8c..acd0b78305 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2393.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml index 6a830de0e3..32c02d2a6d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2469.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml index f030e2a658..0e50457360 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2516.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml index 8fc5f2c22d..5b20619f56 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_265.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml index 8017e531b4..35253617ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2708.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml index 94b819f9fe..12d9acf4c6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2729.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml index 837b8075cc..653e5a8f09 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2736.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml index bcb2098d66..6364079fe3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2760.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml index c3ca6c6a24..07c39bbf30 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2818.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml index f29a5b69a1..20400b8128 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_286.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml index 170692bc81..eb1041b23c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2900.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml index 844fc21bb5..e3491e48ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2904.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml index ea096e860a..c6e6860ab7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_2942.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml index 7d64867838..147c6cf320 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_317.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml index a676eda523..e977dd5928 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_331.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml index e20fb48670..ab4accef9c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_396.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml index f32c5240c3..dd73a3177c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_420.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml index 9ad1535adb..2971560840 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_605.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml index 00459e8ac9..4817d08034 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_646.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml index 8572245bed..2344e5773a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_65.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml index 94a6f56876..7bb6e25d55 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_664.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml index 502c4f7f52..2799fce7cc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_698.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml index fce365fc62..1e9f80e051 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_710.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml index 367763efca..f7e9b0d38a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_715.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml index e2ffcbc1f4..4a0d720bc3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_809.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml index cbe7b78de7..e931056870 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_816.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml index 92c5f7144e..d608ce345f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_832.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml index 85e155d471..1d909822bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_879.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml index f237774a14..7f94134331 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_882.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml index a441e3a74a..f420233d1e 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_949.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml index 293858a6f5..5159229975 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2019-01-01/hh_id_978.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml index 04288693f9..a943418f4f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1015.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml index 0af3811ff7..5f46c9a6ce 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1096.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml index 256f275140..88600dd64b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1118.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml index c24409c87e..7ef616ebaf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1273.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml index e3387ecb5b..2e32e9b5a5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_13.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml index 82501a22b1..31e3d46a8f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1310.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml index 0e2bde8de8..a2a86b669a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1378.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml index 5080e0a208..2696cc2db6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1417.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml index 976c211584..aea5421d44 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1468.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml index fa97daa2c2..00839091c9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_160.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml index 20f16fb5bd..c017cdce64 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_161.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml index 2db6242d32..3263d4dfeb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1705.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml index de81563466..2efa6c30fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1767.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml index 5f628c7434..0e4365ee3c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1775.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml index 8a40fecac1..1f12c18955 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1788.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml index a5a68d9364..3323a43b91 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1790.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml index 7920fcba1e..d49b2a8096 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_1928.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml index 772e625972..4ac2dbf675 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2106.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml index fa2dff905b..185974e7f1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2182.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml index 06f44032f2..51cbcd61ec 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2184.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml index 7b2f9254ef..47d5e6eb31 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2230.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml index e8da68b4c2..a263337e32 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2320.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml index 0993d923df..0ea19b4704 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2389.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml index 446b5db842..2fd897ccd2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2439.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml index d84445488e..4b32277e38 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2527.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml index d01cce1ee9..90f23d9989 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2562.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml index 9f0a1db89a..7ba2b94004 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2587.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml index 05f4387fe3..054f493da4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_266.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml index bbf1d4312d..202794ac62 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2888.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml index 4599fb4ff3..55891e55bf 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2898.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml index 1cfcf7e9a2..7bf5821124 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2920.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml index e4b1e79459..1d9cb02305 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2953.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml index c66a9fde2f..eef3cd601d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_2998.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml index ad180f8498..acf97358e9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_367.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml index c5e2280a5b..d7fe3de5b1 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_400.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml index 1fb1ca8424..0bfb6856a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_409.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml index be2d251768..36918e599f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_481.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml index 61fae6b1ff..fb295578a7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_513.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml index 6c3b3170a5..d35b22966f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_630.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml index 1c2bb3366c..7600e1e5fc 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_648.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml index 652f9a2a95..94ff97f3eb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_70.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml index 5422a94bdd..f5f8737266 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_798.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml index b258a1ad4c..cfef05ee5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_835.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml index b47b8a8f3c..5de7f2a218 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_901.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml index 4f1deb7d1f..5d7f524855 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_926.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml index 5b2b4b774a..9f51961ada 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2020-01-01/hh_id_949.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml index 13f0b491f4..80baf0bfed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_111.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml index 550728e92a..23a1c843fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1186.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml index 6a80ef007e..d763ed2f15 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1204.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml index b43e0ca907..86e486ddf8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1237.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml index 4b65a0a25c..f3654317d4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1255.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml index c3721dbf5b..a48f44cb6a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1380.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml index b98d89b5e5..b414f53865 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1385.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml index 07282426fc..400e523313 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1402.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml index 809b0e835d..7817bbb1d0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_145.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml index d157e92c01..56091f7ee6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1538.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml index e25a93b622..2b6347d6fe 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1610.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml index 4d3c04c6c7..b2bfd69c72 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_165.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml index 060d1c83f7..1cdbbe5514 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1714.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml index 9581caa582..d2848f1fe0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1762.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml index 308103e456..8154419f01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1853.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml index 24f9c88273..2dea4ffeae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1908.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml index 70192f9de2..28f17930a8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_1999.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml index d4ef52cf38..b1f64a1750 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2022.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml index 9f57669ed9..614affb132 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2208.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml index 31d613cf48..8babc47e40 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_225.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml index 6c2d85b3d0..875e4329ac 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2258.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml index f6263c3446..9ddf622f97 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2295.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml index cc06f679cb..fc62deb815 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_238.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml index 6cab7ecd68..d524e03f78 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2400.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml index 995cfe6a6a..98a5c1154b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2416.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml index c8c7bc084f..c2702c7671 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2476.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml index 3d9e3bacc2..3cb6a6ab18 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_262.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml index 057212f8c6..43c8181ec3 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2766.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml index 820d0612cf..3116eb7d24 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2782.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml index 24a9f0adfb..8c73762cd8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2836.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml index bafd0509ca..be5b6cb778 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2886.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml index 315189eef4..1d33324c37 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2945.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml index 1fed370be4..bbaa0165cd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_2946.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml index 5e9b6f547f..d6fc88a382 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_299.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml index 3544eea580..73ec9d2077 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_318.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml index 8029961cd9..55cfb63dc2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_321.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml index 431790ce4f..f4095e8f4b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_33.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml index 6802f414ee..998f470f27 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_417.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml index a28a4d921b..963df65974 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_479.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml index 436b15ff74..0b48702d26 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_519.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml index 7ca833004f..4801a30526 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_522.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml index 0becc46497..1d6587e152 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_618.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml index 0ace3068fd..db5dccc36c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_620.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml index c076770c63..d464c69954 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_651.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml index 3b764042f8..b72c0b3be7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_738.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml index 6f517a1c00..ad8e817b75 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_761.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml index 2c4226838f..1ed4032823 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_788.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml index c5b15e35bd..7cd423e5b5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_798.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml index cdc2fd784b..2d3b7fda0c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_810.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml index 8f15c9ed2f..f34c652b7b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_864.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml index e106bca827..f9c7aff3e4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_867.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml index 1cc7e35fe6..89c3ea46ae 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_883.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml index c480ff5959..88615b1530 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_885.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml index 4f1fd42627..68aa07609a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_9.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml index 611a801822..2dec93999d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_946.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml index c9fb64d501..6db97cfa9b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2021-01-01/hh_id_948.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml index 911dd98c7d..e74768a089 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1019.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml index 4f1a491292..6f212f3b3b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1166.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml index 0138518f71..9c68cecd3b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1209.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml index e8bfa95245..ef8d7be17b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1305.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml index 12ae8bb34d..b3fdb1cd5f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1364.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml index a251b3c085..5c7100240f 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1473.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml index 9133b362b3..ecbb73e1fb 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1519.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml index 5f2a664530..cba31a251d 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1667.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml index b8b6f22de0..456fdb80ea 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1770.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml index 78bedb5ee1..f2fac29c39 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1784.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml index 1c01345cd6..71db92ed4b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1881.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml index b45c82eb72..5f4cb99bd6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1904.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml index 8f74121b02..7107908f57 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1907.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml index cbb34f7bbe..19e60d34b2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_1918.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml index 45a28b8149..bd484d9e5a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2099.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml index a18887a25d..57ceec35fd 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2111.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml index c0b6d03bf4..d3acf8d30b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2118.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml index 2a5887a1a3..2f75d9cb85 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2129.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml index 8b815d02b5..b759caa8df 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_224.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml index bac5687d74..c44cdfd9f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_241.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml index 4445eabee8..1f4d3d0aef 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2410.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml index d08c2a00f8..a8a56fce64 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2423.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml index cc03a5e305..944801d6a2 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2428.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml index eb2bf3ef93..ba9206d357 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2439.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml index 8c701e2c52..09d6b98f2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2447.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml index 79db0a0836..972202158a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2868.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml index c5d5c511f7..f5561bee01 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_2962.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml index f19dadad85..b6119ff9f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_664.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml index 03bac5309f..541b95e0b8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_688.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml index 5962cba20d..5e5b960829 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_720.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml index b6132a670e..8ad6f70af9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_840.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml index 30226ff337..2871e7b042 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_848.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml index 52a2b34cf0..06e06baf13 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2022-01-01/hh_id_963.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml index 8438daab6e..b21269b289 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1019.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml index 595aa4bbe3..d3c2fd3d0a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1166.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml index a3e068bf1f..e63923ce7b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1209.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml index f6f1b1c460..5d96119ec4 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1305.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml index 3938d7cb7c..2fd9244b84 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1364.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml index ff6f8a6486..58f9868eb5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1473.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml index 0c7acebc68..f0d0f0bd16 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1519.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml index 0b0c075378..e09aa5f67c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1667.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml index 99c2b31289..a2ef59770c 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1770.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml index c3b44b35a4..d63ee3ac54 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1784.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml index adb98992cc..ab0207bfd8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1881.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml index 8fc283f772..3fa6ed7b97 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1904.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml index da07c5864f..db486569a6 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1907.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml index 4b0a0a40cd..be76421fe8 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_1918.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml index 2ae7e5560e..8fcb77f2d7 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2099.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml index 07798cb868..999de5c207 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2111.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml index e0049443bb..947e4315e9 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2118.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml index 2a5887a1a3..2f75d9cb85 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2129.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml index a79aa725e3..b3b0a3ca36 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_224.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml index bac5687d74..c44cdfd9f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_241.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml index ace1130ac6..f608a6c016 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2410.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml index f7fc0ac5d3..c883275a2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2423.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml index aae9dc8e2d..3092e2a6be 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2428.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml index 7cabc93a59..576c2a0dff 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2439.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml index 8c701e2c52..09d6b98f2b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2447.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml index b89cf7865f..79e9de758a 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2868.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml index e1b3e1cd4f..31025ecfd0 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_2962.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml index f19dadad85..b6119ff9f5 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_664.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml index 8f4865627b..ee678e1448 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_688.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml index 91d29c0fdc..b2aa91b750 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_720.yaml @@ -43,7 +43,7 @@ inputs: - true regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml index 18c9dc2d1c..76ad2927ed 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_840.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml index 30226ff337..2871e7b042 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_848.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml index dcc73fbb73..9812b6014b 100644 --- a/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml +++ b/src/_gettsim_tests/test_data/lohnsteuer/2023-01-01/hh_id_963.yaml @@ -43,7 +43,7 @@ inputs: - false regulär_beschäftigt: - true - wohnort_ost: + wohnort_ost_hh: - true outputs: lohnsteuer: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index b1169ed9cb..972c398cfd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -51,7 +51,7 @@ inputs: p_id: - 9 - 10 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index 4a0f517a5f..cfbfe99f35 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -38,7 +38,7 @@ inputs: - 7 p_id: - 11 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml index 95eb147d52..237275a042 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2015-01-01/skip_hh_id_5.yaml @@ -45,7 +45,7 @@ inputs: p_id: - 7 - 8 - wohnort_ost: + wohnort_ost_hh: - true - true outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index 7e9d3349ac..b1210d23aa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -38,7 +38,7 @@ inputs: - 1 p_id: - 1 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index a918ee6c5e..44532e3d45 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -38,7 +38,7 @@ inputs: - 2 p_id: - 2 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index acbe0e3bc3..b5d1fa7fff 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -51,7 +51,7 @@ inputs: p_id: - 3 - 4 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index 2426596604..63e8dc41b4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -51,7 +51,7 @@ inputs: p_id: - 5 - 6 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 01d00247bc..f8d13c295f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -46,7 +46,7 @@ inputs: private_rente_betrag_m: - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index 015418dcab..23dd42151d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index dd364e1088..4ddcb5917f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index bceb4f0848..61a7826bc5 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index 592b5d47b7..f9150c745e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index 98c32fabef..db0091bfaa 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -37,7 +37,7 @@ inputs: - 1000.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 42fd2dccf0..119ce221f8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index d1e5caaf3c..119f79a32a 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -47,7 +47,7 @@ inputs: private_rente_betrag_m: - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index e6e9864a7c..1ea2924dd0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 5448af2742..c293b6a8d1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index bb38ac8d40..69e4ebfbd3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index 442e1c123e..b8d045c52c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index d8c17dbc8d..26c0f2cc69 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index 7c90025895..10287d9454 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index fed67697ef..2fa8333a72 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 88fd762143..7acd727741 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index 6a9c60c095..1e2cf0431e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index e9293c811f..bc92b5e701 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index f668ff3a3b..b9ca5c8563 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index f15a40fe5f..93a7907b1b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index 553642f18a..56a834abf6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index f2665ca46a..8a5b5e07b2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index a6ff0cbbb3..ccd24067f9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index de625de0ff..3032e2a7dc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index 8ee551701f..6529f3542e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 88b7019e4e..417238bd8b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index 74b2aecd99..6473dcd74e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index a0274a7d76..23c7695ab1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -37,7 +37,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index 71f543a37d..cdbb660841 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -39,7 +39,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index c6c86968ba..5841a8be45 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -42,7 +42,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 3787e27c61..3c3ab7d652 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -42,7 +42,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index ade4e22db3..956251fc06 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -42,7 +42,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index 7f4f6efe88..9066bbe2ec 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -42,7 +42,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index b8895ce2d9..172a9bc661 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -42,7 +42,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" index b763107331..2040f5ee70 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" @@ -39,7 +39,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" index c74a1763a7..52cba2834f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" @@ -39,7 +39,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" index d13f4f83b2..830f24aef6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" @@ -39,7 +39,7 @@ inputs: - 0.0 private_rente_betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" index 97682057db..a9db471dd7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" @@ -65,7 +65,7 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" index d1b6bf4ac8..9d4f65b100 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" @@ -61,7 +61,7 @@ inputs: - 0.0 - 0.0 - 0.0 - wohnort_ost: + wohnort_ost_hh: - false - false - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml index 457b15f513..818425e1bc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/1996-07-01/cohort_1936_wegen_arbeitsl.yaml @@ -62,7 +62,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index 82e75d5740..7a3d34781a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index 11d7ab5182..623e544f45 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -70,7 +70,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index 5f6825556e..ae71383cc5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 01c6b02327..1ca341271f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -68,7 +68,7 @@ inputs: - 420.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 05d6742fea..58dfe42994 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 650c20c57a..9a03bb42f2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -70,7 +70,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index a665a922d4..ef123c8b55 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -66,7 +66,7 @@ inputs: - 420.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index c24f3ad719..fd76f6e954 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index f4680a0896..b2012a2a74 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index e50cf344fa..18ec8c2a88 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index c67a0120c1..244852bcdf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -70,7 +70,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 8db63dc7f4..01d85f8916 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index 14eb7ca43d..37e6e6f15b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index c6e945929e..8b7e2100eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index 1769c0da05..ac6c70b298 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index f8264761ea..18d954a369 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -73,7 +73,7 @@ inputs: - 420.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index e2c16c96ff..ce51344d3d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index 1cf9e28493..7eff8d44ab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index 01354e0926..fda9bf5431 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index 0042b9e8ce..b3ff27147a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 7d7419b439..6b8b195bc9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index b97a9f0c6f..c31d2bbd92 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index 02e42d0432..9ba713654f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index 05d6742fea..58dfe42994 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index 05d6742fea..58dfe42994 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index 174d3df5b4..a3f0b616f9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index ff04870ba2..817b20d258 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 33f03fa9e0..878d5549c8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -68,7 +68,7 @@ inputs: - 182.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index cd024da2e9..17fe562090 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -68,7 +68,7 @@ inputs: - 430.0 weiblich: - true - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index 8e75541b90..560caacbb8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index 436dfe1783..2af5391882 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -70,7 +70,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index 150cc7f564..c2d07f2f2e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -70,7 +70,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 5ac5ba35c6..6269e44c20 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -68,7 +68,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index cfe3a28b85..8973ee9230 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -66,7 +66,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index cfe3a28b85..8973ee9230 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -66,7 +66,7 @@ inputs: - 60.0 weiblich: - false - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index e8b997691c..4381aa5343 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 0fb35de281..53ad16e52b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 2 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml index 85890168d6..cfbf36c157 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.949 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml index be9f716a0b..0e7c5cfb78 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1940_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml index 7e45b48ff8..2606751d8b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.901 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml index b3c208add9..7a56030b8f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1941_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 174c7f89c3..3005fdf62f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 1cbf872b82..72ac14c046 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index e7add87e02..18d9afa72c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 2b1e3bee76..91eb72922c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2001-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index 29e86c78ac..27748a046b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 9b2ca8b428..ca0ec53771 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 2 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml index ddf1a997a3..176a85b524 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml index b44d9d75c1..d62a7d4b19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1943_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml index aa0902cb60..6f51597842 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.937 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml index 43bb174830..a0e208a9fe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1945_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 6984034148..65a1720171 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 6dfc1de7b8..566c155ae1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index ab626f8818..228c386e07 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 51e128f9bc..d9fb0ce0a8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2004-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml index d0bacc950f..bed6e13bbc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 30ade68d0e..1c4af6fea6 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/teilw_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 2 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml index ce0a8d8c85..d71edc2823 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml index 8749812272..83b697a6f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1950_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 7d8af56207..585c8ea0f7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index f18dadb8cc..b39f8be9f4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index f92c7228d7..07f4ad1974 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 7e6ad659d4..9d905d216b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 56ef638cf3..d628a686a0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 85c42476ee..3851fde5c9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2008-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml index 503ea1dac6..03921e09ac 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml index 4c763156c5..ccfd0c71b3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/teilw_erwerbsgemindert_birthyear_1990_2_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 2 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index 5f2880ddbe..ff04d41162 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index dfaa9e4e98..b5f7b43c80 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index eacd499508..adaeb9ffe9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index a03b6c455d..f68d8398e1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index ba20a985db..3da0ccd538 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index 865f07b2db..ae12d92277 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index 15c04f4645..2d623c7bde 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 0c4e774487..657912cc19 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2012-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -38,7 +38,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml index f85cf828dc..ee8ea5fcd1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index d5efed79a9..ca3e739d37 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/teilw_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 1 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml index ff489eb007..3ad4afec97 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml index 5eca5ea4d8..ff0e6a7eb5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1960_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index e1460f8caf..372b345d70 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 0a21172bcd..41b977f403 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml index 91d1682660..7115c253d7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml index ebedb49a0d..01cf3fb001 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1980_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml index 58168d79e9..b374de099a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml index 82001af7fd..db222ae09c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2018-01-01/voll_erwerbsgemindert_birthyear_1990_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml index 4e85ff5859..c8a08999a3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml index 7fd167c307..bb4081d9cf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_2_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 2 pflichtbeitragsmonate: - 20.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml index ac6a44032a..22251a16f3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_claim.yaml @@ -20,7 +20,7 @@ inputs: - 0.5 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml index 53547eb07c..416aadadf1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/teilw_erwerbsgemindert_birthyear_2000_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 2 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml index cdca7a635f..a80445da35 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.997 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml index 9924bb789a..c1bc9572eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1957_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 6 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml index 7c15d30cda..acaf03cb4f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml index f521e00933..3c4c202a8e 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_2_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 8 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml index 9a14b239c9..a2199c7fc2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml index 36a5312dd9..6352d183cb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1970_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 10 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - false provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml index 4aa17d1e91..c2b9a91fa9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_claim.yaml @@ -20,7 +20,7 @@ inputs: - 1.0 zugangsfaktor: - 0.892 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml index c9b87104ca..f5bec31904 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2020-01-01/voll_erwerbsgemindert_birthyear_1995_preliminary_products.yaml @@ -36,7 +36,7 @@ inputs: - 4 pflichtbeitragsmonate: - 60.0 - wohnort_ost: + wohnort_ost_hh: - true provided: {} outputs: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml index f5f0d683cb..412ecf7df0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml @@ -33,7 +33,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" index 0f0e00fddb..2829156b58 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" @@ -33,7 +33,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml index 8ba7ed7117..5058e333f8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml index c22ad2d6b9..e637412b66 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml index 8422bc14b9..abdc2cb73f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml index e380e75c28..bef675e772 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml index 5f5cbcb934..bd3f55bad1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml index 8db503a928..8d9a323b81 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml index e0b6b15ad5..56395e61e0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml index 937844dec6..aa0f99c6e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml @@ -35,7 +35,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml index f81882d342..f6ee40f6c5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml @@ -31,7 +31,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml index cc3fe34012..6a3a543fe9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml @@ -31,7 +31,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml index 672a72a1c8..bdd14f75d9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml @@ -31,7 +31,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml index 5469071e2a..e39ea80ad3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml @@ -31,7 +31,7 @@ inputs: grundrente: betrag_m: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index 0c9e71003d..f928af5733 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -60,7 +60,7 @@ inputs: - 420 mean_entgeltpunkte: - 14.014 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index cc3677e5fb..7d42a7584a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -59,7 +59,7 @@ inputs: - 492 mean_entgeltpunkte: - 41.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index 071c6f6222..d2c67b75d5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -61,7 +61,7 @@ inputs: - 516 mean_entgeltpunkte: - 15.5 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index 950beaed9c..a5acbb33dd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -58,7 +58,7 @@ inputs: - 0 mean_entgeltpunkte: - 0.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index e501520800..27315bc42c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -60,7 +60,7 @@ inputs: - 420 mean_entgeltpunkte: - 17.5 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index df65585e2c..9ed039e1d1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -61,7 +61,7 @@ inputs: - 420 mean_entgeltpunkte: - 21.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index ab84abf463..b59eb74c9b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -60,7 +60,7 @@ inputs: - 480 mean_entgeltpunkte: - 28.8 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index 1a5c6768e9..48f1c22319 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -60,7 +60,7 @@ inputs: - 408 mean_entgeltpunkte: - 18.7 - wohnort_ost: + wohnort_ost_hh: - true outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index 0f1528aecb..f4fb9cd067 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -59,7 +59,7 @@ inputs: - 480 mean_entgeltpunkte: - 15.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index 5bae86312d..cb9172bb1b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -59,7 +59,7 @@ inputs: - 480 mean_entgeltpunkte: - 15.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 04740b6801..e50bf4fec8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -59,7 +59,7 @@ inputs: - 480 mean_entgeltpunkte: - 15.0 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 5ab8c055cc..a260e88542 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -61,7 +61,7 @@ inputs: - 552 mean_entgeltpunkte: - 34.5 - wohnort_ost: + wohnort_ost_hh: - false outputs: sozialversicherung: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml index 33510592b2..110cf905e8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -78,7 +78,7 @@ inputs: mean_entgeltpunkte: - 15.0 - 15.0 - wohnort_ost: + wohnort_ost_hh: - false - false outputs: diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index 13fa7fd6a8..3ef5ef4503 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -419,7 +419,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index eb388bfb55..138f06fc00 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -288,7 +288,7 @@ inputs: - 70.0 - 70.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index 619dd8731e..6800670e21 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -162,7 +162,7 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 outputs: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index fde60c8a6f..d8e4cacba8 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -159,7 +159,7 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 outputs: diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 1346bdb801..6440063891 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -159,7 +159,7 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 outputs: diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index 389bf838ce..1feb24ba66 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -206,7 +206,7 @@ inputs: - 50.0 - 50.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index b46c7e19b2..8bfbf7e23c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -632,7 +632,7 @@ inputs: - 120.0 - 120.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index 518ea3fc7c..e131f03403 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -331,7 +331,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 4 - 4 - 4 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 84b38bfdaa..6ec8564611 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -331,7 +331,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 4 - 4 - 4 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index 1b4b8de28e..6c18ad9f6b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -116,7 +116,7 @@ inputs: wohnfläche_hh: - 40.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 outputs: wohngeld: diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 1949892339..afd0d67816 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -118,7 +118,7 @@ inputs: wohnfläche_hh: - 40.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 outputs: wohngeld: diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index b145be968c..0500003f3d 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -120,7 +120,7 @@ inputs: wohnfläche_hh: - 40.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 mindesteinkommen_erreicht_bg: - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index 3d0f30782f..16666f210e 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -120,7 +120,7 @@ inputs: wohnfläche_hh: - 40.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 mindesteinkommen_erreicht_bg: - true diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index d5d164eec6..4d33855cda 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -210,7 +210,7 @@ inputs: - 60.0 - 60.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 8c18f26c46..1832df5bb3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -345,7 +345,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 1 - 1 - 1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index a1569da9a5..46faa50bed 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -255,7 +255,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 3 - 3 - 3 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 666c987818..47d8363dee 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -300,7 +300,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 1 - 1 - 1 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index 8eb2ef52a0..8f537a495c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -325,7 +325,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 - 5 - 5 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index a76bc49800..0bc78a7ac3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -300,7 +300,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 - 5 - 5 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 2a24081326..3239e55e8c 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -390,7 +390,7 @@ inputs: - 100.0 - 100.0 wohngeld: - mietstufe: + mietstufe_hh: - 5 - 5 - 5 From 27e081e9a2dd6b7c9be337aceccc039158855a5e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sun, 13 Jul 2025 12:22:46 +0200 Subject: [PATCH 065/109] Rente angleichung ost west (#1012) ### What problem do you want to solve? Closes #925, #810 --- src/_gettsim/inputs.py | 2 +- .../rente/altersrente/altersrente.py | 48 ++--- .../rente/altersrente/entgeltpunkte.py | 79 ------- .../sozialversicherung/rente/entgeltpunkte.py | 116 +++++++++++ .../rentenformel.yaml => entgeltpunkte.yaml} | 157 -------------- .../erwerbsminderung/erwerbsminderung.py | 135 ++++++------ .../rente/grundrente/grundrente.py | 10 +- .../sozialversicherung/rente/inputs.py | 19 +- .../rente/rentenformel.yaml | 157 ++++++++++++++ ...ne_unterschied_entgeltpunkte_ost_west.yaml | 196 ++++++++++++++++++ .../2025-01-01/wohnort_ost_irrelevant.yaml | 194 +++++++++++++++++ .../rente/betrag/2010-07-01/hh_id_1.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_19.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_2.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_24.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_25.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_3.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_30.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_4.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_5.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_6.yaml | 12 +- .../rente/betrag/2010-07-01/hh_id_7.yaml | 12 +- .../rente/betrag/2012-07-01/hh_id_10.yaml | 12 +- .../rente/betrag/2012-07-01/hh_id_11.yaml | 12 +- .../rente/betrag/2012-07-01/hh_id_8.yaml | 12 +- .../rente/betrag/2012-07-01/hh_id_9.yaml | 12 +- .../rente/betrag/2014-07-01/hh_id_25.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_12.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_13.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_14.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_15.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_16.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_17.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_18.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_19.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_25.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_26.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_27.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_28.yaml | 12 +- .../rente/betrag/2015-07-01/hh_id_29.yaml | 12 +- .../rente/betrag/2018-07-01/hh_id_20.yaml | 12 +- .../rente/betrag/2018-07-01/hh_id_21.yaml | 12 +- .../rente/betrag/2018-07-01/hh_id_22.yaml | 12 +- .../rente/betrag/2018-07-01/hh_id_23.yaml | 12 +- .../rente/betrag/2018-07-01/hh_id_24.yaml | 8 +- .../rente/betrag/2018-07-01/hh_id_25.yaml | 8 +- ...eltpunkte_update_unterschied_ost_west.yaml | 51 +++++ ...eltpunkte_update_einheitlich_ost_west.yaml | 51 +++++ ...tgeltpunkte_ohne_ost_west_unterschied.yaml | 37 ++++ 49 files changed, 1115 insertions(+), 549 deletions(-) delete mode 100644 src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py create mode 100644 src/_gettsim/sozialversicherung/rente/entgeltpunkte.py rename src/_gettsim/sozialversicherung/rente/{altersrente/rentenformel.yaml => entgeltpunkte.yaml} (57%) create mode 100644 src/_gettsim/sozialversicherung/rente/rentenformel.yaml create mode 100644 src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml create mode 100644 src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2023-07-01/entgeltpunkte_update_unterschied_ost_west.yaml create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2025-01-01/entgeltpunkte_update_einheitlich_ost_west.yaml create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2025-01-01/entgeltpunkte_ohne_ost_west_unterschied.yaml diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index f707763920..240c8eb9ad 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -57,6 +57,6 @@ def weiblich() -> bool: """Female.""" -@policy_input() +@policy_input(end_date="2024-12-31") def wohnort_ost_hh() -> bool: """Whether the household is located in the new Länder (Beitrittsgebiet).""" diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index 0c14722023..d3a7448272 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -53,7 +53,7 @@ def bruttorente_basisbetrag_m_nach_wohnort( sozialversicherung__rente__entgeltpunkte_ost: float, sozialversicherung__rente__entgeltpunkte_west: float, sozialversicherung__rente__bezieht_rente: bool, - parameter_rentenwert_nach_wohnort: dict[str, float], + sozialversicherung__rente__parameter_rentenwert_nach_wohnort: dict[str, float], ) -> float: """Old-Age Pensions claim. The function follows the following equation: @@ -68,9 +68,9 @@ def bruttorente_basisbetrag_m_nach_wohnort( if sozialversicherung__rente__bezieht_rente: out = ( sozialversicherung__rente__entgeltpunkte_west - * parameter_rentenwert_nach_wohnort["west"] + * sozialversicherung__rente__parameter_rentenwert_nach_wohnort["west"] + sozialversicherung__rente__entgeltpunkte_ost - * parameter_rentenwert_nach_wohnort["ost"] + * sozialversicherung__rente__parameter_rentenwert_nach_wohnort["ost"] ) * zugangsfaktor else: out = 0.0 @@ -78,18 +78,12 @@ def bruttorente_basisbetrag_m_nach_wohnort( return out -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_function( - start_date="2023-07-01", -) +@policy_function(start_date="2023-07-01") def bruttorente_basisbetrag_m( zugangsfaktor: float, - sozialversicherung__rente__entgeltpunkte_ost: float, - sozialversicherung__rente__entgeltpunkte_west: float, + sozialversicherung__rente__entgeltpunkte: float, sozialversicherung__rente__bezieht_rente: bool, - rentenwert: float, + sozialversicherung__rente__rentenwert: float, ) -> float: """Old-Age Pensions claim. The function follows the following equation: @@ -103,11 +97,8 @@ def bruttorente_basisbetrag_m( """ if sozialversicherung__rente__bezieht_rente: out = ( - ( - sozialversicherung__rente__entgeltpunkte_west - + sozialversicherung__rente__entgeltpunkte_ost - ) - * rentenwert + sozialversicherung__rente__entgeltpunkte + * sozialversicherung__rente__rentenwert * zugangsfaktor ) else: @@ -116,19 +107,6 @@ def bruttorente_basisbetrag_m( return out -@policy_function(start_date="1992-01-01", end_date="2023-06-30", leaf_name="rentenwert") -def rentenwert_nach_wohnort( - wohnort_ost_hh: bool, - parameter_rentenwert_nach_wohnort: dict[str, float], -) -> float: - """Rentenwert.""" - return ( - parameter_rentenwert_nach_wohnort["ost"] - if wohnort_ost_hh - else parameter_rentenwert_nach_wohnort["west"] - ) - - @policy_function() def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt: float, @@ -138,7 +116,7 @@ def zugangsfaktor( altersgrenze_vorzeitig: float, vorzeitig_grundsätzlich_anspruchsberechtigt: bool, regelaltersrente__grundsätzlich_anspruchsberechtigt: bool, - zugangsfaktor_veränderung_pro_jahr: dict[str, float], + sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr: dict[str, float], ) -> float: """Zugangsfaktor (pension adjustment factor). @@ -183,7 +161,9 @@ def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt - referenzalter_abschlag ) - * zugangsfaktor_veränderung_pro_jahr["vorzeitiger_renteneintritt"] + * sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr[ + "vorzeitiger_renteneintritt" + ] ) else: # Early retirement although not eligible to do so. @@ -201,7 +181,9 @@ def zugangsfaktor( sozialversicherung__rente__alter_bei_renteneintritt - regelaltersrente__altersgrenze ) - * zugangsfaktor_veränderung_pro_jahr["späterer_renteneintritt"] + * sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr[ + "späterer_renteneintritt" + ] ) # Retirement between full retirement age and normal retirement age: diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py deleted file mode 100644 index 6827bf604d..0000000000 --- a/src/_gettsim/sozialversicherung/rente/altersrente/entgeltpunkte.py +++ /dev/null @@ -1,79 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import policy_function - -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 - - -@policy_function() -def entgeltpunkte_west_updated( - wohnort_ost_hh: bool, - sozialversicherung__rente__entgeltpunkte_west: float, - neue_entgeltpunkte: float, -) -> float: - """Updated Entgeltpunkte from West Germany based on current income. - - Given earnings, social insurance rules, average earnings in a particular year and - potentially other variables (e.g., benefits for raising children, informal care), - return the new earnings points. - """ - if wohnort_ost_hh: - out = sozialversicherung__rente__entgeltpunkte_west - else: - out = sozialversicherung__rente__entgeltpunkte_west + neue_entgeltpunkte - return out - - -@policy_function() -def entgeltpunkte_ost_updated( - wohnort_ost_hh: bool, - sozialversicherung__rente__entgeltpunkte_ost: float, - neue_entgeltpunkte: float, -) -> float: - """Updated Entgeltpunkte from East Germany based on current income. - - Given earnings, social insurance rules, average earnings in a particular year and - potentially other variables (e.g., benefits for raising children, informal care), - return the new earnings points. - """ - if wohnort_ost_hh: - out = sozialversicherung__rente__entgeltpunkte_ost + neue_entgeltpunkte - else: - out = sozialversicherung__rente__entgeltpunkte_ost - return out - - -@policy_function() -def neue_entgeltpunkte( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - wohnort_ost_hh: bool, - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, - beitragspflichtiges_durchschnittsentgelt_y: float, - umrechnung_entgeltpunkte_beitrittsgebiet: float, -) -> float: - """Return earning points for the wages earned in the last year.""" - # Scale bruttolohn up if earned in eastern Germany - if wohnort_ost_hh: - bruttolohn_scaled_east = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - * umrechnung_entgeltpunkte_beitrittsgebiet - ) - else: - bruttolohn_scaled_east = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - ) - - # Calculate the (scaled) wage, which is subject to pension contributions. - if ( - bruttolohn_scaled_east - > sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - ): - bruttolohn_scaled_rentenv = ( - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m - ) - else: - bruttolohn_scaled_rentenv = bruttolohn_scaled_east - - return bruttolohn_scaled_rentenv / (beitragspflichtiges_durchschnittsentgelt_y / 12) diff --git a/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py new file mode 100644 index 0000000000..e261629ca9 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py @@ -0,0 +1,116 @@ +from __future__ import annotations + +from ttsim.tt_dag_elements import policy_function + + +@policy_function(end_date="2023-06-30") +def entgeltpunkte_west_updated( + wohnort_ost_hh: bool, + entgeltpunkte_west: float, + neue_entgeltpunkte: float, +) -> float: + """Updated Entgeltpunkte from West Germany based on current income. + + Given earnings, social insurance rules, average earnings in a particular year and + potentially other variables (e.g., benefits for raising children, informal care), + return the new earnings points. + """ + if wohnort_ost_hh: + out = entgeltpunkte_west + else: + out = entgeltpunkte_west + neue_entgeltpunkte + return out + + +@policy_function(end_date="2023-06-30") +def entgeltpunkte_ost_updated( + wohnort_ost_hh: bool, + entgeltpunkte_ost: float, + neue_entgeltpunkte: float, +) -> float: + """Updated Entgeltpunkte from East Germany based on current income. + + Given earnings, social insurance rules, average earnings in a particular year and + potentially other variables (e.g., benefits for raising children, informal care), + return the new earnings points. + """ + if wohnort_ost_hh: + out = entgeltpunkte_ost + neue_entgeltpunkte + else: + out = entgeltpunkte_ost + return out + + +@policy_function(start_date="2023-07-01") +def entgeltpunkte_updated( + entgeltpunkte: float, + neue_entgeltpunkte: float, +) -> float: + """Updated Entgeltpunkte based on current income.""" + return entgeltpunkte + neue_entgeltpunkte + + +@policy_function(end_date="2024-12-31", leaf_name="neue_entgeltpunkte") +def neue_entgeltpunkte_nach_wohnort( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + wohnort_ost_hh: bool, + beitrag__beitragsbemessungsgrenze_m: float, + beitragspflichtiges_durchschnittsentgelt_y: float, + umrechnung_entgeltpunkte_beitrittsgebiet: float, +) -> float: + """Earnings points for the wages earned in the current year.""" + # Scale bruttolohn up if earned in eastern Germany + if wohnort_ost_hh: + umgerechneter_bruttolohn = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + * umrechnung_entgeltpunkte_beitrittsgebiet + ) + else: + umgerechneter_bruttolohn = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + + # Calculate the (scaled) wage, which is subject to pension contributions. + if umgerechneter_bruttolohn > beitrag__beitragsbemessungsgrenze_m: + versicherungspflichtiger_bruttolohn = beitrag__beitragsbemessungsgrenze_m + else: + versicherungspflichtiger_bruttolohn = umgerechneter_bruttolohn + + return versicherungspflichtiger_bruttolohn / ( + beitragspflichtiges_durchschnittsentgelt_y / 12 + ) + + +@policy_function(start_date="2025-01-01", leaf_name="neue_entgeltpunkte") +def neue_entgeltpunkte_einheitlich( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + beitrag__beitragsbemessungsgrenze_m: float, + beitragspflichtiges_durchschnittsentgelt_y: float, +) -> float: + """Earning points for the wages earned in this year.""" + if ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + > beitrag__beitragsbemessungsgrenze_m + ): + versicherungspflichtiger_bruttolohn = beitrag__beitragsbemessungsgrenze_m + else: + versicherungspflichtiger_bruttolohn = ( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + ) + + return versicherungspflichtiger_bruttolohn / ( + beitragspflichtiges_durchschnittsentgelt_y / 12 + ) + + +@policy_function(start_date="1992-01-01", end_date="2023-06-30", leaf_name="rentenwert") +def rentenwert_nach_wohnort( + wohnort_ost_hh: bool, + sozialversicherung__rente__parameter_rentenwert_nach_wohnort: dict[str, float], +) -> float: + """Rentenwert.""" + return ( + sozialversicherung__rente__parameter_rentenwert_nach_wohnort["ost"] + if wohnort_ost_hh + else sozialversicherung__rente__parameter_rentenwert_nach_wohnort["west"] + ) diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.yaml similarity index 57% rename from src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml rename to src/_gettsim/sozialversicherung/rente/entgeltpunkte.yaml index a04e564df8..f9b3943aa9 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/rentenformel.yaml +++ b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.yaml @@ -1,25 +1,4 @@ --- -zugangsfaktor_veränderung_pro_jahr: - name: - de: Veränderung des Zugangsfaktors pro Jahr relativ zur Regelaltersgrenze - en: Change in Zugangsfaktor per year relative to the normal retirement age - description: - de: >- - §77 Abs. 2 Nr. 2 SGB VI - Faktor um den sich der Zugangsfaktor für die staatliche Rente erhöht/senkt für - jedes Jahr, das länger/kürzer gearbeitet wird - Achtung: Es gibt viele Ausnahmen von dieser Regel! - en: >- - §77 Abs. 2 Nr. 2 SGB VI - Factor with which the Zugangsfaktor / "access factor" for receiving the statutory - pension is increased/decreased for each year of less/more work. - Careful: There are many exceptions to this rule! - unit: null - reference_period: Year - type: dict - 2001-01-01: - vorzeitiger_renteneintritt: 0.036 - späterer_renteneintritt: 0.06 beitragspflichtiges_durchschnittsentgelt_y: name: de: Beitragspflichtiges Durchschnittsentgelt aller Versicherten @@ -257,140 +236,4 @@ umrechnung_entgeltpunkte_beitrittsgebiet: 2024-01-01: value: 1.0140 2025-01-01: - value: 1.0000 note: Umrechnung entfällt. -parameter_rentenwert_nach_wohnort: - name: - de: Rentenwerte alte und neue Bundesländer - en: Pension value old and new federal states - description: - de: >- - statistik-rente.de/drv, § 68 SGB VI - Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für - einen Entgeltpunkt entspricht. - en: >- - statistik-rente.de/drv, § 68 SGB VI - The current pension value expresses the amount of monthly pension paid for one - Entgeltpunkt. - unit: Euros - reference_period: null - type: dict - 1992-01-01: - west: 21.19 - ost: 12.05 - 1992-07-01: - west: 21.80 - ost: 13.59 - 1993-01-01: - updates_previous: true - ost: 14.41 - 1993-07-01: - west: 22.75 - ost: 16.45 - 1994-01-01: - updates_previous: true - ost: 17.05 - 1994-07-01: - west: 23.52 - ost: 17.63 - 1995-01-01: - updates_previous: true - ost: 18.13 - 1995-07-01: - west: 23.64 - ost: 18.58 - 1996-01-01: - updates_previous: true - ost: 19.39 - 1996-07-01: - west: 23.86 - ost: 19.62 - 1997-07-01: - west: 24.26 - ost: 20.71 - 1998-07-01: - west: 24.36 - ost: 20.90 - 1999-07-01: - west: 24.69 - ost: 21.48 - 2000-07-01: - west: 24.84 - ost: 21.61 - 2001-07-01: - west: 25.31 - ost: 22.06 - 2002-07-01: - west: 25.86 - ost: 22.70 - 2003-07-01: - west: 26.13 - ost: 22.97 - 2007-07-01: - west: 26.27 - ost: 23.09 - 2008-07-01: - west: 26.56 - ost: 23.34 - 2009-07-01: - west: 27.2 - ost: 24.13 - 2011-07-01: - west: 27.47 - ost: 24.37 - 2012-07-01: - west: 28.07 - ost: 24.92 - 2013-07-01: - west: 28.14 - ost: 25.74 - 2014-07-01: - west: 28.61 - ost: 26.39 - 2015-07-01: - west: 29.21 - ost: 27.05 - 2016-07-01: - west: 30.45 - ost: 28.66 - 2017-07-01: - west: 31.03 - ost: 29.69 - 2018-07-01: - west: 32.03 - ost: 30.69 - 2019-07-01: - west: 33.05 - ost: 31.89 - 2020-07-01: - west: 34.19 - ost: 33.23 - 2021-07-01: - updates_previous: true - ost: 33.47 - 2022-07-01: - west: 36.02 - ost: 35.52 - 2023-07-01: - note: Rentenwert einheitlich. Siehe `rentenwert`. -rentenwert: - name: - de: Rentenwert (Wert eines Entgeltpunktes). - en: Value of one Entgeltpunkt. - description: - de: >- - statistik-rente.de/drv, § 68 SGB VI - Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für - einen Entgeltpunkt entspricht. - en: >- - statistik-rente.de/drv, § 68 SGB VI - The current pension value expresses the amount of monthly pension paid for one - Entgeltpunkt. - unit: Euros - reference_period: null - type: scalar - 2023-07-01: - value: 37.60 - 2024-01-07: - value: 39.32 - reference: V. v. 17.06.2024 BGBl. 2024 I Nr. 194. diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 61da6402ba..3c0282c339 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -17,7 +17,7 @@ def betrag_m_nach_wohnort( entgeltpunkte_ost: float, rentenartfaktor: float, grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort: dict[ + sozialversicherung__rente__parameter_rentenwert_nach_wohnort: dict[ str, float, ], @@ -30,13 +30,9 @@ def betrag_m_nach_wohnort( out = ( ( entgeltpunkte_west - * sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort[ - "west" - ] + * sozialversicherung__rente__parameter_rentenwert_nach_wohnort["west"] + entgeltpunkte_ost - * sozialversicherung__rente__altersrente__parameter_rentenwert_nach_wohnort[ - "ost" - ] + * sozialversicherung__rente__parameter_rentenwert_nach_wohnort["ost"] ) * zugangsfaktor * rentenartfaktor @@ -46,18 +42,13 @@ def betrag_m_nach_wohnort( return out -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023 (first check whether this is also the case here, not -# only for old-age pensions). -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 @policy_function(start_date="2023-07-01", leaf_name="betrag_m") def betrag_m_einheitlich( zugangsfaktor: float, - entgeltpunkte_west: float, - entgeltpunkte_ost: float, + entgeltpunkte: float, rentenartfaktor: float, grundsätzlich_anspruchsberechtigt: bool, - sozialversicherung__rente__altersrente__rentenwert: float, + sozialversicherung__rente__rentenwert: float, ) -> float: """Erwerbsminderungsrente (public disability insurance). @@ -65,9 +56,9 @@ def betrag_m_einheitlich( """ if grundsätzlich_anspruchsberechtigt: out = ( - (entgeltpunkte_ost + entgeltpunkte_west) + entgeltpunkte * zugangsfaktor - * sozialversicherung__rente__altersrente__rentenwert + * sozialversicherung__rente__rentenwert * rentenartfaktor ) else: @@ -96,35 +87,27 @@ def grundsätzlich_anspruchsberechtigt( return anspruch_erwerbsm_rente -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023 (first check whether this is also the case here, not -# only for old-age pensions). -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_function(start_date="2001-01-01") +@policy_function(start_date="2001-01-01", end_date="2023-06-30") def entgeltpunkte_west( sozialversicherung__rente__entgeltpunkte_west: float, - zurechnungszeit: float, + zusätzliche_entgeltpunkte_durch_zurechnungszeit: float, anteil_entgeltpunkte_ost: float, ) -> float: """Entgeltpunkte from West German Beitrags- and Zurechnungszeiten. In the case of the public disability insurance, pensioners are credited with additional earning points. They receive their average earned income points for each - year between their age of retirement and the "zurechnungszeitgrenze". + year between their age of retirement and the "Zurechnungszeitgrenze". """ return sozialversicherung__rente__entgeltpunkte_west + ( - zurechnungszeit * (1 - anteil_entgeltpunkte_ost) + zusätzliche_entgeltpunkte_durch_zurechnungszeit * (1 - anteil_entgeltpunkte_ost) ) -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023 (first check whether this is also the case here, not -# only for old-age pensions). -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_function(start_date="2001-01-01") +@policy_function(start_date="2001-01-01", end_date="2023-06-30") def entgeltpunkte_ost( sozialversicherung__rente__entgeltpunkte_ost: float, - zurechnungszeit: float, + zusätzliche_entgeltpunkte_durch_zurechnungszeit: float, anteil_entgeltpunkte_ost: float, ) -> float: """Entgeltpunkte from East German Beitrags- and Zurechnungszeiten. @@ -133,19 +116,38 @@ def entgeltpunkte_ost( In the case of the public disability insurance, pensioners are credited with additional earning points. They receive their average earned income points for each - year between their age of retirement and the "zurechnungszeitgrenze". + year between their age of retirement and the "Zurechnungszeitgrenze". """ return sozialversicherung__rente__entgeltpunkte_ost + ( - zurechnungszeit * anteil_entgeltpunkte_ost + zusätzliche_entgeltpunkte_durch_zurechnungszeit * anteil_entgeltpunkte_ost + ) + + +@policy_function(start_date="2023-07-01") +def entgeltpunkte( + sozialversicherung__rente__entgeltpunkte: float, + zusätzliche_entgeltpunkte_durch_zurechnungszeit: float, +) -> float: + """Entgeltpunkte from Beitrags- and Zurechnungszeiten. + + Provides the Entgeltpunkt-basis for calculation of the Erwerbsminderungsrente. + + In the case of the public disability insurance, pensioners are credited with + additional earning points. They receive their average earned income points for each + year between their age of retirement and the "Zurechnungszeitgrenze". + """ + return ( + sozialversicherung__rente__entgeltpunkte + + zusätzliche_entgeltpunkte_durch_zurechnungszeit ) @policy_function( start_date="2000-12-23", end_date="2014-06-30", - leaf_name="zurechnungszeit", + leaf_name="zusätzliche_entgeltpunkte_durch_zurechnungszeit", ) -def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( +def zusätzliche_entgeltpunkte_durch_zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( mean_entgeltpunkte_pro_bewertungsmonat: float, sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__jahr_renteneintritt: int, @@ -158,7 +160,7 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( In the case of the public disability insurance, pensioners are credited with additional earning points. They receive their average earned income points for each - year between their age of retirement and the "zurechnungszeitgrenze". + year between their age of retirement and the "Zurechnungszeitgrenze". """ claiming_month_since_ad = ( sozialversicherung__rente__jahr_renteneintritt * 12 @@ -176,9 +178,9 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_bis_06_2014( @policy_function( start_date="2014-07-01", end_date="2017-07-16", - leaf_name="zurechnungszeit", + leaf_name="zusätzliche_entgeltpunkte_durch_zurechnungszeit", ) -def zurechnungszeit_mit_einheitlicher_altersgrenze( +def zusätzliche_entgeltpunkte_durch_zurechnungszeit_mit_einheitlicher_altersgrenze( mean_entgeltpunkte_pro_bewertungsmonat: float, sozialversicherung__rente__alter_bei_renteneintritt: float, zurechnungszeitgrenze: float, @@ -189,15 +191,17 @@ def zurechnungszeit_mit_einheitlicher_altersgrenze( In the case of the public disability insurance, pensioners are credited with additional earning points. They receive their average earned income points for each - year between their age of retirement and the "zurechnungszeitgrenze". + year between their age of retirement and the "Zurechnungszeitgrenze". """ return ( zurechnungszeitgrenze - (sozialversicherung__rente__alter_bei_renteneintritt) ) * mean_entgeltpunkte_pro_bewertungsmonat -@policy_function(start_date="2017-07-17", leaf_name="zurechnungszeit") -def zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( +@policy_function( + start_date="2017-07-17", leaf_name="zusätzliche_entgeltpunkte_durch_zurechnungszeit" +) +def zusätzliche_entgeltpunkte_durch_zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( mean_entgeltpunkte_pro_bewertungsmonat: float, sozialversicherung__rente__alter_bei_renteneintritt: float, sozialversicherung__rente__jahr_renteneintritt: int, @@ -210,7 +214,7 @@ def zurechnungszeit_mit_gestaffelter_altersgrenze_ab_07_2017( In the case of the public disability insurance, pensioners are credited with additional earning points. They receive their average earned income points for each - year between their age of retirement and the "zurechnungszeitgrenze". + year between their age of retirement and the "Zurechnungszeitgrenze". """ claiming_month_since_ad = ( sozialversicherung__rente__jahr_renteneintritt * 12 @@ -245,7 +249,7 @@ def zugangsfaktor_ohne_gestaffelte_altersgrenze( sozialversicherung__rente__alter_bei_renteneintritt: float, altersgrenze: float, min_zugangsfaktor: float, - sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ + sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr: dict[ str, float, ], @@ -262,7 +266,7 @@ def zugangsfaktor_ohne_gestaffelte_altersgrenze( 1 + (sozialversicherung__rente__alter_bei_renteneintritt - altersgrenze) * ( - sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr[ + sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr[ "vorzeitiger_renteneintritt" ] ) @@ -279,7 +283,7 @@ def zugangsfaktor_mit_gestaffelter_altersgrenze( sozialversicherung__rente__monat_renteneintritt: int, altersgrenze_langjährig_versichert: float, min_zugangsfaktor: float, - sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr: dict[ + sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr: dict[ str, float, ], @@ -310,7 +314,7 @@ def zugangsfaktor_mit_gestaffelter_altersgrenze( 1 + (sozialversicherung__rente__alter_bei_renteneintritt - grenze_abschlagsfrei) * ( - sozialversicherung__rente__altersrente__zugangsfaktor_veränderung_pro_jahr[ + sozialversicherung__rente__zugangsfaktor_veränderung_pro_jahr[ "vorzeitiger_renteneintritt" ] ) @@ -360,11 +364,7 @@ def wartezeit_langjährig_versichert_erfüllt( ) / 12 >= wartezeitgrenze_langjährig_versicherte -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023 (first check whether this is also the case here, not -# only for old-age pensions). -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_function() +@policy_function(end_date="2023-06-30") def anteil_entgeltpunkte_ost( sozialversicherung__rente__entgeltpunkte_west: float, sozialversicherung__rente__entgeltpunkte_ost: float, @@ -384,12 +384,10 @@ def anteil_entgeltpunkte_ost( return out -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023 (first check whether this is also the case here, not -# only for old-age pensions). -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_function() -def mean_entgeltpunkte_pro_bewertungsmonat( +@policy_function( + end_date="2023-06-30", leaf_name="mean_entgeltpunkte_pro_bewertungsmonat" +) +def mean_entgeltpunkte_pro_bewertungsmonat_nach_wohnort( sozialversicherung__rente__entgeltpunkte_west: float, sozialversicherung__rente__entgeltpunkte_ost: float, sozialversicherung__rente__alter_bei_renteneintritt: float, @@ -407,9 +405,30 @@ def mean_entgeltpunkte_pro_bewertungsmonat( - altersgrenze_grundbewertung ) - mean_entgeltpunkte_pro_bewertungsmonat = ( + return ( sozialversicherung__rente__entgeltpunkte_west + sozialversicherung__rente__entgeltpunkte_ost ) / belegungsfähiger_gesamtzeitraum - return mean_entgeltpunkte_pro_bewertungsmonat + +@policy_function( + start_date="2023-07-01", leaf_name="mean_entgeltpunkte_pro_bewertungsmonat" +) +def mean_entgeltpunkte_pro_bewertungsmonat_einheitlich( + sozialversicherung__rente__entgeltpunkte: float, + sozialversicherung__rente__alter_bei_renteneintritt: float, + altersgrenze_grundbewertung: float, +) -> float: + """Average earning points per Bewertungsmonat (as part of the "Grundbewertung"). + + Earnings points are divided by "belegungsfähige Gesamtzeitraum" which is the period + from the age of 17 until the start of the pension. + + Legal reference: SGB VI § 72: Grundbewertung + """ + belegungsfähiger_gesamtzeitraum = ( + sozialversicherung__rente__alter_bei_renteneintritt + - altersgrenze_grundbewertung + ) + + return sozialversicherung__rente__entgeltpunkte / belegungsfähiger_gesamtzeitraum diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index e40ae628a8..74b2b57603 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -90,7 +90,7 @@ def _anzurechnendes_einkommen_m( def anzurechnendes_einkommen_m( einkommen_m_ehe: float, familie__anzahl_personen_ehe: int, - sozialversicherung__rente__altersrente__rentenwert: float, + sozialversicherung__rente__rentenwert: float, anzurechnendes_einkommen_ohne_partner: PiecewisePolynomialParamValue, anzurechnendes_einkommen_mit_partner: PiecewisePolynomialParamValue, xnp: ModuleType, @@ -111,14 +111,14 @@ def anzurechnendes_einkommen_m( if familie__anzahl_personen_ehe == 2: out = _anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, - rentenwert=sozialversicherung__rente__altersrente__rentenwert, + rentenwert=sozialversicherung__rente__rentenwert, parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_mit_partner, xnp=xnp, ) else: out = _anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, - rentenwert=sozialversicherung__rente__altersrente__rentenwert, + rentenwert=sozialversicherung__rente__rentenwert, parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_ohne_partner, xnp=xnp, ) @@ -136,7 +136,7 @@ def anzurechnendes_einkommen_m( def basisbetrag_m( mean_entgeltpunkte_zuschlag: float, bewertungszeiten_monate: int, - sozialversicherung__rente__altersrente__rentenwert: float, + sozialversicherung__rente__rentenwert: float, sozialversicherung__rente__altersrente__zugangsfaktor: float, maximaler_zugangsfaktor: float, berücksichtigte_wartezeit_monate: dict[str, int], @@ -158,7 +158,7 @@ def basisbetrag_m( return ( mean_entgeltpunkte_zuschlag * bewertungszeiten - * sozialversicherung__rente__altersrente__rentenwert + * sozialversicherung__rente__rentenwert * zugangsfaktor ) diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py index f5069f2d37..ac16d12b81 100644 --- a/src/_gettsim/sozialversicherung/rente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -10,20 +10,19 @@ def bezieht_rente() -> bool: """Draws public pension benefits.""" -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_input() +@policy_input(end_date="2023-06-30") def entgeltpunkte_ost() -> float: - """Earnings points for pension claim accumulated in Eastern states.""" + """Earnings points for public pension claim accumulated in the new Länder (Beitrittsgebiet).""" -# TODO(@MImmesberger): Do not distinguish between Entgeltpunkte from West and East -# Germany starting in July 2023. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/925 -@policy_input() +@policy_input(end_date="2023-06-30") def entgeltpunkte_west() -> float: - """Earnings points for pension claim accumulated in Western states.""" + """Earnings points for public pension claim accumulated in the old Länder (non-Beitrittsgebiet).""" + + +@policy_input(start_date="2023-07-01") +def entgeltpunkte() -> float: + """Earnings points for public pension claim.""" @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/rentenformel.yaml b/src/_gettsim/sozialversicherung/rente/rentenformel.yaml new file mode 100644 index 0000000000..35c9273d20 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/rentenformel.yaml @@ -0,0 +1,157 @@ +--- +zugangsfaktor_veränderung_pro_jahr: + name: + de: Veränderung des Zugangsfaktors pro Jahr relativ zur Regelaltersgrenze + en: Change in Zugangsfaktor per year relative to the normal retirement age + description: + de: >- + §77 Abs. 2 Nr. 2 SGB VI + Faktor um den sich der Zugangsfaktor für die staatliche Rente erhöht/senkt für + jedes Jahr, das länger/kürzer gearbeitet wird + Achtung: Es gibt viele Ausnahmen von dieser Regel! + en: >- + §77 Abs. 2 Nr. 2 SGB VI + Factor with which the Zugangsfaktor / "access factor" for receiving the statutory + pension is increased/decreased for each year of less/more work. + Careful: There are many exceptions to this rule! + unit: null + reference_period: Year + type: dict + 2001-01-01: + vorzeitiger_renteneintritt: 0.036 + späterer_renteneintritt: 0.06 +parameter_rentenwert_nach_wohnort: + name: + de: Rentenwerte alte und neue Bundesländer + en: Pension value old and new federal states + description: + de: >- + statistik-rente.de/drv, § 68 SGB VI + Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für + einen Entgeltpunkt entspricht. + en: >- + statistik-rente.de/drv, § 68 SGB VI + The current pension value expresses the amount of monthly pension paid for one + Entgeltpunkt. + unit: Euros + reference_period: null + type: dict + 1992-01-01: + west: 21.19 + ost: 12.05 + 1992-07-01: + west: 21.80 + ost: 13.59 + 1993-01-01: + updates_previous: true + ost: 14.41 + 1993-07-01: + west: 22.75 + ost: 16.45 + 1994-01-01: + updates_previous: true + ost: 17.05 + 1994-07-01: + west: 23.52 + ost: 17.63 + 1995-01-01: + updates_previous: true + ost: 18.13 + 1995-07-01: + west: 23.64 + ost: 18.58 + 1996-01-01: + updates_previous: true + ost: 19.39 + 1996-07-01: + west: 23.86 + ost: 19.62 + 1997-07-01: + west: 24.26 + ost: 20.71 + 1998-07-01: + west: 24.36 + ost: 20.90 + 1999-07-01: + west: 24.69 + ost: 21.48 + 2000-07-01: + west: 24.84 + ost: 21.61 + 2001-07-01: + west: 25.31 + ost: 22.06 + 2002-07-01: + west: 25.86 + ost: 22.70 + 2003-07-01: + west: 26.13 + ost: 22.97 + 2007-07-01: + west: 26.27 + ost: 23.09 + 2008-07-01: + west: 26.56 + ost: 23.34 + 2009-07-01: + west: 27.2 + ost: 24.13 + 2011-07-01: + west: 27.47 + ost: 24.37 + 2012-07-01: + west: 28.07 + ost: 24.92 + 2013-07-01: + west: 28.14 + ost: 25.74 + 2014-07-01: + west: 28.61 + ost: 26.39 + 2015-07-01: + west: 29.21 + ost: 27.05 + 2016-07-01: + west: 30.45 + ost: 28.66 + 2017-07-01: + west: 31.03 + ost: 29.69 + 2018-07-01: + west: 32.03 + ost: 30.69 + 2019-07-01: + west: 33.05 + ost: 31.89 + 2020-07-01: + west: 34.19 + ost: 33.23 + 2021-07-01: + updates_previous: true + ost: 33.47 + 2022-07-01: + west: 36.02 + ost: 35.52 + 2023-07-01: + note: Rentenwert einheitlich. Siehe `rentenwert`. +rentenwert: + name: + de: Rentenwert (Wert eines Entgeltpunktes). + en: Value of one Entgeltpunkt. + description: + de: >- + statistik-rente.de/drv, § 68 SGB VI + Der aktuelle Rentenwert drückt den Betrag aus, der der monatlichen Rente für + einen Entgeltpunkt entspricht. + en: >- + statistik-rente.de/drv, § 68 SGB VI + The current pension value expresses the amount of monthly pension paid for one + Entgeltpunkt. + unit: Euros + reference_period: null + type: scalar + 2023-07-01: + value: 37.60 + 2024-01-07: + value: 39.32 + reference: V. v. 17.06.2024 BGBl. 2024 I Nr. 194. diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml new file mode 100644 index 0000000000..942b972b87 --- /dev/null +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml @@ -0,0 +1,196 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 60 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 2300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 2500.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 13.0 + ist_selbstständig: + - true + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 2300.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 25962.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 8 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 + p_id: + - 14 + schwerbehindert_grad_g: + - false + sozialversicherung: + arbeitslosen: + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 2.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte: + - 19.7296 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 42 + grundrentenzeiten_monate: + - 42 + mean_entgeltpunkte: + - 19.7296 + jahr_renteneintritt: + - 2074 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 444.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 + vermögen: + - 0.0 + weiblich: + - false + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe_hh: + - 3 + wohnort_ost_hh: + - false +outputs: {} diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml new file mode 100644 index 0000000000..9a68c7b970 --- /dev/null +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml @@ -0,0 +1,194 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 60 + arbeitslosengeld_2: + arbeitslosengeld_2_bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + arbeitsstunden_w: + - 0.0 + behinderungsgrad: + - 0 + einkommensteuer: + abzüge: + beitrag_private_rentenversicherung_m: + - 0.0 + kinderbetreuungskosten_m: + - 0.0 + p_id_kinderbetreuungskostenträger: + - -1 + einkünfte: + aus_forst_und_landwirtschaft: + betrag_m: + - 0.0 + aus_gewerbebetrieb: + betrag_m: + - 0.0 + aus_kapitalvermögen: + kapitalerträge_m: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 0.0 + bruttolohn_vorjahr_m: + - 2300.0 + aus_selbstständiger_arbeit: + betrag_m: + - 2500.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 13.0 + ist_selbstständig: + - true + sonstige: + ohne_renten_m: + - 50.0 + gemeinsam_veranlagt: + - false + elterngeld: + bisherige_bezugsmonate: + - 0 + claimed: + - true + nettoeinkommen_vorjahr_m: + - 2300.0 + zu_versteuerndes_einkommen_vorjahr_y_sn: + - 25962.0 + familie: + alleinerziehend: + - false + kind: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 + geburtsjahr: + - 1959 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 8 + kindergeld: + in_ausbildung: + - false + p_id_empfänger: + - -1 + lohnsteuer: + steuerklasse: + - 1 + p_id: + - 14 + schwerbehindert_grad_g: + - false + sozialversicherung: + arbeitslosen: + monate_beitragspflichtig_versichert_in_letzten_30_monaten: + - 12 + arbeitssuchend: + - false + monate_durchgängigen_bezugs_von_arbeitslosengeld: + - 0 + monate_sozialversicherungspflichtiger_beschäftigung_in_letzten_5_jahren: + - 60 + kranken: + beitrag: + privat_versichert: + - false + pflege: + beitrag: + hat_kinder: + - true + rente: + altersrente: + für_frauen: + pflichtsbeitragsjahre_ab_alter_40: + - 2.0 + höchster_bruttolohn_letzte_15_jahre_vor_rente_y: + - 0.0 + bezieht_rente: + - false + entgeltpunkte: + - 19.7296 + ersatzzeiten_monate: + - 0.0 + erwerbsminderung: + teilweise_erwerbsgemindert: + - true + voll_erwerbsgemindert: + - false + freiwillige_beitragsmonate: + - 5.0 + grundrente: + bewertungszeiten_monate: + - 42 + grundrentenzeiten_monate: + - 42 + mean_entgeltpunkte: + - 19.7296 + jahr_renteneintritt: + - 2074 + kinderberücksichtigungszeiten_monate: + - 0.0 + krankheitszeiten_ab_16_bis_24_monate: + - 0.0 + monat_renteneintritt: + - 1 + monate_geringfügiger_beschäftigung: + - 0.0 + monate_in_arbeitslosigkeit: + - 0.0 + monate_in_arbeitsunfähigkeit: + - 0.0 + monate_in_ausbildungssuche: + - 0.0 + monate_in_mutterschutz: + - 0.0 + monate_in_schulausbildung: + - 12.0 + monate_mit_bezug_entgeltersatzleistungen_wegen_arbeitslosigkeit: + - 0.0 + pflegeberücksichtigungszeiten_monate: + - 0.0 + pflichtbeitragsmonate: + - 444.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + anspruch_m: + - 0.0 + tatsächlich_erhaltener_betrag_m: + - 0.0 + vermögen: + - 0.0 + weiblich: + - false + wohnen: + baujahr_immobilie_hh: + - 3 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 400.0 + heizkosten_m_hh: + - 80.0 + wohnfläche_hh: + - 50.0 + wohngeld: + mietstufe_hh: + - 3 +outputs: {} diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml index 7a3d34781a..6920a7e380 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_1.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 18.51378418 + entgeltpunkte_ost_updated: + - 0.0 + neue_entgeltpunkte: + - 0.231184177 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 18.51378418 - neue_entgeltpunkte: - - 0.231184177 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml index 623e544f45..778a5fe5b8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_19.yaml @@ -75,12 +75,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 0.0 + entgeltpunkte_ost_updated: + - 36.99837737 + neue_entgeltpunkte: + - 1.79167737 altersrente: altersgrenze: - 65.83333333 - entgeltpunkte_ost_updated: - - 36.99837737 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml index ae71383cc5..3fa985b004 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_2.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 21.71637627 + entgeltpunkte_ost_updated: + - 0.0 + neue_entgeltpunkte: + - 0.346776265 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 21.71637627 - neue_entgeltpunkte: - - 0.346776265 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml index 1ca341271f..cfdc407bdd 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_24.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 22.99796044 + neue_entgeltpunkte: + - 0.577960442 altersrente: altersgrenze: - 60.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 22.99796044 - neue_entgeltpunkte: - - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml index 58dfe42994..59af42d15c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_25.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 64.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml index 9a03bb42f2..ede5606d5d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_3.yaml @@ -75,12 +75,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 0.0 + entgeltpunkte_ost_updated: + - 21.77622985 + neue_entgeltpunkte: + - 0.406629848 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 21.77622985 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 0.406629848 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml index ef123c8b55..c66cbeabf9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_30.yaml @@ -71,12 +71,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 10.0 + entgeltpunkte_west_updated: + - 12.99796044 + neue_entgeltpunkte: + - 0.577960442 altersrente: altersgrenze: - 60.0 - entgeltpunkte_ost_updated: - - 10.0 - entgeltpunkte_west_updated: - - 12.99796044 - neue_entgeltpunkte: - - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml index fd76f6e954..27075565c9 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_4.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 25.81076835 + entgeltpunkte_ost_updated: + - 0.0 + neue_entgeltpunkte: + - 0.462368353 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 25.81076835 - neue_entgeltpunkte: - - 0.462368353 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml index b2012a2a74..83952aa072 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_5.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 22.99796044 + entgeltpunkte_ost_updated: + - 0.0 + neue_entgeltpunkte: + - 0.577960442 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 22.99796044 - neue_entgeltpunkte: - - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml index 18ec8c2a88..4a9d8f92b2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_6.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 37.32588829 + entgeltpunkte_ost_updated: + - 0.0 + neue_entgeltpunkte: + - 2.119188287 altersrente: altersgrenze: - 65.41666667 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 37.32588829 - neue_entgeltpunkte: - - 2.119188287 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml index 244852bcdf..651a7f79b8 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2010-07-01/hh_id_7.yaml @@ -75,12 +75,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_west_updated: + - 0.0 + entgeltpunkte_ost_updated: + - 36.99837737 + neue_entgeltpunkte: + - 1.79167737 altersrente: altersgrenze: - 65.41666667 - entgeltpunkte_ost_updated: - - 36.99837737 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml index 01d85f8916..ecf76f7628 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_10.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 30.81713003 + neue_entgeltpunkte: + - 0.254530028 altersrente: altersgrenze: - 66.33333333 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 30.81713003 - neue_entgeltpunkte: - - 0.254530028 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml index 37e6e6f15b..560dd715f1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_11.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 altersrente: altersgrenze: - 66.16666667 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 31.0625 - neue_entgeltpunkte: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml index 8b7e2100eb..c08665a3e4 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_8.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 7.799471632 + neue_entgeltpunkte: + - 1.818071632 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 7.799471632 - neue_entgeltpunkte: - - 1.818071632 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml index ac6c70b298..9e0df8a56f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2012-07-01/hh_id_9.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 8.666284298 + neue_entgeltpunkte: + - 0.109084298 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 8.666284298 - neue_entgeltpunkte: - - 0.109084298 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml index 18d954a369..5b9b181d0d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2014-07-01/hh_id_25.yaml @@ -78,12 +78,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 22.99796044 + neue_entgeltpunkte: + - 0.577960442 altersrente: altersgrenze: - 65.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 22.99796044 - neue_entgeltpunkte: - - 0.577960442 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml index ce51344d3d..e68d12ad75 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_12.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 35.07700132 + neue_entgeltpunkte: + - 0.101801318 altersrente: altersgrenze: - 66.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 35.07700132 - neue_entgeltpunkte: - - 0.101801318 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml index 7eff8d44ab..1f500523ab 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_13.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 36.28760264 + neue_entgeltpunkte: + - 0.203602636 altersrente: altersgrenze: - 65.91666667 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 36.28760264 - neue_entgeltpunkte: - - 0.203602636 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml index fda9bf5431..44f3d4e67d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_14.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 11.00190395 + neue_entgeltpunkte: + - 0.305403953 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 11.00190395 - neue_entgeltpunkte: - - 0.305403953 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml index b3ff27147a..73ca2f53f3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_15.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 11.04777563 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 0.351275627 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 11.04777563 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 0.351275627 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml index 6b8b195bc9..13b641b2eb 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_16.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 24.10510527 + neue_entgeltpunkte: + - 0.407205271 altersrente: altersgrenze: - 67.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 24.10510527 - neue_entgeltpunkte: - - 0.407205271 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml index c31d2bbd92..0bd56dc9e0 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_17.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 65.5 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml index 9ba713654f..00572a1cf7 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_18.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 65.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml index 58dfe42994..59af42d15c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_19.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 64.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml index 58dfe42994..59af42d15c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_25.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 64.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml index a3f0b616f9..d475568430 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_26.yaml @@ -73,14 +73,14 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 61.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 vorzeitig_grundsätzlich_anspruchsberechtigt: - true diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml index 817b20d258..f00dd029bf 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_27.yaml @@ -73,14 +73,14 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 65.5 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 vorzeitig_grundsätzlich_anspruchsberechtigt: - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml index 878d5549c8..6ceebcab88 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_28.yaml @@ -73,17 +73,17 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 + neue_entgeltpunkte: + - 0.509006589 altersrente: altersgrenze: - 65.0 altersgrenze_vorzeitig: - 63.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 - neue_entgeltpunkte: - - 0.509006589 vorzeitig_grundsätzlich_anspruchsberechtigt: - true wegen_arbeitslosigkeit: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml index 17fe562090..174661e25d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2015-07-01/hh_id_29.yaml @@ -73,23 +73,23 @@ inputs: outputs: sozialversicherung: rente: + neue_entgeltpunkte: + - 0.509006589 + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 39.88850659 altersrente: altersgrenze: - 65.0 altersgrenze_vorzeitig: - 60.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 39.88850659 für_frauen: grundsätzlich_anspruchsberechtigt: - true langjährig: grundsätzlich_anspruchsberechtigt: - true - neue_entgeltpunkte: - - 0.509006589 referenzalter_abschlag: - 65.0 vorzeitig_grundsätzlich_anspruchsberechtigt: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml index 560caacbb8..1612fcfaaa 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_20.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 altersrente: altersgrenze: - 66.16666667 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 31.0625 - neue_entgeltpunkte: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml index 2af5391882..423676d6fc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_21.yaml @@ -75,12 +75,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 altersrente: altersgrenze: - 65.5 - entgeltpunkte_ost_updated: - - 36.99837737 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml index c2d07f2f2e..89c147fa85 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_22.yaml @@ -75,12 +75,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 36.99837737 + entgeltpunkte_west_updated: + - 0.0 + neue_entgeltpunkte: + - 1.79167737 altersrente: altersgrenze: - 65.08333333 - entgeltpunkte_ost_updated: - - 36.99837737 - entgeltpunkte_west_updated: - - 0.0 - neue_entgeltpunkte: - - 1.79167737 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml index 6269e44c20..c541f4ab98 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_23.yaml @@ -73,12 +73,12 @@ inputs: outputs: sozialversicherung: rente: + entgeltpunkte_ost_updated: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 + neue_entgeltpunkte: + - 0.0 altersrente: altersgrenze: - 66.0 - entgeltpunkte_ost_updated: - - 0.0 - entgeltpunkte_west_updated: - - 31.0625 - neue_entgeltpunkte: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml index 8973ee9230..ba7e2a03ca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_24.yaml @@ -71,11 +71,11 @@ inputs: outputs: sozialversicherung: rente: + neue_entgeltpunkte: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 altersrente: - entgeltpunkte_west_updated: - - 31.0625 langjährig: altersgrenze: - 65.0 - neue_entgeltpunkte: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml index 8973ee9230..ba7e2a03ca 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2018-07-01/hh_id_25.yaml @@ -71,11 +71,11 @@ inputs: outputs: sozialversicherung: rente: + neue_entgeltpunkte: + - 0.0 + entgeltpunkte_west_updated: + - 31.0625 altersrente: - entgeltpunkte_west_updated: - - 31.0625 langjährig: altersgrenze: - 65.0 - neue_entgeltpunkte: - - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2023-07-01/entgeltpunkte_update_unterschied_ost_west.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2023-07-01/entgeltpunkte_update_unterschied_ost_west.yaml new file mode 100644 index 0000000000..1381713c0a --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2023-07-01/entgeltpunkte_update_unterschied_ost_west.yaml @@ -0,0 +1,51 @@ +--- +info: + note: Update rule differs between East and West, Rentenwert is the same. + precision_atol: 0.001 + source: Calculated by hand. +inputs: + assumed: {} + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 1 + wohnort_ost_hh: + - true + - false + alter: + - 40 + - 40 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 3000.0 + sozialversicherung: + rente: + entgeltpunkte: + - 30.0 + - 30.0 + bezieht_rente: + - true + - true + altersrente: + zugangsfaktor: + - 1.0 + - 1.0 +outputs: + sozialversicherung: + rente: + entgeltpunkte_updated: + - 30.827 + - 30.805 + neue_entgeltpunkte: + - 0.827 + - 0.805 + altersrente: + bruttorente_basisbetrag_m: + - 1128.0 + - 1128.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2025-01-01/entgeltpunkte_update_einheitlich_ost_west.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2025-01-01/entgeltpunkte_update_einheitlich_ost_west.yaml new file mode 100644 index 0000000000..92412f30a2 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/betrag/2025-01-01/entgeltpunkte_update_einheitlich_ost_west.yaml @@ -0,0 +1,51 @@ +--- +info: + note: Update rule and Rentenwert do not differ between East and West. + precision_atol: 0.001 + source: Calculated by hand. +inputs: + assumed: {} + provided: + p_id: + - 0 + - 1 + hh_id: + - 0 + - 1 + wohnort_ost_hh: + - true + - false + alter: + - 40 + - 40 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + - 3000.0 + sozialversicherung: + rente: + entgeltpunkte: + - 30.0 + - 30.0 + bezieht_rente: + - true + - true + altersrente: + zugangsfaktor: + - 1.0 + - 1.0 +outputs: + sozialversicherung: + rente: + entgeltpunkte_updated: + - 30.713 + - 30.713 + neue_entgeltpunkte: + - 0.713 + - 0.713 + altersrente: + bruttorente_basisbetrag_m: + - 1179.6 + - 1179.6 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2025-01-01/entgeltpunkte_ohne_ost_west_unterschied.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2025-01-01/entgeltpunkte_ohne_ost_west_unterschied.yaml new file mode 100644 index 0000000000..c636551358 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/erwerbsminderung/2025-01-01/entgeltpunkte_ohne_ost_west_unterschied.yaml @@ -0,0 +1,37 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: Regression test. +inputs: + assumed: + p_id: + - 28 + geburtsmonat: + - 1 + geburtsjahr: + - 1957 + sozialversicherung: + rente: + jahr_renteneintritt: + - 2025 + monat_renteneintritt: + - 1 + entgeltpunkte: + - 16.0 + erwerbsminderung: + grundsätzlich_anspruchsberechtigt: + - true + rentenartfaktor: + - 1.0 + zugangsfaktor: + - 0.997 + wohnort_ost_hh: + - false + provided: {} +outputs: + sozialversicherung: + rente: + erwerbsminderung: + betrag_m: + - 606.09 From 683da2e7b462ec9a9633695e3ddd4e7d25061314 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Sun, 13 Jul 2025 12:48:44 +0200 Subject: [PATCH 066/109] Remaining parts of 2025 parameter update (#1015) ### What problem do you want to solve? Closes #806 - Mindestunterhalt + Tests - Wohngeld tests --- .../unterhaltsvorschuss.yaml | 18 +++ ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 0 ...uchsh\303\266he_mittlere_altergruppe.yaml" | 44 ++++++ ...6he_obere_altergruppe_kein_einkommen.yaml" | 44 ++++++ ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 44 ++++++ ...pruchsh\303\266he_untere_altergruppe.yaml" | 44 ++++++ ...uchsh\303\266he_mittlere_altergruppe.yaml" | 44 ++++++ ...6he_obere_altergruppe_kein_einkommen.yaml" | 44 ++++++ ...rgruppe_\303\274ber_einkommensgrenze.yaml" | 44 ++++++ ...pruchsh\303\266he_untere_altergruppe.yaml" | 44 ++++++ ...shalt_1400_euro_monatliches_einkommen.yaml | 132 ++++++++++++++++++ ...shalt_2000_euro_monatliches_einkommen.yaml | 132 ++++++++++++++++++ 20 files changed, 634 insertions(+) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) rename "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" => "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" (100%) create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" create mode 100644 "src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" create mode 100644 src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml create mode 100644 src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml index db2b245064..86126da451 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.yaml @@ -99,6 +99,24 @@ raw_mindestunterhalt: jugendliche: satz: 645 reference: Artikel 1 V. v. 29.11.2023 BGBl. I Nr. 330. + 2025-01-01: + updates_previous: true + kleinkind: + satz: 482 + schulkind: + satz: 554 + jugendliche: + satz: 649 + reference: Artikel 1 V. v. 21.11.2024 BGBl. 2024 I Nr. 359 + 2026-01-01: + updates_previous: true + kleinkind: + satz: 486 + schulkind: + satz: 558 + jugendliche: + satz: 653 + reference: Artikel 1 V. v. 21.11.2024 BGBl. 2024 I Nr. 359 mindesteinkommen: name: de: >- diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2017-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-07-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2020-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2021-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2022-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2023-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen_\303\274ber_einkommensgrenze.yaml" rename to "src/_gettsim_tests/test_data/unterhaltsvorschuss/2024-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" new file mode 100644 index 0000000000..eb780c52d7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the middle age group (6-11). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 8 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 299.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" new file mode 100644 index 0000000000..8bc6cdd9ef --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the upper age group (12-17). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 15 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" new file mode 100644 index 0000000000..5ef68d9052 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the upper age group (12-17). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 15 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 394.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" new file mode 100644 index 0000000000..2c789c3de8 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2025-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the lower age group (0-5). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 4 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 227.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" new file mode 100644 index 0000000000..eb780c52d7 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_mittlere_altergruppe.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the middle age group (6-11). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 8 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 299.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" new file mode 100644 index 0000000000..8bc6cdd9ef --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_kein_einkommen.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the upper age group (12-17). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 15 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 0.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" new file mode 100644 index 0000000000..5ef68d9052 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_obere_altergruppe_\303\274ber_einkommensgrenze.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the upper age group (12-17). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 15 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 1000.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 394.0 diff --git "a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" new file mode 100644 index 0000000000..2c789c3de8 --- /dev/null +++ "b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2026-01-01/anspruchsh\303\266he_untere_altergruppe.yaml" @@ -0,0 +1,44 @@ +--- +info: + note: One child in the lower age group (0-5). + precision_atol: 0.01 + source: https://www.bmfsfj.de/bmfsfj/themen/familie/familienleistungen/unterhaltsvorschuss/unterhaltsvorschuss-73558 +inputs: + assumed: {} + provided: + alter: + - 45 + - 4 + familie: + alleinerziehend: + - true + - false + p_id_elternteil_1: + - -1 + - 0 + p_id_elternteil_2: + - -1 + - -1 + hh_id: + - 0 + - 0 + kindergeld: + p_id_empfänger: + - -1 + - 0 + p_id: + - 0 + - 1 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + - 0.0 + unterhaltsvorschuss: + einkommen_m: + - 0.0 + - 0.0 +outputs: + unterhaltsvorschuss: + betrag_m: + - 0.0 + - 227.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml new file mode 100644 index 0000000000..4be3511f47 --- /dev/null +++ b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml @@ -0,0 +1,132 @@ +--- +info: + note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision_atol: 0.01 + source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/stadt-wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2025-artikel.html +inputs: + assumed: {} + provided: + alter: + - 57 + anzahl_personen_hh: + - 1 + arbeitslosengeld_2: + bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + behinderungsgrad: + - 0 + einkommensteuer: + betrag_y_sn: + - 300.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 1400.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_der_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 0 + kindergeld: + ist_leistungsbegründendes_kind: + - false + p_id_empfänger: + - -1 + p_id: + - 0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + vermögen: + - 5000.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1982 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 600.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe_hh: + - 5 + mindesteinkommen_erreicht_bg: + - true + mindesteinkommen_erreicht_wthh: + - true +outputs: + wohngeld: + anspruchshöhe_m_bg: + - 368.0 + anspruchshöhe_m_wthh: + - 368.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml new file mode 100644 index 0000000000..ab44d41134 --- /dev/null +++ b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml @@ -0,0 +1,132 @@ +--- +info: + note: Created with Wohngeldrechner that doesn't check for Mindesteinkommen. + precision_atol: 0.01 + source: https://www.bmwsb.bund.de/Webs/BMWSB/DE/themen/stadt-wohnen/wohnraumfoerderung/wohngeld/wohngeldrechner-2025-artikel.html +inputs: + assumed: {} + provided: + alter: + - 57 + anzahl_personen_hh: + - 1 + arbeitslosengeld_2: + bezug_im_vorjahr: + - false + eigenbedarf_gedeckt: + - false + p_id_einstandspartner: + - -1 + behinderungsgrad: + - 0 + einkommensteuer: + betrag_y_sn: + - 300.0 + einkünfte: + aus_kapitalvermögen: + kapitalerträge_y: + - 0.0 + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 2000.0 + aus_selbstständiger_arbeit: + betrag_m: + - 0.0 + aus_vermietung_und_verpachtung: + betrag_m: + - 0.0 + sonstige: + ertragsanteil_der_rente: + - 0.0 + ohne_renten_m: + - 0.0 + gemeinsam_veranlagt: + - false + elterngeld: + anrechenbarer_betrag_m: + - 0.0 + betrag_m: + - 0.0 + familie: + alleinerziehend: + - false + p_id_ehepartner: + - -1 + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 + geburtsjahr: + - 1966 + geburtsmonat: + - 1 + geburtstag: + - 1 + hh_id: + - 0 + kindergeld: + ist_leistungsbegründendes_kind: + - false + p_id_empfänger: + - -1 + p_id: + - 0 + solidaritätszuschlag: + betrag_y_sn: + - 0.0 + sozialversicherung: + arbeitslosen: + betrag_m: + - 0.0 + beiträge_versicherter_m: + - 0.0 + kranken: + beitrag: + betrag_versicherter_m: + - 80.0 + rente: + altersrente: + betrag_m: + - 0.0 + beitrag: + betrag_versicherter_m: + - 100.0 + private_rente_betrag_m: + - 0.0 + unterhalt: + tatsächlich_erhaltener_betrag_m: + - 0.0 + unterhaltsvorschuss: + betrag_m: + - 0.0 + vermögen: + - 5000.0 + vorrangprüfungen: + wohngeld_und_kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohngeld_vorrang_vor_arbeitslosengeld_2_bg: + - true + wohnen: + baujahr_immobilie_hh: + - 1982 + bewohnt_eigentum_hh: + - false + bruttokaltmiete_m_hh: + - 600.0 + heizkosten_m_hh: + - 50.0 + wohnfläche_hh: + - 40.0 + wohngeld: + mietstufe_hh: + - 5 + mindesteinkommen_erreicht_bg: + - true + mindesteinkommen_erreicht_wthh: + - true +outputs: + wohngeld: + anspruchshöhe_m_bg: + - 145.0 + anspruchshöhe_m_wthh: + - 145.0 From d03cddab424e92d7b14e1d6d628b71509358ecfe Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:56:50 +0200 Subject: [PATCH 067/109] Fix Rente Hinzuverdienstgrenze (#1013) ### What problem do you want to solve? Closes #808 --- .../altersrente/hinzuverdienstgrenzen.py | 41 ++++++++-------- .../altersrente/hinzuverdienstgrenzen.yaml | 22 +++++++-- .../einkommen_knapp_\303\274ber_grenze.yaml" | 47 ++++++++++++++++++ .../2016-01-01/einkommen_unter_grenze.yaml | 0 .../einkommen_\303\274ber_grenze.yaml" | 0 .../einkommen_knapp_unter_grenze.yaml | 49 +++++++++++++++++++ .../einkommen_knapp_\303\274ber_grenze.yaml" | 49 +++++++++++++++++++ .../2018-01-01/hohes_einkommen.yaml | 0 .../2018-01-01/kein_einkommen.yaml | 0 .../2018-01-01/mittleres_einkommen.yaml | 0 .../2018-01-01/niedriges_einkommen.yaml | 0 .../einkommen_knapp_unter_grenze.yaml | 49 +++++++++++++++++++ .../einkommen_knapp_\303\274ber_grenze.yaml" | 49 +++++++++++++++++++ .../2021-01-01/hohes_einkommen.yaml | 0 .../2021-01-01/kein_einkommen.yaml | 0 .../2021-01-01/mittleres_einkommen.yaml | 0 .../2021-01-01/niedriges_einkommen.yaml | 0 .../2023-01-01/hohes_einkommen.yaml | 0 .../2023-01-01/kein_einkommen.yaml | 0 .../2023-01-01/mittleres_einkommen.yaml | 0 .../2023-01-01/niedriges_einkommen.yaml | 0 21 files changed, 280 insertions(+), 26 deletions(-) create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_knapp_\303\274ber_grenze.yaml" rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2016-01-01/einkommen_unter_grenze.yaml (100%) rename "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" (100%) create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_unter_grenze.yaml create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_\303\274ber_grenze.yaml" rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2018-01-01/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2018-01-01/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2018-01-01/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2018-01-01/niedriges_einkommen.yaml (100%) create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_unter_grenze.yaml create mode 100644 "src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_\303\274ber_grenze.yaml" rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2021-01-01/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2021-01-01/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2021-01-01/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2021-01-01/niedriges_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2023-01-01/hohes_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2023-01-01/kein_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2023-01-01/mittleres_einkommen.yaml (100%) rename src/_gettsim_tests/test_data/sozialversicherung/rente/{ges_rente_hinzuverdienst => hinzuverdienst}/2023-01-01/niedriges_einkommen.yaml (100%) diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py index 69fe2f39e9..0be5a7cf8c 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py @@ -15,9 +15,9 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( alter: int, regelaltersrente__altersgrenze: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, bruttorente_basisbetrag_m: float, - hinzuverdienstgrenze: float, + hinzuverdienstgrenze_m: float, ) -> float: """Pension benefits after earnings test for early retirees. @@ -26,8 +26,8 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( # TODO (@MImmesberger): Use age with monthly precision. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 if (alter >= regelaltersrente__altersgrenze) or ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - <= hinzuverdienstgrenze + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= hinzuverdienstgrenze_m ): out = bruttorente_basisbetrag_m else: @@ -81,12 +81,12 @@ def bruttorente_m_mit_hinzuverdienstdeckel( end_date="2022-12-31", ) def zahlbetrag_ohne_deckel_m( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, alter: int, regelaltersrente__altersgrenze: float, bruttorente_basisbetrag_m: float, differenz_bruttolohn_hinzuverdienstgrenze_m: float, - hinzuverdienstgrenze: float, + hinzuverdienstgrenze_m: float, abzugsrate_hinzuverdienst: float, ) -> float: """Pension benefits after earnings test without accounting for the earnings cap @@ -96,11 +96,10 @@ def zahlbetrag_ohne_deckel_m( # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 # No deduction because of age or low earnings if (alter >= regelaltersrente__altersgrenze) or ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - <= hinzuverdienstgrenze + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + <= hinzuverdienstgrenze_m ): out = bruttorente_basisbetrag_m - # Basis deduction of 40% else: out = max( bruttorente_basisbetrag_m @@ -115,14 +114,14 @@ def zahlbetrag_ohne_deckel_m( start_date="2017-07-01", end_date="2022-12-31", ) -def differenz_bruttolohn_hinzuverdienstgrenze_y( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - hinzuverdienstgrenze: float, +def differenz_bruttolohn_hinzuverdienstgrenze_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + hinzuverdienstgrenze_m: float, ) -> float: """Earnings that are subject to pension deductions.""" return max( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - - hinzuverdienstgrenze, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - hinzuverdienstgrenze_m, 0.0, ) @@ -131,16 +130,16 @@ def differenz_bruttolohn_hinzuverdienstgrenze_y( start_date="2017-07-01", end_date="2022-12-31", ) -def differenz_bruttolohn_hinzuverdienstdeckel_y( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, - zahlbetrag_ohne_deckel_y: float, - höchster_bruttolohn_letzte_15_jahre_vor_rente_y: float, +def differenz_bruttolohn_hinzuverdienstdeckel_m( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, + zahlbetrag_ohne_deckel_m: float, + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: float, ) -> float: """Income above the earnings cap (Hinzuverdienstdeckel).""" return max( - zahlbetrag_ohne_deckel_y - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y - - höchster_bruttolohn_letzte_15_jahre_vor_rente_y, + zahlbetrag_ohne_deckel_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m + - höchster_bruttolohn_letzte_15_jahre_vor_rente_m, 0.0, ) diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml index 1fa8345e3b..a07b33d0bc 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.yaml @@ -17,10 +17,10 @@ abzugsrate_hinzuverdienst: value: 0.4 2023-01-01: note: Revoked in 2023. -hinzuverdienstgrenze: +hinzuverdienstgrenze_m: name: - de: Hinzuverdienstgrenze vor der Regelaltersgrenze - en: Additional earnings threshold during early retirement + de: Monatliche Hinzuverdienstgrenze vor der Regelaltersgrenze + en: Monthly additional earnings threshold during early retirement description: de: >- § 34 SGB VI, Hinzuverdienstgrenze vor der Regelaltersgrenze @@ -29,14 +29,26 @@ hinzuverdienstgrenze: unit: Euros reference_period: Year type: scalar - # Values need to be fixed - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/808 2002-01-01: value: 350.0 2008-01-01: value: 400.0 2013-01-01: value: 450.0 + 2017-01-01: + note: Yearly additional earnings threshold, see 'hinzuverdienstgrenze_y'. +hinzuverdienstgrenze_y: + name: + de: Jährliche Hinzuverdienstgrenze vor der Regelaltersgrenze + en: Yearly additional earnings threshold during early retirement + description: + de: >- + § 34 SGB VI, Hinzuverdienstgrenze vor der Regelaltersgrenze + en: >- + § 34 SGB VI, additional earnings threshold during early retirement + unit: Euros + reference_period: Year + type: scalar 2017-01-01: value: 6300.0 2020-01-01: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_knapp_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_knapp_\303\274ber_grenze.yaml" new file mode 100644 index 0000000000..e99debe282 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_knapp_\303\274ber_grenze.yaml" @@ -0,0 +1,47 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 451.0 + geburtsjahr: + - 1957 + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + rente: + altersrente: + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 + wohnort_ost_hh: + - false +outputs: + sozialversicherung: + rente: + altersrente: + betrag_m: + - 0.0 + bruttorente_basisbetrag_m: + - 1168.4 + bruttorente_m: + - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_unter_grenze.yaml diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" similarity index 100% rename from "src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2016-01-01/einkommen_\303\274ber_grenze.yaml" diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_unter_grenze.yaml new file mode 100644 index 0000000000..4fd51a3ad0 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_unter_grenze.yaml @@ -0,0 +1,49 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 524.0 + geburtsjahr: + - 1957 + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 + wohnort_ost_hh: + - false +outputs: + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1241.2 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 1241.2 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_\303\274ber_grenze.yaml" new file mode 100644 index 0000000000..9fb200472b --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/einkommen_knapp_\303\274ber_grenze.yaml" @@ -0,0 +1,49 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 526.0 + geburtsjahr: + - 1957 + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 3000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 + wohnort_ost_hh: + - false +outputs: + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1240.8 + bruttorente_basisbetrag_m: + - 1241.2 + bruttorente_m: + - 1240.8 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2018-01-01/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2018-01-01/niedriges_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_unter_grenze.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_unter_grenze.yaml new file mode 100644 index 0000000000..f70ef507d5 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_unter_grenze.yaml @@ -0,0 +1,49 @@ +--- +info: + note: Low income and high Hinzuverdienstdeckel. + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3830.0 + geburtsjahr: + - 1957 + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 10000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 + wohnort_ost_hh: + - false +outputs: + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1367.6 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 1367.6 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_\303\274ber_grenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_\303\274ber_grenze.yaml" new file mode 100644 index 0000000000..f5ed4eeb90 --- /dev/null +++ "b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/einkommen_knapp_\303\274ber_grenze.yaml" @@ -0,0 +1,49 @@ +--- +info: + note: Low income and high Hinzuverdienstdeckel. + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + alter: + - 64 + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3840.0 + geburtsjahr: + - 1957 + hh_id: + - 0 + p_id: + - 0 + sozialversicherung: + rente: + altersrente: + höchster_bruttolohn_letzte_15_jahre_vor_rente_m: + - 10000.0 + zugangsfaktor: + - 1.0 + bezieht_rente: + - true + entgeltpunkte_ost: + - 0.0 + entgeltpunkte_west: + - 40.0 + grundrente: + betrag_m: + - 0.0 + wohnort_ost_hh: + - false +outputs: + sozialversicherung: + rente: + altersrente: + betrag_m: + - 1366.93 + bruttorente_basisbetrag_m: + - 1367.6 + bruttorente_m: + - 1366.93 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2021-01-01/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2021-01-01/niedriges_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/hohes_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/hohes_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/hohes_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/kein_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/kein_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/kein_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/mittleres_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/mittleres_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/mittleres_einkommen.yaml diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/niedriges_einkommen.yaml similarity index 100% rename from src/_gettsim_tests/test_data/sozialversicherung/rente/ges_rente_hinzuverdienst/2023-01-01/niedriges_einkommen.yaml rename to src/_gettsim_tests/test_data/sozialversicherung/rente/hinzuverdienst/2023-01-01/niedriges_einkommen.yaml From 1823c3144f43701a7c88455a5895dc6a547677dd Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 15 Jul 2025 13:13:59 +0200 Subject: [PATCH 068/109] Enable annotations for interface / tax-transfer functions (#1018) - [x] Set `set_annotations=True` for interface function. Fix errors that cropped up due to inconsistent annotations. - [x] Set `set_annotations=True` for taxes & transfers function. - [x] Fix GETTSIM - [x] Fix METTSIM / ttsim tests --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 2 +- src/_gettsim/familie/inputs.py | 7 ++++++- src/ttsim/interface_dag.py | 4 ++-- src/ttsim/interface_dag_elements/fail_if.py | 7 +++---- src/ttsim/interface_dag_elements/labels.py | 3 ++- .../policy_environment.py | 2 +- .../specialized_environment.py | 2 +- src/ttsim/interface_dag_elements/templates.py | 4 ++-- .../interface_dag_elements/tt_targets.py | 5 +++-- src/ttsim/interface_dag_elements/warn_if.py | 4 ++-- .../test_specialized_environment.py | 18 ++++++++++------- .../child_tax_credit/child_tax_credit.py | 20 ++++++++++--------- tests/ttsim/tt_dag_elements/test_rounding.py | 2 +- 13 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 5a7c431f40..0270a0bb1b 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -172,7 +172,7 @@ def abzug_durch_einkommen_m( leaf_name="ist_leistungsbegründendes_kind", ) def _leistungsbegründendes_kind_vor_abschaffung( - p_id_empfänger: bool, + p_id_empfänger: int, alter_monate: int, budgetsatz: bool, maximales_kindsalter_budgetsatz: float, diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index f345a26309..2626076ad5 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import FKType, policy_input +from ttsim.tt_dag_elements import AggType, FKType, agg_by_group_function, policy_input @policy_input() @@ -10,6 +10,11 @@ def alleinerziehend() -> bool: """Single parent.""" +@agg_by_group_function(agg_type=AggType.ANY) +def alleinerziehend_fg(alleinerziehend: bool, fg_id: int) -> bool: + pass + + @policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) def p_id_ehepartner() -> int: """Identifier of married partner.""" diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 2a7eeb552a..3ff49febc3 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -133,7 +133,7 @@ def lexsort_key(x: str) -> int: functions=functions, targets=main_target, enforce_signature=False, - set_annotations=False, + set_annotations=True, lexsort_key=lexsort_key, ) else: @@ -143,7 +143,7 @@ def lexsort_key(x: str) -> int: targets=main_targets, return_type="dict", enforce_signature=False, - set_annotations=False, + set_annotations=True, lexsort_key=lexsort_key, ) return f(**input_qnames) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 6b2108cbc0..c3f87de7ff 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -43,7 +43,6 @@ OrigParamSpec, PolicyEnvironment, QNameData, - QNameDataColumns, SpecEnvWithoutTreeLogicAndWithDerivedFunctions, SpecEnvWithPartialledParamsAndScalars, UnorderedQNames, @@ -227,7 +226,7 @@ def active_periods_overlap( def any_paths_are_invalid( policy_environment: PolicyEnvironment, input_data__tree: NestedData, - tt_targets__tree: NestedTargetDict, + tt_targets__tree: NestedTargetDict | NestedStrings, labels__top_level_namespace: UnorderedQNames, ) -> None: """Thin wrapper around `dt.fail_if_paths_are_invalid`.""" @@ -690,7 +689,7 @@ def root_nodes_are_missing( @fail_or_warn_function() def targets_are_not_in_specialized_environment_or_data( specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - labels__processed_data_columns: QNameDataColumns, + labels__processed_data_columns: UnorderedQNames, tt_targets__qname: OrderedQNames, ) -> None: """Fail if some target is not among functions. @@ -725,7 +724,7 @@ def targets_are_not_in_specialized_environment_or_data( @fail_or_warn_function() -def targets_tree_is_invalid(tt_targets__tree: NestedTargetDict) -> None: +def targets_tree_is_invalid(tt_targets__tree: NestedTargetDict | NestedStrings) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. """ diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py index 77fccd4b52..3d0480b4c3 100644 --- a/src/ttsim/interface_dag_elements/labels.py +++ b/src/ttsim/interface_dag_elements/labels.py @@ -22,6 +22,7 @@ PolicyEnvironment, QNameData, SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, UnorderedQNames, ) @@ -181,7 +182,7 @@ def fail_if_multiple_time_units_for_same_base_name_and_group( @interface_function() def column_targets( - specialized_environment__with_partialled_params_and_scalars: UnorderedQNames, + specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, # noqa: E501 tt_targets__qname: OrderedQNames, ) -> OrderedQNames: """All targets that are column functions.""" diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index f1b37300bd..79e27ddc2e 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -43,7 +43,7 @@ @interface_function(in_top_level_namespace=True) def policy_environment( - orig_policy_objects__column_objects_and_param_functions: NestedColumnObjectsParamFunctions, # noqa: E501 + orig_policy_objects__column_objects_and_param_functions: FlatColumnObjectsParamFunctions, # noqa: E501 orig_policy_objects__param_specs: FlatOrigParamSpecs, policy_date: datetime.date, xnp: ModuleType, diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index 5270a1f236..b8368a2192 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -351,7 +351,7 @@ def tax_transfer_function( return_type="dict", aggregator=None, enforce_signature=True, - set_annotations=False, + set_annotations=True, ) if backend == "jax": diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index 028eb7033f..1b1a1dfb69 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -13,14 +13,14 @@ NestedInputStructureDict, OrderedQNames, PolicyEnvironment, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, UnorderedQNames, ) @interface_function() def input_data_dtypes( - specialized_environment__with_partialled_params_and_scalars: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 + specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, # noqa: E501 policy_environment: PolicyEnvironment, tt_targets__qname: OrderedQNames, labels__top_level_namespace: UnorderedQNames, diff --git a/src/ttsim/interface_dag_elements/tt_targets.py b/src/ttsim/interface_dag_elements/tt_targets.py index d8bb65820b..667ed883fb 100644 --- a/src/ttsim/interface_dag_elements/tt_targets.py +++ b/src/ttsim/interface_dag_elements/tt_targets.py @@ -11,6 +11,7 @@ if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( + NestedStrings, NestedTargetDict, OrderedQNames, PolicyEnvironment, @@ -18,7 +19,7 @@ @interface_function() -def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict: +def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict | NestedStrings: """Targets as a tree. Will typically be provided by the user. If requesting `df_with_mapper` as a main target, the leaves must be the desired @@ -37,6 +38,6 @@ def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict: @interface_function() -def qname(tree: NestedTargetDict) -> OrderedQNames: +def qname(tree: NestedTargetDict | NestedStrings) -> OrderedQNames: """Targets in their qualified name-representation.""" return dt.flatten_to_qnames(tree) diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py index 9f6f1cf713..ba59201d99 100644 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -15,7 +15,7 @@ from ttsim.interface_dag_elements.typing import ( OrderedQNames, PolicyEnvironment, - QNameDataColumns, + UnorderedQNames, ) @@ -67,7 +67,7 @@ def __init__(self, columns_overriding_functions: OrderedQNames) -> None: @fail_or_warn_function() def functions_and_data_columns_overlap( policy_environment: PolicyEnvironment, - labels__processed_data_columns: QNameDataColumns, + labels__processed_data_columns: UnorderedQNames, ) -> None: """Warn if functions are overridden by data.""" overridden_elements = sorted( diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 86197321bb..b56fd16be3 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -30,7 +30,11 @@ ) if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import IntColumn, PolicyEnvironment + from ttsim.interface_dag_elements.typing import ( + FloatColumn, + IntColumn, + PolicyEnvironment, + ) @policy_input() @@ -267,7 +271,7 @@ def function_with_float_return(x: int) -> float: return x -def some_x(x): +def some_x(x: int) -> int: return x @@ -575,11 +579,11 @@ def test_user_provided_aggregation(backend): expected = pd.Series([400, 400, 200], index=pd.Index(data["p_id"], name="p_id")) @policy_function(vectorization_strategy="vectorize") - def betrag_m_double(betrag_m): + def betrag_m_double(betrag_m: float) -> float: return 2 * betrag_m @agg_by_group_function(agg_type=AggType.MAX) - def betrag_m_double_fam(betrag_m_double, fam_id) -> float: + def betrag_m_double_fam(betrag_m_double: float, fam_id: int) -> float: pass policy_environment = { @@ -625,11 +629,11 @@ def test_user_provided_aggregation_with_time_conversion(backend): ) @policy_function(vectorization_strategy="vectorize") - def betrag_double_m(betrag_m): + def betrag_double_m(betrag_m: float) -> float: return 2 * betrag_m @agg_by_group_function(agg_type=AggType.MAX) - def max_betrag_double_m_fam(betrag_double_m, fam_id) -> float: + def max_betrag_double_m_fam(betrag_double_m: float, fam_id: int) -> float: pass policy_environment = { @@ -716,7 +720,7 @@ def test_user_provided_aggregate_by_p_id_specs( xnp, ): @policy_function(leaf_name=leaf_name, vectorization_strategy="not_required") - def source() -> int: + def source() -> FloatColumn: return xnp.array([100, 200, 300]) policy_environment = merge_trees( diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py index 7076e773de..0d5e559977 100644 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py @@ -2,9 +2,6 @@ from typing import TYPE_CHECKING -if TYPE_CHECKING: - from types import ModuleType - from ttsim.tt_dag_elements import ( AggType, agg_by_p_id_function, @@ -12,6 +9,11 @@ policy_function, ) +if TYPE_CHECKING: + from types import ModuleType + + from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn + @agg_by_p_id_function(agg_type=AggType.SUM) def amount_y( @@ -22,7 +24,7 @@ def amount_y( """The amount of child tax credit at the recipient level.""" -@policy_function(vectorization_strategy="vectorize") +@policy_function() def claim_of_child_y( child_eligible: bool, schedule: dict[str, float], @@ -33,7 +35,7 @@ def claim_of_child_y( return 0 -@policy_function(vectorization_strategy="vectorize") +@policy_function() def child_eligible( age: int, schedule: dict[str, float], @@ -44,11 +46,11 @@ def child_eligible( @policy_function(vectorization_strategy="not_required") def in_same_household_as_recipient( - p_id: int, - kin_id: int, - p_id_recipient: int, + p_id: IntColumn, + kin_id: IntColumn, + p_id_recipient: IntColumn, xnp: ModuleType, -) -> bool: +) -> BoolColumn: return ( join( foreign_key=p_id_recipient, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index fdda9a15a4..cbd24c1aa0 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -132,7 +132,7 @@ def test_rounding_with_time_conversion(backend, xnp): # Define function that should be rounded @policy_function(rounding_spec=RoundingSpec(base=1, direction="down")) - def test_func_m(x): + def test_func_m(x: float) -> float: return x data = { From 322dbbe8775c761a633ffc275012fa9db6daf152 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 15 Jul 2025 14:07:24 +0200 Subject: [PATCH 069/109] Turn fail_ifs and warn_ifs on + let `main` return a pytree, update pixi environments. (#1016) ### What problem do you want to solve? This PR does three things: - Closes #1004 - Turns `fail_if` and `warn_if` functions on. Before, there was a bug such that only `fail_if__root_nodes_are_missing` was recognised. This was discovered in this PR and fixed. - Update pixi environments #1020 - Update pdb+ to 1.7.1, which means it can be used with Python 3.13 - Use jax with 3.13 - Install jax via pypi on all platforms - Add jax/metal feature/environment on OSX-ARM64. --------- Co-authored-by: Tim Mensinger <mensingertim@gmail.com> Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Co-authored-by: Tim Mensinger <mensingertim@gmail.com> --- .github/workflows/main.yaml | 4 +- pixi.lock | 8815 ++++++----------- pyproject.toml | 40 +- src/_gettsim_tests/test_jittability.py | 29 +- src/_gettsim_tests/test_policy.py | 29 +- src/_gettsim_tests/test_templates.py | 13 +- src/ttsim/interface_dag.py | 66 +- src/ttsim/interface_dag_elements/__init__.py | 5 +- src/ttsim/interface_dag_elements/fail_if.py | 56 +- .../interface_dag_elements/test_failures.py | 94 +- .../interface_dag_elements/test_mettsim.py | 5 +- .../interface_dag_elements/test_templates.py | 16 +- .../interface_dag_elements/test_warnings.py | 4 +- tests/ttsim/test_plot_dag.py | 44 - 14 files changed, 2949 insertions(+), 6271 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b73ea32a89..e409eecfa6 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -26,7 +26,7 @@ jobs: - py311 - py312 - py313 - - py312-jax + - py313-jax exclude: - os: macos-latest environment: py311, py312 @@ -57,7 +57,7 @@ jobs: run: pixi run -e ${{ matrix.environment }} tests shell: bash -el {0} - name: Run tests with JAX backend - if: matrix.environment == 'py312-jax' + if: matrix.environment == 'py313-jax' run: pixi run -e ${{ matrix.environment }} tests-jax shell: bash -el {0} - name: Upload coverage reports diff --git a/pixi.lock b/pixi.lock index 4549f5aa4e..0ce5818672 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9,10 +9,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -25,19 +25,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -76,14 +76,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -91,54 +91,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda @@ -154,57 +154,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py312hf79963d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -218,30 +218,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -259,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -268,23 +267,23 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -294,20 +293,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -331,7 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -344,39 +343,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -384,25 +383,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -412,58 +412,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -477,22 +477,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -501,8 +500,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -510,23 +509,23 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -536,20 +535,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -573,7 +572,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -586,39 +585,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -626,25 +625,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -654,58 +654,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -719,22 +719,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -743,8 +742,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -752,22 +751,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -776,21 +775,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -810,9 +809,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -823,7 +822,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -831,56 +830,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -890,56 +890,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -953,28 +953,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -992,8 +991,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -1001,16 +1000,16 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ docs: channels: @@ -1040,11 +1039,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1119,7 +1118,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda @@ -1146,12 +1145,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda @@ -1180,7 +1179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda @@ -1248,7 +1247,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1290,11 +1289,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl @@ -1319,11 +1318,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1399,7 +1398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -1420,9 +1419,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda @@ -1450,7 +1449,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.7.0.2-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda @@ -1519,7 +1518,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1544,11 +1543,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl @@ -1573,11 +1572,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1653,7 +1652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -1674,9 +1673,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda @@ -1704,7 +1703,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.7.0.2-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda @@ -1773,7 +1772,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1798,11 +1797,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl @@ -1825,11 +1824,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1921,9 +1920,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda @@ -1952,7 +1951,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda @@ -1985,7 +1984,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda @@ -2020,7 +2019,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -2059,11 +2058,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl @@ -2079,10 +2078,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -2095,19 +2094,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -2133,7 +2132,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -2146,14 +2145,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -2161,54 +2160,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda @@ -2224,57 +2223,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py312hf79963d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2288,30 +2287,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -2329,7 +2327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -2338,28 +2336,28 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -2369,20 +2367,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2406,7 +2404,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -2419,39 +2417,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -2459,25 +2457,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -2487,58 +2486,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2552,22 +2551,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2576,8 +2574,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -2585,28 +2583,28 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -2616,20 +2614,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2653,7 +2651,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -2666,39 +2664,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -2706,25 +2704,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -2734,58 +2733,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -2799,22 +2798,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2823,8 +2821,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -2832,27 +2830,27 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -2861,21 +2859,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2895,9 +2893,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -2908,7 +2906,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -2916,56 +2914,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -2975,56 +2974,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3038,28 +3037,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3077,8 +3075,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -3086,21 +3084,21 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py311: channels: @@ -3111,10 +3109,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3127,19 +3125,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -3165,7 +3163,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -3178,14 +3176,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3193,54 +3191,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda @@ -3256,57 +3254,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h519dc76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py311hed34c8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3320,30 +3318,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -3361,7 +3358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -3370,22 +3367,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h3336109_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3396,19 +3393,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py311h137bacd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py311ha3cf9ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3433,7 +3430,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -3446,14 +3443,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3461,24 +3458,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -3486,24 +3483,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3514,58 +3511,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h9224382_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py311hf4bc098_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py311ha9b10cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3579,22 +3576,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3603,7 +3599,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -3612,22 +3608,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311h460d6c5_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3638,19 +3634,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3675,7 +3671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -3688,14 +3684,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3703,24 +3699,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -3728,24 +3724,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3756,58 +3752,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h4379d9d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py311hff7e5bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py311hd3d57da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -3821,22 +3817,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3845,7 +3840,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -3854,21 +3849,21 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py311he736701_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -3878,20 +3873,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py311h3f79411_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -3912,9 +3907,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -3925,7 +3920,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -3933,7 +3928,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -3941,43 +3936,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda @@ -3992,56 +3987,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311haedcf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py311h11fd7f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py311h228682d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py311hefeebc8_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311h5082efb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py311hf51aa87_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4055,28 +4050,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4094,7 +4088,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -4103,16 +4097,16 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/01/85/b52f24859237b4e9d523d5655796d911ba3d46e242eb1959c45b6af5aedd/simplejson-3.20.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py312: channels: @@ -4123,10 +4117,10 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4139,19 +4133,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -4177,7 +4171,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda @@ -4190,14 +4184,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4205,54 +4199,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda @@ -4268,57 +4262,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py312hf79963d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4332,30 +4326,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda @@ -4373,7 +4366,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -4382,22 +4375,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4408,19 +4401,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4445,7 +4438,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda @@ -4458,14 +4451,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4473,24 +4466,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda @@ -4498,24 +4491,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4526,58 +4519,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py312hbf2c5ff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4591,22 +4584,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4615,7 +4607,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -4624,22 +4616,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4650,19 +4642,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4687,7 +4679,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda @@ -4700,14 +4692,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4715,24 +4707,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -4740,24 +4732,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4768,58 +4760,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py312h98f7732_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -4833,22 +4825,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4857,7 +4848,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -4866,21 +4857,21 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda @@ -4890,20 +4881,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -4924,9 +4915,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.2.1-hf40819d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda @@ -4937,7 +4928,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -4945,7 +4936,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -4953,43 +4944,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda @@ -5004,56 +4995,56 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py312hc128f0a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py312h829343e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -5067,28 +5058,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5106,7 +5096,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl @@ -5115,18 +5105,18 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - py312-cuda: + py313: channels: - url: https://conda.anaconda.org/conda-forge/ indexes: @@ -5139,7 +5129,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -5149,50 +5139,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -5213,8 +5176,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda @@ -5222,8 +5183,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda @@ -5244,12 +5203,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py312hbc630d6_200.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -5263,27 +5220,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda @@ -5291,60 +5234,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -5358,36 +5290,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -5403,20 +5333,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -5445,7 +5374,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -5453,62 +5382,51 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - py312-jax: - channels: - - url: https://conda.anaconda.org/conda-forge/ - indexes: - - https://pypi.org/simple - packages: - linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -5518,45 +5436,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -5570,114 +5486,98 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py312h011e53f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda @@ -5692,101 +5592,83 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - osx-64: + osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -5796,28 +5678,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 @@ -5829,264 +5711,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py312hd0c0319_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - - pypi: ./ - osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -6102,10 +5730,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -6116,28 +5743,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda @@ -6145,15 +5769,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -6167,37 +5790,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py312h1fbede1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py312hcedbd36_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -6218,14 +5839,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -6237,7 +5858,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -6245,13 +5866,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -6260,7 +5881,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py312h4389bb4_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-21.2.0-py313ha7868ed_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -6269,21 +5890,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -6331,7 +5952,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -6364,16 +5985,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -6383,14 +6005,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -6403,34 +6025,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py312h4c6beb1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pygraphviz-1.14-py313h592568e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -6452,7 +6074,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda @@ -6460,7 +6082,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda @@ -6485,31 +6107,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - py313: + py313-cuda: channels: - url: https://conda.anaconda.org/conda-forge/ indexes: @@ -6536,17 +6153,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -6592,7 +6209,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -6615,7 +6232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda @@ -6639,15 +6256,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda @@ -6662,16 +6279,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda @@ -6694,7 +6311,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -6710,7 +6327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -6733,16 +6350,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -6772,54 +6389,83 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2b/96/53928ad62ecddbf76f4c413025fdeab5a90adf7fbd970d800162399e504a/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/25/48/b54a06168a2190572a312bfe4ce443687773eb61367ced31e064953dd2f7/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bf/f9/dcb91a671d5643ca132e4c8377982ab5c2cadc3a60957e08e30d678bfb81/nvidia_nvshmem_cu12-3.3.9-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ - osx-64: + py313-jax: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py313h536fd9c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda @@ -6829,43 +6475,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.2.1-h44a0556_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -6879,98 +6525,105 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.10.0-h65c71a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py313h3a8fdcd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda @@ -6985,45 +6638,67 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -7045,17 +6720,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -7100,7 +6775,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -7125,7 +6800,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda @@ -7137,21 +6812,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -7162,16 +6837,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda @@ -7195,7 +6870,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -7211,7 +6886,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -7234,9 +6909,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda @@ -7256,15 +6931,20 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -7285,17 +6965,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda @@ -7338,7 +7018,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda @@ -7379,11 +7059,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.8-h442d1da_0.conda @@ -7398,16 +7078,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -7428,7 +7108,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -7436,7 +7116,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py313h2100fd5_0.conda @@ -7445,7 +7125,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -7469,9 +7149,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda @@ -7505,20 +7185,280 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ + py313-metal: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py313h20a7fcf_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.2.1-hff64154_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.14-py313hcb705dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py313had225c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py313hb6afeec_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl + - pypi: ./ packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -7568,21 +7508,9 @@ packages: - pkg:pypi/accessible-pygments?source=hash-mapping size: 1326096 timestamp: 1734956217254 -- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda - sha256: 63e532087119112c81d81c067e00d1fd49ff1b842ffea4469b78b505be63c042 - md5: 11539f9e49efaa281da735ded100b152 - depends: - - __unix - - hicolor-icon-theme - - librsvg - license: LGPL-3.0-or-later OR CC-BY-SA-3.0 - license_family: LGPL - purls: [] - size: 610380 - timestamp: 1741999835753 -- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda - sha256: 824a7349bbb2ef8014077ddcfd418065a0a4de873ada1bd1b8826e20bed18c15 - md5: eeb18017386c92765ad8ffa986c3f4ce +- conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + sha256: 824a7349bbb2ef8014077ddcfd418065a0a4de873ada1bd1b8826e20bed18c15 + md5: eeb18017386c92765ad8ffa986c3f4ce depends: - __unix - hicolor-icon-theme @@ -7633,21 +7561,6 @@ packages: - pkg:pypi/appnope?source=hash-mapping size: 10076 timestamp: 1733332433806 -- conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f - md5: a7ee488b71c30ada51c48468337b85ba - depends: - - argon2-cffi-bindings - - python >=3.9 - - typing-extensions - constrains: - - argon2_cffi ==999 - license: MIT - license_family: MIT - purls: - - pkg:pypi/argon2-cffi?source=hash-mapping - size: 18594 - timestamp: 1733311166338 - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda sha256: bea62005badcb98b1ae1796ec5d70ea0fc9539e7d59708ac4e7d41e2f4bb0bad md5: 8ac12aff0860280ee0cff7fa2cf63f3b @@ -7988,30 +7901,9 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/beautifulsoup4?source=compressed-mapping + - pkg:pypi/beautifulsoup4?source=hash-mapping size: 146613 timestamp: 1744783307123 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda - sha256: 6c9b85a6ece53c809d5878aa2746c980fe8411e4d6dc499e60f417aea4790464 - md5: 7a1b5c3fbc0419961eaed361eedc90d4 - depends: - - ld_impl_linux-64 2.44 h1423503_0 - - sysroot_linux-64 - license: GPL-3.0-only - license_family: GPL - purls: [] - size: 3577149 - timestamp: 1751601722583 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda - sha256: cedff4ae20d7e7c6a9b5ea050b68b09210e761594af21ae6bbd596abb73215be - md5: 9f88de9963795dcfab936e092eac3424 - depends: - - binutils_impl_linux-64 2.44 h4bf12b8_0 - license: GPL-3.0-only - license_family: GPL - purls: [] - size: 35967 - timestamp: 1751601742970 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd md5: f0b4c8e370446ef89797608d60a564b3 @@ -8036,9 +7928,9 @@ packages: purls: [] size: 4213 timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - sha256: 949913bbd1f74d1af202d3e4bff2e0a4e792ec00271dc4dd08641d4221aa2e12 - md5: d21daab070d76490cb39a8f1d1729d79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_3.conda + sha256: 4fab04fcc599853efb2904ea3f935942108613c7515f7dd57e7f034650738c52 + md5: 8565f7297b28af62e5de2d968ca32e31 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8046,30 +7938,13 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 350367 - timestamp: 1725267768486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libbrotlicommon 1.1.0 hb9d3cd8_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 349867 - timestamp: 1725267732089 + size: 350166 + timestamp: 1749230304421 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 md5: a32e0c069f6c3dcac635f7b0b0dac67e @@ -8104,38 +7979,22 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 350295 timestamp: 1749230225293 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hd89902b_2.conda - sha256: 004cefbd18f581636a8dcb1964fb73478f15d496769226ec896c1d4a0161b7d8 - md5: d75f06ee06001794aa83a05e885f1520 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hc356e98_3.conda + sha256: 63f3771e23a1f3f9866ece0252586b5b57eefba8d83a2871a72c82716944cc7b + md5: 7259b2f4870cab602f1512562e5cbb30 depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 363793 - timestamp: 1725267947069 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 - md5: b95025822e43128835826ec0cc45a551 - depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h00291cd_2 + - libbrotlicommon 1.1.0 h6e16a3a_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 363178 - timestamp: 1725267893889 + size: 367210 + timestamp: 1749230581348 - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 md5: 11489c0fc22f550acf63da5e7ec7304d @@ -8168,23 +8027,23 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 366909 timestamp: 1749230725855 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - sha256: f507d65e740777a629ceacb062c768829ab76fde01446b191699a734521ecaad - md5: c8793a23206344faa25f4e0b5d0e7908 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h155a34a_3.conda + sha256: 7414997b02a5f07d0b089fb24f1e755347fd827fa5fd158681766fce9583dd9b + md5: ba41239b4753557a20cf2ac2cd4250c5 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + - libbrotlicommon 1.1.0 h5505292_3 license: MIT license_family: MIT purls: - pkg:pypi/brotli?source=hash-mapping - size: 339584 - timestamp: 1725268241628 + size: 338502 + timestamp: 1749230799184 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda sha256: 35df7079768b4c51764149c42b14ccc25c4415e4365ecc06c38f74562d9e4d16 md5: c7c728df70dc05a443f1e337c28de22d @@ -8202,23 +8061,6 @@ packages: - pkg:pypi/brotli?source=compressed-mapping size: 339365 timestamp: 1749230606596 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 339360 - timestamp: 1725268143995 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda sha256: 0f2f3c7b3f6a19a27b2878b58bfd16af69cea90d0d3052a2a0b4e0a2cbede8f9 md5: 3030bcec50cc407b596f9311eeaa611f @@ -8236,9 +8078,9 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 338938 timestamp: 1749230456550 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_2.conda - sha256: aa3ac5dbf63db2f145235708973c626c2189ee4040d769fdf0076286fa45dc26 - md5: a0ea2839841a06740a1c110ba3317b42 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py311hda3d55a_3.conda + sha256: a602b15fe1b3a6b40aab7d99099a410b69ccad9bb273779531cef00fc52d762e + md5: 2d99144abeb3b6b65608fdd7810dbcbd depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -8246,30 +8088,13 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/brotli?source=hash-mapping - size: 322114 - timestamp: 1725268368720 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c - md5: a99aec1ac46794a5fb1cd3cf5d2b6110 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - libbrotlicommon 1.1.0 h2466b09_2 + - libbrotlicommon 1.1.0 h2466b09_3 license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=hash-mapping - size: 321874 - timestamp: 1725268491976 + - pkg:pypi/brotli?source=compressed-mapping + size: 321757 + timestamp: 1749231264056 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f md5: a87a39f9eb9fd5f171b13d8c79f7a99a @@ -8347,73 +8172,24 @@ packages: purls: [] size: 54927 timestamp: 1720974860185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb - md5: f7f0d6cc2dc986d42ac2689ec88192be - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - purls: [] - size: 206884 - timestamp: 1744127994291 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - sha256: b37f5dacfe1c59e0a207c1d65489b760dff9ddb97b8df7126ceda01692ba6e97 - md5: eafe5d9f1a8c514afe41e6e833f66dfd - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: [] - size: 184824 - timestamp: 1744128064511 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - sha256: b4bb55d0806e41ffef94d0e3f3c97531f322b3cb0ca1f7cdf8e47f62538b7a2b - md5: f8cd1beb98240c7edb1a95883360ccfa - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 179696 - timestamp: 1744128058734 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 - md5: 23c7fd5062b48d8294fc7f61bf157fba - depends: - - __win - license: ISC - purls: [] - size: 152945 - timestamp: 1745653639656 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac - md5: 95db94f75ba080a22eb623590993167b - depends: - - __unix - license: ISC - purls: [] - size: 152283 - timestamp: 1745653616541 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 - md5: b01649832f7bc7ff94f8df8bd2ee6457 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-h4c7d964_0.conda + sha256: a7fe9bce8a0f9f985d44940ec13a297df571ee70fb2264b339c62fa190b2c437 + md5: 40334594f5916bc4c0a0313d64bfe046 depends: - __win license: ISC purls: [] - size: 151351 - timestamp: 1749990170707 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 - md5: 72525f07d72806e3b639ad4504c30ce5 + size: 155882 + timestamp: 1752482396143 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda + sha256: 29defbd83c7829788358678ec996adeee252fa4d4274b7cd386c1ed73d2b201e + md5: d16c90324aef024877d8713c0b7fea5b depends: - __unix license: ISC purls: [] - size: 151069 - timestamp: 1749990087500 + size: 155658 + timestamp: 1752482350666 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -8520,26 +8296,16 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c - md5: c33eeaaa33f45031be34cda513df39b6 - depends: - - python >=3.9 - license: ISC - purls: - - pkg:pypi/certifi?source=hash-mapping - size: 157200 - timestamp: 1746569627830 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - sha256: d71c85835813072cd6d7ce4b24be34215cd90c104785b15a5d58f4cd0cb50778 - md5: 781d068df0cc2407d4db0ecfbb29225b +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda + sha256: f68ee5038f37620a4fb4cdd8329c9897dce80331db8c94c3ab264a26a8c70a08 + md5: 4c07624f3faefd0bb6659fb7396cfa76 depends: - python >=3.9 license: ISC purls: - - pkg:pypi/certifi?source=hash-mapping - size: 155377 - timestamp: 1749972291158 + - pkg:pypi/certifi?source=compressed-mapping + size: 159755 + timestamp: 1752493370797 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda sha256: bc47aa39c8254e9e487b8bcd74cfa3b4a3de3648869eb1a0b89905986b668e35 md5: 55553ecd5328336368db611f350b7039 @@ -8782,9 +8548,9 @@ packages: - pkg:pypi/comm?source=hash-mapping size: 12103 timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py311h2dc5d0c_0.conda - sha256: dabff490f3a4a4beb70c16624766286aa47dfb7dec0275966498a0854951e754 - md5: e761745f85b5fc909aab137ff59bc9cb +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py311h2dc5d0c_0.conda + sha256: bd58cbea4606052fc7f1236d4ae8febc95f877dd34e588f6060147e4f43aafde + md5: 4a4d2bb7e4d14efb7320206a57467029 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8795,38 +8561,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381652 - timestamp: 1747842278784 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.1-py312h178313f_0.conda - sha256: 783fc98faff93d840ee278e8f9f9288cb10baaa820f4ea84d085caaeef5c581b - md5: d0cfba188d8eba0c3676af3d88e3b832 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 372130 - timestamp: 1747842174442 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.1-py313h8060acc_0.conda - sha256: 876bb057fb7c40322471d0e65c8d149512991b89b7c1dfac92b59a9fe2a318f9 - md5: 5e959c405af6d6b603810fdf12b6f191 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 381728 - timestamp: 1749833700835 + size: 382776 + timestamp: 1751548744567 - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda sha256: fff058f8a145faed110680339ebbadfeb57b8ecb7164a415856d27f3c2fb6b1f md5: c6fbd05ceaeed83ef044de66e3f26fef @@ -8839,7 +8575,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping + - pkg:pypi/coverage?source=hash-mapping size: 372127 timestamp: 1751548868805 - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda @@ -8857,9 +8593,9 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 380574 timestamp: 1751548788766 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py311ha3cf9ac_0.conda - sha256: ceeb9931a48ba76b587ec728e1c87c84591d2dc3fd84d8b33070d9331770f95b - md5: a232a2c290d493aec5c321d42e8bb5f3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py311ha3cf9ac_0.conda + sha256: 45f32b5fe11eb1fb9c5bdb694feb2be90644e58d1669a52eda614519569937f3 + md5: e2e5553fc0a6c36998dbb7a996aeb631 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -8869,36 +8605,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381834 - timestamp: 1747842238160 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.1-py312h3520af0_0.conda - sha256: 01055509fdbf957da8101111f55d4ba4093d80ba41fa9db265918f83d74781c6 - md5: e2e4abc59d34ee3a3496e43fde06fe4a - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 370818 - timestamp: 1747842400404 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.1-py313h717bdf5_0.conda - sha256: 7bc7f5e6017f34c3acefba80c0cc0179de35539e1858a70d1aa54b92f0f0af23 - md5: dc9348f206ef595c238e426ba1a61503 - depends: - - __osx >=10.13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 379153 - timestamp: 1749833527306 + size: 381639 + timestamp: 1751548835767 - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda sha256: 5701b6a96a82d368f4fb7dbdb81a23c12deeb3d9c7c9af4287661de427b95776 md5: cff69f4e178c2a18f45487bb8756570b @@ -8927,9 +8635,9 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 379708 timestamp: 1751548928911 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py311h4921393_0.conda - sha256: 33f71ac48479ad4d33517ef4384dddad1804d986cc55b99c78539b3185f5d3b9 - md5: 3311b8464e609c253df8ed73b030a91b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py311h4921393_0.conda + sha256: e7f74c34850fedafda5f4aa7c3cdec6c8457271abea3ee5290b2fb1bd554dde5 + md5: 4d5294045f036c8d9f4f480a22783fd6 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -8939,39 +8647,9 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 381607 - timestamp: 1747842318714 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.1-py312h998013c_0.conda - sha256: 965ccddf2fad18d09e45406317e0ffc9edff585ecec573c514b88a0e42aae793 - md5: 969b54224937a2b948a395ab6c972339 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 372341 - timestamp: 1747842541199 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.1-py313ha9b7d5b_0.conda - sha256: 1c7ce80d0dd114744b00c962f189b3e437e34f6a5699ee8316d84fd4d8c9f2e6 - md5: bf5f193d77ff3d2372c6e678e4711e59 - depends: - - __osx >=11.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - - tomli - license: Apache-2.0 - license_family: APACHE - purls: - pkg:pypi/coverage?source=compressed-mapping - size: 380492 - timestamp: 1749833499891 + size: 383439 + timestamp: 1751548852393 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda sha256: 12ddfe26cfcb59297de81e8a24bfd9dacb98824b17ebc1fd7ad06f07993e6d27 md5: 1c0c01571d606a8c2d9298712876c537 @@ -8984,7 +8662,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping + - pkg:pypi/coverage?source=hash-mapping size: 373786 timestamp: 1751548939736 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda @@ -9002,54 +8680,22 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 380474 timestamp: 1751549023528 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py311h5082efb_0.conda - sha256: 91a4eceef057cfc5c467e6acf2f7b2f21fad35e46d79d0b88f124e6943c77ab0 - md5: 11cfa5d9997512db18ba2eb46edcce37 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py311h3f79411_0.conda + sha256: 5e59efb460966daa47c4bfc8b2b3db99bd26edef97c598c4cf5140f77dfe33f7 + md5: 9aa6ae84c02129fb9ba65336eed930bf depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - tomli - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 407188 - timestamp: 1747842536793 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.1-py312h31fea79_0.conda - sha256: 008dcd8dc25f8f8cd4f3c92f32638026acc8be3cef8f1b1f030a9bd99b60d451 - md5: f8cb7f4c4409b75b52935f914eeb091f - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tomli - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/coverage?source=hash-mapping - size: 398869 - timestamp: 1747842451626 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.1-py313hb4c8b1a_0.conda - sha256: d58320b827b6428d090d966f40802a3793d10b0e6b79f5e116c98421a4365735 - md5: 1c4e3215bb5f74caf6653bb802d3fc02 - depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - tomli - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 405028 - timestamp: 1749833588845 + - pkg:pypi/coverage?source=compressed-mapping + size: 408935 + timestamp: 1751548907734 - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda sha256: e1eca9b5dccb42fe3b6030cc6ec2a54a8ba62416dad77981a4d9e6db04d80db4 md5: a210adf138c93e937a61548442be65b1 @@ -9082,28 +8728,17 @@ packages: - pkg:pypi/coverage?source=hash-mapping size: 405164 timestamp: 1751549097131 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda noarch: generic - sha256: 91e8da449682e37e326a560aa3575ee0f32ab697119e4cf4a76fd68af61fc1a0 - md5: 451718359f1658c6819d8665f82585ab + sha256: ab70477f5cfb60961ba27d84a4c933a24705ac4b1736d8f3da14858e95bbfa7a + md5: 4666fd336f6d48d866a58490684704cd depends: - python >=3.11,<3.12.0a0 - python_abi * *_cp311 license: Python-2.0 purls: [] - size: 47661 - timestamp: 1744323121098 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.10-py312hd8ed1ab_0.conda - noarch: generic - sha256: acb47715abf1cd8177a5c20f42a34555b5d9cebb68ff39a58706e84effe218e2 - md5: 7584a4b1e802afa25c89c0dcc72d0826 - depends: - - python >=3.12,<3.13.0a0 - - python_abi * *_cp312 - license: Python-2.0 - purls: [] - size: 45861 - timestamp: 1744323195619 + size: 47495 + timestamp: 1749048148121 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda noarch: generic sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a @@ -9126,352 +8761,64 @@ packages: purls: [] size: 47560 timestamp: 1750062514868 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.9.27-ha770c72_0.conda - sha256: 2ee3b9564ca326226e5cda41d11b251482df8e7c757e333d28ec75213c75d126 - md5: 87ff6381e33b76e5b9b179a2cdd005ec - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 1150650 - timestamp: 1746189825236 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.9.86-ha770c72_1.conda - sha256: 4eb613ef188815d1dadab3d9db855a7590e2894132290840e743a41b30ce302d - md5: 412444e37a455216a2afb9fc7d6a4f16 - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 94416 - timestamp: 1749226536213 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.9.86-ha770c72_1.conda - sha256: 4475409f91176c0a77ead29e961617366ef1fbe932c7315abdd5699ad134f0be - md5: ba98092d1090d5f5ddd2d7f827e7d3a5 - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 28928 - timestamp: 1749226545023 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.9.79-h5888daf_0.conda - sha256: 57d1294ecfaf9dc8cdb5fc4be3e63ebc7614538bddb5de53cfd9b1b7de43aed5 - md5: cb15315d19b58bd9cd424084e58ad081 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + name: dags + version: 0.3.1.dev11+g9b996e0 + requires_dist: + - flatten-dict + - networkx + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + sha256: 3b988146a50e165f0fa4e839545c679af88e4782ec284cc7b6d07dd226d6a068 + md5: 679616eb5ad4e521c83da4650860aba7 depends: + - libstdcxx >=13 + - libgcc >=13 - __glibc >=2.17,<3.0.a0 - - cuda-cudart_linux-64 12.9.79 h3f2d84a_0 - - cuda-version >=12.9,<12.10.0a0 - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement + - libexpat >=2.7.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - libglib >=2.84.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL purls: [] - size: 23242 - timestamp: 1749218416505 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.9.79-h5888daf_0.conda - sha256: 04d8235cb3cb3510c0492c3515a9d1a6053b50ef39be42b60cafb05044b5f4c6 - md5: ba38a7c3b4c14625de45784b773f0c71 + size: 437860 + timestamp: 1747855126005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda + sha256: 2f6d43724f60828fa226a71f519248ecd1dd456f0d4fc5f887936c763ea726e4 + md5: 1c229452e28e2c4607457c7b6c839bc7 depends: - __glibc >=2.17,<3.0.a0 - - cuda-cudart 12.9.79 h5888daf_0 - - cuda-cudart-dev_linux-64 12.9.79 h3f2d84a_0 - - cuda-cudart-static 12.9.79 h5888daf_0 - - cuda-version >=12.9,<12.10.0a0 - libgcc >=13 - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 23687 - timestamp: 1749218464010 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.9.79-h3f2d84a_0.conda - sha256: ffe86ed0144315b276f18020d836c8ef05bf971054cf7c3eb167af92494080d5 - md5: 86e40eb67d83f1a58bdafdd44e5a77c6 - depends: - - cuda-cccl_linux-64 - - cuda-cudart-static_linux-64 - - cuda-cudart_linux-64 - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 389140 - timestamp: 1749218427266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.9.79-h5888daf_0.conda - sha256: 6261e1d9af80e1ec308e3e5e2ff825d189ef922d24093beaf6efca12e67ce060 - md5: d3c4ac48f4967f09dd910d9c15d40c81 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2583752 + timestamp: 1744321388692 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + sha256: 8f0b338687f79ea87324f067bedddd2168f07b8eec234f0fe63b522344c6a919 + md5: 089cf3a3becf0e2f403feaf16e921678 depends: - __glibc >=2.17,<3.0.a0 - - cuda-cudart-static_linux-64 12.9.79 h3f2d84a_0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 23283 - timestamp: 1749218442382 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.9.79-h3f2d84a_0.conda - sha256: d435f8a19b59b52ce460ee3a6bfd877288a0d1d645119a6ba60f1c3627dc5032 - md5: b87bf315d81218dd63eb46cc1eaef775 - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 1148889 - timestamp: 1749218381225 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.9.79-h3f2d84a_0.conda - sha256: 6cde0ace2b995b49d0db2eefb7bc30bf00ffc06bb98ef7113632dec8f8907475 - md5: 64508631775fbbf9eca83c84b1df0cae - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 197249 - timestamp: 1749218394213 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.9.79-h9ab20c4_0.conda - sha256: 55922005d1b31ba090455ab39d2e5a9b771fe503713d4b7699752a76aedccb2b - md5: 229b3cc1f6b6b633923e1c9856ee0d80 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - libgcc >=13 - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 1842820 - timestamp: 1749218443367 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.9.79-h9ab20c4_0.conda - sha256: 13b46369781c4202ba50fc26788e0304720de87272304fb7fdb46ad6818f96c0 - md5: 9ab84df0819a61a0f9c09c8adce8bf5a + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + size: 2630748 + timestamp: 1744321406939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + sha256: bc2f3c177dcfe90f66df4c15803d6c44fd1f2e163683a70f816851c91a37631b + md5: 8c162409281c1e91b1e659c3a2115d28 depends: - - __glibc >=2.28,<3.0.a0 - - cuda-cupti 12.9.79 h9ab20c4_0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - cuda-cupti-static >=12.9.79 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 4604126 - timestamp: 1749218509769 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.9.79-h3f2d84a_0.conda - sha256: a15574d966e73135a79d5e6570c87e13accdb44bd432449b5deea71644ad442c - md5: d411828daa36ac84eab210ba3bbe5a64 - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 37714 - timestamp: 1749218405324 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.9.86-hcdd1206_1.conda - sha256: 95f85c1a2312b3e8d6798351dd1d5d422cef68e02fc96992b8183857af76611e - md5: 25bdced18e0be0fd5a34052b50016cb3 - depends: - - cuda-nvcc_linux-64 12.9.86.* - - gcc_linux-64 - - gxx_linux-64 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 24843 - timestamp: 1749237630943 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.9.86-he91c749_1.conda - sha256: f8d9cacab5614932d2de4151a51ff6342adf044e34393a8d2591b9fe362331ff - md5: ac5a9c950dc4304d1eaa11cd638f8f1b - depends: - - cuda-crt-dev_linux-64 12.9.86 ha770c72_1 - - cuda-nvvm-dev_linux-64 12.9.86 ha770c72_1 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=6 - constrains: - - gcc_impl_linux-64 >=6,<15.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 14432867 - timestamp: 1749226726672 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.9.86-h85509e4_1.conda - sha256: 4344c5e67efcabb0ab31532f91de8890b1920aa0968b01ab0f9821cb1c073901 - md5: b5feb908d5a881c875114e88f077acbf - depends: - - cuda-cudart >=12.9.79,<13.0a0 - - cuda-cudart-dev - - cuda-nvcc-dev_linux-64 12.9.86 he91c749_1 - - cuda-nvcc-tools 12.9.86 he02047a_1 - - cuda-nvvm-impl 12.9.86 he02047a_1 - - cuda-version >=12.9,<12.10.0a0 - constrains: - - gcc_impl_linux-64 >=6,<15.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 27232 - timestamp: 1749226774033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.9.86-he02047a_1.conda - sha256: 7e5ab4ae67254c6d814007708a8183355684c81a917b383a7f042c25149737c3 - md5: a076f1ec812ce8fceacd538d6e672f37 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-crt-tools 12.9.86 ha770c72_1 - - cuda-nvvm-tools 12.9.86 he02047a_1 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=12 - - libstdcxx >=12 - constrains: - - gcc_impl_linux-64 >=6,<15.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 27490340 - timestamp: 1749226666055 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.9.86-he0b4e1d_1.conda - sha256: 9f095c092bbbb8c239ab1c0964ef0e13145dba75489f8533fefb18c4409f1259 - md5: a8576d02a07751eed7704ae871e76229 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-cudart-dev_linux-64 12.9.* - - cuda-driver-dev_linux-64 12.9.* - - cuda-nvcc-dev_linux-64 12.9.86.* - - cuda-nvcc-impl 12.9.86.* - - cuda-nvcc-tools 12.9.86.* - - sysroot_linux-64 >=2.17,<3.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 26786 - timestamp: 1749237630270 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.9.86-h5888daf_0.conda - sha256: 4d339c411c23d40ff3a8671284e476a31b31273b1a4d29c680c01940a559bd95 - md5: 9c52e4389e54d4f5800b23512e479479 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 67183992 - timestamp: 1749221543691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.9.79-h5888daf_0.conda - sha256: 8a09c380831215cd3c996bac59c5e3bd774648a2a19e4edfc99b283b65605844 - md5: 50e6a4a31fb588f158ab850b1d545747 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 29292 - timestamp: 1749221478549 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.9.86-ha770c72_1.conda - sha256: 11257afbadd3f74be233918abdd9392b8c01d75677e3dbba249d6a8531e3685b - md5: 496f29d1fc3db945e826d9702a67b1a2 - depends: - - cuda-version >=12.9,<12.10.0a0 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 26899 - timestamp: 1749226552449 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.9.86-he02047a_1.conda - sha256: 323b51bd2fd6cf7d150cfe47220324bf804d938fbeb88667e70645075188f569 - md5: 0d27b5ea4684c8181db41bac711a3dcd - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=12 - - libstdcxx >=12 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 21406180 - timestamp: 1749226570771 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.9.86-he02047a_1.conda - sha256: 0958aee5a72f4be02c8f988539261cf549c9fcd6b61c6ce895bc6a13fe61f5d6 - md5: f716064b73c93d9aab74b5cc7f57985d - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=12 - - libstdcxx >=12 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 24248725 - timestamp: 1749226615764 -- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.9-h4f385c5_3.conda - sha256: 5f5f428031933f117ff9f7fcc650e6ea1b3fef5936cf84aa24af79167513b656 - md5: b6d5d7f1c171cbd228ea06b556cfa859 - constrains: - - cudatoolkit 12.9|12.9.* - - __cuda >=12 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 21578 - timestamp: 1746134436166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.10.1.4-h7646684_0.conda - sha256: 746cfa7c0e9b9eba3429465cf9a70786a63da2f4b2c322c33d74b5ff2db6d8ae - md5: 5aa5b04b995ebe10fe44de6fe93b1850 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12,<13.0a0 - - libcudnn-dev 9.10.1.4 hcd2ec93_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - cudnn-jit <0a - license: LicenseRef-cuDNN-Software-License-Agreement - purls: [] - size: 19516 - timestamp: 1747774432049 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 - name: dags - version: 0.3.1.dev11+g9b996e0 - requires_dist: - - flatten-dict - - networkx - requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - sha256: 3b988146a50e165f0fa4e839545c679af88e4782ec284cc7b6d07dd226d6a068 - md5: 679616eb5ad4e521c83da4650860aba7 - depends: - - libstdcxx >=13 - - libgcc >=13 - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libexpat >=2.7.0,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - libglib >=2.84.2,<3.0a0 - license: GPL-2.0-or-later - license_family: GPL - purls: [] - size: 437860 - timestamp: 1747855126005 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - sha256: 2f6d43724f60828fa226a71f519248ecd1dd456f0d4fc5f887936c763ea726e4 - md5: 1c229452e28e2c4607457c7b6c839bc7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2583752 - timestamp: 1744321388692 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - sha256: 8f0b338687f79ea87324f067bedddd2168f07b8eec234f0fe63b522344c6a919 - md5: 089cf3a3becf0e2f403feaf16e921678 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2630748 - timestamp: 1744321406939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - sha256: bc2f3c177dcfe90f66df4c15803d6c44fd1f2e163683a70f816851c91a37631b - md5: 8c162409281c1e91b1e659c3a2115d28 - depends: - - __glibc >=2.17,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - python >=3.13,<3.14.0a0 @@ -9943,34 +9290,6 @@ packages: purls: [] size: 64567 timestamp: 1604417122064 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-hd9e9e21_3.conda - sha256: 0047d4da9f48b731a089d70b60a21031b809791089170f163d6660512676ebd9 - md5: 12a6a74cab2878a284f9af96f3e1a1e8 - depends: - - binutils_impl_linux-64 >=2.40 - - libgcc >=14.3.0 - - libgcc-devel_linux-64 14.3.0 h85bb3a7_103 - - libgomp >=14.3.0 - - libsanitizer 14.3.0 hd08acf3_3 - - libstdcxx >=14.3.0 - - sysroot_linux-64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 71226373 - timestamp: 1750808482839 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h1382650_11.conda - sha256: 0d7fe52c578ef99f03defe8cab5308124b388c694e88f5494716d11532a6d12a - md5: 2e650506e6371ac4289c9bf7fc207f3b - depends: - - binutils_linux-64 - - gcc_impl_linux-64 14.3.0.* - - sysroot_linux-64 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 32512 - timestamp: 1748905876846 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb md5: 201db6c2d9a3c5e46573ac4cb2e92f4f @@ -10030,22 +9349,10 @@ packages: purls: [] size: 26238 timestamp: 1750744808182 -- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c - md5: 714d0882dc5e692ca4683d8e520f73c6 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-3.0-only - license_family: GPL - purls: [] - size: 21903 - timestamp: 1694400856979 - pypi: ./ name: gettsim - version: 0.7.1.dev473+gda336ccf.d20250708 - sha256: 200e42aa1bfcd4df812564cc1be2976981ea5e6a6432212a240d307b4c9aa58e + version: 0.7.1.dev172+g829b61529.d20250715 + sha256: a834483321e89ee6d620b43ab0d5690487b824ee9c1ec70f0a07cfc959d228c7 requires_dist: - ipywidgets - networkx>=3.5,<4 @@ -10105,17 +9412,6 @@ packages: - pkg:pypi/gprof2dot?source=hash-mapping size: 39376 timestamp: 1734700339768 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add - md5: f87c7b7c2cb45f323ffbce941c78ab7c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 96855 - timestamp: 1711634169756 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda sha256: cac69f3ff7756912bbed4c28363de94f545856b35033c0b86193366b95f5317d md5: 951ff8d9e5536896408e89d63230b8d5 @@ -10128,16 +9424,6 @@ packages: purls: [] size: 98419 timestamp: 1750079957535 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a - md5: fc7124f86e1d359fc5d878accd9e814c - depends: - - libcxx >=16 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 84384 - timestamp: 1711634311095 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda sha256: 13d802efe1fcadc171a1e0f87b99accef290cd0190af5d25cb46acd5f111104a md5: 4b0af0e3ba3b3bb8e28d009a8ed1ab35 @@ -10149,16 +9435,6 @@ packages: purls: [] size: 85046 timestamp: 1750080155200 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 - md5: 339991336eeddb70076d8ca826dac625 - depends: - - libcxx >=16 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 79774 - timestamp: 1711634444608 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda sha256: e1c431b66b0a632e8fcc2b886cccde4eb5ec5eb8a3d84e89b7639d603c174646 md5: 64d15e1dfe86fa13cf0d519d1074dcd9 @@ -10170,18 +9446,6 @@ packages: purls: [] size: 81566 timestamp: 1750080158744 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f - md5: 3194499ee7d1a67404a87d0eefdd92c6 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.0-or-later - license_family: LGPL - purls: [] - size: 95406 - timestamp: 1711634622644 - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-he0c23c2_0.conda sha256: bcbcece7719f2a14ede6bfead8f5fdbb65ed102d47769c817b375e4e9d43be39 md5: 692bc31c646f7e221af07ccc924e1ae4 @@ -10424,32 +9688,6 @@ packages: purls: [] size: 188688 timestamp: 1686545648050 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-he663afc_3.conda - sha256: 2d6923f30622fcba78cb85687d9cd54df77d4d25e4dba8687bb712eb8bfd4d9b - md5: bb5fcb5c14e9e4b0304a63ced52e41bb - depends: - - gcc_impl_linux-64 14.3.0 hd9e9e21_3 - - libstdcxx-devel_linux-64 14.3.0 h85bb3a7_103 - - sysroot_linux-64 - - tzdata - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 14731173 - timestamp: 1750808663844 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-ha7acb78_11.conda - sha256: 6c06752e4773dfd61a1928e9f7e9d21c3b97068daf27b84696c33057a091fe27 - md5: d4af016b3511135302a19f2a58544fcd - depends: - - binutils_linux-64 - - gcc_linux-64 14.3.0 h1382650_11 - - gxx_impl_linux-64 14.3.0.* - - sysroot_linux-64 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 30802 - timestamp: 1748905895571 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda sha256: f64b68148c478c3bfc8f8d519541de7d2616bf59d44485a5271041d40c061887 md5: 4b69232755285701bc86a5afe4d9933a @@ -10679,18 +9917,6 @@ packages: purls: [] size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - sha256: 02f47df6c6982b796aecb086b434627207e87c0a90a50226f11f2cc99c089770 - md5: 8d5b9b702810fb3054d52ba146023bc3 - depends: - - python >=3.9 - - ukkonen - license: MIT - license_family: MIT - purls: - - pkg:pypi/identify?source=hash-mapping - size: 79057 - timestamp: 1745098917031 - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55 md5: 84463b10c1eb198541cd54125c7efe90 @@ -10733,8 +9959,9 @@ packages: - zipp >=3.20 - python license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=compressed-mapping + - pkg:pypi/importlib-metadata?source=hash-mapping size: 34641 timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -10843,106 +10070,6 @@ packages: - pkg:pypi/ipykernel?source=hash-mapping size: 119568 timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhca29cf9_0.conda - sha256: 83e4cfdcf09c1273ec31548aacf7f81076dc4245548e78ac3b47d1da361da03b - md5: a7b419c1d0ae931d86cd9cab158f698e - depends: - - __win - - colorama - - decorator - - exceptiongroup - - ipython_pygments_lexers - - jedi >=0.16 - - matplotlib-inline - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.11 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/ipython?source=hash-mapping - size: 619872 - timestamp: 1745672185321 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.2.0-pyhfb0248b_0.conda - sha256: 539d003c379c22a71df1eb76cd4167a3e2d59f45e6dbc3416c45619f4c1381fb - md5: 7330ee1244209cfebfb23d828dd9aae5 - depends: - - __unix - - pexpect >4.3 - - decorator - - exceptiongroup - - ipython_pygments_lexers - - jedi >=0.16 - - matplotlib-inline - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.11 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/ipython?source=hash-mapping - size: 620691 - timestamp: 1745672166398 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyh6be1c34_0.conda - sha256: b6189de4e9f3d007a11e6e1df023c2bb73cf1864f63ca154c5ff8f0cdf601a50 - md5: 73e4ba4c8247f744be670f4da4f132e2 - depends: - - __win - - colorama - - decorator - - exceptiongroup - - ipython_pygments_lexers - - jedi >=0.16 - - matplotlib-inline - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.11 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/ipython?source=hash-mapping - size: 621095 - timestamp: 1748711232331 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.3.0-pyhfa0c392_0.conda - sha256: ee5d526cba0c0a5981cbcbcadc37a76d257627a904ed2cd2db45821735c93ebd - md5: 270dbfb30fe759b39ce0c9fdbcd7be10 - depends: - - __unix - - pexpect >4.3 - - decorator - - exceptiongroup - - ipython_pygments_lexers - - jedi >=0.16 - - matplotlib-inline - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.11 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - - python - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/ipython?source=hash-mapping - size: 621859 - timestamp: 1748713870748 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyh6be1c34_0.conda sha256: 8fb441c9f4b50e38b6059e8984e49208a4e2a4ec4e41b543ebaa894f8261d4c9 md5: b551e25e4fb27ccb51aff2c5dcf178f4 @@ -11059,154 +10186,65 @@ packages: - kubernetes ; extra == 'k8s' - xprof ; extra == 'xprof' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/noarch/jax-0.6.0-pyhd8ed1ab_0.conda - sha256: 573a5582dfba84a8f67c351b6218cb9579cb8d0f6d4b4186a806852111d4a6f1 - md5: bd364feb12c744cf5c60e1e5b586171b - depends: - - importlib-metadata >=4.6 - - jaxlib >=0.6.0,<=0.6.0 - - ml_dtypes >=0.5.0 - - numpy >=1.25 - - opt_einsum - - python >=3.10 - - scipy >=1.11.1 - constrains: - - cudnn >=9.8,<10.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jax?source=hash-mapping - size: 1538293 - timestamp: 1748688029463 -- pypi: https://files.pythonhosted.org/packages/de/3a/06849113c844b86d20174df54735c84202ccf82cbd36d805f478c834418b/jaxlib-0.6.2-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl + name: jax-cuda12-pjrt + version: 0.6.2 + sha256: 8cd9ead7948ea2c778a508fef5d1159e8b7abf4fccc7037c3fe1dbfcd95012dc +- pypi: https://files.pythonhosted.org/packages/2b/96/53928ad62ecddbf76f4c413025fdeab5a90adf7fbd970d800162399e504a/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + name: jax-cuda12-plugin + version: 0.6.2 + sha256: db4c6103c912d8cd1adf94c34d313bb4760ca7f01c897ca7cd62e65f27994199 + requires_dist: + - jax-cuda12-pjrt==0.6.2 + - nvidia-cublas-cu12>=12.1.3.1 ; extra == 'with-cuda' + - nvidia-cuda-cupti-cu12>=12.1.105 ; extra == 'with-cuda' + - nvidia-cuda-nvcc-cu12>=12.6.85 ; extra == 'with-cuda' + - nvidia-cuda-runtime-cu12>=12.1.105 ; extra == 'with-cuda' + - nvidia-cudnn-cu12>=9.8,<10.0 ; extra == 'with-cuda' + - nvidia-cufft-cu12>=11.0.2.54 ; extra == 'with-cuda' + - nvidia-cusolver-cu12>=11.4.5.107 ; extra == 'with-cuda' + - nvidia-cusparse-cu12>=12.1.0.106 ; extra == 'with-cuda' + - nvidia-nccl-cu12>=2.18.1 ; extra == 'with-cuda' + - nvidia-nvjitlink-cu12>=12.1.105 ; extra == 'with-cuda' + - nvidia-cuda-nvrtc-cu12>=12.1.55 ; extra == 'with-cuda' + - nvidia-nvshmem-cu12>=3.2.5 ; extra == 'with-cuda' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl + name: jax-metal + version: 0.1.1 + sha256: f1dbfecb298cdd3ba6da3ad6dc9a2adb63d71741f8b8ece28c296b32d608b6c8 + requires_dist: + - wheel~=0.35 + - six>=1.15.0 + - jaxlib>=0.4.34 + - jax>=0.4.34 +- pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl name: jaxlib version: 0.6.2 - sha256: 921dbd4db214eba19a29ba9f2450d880e08b2b2c7b968f28cc89da3e62366af4 + sha256: b977604cd36c74b174d25ed685017379468138eb747d865f75e466cb273c801d + requires_dist: + - scipy>=1.12 + - numpy>=1.26 + - ml-dtypes>=0.5.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + name: jaxlib + version: 0.6.2 + sha256: f94163f14c8fd3ba93ae14b631abacf14cb031bba0b59138869984b4d10375f8 + requires_dist: + - scipy>=1.12 + - numpy>=1.26 + - ml-dtypes>=0.5.0 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl + name: jaxlib + version: 0.6.2 + sha256: bff67b188133ce1f0111c7b163ac321fd646b59ed221ea489063e2e0f85cb967 requires_dist: - scipy>=1.12 - numpy>=1.26 - ml-dtypes>=0.5.0 requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cpu_py312h860c521_0.conda - sha256: 8941335debcba5835d378717cb5f691fe4e8749e179653c6fae7a39ad593f33d - md5: df8ebae58f002df33e6bb75394656a34 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libgcc >=13 - - libgrpc >=1.71.0,<1.72.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 - - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - scipy >=1.9 - constrains: - - jax >=0.6.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jaxlib?source=hash-mapping - size: 60656001 - timestamp: 1748656526943 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.6.0-cuda126py312hbc630d6_200.conda - sha256: d67fd06908390d26f5f507702d2260b0bd75cf27596bf6311e06c7020f710078 - md5: 3de8a21a60c5cc5775f5feb1ddcda18b - depends: - - __cuda - - __glibc >=2.17,<3.0.a0 - - cuda-cudart >=12.6.77,<13.0a0 - - cuda-cupti >=12.6.80,<13.0a0 - - cuda-cupti-dev - - cuda-nvcc-tools - - cuda-nvtx >=12.6.77,<13.0a0 - - cuda-version >=12.6,<13 - - cudnn >=9.10.1.4,<10.0a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcublas >=12.6.4.1,<13.0a0 - - libcublas-dev - - libcufft >=11.3.0.4,<12.0a0 - - libcufft-dev - - libcurand >=10.3.7.77,<11.0a0 - - libcurand-dev - - libcusolver >=11.7.1.2,<12.0a0 - - libcusolver-dev - - libcusparse >=12.5.4.2,<13.0a0 - - libcusparse-dev - - libgcc >=13 - - libgrpc >=1.71.0,<1.72.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - ml_dtypes >=0.2.0 - - nccl >=2.26.6.1,<3.0a0 - - numpy >=1.19,<3 - - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - scipy >=1.9 - constrains: - - jax >=0.6.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jax-cuda12-pjrt?source=hash-mapping - - pkg:pypi/jax-cuda12-plugin?source=hash-mapping - - pkg:pypi/jaxlib?source=hash-mapping - size: 147507034 - timestamp: 1748663899155 -- conda: https://conda.anaconda.org/conda-forge/osx-64/jaxlib-0.6.0-cpu_py312ha70eef1_0.conda - sha256: 00bedbc1f41d96de00757fd79cda6c691e708c2cedce8aaabebda2006d728ef5 - md5: d2d260a9fdc8afbdffa9b3b9391dc70a - depends: - - __osx >=10.15 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libgrpc >=1.71.0,<1.72.0a0 - - libzlib >=1.3.1,<2.0a0 - - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 - - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - scipy >=1.9 - constrains: - - jax >=0.6.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jaxlib?source=hash-mapping - size: 62923901 - timestamp: 1748651932948 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jaxlib-0.6.0-cpu_py312he253ca6_0.conda - sha256: b7d9ba3dd95f998e9c20c272293d06f570c7d6e101940acc4e62c1283d09a312 - md5: 694baa9a80a8229587db65e4063de530 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libgrpc >=1.71.0,<1.72.0a0 - - libzlib >=1.3.1,<2.0a0 - - ml_dtypes >=0.2.0 - - numpy >=1.19,<3 - - openssl >=3.5.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - scipy >=1.9 - constrains: - - jax >=0.6.0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/jaxlib?source=hash-mapping - size: 51803228 - timestamp: 1748652224641 - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -11241,7 +10279,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=compressed-mapping + - pkg:pypi/jinja2?source=hash-mapping size: 112714 timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda @@ -11402,23 +10440,6 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42805 timestamp: 1725303293802 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 - md5: a3cead9264b331b32fe8f0aabc967522 - depends: - - attrs >=22.2.0 - - importlib_resources >=1.4.0 - - jsonschema-specifications >=2023.03.6 - - pkgutil-resolve-name >=1.3.10 - - python >=3.9 - - referencing >=0.28.4 - - rpds-py >=0.7.1 - license: MIT - license_family: MIT - purls: - - pkg:pypi/jsonschema?source=hash-mapping - size: 74256 - timestamp: 1733472818764 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda sha256: 812134fabb49493a50f7f443dc0ffafd0f63766f403a0bd8e71119763e57456a md5: 59220749abcd119d645e6879983497a1 @@ -11449,24 +10470,6 @@ packages: - pkg:pypi/jsonschema-specifications?source=hash-mapping size: 19168 timestamp: 1745424244298 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d - md5: a5b1a8065857cc4bd8b7a38d063bb728 - depends: - - fqdn - - idna - - isoduration - - jsonpointer >1.13 - - jsonschema >=4.23.0,<4.23.1.0a0 - - rfc3339-validator - - rfc3986-validator >0.1.0 - - uri-template - - webcolors >=24.6.0 - license: MIT - license_family: MIT - purls: [] - size: 7135 - timestamp: 1733472820035 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda sha256: 970a1efffe29474d6bb3e4d63bc04105c5611d1c7e2cd7e2d43d1ba468f33c20 md5: b4eaebf6fac318db166238796d2a9702 @@ -11485,19 +10488,6 @@ packages: purls: [] size: 7717 timestamp: 1748294391013 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 - md5: 0b4c3908e5a38ea22ebb98ee5888c768 - depends: - - importlib-metadata >=4.8.3 - - jupyter_server >=1.1.2 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jupyter-lsp?source=hash-mapping - size: 55221 - timestamp: 1733493006611 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda sha256: f2ca86b121bcfeaf0241a927824459ba8712e64806b98dd262eb2b1a7c4e82a6 md5: 7ed6505c703f3c4e1a58864bf84505e2 @@ -11529,36 +10519,6 @@ packages: - pkg:pypi/jupyter-client?source=hash-mapping size: 106342 timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jupyter-core?source=hash-mapping - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh5737063_1.conda - sha256: 7c903b2d62414c3e8da1f78db21f45b98de387aae195f8ca959794113ba4b3fd - md5: 46d87d1c0ea5da0aae36f77fa406e20d - depends: - - __win - - cpython - - platformdirs >=2.5 - - python >=3.8 - - pywin32 >=300 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jupyter-core?source=hash-mapping - size: 58269 - timestamp: 1727164026641 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 md5: b7d89d860ebcda28a5303526cdee68ab @@ -11651,32 +10611,6 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda - sha256: 8bc522991031ce528c650a7287159dd866b977593bdba33daa3ec37c40d99443 - md5: 1f5f3b0fcff308d8fbaa73c43af08e2f - depends: - - async-lru >=1.0.0 - - httpx >=0.25.0 - - importlib-metadata >=4.8.3 - - ipykernel >=6.5.0 - - jinja2 >=3.0.3 - - jupyter-lsp >=2.0.0 - - jupyter_core - - jupyter_server >=2.4.0,<3 - - jupyterlab_server >=2.27.1,<3 - - notebook-shim >=0.2 - - packaging - - python >=3.9 - - setuptools >=41.1.0 - - tomli >=1.2.2 - - tornado >=6.2.0 - - traitlets - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/jupyterlab?source=hash-mapping - size: 8593072 - timestamp: 1746536121732 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda sha256: a6efcdbe973e12bc8bd61aa26af77f733364975000c8fdaa0d6374338018e0db md5: dbd991d0080c48dae5113a27ab6d0d70 @@ -11761,16 +10695,6 @@ packages: - orjson>=3.10.15 - packaging requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - sha256: a922841ad80bd7b222502e65c07ecb67e4176c4fa5b03678a005f39fcc98be4b - md5: ad8527bf134a90e1c9ed35fa0b64318c - constrains: - - sysroot_linux-64 ==2.17 - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 - license_family: GPL - purls: [] - size: 943486 - timestamp: 1729794504440 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 @@ -11836,33 +10760,9 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 - md5: 6dc9e1305e7d3129af4ad0dabda30e56 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - license: GPL-3.0-only - license_family: GPL - purls: [] - size: 670635 - timestamp: 1749858327854 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 - md5: 01f8d123c96816249efd255a31ad7712 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - license: GPL-3.0-only - license_family: GPL - purls: [] - size: 671240 - timestamp: 1740155456116 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda - sha256: 2a34aa8146f97f9e2fc1f3ff34e17c1008afd4a7b0e2fea164b8e5df00b8cbb4 - md5: e31316a586cac398b1fcdb10ace786b9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda + sha256: 1a620f27d79217c1295049ba214c2f80372062fd251b569e9873d4a953d27554 + md5: 0be7c6e070c19105f966d3758448d018 depends: - __glibc >=2.17,<3.0.a0 constrains: @@ -11870,8 +10770,8 @@ packages: license: GPL-3.0-only license_family: GPL purls: [] - size: 675719 - timestamp: 1751601710789 + size: 676044 + timestamp: 1752032747103 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -11918,67 +10818,6 @@ packages: purls: [] size: 164701 timestamp: 1745264384716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250127.1-cxx17_hbbce691_0.conda - sha256: 65d5ca837c3ee67b9d769125c21dc857194d7f6181bb0e7bd98ae58597b457d0 - md5: 00290e549c5c8a32cc271020acc9ec6b - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20250127.1 - - libabseil-static =20250127.1=cxx17* - license: Apache-2.0 - license_family: Apache - purls: [] - size: 1325007 - timestamp: 1742369558286 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250127.1-cxx17_h0e468a2_0.conda - sha256: 8c43a7daa4df04f66d08e6a6cd2f004fc84500bf8c0c75dc9ee633b34c2a01be - md5: b2004ae68003d2ef310b49847b911e4b - depends: - - __osx >=10.13 - - libcxx >=18 - constrains: - - libabseil-static =20250127.1=cxx17* - - abseil-cpp =20250127.1 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 1177855 - timestamp: 1742369859708 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250127.1-cxx17_h07bc746_0.conda - sha256: 9884f855bdfd5cddac209df90bdddae8b3a6d8accfd2d3f52bc9db2f9ebb69c9 - md5: 26aabb99a8c2806d8f617fd135f2fc6f - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - abseil-cpp =20250127.1 - - libabseil-static =20250127.1=cxx17* - license: Apache-2.0 - license_family: Apache - purls: [] - size: 1192962 - timestamp: 1742369814061 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - build_number: 31 - sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 - md5: 728dbebd0f7a20337218beacffd37916 - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - - mkl <2025 - - libcblas =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 16859 - timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda build_number: 32 sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338 @@ -11997,24 +10836,6 @@ packages: purls: [] size: 17330 timestamp: 1750388798074 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - build_number: 31 - sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d - md5: a8c1c9f95d1c46d67028a6146c1ea77c - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - mkl <2025 - - liblapack =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17105 - timestamp: 1740087945188 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda build_number: 32 sha256: e441fcc46858a9a073e4344c80e267aee3b95ec01b02e37205c36be79eec0694 @@ -12033,24 +10854,6 @@ packages: purls: [] size: 17571 timestamp: 1750389030403 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - build_number: 31 - sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f - md5: 39b053da5e7035c6592102280aa7612a - depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 - constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - - mkl <2025 - - liblapack =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17123 - timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda build_number: 32 sha256: 2775472dd81d43dc20804b484028560bfecd5ab4779e39f1fb95684da3ff2029 @@ -12069,22 +10872,6 @@ packages: purls: [] size: 17520 timestamp: 1750388963178 -- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - build_number: 31 - sha256: 7bb4d5b591e98fe607279520ee78e3571a297b5720aa789a2536041ad5540de8 - md5: d05563c577fe2f37693a554b3f271e8f - depends: - - mkl 2024.2.2 h66d3029_15 - constrains: - - libcblas =3.9.0=31*_mkl - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl - - liblapack =3.9.0=31*_mkl - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3733728 - timestamp: 1740088452830 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda build_number: 32 sha256: 809d78b096e70fed7ebb17c867dd5dde2f9f4ed8564967a6e10c65b3513b0c31 @@ -12101,21 +10888,6 @@ packages: purls: [] size: 3735390 timestamp: 1750389080409 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - build_number: 31 - sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d - md5: abb32c727da370c481a1c206f5159ce9 - depends: - - libblas 3.9.0 31_h59b9bed_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 16796 - timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda build_number: 32 sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9 @@ -12131,21 +10903,6 @@ packages: purls: [] size: 17308 timestamp: 1750388809353 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - build_number: 31 - sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c - md5: c655cc2b0c48ec454f7a4db92415d012 - depends: - - libblas 3.9.0 31_h7f60823_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17006 - timestamp: 1740087955460 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda build_number: 32 sha256: 745f6dd420389809c333734df6edc99d75caa3633e4778158c7549c6844af440 @@ -12161,21 +10918,6 @@ packages: purls: [] size: 17574 timestamp: 1750389040732 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - build_number: 31 - sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 - md5: 7353c2bf0e90834cb70545671996d871 - depends: - - libblas 3.9.0 31_h10e41b3_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17032 - timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda build_number: 32 sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c @@ -12191,21 +10933,6 @@ packages: purls: [] size: 17485 timestamp: 1750388970626 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - build_number: 31 - sha256: 609f455b099919bd4d15d4a733f493dc789e02da73fe4474f1cca73afafb95b8 - md5: 43c100b94ad2607382b0cf0f3a6b0bf3 - depends: - - libblas 3.9.0 31_h641d27c_mkl - constrains: - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl - - liblapack =3.9.0=31*_mkl - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3733549 - timestamp: 1740088502127 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda build_number: 32 sha256: d0f81145ae795592f3f3b5d7ff641c1019a99d6b308bfaf2a4cc5ba24b067bb0 @@ -12221,108 +10948,6 @@ packages: purls: [] size: 3735392 timestamp: 1750389122586 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.9.1.4-h9ab20c4_0.conda - sha256: 38bc99de89687ec391750dc603203364bdedfb92c600dcb2916dd3cd8558f5f5 - md5: 605f995d88cdb64714bd9979aadc7cd4 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-nvrtc - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 467680700 - timestamp: 1749227622432 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.9.1.4-h9ab20c4_0.conda - sha256: 935d6b3aa00d3b07f4abc811a9288ef331f344b12e87a85c985d45647e2e36b3 - md5: 0c1751a225676415945cbbbbb41605bc - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-crt-dev_linux-64 - - cuda-cudart-dev_linux-64 - - cuda-version >=12.9,<12.10.0a0 - - libcublas 12.9.1.4 h9ab20c4_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libcublas-static >=12.9.1.4 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 93594 - timestamp: 1749228328524 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-9.10.1.4-h4840ae0_0.conda - sha256: 5f21148b7bdfbcf5e40b4debaccd6d36b8a75405fdef1c66d75059a12d43bd0e - md5: c19f7281266ca77da5458d2ccf17ba82 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-nvrtc - - cuda-version >=12,<13.0a0 - - libcublas - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - constrains: - - libcudnn-jit <0a - license: LicenseRef-cuDNN-Software-License-Agreement - purls: [] - size: 527020675 - timestamp: 1747773945760 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcudnn-dev-9.10.1.4-hcd2ec93_0.conda - sha256: 34fb3c9fa9b67a18fd0b4d28518fdacf11dbed3ad3fbf24aec341d1b8490d3c0 - md5: bce8ec010b35f2c1e5db441f3f396754 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12,<13.0a0 - - libcudnn 9.10.1.4 h4840ae0_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libcudnn-jit-dev <0a - license: LicenseRef-cuDNN-Software-License-Agreement - purls: [] - size: 44217 - timestamp: 1747774406255 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.4.1.4-h5888daf_0.conda - sha256: fb4d2b0c23104d2c42400a3f69f311f087a3b71ab9c9c36bb249919e599b7e8d - md5: 2da1a83a3b1951e7e8d1c9c3d1340c41 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 162077229 - timestamp: 1749221627451 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.4.1.4-h5888daf_0.conda - sha256: 8885e88ff6b52e971ab1dadca150a67bbc12b7aa9ea510be81e8a7d7a65ff99e - md5: 62c9c50b9a7f4dc72b7ed82e7233597d - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libcufft 11.4.1.4 h5888daf_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libcufft-static >=11.4.1.4 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 34644 - timestamp: 1749221956811 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 - md5: d4529f4dff3057982a7617c7ac58fde3 - depends: - - krb5 >=1.21.1,<1.22.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 4519402 - timestamp: 1689195353551 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55 md5: d4a250da4737ee127fb1fa6452a9002e @@ -12337,135 +10962,29 @@ packages: purls: [] size: 4523621 timestamp: 1749905341688 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.10.19-h9ab20c4_0.conda - sha256: c4576976b8b5ceb060b32d24fc08db5253606256c3c99b42ace343e9be2229db - md5: c745bc0dd1f066e6752c8b2909216b62 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 46161381 - timestamp: 1746193213392 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.10.19-h9ab20c4_0.conda - sha256: 1d59e844f3a79c19040efc1f15f23e33bb6b13df19bb63714e9b34515fc9d8fc - md5: 9a7e41b2c3cf57f6a3a1aeac35ebebc0 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libcurand 10.3.10.19 h9ab20c4_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libcurand-static >=10.3.10.19 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 253530 - timestamp: 1746193336357 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.5.82-h9ab20c4_0.conda - sha256: fadacf0aacead8bb6264c4bce4051f4ef7830c218a4e867a67c02d3c4b28bd08 - md5: ecaa51e8bc0039aab1ac44c1270c70b8 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libcublas >=12.9.1.4,<12.10.0a0 - - libcusparse >=12.5.10.65,<12.6.0a0 - - libgcc >=13 - - libnvjitlink >=12.9.86,<12.10.0a0 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 205162082 - timestamp: 1749232252911 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.5.82-h9ab20c4_0.conda - sha256: 4b78e364f6780f3dcfc774af9e3b1437fbea58530c33deb426d8a021f01cc325 - md5: ff90346cfdbfb1dd37c793481ec53ec5 - depends: - - __glibc >=2.28,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libcusolver 11.7.5.82 h9ab20c4_0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libcusolver-static >=11.7.5.82 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 61344 - timestamp: 1749232543931 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.10.65-h5888daf_0.conda - sha256: 2e69a61c10633651c80dee982d7e46ed5aef6c06ee47622188403d6b9f99b889 - md5: 662ed6e77f131380286d772f6a364ac2 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libgcc >=13 - - libnvjitlink >=12.9.86,<12.10.0a0 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 208848587 - timestamp: 1749224709022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.10.65-h5888daf_0.conda - sha256: 94ef211a16c4f16fb50a2f70215c9b50b6472b44efd84be28bc0763e55aa3fda - md5: 3ecb445ead42d21959806703af8e23f5 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12.9,<12.10.0a0 - - libcusparse 12.5.10.65 h5888daf_0 - - libgcc >=13 - - libnvjitlink >=12.9.86,<12.10.0a0 - - libstdcxx >=13 - constrains: - - libcusparse-static >=12.5.10.65 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 52878 - timestamp: 1749225093845 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 - md5: 9dde68cee0a231b19e189954ac29027b - depends: - - __osx >=10.13 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - purls: [] - size: 562408 - timestamp: 1747262455533 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 - md5: 8b47ade37d4e75417b4e993179c09f5d +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + sha256: 2f0a3df7d6b8898d6d387ff110d7fb98aba1f0e9c3a5e6527a54bb8a3441a0ec + md5: 8f8448b9b4cd3c698b822e0038d65940 depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 562573 - timestamp: 1749846921724 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 - md5: 4ef1bdb94d42055f511bb358f2048c58 + size: 561704 + timestamp: 1752049799365 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + sha256: 3d7fd77e37794c28e99812da03de645b8e1ddefa876d9400c4d552b9eb8dd880 + md5: 149bb93ede144e7c86bf5f88378ae5f6 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 568010 - timestamp: 1747262879889 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 - md5: 881de227abdddbe596239fa9e82eb3ab - depends: - - __osx >=11.0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - purls: [] - size: 567189 - timestamp: 1749847129529 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf - md5: 64f0c503da58ec25ebd359e4d990afa8 + size: 567309 + timestamp: 1752050056857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda + sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf + md5: 64f0c503da58ec25ebd359e4d990afa8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -12728,20 +11247,6 @@ packages: purls: [] size: 337007 timestamp: 1745370226578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 829108 - timestamp: 1746642191935 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 md5: 9e60c55e725c20d23125a5f0dd69af5d @@ -12752,24 +11257,10 @@ packages: - libgcc-ng ==15.1.0=*_3 - libgomp 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 824921 timestamp: 1750808216066 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be - md5: 9bedb24480136bfeb81ebc81d4285e70 - depends: - - _openmp_mutex >=4.5 - - libwinpthread >=12.0.0.r4.gg4f2fc60ca - constrains: - - msys2-conda-epoch <0.0a0 - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h1383e82_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 673459 - timestamp: 1746656621653 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda sha256: 05978c4e8c826dd3b727884e009a19ceee75b0a530c18fc14f0ba56b090f2ea3 md5: d8314be93c803e2e2b430f6389d6ce6a @@ -12781,35 +11272,17 @@ packages: - msys2-conda-epoch <0.0a0 - libgcc-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 669602 timestamp: 1750808309041 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-h85bb3a7_103.conda - sha256: 81d51ff07d3faf3daf99a8a3f0e49e8289c94dec7d6ed4c7d28eebeb5d3b7f1a - md5: fc4911352ac0969aa171031fa4ba29d0 - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 2725528 - timestamp: 1750808302968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 - depends: - - libgcc 15.1.0 h767d61c_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 34586 - timestamp: 1746642200749 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 md5: e66f2b8ad787e7beb0f846e4bd7e8493 depends: - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 29033 timestamp: 1750808224854 @@ -12899,18 +11372,6 @@ packages: purls: [] size: 165838 timestamp: 1737548342665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 - md5: f92e6e0a3c0c0c85561ef61aa59d555d - depends: - - libgfortran5 15.1.0 hcea5267_2 - constrains: - - libgfortran-ng ==15.1.0=*_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 34541 - timestamp: 1746642233221 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183 md5: bfbca721fd33188ef923dfe9ba172f29 @@ -12919,19 +11380,10 @@ packages: constrains: - libgfortran-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 29057 timestamp: 1750808257258 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 - md5: 6b27baf030f5d6603713c7e72d3f6b9a - depends: - - libgfortran5 14.2.0 h58528f3_105 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 155635 - timestamp: 1743911593527 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e md5: 090b3c9ae1282c8f9b394ac9e4773b10 @@ -12942,16 +11394,6 @@ packages: purls: [] size: 156202 timestamp: 1743862427451 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 - md5: ad35937216e65cfeecd828979ee5e9e6 - depends: - - libgfortran5 14.2.0 h2c44a93_105 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 155474 - timestamp: 1743913530958 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 md5: 044a210bc1d5b8367857755665157413 @@ -12962,19 +11404,6 @@ packages: purls: [] size: 156291 timestamp: 1743863532821 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.1.0 - constrains: - - libgfortran 15.1.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 1569986 - timestamp: 1746642212331 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a md5: 530566b68c3b8ce7eec4cd047eae19fe @@ -12984,6 +11413,7 @@ packages: constrains: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 1565627 timestamp: 1750808236464 @@ -12999,30 +11429,6 @@ packages: purls: [] size: 1225013 timestamp: 1743862382377 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 - md5: 94560312ff3c78225bed62ab59854c31 - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 14.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 1224385 - timestamp: 1743911552203 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 - md5: 06f35a3b1479ec55036e1c9872f97f2c - depends: - - llvm-openmp >=8.0.0 - constrains: - - libgfortran 14.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 806283 - timestamp: 1743913488925 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 md5: 69806c1e957069f1d515830dcc9f6cbb @@ -13101,37 +11507,16 @@ packages: purls: [] size: 3771466 timestamp: 1747837394297 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 - depends: - - __glibc >=2.17,<3.0.a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 452635 - timestamp: 1746642113092 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 md5: 3cd1a7238a0dd3d0860fdefc496cc854 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 447068 timestamp: 1750808138400 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 - md5: 5fbacaa9b41e294a6966602205b99747 - depends: - - libwinpthread >=12.0.0.r4.gg4f2fc60ca - constrains: - - msys2-conda-epoch <0.0a0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 540903 - timestamp: 1746656563815 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 md5: 94545e52b3d21a7ab89961f7bda3da0d @@ -13140,73 +11525,10 @@ packages: constrains: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 535456 timestamp: 1750808243424 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.71.0-h8e591d7_1.conda - sha256: 37267300b25f292a6024d7fd9331085fe4943897940263c3a41d6493283b2a18 - md5: c3cfd72cbb14113abee7bbd86f44ad69 - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.5,<2.0a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libgcc >=13 - - libprotobuf >=5.29.3,<5.29.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.71.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 7920187 - timestamp: 1745229332239 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.71.0-h7d722e6_1.conda - sha256: 304649f99f6cde43cf4fb95cc2892b5955aa31bf3d8b74f707a8ca1347c06b88 - md5: 460e0c0ac50927c2974e41aab9272c6b - depends: - - __osx >=10.14 - - c-ares >=1.34.5,<2.0a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libprotobuf >=5.29.3,<5.29.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.71.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 5510897 - timestamp: 1745201273719 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.71.0-h857da87_1.conda - sha256: 082668830025c2a2842165724b44d4f742688353932a6705cd61aa4ecb9aa173 - md5: 59fe16787c94d3dc92f2dfa533de97c6 - depends: - - __osx >=11.0 - - c-ares >=1.34.5,<2.0a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libprotobuf >=5.29.3,<5.29.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.71.0 - license: Apache-2.0 - license_family: APACHE - purls: [] - size: 4908484 - timestamp: 1745191611284 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 md5: b87a0ac5ab6495d8225db5dc72dd21cd @@ -13260,16 +11582,6 @@ packages: purls: [] size: 638142 timestamp: 1740128665984 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - sha256: f0a759b35784d5a31aeaf519f8f24019415321e62e52579a3ec854a413a1509d - md5: b3f498d87404090f731cb6a474045150 - depends: - - __osx >=10.13 - - libiconv >=1.18,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 97229 - timestamp: 1746229336518 - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda sha256: 33828b83c29f4fcee0ae5f740b5e4660bee3793df8c9079e279284604858c0ac md5: 27e7ef1f0d8c47ae5acd6e0e15c08f8d @@ -13280,16 +11592,6 @@ packages: purls: [] size: 97550 timestamp: 1751558234755 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - sha256: fb6d211d9e75e6becfbf339d255ea01f7bd3a61fe6237b3dad740de1b74b3b81 - md5: 0dca9914f2722b773c863508723dfe6e - depends: - - __osx >=11.0 - - libiconv >=1.18,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 90547 - timestamp: 1746229257769 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a md5: 5103f6a6b210a3912faf8d7db516918c @@ -13356,21 +11658,6 @@ packages: purls: [] size: 838154 timestamp: 1745268437136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - build_number: 31 - sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 - md5: 452b98eafe050ecff932f0ec832dd03f - depends: - - libblas 3.9.0 31_h59b9bed_openblas - constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 16790 - timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda build_number: 32 sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 @@ -13386,21 +11673,6 @@ packages: purls: [] size: 17316 timestamp: 1750388820745 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - build_number: 31 - sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 - md5: d0f3bc17e0acef003cb9d9195a205888 - depends: - - libblas 3.9.0 31_h7f60823_openblas - constrains: - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapacke =3.9.0=31*_openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17033 - timestamp: 1740087965941 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda build_number: 32 sha256: 1e26450b80525b3f656e9c75fd26a10ebaa1d339fe4ca9c7affbebd9acbeac03 @@ -13416,21 +11688,6 @@ packages: purls: [] size: 17553 timestamp: 1750389051033 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - build_number: 31 - sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 - md5: ff57a55a2cbce171ef5707fb463caf19 - depends: - - libblas 3.9.0 31_h10e41b3_openblas - constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17033 - timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda build_number: 32 sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 @@ -13446,21 +11703,6 @@ packages: purls: [] size: 17507 timestamp: 1750388977861 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - build_number: 31 - sha256: 9415e807aa6f8968322bbd756aab8f487379d809c74266d37c697b8d85c534ad - md5: 40b47ee720a185289760960fc6185750 - depends: - - libblas 3.9.0 31_h641d27c_mkl - constrains: - - libcblas =3.9.0=31*_mkl - - blas =2.131=mkl - - liblapacke =3.9.0=31*_mkl - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3732648 - timestamp: 1740088548986 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda build_number: 32 sha256: 5629e592137114b24bfdea71e1c4b6bee11379631409ed91dfe2f83b32a8b298 @@ -13476,19 +11718,6 @@ packages: purls: [] size: 3735534 timestamp: 1750389164366 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c - md5: a76fd702c93cd2dfd89eff30a5fd45a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - xz 5.8.1.* - - xz ==5.8.1=*_1 - license: 0BSD - purls: [] - size: 112845 - timestamp: 1746531470399 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -13501,18 +11730,6 @@ packages: purls: [] size: 112894 timestamp: 1749230047870 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 - md5: f87e8821e0e38a4140a7ed4f52530053 - depends: - - __osx >=10.13 - constrains: - - xz 5.8.1.* - - xz ==5.8.1=*_1 - license: 0BSD - purls: [] - size: 104814 - timestamp: 1746531577001 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 md5: 8468beea04b9065b9807fc8b9cdc5894 @@ -13524,18 +11741,6 @@ packages: purls: [] size: 104826 timestamp: 1749230155443 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 - md5: 4e8ef3d79c97c9021b34d682c24c2044 - depends: - - __osx >=11.0 - constrains: - - xz 5.8.1.* - - xz ==5.8.1=*_1 - license: 0BSD - purls: [] - size: 92218 - timestamp: 1746531818330 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 md5: d6df911d4564d77c4374b02552cb17d1 @@ -13547,20 +11752,6 @@ packages: purls: [] size: 92286 timestamp: 1749230283517 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 - md5: 14a1042c163181e143a7522dfb8ad6ab - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - xz 5.8.1.* - - xz ==5.8.1=*_1 - license: 0BSD - purls: [] - size: 104699 - timestamp: 1746531718026 - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc md5: c15148b2e18da456f5108ccb5e411446 @@ -13628,43 +11819,6 @@ packages: purls: [] size: 33731 timestamp: 1750274110928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - purls: [] - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.9.86-h5888daf_1.conda - sha256: 55478faf21bd0ea6679189fa998fb3282f8bae93b1a4edf38b3e259bacce841d - md5: f38e71689d0807320af7373dd458b77d - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12,<12.10.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: LicenseRef-NVIDIA-End-User-License-Agreement - purls: [] - size: 30527890 - timestamp: 1751470375759 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 - md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 5919288 - timestamp: 1739825731827 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda sha256: 225f4cfdb06b3b73f870ad86f00f49a9ca0a8a2d2afe59440521fafe2b6c23d9 md5: 323dc8f259224d13078aaf7ce96c3efe @@ -13680,21 +11834,6 @@ packages: purls: [] size: 5916819 timestamp: 1750379877844 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a - md5: a30dc52b2a8b6300f17eaabd2f940d41 - depends: - - __osx >=10.13 - - libgfortran >=5 - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6170847 - timestamp: 1739826107594 - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 md5: 29c54869a3c7d33b6a0add39c5a325fe @@ -13710,21 +11849,6 @@ packages: purls: [] size: 6179547 timestamp: 1750380498501 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 - md5: 0cd1148c68f09027ee0b0f0179f77c30 - depends: - - __osx >=11.0 - - libgfortran >=5 - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.29,<0.3.30.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 4168442 - timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 md5: 5d7dbaa423b4c253c476c24784286e4b @@ -13740,28 +11864,6 @@ packages: purls: [] size: 4163399 timestamp: 1750378829050 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 - md5: 55199e2ae2c3651f6f9b2a447b47bdc9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 288701 - timestamp: 1739952993639 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - sha256: c8f5dc929ba5fcee525a66777498e03bbcbfefc05a0773e5163bb08ac5122f1a - md5: 37511c874cf3b8d0034c8d24e73c0884 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 289506 - timestamp: 1750095629466 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda sha256: c7b212bdd3f9d5450c4bae565ccb9385222bf9bb92458c2a23be36ff1b981389 md5: 51de14db340a848869e69c632b43cca7 @@ -13773,26 +11875,6 @@ packages: purls: [] size: 289215 timestamp: 1751559366724 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 - md5: 8461ab86d2cdb76d6e971aab225be73f - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 266874 - timestamp: 1739953034029 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda - sha256: 37be190992433d20336187b6fee4986cbdb11e9f901bc888aca5b2d7e5a2acc6 - md5: b9eabfc716af02b8d3ec5a51cb89b4a9 - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 267502 - timestamp: 1750095826947 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda sha256: a6b51f7056d3f5cf7e71f87314e7b3bb3b6ac5e38a4fb366cf500790e325ffd2 md5: 0b750895b4a3cbd06e685f86c24c205d @@ -13803,26 +11885,6 @@ packages: purls: [] size: 267202 timestamp: 1751559565046 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f - md5: 3550e05e3af94a3fa9cef2694417ccdf - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 259332 - timestamp: 1739953032676 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - sha256: b1050f6da51de507eec6902367cc2a3f381dd548eaaccb85673784543dcdee1a - md5: 90be56ffd1a6b1950268f88c12e17c69 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 259291 - timestamp: 1750095759683 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda sha256: 38d89e4ceae81f24a11129d2f5e8d10acfc12f057b7b4fd5af9043604a689941 md5: f39e4bd5424259d8dfcbdbf0e068558e @@ -13833,30 +11895,6 @@ packages: purls: [] size: 260895 timestamp: 1751559636317 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 - md5: ad620e92b82d2948bc019e029c574ebb - depends: - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: zlib-acknowledgement - purls: [] - size: 346511 - timestamp: 1745771984515 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.49-h7a4582a_0.conda - sha256: 8876a2d32d3538675e035b6560691471a1571835c0bcbf23816c24c460d31439 - md5: 27269977c8f25d499727ceabc47cee3d - depends: - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: zlib-acknowledgement - purls: [] - size: 347727 - timestamp: 1750096091724 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda sha256: 17f3bfb6d852eec200f68a4cfb4ef1d8950b73dfa48931408e3dbdfc89a4848a md5: 2e63db2e13cd6a5e2c08f771253fb8a0 @@ -13869,104 +11907,15 @@ packages: purls: [] size: 352422 timestamp: 1751559786122 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.29.3-h501fc15_1.conda - sha256: 691af28446345674c6b3fb864d0e1a1574b6cc2f788e0f036d73a6b05dcf81cf - md5: edb86556cf4a0c133e7932a1597ff236 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda + sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 + md5: d27665b20bc4d074b86e628b3ba5ab8b depends: - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 3358788 - timestamp: 1745159546868 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.29.3-h1c7185b_1.conda - sha256: cc4dd61aa257c4b4a9451ddf9a5148e4640fea0df416737c1086724ca09641f6 - md5: 7c7d8218221568e544986713881d36ee - depends: - - __osx >=10.14 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 2840883 - timestamp: 1745159228883 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.29.3-hccd9074_1.conda - sha256: 6e5b49bfa09bfc1aa0d69113be435d40ace0d01592b7b22cac696928cee6be03 - md5: f7951fdf76556f91bc146384ede7de40 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 2613087 - timestamp: 1745158781377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.06.26-hba17884_0.conda - sha256: 89535af669f63e0dc4ae75a5fc9abb69b724b35e0f2ca0304c3d9744a55c8310 - md5: f6881c04e6617ebba22d237c36f1b88e - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - re2 2025.06.26.* - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 211720 - timestamp: 1751053073521 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.06.26-hfc00f1c_0.conda - sha256: 979a49a54fcfb38f4de258d970b5c572fa29e780a67e847ea18860f99af39020 - md5: 2ba834cda1154dd23d8f1bba2f8f13e0 - depends: - - __osx >=10.13 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - constrains: - - re2 2025.06.26.* - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 180092 - timestamp: 1751053180332 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.06.26-hd41c47c_0.conda - sha256: d125de07bcdeadddd415d2f855f7fe383b066a373fa88244e51c58fef5cb8774 - md5: ce95f5724e52eb76f4cd4be6e7a0d9ae - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20250127.1,<20250128.0a0 - - libcxx >=18 - constrains: - - re2 2025.06.26.* - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 167704 - timestamp: 1751053331260 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - sha256: a45ef03e6e700cc6ac6c375e27904531cf8ade27eb3857e080537ff283fb0507 - md5: d27665b20bc4d074b86e628b3ba5ab8b - depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - freetype >=2.13.3,<3.0a0 - - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=11.0.0,<12.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=11.0.0,<12.0a0 - libgcc >=13 - libglib >=2.84.0,<3.0a0 - libpng >=1.6.47,<1.7.0a0 @@ -14010,18 +11959,6 @@ packages: purls: [] size: 4607782 timestamp: 1743369546790 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-hd08acf3_3.conda - sha256: b9c75b534d3e6e6beec48e316fac44592126be861def4d0d161dbb0b9adcaf68 - md5: 66f4c3def354c5a6dd0c830db7341fa7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14.3.0 - - libstdcxx >=14.3.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 5072646 - timestamp: 1750808425881 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -14060,101 +11997,49 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 - md5: 93048463501053a00739215ea3f36324 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 916313 - timestamp: 1746637007836 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - sha256: 07649c7c19b916179926006df5c38074618d35bf36cd33ab3fe8b22182bbd258 - md5: b04c7eda6d7dab1e6503135e7fad4d25 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + sha256: 62040da9b55f409cd43697eb7391381ffede90b2ea53634a94876c6c867dcd73 + md5: be96b9fdd7b579159df77ece9bb80e48 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 918887 - timestamp: 1751135622316 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d - md5: 9377ba1ade655ea3fc831b456f4a2351 - depends: - - __osx >=10.13 + - icu >=75.1,<76.0a0 + - libgcc >=14 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 977388 - timestamp: 1746637093883 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - sha256: bd3ab15e14d7e88851c962034d97519a135d86f79f88b3237fbfb34194c114cb - md5: 678284738efc450afcf90f70365f7318 + size: 935828 + timestamp: 1752072043 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + sha256: e1dd0bd9be821798d824a0ed8650a52faf3ecdc857412d0d8f7f6dfe279fd240 + md5: 065c33b28348792d77ff0d5571541d5e depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 980106 - timestamp: 1751135725501 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 - md5: 85f443033cd5b3df82b5cabf79bddb09 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 899462 - timestamp: 1746637228408 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - sha256: 6b51a9e7366d6cd26e50d1d0646331d457999ebb88af258f06a74f075e95bf68 - md5: b2dc1707166040e738df2d514f8a1d22 + size: 980394 + timestamp: 1752072257198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + sha256: 02c292e5fb95f8ce408a3c98a846787095639217bd199a264b149dfe08a2ccb3 + md5: e0fe6df79600e1db7405ccf29c61d784 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 901519 - timestamp: 1751135765345 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 - md5: a3900c97ba9e03332e9a911fe63f7d64 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Unlicense - purls: [] - size: 1081123 - timestamp: 1746637406471 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - sha256: d136ecf423f83208156daa6a8c1de461a7e9780e8e4423c23c7e136be3c2ff0a - md5: e1e6cac409e95538acdc3d33a0f34d6a + size: 899248 + timestamp: 1752072259470 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + sha256: f12cdfe29c248d6a1c7d11b6fe1a3e0d0563206deb422ddb1b84b909818168d4 + md5: 58f810279ac6caec2d996a56236c3254 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Unlicense purls: [] - size: 1285981 - timestamp: 1751135695346 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 3902355 - timestamp: 1746642227493 + size: 1288312 + timestamp: 1752072137328 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 md5: 6d11a5edae89fe413c0569f16d308f5a @@ -14162,35 +12047,17 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 3896407 timestamp: 1750808251302 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h85bb3a7_103.conda - sha256: 0a2a6298beb7225bb850011241b5be9dbeef52e5942d74c592f577b16c38334f - md5: 8f310e4b92c1b1ec1bd3ee16931c149f - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 14063448 - timestamp: 1750808328742 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb - depends: - - libstdcxx 15.1.0 h8f9b012_2 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - purls: [] - size: 34647 - timestamp: 1746642266826 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b md5: 57541755b5a51691955012b8e197c06c depends: - libstdcxx 15.1.0 h8f9b012_3 license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL purls: [] size: 29093 timestamp: 1750808292700 @@ -14273,57 +12140,53 @@ packages: purls: [] size: 33601 timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b + md5: aea31d2e5b1091feca96fcfe945c3cf9 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 constrains: - - libwebp 1.5.0 + - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 - md5: 5e0cefc99a231ac46ba21e27ae44689f + size: 429011 + timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + sha256: 00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391 + md5: 7bb6608cf1f83578587297a158a6630b depends: - __osx >=10.13 constrains: - - libwebp 1.5.0 + - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 357662 - timestamp: 1734777539822 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 + size: 365086 + timestamp: 1752159528504 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda + sha256: a4de3f371bb7ada325e1f27a4ef7bcc81b2b6a330e46fac9c2f78ac0755ea3dd + md5: e5e7d467f80da752be17796b87fe6385 depends: - __osx >=11.0 constrains: - - libwebp 1.5.0 + - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f - md5: 33f7313967072c6e6d8f865f5493c7ae + size: 294974 + timestamp: 1752159906788 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda + sha256: 7b6316abfea1007e100922760e9b8c820d6fc19df3f42fb5aca684cfacb31843 + md5: f9bbae5e2537e3b06e0f7310ba76c893 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - libwebp 1.5.0 + - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 273661 - timestamp: 1734777665516 + size: 279176 + timestamp: 1752159543911 - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 md5: 08bfa5da6e242025304b206d152479ef @@ -14498,18 +12361,6 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.5-ha54dae1_0.conda - sha256: f858ef4cbc7f449da06e7e5cf62d6db0f8269e4e723144be35b0ef3531e28591 - md5: 7b6a67507141ea93541943f0c011a872 - depends: - - __osx >=10.13 - constrains: - - openmp 20.1.5|20.1.5.* - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - purls: [] - size: 306529 - timestamp: 1747367226775 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d md5: e240159643214102dc88395c4ecee9cf @@ -14522,18 +12373,6 @@ packages: purls: [] size: 306443 timestamp: 1749892271445 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.5-hdb05f8b_0.conda - sha256: 3515d520338a334c987ce2737dfba1ebd66eb1e360582c7511738ad3dc8a9145 - md5: 66771cb733ad80bd46b66f856601001a - depends: - - __osx >=11.0 - constrains: - - openmp 20.1.5|20.1.5.* - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - purls: [] - size: 282100 - timestamp: 1747367434936 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 md5: 741e1da0a0798d32e13e3724f2ca2dcf @@ -14546,6 +12385,17 @@ packages: purls: [] size: 281996 timestamp: 1749892286735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda + sha256: d731910cd4d084574c6bba0638ac98906c1fd8104a2e844f69813e641cf72305 + md5: 6f5b4542c2dd772024d9f7e7b0d5e41a + depends: + - __osx >=11.0 + constrains: + - openmp 20.1.8|20.1.8.* + license: Apache-2.0 WITH LLVM-exception + purls: [] + size: 283218 + timestamp: 1752565794800 - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl name: logistro version: 1.1.0 @@ -14814,10 +12664,10 @@ packages: purls: [] size: 103106385 timestamp: 1730232843711 -- pypi: https://files.pythonhosted.org/packages/38/bc/c4260e4a6c6bf684d0313308de1c860467275221d5e7daf69b3fcddfdd0b/ml_dtypes-0.5.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl name: ml-dtypes version: 0.5.1 - sha256: 9626d0bca1fb387d5791ca36bacbba298c5ef554747b7ebeafefb4564fc83566 + sha256: 12651420130ee7cc13059fc56dac6ad300c3af3848b802d475148c9defd27c23 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -14830,54 +12680,42 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.5.1-py312hf9745cd_0.conda - sha256: 87928a36d350c470455a322c4c2b82266b88322d0fd5187ae8cc6fb5e3aad61f - md5: c45ac8395a27736c27b2e50b53ffe62c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MPL-2.0 AND Apache-2.0 - purls: - - pkg:pypi/ml-dtypes?source=hash-mapping - size: 290991 - timestamp: 1736538940686 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ml_dtypes-0.5.1-py312hec45ffd_0.conda - sha256: 7a8fa9ae4dee10c522211734be6e53397b14deddd861826b5163f2358e9cb903 - md5: f14f61abbbb6a7882dfb5835d21a0f32 - depends: - - __osx >=10.13 - - libcxx >=18 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MPL-2.0 AND Apache-2.0 - purls: - - pkg:pypi/ml-dtypes?source=hash-mapping - size: 227886 - timestamp: 1736539035640 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ml_dtypes-0.5.1-py312hcb1e3ce_0.conda - sha256: 17f70a0f345722e67f7437895a78cce84b758419f1c373186cec671607270747 - md5: d7a33fc18bf71480224e069be3072bbf - depends: - - __osx >=11.0 - - libcxx >=18 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MPL-2.0 AND Apache-2.0 - purls: - - pkg:pypi/ml-dtypes?source=hash-mapping - size: 200130 - timestamp: 1736539205286 -- pypi: https://files.pythonhosted.org/packages/6d/38/52f4b808b3fef7f0ef840ee8ff6ce5b5d77381e65425758d515cdd4f5bb5/mypy-1.16.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: ml-dtypes + version: 0.5.1 + sha256: bf9975bda82a99dc935f2ae4c83846d86df8fd6ba179614acac8e686910851da + requires_dist: + - numpy>=1.21 + - numpy>=1.21.2 ; python_full_version >= '3.10' + - numpy>=1.23.3 ; python_full_version >= '3.11' + - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=2.1.0 ; python_full_version >= '3.13' + - absl-py ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pylint>=2.6.0 ; extra == 'dev' + - pyink ; extra == 'dev' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl + name: ml-dtypes + version: 0.5.1 + sha256: fd918d4e6a4e0c110e2e05be7a7814d10dc1b95872accbf6512b80a109b71ae1 + requires_dist: + - numpy>=1.21 + - numpy>=1.21.2 ; python_full_version >= '3.10' + - numpy>=1.23.3 ; python_full_version >= '3.11' + - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=2.1.0 ; python_full_version >= '3.13' + - absl-py ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pylint>=2.6.0 ; extra == 'dev' + - pyink ; extra == 'dev' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.16.0 - sha256: bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec + version: 1.17.0 + sha256: 1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -14889,10 +12727,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/6f/5f/b392f7b4f659f5b619ce5994c5c43caab3d80df2296ae54fa888b3d17f5a/mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl name: mypy - version: 1.16.0 - sha256: b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8 + version: 1.17.0 + sha256: d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -14904,10 +12742,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/70/cf/158e5055e60ca2be23aec54a3010f89dcffd788732634b344fc9cb1e85a0/mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl name: mypy - version: 1.16.0 - sha256: c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13 + version: 1.17.0 + sha256: 0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -14919,10 +12757,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/94/34/cfff7a56be1609f5d10ef386342ce3494158e4d506516890142007e6472c/mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl name: mypy - version: 1.16.0 - sha256: f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090 + version: 1.17.0 + sha256: 2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -14956,30 +12794,10 @@ packages: - pkg:pypi/myst-parser?source=hash-mapping size: 73074 timestamp: 1739381945342 -- pypi: https://files.pythonhosted.org/packages/ff/fb/12f4a971467aac3cb7cbccbbfca5d0f05e23722068112c1ac4a393613ebe/narwhals-1.44.0-py3-none-any.whl - name: narwhals - version: 1.44.0 - sha256: a170ea0bab4cf1f323d9f8bf17f2d7042c3d73802bea321996b39bf075d57de5 - requires_dist: - - cudf>=24.10.0 ; extra == 'cudf' - - dask[dataframe]>=2024.8 ; extra == 'dask' - - duckdb>=1.0 ; extra == 'duckdb' - - ibis-framework>=6.0.0 ; extra == 'ibis' - - packaging ; extra == 'ibis' - - pyarrow-hotfix ; extra == 'ibis' - - rich ; extra == 'ibis' - - modin ; extra == 'modin' - - pandas>=1.1.3 ; extra == 'pandas' - - polars>=0.20.3 ; extra == 'polars' - - pyarrow>=11.0.0 ; extra == 'pyarrow' - - pyspark>=3.5.0 ; extra == 'pyspark' - - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' - - sqlframe>=3.22.0 ; extra == 'sqlframe' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/75/64/c46ba7517d90e330c4f35af1256d4b12ba037e2ef17d4aa4d4f11b4a143d/narwhals-1.46.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl name: narwhals - version: 1.46.0 - sha256: f15d2255695d7e99f624f76aa5b765eb3fff8a509d3215049707af3a3feebc90 + version: 1.47.0 + sha256: 8b4ead8866046829de24058d1079e776806bd4aab7d38f55f17c58ce4c0994d2 requires_dist: - cudf>=24.10.0 ; extra == 'cudf' - dask[dataframe]>=2024.8 ; extra == 'dask' @@ -14991,7 +12809,7 @@ packages: - modin ; extra == 'modin' - pandas>=1.1.3 ; extra == 'pandas' - polars>=0.20.4 ; extra == 'polars' - - pyarrow>=11.0.0 ; extra == 'pyarrow' + - pyarrow>=13.0.0 ; extra == 'pyarrow' - pyspark>=3.5.0 ; extra == 'pyspark' - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' - sqlframe>=3.22.0 ; extra == 'sqlframe' @@ -15095,19 +12913,6 @@ packages: - pkg:pypi/nbsphinx?source=hash-mapping size: 34324 timestamp: 1741075538022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nccl-2.27.5.1-h9b8ff78_0.conda - sha256: d94d3252a0c1b893947e4e2cb3ff9184868645d6156dec6609c6832c3b5d9fe5 - md5: cac7e04909de453bca7ef38beb28e3c5 - depends: - - __glibc >=2.17,<3.0.a0 - - cuda-version >=12,<13.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 213637740 - timestamp: 1750419797926 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 md5: 47e340acb35de30501a76c7c799c41d7 @@ -15207,9 +13012,9 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py311h5d046bc_0.conda - sha256: f28273a72d25f4d7d62a9ba031d5271082afc498121bd0f6783d72b4103dbbc7 - md5: babce4d9841ebfcee64249d98eb4e0d4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h519dc76_0.conda + sha256: 3d58e99d5d15eb31d41122728adbe7945867f95373c756367b536a41b77ec377 + md5: 3c92d1c6a7938b0f92997bd0485561ef depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -15225,48 +13030,8 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 9068997 - timestamp: 1747545091884 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 - md5: 17fac9db62daa5c810091c2882b28f45 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8490501 - timestamp: 1747545073507 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py313h17eae1a_0.conda - sha256: 8b88ade24df5229c5d76c5ef09568ae4630b1095982e94648fbbeb18f475aa61 - md5: db18a34466bef0863e9301b518a75e8f - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8545037 - timestamp: 1749430954481 + size: 9095934 + timestamp: 1751342616995 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda sha256: 731325aea31b3825c8c1b371f4314c096f7981de1c2cc276a7931f889b5bb6d8 md5: 7e086a30150af2536a1059885368dcf0 @@ -15307,9 +13072,9 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 8553831 timestamp: 1751342634355 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py311h27c81cd_0.conda - sha256: bcb2c6fd701f3591fd4cd04580ec62ad88622c09671139a98d82ca80e2ae365f - md5: 8e850d1284fd8a90aeb4b5195a0116f3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h9224382_0.conda + sha256: 633f226ec0d0c8c5d5acbbe9b9bd4c731e4965f873c49d65710c59b6cac2cb05 + md5: fff03595ad69c0bd55eca4f38ad92d74 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 @@ -15324,46 +13089,8 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8182747 - timestamp: 1747545065417 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - sha256: 22bc6d7ac48df0a3130a24b9426a004977cb5dc8b5edbb3f3d2579a478121cbd - md5: 486e149e3648cbf8b92b0512db99bce3 - depends: - - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7691449 - timestamp: 1747545110970 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.0-py313hc518a0f_0.conda - sha256: 6e751f573b6aa727b83bdcb6534c9a4ffe05bcb56a659eb3f1418d28794213cc - md5: 9ff00ee247ea2b114a56de1a31a5d5af - depends: - - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 7634474 - timestamp: 1749431208151 + size: 8205561 + timestamp: 1751342590138 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda sha256: b06383b035b13ad7edaa307c56591604af4bc65c3c8ef8654534b376a82b7bd0 md5: 81571392e3badcb8df4d02f143c59326 @@ -15402,9 +13129,9 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 7602309 timestamp: 1751342608687 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py311h762c074_0.conda - sha256: c6cd42960418a2bd60cfbc293f08d85076f7d8aacf7a94f516195381241d4d93 - md5: 9446d2629b529e92769dfb34c7c194bb +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h4379d9d_0.conda + sha256: 6b707cbf94f6b7f91b819763650f82225db5846c3b3afefcc0712ed2f3a0f565 + md5: 2c407c787f5811cd4964901c55379a42 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -15420,51 +13147,11 @@ packages: license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7018728 - timestamp: 1747545122995 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e - md5: fff7ab22b4f5c7036d3c2e1f92632fa4 - depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6437085 - timestamp: 1747545094808 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.0-py313h41a2e72_0.conda - sha256: d473005786a27cf4e1430d45a99a61626c2fbf61eb25b4d021cee8d217b973d2 - md5: 0dc3aa075f3e64bdda6e779e2cbf5aa9 - depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=compressed-mapping - size: 6525213 - timestamp: 1749430964570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda - sha256: b9c79d31c214964614e6c70606ff99c7993a1eb1b8743cba484b268a386a5c46 - md5: 84048f61fe33762c214055fb2df161f0 + size: 7130355 + timestamp: 1751342669583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda + sha256: b9c79d31c214964614e6c70606ff99c7993a1eb1b8743cba484b268a386a5c46 + md5: 84048f61fe33762c214055fb2df161f0 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 @@ -15502,9 +13189,9 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6567388 timestamp: 1751342678109 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py311h5e411d1_0.conda - sha256: f4ea606273089836e4b2b2355209142c1514d8bf103346ed435e85008df0804d - md5: 6612dfa4e68dd90c539f2e9f40a42514 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311haedcf98_0.conda + sha256: 9a2122c68481b2db6096f1eddc0226f49e3e007f488d4db8cfd8be54e35efbd3 + md5: b770ef2db0735a782e703637accad674 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -15512,56 +13199,16 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7800740 - timestamp: 1747545419079 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.6-py312h3150e54_0.conda - sha256: 18d5bfd2830702fa40374aa1f03cca8b77fa5f1df92fecf52d17d5a0a246be46 - md5: f0811ca68448b3e8b53e05db7667e64d - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - numpy-base <0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7028854 - timestamp: 1747545411647 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.0-py313hefb8edb_0.conda - sha256: b2d8af00021061b43fc43f24ad7f135ff3641bc642e25dab0a175126facb749b - md5: 34a477d1a0c5396c6d82d6f7765ca339 - depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6646194 - timestamp: 1749431079208 + size: 7731591 + timestamp: 1751342842248 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda sha256: 2b0081eedda950026080f5e93fba915f73e75cf0c1c8e483a08cde82b3cf0a27 md5: f11fc3fd4a1d4615cc84e50046c661ed @@ -15609,24 +13256,11 @@ packages: - numpy - python >=3.9 license: BSD-2-Clause + license_family: BSD purls: - pkg:pypi/numpy-groupies?source=hash-mapping size: 38384 timestamp: 1747937493897 -- conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_1.conda - sha256: d836860163b027622cb59b96b92824dd75196a37d599e8ae69733b31769989a9 - md5: 5af206d64d18d6c8dfb3122b4d9e643b - depends: - - python >=3.9 - - sphinx >=6 - - tabulate >=0.8.10 - - tomli >=1.1.0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/numpydoc?source=hash-mapping - size: 58041 - timestamp: 1733650959971 - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda sha256: 9e1f3dda737ac9aeec3c245c5d856d0268c4f64a5293c094298d74bb55e2b165 md5: 66f9ba52d846feffa1c5d62522324b4f @@ -15636,10 +13270,81 @@ packages: - tomli >=1.1.0 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/numpydoc?source=hash-mapping size: 60220 timestamp: 1750861325361 +- pypi: https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl + name: nvidia-cublas-cu12 + version: 12.9.1.4 + sha256: 453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl + name: nvidia-cuda-cupti-cu12 + version: 12.9.79 + sha256: 096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/25/48/b54a06168a2190572a312bfe4ce443687773eb61367ced31e064953dd2f7/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + name: nvidia-cuda-nvcc-cu12 + version: 12.9.86 + sha256: 5d6a0d32fdc7ea39917c20065614ae93add6f577d840233237ff08e9a38f58f0 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + name: nvidia-cuda-nvrtc-cu12 + version: 12.9.86 + sha256: 210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: nvidia-cuda-runtime-cu12 + version: 12.9.79 + sha256: 25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl + name: nvidia-cudnn-cu12 + version: 9.10.2.21 + sha256: 949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8 + requires_dist: + - nvidia-cublas-cu12 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: nvidia-cufft-cu12 + version: 11.4.1.4 + sha256: c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28 + requires_dist: + - nvidia-nvjitlink-cu12 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl + name: nvidia-cusolver-cu12 + version: 11.7.5.82 + sha256: 15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88 + requires_dist: + - nvidia-cublas-cu12 + - nvidia-nvjitlink-cu12 + - nvidia-cusparse-cu12 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: nvidia-cusparse-cu12 + version: 12.5.10.65 + sha256: 73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78 + requires_dist: + - nvidia-nvjitlink-cu12 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: nvidia-nccl-cu12 + version: 2.27.5 + sha256: ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + name: nvidia-nvjitlink-cu12 + version: 12.9.86 + sha256: e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9 + requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/bf/f9/dcb91a671d5643ca132e4c8377982ab5c2cadc3a60957e08e30d678bfb81/nvidia_nvshmem_cu12-3.3.9-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: nvidia-nvshmem-cu12 + version: 3.3.9 + sha256: 95ba1e98189c056eb5372bd355ab714b3741a03e6de1e32f167f5240fd967c5f + requires_python: '>=3' - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda sha256: d9b392d1d7e5829f1972b94035c68a23e84b1d2067eeeee8e456d331dc1b8cfb md5: 7d777fcd827bbd67fd1b8b01b7f8f333 @@ -15811,18 +13516,6 @@ packages: - pkg:pypi/openpyxl?source=hash-mapping size: 483476 timestamp: 1725461014622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 - md5: de356753cfdbffcde5bb1e86e3aa6cd0 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 3117410 - timestamp: 1746223723843 - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda sha256: 942347492164190559e995930adcdf84e2fea05307ec8012c02a505f5be87462 md5: c87df2ab1448ba69169652ab9547082d @@ -15835,17 +13528,6 @@ packages: purls: [] size: 3131002 timestamp: 1751390382076 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - sha256: bcac94cb82a458b4e3164da8d9bced08cc8c3da2bc3bd7330711a3689c1464a5 - md5: 919faa07b9647beb99a0e7404596a465 - depends: - - __osx >=10.13 - - ca-certificates - license: Apache-2.0 - license_family: Apache - purls: [] - size: 2739181 - timestamp: 1746224401118 - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda sha256: d5dc7da2ef7502a14f88443675c4894db336592ac7b9ae0517e1339ebb94f38a md5: f1ac2dbc36ce2017bd8f471960b1261d @@ -15857,17 +13539,6 @@ packages: purls: [] size: 2744123 timestamp: 1751391059798 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - sha256: 73d366c1597a10bcd5f3604b5f0734b31c23225536e03782c6a13f9be9d01bff - md5: 5c7aef00ef60738a14e0e612cfc5bcde - depends: - - __osx >=11.0 - - ca-certificates - license: Apache-2.0 - license_family: Apache - purls: [] - size: 3064197 - timestamp: 1746223530698 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda sha256: f94fde0f096fa79794c8aa0a2665630bbf9026cc6438e8253f6555fc7281e5a8 md5: a8ac77e7c7e58d43fa34d60bd4361062 @@ -15879,19 +13550,6 @@ packages: purls: [] size: 3071649 timestamp: 1751390309393 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - sha256: 02846553d2a4c9bde850c60824d0f02803eb9c9b674d5c1a8cce25bc387e748f - md5: 72c07e46b6766bb057018a9a74861b89 - depends: - - ca-certificates - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: [] - size: 9025176 - timestamp: 1746227349882 - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda sha256: 2b2eb73b0661ff1aed55576a3d38614852b5d857c2fa9205ac115820c523306c md5: d124fc2fd7070177b5e2450627f8fc1a @@ -15910,17 +13568,6 @@ packages: version: 3.4.0 sha256: 69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda - sha256: af71aabb2bfa4b2c89b7b06403e5cec23b418452cae9f9772bd7ac3f9ea1ff44 - md5: 52919815cd35c4e1a0298af658ccda04 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/opt-einsum?source=hash-mapping - size: 62479 - timestamp: 1733688053334 - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl name: optree version: 0.16.0 @@ -16386,323 +14033,323 @@ packages: - pkg:pypi/packaging?source=compressed-mapping size: 62477 timestamp: 1745345660407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py311h7db5c69_0.conda - sha256: 402602238308e04062e599b2df0984ed77beca8f9fe49cc78559cc716d816e2d - md5: 805040d254f51cb15df55eff6e213d09 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py311hed34c8f_0.conda + sha256: f9b19ac8eb0ac934ebf3eb84a1ac65099f3e2a62471cec13345243d848226ef7 + md5: 70b40d25020d03cc61ad9f1a76b90a7d depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 + - libgcc >=14 + - libstdcxx >=14 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.11,<3.12.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: - - pyqt5 >=5.15.9 - - beautifulsoup4 >=4.11.2 - - odfpy >=1.4.1 - - s3fs >=2022.11.0 - lxml >=4.9.2 - - bottleneck >=1.3.6 - - tzdata >=2022.7 - - numba >=0.56.4 - - xarray >=2022.12.0 - - scipy >=1.10.0 - - xlrd >=2.0.1 - - matplotlib >=3.6.3 + - fastparquet >=2022.12.0 - pandas-gbq >=0.19.0 - - zstandard >=0.19.0 - - psycopg2 >=2.9.6 - - sqlalchemy >=2.0.0 - - pyxlsb >=1.0.10 - - python-calamine >=0.1.7 - - tabulate >=0.9.0 - xlsxwriter >=3.0.5 - - openpyxl >=3.1.0 - - blosc >=1.21.3 - - pytables >=3.8.0 - - qtpy >=2.3.0 - - html5lib >=1.1 + - tabulate >=0.9.0 - fsspec >=2022.11.0 + - xlrd >=2.0.1 + - zstandard >=0.19.0 - numexpr >=2.8.4 + - blosc >=1.21.3 + - qtpy >=2.3.0 + - pyqt5 >=5.15.9 + - numba >=0.56.4 - gcsfs >=2022.11.0 - - fastparquet >=2022.12.0 - - pyreadstat >=1.2.0 + - html5lib >=1.1 + - beautifulsoup4 >=4.11.2 - pyarrow >=10.0.1 + - pyxlsb >=1.0.10 + - python-calamine >=0.1.7 + - xarray >=2022.12.0 + - matplotlib >=3.6.3 + - openpyxl >=3.1.0 + - sqlalchemy >=2.0.0 + - odfpy >=1.4.1 + - psycopg2 >=2.9.6 + - pyreadstat >=1.2.0 + - tzdata >=2022.7 + - pytables >=3.8.0 + - s3fs >=2022.11.0 + - scipy >=1.10.0 + - bottleneck >=1.3.6 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 15299103 - timestamp: 1749100113269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py312hf9745cd_0.conda - sha256: 44f5587c1e1a9f0257387dd18735bcf65a67a6089e723302dc7947be09d9affe - md5: ac82ac336dbe61106e21fb2e11704459 + size: 15369643 + timestamp: 1752082224022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py312hf79963d_0.conda + sha256: 6ec86b1da8432059707114270b9a45d767dac97c4910ba82b1f4fa6f74e077c8 + md5: 7c73e62e62e5864b8418440e2a2cc246 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 + - libgcc >=14 + - libstdcxx >=14 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - bottleneck >=1.3.6 - - blosc >=1.21.3 - - numba >=0.56.4 - - pyqt5 >=5.15.9 - - pyarrow >=10.0.1 - - gcsfs >=2022.11.0 - - xlsxwriter >=3.0.5 - - scipy >=1.10.0 - - beautifulsoup4 >=4.11.2 - - numexpr >=2.8.4 + - html5lib >=1.1 - fastparquet >=2022.12.0 - - lxml >=4.9.2 - - xlrd >=2.0.1 - - openpyxl >=3.1.0 - - qtpy >=2.3.0 - - s3fs >=2022.11.0 - - pandas-gbq >=0.19.0 - - pytables >=3.8.0 - - python-calamine >=0.1.7 - - fsspec >=2022.11.0 - - psycopg2 >=2.9.6 - xarray >=2022.12.0 - - matplotlib >=3.6.3 + - pyqt5 >=5.15.9 - pyxlsb >=1.0.10 - - tabulate >=0.9.0 + - matplotlib >=3.6.3 + - numba >=0.56.4 - odfpy >=1.4.1 + - bottleneck >=1.3.6 + - tabulate >=0.9.0 + - scipy >=1.10.0 - pyreadstat >=1.2.0 - - html5lib >=1.1 + - pandas-gbq >=0.19.0 + - openpyxl >=3.1.0 + - xlrd >=2.0.1 + - pyarrow >=10.0.1 + - xlsxwriter >=3.0.5 + - python-calamine >=0.1.7 + - gcsfs >=2022.11.0 - zstandard >=0.19.0 - - sqlalchemy >=2.0.0 + - fsspec >=2022.11.0 + - lxml >=4.9.2 + - s3fs >=2022.11.0 + - numexpr >=2.8.4 + - psycopg2 >=2.9.6 + - qtpy >=2.3.0 + - pytables >=3.8.0 - tzdata >=2022.7 + - sqlalchemy >=2.0.0 + - beautifulsoup4 >=4.11.2 + - blosc >=1.21.3 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14958450 - timestamp: 1749100123120 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.0-py313ha87cce1_0.conda - sha256: c4a6e9bc13454c5afd17600c2ee2b6b07fee8b2629cb1c193c22c048faa9bdcc - md5: 8664b4fa9b5b23b0d1cdc55c7195fcfe + size: 15092371 + timestamp: 1752082221274 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py313h08cd8bf_0.conda + sha256: e7331b169835d8f22d7fc7dfa16c075de8a2e95245b89623097017a9cb87d623 + md5: 0b23bc9b44d838b88f3ec8ab780113f1 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.21,<3 + - libgcc >=14 + - libstdcxx >=14 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.13,<3.14.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.13.* *_cp313 - pytz >=2020.1 constrains: + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - blosc >=1.21.3 + - numexpr >=2.8.4 + - s3fs >=2022.11.0 - zstandard >=0.19.0 - - sqlalchemy >=2.0.0 - - pyqt5 >=5.15.9 - pyxlsb >=1.0.10 - qtpy >=2.3.0 - - odfpy >=1.4.1 + - xlrd >=2.0.1 + - numba >=0.56.4 + - matplotlib >=3.6.3 + - fastparquet >=2022.12.0 - python-calamine >=0.1.7 - - pytables >=3.8.0 - - numexpr >=2.8.4 - - s3fs >=2022.11.0 + - bottleneck >=1.3.6 - html5lib >=1.1 - - pyarrow >=10.0.1 - - xarray >=2022.12.0 + - odfpy >=1.4.1 + - pytables >=3.8.0 + - fsspec >=2022.11.0 + - pyreadstat >=1.2.0 - lxml >=4.9.2 + - sqlalchemy >=2.0.0 - openpyxl >=3.1.0 - - fastparquet >=2022.12.0 - - fsspec >=2022.11.0 - - matplotlib >=3.6.3 - - scipy >=1.10.0 - - pandas-gbq >=0.19.0 - - xlsxwriter >=3.0.5 - - blosc >=1.21.3 - - xlrd >=2.0.1 - - bottleneck >=1.3.6 - - numba >=0.56.4 - beautifulsoup4 >=4.11.2 - - pyreadstat >=1.2.0 - tabulate >=0.9.0 - - tzdata >=2022.7 + - xlsxwriter >=3.0.5 + - xarray >=2022.12.0 - gcsfs >=2022.11.0 - - psycopg2 >=2.9.6 - license: BSD-3-Clause + - scipy >=1.10.0 + - pandas-gbq >=0.19.0 + - pyarrow >=10.0.1 + - pyqt5 >=5.15.9 + license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14991000 - timestamp: 1749100101435 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py311hcf53e2f_0.conda - sha256: 9259d581c4e0f0edc8ac47919dfd751d206d0b7ee242c0fa63ddd5b22fdeddb9 - md5: aa02add77b5abd716fbe0aaf0a0da7ee + size: 15120709 + timestamp: 1752082214786 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py311hf4bc098_0.conda + sha256: 7a372f0dd1abc11468fb7ec357279730f37c6ffe6a2272fa0ee45ed95dee39f1 + md5: b574a18f6b0cb48b8ae30506aa1bf2d7 depends: - __osx >=10.13 - - libcxx >=18 - - numpy >=1.19,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.11,<3.12.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: + - xarray >=2022.12.0 + - bottleneck >=1.3.6 + - tzdata >=2022.7 + - pyxlsb >=1.0.10 + - scipy >=1.10.0 + - sqlalchemy >=2.0.0 - pandas-gbq >=0.19.0 + - psycopg2 >=2.9.6 + - beautifulsoup4 >=4.11.2 - blosc >=1.21.3 - - qtpy >=2.3.0 - - html5lib >=1.1 - - pyarrow >=10.0.1 + - odfpy >=1.4.1 + - xlrd >=2.0.1 + - numexpr >=2.8.4 - openpyxl >=3.1.0 - - beautifulsoup4 >=4.11.2 - - pyxlsb >=1.0.10 - - sqlalchemy >=2.0.0 - - matplotlib >=3.6.3 + - fsspec >=2022.11.0 + - tabulate >=0.9.0 + - pyarrow >=10.0.1 - python-calamine >=0.1.7 - - bottleneck >=1.3.6 - - pyreadstat >=1.2.0 - - lxml >=4.9.2 - - odfpy >=1.4.1 - - xlsxwriter >=3.0.5 - - pytables >=3.8.0 - - xarray >=2022.12.0 - gcsfs >=2022.11.0 - - scipy >=1.10.0 - - tzdata >=2022.7 + - pyreadstat >=1.2.0 - zstandard >=0.19.0 - pyqt5 >=5.15.9 - - fsspec >=2022.11.0 + - xlsxwriter >=3.0.5 - numba >=0.56.4 - - s3fs >=2022.11.0 - - numexpr >=2.8.4 - - psycopg2 >=2.9.6 - - tabulate >=0.9.0 - - xlrd >=2.0.1 + - html5lib >=1.1 + - lxml >=4.9.2 + - matplotlib >=3.6.3 - fastparquet >=2022.12.0 + - pytables >=3.8.0 + - qtpy >=2.3.0 + - s3fs >=2022.11.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14526764 - timestamp: 1749100213048 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py312hec45ffd_0.conda - sha256: 67a07b607c9f81fdd90c2aeba55fd53261eda5e155fe907088c31cada8ee0496 - md5: 5aabeb910da8efba6e5128aa7aaf3256 + size: 14567004 + timestamp: 1752082247199 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py312hbf2c5ff_0.conda + sha256: a0c3c20b33e449690d0bcef2f2589d6b8b4ed65498d82bd0935ed735fcf07e3f + md5: b54f2b1bc50bbe54852f0b790313bfe8 depends: - __osx >=10.13 - - libcxx >=18 - - numpy >=1.19,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - pyxlsb >=1.0.10 - - qtpy >=2.3.0 + - fsspec >=2022.11.0 + - scipy >=1.10.0 + - fastparquet >=2022.12.0 - zstandard >=0.19.0 - - tabulate >=0.9.0 - numba >=0.56.4 - - numexpr >=2.8.4 - - odfpy >=1.4.1 - - pytables >=3.8.0 - - tzdata >=2022.7 - - blosc >=1.21.3 - - sqlalchemy >=2.0.0 - - s3fs >=2022.11.0 - - html5lib >=1.1 - - beautifulsoup4 >=4.11.2 - - matplotlib >=3.6.3 - - pandas-gbq >=0.19.0 - - gcsfs >=2022.11.0 - - xlsxwriter >=3.0.5 - - lxml >=4.9.2 - - pyreadstat >=1.2.0 - python-calamine >=0.1.7 - - fsspec >=2022.11.0 - - pyqt5 >=5.15.9 + - pyreadstat >=1.2.0 - psycopg2 >=2.9.6 + - matplotlib >=3.6.3 - xlrd >=2.0.1 - bottleneck >=1.3.6 - - openpyxl >=3.1.0 + - html5lib >=1.1 + - s3fs >=2022.11.0 - pyarrow >=10.0.1 - - fastparquet >=2022.12.0 - - scipy >=1.10.0 + - odfpy >=1.4.1 + - beautifulsoup4 >=4.11.2 + - pyxlsb >=1.0.10 - xarray >=2022.12.0 + - sqlalchemy >=2.0.0 + - pytables >=3.8.0 + - pyqt5 >=5.15.9 + - tabulate >=0.9.0 + - qtpy >=2.3.0 + - blosc >=1.21.3 + - openpyxl >=3.1.0 + - tzdata >=2022.7 + - gcsfs >=2022.11.0 + - xlsxwriter >=3.0.5 + - numexpr >=2.8.4 + - lxml >=4.9.2 + - pandas-gbq >=0.19.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14183743 - timestamp: 1749100129960 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.0-py313h2e7108f_0.conda - sha256: e403af69c29fc477a1857a60a77b7e33063ca07b9c312818a820adcb29ab948e - md5: 54635bd0e921609f8331e07cf6344a90 + size: 14253723 + timestamp: 1752082246640 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda + sha256: c4571cf77d528dcef2c3b2f75c987e6139d1fd2c1e948779afacb26b28d989bf + md5: 3f95c70574b670f1f8e4f28d66aca339 depends: - __osx >=10.13 - - libcxx >=18 - - numpy >=1.21,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.13,<3.14.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.13.* *_cp313 - pytz >=2020.1 constrains: - - xlsxwriter >=3.0.5 + - lxml >=4.9.2 - html5lib >=1.1 + - blosc >=1.21.3 + - sqlalchemy >=2.0.0 + - odfpy >=1.4.1 + - fastparquet >=2022.12.0 + - numba >=0.56.4 - s3fs >=2022.11.0 - - tabulate >=0.9.0 - - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - openpyxl >=3.1.0 + - fsspec >=2022.11.0 + - gcsfs >=2022.11.0 + - matplotlib >=3.6.3 + - pyxlsb >=1.0.10 - beautifulsoup4 >=4.11.2 - - odfpy >=1.4.1 - - xarray >=2022.12.0 - - zstandard >=0.19.0 + - xlsxwriter >=3.0.5 + - qtpy >=2.3.0 + - pyarrow >=10.0.1 - python-calamine >=0.1.7 - - pyreadstat >=1.2.0 + - pytables >=3.8.0 + - scipy >=1.10.0 - xlrd >=2.0.1 - - blosc >=1.21.3 - - fsspec >=2022.11.0 - pyqt5 >=5.15.9 + - bottleneck >=1.3.6 - numexpr >=2.8.4 - - sqlalchemy >=2.0.0 - - scipy >=1.10.0 + - pyreadstat >=1.2.0 + - xarray >=2022.12.0 + - zstandard >=0.19.0 + - tabulate >=0.9.0 - pandas-gbq >=0.19.0 - - openpyxl >=3.1.0 - - pyarrow >=10.0.1 - - qtpy >=2.3.0 - - pytables >=3.8.0 - - tzdata >=2022.7 - - bottleneck >=1.3.6 - - pyxlsb >=1.0.10 - - fastparquet >=2022.12.0 - - numba >=0.56.4 - - lxml >=4.9.2 - - gcsfs >=2022.11.0 - - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14196191 - timestamp: 1749100236221 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py311hca32420_0.conda - sha256: dc90abbeaa1b73b77c47269aec1faac72f2bf71c55e6a51a523ac92b53f09a53 - md5: ea3aa0995e65698bd1d59999c1482d15 + size: 14260153 + timestamp: 1752082247312 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py311hff7e5bb_0.conda + sha256: b49a99663fa1cefbd6833ad96f5540486b5bba2a7896c786e3c5e7e701dd8903 + md5: 428db6a596a76367ce13eb63f9ecd4b5 depends: - __osx >=11.0 - - libcxx >=18 - - numpy >=1.19,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python-dateutil >=2.8.2 @@ -16710,51 +14357,51 @@ packages: - python_abi 3.11.* *_cp311 - pytz >=2020.1 constrains: + - numba >=0.56.4 - html5lib >=1.1 - - tabulate >=0.9.0 - - bottleneck >=1.3.6 - - fsspec >=2022.11.0 - - beautifulsoup4 >=4.11.2 - - pytables >=3.8.0 - - gcsfs >=2022.11.0 + - sqlalchemy >=2.0.0 - scipy >=1.10.0 + - xlrd >=2.0.1 + - gcsfs >=2022.11.0 + - fastparquet >=2022.12.0 + - pytables >=3.8.0 + - s3fs >=2022.11.0 + - pyqt5 >=5.15.9 + - xlsxwriter >=3.0.5 + - tabulate >=0.9.0 + - blosc >=1.21.3 + - odfpy >=1.4.1 + - pandas-gbq >=0.19.0 + - qtpy >=2.3.0 + - lxml >=4.9.2 + - pyarrow >=10.0.1 - python-calamine >=0.1.7 - - numba >=0.56.4 - - numexpr >=2.8.4 + - tzdata >=2022.7 - psycopg2 >=2.9.6 - - lxml >=4.9.2 - - pyxlsb >=1.0.10 - - sqlalchemy >=2.0.0 - - fastparquet >=2022.12.0 + - numexpr >=2.8.4 - xarray >=2022.12.0 + - fsspec >=2022.11.0 + - pyreadstat >=1.2.0 - zstandard >=0.19.0 + - bottleneck >=1.3.6 - matplotlib >=3.6.3 - - odfpy >=1.4.1 + - beautifulsoup4 >=4.11.2 + - pyxlsb >=1.0.10 - openpyxl >=3.1.0 - - xlsxwriter >=3.0.5 - - tzdata >=2022.7 - - pyreadstat >=1.2.0 - - pyqt5 >=5.15.9 - - s3fs >=2022.11.0 - - blosc >=1.21.3 - - pyarrow >=10.0.1 - - pandas-gbq >=0.19.0 - - xlrd >=2.0.1 - - qtpy >=2.3.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14290986 - timestamp: 1749100100341 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py312hcb1e3ce_0.conda - sha256: 3105a94036f37429ed292763d3034008fd0b4911bd565bdf86c33e898655dcdf - md5: d95b29a40430115d6aa817f70be5b5b1 + size: 14364425 + timestamp: 1752082703458 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py312h98f7732_0.conda + sha256: f4f98436dde01309935102de2ded045bb5500b42fb30a3bf8751b15affee4242 + md5: d3775e9b27579a0e96150ce28a2542bd depends: - __osx >=11.0 - - libcxx >=18 - - numpy >=1.19,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python-dateutil >=2.8.2 @@ -16762,51 +14409,51 @@ packages: - python_abi 3.12.* *_cp312 - pytz >=2020.1 constrains: - - xlrd >=2.0.1 - - pyxlsb >=1.0.10 - - pyreadstat >=1.2.0 - - fsspec >=2022.11.0 - - matplotlib >=3.6.3 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 - s3fs >=2022.11.0 - - pyqt5 >=5.15.9 - - lxml >=4.9.2 - - blosc >=1.21.3 - - tabulate >=0.9.0 + - zstandard >=0.19.0 + - psycopg2 >=2.9.6 - fastparquet >=2022.12.0 - - numba >=0.56.4 - - scipy >=1.10.0 + - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - blosc >=1.21.3 - xlsxwriter >=3.0.5 - - gcsfs >=2022.11.0 - - html5lib >=1.1 + - xarray >=2022.12.0 + - python-calamine >=0.1.7 + - tabulate >=0.9.0 - odfpy >=1.4.1 - - bottleneck >=1.3.6 - numexpr >=2.8.4 + - tzdata >=2022.7 + - scipy >=1.10.0 + - pyreadstat >=1.2.0 - beautifulsoup4 >=4.11.2 - - pyarrow >=10.0.1 - - openpyxl >=3.1.0 - - qtpy >=2.3.0 + - numba >=0.56.4 + - pyqt5 >=5.15.9 - pytables >=3.8.0 - - tzdata >=2022.7 - - zstandard >=0.19.0 - - psycopg2 >=2.9.6 - - xarray >=2022.12.0 - - sqlalchemy >=2.0.0 - - python-calamine >=0.1.7 + - lxml >=4.9.2 + - xlrd >=2.0.1 + - matplotlib >=3.6.3 + - bottleneck >=1.3.6 - pandas-gbq >=0.19.0 + - html5lib >=1.1 + - pyxlsb >=1.0.10 + - sqlalchemy >=2.0.0 + - gcsfs >=2022.11.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14054660 - timestamp: 1749100309197 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.0-py313h668b085_0.conda - sha256: 3e2495cb6bd1ee035cb1cb91dd91df6e8ffc7ff87b1be24570e566327de830f9 - md5: 97e2df3a9bbf80677b74ba80ba461c60 + size: 13991815 + timestamp: 1752082557265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.1-py313hd1f53c0_0.conda + sha256: e580627963dbc525dc78aeeea2877ff095042898edde3902db8528cc333fc99c + md5: 9e56f740327ee1950d448ec59d8492db depends: - __osx >=11.0 - - libcxx >=18 - - numpy >=1.21,<3 + - libcxx >=19 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.13,<3.14.0a0 - python >=3.13,<3.14.0a0 *_cp313 - python-dateutil >=2.8.2 @@ -16814,199 +14461,199 @@ packages: - python_abi 3.13.* *_cp313 - pytz >=2020.1 constrains: - - fastparquet >=2022.12.0 - - html5lib >=1.1 - - python-calamine >=0.1.7 - - lxml >=4.9.2 + - fsspec >=2022.11.0 + - odfpy >=1.4.1 + - tzdata >=2022.7 + - xlsxwriter >=3.0.5 - numba >=0.56.4 - - tabulate >=0.9.0 - - xlrd >=2.0.1 - - psycopg2 >=2.9.6 + - numexpr >=2.8.4 + - gcsfs >=2022.11.0 + - bottleneck >=1.3.6 + - blosc >=1.21.3 + - s3fs >=2022.11.0 - pyxlsb >=1.0.10 - scipy >=1.10.0 - - tzdata >=2022.7 - - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - fastparquet >=2022.12.0 + - sqlalchemy >=2.0.0 - zstandard >=0.19.0 - - matplotlib >=3.6.3 - - bottleneck >=1.3.6 + - python-calamine >=0.1.7 + - lxml >=4.9.2 + - xarray >=2022.12.0 - beautifulsoup4 >=4.11.2 - - pyarrow >=10.0.1 + - xlrd >=2.0.1 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 - pandas-gbq >=0.19.0 - - gcsfs >=2022.11.0 + - openpyxl >=3.1.0 + - pyarrow >=10.0.1 + - html5lib >=1.1 - pyreadstat >=1.2.0 - - xlsxwriter >=3.0.5 - - sqlalchemy >=2.0.0 - pytables >=3.8.0 - - s3fs >=2022.11.0 - - openpyxl >=3.1.0 - - blosc >=1.21.3 - - odfpy >=1.4.1 - - xarray >=2022.12.0 - - numexpr >=2.8.4 + - tabulate >=0.9.0 - pyqt5 >=5.15.9 - - qtpy >=2.3.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14010057 - timestamp: 1749100339950 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py311hcf9f919_0.conda - sha256: b785d7a6d3146b4b9b13d200bb410ba2db31fa69da500e47be8e9f617e34d170 - md5: 5856ab7c6cd759b51b7d80ad0b7b92e7 + size: 14015815 + timestamp: 1752082296385 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py311h11fd7f3_0.conda + sha256: a71e751fafd135a566bf20d67cb61988545538497133b917cd7748e44ad3f08e + md5: 595d58f9969975225f0e944b06954cbe depends: - - numpy >=1.19,<3 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.11,<3.12.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.11.* *_cp311 - pytz >=2020.1 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - pytables >=3.8.0 + - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - odfpy >=1.4.1 + - openpyxl >=3.1.0 + - gcsfs >=2022.11.0 + - matplotlib >=3.6.3 + - tabulate >=0.9.0 - pyreadstat >=1.2.0 - - numexpr >=2.8.4 - - blosc >=1.21.3 - html5lib >=1.1 - - tzdata >=2022.7 - - numba >=0.56.4 - python-calamine >=0.1.7 + - lxml >=4.9.2 + - numba >=0.56.4 - fastparquet >=2022.12.0 - - xlrd >=2.0.1 - - beautifulsoup4 >=4.11.2 - - zstandard >=0.19.0 - - fsspec >=2022.11.0 + - pyxlsb >=1.0.10 + - pyarrow >=10.0.1 + - xarray >=2022.12.0 - xlsxwriter >=3.0.5 + - pytables >=3.8.0 - s3fs >=2022.11.0 - - openpyxl >=3.1.0 - - odfpy >=1.4.1 - - matplotlib >=3.6.3 - - scipy >=1.10.0 - - qtpy >=2.3.0 - - bottleneck >=1.3.6 - - xarray >=2022.12.0 - - lxml >=4.9.2 - - pandas-gbq >=0.19.0 - sqlalchemy >=2.0.0 - - pyarrow >=10.0.1 - - tabulate >=0.9.0 + - blosc >=1.21.3 + - bottleneck >=1.3.6 - psycopg2 >=2.9.6 - - pyxlsb >=1.0.10 - - gcsfs >=2022.11.0 - pyqt5 >=5.15.9 + - beautifulsoup4 >=4.11.2 + - scipy >=1.10.0 + - numexpr >=2.8.4 + - pandas-gbq >=0.19.0 + - tzdata >=2022.7 + - xlrd >=2.0.1 + - zstandard >=0.19.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 14178063 - timestamp: 1749100482385 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py312h72972c8_0.conda - sha256: e4c8a685cfa1334a566b642523c9584d79ba78ed05888c7b7809d9116b6e9e25 - md5: e2ab2d8cc52281c9ebe19451936802eb + size: 14382697 + timestamp: 1752082430329 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py312hc128f0a_0.conda + sha256: 711cf7b3aee4a92614744364ea996500b65fd5a11bceddb1fc03a5fd818b11d3 + md5: 77e4ad6ddb37a0b489746352f8d2275d depends: - - numpy >=1.19,<3 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.12,<3.13.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.12.* *_cp312 - pytz >=2020.1 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - pyarrow >=10.0.1 - - gcsfs >=2022.11.0 - - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - pandas-gbq >=0.19.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - pytables >=3.8.0 + - sqlalchemy >=2.0.0 + - zstandard >=0.19.0 + - odfpy >=1.4.1 + - xarray >=2022.12.0 - lxml >=4.9.2 - - tabulate >=0.9.0 - - openpyxl >=3.1.0 - pyreadstat >=1.2.0 - - xlrd >=2.0.1 - - pyqt5 >=5.15.9 - - pyxlsb >=1.0.10 - - s3fs >=2022.11.0 - - zstandard >=0.19.0 - - numexpr >=2.8.4 - - python-calamine >=0.1.7 - - beautifulsoup4 >=4.11.2 - - fastparquet >=2022.12.0 + - matplotlib >=3.6.3 - bottleneck >=1.3.6 - - xarray >=2022.12.0 + - s3fs >=2022.11.0 - xlsxwriter >=3.0.5 - - sqlalchemy >=2.0.0 - - psycopg2 >=2.9.6 - - matplotlib >=3.6.3 + - pyqt5 >=5.15.9 - blosc >=1.21.3 - - pytables >=3.8.0 - - html5lib >=1.1 + - tabulate >=0.9.0 + - xlrd >=2.0.1 + - psycopg2 >=2.9.6 + - fsspec >=2022.11.0 - numba >=0.56.4 + - pyxlsb >=1.0.10 + - fastparquet >=2022.12.0 - tzdata >=2022.7 - - pandas-gbq >=0.19.0 - - qtpy >=2.3.0 - - scipy >=1.10.0 - - odfpy >=1.4.1 + - pyarrow >=10.0.1 + - openpyxl >=3.1.0 + - html5lib >=1.1 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - python-calamine >=0.1.7 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 13859642 - timestamp: 1749100498003 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.0-py313hf91d08e_0.conda - sha256: 2dac0e788df070dfb12e7f3630386973b0bb9730d04b7f774c519e3f3f1db21f - md5: 06f537fc2102679d5c1567cf2d38391d + size: 13875687 + timestamp: 1752082441874 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.1-py313hc90dcd4_0.conda + sha256: b39c5c5020a374cad19512f4969a3e67186f7bfe67d26945db46c04a92814cb4 + md5: 7f716cab8fd235019f7bf8e29b4e9b56 depends: - - numpy >=1.21,<3 - numpy >=1.22.4 + - numpy >=1.23,<3 - python >=3.13,<3.14.0a0 - python-dateutil >=2.8.2 - python-tzdata >=2022.7 - python_abi 3.13.* *_cp313 - pytz >=2020.1 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - pytables >=3.8.0 - - scipy >=1.10.0 - - xlsxwriter >=3.0.5 - - sqlalchemy >=2.0.0 - - tzdata >=2022.7 - - python-calamine >=0.1.7 - pyqt5 >=5.15.9 - s3fs >=2022.11.0 - - zstandard >=0.19.0 - - qtpy >=2.3.0 - matplotlib >=3.6.3 - - xlrd >=2.0.1 - - odfpy >=1.4.1 - - pyxlsb >=1.0.10 + - numexpr >=2.8.4 + - xarray >=2022.12.0 + - sqlalchemy >=2.0.0 - pandas-gbq >=0.19.0 - - fastparquet >=2022.12.0 - - openpyxl >=3.1.0 - tabulate >=0.9.0 - - gcsfs >=2022.11.0 + - xlsxwriter >=3.0.5 + - scipy >=1.10.0 + - fastparquet >=2022.12.0 - bottleneck >=1.3.6 - - numexpr >=2.8.4 - - pyarrow >=10.0.1 - - beautifulsoup4 >=4.11.2 - - pyreadstat >=1.2.0 + - python-calamine >=0.1.7 - lxml >=4.9.2 - - xarray >=2022.12.0 - - html5lib >=1.1 + - xlrd >=2.0.1 + - pyxlsb >=1.0.10 - numba >=0.56.4 - - fsspec >=2022.11.0 + - qtpy >=2.3.0 + - openpyxl >=3.1.0 + - zstandard >=0.19.0 + - pyreadstat >=1.2.0 - psycopg2 >=2.9.6 + - fsspec >=2022.11.0 + - odfpy >=1.4.1 + - beautifulsoup4 >=4.11.2 - blosc >=1.21.3 + - pytables >=3.8.0 + - pyarrow >=10.0.1 + - html5lib >=1.1 + - tzdata >=2022.7 + - gcsfs >=2022.11.0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/pandas?source=hash-mapping - size: 13929307 - timestamp: 1749100343118 + size: 13924933 + timestamp: 1752082433528 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda sha256: 243c49b34caa9328e9d5f62c98be9eb046be8fee9836854b88d9022ce8013497 md5: db0c1632047d38997559ce2c4741dd91 @@ -17039,37 +14686,17 @@ packages: purls: [] size: 25783551 timestamp: 1748609806484 -- conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f - md5: 457c2c8c08e54905d6954e79cb5b5db9 - depends: - - python !=3.0,!=3.1,!=3.2,!=3.3 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pandocfilters?source=hash-mapping - size: 11627 - timestamp: 1631603397334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - sha256: 9c00bbc8871b9ce00d1a1f0c1a64f76c032cf16a56a28984b9bb59e46af3932d - md5: 21899b96828014270bd24fd266096612 - depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libgcc >=13 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 453100 - timestamp: 1743352484196 +- conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f + md5: 457c2c8c08e54905d6954e79cb5b5db9 + depends: + - python !=3.0,!=3.1,!=3.2,!=3.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandocfilters?source=hash-mapping + size: 11627 + timestamp: 1631603397334 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf md5: 79f71230c069a287efe3a8614069ddf1 @@ -17091,25 +14718,6 @@ packages: purls: [] size: 455420 timestamp: 1751292466873 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - sha256: ff2cc0b201ce1b68a9f38c1dc71dbd26f70eef103089ae4ee26b7e80d336f0ab - md5: 17bcc6d5206e8a1a13cc478a777d79e5 - depends: - - __osx >=10.13 - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 432439 - timestamp: 1743352942656 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda sha256: baab8ebf970fb6006ad26884f75f151316e545c47fb308a1de2dd47ddd0381c5 md5: 8c6316c058884ffda0af1f1272910f94 @@ -17130,25 +14738,6 @@ packages: purls: [] size: 432832 timestamp: 1751292511389 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - sha256: 76e3843f37878629e744ec75d5f3acfc54a7bb23f9970139f4040f93209ef574 - md5: 2e5cef90f7d355790fa96f2459ee648f - depends: - - __osx >=11.0 - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - license: LGPL-2.1-or-later - purls: [] - size: 426212 - timestamp: 1743352728692 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda sha256: 705484ad60adee86cab1aad3d2d8def03a699ece438c864e8ac995f6f66401a6 md5: 7d57f8b4b7acfc75c777bc231f0d31be @@ -17169,27 +14758,6 @@ packages: purls: [] size: 426931 timestamp: 1751292636271 -- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.3-h0c53d3b_1.conda - sha256: ac86897c455349145da6c19daecf50f86af9280f3aa8c2a1d507e3bc04558354 - md5: 463526d86a59a821902c6a5337312005 - depends: - - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.1-or-later - purls: [] - size: 454284 - timestamp: 1743352979658 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda sha256: dcda7e9bedc1c87f51ceef7632a5901e26081a1f74a89799a3e50dbdc801c0bd md5: 452d6d3b409edead3bd90fc6317cd6d4 @@ -17279,12 +14847,12 @@ packages: purls: [] size: 1040584 timestamp: 1745955875845 -- pypi: https://files.pythonhosted.org/packages/86/2f/1f0144b14553ad32a8d0afa38b832c4b117694484c32aef2d939dc96f20a/pdbp-1.7.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl name: pdbp - version: 1.7.0 - sha256: 6ad99cb4e9f2fc1a5b4ef4f2e0acdb28b18b271bf71f6c9f997b652d935caa19 + version: 1.7.1 + sha256: bed0541a34197b00b7ec37b64998eb8bbf4864fcb0b4bc6c439566aa1390e23b requires_dist: - - pygments>=2.19.1 + - pygments>=2.19.2 - tabcompleter>=1.4.0 - colorama>=0.4.6 ; sys_platform == 'win32' requires_python: '>=3.8' @@ -17310,18 +14878,6 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a - md5: d2f1c87d4416d1e7344cf92b1aaee1c4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: MIT - license_family: MIT - purls: [] - size: 398664 - timestamp: 1746011575217 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d md5: 39b4228a867772d610c02e06f939a5b8 @@ -17334,17 +14890,6 @@ packages: purls: [] size: 402222 timestamp: 1749552884791 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 - md5: 808d70603573b87f3427b61501fa376d - depends: - - __osx >=10.13 - - libcxx >=18 - license: MIT - license_family: MIT - purls: [] - size: 341650 - timestamp: 1746011664546 - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 md5: e1e0595633f79ce40f3fba9a337a155b @@ -17356,17 +14901,6 @@ packages: purls: [] size: 345091 timestamp: 1749552991974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b - md5: d098a1cca9d588cd4d258d06a08a454e - depends: - - __osx >=11.0 - - libcxx >=18 - license: MIT - license_family: MIT - purls: [] - size: 213341 - timestamp: 1746011718977 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 md5: 0587a57e200568a71982173c07684423 @@ -17378,18 +14912,6 @@ packages: purls: [] size: 214660 timestamp: 1749553221709 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 - md5: 01617534ef71b5385ebba940a6d6150d - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - purls: [] - size: 472718 - timestamp: 1746016414502 - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e md5: 2566a45fb15e2f540eff14261f1242af @@ -17491,17 +15013,6 @@ packages: - pkg:pypi/pre-commit?source=hash-mapping size: 195854 timestamp: 1742475656293 -- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.0-pyhd8ed1ab_0.conda - sha256: 31d2fbd381d6ecc9f01d106da5e095104b235917a0b3c342887ee66ca0e85025 - md5: 7bfaef51c8364f6f5096a5a60bb83413 - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/prometheus-client?source=hash-mapping - size: 53514 - timestamp: 1747487319612 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda sha256: 454e2c0ef14accc888dd2cd2e8adb8c6a3a607d2d3c2f93962698b5718e6176d md5: c64b77ccab10b822722904d889fa83b5 @@ -17524,7 +15035,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/prompt-toolkit?source=compressed-mapping + - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271841 timestamp: 1744724188108 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py311h9ecbd09_0.conda @@ -17747,7 +15258,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - purls: [] + purls: + - pkg:pypi/pycparser?source=hash-mapping size: 110100 timestamp: 1733195786147 - conda: https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.16.1-pyhd8ed1ab_0.conda @@ -17768,17 +15280,6 @@ packages: - pkg:pypi/pydata-sphinx-theme?source=hash-mapping size: 1547597 timestamp: 1734446468767 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - purls: - - pkg:pypi/pygments?source=hash-mapping - size: 888600 - timestamp: 1736243563082 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -17970,12 +15471,12 @@ packages: - pkg:pypi/pygraphviz?source=hash-mapping size: 148154 timestamp: 1727646741491 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py311hfbc4093_0.conda - sha256: 7cc9dd5c836631c733173c88187231bfc0438135e0ddf94e866e45b3d10592bd - md5: 3b2f520d27fa7cf9c6c73fb43c69a321 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py311h2f44256_0.conda + sha256: 1124855261a8ddbe89d3d3d9bff81baa367d2f8b8300d0d94bb0db011f34e07c + md5: 9ed5f7f859b030414087e221e6881fe1 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - setuptools @@ -17983,23 +15484,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 489258 - timestamp: 1736891091428 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py312h2365019_0.conda - sha256: 91a27ede294fec129d115f2e0b0ce881f0c12332ee5e9c33ba522c037ad14bbb - md5: 0925c0e6ee32098c461423ea93490b97 - depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - setuptools - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-core?source=hash-mapping - size: 489634 - timestamp: 1736891165910 + size: 486545 + timestamp: 1750207980507 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda sha256: d4376eba59828c0134a439d5c82ee1d7a2dcd4f7c80878859b363865979b3f56 md5: 5cdd230ab8467ca37570cd09a3977e17 @@ -18030,12 +15516,12 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 488220 timestamp: 1750207845515 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py311hab620ed_0.conda - sha256: 7eb9c40a460ea769f024aaf45dae9fde7ca41137ca82154c50c8aead8a32ff88 - md5: cc865b09e7a02328840b163fb8856731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py311hf0763de_0.conda + sha256: ae4d7acab635209c88586849e1023892fc3242b0540567178efc17546eb33586 + md5: bff41faa73404184a27ec3903bc1baf2 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -18044,24 +15530,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-core?source=hash-mapping - size: 480994 - timestamp: 1736891387770 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 - md5: 0726db04477a28c51d1a260afb356b67 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - setuptools - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-core?source=hash-mapping - size: 478921 - timestamp: 1736891272846 + size: 476864 + timestamp: 1750208146293 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_0.conda sha256: d4b1ae7f925720c1a6643c03199c6a47ba6a536bfd630f522baa5fe6ebf4a786 md5: 02247b8a9ba52a15a53edd6d4cf9dac4 @@ -18094,36 +15564,21 @@ packages: - pkg:pypi/pyobjc-core?source=hash-mapping size: 478833 timestamp: 1750208041268 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py311hfbc4093_0.conda - sha256: 94e00e4c9b5c5d8b2374321a0f908b7812b06ac8c9cb99242ddaa4ea0091f0be - md5: d16654f6b3f602bb0acab446c55bcafb +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py311hfbc4093_0.conda + sha256: f8055dedb38952114787e56cf56827108daff2b9c1e340e0fe1e45164eef3825 + md5: 1ea1af1e872c875b1532c6b5c562a0ee depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 385111 - timestamp: 1736927116099 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py312h2365019_0.conda - sha256: 974fc6659f162a6e9cf201e5544f32d5c38d795a1141b327f87be2821dc7bf07 - md5: 2486dd4f176f772531e0ecf22a8b85bd - depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 381786 - timestamp: 1736927108218 + size: 384309 + timestamp: 1750225386024 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda sha256: df309c1fd5a015d92c687200a10661a63955387620f61b1dd17a151d4a6ad4d1 md5: dc83fce82c147af35c199348ce4938a6 @@ -18154,13 +15609,13 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 382930 timestamp: 1750225358268 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py311hab620ed_0.conda - sha256: 33635759c626103696963a4d439f01cc534fe94c318ce5a14c7b9ddbe8dfb78c - md5: 39da4013010bd559600f775ebf6a5915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py311hab620ed_0.conda + sha256: 78d7e37661a41f18190a9b51c74712e69f7fdc2505fb2d5866d1d1843acb98e3 + md5: 1cdf530164d41cf7424e28f39562fe83 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* + - libffi >=3.4.6,<3.5.0a0 + - pyobjc-core 11.1.* - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -18168,24 +15623,8 @@ packages: license_family: MIT purls: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 389214 - timestamp: 1736927161972 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - sha256: 53d099865f8f758029708f4365ee7c9184d9ffcc8fc8210971b723a3936f9c00 - md5: dc263e6e18b32318a43252dbb0596ad4 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pyobjc-core 11.0.* - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping - size: 383608 - timestamp: 1736927118445 + size: 390526 + timestamp: 1750225447749 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312hb9d441b_0.conda sha256: a6f262fe5706c73dce7ca7fbec9a055fc225422ad8d7fc45dd66ad9dddb0afe3 md5: 5b7a58b273bca2c67dd8ddaea92e404e @@ -18254,25 +15693,6 @@ packages: - pkg:pypi/pysocks?source=hash-mapping size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - sha256: 963524de7340c56615583ba7b97a6beb20d5c56a59defb59724dc2a3105169c9 - md5: c3c9316209dec74a705a36797970c6be - depends: - - colorama - - exceptiongroup >=1.0.0rc8 - - iniconfig - - packaging - - pluggy <2,>=1.5 - - python >=3.9 - - tomli >=1 - constrains: - - pytest-faulthandler >=2 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest?source=hash-mapping - size: 259816 - timestamp: 1740946648058 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda sha256: 93e267e4ec35353e81df707938a6527d5eb55c97bf54c3b87229b69523afb59d md5: a49c2283f24696a7b30367b7346a0144 @@ -18293,20 +15713,6 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 276562 timestamp: 1750239526127 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd - md5: 1e35d8f975bc0e984a19819aa91c440a - depends: - - coverage >=7.5 - - pytest >=4.6 - - python >=3.9 - - toml - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-cov?source=hash-mapping - size: 27565 - timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda sha256: 3a9fc07be76bc67aef355b78816b5117bfe686e7d8c6f28b45a1f89afe104761 md5: ce978e1b9ed8b8d49164e90a5cdc94cd @@ -18335,36 +15741,6 @@ packages: - pkg:pypi/pytest-profiling?source=hash-mapping size: 15889 timestamp: 1740145872989 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_1.conda - sha256: fb35da93084d653b86918c200abb2f0b88aceb3b0526c6aaa21b844f565ae237 - md5: 59aad4fb37cabc0bacc73cf344612ddd - depends: - - execnet >=2.1 - - pytest >=7.0.0 - - python >=3.9 - constrains: - - psutil >=3.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-xdist?source=hash-mapping - size: 38147 - timestamp: 1733240891538 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.7.0-pyhd8ed1ab_0.conda - sha256: 3cd4dabfaf17f207011f5c3fdb6068568aa71fea86ecd234a2bd0a6fd6fbc6b9 - md5: 15353a2a0ea6dfefaa52fc5ab5b98f41 - depends: - - execnet >=2.1 - - pytest >=7.0.0 - - python >=3.9 - constrains: - - psutil >=3.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/pytest-xdist?source=hash-mapping - size: 39210 - timestamp: 1748342202415 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda sha256: b7b58a5be090883198411337b99afb6404127809c3d1c9f96e99b59f36177a96 md5: 8375cfbda7c57fbceeda18229be10417 @@ -18380,9 +15756,9 @@ packages: - pkg:pypi/pytest-xdist?source=hash-mapping size: 39300 timestamp: 1751452761594 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.12-h9e4cc4f_0_cpython.conda - sha256: 028a03968eb101a681fa4966b2c52e93c8db1e934861f8d108224f51ba2c1bc9 - md5: b61d4fbf583b8393d9d00ec106ad3658 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.13-h9e4cc4f_0_cpython.conda + sha256: 9979a7d4621049388892489267139f1aa629b10c26601ba5dce96afc2b1551d4 + md5: 8c399445b6dc73eab839659e6c7b5ad1 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -18392,7 +15768,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -18405,35 +15781,8 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 30545496 - timestamp: 1744325586785 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 - md5: a41d26cd4d47092d683915d058380dec - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - libgcc >=13 - - liblzma >=5.8.1,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - purls: [] - size: 31279179 - timestamp: 1744325164633 + size: 30629559 + timestamp: 1749050021812 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d md5: 94206474a5608243a10c92cefbe0908f @@ -18488,16 +15837,16 @@ packages: size: 33273132 timestamp: 1750064035176 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.12-h9ccd52b_0_cpython.conda - sha256: fcd4b8a9a206940321d1d6569ddac2e99f359f0d5864e48140374a85aed5c27f - md5: cfa36957cba60dca8e79a974d09b6a2c +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.13-h9ccd52b_0_cpython.conda + sha256: d8e15db837c10242658979bc475298059bd6615524f2f71365ab8e54fbfea43c + md5: 6e28c31688c6f1fdea3dc3d48d33e1c0 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -18508,30 +15857,8 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15467842 - timestamp: 1744324543915 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 - md5: 597c4102c97504ede5297d06fb763951 - depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - purls: [] - size: 13783219 - timestamp: 1744324415187 + size: 15423460 + timestamp: 1749049420299 - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b md5: 06049132ecd09d0c1dc3d54d93cf1d5d @@ -18578,16 +15905,16 @@ packages: size: 13955531 timestamp: 1750063132430 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.12-hc22306f_0_cpython.conda - sha256: ea91eb5bc7160cbc6f8110702f9250c87e378ff1dc83ab8daa8ae7832fb5d0de - md5: 6ab5f6a9e85f1b1848b6518e7eea63ee +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.13-hc22306f_0_cpython.conda + sha256: 2c966293ef9e97e66b55747c7a97bc95ba0311ac1cf0d04be4a51aafac60dcb1 + md5: 95facc4683b7b3b9cf8ae0ed10f30dce depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -18598,30 +15925,8 @@ packages: - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 13584762 - timestamp: 1744323773319 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e - md5: c88f1a7e1e7b917d9c139f03b0960fea - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - purls: [] - size: 12932743 - timestamp: 1744323815320 + size: 14573820 + timestamp: 1749048947732 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda sha256: cde8b944c2dc378a5afbc48028d0843583fd215493d5885a80f1b41de085552f md5: 9207ebad7cfbe2a4af0702c92fd031c4 @@ -18667,38 +15972,16 @@ packages: purls: [] size: 12931515 timestamp: 1750062475020 - python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.12-h3f84c4b_0_cpython.conda - sha256: 41e1c07eecff9436b9bb27724822229b2da6073af8461ede6c81b508c0677c56 - md5: c1f91331274f591340e2f50e737dfbe9 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.0,<4.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - python_abi 3.11.* *_cp311 - license: Python-2.0 - purls: [] - size: 18299489 - timestamp: 1744323460367 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - sha256: a791fa8f5ce68ab00543ecd3798bfa573db327902ccd5cb7598fd7e94ea194d3 - md5: 495e849ebc04562381539d25cf303a9f + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.13-h3f84c4b_0_cpython.conda + sha256: 723dbca1384f30bd2070f77dd83eefd0e8d7e4dda96ac3332fbf8fe5573a8abb + md5: bedbb6f7bb654839719cd528f9b298ad depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -18707,11 +15990,11 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - python_abi 3.12.* *_cp312 + - python_abi 3.11.* *_cp311 license: Python-2.0 purls: [] - size: 15941050 - timestamp: 1744323489788 + size: 18242669 + timestamp: 1749048351218 - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e md5: 6aa5e62df29efa6319542ae5025f4376 @@ -18766,22 +16049,11 @@ packages: - six >=1.5 - python license: Apache-2.0 + license_family: APACHE purls: - pkg:pypi/python-dateutil?source=hash-mapping size: 233310 timestamp: 1751104122689 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e - depends: - - python >=3.9 - - six >=1.5 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/python-dateutil?source=hash-mapping - size: 222505 - timestamp: 1733215763718 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c @@ -18859,51 +16131,57 @@ packages: - pkg:pypi/pytz?source=hash-mapping size: 189015 timestamp: 1742920947249 -- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py311hda3d55a_3.conda - sha256: 78a4ede098bbc122a3dff4e0e27255e30b236101818e8f499779c89670c58cd6 - md5: 1bc10dbe3b8d03071070c962a2bdf65f +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py311hefeebc8_0.conda + sha256: 2c215bb8f88d6c99050718e7acbaefa694609614a8d27f850b9e38394ee7fa54 + md5: 7b385a7ffbace41a3c9f723e2474ac33 depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 license: PSF-2.0 - license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping - size: 6023110 - timestamp: 1728636767562 -- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py312h275cf98_3.conda - sha256: 68f8781b83942b91dbc0df883f9edfd1a54a1e645ae2a97c48203ff6c2919de3 - md5: 1747fbbdece8ab4358b584698b19c44d + size: 6729300 + timestamp: 1752564079266 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py312h829343e_0.conda + sha256: 92d839c037f7aae1657528a9a71c686692251d41ee002132f96a05c923831844 + md5: e9c66e89c71bac06654d9215534e9b83 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 license: PSF-2.0 - license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping - size: 6032183 - timestamp: 1728636767192 -- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - sha256: 0a68b324ea47ae720c62522c5d0bb5ea3e4987e1c5870d6490c7f954fbe14cbe - md5: 7113bd6cfe34e80d8211f7c019d14357 + size: 6684177 + timestamp: 1752564075617 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda + sha256: b4f2d91fa6f291d8ea1eff17113c4d2774c796d14b330aeca0e42434c2dcbf88 + md5: c087068c22d8c7041174ea8c9e25cb26 depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 license: PSF-2.0 - license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping - size: 6060096 - timestamp: 1728636763526 + size: 6694986 + timestamp: 1752564076579 - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda sha256: fbf3e3f2d5596e755bd4b83b5007fa629b184349781f46e137a4e80b6754c7c0 md5: 8a142e0fcd43513c2e876d97ba98c0fa @@ -19132,9 +16410,9 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 182783 timestamp: 1737455202579 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda - sha256: e78fc8c500b96070359311082b4ebc5d66e52ddb2891861c728a247cf52892ba - md5: eb719a63f26215bba3ee5b0227c6452b +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda + sha256: 1bf06369b9c22caf69351aecef3aed2282ba5224338aa6a8316dc5754f3f9a85 + md5: 43618006ed69ec49e144206b34ab93e6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -19147,25 +16425,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 390342 - timestamp: 1743831429166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - sha256: 65a264837f189b0c69c5431ea8ef44e405c472fedba145b05055f284f08bc663 - md5: fa0ab7d5bee9efbc370e71bcb5da9856 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libsodium >=1.0.20,<1.0.21.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 379554 - timestamp: 1743831426292 + size: 391376 + timestamp: 1749898590440 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda sha256: 8564a7beb906476813a59a81a814d00e8f9697c155488dbc59a5c6e950d5f276 md5: 4b9a9cda3292668831cf47257ade22a6 @@ -19200,9 +16461,9 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 384549 timestamp: 1749898593849 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py311hb21797c_0.conda - sha256: 9577a68dd2702b0ed969b79e92702935f1d0dc00368375b1da94003cdd12cdb8 - md5: 3aeb333ef7ca17c4294ccf2a6ae49438 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda + sha256: fa4a587bde9a77eec7d9eaaed98946c51e26b7fd48c7faa52e79e0d8c5d325b1 + md5: 784c983706654c4d3571ace6aa22287d depends: - __osx >=10.13 - libcxx >=18 @@ -19214,24 +16475,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 369941 - timestamp: 1743831465910 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py312h679dbab_0.conda - sha256: 9e89fab2c70a47298e72429b70cbf233d69f16f92c7dcad3b60db2e22afea00d - md5: 7c068120e36588fefecf8e91b1b3ae38 - depends: - - __osx >=10.13 - - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 365060 - timestamp: 1743831517482 + size: 368679 + timestamp: 1749898684495 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda sha256: 6a488eea1e0661e3b96634a254bf82f497ef800b0051510fcaea6d22c0dacd17 md5: e5af6563b9fceeee0cba3b1863682a5f @@ -19264,9 +16509,9 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 369843 timestamp: 1749898684229 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py311h01f2145_0.conda - sha256: 5f50272cbe00701a79d3b5f3aa14808b6f8b80a3ea636f99f4746f109f02030d - md5: 461e2af0a7a77162309bda6f92a1a66c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda + sha256: 44e2bd871b2a0e122ffbda49cd8545ba1b08eaa90927d245ab59d45fea3c25f8 + md5: 2f9bf162aa29335b0c16a4a9fa9dad4f depends: - __osx >=11.0 - libcxx >=18 @@ -19279,25 +16524,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 367977 - timestamp: 1743831535027 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py312hf4875e0_0.conda - sha256: b8b41da0aac8aab5e48e62ff341374f12cd0ace7a59b80f56bc75371aa4796d5 - md5: 1e2a85e9493ad7c892ecbca89a11837c - depends: - - __osx >=11.0 - - libcxx >=18 - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zeromq >=4.3.5,<4.4.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 364333 - timestamp: 1743831518152 + size: 365985 + timestamp: 1749898718919 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda sha256: 709c673d5b45774ce003648427103732c834a300447452a3c8369469e2aa6bfd md5: 0ff6afa66b15299c051f57e5ec257e88 @@ -19332,9 +16560,9 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 363932 timestamp: 1749899287142 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py311h484c95c_0.conda - sha256: d917b120cb10b32d90d40fc2b6a612cf75a9298d159e11da3a8672a3474b4f93 - md5: 0497becb33761fca9b8cfcb9f7278361 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py311h484c95c_0.conda + sha256: cc47fc0264c839c9062423406d8c2e4b25360041bb47d33277daeaeab3f88101 + md5: 5ff8a3328db08043afb64b77cdc4b6ea depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.11,<3.12.0a0 @@ -19347,25 +16575,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 372040 - timestamp: 1743831788464 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py312hd7027bb_0.conda - sha256: 07fbf17632c6300e53550f829f2e10d2c6f68923aa139d0618eaeadf2d0043ae - md5: ccfe948627071c03e36aa46d9e94bf12 - depends: - - libsodium >=1.0.20,<1.0.21.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - zeromq >=4.3.5,<4.3.6.0a0 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/pyzmq?source=hash-mapping - size: 363177 - timestamp: 1743831815399 + size: 374069 + timestamp: 1749899010761 - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.0.0-py312hd7027bb_0.conda sha256: e66267a7a61bfba5cdb50089c04a6f140edb9133c5ce34331ee2f95370460b8c md5: 37d6508caaa4c3a91e3434192d192685 @@ -19400,36 +16611,6 @@ packages: - pkg:pypi/pyzmq?source=hash-mapping size: 370348 timestamp: 1749898835643 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.06.26-h9925aae_0.conda - sha256: 7a0b82cb162229e905f500f18e32118ef581e1fd182036f3298510b8e8663134 - md5: 2b4249747a9091608dbff2bd22afde44 - depends: - - libre2-11 2025.06.26 hba17884_0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 27330 - timestamp: 1751053087063 -- conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.06.26-ha5e900a_0.conda - sha256: 362d3172f6074f37688a4aa6f5caa8b46ffb7552887d3dfe7eaef2039aca6441 - md5: 2dc6248cb8249c98bd88c51ff1c86e24 - depends: - - libre2-11 2025.06.26 hfc00f1c_0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 27456 - timestamp: 1751053203733 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.06.26-h6589ca4_0.conda - sha256: d7c4f0144530c829bc9c39d1e17f31242a15f4e91c9d7d0f8dda58ab245988bb - md5: d519f1f98599719494472639406faffb - depends: - - libre2-11 2025.06.26 hd41c47c_0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 27423 - timestamp: 1751053372858 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -19476,23 +16657,6 @@ packages: - pkg:pypi/referencing?source=hash-mapping size: 51668 timestamp: 1737836872415 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.9 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/requests?source=hash-mapping - size: 58723 - timestamp: 1733217126197 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 md5: f6082eae112814f1447b56a5e1f6ed05 @@ -19543,54 +16707,22 @@ packages: - pkg:pypi/roman-numerals-py?source=hash-mapping size: 13348 timestamp: 1740240332327 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py311hdae7d1d_0.conda - sha256: 9654a1c11dda67b2782cad03f2a3793e18dbf5d9dbf5d2fdf86bdac3f2ad8a1d - md5: a82b805c84bca54329510d03656cf57b - depends: - - python - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python_abi 3.11.* *_cp311 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 389113 - timestamp: 1747837968273 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py312h680f630_0.conda - sha256: a5b168b991c23ab6d74679a6f5ad1ed87b98ba6c383b5fe41f5f6b335b10d545 - md5: ea8f79edf890d1f9b2f1bd6fbb11be1e - depends: - - python - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 391950 - timestamp: 1747837859184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.25.1-py313h4b2b08d_0.conda - sha256: 2efdf436726331563221b41413cfa580df960c929f0e75619775cda880d59bd3 - md5: 109d190262b861bb608b7c977c6971ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py311hdae7d1d_0.conda + sha256: 552e826f953f974f20573c8fb061136a24ca0456c73ecf99e0da24c2aed281e8 + md5: 875fcd394b4ea7df4f73827db7674a82 depends: - python - libgcc >=13 - __glibc >=2.17,<3.0.a0 - - python_abi 3.13.* *_cp313 + - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 391302 - timestamp: 1747837838085 + size: 386382 + timestamp: 1751468291209 - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda sha256: bb051358e7550fd8ef9129def61907ad03853604f5e641108b1dbe2ce93247cc md5: 5b251d4dd547d8b5970152bae2cc1600 @@ -19623,9 +16755,9 @@ packages: - pkg:pypi/rpds-py?source=compressed-mapping size: 388125 timestamp: 1751467685278 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py311hd1a56c6_0.conda - sha256: 87bab663373ff8b3461dbc73a963f86d3c4c4b442727c5efe89ba40d1d57e470 - md5: 2071cf0f0fd57946d37b825b227f5b02 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py311hd1a56c6_0.conda + sha256: 9ae364f1540e135adad3a96834a462f7338074afd8b1bdb07a6bb41ac9319c29 + md5: 7aa9ec7634141a54997c0eac369bb4a6 depends: - python - __osx >=10.13 @@ -19636,38 +16768,8 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 378525 - timestamp: 1747837763030 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py312haba3716_0.conda - sha256: 26728fe74ed4a300651ae901b783fb7bddcabc7b27c3db2c62f8b2dfc64d9f01 - md5: d66be2aa77f9a1acd02a5ac59c9f5294 - depends: - - python - - __osx >=10.13 - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 370933 - timestamp: 1747837775787 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.25.1-py313hb35714d_0.conda - sha256: 318f65abb743ee3f80e9b74bf0aee8f69134d9b97c218fc0c3ba8e9b07d8f170 - md5: c99c56b5536b1e367c57acd7a88082f9 - depends: - - python - - __osx >=10.13 - - python_abi 3.13.* *_cp313 - constrains: - - __osx >=10.13 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 370871 - timestamp: 1747837744984 + size: 377527 + timestamp: 1751467148737 - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda sha256: db18ba4141dbe15884b4c561321d79e1f7cd26156273aa50f004a65a6edcf936 md5: 5a007039dde7ef3c00aad0ce02955404 @@ -19698,13 +16800,13 @@ packages: - pkg:pypi/rpds-py?source=compressed-mapping size: 368619 timestamp: 1751467169263 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py311hf245fc6_0.conda - sha256: 8928c4cacc668db0c62dd9a11415319f6fa7f06d01360e5398264941c0ab404d - md5: 3c969fae89e5832566890421a074eb92 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py311hf245fc6_0.conda + sha256: 5a948f9cfa509e109886221ed12a1d52e8449c511282f904727a1e21a4ee727a + md5: dbe0cd513bb08a56153cbd554055e14f depends: - python - - python 3.11.* *_cpython - __osx >=11.0 + - python 3.11.* *_cpython - python_abi 3.11.* *_cp311 constrains: - __osx >=11.0 @@ -19712,40 +16814,8 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 367093 - timestamp: 1747837773204 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py312hd3c0895_0.conda - sha256: 9a2f4a7340a73bc618550738bdf22835325d4ce88a98e26a55e2b5f6e873f306 - md5: 3b50fde83777a12d5bf4511d9baecc98 - depends: - - python - - python 3.12.* *_cpython - - __osx >=11.0 - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 360032 - timestamp: 1747837743255 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.25.1-py313hf3ab51e_0.conda - sha256: 00c61b2054307fb60feaeb1d21515acb6ee917ff73cfc622fef55d4c24a32767 - md5: 1df95fc541f0881e89dc4a52bd53b9ee - depends: - - python - - python 3.13.* *_cp313 - - __osx >=11.0 - - python_abi 3.13.* *_cp313 - constrains: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 360004 - timestamp: 1747837756479 + size: 364202 + timestamp: 1751467159808 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda sha256: b22152ead8e06a489cc6ed03828b884bfccfa085d972a0420179757809d721fd md5: 19681f34a4071b4380a986fc524fe1c4 @@ -19778,60 +16848,24 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 356822 timestamp: 1751467136573 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py311hc4022dc_0.conda - sha256: 3a76edb8f446351f36eb43a215e0df0b444f73b0f22453c0966611653b05c06f - md5: 9cbe2af742a0fa8387caef089682a92f +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py311hf51aa87_0.conda + sha256: 100b94d884fe06a7d97ad6ddcefa4a125fa86a8d65f0144fe19526e372fef789 + md5: fde2d272a1f0659b7c0cc8b6465976b9 depends: - python - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 249938 - timestamp: 1747837737577 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py312h8422cdd_0.conda - sha256: dfea71a35d7d5eb348893e24136ce6fb1004fc9402eaafae441fa61887638764 - md5: 30d51df2ebcc324cce80fa6a317df920 - depends: - - python - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 252939 - timestamp: 1747837730306 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.25.1-py313ha8a9a3c_0.conda - sha256: f9a4e4e57fb6b6f82a70f533edc5b2be1084770b6cd99913713ab856886da7d9 - md5: 16d91b61a62fa344b9c1200b13925fbd - depends: - - python - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - ucrt >=10.0.20348.0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - purls: - - pkg:pypi/rpds-py?source=hash-mapping - size: 252641 - timestamp: 1747837734433 + size: 249152 + timestamp: 1751467083817 - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda sha256: 665d771c3d4a028dc49c45e47634ef3adac80500ed6206ba6837885f02b0947f md5: 353d4c6bd46906805189af9a7394b0d1 @@ -19865,13 +16899,101 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=compressed-mapping + - pkg:pypi/rpds-py?source=hash-mapping size: 250938 timestamp: 1751467095409 -- pypi: https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: scipy + version: 1.16.0 + sha256: 1d8747f7736accd39289943f7fe53a8333be7f15a82eea08e4afe47d79568c32 + requires_dist: + - numpy>=1.25.2,<2.6 + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - mypy==1.10.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.0.292 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + - rich-click ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' + - pydevtool ; extra == 'dev' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl name: scipy version: 1.16.0 - sha256: adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49 + sha256: bbba55fb97ba3cdef9b1ee973f06b09d518c0c7c66a009c729c7d1592be1935e + requires_dist: + - numpy>=1.25.2,<2.6 + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - mypy==1.10.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.0.292 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + - rich-click ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' + - pydevtool ; extra == 'dev' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl + name: scipy + version: 1.16.0 + sha256: 79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe requires_dist: - numpy>=1.25.2,<2.6 - pytest ; extra == 'test' @@ -19912,76 +17034,6 @@ packages: - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.11' -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.16.0-py312hf734454_0.conda - sha256: 8406e26bf853e699b1ea97792f63987808783ff4ab6ddeff9cf1ec0b9d1aa342 - md5: 7513ac56209d27a85ffa1582033f10a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - libgfortran - - libgfortran5 >=13.3.0 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - numpy <2.6 - - numpy >=1.23,<3 - - numpy >=1.25.2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/scipy?source=hash-mapping - size: 16847456 - timestamp: 1751148548291 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.16.0-py312hd0c0319_0.conda - sha256: 4aab814a523927c14062a008fd2c42b91961a6e9d9adc54a18f9b49ffc058caf - md5: 713d61abff10ba1c063cf931ca5bac7d - depends: - - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - libgfortran 5.* - - libgfortran5 >=13.3.0 - - libgfortran5 >=14.2.0 - - liblapack >=3.9.0,<4.0a0 - - numpy <2.6 - - numpy >=1.23,<3 - - numpy >=1.25.2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/scipy?source=hash-mapping - size: 15221024 - timestamp: 1751148523429 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.16.0-py312hcedbd36_0.conda - sha256: d0033c0414910c2bb6005e005e0df266a6c21e1928efec2df3251736245c1258 - md5: b3ab5755feaabeaf889063663790eb25 - depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - libgfortran 5.* - - libgfortran5 >=13.3.0 - - libgfortran5 >=14.2.0 - - liblapack >=3.9.0,<4.0a0 - - numpy <2.6 - - numpy >=1.23,<3 - - numpy >=1.25.2 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - purls: - - pkg:pypi/scipy?source=hash-mapping - size: 13846609 - timestamp: 1751148522848 - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 md5: 938c8de6b9de091997145b3bf25cdbf9 @@ -20020,17 +17072,6 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.8.0-pyhff2d567_0.conda - sha256: 56ce31d15786e1df2f1105076f3650cd7c1892e0afeeb9aa92a08d2551af2e34 - md5: ea075e94dc0106c7212128b6a25bbc4c - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/setuptools?source=hash-mapping - size: 748621 - timestamp: 1747807014292 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 md5: 4de79c071274a53dcaf2a8c749d1499e @@ -20295,17 +17336,6 @@ packages: - pkg:pypi/stack-data?source=hash-mapping size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624 - md5: 460eba7851277ec1fd80a1a24080787a - depends: - - kernel-headers_linux-64 3.10.0 he073ed8_18 - - tzdata - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 - license_family: GPL - purls: [] - size: 15166921 - timestamp: 1735290488259 - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl name: tabcompleter version: 1.4.0 @@ -20313,17 +17343,6 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a - md5: 959484a66b4b76befcddc4fa97c95567 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tabulate?source=hash-mapping - size: 37554 - timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 @@ -20391,17 +17410,6 @@ packages: - pkg:pypi/tinycss2?source=hash-mapping size: 28285 timestamp: 1729802975370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3318875 - timestamp: 1699202167581 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 md5: a0116df4f4ed05c303811a837d5b39d8 @@ -20414,16 +17422,6 @@ packages: purls: [] size: 3285204 timestamp: 1748387766691 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 - md5: bf830ba5afc507c6232d4ef0fb1a882d - depends: - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3270220 - timestamp: 1699202389792 - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc md5: 9864891a6946c2fe037c02fca7392ab4 @@ -20435,16 +17433,6 @@ packages: purls: [] size: 3259809 timestamp: 1748387843735 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b - depends: - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - purls: [] - size: 3145523 - timestamp: 1699202432999 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e md5: 7362396c170252e7b7b0c8fb37fe9c78 @@ -20468,18 +17456,6 @@ packages: purls: [] size: 3466348 timestamp: 1748388121356 -- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 - md5: fc048363eb8f03cd1737600a5d08aafe - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: TCL - license_family: BSD - purls: [] - size: 3503410 - timestamp: 1699202577803 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 md5: b0dd904de08b7db706167240bf37b164 @@ -20502,9 +17478,9 @@ packages: - pkg:pypi/tomli?source=hash-mapping size: 19167 timestamp: 1733256819729 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py311h9ecbd09_0.conda - sha256: d297d5c0cb91627b17d49b4c633d1bb923b8e76a8796edcc6176b0d4379508db - md5: e6aa9d8ca506982ed2a059b3c6057fc3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py311h9ecbd09_0.conda + sha256: 66cc98dbf7aafe11a4cb886a8278a559c1616c098ee9f36d41697eaeb0830a4d + md5: 24e9f474abd101554b7a91313b9dfad6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -20513,23 +17489,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 867280 - timestamp: 1747384567722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5-py312h66e93f0_0.conda - sha256: 4a3bb32e1c59dfc1001ed880702a3f734dfea58e99bd80fe8efa8caf65c3fd1a - md5: 2a91ae5d15666fd76f00835ade9816fd - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - purls: - pkg:pypi/tornado?source=hash-mapping - size: 849653 - timestamp: 1747384561578 + size: 869342 + timestamp: 1748003427256 - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 md5: c532a6ee766bed75c4fa0c39e959d132 @@ -20558,9 +17520,9 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 873269 timestamp: 1748003477089 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py311h4d7f069_0.conda - sha256: 5923cc6ffbef6da367c30d63d82e6f751b9503d5eef6d6488e92eab6d907a476 - md5: 5776f9693ac1c592a26a2b8fb7220e4d +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py311h4d7f069_0.conda + sha256: 60a04246a108ebd17dc12062cc4cd2b8a136788119c4ad2504239f5f5387b0b6 + md5: ce6eeb4f8a9e5621a97351345fc45102 depends: - __osx >=10.13 - python >=3.11,<3.12.0a0 @@ -20569,21 +17531,8 @@ packages: license_family: Apache purls: - pkg:pypi/tornado?source=hash-mapping - size: 869019 - timestamp: 1747384732145 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5-py312h01d7ebd_0.conda - sha256: 7ee3fc14d22d24d65656dd13e893d8954e84be2f4bdfb94fdeb298fdccf0a3af - md5: 31d9b2888fc8d9757457176056ea7025 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - purls: - - pkg:pypi/tornado?source=hash-mapping - size: 849286 - timestamp: 1747384668864 + size: 869842 + timestamp: 1748003575841 - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda sha256: 6e97d6785c466ddd0fe3dad3aa54db6434824bcab40f7490e90943018560bf67 md5: 62b3f3d78cb285b2090024e2a1e795f7 @@ -20610,9 +17559,9 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 874905 timestamp: 1748003585372 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py311h917b07b_0.conda - sha256: 675c378b691d33a09f70ff684493c2395821c0d2934b37bea8ad9f260461a048 - md5: ff86e96e324c0e08a55aee1111d93582 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py311h917b07b_0.conda + sha256: 640183a5955f373f86f56193dbd0f289d98cdf8e19f37284ac52e8fd37ea2632 + md5: 8b0ba58f117a8e1754f87b4c69818d21 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -20621,23 +17570,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 867849 - timestamp: 1747384810805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5-py312hea69d52_0.conda - sha256: 763ab5fbc08e4f025a8fd2020f57b6c299c2839dd3f1fa19f997eb3a2e10b319 - md5: d804565fc1c83e368c7bfd8beb17c627 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - purls: - pkg:pypi/tornado?source=hash-mapping - size: 849071 - timestamp: 1747384649681 + size: 867366 + timestamp: 1748003598139 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py312hea69d52_0.conda sha256: 02835bf9f49a7c6f73622614be67dc20f9b5c2ce9f663f427150dc0579007daa md5: 375a5a90946ff09cd98b9cf5b833023c @@ -20666,9 +17601,9 @@ packages: - pkg:pypi/tornado?source=hash-mapping size: 874352 timestamp: 1748003547444 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py311he736701_0.conda - sha256: f727706508f0d4e18ae760478ec2488ac83f3df0687bf7a8acbbefae8e7e1a4e - md5: b022fa1dba1d3a72c5695501d017c0c8 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py311he736701_0.conda + sha256: c7b28b96f21fa9cf675b051fe3039682038debf69ab8a3aa25cfdf3fa4aa9f8e + md5: 3b58e6c2e18a83cf64ecc550513b940c depends: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 @@ -20678,24 +17613,9 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping - size: 870561 - timestamp: 1747384847474 -- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5-py312h4389bb4_0.conda - sha256: 289c367de4e4ab4b24204c06171415581dcb6637a10635107e35d808df9fa195 - md5: 591190f2c78d8d6a8466e7aa6bb9f68a - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - purls: - pkg:pypi/tornado?source=hash-mapping - size: 853373 - timestamp: 1747384811468 + size: 869036 + timestamp: 1748003680143 - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.1-py312h4389bb4_0.conda sha256: cec4ab331788122f7f01dd02f57f8e21d9ae14553dedd6389d7dfeceb3592399 md5: 06b156bbbe1597eb5ea30b931cadaa32 @@ -20737,16 +17657,6 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250516-pyhd8ed1ab_0.conda - sha256: 0fb78e97cad71ebf911958bf97777ec958a64a4621615a4dcc3ffb52cda7c6d0 - md5: e3465397ca4b5b60ba9fbc92ef0672f9 - depends: - - python >=3.9 - license: Apache-2.0 AND MIT - purls: - - pkg:pypi/types-python-dateutil?source=hash-mapping - size: 22634 - timestamp: 1747417327584 - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda sha256: 843bbc8e763a96b2b4ea568cf7918b6027853d03b5d8810ab77aaa9af472a6e2 md5: b6d4c200582ead6427f49a189e2c6d65 @@ -20767,59 +17677,16 @@ packages: version: 6.0.12.20250516 sha256: 8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530 requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 - md5: 568ed1300869dca0ba09fb750cda5dbb - depends: - - typing_extensions ==4.13.2 pyh29332c3_0 - license: PSF-2.0 - license_family: PSF - purls: [] - size: 89900 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda - sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 - md5: a1cdd40fc962e2f7944bc19e01c7e584 - depends: - - typing_extensions ==4.14.0 pyhe01879c_0 - license: PSF-2.0 - license_family: PSF - purls: [] - size: 90310 - timestamp: 1748959427551 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda sha256: 349951278fa8d0860ec6b61fcdc1e6f604e6fce74fabf73af2e39a37979d0223 md5: 75be1a943e0a7f99fcf118309092c635 depends: - typing_extensions ==4.14.1 pyhe01879c_0 license: PSF-2.0 + license_family: PSF purls: [] size: 90486 timestamp: 1751643513473 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 - md5: 83fc6ae00127671e301c9f44254c31b8 - depends: - - python >=3.9 - - python - license: PSF-2.0 - license_family: PSF - purls: - - pkg:pypi/typing-extensions?source=compressed-mapping - size: 52189 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c - md5: 2adcd9bb86f656d3d43bf84af59a1faf - depends: - - python >=3.9 - - python - license: PSF-2.0 - license_family: PSF - purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 50978 - timestamp: 1748959427551 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda sha256: 4f52390e331ea8b9019b87effaebc4f80c6466d09f68453f52d5cdc2a3e1194f md5: e523f4f1e980ed7a4240d7e27e9ec81f @@ -20827,6 +17694,7 @@ packages: - python >=3.9 - python license: PSF-2.0 + license_family: PSF purls: - pkg:pypi/typing-extensions?source=hash-mapping size: 51065 @@ -21058,21 +17926,6 @@ packages: - pkg:pypi/uri-template?source=hash-mapping size: 23990 timestamp: 1733323714454 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c - md5: c1e349028e0052c4eea844e94f773065 - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 - license: MIT - license_family: MIT - purls: - - pkg:pypi/urllib3?source=hash-mapping - size: 100791 - timestamp: 1744323705540 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 md5: 436c165519e140cb08d246a4472a9d6a @@ -21088,18 +17941,6 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 101735 timestamp: 1750271478254 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 - md5: d3f0381e38093bde620a8d85f266ae55 - depends: - - vc14_runtime >=14.42.34433 - track_features: - - vc14 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17893 - timestamp: 1743195261486 - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 md5: 18b6bf6f878501547786f7bf8052a34d @@ -21112,18 +17953,6 @@ packages: purls: [] size: 17914 timestamp: 1750371462857 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 - md5: 91651a36d31aa20c7ba36299fb7068f4 - depends: - - ucrt >=10.0.20348.0 - constrains: - - vs2015_runtime 14.42.34438.* *_26 - license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime - license_family: Proprietary - purls: [] - size: 750733 - timestamp: 1743195092905 - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 md5: 14d65350d3f5c8ff163dc4f76d6e2830 @@ -21150,16 +17979,6 @@ packages: - pkg:pypi/virtualenv?source=hash-mapping size: 4133755 timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 - md5: 3357e4383dbce31eed332008ede242ab - depends: - - vc14_runtime >=14.42.34438 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 17873 - timestamp: 1743195097269 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b md5: 312f3a0a6b3c5908e79ce24002411e32 @@ -21170,22 +17989,6 @@ packages: purls: [] size: 17888 timestamp: 1750371463202 -- pypi: https://files.pythonhosted.org/packages/d1/9a/937038f3efc70871fb26b0ee6148efcfcfb96643c517c2aaddd7ed07ad76/wadler_lindig-0.1.6-py3-none-any.whl - name: wadler-lindig - version: 0.1.6 - sha256: d707f63994c7d3e1e125e7fb7e196f4adb6f80f4a11beb955c6da937754026a3 - requires_dist: - - numpy ; extra == 'dev' - - pre-commit ; extra == 'dev' - - pytest ; extra == 'dev' - - hippogriffe==0.1.0 ; extra == 'docs' - - mkdocs-include-exclude-files==0.1.0 ; extra == 'docs' - - mkdocs-ipynb==0.1.0 ; extra == 'docs' - - mkdocs-material==9.6.7 ; extra == 'docs' - - mkdocs==1.6.1 ; extra == 'docs' - - mkdocstrings[python]==0.28.3 ; extra == 'docs' - - pymdown-extensions==10.14.3 ; extra == 'docs' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl name: wadler-lindig version: 0.1.7 @@ -21202,20 +18005,6 @@ packages: - mkdocstrings[python]==0.28.3 ; extra == 'docs' - pymdown-extensions==10.14.3 ; extra == 'docs' requires_python: '>=3.10' -- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda - sha256: 73d809ec8056c2f08e077f9d779d7f4e4c2b625881cad6af303c33dc1562ea01 - md5: a37843723437ba75f42c9270ffe800b1 - depends: - - __glibc >=2.17,<3.0.a0 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - libgcc >=13 - - libstdcxx >=13 - license: MIT - license_family: MIT - purls: [] - size: 321099 - timestamp: 1745806602179 - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda sha256: ba673427dcd480cfa9bbc262fd04a9b1ad2ed59a159bd8f7e750d4c52282f34c md5: 0f2ca7906bf166247d1d760c3422cb8a @@ -21226,6 +18015,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: MIT + license_family: MIT purls: [] size: 330474 timestamp: 1751817998141 @@ -21273,6 +18063,14 @@ packages: - pkg:pypi/websocket-client?source=hash-mapping size: 46718 timestamp: 1733157432924 +- pypi: https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl + name: wheel + version: 0.45.1 + sha256: 708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248 + requires_dist: + - pytest>=6.0.0 ; extra == 'test' + - setuptools>=65 ; extra == 'test' + requires_python: '>=3.8' - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda sha256: 7df3620c88343f2d960a58a81b79d4e4aa86ab870249e7165db7c3e2971a2664 md5: 2f1f99b13b9d2a03570705030a0b3e7c @@ -21281,7 +18079,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/widgetsnbextension?source=compressed-mapping + - pkg:pypi/widgetsnbextension?source=hash-mapping size: 889285 timestamp: 1744291155057 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda @@ -21302,18 +18100,6 @@ packages: license_family: MIT purls: [] size: 1176306 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda - sha256: 83ad2be5eb1d359b4cd7d7a93a6b25cdbfdce9d27b37508e2a4efe90d3a4ed80 - md5: 7c91bfc90672888259675ad2ad28af9c - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.12,<2.0a0 - license: MIT - license_family: MIT - purls: [] - size: 392870 - timestamp: 1745806998840 - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda sha256: a5d4af601f71805ec67403406e147c48d6bad7aaeae92b0622b7e2396842d3fe md5: 397a013c2dc5145a70737871aaa87e98 @@ -21714,17 +18500,6 @@ packages: purls: [] size: 2527503 timestamp: 1731585151036 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 - md5: 0c3cc595284c5e8f0f9900a9b228a332 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/zipp?source=hash-mapping - size: 21809 - timestamp: 1732827613585 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad md5: df5e78d904988eb55042c0c97446079f diff --git a/pyproject.toml b/pyproject.toml index 3daf7250a8..2c87d0ccdc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -114,9 +114,9 @@ toml = "*" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} -jaxtyping = ">=0.3.2, <0.4" -kaleido = ">=1.0.0, <2" -pdbp = ">=1.7.0, <2" +jaxtyping = ">=0.3.2" +kaleido = ">=1.0.0" +pdbp = ">=1.7.1" # Features @@ -131,25 +131,26 @@ python = "3.12.*" [tool.pixi.feature.py313.dependencies] python = "3.13.*" -[tool.pixi.feature.jax.target.unix.dependencies] -jax = ">=0.6" -jaxlib = ">=0.6" +[tool.pixi.feature.jax] +platforms = ["linux-64", "osx-arm64", "win-64"] -# [tool.pixi.feature.jax.pypi-dependencies] +[tool.pixi.feature.jax.pypi-dependencies] +jax = ">=0.6" # jax-datetime = { git = "https://github.com/google/jax-datetime.git" } -[tool.pixi.feature.jax.target.win-64.pypi-dependencies] -jax = { version = ">=0.6", extras = ["cpu"] } -jaxlib = ">=0.6" - [tool.pixi.feature.cuda] platforms = ["linux-64"] system-requirements = {cuda = "12"} -[tool.pixi.feature.cuda.target.linux-64.dependencies] +[tool.pixi.feature.cuda.target.linux-64.pypi-dependencies] +jax = {version = ">=0.6", extras = ["cuda12"]} + +[tool.pixi.feature.metal] +platforms = ["osx-arm64"] + +[tool.pixi.feature.metal.target.osx-arm64.pypi-dependencies] jax = ">=0.6" -jaxlib = { version = ">=0.6", build = "cuda12*" } -cuda-nvcc = "~=12" +jax-metal = ">=0.1.1" [tool.pixi.feature.mypy.pypi-dependencies] mypy = "~=1.16" @@ -173,9 +174,6 @@ tests = "pytest" [tool.pixi.feature.jax.tasks] tests-jax = "pytest --backend=jax" -[tool.pixi.feature.cuda.tasks] -tests-cuda = "pytest --backend=jax" - [tool.pixi.feature.mypy.tasks] mypy = "mypy --ignore-missing-imports" @@ -186,8 +184,9 @@ mypy = "mypy --ignore-missing-imports" py311 = ["test", "py311"] py312 = ["test", "py312"] py313 = ["test", "py313"] -py312-jax = ["py312", "test", "jax"] -py312-cuda = ["py312", "test", "cuda"] +py313-jax = ["py313", "test", "jax"] +py313-cuda = ["py313", "test", "cuda"] +py313-metal = ["py313", "test", "metal"] mypy = ["mypy"] docs = ["docs", "py313"] @@ -318,7 +317,8 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore:ttsim.interface_dag_elements.warn_if.FunctionsAndDataColumnsOverlapWarning" + "ignore:Your data provides the column:", + "ignore:Explicitly requested dtype .*64 requested in zeros_like" ] markers = [ "wip: Tests that are work-in-progress.", diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index 59e629f20a..5d0a1604ac 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -4,53 +4,36 @@ import datetime import inspect from functools import lru_cache -from pathlib import Path from typing import TYPE_CHECKING, Literal import dags.tree as dt import pytest from dags import get_free_arguments -from ttsim import main +from gettsim import main +from ttsim import MainTarget from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, SpecEnvWithPartialledParamsAndScalars, ) -GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" - - -def get_orig_gettsim_objects() -> dict[ - str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs -]: - out = main( - orig_policy_objects={"root": GETTSIM_ROOT}, - main_targets=[ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ], - ) - return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} - def get_orig_gettsim_column_functions() -> list[ColumnFunction]: - orig = get_orig_gettsim_objects()["column_objects_and_param_functions"] + orig = main( + main_target=MainTarget.orig_policy_objects.column_objects_and_param_functions, + ) return [(tp, cf) for tp, cf in orig.items() if isinstance(cf, ColumnFunction)] @lru_cache(maxsize=100) def cached_specialized_environment( date: datetime.date, - root: Path, backend: Literal["numpy", "jax"], ) -> SpecEnvWithPartialledParamsAndScalars: return main( date=date, - orig_policy_objects={"root": root}, backend=backend, fail_and_warn=False, main_target=("specialized_environment", "with_partialled_params_and_scalars"), @@ -67,7 +50,7 @@ def test_jittable(tree_path, fun, backend, xnp): today = datetime.date.today() # noqa: DTZ011 date = min(fun.end_date, today) qname = dt.qname_from_tree_path((*tree_path[:-2], fun.leaf_name)) - env = {qname: cached_specialized_environment(date, GETTSIM_ROOT, backend)[qname]} + env = {qname: cached_specialized_environment(date, backend)[qname]} processed_data = {} for arg_name in get_free_arguments(env[qname]): diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index 5a430a7a8e..76f264362c 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -8,7 +8,8 @@ import numpy import pytest -from ttsim import main +from gettsim import main +from ttsim import MainTarget from ttsim.testing_utils import ( PolicyTest, check_env_completeness, @@ -20,8 +21,7 @@ import datetime from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, + OrigPolicyObjects, ) GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" @@ -34,17 +34,13 @@ ) -def get_orig_gettsim_objects() -> dict[ - str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs -]: - out = main( - orig_policy_objects={"root": GETTSIM_ROOT}, +def get_orig_gettsim_objects() -> OrigPolicyObjects: + return main( main_targets=[ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", + MainTarget.orig_policy_objects.column_objects_and_param_functions, + MainTarget.orig_policy_objects.param_specs, ], - ) - return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} + )["orig_policy_objects"] def dates_in_orig_gettsim_objects() -> list[datetime.date]: @@ -61,7 +57,7 @@ def dates_in_orig_gettsim_objects() -> list[datetime.date]: @pytest.fixture -def orig_gettsim_objects(): +def orig_gettsim_objects() -> OrigPolicyObjects: return get_orig_gettsim_objects() @@ -103,7 +99,6 @@ def test_top_level_elements_not_repeated_in_paths( ): try: gettsim_objects = main( - orig_policy_objects={"root": GETTSIM_ROOT}, backend=backend, date=date, rounding=False, @@ -122,10 +117,10 @@ def test_top_level_elements_not_repeated_in_paths( dt.fail_if_top_level_elements_repeated_in_paths( all_tree_paths=dt.flatten_to_tree_paths( dt.unflatten_from_qnames( - gettsim_objects[ - "specialized_environment__with_partialled_params_and_scalars" + gettsim_objects["specialized_environment"][ + "with_partialled_params_and_scalars" ] ) ), - top_level_namespace=gettsim_objects["labels__top_level_namespace"], + top_level_namespace=gettsim_objects["labels"]["top_level_namespace"], ) diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 93bca03e45..0a9ab3e236 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -1,21 +1,16 @@ from __future__ import annotations -from pathlib import Path - import dags.tree as dt -from ttsim import main +from gettsim import main from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.shared import ( get_re_pattern_for_all_time_units_and_groupings, ) -GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" - def test_template_all_outputs_no_inputs(backend): res = main( - orig_policy_objects={"root": GETTSIM_ROOT}, rounding=True, date_str="2025-01-01", backend=backend, @@ -23,7 +18,7 @@ def test_template_all_outputs_no_inputs(backend): ) paths_with_unspecified_dtypes = [] - flat_res = dt.flatten_to_tree_paths(res["templates__input_data_dtypes"]) + flat_res = dt.flatten_to_tree_paths(res["templates"]["input_data_dtypes"]) for p, dtype in flat_res.items(): if "|" in dtype: paths_with_unspecified_dtypes.append(p) @@ -40,10 +35,10 @@ def test_template_all_outputs_no_inputs(backend): pattern_all = get_re_pattern_for_all_time_units_and_groupings( time_units=list(TIME_UNIT_LABELS), - grouping_levels=res["labels__grouping_levels"], + grouping_levels=res["labels"]["grouping_levels"], ) bn_to_variations = {} - for qname in dt.qnames(res["templates__input_data_dtypes"]): + for qname in dt.qnames(res["templates"]["input_data_dtypes"]): match = pattern_all.fullmatch(qname) # We must not find multiple time units for the same base name and group. base_name = match.group("base_name") diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 3ff49febc3..51e3860be0 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -111,7 +111,7 @@ def main( if fail_and_warn and main_targets is not None: main_targets = include_fail_and_warn_nodes( functions=functions, - main_targets=main_targets, # type: ignore[arg-type] + explicit_main_targets=main_targets, # type: ignore[arg-type] ) dag = dags.create_dag( @@ -136,17 +136,17 @@ def lexsort_key(x: str) -> int: set_annotations=True, lexsort_key=lexsort_key, ) - else: - f = dags.concatenate_functions( - dag=dag, - functions=functions, - targets=main_targets, - return_type="dict", - enforce_signature=False, - set_annotations=True, - lexsort_key=lexsort_key, - ) - return f(**input_qnames) + return f(**input_qnames) + f = dags.concatenate_functions( + dag=dag, + functions=functions, + targets=main_targets, + return_type="dict", + enforce_signature=False, + set_annotations=True, + lexsort_key=lexsort_key, + ) + return dt.unflatten_from_qnames(f(**input_qnames)) def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: @@ -280,7 +280,7 @@ def _fail_if_multiple_functions_satisfy_include_condition( def include_fail_and_warn_nodes( functions: dict[str, InterfaceFunction], - main_targets: list[str], + explicit_main_targets: list[str], ) -> list[str]: """Extend main targets with failures and warnings that can be computed. @@ -291,35 +291,29 @@ def include_fail_and_warn_nodes( fail_or_warn_functions = { p: n for p, n in functions.items() - if isinstance(n, FailOrWarnFunction) and p not in main_targets + if isinstance(n, FailOrWarnFunction) and p not in explicit_main_targets } - workers_and_their_inputs = dags.create_dag( + initial_dag = dags.create_dag( functions={ - p: n - for p, n in functions.items() - if not isinstance(n, FailOrWarnFunction) or p in main_targets + p: n for p, n in functions.items() if p not in fail_or_warn_functions }, - targets=main_targets, + targets=explicit_main_targets, ) - out = main_targets.copy() + all_main_targets = explicit_main_targets.copy() for p, n in fail_or_warn_functions.items(): args = inspect.signature(n).parameters - if p == "fail_if__root_nodes_are_missing": - check = all(a in workers_and_their_inputs for a in args) - if n.include_if_all_elements_present or n.include_if_any_element_present: - # all(()) evaluates to True, so include first bit - all_cond = n.include_if_all_elements_present and all( - a in workers_and_their_inputs - for a in n.include_if_all_elements_present - ) - any_cond = any( - a in workers_and_their_inputs - for a in n.include_if_any_element_present - ) - check = check and (all_cond or any_cond) - if check: - out.append(p) - return out + if n.include_if_all_elements_present or n.include_if_any_element_present: + # all(()) evaluates to True, so include first bit + all_cond = n.include_if_all_elements_present and all( + a in initial_dag for a in n.include_if_all_elements_present + ) + any_cond = any(a in initial_dag for a in n.include_if_any_element_present) + check = all_cond or any_cond + else: + check = all(a in initial_dag for a in args) + if check: + all_main_targets.append(p) + return all_main_targets def load_flat_interface_functions_and_inputs() -> FlatInterfaceObjects: diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index eda089da4a..ed65d4610b 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -37,9 +37,7 @@ class FailIf(MainTargetABC): group_variables_are_not_constant_within_groups: str = ( "fail_if__group_variables_are_not_constant_within_groups" ) - input_arrays_have_different_lengths: str = ( - "fail_if__input_arrays_have_different_lengths" - ) + input_data_is_invalid: str = "fail_if__input_data_is_invalid" input_data_tree_is_invalid: str = "fail_if__input_data_tree_is_invalid" input_df_has_bool_or_numeric_column_names: str = ( "fail_if__input_df_has_bool_or_numeric_column_names" @@ -50,7 +48,6 @@ class FailIf(MainTargetABC): input_df_mapper_has_incorrect_format: str = ( "fail_if__input_df_mapper_has_incorrect_format" ) - invalid_p_id_values: str = "fail_if__invalid_p_id_values" non_convertible_objects_in_results_tree: str = ( "fail_if__non_convertible_objects_in_results_tree" ) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index c3f87de7ff..473688bb35 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -37,6 +37,7 @@ FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, NestedData, + NestedInputsMapper, NestedStrings, NestedTargetDict, OrderedQNames, @@ -233,7 +234,7 @@ def any_paths_are_invalid( return dt.fail_if_paths_are_invalid( functions=policy_environment, data_tree=input_data__tree, - tt_targets=tt_targets__tree, + targets=tt_targets__tree, top_level_namespace=labels__top_level_namespace, ) @@ -279,43 +280,23 @@ def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> @fail_or_warn_function(include_if_any_element_present=["input_data__flat"]) -def input_arrays_have_different_lengths( - input_data__flat: FlatData, -) -> None: - """Fail if the input arrays have different lengths.""" - len_p_id_array = len(input_data__flat[("p_id",)]) - faulty_arrays: list[str] = [] - for key, arr in input_data__flat.items(): - if len(arr) != len_p_id_array: - faulty_arrays.append(key) - if faulty_arrays: - formatted_faulty_paths = "\n".join(f" - {p}" for p in faulty_arrays) - msg = format_errors_and_warnings( - "The lengths of the following columns do not match the length of the `p_id`" - f" column:\n{formatted_faulty_paths}" - ) - raise ValueError(msg) - - -@fail_or_warn_function(include_if_any_element_present=["input_data__flat"]) -def invalid_p_id_values( - input_data__flat: FlatData, - xnp: ModuleType, -) -> None: - """Fail if the `p_id` column is invalid. +def input_data_is_invalid(input_data__flat: FlatData) -> None: + """Fail if the input data is invalid. Fails if: - The `p_id` column is missing. + - The `p_id` column has non-integer values. - The `p_id` column has non-unique values. + - The input arrays have different lengths. """ p_id = input_data__flat.get(("p_id",), None) if p_id is None: raise ValueError("The input data must contain the `p_id` column.") - if not all(isinstance(i, (int, xnp.integer)) for i in p_id): - types = (type(i) for i in p_id if not isinstance(i, int)) + dtype_normalized = str(p_id.dtype).lower() + if "int" not in dtype_normalized: msg = format_errors_and_warnings( - f"The `p_id` column must contain integers only. Got: {types}." + f"The `p_id` column must be of integer dtype. Got: {p_id.dtype}." ) raise ValueError(msg) @@ -337,6 +318,19 @@ def invalid_p_id_values( ) raise ValueError(message) + len_p_id_array = len(input_data__flat[("p_id",)]) + faulty_arrays: list[str] = [] + for key, arr in input_data__flat.items(): + if len(arr) != len_p_id_array: + faulty_arrays.append(key) + if faulty_arrays: + formatted_faulty_paths = "\n".join(f" - {p}" for p in faulty_arrays) + msg = format_errors_and_warnings( + "The lengths of the following columns do not match the length of the `p_id`" + f" column:\n{formatted_faulty_paths}" + ) + raise ValueError(msg) + @fail_or_warn_function() def environment_is_invalid( @@ -478,7 +472,7 @@ def group_variables_are_not_constant_within_groups( @fail_or_warn_function( include_if_any_element_present=[ "results__df_with_mapper", - "results_df__df_with_nested_columns", + "results__df_with_nested_columns", ] ) def non_convertible_objects_in_results_tree( @@ -559,7 +553,7 @@ def input_df_has_bool_or_numeric_column_names( @fail_or_warn_function() def input_df_mapper_columns_missing_in_df( input_data__df_and_mapper__df: pd.DataFrame, - input_data__df_and_mapper__mapper: NestedStrings, + input_data__df_and_mapper__mapper: NestedInputsMapper, ) -> None: """Fail if the input mapper has columns that are not in the input dataframe.""" mapper_vals = dt.flatten_to_qnames(input_data__df_and_mapper__mapper).values() @@ -576,7 +570,7 @@ def input_df_mapper_columns_missing_in_df( @fail_or_warn_function() def input_df_mapper_has_incorrect_format( - input_data__df_and_mapper__mapper: NestedStrings, + input_data__df_and_mapper__mapper: NestedInputsMapper, ) -> None: """Fail if the input tree to column name mapping has an incorrect format.""" if not isinstance(input_data__df_and_mapper__mapper, dict): diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 168734bcd1..4dfaccb4a4 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -11,7 +11,7 @@ import pandas as pd import pytest -from ttsim import main +from ttsim import MainTarget, main from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -21,10 +21,9 @@ foreign_keys_are_invalid_in_data, group_ids_are_outside_top_level_namespace, group_variables_are_not_constant_within_groups, + input_data_is_invalid, input_df_has_bool_or_numeric_column_names, input_df_mapper_has_incorrect_format, - invalid_p_id_values, - non_convertible_objects_in_results_tree, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, ) @@ -647,17 +646,17 @@ def test_fail_if_group_variables_are_not_constant_within_groups(): ) -def test_fail_if_invalid_p_id_values(xnp): - data = {("fam_id",): numpy.array([1, 2, 3])} +def test_fail_if_p_id_is_missing(xnp): + data = {("fam_id",): xnp.array([1, 2, 3])} with pytest.raises( ValueError, match="The input data must contain the `p_id` column.", ): - invalid_p_id_values(data, xnp) + input_data_is_invalid(data) -def test_fail_if_invalid_p_id_values_via_main(backend): +def test_fail_if_p_id_is_missing_via_main(backend): data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} with pytest.raises( ValueError, @@ -669,7 +668,7 @@ def test_fail_if_invalid_p_id_values_via_main(backend): tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__invalid_p_id_values"), + main_target=("fail_if__input_data_is_invalid"), ) @@ -770,22 +769,16 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( minimal_data_tree, match, backend, - xnp, ): - actual = main( - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - main_targets=["processed_data", "results__tree"], - ) with pytest.raises(TypeError, match=match): - non_convertible_objects_in_results_tree( - processed_data=actual["processed_data"], - results__tree=actual["results__tree"], - xnp=xnp, + main( + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + date=datetime.date(2024, 1, 1), + tt_targets={"tree": tt_targets__tree}, + rounding=False, + backend=backend, + main_target=MainTarget.results.df_with_nested_columns, ) @@ -811,33 +804,27 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt minimal_data_tree, match, backend, - xnp, ): - actual = main( - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - main_targets=["processed_data", "results__tree"], - ) with pytest.raises(ValueError, match=match): - non_convertible_objects_in_results_tree( - processed_data=actual["processed_data"], - results__tree=actual["results__tree"], - xnp=xnp, + main( + input_data={"tree": minimal_data_tree}, + policy_environment=environment, + date=datetime.date(2024, 1, 1), + tt_targets={"tree": tt_targets__tree}, + rounding=False, + backend=backend, + main_target=MainTarget.results.df_with_nested_columns, ) def test_fail_if_p_id_does_not_exist(xnp): - data = {("fam_id",): numpy.array([1, 2, 3])} + data = {("fam_id",): xnp.array([1, 2, 3])} with pytest.raises( ValueError, match="The input data must contain the `p_id` column.", ): - invalid_p_id_values(data, xnp) + input_data_is_invalid(data) def test_fail_if_p_id_does_not_exist_via_main(backend): @@ -852,18 +839,18 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__invalid_p_id_values"), + main_target=("fail_if__input_data_is_invalid"), ) def test_fail_if_p_id_is_not_unique(xnp): - data = {("p_id",): numpy.array([1, 1, 3, 4])} + data = {("p_id",): xnp.array([1, 1, 3, 4])} with pytest.raises( ValueError, match="The following `p_id`s are not unique in the input data", ): - invalid_p_id_values(data, xnp) + input_data_is_invalid(data) def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): @@ -880,42 +867,45 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__invalid_p_id_values"), + main_target=("fail_if__input_data_is_invalid"), ) @pytest.mark.parametrize( "data", [ - {("p_id",): [1, "2", 3]}, - {("p_id",): [1, "2", 3.0]}, {("p_id",): numpy.array([1, "2", 3])}, {("p_id",): numpy.array([1, 2, 3.0])}, {("p_id",): pd.Series([1, 2, 3.0])}, {("p_id",): pd.Series([1, "2", 3.0])}, ], ) -def test_fail_if_p_id_is_not_int(data, xnp): +def test_fail_if_p_id_is_not_int(data): with pytest.raises( ValueError, - match="The `p_id` column must contain integers only.", + match="The `p_id` column must be of integer dtype.", ): - invalid_p_id_values(data, xnp) + input_data_is_invalid(data) @pytest.mark.parametrize( "data", [ - {("p_id",): [1, 2, 3]}, {("p_id",): numpy.array([1, 2, 3])}, {("p_id",): pd.Series([1, 2, 3])}, ], ) -def test_p_id_can_be_specified_as_list_series_and_array(data, xnp): - invalid_p_id_values(data, xnp) +def test_p_id_can_be_specified_as_series_and_numpy_array(data): + input_data_is_invalid(data) + + +@pytest.mark.skipif_numpy +def test_p_id_can_be_specified_as_jax_array(xnp): + data = {("p_id",): xnp.array([1, 2, 3])} + input_data_is_invalid(data) -def test_fail_if_input_arrays_have_different_lengths(backend): +def test_fail_if_input_data_has_different_lengths(backend): data = {"p_id": numpy.arange(4), "a": numpy.arange(8)} with pytest.raises( ValueError, @@ -927,7 +917,7 @@ def test_fail_if_input_arrays_have_different_lengths(backend): tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__input_arrays_have_different_lengths"), + main_target=("fail_if__input_data_is_invalid"), ) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index e9b1081b91..bc5cbf2940 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -40,14 +40,13 @@ def get_orig_mettsim_objects() -> dict[ str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs ]: - out = main( + return main( orig_policy_objects={"root": METTSIM_ROOT}, main_targets=[ "orig_policy_objects__column_objects_and_param_functions", "orig_policy_objects__param_specs", ], - ) - return {k.replace("orig_policy_objects__", ""): v for k, v in out.items()} + )["orig_policy_objects"] def dates_in_orig_mettsim_objects() -> list[datetime.date]: diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index 1495ee847f..c78f7de849 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -95,15 +95,15 @@ def test_template_all_outputs_no_inputs(backend): assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} -def test_template_all_outputs_with_inputs(backend): +def test_template_all_outputs_with_inputs(backend, xnp): actual = main( input_data={ "tree": { - "p_id": [4, 5, 6], + "p_id": xnp.array([4, 5, 6]), "a": { - "inp2": [1, 2, 3], + "inp2": xnp.array([1, 2, 3]), }, - "inp1": [0, 1, 2], + "inp1": xnp.array([0, 1, 2]), } }, policy_environment={ @@ -141,15 +141,15 @@ def test_template_output_y_no_inputs(backend): assert actual == {"a": {"inp2": "FloatColumn"}} -def test_template_output_x_with_inputs(backend): +def test_template_output_x_with_inputs(backend, xnp): actual = main( input_data={ "tree": { - "p_id": [4, 5, 6], + "p_id": xnp.array([4, 5, 6]), "a": { - "inp2": [1, 2, 3], + "inp2": xnp.array([1, 2, 3]), }, - "inp1": [0, 1, 2], + "inp1": xnp.array([0, 1, 2]), } }, tt_targets={"tree": {"a": {"x": None}}}, diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index 1a52bc426c..f654409883 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -5,7 +5,7 @@ import pandas as pd from ttsim import main -from ttsim.interface_dag_elements import warn_if +from ttsim.interface_dag_elements.warn_if import FunctionsAndDataColumnsOverlapWarning from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -48,7 +48,7 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) with warnings.catch_warnings(): warnings.filterwarnings( "error", - category=warn_if.FunctionsAndDataColumnsOverlapWarning, + category=FunctionsAndDataColumnsOverlapWarning, ) main( input_data={ diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 97f2aa23e6..3e9400dc37 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -36,10 +36,6 @@ def some_param_function(): return 1 -def some_other_object(): - return 1 - - @policy_function( start_date="2025-01-01", end_date="2025-12-31", @@ -286,43 +282,3 @@ def test_params_are_removed_from_dag(include_params, expected_nodes): include_params=include_params, ) assert set(dag.nodes()) == set(expected_nodes) - - -@pytest.mark.parametrize( - ( - "include_other_objects", - "expected_nodes", - ), - [ - ( - True, - [ - "some_param", - "some_param_function", - "some_policy_function", - "other_object", - ], - ), - ( - False, - [ - "some_param", - "some_param_function", - "some_policy_function", - ], - ), - ], -) -def test_other_objects_are_removed_from_dag(include_other_objects, expected_nodes): - environment = { - "some_param": SOME_PARAM_OBJECT, - "some_param_function": some_param_function, - "some_policy_function": some_policy_function, - "other_object": some_other_object, - } - dag = _get_tt_dag_with_node_metadata( - environment=environment, - include_params=True, - include_other_objects=include_other_objects, - ) - assert set(dag.nodes()) == set(expected_nodes) From 50d846f50afa22effadd11cfe7383915cd6c6aed Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 16 Jul 2025 06:38:07 +0200 Subject: [PATCH 070/109] Split up `fail_and_warn` argument of `main` (#1024) ### What problem do you want to solve? - Split up `fail_and_warn` into two separate arguments - Don't warn if users "overwrite" policy inputs - Remove `FunctionsAndDataColumnsOverlapWarning` ignore via pyproject.toml. Rather deactivate the warning via `main` arg. --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- pixi.lock | 179 ++++++++---------- pyproject.toml | 1 - src/_gettsim_tests/test_jittability.py | 5 +- src/gettsim/__init__.py | 3 +- src/ttsim/interface_dag.py | 64 +++++-- src/ttsim/interface_dag_elements/fail_if.py | 34 ++-- .../interface_node_objects.py | 77 ++++++-- src/ttsim/interface_dag_elements/warn_if.py | 9 +- src/ttsim/plot_dag.py | 5 +- src/ttsim/testing_utils.py | 6 +- .../interface_dag_elements/test_failures.py | 2 + .../test_specialized_environment.py | 2 + .../interface_dag_elements/test_warnings.py | 2 + tests/ttsim/test_interface_dag.py | 8 +- tests/ttsim/tt_dag_elements/test_rounding.py | 6 + 15 files changed, 234 insertions(+), 169 deletions(-) diff --git a/pixi.lock b/pixi.lock index 0ce5818672..1c89e41adb 100644 --- a/pixi.lock +++ b/pixi.lock @@ -283,7 +283,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -293,20 +293,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -357,7 +357,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -391,7 +391,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda @@ -401,8 +400,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -412,14 +411,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py312hbf2c5ff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -433,35 +432,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -482,14 +481,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -501,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -511,11 +510,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ @@ -643,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -1424,7 +1423,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -1678,7 +1677,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda @@ -2357,7 +2356,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py313ha37c0e0_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py312hb553811_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda @@ -2367,20 +2366,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py313h14b76d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.7.14-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda @@ -2431,7 +2430,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda @@ -2465,7 +2464,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda @@ -2475,8 +2473,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -2486,14 +2484,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py313h366a99e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.1-py312hbf2c5ff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda @@ -2507,35 +2505,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.22.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py313h3af7c70_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py313h6971d95_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py313h19a8f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.14-py312hc79309e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h2365019_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.5-hc3a4c56_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -2556,14 +2554,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.1-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda @@ -2575,7 +2573,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h7130eaa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 @@ -2583,16 +2581,16 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl @@ -2722,7 +2720,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3500,7 +3498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py311ha3cf9ac_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -3741,7 +3739,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4508,7 +4506,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -4749,7 +4747,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -5516,7 +5514,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -5758,7 +5756,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda @@ -7888,7 +7886,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=compressed-mapping + - pkg:pypi/babel?source=hash-mapping size: 6938256 timestamp: 1738490268466 - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda @@ -8969,7 +8967,7 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/decorator?source=compressed-mapping + - pkg:pypi/decorator?source=hash-mapping size: 14129 timestamp: 1740385067843 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 @@ -9351,8 +9349,8 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev172+g829b61529.d20250715 - sha256: a834483321e89ee6d620b43ab0d5690487b824ee9c1ec70f0a07cfc959d228c7 + version: 0.7.1.dev158+gf201eac1.d20250715 + sha256: 026cc72b6406bd553b9b6ea391f89d6db02850b7350e99596821bdea0f34a716 requires_dist: - ipywidgets - networkx>=3.5,<4 @@ -10566,7 +10564,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-events?source=compressed-mapping + - pkg:pypi/jupyter-events?source=hash-mapping size: 23647 timestamp: 1738765986736 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda @@ -12361,30 +12359,17 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d - md5: e240159643214102dc88395c4ecee9cf +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.8-hf4e0ed4_0.conda + sha256: 9f4161cbb2d17c9622380ec0c59938bd1600324e30a48a770509fbe6d9eee8af + md5: ab3b31ebe0afdf903fa5ac7f13357e39 depends: - __osx >=10.13 constrains: - - openmp 20.1.7|20.1.7.* - license: Apache-2.0 WITH LLVM-exception - license_family: APACHE - purls: [] - size: 306443 - timestamp: 1749892271445 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 - md5: 741e1da0a0798d32e13e3724f2ca2dcf - depends: - - __osx >=11.0 - constrains: - - openmp 20.1.7|20.1.7.* + - openmp 20.1.8|20.1.8.* license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] - size: 281996 - timestamp: 1749892286735 + size: 308578 + timestamp: 1752565939065 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.8-hbb9b287_0.conda sha256: d731910cd4d084574c6bba0638ac98906c1fd8104a2e844f69813e641cf72305 md5: 6f5b4542c2dd772024d9f7e7b0d5e41a @@ -12727,10 +12712,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl name: mypy version: 1.17.0 - sha256: d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c + sha256: f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -12742,10 +12727,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl name: mypy version: 1.17.0 - sha256: 0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a + sha256: d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -12757,10 +12742,10 @@ packages: - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl name: mypy version: 1.17.0 - sha256: 2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06 + sha256: 0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 @@ -14864,7 +14849,7 @@ packages: - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=compressed-mapping + - pkg:pypi/pexpect?source=hash-mapping size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -16084,7 +16069,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=compressed-mapping + - pkg:pypi/tzdata?source=hash-mapping size: 144160 timestamp: 1742745254292 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda diff --git a/pyproject.toml b/pyproject.toml index 2c87d0ccdc..6ae3418934 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -317,7 +317,6 @@ filterwarnings = [ "ignore:The TerminalReporter.writer attribute is", "ignore:Repeated execution of the test suite", "ignore:Using or importing the ABCs from 'collections'", - "ignore:Your data provides the column:", "ignore:Explicitly requested dtype .*64 requested in zeros_like" ] markers = [ diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index 5d0a1604ac..f0f120b3ca 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -35,7 +35,8 @@ def cached_specialized_environment( return main( date=date, backend=backend, - fail_and_warn=False, + include_fail_nodes=False, + include_warn_nodes=False, main_target=("specialized_environment", "with_partialled_params_and_scalars"), ) @@ -72,5 +73,5 @@ def test_jittable(tree_path, fun, backend, xnp): tt_targets={"qname": [qname]}, backend=backend, main_target=("raw_results", "columns"), - fail_and_warn=False, + include_fail_nodes=False, ) diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 76e0c1df2b..1e1b7031b8 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -63,7 +63,8 @@ def main( tt_targets: TTTargets | None = None, backend: Literal["numpy", "jax"] = "numpy", rounding: bool = True, - fail_and_warn: bool = True, + include_fail_nodes: bool = True, + include_warn_nodes: bool = True, orig_policy_objects: OrigPolicyObjects | None = None, raw_results: RawResults | None = None, results: Results | None = None, diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 51e3860be0..1fec898744 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -17,10 +17,11 @@ format_list_linewise, ) from ttsim.interface_dag_elements.interface_node_objects import ( - FailOrWarnFunction, + FailFunction, InputDependentInterfaceFunction, InterfaceFunction, InterfaceInput, + WarnFunction, ) from ttsim.interface_dag_elements.orig_policy_objects import load_module from ttsim.main_args import MainArg @@ -57,7 +58,8 @@ def main( tt_targets: TTTargets | None = None, rounding: bool = True, backend: Literal["numpy", "jax"] | None = None, - fail_and_warn: bool = True, + include_fail_nodes: bool = True, + include_warn_nodes: bool = True, date: datetime.date | None = None, policy_date_str: DashedISOString | None = None, evaluation_date_str: DashedISOString | None = None, @@ -107,12 +109,12 @@ def main( if isinstance(n, InterfaceFunction) and qn not in input_qnames } - # If main_targets are None, all failures and warnings are included, anyhow. - if fail_and_warn and main_targets is not None: - main_targets = include_fail_and_warn_nodes( - functions=functions, - explicit_main_targets=main_targets, # type: ignore[arg-type] - ) + main_targets = include_fail_or_warn_nodes( + functions=functions, + explicit_main_targets=main_targets, # type: ignore[arg-type] + include_fail_nodes=include_fail_nodes, + include_warn_nodes=include_warn_nodes, + ) dag = dags.create_dag( functions=functions, @@ -278,29 +280,52 @@ def _fail_if_multiple_functions_satisfy_include_condition( raise ValueError(msg) -def include_fail_and_warn_nodes( +def include_fail_or_warn_nodes( functions: dict[str, InterfaceFunction], - explicit_main_targets: list[str], -) -> list[str]: + explicit_main_targets: list[str] | None, + include_fail_nodes: bool, + include_warn_nodes: bool, +) -> list[str] | None: """Extend main targets with failures and warnings that can be computed. - FailOrWarnFunctions which are included explicitly among the main targets are treated - like regular functions. + FailFunctions and WarnFunctions which are included explicitly among the main targets + are treated like regular functions. """ - fail_or_warn_functions = { + # If main_targets are None, all failures and warnings are included, anyhow. + if explicit_main_targets is None: + return explicit_main_targets + + fail_functions = { + p: n + for p, n in functions.items() + if isinstance(n, FailFunction) + and p not in explicit_main_targets + and include_fail_nodes + } + warn_functions = { p: n for p, n in functions.items() - if isinstance(n, FailOrWarnFunction) and p not in explicit_main_targets + if isinstance(n, WarnFunction) + and p not in explicit_main_targets + and include_warn_nodes } + fail_or_warn_nodes = {**fail_functions, **warn_functions} initial_dag = dags.create_dag( functions={ - p: n for p, n in functions.items() if p not in fail_or_warn_functions + p: n + for p, n in functions.items() + if p + not in { + **fail_functions, + **warn_functions, + } }, targets=explicit_main_targets, ) all_main_targets = explicit_main_targets.copy() - for p, n in fail_or_warn_functions.items(): + + for p, n in fail_or_warn_nodes.items(): args = inspect.signature(n).parameters if n.include_if_all_elements_present or n.include_if_any_element_present: # all(()) evaluates to True, so include first bit @@ -337,7 +362,8 @@ def _load_orig_functions() -> dict[tuple[str, ...], InterfaceFunction | Interfac p for p in root.rglob("*.py") if p.name not in ["__init__.py", "typing.py"] ] flat_functions: dict[ - tuple[str, ...], InterfaceFunction | InterfaceInput | FailOrWarnFunction + tuple[str, ...], + InterfaceFunction | InterfaceInput | FailFunction | WarnFunction, ] = {} for path in paths: module = load_module(path=path, root=root) @@ -398,7 +424,7 @@ def _fail_if_requested_nodes_cannot_be_found( p for p, n in nodes.items() if isinstance(n, InterfaceFunction) } fail_or_warn_functions = { - p: n for p, n in nodes.items() if isinstance(n, FailOrWarnFunction) + p: n for p, n in nodes.items() if isinstance(n, (FailFunction, WarnFunction)) } # main targets not in interface functions diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 473688bb35..4108b627b1 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -13,7 +13,7 @@ import optree import pandas as pd -from ttsim.interface_dag_elements.interface_node_objects import fail_or_warn_function +from ttsim.interface_dag_elements.interface_node_objects import fail_function from ttsim.interface_dag_elements.shared import get_name_of_group_by_id from ttsim.tt_dag_elements.column_objects_param_function import ( DEFAULT_END_DATE, @@ -167,7 +167,7 @@ def format_key_path(key_tuple: tuple[str, ...]) -> str: _assert_valid_ttsim_pytree(tree, current_key=()) -@fail_or_warn_function() +@fail_function() def active_periods_overlap( orig_policy_objects__column_objects_and_param_functions: FlatColumnObjectsParamFunctions, orig_policy_objects__param_specs: FlatOrigParamSpecs, @@ -223,7 +223,7 @@ def active_periods_overlap( ) -@fail_or_warn_function() +@fail_function() def any_paths_are_invalid( policy_environment: PolicyEnvironment, input_data__tree: NestedData, @@ -239,7 +239,7 @@ def any_paths_are_invalid( ) -@fail_or_warn_function(include_if_all_elements_present=["results__df_with_mapper"]) +@fail_function(include_if_all_elements_present=["results__df_with_mapper"]) def paths_are_missing_in_targets_tree_mapper( results__tree: NestedData, tt_targets__tree: NestedStrings, @@ -259,7 +259,7 @@ def paths_are_missing_in_targets_tree_mapper( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> None: """ Validate the basic structure of the input data tree. @@ -279,7 +279,7 @@ def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> ) -@fail_or_warn_function(include_if_any_element_present=["input_data__flat"]) +@fail_function(include_if_any_element_present=["input_data__flat"]) def input_data_is_invalid(input_data__flat: FlatData) -> None: """Fail if the input data is invalid. @@ -332,7 +332,7 @@ def input_data_is_invalid(input_data__flat: FlatData) -> None: raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def environment_is_invalid( policy_environment: PolicyEnvironment, ) -> None: @@ -348,7 +348,7 @@ def environment_is_invalid( ) -@fail_or_warn_function() +@fail_function() def foreign_keys_are_invalid_in_data( labels__root_nodes: UnorderedQNames, processed_data: QNameData, @@ -405,7 +405,7 @@ def foreign_keys_are_invalid_in_data( raise ValueError(message) -@fail_or_warn_function() +@fail_function() def group_ids_are_outside_top_level_namespace( policy_environment: PolicyEnvironment, ) -> None: @@ -423,7 +423,7 @@ def group_ids_are_outside_top_level_namespace( ) -@fail_or_warn_function() +@fail_function() def group_variables_are_not_constant_within_groups( labels__grouping_levels: OrderedQNames, labels__root_nodes: UnorderedQNames, @@ -469,7 +469,7 @@ def group_variables_are_not_constant_within_groups( raise ValueError(msg) -@fail_or_warn_function( +@fail_function( include_if_any_element_present=[ "results__df_with_mapper", "results__df_with_nested_columns", @@ -518,7 +518,7 @@ def non_convertible_objects_in_results_tree( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def input_df_has_bool_or_numeric_column_names( input_data__df_and_mapper__df: pd.DataFrame, ) -> None: @@ -550,7 +550,7 @@ def input_df_has_bool_or_numeric_column_names( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def input_df_mapper_columns_missing_in_df( input_data__df_and_mapper__df: pd.DataFrame, input_data__df_and_mapper__mapper: NestedInputsMapper, @@ -568,7 +568,7 @@ def input_df_mapper_columns_missing_in_df( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def input_df_mapper_has_incorrect_format( input_data__df_and_mapper__mapper: NestedInputsMapper, ) -> None: @@ -620,7 +620,7 @@ def input_df_mapper_has_incorrect_format( raise TypeError(msg) -@fail_or_warn_function() +@fail_function() def root_nodes_are_missing( specialized_environment__tax_transfer_dag: nx.DiGraph, specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, @@ -680,7 +680,7 @@ def root_nodes_are_missing( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def targets_are_not_in_specialized_environment_or_data( specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, labels__processed_data_columns: UnorderedQNames, @@ -717,7 +717,7 @@ def targets_are_not_in_specialized_environment_or_data( raise ValueError(msg) -@fail_or_warn_function() +@fail_function() def targets_tree_is_invalid(tt_targets__tree: NestedTargetDict | NestedStrings) -> None: """ Validate that the targets tree is a dictionary with string keys and None leaves. diff --git a/src/ttsim/interface_dag_elements/interface_node_objects.py b/src/ttsim/interface_dag_elements/interface_node_objects.py index 68f2268497..fa0262419f 100644 --- a/src/ttsim/interface_dag_elements/interface_node_objects.py +++ b/src/ttsim/interface_dag_elements/interface_node_objects.py @@ -282,10 +282,8 @@ def inner( @dataclass(frozen=True) -class FailOrWarnFunction(InterfaceFunction): # type: ignore[type-arg] - """ - Base class for all functions operating on columns of data. - """ +class FailFunction(InterfaceFunction): # type: ignore[type-arg] + """An interface function that fails under certain conditions.""" include_if_any_element_present: Iterable[str] include_if_all_elements_present: Iterable[str] @@ -294,9 +292,9 @@ def remove_tree_logic( self, tree_path: tuple[str, ...], top_level_namespace: UnorderedQNames, - ) -> FailOrWarnFunction: + ) -> FailFunction: """Remove tree logic from the function and update the function signature.""" - return FailOrWarnFunction( + return FailFunction( leaf_name=self.leaf_name, function=dt.one_function_without_tree_logic( function=self.function, @@ -309,31 +307,68 @@ def remove_tree_logic( ) -def fail_or_warn_function( +def fail_function( *, include_if_any_element_present: Iterable[str] = (), include_if_all_elements_present: Iterable[str] = (), leaf_name: str | None = None, in_top_level_namespace: bool = False, -) -> Callable[[Callable[..., Any]], FailOrWarnFunction]: +) -> Callable[[Callable[..., Any]], FailFunction]: + """ + Decorator that makes a `FailFunction` from a function. """ - Decorator that makes an `InterfaceFunction` from a function. - Parameters - ---------- - leaf_name - The name that should be used as the PolicyFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. - in_top_level_namespace: - Whether the function is in the top-level namespace of the interface-DAG. + def inner(func: Callable[..., Any]) -> FailFunction: + return FailFunction( + include_if_any_element_present=include_if_any_element_present, + include_if_all_elements_present=include_if_all_elements_present, + leaf_name=leaf_name if leaf_name else func.__name__, + function=func, + in_top_level_namespace=in_top_level_namespace, + ) - Returns - ------- - A decorator that returns an InterfaceFunction object. + return inner + + +@dataclass(frozen=True) +class WarnFunction(InterfaceFunction): # type: ignore[type-arg] + """An interface function that warns under certain conditions.""" + + include_if_any_element_present: Iterable[str] + include_if_all_elements_present: Iterable[str] + + def remove_tree_logic( + self, + tree_path: tuple[str, ...], + top_level_namespace: UnorderedQNames, + ) -> WarnFunction: + """Remove tree logic from the function and update the function signature.""" + return WarnFunction( + leaf_name=self.leaf_name, + function=dt.one_function_without_tree_logic( + function=self.function, + tree_path=tree_path, + top_level_namespace=top_level_namespace, + ), + in_top_level_namespace=self.in_top_level_namespace, + include_if_any_element_present=self.include_if_any_element_present, + include_if_all_elements_present=self.include_if_all_elements_present, + ) + + +def warn_function( + *, + include_if_any_element_present: Iterable[str] = (), + include_if_all_elements_present: Iterable[str] = (), + leaf_name: str | None = None, + in_top_level_namespace: bool = False, +) -> Callable[[Callable[..., Any]], WarnFunction]: + """ + Decorator that makes a `WarnFunction` from a function. """ - def inner(func: Callable[..., Any]) -> FailOrWarnFunction: - return FailOrWarnFunction( + def inner(func: Callable[..., Any]) -> WarnFunction: + return WarnFunction( include_if_any_element_present=include_if_any_element_present, include_if_all_elements_present=include_if_all_elements_present, leaf_name=leaf_name if leaf_name else func.__name__, diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py index ba59201d99..0809c447f1 100644 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -9,7 +9,8 @@ format_errors_and_warnings, format_list_linewise, ) -from ttsim.interface_dag_elements.interface_node_objects import fail_or_warn_function +from ttsim.interface_dag_elements.interface_node_objects import warn_function +from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import ( @@ -64,17 +65,19 @@ def __init__(self, columns_overriding_functions: OrderedQNames) -> None: super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") -@fail_or_warn_function() +@warn_function() def functions_and_data_columns_overlap( policy_environment: PolicyEnvironment, labels__processed_data_columns: UnorderedQNames, ) -> None: """Warn if functions are overridden by data.""" + flat_policy_environment = dt.flatten_to_qnames(policy_environment) overridden_elements = sorted( { col for col in labels__processed_data_columns - if col in dt.flatten_to_qnames(policy_environment) + if col in flat_policy_environment + and not isinstance(flat_policy_environment.get(col), PolicyInput) }, ) if len(overridden_elements) > 0: diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 9c24444caf..530b6628ab 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -16,10 +16,11 @@ from ttsim import main from ttsim.interface_dag import load_flat_interface_functions_and_inputs from ttsim.interface_dag_elements.interface_node_objects import ( - FailOrWarnFunction, + FailFunction, InputDependentInterfaceFunction, InterfaceFunction, InterfaceInput, + WarnFunction, interface_function, ) from ttsim.tt_dag_elements import ( @@ -161,7 +162,7 @@ def plot_interface_dag( nodes_without_idifs = { qn: n for qn, n in nodes_without_idifs.items() - if not isinstance(n, FailOrWarnFunction) + if not isinstance(n, (FailFunction, WarnFunction)) } dag = dags.create_dag(functions=nodes_without_idifs, targets=None) diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index b1696602ce..f1b18f16da 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -47,7 +47,8 @@ def cached_policy_environment( date=date, orig_policy_objects={"root": root}, backend=backend, - fail_and_warn=False, + include_fail_nodes=False, + include_warn_nodes=False, main_target="policy_environment", ) @@ -99,7 +100,8 @@ def execute_test( tt_targets={"tree": test.target_structure}, rounding=True, backend=backend, - fail_and_warn=False, + include_fail_nodes=False, + include_warn_nodes=False, main_target="results__df_with_nested_columns", ) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 4dfaccb4a4..033682df0e 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -974,6 +974,8 @@ def a() -> int: policy_environment=policy_environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"b": None}}, + include_warn_nodes=False, + include_fail_nodes=False, rounding=False, backend=backend, main_targets=["results__tree", "fail_if__root_nodes_are_missing"], diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index b56fd16be3..8b003a6429 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -852,6 +852,8 @@ def test_can_override_ttsim_objects_with_data( policy_environment=nested_policy_environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, + include_warn_nodes=False, + include_fail_nodes=False, rounding=False, backend=backend, main_target=("results__tree"), diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index f654409883..04c4314adc 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -35,6 +35,7 @@ def test_warn_if_functions_and_data_columns_overlap(backend): }, tt_targets={"tree": {"some_target": None}}, rounding=False, + include_fail_nodes=False, backend=backend, main_target=("warn_if__functions_and_data_columns_overlap"), ) @@ -60,6 +61,7 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) policy_environment={"some_func": some_func}, tt_targets={"tree": {"some_func": None}}, rounding=False, + include_fail_nodes=False, backend=backend, main_target=("warn_if__functions_and_data_columns_overlap"), ) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 3fb48045a2..462c096446 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -22,7 +22,7 @@ from ttsim.interface_dag_elements.interface_node_objects import ( InputDependentInterfaceFunction, InterfaceInput, - fail_or_warn_function, + fail_function, input_dependent_interface_function, interface_function, interface_input, @@ -46,11 +46,11 @@ def interface_function_c(interface_function_a: int, interface_function_b: int) - return interface_function_a + interface_function_b -@fail_or_warn_function( +@fail_function( include_if_all_elements_present=["a"], include_if_any_element_present=["b"], ) -def some_fail_or_warn_function() -> None: +def some_fail_function() -> None: pass @@ -179,7 +179,7 @@ def interface_input_for_idif() -> Any: dt.qname_from_tree_path(p): n for p, n in load_flat_interface_functions_and_inputs().items() }, - "some_fail_or_warn_function": some_fail_or_warn_function, + "some_fail_function": some_fail_function, }, r'include\scondition[\s\S]+functions or inputs:[\s\S]+"a",\s+"b"', ), diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index cbd24c1aa0..e7448ce68e 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -116,6 +116,8 @@ def test_func(x): date=datetime.date(2024, 1, 1), tt_targets={"tree": {"namespace": {"test_func": None}}}, rounding=True, + include_fail_nodes=False, + include_warn_nodes=False, backend=backend, main_target=("results__tree"), ) @@ -152,6 +154,8 @@ def test_func_m(x: float) -> float: date=datetime.date(2024, 1, 1), tt_targets={"tree": {"test_func_y": None}}, rounding=True, + include_fail_nodes=False, + include_warn_nodes=False, backend=backend, main_target=("results__tree"), ) @@ -191,6 +195,8 @@ def test_func(x): policy_environment=policy_environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"test_func": None}}, + include_fail_nodes=False, + include_warn_nodes=False, rounding=False, backend=backend, main_target=("results__tree"), From 36574d1d5e5ca89180207b7fe66e11f5fd80cbe7 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 16 Jul 2025 10:50:33 +0200 Subject: [PATCH 071/109] Change calls of main so that `main_target` / `main_targets` is the first argument (#1028) ### What problem do you want to solve? With DAGs, you need to think backwards since everything is based on where you want to go. So we are pushing in the examples, GEP-7, and the interface definition that these should come first. We should adhere to that rule in our own codebase, this PR makes sure we do at this point in time. --- src/_gettsim_tests/test_jittability.py | 4 ++-- src/_gettsim_tests/test_policy.py | 6 ++--- src/_gettsim_tests/test_templates.py | 2 +- src/ttsim/plot_dag.py | 5 ++--- src/ttsim/testing_utils.py | 9 ++++---- .../test_data_converters.py | 2 +- .../interface_dag_elements/test_failures.py | 22 +++++++++---------- .../interface_dag_elements/test_mettsim.py | 4 ++-- .../test_policy_environment.py | 4 ++-- .../test_specialized_environment.py | 18 +++++++-------- .../interface_dag_elements/test_templates.py | 8 +++---- .../interface_dag_elements/test_warnings.py | 4 ++-- tests/ttsim/test_plot_dag.py | 2 +- tests/ttsim/tt_dag_elements/test_rounding.py | 6 ++--- 14 files changed, 47 insertions(+), 49 deletions(-) diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index f0f120b3ca..dc7c99312d 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -33,11 +33,11 @@ def cached_specialized_environment( backend: Literal["numpy", "jax"], ) -> SpecEnvWithPartialledParamsAndScalars: return main( + main_target=("specialized_environment", "with_partialled_params_and_scalars"), date=date, backend=backend, include_fail_nodes=False, include_warn_nodes=False, - main_target=("specialized_environment", "with_partialled_params_and_scalars"), ) @@ -67,11 +67,11 @@ def test_jittable(tree_path, fun, backend, xnp): with contextlib.suppress(NotImplementedError): main( + main_target=("raw_results", "columns"), date=date, specialized_environment={"with_partialled_params_and_scalars": env}, processed_data=processed_data, tt_targets={"qname": [qname]}, backend=backend, - main_target=("raw_results", "columns"), include_fail_nodes=False, ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index 76f264362c..7bc0cbc31f 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -99,13 +99,13 @@ def test_top_level_elements_not_repeated_in_paths( ): try: gettsim_objects = main( - backend=backend, - date=date, - rounding=False, main_targets=[ "specialized_environment__with_partialled_params_and_scalars", "labels__top_level_namespace", ], + backend=backend, + date=date, + rounding=False, ) except Exception: # noqa: BLE001 msg = ( diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 0a9ab3e236..24a075fdc1 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -11,10 +11,10 @@ def test_template_all_outputs_no_inputs(backend): res = main( + main_targets=["labels__grouping_levels", "templates__input_data_dtypes"], rounding=True, date_str="2025-01-01", backend=backend, - main_targets=["labels__grouping_levels", "templates__input_data_dtypes"], ) paths_with_unspecified_dtypes = [] diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 530b6628ab..517dbe1d89 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -105,10 +105,10 @@ def plot_tt_dag( The figure. """ environment = main( + main_target="policy_environment", date_str=date_str, orig_policy_objects={"root": root}, backend="numpy", - main_target="policy_environment", ) if node_selector: @@ -243,13 +243,12 @@ def _get_tt_dag_with_node_metadata( for k, v in qname_environment.items() if isinstance(v, PolicyInput) and k in qnames_to_plot ] - tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" env = main( + main_target="specialized_environment__without_tree_logic_and_with_derived_functions", policy_environment=environment, labels={"processed_data_columns": qnames_policy_inputs}, tt_targets={"qname": qnames_to_plot}, backend="numpy", - main_target=tgt, ) all_nodes = { diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index f1b18f16da..a2badde905 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -44,12 +44,12 @@ def cached_policy_environment( backend: Literal["numpy", "jax"], ) -> PolicyEnvironment: return main( + main_target="policy_environment", date=date, orig_policy_objects={"root": root}, backend=backend, include_fail_nodes=False, include_warn_nodes=False, - main_target="policy_environment", ) @@ -94,6 +94,7 @@ def execute_test( environment = cached_policy_environment(date=test.date, root=root, backend=backend) if test.target_structure: result_df = main( + main_target="results__df_with_nested_columns", input_data={"tree": test.input_tree}, policy_environment=environment, date=test.date, @@ -102,7 +103,6 @@ def execute_test( backend=backend, include_fail_nodes=False, include_warn_nodes=False, - main_target="results__df_with_nested_columns", ) if test.expected_output_tree: @@ -239,22 +239,21 @@ def check_env_completeness( ], ) -> None: environment = main( + main_target="policy_environment", date=date, backend="numpy", - main_target=("policy_environment"), orig_policy_objects=orig_policy_objects, ) qname_environment = dt.flatten_to_qnames(environment) qnames_policy_inputs = [ k for k, v in qname_environment.items() if isinstance(v, PolicyInput) ] - tgt = "specialized_environment__without_tree_logic_and_with_derived_functions" qname_env_with_derived_functions = main( + main_target="specialized_environment__without_tree_logic_and_with_derived_functions", policy_environment=environment, labels={"processed_data_columns": qnames_policy_inputs}, tt_targets={"qname": list(qname_environment)}, backend="numpy", - main_target=(tgt), ) all_nodes = { qn: dummy_callable(n) if not callable(n) else n diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index 27e26da0f2..db282b2dbd 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -231,13 +231,13 @@ def test_nested_data_to_dataframe( backend, ): results__tree = main( + main_target="results__tree", input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - main_target=("results__tree"), ) result_df = nested_data_to_df_with_mapped_columns( nested_data_to_convert=results__tree, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 033682df0e..45235710b8 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -131,10 +131,10 @@ def minimal_input_data(): def mettsim_environment(backend) -> PolicyEnvironment: return main( + main_target="policy_environment", orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, date=datetime.date(2025, 1, 1), backend=backend, - main_target=("policy_environment"), ) @@ -538,13 +538,13 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( backend, ): results__tree = main( + main_target="results__tree", input_data={"tree": minimal_data_tree}, date=datetime.date(2024, 1, 1), policy_environment=environment, tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - main_target=("results__tree"), ) with pytest.raises( ValueError, @@ -663,12 +663,12 @@ def test_fail_if_p_id_is_missing_via_main(backend): match="The input data must contain the `p_id` column.", ): main( + main_target="fail_if__input_data_is_invalid", input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__input_data_is_invalid"), ) @@ -772,13 +772,13 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( ): with pytest.raises(TypeError, match=match): main( + main_target=MainTarget.results.df_with_nested_columns, input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - main_target=MainTarget.results.df_with_nested_columns, ) @@ -807,13 +807,13 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt ): with pytest.raises(ValueError, match=match): main( + main_target=MainTarget.results.df_with_nested_columns, input_data={"tree": minimal_data_tree}, policy_environment=environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - main_target=MainTarget.results.df_with_nested_columns, ) @@ -834,12 +834,12 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): match="The input data must contain the `p_id` column.", ): main( + main_target="fail_if__input_data_is_invalid", input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__input_data_is_invalid"), ) @@ -862,12 +862,12 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): match="The following `p_id`s are not unique in the input data", ): main( + main_target="fail_if__input_data_is_invalid", input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__input_data_is_invalid"), ) @@ -912,12 +912,12 @@ def test_fail_if_input_data_has_different_lengths(backend): match="The lengths of the following columns do not match the length of the", ): main( + main_target="fail_if__input_data_is_invalid", input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, rounding=False, backend=backend, - main_target=("fail_if__input_data_is_invalid"), ) @@ -938,13 +938,13 @@ def c(b): match="The following data columns are missing", ): main( + main_targets=["results__tree", "fail_if__root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"c": None}}, rounding=False, backend=backend, - main_targets=["results__tree", "fail_if__root_nodes_are_missing"], ) @@ -970,6 +970,7 @@ def a() -> int: match="Note that the missing nodes contain columns that are grouped by ", ): main( + main_targets=["results__tree", "fail_if__root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -978,7 +979,6 @@ def a() -> int: include_fail_nodes=False, rounding=False, backend=backend, - main_targets=["results__tree", "fail_if__root_nodes_are_missing"], ) @@ -1020,12 +1020,12 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( match="The following targets have no corresponding function", ): main( + main_target="fail_if__targets_are_not_in_specialized_environment_or_data", input_data={"tree": minimal_input_data}, policy_environment={}, tt_targets={"tree": {"unknown_target": None}}, rounding=False, backend=backend, - main_target=("fail_if__targets_are_not_in_specialized_environment_or_data"), ) diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/interface_dag_elements/test_mettsim.py index bc5cbf2940..b46078c75f 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/interface_dag_elements/test_mettsim.py @@ -41,11 +41,11 @@ def get_orig_mettsim_objects() -> dict[ str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs ]: return main( - orig_policy_objects={"root": METTSIM_ROOT}, main_targets=[ "orig_policy_objects__column_objects_and_param_functions", "orig_policy_objects__param_specs", ], + orig_policy_objects={"root": METTSIM_ROOT}, )["orig_policy_objects"] @@ -117,10 +117,10 @@ def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "ja match=r"The following data columns are missing.", ): main( + main_target="results__tree", date_str="2020-01-01", input_data=InputData.flat(data), orig_policy_objects={"root": METTSIM_ROOT}, tt_targets={"tree": {"property_tax": {"amount_y": None}}}, - main_target="results__tree", backend=backend, ) diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index ec2b6877d4..04d006ab95 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -79,19 +79,19 @@ def test_add_jahresanfang(xnp): def test_input_is_recognized_as_potential_group_id(backend): assert "kin" in main( + main_target="labels__grouping_levels", orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - main_target=("labels__grouping_levels"), ) def test_p_id_not_recognized_as_potential_group_id(backend): assert "p" not in main( + main_target="labels__grouping_levels", orig_policy_objects={"root": METTSIM_ROOT}, date=datetime.date(2020, 1, 1), backend=backend, - main_target=("labels__grouping_levels"), ) diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 8b003a6429..dd411a695f 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -397,13 +397,13 @@ def test_create_agg_by_group_functions( backend, ): main( + main_target="results__tree", policy_environment=policy_environment, input_data={"tree": input_data__tree}, date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, - main_target=("results__tree"), ) @@ -414,13 +414,13 @@ def test_output_is_tree(minimal_input_data, backend, xnp): } out = main( + main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module": {"some_func": None}}}, rounding=False, backend=backend, - main_target=("results__tree"), ) assert isinstance(out, dict) @@ -447,13 +447,13 @@ def test_params_target_is_allowed(minimal_input_data): } out = main( + main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"some_param": None, "module": {"some_func": None}}}, rounding=False, backend="numpy", - main_target=("results__tree"), ) assert isinstance(out, dict) @@ -479,13 +479,13 @@ def b(a: int) -> int: "b": b, } results__tree = main( + main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"b": None}}, rounding=False, backend=backend, - main_target=("results__tree"), ) numpy.testing.assert_array_almost_equal( results__tree["b"], @@ -552,13 +552,13 @@ def test_user_provided_aggregate_by_group_specs(backend): expected = pd.Series([200, 200, 100], index=pd.Index(data["p_id"], name="p_id")) actual = main( + main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"betrag_m_fam": None}}}, rounding=False, backend=backend, - main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -596,13 +596,13 @@ def betrag_m_double_fam(betrag_m_double: float, fam_id: int) -> float: } actual = main( + main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, rounding=False, backend=backend, - main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -646,13 +646,13 @@ def max_betrag_double_m_fam(betrag_double_m: float, fam_id: int) -> float: } actual = main( + main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, rounding=False, backend=backend, - main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -733,13 +733,13 @@ def source() -> FloatColumn: ) actual = main( + main_target="results__df_with_nested_columns", input_data={"tree": minimal_input_data_shared_fam}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), tt_targets={"tree": target_tree}, rounding=False, backend=backend, - main_target=("results__df_with_nested_columns"), ) pd.testing.assert_series_equal( @@ -848,6 +848,7 @@ def test_can_override_ttsim_objects_with_data( backend, ): actual = main( + main_target="results__tree", input_data={"tree": {**minimal_input_data, **overriding_data}}, policy_environment=nested_policy_environment, date=datetime.date(2024, 1, 1), @@ -856,7 +857,6 @@ def test_can_override_ttsim_objects_with_data( include_fail_nodes=False, rounding=False, backend=backend, - main_target=("results__tree"), ) flat_actual = dt.flatten_to_tree_paths(actual) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index c78f7de849..55f6665f8e 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -79,6 +79,7 @@ def z(a__x: int, a__y: float) -> float: def test_template_all_outputs_no_inputs(backend): actual = main( + main_target="templates__input_data_dtypes", policy_environment={ "inp1": inp1, "p1": p1, @@ -90,13 +91,13 @@ def test_template_all_outputs_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} def test_template_all_outputs_with_inputs(backend, xnp): actual = main( + main_target="templates__input_data_dtypes", input_data={ "tree": { "p_id": xnp.array([4, 5, 6]), @@ -117,13 +118,13 @@ def test_template_all_outputs_with_inputs(backend, xnp): rounding=True, date_str="2025-01-01", backend=backend, - main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} def test_template_output_y_no_inputs(backend): actual = main( + main_target="templates__input_data_dtypes", tt_targets={"tree": {"a": {"y": None}}}, policy_environment={ "inp1": inp1, @@ -136,13 +137,13 @@ def test_template_output_y_no_inputs(backend): rounding=True, date_str="2025-01-01", backend=backend, - main_target=("templates__input_data_dtypes"), ) assert actual == {"a": {"inp2": "FloatColumn"}} def test_template_output_x_with_inputs(backend, xnp): actual = main( + main_target="templates__input_data_dtypes", input_data={ "tree": { "p_id": xnp.array([4, 5, 6]), @@ -164,6 +165,5 @@ def test_template_output_x_with_inputs(backend, xnp): rounding=True, date_str="2025-01-01", backend=backend, - main_target=("templates__input_data_dtypes"), ) assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index 04c4314adc..788a747308 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -23,6 +23,7 @@ def test_warn_if_functions_and_data_columns_overlap(backend): with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") main( + main_target="warn_if__functions_and_data_columns_overlap", input_data={ "tree": { "p_id": pd.Series([0]), @@ -37,7 +38,6 @@ def test_warn_if_functions_and_data_columns_overlap(backend): rounding=False, include_fail_nodes=False, backend=backend, - main_target=("warn_if__functions_and_data_columns_overlap"), ) # Check that we got exactly one warning assert len(w) == 1 @@ -52,6 +52,7 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) category=FunctionsAndDataColumnsOverlapWarning, ) main( + main_target="warn_if__functions_and_data_columns_overlap", input_data={ "tree": { "p_id": pd.Series([0]), @@ -63,5 +64,4 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) rounding=False, include_fail_nodes=False, backend=backend, - main_target=("warn_if__functions_and_data_columns_overlap"), ) diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 3e9400dc37..d9d917ef4e 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -236,10 +236,10 @@ def test_plot_full_interface_dag(include_fail_and_warn_nodes): ) def test_node_selector(node_selector, expected_nodes): environment = main( + main_target="policy_environment", date_str="2025-01-01", orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend="numpy", - main_target=("policy_environment"), ) dag = _get_tt_dag_with_node_metadata( environment=environment, diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index e7448ce68e..b4430b2fc1 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -111,6 +111,7 @@ def test_func(x): policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} results__tree = main( + main_target="results__tree", input_data={"tree": input_data__tree}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -119,7 +120,6 @@ def test_func(x): include_fail_nodes=False, include_warn_nodes=False, backend=backend, - main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["namespace"]["test_func"]), @@ -149,6 +149,7 @@ def test_func_m(x: float) -> float: } results__tree = main( + main_target="results__tree", input_data={"tree": data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -157,7 +158,6 @@ def test_func_m(x: float) -> float: include_fail_nodes=False, include_warn_nodes=False, backend=backend, - main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func_y"]), @@ -191,6 +191,7 @@ def test_func(x): } results__tree = main( + main_target="results__tree", input_data={"tree": data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -199,7 +200,6 @@ def test_func(x): include_warn_nodes=False, rounding=False, backend=backend, - main_target=("results__tree"), ) assert_series_equal( pd.Series(results__tree["test_func"]), From 8267dbdd47340eb65b8b0b6f1cf55c28c7f639f0 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 16 Jul 2025 16:16:04 +0200 Subject: [PATCH 072/109] Fix #1023 (#1026) ### What problem do you want to solve? Closes #1023 --- .../interface_dag_elements/data_converters.py | 17 ++----- src/ttsim/interface_dag_elements/fail_if.py | 42 +++++++++++++----- .../test_data_converters.py | 12 ----- .../interface_dag_elements/test_failures.py | 44 +++++++++++++++++-- 4 files changed, 73 insertions(+), 42 deletions(-) diff --git a/src/ttsim/interface_dag_elements/data_converters.py b/src/ttsim/interface_dag_elements/data_converters.py index 0b8d5d3a09..a16a587269 100644 --- a/src/ttsim/interface_dag_elements/data_converters.py +++ b/src/ttsim/interface_dag_elements/data_converters.py @@ -133,21 +133,10 @@ def df_with_mapped_columns_to_flat_data( """ path_to_array = {} for path, mapper_value in dt.flatten_to_tree_paths(mapper).items(): - if mapper_value in df.columns: - path_to_array[path] = xnp.asarray(df[mapper_value]) - elif isinstance(mapper_value, int | float | bool): - path_to_array[path] = xnp.asarray( - pd.Series( - [mapper_value] * len(df), - index=df.index, - ), - ) + if xnp.isscalar(mapper_value) and not isinstance(mapper_value, str): + path_to_array[path] = xnp.asarray([mapper_value] * len(df)) else: - msg = ( - f"Value of mapper path {path} is neither a column name in the provided " - "DataFrame nor a scalar value." - ) - raise ValueError(msg) + path_to_array[path] = xnp.asarray(df[mapper_value]) return path_to_array diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 4108b627b1..c74435d126 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -273,7 +273,7 @@ def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> tree=input_data__tree, leaf_checker=lambda leaf: isinstance( leaf, - int | pd.Series | numpy.ndarray | xnp.ndarray, + pd.Series | numpy.ndarray | xnp.ndarray, ), tree_name="input_data__tree", ) @@ -555,15 +555,26 @@ def input_df_mapper_columns_missing_in_df( input_data__df_and_mapper__df: pd.DataFrame, input_data__df_and_mapper__mapper: NestedInputsMapper, ) -> None: - """Fail if the input mapper has columns that are not in the input dataframe.""" + """Fail if the input mapper specifies columns that are not in the input dataframe. + + Parameters + ---------- + input_data__df_and_mapper__df + The input dataframe. + input_data__df_and_mapper__mapper + The input mapper. + xnp + The numpy module. + """ mapper_vals = dt.flatten_to_qnames(input_data__df_and_mapper__mapper).values() - missing_columns = [ - col for col in mapper_vals if col not in input_data__df_and_mapper__df.columns + expected_cols_in_df = [v for v in mapper_vals if isinstance(v, str)] + missing_cols_in_df = [ + v for v in expected_cols_in_df if v not in input_data__df_and_mapper__df.columns ] - if missing_columns: + if missing_cols_in_df: msg = format_errors_and_warnings( - "All columns in the input mapper must be present in the input dataframe. " - f"The following columns are missing: {missing_columns}", + "Some column names in the input mapper are not present in the input " + f"DataFrame. The following columns are missing: {missing_cols_in_df}.", ) raise ValueError(msg) @@ -571,8 +582,14 @@ def input_df_mapper_columns_missing_in_df( @fail_function() def input_df_mapper_has_incorrect_format( input_data__df_and_mapper__mapper: NestedInputsMapper, + xnp: ModuleType, ) -> None: - """Fail if the input tree to column name mapping has an incorrect format.""" + """Fail if the input mapper has an incorrect format. + + Fails if: + - The input mapper is not a valid TTSIM pytree. + - The input mapper has non-string paths. + """ if not isinstance(input_data__df_and_mapper__mapper, dict): msg = format_errors_and_warnings( """The inputs tree to column mapping must be a (nested) dictionary. Call @@ -590,12 +607,13 @@ def input_df_mapper_has_incorrect_format( ] if non_string_paths: msg = format_errors_and_warnings( - f"""All path elements of `inputs_tree_to_df_columns` must be strings. - Found the following paths that contain non-string elements: + f"""All path elements of `MainArgs.input_data.df_and_mapper.mapper` must be + strings. Found the following paths that contain non-string elements: {format_list_linewise(non_string_paths)} - Call `dags.tree.create_tree_with_input_types` to create a template. + Note that you can use `main(main_target=MainTarget.templates.input_data_dtypes)` + to create a template. """, ) raise TypeError(msg) @@ -603,7 +621,7 @@ def input_df_mapper_has_incorrect_format( incorrect_types = { k: type(v) for k, v in dt.flatten_to_qnames(input_data__df_and_mapper__mapper).items() - if not isinstance(v, str | int | float | bool) + if not xnp.isscalar(v) and not isinstance(v, str) } if incorrect_types: formatted_incorrect_types = "\n".join( diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index db282b2dbd..d7f0b4c12b 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -120,18 +120,6 @@ def test_df_with_mapped_columns_to_flat_data( ) -def test_df_with_mapped_columns_to_flat_data_fails_if_mapper_value_not_in_df(xnp): - with pytest.raises(ValueError, match="Value of mapper path"): - df_with_mapped_columns_to_flat_data( - mapper={ - "n1": "a", - "n2": "b", - }, - df=pd.DataFrame({"a": [1, 2, 3]}), - xnp=xnp, - ) - - @pytest.mark.parametrize( ( "environment", diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 45235710b8..263e294c19 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -4,14 +4,14 @@ import datetime import re from pathlib import Path -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal import dags.tree as dt import numpy import pandas as pd import pytest -from ttsim import MainTarget, main +from ttsim import InputData, MainTarget, main from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -23,6 +23,7 @@ group_variables_are_not_constant_within_groups, input_data_is_invalid, input_df_has_bool_or_numeric_column_names, + input_df_mapper_columns_missing_in_df, input_df_mapper_has_incorrect_format, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, @@ -51,6 +52,8 @@ PolicyEnvironment, ) +METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" + _GENERIC_PARAM_HEADER = { "name": {"de": "foo", "en": "foo"}, "description": {"de": "foo", "en": "foo"}, @@ -719,16 +722,17 @@ def test_fail_if_input_df_has_bool_or_numeric_column_names(df): True: 2, }, }, - "All path elements of `inputs_tree_to_df_columns` must be strings.", + "All path elements of `", ), ], ) def test_fail_if_input_df_mapper_has_incorrect_format( input_data__df_and_mapper__mapper, expected_error_message, + xnp: ModuleType, ): with pytest.raises(TypeError, match=expected_error_message): - input_df_mapper_has_incorrect_format(input_data__df_and_mapper__mapper) + input_df_mapper_has_incorrect_format(input_data__df_and_mapper__mapper, xnp=xnp) @pytest.mark.parametrize( @@ -1152,3 +1156,35 @@ def test_ttsim_param_with_active_periods( leaf_name=leaf_name, ) assert actual == expected + + +def test_fail_if_input_df_mapper_columns_missing_in_df(): + df = pd.DataFrame({"a": [1]}) + mapper = {"b": "a", "c": "d", "e": 1, "f": 1.5, "g": True, "h": "i"} + with pytest.raises( + ValueError, + match=r"The following columns are missing: \['d', 'i'\]", + ): + input_df_mapper_columns_missing_in_df( + input_data__df_and_mapper__df=df, + input_data__df_and_mapper__mapper=mapper, + ) + + +def test_fail_if_input_df_mapper_columns_missing_in_df_via_main( + backend: Literal["jax", "numpy"], +): + df = pd.DataFrame({"a": [1]}) + mapper = {"b": "a", "c": "d", "e": 1, "f": 1.5, "g": True, "h": "i"} + with pytest.raises( + ValueError, + match=r"The following columns are missing: \['d', 'i'\]", + ): + main( + input_data=InputData.df_and_mapper(df=df, mapper=mapper), + main_target=MainTarget.results.df_with_mapper, + orig_policy_objects={"root": METTSIM_ROOT}, + tt_targets=MainTarget.policy_environment, + date_str="2025-01-01", + backend=backend, + ) From 0e48d1d03f79002668244a61d1775753f6480448 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:34:28 +0200 Subject: [PATCH 073/109] Better error message for missing input data (#1017) ### What problem do you want to solve? Closes #1005 New error looks like this: ```shell E ValueError: The following arguments to `main` are missing for computing the desired output: E E [ E "('a',)", E ] E E E Note that the following missing nodes could have been created endogenously: E ('a',): E Provide one of the following: E All of: [('input_2',), ('input_3',)] or E Any of: [('input_1',)] ``` --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/interface_dag.py | 77 +++++++++++++++++++++++++++---- tests/ttsim/test_interface_dag.py | 74 +++++++++++++++++++++++++++-- 2 files changed, 138 insertions(+), 13 deletions(-) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 1fec898744..6d3fcf899c 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -93,8 +93,9 @@ def main( input_qnames["processed_data"] = {} input_qnames["processed_data_columns"] = None + flat_interface_objects = load_flat_interface_functions_and_inputs() nodes = _resolve_dynamic_interface_objects_to_static_nodes( - flat_interface_objects=load_flat_interface_functions_and_inputs(), + flat_interface_objects=flat_interface_objects, input_qnames=list(input_qnames), ) @@ -124,6 +125,7 @@ def main( _fail_if_root_nodes_of_interface_dag_are_missing( dag=dag, input_qnames=input_qnames, + flat_interface_objects=flat_interface_objects, ) def lexsort_key(x: str) -> int: @@ -396,22 +398,81 @@ def _remove_tree_logic_from_functions_in_collection( def _fail_if_root_nodes_of_interface_dag_are_missing( dag: dags.DiGraph, input_qnames: dict[str, Any], + flat_interface_objects: FlatInterfaceObjects, ) -> None: """Fail if root nodes are missing.""" root_nodes = nx.subgraph_view( dag, filter_node=lambda n: dag.in_degree(n) == 0, ).nodes - missing_nodes = [node for node in root_nodes if node not in input_qnames] + + missing_dynamic_nodes: dict[ + tuple[str, ...], list[InputDependentInterfaceFunction] + ] = {} + for p, f in flat_interface_objects.items(): + if isinstance(f, InputDependentInterfaceFunction): + new_path = (*p[:-1], f.leaf_name) + if ( + dt.qname_from_tree_path(new_path) in missing_nodes + and new_path not in missing_dynamic_nodes + ): + missing_dynamic_nodes[new_path] = [f] + elif new_path in missing_dynamic_nodes: + missing_dynamic_nodes[new_path].append(f) + if missing_nodes: - formatted = format_list_linewise( - [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes], - ) - raise ValueError( - f"The following arguments to `main` are missing for computing the " - f"desired output:\n{formatted}" + msg = ( + "The following arguments to `main` are missing for computing the " + "desired output:\n" + + format_list_linewise( + [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes] + ) ) + if missing_dynamic_nodes: + msg += _msg_for_missing_dynamic_nodes(missing_dynamic_nodes) + raise ValueError(msg) + + +def _msg_for_missing_dynamic_nodes( + paths_to_dynamic_nodes: dict[ + tuple[str, ...], list[InputDependentInterfaceFunction] + ], +) -> str: + """List the include conditions of dynamic nodes to provide them along the missing + nodes error message.""" + msg_nodes = [] + for p, dynamic_nodes in paths_to_dynamic_nodes.items(): + include_conditions_for_this_path: list[str] = [] + for f in dynamic_nodes: + conditions: list[str] = [] + if f.include_if_all_inputs_present: + paths = [ + dt.tree_path_from_qname(qn) + for qn in f.include_if_all_inputs_present + ] + conditions.append(f"All of: {paths}") + if f.include_if_any_input_present: + paths = [ + dt.tree_path_from_qname(qn) for qn in f.include_if_any_input_present + ] + conditions.append(f"Any of: {paths}") + if conditions: + include_conditions_for_this_path.append( + " or\n ".join(conditions) + ) + if include_conditions_for_this_path: + formatted_string = ( + f"{p}:\n Provide one of the following:\n " + + "\n ".join(include_conditions_for_this_path) + ) + msg_nodes.append(formatted_string) + + return ( + "\n\nNote that the following missing nodes can also be provided via " + "the following inputs:\n" + "\n".join(msg_nodes) + ) def _fail_if_requested_nodes_cannot_be_found( diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 462c096446..a4af429faf 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -88,6 +88,14 @@ def some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2( return input_1 + n1__input_2 +@input_dependent_interface_function( + include_if_any_input_present=["input_1"], + include_if_all_inputs_present=["input_2", "input_3"], +) +def a() -> int: + return 1 + + def test_load_flat_interface_functions_and_inputs() -> None: load_flat_interface_functions_and_inputs() @@ -372,12 +380,15 @@ def test_harmonize_main_targets(main_targets, expected): assert harmonized == expected -def test_fail_if_root_nodes_of_interface_dag_are_missing(): +def test_fail_if_root_nodes_of_interface_dag_are_missing_without_missing_dynamic_nodes(): # noqa: E501 + flat_interface_objects = { + ("interface_function_a",): interface_function_a, + ("interface_function_b",): interface_function_b, + ("interface_function_c",): interface_function_c, + } dag = dags.create_dag( functions={ - "interface_function_a": interface_function_a, - "interface_function_b": interface_function_b, - "interface_function_c": interface_function_c, + dt.qname_from_tree_path(p): f for p, f in flat_interface_objects.items() }, targets=None, ) @@ -386,4 +397,57 @@ def test_fail_if_root_nodes_of_interface_dag_are_missing(): ValueError, match=(r"The following arguments to `main` are missing for computing the"), ): - _fail_if_root_nodes_of_interface_dag_are_missing(dag=dag, input_qnames=["a"]) + _fail_if_root_nodes_of_interface_dag_are_missing( + dag=dag, + input_qnames=["a"], + flat_interface_objects=flat_interface_objects, + ) + + +def test_fail_if_root_nodes_of_interface_dag_are_missing_with_missing_dynamic_nodes(): + flat_interface_objects = { + ("a",): a, + ("interface_function_a",): interface_function_a, + } + dag = dags.create_dag( + functions={ + "interface_function_a": interface_function_a, + }, + targets=None, + ) + + with pytest.raises( + ValueError, + match=( + r"All of: \[\('input_2',\), \('input_3',\)\] or\n Any of: \[\('input_1',\)\]" # noqa: E501 + ), + ): + _fail_if_root_nodes_of_interface_dag_are_missing( + dag=dag, + input_qnames=[], + flat_interface_objects=flat_interface_objects, + ) + + +def test_fail_if_root_nodes_of_interface_dag_are_missing_dynamic_node_as_target(): + flat_interface_objects = { + ("some_idif_require_input_1",): some_idif_require_input_1, + } + dag = dags.create_dag( + functions={ + "some_idif_require_input_1": some_idif_require_input_1, + }, + targets=["some_idif_require_input_1"], + ) + + with pytest.raises( + ValueError, + match=( + r"(?!.*Note that the following missing nodes can also be provided via the following input).*" # noqa: E501 + ), + ): + _fail_if_root_nodes_of_interface_dag_are_missing( + dag=dag, + input_qnames=[], + flat_interface_objects=flat_interface_objects, + ) From 18a8fd6898aeffd8e20572d8733943729295f6a5 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Thu, 17 Jul 2025 11:17:42 +0200 Subject: [PATCH 074/109] Better fail/warn tests (#1027) ### What problem do you want to solve? Closes #1025 ### Todo Add tests via `main` for - [x] input_data_tree_is_invalid - [x] environment_is_invalid - [x] input_df_mapper_columns_missing_in_df - [x] targets_tree_is_invalid --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/interface_dag.py | 1 - .../interface_dag_elements/input_data.py | 5 +- .../interface_dag_elements/test_failures.py | 231 ++++++++++++++++-- .../interface_dag_elements/test_warnings.py | 3 + 4 files changed, 211 insertions(+), 29 deletions(-) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 6d3fcf899c..562d59baf6 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -76,7 +76,6 @@ def main( """ Main function that processes the inputs and returns the outputs. """ - input_qnames = _harmonize_inputs(locals()) if main_target is not None: if main_targets is not None: diff --git a/src/ttsim/interface_dag_elements/input_data.py b/src/ttsim/interface_dag_elements/input_data.py index 2edf9ca1ad..adbcd44efb 100644 --- a/src/ttsim/interface_dag_elements/input_data.py +++ b/src/ttsim/interface_dag_elements/input_data.py @@ -104,12 +104,15 @@ def flat_from_df_with_nested_columns( include_if_all_inputs_present=["input_data__tree"], leaf_name="flat", ) -def flat_from_tree(tree: NestedData) -> FlatData: +def flat_from_tree(tree: NestedData, xnp: ModuleType) -> FlatData: # noqa: ARG001 """The input DataFrame as a flattened data structure. Args: tree: The input tree. + xnp: + The backend to use, just put here so that fail_if.input_data_tree_is_invalid + runs before this. Returns ------- diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 263e294c19..b917ad1462 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -18,6 +18,7 @@ _ParamWithActivePeriod, active_periods_overlap, assert_valid_ttsim_pytree, + environment_is_invalid, foreign_keys_are_invalid_in_data, group_ids_are_outside_top_level_namespace, group_variables_are_not_constant_within_groups, @@ -649,32 +650,6 @@ def test_fail_if_group_variables_are_not_constant_within_groups(): ) -def test_fail_if_p_id_is_missing(xnp): - data = {("fam_id",): xnp.array([1, 2, 3])} - - with pytest.raises( - ValueError, - match="The input data must contain the `p_id` column.", - ): - input_data_is_invalid(data) - - -def test_fail_if_p_id_is_missing_via_main(backend): - data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} - with pytest.raises( - ValueError, - match="The input data must contain the `p_id` column.", - ): - main( - main_target="fail_if__input_data_is_invalid", - input_data={"tree": data}, - policy_environment={}, - tt_targets={"tree": {}}, - rounding=False, - backend=backend, - ) - - @pytest.mark.parametrize( "df", [ @@ -831,7 +806,7 @@ def test_fail_if_p_id_does_not_exist(xnp): input_data_is_invalid(data) -def test_fail_if_p_id_does_not_exist_via_main(backend): +def test_fail_if_p_id_is_missing_via_main(backend): data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} with pytest.raises( ValueError, @@ -842,6 +817,7 @@ def test_fail_if_p_id_does_not_exist_via_main(backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, + date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -870,6 +846,7 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, + date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -920,6 +897,7 @@ def test_fail_if_input_data_has_different_lengths(backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, + date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -1028,6 +1006,7 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( input_data={"tree": minimal_input_data}, policy_environment={}, tt_targets={"tree": {"unknown_target": None}}, + date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -1188,3 +1167,201 @@ def test_fail_if_input_df_mapper_columns_missing_in_df_via_main( date_str="2025-01-01", backend=backend, ) + + +@pytest.mark.parametrize( + ( + "tt_targets__tree", + "match", + ), + [ + ( + { + 1: None, + "number_of_individuals_kin": None, + }, + "Key 1 in tt_targets__tree must be a string but", + ), + ( + { + "number_of_individuals_kin": 1, + }, + r"Leaf at tt_targets__tree\[number_of_individuals_kin\] is invalid", + ), + ( + ["number_of_individuals_kin"], + "tt_targets__tree must be a dict, got", + ), + ( + "number_of_individuals_kin", + "tt_targets__tree must be a dict, got", + ), + ], +) +def test_invalid_tt_targets_tree( + tt_targets__tree, + match, + backend: Literal["jax", "numpy"], + xnp: ModuleType, + minimal_data_tree, +): + with pytest.raises(TypeError, match=match): + main( + main_target=MainTarget.results.df_with_nested_columns, + backend=backend, + input_data=InputData.tree( + tree={ + **minimal_data_tree, + "kin_id": xnp.array([0, 1, 2]), + } + ), + orig_policy_objects={"root": METTSIM_ROOT}, + date_str="2025-01-01", + tt_targets={"tree": tt_targets__tree}, + ) + + +@pytest.mark.parametrize( + ( + "input_data_tree", + "match", + ), + [ + ( + { + "number_of_individuals_kin": [1], + }, + r"Leaf at input_data__tree\[number_of_individuals_kin\] is invalid", + ), + ( + {"number_of_individuals_kin": "1"}, + r"Leaf at input_data__tree\[number_of_individuals_kin\] is invalid", + ), + ], +) +def test_invalid_input_data_tree_via_main( + input_data_tree, match, backend: Literal["jax", "numpy"], xnp: ModuleType +): + input_data_tree_with_p_id = { + **input_data_tree, + "p_id": xnp.array([2]), + } + with pytest.raises(TypeError, match=match): + main( + main_target=MainTarget.results.df_with_nested_columns, + backend=backend, + input_data=InputData.tree(tree=input_data_tree_with_p_id), + orig_policy_objects={"root": METTSIM_ROOT}, + date_str="2025-01-01", + ) + + +@pytest.mark.parametrize( + ( + "policy_environment", + "match", + ), + [ + ( + { + "invalid_leaf": 42, + }, + r"Leaf at policy_environment\[invalid_leaf\] is invalid", + ), + ( + { + "nested": { + "invalid_leaf": "not_allowed_string", + }, + }, + r"Leaf at policy_environment\[nested\]\[invalid_leaf\] is invalid", + ), + ( + { + "nested": { + "another_invalid": [1, 2, 3], + }, + }, + r"Leaf at policy_environment\[nested\]\[another_invalid\] is invalid", + ), + ( + { + "nested": { + "yet_another": {"dict": "not_allowed"}, + }, + }, + r"Leaf at policy_environment\[nested\]\[yet_another\]\[dict\] is invalid", + ), + ( + { + 1: "valid_string", + }, + "Key 1 in policy_environment must be a string but", + ), + ( + ["not_a_dict"], + "policy_environment must be a dict, got", + ), + ], +) +def test_fail_if_environment_is_invalid(policy_environment, match): + with pytest.raises(TypeError, match=match): + environment_is_invalid(policy_environment) + + +@pytest.mark.parametrize( + "policy_environment", + [ + # Valid environment with policy functions + { + "valid_func": policy_function(leaf_name="valid_func")(identity), + "another_func": policy_function(leaf_name="another_func")(return_one), + }, + # Valid environment with param functions + { + "valid_param": some_param_func_returning_array_of_length_2, + "another_param": some_param_func_returning_list_of_length_2, + }, + # Valid environment with param objects + { + "valid_param_obj": _SOME_DICT_PARAM, + "another_param_obj": _SOME_PIECEWISE_POLYNOMIAL_PARAM, + }, + # Valid environment with module types + { + "numpy_module": numpy, + "jax_string": "jax", + "numpy_string": "numpy", + }, + # Valid environment with nested structure + { + "nested": { + "valid_func": policy_function(leaf_name="nested_func")(identity), + "valid_param": some_param_func_returning_array_of_length_2, + }, + "top_level": _SOME_DICT_PARAM, + }, + # Valid environment with mixed types + { + "func": policy_function(leaf_name="func")(identity), + "param": some_param_func_returning_array_of_length_2, + "param_obj": _SOME_DICT_PARAM, + "module": numpy, + "backend": "jax", + }, + ], +) +def test_environment_is_invalid_passes(policy_environment): + """Test that valid environments pass the validation.""" + environment_is_invalid(policy_environment) + + +def test_invalid_input_data_as_object_via_main(backend: Literal["jax", "numpy"]): + with pytest.raises(TypeError, match="input_data__tree must be a dict, got"): + main( + main_target=MainTarget.results.df_with_nested_columns, + backend=backend, + input_data=InputData.tree(tree=object()), + orig_policy_objects={"root": METTSIM_ROOT}, + date_str="2025-01-01", + ) diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index 788a747308..3115d84ee8 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -1,5 +1,6 @@ from __future__ import annotations +import datetime import warnings import pandas as pd @@ -35,6 +36,7 @@ def test_warn_if_functions_and_data_columns_overlap(backend): "some_target": another_func, }, tt_targets={"tree": {"some_target": None}}, + date=datetime.date(2025, 1, 1), rounding=False, include_fail_nodes=False, backend=backend, @@ -61,6 +63,7 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) }, policy_environment={"some_func": some_func}, tt_targets={"tree": {"some_func": None}}, + date=datetime.date(2025, 1, 1), rounding=False, include_fail_nodes=False, backend=backend, From 00d4a2331c4383dceee4359341e538b594ba73ee Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Thu, 17 Jul 2025 18:26:44 +0200 Subject: [PATCH 075/109] Tighten ruff checks (#1033) ### What problem do you want to solve? Enable - [x] `INP001` (implicit namespace packages without init.) - [x] `PLR2004` (Magic values used in comparison) - [x] `PT006` (Allows only lists of tuples in parametrize, even if single argument) - [x] `PT007` (wrong type in parametrize) - [x] `S101` (use of asserts outside of tests) - [x] some more checks on individual files --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- pixi.lock | 72 +++++++++---------- pyproject.toml | 34 +++++---- .../arbeitslosengeld_2/aggregations.py | 2 +- .../arbeitslosengeld_2/regelbedarf.py | 4 +- .../einkommensteuer/abz\303\274ge/alter.py" | 8 +-- .../eink\303\274nfte/__init__.py" | 0 src/_gettsim/elterngeld/elterngeld.py | 7 +- src/_gettsim/familie/__init__.py | 0 src/_gettsim/grundsicherung/aggregations.py | 2 +- src/_gettsim/ids.py | 4 +- src/_gettsim/individual_characteristics.py | 2 +- src/_gettsim/kindergeld/kindergeld.py | 4 +- .../pflege/beitrag/beitrag.py | 2 +- .../pflege/beitrag/beitragssatz.py | 2 +- .../rente/erwerbsminderung/anspruch.yaml | 15 ++++ .../erwerbsminderung/erwerbsminderung.py | 4 +- .../rente/grundrente/grundrente.py | 6 +- src/_gettsim/wohnen/__init__.py | 0 src/_gettsim/wohngeld/einkommen.py | 2 +- src/_gettsim/wohngeld/miete.py | 30 ++++---- src/_gettsim/wohngeld/wohngeld.py | 13 ++-- src/_gettsim_tests/test_jittability.py | 2 +- src/_gettsim_tests/test_policy.py | 2 +- .../orig_policy_objects.py | 3 +- .../policy_environment.py | 16 +++-- src/ttsim/testing_utils.py | 2 +- .../column_objects_param_function.py | 9 +-- src/ttsim/tt_dag_elements/param_objects.py | 40 ++++++++--- .../tt_dag_elements/piecewise_polynomial.py | 5 +- src/ttsim/tt_dag_elements/vectorization.py | 2 +- .../interface_dag_elements/test_failures.py | 17 +++-- .../test_policy_environment.py | 6 +- .../interface_dag_elements/test_shared.py | 20 +++--- .../test_specialized_environment.py | 2 +- tests/ttsim/test_plot_dag.py | 6 +- tests/ttsim/tt_dag_elements/test_rounding.py | 12 ++-- tests/ttsim/tt_dag_elements/test_shared.py | 8 ++- .../tt_dag_elements/test_vectorization.py | 6 +- 38 files changed, 222 insertions(+), 149 deletions(-) rename tests/__init__ .py => "src/_gettsim/einkommensteuer/eink\303\274nfte/__init__.py" (100%) create mode 100644 src/_gettsim/familie/__init__.py create mode 100644 src/_gettsim/sozialversicherung/rente/erwerbsminderung/anspruch.yaml create mode 100644 src/_gettsim/wohnen/__init__.py diff --git a/pixi.lock b/pixi.lock index 1c89e41adb..6f5a8b5c19 100644 --- a/pixi.lock +++ b/pixi.lock @@ -262,7 +262,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -503,7 +503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -745,7 +745,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -994,7 +994,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -1283,7 +1283,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -1537,7 +1537,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -1791,7 +1791,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -2052,7 +2052,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -2330,7 +2330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -2576,7 +2576,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -2823,7 +2823,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -3077,7 +3077,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -3360,7 +3360,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -3601,7 +3601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -3842,7 +3842,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -4090,7 +4090,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -4368,7 +4368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -4609,7 +4609,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -4850,7 +4850,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -5098,7 +5098,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -5375,7 +5375,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -5617,7 +5617,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -5859,7 +5859,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -6108,7 +6108,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl @@ -6385,7 +6385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl @@ -6680,7 +6680,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl @@ -6927,7 +6927,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl @@ -7181,7 +7181,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl @@ -7435,7 +7435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 + - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl @@ -8759,9 +8759,9 @@ packages: purls: [] size: 47560 timestamp: 1750062514868 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9b996e0fe2779b560779b549fbd84dc1f9195396 +- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 name: dags - version: 0.3.1.dev11+g9b996e0 + version: 0.4.0 requires_dist: - flatten-dict - networkx @@ -9349,17 +9349,17 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev158+gf201eac1.d20250715 - sha256: 026cc72b6406bd553b9b6ea391f89d6db02850b7350e99596821bdea0f34a716 + version: 0.7.1.dev168+g8f823a87.d20250717 + sha256: d083810cce0ec87d8e54113fdae20ac7dbaed7ae9eb2e6646c6c3ceef9edb81d requires_dist: - ipywidgets - - networkx>=3.5,<4 + - networkx>=3.5 - numpy - numpy-groupies - openpyxl - - optree>=0.16.0,<0.17 + - optree>=0.16.0 - pandas - - plotly>=6.2.0,<7 + - plotly>=6.2.0 - pygments - pygraphviz - pytest diff --git a/pyproject.toml b/pyproject.toml index 6ae3418934..a50b9ab542 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,19 @@ classifiers = [ ] # Dependencies and requirements requires-python = ">=3.11" -dependencies = [ "ipywidgets", "numpy", "numpy-groupies", "pandas", "openpyxl", "pygments", "pygraphviz", "pytest", "pyyaml", "networkx>=3.5,<4", "plotly>=6.2.0,<7", "optree>=0.16.0,<0.17", +dependencies = [ + "ipywidgets", + "networkx>=3.5", + "numpy-groupies", + "numpy", + "openpyxl", + "optree>=0.16.0", + "pandas", + "plotly>=6.2.0", + "pygments", + "pygraphviz", + "pytest", + "pyyaml", ] @@ -214,41 +226,37 @@ extend-ignore = [ "N999", # Allow non-ASCII characters in file names. "PLC2401", # Allow non-ASCII characters in variable names. "PLC2403", # Allow non-ASCII function names for imports. - "PLR0913", # Allow too many arguments in function definitions. + "PLR0913", # Allow many arguments in function definitions. "PLR5501", # elif not supported by vectorization converter for Jax "TRY003", # Avoid specifying long messages outside the exception class # Ignored during transition phase # ====================================== "D", # docstrings - "INP001", # implicit namespace packages without init. - "PLR2004", # Magic values used in comparison - "PT006", # Allows only lists of tuples in parametrize, even if single argument - "PT007", # wrong type in parametrize - "S101", # use of asserts outside of tests - ] exclude = [] [tool.ruff.lint.per-file-ignores] "conftest.py" = ["ANN"] -"docs/**/*.ipynb" = ["T201"] +"docs/*" = ["INP001", "T201"] # Cannot have default values in test functions with fixtures -- not an issue here. "src/gettsim/__init__.py" = ["PT028"] # Mostly things vectorization can't handle "src/_gettsim/*" = ["E501", "PLR1714", "PLR1716", "E721", "SIM108", "RET"] +# Lohnsteuerklassen and age groups are fine to hard-code. +"src/_gettsim/lohnsteuer/*.py" = ["PLR2004"] +"src/_gettsim/familie/familie.py" = ["PLR2004"] # All tests return None and use asserts "src/_gettsim_tests/**/*.py" = ["ANN", "S101"] +# Long lines. "src/ttsim/interface_dag_elements/specialized_environment.py" = ["E501"] -"src/ttsim/interface_dag_elements/__init__.py" = ["TC"] "src/ttsim/interface_dag_elements/fail_if.py" = ["E501"] -"src/ttsim/interface_dag_elements/typing.py" = ["PGH", "PLR", "SIM114"] -"src/ttsim/plot_dag.py" = ["FBT002"] # Mostly things vectorization can't handle "tests/ttsim/mettsim/**/*.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] "tests/ttsim/tt_dag_elements/test_vectorization.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] # All tests return None and use asserts -"tests/ttsim/**/*.py" = ["ANN", "S101"] +"tests/ttsim/**/*.py" = ["ANN", "INP001", "PLR2004", "S101"] +# Long lines. "tests/ttsim/interface_dag_elements/test_failures.py" = ["E501"] # TODO: remove once ported nicely "src/ttsim/stale_code_storage.py" = ["ALL"] diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index f1512e6e5f..b0cb417f37 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -74,7 +74,7 @@ def ist_kind_bis_17_in_bedarfsgemeinschaft( alter: int, ist_kind_in_bedarfsgemeinschaft: bool ) -> bool: """Child under the age of 18 in Bedarfsgemeinschaft.""" - return ist_kind_in_bedarfsgemeinschaft and (alter <= 17) + return ist_kind_in_bedarfsgemeinschaft and (alter <= 17) # noqa: PLR2004 @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index de6b8eae63..8aef7275f5 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -58,8 +58,8 @@ def mehrbedarf_alleinerziehend_m( if ( familie__anzahl_kinder_bis_6_fg == 1 - or familie__anzahl_kinder_bis_15_fg == 2 - or familie__anzahl_kinder_bis_15_fg == 3 + or familie__anzahl_kinder_bis_15_fg == 2 # noqa: PLR2004 + or familie__anzahl_kinder_bis_15_fg == 3 # noqa: PLR2004 ): mehrbedarf = max( parameter_mehrbedarf_alleinerziehend["kind_bis_6_oder_2_3_kinder_bis_15"], diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" index d106f151b9..b3a227b820 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" @@ -140,12 +140,12 @@ def get_consecutive_int_1d_lookup_table_with_filled_up_tails( right_tail_key by filling the gaps with the minimum and maximum values from the original dictionary. """ + if not all(isinstance(k, int) for k in raw): + raise ValueError("All dictionary keys must be integers") min_key_in_spec = min(raw.keys()) max_key_in_spec = max(raw.keys()) - assert all(isinstance(k, int) for k in raw) - assert len(list(raw.keys())) == max_key_in_spec - min_key_in_spec + 1, ( - "Dictionary keys must be consecutive integers." - ) + if len(list(raw.keys())) != max_key_in_spec - min_key_in_spec + 1: + raise ValueError("Dictionary keys must be consecutive integers.") consecutive_dict_start = dict.fromkeys( range(left_tail_key, min_key_in_spec), raw[min_key_in_spec], diff --git a/tests/__init__ .py "b/src/_gettsim/einkommensteuer/eink\303\274nfte/__init__.py" similarity index 100% rename from tests/__init__ .py rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/__init__.py" diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index e124154a72..0c95c563d4 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -192,7 +192,10 @@ def bezugsmonate_unter_grenze_fg( parent. """ - if familie__alleinerziehend or bezugsmonate_partner >= 2: + if ( + familie__alleinerziehend + or bezugsmonate_partner >= max_bezugsmonate["partnermonate"] + ): out = ( bisherige_bezugsmonate_fg < max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] @@ -296,5 +299,5 @@ def jüngstes_kind_oder_mehrling( """ return ( - (alter_monate - familie__alter_monate_jüngstes_mitglied_fg) < 0.1 + (alter_monate - familie__alter_monate_jüngstes_mitglied_fg) < 0.1 # noqa: PLR2004 ) and ist_leistungsbegründendes_kind diff --git a/src/_gettsim/familie/__init__.py b/src/_gettsim/familie/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/grundsicherung/aggregations.py b/src/_gettsim/grundsicherung/aggregations.py index b33aac7e99..dd0c44f770 100644 --- a/src/_gettsim/grundsicherung/aggregations.py +++ b/src/_gettsim/grundsicherung/aggregations.py @@ -18,7 +18,7 @@ def ist_kind_in_einstandsgemeinschaft(alter: IntColumn) -> BoolColumn: # Einstandsgemeinschaft. This is not necessarily true. Rewrite once we refactor SGB # XII. # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 - return alter <= 17 + return alter <= 17 # noqa: PLR2004 @policy_function() diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index 75e4673517..7fba2a4809 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -131,7 +131,7 @@ def _assign_parents_fg_id( (p_id_elternteil_loc >= 0) * (fg_id == p_id + p_id * n) * (hh_id == hh_id[p_id_elternteil_loc]) - * (alter < 25) + * (alter < 25) # noqa: PLR2004 * (1 - children), fg_id[p_id_elternteil_loc], fg_id, @@ -159,7 +159,7 @@ def bg_id( # TODO(@MImmesberger): Remove hard-coded number # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 return xnp.where( - (arbeitslosengeld_2__eigenbedarf_gedeckt) * (alter < 25), + (arbeitslosengeld_2__eigenbedarf_gedeckt) * (alter < 25), # noqa: PLR2004 offset + p_id, fg_id, ) diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 7832197bf9..138f56e88a 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -9,4 +9,4 @@ def alter_bis_24(alter: int) -> bool: Trivial, but necessary in order to use the target for aggregation. """ - return alter <= 24 + return alter <= 24 # noqa: PLR2004 diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index b00ee9c954..8195a14c26 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -109,13 +109,13 @@ def leistungsbegründendes_kind_nach_stunden( ) -@policy_function() +@policy_function(end_date="2015-12-31") def kind_bis_10_mit_kindergeld( alter: int, ist_leistungsbegründendes_kind: bool, ) -> bool: """Child under the age of 11 and eligible for Kindergeld.""" - return ist_leistungsbegründendes_kind and (alter <= 10) + return ist_leistungsbegründendes_kind and (alter <= 10) # noqa: PLR2004 @policy_function(vectorization_strategy="not_required") diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index a61b2ad06c..8498978086 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -215,7 +215,7 @@ def betrag_versicherter_midijob_m_mit_verringertem_beitrag_für_eltern_mit_mehre + sozialversicherung__midijob_bemessungsentgelt_m * beitragssatz_nach_kinderzahl["zusatz_kinderlos"] ) - if anzahl_kinder_bis_24 >= 2: + if anzahl_kinder_bis_24 > 1: add = add - ( sozialversicherung__beitragspflichtige_einnahmen_aus_midijob_arbeitnehmer_m * beitragssatz_nach_kinderzahl["abschlag_für_kinder_bis_24"] diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 41707593e4..9547062427 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -60,7 +60,7 @@ def beitragssatz_arbeitnehmer_mit_abschlag_nach_kinderzahl( add = 0.0 if zahlt_zusatzbetrag_kinderlos: add = add + beitragssatz_nach_kinderzahl["zusatz_kinderlos"] - if anzahl_kinder_bis_24 >= 2: + if anzahl_kinder_bis_24 > 1: add = add - beitragssatz_nach_kinderzahl["abschlag_für_kinder_bis_24"] * min( anzahl_kinder_bis_24 - 1, 4, diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/anspruch.yaml b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/anspruch.yaml new file mode 100644 index 0000000000..f1df28c2b2 --- /dev/null +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/anspruch.yaml @@ -0,0 +1,15 @@ +--- +mindestpflichtbeitragszeiten_monate: + name: + de: Mindestpflichtbeitragszeiten für Erwerbsminderungsrente + en: Minimum number of required contribution months for disability pension + description: + de: >- + ... + en: >- + ... + unit: Months + reference_period: null + type: scalar + 2001-01-01: + value: 36 diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 3c0282c339..048fcb6076 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -72,6 +72,7 @@ def grundsätzlich_anspruchsberechtigt( teilweise_erwerbsgemindert: bool, sozialversicherung__rente__pflichtbeitragsmonate: float, sozialversicherung__rente__mindestwartezeit_erfüllt: bool, + mindestpflichtbeitragszeiten_monate: int, ) -> bool: """ Eligibility for Erwerbsminderungsrente. @@ -81,7 +82,8 @@ def grundsätzlich_anspruchsberechtigt( anspruch_erwerbsm_rente = ( (voll_erwerbsgemindert or teilweise_erwerbsgemindert) and sozialversicherung__rente__mindestwartezeit_erfüllt - and sozialversicherung__rente__pflichtbeitragsmonate >= 36 + and sozialversicherung__rente__pflichtbeitragsmonate + >= mindestpflichtbeitragszeiten_monate ) return anspruch_erwerbsm_rente diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 74b2b57603..7bcc8c2a71 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -108,18 +108,18 @@ def anzurechnendes_einkommen_m( # singles and those for married subjects # Note: Thresholds are defined relativ to rentenwert which is implemented by # dividing the income by rentenwert and multiply rentenwert to the result. - if familie__anzahl_personen_ehe == 2: + if familie__anzahl_personen_ehe == 1: out = _anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, rentenwert=sozialversicherung__rente__rentenwert, - parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_mit_partner, + parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_ohne_partner, xnp=xnp, ) else: out = _anzurechnendes_einkommen_m( einkommen_m_ehe=einkommen_m_ehe, rentenwert=sozialversicherung__rente__rentenwert, - parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_ohne_partner, + parameter_anzurechnendes_einkommen=anzurechnendes_einkommen_mit_partner, xnp=xnp, ) return out diff --git a/src/_gettsim/wohnen/__init__.py b/src/_gettsim/wohnen/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index e6356559eb..de96567e98 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -19,7 +19,7 @@ from types import ModuleType -@agg_by_p_id_function(agg_type=AggType.SUM) +@agg_by_p_id_function(agg_type=AggType.SUM, end_date="2015-12-31") def alleinerziehendenbonus( kindergeld__kind_bis_10_mit_kindergeld: bool, kindergeld__p_id_empfänger: int, diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index d975802931..1b6a4226db 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -38,7 +38,8 @@ def max_miete_m_lookup_mit_baujahr( tmp = raw_max_miete_m_nach_baujahr.copy() per_additional_person = tmp.pop("jede_weitere_person") max_n_p_defined = max(tmp.keys()) - assert all(isinstance(i, int) for i in tmp) + if not all(isinstance(i, int) for i in tmp): + raise ValueError("All keys must be integers") baujahre = sorted(tmp[1].keys()) lookup_dict = {} for i, baujahr in enumerate(baujahre): @@ -69,7 +70,8 @@ def max_miete_m_lookup_ohne_baujahr( expanded = raw_max_miete_m.copy() per_additional_person = expanded.pop("jede_weitere_person") max_n_p_defined = max(expanded.keys()) - assert all(isinstance(i, int) for i in expanded) + if not all(isinstance(i, int) for i in expanded): + raise ValueError("All keys must be integers") for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] expanded[n_p] = { ms: expanded[max_n_p_defined][ms] @@ -87,13 +89,14 @@ def min_miete_lookup( ) -> ConsecutiveIntLookupTableParamValue: """Minimum rent considered in Wohngeld calculation.""" max_n_p_normal = max_anzahl_personen["normale_berechnung"] - assert max(raw_min_miete_m.keys()) == max_n_p_normal, ( - "The maximum number of persons for the normal calculation of the basic" - "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " - f"(got: {max_n_p_normal}) must be the same as the maximum number of household " - "members in `koeffizienten_berechnungsformel` " - f"(got: {max(raw_min_miete_m.keys())})" - ) + if max(raw_min_miete_m.keys()) != max_n_p_normal: + raise ValueError( + "The maximum number of persons for the normal calculation of the basic" + "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " + f"(got: {max_n_p_normal}) must be the same as the maximum number of household " + "members in `koeffizienten_berechnungsformel` " + f"(got: {max(raw_min_miete_m.keys())})" + ) expanded = raw_min_miete_m.copy() for n_p in range(max_n_p_normal + 1, max_anzahl_personen["indizierung"] + 1): expanded[n_p] = raw_min_miete_m[max_n_p_normal] @@ -110,7 +113,8 @@ def heizkostenentlastung_m_lookup( expanded = raw_heizkostenentlastung_m.copy() per_additional_person = expanded.pop("jede_weitere_person") max_n_p_defined = max(expanded.keys()) - assert all(isinstance(i, int) for i in expanded) + if not all(isinstance(i, int) for i in expanded): + raise ValueError("All keys must be integers") for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] @@ -128,7 +132,8 @@ def dauerhafte_heizkostenkomponente_m_lookup( expanded = raw_dauerhafte_heizkostenkomponente_m.copy() per_additional_person = expanded.pop("jede_weitere_person") max_n_p_defined = max(expanded.keys()) - assert all(isinstance(i, int) for i in expanded) + if not all(isinstance(i, int) for i in expanded): + raise ValueError("All keys must be integers") for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] @@ -146,7 +151,8 @@ def klimakomponente_m_lookup( expanded = raw_klimakomponente_m.copy() per_additional_person = expanded.pop("jede_weitere_person") max_n_p_defined = max(expanded.keys()) - assert all(isinstance(i, int) for i in expanded) + if not all(isinstance(i, int) for i in expanded): + raise ValueError("All keys must be integers") for n_p in range(max_n_p_defined + 1, max_anzahl_personen["indizierung"] + 1): # type: ignore[operator] expanded[n_p] = ( expanded[max_n_p_defined] + (n_p - max_n_p_defined) * per_additional_person # type: ignore[operator] diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 9c05ecd705..e13052b926 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -193,12 +193,13 @@ def basisformel_params( c = {i: v["c"] for i, v in koeffizienten_berechnungsformel.items()} max_normal = max_anzahl_personen["normale_berechnung"] for koeff in [a, b, c]: - assert max(koeff.keys()) == max_normal, ( - "The maximum number of persons for the normal calculation of the basic" - "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " - f"(got: {max_normal}) must be the same as the maximum number of household " - f"members in `koeffizienten_berechnungsformel` (got: {max(koeff.keys())})" - ) + if max(koeff.keys()) != max_normal: + raise ValueError( + "The maximum number of persons for the normal calculation of the basic" + "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " + f"(got: {max_normal}) must be the same as the maximum number of household " + f"members in `koeffizienten_berechnungsformel` (got: {max(koeff.keys())})" + ) zusatzbetrag_nach_haushaltsgröße = dict.fromkeys(range(max_normal + 1), 0.0) for i in range(max_normal + 1, max_anzahl_personen["indizierung"] + 1): for koeff in [a, b, c]: diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index dc7c99312d..b972151a7f 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -43,7 +43,7 @@ def cached_specialized_environment( @pytest.mark.skipif_numpy @pytest.mark.parametrize( - "tree_path, fun", + ("tree_path", "fun"), get_orig_gettsim_column_functions(), ids=[str(x[0]) for x in get_orig_gettsim_column_functions()], ) diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index 7bc0cbc31f..65d358190c 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -77,7 +77,7 @@ def test_policy(test: PolicyTest, backend: Literal["numpy", "jax"]): ) def test_gettsim_policy_environment_is_complete(orig_gettsim_objects, date): """Test that GETTSIM's policy environment contains all root nodes of its DAG.""" - if date.year < 2015: + if date.year < 2015: # noqa: PLR2004 pytest.skip( "Policy environment for dates before 2015 are not complete. See issue #962." ) diff --git a/src/ttsim/interface_dag_elements/orig_policy_objects.py b/src/ttsim/interface_dag_elements/orig_policy_objects.py index 696faf9415..9e225e7614 100644 --- a/src/ttsim/interface_dag_elements/orig_policy_objects.py +++ b/src/ttsim/interface_dag_elements/orig_policy_objects.py @@ -134,7 +134,8 @@ def load_module(path: Path, root: Path) -> ModuleType: _msg = f"Could not load module spec for {path}, {root}" if spec is None: raise ImportError(_msg) - assert spec.loader is not None, _msg + if spec.loader is None: + raise ImportError(_msg) module = importlib.util.module_from_spec(spec) sys.modules[name] = module spec.loader.exec_module(module) diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index 79e27ddc2e..fd29b86e10 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -221,9 +221,10 @@ def _clean_one_param_spec( ) # Parameter ceased to exist if spec["type"] == "scalar": - assert "updates_previous" not in current_spec, ( - "'updates_previous' cannot be specified for scalar parameters" - ) + if "updates_previous" in current_spec: + raise ValueError( + "'updates_previous' cannot be specified for scalar parameters" + ) out["value"] = current_spec["value"] else: out["value"] = _get_param_value([spec[d] for d in policy_dates[:idx]]) @@ -243,10 +244,11 @@ def _get_param_value( current_spec.pop("note", None) current_spec.pop("reference", None) if updates_previous: - assert len(relevant_specs) > 1, ( - "'updates_previous' cannot be missing in the initial spec, found " - f"{relevant_specs}" - ) + if len(relevant_specs) <= 1: + raise ValueError( + "'updates_previous' cannot be missing in the initial spec, found " + f"{relevant_specs}" + ) return upsert_tree( base=_get_param_value(relevant_specs=relevant_specs[:-1]), to_upsert=current_spec, diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index a2badde905..4ab46c46af 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -118,7 +118,7 @@ def execute_test( check_dtype=False, ) except AssertionError as e: - assert set(result_df.columns) == set(expected_df.columns) + assert set(result_df.columns) == set(expected_df.columns) # noqa: S101 cols_with_differences = [] for col in expected_df.columns: try: diff --git a/src/ttsim/tt_dag_elements/column_objects_param_function.py b/src/ttsim/tt_dag_elements/column_objects_param_function.py index 7e2b1f70a5..97770004d5 100644 --- a/src/ttsim/tt_dag_elements/column_objects_param_function.py +++ b/src/ttsim/tt_dag_elements/column_objects_param_function.py @@ -244,12 +244,13 @@ def _fail_if_rounding_has_wrong_type(rounding_spec: RoundingSpec | None) -> None Raises ------ - AssertionError + TypeError If rounding_spec is not a RoundingSpec or None. """ - assert isinstance(rounding_spec, RoundingSpec | None), ( - f"rounding_spec must be a RoundingSpec or None, got {rounding_spec}" - ) + if not isinstance(rounding_spec, RoundingSpec | None): + raise TypeError( + f"`rounding_spec` must be a `RoundingSpec` or `None`, got {rounding_spec}" + ) @dataclass(frozen=True) diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py index 65bf10f24b..dbee48cd22 100644 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -79,7 +79,10 @@ class DictParam(ParamObject): def __post_init__(self) -> None: super().__post_init__() - assert all(x not in self.value for x in ["note", "reference"]) + if any(x in self.value for x in ["note", "reference"]): + raise ValueError( + "'note' and 'reference' cannot be keys in the value dictionary" + ) @dataclass(frozen=True) @@ -161,7 +164,10 @@ class RawParam(ParamObject): def __post_init__(self) -> None: super().__post_init__() - assert all(x not in self.value for x in ["note", "reference"]) + if any(x in self.value for x in ["note", "reference"]): + raise ValueError( + "'note' and 'reference' cannot be keys in the value dictionary" + ) @dataclass(frozen=True) @@ -245,7 +251,8 @@ def _fill_phase_inout( first_m_since_ad_to_consider = _m_since_ad(y=raw.pop("first_year_to_consider"), m=1) last_m_since_ad_to_consider = _m_since_ad(y=raw.pop("last_year_to_consider"), m=12) - assert all(isinstance(k, int) for k in raw) + if not all(isinstance(k, int) for k in raw): + raise ValueError("All keys must be integers") first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] first_month_phase_inout: int = min(raw[first_year_phase_inout].keys()) first_m_since_ad_phase_inout = _m_since_ad( @@ -258,8 +265,16 @@ def _fill_phase_inout( y=last_year_phase_inout, m=last_month_phase_inout, ) - assert first_m_since_ad_to_consider <= first_m_since_ad_phase_inout - assert last_m_since_ad_to_consider >= last_m_since_ad_phase_inout + if first_m_since_ad_to_consider > first_m_since_ad_phase_inout: + raise ValueError( + "`first_m_since_ad_to_consider` must be less than or equal to " + "`first_m_since_ad_phase_inout`." + ) + if last_m_since_ad_to_consider < last_m_since_ad_phase_inout: + raise ValueError( + "`last_m_since_ad_to_consider` must be greater than or equal to " + "`last_m_since_ad_phase_inout`." + ) before_phase_inout: dict[int, float] = { b_m: _year_fraction(raw[first_year_phase_inout][first_month_phase_inout]) for b_m in range(first_m_since_ad_to_consider, first_m_since_ad_phase_inout) @@ -292,11 +307,20 @@ def get_year_based_phase_inout_of_age_thresholds_param_value( """ first_year_to_consider = raw.pop("first_year_to_consider") last_year_to_consider = raw.pop("last_year_to_consider") - assert all(isinstance(k, int) for k in raw) + if not all(isinstance(k, int) for k in raw): + raise ValueError("All keys must be integers") first_year_phase_inout: int = sorted(raw)[0] # type: ignore[assignment] last_year_phase_inout: int = sorted(raw)[-1] # type: ignore[assignment] - assert first_year_to_consider <= first_year_phase_inout - assert last_year_to_consider >= last_year_phase_inout + if first_year_to_consider > first_year_phase_inout: + raise ValueError( + "`first_year_to_consider` must be less than or equal to " + "`first_year_phase_inout`." + ) + if last_year_to_consider < last_year_phase_inout: + raise ValueError( + "`last_year_to_consider` must be greater than or equal to " + "`last_year_phase_inout`." + ) before_phase_inout: dict[int, float] = { b_y: _year_fraction(raw[first_year_phase_inout]) for b_y in range(first_year_to_consider, first_year_phase_inout) diff --git a/src/ttsim/tt_dag_elements/piecewise_polynomial.py b/src/ttsim/tt_dag_elements/piecewise_polynomial.py index 47036c417c..879d594c7e 100644 --- a/src/ttsim/tt_dag_elements/piecewise_polynomial.py +++ b/src/ttsim/tt_dag_elements/piecewise_polynomial.py @@ -45,9 +45,8 @@ class RatesOptions: ), } -assert set(OPTIONS_REGISTRY.keys()) == set(get_args(FUNC_TYPES)), ( - "Keys in OPTIONS_REGISTRY must match FUNC_TYPES" -) +if set(OPTIONS_REGISTRY.keys()) != set(get_args(FUNC_TYPES)): + raise ValueError("Keys in OPTIONS_REGISTRY must match FUNC_TYPES") def piecewise_polynomial( diff --git a/src/ttsim/tt_dag_elements/vectorization.py b/src/ttsim/tt_dag_elements/vectorization.py index 574c0e63ce..1a38c9e9b3 100644 --- a/src/ttsim/tt_dag_elements/vectorization.py +++ b/src/ttsim/tt_dag_elements/vectorization.py @@ -385,7 +385,7 @@ def _call_to_call_from_module( attr=func_id, ctx=ast.Load(), ) - elif func_id in ("max", "min") and len(args) == 2: + elif func_id in ("max", "min") and len(args) == 2: # noqa: PLR2004 attr = func_id + "imum" # max -> maximum, min -> minimum call.func = ast.Attribute( value=ast.Name(id=module, ctx=ast.Load()), diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index b917ad1462..22e009fd0f 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -191,7 +191,7 @@ def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): @pytest.mark.parametrize( - "orig_tree_with_column_objects_and_param_functions, orig_tree_with_params", + ("orig_tree_with_column_objects_and_param_functions", "orig_tree_with_params"), [ # Same global module, no overlapping periods, no name clashes. ( @@ -372,7 +372,7 @@ def test_fail_if_active_periods_overlap_passes( @pytest.mark.parametrize( - "orig_tree_with_column_objects_and_param_functions, orig_tree_with_params", + ("orig_tree_with_column_objects_and_param_functions", "orig_tree_with_params"), [ # Exact overlap. ( @@ -965,7 +965,12 @@ def a() -> int: @pytest.mark.parametrize( - "policy_environment, tt_targets, labels__processed_data_columns, expected_error_match", + ( + "policy_environment", + "tt_targets", + "labels__processed_data_columns", + "expected_error_match", + ), [ ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), @@ -1013,8 +1018,8 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( @pytest.mark.parametrize( - "param_spec, leaf_name, expected", - ( + ("param_spec", "leaf_name", "expected"), + [ ( { "name": {"de": "spam", "en": "spam"}, @@ -1123,7 +1128,7 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( ), ], ), - ), + ], ) def test_ttsim_param_with_active_periods( param_spec: OrigParamSpec, diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index 04d006ab95..90e85715f4 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -96,7 +96,7 @@ def test_p_id_not_recognized_as_potential_group_id(backend): @pytest.mark.parametrize( - "date_string, expected", + ("date_string", "expected"), [ ("2023-01-20", datetime.date(2023, 1, 20)), ], @@ -137,7 +137,7 @@ def test_func(): @pytest.mark.parametrize( - "date_string, expected", + ("date_string", "expected"), [ ("2023-01-20", datetime.date(2023, 1, 20)), ], @@ -186,7 +186,7 @@ def test_func(): @pytest.mark.parametrize( - "tree, last_day, function_name_last_day, function_name_next_day", + ("tree", "last_day", "function_name_last_day", "function_name_next_day"), [ ( {"housing_benefits": {"eligibility": {"requirement_fulfilled_fam": None}}}, diff --git a/tests/ttsim/interface_dag_elements/test_shared.py b/tests/ttsim/interface_dag_elements/test_shared.py index 4565b9167f..22e2ecc50a 100644 --- a/tests/ttsim/interface_dag_elements/test_shared.py +++ b/tests/ttsim/interface_dag_elements/test_shared.py @@ -33,7 +33,7 @@ def test_fail_if_invalid_date(): @pytest.mark.parametrize( - "base, path_to_upsert, value_to_upsert, expected", + ("base", "path_to_upsert", "value_to_upsert", "expected"), [ ({}, ["a"], 1, {"a": 1}), ({"a": 1}, ["a"], 2, {"a": 2}), @@ -51,7 +51,7 @@ def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): @pytest.mark.parametrize( - "base, path_to_insert, value_to_insert, expected", + ("base", "path_to_insert", "value_to_insert", "expected"), [ ({}, ("a",), 1, {"a": 1}), ({"a": 1}, ("b",), 2, {"a": 1, "b": 2}), @@ -67,7 +67,7 @@ def test_insert_path_and_value(base, path_to_insert, value_to_insert, expected): @pytest.mark.parametrize( - "base, path_to_insert, value_to_insert", + ("base", "path_to_insert", "value_to_insert"), [ ({"a": 1}, ("a",), 2), ], @@ -82,7 +82,7 @@ def test_insert_path_and_value_invalid(base, path_to_insert, value_to_insert): @pytest.mark.parametrize( - "paths, expected", + ("paths", "expected"), [ ("a", {"a": None}), (("a", "b"), {"a": {"b": None}}), @@ -94,7 +94,7 @@ def test_create_tree_from_path_and_value(paths, expected): @pytest.mark.parametrize( - "paths, value, expected", + ("paths", "value", "expected"), [ ((), {"a": None}, {"a": None}), ((), {"a": 1}, {"a": 1}), @@ -105,7 +105,7 @@ def test_create_tree_from_path_and_value_if_path_is_empty(paths, value, expected @pytest.mark.parametrize( - "left, right, expected", + ("left", "right", "expected"), [ ({}, {"a": 1}, {"a": 1}), ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), @@ -120,7 +120,7 @@ def test_merge_trees_valid(left, right, expected): @pytest.mark.parametrize( - "left, right", + ("left", "right"), [({"a": 1}, {"a": 2}), ({"a": 1}, {"a": 1}), ({"a": {"b": 1}}, {"a": {"b": 5}})], ) def test_merge_trees_invalid(left, right): @@ -129,7 +129,7 @@ def test_merge_trees_invalid(left, right): @pytest.mark.parametrize( - "base_dict, update_dict, expected", + ("base_dict", "update_dict", "expected"), [ ({}, {"a": 1}, {"a": 1}), ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), @@ -145,7 +145,7 @@ def test_upsert_tree(base_dict, update_dict, expected): @pytest.mark.parametrize( - "tree_to_partition, reference_tree, expected", + ("tree_to_partition", "reference_tree", "expected"), [ ( { @@ -210,7 +210,7 @@ def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, exp @pytest.mark.parametrize( - "target_name, expected", + ("target_name", "expected"), [ (("namespace1__foo"), None), (("foo_kin"), "kin_id"), diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index dd411a695f..9751ee1b75 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -686,7 +686,7 @@ def sum_source_m_by_p_id_someone_else( @pytest.mark.parametrize( - ("agg_functions, leaf_name, target_tree, expected"), + ("agg_functions", "leaf_name", "target_tree", "expected"), [ ( { diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index d9d917ef4e..89c1ef44db 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -45,10 +45,10 @@ def some_policy_function(): @pytest.mark.parametrize( - ("include_fail_and_warn_nodes",), + "include_fail_and_warn_nodes", [ - (True,), - (False,), + True, + False, ], ) def test_plot_full_interface_dag(include_fail_and_warn_nodes): diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index b4430b2fc1..411d1f2408 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -85,7 +85,7 @@ def test_func(): def test_malformed_rounding_specs(): - with pytest.raises(AssertionError): + with pytest.raises(TypeError): @policy_function(rounding_spec={"base": 1, "direction": "updsf"}) def test_func(): @@ -93,7 +93,7 @@ def test_func(): @pytest.mark.parametrize( - "rounding_spec, input_values, exp_output", + ("rounding_spec", "input_values", "exp_output"), rounding_specs_and_exp_results, ) def test_rounding(rounding_spec, input_values, exp_output, backend): @@ -168,7 +168,7 @@ def test_func_m(x: float) -> float: @pytest.mark.parametrize( - "rounding_spec, input_values_exp_output, ignore_since_no_rounding", + ("rounding_spec", "input_values_exp_output", "ignore_since_no_rounding"), rounding_specs_and_exp_results, ) def test_no_rounding( @@ -210,7 +210,7 @@ def test_func(x): @pytest.mark.parametrize( - "rounding_spec, input_values, exp_output", + ("rounding_spec", "input_values", "exp_output"), rounding_specs_and_exp_results, ) def test_rounding_callable(rounding_spec, input_values, exp_output, xnp): @@ -230,7 +230,7 @@ def test_func(income): @pytest.mark.parametrize( - "rounding_spec, input_values, exp_output", + ("rounding_spec", "input_values", "exp_output"), rounding_specs_and_exp_results, ) def test_rounding_spec(rounding_spec, input_values, exp_output, xnp): @@ -251,7 +251,7 @@ def test_func(income): @pytest.mark.parametrize( - "base, direction, to_add_after_rounding, match", + ("base", "direction", "to_add_after_rounding", "match"), [ (1, "upper", 0, "`direction` must be one of"), (5, "closest", 0, "`direction` must be one of"), diff --git a/tests/ttsim/tt_dag_elements/test_shared.py b/tests/ttsim/tt_dag_elements/test_shared.py index 136d85542e..245750bbdd 100644 --- a/tests/ttsim/tt_dag_elements/test_shared.py +++ b/tests/ttsim/tt_dag_elements/test_shared.py @@ -14,7 +14,13 @@ @pytest.mark.parametrize( - "foreign_key, primary_key, target, value_if_foreign_key_is_missing, expected", + ( + "foreign_key", + "primary_key", + "target", + "value_if_foreign_key_is_missing", + "expected", + ), [ ( numpy.array([1, 2, 3]), diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py index d502d484ff..bd0706e6c3 100644 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -299,7 +299,7 @@ def f18_exp(x): # ====================================================================================== -@pytest.mark.parametrize("func, expected, args", TEST_CASES) +@pytest.mark.parametrize(("func", "expected", "args"), TEST_CASES) def test_change_if_to_where_source(func, expected, args): # noqa: ARG001 exp = inspect.getsource(expected) exp = exp.replace("_exp", "") @@ -307,7 +307,7 @@ def test_change_if_to_where_source(func, expected, args): # noqa: ARG001 assert string_equal(exp, got) -@pytest.mark.parametrize("func, expected, args", TEST_CASES) +@pytest.mark.parametrize(("func", "expected", "args"), TEST_CASES) def test_change_if_to_where_wrapper(func, expected, args): got_func = _make_vectorizable(func, backend="numpy", xnp=numpy) got = got_func(*args) @@ -375,7 +375,7 @@ def test_disallowed_operation_wrapper(func): for year in range(1990, 2023): @pytest.mark.parametrize( - "funcname, func", + ("funcname", "func"), ( (funcname, pf.function) for funcname, pf in dt.flatten_to_tree_paths( From 3a8e8948f1628807b72bab8f81fbb817d4f4aadb Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Fri, 18 Jul 2025 13:43:35 +0200 Subject: [PATCH 076/109] Change namespace of private Renteneinnahmen (#1029) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Closes #893 Changes: - Change namespace to Einkommensteuer/Einkünfte/Sonstige/Renten - Add three types of private pension income: gefördert / betrieblich / regulär - Implement the current state of law regarding their treatment for SV contributions and taxation Issue for historical support of TT rules: #1030 --- interface-prototype.ipynb | 4 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 14 +- .../eink\303\274nfte/sonstige/inputs.py" | 11 +- .../sonstige/rente/__init__.py" | 1 + .../sonstige/rente/inputs.py" | 46 +++++++ .../eink\303\274nfte/sonstige/rente/rente.py" | 53 ++++++++ .../sonstige/rente/rente.yaml" | 21 ++- .../eink\303\274nfte/sonstige/sonstige.py" | 44 +----- .../grundsicherung/im_alter/einkommen.py | 39 ++++-- .../kranken/beitrag/einkommen.py | 6 +- .../rente/grundrente/grundrente.py | 4 +- .../sozialversicherung/rente/inputs.py | 5 - .../unterhaltsvorschuss.py | 14 +- src/_gettsim/wohngeld/einkommen.py | 16 +-- .../2005-01-01/hh_id_8.yaml | 14 +- .../2006-01-01/hh_id_4.yaml | 34 ++++- .../2009-01-01/hh_id_3.yaml | 19 ++- .../2009-01-01/kind_20_jahre_in_bg.yaml | 19 ++- .../2013-01-01/hh_id_12.yaml | 19 ++- .../2013-01-01/hh_id_13.yaml | 19 ++- .../2013-01-01/hh_id_14.yaml | 19 ++- .../2013-01-01/hh_id_15.yaml | 19 ++- .../2013-01-01/hh_id_2.yaml | 19 ++- .../2018-01-01/hh_id_9.yaml | 34 ++++- .../2019-01-01/hh_id_6.yaml | 30 ++-- .../2019-01-01/test_age_limits_13_14.yaml | 30 ++-- .../2019-01-01/test_age_limits_5_6.yaml | 30 ++-- .../2022-01-01/hh_id_10.yaml | 30 ++-- .../2022-01-01/hh_id_11.yaml | 30 ++-- .../2023-01-01/hh_id_16.yaml | 14 +- .../2023-01-01/hh_id_19.yaml | 30 ++-- .../2023-01-01/hh_id_25.yaml | 24 +++- .../2023-01-01/test_age_limits_17_18.yaml | 29 +++- .../2023-01-01/test_family_high_wealth.yaml | 30 ++-- .../test_family_wealth_below_threshold.yaml | 30 ++-- .../2023-07-01/hh_id_20.yaml | 14 +- .../2023-07-01/hh_id_21.yaml | 30 ++-- .../2023-07-01/hh_id_22.yaml | 30 ++-- .../2023-07-01/hh_id_23.yaml | 30 ++-- .../2023-07-01/hh_id_24.yaml | 14 +- ...inerz_kein_kindergeld\303\274bertrag.yaml" | 30 ++-- ...nerz_teilw_kindergeld\303\274bertrag.yaml" | 30 ++-- ...erz_voller_kindergeld\303\274bertrag.yaml" | 30 ++-- .../2024-01-01/single_no_income.yaml | 14 +- .../2024-01-01/skip_single_no_children.yaml | 10 +- .../2010-01-01/hh_id_1.yaml | 14 +- .../2010-01-01/hh_id_2.yaml | 14 +- .../2010-01-01/hh_id_3.yaml | 14 +- .../2010-01-01/hh_id_4.yaml | 14 +- .../2010-01-01/hh_id_5.yaml | 14 +- .../2015-01-01/hh_id_16.yaml | 14 +- .../2015-01-01/hh_id_17.yaml | 19 ++- .../2017-01-01/hh_id_18.yaml | 19 ++- .../2018-01-01/hh_id_10.yaml | 14 +- .../2018-01-01/hh_id_11.yaml | 14 +- .../2018-01-01/hh_id_12.yaml | 14 +- .../2018-01-01/hh_id_7.yaml | 14 +- .../2018-01-01/hh_id_8.yaml | 14 +- .../2018-01-01/hh_id_9.yaml | 14 +- .../2019-01-01/hh_id_13.yaml | 19 ++- .../2020-01-01/hh_id_14.yaml | 37 +++-- .../2020-01-01/hh_id_19.yaml | 37 +++-- .../2020-01-01/hh_id_20.yaml | 37 +++-- .../2019-01-01/hh_id_1.yaml | 23 +++- .../2019-01-01/hh_id_2.yaml | 23 +++- .../2019-01-01/hh_id_3.yaml | 11 +- .../2019-01-01/hh_id_4.yaml | 11 +- .../2019-01-01/hh_id_5.yaml | 11 +- .../2019-01-01/hh_id_6.yaml | 11 +- .../2019-01-01/hh_id_7.yaml | 11 +- .../2019-01-01/hh_id_8.yaml | 11 +- ...ne_unterschied_entgeltpunkte_ost_west.yaml | 11 +- .../2025-01-01/wohnort_ost_irrelevant.yaml | 11 +- .../im_alter/2017-07-01/hh_id_13.yaml | 15 +- .../im_alter/2017-07-01/hh_id_16.yaml | 11 +- .../im_alter/2017-07-01/hh_id_17.yaml | 11 +- .../im_alter/2017-07-01/hh_id_6.yaml | 15 +- .../im_alter/2018-07-01/hh_id_12.yaml | 11 +- .../im_alter/2018-07-01/hh_id_20.yaml | 11 +- .../im_alter/2018-07-01/hh_id_22.yaml | 11 +- .../im_alter/2018-07-01/hh_id_3.yaml | 11 +- .../im_alter/2020-07-01/hh_id_18.yaml | 11 +- .../im_alter/2020-07-01/hh_id_19.yaml | 15 +- .../im_alter/2021-07-01/hh_id_1.yaml | 15 +- .../im_alter/2021-07-01/hh_id_14.yaml | 11 +- .../im_alter/2021-07-01/hh_id_15.yaml | 11 +- .../im_alter/2021-07-01/hh_id_2.yaml | 11 +- .../im_alter/2021-07-01/hh_id_21.yaml | 15 +- .../im_alter/2021-07-01/hh_id_23.yaml | 15 +- .../im_alter/2021-07-01/hh_id_5.yaml | 11 +- .../im_alter/2021-07-01/hh_id_7.yaml | 11 +- .../im_alter/2021-07-01/hh_id_9.yaml | 15 +- .../im_alter/2022-07-01/hh_id_10.yaml | 11 +- .../im_alter/2022-07-01/hh_id_11.yaml | 11 +- .../im_alter/2022-07-01/hh_id_24.yaml | 15 +- .../im_alter/2022-07-01/hh_id_25.yaml | 15 +- .../im_alter/2022-07-01/hh_id_4.yaml | 15 +- .../im_alter/2022-07-01/hh_id_8.yaml | 11 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 18 ++- ...eringf\303\274gig_besch\303\244ftigt.yaml" | 13 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 13 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 13 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 13 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 13 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 13 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 18 ++- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 13 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 13 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 13 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 13 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 13 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 13 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 13 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 13 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 13 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 13 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 13 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 13 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 13 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 13 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 13 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 13 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 13 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 13 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 13 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 13 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 13 +- .../above_new_beitragsbemessungsgrenze.yaml" | 13 +- .../above_old_beitragsbemessungsgrenze.yaml" | 13 +- .../below_beitragsbemessungsgrenze.yaml" | 13 +- .../2024-01-01/einkommen_in_gleitzone.yaml" | 23 +++- .../2025-01-01/einkommen_in_gleitzone.yaml" | 23 +++- .../rente/grundrente/2021-07-01/hh_id_1.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 5 +- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 5 +- .../grundrente/2021-07-01/married_couple.yaml | 7 +- .../2018-01-01/hh_id_5.yaml | 19 ++- .../older_child_parent_with_income.yaml | 30 ++-- .../older_child_parent_without_income.yaml | 30 ++-- .../young_child_parent_without_income.yaml | 30 ++-- .../2019-08-01/hh_id_1.yaml | 19 ++- .../wohngeld/2006-01-01/hh_id_15.yaml | 83 ++++++++---- .../wohngeld/2006-01-01/hh_id_4.yaml | 56 +++++--- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 25 +++- .../wohngeld/2013-01-01/hh_id_2.yaml | 25 +++- .../wohngeld/2013-01-01/hh_id_9.yaml | 25 +++- .../wohngeld/2016-01-01/hh_id_1.yaml | 38 ++++-- .../wohngeld/2018-01-01/hh_id_7.yaml | 128 ++++++++++++------ .../wohngeld/2018-01-01/hh_id_8.yaml | 65 ++++++--- .../2018-01-01/verm\303\266gen_zu_hoch.yaml" | 53 ++++++-- .../wohngeld/2019-01-01/hh_id_5.yaml | 18 ++- .../wohngeld/2021-01-01/hh_id_10.yaml | 18 ++- .../wohngeld/2023-01-01/hh_id_11.yaml | 18 ++- .../wohngeld/2023-01-01/hh_id_12.yaml | 18 ++- .../wohngeld/2023-01-01/hh_id_13.yaml | 38 ++++-- .../wohngeld/2023-01-01/hh_id_14.yaml | 65 ++++++--- .../wohngeld/2023-01-01/hh_id_16.yaml | 47 +++++-- .../wohngeld/2023-01-01/hh_id_17.yaml | 56 +++++--- .../wohngeld/2023-01-01/mindesteinkommen.yaml | 65 ++++++--- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 56 +++++--- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 74 ++++++---- ...shalt_1400_euro_monatliches_einkommen.yaml | 18 ++- ...shalt_2000_euro_monatliches_einkommen.yaml | 18 ++- 177 files changed, 2618 insertions(+), 938 deletions(-) create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/__init__.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" create mode 100644 "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" rename "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" => "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.yaml" (50%) diff --git a/interface-prototype.ipynb b/interface-prototype.ipynb index ad71f34b04..a6322da124 100644 --- a/interface-prototype.ipynb +++ b/interface-prototype.ipynb @@ -180,8 +180,8 @@ " \"aus_selbstständiger_arbeit\": {\"betrag_m\": \"income_from_self_employment\"},\n", " \"aus_kapitalvermögen\": {\"kapitalerträge_m\": \"income_from_capital\"},\n", " \"sonstige\": {\n", - " \"ohne_renten_m\": \"income_from_other_sources\",\n", - " \"renteneinkünfte_m\": \"pension_income\",\n", + " \"alle_weiteren_m\": \"income_from_other_sources\",\n", + " \"betrag_m\": \"pension_income\",\n", " },\n", " },\n", " \"abzüge\": {\n", diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 3f7df5c77e..97ea632704 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -82,12 +82,15 @@ def nettoeinkommen_vor_abzug_freibetrag_m( @policy_function(start_date="2005-01-01") def bruttoeinkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: float, + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, sozialversicherung__rente__altersrente__betrag_m: float, - sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__rente__erwerbsminderung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, elterngeld__betrag_m: float, ) -> float: @@ -97,12 +100,15 @@ def bruttoeinkommen_m( """ return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + + einkommensteuer__einkünfte__sonstige__alle_weiteren_m + + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m + sozialversicherung__rente__altersrente__betrag_m - + sozialversicherung__rente__private_rente_betrag_m + + sozialversicherung__rente__erwerbsminderung__betrag_m + sozialversicherung__arbeitslosen__betrag_m + elterngeld__betrag_m ) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" index aae73b27d0..0258e4ff1d 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -6,18 +6,9 @@ @policy_input() -def ohne_renten_m() -> float: +def alle_weiteren_m() -> float: """Additional income: includes private and public transfers that are not yet implemented in GETTSIM (e.g., BAföG, Kriegsopferfürsorge). Excludes income from public and private pensions. """ - - -@policy_input(start_date="2021-01-01") -def renteneinkünfte_vorjahr_m() -> float: - """Income from private and public pensions in the previous year. - - GETTSIM can calculate this input based on the data of the previous year using the - target `("einkommensteuer", "einkünfte", "sonstige", "renteneinkünfte_m")`. - """ diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/__init__.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/__init__.py" new file mode 100644 index 0000000000..9d48db4f9f --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/__init__.py" @@ -0,0 +1 @@ +from __future__ import annotations diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" new file mode 100644 index 0000000000..6054433b7f --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" @@ -0,0 +1,46 @@ +"""Input columns.""" + +from __future__ import annotations + +from ttsim.tt_dag_elements import policy_input + + +@policy_input() +def alle_weiteren_m() -> float: + """Additional income: includes private and public transfers that are not yet + implemented in GETTSIM (e.g., BAföG, Kriegsopferfürsorge). + + Excludes income from public and private pensions. + """ + + +@policy_input(start_date="2021-01-01") +def gesamtbetrag_vorjahr_m() -> float: + """Income from private and public pensions in the previous year. + + GETTSIM can calculate this input based on the data of the previous year using the + target `("einkommensteuer", "einkünfte", "sonstige", "betrag_m")`. + """ + + +@policy_input() +def sonstige_private_vorsorge_m() -> float: + """Monthly payout from private pensions without tax-favored contributions. + + This refers to pension payments from plans where the original + contributions were not tax-deductible (or tax-exempt). + """ + + +@policy_input() +def geförderte_private_vorsorge_m() -> float: + """Monthly payout from private pensions with tax-favored contributions. + + This refers to pension payments from plans where the original + contributions were tax-deductible (or tax-exempt). Primarily Riesterrente. + """ + + +@policy_input() +def betriebliche_altersvorsorge_m() -> float: + """Amount of monthly occupational pension.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" new file mode 100644 index 0000000000..b2a4953b9c --- /dev/null +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" @@ -0,0 +1,53 @@ +"""Sonstige Einkünfte according to § 22 EStG.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from types import ModuleType + +from ttsim.tt_dag_elements import ( + PiecewisePolynomialParamValue, + piecewise_polynomial, + policy_function, +) + + +@policy_function() +def betrag_m( + ertragsanteil: float, + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__erwerbsminderung__betrag_m: float, + geförderte_private_vorsorge_m: float, + sonstige_private_vorsorge_m: float, + betriebliche_altersvorsorge_m: float, +) -> float: + """Pension income counting towards taxable income. + + Reference: § 22 EStG + """ + return ( + ertragsanteil + * ( + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__erwerbsminderung__betrag_m + + sonstige_private_vorsorge_m + ) + + betriebliche_altersvorsorge_m + + geförderte_private_vorsorge_m + ) + + +@policy_function() +def ertragsanteil( + sozialversicherung__rente__jahr_renteneintritt: int, + parameter_ertragsanteil: PiecewisePolynomialParamValue, + xnp: ModuleType, +) -> float: + """Share of pensions subject to income taxation.""" + return piecewise_polynomial( + x=sozialversicherung__rente__jahr_renteneintritt, + parameters=parameter_ertragsanteil, + xnp=xnp, + ) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.yaml" similarity index 50% rename from "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" rename to "src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.yaml" index 33da0c585c..3c74cb8613 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente.yaml" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.yaml" @@ -1,22 +1,29 @@ --- -parameter_ertragsanteil_der_rente: +parameter_ertragsanteil: name: de: >- - Ertragsanteil-Funktion für den Anteil an sozialversicherungspflichtigen - Renteneinkommen, der versteuert werden muss (piecewise linear) + Parameter der Ertragsanteil-Funktion für den Anteil an + sozialversicherungspflichtigen Renteneinkommen, das versteuert werden muss. en: >- - Piecewise linear function for calculating the share of pensions subject to income - taxation. + Parameter of the Ertragsanteil-function for the share of pensions subject to + income taxation that is subject to income tax. description: de: >- + Renten werden mit dem Ertragsanteil besteuert sofern sie nicht aus einer staatlich + geförderten (d.h. in der Einzahlungsphase steuerlich begünstigten) Vorsorgeform + stammen. § 22 EStG Diese Funktion ist hier ab 2002 angegeben. Vor 2002 das Steuersystem ist nicht implementiert. - en: null + en: >- + Pensions are taxed with the Ertragsanteil unless they come from a state-sponsored + (i.e. tax-benefited) pension fund. + § 22 EStG + This function is given from 2002 onwards. Before 2002, the tax system is not + implemented. unit: null reference_period: null type: piecewise_linear - # type: require_converter 2002-01-01: 0: lower_threshold: -inf diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" index 139acecf85..b0212e071f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -2,49 +2,13 @@ from __future__ import annotations -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from types import ModuleType - -from ttsim.tt_dag_elements import ( - PiecewisePolynomialParamValue, - piecewise_polynomial, - policy_function, -) +from ttsim.tt_dag_elements import policy_function @policy_function() def betrag_m( - ohne_renten_m: float, - renteneinkünfte_m: float, + alle_weiteren_m: float, + rente__betrag_m: float, ) -> float: """Total sonstige Einkünfte.""" - return ohne_renten_m + renteneinkünfte_m - - -@policy_function() -def renteneinkünfte_m( - ertragsanteil_der_rente: float, - sozialversicherung__rente__altersrente__betrag_m: float, - sozialversicherung__rente__private_rente_betrag_m: float, -) -> float: - """Pension income counting towards taxable income.""" - return ertragsanteil_der_rente * ( - sozialversicherung__rente__altersrente__betrag_m - + sozialversicherung__rente__private_rente_betrag_m - ) - - -@policy_function() -def ertragsanteil_der_rente( - sozialversicherung__rente__jahr_renteneintritt: int, - parameter_ertragsanteil_der_rente: PiecewisePolynomialParamValue, - xnp: ModuleType, -) -> float: - """Share of pensions subject to income taxation.""" - return piecewise_polynomial( - x=sozialversicherung__rente__jahr_renteneintritt, - parameters=parameter_ertragsanteil_der_rente, - xnp=xnp, - ) + return alle_weiteren_m + rente__betrag_m diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index 988a8f1090..4a91c354a1 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -16,9 +16,9 @@ @policy_function() def einkommen_m( erwerbseinkommen_m: float, - private_rente_betrag_m: float, + einkommen_aus_zusätzlicher_altersvorsorge_m: float, gesetzliche_rente_m: float, - einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, kapitaleinkommen_brutto_m: float, einkommensteuer__betrag_m_sn: float, @@ -34,8 +34,8 @@ def einkommen_m( total_income = ( erwerbseinkommen_m + gesetzliche_rente_m - + private_rente_betrag_m - + einkommensteuer__einkünfte__sonstige__ohne_renten_m + + einkommen_aus_zusätzlicher_altersvorsorge_m + + einkommensteuer__einkünfte__sonstige__alle_weiteren_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + kapitaleinkommen_brutto_m + elterngeld__anrechenbarer_betrag_m @@ -110,8 +110,10 @@ def kapitaleinkommen_brutto_m_mit_freibetrag( @policy_function(start_date="2011-01-01") -def private_rente_betrag_m( - sozialversicherung__rente__private_rente_betrag_m: float, +def einkommen_aus_zusätzlicher_altersvorsorge_m( + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: float, anrechnungsfreier_anteil_private_renteneinkünfte: PiecewisePolynomialParam, grundsicherung__regelbedarfsstufen: Regelbedarfsstufen, xnp: ModuleType, @@ -121,18 +123,25 @@ def private_rente_betrag_m( Legal reference: § 82 SGB XII Abs. 4 """ - sozialversicherung__rente__private_rente_betrag_m_amount_exempt = ( - piecewise_polynomial( - x=sozialversicherung__rente__private_rente_betrag_m, - parameters=anrechnungsfreier_anteil_private_renteneinkünfte, - xnp=xnp, - ) + freibetrag = piecewise_polynomial( + x=( + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m + ), + parameters=anrechnungsfreier_anteil_private_renteneinkünfte, + xnp=xnp, ) upper = grundsicherung__regelbedarfsstufen.rbs_1 / 2 - return sozialversicherung__rente__private_rente_betrag_m - min( - sozialversicherung__rente__private_rente_betrag_m_amount_exempt, - upper, + return ( + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m + - min( + freibetrag, + upper, + ) ) diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index d38f512e44..52be30bd2d 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -106,12 +106,14 @@ def bezugsgröße_selbstständige_m( @policy_function() def bemessungsgrundlage_rente_m( sozialversicherung__rente__altersrente__betrag_m: float, - sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__rente__erwerbsminderung__betrag_m: float, + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: float, beitragsbemessungsgrenze_m: float, ) -> float: """Pension income which is subject to health insurance contribution.""" return min( sozialversicherung__rente__altersrente__betrag_m - + sozialversicherung__rente__private_rente_betrag_m, + + sozialversicherung__rente__erwerbsminderung__betrag_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m, beitragsbemessungsgrenze_m, ) diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index 7bcc8c2a71..e20d5bb3cf 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -29,7 +29,7 @@ def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: @policy_function(start_date="2021-01-01") def einkommen_m( - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m: float, + einkommensteuer__einkünfte__sonstige__rente__gesamtbetrag_vorjahr_m: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, @@ -57,7 +57,7 @@ def einkommen_m( """ # Sum income over different income sources. return ( - einkommensteuer__einkünfte__sonstige__renteneinkünfte_vorjahr_m + einkommensteuer__einkünfte__sonstige__rente__gesamtbetrag_vorjahr_m + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m # income from self-employment + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m # rental income diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py index ac16d12b81..f8ab37012c 100644 --- a/src/_gettsim/sozialversicherung/rente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -101,11 +101,6 @@ def pflichtbeitragsmonate() -> float: """Total months of mandatory pension insurance contributions.""" -@policy_input() -def private_rente_betrag_m() -> float: - """Amount of monthly private pension.""" - - @policy_input() def pflegeberücksichtigungszeiten_monate() -> float: """Total months of home care provision (01.01.1992-31.03.1995).""" diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index 6c717250ea..ee67d177c6 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -300,23 +300,29 @@ def mindesteinkommen_erreicht( @policy_function(start_date="2017-07-01") def einkommen_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, - einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: float, + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: float, sozialversicherung__rente__altersrente__betrag_m: float, - sozialversicherung__rente__private_rente_betrag_m: float, + sozialversicherung__rente__erwerbsminderung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, ) -> float: """Calculate relevant income for advance on alimony payment.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - + einkommensteuer__einkünfte__sonstige__ohne_renten_m + + einkommensteuer__einkünfte__sonstige__alle_weiteren_m + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + sozialversicherung__rente__altersrente__betrag_m - + sozialversicherung__rente__private_rente_betrag_m + + sozialversicherung__rente__erwerbsminderung__betrag_m + + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m + sozialversicherung__arbeitslosen__betrag_m ) diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index de96567e98..fcbdd06af5 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -140,8 +140,8 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, - einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, - einkommensteuer__einkünfte__sonstige__renteneinkünfte_m: float, + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: float, + einkommensteuer__einkünfte__sonstige__rente__betrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, abzugsanteil_vom_einkommen_für_steuern_sozialversicherung: float, @@ -160,13 +160,13 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + + einkommensteuer__einkünfte__sonstige__rente__betrag_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m ) eink_ind = ( - einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommen + transfers + einkommensteuer__einkünfte__sonstige__alle_weiteren_m ) return (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind @@ -178,8 +178,8 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, - einkommensteuer__einkünfte__sonstige__ohne_renten_m: float, - einkommensteuer__einkünfte__sonstige__renteneinkünfte_m: float, + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: float, + einkommensteuer__einkünfte__sonstige__rente__betrag_m: float, unterhalt__tatsächlich_erhaltener_betrag_m: float, unterhaltsvorschuss__betrag_m: float, elterngeld__anrechenbarer_betrag_m: float, @@ -203,14 +203,14 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( transfers = ( sozialversicherung__arbeitslosen__betrag_m - + einkommensteuer__einkünfte__sonstige__renteneinkünfte_m + + einkommensteuer__einkünfte__sonstige__rente__betrag_m + unterhalt__tatsächlich_erhaltener_betrag_m + unterhaltsvorschuss__betrag_m + elterngeld__anrechenbarer_betrag_m ) eink_ind = ( - einkommen + transfers + einkommensteuer__einkünfte__sonstige__ohne_renten_m + einkommen + transfers + einkommensteuer__einkünfte__sonstige__alle_weiteren_m ) return (1 - abzugsanteil_vom_einkommen_für_steuern_sozialversicherung) * eink_ind diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml index 812be118cd..2f2ffb66b4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2005-01-01/hh_id_8.yaml @@ -34,8 +34,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -76,10 +83,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 bezieht_rente: - false - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml index 831e1edd8f..4b4f47bfe8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2006-01-01/hh_id_4.yaml @@ -74,12 +74,31 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -184,18 +203,19 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml index 337c42872a..3791393611 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/hh_id_3.yaml @@ -44,9 +44,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 250.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -103,12 +113,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml index a2bd195312..805d0b7c6c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2009-01-01/kind_20_jahre_in_bg.yaml @@ -44,9 +44,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 250.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -103,12 +113,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml index 540e6297b0..276947bf04 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_12.yaml @@ -44,9 +44,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -103,12 +113,13 @@ inputs: betrag_m: - 300.0 - 300.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - true - true - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml index 47bd13e12d..0c771cf6c7 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_13.yaml @@ -44,9 +44,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -103,12 +113,13 @@ inputs: betrag_m: - 0.0 - 300.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - true - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml index 7409799333..e375945bcd 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_14.yaml @@ -46,9 +46,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -105,12 +115,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml index 9c1b48f284..5c892852a4 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_15.yaml @@ -46,9 +46,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -105,12 +115,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml index c7a08dac2f..3e91b16d98 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2013-01-01/hh_id_2.yaml @@ -44,9 +44,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -103,12 +113,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 bezieht_rente: - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml index e2d850deb9..dd32c3b569 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2018-01-01/hh_id_9.yaml @@ -74,12 +74,31 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -184,18 +203,19 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml index 17173ded18..7c8c051cee 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/hh_id_6.yaml @@ -54,10 +54,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -130,14 +143,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml index ffeb1d6150..06426cfe6b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_13_14.yaml @@ -54,10 +54,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -130,14 +143,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml index 31b20fb862..b94b1d8e54 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2019-01-01/test_age_limits_5_6.yaml @@ -54,10 +54,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -130,14 +143,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml index 9712f59518..bf2ba9565b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_10.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml index 75e8f0599d..aeea9fe04f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2022-01-01/hh_id_11.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml index f62e270e54..252e3e08d9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_16.yaml @@ -34,8 +34,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -76,10 +83,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 bezieht_rente: - false - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml index af6615e126..bc432fc679 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_19.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -136,14 +149,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml index e2f18ff7f6..e418aff93b 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/hh_id_25.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -131,6 +144,11 @@ inputs: - 0.0 - 140.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 @@ -140,10 +158,6 @@ inputs: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml index b342be0668..fb04cefcbb 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_age_limits_17_18.yaml @@ -66,11 +66,27 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 - 0.0 - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -159,16 +175,17 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml index ab0dc9a7d4..ec9d00aba3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_high_wealth.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml index 2128fb1744..da9b5cf4d9 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-01-01/test_family_wealth_below_threshold.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml index 89abed0e88..73f3ee996a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_20.yaml @@ -34,8 +34,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -76,10 +83,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 bezieht_rente: - false - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml index 5fb2200f85..fdf72cd440 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_21.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml index 9c77c02a62..beca94b5e2 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_22.yaml @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -132,14 +145,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml index 7f02722f20..8a518e0cd3 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_23.yaml @@ -57,10 +57,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -137,14 +150,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml index 18f40b9438..58f3223f6c 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2023-07-01/hh_id_24.yaml @@ -34,8 +34,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -76,10 +83,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 bezieht_rente: - false - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" index 4722243cda..3c4ae27e65 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_kein_kindergeld\303\274bertrag.yaml" @@ -56,10 +56,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -128,14 +141,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" index 78455bc48e..6d84434ef7 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_teilw_kindergeld\303\274bertrag.yaml" @@ -57,10 +57,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -129,14 +142,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" index 26f957be4b..4b4a92bbbd 100644 --- "a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" +++ "b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/alleinerz_voller_kindergeld\303\274bertrag.yaml" @@ -57,10 +57,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -129,14 +142,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 bezieht_rente: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index 7c80b973ca..ec54606f5a 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -38,8 +38,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -88,10 +95,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 bezieht_rente: - false - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index 71f3819a9e..a1d65deb5f 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -30,7 +30,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__ist_selbstständig: - false - einkommensteuer__einkünfte__sonstige__ohne_renten_m: + einkommensteuer__einkünfte__sonstige__alle_weiteren_m: - 0.0 einkommensteuer__gemeinsam_veranlagt: - false @@ -71,7 +71,13 @@ inputs: - 0.0 sozialversicherung__rente__bezieht_rente: - false - sozialversicherung__rente__private_rente_betrag_m: + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + einkommensteuer__einkünfte__sonstige__sonstige_private_vorsorge_m: - 0.0 - 0.0 unterhalt__tatsächlich_erhaltener_betrag_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 580f89951a..398740724e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2035 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 04ab71cca9..6550f34ed6 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2035 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index c932fa135b..445effeafb 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2035 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 7d2078fe32..13c9eff233 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2035 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index f069ff56cc..3407155170 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2035 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index 155c1d825a..0965fa57a9 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2040 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index 30839d7e22..31b457f5e8 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -58,9 +58,19 @@ inputs: - false - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -109,12 +119,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 jahr_renteneintritt: - 2040 - 2040 - private_rente_betrag_m: - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index 5afbb8f136..9c6ba641c0 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -58,9 +58,19 @@ inputs: - false - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -109,12 +119,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 jahr_renteneintritt: - 2045 - 2047 - private_rente_betrag_m: - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index c20cd346a5..e25a703dd2 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index f357aa34b5..de2dd3aeeb 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -78,13 +85,14 @@ inputs: hat_kinder: - false rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index 1f8d3bbe8c..6921e1da4f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index b55e720cf5..6db2bc649b 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index 26fb0534cc..a13f183348 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index d52ffa19a9..fc6df43cde 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -44,8 +44,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false familie: @@ -81,10 +88,11 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 jahr_renteneintritt: - 2043 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 133f688621..7699f1bf61 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -58,9 +58,19 @@ inputs: - false - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -109,12 +119,13 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 jahr_renteneintritt: - 2050 - 2070 - private_rente_betrag_m: - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 34c12722dd..790c64c070 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -86,11 +86,27 @@ inputs: - false - false sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -165,16 +181,17 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 jahr_renteneintritt: - 2037 - 2038 - 2074 - 2072 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index 562364880f..3c5e3e0ff2 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -86,11 +86,27 @@ inputs: - false - false sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -165,16 +181,17 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 jahr_renteneintritt: - 2037 - 2038 - 2074 - 2072 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 8f77366410..57df823c86 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -86,11 +86,27 @@ inputs: - false - false sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -165,16 +181,17 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 jahr_renteneintritt: - 2037 - 2038 - 2074 - 2072 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index c676431677..d87bb6310d 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -102,11 +102,27 @@ inputs: - false - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 - 50.0 - 50.0 - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -366,11 +382,6 @@ inputs: - 468.0 - 168.0 - 312.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: anspruch_m: - 177.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index d537b90c2c..df80d369f4 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -102,11 +102,27 @@ inputs: - false - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 - 50.0 - 50.0 - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -367,11 +383,6 @@ inputs: - 132.0 - 168.0 - 300.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: anspruch_m: - 177.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 8da7f476cb..7992b38caf 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 336.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index afce7c89b5..7d62a87698 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 384.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index d50bf71fd6..70d48a3a84 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 348.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index 003a248e91..b6b2f2d1eb 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 540.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index 18824116fe..8da5dd0b2e 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - false sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 432.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index a613bc404f..a2e5502bad 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - true sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 444.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml index 942b972b87..166ad0ed60 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - true sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 444.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml index 9a68c7b970..1f31088ed8 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml @@ -51,8 +51,15 @@ inputs: ist_selbstständig: - true sonstige: - ohne_renten_m: + alle_weiteren_m: - 50.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -166,8 +173,6 @@ inputs: - 0.0 pflichtbeitragsmonate: - 444.0 - private_rente_betrag_m: - - 0.0 unterhalt: anspruch_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml index cc50adebde..ab9b6646d8 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_13.yaml @@ -42,9 +42,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -117,9 +127,6 @@ inputs: grundrentenzeiten_monate: - 300 - 48 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml index 4fef8a8103..1ee4a730da 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_16.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 120 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml index 7015cb5738..6521e703a6 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_17.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 36 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml index 3b39286bb1..37c687b467 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2017-07-01/hh_id_6.yaml @@ -38,9 +38,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -113,9 +123,6 @@ inputs: grundrentenzeiten_monate: - 300 - 48 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml index b77ed766a6..bba387097e 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_12.yaml @@ -32,8 +32,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 400.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,8 +92,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 300 - private_rente_betrag_m: - - 400.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml index b1a173c8de..9ed4d422c3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_20.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 400.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 300 - private_rente_betrag_m: - - 400.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml index f13100ec0b..457942f632 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_22.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 400.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 300 - private_rente_betrag_m: - - 400.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml index 5d37abf66e..ccc78ec66d 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2018-07-01/hh_id_3.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 400.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 300 - private_rente_betrag_m: - - 400.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml index f0a8040a82..64b488e845 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_18.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 120 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml index 6829d3f168..7fcf8175e9 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2020-07-01/hh_id_19.yaml @@ -38,9 +38,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -113,9 +123,6 @@ inputs: grundrentenzeiten_monate: - 144 - 300 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml index 62c9451e16..ab92aa8538 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_1.yaml @@ -38,9 +38,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -113,9 +123,6 @@ inputs: grundrentenzeiten_monate: - 240 - 240 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml index c626c03bff..f1858b7fa5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_14.yaml @@ -32,8 +32,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,8 +92,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml index b5db5800d8..329e3e6457 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_15.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml index 787f3474d5..5154248af4 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_2.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 420 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml index 8a5ccf66c0..af4cf01def 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_21.yaml @@ -40,9 +40,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -115,9 +125,6 @@ inputs: grundrentenzeiten_monate: - 240 - 240 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml index 7df1543889..db1f046466 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_23.yaml @@ -40,9 +40,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -115,9 +125,6 @@ inputs: grundrentenzeiten_monate: - 240 - 240 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml index 663b67a383..81bb68bf8f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_5.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,8 +92,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml index 5f7e60798b..56bf90f3b0 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_7.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml index f55ced73e6..c868941131 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2021-07-01/hh_id_9.yaml @@ -40,9 +40,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -115,9 +125,6 @@ inputs: grundrentenzeiten_monate: - 240 - 240 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml index 2ee73da981..090798fad5 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_10.yaml @@ -32,8 +32,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,8 +92,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 120 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml index a9b2bf3089..ad4b71364f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_11.yaml @@ -32,8 +32,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,8 +92,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 216 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml index 612d4b83bd..9e5d14808b 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_24.yaml @@ -38,9 +38,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -113,9 +123,6 @@ inputs: grundrentenzeiten_monate: - 120 - 0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml index 188ad95da5..19e82a1f01 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_25.yaml @@ -40,9 +40,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -115,9 +125,6 @@ inputs: grundrentenzeiten_monate: - 120 - 0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml index f370a3686c..d904a54a1f 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_4.yaml @@ -38,9 +38,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -113,9 +123,6 @@ inputs: grundrentenzeiten_monate: - 240 - 120 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml index 49b1f261a5..ec527b05d3 100644 --- a/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/grundsicherung/im_alter/2022-07-01/hh_id_8.yaml @@ -30,8 +30,15 @@ inputs: betrag_m: - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + sonstige_private_vorsorge_m: + - 400.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -83,8 +90,6 @@ inputs: grundrente: grundrentenzeiten_monate: - 120 - private_rente_betrag_m: - - 400.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index f8d13c295f..8da9aa0667 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -18,6 +18,17 @@ inputs: betrag_m: - 0.0 - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 ist_selbstständig: - false - false @@ -43,9 +54,10 @@ inputs: betrag_m: - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 wohnort_ost_hh: - false - true diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index 23dd42151d..dbf59c377f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index 4ddcb5917f..e4a2b72a23 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index 61a7826bc5..2100d88340 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 5000.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - true hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index f9150c745e..59c4726d78 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 500.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - true hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index db0091bfaa..2630f7113c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 1000.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 119ce221f8..35182bf7b4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index 119f79a32a..61765b7c02 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -19,6 +19,17 @@ inputs: betrag_m: - 0.0 - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 ist_selbstständig: - false - false @@ -40,13 +51,14 @@ inputs: - true - true rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index 1ea2924dd0..f9224fc909 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index c293b6a8d1..42ceb1a233 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index 69e4ebfbd3..e2934deccb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index b8d045c52c..b2579b9663 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index 26c0f2cc69..bc40ec65e8 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index 10287d9454..e2a7216598 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -32,11 +40,12 @@ inputs: hat_kinder: - false rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index 2fa8333a72..ee041f6d87 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 7acd727741..169df0a42f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index 1e2cf0431e..aad0e0520d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index bc92b5e701..f38a9a7646 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index b9ca5c8563..56054d5cb7 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 1000.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - true hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 93a7907b1b..24937ddb59 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 4000.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - true hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - true outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index 56a834abf6..23704d20ae 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index 8a5b5e07b2..9c47fe3ae9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 8000.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - true hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index ccd24067f9..d0ed0cd49d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index 3032e2a7dc..b7fb5e61bc 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index 6529f3542e..c72317e932 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 417238bd8b..502538e841 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index 6473dcd74e..2745db0fcd 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index 23c7695ab1..b911ed2e04 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -35,8 +43,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index cdbb660841..56e337404f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -18,6 +18,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -37,8 +45,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index 5841a8be45..b839e11b32 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -19,6 +19,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -40,8 +48,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 3c3ab7d652..5ddd1f39ac 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -19,6 +19,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -40,8 +48,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index 956251fc06..b18939cbf4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -19,6 +19,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -40,8 +48,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index 9066bbe2ec..c8f2e1c64f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -19,6 +19,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -40,8 +48,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index 172a9bc661..227254d756 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -19,6 +19,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -40,8 +48,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" index 2040f5ee70..1ba747599c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -37,8 +45,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" index 52cba2834f..dbf13cfd4c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -37,8 +45,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" index 830f24aef6..d5c9a895ab 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" @@ -16,6 +16,14 @@ inputs: aus_selbstständiger_arbeit: betrag_m: - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 ist_selbstständig: - false hh_id: @@ -37,8 +45,9 @@ inputs: altersrente: betrag_m: - 0.0 - private_rente_betrag_m: - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 wohnort_ost_hh: - false outputs: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" index a9db471dd7..e6386b46bb 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" @@ -22,6 +22,20 @@ inputs: - 0.0 - 0.0 - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 ist_selbstständig: - false - false @@ -61,10 +75,11 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 wohnort_ost_hh: - false - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" index 9d4f65b100..0617aaed79 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" @@ -22,6 +22,20 @@ inputs: - 0.0 - 0.0 - 0.0 + sonstige: + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 ist_selbstständig: - false - false @@ -52,15 +66,16 @@ inputs: - true - true rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 wohnort_ost_hh: - false - false diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index f928af5733..cf5af04eb2 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -29,8 +29,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 7d42a7584a..29225ce6a3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -28,8 +28,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index d2c67b75d5..b9e28d2abe 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -30,8 +30,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index a5acbb33dd..eb879da464 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -27,8 +27,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 27315bc42c..6538bb64d5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -29,8 +29,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index 9ed039e1d1..a44a1cc946 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -30,8 +30,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index b59eb74c9b..4d0aee435c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -29,8 +29,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index 48f1c22319..8f1928b97c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -29,8 +29,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index f4fb9cd067..aa79287334 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -28,8 +28,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index cb9172bb1b..34f481dda1 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -28,8 +28,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index e50bf4fec8..8f88720c44 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -28,8 +28,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index a260e88542..785142ac61 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -30,8 +30,9 @@ inputs: betrag_y: - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 familie: p_id_ehepartner: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml index 110cf905e8..7756b538c3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -34,9 +34,10 @@ inputs: - 0.0 - 0.0 sonstige: - renteneinkünfte_vorjahr_m: - - 0.0 - - 0.0 + rente: + gesamtbetrag_vorjahr_m: + - 0.0 + - 0.0 familie: p_id_ehepartner: - 1 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml index 87dfccfc94..5c79736b9d 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2018-01-01/hh_id_5.yaml @@ -32,9 +32,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 familie: alleinerziehend: - true @@ -68,9 +78,10 @@ inputs: betrag_m: - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml index 730b3bcd89..2fa9c5f5fe 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_with_income.yaml @@ -38,10 +38,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 familie: alleinerziehend: - true @@ -79,15 +92,16 @@ inputs: - 0.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml index 0926a31a86..411830f3aa 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/older_child_parent_without_income.yaml @@ -38,10 +38,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 familie: alleinerziehend: - true @@ -84,10 +97,11 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml index 1a238f76dd..99f426e68e 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-01-01/young_child_parent_without_income.yaml @@ -38,10 +38,23 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 familie: alleinerziehend: - true @@ -84,10 +97,11 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml index fc9959c250..b40e7274e6 100644 --- a/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/unterhaltsvorschuss/2019-08-01/hh_id_1.yaml @@ -32,9 +32,19 @@ inputs: - 0.0 - 0.0 sonstige: - ohne_renten_m: + alle_weiteren_m: - 0.0 - 0.0 + rente: + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 familie: alleinerziehend: - true @@ -64,13 +74,14 @@ inputs: - 0.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml index 3ef5ef4503..e4f30ab3e5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_15.yaml @@ -106,24 +106,52 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -305,6 +333,16 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 50.0 @@ -315,15 +353,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml index 138f06fc00..41b9b1e8da 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2006-01-01/hh_id_4.yaml @@ -74,18 +74,37 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -210,6 +229,13 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 50.0 @@ -217,12 +243,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index 6800670e21..4e0496b54d 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -47,12 +47,22 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 250.0 - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -120,13 +130,14 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 100.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml index d8e4cacba8..77d93dd613 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_2.yaml @@ -44,12 +44,22 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -117,13 +127,14 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 100.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml index 6440063891..0a16591cf2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2013-01-01/hh_id_9.yaml @@ -44,12 +44,22 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 100.0 - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -117,13 +127,14 @@ inputs: betrag_m: - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 100.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index 1feb24ba66..ea83f319e5 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -58,14 +58,27 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -152,15 +165,16 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 100.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml index 8bfbf7e23c..a038531bd8 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_7.yaml @@ -154,34 +154,77 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -443,6 +486,21 @@ inputs: - 0.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 @@ -473,20 +531,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml index e131f03403..813b3fcb06 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/hh_id_8.yaml @@ -91,20 +91,42 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -241,6 +263,14 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 300.0 @@ -249,13 +279,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" index 6ec8564611..5cdc55b57c 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2018-01-01/verm\303\266gen_zu_hoch.yaml" @@ -84,20 +84,42 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 800.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -233,6 +255,14 @@ inputs: - 0.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 @@ -249,13 +279,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml index 6c18ad9f6b..d8e6f7b925 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2019-01-01/hh_id_5.yaml @@ -34,10 +34,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -86,11 +93,12 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 beitrag: betrag_versicherter_m: - 0.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index afd0d67816..88c22b2a5b 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -36,10 +36,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,14 +92,15 @@ inputs: betrag_versicherter_m: - 80.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 beitrag: betrag_versicherter_m: - 100.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 0500003f3d..13987b9326 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -38,10 +38,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -90,11 +97,12 @@ inputs: altersrente: betrag_m: - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 beitrag: betrag_versicherter_m: - 100.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index 16666f210e..489309b0d4 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -38,10 +38,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -87,14 +94,15 @@ inputs: betrag_versicherter_m: - 80.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 beitrag: betrag_versicherter_m: - 100.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 4d33855cda..6b0cf8a2f7 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -62,14 +62,27 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -151,6 +164,11 @@ inputs: - 80.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 @@ -161,10 +179,6 @@ inputs: - 85.71 - 100.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index 1832df5bb3..f4489861af 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -98,20 +98,42 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -255,6 +277,14 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 123.8 @@ -263,13 +293,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index 46faa50bed..ba5ee04bc3 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -74,16 +74,32 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -189,17 +205,18 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 60.32 - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 47d8363dee..409cec97f1 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -86,18 +86,37 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -222,6 +241,13 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 123.8 @@ -229,12 +255,6 @@ inputs: - 0.0 - 0.0 - 0.0 - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml index 8f537a495c..69292966ea 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mindesteinkommen.yaml @@ -86,20 +86,42 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - true - true @@ -235,6 +257,14 @@ inputs: - 0.0 - 0.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 altersrente: betrag_m: - 0.0 @@ -258,13 +288,6 @@ inputs: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 0bc78a7ac3..1acb172334 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -80,18 +80,37 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -216,6 +235,13 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 50.0 @@ -229,12 +255,6 @@ inputs: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 3239e55e8c..25604126af 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -102,22 +102,47 @@ inputs: - 0.0 - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - ohne_renten_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 + alle_weiteren_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + rente: + ertragsanteil: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 gemeinsam_veranlagt: - false - false @@ -280,6 +305,15 @@ inputs: - 0.0 - 0.0 - 0.0 + erwerbsminderung: + betrag_m: + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 beitrag: betrag_versicherter_m: - 50.0 @@ -297,14 +331,6 @@ inputs: - false - false - false - private_rente_betrag_m: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml index 4be3511f47..ea49383c22 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_1400_euro_monatliches_einkommen.yaml @@ -36,10 +36,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,14 +92,15 @@ inputs: betrag_versicherter_m: - 80.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 beitrag: betrag_versicherter_m: - 100.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml index ab44d41134..340789b2d2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2025-01-01/single_haushalt_2000_euro_monatliches_einkommen.yaml @@ -36,10 +36,17 @@ inputs: betrag_m: - 0.0 sonstige: - ertragsanteil_der_rente: - - 0.0 - ohne_renten_m: + alle_weiteren_m: - 0.0 + rente: + ertragsanteil: + - 0.0 + sonstige_private_vorsorge_m: + - 0.0 + betriebliche_altersvorsorge_m: + - 0.0 + geförderte_private_vorsorge_m: + - 0.0 gemeinsam_veranlagt: - false elterngeld: @@ -85,14 +92,15 @@ inputs: betrag_versicherter_m: - 80.0 rente: + erwerbsminderung: + betrag_m: + - 0.0 altersrente: betrag_m: - 0.0 beitrag: betrag_versicherter_m: - 100.0 - private_rente_betrag_m: - - 0.0 unterhalt: tatsächlich_erhaltener_betrag_m: - 0.0 From e0d98017b5648f4d8c2786239582365b9844f6c6 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Fri, 18 Jul 2025 13:52:09 +0200 Subject: [PATCH 077/109] Fix #1006, Improve error message when input data are missing and results are requested (#1031) ### What problem do you want to solve? Closes #1006 --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/interface_dag_elements/__init__.py | 2 +- src/ttsim/interface_dag_elements/fail_if.py | 9 +++- .../interface_dag_elements/test_failures.py | 49 +++++++++++++++++-- tests/ttsim/test_end_to_end.py | 18 ++++++- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index ed65d4610b..b2183c8feb 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -54,7 +54,7 @@ class FailIf(MainTargetABC): paths_are_missing_in_targets_tree_mapper: str = ( "fail_if__paths_are_missing_in_targets_tree_mapper" ) - root_nodes_are_missing: str = "fail_if__root_nodes_are_missing" + tt_root_nodes_are_missing: str = "fail_if__tt_root_nodes_are_missing" targets_are_not_in_specialized_environment_or_data: str = ( "fail_if__targets_are_not_in_specialized_environment_or_data" ) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index c74435d126..a803f25266 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -639,7 +639,7 @@ def input_df_mapper_has_incorrect_format( @fail_function() -def root_nodes_are_missing( +def tt_root_nodes_are_missing( specialized_environment__tax_transfer_dag: nx.DiGraph, specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, processed_data: QNameData, @@ -663,6 +663,13 @@ def root_nodes_are_missing( ValueError If root nodes are missing. """ + + if not processed_data: + raise ValueError( + "For computing results, you need to pass data. " + "You can do this by passing a suitable `input_data=InputData.[x]` argument " + "to `main`." + ) # Obtain root nodes root_nodes = nx.subgraph_view( specialized_environment__tax_transfer_dag, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 22e009fd0f..55e6ea49fe 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -903,7 +903,7 @@ def test_fail_if_input_data_has_different_lengths(backend): ) -def test_fail_if_root_nodes_are_missing_via_main(minimal_input_data, backend): +def test_fail_if_tt_root_nodes_are_missing_via_main(minimal_input_data, backend): def b(a): return a @@ -920,7 +920,7 @@ def c(b): match="The following data columns are missing", ): main( - main_targets=["results__tree", "fail_if__root_nodes_are_missing"], + main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -930,7 +930,7 @@ def c(b): ) -def test_fail_if_root_nodes_are_missing_asks_for_individual_level_columns( +def test_fail_if_tt_root_nodes_are_missing_asks_for_individual_level_columns( minimal_input_data, backend ): @policy_function() @@ -952,7 +952,7 @@ def a() -> int: match="Note that the missing nodes contain columns that are grouped by ", ): main( - main_targets=["results__tree", "fail_if__root_nodes_are_missing"], + main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, date=datetime.date(2024, 1, 1), @@ -1370,3 +1370,44 @@ def test_invalid_input_data_as_object_via_main(backend: Literal["jax", "numpy"]) orig_policy_objects={"root": METTSIM_ROOT}, date_str="2025-01-01", ) + + +@pytest.mark.parametrize( + "main_target", + [ + MainTarget.specialized_environment.tax_transfer_function, + MainTarget.raw_results.columns, + ], +) +def test_raise_tt_root_nodes_are_missing_without_input_data( + main_target: MainTarget, + backend: Literal["jax", "numpy"], +): + with pytest.raises( + ValueError, match="For computing results, you need to pass data. " + ): + main( + date_str="2025-01-01", + main_target=main_target, + backend=backend, + orig_policy_objects={"root": METTSIM_ROOT}, + ) + + +def test_raise_some_error_without_input_data( + backend: Literal["jax", "numpy"], +): + with pytest.raises( + ValueError, + match=( + "For computing results, you need to pass data. " + "|" + "The following arguments to `main` are missing" + ), + ): + main( + date_str="2025-01-01", + main_target=MainTarget.results.df_with_mapper, + backend=backend, + orig_policy_objects={"root": METTSIM_ROOT}, + ) diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index 6b8447e598..43d18caedc 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Literal +import dags.tree as dt import pandas as pd import pytest @@ -68,7 +69,7 @@ } -EXPECTED_RESULTS = pd.DataFrame( +EXPECTED_TT_RESULTS = pd.DataFrame( { "payroll_tax_amount_y": [2920.0, 0.0, 0.0], "payroll_tax_child_tax_credit_amount_m": [8.333333, 0.0, 0.0], @@ -99,8 +100,21 @@ def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): backend=backend, ) pd.testing.assert_frame_equal( - EXPECTED_RESULTS, + EXPECTED_TT_RESULTS, result, check_dtype=False, check_index_type=False, ) + + +def test_can_create_input_template(backend: Literal["numpy", "jax"]): + result_template = main( + main_target=MainTarget.templates.input_data_dtypes, + date_str="2025-01-01", + orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, + backend=backend, + tt_targets=TTTargets(tree=TARGETS_TREE), + ) + flat_result_template = dt.flatten_to_tree_paths(result_template) + flat_expected = dt.flatten_to_tree_paths(INPUT_DF_MAPPER) + assert flat_result_template.keys() == flat_expected.keys() From 4d79580b89500e288e902720f20012f401184c11 Mon Sep 17 00:00:00 2001 From: JuergenWiemers <juergen.wiemers@gmail.com> Date: Sun, 20 Jul 2025 20:48:41 +0200 Subject: [PATCH 078/109] Improve performance of `processed_data` (#1037) ### What problem do you want to solve? `processed_data` uses an $O(n^2)$ approach to link original and internal IDs. This PR implements an $O(n\cdot \log(n))$ approach. ## Benchmarks ### On `gep-07` (3525917c): ```cmd ==================================================================== SUMMARY TABLE ==================================================================== Dataset numpy_time numpy_hash jax_time jax_hash -------------------------------------------------------------------- df_5000.parquet 1.2681 13106402 15.5897 bf85cb3d df_10000.parquet 4.6791 308ca129 30.7932 57ba7579 df_20000.parquet 15.7451 51e8d0b4 62.4070 21636ea4 df_40000.parquet 54.0340 6ae704d8 137.1975 30bbf3ea ``` ### This PR: **[EDIT: updated results after cf37b757]** ```cmd ==================================================================== SUMMARY TABLE ==================================================================== Dataset numpy_time numpy_hash jax_time jax_hash -------------------------------------------------------------------- df_5000.parquet 0.0378 13106402 0.8950 bf85cb3d df_10000.parquet 0.0402 308ca129 0.8108 57ba7579 df_20000.parquet 0.1107 51e8d0b4 1.1354 21636ea4 df_40000.parquet 0.0853 6ae704d8 1.8208 30bbf3ea ``` The benchmark essentially runs ```python result = main( date_str=None, input_data=InputData.df_and_mapper( df=data, mapper=MAPPER, ), main_targets=[MainTarget.processed_data], tt_targets=TTTargets(tree=TT_TARGETS), backend=backend, ) ``` on the targets defined in `interface_playground.ipynb` with differently sized datasets that replicate the example household from the same notebook `N` times (i.e., `N*3` persons in each dataset). The hashes demonstrate that this PR creates `result` objects that are identical to the ones created with the $O(n^2)$ approach. To reproduce the benchmarks: - Run `make_data.py` (see attached .zip) to create example datasets - Run `benchmark_comparison.py` to create tables above [benchmark.zip](https://github.com/user-attachments/files/21327575/benchmark.zip) --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Co-authored-by: mj023 <max.jahn45@gmail.com> --- src/_gettsim/ids.py | 60 ++++++++--------- src/ttsim/interface_dag_elements/fail_if.py | 16 ++--- .../interface_dag_elements/processed_data.py | 29 +++++--- .../interface_dag_elements/test_failures.py | 34 +++++----- .../test_processed_data.py | 66 +++++++++++++++++++ tests/ttsim/mettsim/group_by_ids.py | 39 ++++++----- .../group_by_ids/2025-01-01/group_by_ids.yaml | 0 .../amount_no_children_high_income.yaml | 0 .../amount_no_children_low_income.yaml | 0 .../amount_with_children_high_income.yaml | 0 .../amount_with_children_low_income.yaml | 0 .../amount_no_children_high_income.yaml | 0 .../amount_no_children_low_income.yaml | 0 .../amount_with_children_high_income.yaml | 0 .../amount_with_children_low_income.yaml | 0 .../2025-01-01/amount_with_many_children.yaml | 0 .../orc_hunting_bounty/1900-01-01/amount.yaml | 0 .../2025-01-01/amount_no_children.yaml | 0 .../amount_no_children_high_wealth.yaml | 0 .../amount_no_children_noble_parents.yaml | 0 .../2025-01-01/amount_with_children.yaml | 0 ..._children_inputs_need_to_be_converted.yaml | 0 .../2025-01-01/amount_with_many_children.yaml | 0 ...eductions_param_overwritten_by_column.yaml | 0 .../property_tax/2000-01-01/acre_size.yaml | 0 .../test_mettsim.py | 2 +- .../tt_dag_elements/test_vectorization.py | 25 +------ 27 files changed, 166 insertions(+), 105 deletions(-) create mode 100644 tests/ttsim/interface_dag_elements/test_processed_data.py rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/group_by_ids/2025-01-01/group_by_ids.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2000-01-01/amount_no_children_high_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2000-01-01/amount_no_children_low_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2000-01-01/amount_with_children_high_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2000-01-01/amount_with_children_low_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2025-01-01/amount_no_children_high_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2025-01-01/amount_no_children_low_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2025-01-01/amount_with_children_high_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2025-01-01/amount_with_children_low_income.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/housing_benefits/2025-01-01/amount_with_many_children.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/orc_hunting_bounty/1900-01-01/amount.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_no_children.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_with_children.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/amount_with_many_children.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml (100%) rename tests/ttsim/{mettsim_test_data => mettsim_tests/test_data}/property_tax/2000-01-01/acre_size.yaml (100%) rename tests/ttsim/{interface_dag_elements => mettsim_tests}/test_mettsim.py (98%) diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index 7fba2a4809..a2e00d6729 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -60,57 +60,55 @@ def fg_id( """ n = xnp.max(p_id) + 1 - # Get the array index for all p_ids of parents - p_id_elternteil_1_loc = familie__p_id_elternteil_1 - p_id_elternteil_2_loc = familie__p_id_elternteil_2 - for i in range(p_id.shape[0]): - p_id_elternteil_1_loc = xnp.where( - familie__p_id_elternteil_1 == p_id[i], - i, - p_id_elternteil_1_loc, - ) - p_id_elternteil_2_loc = xnp.where( - familie__p_id_elternteil_2 == p_id[i], - i, - p_id_elternteil_2_loc, - ) - - children = xnp.isin(p_id, familie__p_id_elternteil_1) | xnp.isin( - p_id, - familie__p_id_elternteil_2, + # Sort all arrays according to p_id to make the id equal location in array + sorting = xnp.argsort(p_id) + index_after_sort = xnp.argsort(xnp.arange(p_id.shape[0])[sorting]) + sorted_p_id = p_id[sorting] + sorted_hh_id = hh_id[sorting] + sorted_alter = alter[sorting] + sorted_familie__p_id_elternteil_1 = familie__p_id_elternteil_1[sorting] + sorted_familie__p_id_elternteil_2 = familie__p_id_elternteil_2[sorting] + sorted_arbeitslosengeld_2__p_id_einstandspartner = ( + arbeitslosengeld_2__p_id_einstandspartner[sorting] + ) + + children = xnp.isin(sorted_p_id, sorted_familie__p_id_elternteil_1) | xnp.isin( + sorted_p_id, + sorted_familie__p_id_elternteil_2, ) # Assign the same fg_id to everybody who has an Einstandspartner, # otherwise create a new one from p_id out = xnp.where( - arbeitslosengeld_2__p_id_einstandspartner < 0, - p_id + p_id * n, - xnp.maximum(p_id, arbeitslosengeld_2__p_id_einstandspartner) - + xnp.minimum(p_id, arbeitslosengeld_2__p_id_einstandspartner) * n, + sorted_arbeitslosengeld_2__p_id_einstandspartner < 0, + sorted_p_id + sorted_p_id * n, + xnp.maximum(sorted_p_id, sorted_arbeitslosengeld_2__p_id_einstandspartner) + + xnp.minimum(sorted_p_id, sorted_arbeitslosengeld_2__p_id_einstandspartner) + * n, ) out = _assign_parents_fg_id( fg_id=out, - p_id=p_id, - p_id_elternteil_loc=p_id_elternteil_1_loc, - hh_id=hh_id, - alter=alter, + p_id=sorted_p_id, + p_id_elternteil_loc=sorted_familie__p_id_elternteil_1, + hh_id=sorted_hh_id, + alter=sorted_alter, children=children, n=n, xnp=xnp, ) out = _assign_parents_fg_id( fg_id=out, - p_id=p_id, - p_id_elternteil_loc=p_id_elternteil_2_loc, - hh_id=hh_id, - alter=alter, + p_id=sorted_p_id, + p_id_elternteil_loc=sorted_familie__p_id_elternteil_2, + hh_id=sorted_hh_id, + alter=sorted_alter, children=children, n=n, xnp=xnp, ) - return out + return out[index_after_sort] def _assign_parents_fg_id( diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index a803f25266..6c31d3a73e 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -351,7 +351,7 @@ def environment_is_invalid( @fail_function() def foreign_keys_are_invalid_in_data( labels__root_nodes: UnorderedQNames, - processed_data: QNameData, + input_data__flat: FlatData, specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, ) -> None: """ @@ -360,10 +360,10 @@ def foreign_keys_are_invalid_in_data( Foreign keys must point to an existing `p_id` in the input data and must not refer to the `p_id` of the same row. - We need processed_data because we cannot guarantee that `p_id` is present in the - input data. + We test this only in the columns that are actually used, not in some `p_id_xxx` + column that may be present in the data. """ - valid_ids = set(processed_data["p_id"].tolist()) | {-1} + valid_ids = set(input_data__flat[("p_id",)].tolist()) | {-1} relevant_objects = { k: v for k, v in specialized_environment__without_tree_logic_and_with_derived_functions.items() @@ -376,11 +376,11 @@ def foreign_keys_are_invalid_in_data( if fk_name in labels__root_nodes: path = dt.tree_path_from_qname(fk_name) # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in processed_data[fk_name].tolist()): + if not all(i in valid_ids for i in input_data__flat[path].tolist()): message = format_errors_and_warnings( f""" For {path}, the following are not a valid p_id in the input - data: {[i for i in processed_data[fk_name] if i not in valid_ids]}. + data: {[i for i in input_data__flat[path] if i not in valid_ids]}. """, ) raise ValueError(message) @@ -389,8 +389,8 @@ def foreign_keys_are_invalid_in_data( equal_to_pid_in_same_row = [ i for i, j in zip( - processed_data[fk_name].tolist(), - processed_data["p_id"].tolist(), + input_data__flat[path].tolist(), + input_data__flat[("p_id",)].tolist(), strict=False, ) if i == j diff --git a/src/ttsim/interface_dag_elements/processed_data.py b/src/ttsim/interface_dag_elements/processed_data.py index e49ae9e810..9ec2060639 100644 --- a/src/ttsim/interface_dag_elements/processed_data.py +++ b/src/ttsim/interface_dag_elements/processed_data.py @@ -29,21 +29,34 @@ def processed_data(input_data__flat: FlatData, xnp: ModuleType) -> QNameData: ------- A DataFrame. """ - processed_input_data = {} + orig_p_ids = xnp.asarray(input_data__flat[("p_id",)]) internal_p_ids = reorder_ids(ids=orig_p_ids, xnp=xnp) + sort_indices = xnp.argsort(orig_p_ids) + sorted_orig_ids = orig_p_ids[sort_indices] + sorted_internal_ids = internal_p_ids[sort_indices] + + processed_input_data = {"p_id": internal_p_ids} for path, data in input_data__flat.items(): qname = dt.qname_from_tree_path(path) + if path == ("p_id",): + continue if path[-1].endswith("_id"): processed_input_data[qname] = reorder_ids(ids=xnp.asarray(data), xnp=xnp) elif path[-1].startswith("p_id_"): - variable_with_new_ids = xnp.asarray(data) - for i in range(internal_p_ids.shape[0]): - variable_with_new_ids = xnp.where( - data == orig_p_ids[i], - internal_p_ids[i], - variable_with_new_ids, - ) + data_array = xnp.asarray(data) + # Second line makes sure out-of-bounds ids don't raise an error. Any garbage + # that is actually used will be checked inside + # fail_if.foreign_keys_are_invalid_in_data, so don't worry here. + insert_positions = xnp.minimum( + xnp.searchsorted(sorted_orig_ids, data_array), + len(sorted_orig_ids) - 1, + ) + variable_with_new_ids = xnp.where( + sorted_orig_ids[insert_positions] == data_array, + sorted_internal_ids[insert_positions], + data_array, + ) processed_input_data[qname] = variable_with_new_ids else: processed_input_data[qname] = xnp.asarray(data) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 55e6ea49fe..c143a1ca41 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -565,13 +565,13 @@ def test_fail_if_foreign_keys_are_invalid_in_data_allow_minus_one_as_foreign_key ): flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_spouse": pd.Series([-1, 1, 2]), + ("p_id",): pd.Series([1, 2, 3]), + ("p_id_spouse",): pd.Series([-1, 1, 2]), } foreign_keys_are_invalid_in_data( - labels__root_nodes={n for n in data if n != "p_id"}, - processed_data=data, + labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, + input_data__flat=data, specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) @@ -581,14 +581,16 @@ def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_non ): flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_spouse": pd.Series([0, 1, 2]), + ("p_id",): pd.Series([1, 2, 3]), + ("p_id_spouse",): pd.Series([0, 1, 2]), } with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): foreign_keys_are_invalid_in_data( - labels__root_nodes={n for n in data if n != "p_id"}, - processed_data=data, + labels__root_nodes={ + dt.qname_from_tree_path(n) for n in data if n != ("p_id",) + }, + input_data__flat=data, specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) @@ -598,13 +600,13 @@ def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_sam ): flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { - "p_id": pd.Series([1, 2, 3]), - "p_id_child_": pd.Series([1, 3, 3]), + ("p_id",): pd.Series([1, 2, 3]), + ("p_id_child_",): pd.Series([1, 3, 3]), } foreign_keys_are_invalid_in_data( - labels__root_nodes={n for n in data if n != "p_id"}, - processed_data=data, + labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, + input_data__flat=data, specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) @@ -614,13 +616,13 @@ def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_sam ): flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) data = { - "p_id": pd.Series([1, 2, 3]), - "child_tax_credit__p_id_recipient": pd.Series([1, 3, 3]), + ("p_id",): pd.Series([1, 2, 3]), + ("child_tax_credit__p_id_recipient",): pd.Series([1, 3, 3]), } foreign_keys_are_invalid_in_data( - labels__root_nodes={n for n in data if n != "p_id"}, - processed_data=data, + labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, + input_data__flat=data, specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, ) diff --git a/tests/ttsim/interface_dag_elements/test_processed_data.py b/tests/ttsim/interface_dag_elements/test_processed_data.py new file mode 100644 index 0000000000..534fbd1516 --- /dev/null +++ b/tests/ttsim/interface_dag_elements/test_processed_data.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +import numpy +import pandas as pd +import pytest + +from ttsim.interface_dag_elements.processed_data import processed_data + + +@pytest.fixture +def input_data__flat(): + return { + ("p_id",): numpy.array([5, 333, 7, 2]), + ("hh_id",): numpy.array([55555, 7, 3, 55555]), + ("n0", "p_id_whatever"): numpy.array([-1, 333, 5, -1]), + } + + +def test_processed_data(input_data__flat, xnp): + expected = { + "p_id": xnp.array([1, 3, 2, 0]), + "hh_id": xnp.array([2, 1, 0, 2]), + "n0__p_id_whatever": xnp.array([-1, 3, 1, -1]), + } + pd.testing.assert_frame_equal( + pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), + pd.DataFrame(expected), + ) + + +def test_processed_data_foreign_key_out_of_bounds(xnp): + # Add out-of-bounds numbers (-5, 999), in foreign key. Should be unchanged, error + # will be raised in `fail_if.foreign_keys_are_invalid_in_data`. + input_data__flat = { + ("p_id",): numpy.array([5, 333, 7, 2]), + ("hh_id",): numpy.array([55555, 7, 3, 55555]), + ("n0", "p_id_whatever"): numpy.array([-1, 333, -5, 999]), + } + expected = { + "p_id": xnp.array([1, 3, 2, 0]), + "hh_id": xnp.array([2, 1, 0, 2]), + "n0__p_id_whatever": xnp.array([-1, 3, -5, 999]), # -5, 999 preserved unchanged + } + pd.testing.assert_frame_equal( + pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), + pd.DataFrame(expected), + ) + + +def test_processed_data_foreign_key_inside_bounds(xnp): + # Add non-existent foreign key (22). Should be unchanged, error will be raised in + # `fail_if.foreign_keys_are_invalid_in_data`. + input_data__flat = { + ("p_id",): numpy.array([5, 333, 7, 2]), + ("hh_id",): numpy.array([55555, 7, 4444, 55555]), + ("n0", "p_id_whatever"): numpy.array([-1, 333, 3, -1]), + } + expected = { + "p_id": xnp.array([1, 3, 2, 0]), + "hh_id": xnp.array([2, 0, 1, 2]), + "n0__p_id_whatever": xnp.array([-1, 3, 3, -1]), + } + pd.testing.assert_frame_equal( + pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), + pd.DataFrame(expected), + ) diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py index 61c3da7945..0fd158f49a 100644 --- a/tests/ttsim/mettsim/group_by_ids.py +++ b/tests/ttsim/mettsim/group_by_ids.py @@ -34,43 +34,48 @@ def fam_id( """ n = xnp.max(p_id) + 1 - # Get the array index for all p_ids of parents - p_id_parent_1_loc = p_id_parent_1 - p_id_parent_2_loc = p_id_parent_2 - for i in range(p_id.shape[0]): - p_id_parent_1_loc = xnp.where(p_id_parent_1 == p_id[i], i, p_id_parent_1_loc) - p_id_parent_2_loc = xnp.where(p_id_parent_2 == p_id[i], i, p_id_parent_2_loc) + # Sort all arrays according to p_id to make the id equal location in array + sorting = xnp.argsort(p_id) + index_after_sort = xnp.argsort(xnp.arange(p_id.shape[0])[sorting]) + sorted_p_id = p_id[sorting] + sorted_age = age[sorting] + sorted_p_id_parent_1 = p_id_parent_1[sorting] + sorted_p_id_parent_2 = p_id_parent_2[sorting] + sorted_p_id_spouse = p_id_spouse[sorting] - children = xnp.isin(p_id, p_id_parent_1) | xnp.isin(p_id, p_id_parent_2) + children = xnp.isin(sorted_p_id, sorted_p_id_parent_1) | xnp.isin( + sorted_p_id, sorted_p_id_parent_2 + ) # Assign the same fam_id to everybody who has a spouse, # otherwise create a new one from p_id out = xnp.where( - p_id_spouse < 0, - p_id + p_id * n, - xnp.maximum(p_id, p_id_spouse) + xnp.minimum(p_id, p_id_spouse) * n, + sorted_p_id_spouse < 0, + sorted_p_id + sorted_p_id * n, + xnp.maximum(sorted_p_id, sorted_p_id_spouse) + + xnp.minimum(sorted_p_id, sorted_p_id_spouse) * n, ) out = _assign_parents_fam_id( fam_id=out, - p_id=p_id, - p_id_parent_loc=p_id_parent_1_loc, - age=age, + p_id=sorted_p_id, + p_id_parent_loc=sorted_p_id_parent_1, + age=sorted_age, children=children, n=n, xnp=xnp, ) out = _assign_parents_fam_id( fam_id=out, - p_id=p_id, - p_id_parent_loc=p_id_parent_2_loc, - age=age, + p_id=sorted_p_id, + p_id_parent_loc=sorted_p_id_parent_2, + age=sorted_age, children=children, n=n, xnp=xnp, ) - return out + return out[index_after_sort] def _assign_parents_fam_id( diff --git a/tests/ttsim/mettsim_test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/group_by_ids/2025-01-01/group_by_ids.yaml rename to tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml diff --git a/tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml rename to tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml diff --git a/tests/ttsim/mettsim_test_data/orc_hunting_bounty/1900-01-01/amount.yaml b/tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/orc_hunting_bounty/1900-01-01/amount.yaml rename to tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml diff --git a/tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml rename to tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml diff --git a/tests/ttsim/mettsim_test_data/property_tax/2000-01-01/acre_size.yaml b/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml similarity index 100% rename from tests/ttsim/mettsim_test_data/property_tax/2000-01-01/acre_size.yaml rename to tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml diff --git a/tests/ttsim/interface_dag_elements/test_mettsim.py b/tests/ttsim/mettsim_tests/test_mettsim.py similarity index 98% rename from tests/ttsim/interface_dag_elements/test_mettsim.py rename to tests/ttsim/mettsim_tests/test_mettsim.py index b46078c75f..ab37923855 100644 --- a/tests/ttsim/interface_dag_elements/test_mettsim.py +++ b/tests/ttsim/mettsim_tests/test_mettsim.py @@ -31,7 +31,7 @@ POLICY_TEST_IDS_AND_CASES = load_policy_test_data( - test_dir=Path(__file__).parent / "mettsim_test_data", + test_dir=Path(__file__).parent.parent / "mettsim_tests", policy_name="", xnp=numpy, ) diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py index bd0706e6c3..09403caec8 100644 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -10,7 +10,6 @@ import dags.tree as dt import numpy import pytest -from dags import concatenate_functions from numpy.testing import assert_array_equal from ttsim.interface_dag_elements.orig_policy_objects import ( @@ -720,7 +719,7 @@ def alter_bis_24(alter: int) -> bool: # ====================================================================================== -def test_make_vectorizable_concatened_func(): +def test_make_vectorizable_nested_func(): def f_a(x: int) -> int: return x @@ -736,28 +735,6 @@ def f_manual(x: int) -> int: assert_array_equal(got, exp) -@pytest.mark.xfail(reason="Make vectorizable does not work on dags concatenated funcs.") -def test_make_vectorizable_dags_concatened_func(): - def f_a(x: int) -> int: - return x - - def f_b(a: int) -> int: - return a + 2 - - f_dags = concatenate_functions( - functions={ - "a": f_a, - "b": f_b, - }, - targets=["b"], - ) - - vectorized = _make_vectorizable(f_dags, backend="numpy", xnp=numpy) - got = vectorized(numpy.array([1, 2, 3])) - exp = numpy.array([3, 4, 5]) - assert_array_equal(got, exp) - - @policy_function() def scalar_func(x: int) -> int: if x < 0: From 2ee33f97d64e96a39cb90c7922e4ed2e08516472 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:04:18 +0200 Subject: [PATCH 079/109] =?UTF-8?q?Rename=20`ist=5Fselbstst=C3=A4ndig`=20t?= =?UTF-8?q?o=20`ist=5Fhauptberuflich=5Fselbstst=C3=A4ndig`=20(#1038)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Clarifies the meaning of `ist_selbstständig` by renaming to `ist_hauptberuflich_selbstständig` as discussed in #892. --- .../einkommensteuer/eink\303\274nfte/inputs.py" | 8 ++++++-- .../kranken/beitrag/beitrag.py | 16 ++++++++-------- .../kranken/beitrag/einkommen.py | 7 +++++-- .../sozialversicherung/pflege/beitrag/beitrag.py | 16 ++++++++-------- .../2024-01-01/single_no_income.yaml | 2 +- .../2024-01-01/skip_single_no_children.yaml | 2 +- .../2010-01-01/hh_id_1.yaml | 2 +- .../2010-01-01/hh_id_2.yaml | 2 +- .../2010-01-01/hh_id_3.yaml | 2 +- .../2010-01-01/hh_id_4.yaml | 2 +- .../2010-01-01/hh_id_5.yaml | 2 +- .../2015-01-01/hh_id_16.yaml | 2 +- .../2015-01-01/hh_id_17.yaml | 2 +- .../2017-01-01/hh_id_18.yaml | 2 +- .../2018-01-01/hh_id_10.yaml | 2 +- .../2018-01-01/hh_id_11.yaml | 2 +- .../2018-01-01/hh_id_12.yaml | 2 +- .../2018-01-01/hh_id_7.yaml | 2 +- .../2018-01-01/hh_id_8.yaml | 2 +- .../2018-01-01/hh_id_9.yaml | 2 +- .../2019-01-01/hh_id_13.yaml | 2 +- .../2020-01-01/hh_id_14.yaml | 2 +- .../2020-01-01/hh_id_19.yaml | 2 +- .../2020-01-01/hh_id_20.yaml | 2 +- .../2019-01-01/hh_id_1.yaml | 2 +- .../2019-01-01/hh_id_2.yaml | 2 +- .../2019-01-01/hh_id_3.yaml | 2 +- .../2019-01-01/hh_id_4.yaml | 2 +- .../2019-01-01/hh_id_5.yaml | 2 +- .../2019-01-01/hh_id_6.yaml | 2 +- .../2019-01-01/hh_id_7.yaml | 2 +- .../2019-01-01/hh_id_8.yaml | 2 +- .../ohne_unterschied_entgeltpunkte_ost_west.yaml | 2 +- .../2025-01-01/wohnort_ost_irrelevant.yaml | 2 +- ...\303\274gig_besch\303\244ftigt_nur_west.yaml" | 2 +- .../geringf\303\274gig_besch\303\244ftigt.yaml" | 2 +- .../regul\303\244r_besch\303\244ftigt.yaml" | 2 +- .../selbst\303\244ndig_viel_einkommen.yaml" | 2 +- .../selbst\303\244ndig_wenig_einkommen.yaml" | 2 +- .../beitr\303\244ge/2004-04-01/rentner.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_10.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_11.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_12.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_7.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_8.yaml" | 2 +- .../beitr\303\244ge/2010-01-01/hh_id_9.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_1.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_2.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_3.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_4.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_5.yaml" | 2 +- .../beitr\303\244ge/2018-01-01/hh_id_6.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2019-01-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_15.yaml" | 2 +- .../beitr\303\244ge/2020-01-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_16.yaml" | 2 +- .../beitr\303\244ge/2022-01-01/hh_id_17.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_18.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_19.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_20.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_21.yaml" | 2 +- .../beitr\303\244ge/2022-10-01/hh_id_22.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_23.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_24.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_25.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_26.yaml" | 2 +- .../beitr\303\244ge/2023-07-01/hh_id_27.yaml" | 2 +- .../above_new_beitragsbemessungsgrenze.yaml" | 2 +- .../above_old_beitragsbemessungsgrenze.yaml" | 2 +- .../below_beitragsbemessungsgrenze.yaml" | 2 +- .../2024-01-01/einkommen_in_gleitzone.yaml" | 2 +- .../2025-01-01/einkommen_in_gleitzone.yaml" | 2 +- 73 files changed, 96 insertions(+), 89 deletions(-) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" index 6b3bc60c8c..923824d73c 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" @@ -6,5 +6,9 @@ @policy_input() -def ist_selbstständig() -> bool: - """Self-employed (main profession).""" +def ist_hauptberuflich_selbstständig() -> bool: + """Self-employed (main occupation). + + A person is self-employed as a main occupation if the self-employed activity clearly + exceeds the other gainful activities in terms of economic significance and time use. + """ diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index da3488206d..89b0ec87c1 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -11,13 +11,13 @@ def betrag_versicherter_m_ohne_midijob( betrag_rentner_m: float, betrag_selbstständig_m: float, betrag_versicherter_regulär_beschäftigt_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, ) -> float: """Public health insurance contributions paid by the insured person. Before Midijob introduction in April 2003. """ - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -36,13 +36,13 @@ def betrag_versicherter_m_mit_midijob( sozialversicherung__in_gleitzone: bool, betrag_versicherter_in_gleitzone_m: float, betrag_versicherter_regulär_beschäftigt_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, ) -> float: """Public health insurance contributions paid by the insured person. After Midijob introduction in April 2003. """ - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -60,7 +60,7 @@ def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, einkommen_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, minijob_arbeitgeberpauschale: float, beitragssatz_arbeitgeber: float, ) -> float: @@ -68,7 +68,7 @@ def betrag_arbeitgeber_m_ohne_midijob( Before Midijob introduction in April 2003. """ - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = 0.0 elif sozialversicherung__geringfügig_beschäftigt: out = ( @@ -88,7 +88,7 @@ def betrag_arbeitgeber_m_mit_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, betrag_arbeitgeber_in_gleitzone_m: float, einkommen_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, minijob_arbeitgeberpauschale: float, beitragssatz_arbeitgeber: float, ) -> float: @@ -96,7 +96,7 @@ def betrag_arbeitgeber_m_mit_midijob( After Midijob introduction in April 2003. """ - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = 0.0 elif sozialversicherung__geringfügig_beschäftigt: out = ( diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index 52be30bd2d..ac9ad243aa 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -42,7 +42,7 @@ def einkommen_bis_beitragsbemessungsgrenze_m( def bemessungsgrundlage_selbstständig_m( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, bezugsgröße_selbstständige_m: float, - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, privat_versichert: bool, beitragsbemessungsgrenze_m: float, mindestanteil_bezugsgröße_selbstständige: float, @@ -55,7 +55,10 @@ def bemessungsgrundlage_selbstständig_m( Reference: §240 SGB V Abs. 4 """ # Calculate if self employed insures via public health insurance. - if einkommensteuer__einkünfte__ist_selbstständig and not privat_versichert: + if ( + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig + and not privat_versichert + ): out = min( beitragsbemessungsgrenze_m, max( diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 8498978086..daee97ea21 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -11,14 +11,14 @@ leaf_name="betrag_versicherter_m", ) def betrag_versicherter_m_ohne_midijob( - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, betrag_selbstständig_m: float, sozialversicherung__geringfügig_beschäftigt: bool, betrag_versicherter_regulär_beschäftigt_m: float, betrag_rentner_m: float, ) -> float: """Long-term care insurance contributions paid by the insured person.""" - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -34,7 +34,7 @@ def betrag_versicherter_m_ohne_midijob( leaf_name="betrag_versicherter_m", ) def betrag_versicherter_m_mit_midijob( - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, betrag_selbstständig_m: float, sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, @@ -43,7 +43,7 @@ def betrag_versicherter_m_mit_midijob( betrag_rentner_m: float, ) -> float: """Long-term care insurance contributions paid by the insured person.""" - if einkommensteuer__einkünfte__ist_selbstständig: + if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 @@ -62,7 +62,7 @@ def betrag_versicherter_m_mit_midijob( leaf_name="betrag_arbeitgeber_m", ) def betrag_arbeitgeber_m_ohne_midijob( - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, sozialversicherung__geringfügig_beschäftigt: bool, betrag_arbeitgeber_regulär_beschäftigt_m: float, ) -> float: @@ -71,7 +71,7 @@ def betrag_arbeitgeber_m_ohne_midijob( Before Midijob introduction in April 2003. """ if ( - einkommensteuer__einkünfte__ist_selbstständig + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig or sozialversicherung__geringfügig_beschäftigt ): out = 0.0 @@ -86,7 +86,7 @@ def betrag_arbeitgeber_m_ohne_midijob( leaf_name="betrag_arbeitgeber_m", ) def betrag_arbeitgeber_m_mit_midijob( - einkommensteuer__einkünfte__ist_selbstständig: bool, + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, betrag_arbeitgeber_in_gleitzone_m: float, @@ -97,7 +97,7 @@ def betrag_arbeitgeber_m_mit_midijob( After Midijob introduction in April 2003. """ if ( - einkommensteuer__einkünfte__ist_selbstständig + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig or sozialversicherung__geringfügig_beschäftigt ): out = 0.0 diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml index ec54606f5a..07a8a974f8 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/single_no_income.yaml @@ -35,7 +35,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml index a1d65deb5f..0422283588 100644 --- a/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml +++ b/src/_gettsim_tests/test_data/arbeitslosengeld_2/2024-01-01/skip_single_no_children.yaml @@ -28,7 +28,7 @@ inputs: - 0.0 einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: - 0.0 - einkommensteuer__einkünfte__ist_selbstständig: + einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: - false einkommensteuer__einkünfte__sonstige__alle_weiteren_m: - 0.0 diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml index 398740724e..10e7e24595 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_1.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml index 6550f34ed6..c0252109dc 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_2.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml index 445effeafb..96fdc30aea 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_3.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml index 13c9eff233..dc95bef155 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_4.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml index 3407155170..4044d3f181 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2010-01-01/hh_id_5.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml index 0965fa57a9..6366a6fb7d 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_16.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml index 31b457f5e8..860176e68e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2015-01-01/hh_id_17.yaml @@ -54,7 +54,7 @@ inputs: betrag_m: - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false sonstige: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml index 9c6ba641c0..c4f7001762 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2017-01-01/hh_id_18.yaml @@ -54,7 +54,7 @@ inputs: betrag_m: - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false sonstige: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml index e25a703dd2..6f6fffe89e 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_10.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml index de2dd3aeeb..613d6ed9ad 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_11.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml index 6921e1da4f..7e4f7556e0 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_12.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml index 6db2bc649b..f83ccaf59f 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_7.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml index a13f183348..0d5e07a214 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_8.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml index fc6df43cde..887fd8eced 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2018-01-01/hh_id_9.yaml @@ -41,7 +41,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml index 7699f1bf61..e377fddb05 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2019-01-01/hh_id_13.yaml @@ -54,7 +54,7 @@ inputs: betrag_m: - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false sonstige: diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml index 790c64c070..6c8753eb58 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_14.yaml @@ -80,7 +80,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml index 3c5e3e0ff2..ba10439257 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_19.yaml @@ -80,7 +80,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml index 57df823c86..71abc8c3ea 100644 --- a/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml +++ b/src/_gettsim_tests/test_data/einkommensteuer/zu_versteuerndes_einkommen/2020-01-01/hh_id_20.yaml @@ -80,7 +80,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index d87bb6310d..fb5680af10 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -96,7 +96,7 @@ inputs: - 1.0 - 2.0 - 3.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index df80d369f4..bba6b9df20 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -96,7 +96,7 @@ inputs: - 5.0 - 6.0 - 7.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 7992b38caf..0e2af2e65f 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 8.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 7d62a87698..617e7f6865 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 9.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 70d48a3a84..850b0ad7da 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 10.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index b6b2f2d1eb..a37b6c2206 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 11.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index 8da5dd0b2e..01840f9b9b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 12.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index a2e5502bad..0ce48e8646 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 13.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml index 166ad0ed60..e96d5d3439 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 13.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true sonstige: alle_weiteren_m: diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml index 1f31088ed8..59c8834790 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml @@ -48,7 +48,7 @@ inputs: aus_vermietung_und_verpachtung: betrag_m: - 13.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true sonstige: alle_weiteren_m: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 8da9aa0667..932c4769d6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -29,7 +29,7 @@ inputs: geförderte_private_vorsorge_m: - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false hh_id: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" index dbf59c377f..dd33149215 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/geringf\303\274gig_besch\303\244ftigt.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" index e4a2b72a23..61178dccc9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/regul\303\244r_besch\303\244ftigt.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 13 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" index 2100d88340..ab4a3b09ea 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_viel_einkommen.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true hh_id: - 13 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" index 59c4726d78..9be4f13fee 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2002-01-01/selbst\303\244ndig_wenig_einkommen.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true hh_id: - 13 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" index 2630f7113c..b117af0c7b 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2004-04-01/rentner.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 13 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" index 35182bf7b4..e23894cc80 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_10.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 10 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" index 61765b7c02..9151d40aa3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_11.yaml" @@ -30,7 +30,7 @@ inputs: geförderte_private_vorsorge_m: - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false hh_id: diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" index f9224fc909..15467711b1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_12.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 12 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" index 42ceb1a233..4e4963b6a3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_7.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 7 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" index e2934deccb..8c86c8e72e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_8.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 8 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" index b2579b9663..477cc33aea 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2010-01-01/hh_id_9.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 9 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" index bc40ec65e8..1708f1f054 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_1.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 1 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" index e2a7216598..d146a3a8b6 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_2.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 2 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" index ee041f6d87..4d26fd7476 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_3.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 3 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" index 169df0a42f..510047e0b3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_4.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 4 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" index aad0e0520d..aa33b8d077 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_5.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 5 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" index f38a9a7646..9ab7d8344c 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2018-01-01/hh_id_6.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 6 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" index 56054d5cb7..7d3ca10cb9 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_23.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true hh_id: - 23 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" index 24937ddb59..b881df75e3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2019-01-01/hh_id_24.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true hh_id: - 24 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" index 23704d20ae..5b31ebee4e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_15.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 15 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" index 9c47fe3ae9..bedc1db779 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2020-01-01/hh_id_25.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - true hh_id: - 25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" index d0ed0cd49d..b18de42fe3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_16.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 16 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" index b7fb5e61bc..d4809f28b1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-01-01/hh_id_17.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 17 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" index c72317e932..c08d29f6d3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_18.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 18 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" index 502538e841..754901971d 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_19.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 19 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" index 2745db0fcd..369f2804ba 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_20.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 20 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" index b911ed2e04..b1630cd8c5 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_21.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 21 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" index 56e337404f..c723214ea4 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2022-10-01/hh_id_22.yaml" @@ -26,7 +26,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 22 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" index b839e11b32..96244e7ef2 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_23.yaml" @@ -27,7 +27,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 23 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" index 5ddd1f39ac..9bda6211a1 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_24.yaml" @@ -27,7 +27,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 24 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" index b18939cbf4..e1bf0fc785 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_25.yaml" @@ -27,7 +27,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 25 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" index c8f2e1c64f..8b7c132181 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_26.yaml" @@ -27,7 +27,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 26 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" index 227254d756..8f86b5d0e0 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2023-07-01/hh_id_27.yaml" @@ -27,7 +27,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 27 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" index 1ba747599c..60ff5cdf56 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_new_beitragsbemessungsgrenze.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" index dbf13cfd4c..0aa75afdfe 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/above_old_beitragsbemessungsgrenze.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" index d5c9a895ab..78662fe5da 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/below_beitragsbemessungsgrenze.yaml" @@ -24,7 +24,7 @@ inputs: - 0.0 geförderte_private_vorsorge_m: - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false hh_id: - 0 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" index e6386b46bb..1329aacff3 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2024-01-01/einkommen_in_gleitzone.yaml" @@ -36,7 +36,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" index 0617aaed79..2886b3b72e 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/2025-01-01/einkommen_in_gleitzone.yaml" @@ -36,7 +36,7 @@ inputs: - 0.0 - 0.0 - 0.0 - ist_selbstständig: + ist_hauptberuflich_selbstständig: - false - false - false From e68a2d7a8c603fd0c0c4253254cf33c435e238f0 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Mon, 21 Jul 2025 15:09:37 +0200 Subject: [PATCH 080/109] Clean up Wohngeld, Werbungskosten, Minjobs around the introduction of exemptions to social insurance contributions (#1032) --- ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 36 ++- .../werbungskostenpauschale.yaml" | 4 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 4 +- src/_gettsim/kindergeld/kindergeld.py | 9 + src/_gettsim/kindergeld/kindergeld.yaml | 2 - src/_gettsim/lohnsteuer/einkommen.py | 4 +- src/_gettsim/lohnsteuer/minijob.yaml | 5 +- .../arbeitslosen/arbeitslosengeld.py | 6 +- .../arbeitslosen/beitrag/beitrag.py | 62 ++--- .../kranken/beitrag/beitrag.py | 52 ++++- .../kranken/beitrag/einkommen.py | 16 +- .../kranken/beitrag/minijob.yaml | 6 +- src/_gettsim/sozialversicherung/minijob.py | 2 - .../pflege/beitrag/beitrag.py | 52 +++-- .../regul\303\244r_besch\303\244ftigt.py" | 17 +- .../rente/beitrag/beitrag.py | 55 ++--- .../rente/beitrag/minijob.yaml | 4 +- src/_gettsim/wohngeld/einkommen.py | 8 +- src/_gettsim/wohngeld/miete.yaml | 78 +++---- src/_gettsim/wohngeld/wohngeld.py | 217 +++++++++++++++--- src/_gettsim/wohngeld/wohngeld.yaml | 9 +- ...3\274gig_besch\303\244ftigt_nur_west.yaml" | 8 +- .../2009-01-01/verm\303\266gen_zu_hoch.yaml" | 2 +- .../wohngeld/2016-01-01/hh_id_1.yaml | 2 +- .../wohngeld/2021-01-01/hh_id_10.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_11.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_12.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_13.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_14.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_16.yaml | 2 +- .../wohngeld/2023-01-01/hh_id_17.yaml | 2 +- .../mischhaushalt_mit_einer_sgb_ii_bg.yaml | 2 +- .../mischhaushalt_mit_mehreren_sgb_ii_bg.yaml | 2 +- 33 files changed, 460 insertions(+), 218 deletions(-) rename "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" => "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1999-04-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" (97%) diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" index 6bcd1de406..e6c026f31f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -5,23 +5,41 @@ from ttsim.tt_dag_elements import policy_function -@policy_function() -def betrag_y( - betrag_ohne_minijob_y: float, +@policy_function(end_date="1999-03-31", leaf_name="betrag_y") +def betrag_y_bis_03_1999( + einnahmen_nach_abzug_werbungskosten_y: float, +) -> float: + """Taxable income from dependent employment.""" + return einnahmen_nach_abzug_werbungskosten_y + + +@policy_function(start_date="1999-04-01", leaf_name="betrag_y") +def betrag_y_ab_04_1999( + einnahmen_nach_abzug_werbungskosten_y: float, sozialversicherung__geringfügig_beschäftigt: bool, ) -> float: - """Taxable income from dependent employment. In particular, taxable income is set to - 0 for marginally employed persons. + """Taxable income from dependent employment. + + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. """ if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_ohne_minijob_y + out = einnahmen_nach_abzug_werbungskosten_y return out @policy_function() -def betrag_ohne_minijob_y(bruttolohn_y: float, werbungskostenpauschale: float) -> float: - """Take gross wage and deduct Werbungskostenpauschale.""" - return max(bruttolohn_y - werbungskostenpauschale, 0.0) +def einnahmen_nach_abzug_werbungskosten_y( + bruttolohn_y: float, werbungskosten_y: float +) -> float: + """Take gross wage and deduct Werbungskosten.""" + return max(bruttolohn_y - werbungskosten_y, 0.0) + + +@policy_function() +def werbungskosten_y(arbeitnehmerpauschbetrag: float) -> float: + """Arbeitnehmerpauschbetrag.""" + return arbeitnehmerpauschbetrag diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" index 96fb283473..6c9e5be96f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/werbungskostenpauschale.yaml" @@ -1,7 +1,7 @@ --- -werbungskostenpauschale: +arbeitnehmerpauschbetrag: name: - de: Werbungskostenpauschbetrag bei nichtselbstständiger Arbeit. + de: Arbeitnehmerpauschbetrag bei nichtselbstständiger Arbeit. en: Lump-sum deduction for employment income. description: de: § 9a Nr. 1a) EStG diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 0270a0bb1b..74d089e62e 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -251,7 +251,7 @@ def anzurechnendes_einkommen_y( familie__anzahl_erwachsene_fg: int, ist_leistungsbegründendes_kind: bool, pauschaler_abzug_vom_einkommen: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag: float, ) -> float: """Income relevant for means testing for parental leave benefit (Erziehungsgeld). @@ -263,7 +263,7 @@ def anzurechnendes_einkommen_y( if ist_leistungsbegründendes_kind: out = ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg - - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale + - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag * familie__anzahl_erwachsene_fg ) * pauschaler_abzug_vom_einkommen else: diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 8195a14c26..8c4ede5dbc 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -58,6 +58,15 @@ def betrag_gestaffelt_m( @policy_function( + end_date="1995-12-31", + leaf_name="ist_leistungsbegründendes_kind", +) +def leistungsbegründendes_kind_nach_lohn_not_implemented() -> NotImplementedError: + raise NotImplementedError("Kindergeld eligibility is not implemented.") + + +@policy_function( + start_date="1996-01-01", end_date="2011-12-31", leaf_name="ist_leistungsbegründendes_kind", ) diff --git a/src/_gettsim/kindergeld/kindergeld.yaml b/src/_gettsim/kindergeld/kindergeld.yaml index d787fd5435..41160d949d 100644 --- a/src/_gettsim/kindergeld/kindergeld.yaml +++ b/src/_gettsim/kindergeld/kindergeld.yaml @@ -196,8 +196,6 @@ maximales_einkommen_des_kindes: unit: Euros reference_period: Year type: scalar - 1984-01-01: - value: 0 1996-01-01: value: 6136 reference: Art. 1 G. v. 11.10.1995 BGBl. I S. 1250 diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 8cff6587e0..73c81ebc46 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -21,7 +21,7 @@ def einkommen_y( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, steuerklasse: int, vorsorgepauschale_y: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag: float, einkommensteuer__abzüge__alleinerziehendenfreibetrag_basis: float, einkommensteuer__abzüge__sonderausgabenpauschbetrag: float, ) -> float: @@ -29,7 +29,7 @@ def einkommen_y( if steuerklasse == 6: werbungskosten = 0.0 else: - werbungskosten = einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale + werbungskosten = einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag if steuerklasse == 6: sonderausgaben = 0.0 diff --git a/src/_gettsim/lohnsteuer/minijob.yaml b/src/_gettsim/lohnsteuer/minijob.yaml index 2940f997d4..e5cbff86c2 100644 --- a/src/_gettsim/lohnsteuer/minijob.yaml +++ b/src/_gettsim/lohnsteuer/minijob.yaml @@ -12,9 +12,10 @@ minijob_arbeitgeberpauschale: reference_period: null type: scalar add_jahresanfang: true + 1997-01-01: + value: 0.2 + reference: EStG 1997 BGBl. 1997 I S. 821 2003-04-01: value: 0.02 - 2007-01-01: - value: 0.02 2022-10-01: note: Ceased to exist diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index ad2c34e42e..ee600f52c4 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -118,7 +118,7 @@ def einkommen_vorjahr_proxy_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, sozialversicherungspauschale: float, einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag: float, solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, xnp: ModuleType, ) -> float: @@ -134,12 +134,12 @@ def einkommen_vorjahr_proxy_m( # Fictive taxes (Lohnsteuer) are approximated by applying the wage to the tax tariff # Caution: currently wrong calculation due to - # 12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale not being + # 12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag not being # the same as zu versteuerndes einkommen # waiting for PR Lohnsteuer #150 to be merged to correct this problem prox_tax = piecewise_polynomial( x=12 * max_wage - - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__werbungskostenpauschale, + - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag, parameters=einkommensteuer__parameter_einkommensteuertarif, xnp=xnp, ) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index e8979302c6..3fa89ded14 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -5,22 +5,32 @@ from ttsim.tt_dag_elements import policy_function -@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +@policy_function(end_date="1999-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_bis_03_1999( + sozialversicherung__rente__beitrag__einkommen_m: float, + beitragssatz: float, +) -> float: + """Unemployment insurance contributions paid by the insured person.""" + return sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_versicherter_m" +) def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, beitragssatz: float, ) -> float: - """Unemployment insurance contributions paid by the insured person.""" - betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 - ) + """Unemployment insurance contributions paid by the insured person. - # Set to 0 for minijobs + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. + """ if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 return out @@ -34,37 +44,42 @@ def betrag_versicherter_m_mit_midijob( beitragssatz: float, ) -> float: """Unemployment insurance contributions paid by the insured person.""" - betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 - ) - - # Set to 0 for minijobs if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: out = betrag_versicherter_in_gleitzone_m else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 return out -@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +@policy_function(end_date="1999-03-31", leaf_name="betrag_arbeitgeber_m") +def betrag_arbeitgeber_m_bis_03_1999( + sozialversicherung__rente__beitrag__einkommen_m: float, + beitragssatz: float, +) -> float: + """Employer's unemployment insurance contribution.""" + return sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m" +) def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__rente__beitrag__einkommen_m: float, beitragssatz: float, ) -> float: - """Employer's unemployment insurance contribution until March 2003.""" - betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 - ) + """Employer's unemployment insurance contribution until March 2003. - # Set to 0 for minijobs + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. + """ if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 return out @@ -78,17 +93,12 @@ def betrag_arbeitgeber_m_mit_midijob( beitragssatz: float, ) -> float: """Employer's unemployment insurance contribution since April 2003.""" - betrag_arbeitgeber_regulär_beschäftigt_m = ( - sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 - ) - - # Set to 0 for minijobs if sozialversicherung__geringfügig_beschäftigt: out = 0.0 elif sozialversicherung__in_gleitzone: out = betrag_arbeitgeber_in_gleitzone_m else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = sozialversicherung__rente__beitrag__einkommen_m * beitragssatz / 2 return out diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 89b0ec87c1..4e214e298b 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -5,12 +5,25 @@ from ttsim.tt_dag_elements import policy_function -@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +@policy_function( + end_date="1999-03-31", + leaf_name="betrag_versicherter_m", +) +def betrag_versicherter_m_bis_03_1999( + betrag_versicherter_regulärer_beitragssatz: float, +) -> float: + """Public health insurance contributions paid by the insured person.""" + return betrag_versicherter_regulärer_beitragssatz + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_versicherter_m" +) def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_rentner_m: float, betrag_selbstständig_m: float, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, ) -> float: """Public health insurance contributions paid by the insured person. @@ -22,7 +35,7 @@ def betrag_versicherter_m_ohne_midijob( elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz # Add the health insurance contribution for pensions return out + betrag_rentner_m @@ -35,7 +48,7 @@ def betrag_versicherter_m_mit_midijob( betrag_selbstständig_m: float, sozialversicherung__in_gleitzone: bool, betrag_versicherter_in_gleitzone_m: float, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, ) -> float: """Public health insurance contributions paid by the insured person. @@ -49,13 +62,35 @@ def betrag_versicherter_m_mit_midijob( elif sozialversicherung__in_gleitzone: out = betrag_versicherter_in_gleitzone_m else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz # Add the health insurance contribution for pensions return out + betrag_rentner_m -@policy_function(end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m") +@policy_function( + end_date="1999-03-31", + leaf_name="betrag_arbeitgeber_m", +) +def betrag_arbeitgeber_m_bis_03_1999( + einkommen_m: float, + einkommensteuer__einkünfte__ist_selbstständig: bool, + beitragssatz_arbeitgeber: float, +) -> float: + """Employer's public health insurance contribution.""" + if einkommensteuer__einkünfte__ist_selbstständig: + out = 0.0 + else: + out = einkommen_m * beitragssatz_arbeitgeber + + return out + + +@policy_function( + start_date="1999-04-01", + end_date="2003-03-31", + leaf_name="betrag_arbeitgeber_m", +) def betrag_arbeitgeber_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, @@ -66,7 +101,8 @@ def betrag_arbeitgeber_m_ohne_midijob( ) -> float: """Employer's public health insurance contribution. - Before Midijob introduction in April 2003. + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. """ if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = 0.0 @@ -112,7 +148,7 @@ def betrag_arbeitgeber_m_mit_midijob( @policy_function() -def betrag_versicherter_regulär_beschäftigt_m( +def betrag_versicherter_regulärer_beitragssatz( einkommen_m: float, beitragssatz_arbeitnehmer: float, ) -> float: diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index ac9ad243aa..fe0d2bfe22 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -5,15 +5,23 @@ from ttsim.tt_dag_elements import policy_function -@policy_function() -def einkommen_m( +@policy_function(end_date="1999-03-31", leaf_name="einkommen_m") +def einkommen_m_bis_03_1999( + einkommen_bis_beitragsbemessungsgrenze_m: float, +) -> float: + """Wage subject to public health insurance contributions.""" + return einkommen_bis_beitragsbemessungsgrenze_m + + +@policy_function(start_date="1999-04-01", leaf_name="einkommen_m") +def einkommen_m_ab_04_1999( einkommen_bis_beitragsbemessungsgrenze_m: float, sozialversicherung__regulär_beschäftigt: bool, ) -> float: """Wage subject to public health insurance contributions. - This affects marginally employed persons and high wages for above the assessment - ceiling. + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. """ if sozialversicherung__regulär_beschäftigt: out = einkommen_bis_beitragsbemessungsgrenze_m diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml b/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml index 760cfab4b7..f7aafd3e50 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/minijob.yaml @@ -14,10 +14,10 @@ minijob_arbeitgeberpauschale: reference_period: null type: scalar add_jahresanfang: true - 1984-01-01: - value: 0 - 1999-01-01: + 1999-04-01: value: 0.1 + reference: BGBl I 1999 S. 388 + note: Introduction of '630 Mark' jobs. 2003-04-01: value: 0.11 2007-01-01: diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py index 2248f4e1eb..3682698b5f 100644 --- a/src/_gettsim/sozialversicherung/minijob.py +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -12,8 +12,6 @@ def geringfügig_beschäftigt( ) -> bool: """Individual earns less than marginal employment threshold. - Marginal employed pay no social insurance contributions. - Legal reference: § 8 Abs. 1 Satz 1 and 2 SGB IV """ return ( diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index daee97ea21..5217f5da64 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -6,7 +6,18 @@ @policy_function( - start_date="1995-01-01", + end_date="1999-03-31", + leaf_name="betrag_versicherter_m", +) +def betrag_versicherter_m_bis_03_1999( + betrag_versicherter_regulärer_beitragssatz: float, +) -> float: + """Long-term care insurance contributions paid by the insured person.""" + return betrag_versicherter_regulärer_beitragssatz + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_versicherter_m", ) @@ -14,16 +25,20 @@ def betrag_versicherter_m_ohne_midijob( einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, betrag_selbstständig_m: float, sozialversicherung__geringfügig_beschäftigt: bool, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, betrag_rentner_m: float, ) -> float: - """Long-term care insurance contributions paid by the insured person.""" + """Long-term care insurance contributions paid by the insured person. + + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. + """ if einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: out = betrag_selbstständig_m elif sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz # Add the care insurance contribution for pensions return out + betrag_rentner_m @@ -39,7 +54,7 @@ def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, betrag_versicherter_in_gleitzone_m: float, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, betrag_rentner_m: float, ) -> float: """Long-term care insurance contributions paid by the insured person.""" @@ -50,21 +65,32 @@ def betrag_versicherter_m_mit_midijob( elif sozialversicherung__in_gleitzone: out = betrag_versicherter_in_gleitzone_m else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz # Add the care insurance contribution for pensions return out + betrag_rentner_m @policy_function( - start_date="1995-01-01", + end_date="1999-03-31", + leaf_name="betrag_arbeitgeber_m", +) +def betrag_arbeitgeber_m_bis_03_1999( + betrag_arbeitgeber_regulärer_beitragssatz_m: float, +) -> float: + """Long-term care insurance contribution paid by the employer.""" + return betrag_arbeitgeber_regulärer_beitragssatz_m + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m", ) def betrag_arbeitgeber_m_ohne_midijob( einkommensteuer__einkünfte__ist_hauptberuflich_selbstständig: bool, sozialversicherung__geringfügig_beschäftigt: bool, - betrag_arbeitgeber_regulär_beschäftigt_m: float, + betrag_arbeitgeber_regulärer_beitragssatz_m: float, ) -> float: """Long-term care insurance contribution paid by the employer. @@ -76,7 +102,7 @@ def betrag_arbeitgeber_m_ohne_midijob( ): out = 0.0 else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = betrag_arbeitgeber_regulärer_beitragssatz_m return out @@ -90,7 +116,7 @@ def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, sozialversicherung__in_gleitzone: bool, betrag_arbeitgeber_in_gleitzone_m: float, - betrag_arbeitgeber_regulär_beschäftigt_m: float, + betrag_arbeitgeber_regulärer_beitragssatz_m: float, ) -> float: """Long-term care insurance contribution paid by the employer. @@ -104,7 +130,7 @@ def betrag_arbeitgeber_m_mit_midijob( elif sozialversicherung__in_gleitzone: out = betrag_arbeitgeber_in_gleitzone_m else: - out = betrag_arbeitgeber_regulär_beschäftigt_m + out = betrag_arbeitgeber_regulärer_beitragssatz_m return out @@ -126,7 +152,7 @@ def betrag_selbstständig_m( @policy_function(start_date="1995-01-01") -def betrag_versicherter_regulär_beschäftigt_m( +def betrag_versicherter_regulärer_beitragssatz( sozialversicherung__kranken__beitrag__einkommen_m: float, beitragssatz_arbeitnehmer: float, ) -> float: @@ -137,7 +163,7 @@ def betrag_versicherter_regulär_beschäftigt_m( @policy_function(start_date="1995-01-01") -def betrag_arbeitgeber_regulär_beschäftigt_m( +def betrag_arbeitgeber_regulärer_beitragssatz_m( sozialversicherung__kranken__beitrag__einkommen_m: float, beitragssatz_arbeitgeber: float, ) -> float: diff --git "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index 23df15a21f..2ed4b4e58c 100644 --- "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -10,13 +10,8 @@ def regulär_beschäftigt_vor_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, minijobgrenze: float, ) -> bool: - """Regular employment check until March 2003. - - Employees earning more than the minijob threshold, are subject to all ordinary - income and social insurance contribution regulations. In gettsim we call these - regular employed. - - """ + """Employee is in regular employment, earning more than the marginal employment + threshold.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m >= minijobgrenze @@ -28,13 +23,7 @@ def regulär_beschäftigt_mit_midijob( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, midijobgrenze: float, ) -> bool: - """Regular employment check since April 2003. - - Employees earning more than the midijob threshold, are subject to all ordinary - income and social insurance contribution regulations. In gettsim we call these - regular employed. - - """ + """Employee is in regular employment, earning more than the midijob threshold.""" return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m >= midijobgrenze diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index c79e3e561e..fc33baf2f4 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -5,19 +5,30 @@ from ttsim.tt_dag_elements import policy_function -@policy_function(end_date="2003-03-31", leaf_name="betrag_versicherter_m") +@policy_function(end_date="1999-03-31", leaf_name="betrag_versicherter_m") +def betrag_versicherter_m_bis_03_1999( + betrag_versicherter_regulärer_beitragssatz: float, +) -> float: + """Public pension insurance contributions paid by the insured person.""" + return betrag_versicherter_regulärer_beitragssatz + + +@policy_function( + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_versicherter_m" +) def betrag_versicherter_m_ohne_midijob( sozialversicherung__geringfügig_beschäftigt: bool, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, ) -> float: """Public pension insurance contributions paid by the insured person. - Before Midijob introduction in April 2003. + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. """ if sozialversicherung__geringfügig_beschäftigt: out = 0.0 else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz return out @@ -26,7 +37,7 @@ def betrag_versicherter_m_ohne_midijob( def betrag_versicherter_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_in_gleitzone_arbeitnehmer_m: float, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, sozialversicherung__in_gleitzone: bool, ) -> float: """Public pension insurance contributions paid by the insured person. @@ -38,57 +49,49 @@ def betrag_versicherter_m_mit_midijob( elif sozialversicherung__in_gleitzone: out = betrag_in_gleitzone_arbeitnehmer_m else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz return out @policy_function() -def betrag_versicherter_regulär_beschäftigt_m( +def betrag_versicherter_regulärer_beitragssatz( einkommen_m: float, beitragssatz: float, ) -> float: - """Public pension insurance contributions paid by the insured person. - - Before Midijob introduction in April 2003. - """ + """Public pension insurance contributions paid by the insured person.""" return einkommen_m * beitragssatz / 2 @policy_function( - end_date="1998-12-31", + end_date="1999-03-31", leaf_name="betrag_arbeitgeber_m", ) def betrag_arbeitgeber_m_ohne_arbeitgeberpauschale( - sozialversicherung__geringfügig_beschäftigt: bool, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, ) -> float: """Employer's public pension insurance contribution. Before Minijobs were subject to pension contributions. """ - if sozialversicherung__geringfügig_beschäftigt: - out = 0.0 - else: - out = betrag_versicherter_regulär_beschäftigt_m - - return out + return betrag_versicherter_regulärer_beitragssatz @policy_function( - start_date="1999-01-01", + start_date="1999-04-01", end_date="2003-03-31", leaf_name="betrag_arbeitgeber_m", ) def betrag_arbeitgeber_m_mit_arbeitgeberpauschale( sozialversicherung__geringfügig_beschäftigt: bool, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, minijob_arbeitgeberpauschale: float, ) -> float: """Employer's public pension insurance contribution. - Before Midijob introduction in April 2003. + Special rules for marginal employment have been introduced in April 1999 as part of + the '630 Mark' job introduction. """ if sozialversicherung__geringfügig_beschäftigt: out = ( @@ -96,7 +99,7 @@ def betrag_arbeitgeber_m_mit_arbeitgeberpauschale( * minijob_arbeitgeberpauschale ) else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz return out @@ -105,7 +108,7 @@ def betrag_arbeitgeber_m_mit_arbeitgeberpauschale( def betrag_arbeitgeber_m_mit_midijob( sozialversicherung__geringfügig_beschäftigt: bool, betrag_in_gleitzone_arbeitgeber_m: float, - betrag_versicherter_regulär_beschäftigt_m: float, + betrag_versicherter_regulärer_beitragssatz: float, sozialversicherung__in_gleitzone: bool, einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, minijob_arbeitgeberpauschale: float, @@ -122,7 +125,7 @@ def betrag_arbeitgeber_m_mit_midijob( elif sozialversicherung__in_gleitzone: out = betrag_in_gleitzone_arbeitgeber_m else: - out = betrag_versicherter_regulär_beschäftigt_m + out = betrag_versicherter_regulärer_beitragssatz return out diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml b/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml index e04d597515..1cee63069c 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml +++ b/src/_gettsim/sozialversicherung/rente/beitrag/minijob.yaml @@ -17,8 +17,10 @@ minijob_arbeitgeberpauschale: reference_period: null type: scalar add_jahresanfang: true - 1999-01-01: + 1999-04-01: value: 0.12 + reference: BGBl I 1999 S. 388 + note: Introduction of '630 Mark' jobs. 2003-04-01: value: 0.12 2007-01-01: diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index fcbdd06af5..ccfca1127b 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -136,7 +136,7 @@ def abzugsanteil_vom_einkommen_für_steuern_sozialversicherung( @policy_function(end_date="2006-12-31", leaf_name="einkommen_vor_freibetrag_m") def einkommen_vor_freibetrag_m_ohne_elterngeld( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__einnahmen_nach_abzug_werbungskosten_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, @@ -153,7 +153,7 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( """ einkommen = ( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__einnahmen_nach_abzug_werbungskosten_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m ) @@ -174,7 +174,7 @@ def einkommen_vor_freibetrag_m_ohne_elterngeld( @policy_function(start_date="2007-01-01", leaf_name="einkommen_vor_freibetrag_m") def einkommen_vor_freibetrag_m_mit_elterngeld( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__einnahmen_nach_abzug_werbungskosten_m: float, einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m: float, einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, sozialversicherung__arbeitslosen__betrag_m: float, @@ -196,7 +196,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( # https://github.com/iza-institute-of-labor-economics/gettsim/issues/357 einkommen = ( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__betrag_ohne_minijob_m + + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__einnahmen_nach_abzug_werbungskosten_m + einkommensteuer__einkünfte__aus_kapitalvermögen__kapitalerträge_m + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m ) diff --git a/src/_gettsim/wohngeld/miete.yaml b/src/_gettsim/wohngeld/miete.yaml index 336a3788ec..b64859905b 100644 --- a/src/_gettsim/wohngeld/miete.yaml +++ b/src/_gettsim/wohngeld/miete.yaml @@ -127,7 +127,7 @@ raw_max_miete_m_nach_baujahr: 1: 161 2: 166 3: 174 - 2009: + 2100: 1: 169 2: 179 3: 189 @@ -144,7 +144,7 @@ raw_max_miete_m_nach_baujahr: 1: 210 2: 217 3: 228 - 2009: + 2100: 1: 225 2: 235 3: 245 @@ -161,7 +161,7 @@ raw_max_miete_m_nach_baujahr: 1: 256 2: 263 3: 274 - 2009: + 2100: 1: 276 2: 286 3: 297 @@ -178,7 +178,7 @@ raw_max_miete_m_nach_baujahr: 1: 294 2: 304 3: 317 - 2009: + 2100: 1: 320 2: 332 3: 345 @@ -195,7 +195,7 @@ raw_max_miete_m_nach_baujahr: 1: 335 2: 348 3: 363 - 2009: + 2100: 1: 366 2: 378 3: 394 @@ -212,7 +212,7 @@ raw_max_miete_m_nach_baujahr: 1: 41 2: 42 3: 44 - 2009: + 2100: 1: 45 2: 47 3: 48 @@ -240,7 +240,7 @@ raw_max_miete_m_nach_baujahr: 3: 194 4: 205 5: 217 - 2009: + 2100: 1: 184 2: 194 3: 207 @@ -265,7 +265,7 @@ raw_max_miete_m_nach_baujahr: 3: 251 4: 266 5: 281 - 2009: + 2100: 1: 235 2: 253 3: 268 @@ -290,7 +290,7 @@ raw_max_miete_m_nach_baujahr: 3: 299 4: 317 5: 335 - 2009: + 2100: 1: 281 2: 302 3: 320 @@ -315,7 +315,7 @@ raw_max_miete_m_nach_baujahr: 3: 348 4: 368 5: 389 - 2009: + 2100: 1: 327 2: 350 3: 373 @@ -340,7 +340,7 @@ raw_max_miete_m_nach_baujahr: 3: 396 4: 419 5: 442 - 2009: + 2100: 1: 373 2: 399 3: 424 @@ -365,7 +365,7 @@ raw_max_miete_m_nach_baujahr: 3: 46 4: 49 5: 51 - 2009: + 2100: 1: 46 2: 49 3: 51 @@ -397,7 +397,7 @@ raw_max_miete_m_nach_baujahr: 4: 205 5: 217 6: 230 - 2009: + 2100: 1: 184 2: 194 3: 207 @@ -426,7 +426,7 @@ raw_max_miete_m_nach_baujahr: 4: 266 5: 281 6: 297 - 2009: + 2100: 1: 235 2: 253 3: 268 @@ -455,7 +455,7 @@ raw_max_miete_m_nach_baujahr: 4: 317 5: 335 6: 353 - 2009: + 2100: 1: 281 2: 302 3: 320 @@ -484,7 +484,7 @@ raw_max_miete_m_nach_baujahr: 4: 368 5: 389 6: 409 - 2009: + 2100: 1: 327 2: 350 3: 373 @@ -513,7 +513,7 @@ raw_max_miete_m_nach_baujahr: 4: 419 5: 442 6: 465 - 2009: + 2100: 1: 373 2: 399 3: 424 @@ -542,7 +542,7 @@ raw_max_miete_m_nach_baujahr: 4: 51 5: 54 6: 56 - 2009: + 2100: 1: 46 2: 49 3: 51 @@ -568,7 +568,7 @@ raw_max_miete_m_nach_baujahr: 4: 222 5: 240 6: 256 - 2009: + 2100: 1: 194 2: 207 3: 220 @@ -590,7 +590,7 @@ raw_max_miete_m_nach_baujahr: 4: 289 5: 309 6: 332 - 2009: + 2100: 1: 251 2: 268 3: 284 @@ -612,7 +612,7 @@ raw_max_miete_m_nach_baujahr: 4: 345 5: 371 6: 396 - 2009: + 2100: 1: 299 2: 320 3: 340 @@ -634,7 +634,7 @@ raw_max_miete_m_nach_baujahr: 4: 401 5: 429 6: 460 - 2009: + 2100: 1: 348 2: 371 3: 394 @@ -656,7 +656,7 @@ raw_max_miete_m_nach_baujahr: 4: 458 5: 491 6: 524 - 2009: + 2100: 1: 396 2: 422 3: 450 @@ -678,7 +678,7 @@ raw_max_miete_m_nach_baujahr: 4: 56 5: 61 6: 64 - 2009: + 2100: 1: 49 2: 51 3: 54 @@ -711,7 +711,7 @@ raw_max_miete_m_nach_baujahr: 4: 238 5: 256 6: 274 - 2009: + 2100: 1: 228 2: 243 3: 258 @@ -740,7 +740,7 @@ raw_max_miete_m_nach_baujahr: 4: 307 5: 330 6: 353 - 2009: + 2100: 1: 294 2: 314 3: 335 @@ -769,7 +769,7 @@ raw_max_miete_m_nach_baujahr: 4: 366 5: 394 6: 422 - 2009: + 2100: 1: 353 2: 378 3: 401 @@ -798,7 +798,7 @@ raw_max_miete_m_nach_baujahr: 4: 427 5: 458 6: 488 - 2009: + 2100: 1: 409 2: 437 3: 465 @@ -827,7 +827,7 @@ raw_max_miete_m_nach_baujahr: 4: 486 5: 522 6: 557 - 2009: + 2100: 1: 465 2: 499 3: 529 @@ -856,7 +856,7 @@ raw_max_miete_m_nach_baujahr: 4: 61 5: 64 6: 69 - 2009: + 2100: 1: 56 2: 61 3: 64 @@ -882,7 +882,7 @@ raw_max_miete_m_nach_baujahr: 4: 265 5: 285 6: 305 - 2009: + 2100: 1: 265 2: 280 3: 300 @@ -904,7 +904,7 @@ raw_max_miete_m_nach_baujahr: 4: 355 5: 380 6: 405 - 2009: + 2100: 1: 320 2: 345 3: 365 @@ -926,7 +926,7 @@ raw_max_miete_m_nach_baujahr: 4: 420 5: 455 6: 485 - 2009: + 2100: 1: 385 2: 410 3: 435 @@ -938,9 +938,9 @@ raw_max_miete_m_nach_baujahr: 1: 370 2: 395 3: 420 - 4: 454 - 5: 520 - 6: 550 # FixMe: made up + 4: 455 + 5: 585 + 6: 520 1991: 1: 400 2: 425 @@ -948,7 +948,7 @@ raw_max_miete_m_nach_baujahr: 4: 490 5: 525 6: 565 - 2009: + 2100: 1: 445 2: 475 3: 505 @@ -970,7 +970,7 @@ raw_max_miete_m_nach_baujahr: 4: 560 5: 600 6: 640 - 2009: + 2100: 1: 510 2: 545 3: 580 @@ -992,7 +992,7 @@ raw_max_miete_m_nach_baujahr: 4: 70 5: 75 6: 80 - 2009: + 2100: 1: 60 2: 65 3: 70 diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index e13052b926..194057b284 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -36,15 +36,6 @@ from _gettsim.param_types import ConsecutiveIntLookupTableParamValue -@dataclass(frozen=True) -class BasisformelParamValues: - skalierungsfaktor: float - a: ConsecutiveIntLookupTableParamValue - b: ConsecutiveIntLookupTableParamValue - c: ConsecutiveIntLookupTableParamValue - zusatzbetrag_nach_haushaltsgröße: ConsecutiveIntLookupTableParamValue - - @agg_by_group_function(agg_type=AggType.COUNT) def anzahl_personen_wthh(wthh_id: int) -> int: pass @@ -80,46 +71,59 @@ def betrag_m_wthh( return out -def basisformel( - anzahl_personen: int, - einkommen_m: float, - miete_m: float, - params: BasisformelParamValues, +@policy_function( + leaf_name="anspruchshöhe_m_wthh", + end_date="2000-12-31", + rounding_spec=RoundingSpec( + base=1, + direction="nearest", + reference="§ 19 WoGG Abs.2 Anlage 3", + ), +) +def anspruchshöhe_m_wthh_bis_2000( + anzahl_personen_wthh: int, + einkommen_m_wthh: float, + miete_m_wthh: float, + grundsätzlich_anspruchsberechtigt_wthh: bool, + basisformel_params: BasisformelParamValues, xnp: ModuleType, ) -> float: - """Basic formula for housing benefit calculation. + """Housing benefit after wealth and income check. - Note: This function is not a direct target in the DAG, but a helper function to - store the code for Wohngeld calculation. + This target is used to calculate the actual Wohngeld of all Bedarfsgemeinschaften in + the household that passed the priority check against Arbeitslosengeld 2. Returns + zero if not eligible. """ - a = params.a.look_up(anzahl_personen) - b = params.b.look_up(anzahl_personen) - c = params.c.look_up(anzahl_personen) - zusatzbetrag_nach_haushaltsgröße = params.zusatzbetrag_nach_haushaltsgröße.look_up( - anzahl_personen - ) - out = xnp.maximum( - 0.0, - params.skalierungsfaktor - * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), - ) - return xnp.minimum(miete_m, out + zusatzbetrag_nach_haushaltsgröße) + if grundsätzlich_anspruchsberechtigt_wthh: + out = basisformel_ohne_zusatzbetrag_nach_haushaltsgröße( + anzahl_personen=anzahl_personen_wthh, + einkommen_m=einkommen_m_wthh, + miete_m=miete_m_wthh, + params=basisformel_params, + xnp=xnp, + ) + else: + out = 0.0 + + return out @policy_function( + leaf_name="anspruchshöhe_m_wthh", + start_date="2001-01-01", rounding_spec=RoundingSpec( base=1, direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ), ) -def anspruchshöhe_m_wthh( +def anspruchshöhe_m_wthh_ab_2001( anzahl_personen_wthh: int, einkommen_m_wthh: float, miete_m_wthh: float, grundsätzlich_anspruchsberechtigt_wthh: bool, - basisformel_params: BasisformelParamValues, + basisformel_params: BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße, xnp: ModuleType, ) -> float: """Housing benefit after wealth and income check. @@ -130,7 +134,7 @@ def anspruchshöhe_m_wthh( """ if grundsätzlich_anspruchsberechtigt_wthh: - out = basisformel( + out = basisformel_mit_zusatzbetrag_nach_haushaltsgröße( anzahl_personen=anzahl_personen_wthh, einkommen_m=einkommen_m_wthh, miete_m=miete_m_wthh, @@ -144,13 +148,15 @@ def anspruchshöhe_m_wthh( @policy_function( + leaf_name="anspruchshöhe_m_bg", + end_date="2000-12-31", rounding_spec=RoundingSpec( base=1, direction="nearest", reference="§ 19 WoGG Abs.2 Anlage 3", ), ) -def anspruchshöhe_m_bg( +def anspruchshöhe_m_bg_bis_2000( arbeitslosengeld_2__anzahl_personen_bg: int, einkommen_m_bg: float, miete_m_bg: float, @@ -164,7 +170,7 @@ def anspruchshöhe_m_bg( """ if grundsätzlich_anspruchsberechtigt_bg: - out = basisformel( + out = basisformel_ohne_zusatzbetrag_nach_haushaltsgröße( anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, einkommen_m=einkommen_m_bg, miete_m=miete_m_bg, @@ -177,16 +183,100 @@ def anspruchshöhe_m_bg( return out -@param_function() -def basisformel_params( +@policy_function( + leaf_name="anspruchshöhe_m_bg", + start_date="2001-01-01", + rounding_spec=RoundingSpec( + base=1, + direction="nearest", + reference="§ 19 WoGG Abs.2 Anlage 3", + ), +) +def anspruchshöhe_m_bg_ab_2001( + arbeitslosengeld_2__anzahl_personen_bg: int, + einkommen_m_bg: float, + miete_m_bg: float, + grundsätzlich_anspruchsberechtigt_bg: bool, + basisformel_params: BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße, + xnp: ModuleType, +) -> float: + """Housing benefit after wealth and income check. + + This target is used for the priority check calculation against Arbeitslosengeld 2. + + """ + if grundsätzlich_anspruchsberechtigt_bg: + out = basisformel_mit_zusatzbetrag_nach_haushaltsgröße( + anzahl_personen=arbeitslosengeld_2__anzahl_personen_bg, + einkommen_m=einkommen_m_bg, + miete_m=miete_m_bg, + params=basisformel_params, + xnp=xnp, + ) + else: + out = 0.0 + + return out + + +@dataclass(frozen=True) +class BasisformelParamValues: + skalierungsfaktor: float + a: ConsecutiveIntLookupTableParamValue + b: ConsecutiveIntLookupTableParamValue + c: ConsecutiveIntLookupTableParamValue + + +@param_function(end_date="2000-12-31", leaf_name="basisformel_params") +def basisformel_params_bis_2000( skalierungsfaktor: float, koeffizienten_berechnungsformel: dict[int, dict[str, float]], max_anzahl_personen: dict[str, int], - zusatzbetrag_pro_person_in_großen_haushalten: float, xnp: ModuleType, ) -> BasisformelParamValues: """Convert the parameters of the Wohngeld basis formula to a format that can be used by Numpy and Jax. + + Note: Not entirely sure that 'zusatzbetrag_pro_person_in_großen_haushalten' was not + part of the pre-2001 parameters. At least it wasn't part of the 1993 novella, see + BGBl I 1993 S. 183. + """ + a = {i: v["a"] for i, v in koeffizienten_berechnungsformel.items()} + b = {i: v["b"] for i, v in koeffizienten_berechnungsformel.items()} + c = {i: v["c"] for i, v in koeffizienten_berechnungsformel.items()} + max_normal = max_anzahl_personen["normale_berechnung"] + for koeff in [a, b, c]: + if max(koeff.keys()) != max_normal: + raise ValueError( + "The maximum number of persons for the normal calculation of the basic" + "Wohngeld formula `max_anzahl_personen['normale_berechnung'] " + f"(got: {max_normal}) must be the same as the maximum number of household " + f"members in `koeffizienten_berechnungsformel` (got: {max(koeff.keys())})" + ) + + return BasisformelParamValues( + skalierungsfaktor=skalierungsfaktor, + a=get_consecutive_int_lookup_table_param_value(raw=a, xnp=xnp), + b=get_consecutive_int_lookup_table_param_value(raw=b, xnp=xnp), + c=get_consecutive_int_lookup_table_param_value(raw=c, xnp=xnp), + ) + + +@dataclass(frozen=True) +class BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße(BasisformelParamValues): + zusatzbetrag_nach_haushaltsgröße: ConsecutiveIntLookupTableParamValue + + +@param_function(start_date="2001-01-01", leaf_name="basisformel_params") +def basisformel_params_ab_2001( + skalierungsfaktor: float, + koeffizienten_berechnungsformel: dict[int, dict[str, float]], + max_anzahl_personen: dict[str, int], + zusatzbetrag_pro_person_in_großen_haushalten: float, + xnp: ModuleType, +) -> BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße: + """Convert the parameters of the Wohngeld basis formula to a format that can be + used by Numpy and Jax. """ a = {i: v["a"] for i, v in koeffizienten_berechnungsformel.items()} b = {i: v["b"] for i, v in koeffizienten_berechnungsformel.items()} @@ -208,7 +298,7 @@ def basisformel_params( i - max_normal ) * zusatzbetrag_pro_person_in_großen_haushalten - return BasisformelParamValues( + return BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße( skalierungsfaktor=skalierungsfaktor, a=get_consecutive_int_lookup_table_param_value(raw=a, xnp=xnp), b=get_consecutive_int_lookup_table_param_value(raw=b, xnp=xnp), @@ -218,3 +308,54 @@ def basisformel_params( xnp=xnp, ), ) + + +def basisformel_ohne_zusatzbetrag_nach_haushaltsgröße( + anzahl_personen: int, + einkommen_m: float, + miete_m: float, + params: BasisformelParamValues, + xnp: ModuleType, +) -> float: + """Basic formula for housing benefit calculation. + + Note: This function is not a direct target in the DAG, but a helper function to + store the code for Wohngeld calculation. + + """ + a = params.a.look_up(anzahl_personen) + b = params.b.look_up(anzahl_personen) + c = params.c.look_up(anzahl_personen) + max_aus_formel_m = xnp.maximum( + 0.0, + params.skalierungsfaktor + * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), + ) + return xnp.minimum(miete_m, max_aus_formel_m) + + +def basisformel_mit_zusatzbetrag_nach_haushaltsgröße( + anzahl_personen: int, + einkommen_m: float, + miete_m: float, + params: BasisformelParamValuesMitZusatzbetragNachHaushaltsgröße, + xnp: ModuleType, +) -> float: + """Basic formula for housing benefit calculation. + + Note: This function is not a direct target in the DAG, but a helper function to + store the code for Wohngeld calculation. + + """ + a = params.a.look_up(anzahl_personen) + b = params.b.look_up(anzahl_personen) + c = params.c.look_up(anzahl_personen) + zusatzbetrag_nach_haushaltsgröße = params.zusatzbetrag_nach_haushaltsgröße.look_up( + anzahl_personen + ) + max_aus_formel_m = zusatzbetrag_nach_haushaltsgröße + xnp.maximum( + 0.0, + params.skalierungsfaktor + * (miete_m - ((a + (b * miete_m) + (c * einkommen_m)) * einkommen_m)), + ) + return xnp.minimum(miete_m, max_aus_formel_m) diff --git a/src/_gettsim/wohngeld/wohngeld.yaml b/src/_gettsim/wohngeld/wohngeld.yaml index 62737b406c..efcd453676 100644 --- a/src/_gettsim/wohngeld/wohngeld.yaml +++ b/src/_gettsim/wohngeld/wohngeld.yaml @@ -559,16 +559,19 @@ zusatzbetrag_pro_person_in_großen_haushalten: Haushalte mit mehr als 12 Personen erhalten einen zusätzlichen Betrag pro Person, der auf das Wohngeld für einen Haushalt mit 12 Personen angerechnet wird. §19 Abs. 3 WoGG + Das Einführungsdatum des Parameters ist nicht ganz klar. Es ist in der + Neuverkündung des WoGG 2002 enthalten, aber nicht in der 1993 Novelle, siehe BGBl + I 1993 S. 183. en: >- Households with more than 12 persons receive an additional amount per person, which is counted towards the housing allowance for a household of 12 people. §19 Abs. 3 WoGG + The introduction date of the parameter is not entirely clear. It is contained in + the re-enactment of the WoGG 2002, but not in the 1993 Novelle, see BGBl I 1993 + S. 183. unit: Euros reference_period: Month type: scalar - 1984-01-01: - value: 0 - note: Fix this via dates_active! 2001-01-01: value: 40 reference: Art. 5 G. v. 22.12.1999 BGBl. I S. 2671 diff --git "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1999-04-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" similarity index 97% rename from "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" rename to "src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1999-04-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" index 932c4769d6..7c62eeec7f 100644 --- "a/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1998-01-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" +++ "b/src/_gettsim_tests/test_data/sozialversicherung/beitr\303\244ge/1999-04-01/geringf\303\274gig_besch\303\244ftigt_nur_west.yaml" @@ -72,10 +72,10 @@ outputs: - 0.0 - 9.75 beiträge_arbeitgeber_m: - - 0.0 + - 66.0 - 63.15 beiträge_gesamt_m: - - 0.0 + - 66.0 - 126.3 beiträge_versicherter_m: - 0.0 @@ -86,7 +86,7 @@ outputs: kranken: beitrag: betrag_arbeitgeber_m: - - 0.0 + - 30.0 - 20.4 betrag_versicherter_m: - 0.0 @@ -102,7 +102,7 @@ outputs: rente: beitrag: betrag_arbeitgeber_m: - - 0.0 + - 36.0 - 30.45 betrag_versicherter_m: - 0.0 diff --git "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" index 4e0496b54d..253d2622fd 100644 --- "a/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" +++ "b/src/_gettsim_tests/test_data/wohngeld/2009-01-01/verm\303\266gen_zu_hoch.yaml" @@ -32,7 +32,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 16000.0 - 0.0 bruttolohn_m: diff --git a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml index ea83f319e5..7b4ee75c11 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2016-01-01/hh_id_1.yaml @@ -39,7 +39,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 25000.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml index 88c22b2a5b..59de311738 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2021-01-01/hh_id_10.yaml @@ -25,7 +25,7 @@ inputs: kapitalerträge_y: - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 12600.0 bruttolohn_m: - 1050.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml index 13987b9326..f043aa266a 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_11.yaml @@ -27,7 +27,7 @@ inputs: kapitalerträge_y: - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 12600.0 bruttolohn_m: - 1050.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml index 489309b0d4..51b3d5ec25 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_12.yaml @@ -27,7 +27,7 @@ inputs: kapitalerträge_y: - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 12600.0 bruttolohn_m: - 1050.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml index 6b0cf8a2f7..3806d8ee73 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_13.yaml @@ -43,7 +43,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 10800.0 - 12600.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml index f4489861af..b11a473673 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_14.yaml @@ -67,7 +67,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 15600.0 - 14400.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml index ba5ee04bc3..16f5f90abe 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_16.yaml @@ -51,7 +51,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 10770.0 - 4770.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml index 409cec97f1..aad6401d98 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/hh_id_17.yaml @@ -59,7 +59,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 15600.0 - 14400.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml index 1acb172334..281c148aa2 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_einer_sgb_ii_bg.yaml @@ -53,7 +53,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 12000.0 - 12000.0 - 9600.0 diff --git a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml index 25604126af..fbdc6e1f33 100644 --- a/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml +++ b/src/_gettsim_tests/test_data/wohngeld/2023-01-01/mischhaushalt_mit_mehreren_sgb_ii_bg.yaml @@ -67,7 +67,7 @@ inputs: - 0.0 - 0.0 aus_nichtselbstständiger_arbeit: - betrag_ohne_minijob_y: + einnahmen_nach_abzug_werbungskosten_y: - 12000.0 - 12000.0 - 9600.0 From cd61e02b4df095131bcc44236b887d418a36e26d Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Mon, 21 Jul 2025 15:45:46 +0200 Subject: [PATCH 081/109] Change the handling of `policy_date`, `evaluation_date`; remove `date` (#1035) Following feedback on GEP 7, we got rid of the `date` / `date_str` inputs to main. Instead: - `policy_date` / `policy_date_str` is required to set up the policy environment and will be stored in there. - `evaluation_date` / `evaluation_date_str` is an optional input to `main` The evaluation date will be used from the following sources: 1. If present in the input data, that will be used 2. Unless 1., the variable passed to `main` will be used 3. Unless 2., the policy date will be used If more than one option is specified, a warning will be issued. --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- interface-prototype.ipynb | 6 +- pixi.lock | 1864 +++++++++-------- pyproject.toml | 5 +- sandbox/check-autocomplete.ipynb | 2 +- sandbox/plots.ipynb | 2 +- src/_gettsim_tests/test_jittability.py | 11 +- src/_gettsim_tests/test_plot_dag.py | 4 +- src/_gettsim_tests/test_policy.py | 4 +- src/_gettsim_tests/test_templates.py | 2 +- src/gettsim/__init__.py | 8 +- src/ttsim/interface_dag.py | 18 +- src/ttsim/interface_dag_elements/__init__.py | 5 +- src/ttsim/interface_dag_elements/dates.py | 70 +- .../interface_node_objects.py | 18 +- .../policy_environment.py | 77 +- .../specialized_environment.py | 33 +- src/ttsim/interface_dag_elements/templates.py | 4 +- src/ttsim/interface_dag_elements/warn_if.py | 111 +- src/ttsim/plot_dag.py | 6 +- src/ttsim/testing_utils.py | 22 +- .../column_objects_param_function.py | 15 +- .../test_data_converters.py | 2 +- .../interface_dag_elements/test_failures.py | 32 +- .../test_policy_environment.py | 10 +- .../test_specialized_environment.py | 23 +- .../interface_dag_elements/test_templates.py | 8 +- .../interface_dag_elements/test_warnings.py | 84 +- .../mettsim/property_tax/acre_size_cap.yaml | 27 + tests/ttsim/mettsim/property_tax/amount.py | 18 +- .../acre_size_capped_via_evaluation_year.yaml | 35 + tests/ttsim/mettsim_tests/test_mettsim.py | 8 +- tests/ttsim/test_end_to_end.py | 87 +- tests/ttsim/test_interface_dag.py | 14 +- tests/ttsim/test_plot_dag.py | 2 +- tests/ttsim/tt_dag_elements/test_rounding.py | 6 +- .../tt_dag_elements/test_vectorization.py | 2 +- 36 files changed, 1491 insertions(+), 1154 deletions(-) create mode 100644 tests/ttsim/mettsim/property_tax/acre_size_cap.yaml create mode 100644 tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml diff --git a/interface-prototype.ipynb b/interface-prototype.ipynb index a6322da124..45699302ec 100644 --- a/interface-prototype.ipynb +++ b/interface-prototype.ipynb @@ -272,7 +272,7 @@ "source": [ "result = main(\n", " inputs={\n", - " \"date_str\": \"2025-01-01\",\n", + " \"policy_date_str\": \"2025-01-01\",\n", " \"input_data\": {\n", " \"df_and_mapper\": {\n", " \"df\": DATA,\n", @@ -336,7 +336,7 @@ "source": [ "policy_environment = main(\n", " inputs={\n", - " \"date_str\": \"2025-01-01\",\n", + " \"policy_date_str\": \"2025-01-01\",\n", " \"orig_policy_objects\": {\n", " \"root\": GETTSIM_ROOT\n", " }, # don't worry about this, will be gone in the future\n", @@ -413,7 +413,7 @@ "source": [ "result = main(\n", " inputs={\n", - " \"date_str\": \"2025-01-01\",\n", + " \"policy_date_str\": \"2025-01-01\",\n", " \"input_data\": {\n", " \"df_and_mapper\": {\n", " \"df\": DATA,\n", diff --git a/pixi.lock b/pixi.lock index 6f5a8b5c19..bada652ec8 100644 --- a/pixi.lock +++ b/pixi.lock @@ -39,10 +39,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py312h8285ef7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -80,7 +80,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -91,21 +90,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -113,7 +113,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -133,7 +133,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -154,7 +154,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h33ff503_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda @@ -169,7 +169,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -192,7 +191,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda @@ -201,6 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -262,15 +262,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -306,10 +306,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py312h2ac44ba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -347,7 +347,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -358,27 +357,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -395,7 +395,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -411,7 +411,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312hda18a35_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda @@ -426,7 +426,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -450,7 +449,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda @@ -459,6 +458,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -503,15 +503,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl @@ -547,10 +547,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -588,7 +588,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -599,27 +598,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -637,7 +637,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -653,7 +653,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -668,7 +668,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -692,7 +691,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -701,6 +700,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -745,15 +745,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl @@ -788,10 +788,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -825,7 +825,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -837,25 +836,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -863,7 +863,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -872,7 +872,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -889,7 +889,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda @@ -903,7 +903,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -925,7 +924,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -935,6 +934,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -969,10 +969,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -994,15 +994,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -1050,10 +1050,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -1091,7 +1091,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -1102,21 +1101,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -1124,7 +1124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -1144,7 +1144,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -1171,7 +1171,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda @@ -1187,7 +1187,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1211,7 +1210,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda @@ -1220,6 +1219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -1283,15 +1283,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -1328,10 +1328,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py313h03db916_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -1369,7 +1369,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -1380,27 +1379,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -1418,7 +1418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -1441,7 +1441,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hdb1a8e5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda @@ -1457,7 +1457,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1482,7 +1481,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda @@ -1491,6 +1490,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -1537,15 +1537,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl @@ -1582,10 +1582,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -1623,7 +1623,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -1634,27 +1633,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -1672,7 +1672,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -1695,7 +1695,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -1711,7 +1711,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1736,7 +1735,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -1745,6 +1744,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -1791,15 +1791,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl @@ -1835,10 +1835,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -1872,7 +1872,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -1884,25 +1883,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -1910,7 +1910,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -1919,7 +1919,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -1943,7 +1943,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda @@ -1958,7 +1958,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1981,7 +1980,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -1991,6 +1990,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -2027,10 +2027,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2052,15 +2052,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -2107,10 +2107,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py312h8285ef7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -2148,7 +2148,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -2159,21 +2158,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -2181,7 +2181,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -2201,7 +2201,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -2222,7 +2222,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h33ff503_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda @@ -2237,7 +2237,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2260,7 +2259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda @@ -2269,6 +2268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -2330,17 +2330,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2379,10 +2379,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py312h2ac44ba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -2420,7 +2420,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -2431,27 +2430,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -2468,7 +2468,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -2484,7 +2484,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312hda18a35_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda @@ -2499,7 +2499,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2523,7 +2522,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda @@ -2532,6 +2531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -2576,17 +2576,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2625,10 +2625,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -2666,7 +2666,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -2677,27 +2676,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -2715,7 +2715,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -2731,7 +2731,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -2746,7 +2746,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2770,7 +2769,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -2779,6 +2778,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -2823,17 +2823,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -2871,10 +2871,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -2908,7 +2908,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -2920,25 +2919,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -2946,7 +2946,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -2955,7 +2955,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -2972,7 +2972,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda @@ -2986,7 +2986,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3008,7 +3007,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -3018,6 +3017,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -3052,10 +3052,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3077,17 +3077,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl @@ -3137,10 +3137,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py311hc665b79_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -3178,7 +3178,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -3189,21 +3188,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -3211,7 +3211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -3231,7 +3231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -3252,7 +3252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h519dc76_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h2e04523_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py311h50c5138_1.conda @@ -3267,7 +3267,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3290,7 +3289,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py311h7deb3e3_0.conda @@ -3299,6 +3298,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -3360,15 +3360,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/67/4f/d22f79a3c56dde563c4fbc12eebf9224a1b87af5e4ec61beb11f9b3eb499/orjson-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -3404,10 +3404,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py311ha3cf9ac_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py311hc651eee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -3445,7 +3445,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -3456,27 +3455,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py311h6eed73b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -3493,7 +3493,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -3509,7 +3509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h9224382_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h09fcace_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py311h03bb54d_1.conda @@ -3524,7 +3524,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3548,7 +3547,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311ha3cf9ac_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py311hb21797c_0.conda @@ -3557,6 +3556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -3601,15 +3601,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py311h4d7f069_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl @@ -3645,10 +3645,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py311ha59bd64_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -3686,7 +3686,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -3697,27 +3696,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py311h267d04e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -3734,7 +3734,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -3750,7 +3750,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h4379d9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h0856f98_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py311hfb527b5_1.conda @@ -3765,7 +3765,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3789,7 +3788,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py311h01f2145_0.conda @@ -3798,6 +3797,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -3842,15 +3842,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311h917b07b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl @@ -3885,10 +3885,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py311h3f79411_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.13-py311hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py311h5dfdfe8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -3922,7 +3922,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -3934,25 +3933,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py311h1ea47a8_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -3960,7 +3960,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -3968,7 +3968,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -3985,7 +3985,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311haedcf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311h80b3fa1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py311ha68e1ae_1.conda @@ -3999,7 +3999,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4021,7 +4020,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py311hefeebc8_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py311hda3d55a_0.conda @@ -4031,6 +4030,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py311hf51aa87_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -4065,10 +4065,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4090,15 +4090,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py311he736701_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/94/3e/afd5e284db9387023803553061ea05c785c36fe7845e4fe25912424b343f/orjson-3.11.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -4145,10 +4145,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py312h8285ef7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -4186,7 +4186,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -4197,21 +4196,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -4219,7 +4219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -4239,7 +4239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -4260,7 +4260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h33ff503_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h710cb58_1.conda @@ -4275,7 +4275,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4298,7 +4297,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda @@ -4307,6 +4306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -4368,15 +4368,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -4412,10 +4412,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py312h2ac44ba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -4453,7 +4453,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -4464,27 +4463,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -4501,7 +4501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -4517,7 +4517,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312hda18a35_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h732d5f6_1.conda @@ -4532,7 +4532,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4556,7 +4555,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py312h679dbab_0.conda @@ -4565,6 +4564,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -4609,15 +4609,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl @@ -4653,10 +4653,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py312he360a15_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -4694,7 +4694,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -4705,27 +4704,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -4742,7 +4742,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -4758,7 +4758,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h2f38b44_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312hf6e0af7_1.conda @@ -4773,7 +4773,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4797,7 +4796,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py312hf4875e0_0.conda @@ -4806,6 +4805,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -4850,15 +4850,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl @@ -4893,10 +4893,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.11-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py312ha1a9051_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -4930,7 +4930,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -4942,25 +4941,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -4968,7 +4968,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -4976,7 +4976,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -4993,7 +4993,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312ha72d056_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312he70551f_1.conda @@ -5007,7 +5007,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5029,7 +5028,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py312h829343e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py312h275cf98_0.conda @@ -5039,6 +5038,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -5073,10 +5073,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5098,15 +5098,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/82/ba/ef25e3e223f452a01eac6a5b38d05c152d037508dcbf87ad2858cbb7d82e/orjson-3.11.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -5153,10 +5153,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -5194,7 +5194,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -5205,21 +5204,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -5227,7 +5227,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -5247,7 +5247,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -5267,7 +5267,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda @@ -5282,7 +5282,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5305,7 +5304,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda @@ -5314,6 +5313,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -5375,15 +5375,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -5419,10 +5419,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.9.2-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py313h03db916_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -5460,7 +5460,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -5471,27 +5470,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda @@ -5509,7 +5509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -5525,7 +5525,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hdb1a8e5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hde07947_1.conda @@ -5540,7 +5540,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5564,7 +5563,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.0.0-py313h2d45800_0.conda @@ -5573,6 +5572,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -5617,15 +5617,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl @@ -5661,10 +5661,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -5702,7 +5702,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -5713,27 +5712,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -5751,7 +5751,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -5767,7 +5767,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -5782,7 +5782,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5806,7 +5805,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -5815,6 +5814,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -5859,15 +5859,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl @@ -5902,10 +5902,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -5939,7 +5939,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -5951,25 +5950,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -5977,7 +5977,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -5986,7 +5986,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -6003,7 +6003,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda @@ -6017,7 +6017,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6039,7 +6038,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -6049,6 +6048,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -6083,10 +6083,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -6108,15 +6108,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -6163,10 +6163,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -6204,7 +6204,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -6215,21 +6214,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -6237,7 +6237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -6257,7 +6257,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -6277,7 +6277,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda @@ -6292,7 +6292,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6315,7 +6314,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda @@ -6324,6 +6323,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -6385,7 +6385,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl @@ -6395,23 +6395,23 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl - pypi: https://files.pythonhosted.org/packages/25/48/b54a06168a2190572a312bfe4ce443687773eb61367ced31e064953dd2f7/nvidia_cuda_nvcc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7c/57/4d5f04c4230a009f8c5c04e6f6bb952bde6d70f3e782e659385d9fc29100/nvidia_cudnn_cu12-9.11.0.98-py3-none-manylinux_2_27_x86_64.whl - pypi: https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl - pypi: https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/af/a0/271bd709800f946e92128d9927ab7462559858a25b48f285a617d447bd48/nvidia_nccl_cu12-2.27.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bf/f9/dcb91a671d5643ca132e4c8377982ab5c2cadc3a60957e08e30d678bfb81/nvidia_nvshmem_cu12-3.3.9-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -6458,10 +6458,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.9.2-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -6499,7 +6499,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -6510,21 +6509,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda @@ -6532,7 +6532,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda @@ -6552,7 +6552,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -6572,7 +6572,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313h9c9eb82_1.conda @@ -6587,7 +6587,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6610,7 +6609,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py313h8e95178_0.conda @@ -6619,6 +6618,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -6680,7 +6680,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl @@ -6688,11 +6688,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl @@ -6729,10 +6729,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -6770,7 +6770,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -6781,27 +6780,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -6819,7 +6819,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -6835,7 +6835,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -6850,7 +6850,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6874,7 +6873,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -6883,6 +6882,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -6927,7 +6927,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl @@ -6935,11 +6935,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl @@ -6975,10 +6975,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -7012,7 +7012,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh4bbf305_0.conda @@ -7024,25 +7023,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda @@ -7050,7 +7050,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda @@ -7059,7 +7059,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -7076,7 +7076,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313he57e174_1.conda @@ -7090,7 +7090,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -7112,7 +7111,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -7122,6 +7121,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -7156,10 +7156,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -7181,7 +7181,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl @@ -7189,11 +7189,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl @@ -7237,10 +7237,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda @@ -7278,7 +7278,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.4.0-pyhfa0c392_0.conda @@ -7289,27 +7288,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda @@ -7327,7 +7327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -7343,7 +7343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.9.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313h90caf49_1.conda @@ -7358,7 +7358,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -7382,7 +7381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda @@ -7391,6 +7390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -7435,7 +7435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - - pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 + - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl @@ -7444,11 +7444,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/a9/8b/2d16e4eb53bb49adf4eecb8190b2281f8b1b8c6fe78ca89c157ec65fa77e/pdbp-1.7.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl @@ -7571,7 +7571,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/argon2-cffi?source=compressed-mapping + - pkg:pypi/argon2-cffi?source=hash-mapping size: 18715 timestamp: 1749017288144 - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda @@ -7886,7 +7886,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=hash-mapping + - pkg:pypi/babel?source=compressed-mapping size: 6938256 timestamp: 1738490268466 - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda @@ -7957,7 +7957,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping + - pkg:pypi/brotli?source=hash-mapping size: 351721 timestamp: 1749230265727 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py313h46c70d0_3.conda @@ -8056,7 +8056,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping + - pkg:pypi/brotli?source=hash-mapping size: 339365 timestamp: 1749230606596 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py313h928ef07_3.conda @@ -8090,7 +8090,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/brotli?source=compressed-mapping + - pkg:pypi/brotli?source=hash-mapping size: 321757 timestamp: 1749231264056 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda @@ -8645,7 +8645,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping + - pkg:pypi/coverage?source=hash-mapping size: 383439 timestamp: 1751548852393 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.9.2-py312h998013c_0.conda @@ -8759,9 +8759,10 @@ packages: purls: [] size: 47560 timestamp: 1750062514868 -- pypi: git+https://github.com/OpenSourceEconomics/dags.git?branch=main#9cfe47cd42c91c6c7ceeff4797b6aa9e0183df80 +- pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl name: dags - version: 0.4.0 + version: 0.4.1 + sha256: b7ce56829a87cfb7f018884695e6072f151c3885ae78da6cd161cd053db6c2bf requires_dist: - flatten-dict - networkx @@ -8782,183 +8783,195 @@ packages: purls: [] size: 437860 timestamp: 1747855126005 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda - sha256: 2f6d43724f60828fa226a71f519248ecd1dd456f0d4fc5f887936c763ea726e4 - md5: 1c229452e28e2c4607457c7b6c839bc7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py311hc665b79_0.conda + sha256: fc50d7e7930d8cb3c21bcb987b7dc50a8369cba56f33347b2efcaeddbd928eef + md5: 27fd3bb353295538b2c81a26c618ecc8 depends: + - python + - libstdcxx >=14 + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 + - libgcc >=14 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2583752 - timestamp: 1744321388692 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py312h2ec8cdc_0.conda - sha256: 8f0b338687f79ea87324f067bedddd2168f07b8eec234f0fe63b522344c6a919 - md5: 089cf3a3becf0e2f403feaf16e921678 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2730161 + timestamp: 1752827119017 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py312h8285ef7_0.conda + sha256: 3bb8c99e7aa89e5af3a8ebf8c1f9191b766adae767afe5fef0217a6accf93321 + md5: 76fb845cd7dbd34670c5b191ba0dc6fd depends: + - python - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2630748 - timestamp: 1744321406939 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py313h46c70d0_0.conda - sha256: bc2f3c177dcfe90f66df4c15803d6c44fd1f2e163683a70f816851c91a37631b - md5: 8c162409281c1e91b1e659c3a2115d28 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2853150 + timestamp: 1752827111528 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.15-py313h5d5ffb9_0.conda + sha256: d228ad299a09ce64935ad5352dc8122d81fd2040dc3a0ad4c621a72fe749928b + md5: 9befe517ce0a5bc50f747b33de3e7446 depends: + - python - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2620835 - timestamp: 1744321405497 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py311hc356e98_0.conda - sha256: b6f42ebdded9c43c6f953d674a1467ba6396a4c98e77e5b79bc793bbc45ae7ce - md5: 58114700054f024b45fa86243eefdc55 + size: 2860206 + timestamp: 1752827112418 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py311hc651eee_0.conda + sha256: b594e0b6a56346d871ef195199dc8255e24134b647fdb772ed92b33e2d12de37 + md5: ecb0441f08dbcb754fcb2d29cab69343 depends: + - python + - libcxx >=19 - __osx >=10.13 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 2493948 - timestamp: 1744321501497 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py312haafddd8_0.conda - sha256: b1c9f30148045219844f947fe43d4ee19c4cc6ee83e7518b2e83db780d3e97e6 - md5: a3831727ed5b148d096afb80a6009cab + size: 2666414 + timestamp: 1752827117774 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py312h2ac44ba_0.conda + sha256: acccee23170b380ea9532e9c53e51998a45ab17b12d095ef92e71e96781a4ad2 + md5: e8572408edcf8b4d9b1ed13d36f440fa depends: + - python - __osx >=10.13 - - libcxx >=18 - - python >=3.12,<3.13.0a0 + - libcxx >=19 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2557869 - timestamp: 1744321625095 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.14-py313h14b76d3_0.conda - sha256: 939eede351b9010f239289b4d703277f66b105a54d1222d6fe65f1da347bbecd - md5: a3418707dd82069f9c9758c297a2f363 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2757593 + timestamp: 1752827110994 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.15-py313h03db916_0.conda + sha256: ebd4192b8a3ff8f610b857e72540d1a30663917a640003a3be816f0eb087fa66 + md5: 62c19e12eca558c8758d7368df19dee8 depends: + - python + - libcxx >=19 - __osx >=10.13 - - libcxx >=18 - - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2578110 - timestamp: 1744321484203 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py311h155a34a_0.conda - sha256: 509d756a8809179e51868a65882e28e9932ef80d1515536e76f158c6cddd1f52 - md5: eba659c4735d39271b8117b2349237a8 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2769164 + timestamp: 1752827121427 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py311ha59bd64_0.conda + sha256: e84a641bbcb54a67f508f9e9fe61a69e886f6cfa9ef02fef1242ba029113fa76 + md5: cdcdf4c377c455ae845a9672fdcd80a8 depends: + - python + - python 3.11.* *_cpython + - libcxx >=19 - __osx >=11.0 - - libcxx >=18 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2490964 - timestamp: 1744321543472 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py312hd8f9ff3_0.conda - sha256: c833d92953a4c747f2606cefaebdbeaeec7c8d374bb7652dd0cc241cb120fdbc - md5: f1be818f2cee62e6edc12d5aaae13f57 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2665127 + timestamp: 1752827160168 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py312he360a15_0.conda + sha256: 290312cae743b8f0942f6eb375f218d29ab97b679f9476f8d44ca42c1cf5a23c + md5: 3fa1cffddc99bf720e15993a1a2cba48 depends: + - python - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python 3.12.* *_cpython + - libcxx >=19 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2581221 - timestamp: 1744321582400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.14-py313h928ef07_0.conda - sha256: e1fef24f7d220dd77522f06598d2c8c5b6ca68123f06515436c57a8777871481 - md5: 6521542d1c40d124657586810f220571 + - pkg:pypi/debugpy?source=compressed-mapping + size: 2749019 + timestamp: 1752827125812 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda + sha256: da57150d9f35eb9a82396577e32a0aaf4bd514d17ca1e852cb08157110d91fa5 + md5: ba1e48e8c0f20d5eff097583cd4a5fb4 depends: + - python + - libcxx >=19 + - python 3.13.* *_cp313 - __osx >=11.0 - - libcxx >=18 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 2534826 - timestamp: 1744321649930 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py311hda3d55a_0.conda - sha256: 71127b53485a633f708f6645d8d023aef2efa325ca063466b21446b778d49b94 - md5: 253acd78a14d333ea1c6de5b16b5a0ae + - pkg:pypi/debugpy?source=compressed-mapping + size: 2755984 + timestamp: 1752827124425 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py311h5dfdfe8_0.conda + sha256: 0f6e582014a2dfb6e1a32d075b57d4392f7575784b717710ce2319d536cab9d5 + md5: 8937917a1e7cfc2451418260f082c582 depends: - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=hash-mapping - size: 3560294 - timestamp: 1744321915699 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py312h275cf98_0.conda - sha256: 02ceea9c12eaaf29c7c40142e4789b77c5c98aa477bdfca1db3ae97440b9e2fe - md5: 331737db69ae5431acb6ef3e198ec623 + - pkg:pypi/debugpy?source=compressed-mapping + size: 3932954 + timestamp: 1752827138613 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py312ha1a9051_0.conda + sha256: f01cfa0ca5452bf52d7dc6adefd28d2d911df5345fa4531bd911bca03d251c43 + md5: a83150a83e2148ce523df7822a9ba3e3 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3561750 - timestamp: 1744321803729 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.14-py313h5813708_0.conda - sha256: dafd02b080118f11c7aea830d8e1c263134b90cf7e5518440fab46992130c100 - md5: d5d1eaa5f605092cc407ed0bfb5e16bf + size: 3990738 + timestamp: 1752827139099 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.15-py313h927ade5_0.conda + sha256: f56f3e685289d2336f0aec51fdc28bafc9e725b1b7a192077228711f278a580f + md5: 6531086ce8f34730d4fb9e5672353c8e depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 license: MIT license_family: MIT purls: - pkg:pypi/debugpy?source=hash-mapping - size: 3589078 - timestamp: 1744321801176 + size: 4000476 + timestamp: 1752827141526 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 md5: 9ce473d1d1be1cc3810856a48b3fab32 @@ -8981,17 +8994,17 @@ packages: - pkg:pypi/defusedxml?source=hash-mapping size: 24062 timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - sha256: 0e160c21776bd881b79ce70053e59736f51036784fa43a50da10a04f0c1b9c45 - md5: 8d88f4a2242e6b96f9ecff9a6a05b2f1 +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda + sha256: 6d977f0b2fc24fee21a9554389ab83070db341af6d6f09285360b2e09ef8b26e + md5: 003b8ba0a94e2f1e117d0bd46aebc901 depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/distlib?source=hash-mapping - size: 274151 - timestamp: 1733238487461 + - pkg:pypi/distlib?source=compressed-mapping + size: 275642 + timestamp: 1752823081585 - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 md5: 24c1ca34138ee57de72a943237cde4cc @@ -9349,9 +9362,10 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev168+g8f823a87.d20250717 - sha256: d083810cce0ec87d8e54113fdae20ac7dbaed7ae9eb2e6646c6c3ceef9edb81d + version: 0.7.1.dev184+gd0fe6233c.d20250721 + sha256: e41722d0b5a33a03690f6ef1575e822225b42690f6110d3ea72ede8f8939d5a8 requires_dist: + - dags>=0.4.1 - ipywidgets - networkx>=3.5 - numpy @@ -9924,7 +9938,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/identify?source=compressed-mapping + - pkg:pypi/identify?source=hash-mapping size: 78926 timestamp: 1748049754416 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -9962,20 +9976,6 @@ packages: - pkg:pypi/importlib-metadata?source=hash-mapping size: 34641 timestamp: 1747934053147 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 - md5: c85c76dc67d75619a92f51dfbce06992 - depends: - - python >=3.9 - - zipp >=3.1.0 - constrains: - - importlib-resources >=6.5.2,<6.5.3.0a0 - license: Apache-2.0 - license_family: APACHE - purls: - - pkg:pypi/importlib-resources?source=hash-mapping - size: 33781 - timestamp: 1736252433366 - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca md5: 6837f3eff7dcea42ecd714ce1ac2b108 @@ -10438,23 +10438,21 @@ packages: - pkg:pypi/jsonpointer?source=hash-mapping size: 42805 timestamp: 1725303293802 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.24.0-pyhd8ed1ab_0.conda - sha256: 812134fabb49493a50f7f443dc0ffafd0f63766f403a0bd8e71119763e57456a - md5: 59220749abcd119d645e6879983497a1 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.0-pyhe01879c_0.conda + sha256: 87ba7cf3a65c8e8d1005368b9aee3f49e295115381b7a0b180e56f7b68b5975f + md5: c6e3fd94e058dba67d917f38a11b50ab depends: - attrs >=22.2.0 - - importlib_resources >=1.4.0 - - jsonschema-specifications >=2023.03.6 - - pkgutil-resolve-name >=1.3.10 + - jsonschema-specifications >=2023.3.6 - python >=3.9 - referencing >=0.28.4 - rpds-py >=0.7.1 + - python license: MIT - license_family: MIT purls: - - pkg:pypi/jsonschema?source=hash-mapping - size: 75124 - timestamp: 1748294389597 + - pkg:pypi/jsonschema?source=compressed-mapping + size: 81493 + timestamp: 1752925388185 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda sha256: 66fbad7480f163509deec8bd028cd3ea68e58022982c838683586829f63f3efa md5: 41ff526b1083fde51fbdc93f29282e0e @@ -10468,38 +10466,37 @@ packages: - pkg:pypi/jsonschema-specifications?source=hash-mapping size: 19168 timestamp: 1745424244298 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.24.0-hd8ed1ab_0.conda - sha256: 970a1efffe29474d6bb3e4d63bc04105c5611d1c7e2cd7e2d43d1ba468f33c20 - md5: b4eaebf6fac318db166238796d2a9702 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.0-he01879c_0.conda + sha256: 72604d07afaddf2156e61d128256d686aee4a7bdc06e235d7be352955de7527a + md5: f4c7afaf838ab5bb1c4e73eb3095fb26 depends: + - jsonschema >=4.25.0,<4.25.1.0a0 - fqdn - idna - isoduration - jsonpointer >1.13 - - jsonschema >=4.24.0,<4.24.1.0a0 - rfc3339-validator - rfc3986-validator >0.1.0 + - rfc3987-syntax >=1.1.0 - uri-template - webcolors >=24.6.0 license: MIT - license_family: MIT purls: [] - size: 7717 - timestamp: 1748294391013 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhe01879c_2.conda - sha256: f2ca86b121bcfeaf0241a927824459ba8712e64806b98dd262eb2b1a7c4e82a6 - md5: 7ed6505c703f3c4e1a58864bf84505e2 + size: 4744 + timestamp: 1752925388185 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.6-pyhe01879c_0.conda + sha256: 6f2d6c5983e013af68e7e1d7082cc46b11f55e28147bd0a72a44488972ed90a3 + md5: 7129ed52335cc7164baf4d6508a3f233 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - python >=3.9 - python license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/jupyter-lsp?source=hash-mapping - size: 57659 - timestamp: 1748550130303 + - pkg:pypi/jupyter-lsp?source=compressed-mapping + size: 58416 + timestamp: 1752935193718 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a md5: 4ebae00eae9705b0c3d6d1018a81d047 @@ -10528,7 +10525,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=compressed-mapping + - pkg:pypi/jupyter-core?source=hash-mapping size: 59562 timestamp: 1748333186063 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh5737063_0.conda @@ -10544,7 +10541,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-core?source=compressed-mapping + - pkg:pypi/jupyter-core?source=hash-mapping size: 59972 timestamp: 1748333368923 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda @@ -10564,7 +10561,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyter-events?source=hash-mapping + - pkg:pypi/jupyter-events?source=compressed-mapping size: 23647 timestamp: 1738765986736 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.16.0-pyhe01879c_0.conda @@ -10609,9 +10606,9 @@ packages: - pkg:pypi/jupyter-server-terminals?source=hash-mapping size: 19711 timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.4-pyhd8ed1ab_0.conda - sha256: a6efcdbe973e12bc8bd61aa26af77f733364975000c8fdaa0d6374338018e0db - md5: dbd991d0080c48dae5113a27ab6d0d70 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.5-pyhd8ed1ab_0.conda + sha256: 2013c2dd13bc773167e1ad11ae885b550c0297d030e2107bdc303243ff05d3f2 + md5: ad6bbe770780dcf9cf55d724c5a213fd depends: - async-lru >=1.0.0 - httpx >=0.25.0 @@ -10632,9 +10629,9 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jupyterlab?source=compressed-mapping - size: 8316249 - timestamp: 1751119910935 + - pkg:pypi/jupyterlab?source=hash-mapping + size: 8074534 + timestamp: 1753022530771 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -10758,6 +10755,17 @@ packages: purls: [] size: 712034 timestamp: 1719463874284 +- conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.2.2-pyhd8ed1ab_1.conda + sha256: 637a9c32e15a4333f1f9c91e0a506dbab4a6dab7ee83e126951159c916c81c99 + md5: 3a8063b25e603999188ed4bbf3485404 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/lark?source=hash-mapping + size: 92093 + timestamp: 1734709450256 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda sha256: 1a620f27d79217c1295049ba214c2f80372062fd251b569e9873d4a953d27554 md5: 0be7c6e070c19105f966d3758448d018 @@ -10960,26 +10968,26 @@ packages: purls: [] size: 4523621 timestamp: 1749905341688 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-hf95d169_0.conda - sha256: 2f0a3df7d6b8898d6d387ff110d7fb98aba1f0e9c3a5e6527a54bb8a3441a0ec - md5: 8f8448b9b4cd3c698b822e0038d65940 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.8-h3d58e20_1.conda + sha256: 9643d6c5a94499cddb5ae1bccc4f78aef8cfd77bcf6b37ad325bc7232a8a870f + md5: d2db320b940047515f7a27f870984fe7 depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 561704 - timestamp: 1752049799365 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-ha82da77_0.conda - sha256: 3d7fd77e37794c28e99812da03de645b8e1ddefa876d9400c4d552b9eb8dd880 - md5: 149bb93ede144e7c86bf5f88378ae5f6 + size: 564830 + timestamp: 1752814841086 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.8-hf598326_1.conda + sha256: 119b3ac75cb1ea29981e5053c2cb10d5f0b06fcc81b486cb7281f160daf673a1 + md5: a69ef3239d3268ef8602c7a7823fd982 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 567309 - timestamp: 1752050056857 + size: 568267 + timestamp: 1752814881595 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -11060,57 +11068,57 @@ packages: purls: [] size: 107691 timestamp: 1738479560845 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505 - md5: db0bfbe7dd197b68ad5f30333bae6ce0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda + sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2 + md5: 4211416ecba1866fab0c6470986c22d6 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 constrains: - - expat 2.7.0.* + - expat 2.7.1.* license: MIT license_family: MIT purls: [] - size: 74427 - timestamp: 1743431794976 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - sha256: 976f2e23ad2bb2b8e92c99bfa2ead3ad557b17a129b170f7e2dfcf233193dd7e - md5: 026d0a1056ba2a3dbbea6d4b08188676 + size: 74811 + timestamp: 1752719572741 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda + sha256: 689862313571b62ee77ee01729dc093f2bf25a2f99415fcfe51d3a6cd31cce7b + md5: 9fdeae0b7edda62e989557d645769515 depends: - __osx >=10.13 constrains: - - expat 2.7.0.* + - expat 2.7.1.* license: MIT license_family: MIT purls: [] - size: 71894 - timestamp: 1743431912423 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - sha256: ee550e44765a7bbcb2a0216c063dcd53ac914a7be5386dd0554bd06e6be61840 - md5: 6934bbb74380e045741eb8637641a65b + size: 72450 + timestamp: 1752719744781 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda + sha256: 8fbb17a56f51e7113ed511c5787e0dec0d4b10ef9df921c4fd1cccca0458f648 + md5: b1ca5f21335782f71a8bd69bdc093f67 depends: - __osx >=11.0 constrains: - - expat 2.7.0.* + - expat 2.7.1.* license: MIT license_family: MIT purls: [] - size: 65714 - timestamp: 1743431789879 -- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - sha256: 1a227c094a4e06bd54e8c2f3ec40c17ff99dcf3037d812294f842210aa66dbeb - md5: b6f5352fdb525662f4169a0431d2dd7a + size: 65971 + timestamp: 1752719657566 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda + sha256: 8432ca842bdf8073ccecf016ccc9140c41c7114dc4ec77ca754551c01f780845 + md5: 3608ffde260281fa641e70d6e34b1b96 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 constrains: - - expat 2.7.0.* + - expat 2.7.1.* license: MIT license_family: MIT purls: [] - size: 140896 - timestamp: 1743432122520 + size: 141322 + timestamp: 1752719767870 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab md5: ede4673863426c0883c0063d853bbd85 @@ -11527,20 +11535,20 @@ packages: purls: [] size: 535456 timestamp: 1750808243424 -- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - sha256: 850e255997f538d5fb6ed651321141155a33bb781d43d326fc4ff62114dd2842 - md5: b87a0ac5ab6495d8225db5dc72dd21cd +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_h88281d1_1002.conda + sha256: dbc7d0536b4e1fb2361ca90a80b52cde1c85e0b159fa001f795e7d40e99438b0 + md5: 46621eae093570430d56aa6b4e298500 depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca - - libxml2 >=2.13.4,<2.14.0a0 + - libxml2 >=2.13.8,<2.14.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD purls: [] - size: 2390021 - timestamp: 1731375651179 + size: 2393251 + timestamp: 1752674125463 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 md5: e796ff8ddc598affdf7c173d6145f087 @@ -11995,9 +12003,9 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda - sha256: 62040da9b55f409cd43697eb7391381ffede90b2ea53634a94876c6c867dcd73 - md5: be96b9fdd7b579159df77ece9bb80e48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + sha256: 10891c917031d27c546d397f22e09c449c6c10782f2c0a069f361a502d286f3c + md5: 4fe4c3b7ce84cda6508b6d78f0ce72e3 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -12005,39 +12013,39 @@ packages: - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 935828 - timestamp: 1752072043 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-h39a8b3b_2.conda - sha256: e1dd0bd9be821798d824a0ed8650a52faf3ecdc857412d0d8f7f6dfe279fd240 - md5: 065c33b28348792d77ff0d5571541d5e + size: 935794 + timestamp: 1752825101149 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + sha256: a87f01c56d9a4b0418e5aa2877399ab8992dc56c0457d5d6ce6369f8eef06c8d + md5: 41e1a78df514ac69dd9d22a804d51310 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 980394 - timestamp: 1752072257198 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-hf8de324_2.conda - sha256: 02c292e5fb95f8ce408a3c98a846787095639217bd199a264b149dfe08a2ccb3 - md5: e0fe6df79600e1db7405ccf29c61d784 + size: 980097 + timestamp: 1752825255099 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + sha256: d5bfc49bf5f68318830dfc359739386e32413a873072fc78994ced6af3fd08df + md5: 4366ba8a8b7a283aaaca877597be65df depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense purls: [] - size: 899248 - timestamp: 1752072259470 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_2.conda - sha256: f12cdfe29c248d6a1c7d11b6fe1a3e0d0563206deb422ddb1b84b909818168d4 - md5: 58f810279ac6caec2d996a56236c3254 + size: 899228 + timestamp: 1752825238869 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + sha256: 126208598efd31adf60ee7e66db848a5a081143fb6cd470640712d15f95f123b + md5: c93ed8c395dc41956fe29c5470dea103 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Unlicense purls: [] - size: 1288312 - timestamp: 1752072137328 + size: 1287892 + timestamp: 1752825177322 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 md5: 6d11a5edae89fe413c0569f16d308f5a @@ -12147,6 +12155,7 @@ packages: constrains: - libwebp 1.6.0 license: BSD-3-Clause + license_family: BSD purls: [] size: 429011 timestamp: 1752159441324 @@ -12158,6 +12167,7 @@ packages: constrains: - libwebp 1.6.0 license: BSD-3-Clause + license_family: BSD purls: [] size: 365086 timestamp: 1752159528504 @@ -12169,6 +12179,7 @@ packages: constrains: - libwebp 1.6.0 license: BSD-3-Clause + license_family: BSD purls: [] size: 294974 timestamp: 1752159906788 @@ -12182,6 +12193,7 @@ packages: constrains: - libwebp 1.6.0 license: BSD-3-Clause + license_family: BSD purls: [] size: 279176 timestamp: 1752159543911 @@ -12367,6 +12379,7 @@ packages: constrains: - openmp 20.1.8|20.1.8.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] size: 308578 timestamp: 1752565939065 @@ -12378,6 +12391,7 @@ packages: constrains: - openmp 20.1.8|20.1.8.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] size: 283218 timestamp: 1752565794800 @@ -12779,10 +12793,10 @@ packages: - pkg:pypi/myst-parser?source=hash-mapping size: 73074 timestamp: 1739381945342 -- pypi: https://files.pythonhosted.org/packages/a7/c1/1e1109cca762087fd101064c00f576a5a8fa6889d07e70f1efe20205af46/narwhals-1.47.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl name: narwhals - version: 1.47.0 - sha256: 8b4ead8866046829de24058d1079e776806bd4aab7d38f55f17c58ce4c0994d2 + version: 1.47.1 + sha256: b9f2b2557aba054231361a00f6fcabc5017e338575e810e82155eb34e38ace93 requires_dist: - cudf>=24.10.0 ; extra == 'cudf' - dask[dataframe]>=2024.8 ; extra == 'dask' @@ -12997,243 +13011,254 @@ packages: - pkg:pypi/notebook-shim?source=hash-mapping size: 16817 timestamp: 1733408419340 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h519dc76_0.conda - sha256: 3d58e99d5d15eb31d41122728adbe7945867f95373c756367b536a41b77ec377 - md5: 3c92d1c6a7938b0f92997bd0485561ef +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py311h2e04523_1.conda + sha256: 46ffc32b9b8816c8e289405cc9db73a5c734d025bf87b58b0b95a5f436a359b8 + md5: 062302d0490f0f8368be762c188979c9 depends: + - python + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 + - libstdcxx >=14 + - libgcc >=14 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 + - libblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 9095934 - timestamp: 1751342616995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda - sha256: 731325aea31b3825c8c1b371f4314c096f7981de1c2cc276a7931f889b5bb6d8 - md5: 7e086a30150af2536a1059885368dcf0 + - pkg:pypi/numpy?source=compressed-mapping + size: 9411452 + timestamp: 1752612954687 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h33ff503_1.conda + sha256: 424d6e86bed2ccf3bf70bdb142da96cca2154f4523cc4fdc5fa972aeaabb353a + md5: c459ad05f041827f8f479e88dfc29303 depends: + - python + - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - liblapack >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8364184 - timestamp: 1751342617648 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313h17eae1a_0.conda - sha256: 96b2ad622ac6521bb58586e9e671e49efe84988bc34a14cbd113b98c67728d5d - md5: 3a155f4d1e110a7330c17ccdce55d315 + size: 8782829 + timestamp: 1752612970718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda + sha256: 634de365f5b2407defc11d3ffb4089316c8ec8d8343e83004a43469dfc7cd761 + md5: 392b48cb8239fee6d03c6c38a74b0cf4 depends: + - python - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.13,<3.14.0a0 + - libstdcxx >=14 + - libgcc >=14 - python_abi 3.13.* *_cp313 + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8553831 - timestamp: 1751342634355 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h9224382_0.conda - sha256: 633f226ec0d0c8c5d5acbbe9b9bd4c731e4965f873c49d65710c59b6cac2cb05 - md5: fff03595ad69c0bd55eca4f38ad92d74 + size: 8888681 + timestamp: 1752612967474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py311h09fcace_1.conda + sha256: 4240a47270235afb1df4a0d3819d11ca3589710875be705c7eec4366e87e9ffe + md5: c0b665f559aee4ec02c3dd3372df102b depends: + - python + - libcxx >=19 - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 + - libblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 8205561 - timestamp: 1751342590138 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312h3b44349_0.conda - sha256: b06383b035b13ad7edaa307c56591604af4bc65c3c8ef8654534b376a82b7bd0 - md5: 81571392e3badcb8df4d02f143c59326 + size: 8543539 + timestamp: 1752612961464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py312hda18a35_1.conda + sha256: 2b66a74b9fa179d185653e3fae2e08746b5a010f7e03e2ce2d2e100505dcf6e8 + md5: c8053d81eb154da6c1dbad3e07dd28a9 depends: + - python - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 + - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 + - libblas >=3.9.0,<4.0a0 - python_abi 3.12.* *_cp312 + - libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7644002 - timestamp: 1751342736297 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hc518a0f_0.conda - sha256: a3a4c28b173227f32d99776212798b822deeef3907f87badc76b74931b27ed72 - md5: 1bd9317ab52825bc8fa33a32ccc17935 + size: 7942789 + timestamp: 1752612959862 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.1-py313hdb1a8e5_1.conda + sha256: 03580b73f8a6e2846dcce8751f609e20a007164ac40ab8a588ec450103a1f85e + md5: fcf306b390eb68fbee1943d9979e51aa depends: + - python - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 + - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7602309 - timestamp: 1751342608687 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h4379d9d_0.conda - sha256: 6b707cbf94f6b7f91b819763650f82225db5846c3b3afefcc0712ed2f3a0f565 - md5: 2c407c787f5811cd4964901c55379a42 + size: 8028968 + timestamp: 1752612953955 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py311h0856f98_1.conda + sha256: 651f24738e8981c27ab1c1238ac9afed077a1c566a39cc665d39b25a44ec58ae + md5: 644dc6c9930311d97f16e05af3823679 depends: + - python + - libcxx >=19 - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 + - python 3.11.* *_cpython - liblapack >=3.9.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - libblas >=3.9.0,<4.0a0 - python_abi 3.11.* *_cp311 + - libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 7130355 - timestamp: 1751342669583 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h113b91d_0.conda - sha256: b9c79d31c214964614e6c70606ff99c7993a1eb1b8743cba484b268a386a5c46 - md5: 84048f61fe33762c214055fb2df161f0 + - pkg:pypi/numpy?source=compressed-mapping + size: 7272797 + timestamp: 1752612966502 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py312h2f38b44_1.conda + sha256: 3e368987983b19ba9160a2ab8a6cb9f24887a582cf1415a0302248cbc130e9ec + md5: 0258aaaff6a328732162de0dbe069a67 depends: + - python - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 + - libcxx >=19 + - python 3.12.* *_cpython - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libcblas >=3.9.0,<4.0a0 - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6504304 - timestamp: 1751342649896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda - sha256: 35346fa9da0a6a8776d4235469c1513b116d2ba3844802da00d5e821bb3e9828 - md5: 3ed1eeb92906e8653c7346854c32dc6e + - pkg:pypi/numpy?source=compressed-mapping + size: 6651591 + timestamp: 1752612968284 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda + sha256: 0df21bfeb49a32661d36a71981981df3d7f20c790d4a6f1edaca471e1fe1d8c2 + md5: 3accf501d1e3b9323bc01d6172b25a02 depends: + - python + - libcxx >=19 - __osx >=11.0 + - python 3.13.* *_cp313 + - python_abi 3.13.* *_cp313 + - liblapack >=3.9.0,<4.0a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 - - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 6567388 - timestamp: 1751342678109 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311haedcf98_0.conda - sha256: 9a2122c68481b2db6096f1eddc0226f49e3e007f488d4db8cfd8be54e35efbd3 - md5: b770ef2db0735a782e703637accad674 + size: 6747127 + timestamp: 1752612977617 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py311h80b3fa1_1.conda + sha256: 4ca9ea7e6dd157052ce70989d20cbae2c5731f53e0df7e25fb7fbae4b31ead6e + md5: ca716c45534d57afe0e0bcac95bba78b depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.11,<3.12.0a0 - - python_abi 3.11.* *_cp311 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - python_abi 3.11.* *_cp311 + - liblapack >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7731591 - timestamp: 1751342842248 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312h12c3145_0.conda - sha256: 2b0081eedda950026080f5e93fba915f73e75cf0c1c8e483a08cde82b3cf0a27 - md5: f11fc3fd4a1d4615cc84e50046c661ed + size: 8014292 + timestamp: 1752612979801 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py312ha72d056_1.conda + sha256: 7faeb1a6be68ffd5ca2310219c887676690a6160cf6fdc3a42d8df43b637134f + md5: 3d74c8accc51ffc69525018bf08e20a8 depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 + - python_abi 3.12.* *_cp312 + - liblapack >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7070261 - timestamp: 1751342914306 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313ha14762d_0.conda - sha256: 4a07411ed54fda72f2bc800130f1f0d520591aa78eba5c5f39d092810a6e908e - md5: 7d719836eecd25d2cf2bfb44c3c1be2c + size: 7369409 + timestamp: 1752613015162 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.1-py313hce7ae62_1.conda + sha256: 7bf5197349eb58e5b2f65301ba182095b3b9ff143b1d230ad75ae7a2bede170b + md5: 9f8565111116c41c8e9b702ae9e7cfe3 depends: - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 + - liblapack >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7302895 - timestamp: 1751342919937 + size: 7457447 + timestamp: 1752612977276 - conda: https://conda.anaconda.org/conda-forge/noarch/numpy_groupies-0.11.3-pyhd8ed1ab_0.conda sha256: 94c148b8d4687c839a37c4a68b1674fa548b065e833b9b4701865d548995239f md5: 5402c2b046432ceb2d192a82802e7854 @@ -13285,10 +13310,10 @@ packages: version: 12.9.79 sha256: 25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3 requires_python: '>=3' -- pypi: https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/7c/57/4d5f04c4230a009f8c5c04e6f6bb952bde6d70f3e782e659385d9fc29100/nvidia_cudnn_cu12-9.11.0.98-py3-none-manylinux_2_27_x86_64.whl name: nvidia-cudnn-cu12 - version: 9.10.2.21 - sha256: 949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8 + version: 9.11.0.98 + sha256: ff3db2c4c220e5962fac7256b0c6d667ea69ab974dd67e18b2fd57df891eea35 requires_dist: - nvidia-cublas-cu12 requires_python: '>=3' @@ -13315,10 +13340,10 @@ packages: requires_dist: - nvidia-nvjitlink-cu12 requires_python: '>=3' -- pypi: https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/af/a0/271bd709800f946e92128d9927ab7462559858a25b48f285a617d447bd48/nvidia_nccl_cu12-2.27.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: nvidia-nccl-cu12 - version: 2.27.5 - sha256: ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457 + version: 2.27.6 + sha256: 8be9c0a7d7f95489f407593ad3842ba66bbb7c3370622c3592efb6dd67540968 requires_python: '>=3' - pypi: https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl name: nvidia-nvjitlink-cu12 @@ -13949,50 +13974,50 @@ packages: - numpy ; extra == 'docs' - torch ; extra == 'docs' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/04/f0/8aedb6574b68096f3be8f74c0b56d36fd94bcf47e6c7ed47a7bd1474aaa8/orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl +- pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: orjson - version: 3.10.18 - sha256: 69c34b9441b863175cc6a01f2935de994025e773f814412030f269da4f7be147 + version: 3.11.0 + sha256: b5a8243e73690cc6e9151c9e1dd046a8f21778d775f7d478fa1eb4daa4897c61 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/21/1a/67236da0916c1a192d5f4ccbe10ec495367a726996ceb7614eaa687112f2/orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl +- pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl name: orjson - version: 3.10.18 - sha256: 50c15557afb7f6d63bc6d6348e0337a880a04eaa9cd7c9d569bcb4e760a24753 + version: 3.11.0 + sha256: 4a8ba9698655e16746fdf5266939427da0f9553305152aeb1a1cc14974a19cfb requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/27/6f/875e8e282105350b9a5341c0222a13419758545ae32ad6e0fcf5f64d76aa/orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/67/4f/d22f79a3c56dde563c4fbc12eebf9224a1b87af5e4ec61beb11f9b3eb499/orjson-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: orjson - version: 3.10.18 - sha256: 9dca85398d6d093dd41dc0983cbf54ab8e6afd1c547b6b8a311643917fbf4e0c + version: 3.11.0 + sha256: 4bfcfe498484161e011f8190a400591c52b026de96b3b3cbd3f21e8999b9dc0e requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/4b/03/c75c6ad46be41c16f4cfe0352a2d1450546f3c09ad2c9d341110cd87b025/orjson-3.10.18-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/82/ba/ef25e3e223f452a01eac6a5b38d05c152d037508dcbf87ad2858cbb7d82e/orjson-3.11.0-cp312-cp312-win_amd64.whl name: orjson - version: 3.10.18 - sha256: aed411bcb68bf62e85588f2a7e03a6082cc42e5a2796e06e72a962d7c6310b52 + version: 3.11.0 + sha256: 41b38a894520b8cb5344a35ffafdf6ae8042f56d16771b2c5eb107798cee85ee requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/6d/4c/2bda09855c6b5f2c055034c9eda1529967b042ff8d81a05005115c4e6772/orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl name: orjson - version: 3.10.18 - sha256: bb70d489bc79b7519e5803e2cc4c72343c9dc1154258adf2f8925d0b60da7c58 + version: 3.11.0 + sha256: 0759b36428067dc777b202dd286fbdd33d7f261c6455c4238ea4e8474358b1e6 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/79/2a/4048700a3233d562f0e90d5572a849baa18ae4e5ce4c3ba6247e4ece57b0/orjson-3.10.18-cp311-cp311-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl name: orjson - version: 3.10.18 - sha256: c28082933c71ff4bc6ccc82a454a2bffcef6e1d7379756ca567c772e4fb3278a + version: 3.11.0 + sha256: b4089f940c638bb1947d54e46c1cd58f4259072fcc97bc833ea9c78903150ac9 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/97/c7/c54a948ce9a4278794f669a353551ce7db4ffb656c69a6e1f2264d563e50/orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl +- pypi: https://files.pythonhosted.org/packages/94/3e/afd5e284db9387023803553061ea05c785c36fe7845e4fe25912424b343f/orjson-3.11.0-cp311-cp311-win_amd64.whl name: orjson - version: 3.10.18 - sha256: e0a183ac3b8e40471e8d843105da6fbe7c070faab023be3b08188ee3f85719b8 + version: 3.11.0 + sha256: b5a4214ea59c8a3b56f8d484b28114af74e9fba0956f9be5c3ce388ae143bf1f requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/d2/78/ddd3ee7873f2b5f90f016bc04062713d567435c53ecc8783aab3a4d34915/orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: orjson - version: 3.10.18 - sha256: 9da552683bc9da222379c7a01779bddd0ad39dd699dd6300abaf43eadee38334 + version: 3.11.0 + sha256: 2a585042104e90a61eda2564d11317b6a304eb4e71cd33e839f5af6be56c34d3 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/e6/22/469f62d25ab5f0f3aee256ea732e72dc3aab6d73bac777bd6277955bceef/orjson-3.10.18-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl name: orjson - version: 3.10.18 - sha256: f9f94cf6d3f9cd720d641f8399e390e7411487e493962213390d1ae45c7814fc + version: 3.11.0 + sha256: 1785df7ada75c18411ff7e20ac822af904a40161ea9dfe8c55b3f6b66939add6 requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c @@ -14015,7 +14040,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/packaging?source=compressed-mapping + - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.1-py311hed34c8f_0.conda @@ -14849,7 +14874,7 @@ packages: - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=hash-mapping + - pkg:pypi/pexpect?source=compressed-mapping size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -14909,16 +14934,6 @@ packages: purls: [] size: 476515 timestamp: 1749553103224 -- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 - md5: 5a5870a74432aa332f7d32180633ad05 - depends: - - python >=3.9 - license: MIT AND PSF-2.0 - purls: - - pkg:pypi/pkgutil-resolve-name?source=hash-mapping - size: 10693 - timestamp: 1733344619659 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3 md5: 424844562f5d337077b445ec6b1398a7 @@ -14979,7 +14994,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pluggy?source=compressed-mapping + - pkg:pypi/pluggy?source=hash-mapping size: 24246 timestamp: 1747339794916 - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -15273,7 +15288,7 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/pygments?source=compressed-mapping + - pkg:pypi/pygments?source=hash-mapping size: 889287 timestamp: 1750615908735 - conda: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.14-py311hf885082_0.conda @@ -15709,7 +15724,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytest-cov?source=compressed-mapping + - pkg:pypi/pytest-cov?source=hash-mapping size: 28216 timestamp: 1749778064293 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-profiling-1.8.1-pyhd8ed1ab_0.conda @@ -16072,39 +16087,39 @@ packages: - pkg:pypi/tzdata?source=hash-mapping size: 144160 timestamp: 1742745254292 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda - build_number: 7 - sha256: 705d06b15c497b585d235e7e87f6c893ffe5fbfdb3326e376e56c842879e0a09 - md5: 6320dac78b3b215ceac35858b2cfdb70 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda + build_number: 8 + sha256: fddf123692aa4b1fc48f0471e346400d9852d96eeed77dbfdd746fa50a8ff894 + md5: 8fcb6b0e2161850556231336dae58358 constrains: - python 3.11.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6996 - timestamp: 1745258878641 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - build_number: 7 - sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 - md5: 0dfcdc155cf23812a0c9deada86fb723 + size: 7003 + timestamp: 1752805919375 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + build_number: 8 + sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 + md5: c3efd25ac4d74b1584d2f7a57195ddf1 constrains: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6971 - timestamp: 1745258861359 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda - build_number: 7 - sha256: 0595134584589064f56e67d3de1d8fcbb673a972946bce25fb593fb092fdcd97 - md5: e84b44e6300f1703cb25d29120c5b1d8 + size: 6958 + timestamp: 1752805918820 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + build_number: 8 + sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 + md5: 94305520c52a4aa3f6c2b1ff6008d9f8 constrains: - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: [] - size: 6988 - timestamp: 1745258852285 + size: 7002 + timestamp: 1752805902938 - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda sha256: 8d2a8bf110cc1fc3df6904091dead158ba3e614d8402a83e51ed3a8aa93cdeb0 md5: bc8e3267d44011051f2eb14d22fb0960 @@ -16129,6 +16144,7 @@ packages: - ucrt >=10.0.20348.0 - python_abi 3.11.* *_cp311 license: PSF-2.0 + license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping size: 6729300 @@ -16146,6 +16162,7 @@ packages: - ucrt >=10.0.20348.0 - python_abi 3.12.* *_cp312 license: PSF-2.0 + license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping size: 6684177 @@ -16163,6 +16180,7 @@ packages: - ucrt >=10.0.20348.0 - python_abi 3.13.* *_cp313 license: PSF-2.0 + license_family: PSF purls: - pkg:pypi/pywin32?source=hash-mapping size: 6694986 @@ -16682,6 +16700,18 @@ packages: - pkg:pypi/rfc3986-validator?source=hash-mapping size: 7818 timestamp: 1598024297745 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda + sha256: 70001ac24ee62058557783d9c5a7bbcfd97bd4911ef5440e3f7a576f9e43bc92 + md5: 7234f99325263a5af6d4cd195035e8f2 + depends: + - python >=3.9 + - lark >=1.2.2 + - python + license: MIT + purls: + - pkg:pypi/rfc3987-syntax?source=hash-mapping + size: 22913 + timestamp: 1752876729969 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda sha256: 0116a9ca9bf3487e18979b58b2f280116dba55cb53475af7a6d835f7aa133db8 md5: 5f0f24f8032c2c1bb33f59b75974f5fc @@ -16721,7 +16751,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=compressed-mapping + - pkg:pypi/rpds-py?source=hash-mapping size: 389020 timestamp: 1751467350968 - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda @@ -17926,9 +17956,9 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 101735 timestamp: 1750271478254 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda - sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 - md5: 18b6bf6f878501547786f7bf8052a34d +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda + sha256: f0eb16aa1f3de1e408f1114d1f407489ea141853cef3655005ff042dc4b1fb1c + md5: db018bf64624649a6cac827533c7971e depends: - vc14_runtime >=14.44.35208 track_features: @@ -17936,20 +17966,20 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17914 - timestamp: 1750371462857 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 - md5: 14d65350d3f5c8ff163dc4f76d6e2830 + size: 17900 + timestamp: 1752820828309 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda + sha256: 389363ea52734bc59178a6c581500d3721b005614e8230519fc53429a5508428 + md5: c5dbb7fee79868438261a74498fb6082 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.44.35208.* *_26 + - vs2015_runtime 14.44.35208.* *_28 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 756109 - timestamp: 1750371459116 + size: 756360 + timestamp: 1752820824303 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 md5: c0600c1b374efa7a1ff444befee108ca @@ -17964,16 +17994,16 @@ packages: - pkg:pypi/virtualenv?source=hash-mapping size: 4133755 timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b - md5: 312f3a0a6b3c5908e79ce24002411e32 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + sha256: b1fea228c631dbd329f5fe5c985077b6e7d77a4f7b9d36022ba6879b9a0b8439 + md5: 1ad7cfc5889b28538c889700731ce9fd depends: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD purls: [] - size: 17888 - timestamp: 1750371463202 + size: 17846 + timestamp: 1752820828662 - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl name: wadler-lindig version: 0.1.7 diff --git a/pyproject.toml b/pyproject.toml index a50b9ab542..0f6d1b2913 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ classifiers = [ # Dependencies and requirements requires-python = ">=3.11" dependencies = [ + "dags>=0.4.1", "ipywidgets", "networkx>=3.5", "numpy-groupies", @@ -125,7 +126,6 @@ toml = "*" [tool.pixi.pypi-dependencies] gettsim = {path = ".", editable = true} -dags = { git = "https://github.com/OpenSourceEconomics/dags.git", branch = "main"} jaxtyping = ">=0.3.2" kaleido = ">=1.0.0" pdbp = ">=1.7.1" @@ -186,6 +186,9 @@ tests = "pytest" [tool.pixi.feature.jax.tasks] tests-jax = "pytest --backend=jax" +[tool.pixi.feature.cuda.tasks] +tests-jax = "pytest --backend=jax" + [tool.pixi.feature.mypy.tasks] mypy = "mypy --ignore-missing-imports" diff --git a/sandbox/check-autocomplete.ipynb b/sandbox/check-autocomplete.ipynb index 7b0786ada2..2e13e29a4c 100644 --- a/sandbox/check-autocomplete.ipynb +++ b/sandbox/check-autocomplete.ipynb @@ -20,7 +20,7 @@ "x = IDEs()\n", "x.input_data.df_and_mapper.df = pd.DataFrame()\n", "x.input_data.df_and_mapper.mapper = {}\n", - "x.date_str = \"2025-01-01\"\n", + "x.policy_date_str = \"2025-01-01\"\n", "x.backend = \"numpy\"" ] }, diff --git a/sandbox/plots.ipynb b/sandbox/plots.ipynb index b766625a92..29f3fcdb8b 100644 --- a/sandbox/plots.ipynb +++ b/sandbox/plots.ipynb @@ -35,7 +35,7 @@ "metadata": {}, "outputs": [], "source": [ - "main(main_target=MainTarget.date_str)" + "main(main_target=MainTarget.policy_date_str)" ] } ], diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index b972151a7f..fbc08e6c27 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -29,12 +29,12 @@ def get_orig_gettsim_column_functions() -> list[ColumnFunction]: @lru_cache(maxsize=100) def cached_specialized_environment( - date: datetime.date, + policy_date: datetime.date, backend: Literal["numpy", "jax"], ) -> SpecEnvWithPartialledParamsAndScalars: return main( main_target=("specialized_environment", "with_partialled_params_and_scalars"), - date=date, + policy_date=policy_date, backend=backend, include_fail_nodes=False, include_warn_nodes=False, @@ -48,10 +48,9 @@ def cached_specialized_environment( ids=[str(x[0]) for x in get_orig_gettsim_column_functions()], ) def test_jittable(tree_path, fun, backend, xnp): - today = datetime.date.today() # noqa: DTZ011 - date = min(fun.end_date, today) + policy_date = min(fun.end_date, datetime.date.today()) # noqa: DTZ011 qname = dt.qname_from_tree_path((*tree_path[:-2], fun.leaf_name)) - env = {qname: cached_specialized_environment(date, backend)[qname]} + env = {qname: cached_specialized_environment(policy_date, backend)[qname]} processed_data = {} for arg_name in get_free_arguments(env[qname]): @@ -68,7 +67,7 @@ def test_jittable(tree_path, fun, backend, xnp): with contextlib.suppress(NotImplementedError): main( main_target=("raw_results", "columns"), - date=date, + policy_date=policy_date, specialized_environment={"with_partialled_params_and_scalars": env}, processed_data=processed_data, tt_targets={"qname": [qname]}, diff --git a/src/_gettsim_tests/test_plot_dag.py b/src/_gettsim_tests/test_plot_dag.py index e28874a815..211f1d374a 100644 --- a/src/_gettsim_tests/test_plot_dag.py +++ b/src/_gettsim_tests/test_plot_dag.py @@ -9,7 +9,7 @@ def test_gettsim_policy_environment_dag_with_params(): plot_tt_dag( - date_str="2025-01-01", + policy_date_str="2025-01-01", root=GETTSIM_ROOT, include_params=True, title="GETTSIM Policy Environment DAG with parameters", @@ -19,7 +19,7 @@ def test_gettsim_policy_environment_dag_with_params(): def test_gettsim_policy_environment_dag_without_params(): plot_tt_dag( - date_str="2025-01-01", + policy_date_str="2025-01-01", root=GETTSIM_ROOT, include_params=False, title="GETTSIM Policy Environment DAG without parameters", diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index 65d358190c..c81ca14ed2 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -84,7 +84,7 @@ def test_gettsim_policy_environment_is_complete(orig_gettsim_objects, date): check_env_completeness( name="GETTSIM", - date=date, + policy_date=date, orig_policy_objects=orig_gettsim_objects, ) @@ -104,7 +104,7 @@ def test_top_level_elements_not_repeated_in_paths( "labels__top_level_namespace", ], backend=backend, - date=date, + policy_date=date, rounding=False, ) except Exception: # noqa: BLE001 diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 24a075fdc1..3b213a1763 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -13,7 +13,7 @@ def test_template_all_outputs_no_inputs(backend): res = main( main_targets=["labels__grouping_levels", "templates__input_data_dtypes"], rounding=True, - date_str="2025-01-01", + policy_date_str="2025-01-01", backend=backend, ) diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index 1e1b7031b8..d9ff64756a 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -58,11 +58,12 @@ def main( *, main_target: str | tuple[str, ...] | NestedTargetDict | None = None, main_targets: Iterable[str | tuple[str, ...]] | None = None, - date_str: DashedISOString | None = None, + policy_date_str: DashedISOString | None = None, input_data: InputData | None = None, tt_targets: TTTargets | None = None, - backend: Literal["numpy", "jax"] = "numpy", rounding: bool = True, + backend: Literal["numpy", "jax"] = "numpy", + evaluation_date_str: DashedISOString | None = None, include_fail_nodes: bool = True, include_warn_nodes: bool = True, orig_policy_objects: OrigPolicyObjects | None = None, @@ -71,9 +72,6 @@ def main( specialized_environment: SpecializedEnvironment | None = None, policy_environment: PolicyEnvironment | None = None, processed_data: QNameData | None = None, - date: datetime.date | None = None, - policy_date_str: DashedISOString | None = None, - evaluation_date_str: DashedISOString | None = None, policy_date: datetime.date | None = None, evaluation_date: datetime.date | None = None, labels: Labels | None = None, diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index 562d59baf6..e2d2bfb296 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -53,25 +53,23 @@ def main( *, main_target: str | tuple[str, ...] | NestedTargetDict | None = None, main_targets: Iterable[str | tuple[str, ...]] | None = None, - date_str: DashedISOString | None = None, + policy_date_str: DashedISOString | None = None, input_data: InputData | None = None, tt_targets: TTTargets | None = None, rounding: bool = True, - backend: Literal["numpy", "jax"] | None = None, + backend: Literal["numpy", "jax"] = "numpy", + evaluation_date_str: DashedISOString | None = None, include_fail_nodes: bool = True, include_warn_nodes: bool = True, - date: datetime.date | None = None, - policy_date_str: DashedISOString | None = None, - evaluation_date_str: DashedISOString | None = None, - policy_date: datetime.date | None = None, - evaluation_date: datetime.date | None = None, orig_policy_objects: OrigPolicyObjects | None = None, + raw_results: RawResults | None = None, + results: Results | None = None, + specialized_environment: SpecializedEnvironment | None = None, policy_environment: PolicyEnvironment | None = None, processed_data: QNameData | None = None, - specialized_environment: SpecializedEnvironment | None = None, - raw_results: RawResults | None = None, + policy_date: datetime.date | None = None, + evaluation_date: datetime.date | None = None, labels: Labels | None = None, - results: Results | None = None, ) -> dict[str, Any]: """ Main function that processes the inputs and returns the outputs. diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index b2183c8feb..2c30e9a253 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -23,6 +23,9 @@ class WarnIf(MainTargetABC): functions_and_data_columns_overlap: str = ( "warn_if__functions_and_data_columns_overlap" ) + evaluation_date_set_in_multiple_places: str = ( + "warn_if__evaluation_date_set_in_multiple_places" + ) @dataclass(frozen=True) @@ -149,12 +152,10 @@ class MainTarget(MainTargetABC): processed_data: str = "processed_data" raw_results: type[RawResults] = field(default=RawResults) labels: type[Labels] = field(default=Labels) - date_str: str = "date_str" input_data: type[InputData] = field(default=InputData) tt_targets: type[Targets] = field(default=Targets) num_segments: str = "num_segments" backend: str = "backend" - date: str = "date" evaluation_date_str: str = "evaluation_date_str" evaluation_date: str = "evaluation_date" policy_date_str: str = "policy_date_str" diff --git a/src/ttsim/interface_dag_elements/dates.py b/src/ttsim/interface_dag_elements/dates.py index 54d91348fa..2e83d81b1a 100644 --- a/src/ttsim/interface_dag_elements/dates.py +++ b/src/ttsim/interface_dag_elements/dates.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Literal from ttsim.interface_dag_elements.interface_node_objects import ( input_dependent_interface_function, @@ -15,64 +15,62 @@ from ttsim.interface_dag_elements.typing import DashedISOString -@interface_input(in_top_level_namespace=True) -def date_str() -> DashedISOString: - """The date to be used as policy date and evaluation date.""" - - @interface_input(in_top_level_namespace=True) def policy_date_str() -> DashedISOString: - """The date to be used as policy date.""" + """The date to be used as policy date in YYYY-MM-DD format. + + Will also be used as evaluation date in case that is neither provided as an argument + to `main` nor as part of the input data / parameters. + """ @interface_input(in_top_level_namespace=True) def evaluation_date_str() -> DashedISOString: - """The date to be used as evaluation date.""" + """The date to be used as evaluation date in YYYY-MM-DD format. + Will be overridden by values for year / month / day found in the input data or + parameters. + """ -@interface_function(in_top_level_namespace=True) -def date(date_str: DashedISOString) -> datetime.date: - """The date to be used as policy date and evaluation date.""" - return to_datetime(date_str) +@interface_function(in_top_level_namespace=True) +def policy_date(policy_date_str: DashedISOString) -> datetime.date: + """The date to be used as policy date. -@input_dependent_interface_function( - include_if_all_inputs_present=["policy_date_str", "evaluation_date_str"], - leaf_name="policy_date", - in_top_level_namespace=True, -) -def policy_date_from_policy_date_str(policy_date_str: DashedISOString) -> datetime.date: - """The date to be used as policy date.""" + Will also be used as evaluation date in case that is neither provided as an argument + to `main` nor as part of the input data / parameters. + """ return to_datetime(policy_date_str) @input_dependent_interface_function( - include_if_any_input_present=["date", "date_str"], - leaf_name="policy_date", + include_if_no_input_present=["evaluation_date_str"], + leaf_name="evaluation_date", in_top_level_namespace=True, ) -def policy_date_from_date(date: datetime.date) -> datetime.date: - """The date to be used as policy date.""" - return date +def evaluation_date_use_other_info( + backend: Literal["numpy", "jax"], # noqa: ARG001 +) -> datetime.date | None: + """The date to be used as evaluation date in YYYY-MM-DD format. + + Will be overridden by values for year / month / day found in the input data or + parameters. + + *Developer note:* The backend is needed to get some parent in here, else it will be + counted as a root node and thus trigger + `_fail_if_root_nodes_of_interface_dag_are_missing`. + + """ + return None @input_dependent_interface_function( - include_if_all_inputs_present=["policy_date_str", "evaluation_date_str"], + include_if_all_inputs_present=["evaluation_date_str"], leaf_name="evaluation_date", in_top_level_namespace=True, ) def evaluation_date_from_evaluation_date_str( evaluation_date_str: DashedISOString, -) -> datetime.date: +) -> datetime.date | None: """The date to be used as evaluation date.""" return to_datetime(evaluation_date_str) - - -@input_dependent_interface_function( - include_if_any_input_present=["date", "date_str"], - leaf_name="evaluation_date", - in_top_level_namespace=True, -) -def evaluation_date_from_date(date: datetime.date) -> datetime.date: - """The date to be used as evaluation date.""" - return date diff --git a/src/ttsim/interface_dag_elements/interface_node_objects.py b/src/ttsim/interface_dag_elements/interface_node_objects.py index fa0262419f..af64c58626 100644 --- a/src/ttsim/interface_dag_elements/interface_node_objects.py +++ b/src/ttsim/interface_dag_elements/interface_node_objects.py @@ -196,16 +196,19 @@ class InputDependentInterfaceFunction(InterfaceFunction[FunArgTypes, ReturnType] include_if_any_input_present: Iterable[str] include_if_all_inputs_present: Iterable[str] + include_if_no_input_present: Iterable[str] def __post_init__(self) -> None: super().__post_init__() if ( not self.include_if_all_inputs_present and not self.include_if_any_input_present + and not self.include_if_no_input_present ): raise ValueError( - "At least one of `include_if_all_inputs_present` or " - "`include_if_any_input_present` must be specified." + "At least one of `include_if_all_inputs_present`, " + "`include_if_any_input_present`, or `include_if_no_input_present` " + "must be specified." ) def include_condition_satisfied(self, input_names: Iterable[str]) -> bool: @@ -215,7 +218,10 @@ def include_condition_satisfied(self, input_names: Iterable[str]) -> bool: i in input_names for i in self.include_if_all_inputs_present ) any_cond = any(i in input_names for i in self.include_if_any_input_present) - return all_cond or any_cond + no_cond = bool(self.include_if_no_input_present) and not any( + i in input_names for i in self.include_if_no_input_present + ) + return all_cond or any_cond or no_cond def remove_tree_logic( self, @@ -233,6 +239,7 @@ def remove_tree_logic( in_top_level_namespace=self.in_top_level_namespace, include_if_any_input_present=self.include_if_any_input_present, include_if_all_inputs_present=self.include_if_all_inputs_present, + include_if_no_input_present=self.include_if_no_input_present, ) @@ -240,6 +247,7 @@ def input_dependent_interface_function( *, include_if_any_input_present: Iterable[str] = (), include_if_all_inputs_present: Iterable[str] = (), + include_if_no_input_present: Iterable[str] = (), leaf_name: str | None = None, in_top_level_namespace: bool = False, ) -> Callable[ @@ -256,6 +264,9 @@ def input_dependent_interface_function( include_if_all_inputs_present List of input names that must be present for the function to be used if all of the inputs are present. + include_if_no_input_present + List of input names that must not be present for the function to be used if no + inputs are present. leaf_name The name that should be used as the function's leaf name in the DAG. If omitted, we use the name of the function as defined. @@ -276,6 +287,7 @@ def inner( in_top_level_namespace=in_top_level_namespace, include_if_any_input_present=include_if_any_input_present, include_if_all_inputs_present=include_if_all_inputs_present, + include_if_no_input_present=include_if_no_input_present, ) return inner diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py index fd29b86e10..114faa77a6 100644 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ b/src/ttsim/interface_dag_elements/policy_environment.py @@ -17,6 +17,7 @@ DictParam, ParamObject, PiecewisePolynomialParam, + PolicyInput, RawParam, ScalarParam, get_consecutive_int_lookup_table_param_value, @@ -65,22 +66,56 @@ def policy_environment( ------- The policy environment for the specified date. """ - return merge_trees( - left=_active_column_objects_and_param_functions( - orig=orig_policy_objects__column_objects_and_param_functions, - date=policy_date, + return { + "policy_year": ScalarParam( + value=policy_date.year, + start_date=policy_date, + end_date=policy_date, ), - right=_active_param_objects( - orig=orig_policy_objects__param_specs, - date=policy_date, - xnp=xnp, + "policy_month": ScalarParam( + value=policy_date.month, start_date=policy_date, end_date=policy_date ), - ) + "policy_day": ScalarParam( + value=policy_date.day, start_date=policy_date, end_date=policy_date + ), + "evaluation_year": PolicyInput( + leaf_name="evaluation_year", + data_type=int, + start_date=policy_date, + end_date=policy_date, + description="The evaluation year, will typically be set via `main`.", + ), + "evaluation_month": PolicyInput( + leaf_name="evaluation_month", + data_type=int, + start_date=policy_date, + end_date=policy_date, + description="The evaluation month, will typically be set via `main`.", + ), + "evaluation_day": PolicyInput( + leaf_name="evaluation_day", + data_type=int, + start_date=policy_date, + end_date=policy_date, + description="The evaluation day, will typically be set via `main`.", + ), + **merge_trees( + left=_active_column_objects_and_param_functions( + orig=orig_policy_objects__column_objects_and_param_functions, + policy_date=policy_date, + ), + right=_active_param_objects( + orig=orig_policy_objects__param_specs, + policy_date=policy_date, + xnp=xnp, + ), + ), + } def _active_column_objects_and_param_functions( orig: FlatColumnObjectsParamFunctions, - date: datetime.date, + policy_date: datetime.date, ) -> NestedColumnObjectsParamFunctions: """ Traverse `root` and return all ColumnObjectParamFunctions for a given date. @@ -89,7 +124,7 @@ def _active_column_objects_and_param_functions( ---------- root: The directory to traverse. - date: + policy_date: The date for which policy objects should be loaded. Returns @@ -99,7 +134,7 @@ def _active_column_objects_and_param_functions( flat_objects_tree = { (*orig_path[:-2], obj.leaf_name): obj for orig_path, obj in orig.items() - if obj.is_active(date) + if obj.is_active(policy_date) } return dt.unflatten_from_tree_paths(flat_objects_tree) @@ -107,7 +142,7 @@ def _active_column_objects_and_param_functions( def _active_param_objects( orig: FlatOrigParamSpecs, - date: datetime.date, + policy_date: datetime.date, xnp: ModuleType, ) -> NestedParamObjects: """Parse the original yaml tree.""" @@ -118,18 +153,18 @@ def _active_param_objects( param = _get_one_param( leaf_name=leaf_name, spec=orig_params_spec, - date=date, + policy_date=policy_date, xnp=xnp, ) if param is not None: flat_tree_with_params[(*path_to_keep, leaf_name)] = param if orig_params_spec.get("add_jahresanfang", False): - date_jan1 = date.replace(month=1, day=1) + date_jan1 = policy_date.replace(month=1, day=1) leaf_name_jan1 = f"{leaf_name}_jahresanfang" param = _get_one_param( leaf_name=leaf_name_jan1, spec=orig_params_spec, - date=date_jan1, + policy_date=date_jan1, xnp=xnp, ) if param is not None: @@ -140,11 +175,13 @@ def _active_param_objects( def _get_one_param( # noqa: PLR0911 leaf_name: str, spec: OrigParamSpec, - date: datetime.date, + policy_date: datetime.date, xnp: ModuleType, ) -> ParamObject: """Parse the original specification found in the yaml tree to a ParamObject.""" - cleaned_spec = _clean_one_param_spec(leaf_name=leaf_name, spec=spec, date=date) + cleaned_spec = _clean_one_param_spec( + leaf_name=leaf_name, spec=spec, policy_date=policy_date + ) if cleaned_spec is None: return None @@ -190,11 +227,11 @@ def _get_one_param( # noqa: PLR0911 def _clean_one_param_spec( leaf_name: str, spec: OrigParamSpec, - date: datetime.date, + policy_date: datetime.date, ) -> dict[str, Any] | None: """Prepare the specification of one parameter for creating a ParamObject.""" policy_dates = numpy.sort([key for key in spec if isinstance(key, datetime.date)]) - idx = numpy.searchsorted(policy_dates, date, side="right") # type: ignore[call-overload] + idx = numpy.searchsorted(policy_dates, policy_date, side="right") # type: ignore[call-overload] if idx == 0: return None diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py index b8368a2192..777f1c226a 100644 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ b/src/ttsim/interface_dag_elements/specialized_environment.py @@ -19,6 +19,7 @@ ColumnFunction, ColumnObject, ParamFunction, + PolicyInput, ) from ttsim.tt_dag_elements.param_objects import ParamObject, RawParam @@ -161,7 +162,7 @@ def with_processed_params_and_scalars( backend: Literal["numpy", "jax"], xnp: ModuleType, dnp: ModuleType, - evaluation_date: datetime.date, + evaluation_date: datetime.date | None, ) -> SpecEnvWithProcessedParamsAndScalars: """Process the parameters and param functions, remove RawParams from the tree. @@ -186,7 +187,8 @@ def with_processed_params_and_scalars( Returns ------- The specialized environment with processed parameters and scalars. Input nodes that - come in via the processed data are removed from the environment. + come in via the processed data are removed from the environment. Evaluation year / + month / day are added if not present. """ all_nodes = {} @@ -200,6 +202,26 @@ def with_processed_params_and_scalars( # Leave nodes not in the data what they are. all_nodes[n] = f + must_set_evaluation_date = ( + # Never need to do anything if the evaluation date is set in the data. + "evaluation_year" not in processed_data + and ( + # PolicyInput as a placeholder + isinstance(all_nodes.get("evaluation_year"), PolicyInput) + # No evaluation_year in the environment (can happen in tests). + or "evaluation_year" not in all_nodes + ) + ) + if must_set_evaluation_date: + if evaluation_date is None: + all_nodes["evaluation_year"] = all_nodes["policy_year"] + all_nodes["evaluation_month"] = all_nodes["policy_month"] + all_nodes["evaluation_day"] = all_nodes["policy_day"] + else: + all_nodes["evaluation_year"] = evaluation_date.year + all_nodes["evaluation_month"] = evaluation_date.month + all_nodes["evaluation_day"] = evaluation_date.day + params = {k: v for k, v in all_nodes.items() if isinstance(v, ParamObject)} scalars = {k: v for k, v in all_nodes.items() if isinstance(v, float | int | bool)} param_functions = { @@ -221,9 +243,6 @@ def with_processed_params_and_scalars( xnp=xnp, dnp=dnp, backend=backend, - evaluation_year=evaluation_date.year, - evaluation_month=evaluation_date.month, - evaluation_day=evaluation_date.day, ) processed_params = merge_trees( left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, @@ -243,7 +262,6 @@ def with_partialled_params_and_scalars( backend: Literal["numpy", "jax"], xnp: ModuleType, dnp: ModuleType, - evaluation_date: datetime.date, ) -> SpecEnvWithPartialledParamsAndScalars: """Partial parameters to functions such that they disappear from the DAG. @@ -286,9 +304,6 @@ def with_partialled_params_and_scalars( "backend": backend, "xnp": xnp, "dnp": dnp, - "evaluation_year": evaluation_date.year, - "evaluation_month": evaluation_date.month, - "evaluation_day": evaluation_date.day, } processed_functions = {} diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index 1b1a1dfb69..3e5408df12 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -34,12 +34,14 @@ def input_data_dtypes( ) # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | IntColumn - # | BoolColumn' with the actual dtype of the policy environment. + # | BoolColumn' with the actual dtype found in the policy environment. flat_policy_env = dt.flatten_to_tree_paths(policy_environment) flat_dtype_tree = dt.flatten_to_tree_paths(base_dtype_tree) out = {} for p, derived_dtype_in_base in flat_dtype_tree.items(): policy_env_element = flat_policy_env[p] + if p[0] in {"evaluation_year", "evaluation_month", "evaluation_day"}: + continue if isinstance(policy_env_element, PolicyInput) and "|" in derived_dtype_in_base: out[p] = scalar_type_to_array_type(policy_env_element.data_type) else: diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py index 0809c447f1..211d6f85ba 100644 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -13,28 +13,34 @@ from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput if TYPE_CHECKING: + import datetime + from ttsim.interface_dag_elements.typing import ( - OrderedQNames, PolicyEnvironment, + QNameData, UnorderedQNames, ) -class FunctionsAndDataColumnsOverlapWarning(UserWarning): - """ - Warning that functions which compute columns overlap with existing columns. - - Parameters - ---------- - columns_overriding_functions : UnorderedQNames - Names of columns in the data that override hard-coded functions. - """ - - def __init__(self, columns_overriding_functions: OrderedQNames) -> None: - n_cols = len(columns_overriding_functions) +@warn_function() +def functions_and_data_columns_overlap( + policy_environment: PolicyEnvironment, + labels__processed_data_columns: UnorderedQNames, +) -> None: + """Warn if functions are overridden by data.""" + flat_policy_environment = dt.flatten_to_qnames(policy_environment) + overridden_elements = sorted( + { + col + for col in labels__processed_data_columns + if col in flat_policy_environment + and not isinstance(flat_policy_environment.get(col), PolicyInput) + }, + ) + if n_cols := len(overridden_elements) > 0: if n_cols == 1: - first_part = format_errors_and_warnings("Your data provides the column:") - second_part = format_errors_and_warnings( + intro = format_errors_and_warnings("Your data provides the column:") + explanation = format_errors_and_warnings( """ This is already present among the hard-coded functions of the taxes and transfers system. If you want this data column to be used instead of @@ -42,11 +48,15 @@ def __init__(self, columns_overriding_functions: OrderedQNames) -> None: data column to be calculated by hard-coded functions, remove it from the *data* you pass to TTSIM. You need to pick one option for each column that appears in the list above. + + Turn off warnings by setting `include_warn_nodes=False` in `main`. + If you want to be selective about warnings, include these + `main_targets`. """, ) else: - first_part = format_errors_and_warnings("Your data provides the columns:") - second_part = format_errors_and_warnings( + intro = format_errors_and_warnings("Your data provides the columns:") + explanation = format_errors_and_warnings( """ These are already present among the hard-coded functions of the taxes and transfers system. If you want a data column to be used instead of @@ -54,34 +64,53 @@ def __init__(self, columns_overriding_functions: OrderedQNames) -> None: want data columns to be calculated by hard-coded functions, remove them from the *data* you pass to TTSIM. You need to pick one option for each column that appears in the list above. + + Turn off warnings by setting `include_warn_nodes=False` in `main`. + If you want to be selective about warnings, include these + `main_targets`. """, ) - formatted = format_list_linewise(columns_overriding_functions) - how_to_ignore = format_errors_and_warnings( - """ - In order to not perform this check, you can ... TODO - """, - ) - super().__init__(f"{first_part}\n{formatted}\n{second_part}\n{how_to_ignore}") + msg = f"{intro}\n{format_list_linewise(overridden_elements)}\n{explanation}" + warnings.warn(UserWarning(msg), stacklevel=2) -@warn_function() -def functions_and_data_columns_overlap( +@warn_function( + include_if_all_elements_present=[ + "specialized_environment__with_processed_params_and_scalars" + ] +) +def evaluation_date_set_in_multiple_places( policy_environment: PolicyEnvironment, - labels__processed_data_columns: UnorderedQNames, + processed_data: QNameData, + evaluation_date: datetime.date | None, ) -> None: - """Warn if functions are overridden by data.""" - flat_policy_environment = dt.flatten_to_qnames(policy_environment) - overridden_elements = sorted( - { - col - for col in labels__processed_data_columns - if col in flat_policy_environment - and not isinstance(flat_policy_environment.get(col), PolicyInput) - }, - ) - if len(overridden_elements) > 0: - warnings.warn( - FunctionsAndDataColumnsOverlapWarning(overridden_elements), - stacklevel=2, + """Warn if more than one of the following hold true: + - `evaluation_date` is passed as an argument to `main` + - `evaluation_year` is present in the policy environment and it is not a PolicyInput + - `evaluation_year` is part of the data + + """ + conditions = { + "`evaluation_date` passed as argument to `main`": evaluation_date is not None, + "`evaluation_year` is set in the policy environment": ( + "evaluation_year" in policy_environment + and not isinstance(policy_environment["evaluation_year"], PolicyInput) + ), + "`evaluation_year` is present in the data": "evaluation_year" in processed_data, + } + if sum(conditions.values()) > 1: + nicely_formatted_conditions = "\n".join( + [f"- {k}" for k, v in conditions.items() if v] ) + msg = f""" +You have specified the evaluation date in more than one way: + +{nicely_formatted_conditions} + +The last of these will be used. + +Note that this warnings function does not check for `evaluation_month` +and `evaluation_day`, never set them anywhere without also setting +`evaluation_year`. +""" + warnings.warn(UserWarning(msg), stacklevel=2) diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py index 517dbe1d89..af4f2a0e83 100644 --- a/src/ttsim/plot_dag.py +++ b/src/ttsim/plot_dag.py @@ -69,7 +69,7 @@ class NodeMetaData: def plot_tt_dag( - date_str: str, + policy_date_str: str, root: Path, node_selector: NodeSelector | None = None, title: str = "", @@ -82,7 +82,7 @@ def plot_tt_dag( Parameters ---------- - date_str + policy_date_str The date string. root The root path. @@ -106,7 +106,7 @@ def plot_tt_dag( """ environment = main( main_target="policy_environment", - date_str=date_str, + policy_date_str=policy_date_str, orig_policy_objects={"root": root}, backend="numpy", ) diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index 4ab46c46af..c662dd0a01 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -39,13 +39,13 @@ @lru_cache(maxsize=100) def cached_policy_environment( - date: datetime.date, + policy_date: datetime.date, root: Path, backend: Literal["numpy", "jax"], ) -> PolicyEnvironment: return main( main_target="policy_environment", - date=date, + policy_date=policy_date, orig_policy_objects={"root": root}, backend=backend, include_fail_nodes=False, @@ -62,7 +62,7 @@ def __init__( input_tree: NestedData, expected_output_tree: NestedData, path: Path, - date: datetime.date, + policy_date: datetime.date, test_dir: Path, xnp: ModuleType, ) -> None: @@ -70,7 +70,7 @@ def __init__( self.input_tree = optree.tree_map(xnp.array, input_tree) self.expected_output_tree = expected_output_tree self.path = path - self.date = date + self.policy_date = policy_date self.test_dir = test_dir self.xnp = xnp @@ -91,13 +91,15 @@ def execute_test( root: Path, backend: Literal["numpy", "jax"], ) -> None: - environment = cached_policy_environment(date=test.date, root=root, backend=backend) + environment = cached_policy_environment( + policy_date=test.policy_date, root=root, backend=backend + ) if test.target_structure: result_df = main( main_target="results__df_with_nested_columns", input_data={"tree": test.input_tree}, policy_environment=environment, - date=test.date, + policy_date=test.policy_date, tt_targets={"tree": test.target_structure}, rounding=True, backend=backend, @@ -218,14 +220,14 @@ def _get_policy_test_from_raw_test_data( }, ) - date: datetime.date = to_datetime(path_to_yaml.parent.name) + policy_date: datetime.date = to_datetime(path_to_yaml.parent.name) return PolicyTest( info=test_info, input_tree=input_tree, expected_output_tree=expected_output_tree, path=path_to_yaml, - date=date, + policy_date=policy_date, test_dir=test_dir, xnp=xnp, ) @@ -233,14 +235,14 @@ def _get_policy_test_from_raw_test_data( def check_env_completeness( name: str, - date: datetime.date, + policy_date: datetime.date, orig_policy_objects: dict[ str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs ], ) -> None: environment = main( main_target="policy_environment", - date=date, + policy_date=policy_date, backend="numpy", orig_policy_objects=orig_policy_objects, ) diff --git a/src/ttsim/tt_dag_elements/column_objects_param_function.py b/src/ttsim/tt_dag_elements/column_objects_param_function.py index 97770004d5..c5321aa8c2 100644 --- a/src/ttsim/tt_dag_elements/column_objects_param_function.py +++ b/src/ttsim/tt_dag_elements/column_objects_param_function.py @@ -80,9 +80,9 @@ class ColumnObject: end_date: datetime.date description: str - def is_active(self, date: datetime.date) -> bool: + def is_active(self, policy_date: datetime.date) -> bool: """Check if the function is active at a given date.""" - return self.start_date <= date <= self.end_date + return self.start_date <= policy_date <= self.end_date def remove_tree_logic( self, @@ -152,10 +152,9 @@ def policy_input( start_date, end_date = _convert_and_validate_dates(start_date, end_date) def inner(func: Callable[..., Any]) -> PolicyInput: - data_type = func.__annotations__["return"] return PolicyInput( leaf_name=func.__name__, - data_type=data_type, + data_type=func.__annotations__["return"], start_date=start_date, end_date=end_date, foreign_key_type=foreign_key_type, @@ -229,9 +228,9 @@ def original_function_name(self) -> str: """The name of the wrapped function.""" return self.function.__name__ - def is_active(self, date: datetime.date) -> bool: + def is_active(self, policy_date: datetime.date) -> bool: """Check if the function is active at a given date.""" - return self.start_date <= date <= self.end_date + return self.start_date <= policy_date <= self.end_date def _fail_if_rounding_has_wrong_type(rounding_spec: RoundingSpec | None) -> None: @@ -873,9 +872,9 @@ def original_function_name(self) -> str: """The name of the wrapped function.""" return self.function.__name__ - def is_active(self, date: datetime.date) -> bool: + def is_active(self, policy_date: datetime.date) -> bool: """Check if the function is active at a given date.""" - return self.start_date <= date <= self.end_date + return self.start_date <= policy_date <= self.end_date def remove_tree_logic( self, diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py index d7f0b4c12b..88f66a4080 100644 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ b/tests/ttsim/interface_dag_elements/test_data_converters.py @@ -222,7 +222,7 @@ def test_nested_data_to_dataframe( main_target="results__tree", input_data={"tree": minimal_data_tree}, policy_environment=environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index c143a1ca41..1481664dc4 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -137,7 +137,7 @@ def mettsim_environment(backend) -> PolicyEnvironment: return main( main_target="policy_environment", orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, - date=datetime.date(2025, 1, 1), + policy_date=datetime.date(2025, 1, 1), backend=backend, ) @@ -544,8 +544,8 @@ def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( results__tree = main( main_target="results__tree", input_data={"tree": minimal_data_tree}, - date=datetime.date(2024, 1, 1), policy_environment=environment, + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, @@ -756,7 +756,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( main_target=MainTarget.results.df_with_nested_columns, input_data={"tree": minimal_data_tree}, policy_environment=environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, @@ -791,7 +791,7 @@ def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_lengt main_target=MainTarget.results.df_with_nested_columns, input_data={"tree": minimal_data_tree}, policy_environment=environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, @@ -819,7 +819,7 @@ def test_fail_if_p_id_is_missing_via_main(backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, - date=datetime.date(2025, 1, 1), + evaluation_date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -848,7 +848,7 @@ def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, - date=datetime.date(2025, 1, 1), + policy_date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -899,7 +899,7 @@ def test_fail_if_input_data_has_different_lengths(backend): input_data={"tree": data}, policy_environment={}, tt_targets={"tree": {}}, - date=datetime.date(2025, 1, 1), + evaluation_date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -925,7 +925,7 @@ def c(b): main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"c": None}}, rounding=False, backend=backend, @@ -957,7 +957,7 @@ def a() -> int: main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], input_data={"tree": minimal_input_data}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"b": None}}, include_warn_nodes=False, include_fail_nodes=False, @@ -1013,7 +1013,7 @@ def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( input_data={"tree": minimal_input_data}, policy_environment={}, tt_targets={"tree": {"unknown_target": None}}, - date=datetime.date(2025, 1, 1), + evaluation_date=datetime.date(2025, 1, 1), rounding=False, backend=backend, ) @@ -1171,7 +1171,7 @@ def test_fail_if_input_df_mapper_columns_missing_in_df_via_main( main_target=MainTarget.results.df_with_mapper, orig_policy_objects={"root": METTSIM_ROOT}, tt_targets=MainTarget.policy_environment, - date_str="2025-01-01", + policy_date_str="2025-01-01", backend=backend, ) @@ -1223,7 +1223,7 @@ def test_invalid_tt_targets_tree( } ), orig_policy_objects={"root": METTSIM_ROOT}, - date_str="2025-01-01", + policy_date_str="2025-01-01", tt_targets={"tree": tt_targets__tree}, ) @@ -1259,7 +1259,7 @@ def test_invalid_input_data_tree_via_main( backend=backend, input_data=InputData.tree(tree=input_data_tree_with_p_id), orig_policy_objects={"root": METTSIM_ROOT}, - date_str="2025-01-01", + policy_date_str="2025-01-01", ) @@ -1370,7 +1370,7 @@ def test_invalid_input_data_as_object_via_main(backend: Literal["jax", "numpy"]) backend=backend, input_data=InputData.tree(tree=object()), orig_policy_objects={"root": METTSIM_ROOT}, - date_str="2025-01-01", + policy_date_str="2025-01-01", ) @@ -1389,7 +1389,7 @@ def test_raise_tt_root_nodes_are_missing_without_input_data( ValueError, match="For computing results, you need to pass data. " ): main( - date_str="2025-01-01", + policy_date_str="2025-01-01", main_target=main_target, backend=backend, orig_policy_objects={"root": METTSIM_ROOT}, @@ -1408,7 +1408,7 @@ def test_raise_some_error_without_input_data( ), ): main( - date_str="2025-01-01", + policy_date_str="2025-01-01", main_target=MainTarget.results.df_with_mapper, backend=backend, orig_policy_objects={"root": METTSIM_ROOT}, diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index 90e85715f4..86fe431d77 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -70,7 +70,7 @@ def test_add_jahresanfang(xnp): } _active_ttsim_tree_with_params = _active_param_objects( orig={("spam.yaml", "foo"): spec}, - date=pd.to_datetime("2020-07-01").date(), + policy_date=pd.to_datetime("2020-07-01").date(), xnp=xnp, ) assert _active_ttsim_tree_with_params["foo"].value == 2 @@ -81,7 +81,7 @@ def test_input_is_recognized_as_potential_group_id(backend): assert "kin" in main( main_target="labels__grouping_levels", orig_policy_objects={"root": METTSIM_ROOT}, - date=datetime.date(2020, 1, 1), + policy_date=datetime.date(2020, 1, 1), backend=backend, ) @@ -90,7 +90,7 @@ def test_p_id_not_recognized_as_potential_group_id(backend): assert "p" not in main( main_target="labels__grouping_levels", orig_policy_objects={"root": METTSIM_ROOT}, - date=datetime.date(2020, 1, 1), + policy_date=datetime.date(2020, 1, 1), backend=backend, ) @@ -205,11 +205,11 @@ def test_active_tree_with_column_objects_and_param_functions( orig = column_objects_and_param_functions(root=METTSIM_ROOT) functions_last_day = _active_column_objects_and_param_functions( orig=orig, - date=last_day, + policy_date=last_day, ) functions_next_day = _active_column_objects_and_param_functions( orig=orig, - date=last_day + datetime.timedelta(days=1), + policy_date=last_day + datetime.timedelta(days=1), ) accessor = optree.tree_accessors(tree, none_is_leaf=True)[0] diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py index 9751ee1b75..97740fe761 100644 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ b/tests/ttsim/interface_dag_elements/test_specialized_environment.py @@ -400,7 +400,7 @@ def test_create_agg_by_group_functions( main_target="results__tree", policy_environment=policy_environment, input_data={"tree": input_data__tree}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, rounding=False, backend=backend, @@ -417,7 +417,7 @@ def test_output_is_tree(minimal_input_data, backend, xnp): main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module": {"some_func": None}}}, rounding=False, backend=backend, @@ -450,7 +450,7 @@ def test_params_target_is_allowed(minimal_input_data): main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"some_param": None, "module": {"some_func": None}}}, rounding=False, backend="numpy", @@ -482,7 +482,7 @@ def b(a: int) -> int: main_target="results__tree", policy_environment=policy_environment, input_data={"tree": minimal_input_data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"b": None}}, rounding=False, backend=backend, @@ -501,7 +501,6 @@ def test_partial_params_to_functions(xnp, dnp, backend): "some_param": SOME_INT_PARAM.value, }, num_segments=1, - evaluation_date=datetime.date(2024, 1, 1), dnp=dnp, rounding=False, xnp=xnp, @@ -518,7 +517,6 @@ def test_partial_params_to_functions_removes_argument(xnp, dnp, backend): "some_param": SOME_INT_PARAM.value, }, num_segments=1, - evaluation_date=datetime.date(2024, 1, 1), rounding=False, xnp=xnp, dnp=dnp, @@ -555,7 +553,7 @@ def test_user_provided_aggregate_by_group_specs(backend): main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"betrag_m_fam": None}}}, rounding=False, backend=backend, @@ -599,7 +597,7 @@ def betrag_m_double_fam(betrag_m_double: float, fam_id: int) -> float: main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, rounding=False, backend=backend, @@ -649,7 +647,7 @@ def max_betrag_double_m_fam(betrag_double_m: float, fam_id: int) -> float: main_target="results__df_with_nested_columns", policy_environment=policy_environment, input_data={"tree": data}, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, rounding=False, backend=backend, @@ -736,7 +734,7 @@ def source() -> FloatColumn: main_target="results__df_with_nested_columns", input_data={"tree": minimal_input_data_shared_fam}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": target_tree}, rounding=False, backend=backend, @@ -784,6 +782,9 @@ def test_policy_environment_with_params_and_scalars_is_processed(xnp, dnp, backe "some_float_scalar": 2.0, "some_bool_scalar": True, "some_param_function_taking_scalar": 4.0, + "evaluation_year": 2024, + "evaluation_month": 1, + "evaluation_day": 1, } assert actual == expected @@ -851,7 +852,7 @@ def test_can_override_ttsim_objects_with_data( main_target="results__tree", input_data={"tree": {**minimal_input_data, **overriding_data}}, policy_environment=nested_policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": tt_targets__tree}, include_warn_nodes=False, include_fail_nodes=False, diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index 55f6665f8e..c7b6c3acbb 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -89,7 +89,7 @@ def test_template_all_outputs_no_inputs(backend): }, }, rounding=True, - date_str="2025-01-01", + evaluation_date_str="2025-01-01", backend=backend, ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} @@ -116,7 +116,7 @@ def test_template_all_outputs_with_inputs(backend, xnp): }, }, rounding=True, - date_str="2025-01-01", + evaluation_date_str="2025-01-01", backend=backend, ) assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} @@ -135,7 +135,7 @@ def test_template_output_y_no_inputs(backend): }, }, rounding=True, - date_str="2025-01-01", + evaluation_date_str="2025-01-01", backend=backend, ) assert actual == {"a": {"inp2": "FloatColumn"}} @@ -163,7 +163,7 @@ def test_template_output_x_with_inputs(backend, xnp): }, }, rounding=True, - date_str="2025-01-01", + evaluation_date_str="2025-01-01", backend=backend, ) assert actual == {"inp1": "IntColumn"} diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py index 3115d84ee8..0b930cad6d 100644 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ b/tests/ttsim/interface_dag_elements/test_warnings.py @@ -4,10 +4,12 @@ import warnings import pandas as pd +import pytest from ttsim import main -from ttsim.interface_dag_elements.warn_if import FunctionsAndDataColumnsOverlapWarning +from ttsim.interface_dag_elements import MainTarget from ttsim.tt_dag_elements.column_objects_param_function import policy_function +from ttsim.tt_dag_elements.param_objects import ScalarParam @policy_function() @@ -21,8 +23,7 @@ def another_func(some_func: int) -> int: def test_warn_if_functions_and_data_columns_overlap(backend): - with warnings.catch_warnings(record=True) as w: - warnings.simplefilter("always") + with pytest.warns(match="Your data provides the column:"): main( main_target="warn_if__functions_and_data_columns_overlap", input_data={ @@ -36,23 +37,16 @@ def test_warn_if_functions_and_data_columns_overlap(backend): "some_target": another_func, }, tt_targets={"tree": {"some_target": None}}, - date=datetime.date(2025, 1, 1), + evaluation_date=datetime.date(2025, 1, 1), rounding=False, include_fail_nodes=False, backend=backend, ) - # Check that we got exactly one warning - assert len(w) == 1 - # Check that it's the right type of warning - assert w[0].category.__name__ == "FunctionsAndDataColumnsOverlapWarning" def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend): - with warnings.catch_warnings(): - warnings.filterwarnings( - "error", - category=FunctionsAndDataColumnsOverlapWarning, - ) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") main( main_target="warn_if__functions_and_data_columns_overlap", input_data={ @@ -63,8 +57,70 @@ def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend) }, policy_environment={"some_func": some_func}, tt_targets={"tree": {"some_func": None}}, - date=datetime.date(2025, 1, 1), + policy_date=datetime.date(2025, 1, 1), rounding=False, include_fail_nodes=False, backend=backend, ) + assert not w, f"Expected no warning, but got at least: {w[0].message}" + + +def test_warn_if_evaluation_date_set_in_multiple_places(backend): + policy_environment = { + "policy_year": ScalarParam(value=2025), + "policy_month": ScalarParam(value=1), + "policy_day": ScalarParam(value=1), + "evaluation_year": ScalarParam(value=2025), + "evaluation_month": ScalarParam(value=1), + "evaluation_day": ScalarParam(value=1), + "some_func": some_func, + "some_target": another_func, + } + with pytest.warns(match="You have specified the evaluation date in more than one"): + main( + main_target="warn_if__evaluation_date_set_in_multiple_places", + policy_environment=policy_environment, + evaluation_date=datetime.date(2025, 1, 1), + backend=backend, + ) + + +def test_warn_if_evaluation_date_set_in_multiple_places_implicitly_added(backend, xnp): + policy_environment = { + "policy_year": ScalarParam(value=2025), + "policy_month": ScalarParam(value=1), + "policy_day": ScalarParam(value=1), + "evaluation_year": ScalarParam(value=2025), + "evaluation_month": ScalarParam(value=1), + "evaluation_day": ScalarParam(value=1), + "some_func": some_func, + "some_target": another_func, + } + with pytest.warns(match="You have specified the evaluation date in more than one"): + main( + main_target=MainTarget.raw_results.columns, + policy_environment=policy_environment, + evaluation_date=datetime.date(2025, 1, 1), + processed_data={"p_id": xnp.array([0])}, + backend=backend, + ) + + +def test_do_not_need_to_warn_if_evaluation_date_is_set_only_once(backend, xnp): + policy_environment = { + "policy_year": ScalarParam(value=2025), + "policy_month": ScalarParam(value=1), + "policy_day": ScalarParam(value=1), + "some_func": some_func, + "some_target": another_func, + } + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + main( + main_target=MainTarget.raw_results.columns, + policy_environment=policy_environment, + evaluation_date=datetime.date(2025, 1, 1), + processed_data={"p_id": xnp.array([0])}, + backend=backend, + ) + assert not w, f"Expected no warning, but got at least: {w[0].message}" diff --git a/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml b/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml new file mode 100644 index 0000000000..85d92dcf58 --- /dev/null +++ b/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml @@ -0,0 +1,27 @@ +--- +year_from_which_cap_is_applied: + name: + de: Jahr, ab dem steuerlich berücksichtigte Größe des Ackers begrenzt wird + en: Year from which the acre size is capped + description: + de: >- + Jahr, ab dem steuerlich berücksichtigte Größe des Ackers begrenzt wird. + en: Year from which the acre size is capped. + unit: null + reference_period: null + type: scalar + 1900-01-01: + value: 2020 +cap_in_hectares: + name: + de: Größe des berücksichtigten Ackers + en: Acre size, from which the tax is capped + description: + de: >- + Größe des berücksichtigten Ackers. + en: Acre size, from which the tax is capped. + unit: null + reference_period: null + type: scalar + 1900-01-01: + value: 50.0 diff --git a/tests/ttsim/mettsim/property_tax/amount.py b/tests/ttsim/mettsim/property_tax/amount.py index 0938f2d7d6..44d5eaf038 100644 --- a/tests/ttsim/mettsim/property_tax/amount.py +++ b/tests/ttsim/mettsim/property_tax/amount.py @@ -28,13 +28,27 @@ def acre_size_in_hectares() -> float: @policy_function(vectorization_strategy="vectorize") def amount_y( - acre_size_in_hectares: float, + acre_size_in_hectares_after_cap: float, tax_schedule: PiecewisePolynomialParamValue, xnp: ModuleType, ) -> float: """Property tax amount for the standard tax schedule.""" return piecewise_polynomial( - x=acre_size_in_hectares, + x=acre_size_in_hectares_after_cap, parameters=tax_schedule, xnp=xnp, ) + + +@policy_function() +def acre_size_in_hectares_after_cap( + acre_size_in_hectares: float, + cap_in_hectares: float, + year_from_which_cap_is_applied: int, + evaluation_year: int, +) -> float: + """The size of the acre in hectares after the cap is applied.""" + if evaluation_year < year_from_which_cap_is_applied: + return acre_size_in_hectares + else: + return min(acre_size_in_hectares, cap_in_hectares) diff --git a/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml b/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml new file mode 100644 index 0000000000..5c253c31b4 --- /dev/null +++ b/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml @@ -0,0 +1,35 @@ +--- +info: + note: '' + precision_atol: 0.01 + source: '' +inputs: + assumed: {} + provided: + p_id: + - 0 + - 1 + - 2 + property_tax: + acre_size_in_hectares: + - 5 + - 20 + - 200 + evaluation_year: + - 2020 + - 2020 + - 2020 + evaluation_month: + - 1 + - 1 + - 1 + evaluation_day: + - 1 + - 1 + - 1 +outputs: + property_tax: + amount_y: + - 0.0 + - 1000.0 + - 1000.0 diff --git a/tests/ttsim/mettsim_tests/test_mettsim.py b/tests/ttsim/mettsim_tests/test_mettsim.py index ab37923855..4c993fd048 100644 --- a/tests/ttsim/mettsim_tests/test_mettsim.py +++ b/tests/ttsim/mettsim_tests/test_mettsim.py @@ -78,7 +78,7 @@ def test_mettsim(test: PolicyTest, backend: Literal["numpy", "jax"]): def test_mettsim_policy_environment_dag_with_params(): plot_tt_dag( - date_str="2020-01-01", + policy_date_str="2020-01-01", root=METTSIM_ROOT, include_params=True, title="METTSIM Policy Environment DAG with parameters", @@ -88,7 +88,7 @@ def test_mettsim_policy_environment_dag_with_params(): def test_mettsim_policy_environment_dag_without_params(): plot_tt_dag( - date_str="2020-01-01", + policy_date_str="2020-01-01", root=METTSIM_ROOT, include_params=False, title="METTSIM Policy Environment DAG without parameters", @@ -105,7 +105,7 @@ def test_mettsim_policy_environment_is_complete(orig_mettsim_objects, date): """Test that METTSIM's policy environment contains all root nodes of its DAG.""" check_env_completeness( name="METTSIM", - date=date, + policy_date=date, orig_policy_objects=orig_mettsim_objects, ) @@ -118,7 +118,7 @@ def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "ja ): main( main_target="results__tree", - date_str="2020-01-01", + policy_date_str="2020-01-01", input_data=InputData.flat(data), orig_policy_objects={"root": METTSIM_ROOT}, tt_targets={"tree": {"property_tax": {"amount_y": None}}}, diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py index 43d18caedc..e426835e25 100644 --- a/tests/ttsim/test_end_to_end.py +++ b/tests/ttsim/test_end_to_end.py @@ -1,11 +1,19 @@ +from __future__ import annotations + from pathlib import Path -from typing import Literal +from typing import TYPE_CHECKING import dags.tree as dt import pandas as pd import pytest from ttsim import InputData, MainTarget, TTTargets, main +from ttsim.tt_dag_elements.column_objects_param_function import policy_function + +if TYPE_CHECKING: + from types import ModuleType + from typing import Literal + DF_WITH_NESTED_COLUMNS = pd.DataFrame( { @@ -94,7 +102,7 @@ def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): main_target=(MainTarget.results.df_with_mapper), input_data=input_data_arg, tt_targets=TTTargets(tree=TARGETS_TREE), - date_str="2025-01-01", + policy_date_str="2025-01-01", rounding=False, orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend=backend, @@ -110,7 +118,7 @@ def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): def test_can_create_input_template(backend: Literal["numpy", "jax"]): result_template = main( main_target=MainTarget.templates.input_data_dtypes, - date_str="2025-01-01", + policy_date_str="2025-01-01", orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend=backend, tt_targets=TTTargets(tree=TARGETS_TREE), @@ -118,3 +126,76 @@ def test_can_create_input_template(backend: Literal["numpy", "jax"]): flat_result_template = dt.flatten_to_tree_paths(result_template) flat_expected = dt.flatten_to_tree_paths(INPUT_DF_MAPPER) assert flat_result_template.keys() == flat_expected.keys() + + +def test_modify_evaluation_date_after_creating_policy_environment( + backend: Literal["numpy", "jax"], + xnp: ModuleType, +): + policy_environment = main( + main_target=MainTarget.policy_environment, + policy_date_str="2000-01-01", + orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, + backend=backend, + ) + input_data = InputData.tree( + tree={ + "p_id": xnp.array([0, 1, 2]), + "property_tax": { + "acre_size_in_hectares": xnp.array([5, 20, 200]), + }, + } + ) + result = main( + main_target=MainTarget.results.df_with_mapper, + policy_environment=policy_environment, + # acre_size_in_hectares capped starting in 2020 + evaluation_date_str="2020-01-01", + input_data=input_data, + tt_targets=TTTargets( + tree={"property_tax": {"amount_y": "property_tax_amount_y"}} + ), + backend=backend, + ) + expected = pd.DataFrame( + { + "property_tax_amount_y": [0.0, 1000.0, 1000.0], + }, + index=pd.Index([0, 1, 2], name="p_id"), + ) + pd.testing.assert_frame_equal( + expected, result, check_dtype=False, check_index_type=False + ) + + +def test_different_evaluation_dates_across_data_rows( + backend: Literal["numpy", "jax"], xnp: ModuleType +): + @policy_function() + def f(evaluation_year: int) -> int: + return evaluation_year + + result = main( + main_target=MainTarget.results.df_with_nested_columns, + policy_environment={ + "f": f, + }, + input_data=InputData.tree( + tree={ + "p_id": xnp.array([1, 2, 3]), + "evaluation_year": xnp.array([2020, 2021, 2022]), + } + ), + tt_targets=TTTargets(tree={"f": None}), + backend=backend, + ) + + expected = pd.DataFrame( + { + ("f",): [2020, 2021, 2022], + }, + index=pd.Index([1, 2, 3], name="p_id"), + ) + pd.testing.assert_frame_equal( + expected, result, check_dtype=False, check_index_type=False + ) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index a4af429faf..654bbe8e29 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -126,7 +126,7 @@ def test_interface_dag_is_complete() -> None: ) -def test_all_output_names_is_complete() -> None: +def test_main_target_class_is_complete() -> None: # This will keep only one of possibly many InputDependentInterfaceFunctions. Here, # we only care about some function with a leaf name, not the precise content. nodes = { @@ -143,9 +143,9 @@ def test_all_output_names_is_complete() -> None: ), } - all_output_names = set(dt.tree_paths(MainTarget.to_dict())) + main_target_elements = set(dt.tree_paths(MainTarget.to_dict())) - assert nodes == all_output_names + assert nodes == main_target_elements def _replace_idif_with_interface_inputs( @@ -215,7 +215,7 @@ def test_harmonize_inputs_main_args_input(): mapper={"c": "a", "d": "b", "p_id": "p_id"}, ), "tt_targets": TTTargets(tree={"e": "f"}), - "date": "2025-01-01", + "policy_date_str": "2025-01-01", "backend": "numpy", "rounding": True, "orig_policy_objects": OrigPolicyObjects( @@ -229,7 +229,7 @@ def test_harmonize_inputs_main_args_input(): "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, "tt_targets__tree": {"e": "f"}, - "date": "2025-01-01", + "policy_date_str": "2025-01-01", "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, "orig_policy_objects__param_specs": {}, "backend": "numpy", @@ -246,7 +246,7 @@ def test_harmonize_inputs_tree_input(): } }, "tt_targets": {"tree": {"e": "f"}}, - "date": "2025-01-01", + "policy_date_str": "2025-01-01", "backend": "numpy", "rounding": True, "orig_policy_objects": { @@ -260,7 +260,7 @@ def test_harmonize_inputs_tree_input(): "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, "tt_targets__tree": {"e": "f"}, - "date": "2025-01-01", + "policy_date_str": "2025-01-01", "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, "orig_policy_objects__param_specs": {}, "backend": "numpy", diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py index 89c1ef44db..11991f7210 100644 --- a/tests/ttsim/test_plot_dag.py +++ b/tests/ttsim/test_plot_dag.py @@ -237,7 +237,7 @@ def test_plot_full_interface_dag(include_fail_and_warn_nodes): def test_node_selector(node_selector, expected_nodes): environment = main( main_target="policy_environment", - date_str="2025-01-01", + policy_date_str="2025-01-01", orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, backend="numpy", ) diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py index 411d1f2408..42feb586c8 100644 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ b/tests/ttsim/tt_dag_elements/test_rounding.py @@ -114,7 +114,7 @@ def test_func(x): main_target="results__tree", input_data={"tree": input_data__tree}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"namespace": {"test_func": None}}}, rounding=True, include_fail_nodes=False, @@ -152,7 +152,7 @@ def test_func_m(x: float) -> float: main_target="results__tree", input_data={"tree": data}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"test_func_y": None}}, rounding=True, include_fail_nodes=False, @@ -194,7 +194,7 @@ def test_func(x): main_target="results__tree", input_data={"tree": data}, policy_environment=policy_environment, - date=datetime.date(2024, 1, 1), + evaluation_date=datetime.date(2024, 1, 1), tt_targets={"tree": {"test_func": None}}, include_fail_nodes=False, include_warn_nodes=False, diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py index 09403caec8..00b700ec37 100644 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -382,7 +382,7 @@ def test_disallowed_operation_wrapper(func): orig=column_objects_and_param_functions( root=Path(__file__).parent.parent / "mettsim" ), - date=datetime.date(year=year, month=1, day=1), + policy_date=datetime.date(year=year, month=1, day=1), ), ).items() if not isinstance( From cd1354bf2d5b90b4b47cd4a92232d41b6c060e00 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Jul 2025 09:49:02 +0200 Subject: [PATCH 082/109] Use monthly interval for dependabot. --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 931cdd022f..952971ce49 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,7 +4,7 @@ updates: - package-ecosystem: github-actions directory: / schedule: - interval: weekly + interval: monthly groups: github-actions: patterns: From 43279825e47409637e75a6b2ccc9f7214b9dc25f Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 22 Jul 2025 11:51:42 +0200 Subject: [PATCH 083/109] Vorjahr input names and their namespaces (#1040) ### What problem do you want to solve? This PR gets the input names (+docstrings) of "vorjahr" and similar inputs straight and puts them in the correct namespaces. --- .../calculating_elterngeld.ipynb | 20 ++--- src/_gettsim/arbeitslosengeld_2/inputs.py | 2 +- .../inputs.py" | 5 -- .../sonstige/rente/inputs.py" | 9 --- src/_gettsim/elterngeld/einkommen.py | 10 +-- src/_gettsim/elterngeld/elterngeld.py | 12 +-- src/_gettsim/elterngeld/inputs.py | 16 +++- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 77 ++++++++----------- src/_gettsim/erziehungsgeld/inputs.py | 11 +++ .../arbeitslosen/arbeitslosengeld.py | 67 ++++++++-------- .../sozialversicherung/arbeitslosen/inputs.py | 10 +++ .../rente/grundrente/grundrente.py | 44 +++++++---- .../rente/grundrente/inputs.py | 41 ++++++++++ .../elterngeld/2017-01-01/hh_id_2.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_1.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_2.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_3.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_4.yaml | 2 +- .../elterngeld/2018-01-01/hh_id_6.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_1.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_3.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_5.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_6.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_7.yaml | 2 +- .../elterngeld/2019-01-01/hh_id_8.yaml | 2 +- .../2024-01-01/income_during_elterngeld.yaml | 2 +- .../2024-01-01/maximum_elterngeld.yaml | 2 +- .../2024-01-01/minimum_elterngeld.yaml | 2 +- .../2024-01-01/net_income_approximation.yaml | 2 +- .../net_income_before_birth_1000.yaml | 2 +- .../net_income_before_birth_790.yaml | 2 +- .../2024-01-01/replacement_rate_decrease.yaml | 2 +- .../2024-04-01/taxable_income_low.yaml | 2 +- .../2024-04-01/taxable_income_too_high.yaml | 2 +- .../alleinerz_one_child_budgetsatz.yaml | 14 ++-- ...inerz_one_child_regelsatz_high_income.yaml | 14 ++-- ...einerz_one_child_regelsatz_low_income.yaml | 14 ++-- ...ried_one_child_budgetsatz_high_income.yaml | 17 ++-- ...rried_one_child_budgetsatz_low_income.yaml | 17 ++-- .../married_one_child_regelsatz.yaml | 17 ++-- ..._budgetsatz_and_regelsatz_high_income.yaml | 18 ++--- ...n_budgetsatz_and_regelsatz_low_income.yaml | 18 ++--- .../2007-01-01/born_after_abolishment.yaml | 14 ++-- ..._budgetsatz_and_regelsatz_high_income.yaml | 18 ++--- ...n_budgetsatz_and_regelsatz_low_income.yaml | 18 ++--- .../2019-01-01/hh_id_1.yaml | 2 +- .../2019-01-01/hh_id_2.yaml | 2 +- .../2019-01-01/hh_id_3.yaml | 2 +- .../2019-01-01/hh_id_4.yaml | 2 +- .../2019-01-01/hh_id_5.yaml | 2 +- .../2019-01-01/hh_id_6.yaml | 2 +- .../2019-01-01/hh_id_7.yaml | 2 +- .../2019-01-01/hh_id_8.yaml | 2 +- ...ne_unterschied_entgeltpunkte_ost_west.yaml | 2 +- .../2025-01-01/wohnort_ost_irrelevant.yaml | 2 +- .../arbeitslosengeld/2010-01-01/hh_id_6.yaml | 11 +-- .../arbeitslosengeld/2011-01-01/hh_id_7.yaml | 7 +- .../arbeitslosengeld/2019-01-01/hh_id_1.yaml | 9 +-- .../arbeitslosengeld/2019-01-01/hh_id_2.yaml | 9 +-- .../arbeitslosengeld/2019-01-01/hh_id_3.yaml | 9 +-- .../arbeitslosengeld/2019-01-01/hh_id_4.yaml | 9 +-- .../2025-01-01/bemessungsgrundlage.yaml | 42 ++++++++++ .../rente/grundrente/2021-07-01/hh_id_1.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_10.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_11.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_12.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_2.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_3.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_4.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_5.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_6.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_7.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_8.yaml | 25 +++--- .../rente/grundrente/2021-07-01/hh_id_9.yaml | 25 +++--- .../grundrente/2021-07-01/married_couple.yaml | 35 ++++----- 75 files changed, 482 insertions(+), 514 deletions(-) create mode 100644 src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2025-01-01/bemessungsgrundlage.yaml diff --git a/outdated_docs/how-to-guides/calculating_elterngeld.ipynb b/outdated_docs/how-to-guides/calculating_elterngeld.ipynb index 4bc231e169..f2f50ccf2b 100644 --- a/outdated_docs/how-to-guides/calculating_elterngeld.ipynb +++ b/outdated_docs/how-to-guides/calculating_elterngeld.ipynb @@ -14,10 +14,10 @@ "\n", "In principle, one can compute Elterngeld in three steps:\n", "1. Compute the average monthly gross income before birth in the data.\n", - "2. Call GETTSIM with the target `elterngeld__nettoeinkommen_approximation_m` using the policy\n", + "2. Call GETTSIM with the target `elterngeld__mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m` using the policy\n", " environment of the year **before** the child was born.\n", "3. Call GETTSIM with the target `elterngeld__betrag_m` using the outcome of step 2 as the input\n", - " for `elterngeld__nettoeinkommen_vorjahr_m` and the policy environment of the year the\n", + " for `elterngeld__mean_nettoeinkommen_in_12_monaten_vor_geburt_m` and the policy environment of the year the\n", " child was born.\n", "\n", "In the following, we will explain some more details." @@ -114,8 +114,8 @@ "### Step 2: Approximate net wage before birth\n", "\n", "GETTSIM provides an easy way to compute the relevant net wage\n", - "`elterngeld__nettoeinkommen_vorjahr_m` based on step 1 using the target\n", - "`elterngeld__nettoeinkommen_approximation_m`.\n", + "`elterngeld__mean_nettoeinkommen_in_12_monaten_vor_geburt_m` based on step 1 using the target\n", + "`elterngeld__mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m`.\n", "\n", "We use the policy environment of January 1st of the year before the child was born (§2e\n", "Abs. 1 S. 2 BEEG). Note that this is correct regardless of the point in time when the\n", @@ -135,7 +135,7 @@ "net_wage_approximation = compute_taxes_and_transfers(\n", " data=data_before_birth,\n", " environment=environment_2023,\n", - " targets=[\"elterngeld__nettoeinkommen_approximation_m\"],\n", + " targets=[\"elterngeld__mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m\"],\n", ")\n", "\n", "net_wage_approximation" @@ -184,7 +184,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then, we add `elterngeld__nettoeinkommen_vorjahr_m` to the data based on step 2." + "Then, we add `elterngeld__mean_nettoeinkommen_in_12_monaten_vor_geburt_m` to the data based on step 2." ] }, { @@ -194,9 +194,11 @@ "outputs": [], "source": [ "# Add net wage approximation\n", - "data_after_birth[\"elterngeld__nettoeinkommen_vorjahr_m\"] = net_wage_approximation[\n", - " \"elterngeld__nettoeinkommen_approximation_m\"\n", - "]" + "data_after_birth[\"elterngeld__mean_nettoeinkommen_in_12_monaten_vor_geburt_m\"] = (\n", + " net_wage_approximation[\n", + " \"elterngeld__mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m\"\n", + " ]\n", + ")" ] }, { diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index e331247cdb..bf33d757de 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -7,7 +7,7 @@ @policy_input(start_date="2023-01-01") def bezug_im_vorjahr() -> bool: - """Whether the person received Arbeitslosengeld 2 / Bürgergeld in the previous year.""" + """Person received Arbeitslosengeld 2 / Bürgergeld in the last 12 months.""" # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" index 85f3ec3993..04870b4412 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" @@ -8,8 +8,3 @@ @policy_input() def bruttolohn_m() -> float: """Monthly wage.""" - - -@policy_input() -def bruttolohn_vorjahr_m() -> float: - """Monthly wage of previous year.""" diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" index 6054433b7f..514d83cef8 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" @@ -14,15 +14,6 @@ def alle_weiteren_m() -> float: """ -@policy_input(start_date="2021-01-01") -def gesamtbetrag_vorjahr_m() -> float: - """Income from private and public pensions in the previous year. - - GETTSIM can calculate this input based on the data of the previous year using the - target `("einkommensteuer", "einkünfte", "sonstige", "betrag_m")`. - """ - - @policy_input() def sonstige_private_vorsorge_m() -> float: """Monthly payout from private pensions without tax-favored contributions. diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index 661783ac5d..e728d5cf56 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -27,13 +27,13 @@ def anzurechnendes_nettoeinkommen_m( rounding_spec=RoundingSpec(base=2, direction="down", reference="§ 2 (2) BEEG"), ) def lohnersatzanteil_einkommen_untere_grenze( - nettoeinkommen_vorjahr_m: float, + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: float, nettoeinkommensstufen_für_lohnersatzrate: dict[str, float], ) -> float: """Lower threshold for replacement rate adjustment minus net income.""" return ( nettoeinkommensstufen_für_lohnersatzrate["lower_threshold"] - - nettoeinkommen_vorjahr_m + - mean_nettoeinkommen_in_12_monaten_vor_geburt_m ) @@ -42,12 +42,12 @@ def lohnersatzanteil_einkommen_untere_grenze( rounding_spec=RoundingSpec(base=2, direction="down", reference="§ 2 (2) BEEG"), ) def lohnersatzanteil_einkommen_obere_grenze( - nettoeinkommen_vorjahr_m: float, + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: float, nettoeinkommensstufen_für_lohnersatzrate: dict[str, float], ) -> float: """Net income minus upper threshold for replacement rate adjustment.""" return ( - nettoeinkommen_vorjahr_m + mean_nettoeinkommen_in_12_monaten_vor_geburt_m - nettoeinkommensstufen_für_lohnersatzrate["upper_threshold"] ) @@ -102,7 +102,7 @@ def einkommen_vorjahr_unter_bezugsgrenze_ohne_unterscheidung_single_paar( start_date="2012-09-18", rounding_spec=RoundingSpec(base=0.01, direction="down"), ) -def nettoeinkommen_approximation_m( +def mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m: float, lohnsteuer__betrag_m: float, lohnsteuer__betrag_soli_m: float, diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 0c95c563d4..2f880e7e72 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -85,7 +85,7 @@ def betrag_m( @policy_function(start_date="2007-01-01") def basisbetrag_m( - nettoeinkommen_vorjahr_m: float, + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: float, lohnersatzanteil: float, anzurechnendes_nettoeinkommen_m: float, max_zu_berücksichtigendes_einkommen: float, @@ -96,7 +96,7 @@ def basisbetrag_m( """ berücksichtigtes_einkommen = min( - nettoeinkommen_vorjahr_m, + mean_nettoeinkommen_in_12_monaten_vor_geburt_m, max_zu_berücksichtigendes_einkommen, ) return ( @@ -212,7 +212,7 @@ def bezugsmonate_unter_grenze_fg( @policy_function(start_date="2011-01-01") def lohnersatzanteil( - nettoeinkommen_vorjahr_m: float, + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: float, lohnersatzanteil_einkommen_untere_grenze: float, lohnersatzanteil_einkommen_obere_grenze: float, einkommensschritte_korrektur: float, @@ -229,9 +229,9 @@ def lohnersatzanteil( """ # Higher replacement rate if considered income is below a threshold if ( - nettoeinkommen_vorjahr_m + mean_nettoeinkommen_in_12_monaten_vor_geburt_m < nettoeinkommensstufen_für_lohnersatzrate["lower_threshold"] - and nettoeinkommen_vorjahr_m > 0 + and mean_nettoeinkommen_in_12_monaten_vor_geburt_m > 0 ): out = satz + ( lohnersatzanteil_einkommen_untere_grenze @@ -240,7 +240,7 @@ def lohnersatzanteil( ) # Lower replacement rate if considered income is above a threshold elif ( - nettoeinkommen_vorjahr_m + mean_nettoeinkommen_in_12_monaten_vor_geburt_m > nettoeinkommensstufen_für_lohnersatzrate["upper_threshold"] ): # Replacement rate is only lowered up to a specific value diff --git a/src/_gettsim/elterngeld/inputs.py b/src/_gettsim/elterngeld/inputs.py index bd981139e3..53ef29ef92 100644 --- a/src/_gettsim/elterngeld/inputs.py +++ b/src/_gettsim/elterngeld/inputs.py @@ -16,10 +16,20 @@ def claimed() -> bool: @policy_input() -def nettoeinkommen_vorjahr_m() -> float: - """Net wage in the 12 months before birth of youngest child.""" +def mean_nettoeinkommen_in_12_monaten_vor_geburt_m() -> float: + """Mean net wage in the 12 months before birth of youngest child. + + To compute this value using GETTSIM set `('elterngeld', + 'mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m')` as the TT target and + use input data from the last 12 months before the birth of the youngest child. + """ @policy_input() def zu_versteuerndes_einkommen_vorjahr_y_sn() -> float: - """Taxable income in the calendar year prior to the youngest child's birth year.""" + """Taxable income in the calendar year prior to the youngest child's birth year. + + To compute this value using GETTSIM set `('einkommensteuer', + 'zu_versteuerndes_einkommen_y_sn')` as the TT target and use input data from the + calendar year prior to the youngest child's birth year. + """ diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 74d089e62e..8b264fdc7b 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -99,7 +99,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> NotImplementedError: ) def anspruchshöhe_kind_mit_budgetsatz_m( ist_leistungsbegründendes_kind: bool, - abzug_durch_einkommen_m: float, + abzug_durch_einkommen_m_fg: float, basisbetrag_m: float, ) -> float: """Parental leave benefit (Erziehungsgeld) on child level. @@ -107,32 +107,26 @@ def anspruchshöhe_kind_mit_budgetsatz_m( For the calculation, the relevant income, the age of the youngest child, the income threshold and the eligibility for erziehungsgeld is needed. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 + Legal reference: BGBl I. v. 17.02.2004 """ if ist_leistungsbegründendes_kind: - out = max( - basisbetrag_m - abzug_durch_einkommen_m, - 0.0, - ) + return max(basisbetrag_m - abzug_durch_einkommen_m_fg, 0.0) else: - out = 0.0 - - return out + return 0.0 @policy_function(start_date="2004-01-01", end_date="2008-12-31") def basisbetrag_m( budgetsatz: bool, - anzurechnendes_einkommen_y: float, - einkommensgrenze_y: float, + anzurechnendes_einkommen_y_fg: float, + einkommensgrenze_y_fg: float, alter_monate: int, altersgrenze_für_reduziertes_einkommenslimit_kind_monate: int, satz: dict[str, float], ) -> float: """Parental leave benefit (Erziehungsgeld) without means-test on child level.""" - # no benefit if income is above threshold and child is younger than threshold if ( - anzurechnendes_einkommen_y > einkommensgrenze_y + anzurechnendes_einkommen_y_fg > einkommensgrenze_y_fg and alter_monate < altersgrenze_für_reduziertes_einkommenslimit_kind_monate ): out = 0.0 @@ -145,22 +139,22 @@ def basisbetrag_m( @policy_function(start_date="2004-01-01", end_date="2008-12-31") -def abzug_durch_einkommen_m( - anzurechnendes_einkommen_m: float, - einkommensgrenze_m: float, +def abzug_durch_einkommen_m_fg( + anzurechnendes_einkommen_m_fg: float, + einkommensgrenze_m_fg: float, alter_monate: int, altersgrenze_für_reduziertes_einkommenslimit_kind_monate: float, abschlagsfaktor: float, ) -> float: """Reduction of parental leave benefits (means-test). - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) + Legal reference: BGBl I. v. 17.02.2004 S.209 """ if ( - anzurechnendes_einkommen_m > einkommensgrenze_m + anzurechnendes_einkommen_m_fg > einkommensgrenze_m_fg and alter_monate >= altersgrenze_für_reduziertes_einkommenslimit_kind_monate ): - out = anzurechnendes_einkommen_m * abschlagsfaktor + out = anzurechnendes_einkommen_m_fg * abschlagsfaktor else: out = 0.0 return out @@ -180,7 +174,7 @@ def _leistungsbegründendes_kind_vor_abschaffung( ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on child level. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) + Legal reference: BGBl I. v. 17.02.2004 S.207 """ if budgetsatz: out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_budgetsatz @@ -216,7 +210,7 @@ def _leistungsbegründendes_kind_nach_abschaffung( Abolished for children born after the cut-off date. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.207) + Legal reference: BGBl I. v. 17.02.2004 S.207 """ if budgetsatz and geburtsjahr <= abolishment_cohort: out = p_id_empfänger >= 0 and alter_monate <= maximales_kindsalter_budgetsatz @@ -238,7 +232,7 @@ def grundsätzlich_anspruchsberechtigt( ) -> bool: """Eligibility for parental leave benefit (Erziehungsgeld) on parental level. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.207) + Legal reference: BGBl I. v. 17.02.2004 S.207 """ return leistungsbegründende_kinder_fg and ( arbeitsstunden_w <= maximale_wochenarbeitszeit @@ -246,33 +240,30 @@ def grundsätzlich_anspruchsberechtigt( @policy_function(start_date="2004-01-01", end_date="2008-12-31") -def anzurechnendes_einkommen_y( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg: float, - familie__anzahl_erwachsene_fg: int, +def anzurechnendes_einkommen_y_fg( + bruttolohn_vorjahr_nach_abzug_werbungskosten_y_fg: float, ist_leistungsbegründendes_kind: bool, pauschaler_abzug_vom_einkommen: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag: float, ) -> float: """Income relevant for means testing for parental leave benefit (Erziehungsgeld). - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (p.209) + Legal reference: BGBl I. v. 17.02.2004 S.209 There is special rule for "Beamte, Soldaten und Richter" which is not implemented yet. """ if ist_leistungsbegründendes_kind: out = ( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_y_fg - - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag - * familie__anzahl_erwachsene_fg - ) * pauschaler_abzug_vom_einkommen + bruttolohn_vorjahr_nach_abzug_werbungskosten_y_fg + * pauschaler_abzug_vom_einkommen + ) else: out = 0.0 return out @policy_function(start_date="2004-01-01", end_date="2008-12-31") -def einkommensgrenze_y( +def einkommensgrenze_y_fg( einkommensgrenze_ohne_geschwisterbonus: float, familie__anzahl_kinder_fg: float, ist_leistungsbegründendes_kind: bool, @@ -280,15 +271,15 @@ def einkommensgrenze_y( ) -> float: """Income threshold for parental leave benefit (Erziehungsgeld). - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + Legal reference: BGBl I. v. 17.02.2004 S.208 """ - out = ( - einkommensgrenze_ohne_geschwisterbonus - + (familie__anzahl_kinder_fg - 1) * aufschlag_einkommen - ) - if not ist_leistungsbegründendes_kind: - out = 0.0 - return out + if ist_leistungsbegründendes_kind: + return ( + einkommensgrenze_ohne_geschwisterbonus + + (familie__anzahl_kinder_fg - 1) * aufschlag_einkommen + ) + else: + return 0.0 @policy_function(start_date="2004-01-01", end_date="2008-12-31") @@ -301,7 +292,7 @@ def einkommensgrenze_ohne_geschwisterbonus( """Income threshold for parental leave benefit (Erziehungsgeld) before adding the bonus for additional children. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + Legal reference: BGBl I. v. 17.02.2004 S.208 """ if alter_monate < altersgrenze_für_reduziertes_einkommenslimit_kind_monate: return einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze @@ -317,7 +308,7 @@ def einkommensgrenze_ohne_geschwisterbonus_kind_jünger_als_reduzierungsgrenze( ) -> float: """Base income threshold for parents of children younger than the age threshold. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + Legal reference: BGBl I. v. 17.02.2004 S.208 """ if budgetsatz and familie__alleinerziehend_fg: return einkommensgrenze.regulär_alleinerziehend["budgetsatz"] @@ -337,7 +328,7 @@ def einkommensgrenze_ohne_geschwisterbonus_kind_älter_als_reduzierungsgrenze( ) -> float: """Base income threshold for parents of children older than age threshold. - Legal reference: Bundesgesetzblatt Jahrgang 2004 Teil I Nr. 6 (pp.208) + Legal reference: BGBl I. v. 17.02.2004 S.208 """ if budgetsatz and familie__alleinerziehend_fg: return einkommensgrenze.reduziert_alleinerziehend["budgetsatz"] diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py index f9612184c7..26e2591839 100644 --- a/src/_gettsim/erziehungsgeld/inputs.py +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -5,6 +5,17 @@ from ttsim.tt_dag_elements import FKType, policy_input +@policy_input(end_date="2008-12-31") +def bruttolohn_vorjahr_nach_abzug_werbungskosten_y() -> float: + """Gross earnings of the previous calendar year minus Werbungskosten. + + To compute this value using GETTSIM set `('einkommensteuer', 'einkünfte', + 'aus_nichtselbstständiger_arbeit', 'einnahmen_nach_abzug_werbungskosten_y')` as the + TT target and use input data from the calendar year prior to the youngest child's + birth year. + """ + + @policy_input(end_date="2008-12-31") def budgetsatz() -> bool: """Applied for "Budgetsatz" of parental leave benefit.""" diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index ee600f52c4..2947f0e3b7 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -7,7 +7,6 @@ from ttsim.tt_dag_elements import ( get_consecutive_int_lookup_table_param_value, param_function, - piecewise_polynomial, policy_function, ) @@ -16,7 +15,6 @@ from ttsim.tt_dag_elements import ( ConsecutiveIntLookupTableParamValue, - PiecewisePolynomialParamValue, ) @@ -30,7 +28,7 @@ def betrag_m_not_implemented() -> float: def betrag_m( einkommensteuer__anzahl_kinderfreibeträge: int, grundsätzlich_anspruchsberechtigt: bool, - einkommen_vorjahr_proxy_m: float, + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: float, satz: dict[str, float], ) -> float: """Calculate individual unemployment benefit.""" @@ -40,7 +38,10 @@ def betrag_m( arbeitsl_geld_satz = satz["erhöht"] if grundsätzlich_anspruchsberechtigt: - out = einkommen_vorjahr_proxy_m * arbeitsl_geld_satz + out = ( + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m + * arbeitsl_geld_satz + ) else: out = 0.0 @@ -113,43 +114,37 @@ def grundsätzlich_anspruchsberechtigt( @policy_function() -def einkommen_vorjahr_proxy_m( - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, +def mean_nettoeinkommen_für_bemessungsgrundlage_bei_arbeitslosigkeit_y( + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_y: float, + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y: float, sozialversicherungspauschale: float, - einkommensteuer__parameter_einkommensteuertarif: PiecewisePolynomialParamValue, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag: float, - solidaritätszuschlag__parameter_solidaritätszuschlag: PiecewisePolynomialParamValue, - xnp: ModuleType, + lohnsteuer__betrag_y: float, + lohnsteuer__betrag_soli_y: float, ) -> float: - """Approximate last years income for unemployment benefit.""" - # Relevant wage is capped at the contribution thresholds - max_wage = min( - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m, - sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m, - ) + """Approximate the income relevant for calculating unemployment insurance benefits. - # We need to deduct lump-sum amounts for contributions, taxes and soli - prox_ssc = sozialversicherungspauschale * max_wage - - # Fictive taxes (Lohnsteuer) are approximated by applying the wage to the tax tariff - # Caution: currently wrong calculation due to - # 12 * max_wage - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag not being - # the same as zu versteuerndes einkommen - # waiting for PR Lohnsteuer #150 to be merged to correct this problem - prox_tax = piecewise_polynomial( - x=12 * max_wage - - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__arbeitnehmerpauschbetrag, - parameters=einkommensteuer__parameter_einkommensteuertarif, - xnp=xnp, + This target can be used as an input in another GETTSIM call to compute + Arbeitslosengeld. In principle, the relevant gross wage for this target is the sum + of the gross wages in the 12 months before unemployment. For most datasets, except + those with monthly income date (IAB, DRV data), the best approximation will likely + be the gross wage in the calendar year before unemployment. + """ + berücksichtigungsfähige_einnahmen = min( + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_y, + sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_y, + ) + pauschalierte_sozialversicherungsbeiträge = ( + sozialversicherungspauschale * berücksichtigungsfähige_einnahmen ) - prox_soli = piecewise_polynomial( - x=prox_tax, - parameters=solidaritätszuschlag__parameter_solidaritätszuschlag, - xnp=xnp, + return max( + ( + berücksichtigungsfähige_einnahmen + - pauschalierte_sozialversicherungsbeiträge + - lohnsteuer__betrag_y + - lohnsteuer__betrag_soli_y + ), + 0.0, ) - out = max_wage - prox_ssc - prox_tax / 12 - prox_soli / 12 - return max(out, 0.0) @param_function(start_date="1997-03-24") diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index e12086ce85..c50a6125e2 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -5,6 +5,16 @@ from ttsim.tt_dag_elements import policy_input +@policy_input() +def mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m() -> float: + """Mean net wage in the 12 months before unemployment. + + To compute this value using GETTSIM set `('arbeitslosengeld', + 'mean_nettoeinkommen_für_bemessungsgrundlage_bei_arbeitslosigkeit_y')` as the TT + target and use input data from the 12 months before the unemployment. + """ + + @policy_input() def monate_beitragspflichtig_versichert_in_letzten_30_monaten() -> int: """Number of months of compulsory insurance in the 30 months before claiming unemployment.""" diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index e20d5bb3cf..e906801426 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -29,11 +29,11 @@ def betrag_m(basisbetrag_m: float, anzurechnendes_einkommen_m: float) -> float: @policy_function(start_date="2021-01-01") def einkommen_m( - einkommensteuer__einkünfte__sonstige__rente__gesamtbetrag_vorjahr_m: float, - einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m: float, - einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m: float, - einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m: float, - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m: float, + gesamteinnahmen_aus_renten_vorjahr_m: float, + bruttolohn_vorjahr_m: float, + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_m: float, + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_m: float, + einnahmen_aus_kapitalvermögen_vorvorjahr_m: float, ) -> float: """Income relevant for Grundrentenzuschlag before deductions. @@ -45,9 +45,6 @@ def einkommen_m( to be able to use administrative data on this income for the calculation: "It can be assumed that the tax office regularly has the data two years after the end of the assessment period, which can be retrieved from the pension insurance." - - Warning: Currently, earnings of dependent work and pensions are based on the last - year, and other income on the current year instead of the year two years ago to - avoid the need for several new input variables. - Warning: Freibeträge for income are currently not considered as `freibeträge_y` depends on pension income through `sozialversicherung__kranken__beitrag__betrag_versicherter_m` -> @@ -57,11 +54,11 @@ def einkommen_m( """ # Sum income over different income sources. return ( - einkommensteuer__einkünfte__sonstige__rente__gesamtbetrag_vorjahr_m - + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_vorjahr_m - + einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m # income from self-employment - + einkommensteuer__einkünfte__aus_vermietung_und_verpachtung__betrag_m # rental income - + einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_m + gesamteinnahmen_aus_renten_vorjahr_m + + bruttolohn_vorjahr_m + + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_m + + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_m + + einnahmen_aus_kapitalvermögen_vorvorjahr_m ) @@ -258,3 +255,24 @@ def grundsätzlich_anspruchsberechtigt( ) -> bool: """Has accumulated enough insured years to be eligible.""" return grundrentenzeiten_monate >= berücksichtigte_wartezeit_monate["min"] + + +@policy_function(start_date="2021-01-01") +def gesamteinnahmen_aus_renten_für_einkommensberechnung_im_folgejahr_m( + sozialversicherung__rente__altersrente__betrag_m: float, + sozialversicherung__rente__erwerbsminderung__betrag_m: float, + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m: float, + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m: float, +) -> float: + """Income from private and public pensions in the previous calendar year. + + This target can be used as an input in another GETTSIM call to compute Grundrente. + """ + return ( + sozialversicherung__rente__altersrente__betrag_m + + sozialversicherung__rente__erwerbsminderung__betrag_m + + einkommensteuer__einkünfte__sonstige__rente__geförderte_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__sonstige_private_vorsorge_m + + einkommensteuer__einkünfte__sonstige__rente__betriebliche_altersvorsorge_m + ) diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py index adf11aa4d4..a2fbbb76cf 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py @@ -18,3 +18,44 @@ def grundrentenzeiten_monate() -> int: @policy_input(start_date="2021-01-01") def mean_entgeltpunkte() -> float: """Mean Entgeltpunkte during Bewertungszeiten.""" + + +@policy_input(start_date="2021-01-01") +def gesamteinnahmen_aus_renten_vorjahr_m() -> float: + """Income from private and public pensions in the previous calendar year. + + GETTSIM can calculate this input based on the data of the previous calendar year using the + target `('sozialversicherung', 'rente', 'grundrente', 'gesamteinnahmen_aus_renten_für_einkommensberechnung_im_folgejahr_m')`. + """ + + +@policy_input(start_date="2021-01-01") +def bruttolohn_vorjahr_y() -> float: + """Earnings in the previous calendar year. + + Calculation is based on the 'Einnahmen' definitions of the basic tax law (EStG). + """ + + +@policy_input(start_date="2021-01-01") +def einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y() -> float: + """Earnings from self-employment 2 years before. + + Calculation is based on the 'Einnahmen' definitions of the basic tax law (EStG). + """ + + +@policy_input(start_date="2021-01-01") +def einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y() -> float: + """Earnings from rental income 2 years before. + + Calculation is based on the 'Einnahmen' definitions of the basic tax law (EStG). + """ + + +@policy_input(start_date="2021-01-01") +def einnahmen_aus_kapitalvermögen_vorvorjahr_y() -> float: + """Earnings from capital income 2 years before. + + Calculation is based on the 'Einnahmen' definitions of the basic tax law (EStG). + """ diff --git a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml index d460553963..3deb5ac67b 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2017-01-01/hh_id_2.yaml @@ -29,7 +29,7 @@ inputs: - 0 claimed: - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1800.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 18260.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml index 95352892b7..7d7d7f8fea 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_1.yaml @@ -27,7 +27,7 @@ inputs: - 0 claimed: - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml index 77d309b380..97ac09b657 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_2.yaml @@ -35,7 +35,7 @@ inputs: claimed: - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1800.0 - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml index 2d543367b7..7b2a0180df 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_3.yaml @@ -35,7 +35,7 @@ inputs: claimed: - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 900.0 - 3600.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml index fe0b025e7d..3aad69f3e6 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_4.yaml @@ -35,7 +35,7 @@ inputs: claimed: - false - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 - 3400.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml index d959ef9301..420710da5e 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2018-01-01/hh_id_6.yaml @@ -27,7 +27,7 @@ inputs: - 0 claimed: - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 900.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 7406.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml index b1d629c15d..60b67fe028 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_1.yaml @@ -35,7 +35,7 @@ inputs: claimed: - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml index c1b3736d27..563b8c8992 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_3.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 900.0 - 0.0 - 3400.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml index a2f29b0c36..d95346cd70 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_5.yaml @@ -35,7 +35,7 @@ inputs: claimed: - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 3600.0 - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml index fdf4feaf7d..0359a278c1 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_6.yaml @@ -43,7 +43,7 @@ inputs: - false - false - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 - 0.0 - 900.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml index 20c61e3794..3364da4618 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_7.yaml @@ -43,7 +43,7 @@ inputs: - true - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1800.0 - 1800.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml index 3279e7639b..b06d1e228a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2019-01-01/hh_id_8.yaml @@ -51,7 +51,7 @@ inputs: - false - false - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml index 996a94b8a2..b3de6aa96a 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/income_during_elterngeld.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1000.0 - 0.0 - 3400.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml index a2f29b0c36..d95346cd70 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/maximum_elterngeld.yaml @@ -35,7 +35,7 @@ inputs: claimed: - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 3600.0 - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml index b1d629c15d..60b67fe028 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/minimum_elterngeld.yaml @@ -35,7 +35,7 @@ inputs: claimed: - true - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 0.0 - 0.0 zu_versteuerndes_einkommen_vorjahr_y_sn: diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml index d6d5f3dc61..0d9c6d6f90 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_approximation.yaml @@ -60,6 +60,6 @@ inputs: - false outputs: elterngeld: - nettoeinkommen_approximation_m: + mean_nettoeinkommen_für_bemessungsgrundllage_nach_geburt_m: - 790.0 - 158.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml index f465912f22..f720cd479c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_1000.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1000.0 - 0.0 - 3400.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml index d2dd260981..cd3f8a1ee0 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/net_income_before_birth_790.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 790.0 - 0.0 - 3400.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml index 2cc15ae06b..c88511b707 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-01-01/replacement_rate_decrease.yaml @@ -39,7 +39,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1220.0 - 0.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml index bdc41c9418..4004539a0c 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_low.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2000.0 - 13000.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml index c954351492..bc842579b8 100644 --- a/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml +++ b/src/_gettsim_tests/test_data/elterngeld/2024-04-01/taxable_income_too_high.yaml @@ -43,7 +43,7 @@ inputs: - true - false - false - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2000.0 - 13000.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml index 84a132b9ac..900e5f5347 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_budgetsatz.yaml @@ -24,14 +24,10 @@ inputs: bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1423.33 + - 0.0 budgetsatz: - false - true @@ -79,12 +75,12 @@ outputs: anspruchshöhe_kind_m: - 0.0 - 450.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 12980.8 betrag_m: - 450.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml index 6ae8cdd575..4fbd781a8f 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_high_income.yaml @@ -24,14 +24,10 @@ inputs: bruttolohn_m: - 1400.0 - 0.0 - bruttolohn_vorjahr_m: - - 1700.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1700.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1623.33 + - 0.0 budgetsatz: - false - false @@ -79,12 +75,12 @@ outputs: anspruchshöhe_kind_m: - 0.0 - 235.8 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 14804.8 betrag_m: - 235.8 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml index 4392ff5a5e..ff7bf6f18c 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/alleinerz_one_child_regelsatz_low_income.yaml @@ -24,14 +24,10 @@ inputs: bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1423.33 + - 0.0 budgetsatz: - false - false @@ -79,12 +75,12 @@ outputs: anspruchshöhe_kind_m: - 0.0 - 300.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 12980.8 betrag_m: - 300.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 13500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml index 99a48038a0..dd08f87c25 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_high_income.yaml @@ -29,16 +29,11 @@ inputs: - 1400.0 - 5000.0 - 0.0 - bruttolohn_vorjahr_m: - - 1400.0 - - 5000.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1400.0 - - 5000.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1323.33 + - 4923.33 + - 0.0 budgetsatz: - false - false @@ -99,7 +94,7 @@ outputs: - 0.0 - 0.0 - 0.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 56969.6 @@ -107,7 +102,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml index f180dbcdc7..e5d96774dc 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_budgetsatz_low_income.yaml @@ -29,16 +29,11 @@ inputs: - 1400.0 - 3000.0 - 0.0 - bruttolohn_vorjahr_m: - - 1400.0 - - 3000.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1400.0 - - 3000.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1323.33 + - 2923.33 + - 0.0 budgetsatz: - false - false @@ -99,7 +94,7 @@ outputs: - 0.0 - 0.0 - 0.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 38729.6 @@ -107,7 +102,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 22086 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml index d61de60e8c..83c301e06c 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_one_child_regelsatz.yaml @@ -29,16 +29,11 @@ inputs: - 2500.0 - 2500.0 - 0.0 - bruttolohn_vorjahr_m: - - 2500.0 - - 2500.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 2500.0 - - 2500.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 2423.33 + - 2423.33 + - 0.0 budgetsatz: - false - false @@ -99,7 +94,7 @@ outputs: - 0.0 - 0.0 - 108.4597333 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 44201.6 @@ -107,7 +102,7 @@ outputs: - 108.4597333 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 16500 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index c7afe63743..08a6f357cb 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -34,18 +34,12 @@ inputs: - 1700.0 - 0.0 - 0.0 - bruttolohn_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1400.0 - - 1700.0 + erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1323.33 + - 1623.33 - 0.0 - 0.0 - erziehungsgeld: budgetsatz: - false - false @@ -119,7 +113,7 @@ outputs: - 0.0 - 333.55 - 300.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 26873.6 @@ -129,7 +123,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 19640 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index a7fda1e314..ff711715a2 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2005-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -34,18 +34,12 @@ inputs: - 1300.0 - 0.0 - 0.0 - bruttolohn_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 400.0 - - 1300.0 + erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 323.33 + - 1223.33 - 0.0 - 0.0 - erziehungsgeld: budgetsatz: - false - false @@ -125,7 +119,7 @@ outputs: - 0.0 - 300.0 - 450.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 14105.6 @@ -135,7 +129,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 19640 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml index cea6ea40b1..27086a3ab7 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/born_after_abolishment.yaml @@ -24,14 +24,10 @@ inputs: bruttolohn_m: - 1500.0 - 0.0 - bruttolohn_vorjahr_m: - - 1500.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1500.0 - - 0.0 erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1423.33 + - 0.0 budgetsatz: - false - true @@ -79,12 +75,12 @@ outputs: anspruchshöhe_kind_m: - 0.0 - 0.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0.0 betrag_m: - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0.0 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml index 676c13f47b..17a3fdf37d 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_high_income.yaml @@ -34,18 +34,12 @@ inputs: - 1700.0 - 0.0 - 0.0 - bruttolohn_vorjahr_m: - - 1400.0 - - 1700.0 - - 0.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 1400.0 - - 1700.0 + erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 1323.33 + - 1623.33 - 0.0 - 0.0 - erziehungsgeld: budgetsatz: - false - false @@ -119,7 +113,7 @@ outputs: - 0.0 - 333.55 - 300.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 26873.6 @@ -129,7 +123,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 19640 diff --git a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml index b9b18680ee..517fd825a8 100644 --- a/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml +++ b/src/_gettsim_tests/test_data/erziehungsgeld/2007-01-01/married_two_children_budgetsatz_and_regelsatz_low_income.yaml @@ -34,18 +34,12 @@ inputs: - 1300.0 - 0.0 - 0.0 - bruttolohn_vorjahr_m: - - 400.0 - - 1300.0 - - 0.0 - - 0.0 - elterngeld: - nettoeinkommen_vorjahr_m: - - 400.0 - - 1300.0 + erziehungsgeld: + bruttolohn_vorjahr_nach_abzug_werbungskosten_m: + - 323.33 + - 1223.33 - 0.0 - 0.0 - erziehungsgeld: budgetsatz: - false - false @@ -119,7 +113,7 @@ outputs: - 0.0 - 300.0 - 450.0 - anzurechnendes_einkommen_y: + anzurechnendes_einkommen_y_fg: - 0 - 0 - 14105.6 @@ -129,7 +123,7 @@ outputs: - 0.0 - 0.0 - 0.0 - einkommensgrenze_y: + einkommensgrenze_y_fg: - 0 - 0 - 19640 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml index fb5680af10..c912e1235b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_1.yaml @@ -138,7 +138,7 @@ inputs: - true - true - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 1000.0 - 2000.0 - 3000.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml index bba6b9df20..e834799f0b 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_2.yaml @@ -139,7 +139,7 @@ inputs: - true - true - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 7000.0 - 2500.0 - 2300.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml index 0e2af2e65f..e232f04924 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_3.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2000.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 24750.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml index 617e7f6865..b0baa4f0f5 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_4.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 3000.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 36774.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml index 850b0ad7da..238c622417 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_5.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 4000.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 48798.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml index a37b6c2206..3420d362bd 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_6.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 7000.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 84822.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml index 01840f9b9b..109b522072 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_7.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2500.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 30804.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml index 0ce48e8646..9fa1947833 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2019-01-01/hh_id_8.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2300.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 25962.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml index e96d5d3439..b909fcb905 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2023-07-01/ohne_unterschied_entgeltpunkte_ost_west.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2300.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 25962.0 diff --git a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml index 59c8834790..6b3bdc8a03 100644 --- a/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml +++ b/src/_gettsim_tests/test_data/full_taxes_and_transfers/2025-01-01/wohnort_ost_irrelevant.yaml @@ -67,7 +67,7 @@ inputs: - 0 claimed: - true - nettoeinkommen_vorjahr_m: + mean_nettoeinkommen_in_12_monaten_vor_geburt_m: - 2300.0 zu_versteuerndes_einkommen_vorjahr_y_sn: - 25962.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml index 972c398cfd..de326afdd5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2010-01-01/hh_id_6.yaml @@ -10,6 +10,9 @@ inputs: - true sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 2500.0 + - 0.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 12 - 11 @@ -29,12 +32,6 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 2500.0 - - 0.0 familie: p_id_elternteil_1: - -1 @@ -58,5 +55,5 @@ outputs: sozialversicherung: arbeitslosen: betrag_m: - - 1021.87 + - 1675.0 - 0.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml index cfbfe99f35..4a4ef54966 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2011-01-01/hh_id_7.yaml @@ -9,6 +9,8 @@ inputs: - false sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 2300.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 12 arbeitssuchend: @@ -22,11 +24,6 @@ inputs: - 66 arbeitsstunden_w: - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 2300.0 familie: p_id_elternteil_1: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml index b1210d23aa..7a76c446cc 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_1.yaml @@ -9,6 +9,8 @@ inputs: - false sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 1000.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 12 arbeitssuchend: @@ -22,11 +24,6 @@ inputs: - 30 arbeitsstunden_w: - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 1000.0 familie: p_id_elternteil_1: - -1 @@ -44,4 +41,4 @@ outputs: sozialversicherung: arbeitslosen: betrag_m: - - 465.54 + - 600.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml index 44532e3d45..4702b81b2f 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_2.yaml @@ -9,6 +9,8 @@ inputs: - false sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 2000.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 12 arbeitssuchend: @@ -22,11 +24,6 @@ inputs: - 30 arbeitsstunden_w: - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 2000.0 familie: p_id_elternteil_1: - -1 @@ -44,4 +41,4 @@ outputs: sozialversicherung: arbeitslosen: betrag_m: - - 789.76 + - 1200.0 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml index b5d1fa7fff..e1d2b64681 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_3.yaml @@ -10,6 +10,9 @@ inputs: - false sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 0.0 + - 3000.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 10 - 12 @@ -29,12 +32,6 @@ inputs: arbeitsstunden_w: - 0.0 - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 0.0 - - 3000.0 familie: p_id_elternteil_1: - 4 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml index 63e8dc41b4..fb9a602e0c 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2019-01-01/hh_id_4.yaml @@ -10,6 +10,9 @@ inputs: - true sozialversicherung: arbeitslosen: + mean_nettoeinkommen_in_12_monaten_vor_arbeitslosigkeit_m: + - 4000.0 + - 0.0 monate_beitragspflichtig_versichert_in_letzten_30_monaten: - 12 - 11 @@ -29,12 +32,6 @@ inputs: arbeitsstunden_w: - 20.0 - 0.0 - einkommensteuer: - einkünfte: - aus_nichtselbstständiger_arbeit: - bruttolohn_vorjahr_m: - - 4000.0 - - 0.0 familie: p_id_elternteil_1: - -1 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2025-01-01/bemessungsgrundlage.yaml b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2025-01-01/bemessungsgrundlage.yaml new file mode 100644 index 0000000000..0c7636c539 --- /dev/null +++ b/src/_gettsim_tests/test_data/sozialversicherung/arbeitslosengeld/2025-01-01/bemessungsgrundlage.yaml @@ -0,0 +1,42 @@ +--- +info: + precision_atol: 0.01 + source: Regression test. +inputs: + assumed: + einkommensteuer: + einkünfte: + aus_nichtselbstständiger_arbeit: + bruttolohn_m: + - 3000.0 + lohnsteuer: + steuerklasse: + - 1 + sozialversicherung: + pflege: + beitrag: + hat_kinder: + - false + kindergeld: + ist_leistungsbegründendes_kind: + - false + alter: + - 30 + arbeitsstunden_w: + - 0.0 + familie: + p_id_elternteil_1: + - -1 + p_id_elternteil_2: + - -1 + geburtsjahr: + - 1989 + hh_id: + - 1 + p_id: + - 1 +outputs: + sozialversicherung: + arbeitslosen: + mean_nettoeinkommen_für_bemessungsgrundlage_bei_arbeitslosigkeit_y: + - 25181.24 diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml index cf5af04eb2..74afcebc2a 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_1.yaml @@ -14,24 +14,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -55,6 +40,16 @@ inputs: entgeltpunkte_west: - 14.014 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 420 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml index 29225ce6a3..8800ca9ce5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_10.yaml @@ -13,24 +13,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -54,6 +39,16 @@ inputs: entgeltpunkte_west: - 41.0 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 492 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml index b9e28d2abe..ed8edf475d 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_11.yaml @@ -15,24 +15,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -56,6 +41,16 @@ inputs: entgeltpunkte_west: - 18.5 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 372 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml index eb879da464..7635925084 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_12.yaml @@ -12,24 +12,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -53,6 +38,16 @@ inputs: entgeltpunkte_west: - 0.0 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 0 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml index 6538bb64d5..820a158de5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_2.yaml @@ -14,24 +14,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -55,6 +40,16 @@ inputs: entgeltpunkte_west: - 17.5 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 420 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml index a44a1cc946..fdd67acaf3 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_3.yaml @@ -15,24 +15,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -56,6 +41,16 @@ inputs: entgeltpunkte_west: - 21.0 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 420 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml index 4d0aee435c..fe9d23294b 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_4.yaml @@ -14,24 +14,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -55,6 +40,16 @@ inputs: entgeltpunkte_west: - 28.8 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 480 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml index 8f1928b97c..8323629890 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_5.yaml @@ -14,24 +14,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -55,6 +40,16 @@ inputs: entgeltpunkte_west: - 0.0 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 408 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml index aa79287334..74ea03a013 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_6.yaml @@ -13,24 +13,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 0.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -54,6 +39,16 @@ inputs: entgeltpunkte_west: - 19.2 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 300 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml index 34f481dda1..f0ce271f48 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_7.yaml @@ -13,24 +13,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 1400.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -54,6 +39,16 @@ inputs: entgeltpunkte_west: - 19.2 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 1400.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 300 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml index 8f88720c44..1db15c3566 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_8.yaml @@ -13,24 +13,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 2400.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -54,6 +39,16 @@ inputs: entgeltpunkte_west: - 19.2 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 2400.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 300 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml index 785142ac61..2e9039f4e5 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/hh_id_9.yaml @@ -15,24 +15,9 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - bruttolohn_vorjahr_m: - - 1380.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 familie: p_id_ehepartner: - -1 @@ -56,6 +41,16 @@ inputs: entgeltpunkte_west: - 34.5 grundrente: + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + bruttolohn_vorjahr_m: + - 1380.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 bewertungszeiten_monate: - 552 grundrentenzeiten_monate: diff --git a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml index 7756b538c3..f8c6402c70 100644 --- a/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml +++ b/src/_gettsim_tests/test_data/sozialversicherung/rente/grundrente/2021-07-01/married_couple.yaml @@ -14,30 +14,10 @@ inputs: - 70 einkommensteuer: einkünfte: - aus_kapitalvermögen: - kapitalerträge_y: - - 0.0 - - 0.0 aus_nichtselbstständiger_arbeit: bruttolohn_m: - 0.0 - 0.0 - bruttolohn_vorjahr_m: - - 700.0 - - 700.0 - aus_selbstständiger_arbeit: - betrag_y: - - 0.0 - - 0.0 - aus_vermietung_und_verpachtung: - betrag_y: - - 0.0 - - 0.0 - sonstige: - rente: - gesamtbetrag_vorjahr_m: - - 0.0 - - 0.0 familie: p_id_ehepartner: - 1 @@ -73,12 +53,27 @@ inputs: bewertungszeiten_monate: - 300 - 300 + bruttolohn_vorjahr_m: + - 0.0 + - 0.0 + einnahmen_aus_selbstständiger_arbeit_vorvorjahr_y: + - 0.0 + - 0.0 + einnahmen_aus_vermietung_und_verpachtung_vorvorjahr_y: + - 0.0 + - 0.0 + einnahmen_aus_kapitalvermögen_vorvorjahr_y: + - 0.0 + - 0.0 grundrentenzeiten_monate: - 480 - 480 mean_entgeltpunkte: - 15.0 - 15.0 + gesamteinnahmen_aus_renten_vorjahr_m: + - 0.0 + - 0.0 wohnort_ost_hh: - false - false From 3ef80ca67f125e29adb1d963eb0dc0025fdcd995 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Jul 2025 11:52:18 +0200 Subject: [PATCH 084/109] Update changelog. --- CHANGES.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 67873ee4cc..35bf02155f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,73 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1040` Fix `vorjahr` (and similar) input names and their namespaces + ({ghuser}`MImmesberger`) +- {gh}`1035` Change the handling of `policy_date`, `evaluation_date`; remove `date` + ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`1032` Clean up Wohngeld, Werbungskosten, Minjobs around the introduction of + exemptions to social insurance contributions ({ghuser}`MImmesberger`) +- {gh}`1038` Rename `ist_selbstständig` to `ist_hauptberuflich_selbstständig` + ({ghuser}`MImmesberger`) +- {gh}`1037` Improve performance of `processed_data` ({ghuser}`JuergenWiemers`, + `hmgaudecker`, `mj023`) +- {gh}`1031` Fix #1006, Improve error message when input data are missing and results + are requested ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1029` Change namespace of private Renteneinnahmen ({ghuser}`MImmesberger`) +- {gh}`1033` Tighten ruff checks ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`1027` Better fail/warn tests ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1017` Better error message for missing input data ({ghuser}`MImmesberger`, + `hmgaudecker`) +- {gh}`1026` Fix bug in `fail_if.input_df_mapper_columns_missing_in_df` + ({ghuser}`MImmesberger`) +- {gh}`1028` Change calls of main so that `main_target` / `main_targets` is the first + argument ({ghuser}`hmgaudecker`) +- {gh}`1024` Split up `fail_and_warn` argument of `main` ({ghuser}`MImmesberger`, + `hmgaudecker`) +- {gh}`1016` Turn fail_ifs and warn_ifs on + let `main` return a pytree, update pixi + environments. ({ghuser}`MImmesberger`, `timmens`, `hmgaudecker`) +- {gh}`1018` Enable annotations for interface / tax-transfer functions + ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`1013` Fix Rente Hinzuverdienstgrenze ({ghuser}`MImmesberger`) +- {gh}`1015` Remaining parts of 2025 parameter update ({ghuser}`MImmesberger`) +- {gh}`1012` Rente Angleichung Ost/West ({ghuser}`MImmesberger`) +- {gh}`1011` Simple renamings. ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1007` Remove `kind` input ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1000` Use individual-specific Zusatzbeitrag ({ghuser}`MImmesberger`, + `hmgaudecker`) +- {gh}`998` Add N-Dimensional Lookup Table ({ghuser}`mj023`, `hmgaudecker`) +- {gh}`1001` Rename: output -> main_target(s), targets -> tt_targets + ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`997` Improve errors when executing the interface DAG ({ghuser}`MImmesberger`, + `hmgaudecker`) +- {gh}`996` Updates to interface ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`991` Implement remaining interface components ({ghuser}`hmgaudecker`, + `MImmesberger`) +- {gh}`993` Upserting of params: Makes all arguments but `value` of the params + dataclasses optional ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`992` Fail if length of data input arrays differs. ({ghuser}`MImmesberger`) +- {gh}`990` Remove config elements from policy environment ({ghuser}`MImmesberger`, + `hmgaudecker`) +- {gh}`986` Make GETTSIM functions jittable ({ghuser}`hmgaudecker`, `MImmesberger`, + `mj023`) +- {gh}`987` Run fail_if functions first ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`985` Make date input dependent, improve logic of + `InputDependentInterfaceFunction`s ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`984` Add 'output' keyword to main, fix tests ({ghuser}`hmgaudecker`) +- {gh}`953` Hierarchical interface ({ghuser}`hmgaudecker`, `MImmesberger`, `mj023`, + `timmens`) +- {gh}`957` Use relative paths for taxes and transfers ({ghuser}`MImmesberger`) +- {gh}`955` ConsecutiveInt type for Anspruchsdauer ALG1 ({ghuser}`MImmesberger`) +- {gh}`954` Improve implementation of Mehrbedarf für Alleinerziehende. + ({ghuser}`MImmesberger`) +- {gh}`948` Preliminary DAG-based interface ({ghuser}`hmgaudecker`, `MImmesberger`, + `mj023`) +- {gh}`943` Remove all occurrences of `vectorization_strategy='loop'` ({ghuser}`mj023`) +- {gh}`947` METTSIM: Test overwriting scalar param / scalar param function with a data + column ({ghuser}`MImmesberger`) +- {gh}`945` Move param dataclasses to param_types.py ({ghuser}`MImmesberger`) +- {gh}`897` Unify parsing of params ({ghuser}`hmgaudecker`, `MImmesberger`, `mj023`) +- {gh}`899` Remove infrastructure to create synthetic data. ({ghuser}`MImmesberger`) - {gh}`894`, {gh}`896` Cleanups ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`). - {gh}`891` Prepare for jitting / vectorization of GETTSIM` ({ghuser}`hmgaudecker\`). - {gh}`879` Vectorize METTSIM ({ghuser}`timmens`, {ghuser}`hmgaudecker`). From 395a7875311971d498491d5584c6907efa551f21 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Jul 2025 11:58:39 +0200 Subject: [PATCH 085/109] Fix links. --- CHANGES.md | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 35bf02155f..a3ba3d6149 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,18 +9,18 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`1040` Fix `vorjahr` (and similar) input names and their namespaces ({ghuser}`MImmesberger`) - {gh}`1035` Change the handling of `policy_date`, `evaluation_date`; remove `date` - ({ghuser}`hmgaudecker`, `MImmesberger`) + ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) - {gh}`1032` Clean up Wohngeld, Werbungskosten, Minjobs around the introduction of exemptions to social insurance contributions ({ghuser}`MImmesberger`) - {gh}`1038` Rename `ist_selbstständig` to `ist_hauptberuflich_selbstständig` ({ghuser}`MImmesberger`) - {gh}`1037` Improve performance of `processed_data` ({ghuser}`JuergenWiemers`, - `hmgaudecker`, `mj023`) + `hmgaudecker`, {ghuser}`mj023`) - {gh}`1031` Fix #1006, Improve error message when input data are missing and results - are requested ({ghuser}`MImmesberger`, `hmgaudecker`) + are requested ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`1029` Change namespace of private Renteneinnahmen ({ghuser}`MImmesberger`) -- {gh}`1033` Tighten ruff checks ({ghuser}`hmgaudecker`, `MImmesberger`) -- {gh}`1027` Better fail/warn tests ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1033` Tighten ruff checks ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) +- {gh}`1027` Better fail/warn tests ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`1017` Better error message for missing input data ({ghuser}`MImmesberger`, `hmgaudecker`) - {gh}`1026` Fix bug in `fail_if.input_df_mapper_columns_missing_in_df` @@ -30,48 +30,49 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi - {gh}`1024` Split up `fail_and_warn` argument of `main` ({ghuser}`MImmesberger`, `hmgaudecker`) - {gh}`1016` Turn fail_ifs and warn_ifs on + let `main` return a pytree, update pixi - environments. ({ghuser}`MImmesberger`, `timmens`, `hmgaudecker`) + environments. ({ghuser}`MImmesberger`, {ghuser}`timmens`, {ghuser}`hmgaudecker`) - {gh}`1018` Enable annotations for interface / tax-transfer functions - ({ghuser}`hmgaudecker`, `MImmesberger`) + ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) - {gh}`1013` Fix Rente Hinzuverdienstgrenze ({ghuser}`MImmesberger`) - {gh}`1015` Remaining parts of 2025 parameter update ({ghuser}`MImmesberger`) - {gh}`1012` Rente Angleichung Ost/West ({ghuser}`MImmesberger`) -- {gh}`1011` Simple renamings. ({ghuser}`MImmesberger`, `hmgaudecker`) -- {gh}`1007` Remove `kind` input ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`1011` Simple renamings. ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) +- {gh}`1007` Remove `kind` input ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`1000` Use individual-specific Zusatzbeitrag ({ghuser}`MImmesberger`, `hmgaudecker`) -- {gh}`998` Add N-Dimensional Lookup Table ({ghuser}`mj023`, `hmgaudecker`) +- {gh}`998` Add N-Dimensional Lookup Table ({ghuser}`mj023`, {ghuser}`hmgaudecker`) - {gh}`1001` Rename: output -> main_target(s), targets -> tt_targets - ({ghuser}`hmgaudecker`, `MImmesberger`) + ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) - {gh}`997` Improve errors when executing the interface DAG ({ghuser}`MImmesberger`, `hmgaudecker`) -- {gh}`996` Updates to interface ({ghuser}`MImmesberger`, `hmgaudecker`) +- {gh}`996` Updates to interface ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`991` Implement remaining interface components ({ghuser}`hmgaudecker`, `MImmesberger`) - {gh}`993` Upserting of params: Makes all arguments but `value` of the params - dataclasses optional ({ghuser}`MImmesberger`, `hmgaudecker`) + dataclasses optional ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`992` Fail if length of data input arrays differs. ({ghuser}`MImmesberger`) - {gh}`990` Remove config elements from policy environment ({ghuser}`MImmesberger`, `hmgaudecker`) -- {gh}`986` Make GETTSIM functions jittable ({ghuser}`hmgaudecker`, `MImmesberger`, - `mj023`) -- {gh}`987` Run fail_if functions first ({ghuser}`hmgaudecker`, `MImmesberger`) +- {gh}`986` Make GETTSIM functions jittable ({ghuser}`hmgaudecker`, + {ghuser}`MImmesberger`, `mj023`) +- {gh}`987` Run fail_if functions first ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) - {gh}`985` Make date input dependent, improve logic of - `InputDependentInterfaceFunction`s ({ghuser}`MImmesberger`, `hmgaudecker`) + `InputDependentInterfaceFunction`s ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) - {gh}`984` Add 'output' keyword to main, fix tests ({ghuser}`hmgaudecker`) -- {gh}`953` Hierarchical interface ({ghuser}`hmgaudecker`, `MImmesberger`, `mj023`, - `timmens`) +- {gh}`953` Hierarchical interface ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, + {ghuser}`mj023`, `timmens`) - {gh}`957` Use relative paths for taxes and transfers ({ghuser}`MImmesberger`) - {gh}`955` ConsecutiveInt type for Anspruchsdauer ALG1 ({ghuser}`MImmesberger`) - {gh}`954` Improve implementation of Mehrbedarf für Alleinerziehende. ({ghuser}`MImmesberger`) -- {gh}`948` Preliminary DAG-based interface ({ghuser}`hmgaudecker`, `MImmesberger`, - `mj023`) +- {gh}`948` Preliminary DAG-based interface ({ghuser}`hmgaudecker`, + {ghuser}`MImmesberger`, `mj023`) - {gh}`943` Remove all occurrences of `vectorization_strategy='loop'` ({ghuser}`mj023`) - {gh}`947` METTSIM: Test overwriting scalar param / scalar param function with a data column ({ghuser}`MImmesberger`) - {gh}`945` Move param dataclasses to param_types.py ({ghuser}`MImmesberger`) -- {gh}`897` Unify parsing of params ({ghuser}`hmgaudecker`, `MImmesberger`, `mj023`) +- {gh}`897` Unify parsing of params ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, + {ghuser}`mj023`) - {gh}`899` Remove infrastructure to create synthetic data. ({ghuser}`MImmesberger`) - {gh}`894`, {gh}`896` Cleanups ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`). - {gh}`891` Prepare for jitting / vectorization of GETTSIM` ({ghuser}`hmgaudecker\`). From c4946933cb4073e73d33d47884fcc04a2e1e060e Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Jul 2025 12:32:47 +0200 Subject: [PATCH 086/109] Fix links, formatting, add 1041. --- CHANGES.md | 151 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 141 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a3ba3d6149..4fec7db13d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,204 +6,335 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1041` Don't create DAG cycles via automatically added functions + ({ghuser}`MImmesberger`) + - {gh}`1040` Fix `vorjahr` (and similar) input names and their namespaces ({ghuser}`MImmesberger`) + - {gh}`1035` Change the handling of `policy_date`, `evaluation_date`; remove `date` ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) + - {gh}`1032` Clean up Wohngeld, Werbungskosten, Minjobs around the introduction of exemptions to social insurance contributions ({ghuser}`MImmesberger`) + - {gh}`1038` Rename `ist_selbstständig` to `ist_hauptberuflich_selbstständig` ({ghuser}`MImmesberger`) + - {gh}`1037` Improve performance of `processed_data` ({ghuser}`JuergenWiemers`, - `hmgaudecker`, {ghuser}`mj023`) + {ghuser}`hmgaudecker`, {ghuser}`mj023`) + - {gh}`1031` Fix #1006, Improve error message when input data are missing and results are requested ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`1029` Change namespace of private Renteneinnahmen ({ghuser}`MImmesberger`) + - {gh}`1033` Tighten ruff checks ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) + - {gh}`1027` Better fail/warn tests ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`1017` Better error message for missing input data ({ghuser}`MImmesberger`, - `hmgaudecker`) + {ghuser}`hmgaudecker`) + - {gh}`1026` Fix bug in `fail_if.input_df_mapper_columns_missing_in_df` ({ghuser}`MImmesberger`) + - {gh}`1028` Change calls of main so that `main_target` / `main_targets` is the first argument ({ghuser}`hmgaudecker`) + - {gh}`1024` Split up `fail_and_warn` argument of `main` ({ghuser}`MImmesberger`, - `hmgaudecker`) + {ghuser}`hmgaudecker`) + - {gh}`1016` Turn fail_ifs and warn_ifs on + let `main` return a pytree, update pixi environments. ({ghuser}`MImmesberger`, {ghuser}`timmens`, {ghuser}`hmgaudecker`) + - {gh}`1018` Enable annotations for interface / tax-transfer functions ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) + - {gh}`1013` Fix Rente Hinzuverdienstgrenze ({ghuser}`MImmesberger`) + - {gh}`1015` Remaining parts of 2025 parameter update ({ghuser}`MImmesberger`) + - {gh}`1012` Rente Angleichung Ost/West ({ghuser}`MImmesberger`) + - {gh}`1011` Simple renamings. ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`1007` Remove `kind` input ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`1000` Use individual-specific Zusatzbeitrag ({ghuser}`MImmesberger`, - `hmgaudecker`) + {ghuser}`hmgaudecker`) + - {gh}`998` Add N-Dimensional Lookup Table ({ghuser}`mj023`, {ghuser}`hmgaudecker`) + - {gh}`1001` Rename: output -> main_target(s), targets -> tt_targets ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) + - {gh}`997` Improve errors when executing the interface DAG ({ghuser}`MImmesberger`, - `hmgaudecker`) + {ghuser}`hmgaudecker`) + - {gh}`996` Updates to interface ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`991` Implement remaining interface components ({ghuser}`hmgaudecker`, - `MImmesberger`) + {ghuser}`MImmesberger`) + - {gh}`993` Upserting of params: Makes all arguments but `value` of the params dataclasses optional ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`992` Fail if length of data input arrays differs. ({ghuser}`MImmesberger`) + - {gh}`990` Remove config elements from policy environment ({ghuser}`MImmesberger`, - `hmgaudecker`) + {ghuser}`hmgaudecker`) + - {gh}`986` Make GETTSIM functions jittable ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, `mj023`) + - {gh}`987` Run fail_if functions first ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`) + - {gh}`985` Make date input dependent, improve logic of `InputDependentInterfaceFunction`s ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`) + - {gh}`984` Add 'output' keyword to main, fix tests ({ghuser}`hmgaudecker`) + - {gh}`953` Hierarchical interface ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, {ghuser}`mj023`, `timmens`) + - {gh}`957` Use relative paths for taxes and transfers ({ghuser}`MImmesberger`) + - {gh}`955` ConsecutiveInt type for Anspruchsdauer ALG1 ({ghuser}`MImmesberger`) + - {gh}`954` Improve implementation of Mehrbedarf für Alleinerziehende. ({ghuser}`MImmesberger`) + - {gh}`948` Preliminary DAG-based interface ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, `mj023`) + - {gh}`943` Remove all occurrences of `vectorization_strategy='loop'` ({ghuser}`mj023`) + - {gh}`947` METTSIM: Test overwriting scalar param / scalar param function with a data column ({ghuser}`MImmesberger`) + - {gh}`945` Move param dataclasses to param_types.py ({ghuser}`MImmesberger`) + - {gh}`897` Unify parsing of params ({ghuser}`hmgaudecker`, {ghuser}`MImmesberger`, {ghuser}`mj023`) + - {gh}`899` Remove infrastructure to create synthetic data. ({ghuser}`MImmesberger`) + - {gh}`894`, {gh}`896` Cleanups ({ghuser}`MImmesberger`, {ghuser}`hmgaudecker`). + - {gh}`891` Prepare for jitting / vectorization of GETTSIM` ({ghuser}`hmgaudecker\`). + - {gh}`879` Vectorize METTSIM ({ghuser}`timmens`, {ghuser}`hmgaudecker`). + - {gh}`887` Enable typing ({ghuser}`hmgaudecker`, {ghuser}`timmens`). + - {gh}`888` Remove SUPPORTED_GROUPINGS entirely, infer groupings from object names ({ghuser}`MImmesberger`). + - {gh}`889` Refactor loader and fix check for time-dependent functions to span multiple modules that end up in the same namespace ({ghuser}`hmgaudecker`). + - {gh}`885`, {gh}`886`: Cleanups ({ghuser}`MImmesberger`). + - {gh}`867` Vectorize `piecewise_polynomial` ({ghuser}`mj023`). + - {gh}`880` Validate parameter files using json schema ({ghuser}`hmgaudecker`). + - {gh}`876` Add DataFrame to NestedData conversion ({ghuser}`MImmesberger`). + - {gh}`873` Implement aggregation decorators ({ghuser}`hmgaudecker`, `MImmesberger`). + - {gh}`859` Add RoundingSpec dataclass ({ghuser}`hmgaudecker`, `MImmesberger`). + - {gh}`854` Add PolicyInput class and update hierarchy of TTSIM objects ({ghuser}`timmens`, `hmgaudecker`, `MImmesberger`). + - {gh}`871` Require dashed iso date everywhere ({ghuser}`hmgaudecker`). + - {gh}`865` Make top-level namespace include potential derived functions ({ghuser}`MImmesberger`). + - {gh}`860` Use AggType instead of strings ({ghuser}`timmens`). + - {gh}`864` Make `compute_taxes_and_transfers` jax-jittable ({ghuser}`timmens`). + - {gh}`863` Add join_jax ({ghuser}`mj023`). + - {gh}`862` Add all types of Einkünfte, introduce concept of Gesamtbetrag der Einkünfte ({ghuser}`MImmesberger`). + - {gh}`861` Make fg_id invariant to ordering of data ({ghuser}`mj023`). + - {gh}`858` Apply tree logic to GETTSIM tests ({ghuser}`felixschmitz`). + - {gh}`856` Add METTSIM to test TTSIM part ({ghuser}`hmgaudecker`, `timmens`, - `MImmesberger`). + {ghuser}`MImmesberger`). + - {gh}`850` Split GETTSIM from TTSIM functions ({ghuser}`hmgaudecker`, `MImmesberger`). + - {gh}`805` Rename taxes and transers using new tree structure ({ghuser}`hmgaudecker`, - `MImmesberger`). + {ghuser}`MImmesberger`). + - {gh}`818` Change behavior of namespaces so they are on the module level ({ghuser}`hmgaudecker`, `MImmesberger`). + - {gh}`780` Refactor infrastructure to work with `dags.tree` ({ghuser}`lars-reimann`, - `hmgaudecker`, `MImmesberger`). + {ghuser}`hmgaudecker`, `MImmesberger`). + - {gh}`807` Implement changes from 2. Jahressteuergesetz 2024 ({ghuser}`Eric-Sommer`) + - {gh}`809` implement 2025 changes to pensions and social security contributions ({ghuser}`Eric-Sommer`). + - {gh}`803` Apply correct rounding rules for Ehegattensplitting and update EStG parameters ({ghuser}`MImmesberger`, `mjbloemer`). + - {gh}`797` Update infrastructure to use pixi and modern pre-commit hooks ({ghuser}`timmens`). + - {gh}`787` Model classes for policy functions and policy environments ({ghuser}`lars-reimann`). + - {gh}`756` Refactor Elterngeld module and some small fixes ({ghuser}`MImmesberger`, {ghuser}`ThOrtmann`). + - {gh}`790` Add unterhaltsvors implementation 2009 to 2016 ({ghuser}`mjbloemer`). + - {gh}`788` Pension benefit earnings test for early retirees ({ghuser}`MImmesberger`). + - {gh}`786` Check directly whether child and parent are in same Bedarfsgemeinschaft for Kindergeldübertrag ({ghuser}`MImmesberger`). + - {gh}`785` Add NotImplementedError to Unterhaltsvorschuss and test whether output from `create_synthetic_data` is enough to compute default targets ({ghuser}`MImmesberger`). + - {gh}`772` Add Mindesteinkommen check to Wohngeld, calculate anz_eig_kind_bis_24 instead of requiring it as an input variable ({ghuser}`MImmesberger`). + - {gh}`771` Move SGB II Regelsatz calculation from BG to individual level ({ghuser}`MImmesberger`). + - {gh}`765` Kinderzuschlag only paid out if parents are in the same BG as the child ({ghuser}`MImmesberger`). + - {gh}`766` Allow for user-provided grouping IDs. ({ghuser}`MImmesberger`). + - {gh}`717` Switch from cohort-based policy to date-based policy in retirement module ({ghuser}`MImmesberger`). + - {gh}`753` Vorrangprüfung of Wohngeld and ALG2 on bg level ({ghuser}`MImmesberger`). + - {gh}`759` Unify function names in Sozialversicherung modules ({ghuser}`MImmesberger`). + - {gh}`755` Allow array returns when `skip_vectorization` is being used, enforce import convention ({ghuser}`hmgaudecker`). + - {gh}`751` Kindergeldübertrag ({ghuser}`MImmesberger`). + - {gh}`739` Unterhaltsvorschuss calculation on child level ({ghuser}`MImmesberger`). + - {gh}`725` KdU calculation on bg level and other small fixes ({ghuser}`MImmesberger`, {ghuser}`ChristianZimpelmann`). + - {gh}`722` Join columns to make target columns available at source level ({ghuser}`lars-reimann`). + - {gh}`732` Change wealth input variable to individual-level (`vermögen_bedürft`) ({ghuser}`ChristianZimpelmann`). + - {gh}`730` Add argument to create_synthetic_data on whether adults are married. ({ghuser}`ChristianZimpelmann`). + - {gh}`729` Fix bugs in calculation of Unterhaltsvorschuss and Grundsicherung im Alter ({ghuser}`ChristianZimpelmann`). + - {gh}`721` Optionally skip vectorization of a policy function ({ghuser}`lars-reimann`). + - {gh}`720` Combined decorator for policy information ({ghuser}`lars-reimann`). + - {gh}`700` Data columns overwrite functions regardless of time unit ({ghuser}`lars-reimann`). + - {gh}`694` Replace `tu` groupings with correct groupings. ({ghuser}`MImmesberger`, {ghuser}`lars-reimann`, {ghuser}`hmgaudecker`). + - {gh}`676` Add explicit parent-child links. ({ghuser}`MImmesberger`). + - {gh}`684` New Issue template for yearly parameter updates. ({ghuser}`MImmesberger`). + - {gh}`680` 2024 Parameter Update ({ghuser}`Eric-Sommer`, {ghuser}`MImmesberger`) + - {gh}`662`, {gh}`675` Replace `hh` in function names by `bg`/`fg` ({ghuser}`lars-reimann`, {ghuser}`MImmesberger`). + - {gh}`577` Implement Erwerbsminderungsrente (public disability insurance) ({ghuser}`nafetsk`) + - {gh}`601` Add groupings `sn_id`, `fg_id`, and `bg_id` ({ghuser}`lars-reimann`). + - {gh}`642` Vertrauensschutz for pension for unemployed ({ghuser}`TeBackh`, {ghuser}`MImmesberger`) + - {gh}`660` Entgeltpunkte Ost/West ({ghuser}`nafetsk`). + - {gh}`659` Add rounding to Unterhaltsvorschuss, ESt, Wohngeld, Kinderzuschlag. ({ghuser}`MImmesberger`). + - {gh}`655` Correct calculation of Lohnsteuer for 2015 to 2023 ({ghuser}`JakobWegmann`). + - {gh}`653` Add Soli to Lohnsteuer test cases ({ghuser}`JakobWegmann`). + - {gh}`636`, {gh}`637` Reduced contribution rate for retirees for long-term care insurance until 2004 ({ghuser}`MImmesberger`). + - {gh}`643` Fix bug in Midijobfaktor calculation in 2004. ({ghuser}`MImmesberger`). + - {gh}`590` Add allowance for child income for Kinderzuschlag. ({ghuser}`ChristianZimpelmann`). + - {gh}`620` Adds income from self employment to income for Bürgergeld ({ghuser}`amageh`, {ghuser}`lillyfischer`, {ghuser}`TeBackh`) + - {gh}`634` Implement pension for unemployed ({ghuser}`TeBackh`) + - {gh}`632` Zugangsfaktor calculation with monthly precision ({ghuser}`TeBackh`). + - {gh}`624` Don't create functions for other time units if this leads to a cycle in the graph ({ghuser}`lars-reimann`). + - {gh}`630` Fixes bug in `piecewise_polynomial` that ignored jumps in intercepts ({ghuser}`nafetsk`). + - {gh}`639` Infer `columns_overriding_functions` for `compute_taxes_and_transfers` from functions and data ({ghuser}`lars-reimann`). + - {gh}`638` Don't use functions in `compute_taxes_and_transfers` that are not active ({ghuser}`lars-reimann`). + - {gh}`618`, {gh}`623` Apply `@dates_active` decorator to Abgeltungssteuer, Midi- and Minijobs, Pflegeversicherung. ({ghuser}`hmgaudecker`). + - {gh}`624` Don't create functions for other time units if this leads to a cycle in the graph ({ghuser}`lars-reimann`). + - {gh}`603` Add anz_eig_kind_bis_24 to synthetic ({ghuser}`ChristianZimpelmann`). + - {gh}`593` Implement reform of gesetzliche Pflegepflegeversicherung effective as of 2023-07-01 ({ghuser}`paulinaschroeder`). + - {gh}`602` Correct `midijob_faktor_f` ({ghuser}`paulinaschroeder`). + - {gh}`600` Extend the `access_different_date` functionality for `jahresanfang`. ({ghuser}`paulinaschroeder`). + - {gh}`591` Fix minor bug in wealth exemptions for Kinderzuschlag in 2023 ({ghuser}`ChristianZimpelmann`). + - {gh}`589` Fix minor bug in `arbeitsl_geld_2_eink_anr_frei_m` ({ghuser}`ChristianZimpelmann`). + - {gh}`583` Automatic conversion between different time units ({ghuser}`lars-reimann`). + - {gh}`581` Add `_y` suffix to names of yearly variables ({ghuser}`lars-reimann`). ## v0.7 — 2023-05-14 From 6e4f869a52532b35a7745d5d2f14ffdbdf469f0e Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Tue, 22 Jul 2025 14:46:52 +0200 Subject: [PATCH 087/109] Don't create DAG cycles via automatically added functions (#1041) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What problem do you want to solve? Closes #757 In fact, any occurences of automatically created cycles reported in #757 have already been solved via the namespaces structure. In ALG2 we have ```python @policy_function(start_date="2005-01-01") def wohnfläche( wohnen__wohnfläche_hh: float, anzahl_personen_hh: int, ) -> float: """Share of household's dwelling size attributed to a single person.""" return wohnen__wohnfläche_hh / anzahl_personen_hh ``` So we don't create a cycle anymore as we have `wohnen__wohnfläche -> wohnen__wohnfläche_hh` but `wohnen__wohnfläche_hh -> arbeitslosengeld_2__wohnfläche`. Still, thanks to the work done by Lars in the past, a general TTSIM solution was easy to implement because it just copies the logic done for time-conversion functions. --- .../automatically_added_functions.py | 15 +++++++++++- .../test_automatically_added_functions.py | 24 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/ttsim/interface_dag_elements/automatically_added_functions.py b/src/ttsim/interface_dag_elements/automatically_added_functions.py index 6f9a29cb9a..4b60bc6d6c 100644 --- a/src/ttsim/interface_dag_elements/automatically_added_functions.py +++ b/src/ttsim/interface_dag_elements/automatically_added_functions.py @@ -611,7 +611,7 @@ def create_agg_by_group_functions( potential_agg_by_group_sources = { qn: o for qn, o in all_functions_and_data.items() if not gp.match(qn) } - # Exclude objects that have been explicitly provided.u + # Exclude objects that have been explicitly provided. agg_by_group_function_names = { t @@ -623,6 +623,19 @@ def create_agg_by_group_functions( match = gp.match(abgfn) base_name_with_time_unit = match.group("base_name_with_time_unit") if base_name_with_time_unit in potential_agg_by_group_sources: + # Check if the aggregation target is already a dependency of the source + # function to avoid creating cycles in the DAG. Consider a function `x` that + # takes `x_hh` as an input, assuming it to be provided in the input data. If + # we create a function `x_hh`, which would aggregate `x` by household, we + # create a cycle. If `x_hh` is actually provided as an input, `x_hh` would + # be overwritten, removing the cycle. However, if `x_hh` is not provided as + # an input, an error message would be shown that a cycle between `x` and + # `x_hh` was detected. This hides the actual problem, which is that `x_hh` + # is not provided as an input. + source_function = column_functions.get(base_name_with_time_unit) + if source_function and abgfn in get_free_arguments(source_function): + continue + group_id = f"{match.group('group')}_id" mapper = {"group_id": group_id, "column": base_name_with_time_unit} agg_func = rename_arguments( diff --git a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py index 327bcfe8b4..3952f31498 100644 --- a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py +++ b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py @@ -345,7 +345,7 @@ def test_should_apply_converter(self): assert function(1) == 7 -def test_should_not_create_cycle(): +def test_time_conversions_should_not_create_cycle(): # Check for: # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 def x(test_m: int) -> int: @@ -360,6 +360,28 @@ def x(test_m: int) -> int: assert "test_m" not in time_conversion_functions +def test_grouping_functions_should_not_create_cycle(): + @policy_function() + def x(x_hh: int) -> int: + return x_hh + + @policy_function() + def some_other_function_requiring_x_hh(x_hh: int) -> int: + return x_hh + + grouping_functions = create_agg_by_group_functions( + column_functions={ + "x": x, + "some_other_function_requiring_x_hh": some_other_function_requiring_x_hh, + }, + input_columns=set(), + tt_targets=("some_other_function_requiring_x_hh",), + grouping_levels=("hh",), + ) + + assert "x_hh" not in grouping_functions + + @pytest.mark.parametrize( ( "column_functions", From 3f3532215a3d3d4827e79bf68e7680a6a42294f1 Mon Sep 17 00:00:00 2001 From: Tim Mensinger <mensingertim@gmail.com> Date: Tue, 22 Jul 2025 15:01:05 +0200 Subject: [PATCH 088/109] Add copy_environment function (#1008) (#1042) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Leaving the almost-unedited stuff from Claude Code here for demonstration purposes* ## Summary - Implements `copy_environment` function to address issue #1008 - Provides proper copying of policy environments containing unpickleable function objects - Available in both `ttsim` and `gettsim` namespaces with full type safety ## Implementation Details - **Function**: Uses `optree.tree_map(copy, tree)` for shallow copying of tree leaves while recreating structure - **Type Safety**: Proper type hints with `@overload` decorators for `PolicyEnvironment` and specialized environment types - **Error Handling**: Solves `copy.deepcopy` failures on policy environments containing function objects ## Key Features - ✅ **Type-safe copying** with specific return types for each environment type - ✅ **Independence guarantee** - modifications to copy don't affect original - ✅ **Performance optimized** using optree for tree operations - ✅ **Comprehensive testing** with human-readable test functions - ✅ **Full documentation** with examples and technical explanations ## Usage Example ```python from gettsim import main, copy_environment, MainTarget from ttsim.tt_dag_elements.param_objects import ScalarParam # Load and copy policy environment policy_env = main(date_str="2025-01-01", main_target=MainTarget.policy_environment) copied_env = copy_environment(policy_env) # Modify copy without affecting original copied_env["sozialversicherung"]["rente"]["beitrag"]["beitragssatz"] = ScalarParam(value=0.3) ``` ## Test Coverage - ✅ Single parameter copying - ✅ Nested dictionary structures - ✅ Full policy environment integration - ✅ Error conditions and edge cases - ✅ Type inference verification - ✅ Independence testing Closes #1008 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- src/ttsim/__init__.py | 2 + src/ttsim/copy_environment.py | 70 +++++++++++ tests/ttsim/test_copy_environment.py | 177 +++++++++++++++++++++++++++ 3 files changed, 249 insertions(+) create mode 100644 src/ttsim/copy_environment.py create mode 100644 tests/ttsim/test_copy_environment.py diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py index 01252b15c2..c960c3bdd5 100644 --- a/src/ttsim/__init__.py +++ b/src/ttsim/__init__.py @@ -1,5 +1,6 @@ from __future__ import annotations +from ttsim.copy_environment import copy_environment from ttsim.interface_dag import main from ttsim.interface_dag_elements import MainTarget from ttsim.interface_dag_elements.shared import merge_trees @@ -22,6 +23,7 @@ "Results", "SpecializedEnvironment", "TTTargets", + "copy_environment", "main", "merge_trees", ] diff --git a/src/ttsim/copy_environment.py b/src/ttsim/copy_environment.py new file mode 100644 index 0000000000..c01740ea84 --- /dev/null +++ b/src/ttsim/copy_environment.py @@ -0,0 +1,70 @@ +"""Utility function for copying policy environments and other tree structures.""" + +from __future__ import annotations + +from copy import copy +from typing import TYPE_CHECKING, TypeAlias, overload + +import optree + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import ( + PolicyEnvironment, + SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithPartialledParamsAndScalars, + SpecEnvWithProcessedParamsAndScalars, + ) + + SomeEnv: TypeAlias = ( + PolicyEnvironment + | SpecEnvWithoutTreeLogicAndWithDerivedFunctions + | SpecEnvWithProcessedParamsAndScalars + | SpecEnvWithPartialledParamsAndScalars + ) + + +@overload +def copy_environment(env: PolicyEnvironment) -> PolicyEnvironment: ... + + +@overload +def copy_environment( + env: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, +) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: ... + + +@overload +def copy_environment( + env: SpecEnvWithProcessedParamsAndScalars, +) -> SpecEnvWithProcessedParamsAndScalars: ... + + +@overload +def copy_environment( + env: SpecEnvWithPartialledParamsAndScalars, +) -> SpecEnvWithPartialledParamsAndScalars: ... + + +def copy_environment(env: SomeEnv) -> SomeEnv: + """Create a copy of a policy environment or other tree structure. + + This function creates a copy of nested tree structures that may contain objects + that cannot be deep-copied due to unpickleable elements such as function objects. + + The function uses optree.tree_map with shallow copy to create independent copies + of the tree structure while preserving references to functions and other objects + that don't need to be copied. + + Parameters + ---------- + env + The environment to copy. Can be a PolicyEnvironment or any of the + specialized environment types (SpecEnvWithoutTreeLogicAndWithDerivedFunctions, + SpecEnvWithProcessedParamsAndScalars, SpecEnvWithPartialledParamsAndScalars). + + Returns + ------- + A copy of *env*, which is a deep copy for all practical purposes. + + """ + return optree.tree_map(copy, env) diff --git a/tests/ttsim/test_copy_environment.py b/tests/ttsim/test_copy_environment.py new file mode 100644 index 0000000000..f9366b422c --- /dev/null +++ b/tests/ttsim/test_copy_environment.py @@ -0,0 +1,177 @@ +from __future__ import annotations + +from copy import deepcopy +from pathlib import Path +from typing import TYPE_CHECKING, Any + +import optree +import pytest + +from ttsim import copy_environment, main +from ttsim.interface_dag_elements import MainTarget +from ttsim.tt_dag_elements.param_objects import ScalarParam + +if TYPE_CHECKING: + from ttsim.interface_dag_elements.typing import PolicyEnvironment + + +METTSIM_ROOT = Path(__file__).parent / "mettsim" + + +def test_copy_single_scalar_param(): + """Copy a ScalarParam and verify content equality but object independence.""" + original = ScalarParam(value=0.186) + copied = copy_environment(original) + + # Content should be identical + assert copied.value == original.value + assert copied.leaf_name == original.leaf_name + + # But objects should be independent + assert copied is not original + + +def test_copy_nested_dict_with_params(): + """Copy nested dictionary with parameters and verify structural preservation.""" + original = { + "level1": { + "level2": { + "param1": ScalarParam(value=0.5), + "param2": ScalarParam(value=1.0), + } + } + } + + copied = copy_environment(original) + + # Structure should be preserved + assert "level1" in copied + assert "level2" in copied["level1"] + assert "param1" in copied["level1"]["level2"] + assert "param2" in copied["level1"]["level2"] + + # Values should be preserved + assert copied["level1"]["level2"]["param1"].value == 0.5 + assert copied["level1"]["level2"]["param2"].value == 1.0 + + # Modifications to copy should not affect original + copied["level1"]["level2"]["param1"] = ScalarParam(value=2.0) + assert original["level1"]["level2"]["param1"].value == 0.5 + assert copied["level1"]["level2"]["param1"].value == 2.0 + + +def test_copy_full_policy_environment(): + """Copy complete policy environment and verify independence of nested parameters.""" + # Load policy environment (mettsim) + policy_env = main( + main_target=MainTarget.policy_environment, + policy_date_str="2025-01-01", + orig_policy_objects={"root": METTSIM_ROOT}, + ) + + copied_env = copy_environment(policy_env) + + # Verify skeletons (tree structure) are identical + assert set(optree.tree_paths(policy_env)) == set(optree.tree_paths(copied_env)) + + # Get reference to nested parameter in both versions + original_param = policy_env["payroll_tax"]["employee"]["rate"] + copied_param = copied_env["payroll_tax"]["employee"]["rate"] + + # Values should be equal initially + assert copied_param.value == original_param.value + + # Modify copy - should not affect original + copied_env["payroll_tax"]["employee"]["rate"] = ScalarParam(value=0.3) + + assert policy_env["payroll_tax"]["employee"]["rate"].value == original_param.value + assert copied_env["payroll_tax"]["employee"]["rate"].value == 0.3 + + +def test_deepcopy_fails_on_policy_environment(): + """Verify copy.deepcopy fails on policy environments due to unpickleable objects.""" + policy_env = main( + main_target=MainTarget.policy_environment, + policy_date_str="2025-01-01", + orig_policy_objects={"root": METTSIM_ROOT}, + ) + + with pytest.raises((TypeError, AttributeError)) as excinfo: + deepcopy(policy_env) + + # Should be a pickling-related error + error_message = str(excinfo.value).lower() + assert any(word in error_message for word in ["pickle", "module"]) + + +def test_copy_environment_works_where_deepcopy_fails(): + """Verify copy_environment succeeds on objects that break copy.deepcopy.""" + policy_env = main( + main_target=MainTarget.policy_environment, + policy_date_str="2025-01-01", + orig_policy_objects={"root": METTSIM_ROOT}, + ) + + # Confirm deepcopy fails + with pytest.raises((TypeError, AttributeError)): + deepcopy(policy_env) + + # But copy_environment should work + copied_env = copy_environment(policy_env) + assert set(optree.tree_paths(policy_env)) == set(optree.tree_paths(copied_env)) + assert isinstance(copied_env, dict) + assert len(copied_env) > 0 + + +def test_copy_empty_dict(): + """Copy empty dictionary and verify independence.""" + original: dict[str, Any] = {} + copied = copy_environment(original) + + assert copied == {} + assert copied is not original + + +def test_copy_mixed_data_types(): + """Copy dictionary with various data types and verify all are handled correctly.""" + original: dict[str, Any] = { + "scalar": ScalarParam(value=42), + "string": "hello", + "number": 123, + "list": [1, 2, 3], + "nested": { + "param": ScalarParam(value=3.14), + "bool": True, + }, + } + + copied = copy_environment(original) + + # All types should be preserved + assert copied["scalar"].value == 42 + assert copied["string"] == "hello" + assert copied["number"] == 123 + assert copied["list"] == [1, 2, 3] + assert copied["nested"]["param"].value == 3.14 + assert copied["nested"]["bool"] is True + + # Modifications should be independent + copied["nested"]["param"] = ScalarParam(value=2.71) + assert original["nested"]["param"].value == 3.14 + assert copied["nested"]["param"].value == 2.71 + + +def test_policy_environment_type_inference(): + """Verify type hints work correctly for PolicyEnvironment input/output (mettsim).""" + policy_env = main( + main_target=MainTarget.policy_environment, + policy_date_str="2025-01-01", + orig_policy_objects={"root": METTSIM_ROOT}, + ) + + # Type checker should infer PolicyEnvironment -> PolicyEnvironment + copied_env: PolicyEnvironment = copy_environment(policy_env) + + # Function should work correctly + assert isinstance(copied_env, dict) + assert "payroll_tax" in copied_env From cbf95c1fddc77955384e41fcdf62007cb256f9f8 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Tue, 22 Jul 2025 15:26:00 +0200 Subject: [PATCH 089/109] Had merged without double-checking all tests... --- tests/ttsim/test_copy_environment.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/ttsim/test_copy_environment.py b/tests/ttsim/test_copy_environment.py index f9366b422c..48520c51f7 100644 --- a/tests/ttsim/test_copy_environment.py +++ b/tests/ttsim/test_copy_environment.py @@ -9,7 +9,7 @@ from ttsim import copy_environment, main from ttsim.interface_dag_elements import MainTarget -from ttsim.tt_dag_elements.param_objects import ScalarParam +from ttsim.tt_dag_elements.param_objects import RawParam, ScalarParam if TYPE_CHECKING: from ttsim.interface_dag_elements.typing import PolicyEnvironment @@ -75,17 +75,28 @@ def test_copy_full_policy_environment(): assert set(optree.tree_paths(policy_env)) == set(optree.tree_paths(copied_env)) # Get reference to nested parameter in both versions - original_param = policy_env["payroll_tax"]["employee"]["rate"] - copied_param = copied_env["payroll_tax"]["employee"]["rate"] + original_param = policy_env["orc_hunting_bounty"]["raw_bounties_per_orc"] + copied_param = copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"] # Values should be equal initially assert copied_param.value == original_param.value # Modify copy - should not affect original - copied_env["payroll_tax"]["employee"]["rate"] = ScalarParam(value=0.3) + copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"] = RawParam( + value={ + "small_orc": 500, + "large_orc": {"peasant_hunter": 500, "noble_hunter": 500}, + } + ) - assert policy_env["payroll_tax"]["employee"]["rate"].value == original_param.value - assert copied_env["payroll_tax"]["employee"]["rate"].value == 0.3 + assert ( + policy_env["orc_hunting_bounty"]["raw_bounties_per_orc"].value + == original_param.value + ) + assert copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"].value == { + "small_orc": 500, + "large_orc": {"peasant_hunter": 500, "noble_hunter": 500}, + } def test_deepcopy_fails_on_policy_environment(): From 6f12a598df1a216d123617b94a9cbb534499f20f Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Tue, 22 Jul 2025 17:44:45 +0200 Subject: [PATCH 090/109] Fail if param functions depend on policy functions. --- src/ttsim/interface_dag_elements/__init__.py | 3 + src/ttsim/interface_dag_elements/fail_if.py | 67 ++++++++ .../interface_dag_elements/test_failures.py | 144 ++++++++++++++++++ 3 files changed, 214 insertions(+) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 2c30e9a253..2c11c7e12c 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -54,6 +54,9 @@ class FailIf(MainTargetABC): non_convertible_objects_in_results_tree: str = ( "fail_if__non_convertible_objects_in_results_tree" ) + param_function_depends_on_column_objects: str = ( + "fail_if__param_function_depends_on_column_objects" + ) paths_are_missing_in_targets_tree_mapper: str = ( "fail_if__paths_are_missing_in_targets_tree_mapper" ) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 6c31d3a73e..58d6df8f7c 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -12,6 +12,7 @@ import numpy import optree import pandas as pd +from dags import get_free_arguments from ttsim.interface_dag_elements.interface_node_objects import fail_function from ttsim.interface_dag_elements.shared import get_name_of_group_by_id @@ -849,3 +850,69 @@ def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, A ) return out + + +@fail_function() +def param_function_depends_on_column_objects( + specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, +) -> None: + """Fail if any ParamFunction depends on ColumnObject arguments. + + Parameters + ---------- + specialized_environment__without_tree_logic_and_with_derived_functions + The specialized environment containing all functions and objects. + + Raises + ------ + ValueError + If any ParamFunction has ColumnObject arguments. + """ + param_functions = { + name: obj + for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() + if isinstance(obj, ParamFunction) + } + + column_objects = { + name: obj + for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() + if isinstance(obj, ColumnObject) + } + + violations: list[tuple[str, str]] = [] + for param_func_name, param_func in param_functions.items(): + func = param_func.function if hasattr(param_func, "function") else param_func + func_args = set(get_free_arguments(func)) + + allowed_column_object_args = [ + "evaluation_date", + "evaluation_year", + "evaluation_month", + "evaluation_day", + "policy_date", + "policy_year", + "policy_month", + "policy_day", + ] + + violations.extend( + (param_func_name, arg) + for arg in func_args + if arg in column_objects and arg not in allowed_column_object_args + ) + + if violations: + formatted_violations = format_list_linewise( + [ + f"{param_func_name} depends on {column_obj_name}" + for param_func_name, column_obj_name in violations + ] + ) + msg = format_errors_and_warnings( + "ParamFunctions should not depend on ColumnObjects. The following " + f"violations were found:\n\n{formatted_violations}\n\n" + "ParamFunctions should only depend on parameters and scalars, not on " + "ColumnObjects." + ) + raise ValueError(msg) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 1481664dc4..156b13396a 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -26,6 +26,7 @@ input_df_has_bool_or_numeric_column_names, input_df_mapper_columns_missing_in_df, input_df_mapper_has_incorrect_format, + param_function_depends_on_column_objects, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, ) @@ -35,6 +36,7 @@ DictParam, PiecewisePolynomialParam, PiecewisePolynomialParamValue, + ScalarParam, group_creation_function, param_function, policy_function, @@ -1413,3 +1415,145 @@ def test_raise_some_error_without_input_data( backend=backend, orig_policy_objects={"root": METTSIM_ROOT}, ) + + +@param_function() +def valid_param_function(x: int) -> int: + """A valid param function that only depends on parameters.""" + return x * 2 + + +@param_function() +def valid_param_function_with_evaluation_and_policy_year( + evaluation_year: int, + policy_year: int, +) -> int: + """A valid param function that only depends on evaluation_year and policy_year.""" + return evaluation_year - policy_year + + +@param_function() +def invalid_param_function(policy_func: int) -> int: + """An invalid param function that depends on a column object.""" + return policy_func * 2 + + +@policy_function() +def some_policy_function(x: int) -> int: + """A policy function for testing.""" + return x + 1 + + +@policy_input() +def some_policy_input() -> int: + """A policy input for testing.""" + return 1 + + +@policy_input() +def evaluation_year() -> int: + """A policy input for testing.""" + + +@policy_input() +def policy_year() -> int: + """A policy input for testing.""" + + +@pytest.mark.parametrize( + "specialized_environment", + [ + # Valid environment with only param functions and no dependencies + { + "valid_param": valid_param_function, + }, + # Valid environment with param functions and column objects but no dependencies + { + "valid_param": valid_param_function, + "policy_func": some_policy_function, + }, + # Valid environment with mixed types but no violations + { + "valid_param": valid_param_function, + "policy_func": some_policy_function, + "policy_input": some_policy_input, + "some_scalar": 42, + "some_dict_param": _SOME_DICT_PARAM, + }, + # Valid environment with evaluation_year and policy_year as scalars + { + "valid_param": valid_param_function_with_evaluation_and_policy_year, + "evaluation_year": ScalarParam(value=2025), + "policy_year": ScalarParam(value=2024), + }, + # Valid environment with evaluation_year and policy_year as policy inputs + { + "valid_param": valid_param_function_with_evaluation_and_policy_year, + "evaluation_year": evaluation_year, + "policy_year": policy_year, + }, + ], +) +def test_param_function_depends_on_column_objects_passes(specialized_environment): + """Test that valid environments pass the validation.""" + param_function_depends_on_column_objects(specialized_environment) + + +@pytest.mark.parametrize( + ("specialized_environment", "expected_error_match"), + [ + ( + { + "invalid_param": invalid_param_function, + "policy_func": some_policy_function, + }, + "invalid_param depends on policy_func", + ), + ( + { + "valid_param": valid_param_function, + "invalid_param": invalid_param_function, + "policy_func": some_policy_function, + }, + "invalid_param depends on policy_func", + ), + ], +) +def test_param_function_depends_on_column_objects_raises( + specialized_environment, expected_error_match +): + """Test that invalid environments raise the expected error.""" + with pytest.raises(ValueError, match=expected_error_match): + param_function_depends_on_column_objects(specialized_environment) + + +def test_param_function_depends_on_column_objects_via_main( + backend: Literal["jax", "numpy"], + xnp: ModuleType, +): + """Test that the param_function_depends_on_column_objects check works via main.""" + + with pytest.raises( + ValueError, + match="invalid_param depends on policy_func", + ): + main( + policy_date_str="2025-01-01", + main_target=MainTarget.results.df_with_mapper, + tt_targets={ + "tree": { + "invalid_param": None, + }, + }, + input_data={ + "tree": { + "p_id": xnp.array([1, 2, 3]), + "x": xnp.array([1, 2, 3]), + }, + }, + backend=backend, + policy_environment={ + "invalid_param": invalid_param_function, + "policy_func": some_policy_function, + }, + ) From 30662fa06b8e08612c3a55f2cd68a20de4863567 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Tue, 22 Jul 2025 17:45:20 +0200 Subject: [PATCH 091/109] Revert "Fail if param functions depend on policy functions." This reverts commit 6f12a598df1a216d123617b94a9cbb534499f20f. --- src/ttsim/interface_dag_elements/__init__.py | 3 - src/ttsim/interface_dag_elements/fail_if.py | 67 -------- .../interface_dag_elements/test_failures.py | 144 ------------------ 3 files changed, 214 deletions(-) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 2c11c7e12c..2c30e9a253 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -54,9 +54,6 @@ class FailIf(MainTargetABC): non_convertible_objects_in_results_tree: str = ( "fail_if__non_convertible_objects_in_results_tree" ) - param_function_depends_on_column_objects: str = ( - "fail_if__param_function_depends_on_column_objects" - ) paths_are_missing_in_targets_tree_mapper: str = ( "fail_if__paths_are_missing_in_targets_tree_mapper" ) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 58d6df8f7c..6c31d3a73e 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -12,7 +12,6 @@ import numpy import optree import pandas as pd -from dags import get_free_arguments from ttsim.interface_dag_elements.interface_node_objects import fail_function from ttsim.interface_dag_elements.shared import get_name_of_group_by_id @@ -850,69 +849,3 @@ def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, A ) return out - - -@fail_function() -def param_function_depends_on_column_objects( - specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, -) -> None: - """Fail if any ParamFunction depends on ColumnObject arguments. - - Parameters - ---------- - specialized_environment__without_tree_logic_and_with_derived_functions - The specialized environment containing all functions and objects. - - Raises - ------ - ValueError - If any ParamFunction has ColumnObject arguments. - """ - param_functions = { - name: obj - for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() - if isinstance(obj, ParamFunction) - } - - column_objects = { - name: obj - for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() - if isinstance(obj, ColumnObject) - } - - violations: list[tuple[str, str]] = [] - for param_func_name, param_func in param_functions.items(): - func = param_func.function if hasattr(param_func, "function") else param_func - func_args = set(get_free_arguments(func)) - - allowed_column_object_args = [ - "evaluation_date", - "evaluation_year", - "evaluation_month", - "evaluation_day", - "policy_date", - "policy_year", - "policy_month", - "policy_day", - ] - - violations.extend( - (param_func_name, arg) - for arg in func_args - if arg in column_objects and arg not in allowed_column_object_args - ) - - if violations: - formatted_violations = format_list_linewise( - [ - f"{param_func_name} depends on {column_obj_name}" - for param_func_name, column_obj_name in violations - ] - ) - msg = format_errors_and_warnings( - "ParamFunctions should not depend on ColumnObjects. The following " - f"violations were found:\n\n{formatted_violations}\n\n" - "ParamFunctions should only depend on parameters and scalars, not on " - "ColumnObjects." - ) - raise ValueError(msg) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 156b13396a..1481664dc4 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -26,7 +26,6 @@ input_df_has_bool_or_numeric_column_names, input_df_mapper_columns_missing_in_df, input_df_mapper_has_incorrect_format, - param_function_depends_on_column_objects, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, ) @@ -36,7 +35,6 @@ DictParam, PiecewisePolynomialParam, PiecewisePolynomialParamValue, - ScalarParam, group_creation_function, param_function, policy_function, @@ -1415,145 +1413,3 @@ def test_raise_some_error_without_input_data( backend=backend, orig_policy_objects={"root": METTSIM_ROOT}, ) - - -@param_function() -def valid_param_function(x: int) -> int: - """A valid param function that only depends on parameters.""" - return x * 2 - - -@param_function() -def valid_param_function_with_evaluation_and_policy_year( - evaluation_year: int, - policy_year: int, -) -> int: - """A valid param function that only depends on evaluation_year and policy_year.""" - return evaluation_year - policy_year - - -@param_function() -def invalid_param_function(policy_func: int) -> int: - """An invalid param function that depends on a column object.""" - return policy_func * 2 - - -@policy_function() -def some_policy_function(x: int) -> int: - """A policy function for testing.""" - return x + 1 - - -@policy_input() -def some_policy_input() -> int: - """A policy input for testing.""" - return 1 - - -@policy_input() -def evaluation_year() -> int: - """A policy input for testing.""" - - -@policy_input() -def policy_year() -> int: - """A policy input for testing.""" - - -@pytest.mark.parametrize( - "specialized_environment", - [ - # Valid environment with only param functions and no dependencies - { - "valid_param": valid_param_function, - }, - # Valid environment with param functions and column objects but no dependencies - { - "valid_param": valid_param_function, - "policy_func": some_policy_function, - }, - # Valid environment with mixed types but no violations - { - "valid_param": valid_param_function, - "policy_func": some_policy_function, - "policy_input": some_policy_input, - "some_scalar": 42, - "some_dict_param": _SOME_DICT_PARAM, - }, - # Valid environment with evaluation_year and policy_year as scalars - { - "valid_param": valid_param_function_with_evaluation_and_policy_year, - "evaluation_year": ScalarParam(value=2025), - "policy_year": ScalarParam(value=2024), - }, - # Valid environment with evaluation_year and policy_year as policy inputs - { - "valid_param": valid_param_function_with_evaluation_and_policy_year, - "evaluation_year": evaluation_year, - "policy_year": policy_year, - }, - ], -) -def test_param_function_depends_on_column_objects_passes(specialized_environment): - """Test that valid environments pass the validation.""" - param_function_depends_on_column_objects(specialized_environment) - - -@pytest.mark.parametrize( - ("specialized_environment", "expected_error_match"), - [ - ( - { - "invalid_param": invalid_param_function, - "policy_func": some_policy_function, - }, - "invalid_param depends on policy_func", - ), - ( - { - "valid_param": valid_param_function, - "invalid_param": invalid_param_function, - "policy_func": some_policy_function, - }, - "invalid_param depends on policy_func", - ), - ], -) -def test_param_function_depends_on_column_objects_raises( - specialized_environment, expected_error_match -): - """Test that invalid environments raise the expected error.""" - with pytest.raises(ValueError, match=expected_error_match): - param_function_depends_on_column_objects(specialized_environment) - - -def test_param_function_depends_on_column_objects_via_main( - backend: Literal["jax", "numpy"], - xnp: ModuleType, -): - """Test that the param_function_depends_on_column_objects check works via main.""" - - with pytest.raises( - ValueError, - match="invalid_param depends on policy_func", - ): - main( - policy_date_str="2025-01-01", - main_target=MainTarget.results.df_with_mapper, - tt_targets={ - "tree": { - "invalid_param": None, - }, - }, - input_data={ - "tree": { - "p_id": xnp.array([1, 2, 3]), - "x": xnp.array([1, 2, 3]), - }, - }, - backend=backend, - policy_environment={ - "invalid_param": invalid_param_function, - "policy_func": some_policy_function, - }, - ) From e4e7ada6c81c8829d2aeef07838b2cf5b6b2da63 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 23 Jul 2025 10:12:22 +0200 Subject: [PATCH 092/109] Fail if ParamFunctions depends on ColumnObjects (#1044) ### What problem do you want to solve? Closes #999 Fails if any `param_function` depends on a `ColumnObject`, with the exception being `evaluation_x` and `policy_x` (they are `PolicyInputs`). --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- .../abz\303\274ge/vorsorge.py" | 4 +- src/_gettsim/lohnsteuer/einkommen.py | 4 +- src/ttsim/interface_dag_elements/__init__.py | 3 + src/ttsim/interface_dag_elements/fail_if.py | 47 +++++++ src/ttsim/testing_utils.py | 2 +- .../interface_dag_elements/test_failures.py | 118 ++++++++++++++++++ 6 files changed, 173 insertions(+), 5 deletions(-) diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" index 2dddce5af4..6c2dbf4a77 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" @@ -200,7 +200,7 @@ def vorsorgeaufwendungen_keine_kappung_krankenversicherung_y_sn( @param_function(start_date="2005-01-01", end_date="2022-12-31") def rate_abzugsfähige_altersvorsorgeaufwendungen( parameter_einführungsfaktor_altersvorsorgeaufwendungen: PiecewisePolynomialParamValue, - evaluation_year: int, + policy_year: int, xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the @@ -214,7 +214,7 @@ def rate_abzugsfähige_altersvorsorgeaufwendungen( """ return piecewise_polynomial( - x=evaluation_year, + x=policy_year, parameters=parameter_einführungsfaktor_altersvorsorgeaufwendungen, xnp=xnp, ) diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 73c81ebc46..57a2702699 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -142,7 +142,7 @@ def vorsorge_krankenversicherungsbeiträge_option_b_ab_2019( @param_function(start_date="2005-01-01", end_date="2022-12-31") def einführungsfaktor_rentenversicherungsaufwendungen( parameter_einführungsfaktor_rentenversicherungsaufwendungen: PiecewisePolynomialParamValue, - evaluation_year: int, + policy_year: int, xnp: ModuleType, ) -> dict[str, Any]: """Calculate introductory factor for pension expense deductions which depends on the @@ -156,7 +156,7 @@ def einführungsfaktor_rentenversicherungsaufwendungen( """ return piecewise_polynomial( - x=evaluation_year, + x=policy_year, parameters=parameter_einführungsfaktor_rentenversicherungsaufwendungen, xnp=xnp, ) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 2c30e9a253..2c11c7e12c 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -54,6 +54,9 @@ class FailIf(MainTargetABC): non_convertible_objects_in_results_tree: str = ( "fail_if__non_convertible_objects_in_results_tree" ) + param_function_depends_on_column_objects: str = ( + "fail_if__param_function_depends_on_column_objects" + ) paths_are_missing_in_targets_tree_mapper: str = ( "fail_if__paths_are_missing_in_targets_tree_mapper" ) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index 6c31d3a73e..a645d707b2 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -12,6 +12,7 @@ import numpy import optree import pandas as pd +from dags import get_free_arguments from ttsim.interface_dag_elements.interface_node_objects import fail_function from ttsim.interface_dag_elements.shared import get_name_of_group_by_id @@ -849,3 +850,49 @@ def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, A ) return out + + +@fail_function() +def param_function_depends_on_column_objects( + specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, +) -> None: + """Fail if any ParamFunction depends on ColumnObject arguments. + + Parameters + ---------- + specialized_environment__without_tree_logic_and_with_derived_functions + The specialized environment containing all functions and objects. + + Raises + ------ + ValueError + If any ParamFunction has ColumnObject arguments. + """ + param_functions = { + name: obj + for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() + if isinstance(obj, ParamFunction) + } + + column_objects = { + name: obj + for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() + if isinstance(obj, ColumnObject) + } + + violations = "" + for param_func_name, param_func in param_functions.items(): + func_args = set(get_free_arguments(param_func.function)) + + for arg in func_args: + if arg in column_objects: + violations += f" `{param_func_name}` depends on `{arg}`\n" + + if violations: + msg = ( + "ParamFunctions must not depend on ColumnObjects. The following " + f"violations were found:\n\n{violations}\n" + "ParamFunctions may only depend on parameters and scalars, not on " + "ColumnObjects." + ) + raise ValueError(msg) diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index c662dd0a01..acad2c4b40 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -48,7 +48,7 @@ def cached_policy_environment( policy_date=policy_date, orig_policy_objects={"root": root}, backend=backend, - include_fail_nodes=False, + include_fail_nodes=True, include_warn_nodes=False, ) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 1481664dc4..2508ba7eae 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -26,6 +26,7 @@ input_df_has_bool_or_numeric_column_names, input_df_mapper_columns_missing_in_df, input_df_mapper_has_incorrect_format, + param_function_depends_on_column_objects, paths_are_missing_in_targets_tree_mapper, targets_are_not_in_specialized_environment_or_data, ) @@ -1413,3 +1414,120 @@ def test_raise_some_error_without_input_data( backend=backend, orig_policy_objects={"root": METTSIM_ROOT}, ) + + +@param_function() +def valid_param_function(x: int) -> int: + """A valid param function that only depends on parameters.""" + return x * 2 + + +@param_function() +def invalid_param_function(some_policy_function: int) -> int: + """An invalid param function that depends on a column object.""" + return some_policy_function * 2 + + +@policy_function() +def some_policy_function(x: int) -> int: + """A policy function for testing.""" + return x + 1 + + +@policy_input() +def some_policy_input() -> int: + """A policy input for testing.""" + + +@pytest.mark.parametrize( + "specialized_environment", + [ + # Valid environment with only param functions and no dependencies + { + "valid_param": valid_param_function, + }, + # Valid environment with param functions and column objects but no dependencies + { + "valid_param": valid_param_function, + "some_policy_function": some_policy_function, + }, + # Valid environment with mixed types but no violations + { + "valid_param": valid_param_function, + "some_policy_function": some_policy_function, + "policy_input": some_policy_input, + "some_scalar": 42, + "some_dict_param": _SOME_DICT_PARAM, + }, + ], +) +def test_param_function_depends_on_column_objects_passes(specialized_environment): + """Test that valid environments pass the validation.""" + param_function_depends_on_column_objects(specialized_environment) + + +@pytest.mark.parametrize( + ("specialized_environment", "expected_error_match"), + [ + ( + { + "invalid_param": invalid_param_function, + "some_policy_function": some_policy_function, + }, + "`invalid_param` depends on `some_policy_function`", + ), + ( + { + "invalid_param": invalid_param_function, + "some_policy_function": some_policy_input, + }, + "`invalid_param` depends on `some_policy_function`", + ), + ( + { + "valid_param": valid_param_function, + "invalid_param": invalid_param_function, + "some_policy_function": some_policy_function, + }, + "`invalid_param` depends on `some_policy_function`", + ), + ], +) +def test_param_function_depends_on_column_objects_raises( + specialized_environment, expected_error_match +): + """Test that invalid environments raise the expected error.""" + with pytest.raises(ValueError, match=expected_error_match): + param_function_depends_on_column_objects(specialized_environment) + + +def test_param_function_depends_on_column_objects_via_main( + backend: Literal["jax", "numpy"], + xnp: ModuleType, +): + """Test that the param_function_depends_on_column_objects check works via main.""" + + with pytest.raises( + ValueError, + match="`invalid_param` depends on `some_policy_function`", + ): + main( + policy_date_str="2025-01-01", + main_target=MainTarget.results.df_with_mapper, + tt_targets={ + "tree": { + "invalid_param": None, + }, + }, + input_data={ + "tree": { + "p_id": xnp.array([1, 2, 3]), + "x": xnp.array([1, 2, 3]), + }, + }, + backend=backend, + policy_environment={ + "invalid_param": invalid_param_function, + "some_policy_function": some_policy_function, + }, + ) From 3437b127aee77aba704f97879c3bfa5729db279c Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 23 Jul 2025 11:37:47 +0200 Subject: [PATCH 093/109] Raise more errors during vectorization (#1043) Fixes #869 - Raise an error when type-conversion calls like float, int, etc. are encountered - Raise an error when augmented assignment (+= and -= and *= and /= and friends) are encountered - Remove some tests that actually relied on that behavior, make test numbering consistent. --- CHANGES.md | 8 + src/ttsim/tt_dag_elements/vectorization.py | 20 ++ .../tt_dag_elements/test_vectorization.py | 198 +++++++++++------- 3 files changed, 155 insertions(+), 71 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4fec7db13d..f45839ad7e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,14 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1043` Raise more errors during vectorization ({ghuser}`hmgaudecker`, + {ghuser}`timmens`) + +- {gh}`1044` Fail if ParamFunctions depends on ColumnObjects ({ghuser}`MImmesberger`, + {ghuser}`hmgaudecker`) + +- {gh}`1042` Add copy_environment function ({ghuser}`timmens`, {ghuser}`hmgaudecker`) + - {gh}`1041` Don't create DAG cycles via automatically added functions ({ghuser}`MImmesberger`) diff --git a/src/ttsim/tt_dag_elements/vectorization.py b/src/ttsim/tt_dag_elements/vectorization.py index 1a38c9e9b3..3c0d041933 100644 --- a/src/ttsim/tt_dag_elements/vectorization.py +++ b/src/ttsim/tt_dag_elements/vectorization.py @@ -211,6 +211,16 @@ def __init__(self, module: str, func_loc: str, xnp: ModuleType) -> None: self.xnp = xnp def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 + # Forbid type-conversion calls + forbidden_type_conversions = {"float", "int", "bool", "complex", "str"} + if hasattr(node.func, "id") and node.func.id in forbidden_type_conversions: + msg = ( + f"Forbidden type conversion '{node.func.id}' detected in function. " + f"Type conversions like float(), int(), bool(), complex(), str() are " + f"not allowed in vectorized functions.\n\nFunction: {self.func_loc}\n\n" + f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" + ) + raise TranslateToVectorizableError(msg) self.generic_visit(node) return _call_to_call_from_module( node, @@ -219,6 +229,16 @@ def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 xnp=self.xnp, ) + def visit_AugAssign(self, node: ast.AugAssign) -> ast.AST: # noqa: N802 + # Forbid any augmented assignment (+=, -=, *=, /=, etc.) + msg = ( + "Augmented assignment is not allowed in vectorized functions. " + "Operations like +=, -=, *=, /=, etc. are forbidden.\n\n" + f"Function: {self.func_loc}\n\n" + f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" + ) + raise TranslateToVectorizableError(msg) + def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.UnaryOp | ast.Call: # noqa: N802 if isinstance(node.op, ast.Not): return _not_to_call(node, module=self.module) diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py index 00b700ec37..834e695f0a 100644 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ b/tests/ttsim/tt_dag_elements/test_vectorization.py @@ -61,18 +61,18 @@ def test_compare_str(): # ====================================================================================== -def f1(x): +def f0(x): if x < 0: return 0 else: return 1 -def f1_exp(x): +def f0_exp(x): return numpy.where(x < 0, 0, 1) -def f2(x): +def f1(x): if x < 0: out = 0 else: @@ -80,33 +80,33 @@ def f2(x): return out -def f2_exp(x): +def f1_exp(x): out = numpy.where(x < 0, 0, 1) return out -def f3(x): +def f2(x): return 0 if x < 0 else 1 -def f3_exp(x): +def f2_exp(x): return numpy.where(x < 0, 0, 1) -def f4(x): +def f3(x): out = 1 if x < 0: out = 0 return out -def f4_exp(x): +def f3_exp(x): out = 1 out = numpy.where(x < 0, 0, out) return out -def f5(x): +def f4(x): if x < 0: out = -1 elif x > 0: @@ -116,12 +116,12 @@ def f5(x): return out -def f5_exp(x): +def f4_exp(x): out = numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) return out -def f6(flag, another_flag): +def f5(flag, another_flag): if flag and not another_flag: out = 1 else: @@ -129,49 +129,49 @@ def f6(flag, another_flag): return out -def f6_exp(flag, another_flag): +def f5_exp(flag, another_flag): out = numpy.where(numpy.logical_and(flag, numpy.logical_not(another_flag)), 1, 0) return out -def f7(x): +def f6(x): out = 0 if x < 0 else 1 return out -def f7_exp(x): +def f6_exp(x): out = numpy.where(x < 0, 0, 1) return out -def f8(x): +def f7(x): return -1 if x < 0 else (1 if x > 0 else 0) -def f8_exp(x): +def f7_exp(x): return numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) # expect no change since there is no if-clause and no [and|or] statement. -def f9(x): +def f8(x): y = numpy.sum(x) z = numpy.prod(x) return y * z -def f10(x): +def f9(x): flag = (x < 0) and (x > -1) another_flag = (x < 0) or (x > -1) return flag and not another_flag -def f10_exp(x): +def f9_exp(x): flag = numpy.logical_and(x < 0, x > -1) another_flag = numpy.logical_or(x < 0, x > -1) return numpy.logical_and(flag, numpy.logical_not(another_flag)) -def f11(x): +def f10(x): if x < 0: out = -1 else: @@ -179,25 +179,12 @@ def f11(x): return out -def f11_exp(x): +def f10_exp(x): out = numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) return out -def f12(x): - out = 0 - if x < 1: - out += 1 - return out - - -def f12_exp(x): - out = 0 - out += numpy.where(x < 1, 1, out) - return out - - -def f13(x): +def f11(x): a = x < 0 b = x > 0 c = x != 0 @@ -205,7 +192,7 @@ def f13(x): return ((a and b) or c) and d -def f13_exp(x): +def f11_exp(x): a = x < 0 b = x > 0 c = x != 0 @@ -213,7 +200,7 @@ def f13_exp(x): return numpy.logical_and(numpy.logical_or(numpy.logical_and(a, b), c), d) -def f14(x): +def f12(x): a = x < 0 b = x > 0 c = x != 0 @@ -221,7 +208,7 @@ def f14(x): return (a and b and c) or d -def f14_exp(x): +def f12_exp(x): a = x < 0 b = x > 0 c = x != 0 @@ -229,42 +216,26 @@ def f14_exp(x): return numpy.logical_or(numpy.logical_and(numpy.logical_and(a, b), c), d) -def f15(x): +def f13(x): return min(x, 0) -def f15_exp(x): +def f13_exp(x): return numpy.minimum(x, 0) -def f16(x): - return float(sum(x)) - - -def f16_exp(x): - return float(numpy.sum(x)) - - -def f17(x): +def f14(x): a = x < 0 b = x // 2 return any((a, b)) -def f17_exp(x): +def f14_exp(x): a = x < 0 b = x // 2 return numpy.any((a, b)) -def f18(x): - return int(any(x)) + 1 - - -def f18_exp(x): - return int(numpy.any(x)) + 1 - - x = numpy.arange(-10, 10) rng = numpy.random.default_rng(seed=0) flag = rng.binomial(1, 0.25, size=100) @@ -272,24 +243,21 @@ def f18_exp(x): TEST_CASES = [ + (f0, f0_exp, (x,)), (f1, f1_exp, (x,)), (f2, f2_exp, (x,)), (f3, f3_exp, (x,)), (f4, f4_exp, (x,)), - (f5, f5_exp, (x,)), - (f6, f6_exp, (flag, another_flag)), + (f5, f5_exp, (flag, another_flag)), + (f6, f6_exp, (x,)), (f7, f7_exp, (x,)), - (f8, f8_exp, (x,)), - (f9, f9, (x,)), + (f8, f8, (x,)), + (f9, f9_exp, (x,)), (f10, f10_exp, (x,)), (f11, f11_exp, (x,)), (f12, f12_exp, (x,)), (f13, f13_exp, (x,)), (f14, f14_exp, (x,)), - (f15, f15_exp, (x,)), - (f16, f16_exp, (x,)), - (f17, f17_exp, (x,)), - (f18, f18_exp, (x,)), ] @@ -351,7 +319,7 @@ def g4(x): def test_notimplemented_error(): with pytest.raises(NotImplementedError): - _make_vectorizable(f1, backend="dask", xnp=numpy) + _make_vectorizable(f0, backend="dask", xnp=numpy) @pytest.mark.parametrize("func", [g1, g2, g3, g4]) @@ -687,14 +655,14 @@ def test_is_lambda_function_non_function_input(): assert not _is_lambda_function(None) -def test_lambda_functions_disallowed_make_vectorizable(): +def test_lambda_functions_disallowed_make_vectorizable(xnp): with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - _make_vectorizable(lambda x: x, backend="numpy", xnp=numpy) + _make_vectorizable(lambda x: x, backend="numpy", xnp=xnp) -def test_lambda_functions_disallowed_make_vectorizable_source(): +def test_lambda_functions_disallowed_make_vectorizable_source(xnp): with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - make_vectorizable_source(lambda x: x, backend="numpy", xnp=numpy) + make_vectorizable_source(lambda x: x, backend="numpy", xnp=xnp) # ====================================================================================== @@ -796,3 +764,91 @@ def f(a, x: int, y: float, z: bool, p1: str, p2: dict[str, float]) -> float: # "return": "FloatColumn", } assert inspect.get_annotations(vectorized) == expected_annotations + + +# ====================================================================================== +# Test forbidden type conversions and augmented assignments +# ====================================================================================== + + +def forbidden_type_conversion_float(x): + return float(x) + + +def forbidden_type_conversion_int(x): + return int(x) + + +def forbidden_type_conversion_bool(x): + return bool(x) + + +def forbidden_type_conversion_complex(x): + return complex(x) + + +def forbidden_type_conversion_str(x): + return str(x) + + +def forbidden_augassign_add(x): + y = x + y += 1 + return y + + +def forbidden_augassign_sub(x): + y = x + y -= 1 + return y + + +def forbidden_augassign_mult(x): + y = x + y *= 2 + return y + + +def forbidden_augassign_div(x): + y = x + y /= 2 + return y + + +@pytest.mark.parametrize( + "func", + [ + forbidden_type_conversion_float, + forbidden_type_conversion_int, + forbidden_type_conversion_bool, + forbidden_type_conversion_complex, + forbidden_type_conversion_str, + ], +) +def test_forbidden_type_conversions_raise(func, xnp): + """Test that forbidden type conversions raise the correct error.""" + with pytest.raises(TranslateToVectorizableError, match="Forbidden type conversion"): + _make_vectorizable(func, backend="numpy", xnp=xnp) + with pytest.raises(TranslateToVectorizableError, match="Forbidden type conversion"): + make_vectorizable_source(func, backend="numpy", xnp=xnp) + + +@pytest.mark.parametrize( + "func", + [ + forbidden_augassign_add, + forbidden_augassign_sub, + forbidden_augassign_mult, + forbidden_augassign_div, + ], +) +def test_forbidden_augassign_raise(func, xnp): + """Test that augmented assignments raise the correct error.""" + with pytest.raises( + TranslateToVectorizableError, match="Augmented assignment is not allowed" + ): + _make_vectorizable(func, backend="numpy", xnp=xnp) + with pytest.raises( + TranslateToVectorizableError, match="Augmented assignment is not allowed" + ): + make_vectorizable_source(func, backend="numpy", xnp=xnp) From b4c6a6f9d2f0453f0d1f2f03d1c40a357b5f7e68 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <immesberger@posteo.de> Date: Wed, 23 Jul 2025 15:13:54 +0200 Subject: [PATCH 094/109] Start with tutorial notebook. --- .../modify_taxes_and_transfers.ipynb | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 docs/how_to_guides/modify_taxes_and_transfers.ipynb diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modify_taxes_and_transfers.ipynb new file mode 100644 index 0000000000..54e7a5f12a --- /dev/null +++ b/docs/how_to_guides/modify_taxes_and_transfers.ipynb @@ -0,0 +1,148 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "0", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from gettsim import main\n", + "from ttsim import MainTarget\n", + "\n", + "GETTSIM_ROOT = Path.cwd().parent.parent / \"src\" / \"_gettsim\"" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "# Modifying Taxes and Transfers\n", + "\n", + "GETTSIM's design allows you to go beyond the depiction of the current (or historical)\n", + "tax and transfer system. Analyzing counterfactual reform scenarios, ranging from small\n", + "changes of certain parameters of the tax and transfer system, to the introduction of\n", + "large-scale reforms, is a common use case.\n", + "\n", + "This tutorial showcases how to modify taxes and transfers when using GETTSIM.\n", + "\n", + "Here, we focus on small reforms to the means-tested social welfare benefits for\n", + "the unemployed (German: Bürgergeld; until 2022: Arbeitslosengeld II). We pick this\n", + "example because Bürgergeld is a fairly complex system that uses the entire range of\n", + "objects TTSIM offers." + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "## Status Quo\n", + "\n", + "The heart of GETTSIM's tax and transfer implementation is the `policy_date`-specific\n", + "`policy_environment`. The `policy_environment` holds all the parameters and functions\n", + "necessary to compute the taxes and transfers for a given policy date. The\n", + "`policy_environment` is a nested dictionary with strings as keys and `TTSIM-objects`\n", + "as values.\n", + "\n", + "The `policy_environment` has 3 broad types of objects (with many subclasses):\n", + "- Objects that operate on columns of data, either provided by the user or computed by\n", + " previous functions. We call those `ColumnObjects`.\n", + "- Objects that contain parameters. We call those `ParamObject`s.\n", + "- Objects that process parameters in a way such that they can be used by the\n", + " `ColumnObjects`. We call those `ParamFunction`s.\n", + "\n", + "The first step when modifying taxes and transfers is to create the current policy\n", + "environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment = main(\n", + " main_target=MainTarget.policy_environment,\n", + " policy_date_str=\"2025-01-01\",\n", + " backend=\"numpy\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "main(\n", + " main_target=MainTarget.templates.input_data_dtypes,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data={\n", + " \"tree\": {\n", + " \"p_id\": np.array([1]),\n", + " \"arbeitslosengeld_2\": {\n", + " \"bruttoeinkommen_m\": np.array([0.0]),\n", + " },\n", + " }\n", + " },\n", + " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5", + "metadata": {}, + "source": [ + "### UThe " + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "## Replacing/Adding Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Replacing/Adding Functions" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## " + ] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 205f3585d90f780cd3794ce0cb813ba5d4d757e2 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 23 Jul 2025 16:15:25 +0200 Subject: [PATCH 095/109] Fail if backend has changed (#1046) Add `fail_if.backend_has_changed`. Lessons learned: - Numpy can handle Jax arrays (see test) - Jax can handle NumPy arrays that are passed as the processed data (see test) - The problematic case are parameters that are partialled to functions. Unfortunately, these are typically custom objects. We to loop over them and check whether any of them happens to be a numpy array --- src/ttsim/interface_dag_elements/__init__.py | 1 + src/ttsim/interface_dag_elements/fail_if.py | 91 ++++++++++++++----- src/ttsim/testing_utils.py | 10 ++ src/ttsim/tt_dag_elements/param_objects.py | 7 ++ .../interface_dag_elements/test_failures.py | 86 +++++++++++++++++- .../test_policy_environment.py | 4 +- .../test_piecewise_polynomial.py | 4 +- 7 files changed, 176 insertions(+), 27 deletions(-) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py index 2c11c7e12c..845362afe0 100644 --- a/src/ttsim/interface_dag_elements/__init__.py +++ b/src/ttsim/interface_dag_elements/__init__.py @@ -32,6 +32,7 @@ class WarnIf(MainTargetABC): class FailIf(MainTargetABC): active_periods_overlap: str = "fail_if__active_periods_overlap" any_paths_are_invalid: str = "fail_if__any_paths_are_invalid" + backend_has_changed: str = "fail_if__backend_has_changed" environment_is_invalid: str = "fail_if__environment_is_invalid" foreign_keys_are_invalid_in_data: str = "fail_if__foreign_keys_are_invalid_in_data" group_ids_are_outside_top_level_namespace: str = ( diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py index a645d707b2..a74143260c 100644 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ b/src/ttsim/interface_dag_elements/fail_if.py @@ -1,11 +1,12 @@ from __future__ import annotations import datetime +import functools import itertools import textwrap from dataclasses import dataclass from types import ModuleType -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any, Literal import dags.tree as dt import networkx as nx @@ -14,6 +15,12 @@ import pandas as pd from dags import get_free_arguments +try: + import jax +except ImportError: + jax = None + + from ttsim.interface_dag_elements.interface_node_objects import fail_function from ttsim.interface_dag_elements.shared import get_name_of_group_by_id from ttsim.tt_dag_elements.column_objects_param_function import ( @@ -261,21 +268,16 @@ def paths_are_missing_in_targets_tree_mapper( @fail_function() -def input_data_tree_is_invalid(input_data__tree: NestedData, xnp: ModuleType) -> None: - """ - Validate the basic structure of the input data tree. - - Parameters - ---------- - input_data__tree - The data tree. - """ +def input_data_tree_is_invalid( + input_data__tree: NestedData, backend: Literal["numpy", "jax"], xnp: ModuleType +) -> None: + """Validate the basic structure of the input data tree.""" + valid_leaf_types = (pd.Series, numpy.ndarray, xnp.ndarray) + if backend == "numpy" and jax is not None: + valid_leaf_types = (*valid_leaf_types, jax.numpy.ndarray) assert_valid_ttsim_pytree( tree=input_data__tree, - leaf_checker=lambda leaf: isinstance( - leaf, - pd.Series | numpy.ndarray | xnp.ndarray, - ), + leaf_checker=lambda leaf: isinstance(leaf, valid_leaf_types), tree_name="input_data__tree", ) @@ -479,21 +481,40 @@ def group_variables_are_not_constant_within_groups( def non_convertible_objects_in_results_tree( processed_data: QNameData, results__tree: NestedData, + backend: Literal["numpy", "jax"], xnp: ModuleType, ) -> None: - """Fail if results should be converted to a DataFrame but contain non-convertible - objects. - """ - _numeric_types = (int, float, bool, xnp.integer, xnp.floating, xnp.bool_) + """Fail if results should be converted to a DataFrame but cannot.""" + _numeric_types = ( + int, + float, + bool, + numpy.integer, + numpy.floating, + numpy.bool_, + xnp.integer, + xnp.floating, + xnp.bool_, + ) + _array_types = (numpy.ndarray, xnp.ndarray) + if backend == "numpy" and jax is not None: + _numeric_types = ( + *_numeric_types, + jax.numpy.integer, + jax.numpy.floating, + jax.numpy.bool_, + ) + _array_types = (*_array_types, jax.numpy.ndarray) + expected_object_length = len(next(iter(processed_data.values()))) paths_with_incorrect_types: list[str] = [] paths_with_incorrect_length: list[str] = [] - for path, data in dt.flatten_to_tree_paths(results__tree).items(): - if isinstance(data, xnp.ndarray): - if len(data) not in {1, expected_object_length}: + for path, column_data in dt.flatten_to_tree_paths(results__tree).items(): + if isinstance(column_data, _array_types): + if len(column_data) not in {1, expected_object_length}: paths_with_incorrect_length.append(str(path)) - elif isinstance(data, _numeric_types): + elif isinstance(column_data, _numeric_types): continue else: paths_with_incorrect_types.append(str(path)) @@ -527,7 +548,7 @@ def input_df_has_bool_or_numeric_column_names( common_msg = format_errors_and_warnings( """DataFrame column names cannot be booleans or numbers. This restriction prevents ambiguity between actual column references and values intended for - broadcasting. + broadcasting (i.e., just supplying a single value applying to all rows). """, ) bool_column_names = [ @@ -639,6 +660,30 @@ def input_df_mapper_has_incorrect_format( raise TypeError(msg) +@fail_function() +def backend_has_changed( + specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, + backend: Literal["numpy", "jax"], +) -> None: + """Fail if the backend has changed.""" + if backend == "numpy": + return + + issues = "" + for func in specialized_environment__with_partialled_params_and_scalars.values(): + if isinstance(func, functools.partial): + for argname, arg in func.keywords.items(): + if isinstance(arg, numpy.ndarray) or any( + isinstance(getattr(arg, attr), numpy.ndarray) for attr in dir(arg) + ): + issues += f" {dt.tree_path_from_qname(argname)}\n" + if issues: + raise ValueError( + "Backend has changed from numpy to jax.\n\n" + f"Found numpy arrays in:\n\n{issues}" + ) + + @fail_function() def tt_root_nodes_are_missing( specialized_environment__tax_transfer_dag: nx.DiGraph, diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py index acad2c4b40..a719712200 100644 --- a/src/ttsim/testing_utils.py +++ b/src/ttsim/testing_utils.py @@ -56,6 +56,16 @@ def cached_policy_environment( class PolicyTest: """A class for a single policy test.""" + __slots__ = ( + "expected_output_tree", + "info", + "input_tree", + "path", + "policy_date", + "test_dir", + "xnp", + ) + def __init__( self, info: NestedData, diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py index dbee48cd22..00f0e306ec 100644 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ b/src/ttsim/tt_dag_elements/param_objects.py @@ -114,6 +114,13 @@ class ConsecutiveIntLookupTableParam(ParamObject): class ConsecutiveIntLookupTableParamValue: """The `value` for ConsecutiveIntLookupTable.""" + __slots__ = ( + "bases_to_subtract", + "lookup_multipliers", + "values_to_look_up", + "xnp", + ) + bases_to_subtract: Int[Array, "n_rows n_cols"] lookup_multipliers: Int[Array, "n_rows n_cols"] values_to_look_up: ( diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 2508ba7eae..8b923fad3a 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -11,7 +11,12 @@ import pandas as pd import pytest -from ttsim import InputData, MainTarget, main +try: + import jax +except ImportError: + jax = None + +from ttsim import InputData, MainTarget, OrigPolicyObjects, TTTargets, main from ttsim.interface_dag_elements.fail_if import ( ConflictingActivePeriodsError, _param_with_active_periods, @@ -1416,6 +1421,85 @@ def test_raise_some_error_without_input_data( ) +@pytest.mark.skipif(jax is None, reason="Jax is not installed") +def test_backend_has_changed_from_jax_to_numpy_passes(): + policy_environment = main( + main_target=MainTarget.policy_environment, + policy_date_str="2000-01-01", + orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), + backend="jax", + ) + input_data = InputData.tree( + tree={ + "p_id": jax.numpy.array([0, 1, 2]), # type: ignore[union-attr] + "property_tax": { + "acre_size_in_hectares": jax.numpy.array([5, 20, 200]), # type: ignore[union-attr] + }, + } + ) + main( + main_target=MainTarget.results.df_with_nested_columns, + input_data=input_data, + policy_environment=policy_environment, + tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), + backend="numpy", + ) + + +@pytest.mark.skipif(jax is None, reason="Jax is not installed") +def test_backend_has_changed_from_numpy_for_processed_data_to_jax_passes(): + input_data = InputData.tree( + tree={ + "p_id": numpy.array([0, 1, 2]), + "property_tax": { + "acre_size_in_hectares": numpy.array([5, 20, 200]), + }, + } + ) + processed_data = main( + main_target=MainTarget.processed_data, + backend="numpy", + input_data=input_data, + ) + main( + main_target=MainTarget.results.df_with_nested_columns, + policy_date_str="2000-01-01", + orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), + input_data=input_data, + processed_data=processed_data, + tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), + backend="jax", + ) + + +@pytest.mark.skipif(jax is None, reason="Jax is not installed") +def test_backend_has_changed_from_numpy_for_policy_environment_to_jax_raises( + xnp: ModuleType, +): + policy_environment = main( + main_target=MainTarget.policy_environment, + policy_date_str="2000-01-01", + orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), + backend="numpy", + ) + input_data = InputData.tree( + tree={ + "p_id": xnp.array([0, 1, 2]), + "property_tax": { + "acre_size_in_hectares": xnp.array([5, 20, 200]), + }, + } + ) + with pytest.raises(ValueError, match="Backend has changed"): + main( + main_target=MainTarget.results.df_with_nested_columns, + input_data=input_data, + policy_environment=policy_environment, + tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), + backend="jax", + ) + + @param_function() def valid_param_function(x: int) -> int: """A valid param function that only depends on parameters.""" diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py index 86fe431d77..71241355cc 100644 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ b/tests/ttsim/interface_dag_elements/test_policy_environment.py @@ -22,6 +22,8 @@ from ttsim.tt_dag_elements import ScalarParam, policy_function if TYPE_CHECKING: + from types import ModuleType + from ttsim.interface_dag_elements.typing import ( NestedColumnObjectsParamFunctions, ) @@ -59,7 +61,7 @@ def some_int_param(): ) -def test_add_jahresanfang(xnp): +def test_add_jahresanfang(xnp: ModuleType): spec = { "name": {"de": "Test", "en": "Check"}, "description": {"de": "Nichts zu sehen", "en": "Nothing to do"}, diff --git a/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py b/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py index acf3b8781a..e2610c56ec 100644 --- a/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py +++ b/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py @@ -21,7 +21,7 @@ @pytest.fixture -def parameters(xnp): +def parameters(xnp: ModuleType): return PiecewisePolynomialParamValue( thresholds=xnp.array([-xnp.inf, 9168.0, 14254.0, 55960.0, 265326.0, xnp.inf]), rates=xnp.array( @@ -46,7 +46,7 @@ def parameters(xnp): ) -def test_get_piecewise_parameters_all_intercepts_supplied(xnp): +def test_get_piecewise_parameters_all_intercepts_supplied(xnp: ModuleType): parameter_dict = { 0: { "lower_threshold": "-inf", From b88e3e1615af3242dde3b45965b12f4461cf0e22 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 23 Jul 2025 16:23:36 +0200 Subject: [PATCH 096/109] Raise an error if invalid input paths are provided to `main`, fixes #994 (#1048) Check whether the structure of the paths matches. E.g.: - `input_data={"df_and_mapper": None}`: Fails because there needs to be a dict below "df_and_mapper" - `input_data={"not_around": None}`: Fails because `not_around` is not a valid child of `input_data` - `not_around=None`: Fails because not around is not a valid root node (already taken care of by Python itself when calling `main`, but let's be pedantic...) --- CHANGES.md | 7 + src/ttsim/interface_dag.py | 82 ++++++++++- .../interface_dag_elements/test_failures.py | 2 +- tests/ttsim/test_interface_dag.py | 131 +++++++++--------- 4 files changed, 151 insertions(+), 71 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f45839ad7e..4a87dedbfc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,13 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1048` Raise an error if invalid input paths are provided to main + ({ghuser}`hmgaudecker`) + +- {gh}`1046` Fail if backend has changed ({ghuser}`hmgaudecker`) + +- {gh}`1046` Fail if backend has changed ({ghuser}`hmgaudecker`) + - {gh}`1043` Raise more errors during vectorization ({ghuser}`hmgaudecker`, {ghuser}`timmens`) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py index e2d2bfb296..4cc06cf404 100644 --- a/src/ttsim/interface_dag.py +++ b/src/ttsim/interface_dag.py @@ -151,20 +151,92 @@ def lexsort_key(x: str) -> int: def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: + expected_structure = MainTarget.to_dict() + # Remove existing top-level elements that are None, these will be calculated. dict_inputs = { - k: v.to_dict() if isinstance(v, MainArg) else v for k, v in inputs.items() + k: v.to_dict() if isinstance(v, MainArg) else v + for k, v in inputs.items() + if v is not None and k in expected_structure } qname_inputs = {} - opo = dict_inputs.get("orig_policy_objects") - if opo and "root" in opo: - qname_inputs["orig_policy_objects__root"] = opo.pop("root") - for acc in optree.tree_accessors(MainTarget.to_dict(), none_is_leaf=True): + # Special treatment for orig_policy_objects.root because we do not list it in + # `MainTarget` so as not to confuse users of GETTSIM, where it is set. + if ( + dict_inputs.get("orig_policy_objects") + and "root" in dict_inputs["orig_policy_objects"] + ): + qname_inputs["orig_policy_objects__root"] = dict_inputs[ + "orig_policy_objects" + ].pop("root") + + _fail_if_input_structure_is_invalid( + user_treedef=optree.tree_flatten(dict_inputs, none_is_leaf=True)[1], # type: ignore[arg-type] + expected_treedef=optree.tree_flatten(expected_structure, none_is_leaf=True)[1], + ) + for acc in optree.tree_accessors(expected_structure, none_is_leaf=True): qname = dt.qname_from_tree_path(acc.path) with suppress(KeyError, TypeError): qname_inputs[qname] = acc(dict_inputs) return {k: v for k, v in qname_inputs.items() if v is not None} +def _fail_if_input_structure_is_invalid( + user_treedef: optree.PyTreeDef, + expected_treedef: optree.PyTreeDef, +) -> None: + """ + Recursively check that all keys/paths in user_treedef are valid. + + Raise ValueError if + - any invalid keys/paths are found. + - if the user input is not a dict where a dict is expected. + """ + + def check( + user_spec: optree.PyTreeDef, + expected_spec: optree.PyTreeDef, + path: tuple[str, ...], + ) -> list[tuple[str, ...]]: + invalid = [] + # If a dict is expected but user_spec is not a dict, mark as invalid + if ( + expected_spec.kind == optree.PyTreeKind.DICT + and user_spec.kind != optree.PyTreeKind.DICT + ): + invalid.append(path) + return invalid + if user_spec.kind == expected_spec.kind == optree.PyTreeKind.DICT: + # This level of the expected pytree as a dict. + expected_map = dict( + zip(expected_spec.entries(), expected_spec.children(), strict=False) + ) + # Loop over the actually provided pytree. + for k, child in zip( + user_spec.entries(), user_spec.children(), strict=False + ): + if k not in expected_map: + invalid.append((*path, k)) + else: + invalid.extend( + check( + user_spec=child, + expected_spec=expected_map[k], + path=(*path, k), + ) + ) + return invalid + + invalid_paths = check( + user_spec=user_treedef, expected_spec=expected_treedef, path=() + ) + if invalid_paths: + raise ValueError( + "Invalid inputs for main(): the following keys/paths are not valid:\n" + + "\n".join(str(p) for p in invalid_paths) + + "\nPlease use only the documented structure for main()." + ) + + def _harmonize_main_target( main_target: str | tuple[str, ...] | NestedTargetDict, ) -> str: diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py index 8b923fad3a..3f4a6a56b3 100644 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ b/tests/ttsim/interface_dag_elements/test_failures.py @@ -1176,7 +1176,7 @@ def test_fail_if_input_df_mapper_columns_missing_in_df_via_main( input_data=InputData.df_and_mapper(df=df, mapper=mapper), main_target=MainTarget.results.df_with_mapper, orig_policy_objects={"root": METTSIM_ROOT}, - tt_targets=MainTarget.policy_environment, + tt_targets=TTTargets(qname={"d": None}), policy_date_str="2025-01-01", backend=backend, ) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py index 654bbe8e29..3967cb88e0 100644 --- a/tests/ttsim/test_interface_dag.py +++ b/tests/ttsim/test_interface_dag.py @@ -1,14 +1,15 @@ from __future__ import annotations import inspect -from typing import Any import dags import dags.tree as dt +import optree import pytest from ttsim import InputData, OrigPolicyObjects, TTTargets from ttsim.interface_dag import ( + _fail_if_input_structure_is_invalid, _fail_if_requested_nodes_cannot_be_found, _fail_if_root_nodes_of_interface_dag_are_missing, _harmonize_inputs, @@ -20,12 +21,9 @@ from ttsim.interface_dag_elements import MainTarget from ttsim.interface_dag_elements.fail_if import format_list_linewise from ttsim.interface_dag_elements.interface_node_objects import ( - InputDependentInterfaceFunction, - InterfaceInput, fail_function, input_dependent_interface_function, interface_function, - interface_input, ) from ttsim.plot_dag import dummy_callable from ttsim.tt_dag_elements.column_objects_param_function import policy_function @@ -96,6 +94,11 @@ def a() -> int: return 1 +@policy_function() +def e(c: int, d: float) -> float: + return c + d + + def test_load_flat_interface_functions_and_inputs() -> None: load_flat_interface_functions_and_inputs() @@ -148,19 +151,6 @@ def test_main_target_class_is_complete() -> None: assert nodes == main_target_elements -def _replace_idif_with_interface_inputs( - n: InputDependentInterfaceFunction, -) -> InterfaceInput: - @interface_input( - in_top_level_namespace=n.in_top_level_namespace, - leaf_name=n.leaf_name, - ) - def interface_input_for_idif() -> Any: - pass - - return interface_input_for_idif - - @pytest.mark.parametrize( ("main_targets", "nodes", "error_match"), [ @@ -203,11 +193,6 @@ def test_fail_if_requested_nodes_cannot_be_found( ) -@policy_function() -def e(c: int, d: float) -> float: - return c + d - - def test_harmonize_inputs_main_args_input(): x = { "input_data": InputData.df_and_mapper( @@ -268,6 +253,65 @@ def test_harmonize_inputs_tree_input(): } +@pytest.mark.parametrize( + ("main_target", "expected"), + [ + ("a__b", "a__b"), + (("a", "b"), "a__b"), + ({"a": {"b": None}}, "a__b"), + ], +) +def test_harmonize_main_target(main_target, expected): + harmonized = _harmonize_main_target(main_target=main_target) + + assert harmonized == expected + + +@pytest.mark.parametrize( + "dict_inputs", + [ + {"input_data": {"df_and_mapper": None}}, + {"input_data": {"not_around": None}}, + {"not_around": None}, + ], +) +def test_fail_if_input_structure_is_invalid(dict_inputs): + with pytest.raises(ValueError, match="Invalid inputs for main()"): + _fail_if_input_structure_is_invalid( + user_treedef=optree.tree_flatten(dict_inputs)[1], + expected_treedef=optree.tree_flatten(MainTarget.to_dict())[1], + ) + + +@pytest.mark.parametrize( + "main_target", + [ + ["a", "b"], + {"a": {"b": None}, "c": None}, + {"a": {"b": None, "c": None}}, + ], +) +def test_harmonize_main_target_fails_for_multiple_elements(main_target): + with pytest.raises( + ValueError, match="must be a single qualified name, a tuple, or a dict" + ): + _harmonize_main_target(main_target=main_target) + + +@pytest.mark.parametrize( + ("main_targets", "expected"), + [ + (["a__b"], ["a__b"]), + ([("a", "b")], ["a__b"]), + ({"a": {"b": None}}, ["a__b"]), + ], +) +def test_harmonize_main_targets(main_targets, expected): + harmonized = _harmonize_main_targets(main_targets=main_targets) + + assert harmonized == expected + + @pytest.mark.parametrize( ( "flat_interface_objects", @@ -337,49 +381,6 @@ def test_resolve_dynamic_interface_objects_to_static_nodes_with_conflicting_cond ) -@pytest.mark.parametrize( - ("main_target", "expected"), - [ - ("a__b", "a__b"), - (("a", "b"), "a__b"), - ({"a": {"b": None}}, "a__b"), - ], -) -def test_harmonize_main_target(main_target, expected): - harmonized = _harmonize_main_target(main_target=main_target) - - assert harmonized == expected - - -@pytest.mark.parametrize( - "main_target", - [ - ["a", "b"], - {"a": {"b": None}, "c": None}, - {"a": {"b": None, "c": None}}, - ], -) -def test_harmonize_main_target_fails_for_multiple_elements(main_target): - with pytest.raises( - ValueError, match="must be a single qualified name, a tuple, or a dict" - ): - _harmonize_main_target(main_target=main_target) - - -@pytest.mark.parametrize( - ("main_targets", "expected"), - [ - (["a__b"], ["a__b"]), - ([("a", "b")], ["a__b"]), - ({"a": {"b": None}}, ["a__b"]), - ], -) -def test_harmonize_main_targets(main_targets, expected): - harmonized = _harmonize_main_targets(main_targets=main_targets) - - assert harmonized == expected - - def test_fail_if_root_nodes_of_interface_dag_are_missing_without_missing_dynamic_nodes(): # noqa: E501 flat_interface_objects = { ("interface_function_a",): interface_function_a, From 84daa3c28155261741f363d18d7292bd794f78ab Mon Sep 17 00:00:00 2001 From: Marvin Immesberger <74215010+MImmesberger@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:31:42 +0200 Subject: [PATCH 097/109] Allow input template creation when path to root node traverses an automatically created function (#1050) ### What problem do you want to solve? Closes #1049 --------- Co-authored-by: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> --- CHANGES.md | 3 + src/ttsim/interface_dag_elements/templates.py | 88 ++++++++++++++++--- .../interface_dag_elements/test_templates.py | 58 ++++++++++-- 3 files changed, 132 insertions(+), 17 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4a87dedbfc..981ac9d9b1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,9 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1050` Allow input template creation when path to root node traverses an + automatically created function ({ghuser}`MImmesberger`) + - {gh}`1048` Raise an error if invalid input paths are provided to main ({ghuser}`hmgaudecker`) diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index 3e5408df12..0c8c98cc6d 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -4,7 +4,11 @@ import dags.tree as dt +from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.interface_node_objects import interface_function +from ttsim.interface_dag_elements.shared import ( + get_re_pattern_for_all_time_units_and_groupings, +) from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput from ttsim.tt_dag_elements.vectorization import scalar_type_to_array_type @@ -23,8 +27,30 @@ def input_data_dtypes( specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, # noqa: E501 policy_environment: PolicyEnvironment, tt_targets__qname: OrderedQNames, + labels__grouping_levels: OrderedQNames, labels__top_level_namespace: UnorderedQNames, ) -> NestedInputStructureDict: + """ + A template of the required input data and their expected types. + + Parameters + ---------- + specialized_environment__with_partialled_params_and_scalars + The specialized environment with partialled parameters and scalars. + policy_environment + The policy environment containing functions and parameters. + tt_targets__qname + Ordered qualified names of the targets. + labels__grouping_levels + Ordered qualified names of grouping levels. + labels__top_level_namespace + Unordered qualified names of the top-level namespace. + + Returns + ------- + NestedInputStructureDict + A nested dictionary mapping input paths to their data types. + """ base_dtype_tree = dt.create_tree_with_input_types( functions=dt.unflatten_from_qnames( specialized_environment__with_partialled_params_and_scalars, @@ -33,18 +59,56 @@ def input_data_dtypes( top_level_inputs=labels__top_level_namespace, ) - # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | IntColumn - # | BoolColumn' with the actual dtype found in the policy environment. - flat_policy_env = dt.flatten_to_tree_paths(policy_environment) - flat_dtype_tree = dt.flatten_to_tree_paths(base_dtype_tree) - out = {} - for p, derived_dtype_in_base in flat_dtype_tree.items(): - policy_env_element = flat_policy_env[p] - if p[0] in {"evaluation_year", "evaluation_month", "evaluation_day"}: + qname_policy_env = dt.flatten_to_qnames(policy_environment) + qname_dtype_tree = dt.flatten_to_qnames(base_dtype_tree) + policy_inputs = { + k: v for k, v in qname_policy_env.items() if isinstance(v, PolicyInput) + } + + cleaned_qname_dtype_tree: dict[str, str] = {} + + pattern_all = get_re_pattern_for_all_time_units_and_groupings( + time_units=list(TIME_UNIT_LABELS), + grouping_levels=labels__grouping_levels, + ) + + for qn, derived_dtype_in_base in qname_dtype_tree.items(): + if qn in {"evaluation_year", "evaluation_month", "evaluation_day"}: continue - if isinstance(policy_env_element, PolicyInput) and "|" in derived_dtype_in_base: - out[p] = scalar_type_to_array_type(policy_env_element.data_type) + + match = pattern_all.fullmatch(qn) + base_name = match.group("base_name") + if ( + base_name not in qname_dtype_tree + and base_name not in cleaned_qname_dtype_tree + and base_name in policy_inputs + ): + # If some input data is provided, we create aggregation functions + # automatically only if the source node is part of the input data. Hence, if + # the user provides incomplete input data (i.e. some policy inputs are + # missing) and those policy inputs are sources of automatic aggregation + # functions, dt.create_tree_with_input_types will return the name of the + # aggregation function as root node. The policy input is not in the output. + # We take care of this here. + cleaned_qname_dtype_tree[base_name] = scalar_type_to_array_type( + policy_inputs[base_name].data_type + ) + + # Also add the ID of the grouped variable if grouping exists + grouping = match.group("grouping") + if grouping: + grouping_id = f"{grouping}_id" + if grouping_id not in cleaned_qname_dtype_tree: + cleaned_qname_dtype_tree[grouping_id] = "IntColumn" + + elif qn in policy_inputs: + # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | + # IntColumn | BoolColumn' with the actual dtype found in the policy + # environment. + cleaned_qname_dtype_tree[qn] = scalar_type_to_array_type( + policy_inputs[qn].data_type + ) else: - out[p] = derived_dtype_in_base + cleaned_qname_dtype_tree[qn] = derived_dtype_in_base - return dt.unflatten_from_tree_paths(out) + return dt.unflatten_from_qnames(cleaned_qname_dtype_tree) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index c7b6c3acbb..bb61ab4881 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -52,6 +52,11 @@ ) +@policy_input() +def kin_id() -> int: + pass + + @policy_input() def inp1() -> int: pass @@ -63,8 +68,8 @@ def inp2() -> float: @policy_function() -def x(inp1: int, p1: int, p2: dict[str, int]) -> int: - return inp1 + p1 + p2["a"] + p2["b"] +def x(inp1_kin: int, p1: int, p2: dict[str, int]) -> int: + return inp1_kin + p1 + p2["a"] + p2["b"] @policy_function() @@ -81,6 +86,7 @@ def test_template_all_outputs_no_inputs(backend): actual = main( main_target="templates__input_data_dtypes", policy_environment={ + "kin_id": kin_id, "inp1": inp1, "p1": p1, "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, @@ -92,7 +98,11 @@ def test_template_all_outputs_no_inputs(backend): evaluation_date_str="2025-01-01", backend=backend, ) - assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} + assert actual == { + "a": {"inp2": "FloatColumn"}, + "inp1": "IntColumn", + "kin_id": "IntColumn", + } def test_template_all_outputs_with_inputs(backend, xnp): @@ -108,6 +118,7 @@ def test_template_all_outputs_with_inputs(backend, xnp): } }, policy_environment={ + "kin_id": kin_id, "inp1": inp1, "p1": p1, "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, @@ -119,7 +130,11 @@ def test_template_all_outputs_with_inputs(backend, xnp): evaluation_date_str="2025-01-01", backend=backend, ) - assert actual == {"a": {"inp2": "FloatColumn"}, "inp1": "IntColumn"} + assert actual == { + "a": {"inp2": "FloatColumn"}, + "inp1": "IntColumn", + "kin_id": "IntColumn", + } def test_template_output_y_no_inputs(backend): @@ -127,6 +142,7 @@ def test_template_output_y_no_inputs(backend): main_target="templates__input_data_dtypes", tt_targets={"tree": {"a": {"y": None}}}, policy_environment={ + "kin_id": kin_id, "inp1": inp1, "p1": p1, "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, @@ -155,6 +171,34 @@ def test_template_output_x_with_inputs(backend, xnp): }, tt_targets={"tree": {"a": {"x": None}}}, policy_environment={ + "kin_id": kin_id, + "inp1": inp1, + "p1": p1, + "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, + "b": { + "z": z, + }, + }, + rounding=True, + evaluation_date_str="2025-01-01", + backend=backend, + ) + assert actual == {"inp1": "IntColumn", "kin_id": "IntColumn"} + + +def test_template_all_outputs_no_input_for_root_of_derived_function(backend, xnp): + actual = main( + main_target="templates__input_data_dtypes", + input_data={ + "tree": { + "p_id": xnp.array([4, 5, 6]), + "a": { + "inp2": xnp.array([1, 2, 3]), + }, + } + }, + policy_environment={ + "kin_id": kin_id, "inp1": inp1, "p1": p1, "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, @@ -166,4 +210,8 @@ def test_template_output_x_with_inputs(backend, xnp): evaluation_date_str="2025-01-01", backend=backend, ) - assert actual == {"inp1": "IntColumn"} + assert actual == { + "a": {"inp2": "FloatColumn"}, + "inp1": "IntColumn", + "kin_id": "IntColumn", + } From 5fe956fc8a8d1c5b9ae55a40d389ea105254b4b9 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker <hmgaudecker@gmail.com> Date: Wed, 23 Jul 2025 18:42:25 +0200 Subject: [PATCH 098/109] GEP 7 and updates to GEPs 1-5 necessitated by GEP 6 (#855) ### What problem do you want to solve? - [x] Add a GEP for the revamped interface - [x] Update earlier GEPs to reflect the changes that have become necessary after GEP 6 (since our documentation is small, it does not make sense to keep outdated things around). - [x] Add the finalised schema from #880 as an appendix to GEP 3 [Resolution on Zulip.](https://gettsim.zulipchat.com/#narrow/channel/309998-GEPs/topic/GEP.2007/near/530389224) --------- Co-authored-by: Marvin Immesberger <immesberger@posteo.de> --- docs/geps.md | 1 + docs/geps/gep-01.md | 111 +- docs/geps/gep-02.md | 87 +- docs/geps/gep-03.md | 652 ++- docs/geps/gep-04.md | 275 +- docs/geps/gep-05.md | 21 +- docs/geps/gep-06.md | 13 +- docs/geps/gep-07.md | 408 ++ docs/geps/gep_07_example.py | 70 + docs/geps/interface_dag.html | 3885 +++++++++++++++++ pixi.lock | 44 +- pyproject.toml | 4 + .../interface-playground.ipynb | 361 +- src/ttsim/interface_dag_elements/warn_if.py | 4 +- 14 files changed, 5297 insertions(+), 639 deletions(-) create mode 100644 docs/geps/gep-07.md create mode 100644 docs/geps/gep_07_example.py create mode 100644 docs/geps/interface_dag.html rename interface-prototype.ipynb => sandbox/interface-playground.ipynb (59%) diff --git a/docs/geps.md b/docs/geps.md index fb21657a09..903d38eff7 100644 --- a/docs/geps.md +++ b/docs/geps.md @@ -20,5 +20,6 @@ maxdepth: 1 ../geps/gep-04 ../geps/gep-05 ../geps/gep-06 +../geps/gep-07 ../geps/gep-x ``` diff --git a/docs/geps/gep-01.md b/docs/geps/gep-01.md index 1c524812aa..793e842ef7 100644 --- a/docs/geps/gep-01.md +++ b/docs/geps/gep-01.md @@ -14,7 +14,7 @@ - * Created * 2019-11-04 - * Updated - * 2022-03-28 + * 2025-07-23 - * Resolution * [Accepted](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2001) ``` @@ -26,35 +26,17 @@ columns, parameters, Python identifiers (functions, variables), etc. should be n a nutshell and without explanations, these conventions are: 1. Names follow standard Python conventions (`lowercase_with_underscores`). - Abbreviations of words that form a part of these names are always followed by an - underscore, unless it is the last word. - -1. Names should be long enough to be readable. However, we impose limits in order to - make GETTSIM usable in languages, which place limits on characters (Stata, in - particular). - - - Column names that are typically user-facing have a hard limit of 20 characters. - These columns are documented in `DEFAULT_TARGETS` in `gettsim/config.py`. - - Other column names that users might potentially be interested in have a hard limit - of 32 characters. - - Columns geared at internal use (e.g., helper variables before applying a - favorability check) start with an underscore and there are no restrictions. - Internal variables should be used sparingly. - -1. If names need to be concatenated for making clear what a column name refers to (e.g., - `arbeitslosengeld_2__vermögensfreibetrag_bg` vs. - `grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or - transfer) that a variable refers to appears first. - -1. Because of the necessity of concatenated column names, there will be conflicts - between readability (1.) and variable length (2.). If such conflicts arise, they need - to be solved on a case by case basis. Consistency across different variants of a - variable names always has to be kept. 1. The language should generally be English in all coding efforts and documentation. German should be used for all institutional features and directly corresponding names. +1. The hierarchical naming convention (see {ref}`GEP 6 <gep-6>`) means that + abbreviations should be used only very sparingly. + + An abbreviation is always followed by an underscore (unless it is the last word). + Underscores must not be used to separate German words that are pulled together. + 1. German identifiers use correct spelling even if it is non-ASCII (this mostly concerns the letters ä, ö, ü, ß). @@ -93,32 +75,17 @@ in English. For column names, we always allow a pure ASCII option, see the next (gep-1-column-names)= -## Column names (a.k.a. "variables" in Stata) - -We impose a hard limit of 20 characters for all column names that typically user-facing. -This is for the benefit of Stata users, who face a strict limit of 32 characters for -their column names. Furthermore, where developers using other languages may store -different experiments in different variables, Stata users' only chance to distinguish -them is to append characters to the column names. - -For the same reason, there is a hard limit of 32 characters for variables that users may -reasonably request. - -If a column is only present for internal use, it starts with an underscore and there is -no restriction on the number of characters. Internal columns should be used sparingly. +## Column / Policy Function names (a.k.a. "variables" in Stata) -Across variations that include the same identifier, this identifier should not be -changed, even if it leads to long variable names (e.g., `kinderfreib`, -`einkommensteuer__gesamteinkommen_y`). This makes searching for identifiers easier and -less error-prone. - -If names need to be concatenated for making clear what a column name refers to (e.g., -`arbeitslosengeld_2__vermögensfreibetrag_bg` vs. -`grundsicherung__im_alter__vermögensfreibetrag_eg`), the group (i.e., the tax or -transfer) that a variable refers to appears first. +The hierarchical naming convention (see {ref}`GEP 6 <gep-6>`) means that the +highest-level identifier is the type of the programme (e.g., `einkommensteuer` or +`kindergeld`). Very few variables live in the global namespace (e.g., the person +identifier `p_id` or `alter`). A special case is the namespace `familie`, which lives in +the global namespace. If a column has a reference to a time unit (i.e., any flow variable like earnings or -transfers), a column is indicated by an underscore plus one of {`y`, `m`, `w`, `d`}. +transfers), a column is indicated by an underscore plus one of {`y`, `q`, `m`, `w`, +`d`}. The default unit a column refers to is an individual. In case of groupings of individuals, an underscore plus one of {`sn`, `hh`, `fg`, `bg`, `eg`, `ehe`} will @@ -152,11 +119,6 @@ Note that households do not include flat shares etc.. Such broader definition ar currently not relevant in GETTSIM but may be added in the future (e.g., capping rules for costs of dwelling in SGB II depend on this). -Open questions: - -- Can we use `arbeitslosengeld_2__bg_id` for both SGB II and SGB XII at the same time or - do we need to differentiate once we add serious support for SGB XII? - Time unit identifiers always appear before unit identifiers (e.g., `arbeitslosengeld_2__betrag_m_bg`). @@ -168,12 +130,9 @@ general naming considerations here. - There is a hierarchical structure to these parameters in that each of them is associated with a group (e.g., `arbeitslosengeld`, `kinderzuschlag`). These groups or abbreviations thereof do not re-appear in the name of the parameter. -- Parameter names should be generally be aligned with relevant column names. However, - since the group is not repeated for the parameter, it is often better not to - abbreviate them (e.g., `wohngeld_params["vermögensgrundfreibetrag"]` for the parameter - and `wohngeld__anspruchshöhe_m_wthh` for a column derived from it). +- Parameter names should generally be aligned with relevant column names. -## Other Python identifiers (Functions, Variables) +## Other Python identifiers Python identifiers should generally be in English, unless they refer to a specific law or set of laws, which is where the same reasoning applies as above. @@ -183,40 +142,15 @@ comprehension or a short loop, `i` might be an acceptable name for the running v A function that is used in many different places should have a descriptive name. The name of variables should reflect the content or meaning of the variable and not the -type (i.e., float, int, dict, list, df, array ...). As for column names and parameters, -in some cases it might be useful to append an underscore plus one of {`m`, `w`, `d`} to -indicate the time unit and one of {`sn`, `hh`, `fg`, `bg`, `eg`, `ehe`} to indicate the -unit of aggregation. - -## Examples - -As an example we can consider the naming of the parameter group `arbeitsl_geld`. The -original name for this group of parameters was the abbreviation `alg`. This will seem -like a suitable candidate for native speakers who are familiar with the German social -security system; the abbreviation is commonly used to refer to this type of unemployment -benefit. However, acronyms are generally not self-explanatory and users unfamiliar with -them will thus not be able to guess their meaning without looking them up. - -More meaningful alternatives could be `alo_geld` or `arb_los_geld`. These names use -abbreviations of the compounds of the term "Arbeitslosengeld", which the group name is -supposed to reflect, and connect them in a Pythonic manner through underscores. However, -`alo_geld` still leaves much room for interpretation and `arb_los_geld` separates the -term "Arbeitslosen" in an odd way. - -The final choice `arbeitsl_geld` avoids all the disadvantages of the other options as it -is an unambivalent, natural, and minimal abbreviation of the original term it is -supposed to represent. +type (i.e., float, int, dict, list, df, array ...). ## Alternatives +- We worked with abbreviations before, but this hit limits and it led to never-ending + discussions (see `GEP-6 <gep-6>` for some history). - We considered using more English identifiers, but opted against it because of the lack of precision and uniqueness (see the example above: How to distinguish between Erziehungsgeld, Elterngeld, and Elterngeld Plus in English?). -- Use one of the standards for column identifiers. They are not precise enough and - sometimes rather cryptic. -- Do something like EUROMOD and include some hierarchy in column names (e.g. start with - `d_` for demographics). Should not be necessary if column names have clear enough - names. If anything, we would achieve this via a MultiIndex for the columns. ## A final note @@ -249,6 +183,9 @@ for that. Quoting from there: ## Discussion +The below refers to older versions of the GEP; it has been updated because +`GEP-6 <gep-6>` made much of the original content obsolete. + - GitHub PR: <https://github.com/iza-institute-of-labor-economics/gettsim/pull/60> - Discussion on provisional acceptance: <https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2001/near/189539859> @@ -257,6 +194,8 @@ for that. Quoting from there: - GitHub PR for second update (concatenated column names, dealing with conflicting objectives, names for columns vs parameters): <https://github.com/iza-institute-of-labor-economics/gettsim/pull/342> +- GitHub PR for third update (changes because of `GEP-6 <gep-6>`): + <https://github.com/iza-institute-of-labor-economics/gettsim/pull/855> ## Copyright diff --git a/docs/geps/gep-02.md b/docs/geps/gep-02.md index ad012675e4..573c5bc160 100644 --- a/docs/geps/gep-02.md +++ b/docs/geps/gep-02.md @@ -11,13 +11,15 @@ * Standards Track - * Created * 2022-03-28 +- * Updated + * 2025-07-23 - * Resolution * [Accepted](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2002) ``` ## Abstract -This GEP lays out how GETTSIM stores the user-provided data (be it from the SOEP, EVS, +This GEP lays out how GETTSIM stores user-provided data (be it from the SOEP, EVS, example individuals, ...) and passes it around to the functions calculating taxes and transfers. @@ -26,20 +28,24 @@ in the data provided by the user (if it comes in the form of a DataFrame) or cal by GETTSIM. All these arrays have the same length. This length corresponds to the number of individuals. Functions operate on a single row of data. -If a column name is `[x]_id` with `x` {math}`\in \{` `_hh`, `_bg`, `_fg`, `_ehe`, `_eg`, -`_sn` {math}`\}`, it will be the same for all households, Bedarfsgemeinschaften, or any +Arrays are stored in a nested dictionary (a pytree). One level of the dictionary is +called a *namespace*. Its innermost level is called a *leaf name*. The data columns are +called *leaves*. + +If a leaf name is `[x]_id` with `id` {math}`\in \{` `hh`, `bg`, `fg`, `ehe`, `eg`, `sn`, +`wthh` {math}`\}`, it will be the same for all households, Bedarfsgemeinschaften, or any other grouping of individuals specified in {ref}`GEP 1 <gep-1-column-names>`. -Any other column name ending in `_id` indicates a link to a different individual (e.g., -child-parent relations could be `parent_0_ind_id`, `parent_1_ind_id`; receiver of child -benefits would be `kindergeldempf_id`). +Any leaf name `p_id_[y]` indicates a link to a different individual (e.g., child-parent +are specified via `(familie, p_id_elternteil_1)`, `(familie, p_id_elternteil_2)`; the +recipient of child benefits would be `(kindergeld, p_id_empfänger)`). ## Motivation and Scope Taxes and transfers are calculated at different levels of aggregation: Individuals, couples, families, households. Sometimes, relations between individuals are important: -parents and children, payors/receivers of alimony payments, which parent receives the -`kindergeld` payments, etc.. +parents and children, payors/recipients of alimony payments, which parent receives +Kindergeld payments, etc.. Potentially, there are many ways of storing these data: Long form, wide form, collections of tables adhering to @@ -54,7 +60,7 @@ N-dimensional arrays, etc.. As usual, everything involves trade-offs, for exampl - Almost all functions are much easier to implement when working with a single row. This is most important for the typical user and increasing the number of developers. -- Modern tools for vectorization (e.g., Jax) scale best when working with single rows of +- Modern tools for vectorization (e.g., JAX) scale best when working with single rows of data. Aggregation to groups of individuals (households, Bedarfsgemeinschaften,...) or @@ -67,12 +73,11 @@ This is primarily internal, i.e., only relevant for developers as the highest-le interface can be easily adjusted. The default way to receive data will be one Pandas DataFrame. -Users are affected only via the interface of lower-level functions. Under the proposed -implementation, they will always work on single rows of data. Many alternatives would -require users to write vectorised code, making filtering operations more cumbersome. For -aggregation or referencing other individuals' data, GETTSIM will provide functions that -allow abstracting from implementation details, see -{ref}`below <gep-2-aggregation-functions>`. +Users are affected only via the interface of lower-level functions. Functions will +always work on single rows of data. Many alternatives would require users to write +vectorised code, making filtering operations more cumbersome. For aggregation or +referencing other individuals' data, GETTSIM will provide functions that allow +abstracting from implementation details, see {ref}`below <gep-2-aggregation-functions>`. ## Detailed description @@ -80,43 +85,33 @@ The following discussion assumes that data is passed in as a Pandas DataFrame. I be possible to pass data directly in the form that GETTSIM requires it internally. In that case, only the relevant steps apply. -- GETTSIM will first make a check that all identifiers pointing to other individuals - (e.g., `kindergeldempf_id`) are valid. - -- GETTSIM will then create internal identifiers for individuals, households, and tax - units. GETTSIM will also generate appropriate columns with identifiers pointing to - other individuals. Columns with the original values are stored. +- GETTSIM may make a check that all identifiers pointing to other individuals (e.g., + `(kindergeld, p_id_empfänger)`) are valid. - All internal identifiers are integers starting at 0 and counting in increments of 1. - For individuals, they are sorted, implying they can be used to index into the arrays. - It also means that identifiers pointing to other individuals can be used directly for - indexing. +- GETTSIM may make a check that there is no variation within a group of individuals if + the column name indicates that there must not be (e.g., all members sharing the same + `hh_id` must have the same `anzahl_personen_hh` in case the variable is provided as an + input column). - Because groups of individuals are not necessarily nested (e.g., joint taxation during +- Because groups of individuals are not necessarily nested (e.g., joint taxation during separation phase but living in different households), they cannot be sorted in - general. In case users know their data allows sorting on all groups (i.e., all groups - have a nesting structure), they will be able to provide a `data_is_sorted` flag, which - defaults to `False`. + general. - The core of GETTSIM works with a collection of 1-d arrays, all of which have the same length as the number of individuals. These arrays form the nodes of its DAG computation engine (see {ref}`GEP 4 <gep-4>`). -- GETTSIM returns an object of the same type and with the same identifiers that was +- GETTSIM returns an object of the same type and with the same row identifiers that was passed by the user. -- GETTSIM strives to show errors along with the original indices, but this may not - always be possible. - (gep-2-aggregation-functions)= ### Grouped values and aggregation functions Often columns refer to groups of individuals. Such columns have a suffix indicating the -group (see {ref}`GEP 1 <gep-1-column-names>`, currently `_hh`, `_bg`, `_fg`, `_ehe`, -`_eg`, and `_sn`). These columns' values will be repeated for all individuals who form -part of a group. +group (see {ref}`GEP 1 <gep-1-column-names>`). These columns' values will be repeated +for all individuals who form part of a group. By default, GETTSIM will check consistency on input columns in this respect. Users will be able to turn this check off. @@ -132,20 +127,16 @@ Aggregation functions will be provided by GETTSIM. - As outlined in {ref}`GEP 4 <gep-4-aggregation-by-group-functions>` users will need to specify: - - The stringified name of the aggregated variable. This **must** end with a feasible - unit of aggregation, i.e., `_hh`, `_bg`, `_fg`, `_ehe`, `_eg`, or `_sn` - - The stringified name of the original variable. - - The type of aggregation {math}`\in \{` `sum`, `mean`, `max`, `min`, `any` {math}`\}` + - The name of the aggregated variable. This **must** end with a feasible unit of + aggregation, e.g., `_hh` or `_ehe`. + - The type of aggregation {math}`\in \{` `count`, `sum`, `mean`, `max`, `min`, `any`, + `all`, {math}`\}` + - The name of the original variable (not relevant for `count`) Note that as per {ref}`GEP 4 <gep-4-aggregation-by-group-functions>`, sums will be calculated implicitly if the graph contains a column `my_col` and an aggregate such as `my_col_hh` is requested somewhere. -Note that the groups `tu` and `hh` may change in the future. Some might also be -calculated via relations between household members, see -[discussion](https://gettsim.zulipchat.com/#narrow/stream/224837-High-Level-Architecture/topic/Update.20Data.20Structures/near/180917151) -on Zulip in this respect. - ## Alternatives Versions 0.3 -- 0.4 of GETTSIM used a collection of pandas Series. This proved to be @@ -157,6 +148,10 @@ households like \[here\](<https://www.tensorflow.org/api_docs/python/tf/math/segment_sum>) would have led to many merge-like operations in user functions. +Versions 0.5 -- 0.7 of GETTSIM used flat collections of pandas Series. As the scope and +detail of GETTSIM grew, maintaining uniqueness of column names across different areas of +taxes and transfers became too difficult. + ## Discussion - Some @@ -164,6 +159,8 @@ led to many merge-like operations in user functions. re data structures. - Zulip stream for [GEP 2](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2001/near/189539859). +- GitHub PR for update (changes because of `GEP-6 <gep-6>`): + <https://github.com/iza-institute-of-labor-economics/gettsim/pull/855> ## Copyright diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index 11b439705c..d7a5dcbe3d 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -12,7 +12,7 @@ - * Created * 2022-03-28 - * Updated - * 2024-11-21 + * 2025-07-23 - * Resolution * [Accepted](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2003) ``` @@ -33,21 +33,20 @@ sources of these parameters requires particular care. ## Usage and Impact GETTSIM developers should closely look at the Section {ref}`gep-3-structure-yaml-files` -before adding new parameters. +before adding new parameters. Some validation happens via the pre-commit hooks, but that +cannot catch all inconsistencies. (gep-3-structure-yaml-files)= ## Structure of the YAML files Each YAML file contains a number of parameters at the outermost level of indentation. -Each of these parameters in turn is a dictionary with at least three keys: `name`, -`description`, and the `YYYY-MM-DD`-formatted date on which it first took effect. Values -usually change over time; each time a value is changed, another `YYYY-MM-DD` entry is -added. +Each of these parameters is a dictionary with at least 6 keys: `name`, `description`, +`unit`, `reference_period`, `type` and the `YYYY-MM-DD`-formatted date on which it first +took effect. -Some keys at the outermost level refer to functions of the taxes and transfers system. -These work differently and they are -{ref}`treated separately below <gep-3-keys-referring-to-functions>`. +Values usually change over time; each time a value is changed, another `YYYY-MM-DD` +entry is added. Beyond that, no additional keys are allowed. 1. The `name` key has two sub-keys `de` and `en`, which are @@ -56,13 +55,13 @@ These work differently and they are - not sentences; - correctly capitalised. - Example (from `arbeitsl_geld_2`): + Example (from `kindergeld`): ```yaml - parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: + altersgrenze: name: - de: Anrechnungsfreies Einkommen - en: Income shares not subject to transfer withdrawal + de: Alter, ab dem Kindergeld nicht mehr gezahlt wird. + en: Age at which child benefit is no longer paid. ``` 1. The `description` key has two sub-keys `de` and `en`, which @@ -78,89 +77,119 @@ These work differently and they are Example: ```yaml - parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: - + altersgrenze: description: de: >- - Einkommensanteile, die anrechnungsfrei bleiben. § 30 SGB II. Seit 01.10.2005 zudem - definiert durch Freibetrag in § 11 SGB II, siehe auch § 67 SGB II. Seit 01.04.2011 - § 11b (2) SGB II (neugefasst durch B. v. 13.05.2011 BGBl. I S. 850. Artikel 2 - G. v. 24.03.2011 BGBl. I S. 453). + § 32 Art. 2-4 EStG. + Für minderjährige Kinder besteht ohne Bedingungen ein Anspruch auf Kindergeld. + Auch für erwachsene Kinder kann bis zu einer Altersgrenze unter bestimmten + Bedingungen ein Anspruch auf Kindergeld bestehen. en: >- - Income shares which do not lead to tapering of benefits. + § 32 Art. 2-4 EStG. + Underage children are entitled to child benefit without any conditions. Also adult + children up to a specified age are entitled to child benefit under certain + conditions. ``` 1. The `unit` key informs on the unit of the values (Euro or DM if monetary, share of some other value, ...). - - In rare cases (e.g. child benefit age threshold), it might be omitted. + - In some cases (e.g., factor for the calculation of the marginal employment + threshold), there is no unit. + - It should be capitalised. - - Some values used at this point: `Euro`, `DM`, `Share`, `Percent`, `Factor`, `Year`, - `Month`, `Hour`, `Square Meter`, `Euro / Square Meter`. - - The `unit` key may be overridden at lower levels. For example, the unit will - typically be `Euro` for monetary quantities. For the years prior to its - introduction, it may be specified as `DM`. + + - Possible values: + + - `Euros`, + - `DM`, + - `Share`, + - `Percent`, + - `Years`, + - `Months`, + - `Hours`, + - `Square Meters`, + - `Euros / Square Meter`, + - *None*. Example: ```yaml - kindergeld: + altersgrenze: name: - de: Kindergeld, Betrag je nach Reihenfolge der Kinder. - unit: Euros + de: Alter, ab dem Kindergeld nicht mehr gezahlt wird. + unit: Euro ``` -1. The (optional) `type` key may contain a reference to a particular function that is - implemented. Examples are `piecewise_linear` or `piecewise_quadratic` +1. The `type` key signals to GETTSIM how the parameter is to be interpreted. It must be + specified as one of: -1. The (optional) `reference_period` key informs on the reference period of the values, - if applicable + - `scalar`, + - `dict`, + - `piecewise_constant`, + - `piecewise_linear`, + - `piecewise_quadratic`, + - `piecewise_cubic`, + - `birth_month_based_phase_inout` + - `birth_year_based_phase_inout`, + - `require_converter`, - Possible values: - `Year` - `Month` - `Week` - `Day` + `scalar` is self-explanatory; `dict` must be a homogeneous dictionary with string or + integer keys and scalar values (int, float, bool). - Example: + `piecewise_constant`, `piecewise_linear`, `piecewise_quadratic`, `piecewise_cubic` + will be converted automatically to be used with the `piecewise_polynomial` function. - ```yaml - kindergeld_stundengrenze: - name: - de: Wochenstundengrenze für Kindergeldanspruch - [...] - reference_period: Week - ``` + `birth_month_based_phase_inout` and `birth_year_based_phase_inout` are used to phase + in or out a parameter based on the birth year of the individual. They are + automatically converted to be used as `ConsecutiveIntLookupTableParamValue` objects. -(gep-3-access_prior_parameters)= + `require_converter` can be anything. However there must be a converter function in + the codebase. -6. The (optional) `access_prior_parameters` can be used to make the parameter of a - previous point in time (relative to the date specified in - {func}`set_up_policy_environment <ttsim.policy_environment.set_up_policy_environment>`) - available within GETTSIM functions. It requires the `reference_period` (one of - `Year`, `Month`, `Week`, `Day`) and the `number_of_lags`. +1. The `reference_period` key informs on the reference period of the values, if + applicable. Possible values: - Example: + - `Year`, + - `Quarter`, + - `Month`, + - `Week`, + - `Day`, + - `Hour`, + - *None* + +1. The optional `add_jahresanfang` can be used to make the parameter that is relevant at + the start of the year (relative to the date for which the policy environment is set + up) available to GETTSIM functions. + + If specified, two parameters will be available: + + ``` + ("path", "to", "parameter") + ("path", "to", "parameter_jahresanfang") + ``` + + Example from `sozialversicherung` / `arbeitslosen` / `beitragssatz.yaml`: ```yaml - rentenwert: + beitragssatz: name: - de: Rentenwerte alte und neue Bundesländer. - [...] - access_prior_parameters: - - reference_period: Year - - number_of_lags: 1 + de: Beitragssatz zur Arbeitslosenversicherung + unit: Share + reference_period: null + type: scalar + add_jahresanfang: true ``` 1. The YYYY-MM-DD key(s) - - hold all historical values for a specific parameter or set of parameters in the - `value` subkey; - - is present with `value: null` if a parameter ceases to exist starting on a - particular date; + - hold all historical values for a specific parameter or set of parameters in + dictionaries - contain a precise reference to the law in the `reference` subkey; - may add additional descriptions in the `note` key; - - may give hints towards the type of function they refer to via the `type` subkey; - - may include formulas if the law does; - - may reference other parameters as described below. - - may contain a `unit` subkey, which overrides the `unit` key mentioned in 3. (mostly - relevant for DM / Euro) + - is present with a note or reference only if a parameter ceases to exist starting on + a particular date; + - in case of a `scalar` type, the key of the scalar is `value`. The remainder of this section explains this element in much more detail. @@ -181,11 +210,12 @@ These work differently and they are Example: ```yaml -parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: +beitragssatz: name: - de: Anrechnungsfreie Einkommensanteile - 2005-01-01: - reference: Artikel 1. G. v. 24.12.2003 BGBl. I S. 2954. + de: Beitragssatz zur Arbeitslosenversicherung + 2019-01-01: + value: 0.0125 + reference: V. v. 21.12.2018 BGBl. I S. 2663 ``` ### The `note` key of [YYYY-MM-DD] @@ -193,37 +223,41 @@ parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: This optional key may contain a free-form note holding any information that may be relevant for the interpretation of the parameter, the implementer, user, ... -(gep-3-deviation_from)= +```yaml +beitragssatz: + name: + de: Beitragssatz zur Arbeitslosenversicherung + 2019-01-01: + value: 0.0125 + reference: V. v. 21.12.2018 BGBl. I S. 2663 + note: >- + Set to 0.013 in Art. 2 Nr. 15 G. v. 18.12.2018 BGBl. I S. 2651. Temporarily + reduced to 0.0125 in BeiSaV 2019. +``` -### The `deviation_from` key of [YYYY-MM-DD] +### The `updates_previous` key of [YYYY-MM-DD] Often laws change only part of a parameter. To avoid error-prone code duplication, we -allow for such cases via the `deviation_from` key. This is the reason why lists are to -be avoided in the value key (see the `piecewise_linear` function above). +allow for such cases via `updates_previous` key. -The key could either reference another value explicitly: +This must not be used with a scalar parameter type. Furthermore, it cannot be used in +the first period a parameter is defined. -```yaml -parameter_anrechnungsfreies_einkommen_mit_kindern_in_bg: - name: - de: Abweichende anrechnungsfreie Einkommensanteile falls Kinder im Haushalt - 2005-10-01: - deviation_from: arbeitsl_geld_2.parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg - 3: - upper_threshold: 1500 -``` - -A special keyword is `previous`, which just refers to the set of values in the previous -law change. +Example from `sozialversicherung` / `minijob.yaml`: ```yaml -parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: +minijobgrenze_ost_west_unterschied name: - de: Anrechnungsfreie Einkommensanteile - 2011-04-01: - deviation_from: previous - 2: - upper_threshold: 1000 + de: Minijobgrenze + unit: Euros + reference_period: Month + type: dict + 1997-01-01: + west: 312 + ost: 266 + 1998-01-01: + updates_previous: true + west: 317 ``` ### The values of [YYYY-MM-DD] @@ -237,121 +271,401 @@ The following walks through several cases. - The simplest case is a single parameter, which should be specified as: ```yaml - kindergeld_stundengrenze: + minijobgrenze: name: - de: Wochenstundengrenze für Kindergeldanspruch - 2012-01-01: - value: 20 + de: Minijobgrenze + en: Thresholds for marginal employment (minijobs) + description: + de: Minijob § 8 (1) Nr. 1 SGB IV + en: Minijob § 8 (1) Nr. 1 SGB IV + unit: Euros + reference_period: Month + type: scalar + 1984-01-01: + value: 199 + 1985-01-01: + value: 205 + 1986-01-01: + value: 210 + 1987-01-01: + value: 220 + 1988-01-01: + value: 225 + 1989-01-01: + value: 230 + 1990-01-01: + note: >- + Minijobgrenze differs between West and East Germany. See + ``parameter_minijobgrenze_ost_west_unterschied``. + 2000-01-01: + value: 322 + 2002-01-01: + value: 325 + 2003-04-01: + value: 400 + 2013-01-01: + value: 450 + 2022-10-01: + note: Minijob thresholds now calculated based on statutory minimum wage + reference: Art. 7 G. v. 28.06.2022 BGBl. I S. 969 ``` -- There could be a dictionary, potentially nested: + Note that there are different "active periods" for this parameter. The first one lasts + from 1984-01-01 to 1989-12-31, after which there were different values in East and + West Germany. from 2000-01-01 until 2022-10-01, the parameter is active again. After + that, it is superseded by a formula based on the statutory minimum wage. + +- There could be a dictionary, which has to be homogenous in the keys (integers or + strings) and values (scalar floating point numbers, integers, or Booleans): ```yaml - exmin: + minijobgrenze_ost_west_unterschied: name: - de: Höhen des Existenzminimums, festgelegt im Existenzminimumsbericht der Bundesregierung. - 2005-01-01: - regelsatz: - single: 4164 - paare: 7488 - kinder: 2688 - kosten_der_unterkunft: - single: 2592 - paare: 3984 - kinder: 804 - heizkosten: - single: 600 - paare: 768 - kinder: 156 + de: Minijobgrenze, unterschiedlich in Ost und West + en: Thresholds for marginal employment (minijobs), different in East and West + description: + de: Minijob § 8 (1) Nr. 1 SGB IV + en: Minijob § 8 (1) Nr. 1 SGB IV + unit: Euros + reference_period: Month + type: dict + 1990-01-01: + west: 240 + ost: 102 + 1991-01-01: + west: 245 + ost: 120 + 1992-01-01: + west: 256 + ost: 153 + 1993-01-01: + west: 271 + ost: 199 + 1994-01-01: + west: 286 + ost: 225 + 1995-01-01: + west: 297 + ost: 240 + 1996-01-01: + west: 302 + ost: 256 + 1997-01-01: + west: 312 + ost: 266 + 1998-01-01: + updates_previous: true + west: 317 + 1999-01-01: + west: 322 + ost: 271 + 2000-01-01: + note: >- + Minijob thresholds do not differ between West and East Germany. See + `minijobgrenze_m`. ``` - In some cases, a dictionary with numbered keys makes sense. It is important to use - these, not lists! + these, not lists! The reason is that we always allow for the `note` and `reference` + keys to be present. ```yaml - kindergeld: + satz_gestaffelt: name: - de: Kindergeld, Betrag je nach Reihenfolge der Kinder. - 1975-01-01: - 1: 26 - 2: 36 - 3: 61 - 4: 61 + de: Kindergeld pro Kind, Betrag je nach Reihenfolge der Kinder. + en: Child benefit amount, depending on succession of children. + description: + de: >- + § 66 (1) EStG. Identische Werte in §6 (1) BKGG, diese sind aber nur für beschränkt + Steuerpflichtige relevant (d.h. Ausländer mit Erwerbstätigkeit in Deutschland). + Für Werte vor 2002, siehe 'BMF - Datensammlung zur Steuerpolitik' + en: null + unit: Euros + reference_period: Month + type: dict + 2002-01-01: + 1: 154 + 2: 154 + 3: 154 + 4: 179 + 2009-01-01: + reference: Art. 1 G. v. 22.12.2008 BGBl. I S. 2955 + 1: 164 + 2: 164 + 3: 170 + 4: 195 ``` - Another example would be referring to the parameters of a piecewise linear function: - > ```yaml - > parameter_anrechnungsfreies_einkommen_ohne_kinder_in_bg: - > name: - > de: Anrechnungsfreie Einkommensanteile - > en: Income shares not subject to transfer withdrawal - > type: piecewise_linear - > 2005-01-01: - > 0: - > lower_threshold: -inf - > upper_threshold: 0 - > rate: 0 - > intercept_at_lower_threshold: 0 - > ``` + ```yaml + parameter_solidaritätszuschlag: + name: + de: Solidaritätszuschlag + en: null + description: + de: >- + Ab 1995, der upper threshold im Intervall 1 ist nach der Formel + transition_threshold in soli_st.py berechnet. + en: null + unit: Euros + reference_period: Year + type: piecewise_linear + 1991-01-01: + reference: Artikel 1 G. v. 24.06.1991 BGBl. I S. 1318. + 0: + lower_threshold: -inf + rate_linear: 0 + intercept_at_lower_threshold: 0 + upper_threshold: 0 + 1: + lower_threshold: 0 + rate_linear: 0.0375 + upper_threshold: inf + ``` + +- Phase-in or phase-out of age thresholds based on the birth year of the individual + (e.g. increasing statutory retirement age thresholds) should be specified as type + `birth_year_based_phase_inout`. The parameter specification is converted to a lookup + table that maps a birth year to the age threshold. The conversion requires the + following stucture after the `YYYY-MM-DD` key: -- In general, a parameter should appear for the first time that it is mentioned in a - law, becomes relevant, etc.. + - `first_birthyear_to_consider`: The birth year at which the lookup table starts (just + choose some birthyear that is far enough in the past). + - `last_birthyear_to_consider`: The birth year at which the lookup table ends (just + choose some birthyear that is far enough in the future). + - `YYYY` entries with the following structure: + - `years`: The age threshold in years. + - `months`: The age threshold in months. - Only in exceptional cases it might be useful to set a parameter to some value - (typically zero) even if it does not exist yet. + Example from `sozialversicherung` / `rente` / `altersrente` / `regelaltersrente` / + `altersgrenze.yaml`: -- If a parameter ceases to be relevant, is superseded by something else, etc., there - must be a `YYYY-MM-DD` key with a note on this. + ```yaml + altersgrenze_gestaffelt: + name: + de: Gestaffeltes Eintrittsalter für Regelaltersrente nach Geburtsjahr + en: Staggered normal retirement age (NRA) for Regelaltersrente by birth year + description: + de: >- + § 35 Satz 2 SGB VI + Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in + Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher + oder niedriger, sofern keine Sonderregelungen gelten. + en: >- + § 35 Satz 2 SGB VI + Normal retirement age from which pension can be received. If retirement benefits + are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement + is higher or lower unless special regulations apply. + unit: Years + reference_period: null + type: birth_year_based_phase_inout + 2007-04-20: + reference: RV-Altersgrenzenanpassungsgesetz 20.04.2007. BGBl. I S. 554 + note: >- + Increase of the early retirement age from 65 to 67 for birth cohort 1947-1964. + Vertrauensschutz (Art. 56) applies for birth cohorts before 1955 who were in + Altersteilzeit before January 1st, 2007 or received "Anpassungsgeld für + entlassene Arbeitnehmer des Bergbaus". + first_birthyear_to_consider: 1900 + last_birthyear_to_consider: 2031 + 1946: + years: 65 + months: 0 + 1947: + years: 65 + months: 1 + 1948: + years: 65 + months: 2 + 1949: + years: 65 + months: 3 + 1950: + years: 65 + months: 4 + 1951: + years: 65 + months: 5 + 1952: + years: 65 + months: 6 + 1953: + years: 65 + months: 7 + 1954: + years: 65 + months: 8 + 1955: + years: 65 + months: 9 + 1956: + years: 65 + months: 10 + 1957: + years: 65 + months: 11 + 1958: + years: 66 + months: 0 + 1959: + years: 66 + months: 2 + 1960: + years: 66 + months: 4 + 1961: + years: 66 + months: 6 + 1962: + years: 66 + months: 8 + 1963: + years: 66 + months: 10 + 1964: + years: 67 + months: 0 + ``` + +- Phase-in or phase-out of age thresholds based on the birth month of the individual + should be specified as type `birth_month_based_phase_inout`. The parameter + specification is the same as for `birth_year_based_phase_inout`, except that the + `YYYY` entries are followed by `MM` keys. The `MM` keys a have the following + structure: + + - `first_birthmonth_to_consider`: The birth month at which the lookup table starts + (just choose some birthmonth that is far enough in the past). + - `last_birthmonth_to_consider`: The birth month at which the lookup table ends (just + choose some birthmonth that is far enough in the future). + - `years`: The age threshold in years. + - `months`: The age threshold in months. + + Excerpt from `sozialversicherung` / `rente` / `altersrente` / `langjährig` / + `altersgrenze.yaml`: + + ```yaml + ... + 1989-12-18: + reference: Rentenreformgesetz 1992. BGBl. I S. 2261 1989 § 41 + note: Increase of full retirement age from 63 to 65 for birth cohort 1938-1943. + first_birthyear_to_consider: 1900 + last_birthyear_to_consider: 2100 + 1937: + 12: + years: 63 + months: 0 + 1938: + 1: + years: 63 + months: 1 + ... + ``` - Generally, this `YYYY-MM-DD` key will have an entry `value: null` regardless of the - previous structure. Ideally, there would be a `reference` and potentially a `note` - key. Example: +- Finally, there are parameters that have a more complex structure, which is not as + common as `piecewise_linear` etc. These need to be specified as `require_converter`. + + Example from `arbeitslosengeld_2` / `bedarfe.yaml`: ```yaml - value: null - note: arbeitsl_hilfe is superseded by arbeitsl_geld_2 + parameter_regelsatz_nach_regelbedarfsstufen: + name: + de: Regelsatz mit direkter Angabe für Regelbedarfsstufen + en: Standard rate with direct specification of "Regelbedarfsstufen" + description: + de: >- + § 20 V SGB II. Neufassung SGB II § 20 (1a) und (2) durch + Artikel 6 G. v. 22.12.2016 BGBl. I S. 3159. + Regelbedafstufen: + 1: Alleinstehender Erwachsener + 2: Erwachsene in Partnerschaft + 3: Erwachsene unter 25 im Haushalt der Eltern + 4: Jugendliche + 5: Ältere Kinder + 6: Jüngste Kinder + en: >- + Regelbedarfsstufen: + 1: Single Adult + 2: Adults in a partner relationship + 3: Adults under 25 in the household of their parents + 4: Adolescents + 5: Older children + 6: Youngest children + unit: Euros + reference_period: Month + type: require_converter + 2011-01-01: + 1: 364 + 2: 328 + 3: 291 + 4: + min_alter: 14 + max_alter: 17 + betrag: 287 + 5: + min_alter: 6 + max_alter: 13 + betrag: 251 + 6: + min_alter: 0 + max_alter: 5 + betrag: 215 + reference: Artikel 1 G. v. 24.03.2011 BGBl. I S. 453. ``` - Only in exceptional cases it might be useful to set a parameter to some value - (typically zero) even if it is not relevant any more. +- In general, a parameter should appear for the first time that it is mentioned in a + law, becomes relevant, etc.. - In any case, it **must** be the case that it is obvious from the `YYYY-MM-DD` entry - that the (set of) parameter(s) is not relevant any more, else the previous ones will - linger on. + Do not set parameters to some value if they are not relevant yet. -(gep-3-storage-of-parameters)= +- If a parameter ceases to be relevant, is superseded by something else, etc., there + must be a `YYYY-MM-DD` key with a `note` and/or `reference` key. There must not be + other entries except for these two. -## Storage of parameters + Example: -The contents of the YAML files become part of the `policy_params` dictionary. Its keys -correspond to the names of the YAML files. Each value will be a dictionary that follows -the structure of the YAML file. These values can be used in policy functions as -`[key]_params`. + ```yaml + parameter_regelsatz_anteilsbasiert: + name: + de: Berechnungsgrundlagen für den Regelsatz + 2011-01-01: + note: Calculation method changed, see regelsatz_nach_regelbedarfsstufen. + ``` + +(gep-3-handling-of-parameters-in-the-codebase)= + +## Handling of parameters in the codebase -The contents mostly follow the content of the YAML files. The main difference is that -all parameters are present in their required format; no further parsing shall be -necessary inside the functions. The important changes include: +The contents of the YAML files are processed and are a pytree-like structure, similar to +the functions. That is, they can be used directly in their namespace (=path to the yaml +file excluding the file name) and accessed by absolute paths otherwise. -- In the YAML files, parameters may be specified as deviations from other values, - {ref}`see above <gep-3-deviation_from>`. All these are converted so that the relevant - values are part of the dictionary. -- Similarly, values from other points in time (via `access_prior_parameters`, - {ref}`see above <gep-3-access_prior_parameters>`) of `[param]` will be available as: - `[param]_t_minus_[number_of_lags]_[reference_period[0].lower()]`. -- Parameters for piecewise polynomials are parsed. -- Parameters that are derived from other parameters are calculated (examples include - `kinderzuschlag_max` starting in 2021 or calculating the phasing in of - `vorsorgeaufwendungen_alter` over the 2005-2025 period). +In this tree, they are specialised to the relevant policy date. Depending on the type of +the parameter (see the previous section), the following types are possible: -These functions will be avaiable to users en bloque or one-by-one so they can specify -parameters as in the YAML file for their own policy parameters. +- `scalar` parameters are just floats / ints / Booleans; i.e., simply the `value` key of + the yaml file. +- `dict` parameters are homogenous dictionaries with all contents of the `YYYY-MM-DD` + entries except for the `note` and `reference` keys. +- `piecewise_constant` / `piecewise_linear` / `piecewise_quadratic` / `piecewise_cubic` + parameters are converted to `PiecewisePolynomialParameter` objects. +- `birth_month_based_phase_inout` and `birth_year_based_phase_inout` are converted to + `ConsecutiveIntLookupTableParamValue` objects. +- `require_converter` must have a `params_function` that converts the `YYYY-MM-DD` + entries to a clear type. ## Discussion - <https://github.com/iza-institute-of-labor-economics/gettsim/pull/148> - <https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2003> +- GitHub PR for update (changes because of `GEP-6 <gep-6>`): + <https://github.com/iza-institute-of-labor-economics/gettsim/pull/855> ## Copyright This document has been placed in the public domain. + +## Appendix: json-schema for the yaml files + +```{literalinclude} ../../src/ttsim/params-schema.json +``` diff --git a/docs/geps/gep-04.md b/docs/geps/gep-04.md index 4d985f0667..6f50adf0fd 100644 --- a/docs/geps/gep-04.md +++ b/docs/geps/gep-04.md @@ -15,6 +15,8 @@ * Standards Track - * Created * 2022-03-28 +- * Updated + * 2025-07-23 - * Resolution * [Accepted](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2004) ``` @@ -49,6 +51,9 @@ motivated by two main reasons. input variables, it prevents unnecessary calculations, and it increases computation speed. +In addition to these requirements, we are using a hierarchical structure of functions to +allow for a clear separation of concerns. + ## Basic idea Based on the two requirements above we split the taxes and transfers system into a set @@ -63,11 +68,11 @@ GETTSIM; this is irrelevant for the DAG. Function arguments can be of three kinds: - User-provided input variables (e.g., - `einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m`). + `(einkommensteuer, einkünfte, aus_nichtselbstständiger_arbeit, bruttolohn_m)`). - Outputs of other functions in the taxes and transfers system (e.g., - `einkommensteuer__betrag_y_sn`). -- Parameters of the taxes and transfers system, which are pre-defined and always end in - `_params` (e.g., `ges_rentenv_params`). + `(einkommensteuer, betrag_y_sn)`). +- Parameters of the taxes and transfers system (e.g., + `(einkommensteuer, abgeltungssteuer, satz)`). GETTSIM will calculate the variables a researcher is interested in by starting with the input variables and calling the required functions in a correct order. This is @@ -79,59 +84,44 @@ why we use functions when programming: readability, simplicity, lower maintenanc potential entry point for a researcher to change the taxes and transfers system if she is able to replace this function with her own version. -See the following example for capital income taxes (Abgeltungssteuer). +See the following example for capital income taxes (Abgeltungssteuer). Based on the +location in the file system, the full path is +`(einkommensteuer, abgeltungssteuer, betrag_y_sn)`. ```python -def einkommensteuer__abgeltungssteuer__betrag_y_sn( - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn: float, - abgelt_st_params: dict, -) -> float: - """Calculate Abgeltungssteuer on Steuernummer-level. - - Parameters - ---------- - einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn - See :func:`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`. - abgelt_st_params - See params documentation :ref:`abgelt_st_params <abgelt_st_params>`. - - Returns - ------- - - """ - return ( - abgelt_st_params["satz"] - * einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn - ) +@policy_function(start_date="2009-01-01") +def betrag_y_sn(zu_versteuerndes_kapitaleinkommen_y_sn: float, satz: float) -> float: + """Abgeltungssteuer on Steuernummer level.""" + return satz * zu_versteuerndes_kapitaleinkommen_y_sn ``` -The function `einkommensteuer__abgeltungssteuer__betrag_y_sn` requires the variable -`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn`, which is the amount of -taxable capital income on the Steuernummer-level (the latter is implied by the `_sn` -suffix, see {ref}`gep-1`). -`einkommensteuer__einkünfte__aus_kapitalvermögen__betrag_y_sn` must be provided by the -user as a column of the input data or it has to be the name of another function. -`abgelt_st_params` is a dictionary of parameters related to the calculation of -`betrag_y_sn`. - -> Note: In the source code, the prefix `einkommensteuer__abgeltungssteuer__` is missing. -> This is because it is inferred from the path the function is defined in. For more -> details, see {ref}`gep-6`. +The function `(einkommensteuer, abgeltungssteuer, betrag_y_sn)` requires the variable +`zu_versteuerndes_kapitaleinkommen_y_sn`, which is the amount of taxable capital income +on the Steuernummer-level (the latter is implied by the `_sn` suffix, see {ref}`gep-1`). +`zu_versteuerndes_kapitaleinkommen_y_sn` must be provided by the user as a column of the +input data or it has to be the name of another function (in fact, in the GETTSIM code +base it will be calculated as income from capital minus expenses). `satz` is a parameter +coming out of a yaml file in the same directory. -Another function, say +Another function, say `(solidaritätszuschlag, betrag_y_sn)`, ```python -def solidaritätszuschlag__betrag_y_sn( +@policy_function( + start_date="2009-01-01", leaf_name="betrag_y_sn", vectorization_strategy="loop" +) +def betrag_y_sn_mit_abgelt_st( einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, einkommensteuer__anzahl_personen_sn: int, einkommensteuer__abgeltungssteuer__betrag_y_sn: float, - soli_st_params: dict, -) -> float: ... + parameter_solidaritätszuschlag: PiecewisePolynomialParameters, +) -> float: ``` -may use `einkommensteuer__abgeltungssteuer__betrag_y_sn` as an input argument. The DAG -backend ensures that the function `einkommensteuer__abgeltungssteuer__betrag_y_sn` will -be executed first. +may use `(einkommensteuer, abgeltungssteuer, betrag_y_sn)` as an input argument. Note +that because of a different namespace, we need to specify the full path. In order to +make valid Python identifiers out of paths, we use double underscores. Important for +this GEP is that the DAG ensures that the function +`(einkommensteuer, abgeltungssteuer, betrag_y_sn)` will be executed first. Note that the type annotations (e.g. `float`) indicate the expected type of each input and the output of a function, see {ref}`gep-2`. @@ -139,9 +129,10 @@ and the output of a function, see {ref}`gep-2`. ## Directed Acyclic Graph The relationship between functions and their input variables is a graph where nodes -represent columns in the data. These columns must either be present in the data supplied -to GETTSIM or they are computed by functions. Edges are pointing from input columns to -variables, which require them to be computed. +represent columns in the data (or parameters of the taxes and transfers system, but +these will be partialled into the functions first). These columns must either be present +in the data supplied to GETTSIM or they are computed by functions. Edges are pointing +from input columns to variables, which require them to be computed. ```{note} GETTSIM allows to visualize the graph, see this [guide](../how_to_guides/visualizing_the_system.ipynb). @@ -169,51 +160,60 @@ inputs provided by the user: > these functions). These functions need to be written for scalars; they will be > vectorised during the set up of the DAG. > -> - A set of dictionaries specifying aggregation functions, calculating, for example, -> household-level averages. -> > - The target columns of interest. The DAG is then used to call all required functions in the right order and to calculate the requested targets. -### Level of the DAG and limitations +### Level of the DAG In principle, GETTSIM will import all functions defined in the modules describing the taxes and transfers system. In principle, these functions refer to all years in GETTSIM's scope. There has to be some discretion in order to allow for the interface of functions to change over time, new functions to appear, or old ones to disappear. +Because of this, all functions operating on data to be considered by GETTSIM need to be +decorated as `@policy_function`. For simple cases, the decorator does not require any +arguments, e.g., the high-level functions to calculate the total amount of income: -Some examples include: - -1. `arbeitsl_hilfe` being replaced by `arbeitsl_geld_2`. -1. `kinderbonus` being active only in a few years. -1. The introduction of `kinderzuschl`. -1. Capital income entering `sum_brutto_eink` or not. - -The goal is that the graph for any particular point in time is minimal in the sense that -`arbeitsl_geld_2` does not appear before it was conceived, it is apparent from the -interface of `sum_brutto_eink` whether it includes capital income or not, etc.. - -In the yaml-files corresponding to a particular tax / transfer, functions not present in -all years will need to be listed with along with the dates for when they are active. See -:gep-3-keys-referring-to-functions: for the precise syntax. That mechanism should be -used for: - -1. Functions that are newly introduced. +```python +@policy_function() +def gesamteinkommen_y( + einkünfte__gesamtbetrag_der_einkünfte_y_sn: float, + abzüge__betrag_y_sn: float, +) -> float: + """Gesamteinkommen without Kinderfreibetrag on tax unit level.""" +``` -1. Functions that cease to be relevant. +When functions change, different values can be specified for different time periods. The +`leaf_name` ensures that they can be used without changes elsewhere in the system, +despite different raw names. For example, the calculation of the Solidaritätszuschlag +changed with the introduction of the Abgeltungssteuer: -1. Functions whose interface changes over time. +```python +@policy_function(end_date="2008-12-31", leaf_name="betrag_y_sn") +def betrag_y_sn_ohne_abgelt_st( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + parameter_solidaritätszuschlag: PiecewisePolynomialParameters, +) -> float: + """Calculate the Solidarity Surcharge on Steuernummer level.""" -1. Functions whose body changes so much that - - it is useful to signal that things have changed and/or - - it would be awkward to program the different behaviors in one block with case - distinctions. +@policy_function(start_date="2009-01-01", leaf_name="betrag_y_sn") +def betrag_y_sn_mit_abgelt_st( + einkommensteuer__betrag_mit_kinderfreibetrag_y_sn: float, + einkommensteuer__anzahl_personen_sn: int, + einkommensteuer__abgeltungssteuer__betrag_y_sn: float, + parameter_solidaritätszuschlag: PiecewisePolynomialParameters, +) -> float: + """Calculate the Solidarity Surcharge on Steuernummer level.""" +``` -Needless to say, the different reasons may appear at different points in time for the -same function. +The above construct ensures that both versions can be accessed as +`solidaritätszuschlag__betrag_y_sn` in other parts of the code. If a policy environment +is created for a point in time before 2009, it will be the first version that is used. +If the policy environment is created for a point in time after 2008, the second version +will be used. ## Additional functionalities @@ -228,35 +228,21 @@ Many taxes or transfers require group-level variables. \<GEP-2 describes `gep-2-aggregation-functions`> how reductions are handled in terms of the underlying data. This section describes how to specify them. -In order to inject aggregation functions at the group level into the graph, scripts with -functions of the taxes and transfer system should define a dictionary -`aggregation_specs` at the module level. This dictionary must specify the aggregated -columns as keys and the AggregateByGroupSpec data class as values. The data class -specifies the `source` (i.e. the column which is being aggregated) and the aggregation -method `agg`. +For example, we may need the number of adult household members. The following code in +`household_characteristics.py` does this: -For example, in `household_characteristics.py`, we could have: +```python +from ttsim import AggType, agg_by_group_function -``` -from ttsim.aggregation import AggregateByGroupSpec -aggregation_specs = { - "anzahl_kinder_hh": AggregateByGroupSpec(source="familie__kind", agg="sum"), - "anzahl_personen_hh": AggregateByGroupSpec(agg="count"), -} +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_hh(familie__erwachsen: bool, hh_id: int) -> int: + pass ``` -The group identifier (`hh_id`, `wohngeld__wthh_id`, `arbeitslosengeld_2__fg_id`, -`arbeitslosengeld_2__bg_id`, `arbeitslosengeld_2__eg_id`, `familie__ehe_id`, -`einkommensteuer__sn_id`) will be automatically included as an argument; for `count` -nothing else is necessary. - -The output type will be the same as the input type. Exceptions: - -- Input type `bool` and aggregation `sum` leads to output type `int`. -- Input type `int` and aggregation {math}`\in \{` `any`, `all` {math}`\}` leads to - output type `bool` -- Aggregation `count` will always result in an `int`. +That is, we need to specify the aggregation type (sum), the input column +(`familie__erwachsen`), and the group identifier (`hh_id`). GETTSIM will take care of +the rest. The most common operation are sums of individual measures. GETTSIM adds the following syntactic sugar: In case an individual-level column `my_col` exists, the graph will be @@ -284,18 +270,15 @@ def arbeitslosengeld_2__betrag_m_bg(kindergeld__betrag_m_bg, other_arguments): . a node `kindergeld__betrag_m_bg` containing the Bedarfsgemeinschaft-level sum of `kindergeld__betrag_m` will be automatically added to the graph. Its parents in the -graph will be `kindergeld__betrag_m` and `arbeitslosengeld_2__bg_id`. This is the same -as specifying: +graph will be `kindergeld__betrag_m` and `bg_id`. This is the same as specifying: -``` -from ttsim.aggregation import AggregateByGroupSpec - -aggregation_specs = { - "kindergeld__betrag_m_bg": AggregateByGroupSpec( - source="kindergeld__betrag_m", - agg="sum" - ) -} +```python +from ttsim import AggType, agg_by_group_function + + +@agg_by_group_function(agg_type=AggType.SUM) +def anzahl_erwachsene_hh(kindergeld__betrag_m: float, bg_id: int) -> float: + pass ``` (gep-4-aggregation-by-p-id-functions)= @@ -319,57 +302,52 @@ The key `source` specifies which column is the source of the aggregation operati key `p_id_to_aggregate_by` specifies the column that indicates to which `p_id` the values in `source` should be ascribed to. The key `agg` gives the aggregation method. -For example, in `kindergeld.py`, we could have: +For example, in the `kindergeld` namespace, we could have: -``` -aggregation_specs = { - "kindergeld__anzahl_ansprüche": AggregateByPIDSpec( - p_id_to_aggregate_by="kindergeld__p_id_empfänger", - source="kindergeld__grundsätzlich_anspruchsberechtigt", - agg="sum", - ), -} -``` +```python +from ttsim import AggType, agg_by_p_id_function -This dict creates a target function `kindergeld__anzahl_ansprüche` which gives the -amount of claims that a person has on Kindergeld, based on the -`kindergeld__grundsätzlich_anspruchsberechtigt` function which returns Booleans, which -show whether a child is a reason for a Kindergeld claim. -The output type will be the same as the input type. Exceptions: +@agg_by_p_id_function(agg_type=AggType.SUM) +def anzahl_ansprüche( + grundsätzlich_anspruchsberechtigt: bool, p_id_empfänger: int, p_id: int +) -> int: + pass +``` -- Input type `bool` and aggregation `sum` leads to output type `int`. -- Input type `int` or `float` and aggregation {math}`\in \{` `any`, `all` {math}`\}` - leads to output type `bool` -- Aggregation `count` will always result in an `int`. +This places a target function `kindergeld__anzahl_ansprüche` which gives the amount of +claims that a person has on Kindergeld, based on the +`kindergeld__grundsätzlich_anspruchsberechtigt` function which returns Booleans, which +show whether a child is a reason for a Kindergeld claim. `p_id` and some `p_id_[target]` +are required arguments; they will be processed according to naming conventions. (gep-4-time-unit-conversion)= ### Conversion between reference periods Similarly to summations to the group level, GETTSIM will automatically convert values -referring to different reference periods defined in {ref}`gep-1` (years (default, no -suffix), months `_m`, weeks `_w`, and days `_d`). +referring to different reference periods defined in {ref}`gep-1` (years `_y`, quarters +`_q`, months `_m`, weeks `_w`, and days `_d`). -In case a column with annual values `[column]` exists, the graph will be augmented with -a node including monthly values like `[column]_m` should that be requested. Requests can -be either inputs in a downstream function or explicit targets of the calculation. In -case the column refers to a different level of aggregation, say `[column]_hh`, the same -applies to `[column]_m_hh`. +In case a column with annual values `[column]_y` exists, the graph will be augmented +with a node including monthly values like `[column]_m` should that be requested. +Requests can be either inputs in a downstream function or explicit targets of the +calculation. In case the column refers to a different level of aggregation, say +`[column]_hh`, the same applies to `[column]_m_hh`. -Automatic summation will only happen in case no column `[column]_m` is explicitly set. +Automatic conversion will only happen in case no column `[column]_m` is explicitly set. Using a different conversion function than the sum is as easy as explicitly specifying `[column]_m`. Conversion goes both ways and uses the following formulas: -```{eval-rst} -| time unit | suffix | factor | -| Year | | 1 | -| Month | ``_m`` | 12 | -| Week | ``_w`` | 365.25 / 7 | -| Day | ``_d`` | 365.25 | -``` +| time unit | suffix | factor relative to Year | +| --------- | ------ | ----------------------- | +| Year | `_y` | 1 | +| Quarter | `_q` | 4 | +| Month | `_m` | 12 | +| Week | `_w` | 365.25 / 7 | +| Day | `_d` | 365.25 | These values average over leap years. They ensure that conversion is always possible both ways without changing quantities. In case more complex conversions are needed (for @@ -383,8 +361,7 @@ functions for, say, `[column]_w` need to be set. splits and distributes computations. - Based on GETTSIM and many other projects, the [dags](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2004) - project combines the core ideas in one spot. GETTSIM will likely use it to implement - functionality at some point. + project combines the core ideas in one spot and has become a dependency of GETTSIM. ## Alternatives @@ -395,6 +372,8 @@ computational advantages. - <https://github.com/iza-institute-of-labor-economics/gettsim/pull/178> - <https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2004> +- GitHub PR for update (changes because of `GEP-6 <gep-6>`): + <https://github.com/iza-institute-of-labor-economics/gettsim/pull/855> ## Copyright diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index 756f2405ae..b69fc04893 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -11,6 +11,8 @@ * Standards Track - * Created * 2022-02-02 +- * Updated + * 2025-07-23 - * Resolution * [Accepted](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2005/near/270427530) ``` @@ -54,14 +56,15 @@ from ttsim import policy_function, RoundingSpec, RoundingDirection @policy_function( rounding_spec=RoundingSpec( base=0.0001, - direction=RoundingDirection.NEAREST, + direction="nearest", reference="§76g SGB VI Abs. 4 Nr. 4", ), start_date="2021-01-01", ) def höchstbetrag_m( grundrentenzeiten_monate: int, - ges_rente_params: dict, + berücksichtigte_wartezeit_monate: dict[str, int], + höchstwert_der_entgeltpunkte: dict[str, float], ) -> float: ... ``` @@ -70,8 +73,7 @@ The specification of the rounding parameters is defined via the `RoundingSpec` c - The `base` determines the base to which the variables is rounded. It has to be a floating point number. -- The `direction` has to be one of `RoundingDirection.UP`, `RoundingDirection.DOWN`, - `RoundingDirection.NEAREST`. +- The `direction` has to be one of `up`, `down`, or `nearest`. - The `reference` provides the legal reference for the rounding rule. This is optional. - Additionally, via the `to_add_after_rounding` input, users can specify some amount that should be added after the rounding is done (this was relevant for the income tax @@ -87,13 +89,14 @@ This implementation was chosen over alternatives (e.g., specifying rounding rule parameter files) for the following reason: - Rounding rules are not a parameter, but a function property that we want to turn off - an one. Hence, it makes sense to define it at the function level. + and on. Hence, it makes sense to define it at the function level. - Rounding parameters might change over time. In this case, the rounding parameters for each period can be specified using the `start_date`, `end_date` keywords in the `policy_function` decorator. - Optional rounding can be easily specified for user-written functions. -- At the definition of a function, it is clearly visible whether it is optionally - rounded and where the rounding parameters are found. +- At the definition of a function, it is clearly visible whether and how it is + optionally rounded (initially we included the rounding parameters in the yaml files, + which led to an unclear structure there and one always had to look in two places). ## Discussion @@ -101,6 +104,10 @@ parameter files) for the following reason: - PR: <https://github.com/iza-institute-of-labor-economics/gettsim/pull/324> - PR Implementation: <https://github.com/iza-institute-of-labor-economics/gettsim/pull/316> +- GitHub PR for update (changes because of `GEP-6 <gep-6>`): + <https://github.com/iza-institute-of-labor-economics/gettsim/pull/855> +- Github PR changing to a RoundingSpec class rather than parameters specified in the + yaml files: <https://github.com/iza-institute-of-labor-economics/gettsim/pull/854> ## Copyright diff --git a/docs/geps/gep-06.md b/docs/geps/gep-06.md index a425364f87..072908b808 100644 --- a/docs/geps/gep-06.md +++ b/docs/geps/gep-06.md @@ -229,19 +229,18 @@ The proposed changes will affect all areas of GETTSIM is a standard way mapping dictionary contents in the yaml-files to corresponding data classes. Dates are selected by the `policy_environment` date. If there are changes in the structure of the parameters over time, a similar mechanism like the `start_date` - and `end_date` for the policy functions can be used. The data classes will all - inherit from a base class `PolicyParameter`. + and `end_date` for the policy functions will be used based on the `YYYY-MM-DD` keys + in the yaml-files. Functions will not have `[x]_params` arguments containing potentially large and - unstructured dicts any more. Instead, functions will only use the `PolicyParameters` - they require. These could be scalars or structured objects, e.g., the inputs for - `piecewise_polynomial`. + unstructured dicts any more. Instead, functions will only use the policy parameters + they require. These could be scalars, homogenous dictionaries, the inputs for + `piecewise_polynomial` parameters, or custom objects. The namespace makes clear we are talking about, say, the function `beitrag` in the namespace `arbeitslosenversicherung` will have an input `beitragssatz`. If we need parameters which are external to the current namespace, we will need the same verbose - syntax as in 1. - (`sozialversicherungsbeiträge__rentenversicherung__beitragsbemessungsgrenze_m`). + syntax as in 1. (`sozialversicherung__rente__beitrag__beitragsbemessungsgrenze_m`). ## Backward compatibility diff --git a/docs/geps/gep-07.md b/docs/geps/gep-07.md new file mode 100644 index 0000000000..144dd09293 --- /dev/null +++ b/docs/geps/gep-07.md @@ -0,0 +1,408 @@ +(gep-7)= + +# GEP 7 — GETTSIM's User Interface + +```{list-table} +- * Author + * [Hans-Martin von Gaudecker](https://github.com/hmgaudecker) +- * Status + * Draft +- * Type + * Standards Track +- * Created + * 2025-07-23 +- * Resolution + * [Accepted](https://gettsim.zulipchat.com/#narrow/channel/309998-GEPs/topic/GEP.2007/near/530389224) +``` + +## Abstract + +This GEP proposes a new user interface for GETTSIM that simplifies data input/output +handling, reduces the learning curve for new users, and provides more flexibility in +working with different datasets. The interface redesign aims to address the challenges +identified during the 2024 GETTSIM workshop and, more generally, experience with using +GETTSIM versions up to 0.7.0. At the same time, we maintain compatibility with the +namespace architecture introduced in GEP 6. + +## Motivation and Scope + +The current GETTSIM interface presents several challenges that affect both new and +experienced users: + +1. **High Entry Barrier**: Users need detailed knowledge of the Directed Acyclic Graph + (DAG) structure and precise input requirements, making it difficult for newcomers to + get started. + +1. **Data Mapping Complexity**: Matching existing datasets with GETTSIM's requirements + is challenging due to the fine-grained nature of the graph. + +1. **Limited Flexibility**: The current interface makes it difficult to work with + different datasets / areas of the taxes and transfers system. + +This GEP aims to address these issues by introducing a more intuitive and flexible +interface while maintaining GETTSIM's computational robustness. + +## Usage and Impact + +1. **Basic workflow** + + There is a single entry point for GETTSIM: The `main` function. It is powered by a + DAG in the background. + + This means that the user will have to start by telling it the desired target + ("`main_target`") or set of targets ("`main_targets`"). Ultimately, the main target + will typically be a dataset with values for taxes and transfers. However, the `main` + function can also be used to obtain intermediate objects. E. g., the taxes and + transfers system at a particular date (the "`policy_environ­ment`"), which she wants + to modify in order to model a reform. + + The targets determine the required inputs. For example, in order to compute taxes and + transfers for a set of households, one will need as primitives + + - the date for which the policy environment is set up ("`policy_date_str`") + - data on these households ("`input_data`") + - the set of taxes and transfers to be computed ("`tt_targets`"). This could be left + out, in which case all possible targets will be computed. However, that will often + be a daunting task in terms of requirements on the data and computer memory. + + If only a policy environment is to be returned, just the date is required as an + input. + +1. **Worked example** + + Here is an example (the variables `inputs_df`, `inputs_map`, and `targets_tree` will + be shown below). + + ```python + from gettsim import InputData, MainTarget, TTTargets, main + + + outputs_df = main( + main_target=MainTarget.results.df_with_mapper, + policy_date_str="2025-01-01", + input_data=InputData.df_and_mapper( + df=inputs_df, + mapper=inputs_map, + ), + tt_targets=TTTargets(tree=targets_tree), + ) + ``` + + All elements that are not atomic are specified as GETTSIM objects, which means that + users can benefit from autocompletion and type hints provided by their IDE (see + below). + + The first argument, `main_target`, specifies the type of object to compute. In this + case, we want the "results" in the "DataFrame with mapper" format. That is, GETTSIM + will compute all desired targets and return a DataFrame with columns specified by the + user. + + Say we want to compute the contributions to long term care insurance + (Pflegeversicherung). The fourth argument, `tt_targets`, specifies the set of taxes + and transfers ("`tt`") to compute. Because we ask for the "results" in the "DataFrame + with mapper" format, this actually has to be a mapping from the targets to the + columns in the output DataFrame. In this case, the argument `tt_targets` needs to be + a *pytree*, which provides that mapping: + + ```python + targets_tree = { + "sozialversicherung": { + "pflege": { + "beitrag": { + "betrag_versicherter_m": "ltci_contrib", + } + } + } + } + ``` + + That is, the call to `main` above will return a DataFrame with one column + `ltci_contrib`, which will be of the same length as the input data. As the possible + target trees will depend on the policy environment, we will need to make the + documentation dynamic. + + The second argument, `policy_date_str`, specifies the date at which the policy + environment is set up and evaluated. + + Say we want to compute the long term care insurance contribution for three people, + one of whom has an underage child living in her household. Our data looks as follows: + + | | age | wage | id | hh_id | mother_id | has_kids | + | --: | --: | ---: | --: | ----: | --------: | :------- | + | 0 | 25 | 950 | 0 | 0 | -1 | False | + | 1 | 45 | 950 | 1 | 1 | -1 | True | + | 2 | 3 | 0 | 2 | 1 | 1 | False | + | 3 | 65 | 950 | 3 | 2 | -1 | True | + + We can use this DataFrame directly. All we need to do is to tell GETTSIM how to map + the columns of that DataFrame to the names of inputs it knows about. This is done by + a *mapper*, which again is a *pytree*. In our case, it looks as follows: + + ```python + inputs_map = { + "p_id": "id", + "hh_id": "hh_id", + "alter": "age", + "familie": { + "p_id_elternteil_1": "mother_id", + "p_id_elternteil_2": -1, + }, + "einkommensteuer": { + "einkünfte": { + "aus_nichtselbstständiger_arbeit": {"bruttolohn_m": "wage"}, + "ist_selbstständig": False, + "aus_selbstständiger_arbeit": {"betrag_m": 0.0}, + } + }, + "sozialversicherung": { + "pflege": { + "beitrag": { + "hat_kinder": "has_kids", + } + }, + "kranken": { + "beitrag": {"bemessungsgrundlage_rente_m": 0.0, "privat_versichert": False} + }, + }, + } + ``` + + All *leaves* of the tree are either column names in the data or scalars. E.g., we do + not consider self-employed people, pensioners, or people with (substitutive) private + health insurance. Instead of requiring some default value in the data, we can simply + use a scalar value in the mapper. + + *Note:* We picked an example with little, but not zero, complexity. The amount of + inputs is simply necessary because public long term care insurance contributions + depend on various kinds of income (from dependent employment, from self-employment, + pensions), the combination of the insured person's age and her children, and whether + the insured person is covered by private health insurance. + + Finally, here is the output of our example: + + | | ltci_contrib | + | --: | -----------: | + | 0 | 14.72 | + | 1 | 9.82 | + | 2 | 0 | + | 3 | 9.82 | + +1. **Underlying structure** + + The interface DAG looks as follows: + + ```{raw} html + --- + file: ./interface_dag.html + --- + ``` + + The **policy_date** is the date at which the policy environment is set up. It could + be passed as `policy_date_str`, which is an ISO-string `YYYY-MM-DD`. By default, it + is also used as the date for which the taxes and transfers function is evaluated (the + distinction matters for things like pensions etc., which depend on cohort, age, and + calendar time). If users need more control, `evaluation_date` (or + `evaluation_date_str`) can be specified separately. + + The **policy environment** consists of all functions relevant at some point in time. + E.g., when requesting a policy environment for some date in the 2020s, Erziehungsgeld + will not be part of it because it was replaced by Elterngeld long before. Users + wishing to implement reforms—whether they consist of changing parameter values or + replacing functions—will do so at the level of the policy environment. + + The **input data** are the data provided by the user. They need to be passed in one + of several forms. + + Users specify the **taxes and transfers targets** ("`tt_targets`"), which GETTSIM + will return. When left out, GETTSIM will return all functions it can compute. + + The elements of the **specialized environment** combine policy environment and data. + Even if users do not typically need to work with these elements, they are so central + to GETTSIM that it is useful to list them here. + + - **with derived functions and without tree logic** adds aggregations (e.g., adding + up individual incomes to income at the Steuernummer level) and time conversions + (e.g., from month to year). Doing so requires knowing the names of the columns in + the data. + - **with processed params and scalars**. The parameters of the taxes and transfers + system are stored in special objects. Some of them require further conversion + through functions that do not depend on household data ("`param_functions`"). + Similarly, it is possible to pass scalars instead of data columns for things that + are not observed in a dataset or that can be assumed constant in a particular + application (e.g., setting pension payments to zero when looking at the labor + supply of 30-year olds). In this step, these functions are run and all parameters + are converted to their final form (e.g., a `ScalarParam` becomes just a number). + Where relevant, policy functions are replaced by scalars passed as input data. + - **with partialled params and scalars** partials all parameters and scalars to the + functions that make up the taxes and transfers DAG. That is, the resulting + functions only depend on column arguments (either passed as input data or computed + earlier in the DAG). + - **taxes and transfers DAG** is the DAG representation of the functions in the + previous step. + - **taxes and transfers function** is the function that takes the columns in the + processed data as arguments and returns the desired taxes and transfers targets. + Running this function leads to raw results (they still contain internals and should + not be used by non-GETTSIM functions) + + The **results** contain the output of the taxes and transfers function, purged of + internals and converted to the format requested by the user. + + The German taxes and transfers system is complex and specifying inputs can be a + daunting task. The **templates** aim to help with that. E.g., asking for + `MainTarget.templates.input_data` will return a nested dictionary that may include: + + ```python + { + "einkommensteuer": { + "einkünfte": {"aus_forst_und_landwirtschaft": {"betrag_y": "FloatColumn"}} + } + } + ``` + + These templates can be modified to become a mapper, as in the above example. That is, + "`FloatColumn`" could be replaced by the name of the column in the input data frame + or by 0.0 if only employees who don't have other types of income are in the sample. + + Additional user-facing elements are: + + - **rounding** is a Boolean that determines whether to round the results. Defaults to + `True`, which yields a more accurate depiction of the taxes and transfers system. + Turn off if you need numerical derivatives or the like. + + * The **backend** is the backend used to compute the taxes and transfers. Default is + `"numpy"`, the other option is `"jax"`. + * **include_fail_nodes** is a Boolean that determines whether to raise errors for + invalid inputs. Defaults to `True`, only turn off if you really know what you are + doing (and even then, please turn it on before filing an issue). + * **include_warn_nodes** is a Boolean that determines whether to display warnings for + some cases that might lead to surprising behavior. Defaults to `True`, only turn + off if you really know what you are doing (and even then, please turn it on before + filing an issue). + + Other elements of the interface DAG, which will typically be less relevant for users, + include: + + - The **original policy objects**, which consist of all functions and parameters that + GETTSIM ships with. These are all functions and parameters that have been relevant + at some point in time. A user won't typically need to work with this; a policy + environment is constructed from this and a date. + - The **labels** contain things like column names, names of root nodes, etc. — + anything where we only need the label of something and not the object itself. + - **num_segments** is the number of unique individuals in the data. It is required by + the Jax backend to aggregate by group / another individual. determine the number of + segments in the data. + +1. **Autocompletion features** + + The internal structure of the building blocks described in the previous section can + be rather complex. In order to minimize errors arising from typos and misconceptions, + GETTSIM provides objects that allow to take advantage of modern IDEs'/editors' + autocompletion and type hinting features. + + For example, after: + + ```python + from gettsim import main, MainTarget + + main(main_target=MainTarget.) + ``` + + tools like VS Code will show the options: + + ```python + results + templates + policy_environment + specialized_environment + orig_policy_objects + processed_data + raw_results + labels + policy_date_str + input_data + tt_targets + num_segments + backend + policy_date + evaluation_date_str + evaluation_date + xnp + dnp + rounding + warn_if + fail_if + ``` + + Such objects are provided for all arguments to main that need a hierarchical + structure. E.g. , the `input_data` argument takes an instance of `InputData` like in + the above example. Again, one will be able to benefit from autocompletion features + from typing the first 'I' onwards. + +1. **Ecosystem** + + More functionality will be added in external packages. Check out: + + - [gettsim-personas](https://github.com/ttsim-dev/gettsim-personas): Pre-defined + example personas ("Musterhaushalte") + - [soep-preparation](https://github.com/ttsim-dev/soep-preparation): A pipeline + preparing the SOEP data for use with GETTSIM + +1. **Interactive Graph Interface** + + We focus on the infrastructure for the moment; this will be easy to add and will + require a much more interactive and user-driven approach. Top-down planning does not + seem useful at this point. + +## Backward Compatibility + +This interface represents a significant change. There is no way to ensure backward +compatibility. This said, the former: + +```python +from gettsim import ( + set_up_policy_environment, + compute_taxes_and_transfers, + +policy_params, policy_functions = set_up_policy_environment(2025) +result = compute_taxes_and_transfers( + data=data, + functions=policy_functions, + params=policy_params, + targets=targets, +) +``` + +can be replaced by: + +```python +from gettsim import main, InputData, MainTarget, TTTargets + +outputs = main( + main_targets=[ + MainTarget.policy_environment, + MainTarget.results.df_with_mapper, + ], + policy_date_str="2025-01-01", + input_data=InputData.df_and_mapper( + df=data, + mapper=inputs_map, + ), + tt_targets=TTTargets(tree=tt_targets_tree), +) +policy_environment = outputs["policy_environment"] +result = outputs["results"]["df_with_mapper"] +``` + +Beyond the interface change, users will need to change `targets` to `tt_targets_tree` +and to create the `inputs_map`. Both adjustments are due to the changes in the internal +structure of GETTSIM described in [GEP 6](gep-06). + +## Discussion + +- **ENH: Interface, 2024 edition · Issue #781 · iza-institute-of-labor-economics/gettsim + \- Part 1**. + [https://github.com](https://github.com/iza-institute-of-labor-economics/gettsim/issues/781) + +## Copyright + +This document has been placed in the public domain. diff --git a/docs/geps/gep_07_example.py b/docs/geps/gep_07_example.py new file mode 100644 index 0000000000..0d8c55ad94 --- /dev/null +++ b/docs/geps/gep_07_example.py @@ -0,0 +1,70 @@ +import pandas as pd + +from gettsim import InputData, MainTarget, TTTargets, main + +inputs_df = pd.DataFrame( + { + "age": [25, 45, 3, 65], + "wage": [950, 950, 0, 950], + "id": [0, 1, 2, 3], + "hh_id": [0, 1, 1, 2], + "mother_id": [-1, -1, 1, -1], + "has_kids": [False, True, False, True], + } +) + +inputs_map = { + "p_id": "id", + "hh_id": "hh_id", + "alter": "age", + "familie": { + "p_id_elternteil_1": "mother_id", + "p_id_elternteil_2": -1, + }, + "einkommensteuer": { + "einkünfte": { + "aus_nichtselbstständiger_arbeit": {"bruttolohn_m": "wage"}, + "ist_hauptberuflich_selbstständig": False, + "aus_selbstständiger_arbeit": {"betrag_m": 0.0}, + } + }, + "sozialversicherung": { + "pflege": { + "beitrag": { + "hat_kinder": "has_kids", + } + }, + "kranken": { + "beitrag": {"bemessungsgrundlage_rente_m": 0.0, "privat_versichert": False} + }, + }, +} + +targets_tree = { + "sozialversicherung": { + "pflege": { + "beitrag": { + "betrag_versicherter_m": "ltci_contrib", + } + } + } +} + +outputs_df = main( + main_target=MainTarget.results.df_with_mapper, + policy_date_str="2025-01-01", + input_data=InputData.df_and_mapper( + df=inputs_df, + mapper=inputs_map, + ), + tt_targets=TTTargets(tree=targets_tree), +) + +print(outputs_df.round(2).to_markdown()) + +print(inputs_df.to_markdown()) + +pe = main( + main_target=MainTarget.policy_environment, + policy_date_str="2025-01-01", +) diff --git a/docs/geps/interface_dag.html b/docs/geps/interface_dag.html new file mode 100644 index 0000000000..ddcf3530bd --- /dev/null +++ b/docs/geps/interface_dag.html @@ -0,0 +1,3885 @@ +<html> +<head><meta charset="utf-8" /></head> +<body> + <div> <script type="text/javascript">window.PlotlyConfig = {MathJaxConfig: 'local'};</script> + <script type="text/javascript">/** +* plotly.js v3.0.1 +* Copyright 2012-2025, Plotly, Inc. +* All rights reserved. +* Licensed under the MIT license +*/ +( + function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else { + root.moduleName = factory(); + } +} (typeof self !== "undefined" ? self : this, () => { +"use strict";var Plotly=(()=>{var VQe=Object.create;var MS=Object.defineProperty,HQe=Object.defineProperties,GQe=Object.getOwnPropertyDescriptor,jQe=Object.getOwnPropertyDescriptors,WQe=Object.getOwnPropertyNames,XQ=Object.getOwnPropertySymbols,ZQe=Object.getPrototypeOf,KQ=Object.prototype.hasOwnProperty,XQe=Object.prototype.propertyIsEnumerable;var YQ=(e,t,r)=>t in e?MS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,JQ=(e,t)=>{for(var r in t||(t={}))KQ.call(t,r)&&YQ(e,r,t[r]);if(XQ)for(var r of XQ(t))XQe.call(t,r)&&YQ(e,r,t[r]);return e},$Q=(e,t)=>HQe(e,jQe(t));var Ll=(e,t)=>()=>(e&&(t=e(e=0)),t);var ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),QQ=(e,t)=>{for(var r in t)MS(e,r,{get:t[r],enumerable:!0})},eee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of WQe(t))!KQ.call(e,i)&&i!==r&&MS(e,i,{get:()=>t[i],enumerable:!(n=GQe(t,i))||n.enumerable});return e};var YQe=(e,t,r)=>(r=e!=null?VQe(ZQe(e)):{},eee(t||!e||!e.__esModule?MS(r,"default",{value:e,enumerable:!0}):r,e)),B1=e=>eee(MS({},"__esModule",{value:!0}),e);var e6=ye(tee=>{"use strict";tee.version="3.0.1"});var iee=ye((ree,t6)=>{(function(t,r,n){r[t]=r[t]||n(),typeof t6!="undefined"&&t6.exports&&(t6.exports=r[t])})("Promise",typeof window!="undefined"?window:ree,function(){"use strict";var t,r,n,i=Object.prototype.toString,a=typeof setImmediate!="undefined"?function(E){return setImmediate(E)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(E,k,A,L){return Object.defineProperty(E,k,{value:A,writable:!0,configurable:L!==!1})}}catch(p){t=function(k,A,L){return k[A]=L,k}}n=function(){var E,k,A;function L(_,C){this.fn=_,this.self=C,this.next=void 0}return{add:function(C,M){A=new L(C,M),k?k.next=A:E=A,k=A,A=void 0},drain:function(){var C=E;for(E=k=r=void 0;C;)C.fn.call(C.self),C=C.next}}}();function o(p,E){n.add(p,E),r||(r=a(n.drain))}function s(p){var E,k=typeof p;return p!=null&&(k=="object"||k=="function")&&(E=p.then),typeof E=="function"?E:!1}function l(){for(var p=0;p<this.chain.length;p++)u(this,this.state===1?this.chain[p].success:this.chain[p].failure,this.chain[p]);this.chain.length=0}function u(p,E,k){var A,L;try{E===!1?k.reject(p.msg):(E===!0?A=p.msg:A=E.call(void 0,p.msg),A===k.promise?k.reject(TypeError("Promise-chain cycle")):(L=s(A))?L.call(A,k.resolve,k.reject):k.resolve(A))}catch(_){k.reject(_)}}function c(p){var E,k=this;if(!k.triggered){k.triggered=!0,k.def&&(k=k.def);try{(E=s(p))?o(function(){var A=new d(k);try{E.call(p,function(){c.apply(A,arguments)},function(){f.apply(A,arguments)})}catch(L){f.call(A,L)}}):(k.msg=p,k.state=1,k.chain.length>0&&o(l,k))}catch(A){f.call(new d(k),A)}}}function f(p){var E=this;E.triggered||(E.triggered=!0,E.def&&(E=E.def),E.msg=p,E.state=2,E.chain.length>0&&o(l,E))}function h(p,E,k,A){for(var L=0;L<E.length;L++)(function(C){p.resolve(E[C]).then(function(g){k(C,g)},A)})(L)}function d(p){this.def=p,this.triggered=!1}function v(p){this.promise=p,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function x(p){if(typeof p!="function")throw TypeError("Not a function");if(this.__NPO__!==0)throw TypeError("Not a promise");this.__NPO__=1;var E=new v(this);this.then=function(A,L){var _={success:typeof A=="function"?A:!0,failure:typeof L=="function"?L:!1};return _.promise=new this.constructor(function(M,g){if(typeof M!="function"||typeof g!="function")throw TypeError("Not a function");_.resolve=M,_.reject=g}),E.chain.push(_),E.state!==0&&o(l,E),_.promise},this.catch=function(A){return this.then(void 0,A)};try{p.call(void 0,function(A){c.call(E,A)},function(A){f.call(E,A)})}catch(k){f.call(E,k)}}var b=t({},"constructor",x,!1);return x.prototype=b,t(b,"__NPO__",0,!1),t(x,"resolve",function(E){var k=this;return E&&typeof E=="object"&&E.__NPO__===1?E:new k(function(L,_){if(typeof L!="function"||typeof _!="function")throw TypeError("Not a function");L(E)})}),t(x,"reject",function(E){return new this(function(A,L){if(typeof A!="function"||typeof L!="function")throw TypeError("Not a function");L(E)})}),t(x,"all",function(E){var k=this;return i.call(E)!="[object Array]"?k.reject(TypeError("Not an array")):E.length===0?k.resolve([]):new k(function(L,_){if(typeof L!="function"||typeof _!="function")throw TypeError("Not a function");var C=E.length,M=Array(C),g=0;h(k,E,function(T,F){M[T]=F,++g===C&&L(M)},_)})}),t(x,"race",function(E){var k=this;return i.call(E)!="[object Array]"?k.reject(TypeError("Not an array")):new k(function(L,_){if(typeof L!="function"||typeof _!="function")throw TypeError("Not a function");h(k,E,function(M,g){L(g)},_)})}),x})});var xa=ye((qQt,r6)=>{(function(){var e={version:"3.8.2"},t=[].slice,r=function(Z){return t.call(Z)},n=self.document;function i(Z){return Z&&(Z.ownerDocument||Z.document||Z).documentElement}function a(Z){return Z&&(Z.ownerDocument&&Z.ownerDocument.defaultView||Z.document&&Z||Z.defaultView)}if(n)try{r(n.documentElement.childNodes)[0].nodeType}catch(Z){r=function(oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=oe[we];return Be}}if(Date.now||(Date.now=function(){return+new Date}),n)try{n.createElement("DIV").style.setProperty("opacity",0,"")}catch(Z){var o=this.Element.prototype,s=o.setAttribute,l=o.setAttributeNS,u=this.CSSStyleDeclaration.prototype,c=u.setProperty;o.setAttribute=function(oe,we){s.call(this,oe,we+"")},o.setAttributeNS=function(oe,we,Be){l.call(this,oe,we,Be+"")},u.setProperty=function(oe,we,Be){c.call(this,oe,we+"",Be)}}e.ascending=f;function f(Z,oe){return Z<oe?-1:Z>oe?1:Z>=oe?0:NaN}e.descending=function(Z,oe){return oe<Z?-1:oe>Z?1:oe>=Z?0:NaN},e.min=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we<Be;)if((We=Z[we])!=null&&We>=We){Ue=We;break}for(;++we<Be;)(We=Z[we])!=null&&Ue>We&&(Ue=We)}else{for(;++we<Be;)if((We=oe.call(Z,Z[we],we))!=null&&We>=We){Ue=We;break}for(;++we<Be;)(We=oe.call(Z,Z[we],we))!=null&&Ue>We&&(Ue=We)}return Ue},e.max=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we<Be;)if((We=Z[we])!=null&&We>=We){Ue=We;break}for(;++we<Be;)(We=Z[we])!=null&&We>Ue&&(Ue=We)}else{for(;++we<Be;)if((We=oe.call(Z,Z[we],we))!=null&&We>=We){Ue=We;break}for(;++we<Be;)(We=oe.call(Z,Z[we],we))!=null&&We>Ue&&(Ue=We)}return Ue},e.extent=function(Z,oe){var we=-1,Be=Z.length,Ue,We,wt;if(arguments.length===1){for(;++we<Be;)if((We=Z[we])!=null&&We>=We){Ue=wt=We;break}for(;++we<Be;)(We=Z[we])!=null&&(Ue>We&&(Ue=We),wt<We&&(wt=We))}else{for(;++we<Be;)if((We=oe.call(Z,Z[we],we))!=null&&We>=We){Ue=wt=We;break}for(;++we<Be;)(We=oe.call(Z,Z[we],we))!=null&&(Ue>We&&(Ue=We),wt<We&&(wt=We))}return[Ue,wt]};function h(Z){return Z===null?NaN:+Z}function d(Z){return!isNaN(Z)}e.sum=function(Z,oe){var we=0,Be=Z.length,Ue,We=-1;if(arguments.length===1)for(;++We<Be;)d(Ue=+Z[We])&&(we+=Ue);else for(;++We<Be;)d(Ue=+oe.call(Z,Z[We],We))&&(we+=Ue);return we},e.mean=function(Z,oe){var we=0,Be=Z.length,Ue,We=-1,wt=Be;if(arguments.length===1)for(;++We<Be;)d(Ue=h(Z[We]))?we+=Ue:--wt;else for(;++We<Be;)d(Ue=h(oe.call(Z,Z[We],We)))?we+=Ue:--wt;if(wt)return we/wt},e.quantile=function(Z,oe){var we=(Z.length-1)*oe+1,Be=Math.floor(we),Ue=+Z[Be-1],We=we-Be;return We?Ue+We*(Z[Be]-Ue):Ue},e.median=function(Z,oe){var we=[],Be=Z.length,Ue,We=-1;if(arguments.length===1)for(;++We<Be;)d(Ue=h(Z[We]))&&we.push(Ue);else for(;++We<Be;)d(Ue=h(oe.call(Z,Z[We],We)))&&we.push(Ue);if(we.length)return e.quantile(we.sort(f),.5)},e.variance=function(Z,oe){var we=Z.length,Be=0,Ue,We,wt=0,tt=-1,zt=0;if(arguments.length===1)for(;++tt<we;)d(Ue=h(Z[tt]))&&(We=Ue-Be,Be+=We/++zt,wt+=We*(Ue-Be));else for(;++tt<we;)d(Ue=h(oe.call(Z,Z[tt],tt)))&&(We=Ue-Be,Be+=We/++zt,wt+=We*(Ue-Be));if(zt>1)return wt/(zt-1)},e.deviation=function(){var Z=e.variance.apply(this,arguments);return Z&&Math.sqrt(Z)};function v(Z){return{left:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be<Ue;){var We=Be+Ue>>>1;Z(oe[We],we)<0?Be=We+1:Ue=We}return Be},right:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be<Ue;){var We=Be+Ue>>>1;Z(oe[We],we)>0?Ue=We:Be=We+1}return Be}}}var x=v(f);e.bisectLeft=x.left,e.bisect=e.bisectRight=x.right,e.bisector=function(Z){return v(Z.length===1?function(oe,we){return f(Z(oe),we)}:Z)},e.shuffle=function(Z,oe,we){(Be=arguments.length)<3&&(we=Z.length,Be<2&&(oe=0));for(var Be=we-oe,Ue,We;Be;)We=Math.random()*Be--|0,Ue=Z[Be+oe],Z[Be+oe]=Z[We+oe],Z[We+oe]=Ue;return Z},e.permute=function(Z,oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=Z[oe[we]];return Be},e.pairs=function(Z){for(var oe=0,we=Z.length-1,Be,Ue=Z[0],We=new Array(we<0?0:we);oe<we;)We[oe]=[Be=Ue,Ue=Z[++oe]];return We},e.transpose=function(Z){if(!(We=Z.length))return[];for(var oe=-1,we=e.min(Z,b),Be=new Array(we);++oe<we;)for(var Ue=-1,We,wt=Be[oe]=new Array(We);++Ue<We;)wt[Ue]=Z[Ue][oe];return Be};function b(Z){return Z.length}e.zip=function(){return e.transpose(arguments)},e.keys=function(Z){var oe=[];for(var we in Z)oe.push(we);return oe},e.values=function(Z){var oe=[];for(var we in Z)oe.push(Z[we]);return oe},e.entries=function(Z){var oe=[];for(var we in Z)oe.push({key:we,value:Z[we]});return oe},e.merge=function(Z){for(var oe=Z.length,we,Be=-1,Ue=0,We,wt;++Be<oe;)Ue+=Z[Be].length;for(We=new Array(Ue);--oe>=0;)for(wt=Z[oe],we=wt.length;--we>=0;)We[--Ue]=wt[we];return We};var p=Math.abs;e.range=function(Z,oe,we){if(arguments.length<3&&(we=1,arguments.length<2&&(oe=Z,Z=0)),(oe-Z)/we===1/0)throw new Error("infinite range");var Be=[],Ue=E(p(we)),We=-1,wt;if(Z*=Ue,oe*=Ue,we*=Ue,we<0)for(;(wt=Z+we*++We)>oe;)Be.push(wt/Ue);else for(;(wt=Z+we*++We)<oe;)Be.push(wt/Ue);return Be};function E(Z){for(var oe=1;Z*oe%1;)oe*=10;return oe}function k(Z,oe){for(var we in oe)Object.defineProperty(Z.prototype,we,{value:oe[we],enumerable:!1})}e.map=function(Z,oe){var we=new A;if(Z instanceof A)Z.forEach(function(tt,zt){we.set(tt,zt)});else if(Array.isArray(Z)){var Be=-1,Ue=Z.length,We;if(arguments.length===1)for(;++Be<Ue;)we.set(Be,Z[Be]);else for(;++Be<Ue;)we.set(oe.call(Z,We=Z[Be],Be),We)}else for(var wt in Z)we.set(wt,Z[wt]);return we};function A(){this._=Object.create(null)}var L="__proto__",_="\0";k(A,{has:g,get:function(Z){return this._[C(Z)]},set:function(Z,oe){return this._[C(Z)]=oe},remove:P,keys:T,values:function(){var Z=[];for(var oe in this._)Z.push(this._[oe]);return Z},entries:function(){var Z=[];for(var oe in this._)Z.push({key:M(oe),value:this._[oe]});return Z},size:F,empty:q,forEach:function(Z){for(var oe in this._)Z.call(this,M(oe),this._[oe])}});function C(Z){return(Z+="")===L||Z[0]===_?_+Z:Z}function M(Z){return(Z+="")[0]===_?Z.slice(1):Z}function g(Z){return C(Z)in this._}function P(Z){return(Z=C(Z))in this._&&delete this._[Z]}function T(){var Z=[];for(var oe in this._)Z.push(M(oe));return Z}function F(){var Z=0;for(var oe in this._)++Z;return Z}function q(){for(var Z in this._)return!1;return!0}e.nest=function(){var Z={},oe=[],we=[],Be,Ue;function We(tt,zt,or){if(or>=oe.length)return Ue?Ue.call(Z,zt):Be?zt.sort(Be):zt;for(var lr=-1,Dr=zt.length,Ir=oe[or++],oi,ui,qr,Kr=new A,ii;++lr<Dr;)(ii=Kr.get(oi=Ir(ui=zt[lr])))?ii.push(ui):Kr.set(oi,[ui]);return tt?(ui=tt(),qr=function(vi,ci){ui.set(vi,We(tt,ci,or))}):(ui={},qr=function(vi,ci){ui[vi]=We(tt,ci,or)}),Kr.forEach(qr),ui}function wt(tt,zt){if(zt>=oe.length)return tt;var or=[],lr=we[zt++];return tt.forEach(function(Dr,Ir){or.push({key:Dr,values:wt(Ir,zt)})}),lr?or.sort(function(Dr,Ir){return lr(Dr.key,Ir.key)}):or}return Z.map=function(tt,zt){return We(zt,tt,0)},Z.entries=function(tt){return wt(We(e.map,tt,0),0)},Z.key=function(tt){return oe.push(tt),Z},Z.sortKeys=function(tt){return we[oe.length-1]=tt,Z},Z.sortValues=function(tt){return Be=tt,Z},Z.rollup=function(tt){return Ue=tt,Z},Z},e.set=function(Z){var oe=new V;if(Z)for(var we=0,Be=Z.length;we<Be;++we)oe.add(Z[we]);return oe};function V(){this._=Object.create(null)}k(V,{has:g,add:function(Z){return this._[C(Z+="")]=!0,Z},remove:P,values:T,size:F,empty:q,forEach:function(Z){for(var oe in this._)Z.call(this,M(oe))}}),e.behavior={};function H(Z){return Z}e.rebind=function(Z,oe){for(var we=1,Be=arguments.length,Ue;++we<Be;)Z[Ue=arguments[we]]=X(Z,oe,oe[Ue]);return Z};function X(Z,oe,we){return function(){var Be=we.apply(oe,arguments);return Be===oe?Z:Be}}function G(Z,oe){if(oe in Z)return oe;oe=oe.charAt(0).toUpperCase()+oe.slice(1);for(var we=0,Be=N.length;we<Be;++we){var Ue=N[we]+oe;if(Ue in Z)return Ue}}var N=["webkit","ms","moz","Moz","o","O"];function W(){}e.dispatch=function(){for(var Z=new re,oe=-1,we=arguments.length;++oe<we;)Z[arguments[oe]]=ae(Z);return Z};function re(){}re.prototype.on=function(Z,oe){var we=Z.indexOf("."),Be="";if(we>=0&&(Be=Z.slice(we+1),Z=Z.slice(0,we)),Z)return arguments.length<2?this[Z].on(Be):this[Z].on(Be,oe);if(arguments.length===2){if(oe==null)for(Z in this)this.hasOwnProperty(Z)&&this[Z].on(Be,null);return this}};function ae(Z){var oe=[],we=new A;function Be(){for(var Ue=oe,We=-1,wt=Ue.length,tt;++We<wt;)(tt=Ue[We].on)&&tt.apply(this,arguments);return Z}return Be.on=function(Ue,We){var wt=we.get(Ue),tt;return arguments.length<2?wt&&wt.on:(wt&&(wt.on=null,oe=oe.slice(0,tt=oe.indexOf(wt)).concat(oe.slice(tt+1)),we.remove(Ue)),We&&oe.push(we.set(Ue,{on:We})),Z)},Be}e.event=null;function _e(){e.event.preventDefault()}function Me(){for(var Z=e.event,oe;oe=Z.sourceEvent;)Z=oe;return Z}function ke(Z){for(var oe=new re,we=0,Be=arguments.length;++we<Be;)oe[arguments[we]]=ae(oe);return oe.of=function(Ue,We){return function(wt){try{var tt=wt.sourceEvent=e.event;wt.target=Z,e.event=wt,oe[wt.type].apply(Ue,We)}finally{e.event=tt}}},oe}e.requote=function(Z){return Z.replace(ge,"\\$&")};var ge=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ie={}.__proto__?function(Z,oe){Z.__proto__=oe}:function(Z,oe){for(var we in oe)Z[we]=oe[we]};function Te(Z){return ie(Z,Ce),Z}var Ee=function(Z,oe){return oe.querySelector(Z)},Ae=function(Z,oe){return oe.querySelectorAll(Z)},ze=function(Z,oe){var we=Z.matches||Z[G(Z,"matchesSelector")];return ze=function(Be,Ue){return we.call(Be,Ue)},ze(Z,oe)};typeof Sizzle=="function"&&(Ee=function(Z,oe){return Sizzle(Z,oe)[0]||null},Ae=Sizzle,ze=Sizzle.matchesSelector),e.selection=function(){return e.select(n.documentElement)};var Ce=e.selection.prototype=[];Ce.select=function(Z){var oe=[],we,Be,Ue,We;Z=me(Z);for(var wt=-1,tt=this.length;++wt<tt;){oe.push(we=[]),we.parentNode=(Ue=this[wt]).parentNode;for(var zt=-1,or=Ue.length;++zt<or;)(We=Ue[zt])?(we.push(Be=Z.call(We,We.__data__,zt,wt)),Be&&"__data__"in We&&(Be.__data__=We.__data__)):we.push(null)}return Te(oe)};function me(Z){return typeof Z=="function"?Z:function(){return Ee(Z,this)}}Ce.selectAll=function(Z){var oe=[],we,Be;Z=Re(Z);for(var Ue=-1,We=this.length;++Ue<We;)for(var wt=this[Ue],tt=-1,zt=wt.length;++tt<zt;)(Be=wt[tt])&&(oe.push(we=r(Z.call(Be,Be.__data__,tt,Ue))),we.parentNode=Be);return Te(oe)};function Re(Z){return typeof Z=="function"?Z:function(){return Ae(Z,this)}}var ce="http://www.w3.org/1999/xhtml",Ge={svg:"http://www.w3.org/2000/svg",xhtml:ce,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};e.ns={prefix:Ge,qualify:function(Z){var oe=Z.indexOf(":"),we=Z;return oe>=0&&(we=Z.slice(0,oe))!=="xmlns"&&(Z=Z.slice(oe+1)),Ge.hasOwnProperty(we)?{space:Ge[we],local:Z}:Z}},Ce.attr=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node();return Z=e.ns.qualify(Z),Z.local?we.getAttributeNS(Z.space,Z.local):we.getAttribute(Z)}for(oe in Z)this.each(nt(oe,Z[oe]));return this}return this.each(nt(Z,oe))};function nt(Z,oe){Z=e.ns.qualify(Z);function we(){this.removeAttribute(Z)}function Be(){this.removeAttributeNS(Z.space,Z.local)}function Ue(){this.setAttribute(Z,oe)}function We(){this.setAttributeNS(Z.space,Z.local,oe)}function wt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttribute(Z):this.setAttribute(Z,zt)}function tt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttributeNS(Z.space,Z.local):this.setAttributeNS(Z.space,Z.local,zt)}return oe==null?Z.local?Be:we:typeof oe=="function"?Z.local?tt:wt:Z.local?We:Ue}function ct(Z){return Z.trim().replace(/\s+/g," ")}Ce.classed=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node(),Be=(Z=rt(Z)).length,Ue=-1;if(oe=we.classList){for(;++Ue<Be;)if(!oe.contains(Z[Ue]))return!1}else for(oe=we.getAttribute("class");++Ue<Be;)if(!qt(Z[Ue]).test(oe))return!1;return!0}for(oe in Z)this.each(ot(oe,Z[oe]));return this}return this.each(ot(Z,oe))};function qt(Z){return new RegExp("(?:^|\\s+)"+e.requote(Z)+"(?:\\s+|$)","g")}function rt(Z){return(Z+"").trim().split(/^|\s+/)}function ot(Z,oe){Z=rt(Z).map(Rt);var we=Z.length;function Be(){for(var We=-1;++We<we;)Z[We](this,oe)}function Ue(){for(var We=-1,wt=oe.apply(this,arguments);++We<we;)Z[We](this,wt)}return typeof oe=="function"?Ue:Be}function Rt(Z){var oe=qt(Z);return function(we,Be){if(Ue=we.classList)return Be?Ue.add(Z):Ue.remove(Z);var Ue=we.getAttribute("class")||"";Be?(oe.lastIndex=0,oe.test(Ue)||we.setAttribute("class",ct(Ue+" "+Z))):we.setAttribute("class",ct(Ue.replace(oe," ")))}}Ce.style=function(Z,oe,we){var Be=arguments.length;if(Be<3){if(typeof Z!="string"){Be<2&&(oe="");for(we in Z)this.each(kt(we,Z[we],oe));return this}if(Be<2){var Ue=this.node();return a(Ue).getComputedStyle(Ue,null).getPropertyValue(Z)}we=""}return this.each(kt(Z,oe,we))};function kt(Z,oe,we){function Be(){this.style.removeProperty(Z)}function Ue(){this.style.setProperty(Z,oe,we)}function We(){var wt=oe.apply(this,arguments);wt==null?this.style.removeProperty(Z):this.style.setProperty(Z,wt,we)}return oe==null?Be:typeof oe=="function"?We:Ue}Ce.property=function(Z,oe){if(arguments.length<2){if(typeof Z=="string")return this.node()[Z];for(oe in Z)this.each(Ct(oe,Z[oe]));return this}return this.each(Ct(Z,oe))};function Ct(Z,oe){function we(){delete this[Z]}function Be(){this[Z]=oe}function Ue(){var We=oe.apply(this,arguments);We==null?delete this[Z]:this[Z]=We}return oe==null?we:typeof oe=="function"?Ue:Be}Ce.text=function(Z){return arguments.length?this.each(typeof Z=="function"?function(){var oe=Z.apply(this,arguments);this.textContent=oe==null?"":oe}:Z==null?function(){this.textContent=""}:function(){this.textContent=Z}):this.node().textContent},Ce.html=function(Z){return arguments.length?this.each(typeof Z=="function"?function(){var oe=Z.apply(this,arguments);this.innerHTML=oe==null?"":oe}:Z==null?function(){this.innerHTML=""}:function(){this.innerHTML=Z}):this.node().innerHTML},Ce.append=function(Z){return Z=Yt(Z),this.select(function(){return this.appendChild(Z.apply(this,arguments))})};function Yt(Z){function oe(){var Be=this.ownerDocument,Ue=this.namespaceURI;return Ue===ce&&Be.documentElement.namespaceURI===ce?Be.createElement(Z):Be.createElementNS(Ue,Z)}function we(){return this.ownerDocument.createElementNS(Z.space,Z.local)}return typeof Z=="function"?Z:(Z=e.ns.qualify(Z)).local?we:oe}Ce.insert=function(Z,oe){return Z=Yt(Z),oe=me(oe),this.select(function(){return this.insertBefore(Z.apply(this,arguments),oe.apply(this,arguments)||null)})},Ce.remove=function(){return this.each(xr)};function xr(){var Z=this.parentNode;Z&&Z.removeChild(this)}Ce.data=function(Z,oe){var we=-1,Be=this.length,Ue,We;if(!arguments.length){for(Z=new Array(Be=(Ue=this[0]).length);++we<Be;)(We=Ue[we])&&(Z[we]=We.__data__);return Z}function wt(lr,Dr){var Ir,oi=lr.length,ui=Dr.length,qr=Math.min(oi,ui),Kr=new Array(ui),ii=new Array(ui),vi=new Array(oi),ci,Jr;if(oe){var un=new A,dn=new Array(oi),En;for(Ir=-1;++Ir<oi;)(ci=lr[Ir])&&(un.has(En=oe.call(ci,ci.__data__,Ir))?vi[Ir]=ci:un.set(En,ci),dn[Ir]=En);for(Ir=-1;++Ir<ui;)(ci=un.get(En=oe.call(Dr,Jr=Dr[Ir],Ir)))?ci!==!0&&(Kr[Ir]=ci,ci.__data__=Jr):ii[Ir]=er(Jr),un.set(En,!0);for(Ir=-1;++Ir<oi;)Ir in dn&&un.get(dn[Ir])!==!0&&(vi[Ir]=lr[Ir])}else{for(Ir=-1;++Ir<qr;)ci=lr[Ir],Jr=Dr[Ir],ci?(ci.__data__=Jr,Kr[Ir]=ci):ii[Ir]=er(Jr);for(;Ir<ui;++Ir)ii[Ir]=er(Dr[Ir]);for(;Ir<oi;++Ir)vi[Ir]=lr[Ir]}ii.update=Kr,ii.parentNode=Kr.parentNode=vi.parentNode=lr.parentNode,tt.push(ii),zt.push(Kr),or.push(vi)}var tt=Lt([]),zt=Te([]),or=Te([]);if(typeof Z=="function")for(;++we<Be;)wt(Ue=this[we],Z.call(Ue,Ue.parentNode.__data__,we));else for(;++we<Be;)wt(Ue=this[we],Z);return zt.enter=function(){return tt},zt.exit=function(){return or},zt};function er(Z){return{__data__:Z}}Ce.datum=function(Z){return arguments.length?this.property("__data__",Z):this.property("__data__")},Ce.filter=function(Z){var oe=[],we,Be,Ue;typeof Z!="function"&&(Z=Ke(Z));for(var We=0,wt=this.length;We<wt;We++){oe.push(we=[]),we.parentNode=(Be=this[We]).parentNode;for(var tt=0,zt=Be.length;tt<zt;tt++)(Ue=Be[tt])&&Z.call(Ue,Ue.__data__,tt,We)&&we.push(Ue)}return Te(oe)};function Ke(Z){return function(){return ze(this,Z)}}Ce.order=function(){for(var Z=-1,oe=this.length;++Z<oe;)for(var we=this[Z],Be=we.length-1,Ue=we[Be],We;--Be>=0;)(We=we[Be])&&(Ue&&Ue!==We.nextSibling&&Ue.parentNode.insertBefore(We,Ue),Ue=We);return this},Ce.sort=function(Z){Z=xt.apply(this,arguments);for(var oe=-1,we=this.length;++oe<we;)this[oe].sort(Z);return this.order()};function xt(Z){return arguments.length||(Z=f),function(oe,we){return oe&&we?Z(oe.__data__,we.__data__):!oe-!we}}Ce.each=function(Z){return bt(this,function(oe,we,Be){Z.call(oe,oe.__data__,we,Be)})};function bt(Z,oe){for(var we=0,Be=Z.length;we<Be;we++)for(var Ue=Z[we],We=0,wt=Ue.length,tt;We<wt;We++)(tt=Ue[We])&&oe(tt,We,we);return Z}Ce.call=function(Z){var oe=r(arguments);return Z.apply(oe[0]=this,oe),this},Ce.empty=function(){return!this.node()},Ce.node=function(){for(var Z=0,oe=this.length;Z<oe;Z++)for(var we=this[Z],Be=0,Ue=we.length;Be<Ue;Be++){var We=we[Be];if(We)return We}return null},Ce.size=function(){var Z=0;return bt(this,function(){++Z}),Z};function Lt(Z){return ie(Z,St),Z}var St=[];e.selection.enter=Lt,e.selection.enter.prototype=St,St.append=Ce.append,St.empty=Ce.empty,St.node=Ce.node,St.call=Ce.call,St.size=Ce.size,St.select=function(Z){for(var oe=[],we,Be,Ue,We,wt,tt=-1,zt=this.length;++tt<zt;){Ue=(We=this[tt]).update,oe.push(we=[]),we.parentNode=We.parentNode;for(var or=-1,lr=We.length;++or<lr;)(wt=We[or])?(we.push(Ue[or]=Be=Z.call(We.parentNode,wt.__data__,or,tt)),Be.__data__=wt.__data__):we.push(null)}return Te(oe)},St.insert=function(Z,oe){return arguments.length<2&&(oe=Et(this)),Ce.insert.call(this,Z,oe)};function Et(Z){var oe,we;return function(Be,Ue,We){var wt=Z[We].update,tt=wt.length,zt;for(We!=we&&(we=We,oe=0),Ue>=oe&&(oe=Ue+1);!(zt=wt[oe])&&++oe<tt;);return zt}}e.select=function(Z){var oe;return typeof Z=="string"?(oe=[Ee(Z,n)],oe.parentNode=n.documentElement):(oe=[Z],oe.parentNode=i(Z)),Te([oe])},e.selectAll=function(Z){var oe;return typeof Z=="string"?(oe=r(Ae(Z,n)),oe.parentNode=n.documentElement):(oe=r(Z),oe.parentNode=null),Te([oe])},Ce.on=function(Z,oe,we){var Be=arguments.length;if(Be<3){if(typeof Z!="string"){Be<2&&(oe=!1);for(we in Z)this.each(dt(we,Z[we],oe));return this}if(Be<2)return(Be=this.node()["__on"+Z])&&Be._;we=!1}return this.each(dt(Z,oe,we))};function dt(Z,oe,we){var Be="__on"+Z,Ue=Z.indexOf("."),We=$t;Ue>0&&(Z=Z.slice(0,Ue));var wt=Ht.get(Z);wt&&(Z=wt,We=fr);function tt(){var lr=this[Be];lr&&(this.removeEventListener(Z,lr,lr.$),delete this[Be])}function zt(){var lr=We(oe,r(arguments));tt.call(this),this.addEventListener(Z,this[Be]=lr,lr.$=we),lr._=oe}function or(){var lr=new RegExp("^__on([^.]+)"+e.requote(Z)+"$"),Dr;for(var Ir in this)if(Dr=Ir.match(lr)){var oi=this[Ir];this.removeEventListener(Dr[1],oi,oi.$),delete this[Ir]}}return Ue?oe?zt:tt:oe?W:or}var Ht=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});n&&Ht.forEach(function(Z){"on"+Z in n&&Ht.remove(Z)});function $t(Z,oe){return function(we){var Be=e.event;e.event=we,oe[0]=this.__data__;try{Z.apply(this,oe)}finally{e.event=Be}}}function fr(Z,oe){var we=$t(Z,oe);return function(Be){var Ue=this,We=Be.relatedTarget;(!We||We!==Ue&&!(We.compareDocumentPosition(Ue)&8))&&we.call(Ue,Be)}}var _r,Br=0;function Or(Z){var oe=".dragsuppress-"+ ++Br,we="click"+oe,Be=e.select(a(Z)).on("touchmove"+oe,_e).on("dragstart"+oe,_e).on("selectstart"+oe,_e);if(_r==null&&(_r="onselectstart"in Z?!1:G(Z.style,"userSelect")),_r){var Ue=i(Z).style,We=Ue[_r];Ue[_r]="none"}return function(wt){if(Be.on(oe,null),_r&&(Ue[_r]=We),wt){var tt=function(){Be.on(we,null)};Be.on(we,function(){_e(),tt()},!0),setTimeout(tt,0)}}}e.mouse=function(Z){return ut(Z,Me())};var Nr=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function ut(Z,oe){oe.changedTouches&&(oe=oe.changedTouches[0]);var we=Z.ownerSVGElement||Z;if(we.createSVGPoint){var Be=we.createSVGPoint();if(Nr<0){var Ue=a(Z);if(Ue.scrollX||Ue.scrollY){we=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var We=we[0][0].getScreenCTM();Nr=!(We.f||We.e),we.remove()}}return Nr?(Be.x=oe.pageX,Be.y=oe.pageY):(Be.x=oe.clientX,Be.y=oe.clientY),Be=Be.matrixTransform(Z.getScreenCTM().inverse()),[Be.x,Be.y]}var wt=Z.getBoundingClientRect();return[oe.clientX-wt.left-Z.clientLeft,oe.clientY-wt.top-Z.clientTop]}e.touch=function(Z,oe,we){if(arguments.length<3&&(we=oe,oe=Me().changedTouches),oe){for(var Be=0,Ue=oe.length,We;Be<Ue;++Be)if((We=oe[Be]).identifier===we)return ut(Z,We)}},e.behavior.drag=function(){var Z=ke(Ue,"drag","dragstart","dragend"),oe=null,we=We(W,e.mouse,a,"mousemove","mouseup"),Be=We(Ne,e.touch,H,"touchmove","touchend");function Ue(){this.on("mousedown.drag",we).on("touchstart.drag",Be)}function We(wt,tt,zt,or,lr){return function(){var Dr=this,Ir=e.event.target.correspondingElement||e.event.target,oi=Dr.parentNode,ui=Z.of(Dr,arguments),qr=0,Kr=wt(),ii=".drag"+(Kr==null?"":"-"+Kr),vi,ci=e.select(zt(Ir)).on(or+ii,dn).on(lr+ii,En),Jr=Or(Ir),un=tt(oi,Kr);oe?(vi=oe.apply(Dr,arguments),vi=[vi.x-un[0],vi.y-un[1]]):vi=[0,0],ui({type:"dragstart"});function dn(){var Nn=tt(oi,Kr),ga,ya;Nn&&(ga=Nn[0]-un[0],ya=Nn[1]-un[1],qr|=ga|ya,un=Nn,ui({type:"drag",x:Nn[0]+vi[0],y:Nn[1]+vi[1],dx:ga,dy:ya}))}function En(){tt(oi,Kr)&&(ci.on(or+ii,null).on(lr+ii,null),Jr(qr),ui({type:"dragend"}))}}}return Ue.origin=function(wt){return arguments.length?(oe=wt,Ue):oe},e.rebind(Ue,Z,"on")};function Ne(){return e.event.changedTouches[0].identifier}e.touches=function(Z,oe){return arguments.length<2&&(oe=Me().touches),oe?r(oe).map(function(we){var Be=ut(Z,we);return Be.identifier=we.identifier,Be}):[]};var Ye=1e-6,Ve=Ye*Ye,Xe=Math.PI,ht=2*Xe,Le=ht-Ye,xe=Xe/2,Se=Xe/180,lt=180/Xe;function Gt(Z){return Z>0?1:Z<0?-1:0}function Vt(Z,oe,we){return(oe[0]-Z[0])*(we[1]-Z[1])-(oe[1]-Z[1])*(we[0]-Z[0])}function ar(Z){return Z>1?0:Z<-1?Xe:Math.acos(Z)}function Qr(Z){return Z>1?xe:Z<-1?-xe:Math.asin(Z)}function ai(Z){return((Z=Math.exp(Z))-1/Z)/2}function jr(Z){return((Z=Math.exp(Z))+1/Z)/2}function ri(Z){return((Z=Math.exp(2*Z))-1)/(Z+1)}function bi(Z){return(Z=Math.sin(Z/2))*Z}var nn=Math.SQRT2,Wi=2,Ni=4;e.interpolateZoom=function(Z,oe){var we=Z[0],Be=Z[1],Ue=Z[2],We=oe[0],wt=oe[1],tt=oe[2],zt=We-we,or=wt-Be,lr=zt*zt+or*or,Dr,Ir;if(lr<Ve)Ir=Math.log(tt/Ue)/nn,Dr=function(vi){return[we+vi*zt,Be+vi*or,Ue*Math.exp(nn*vi*Ir)]};else{var oi=Math.sqrt(lr),ui=(tt*tt-Ue*Ue+Ni*lr)/(2*Ue*Wi*oi),qr=(tt*tt-Ue*Ue-Ni*lr)/(2*tt*Wi*oi),Kr=Math.log(Math.sqrt(ui*ui+1)-ui),ii=Math.log(Math.sqrt(qr*qr+1)-qr);Ir=(ii-Kr)/nn,Dr=function(vi){var ci=vi*Ir,Jr=jr(Kr),un=Ue/(Wi*oi)*(Jr*ri(nn*ci+Kr)-ai(Kr));return[we+un*zt,Be+un*or,Ue*Jr/jr(nn*ci+Kr)]}}return Dr.duration=Ir*1e3,Dr},e.behavior.zoom=function(){var Z={x:0,y:0,k:1},oe,we,Be,Ue=[960,500],We=_n,wt=250,tt=0,zt="mousedown.zoom",or="mousemove.zoom",lr="mouseup.zoom",Dr,Ir="touchstart.zoom",oi,ui=ke(ci,"zoomstart","zoom","zoomend"),qr,Kr,ii,vi;zn||(zn="onwheel"in n?($i=function(){return-e.event.deltaY*(e.event.deltaMode?120:1)},"wheel"):"onmousewheel"in n?($i=function(){return e.event.wheelDelta},"mousewheel"):($i=function(){return-e.event.detail},"MozMousePixelScroll"));function ci(pn){pn.on(zt,io).on(zn+".zoom",_s).on("dblclick.zoom",Ns).on(Ir,Ss)}ci.event=function(pn){pn.each(function(){var za=ui.of(this,arguments),Lo=Z;Ro?e.select(this).transition().each("start.zoom",function(){Z=this.__chart__||{x:0,y:0,k:1},ya(za)}).tween("zoom:zoom",function(){var Fo=Ue[0],js=Ue[1],xl=we?we[0]:Fo/2,fu=we?we[1]:js/2,dl=e.interpolateZoom([(xl-Z.x)/Z.k,(fu-Z.y)/Z.k,Fo/Z.k],[(xl-Lo.x)/Lo.k,(fu-Lo.y)/Lo.k,Fo/Lo.k]);return function(xc){var At=dl(xc),Er=Fo/At[2];this.__chart__=Z={x:xl-At[0]*Er,y:fu-At[1]*Er,k:Er},so(za)}}).each("interrupt.zoom",function(){wa(za)}).each("end.zoom",function(){wa(za)}):(this.__chart__=Z,ya(za),so(za),wa(za))})},ci.translate=function(pn){return arguments.length?(Z={x:+pn[0],y:+pn[1],k:Z.k},ga(),ci):[Z.x,Z.y]},ci.scale=function(pn){return arguments.length?(Z={x:Z.x,y:Z.y,k:null},dn(+pn),ga(),ci):Z.k},ci.scaleExtent=function(pn){return arguments.length?(We=pn==null?_n:[+pn[0],+pn[1]],ci):We},ci.center=function(pn){return arguments.length?(Be=pn&&[+pn[0],+pn[1]],ci):Be},ci.size=function(pn){return arguments.length?(Ue=pn&&[+pn[0],+pn[1]],ci):Ue},ci.duration=function(pn){return arguments.length?(wt=+pn,ci):wt},ci.x=function(pn){return arguments.length?(Kr=pn,qr=pn.copy(),Z={x:0,y:0,k:1},ci):Kr},ci.y=function(pn){return arguments.length?(vi=pn,ii=pn.copy(),Z={x:0,y:0,k:1},ci):vi};function Jr(pn){return[(pn[0]-Z.x)/Z.k,(pn[1]-Z.y)/Z.k]}function un(pn){return[pn[0]*Z.k+Z.x,pn[1]*Z.k+Z.y]}function dn(pn){Z.k=Math.max(We[0],Math.min(We[1],pn))}function En(pn,za){za=un(za),Z.x+=pn[0]-za[0],Z.y+=pn[1]-za[1]}function Nn(pn,za,Lo,Fo){pn.__chart__={x:Z.x,y:Z.y,k:Z.k},dn(Math.pow(2,Fo)),En(we=za,Lo),pn=e.select(pn),wt>0&&(pn=pn.transition().duration(wt)),pn.call(ci.event)}function ga(){Kr&&Kr.domain(qr.range().map(function(pn){return(pn-Z.x)/Z.k}).map(qr.invert)),vi&&vi.domain(ii.range().map(function(pn){return(pn-Z.y)/Z.k}).map(ii.invert))}function ya(pn){tt++||pn({type:"zoomstart"})}function so(pn){ga(),pn({type:"zoom",scale:Z.k,translate:[Z.x,Z.y]})}function wa(pn){--tt||(pn({type:"zoomend"}),we=null)}function io(){var pn=this,za=ui.of(pn,arguments),Lo=0,Fo=e.select(a(pn)).on(or,fu).on(lr,dl),js=Jr(e.mouse(pn)),xl=Or(pn);ea.call(pn),ya(za);function fu(){Lo=1,En(e.mouse(pn),js),so(za)}function dl(){Fo.on(or,null).on(lr,null),xl(Lo),wa(za)}}function Ss(){var pn=this,za=ui.of(pn,arguments),Lo={},Fo=0,js,xl=".zoom-"+e.event.changedTouches[0].identifier,fu="touchmove"+xl,dl="touchend"+xl,xc=[],At=e.select(pn),Er=Or(pn);wi(),ya(za),At.on(zt,null).on(Ir,wi);function Wr(){var Bi=e.touches(pn);return js=Z.k,Bi.forEach(function(cn){cn.identifier in Lo&&(Lo[cn.identifier]=Jr(cn))}),Bi}function wi(){var Bi=e.event.target;e.select(Bi).on(fu,Ui).on(dl,Oi),xc.push(Bi);for(var cn=e.event.changedTouches,On=0,Bn=cn.length;On<Bn;++On)Lo[cn[On].identifier]=null;var yn=Wr(),to=Date.now();if(yn.length===1){if(to-oi<500){var Rn=yn[0];Nn(pn,Rn,Lo[Rn.identifier],Math.floor(Math.log(Z.k)/Math.LN2)+1),_e()}oi=to}else if(yn.length>1){var Rn=yn[0],Dn=yn[1],fn=Rn[0]-Dn[0],Ai=Rn[1]-Dn[1];Fo=fn*fn+Ai*Ai}}function Ui(){var Bi=e.touches(pn),cn,On,Bn,yn;ea.call(pn);for(var to=0,Rn=Bi.length;to<Rn;++to,yn=null)if(Bn=Bi[to],yn=Lo[Bn.identifier]){if(On)break;cn=Bn,On=yn}if(yn){var Dn=(Dn=Bn[0]-cn[0])*Dn+(Dn=Bn[1]-cn[1])*Dn,fn=Fo&&Math.sqrt(Dn/Fo);cn=[(cn[0]+Bn[0])/2,(cn[1]+Bn[1])/2],On=[(On[0]+yn[0])/2,(On[1]+yn[1])/2],dn(fn*js)}oi=null,En(cn,On),so(za)}function Oi(){if(e.event.touches.length){for(var Bi=e.event.changedTouches,cn=0,On=Bi.length;cn<On;++cn)delete Lo[Bi[cn].identifier];for(var Bn in Lo)return void Wr()}e.selectAll(xc).on(xl,null),At.on(zt,io).on(Ir,Ss),Er(),wa(za)}}function _s(){var pn=ui.of(this,arguments);Dr?clearTimeout(Dr):(ea.call(this),oe=Jr(we=Be||e.mouse(this)),ya(pn)),Dr=setTimeout(function(){Dr=null,wa(pn)},50),_e(),dn(Math.pow(2,$i()*.002)*Z.k),En(we,oe),so(pn)}function Ns(){var pn=e.mouse(this),za=Math.log(Z.k)/Math.LN2;Nn(this,pn,Jr(pn),e.event.shiftKey?Math.ceil(za)-1:Math.floor(za)+1)}return e.rebind(ci,ui,"on")};var _n=[0,1/0],$i,zn;e.color=Wn;function Wn(){}Wn.prototype.toString=function(){return this.rgb()+""},e.hsl=It;function It(Z,oe,we){return this instanceof It?(this.h=+Z,this.s=+oe,void(this.l=+we)):arguments.length<2?Z instanceof It?new It(Z.h,Z.s,Z.l):Ha(""+Z,oo,It):new It(Z,oe,we)}var ft=It.prototype=new Wn;ft.brighter=function(Z){return Z=Math.pow(.7,arguments.length?Z:1),new It(this.h,this.s,this.l/Z)},ft.darker=function(Z){return Z=Math.pow(.7,arguments.length?Z:1),new It(this.h,this.s,Z*this.l)},ft.rgb=function(){return jt(this.h,this.s,this.l)};function jt(Z,oe,we){var Be,Ue;Z=isNaN(Z)?0:(Z%=360)<0?Z+360:Z,oe=isNaN(oe)||oe<0?0:oe>1?1:oe,we=we<0?0:we>1?1:we,Ue=we<=.5?we*(1+oe):we+oe-we*oe,Be=2*we-Ue;function We(tt){return tt>360?tt-=360:tt<0&&(tt+=360),tt<60?Be+(Ue-Be)*tt/60:tt<180?Ue:tt<240?Be+(Ue-Be)*(240-tt)/60:Be}function wt(tt){return Math.round(We(tt)*255)}return new Fa(wt(Z+120),wt(Z),wt(Z-120))}e.hcl=Zt;function Zt(Z,oe,we){return this instanceof Zt?(this.h=+Z,this.c=+oe,void(this.l=+we)):arguments.length<2?Z instanceof Zt?new Zt(Z.h,Z.c,Z.l):Z instanceof Zr?Ki(Z.l,Z.a,Z.b):Ki((Z=xn((Z=e.rgb(Z)).r,Z.g,Z.b)).l,Z.a,Z.b):new Zt(Z,oe,we)}var yr=Zt.prototype=new Wn;yr.brighter=function(Z){return new Zt(this.h,this.c,Math.min(100,this.l+Vr*(arguments.length?Z:1)))},yr.darker=function(Z){return new Zt(this.h,this.c,Math.max(0,this.l-Vr*(arguments.length?Z:1)))},yr.rgb=function(){return Fr(this.h,this.c,this.l).rgb()};function Fr(Z,oe,we){return isNaN(Z)&&(Z=0),isNaN(oe)&&(oe=0),new Zr(we,Math.cos(Z*=Se)*oe,Math.sin(Z)*oe)}e.lab=Zr;function Zr(Z,oe,we){return this instanceof Zr?(this.l=+Z,this.a=+oe,void(this.b=+we)):arguments.length<2?Z instanceof Zr?new Zr(Z.l,Z.a,Z.b):Z instanceof Zt?Fr(Z.h,Z.c,Z.l):xn((Z=Fa(Z)).r,Z.g,Z.b):new Zr(Z,oe,we)}var Vr=18,gi=.95047,Si=1,Mi=1.08883,Pi=Zr.prototype=new Wn;Pi.brighter=function(Z){return new Zr(Math.min(100,this.l+Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.darker=function(Z){return new Zr(Math.max(0,this.l-Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.rgb=function(){return Gi(this.l,this.a,this.b)};function Gi(Z,oe,we){var Be=(Z+16)/116,Ue=Be+oe/500,We=Be-we/200;return Ue=ka(Ue)*gi,Be=ka(Be)*Si,We=ka(We)*Mi,new Fa(la(3.2404542*Ue-1.5371385*Be-.4985314*We),la(-.969266*Ue+1.8760108*Be+.041556*We),la(.0556434*Ue-.2040259*Be+1.0572252*We))}function Ki(Z,oe,we){return Z>0?new Zt(Math.atan2(we,oe)*lt,Math.sqrt(oe*oe+we*we),Z):new Zt(NaN,NaN,Z)}function ka(Z){return Z>.206893034?Z*Z*Z:(Z-4/29)/7.787037}function jn(Z){return Z>.008856?Math.pow(Z,1/3):7.787037*Z+4/29}function la(Z){return Math.round(255*(Z<=.00304?12.92*Z:1.055*Math.pow(Z,1/2.4)-.055))}e.rgb=Fa;function Fa(Z,oe,we){return this instanceof Fa?(this.r=~~Z,this.g=~~oe,void(this.b=~~we)):arguments.length<2?Z instanceof Fa?new Fa(Z.r,Z.g,Z.b):Ha(""+Z,Fa,jt):new Fa(Z,oe,we)}function Ra(Z){return new Fa(Z>>16,Z>>8&255,Z&255)}function jo(Z){return Ra(Z)+""}var oa=Fa.prototype=new Wn;oa.brighter=function(Z){Z=Math.pow(.7,arguments.length?Z:1);var oe=this.r,we=this.g,Be=this.b,Ue=30;return!oe&&!we&&!Be?new Fa(Ue,Ue,Ue):(oe&&oe<Ue&&(oe=Ue),we&&we<Ue&&(we=Ue),Be&&Be<Ue&&(Be=Ue),new Fa(Math.min(255,oe/Z),Math.min(255,we/Z),Math.min(255,Be/Z)))},oa.darker=function(Z){return Z=Math.pow(.7,arguments.length?Z:1),new Fa(Z*this.r,Z*this.g,Z*this.b)},oa.hsl=function(){return oo(this.r,this.g,this.b)},oa.toString=function(){return"#"+Sn(this.r)+Sn(this.g)+Sn(this.b)};function Sn(Z){return Z<16?"0"+Math.max(0,Z).toString(16):Math.min(255,Z).toString(16)}function Ha(Z,oe,we){var Be=0,Ue=0,We=0,wt,tt,zt;if(wt=/([a-z]+)\((.*)\)/.exec(Z=Z.toLowerCase()),wt)switch(tt=wt[2].split(","),wt[1]){case"hsl":return we(parseFloat(tt[0]),parseFloat(tt[1])/100,parseFloat(tt[2])/100);case"rgb":return oe(br(tt[0]),br(tt[1]),br(tt[2]))}return(zt=Hr.get(Z))?oe(zt.r,zt.g,zt.b):(Z!=null&&Z.charAt(0)==="#"&&!isNaN(zt=parseInt(Z.slice(1),16))&&(Z.length===4?(Be=(zt&3840)>>4,Be=Be>>4|Be,Ue=zt&240,Ue=Ue>>4|Ue,We=zt&15,We=We<<4|We):Z.length===7&&(Be=(zt&16711680)>>16,Ue=(zt&65280)>>8,We=zt&255)),oe(Be,Ue,We))}function oo(Z,oe,we){var Be=Math.min(Z/=255,oe/=255,we/=255),Ue=Math.max(Z,oe,we),We=Ue-Be,wt,tt,zt=(Ue+Be)/2;return We?(tt=zt<.5?We/(Ue+Be):We/(2-Ue-Be),Z==Ue?wt=(oe-we)/We+(oe<we?6:0):oe==Ue?wt=(we-Z)/We+2:wt=(Z-oe)/We+4,wt*=60):(wt=NaN,tt=zt>0&&zt<1?0:wt),new It(wt,tt,zt)}function xn(Z,oe,we){Z=_t(Z),oe=_t(oe),we=_t(we);var Be=jn((.4124564*Z+.3575761*oe+.1804375*we)/gi),Ue=jn((.2126729*Z+.7151522*oe+.072175*we)/Si),We=jn((.0193339*Z+.119192*oe+.9503041*we)/Mi);return Zr(116*Ue-16,500*(Be-Ue),200*(Ue-We))}function _t(Z){return(Z/=255)<=.04045?Z/12.92:Math.pow((Z+.055)/1.055,2.4)}function br(Z){var oe=parseFloat(Z);return Z.charAt(Z.length-1)==="%"?Math.round(oe*2.55):oe}var Hr=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Hr.forEach(function(Z,oe){Hr.set(Z,Ra(oe))});function ti(Z){return typeof Z=="function"?Z:function(){return Z}}e.functor=ti,e.xhr=zi(H);function zi(Z){return function(oe,we,Be){return arguments.length===2&&typeof we=="function"&&(Be=we,we=null),Yi(oe,we,Z,Be)}}function Yi(Z,oe,we,Be){var Ue={},We=e.dispatch("beforesend","progress","load","error"),wt={},tt=new XMLHttpRequest,zt=null;self.XDomainRequest&&!("withCredentials"in tt)&&/^(http(s)?:)?\/\//.test(Z)&&(tt=new XDomainRequest),"onload"in tt?tt.onload=tt.onerror=or:tt.onreadystatechange=function(){tt.readyState>3&&or()};function or(){var lr=tt.status,Dr;if(!lr&&hi(tt)||lr>=200&&lr<300||lr===304){try{Dr=we.call(Ue,tt)}catch(Ir){We.error.call(Ue,Ir);return}We.load.call(Ue,Dr)}else We.error.call(Ue,tt)}return tt.onprogress=function(lr){var Dr=e.event;e.event=lr;try{We.progress.call(Ue,tt)}finally{e.event=Dr}},Ue.header=function(lr,Dr){return lr=(lr+"").toLowerCase(),arguments.length<2?wt[lr]:(Dr==null?delete wt[lr]:wt[lr]=Dr+"",Ue)},Ue.mimeType=function(lr){return arguments.length?(oe=lr==null?null:lr+"",Ue):oe},Ue.responseType=function(lr){return arguments.length?(zt=lr,Ue):zt},Ue.response=function(lr){return we=lr,Ue},["get","post"].forEach(function(lr){Ue[lr]=function(){return Ue.send.apply(Ue,[lr].concat(r(arguments)))}}),Ue.send=function(lr,Dr,Ir){if(arguments.length===2&&typeof Dr=="function"&&(Ir=Dr,Dr=null),tt.open(lr,Z,!0),oe!=null&&!("accept"in wt)&&(wt.accept=oe+",*/*"),tt.setRequestHeader)for(var oi in wt)tt.setRequestHeader(oi,wt[oi]);return oe!=null&&tt.overrideMimeType&&tt.overrideMimeType(oe),zt!=null&&(tt.responseType=zt),Ir!=null&&Ue.on("error",Ir).on("load",function(ui){Ir(null,ui)}),We.beforesend.call(Ue,tt),tt.send(Dr==null?null:Dr),Ue},Ue.abort=function(){return tt.abort(),Ue},e.rebind(Ue,We,"on"),Be==null?Ue:Ue.get(an(Be))}function an(Z){return Z.length===1?function(oe,we){Z(oe==null?we:null)}:Z}function hi(Z){var oe=Z.responseType;return oe&&oe!=="text"?Z.response:Z.responseText}e.dsv=function(Z,oe){var we=new RegExp('["'+Z+` +]`),Be=Z.charCodeAt(0);function Ue(or,lr,Dr){arguments.length<3&&(Dr=lr,lr=null);var Ir=Yi(or,oe,lr==null?We:wt(lr),Dr);return Ir.row=function(oi){return arguments.length?Ir.response((lr=oi)==null?We:wt(oi)):lr},Ir}function We(or){return Ue.parse(or.responseText)}function wt(or){return function(lr){return Ue.parse(lr.responseText,or)}}Ue.parse=function(or,lr){var Dr;return Ue.parseRows(or,function(Ir,oi){if(Dr)return Dr(Ir,oi-1);var ui=function(qr){for(var Kr={},ii=Ir.length,vi=0;vi<ii;++vi)Kr[Ir[vi]]=qr[vi];return Kr};Dr=lr?function(qr,Kr){return lr(ui(qr),Kr)}:ui})},Ue.parseRows=function(or,lr){var Dr={},Ir={},oi=[],ui=or.length,qr=0,Kr=0,ii,vi;function ci(){if(qr>=ui)return Ir;if(vi)return vi=!1,Dr;var un=qr;if(or.charCodeAt(un)===34){for(var dn=un;dn++<ui;)if(or.charCodeAt(dn)===34){if(or.charCodeAt(dn+1)!==34)break;++dn}qr=dn+2;var En=or.charCodeAt(dn+1);return En===13?(vi=!0,or.charCodeAt(dn+2)===10&&++qr):En===10&&(vi=!0),or.slice(un+1,dn).replace(/""/g,'"')}for(;qr<ui;){var En=or.charCodeAt(qr++),Nn=1;if(En===10)vi=!0;else if(En===13)vi=!0,or.charCodeAt(qr)===10&&(++qr,++Nn);else if(En!==Be)continue;return or.slice(un,qr-Nn)}return or.slice(un)}for(;(ii=ci())!==Ir;){for(var Jr=[];ii!==Dr&&ii!==Ir;)Jr.push(ii),ii=ci();lr&&(Jr=lr(Jr,Kr++))==null||oi.push(Jr)}return oi},Ue.format=function(or){if(Array.isArray(or[0]))return Ue.formatRows(or);var lr=new V,Dr=[];return or.forEach(function(Ir){for(var oi in Ir)lr.has(oi)||Dr.push(lr.add(oi))}),[Dr.map(zt).join(Z)].concat(or.map(function(Ir){return Dr.map(function(oi){return zt(Ir[oi])}).join(Z)})).join(` +`)},Ue.formatRows=function(or){return or.map(tt).join(` +`)};function tt(or){return or.map(zt).join(Z)}function zt(or){return we.test(or)?'"'+or.replace(/\"/g,'""')+'"':or}return Ue},e.csv=e.dsv(",","text/csv"),e.tsv=e.dsv(" ","text/tab-separated-values");var Ji,ua,Fn,Sa,go=this[G(this,"requestAnimationFrame")]||function(Z){setTimeout(Z,17)};e.timer=function(){Oo.apply(this,arguments)};function Oo(Z,oe,we){var Be=arguments.length;Be<2&&(oe=0),Be<3&&(we=Date.now());var Ue=we+oe,We={c:Z,t:Ue,n:null};return ua?ua.n=We:Ji=We,ua=We,Fn||(Sa=clearTimeout(Sa),Fn=1,go(ho)),We}function ho(){var Z=Mo(),oe=xo()-Z;oe>24?(isFinite(oe)&&(clearTimeout(Sa),Sa=setTimeout(ho,oe)),Fn=0):(Fn=1,go(ho))}e.timer.flush=function(){Mo(),xo()};function Mo(){for(var Z=Date.now(),oe=Ji;oe;)Z>=oe.t&&oe.c(Z-oe.t)&&(oe.c=null),oe=oe.n;return Z}function xo(){for(var Z,oe=Ji,we=1/0;oe;)oe.c?(oe.t<we&&(we=oe.t),oe=(Z=oe).n):oe=Z?Z.n=oe.n:Ji=oe.n;return ua=Z,we}e.round=function(Z,oe){return oe?Math.round(Z*(oe=Math.pow(10,oe)))/oe:Math.round(Z)},e.geom={};function zs(Z){return Z[0]}function ks(Z){return Z[1]}e.geom.hull=function(Z){var oe=zs,we=ks;if(arguments.length)return Be(Z);function Be(Ue){if(Ue.length<3)return[];var We=ti(oe),wt=ti(we),tt,zt=Ue.length,or=[],lr=[];for(tt=0;tt<zt;tt++)or.push([+We.call(this,Ue[tt],tt),+wt.call(this,Ue[tt],tt),tt]);for(or.sort(Xs),tt=0;tt<zt;tt++)lr.push([or[tt][0],-or[tt][1]]);var Dr=Zs(or),Ir=Zs(lr),oi=Ir[0]===Dr[0],ui=Ir[Ir.length-1]===Dr[Dr.length-1],qr=[];for(tt=Dr.length-1;tt>=0;--tt)qr.push(Ue[or[Dr[tt]][2]]);for(tt=+oi;tt<Ir.length-ui;++tt)qr.push(Ue[or[Ir[tt]][2]]);return qr}return Be.x=function(Ue){return arguments.length?(oe=Ue,Be):oe},Be.y=function(Ue){return arguments.length?(we=Ue,Be):we},Be};function Zs(Z){for(var oe=Z.length,we=[0,1],Be=2,Ue=2;Ue<oe;Ue++){for(;Be>1&&Vt(Z[we[Be-2]],Z[we[Be-1]],Z[Ue])<=0;)--Be;we[Be++]=Ue}return we.slice(0,Be)}function Xs(Z,oe){return Z[0]-oe[0]||Z[1]-oe[1]}e.geom.polygon=function(Z){return ie(Z,wl),Z};var wl=e.geom.polygon.prototype=[];wl.area=function(){for(var Z=-1,oe=this.length,we,Be=this[oe-1],Ue=0;++Z<oe;)we=Be,Be=this[Z],Ue+=we[1]*Be[0]-we[0]*Be[1];return Ue*.5},wl.centroid=function(Z){var oe=-1,we=this.length,Be=0,Ue=0,We,wt=this[we-1],tt;for(arguments.length||(Z=-1/(6*this.area()));++oe<we;)We=wt,wt=this[oe],tt=We[0]*wt[1]-wt[0]*We[1],Be+=(We[0]+wt[0])*tt,Ue+=(We[1]+wt[1])*tt;return[Be*Z,Ue*Z]},wl.clip=function(Z){for(var oe,we=Cs(Z),Be=-1,Ue=this.length-Cs(this),We,wt,tt=this[Ue-1],zt,or,lr;++Be<Ue;){for(oe=Z.slice(),Z.length=0,zt=this[Be],or=oe[(wt=oe.length-we)-1],We=-1;++We<wt;)lr=oe[We],os(lr,tt,zt)?(os(or,tt,zt)||Z.push(cl(or,lr,tt,zt)),Z.push(lr)):os(or,tt,zt)&&Z.push(cl(or,lr,tt,zt)),or=lr;we&&Z.push(Z[0]),tt=zt}return Z};function os(Z,oe,we){return(we[0]-oe[0])*(Z[1]-oe[1])<(we[1]-oe[1])*(Z[0]-oe[0])}function cl(Z,oe,we,Be){var Ue=Z[0],We=we[0],wt=oe[0]-Ue,tt=Be[0]-We,zt=Z[1],or=we[1],lr=oe[1]-zt,Dr=Be[1]-or,Ir=(tt*(zt-or)-Dr*(Ue-We))/(Dr*wt-tt*lr);return[Ue+Ir*wt,zt+Ir*lr]}function Cs(Z){var oe=Z[0],we=Z[Z.length-1];return!(oe[0]-we[0]||oe[1]-we[1])}var ml,Ys,Hs,Eo=[],fs,Ql,Hu=[];function fc(){Ls(this),this.edge=this.site=this.circle=null}function ms(Z){var oe=Eo.pop()||new fc;return oe.site=Z,oe}function on(Z){ko(Z),Hs.remove(Z),Eo.push(Z),Ls(Z)}function fa(Z){var oe=Z.circle,we=oe.x,Be=oe.cy,Ue={x:we,y:Be},We=Z.P,wt=Z.N,tt=[Z];on(Z);for(var zt=We;zt.circle&&p(we-zt.circle.x)<Ye&&p(Be-zt.circle.cy)<Ye;)We=zt.P,tt.unshift(zt),on(zt),zt=We;tt.unshift(zt),ko(zt);for(var or=wt;or.circle&&p(we-or.circle.x)<Ye&&p(Be-or.circle.cy)<Ye;)wt=or.N,tt.push(or),on(or),or=wt;tt.push(or),ko(or);var lr=tt.length,Dr;for(Dr=1;Dr<lr;++Dr)or=tt[Dr],zt=tt[Dr-1],Al(or.edge,zt.site,or.site,Ue);zt=tt[0],or=tt[lr-1],or.edge=cf(zt.site,or.site,null,Ue),Zn(zt),Zn(or)}function Qu(Z){for(var oe=Z.x,we=Z.y,Be,Ue,We,wt,tt=Hs._;tt;)if(We=Rl(tt,we)-oe,We>Ye)tt=tt.L;else if(wt=oe-vo(tt,we),wt>Ye){if(!tt.R){Be=tt;break}tt=tt.R}else{We>-Ye?(Be=tt.P,Ue=tt):wt>-Ye?(Be=tt,Ue=tt.N):Be=Ue=tt;break}var zt=ms(Z);if(Hs.insert(Be,zt),!(!Be&&!Ue)){if(Be===Ue){ko(Be),Ue=ms(Be.site),Hs.insert(zt,Ue),zt.edge=Ue.edge=cf(Be.site,zt.site),Zn(Be),Zn(Ue);return}if(!Ue){zt.edge=cf(Be.site,zt.site);return}ko(Be),ko(Ue);var or=Be.site,lr=or.x,Dr=or.y,Ir=Z.x-lr,oi=Z.y-Dr,ui=Ue.site,qr=ui.x-lr,Kr=ui.y-Dr,ii=2*(Ir*Kr-oi*qr),vi=Ir*Ir+oi*oi,ci=qr*qr+Kr*Kr,Jr={x:(Kr*vi-oi*ci)/ii+lr,y:(Ir*ci-qr*vi)/ii+Dr};Al(Ue.edge,or,ui,Jr),zt.edge=cf(or,Z,null,Jr),Ue.edge=cf(Z,ui,null,Jr),Zn(Be),Zn(Ue)}}function Rl(Z,oe){var we=Z.site,Be=we.x,Ue=we.y,We=Ue-oe;if(!We)return Be;var wt=Z.P;if(!wt)return-1/0;we=wt.site;var tt=we.x,zt=we.y,or=zt-oe;if(!or)return tt;var lr=tt-Be,Dr=1/We-1/or,Ir=lr/or;return Dr?(-Ir+Math.sqrt(Ir*Ir-2*Dr*(lr*lr/(-2*or)-zt+or/2+Ue-We/2)))/Dr+Be:(Be+tt)/2}function vo(Z,oe){var we=Z.N;if(we)return Rl(we,oe);var Be=Z.site;return Be.y===oe?Be.x:1/0}function Zl(Z){this.site=Z,this.edges=[]}Zl.prototype.prepare=function(){for(var Z=this.edges,oe=Z.length,we;oe--;)we=Z[oe].edge,(!we.b||!we.a)&&Z.splice(oe,1);return Z.sort(Xl),Z.length};function Ks(Z){for(var oe=Z[0][0],we=Z[1][0],Be=Z[0][1],Ue=Z[1][1],We,wt,tt,zt,or=Ys,lr=or.length,Dr,Ir,oi,ui,qr,Kr;lr--;)if(Dr=or[lr],!(!Dr||!Dr.prepare()))for(oi=Dr.edges,ui=oi.length,Ir=0;Ir<ui;)Kr=oi[Ir].end(),tt=Kr.x,zt=Kr.y,qr=oi[++Ir%ui].start(),We=qr.x,wt=qr.y,(p(tt-We)>Ye||p(zt-wt)>Ye)&&(oi.splice(Ir,0,new Hc(rh(Dr.site,Kr,p(tt-oe)<Ye&&Ue-zt>Ye?{x:oe,y:p(We-oe)<Ye?wt:Ue}:p(zt-Ue)<Ye&&we-tt>Ye?{x:p(wt-Ue)<Ye?We:we,y:Ue}:p(tt-we)<Ye&&zt-Be>Ye?{x:we,y:p(We-we)<Ye?wt:Be}:p(zt-Be)<Ye&&tt-oe>Ye?{x:p(wt-Be)<Ye?We:oe,y:Be}:null),Dr.site,null)),++ui)}function Xl(Z,oe){return oe.angle-Z.angle}function Ec(){Ls(this),this.x=this.y=this.arc=this.site=this.cy=null}function Zn(Z){var oe=Z.P,we=Z.N;if(!(!oe||!we)){var Be=oe.site,Ue=Z.site,We=we.site;if(Be!==We){var wt=Ue.x,tt=Ue.y,zt=Be.x-wt,or=Be.y-tt,lr=We.x-wt,Kr=We.y-tt,Dr=2*(zt*Kr-or*lr);if(!(Dr>=-Ve)){var Ir=zt*zt+or*or,oi=lr*lr+Kr*Kr,ui=(Kr*Ir-or*oi)/Dr,qr=(zt*oi-lr*Ir)/Dr,Kr=qr+tt,ii=Hu.pop()||new Ec;ii.arc=Z,ii.site=Ue,ii.x=ui+wt,ii.y=Kr+Math.sqrt(ui*ui+qr*qr),ii.cy=Kr,Z.circle=ii;for(var vi=null,ci=Ql._;ci;)if(ii.y<ci.y||ii.y===ci.y&&ii.x<=ci.x)if(ci.L)ci=ci.L;else{vi=ci.P;break}else if(ci.R)ci=ci.R;else{vi=ci;break}Ql.insert(vi,ii),vi||(fs=ii)}}}}function ko(Z){var oe=Z.circle;oe&&(oe.P||(fs=oe.N),Ql.remove(oe),Hu.push(oe),Ls(oe),Z.circle=null)}function Co(Z,oe,we,Be){return function(Ue){var We=Ue.a,wt=Ue.b,tt=We.x,zt=We.y,or=wt.x,lr=wt.y,Dr=0,Ir=1,oi=or-tt,ui=lr-zt,qr;if(qr=Z-tt,!(!oi&&qr>0)){if(qr/=oi,oi<0){if(qr<Dr)return;qr<Ir&&(Ir=qr)}else if(oi>0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=we-tt,!(!oi&&qr<0)){if(qr/=oi,oi<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(oi>0){if(qr<Dr)return;qr<Ir&&(Ir=qr)}if(qr=oe-zt,!(!ui&&qr>0)){if(qr/=ui,ui<0){if(qr<Dr)return;qr<Ir&&(Ir=qr)}else if(ui>0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=Be-zt,!(!ui&&qr<0)){if(qr/=ui,ui<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(ui>0){if(qr<Dr)return;qr<Ir&&(Ir=qr)}return Dr>0&&(Ue.a={x:tt+Dr*oi,y:zt+Dr*ui}),Ir<1&&(Ue.b={x:tt+Ir*oi,y:zt+Ir*ui}),Ue}}}}}}function Tl(Z){for(var oe=ml,we=Co(Z[0][0],Z[0][1],Z[1][0],Z[1][1]),Be=oe.length,Ue;Be--;)Ue=oe[Be],(!uf(Ue,Z)||!we(Ue)||p(Ue.a.x-Ue.b.x)<Ye&&p(Ue.a.y-Ue.b.y)<Ye)&&(Ue.a=Ue.b=null,oe.splice(Be,1))}function uf(Z,oe){var we=Z.b;if(we)return!0;var Be=Z.a,Ue=oe[0][0],We=oe[1][0],wt=oe[0][1],tt=oe[1][1],zt=Z.l,or=Z.r,lr=zt.x,Dr=zt.y,Ir=or.x,oi=or.y,ui=(lr+Ir)/2,qr=(Dr+oi)/2,Kr,ii;if(oi===Dr){if(ui<Ue||ui>=We)return;if(lr>Ir){if(!Be)Be={x:ui,y:wt};else if(Be.y>=tt)return;we={x:ui,y:tt}}else{if(!Be)Be={x:ui,y:tt};else if(Be.y<wt)return;we={x:ui,y:wt}}}else if(Kr=(lr-Ir)/(oi-Dr),ii=qr-Kr*ui,Kr<-1||Kr>1)if(lr>Ir){if(!Be)Be={x:(wt-ii)/Kr,y:wt};else if(Be.y>=tt)return;we={x:(tt-ii)/Kr,y:tt}}else{if(!Be)Be={x:(tt-ii)/Kr,y:tt};else if(Be.y<wt)return;we={x:(wt-ii)/Kr,y:wt}}else if(Dr<oi){if(!Be)Be={x:Ue,y:Kr*Ue+ii};else if(Be.x>=We)return;we={x:We,y:Kr*We+ii}}else{if(!Be)Be={x:We,y:Kr*We+ii};else if(Be.x<Ue)return;we={x:Ue,y:Kr*Ue+ii}}return Z.a=Be,Z.b=we,!0}function So(Z,oe){this.l=Z,this.r=oe,this.a=this.b=null}function cf(Z,oe,we,Be){var Ue=new So(Z,oe);return ml.push(Ue),we&&Al(Ue,Z,oe,we),Be&&Al(Ue,oe,Z,Be),Ys[Z.i].edges.push(new Hc(Ue,Z,oe)),Ys[oe.i].edges.push(new Hc(Ue,oe,Z)),Ue}function rh(Z,oe,we){var Be=new So(Z,null);return Be.a=oe,Be.b=we,ml.push(Be),Be}function Al(Z,oe,we,Be){!Z.a&&!Z.b?(Z.a=Be,Z.l=oe,Z.r=we):Z.l===we?Z.b=Be:Z.a=Be}function Hc(Z,oe,we){var Be=Z.a,Ue=Z.b;this.edge=Z,this.site=oe,this.angle=we?Math.atan2(we.y-oe.y,we.x-oe.x):Z.l===oe?Math.atan2(Ue.x-Be.x,Be.y-Ue.y):Math.atan2(Be.x-Ue.x,Ue.y-Be.y)}Hc.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}};function eu(){this._=null}function Ls(Z){Z.U=Z.C=Z.L=Z.R=Z.P=Z.N=null}eu.prototype={insert:function(Z,oe){var we,Be,Ue;if(Z){if(oe.P=Z,oe.N=Z.N,Z.N&&(Z.N.P=oe),Z.N=oe,Z.R){for(Z=Z.R;Z.L;)Z=Z.L;Z.L=oe}else Z.R=oe;we=Z}else this._?(Z=Of(this._),oe.P=null,oe.N=Z,Z.P=Z.L=oe,we=Z):(oe.P=oe.N=null,this._=oe,we=null);for(oe.L=oe.R=null,oe.U=we,oe.C=!0,Z=oe;we&&we.C;)Be=we.U,we===Be.L?(Ue=Be.R,Ue&&Ue.C?(we.C=Ue.C=!1,Be.C=!0,Z=Be):(Z===we.R&&(mu(this,we),Z=we,we=Z.U),we.C=!1,Be.C=!0,kc(this,Be))):(Ue=Be.L,Ue&&Ue.C?(we.C=Ue.C=!1,Be.C=!0,Z=Be):(Z===we.L&&(kc(this,we),Z=we,we=Z.U),we.C=!1,Be.C=!0,mu(this,Be))),we=Z.U;this._.C=!1},remove:function(Z){Z.N&&(Z.N.P=Z.P),Z.P&&(Z.P.N=Z.N),Z.N=Z.P=null;var oe=Z.U,we,Be=Z.L,Ue=Z.R,We,wt;if(Be?Ue?We=Of(Ue):We=Be:We=Ue,oe?oe.L===Z?oe.L=We:oe.R=We:this._=We,Be&&Ue?(wt=We.C,We.C=Z.C,We.L=Be,Be.U=We,We!==Ue?(oe=We.U,We.U=Z.U,Z=We.R,oe.L=Z,We.R=Ue,Ue.U=We):(We.U=oe,oe=We,Z=We.R)):(wt=Z.C,Z=We),Z&&(Z.U=oe),!wt){if(Z&&Z.C){Z.C=!1;return}do{if(Z===this._)break;if(Z===oe.L){if(we=oe.R,we.C&&(we.C=!1,oe.C=!0,mu(this,oe),we=oe.R),we.L&&we.L.C||we.R&&we.R.C){(!we.R||!we.R.C)&&(we.L.C=!1,we.C=!0,kc(this,we),we=oe.R),we.C=oe.C,oe.C=we.R.C=!1,mu(this,oe),Z=this._;break}}else if(we=oe.L,we.C&&(we.C=!1,oe.C=!0,kc(this,oe),we=oe.L),we.L&&we.L.C||we.R&&we.R.C){(!we.L||!we.L.C)&&(we.R.C=!1,we.C=!0,mu(this,we),we=oe.L),we.C=oe.C,oe.C=we.L.C=!1,kc(this,oe),Z=this._;break}we.C=!0,Z=oe,oe=oe.U}while(!Z.C);Z&&(Z.C=!1)}}};function mu(Z,oe){var we=oe,Be=oe.R,Ue=we.U;Ue?Ue.L===we?Ue.L=Be:Ue.R=Be:Z._=Be,Be.U=Ue,we.U=Be,we.R=Be.L,we.R&&(we.R.U=we),Be.L=we}function kc(Z,oe){var we=oe,Be=oe.L,Ue=we.U;Ue?Ue.L===we?Ue.L=Be:Ue.R=Be:Z._=Be,Be.U=Ue,we.U=Be,we.L=Be.R,we.L&&(we.L.U=we),Be.R=we}function Of(Z){for(;Z.L;)Z=Z.L;return Z}function Gc(Z,oe){var we=Z.sort(vd).pop(),Be,Ue,We;for(ml=[],Ys=new Array(Z.length),Hs=new eu,Ql=new eu;;)if(We=fs,we&&(!We||we.y<We.y||we.y===We.y&&we.x<We.x))(we.x!==Be||we.y!==Ue)&&(Ys[we.i]=new Zl(we),Qu(we),Be=we.x,Ue=we.y),we=Z.pop();else if(We)fa(We.arc);else break;oe&&(Tl(oe),Ks(oe));var wt={cells:Ys,edges:ml};return Hs=Ql=ml=Ys=null,wt}function vd(Z,oe){return oe.y-Z.y||oe.x-Z.x}e.geom.voronoi=function(Z){var oe=zs,we=ks,Be=oe,Ue=we,We=Bf;if(Z)return wt(Z);function wt(zt){var or=new Array(zt.length),lr=We[0][0],Dr=We[0][1],Ir=We[1][0],oi=We[1][1];return Gc(tt(zt),We).cells.forEach(function(ui,qr){var Kr=ui.edges,ii=ui.site,vi=or[qr]=Kr.length?Kr.map(function(ci){var Jr=ci.start();return[Jr.x,Jr.y]}):ii.x>=lr&&ii.x<=Ir&&ii.y>=Dr&&ii.y<=oi?[[lr,oi],[Ir,oi],[Ir,Dr],[lr,Dr]]:[];vi.point=zt[qr]}),or}function tt(zt){return zt.map(function(or,lr){return{x:Math.round(Be(or,lr)/Ye)*Ye,y:Math.round(Ue(or,lr)/Ye)*Ye,i:lr}})}return wt.links=function(zt){return Gc(tt(zt)).edges.filter(function(or){return or.l&&or.r}).map(function(or){return{source:zt[or.l.i],target:zt[or.r.i]}})},wt.triangles=function(zt){var or=[];return Gc(tt(zt)).cells.forEach(function(lr,Dr){for(var Ir=lr.site,oi=lr.edges.sort(Xl),ui=-1,qr=oi.length,Kr,ii,vi=oi[qr-1].edge,ci=vi.l===Ir?vi.r:vi.l;++ui<qr;)Kr=vi,ii=ci,vi=oi[ui].edge,ci=vi.l===Ir?vi.r:vi.l,Dr<ii.i&&Dr<ci.i&&ss(Ir,ii,ci)<0&&or.push([zt[Dr],zt[ii.i],zt[ci.i]])}),or},wt.x=function(zt){return arguments.length?(Be=ti(oe=zt),wt):oe},wt.y=function(zt){return arguments.length?(Ue=ti(we=zt),wt):we},wt.clipExtent=function(zt){return arguments.length?(We=zt==null?Bf:zt,wt):We===Bf?null:We},wt.size=function(zt){return arguments.length?wt.clipExtent(zt&&[[0,0],zt]):We===Bf?null:We&&We[1]},wt};var Bf=[[-1e6,-1e6],[1e6,1e6]];function ss(Z,oe,we){return(Z.x-we.x)*(oe.y-Z.y)-(Z.x-oe.x)*(we.y-Z.y)}e.geom.delaunay=function(Z){return e.geom.voronoi().triangles(Z)},e.geom.quadtree=function(Z,oe,we,Be,Ue){var We=zs,wt=ks,tt;if(tt=arguments.length)return We=ff,wt=ih,tt===3&&(Ue=we,Be=oe,we=oe=0),zt(Z);function zt(or){var lr,Dr=ti(We),Ir=ti(wt),oi,ui,qr,Kr,ii,vi,ci,Jr;if(oe!=null)ii=oe,vi=we,ci=Be,Jr=Ue;else if(ci=Jr=-(ii=vi=1/0),oi=[],ui=[],Kr=or.length,tt)for(qr=0;qr<Kr;++qr)lr=or[qr],lr.x<ii&&(ii=lr.x),lr.y<vi&&(vi=lr.y),lr.x>ci&&(ci=lr.x),lr.y>Jr&&(Jr=lr.y),oi.push(lr.x),ui.push(lr.y);else for(qr=0;qr<Kr;++qr){var un=+Dr(lr=or[qr],qr),dn=+Ir(lr,qr);un<ii&&(ii=un),dn<vi&&(vi=dn),un>ci&&(ci=un),dn>Jr&&(Jr=dn),oi.push(un),ui.push(dn)}var En=ci-ii,Nn=Jr-vi;En>Nn?Jr=vi+En:ci=ii+Nn;function ga(wa,io,Ss,_s,Ns,pn,za,Lo){if(!(isNaN(Ss)||isNaN(_s)))if(wa.leaf){var Fo=wa.x,js=wa.y;if(Fo!=null)if(p(Fo-Ss)+p(js-_s)<.01)ya(wa,io,Ss,_s,Ns,pn,za,Lo);else{var xl=wa.point;wa.x=wa.y=wa.point=null,ya(wa,xl,Fo,js,Ns,pn,za,Lo),ya(wa,io,Ss,_s,Ns,pn,za,Lo)}else wa.x=Ss,wa.y=_s,wa.point=io}else ya(wa,io,Ss,_s,Ns,pn,za,Lo)}function ya(wa,io,Ss,_s,Ns,pn,za,Lo){var Fo=(Ns+za)*.5,js=(pn+Lo)*.5,xl=Ss>=Fo,fu=_s>=js,dl=fu<<1|xl;wa.leaf=!1,wa=wa.nodes[dl]||(wa.nodes[dl]=Vl()),xl?Ns=Fo:za=Fo,fu?pn=js:Lo=js,ga(wa,io,Ss,_s,Ns,pn,za,Lo)}var so=Vl();if(so.add=function(wa){ga(so,wa,+Dr(wa,++qr),+Ir(wa,qr),ii,vi,ci,Jr)},so.visit=function(wa){Js(wa,so,ii,vi,ci,Jr)},so.find=function(wa){return hc(so,wa[0],wa[1],ii,vi,ci,Jr)},qr=-1,oe==null){for(;++qr<Kr;)ga(so,or[qr],oi[qr],ui[qr],ii,vi,ci,Jr);--qr}else or.forEach(so.add);return oi=ui=or=lr=null,so}return zt.x=function(or){return arguments.length?(We=or,zt):We},zt.y=function(or){return arguments.length?(wt=or,zt):wt},zt.extent=function(or){return arguments.length?(or==null?oe=we=Be=Ue=null:(oe=+or[0][0],we=+or[0][1],Be=+or[1][0],Ue=+or[1][1]),zt):oe==null?null:[[oe,we],[Be,Ue]]},zt.size=function(or){return arguments.length?(or==null?oe=we=Be=Ue=null:(oe=we=0,Be=+or[0],Ue=+or[1]),zt):oe==null?null:[Be-oe,Ue-we]},zt};function ff(Z){return Z.x}function ih(Z){return Z.y}function Vl(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function Js(Z,oe,we,Be,Ue,We){if(!Z(oe,we,Be,Ue,We)){var wt=(we+Ue)*.5,tt=(Be+We)*.5,zt=oe.nodes;zt[0]&&Js(Z,zt[0],we,Be,wt,tt),zt[1]&&Js(Z,zt[1],wt,Be,Ue,tt),zt[2]&&Js(Z,zt[2],we,tt,wt,We),zt[3]&&Js(Z,zt[3],wt,tt,Ue,We)}}function hc(Z,oe,we,Be,Ue,We,wt){var tt=1/0,zt;return function or(lr,Dr,Ir,oi,ui){if(!(Dr>We||Ir>wt||oi<Be||ui<Ue)){if(qr=lr.point){var qr,Kr=oe-lr.x,ii=we-lr.y,vi=Kr*Kr+ii*ii;if(vi<tt){var ci=Math.sqrt(tt=vi);Be=oe-ci,Ue=we-ci,We=oe+ci,wt=we+ci,zt=qr}}for(var Jr=lr.nodes,un=(Dr+oi)*.5,dn=(Ir+ui)*.5,En=oe>=un,Nn=we>=dn,ga=Nn<<1|En,ya=ga+4;ga<ya;++ga)if(lr=Jr[ga&3])switch(ga&3){case 0:or(lr,Dr,Ir,un,dn);break;case 1:or(lr,un,Ir,oi,dn);break;case 2:or(lr,Dr,dn,un,ui);break;case 3:or(lr,un,dn,oi,ui);break}}}(Z,Be,Ue,We,wt),zt}e.interpolateRgb=Cc;function Cc(Z,oe){Z=e.rgb(Z),oe=e.rgb(oe);var we=Z.r,Be=Z.g,Ue=Z.b,We=oe.r-we,wt=oe.g-Be,tt=oe.b-Ue;return function(zt){return"#"+Sn(Math.round(we+We*zt))+Sn(Math.round(Be+wt*zt))+Sn(Math.round(Ue+tt*zt))}}e.interpolateObject=ws;function ws(Z,oe){var we={},Be={},Ue;for(Ue in Z)Ue in oe?we[Ue]=Sl(Z[Ue],oe[Ue]):Be[Ue]=Z[Ue];for(Ue in oe)Ue in Z||(Be[Ue]=oe[Ue]);return function(We){for(Ue in we)Be[Ue]=we[Ue](We);return Be}}e.interpolateNumber=$s;function $s(Z,oe){return Z=+Z,oe=+oe,function(we){return Z*(1-we)+oe*we}}e.interpolateString=hs;function hs(Z,oe){var we=Ms.lastIndex=dc.lastIndex=0,Be,Ue,We,wt=-1,tt=[],zt=[];for(Z=Z+"",oe=oe+"";(Be=Ms.exec(Z))&&(Ue=dc.exec(oe));)(We=Ue.index)>we&&(We=oe.slice(we,We),tt[wt]?tt[wt]+=We:tt[++wt]=We),(Be=Be[0])===(Ue=Ue[0])?tt[wt]?tt[wt]+=Ue:tt[++wt]=Ue:(tt[++wt]=null,zt.push({i:wt,x:$s(Be,Ue)})),we=dc.lastIndex;return we<oe.length&&(We=oe.slice(we),tt[wt]?tt[wt]+=We:tt[++wt]=We),tt.length<2?zt[0]?(oe=zt[0].x,function(or){return oe(or)+""}):function(){return oe}:(oe=zt.length,function(or){for(var lr=0,Dr;lr<oe;++lr)tt[(Dr=zt[lr]).i]=Dr.x(or);return tt.join("")})}var Ms=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,dc=new RegExp(Ms.source,"g");e.interpolate=Sl;function Sl(Z,oe){for(var we=e.interpolators.length,Be;--we>=0&&!(Be=e.interpolators[we](Z,oe)););return Be}e.interpolators=[function(Z,oe){var we=typeof oe;return(we==="string"?Hr.has(oe.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(oe)?Cc:hs:oe instanceof Wn?Cc:Array.isArray(oe)?ec:we==="object"&&isNaN(oe)?ws:$s)(Z,oe)}],e.interpolateArray=ec;function ec(Z,oe){var we=[],Be=[],Ue=Z.length,We=oe.length,wt=Math.min(Z.length,oe.length),tt;for(tt=0;tt<wt;++tt)we.push(Sl(Z[tt],oe[tt]));for(;tt<Ue;++tt)Be[tt]=Z[tt];for(;tt<We;++tt)Be[tt]=oe[tt];return function(zt){for(tt=0;tt<wt;++tt)Be[tt]=we[tt](zt);return Be}}var Ps=function(){return H},ov=e.map({linear:Ps,poly:Mh,quad:function(){return Ef},cubic:function(){return tc},sin:function(){return jc},exp:function(){return kf},circle:function(){return Ml},elastic:Yh,back:Eh,bounce:function(){return nh}}),wo=e.map({in:H,out:$o,"in-out":Ja,"out-in":function(Z){return Ja($o(Z))}});e.ease=function(Z){var oe=Z.indexOf("-"),we=oe>=0?Z.slice(0,oe):Z,Be=oe>=0?Z.slice(oe+1):"in";return we=ov.get(we)||Ps,Be=wo.get(Be)||H,Od(Be(we.apply(null,t.call(arguments,1))))};function Od(Z){return function(oe){return oe<=0?0:oe>=1?1:Z(oe)}}function $o(Z){return function(oe){return 1-Z(1-oe)}}function Ja(Z){return function(oe){return .5*(oe<.5?Z(2*oe):2-Z(2-2*oe))}}function Ef(Z){return Z*Z}function tc(Z){return Z*Z*Z}function uu(Z){if(Z<=0)return 0;if(Z>=1)return 1;var oe=Z*Z,we=oe*Z;return 4*(Z<.5?we:3*(Z-oe)+we-.75)}function Mh(Z){return function(oe){return Math.pow(oe,Z)}}function jc(Z){return 1-Math.cos(Z*xe)}function kf(Z){return Math.pow(2,10*(Z-1))}function Ml(Z){return 1-Math.sqrt(1-Z*Z)}function Yh(Z,oe){var we;return arguments.length<2&&(oe=.45),arguments.length?we=oe/ht*Math.asin(1/Z):(Z=1,we=oe/4),function(Be){return 1+Z*Math.pow(2,-10*Be)*Math.sin((Be-we)*ht/oe)}}function Eh(Z){return Z||(Z=1.70158),function(oe){return oe*oe*((Z+1)*oe-Z)}}function nh(Z){return Z<1/2.75?7.5625*Z*Z:Z<2/2.75?7.5625*(Z-=1.5/2.75)*Z+.75:Z<2.5/2.75?7.5625*(Z-=2.25/2.75)*Z+.9375:7.5625*(Z-=2.625/2.75)*Z+.984375}e.interpolateHcl=hf;function hf(Z,oe){Z=e.hcl(Z),oe=e.hcl(oe);var we=Z.h,Be=Z.c,Ue=Z.l,We=oe.h-we,wt=oe.c-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.c:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return Fr(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateHsl=kh;function kh(Z,oe){Z=e.hsl(Z),oe=e.hsl(oe);var we=Z.h,Be=Z.s,Ue=Z.l,We=oe.h-we,wt=oe.s-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.s:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return jt(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateLab=Kh;function Kh(Z,oe){Z=e.lab(Z),oe=e.lab(oe);var we=Z.l,Be=Z.a,Ue=Z.b,We=oe.l-we,wt=oe.a-Be,tt=oe.b-Ue;return function(zt){return Gi(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateRound=rc;function rc(Z,oe){return oe-=Z,function(we){return Math.round(Z+oe*we)}}e.transform=function(Z){var oe=n.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(we){if(we!=null){oe.setAttribute("transform",we);var Be=oe.transform.baseVal.consolidate()}return new ah(Be?Be.matrix:Nf)})(Z)};function ah(Z){var oe=[Z.a,Z.b],we=[Z.c,Z.d],Be=df(oe),Ue=Wc(oe,we),We=df(Cu(we,oe,-Ue))||0;oe[0]*we[1]<we[0]*oe[1]&&(oe[0]*=-1,oe[1]*=-1,Be*=-1,Ue*=-1),this.rotate=(Be?Math.atan2(oe[1],oe[0]):Math.atan2(-we[0],we[1]))*lt,this.translate=[Z.e,Z.f],this.scale=[Be,We],this.skew=We?Math.atan2(Ue,We)*lt:0}ah.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};function Wc(Z,oe){return Z[0]*oe[0]+Z[1]*oe[1]}function df(Z){var oe=Math.sqrt(Wc(Z,Z));return oe&&(Z[0]/=oe,Z[1]/=oe),oe}function Cu(Z,oe,we){return Z[0]+=we*oe[0],Z[1]+=we*oe[1],Z}var Nf={a:1,b:0,c:0,d:1,e:0,f:0};e.interpolateTransform=Cf;function Zc(Z){return Z.length?Z.pop()+",":""}function ds(Z,oe,we,Be){if(Z[0]!==oe[0]||Z[1]!==oe[1]){var Ue=we.push("translate(",null,",",null,")");Be.push({i:Ue-4,x:$s(Z[0],oe[0])},{i:Ue-2,x:$s(Z[1],oe[1])})}else(oe[0]||oe[1])&&we.push("translate("+oe+")")}function Ch(Z,oe,we,Be){Z!==oe?(Z-oe>180?oe+=360:oe-Z>180&&(Z+=360),Be.push({i:we.push(Zc(we)+"rotate(",null,")")-2,x:$s(Z,oe)})):oe&&we.push(Zc(we)+"rotate("+oe+")")}function Bd(Z,oe,we,Be){Z!==oe?Be.push({i:we.push(Zc(we)+"skewX(",null,")")-2,x:$s(Z,oe)}):oe&&we.push(Zc(we)+"skewX("+oe+")")}function Jh(Z,oe,we,Be){if(Z[0]!==oe[0]||Z[1]!==oe[1]){var Ue=we.push(Zc(we)+"scale(",null,",",null,")");Be.push({i:Ue-4,x:$s(Z[0],oe[0])},{i:Ue-2,x:$s(Z[1],oe[1])})}else(oe[0]!==1||oe[1]!==1)&&we.push(Zc(we)+"scale("+oe+")")}function Cf(Z,oe){var we=[],Be=[];return Z=e.transform(Z),oe=e.transform(oe),ds(Z.translate,oe.translate,we,Be),Ch(Z.rotate,oe.rotate,we,Be),Bd(Z.skew,oe.skew,we,Be),Jh(Z.scale,oe.scale,we,Be),Z=oe=null,function(Ue){for(var We=-1,wt=Be.length,tt;++We<wt;)we[(tt=Be[We]).i]=tt.x(Ue);return we.join("")}}function pd(Z,oe){return oe=(oe-=Z=+Z)||1/oe,function(we){return(we-Z)/oe}}function Lu(Z,oe){return oe=(oe-=Z=+Z)||1/oe,function(we){return Math.max(0,Math.min(1,(we-Z)/oe))}}e.layout={},e.layout.bundle=function(){return function(Z){for(var oe=[],we=-1,Be=Z.length;++we<Be;)oe.push($h(Z[we]));return oe}};function $h(Z){for(var oe=Z.source,we=Z.target,Be=Pu(oe,we),Ue=[oe];oe!==Be;)oe=oe.parent,Ue.push(oe);for(var We=Ue.length;we!==Be;)Ue.splice(We,0,we),we=we.parent;return Ue}function tu(Z){for(var oe=[],we=Z.parent;we!=null;)oe.push(Z),Z=we,we=we.parent;return oe.push(Z),oe}function Pu(Z,oe){if(Z===oe)return Z;for(var we=tu(Z),Be=tu(oe),Ue=we.pop(),We=Be.pop(),wt=null;Ue===We;)wt=Ue,Ue=we.pop(),We=Be.pop();return wt}e.layout.chord=function(){var Z={},oe,we,Be,Ue,We=0,wt,tt,zt;function or(){var Dr={},Ir=[],oi=e.range(Ue),ui=[],qr,Kr,ii,vi,ci;for(oe=[],we=[],qr=0,vi=-1;++vi<Ue;){for(Kr=0,ci=-1;++ci<Ue;)Kr+=Be[vi][ci];Ir.push(Kr),ui.push(e.range(Ue)),qr+=Kr}for(wt&&oi.sort(function(so,wa){return wt(Ir[so],Ir[wa])}),tt&&ui.forEach(function(so,wa){so.sort(function(io,Ss){return tt(Be[wa][io],Be[wa][Ss])})}),qr=(ht-We*Ue)/qr,Kr=0,vi=-1;++vi<Ue;){for(ii=Kr,ci=-1;++ci<Ue;){var Jr=oi[vi],un=ui[Jr][ci],dn=Be[Jr][un],En=Kr,Nn=Kr+=dn*qr;Dr[Jr+"-"+un]={index:Jr,subindex:un,startAngle:En,endAngle:Nn,value:dn}}we[Jr]={index:Jr,startAngle:ii,endAngle:Kr,value:Ir[Jr]},Kr+=We}for(vi=-1;++vi<Ue;)for(ci=vi-1;++ci<Ue;){var ga=Dr[vi+"-"+ci],ya=Dr[ci+"-"+vi];(ga.value||ya.value)&&oe.push(ga.value<ya.value?{source:ya,target:ga}:{source:ga,target:ya})}zt&&lr()}function lr(){oe.sort(function(Dr,Ir){return zt((Dr.source.value+Dr.target.value)/2,(Ir.source.value+Ir.target.value)/2)})}return Z.matrix=function(Dr){return arguments.length?(Ue=(Be=Dr)&&Be.length,oe=we=null,Z):Be},Z.padding=function(Dr){return arguments.length?(We=Dr,oe=we=null,Z):We},Z.sortGroups=function(Dr){return arguments.length?(wt=Dr,oe=we=null,Z):wt},Z.sortSubgroups=function(Dr){return arguments.length?(tt=Dr,oe=null,Z):tt},Z.sortChords=function(Dr){return arguments.length?(zt=Dr,oe&&lr(),Z):zt},Z.chords=function(){return oe||or(),oe},Z.groups=function(){return we||or(),we},Z},e.layout.force=function(){var Z={},oe=e.dispatch("start","tick","end"),we,Be=[1,1],Ue,We,wt=.9,tt=Qs,zt=Qh,or=-30,lr=gd,Dr=.1,Ir=.64,oi=[],ui=[],qr,Kr,ii;function vi(Jr){return function(un,dn,En,Nn){if(un.point!==Jr){var ga=un.cx-Jr.x,ya=un.cy-Jr.y,so=Nn-dn,wa=ga*ga+ya*ya;if(so*so/Ir<wa){if(wa<lr){var io=un.charge/wa;Jr.px-=ga*io,Jr.py-=ya*io}return!0}if(un.point&&wa&&wa<lr){var io=un.pointCharge/wa;Jr.px-=ga*io,Jr.py-=ya*io}}return!un.charge}}Z.tick=function(){if((We*=.99)<.005)return we=null,oe.end({type:"end",alpha:We=0}),!0;var Jr=oi.length,un=ui.length,dn,En,Nn,ga,ya,so,wa,io,Ss;for(En=0;En<un;++En)Nn=ui[En],ga=Nn.source,ya=Nn.target,io=ya.x-ga.x,Ss=ya.y-ga.y,(so=io*io+Ss*Ss)&&(so=We*Kr[En]*((so=Math.sqrt(so))-qr[En])/so,io*=so,Ss*=so,ya.x-=io*(wa=ga.weight+ya.weight?ga.weight/(ga.weight+ya.weight):.5),ya.y-=Ss*wa,ga.x+=io*(wa=1-wa),ga.y+=Ss*wa);if((wa=We*Dr)&&(io=Be[0]/2,Ss=Be[1]/2,En=-1,wa))for(;++En<Jr;)Nn=oi[En],Nn.x+=(io-Nn.x)*wa,Nn.y+=(Ss-Nn.y)*wa;if(or)for(yu(dn=e.geom.quadtree(oi),We,ii),En=-1;++En<Jr;)(Nn=oi[En]).fixed||dn.visit(vi(Nn));for(En=-1;++En<Jr;)Nn=oi[En],Nn.fixed?(Nn.x=Nn.px,Nn.y=Nn.py):(Nn.x-=(Nn.px-(Nn.px=Nn.x))*wt,Nn.y-=(Nn.py-(Nn.py=Nn.y))*wt);oe.tick({type:"tick",alpha:We})},Z.nodes=function(Jr){return arguments.length?(oi=Jr,Z):oi},Z.links=function(Jr){return arguments.length?(ui=Jr,Z):ui},Z.size=function(Jr){return arguments.length?(Be=Jr,Z):Be},Z.linkDistance=function(Jr){return arguments.length?(tt=typeof Jr=="function"?Jr:+Jr,Z):tt},Z.distance=Z.linkDistance,Z.linkStrength=function(Jr){return arguments.length?(zt=typeof Jr=="function"?Jr:+Jr,Z):zt},Z.friction=function(Jr){return arguments.length?(wt=+Jr,Z):wt},Z.charge=function(Jr){return arguments.length?(or=typeof Jr=="function"?Jr:+Jr,Z):or},Z.chargeDistance=function(Jr){return arguments.length?(lr=Jr*Jr,Z):Math.sqrt(lr)},Z.gravity=function(Jr){return arguments.length?(Dr=+Jr,Z):Dr},Z.theta=function(Jr){return arguments.length?(Ir=Jr*Jr,Z):Math.sqrt(Ir)},Z.alpha=function(Jr){return arguments.length?(Jr=+Jr,We?Jr>0?We=Jr:(we.c=null,we.t=NaN,we=null,oe.end({type:"end",alpha:We=0})):Jr>0&&(oe.start({type:"start",alpha:We=Jr}),we=Oo(Z.tick)),Z):We},Z.start=function(){var Jr,un=oi.length,dn=ui.length,En=Be[0],Nn=Be[1],ga,ya;for(Jr=0;Jr<un;++Jr)(ya=oi[Jr]).index=Jr,ya.weight=0;for(Jr=0;Jr<dn;++Jr)ya=ui[Jr],typeof ya.source=="number"&&(ya.source=oi[ya.source]),typeof ya.target=="number"&&(ya.target=oi[ya.target]),++ya.source.weight,++ya.target.weight;for(Jr=0;Jr<un;++Jr)ya=oi[Jr],isNaN(ya.x)&&(ya.x=so("x",En)),isNaN(ya.y)&&(ya.y=so("y",Nn)),isNaN(ya.px)&&(ya.px=ya.x),isNaN(ya.py)&&(ya.py=ya.y);if(qr=[],typeof tt=="function")for(Jr=0;Jr<dn;++Jr)qr[Jr]=+tt.call(this,ui[Jr],Jr);else for(Jr=0;Jr<dn;++Jr)qr[Jr]=tt;if(Kr=[],typeof zt=="function")for(Jr=0;Jr<dn;++Jr)Kr[Jr]=+zt.call(this,ui[Jr],Jr);else for(Jr=0;Jr<dn;++Jr)Kr[Jr]=zt;if(ii=[],typeof or=="function")for(Jr=0;Jr<un;++Jr)ii[Jr]=+or.call(this,oi[Jr],Jr);else for(Jr=0;Jr<un;++Jr)ii[Jr]=or;function so(wa,io){if(!ga){for(ga=new Array(un),Ns=0;Ns<un;++Ns)ga[Ns]=[];for(Ns=0;Ns<dn;++Ns){var Ss=ui[Ns];ga[Ss.source.index].push(Ss.target),ga[Ss.target.index].push(Ss.source)}}for(var _s=ga[Jr],Ns=-1,pn=_s.length,za;++Ns<pn;)if(!isNaN(za=_s[Ns][wa]))return za;return Math.random()*io}return Z.resume()},Z.resume=function(){return Z.alpha(.1)},Z.stop=function(){return Z.alpha(0)},Z.drag=function(){if(Ue||(Ue=e.behavior.drag().origin(H).on("dragstart.force",Lc).on("drag.force",ci).on("dragend.force",fl)),!arguments.length)return Ue;this.on("mouseover.force",Xc).on("mouseout.force",ic).call(Ue)};function ci(Jr){Jr.px=e.event.x,Jr.py=e.event.y,Z.resume()}return e.rebind(Z,oe,"on")};function Lc(Z){Z.fixed|=2}function fl(Z){Z.fixed&=-7}function Xc(Z){Z.fixed|=4,Z.px=Z.x,Z.py=Z.y}function ic(Z){Z.fixed&=-5}function yu(Z,oe,we){var Be=0,Ue=0;if(Z.charge=0,!Z.leaf)for(var We=Z.nodes,wt=We.length,tt=-1,zt;++tt<wt;)zt=We[tt],zt!=null&&(yu(zt,oe,we),Z.charge+=zt.charge,Be+=zt.charge*zt.cx,Ue+=zt.charge*zt.cy);if(Z.point){Z.leaf||(Z.point.x+=Math.random()-.5,Z.point.y+=Math.random()-.5);var or=oe*we[Z.point.index];Z.charge+=Z.pointCharge=or,Be+=or*Z.point.x,Ue+=or*Z.point.y}Z.cx=Be/Z.charge,Z.cy=Ue/Z.charge}var Qs=20,Qh=1,gd=1/0;e.layout.hierarchy=function(){var Z=Uf,oe=sv,we=Lf;function Be(Ue){var We=[Ue],wt=[],tt;for(Ue.depth=0;(tt=We.pop())!=null;)if(wt.push(tt),(or=oe.call(Be,tt,tt.depth))&&(zt=or.length)){for(var zt,or,lr;--zt>=0;)We.push(lr=or[zt]),lr.parent=tt,lr.depth=tt.depth+1;we&&(tt.value=0),tt.children=or}else we&&(tt.value=+we.call(Be,tt,tt.depth)||0),delete tt.children;return vc(Ue,function(Dr){var Ir,oi;Z&&(Ir=Dr.children)&&Ir.sort(Z),we&&(oi=Dr.parent)&&(oi.value+=Dr.value)}),wt}return Be.sort=function(Ue){return arguments.length?(Z=Ue,Be):Z},Be.children=function(Ue){return arguments.length?(oe=Ue,Be):oe},Be.value=function(Ue){return arguments.length?(we=Ue,Be):we},Be.revalue=function(Ue){return we&&(Pc(Ue,function(We){We.children&&(We.value=0)}),vc(Ue,function(We){var wt;We.children||(We.value=+we.call(Be,We,We.depth)||0),(wt=We.parent)&&(wt.value+=We.value)})),Ue},Be};function Gu(Z,oe){return e.rebind(Z,oe,"sort","children","value"),Z.nodes=Z,Z.links=Iu,Z}function Pc(Z,oe){for(var we=[Z];(Z=we.pop())!=null;)if(oe(Z),(Ue=Z.children)&&(Be=Ue.length))for(var Be,Ue;--Be>=0;)we.push(Ue[Be])}function vc(Z,oe){for(var we=[Z],Be=[];(Z=we.pop())!=null;)if(Be.push(Z),(wt=Z.children)&&(We=wt.length))for(var Ue=-1,We,wt;++Ue<We;)we.push(wt[Ue]);for(;(Z=Be.pop())!=null;)oe(Z)}function sv(Z){return Z.children}function Lf(Z){return Z.value}function Uf(Z,oe){return oe.value-Z.value}function Iu(Z){return e.merge(Z.map(function(oe){return(oe.children||[]).map(function(we){return{source:oe,target:we}})}))}e.layout.partition=function(){var Z=e.layout.hierarchy(),oe=[1,1];function we(We,wt,tt,zt){var or=We.children;if(We.x=wt,We.y=We.depth*zt,We.dx=tt,We.dy=zt,or&&(Dr=or.length)){var lr=-1,Dr,Ir,oi;for(tt=We.value?tt/We.value:0;++lr<Dr;)we(Ir=or[lr],wt,oi=Ir.value*tt,zt),wt+=oi}}function Be(We){var wt=We.children,tt=0;if(wt&&(or=wt.length))for(var zt=-1,or;++zt<or;)tt=Math.max(tt,Be(wt[zt]));return 1+tt}function Ue(We,wt){var tt=Z.call(this,We,wt);return we(tt[0],0,oe[0],oe[1]/Be(tt[0])),tt}return Ue.size=function(We){return arguments.length?(oe=We,Ue):oe},Gu(Ue,Z)},e.layout.pie=function(){var Z=Number,oe=oh,we=0,Be=ht,Ue=0;function We(wt){var tt=wt.length,zt=wt.map(function(vi,ci){return+Z.call(We,vi,ci)}),or=+(typeof we=="function"?we.apply(this,arguments):we),lr=(typeof Be=="function"?Be.apply(this,arguments):Be)-or,Dr=Math.min(Math.abs(lr)/tt,+(typeof Ue=="function"?Ue.apply(this,arguments):Ue)),Ir=Dr*(lr<0?-1:1),oi=e.sum(zt),ui=oi?(lr-tt*Ir)/oi:0,qr=e.range(tt),Kr=[],ii;return oe!=null&&qr.sort(oe===oh?function(vi,ci){return zt[ci]-zt[vi]}:function(vi,ci){return oe(wt[vi],wt[ci])}),qr.forEach(function(vi){Kr[vi]={data:wt[vi],value:ii=zt[vi],startAngle:or,endAngle:or+=ii*ui+Ir,padAngle:Dr}}),Kr}return We.value=function(wt){return arguments.length?(Z=wt,We):Z},We.sort=function(wt){return arguments.length?(oe=wt,We):oe},We.startAngle=function(wt){return arguments.length?(we=wt,We):we},We.endAngle=function(wt){return arguments.length?(Be=wt,We):Be},We.padAngle=function(wt){return arguments.length?(Ue=wt,We):Ue},We};var oh={};e.layout.stack=function(){var Z=H,oe=_u,we=xu,Be=md,Ue=ru,We=vf;function wt(tt,zt){if(!(ui=tt.length))return tt;var or=tt.map(function(vi,ci){return Z.call(wt,vi,ci)}),lr=or.map(function(vi){return vi.map(function(ci,Jr){return[Ue.call(wt,ci,Jr),We.call(wt,ci,Jr)]})}),Dr=oe.call(wt,lr,zt);or=e.permute(or,Dr),lr=e.permute(lr,Dr);var Ir=we.call(wt,lr,zt),oi=or[0].length,ui,qr,Kr,ii;for(Kr=0;Kr<oi;++Kr)for(Be.call(wt,or[0][Kr],ii=Ir[Kr],lr[0][Kr][1]),qr=1;qr<ui;++qr)Be.call(wt,or[qr][Kr],ii+=lr[qr-1][Kr][1],lr[qr][Kr][1]);return tt}return wt.values=function(tt){return arguments.length?(Z=tt,wt):Z},wt.order=function(tt){return arguments.length?(oe=typeof tt=="function"?tt:sh.get(tt)||_u,wt):oe},wt.offset=function(tt){return arguments.length?(we=typeof tt=="function"?tt:Fs.get(tt)||xu,wt):we},wt.x=function(tt){return arguments.length?(Ue=tt,wt):Ue},wt.y=function(tt){return arguments.length?(We=tt,wt):We},wt.out=function(tt){return arguments.length?(Be=tt,wt):Be},wt};function ru(Z){return Z.x}function vf(Z){return Z.y}function md(Z,oe,we){Z.y0=oe,Z.y=we}var sh=e.map({"inside-out":function(Z){var oe=Z.length,we,Be,Ue=Z.map(Lh),We=Z.map(Is),wt=e.range(oe).sort(function(Dr,Ir){return Ue[Dr]-Ue[Ir]}),tt=0,zt=0,or=[],lr=[];for(we=0;we<oe;++we)Be=wt[we],tt<zt?(tt+=We[Be],or.push(Be)):(zt+=We[Be],lr.push(Be));return lr.reverse().concat(or)},reverse:function(Z){return e.range(Z.length).reverse()},default:_u}),Fs=e.map({silhouette:function(Z){var oe=Z.length,we=Z[0].length,Be=[],Ue=0,We,wt,tt,zt=[];for(wt=0;wt<we;++wt){for(We=0,tt=0;We<oe;We++)tt+=Z[We][wt][1];tt>Ue&&(Ue=tt),Be.push(tt)}for(wt=0;wt<we;++wt)zt[wt]=(Ue-Be[wt])/2;return zt},wiggle:function(Z){var oe=Z.length,we=Z[0],Be=we.length,Ue,We,wt,tt,zt,or,lr,Dr,Ir,oi=[];for(oi[0]=Dr=Ir=0,We=1;We<Be;++We){for(Ue=0,tt=0;Ue<oe;++Ue)tt+=Z[Ue][We][1];for(Ue=0,zt=0,lr=we[We][0]-we[We-1][0];Ue<oe;++Ue){for(wt=0,or=(Z[Ue][We][1]-Z[Ue][We-1][1])/(2*lr);wt<Ue;++wt)or+=(Z[wt][We][1]-Z[wt][We-1][1])/lr;zt+=or*Z[Ue][We][1]}oi[We]=Dr-=tt?zt/tt*lr:0,Dr<Ir&&(Ir=Dr)}for(We=0;We<Be;++We)oi[We]-=Ir;return oi},expand:function(Z){var oe=Z.length,we=Z[0].length,Be=1/oe,Ue,We,wt,tt=[];for(We=0;We<we;++We){for(Ue=0,wt=0;Ue<oe;Ue++)wt+=Z[Ue][We][1];if(wt)for(Ue=0;Ue<oe;Ue++)Z[Ue][We][1]/=wt;else for(Ue=0;Ue<oe;Ue++)Z[Ue][We][1]=Be}for(We=0;We<we;++We)tt[We]=0;return tt},zero:xu});function _u(Z){return e.range(Z.length)}function xu(Z){for(var oe=-1,we=Z[0].length,Be=[];++oe<we;)Be[oe]=0;return Be}function Lh(Z){for(var oe=1,we=0,Be=Z[0][1],Ue,We=Z.length;oe<We;++oe)(Ue=Z[oe][1])>Be&&(we=oe,Be=Ue);return we}function Is(Z){return Z.reduce(Pf,0)}function Pf(Z,oe){return Z+oe[1]}e.layout.histogram=function(){var Z=!0,oe=Number,we=Vf,Be=Ic;function Ue(We,Ir){for(var tt=[],zt=We.map(oe,this),or=we.call(this,zt,Ir),lr=Be.call(this,or,zt,Ir),Dr,Ir=-1,oi=zt.length,ui=lr.length-1,qr=Z?1:1/oi,Kr;++Ir<ui;)Dr=tt[Ir]=[],Dr.dx=lr[Ir+1]-(Dr.x=lr[Ir]),Dr.y=0;if(ui>0)for(Ir=-1;++Ir<oi;)Kr=zt[Ir],Kr>=or[0]&&Kr<=or[1]&&(Dr=tt[e.bisect(lr,Kr,1,ui)-1],Dr.y+=qr,Dr.push(We[Ir]));return tt}return Ue.value=function(We){return arguments.length?(oe=We,Ue):oe},Ue.range=function(We){return arguments.length?(we=ti(We),Ue):we},Ue.bins=function(We){return arguments.length?(Be=typeof We=="number"?function(wt){return ju(wt,We)}:ti(We),Ue):Be},Ue.frequency=function(We){return arguments.length?(Z=!!We,Ue):Z},Ue};function Ic(Z,oe){return ju(Z,Math.ceil(Math.log(oe.length)/Math.LN2+1))}function ju(Z,oe){for(var we=-1,Be=+Z[0],Ue=(Z[1]-Be)/oe,We=[];++we<=oe;)We[we]=Ue*we+Be;return We}function Vf(Z){return[e.min(Z),e.max(Z)]}e.layout.pack=function(){var Z=e.layout.hierarchy().sort(pc),oe=0,we=[1,1],Be;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or=we[0],lr=we[1],Dr=Be==null?Math.sqrt:typeof Be=="function"?Be:function(){return Be};if(zt.x=zt.y=0,vc(zt,function(oi){oi.r=+Dr(oi.value)}),vc(zt,Ih),oe){var Ir=oe*(Be?1:Math.max(2*zt.r/or,2*zt.r/lr))/2;vc(zt,function(oi){oi.r+=Ir}),vc(zt,Ih),vc(zt,function(oi){oi.r-=Ir})}return gc(zt,or/2,lr/2,Be?1:1/Math.max(2*zt.r/or,2*zt.r/lr)),tt}return Ue.size=function(We){return arguments.length?(we=We,Ue):we},Ue.radius=function(We){return arguments.length?(Be=We==null||typeof We=="function"?We:+We,Ue):Be},Ue.padding=function(We){return arguments.length?(oe=+We,Ue):oe},Gu(Ue,Z)};function pc(Z,oe){return Z.value-oe.value}function pf(Z,oe){var we=Z._pack_next;Z._pack_next=oe,oe._pack_prev=Z,oe._pack_next=we,we._pack_prev=oe}function Ph(Z,oe){Z._pack_next=oe,oe._pack_prev=Z}function Dl(Z,oe){var we=oe.x-Z.x,Be=oe.y-Z.y,Ue=Z.r+oe.r;return .999*Ue*Ue>we*we+Be*Be}function Ih(Z){if(!(oe=Z.children)||!(Ir=oe.length))return;var oe,we=1/0,Be=-1/0,Ue=1/0,We=-1/0,wt,tt,zt,or,lr,Dr,Ir;function oi(Jr){we=Math.min(Jr.x-Jr.r,we),Be=Math.max(Jr.x+Jr.r,Be),Ue=Math.min(Jr.y-Jr.r,Ue),We=Math.max(Jr.y+Jr.r,We)}if(oe.forEach(Wu),wt=oe[0],wt.x=-wt.r,wt.y=0,oi(wt),Ir>1&&(tt=oe[1],tt.x=tt.r,tt.y=0,oi(tt),Ir>2))for(zt=oe[2],hl(wt,tt,zt),oi(zt),pf(wt,zt),wt._pack_prev=zt,pf(zt,tt),tt=wt._pack_next,or=3;or<Ir;or++){hl(wt,tt,zt=oe[or]);var ui=0,qr=1,Kr=1;for(lr=tt._pack_next;lr!==tt;lr=lr._pack_next,qr++)if(Dl(lr,zt)){ui=1;break}if(ui==1)for(Dr=wt._pack_prev;Dr!==lr._pack_prev&&!Dl(Dr,zt);Dr=Dr._pack_prev,Kr++);ui?(qr<Kr||qr==Kr&&tt.r<wt.r?Ph(wt,tt=lr):Ph(wt=Dr,tt),or--):(pf(wt,zt),tt=zt,oi(zt))}var ii=(we+Be)/2,vi=(Ue+We)/2,ci=0;for(or=0;or<Ir;or++)zt=oe[or],zt.x-=ii,zt.y-=vi,ci=Math.max(ci,zt.r+Math.sqrt(zt.x*zt.x+zt.y*zt.y));Z.r=ci,oe.forEach(Rc)}function Wu(Z){Z._pack_next=Z._pack_prev=Z}function Rc(Z){delete Z._pack_next,delete Z._pack_prev}function gc(Z,oe,we,Be){var Ue=Z.children;if(Z.x=oe+=Be*Z.x,Z.y=we+=Be*Z.y,Z.r*=Be,Ue)for(var We=-1,wt=Ue.length;++We<wt;)gc(Ue[We],oe,we,Be)}function hl(Z,oe,we){var Be=Z.r+we.r,Ue=oe.x-Z.x,We=oe.y-Z.y;if(Be&&(Ue||We)){var wt=oe.r+we.r,tt=Ue*Ue+We*We;wt*=wt,Be*=Be;var zt=.5+(Be-wt)/(2*tt),or=Math.sqrt(Math.max(0,2*wt*(Be+tt)-(Be-=tt)*Be-wt*wt))/(2*tt);we.x=Z.x+zt*Ue+or*We,we.y=Z.y+zt*We-or*Ue}else we.x=Z.x+Be,we.y=Z.y}e.layout.tree=function(){var Z=e.layout.hierarchy().sort(null).value(null),oe=iu,we=[1,1],Be=null;function Ue(lr,Dr){var Ir=Z.call(this,lr,Dr),oi=Ir[0],ui=We(oi);if(vc(ui,wt),ui.parent.m=-ui.z,Pc(ui,tt),Be)Pc(oi,or);else{var qr=oi,Kr=oi,ii=oi;Pc(oi,function(un){un.x<qr.x&&(qr=un),un.x>Kr.x&&(Kr=un),un.depth>ii.depth&&(ii=un)});var vi=oe(qr,Kr)/2-qr.x,ci=we[0]/(Kr.x+oe(Kr,qr)/2+vi),Jr=we[1]/(ii.depth||1);Pc(oi,function(un){un.x=(un.x+vi)*ci,un.y=un.depth*Jr})}return Ir}function We(lr){for(var Dr={A:null,children:[lr]},Ir=[Dr],oi;(oi=Ir.pop())!=null;)for(var ui=oi.children,qr,Kr=0,ii=ui.length;Kr<ii;++Kr)Ir.push((ui[Kr]=qr={_:ui[Kr],parent:oi,children:(qr=ui[Kr].children)&&qr.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:Kr}).a=qr);return Dr.children[0]}function wt(lr){var Dr=lr.children,Ir=lr.parent.children,oi=lr.i?Ir[lr.i-1]:null;if(Dr.length){gf(lr);var ui=(Dr[0].z+Dr[Dr.length-1].z)/2;oi?(lr.z=oi.z+oe(lr._,oi._),lr.m=lr.z-ui):lr.z=ui}else oi&&(lr.z=oi.z+oe(lr._,oi._));lr.parent.A=zt(lr,oi,lr.parent.A||Ir[0])}function tt(lr){lr._.x=lr.z+lr.parent.m,lr.m+=lr.parent.m}function zt(lr,Dr,Ir){if(Dr){for(var oi=lr,ui=lr,qr=Dr,Kr=oi.parent.children[0],ii=oi.m,vi=ui.m,ci=qr.m,Jr=Kr.m,un;qr=Yc(qr),oi=mc(oi),qr&&oi;)Kr=mc(Kr),ui=Yc(ui),ui.a=lr,un=qr.z+ci-oi.z-ii+oe(qr._,oi._),un>0&&(nc(gt(qr,lr,Ir),lr,un),ii+=un,vi+=un),ci+=qr.m,ii+=oi.m,Jr+=Kr.m,vi+=ui.m;qr&&!Yc(ui)&&(ui.t=qr,ui.m+=ci-vi),oi&&!mc(Kr)&&(Kr.t=oi,Kr.m+=ii-Jr,Ir=lr)}return Ir}function or(lr){lr.x*=we[0],lr.y=lr.depth*we[1]}return Ue.separation=function(lr){return arguments.length?(oe=lr,Ue):oe},Ue.size=function(lr){return arguments.length?(Be=(we=lr)==null?or:null,Ue):Be?null:we},Ue.nodeSize=function(lr){return arguments.length?(Be=(we=lr)==null?null:or,Ue):Be?we:null},Gu(Ue,Z)};function iu(Z,oe){return Z.parent==oe.parent?1:2}function mc(Z){var oe=Z.children;return oe.length?oe[0]:Z.t}function Yc(Z){var oe=Z.children,we;return(we=oe.length)?oe[we-1]:Z.t}function nc(Z,oe,we){var Be=we/(oe.i-Z.i);oe.c-=Be,oe.s+=we,Z.c+=Be,oe.z+=we,oe.m+=we}function gf(Z){for(var oe=0,we=0,Be=Z.children,Ue=Be.length,We;--Ue>=0;)We=Be[Ue],We.z+=oe,We.m+=oe,oe+=We.s+(we+=We.c)}function gt(Z,oe,we){return Z.a.parent===oe.parent?Z.a:we}e.layout.cluster=function(){var Z=e.layout.hierarchy().sort(null).value(null),oe=iu,we=[1,1],Be=!1;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or,lr=0;vc(zt,function(qr){var Kr=qr.children;Kr&&Kr.length?(qr.x=wr(Kr),qr.y=Bt(Kr)):(qr.x=or?lr+=oe(qr,or):0,qr.y=0,or=qr)});var Dr=vr(zt),Ir=Ur(zt),oi=Dr.x-oe(Dr,Ir)/2,ui=Ir.x+oe(Ir,Dr)/2;return vc(zt,Be?function(qr){qr.x=(qr.x-zt.x)*we[0],qr.y=(zt.y-qr.y)*we[1]}:function(qr){qr.x=(qr.x-oi)/(ui-oi)*we[0],qr.y=(1-(zt.y?qr.y/zt.y:1))*we[1]}),tt}return Ue.separation=function(We){return arguments.length?(oe=We,Ue):oe},Ue.size=function(We){return arguments.length?(Be=(we=We)==null,Ue):Be?null:we},Ue.nodeSize=function(We){return arguments.length?(Be=(we=We)!=null,Ue):Be?we:null},Gu(Ue,Z)};function Bt(Z){return 1+e.max(Z,function(oe){return oe.y})}function wr(Z){return Z.reduce(function(oe,we){return oe+we.x},0)/Z.length}function vr(Z){var oe=Z.children;return oe&&oe.length?vr(oe[0]):Z}function Ur(Z){var oe=Z.children,we;return oe&&(we=oe.length)?Ur(oe[we-1]):Z}e.layout.treemap=function(){var Z=e.layout.hierarchy(),oe=Math.round,we=[1,1],Be=null,Ue=fi,We=!1,wt,tt="squarify",zt=.5*(1+Math.sqrt(5));function or(qr,Kr){for(var ii=-1,vi=qr.length,ci,Jr;++ii<vi;)Jr=(ci=qr[ii]).value*(Kr<0?0:Kr),ci.area=isNaN(Jr)||Jr<=0?0:Jr}function lr(qr){var Kr=qr.children;if(Kr&&Kr.length){var ii=Ue(qr),vi=[],ci=Kr.slice(),Jr,un=1/0,dn,En=tt==="slice"?ii.dx:tt==="dice"?ii.dy:tt==="slice-dice"?qr.depth&1?ii.dy:ii.dx:Math.min(ii.dx,ii.dy),Nn;for(or(ci,ii.dx*ii.dy/qr.value),vi.area=0;(Nn=ci.length)>0;)vi.push(Jr=ci[Nn-1]),vi.area+=Jr.area,tt!=="squarify"||(dn=Ir(vi,En))<=un?(ci.pop(),un=dn):(vi.area-=vi.pop().area,oi(vi,En,ii,!1),En=Math.min(ii.dx,ii.dy),vi.length=vi.area=0,un=1/0);vi.length&&(oi(vi,En,ii,!0),vi.length=vi.area=0),Kr.forEach(lr)}}function Dr(qr){var Kr=qr.children;if(Kr&&Kr.length){var ii=Ue(qr),vi=Kr.slice(),ci,Jr=[];for(or(vi,ii.dx*ii.dy/qr.value),Jr.area=0;ci=vi.pop();)Jr.push(ci),Jr.area+=ci.area,ci.z!=null&&(oi(Jr,ci.z?ii.dx:ii.dy,ii,!vi.length),Jr.length=Jr.area=0);Kr.forEach(Dr)}}function Ir(qr,Kr){for(var ii=qr.area,vi,ci=0,Jr=1/0,un=-1,dn=qr.length;++un<dn;)(vi=qr[un].area)&&(vi<Jr&&(Jr=vi),vi>ci&&(ci=vi));return ii*=ii,Kr*=Kr,ii?Math.max(Kr*ci*zt/ii,ii/(Kr*Jr*zt)):1/0}function oi(qr,Kr,ii,vi){var ci=-1,Jr=qr.length,un=ii.x,dn=ii.y,En=Kr?oe(qr.area/Kr):0,Nn;if(Kr==ii.dx){for((vi||En>ii.dy)&&(En=ii.dy);++ci<Jr;)Nn=qr[ci],Nn.x=un,Nn.y=dn,Nn.dy=En,un+=Nn.dx=Math.min(ii.x+ii.dx-un,En?oe(Nn.area/En):0);Nn.z=!0,Nn.dx+=ii.x+ii.dx-un,ii.y+=En,ii.dy-=En}else{for((vi||En>ii.dx)&&(En=ii.dx);++ci<Jr;)Nn=qr[ci],Nn.x=un,Nn.y=dn,Nn.dx=En,dn+=Nn.dy=Math.min(ii.y+ii.dy-dn,En?oe(Nn.area/En):0);Nn.z=!1,Nn.dy+=ii.y+ii.dy-dn,ii.x+=En,ii.dx-=En}}function ui(qr){var Kr=wt||Z(qr),ii=Kr[0];return ii.x=ii.y=0,ii.value?(ii.dx=we[0],ii.dy=we[1]):ii.dx=ii.dy=0,wt&&Z.revalue(ii),or([ii],ii.dx*ii.dy/ii.value),(wt?Dr:lr)(ii),We&&(wt=Kr),Kr}return ui.size=function(qr){return arguments.length?(we=qr,ui):we},ui.padding=function(qr){if(!arguments.length)return Be;function Kr(ci){var Jr=qr.call(ui,ci,ci.depth);return Jr==null?fi(ci):xi(ci,typeof Jr=="number"?[Jr,Jr,Jr,Jr]:Jr)}function ii(ci){return xi(ci,qr)}var vi;return Ue=(Be=qr)==null?fi:(vi=typeof qr)=="function"?Kr:(vi==="number"&&(qr=[qr,qr,qr,qr]),ii),ui},ui.round=function(qr){return arguments.length?(oe=qr?Math.round:Number,ui):oe!=Number},ui.sticky=function(qr){return arguments.length?(We=qr,wt=null,ui):We},ui.ratio=function(qr){return arguments.length?(zt=qr,ui):zt},ui.mode=function(qr){return arguments.length?(tt=qr+"",ui):tt},Gu(ui,Z)};function fi(Z){return{x:Z.x,y:Z.y,dx:Z.dx,dy:Z.dy}}function xi(Z,oe){var we=Z.x+oe[3],Be=Z.y+oe[0],Ue=Z.dx-oe[1]-oe[3],We=Z.dy-oe[0]-oe[2];return Ue<0&&(we+=Ue/2,Ue=0),We<0&&(Be+=We/2,We=0),{x:we,y:Be,dx:Ue,dy:We}}e.random={normal:function(Z,oe){var we=arguments.length;return we<2&&(oe=1),we<1&&(Z=0),function(){var Be,Ue,We;do Be=Math.random()*2-1,Ue=Math.random()*2-1,We=Be*Be+Ue*Ue;while(!We||We>1);return Z+oe*Be*Math.sqrt(-2*Math.log(We)/We)}},logNormal:function(){var Z=e.random.normal.apply(e,arguments);return function(){return Math.exp(Z())}},bates:function(Z){var oe=e.random.irwinHall(Z);return function(){return oe()/Z}},irwinHall:function(Z){return function(){for(var oe=0,we=0;we<Z;we++)oe+=Math.random();return oe}}},e.scale={};function Fi(Z){var oe=Z[0],we=Z[Z.length-1];return oe<we?[oe,we]:[we,oe]}function Xi(Z){return Z.rangeExtent?Z.rangeExtent():Fi(Z.range())}function hn(Z,oe,we,Be){var Ue=we(Z[0],Z[1]),We=Be(oe[0],oe[1]);return function(wt){return We(Ue(wt))}}function Ti(Z,oe){var we=0,Be=Z.length-1,Ue=Z[we],We=Z[Be],wt;return We<Ue&&(wt=we,we=Be,Be=wt,wt=Ue,Ue=We,We=wt),Z[we]=oe.floor(Ue),Z[Be]=oe.ceil(We),Z}function qi(Z){return Z?{floor:function(oe){return Math.floor(oe/Z)*Z},ceil:function(oe){return Math.ceil(oe/Z)*Z}}:Ii}var Ii={floor:H,ceil:H};function mi(Z,oe,we,Be){var Ue=[],We=[],wt=0,tt=Math.min(Z.length,oe.length)-1;for(Z[tt]<Z[0]&&(Z=Z.slice().reverse(),oe=oe.slice().reverse());++wt<=tt;)Ue.push(we(Z[wt-1],Z[wt])),We.push(Be(oe[wt-1],oe[wt]));return function(zt){var or=e.bisect(Z,zt,1,tt)-1;return We[or](Ue[or](zt))}}e.scale.linear=function(){return Pn([0,1],[0,1],Sl,!1)};function Pn(Z,oe,we,Be){var Ue,We;function wt(){var zt=Math.min(Z.length,oe.length)>2?mi:hn,or=Be?Lu:pd;return Ue=zt(Z,oe,or,we),We=zt(oe,Z,or,Sl),tt}function tt(zt){return Ue(zt)}return tt.invert=function(zt){return We(zt)},tt.domain=function(zt){return arguments.length?(Z=zt.map(Number),wt()):Z},tt.range=function(zt){return arguments.length?(oe=zt,wt()):oe},tt.rangeRound=function(zt){return tt.range(zt).interpolate(rc)},tt.clamp=function(zt){return arguments.length?(Be=zt,wt()):Be},tt.interpolate=function(zt){return arguments.length?(we=zt,wt()):we},tt.ticks=function(zt){return qa(Z,zt)},tt.tickFormat=function(zt,or){return d3_scale_linearTickFormat(Z,zt,or)},tt.nice=function(zt){return Ta(Z,zt),wt()},tt.copy=function(){return Pn(Z,oe,we,Be)},wt()}function Ma(Z,oe){return e.rebind(Z,oe,"range","rangeRound","interpolate","clamp")}function Ta(Z,oe){return Ti(Z,qi(Ea(Z,oe)[2])),Ti(Z,qi(Ea(Z,oe)[2])),Z}function Ea(Z,oe){oe==null&&(oe=10);var we=Fi(Z),Be=we[1]-we[0],Ue=Math.pow(10,Math.floor(Math.log(Be/oe)/Math.LN10)),We=oe/Be*Ue;return We<=.15?Ue*=10:We<=.35?Ue*=5:We<=.75&&(Ue*=2),we[0]=Math.ceil(we[0]/Ue)*Ue,we[1]=Math.floor(we[1]/Ue)*Ue+Ue*.5,we[2]=Ue,we}function qa(Z,oe){return e.range.apply(e,Ea(Z,oe))}var Cn={s:1,g:1,p:1,r:1,e:1};function sn(Z){return-Math.floor(Math.log(Z)/Math.LN10+.01)}function Ua(Z,oe){var we=sn(oe[2]);return Z in Cn?Math.abs(we-sn(Math.max(p(oe[0]),p(oe[1]))))+ +(Z!=="e"):we-(Z==="%")*2}e.scale.log=function(){return mo(e.scale.linear().domain([0,1]),10,!0,[1,10])};function mo(Z,oe,we,Be){function Ue(tt){return(we?Math.log(tt<0?0:tt):-Math.log(tt>0?0:-tt))/Math.log(oe)}function We(tt){return we?Math.pow(oe,tt):-Math.pow(oe,-tt)}function wt(tt){return Z(Ue(tt))}return wt.invert=function(tt){return We(Z.invert(tt))},wt.domain=function(tt){return arguments.length?(we=tt[0]>=0,Z.domain((Be=tt.map(Number)).map(Ue)),wt):Be},wt.base=function(tt){return arguments.length?(oe=+tt,Z.domain(Be.map(Ue)),wt):oe},wt.nice=function(){var tt=Ti(Be.map(Ue),we?Math:Xo);return Z.domain(tt),Be=tt.map(We),wt},wt.ticks=function(){var tt=Fi(Be),zt=[],or=tt[0],lr=tt[1],Dr=Math.floor(Ue(or)),Ir=Math.ceil(Ue(lr)),oi=oe%1?2:oe;if(isFinite(Ir-Dr)){if(we){for(;Dr<Ir;Dr++)for(var ui=1;ui<oi;ui++)zt.push(We(Dr)*ui);zt.push(We(Dr))}else for(zt.push(We(Dr));Dr++<Ir;)for(var ui=oi-1;ui>0;ui--)zt.push(We(Dr)*ui);for(Dr=0;zt[Dr]<or;Dr++);for(Ir=zt.length;zt[Ir-1]>lr;Ir--);zt=zt.slice(Dr,Ir)}return zt},wt.copy=function(){return mo(Z.copy(),oe,we,Be)},Ma(wt,Z)}var Xo={floor:function(Z){return-Math.ceil(-Z)},ceil:function(Z){return-Math.floor(-Z)}};e.scale.pow=function(){return Ts(e.scale.linear(),1,[0,1])};function Ts(Z,oe,we){var Be=Qo(oe),Ue=Qo(1/oe);function We(wt){return Z(Be(wt))}return We.invert=function(wt){return Ue(Z.invert(wt))},We.domain=function(wt){return arguments.length?(Z.domain((we=wt.map(Number)).map(Be)),We):we},We.ticks=function(wt){return qa(we,wt)},We.tickFormat=function(wt,tt){return d3_scale_linearTickFormat(we,wt,tt)},We.nice=function(wt){return We.domain(Ta(we,wt))},We.exponent=function(wt){return arguments.length?(Be=Qo(oe=wt),Ue=Qo(1/oe),Z.domain(we.map(Be)),We):oe},We.copy=function(){return Ts(Z.copy(),oe,we)},Ma(We,Z)}function Qo(Z){return function(oe){return oe<0?-Math.pow(-oe,Z):Math.pow(oe,Z)}}e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ys([],{t:"range",a:[[]]})};function ys(Z,oe){var we,Be,Ue;function We(tt){return Be[((we.get(tt)||(oe.t==="range"?we.set(tt,Z.push(tt)):NaN))-1)%Be.length]}function wt(tt,zt){return e.range(Z.length).map(function(or){return tt+zt*or})}return We.domain=function(tt){if(!arguments.length)return Z;Z=[],we=new A;for(var zt=-1,or=tt.length,lr;++zt<or;)we.has(lr=tt[zt])||we.set(lr,Z.push(lr));return We[oe.t].apply(We,oe.a)},We.range=function(tt){return arguments.length?(Be=tt,Ue=0,oe={t:"range",a:arguments},We):Be},We.rangePoints=function(tt,zt){arguments.length<2&&(zt=0);var or=tt[0],lr=tt[1],Dr=Z.length<2?(or=(or+lr)/2,0):(lr-or)/(Z.length-1+zt);return Be=wt(or+Dr*zt/2,Dr),Ue=0,oe={t:"rangePoints",a:arguments},We},We.rangeRoundPoints=function(tt,zt){arguments.length<2&&(zt=0);var or=tt[0],lr=tt[1],Dr=Z.length<2?(or=lr=Math.round((or+lr)/2),0):(lr-or)/(Z.length-1+zt)|0;return Be=wt(or+Math.round(Dr*zt/2+(lr-or-(Z.length-1+zt)*Dr)/2),Dr),Ue=0,oe={t:"rangeRoundPoints",a:arguments},We},We.rangeBands=function(tt,zt,or){arguments.length<2&&(zt=0),arguments.length<3&&(or=zt);var lr=tt[1]<tt[0],Dr=tt[lr-0],Ir=tt[1-lr],oi=(Ir-Dr)/(Z.length-zt+2*or);return Be=wt(Dr+oi*or,oi),lr&&Be.reverse(),Ue=oi*(1-zt),oe={t:"rangeBands",a:arguments},We},We.rangeRoundBands=function(tt,zt,or){arguments.length<2&&(zt=0),arguments.length<3&&(or=zt);var lr=tt[1]<tt[0],Dr=tt[lr-0],Ir=tt[1-lr],oi=Math.floor((Ir-Dr)/(Z.length-zt+2*or));return Be=wt(Dr+Math.round((Ir-Dr-(Z.length-zt)*oi)/2),oi),lr&&Be.reverse(),Ue=Math.round(oi*(1-zt)),oe={t:"rangeRoundBands",a:arguments},We},We.rangeBand=function(){return Ue},We.rangeExtent=function(){return Fi(oe.a[0])},We.copy=function(){return ys(Z,oe)},We.domain(Z)}e.scale.category10=function(){return e.scale.ordinal().range(Bo)},e.scale.category20=function(){return e.scale.ordinal().range(yl)},e.scale.category20b=function(){return e.scale.ordinal().range(Gs)},e.scale.category20c=function(){return e.scale.ordinal().range(Rs)};var Bo=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(jo),yl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(jo),Gs=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(jo),Rs=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(jo);e.scale.quantile=function(){return ia([],[])};function ia(Z,oe){var we;function Be(){var We=0,wt=oe.length;for(we=[];++We<wt;)we[We-1]=e.quantile(Z,We/wt);return Ue}function Ue(We){if(!isNaN(We=+We))return oe[e.bisect(we,We)]}return Ue.domain=function(We){return arguments.length?(Z=We.map(h).filter(d).sort(f),Be()):Z},Ue.range=function(We){return arguments.length?(oe=We,Be()):oe},Ue.quantiles=function(){return we},Ue.invertExtent=function(We){return We=oe.indexOf(We),We<0?[NaN,NaN]:[We>0?we[We-1]:Z[0],We<we.length?we[We]:Z[Z.length-1]]},Ue.copy=function(){return ia(Z,oe)},Be()}e.scale.quantize=function(){return Ka(0,1,[0,1])};function Ka(Z,oe,we){var Be,Ue;function We(tt){return we[Math.max(0,Math.min(Ue,Math.floor(Be*(tt-Z))))]}function wt(){return Be=we.length/(oe-Z),Ue=we.length-1,We}return We.domain=function(tt){return arguments.length?(Z=+tt[0],oe=+tt[tt.length-1],wt()):[Z,oe]},We.range=function(tt){return arguments.length?(we=tt,wt()):we},We.invertExtent=function(tt){return tt=we.indexOf(tt),tt=tt<0?NaN:tt/Be+Z,[tt,tt+1/Be]},We.copy=function(){return Ka(Z,oe,we)},wt()}e.scale.threshold=function(){return vs([.5],[0,1])};function vs(Z,oe){function we(Be){if(Be<=Be)return oe[e.bisect(Z,Be)]}return we.domain=function(Be){return arguments.length?(Z=Be,we):Z},we.range=function(Be){return arguments.length?(oe=Be,we):oe},we.invertExtent=function(Be){return Be=oe.indexOf(Be),[Z[Be-1],Z[Be]]},we.copy=function(){return vs(Z,oe)},we}e.scale.identity=function(){return Ko([0,1])};function Ko(Z){function oe(we){return+we}return oe.invert=oe,oe.domain=oe.range=function(we){return arguments.length?(Z=we.map(oe),oe):Z},oe.ticks=function(we){return qa(Z,we)},oe.tickFormat=function(we,Be){return d3_scale_linearTickFormat(Z,we,Be)},oe.copy=function(){return Ko(Z)},oe}e.svg={};function nu(){return 0}e.svg.arc=function(){var Z=ac,oe=mf,we=nu,Be=Ru,Ue=bu,We=Kc,wt=Du;function tt(){var or=Math.max(0,+Z.apply(this,arguments)),lr=Math.max(0,+oe.apply(this,arguments)),Dr=Ue.apply(this,arguments)-xe,Ir=We.apply(this,arguments)-xe,oi=Math.abs(Ir-Dr),ui=Dr>Ir?0:1;if(lr<or&&(qr=lr,lr=or,or=qr),oi>=Le)return zt(lr,ui)+(or?zt(or,1-ui):"")+"Z";var qr,Kr,ii,vi,ci=0,Jr=0,un,dn,En,Nn,ga,ya,so,wa,io=[];if((vi=(+wt.apply(this,arguments)||0)/2)&&(ii=Be===Ru?Math.sqrt(or*or+lr*lr):+Be.apply(this,arguments),ui||(Jr*=-1),lr&&(Jr=Qr(ii/lr*Math.sin(vi))),or&&(ci=Qr(ii/or*Math.sin(vi)))),lr){un=lr*Math.cos(Dr+Jr),dn=lr*Math.sin(Dr+Jr),En=lr*Math.cos(Ir-Jr),Nn=lr*Math.sin(Ir-Jr);var Ss=Math.abs(Ir-Dr-2*Jr)<=Xe?0:1;if(Jr&&Dc(un,dn,En,Nn)===ui^Ss){var _s=(Dr+Ir)/2;un=lr*Math.cos(_s),dn=lr*Math.sin(_s),En=Nn=null}}else un=dn=0;if(or){ga=or*Math.cos(Ir-ci),ya=or*Math.sin(Ir-ci),so=or*Math.cos(Dr+ci),wa=or*Math.sin(Dr+ci);var Ns=Math.abs(Dr-Ir+2*ci)<=Xe?0:1;if(ci&&Dc(ga,ya,so,wa)===1-ui^Ns){var pn=(Dr+Ir)/2;ga=or*Math.cos(pn),ya=or*Math.sin(pn),so=wa=null}}else ga=ya=0;if(oi>Ye&&(qr=Math.min(Math.abs(lr-or)/2,+we.apply(this,arguments)))>.001){Kr=or<lr^ui?0:1;var za=qr,Lo=qr;if(oi<Xe){var Fo=so==null?[ga,ya]:En==null?[un,dn]:cl([un,dn],[so,wa],[En,Nn],[ga,ya]),js=un-Fo[0],xl=dn-Fo[1],fu=En-Fo[0],dl=Nn-Fo[1],xc=1/Math.sin(Math.acos((js*fu+xl*dl)/(Math.sqrt(js*js+xl*xl)*Math.sqrt(fu*fu+dl*dl)))/2),At=Math.sqrt(Fo[0]*Fo[0]+Fo[1]*Fo[1]);Lo=Math.min(qr,(or-At)/(xc-1)),za=Math.min(qr,(lr-At)/(xc+1))}if(En!=null){var Er=Da(so==null?[ga,ya]:[so,wa],[un,dn],lr,za,ui),Wr=Da([En,Nn],[ga,ya],lr,za,ui);qr===za?io.push("M",Er[0],"A",za,",",za," 0 0,",Kr," ",Er[1],"A",lr,",",lr," 0 ",1-ui^Dc(Er[1][0],Er[1][1],Wr[1][0],Wr[1][1]),",",ui," ",Wr[1],"A",za,",",za," 0 0,",Kr," ",Wr[0]):io.push("M",Er[0],"A",za,",",za," 0 1,",Kr," ",Wr[0])}else io.push("M",un,",",dn);if(so!=null){var wi=Da([un,dn],[so,wa],or,-Lo,ui),Ui=Da([ga,ya],En==null?[un,dn]:[En,Nn],or,-Lo,ui);qr===Lo?io.push("L",Ui[0],"A",Lo,",",Lo," 0 0,",Kr," ",Ui[1],"A",or,",",or," 0 ",ui^Dc(Ui[1][0],Ui[1][1],wi[1][0],wi[1][1]),",",1-ui," ",wi[1],"A",Lo,",",Lo," 0 0,",Kr," ",wi[0]):io.push("L",Ui[0],"A",Lo,",",Lo," 0 0,",Kr," ",wi[0])}else io.push("L",ga,",",ya)}else io.push("M",un,",",dn),En!=null&&io.push("A",lr,",",lr," 0 ",Ss,",",ui," ",En,",",Nn),io.push("L",ga,",",ya),so!=null&&io.push("A",or,",",or," 0 ",Ns,",",1-ui," ",so,",",wa);return io.push("Z"),io.join("")}function zt(or,lr){return"M0,"+or+"A"+or+","+or+" 0 1,"+lr+" 0,"+-or+"A"+or+","+or+" 0 1,"+lr+" 0,"+or}return tt.innerRadius=function(or){return arguments.length?(Z=ti(or),tt):Z},tt.outerRadius=function(or){return arguments.length?(oe=ti(or),tt):oe},tt.cornerRadius=function(or){return arguments.length?(we=ti(or),tt):we},tt.padRadius=function(or){return arguments.length?(Be=or==Ru?Ru:ti(or),tt):Be},tt.startAngle=function(or){return arguments.length?(Ue=ti(or),tt):Ue},tt.endAngle=function(or){return arguments.length?(We=ti(or),tt):We},tt.padAngle=function(or){return arguments.length?(wt=ti(or),tt):wt},tt.centroid=function(){var or=(+Z.apply(this,arguments)+ +oe.apply(this,arguments))/2,lr=(+Ue.apply(this,arguments)+ +We.apply(this,arguments))/2-xe;return[Math.cos(lr)*or,Math.sin(lr)*or]},tt};var Ru="auto";function ac(Z){return Z.innerRadius}function mf(Z){return Z.outerRadius}function bu(Z){return Z.startAngle}function Kc(Z){return Z.endAngle}function Du(Z){return Z&&Z.padAngle}function Dc(Z,oe,we,Be){return(Z-we)*oe-(oe-Be)*Z>0?0:1}function Da(Z,oe,we,Be,Ue){var We=Z[0]-oe[0],wt=Z[1]-oe[1],tt=(Ue?Be:-Be)/Math.sqrt(We*We+wt*wt),zt=tt*wt,or=-tt*We,lr=Z[0]+zt,Dr=Z[1]+or,Ir=oe[0]+zt,oi=oe[1]+or,ui=(lr+Ir)/2,qr=(Dr+oi)/2,Kr=Ir-lr,ii=oi-Dr,vi=Kr*Kr+ii*ii,ci=we-Be,Jr=lr*oi-Ir*Dr,un=(ii<0?-1:1)*Math.sqrt(Math.max(0,ci*ci*vi-Jr*Jr)),dn=(Jr*ii-Kr*un)/vi,En=(-Jr*Kr-ii*un)/vi,Nn=(Jr*ii+Kr*un)/vi,ga=(-Jr*Kr+ii*un)/vi,ya=dn-ui,so=En-qr,wa=Nn-ui,io=ga-qr;return ya*ya+so*so>wa*wa+io*io&&(dn=Nn,En=ga),[[dn-zt,En-or],[dn*we/ci,En*we/ci]]}function eo(){return!0}function Jc(Z){var oe=zs,we=ks,Be=eo,Ue=_c,We=Ue.key,wt=.7;function tt(zt){var or=[],lr=[],Dr=-1,Ir=zt.length,oi,ui=ti(oe),qr=ti(we);function Kr(){or.push("M",Ue(Z(lr),wt))}for(;++Dr<Ir;)Be.call(this,oi=zt[Dr],Dr)?lr.push([+ui.call(this,oi,Dr),+qr.call(this,oi,Dr)]):lr.length&&(Kr(),lr=[]);return lr.length&&Kr(),or.length?or.join(""):null}return tt.x=function(zt){return arguments.length?(oe=zt,tt):oe},tt.y=function(zt){return arguments.length?(we=zt,tt):we},tt.defined=function(zt){return arguments.length?(Be=zt,tt):Be},tt.interpolate=function(zt){return arguments.length?(typeof zt=="function"?We=Ue=zt:We=(Ue=yc.get(zt)||_c).key,tt):We},tt.tension=function(zt){return arguments.length?(wt=zt,tt):wt},tt}e.svg.line=function(){return Jc(H)};var yc=e.map({linear:_c,"linear-closed":le,step:w,"step-before":B,"step-after":Q,basis:yt,"basis-open":Ot,"basis-closed":Nt,bundle:hr,cardinal:qe,"cardinal-open":ee,"cardinal-closed":se,monotone:Mt});yc.forEach(function(Z,oe){oe.key=Z,oe.closed=/-closed$/.test(Z)});function _c(Z){return Z.length>1?Z.join("L"):Z+"Z"}function le(Z){return Z.join("L")+"Z"}function w(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe<we;)Ue.push("H",(Be[0]+(Be=Z[oe])[0])/2,"V",Be[1]);return we>1&&Ue.push("H",Be[0]),Ue.join("")}function B(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe<we;)Ue.push("V",(Be=Z[oe])[1],"H",Be[0]);return Ue.join("")}function Q(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe<we;)Ue.push("H",(Be=Z[oe])[0],"V",Be[1]);return Ue.join("")}function ee(Z,oe){return Z.length<4?_c(Z):Z[1]+je(Z.slice(1,-1),it(Z,oe))}function se(Z,oe){return Z.length<3?le(Z):Z[0]+je((Z.push(Z[0]),Z),it([Z[Z.length-2]].concat(Z,[Z[1]]),oe))}function qe(Z,oe){return Z.length<3?_c(Z):Z[0]+je(Z,it(Z,oe))}function je(Z,oe){if(oe.length<1||Z.length!=oe.length&&Z.length!=oe.length+2)return _c(Z);var we=Z.length!=oe.length,Be="",Ue=Z[0],We=Z[1],wt=oe[0],tt=wt,zt=1;if(we&&(Be+="Q"+(We[0]-wt[0]*2/3)+","+(We[1]-wt[1]*2/3)+","+We[0]+","+We[1],Ue=Z[1],zt=2),oe.length>1){tt=oe[1],We=Z[zt],zt++,Be+="C"+(Ue[0]+wt[0])+","+(Ue[1]+wt[1])+","+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1];for(var or=2;or<oe.length;or++,zt++)We=Z[zt],tt=oe[or],Be+="S"+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1]}if(we){var lr=Z[zt];Be+="Q"+(We[0]+tt[0]*2/3)+","+(We[1]+tt[1]*2/3)+","+lr[0]+","+lr[1]}return Be}function it(Z,oe){for(var we=[],Be=(1-oe)/2,Ue,We=Z[0],wt=Z[1],tt=1,zt=Z.length;++tt<zt;)Ue=We,We=wt,wt=Z[tt],we.push([Be*(wt[0]-Ue[0]),Be*(wt[1]-Ue[1])]);return we}function yt(Z){if(Z.length<3)return _c(Z);var oe=1,we=Z.length,Be=Z[0],Ue=Be[0],We=Be[1],wt=[Ue,Ue,Ue,(Be=Z[1])[0]],tt=[We,We,We,Be[1]],zt=[Ue,",",We,"L",Sr(Pe,wt),",",Sr(Pe,tt)];for(Z.push(Z[we-1]);++oe<=we;)Be=Z[oe],wt.shift(),wt.push(Be[0]),tt.shift(),tt.push(Be[1]),Oe(zt,wt,tt);return Z.pop(),zt.push("L",Be),zt.join("")}function Ot(Z){if(Z.length<4)return _c(Z);for(var oe=[],we=-1,Be=Z.length,Ue,We=[0],wt=[0];++we<3;)Ue=Z[we],We.push(Ue[0]),wt.push(Ue[1]);for(oe.push(Sr(Pe,We)+","+Sr(Pe,wt)),--we;++we<Be;)Ue=Z[we],We.shift(),We.push(Ue[0]),wt.shift(),wt.push(Ue[1]),Oe(oe,We,wt);return oe.join("")}function Nt(Z){for(var oe,we=-1,Be=Z.length,Ue=Be+4,We,wt=[],tt=[];++we<4;)We=Z[we%Be],wt.push(We[0]),tt.push(We[1]);for(oe=[Sr(Pe,wt),",",Sr(Pe,tt)],--we;++we<Ue;)We=Z[we%Be],wt.shift(),wt.push(We[0]),tt.shift(),tt.push(We[1]),Oe(oe,wt,tt);return oe.join("")}function hr(Z,oe){var we=Z.length-1;if(we)for(var Be=Z[0][0],Ue=Z[0][1],We=Z[we][0]-Be,wt=Z[we][1]-Ue,tt=-1,zt,or;++tt<=we;)zt=Z[tt],or=tt/we,zt[0]=oe*zt[0]+(1-oe)*(Be+or*We),zt[1]=oe*zt[1]+(1-oe)*(Ue+or*wt);return yt(Z)}function Sr(Z,oe){return Z[0]*oe[0]+Z[1]*oe[1]+Z[2]*oe[2]+Z[3]*oe[3]}var he=[0,2/3,1/3,0],be=[0,1/3,2/3,0],Pe=[0,1/6,2/3,1/6];function Oe(Z,oe,we){Z.push("C",Sr(he,oe),",",Sr(he,we),",",Sr(be,oe),",",Sr(be,we),",",Sr(Pe,oe),",",Sr(Pe,we))}function Je(Z,oe){return(oe[1]-Z[1])/(oe[0]-Z[0])}function He(Z){for(var oe=0,we=Z.length-1,Be=[],Ue=Z[0],We=Z[1],wt=Be[0]=Je(Ue,We);++oe<we;)Be[oe]=(wt+(wt=Je(Ue=We,We=Z[oe+1])))/2;return Be[oe]=wt,Be}function et(Z){for(var oe=[],we,Be,Ue,We,wt=He(Z),tt=-1,zt=Z.length-1;++tt<zt;)we=Je(Z[tt],Z[tt+1]),p(we)<Ye?wt[tt]=wt[tt+1]=0:(Be=wt[tt]/we,Ue=wt[tt+1]/we,We=Be*Be+Ue*Ue,We>9&&(We=we*3/Math.sqrt(We),wt[tt]=We*Be,wt[tt+1]=We*Ue));for(tt=-1;++tt<=zt;)We=(Z[Math.min(zt,tt+1)][0]-Z[Math.max(0,tt-1)][0])/(6*(1+wt[tt]*wt[tt])),oe.push([We||0,wt[tt]*We||0]);return oe}function Mt(Z){return Z.length<3?_c(Z):Z[0]+je(Z,et(Z))}e.svg.line.radial=function(){var Z=Jc(Dt);return Z.radius=Z.x,delete Z.x,Z.angle=Z.y,delete Z.y,Z};function Dt(Z){for(var oe,we=-1,Be=Z.length,Ue,We;++we<Be;)oe=Z[we],Ue=oe[0],We=oe[1]-xe,oe[0]=Ue*Math.cos(We),oe[1]=Ue*Math.sin(We);return Z}function Ut(Z){var oe=zs,we=zs,Be=0,Ue=ks,We=eo,wt=_c,tt=wt.key,zt=wt,or="L",lr=.7;function Dr(Ir){var oi=[],ui=[],qr=[],Kr=-1,ii=Ir.length,vi,ci=ti(oe),Jr=ti(Be),un=oe===we?function(){return En}:ti(we),dn=Be===Ue?function(){return Nn}:ti(Ue),En,Nn;function ga(){oi.push("M",wt(Z(qr),lr),or,zt(Z(ui.reverse()),lr),"Z")}for(;++Kr<ii;)We.call(this,vi=Ir[Kr],Kr)?(ui.push([En=+ci.call(this,vi,Kr),Nn=+Jr.call(this,vi,Kr)]),qr.push([+un.call(this,vi,Kr),+dn.call(this,vi,Kr)])):ui.length&&(ga(),ui=[],qr=[]);return ui.length&&ga(),oi.length?oi.join(""):null}return Dr.x=function(Ir){return arguments.length?(oe=we=Ir,Dr):we},Dr.x0=function(Ir){return arguments.length?(oe=Ir,Dr):oe},Dr.x1=function(Ir){return arguments.length?(we=Ir,Dr):we},Dr.y=function(Ir){return arguments.length?(Be=Ue=Ir,Dr):Ue},Dr.y0=function(Ir){return arguments.length?(Be=Ir,Dr):Be},Dr.y1=function(Ir){return arguments.length?(Ue=Ir,Dr):Ue},Dr.defined=function(Ir){return arguments.length?(We=Ir,Dr):We},Dr.interpolate=function(Ir){return arguments.length?(typeof Ir=="function"?tt=wt=Ir:tt=(wt=yc.get(Ir)||_c).key,zt=wt.reverse||wt,or=wt.closed?"M":"L",Dr):tt},Dr.tension=function(Ir){return arguments.length?(lr=Ir,Dr):lr},Dr}B.reverse=Q,Q.reverse=B,e.svg.area=function(){return Ut(H)},e.svg.area.radial=function(){var Z=Ut(Dt);return Z.radius=Z.x,delete Z.x,Z.innerRadius=Z.x0,delete Z.x0,Z.outerRadius=Z.x1,delete Z.x1,Z.angle=Z.y,delete Z.y,Z.startAngle=Z.y0,delete Z.y0,Z.endAngle=Z.y1,delete Z.y1,Z};function tr(Z){return Z.source}function mr(Z){return Z.target}e.svg.chord=function(){var Z=tr,oe=mr,we=Rr,Be=bu,Ue=Kc;function We(lr,Dr){var Ir=wt(this,Z,lr,Dr),oi=wt(this,oe,lr,Dr);return"M"+Ir.p0+zt(Ir.r,Ir.p1,Ir.a1-Ir.a0)+(tt(Ir,oi)?or(Ir.r,Ir.p1,Ir.r,Ir.p0):or(Ir.r,Ir.p1,oi.r,oi.p0)+zt(oi.r,oi.p1,oi.a1-oi.a0)+or(oi.r,oi.p1,Ir.r,Ir.p0))+"Z"}function wt(lr,Dr,Ir,oi){var ui=Dr.call(lr,Ir,oi),qr=we.call(lr,ui,oi),Kr=Be.call(lr,ui,oi)-xe,ii=Ue.call(lr,ui,oi)-xe;return{r:qr,a0:Kr,a1:ii,p0:[qr*Math.cos(Kr),qr*Math.sin(Kr)],p1:[qr*Math.cos(ii),qr*Math.sin(ii)]}}function tt(lr,Dr){return lr.a0==Dr.a0&&lr.a1==Dr.a1}function zt(lr,Dr,Ir){return"A"+lr+","+lr+" 0 "+ +(Ir>Xe)+",1 "+Dr}function or(lr,Dr,Ir,oi){return"Q 0,0 "+oi}return We.radius=function(lr){return arguments.length?(we=ti(lr),We):we},We.source=function(lr){return arguments.length?(Z=ti(lr),We):Z},We.target=function(lr){return arguments.length?(oe=ti(lr),We):oe},We.startAngle=function(lr){return arguments.length?(Be=ti(lr),We):Be},We.endAngle=function(lr){return arguments.length?(Ue=ti(lr),We):Ue},We};function Rr(Z){return Z.radius}e.svg.diagonal=function(){var Z=tr,oe=mr,we=zr;function Be(Ue,We){var wt=Z.call(this,Ue,We),tt=oe.call(this,Ue,We),zt=(wt.y+tt.y)/2,or=[wt,{x:wt.x,y:zt},{x:tt.x,y:zt},tt];return or=or.map(we),"M"+or[0]+"C"+or[1]+" "+or[2]+" "+or[3]}return Be.source=function(Ue){return arguments.length?(Z=ti(Ue),Be):Z},Be.target=function(Ue){return arguments.length?(oe=ti(Ue),Be):oe},Be.projection=function(Ue){return arguments.length?(we=Ue,Be):we},Be};function zr(Z){return[Z.x,Z.y]}e.svg.diagonal.radial=function(){var Z=e.svg.diagonal(),oe=zr,we=Z.projection;return Z.projection=function(Be){return arguments.length?we(Xr(oe=Be)):oe},Z};function Xr(Z){return function(){var oe=Z.apply(this,arguments),we=oe[0],Be=oe[1]-xe;return[we*Math.cos(Be),we*Math.sin(Be)]}}e.svg.symbol=function(){var Z=Li,oe=di;function we(Be,Ue){return(Qi.get(Z.call(this,Be,Ue))||Ci)(oe.call(this,Be,Ue))}return we.type=function(Be){return arguments.length?(Z=ti(Be),we):Z},we.size=function(Be){return arguments.length?(oe=ti(Be),we):oe},we};function di(){return 64}function Li(){return"circle"}function Ci(Z){var oe=Math.sqrt(Z/Xe);return"M0,"+oe+"A"+oe+","+oe+" 0 1,1 0,"+-oe+"A"+oe+","+oe+" 0 1,1 0,"+oe+"Z"}var Qi=e.map({circle:Ci,cross:function(Z){var oe=Math.sqrt(Z/5)/2;return"M"+-3*oe+","+-oe+"H"+-oe+"V"+-3*oe+"H"+oe+"V"+-oe+"H"+3*oe+"V"+oe+"H"+oe+"V"+3*oe+"H"+-oe+"V"+oe+"H"+-3*oe+"Z"},diamond:function(Z){var oe=Math.sqrt(Z/(2*pa)),we=oe*pa;return"M0,"+-oe+"L"+we+",0 0,"+oe+" "+-we+",0Z"},square:function(Z){var oe=Math.sqrt(Z)/2;return"M"+-oe+","+-oe+"L"+oe+","+-oe+" "+oe+","+oe+" "+-oe+","+oe+"Z"},"triangle-down":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+we+"L"+oe+","+-we+" "+-oe+","+-we+"Z"},"triangle-up":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+-we+"L"+oe+","+we+" "+-oe+","+we+"Z"}});e.svg.symbolTypes=Qi.keys();var Mn=Math.sqrt(3),pa=Math.tan(30*Se);Ce.transition=function(Z){for(var oe=Ro||++co,we=po(Z),Be=[],Ue,We,wt=Ds||{time:Date.now(),ease:uu,delay:0,duration:250},tt=-1,zt=this.length;++tt<zt;){Be.push(Ue=[]);for(var or=this[tt],lr=-1,Dr=or.length;++lr<Dr;)(We=or[lr])&&_l(We,lr,we,oe,wt),Ue.push(We)}return To(Be,we,oe)},Ce.interrupt=function(Z){return this.each(Z==null?ea:Ga(po(Z)))};var ea=Ga(po());function Ga(Z){return function(){var oe,we,Be;(oe=this[Z])&&(Be=oe[we=oe.active])&&(Be.timer.c=null,Be.timer.t=NaN,--oe.count?delete oe[we]:delete this[Z],oe.active+=.5,Be.event&&Be.event.interrupt.call(this,this.__data__,Be.index))}}function To(Z,oe,we){return ie(Z,Wa),Z.namespace=oe,Z.id=we,Z}var Wa=[],co=0,Ro,Ds;Wa.call=Ce.call,Wa.empty=Ce.empty,Wa.node=Ce.node,Wa.size=Ce.size,e.transition=function(Z,oe){return Z&&Z.transition?Ro?Z.transition(oe):Z:e.selection().transition(Z)},e.transition.prototype=Wa,Wa.select=function(Z){var oe=this.id,we=this.namespace,Be=[],Ue,We,wt;Z=me(Z);for(var tt=-1,zt=this.length;++tt<zt;){Be.push(Ue=[]);for(var or=this[tt],lr=-1,Dr=or.length;++lr<Dr;)(wt=or[lr])&&(We=Z.call(wt,wt.__data__,lr,tt))?("__data__"in wt&&(We.__data__=wt.__data__),_l(We,lr,we,oe,wt[we][oe]),Ue.push(We)):Ue.push(null)}return To(Be,we,oe)},Wa.selectAll=function(Z){var oe=this.id,we=this.namespace,Be=[],Ue,We,wt,tt,zt;Z=Re(Z);for(var or=-1,lr=this.length;++or<lr;)for(var Dr=this[or],Ir=-1,oi=Dr.length;++Ir<oi;)if(wt=Dr[Ir]){zt=wt[we][oe],We=Z.call(wt,wt.__data__,Ir,or),Be.push(Ue=[]);for(var ui=-1,qr=We.length;++ui<qr;)(tt=We[ui])&&_l(tt,ui,we,oe,zt),Ue.push(tt)}return To(Be,we,oe)},Wa.filter=function(Z){var oe=[],we,Be,Ue;typeof Z!="function"&&(Z=Ke(Z));for(var We=0,wt=this.length;We<wt;We++){oe.push(we=[]);for(var Be=this[We],tt=0,zt=Be.length;tt<zt;tt++)(Ue=Be[tt])&&Z.call(Ue,Ue.__data__,tt,We)&&we.push(Ue)}return To(oe,this.namespace,this.id)},Wa.tween=function(Z,oe){var we=this.id,Be=this.namespace;return arguments.length<2?this.node()[Be][we].tween.get(Z):bt(this,oe==null?function(Ue){Ue[Be][we].tween.remove(Z)}:function(Ue){Ue[Be][we].tween.set(Z,oe)})};function As(Z,oe,we,Be){var Ue=Z.id,We=Z.namespace;return bt(Z,typeof we=="function"?function(wt,tt,zt){wt[We][Ue].tween.set(oe,Be(we.call(wt,wt.__data__,tt,zt)))}:(we=Be(we),function(wt){wt[We][Ue].tween.set(oe,we)}))}Wa.attr=function(Z,oe){if(arguments.length<2){for(oe in Z)this.attr(oe,Z[oe]);return this}var we=Z=="transform"?Cf:Sl,Be=e.ns.qualify(Z);function Ue(){this.removeAttribute(Be)}function We(){this.removeAttributeNS(Be.space,Be.local)}function wt(zt){return zt==null?Ue:(zt+="",function(){var or=this.getAttribute(Be),lr;return or!==zt&&(lr=we(or,zt),function(Dr){this.setAttribute(Be,lr(Dr))})})}function tt(zt){return zt==null?We:(zt+="",function(){var or=this.getAttributeNS(Be.space,Be.local),lr;return or!==zt&&(lr=we(or,zt),function(Dr){this.setAttributeNS(Be.space,Be.local,lr(Dr))})})}return As(this,"attr."+Z,oe,Be.local?tt:wt)},Wa.attrTween=function(Z,oe){var we=e.ns.qualify(Z);function Be(We,wt){var tt=oe.call(this,We,wt,this.getAttribute(we));return tt&&function(zt){this.setAttribute(we,tt(zt))}}function Ue(We,wt){var tt=oe.call(this,We,wt,this.getAttributeNS(we.space,we.local));return tt&&function(zt){this.setAttributeNS(we.space,we.local,tt(zt))}}return this.tween("attr."+Z,we.local?Ue:Be)},Wa.style=function(Z,oe,we){var Be=arguments.length;if(Be<3){if(typeof Z!="string"){Be<2&&(oe="");for(we in Z)this.style(we,Z[we],oe);return this}we=""}function Ue(){this.style.removeProperty(Z)}function We(wt){return wt==null?Ue:(wt+="",function(){var tt=a(this).getComputedStyle(this,null).getPropertyValue(Z),zt;return tt!==wt&&(zt=Sl(tt,wt),function(or){this.style.setProperty(Z,zt(or),we)})})}return As(this,"style."+Z,oe,We)},Wa.styleTween=function(Z,oe,we){arguments.length<3&&(we="");function Be(Ue,We){var wt=oe.call(this,Ue,We,a(this).getComputedStyle(this,null).getPropertyValue(Z));return wt&&function(tt){this.style.setProperty(Z,wt(tt),we)}}return this.tween("style."+Z,Be)},Wa.text=function(Z){return As(this,"text",Z,yo)};function yo(Z){return Z==null&&(Z=""),function(){this.textContent=Z}}Wa.remove=function(){var Z=this.namespace;return this.each("end.transition",function(){var oe;this[Z].count<2&&(oe=this.parentNode)&&oe.removeChild(this)})},Wa.ease=function(Z){var oe=this.id,we=this.namespace;return arguments.length<1?this.node()[we][oe].ease:(typeof Z!="function"&&(Z=e.ease.apply(e,arguments)),bt(this,function(Be){Be[we][oe].ease=Z}))},Wa.delay=function(Z){var oe=this.id,we=this.namespace;return arguments.length<1?this.node()[we][oe].delay:bt(this,typeof Z=="function"?function(Be,Ue,We){Be[we][oe].delay=+Z.call(Be,Be.__data__,Ue,We)}:(Z=+Z,function(Be){Be[we][oe].delay=Z}))},Wa.duration=function(Z){var oe=this.id,we=this.namespace;return arguments.length<1?this.node()[we][oe].duration:bt(this,typeof Z=="function"?function(Be,Ue,We){Be[we][oe].duration=Math.max(1,Z.call(Be,Be.__data__,Ue,We))}:(Z=Math.max(1,Z),function(Be){Be[we][oe].duration=Z}))},Wa.each=function(Z,oe){var we=this.id,Be=this.namespace;if(arguments.length<2){var Ue=Ds,We=Ro;try{Ro=we,bt(this,function(wt,tt,zt){Ds=wt[Be][we],Z.call(wt,wt.__data__,tt,zt)})}finally{Ds=Ue,Ro=We}}else bt(this,function(wt){var tt=wt[Be][we];(tt.event||(tt.event=e.dispatch("start","end","interrupt"))).on(Z,oe)});return this},Wa.transition=function(){for(var Z=this.id,oe=++co,we=this.namespace,Be=[],Ue,We,wt,tt,zt=0,or=this.length;zt<or;zt++){Be.push(Ue=[]);for(var We=this[zt],lr=0,Dr=We.length;lr<Dr;lr++)(wt=We[lr])&&(tt=wt[we][Z],_l(wt,lr,we,oe,{time:tt.time,ease:tt.ease,delay:tt.delay+tt.duration,duration:tt.duration})),Ue.push(wt)}return To(Be,we,oe)};function po(Z){return Z==null?"__transition__":"__transition_"+Z+"__"}function _l(Z,oe,we,Be,Ue){var We=Z[we]||(Z[we]={active:0,count:0}),wt=We[Be],tt,zt,or,lr,Dr;function Ir(qr){var Kr=wt.delay;if(zt.t=Kr+tt,Kr<=qr)return oi(qr-Kr);zt.c=oi}function oi(qr){var Kr=We.active,ii=We[Kr];ii&&(ii.timer.c=null,ii.timer.t=NaN,--We.count,delete We[Kr],ii.event&&ii.event.interrupt.call(Z,Z.__data__,ii.index));for(var vi in We)if(+vi<Be){var ci=We[vi];ci.timer.c=null,ci.timer.t=NaN,--We.count,delete We[vi]}zt.c=ui,Oo(function(){return zt.c&&ui(qr||1)&&(zt.c=null,zt.t=NaN),1},0,tt),We.active=Be,wt.event&&wt.event.start.call(Z,Z.__data__,oe),Dr=[],wt.tween.forEach(function(Jr,un){(un=un.call(Z,Z.__data__,oe))&&Dr.push(un)}),lr=wt.ease,or=wt.duration}function ui(qr){for(var Kr=qr/or,ii=lr(Kr),vi=Dr.length;vi>0;)Dr[--vi].call(Z,ii);if(Kr>=1)return wt.event&&wt.event.end.call(Z,Z.__data__,oe),--We.count?delete We[Be]:delete Z[we],1}wt||(tt=Ue.time,zt=Oo(Ir,0,tt),wt=We[Be]={tween:new A,time:tt,timer:zt,delay:Ue.delay,duration:Ue.duration,ease:Ue.ease,index:oe},Ue=null,++We.count)}e.svg.axis=function(){var Z=e.scale.linear(),oe=Hl,we=6,Be=6,Ue=3,We=[10],wt=null,tt;function zt(or){or.each(function(){var lr=e.select(this),Dr=this.__chart__||Z,Ir=this.__chart__=Z.copy(),oi=wt==null?Ir.ticks?Ir.ticks.apply(Ir,We):Ir.domain():wt,ui=tt==null?Ir.tickFormat?Ir.tickFormat.apply(Ir,We):H:tt,qr=lr.selectAll(".tick").data(oi,Ir),Kr=qr.enter().insert("g",".domain").attr("class","tick").style("opacity",Ye),ii=e.transition(qr.exit()).style("opacity",Ye).remove(),vi=e.transition(qr.order()).style("opacity",1),ci=Math.max(we,0)+Ue,Jr,un=Xi(Ir),dn=lr.selectAll(".domain").data([0]),En=(dn.enter().append("path").attr("class","domain"),e.transition(dn));Kr.append("line"),Kr.append("text");var Nn=Kr.select("line"),ga=vi.select("line"),ya=qr.select("text").text(ui),so=Kr.select("text"),wa=vi.select("text"),io=oe==="top"||oe==="left"?-1:1,Ss,_s,Ns,pn;if(oe==="bottom"||oe==="top"?(Jr=cu,Ss="x",Ns="y",_s="x2",pn="y2",ya.attr("dy",io<0?"0em":".71em").style("text-anchor","middle"),En.attr("d","M"+un[0]+","+io*Be+"V0H"+un[1]+"V"+io*Be)):(Jr=el,Ss="y",Ns="x",_s="y2",pn="x2",ya.attr("dy",".32em").style("text-anchor",io<0?"end":"start"),En.attr("d","M"+io*Be+","+un[0]+"H0V"+un[1]+"H"+io*Be)),Nn.attr(pn,io*we),so.attr(Ns,io*ci),ga.attr(_s,0).attr(pn,io*we),wa.attr(Ss,0).attr(Ns,io*ci),Ir.rangeBand){var za=Ir,Lo=za.rangeBand()/2;Dr=Ir=function(Fo){return za(Fo)+Lo}}else Dr.rangeBand?Dr=Ir:ii.call(Jr,Ir,Dr);Kr.call(Jr,Dr,Ir),vi.call(Jr,Ir,Ir)})}return zt.scale=function(or){return arguments.length?(Z=or,zt):Z},zt.orient=function(or){return arguments.length?(oe=or in Zu?or+"":Hl,zt):oe},zt.ticks=function(){return arguments.length?(We=r(arguments),zt):We},zt.tickValues=function(or){return arguments.length?(wt=or,zt):wt},zt.tickFormat=function(or){return arguments.length?(tt=or,zt):tt},zt.tickSize=function(or){var lr=arguments.length;return lr?(we=+or,Be=+arguments[lr-1],zt):we},zt.innerTickSize=function(or){return arguments.length?(we=+or,zt):we},zt.outerTickSize=function(or){return arguments.length?(Be=+or,zt):Be},zt.tickPadding=function(or){return arguments.length?(Ue=+or,zt):Ue},zt.tickSubdivide=function(){return arguments.length&&zt},zt};var Hl="bottom",Zu={top:1,right:1,bottom:1,left:1};function cu(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate("+(isFinite(Ue)?Ue:we(Be))+",0)"})}function el(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate(0,"+(isFinite(Ue)?Ue:we(Be))+")"})}e.svg.brush=function(){var Z=ke(lr,"brushstart","brush","brushend"),oe=null,we=null,Be=[0,0],Ue=[0,0],We,wt,tt=!0,zt=!0,or=zc[0];function lr(qr){qr.each(function(){var Kr=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",ui).on("touchstart.brush",ui),ii=Kr.selectAll(".background").data([0]);ii.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),Kr.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var vi=Kr.selectAll(".resize").data(or,H);vi.exit().remove(),vi.enter().append("g").attr("class",function(dn){return"resize "+dn}).style("cursor",function(dn){return au[dn]}).append("rect").attr("x",function(dn){return/[ew]$/.test(dn)?-3:null}).attr("y",function(dn){return/^[ns]/.test(dn)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),vi.style("display",lr.empty()?"none":null);var ci=e.transition(Kr),Jr=e.transition(ii),un;oe&&(un=Xi(oe),Jr.attr("x",un[0]).attr("width",un[1]-un[0]),Ir(ci)),we&&(un=Xi(we),Jr.attr("y",un[0]).attr("height",un[1]-un[0]),oi(ci)),Dr(ci)})}lr.event=function(qr){qr.each(function(){var Kr=Z.of(this,arguments),ii={x:Be,y:Ue,i:We,j:wt},vi=this.__chart__||ii;this.__chart__=ii,Ro?e.select(this).transition().each("start.brush",function(){We=vi.i,wt=vi.j,Be=vi.x,Ue=vi.y,Kr({type:"brushstart"})}).tween("brush:brush",function(){var ci=ec(Be,ii.x),Jr=ec(Ue,ii.y);return We=wt=null,function(un){Be=ii.x=ci(un),Ue=ii.y=Jr(un),Kr({type:"brush",mode:"resize"})}}).each("end.brush",function(){We=ii.i,wt=ii.j,Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"})}):(Kr({type:"brushstart"}),Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"}))})};function Dr(qr){qr.selectAll(".resize").attr("transform",function(Kr){return"translate("+Be[+/e$/.test(Kr)]+","+Ue[+/^s/.test(Kr)]+")"})}function Ir(qr){qr.select(".extent").attr("x",Be[0]),qr.selectAll(".extent,.n>rect,.s>rect").attr("width",Be[1]-Be[0])}function oi(qr){qr.select(".extent").attr("y",Ue[0]),qr.selectAll(".extent,.e>rect,.w>rect").attr("height",Ue[1]-Ue[0])}function ui(){var qr=this,Kr=e.select(e.event.target),ii=Z.of(qr,arguments),vi=e.select(qr),ci=Kr.datum(),Jr=!/^(n|s)$/.test(ci)&&oe,un=!/^(e|w)$/.test(ci)&&we,dn=Kr.classed("extent"),En=Or(qr),Nn,ga=e.mouse(qr),ya,so=e.select(a(qr)).on("keydown.brush",Ss).on("keyup.brush",_s);if(e.event.changedTouches?so.on("touchmove.brush",Ns).on("touchend.brush",za):so.on("mousemove.brush",Ns).on("mouseup.brush",za),vi.interrupt().selectAll("*").interrupt(),dn)ga[0]=Be[0]-ga[0],ga[1]=Ue[0]-ga[1];else if(ci){var wa=+/w$/.test(ci),io=+/^n/.test(ci);ya=[Be[1-wa]-ga[0],Ue[1-io]-ga[1]],ga[0]=Be[wa],ga[1]=Ue[io]}else e.event.altKey&&(Nn=ga.slice());vi.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",Kr.style("cursor")),ii({type:"brushstart"}),Ns();function Ss(){e.event.keyCode==32&&(dn||(Nn=null,ga[0]-=Be[1],ga[1]-=Ue[1],dn=2),_e())}function _s(){e.event.keyCode==32&&dn==2&&(ga[0]+=Be[1],ga[1]+=Ue[1],dn=0,_e())}function Ns(){var Lo=e.mouse(qr),Fo=!1;ya&&(Lo[0]+=ya[0],Lo[1]+=ya[1]),dn||(e.event.altKey?(Nn||(Nn=[(Be[0]+Be[1])/2,(Ue[0]+Ue[1])/2]),ga[0]=Be[+(Lo[0]<Nn[0])],ga[1]=Ue[+(Lo[1]<Nn[1])]):Nn=null),Jr&&pn(Lo,oe,0)&&(Ir(vi),Fo=!0),un&&pn(Lo,we,1)&&(oi(vi),Fo=!0),Fo&&(Dr(vi),ii({type:"brush",mode:dn?"move":"resize"}))}function pn(Lo,Fo,js){var xl=Xi(Fo),fu=xl[0],dl=xl[1],xc=ga[js],At=js?Ue:Be,Er=At[1]-At[0],Wr,wi;if(dn&&(fu-=xc,dl-=Er+xc),Wr=(js?zt:tt)?Math.max(fu,Math.min(dl,Lo[js])):Lo[js],dn?wi=(Wr+=xc)+Er:(Nn&&(xc=Math.max(fu,Math.min(dl,2*Nn[js]-Wr))),xc<Wr?(wi=Wr,Wr=xc):wi=xc),At[0]!=Wr||At[1]!=wi)return js?wt=null:We=null,At[0]=Wr,At[1]=wi,!0}function za(){Ns(),vi.style("pointer-events","all").selectAll(".resize").style("display",lr.empty()?"none":null),e.select("body").style("cursor",null),so.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),En(),ii({type:"brushend"})}}return lr.x=function(qr){return arguments.length?(oe=qr,or=zc[!oe<<1|!we],lr):oe},lr.y=function(qr){return arguments.length?(we=qr,or=zc[!oe<<1|!we],lr):we},lr.clamp=function(qr){return arguments.length?(oe&&we?(tt=!!qr[0],zt=!!qr[1]):oe?tt=!!qr:we&&(zt=!!qr),lr):oe&&we?[tt,zt]:oe?tt:we?zt:null},lr.extent=function(qr){var Kr,ii,vi,ci,Jr;return arguments.length?(oe&&(Kr=qr[0],ii=qr[1],we&&(Kr=Kr[0],ii=ii[0]),We=[Kr,ii],oe.invert&&(Kr=oe(Kr),ii=oe(ii)),ii<Kr&&(Jr=Kr,Kr=ii,ii=Jr),(Kr!=Be[0]||ii!=Be[1])&&(Be=[Kr,ii])),we&&(vi=qr[0],ci=qr[1],oe&&(vi=vi[1],ci=ci[1]),wt=[vi,ci],we.invert&&(vi=we(vi),ci=we(ci)),ci<vi&&(Jr=vi,vi=ci,ci=Jr),(vi!=Ue[0]||ci!=Ue[1])&&(Ue=[vi,ci])),lr):(oe&&(We?(Kr=We[0],ii=We[1]):(Kr=Be[0],ii=Be[1],oe.invert&&(Kr=oe.invert(Kr),ii=oe.invert(ii)),ii<Kr&&(Jr=Kr,Kr=ii,ii=Jr))),we&&(wt?(vi=wt[0],ci=wt[1]):(vi=Ue[0],ci=Ue[1],we.invert&&(vi=we.invert(vi),ci=we.invert(ci)),ci<vi&&(Jr=vi,vi=ci,ci=Jr))),oe&&we?[[Kr,vi],[ii,ci]]:oe?[Kr,ii]:we&&[vi,ci])},lr.clear=function(){return lr.empty()||(Be=[0,0],Ue=[0,0],We=wt=null),lr},lr.empty=function(){return!!oe&&Be[0]==Be[1]||!!we&&Ue[0]==Ue[1]},e.rebind(lr,Z,"on")};var au={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},zc=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]];e.text=zi(function(Z){return Z.responseText}),e.json=function(Z,oe){return Yi(Z,"application/json",zl,oe)};function zl(Z){return JSON.parse(Z.responseText)}e.html=function(Z,oe){return Yi(Z,"text/html",Fl,oe)};function Fl(Z){var oe=n.createRange();return oe.selectNode(n.body),oe.createContextualFragment(Z.responseText)}e.xml=zi(function(Z){return Z.responseXML}),typeof r6=="object"&&r6.exports?r6.exports=e:this.d3=e}).apply(self)});var dq=ye((i6,nee)=>{(function(e,t){typeof i6=="object"&&typeof nee!="undefined"?t(i6):(e=e||self,t(e.d3=e.d3||{}))})(i6,function(e){"use strict";var t=new Date,r=new Date;function n(Ke,xt,bt,Lt){function St(Et){return Ke(Et=arguments.length===0?new Date:new Date(+Et)),Et}return St.floor=function(Et){return Ke(Et=new Date(+Et)),Et},St.ceil=function(Et){return Ke(Et=new Date(Et-1)),xt(Et,1),Ke(Et),Et},St.round=function(Et){var dt=St(Et),Ht=St.ceil(Et);return Et-dt<Ht-Et?dt:Ht},St.offset=function(Et,dt){return xt(Et=new Date(+Et),dt==null?1:Math.floor(dt)),Et},St.range=function(Et,dt,Ht){var $t=[],fr;if(Et=St.ceil(Et),Ht=Ht==null?1:Math.floor(Ht),!(Et<dt)||!(Ht>0))return $t;do $t.push(fr=new Date(+Et)),xt(Et,Ht),Ke(Et);while(fr<Et&&Et<dt);return $t},St.filter=function(Et){return n(function(dt){if(dt>=dt)for(;Ke(dt),!Et(dt);)dt.setTime(dt-1)},function(dt,Ht){if(dt>=dt)if(Ht<0)for(;++Ht<=0;)for(;xt(dt,-1),!Et(dt););else for(;--Ht>=0;)for(;xt(dt,1),!Et(dt););})},bt&&(St.count=function(Et,dt){return t.setTime(+Et),r.setTime(+dt),Ke(t),Ke(r),Math.floor(bt(t,r))},St.every=function(Et){return Et=Math.floor(Et),!isFinite(Et)||!(Et>0)?null:Et>1?St.filter(Lt?function(dt){return Lt(dt)%Et===0}:function(dt){return St.count(0,dt)%Et===0}):St}),St}var i=n(function(){},function(Ke,xt){Ke.setTime(+Ke+xt)},function(Ke,xt){return xt-Ke});i.every=function(Ke){return Ke=Math.floor(Ke),!isFinite(Ke)||!(Ke>0)?null:Ke>1?n(function(xt){xt.setTime(Math.floor(xt/Ke)*Ke)},function(xt,bt){xt.setTime(+xt+bt*Ke)},function(xt,bt){return(bt-xt)/Ke}):i};var a=i.range,o=1e3,s=6e4,l=36e5,u=864e5,c=6048e5,f=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds())},function(Ke,xt){Ke.setTime(+Ke+xt*o)},function(Ke,xt){return(xt-Ke)/o},function(Ke){return Ke.getUTCSeconds()}),h=f.range,d=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getMinutes()}),v=d.range,x=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o-Ke.getMinutes()*s)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getHours()}),b=x.range,p=n(function(Ke){Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setDate(Ke.getDate()+xt)},function(Ke,xt){return(xt-Ke-(xt.getTimezoneOffset()-Ke.getTimezoneOffset())*s)/u},function(Ke){return Ke.getDate()-1}),E=p.range;function k(Ke){return n(function(xt){xt.setDate(xt.getDate()-(xt.getDay()+7-Ke)%7),xt.setHours(0,0,0,0)},function(xt,bt){xt.setDate(xt.getDate()+bt*7)},function(xt,bt){return(bt-xt-(bt.getTimezoneOffset()-xt.getTimezoneOffset())*s)/c})}var A=k(0),L=k(1),_=k(2),C=k(3),M=k(4),g=k(5),P=k(6),T=A.range,F=L.range,q=_.range,V=C.range,H=M.range,X=g.range,G=P.range,N=n(function(Ke){Ke.setDate(1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setMonth(Ke.getMonth()+xt)},function(Ke,xt){return xt.getMonth()-Ke.getMonth()+(xt.getFullYear()-Ke.getFullYear())*12},function(Ke){return Ke.getMonth()}),W=N.range,re=n(function(Ke){Ke.setMonth(0,1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setFullYear(Ke.getFullYear()+xt)},function(Ke,xt){return xt.getFullYear()-Ke.getFullYear()},function(Ke){return Ke.getFullYear()});re.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setFullYear(Math.floor(xt.getFullYear()/Ke)*Ke),xt.setMonth(0,1),xt.setHours(0,0,0,0)},function(xt,bt){xt.setFullYear(xt.getFullYear()+bt*Ke)})};var ae=re.range,_e=n(function(Ke){Ke.setUTCSeconds(0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getUTCMinutes()}),Me=_e.range,ke=n(function(Ke){Ke.setUTCMinutes(0,0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getUTCHours()}),ge=ke.range,ie=n(function(Ke){Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCDate(Ke.getUTCDate()+xt)},function(Ke,xt){return(xt-Ke)/u},function(Ke){return Ke.getUTCDate()-1}),Te=ie.range;function Ee(Ke){return n(function(xt){xt.setUTCDate(xt.getUTCDate()-(xt.getUTCDay()+7-Ke)%7),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCDate(xt.getUTCDate()+bt*7)},function(xt,bt){return(bt-xt)/c})}var Ae=Ee(0),ze=Ee(1),Ce=Ee(2),me=Ee(3),Re=Ee(4),ce=Ee(5),Ge=Ee(6),nt=Ae.range,ct=ze.range,qt=Ce.range,rt=me.range,ot=Re.range,Rt=ce.range,kt=Ge.range,Ct=n(function(Ke){Ke.setUTCDate(1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCMonth(Ke.getUTCMonth()+xt)},function(Ke,xt){return xt.getUTCMonth()-Ke.getUTCMonth()+(xt.getUTCFullYear()-Ke.getUTCFullYear())*12},function(Ke){return Ke.getUTCMonth()}),Yt=Ct.range,xr=n(function(Ke){Ke.setUTCMonth(0,1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCFullYear(Ke.getUTCFullYear()+xt)},function(Ke,xt){return xt.getUTCFullYear()-Ke.getUTCFullYear()},function(Ke){return Ke.getUTCFullYear()});xr.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setUTCFullYear(Math.floor(xt.getUTCFullYear()/Ke)*Ke),xt.setUTCMonth(0,1),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCFullYear(xt.getUTCFullYear()+bt*Ke)})};var er=xr.range;e.timeDay=p,e.timeDays=E,e.timeFriday=g,e.timeFridays=X,e.timeHour=x,e.timeHours=b,e.timeInterval=n,e.timeMillisecond=i,e.timeMilliseconds=a,e.timeMinute=d,e.timeMinutes=v,e.timeMonday=L,e.timeMondays=F,e.timeMonth=N,e.timeMonths=W,e.timeSaturday=P,e.timeSaturdays=G,e.timeSecond=f,e.timeSeconds=h,e.timeSunday=A,e.timeSundays=T,e.timeThursday=M,e.timeThursdays=H,e.timeTuesday=_,e.timeTuesdays=q,e.timeWednesday=C,e.timeWednesdays=V,e.timeWeek=A,e.timeWeeks=T,e.timeYear=re,e.timeYears=ae,e.utcDay=ie,e.utcDays=Te,e.utcFriday=ce,e.utcFridays=Rt,e.utcHour=ke,e.utcHours=ge,e.utcMillisecond=i,e.utcMilliseconds=a,e.utcMinute=_e,e.utcMinutes=Me,e.utcMonday=ze,e.utcMondays=ct,e.utcMonth=Ct,e.utcMonths=Yt,e.utcSaturday=Ge,e.utcSaturdays=kt,e.utcSecond=f,e.utcSeconds=h,e.utcSunday=Ae,e.utcSundays=nt,e.utcThursday=Re,e.utcThursdays=ot,e.utcTuesday=Ce,e.utcTuesdays=qt,e.utcWednesday=me,e.utcWednesdays=rt,e.utcWeek=Ae,e.utcWeeks=nt,e.utcYear=xr,e.utcYears=er,Object.defineProperty(e,"__esModule",{value:!0})})});var e3=ye((n6,aee)=>{(function(e,t){typeof n6=="object"&&typeof aee!="undefined"?t(n6,dq()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(n6,function(e,t){"use strict";function r(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L);return Ye.setFullYear(Ne.y),Ye}return new Date(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L)}function n(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(Date.UTC(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L));return Ye.setUTCFullYear(Ne.y),Ye}return new Date(Date.UTC(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L))}function i(Ne,Ye,Ve){return{y:Ne,m:Ye,d:Ve,H:0,M:0,S:0,L:0}}function a(Ne){var Ye=Ne.dateTime,Ve=Ne.date,Xe=Ne.time,ht=Ne.periods,Le=Ne.days,xe=Ne.shortDays,Se=Ne.months,lt=Ne.shortMonths,Gt=h(ht),Vt=d(ht),ar=h(Le),Qr=d(Le),ai=h(xe),jr=d(xe),ri=h(Se),bi=d(Se),nn=h(lt),Wi=d(lt),Ni={a:Si,A:Mi,b:Pi,B:Gi,c:null,d:N,e:N,f:Me,H:W,I:re,j:ae,L:_e,m:ke,M:ge,p:Ki,q:ka,Q:dt,s:Ht,S:ie,u:Te,U:Ee,V:Ae,w:ze,W:Ce,x:null,X:null,y:me,Y:Re,Z:ce,"%":Et},_n={a:jn,A:la,b:Fa,B:Ra,c:null,d:Ge,e:Ge,f:ot,H:nt,I:ct,j:qt,L:rt,m:Rt,M:kt,p:jo,q:oa,Q:dt,s:Ht,S:Ct,u:Yt,U:xr,V:er,w:Ke,W:xt,x:null,X:null,y:bt,Y:Lt,Z:St,"%":Et},$i={a:jt,A:Zt,b:yr,B:Fr,c:Zr,d:M,e:M,f:V,H:P,I:P,j:g,L:q,m:C,M:T,p:ft,q:_,Q:X,s:G,S:F,u:x,U:b,V:p,w:v,W:E,x:Vr,X:gi,y:A,Y:k,Z:L,"%":H};Ni.x=zn(Ve,Ni),Ni.X=zn(Xe,Ni),Ni.c=zn(Ye,Ni),_n.x=zn(Ve,_n),_n.X=zn(Xe,_n),_n.c=zn(Ye,_n);function zn(Sn,Ha){return function(oo){var xn=[],_t=-1,br=0,Hr=Sn.length,ti,zi,Yi;for(oo instanceof Date||(oo=new Date(+oo));++_t<Hr;)Sn.charCodeAt(_t)===37&&(xn.push(Sn.slice(br,_t)),(zi=o[ti=Sn.charAt(++_t)])!=null?ti=Sn.charAt(++_t):zi=ti==="e"?" ":"0",(Yi=Ha[ti])&&(ti=Yi(oo,zi)),xn.push(ti),br=_t+1);return xn.push(Sn.slice(br,_t)),xn.join("")}}function Wn(Sn,Ha){return function(oo){var xn=i(1900,void 0,1),_t=It(xn,Sn,oo+="",0),br,Hr;if(_t!=oo.length)return null;if("Q"in xn)return new Date(xn.Q);if("s"in xn)return new Date(xn.s*1e3+("L"in xn?xn.L:0));if(Ha&&!("Z"in xn)&&(xn.Z=0),"p"in xn&&(xn.H=xn.H%12+xn.p*12),xn.m===void 0&&(xn.m="q"in xn?xn.q:0),"V"in xn){if(xn.V<1||xn.V>53)return null;"w"in xn||(xn.w=1),"Z"in xn?(br=n(i(xn.y,0,1)),Hr=br.getUTCDay(),br=Hr>4||Hr===0?t.utcMonday.ceil(br):t.utcMonday(br),br=t.utcDay.offset(br,(xn.V-1)*7),xn.y=br.getUTCFullYear(),xn.m=br.getUTCMonth(),xn.d=br.getUTCDate()+(xn.w+6)%7):(br=r(i(xn.y,0,1)),Hr=br.getDay(),br=Hr>4||Hr===0?t.timeMonday.ceil(br):t.timeMonday(br),br=t.timeDay.offset(br,(xn.V-1)*7),xn.y=br.getFullYear(),xn.m=br.getMonth(),xn.d=br.getDate()+(xn.w+6)%7)}else("W"in xn||"U"in xn)&&("w"in xn||(xn.w="u"in xn?xn.u%7:"W"in xn?1:0),Hr="Z"in xn?n(i(xn.y,0,1)).getUTCDay():r(i(xn.y,0,1)).getDay(),xn.m=0,xn.d="W"in xn?(xn.w+6)%7+xn.W*7-(Hr+5)%7:xn.w+xn.U*7-(Hr+6)%7);return"Z"in xn?(xn.H+=xn.Z/100|0,xn.M+=xn.Z%100,n(xn)):r(xn)}}function It(Sn,Ha,oo,xn){for(var _t=0,br=Ha.length,Hr=oo.length,ti,zi;_t<br;){if(xn>=Hr)return-1;if(ti=Ha.charCodeAt(_t++),ti===37){if(ti=Ha.charAt(_t++),zi=$i[ti in o?Ha.charAt(_t++):ti],!zi||(xn=zi(Sn,oo,xn))<0)return-1}else if(ti!=oo.charCodeAt(xn++))return-1}return xn}function ft(Sn,Ha,oo){var xn=Gt.exec(Ha.slice(oo));return xn?(Sn.p=Vt[xn[0].toLowerCase()],oo+xn[0].length):-1}function jt(Sn,Ha,oo){var xn=ai.exec(Ha.slice(oo));return xn?(Sn.w=jr[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zt(Sn,Ha,oo){var xn=ar.exec(Ha.slice(oo));return xn?(Sn.w=Qr[xn[0].toLowerCase()],oo+xn[0].length):-1}function yr(Sn,Ha,oo){var xn=nn.exec(Ha.slice(oo));return xn?(Sn.m=Wi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Fr(Sn,Ha,oo){var xn=ri.exec(Ha.slice(oo));return xn?(Sn.m=bi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zr(Sn,Ha,oo){return It(Sn,Ye,Ha,oo)}function Vr(Sn,Ha,oo){return It(Sn,Ve,Ha,oo)}function gi(Sn,Ha,oo){return It(Sn,Xe,Ha,oo)}function Si(Sn){return xe[Sn.getDay()]}function Mi(Sn){return Le[Sn.getDay()]}function Pi(Sn){return lt[Sn.getMonth()]}function Gi(Sn){return Se[Sn.getMonth()]}function Ki(Sn){return ht[+(Sn.getHours()>=12)]}function ka(Sn){return 1+~~(Sn.getMonth()/3)}function jn(Sn){return xe[Sn.getUTCDay()]}function la(Sn){return Le[Sn.getUTCDay()]}function Fa(Sn){return lt[Sn.getUTCMonth()]}function Ra(Sn){return Se[Sn.getUTCMonth()]}function jo(Sn){return ht[+(Sn.getUTCHours()>=12)]}function oa(Sn){return 1+~~(Sn.getUTCMonth()/3)}return{format:function(Sn){var Ha=zn(Sn+="",Ni);return Ha.toString=function(){return Sn},Ha},parse:function(Sn){var Ha=Wn(Sn+="",!1);return Ha.toString=function(){return Sn},Ha},utcFormat:function(Sn){var Ha=zn(Sn+="",_n);return Ha.toString=function(){return Sn},Ha},utcParse:function(Sn){var Ha=Wn(Sn+="",!0);return Ha.toString=function(){return Sn},Ha}}}var o={"-":"",_:" ",0:"0"},s=/^\s*\d+/,l=/^%/,u=/[\\^$*+?|[\]().{}]/g;function c(Ne,Ye,Ve){var Xe=Ne<0?"-":"",ht=(Xe?-Ne:Ne)+"",Le=ht.length;return Xe+(Le<Ve?new Array(Ve-Le+1).join(Ye)+ht:ht)}function f(Ne){return Ne.replace(u,"\\$&")}function h(Ne){return new RegExp("^(?:"+Ne.map(f).join("|")+")","i")}function d(Ne){for(var Ye={},Ve=-1,Xe=Ne.length;++Ve<Xe;)Ye[Ne[Ve].toLowerCase()]=Ve;return Ye}function v(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.w=+Xe[0],Ve+Xe[0].length):-1}function x(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.u=+Xe[0],Ve+Xe[0].length):-1}function b(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.U=+Xe[0],Ve+Xe[0].length):-1}function p(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.V=+Xe[0],Ve+Xe[0].length):-1}function E(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.W=+Xe[0],Ve+Xe[0].length):-1}function k(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+4));return Xe?(Ne.y=+Xe[0],Ve+Xe[0].length):-1}function A(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.y=+Xe[0]+(+Xe[0]>68?1900:2e3),Ve+Xe[0].length):-1}function L(Ne,Ye,Ve){var Xe=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.Z=Xe[1]?0:-(Xe[2]+(Xe[3]||"00")),Ve+Xe[0].length):-1}function _(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.q=Xe[0]*3-3,Ve+Xe[0].length):-1}function C(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.m=Xe[0]-1,Ve+Xe[0].length):-1}function M(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.d=+Xe[0],Ve+Xe[0].length):-1}function g(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.m=0,Ne.d=+Xe[0],Ve+Xe[0].length):-1}function P(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.H=+Xe[0],Ve+Xe[0].length):-1}function T(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.M=+Xe[0],Ve+Xe[0].length):-1}function F(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.S=+Xe[0],Ve+Xe[0].length):-1}function q(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.L=+Xe[0],Ve+Xe[0].length):-1}function V(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.L=Math.floor(Xe[0]/1e3),Ve+Xe[0].length):-1}function H(Ne,Ye,Ve){var Xe=l.exec(Ye.slice(Ve,Ve+1));return Xe?Ve+Xe[0].length:-1}function X(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.Q=+Xe[0],Ve+Xe[0].length):-1}function G(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.s=+Xe[0],Ve+Xe[0].length):-1}function N(Ne,Ye){return c(Ne.getDate(),Ye,2)}function W(Ne,Ye){return c(Ne.getHours(),Ye,2)}function re(Ne,Ye){return c(Ne.getHours()%12||12,Ye,2)}function ae(Ne,Ye){return c(1+t.timeDay.count(t.timeYear(Ne),Ne),Ye,3)}function _e(Ne,Ye){return c(Ne.getMilliseconds(),Ye,3)}function Me(Ne,Ye){return _e(Ne,Ye)+"000"}function ke(Ne,Ye){return c(Ne.getMonth()+1,Ye,2)}function ge(Ne,Ye){return c(Ne.getMinutes(),Ye,2)}function ie(Ne,Ye){return c(Ne.getSeconds(),Ye,2)}function Te(Ne){var Ye=Ne.getDay();return Ye===0?7:Ye}function Ee(Ne,Ye){return c(t.timeSunday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function Ae(Ne,Ye){var Ve=Ne.getDay();return Ne=Ve>=4||Ve===0?t.timeThursday(Ne):t.timeThursday.ceil(Ne),c(t.timeThursday.count(t.timeYear(Ne),Ne)+(t.timeYear(Ne).getDay()===4),Ye,2)}function ze(Ne){return Ne.getDay()}function Ce(Ne,Ye){return c(t.timeMonday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function me(Ne,Ye){return c(Ne.getFullYear()%100,Ye,2)}function Re(Ne,Ye){return c(Ne.getFullYear()%1e4,Ye,4)}function ce(Ne){var Ye=Ne.getTimezoneOffset();return(Ye>0?"-":(Ye*=-1,"+"))+c(Ye/60|0,"0",2)+c(Ye%60,"0",2)}function Ge(Ne,Ye){return c(Ne.getUTCDate(),Ye,2)}function nt(Ne,Ye){return c(Ne.getUTCHours(),Ye,2)}function ct(Ne,Ye){return c(Ne.getUTCHours()%12||12,Ye,2)}function qt(Ne,Ye){return c(1+t.utcDay.count(t.utcYear(Ne),Ne),Ye,3)}function rt(Ne,Ye){return c(Ne.getUTCMilliseconds(),Ye,3)}function ot(Ne,Ye){return rt(Ne,Ye)+"000"}function Rt(Ne,Ye){return c(Ne.getUTCMonth()+1,Ye,2)}function kt(Ne,Ye){return c(Ne.getUTCMinutes(),Ye,2)}function Ct(Ne,Ye){return c(Ne.getUTCSeconds(),Ye,2)}function Yt(Ne){var Ye=Ne.getUTCDay();return Ye===0?7:Ye}function xr(Ne,Ye){return c(t.utcSunday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function er(Ne,Ye){var Ve=Ne.getUTCDay();return Ne=Ve>=4||Ve===0?t.utcThursday(Ne):t.utcThursday.ceil(Ne),c(t.utcThursday.count(t.utcYear(Ne),Ne)+(t.utcYear(Ne).getUTCDay()===4),Ye,2)}function Ke(Ne){return Ne.getUTCDay()}function xt(Ne,Ye){return c(t.utcMonday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function bt(Ne,Ye){return c(Ne.getUTCFullYear()%100,Ye,2)}function Lt(Ne,Ye){return c(Ne.getUTCFullYear()%1e4,Ye,4)}function St(){return"+0000"}function Et(){return"%"}function dt(Ne){return+Ne}function Ht(Ne){return Math.floor(+Ne/1e3)}var $t;fr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fr(Ne){return $t=a(Ne),e.timeFormat=$t.format,e.timeParse=$t.parse,e.utcFormat=$t.utcFormat,e.utcParse=$t.utcParse,$t}var _r="%Y-%m-%dT%H:%M:%S.%LZ";function Br(Ne){return Ne.toISOString()}var Or=Date.prototype.toISOString?Br:e.utcFormat(_r);function Nr(Ne){var Ye=new Date(Ne);return isNaN(Ye)?null:Ye}var ut=+new Date("2000-01-01T00:00:00.000Z")?Nr:e.utcParse(_r);e.isoFormat=Or,e.isoParse=ut,e.timeFormatDefaultLocale=fr,e.timeFormatLocale=a,Object.defineProperty(e,"__esModule",{value:!0})})});var vq=ye((a6,oee)=>{(function(e,t){typeof a6=="object"&&typeof oee!="undefined"?t(a6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.d3=e.d3||{}))})(a6,function(e){"use strict";function t(C){return Math.abs(C=Math.round(C))>=1e21?C.toLocaleString("en").replace(/,/g,""):C.toString(10)}function r(C,M){if((g=(C=M?C.toExponential(M-1):C.toExponential()).indexOf("e"))<0)return null;var g,P=C.slice(0,g);return[P.length>1?P[0]+P.slice(2):P,+C.slice(g+1)]}function n(C){return C=r(Math.abs(C)),C?C[1]:NaN}function i(C,M){return function(g,P){for(var T=g.length,F=[],q=0,V=C[0],H=0;T>0&&V>0&&(H+V+1>P&&(V=Math.max(1,P-H)),F.push(g.substring(T-=V,T+V)),!((H+=V+1)>P));)V=C[q=(q+1)%C.length];return F.reverse().join(M)}}function a(C){return function(M){return M.replace(/[0-9]/g,function(g){return C[+g]})}}var o=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function s(C){if(!(M=o.exec(C)))throw new Error("invalid format: "+C);var M;return new l({fill:M[1],align:M[2],sign:M[3],symbol:M[4],zero:M[5],width:M[6],comma:M[7],precision:M[8]&&M[8].slice(1),trim:M[9],type:M[10]})}s.prototype=l.prototype;function l(C){this.fill=C.fill===void 0?" ":C.fill+"",this.align=C.align===void 0?">":C.align+"",this.sign=C.sign===void 0?"-":C.sign+"",this.symbol=C.symbol===void 0?"":C.symbol+"",this.zero=!!C.zero,this.width=C.width===void 0?void 0:+C.width,this.comma=!!C.comma,this.precision=C.precision===void 0?void 0:+C.precision,this.trim=!!C.trim,this.type=C.type===void 0?"":C.type+""}l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function u(C){e:for(var M=C.length,g=1,P=-1,T;g<M;++g)switch(C[g]){case".":P=T=g;break;case"0":P===0&&(P=g),T=g;break;default:if(!+C[g])break e;P>0&&(P=0);break}return P>0?C.slice(0,P)+C.slice(T+1):C}var c;function f(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1],F=T-(c=Math.max(-8,Math.min(8,Math.floor(T/3)))*3)+1,q=P.length;return F===q?P:F>q?P+new Array(F-q+1).join("0"):F>0?P.slice(0,F)+"."+P.slice(F):"0."+new Array(1-F).join("0")+r(C,Math.max(0,M+F-1))[0]}function h(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1];return T<0?"0."+new Array(-T).join("0")+P:P.length>T+1?P.slice(0,T+1)+"."+P.slice(T+1):P+new Array(T-P.length+2).join("0")}var d={"%":function(C,M){return(C*100).toFixed(M)},b:function(C){return Math.round(C).toString(2)},c:function(C){return C+""},d:t,e:function(C,M){return C.toExponential(M)},f:function(C,M){return C.toFixed(M)},g:function(C,M){return C.toPrecision(M)},o:function(C){return Math.round(C).toString(8)},p:function(C,M){return h(C*100,M)},r:h,s:f,X:function(C){return Math.round(C).toString(16).toUpperCase()},x:function(C){return Math.round(C).toString(16)}};function v(C){return C}var x=Array.prototype.map,b=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function p(C){var M=C.grouping===void 0||C.thousands===void 0?v:i(x.call(C.grouping,Number),C.thousands+""),g=C.currency===void 0?"":C.currency[0]+"",P=C.currency===void 0?"":C.currency[1]+"",T=C.decimal===void 0?".":C.decimal+"",F=C.numerals===void 0?v:a(x.call(C.numerals,String)),q=C.percent===void 0?"%":C.percent+"",V=C.minus===void 0?"-":C.minus+"",H=C.nan===void 0?"NaN":C.nan+"";function X(N){N=s(N);var W=N.fill,re=N.align,ae=N.sign,_e=N.symbol,Me=N.zero,ke=N.width,ge=N.comma,ie=N.precision,Te=N.trim,Ee=N.type;Ee==="n"?(ge=!0,Ee="g"):d[Ee]||(ie===void 0&&(ie=12),Te=!0,Ee="g"),(Me||W==="0"&&re==="=")&&(Me=!0,W="0",re="=");var Ae=_e==="$"?g:_e==="#"&&/[boxX]/.test(Ee)?"0"+Ee.toLowerCase():"",ze=_e==="$"?P:/[%p]/.test(Ee)?q:"",Ce=d[Ee],me=/[defgprs%]/.test(Ee);ie=ie===void 0?6:/[gprs]/.test(Ee)?Math.max(1,Math.min(21,ie)):Math.max(0,Math.min(20,ie));function Re(ce){var Ge=Ae,nt=ze,ct,qt,rt;if(Ee==="c")nt=Ce(ce)+nt,ce="";else{ce=+ce;var ot=ce<0||1/ce<0;if(ce=isNaN(ce)?H:Ce(Math.abs(ce),ie),Te&&(ce=u(ce)),ot&&+ce==0&&ae!=="+"&&(ot=!1),Ge=(ot?ae==="("?ae:V:ae==="-"||ae==="("?"":ae)+Ge,nt=(Ee==="s"?b[8+c/3]:"")+nt+(ot&&ae==="("?")":""),me){for(ct=-1,qt=ce.length;++ct<qt;)if(rt=ce.charCodeAt(ct),48>rt||rt>57){nt=(rt===46?T+ce.slice(ct+1):ce.slice(ct))+nt,ce=ce.slice(0,ct);break}}}ge&&!Me&&(ce=M(ce,1/0));var Rt=Ge.length+ce.length+nt.length,kt=Rt<ke?new Array(ke-Rt+1).join(W):"";switch(ge&&Me&&(ce=M(kt+ce,kt.length?ke-nt.length:1/0),kt=""),re){case"<":ce=Ge+ce+nt+kt;break;case"=":ce=Ge+kt+ce+nt;break;case"^":ce=kt.slice(0,Rt=kt.length>>1)+Ge+ce+nt+kt.slice(Rt);break;default:ce=kt+Ge+ce+nt;break}return F(ce)}return Re.toString=function(){return N+""},Re}function G(N,W){var re=X((N=s(N),N.type="f",N)),ae=Math.max(-8,Math.min(8,Math.floor(n(W)/3)))*3,_e=Math.pow(10,-ae),Me=b[8+ae/3];return function(ke){return re(_e*ke)+Me}}return{format:X,formatPrefix:G}}var E;k({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function k(C){return E=p(C),e.format=E.format,e.formatPrefix=E.formatPrefix,E}function A(C){return Math.max(0,-n(Math.abs(C)))}function L(C,M){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(n(M)/3)))*3-n(Math.abs(C)))}function _(C,M){return C=Math.abs(C),M=Math.abs(M)-C,Math.max(0,n(M)-n(C))+1}e.FormatSpecifier=l,e.formatDefaultLocale=k,e.formatLocale=p,e.formatSpecifier=s,e.precisionFixed=A,e.precisionPrefix=L,e.precisionRound=_,Object.defineProperty(e,"__esModule",{value:!0})})});var lee=ye((OQt,see)=>{"use strict";see.exports=function(e){for(var t=e.length,r,n=0;n<t;n++)if(r=e.charCodeAt(n),(r<9||r>13)&&r!==32&&r!==133&&r!==160&&r!==5760&&r!==6158&&(r<8192||r>8205)&&r!==8232&&r!==8233&&r!==8239&&r!==8287&&r!==8288&&r!==12288&&r!==65279)return!1;return!0}});var uo=ye((BQt,uee)=>{"use strict";var KQe=lee();uee.exports=function(e){var t=typeof e;if(t==="string"){var r=e;if(e=+e,e===0&&KQe(r))return!1}else if(t!=="number")return!1;return e-e<1}});var es=ye((NQt,cee)=>{"use strict";cee.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}});var pq=ye((o6,fee)=>{(function(e,t){typeof o6=="object"&&typeof fee!="undefined"?t(o6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e["base64-arraybuffer"]={}))})(o6,function(e){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),n=0;n<t.length;n++)r[t.charCodeAt(n)]=n;var i=function(o){var s=new Uint8Array(o),l,u=s.length,c="";for(l=0;l<u;l+=3)c+=t[s[l]>>2],c+=t[(s[l]&3)<<4|s[l+1]>>4],c+=t[(s[l+1]&15)<<2|s[l+2]>>6],c+=t[s[l+2]&63];return u%3===2?c=c.substring(0,c.length-1)+"=":u%3===1&&(c=c.substring(0,c.length-2)+"=="),c},a=function(o){var s=o.length*.75,l=o.length,u,c=0,f,h,d,v;o[o.length-1]==="="&&(s--,o[o.length-2]==="="&&s--);var x=new ArrayBuffer(s),b=new Uint8Array(x);for(u=0;u<l;u+=4)f=r[o.charCodeAt(u)],h=r[o.charCodeAt(u+1)],d=r[o.charCodeAt(u+2)],v=r[o.charCodeAt(u+3)],b[c++]=f<<2|h>>4,b[c++]=(h&15)<<4|d>>2,b[c++]=(d&3)<<6|v&63;return x};e.decode=a,e.encode=i,Object.defineProperty(e,"__esModule",{value:!0})})});var gy=ye((UQt,hee)=>{"use strict";hee.exports=function(t){return window&&window.process&&window.process.versions?Object.prototype.toString.call(t)==="[object Object]":Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}});var vv=ye(mg=>{"use strict";var JQe=pq().decode,$Qe=gy(),gq=Array.isArray,QQe=ArrayBuffer,eet=DataView;function dee(e){return QQe.isView(e)&&!(e instanceof eet)}mg.isTypedArray=dee;function s6(e){return gq(e)||dee(e)}mg.isArrayOrTypedArray=s6;function tet(e){return!s6(e[0])}mg.isArray1D=tet;mg.ensureArray=function(e,t){return gq(e)||(e=[]),e.length=t,e};var Md={u1c:typeof Uint8ClampedArray=="undefined"?void 0:Uint8ClampedArray,i1:typeof Int8Array=="undefined"?void 0:Int8Array,u1:typeof Uint8Array=="undefined"?void 0:Uint8Array,i2:typeof Int16Array=="undefined"?void 0:Int16Array,u2:typeof Uint16Array=="undefined"?void 0:Uint16Array,i4:typeof Int32Array=="undefined"?void 0:Int32Array,u4:typeof Uint32Array=="undefined"?void 0:Uint32Array,f4:typeof Float32Array=="undefined"?void 0:Float32Array,f8:typeof Float64Array=="undefined"?void 0:Float64Array};Md.uint8c=Md.u1c;Md.uint8=Md.u1;Md.int8=Md.i1;Md.uint16=Md.u2;Md.int16=Md.i2;Md.uint32=Md.u4;Md.int32=Md.i4;Md.float32=Md.f4;Md.float64=Md.f8;function mq(e){return e.constructor===ArrayBuffer}mg.isArrayBuffer=mq;mg.decodeTypedArraySpec=function(e){var t=[],r=ret(e),n=r.dtype,i=Md[n];if(!i)throw new Error('Error in dtype: "'+n+'"');var a=i.BYTES_PER_ELEMENT,o=r.bdata;mq(o)||(o=JQe(o));var s=r.shape===void 0?[o.byteLength/a]:(""+r.shape).split(",");s.reverse();var l=s.length,u,c,f=+s[0],h=a*f,d=0;if(l===1)t=new i(o);else if(l===2)for(u=+s[1],c=0;c<u;c++)t[c]=new i(o,d,f),d+=h;else if(l===3){u=+s[1];for(var v=+s[2],x=0;x<v;x++)for(t[x]=[],c=0;c<u;c++)t[x][c]=new i(o,d,f),d+=h}else throw new Error("ndim: "+l+'is not supported with the shape:"'+r.shape+'"');return t.bdata=r.bdata,t.dtype=r.dtype,t.shape=s.reverse().join(","),e._inputArray=t,t};mg.isTypedArraySpec=function(e){return $Qe(e)&&e.hasOwnProperty("dtype")&&typeof e.dtype=="string"&&e.hasOwnProperty("bdata")&&(typeof e.bdata=="string"||mq(e.bdata))&&(e.shape===void 0||e.hasOwnProperty("shape")&&(typeof e.shape=="string"||typeof e.shape=="number"))};function ret(e){return{bdata:e.bdata,dtype:e.dtype,shape:e.shape}}mg.concat=function(){var e=[],t=!0,r=0,n,i,a,o,s,l,u,c;for(a=0;a<arguments.length;a++)o=arguments[a],l=o.length,l&&(i?e.push(o):(i=o,s=l),gq(o)?n=!1:(t=!1,r?n!==o.constructor&&(n=!1):n=o.constructor),r+=l);if(!r)return[];if(!e.length)return i;if(t)return i.concat.apply(i,e);if(n){for(u=new n(r),u.set(i),a=0;a<e.length;a++)o=e[a],u.set(o,s),s+=o.length;return u}for(u=new Array(r),c=0;c<i.length;c++)u[c]=i[c];for(a=0;a<e.length;a++){for(o=e[a],c=0;c<o.length;c++)u[s+c]=o[c];s+=c}return u};mg.maxRowLength=function(e){return vee(e,Math.max,0)};mg.minRowLength=function(e){return vee(e,Math.min,1/0)};function vee(e,t,r){if(s6(e))if(s6(e[0])){for(var n=r,i=0;i<e.length;i++)n=t(n,e[i].length);return n}else return e.length;return 0}});var ES=ye((HQt,_ee)=>{"use strict";var pee=uo(),_q=vv().isArrayOrTypedArray;_ee.exports=function(t,r){if(pee(r))r=String(r);else if(typeof r!="string"||r.substr(r.length-4)==="[-1]")throw"bad property string";var n=r.split("."),i,a,o,s;for(s=0;s<n.length;s++)if(String(n[s]).slice(0,2)==="__")throw"bad property string";for(s=0;s<n.length;){if(i=String(n[s]).match(/^([^\[\]]*)((\[\-?[0-9]*\])+)$/),i){if(i[1])n[s]=i[1];else if(s===0)n.splice(0,1);else throw"bad property string";for(a=i[2].substr(1,i[2].length-2).split("]["),o=0;o<a.length;o++)s++,n.splice(s,0,Number(a[o]))}s++}return typeof t!="object"?oet(t,r,n):{set:mee(t,n,r),get:gee(t,n),astr:r,parts:n,obj:t}};function gee(e,t){return function(r){var n=e,i,a,o,s,l;for(s=0;s<t.length-1;s++){if(i=t[s],i===-1){for(a=!0,o=[],l=0;l<n.length;l++)o[l]=gee(n[l],t.slice(s+1))(r),o[l]!==o[0]&&(a=!1);return a?o[0]:o}if(typeof i=="number"&&!_q(n)||(n=n[i],typeof n!="object"||n===null))return}if(!(typeof n!="object"||n===null)&&(o=n[t[s]],!(!r&&o===null)))return o}}var iet=/(^|\.)args\[/;function yq(e,t){return e===void 0||e===null&&!t.match(iet)}function mee(e,t,r){return function(n){var i=e,a="",o=[[e,a]],s=yq(n,r),l,u;for(u=0;u<t.length-1;u++){if(l=t[u],typeof l=="number"&&!_q(i))throw"array index but container is not an array";if(l===-1){if(s=!aet(i,t.slice(u+1),n,r),s)break;return}if(!yee(i,l,t[u+1],s))break;if(i=i[l],typeof i!="object"||i===null)throw"container is not an object";a=net(a,l),o.push([i,a])}if(s){if(u===t.length-1&&(delete i[t[u]],Array.isArray(i)&&+t[u]===i.length-1))for(;i.length&&i[i.length-1]===void 0;)i.pop()}else i[t[u]]=n}}function net(e,t){var r=t;return pee(t)?r="["+t+"]":e&&(r="."+t),e+r}function aet(e,t,r,n){var i=_q(r),a=!0,o=r,s=n.replace("-1",0),l=i?!1:yq(r,s),u=t[0],c;for(c=0;c<e.length;c++)s=n.replace("-1",c),i&&(o=r[c%r.length],l=yq(o,s)),l&&(a=!1),yee(e,c,u,l)&&mee(e[c],t,n.replace("-1",c))(o);return a}function yee(e,t,r,n){if(e[t]===void 0){if(n)return!1;typeof r=="number"?e[t]=[]:e[t]={}}return!0}function oet(e,t,r){return{set:function(){throw"bad container"},get:function(){},astr:t,parts:r,obj:e}}});var Tee=ye((GQt,wee)=>{"use strict";var t3=ES(),set=/^\w*$/,uet=0,xee=1,l6=2,bee=3,ob=4;wee.exports=function(t,r,n,i){n=n||"name",i=i||"value";var a,o,s,l={};r&&r.length?(s=t3(t,r),o=s.get()):o=t,r=r||"";var u={};if(o)for(a=0;a<o.length;a++)u[o[a][n]]=a;var c=set.test(i),f={set:function(h,d){var v=d===null?ob:uet;if(!o){if(!s||v===ob)return;o=[],s.set(o)}var x=u[h];if(x===void 0){if(v===ob)return;v=v|bee,x=o.length,u[h]=x}else d!==(c?o[x][i]:t3(o[x],i).get())&&(v=v|l6);var b=o[x]=o[x]||{};return b[n]=h,c?b[i]=d:t3(b,i).set(d),d!==null&&(v=v&~ob),l[x]=l[x]|v,f},get:function(h){if(o){var d=u[h];if(d!==void 0)return c?o[d][i]:t3(o[d],i).get()}},rename:function(h,d){var v=u[h];return v===void 0||(l[v]=l[v]|xee,u[d]=v,delete u[h],o[v][n]=d),f},remove:function(h){var d=u[h];if(d===void 0)return f;var v=o[d];if(Object.keys(v).length>2)return l[d]=l[d]|l6,f.set(h,null);if(c){for(a=d;a<o.length;a++)l[a]=l[a]|bee;for(a=d;a<o.length;a++)u[o[a][n]]--;o.splice(d,1),delete u[h]}else t3(v,i).set(null),l[d]=l[d]|l6|ob;return f},constructUpdate:function(){for(var h,d,v={},x=Object.keys(l),b=0;b<x.length;b++)d=x[b],h=r+"["+d+"]",o[d]?(l[d]&xee&&(v[h+"."+n]=o[d][n]),l[d]&l6&&(c?v[h+"."+i]=l[d]&ob?null:o[d][i]:v[h+"."+i]=l[d]&ob?null:t3(o[d],i).get())):v[h]=null;return v}};return f}});var See=ye((jQt,Aee)=>{"use strict";var cet=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,fet=/^[^\.\[\]]+$/;Aee.exports=function(e,t){for(;t;){var r=e.match(cet);if(r)e=r[1];else if(e.match(fet))e="";else throw new Error("bad relativeAttr call:"+[e,t]);if(t.charAt(0)==="^")t=t.slice(1);else break}return e&&t.charAt(0)!=="["?e+"."+t:e+t}});var u6=ye((WQt,Mee)=>{"use strict";var het=uo();Mee.exports=function(t,r){if(t>0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(r[0],r[1]))/Math.LN10;return het(n)||(n=Math.log(Math.max(r[0],r[1]))/Math.LN10-6),n}});var Cee=ye((ZQt,kee)=>{"use strict";var Eee=vv().isArrayOrTypedArray,kS=gy();kee.exports=function e(t,r){for(var n in r){var i=r[n],a=t[n];if(a!==i)if(n.charAt(0)==="_"||typeof i=="function"){if(n in t)continue;t[n]=i}else if(Eee(i)&&Eee(a)&&kS(i[0])){if(n==="customdata"||n==="ids")continue;for(var o=Math.min(i.length,a.length),s=0;s<o;s++)a[s]!==i[s]&&kS(i[s])&&kS(a[s])&&e(a[s],i[s])}else kS(i)&&kS(a)&&(e(a,i),Object.keys(a).length||delete t[n])}}});var r3=ye((XQt,Lee)=>{"use strict";function det(e,t){var r=e%t;return r<0?r+t:r}function vet(e,t){return Math.abs(e)>t/2?e-Math.round(e/t)*t:e}Lee.exports={mod:det,modHalf:vet}});var id=ye((YQt,c6)=>{(function(e){var t=/^\s+/,r=/\s+$/,n=0,i=e.round,a=e.min,o=e.max,s=e.random;function l(me,Re){if(me=me||"",Re=Re||{},me instanceof l)return me;if(!(this instanceof l))return new l(me,Re);var ce=u(me);this._originalInput=me,this._r=ce.r,this._g=ce.g,this._b=ce.b,this._a=ce.a,this._roundA=i(100*this._a)/100,this._format=Re.format||ce.format,this._gradientType=Re.gradientType,this._r<1&&(this._r=i(this._r)),this._g<1&&(this._g=i(this._g)),this._b<1&&(this._b=i(this._b)),this._ok=ce.ok,this._tc_id=n++}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var me=this.toRgb();return(me.r*299+me.g*587+me.b*114)/1e3},getLuminance:function(){var me=this.toRgb(),Re,ce,Ge,nt,ct,qt;return Re=me.r/255,ce=me.g/255,Ge=me.b/255,Re<=.03928?nt=Re/12.92:nt=e.pow((Re+.055)/1.055,2.4),ce<=.03928?ct=ce/12.92:ct=e.pow((ce+.055)/1.055,2.4),Ge<=.03928?qt=Ge/12.92:qt=e.pow((Ge+.055)/1.055,2.4),.2126*nt+.7152*ct+.0722*qt},setAlpha:function(me){return this._a=N(me),this._roundA=i(100*this._a)/100,this},toHsv:function(){var me=d(this._r,this._g,this._b);return{h:me.h*360,s:me.s,v:me.v,a:this._a}},toHsvString:function(){var me=d(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.v*100);return this._a==1?"hsv("+Re+", "+ce+"%, "+Ge+"%)":"hsva("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHsl:function(){var me=f(this._r,this._g,this._b);return{h:me.h*360,s:me.s,l:me.l,a:this._a}},toHslString:function(){var me=f(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.l*100);return this._a==1?"hsl("+Re+", "+ce+"%, "+Ge+"%)":"hsla("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHex:function(me){return x(this._r,this._g,this._b,me)},toHexString:function(me){return"#"+this.toHex(me)},toHex8:function(me){return b(this._r,this._g,this._b,this._a,me)},toHex8String:function(me){return"#"+this.toHex8(me)},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(W(this._r,255)*100)+"%",g:i(W(this._g,255)*100)+"%",b:i(W(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%)":"rgba("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:X[x(this._r,this._g,this._b,!0)]||!1},toFilter:function(me){var Re="#"+p(this._r,this._g,this._b,this._a),ce=Re,Ge=this._gradientType?"GradientType = 1, ":"";if(me){var nt=l(me);ce="#"+p(nt._r,nt._g,nt._b,nt._a)}return"progid:DXImageTransform.Microsoft.gradient("+Ge+"startColorstr="+Re+",endColorstr="+ce+")"},toString:function(me){var Re=!!me;me=me||this._format;var ce=!1,Ge=this._a<1&&this._a>=0,nt=!Re&&Ge&&(me==="hex"||me==="hex6"||me==="hex3"||me==="hex4"||me==="hex8"||me==="name");return nt?me==="name"&&this._a===0?this.toName():this.toRgbString():(me==="rgb"&&(ce=this.toRgbString()),me==="prgb"&&(ce=this.toPercentageRgbString()),(me==="hex"||me==="hex6")&&(ce=this.toHexString()),me==="hex3"&&(ce=this.toHexString(!0)),me==="hex4"&&(ce=this.toHex8String(!0)),me==="hex8"&&(ce=this.toHex8String()),me==="name"&&(ce=this.toName()),me==="hsl"&&(ce=this.toHslString()),me==="hsv"&&(ce=this.toHsvString()),ce||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(me,Re){var ce=me.apply(null,[this].concat([].slice.call(Re)));return this._r=ce._r,this._g=ce._g,this._b=ce._b,this.setAlpha(ce._a),this},lighten:function(){return this._applyModification(L,arguments)},brighten:function(){return this._applyModification(_,arguments)},darken:function(){return this._applyModification(C,arguments)},desaturate:function(){return this._applyModification(E,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(A,arguments)},spin:function(){return this._applyModification(M,arguments)},_applyCombination:function(me,Re){return me.apply(null,[this].concat([].slice.call(Re)))},analogous:function(){return this._applyCombination(q,arguments)},complement:function(){return this._applyCombination(g,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(P,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},l.fromRatio=function(me,Re){if(typeof me=="object"){var ce={};for(var Ge in me)me.hasOwnProperty(Ge)&&(Ge==="a"?ce[Ge]=me[Ge]:ce[Ge]=ge(me[Ge]));me=ce}return l(me,Re)};function u(me){var Re={r:0,g:0,b:0},ce=1,Ge=null,nt=null,ct=null,qt=!1,rt=!1;return typeof me=="string"&&(me=ze(me)),typeof me=="object"&&(Ae(me.r)&&Ae(me.g)&&Ae(me.b)?(Re=c(me.r,me.g,me.b),qt=!0,rt=String(me.r).substr(-1)==="%"?"prgb":"rgb"):Ae(me.h)&&Ae(me.s)&&Ae(me.v)?(Ge=ge(me.s),nt=ge(me.v),Re=v(me.h,Ge,nt),qt=!0,rt="hsv"):Ae(me.h)&&Ae(me.s)&&Ae(me.l)&&(Ge=ge(me.s),ct=ge(me.l),Re=h(me.h,Ge,ct),qt=!0,rt="hsl"),me.hasOwnProperty("a")&&(ce=me.a)),ce=N(ce),{ok:qt,format:me.format||rt,r:a(255,o(Re.r,0)),g:a(255,o(Re.g,0)),b:a(255,o(Re.b,0)),a:ce}}function c(me,Re,ce){return{r:W(me,255)*255,g:W(Re,255)*255,b:W(ce,255)*255}}function f(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=(Ge+nt)/2;if(Ge==nt)ct=qt=0;else{var ot=Ge-nt;switch(qt=rt>.5?ot/(2-Ge-nt):ot/(Ge+nt),Ge){case me:ct=(Re-ce)/ot+(Re<ce?6:0);break;case Re:ct=(ce-me)/ot+2;break;case ce:ct=(me-Re)/ot+4;break}ct/=6}return{h:ct,s:qt,l:rt}}function h(me,Re,ce){var Ge,nt,ct;me=W(me,360),Re=W(Re,100),ce=W(ce,100);function qt(Rt,kt,Ct){return Ct<0&&(Ct+=1),Ct>1&&(Ct-=1),Ct<1/6?Rt+(kt-Rt)*6*Ct:Ct<1/2?kt:Ct<2/3?Rt+(kt-Rt)*(2/3-Ct)*6:Rt}if(Re===0)Ge=nt=ct=ce;else{var rt=ce<.5?ce*(1+Re):ce+Re-ce*Re,ot=2*ce-rt;Ge=qt(ot,rt,me+1/3),nt=qt(ot,rt,me),ct=qt(ot,rt,me-1/3)}return{r:Ge*255,g:nt*255,b:ct*255}}function d(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=Ge,ot=Ge-nt;if(qt=Ge===0?0:ot/Ge,Ge==nt)ct=0;else{switch(Ge){case me:ct=(Re-ce)/ot+(Re<ce?6:0);break;case Re:ct=(ce-me)/ot+2;break;case ce:ct=(me-Re)/ot+4;break}ct/=6}return{h:ct,s:qt,v:rt}}function v(me,Re,ce){me=W(me,360)*6,Re=W(Re,100),ce=W(ce,100);var Ge=e.floor(me),nt=me-Ge,ct=ce*(1-Re),qt=ce*(1-nt*Re),rt=ce*(1-(1-nt)*Re),ot=Ge%6,Rt=[ce,qt,ct,ct,rt,ce][ot],kt=[rt,ce,ce,qt,ct,ct][ot],Ct=[ct,ct,rt,ce,ce,qt][ot];return{r:Rt*255,g:kt*255,b:Ct*255}}function x(me,Re,ce,Ge){var nt=[ke(i(me).toString(16)),ke(i(Re).toString(16)),ke(i(ce).toString(16))];return Ge&&nt[0].charAt(0)==nt[0].charAt(1)&&nt[1].charAt(0)==nt[1].charAt(1)&&nt[2].charAt(0)==nt[2].charAt(1)?nt[0].charAt(0)+nt[1].charAt(0)+nt[2].charAt(0):nt.join("")}function b(me,Re,ce,Ge,nt){var ct=[ke(i(me).toString(16)),ke(i(Re).toString(16)),ke(i(ce).toString(16)),ke(ie(Ge))];return nt&&ct[0].charAt(0)==ct[0].charAt(1)&&ct[1].charAt(0)==ct[1].charAt(1)&&ct[2].charAt(0)==ct[2].charAt(1)&&ct[3].charAt(0)==ct[3].charAt(1)?ct[0].charAt(0)+ct[1].charAt(0)+ct[2].charAt(0)+ct[3].charAt(0):ct.join("")}function p(me,Re,ce,Ge){var nt=[ke(ie(Ge)),ke(i(me).toString(16)),ke(i(Re).toString(16)),ke(i(ce).toString(16))];return nt.join("")}l.equals=function(me,Re){return!me||!Re?!1:l(me).toRgbString()==l(Re).toRgbString()},l.random=function(){return l.fromRatio({r:s(),g:s(),b:s()})};function E(me,Re){Re=Re===0?0:Re||10;var ce=l(me).toHsl();return ce.s-=Re/100,ce.s=re(ce.s),l(ce)}function k(me,Re){Re=Re===0?0:Re||10;var ce=l(me).toHsl();return ce.s+=Re/100,ce.s=re(ce.s),l(ce)}function A(me){return l(me).desaturate(100)}function L(me,Re){Re=Re===0?0:Re||10;var ce=l(me).toHsl();return ce.l+=Re/100,ce.l=re(ce.l),l(ce)}function _(me,Re){Re=Re===0?0:Re||10;var ce=l(me).toRgb();return ce.r=o(0,a(255,ce.r-i(255*-(Re/100)))),ce.g=o(0,a(255,ce.g-i(255*-(Re/100)))),ce.b=o(0,a(255,ce.b-i(255*-(Re/100)))),l(ce)}function C(me,Re){Re=Re===0?0:Re||10;var ce=l(me).toHsl();return ce.l-=Re/100,ce.l=re(ce.l),l(ce)}function M(me,Re){var ce=l(me).toHsl(),Ge=(ce.h+Re)%360;return ce.h=Ge<0?360+Ge:Ge,l(ce)}function g(me){var Re=l(me).toHsl();return Re.h=(Re.h+180)%360,l(Re)}function P(me){var Re=l(me).toHsl(),ce=Re.h;return[l(me),l({h:(ce+120)%360,s:Re.s,l:Re.l}),l({h:(ce+240)%360,s:Re.s,l:Re.l})]}function T(me){var Re=l(me).toHsl(),ce=Re.h;return[l(me),l({h:(ce+90)%360,s:Re.s,l:Re.l}),l({h:(ce+180)%360,s:Re.s,l:Re.l}),l({h:(ce+270)%360,s:Re.s,l:Re.l})]}function F(me){var Re=l(me).toHsl(),ce=Re.h;return[l(me),l({h:(ce+72)%360,s:Re.s,l:Re.l}),l({h:(ce+216)%360,s:Re.s,l:Re.l})]}function q(me,Re,ce){Re=Re||6,ce=ce||30;var Ge=l(me).toHsl(),nt=360/ce,ct=[l(me)];for(Ge.h=(Ge.h-(nt*Re>>1)+720)%360;--Re;)Ge.h=(Ge.h+nt)%360,ct.push(l(Ge));return ct}function V(me,Re){Re=Re||6;for(var ce=l(me).toHsv(),Ge=ce.h,nt=ce.s,ct=ce.v,qt=[],rt=1/Re;Re--;)qt.push(l({h:Ge,s:nt,v:ct})),ct=(ct+rt)%1;return qt}l.mix=function(me,Re,ce){ce=ce===0?0:ce||50;var Ge=l(me).toRgb(),nt=l(Re).toRgb(),ct=ce/100,qt={r:(nt.r-Ge.r)*ct+Ge.r,g:(nt.g-Ge.g)*ct+Ge.g,b:(nt.b-Ge.b)*ct+Ge.b,a:(nt.a-Ge.a)*ct+Ge.a};return l(qt)},l.readability=function(me,Re){var ce=l(me),Ge=l(Re);return(e.max(ce.getLuminance(),Ge.getLuminance())+.05)/(e.min(ce.getLuminance(),Ge.getLuminance())+.05)},l.isReadable=function(me,Re,ce){var Ge=l.readability(me,Re),nt,ct;switch(ct=!1,nt=Ce(ce),nt.level+nt.size){case"AAsmall":case"AAAlarge":ct=Ge>=4.5;break;case"AAlarge":ct=Ge>=3;break;case"AAAsmall":ct=Ge>=7;break}return ct},l.mostReadable=function(me,Re,ce){var Ge=null,nt=0,ct,qt,rt,ot;ce=ce||{},qt=ce.includeFallbackColors,rt=ce.level,ot=ce.size;for(var Rt=0;Rt<Re.length;Rt++)ct=l.readability(me,Re[Rt]),ct>nt&&(nt=ct,Ge=l(Re[Rt]));return l.isReadable(me,Ge,{level:rt,size:ot})||!qt?Ge:(ce.includeFallbackColors=!1,l.mostReadable(me,["#fff","#000"],ce))};var H=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},X=l.hexNames=G(H);function G(me){var Re={};for(var ce in me)me.hasOwnProperty(ce)&&(Re[me[ce]]=ce);return Re}function N(me){return me=parseFloat(me),(isNaN(me)||me<0||me>1)&&(me=1),me}function W(me,Re){_e(me)&&(me="100%");var ce=Me(me);return me=a(Re,o(0,parseFloat(me))),ce&&(me=parseInt(me*Re,10)/100),e.abs(me-Re)<1e-6?1:me%Re/parseFloat(Re)}function re(me){return a(1,o(0,me))}function ae(me){return parseInt(me,16)}function _e(me){return typeof me=="string"&&me.indexOf(".")!=-1&&parseFloat(me)===1}function Me(me){return typeof me=="string"&&me.indexOf("%")!=-1}function ke(me){return me.length==1?"0"+me:""+me}function ge(me){return me<=1&&(me=me*100+"%"),me}function ie(me){return e.round(parseFloat(me)*255).toString(16)}function Te(me){return ae(me)/255}var Ee=function(){var me="[-\\+]?\\d+%?",Re="[-\\+]?\\d*\\.\\d+%?",ce="(?:"+Re+")|(?:"+me+")",Ge="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?",nt="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?";return{CSS_UNIT:new RegExp(ce),rgb:new RegExp("rgb"+Ge),rgba:new RegExp("rgba"+nt),hsl:new RegExp("hsl"+Ge),hsla:new RegExp("hsla"+nt),hsv:new RegExp("hsv"+Ge),hsva:new RegExp("hsva"+nt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ae(me){return!!Ee.CSS_UNIT.exec(me)}function ze(me){me=me.replace(t,"").replace(r,"").toLowerCase();var Re=!1;if(H[me])me=H[me],Re=!0;else if(me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ce;return(ce=Ee.rgb.exec(me))?{r:ce[1],g:ce[2],b:ce[3]}:(ce=Ee.rgba.exec(me))?{r:ce[1],g:ce[2],b:ce[3],a:ce[4]}:(ce=Ee.hsl.exec(me))?{h:ce[1],s:ce[2],l:ce[3]}:(ce=Ee.hsla.exec(me))?{h:ce[1],s:ce[2],l:ce[3],a:ce[4]}:(ce=Ee.hsv.exec(me))?{h:ce[1],s:ce[2],v:ce[3]}:(ce=Ee.hsva.exec(me))?{h:ce[1],s:ce[2],v:ce[3],a:ce[4]}:(ce=Ee.hex8.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),a:Te(ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex6.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),format:Re?"name":"hex"}:(ce=Ee.hex4.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),a:Te(ce[4]+""+ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex3.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),format:Re?"name":"hex"}:!1}function Ce(me){var Re,ce;return me=me||{level:"AA",size:"small"},Re=(me.level||"AA").toUpperCase(),ce=(me.size||"small").toLowerCase(),Re!=="AA"&&Re!=="AAA"&&(Re="AA"),ce!=="small"&&ce!=="large"&&(ce="small"),{level:Re,size:ce}}typeof c6!="undefined"&&c6.exports?c6.exports=l:window.tinycolor=l})(Math)});var no=ye(PS=>{"use strict";var Pee=gy(),CS=Array.isArray;function pet(e,t){var r,n;for(r=0;r<e.length;r++){if(n=e[r],n!==null&&typeof n=="object")return!1;n!==void 0&&(t[r]=n)}return!0}PS.extendFlat=function(){return LS(arguments,!1,!1,!1)};PS.extendDeep=function(){return LS(arguments,!0,!1,!1)};PS.extendDeepAll=function(){return LS(arguments,!0,!0,!1)};PS.extendDeepNoArrays=function(){return LS(arguments,!0,!1,!0)};function LS(e,t,r,n){var i=e[0],a=e.length,o,s,l,u,c,f,h;if(a===2&&CS(i)&&CS(e[1])&&i.length===0){if(h=pet(e[1],i),h)return i;i.splice(0,i.length)}for(var d=1;d<a;d++){o=e[d];for(s in o)l=i[s],u=o[s],n&&CS(u)?i[s]=u:t&&u&&(Pee(u)||(c=CS(u)))?(c?(c=!1,f=l&&CS(l)?l:[]):f=l&&Pee(l)?l:{},i[s]=LS([f,u],t,r,n)):(typeof u!="undefined"||r)&&(i[s]=u)}return i}});var Su=ye((JQt,Iee)=>{"use strict";Iee.exports=function(e){var t=e.variantValues,r=e.editType,n=e.colorEditType;n===void 0&&(n=r);var i={editType:r,valType:"integer",min:1,max:1e3,extras:["normal","bold"],dflt:"normal"};e.noNumericWeightValues&&(i.valType="enumerated",i.values=i.extras,i.extras=void 0,i.min=void 0,i.max=void 0);var a={family:{valType:"string",noBlank:!0,strict:!0,editType:r},size:{valType:"number",min:1,editType:r},color:{valType:"color",editType:n},weight:i,style:{editType:r,valType:"enumerated",values:["normal","italic"],dflt:"normal"},variant:e.noFontVariant?void 0:{editType:r,valType:"enumerated",values:t||["normal","small-caps","all-small-caps","all-petite-caps","petite-caps","unicase"],dflt:"normal"},textcase:e.noFontTextcase?void 0:{editType:r,valType:"enumerated",values:["normal","word caps","upper","lower"],dflt:"normal"},lineposition:e.noFontLineposition?void 0:{editType:r,valType:"flaglist",flags:["under","over","through"],extras:["none"],dflt:"none"},shadow:e.noFontShadow?void 0:{editType:r,valType:"string",dflt:e.autoShadowDflt?"auto":"none"},editType:r};return e.autoSize&&(a.size.dflt="auto"),e.autoColor&&(a.color.dflt="auto"),e.arrayOk&&(a.family.arrayOk=!0,a.weight.arrayOk=!0,a.style.arrayOk=!0,e.noFontVariant||(a.variant.arrayOk=!0),e.noFontTextcase||(a.textcase.arrayOk=!0),e.noFontLineposition||(a.lineposition.arrayOk=!0),e.noFontShadow||(a.shadow.arrayOk=!0),a.size.arrayOk=!0,a.color.arrayOk=!0),a}});var IS=ye(($Qt,Ree)=>{"use strict";Ree.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:"Arial, sans-serif",HOVERMINTIME:50,HOVERID:"-hover"}});var N1=ye((QQt,Fee)=>{"use strict";var Dee=IS(),zee=Su(),xq=zee({editType:"none"});xq.family.dflt=Dee.HOVERFONT;xq.size.dflt=Dee.HOVERFONTSIZE;Fee.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoversubplots:{valType:"enumerated",values:["single","overlaying","axis"],dflt:"overlaying",editType:"none"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:xq,grouptitlefont:zee({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}});var i3=ye((eer,qee)=>{"use strict";var get=Su(),f6=N1().hoverlabel,h6=no().extendFlat;qee.exports={hoverlabel:{bgcolor:h6({},f6.bgcolor,{arrayOk:!0}),bordercolor:h6({},f6.bordercolor,{arrayOk:!0}),font:get({arrayOk:!0,editType:"none"}),align:h6({},f6.align,{arrayOk:!0}),namelength:h6({},f6.namelength,{arrayOk:!0}),editType:"none"}}});var vl=ye((ter,Oee)=>{"use strict";var met=Su(),yet=i3();Oee.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:met({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:yet.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},uirevision:{valType:"any",editType:"none"}}});var sb=ye((rer,Uee)=>{"use strict";var _et=id(),d6={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},Bee=d6.RdBu;function xet(e,t){if(t||(t=Bee),!e)return t;function r(){try{e=d6[e]||JSON.parse(e)}catch(n){e=t}}return typeof e=="string"&&(r(),typeof e=="string"&&r()),Nee(e)?e:t}function Nee(e){var t=0;if(!Array.isArray(e)||e.length<2||!e[0]||!e[e.length-1]||+e[0][0]!=0||+e[e.length-1][0]!=1)return!1;for(var r=0;r<e.length;r++){var n=e[r];if(n.length!==2||+n[0]<t||!_et(n[1]).isValid())return!1;t=+n[0]}return!0}function bet(e){return d6[e]!==void 0?!0:Nee(e)}Uee.exports={scales:d6,defaultScale:Bee,get:xet,isValid:bet}});var dh=ye(lb=>{"use strict";lb.defaults=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];lb.defaultLine="#444";lb.lightLine="#eee";lb.background="#fff";lb.borderLine="#BEC8D9";lb.lightFraction=100*10/11});var va=ye((ner,Vee)=>{"use strict";var xp=id(),wet=uo(),Tet=vv().isTypedArray,nd=Vee.exports={},v6=dh();nd.defaults=v6.defaults;var Aet=nd.defaultLine=v6.defaultLine;nd.lightLine=v6.lightLine;var wq=nd.background=v6.background;nd.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"};nd.rgb=function(e){return nd.tinyRGB(xp(e))};nd.opacity=function(e){return e?xp(e).getAlpha():0};nd.addOpacity=function(e,t){var r=xp(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"};nd.combine=function(e,t){var r=xp(e).toRgb();if(r.a===1)return xp(e).toRgbString();var n=xp(t||wq).toRgb(),i=n.a===1?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},a={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return xp(a).toRgbString()};nd.interpolate=function(e,t,r){var n=xp(e).toRgb(),i=xp(t).toRgb(),a={r:r*n.r+(1-r)*i.r,g:r*n.g+(1-r)*i.g,b:r*n.b+(1-r)*i.b};return xp(a).toRgbString()};nd.contrast=function(e,t,r){var n=xp(e);n.getAlpha()!==1&&(n=xp(nd.combine(e,wq)));var i=n.isDark()?t?n.lighten(t):wq:r?n.darken(r):Aet;return i.toString()};nd.stroke=function(e,t){var r=xp(t);e.style({stroke:nd.tinyRGB(r),"stroke-opacity":r.getAlpha()})};nd.fill=function(e,t){var r=xp(t);e.style({fill:nd.tinyRGB(r),"fill-opacity":r.getAlpha()})};nd.clean=function(e){if(!(!e||typeof e!="object")){var t=Object.keys(e),r,n,i,a;for(r=0;r<t.length;r++)if(i=t[r],a=e[i],i.substr(i.length-5)==="color")if(Array.isArray(a))for(n=0;n<a.length;n++)a[n]=bq(a[n]);else e[i]=bq(a);else if(i.substr(i.length-10)==="colorscale"&&Array.isArray(a))for(n=0;n<a.length;n++)Array.isArray(a[n])&&(a[n][1]=bq(a[n][1]));else if(Array.isArray(a)){var o=a[0];if(!Array.isArray(o)&&o&&typeof o=="object")for(n=0;n<a.length;n++)nd.clean(a[n])}else a&&typeof a=="object"&&!Tet(a)&&nd.clean(a)}};function bq(e){if(wet(e)||typeof e!="string")return e;var t=e.trim();if(t.substr(0,3)!=="rgb")return e;var r=t.match(/^rgba?\s*\(([^()]*)\)$/);if(!r)return e;var n=r[1].trim().split(/\s*[\s,]\s*/),i=t.charAt(3)==="a"&&n.length===4;if(!i&&n.length!==3)return e;for(var a=0;a<n.length;a++){if(!n[a].length||(n[a]=Number(n[a]),!(n[a]>=0)))return e;if(a===3)n[a]>1&&(n[a]=1);else if(n[a]>=1)return e}var o=Math.round(n[0]*255)+", "+Math.round(n[1]*255)+", "+Math.round(n[2]*255);return i?"rgba("+o+", "+n[3]+")":"rgb("+o+")"}});var U1=ye((aer,Hee)=>{"use strict";Hee.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}});var n3=ye(Gee=>{"use strict";Gee.counter=function(e,t,r,n){var i=(t||"")+(r?"":"$"),a=n===!1?"":"^";return e==="xy"?new RegExp(a+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+i):new RegExp(a+e+"([2-9]|[1-9][0-9]+)?"+i)}});var Xee=ye(bp=>{"use strict";var Tq=uo(),jee=id(),Wee=no().extendFlat,Met=vl(),Eet=sb(),ket=va(),Cet=U1().DESELECTDIM,a3=ES(),Zee=n3().counter,Let=r3().modHalf,dm=vv().isArrayOrTypedArray,V1=vv().isTypedArraySpec,H1=vv().decodeTypedArraySpec;bp.valObjectMeta={data_array:{coerceFunction:function(e,t,r){t.set(dm(e)?e:V1(e)?H1(e):r)}},enumerated:{coerceFunction:function(e,t,r,n){n.coerceNumber&&(e=+e),n.values.indexOf(e)===-1?t.set(r):t.set(e)},validateFunction:function(e,t){t.coerceNumber&&(e=+e);for(var r=t.values,n=0;n<r.length;n++){var i=String(r[n]);if(i.charAt(0)==="/"&&i.charAt(i.length-1)==="/"){var a=new RegExp(i.substr(1,i.length-2));if(a.test(e))return!0}else if(e===r[n])return!0}return!1}},boolean:{coerceFunction:function(e,t,r){e===!0||e===!1?t.set(e):t.set(r)}},number:{coerceFunction:function(e,t,r,n){V1(e)&&(e=H1(e)),!Tq(e)||n.min!==void 0&&e<n.min||n.max!==void 0&&e>n.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}V1(e)&&(e=H1(e)),e%1||!Tq(e)||n.min!==void 0&&e<n.min||n.max!==void 0&&e>n.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if(typeof e!="string"){var i=typeof e=="number";n.strict===!0||!i?t.set(r):t.set(String(e))}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),jee(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){function n(i){return jee(i).isValid()}!Array.isArray(e)||!e.length?t.set(r):e.every(n)?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(Eet.get(e,r))}},angle:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),e==="auto"?t.set("auto"):Tq(e)?t.set(Let(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var i=n.regex||Zee(r);if(typeof e=="string"&&i.test(e)){t.set(e);return}t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r?!0:typeof e!="string"?!1:!!Zee(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}if(typeof e!="string"){t.set(r);return}for(var i=e.split("+"),a=0;a<i.length;){var o=i[a];n.flags.indexOf(o)===-1||i.indexOf(o)<a?i.splice(a,1):a++}i.length?t.set(i.join("+")):t.set(r)}},any:{coerceFunction:function(e,t,r){e===void 0?t.set(r):t.set(V1(e)?H1(e):e)}},info_array:{coerceFunction:function(e,t,r,n){function i(E,k,A){var L,_={set:function(C){L=C}};return A===void 0&&(A=k.dflt),bp.valObjectMeta[k.valType].coerceFunction(E,_,A,k),L}if(V1(e)&&(e=H1(e)),!dm(e)){t.set(r);return}var a=n.dimensions===2||n.dimensions==="1-2"&&Array.isArray(e)&&dm(e[0]),o=n.items,s=[],l=Array.isArray(o),u=l&&a&&dm(o[0]),c=a&&l&&!u,f=l&&!c?o.length:e.length,h,d,v,x,b,p;if(r=Array.isArray(r)?r:[],a)for(h=0;h<f;h++)for(s[h]=[],v=dm(e[h])?e[h]:[],c?b=o.length:l?b=o[h].length:b=v.length,d=0;d<b;d++)c?x=o[d]:l?x=o[h][d]:x=o,p=i(v[d],x,(r[h]||[])[d]),p!==void 0&&(s[h][d]=p);else for(h=0;h<f;h++)p=i(e[h],l?o[h]:o,r[h]),p!==void 0&&(s[h]=p);t.set(s)},validateFunction:function(e,t){if(!dm(e))return!1;var r=t.items,n=Array.isArray(r),i=t.dimensions===2;if(!t.freeLength&&e.length!==r.length)return!1;for(var a=0;a<e.length;a++)if(i){if(!dm(e[a])||!t.freeLength&&e[a].length!==r[a].length)return!1;for(var o=0;o<e[a].length;o++)if(!p6(e[a][o],n?r[a][o]:r))return!1}else if(!p6(e[a],n?r[a]:r))return!1;return!0}}};bp.coerce=function(e,t,r,n,i){var a=a3(r,n).get(),o=a3(e,n),s=a3(t,n),l=o.get(),u=t._template;if(l===void 0&&u&&(l=a3(u,n).get(),u=0),i===void 0&&(i=a.dflt),a.arrayOk){if(dm(l))return s.set(l),l;if(V1(l))return l=H1(l),s.set(l),l}var c=bp.valObjectMeta[a.valType].coerceFunction;c(l,s,i,a);var f=s.get();return u&&f===i&&!p6(l,a)&&(l=a3(u,n).get(),c(l,s,i,a),f=s.get()),f};bp.coerce2=function(e,t,r,n,i){var a=a3(e,n),o=bp.coerce(e,t,r,n,i),s=a.get();return s!=null?o:!1};bp.coerceFont=function(e,t,r,n){n||(n={}),r=Wee({},r),r=Wee(r,n.overrideDflt||{});var i={family:e(t+".family",r.family),size:e(t+".size",r.size),color:e(t+".color",r.color),weight:e(t+".weight",r.weight),style:e(t+".style",r.style)};if(n.noFontVariant||(i.variant=e(t+".variant",r.variant)),n.noFontLineposition||(i.lineposition=e(t+".lineposition",r.lineposition)),n.noFontTextcase||(i.textcase=e(t+".textcase",r.textcase)),!n.noFontShadow){var a=r.shadow;a==="none"&&n.autoShadowDflt&&(a="auto"),i.shadow=e(t+".shadow",a)}return i};bp.coercePattern=function(e,t,r,n){var i=e(t+".shape");if(i){e(t+".solidity"),e(t+".size");var a=e(t+".fillmode"),o=a==="overlay";if(!n){var s=e(t+".bgcolor",o?r:void 0);e(t+".fgcolor",o?ket.contrast(s):r)}e(t+".fgopacity",o?.5:1)}};bp.coerceHoverinfo=function(e,t,r){var n=t._module.attributes,i=n.hoverinfo?n:Met,a=i.hoverinfo,o;if(r._dataLength===1){var s=a.dflt==="all"?a.flags.slice():a.dflt.split("+");s.splice(s.indexOf("name"),1),o=s.join("+")}return bp.coerce(e,t,i,"hoverinfo",o)};bp.coerceSelectionMarkerOpacity=function(e,t){if(e.marker){var r=e.marker.opacity;if(r!==void 0){var n,i;!dm(r)&&!e.selected&&!e.unselected&&(n=r,i=Cet*r),t("selected.marker.opacity",n),t("unselected.marker.opacity",i)}}};function p6(e,t){var r=bp.valObjectMeta[t.valType];if(t.arrayOk&&dm(e))return!0;if(r.validateFunction)return r.validateFunction(e,t);var n={},i=n,a={set:function(o){i=o}};return r.coerceFunction(e,a,n,t),i!==n}bp.validate=p6});var ub=ye((ler,$ee)=>{"use strict";var Yee={staticPlot:{valType:"boolean",dflt:!1},typesetMath:{valType:"boolean",dflt:!0},plotlyServerURL:{valType:"string",dflt:""},editable:{valType:"boolean",dflt:!1},edits:{annotationPosition:{valType:"boolean",dflt:!1},annotationTail:{valType:"boolean",dflt:!1},annotationText:{valType:"boolean",dflt:!1},axisTitleText:{valType:"boolean",dflt:!1},colorbarPosition:{valType:"boolean",dflt:!1},colorbarTitleText:{valType:"boolean",dflt:!1},legendPosition:{valType:"boolean",dflt:!1},legendText:{valType:"boolean",dflt:!1},shapePosition:{valType:"boolean",dflt:!1},titleText:{valType:"boolean",dflt:!1}},editSelection:{valType:"boolean",dflt:!0},autosizable:{valType:"boolean",dflt:!1},responsive:{valType:"boolean",dflt:!1},fillFrame:{valType:"boolean",dflt:!1},frameMargins:{valType:"number",dflt:0,min:0,max:.5},scrollZoom:{valType:"flaglist",flags:["cartesian","gl3d","geo","mapbox","map"],extras:[!0,!1],dflt:"gl3d+geo+map"},doubleClick:{valType:"enumerated",values:[!1,"reset","autosize","reset+autosize"],dflt:"reset+autosize"},doubleClickDelay:{valType:"number",dflt:300,min:0},showAxisDragHandles:{valType:"boolean",dflt:!0},showAxisRangeEntryBoxes:{valType:"boolean",dflt:!0},showTips:{valType:"boolean",dflt:!0},showLink:{valType:"boolean",dflt:!1},linkText:{valType:"string",dflt:"Edit chart",noBlank:!0},sendData:{valType:"boolean",dflt:!0},showSources:{valType:"any",dflt:!1},displayModeBar:{valType:"enumerated",values:["hover",!0,!1],dflt:"hover"},showSendToCloud:{valType:"boolean",dflt:!1},showEditInChartStudio:{valType:"boolean",dflt:!1},modeBarButtonsToRemove:{valType:"any",dflt:[]},modeBarButtonsToAdd:{valType:"any",dflt:[]},modeBarButtons:{valType:"any",dflt:!1},toImageButtonOptions:{valType:"any",dflt:{}},displaylogo:{valType:"boolean",dflt:!0},watermark:{valType:"boolean",dflt:!1},plotGlPixelRatio:{valType:"number",dflt:2,min:1,max:4},setBackground:{valType:"any",dflt:"transparent"},topojsonURL:{valType:"string",noBlank:!0,dflt:"https://cdn.plot.ly/"},mapboxAccessToken:{valType:"string",dflt:null},logging:{valType:"integer",min:0,max:2,dflt:1},notifyOnLogging:{valType:"integer",min:0,max:2,dflt:0},queueLength:{valType:"integer",min:0,dflt:0},locale:{valType:"string",dflt:"en-US"},locales:{valType:"any",dflt:{}}},Kee={};function Jee(e,t){for(var r in e){var n=e[r];n.valType?t[r]=n.dflt:(t[r]||(t[r]={}),Jee(n,t[r]))}}Jee(Yee,Kee);$ee.exports={configAttributes:Yee,dfltConfig:Kee}});var Sq=ye((uer,Qee)=>{"use strict";var Aq=xa(),Pet=uo(),RS=[];Qee.exports=function(e,t){if(RS.indexOf(e)!==-1)return;RS.push(e);var r=1e3;Pet(t)?r=t:t==="long"&&(r=3e3);var n=Aq.select("body").selectAll(".plotly-notifier").data([0]);n.enter().append("div").classed("plotly-notifier",!0);var i=n.selectAll(".notifier-note").data(RS);function a(o){o.duration(700).style("opacity",0).each("end",function(s){var l=RS.indexOf(s);l!==-1&&RS.splice(l,1),Aq.select(this).remove()})}i.enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(o){var s=Aq.select(this);s.append("button").classed("notifier-close",!0).html("×").on("click",function(){s.transition().call(a)});for(var l=s.append("p"),u=o.split(/<br\s*\/?>/g),c=0;c<u.length;c++)c&&l.append("br"),l.append("span").text(u[c]);t==="stick"?s.transition().duration(350).style("opacity",1):s.transition().duration(700).style("opacity",1).transition().delay(r).call(a)})}});var G1=ye((cer,ete)=>{"use strict";var o3=ub().dfltConfig,Mq=Sq(),Eq=ete.exports={};Eq.log=function(){var e;if(o3.logging>1){var t=["LOG:"];for(e=0;e<arguments.length;e++)t.push(arguments[e]);console.trace.apply(console,t)}if(o3.notifyOnLogging>1){var r=[];for(e=0;e<arguments.length;e++)r.push(arguments[e]);Mq(r.join("<br>"),"long")}};Eq.warn=function(){var e;if(o3.logging>0){var t=["WARN:"];for(e=0;e<arguments.length;e++)t.push(arguments[e]);console.trace.apply(console,t)}if(o3.notifyOnLogging>0){var r=[];for(e=0;e<arguments.length;e++)r.push(arguments[e]);Mq(r.join("<br>"),"stick")}};Eq.error=function(){var e;if(o3.logging>0){var t=["ERROR:"];for(e=0;e<arguments.length;e++)t.push(arguments[e]);console.error.apply(console,t)}if(o3.notifyOnLogging>0){var r=[];for(e=0;e<arguments.length;e++)r.push(arguments[e]);Mq(r.join("<br>"),"stick")}}});var g6=ye((fer,tte)=>{"use strict";tte.exports=function(){}});var kq=ye((her,rte)=>{"use strict";rte.exports=function(t,r){if(r instanceof RegExp){for(var n=r.toString(),i=0;i<t.length;i++)if(t[i]instanceof RegExp&&t[i].toString()===n)return t;t.push(r)}else(r||r===0)&&t.indexOf(r)===-1&&t.push(r);return t}});var nte=ye((der,ite)=>{ite.exports=Iet;function Iet(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var ote=ye((ver,ate)=>{ate.exports=Ret;function Ret(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}});var lte=ye((per,ste)=>{ste.exports=Det;function Det(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Cq=ye((ger,ute)=>{ute.exports=zet;function zet(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var fte=ye((mer,cte)=>{cte.exports=Fet;function Fet(e,t){if(e===t){var r=t[1],n=t[2],i=t[3],a=t[6],o=t[7],s=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=i,e[13]=o,e[14]=s}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}});var dte=ye((yer,hte)=>{hte.exports=qet;function qet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15],E=r*s-n*o,k=r*l-i*o,A=r*u-a*o,L=n*l-i*s,_=n*u-a*s,C=i*u-a*l,M=c*x-f*v,g=c*b-h*v,P=c*p-d*v,T=f*b-h*x,F=f*p-d*x,q=h*p-d*b,V=E*q-k*F+A*T+L*P-_*g+C*M;return V?(V=1/V,e[0]=(s*q-l*F+u*T)*V,e[1]=(i*F-n*q-a*T)*V,e[2]=(x*C-b*_+p*L)*V,e[3]=(h*_-f*C-d*L)*V,e[4]=(l*P-o*q-u*g)*V,e[5]=(r*q-i*P+a*g)*V,e[6]=(b*A-v*C-p*k)*V,e[7]=(c*C-h*A+d*k)*V,e[8]=(o*F-s*P+u*M)*V,e[9]=(n*P-r*F-a*M)*V,e[10]=(v*_-x*A+p*E)*V,e[11]=(f*A-c*_-d*E)*V,e[12]=(s*g-o*T-l*M)*V,e[13]=(r*T-n*g+i*M)*V,e[14]=(x*k-v*L-b*E)*V,e[15]=(c*L-f*k+h*E)*V,e):null}});var pte=ye((_er,vte)=>{vte.exports=Oet;function Oet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15];return e[0]=s*(h*p-d*b)-f*(l*p-u*b)+x*(l*d-u*h),e[1]=-(n*(h*p-d*b)-f*(i*p-a*b)+x*(i*d-a*h)),e[2]=n*(l*p-u*b)-s*(i*p-a*b)+x*(i*u-a*l),e[3]=-(n*(l*d-u*h)-s*(i*d-a*h)+f*(i*u-a*l)),e[4]=-(o*(h*p-d*b)-c*(l*p-u*b)+v*(l*d-u*h)),e[5]=r*(h*p-d*b)-c*(i*p-a*b)+v*(i*d-a*h),e[6]=-(r*(l*p-u*b)-o*(i*p-a*b)+v*(i*u-a*l)),e[7]=r*(l*d-u*h)-o*(i*d-a*h)+c*(i*u-a*l),e[8]=o*(f*p-d*x)-c*(s*p-u*x)+v*(s*d-u*f),e[9]=-(r*(f*p-d*x)-c*(n*p-a*x)+v*(n*d-a*f)),e[10]=r*(s*p-u*x)-o*(n*p-a*x)+v*(n*u-a*s),e[11]=-(r*(s*d-u*f)-o*(n*d-a*f)+c*(n*u-a*s)),e[12]=-(o*(f*b-h*x)-c*(s*b-l*x)+v*(s*h-l*f)),e[13]=r*(f*b-h*x)-c*(n*b-i*x)+v*(n*h-i*f),e[14]=-(r*(s*b-l*x)-o*(n*b-i*x)+v*(n*l-i*s)),e[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),e}});var mte=ye((xer,gte)=>{gte.exports=Bet;function Bet(e){var t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11],d=e[12],v=e[13],x=e[14],b=e[15],p=t*o-r*a,E=t*s-n*a,k=t*l-i*a,A=r*s-n*o,L=r*l-i*o,_=n*l-i*s,C=u*v-c*d,M=u*x-f*d,g=u*b-h*d,P=c*x-f*v,T=c*b-h*v,F=f*b-h*x;return p*F-E*T+k*P+A*g-L*M+_*C}});var _te=ye((ber,yte)=>{yte.exports=Net;function Net(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],f=t[8],h=t[9],d=t[10],v=t[11],x=t[12],b=t[13],p=t[14],E=t[15],k=r[0],A=r[1],L=r[2],_=r[3];return e[0]=k*n+A*s+L*f+_*x,e[1]=k*i+A*l+L*h+_*b,e[2]=k*a+A*u+L*d+_*p,e[3]=k*o+A*c+L*v+_*E,k=r[4],A=r[5],L=r[6],_=r[7],e[4]=k*n+A*s+L*f+_*x,e[5]=k*i+A*l+L*h+_*b,e[6]=k*a+A*u+L*d+_*p,e[7]=k*o+A*c+L*v+_*E,k=r[8],A=r[9],L=r[10],_=r[11],e[8]=k*n+A*s+L*f+_*x,e[9]=k*i+A*l+L*h+_*b,e[10]=k*a+A*u+L*d+_*p,e[11]=k*o+A*c+L*v+_*E,k=r[12],A=r[13],L=r[14],_=r[15],e[12]=k*n+A*s+L*f+_*x,e[13]=k*i+A*l+L*h+_*b,e[14]=k*a+A*u+L*d+_*p,e[15]=k*o+A*c+L*v+_*E,e}});var bte=ye((wer,xte)=>{xte.exports=Uet;function Uet(e,t,r){var n=r[0],i=r[1],a=r[2],o,s,l,u,c,f,h,d,v,x,b,p;return t===e?(e[12]=t[0]*n+t[4]*i+t[8]*a+t[12],e[13]=t[1]*n+t[5]*i+t[9]*a+t[13],e[14]=t[2]*n+t[6]*i+t[10]*a+t[14],e[15]=t[3]*n+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],l=t[2],u=t[3],c=t[4],f=t[5],h=t[6],d=t[7],v=t[8],x=t[9],b=t[10],p=t[11],e[0]=o,e[1]=s,e[2]=l,e[3]=u,e[4]=c,e[5]=f,e[6]=h,e[7]=d,e[8]=v,e[9]=x,e[10]=b,e[11]=p,e[12]=o*n+c*i+v*a+t[12],e[13]=s*n+f*i+x*a+t[13],e[14]=l*n+h*i+b*a+t[14],e[15]=u*n+d*i+p*a+t[15]),e}});var Tte=ye((Ter,wte)=>{wte.exports=Vet;function Vet(e,t,r){var n=r[0],i=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Ste=ye((Aer,Ate)=>{Ate.exports=Het;function Het(e,t,r,n){var i=n[0],a=n[1],o=n[2],s=Math.sqrt(i*i+a*a+o*o),l,u,c,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H;return Math.abs(s)<1e-6?null:(s=1/s,i*=s,a*=s,o*=s,l=Math.sin(r),u=Math.cos(r),c=1-u,f=t[0],h=t[1],d=t[2],v=t[3],x=t[4],b=t[5],p=t[6],E=t[7],k=t[8],A=t[9],L=t[10],_=t[11],C=i*i*c+u,M=a*i*c+o*l,g=o*i*c-a*l,P=i*a*c-o*l,T=a*a*c+u,F=o*a*c+i*l,q=i*o*c+a*l,V=a*o*c-i*l,H=o*o*c+u,e[0]=f*C+x*M+k*g,e[1]=h*C+b*M+A*g,e[2]=d*C+p*M+L*g,e[3]=v*C+E*M+_*g,e[4]=f*P+x*T+k*F,e[5]=h*P+b*T+A*F,e[6]=d*P+p*T+L*F,e[7]=v*P+E*T+_*F,e[8]=f*q+x*V+k*H,e[9]=h*q+b*V+A*H,e[10]=d*q+p*V+L*H,e[11]=v*q+E*V+_*H,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}});var Ete=ye((Ser,Mte)=>{Mte.exports=Get;function Get(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*n,e[5]=o*i+c*n,e[6]=s*i+f*n,e[7]=l*i+h*n,e[8]=u*i-a*n,e[9]=c*i-o*n,e[10]=f*i-s*n,e[11]=h*i-l*n,e}});var Cte=ye((Mer,kte)=>{kte.exports=jet;function jet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*n,e[1]=o*i-c*n,e[2]=s*i-f*n,e[3]=l*i-h*n,e[8]=a*n+u*i,e[9]=o*n+c*i,e[10]=s*n+f*i,e[11]=l*n+h*i,e}});var Pte=ye((Eer,Lte)=>{Lte.exports=Wet;function Wet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[4],c=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*n,e[1]=o*i+c*n,e[2]=s*i+f*n,e[3]=l*i+h*n,e[4]=u*i-a*n,e[5]=c*i-o*n,e[6]=f*i-s*n,e[7]=h*i-l*n,e}});var Rte=ye((ker,Ite)=>{Ite.exports=Zet;function Zet(e,t,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(u=1/u,o*=u,s*=u,l*=u,n=Math.sin(t),i=Math.cos(t),a=1-i,e[0]=o*o*a+i,e[1]=s*o*a+l*n,e[2]=l*o*a-s*n,e[3]=0,e[4]=o*s*a-l*n,e[5]=s*s*a+i,e[6]=l*s*a+o*n,e[7]=0,e[8]=o*l*a+s*n,e[9]=s*l*a-o*n,e[10]=l*l*a+i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}});var zte=ye((Cer,Dte)=>{Dte.exports=Xet;function Xet(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,d=i*l,v=i*u,x=a*u,b=o*s,p=o*l,E=o*u;return e[0]=1-(d+x),e[1]=f+E,e[2]=h-p,e[3]=0,e[4]=f-E,e[5]=1-(c+x),e[6]=v+b,e[7]=0,e[8]=h+p,e[9]=v-b,e[10]=1-(c+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}});var qte=ye((Ler,Fte)=>{Fte.exports=Yet;function Yet(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Bte=ye((Per,Ote)=>{Ote.exports=Ket;function Ket(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}});var Ute=ye((Ier,Nte)=>{Nte.exports=Jet;function Jet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Hte=ye((Rer,Vte)=>{Vte.exports=$et;function $et(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var jte=ye((Der,Gte)=>{Gte.exports=Qet;function Qet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Lq=ye((zer,Wte)=>{Wte.exports=ett;function ett(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,d=i*s,v=i*l,x=a*o,b=a*s,p=a*l;return e[0]=1-f-v,e[1]=c+p,e[2]=h-b,e[3]=0,e[4]=c-p,e[5]=1-u-v,e[6]=d+x,e[7]=0,e[8]=h+b,e[9]=d-x,e[10]=1-u-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Xte=ye((Fer,Zte)=>{Zte.exports=ttt;function ttt(e,t,r,n,i,a,o){var s=1/(r-t),l=1/(i-n),u=1/(a-o);return e[0]=a*2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(r+t)*s,e[9]=(i+n)*l,e[10]=(o+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*a*2*u,e[15]=0,e}});var Kte=ye((qer,Yte)=>{Yte.exports=rtt;function rtt(e,t,r,n,i){var a=1/Math.tan(t/2),o=1/(n-i);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+n)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*n*o,e[15]=0,e}});var $te=ye((Oer,Jte)=>{Jte.exports=itt;function itt(e,t,r,n){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),s=Math.tan(t.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((o-s)*l*.5),e[9]=(i-a)*u*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}});var ere=ye((Ber,Qte)=>{Qte.exports=ntt;function ntt(e,t,r,n,i,a,o){var s=1/(t-r),l=1/(n-i),u=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+r)*s,e[13]=(i+n)*l,e[14]=(o+a)*u,e[15]=1,e}});var rre=ye((Ner,tre)=>{var att=Cq();tre.exports=ott;function ott(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v=t[0],x=t[1],b=t[2],p=n[0],E=n[1],k=n[2],A=r[0],L=r[1],_=r[2];return Math.abs(v-A)<1e-6&&Math.abs(x-L)<1e-6&&Math.abs(b-_)<1e-6?att(e):(c=v-A,f=x-L,h=b-_,d=1/Math.sqrt(c*c+f*f+h*h),c*=d,f*=d,h*=d,i=E*h-k*f,a=k*c-p*h,o=p*f-E*c,d=Math.sqrt(i*i+a*a+o*o),d?(d=1/d,i*=d,a*=d,o*=d):(i=0,a=0,o=0),s=f*o-h*a,l=h*i-c*o,u=c*a-f*i,d=Math.sqrt(s*s+l*l+u*u),d?(d=1/d,s*=d,l*=d,u*=d):(s=0,l=0,u=0),e[0]=i,e[1]=s,e[2]=c,e[3]=0,e[4]=a,e[5]=l,e[6]=f,e[7]=0,e[8]=o,e[9]=u,e[10]=h,e[11]=0,e[12]=-(i*v+a*x+o*b),e[13]=-(s*v+l*x+u*b),e[14]=-(c*v+f*x+h*b),e[15]=1,e)}});var nre=ye((Uer,ire)=>{ire.exports=stt;function stt(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}});var Pq=ye((Ver,are)=>{are.exports={create:nte(),clone:ote(),copy:lte(),identity:Cq(),transpose:fte(),invert:dte(),adjoint:pte(),determinant:mte(),multiply:_te(),translate:bte(),scale:Tte(),rotate:Ste(),rotateX:Ete(),rotateY:Cte(),rotateZ:Pte(),fromRotation:Rte(),fromRotationTranslation:zte(),fromScaling:qte(),fromTranslation:Bte(),fromXRotation:Ute(),fromYRotation:Hte(),fromZRotation:jte(),fromQuat:Lq(),frustum:Xte(),perspective:Kte(),perspectiveFromFieldOfView:$te(),ortho:ere(),lookAt:rre(),str:nre()}});var m6=ye(Xf=>{"use strict";var ltt=Pq();Xf.init2dArray=function(e,t){for(var r=new Array(e),n=0;n<e;n++)r[n]=new Array(t);return r};Xf.transposeRagged=function(e){var t=0,r=e.length,n,i;for(n=0;n<r;n++)t=Math.max(t,e[n].length);var a=new Array(t);for(n=0;n<t;n++)for(a[n]=new Array(r),i=0;i<r;i++)a[n][i]=e[i][n];return a};Xf.dot=function(e,t){if(!(e.length&&t.length)||e.length!==t.length)return null;var r=e.length,n,i;if(e[0].length)for(n=new Array(r),i=0;i<r;i++)n[i]=Xf.dot(e[i],t);else if(t[0].length){var a=Xf.transposeRagged(t);for(n=new Array(a.length),i=0;i<a.length;i++)n[i]=Xf.dot(e,a[i])}else for(n=0,i=0;i<r;i++)n+=e[i]*t[i];return n};Xf.translationMatrix=function(e,t){return[[1,0,e],[0,1,t],[0,0,1]]};Xf.rotationMatrix=function(e){var t=e*Math.PI/180;return[[Math.cos(t),-Math.sin(t),0],[Math.sin(t),Math.cos(t),0],[0,0,1]]};Xf.rotationXYMatrix=function(e,t,r){return Xf.dot(Xf.dot(Xf.translationMatrix(t,r),Xf.rotationMatrix(e)),Xf.translationMatrix(-t,-r))};Xf.apply3DTransform=function(e){return function(){var t=arguments,r=arguments.length===1?t[0]:[t[0],t[1],t[2]||0];return Xf.dot(e,[r[0],r[1],r[2],1]).slice(0,3)}};Xf.apply2DTransform=function(e){return function(){var t=arguments;t.length===3&&(t=t[0]);var r=arguments.length===1?t[0]:[t[0],t[1]];return Xf.dot(e,[r[0],r[1],1]).slice(0,2)}};Xf.apply2DTransform2=function(e){var t=Xf.apply2DTransform(e);return function(r){return t(r.slice(0,2)).concat(t(r.slice(2,4)))}};Xf.convertCssMatrix=function(e){if(e){var t=e.length;if(t===16)return e;if(t===6)return[e[0],e[1],0,0,e[2],e[3],0,0,0,0,1,0,e[4],e[5],0,1]}return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]};Xf.inverseTransformMatrix=function(e){var t=[];return ltt.invert(t,e),[[t[0],t[1],t[2],t[3]],[t[4],t[5],t[6],t[7]],[t[8],t[9],t[10],t[11]],[t[12],t[13],t[14],t[15]]]}});var DS=ye((Ger,fre)=>{"use strict";var utt=xa(),ore=G1(),ctt=m6(),ftt=Pq();function htt(e){var t;if(typeof e=="string"){if(t=document.getElementById(e),t===null)throw new Error("No DOM element with id '"+e+"' exists on the page.");return t}else if(e==null)throw new Error("DOM element provided is null or undefined");return e}function dtt(e){var t=utt.select(e);return t.node()instanceof HTMLElement&&t.size()&&t.classed("js-plotly-plot")}function sre(e){var t=e&&e.parentNode;t&&t.removeChild(e)}function vtt(e,t){lre("global",e,t)}function lre(e,t,r){var n="plotly.js-style-"+e,i=document.getElementById(n);if(!(i&&i.matches(".no-inline-styles"))){i||(i=document.createElement("style"),i.setAttribute("id",n),i.appendChild(document.createTextNode("")),document.head.appendChild(i));var a=i.sheet;a?a.insertRule?a.insertRule(t+"{"+r+"}",0):a.addRule?a.addRule(t,r,0):ore.warn("addStyleRule failed"):ore.warn("Cannot addRelatedStyleRule, probably due to strict CSP...")}}function ptt(e){var t="plotly.js-style-"+e,r=document.getElementById(t);r&&sre(r)}function gtt(e,t,r,n,i,a){var o=n.split(":"),s=i.split(":"),l="data-btn-style-event-added";a||(a=document),a.querySelectorAll(e).forEach(function(u){u.getAttribute(l)||(u.addEventListener("mouseenter",function(){var c=this.querySelector(r);c&&(c.style[o[0]]=o[1])}),u.addEventListener("mouseleave",function(){var c=this.querySelector(r);c&&(t&&this.matches(t)?c.style[o[0]]=o[1]:c.style[s[0]]=s[1])}),u.setAttribute(l,!0))})}function mtt(e){var t=cre(e),r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return t.forEach(function(n){var i=ure(n);if(i){var a=ctt.convertCssMatrix(i);r=ftt.multiply(r,r,a)}}),r}function ure(e){var t=window.getComputedStyle(e,null),r=t.getPropertyValue("-webkit-transform")||t.getPropertyValue("-moz-transform")||t.getPropertyValue("-ms-transform")||t.getPropertyValue("-o-transform")||t.getPropertyValue("transform");return r==="none"?null:r.replace("matrix","").replace("3d","").slice(1,-1).split(",").map(function(n){return+n})}function cre(e){for(var t=[];ytt(e);)t.push(e),e=e.parentNode,typeof ShadowRoot=="function"&&e instanceof ShadowRoot&&(e=e.host);return t}function ytt(e){return e&&(e instanceof Element||e instanceof HTMLElement)}function _tt(e,t){return e&&t&&e.top===t.top&&e.left===t.left&&e.right===t.right&&e.bottom===t.bottom}fre.exports={getGraphDiv:htt,isPlotDiv:dtt,removeElement:sre,addStyleRule:vtt,addRelatedStyleRule:lre,deleteRelatedStyleRule:ptt,setStyleOnHover:gtt,getFullTransformMatrix:mtt,getElementTransformMatrix:ure,getElementAndAncestors:cre,equalDomRects:_tt}});var zS=ye((jer,hre)=>{"use strict";hre.exports={mode:{valType:"enumerated",dflt:"afterall",values:["immediate","next","afterall"]},direction:{valType:"enumerated",values:["forward","reverse"],dflt:"forward"},fromcurrent:{valType:"boolean",dflt:!1},frame:{duration:{valType:"number",min:0,dflt:500},redraw:{valType:"boolean",dflt:!0}},transition:{duration:{valType:"number",min:0,dflt:500,editType:"none"},easing:{valType:"enumerated",dflt:"cubic-in-out",values:["linear","quad","cubic","sin","exp","circle","elastic","back","bounce","linear-in","quad-in","cubic-in","sin-in","exp-in","circle-in","elastic-in","back-in","bounce-in","linear-out","quad-out","cubic-out","sin-out","exp-out","circle-out","elastic-out","back-out","bounce-out","linear-in-out","quad-in-out","cubic-in-out","sin-in-out","exp-in-out","circle-in-out","elastic-in-out","back-in-out","bounce-in-out"],editType:"none"},ordering:{valType:"enumerated",values:["layout first","traces first"],dflt:"layout first",editType:"none"}}}});var Bu=ye((Wer,_re)=>{"use strict";var vre=no().extendFlat,xtt=gy(),pre={valType:"flaglist",extras:["none"],flags:["calc","clearAxisTypes","plot","style","markerSize","colorbars"]},gre={valType:"flaglist",extras:["none"],flags:["calc","plot","legend","ticks","axrange","layoutstyle","modebar","camera","arraydraw","colorbars"]},btt=pre.flags.slice().concat(["fullReplot"]),wtt=gre.flags.slice().concat("layoutReplot");_re.exports={traces:pre,layout:gre,traceFlags:function(){return dre(btt)},layoutFlags:function(){return dre(wtt)},update:function(e,t){var r=t.editType;if(r&&r!=="none")for(var n=r.split("+"),i=0;i<n.length;i++)e[n[i]]=!0},overrideAll:mre};function dre(e){for(var t={},r=0;r<e.length;r++)t[e[r]]=!1;return t}function mre(e,t,r){var n=vre({},e);for(var i in n){var a=n[i];xtt(a)&&(n[i]=yre(a,t,r,i))}return r==="from-root"&&(n.editType=t),n}function yre(e,t,r,n){if(e.valType){var i=vre({},e);if(i.editType=t,Array.isArray(e.items)){i.items=new Array(e.items.length);for(var a=0;a<e.items.length;a++)i.items[a]=yre(e.items[a],t,"from-root")}return i}else return mre(e,t,n.charAt(0)==="_"?"nested":"from-root")}});var Ed=ye(Iq=>{"use strict";Iq.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"};Iq.pattern={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}});var Rq=ye((Xer,xre)=>{"use strict";xre.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}});var Wo=ye(y6=>{"use strict";var bre=Rq(),Yer=bre.FORMAT_LINK,Ker=bre.DATE_FORMAT_LINK;function Dq(e){var t=e.description?" "+e.description:"",r=e.keys||[];if(r.length>0){for(var n=[],i=0;i<r.length;i++)n[i]="`"+r[i]+"`";t=t+"Finally, the template string has access to ",r.length===1?t=t+"variable "+n[0]:t=t+"variables "+n.slice(0,-1).join(", ")+" and "+n.slice(-1)+"."}return t}y6.hovertemplateAttrs=function(e,t){e=e||{},t=t||{};var r=Dq(t),n={valType:"string",dflt:"",editType:e.editType||"none"};return e.arrayOk!==!1&&(n.arrayOk=!0),n};y6.texttemplateAttrs=function(e,t){e=e||{},t=t||{};var r=Dq(t),n={valType:"string",dflt:"",editType:e.editType||"calc"};return e.arrayOk!==!1&&(n.arrayOk=!0),n};y6.shapeTexttemplateAttrs=function(e,t){e=e||{},t=t||{};var r=e.newshape?"new ":"",n=Dq(t),i={valType:"string",dflt:"",editType:e.editType||"arraydraw"};return i}});var b6=ye(($er,Ere)=>{"use strict";function j1(e,t){return t?t.d2l(e):e}function wre(e,t){return t?t.l2d(e):e}function Ttt(e){return e.x0}function Att(e){return e.x1}function Stt(e){return e.y0}function Mtt(e){return e.y1}function Tre(e){return e.x0shift||0}function Are(e){return e.x1shift||0}function Sre(e){return e.y0shift||0}function Mre(e){return e.y1shift||0}function _6(e,t){return j1(e.x1,t)+Are(e)-j1(e.x0,t)-Tre(e)}function x6(e,t,r){return j1(e.y1,r)+Mre(e)-j1(e.y0,r)-Sre(e)}function Ett(e,t){return Math.abs(_6(e,t))}function ktt(e,t,r){return Math.abs(x6(e,t,r))}function Ctt(e,t,r){return e.type!=="line"?void 0:Math.sqrt(Math.pow(_6(e,t),2)+Math.pow(x6(e,t,r),2))}function Ltt(e,t){return wre((j1(e.x1,t)+Are(e)+j1(e.x0,t)+Tre(e))/2,t)}function Ptt(e,t,r){return wre((j1(e.y1,r)+Mre(e)+j1(e.y0,r)+Sre(e))/2,r)}function Itt(e,t,r){return e.type!=="line"?void 0:x6(e,t,r)/_6(e,t)}Ere.exports={x0:Ttt,x1:Att,y0:Stt,y1:Mtt,slope:Itt,dx:_6,dy:x6,width:Ett,height:ktt,length:Ctt,xcenter:Ltt,ycenter:Ptt}});var Lre=ye((Qer,Cre)=>{"use strict";var Rtt=Bu().overrideAll,cb=vl(),kre=Su(),Dtt=Ed().dash,W1=no().extendFlat,ztt=Wo().shapeTexttemplateAttrs,Ftt=b6();Cre.exports=Rtt({newshape:{visible:W1({},cb.visible,{}),showlegend:{valType:"boolean",dflt:!1},legend:W1({},cb.legend,{}),legendgroup:W1({},cb.legendgroup,{}),legendgrouptitle:{text:W1({},cb.legendgrouptitle.text,{}),font:kre({})},legendrank:W1({},cb.legendrank,{}),legendwidth:W1({},cb.legendwidth,{}),line:{color:{valType:"color"},width:{valType:"number",min:0,dflt:4},dash:W1({},Dtt,{dflt:"solid"})},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd"},opacity:{valType:"number",min:0,max:1,dflt:1},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above"},drawdirection:{valType:"enumerated",values:["ortho","horizontal","vertical","diagonal"],dflt:"diagonal"},name:W1({},cb.name,{}),label:{text:{valType:"string",dflt:""},texttemplate:ztt({newshape:!0},{keys:Object.keys(Ftt)}),font:kre({}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"]},textangle:{valType:"angle",dflt:"auto"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},padding:{valType:"number",dflt:3,min:0}}},activeshape:{fillcolor:{valType:"color",dflt:"rgb(255,0,255)"},opacity:{valType:"number",min:0,max:1,dflt:.5}}},"none","from-root")});var Ire=ye((etr,Pre)=>{"use strict";var qtt=Ed().dash,Ott=no().extendFlat;Pre.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:Ott({},qtt,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}});var w6=ye((ttr,Rre)=>{"use strict";Rre.exports=function(e){var t=e.editType;return{t:{valType:"number",dflt:0,editType:t},r:{valType:"number",dflt:0,editType:t},b:{valType:"number",dflt:0,editType:t},l:{valType:"number",dflt:0,editType:t},editType:t}}});var s3=ye((rtr,qre)=>{"use strict";var zq=Su(),Btt=zS(),T6=dh(),Dre=Lre(),zre=Ire(),Ntt=w6(),Fre=no().extendFlat,A6=zq({editType:"calc"});A6.family.dflt='"Open Sans", verdana, arial, sans-serif';A6.size.dflt=12;A6.color.dflt=T6.defaultLine;qre.exports={font:A6,title:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),subtitle:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),editType:"layoutstyle"},xref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},yref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},x:{valType:"number",min:0,max:1,dflt:.5,editType:"layoutstyle"},y:{valType:"number",min:0,max:1,dflt:"auto",editType:"layoutstyle"},xanchor:{valType:"enumerated",dflt:"auto",values:["auto","left","center","right"],editType:"layoutstyle"},yanchor:{valType:"enumerated",dflt:"auto",values:["auto","top","middle","bottom"],editType:"layoutstyle"},pad:Fre(Ntt({editType:"layoutstyle"}),{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},editType:"layoutstyle"},uniformtext:{mode:{valType:"enumerated",values:[!1,"hide","show"],dflt:!1,editType:"plot"},minsize:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"},autosize:{valType:"boolean",dflt:!1,editType:"none"},width:{valType:"number",min:10,dflt:700,editType:"plot"},height:{valType:"number",min:10,dflt:450,editType:"plot"},minreducedwidth:{valType:"number",min:2,dflt:64,editType:"plot"},minreducedheight:{valType:"number",min:2,dflt:64,editType:"plot"},margin:{l:{valType:"number",min:0,dflt:80,editType:"plot"},r:{valType:"number",min:0,dflt:80,editType:"plot"},t:{valType:"number",min:0,dflt:100,editType:"plot"},b:{valType:"number",min:0,dflt:80,editType:"plot"},pad:{valType:"number",min:0,dflt:0,editType:"plot"},autoexpand:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},computed:{valType:"any",editType:"none"},paper_bgcolor:{valType:"color",dflt:T6.background,editType:"plot"},plot_bgcolor:{valType:"color",dflt:T6.background,editType:"layoutstyle"},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},separators:{valType:"string",editType:"plot"},hidesources:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:{valType:"boolean",editType:"legend"},colorway:{valType:"colorlist",dflt:T6.defaults,editType:"calc"},datarevision:{valType:"any",editType:"calc"},uirevision:{valType:"any",editType:"none"},editrevision:{valType:"any",editType:"none"},selectionrevision:{valType:"any",editType:"none"},template:{valType:"any",editType:"calc"},newshape:Dre.newshape,activeshape:Dre.activeshape,newselection:zre.newselection,activeselection:zre.activeselection,meta:{valType:"any",arrayOk:!0,editType:"plot"},transition:Fre({},Btt.transition,{editType:"none"})}});var Ore=Ll(()=>{});var Utt={};var Bre=Ll(()=>{Ore()});var ba=ye(qs=>{"use strict";var l3=G1(),Nre=g6(),Ure=kq(),Vtt=gy(),Htt=DS().addStyleRule,Vre=no(),Gtt=vl(),jtt=s3(),Wtt=Vre.extendFlat,Fq=Vre.extendDeepAll;qs.modules={};qs.allCategories={};qs.allTypes=[];qs.subplotsRegistry={};qs.componentsRegistry={};qs.layoutArrayContainers=[];qs.layoutArrayRegexes=[];qs.traceLayoutAttributes={};qs.localeRegistry={};qs.apiMethodRegistry={};qs.collectableSubplotTypes=null;qs.register=function(t){if(qs.collectableSubplotTypes=null,t)t&&!Array.isArray(t)&&(t=[t]);else throw new Error("No argument passed to Plotly.register.");for(var r=0;r<t.length;r++){var n=t[r];if(!n)throw new Error("Invalid module was attempted to be registered!");switch(n.moduleType){case"trace":Ztt(n);break;case"transform":Ktt(n);break;case"component":Ytt(n);break;case"locale":Jtt(n);break;case"apiMethod":var i=n.name;qs.apiMethodRegistry[i]=n.fn;break;default:throw new Error("Invalid module was attempted to be registered!")}}};qs.getModule=function(e){var t=qs.modules[Wre(e)];return t?t._module:!1};qs.traceIs=function(e,t){if(e=Wre(e),e==="various")return!1;var r=qs.modules[e];return r||(e&&l3.log("Unrecognized trace type "+e+"."),r=qs.modules[Gtt.type.dflt]),!!r.categories[t]};qs.getComponentMethod=function(e,t){var r=qs.componentsRegistry[e];return r&&r[t]||Nre};qs.call=function(){var e=arguments[0],t=[].slice.call(arguments,1);return qs.apiMethodRegistry[e].apply(null,t)};function Ztt(e){var t=e.name,r=e.categories,n=e.meta;if(qs.modules[t]){l3.log("Type "+t+" already registered");return}qs.subplotsRegistry[e.basePlotModule.name]||Xtt(e.basePlotModule);for(var i={},a=0;a<r.length;a++)i[r[a]]=!0,qs.allCategories[r[a]]=!0;qs.modules[t]={_module:e,categories:i},n&&Object.keys(n).length&&(qs.modules[t].meta=n),qs.allTypes.push(t);for(var o in qs.componentsRegistry)Gre(o,t);e.layoutAttributes&&Wtt(qs.traceLayoutAttributes,e.layoutAttributes);var s=e.basePlotModule,l=s.name;if(l==="mapbox"){var u=s.constants.styleRules;for(var c in u)Htt(".js-plotly-plot .plotly .mapboxgl-"+c,u[c])}l==="map"&&(Bre(),B1(Utt)),(l==="geo"||l==="mapbox"||l==="map")&&window.PlotlyGeoAssets===void 0&&(window.PlotlyGeoAssets={topojson:{}})}function Xtt(e){var t=e.name;if(qs.subplotsRegistry[t]){l3.log("Plot type "+t+" already registered.");return}Hre(e),qs.subplotsRegistry[t]=e;for(var r in qs.componentsRegistry)jre(r,e.name)}function Ytt(e){if(typeof e.name!="string")throw new Error("Component module *name* must be a string.");var t=e.name;qs.componentsRegistry[t]=e,e.layoutAttributes&&(e.layoutAttributes._isLinkedToArray&&Ure(qs.layoutArrayContainers,t),Hre(e));for(var r in qs.modules)Gre(t,r);for(var n in qs.subplotsRegistry)jre(t,n);e.schema&&e.schema.layout&&Fq(jtt,e.schema.layout)}function Ktt(e){if(typeof e.name!="string")throw new Error("Transform module *name* must be a string.");var t="Transform module "+e.name,r=typeof e.transform=="function",n=typeof e.calcTransform=="function";if(!r&&!n)throw new Error(t+" is missing a *transform* or *calcTransform* method.");r&&n&&l3.log([t+" has both a *transform* and *calcTransform* methods.","Please note that all *transform* methods are executed","before all *calcTransform* methods."].join(" ")),Vtt(e.attributes)||l3.log(t+" registered without an *attributes* object."),typeof e.supplyDefaults!="function"&&l3.log(t+" registered without a *supplyDefaults* method.")}function Jtt(e){var t=e.name,r=t.split("-")[0],n=e.dictionary,i=e.format,a=n&&Object.keys(n).length,o=i&&Object.keys(i).length,s=qs.localeRegistry,l=s[t];if(l||(s[t]=l={}),r!==t){var u=s[r];u||(s[r]=u={}),a&&u.dictionary===l.dictionary&&(u.dictionary=n),o&&u.format===l.format&&(u.format=i)}a&&(l.dictionary=n),o&&(l.format=i)}function Hre(e){if(e.layoutAttributes){var t=e.layoutAttributes._arrayAttrRegexps;if(t)for(var r=0;r<t.length;r++)Ure(qs.layoutArrayRegexes,t[r])}}function Gre(e,t){var r=qs.componentsRegistry[e].schema;if(!(!r||!r.traces)){var n=r.traces[t];n&&Fq(qs.modules[t]._module.attributes,n)}}function jre(e,t){var r=qs.componentsRegistry[e].schema;if(!(!r||!r.subplots)){var n=qs.subplotsRegistry[t],i=n.layoutAttributes,a=n.attr==="subplot"?n.name:n.attr;Array.isArray(a)&&(a=a[0]);var o=r.subplots[a];i&&o&&Fq(i,o)}}function Wre(e){return typeof e=="object"&&(e=e.type),e}});var tie=ye(Yf=>{"use strict";var $tt=e3().timeFormat,Qre=uo(),qq=G1(),X1=r3().mod,f3=es(),_0=f3.BADNUM,wp=f3.ONEDAY,FS=f3.ONEHOUR,Z1=f3.ONEMIN,c3=f3.ONESEC,qS=f3.EPOCHJD,my=ba(),Zre=e3().utcFormat,Qtt=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,ert=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,Xre=new Date().getFullYear()-70;function yy(e){return e&&my.componentsRegistry.calendars&&typeof e=="string"&&e!=="gregorian"}Yf.dateTick0=function(e,t){var r=trt(e,!!t);if(t<2)return r;var n=Yf.dateTime2ms(r,e);return n+=wp*(t-1),Yf.ms2DateTime(n,0,e)};function trt(e,t){return yy(e)?t?my.getComponentMethod("calendars","CANONICAL_SUNDAY")[e]:my.getComponentMethod("calendars","CANONICAL_TICK")[e]:t?"2000-01-02":"2000-01-01"}Yf.dfltRange=function(e){return yy(e)?my.getComponentMethod("calendars","DFLTRANGE")[e]:["2000-01-01","2001-01-01"]};Yf.isJSDate=function(e){return typeof e=="object"&&e!==null&&typeof e.getTime=="function"};var M6,E6;Yf.dateTime2ms=function(e,t){if(Yf.isJSDate(e)){var r=e.getTimezoneOffset()*Z1,n=(e.getUTCMinutes()-e.getMinutes())*Z1+(e.getUTCSeconds()-e.getSeconds())*c3+(e.getUTCMilliseconds()-e.getMilliseconds());if(n){var i=3*Z1;r=r-i/2+X1(n-r+i/2,i)}return e=Number(e)-r,e>=M6&&e<=E6?e:_0}if(typeof e!="string"&&typeof e!="number")return _0;e=String(e);var a=yy(t),o=e.charAt(0);a&&(o==="G"||o==="g")&&(e=e.substr(1),t="");var s=a&&t.substr(0,7)==="chinese",l=e.match(s?ert:Qtt);if(!l)return _0;var u=l[1],c=l[3]||"1",f=Number(l[5]||1),h=Number(l[7]||0),d=Number(l[9]||0),v=Number(l[11]||0);if(a){if(u.length===2)return _0;u=Number(u);var x;try{var b=my.getComponentMethod("calendars","getCal")(t);if(s){var p=c.charAt(c.length-1)==="i";c=parseInt(c,10),x=b.newDate(u,b.toMonthIndex(u,c,p),f)}else x=b.newDate(u,Number(c),f)}catch(k){return _0}return x?(x.toJD()-qS)*wp+h*FS+d*Z1+v*c3:_0}u.length===2?u=(Number(u)+2e3-Xre)%100+Xre:u=Number(u),c-=1;var E=new Date(Date.UTC(2e3,c,f,h,d));return E.setUTCFullYear(u),E.getUTCMonth()!==c||E.getUTCDate()!==f?_0:E.getTime()+v*c3};M6=Yf.MIN_MS=Yf.dateTime2ms("-9999");E6=Yf.MAX_MS=Yf.dateTime2ms("9999-12-31 23:59:59.9999");Yf.isDateTime=function(e,t){return Yf.dateTime2ms(e,t)!==_0};function u3(e,t){return String(e+Math.pow(10,t)).substr(1)}var S6=90*wp,Yre=3*FS,Kre=5*Z1;Yf.ms2DateTime=function(e,t,r){if(typeof e!="number"||!(e>=M6&&e<=E6))return _0;t||(t=0);var n=Math.floor(X1(e+.05,1)*10),i=Math.round(e-n/10),a,o,s,l,u,c;if(yy(r)){var f=Math.floor(i/wp)+qS,h=Math.floor(X1(e,wp));try{a=my.getComponentMethod("calendars","getCal")(r).fromJD(f).formatDate("yyyy-mm-dd")}catch(d){a=Zre("G%Y-%m-%d")(new Date(i))}if(a.charAt(0)==="-")for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=t<S6?Math.floor(h/FS):0,s=t<S6?Math.floor(h%FS/Z1):0,l=t<Yre?Math.floor(h%Z1/c3):0,u=t<Kre?h%c3*10+n:0}else c=new Date(i),a=Zre("%Y-%m-%d")(c),o=t<S6?c.getUTCHours():0,s=t<S6?c.getUTCMinutes():0,l=t<Yre?c.getUTCSeconds():0,u=t<Kre?c.getUTCMilliseconds()*10+n:0;return eie(a,o,s,l,u)};Yf.ms2DateTimeLocal=function(e){if(!(e>=M6+wp&&e<=E6-wp))return _0;var t=Math.floor(X1(e+.05,1)*10),r=new Date(Math.round(e-t/10)),n=$tt("%Y-%m-%d")(r),i=r.getHours(),a=r.getMinutes(),o=r.getSeconds(),s=r.getUTCMilliseconds()*10+t;return eie(n,i,a,o,s)};function eie(e,t,r,n,i){if((t||r||n||i)&&(e+=" "+u3(t,2)+":"+u3(r,2),(n||i)&&(e+=":"+u3(n,2),i))){for(var a=4;i%10===0;)a-=1,i/=10;e+="."+u3(i,a)}return e}Yf.cleanDate=function(e,t,r){if(e===_0)return t;if(Yf.isJSDate(e)||typeof e=="number"&&isFinite(e)){if(yy(r))return qq.error("JS Dates and milliseconds are incompatible with world calendars",e),t;if(e=Yf.ms2DateTimeLocal(+e),!e&&t!==void 0)return t}else if(!Yf.isDateTime(e,r))return qq.error("unrecognized date",e),t;return e};var rrt=/%\d?f/g,irt=/%h/g,nrt={1:"1",2:"1",3:"2",4:"2"};function Jre(e,t,r,n){e=e.replace(rrt,function(a){var o=Math.min(+a.charAt(1)||6,6),s=(t/1e3%1+2).toFixed(o).substr(2).replace(/0+$/,"")||"0";return s});var i=new Date(Math.floor(t+.05));if(e=e.replace(irt,function(){return nrt[r("%q")(i)]}),yy(n))try{e=my.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(a){return"Invalid"}return r(e)(i)}var art=[59,59.9,59.99,59.999,59.9999];function ort(e,t){var r=X1(e+.05,wp),n=u3(Math.floor(r/FS),2)+":"+u3(X1(Math.floor(r/Z1),60),2);if(t!=="M"){Qre(t)||(t=0);var i=Math.min(X1(e/c3,60),art[t]),a=(100+i).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}Yf.formatDate=function(e,t,r,n,i,a){if(i=yy(i)&&i,!t)if(r==="y")t=a.year;else if(r==="m")t=a.month;else if(r==="d")t=a.dayMonth+` +`+a.year;else return ort(e,r)+` +`+Jre(a.dayMonthYear,e,n,i);return Jre(t,e,n,i)};var $re=3*wp;Yf.incrementMonth=function(e,t,r){r=yy(r)&&r;var n=X1(e,wp);if(e=Math.round(e-n),r)try{var i=Math.round(e/wp)+qS,a=my.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return t%12?a.add(o,t,"m"):a.add(o,t/12,"y"),(o.toJD()-qS)*wp+n}catch(l){qq.error("invalid ms "+e+" in calendar "+r)}var s=new Date(e+$re);return s.setUTCMonth(s.getUTCMonth()+t)+n-$re};Yf.findExactDates=function(e,t){for(var r=0,n=0,i=0,a=0,o,s,l=yy(t)&&my.getComponentMethod("calendars","getCal")(t),u=0;u<e.length;u++){if(s=e[u],!Qre(s)){a++;continue}if(!(s%wp))if(l)try{o=l.fromJD(s/wp+qS),o.day()===1?o.month()===1?r++:n++:i++}catch(f){}else o=new Date(s),o.getUTCDate()===1?o.getUTCMonth()===0?r++:n++:i++}n+=r,i+=n;var c=e.length-a;return{exactYears:r/c,exactMonths:n/c,exactDays:i/c}}});var OS=ye((ltr,rie)=>{"use strict";rie.exports=function(t){return t}});var k6=ye(_y=>{"use strict";var srt=uo(),lrt=G1(),urt=OS(),crt=es().BADNUM,Oq=1e-9;_y.findBin=function(e,t,r){if(srt(t.start))return r?Math.ceil((e-t.start)/t.size-Oq)-1:Math.floor((e-t.start)/t.size+Oq);var n=0,i=t.length,a=0,o=i>1?(t[i-1]-t[0])/(i-1):1,s,l;for(o>=0?l=r?frt:hrt:l=r?vrt:drt,e+=o*Oq*(r?-1:1)*(o>=0?1:-1);n<i&&a++<100;)s=Math.floor((n+i)/2),l(t[s],e)?n=s+1:i=s;return a>90&&lrt.log("Long binary search..."),n-1};function frt(e,t){return e<t}function hrt(e,t){return e<=t}function drt(e,t){return e>t}function vrt(e,t){return e>=t}_y.sorterAsc=function(e,t){return e-t};_y.sorterDes=function(e,t){return t-e};_y.distinctVals=function(e){var t=e.slice();t.sort(_y.sorterAsc);var r;for(r=t.length-1;r>-1&&t[r]===crt;r--);for(var n=t[r]-t[0]||1,i=n/(r||1)/1e4,a=[],o,s=0;s<=r;s++){var l=t[s],u=l-o;o===void 0?(a.push(l),o=l):u>i&&(n=Math.min(n,u),a.push(l),o=l)}return{vals:a,minDiff:n}};_y.roundUp=function(e,t,r){for(var n=0,i=t.length-1,a,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;n<i&&o++<100;)a=u((n+i)/2),t[a]<=e?n=a+s:i=a-l;return t[n]};_y.sort=function(e,t){for(var r=0,n=0,i=1;i<e.length;i++){var a=t(e[i],e[i-1]);if(a<0?r=1:a>0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()};_y.findIndexOfMin=function(e,t){t=t||urt;for(var r=1/0,n,i=0;i<e.length;i++){var a=t(e[i]);a<r&&(r=a,n=i)}return n}});var Y1=ye((ctr,iie)=>{"use strict";iie.exports=function(t){return Object.keys(t).sort()}});var nie=ye(Kf=>{"use strict";var BS=uo(),prt=vv().isArrayOrTypedArray;Kf.aggNums=function(e,t,r,n){var i,a;if((!n||n>r.length)&&(n=r.length),BS(t)||(t=!1),prt(r[0])){for(a=new Array(n),i=0;i<n;i++)a[i]=Kf.aggNums(e,t,r[i]);r=a}for(i=0;i<n;i++)BS(t)?BS(r[i])&&(t=e(+t,+r[i])):t=r[i];return t};Kf.len=function(e){return Kf.aggNums(function(t){return t+1},0,e)};Kf.mean=function(e,t){return t||(t=Kf.len(e)),Kf.aggNums(function(r,n){return r+n},0,e)/t};Kf.geometricMean=function(e,t){return t||(t=Kf.len(e)),Math.pow(Kf.aggNums(function(r,n){return r*n},1,e),1/t)};Kf.midRange=function(e){if(!(e===void 0||e.length===0))return(Kf.aggNums(Math.max,null,e)+Kf.aggNums(Math.min,null,e))/2};Kf.variance=function(e,t,r){return t||(t=Kf.len(e)),BS(r)||(r=Kf.mean(e,t)),Kf.aggNums(function(n,i){return n+Math.pow(i-r,2)},0,e)/t};Kf.stdev=function(e,t,r){return Math.sqrt(Kf.variance(e,t,r))};Kf.median=function(e){var t=e.slice().sort();return Kf.interp(t,.5)};Kf.interp=function(e,t){if(!BS(t))throw"n should be a finite number";if(t=t*e.length-.5,t<0)return e[0];if(t>e.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}});var uie=ye((htr,lie)=>{"use strict";var aie=r3(),Bq=aie.mod,grt=aie.modHalf,NS=Math.PI,K1=2*NS;function mrt(e){return e/180*NS}function yrt(e){return e/NS*180}function Nq(e){return Math.abs(e[1]-e[0])>K1-1e-14}function oie(e,t){return grt(t-e,K1)}function _rt(e,t){return Math.abs(oie(e,t))}function sie(e,t){if(Nq(t))return!0;var r,n;t[0]<t[1]?(r=t[0],n=t[1]):(r=t[1],n=t[0]),r=Bq(r,K1),n=Bq(n,K1),r>n&&(n+=K1);var i=Bq(e,K1),a=i+K1;return i>=r&&i<=n||a>=r&&a<=n}function xrt(e,t,r,n){if(!sie(t,n))return!1;var i,a;return r[0]<r[1]?(i=r[0],a=r[1]):(i=r[1],a=r[0]),e>=i&&e<=a}function Uq(e,t,r,n,i,a,o){i=i||0,a=a||0;var s=Nq([r,n]),l,u,c,f,h;s?(l=0,u=NS,c=K1):r<n?(l=r,c=n):(l=n,c=r),e<t?(f=e,h=t):(f=t,h=e);function d(p,E){return[p*Math.cos(E)+i,a-p*Math.sin(E)]}var v=Math.abs(c-l)<=NS?0:1;function x(p,E,k){return"A"+[p,p]+" "+[0,v,k]+" "+d(p,E)}var b;return s?f===null?b="M"+d(h,l)+x(h,u,0)+x(h,c,0)+"Z":b="M"+d(f,l)+x(f,u,0)+x(f,c,0)+"ZM"+d(h,l)+x(h,u,1)+x(h,c,1)+"Z":f===null?(b="M"+d(h,l)+x(h,c,0),o&&(b+="L0,0Z")):b="M"+d(f,l)+"L"+d(h,l)+x(h,c,0)+"L"+d(f,c)+x(f,l,1)+"Z",b}function brt(e,t,r,n,i){return Uq(null,e,t,r,n,i,0)}function wrt(e,t,r,n,i){return Uq(null,e,t,r,n,i,1)}function Trt(e,t,r,n,i,a){return Uq(e,t,r,n,i,a,1)}lie.exports={deg2rad:mrt,rad2deg:yrt,angleDelta:oie,angleDist:_rt,isFullCircle:Nq,isAngleInsideSector:sie,isPtInsideSector:xrt,pathArc:brt,pathSector:wrt,pathAnnulus:Trt}});var cie=ye(fb=>{"use strict";fb.isLeftAnchor=function(t){return t.xanchor==="left"||t.xanchor==="auto"&&t.x<=1/3};fb.isCenterAnchor=function(t){return t.xanchor==="center"||t.xanchor==="auto"&&t.x>1/3&&t.x<2/3};fb.isRightAnchor=function(t){return t.xanchor==="right"||t.xanchor==="auto"&&t.x>=2/3};fb.isTopAnchor=function(t){return t.yanchor==="top"||t.yanchor==="auto"&&t.y>=2/3};fb.isMiddleAnchor=function(t){return t.yanchor==="middle"||t.yanchor==="auto"&&t.y>1/3&&t.y<2/3};fb.isBottomAnchor=function(t){return t.yanchor==="bottom"||t.yanchor==="auto"&&t.y<=1/3}});var die=ye(hb=>{"use strict";var Vq=r3().mod;hb.segmentsIntersect=hie;function hie(e,t,r,n,i,a,o,s){var l=r-e,u=i-e,c=o-i,f=n-t,h=a-t,d=s-a,v=l*d-c*f;if(v===0)return null;var x=(u*d-c*h)/v,b=(u*f-l*h)/v;return b<0||b>1||x<0||x>1?null:{x:e+l*x,y:t+f*x}}hb.segmentDistance=function(t,r,n,i,a,o,s,l){if(hie(t,r,n,i,a,o,s,l))return 0;var u=n-t,c=i-r,f=s-a,h=l-o,d=u*u+c*c,v=f*f+h*h,x=Math.min(C6(u,c,d,a-t,o-r),C6(u,c,d,s-t,l-r),C6(f,h,v,t-a,r-o),C6(f,h,v,n-a,i-o));return Math.sqrt(x)};function C6(e,t,r,n,i){var a=n*e+i*t;if(a<0)return n*n+i*i;if(a>r){var o=n-e,s=i-t;return o*o+s*s}else{var l=n*t-i*e;return l*l/r}}var L6,Hq,fie;hb.getTextLocation=function(t,r,n,i){if((t!==Hq||i!==fie)&&(L6={},Hq=t,fie=i),L6[n])return L6[n];var a=t.getPointAtLength(Vq(n-i/2,r)),o=t.getPointAtLength(Vq(n+i/2,r)),s=Math.atan((o.y-a.y)/(o.x-a.x)),l=t.getPointAtLength(Vq(n,r)),u=(l.x*4+a.x+o.x)/6,c=(l.y*4+a.y+o.y)/6,f={x:u,y:c,theta:s};return L6[n]=f,f};hb.clearLocationCache=function(){Hq=null};hb.getVisibleSegment=function(t,r,n){var i=r.left,a=r.right,o=r.top,s=r.bottom,l=0,u=t.getTotalLength(),c=u,f,h;function d(x){var b=t.getPointAtLength(x);x===0?f=b:x===u&&(h=b);var p=b.x<i?i-b.x:b.x>a?b.x-a:0,E=b.y<o?o-b.y:b.y>s?b.y-s:0;return Math.sqrt(p*p+E*E)}for(var v=d(l);v;){if(l+=v+n,l>c)return;v=d(l)}for(v=d(c);v;){if(c-=v+n,l>c)return;v=d(c)}return{min:l,max:c,len:c-l,total:u,isClosed:l===0&&c===u&&Math.abs(f.x-h.x)<.1&&Math.abs(f.y-h.y)<.1}};hb.findPointOnPath=function(t,r,n,i){i=i||{};for(var a=i.pathLength||t.getTotalLength(),o=i.tolerance||.001,s=i.iterationLimit||30,l=t.getPointAtLength(0)[n]>t.getPointAtLength(a)[n]?-1:1,u=0,c=0,f=a,h,d,v;u<s;){if(h=(c+f)/2,d=t.getPointAtLength(h),v=d[n]-r,Math.abs(v)<o)return d;l*v>0?f=h:c=h,u++}return d}});var P6=ye(US=>{"use strict";var xy={};US.throttle=function(t,r,n){var i=xy[t],a=Date.now();if(!i){for(var o in xy)xy[o].ts<a-6e4&&delete xy[o];i=xy[t]={ts:0,timer:null}}vie(i);function s(){n(),i.ts=Date.now(),i.onDone&&(i.onDone(),i.onDone=null)}if(a>i.ts+r){s();return}i.timer=setTimeout(function(){s(),i.timer=null},r)};US.done=function(e){var t=xy[e];return!t||!t.timer?Promise.resolve():new Promise(function(r){var n=t.onDone;t.onDone=function(){n&&n(),r(),t.onDone=null}})};US.clear=function(e){if(e)vie(xy[e]),delete xy[e];else for(var t in xy)US.clear(t)};function vie(e){e&&e.timer!==null&&(clearTimeout(e.timer),e.timer=null)}});var gie=ye((gtr,pie)=>{"use strict";pie.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}});var mie=ye((mtr,I6)=>{"use strict";I6.exports=Gq;I6.exports.isMobile=Gq;I6.exports.default=Gq;var Art=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,Srt=/CrOS/,Mrt=/android|ipad|playbook|silk/i;function Gq(e){e||(e={});let t=e.ua;if(!t&&typeof navigator!="undefined"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=Art.test(t)&&!Srt.test(t)||!!e.tablet&&Mrt.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}});var _ie=ye((ytr,yie)=>{"use strict";var Ert=uo(),krt=mie();yie.exports=function(t){var r;if(t&&t.hasOwnProperty("userAgent")?r=t.userAgent:r=Crt(),typeof r!="string")return!0;var n=krt({ua:{headers:{"user-agent":r}},tablet:!0,featureDetect:!1});if(!n)for(var i=r.split(" "),a=1;a<i.length;a++){var o=i[a];if(o.indexOf("Safari")!==-1)for(var s=a-1;s>-1;s--){var l=i[s];if(l.substr(0,8)==="Version/"){var u=l.substr(8).split(".")[0];if(Ert(u)&&(u=+u),u>=13)return!0}}}return n};function Crt(){var e;return typeof navigator!="undefined"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),e}});var bie=ye((_tr,xie)=>{"use strict";var Lrt=xa();xie.exports=function(t,r,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(r,function(o){return o[0].trace.uid});i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each(function(o){o[0][a]=Lrt.select(this)}),i}});var Tie=ye((xtr,wie)=>{"use strict";var Prt=ba();wie.exports=function(t,r){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[r];if(l)return l}a=Prt.localeRegistry}var u=n.split("-")[0];if(u===n)break;n=u}return r}});var jq=ye((btr,Aie)=>{"use strict";Aie.exports=function(t){for(var r={},n=[],i=0,a=0;a<t.length;a++){var o=t[a];r[o]!==1&&(r[o]=1,n[i++]=o)}return n}});var Mie=ye((wtr,Sie)=>{"use strict";Sie.exports=function(t){for(var r=Drt(t)?Rrt:Irt,n=[],i=0;i<t.length;i++){var a=t[i];r(a)&&n.push(a)}return n};function Irt(e){return e.visible===!0}function Rrt(e){var t=e[0].trace;return t.visible===!0&&t._length!==0}function Drt(e){return Array.isArray(e)&&Array.isArray(e[0])&&e[0][0]&&e[0][0].trace}});var kie=ye((Ttr,Eie)=>{"use strict";Eie.exports=function(t,r){if(!r)return t;var n=1/Math.abs(r),i=n>1?(n*t+n*r)/n:t+r,a=String(i).length;if(a>16){var o=String(r).length,s=String(t).length;if(a>=s+o){var l=parseFloat(i).toPrecision(12);l.indexOf("e+")===-1&&(i=+l)}}return i}});var Lie=ye((Atr,Cie)=>{"use strict";var zrt=uo(),Frt=es().BADNUM,qrt=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;Cie.exports=function(t){return typeof t=="string"&&(t=t.replace(qrt,"")),zrt(t)?Number(t):Frt}});var Mr=ye((Str,Hie)=>{"use strict";var VS=xa(),Ort=e3().utcFormat,Brt=vq().format,Fie=uo(),qie=es(),Oie=qie.FP_SAFE,Nrt=-Oie,Pie=qie.BADNUM,li=Hie.exports={};li.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:t==="0.f"?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var Iie={};li.warnBadFormat=function(e){var t=String(e);Iie[t]||(Iie[t]=1,li.warn('encountered bad format: "'+t+'"'))};li.noFormat=function(e){return String(e)};li.numberFormat=function(e){var t;try{t=Brt(li.adjustFormat(e))}catch(r){return li.warnBadFormat(e),li.noFormat}return t};li.nestedProperty=ES();li.keyedContainer=Tee();li.relativeAttr=See();li.isPlainObject=gy();li.toLogRange=u6();li.relinkPrivateKeys=Cee();var J1=vv();li.isArrayBuffer=J1.isArrayBuffer;li.isTypedArray=J1.isTypedArray;li.isArrayOrTypedArray=J1.isArrayOrTypedArray;li.isArray1D=J1.isArray1D;li.ensureArray=J1.ensureArray;li.concat=J1.concat;li.maxRowLength=J1.maxRowLength;li.minRowLength=J1.minRowLength;var Bie=r3();li.mod=Bie.mod;li.modHalf=Bie.modHalf;var $1=Xee();li.valObjectMeta=$1.valObjectMeta;li.coerce=$1.coerce;li.coerce2=$1.coerce2;li.coerceFont=$1.coerceFont;li.coercePattern=$1.coercePattern;li.coerceHoverinfo=$1.coerceHoverinfo;li.coerceSelectionMarkerOpacity=$1.coerceSelectionMarkerOpacity;li.validate=$1.validate;var Wp=tie();li.dateTime2ms=Wp.dateTime2ms;li.isDateTime=Wp.isDateTime;li.ms2DateTime=Wp.ms2DateTime;li.ms2DateTimeLocal=Wp.ms2DateTimeLocal;li.cleanDate=Wp.cleanDate;li.isJSDate=Wp.isJSDate;li.formatDate=Wp.formatDate;li.incrementMonth=Wp.incrementMonth;li.dateTick0=Wp.dateTick0;li.dfltRange=Wp.dfltRange;li.findExactDates=Wp.findExactDates;li.MIN_MS=Wp.MIN_MS;li.MAX_MS=Wp.MAX_MS;var db=k6();li.findBin=db.findBin;li.sorterAsc=db.sorterAsc;li.sorterDes=db.sorterDes;li.distinctVals=db.distinctVals;li.roundUp=db.roundUp;li.sort=db.sort;li.findIndexOfMin=db.findIndexOfMin;li.sortObjectKeys=Y1();var by=nie();li.aggNums=by.aggNums;li.len=by.len;li.mean=by.mean;li.geometricMean=by.geometricMean;li.median=by.median;li.midRange=by.midRange;li.variance=by.variance;li.stdev=by.stdev;li.interp=by.interp;var yg=m6();li.init2dArray=yg.init2dArray;li.transposeRagged=yg.transposeRagged;li.dot=yg.dot;li.translationMatrix=yg.translationMatrix;li.rotationMatrix=yg.rotationMatrix;li.rotationXYMatrix=yg.rotationXYMatrix;li.apply3DTransform=yg.apply3DTransform;li.apply2DTransform=yg.apply2DTransform;li.apply2DTransform2=yg.apply2DTransform2;li.convertCssMatrix=yg.convertCssMatrix;li.inverseTransformMatrix=yg.inverseTransformMatrix;var vm=uie();li.deg2rad=vm.deg2rad;li.rad2deg=vm.rad2deg;li.angleDelta=vm.angleDelta;li.angleDist=vm.angleDist;li.isFullCircle=vm.isFullCircle;li.isAngleInsideSector=vm.isAngleInsideSector;li.isPtInsideSector=vm.isPtInsideSector;li.pathArc=vm.pathArc;li.pathSector=vm.pathSector;li.pathAnnulus=vm.pathAnnulus;var d3=cie();li.isLeftAnchor=d3.isLeftAnchor;li.isCenterAnchor=d3.isCenterAnchor;li.isRightAnchor=d3.isRightAnchor;li.isTopAnchor=d3.isTopAnchor;li.isMiddleAnchor=d3.isMiddleAnchor;li.isBottomAnchor=d3.isBottomAnchor;var v3=die();li.segmentsIntersect=v3.segmentsIntersect;li.segmentDistance=v3.segmentDistance;li.getTextLocation=v3.getTextLocation;li.clearLocationCache=v3.clearLocationCache;li.getVisibleSegment=v3.getVisibleSegment;li.findPointOnPath=v3.findPointOnPath;var z6=no();li.extendFlat=z6.extendFlat;li.extendDeep=z6.extendDeep;li.extendDeepAll=z6.extendDeepAll;li.extendDeepNoArrays=z6.extendDeepNoArrays;var Wq=G1();li.log=Wq.log;li.warn=Wq.warn;li.error=Wq.error;var Urt=n3();li.counterRegex=Urt.counter;var Zq=P6();li.throttle=Zq.throttle;li.throttleDone=Zq.done;li.clearThrottle=Zq.clear;var _g=DS();li.getGraphDiv=_g.getGraphDiv;li.isPlotDiv=_g.isPlotDiv;li.removeElement=_g.removeElement;li.addStyleRule=_g.addStyleRule;li.addRelatedStyleRule=_g.addRelatedStyleRule;li.deleteRelatedStyleRule=_g.deleteRelatedStyleRule;li.setStyleOnHover=_g.setStyleOnHover;li.getFullTransformMatrix=_g.getFullTransformMatrix;li.getElementTransformMatrix=_g.getElementTransformMatrix;li.getElementAndAncestors=_g.getElementAndAncestors;li.equalDomRects=_g.equalDomRects;li.clearResponsive=gie();li.preserveDrawingBuffer=_ie();li.makeTraceGroups=bie();li._=Tie();li.notifier=Sq();li.filterUnique=jq();li.filterVisible=Mie();li.pushUnique=kq();li.increment=kie();li.cleanNumber=Lie();li.ensureNumber=function(t){return Fie(t)?(t=Number(t),t>Oie||t<Nrt?Pie:t):Pie};li.isIndex=function(e,t){return t!==void 0&&e>=t?!1:Fie(e)&&e>=0&&e%1===0};li.noop=g6();li.identity=OS();li.repeat=function(e,t){for(var r=new Array(t),n=0;n<t;n++)r[n]=e;return r};li.swapAttrs=function(e,t,r,n){r||(r="x"),n||(n="y");for(var i=0;i<t.length;i++){var a=t[i],o=li.nestedProperty(e,a.replace("?",r)),s=li.nestedProperty(e,a.replace("?",n)),l=o.get();o.set(s.get()),s.set(l)}};li.raiseToTop=function(t){t.parentNode.appendChild(t)};li.cancelTransition=function(e){return e.transition().duration(0)};li.constrain=function(e,t,r){return t>r?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))};li.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r};li.simpleMap=function(e,t,r,n,i){for(var a=e.length,o=new Array(a),s=0;s<a;s++)o[s]=t(e[s],r,n,i);return o};li.randstr=function e(t,r,n,i){if(n||(n=16),r===void 0&&(r=24),r<=0)return"0";var a=Math.log(Math.pow(2,r))/Math.log(n),o="",s,l,u;for(s=2;a===1/0;s*=2)a=Math.log(Math.pow(2,r/s))/Math.log(n)*s;var c=a-Math.floor(a);for(s=0;s<Math.floor(a);s++)u=Math.floor(Math.random()*n).toString(n),o=u+o;c&&(l=Math.pow(n,c),u=Math.floor(Math.random()*l).toString(n),o=u+o);var f=parseInt(o,n);return t&&t[o]||f!==1/0&&f>=Math.pow(2,r)?i>10?(li.warn("randstr failed uniqueness"),o):e(t,r,n,(i||0)+1):o};li.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={};return r.optionList=[],r._newoption=function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)},r["_"+t]=e,r};li.smooth=function(e,t){if(t=Math.round(t)||0,t<2)return e;var r=e.length,n=2*r,i=2*t-1,a=new Array(i),o=new Array(r),s,l,u,c;for(s=0;s<i;s++)a[s]=(1-Math.cos(Math.PI*(s+1)/t))/(2*t);for(s=0;s<r;s++){for(c=0,l=0;l<i;l++)u=s+l+1-t,u<-r?u-=n*Math.round(u/n):u>=n&&(u-=n*Math.floor(u/n)),u<0?u=-1-u:u>=r&&(u=n-1-u),c+=e[u]*a[l];o[s]=c}return o};li.syncOrAsync=function(e,t,r){var n,i;function a(){return li.syncOrAsync(e,t,r)}for(;e.length;)if(i=e.splice(0,1)[0],n=i(t),n&&n.then)return n.then(a);return r&&r(t)};li.stripTrailingSlash=function(e){return e.substr(-1)==="/"?e.substr(0,e.length-1):e};li.noneOrAll=function(e,t,r){if(e){var n=!1,i=!0,a,o;for(a=0;a<r.length;a++)o=e[r[a]],o!=null?n=!0:i=!1;if(n&&!i)for(a=0;a<r.length;a++)e[r[a]]=t[r[a]]}};li.mergeArray=function(e,t,r,n){var i=typeof n=="function";if(li.isArrayOrTypedArray(e))for(var a=Math.min(e.length,t.length),o=0;o<a;o++){var s=e[o];t[o][r]=i?n(s):s}};li.mergeArrayCastPositive=function(e,t,r){return li.mergeArray(e,t,r,function(n){var i=+n;return isFinite(i)&&i>0?i:0})};li.fillArray=function(e,t,r,n){if(n=n||li.identity,li.isArrayOrTypedArray(e))for(var i=0;i<t.length;i++)t[i][r]=n(e[i])};li.castOption=function(e,t,r,n){n=n||li.identity;var i=li.nestedProperty(e,r).get();return li.isArrayOrTypedArray(i)?Array.isArray(t)&&li.isArrayOrTypedArray(i[t[0]])?n(i[t[0]][t[1]]):n(i[t]):i};li.extractOption=function(e,t,r,n){if(r in e)return e[r];var i=li.nestedProperty(t,n).get();if(!Array.isArray(i))return i};function Nie(e){var t={};for(var r in e)for(var n=e[r],i=0;i<n.length;i++)t[n[i]]=+r;return t}li.tagSelected=function(e,t,r){var n=t.selectedpoints,i=t._indexToPoints,a;i&&(a=Nie(i));function o(f){return f!==void 0&&f<e.length}for(var s=0;s<n.length;s++){var l=n[s];if(li.isIndex(l)||li.isArrayOrTypedArray(l)&&li.isIndex(l[0])&&li.isIndex(l[1])){var u=a?a[l]:l,c=r?r[u]:u;o(c)&&(e[c].selected=1)}}};li.selIndices2selPoints=function(e){var t=e.selectedpoints,r=e._indexToPoints;if(r){for(var n=Nie(r),i=[],a=0;a<t.length;a++){var o=t[a];if(li.isIndex(o)){var s=n[o];li.isIndex(s)&&i.push(s)}}return i}else return t};li.getTargetArray=function(e,t){var r=t.target;if(typeof r=="string"&&r){var n=li.nestedProperty(e,r).get();return li.isArrayOrTypedArray(n)?n:!1}else if(li.isArrayOrTypedArray(r))return r;return!1};function Uie(e,t,r){var n={};typeof t!="object"&&(t={});var i=r==="pieLike"?-1:3,a=Object.keys(e),o,s,l;for(o=0;o<a.length;o++)s=a[o],l=e[s],!(s.charAt(0)==="_"||typeof l=="function")&&(s==="module"?n[s]=l:Array.isArray(l)?s==="colorscale"||i===-1?n[s]=l.slice():n[s]=l.slice(0,i):li.isTypedArray(l)?i===-1?n[s]=l.subarray():n[s]=l.subarray(0,i):l&&typeof l=="object"?n[s]=Uie(e[s],t[s],r):n[s]=l);for(a=Object.keys(t),o=0;o<a.length;o++)s=a[o],l=t[s],(typeof l!="object"||!(s in n)||typeof n[s]!="object")&&(n[s]=l);return n}li.minExtend=Uie;li.titleCase=function(e){return e.charAt(0).toUpperCase()+e.substr(1)};li.containsAny=function(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])!==-1)return!0;return!1};var Vrt=/Version\/[\d\.]+.*Safari/;li.isSafari=function(){return Vrt.test(window.navigator.userAgent)};var Hrt=/iPad|iPhone|iPod/;li.isIOS=function(){return Hrt.test(window.navigator.userAgent)};var Grt=/Firefox\/(\d+)\.\d+/;li.getFirefoxVersion=function(){var e=Grt.exec(window.navigator.userAgent);if(e&&e.length===2){var t=parseInt(e[1]);if(!isNaN(t))return t}return null};li.isD3Selection=function(e){return e instanceof VS.selection};li.ensureSingle=function(e,t,r,n){var i=e.select(t+(r?"."+r:""));if(i.size())return i;var a=e.append(t);return r&&a.classed(r,!0),n&&a.call(n),a};li.ensureSingleById=function(e,t,r,n){var i=e.select(t+"#"+r);if(i.size())return i;var a=e.append(t).attr("id",r);return n&&a.call(n),a};li.objectFromPath=function(e,t){for(var r=e.split("."),n,i=n={},a=0;a<r.length;a++){var o=r[a],s=null,l=r[a].match(/(.*)\[([0-9]+)\]/);l?(o=l[1],s=l[2],n=n[o]=[],a===r.length-1?n[s]=t:n[s]={},n=n[s]):(a===r.length-1?n[o]=t:n[o]={},n=n[o])}return i};var jrt=/^([^\[\.]+)\.(.+)?/,Wrt=/^([^\.]+)\[([0-9]+)\](\.)?(.+)?/;function R6(e){return e.slice(0,2)==="__"}li.expandObjectPaths=function(e){var t,r,n,i,a,o,s;if(typeof e=="object"&&!Array.isArray(e)){for(r in e)if(e.hasOwnProperty(r))if(t=r.match(jrt)){if(i=e[r],n=t[1],R6(n))continue;delete e[r],e[n]=li.extendDeepNoArrays(e[n]||{},li.objectFromPath(r,li.expandObjectPaths(i))[n])}else if(t=r.match(Wrt)){if(i=e[r],n=t[1],R6(n))continue;if(a=parseInt(t[2]),delete e[r],e[n]=e[n]||[],t[3]===".")s=t[4],o=e[n][a]=e[n][a]||{},li.extendDeepNoArrays(o,li.objectFromPath(s,li.expandObjectPaths(i)));else{if(R6(n))continue;e[n][a]=li.expandObjectPaths(i)}}else{if(R6(r))continue;e[r]=li.expandObjectPaths(e[r])}}return e};li.numSeparate=function(e,t,r){if(r||(r=!1),typeof t!="string"||t.length===0)throw new Error("Separator string required for formatting!");typeof e=="number"&&(e=String(e));var n=/(\d+)(\d{3})/,i=t.charAt(0),a=t.charAt(1),o=e.split("."),s=o[0],l=o.length>1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};li.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var Vie=/^\w*$/;li.templateString=function(e,t){var r={};return e.replace(li.TEMPLATE_STRING_REGEX,function(n,i){var a;return Vie.test(i)?a=t[i]:(r[i]=r[i]||li.nestedProperty(t,i).get,a=r[i](!0)),a!==void 0?a:""})};var Zrt={max:10,count:0,name:"hovertemplate"};li.hovertemplateString=function(){return Xq.apply(Zrt,arguments)};var Xrt={max:10,count:0,name:"texttemplate"};li.texttemplateString=function(){return Xq.apply(Xrt,arguments)};var Yrt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function Krt(e){var t=e.match(Yrt);return t?{key:t[1],op:t[2],number:Number(t[3])}:{key:e,op:null,number:null}}var Jrt={max:10,count:0,name:"texttemplate",parseMultDiv:!0};li.texttemplateStringForShapes=function(){return Xq.apply(Jrt,arguments)};var Rie=/^[:|\|]/;function Xq(e,t,r){var n=this,i=arguments;return t||(t={}),e.replace(li.TEMPLATE_STRING_REGEX,function(a,o,s){var l=o==="xother"||o==="yother",u=o==="_xother"||o==="_yother",c=o==="_xother_"||o==="_yother_",f=o==="xother_"||o==="yother_",h=l||u||f||c,d=o;(u||c)&&(d=d.substring(1)),(f||c)&&(d=d.substring(0,d.length-1));var v=null,x=null;if(n.parseMultDiv){var b=Krt(d);d=b.key,v=b.op,x=b.number}var p;if(h){if(p=t[d],p===void 0)return""}else{var E,k;for(k=3;k<i.length;k++)if(E=i[k],!!E){if(E.hasOwnProperty(d)){p=E[d];break}if(Vie.test(d)||(p=li.nestedProperty(E,d).get(!0)),p!==void 0)break}}if(p!==void 0&&(v==="*"&&(p*=x),v==="/"&&(p/=x)),p===void 0&&n)return n.count<n.max&&(li.warn("Variable '"+d+"' in "+n.name+" could not be found!"),p=a),n.count===n.max&&li.warn("Too many "+n.name+" warnings - additional warnings will be suppressed"),n.count++,a;if(s){var A;if(s[0]===":"&&(A=r?r.numberFormat:li.numberFormat,p!==""&&(p=A(s.replace(Rie,""))(p))),s[0]==="|"){A=r?r.timeFormat:Ort;var L=li.dateTime2ms(p);p=li.formatDate(L,s.replace(Rie,""),!1,A)}}else{var _=d+"Label";t.hasOwnProperty(_)&&(p=t[_])}return h&&(p="("+p+")",(u||c)&&(p=" "+p),(f||c)&&(p=p+" ")),p})}var D6=48,Die=57;li.subplotSort=function(e,t){for(var r=Math.min(e.length,t.length)+1,n=0,i=0,a=0;a<r;a++){var o=e.charCodeAt(a)||0,s=t.charCodeAt(a)||0,l=o>=D6&&o<=Die,u=s>=D6&&s<=Die;if(l&&(n=10*n+o-D6),u&&(i=10*i+s-D6),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var h3=2e9;li.seedPseudoRandom=function(){h3=2e9};li.pseudoRandom=function(){var e=h3;return h3=(69069*h3+1)%4294967296,Math.abs(h3-e)<429496729?li.pseudoRandom():h3/4294967296};li.fillText=function(e,t,r){var n=Array.isArray(r)?function(o){r.push(o)}:function(o){r.text=o},i=li.extractOption(e,t,"htx","hovertext");if(li.isValidTextValue(i))return n(i);var a=li.extractOption(e,t,"tx","text");if(li.isValidTextValue(a))return n(a)};li.isValidTextValue=function(e){return e||e===0};li.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n<t;n++)r.indexOf(".")!==-1&&(r=r.replace("0%","%"),r=r.replace(".%","%"));return r};li.isHidden=function(e){var t=window.getComputedStyle(e).display;return!t||t==="none"};li.strTranslate=function(e,t){return e||t?"translate("+e+","+t+")":""};li.strRotate=function(e){return e?"rotate("+e+")":""};li.strScale=function(e){return e!==1?"scale("+e+")":""};li.getTextTransform=function(e){var t=e.noCenter,r=e.textX,n=e.textY,i=e.targetX,a=e.targetY,o=e.anchorX||0,s=e.anchorY||0,l=e.rotate,u=e.scale;return u?u>1&&(u=1):u=0,li.strTranslate(i-u*(r+o),a-u*(n+s))+li.strScale(u)+(l?"rotate("+l+(t?"":" "+r+" "+n)+")":"")};li.setTransormAndDisplay=function(e,t){e.attr("transform",li.getTextTransform(t)),e.style("display",t.scale?null:"none")};li.ensureUniformFontSize=function(e,t){var r=li.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r};li.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)};li.bigFont=function(e){return Math.round(1.2*e)};var zie=li.getFirefoxVersion(),$rt=zie!==null&&zie<86;li.getPositionFromD3Event=function(){return $rt?[VS.event.layerX,VS.event.layerY]:[VS.event.offsetX,VS.event.offsetY]}});var Wie=ye(()=>{"use strict";var Qrt=Mr(),Gie={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(Yq in Gie)jie=Yq.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),Qrt.addStyleRule(jie,Gie[Yq]);var jie,Yq});var Kq=ye((ktr,Zie)=>{Zie.exports=!0});var $q=ye((Ctr,Xie)=>{"use strict";var eit=Kq(),Jq;typeof window.matchMedia=="function"?Jq=!window.matchMedia("(hover: none)").matches:Jq=eit;Xie.exports=Jq});var vb=ye((Ltr,Qq)=>{"use strict";var p3=typeof Reflect=="object"?Reflect:null,Yie=p3&&typeof p3.apply=="function"?p3.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},F6;p3&&typeof p3.ownKeys=="function"?F6=p3.ownKeys:Object.getOwnPropertySymbols?F6=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:F6=function(t){return Object.getOwnPropertyNames(t)};function tit(e){console&&console.warn&&console.warn(e)}var Jie=Number.isNaN||function(t){return t!==t};function Tc(){Tc.init.call(this)}Qq.exports=Tc;Qq.exports.once=ait;Tc.EventEmitter=Tc;Tc.prototype._events=void 0;Tc.prototype._eventsCount=0;Tc.prototype._maxListeners=void 0;var Kie=10;function q6(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Tc,"defaultMaxListeners",{enumerable:!0,get:function(){return Kie},set:function(e){if(typeof e!="number"||e<0||Jie(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Kie=e}});Tc.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Tc.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Jie(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function $ie(e){return e._maxListeners===void 0?Tc.defaultMaxListeners:e._maxListeners}Tc.prototype.getMaxListeners=function(){return $ie(this)};Tc.prototype.emit=function(t){for(var r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);var i=t==="error",a=this._events;if(a!==void 0)i=i&&a.error===void 0;else if(!i)return!1;if(i){var o;if(r.length>0&&(o=r[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(l===void 0)return!1;if(typeof l=="function")Yie(l,this,r);else for(var u=l.length,c=ine(l,u),n=0;n<u;++n)Yie(c[n],this,r);return!0};function Qie(e,t,r,n){var i,a,o;if(q6(r),a=e._events,a===void 0?(a=e._events=Object.create(null),e._eventsCount=0):(a.newListener!==void 0&&(e.emit("newListener",t,r.listener?r.listener:r),a=e._events),o=a[t]),o===void 0)o=a[t]=r,++e._eventsCount;else if(typeof o=="function"?o=a[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),i=$ie(e),i>0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,tit(s)}return e}Tc.prototype.addListener=function(t,r){return Qie(this,t,r,!1)};Tc.prototype.on=Tc.prototype.addListener;Tc.prototype.prependListener=function(t,r){return Qie(this,t,r,!0)};function rit(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function ene(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=rit.bind(n);return i.listener=r,n.wrapFn=i,i}Tc.prototype.once=function(t,r){return q6(r),this.on(t,ene(this,t,r)),this};Tc.prototype.prependOnceListener=function(t,r){return q6(r),this.prependListener(t,ene(this,t,r)),this};Tc.prototype.removeListener=function(t,r){var n,i,a,o,s;if(q6(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;a===0?n.shift():iit(n,a),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};Tc.prototype.off=Tc.prototype.removeListener;Tc.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var a=Object.keys(n),o;for(i=0;i<a.length;++i)o=a[i],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=n[t],typeof r=="function")this.removeListener(t,r);else if(r!==void 0)for(i=r.length-1;i>=0;i--)this.removeListener(t,r[i]);return this};function tne(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?nit(i):ine(i,i.length)}Tc.prototype.listeners=function(t){return tne(this,t,!0)};Tc.prototype.rawListeners=function(t){return tne(this,t,!1)};Tc.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):rne.call(e,t)};Tc.prototype.listenerCount=rne;function rne(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Tc.prototype.eventNames=function(){return this._eventsCount>0?F6(this._events):[]};function ine(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function iit(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function nit(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}function ait(e,t){return new Promise(function(r,n){function i(o){e.removeListener(t,a),n(o)}function a(){typeof e.removeListener=="function"&&e.removeListener("error",i),r([].slice.call(arguments))}nne(e,t,a,{once:!0}),t!=="error"&&oit(e,i,{once:!0})})}function oit(e,t,r){typeof e.on=="function"&&nne(e,"error",t,r)}function nne(e,t,r,n){if(typeof e.on=="function")n.once?e.once(t,r):e.on(t,r);else if(typeof e.addEventListener=="function")e.addEventListener(t,function i(a){n.once&&e.removeEventListener(t,i),r(a)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e)}});var g3=ye((Ptr,ane)=>{"use strict";var eO=vb().EventEmitter,sit={init:function(e){if(e._ev instanceof eO)return e;var t=new eO,r=new eO;return e._ev=t,e._internalEv=r,e.on=t.on.bind(t),e.once=t.once.bind(t),e.removeListener=t.removeListener.bind(t),e.removeAllListeners=t.removeAllListeners.bind(t),e._internalOn=r.on.bind(r),e._internalOnce=r.once.bind(r),e._removeInternalListener=r.removeListener.bind(r),e._removeAllInternalListeners=r.removeAllListeners.bind(r),e.emit=function(n,i){t.emit(n,i),r.emit(n,i)},e},triggerHandler:function(e,t,r){var n,i=e._ev;if(!i)return;var a=i._events[t];if(!a)return;function o(l){if(l.listener){if(i.removeListener(t,l.listener),!l.fired)return l.fired=!0,l.listener.apply(i,[r])}else return l.apply(i,[r])}a=Array.isArray(a)?a:[a];var s;for(s=0;s<a.length-1;s++)o(a[s]);return n=o(a[s]),n},purge:function(e){return delete e._ev,delete e.on,delete e.once,delete e.removeListener,delete e.removeAllListeners,delete e.emit,delete e._ev,delete e._internalEv,delete e._internalOn,delete e._internalOnce,delete e._removeInternalListener,delete e._removeAllInternalListeners,e}};ane.exports=sit});var lne=ye((Itr,sne)=>{"use strict";var one=Mr(),lit=ub().dfltConfig;function uit(e,t){for(var r=[],n,i=0;i<t.length;i++)n=t[i],n===e?r[i]=n:typeof n=="object"?r[i]=Array.isArray(n)?one.extendDeep([],n):one.extendDeepAll({},n):r[i]=n;return r}var wy={};wy.add=function(e,t,r,n,i){var a,o;if(e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},o=e.undoQueue.index,e.autoplay){e.undoQueue.inSequence||(e.autoplay=!1);return}!e.undoQueue.sequence||e.undoQueue.beginSequence?(a={undo:{calls:[],args:[]},redo:{calls:[],args:[]}},e.undoQueue.queue.splice(o,e.undoQueue.queue.length-o,a),e.undoQueue.index+=1):a=e.undoQueue.queue[o-1],e.undoQueue.beginSequence=!1,a&&(a.undo.calls.unshift(t),a.undo.args.unshift(r),a.redo.calls.push(n),a.redo.args.push(i)),e.undoQueue.queue.length>lit.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)};wy.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0};wy.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1};wy.undo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n<r.undo.calls.length;n++)wy.plotDo(t,r.undo.calls[n],r.undo.args[n]);t.undoQueue.inSequence=!1,t.autoplay=!1}};wy.redo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index>=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n<r.redo.calls.length;n++)wy.plotDo(t,r.redo.calls[n],r.redo.args[n]);t.undoQueue.inSequence=!1,t.autoplay=!1,t.undoQueue.index++}};wy.plotDo=function(e,t,r){e.autoplay=!0,r=uit(e,r),t.apply(null,r)};sne.exports=wy});var tO=ye((Rtr,une)=>{"use strict";une.exports={_isLinkedToArray:"frames_entry",group:{valType:"string"},name:{valType:"string"},traces:{valType:"any"},baseframe:{valType:"string"},data:{valType:"any"},layout:{valType:"any"}}});var _3=ye(Bh=>{"use strict";var x0=ba(),HS=Mr(),B6=vl(),rO=s3(),cit=tO(),fit=zS(),hit=ub().configAttributes,cne=Bu(),xg=HS.extendDeepAll,m3=HS.isPlainObject,dit=HS.isArrayOrTypedArray,N6=HS.nestedProperty,vit=HS.valObjectMeta,iO="_isSubplotObj",U6="_isLinkedToArray",pit="_arrayAttrRegexps",hne="_deprecated",nO=[iO,U6,pit,hne];Bh.IS_SUBPLOT_OBJ=iO;Bh.IS_LINKED_TO_ARRAY=U6;Bh.DEPRECATED=hne;Bh.UNDERSCORE_ATTRS=nO;Bh.get=function(){var e={};return x0.allTypes.forEach(function(t){e[t]=mit(t)}),{defs:{valObjects:vit,metaKeys:nO.concat(["description","role","editType","impliedEdits"]),editType:{traces:cne.traces,layout:cne.layout},impliedEdits:{}},traces:e,layout:yit(),frames:_it(),animation:y3(fit),config:y3(hit)}};Bh.crawl=function(e,t,r,n){var i=r||0;n=n||"",Object.keys(e).forEach(function(a){var o=e[a];if(nO.indexOf(a)===-1){var s=(n?n+".":"")+a;t(o,a,e,i,s),!Bh.isValObject(o)&&m3(o)&&a!=="impliedEdits"&&Bh.crawl(o,t,i+1,s)}})};Bh.isValObject=function(e){return e&&e.valType!==void 0};Bh.findArrayAttributes=function(e){var t=[],r=[],n=[],i,a;function o(l,u,c,f){r=r.slice(0,f).concat([u]),n=n.slice(0,f).concat([l&&l._isLinkedToArray]);var h=l&&(l.valType==="data_array"||l.arrayOk===!0)&&!(r[f-1]==="colorbar"&&(u==="ticktext"||u==="tickvals"));h&&s(i,0,"")}function s(l,u,c){var f=l[r[u]],h=c+r[u];if(u===r.length-1)dit(f)&&t.push(a+h);else if(n[u]){if(Array.isArray(f))for(var d=0;d<f.length;d++)m3(f[d])&&s(f[d],u+1,h+"["+d+"].")}else m3(f)&&s(f,u+1,h+".")}return i=e,a="",Bh.crawl(B6,o),e._module&&e._module.attributes&&Bh.crawl(e._module.attributes,o),t};Bh.getTraceValObject=function(e,t){var r=t[0],n=1,i,a,o=e._module;if(o||(o=(x0.modules[e.type||B6.type.dflt]||{})._module),!o)return!1;if(i=o.attributes,a=i&&i[r],!a){var s=o.basePlotModule;s&&s.attributes&&(a=s.attributes[r])}return a||(a=B6[r]),dne(a,t,n)};Bh.getLayoutValObject=function(e,t){var r=git(e,t[0]);return dne(r,t,1)};function git(e,t){var r,n,i,a,o=e._basePlotModules;if(o){var s;for(r=0;r<o.length;r++){if(i=o[r],i.attrRegex&&i.attrRegex.test(t)){if(i.layoutAttrOverrides)return i.layoutAttrOverrides;!s&&i.layoutAttributes&&(s=i.layoutAttributes)}var l=i.baseLayoutAttrOverrides;if(l&&t in l)return l[t]}if(s)return s}var u=e._modules;if(u){for(r=0;r<u.length;r++)if(a=u[r].layoutAttributes,a&&t in a)return a[t]}for(n in x0.componentsRegistry){if(i=x0.componentsRegistry[n],i.name==="colorscale"&&t.indexOf("coloraxis")===0)return i.layoutAttributes[t];if(!i.schema&&t===i.name)return i.layoutAttributes}return t in rO?rO[t]:!1}function dne(e,t,r){if(!e)return!1;if(e._isLinkedToArray){if(O6(t[r]))r++;else if(r<t.length)return!1}for(;r<t.length;r++){var n=e[t[r]];if(m3(n))e=n;else break;if(r===t.length-1)break;if(e._isLinkedToArray){if(r++,!O6(t[r]))return!1}else if(e.valType==="info_array"){r++;var i=t[r];if(!O6(i))return!1;var a=e.items;if(Array.isArray(a)){if(i>=a.length)return!1;if(e.dimensions===2){if(r++,t.length===r)return e;var o=t[r];if(!O6(o))return!1;e=a[i][o]}else e=a[i]}else e=a}}return e}function O6(e){return e===Math.round(e)&&e>=0}function mit(e){var t,r;t=x0.modules[e]._module,r=t.basePlotModule;var n={};n.type=null;var i=xg({},B6),a=xg({},t.attributes);Bh.crawl(a,function(l,u,c,f,h){N6(i,h).set(void 0),l===void 0&&N6(a,h).set(void 0)}),xg(n,i),x0.traceIs(e,"noOpacity")&&delete n.opacity,x0.traceIs(e,"showLegend")||(delete n.showlegend,delete n.legendgroup),x0.traceIs(e,"noHover")&&(delete n.hoverinfo,delete n.hoverlabel),t.selectPoints||delete n.selectedpoints,xg(n,a),r.attributes&&xg(n,r.attributes),n.type=e;var o={meta:t.meta||{},categories:t.categories||{},animatable:!!t.animatable,type:e,attributes:y3(n)};if(t.layoutAttributes){var s={};xg(s,t.layoutAttributes),o.layoutAttributes=y3(s)}return t.animatable||Bh.crawl(o,function(l){Bh.isValObject(l)&&"anim"in l&&delete l.anim}),o}function yit(){var e={},t,r;xg(e,rO);for(t in x0.subplotsRegistry)if(r=x0.subplotsRegistry[t],!!r.layoutAttributes)if(Array.isArray(r.attr))for(var n=0;n<r.attr.length;n++)fne(e,r,r.attr[n]);else{var i=r.attr==="subplot"?r.name:r.attr;fne(e,r,i)}for(t in x0.componentsRegistry){r=x0.componentsRegistry[t];var a=r.schema;if(a&&(a.subplots||a.layout)){var o=a.subplots;if(o&&o.xaxis&&!o.yaxis)for(var s in o.xaxis)delete e.yaxis[s];delete e.xaxis.shift,delete e.xaxis.autoshift}else r.name==="colorscale"?xg(e,r.layoutAttributes):r.layoutAttributes&&Tit(e,r.layoutAttributes,r.name)}return{layoutAttributes:y3(e)}}function _it(){var e={frames:xg({},cit)};return y3(e),e.frames}function y3(e){return xit(e),bit(e),wit(e),e}function xit(e){function t(n){return{valType:"string",editType:"none"}}function r(n,i,a){Bh.isValObject(n)?(n.arrayOk===!0||n.valType==="data_array")&&(a[i+"src"]=t(i)):m3(n)&&(n.role="object")}Bh.crawl(e,r)}function bit(e){function t(r,n,i){if(r){var a=r[U6];a&&(delete r[U6],i[n]={items:{}},i[n].items[a]=r,i[n].role="object")}}Bh.crawl(e,t)}function wit(e){function t(r){for(var n in r)if(m3(r[n]))t(r[n]);else if(Array.isArray(r[n]))for(var i=0;i<r[n].length;i++)t(r[n][i]);else r[n]instanceof RegExp&&(r[n]=r[n].toString())}t(e)}function fne(e,t,r){var n=N6(e,r),i=xg({},t.layoutAttributes);i[iO]=!0,n.set(i)}function Tit(e,t,r){var n=N6(e,r);n.set(xg(n.get()||{},t))}});var Vs=ye(pb=>{"use strict";var x3=Mr(),Ait=vl(),Q1="templateitemname",aO={name:{valType:"string",editType:"none"}};aO[Q1]={valType:"string",editType:"calc"};pb.templatedArray=function(e,t){return t._isLinkedToArray=e,t.name=aO.name,t[Q1]=aO[Q1],t};pb.traceTemplater=function(e){var t={},r,n;for(r in e)n=e[r],Array.isArray(n)&&n.length&&(t[r]=0);function i(a){r=x3.coerce(a,{},Ait,"type");var o={type:r,_template:null};if(r in t){n=e[r];var s=t[r]%n.length;t[r]++,o._template=n[s]}return o}return{newTrace:i}};pb.newContainer=function(e,t,r){var n=e._template,i=n&&(n[t]||r&&n[r]);x3.isPlainObject(i)||(i=null);var a=e[t]={_template:i};return a};pb.arrayTemplater=function(e,t,r){var n=e._template,i=n&&n[pne(t)],a=n&&n[t];(!Array.isArray(a)||!a.length)&&(a=[]);var o={};function s(u){var c={name:u.name,_input:u},f=c[Q1]=u[Q1];if(!vne(f))return c._template=i,c;for(var h=0;h<a.length;h++){var d=a[h];if(d.name===f)return o[f]=1,c._template=d,c}return c[r]=u[r]||!1,c._template=!1,c}function l(){for(var u=[],c=0;c<a.length;c++){var f=a[c],h=f.name;if(vne(h)&&!o[h]){var d={_template:f,name:h,_input:{_templateitemname:h}};d[Q1]=f[Q1],u.push(d),o[h]=1}}return u}return{newItem:s,defaultItems:l}};function vne(e){return e&&typeof e=="string"}function pne(e){var t=e.length-1;return e.charAt(t)!=="s"&&x3.warn("bad argument to arrayDefaultKey: "+e),e.substr(0,e.length-1)+"defaults"}pb.arrayDefaultKey=pne;pb.arrayEditor=function(e,t,r){var n=(x3.nestedProperty(e,t).get()||[]).length,i=r._index,a=i>=n&&(r._input||{})._templateitemname;a&&(i=n);var o=t+"["+i+"]",s;function l(){s={},a&&(s[o]={},s[o][Q1]=a)}l();function u(d,v){s[d]=v}function c(d,v){a?x3.nestedProperty(s[o],d).set(v):s[o+"."+d]=v}function f(){var d=s;return l(),d}function h(d,v){d&&c(d,v);var x=f();for(var b in x)x3.nestedProperty(e,b).set(x[b])}return{modifyBase:u,modifyItem:c,getUpdateObj:f,applyUpdate:h}}});var ad=ye((Ftr,gne)=>{"use strict";var GS=n3().counter;gne.exports={idRegex:{x:GS("x","( domain)?"),y:GS("y","( domain)?")},attrRegex:GS("[xy]axis"),xAxisMatch:GS("xaxis"),yAxisMatch:GS("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}});var af=ye(Tp=>{"use strict";var Sit=ba(),oO=ad();Tp.id2name=function(t){if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))){var r=t.split(" ")[0].substr(1);return r==="1"&&(r=""),t.charAt(0)+"axis"+r}};Tp.name2id=function(t){if(t.match(oO.AX_NAME_PATTERN)){var r=t.substr(5);return r==="1"&&(r=""),t.charAt(0)+r}};Tp.cleanId=function(t,r,n){var i=/( domain)$/.test(t);if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))&&!(r&&t.charAt(0)!==r)&&!(i&&!n)){var a=t.split(" ")[0].substr(1).replace(/^0+/,"");return a==="1"&&(a=""),t.charAt(0)+a+(i&&n?" domain":"")}};Tp.list=function(e,t,r){var n=e._fullLayout;if(!n)return[];var i=Tp.listIds(e,t),a=new Array(i.length),o;for(o=0;o<i.length;o++){var s=i[o];a[o]=n[s.charAt(0)+"axis"+s.substr(1)]}if(!r){var l=n._subplots.gl3d||[];for(o=0;o<l.length;o++){var u=n[l[o]];t?a.push(u[t+"axis"]):a.push(u.xaxis,u.yaxis,u.zaxis)}}return a};Tp.listIds=function(e,t){var r=e._fullLayout;if(!r)return[];var n=r._subplots;return t?n[t+"axis"]:n.xaxis.concat(n.yaxis)};Tp.getFromId=function(e,t,r){var n=e._fullLayout;return t=t===void 0||typeof t!="string"?t:t.replace(" domain",""),r==="x"?t=t.replace(/y[0-9]*/,""):r==="y"&&(t=t.replace(/x[0-9]*/,"")),n[Tp.id2name(t)]};Tp.getFromTrace=function(e,t,r){var n=e._fullLayout,i=null;if(Sit.traceIs(t,"gl3d")){var a=t.scene;a.substr(0,5)==="scene"&&(i=n[a][r+"axis"])}else i=Tp.getFromId(e,t[r+"axis"]||r);return i};Tp.idSort=function(e,t){var r=e.charAt(0),n=t.charAt(0);return r!==n?r>n?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)};Tp.ref2id=function(e){return/^[xyz]/.test(e)?e.split(" ")[0]:!1};function mne(e,t){if(t&&t.length){for(var r=0;r<t.length;r++)if(t[r][e])return!0}return!1}Tp.isLinked=function(e,t){return mne(t,e._axisMatchGroups)||mne(t,e._axisConstraintGroups)}});var e_=ye((Otr,yne)=>{"use strict";function Mit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".outline-controllers").remove()}function Eit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".select-outline").remove(),e._fullLayout._outlining=!1}yne.exports={clearOutlineControllers:Mit,clearOutline:Eit}});var V6=ye((Btr,_ne)=>{"use strict";_ne.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}});var kd=ye(G6=>{"use strict";var H6=ba(),Ntr=ad().SUBPLOT_PATTERN;G6.getSubplotCalcData=function(e,t,r){var n=H6.subplotsRegistry[t];if(!n)return[];for(var i=n.attr,a=[],o=0;o<e.length;o++){var s=e[o],l=s[0].trace;l[i]===r&&a.push(s)}return a};G6.getModuleCalcData=function(e,t,r){var n=[],i=[],a;if(typeof t=="string"?a=H6.getModule(t).plot:typeof t=="function"?a=t:a=t.plot,!a)return[n,e];for(var o=r,s=0;s<e.length;s++){var l=e[s],u=l[0].trace,c=u.zorder!==void 0;u.visible!==!0||u._length===0||(u._module&&u._module.plot===a&&(!c||u.zorder===o)?n.push(l):i.push(l))}return[n,i]};G6.getSubplotData=function(t,r,n){if(!H6.subplotsRegistry[r])return[];for(var i=H6.subplotsRegistry[r].attr,a=[],o,s,l,u=0;u<t.length;u++)o=t[u],o[i]===n&&a.push(o);return a}});var Tne=ye(gb=>{"use strict";var kit=ba(),b3=Mr();gb.manageCommandObserver=function(e,t,r,n){var i={},a=!0;t&&t._commandObserver&&(i=t._commandObserver),i.cache||(i.cache={}),i.lookupTable={};var o=gb.hasSimpleAPICommandBindings(e,r,i.lookupTable);if(t&&t._commandObserver){if(o)return i;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,i}if(o){xne(e,o,i.cache),i.check=function(){if(a){var c=xne(e,o,i.cache);return c.changed&&n&&i.lookupTable[c.value]!==void 0&&(i.disable(),Promise.resolve(n({value:c.value,type:o.type,prop:o.prop,traces:o.traces,index:i.lookupTable[c.value]})).then(i.enable,i.enable)),c.changed}};for(var s=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],l=0;l<s.length;l++)e._internalOn(s[l],i.check);i.remove=function(){for(var u=0;u<s.length;u++)e._removeInternalListener(s[u],i.check)}}else b3.log("Unable to automatically bind plot updates to API command"),i.lookupTable={},i.remove=function(){};return i.disable=function(){a=!1},i.enable=function(){a=!0},t&&(t._commandObserver=i),i};gb.hasSimpleAPICommandBindings=function(e,t,r){var n,i=t.length,a;for(n=0;n<i;n++){var o,s=t[n],l=s.method,u=s.args;if(Array.isArray(u)||(u=[]),!l)return!1;var c=gb.computeAPICommandBindings(e,l,u);if(c.length!==1)return!1;if(!a)a=c[0],Array.isArray(a.traces)&&a.traces.sort();else{if(o=c[0],o.type!==a.type||o.prop!==a.prop)return!1;if(Array.isArray(a.traces))if(Array.isArray(o.traces)){o.traces.sort();for(var f=0;f<a.traces.length;f++)if(a.traces[f]!==o.traces[f])return!1}else return!1;else if(o.prop!==a.prop)return!1}o=c[0];var h=o.value;if(Array.isArray(h))if(h.length===1)h=h[0];else return!1;r&&(r[h]=n)}return a};function xne(e,t,r){var n,i,a,o=!1;if(t.type==="data")n=e._fullData[t.traces!==null?t.traces[0]:0];else if(t.type==="layout")n=e._fullLayout;else return!1;return i=b3.nestedProperty(n,t.prop).get(),a=r[t.type]=r[t.type]||{},a.hasOwnProperty(t.prop)&&a[t.prop]!==i&&(o=!0),a[t.prop]=i,{changed:o,value:i}}gb.executeAPICommand=function(e,t,r){if(t==="skip")return Promise.resolve();var n=kit.apiMethodRegistry[t],i=[e];Array.isArray(r)||(r=[]);for(var a=0;a<r.length;a++)i.push(r[a]);return n.apply(null,i).catch(function(o){return b3.warn("API call to Plotly."+t+" rejected.",o),Promise.reject(o)})};gb.computeAPICommandBindings=function(e,t,r){var n;switch(Array.isArray(r)||(r=[]),t){case"restyle":n=wne(e,r);break;case"relayout":n=bne(e,r);break;case"update":n=wne(e,[r[0],r[2]]).concat(bne(e,[r[1]]));break;case"animate":n=Cit(e,r);break;default:n=[]}return n};function Cit(e,t){return Array.isArray(t[0])&&t[0].length===1&&["string","number"].indexOf(typeof t[0][0])!==-1?[{type:"layout",prop:"_currentFrame",value:t[0][0].toString()}]:[]}function bne(e,t){var r=[],n=t[0],i={};if(typeof n=="string")i[n]=t[1];else if(b3.isPlainObject(n))i=n;else return r;return sO(i,function(a,o,s){r.push({type:"layout",prop:a,value:s})},"",0),r}function wne(e,t){var r,n,i,a,o=[];if(n=t[0],i=t[1],r=t[2],a={},typeof n=="string")a[n]=i;else if(b3.isPlainObject(n))a=n,r===void 0&&(r=i);else return o;return r===void 0&&(r=null),sO(a,function(s,l,u){var c,f;if(Array.isArray(u)){f=u.slice();var h=Math.min(f.length,e.data.length);r&&(h=Math.min(h,r.length)),c=[];for(var d=0;d<h;d++)c[d]=r?r[d]:d}else f=u,c=r?r.slice():null;if(c===null)Array.isArray(f)&&(f=f[0]);else if(Array.isArray(c)){if(!Array.isArray(f)){var v=f;f=[];for(var x=0;x<c.length;x++)f[x]=v}f.length=Math.min(c.length,f.length)}o.push({type:"data",prop:s,traces:c,value:f})},"",0),o}function sO(e,t,r,n){Object.keys(e).forEach(function(i){var a=e[i];if(i[0]!=="_"){var o=r+(n>0?".":"")+i;b3.isPlainObject(a)?sO(a,t,o,n+1):t(o,i,a)}})}});var Xu=ye((Htr,qne)=>{"use strict";var Lne=xa(),Lit=e3().timeFormatLocale,Pit=vq().formatLocale,jS=uo(),Iit=pq(),bl=ba(),Pne=_3(),Rit=Vs(),Ca=Mr(),Ine=va(),Ane=es().BADNUM,Ap=af(),Dit=e_().clearOutline,zit=V6(),lO=zS(),Fit=tO(),qit=kd().getModuleCalcData,Sne=Ca.relinkPrivateKeys,mb=Ca._,ha=qne.exports={};Ca.extendFlat(ha,bl);ha.attributes=vl();ha.attributes.type.values=ha.allTypes;ha.fontAttrs=Su();ha.layoutAttributes=s3();var W6=Tne();ha.executeAPICommand=W6.executeAPICommand;ha.computeAPICommandBindings=W6.computeAPICommandBindings;ha.manageCommandObserver=W6.manageCommandObserver;ha.hasSimpleAPICommandBindings=W6.hasSimpleAPICommandBindings;ha.redrawText=function(e){return e=Ca.getGraphDiv(e),new Promise(function(t){setTimeout(function(){e._fullLayout&&(bl.getComponentMethod("annotations","draw")(e),bl.getComponentMethod("legend","draw")(e),bl.getComponentMethod("colorbar","draw")(e),t(ha.previousPromises(e)))},300)})};ha.resize=function(e){e=Ca.getGraphDiv(e);var t,r=new Promise(function(n,i){(!e||Ca.isHidden(e))&&i(new Error("Resize must be passed a displayed plot div element.")),e._redrawTimer&&clearTimeout(e._redrawTimer),e._resolveResize&&(t=e._resolveResize),e._resolveResize=n,e._redrawTimer=setTimeout(function(){if(!e.layout||e.layout.width&&e.layout.height||Ca.isHidden(e)){n(e);return}delete e.layout.width,delete e.layout.height;var a=e.changed;e.autoplay=!0,bl.call("relayout",e,{autosize:!0}).then(function(){e.changed=a,e._resolveResize===n&&(delete e._resolveResize,n(e))})},100)});return t&&t(r),r};ha.previousPromises=function(e){if((e._promises||[]).length)return Promise.all(e._promises).then(function(){e._promises=[]})};ha.addLinks=function(e){if(!(!e._context.showLink&&!e._context.showSources)){var t=e._fullLayout,r=Ca.ensureSingle(t._paper,"text","js-plot-link-container",function(l){l.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:Ine.defaultLine,"pointer-events":"all"}).each(function(){var u=Lne.select(this);u.append("tspan").classed("js-link-to-tool",!0),u.append("tspan").classed("js-link-spacer",!0),u.append("tspan").classed("js-sourcelinks",!0)})}),n=r.node(),i={y:t._paper.attr("height")-9};document.body.contains(n)&&n.getComputedTextLength()>=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var a=r.select(".js-link-to-tool"),o=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&Oit(e,a),o.text(a.text()&&s.text()?" - ":"")}};function Oit(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" \xBB");if(e._context.sendData)r.on("click",function(){ha.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}ha.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=Lne.select(e).append("div").attr("id","hiddenform").style("display","none"),n=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"}),i=n.append("input").attr({type:"text",name:"data"});return i.node().value=ha.graphJson(e,!1,"keepdata"),n.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var Bit=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],Nit=["year","month","dayMonth","dayMonthYear"];ha.supplyDefaults=function(e,t){var r=t&&t.skipUpdateCalc,n=e._fullLayout||{};if(n._skipDefaults){delete n._skipDefaults;return}var i=e._fullLayout={},a=e.layout||{},o=e._fullData||[],s=e._fullData=[],l=e.data||[],u=e.calcdata||[],c=e._context||{},f;e._transitionData||ha.createTransitionData(e),i._dfltTitle={plot:mb(e,"Click to enter Plot title"),subtitle:mb(e,"Click to enter Plot subtitle"),x:mb(e,"Click to enter X axis title"),y:mb(e,"Click to enter Y axis title"),colorbar:mb(e,"Click to enter Colorscale title"),annotation:mb(e,"new text")},i._traceWord=mb(e,"trace");var h=Mne(e,Bit);if(i._mapboxAccessToken=c.mapboxAccessToken,n._initialAutoSizeIsDone){var d=n.width,v=n.height;ha.supplyLayoutGlobalDefaults(a,i,h),a.width||(i.width=d),a.height||(i.height=v),ha.sanitizeMargins(i)}else{ha.supplyLayoutGlobalDefaults(a,i,h);var x=!a.width||!a.height,b=i.autosize,p=c.autosizable,E=x&&(b||p);E?ha.plotAutoSize(e,a,i):x&&ha.sanitizeMargins(i),!b&&x&&(a.width=i.width,a.height=i.height)}i._d3locale=Hit(h,i.separators),i._extraFormat=Mne(e,Nit),i._initialAutoSizeIsDone=!0,i._dataLength=l.length,i._modules=[],i._visibleModules=[],i._basePlotModules=[];var k=i._subplots=Vit(),A=i._splomAxes={x:{},y:{}},L=i._splomSubplots={};i._splomGridDflt={},i._scatterStackOpts={},i._firstScatter={},i._alignmentOpts={},i._colorAxes={},i._requestRangeslider={},i._traceUids=Uit(o,l),ha.supplyDataDefaults(l,s,a,i);var _=Object.keys(A.x),C=Object.keys(A.y);if(_.length>1&&C.length>1){for(bl.getComponentMethod("grid","sizeDefaults")(a,i),f=0;f<_.length;f++)Ca.pushUnique(k.xaxis,_[f]);for(f=0;f<C.length;f++)Ca.pushUnique(k.yaxis,C[f]);for(var M in L)Ca.pushUnique(k.cartesian,M)}if(i._has=ha._hasPlotType.bind(i),o.length===s.length)for(f=0;f<s.length;f++)Sne(s[f],o[f]);ha.supplyLayoutModuleDefaults(a,i,s,e._transitionData);var g=i._visibleModules,P=[];for(f=0;f<g.length;f++){var T=g[f].crossTraceDefaults;T&&Ca.pushUnique(P,T)}for(f=0;f<P.length;f++)P[f](s,i);i._hasOnlyLargeSploms=i._basePlotModules.length===1&&i._basePlotModules[0].name==="splom"&&_.length>15&&C.length>15&&i.shapes.length===0&&i.images.length===0,ha.linkSubplots(s,i,o,n),ha.cleanPlot(s,i,o,n);var F=!!(n._has&&n._has("cartesian")),q=!!(i._has&&i._has("cartesian")),V=F,H=q;V&&!H?n._bgLayer.remove():H&&!V&&(i._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&Dit({_fullLayout:n}),Git(s,i),Sne(i,n),bl.getComponentMethod("colorscale","crossTraceDefaults")(s,i),i._preGUI||(i._preGUI={}),i._tracePreGUI||(i._tracePreGUI={});var X=i._tracePreGUI,G={},N;for(N in X)G[N]="old";for(f=0;f<s.length;f++)N=s[f]._fullInput.uid,G[N]||(X[N]={}),G[N]="new";for(N in G)G[N]==="old"&&delete X[N];Rne(i),bl.getComponentMethod("rangeslider","makeData")(i),!r&&u.length===s.length&&ha.supplyDefaultsUpdateCalc(u,s)};ha.supplyDefaultsUpdateCalc=function(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=(e[r]||[])[0];if(i&&i.trace){var a=i.trace;if(a._hasCalcTransform){var o=a._arrayAttrs,s,l,u;for(s=0;s<o.length;s++)l=o[s],u=Ca.nestedProperty(a,l).get().slice(),Ca.nestedProperty(n,l).set(u)}i.trace=n}}};function Uit(e,t){var r=t.length,n=[],i,a;for(i=0;i<e.length;i++){var o=e[i]._fullInput;o!==a&&n.push(o),a=o}var s=n.length,l=new Array(r),u={};function c(d,v){l[v]=d,u[d]=1}function f(d,v){if(d&&typeof d=="string"&&!u[d])return c(d,v),!0}for(i=0;i<r;i++){var h=t[i].uid;typeof h=="number"&&(h=String(h)),!f(h,i)&&(i<s&&f(n[i].uid,i)||c(Ca.randstr(u),i))}return l}function Vit(){var e=bl.collectableSubplotTypes,t={},r,n;if(!e){e=[];var i=bl.subplotsRegistry;for(var a in i){var o=i[a],s=o.attr;if(s&&(e.push(a),Array.isArray(s)))for(n=0;n<s.length;n++)Ca.pushUnique(e,s[n])}}for(r=0;r<e.length;r++)t[e[r]]=[];return t}function Mne(e,t){var r=e._context.locale;r||(r="en-US");var n=!1,i={};function a(f){for(var h=!0,d=0;d<t.length;d++){var v=t[d];i[v]||(f[v]?i[v]=f[v]:h=!1)}h&&(n=!0)}for(var o=0;o<2;o++){for(var s=e._context.locales,l=0;l<2;l++){var u=(s[r]||{}).format;if(u&&(a(u),n))break;s=bl.localeRegistry}var c=r.split("-")[0];if(n||c===r)break;r=c}return n||a(bl.localeRegistry.en.format),i}function Hit(e,t){return e.decimal=t.charAt(0),e.thousands=t.charAt(1),{numberFormat:function(r){try{r=Pit(e).format(Ca.adjustFormat(r))}catch(n){return Ca.warnBadFormat(r),Ca.noFormat}return r},timeFormat:Lit(e).utcFormat}}function Git(e,t){var r,n=[];t.meta&&(r=t._meta={meta:t.meta,layout:{meta:t.meta}});for(var i=0;i<e.length;i++){var a=e[i];a.meta?n[a.index]=a._meta={meta:a.meta}:t.meta&&(a._meta={meta:t.meta}),t.meta&&(a._meta.layout={meta:t.meta})}n.length&&(r||(r=t._meta={}),r.data=n)}ha.createTransitionData=function(e){e._transitionData||(e._transitionData={}),e._transitionData._frames||(e._transitionData._frames=[]),e._transitionData._frameHash||(e._transitionData._frameHash={}),e._transitionData._counter||(e._transitionData._counter=0),e._transitionData._interruptCallbacks||(e._transitionData._interruptCallbacks=[])};ha._hasPlotType=function(e){var t,r=this._basePlotModules||[];for(t=0;t<r.length;t++)if(r[t].name===e)return!0;var n=this._modules||[];for(t=0;t<n.length;t++){var i=n[t].name;if(i===e)return!0;var a=bl.modules[i];if(a&&a.categories[e])return!0}return!1};ha.cleanPlot=function(e,t,r,n){var i,a,o=n._basePlotModules||[];for(i=0;i<o.length;i++){var s=o[i];s.clean&&s.clean(e,t,r,n)}var l=n._has&&n._has("gl"),u=t._has&&t._has("gl");l&&!u&&n._glcontainer!==void 0&&(n._glcontainer.selectAll(".gl-canvas").remove(),n._glcontainer.selectAll(".no-webgl").remove(),n._glcanvas=null);var c=!!n._infolayer;e:for(i=0;i<r.length;i++){var f=r[i],h=f.uid;for(a=0;a<e.length;a++){var d=e[a];if(h===d.uid)continue e}c&&n._infolayer.select(".cb"+h).remove()}};ha.linkSubplots=function(e,t,r,n){var i,a,o=n._plots||{},s=t._plots={},l=t._subplots,u={_fullData:e,_fullLayout:t},c=l.cartesian||[];for(i=0;i<c.length;i++){var f=c[i],h=o[f],d=Ap.getFromId(u,f,"x"),v=Ap.getFromId(u,f,"y"),x;for(h?x=s[f]=h:(x=s[f]={},x.id=f),d._counterAxes.push(v._id),v._counterAxes.push(d._id),d._subplotsWith.push(f),v._subplotsWith.push(f),x.xaxis=d,x.yaxis=v,x._hasClipOnAxisFalse=!1,a=0;a<e.length;a++){var b=e[a];if(b.xaxis===x.xaxis._id&&b.yaxis===x.yaxis._id&&b.cliponaxis===!1){x._hasClipOnAxisFalse=!0;break}}}var p=Ap.list(u,null,!0),E;for(i=0;i<p.length;i++){E=p[i];var k=null;E.overlaying&&(k=Ap.getFromId(u,E.overlaying),k&&k.overlaying&&(E.overlaying=!1,k=null)),E._mainAxis=k||E,k&&(E.domain=k.domain.slice()),E._anchorAxis=E.anchor==="free"?null:Ap.getFromId(u,E.anchor)}for(i=0;i<p.length;i++)if(E=p[i],E._counterAxes.sort(Ap.idSort),E._subplotsWith.sort(Ca.subplotSort),E._mainSubplot=jit(E,t),E._counterAxes.length&&(E.spikemode&&E.spikemode.indexOf("across")!==-1||E.automargin&&E.mirror&&E.anchor!=="free"||bl.getComponentMethod("rangeslider","isVisible")(E))){var A=1,L=0;for(a=0;a<E._counterAxes.length;a++){var _=Ap.getFromId(u,E._counterAxes[a]);A=Math.min(A,_.domain[0]),L=Math.max(L,_.domain[1])}A<L&&(E._counterDomainMin=A,E._counterDomainMax=L)}};function jit(e,t){var r={_fullLayout:t},n=e._id.charAt(0)==="x",i=e._mainAxis._anchorAxis,a="",o="",s="";if(i&&(s=i._mainAxis._id,a=n?e._id+s:s+e._id),!a||!t._plots[a]){a="";for(var l=e._counterAxes,u=0;u<l.length;u++){var c=l[u],f=n?e._id+c:c+e._id;o||(o=f);var h=Ap.getFromId(r,c);if(s&&h.overlaying===s){a=f;break}}}return a||o}ha.clearExpandedTraceDefaultColors=function(e){var t,r,n;function i(o,s,l,u){r[u]=s,r.length=u+1,o.valType==="color"&&o.dflt===void 0&&t.push(r.join("."))}for(r=[],t=e._module._colorAttrs,t||(e._module._colorAttrs=t=[],Pne.crawl(e._module.attributes,i)),n=0;n<t.length;n++){var a=Ca.nestedProperty(e,"_input."+t[n]);a.get()||Ca.nestedProperty(e,t[n]).set(null)}};ha.supplyDataDefaults=function(e,t,r,n){var i=n._modules,a=n._visibleModules,o=n._basePlotModules,s=0,l=0,u,c,f;n._transformModules=[];function h(E){t.push(E);var k=E._module;k&&(Ca.pushUnique(i,k),E.visible===!0&&Ca.pushUnique(a,k),Ca.pushUnique(o,E._module.basePlotModule),s++,E._input.visible!==!1&&l++)}var d={},v=[],x=(r.template||{}).data||{},b=Rit.traceTemplater(x);for(u=0;u<e.length;u++)f=e[u],c=b.newTrace(f),c.uid=n._traceUids[u],ha.supplyTraceDefaults(f,c,l,n,u),c.index=u,c._input=f,c._fullInput=c,h(c),bl.traceIs(c,"carpetAxis")&&(d[c.carpet]=c),bl.traceIs(c,"carpetDependent")&&v.push(u);for(u=0;u<v.length;u++)if(c=t[v[u]],!!c.visible){var p=d[c.carpet];if(c._carpet=p,!p||!p.visible){c.visible=!1;continue}c.xaxis=p.xaxis,c.yaxis=p.yaxis}};ha.supplyAnimationDefaults=function(e){e=e||{};var t,r={};function n(i,a){return Ca.coerce(e||{},r,lO,i,a)}if(n("mode"),n("direction"),n("fromcurrent"),Array.isArray(e.frame))for(r.frame=[],t=0;t<e.frame.length;t++)r.frame[t]=ha.supplyAnimationFrameDefaults(e.frame[t]||{});else r.frame=ha.supplyAnimationFrameDefaults(e.frame||{});if(Array.isArray(e.transition))for(r.transition=[],t=0;t<e.transition.length;t++)r.transition[t]=ha.supplyAnimationTransitionDefaults(e.transition[t]||{});else r.transition=ha.supplyAnimationTransitionDefaults(e.transition||{});return r};ha.supplyAnimationFrameDefaults=function(e){var t={};function r(n,i){return Ca.coerce(e||{},t,lO.frame,n,i)}return r("duration"),r("redraw"),t};ha.supplyAnimationTransitionDefaults=function(e){var t={};function r(n,i){return Ca.coerce(e||{},t,lO.transition,n,i)}return r("duration"),r("easing"),t};ha.supplyFrameDefaults=function(e){var t={};function r(n,i){return Ca.coerce(e,t,Fit,n,i)}return r("group"),r("name"),r("traces"),r("baseframe"),r("data"),r("layout"),t};ha.supplyTraceDefaults=function(e,t,r,n,i){var a=n.colorway||Ine.defaults,o=a[r%a.length],s;function l(k,A){return Ca.coerce(e,t,ha.attributes,k,A)}var u=l("visible");l("type"),l("name",n._traceWord+" "+i),l("uirevision",n.uirevision);var c=ha.getModule(t);if(t._module=c,c){var f=c.basePlotModule,h=f.attr,d=f.attributes;if(h&&d){var v=n._subplots,x="";if(Array.isArray(h))for(s=0;s<h.length;s++){var b=h[s],p=Ca.coerce(e,t,d,b);v[b]&&Ca.pushUnique(v[b],p),x+=p}else x=Ca.coerce(e,t,d,h);v[f.name]&&Ca.pushUnique(v[f.name],x)}}if(u&&(l("customdata"),l("ids"),l("meta"),bl.traceIs(t,"showLegend")?(Ca.coerce(e,t,c.attributes.showlegend?c.attributes:ha.attributes,"showlegend"),l("legend"),l("legendwidth"),l("legendgroup"),l("legendgrouptitle.text"),l("legendrank"),t._dfltShowLegend=!0):t._dfltShowLegend=!1,c&&c.supplyDefaults(e,t,o,n),bl.traceIs(t,"noOpacity")||l("opacity"),bl.traceIs(t,"notLegendIsolatable")&&(t.visible=!!t.visible),bl.traceIs(t,"noHover")||(t.hovertemplate||Ca.coerceHoverinfo(e,t,n),t.type!=="parcats"&&bl.getComponentMethod("fx","supplyDefaults")(e,t,o,n)),c&&c.selectPoints)){var E=l("selectedpoints");Ca.isTypedArray(E)&&(t.selectedpoints=Array.from(E))}return t};ha.supplyLayoutGlobalDefaults=function(e,t,r){function n(f,h){return Ca.coerce(e,t,ha.layoutAttributes,f,h)}var i=e.template;Ca.isPlainObject(i)&&(t.template=i,t._template=i.layout,t._dataTemplate=i.data),n("autotypenumbers");var a=Ca.coerceFont(n,"font"),o=a.size;Ca.coerceFont(n,"title.font",a,{overrideDflt:{size:Math.round(o*1.4)}}),n("title.text",t._dfltTitle.plot),n("title.xref");var s=n("title.yref");n("title.pad.t"),n("title.pad.r"),n("title.pad.b"),n("title.pad.l");var l=n("title.automargin");n("title.x"),n("title.xanchor"),n("title.y"),n("title.yanchor"),n("title.subtitle.text",t._dfltTitle.subtitle),Ca.coerceFont(n,"title.subtitle.font",a,{overrideDflt:{size:Math.round(t.title.font.size*.7)}}),l&&(s==="paper"&&(t.title.y!==0&&(t.title.y=1),t.title.yanchor==="auto"&&(t.title.yanchor=t.title.y===0?"top":"bottom")),s==="container"&&(t.title.y==="auto"&&(t.title.y=1),t.title.yanchor==="auto"&&(t.title.yanchor=t.title.y<.5?"bottom":"top")));var u=n("uniformtext.mode");u&&n("uniformtext.minsize"),n("autosize",!(e.width&&e.height)),n("width"),n("height"),n("minreducedwidth"),n("minreducedheight"),n("margin.l"),n("margin.r"),n("margin.t"),n("margin.b"),n("margin.pad"),n("margin.autoexpand"),e.width&&e.height&&ha.sanitizeMargins(t),bl.getComponentMethod("grid","sizeDefaults")(e,t),n("paper_bgcolor"),n("separators",r.decimal+r.thousands),n("hidesources"),n("colorway"),n("datarevision");var c=n("uirevision");n("editrevision",c),n("selectionrevision",c),bl.getComponentMethod("modebar","supplyLayoutDefaults")(e,t),bl.getComponentMethod("shapes","supplyDrawNewShapeDefaults")(e,t,n),bl.getComponentMethod("selections","supplyDrawNewSelectionDefaults")(e,t,n),n("meta"),Ca.isPlainObject(e.transition)&&(n("transition.duration"),n("transition.easing"),n("transition.ordering")),bl.getComponentMethod("calendars","handleDefaults")(e,t,"calendar"),bl.getComponentMethod("fx","supplyLayoutGlobalDefaults")(e,t,n),Ca.coerce(e,t,zit,"scattermode")};function j6(e){return typeof e=="string"&&e.substr(e.length-2)==="px"&&parseFloat(e)}ha.plotAutoSize=function(t,r,n){var i=t._context||{},a=i.frameMargins,o,s,l=Ca.isPlotDiv(t);if(l&&t.emit("plotly_autosize"),i.fillFrame)o=window.innerWidth,s=window.innerHeight,document.body.style.overflow="hidden";else{var u=l?window.getComputedStyle(t):{};if(o=j6(u.width)||j6(u.maxWidth)||n.width,s=j6(u.height)||j6(u.maxHeight)||n.height,jS(a)&&a>0){var c=1-2*a;o=Math.round(c*o),s=Math.round(c*s)}}var f=ha.layoutAttributes.width.min,h=ha.layoutAttributes.height.min;o<f&&(o=f),s<h&&(s=h);var d=!r.width&&Math.abs(n.width-o)>1,v=!r.height&&Math.abs(n.height-s)>1;(v||d)&&(d&&(n.width=o),v&&(n.height=s)),t._initialAutoSize||(t._initialAutoSize={width:o,height:s}),ha.sanitizeMargins(n)};ha.supplyLayoutModuleDefaults=function(e,t,r,n){var i=bl.componentsRegistry,a=t._basePlotModules,o,s,l,u=bl.subplotsRegistry.cartesian;for(o in i)l=i[o],l.includeBasePlot&&l.includeBasePlot(e,t);a.length||a.push(u),t._has("cartesian")&&(bl.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t));for(var c in t._subplots)t._subplots[c].sort(Ca.subplotSort);for(s=0;s<a.length;s++)l=a[s],l.supplyLayoutDefaults&&l.supplyLayoutDefaults(e,t,r);var f=t._modules;for(s=0;s<f.length;s++)l=f[s],l.supplyLayoutDefaults&&l.supplyLayoutDefaults(e,t,r);var h=t._transformModules;for(s=0;s<h.length;s++)l=h[s],l.supplyLayoutDefaults&&l.supplyLayoutDefaults(e,t,r,n);for(o in i)l=i[o],l.supplyLayoutDefaults&&l.supplyLayoutDefaults(e,t,r)};ha.purge=function(e){var t=e._fullLayout||{};t._glcontainer!==void 0&&(t._glcontainer.selectAll(".gl-canvas").remove(),t._glcontainer.remove(),t._glcanvas=null),t._modeBar&&t._modeBar.destroy(),e._transitionData&&(e._transitionData._interruptCallbacks&&(e._transitionData._interruptCallbacks.length=0),e._transitionData._animationRaf&&window.cancelAnimationFrame(e._transitionData._animationRaf)),Ca.clearThrottle(),Ca.clearResponsive(e),delete e.data,delete e.layout,delete e._fullData,delete e._fullLayout,delete e.calcdata,delete e.empty,delete e.fid,delete e.undoqueue,delete e.undonum,delete e.autoplay,delete e.changed,delete e._promises,delete e._redrawTimer,delete e._hmlumcount,delete e._hmpixcount,delete e._transitionData,delete e._transitioning,delete e._initialAutoSize,delete e._transitioningWithDuration,delete e._dragging,delete e._dragged,delete e._dragdata,delete e._hoverdata,delete e._snapshotInProgress,delete e._editing,delete e._mouseDownTime,delete e._legendMouseDownTime,e.removeAllListeners&&e.removeAllListeners()};ha.style=function(e){var t=e._fullLayout._visibleModules,r=[],n;for(n=0;n<t.length;n++){var i=t[n];i.style&&Ca.pushUnique(r,i.style)}for(n=0;n<r.length;n++)r[n](e)};ha.sanitizeMargins=function(e){if(!(!e||!e.margin)){var t=e.width,r=e.height,n=e.margin,i=t-(n.l+n.r),a=r-(n.t+n.b),o;i<0&&(o=(t-1)/(n.l+n.r),n.l=Math.floor(o*n.l),n.r=Math.floor(o*n.r)),a<0&&(o=(r-1)/(n.t+n.b),n.t=Math.floor(o*n.t),n.b=Math.floor(o*n.b))}};ha.clearAutoMarginIds=function(e){e._fullLayout._pushmarginIds={}};ha.allowAutoMargin=function(e,t){e._fullLayout._pushmarginIds[t]=1};function Rne(e){var t=e.margin;if(!e._size){var r=e._size={l:Math.round(t.l),r:Math.round(t.r),t:Math.round(t.t),b:Math.round(t.b),p:Math.round(t.pad)};r.w=Math.round(e.width)-r.l-r.r,r.h=Math.round(e.height)-r.t-r.b}e._pushmargin||(e._pushmargin={}),e._pushmarginIds||(e._pushmarginIds={}),e._reservedMargin||(e._reservedMargin={})}var Dne=2,zne=2;ha.autoMargin=function(e,t,r){var n=e._fullLayout,i=n.width,a=n.height,o=n.margin,s=n.minreducedwidth,l=n.minreducedheight,u=Ca.constrain(i-o.l-o.r,Dne,s),c=Ca.constrain(a-o.t-o.b,zne,l),f=Math.max(0,i-u),h=Math.max(0,a-c),d=n._pushmargin,v=n._pushmarginIds;if(o.autoexpand!==!1){if(!r)delete d[t],delete v[t];else{var x=r.pad;if(x===void 0&&(x=Math.min(12,o.l,o.r,o.t,o.b)),f){var b=(r.l+r.r)/f;b>1&&(r.l/=b,r.r/=b)}if(h){var p=(r.t+r.b)/h;p>1&&(r.t/=p,r.b/=p)}var E=r.xl!==void 0?r.xl:r.x,k=r.xr!==void 0?r.xr:r.x,A=r.yt!==void 0?r.yt:r.y,L=r.yb!==void 0?r.yb:r.y;d[t]={l:{val:E,size:r.l+x},r:{val:k,size:r.r+x},b:{val:L,size:r.b+x},t:{val:A,size:r.t+x}},v[t]=1}if(!n._replotting)return ha.doAutoMargin(e)}};function Wit(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=Ap.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}ha.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),Rne(t);var i=t._size,a=t.margin,o={t:0,b:0,l:0,r:0},s=Ca.extendFlat({},i),l=a.l,u=a.r,c=a.t,f=a.b,h=t._pushmargin,d=t._pushmarginIds,v=t.minreducedwidth,x=t.minreducedheight;if(a.autoexpand!==!1){for(var b in h)d[b]||delete h[b];var p=e._fullLayout._reservedMargin;for(var E in p)for(var k in p[E]){var A=p[E][k];o[k]=Math.max(o[k],A)}h.base={l:{val:0,size:l},r:{val:1,size:u},t:{val:1,size:c},b:{val:0,size:f}};for(var L in o){var _=0;for(var C in h)C!=="base"&&jS(h[C][L].size)&&(_=h[C][L].size>_?h[C][L].size:_);var M=Math.max(0,a[L]-_);o[L]=Math.max(0,o[L]-M)}for(var g in h){var P=h[g].l||{},T=h[g].b||{},F=P.val,q=P.size,V=T.val,H=T.size,X=r-o.r-o.l,G=n-o.t-o.b;for(var N in h){if(jS(q)&&h[N].r){var W=h[N].r.val,re=h[N].r.size;if(W>F){var ae=(q*W+(re-X)*F)/(W-F),_e=(re*(1-F)+(q-X)*(1-W))/(W-F);ae+_e>l+u&&(l=ae,u=_e)}}if(jS(H)&&h[N].t){var Me=h[N].t.val,ke=h[N].t.size;if(Me>V){var ge=(H*Me+(ke-G)*V)/(Me-V),ie=(ke*(1-V)+(H-G)*(1-Me))/(Me-V);ge+ie>f+c&&(f=ge,c=ie)}}}}}var Te=Ca.constrain(r-a.l-a.r,Dne,v),Ee=Ca.constrain(n-a.t-a.b,zne,x),Ae=Math.max(0,r-Te),ze=Math.max(0,n-Ee);if(Ae){var Ce=(l+u)/Ae;Ce>1&&(l/=Ce,u/=Ce)}if(ze){var me=(f+c)/ze;me>1&&(f/=me,c/=me)}if(i.l=Math.round(l)+o.l,i.r=Math.round(u)+o.r,i.t=Math.round(c)+o.t,i.b=Math.round(f)+o.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!t._replotting&&(ha.didMarginChange(s,i)||Wit(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Re=3*(1+Object.keys(d).length);if(t._redrawFromAutoMarginCount<Re)return bl.call("_doPlot",e);t._size=s,Ca.warn("Too many auto-margin redraws.")}Zit(e)};function Zit(e){var t=Ap.list(e,"",!0);["_adjustTickLabelsOverflow","_hideCounterAxisInsideTickLabels"].forEach(function(r){for(var n=0;n<t.length;n++){var i=t[n][r];i&&i()}})}var Ene=["l","r","t","b","p","w","h"];ha.didMarginChange=function(e,t){for(var r=0;r<Ene.length;r++){var n=Ene[r],i=e[n],a=t[n];if(!jS(i)||Math.abs(a-i)>1)return!0}return!1};ha.graphJson=function(e,t,r,n,i,a){(i&&t&&!e._fullData||i&&!t&&!e._fullLayout)&&ha.supplyDefaults(e);var o=i?e._fullData:e.data,s=i?e._fullLayout:e.layout,l=(e._transitionData||{})._frames;function u(h,d){if(typeof h=="function")return d?"_function_":null;if(Ca.isPlainObject(h)){var v={},x;return Object.keys(h).sort().forEach(function(k){if(["_","["].indexOf(k.charAt(0))===-1){if(typeof h[k]=="function"){d&&(v[k]="_function");return}if(r==="keepdata"){if(k.substr(k.length-3)==="src")return}else if(r==="keepstream"){if(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0&&!Ca.isPlainObject(h.stream))return}else if(r!=="keepall"&&(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0))return;v[k]=u(h[k],d)}}),v}var b=Array.isArray(h),p=Ca.isTypedArray(h);if((b||p)&&h.dtype&&h.shape){var E=h.bdata;return u({dtype:h.dtype,shape:h.shape,bdata:Ca.isArrayBuffer(E)?Iit.encode(E):E},d)}return b?h.map(function(k){return u(k,d)}):p?Ca.simpleMap(h,Ca.identity):Ca.isJSDate(h)?Ca.ms2DateTimeLocal(+h):h}var c={data:(o||[]).map(function(h){var d=u(h);return t&&delete d.fit,d})};if(!t&&(c.layout=u(s),i)){var f=s._size;c.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return l&&(c.frames=u(l)),a&&(c.config=u(e._context,!0)),n==="object"?c:JSON.stringify(c)};ha.modifyFrames=function(e,t){var r,n,i,a=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r<t.length;r++)switch(n=t[r],n.type){case"replace":i=n.value;var s=(a[n.index]||{}).name,l=i.name;a[n.index]=o[l]=i,l!==s&&(delete o[s],o[l]=i);break;case"insert":i=n.value,o[i.name]=i,a.splice(n.index,0,i);break;case"delete":i=a[n.index],delete o[i.name],a.splice(n.index,1);break}return Promise.resolve()};ha.computeFrame=function(e,t){var r=e._transitionData._frameHash,n,i,a,o;if(!t)throw new Error("computeFrame must be given a string frame name");var s=r[t.toString()];if(!s)return!1;for(var l=[s],u=[s.name];s.baseframe&&(s=r[s.baseframe.toString()])&&u.indexOf(s.name)===-1;)l.push(s),u.push(s.name);for(var c={};s=l.pop();)if(s.layout&&(c.layout=ha.extendLayout(c.layout,s.layout)),s.data){if(c.data||(c.data=[]),i=s.traces,!i)for(i=[],n=0;n<s.data.length;n++)i[n]=n;for(c.traces||(c.traces=[]),n=0;n<s.data.length;n++)a=i[n],a!=null&&(o=c.traces.indexOf(a),o===-1&&(o=c.data.length,c.traces[o]=a),c.data[o]=ha.extendTrace(c.data[o],s.data[n]))}return c};ha.recomputeFrameHash=function(e){for(var t=e._transitionData._frameHash={},r=e._transitionData._frames,n=0;n<r.length;n++){var i=r[n];i&&i.name&&(t[i.name]=i)}};ha.extendObjectWithContainers=function(e,t,r){var n,i,a,o,s,l,u,c,f=Ca.extendDeepNoArrays({},t||{}),h=Ca.expandObjectPaths(f),d={};if(r&&r.length)for(a=0;a<r.length;a++)n=Ca.nestedProperty(h,r[a]),i=n.get(),i===void 0?Ca.nestedProperty(d,r[a]).set(null):(n.set(null),Ca.nestedProperty(d,r[a]).set(i));if(e=Ca.extendDeepNoArrays(e||{},h),r&&r.length){for(a=0;a<r.length;a++)if(s=Ca.nestedProperty(d,r[a]),u=s.get(),!!u){for(l=Ca.nestedProperty(e,r[a]),c=l.get(),Array.isArray(c)||(c=[],l.set(c)),o=0;o<u.length;o++){var v=u[o];v===null?c[o]=null:c[o]=ha.extendObjectWithContainers(c[o],v)}l.set(c)}}return e};ha.dataArrayContainers=["transforms","dimensions"];ha.layoutArrayContainers=bl.layoutArrayContainers;ha.extendTrace=function(e,t){return ha.extendObjectWithContainers(e,t,ha.dataArrayContainers)};ha.extendLayout=function(e,t){return ha.extendObjectWithContainers(e,t,ha.layoutArrayContainers)};ha.transition=function(e,t,r,n,i,a){var o={redraw:i.redraw},s={},l=[];return o.prepareFn=function(){for(var u=Array.isArray(t)?t.length:0,c=n.slice(0,u),f=0;f<c.length;f++){var h=c[f],d=e._fullData[h],v=d._module;if(v){if(v.animatable){var x=v.basePlotModule.name;s[x]||(s[x]=[]),s[x].push(h)}e.data[c[f]]=ha.extendTrace(e.data[c[f]],t[f])}}var b=Ca.expandObjectPaths(Ca.extendDeepNoArrays({},r)),p=/^[xy]axis[0-9]*$/;for(var E in b)p.test(E)&&delete b[E].range;ha.extendLayout(e.layout,b),delete e.calcdata,ha.supplyDefaults(e),ha.doCalcdata(e);var k=Ca.expandObjectPaths(r);if(k){var A=e._fullLayout._plots;for(var L in A){var _=A[L],C=_.xaxis,M=_.yaxis,g=C.range.slice(),P=M.range.slice(),T=null,F=null,q=null,V=null;Array.isArray(k[C._name+".range"])?T=k[C._name+".range"].slice():Array.isArray((k[C._name]||{}).range)&&(T=k[C._name].range.slice()),Array.isArray(k[M._name+".range"])?F=k[M._name+".range"].slice():Array.isArray((k[M._name]||{}).range)&&(F=k[M._name].range.slice()),g&&T&&(C.r2l(g[0])!==C.r2l(T[0])||C.r2l(g[1])!==C.r2l(T[1]))&&(q={xr0:g,xr1:T}),P&&F&&(M.r2l(P[0])!==M.r2l(F[0])||M.r2l(P[1])!==M.r2l(F[1]))&&(V={yr0:P,yr1:F}),(q||V)&&l.push(Ca.extendFlat({plotinfo:_},q,V))}}return Promise.resolve()},o.runFn=function(u){var c,f=e._fullLayout._basePlotModules,h=l.length,d;if(r)for(d=0;d<f.length;d++)f[d].transitionAxes&&f[d].transitionAxes(e,l,a,u);h?(c=Ca.extendFlat({},a),c.duration=0,delete s.cartesian):c=a;for(var v in s){var x=s[v],b=e._fullData[x[0]]._module;b.basePlotModule.plot(e,x,c,u)}},Fne(e,a,o)};ha.transitionFromReact=function(e,t,r,n){var i=e._fullLayout,a=i.transition,o={},s=[];return o.prepareFn=function(){var l=i._plots;o.redraw=!1,t.anim==="some"&&(o.redraw=!0),r.anim==="some"&&(o.redraw=!0);for(var u in l){var c=l[u],f=c.xaxis,h=c.yaxis,d=n[f._name].range.slice(),v=n[h._name].range.slice(),x=f.range.slice(),b=h.range.slice();f.setScale(),h.setScale();var p=null,E=null;(f.r2l(d[0])!==f.r2l(x[0])||f.r2l(d[1])!==f.r2l(x[1]))&&(p={xr0:d,xr1:x}),(h.r2l(v[0])!==h.r2l(b[0])||h.r2l(v[1])!==h.r2l(b[1]))&&(E={yr0:v,yr1:b}),(p||E)&&s.push(Ca.extendFlat({plotinfo:c},p,E))}return Promise.resolve()},o.runFn=function(l){for(var u=e._fullData,c=e._fullLayout,f=c._basePlotModules,h,d,v,x=[],b=0;b<u.length;b++)x.push(b);function p(){if(e._fullLayout)for(var k=0;k<f.length;k++)f[k].transitionAxes&&f[k].transitionAxes(e,s,h,l)}function E(){if(e._fullLayout)for(var k=0;k<f.length;k++)f[k].plot(e,v,d,l)}s.length&&t.anim?a.ordering==="traces first"?(h=Ca.extendFlat({},a,{duration:0}),v=x,d=a,setTimeout(p,a.duration),E()):(h=a,v=null,d=Ca.extendFlat({},a,{duration:0}),setTimeout(E,h.duration),p()):s.length?(h=a,p()):t.anim&&(v=x,d=a,E())},Fne(e,a,o)};function Fne(e,t,r){var n=!1;function i(f){var h=Promise.resolve();if(!f)return h;for(;f.length;)h=h.then(f.shift());return h}function a(f){if(f)for(;f.length;)f.shift()}function o(){return e.emit("plotly_transitioning",[]),new Promise(function(f){e._transitioning=!0,t.duration>0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return bl.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var h=0,d=0;function v(){return h++,function(){d++,!n&&d===h&&s(f)}}r.runFn(v),setTimeout(v())})}function s(f){if(e._transitionData)return a(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return bl.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(f)}function l(){if(e._transitionData)return e._transitioning=!1,i(e._transitionData._interruptCallbacks)}var u=[ha.previousPromises,l,r.prepareFn,ha.rehover,ha.reselect,o],c=Ca.syncOrAsync(u,e);return(!c||!c.then)&&(c=Promise.resolve()),c.then(function(){return e})}ha.doCalcdata=function(e,t){var r=Ap.list(e),n=e._fullData,i=e._fullLayout,a,o,s,l,u=new Array(n.length),c=(e.calcdata||[]).slice();for(e.calcdata=u,i._numBoxes=0,i._numViolins=0,i._violinScaleGroupStats={},e._hmpixcount=0,e._hmlumcount=0,i._piecolormap={},i._sunburstcolormap={},i._treemapcolormap={},i._iciclecolormap={},i._funnelareacolormap={},s=0;s<n.length;s++)if(Array.isArray(t)&&t.indexOf(s)===-1){u[s]=c[s];continue}for(s=0;s<n.length;s++)a=n[s],a._arrayAttrs=Pne.findArrayAttributes(a),a._extremes={};var f=i._subplots.polar||[];for(s=0;s<f.length;s++)r.push(i[f[s]].radialaxis,i[f[s]].angularaxis);for(var h in i._colorAxes){var d=i[h];d.cauto!==!1&&(delete d.cmin,delete d.cmax)}var v=!1;function x(E){if(a=n[E],o=a._module,a.visible===!0&&a.transforms){if(o&&o.calc){var k=o.calc(e,a);k[0]&&k[0].t&&k[0].t._scene&&delete k[0].t._scene.dirty}for(l=0;l<a.transforms.length;l++){var A=a.transforms[l];o=transformsRegistry[A.type],o&&o.calcTransform&&(a._hasCalcTransform=!0,v=!0,o.calcTransform(e,a,A))}}}function b(E,k){if(a=n[E],o=a._module,!!o.isContainer===k){var A=[];if(a.visible===!0&&a._length!==0){delete a._indexToPoints;var L=a.transforms||[];for(l=L.length-1;l>=0;l--)if(L[l].enabled){a._indexToPoints=L[l]._indexToPoints;break}o&&o.calc&&(A=o.calc(e,a))}(!Array.isArray(A)||!A[0])&&(A=[{x:Ane,y:Ane}]),A[0].t||(A[0].t={}),A[0].trace=a,u[E]=A}}for(kne(r,n,i),s=0;s<n.length;s++)b(s,!0);for(s=0;s<n.length;s++)x(s);for(v&&kne(r,n,i),s=0;s<n.length;s++)b(s,!0);for(s=0;s<n.length;s++)b(s,!1);Cne(e);var p=Yit(r,e);if(p.length){for(i._numBoxes=0,i._numViolins=0,s=0;s<p.length;s++)b(p[s],!0);for(s=0;s<p.length;s++)b(p[s],!1);Cne(e)}bl.getComponentMethod("fx","calc")(e),bl.getComponentMethod("errorbars","calc")(e)};var Xit=/(total|sum|min|max|mean|geometric mean|median) (ascending|descending)/;function Yit(e,t){var r=[],n,i,a,o,s;function l(N,W,re){var ae=W._id.charAt(0);if(N==="histogram2dcontour"){var _e=W._counterAxes[0],Me=Ap.getFromId(t,_e),ke=ae==="x"||_e==="x"&&Me.type==="category",ge=ae==="y"||_e==="y"&&Me.type==="category";return function(ie,Te){return ie===0||Te===0||ke&&ie===re[Te].length-1||ge&&Te===re.length-1?-1:(ae==="y"?Te:ie)-1}}else return function(ie,Te){return ae==="y"?Te:ie}}var u={min:function(N){return Ca.aggNums(Math.min,null,N)},max:function(N){return Ca.aggNums(Math.max,null,N)},sum:function(N){return Ca.aggNums(function(W,re){return W+re},null,N)},total:function(N){return Ca.aggNums(function(W,re){return W+re},null,N)},mean:function(N){return Ca.mean(N)},"geometric mean":function(N){return Ca.geometricMean(N)},median:function(N){return Ca.median(N)}};function c(N,W){return N[1]-W[1]}function f(N,W){return W[1]-N[1]}for(n=0;n<e.length;n++){var h=e[n];if(h.type==="category"){var d=h.categoryorder.match(Xit);if(d){var v=d[1],x=d[2],b=h._id.charAt(0),p=b==="x",E=[];for(i=0;i<h._categories.length;i++)E.push([h._categories[i],[]]);for(i=0;i<h._traceIndices.length;i++){var k=h._traceIndices[i],A=t._fullData[k];if(A.visible===!0){var L=A.type;bl.traceIs(A,"histogram")&&(delete A._xautoBinFinished,delete A._yautoBinFinished);var _=L==="splom",C=L==="scattergl",M=t.calcdata[k];for(a=0;a<M.length;a++){var g=M[a],P,T;if(_){var F=A._axesDim[h._id];if(!p){var q=A._diag[F][0];q&&(h=t._fullLayout[Ap.id2name(q)])}var V=g.trace.dimensions[F].values;for(o=0;o<V.length;o++)for(P=h._categoriesMap[V[o]],s=0;s<g.trace.dimensions.length;s++)if(s!==F){var H=g.trace.dimensions[s];E[P][1].push(H.values[o])}}else if(C){for(o=0;o<g.t.x.length;o++)p?(P=g.t.x[o],T=g.t.y[o]):(P=g.t.y[o],T=g.t.x[o]),E[P][1].push(T);g.t&&g.t._scene&&delete g.t._scene.dirty}else if(g.hasOwnProperty("z")){T=g.z;var X=l(A.type,h,T);for(o=0;o<T.length;o++)for(s=0;s<T[o].length;s++)P=X(s,o),P+1&&E[P][1].push(T[o][s])}else for(P=g.p,P===void 0&&(P=g[b]),T=g.s,T===void 0&&(T=g.v),T===void 0&&(T=p?g.y:g.x),Array.isArray(T)||(T===void 0?T=[]:T=[T]),o=0;o<T.length;o++)E[P][1].push(T[o])}}}h._categoriesValue=E;var G=[];for(i=0;i<E.length;i++)G.push([E[i][0],u[v](E[i][1])]);G.sort(x==="descending"?f:c),h._categoriesAggregatedValue=G,h._initialCategories=G.map(function(N){return N[0]}),r=r.concat(h.sortByInitialCategories())}}}return r}function kne(e,t,r){var n={};function i(l){l.clearCalc(),l.type==="multicategory"&&l.setupMultiCategory(t),n[l._id]=1}Ca.simpleMap(e,i);for(var a=r._axisMatchGroups||[],o=0;o<a.length;o++)for(var s in a[o])n[s]||i(r[Ap.id2name(s)])}function Cne(e){var t=e._fullLayout,r=t._visibleModules,n={},i,a,o;for(a=0;a<r.length;a++){var s=r[a],l=s.crossTraceCalc;if(l){var u=s.basePlotModule.name;n[u]?Ca.pushUnique(n[u],l):n[u]=[l]}}for(o in n){var c=n[o],f=t._subplots[o];if(Array.isArray(f))for(i=0;i<f.length;i++){var h=f[i],d=o==="cartesian"?t._plots[h]:t[h];for(a=0;a<c.length;a++)c[a](e,d,h)}else for(a=0;a<c.length;a++)c[a](e)}}ha.rehover=function(e){e._fullLayout._rehover&&e._fullLayout._rehover()};ha.redrag=function(e){e._fullLayout._redrag&&e._fullLayout._redrag()};ha.reselect=function(e){var t=e._fullLayout,r=(e.layout||{}).selections,n=t._previousSelections;t._previousSelections=r;var i=t._reselect||JSON.stringify(r)!==JSON.stringify(n);bl.getComponentMethod("selections","reselect")(e,i)};ha.generalUpdatePerTraceModule=function(e,t,r,n){var i=t.traceHash,a={},o;for(o=0;o<r.length;o++){var s=r[o],l=s[0].trace;l.visible&&(a[l.type]=a[l.type]||[],a[l.type].push(s))}for(var u in i)if(!a[u]){var c=i[u][0],f=c[0].trace;f.visible=!1,a[u]=[c]}for(var h in a){var d=a[h],v=d[0][0].trace._module;v.plot(e,t,Ca.filterVisible(d),n)}t.traceHash=a};ha.plotBasePlot=function(e,t,r,n,i){var a=bl.getModule(e),o=qit(t.calcdata,a)[0];a.plot(t,o,n,i)};ha.cleanBasePlot=function(e,t,r,n,i){var a=i._has&&i._has(e),o=r._has&&r._has(e);a&&!o&&i["_"+e+"layer"].selectAll("g.trace").remove()}});var Zp=ye(yb=>{"use strict";yb.xmlns="http://www.w3.org/2000/xmlns/";yb.svg="http://www.w3.org/2000/svg";yb.xlink="http://www.w3.org/1999/xlink";yb.svgAttrs={xmlns:yb.svg,"xmlns:xlink":yb.xlink}});var Nh=ye((jtr,One)=>{"use strict";One.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}});var Pl=ye(b0=>{"use strict";var vh=xa(),Ty=Mr(),Kit=Ty.strTranslate,uO=Zp(),Jit=Nh().LINE_SPACING,$it=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;b0.convertToTspans=function(e,t,r){var n=e.text(),i=!e.attr("data-notex")&&t&&t._context.typesetMath&&typeof MathJax!="undefined"&&n.match($it),a=vh.select(e.node().parentNode);if(a.empty())return;var o=e.attr("class")?e.attr("class").split(" ")[0]:"text";o+="-math",a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove(),e.style("display",null).attr({"data-unformatted":n,"data-math":"N"});function s(){a.empty()||(o=e.attr("class")+"-math",a.select("svg."+o).remove()),e.text("").style("white-space","pre");var l=fnt(e.node(),n);l&&e.style("pointer-events","all"),b0.positionText(e),r&&r.call(e)}return i?(t&&t._promises||[]).push(new Promise(function(l){e.style("display","none");var u=parseInt(e.node().style.fontSize,10),c={fontSize:u};rnt(i[2],c,function(f,h,d){a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove();var v=f&&f.select("svg");if(!v||!v.node()){s(),l();return}var x=a.append("g").classed(o+"-group",!0).attr({"pointer-events":"none","data-unformatted":n,"data-math":"Y"});x.node().appendChild(v.node()),h&&h.node()&&v.node().insertBefore(h.node().cloneNode(!0),v.node().firstChild);var b=d.width,p=d.height;v.attr({class:o,height:p,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var E=e.node().style.fill||"black",k=v.select("g");k.attr({fill:E,stroke:E});var A=k.node().getBoundingClientRect(),L=A.width,_=A.height;(L>b||_>p)&&(v.style("overflow","hidden"),A=v.node().getBoundingClientRect(),L=A.width,_=A.height);var C=+e.attr("x"),M=+e.attr("y"),g=u||e.node().getBoundingClientRect().height,P=-g/4;if(o[0]==="y")x.attr({transform:"rotate("+[-90,C,M]+")"+Kit(-L/2,P-_/2)});else if(o[0]==="l")M=P-_/2;else if(o[0]==="a"&&o.indexOf("atitle")!==0)C=0,M=P;else{var T=e.attr("text-anchor");C=C-L*(T==="middle"?.5:T==="end"?1:0),M=M+P-_/2}v.attr({x:C,y:M}),r&&r.call(e,x),l(x)})})):s(),e};var Qit=/(<|<|<)/g,ent=/(>|>|>)/g;function tnt(e){return e.replace(Qit,"\\lt ").replace(ent,"\\gt ")}var Bne=[["$","$"],["\\(","\\)"]];function rnt(e,t,r){var n=parseInt((MathJax.version||"").split(".")[0]);if(n!==2&&n!==3){Ty.warn("No MathJax version:",MathJax.version);return}var i,a,o,s,l=function(){return a=Ty.extendDeepAll({},MathJax.Hub.config),o=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:Bne},displayAlign:"left"})},u=function(){a=Ty.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=Bne},c=function(){if(i=MathJax.Hub.config.menuSettings.renderer,i!=="SVG")return MathJax.Hub.setRenderer("SVG")},f=function(){i=MathJax.config.startup.output,i!=="svg"&&(MathJax.config.startup.output="svg")},h=function(){var E="math-output-"+Ty.randstr({},64);s=vh.select("body").append("div").attr({id:E}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(tnt(e));var k=s.node();return n===2?MathJax.Hub.Typeset(k):MathJax.typeset([k])},d=function(){var E=s.select(n===2?".MathJax_SVG":".MathJax"),k=!E.empty()&&s.select("svg").node();if(!k)Ty.log("There was an error in the tex syntax.",e),r();else{var A=k.getBoundingClientRect(),L;n===2?L=vh.select("body").select("#MathJax_SVG_glyphs"):L=E.select("defs"),r(E,L,A)}s.remove()},v=function(){if(i!=="SVG")return MathJax.Hub.setRenderer(i)},x=function(){i!=="svg"&&(MathJax.config.startup.output=i)},b=function(){return o!==void 0&&(MathJax.Hub.processSectionDelay=o),MathJax.Hub.Config(a)},p=function(){MathJax.config=a};n===2?MathJax.Hub.Queue(l,c,h,d,v,b):n===3&&(u(),f(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),d(),x(),p()}))}var Hne={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},int={sub:"0.3em",sup:"-0.6em"},nnt={sub:"-0.21em",sup:"0.42em"},Nne="\u200B",Une=["http:","https:","mailto:","",void 0,":"],Gne=b0.NEWLINES=/(\r\n?|\n)/g,fO=/(<[^<>]*>)/,hO=/<(\/?)([^ >]*)(\s+(.*))?>/i,ant=/<br(\s+.*)?>/i;b0.BR_TAG_ALL=/<br(\s+.*)?>/gi;var jne=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,Wne=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,Zne=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,ont=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function _b(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&Z6(n)}var snt=/(^|;)\s*color:/;b0.plainText=function(e,t){t=t||{};for(var r=t.len!==void 0&&t.len!==-1?t.len:1/0,n=t.allowedTags!==void 0?t.allowedTags:["br"],i="...",a=i.length,o=e.split(fO),s=[],l="",u=0,c=0;c<o.length;c++){var f=o[c],h=f.match(hO),d=h&&h[2].toLowerCase();if(d)n.indexOf(d)!==-1&&(s.push(f),l=d);else{var v=f.length;if(u+v<r)s.push(f),u+=v;else if(u<r){var x=r-u;l&&(l!=="br"||x<=a||v<=a)&&s.pop(),r>a?s.push(f.substr(0,x-a)+i):s.push(f.substr(0,x));break}l=""}}return s.join("")};var lnt={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},unt=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function Z6(e){return e.replace(unt,function(t,r){var n;return r.charAt(0)==="#"?n=cnt(r.charAt(1)==="x"?parseInt(r.substr(2),16):parseInt(r.substr(1),10)):n=lnt[r],n||t})}b0.convertEntities=Z6;function cnt(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r((e>>10)+55232,e%1024+56320)}}function fnt(e,t){t=t.replace(Gne," ");var r=!1,n=[],i,a=-1;function o(){a++;var _=document.createElementNS(uO.svg,"tspan");vh.select(_).attr({class:"line",dy:a*Jit+"em"}),e.appendChild(_),i=_;var C=n;if(n=[{node:_}],C.length>1)for(var M=1;M<C.length;M++)s(C[M])}function s(_){var C=_.type,M={},g;if(C==="a"){g="a";var P=_.target,T=_.href,F=_.popup;T&&(M={"xlink:xlink:show":P==="_blank"||P.charAt(0)!=="_"?"new":"replace",target:P,"xlink:xlink:href":T},F&&(M.onclick='window.open(this.href.baseVal,this.target.baseVal,"'+F+'");return false;'))}else g="tspan";_.style&&(M.style=_.style);var q=document.createElementNS(uO.svg,g);if(C==="sup"||C==="sub"){l(i,Nne),i.appendChild(q);var V=document.createElementNS(uO.svg,"tspan");l(V,Nne),vh.select(V).attr("dy",nnt[C]),M.dy=int[C],i.appendChild(q),i.appendChild(V)}else i.appendChild(q);vh.select(q).attr(M),i=_.node=q,n.push(_)}function l(_,C){_.appendChild(document.createTextNode(C))}function u(_){if(n.length===1){Ty.log("Ignoring unexpected end tag </"+_+">.",t);return}var C=n.pop();_!==C.type&&Ty.log("Start tag <"+C.type+"> doesnt match end tag <"+_+">. Pretending it did match.",t),i=n[n.length-1].node}var c=ant.test(t);c?o():(i=e,n=[{node:e}]);for(var f=t.split(fO),h=0;h<f.length;h++){var d=f[h],v=d.match(hO),x=v&&v[2].toLowerCase(),b=Hne[x];if(x==="br")o();else if(b===void 0)l(i,Z6(d));else if(v[1])u(x);else{var p=v[4],E={type:x},k=_b(p,jne);if(k?(k=k.replace(snt,"$1 fill:"),b&&(k+=";"+b)):b&&(k=b),k&&(E.style=k),x==="a"){r=!0;var A=_b(p,Wne);if(A){var L=Xne(A);L&&(E.href=L,E.target=_b(p,Zne)||"_blank",E.popup=_b(p,ont))}}s(E)}}return r}function Xne(e){var t=encodeURI(decodeURI(e)),r=document.createElement("a"),n=document.createElement("a");r.href=e,n.href=t;var i=r.protocol,a=n.protocol;return Une.indexOf(i)!==-1&&Une.indexOf(a)!==-1?t:""}b0.sanitizeHTML=function(t){t=t.replace(Gne," ");for(var r=document.createElement("p"),n=r,i=[],a=t.split(fO),o=0;o<a.length;o++){var s=a[o],l=s.match(hO),u=l&&l[2].toLowerCase();if(u in Hne)if(l[1])i.length&&(n=i.pop());else{var c=l[4],f=_b(c,jne),h=f?{style:f}:{};if(u==="a"){var d=_b(c,Wne);if(d){var v=Xne(d);if(v){h.href=v;var x=_b(c,Zne);x&&(h.target=x)}}}var b=document.createElement(u);n.appendChild(b),vh.select(b).attr(h),n=b,i.push(b)}else n.appendChild(document.createTextNode(Z6(s)))}var p="innerHTML";return r[p]};b0.lineCount=function(t){return t.selectAll("tspan.line").size()||1};b0.positionText=function(t,r,n){return t.each(function(){var i=vh.select(this);function a(l,u){return u===void 0?(u=i.attr(l),u===null&&(i.attr(l,0),u=0)):i.attr(l,u),u}var o=a("x",r),s=a("y",n);this.nodeName==="text"&&i.selectAll("tspan.line").attr({x:o,y:s})})};function Vne(e,t,r){var n=r.horizontalAlign,i=r.verticalAlign||"top",a=e.node().getBoundingClientRect(),o=t.node().getBoundingClientRect(),s,l,u;return i==="bottom"?l=function(){return a.bottom-s.height}:i==="middle"?l=function(){return a.top+(a.height-s.height)/2}:l=function(){return a.top},n==="right"?u=function(){return a.right-s.width}:n==="center"?u=function(){return a.left+(a.width-s.width)/2}:u=function(){return a.left},function(){s=this.node().getBoundingClientRect();var c=u()-o.left,f=l()-o.top,h=r.gd||{};if(r.gd){h._fullLayout._calcInverseTransform(h);var d=Ty.apply3DTransform(h._fullLayout._invTransform)(c,f);c=d[0],f=d[1]}return this.style({top:f+"px",left:c+"px","z-index":1e3}),this}}var cO="1px ";b0.makeTextShadow=function(e){var t=cO,r=cO,n=cO;return t+r+n+e+", -"+t+"-"+r+n+e+", "+t+"-"+r+n+e+", -"+t+r+n+e};b0.makeEditable=function(e,t){var r=t.gd,n=t.delegate,i=vh.dispatch("edit","input","cancel"),a=n||e;if(e.style({"pointer-events":n?"none":"all"}),e.size()!==1)throw new Error("boo");function o(){l(),e.style({opacity:0});var u=a.attr("class"),c;u?c="."+u.split(" ")[0]+"-math-group":c="[class*=-math-group]",c&&vh.select(e.node().parentNode).select(c).style({opacity:0})}function s(u){var c=u.node(),f=document.createRange();f.selectNodeContents(c);var h=window.getSelection();h.removeAllRanges(),h.addRange(f),c.focus()}function l(){var u=vh.select(r),c=u.select(".svg-container"),f=c.append("div"),h=e.node().style,d=parseFloat(h.fontSize||12),v=t.text;v===void 0&&(v=e.attr("data-unformatted")),f.classed("plugin-editable editable",!0).style({position:"absolute","font-family":h.fontFamily||"Arial","font-size":d,color:t.fill||h.fill||"black",opacity:1,"background-color":t.background||"transparent",outline:"#ffffff33 1px solid",margin:[-d/8+1,0,0,-1].join("px ")+"px",padding:"0","box-sizing":"border-box"}).attr({contenteditable:!0}).text(v).call(Vne(e,c,t)).on("blur",function(){r._editing=!1,e.text(this.textContent).style({opacity:1});var x=vh.select(this).attr("class"),b;x?b="."+x.split(" ")[0]+"-math-group":b="[class*=-math-group]",b&&vh.select(e.node().parentNode).select(b).style({opacity:0});var p=this.textContent;vh.select(this).transition().duration(0).remove(),vh.select(document).on("mouseup",null),i.edit.call(e,p)}).on("focus",function(){var x=this;r._editing=!0,vh.select(document).on("mouseup",function(){if(vh.event.target===x)return!1;document.activeElement===f.node()&&f.node().blur()})}).on("keyup",function(){vh.event.which===27?(r._editing=!1,e.style({opacity:1}),vh.select(this).style({opacity:0}).on("blur",function(){return!1}).transition().remove(),i.cancel.call(e,this.textContent)):(i.input.call(e,this.textContent),vh.select(this).call(Vne(e,c,t)))}).on("keydown",function(){vh.event.which===13&&this.blur()}).call(s)}return t.immediate?o():a.on("click",o),vh.rebind(e,i,"on")}});var Dv=ye((Ztr,rae)=>{"use strict";var hnt=xa(),Y6=id(),ZS=uo(),X6=Mr(),Yne=va(),dnt=sb().isValid;function vnt(e,t,r){var n=t?X6.nestedProperty(e,t).get()||{}:e,i=n[r||"color"];i&&i._inputArray&&(i=i._inputArray);var a=!1;if(X6.isArrayOrTypedArray(i)){for(var o=0;o<i.length;o++)if(ZS(i[o])){a=!0;break}}return X6.isPlainObject(n)&&(a||n.showscale===!0||ZS(n.cmin)&&ZS(n.cmax)||dnt(n.colorscale)||X6.isPlainObject(n.colorbar))}var Kne=["showscale","autocolorscale","colorscale","reversescale","colorbar"],WS=["min","max","mid","auto"];function $ne(e){var t=e._colorAx,r=t||e,n={},i,a,o;for(a=0;a<Kne.length;a++)o=Kne[a],n[o]=r[o];if(t)for(i="c",a=0;a<WS.length;a++)o=WS[a],n[o]=r["c"+o];else{var s;for(a=0;a<WS.length;a++){if(o=WS[a],s="c"+o,s in r){n[o]=r[s];continue}s="z"+o,s in r&&(n[o]=r[s])}i=s.charAt(0)}return n._sync=function(l,u){var c=WS.indexOf(l)!==-1?i+l:l;r[c]=r["_"+c]=u},n}function Qne(e){for(var t=$ne(e),r=t.min,n=t.max,i=t.reversescale?eae(t.colorscale):t.colorscale,a=i.length,o=new Array(a),s=new Array(a),l=0;l<a;l++){var u=i[l];o[l]=r+u[0]*(n-r),s[l]=u[1]}return{domain:o,range:s}}function eae(e){for(var t=e.length,r=new Array(t),n=t-1,i=0;n>=0;n--,i++){var a=e[n];r[i]=[1-a[0],a[1]]}return r}function tae(e,t){t=t||{};for(var r=e.domain,n=e.range,i=n.length,a=new Array(i),o=0;o<i;o++){var s=Y6(n[o]).toRgb();a[o]=[s.r,s.g,s.b,s.a]}var l=hnt.scale.linear().domain(r).range(a).clamp(!0),u=t.noNumericCheck,c=t.returnArray,f;return u&&c?f=l:u?f=function(h){return Jne(l(h))}:c?f=function(h){return ZS(h)?l(h):Y6(h).isValid()?h:Yne.defaultLine}:f=function(h){return ZS(h)?Jne(l(h)):Y6(h).isValid()?h:Yne.defaultLine},f.domain=l.domain,f.range=function(){return n},f}function pnt(e,t){return tae(Qne(e),t)}function Jne(e){var t={r:e[0],g:e[1],b:e[2],a:e[3]};return Y6(t).toRgbString()}rae.exports={hasColorscale:vnt,extractOpts:$ne,extractScale:Qne,flipScale:eae,makeColorScaleFunc:tae,makeColorScaleFuncFromTrace:pnt}});var Oc=ye((Xtr,aae)=>{"use strict";var iae=Rq(),gnt=iae.FORMAT_LINK,mnt=iae.DATE_FORMAT_LINK;function ynt(e,t){return{valType:"string",dflt:"",editType:"none",description:(t?dO:nae)("hover text",e)+["By default the values are formatted using "+(t?"generic number format":"`"+e+"axis.hoverformat`")+"."].join(" ")}}function dO(e,t){return["Sets the "+e+" formatting rule"+(t?"for `"+t+"` ":""),"using d3 formatting mini-languages","which are very similar to those in Python. For numbers, see: "+gnt+"."].join(" ")}function nae(e,t){return dO(e,t)+[" And for dates see: "+mnt+".","We add two items to d3's date formatter:","*%h* for half of the year as a decimal number as well as","*%{n}f* for fractional seconds","with n digits. For example, *2016-10-13 09:15:23.456* with tickformat","*%H~%M~%S.%2f* would display *09~15~23.46*"].join(" ")}aae.exports={axisHoverFormat:ynt,descriptionOnlyNumbers:dO,descriptionWithDates:nae}});var Cd=ye((Ytr,wae)=>{"use strict";var oae=Su(),w3=dh(),bae=Ed().dash,pO=no().extendFlat,sae=Vs().templatedArray,lae=Oc().descriptionWithDates,_nt=es().ONEDAY,pm=ad(),xnt=pm.HOUR_PATTERN,bnt=pm.WEEKDAY_PATTERN,vO={valType:"enumerated",values:["auto","linear","array"],editType:"ticks",impliedEdits:{tick0:void 0,dtick:void 0}},wnt=pO({},vO,{values:vO.values.slice().concat(["sync"])});function uae(e){return{valType:"integer",min:0,dflt:e?5:0,editType:"ticks"}}var cae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},fae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},hae={valType:"data_array",editType:"ticks"},dae={valType:"enumerated",values:["outside","inside",""],editType:"ticks"};function vae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=5),t}function pae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var gae={valType:"color",dflt:w3.defaultLine,editType:"ticks"},mae={valType:"color",dflt:w3.lightLine,editType:"ticks"};function yae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var _ae=pO({},bae,{editType:"ticks"}),xae={valType:"boolean",editType:"ticks"};wae.exports={visible:{valType:"boolean",editType:"plot"},color:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},title:{text:{valType:"string",editType:"ticks"},font:oae({editType:"ticks"}),standoff:{valType:"number",min:0,editType:"ticks"},editType:"ticks"},type:{valType:"enumerated",values:["-","linear","log","date","category","multicategory"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},autorange:{valType:"enumerated",values:[!0,!1,"reversed","min reversed","max reversed","min","max"],dflt:!0,editType:"axrange",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},autorangeoptions:{minallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmin:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmax:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},include:{valType:"any",arrayOk:!0,editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},editType:"plot"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"plot"},range:{valType:"info_array",items:[{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0},{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0}],editType:"axrange",impliedEdits:{autorange:!1},anim:!0},minallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},insiderange:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},scaleanchor:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString(),!1],editType:"plot"},scaleratio:{valType:"number",min:0,dflt:1,editType:"plot"},constrain:{valType:"enumerated",values:["range","domain"],editType:"plot"},constraintoward:{valType:"enumerated",values:["left","center","right","top","middle","bottom"],editType:"plot"},matches:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"calc"},rangebreaks:sae("rangebreak",{enabled:{valType:"boolean",dflt:!0,editType:"calc"},bounds:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},pattern:{valType:"enumerated",values:[bnt,xnt,""],editType:"calc"},values:{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"any",editType:"calc"}},dvalue:{valType:"number",editType:"calc",min:0,dflt:_nt},editType:"calc"}),tickmode:wnt,nticks:uae(),tick0:cae,dtick:fae,ticklabelstep:{valType:"integer",min:1,dflt:1,editType:"ticks"},tickvals:hae,ticktext:{valType:"data_array",editType:"ticks"},ticks:dae,tickson:{valType:"enumerated",values:["labels","boundaries"],dflt:"labels",editType:"ticks"},ticklabelmode:{valType:"enumerated",values:["instant","period"],dflt:"instant",editType:"ticks"},ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside",editType:"calc"},ticklabeloverflow:{valType:"enumerated",values:["allow","hide past div","hide past domain"],editType:"calc"},ticklabelshift:{valType:"integer",dflt:0,editType:"ticks"},ticklabelstandoff:{valType:"integer",dflt:0,editType:"ticks"},ticklabelindex:{valType:"integer",arrayOk:!0,editType:"calc"},mirror:{valType:"enumerated",values:[!0,"ticks",!1,"all","allticks"],dflt:!1,editType:"ticks+layoutstyle"},ticklen:vae(),tickwidth:pae(),tickcolor:gae,showticklabels:{valType:"boolean",dflt:!0,editType:"ticks"},labelalias:{valType:"any",dflt:!1,editType:"ticks"},automargin:{valType:"flaglist",flags:["height","width","left","right","top","bottom"],extras:[!0,!1],dflt:!1,editType:"ticks"},showspikes:{valType:"boolean",dflt:!1,editType:"modebar"},spikecolor:{valType:"color",dflt:null,editType:"none"},spikethickness:{valType:"number",dflt:3,editType:"none"},spikedash:pO({},bae,{dflt:"dash",editType:"none"}),spikemode:{valType:"flaglist",flags:["toaxis","across","marker"],dflt:"toaxis",editType:"none"},spikesnap:{valType:"enumerated",values:["data","cursor","hovered data"],dflt:"hovered data",editType:"none"},tickfont:oae({editType:"ticks"}),tickangle:{valType:"angle",dflt:"auto",editType:"ticks"},autotickangles:{valType:"info_array",freeLength:!0,items:{valType:"angle"},dflt:[0,30,90],editType:"ticks"},tickprefix:{valType:"string",dflt:"",editType:"ticks"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},ticksuffix:{valType:"string",dflt:"",editType:"ticks"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"ticks"},minexponent:{valType:"number",dflt:3,min:0,editType:"ticks"},separatethousands:{valType:"boolean",dflt:!1,editType:"ticks"},tickformat:{valType:"string",dflt:"",editType:"ticks",description:lae("tick label")},tickformatstops:sae("tickformatstop",{enabled:{valType:"boolean",dflt:!0,editType:"ticks"},dtickrange:{valType:"info_array",items:[{valType:"any",editType:"ticks"},{valType:"any",editType:"ticks"}],editType:"ticks"},value:{valType:"string",dflt:"",editType:"ticks"},editType:"ticks"}),hoverformat:{valType:"string",dflt:"",editType:"none",description:lae("hover text")},showline:{valType:"boolean",dflt:!1,editType:"ticks+layoutstyle"},linecolor:{valType:"color",dflt:w3.defaultLine,editType:"layoutstyle"},linewidth:{valType:"number",min:0,dflt:1,editType:"ticks+layoutstyle"},showgrid:xae,gridcolor:mae,gridwidth:yae(),griddash:_ae,zeroline:{valType:"boolean",editType:"ticks"},zerolinecolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},zerolinewidth:{valType:"number",dflt:1,editType:"ticks"},showdividers:{valType:"boolean",dflt:!0,editType:"ticks"},dividercolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},dividerwidth:{valType:"number",dflt:1,editType:"ticks"},anchor:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},side:{valType:"enumerated",values:["top","bottom","left","right"],editType:"plot"},overlaying:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},minor:{tickmode:vO,nticks:uae("minor"),tick0:cae,dtick:fae,tickvals:hae,ticks:dae,ticklen:vae("minor"),tickwidth:pae("minor"),tickcolor:gae,gridcolor:mae,gridwidth:yae("minor"),griddash:_ae,showgrid:xae,editType:"ticks"},layer:{valType:"enumerated",values:["above traces","below traces"],dflt:"above traces",editType:"plot"},domain:{valType:"info_array",items:[{valType:"number",min:0,max:1,editType:"plot"},{valType:"number",min:0,max:1,editType:"plot"}],dflt:[0,1],editType:"plot"},position:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},autoshift:{valType:"boolean",dflt:!1,editType:"plot"},shift:{valType:"number",editType:"plot"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array","total ascending","total descending","min ascending","min descending","max ascending","max descending","sum ascending","sum descending","mean ascending","mean descending","geometric mean ascending","geometric mean descending","median ascending","median descending"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var K6=ye((Ktr,Sae)=>{"use strict";var Ac=Cd(),Tae=Su(),Aae=no().extendFlat,Tnt=Bu().overrideAll;Sae.exports=Tnt({orientation:{valType:"enumerated",values:["h","v"],dflt:"v"},thicknessmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels"},thickness:{valType:"number",min:0,dflt:30},lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["left","center","right"]},xpad:{valType:"number",min:0,dflt:10},y:{valType:"number"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},ypad:{valType:"number",min:0,dflt:10},outlinecolor:Ac.linecolor,outlinewidth:Ac.linewidth,bordercolor:Ac.linecolor,borderwidth:{valType:"number",min:0,dflt:0},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},tickmode:Ac.minor.tickmode,nticks:Ac.nticks,tick0:Ac.tick0,dtick:Ac.dtick,tickvals:Ac.tickvals,ticktext:Ac.ticktext,ticks:Aae({},Ac.ticks,{dflt:""}),ticklabeloverflow:Aae({},Ac.ticklabeloverflow,{}),ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside"},ticklen:Ac.ticklen,tickwidth:Ac.tickwidth,tickcolor:Ac.tickcolor,ticklabelstep:Ac.ticklabelstep,showticklabels:Ac.showticklabels,labelalias:Ac.labelalias,tickfont:Tae({}),tickangle:Ac.tickangle,tickformat:Ac.tickformat,tickformatstops:Ac.tickformatstops,tickprefix:Ac.tickprefix,showtickprefix:Ac.showtickprefix,ticksuffix:Ac.ticksuffix,showticksuffix:Ac.showticksuffix,separatethousands:Ac.separatethousands,exponentformat:Ac.exponentformat,minexponent:Ac.minexponent,showexponent:Ac.showexponent,title:{text:{valType:"string"},font:Tae({}),side:{valType:"enumerated",values:["right","top","bottom"]}}},"colorbars","from-root")});var Jl=ye(($tr,Eae)=>{"use strict";var Ant=K6(),Snt=n3().counter,Mnt=Y1(),Mae=sb().scales,Jtr=Mnt(Mae);function J6(e){return"`"+e+"`"}Eae.exports=function(t,r){t=t||"",r=r||{};var n=r.cLetter||"c",i="onlyIfNumerical"in r?r.onlyIfNumerical:!!t,a="noScale"in r?r.noScale:t==="marker.line",o="showScaleDflt"in r?r.showScaleDflt:n==="z",s=typeof r.colorscaleDflt=="string"?Mae[r.colorscaleDflt]:null,l=r.editTypeOverride||"",u=t?t+".":"",c,f;"colorAttr"in r?(c=r.colorAttr,f=r.colorAttr):(c={z:"z",c:"color"}[n],f="in "+J6(u+c));var h=i?" Has an effect only if "+f+" is set to a numerical array.":"",d=n+"auto",v=n+"min",x=n+"max",b=n+"mid",p=J6(u+d),E=J6(u+v),k=J6(u+x),A=E+" and "+k,L={};L[v]=L[x]=void 0;var _={};_[d]=!1;var C={};return c==="color"&&(C.color={valType:"color",arrayOk:!0,editType:l||"style"},r.anim&&(C.color.anim=!0)),C[d]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:L},C[v]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[x]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[b]={valType:"number",dflt:null,editType:"calc",impliedEdits:L},C.colorscale={valType:"colorscale",editType:"calc",dflt:s,impliedEdits:{autocolorscale:!1}},C.autocolorscale={valType:"boolean",dflt:r.autoColorDflt!==!1,editType:"calc",impliedEdits:{colorscale:void 0}},C.reversescale={valType:"boolean",dflt:!1,editType:"plot"},a||(C.showscale={valType:"boolean",dflt:o,editType:"calc"},C.colorbar=Ant),r.noColorAxis||(C.coloraxis={valType:"subplotid",regex:Snt("coloraxis"),dflt:null,editType:"calc"}),C}});var mO=ye((Qtr,kae)=>{"use strict";var Ent=no().extendFlat,knt=Jl(),gO=sb().scales;kae.exports={editType:"calc",colorscale:{editType:"calc",sequential:{valType:"colorscale",dflt:gO.Reds,editType:"calc"},sequentialminus:{valType:"colorscale",dflt:gO.Blues,editType:"calc"},diverging:{valType:"colorscale",dflt:gO.RdBu,editType:"calc"}},coloraxis:Ent({_isSubplotObj:!0,editType:"calc"},knt("",{colorAttr:"corresponding trace color array(s)",noColorAxis:!0,showScaleDflt:!0}))}});var yO=ye((err,Cae)=>{"use strict";var Cnt=Mr();Cae.exports=function(t){return Cnt.isPlainObject(t.colorbar)}});var bO=ye(xO=>{"use strict";var _O=uo(),Lae=Mr(),Pae=es(),Lnt=Pae.ONEDAY,Pnt=Pae.ONEWEEK;xO.dtick=function(e,t){var r=t==="log",n=t==="date",i=t==="category",a=n?Lnt:1;if(!e)return a;if(_O(e))return e=Number(e),e<=0?a:i?Math.max(1,Math.round(e)):n?Math.max(.1,e):e;if(typeof e!="string"||!(n||r))return a;var o=e.charAt(0),s=e.substr(1);return s=_O(s)?Number(s):0,s<=0||!(n&&o==="M"&&s===Math.round(s)||r&&o==="L"||r&&o==="D"&&(s===1||s===2))?a:e};xO.tick0=function(e,t,r,n){if(t==="date")return Lae.cleanDate(e,Lae.dateTick0(r,n%Pnt===0?1:0));if(!(n==="D1"||n==="D2"))return _O(e)?Number(e):0}});var xb=ye((rrr,Rae)=>{"use strict";var Iae=bO(),Int=Mr().isArrayOrTypedArray,Rnt=vv().isTypedArraySpec,Dnt=vv().decodeTypedArraySpec;Rae.exports=function(t,r,n,i,a){a||(a={});var o=a.isMinor,s=o?t.minor||{}:t,l=o?r.minor:r,u=o?"minor.":"";function c(E){var k=s[E];return Rnt(k)&&(k=Dnt(k)),k!==void 0?k:(l._template||{})[E]}var f=c("tick0"),h=c("dtick"),d=c("tickvals"),v=Int(d)?"array":h?"linear":"auto",x=n(u+"tickmode",v);if(x==="auto"||x==="sync")n(u+"nticks");else if(x==="linear"){var b=l.dtick=Iae.dtick(h,i);l.tick0=Iae.tick0(f,i,r.calendar,b)}else if(i!=="multicategory"){var p=n(u+"tickvals");p===void 0?l.tickmode="auto":o||n("ticktext")}}});var T3=ye((irr,zae)=>{"use strict";var wO=Mr(),Dae=Cd();zae.exports=function(t,r,n,i){var a=i.isMinor,o=a?t.minor||{}:t,s=a?r.minor:r,l=a?Dae.minor:Dae,u=a?"minor.":"",c=wO.coerce2(o,s,l,"ticklen",a?(r.ticklen||5)*.6:void 0),f=wO.coerce2(o,s,l,"tickwidth",a?r.tickwidth||1:void 0),h=wO.coerce2(o,s,l,"tickcolor",(a?r.tickcolor:void 0)||s.color),d=n(u+"ticks",!a&&i.outerTicks||c||f||h?"outside":"");d||(delete s.ticklen,delete s.tickwidth,delete s.tickcolor)}});var TO=ye((nrr,Fae)=>{"use strict";Fae.exports=function(t){var r=["showexponent","showtickprefix","showticksuffix"],n=r.filter(function(a){return t[a]!==void 0}),i=function(a){return t[a]===t[n[0]]};if(n.every(i)||n.length===1)return t[n[0]]}});var Zd=ye((arr,qae)=>{"use strict";var $6=Mr(),znt=Vs();qae.exports=function(t,r,n){var i=n.name,a=n.inclusionAttr||"visible",o=r[i],s=$6.isArrayOrTypedArray(t[i])?t[i]:[],l=r[i]=[],u=znt.arrayTemplater(r,i,a),c,f;for(c=0;c<s.length;c++){var h=s[c];$6.isPlainObject(h)?f=u.newItem(h):(f=u.newItem({}),f[a]=!1),f._index=c,f[a]!==!1&&n.handleItemDefaults(h,f,r,n),l.push(f)}var d=u.defaultItems();for(c=0;c<d.length;c++)f=d[c],f._index=l.length,n.handleItemDefaults({},f,r,n,{}),l.push(f);if($6.isArrayOrTypedArray(o)){var v=Math.min(o.length,l.length);for(c=0;c<v;c++)$6.relinkPrivateKeys(l[c],o[c])}return l}});var t_=ye((orr,Bae)=>{"use strict";var AO=Mr(),Fnt=va().contrast,Oae=Cd(),qnt=TO(),Ont=Zd();Bae.exports=function(t,r,n,i,a){a||(a={});var o=n("labelalias");AO.isPlainObject(o)||delete r.labelalias;var s=qnt(t),l=n("showticklabels");if(l){a.noTicklabelshift||n("ticklabelshift"),a.noTicklabelstandoff||n("ticklabelstandoff");var u=a.font||{},c=r.color,f=r.ticklabelposition||"",h=f.indexOf("inside")!==-1?Fnt(a.bgColor):c&&c!==Oae.color.dflt?c:u.color;if(AO.coerceFont(n,"tickfont",u,{overrideDflt:{color:h}}),!a.noTicklabelstep&&i!=="multicategory"&&i!=="log"&&n("ticklabelstep"),!a.noAng){var d=n("tickangle");!a.noAutotickangles&&d==="auto"&&n("autotickangles")}if(i!=="category"){var v=n("tickformat");Ont(t,r,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:Bnt}),r.tickformatstops.length||delete r.tickformatstops,!a.noExp&&!v&&i!=="date"&&(n("showexponent",s),n("exponentformat"),n("minexponent"),n("separatethousands"))}}};function Bnt(e,t){function r(i,a){return AO.coerce(e,t,Oae.tickformatstops,i,a)}var n=r("enabled");n&&(r("dtickrange"),r("value"))}});var r_=ye((srr,Nae)=>{"use strict";var Nnt=TO();Nae.exports=function(t,r,n,i,a){a||(a={});var o=a.tickSuffixDflt,s=Nnt(t),l=n("tickprefix");l&&n("showtickprefix",s);var u=n("ticksuffix",o);u&&n("showticksuffix",s)}});var SO=ye((lrr,Uae)=>{"use strict";var i_=Mr(),Unt=Vs(),Vnt=xb(),Hnt=T3(),Gnt=t_(),jnt=r_(),Wnt=K6();Uae.exports=function(t,r,n){var i=Unt.newContainer(r,"colorbar"),a=t.colorbar||{};function o(T,F){return i_.coerce(a,i,Wnt,T,F)}var s=n.margin||{t:0,b:0,l:0,r:0},l=n.width-s.l-s.r,u=n.height-s.t-s.b,c=o("orientation"),f=c==="v",h=o("thicknessmode");o("thickness",h==="fraction"?30/(f?l:u):30);var d=o("lenmode");o("len",d==="fraction"?1:f?u:l);var v=o("yref"),x=o("xref"),b=v==="paper",p=x==="paper",E,k,A,L="left";f?(A="middle",L=p?"left":"right",E=p?1.02:1,k=.5):(A=b?"bottom":"top",L="center",E=.5,k=b?1.02:1),i_.coerce(a,i,{x:{valType:"number",min:p?-2:0,max:p?3:1,dflt:E}},"x"),i_.coerce(a,i,{y:{valType:"number",min:b?-2:0,max:b?3:1,dflt:k}},"y"),o("xanchor",L),o("xpad"),o("yanchor",A),o("ypad"),i_.noneOrAll(a,i,["x","y"]),o("outlinecolor"),o("outlinewidth"),o("bordercolor"),o("borderwidth"),o("bgcolor");var _=i_.coerce(a,i,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:f?["outside","inside","outside top","inside top","outside bottom","inside bottom"]:["outside","inside","outside left","inside left","outside right","inside right"]}},"ticklabelposition");o("ticklabeloverflow",_.indexOf("inside")!==-1?"hide past domain":"hide past div"),Vnt(a,i,o,"linear");var C=n.font,M={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,outerTicks:!1,font:C};_.indexOf("inside")!==-1&&(M.bgColor="black"),jnt(a,i,o,"linear",M),Gnt(a,i,o,"linear",M),Hnt(a,i,o,"linear",M),o("title.text",n._dfltTitle.colorbar);var g=i.showticklabels?i.tickfont:C,P=i_.extendFlat({},C,{family:g.family,size:i_.bigFont(g.size)});i_.coerceFont(o,"title.font",P),o("title.side",f?"top":"right")}});var Uh=ye((urr,Gae)=>{"use strict";var Vae=uo(),EO=Mr(),Znt=yO(),Xnt=SO(),Hae=sb().isValid,Ynt=ba().traceIs;function MO(e,t){var r=t.slice(0,t.length-1);return t?EO.nestedProperty(e,r).get()||{}:e}Gae.exports=function e(t,r,n,i,a){var o=a.prefix,s=a.cLetter,l="_module"in r,u=MO(t,o),c=MO(r,o),f=MO(r._template||{},o)||{},h=function(){return delete t.coloraxis,delete r.coloraxis,e(t,r,n,i,a)};if(l){var d=n._colorAxes||{},v=i(o+"coloraxis");if(v){var x=Ynt(r,"contour")&&EO.nestedProperty(r,"contours.coloring").get()||"heatmap",b=d[v];b?(b[2].push(h),b[0]!==x&&(b[0]=!1,EO.warn(["Ignoring coloraxis:",v,"setting","as it is linked to incompatible colorscales."].join(" ")))):d[v]=[x,r,[h]];return}}var p=u[s+"min"],E=u[s+"max"],k=Vae(p)&&Vae(E)&&p<E,A=i(o+s+"auto",!k);A?i(o+s+"mid"):(i(o+s+"min"),i(o+s+"max"));var L=u.colorscale,_=f.colorscale,C;if(L!==void 0&&(C=!Hae(L)),_!==void 0&&(C=!Hae(_)),i(o+"autocolorscale",C),i(o+"colorscale"),i(o+"reversescale"),o!=="marker.line."){var M;o&&l&&(M=Znt(u));var g=i(o+"showscale",M);g&&(o&&f&&(c._template=f),Xnt(u,c,n))}}});var Xae=ye((crr,Zae)=>{"use strict";var jae=Mr(),Knt=Vs(),Wae=mO(),Jnt=Uh();Zae.exports=function(t,r){function n(f,h){return jae.coerce(t,r,Wae,f,h)}n("colorscale.sequential"),n("colorscale.sequentialminus"),n("colorscale.diverging");var i=r._colorAxes,a,o;function s(f,h){return jae.coerce(a,o,Wae.coloraxis,f,h)}for(var l in i){var u=i[l];if(u[0])a=t[l]||{},o=Knt.newContainer(r,l,"coloraxis"),o._name=l,Jnt(a,o,r,s,{prefix:"",cLetter:"c"});else{for(var c=0;c<u[2].length;c++)u[2][c]();delete r._colorAxes[l]}}}});var Kae=ye((frr,Yae)=>{"use strict";var $nt=Mr(),Qnt=Dv().hasColorscale,eat=Dv().extractOpts;Yae.exports=function(t,r){function n(c,f){var h=c["_"+f];h!==void 0&&(c[f]=h)}function i(c,f){var h=f.container?$nt.nestedProperty(c,f.container).get():c;if(h)if(h.coloraxis)h._colorAx=r[h.coloraxis];else{var d=eat(h),v=d.auto;(v||d.min===void 0)&&n(h,f.min),(v||d.max===void 0)&&n(h,f.max),d.autocolorscale&&n(h,"colorscale")}}for(var a=0;a<t.length;a++){var o=t[a],s=o._module.colorbar;if(s)if(Array.isArray(s))for(var l=0;l<s.length;l++)i(o,s[l]);else i(o,s);Qnt(o,"marker.line")&&i(o,{container:"marker.line",min:"cmin",max:"cmax"})}for(var u in r._colorAxes)i(r[u],{min:"cmin",max:"cmax"})}});var zv=ye((hrr,$ae)=>{"use strict";var Jae=uo(),kO=Mr(),tat=Dv().extractOpts;$ae.exports=function(t,r,n){var i=t._fullLayout,a=n.vals,o=n.containerStr,s=o?kO.nestedProperty(r,o).get():r,l=tat(s),u=l.auto!==!1,c=l.min,f=l.max,h=l.mid,d=function(){return kO.aggNums(Math.min,null,a)},v=function(){return kO.aggNums(Math.max,null,a)};if(c===void 0?c=d():u&&(s._colorAx&&Jae(c)?c=Math.min(c,d()):c=d()),f===void 0?f=v():u&&(s._colorAx&&Jae(f)?f=Math.max(f,v()):f=v()),u&&h!==void 0&&(f-h>h-c?c=h-(f-h):f-h<h-c&&(f=h+(h-c))),c===f&&(c-=.5,f+=.5),l._sync("min",c),l._sync("max",f),l.autocolorscale){var x;c*f<0?x=i.colorscale.diverging:c>=0?x=i.colorscale.sequential:x=i.colorscale.sequentialminus,l._sync("colorscale",x)}}});var Mu=ye((drr,Qae)=>{"use strict";var Q6=sb(),A3=Dv();Qae.exports={moduleType:"component",name:"colorscale",attributes:Jl(),layoutAttributes:mO(),supplyLayoutDefaults:Xae(),handleDefaults:Uh(),crossTraceDefaults:Kae(),calc:zv(),scales:Q6.scales,defaultScale:Q6.defaultScale,getScale:Q6.get,isValidScale:Q6.isValid,hasColorscale:A3.hasColorscale,extractOpts:A3.extractOpts,extractScale:A3.extractScale,flipScale:A3.flipScale,makeColorScaleFunc:A3.makeColorScaleFunc,makeColorScaleFuncFromTrace:A3.makeColorScaleFuncFromTrace}});var lu=ye((vrr,toe)=>{"use strict";var eoe=Mr(),rat=vv().isTypedArraySpec;toe.exports={hasLines:function(e){return e.visible&&e.mode&&e.mode.indexOf("lines")!==-1},hasMarkers:function(e){return e.visible&&(e.mode&&e.mode.indexOf("markers")!==-1||e.type==="splom")},hasText:function(e){return e.visible&&e.mode&&e.mode.indexOf("text")!==-1},isBubble:function(e){var t=e.marker;return eoe.isPlainObject(t)&&(eoe.isArrayOrTypedArray(t.size)||rat(t.size))}}});var S3=ye((prr,roe)=>{"use strict";var iat=uo();roe.exports=function(t,r){r||(r=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o=n.sizemode==="area"?function(s){return Math.sqrt(s/i)}:function(s){return s/i};return function(s){var l=o(s/r);return iat(l)&&l>0?Math.max(l,a):0}}});var rp=ye(pv=>{"use strict";var ioe=Mr();pv.getSubplot=function(e){return e.subplot||e.xaxis+e.yaxis||e.geo};pv.isTraceInSubplots=function(e,t){if(e.type==="splom"){for(var r=e.xaxes||[],n=e.yaxes||[],i=0;i<r.length;i++)for(var a=0;a<n.length;a++)if(t.indexOf(r[i]+n[a])!==-1)return!0;return!1}return t.indexOf(pv.getSubplot(e))!==-1};pv.flat=function(e,t){for(var r=new Array(e.length),n=0;n<e.length;n++)r[n]=t;return r};pv.p2c=function(e,t){for(var r=new Array(e.length),n=0;n<e.length;n++)r[n]=e[n].p2c(t);return r};pv.getDistanceFunction=function(e,t,r,n){return e==="closest"?n||pv.quadrature(t,r):e.charAt(0)==="x"?t:r};pv.getClosest=function(e,t,r){if(r.index!==!1)r.index>=0&&r.index<e.length?r.distance=0:r.index=!1;else for(var n=1/0,i=e.length,a=0;a<i;a++)n=t(e[a]),n<=r.distance&&(r.index=a,r.distance=n);return r};pv.inbox=function(e,t,r){return e*t<0||e===0?r:1/0};pv.quadrature=function(e,t){return function(r){var n=e(r),i=t(r);return Math.sqrt(n*n+i*i)}};pv.makeEventData=function(e,t,r){var n="index"in e?e.index:e.pointNumber,i={data:t._input,fullData:t,curveNumber:t.index,pointNumber:n};if(t._indexToPoints){var a=t._indexToPoints[n];a.length===1?i.pointIndex=a[0]:i.pointIndices=a}else i.pointIndex=n;return t._module.eventData?i=t._module.eventData(i,e,t,r,n):("xVal"in e?i.x=e.xVal:"x"in e&&(i.x=e.x),"yVal"in e?i.y=e.yVal:"y"in e&&(i.y=e.y),e.xa&&(i.xaxis=e.xa),e.ya&&(i.yaxis=e.ya),e.zLabelVal!==void 0&&(i.z=e.zLabelVal)),pv.appendArrayPointValue(i,t,n),i};pv.appendArrayPointValue=function(e,t,r){var n=t._arrayAttrs;if(n)for(var i=0;i<n.length;i++){var a=n[i],o=noe(a);if(e[o]===void 0){var s=ioe.nestedProperty(t,a).get(),l=aoe(s,r);l!==void 0&&(e[o]=l)}}};pv.appendArrayMultiPointValues=function(e,t,r){var n=t._arrayAttrs;if(n)for(var i=0;i<n.length;i++){var a=n[i],o=noe(a);if(e[o]===void 0){for(var s=ioe.nestedProperty(t,a).get(),l=new Array(r.length),u=0;u<r.length;u++)l[u]=aoe(s,r[u]);e[o]=l}}};var nat={ids:"id",locations:"location",labels:"label",values:"value","marker.colors":"color",parents:"parent"};function noe(e){return nat[e]||e}function aoe(e,t){if(Array.isArray(t)){if(Array.isArray(e)&&Array.isArray(e[t[0]]))return e[t[0]][t[1]]}else return e[t]}var aat={x:!0,y:!0},oat={"x unified":!0,"y unified":!0};pv.isUnifiedHover=function(e){return typeof e!="string"?!1:!!oat[e]};pv.isXYhover=function(e){return typeof e!="string"?!1:!!aat[e]}});var XS=ye((mrr,ooe)=>{ooe.exports=lat;var CO={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},sat=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function lat(e){var t=[];return e.replace(sat,function(r,n,i){var a=n.toLowerCase();for(i=cat(i),a=="m"&&i.length>2&&(t.push([n].concat(i.splice(0,2))),a="l",n=n=="m"?"l":"L");;){if(i.length==CO[a])return i.unshift(n),t.push(i);if(i.length<CO[a])throw new Error("malformed path data");t.push([n].concat(i.splice(0,CO[a])))}}),t}var uat=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function cat(e){var t=e.match(uat);return t?t.map(Number):[]}});var doe=ye((yrr,hoe)=>{"use strict";var fat=XS(),Yn=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},ts="M0,0Z",soe=Math.sqrt(2),n_=Math.sqrt(3),LO=Math.PI,PO=Math.cos,IO=Math.sin;hoe.exports={circle:{n:0,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i="M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z";return r?is(t,r,i):i}},square:{n:1,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")}},diamond:{n:2,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"Z")}},cross:{n:3,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.4,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H"+n+"V"+i+"H-"+n+"V"+n+"H-"+i+"V-"+n+"H-"+n+"V-"+i+"H"+n+"V-"+n+"H"+i+"Z")}},x:{n:4,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.8/soe,2),i="l"+n+","+n,a="l"+n+",-"+n,o="l-"+n+",-"+n,s="l-"+n+","+n;return is(t,r,"M0,"+n+i+a+o+a+o+s+o+s+i+s+i+"Z")}},"triangle-up":{n:5,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+","+i+"H"+n+"L0,-"+a+"Z")}},"triangle-down":{n:6,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+",-"+i+"H"+n+"L0,"+a+"Z")}},"triangle-left":{n:7,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M"+i+",-"+n+"V"+n+"L-"+a+",0Z")}},"triangle-right":{n:8,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+i+",-"+n+"V"+n+"L"+a+",0Z")}},"triangle-ne":{n:9,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+i+",-"+n+"H"+n+"V"+i+"Z")}},"triangle-se":{n:10,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+n+",-"+i+"V"+n+"H-"+i+"Z")}},"triangle-sw":{n:11,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H-"+n+"V-"+i+"Z")}},"triangle-nw":{n:12,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+n+","+i+"V-"+n+"H"+i+"Z")}},pentagon:{n:13,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.951,2),i=Yn(e*.588,2),a=Yn(-e,2),o=Yn(e*-.309,2),s=Yn(e*.809,2);return is(t,r,"M"+n+","+o+"L"+i+","+s+"H-"+i+"L-"+n+","+o+"L0,"+a+"Z")}},hexagon:{n:14,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M"+a+",-"+i+"V"+i+"L0,"+n+"L-"+a+","+i+"V-"+i+"L0,-"+n+"Z")}},hexagon2:{n:15,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M-"+i+","+a+"H"+i+"L"+n+",0L"+i+",-"+a+"H-"+i+"L-"+n+",0Z")}},octagon:{n:16,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.924,2),i=Yn(e*.383,2);return is(t,r,"M-"+i+",-"+n+"H"+i+"L"+n+",-"+i+"V"+i+"L"+i+","+n+"H-"+i+"L-"+n+","+i+"V-"+i+"Z")}},star:{n:17,f:function(e,t,r){if(rs(t))return ts;var n=e*1.4,i=Yn(n*.225,2),a=Yn(n*.951,2),o=Yn(n*.363,2),s=Yn(n*.588,2),l=Yn(-n,2),u=Yn(n*-.309,2),c=Yn(n*.118,2),f=Yn(n*.809,2),h=Yn(n*.382,2);return is(t,r,"M"+i+","+u+"H"+a+"L"+o+","+c+"L"+s+","+f+"L0,"+h+"L-"+s+","+f+"L-"+o+","+c+"L-"+a+","+u+"H-"+i+"L0,"+l+"Z")}},hexagram:{n:18,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.66,2),i=Yn(e*.38,2),a=Yn(e*.76,2);return is(t,r,"M-"+a+",0l-"+i+",-"+n+"h"+a+"l"+i+",-"+n+"l"+i+","+n+"h"+a+"l-"+i+","+n+"l"+i+","+n+"h-"+a+"l-"+i+","+n+"l-"+i+",-"+n+"h-"+a+"Z")}},"star-triangle-up":{n:19,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M-"+n+","+i+s+n+","+i+s+"0,-"+a+s+"-"+n+","+i+"Z")}},"star-triangle-down":{n:20,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M"+n+",-"+i+s+"-"+n+",-"+i+s+"0,"+a+s+n+",-"+i+"Z")}},"star-square":{n:21,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.1,2),i=Yn(e*2,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",-"+n+a+"-"+n+","+n+a+n+","+n+a+n+",-"+n+a+"-"+n+",-"+n+"Z")}},"star-diamond":{n:22,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*1.9,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",0"+a+"0,"+n+a+n+",0"+a+"0,-"+n+a+"-"+n+",0Z")}},"diamond-tall":{n:23,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.7,2),i=Yn(e*1.4,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},"diamond-wide":{n:24,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*.7,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},hourglass:{n:25,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"L"+n+",-"+n+"H-"+n+"Z")},noDot:!0},bowtie:{n:26,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"V-"+n+"L-"+n+","+n+"V-"+n+"Z")},noDot:!0},"circle-cross":{n:27,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/soe,2);return is(t,r,"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"square-x":{n:30,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM0,-"+n+"V"+n+"M-"+n+",0H"+n)},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2),i=Yn(e*.65,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM-"+i+",-"+i+"L"+i+","+i+"M-"+i+","+i+"L"+i+",-"+i)},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*.85,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i)},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e/2,2),i=Yn(e,2);return is(t,r,"M"+n+","+i+"V-"+i+"M"+(n-i)+",-"+i+"V"+i+"M"+i+","+n+"H-"+i+"M-"+i+","+(n-i)+"H"+i)},needLine:!0,noFill:!0},"y-up":{n:37,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+","+a+"L0,0M"+n+","+a+"L0,0M0,-"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+",-"+a+"L0,0M"+n+",-"+a+"L0,0M0,"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M"+a+","+n+"L0,0M"+a+",-"+n+"L0,0M-"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+a+","+n+"L0,0M-"+a+",-"+n+"L0,0M"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n)},needLine:!0,noDot:!0,noFill:!0},"arrow-up":{n:45,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,noDot:!0},"arrow-down":{n:46,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+",-"+i+"H"+n+"Z")},noDot:!0},"arrow-left":{n:47,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-right":{n:48,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L-"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-bar-up":{n:49,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,needLine:!0,noDot:!0},"arrow-bar-down":{n:50,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+",-"+i+"H"+n+"Z")},needLine:!0,noDot:!0},"arrow-bar-left":{n:51,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},"arrow-bar-right":{n:52,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L-"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},arrow:{n:53,f:function(e,t,r){if(rs(t))return ts;var n=LO/2.5,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"L"+i+","+a+"Z")},backoff:.9,noDot:!0},"arrow-wide":{n:54,f:function(e,t,r){if(rs(t))return ts;var n=LO/4,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"A "+2*e+","+2*e+" 0 0 1 "+i+","+a+"Z")},backoff:.4,noDot:!0}};function rs(e){return e===null}var loe,uoe,coe,foe;function is(e,t,r){if((!e||e%360===0)&&!t)return r;if(coe===e&&foe===t&&loe===r)return uoe;coe=e,foe=t,loe=r;function n(b,p){var E=PO(b),k=IO(b),A=p[0],L=p[1]+(t||0);return[A*E-L*k,A*k+L*E]}for(var i=e/180*LO,a=0,o=0,s=fat(r),l="",u=0;u<s.length;u++){var c=s[u],f=c[0],h=a,d=o;if(f==="M"||f==="L")a=+c[1],o=+c[2];else if(f==="m"||f==="l")a+=+c[1],o+=+c[2];else if(f==="H")a=+c[1];else if(f==="h")a+=+c[1];else if(f==="V")o=+c[1];else if(f==="v")o+=+c[1];else if(f==="A"){a=+c[1],o=+c[2];var v=n(i,[+c[6],+c[7]]);c[6]=v[0],c[7]=v[1],c[3]=+c[3]+e}(f==="H"||f==="V")&&(f="L"),(f==="h"||f==="v")&&(f="l"),(f==="m"||f==="l")&&(a-=h,o-=d);var x=n(i,[a,o]);(f==="H"||f==="V")&&(f="L"),(f==="M"||f==="L"||f==="m"||f==="l")&&(c[1]=x[0],c[2]=x[1]),c[0]=f,l+=c[0]+c.slice(1).join(",")}return uoe=l,l}});var ao=ye((_rr,Roe)=>{"use strict";var od=xa(),du=Mr(),hat=du.numberFormat,Ab=uo(),OO=id(),tL=ba(),Xd=va(),dat=Mu(),KS=du.strTranslate,rL=Pl(),vat=Zp(),pat=Nh(),gat=pat.LINE_SPACING,Toe=U1().DESELECTDIM,mat=lu(),yat=S3(),_at=rp().appendArrayPointValue,na=Roe.exports={};na.font=function(e,t){var r=t.variant,n=t.style,i=t.weight,a=t.color,o=t.size,s=t.family,l=t.shadow,u=t.lineposition,c=t.textcase;s&&e.style("font-family",s),o+1&&e.style("font-size",o+"px"),a&&e.call(Xd.fill,a),i&&e.style("font-weight",i),n&&e.style("font-style",n),r&&e.style("font-variant",r),c&&e.style("text-transform",RO(bat(c))),l&&e.style("text-shadow",l==="auto"?rL.makeTextShadow(Xd.contrast(a)):RO(l)),u&&e.style("text-decoration-line",RO(wat(u)))};function RO(e){return e==="none"?void 0:e}var xat={normal:"none",lower:"lowercase",upper:"uppercase","word caps":"capitalize"};function bat(e){return xat[e]}function wat(e){return e.replace("under","underline").replace("over","overline").replace("through","line-through").split("+").join(" ")}na.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)};na.setSize=function(e,t,r){e.attr("width",t).attr("height",r)};na.setRect=function(e,t,r,n,i){e.call(na.setPosition,t,r).call(na.setSize,n,i)};na.translatePoint=function(e,t,r,n){var i=r.c2p(e.x),a=n.c2p(e.y);if(Ab(i)&&Ab(a)&&t.node())t.node().nodeName==="text"?t.attr("x",i).attr("y",a):t.attr("transform",KS(i,a));else return!1;return!0};na.translatePoints=function(e,t,r){e.each(function(n){var i=od.select(this);na.translatePoint(n,i,t,r)})};na.hideOutsideRangePoint=function(e,t,r,n,i,a){t.attr("display",r.isPtWithinRange(e,i)&&n.isPtWithinRange(e,a)?null:"none")};na.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,n=t.yaxis;e.each(function(i){var a=i[0].trace,o=a.xcalendar,s=a.ycalendar,l=tL.traceIs(a,"bar-like")?".bartext":".point,.textpoint";e.selectAll(l).each(function(u){na.hideOutsideRangePoint(u,od.select(this),r,n,o,s)})})}};na.crispRound=function(e,t,r){return!t||!Ab(t)?r||0:e._context.staticPlot?t:t<1?1:Math.round(t)};na.singleLineStyle=function(e,t,r,n,i){t.style("fill","none");var a=(((e||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";Xd.stroke(t,n||a.color),na.dashLine(t,s,o)};na.lineGroupStyle=function(e,t,r,n){e.style("fill","none").each(function(i){var a=(((i||[])[0]||{}).trace||{}).line||{},o=t||a.width||0,s=n||a.dash||"";od.select(this).call(Xd.stroke,r||a.color).call(na.dashLine,s,o)})};na.dashLine=function(e,t,r){r=+r||0,t=na.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})};na.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return e==="solid"?e="":e==="dot"?e=r+"px,"+r+"px":e==="dash"?e=3*r+"px,"+3*r+"px":e==="longdash"?e=5*r+"px,"+5*r+"px":e==="dashdot"?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":e==="longdashdot"&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e};function Aoe(e,t,r,n){var i=t.fillpattern,a=t.fillgradient,o=i&&na.getPatternAttr(i.shape,0,"");if(o){var s=na.getPatternAttr(i.bgcolor,0,null),l=na.getPatternAttr(i.fgcolor,0,null),u=i.fgopacity,c=na.getPatternAttr(i.size,0,8),f=na.getPatternAttr(i.solidity,0,.3),h=t.uid;na.pattern(e,"point",r,h,o,c,f,void 0,i.fillmode,s,l,u)}else if(a&&a.type!=="none"){var d=a.type,v="scatterfill-"+t.uid;if(n&&(v="legendfill-"+t.uid),!n&&(a.start!==void 0||a.stop!==void 0)){var x,b;d==="horizontal"?(x={x:a.start,y:0},b={x:a.stop,y:0}):d==="vertical"&&(x={x:0,y:a.start},b={x:0,y:a.stop}),x.x=t._xA.c2p(x.x===void 0?t._extremes.x.min[0].val:x.x,!0),x.y=t._yA.c2p(x.y===void 0?t._extremes.y.min[0].val:x.y,!0),b.x=t._xA.c2p(b.x===void 0?t._extremes.x.max[0].val:b.x,!0),b.y=t._yA.c2p(b.y===void 0?t._extremes.y.max[0].val:b.y,!0),e.call(Eoe,r,v,"linear",a.colorscale,"fill",x,b,!0,!1)}else d==="horizontal"&&(d=d+"reversed"),e.call(na.gradient,r,v,d,a.colorscale,"fill")}else t.fillcolor&&e.call(Xd.fill,t.fillcolor)}na.singleFillStyle=function(e,t){var r=od.select(e.node()),n=r.data(),i=((n[0]||[])[0]||{}).trace||{};Aoe(e,i,t,!1)};na.fillGroupStyle=function(e,t,r){e.style("stroke-width",0).each(function(n){var i=od.select(this);n[0].trace&&Aoe(i,n[0].trace,t,r)})};var voe=doe();na.symbolNames=[];na.symbolFuncs=[];na.symbolBackOffs=[];na.symbolNeedLines={};na.symbolNoDot={};na.symbolNoFill={};na.symbolList=[];Object.keys(voe).forEach(function(e){var t=voe[e],r=t.n;na.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),na.symbolNames[r]=e,na.symbolFuncs[r]=t.f,na.symbolBackOffs[r]=t.backoff||0,t.needLine&&(na.symbolNeedLines[r]=!0),t.noDot?na.symbolNoDot[r]=!0:na.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(na.symbolNoFill[r]=!0)});var Tat=na.symbolNames.length,Aat="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";na.symbolNumber=function(e){if(Ab(e))e=+e;else if(typeof e=="string"){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),e=na.symbolNames.indexOf(e),e>=0&&(e+=t)}return e%100>=Tat||e>=400?0:Math.floor(Math.max(e,0))};function Soe(e,t,r,n){var i=e%100;return na.symbolFuncs[i](t,r,n)+(e>=200?Aat:"")}var poe=hat("~f"),Moe={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};na.gradient=function(e,t,r,n,i,a){var o=Moe[n];return Eoe(e,t,r,o.type,i,a,o.start,o.stop,!1,o.reversed)};function Eoe(e,t,r,n,i,a,o,s,l,u){var c=i.length,f;n==="linear"?f={node:"linearGradient",attrs:{x1:o.x,y1:o.y,x2:s.x,y2:s.y,gradientUnits:l?"userSpaceOnUse":"objectBoundingBox"},reversed:u}:n==="radial"&&(f={node:"radialGradient",reversed:u});for(var h=new Array(c),d=0;d<c;d++)f.reversed?h[c-1-d]=[poe((1-i[d][0])*100),i[d][1]]:h[d]=[poe(i[d][0]*100),i[d][1]];var v=t._fullLayout,x="g"+v._uid+"-"+r,b=v._defs.select(".gradients").selectAll("#"+x).data([n+h.join(";")],du.identity);b.exit().remove(),b.enter().append(f.node).each(function(){var p=od.select(this);f.attrs&&p.attr(f.attrs),p.attr("id",x);var E=p.selectAll("stop").data(h);E.exit().remove(),E.enter().append("stop"),E.each(function(k){var A=OO(k[1]);od.select(this).attr({offset:k[0]+"%","stop-color":Xd.tinyRGB(A),"stop-opacity":A.getAlpha()})})}),e.style(a,BO(x,t)).style(a+"-opacity",null),e.classed("gradient_filled",!0)}na.pattern=function(e,t,r,n,i,a,o,s,l,u,c,f){var h=t==="legend";s&&(l==="overlay"?(u=s,c=Xd.contrast(u)):(u=void 0,c=s));var d=r._fullLayout,v="p"+d._uid+"-"+n,x,b,p=function(q,V,H,X,G){return X+(G-X)*(q-V)/(H-V)},E,k,A,L,_={},C=OO(c),M=Xd.tinyRGB(C),g=C.getAlpha(),P=f*g;switch(i){case"/":x=a*Math.sqrt(2),b=a*Math.sqrt(2),E="M-"+x/4+","+b/4+"l"+x/2+",-"+b/2+"M0,"+b+"L"+x+",0M"+x/4*3+","+b/4*5+"l"+x/2+",-"+b/2,k=o*a,L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case"\\":x=a*Math.sqrt(2),b=a*Math.sqrt(2),E="M"+x/4*3+",-"+b/4+"l"+x/2+","+b/2+"M0,0L"+x+","+b+"M-"+x/4+","+b/4*3+"l"+x/2+","+b/2,k=o*a,L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case"x":x=a*Math.sqrt(2),b=a*Math.sqrt(2),E="M-"+x/4+","+b/4+"l"+x/2+",-"+b/2+"M0,"+b+"L"+x+",0M"+x/4*3+","+b/4*5+"l"+x/2+",-"+b/2+"M"+x/4*3+",-"+b/4+"l"+x/2+","+b/2+"M0,0L"+x+","+b+"M-"+x/4+","+b/4*3+"l"+x/2+","+b/2,k=a-a*Math.sqrt(1-o),L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case"|":x=a,b=a,L="path",E="M"+x/2+",0L"+x/2+","+b,k=o*a,L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case"-":x=a,b=a,L="path",E="M0,"+b/2+"L"+x+","+b/2,k=o*a,L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case"+":x=a,b=a,L="path",E="M"+x/2+",0L"+x/2+","+b+"M0,"+b/2+"L"+x+","+b/2,k=a-a*Math.sqrt(1-o),L="path",_={d:E,opacity:P,stroke:M,"stroke-width":k+"px"};break;case".":x=a,b=a,o<Math.PI/4?A=Math.sqrt(o*a*a/Math.PI):A=p(o,Math.PI/4,1,a/2,a/Math.sqrt(2)),L="circle",_={cx:x/2,cy:b/2,r:A,opacity:P,fill:M};break}var T=[i||"noSh",u||"noBg",c||"noFg",a,o].join(";"),F=d._defs.select(".patterns").selectAll("#"+v).data([T],du.identity);F.exit().remove(),F.enter().append("pattern").each(function(){var q=od.select(this);if(q.attr({id:v,width:x+"px",height:b+"px",patternUnits:"userSpaceOnUse",patternTransform:h?"scale(0.8)":""}),u){var V=OO(u),H=Xd.tinyRGB(V),X=V.getAlpha(),G=q.selectAll("rect").data([0]);G.exit().remove(),G.enter().append("rect").attr({width:x+"px",height:b+"px",fill:H,"fill-opacity":X})}var N=q.selectAll(L).data([0]);N.exit().remove(),N.enter().append(L).attr(_)}),e.style("fill",BO(v,r)).style("fill-opacity",null),e.classed("pattern_filled",!0)};na.initGradients=function(e){var t=e._fullLayout,r=du.ensureSingle(t._defs,"g","gradients");r.selectAll("linearGradient,radialGradient").remove(),od.select(e).selectAll(".gradient_filled").classed("gradient_filled",!1)};na.initPatterns=function(e){var t=e._fullLayout,r=du.ensureSingle(t._defs,"g","patterns");r.selectAll("pattern").remove(),od.select(e).selectAll(".pattern_filled").classed("pattern_filled",!1)};na.getPatternAttr=function(e,t,r){return e&&du.isArrayOrTypedArray(e)?t<e.length?e[t]:r:e};na.pointStyle=function(e,t,r,n){if(e.size()){var i=na.makePointStyleFns(t);e.each(function(a){na.singlePointStyle(a,od.select(this),t,i,r,n)})}};na.singlePointStyle=function(e,t,r,n,i,a){var o=r.marker,s=o.line;if(a&&a.i>=0&&e.i===void 0&&(e.i=a.i),t.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(e):e.mo===void 0?o.opacity:e.mo),n.ms2mrc){var l;e.ms==="various"||o.size==="various"?l=3:l=n.ms2mrc(e.ms),e.mrc=l,n.selectedSizeFn&&(l=e.mrc=n.selectedSizeFn(e));var u=na.symbolNumber(e.mx||o.symbol)||0;e.om=u%200>=100;var c=UO(e,r),f=NO(e,r);t.attr("d",Soe(u,l,c,f))}var h=!1,d,v,x;if(e.so)x=s.outlierwidth,v=s.outliercolor,d=o.outliercolor;else{var b=(s||{}).width;x=(e.mlw+1||b+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in e?v=e.mlcc=n.lineScale(e.mlc):du.isArrayOrTypedArray(s.color)?v=Xd.defaultLine:v=s.color,du.isArrayOrTypedArray(o.color)&&(d=Xd.defaultLine,h=!0),"mc"in e?d=e.mcc=n.markerScale(e.mc):d=o.color||o.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(e))}if(e.om)t.call(Xd.stroke,d).style({"stroke-width":(x||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:x)+"px");var p=o.gradient,E=e.mgt;E?h=!0:E=p&&p.type,du.isArrayOrTypedArray(E)&&(E=E[0],Moe[E]||(E=0));var k=o.pattern,A=k&&na.getPatternAttr(k.shape,e.i,"");if(E&&E!=="none"){var L=e.mgc;L?h=!0:L=p.color;var _=r.uid;h&&(_+="-"+e.i),na.gradient(t,i,_,E,[[0,L],[1,d]],"fill")}else if(A){var C=!1,M=k.fgcolor;!M&&a&&a.color&&(M=a.color,C=!0);var g=na.getPatternAttr(M,e.i,a&&a.color||null),P=na.getPatternAttr(k.bgcolor,e.i,null),T=k.fgopacity,F=na.getPatternAttr(k.size,e.i,8),q=na.getPatternAttr(k.solidity,e.i,.3);C=C||e.mcc||du.isArrayOrTypedArray(k.shape)||du.isArrayOrTypedArray(k.bgcolor)||du.isArrayOrTypedArray(k.fgcolor)||du.isArrayOrTypedArray(k.size)||du.isArrayOrTypedArray(k.solidity);var V=r.uid;C&&(V+="-"+e.i),na.pattern(t,"point",i,V,A,F,q,e.mcc,k.fillmode,P,g,T)}else du.isArrayOrTypedArray(d)?Xd.fill(t,d[e.i]):Xd.fill(t,d);x&&Xd.stroke(t,v)}};na.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=na.tryColorscale(r,""),t.lineScale=na.tryColorscale(r,"line"),tL.traceIs(e,"symbols")&&(t.ms2mrc=mat.isBubble(e)?yat(e):function(){return(r.size||6)/2}),e.selectedpoints&&du.extendFlat(t,na.makeSelectedPointStyleFns(e)),t};na.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},a=r.marker||{},o=n.marker||{},s=i.opacity,l=a.opacity,u=o.opacity,c=l!==void 0,f=u!==void 0;(du.isArrayOrTypedArray(s)||c||f)&&(t.selectedOpacityFn=function(A){var L=A.mo===void 0?i.opacity:A.mo;return A.selected?c?l:L:f?u:Toe*L});var h=i.color,d=a.color,v=o.color;(d||v)&&(t.selectedColorFn=function(A){var L=A.mcc||h;return A.selected?d||L:v||L});var x=i.size,b=a.size,p=o.size,E=b!==void 0,k=p!==void 0;return tL.traceIs(e,"symbols")&&(E||k)&&(t.selectedSizeFn=function(A){var L=A.mrc||x/2;return A.selected?E?b/2:L:k?p/2:L}),t};na.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return t.selectedTextColorFn=function(c){var f=c.tc||s;return c.selected?l||f:u||(l?f:Xd.addOpacity(f,Toe))},t};na.selectedPointStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedPointStyleFns(t),n=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(a,o){a.style("opacity",r.selectedOpacityFn(o))}),r.selectedColorFn&&i.push(function(a,o){Xd.fill(a,r.selectedColorFn(o))}),r.selectedSizeFn&&i.push(function(a,o){var s=o.mx||n.symbol||0,l=r.selectedSizeFn(o);a.attr("d",Soe(na.symbolNumber(s),l,UO(o,t),NO(o,t))),o.mrc2=l}),i.length&&e.each(function(a){for(var o=od.select(this),s=0;s<i.length;s++)i[s](o,a)})}};na.tryColorscale=function(e,t){var r=t?du.nestedProperty(e,t).get():e;if(r){var n=r.color;if((r.colorscale||r._colorAx)&&du.isArrayOrTypedArray(n))return dat.makeColorScaleFuncFromTrace(r)}return du.identity};var DO={start:1,end:-1,middle:0,bottom:1,top:-1};function koe(e,t,r,n,i){var a=od.select(e.node().parentNode),o=t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle",s=t.indexOf("left")!==-1?"end":t.indexOf("right")!==-1?"start":"middle",l=n?n/.8+1:0,u=(rL.lineCount(e)-1)*gat+1,c=DO[s]*l,f=r*.75+DO[o]*l+(DO[o]-1)*u*r/2;e.attr("text-anchor",s),i||a.attr("transform",KS(c,f))}function Coe(e,t){var r=e.ts||t.textfont.size;return Ab(r)&&r>0?r:0}na.textPointStyle=function(e,t,r){if(e.size()){var n;if(t.selectedpoints){var i=na.makeSelectedTextStyleFns(t);n=i.selectedTextColorFn}var a=t.texttemplate,o=r._fullLayout;e.each(function(s){var l=od.select(this),u=a?du.extractOption(s,t,"txt","texttemplate"):du.extractOption(s,t,"tx","text");if(!u&&u!==0){l.remove();return}if(a){var c=t._module.formatLabels,f=c?c(s,t,o):{},h={};_at(h,t,s.i);var d=t._meta||{};u=du.texttemplateString(u,f,o._d3locale,h,s,d)}var v=s.tp||t.textposition,x=Coe(s,t),b=n?n(s):s.tc||t.textfont.color;l.call(na.font,{family:s.tf||t.textfont.family,weight:s.tw||t.textfont.weight,style:s.ty||t.textfont.style,variant:s.tv||t.textfont.variant,textcase:s.tC||t.textfont.textcase,lineposition:s.tE||t.textfont.lineposition,shadow:s.tS||t.textfont.shadow,size:x,color:b}).text(u).call(rL.convertToTspans,r).call(koe,v,x,s.mrc)})}};na.selectedTextStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedTextStyleFns(t);e.each(function(n){var i=od.select(this),a=r.selectedTextColorFn(n),o=n.tp||t.textposition,s=Coe(n,t);Xd.fill(i,a);var l=tL.traceIs(t,"bar-like");koe(i,o,s,n.mrc2||n.mrc,l)})}};var goe=.5;na.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r="M"+e[0],n=[],i;for(i=1;i<e.length-1;i++)n.push(eL(e[i-1],e[i],e[i+1],t));for(r+="Q"+n[0][0]+" "+e[1],i=2;i<e.length-1;i++)r+="C"+n[i-2][1]+" "+n[i-1][0]+" "+e[i];return r+="Q"+n[e.length-3][1]+" "+e[e.length-1],r};na.smoothclosed=function(e,t){if(e.length<3)return"M"+e.join("L")+"Z";var r="M"+e[0],n=e.length-1,i=[eL(e[n],e[0],e[1],t)],a;for(a=1;a<n;a++)i.push(eL(e[a-1],e[a],e[a+1],t));for(i.push(eL(e[n-1],e[n],e[0],t)),a=1;a<=n;a++)r+="C"+i[a-1][1]+" "+i[a][0]+" "+e[a];return r+="C"+i[n][1]+" "+i[0][0]+" "+e[0]+"Z",r};var Loe,Poe;function M3(e,t,r){return r&&(e=Ioe(e)),t?Tb(e[1]):wb(e[0])}function wb(e){var t=od.round(e,2);return Loe=t,t}function Tb(e){var t=od.round(e,2);return Poe=t,t}function eL(e,t,r,n){var i=e[0]-t[0],a=e[1]-t[1],o=r[0]-t[0],s=r[1]-t[1],l=Math.pow(i*i+a*a,goe/2),u=Math.pow(o*o+s*s,goe/2),c=(u*u*i-l*l*o)*n,f=(u*u*a-l*l*s)*n,h=3*u*(l+u),d=3*l*(l+u);return[[wb(t[0]+(h&&c/h)),Tb(t[1]+(h&&f/h))],[wb(t[0]-(d&&c/d)),Tb(t[1]-(d&&f/d))]]}var Sat={hv:function(e,t,r){return"H"+wb(t[0])+"V"+M3(t,1,r)},vh:function(e,t,r){return"V"+Tb(t[1])+"H"+M3(t,0,r)},hvh:function(e,t,r){return"H"+wb((e[0]+t[0])/2)+"V"+Tb(t[1])+"H"+M3(t,0,r)},vhv:function(e,t,r){return"V"+Tb((e[1]+t[1])/2)+"H"+wb(t[0])+"V"+M3(t,1,r)}},Mat=function(e,t,r){return"L"+M3(t,0,r)+","+M3(t,1,r)};na.steps=function(e){var t=Sat[e]||Mat;return function(r){for(var n="M"+wb(r[0][0])+","+Tb(r[0][1]),i=r.length,a=1;a<i;a++)n+=t(r[a-1],r[a],a===i-1);return n}};function Ioe(e,t){var r=e.backoff,n=e.trace,i=e.d,a=e.i;if(r&&n&&n.marker&&n.marker.angle%360===0&&n.line&&n.line.shape!=="spline"){var o=du.isArrayOrTypedArray(r),s=e,l=t?t[0]:Loe||0,u=t?t[1]:Poe||0,c=s[0],f=s[1],h=c-l,d=f-u,v=Math.atan2(d,h),x=o?r[a]:r;if(x==="auto"){var b=s.i;n.type==="scatter"&&b--;var p=s.marker,E=p.symbol;du.isArrayOrTypedArray(E)&&(E=E[b]);var k=p.size;du.isArrayOrTypedArray(k)&&(k=k[b]),x=p?na.symbolBackOffs[na.symbolNumber(E)]*k:0,x+=na.getMarkerStandoff(i[b],n)||0}var A=c-x*Math.cos(v),L=f-x*Math.sin(v);(A<=c&&A>=l||A>=c&&A<=l)&&(L<=f&&L>=u||L>=f&&L<=u)&&(e=[A,L])}return e}na.applyBackoff=Ioe;na.makeTester=function(){var e=du.ensureSingleById(od.select("body"),"svg","js-plotly-tester",function(r){r.attr(vat.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),t=du.ensureSingle(e,"path","js-reference-point",function(r){r.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});na.tester=e,na.testref=t};na.savedBBoxes={};var zO=0,Eat=1e4;na.bBox=function(e,t,r){r||(r=moe(e));var n;if(r){if(n=na.savedBBoxes[r],n)return du.extendFlat({},n)}else if(e.childNodes.length===1){var i=e.childNodes[0];if(r=moe(i),r){var a=+i.getAttribute("x")||0,o=+i.getAttribute("y")||0,s=i.getAttribute("transform");if(!s){var l=na.bBox(i,!1,r);return a&&(l.left+=a,l.right+=a),o&&(l.top+=o,l.bottom+=o),l}if(r+="~"+a+"~"+o+"~"+s,n=na.savedBBoxes[r],n)return du.extendFlat({},n)}}var u,c;t?u=e:(c=na.tester.node(),u=e.cloneNode(!0),c.appendChild(u)),od.select(u).attr("transform",null).call(rL.positionText,0,0);var f=u.getBoundingClientRect(),h=na.testref.node().getBoundingClientRect();t||c.removeChild(u);var d={height:f.height,width:f.width,left:f.left-h.left,top:f.top-h.top,right:f.right-h.left,bottom:f.bottom-h.top};return zO>=Eat&&(na.savedBBoxes={},zO=0),r&&(na.savedBBoxes[r]=d),zO++,du.extendFlat({},d)};function moe(e){var t=e.getAttribute("data-unformatted");if(t!==null)return t+e.getAttribute("data-math")+e.getAttribute("text-anchor")+e.getAttribute("style")}na.setClipUrl=function(e,t,r){e.attr("clip-path",BO(t,r))};function BO(e,t){if(!e)return null;var r=t._context,n=r._exportedPlot?"":r._baseUrl||"";return n?"url('"+n+"#"+e+"')":"url(#"+e+")"}na.getTranslate=function(e){var t=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||0,y:+i[1]||0}};na.setTranslate=function(e,t,r){var n=/(\btranslate\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||0,r=r||0,o=o.replace(n,"").trim(),o+=KS(t,r),o=o.trim(),e[a]("transform",o),o};na.getScale=function(e){var t=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||1,y:+i[1]||1}};na.setScale=function(e,t,r){var n=/(\bscale\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||1,r=r||1,o=o.replace(n,"").trim(),o+="scale("+t+","+r+")",o=o.trim(),e[a]("transform",o),o};var kat=/\s*sc.*/;na.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,!!e){var n=t===1&&r===1?"":"scale("+t+","+r+")";e.each(function(){var i=(this.getAttribute("transform")||"").replace(kat,"");i+=n,i=i.trim(),this.setAttribute("transform",i)})}};var Cat=/translate\([^)]*\)\s*$/;na.setTextPointsScale=function(e,t,r){e&&e.each(function(){var n,i=od.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(Cat);t===1&&r===1?n=[]:n=[KS(o,s),"scale("+t+","+r+")",KS(-o,-s)],l&&n.push(l),i.attr("transform",n.join(""))}})};function NO(e,t){var r;return e&&(r=e.mf),r===void 0&&(r=t.marker&&t.marker.standoff||0),!t._geo&&!t._xA?-r:r}na.getMarkerStandoff=NO;var YS=Math.atan2,bb=Math.cos,E3=Math.sin;function yoe(e,t){var r=t[0],n=t[1];return[r*bb(e)-n*E3(e),r*E3(e)+n*bb(e)]}var _oe,xoe,boe,woe,FO,qO;function UO(e,t){var r=e.ma;r===void 0&&(r=t.marker.angle,(!r||du.isArrayOrTypedArray(r))&&(r=0));var n,i,a=t.marker.angleref;if(a==="previous"||a==="north"){if(t._geo){var o=t._geo.project(e.lonlat);n=o[0],i=o[1]}else{var s=t._xA,l=t._yA;if(s&&l)n=s.c2p(e.x),i=l.c2p(e.y);else return 90}if(t._geo){var u=e.lonlat[0],c=e.lonlat[1],f=t._geo.project([u,c+1e-5]),h=t._geo.project([u+1e-5,c]),d=YS(h[1]-i,h[0]-n),v=YS(f[1]-i,f[0]-n),x;if(a==="north")x=r/180*Math.PI;else if(a==="previous"){var b=u/180*Math.PI,p=c/180*Math.PI,E=_oe/180*Math.PI,k=xoe/180*Math.PI,A=E-b,L=bb(k)*E3(A),_=E3(k)*bb(p)-bb(k)*E3(p)*bb(A);x=-YS(L,_)-Math.PI,_oe=u,xoe=c}var C=yoe(d,[bb(x),0]),M=yoe(v,[E3(x),0]);r=YS(C[1]+M[1],C[0]+M[0])/Math.PI*180,a==="previous"&&!(qO===t.uid&&e.i===FO+1)&&(r=null)}if(a==="previous"&&!t._geo)if(qO===t.uid&&e.i===FO+1&&Ab(n)&&Ab(i)){var g=n-boe,P=i-woe,T=t.line&&t.line.shape||"",F=T.slice(T.length-1);F==="h"&&(P=0),F==="v"&&(g=0),r+=YS(P,g)/Math.PI*180+90}else r=null}return boe=n,woe=i,FO=e.i,qO=t.uid,r}na.getMarkerAngle=UO});var Mb=ye((xrr,qoe)=>{"use strict";var k3=xa(),Lat=uo(),Pat=Xu(),VO=ba(),Sb=Mr(),Doe=Sb.strTranslate,iL=ao(),nL=va(),C3=Pl(),zoe=U1(),Iat=Nh().OPPOSITE_SIDE,Foe=/ [XY][0-9]* /,HO=1.6,GO=1.6;function Rat(e,t,r){var n=e._fullLayout,i=r.propContainer,a=r.propName,o=r.placeholder,s=r.traceIndex,l=r.avoid||{},u=r.attributes,c=r.transform,f=r.containerGroup,h=1,d=i.title,v=(d&&d.text?d.text:"").trim(),x=!1,b=d&&d.font?d.font:{},p=b.family,E=b.size,k=b.color,A=b.weight,L=b.style,_=b.variant,C=b.textcase,M=b.lineposition,g=b.shadow,P=r.subtitlePropName,T=!!P,F=r.subtitlePlaceholder,q=(i.title||{}).subtitle||{text:"",font:{}},V=q.text.trim(),H=!1,X=1,G=q.font,N=G.family,W=G.size,re=G.color,ae=G.weight,_e=G.style,Me=G.variant,ke=G.textcase,ge=G.lineposition,ie=G.shadow,Te;a==="title.text"?Te="titleText":a.indexOf("axis")!==-1?Te="axisTitleText":a.indexOf("colorbar"!==-1)&&(Te="colorbarTitleText");var Ee=e._context.edits[Te];function Ae(kt,Ct){return kt===void 0||Ct===void 0?!1:kt.replace(Foe," % ")===Ct.replace(Foe," % ")}v===""?h=0:Ae(v,o)&&(Ee||(v=""),h=.2,x=!0),T&&(V===""?X=0:Ae(V,F)&&(Ee||(V=""),X=.2,H=!0)),r._meta?v=Sb.templateString(v,r._meta):n._meta&&(v=Sb.templateString(v,n._meta));var ze=v||V||Ee,Ce;f||(f=Sb.ensureSingle(n._infolayer,"g","g-"+t),Ce=n._hColorbarMoveTitle);var me=f.selectAll("text."+t).data(ze?[0]:[]);me.enter().append("text"),me.text(v).attr("class",t),me.exit().remove();var Re=null,ce=t+"-subtitle",Ge=V||Ee;if(T&&Ge&&(Re=f.selectAll("text."+ce).data(Ge?[0]:[]),Re.enter().append("text"),Re.text(V).attr("class",ce),Re.exit().remove()),!ze)return f;function nt(kt,Ct){Sb.syncOrAsync([ct,qt],{title:kt,subtitle:Ct})}function ct(kt){var Ct=kt.title,Yt=kt.subtitle,xr;!c&&Ce&&(c={}),c?(xr="",c.rotate&&(xr+="rotate("+[c.rotate,u.x,u.y]+")"),(c.offset||Ce)&&(xr+=Doe(0,(c.offset||0)-(Ce||0)))):xr=null,Ct.attr("transform",xr);function er(Et){if(Et){var dt=k3.select(Et.node().parentNode).select("."+ce);if(!dt.empty()){var Ht=Et.node().getBBox();if(Ht.height){var $t=Ht.y+Ht.height+HO*W;dt.attr("y",$t)}}}}if(Ct.style("opacity",h*nL.opacity(k)).call(iL.font,{color:nL.rgb(k),size:k3.round(E,2),family:p,weight:A,style:L,variant:_,textcase:C,shadow:g,lineposition:M}).attr(u).call(C3.convertToTspans,e,er),Yt){var Ke=f.select("."+t+"-math-group"),xt=Ct.node().getBBox(),bt=Ke.node()?Ke.node().getBBox():void 0,Lt=bt?bt.y+bt.height+HO*W:xt.y+xt.height+GO*W,St=Sb.extendFlat({},u,{y:Lt});Yt.attr("transform",xr),Yt.style("opacity",X*nL.opacity(re)).call(iL.font,{color:nL.rgb(re),size:k3.round(W,2),family:N,weight:ae,style:_e,variant:Me,textcase:ke,shadow:ie,lineposition:ge}).attr(St).call(C3.convertToTspans,e)}return Pat.previousPromises(e)}function qt(kt){var Ct=kt.title,Yt=k3.select(Ct.node().parentNode);if(l&&l.selection&&l.side&&v){Yt.attr("transform",null);var xr=Iat[l.side],er=l.side==="left"||l.side==="top"?-1:1,Ke=Lat(l.pad)?l.pad:2,xt=iL.bBox(Yt.node()),bt={t:0,b:0,l:0,r:0},Lt=e._fullLayout._reservedMargin;for(var St in Lt)for(var Et in Lt[St]){var dt=Lt[St][Et];bt[Et]=Math.max(bt[Et],dt)}var Ht={left:bt.l,top:bt.t,right:n.width-bt.r,bottom:n.height-bt.b},$t=l.maxShift||er*(Ht[l.side]-xt[l.side]),fr=0;if($t<0)fr=$t;else{var _r=l.offsetLeft||0,Br=l.offsetTop||0;xt.left-=_r,xt.right-=_r,xt.top-=Br,xt.bottom-=Br,l.selection.each(function(){var Nr=iL.bBox(this);Sb.bBoxIntersect(xt,Nr,Ke)&&(fr=Math.max(fr,er*(Nr[l.side]-xt[xr])+Ke))}),fr=Math.min($t,fr),i._titleScoot=Math.abs(fr)}if(fr>0||$t<0){var Or={left:[-fr,0],right:[fr,0],top:[0,-fr],bottom:[0,fr]}[l.side];Yt.attr("transform",Doe(Or[0],Or[1]))}}}me.call(nt,Re);function rt(kt,Ct){kt.text(Ct).on("mouseover.opacity",function(){k3.select(this).transition().duration(zoe.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){k3.select(this).transition().duration(zoe.HIDE_PLACEHOLDER).style("opacity",0)})}if(Ee&&(v?me.on(".opacity",null):(rt(me,o),x=!0),me.call(C3.makeEditable,{gd:e}).on("edit",function(kt){s!==void 0?VO.call("_guiRestyle",e,a,kt,s):VO.call("_guiRelayout",e,a,kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,u.x,u.y)}),T)){if(T&&!v){var ot=me.node().getBBox(),Rt=ot.y+ot.height+GO*W;Re.attr("y",Rt)}V?Re.on(".opacity",null):(rt(Re,F),H=!0),Re.call(C3.makeEditable,{gd:e}).on("edit",function(kt){VO.call("_guiRelayout",e,"title.subtitle.text",kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,Re.attr("x"),Re.attr("y"))})}return me.classed("js-placeholder",x),Re&&Re.classed("js-placeholder",H),f}qoe.exports={draw:Rat,SUBTITLE_PADDING_EM:GO,SUBTITLE_PADDING_MATHJAX_EM:HO}});var ym=ye((brr,Voe)=>{"use strict";var Dat=xa(),zat=e3().utcFormat,Nu=Mr(),Fat=Nu.numberFormat,gm=uo(),a_=Nu.cleanNumber,qat=Nu.ms2DateTime,Ooe=Nu.dateTime2ms,mm=Nu.ensureNumber,Boe=Nu.isArrayOrTypedArray,o_=es(),aL=o_.FP_SAFE,bg=o_.BADNUM,Oat=o_.LOG_CLIP,Bat=o_.ONEWEEK,oL=o_.ONEDAY,sL=o_.ONEHOUR,Noe=o_.ONEMIN,Uoe=o_.ONESEC,lL=af(),fL=ad(),uL=fL.HOUR_PATTERN,cL=fL.WEEKDAY_PATTERN;function JS(e){return Math.pow(10,e)}function jO(e){return e!=null}Voe.exports=function(t,r){r=r||{};var n=t._id||"x",i=n.charAt(0);function a(A,L){if(A>0)return Math.log(A)/Math.LN10;if(A<=0&&L&&t.range&&t.range.length===2){var _=t.range[0],C=t.range[1];return .5*(_+C-2*Oat*Math.abs(_-C))}else return bg}function o(A,L,_,C){if((C||{}).msUTC&&gm(A))return+A;var M=Ooe(A,_||t.calendar);if(M===bg)if(gm(A)){A=+A;var g=Math.floor(Nu.mod(A+.05,1)*10),P=Math.round(A-g/10);M=Ooe(new Date(P))+g/10}else return bg;return M}function s(A,L,_){return qat(A,L,_||t.calendar)}function l(A){return t._categories[Math.round(A)]}function u(A){if(jO(A)){if(t._categoriesMap===void 0&&(t._categoriesMap={}),t._categoriesMap[A]!==void 0)return t._categoriesMap[A];t._categories.push(typeof A=="number"?String(A):A);var L=t._categories.length-1;return t._categoriesMap[A]=L,L}return bg}function c(A,L){for(var _=new Array(L),C=0;C<L;C++){var M=(A[0]||[])[C],g=(A[1]||[])[C];_[C]=f([M,g])}return _}function f(A){if(t._categoriesMap)return t._categoriesMap[A]}function h(A){var L=f(A);if(L!==void 0)return L;if(gm(A))return+A}function d(A){return gm(A)?+A:f(A)}function v(A,L,_){return Dat.round(_+L*A,2)}function x(A,L,_){return(A-_)/L}var b=function(L){return gm(L)?v(L,t._m,t._b):bg},p=function(A){return x(A,t._m,t._b)};if(t.rangebreaks){var E=i==="y";b=function(A){if(!gm(A))return bg;var L=t._rangebreaks.length;if(!L)return v(A,t._m,t._b);var _=E;t.range[0]>t.range[1]&&(_=!_);for(var C=_?-1:1,M=C*A,g=0,P=0;P<L;P++){var T=C*t._rangebreaks[P].min,F=C*t._rangebreaks[P].max;if(M<T)break;if(M>F)g=P+1;else{g=M<(T+F)/2?P:P+1;break}}var q=t._B[g]||0;return isFinite(q)?v(A,t._m2,q):0},p=function(A){var L=t._rangebreaks.length;if(!L)return x(A,t._m,t._b);for(var _=0,C=0;C<L&&!(A<t._rangebreaks[C].pmin);C++)A>t._rangebreaks[C].pmax&&(_=C+1);return x(A,t._m2,t._B[_])}}t.c2l=t.type==="log"?a:mm,t.l2c=t.type==="log"?JS:mm,t.l2p=b,t.p2l=p,t.c2p=t.type==="log"?function(A,L){return b(a(A,L))}:b,t.p2c=t.type==="log"?function(A){return JS(p(A))}:p,["linear","-"].indexOf(t.type)!==-1?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=a_,t.c2d=t.c2r=t.l2d=t.l2r=mm,t.d2p=t.r2p=function(A){return t.l2p(a_(A))},t.p2d=t.p2r=p,t.cleanPos=mm):t.type==="log"?(t.d2r=t.d2l=function(A,L){return a(a_(A),L)},t.r2d=t.r2c=function(A){return JS(a_(A))},t.d2c=t.r2l=a_,t.c2d=t.l2r=mm,t.c2r=a,t.l2d=JS,t.d2p=function(A,L){return t.l2p(t.d2r(A,L))},t.p2d=function(A){return JS(p(A))},t.r2p=function(A){return t.l2p(a_(A))},t.p2r=p,t.cleanPos=mm):t.type==="date"?(t.d2r=t.r2d=Nu.identity,t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=s,t.d2p=t.r2p=function(A,L,_){return t.l2p(o(A,0,_))},t.p2d=t.p2r=function(A,L,_){return s(p(A),L,_)},t.cleanPos=function(A){return Nu.cleanDate(A,bg,t.calendar)}):t.type==="category"?(t.d2c=t.d2l=u,t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=d(A);return L!==void 0?L:t.fraction2r(.5)},t.l2r=t.c2r=mm,t.r2l=d,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return typeof A=="string"&&A!==""?A:mm(A)}):t.type==="multicategory"&&(t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=h(A);return L!==void 0?L:t.fraction2r(.5)},t.r2c_just_indices=f,t.l2r=t.c2r=mm,t.r2l=h,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return Array.isArray(A)||typeof A=="string"&&A!==""?A:mm(A)},t.setupMultiCategory=function(A){var L=t._traceIndices,_,C,M=t._matchGroup;if(M&&t._categories.length===0){for(var g in M)if(g!==n){var P=r[lL.id2name(g)];L=L.concat(P._traceIndices)}}var T=[[0,{}],[0,{}]],F=[];for(_=0;_<L.length;_++){var q=A[L[_]];if(i in q){var V=q[i],H=q._length||Nu.minRowLength(V);if(Boe(V[0])&&Boe(V[1]))for(C=0;C<H;C++){var X=V[0][C],G=V[1][C];jO(X)&&jO(G)&&(F.push([X,G]),X in T[0][1]||(T[0][1][X]=T[0][0]++),G in T[1][1]||(T[1][1][G]=T[1][0]++))}}}for(F.sort(function(N,W){var re=T[0][1],ae=re[N[0]]-re[W[0]];if(ae)return ae;var _e=T[1][1];return _e[N[1]]-_e[W[1]]}),_=0;_<F.length;_++)u(F[_])}),t.fraction2r=function(A){var L=t.r2l(t.range[0]),_=t.r2l(t.range[1]);return t.l2r(L+A*(_-L))},t.r2fraction=function(A){var L=t.r2l(t.range[0]),_=t.r2l(t.range[1]);return(t.r2l(A)-L)/(_-L)},t.limitRange=function(A){var L=t.minallowed,_=t.maxallowed;if(!(L===void 0&&_===void 0)){A||(A="range");var C=Nu.nestedProperty(t,A).get(),M=Nu.simpleMap(C,t.r2l),g=M[1]<M[0];g&&M.reverse();var P=Nu.simpleMap([L,_],t.r2l);if(L!==void 0&&M[0]<P[0]&&(C[g?1:0]=L),_!==void 0&&M[1]>P[1]&&(C[g?0:1]=_),C[0]===C[1]){var T=t.l2r(L),F=t.l2r(_);if(L!==void 0){var q=T+1;_!==void 0&&(q=Math.min(q,F)),C[g?1:0]=q}if(_!==void 0){var V=F+1;L!==void 0&&(V=Math.max(V,T)),C[g?0:1]=V}}}},t.cleanRange=function(A,L){t._cleanRange(A,L),t.limitRange(A)},t._cleanRange=function(A,L){L||(L={}),A||(A="range");var _=Nu.nestedProperty(t,A).get(),C,M;if(t.type==="date"?M=Nu.dfltRange(t.calendar):i==="y"?M=fL.DFLTRANGEY:t._name==="realaxis"?M=[0,1]:M=L.dfltRange||fL.DFLTRANGEX,M=M.slice(),(t.rangemode==="tozero"||t.rangemode==="nonnegative")&&(M[0]=0),!_||_.length!==2){Nu.nestedProperty(t,A).set(M);return}var g=_[0]===null,P=_[1]===null;for(t.type==="date"&&!t.autorange&&(_[0]=Nu.cleanDate(_[0],bg,t.calendar),_[1]=Nu.cleanDate(_[1],bg,t.calendar)),C=0;C<2;C++)if(t.type==="date"){if(!Nu.isDateTime(_[C],t.calendar)){t[A]=M;break}if(t.r2l(_[0])===t.r2l(_[1])){var T=Nu.constrain(t.r2l(_[0]),Nu.MIN_MS+1e3,Nu.MAX_MS-1e3);_[0]=t.l2r(T-1e3),_[1]=t.l2r(T+1e3);break}}else{if(!gm(_[C]))if(!(g||P)&&gm(_[1-C]))_[C]=_[1-C]*(C?10:.1);else{t[A]=M;break}if(_[C]<-aL?_[C]=-aL:_[C]>aL&&(_[C]=aL),_[0]===_[1]){var F=Math.max(1,Math.abs(_[0]*1e-6));_[0]-=F,_[1]+=F}}},t.setScale=function(A){var L=r._size;if(t.overlaying){var _=lL.getFromId({_fullLayout:r},t.overlaying);t.domain=_.domain}var C=A&&t._r?"_r":"range",M=t.calendar;t.cleanRange(C);var g=t.r2l(t[C][0],M),P=t.r2l(t[C][1],M),T=i==="y";if(T?(t._offset=L.t+(1-t.domain[1])*L.h,t._length=L.h*(t.domain[1]-t.domain[0]),t._m=t._length/(g-P),t._b=-t._m*P):(t._offset=L.l+t.domain[0]*L.w,t._length=L.w*(t.domain[1]-t.domain[0]),t._m=t._length/(P-g),t._b=-t._m*g),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks){var F,q;if(t._rangebreaks=t.locateBreaks(Math.min(g,P),Math.max(g,P)),t._rangebreaks.length){for(F=0;F<t._rangebreaks.length;F++)q=t._rangebreaks[F],t._lBreaks+=Math.abs(q.max-q.min);var V=T;g>P&&(V=!V),V&&t._rangebreaks.reverse();var H=V?-1:1;for(t._m2=H*t._length/(Math.abs(P-g)-t._lBreaks),t._B.push(-t._m2*(T?P:g)),F=0;F<t._rangebreaks.length;F++)q=t._rangebreaks[F],t._B.push(t._B[t._B.length-1]-H*t._m2*(q.max-q.min));for(F=0;F<t._rangebreaks.length;F++)q=t._rangebreaks[F],q.pmin=b(q.min),q.pmax=b(q.max)}}if(!isFinite(t._m)||!isFinite(t._b)||t._length<0)throw r._replotting=!1,new Error("Something went wrong with axis scaling")},t.maskBreaks=function(A){var L=t.rangebreaks||[],_,C,M,g,P;L._cachedPatterns||(L._cachedPatterns=L.map(function(re){return re.enabled&&re.bounds?Nu.simpleMap(re.bounds,re.pattern?a_:t.d2c):null})),L._cachedValues||(L._cachedValues=L.map(function(re){return re.enabled&&re.values?Nu.simpleMap(re.values,t.d2c).sort(Nu.sorterAsc):null}));for(var T=0;T<L.length;T++){var F=L[T];if(F.enabled){if(F.bounds){var q=F.pattern;switch(_=L._cachedPatterns[T],C=_[0],M=_[1],q){case cL:P=new Date(A),g=P.getUTCDay(),C>M&&(M+=7,g<C&&(g+=7));break;case uL:P=new Date(A);var V=P.getUTCHours(),H=P.getUTCMinutes(),X=P.getUTCSeconds(),G=P.getUTCMilliseconds();g=V+(H/60+X/3600+G/36e5),C>M&&(M+=24,g<C&&(g+=24));break;case"":g=A;break}if(g>=C&&g<M)return bg}else for(var N=L._cachedValues[T],W=0;W<N.length;W++)if(C=N[W],M=C+F.dvalue,A>=C&&A<M)return bg}}return A},t.locateBreaks=function(A,L){var _,C,M,g,P=[];if(!t.rangebreaks)return P;var T=t.rangebreaks.slice().sort(function(_e,Me){return _e.pattern===cL&&Me.pattern===uL?-1:Me.pattern===cL&&_e.pattern===uL?1:0}),F=function(_e,Me){if(_e=Nu.constrain(_e,A,L),Me=Nu.constrain(Me,A,L),_e!==Me){for(var ke=!0,ge=0;ge<P.length;ge++){var ie=P[ge];_e<ie.max&&Me>=ie.min&&(_e<ie.min&&(ie.min=_e),Me>ie.max&&(ie.max=Me),ke=!1)}ke&&P.push({min:_e,max:Me})}};for(_=0;_<T.length;_++){var q=T[_];if(q.enabled)if(q.bounds){var V=A,H=L;q.pattern&&(V=Math.floor(V)),C=Nu.simpleMap(q.bounds,q.pattern?a_:t.r2l),M=C[0],g=C[1];var X=new Date(V),G,N;switch(q.pattern){case cL:N=Bat,G=((g<M?7:0)+(g-M))*oL,V+=M*oL-(X.getUTCDay()*oL+X.getUTCHours()*sL+X.getUTCMinutes()*Noe+X.getUTCSeconds()*Uoe+X.getUTCMilliseconds());break;case uL:N=oL,G=((g<M?24:0)+(g-M))*sL,V+=M*sL-(X.getUTCHours()*sL+X.getUTCMinutes()*Noe+X.getUTCSeconds()*Uoe+X.getUTCMilliseconds());break;default:V=Math.min(C[0],C[1]),H=Math.max(C[0],C[1]),N=H-V,G=N}for(var W=V;W<H;W+=N)F(W,W+G)}else for(var re=Nu.simpleMap(q.values,t.d2c),ae=0;ae<re.length;ae++)M=re[ae],g=M+q.dvalue,F(M,g)}return P.sort(function(_e,Me){return _e.min-Me.min}),P},t.makeCalcdata=function(A,L,_){var C,M,g,P,T=t.type,F=T==="date"&&A[L+"calendar"];if(L in A){if(C=A[L],P=A._length||Nu.minRowLength(C),Nu.isTypedArray(C)&&(T==="linear"||T==="log")){if(P===C.length)return C;if(C.subarray)return C.subarray(0,P)}if(T==="multicategory")return c(C,P);for(M=new Array(P),g=0;g<P;g++)M[g]=t.d2c(C[g],0,F,_)}else{var q=L+"0"in A?t.d2c(A[L+"0"],0,F):0,V=A["d"+L]?Number(A["d"+L]):1;for(C=A[{x:"y",y:"x"}[L]],P=A._length||C.length,M=new Array(P),g=0;g<P;g++)M[g]=q+g*V}if(t.rangebreaks)for(g=0;g<P;g++)M[g]=t.maskBreaks(M[g]);return M},t.isValidRange=function(A,L){return Array.isArray(A)&&A.length===2&&(L&&A[0]===null||gm(t.r2l(A[0])))&&(L&&A[1]===null||gm(t.r2l(A[1])))},t.getAutorangeDflt=function(A,L){var _=!t.isValidRange(A,"nullOk");return _&&L&&L.reverseDflt?_="reversed":A&&(A[0]===null&&A[1]===null?_=!0:A[0]===null&&A[1]!==null?_="min":A[0]!==null&&A[1]===null&&(_="max")),_},t.isReversed=function(){var A=t.autorange;return A==="reversed"||A==="min reversed"||A==="max reversed"},t.isPtWithinRange=function(A,L){var _=t.c2l(A[i],null,L),C=t.r2l(t.range[0]),M=t.r2l(t.range[1]);return C<M?C<=_&&_<=M:M<=_&&_<=C},t._emptyCategories=function(){t._categories=[],t._categoriesMap={}},t.clearCalc=function(){var A=t._matchGroup;if(A){var L=null,_=null;for(var C in A){var M=r[lL.id2name(C)];if(M._categories){L=M._categories,_=M._categoriesMap;break}}L&&_?(t._categories=L,t._categoriesMap=_):t._emptyCategories()}else t._emptyCategories();if(t._initialCategories)for(var g=0;g<t._initialCategories.length;g++)u(t._initialCategories[g])},t.sortByInitialCategories=function(){var A=[];if(t._emptyCategories(),t._initialCategories)for(var L=0;L<t._initialCategories.length;L++)u(t._initialCategories[L]);A=A.concat(t._traceIndices);var _=t._matchGroup;for(var C in _)if(n!==C){var M=r[lL.id2name(C)];M._categories=t._categories,M._categoriesMap=t._categoriesMap,A=A.concat(M._traceIndices)}return A};var k=r._d3locale;t.type==="date"&&(t._dateFormat=k?k.timeFormat:zat,t._extraFormat=r._extraFormat),t._separators=r.separators,t._numFormat=k?k.numberFormat:Fat,delete t._minDtick,delete t._forceTick0}});var L3=ye((wrr,Woe)=>{"use strict";var Hoe=uo(),WO=Mr(),Nat=es().BADNUM,hL=WO.isArrayOrTypedArray,Uat=WO.isDateTime,Vat=WO.cleanNumber,Goe=Math.round;Woe.exports=function(t,r,n){var i=t,a=n.noMultiCategory;if(hL(i)&&!i.length)return"-";if(!a&&Zat(i))return"multicategory";if(a&&Array.isArray(i[0])){for(var o=[],s=0;s<i.length;s++)if(hL(i[s]))for(var l=0;l<i[s].length;l++)o.push(i[s][l]);i=o}if(jat(i,r))return"date";var u=n.autotypenumbers!=="strict";return Wat(i,u)?"category":Gat(i,u)?"linear":"-"};function Hat(e,t){return t?Hoe(e):typeof e=="number"}function Gat(e,t){for(var r=e.length,n=0;n<r;n++)if(Hat(e[n],t))return!0;return!1}function jat(e,t){for(var r=e.length,n=joe(r),i=0,a=0,o={},s=0;s<r;s+=n){var l=Goe(s),u=e[l],c=String(u);o[c]||(o[c]=1,Uat(u,t)&&i++,Hoe(u)&&a++)}return i>a*2}function joe(e){return Math.max(1,(e-1)/1e3)}function Wat(e,t){for(var r=e.length,n=joe(r),i=0,a=0,o={},s=0;s<r;s+=n){var l=Goe(s),u=e[l],c=String(u);if(!o[c]){o[c]=1;var f=typeof u;f==="boolean"?a++:(t?Vat(u)!==Nat:f==="number")?i++:f==="string"&&a++}}return a>i*2}function Zat(e){return hL(e[0])&&hL(e[1])}});var wg=ye((Trr,ese)=>{"use strict";var Xat=xa(),Koe=uo(),s_=Mr(),dL=es().FP_SAFE,Yat=ba(),Kat=ao(),Joe=af(),Jat=Joe.getFromId,$at=Joe.isLinked;ese.exports={applyAutorangeOptions:Qoe,getAutoRange:ZO,makePadFn:XO,doAutoRange:eot,findExtremes:tot,concatExtremes:JO};function ZO(e,t){var r,n,i=[],a=e._fullLayout,o=XO(a,t,0),s=XO(a,t,1),l=JO(e,t),u=l.min,c=l.max;if(u.length===0||c.length===0)return s_.simpleMap(t.range,t.r2l);var f=u[0].val,h=c[0].val;for(r=1;r<u.length&&f===h;r++)f=Math.min(f,u[r].val);for(r=1;r<c.length&&f===h;r++)h=Math.max(h,c[r].val);var d=t.autorange,v=d==="reversed"||d==="min reversed"||d==="max reversed";if(!v&&t.range){var x=s_.simpleMap(t.range,t.r2l);v=x[1]<x[0]}t.autorange==="reversed"&&(t.autorange=!0);var b=t.rangemode,p=b==="tozero",E=b==="nonnegative",k=t._length,A=k/10,L=0,_,C,M,g,P,T;for(r=0;r<u.length;r++)for(_=u[r],n=0;n<c.length;n++)C=c[n],T=C.val-_.val-Zoe(t,_.val,C.val),T>0&&(P=k-o(_)-s(C),P>A?T/P>L&&(M=_,g=C,L=T/P):T/k>L&&(M={val:_.val,nopad:1},g={val:C.val,nopad:1},L=T/k));function F(G,N){return Math.max(G,s(N))}if(f===h){var q=f-1,V=f+1;if(p)if(f===0)i=[0,1];else{var H=(f>0?c:u).reduce(F,0),X=f/(1-Math.min(.5,H/k));i=f>0?[0,X]:[X,0]}else E?i=[Math.max(0,q),Math.max(1,V)]:i=[q,V]}else p?(M.val>=0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:0,nopad:1})):E&&(M.val-L*o(M)<0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:1,nopad:1})),L=(g.val-M.val-Zoe(t,_.val,C.val))/(k-o(M)-s(g)),i=[M.val-L*o(M),g.val+L*s(g)];return i=Qoe(i,t),t.limitRange&&t.limitRange(),v&&i.reverse(),s_.simpleMap(i,t.l2r||Number)}function Zoe(e,t,r){var n=0;if(e.rangebreaks)for(var i=e.locateBreaks(t,r),a=0;a<i.length;a++){var o=i[a];n+=o.max-o.min}return n}function XO(e,t,r){var n=.05*t._length,i=t._anchorAxis||{};if((t.ticklabelposition||"").indexOf("inside")!==-1||(i.ticklabelposition||"").indexOf("inside")!==-1){var a=t.isReversed();if(!a){var o=s_.simpleMap(t.range,t.r2l);a=o[1]<o[0]}a&&(r=!r)}var s=0;return $at(e,t._id)||(s=Qat(e,t,r)),n=Math.max(s,n),t.constrain==="domain"&&t._inputDomain&&(n*=(t._inputDomain[1]-t._inputDomain[0])/(t.domain[1]-t.domain[0])),function(u){return u.nopad?0:u.pad+(u.extrapad?n:s)}}var Xoe=3;function Qat(e,t,r){var n=0,i=t._id.charAt(0)==="x";for(var a in e._plots){var o=e._plots[a];if(!(t._id!==o.xaxis._id&&t._id!==o.yaxis._id)){var s=(i?o.yaxis:o.xaxis)||{};if((s.ticklabelposition||"").indexOf("inside")!==-1&&(!r&&(s.side==="left"||s.side==="bottom")||r&&(s.side==="top"||s.side==="right"))){if(s._vals){var l=s_.deg2rad(s._tickAngles[s._id+"tick"]||0),u=Math.abs(Math.cos(l)),c=Math.abs(Math.sin(l));if(!s._vals[0].bb){var f=s._id+"tick",h=s._selections[f];h.each(function(E){var k=Xat.select(this),A=k.select(".text-math-group");A.empty()&&(E.bb=Kat.bBox(k.node()))})}for(var d=0;d<s._vals.length;d++){var v=s._vals[d],x=v.bb;if(x){var b=2*Xoe+x.width,p=2*Xoe+x.height;n=Math.max(n,i?Math.max(b*u,p*c):Math.max(p*u,b*c))}}}s.ticks==="inside"&&s.ticklabelposition==="inside"&&(n+=s.ticklen||0)}}}return n}function JO(e,t,r){var n=t._id,i=e._fullData,a=e._fullLayout,o=[],s=[],l,u,c;function f(b,p){for(l=0;l<p.length;l++){var E=b[p[l]],k=(E._extremes||{})[n];if(E.visible===!0&&k){for(u=0;u<k.min.length;u++)c=k.min[u],YO(o,c.val,c.pad,{extrapad:c.extrapad});for(u=0;u<k.max.length;u++)c=k.max[u],KO(s,c.val,c.pad,{extrapad:c.extrapad})}}}if(f(i,t._traceIndices),f(a.annotations||[],t._annIndices||[]),f(a.shapes||[],t._shapeIndices||[]),t._matchGroup&&!r){for(var h in t._matchGroup)if(h!==t._id){var d=Jat(e,h),v=JO(e,d,!0),x=t._length/d._length;for(u=0;u<v.min.length;u++)c=v.min[u],YO(o,c.val,c.pad*x,{extrapad:c.extrapad});for(u=0;u<v.max.length;u++)c=v.max[u],KO(s,c.val,c.pad*x,{extrapad:c.extrapad})}}return{min:o,max:s}}function eot(e,t,r){if(t.setScale(),t.autorange){t.range=r?r.slice():ZO(e,t),t._r=t.range.slice(),t._rl=s_.simpleMap(t._r,t.r2l);var n=t._input,i={};i[t._attr+".range"]=t.range,i[t._attr+".autorange"]=t.autorange,Yat.call("_storeDirectGUIEdit",e.layout,e._fullLayout._preGUI,i),n.range=t.range.slice(),n.autorange=t.autorange}var a=t._anchorAxis;if(a&&a.rangeslider){var o=a.rangeslider[t._name];o&&o.rangemode==="auto"&&(o.range=ZO(e,t)),a._input.rangeslider[t._name]=s_.extendFlat({},o)}}function tot(e,t,r){r||(r={}),e._m||e.setScale();var n=[],i=[],a=t.length,o=r.padded||!1,s=r.tozero&&(e.type==="linear"||e.type==="-"),l=e.type==="log",u=!1,c=r.vpadLinearized||!1,f,h,d,v,x,b,p,E,k;function A(F){if(Array.isArray(F))return u=!0,function(V){return Math.max(Number(F[V]||0),0)};var q=Math.max(Number(F||0),0);return function(){return q}}var L=A((e._m>0?r.ppadplus:r.ppadminus)||r.ppad||0),_=A((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),C=A(r.vpadplus||r.vpad),M=A(r.vpadminus||r.vpad);if(!u){if(E=1/0,k=-1/0,l)for(f=0;f<a;f++)h=t[f],h<E&&h>0&&(E=h),h>k&&h<dL&&(k=h);else for(f=0;f<a;f++)h=t[f],h<E&&h>-dL&&(E=h),h>k&&h<dL&&(k=h);t=[E,k],a=2}var g={tozero:s,extrapad:o};function P(F){d=t[F],Koe(d)&&(b=L(F),p=_(F),c?(v=e.c2l(d)-M(F),x=e.c2l(d)+C(F)):(E=d-M(F),k=d+C(F),l&&E<k/10&&(E=k/10),v=e.c2l(E),x=e.c2l(k)),s&&(v=Math.min(0,v),x=Math.max(0,x)),Yoe(v)&&YO(n,v,p,g),Yoe(x)&&KO(i,x,b,g))}var T=Math.min(6,a);for(f=0;f<T;f++)P(f);for(f=a-1;f>=T;f--)P(f);return{min:n,max:i,opts:r}}function YO(e,t,r,n){$oe(e,t,r,n,rot)}function KO(e,t,r,n){$oe(e,t,r,n,iot)}function $oe(e,t,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l<e.length&&s;l++){var u=e[l];if(i(u.val,t)&&u.pad>=r&&(u.extrapad||!o)){s=!1;break}else i(t,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(e.splice(l,1),l--)}if(s){var c=a&&t===0;e.push({val:t,pad:c?0:r,extrapad:c?!1:o})}}function Yoe(e){return Koe(e)&&Math.abs(e)<dL}function rot(e,t){return e<=t}function iot(e,t){return e>=t}function not(e,t){var r=t.autorangeoptions;return r&&r.minallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.minallowed:r&&r.clipmin!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.max(e,t.d2l(r.clipmin)):e}function aot(e,t){var r=t.autorangeoptions;return r&&r.maxallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.maxallowed:r&&r.clipmax!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.min(e,t.d2l(r.clipmax)):e}function vL(e,t,r){return t!==void 0&&r!==void 0?(t=e.d2l(t),r=e.d2l(r),t<r):!0}function Qoe(e,t){if(!t||!t.autorangeoptions)return e;var r=e[0],n=e[1],i=t.autorangeoptions.include;if(i!==void 0){var a=t.d2l(r),o=t.d2l(n);s_.isArrayOrTypedArray(i)||(i=[i]);for(var s=0;s<i.length;s++){var l=t.d2l(i[s]);a>=l&&(a=l,r=l),o<=l&&(o=l,n=l)}}return r=not(r,t),n=aot(n,t),[r,n]}});var Qa=ye((Arr,wse)=>{"use strict";var w0=xa(),ph=uo(),P3=Xu(),QS=ba(),Vo=Mr(),I3=Vo.strTranslate,Eb=Pl(),oot=Mb(),eM=va(),Xp=ao(),sot=Cd(),tse=bO(),Yd=es(),lot=Yd.ONEMAXYEAR,mL=Yd.ONEAVGYEAR,yL=Yd.ONEMINYEAR,uot=Yd.ONEMAXQUARTER,tB=Yd.ONEAVGQUARTER,_L=Yd.ONEMINQUARTER,cot=Yd.ONEMAXMONTH,R3=Yd.ONEAVGMONTH,xL=Yd.ONEMINMONTH,Yp=Yd.ONEWEEK,Fv=Yd.ONEDAY,l_=Fv/2,xm=Yd.ONEHOUR,tM=Yd.ONEMIN,bL=Yd.ONESEC,fot=Yd.ONEMILLI,hot=Yd.ONEMICROSEC,kb=Yd.MINUS_SIGN,AL=Yd.BADNUM,rB={K:"zeroline"},iB={K:"gridline",L:"path"},nB={K:"minor-gridline",L:"path"},hse={K:"tick",L:"path"},rse={K:"tick",L:"text"},ise={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},SL=Nh(),$S=SL.MID_SHIFT,Cb=SL.CAP_SHIFT,rM=SL.LINE_SPACING,dot=SL.OPPOSITE_SIDE,wL=3,kn=wse.exports={};kn.setConvert=ym();var vot=L3(),Ay=af(),pot=Ay.idSort,got=Ay.isLinked;kn.id2name=Ay.id2name;kn.name2id=Ay.name2id;kn.cleanId=Ay.cleanId;kn.list=Ay.list;kn.listIds=Ay.listIds;kn.getFromId=Ay.getFromId;kn.getFromTrace=Ay.getFromTrace;var dse=wg();kn.getAutoRange=dse.getAutoRange;kn.findExtremes=dse.findExtremes;var mot=1e-4;function lB(e){var t=(e[1]-e[0])*mot;return[e[0]-t,e[1]+t]}kn.coerceRef=function(e,t,r,n,i,a){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],l=n+"ref",u={};return i||(i=s[0]||(typeof a=="string"?a:a[0])),a||(a=i),s=s.concat(s.map(function(c){return c+" domain"})),u[l]={valType:"enumerated",values:s.concat(a?typeof a=="string"?[a]:a:[]),dflt:i},Vo.coerce(e,t,u,l)};kn.getRefType=function(e){return e===void 0?e:e==="paper"?"paper":e==="pixel"?"pixel":/( domain)$/.test(e)?"domain":"range"};kn.coercePosition=function(e,t,r,n,i,a){var o,s,l=kn.getRefType(n);if(l!=="range")o=Vo.ensureNumber,s=r(i,a);else{var u=kn.getFromId(t,n);a=u.fraction2r(a),s=r(i,a),o=u.cleanPos}e[i]=o(s)};kn.cleanPosition=function(e,t,r){var n=r==="paper"||r==="pixel"?Vo.ensureNumber:kn.getFromId(t,r).cleanPos;return n(e)};kn.redrawComponents=function(e,t){t=t||kn.listIds(e);var r=e._fullLayout;function n(i,a,o,s){for(var l=QS.getComponentMethod(i,a),u={},c=0;c<t.length;c++)for(var f=r[kn.id2name(t[c])],h=f[o],d=0;d<h.length;d++){var v=h[d];if(!u[v]&&(l(e,v),u[v]=1,s))return}}n("annotations","drawOne","_annIndices"),n("shapes","drawOne","_shapeIndices"),n("images","draw","_imgIndices",!0),n("selections","drawOne","_selectionIndices")};var yot=kn.getDataConversions=function(e,t,r,n){var i,a=r==="x"||r==="y"||r==="z"?r:n;if(Vo.isArrayOrTypedArray(a)){if(i={type:vot(n,void 0,{autotypenumbers:e._fullLayout.autotypenumbers}),_categories:[]},kn.setConvert(i),i.type==="category")for(var o=0;o<n.length;o++)i.d2c(n[o])}else i=kn.getFromTrace(e,t,a);return i?{d2c:i.d2c,c2d:i.c2d}:a==="ids"?{d2c:ase,c2d:ase}:{d2c:nse,c2d:nse}};function nse(e){return+e}function ase(e){return String(e)}kn.getDataToCoordFunc=function(e,t,r,n){return yot(e,t,r,n).d2c};kn.counterLetter=function(e){var t=e.charAt(0);if(t==="x")return"y";if(t==="y")return"x"};kn.minDtick=function(e,t,r,n){["log","category","multicategory"].indexOf(e.type)!==-1||!n?e._minDtick=0:e._minDtick===void 0?(e._minDtick=t,e._forceTick0=r):e._minDtick&&((e._minDtick/t+1e-6)%1<2e-6&&((r-e._forceTick0)/t%1+1.000001)%1<2e-6?(e._minDtick=t,e._forceTick0=r):((t/e._minDtick+1e-6)%1>2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0))};kn.saveRangeInitial=function(e,t){for(var r=kn.list(e,"",!0),n=!1,i=0;i<r.length;i++){var a=r[i],o=a._rangeInitial0===void 0&&a._rangeInitial1===void 0,s=o||a.range[0]!==a._rangeInitial0||a.range[1]!==a._rangeInitial1,l=a.autorange;(o&&l!==!0||t&&s)&&(a._rangeInitial0=l==="min"||l==="max reversed"?void 0:a.range[0],a._rangeInitial1=l==="max"||l==="min reversed"?void 0:a.range[1],a._autorangeInitial=l,n=!0)}return n};kn.saveShowSpikeInitial=function(e,t){for(var r=kn.list(e,"",!0),n=!1,i="on",a=0;a<r.length;a++){var o=r[a],s=o._showSpikeInitial===void 0,l=s||o.showspikes!==o._showspikes;(s||t&&l)&&(o._showSpikeInitial=o.showspikes,n=!0),i==="on"&&!o.showspikes&&(i="off")}return e._fullLayout._cartesianSpikesEnabled=i,n};kn.autoBin=function(e,t,r,n,i,a){var o=Vo.aggNums(Math.min,null,e),s=Vo.aggNums(Math.max,null,e);if(t.type==="category"||t.type==="multicategory")return{start:o-.5,end:s+.5,size:Math.max(1,Math.round(a)||1),_dataSpan:s-o};i||(i=t.calendar);var l;if(t.type==="log"?l={type:"linear",range:[o,s]}:l={type:t.type,range:Vo.simpleMap([o,s],t.c2r,0,i),calendar:i},kn.setConvert(l),a=a&&tse.dtick(a,l.type),a)l.dtick=a,l.tick0=tse.tick0(void 0,l.type,i);else{var u;if(r)u=(s-o)/r;else{var c=Vo.distinctVals(e),f=Math.pow(10,Math.floor(Math.log(c.minDiff)/Math.LN10)),h=f*Vo.roundUp(c.minDiff/f,[.9,1.9,4.9,9.9],!0);u=Math.max(h,2*Vo.stdev(e)/Math.pow(e.length,n?.25:.4)),ph(u)||(u=1)}kn.autoTicks(l,u)}var d=l.dtick,v=kn.tickIncrement(kn.tickFirst(l),d,"reverse",i),x,b;if(typeof d=="number")v=_ot(v,e,l,o,s),b=1+Math.floor((s-v)/d),x=v+b*d;else for(l.dtick.charAt(0)==="M"&&(v=xot(v,e,d,o,i)),x=v,b=0;x<=s;)x=kn.tickIncrement(x,d,!1,i),b++;return{start:t.c2r(v,0,i),end:t.c2r(x,0,i),size:d,_dataSpan:s-o}};function _ot(e,t,r,n,i){var a=0,o=0,s=0,l=0;function u(d){return(1+(d-e)*100/r.dtick)%100<2}for(var c=0;c<t.length;c++)t[c]%1===0?s++:ph(t[c])||l++,u(t[c])&&a++,u(t[c]+r.dtick/2)&&o++;var f=t.length-l;if(s===f&&r.type!=="date")r.dtick<1?e=n-.5*r.dtick:(e-=.5,e+r.dtick<n&&(e+=r.dtick));else if(o<f*.1&&(a>f*.3||u(n)||u(i))){var h=r.dtick/2;e+=e+h<n?h:-h}return e}function xot(e,t,r,n,i){var a=Vo.findExactDates(t,i),o=.8;if(a.exactDays>o){var s=Number(r.substr(1));a.exactYears>o&&s%12===0?e=kn.tickIncrement(e,"M6","reverse")+Fv*1.5:a.exactMonths>o?e=kn.tickIncrement(e,"M1","reverse")+Fv*15.5:e-=l_;var l=kn.tickIncrement(e,r);if(l<=n)return l}return e}kn.prepMinorTicks=function(e,t,r){if(!t.minor.dtick){delete e.dtick;var n=t.dtick&&ph(t._tmin),i;if(n){var a=kn.tickIncrement(t._tmin,t.dtick,!0);i=[t._tmin,a*.99+t._tmin*.01]}else{var o=Vo.simpleMap(t.range,t.r2l);i=[o[0],.8*o[0]+.2*o[1]]}if(e.range=Vo.simpleMap(i,t.l2r),e._isMinor=!0,kn.prepTicks(e,r),n){var s=ph(t.dtick),l=ph(e.dtick),u=s?t.dtick:+t.dtick.substring(1),c=l?e.dtick:+e.dtick.substring(1);s&&l?$O(u,c)?u===2*Yp&&c===2*Fv&&(e.dtick=Yp):u===2*Yp&&c===3*Fv?e.dtick=Yp:u===Yp&&!(t._input.minor||{}).nticks?e.dtick=Fv:ose(u/c,2.5)?e.dtick=u/2:e.dtick=u:String(t.dtick).charAt(0)==="M"?l?e.dtick="M1":$O(u,c)?u>=12&&c===2&&(e.dtick="M3"):e.dtick=t.dtick:String(e.dtick).charAt(0)==="L"?String(t.dtick).charAt(0)==="L"?$O(u,c)||(e.dtick=ose(u/c,2.5)?t.dtick/2:t.dtick):e.dtick="D1":e.dtick==="D2"&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}t.minor._tick0Init===void 0&&(e.tick0=t.tick0)};function $O(e,t){return Math.abs((e/t+.5)%1-.5)<.001}function ose(e,t){return Math.abs(e/t-1)<.001}kn.prepTicks=function(e,t){var r=Vo.simpleMap(e.range,e.r2l,void 0,void 0,t);if(e.tickmode==="auto"||!e.dtick){var n=e.nticks,i;n||(e.type==="category"||e.type==="multicategory"?(i=e.tickfont?Vo.bigFont(e.tickfont.size||12):15,n=e._length/i):(i=e._id.charAt(0)==="y"?40:80,n=Vo.constrain(e._length/i,4,9)+1),e._name==="radialaxis"&&(n*=2)),e.minor&&e.minor.tickmode!=="array"||e.tickmode==="array"&&(n*=100),e._roughDTick=Math.abs(r[1]-r[0])/n,kn.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick<e._minDtick*2&&(e.dtick=e._minDtick,e.tick0=e.l2r(e._forceTick0))}e.ticklabelmode==="period"&&bot(e),e.tick0||(e.tick0=e.type==="date"?"2000-01-01":0),e.type==="date"&&e.dtick<.1&&(e.dtick=.1),mse(e)};function QO(e){return+e.substring(1)}function bot(e){var t;function r(){return!(ph(e.dtick)||e.dtick.charAt(0)!=="M")}var n=r(),i=kn.getTickFormat(e);if(i){var a=e._dtickInit!==e.dtick;/%[fLQsSMX]/.test(i)||(/%[HI]/.test(i)?(t=xm,a&&!n&&e.dtick<xm&&(e.dtick=xm)):/%p/.test(i)?(t=l_,a&&!n&&e.dtick<l_&&(e.dtick=l_)):/%[Aadejuwx]/.test(i)?(t=Fv,a&&!n&&e.dtick<Fv&&(e.dtick=Fv)):/%[UVW]/.test(i)?(t=Yp,a&&!n&&e.dtick<Yp&&(e.dtick=Yp)):/%[Bbm]/.test(i)?(t=R3,a&&(n?QO(e.dtick)<1:e.dtick<xL)&&(e.dtick="M1")):/%[q]/.test(i)?(t=tB,a&&(n?QO(e.dtick)<3:e.dtick<_L)&&(e.dtick="M3")):/%[Yy]/.test(i)&&(t=mL,a&&(n?QO(e.dtick)<12:e.dtick<yL)&&(e.dtick="M12")))}n=r(),n&&e.tick0===e._dowTick0&&(e.tick0=e._rawTick0),e._definedDelta=t}function wot(e,t,r){for(var n=0;n<e.length;n++){var i=e[n].value,a=n,o=n+1;n<e.length-1?(a=n,o=n+1):n>0?(a=n-1,o=n):(a=n,o=n);var s=e[a].value,l=e[o].value,u=Math.abs(l-s),c=r||u,f=0;c>=yL?u>=yL&&u<=lot?f=u:f=mL:r===tB&&c>=_L?u>=_L&&u<=uot?f=u:f=tB:c>=xL?u>=xL&&u<=cot?f=u:f=R3:r===Yp&&c>=Yp?f=Yp:c>=Fv?f=Fv:r===l_&&c>=l_?f=l_:r===xm&&c>=xm&&(f=xm);var h;f>=u&&(f=u,h=!0);var d=i+f;if(t.rangebreaks&&f>0){for(var v=84,x=0,b=0;b<v;b++){var p=(b+.5)/v;t.maskBreaks(i*(1-p)+p*d)!==AL&&x++}f*=x/v,f||(e[n].drop=!0),h&&u>Yp&&(f=u)}(f>0||n===0)&&(e[n].periodX=i+f/2)}}kn.calcTicks=function(t,r){for(var n=t.type,i=t.calendar,a=t.ticklabelstep,o=t.ticklabelmode==="period",s=t.range[0]>t.range[1],l=!t.ticklabelindex||Vo.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=Vo.simpleMap(t.range,t.r2l,void 0,void 0,r),c=u[1]<u[0],f=Math.min(u[0],u[1]),h=Math.max(u[0],u[1]),d=Math.max(1e3,t._length||0),v=[],x=[],b=[],p=[],E=[],k=t.minor&&(t.minor.ticks||t.minor.showgrid),A=1;A>=(k?0:1);A--){var L=!A;A?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var _=A?t:Vo.extendFlat({},t,t.minor);if(L?kn.prepMinorTicks(_,t,r):kn.prepTicks(_,r),_.tickmode==="array"){A?(b=[],v=sse(t,!L)):(p=[],x=sse(t,!L));continue}if(_.tickmode==="sync"){b=[],v=Tot(t);continue}var C=lB(u),M=C[0],g=C[1],P=ph(_.dtick),T=n==="log"&&!(P||_.dtick.charAt(0)==="L"),F=kn.tickFirst(_,r);if(A){if(t._tmin=F,F<M!==c)break;(n==="category"||n==="multicategory")&&(g=c?Math.max(-.5,g):Math.min(t._categories.length-.5,g))}var q=null,V=F,H;if(A){var X;P?X=t.dtick:n==="date"?typeof t.dtick=="string"&&t.dtick.charAt(0)==="M"&&(X=R3*t.dtick.substring(1)):X=t._roughDTick,H=Math.round((t.r2l(V)-t.r2l(t.tick0))/X)-1}var G=_.dtick;for(_.rangebreaks&&_._tick0Init!==_.tick0&&(V=eB(V,t),c||(V=kn.tickIncrement(V,G,!c,i))),A&&o&&(V=kn.tickIncrement(V,G,!c,i),H--);c?V>=g:V<=g;V=kn.tickIncrement(V,G,c,i)){if(A&&H++,_.rangebreaks&&!c){if(V<M)continue;if(_.maskBreaks(V)===AL&&eB(V,_)>=h)break}if(b.length>d||V===q)break;q=V;var N={value:V};A?(T&&V!==(V|0)&&(N.simpleLabel=!0),a>1&&H%a&&(N.skipLabel=!0),b.push(N)):(N.minor=!0,p.push(N))}}if(!p||p.length<2)l=!1;else{var W=(p[1].value-p[0].value)*(s?-1:1);Zot(W,t.tickformat)||(l=!1)}if(!l)E=b;else{var re=b.concat(p);o&&b.length&&(re=re.slice(1)),re=re.sort(function(Rt,kt){return Rt.value-kt.value}).filter(function(Rt,kt,Ct){return kt===0||Rt.value!==Ct[kt-1].value});var ae=re.map(function(Rt,kt){return Rt.minor===void 0&&!Rt.skipLabel?kt:null}).filter(function(Rt){return Rt!==null});ae.forEach(function(Rt){l.map(function(kt){var Ct=Rt+kt;Ct>=0&&Ct<re.length&&Vo.pushUnique(E,re[Ct])})})}if(k){var _e=t.minor.ticks==="inside"&&t.ticks==="outside"||t.minor.ticks==="outside"&&t.ticks==="inside";if(!_e){for(var Me=b.map(function(Rt){return Rt.value}),ke=[],ge=0;ge<p.length;ge++){var ie=p[ge],Te=ie.value;if(Me.indexOf(Te)===-1){for(var Ee=!1,Ae=0;!Ee&&Ae<b.length;Ae++)1e7+b[Ae].value===1e7+Te&&(Ee=!0);Ee||ke.push(ie)}}p=ke}}o&&wot(E,t,t._definedDelta);var ze;if(t.rangebreaks){var Ce=t._id.charAt(0)==="y",me=1;t.tickmode==="auto"&&(me=t.tickfont?t.tickfont.size:12);var Re=NaN;for(ze=b.length-1;ze>-1;ze--){if(b[ze].drop){b.splice(ze,1);continue}b[ze].value=eB(b[ze].value,t);var ce=t.c2p(b[ze].value);(Ce?Re>ce-me:Re<ce+me)?b.splice(c?ze+1:ze,1):Re=ce}}fB(t)&&Math.abs(u[1]-u[0])===360&&b.pop(),t._tmax=(b[b.length-1]||{}).value,t._prevDateHead="",t._inCalcTicks=!0;var Ge,nt=function(Rt){Rt.text="",t._prevDateHead=Ge};b=b.concat(p);function ct(Rt,kt){var Ct=kn.tickText(Rt,kt.value,!1,kt.simpleLabel),Yt=kt.periodX;return Yt!==void 0&&(Ct.periodX=Yt,(Yt>h||Yt<f)&&(Yt>h&&(Ct.periodX=h),Yt<f&&(Ct.periodX=f),nt(Ct))),Ct}var qt;for(ze=0;ze<b.length;ze++){var rt=b[ze].minor,ot=b[ze].value;rt?(l&&E.indexOf(b[ze])!==-1?qt=ct(t,b[ze]):qt={x:ot},qt.minor=!0,x.push(qt)):(Ge=t._prevDateHead,qt=ct(t,b[ze]),(b[ze].skipLabel||l&&E.indexOf(b[ze])===-1)&&nt(qt),v.push(qt))}return v=v.concat(x),t._inCalcTicks=!1,o&&v.length&&(v[0].noTick=!0),v};function vse(e,t){return e.rangebreaks&&(t=t.filter(function(r){return e.maskBreaks(r.x)!==AL})),t}function Tot(e){var t=e._mainAxis,r=[];if(t._vals){for(var n=0;n<t._vals.length;n++)if(!t._vals[n].noTick){var i=t.l2p(t._vals[n].x),a=e.p2l(i),o=kn.tickText(e,a);t._vals[n].minor&&(o.minor=!0,o.text=""),r.push(o)}}return r=vse(e,r),r}function sse(e,t){var r=Vo.simpleMap(e.range,e.r2l),n=lB(r),i=Math.min(n[0],n[1]),a=Math.max(n[0],n[1]),o=e.type==="category"?e.d2l_noadd:e.d2l;e.type==="log"&&String(e.dtick).charAt(0)!=="L"&&(e.dtick="L"+Math.pow(10,Math.floor(Math.min(e.range[0],e.range[1]))-1));for(var s=[],l=0;l<=1;l++)if(!(t!==void 0&&(t&&l||t===!1&&!l))&&!(l&&!e.minor)){var u=l?e.minor.tickvals:e.tickvals,c=l?[]:e.ticktext;if(u){Vo.isArrayOrTypedArray(c)||(c=[]);for(var f=0;f<u.length;f++){var h=o(u[f]);if(h>i&&h<a){var d=kn.tickText(e,h,!1,String(c[f]));l&&(d.minor=!0,d.text=""),s.push(d)}}}}return s=vse(e,s),s}var pL=[2,5,10],lse=[1,2,3,6,12],use=[1,2,5,10,15,30],Aot=[1,2,3,7,14],pse=[-.046,0,.301,.477,.602,.699,.778,.845,.903,.954,1],gse=[-.301,0,.301,.699,1],Sot=[15,30,45,90,180];function _m(e,t,r){return t*Vo.roundUp(e/t,r)}kn.autoTicks=function(e,t,r){var n;function i(f){return Math.pow(f,Math.floor(Math.log(t)/Math.LN10))}if(e.type==="date"){e.tick0=Vo.dateTick0(e.calendar,0);var a=2*t;if(a>mL)t/=mL,n=i(10),e.dtick="M"+12*_m(t,n,pL);else if(a>R3)t/=R3,e.dtick="M"+_m(t,1,lse);else if(a>Fv){if(e.dtick=_m(t,Fv,e._hasDayOfWeekBreaks?[1,2,7,14]:Aot),!r){var o=kn.getTickFormat(e),s=e.ticklabelmode==="period";s&&(e._rawTick0=e.tick0),/%[uVW]/.test(o)?e.tick0=Vo.dateTick0(e.calendar,2):e.tick0=Vo.dateTick0(e.calendar,1),s&&(e._dowTick0=e.tick0)}}else a>xm?e.dtick=_m(t,xm,lse):a>tM?e.dtick=_m(t,tM,use):a>bL?e.dtick=_m(t,bL,use):(n=i(10),e.dtick=_m(t,n,pL))}else if(e.type==="log"){e.tick0=0;var l=Vo.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(l[1]-l[0])<1){var u=1.5*Math.abs((l[1]-l[0])/t);t=Math.abs(Math.pow(10,l[1])-Math.pow(10,l[0]))/u,n=i(10),e.dtick="L"+_m(t,n,pL)}else e.dtick=t>.3?"D2":"D1"}else e.type==="category"||e.type==="multicategory"?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):fB(e)?(e.tick0=0,n=1,e.dtick=_m(t,n,Sot)):(e.tick0=0,n=i(10),e.dtick=_m(t,n,pL));if(e.dtick===0&&(e.dtick=1),!ph(e.dtick)&&typeof e.dtick!="string"){var c=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(c)}};function mse(e){var t=e.dtick;if(e._tickexponent=0,!ph(t)&&typeof t!="string"&&(t=1),(e.type==="category"||e.type==="multicategory")&&(e._tickround=null),e.type==="date"){var r=e.r2l(e.tick0),n=e.l2r(r).replace(/(^-|i)/g,""),i=n.length;if(String(t).charAt(0)==="M")i>10||n.substr(5)!=="01-01"?e._tickround="d":e._tickround=+t.substr(1)%12===0?"y":"m";else if(t>=Fv&&i<=10||t>=Fv*15)e._tickround="d";else if(t>=tM&&i<=16||t>=xm)e._tickround="M";else if(t>=bL&&i<=19||t>=tM)e._tickround="S";else{var a=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,a)-20,e._tickround<0&&(e._tickround=4)}}else if(ph(t)||t.charAt(0)==="L"){var o=e.range.map(e.r2d||Number);ph(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(o[0]),Math.abs(o[1])),l=Math.floor(Math.log(s)/Math.LN10+.01),u=e.minexponent===void 0?3:e.minexponent;Math.abs(l)>u&&(TL(e.exponentformat)&&!uB(l)?e._tickexponent=3*Math.round((l-1)/3):e._tickexponent=l)}else e._tickround=null}kn.tickIncrement=function(e,t,r,n){var i=r?-1:1;if(ph(t))return Vo.increment(e,i*t);var a=t.charAt(0),o=i*Number(t.substr(1));if(a==="M")return Vo.incrementMonth(e,o,n);if(a==="L")return Math.log(Math.pow(10,e)+o)/Math.LN10;if(a==="D"){var s=t==="D2"?gse:pse,l=e+i*.01,u=Vo.roundUp(Vo.mod(l,1),s,r);return Math.floor(l)+Math.log(w0.round(Math.pow(10,u),1))/Math.LN10}throw"unrecognized dtick "+String(t)};kn.tickFirst=function(e,t){var r=e.r2l||Number,n=Vo.simpleMap(e.range,r,void 0,void 0,t),i=n[1]<n[0],a=i?Math.floor:Math.ceil,o=lB(n)[0],s=e.dtick,l=r(e.tick0);if(ph(s)){var u=a((o-l)/s)*s+l;return(e.type==="category"||e.type==="multicategory")&&(u=Vo.constrain(u,0,e._categories.length-1)),u}var c=s.charAt(0),f=Number(s.substr(1));if(c==="M"){for(var h=0,d=l,v,x,b;h<10;){if(v=kn.tickIncrement(d,s,i,e.calendar),(v-o)*(d-o)<=0)return i?Math.min(d,v):Math.max(d,v);x=(o-(d+v)/2)/(v-d),b=c+(Math.abs(Math.round(x))||1)*f,d=kn.tickIncrement(d,b,x<0?!i:i,e.calendar),h++}return Vo.error("tickFirst did not converge",e),d}else{if(c==="L")return Math.log(a((Math.pow(10,o)-l)/f)*f+l)/Math.LN10;if(c==="D"){var p=s==="D2"?gse:pse,E=Vo.roundUp(Vo.mod(o,1),p,i);return Math.floor(o)+Math.log(w0.round(Math.pow(10,E),1))/Math.LN10}else throw"unrecognized dtick "+String(s)}};kn.tickText=function(e,t,r,n){var i=yse(e,t),a=e.tickmode==="array",o=r||a,s=e.type,l=s==="category"?e.d2l_noadd:e.d2l,u,c=function(b){var p=e.l2p(b);return p>=0&&p<=e._length?b:null};if(a&&Vo.isArrayOrTypedArray(e.ticktext)){var f=Vo.simpleMap(e.range,e.r2l),h=(Math.abs(f[1]-f[0])-(e._lBreaks||0))/1e4;for(u=0;u<e.ticktext.length&&!(Math.abs(t-l(e.tickvals[u]))<h);u++);if(u<e.ticktext.length)return i.text=String(e.ticktext[u]),i.xbnd=[c(i.x-.5),c(i.x+e.dtick-.5)],i}function d(b){if(b===void 0)return!0;if(r)return b==="none";var p={first:e._tmin,last:e._tmax}[b];return b!=="all"&&t!==p}var v=r?"never":e.exponentformat!=="none"&&d(e.showexponent)?"hide":"";if(s==="date"?Mot(e,i,r,o):s==="log"?Eot(e,i,r,o,v):s==="category"?kot(e,i):s==="multicategory"?Cot(e,i,r):fB(e)?Pot(e,i,r,o,v):Lot(e,i,r,o,v),n||(e.tickprefix&&!d(e.showtickprefix)&&(i.text=e.tickprefix+i.text),e.ticksuffix&&!d(e.showticksuffix)&&(i.text+=e.ticksuffix)),e.labelalias&&e.labelalias.hasOwnProperty(i.text)){var x=e.labelalias[i.text];typeof x=="string"&&(i.text=x)}return(e.tickson==="boundaries"||e.showdividers)&&(i.xbnd=[c(i.x-.5),c(i.x+e.dtick-.5)]),i};kn.hoverLabelText=function(e,t,r){r&&(e=Vo.extendFlat({},e,{hoverformat:r}));var n=Vo.isArrayOrTypedArray(t)?t[0]:t,i=Vo.isArrayOrTypedArray(t)?t[1]:void 0;if(i!==void 0&&i!==n)return kn.hoverLabelText(e,n,r)+" - "+kn.hoverLabelText(e,i,r);var a=e.type==="log"&&n<=0,o=kn.tickText(e,e.c2l(a?-n:n),"hover").text;return a?n===0?"0":kb+o:o};function yse(e,t,r){var n=e.tickfont||{};return{x:t,dx:0,dy:0,text:r||"",fontSize:n.size,font:n.family,fontWeight:n.weight,fontStyle:n.style,fontVariant:n.variant,fontTextcase:n.textcase,fontLineposition:n.lineposition,fontShadow:n.shadow,fontColor:n.color}}function Mot(e,t,r,n){var i=e._tickround,a=r&&e.hoverformat||kn.getTickFormat(e);n=!a&&n,n&&(ph(i)?i=4:i={y:"m",m:"d",d:"M",M:"S",S:4}[i]);var o=Vo.formatDate(t.x,a,i,e._dateFormat,e.calendar,e._extraFormat),s,l=o.indexOf(` +`);if(l!==-1&&(s=o.substr(l+1),o=o.substr(0,l)),n&&(s!==void 0&&(o==="00:00:00"||o==="00:00")?(o=s,s=""):o.length===8&&(o=o.replace(/:00$/,""))),s)if(r)i==="d"?o+=", "+s:o=s+(o?", "+o:"");else if(!e._inCalcTicks||e._prevDateHead!==s)e._prevDateHead=s,o+="<br>"+s;else{var u=nM(e),c=e._trueSide||e.side;(!u&&c==="top"||u&&c==="bottom")&&(o+="<br> ")}t.text=o}function Eot(e,t,r,n,i){var a=e.dtick,o=t.x,s=e.tickformat,l=typeof a=="string"&&a.charAt(0);if(i==="never"&&(i=""),n&&l!=="L"&&(a="L3",l="L"),s||l==="L")t.text=iM(Math.pow(10,o),e,i,n);else if(ph(a)||l==="D"&&Vo.mod(o+.01,1)<.1){var u=Math.round(o),c=Math.abs(u),f=e.exponentformat;f==="power"||TL(f)&&uB(u)?(u===0?t.text=1:u===1?t.text="10":t.text="10<sup>"+(u>1?"":kb)+c+"</sup>",t.fontSize*=1.25):(f==="e"||f==="E")&&c>2?t.text="1"+f+(u>0?"+":kb)+c:(t.text=iM(Math.pow(10,o),e,"","fakehover"),a==="D1"&&e._id.charAt(0)==="y"&&(t.dy-=t.fontSize/6))}else if(l==="D")t.text=String(Math.round(Math.pow(10,Vo.mod(o,1)))),t.fontSize*=.75;else throw"unrecognized dtick "+String(a);if(e.dtick==="D1"){var h=String(t.text).charAt(0);(h==="0"||h==="1")&&(e._id.charAt(0)==="y"?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(o<0?.5:.25)))}}function kot(e,t){var r=e._categories[Math.round(t.x)];r===void 0&&(r=""),t.text=String(r)}function Cot(e,t,r){var n=Math.round(t.x),i=e._categories[n]||[],a=i[1]===void 0?"":String(i[1]),o=i[0]===void 0?"":String(i[0]);r?t.text=o+" - "+a:(t.text=a,t.text2=o)}function Lot(e,t,r,n,i){i==="never"?i="":e.showexponent==="all"&&Math.abs(t.x/e.dtick)<1e-6&&(i="hide"),t.text=iM(t.x,e,i,n)}function Pot(e,t,r,n,i){if(e.thetaunit==="radians"&&!r){var a=t.x/180;if(a===0)t.text="0";else{var o=Iot(a);if(o[1]>=100)t.text=iM(Vo.deg2rad(t.x),e,i,n);else{var s=t.x<0;o[1]===1?o[0]===1?t.text="\u03C0":t.text=o[0]+"\u03C0":t.text=["<sup>",o[0],"</sup>","\u2044","<sub>",o[1],"</sub>","\u03C0"].join(""),s&&(t.text=kb+t.text)}}}else t.text=iM(t.x,e,i,n)}function Iot(e){function t(s,l){return Math.abs(s-l)<=1e-6}function r(s,l){return t(l,0)?s:r(l,s%l)}function n(s){for(var l=1;!t(Math.round(s*l)/l,s);)l*=10;return l}var i=n(e),a=e*i,o=Math.abs(r(a,i));return[Math.round(a/o),Math.round(i/o)]}var Rot=["f","p","n","\u03BC","m","","k","M","G","T"];function TL(e){return e==="SI"||e==="B"}function uB(e){return e>14||e<-15}function iM(e,t,r,n){var i=e<0,a=t._tickround,o=r||t.exponentformat||"B",s=t._tickexponent,l=kn.getTickFormat(t),u=t.separatethousands;if(n){var c={exponentformat:o,minexponent:t.minexponent,dtick:t.showexponent==="none"?t.dtick:ph(e)&&Math.abs(e)||1,range:t.showexponent==="none"?t.range.map(t.r2d):[0,e||1]};mse(c),a=(Number(c._tickround)||0)+4,s=c._tickexponent,t.hoverformat&&(l=t.hoverformat)}if(l)return t._numFormat(l)(e).replace(/-/g,kb);var f=Math.pow(10,-a)/2;if(o==="none"&&(s=0),e=Math.abs(e),e<f)e="0",i=!1;else{if(e+=f,s&&(e*=Math.pow(10,-s),a+=s),a===0)e=String(Math.floor(e));else if(a<0){e=String(Math.round(e)),e=e.substr(0,e.length+a);for(var h=a;h<0;h++)e+="0"}else{e=String(e);var d=e.indexOf(".")+1;d&&(e=e.substr(0,d+a).replace(/\.?0+$/,""))}e=Vo.numSeparate(e,t._separators,u)}if(s&&o!=="hide"){TL(o)&&uB(s)&&(o="power");var v;s<0?v=kb+-s:o!=="power"?v="+"+s:v=String(s),o==="e"||o==="E"?e+=o+v:o==="power"?e+="\xD710<sup>"+v+"</sup>":o==="B"&&s===9?e+="B":TL(o)&&(e+=Rot[s/3+5])}return i?kb+e:e}kn.getTickFormat=function(e){var t;function r(l){return typeof l!="string"?l:Number(l.replace("M",""))*R3}function n(l,u){var c=["L","D"];if(typeof l==typeof u){if(typeof l=="number")return l-u;var f=c.indexOf(l.charAt(0)),h=c.indexOf(u.charAt(0));return f===h?Number(l.replace(/(L|D)/g,""))-Number(u.replace(/(L|D)/g,"")):f-h}else return typeof l=="number"?1:-1}function i(l,u,c){var f=c||function(v){return v},h=u[0],d=u[1];return(!h&&typeof h!="number"||f(h)<=f(l))&&(!d&&typeof d!="number"||f(d)>=f(l))}function a(l,u){var c=u[0]===null,f=u[1]===null,h=n(l,u[0])>=0,d=n(l,u[1])<=0;return(c||h)&&(f||d)}var o,s;if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":{for(t=0;t<e.tickformatstops.length;t++)if(s=e.tickformatstops[t],s.enabled&&i(e.dtick,s.dtickrange,r)){o=s;break}break}case"log":{for(t=0;t<e.tickformatstops.length;t++)if(s=e.tickformatstops[t],s.enabled&&a(e.dtick,s.dtickrange)){o=s;break}break}default:}return o?o.value:e.tickformat};kn.getSubplots=function(e,t){var r=e._fullLayout._subplots,n=r.cartesian.concat(r.gl2d||[]),i=t?kn.findSubplotsWithAxis(n,t):n;return i.sort(function(a,o){var s=a.substr(1).split("y"),l=o.substr(1).split("y");return s[0]===l[0]?+s[1]-+l[1]:+s[0]-+l[0]}),i};kn.findSubplotsWithAxis=function(e,t){for(var r=new RegExp(t._id.charAt(0)==="x"?"^"+t._id+"y":t._id+"$"),n=[],i=0;i<e.length;i++){var a=e[i];r.test(a)&&n.push(a)}return n};kn.makeClipPaths=function(e){var t=e._fullLayout;if(!t._hasOnlyLargeSploms){var r={_offset:0,_length:t.width,_id:""},n={_offset:0,_length:t.height,_id:""},i=kn.list(e,"x",!0),a=kn.list(e,"y",!0),o=[],s,l;for(s=0;s<i.length;s++)for(o.push({x:i[s],y:n}),l=0;l<a.length;l++)s===0&&o.push({x:r,y:a[l]}),o.push({x:i[s],y:a[l]});var u=t._clips.selectAll(".axesclip").data(o,function(c){return c.x._id+c.y._id});u.enter().append("clipPath").classed("axesclip",!0).attr("id",function(c){return"clip"+t._uid+c.x._id+c.y._id}).append("rect"),u.exit().remove(),u.each(function(c){w0.select(this).select("rect").attr({x:c.x._offset||0,y:c.y._offset||0,width:c.x._length||1,height:c.y._length||1})})}};kn.draw=function(e,t,r){var n=e._fullLayout;t==="redraw"&&n._paper.selectAll("g.subplot").each(function(l){var u=l[0],c=n._plots[u];if(c){var f=c.xaxis,h=c.yaxis;c.xaxislayer.selectAll("."+f._id+"tick").remove(),c.yaxislayer.selectAll("."+h._id+"tick").remove(),c.xaxislayer.selectAll("."+f._id+"tick2").remove(),c.yaxislayer.selectAll("."+h._id+"tick2").remove(),c.xaxislayer.selectAll("."+f._id+"divider").remove(),c.yaxislayer.selectAll("."+h._id+"divider").remove(),c.minorGridlayer&&c.minorGridlayer.selectAll("path").remove(),c.gridlayer&&c.gridlayer.selectAll("path").remove(),c.zerolinelayer&&c.zerolinelayer.selectAll("path").remove(),n._infolayer.select(".g-"+f._id+"title").remove(),n._infolayer.select(".g-"+h._id+"title").remove()}});var i=!t||t==="redraw"?kn.listIds(e):t,a=kn.list(e),o=a.filter(function(l){return l.autoshift}).map(function(l){return l.overlaying});i.map(function(l){var u=kn.getFromId(e,l);if(u.tickmode==="sync"&&u.overlaying){var c=i.findIndex(function(f){return f===u.overlaying});c>=0&&i.unshift(i.splice(c,1).shift())}});var s={false:{left:0,right:0}};return Vo.syncOrAsync(i.map(function(l){return function(){if(l){var u=kn.getFromId(e,l);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=o;var c=kn.drawOne(e,u,r);return u._shiftPusher&&sB(u,u._fullDepth||0,s,!0),u._r=u.range.slice(),u._rl=Vo.simpleMap(u._r,u.r2l),c}}}))};kn.drawOne=function(e,t,r){r=r||{};var n=r.axShifts||{},i=r.overlayingShiftedAx||[],a,o,s;t.setScale();var l=e._fullLayout,u=t._id,c=u.charAt(0),f=kn.counterLetter(u),h=l._plots[t._mainSubplot];if(!h)return;if(t._shiftPusher=t.autoshift||i.indexOf(t._id)!==-1||i.indexOf(t.overlaying)!==-1,t._shiftPusher&t.anchor==="free"){var d=t.linewidth/2||0;t.ticks==="inside"&&(d+=t.ticklen),sB(t,d,n,!0),sB(t,t.shift||0,n,!1)}(r.skipTitle!==!0||t._shift===void 0)&&(t._shift=Wot(t,n));var v=h[c+"axislayer"],x=t._mainLinePosition,b=x+=t._shift,p=t._mainMirrorPosition,E=t._vals=kn.calcTicks(t),k=[t.mirror,b,p].join("_");for(a=0;a<E.length;a++)E[a].axInfo=k;t._selections={},t._tickAngles&&(t._prevTickAngles=t._tickAngles),t._tickAngles={},t._depth=null;var A={};function L(rt){var ot=u+(rt||"tick");return A[ot]||(A[ot]=qot(t,ot,b)),A[ot]}if(t.visible){var _=kn.makeTransTickFn(t),C=kn.makeTransTickLabelFn(t),M,g,P=t.ticks==="inside",T=t.ticks==="outside";if(t.tickson==="boundaries"){var F=Dot(t,E);g=kn.clipEnds(t,F),M=P?g:F}else g=kn.clipEnds(t,E),M=P&&t.ticklabelmode!=="period"?g:E;var q=t._gridVals=g,V=Fot(t,E);if(!l._hasOnlyLargeSploms){var H=t._subplotsWith,X={};for(a=0;a<H.length;a++){o=H[a],s=l._plots[o];var G=s[f+"axis"],N=G._mainAxis._id;if(!X[N]){X[N]=1;var W=c==="x"?"M0,"+G._offset+"v"+G._length:"M"+G._offset+",0h"+G._length;kn.drawGrid(e,t,{vals:q,counterAxis:G,layer:s.gridlayer.select("."+u),minorLayer:s.minorGridlayer.select("."+u),path:W,transFn:_}),kn.drawZeroLine(e,t,{counterAxis:G,layer:s.zerolinelayer,path:W,transFn:_})}}}var re,ae=kn.getTickSigns(t),_e=kn.getTickSigns(t,"minor");if(t.ticks||t.minor&&t.minor.ticks){var Me=kn.makeTickPath(t,b,ae[2]),ke=kn.makeTickPath(t,b,_e[2],{minor:!0}),ge,ie,Te,Ee;if(t._anchorAxis&&t.mirror&&t.mirror!==!0?(ge=kn.makeTickPath(t,p,ae[3]),ie=kn.makeTickPath(t,p,_e[3],{minor:!0}),Te=Me+ge,Ee=ke+ie):(ge="",ie="",Te=Me,Ee=ke),t.showdividers&&T&&t.tickson==="boundaries"){var Ae={};for(a=0;a<V.length;a++)Ae[V[a].x]=1;re=function(rt){return Ae[rt.x]?ge:Te}}else re=function(rt){return rt.minor?Ee:Te}}if(kn.drawTicks(e,t,{vals:M,layer:v,path:re,transFn:_}),t.mirror==="allticks"){var ze=Object.keys(t._linepositions||{});for(a=0;a<ze.length;a++){o=ze[a],s=l._plots[o];var Ce=t._linepositions[o]||[],me=Ce[0],Re=Ce[1],ce=Ce[2],Ge=kn.makeTickPath(t,me,ce?ae[0]:_e[0],{minor:ce})+kn.makeTickPath(t,Re,ce?ae[1]:_e[1],{minor:ce});kn.drawTicks(e,t,{vals:M,layer:s[c+"axislayer"],path:Ge,transFn:_})}}var nt=[];if(nt.push(function(){return kn.drawLabels(e,t,{vals:E,layer:v,plotinfo:s,transFn:C,labelFns:kn.makeLabelFns(t,b)})}),t.type==="multicategory"){var ct={x:2,y:10}[c];nt.push(function(){var rt={x:"height",y:"width"}[c],ot=L()[rt]+ct+(t._tickAngles[u+"tick"]?t.tickfont.size*rM:0);return kn.drawLabels(e,t,{vals:zot(t,E),layer:v,cls:u+"tick2",repositionOnUpdate:!0,secondary:!0,transFn:_,labelFns:kn.makeLabelFns(t,b+ot*ae[4])})}),nt.push(function(){return t._depth=ae[4]*(L("tick2")[t.side]-b),Bot(e,t,{vals:V,layer:v,path:kn.makeTickPath(t,b,ae[4],{len:t._depth}),transFn:_})})}else t.title.hasOwnProperty("standoff")&&nt.push(function(){t._depth=ae[4]*(L()[t.side]-b)});var qt=QS.getComponentMethod("rangeslider","isVisible")(t);return!r.skipTitle&&!(qt&&t.side==="bottom")&&nt.push(function(){return Not(e,t)}),nt.push(function(){var rt=t.side.charAt(0),ot=dot[t.side].charAt(0),Rt=kn.getPxPosition(e,t),kt=T?t.ticklen:0,Ct,Yt,xr,er;(t.automargin||qt||t._shiftPusher)&&(t.type==="multicategory"?Ct=L("tick2"):(Ct=L(),c==="x"&&rt==="b"&&(t._depth=Math.max(Ct.width>0?Ct.bottom-Rt:0,kt))));var Ke=0,xt=0;if(t._shiftPusher&&(Ke=Math.max(kt,Ct.height>0?rt==="l"?Rt-Ct.left:Ct.right-Rt:0),t.title.text!==l._dfltTitle[c]&&(xt=(t._titleStandoff||0)+(t._titleScoot||0),rt==="l"&&(xt+=fse(t))),t._fullDepth=Math.max(Ke,xt)),t.automargin){Yt={x:0,y:0,r:0,l:0,t:0,b:0};var bt=[0,1],Lt=typeof t._shift=="number"?t._shift:0;if(c==="x"){if(rt==="b"?Yt[rt]=t._depth:(Yt[rt]=t._depth=Math.max(Ct.width>0?Rt-Ct.top:0,kt),bt.reverse()),Ct.width>0){var St=Ct.right-(t._offset+t._length);St>0&&(Yt.xr=1,Yt.r=St);var Et=t._offset-Ct.left;Et>0&&(Yt.xl=0,Yt.l=Et)}}else if(rt==="l"?(t._depth=Math.max(Ct.height>0?Rt-Ct.left:0,kt),Yt[rt]=t._depth-Lt):(t._depth=Math.max(Ct.height>0?Ct.right-Rt:0,kt),Yt[rt]=t._depth+Lt,bt.reverse()),Ct.height>0){var dt=Ct.bottom-(t._offset+t._length);dt>0&&(Yt.yb=0,Yt.b=dt);var Ht=t._offset-Ct.top;Ht>0&&(Yt.yt=1,Yt.t=Ht)}Yt[f]=t.anchor==="free"?t.position:t._anchorAxis.domain[bt[0]],t.title.text!==l._dfltTitle[c]&&(Yt[rt]+=fse(t)+(t.title.standoff||0)),t.mirror&&t.anchor!=="free"&&(xr={x:0,y:0,r:0,l:0,t:0,b:0},xr[ot]=t.linewidth,t.mirror&&t.mirror!==!0&&(xr[ot]+=kt),t.mirror===!0||t.mirror==="ticks"?xr[f]=t._anchorAxis.domain[bt[1]]:(t.mirror==="all"||t.mirror==="allticks")&&(xr[f]=[t._counterDomainMin,t._counterDomainMax][bt[1]]))}qt&&(er=QS.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),typeof t.automargin=="string"&&(cse(Yt,t.automargin),cse(xr,t.automargin)),P3.autoMargin(e,cB(t),Yt),P3.autoMargin(e,xse(t),xr),P3.autoMargin(e,bse(t),er)}),Vo.syncOrAsync(nt)}};function cse(e,t){if(e){var r=Object.keys(ise).reduce(function(n,i){return t.indexOf(i)!==-1&&ise[i].forEach(function(a){n[a]=1}),n},{});Object.keys(e).forEach(function(n){r[n]||(n.length===1?e[n]=0:delete e[n])})}}function Dot(e,t){var r=[],n,i=function(a,o){var s=a.xbnd[o];s!==null&&r.push(Vo.extendFlat({},a,{x:s}))};if(t.length){for(n=0;n<t.length;n++)i(t[n],0);i(t[n-1],1)}return r}function zot(e,t){for(var r=[],n={},i=0;i<t.length;i++){var a=t[i];n[a.text2]?n[a.text2].push(a.x):n[a.text2]=[a.x]}for(var o in n)r.push(yse(e,Vo.interp(n[o],.5),o));return r}function Fot(e,t){var r=[],n,i,a=t.length&&t[t.length-1].x<t[0].x,o=function(l,u){var c=l.xbnd[u];c!==null&&r.push(Vo.extendFlat({},l,{x:c}))};if(e.showdividers&&t.length){for(n=0;n<t.length;n++){var s=t[n];s.text2!==i&&o(s,a?1:0),i=s.text2}o(t[n-1],a?0:1)}return r}function qot(e,t,r){var n,i,a,o;if(e._selections[t].size())n=1/0,i=-1/0,a=1/0,o=-1/0,e._selections[t].each(function(){var l=oB(this),u=Xp.bBox(l.node().parentNode);n=Math.min(n,u.top),i=Math.max(i,u.bottom),a=Math.min(a,u.left),o=Math.max(o,u.right)});else{var s=kn.makeLabelFns(e,r);n=i=s.yFn({dx:0,dy:0,fontSize:0}),a=o=s.xFn({dx:0,dy:0,fontSize:0})}return{top:n,bottom:i,left:a,right:o,height:i-n,width:o-a}}kn.getTickSigns=function(e,t){var r=e._id.charAt(0),n={x:"top",y:"right"}[r],i=e.side===n?1:-1,a=[-1,1,i,-i],o=t?(e.minor||{}).ticks:e.ticks;return o!=="inside"==(r==="x")&&(a=a.map(function(s){return-s})),e.side&&a.push({l:-1,t:-1,r:1,b:1}[e.side.charAt(0)]),a};kn.makeTransTickFn=function(e){return e._id.charAt(0)==="x"?function(t){return I3(e._offset+e.l2p(t.x),0)}:function(t){return I3(0,e._offset+e.l2p(t.x))}};kn.makeTransTickLabelFn=function(e){var t=Oot(e),r=e.ticklabelshift||0,n=e.ticklabelstandoff||0,i=t[0],a=t[1],o=e.range[0]>e.range[1],s=e.ticklabelposition&&e.ticklabelposition.indexOf("inside")!==-1,l=!s;if(r){var u=o?-1:1;r=r*u}if(n){var c=e.side,f=s&&(c==="top"||c==="left")||l&&(c==="bottom"||c==="right")?1:-1;n=n*f}return e._id.charAt(0)==="x"?function(h){return I3(i+e._offset+e.l2p(aB(h))+r,a+n)}:function(h){return I3(a+n,i+e._offset+e.l2p(aB(h))+r)}};function aB(e){return e.periodX!==void 0?e.periodX:e.x}function Oot(e){var t=e.ticklabelposition||"",r=function(d){return t.indexOf(d)!==-1},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var u=e.side,c=l?(e.tickwidth||0)/2:0,f=wL,h=e.tickfont?e.tickfont.size:12;return(o||n)&&(c+=h*Cb,f+=(e.linewidth||0)/2),(i||a)&&(c+=(e.linewidth||0)/2,f+=wL),s&&u==="top"&&(f-=h*(1-Cb)),(i||n)&&(c=-c),(u==="bottom"||u==="right")&&(f=-f),[l?c:0,s?f:0]}kn.makeTickPath=function(e,t,r,n){n||(n={});var i=n.minor;if(i&&!e.minor)return"";var a=n.len!==void 0?n.len:i?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),s=(e.linewidth||1)/2;return o==="x"?"M0,"+(t+s*r)+"v"+a*r:"M"+(t+s*r)+",0h"+a*r};kn.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=function(F){return n.indexOf(F)!==-1},a=i("top"),o=i("left"),s=i("right"),l=i("bottom"),u=l||o||a||s,c=i("inside"),f=n==="inside"&&e.ticks==="inside"||!c&&e.ticks==="outside"&&e.tickson!=="boundaries",h=0,d=0,v=f?e.ticklen:0;if(c?v*=-1:u&&(v=0),f&&(h+=v,r)){var x=Vo.deg2rad(r);h=v*Math.cos(x)+1,d=v*Math.sin(x)}e.showticklabels&&(f||e.showline)&&(h+=.2*e.tickfont.size),h+=(e.linewidth||1)/2*(c?-1:1);var b={labelStandoff:h,labelShift:d},p,E,k,A,L=0,_=e.side,C=e._id.charAt(0),M=e.tickangle,g;if(C==="x")g=!c&&_==="bottom"||c&&_==="top",A=g?1:-1,c&&(A*=-1),p=d*A,E=t+h*A,k=g?1:-.2,Math.abs(M)===90&&(c?k+=$S:M===-90&&_==="bottom"?k=Cb:M===90&&_==="top"?k=$S:k=.5,L=$S/2*(M/90)),b.xFn=function(F){return F.dx+p+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*k},b.anchorFn=function(F,q){if(u){if(o)return"end";if(s)return"start"}return!ph(q)||q===0||q===180?"middle":q*A<0!==c?"end":"start"},b.heightFn=function(F,q,V){return q<-60||q>60?-.5*V:e.side==="top"!==c?-V:0};else if(C==="y"){if(g=!c&&_==="left"||c&&_==="right",A=g?1:-1,c&&(A*=-1),p=h,E=d*A,k=0,!c&&Math.abs(M)===90&&(M===-90&&_==="left"||M===90&&_==="right"?k=Cb:k=.5),c){var P=ph(M)?+M:0;if(P!==0){var T=Vo.deg2rad(P);L=Math.abs(Math.sin(T))*Cb*A,k=0}}b.xFn=function(F){return F.dx+t-(p+F.fontSize*k)*A+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*$S},b.anchorFn=function(F,q){return ph(q)&&Math.abs(q)===90?"middle":g?"end":"start"},b.heightFn=function(F,q,V){return e.side==="right"&&(q*=-1),q<-30?-V:q<30?-.5*V:0}}return b};function ML(e){return[e.text,e.x,e.axInfo,e.font,e.fontSize,e.fontColor].join("_")}kn.drawTicks=function(e,t,r){r=r||{};var n=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(o){return o.minor&&!o.noTick}):[]).concat(t.ticks?r.vals.filter(function(o){return!o.minor&&!o.noTick}):[]),a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().append("path").classed(n,1).classed("ticks",1).classed("crisp",r.crisp!==!1).each(function(o){return eM.stroke(w0.select(this),o.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(o){return Xp.crispRound(e,o.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),EL(t,[hse]),a.attr("transform",r.transFn)};kn.drawGrid=function(e,t,r){if(r=r||{},t.tickmode!=="sync"){var n=t._id+"grid",i=t.minor&&t.minor.showgrid,a=i?r.vals.filter(function(p){return p.minor}):[],o=t.showgrid?r.vals.filter(function(p){return!p.minor}):[],s=r.counterAxis;if(s&&kn.shouldShowZeroLine(e,t,s))for(var l=t.tickmode==="array",u=0;u<o.length;u++){var c=o[u].x;if(l?!c:Math.abs(c)<t.dtick/100)if(o=o.slice(0,u).concat(o.slice(u+1)),l)u--;else break}t._gw=Xp.crispRound(e,t.gridwidth,1);for(var f=i?Xp.crispRound(e,t.minor.gridwidth,1):0,h=r.layer,d=r.minorLayer,v=1;v>=0;v--){var x=v?h:d;if(x){var b=x.selectAll("path."+n).data(v?o:a,ML);b.exit().remove(),b.enter().append("path").classed(n,1).classed("crisp",r.crisp!==!1),b.attr("transform",r.transFn).attr("d",r.path).each(function(p){return eM.stroke(w0.select(this),p.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(p){return Xp.dashStyle(p.minor?t.minor.griddash:t.griddash,p.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(p){return(p.minor?f:t._gw)+"px"}).style("display",null),typeof r.path=="function"&&b.attr("d",r.path)}}EL(t,[iB,nB])}};kn.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",i=kn.shouldShowZeroLine(e,t,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:t._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",r.crisp!==!1).each(function(){r.layer.selectAll("path").sort(function(o,s){return pot(o.id,s.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(eM.stroke,t.zerolinecolor||eM.defaultLine).style("stroke-width",Xp.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),EL(t,[rB])};kn.drawLabels=function(e,t,r){r=r||{};var n=e._fullLayout,i=t._id,a=r.cls||i+"tick",o=r.vals.filter(function(N){return N.text}),s=r.labelFns,l=r.secondary?0:t.tickangle,u=(t._prevTickAngles||{})[a],c=r.layer.selectAll("g."+a).data(t.showticklabels?o:[],ML),f=[];c.enter().append("g").classed(a,1).append("text").attr("text-anchor","middle").each(function(N){var W=w0.select(this),re=e._promises.length;W.call(Eb.positionText,s.xFn(N),s.yFn(N)).call(Xp.font,{family:N.font,size:N.fontSize,color:N.fontColor,weight:N.fontWeight,style:N.fontStyle,variant:N.fontVariant,textcase:N.fontTextcase,lineposition:N.fontLineposition,shadow:N.fontShadow}).text(N.text).call(Eb.convertToTspans,e),e._promises[re]?f.push(e._promises.pop().then(function(){h(W,l)})):h(W,l)}),EL(t,[rse]),c.exit().remove(),r.repositionOnUpdate&&c.each(function(N){w0.select(this).select("text").call(Eb.positionText,s.xFn(N),s.yFn(N))});function h(N,W){N.each(function(re){var ae=w0.select(this),_e=ae.select(".text-math-group"),Me=s.anchorFn(re,W),ke=r.transFn.call(ae.node(),re)+(ph(W)&&+W!=0?" rotate("+W+","+s.xFn(re)+","+(s.yFn(re)-re.fontSize/2)+")":""),ge=Eb.lineCount(ae),ie=rM*re.fontSize,Te=s.heightFn(re,ph(W)?+W:0,(ge-1)*ie);if(Te&&(ke+=I3(0,Te)),_e.empty()){var Ee=ae.select("text");Ee.attr({transform:ke,"text-anchor":Me}),Ee.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var Ae=Xp.bBox(_e.node()).width,ze=Ae*{end:-.5,start:.5}[Me];_e.attr("transform",ke+I3(ze,0))}})}t._adjustTickLabelsOverflow=function(){var N=t.ticklabeloverflow;if(!(!N||N==="allow")){var W=N.indexOf("hide")!==-1,re=t._id.charAt(0)==="x",ae=0,_e=re?e._fullLayout.width:e._fullLayout.height;if(N.indexOf("domain")!==-1){var Me=Vo.simpleMap(t.range,t.r2l);ae=t.l2p(Me[0])+t._offset,_e=t.l2p(Me[1])+t._offset}var ke=Math.min(ae,_e),ge=Math.max(ae,_e),ie=t.side,Te=1/0,Ee=-1/0;c.each(function(me){var Re=w0.select(this),ce=Re.select(".text-math-group");if(ce.empty()){var Ge=Xp.bBox(Re.node()),nt=0;re?(Ge.right>ge||Ge.left<ke)&&(nt=1):(Ge.bottom>ge||Ge.top+(t.tickangle?0:me.fontSize/4)<ke)&&(nt=1);var ct=Re.select("text");nt?W&&ct.style("opacity",0):(ct.style("opacity",1),ie==="bottom"||ie==="right"?Te=Math.min(Te,re?Ge.top:Ge.left):Te=-1/0,ie==="top"||ie==="left"?Ee=Math.max(Ee,re?Ge.bottom:Ge.right):Ee=1/0)}});for(var Ae in n._plots){var ze=n._plots[Ae];if(!(t._id!==ze.xaxis._id&&t._id!==ze.yaxis._id)){var Ce=re?ze.yaxis:ze.xaxis;Ce&&(Ce["_visibleLabelMin_"+t._id]=Te,Ce["_visibleLabelMax_"+t._id]=Ee)}}}},t._hideCounterAxisInsideTickLabels=function(N){var W=t._id.charAt(0)==="x",re=[];for(var ae in n._plots){var _e=n._plots[ae];t._id!==_e.xaxis._id&&t._id!==_e.yaxis._id||re.push(W?_e.yaxis:_e.xaxis)}re.forEach(function(Me,ke){Me&&nM(Me)&&(N||[rB,nB,iB,hse,rse]).forEach(function(ge){var ie=ge.K==="tick"&&ge.L==="text"&&t.ticklabelmode==="period",Te=n._plots[t._mainSubplot],Ee;ge.K===rB.K?Ee=Te.zerolinelayer.selectAll("."+t._id+"zl"):ge.K===nB.K?Ee=Te.minorGridlayer.selectAll("."+t._id):ge.K===iB.K?Ee=Te.gridlayer.selectAll("."+t._id):Ee=Te[t._id.charAt(0)+"axislayer"],Ee.each(function(){var Ae=w0.select(this);ge.L&&(Ae=Ae.selectAll(ge.L)),Ae.each(function(ze){var Ce=t.l2p(ie?aB(ze):ze.x)+t._offset,me=w0.select(this);Ce<t["_visibleLabelMax_"+Me._id]&&Ce>t["_visibleLabelMin_"+Me._id]?me.style("display","none"):ge.K==="tick"&&!ke&&me.style("display",null)})})})})},h(c,u+1?u:l);function d(){return f.length&&Promise.all(f)}var v=null;function x(){if(h(c,l),o.length&&t.autotickangles&&(t.type!=="log"||String(t.dtick).charAt(0)!=="D")){v=t.autotickangles[0];var N=0,W=[],re,ae=1;c.each(function(Ct){N=Math.max(N,Ct.fontSize);var Yt=t.l2p(Ct.x),xr=oB(this),er=Xp.bBox(xr.node());ae=Math.max(ae,Eb.lineCount(xr)),W.push({top:0,bottom:10,height:10,left:Yt-er.width/2,right:Yt+er.width/2+2,width:er.width+2})});var _e=(t.tickson==="boundaries"||t.showdividers)&&!r.secondary,Me=o.length,ke=Math.abs((o[Me-1].x-o[0].x)*t._m)/(Me-1),ge=_e?ke/2:ke,ie=_e?t.ticklen:N*1.25*ae,Te=Math.sqrt(Math.pow(ge,2)+Math.pow(ie,2)),Ee=ge/Te,Ae=t.autotickangles.map(function(Ct){return Ct*Math.PI/180}),ze=Ae.find(function(Ct){return Math.abs(Math.cos(Ct))<=Ee});ze===void 0&&(ze=Ae.reduce(function(Ct,Yt){return Math.abs(Math.cos(Ct))<Math.abs(Math.cos(Yt))?Ct:Yt},Ae[0]));var Ce=ze*(180/Math.PI);if(_e){var me=2;for(t.ticks&&(me+=t.tickwidth/2),re=0;re<W.length;re++){var Re=o[re].xbnd,ce=W[re];if(Re[0]!==null&&ce.left-t.l2p(Re[0])<me||Re[1]!==null&&t.l2p(Re[1])-ce.right<me){v=Ce;break}}}else{var Ge=t.ticklabelposition||"",nt=function(Ct){return Ge.indexOf(Ct)!==-1},ct=nt("top"),qt=nt("left"),rt=nt("right"),ot=nt("bottom"),Rt=ot||qt||ct||rt,kt=Rt?(t.tickwidth||0)+2*wL:0;for(re=0;re<W.length-1;re++)if(Vo.bBoxIntersect(W[re],W[re+1],kt)){v=Ce;break}}v&&h(c,v)}}t._selections&&(t._selections[a]=c);var b=[d];t.automargin&&n._redrawFromAutoMarginCount&&u===90?(v=u,b.push(function(){h(c,u)})):b.push(x),t._tickAngles&&b.push(function(){t._tickAngles[a]=v===null?ph(l)?l:0:v});var p=function(){var N=0,W=0;return c.each(function(re,ae){var _e=oB(this),Me=_e.select(".text-math-group");if(Me.empty()){var ke;t._vals[ae]&&(ke=t._vals[ae].bb||Xp.bBox(_e.node()),t._vals[ae].bb=ke),N=Math.max(N,ke.width),W=Math.max(W,ke.height)}}),{labelsMaxW:N,labelsMaxH:W}},E=t._anchorAxis;if(E&&(E.autorange||E.insiderange)&&nM(t)&&!got(n,t._id)&&(n._insideTickLabelsUpdaterange||(n._insideTickLabelsUpdaterange={}),E.autorange&&(n._insideTickLabelsUpdaterange[E._name+".autorange"]=E.autorange,b.push(p)),E.insiderange)){var k=p(),A=t._id.charAt(0)==="y"?k.labelsMaxW:k.labelsMaxH;A+=2*wL,t.ticklabelposition==="inside"&&(A+=t.ticklen||0);var L=t.side==="right"||t.side==="top"?1:-1,_=L===1?1:0,C=L===1?0:1,M=[];M[C]=E.range[C];var g=E.range,P=E.r2p(g[_]),T=E.r2p(g[C]),F=n._insideTickLabelsUpdaterange[E._name+".range"];if(F){var q=E.r2p(F[_]),V=E.r2p(F[C]),H=L*(t._id.charAt(0)==="y"?1:-1);H*P<H*q&&(P=q,M[_]=g[_]=F[_]),H*T>H*V&&(T=V,M[C]=g[C]=F[C])}var X=Math.abs(T-P);X-A>0?(X-=A,A*=1+A/X):A=0,t._id.charAt(0)!=="y"&&(A=-A),M[_]=E.p2r(E.r2p(g[_])+L*A),E.autorange==="min"||E.autorange==="max reversed"?(M[0]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0):(E.autorange==="max"||E.autorange==="min reversed")&&(M[1]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0),n._insideTickLabelsUpdaterange[E._name+".range"]=M}var G=Vo.syncOrAsync(b);return G&&G.then&&e._promises.push(G),G};function Bot(e,t,r){var n=t._id+"divider",i=r.vals,a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().insert("path",":first-child").classed(n,1).classed("crisp",1).call(eM.stroke,t.dividercolor).style("stroke-width",Xp.crispRound(e,t.dividerwidth,1)+"px"),a.attr("transform",r.transFn).attr("d",r.path)}kn.getPxPosition=function(e,t){var r=e._fullLayout._size,n=t._id.charAt(0),i=t.side,a;if(t.anchor!=="free"?a=t._anchorAxis:n==="x"?a={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:n==="y"&&(a={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),i==="top"||i==="left")return a._offset;if(i==="bottom"||i==="right")return a._offset+a._length};function fse(e){var t=e.title.font.size,r=(e.title.text.match(Eb.BR_TAG_ALL)||[]).length;return e.title.hasOwnProperty("standoff")?t*(Cb+r*rM):r?t*(r+1)*rM:t}function Not(e,t){var r=e._fullLayout,n=t._id,i=n.charAt(0),a=t.title.font.size,o,s=(t.title.text.match(Eb.BR_TAG_ALL)||[]).length;if(t.title.hasOwnProperty("standoff"))t.side==="bottom"||t.side==="right"?o=t._depth+t.title.standoff+a*Cb:(t.side==="top"||t.side==="left")&&(o=t._depth+t.title.standoff+a*($S+s*rM));else{var l=nM(t);if(t.type==="multicategory")o=t._depth;else{var u=1.5*a;l&&(u=.5*a,t.ticks==="outside"&&(u+=t.ticklen)),o=10+u+(t.linewidth?t.linewidth-1:0)}l||(i==="x"?o+=t.side==="top"?a*(t.showticklabels?1:0):a*(t.showticklabels?1.5:.5):o+=t.side==="right"?a*(t.showticklabels?1:.5):a*(t.showticklabels?.5:0))}var c=kn.getPxPosition(e,t),f,h,d;i==="x"?(h=t._offset+t._length/2,d=t.side==="top"?c-o:c+o):(d=t._offset+t._length/2,h=t.side==="right"?c+o:c-o,f={rotate:"-90",offset:0});var v;if(t.type!=="multicategory"){var x=t._selections[t._id+"tick"];if(v={selection:x,side:t.side},x&&x.node()&&x.node().parentNode){var b=Xp.getTranslate(x.node().parentNode);v.offsetLeft=b.x,v.offsetTop=b.y}t.title.hasOwnProperty("standoff")&&(v.pad=0)}return t._titleStandoff=o,oot.draw(e,n+"title",{propContainer:t,propName:t._name+".title.text",placeholder:r._dfltTitle[i],avoid:v,transform:f,attributes:{x:h,y:d,"text-anchor":"middle"}})}kn.shouldShowZeroLine=function(e,t,r){var n=Vo.simpleMap(t.range,t.r2l);return n[0]*n[1]<=0&&t.zeroline&&(t.type==="linear"||t.type==="-")&&!(t.rangebreaks&&t.maskBreaks(0)===AL)&&(_se(t,0)||!Uot(e,t,r,n)||Vot(e,t))};kn.clipEnds=function(e,t){return t.filter(function(r){return _se(e,r.x)})};function _se(e,t){var r=e.l2p(t);return r>1&&r<e._length-1}function Uot(e,t,r,n){var i=r._mainAxis;if(!i)return;var a=e._fullLayout,o=t._id.charAt(0),s=kn.counterLetter(t._id),l=t._offset+(Math.abs(n[0])<Math.abs(n[1])==(o==="x")?0:t._length);function u(v){if(!v.showline||!v.linewidth)return!1;var x=Math.max((v.linewidth+t.zerolinewidth)/2,1);function b(k){return typeof k=="number"&&Math.abs(k-l)<x}if(b(v._mainLinePosition)||b(v._mainMirrorPosition))return!0;var p=v._linepositions||{};for(var E in p)if(b(p[E][0])||b(p[E][1]))return!0}var c=a._plots[r._mainSubplot];if(!(c.mainplotinfo||c).overlays.length)return u(r,l);for(var f=kn.list(e,s),h=0;h<f.length;h++){var d=f[h];if(d._mainAxis===i&&u(d,l))return!0}}function Vot(e,t){for(var r=e._fullData,n=t._mainSubplot,i=t._id.charAt(0),a=0;a<r.length;a++){var o=r[a];if(o.visible===!0&&o.xaxis+o.yaxis===n&&(QS.traceIs(o,"bar-like")&&o.orientation==={x:"h",y:"v"}[i]||o.fill&&o.fill.charAt(o.fill.length-1)===i))return!0}return!1}function oB(e){var t=w0.select(e),r=t.select(".text-math-group");return r.empty()?t.select("text"):r}kn.allowAutoMargin=function(e){for(var t=kn.list(e,"",!0),r=0;r<t.length;r++){var n=t[r];n.automargin&&(P3.allowAutoMargin(e,cB(n)),n.mirror&&P3.allowAutoMargin(e,xse(n))),QS.getComponentMethod("rangeslider","isVisible")(n)&&P3.allowAutoMargin(e,bse(n))}};function cB(e){return e._id+".automargin"}function xse(e){return cB(e)+".mirror"}function bse(e){return e._id+".rangeslider"}kn.swap=function(e,t){for(var r=Hot(e,t),n=0;n<r.length;n++)Got(e,r[n].x,r[n].y)};function Hot(e,t){var r=[],n,i;for(n=0;n<t.length;n++){var a=[],o=e._fullData[t[n]].xaxis,s=e._fullData[t[n]].yaxis;if(!(!o||!s)){for(i=0;i<r.length;i++)(r[i].x.indexOf(o)!==-1||r[i].y.indexOf(s)!==-1)&&a.push(i);if(!a.length){r.push({x:[o],y:[s]});continue}var l=r[a[0]],u;if(a.length>1)for(i=1;i<a.length;i++)u=r[a[i]],gL(l.x,u.x),gL(l.y,u.y);gL(l.x,[o]),gL(l.y,[s])}}return r}function gL(e,t){for(var r=0;r<t.length;r++)e.indexOf(t[r])===-1&&e.push(t[r])}function Got(e,t,r){var n=[],i=[],a=e.layout,o,s;for(o=0;o<t.length;o++)n.push(kn.getFromId(e,t[o]));for(o=0;o<r.length;o++)i.push(kn.getFromId(e,r[o]));var l=Object.keys(sot),u=["anchor","domain","overlaying","position","side","tickangle","editType"],c=["linear","log"];for(o=0;o<l.length;o++){var f=l[o],h=n[0][f],d=i[0][f],v=!0,x=!1,b=!1;if(!(f.charAt(0)==="_"||typeof h=="function"||u.indexOf(f)!==-1)){for(s=1;s<n.length&&v;s++){var p=n[s][f];f==="type"&&c.indexOf(h)!==-1&&c.indexOf(p)!==-1&&h!==p?x=!0:p!==h&&(v=!1)}for(s=1;s<i.length&&v;s++){var E=i[s][f];f==="type"&&c.indexOf(d)!==-1&&c.indexOf(E)!==-1&&d!==E?b=!0:i[s][f]!==d&&(v=!1)}v&&(x&&(a[n[0]._name].type="linear"),b&&(a[i[0]._name].type="linear"),jot(a,f,n,i,e._fullLayout._dfltTitle))}}for(o=0;o<e._fullLayout.annotations.length;o++){var k=e._fullLayout.annotations[o];t.indexOf(k.xref)!==-1&&r.indexOf(k.yref)!==-1&&Vo.swapAttrs(a.annotations[o],["?"])}}function jot(e,t,r,n,i){var a=Vo.nestedProperty,o=a(e[r[0]._name],t).get(),s=a(e[n[0]._name],t).get(),l;for(t==="title"&&(o&&o.text===i.x&&(o.text=i.y),s&&s.text===i.y&&(s.text=i.x)),l=0;l<r.length;l++)a(e,r[l]._name+"."+t).set(s);for(l=0;l<n.length;l++)a(e,n[l]._name+"."+t).set(o)}function fB(e){return e._id==="angularaxis"}function eB(e,t){for(var r=t._rangebreaks.length,n=0;n<r;n++){var i=t._rangebreaks[n];if(e>=i.min&&e<i.max)return i.max}return e}function nM(e){return(e.ticklabelposition||"").indexOf("inside")!==-1}function EL(e,t){nM(e._anchorAxis||{})&&e._hideCounterAxisInsideTickLabels&&e._hideCounterAxisInsideTickLabels(t)}function sB(e,t,r,n){var i=e.anchor!=="free"&&(e.overlaying===void 0||e.overlaying===!1)?e._id:e.overlaying,a;n?a=e.side==="right"?t:-t:a=t,i in r||(r[i]={}),e.side in r[i]||(r[i][e.side]=0),r[i][e.side]+=a}function Wot(e,t){return e.autoshift?t[e.overlaying][e.side]:e.shift||0}function Zot(e,t){return/%f/.test(t)?e>=hot:/%L/.test(t)?e>=fot:/%[SX]/.test(t)?e>=bL:/%M/.test(t)?e>=tM:/%[HI]/.test(t)?e>=xm:/%p/.test(t)?e>=l_:/%[Aadejuwx]/.test(t)?e>=Fv:/%[UVW]/.test(t)?e>=Yp:/%[Bbm]/.test(t)?e>=xL:/%[q]/.test(t)?e>=_L:/%[Yy]/.test(t)?e>=yL:!0}});var hB=ye((Srr,Tse)=>{"use strict";Tse.exports=function(t,r,n){var i,a;if(n){var o=r==="reversed"||r==="min reversed"||r==="max reversed";i=n[o?1:0],a=n[o?0:1]}var s=t("autorangeoptions.minallowed",a===null?i:void 0),l=t("autorangeoptions.maxallowed",i===null?a:void 0);s===void 0&&t("autorangeoptions.clipmin"),l===void 0&&t("autorangeoptions.clipmax"),t("autorangeoptions.include")}});var dB=ye((Mrr,Ase)=>{"use strict";var Xot=hB();Ase.exports=function(t,r,n,i){var a=r._template||{},o=r.type||a.type||"-";n("minallowed"),n("maxallowed");var s=n("range");if(!s){var l;!i.noInsiderange&&o!=="log"&&(l=n("insiderange"),l&&(l[0]===null||l[1]===null)&&(r.insiderange=!1,l=void 0),l&&(s=n("range",l)))}var u=r.getAutorangeDflt(s,i),c=n("autorange",u),f;s&&(s[0]===null&&s[1]===null||(s[0]===null||s[1]===null)&&(c==="reversed"||c===!0)||s[0]!==null&&(c==="min"||c==="max reversed")||s[1]!==null&&(c==="max"||c==="min reversed"))&&(s=void 0,delete r.range,r.autorange=!0,f=!0),f||(u=r.getAutorangeDflt(s,i),c=n("autorange",u)),c&&(Xot(n,c,s),(o==="linear"||o==="-")&&n("rangemode")),r.cleanRange()}});var Mse=ye((Err,Sse)=>{var Yot={left:0,top:0};Sse.exports=Kot;function Kot(e,t,r){t=t||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var n=e.clientX||0,i=e.clientY||0,a=Jot(t);return r[0]=n-a.left,r[1]=i-a.top,r}function Jot(e){return e===window||e===document||e===document.body?Yot:e.getBoundingClientRect()}});var kL=ye((krr,Ese)=>{"use strict";var $ot=Kq();function Qot(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(r){e=!1}return e}Ese.exports=$ot&&Qot()});var Cse=ye((Crr,kse)=>{"use strict";kse.exports=function(t,r,n,i,a){var o=(t-n)/(i-n),s=o+r/(i-n),l=(o+s)/2;return a==="left"||a==="bottom"?o:a==="center"||a==="middle"?l:a==="right"||a==="top"?s:o<2/3-l?o:s>4/3-l?s:l}});var Ise=ye((Lrr,Pse)=>{"use strict";var Lse=Mr(),est=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];Pse.exports=function(t,r,n,i){return n==="left"?t=0:n==="center"?t=1:n==="right"?t=2:t=Lse.constrain(Math.floor(t*3),0,2),i==="bottom"?r=0:i==="middle"?r=1:i==="top"?r=2:r=Lse.constrain(Math.floor(r*3),0,2),est[r][t]}});var Dse=ye((Prr,Rse)=>{"use strict";var tst=g3(),rst=P6(),ist=DS().getGraphDiv,nst=IS(),vB=Rse.exports={};vB.wrapped=function(e,t,r){e=ist(e),e._fullLayout&&rst.clear(e._fullLayout._uid+nst.HOVERID),vB.raw(e,t,r)};vB.raw=function(t,r){var n=t._fullLayout,i=t._hoverdata;r||(r={}),!(r.target&&!t._dragged&&tst.triggerHandler(t,"plotly_beforehover",r)===!1)&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,r.target&&i&&t.emit("plotly_unhover",{event:r,points:i}))}});var gv=ye((Irr,Ose)=>{"use strict";var ast=Mse(),pB=$q(),ost=kL(),sst=Mr().removeElement,lst=ad(),Lb=Ose.exports={};Lb.align=Cse();Lb.getCursor=Ise();var Fse=Dse();Lb.unhover=Fse.wrapped;Lb.unhoverRaw=Fse.raw;Lb.init=function(t){var r=t.gd,n=1,i=r._context.doubleClickDelay,a=t.element,o,s,l,u,c,f,h,d;r._mouseDownTime||(r._mouseDownTime=0),a.style.pointerEvents="all",a.onmousedown=b,ost?(a._ontouchstart&&a.removeEventListener("touchstart",a._ontouchstart),a._ontouchstart=b,a.addEventListener("touchstart",b,{passive:!1})):a.ontouchstart=b;function v(k,A,L){return Math.abs(k)<L&&(k=0),Math.abs(A)<L&&(A=0),[k,A]}var x=t.clampFn||v;function b(k){r._dragged=!1,r._dragging=!0;var A=zse(k);o=A[0],s=A[1],h=k.target,f=k,d=k.buttons===2||k.ctrlKey,typeof k.clientX=="undefined"&&typeof k.clientY=="undefined"&&(k.clientX=o,k.clientY=s),l=new Date().getTime(),l-r._mouseDownTime<i?n+=1:(n=1,r._mouseDownTime=l),t.prepFn&&t.prepFn(k,o,s),pB&&!d?(c=qse(),c.style.cursor=window.getComputedStyle(a).cursor):pB||(c=document,u=window.getComputedStyle(document.documentElement).cursor,document.documentElement.style.cursor=window.getComputedStyle(a).cursor),document.addEventListener("mouseup",E),document.addEventListener("touchend",E),t.dragmode!==!1&&(k.preventDefault(),document.addEventListener("mousemove",p),document.addEventListener("touchmove",p,{passive:!1}))}function p(k){k.preventDefault();var A=zse(k),L=t.minDrag||lst.MINDRAG,_=x(A[0]-o,A[1]-s,L),C=_[0],M=_[1];(C||M)&&(r._dragged=!0,Lb.unhover(r,k)),r._dragged&&t.moveFn&&!d&&(r._dragdata={element:a,dx:C,dy:M},t.moveFn(C,M))}function E(k){if(delete r._dragdata,t.dragmode!==!1&&(k.preventDefault(),document.removeEventListener("mousemove",p),document.removeEventListener("touchmove",p)),document.removeEventListener("mouseup",E),document.removeEventListener("touchend",E),pB?sst(c):u&&(c.documentElement.style.cursor=u,u=null),!r._dragging){r._dragged=!1;return}if(r._dragging=!1,new Date().getTime()-r._mouseDownTime>i&&(n=Math.max(n-1,1)),r._dragged)t.doneFn&&t.doneFn();else{var A;f.target===h?A=f:(A={target:h,srcElement:h,toElement:h},Object.keys(f).concat(Object.keys(f.__proto__)).forEach(L=>{var _=f[L];!A[L]&&typeof _!="function"&&(A[L]=_)})),t.clickFn&&t.clickFn(n,A),d||h.dispatchEvent(new MouseEvent("click",k))}r._dragging=!1,r._dragged=!1}};function qse(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}Lb.coverSlip=qse;function zse(e){return ast(e.changedTouches?e.changedTouches[0]:e,document.body)}});var Tg=ye((Rrr,Bse)=>{"use strict";Bse.exports=function(t,r){(t.attr("class")||"").split(" ").forEach(function(n){n.indexOf("cursor-")===0&&t.classed(n,!1)}),r&&t.classed("cursor-"+r,!0)}});var Vse=ye((Drr,Use)=>{"use strict";var gB=Tg(),aM="data-savedcursor",Nse="!!";Use.exports=function(t,r){var n=t.attr(aM);if(r){if(!n){for(var i=(t.attr("class")||"").split(" "),a=0;a<i.length;a++){var o=i[a];o.indexOf("cursor-")===0&&t.attr(aM,o.substr(7)).classed(o,!1)}t.attr(aM)||t.attr(aM,Nse)}gB(t,r)}else n&&(t.attr(aM,null),n===Nse?gB(t):gB(t,n))}});var yB=ye((zrr,Hse)=>{"use strict";var mB=Su(),ust=dh();Hse.exports={_isSubplotObj:!0,visible:{valType:"boolean",dflt:!0,editType:"legend"},bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:ust.defaultLine,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:mB({editType:"legend"}),grouptitlefont:mB({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},entrywidth:{valType:"number",min:0,editType:"legend"},entrywidthmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels",editType:"legend"},indentation:{valType:"number",min:-15,dflt:0,editType:"legend"},itemsizing:{valType:"enumerated",values:["trace","constant"],dflt:"trace",editType:"legend"},itemwidth:{valType:"number",min:30,dflt:30,editType:"legend"},itemclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggle",editType:"legend"},itemdoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggleothers",editType:"legend"},groupclick:{valType:"enumerated",values:["toggleitem","togglegroup"],dflt:"togglegroup",editType:"legend"},x:{valType:"number",editType:"legend"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",editType:"legend"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],editType:"legend"},uirevision:{valType:"any",editType:"none"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"legend"},title:{text:{valType:"string",dflt:"",editType:"legend"},font:mB({editType:"legend"}),side:{valType:"enumerated",values:["top","left","top left","top center","top right"],editType:"legend"},editType:"legend"},editType:"legend"}});var LL=ye(CL=>{"use strict";CL.isGrouped=function(t){return(t.traceorder||"").indexOf("grouped")!==-1};CL.isVertical=function(t){return t.orientation!=="h"};CL.isReversed=function(t){return(t.traceorder||"").indexOf("reversed")!==-1}});var bB=ye((qrr,Gse)=>{"use strict";var _B=ba(),Kp=Mr(),cst=Vs(),fst=vl(),hst=yB(),dst=s3(),xB=LL();function vst(e,t,r,n){var i=t[e]||{},a=cst.newContainer(r,e);function o(G,N){return Kp.coerce(i,a,hst,G,N)}var s=Kp.coerceFont(o,"font",r.font);o("bgcolor",r.paper_bgcolor),o("bordercolor");var l=o("visible");if(l){for(var u,c=function(G,N){var W=u._input,re=u;return Kp.coerce(W,re,fst,G,N)},f=r.font||{},h=Kp.coerceFont(o,"grouptitlefont",f,{overrideDflt:{size:Math.round(f.size*1.1)}}),d=0,v=!1,x="normal",b=(r.shapes||[]).filter(function(G){return G.showlegend}),p=n.concat(b).filter(function(G){return e===(G.legend||"legend")}),E=0;E<p.length;E++)if(u=p[E],!!u.visible){var k=u._isShape;(u.showlegend||u._dfltShowLegend&&!(u._module&&u._module.attributes&&u._module.attributes.showlegend&&u._module.attributes.showlegend.dflt===!1))&&(d++,u.showlegend&&(v=!0,(!k&&_B.traceIs(u,"pie-like")||u._input.showlegend===!0)&&d++),Kp.coerceFont(c,"legendgrouptitle.font",h)),(!k&&_B.traceIs(u,"bar")&&r.barmode==="stack"||["tonextx","tonexty"].indexOf(u.fill)!==-1)&&(x=xB.isGrouped({traceorder:x})?"grouped+reversed":"reversed"),u.legendgroup!==void 0&&u.legendgroup!==""&&(x=xB.isReversed({traceorder:x})?"reversed+grouped":"grouped")}var A=Kp.coerce(t,r,dst,"showlegend",v&&d>(e==="legend"?1:0));if(A===!1&&(r[e]=void 0),!(A===!1&&!i.uirevision)&&(o("uirevision",r.uirevision),A!==!1)){o("borderwidth");var L=o("orientation"),_=o("yref"),C=o("xref"),M=L==="h",g=_==="paper",P=C==="paper",T,F,q,V="left";M?(T=0,_B.getComponentMethod("rangeslider","isVisible")(t.xaxis)?g?(F=1.1,q="bottom"):(F=1,q="top"):g?(F=-.1,q="top"):(F=0,q="bottom")):(F=1,q="auto",P?T=1.02:(T=1,V="right")),Kp.coerce(i,a,{x:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:T}},"x"),Kp.coerce(i,a,{y:{valType:"number",editType:"legend",min:g?-2:0,max:g?3:1,dflt:F}},"y"),o("traceorder",x),xB.isGrouped(r[e])&&o("tracegroupgap"),o("entrywidth"),o("entrywidthmode"),o("indentation"),o("itemsizing"),o("itemwidth"),o("itemclick"),o("itemdoubleclick"),o("groupclick"),o("xanchor",V),o("yanchor",q),o("valign"),Kp.noneOrAll(i,a,["x","y"]);var H=o("title.text");if(H){o("title.side",M?"left":"top");var X=Kp.extendFlat({},s,{size:Kp.bigFont(s.size)});Kp.coerceFont(o,"title.font",X)}}}}Gse.exports=function(t,r,n){var i,a=n.slice(),o=r.shapes;if(o)for(i=0;i<o.length;i++){var s=o[i];if(s.showlegend){var l={_input:s._input,visible:s.visible,showlegend:s.showlegend,legend:s.legend};a.push(l)}}var u=["legend"];for(i=0;i<a.length;i++)Kp.pushUnique(u,a[i].legend);for(r._legends=[],i=0;i<u.length;i++){var c=u[i];vst(c,t,r,a),r[c]&&r[c].visible&&(r[c]._id=c),r._legends.push(c)}}});var Wse=ye((Orr,jse)=>{"use strict";var D3=ba(),TB=Mr(),pst=TB.pushUnique,wB=!0;jse.exports=function(t,r,n){var i=r._fullLayout;if(r._dragged||r._editing)return;var a=i.legend.itemclick,o=i.legend.itemdoubleclick,s=i.legend.groupclick;n===1&&a==="toggle"&&o==="toggleothers"&&wB&&r.data&&r._context.showTips&&TB.notifier(TB._(r,"Double-click on legend to isolate one trace"),"long"),wB=!1;var l;if(n===1?l=a:n===2&&(l=o),!l)return;var u=s==="togglegroup",c=i.hiddenlabels?i.hiddenlabels.slice():[],f=t.data()[0][0];if(f.groupTitle&&f.noClick)return;var h=r._fullData,d=(i.shapes||[]).filter(function(Rt){return Rt.showlegend}),v=h.concat(d),x=f.trace;x._isShape&&(x=x._fullInput);var b=x.legendgroup,p,E,k,A,L,_,C={},M=[],g=[],P=[];function T(Rt,kt){var Ct=M.indexOf(Rt),Yt=C.visible;return Yt||(Yt=C.visible=[]),M.indexOf(Rt)===-1&&(M.push(Rt),Ct=M.length-1),Yt[Ct]=kt,Ct}var F=(i.shapes||[]).map(function(Rt){return Rt._input}),q=!1;function V(Rt,kt){F[Rt].visible=kt,q=!0}function H(Rt,kt){if(!(f.groupTitle&&!u)){var Ct=Rt._fullInput||Rt,Yt=Ct._isShape,xr=Ct.index;xr===void 0&&(xr=Ct._index);var er=Ct.visible===!1?!1:kt;Yt?V(xr,er):T(xr,er)}}var X=x.legend,G=x._fullInput,N=G&&G._isShape;if(!N&&D3.traceIs(x,"pie-like")){var W=f.label,re=c.indexOf(W);if(l==="toggle")re===-1?c.push(W):c.splice(re,1);else if(l==="toggleothers"){var ae=re!==-1,_e=[];for(p=0;p<r.calcdata.length;p++){var Me=r.calcdata[p];for(E=0;E<Me.length;E++){var ke=Me[E],ge=ke.label;X===Me[0].trace.legend&&W!==ge&&(c.indexOf(ge)===-1&&(ae=!0),pst(c,ge),_e.push(ge))}}if(!ae)for(var ie=0;ie<_e.length;ie++){var Te=c.indexOf(_e[ie]);Te!==-1&&c.splice(Te,1)}}D3.call("_guiRelayout",r,"hiddenlabels",c)}else{var Ee=b&&b.length,Ae=[],ze;if(Ee)for(p=0;p<v.length;p++)ze=v[p],ze.visible&&ze.legendgroup===b&&Ae.push(p);if(l==="toggle"){var Ce;switch(x.visible){case!0:Ce="legendonly";break;case!1:Ce=!1;break;case"legendonly":Ce=!0;break}if(Ee)if(u)for(p=0;p<v.length;p++){var me=v[p];me.visible!==!1&&me.legendgroup===b&&H(me,Ce)}else H(x,Ce);else H(x,Ce)}else if(l==="toggleothers"){var Re,ce,Ge,nt,ct,qt=!0;for(p=0;p<v.length;p++)if(ct=v[p],Re=ct===x,Ge=ct.showlegend!==!0,!(Re||Ge)&&(ce=Ee&&ct.legendgroup===b,!ce&&ct.legend===X&&ct.visible===!0&&!D3.traceIs(ct,"notLegendIsolatable"))){qt=!1;break}for(p=0;p<v.length;p++)if(ct=v[p],!(ct.visible===!1||ct.legend!==X)&&!D3.traceIs(ct,"notLegendIsolatable"))switch(x.visible){case"legendonly":H(ct,!0);break;case!0:nt=qt?!0:"legendonly",Re=ct===x,Ge=ct.showlegend!==!0&&!ct.legendgroup,ce=Re||Ee&&ct.legendgroup===b,H(ct,ce||Ge?!0:nt);break}}for(p=0;p<g.length;p++)if(k=g[p],!!k){var rt=k.constructUpdate(),ot=Object.keys(rt);for(E=0;E<ot.length;E++)A=ot[E],_=C[A]=C[A]||[],_[P[p]]=rt[A]}for(L=Object.keys(C),p=0;p<L.length;p++)for(A=L[p],E=0;E<M.length;E++)C[A].hasOwnProperty(E)||(C[A][E]=void 0);q?D3.call("_guiUpdate",r,C,{shapes:F},M):D3.call("_guiRestyle",r,C,M)}}});var AB=ye((Brr,Zse)=>{"use strict";Zse.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4,scrollBarEnterAttrs:{rx:20,ry:3,width:0,height:0},titlePad:2,itemGap:5}});var Kse=ye((Nrr,Yse)=>{"use strict";var Xse=ba(),SB=LL();Yse.exports=function(t,r,n){var i=r._inHover,a=SB.isGrouped(r),o=SB.isReversed(r),s={},l=[],u=!1,c={},f=0,h=0,d,v;function x(G,N,W){if(r.visible!==!1&&!(n&&G!==r._id))if(N===""||!SB.isGrouped(r)){var re="~~i"+f;l.push(re),s[re]=[W],f++}else l.indexOf(N)===-1?(l.push(N),u=!0,s[N]=[W]):s[N].push(W)}for(d=0;d<t.length;d++){var b=t[d],p=b[0],E=p.trace,k=E.legend,A=E.legendgroup;if(!(!i&&(!E.visible||!E.showlegend)))if(Xse.traceIs(E,"pie-like"))for(c[A]||(c[A]={}),v=0;v<b.length;v++){var L=b[v].label;c[A][L]||(x(k,A,{label:L,color:b[v].color,i:b[v].i,trace:E,pts:b[v].pts}),c[A][L]=!0,h=Math.max(h,(L||"").length))}else x(k,A,p),h=Math.max(h,(E.name||"").length)}if(!l.length)return[];var _=!u||!a,C=[];for(d=0;d<l.length;d++){var M=s[l[d]];_?C.push(M[0]):C.push(M)}for(_&&(C=[C]),d=0;d<C.length;d++){var g=1/0;for(v=0;v<C[d].length;v++){var P=C[d][v].trace.legendrank;g>P&&(g=P)}C[d][0]._groupMinRank=g,C[d][0]._preGroupSort=d}var T=function(G,N){return G[0]._groupMinRank-N[0]._groupMinRank||G[0]._preGroupSort-N[0]._preGroupSort},F=function(G,N){return G.trace.legendrank-N.trace.legendrank||G._preSort-N._preSort};for(C.forEach(function(G,N){G[0]._preGroupSort=N}),C.sort(T),d=0;d<C.length;d++){C[d].forEach(function(G,N){G._preSort=N}),C[d].sort(F);var q=C[d][0].trace,V=null;for(v=0;v<C[d].length;v++){var H=C[d][v].trace.legendgrouptitle;if(H&&H.text){V=H,i&&(H.font=r._groupTitleFont);break}}if(o&&C[d].reverse(),V){var X=!1;for(v=0;v<C[d].length;v++)if(Xse.traceIs(C[d][v].trace,"pie-like")){X=!0;break}C[d].unshift({i:-1,groupTitle:V,noClick:X,trace:{showlegend:q.showlegend,legendgroup:q.legendgroup,visible:r.groupclick==="toggleitem"?!0:q.visible}})}for(v=0;v<C[d].length;v++)C[d][v]=[C[d][v]]}return r._lgroupsLength=C.length,r._maxNameLength=h,C}});var u_=ye(Pb=>{"use strict";var PL=Mr();function Jse(e){return e.indexOf("e")!==-1?e.replace(/[.]?0+e/,"e"):e.indexOf(".")!==-1?e.replace(/[.]?0+$/,""):e}Pb.formatPiePercent=function(t,r){var n=Jse((t*100).toPrecision(3));return PL.numSeparate(n,r)+"%"};Pb.formatPieValue=function(t,r){var n=Jse(t.toPrecision(10));return PL.numSeparate(n,r)};Pb.getFirstFilled=function(t,r){if(PL.isArrayOrTypedArray(t))for(var n=0;n<r.length;n++){var i=t[r[n]];if(i||i===0||i==="")return i}};Pb.castOption=function(t,r){if(PL.isArrayOrTypedArray(t))return Pb.getFirstFilled(t,r);if(t)return t};Pb.getRotationAngle=function(e){return(e==="auto"?0:e)*Math.PI/180}});var Qse=ye((Vrr,$se)=>{"use strict";var gst=ao(),mst=va();$se.exports=function(t,r,n,i){var a=n.marker.pattern;a&&a.shape?gst.pointStyle(t,n,i,r):mst.fill(t,r.color)}});var z3=ye((Hrr,rle)=>{"use strict";var ele=va(),tle=u_().castOption,yst=Qse();rle.exports=function(t,r,n,i){var a=n.marker.line,o=tle(a.color,r.pts)||ele.defaultLine,s=tle(a.width,r.pts)||0;t.call(yst,r,n,i).style("stroke-width",s).call(ele.stroke,o)}});var CB=ye((Grr,lle)=>{"use strict";var qv=xa(),MB=ba(),mv=Mr(),ile=mv.strTranslate,ip=ao(),T0=va(),EB=Dv().extractOpts,IL=lu(),_st=z3(),xst=u_().castOption,bst=AB(),nle=12,ale=5,Ib=2,wst=10,F3=5;lle.exports=function(t,r,n){var i=r._fullLayout;n||(n=i.legend);var a=n.itemsizing==="constant",o=n.itemwidth,s=(o+bst.itemGap*2)/2,l=ile(s,0),u=function(C,M,g,P){var T;if(C+1)T=C;else if(M&&M.width>0)T=M.width;else return 0;return a?P:Math.min(T,g)};t.each(function(C){var M=qv.select(this),g=mv.ensureSingle(M,"g","layers");g.style("opacity",C[0].trace.opacity);var P=n.indentation,T=n.valign,F=C[0].lineHeight,q=C[0].height;if(T==="middle"&&P===0||!F||!q)g.attr("transform",null);else{var V={top:1,bottom:-1}[T],H=V*(.5*(F-q+3))||0,X=n.indentation;g.attr("transform",ile(X,H))}var G=g.selectAll("g.legendfill").data([C]);G.enter().append("g").classed("legendfill",!0);var N=g.selectAll("g.legendlines").data([C]);N.enter().append("g").classed("legendlines",!0);var W=g.selectAll("g.legendsymbols").data([C]);W.enter().append("g").classed("legendsymbols",!0),W.selectAll("g.legendpoints").data([C]).enter().append("g").classed("legendpoints",!0)}).each(_).each(h).each(v).each(d).each(b).each(A).each(k).each(c).each(f).each(p).each(E);function c(C){var M=ole(C),g=M.showFill,P=M.showLine,T=M.showGradientLine,F=M.showGradientFill,q=M.anyFill,V=M.anyLine,H=C[0],X=H.trace,G,N,W=EB(X),re=W.colorscale,ae=W.reversescale,_e=function(Ae){if(Ae.size())if(g)ip.fillGroupStyle(Ae,r,!0);else{var ze="legendfill-"+X.uid;ip.gradient(Ae,r,ze,kB(ae),re,"fill")}},Me=function(Ae){if(Ae.size()){var ze="legendline-"+X.uid;ip.lineGroupStyle(Ae),ip.gradient(Ae,r,ze,kB(ae),re,"stroke")}},ke=IL.hasMarkers(X)||!q?"M5,0":V?"M5,-2":"M5,-3",ge=qv.select(this),ie=ge.select(".legendfill").selectAll("path").data(g||F?[C]:[]);if(ie.enter().append("path").classed("js-fill",!0),ie.exit().remove(),ie.attr("d",ke+"h"+o+"v6h-"+o+"z").call(_e),P||T){var Te=u(void 0,X.line,wst,ale);N=mv.minExtend(X,{line:{width:Te}}),G=[mv.minExtend(H,{trace:N})]}var Ee=ge.select(".legendlines").selectAll("path").data(P||T?[G]:[]);Ee.enter().append("path").classed("js-line",!0),Ee.exit().remove(),Ee.attr("d",ke+(T?"l"+o+",0.0001":"h"+o)).call(P?ip.lineGroupStyle:Me)}function f(C){var M=ole(C),g=M.anyFill,P=M.anyLine,T=M.showLine,F=M.showMarker,q=C[0],V=q.trace,H=!F&&!P&&!g&&IL.hasText(V),X,G;function N(ie,Te,Ee,Ae){var ze=mv.nestedProperty(V,ie).get(),Ce=mv.isArrayOrTypedArray(ze)&&Te?Te(ze):ze;if(a&&Ce&&Ae!==void 0&&(Ce=Ae),Ee){if(Ce<Ee[0])return Ee[0];if(Ce>Ee[1])return Ee[1]}return Ce}function W(ie){return q._distinct&&q.index&&ie[q.index]?ie[q.index]:ie[0]}if(F||H||T){var re={},ae={};if(F){re.mc=N("marker.color",W),re.mx=N("marker.symbol",W),re.mo=N("marker.opacity",mv.mean,[.2,1]),re.mlc=N("marker.line.color",W),re.mlw=N("marker.line.width",mv.mean,[0,5],Ib),ae.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var _e=N("marker.size",mv.mean,[2,16],nle);re.ms=_e,ae.marker.size=_e}T&&(ae.line={width:N("line.width",W,[0,10],ale)}),H&&(re.tx="Aa",re.tp=N("textposition",W),re.ts=10,re.tc=N("textfont.color",W),re.tf=N("textfont.family",W),re.tw=N("textfont.weight",W),re.ty=N("textfont.style",W),re.tv=N("textfont.variant",W),re.tC=N("textfont.textcase",W),re.tE=N("textfont.lineposition",W),re.tS=N("textfont.shadow",W)),X=[mv.minExtend(q,re)],G=mv.minExtend(V,ae),G.selectedpoints=null,G.texttemplate=null}var Me=qv.select(this).select("g.legendpoints"),ke=Me.selectAll("path.scatterpts").data(F?X:[]);ke.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",l),ke.exit().remove(),ke.call(ip.pointStyle,G,r),F&&(X[0].mrc=3);var ge=Me.selectAll("g.pointtext").data(H?X:[]);ge.enter().append("g").classed("pointtext",!0).append("text").attr("transform",l),ge.exit().remove(),ge.selectAll("text").call(ip.textPointStyle,G,r)}function h(C){var M=C[0].trace,g=M.type==="waterfall";if(C[0]._distinct&&g){var P=C[0].trace[C[0].dir].marker;return C[0].mc=P.color,C[0].mlw=P.line.width,C[0].mlc=P.line.color,x(C,this,"waterfall")}var T=[];M.visible&&g&&(T=C[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var F=qv.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(T);F.enter().append("path").classed("legendwaterfall",!0).attr("transform",l).style("stroke-miterlimit",1),F.exit().remove(),F.each(function(q){var V=qv.select(this),H=M[q[0]].marker,X=u(void 0,H.line,F3,Ib);V.attr("d",q[1]).style("stroke-width",X+"px").call(T0.fill,H.color),X&&V.call(T0.stroke,H.line.color)})}function d(C){x(C,this)}function v(C){x(C,this,"funnel")}function x(C,M,g){var P=C[0].trace,T=P.marker||{},F=T.line||{},q=T.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",V=g?P.visible&&P.type===g:MB.traceIs(P,"bar"),H=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(V?[C]:[]);H.enter().append("path").classed("legend"+g,!0).attr("d",q).attr("transform",l),H.exit().remove(),H.each(function(X){var G=qv.select(this),N=X[0],W=u(N.mlw,T.line,F3,Ib);G.style("stroke-width",W+"px");var re=N.mcc;if(!n._inHover&&"mc"in N){var ae=EB(T),_e=ae.mid;_e===void 0&&(_e=(ae.max+ae.min)/2),re=ip.tryColorscale(T,"")(_e)}var Me=re||N.mc||T.color,ke=T.pattern,ge=ke&&ip.getPatternAttr(ke.shape,0,"");if(ge){var ie=ip.getPatternAttr(ke.bgcolor,0,null),Te=ip.getPatternAttr(ke.fgcolor,0,null),Ee=ke.fgopacity,Ae=sle(ke.size,8,10),ze=sle(ke.solidity,.5,1),Ce="legend-"+P.uid;G.call(ip.pattern,"legend",r,Ce,ge,Ae,ze,re,ke.fillmode,ie,Te,Ee)}else G.call(T0.fill,Me);W&&T0.stroke(G,N.mlc||F.color)})}function b(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendbox").data(M.visible&&MB.traceIs(M,"box-violin")?[C]:[]);g.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),g.exit().remove(),g.each(function(){var P=qv.select(this);if((M.boxpoints==="all"||M.points==="all")&&T0.opacity(M.fillcolor)===0&&T0.opacity((M.line||{}).color)===0){var T=mv.minExtend(M,{marker:{size:a?nle:mv.constrain(M.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});g.call(ip.pointStyle,T,r)}else{var F=u(void 0,M.line,F3,Ib);P.style("stroke-width",F+"px").call(T0.fill,M.fillcolor),F&&T0.stroke(P,M.line.color)}})}function p(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(M.visible&&M.type==="candlestick"?[C,C]:[]);g.enter().append("path").classed("legendcandle",!0).attr("d",function(P,T){return T?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("stroke-width",V+"px").call(T0.fill,q.fillcolor),V&&T0.stroke(F,q.line.color)})}function E(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(M.visible&&M.type==="ohlc"?[C,C]:[]);g.enter().append("path").classed("legendohlc",!0).attr("d",function(P,T){return T?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("fill","none").call(ip.dashLine,q.line.dash,V),V&&T0.stroke(F,q.line.color)})}function k(C){L(C,this,"pie")}function A(C){L(C,this,"funnelarea")}function L(C,M,g){var P=C[0],T=P.trace,F=g?T.visible&&T.type===g:MB.traceIs(T,g),q=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(F?[C]:[]);if(q.enter().append("path").classed("legend"+g,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),q.exit().remove(),q.size()){var V=T.marker||{},H=u(xst(V.line.width,P.pts),V.line,F3,Ib),X="pieLike",G=mv.minExtend(T,{marker:{line:{width:H}}},X),N=mv.minExtend(P,{trace:G},X);_st(q,N,G,r)}}function _(C){var M=C[0].trace,g,P=[];if(M.visible)switch(M.type){case"histogram2d":case"heatmap":P=[["M-15,-2V4H15V-2Z"]],g=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":P=[["M-6,-6V6H6V-6Z"]],g=!0;break;case"densitymapbox":case"densitymap":P=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],g="radial";break;case"cone":P=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],g=!1;break;case"streamtube":P=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],g=!1;break;case"surface":P=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],g=!0;break;case"mesh3d":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!1;break;case"volume":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!0;break;case"isosurface":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],g=!1;break}var T=qv.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(P);T.enter().append("path").classed("legend3dandfriends",!0).attr("transform",l).style("stroke-miterlimit",1),T.exit().remove(),T.each(function(F,q){var V=qv.select(this),H=EB(M),X=H.colorscale,G=H.reversescale,N=function(_e){if(_e.size()){var Me="legendfill-"+M.uid;ip.gradient(_e,r,Me,kB(G,g==="radial"),X,"fill")}},W;if(X){if(!g){var ae=X.length;W=q===0?X[G?ae-1:0][1]:q===1?X[G?0:ae-1][1]:X[Math.floor((ae-1)/2)][1]}}else{var re=M.vertexcolor||M.facecolor||M.color;W=mv.isArrayOrTypedArray(re)?re[q]||re[0]:re}V.attr("d",F[0]),W?V.call(T0.fill,W):V.call(N)})}};function kB(e,t){var r=t?"radial":"horizontal";return r+(e?"":"reversed")}function ole(e){var t=e[0].trace,r=t.contours,n=IL.hasLines(t),i=IL.hasMarkers(t),a=t.visible&&t.fill&&t.fill!=="none",o=!1,s=!1;if(r){var l=r.coloring;l==="lines"?o=!0:n=l==="none"||l==="heatmap"||r.showlines,r.type==="constraint"?a=r._operation!=="=":(l==="fill"||l==="heatmap")&&(s=!0)}return{showMarker:i,showLine:n,showFill:a,showGradientLine:o,showGradientFill:s,anyLine:n||o,anyFill:a||s}}function sle(e,t,r){return e&&mv.isArrayOrTypedArray(e)?t:e>r?r:e}});var RB=ye((jrr,yle)=>{"use strict";var Sp=xa(),gh=Mr(),PB=Xu(),B3=ba(),ule=g3(),LB=gv(),mh=ao(),DL=va(),Rb=Pl(),cle=Wse(),Vh=AB(),IB=Nh(),gle=IB.LINE_SPACING,O3=IB.FROM_TL,fle=IB.FROM_BR,hle=Kse(),Tst=CB(),dle=LL(),q3=1,Ast=/^legend[0-9]*$/;yle.exports=function(t,r){if(r)vle(t,r);else{var n=t._fullLayout,i=n._legends,a=n._infolayer.selectAll('[class^="legend"]');a.each(function(){var u=Sp.select(this),c=u.attr("class"),f=c.split(" ")[0];f.match(Ast)&&i.indexOf(f)===-1&&u.remove()});for(var o=0;o<i.length;o++){var s=i[o],l=t._fullLayout[s];vle(t,l)}}};function Sst(e,t,r){if(!(t.title.side!=="top center"&&t.title.side!=="top right")){var n=t.title.font,i=n.size*gle,a=0,o=e.node(),s=mh.bBox(o).width;t.title.side==="top center"?a=.5*(t._width-2*r-2*Vh.titlePad-s):t.title.side==="top right"&&(a=t._width-2*r-2*Vh.titlePad-s),Rb.positionText(e,r+Vh.titlePad+a,r+i)}}function vle(e,t){var r=t||{},n=e._fullLayout,i=OL(r),a,o,s=r._inHover;if(s?(o=r.layer,a="hover"):(o=n._infolayer,a=i),!!o){a+=n._uid,e._legendMouseDownTime||(e._legendMouseDownTime=0);var l;if(s){if(!r.entries)return;l=hle(r.entries,r)}else{for(var u=(e.calcdata||[]).slice(),c=n.shapes,f=0;f<c.length;f++){var h=c[f];if(h.showlegend){var d={_isShape:!0,_fullInput:h,index:h._index,name:h.name||h.label.text||"shape "+h._index,legend:h.legend,legendgroup:h.legendgroup,legendgrouptitle:h.legendgrouptitle,legendrank:h.legendrank,legendwidth:h.legendwidth,showlegend:h.showlegend,visible:h.visible,opacity:h.opacity,mode:h.type==="line"?"lines":"markers",line:h.line,marker:{line:h.line,color:h.fillcolor,size:12,symbol:h.type==="rect"?"square":h.type==="circle"?"circle":"hexagon2"}};u.push([{trace:d}])}}l=n.showlegend&&hle(u,r,n._legends.length>1)}var v=n.hiddenlabels||[];if(!s&&(!n.showlegend||!l.length))return o.selectAll("."+i).remove(),n._topdefs.select("#"+a).remove(),PB.autoMargin(e,i);var x=gh.ensureSingle(o,"g",i,function(M){s||M.attr("pointer-events","all")}),b=gh.ensureSingleById(n._topdefs,"clipPath",a,function(M){M.append("rect")}),p=gh.ensureSingle(x,"rect","bg",function(M){M.attr("shape-rendering","crispEdges")});p.call(DL.stroke,r.bordercolor).call(DL.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px");var E=gh.ensureSingle(x,"g","scrollbox"),k=r.title;r._titleWidth=0,r._titleHeight=0;var A;k.text?(A=gh.ensureSingle(E,"text",i+"titletext"),A.attr("text-anchor","start").call(mh.font,k.font).text(k.text),zL(A,E,e,r,q3)):E.selectAll("."+i+"titletext").remove();var L=gh.ensureSingle(x,"rect","scrollbar",function(M){M.attr(Vh.scrollBarEnterAttrs).call(DL.fill,Vh.scrollBarColor)}),_=E.selectAll("g.groups").data(l);_.enter().append("g").attr("class","groups"),_.exit().remove();var C=_.selectAll("g.traces").data(gh.identity);C.enter().append("g").attr("class","traces"),C.exit().remove(),C.style("opacity",function(M){var g=M[0].trace;return B3.traceIs(g,"pie-like")?v.indexOf(M[0].label)!==-1?.5:1:g.visible==="legendonly"?.5:1}).each(function(){Sp.select(this).call(Mst,e,r)}).call(Tst,e,r).each(function(){s||Sp.select(this).call(Est,e,i)}),gh.syncOrAsync([PB.previousPromises,function(){return Lst(e,_,C,r)},function(){var M=n._size,g=r.borderwidth,P=r.xref==="paper",T=r.yref==="paper";if(k.text&&Sst(A,r,g),!s){var F,q;P?F=M.l+M.w*r.x-O3[FL(r)]*r._width:F=n.width*r.x-O3[FL(r)]*r._width,T?q=M.t+M.h*(1-r.y)-O3[qL(r)]*r._effHeight:q=n.height*(1-r.y)-O3[qL(r)]*r._effHeight;var V=Pst(e,i,F,q);if(V)return;if(n.margin.autoexpand){var H=F,X=q;F=P?gh.constrain(F,0,n.width-r._width):H,q=T?gh.constrain(q,0,n.height-r._effHeight):X,F!==H&&gh.log("Constrain "+i+".x to make legend fit inside graph"),q!==X&&gh.log("Constrain "+i+".y to make legend fit inside graph")}mh.setTranslate(x,F,q)}if(L.on(".drag",null),x.on("wheel",null),s||r._height<=r._maxHeight||e._context.staticPlot){var G=r._effHeight;s&&(G=r._height),p.attr({width:r._width-g,height:G-g,x:g/2,y:g/2}),mh.setTranslate(E,0,0),b.select("rect").attr({width:r._width-2*g,height:G-2*g,x:g,y:g}),mh.setClipUrl(E,a,e),mh.setRect(L,0,0,0,0),delete r._scrollY}else{var N=Math.max(Vh.scrollBarMinHeight,r._effHeight*r._effHeight/r._height),W=r._effHeight-N-2*Vh.scrollBarMargin,re=r._height-r._effHeight,ae=W/re,_e=Math.min(r._scrollY||0,re);p.attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-g,x:g/2,y:g/2}),b.select("rect").attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-2*g,x:g,y:g+_e}),mh.setClipUrl(E,a,e),ze(_e,N,ae),x.on("wheel",function(){_e=gh.constrain(r._scrollY+Sp.event.deltaY/W*re,0,re),ze(_e,N,ae),_e!==0&&_e!==re&&Sp.event.preventDefault()});var Me,ke,ge,ie=function(Ge,nt,ct){var qt=(ct-nt)/ae+Ge;return gh.constrain(qt,0,re)},Te=function(Ge,nt,ct){var qt=(nt-ct)/ae+Ge;return gh.constrain(qt,0,re)},Ee=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"?Me=Ge.changedTouches[0].clientY:Me=Ge.clientY,ge=_e}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.buttons===2||Ge.ctrlKey||(Ge.type==="touchmove"?ke=Ge.changedTouches[0].clientY:ke=Ge.clientY,_e=ie(ge,Me,ke),ze(_e,N,ae))});L.call(Ee);var Ae=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"&&(Me=Ge.changedTouches[0].clientY,ge=_e)}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchmove"&&(ke=Ge.changedTouches[0].clientY,_e=Te(ge,Me,ke),ze(_e,N,ae))});E.call(Ae)}function ze(Ge,nt,ct){r._scrollY=e._fullLayout[i]._scrollY=Ge,mh.setTranslate(E,0,-Ge),mh.setRect(L,r._width,Vh.scrollBarMargin+Ge*ct,Vh.scrollBarWidth,nt),b.select("rect").attr("y",g+Ge)}if(e._context.edits.legendPosition){var Ce,me,Re,ce;x.classed("cursor-move",!0),LB.init({element:x.node(),gd:e,prepFn:function(Ge){if(Ge.target!==L.node()){var nt=mh.getTranslate(x);Re=nt.x,ce=nt.y}},moveFn:function(Ge,nt){if(Re!==void 0&&ce!==void 0){var ct=Re+Ge,qt=ce+nt;mh.setTranslate(x,ct,qt),Ce=LB.align(ct,r._width,M.l,M.l+M.w,r.xanchor),me=LB.align(qt+r._height,-r._height,M.t+M.h,M.t,r.yanchor)}},doneFn:function(){if(Ce!==void 0&&me!==void 0){var Ge={};Ge[i+".x"]=Ce,Ge[i+".y"]=me,B3.call("_guiRelayout",e,Ge)}},clickFn:function(Ge,nt){var ct=o.selectAll("g.traces").filter(function(){var qt=this.getBoundingClientRect();return nt.clientX>=qt.left&&nt.clientX<=qt.right&&nt.clientY>=qt.top&&nt.clientY<=qt.bottom});ct.size()>0&&mle(e,x,ct,Ge,nt)}})}}],e)}}function RL(e,t,r){var n=e[0],i=n.width,a=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return a==="fraction"?t._maxWidth*o:r+(o||i)}function mle(e,t,r,n,i){var a=r.data()[0][0].trace,o={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a.index,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};a._group&&(o.group=a._group),B3.traceIs(a,"pie-like")&&(o.label=r.datum()[0].label);var s=ule.triggerHandler(e,"plotly_legendclick",o);if(n===1){if(s===!1)return;t._clickTimeout=setTimeout(function(){e._fullLayout&&cle(r,e,n)},e._context.doubleClickDelay)}else if(n===2){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0;var l=ule.triggerHandler(e,"plotly_legenddoubleclick",o);l!==!1&&s!==!1&&cle(r,e,n)}}function Mst(e,t,r){var n=OL(r),i=e.data()[0][0],a=i.trace,o=B3.traceIs(a,"pie-like"),s=!r._inHover&&t._context.edits.legendText&&!o,l=r._maxNameLength,u,c;i.groupTitle?(u=i.groupTitle.text,c=i.groupTitle.font):(c=r.font,r.entries?u=i.text:(u=o?i.label:a.name,a._meta&&(u=gh.templateString(u,a._meta))));var f=gh.ensureSingle(e,"text",n+"text");f.attr("text-anchor","start").call(mh.font,c).text(s?ple(u,l):u);var h=r.indentation+r.itemwidth+Vh.itemGap*2;Rb.positionText(f,h,0),s?f.call(Rb.makeEditable,{gd:t,text:u}).call(zL,e,t,r).on("edit",function(d){this.text(ple(d,l)).call(zL,e,t,r);var v=i.trace._fullInput||{},x={};return x.name=d,v._isShape?B3.call("_guiRelayout",t,"shapes["+a.index+"].name",x.name):B3.call("_guiRestyle",t,x,a.index)}):zL(f,e,t,r)}function ple(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;e=e||"";for(var n=r-e.length;n>0;n--)e+=" ";return e}function Est(e,t,r){var n=t._context.doubleClickDelay,i,a=1,o=gh.ensureSingle(e,"rect",r+"toggle",function(s){t._context.staticPlot||s.style("cursor","pointer").attr("pointer-events","all"),s.call(DL.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(o.on("mousedown",function(){i=new Date().getTime(),i-t._legendMouseDownTime<n?a+=1:(a=1,t._legendMouseDownTime=i)}),o.on("mouseup",function(){if(!(t._dragged||t._editing)){var s=t._fullLayout[r];new Date().getTime()-t._legendMouseDownTime>n&&(a=Math.max(a-1,1)),mle(t,s,e,a,Sp.event)}}))}function zL(e,t,r,n,i){n._inHover&&e.attr("data-notex",!0),Rb.convertToTspans(e,r,function(){kst(t,r,n,i)})}function kst(e,t,r,n){var i=e.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend){e.remove();return}var a=e.select("g[class*=math-group]"),o=a.node(),s=OL(r);r||(r=t._fullLayout[s]);var l=r.borderwidth,u;n===q3?u=r.title.font:i.groupTitle?u=i.groupTitle.font:u=r.font;var c=u.size*gle,f,h;if(o){var d=mh.bBox(o);f=d.height,h=d.width,n===q3?mh.setTranslate(a,l,l+f*.75):mh.setTranslate(a,0,f*.25)}else{var v="."+s+(n===q3?"title":"")+"text",x=e.select(v),b=Rb.lineCount(x),p=x.node();if(f=c*b,h=p?mh.bBox(p).width:0,n===q3)r.title.side==="left"&&(h+=Vh.itemGap*2),Rb.positionText(x,l+Vh.titlePad,l+c);else{var E=Vh.itemGap*2+r.indentation+r.itemwidth;i.groupTitle&&(E=Vh.itemGap,h-=r.indentation+r.itemwidth),Rb.positionText(x,E,-c*((b-1)/2-.3))}}n===q3?(r._titleWidth=h,r._titleHeight=f):(i.lineHeight=c,i.height=Math.max(f,16)+3,i.width=h)}function Cst(e){var t=0,r=0,n=e.title.side;return n&&(n.indexOf("left")!==-1&&(t=e._titleWidth),n.indexOf("top")!==-1&&(r=e._titleHeight)),[t,r]}function Lst(e,t,r,n){var i=e._fullLayout,a=OL(n);n||(n=i[a]);var o=i._size,s=dle.isVertical(n),l=dle.isGrouped(n),u=n.entrywidthmode==="fraction",c=n.borderwidth,f=2*c,h=Vh.itemGap,d=n.indentation+n.itemwidth+h*2,v=2*(c+h),x=qL(n),b=n.y<0||n.y===0&&x==="top",p=n.y>1||n.y===1&&x==="bottom",E=n.tracegroupgap,k={};n._maxHeight=Math.max(b||p?i.height/2:o.h,30);var A=0;n._width=0,n._height=0;var L=Cst(n);if(s)r.each(function(ge){var ie=ge[0].height;mh.setTranslate(this,c+L[0],c+L[1]+n._height+ie/2+h),n._height+=ie,n._width=Math.max(n._width,ge[0].width)}),A=d+n._width,n._width+=h+d+f,n._height+=v,l&&(t.each(function(ge,ie){mh.setTranslate(this,0,ie*n.tracegroupgap)}),n._height+=(n._lgroupsLength-1)*n.tracegroupgap);else{var _=FL(n),C=n.x<0||n.x===0&&_==="right",M=n.x>1||n.x===1&&_==="left",g=p||b,P=i.width/2;n._maxWidth=Math.max(C?g&&_==="left"?o.l+o.w:P:M?g&&_==="right"?o.r+o.w:P:o.w,2*d);var T=0,F=0;r.each(function(ge){var ie=RL(ge,n,d);T=Math.max(T,ie),F+=ie}),A=null;var q=0;if(l){var V=0,H=0,X=0;t.each(function(){var ge=0,ie=0;Sp.select(this).selectAll("g.traces").each(function(Ee){var Ae=RL(Ee,n,d),ze=Ee[0].height;mh.setTranslate(this,L[0],L[1]+c+h+ze/2+ie),ie+=ze,ge=Math.max(ge,Ae),k[Ee[0].trace.legendgroup]=ge});var Te=ge+h;H>0&&Te+c+H>n._maxWidth?(q=Math.max(q,H),H=0,X+=V+E,V=ie):V=Math.max(V,ie),mh.setTranslate(this,H,X),H+=Te}),n._width=Math.max(q,H)+c,n._height=X+V+v}else{var G=r.size(),N=F+f+(G-1)*h<n._maxWidth,W=0,re=0,ae=0,_e=0;r.each(function(ge){var ie=ge[0].height,Te=RL(ge,n,d,l),Ee=N?Te:T;u||(Ee+=h),Ee+c+re-h>=n._maxWidth&&(q=Math.max(q,_e),re=0,ae+=W,n._height+=W,W=0),mh.setTranslate(this,L[0]+c+re,L[1]+c+ae+ie/2+h),_e=re+Te+h,re+=Ee,W=Math.max(W,ie)}),N?(n._width=re+f,n._height=W+v):(n._width=Math.max(q,_e)+f,n._height+=W+v)}}n._width=Math.ceil(Math.max(n._width+L[0],n._titleWidth+2*(c+Vh.titlePad))),n._height=Math.ceil(Math.max(n._height+L[1],n._titleHeight+2*(c+Vh.itemGap))),n._effHeight=Math.min(n._height,n._maxHeight);var Me=e._context.edits,ke=Me.legendText||Me.legendPosition;r.each(function(ge){var ie=Sp.select(this).select("."+a+"toggle"),Te=ge[0].height,Ee=ge[0].trace.legendgroup,Ae=RL(ge,n,d);l&&Ee!==""&&(Ae=k[Ee]);var ze=ke?d:A||Ae;!s&&!u&&(ze+=h/2),mh.setRect(ie,0,-Te/2,ze,Te)})}function Pst(e,t,r,n){var i=e._fullLayout,a=i[t],o=FL(a),s=qL(a),l=a.xref==="paper",u=a.yref==="paper";e._fullLayout._reservedMargin[t]={};var c=a.y<.5?"b":"t",f=a.x<.5?"l":"r",h={r:i.width-r,l:r+a._width,b:i.height-n,t:n+a._effHeight};if(l&&u)return PB.autoMargin(e,t,{x:a.x,y:a.y,l:a._width*O3[o],r:a._width*fle[o],b:a._effHeight*fle[s],t:a._effHeight*O3[s]});l?e._fullLayout._reservedMargin[t][c]=h[c]:u||a.orientation==="v"?e._fullLayout._reservedMargin[t][f]=h[f]:e._fullLayout._reservedMargin[t][c]=h[c]}function FL(e){return gh.isRightAnchor(e)?"right":gh.isCenterAnchor(e)?"center":"left"}function qL(e){return gh.isBottomAnchor(e)?"bottom":gh.isMiddleAnchor(e)?"middle":"top"}function OL(e){return e._id||"legend"}});var qB=ye(FB=>{"use strict";var Db=xa(),Sy=uo(),_le=id(),Rf=Mr(),Ist=Rf.pushUnique,DB=Rf.strTranslate,Rst=Rf.strRotate,Dst=g3(),A0=Pl(),zst=Vse(),bm=ao(),sd=va(),BL=gv(),wm=Qa(),Fst=ad().zindexSeparator,U3=ba(),Ag=rp(),zb=IS(),qst=bB(),Ost=RB(),Ele=zb.YANGLE,zB=Math.PI*Ele/180,Bst=1/Math.sin(zB),Nst=Math.cos(zB),Ust=Math.sin(zB),Bc=zb.HOVERARROWSIZE,Us=zb.HOVERTEXTPAD,xle={box:!0,ohlc:!0,violin:!0,candlestick:!0},Vst={scatter:!0,scattergl:!0,splom:!0};function ble(e,t){return e.distance-t.distance}FB.hover=function(t,r,n,i){t=Rf.getGraphDiv(t);var a=r.target;Rf.throttle(t._fullLayout._uid+zb.HOVERID,zb.HOVERMINTIME,function(){Hst(t,r,n,i,a)})};FB.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Ile(i),o=Rle(i),s=t.map(function(b){var p=b._x0||b.x0||b.x||0,E=b._x1||b.x1||b.x||0,k=b._y0||b.y0||b.y||0,A=b._y1||b.y1||b.y||0,L=b.eventData;if(L){var _=Math.min(p,E),C=Math.max(p,E),M=Math.min(k,A),g=Math.max(k,A),P=b.trace;if(U3.traceIs(P,"gl3d")){var T=i._fullLayout[P.scene]._scene.container,F=T.offsetLeft,q=T.offsetTop;_+=F,C+=F,M+=q,g+=q}L.bbox={x0:_+o,x1:C+o,y0:M+a,y1:g+a},r.inOut_bbox&&r.inOut_bbox.push(L.bbox)}else L=!1;return{color:b.color||sd.defaultLine,x0:b.x0||b.x||0,x1:b.x1||b.x||0,y0:b.y0||b.y||0,y1:b.y1||b.y||0,xLabel:b.xLabel,yLabel:b.yLabel,zLabel:b.zLabel,text:b.text,name:b.name,idealAlign:b.idealAlign,borderColor:b.borderColor,fontFamily:b.fontFamily,fontSize:b.fontSize,fontColor:b.fontColor,fontWeight:b.fontWeight,fontStyle:b.fontStyle,fontVariant:b.fontVariant,nameLength:b.nameLength,textAlign:b.textAlign,trace:b.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:b.hovertemplate||!1,hovertemplateLabels:b.hovertemplateLabels||!1,eventData:L}}),l=!1,u=Cle(s,{gd:i,hovermode:"closest",rotateLabels:l,bgColor:r.bgColor||sd.background,container:Db.select(r.container),outerContainer:r.outerContainer||r.container}),c=u.hoverLabels,f=5,h=0,d=0;c.sort(function(b,p){return b.y0-p.y0}).each(function(b,p){var E=b.y0-b.by/2;E-f<h?b.offset=h-E+f:b.offset=0,h=E+b.by+b.offset,p===r.anchorIndex&&(d=b.offset)}).each(function(b){b.offset-=d});var v=i._fullLayout._invScaleX,x=i._fullLayout._invScaleY;return Ple(c,l,v,x),n?c:c.node()};function Hst(e,t,r,n,i){r||(r="xy"),typeof r=="string"&&(r=r.split(Fst)[0]);var a=Array.isArray(r)?r:[r],o,s=e._fullLayout,l=s.hoversubplots,u=s._plots||[],c=u[r],f=s._has("cartesian"),h=t.hovermode||s.hovermode,d=(h||"").charAt(0)==="x",v=(h||"").charAt(0)==="y",x,b;if(f&&(d||v)&&l==="axis"){for(var p=a.length,E=0;E<p;E++)if(o=a[E],u[o]){x=wm.getFromId(e,o,"x"),b=wm.getFromId(e,o,"y");var k=(d?x:b)._subplotsWith;if(k&&k.length)for(var A=0;A<k.length;A++)Ist(a,k[A])}}if(c&&l!=="single"){var L=c.overlays.map(function(Ni){return Ni.id});a=a.concat(L)}for(var _=a.length,C=new Array(_),M=new Array(_),g=!1,P=0;P<_;P++)if(o=a[P],u[o])g=!0,C[P]=u[o].xaxis,M[P]=u[o].yaxis;else if(s[o]&&s[o]._subplot){var T=s[o]._subplot;C[P]=T.xaxis,M[P]=T.yaxis}else{Rf.warn("Unrecognized subplot: "+o);return}if(h&&!g&&(h="closest"),["x","y","closest","x unified","y unified"].indexOf(h)===-1||!e.calcdata||e.querySelector(".zoombox")||e._dragging)return BL.unhoverRaw(e,t);var F=s.hoverdistance;F===-1&&(F=1/0);var q=s.spikedistance;q===-1&&(q=1/0);var V=[],H=[],X,G,N,W,re,ae,_e,Me,ke,ge,ie,Te,Ee,Ae={hLinePoint:null,vLinePoint:null},ze=!1;if(Array.isArray(t))for(h="array",N=0;N<t.length;N++)re=e.calcdata[t[N].curveNumber||0],re&&(ae=re[0].trace,re[0].trace.hoverinfo!=="skip"&&(H.push(re),ae.orientation==="h"&&(ze=!0)));else{var Ce=e.calcdata.slice();for(Ce.sort(function(Ni,_n){var $i=Ni[0].trace.zorder||0,zn=_n[0].trace.zorder||0;return $i-zn}),W=0;W<Ce.length;W++)re=Ce[W],ae=re[0].trace,ae.hoverinfo!=="skip"&&Ag.isTraceInSubplots(ae,a)&&(H.push(re),ae.orientation==="h"&&(ze=!0));var me=!i,Re,ce;if(me)"xpx"in t?Re=t.xpx:Re=C[0]._length/2,"ypx"in t?ce=t.ypx:ce=M[0]._length/2;else{if(Dst.triggerHandler(e,"plotly_beforehover",t)===!1)return;var Ge=i.getBoundingClientRect();Re=t.clientX-Ge.left,ce=t.clientY-Ge.top,s._calcInverseTransform(e);var nt=Rf.apply3DTransform(s._invTransform)(Re,ce);if(Re=nt[0],ce=nt[1],Re<0||Re>C[0]._length||ce<0||ce>M[0]._length)return BL.unhoverRaw(e,t)}if(t.pointerX=Re+C[0]._offset,t.pointerY=ce+M[0]._offset,"xval"in t?X=Ag.flat(a,t.xval):X=Ag.p2c(C,Re),"yval"in t?G=Ag.flat(a,t.yval):G=Ag.p2c(M,ce),!Sy(X[0])||!Sy(G[0]))return Rf.warn("Fx.hover failed",t,e),BL.unhoverRaw(e,t)}var ct=1/0;function qt(Ni,_n){for(W=0;W<H.length;W++)if(re=H[W],!(!re||!re[0]||!re[0].trace)&&(ae=re[0].trace,!(ae.visible!==!0||ae._length===0)&&["carpet","contourcarpet"].indexOf(ae._module.name)===-1)){if(ke=h,Ag.isUnifiedHover(ke)&&(ke=ke.charAt(0)),ae.type==="splom"?(Me=0,_e=a[Me]):(_e=Ag.getSubplot(ae),Me=a.indexOf(_e)),Te={cd:re,trace:ae,xa:C[Me],ya:M[Me],maxHoverDistance:F,maxSpikeDistance:q,index:!1,distance:Math.min(ct,F),spikeDistance:1/0,xSpike:void 0,ySpike:void 0,color:sd.defaultLine,name:ae.name,x0:void 0,x1:void 0,y0:void 0,y1:void 0,xLabelVal:void 0,yLabelVal:void 0,zLabelVal:void 0,text:void 0},s[_e]&&(Te.subplot=s[_e]._subplot),s._splomScenes&&s._splomScenes[ae.uid]&&(Te.scene=s._splomScenes[ae.uid]),ke==="array"){var $i=t[W];"pointNumber"in $i?(Te.index=$i.pointNumber,ke="closest"):(ke="","xval"in $i&&(ge=$i.xval,ke="x"),"yval"in $i&&(ie=$i.yval,ke=ke?"closest":"y"))}else Ni!==void 0&&_n!==void 0?(ge=Ni,ie=_n):(ge=X[Me],ie=G[Me]);if(Ee=V.length,F!==0)if(ae._module&&ae._module.hoverPoints){var zn=ae._module.hoverPoints(Te,ge,ie,ke,{finiteRange:!0,hoverLayer:s._hoverlayer,hoversubplots:l,gd:e});if(zn)for(var Wn,It=0;It<zn.length;It++)Wn=zn[It],Sy(Wn.x0)&&Sy(Wn.y0)&&V.push(Zst(Wn,h))}else Rf.log("Unrecognized trace type in hover:",ae);if(h==="closest"&&V.length>Ee&&(V.splice(0,Ee),ct=V[0].distance),f&&q!==0&&V.length===0){Te.distance=q,Te.index=!1;var ft=ae._module.hoverPoints(Te,ge,ie,"closest",{hoverLayer:s._hoverlayer});if(ft&&(ft=ft.filter(function(Vr){return Vr.spikeDistance<=q})),ft&&ft.length){var jt,Zt=ft.filter(function(Vr){return Vr.xa.showspikes&&Vr.xa.spikesnap!=="hovered data"});if(Zt.length){var yr=Zt[0];Sy(yr.x0)&&Sy(yr.y0)&&(jt=ot(yr),(!Ae.vLinePoint||Ae.vLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.vLinePoint=jt))}var Fr=ft.filter(function(Vr){return Vr.ya.showspikes&&Vr.ya.spikesnap!=="hovered data"});if(Fr.length){var Zr=Fr[0];Sy(Zr.x0)&&Sy(Zr.y0)&&(jt=ot(Zr),(!Ae.hLinePoint||Ae.hLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.hLinePoint=jt))}}}}}qt();function rt(Ni,_n,$i){for(var zn=null,Wn=1/0,It,ft=0;ft<Ni.length;ft++)x&&x._id!==Ni[ft].xa._id||b&&b._id!==Ni[ft].ya._id||(It=Ni[ft].spikeDistance,$i&&ft===0&&(It=-1/0),It<=Wn&&It<=_n&&(zn=Ni[ft],Wn=It));return zn}function ot(Ni){return Ni?{xa:Ni.xa,ya:Ni.ya,x:Ni.xSpike!==void 0?Ni.xSpike:(Ni.x0+Ni.x1)/2,y:Ni.ySpike!==void 0?Ni.ySpike:(Ni.y0+Ni.y1)/2,distance:Ni.distance,spikeDistance:Ni.spikeDistance,curveNumber:Ni.trace.index,color:Ni.color,pointNumber:Ni.index}:null}var Rt={fullLayout:s,container:s._hoverlayer,event:t},kt=e._spikepoints,Ct={vLinePoint:Ae.vLinePoint,hLinePoint:Ae.hLinePoint};e._spikepoints=Ct;var Yt=function(){var Ni=V.filter(function($i){return x&&x._id===$i.xa._id&&b&&b._id===$i.ya._id}),_n=V.filter(function($i){return!(x&&x._id===$i.xa._id&&b&&b._id===$i.ya._id)});Ni.sort(ble),_n.sort(ble),V=Ni.concat(_n),V=Yst(V,h)};Yt();var xr=h.charAt(0),er=(xr==="x"||xr==="y")&&V[0]&&Vst[V[0].trace.type];if(f&&q!==0&&V.length!==0){var Ke=V.filter(function(Ni){return Ni.ya.showspikes}),xt=rt(Ke,q,er);Ae.hLinePoint=ot(xt);var bt=V.filter(function(Ni){return Ni.xa.showspikes}),Lt=rt(bt,q,er);Ae.vLinePoint=ot(Lt)}if(V.length===0){var St=BL.unhoverRaw(e,t);return f&&(Ae.hLinePoint!==null||Ae.vLinePoint!==null)&&Ale(kt)&&Tle(e,Ae,Rt),St}if(f&&Ale(kt)&&Tle(e,Ae,Rt),Ag.isXYhover(ke)&&V[0].length!==0&&V[0].trace.type!=="splom"){var Et=V[0];xle[Et.trace.type]?V=V.filter(function(Ni){return Ni.trace.index===Et.trace.index}):V=[Et];var dt=V.length,Ht=Mle("x",Et,s),$t=Mle("y",Et,s);qt(Ht,$t);var fr=[],_r={},Br=0,Or=function(Ni){var _n=xle[Ni.trace.type]?kle(Ni):Ni.trace.index;if(!_r[_n])Br++,_r[_n]=Br,fr.push(Ni);else{var $i=_r[_n]-1,zn=fr[$i];$i>0&&Math.abs(Ni.distance)<Math.abs(zn.distance)&&(fr[$i]=Ni)}},Nr;for(Nr=0;Nr<dt;Nr++)Or(V[Nr]);for(Nr=V.length-1;Nr>dt-1;Nr--)Or(V[Nr]);V=fr,Yt()}var ut=e._hoverdata,Ne=[],Ye=Ile(e),Ve=Rle(e);for(N=0;N<V.length;N++){var Xe=V[N],ht=Ag.makeEventData(Xe,Xe.trace,Xe.cd);if(Xe.hovertemplate!==!1){var Le=!1;Xe.cd[Xe.index]&&Xe.cd[Xe.index].ht&&(Le=Xe.cd[Xe.index].ht),Xe.hovertemplate=Le||Xe.trace.hovertemplate||!1}if(Xe.xa&&Xe.ya){var xe=Xe.x0+Xe.xa._offset,Se=Xe.x1+Xe.xa._offset,lt=Xe.y0+Xe.ya._offset,Gt=Xe.y1+Xe.ya._offset,Vt=Math.min(xe,Se),ar=Math.max(xe,Se),Qr=Math.min(lt,Gt),ai=Math.max(lt,Gt);ht.bbox={x0:Vt+Ve,x1:ar+Ve,y0:Qr+Ye,y1:ai+Ye}}Xe.eventData=[ht],Ne.push(ht)}e._hoverdata=Ne;var jr=h==="y"&&(H.length>1||V.length>1)||h==="closest"&&ze&&V.length>1,ri=sd.combine(s.plot_bgcolor||sd.background,s.paper_bgcolor),bi=Cle(V,{gd:e,hovermode:h,rotateLabels:jr,bgColor:ri,container:s._hoverlayer,outerContainer:s._paper.node(),commonLabelOpts:s.hoverlabel,hoverdistance:s.hoverdistance}),nn=bi.hoverLabels;if(Ag.isUnifiedHover(h)||(jst(nn,jr,s,bi.commonLabelBoundingBox),Ple(nn,jr,s._invScaleX,s._invScaleY)),i&&i.tagName){var Wi=U3.getComponentMethod("annotations","hasClickToShow")(e,Ne);zst(Db.select(i),Wi?"pointer":"")}!i||n||!Xst(e,t,ut)||(ut&&e.emit("plotly_unhover",{event:t,points:ut}),e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:C,yaxes:M,xvals:X,yvals:G}))}function kle(e){return[e.trace.index,e.index,e.x0,e.y0,e.name,e.attr,e.xa?e.xa._id:"",e.ya?e.ya._id:""].join(",")}var Gst=/<extra>([\s\S]*)<\/extra>/;function Cle(e,t){var r=t.gd,n=r._fullLayout,i=t.hovermode,a=t.rotateLabels,o=t.bgColor,s=t.container,l=t.outerContainer,u=t.commonLabelOpts||{};if(e.length===0)return[[]];var c=t.fontFamily||zb.HOVERFONT,f=t.fontSize||zb.HOVERFONTSIZE,h=t.fontWeight||n.font.weight,d=t.fontStyle||n.font.style,v=t.fontVariant||n.font.variant,x=t.fontTextcase||n.font.textcase,b=t.fontLineposition||n.font.lineposition,p=t.fontShadow||n.font.shadow,E=e[0],k=E.xa,A=E.ya,L=i.charAt(0),_=L+"Label",C=E[_];if(C===void 0&&k.type==="multicategory")for(var M=0;M<e.length&&(C=e[M][_],C===void 0);M++);var g=N3(r,l),P=g.top,T=g.width,F=g.height,q=C!==void 0&&E.distance<=t.hoverdistance&&(i==="x"||i==="y");if(q){var V=!0,H,X;for(H=0;H<e.length;H++)if(V&&e[H].zLabel===void 0&&(V=!1),X=e[H].hoverinfo||e[H].trace.hoverinfo,X){var G=Array.isArray(X)?X:X.split("+");if(G.indexOf("all")===-1&&G.indexOf(i)===-1){q=!1;break}}V&&(q=!1)}var N=s.selectAll("g.axistext").data(q?[0]:[]);N.enter().append("g").classed("axistext",!0),N.exit().remove();var W={minX:0,maxX:0,minY:0,maxY:0};if(N.each(function(){var bt=Db.select(this),Lt=Rf.ensureSingle(bt,"path","",function(Vt){Vt.style({"stroke-width":"1px"})}),St=Rf.ensureSingle(bt,"text","",function(Vt){Vt.attr("data-notex",1)}),Et=u.bgcolor||sd.defaultLine,dt=u.bordercolor||sd.contrast(Et),Ht=sd.contrast(Et),$t=u.font,fr={weight:$t.weight||h,style:$t.style||d,variant:$t.variant||v,textcase:$t.textcase||x,lineposition:$t.lineposition||b,shadow:$t.shadow||p,family:$t.family||c,size:$t.size||f,color:$t.color||Ht};Lt.style({fill:Et,stroke:dt}),St.text(C).call(bm.font,fr).call(A0.positionText,0,0).call(A0.convertToTspans,r),bt.attr("transform","");var _r=N3(r,St.node()),Br,Or;if(i==="x"){var Nr=k.side==="top"?"-":"";St.attr("text-anchor","middle").call(A0.positionText,0,k.side==="top"?P-_r.bottom-Bc-Us:P-_r.top+Bc+Us),Br=k._offset+(E.x0+E.x1)/2,Or=A._offset+(k.side==="top"?0:A._length);var ut=_r.width/2+Us,Ne=Br;Br<ut?Ne=ut:Br>n.width-ut&&(Ne=n.width-ut),Lt.attr("d","M"+(Br-Ne)+",0L"+(Br-Ne+Bc)+","+Nr+Bc+"H"+ut+"v"+Nr+(Us*2+_r.height)+"H"+-ut+"V"+Nr+Bc+"H"+(Br-Ne-Bc)+"Z"),Br=Ne,W.minX=Br-ut,W.maxX=Br+ut,k.side==="top"?(W.minY=Or-(Us*2+_r.height),W.maxY=Or-Us):(W.minY=Or+Us,W.maxY=Or+(Us*2+_r.height))}else{var Ye,Ve,Xe;A.side==="right"?(Ye="start",Ve=1,Xe="",Br=k._offset+k._length):(Ye="end",Ve=-1,Xe="-",Br=k._offset),Or=A._offset+(E.y0+E.y1)/2,St.attr("text-anchor",Ye),Lt.attr("d","M0,0L"+Xe+Bc+","+Bc+"V"+(Us+_r.height/2)+"h"+Xe+(Us*2+_r.width)+"V-"+(Us+_r.height/2)+"H"+Xe+Bc+"V-"+Bc+"Z"),W.minY=Or-(Us+_r.height/2),W.maxY=Or+(Us+_r.height/2),A.side==="right"?(W.minX=Br+Bc,W.maxX=Br+Bc+(Us*2+_r.width)):(W.minX=Br-Bc-(Us*2+_r.width),W.maxX=Br-Bc);var ht=_r.height/2,Le=P-_r.top-ht,xe="clip"+n._uid+"commonlabel"+A._id,Se;if(Br<_r.width+2*Us+Bc){Se="M-"+(Bc+Us)+"-"+ht+"h-"+(_r.width-Us)+"V"+ht+"h"+(_r.width-Us)+"Z";var lt=_r.width-Br+Us;A0.positionText(St,lt,Le),Ye==="end"&&St.selectAll("tspan").each(function(){var Vt=Db.select(this),ar=bm.tester.append("text").text(Vt.text()).call(bm.font,fr),Qr=N3(r,ar.node());Math.round(Qr.width)<Math.round(_r.width)&&Vt.attr("x",lt-Qr.width),ar.remove()})}else A0.positionText(St,Ve*(Us+Bc),Le),Se=null;var Gt=n._topclips.selectAll("#"+xe).data(Se?[0]:[]);Gt.enter().append("clipPath").attr("id",xe).append("path"),Gt.exit().remove(),Gt.select("path").attr("d",Se),bm.setClipUrl(St,Se?xe:null,r)}bt.attr("transform",DB(Br,Or))}),Ag.isUnifiedHover(i)){s.selectAll("g.hovertext").remove();var re=e.filter(function(bt){return bt.hoverinfo!=="none"});if(re.length===0)return[];var ae=n.hoverlabel,_e=ae.font,Me={showlegend:!0,legend:{title:{text:C,font:_e},font:_e,bgcolor:ae.bgcolor,bordercolor:ae.bordercolor,borderwidth:1,tracegroupgap:7,traceorder:n.legend?n.legend.traceorder:void 0,orientation:"v"}},ke={font:_e};qst(Me,ke,r._fullData);var ge=ke.legend;ge.entries=[];for(var ie=0;ie<re.length;ie++){var Te=re[ie];if(Te.hoverinfo!=="none"){var Ee=wle(Te,!0,i,n,C),Ae=Ee[0],ze=Ee[1];Te.name=ze,ze!==""?Te.text=ze+" : "+Ae:Te.text=Ae;var Ce=Te.cd[Te.index];Ce&&(Ce.mc&&(Te.mc=Ce.mc),Ce.mcc&&(Te.mc=Ce.mcc),Ce.mlc&&(Te.mlc=Ce.mlc),Ce.mlcc&&(Te.mlc=Ce.mlcc),Ce.mlw&&(Te.mlw=Ce.mlw),Ce.mrc&&(Te.mrc=Ce.mrc),Ce.dir&&(Te.dir=Ce.dir)),Te._distinct=!0,ge.entries.push([Te])}}ge.entries.sort(function(bt,Lt){return bt[0].trace.index-Lt[0].trace.index}),ge.layer=s,ge._inHover=!0,ge._groupTitleFont=ae.grouptitlefont,Ost(r,ge);var me=s.select("g.legend"),Re=N3(r,me.node()),ce=Re.width+2*Us,Ge=Re.height+2*Us,nt=re[0],ct=(nt.x0+nt.x1)/2,qt=(nt.y0+nt.y1)/2,rt=!(U3.traceIs(nt.trace,"bar-like")||U3.traceIs(nt.trace,"box-violin")),ot,Rt;L==="y"?rt?(Rt=qt-Us,ot=qt+Us):(Rt=Math.min.apply(null,re.map(function(bt){return Math.min(bt.y0,bt.y1)})),ot=Math.max.apply(null,re.map(function(bt){return Math.max(bt.y0,bt.y1)}))):Rt=ot=Rf.mean(re.map(function(bt){return(bt.y0+bt.y1)/2}))-Ge/2;var kt,Ct;L==="x"?rt?(kt=ct+Us,Ct=ct-Us):(kt=Math.max.apply(null,re.map(function(bt){return Math.max(bt.x0,bt.x1)})),Ct=Math.min.apply(null,re.map(function(bt){return Math.min(bt.x0,bt.x1)}))):kt=Ct=Rf.mean(re.map(function(bt){return(bt.x0+bt.x1)/2}))-ce/2;var Yt=k._offset,xr=A._offset;ot+=xr,kt+=Yt,Ct+=Yt-ce,Rt+=xr-Ge;var er,Ke;return kt+ce<T&&kt>=0?er=kt:Ct+ce<T&&Ct>=0?er=Ct:Yt+ce<T?er=Yt:kt-ct<ct-Ct+ce?er=T-ce:er=0,er+=Us,ot+Ge<F&&ot>=0?Ke=ot:Rt+Ge<F&&Rt>=0?Ke=Rt:xr+Ge<F?Ke=xr:ot-qt<qt-Rt+Ge?Ke=F-Ge:Ke=0,Ke+=Us,me.attr("transform",DB(er-1,Ke-1)),me}var xt=s.selectAll("g.hovertext").data(e,function(bt){return kle(bt)});return xt.enter().append("g").classed("hovertext",!0).each(function(){var bt=Db.select(this);bt.append("rect").call(sd.fill,sd.addOpacity(o,.8)),bt.append("text").classed("name",!0),bt.append("path").style("stroke-width","1px"),bt.append("text").classed("nums",!0).call(bm.font,{weight:h,style:d,variant:v,textcase:x,lineposition:b,shadow:p,family:c,size:f})}),xt.exit().remove(),xt.each(function(bt){var Lt=Db.select(this).attr("transform",""),St=bt.color;Array.isArray(St)&&(St=St[bt.eventData[0].pointNumber]);var Et=bt.bgcolor||St,dt=sd.combine(sd.opacity(Et)?Et:sd.defaultLine,o),Ht=sd.combine(sd.opacity(St)?St:sd.defaultLine,o),$t=bt.borderColor||sd.contrast(dt),fr=wle(bt,q,i,n,C,Lt),_r=fr[0],Br=fr[1],Or=Lt.select("text.nums").call(bm.font,{family:bt.fontFamily||c,size:bt.fontSize||f,color:bt.fontColor||$t,weight:bt.fontWeight||h,style:bt.fontStyle||d,variant:bt.fontVariant||v,textcase:bt.fontTextcase||x,lineposition:bt.fontLineposition||b,shadow:bt.fontShadow||p}).text(_r).attr("data-notex",1).call(A0.positionText,0,0).call(A0.convertToTspans,r),Nr=Lt.select("text.name"),ut=0,Ne=0;if(Br&&Br!==_r){Nr.call(bm.font,{family:bt.fontFamily||c,size:bt.fontSize||f,color:Ht,weight:bt.fontWeight||h,style:bt.fontStyle||d,variant:bt.fontVariant||v,textcase:bt.fontTextcase||x,lineposition:bt.fontLineposition||b,shadow:bt.fontShadow||p}).text(Br).attr("data-notex",1).call(A0.positionText,0,0).call(A0.convertToTspans,r);var Ye=N3(r,Nr.node());ut=Ye.width+2*Us,Ne=Ye.height+2*Us}else Nr.remove(),Lt.select("rect").remove();Lt.select("path").style({fill:dt,stroke:$t});var Ve=bt.xa._offset+(bt.x0+bt.x1)/2,Xe=bt.ya._offset+(bt.y0+bt.y1)/2,ht=Math.abs(bt.x1-bt.x0),Le=Math.abs(bt.y1-bt.y0),xe=N3(r,Or.node()),Se=xe.width/n._invScaleX,lt=xe.height/n._invScaleY;bt.ty0=(P-xe.top)/n._invScaleY,bt.bx=Se+2*Us,bt.by=Math.max(lt+2*Us,Ne),bt.anchor="start",bt.txwidth=Se,bt.tx2width=ut,bt.offset=0;var Gt=(Se+Bc+Us+ut)*n._invScaleX,Vt,ar;if(a)bt.pos=Ve,Vt=Xe+Le/2+Gt<=F,ar=Xe-Le/2-Gt>=0,(bt.idealAlign==="top"||!Vt)&&ar?(Xe-=Le/2,bt.anchor="end"):Vt?(Xe+=Le/2,bt.anchor="start"):bt.anchor="middle",bt.crossPos=Xe;else{if(bt.pos=Xe,Vt=Ve+ht/2+Gt<=T,ar=Ve-ht/2-Gt>=0,(bt.idealAlign==="left"||!Vt)&&ar)Ve-=ht/2,bt.anchor="end";else if(Vt)Ve+=ht/2,bt.anchor="start";else{bt.anchor="middle";var Qr=Gt/2,ai=Ve+Qr-T,jr=Ve-Qr;ai>0&&(Ve-=ai),jr<0&&(Ve+=-jr)}bt.crossPos=Ve}Or.attr("text-anchor",bt.anchor),ut&&Nr.attr("text-anchor",bt.anchor),Lt.attr("transform",DB(Ve,Xe)+(a?Rst(Ele):""))}),{hoverLabels:xt,commonLabelBoundingBox:W}}function wle(e,t,r,n,i,a){var o="",s="";e.nameOverride!==void 0&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=Rf.templateString(e.name,e.trace._meta)),o=Sle(e.name,e.nameLength));var l=r.charAt(0),u=l==="x"?"y":"x";e.zLabel!==void 0?(e.xLabel!==void 0&&(s+="x: "+e.xLabel+"<br>"),e.yLabel!==void 0&&(s+="y: "+e.yLabel+"<br>"),e.trace.type!=="choropleth"&&e.trace.type!=="choroplethmapbox"&&e.trace.type!=="choroplethmap"&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[l+"Label"]===i?s=e[u+"Label"]||"":e.xLabel===void 0?e.yLabel!==void 0&&e.trace.type!=="scattercarpet"&&(s=e.yLabel):e.yLabel===void 0?s=e.xLabel:s="("+e.xLabel+", "+e.yLabel+")",(e.text||e.text===0)&&!Array.isArray(e.text)&&(s+=(s?"<br>":"")+e.text),e.extraText!==void 0&&(s+=(s?"<br>":"")+e.extraText),a&&s===""&&!e.hovertemplate&&(o===""&&a.remove(),s=o);var c=e.hovertemplate||!1;if(c){var f=e.hovertemplateLabels||e;e[l+"Label"]!==i&&(f[l+"other"]=f[l+"Val"],f[l+"otherLabel"]=f[l+"Label"]),s=Rf.hovertemplateString(c,f,n._d3locale,e.eventData[0]||{},e.trace._meta),s=s.replace(Gst,function(h,d){return o=Sle(d,e.nameLength),""})}return[s,o]}function jst(e,t,r,n){var i=t?"xa":"ya",a=t?"ya":"xa",o=0,s=1,l=e.size(),u=new Array(l),c=0,f=n.minX,h=n.maxX,d=n.minY,v=n.maxY,x=function(X){return X*r._invScaleX},b=function(X){return X*r._invScaleY};e.each(function(X){var G=X[i],N=X[a],W=G._id.charAt(0)==="x",re=G.range;c===0&&re&&re[0]>re[1]!==W&&(s=-1);var ae=0,_e=W?r.width:r.height;if(r.hovermode==="x"||r.hovermode==="y"){var Me=Lle(X,t),ke=X.anchor,ge=ke==="end"?-1:1,ie,Te;if(ke==="middle")ie=X.crossPos+(W?b(Me.y-X.by/2):x(X.bx/2+X.tx2width/2)),Te=ie+(W?b(X.by):x(X.bx));else if(W)ie=X.crossPos+b(Bc+Me.y)-b(X.by/2-Bc),Te=ie+b(X.by);else{var Ee=x(ge*Bc+Me.x),Ae=Ee+x(ge*X.bx);ie=X.crossPos+Math.min(Ee,Ae),Te=X.crossPos+Math.max(Ee,Ae)}W?d!==void 0&&v!==void 0&&Math.min(Te,v)-Math.max(ie,d)>1&&(N.side==="left"?(ae=N._mainLinePosition,_e=r.width):_e=N._mainLinePosition):f!==void 0&&h!==void 0&&Math.min(Te,h)-Math.max(ie,f)>1&&(N.side==="top"?(ae=N._mainLinePosition,_e=r.height):_e=N._mainLinePosition)}u[c++]=[{datum:X,traceIndex:X.trace.index,dp:0,pos:X.pos,posref:X.posref,size:X.by*(W?Bst:1)/2,pmin:ae,pmax:_e}]}),u.sort(function(X,G){return X[0].posref-G[0].posref||s*(G[0].traceIndex-X[0].traceIndex)});var p,E,k,A,L,_,C;function M(X){var G=X[0],N=X[X.length-1];if(E=G.pmin-G.pos-G.dp+G.size,k=N.pos+N.dp+N.size-G.pmax,E>.01){for(L=X.length-1;L>=0;L--)X[L].dp+=E;p=!1}if(!(k<.01)){if(E<-.01){for(L=X.length-1;L>=0;L--)X[L].dp-=k;p=!1}if(p){var W=0;for(A=0;A<X.length;A++)_=X[A],_.pos+_.dp+_.size>G.pmax&&W++;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos>G.pmax-1&&(_.del=!0,W--);for(A=0;A<X.length&&!(W<=0);A++)if(_=X[A],_.pos<G.pmin+1)for(_.del=!0,W--,k=_.size*2,L=X.length-1;L>=0;L--)X[L].dp-=k;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos+_.dp+_.size>G.pmax&&(_.del=!0,W--)}}}for(;!p&&o<=l;){for(o++,p=!0,A=0;A<u.length-1;){var g=u[A],P=u[A+1],T=g[g.length-1],F=P[0];if(E=T.pos+T.dp+T.size-F.pos-F.dp+F.size,E>.01){for(L=P.length-1;L>=0;L--)P[L].dp+=E;for(g.push.apply(g,P),u.splice(A+1,1),C=0,L=g.length-1;L>=0;L--)C+=g[L].dp;for(k=C/g.length,L=g.length-1;L>=0;L--)g[L].dp-=k;p=!1}else A++}u.forEach(M)}for(A=u.length-1;A>=0;A--){var q=u[A];for(L=q.length-1;L>=0;L--){var V=q[L],H=V.datum;H.offset=V.dp,H.del=V.del}}}function Lle(e,t){var r=0,n=e.offset;return t&&(n*=-Ust,r=e.offset*Nst),{x:r,y:n}}function Wst(e){var t={start:1,end:-1,middle:0}[e.anchor],r=t*(Bc+Us),n=r+t*(e.txwidth+Us),i=e.anchor==="middle";return i&&(r-=e.tx2width/2,n+=e.txwidth/2+Us),{alignShift:t,textShiftX:r,text2ShiftX:n}}function Ple(e,t,r,n){var i=function(o){return o*r},a=function(o){return o*n};e.each(function(o){var s=Db.select(this);if(o.del)return s.remove();var l=s.select("text.nums"),u=o.anchor,c=u==="end"?-1:1,f=Wst(o),h=Lle(o,t),d=h.x,v=h.y,x=u==="middle";s.select("path").attr("d",x?"M-"+i(o.bx/2+o.tx2width/2)+","+a(v-o.by/2)+"h"+i(o.bx)+"v"+a(o.by)+"h-"+i(o.bx)+"Z":"M0,0L"+i(c*Bc+d)+","+a(Bc+v)+"v"+a(o.by/2-Bc)+"h"+i(c*o.bx)+"v-"+a(o.by)+"H"+i(c*Bc+d)+"V"+a(v-Bc)+"Z");var b=d+f.textShiftX,p=v+o.ty0-o.by/2+Us,E=o.textAlign||"auto";E!=="auto"&&(E==="left"&&u!=="start"?(l.attr("text-anchor","start"),b=x?-o.bx/2-o.tx2width/2+Us:-o.bx-Us):E==="right"&&u!=="end"&&(l.attr("text-anchor","end"),b=x?o.bx/2-o.tx2width/2-Us:o.bx+Us)),l.call(A0.positionText,i(b),a(p)),o.tx2width&&(s.select("text.name").call(A0.positionText,i(f.text2ShiftX+f.alignShift*Us+d),a(v+o.ty0-o.by/2+Us)),s.select("rect").call(bm.setRect,i(f.text2ShiftX+(f.alignShift-1)*o.tx2width/2+d),a(v-o.by/2-1),i(o.tx2width),a(o.by+2)))})}function Zst(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],a=e.cd[r]||{};function o(h){return h||Sy(h)&&h===0}var s=Array.isArray(r)?function(h,d){var v=Rf.castOption(i,r,h);return o(v)?v:Rf.extractOption({},n,"",d)}:function(h,d){return Rf.extractOption(a,n,h,d)};function l(h,d,v){var x=s(d,v);o(x)&&(e[h]=x)}if(l("hoverinfo","hi","hoverinfo"),l("bgcolor","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("fontWeight","htw","hoverlabel.font.weight"),l("fontStyle","hty","hoverlabel.font.style"),l("fontVariant","htv","hoverlabel.font.variant"),l("nameLength","hnl","hoverlabel.namelength"),l("textAlign","hta","hoverlabel.align"),e.posref=t==="y"||t==="closest"&&n.orientation==="h"?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=Rf.constrain(e.x0,0,e.xa._length),e.x1=Rf.constrain(e.x1,0,e.xa._length),e.y0=Rf.constrain(e.y0,0,e.ya._length),e.y1=Rf.constrain(e.y1,0,e.ya._length),e.xLabelVal!==void 0&&(e.xLabel="xLabel"in e?e.xLabel:wm.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),e.yLabelVal!==void 0&&(e.yLabel="yLabel"in e?e.yLabel:wm.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),e.zLabelVal!==void 0&&e.zLabel===void 0&&(e.zLabel=String(e.zLabelVal)),!isNaN(e.xerr)&&!(e.xa.type==="log"&&e.xerr<=0)){var u=wm.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;e.xerrneg!==void 0?e.xLabel+=" +"+u+" / -"+wm.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" \xB1 "+u,t==="x"&&(e.distance+=1)}if(!isNaN(e.yerr)&&!(e.ya.type==="log"&&e.yerr<=0)){var c=wm.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;e.yerrneg!==void 0?e.yLabel+=" +"+c+" / -"+wm.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" \xB1 "+c,t==="y"&&(e.distance+=1)}var f=e.hoverinfo||e.trace.hoverinfo;return f&&f!=="all"&&(f=Array.isArray(f)?f:f.split("+"),f.indexOf("x")===-1&&(e.xLabel=void 0),f.indexOf("y")===-1&&(e.yLabel=void 0),f.indexOf("z")===-1&&(e.zLabel=void 0),f.indexOf("text")===-1&&(e.text=void 0),f.indexOf("name")===-1&&(e.name=void 0)),e}function Tle(e,t,r){var n=r.container,i=r.fullLayout,a=i._size,o=r.event,s=!!t.hLinePoint,l=!!t.vLinePoint,u,c;if(n.selectAll(".spikeline").remove(),!!(l||s)){var f=sd.combine(i.plot_bgcolor,i.paper_bgcolor);if(s){var h=t.hLinePoint,d,v;u=h&&h.xa,c=h&&h.ya;var x=c.spikesnap;x==="cursor"?(d=o.pointerX,v=o.pointerY):(d=u._offset+h.x,v=c._offset+h.y);var b=_le.readability(h.color,f)<1.5?sd.contrast(f):h.color,p=c.spikemode,E=c.spikethickness,k=c.spikecolor||b,A=wm.getPxPosition(e,c),L,_;if(p.indexOf("toaxis")!==-1||p.indexOf("across")!==-1){if(p.indexOf("toaxis")!==-1&&(L=A,_=d),p.indexOf("across")!==-1){var C=c._counterDomainMin,M=c._counterDomainMax;c.anchor==="free"&&(C=Math.min(C,c.position),M=Math.max(M,c.position)),L=a.l+C*a.w,_=a.l+M*a.w}n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E,stroke:k,"stroke-dasharray":bm.dashStyle(c.spikedash,E)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}p.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:A+(c.side!=="right"?E:-E),cy:v,r:E,fill:k}).classed("spikeline",!0)}if(l){var g=t.vLinePoint,P,T;u=g&&g.xa,c=g&&g.ya;var F=u.spikesnap;F==="cursor"?(P=o.pointerX,T=o.pointerY):(P=u._offset+g.x,T=c._offset+g.y);var q=_le.readability(g.color,f)<1.5?sd.contrast(f):g.color,V=u.spikemode,H=u.spikethickness,X=u.spikecolor||q,G=wm.getPxPosition(e,u),N,W;if(V.indexOf("toaxis")!==-1||V.indexOf("across")!==-1){if(V.indexOf("toaxis")!==-1&&(N=G,W=T),V.indexOf("across")!==-1){var re=u._counterDomainMin,ae=u._counterDomainMax;u.anchor==="free"&&(re=Math.min(re,u.position),ae=Math.max(ae,u.position)),N=a.t+(1-ae)*a.h,W=a.t+(1-re)*a.h}n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H,stroke:X,"stroke-dasharray":bm.dashStyle(u.spikedash,H)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}V.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:P,cy:G-(u.side!=="top"?H:-H),r:H,fill:X}).classed("spikeline",!0)}}}function Xst(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=e._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}function Ale(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function Sle(e,t){return A0.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function Yst(e,t){for(var r=t.charAt(0),n=[],i=[],a=[],o=0;o<e.length;o++){var s=e[o];U3.traceIs(s.trace,"bar-like")||U3.traceIs(s.trace,"box-violin")?a.push(s):s.trace[r+"period"]?i.push(s):n.push(s)}return n.concat(i).concat(a)}function Mle(e,t,r){var n=t[e+"a"],i=t[e+"Val"],a=t.cd[0];if(n.type==="category"||n.type==="multicategory")i=n._categoriesMap[i];else if(n.type==="date"){var o=t.trace[e+"periodalignment"];if(o){var s=t.cd[t.index],l=s[e+"Start"];l===void 0&&(l=s[e]);var u=s[e+"End"];u===void 0&&(u=s[e]);var c=u-l;o==="end"?i+=c:o==="middle"&&(i+=c/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&(r.boxmode==="group"||r.violinmode==="group")&&(i+=a.t.dPos),i}function Ile(e){return e.offsetTop+e.clientTop}function Rle(e){return e.offsetLeft+e.clientLeft}function N3(e,t){var r=e._fullLayout,n=t.getBoundingClientRect(),i=n.left,a=n.top,o=i+n.width,s=a+n.height,l=Rf.apply3DTransform(r._invTransform)(i,a),u=Rf.apply3DTransform(r._invTransform)(o,s),c=l[0],f=l[1],h=u[0],d=u[1];return{x:c,y:f,width:h-c,height:d-f,top:Math.min(f,d),left:Math.min(c,h),right:Math.max(c,h),bottom:Math.max(f,d)}}});var oM=ye((Zrr,Dle)=>{"use strict";var Kst=Mr(),Jst=va(),$st=rp().isUnifiedHover;Dle.exports=function(t,r,n,i){i=i||{};var a=r.legend;function o(s){i.font[s]||(i.font[s]=a?r.legend.font[s]:r.font[s])}r&&$st(r.hovermode)&&(i.font||(i.font={}),o("size"),o("family"),o("color"),o("weight"),o("style"),o("variant"),a?(i.bgcolor||(i.bgcolor=Jst.combine(r.legend.bgcolor,r.paper_bgcolor)),i.bordercolor||(i.bordercolor=r.legend.bordercolor)):i.bgcolor||(i.bgcolor=r.paper_bgcolor)),n("hoverlabel.bgcolor",i.bgcolor),n("hoverlabel.bordercolor",i.bordercolor),n("hoverlabel.namelength",i.namelength),Kst.coerceFont(n,"hoverlabel.font",i.font),n("hoverlabel.align",i.align)}});var Fle=ye((Xrr,zle)=>{"use strict";var Qst=Mr(),elt=oM(),tlt=N1();zle.exports=function(t,r){function n(i,a){return Qst.coerce(t,r,tlt,i,a)}elt(t,r,n)}});var Ble=ye((Yrr,Ole)=>{"use strict";var qle=Mr(),rlt=i3(),ilt=oM();Ole.exports=function(t,r,n,i){function a(s,l){return qle.coerce(t,r,rlt,s,l)}var o=qle.extendFlat({},i.hoverlabel);r.hovertemplate&&(o.namelength=-1),ilt(t,r,a,o)}});var OB=ye((Krr,Nle)=>{"use strict";var nlt=Mr(),alt=N1();Nle.exports=function(t,r){function n(i,a){return r[i]!==void 0?r[i]:nlt.coerce(t,r,alt,i,a)}return n("clickmode"),n("hoversubplots"),n("hovermode")}});var Hle=ye((Jrr,Vle)=>{"use strict";var Ule=Mr(),olt=N1(),slt=OB(),llt=oM();Vle.exports=function(t,r){function n(c,f){return Ule.coerce(t,r,olt,c,f)}var i=slt(t,r);i&&(n("hoverdistance"),n("spikedistance"));var a=n("dragmode");a==="select"&&n("selectdirection");var o=r._has("mapbox"),s=r._has("map"),l=r._has("geo"),u=r._basePlotModules.length;r.dragmode==="zoom"&&((o||s||l)&&u===1||(o||s)&&l&&u===2)&&(r.dragmode="pan"),llt(t,r,n),Ule.coerceFont(n,"hoverlabel.grouptitlefont",r.hoverlabel.font)}});var Wle=ye(($rr,jle)=>{"use strict";var BB=Mr(),Gle=ba();jle.exports=function(t){var r=t.calcdata,n=t._fullLayout;function i(u){return function(c){return BB.coerceHoverinfo({hoverinfo:c},{_module:u._module},n)}}for(var a=0;a<r.length;a++){var o=r[a],s=o[0].trace;if(!Gle.traceIs(s,"pie-like")){var l=Gle.traceIs(s,"2dMap")?ult:BB.fillArray;l(s.hoverinfo,o,"hi",i(s)),s.hovertemplate&&l(s.hovertemplate,o,"ht"),s.hoverlabel&&(l(s.hoverlabel.bgcolor,o,"hbg"),l(s.hoverlabel.bordercolor,o,"hbc"),l(s.hoverlabel.font.size,o,"hts"),l(s.hoverlabel.font.color,o,"htc"),l(s.hoverlabel.font.family,o,"htf"),l(s.hoverlabel.font.weight,o,"htw"),l(s.hoverlabel.font.style,o,"hty"),l(s.hoverlabel.font.variant,o,"htv"),l(s.hoverlabel.namelength,o,"hnl"),l(s.hoverlabel.align,o,"hta"))}}};function ult(e,t,r,n){n=n||BB.identity,Array.isArray(e)&&(t[0][r]=n(e))}});var Xle=ye((Qrr,Zle)=>{"use strict";var clt=ba(),flt=qB().hover;Zle.exports=function(t,r,n){var i=clt.getComponentMethod("annotations","onClick")(t,t._hoverdata);n!==void 0&&flt(t,r,n,!0);function a(){t.emit("plotly_click",{points:t._hoverdata,event:r})}t._hoverdata&&r&&r.target&&(i&&i.then?i.then(a):a(),r.stopImmediatePropagation&&r.stopImmediatePropagation())}});var Nc=ye((eir,Jle)=>{"use strict";var hlt=xa(),NL=Mr(),dlt=gv(),sM=rp(),Yle=N1(),Kle=qB();Jle.exports={moduleType:"component",name:"fx",constants:IS(),schema:{layout:Yle},attributes:i3(),layoutAttributes:Yle,supplyLayoutGlobalDefaults:Fle(),supplyDefaults:Ble(),supplyLayoutDefaults:Hle(),calc:Wle(),getDistanceFunction:sM.getDistanceFunction,getClosest:sM.getClosest,inbox:sM.inbox,quadrature:sM.quadrature,appendArrayPointValue:sM.appendArrayPointValue,castHoverOption:plt,castHoverinfo:glt,hover:Kle.hover,unhover:dlt.unhover,loneHover:Kle.loneHover,loneUnhover:vlt,click:Xle()};function vlt(e){var t=NL.isD3Selection(e)?e:hlt.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()}function plt(e,t,r){return NL.castOption(e,t,"hoverlabel."+r)}function glt(e,t,r){function n(i){return NL.coerceHoverinfo({hoverinfo:i},{_module:e._module},t)}return NL.castOption(e,r,"hoverinfo",n)}});var Sg=ye(My=>{"use strict";My.selectMode=function(e){return e==="lasso"||e==="select"};My.drawMode=function(e){return e==="drawclosedpath"||e==="drawopenpath"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.openMode=function(e){return e==="drawline"||e==="drawopenpath"};My.rectMode=function(e){return e==="select"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.freeMode=function(e){return e==="lasso"||e==="drawclosedpath"||e==="drawopenpath"};My.selectingOrDrawing=function(e){return My.freeMode(e)||My.rectMode(e)}});var lM=ye((rir,$le)=>{"use strict";$le.exports=function(t){var r=t._fullLayout;r._glcanvas&&r._glcanvas.size()&&r._glcanvas.each(function(n){n.regl&&n.regl.clear({color:!0,depth:!0})})}});var UL=ye((iir,Qle)=>{"use strict";Qle.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",transform:"matrix(1 0 0 -1 0 850)"},pan:{width:1e3,height:1e3,path:"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",transform:"matrix(1 0 0 -1 0 850)"},zoom_plus:{width:875,height:1e3,path:"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},zoom_minus:{width:875,height:1e3,path:"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},autoscale:{width:1e3,height:1e3,path:"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_basic:{width:1500,height:1e3,path:"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_compare:{width:1125,height:1e3,path:"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",transform:"matrix(1 0 0 -1 0 850)"},plotlylogo:{width:1542,height:1e3,path:"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",transform:"matrix(1 0 0 -1 0 850)"},"z-axis":{width:1e3,height:1e3,path:"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",transform:"matrix(1 0 0 -1 0 850)"},"3d_rotate":{width:1e3,height:1e3,path:"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",transform:"matrix(1 0 0 -1 0 850)"},camera:{width:1e3,height:1e3,path:"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",transform:"matrix(1 0 0 -1 0 850)"},movie:{width:1e3,height:1e3,path:"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",transform:"matrix(1 0 0 -1 0 850)"},question:{width:857.1,height:1e3,path:"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",transform:"matrix(1 0 0 -1 0 850)"},disk:{width:857.1,height:1e3,path:"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",transform:"matrix(1 0 0 -1 0 850)"},drawopenpath:{width:70,height:70,path:"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",transform:"matrix(1 0 0 1 -15 -15)"},drawclosedpath:{width:90,height:90,path:"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",transform:"matrix(1 0 0 1 -5 -5)"},lasso:{width:1031,height:1e3,path:"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",transform:"matrix(1 0 0 -1 0 850)"},selectbox:{width:1e3,height:1e3,path:"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",transform:"matrix(1 0 0 -1 0 850)"},drawline:{width:70,height:70,path:"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",transform:"matrix(1 0 0 1 -15 -15)"},drawrect:{width:80,height:80,path:"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",transform:"matrix(1 0 0 1 -10 -10)"},drawcircle:{width:80,height:80,path:"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",transform:"matrix(1 0 0 1 -10 -10)"},eraseshape:{width:80,height:80,path:"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",transform:"matrix(1 0 0 1 -10 -10)"},spikeline:{width:1e3,height:1e3,path:"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",transform:"matrix(1.5 0 0 -1.5 0 850)"},pencil:{width:1792,height:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",transform:"matrix(1 0 0 1 0 1)"},newplotlylogo:{name:"newplotlylogo",svg:["<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 132'>"," <title>plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}});var HL=ye((nir,eue)=>{"use strict";var VL=32;eue.exports={CIRCLE_SIDES:VL,i000:0,i090:VL/4,i180:VL/2,i270:VL/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}});var GL=ye((air,rue)=>{"use strict";var mlt=Mr().strTranslate;function tue(e,t){switch(e.type){case"log":return e.p2d(t);case"date":return e.p2r(t,0,e.calendar);default:return e.p2r(t)}}function ylt(e,t){switch(e.type){case"log":return e.d2p(t);case"date":return e.r2p(t,0,e.calendar);default:return e.r2p(t)}}function _lt(e){var t=e._id.charAt(0)==="y"?1:0;return function(r){return tue(e,r[t])}}function xlt(e){return mlt(e.xaxis._offset,e.yaxis._offset)}rue.exports={p2r:tue,r2p:ylt,axValue:_lt,getTransform:xlt}});var c_=ye(Ey=>{"use strict";var blt=XS(),aue=HL(),V3=aue.CIRCLE_SIDES,NB=aue.SQRT2,oue=GL(),iue=oue.p2r,nue=oue.r2p,wlt=[0,3,4,5,6,1,2],Tlt=[0,3,4,1,2];Ey.writePaths=function(e){var t=e.length;if(!t)return"M0,0Z";for(var r="",n=0;n0&&l{"use strict";var fue=Sg(),Alt=fue.drawMode,Slt=fue.openMode,H3=HL(),sue=H3.i000,lue=H3.i090,uue=H3.i180,cue=H3.i270,Mlt=H3.cos45,Elt=H3.sin45,hue=GL(),WL=hue.p2r,f_=hue.r2p,klt=e_(),Clt=klt.clearOutline,ZL=c_(),Llt=ZL.readPaths,Plt=ZL.writePaths,Ilt=ZL.ellipseOver,Rlt=ZL.fixDatesForPaths;function Dlt(e,t){if(e.length){var r=e[0][0];if(r){var n=t.gd,i=t.isActiveShape,a=t.dragmode,o=(n.layout||{}).shapes||[];if(!Alt(a)&&i!==void 0){var s=n._fullLayout._activeShapeIndex;if(s{"use strict";var zlt=Sg(),Flt=zlt.selectMode,qlt=e_(),Olt=qlt.clearOutline,UB=c_(),Blt=UB.readPaths,Nlt=UB.writePaths,Ult=UB.fixDatesForPaths;pue.exports=function(t,r){if(t.length){var n=t[0][0];if(n){var i=n.getAttribute("d"),a=r.gd,o=a._fullLayout.newselection,s=r.plotinfo,l=s.xaxis,u=s.yaxis,c=r.isActiveSelection,f=r.dragmode,h=(a.layout||{}).selections||[];if(!Flt(f)&&c!==void 0){var d=a._fullLayout._activeSelectionIndex;if(d{"use strict";gue.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}});var h_=ye(Ld=>{"use strict";var Fb=cM(),mue=Mr(),YL=Qa();Ld.rangeToShapePosition=function(e){return e.type==="log"?e.r2d:function(t){return t}};Ld.shapePositionToRange=function(e){return e.type==="log"?e.d2r:function(t){return t}};Ld.decodeDate=function(e){return function(t){return t.replace&&(t=t.replace("_"," ")),e(t)}};Ld.encodeDate=function(e){return function(t){return e(t).replace(" ","_")}};Ld.extractPathCoords=function(e,t,r){var n=[],i=e.match(Fb.segmentRE);return i.forEach(function(a){var o=t[a.charAt(0)].drawn;if(o!==void 0){var s=a.substr(1).match(Fb.paramRE);if(!(!s||s.lengthd&&(x="X"),x});return u>d&&(v=v.replace(/[\s,]*X.*/,""),mue.log("Ignoring extra params in segment "+l)),c+v})}function fM(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}});var GB=ye((fir,bue)=>{"use strict";var Hlt=Mr(),G3=Qa(),yue=Pl(),_ue=ao(),Glt=c_().readPaths,HB=h_(),jlt=HB.getPathString,xue=b6(),Wlt=Nh().FROM_TL;bue.exports=function(t,r,n,i){if(i.selectAll(".shape-label").remove(),!!(n.label.text||n.label.texttemplate)){var a;if(n.label.texttemplate){var o={};if(n.type!=="path"){var s=G3.getFromId(t,n.xref),l=G3.getFromId(t,n.yref);for(var u in xue){var c=xue[u](n,s,l);c!==void 0&&(o[u]=c)}}a=Hlt.texttemplateStringForShapes(n.label.texttemplate,{},t._fullLayout._d3locale,o)}else a=n.label.text;var f={"data-index":r},h=n.label.font,d={"data-notex":1},v=i.append("g").attr(f).classed("shape-label",!0),x=v.append("text").attr(d).classed("shape-label-text",!0).text(a),b,p,E,k;if(n.path){var A=jlt(t,n),L=Glt(A,t);b=1/0,E=1/0,p=-1/0,k=-1/0;for(var _=0;_=e?i=t-n:i=n-t,-180/Math.PI*Math.atan2(i,a)}function Xlt(e,t,r,n,i,a,o){var s=i.label.textposition,l=i.label.textangle,u=i.label.padding,c=i.type,f=Math.PI/180*a,h=Math.sin(f),d=Math.cos(f),v=i.label.xanchor,x=i.label.yanchor,b,p,E,k;if(c==="line"){s==="start"?(b=e,p=t):s==="end"?(b=r,p=n):(b=(e+r)/2,p=(t+n)/2),v==="auto"&&(s==="start"?l==="auto"?r>e?v="left":re?v="right":re?v="right":re?v="left":r{"use strict";var Ylt=Mr(),Klt=Ylt.strTranslate,wue=gv(),Sue=Sg(),Jlt=Sue.drawMode,Mue=Sue.selectMode,Eue=ba(),Tue=va(),JL=HL(),$lt=JL.i000,Qlt=JL.i090,eut=JL.i180,tut=JL.i270,rut=e_(),kue=rut.clearOutlineControllers,WB=c_(),KL=WB.pointsOnRectangle,jB=WB.pointsOnEllipse,iut=WB.writePaths,nut=XL().newShapes,aut=XL().createShapeObj,out=VB(),sut=GB();Cue.exports=function e(t,r,n,i){i||(i=0);var a=n.gd;function o(){e(t,r,n,i++),(jB(t[0])||n.hasText)&&s({redrawing:!0})}function s(G){var N={};n.isActiveShape!==void 0&&(n.isActiveShape=!1,N=nut(r,n)),n.isActiveSelection!==void 0&&(n.isActiveSelection=!1,N=out(r,n),a._fullLayout._reselect=!0),Object.keys(N).length&&Eue.call((G||{}).redrawing?"relayout":"_guiRelayout",a,N)}var l=a._fullLayout,u=l._zoomlayer,c=n.dragmode,f=Jlt(c),h=Mue(c);(f||h)&&(a._fullLayout._outlining=!0),kue(a),r.attr("d",iut(t));var d,v,x,b,p;if(!i&&(n.isActiveShape||n.isActiveSelection)){p=lut([],t);var E=u.append("g").attr("class","outline-controllers");P(E),X()}if(f&&n.hasText){var k=u.select(".label-temp"),A=aut(r,n,n.dragmode);sut(a,"label-temp",A,k)}function L(G){x=+G.srcElement.getAttribute("data-i"),b=+G.srcElement.getAttribute("data-j"),d[x][b].moveFn=_}function _(G,N){if(t.length){var W=p[x][b][1],re=p[x][b][2],ae=t[x],_e=ae.length;if(KL(ae)){var Me=G,ke=N;if(n.isActiveSelection){var ge=Aue(ae,b);ge[1]===ae[b][1]?ke=0:Me=0}for(var ie=0;ie<_e;ie++)if(ie!==b){var Te=ae[ie];Te[1]===ae[b][1]&&(Te[1]=W+Me),Te[2]===ae[b][2]&&(Te[2]=re+ke)}if(ae[b][1]=W+Me,ae[b][2]=re+ke,!KL(ae))for(var Ee=0;Ee<_e;Ee++)for(var Ae=0;Ae1&&!(G.length===2&&G[1][0]==="Z")&&(b===0&&(G[0][0]="M"),t[x]=G,o(),s())}}function g(G,N){if(G===2){x=+N.srcElement.getAttribute("data-i"),b=+N.srcElement.getAttribute("data-j");var W=t[x];!KL(W)&&!jB(W)&&M()}}function P(G){d=[];for(var N=0;N{"use strict";var cut=xa(),zue=ba(),Lue=Mr(),j3=Qa(),fut=c_().readPaths,hut=$L(),eP=GB(),Fue=e_().clearOutlineControllers,ZB=va(),YB=ao(),dut=Vs().arrayEditor,Pue=gv(),Iue=Tg(),qb=cM(),Mp=h_(),XB=Mp.getPathString;Bue.exports={draw:KB,drawOne:que,eraseActiveShape:gut,drawLabel:eP};function KB(e){var t=e._fullLayout;t._shapeUpperLayer.selectAll("path").remove(),t._shapeLowerLayer.selectAll("path").remove(),t._shapeUpperLayer.selectAll("text").remove(),t._shapeLowerLayer.selectAll("text").remove();for(var r in t._plots){var n=t._plots[r].shapelayer;n&&(n.selectAll("path").remove(),n.selectAll("text").remove())}for(var i=0;io&&kt>s&&!rt.shiftKey?Pue.getCursor(Ct/Rt,1-Yt/kt):"move";Iue(t,xr),Te=xr.split("-")[0]}}function Ce(rt){QL(e)||(l&&(p=ae(r.xanchor)),u&&(E=_e(r.yanchor)),r.type==="path"?T=r.path:(d=l?r.x0:ae(r.x0),v=u?r.y0:_e(r.y0),x=l?r.x1:ae(r.x1),b=u?r.y1:_e(r.y1)),db?(k=v,C="y0",A=b,M="y1"):(k=b,C="y1",A=v,M="y0"),ze(rt),nt(i,r),qt(t,r,e),ie.moveFn=Te==="move"?ce:Ge,ie.altKey=rt.altKey)}function me(){QL(e)||(Iue(t),ct(i),Oue(t,e,r),zue.call("_guiRelayout",e,a.getUpdateObj()))}function Re(){QL(e)||ct(i)}function ce(rt,ot){if(r.type==="path"){var Rt=function(Yt){return Yt},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(xr){return Me(ae(xr)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(xr){return ke(_e(xr)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else l?h("xanchor",r.xanchor=Me(p+rt)):(h("x0",r.x0=Me(d+rt)),h("x1",r.x1=Me(x+rt))),u?h("yanchor",r.yanchor=ke(E+ot)):(h("y0",r.y0=ke(v+ot)),h("y1",r.y1=ke(b+ot)));t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function Ge(rt,ot){if(f){var Rt=function(_r){return _r},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(Br){return Me(ae(Br)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(Br){return ke(_e(Br)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else if(c){if(Te==="resize-over-start-point"){var Yt=d+rt,xr=u?v-ot:v+ot;h("x0",r.x0=l?Yt:Me(Yt)),h("y0",r.y0=u?xr:ke(xr))}else if(Te==="resize-over-end-point"){var er=x+rt,Ke=u?b-ot:b+ot;h("x1",r.x1=l?er:Me(er)),h("y1",r.y1=u?Ke:ke(Ke))}}else{var xt=function(_r){return Te.indexOf(_r)!==-1},bt=xt("n"),Lt=xt("s"),St=xt("w"),Et=xt("e"),dt=bt?k+ot:k,Ht=Lt?A+ot:A,$t=St?L+rt:L,fr=Et?_+rt:_;u&&(bt&&(dt=k-ot),Lt&&(Ht=A-ot)),(!u&&Ht-dt>s||u&&dt-Ht>s)&&(h(C,r[C]=u?dt:ke(dt)),h(M,r[M]=u?Ht:ke(Ht))),fr-$t>o&&(h(g,r[g]=l?$t:Me($t)),h(P,r[P]=l?fr:Me(fr)))}t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function nt(rt,ot){(l||u)&&Rt();function Rt(){var kt=ot.type!=="path",Ct=rt.selectAll(".visual-cue").data([0]),Yt=1;Ct.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":Yt}).classed("visual-cue",!0);var xr=ae(l?ot.xanchor:Lue.midRange(kt?[ot.x0,ot.x1]:Mp.extractPathCoords(ot.path,qb.paramIsX))),er=_e(u?ot.yanchor:Lue.midRange(kt?[ot.y0,ot.y1]:Mp.extractPathCoords(ot.path,qb.paramIsY)));if(xr=Mp.roundPositionForSharpStrokeRendering(xr,Yt),er=Mp.roundPositionForSharpStrokeRendering(er,Yt),l&&u){var Ke="M"+(xr-1-Yt)+","+(er-1-Yt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";Ct.attr("d",Ke)}else if(l){var xt="M"+(xr-1-Yt)+","+(er-9-Yt)+"v18 h2 v-18 Z";Ct.attr("d",xt)}else{var bt="M"+(xr-9-Yt)+","+(er-1-Yt)+"h18 v2 h-18 Z";Ct.attr("d",bt)}}}function ct(rt){rt.selectAll(".visual-cue").remove()}function qt(rt,ot,Rt){var kt=ot.xref,Ct=ot.yref,Yt=j3.getFromId(Rt,kt),xr=j3.getFromId(Rt,Ct),er="";kt!=="paper"&&!Yt.autorange&&(er+=kt),Ct!=="paper"&&!xr.autorange&&(er+=Ct),YB.setClipUrl(rt,er?"clip"+Rt._fullLayout._uid+er:null,Rt)}}function Rue(e,t,r){return e.replace(qb.segmentRE,function(n){var i=0,a=n.charAt(0),o=qb.paramIsX[a],s=qb.paramIsY[a],l=qb.numParams[a],u=n.substr(1).replace(qb.paramRE,function(c){return i>=l||(o[i]?c=t(c):s[i]&&(c=r(c)),i++),c});return a+u})}function put(e,t){if(tP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex){Due(e);return}e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=Due,KB(e)}}}function Due(e){if(tP(e)){var t=e._fullLayout._activeShapeIndex;t>=0&&(Fue(e),delete e._fullLayout._activeShapeIndex,KB(e))}}function gut(e){if(tP(e)){Fue(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t{"use strict";var S0=ba(),Nue=Xu(),Uue=af(),al=UL(),mut=rP().eraseActiveShape,iP=Mr(),Os=iP._,ol=Xue.exports={};ol.toImage={name:"toImage",title:function(e){var t=e._context.toImageButtonOptions||{},r=t.format||"png";return r==="png"?Os(e,"Download plot as a png"):Os(e,"Download plot")},icon:al.camera,click:function(e){var t=e._context.toImageButtonOptions,r={format:t.format||"png"};iP.notifier(Os(e,"Taking snapshot - this may take a few seconds"),"long"),["filename","width","height","scale"].forEach(function(n){n in t&&(r[n]=t[n])}),S0.call("downloadImage",e,r).then(function(n){iP.notifier(Os(e,"Snapshot succeeded")+" - "+n,"long")}).catch(function(){iP.notifier(Os(e,"Sorry, there was a problem downloading your snapshot!"),"long")})}};ol.sendDataToCloud={name:"sendDataToCloud",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.disk,click:function(e){Nue.sendDataToCloud(e)}};ol.editInChartStudio={name:"editInChartStudio",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.pencil,click:function(e){Nue.sendDataToCloud(e)}};ol.zoom2d={name:"zoom2d",_cat:"zoom",title:function(e){return Os(e,"Zoom")},attr:"dragmode",val:"zoom",icon:al.zoombox,click:Ov};ol.pan2d={name:"pan2d",_cat:"pan",title:function(e){return Os(e,"Pan")},attr:"dragmode",val:"pan",icon:al.pan,click:Ov};ol.select2d={name:"select2d",_cat:"select",title:function(e){return Os(e,"Box Select")},attr:"dragmode",val:"select",icon:al.selectbox,click:Ov};ol.lasso2d={name:"lasso2d",_cat:"lasso",title:function(e){return Os(e,"Lasso Select")},attr:"dragmode",val:"lasso",icon:al.lasso,click:Ov};ol.drawclosedpath={name:"drawclosedpath",title:function(e){return Os(e,"Draw closed freeform")},attr:"dragmode",val:"drawclosedpath",icon:al.drawclosedpath,click:Ov};ol.drawopenpath={name:"drawopenpath",title:function(e){return Os(e,"Draw open freeform")},attr:"dragmode",val:"drawopenpath",icon:al.drawopenpath,click:Ov};ol.drawline={name:"drawline",title:function(e){return Os(e,"Draw line")},attr:"dragmode",val:"drawline",icon:al.drawline,click:Ov};ol.drawrect={name:"drawrect",title:function(e){return Os(e,"Draw rectangle")},attr:"dragmode",val:"drawrect",icon:al.drawrect,click:Ov};ol.drawcircle={name:"drawcircle",title:function(e){return Os(e,"Draw circle")},attr:"dragmode",val:"drawcircle",icon:al.drawcircle,click:Ov};ol.eraseshape={name:"eraseshape",title:function(e){return Os(e,"Erase active shape")},icon:al.eraseshape,click:mut};ol.zoomIn2d={name:"zoomIn2d",_cat:"zoomin",title:function(e){return Os(e,"Zoom in")},attr:"zoom",val:"in",icon:al.zoom_plus,click:Ov};ol.zoomOut2d={name:"zoomOut2d",_cat:"zoomout",title:function(e){return Os(e,"Zoom out")},attr:"zoom",val:"out",icon:al.zoom_minus,click:Ov};ol.autoScale2d={name:"autoScale2d",_cat:"autoscale",title:function(e){return Os(e,"Autoscale")},attr:"zoom",val:"auto",icon:al.autoscale,click:Ov};ol.resetScale2d={name:"resetScale2d",_cat:"resetscale",title:function(e){return Os(e,"Reset axes")},attr:"zoom",val:"reset",icon:al.home,click:Ov};ol.hoverClosestCartesian={name:"hoverClosestCartesian",_cat:"hoverclosest",title:function(e){return Os(e,"Show closest data on hover")},attr:"hovermode",val:"closest",icon:al.tooltip_basic,gravity:"ne",click:Ov};ol.hoverCompareCartesian={name:"hoverCompareCartesian",_cat:"hoverCompare",title:function(e){return Os(e,"Compare data on hover")},attr:"hovermode",val:function(e){return e._fullLayout._isHoriz?"y":"x"},icon:al.tooltip_compare,gravity:"ne",click:Ov};function Ov(e,t){var r=t.currentTarget,n=r.getAttribute("data-attr"),i=r.getAttribute("data-val")||!0,a=e._fullLayout,o={},s=Uue.list(e,null,!0),l=a._cartesianSpikesEnabled,u,c;if(n==="zoom"){var f=i==="in"?.5:2,h=(1+f)/2,d=(1-f)/2,v;for(c=0;c{"use strict";var Yue=QB(),xut=Object.keys(Yue),Kue=["drawline","drawopenpath","drawclosedpath","drawcircle","drawrect","eraseshape"],Jue=["v1hovermode","hoverclosest","hovercompare","togglehover","togglespikelines"].concat(Kue),Z3=[],but=function(e){if(Jue.indexOf(e._cat||e.name)===-1){var t=e.name,r=(e._cat||e.name).toLowerCase();Z3.indexOf(t)===-1&&Z3.push(t),Z3.indexOf(r)===-1&&Z3.push(r)}};xut.forEach(function(e){but(Yue[e])});Z3.sort();$ue.exports={DRAW_MODES:Kue,backButtons:Jue,foreButtons:Z3}});var tN=ye((mir,Que)=>{"use strict";var gir=eN();Que.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}});var tce=ye((yir,ece)=>{"use strict";var wut=Mr(),hM=va(),Tut=Vs(),Aut=tN();ece.exports=function(t,r){var n=t.modebar||{},i=Tut.newContainer(r,"modebar");function a(s,l){return wut.coerce(n,i,Aut,s,l)}a("orientation"),a("bgcolor",hM.addOpacity(r.paper_bgcolor,.5));var o=hM.contrast(hM.rgb(r.modebar.bgcolor));a("color",hM.addOpacity(o,.3)),a("activecolor",hM.addOpacity(o,.7)),a("uirevision",r.uirevision),a("add"),a("remove")}});var ace=ye((_ir,nce)=>{"use strict";var rN=xa(),Sut=uo(),aP=Mr(),rce=UL(),Mut=e6().version,Eut=new DOMParser;function ice(e){this.container=e.container,this.element=document.createElement("div"),this.update(e.graphInfo,e.buttons),this.container.appendChild(this.element)}var Tm=ice.prototype;Tm.update=function(e,t){this.graphInfo=e;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i="modebar-"+n._uid;this.element.setAttribute("id",i),this._uid=i,this.element.className="modebar",r.displayModeBar==="hover"&&(this.element.className+=" modebar--hover ease-bg"),n.modebar.orientation==="v"&&(this.element.className+=" vertical",t=t.reverse());var a=n.modebar,o="#"+i+" .modebar-group";document.querySelectorAll(o).forEach(function(f){f.style.backgroundColor=a.bgcolor});var s=!this.hasButtons(t),l=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(s||l||u)&&(this.removeAllButtons(),this.updateButtons(t),r.watermark||r.displaylogo)){var c=this.getLogo();r.watermark&&(c.className=c.className+" watermark"),n.modebar.orientation==="v"?this.element.insertBefore(c,this.element.childNodes[0]):this.element.appendChild(c),this.hasLogo=!0}this.updateActiveButton(),aP.setStyleOnHover("#"+i+" .modebar-btn",".active",".icon path","fill: "+a.activecolor,"fill: "+a.color,this.element)};Tm.updateButtons=function(e){var t=this;this.buttons=e,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(r){var n=t.createGroup();r.forEach(function(i){var a=i.name;if(!a)throw new Error("must provide button 'name' in button config");if(t.buttonsNames.indexOf(a)!==-1)throw new Error("button name '"+a+"' is taken");t.buttonsNames.push(a);var o=t.createButton(i);t.buttonElements.push(o),n.appendChild(o)}),t.element.appendChild(n)})};Tm.createGroup=function(){var e=document.createElement("div");e.className="modebar-group";var t=this.graphInfo._fullLayout.modebar;return e.style.backgroundColor=t.bgcolor,e};Tm.createButton=function(e){var t=this,r=document.createElement("a");r.setAttribute("rel","tooltip"),r.className="modebar-btn";var n=e.title;n===void 0?n=e.name:typeof n=="function"&&(n=n(this.graphInfo)),(n||n===0)&&r.setAttribute("data-title",n),e.attr!==void 0&&r.setAttribute("data-attr",e.attr);var i=e.val;i!==void 0&&(typeof i=="function"&&(i=i(this.graphInfo)),r.setAttribute("data-val",i));var a=e.click;if(typeof a!="function")throw new Error("must provide button 'click' function in button config");r.addEventListener("click",function(s){e.click(t.graphInfo,s),t.updateActiveButton(s.currentTarget)}),r.setAttribute("data-toggle",e.toggle||!1),e.toggle&&rN.select(r).classed("active",!0);var o=e.icon;return typeof o=="function"?r.appendChild(o()):r.appendChild(this.createIcon(o||rce.question)),r.setAttribute("data-gravity",e.gravity||"n"),r};Tm.createIcon=function(e){var t=Sut(e.height)?Number(e.height):e.ascent-e.descent,r="http://www.w3.org/2000/svg",n;if(e.path){n=document.createElementNS(r,"svg"),n.setAttribute("viewBox",[0,0,e.width,t].join(" ")),n.setAttribute("class","icon");var i=document.createElementNS(r,"path");i.setAttribute("d",e.path),e.transform?i.setAttribute("transform",e.transform):e.ascent!==void 0&&i.setAttribute("transform","matrix(1 0 0 -1 0 "+e.ascent+")"),n.appendChild(i)}if(e.svg){var a=Eut.parseFromString(e.svg,"application/xml");n=a.childNodes[0]}return n.setAttribute("height","1em"),n.setAttribute("width","1em"),n};Tm.updateActiveButton=function(e){var t=this.graphInfo._fullLayout,r=e!==void 0?e.getAttribute("data-attr"):null;this.buttonElements.forEach(function(n){var i=n.getAttribute("data-val")||!0,a=n.getAttribute("data-attr"),o=n.getAttribute("data-toggle")==="true",s=rN.select(n),l=function(f,h){var d=t.modebar,v=f.querySelector(".icon path");v&&(h||f.matches(":hover")?v.style.fill=d.activecolor:v.style.fill=d.color)};if(o){if(a===r){var u=!s.classed("active");s.classed("active",u),l(n,u)}}else{var c=a===null?a:aP.nestedProperty(t,a).get();s.classed("active",c===i),l(n,c===i)}})};Tm.hasButtons=function(e){var t=this.buttons;if(!t||e.length!==t.length)return!1;for(var r=0;r{"use strict";var Lut=af(),oce=lu(),iN=ba(),Put=rp().isUnifiedHover,Iut=ace(),oP=QB(),Rut=eN().DRAW_MODES,Dut=Mr().extendDeep;sce.exports=function(t){var r=t._fullLayout,n=t._context,i=r._modeBar;if(!n.displayModeBar&&!n.watermark){i&&(i.destroy(),delete r._modeBar);return}if(!Array.isArray(n.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(n.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var a=n.modeBarButtons,o;Array.isArray(a)&&a.length?o=Nut(a):!n.displayModeBar&&n.watermark?o=[]:o=zut(t),i?i.update(t,o):r._modeBar=Iut(t,o)};function zut(e){var t=e._fullLayout,r=e._fullData,n=e._context;function i(N,W){if(typeof W=="string"){if(W.toLowerCase()===N.toLowerCase())return!0}else{var re=W.name,ae=W._cat||W.name;if(re===N||ae===N.toLowerCase())return!0}return!1}var a=t.modebar.add;typeof a=="string"&&(a=[a]);var o=t.modebar.remove;typeof o=="string"&&(o=[o]);var s=n.modeBarButtonsToAdd.concat(a.filter(function(N){for(var W=0;W1?(P=["toggleHover"],T=["resetViews"]):f?(g=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],T=["resetGeo"]):c?(P=["hoverClosest3d"],T=["resetCameraDefault3d","resetCameraLastSave3d"]):x?(g=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],T=["resetViewMapbox"]):b?(g=["zoomInMap","zoomOutMap"],P=["toggleHover"],T=["resetViewMap"]):h?P=["hoverClosestPie"]:k?(P=["hoverClosestCartesian","hoverCompareCartesian"],T=["resetViewSankey"]):P=["toggleHover"],u&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(Out(r)||L)&&(P=[]),u&&!A&&(g=["zoomIn2d","zoomOut2d","autoScale2d"],T[0]!=="resetViews"&&(T=["resetScale2d"])),c?F=["zoom3d","pan3d","orbitRotation","tableRotation"]:u&&!A||v?F=["zoom2d","pan2d"]:x||b||f?F=["pan2d"]:p&&(F=["zoom2d"]),qut(r)&&F.push("select2d","lasso2d");var q=[],V=function(N){q.indexOf(N)===-1&&P.indexOf(N)!==-1&&q.push(N)};if(Array.isArray(s)){for(var H=[],X=0;X{"use strict";uce.exports={moduleType:"component",name:"modebar",layoutAttributes:tN(),supplyLayoutDefaults:tce(),manage:lce()}});var aN=ye((wir,cce)=>{"use strict";var Uut=Nh().FROM_BL;cce.exports=function(t,r,n){n===void 0&&(n=Uut[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*n;t.range=t._input.range=[t.l2r(a+(i[0]-a)*r),t.l2r(a+(i[1]-a)*r)],t.setScale()}});var Bb=ye(dM=>{"use strict";var Ob=Mr(),oN=wg(),Mg=af().id2name,Vut=Cd(),fce=aN(),Hut=ym(),Gut=es().ALMOST_EQUAL,jut=Nh().FROM_BL;dM.handleDefaults=function(e,t,r){var n=r.axIds,i=r.axHasImage,a=t._axisConstraintGroups=[],o=t._axisMatchGroups=[],s,l,u,c,f,h,d,v;for(s=0;sa?r.substr(a):n.substr(i))+o}function Zut(e,t){for(var r=t._size,n=r.h/r.w,i={},a=Object.keys(e),o=0;oGut*v&&!E)){for(a=0;aF&&reP&&(P=re);var _e=(P-g)/(2*T);f/=_e,g=l.l2r(g),P=l.l2r(P),l.range=l._input.range=_{"use strict";var lP=xa(),Bv=ba(),Jp=Xu(),M0=Mr(),uN=Pl(),cN=lM(),vM=va(),X3=ao(),pce=Mb(),xce=nN(),pM=Qa(),ky=Nh(),bce=Bb(),Xut=bce.enforce,Yut=bce.clean,gce=wg().doAutoRange,wce="start",Kut="middle",Tce="end",Jut=ad().zindexSeparator;ld.layoutStyles=function(e){return M0.syncOrAsync([Jp.doAutoMargin,Qut],e)};function $ut(e,t,r){for(var n=0;n=e[1]||i[1]<=e[0])&&a[0]t[0])return!0}return!1}function Qut(e){var t=e._fullLayout,r=t._size,n=r.p,i=pM.list(e,"",!0),a,o,s,l,u,c;if(t._paperdiv.style({width:e._context.responsive&&t.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":t.width+"px",height:e._context.responsive&&t.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":t.height+"px"}).selectAll(".main-svg").call(X3.setSize,t.width,t.height),e._context.setBackground(e,t.paper_bgcolor),ld.drawMainTitle(e),xce.manage(e),!t._has("cartesian"))return Jp.previousPromises(e);function f(Ce,me,Re){var ce=Ce._lw/2;if(Ce._id.charAt(0)==="x"){if(me){if(Re==="top")return me._offset-n-ce}else return r.t+r.h*(1-(Ce.position||0))+ce%1;return me._offset+me._length+n+ce}if(me){if(Re==="right")return me._offset+me._length+n+ce}else return r.l+r.w*(Ce.position||0)+ce%1;return me._offset-n-ce}for(a=0;a0){ict(e,a,u,l),s.attr({x:o,y:a,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,a);var c=(t.text.match(uN.BR_TAG_ALL)||[]).length;if(c){var f=ky.LINE_SPACING*c+ky.MID_SHIFT;t.y===0&&(f=-f),s.selectAll(".line").each(function(){var b=+this.getAttribute("dy").slice(0,-2)-f+"em";this.setAttribute("dy",b)})}var h=lP.selectAll(".gtitle-subtitle");if(h.node()){var d=s.node().getBBox(),v=d.y+d.height,x=v+pce.SUBTITLE_PADDING_EM*t.subtitle.font.size;h.attr({x:o,y:x,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,x)}}}};function ect(e,t,r,n,i){var a=t.yref==="paper"?e._fullLayout._size.h:e._fullLayout.height,o=M0.isTopAnchor(t)?n:n-i,s=r==="b"?a-o:o;return M0.isTopAnchor(t)&&r==="t"||M0.isBottomAnchor(t)&&r==="b"?!1:s.5?"t":"b",o=e._fullLayout.margin[a],s=0;return t.yref==="paper"?s=r+t.pad.t+t.pad.b:t.yref==="container"&&(s=tct(a,n,i,e._fullLayout.height,r)+t.pad.t+t.pad.b),s>o?s:0}function ict(e,t,r,n){var i="title.automargin",a=e._fullLayout.title,o=a.y>.5?"t":"b",s={x:a.x,y:a.y,t:0,b:0},l={};a.yref==="paper"&&ect(e,a,o,t,n)?s[o]=r:a.yref==="container"&&(l[o]=r,e._fullLayout._reservedMargin[i]=l),Jp.allowAutoMargin(e,i),Jp.autoMargin(e,i,s)}function nct(e,t){var r=e.title,n=e._size,i=0;switch(t===wce?i=r.pad.l:t===Tce&&(i=-r.pad.r),r.xref){case"paper":return n.l+n.w*r.x+i;case"container":default:return e.width*r.x+i}}function act(e,t){var r=e.title,n=e._size,i=0;if(t==="0em"||!t?i=-r.pad.b:t===ky.CAP_SHIFT+"em"&&(i=r.pad.t),r.y==="auto")return n.t/2;switch(r.yref){case"paper":return n.t+n.h-n.h*r.y+i;case"container":default:return e.height-e.height*r.y+i}}function _ce(e){return e==="top"?ky.CAP_SHIFT+.3+"em":e==="bottom"?"-0.3em":ky.MID_SHIFT+"em"}function oct(e){var t=e.title,r=Kut;return M0.isRightAnchor(t)?r=Tce:M0.isLeftAnchor(t)&&(r=wce),r}function sct(e){var t=e.title,r="0em";return M0.isTopAnchor(t)?r=ky.CAP_SHIFT+"em":M0.isMiddleAnchor(t)&&(r=ky.MID_SHIFT+"em"),r}ld.doTraceStyle=function(e){var t=e.calcdata,r=[],n;for(n=0;n{"use strict";var lct=c_().readPaths,uct=$L(),Ace=e_().clearOutlineControllers,fN=va(),Sce=ao(),cct=Vs().arrayEditor,Mce=h_(),fct=Mce.getPathString;kce.exports={draw:uP,drawOne:Ece,activateLastSelection:vct};function uP(e){var t=e._fullLayout;Ace(e),t._selectionLayer.selectAll("path").remove();for(var r in t._plots){var n=t._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;b--){var p=o.append("path").attr(l).style("opacity",b?.1:u).call(fN.stroke,f).call(fN.fill,c).call(Sce.dashLine,b?"solid":d,b?4+h:h);if(hct(p,e,n),v){var E=cct(e.layout,"selections",n);p.style({cursor:"move"});var k={element:p.node(),plotinfo:i,gd:e,editHelpers:E,isActiveSelection:!0},A=lct(s,e);uct(A,p,k)}else p.style("pointer-events",b?"all":"none");x[b]=p}var L=x[0],_=x[1];_.node().addEventListener("click",function(){return dct(e,L)})}}function hct(e,t,r){var n=r.xref+r.yref;Sce.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function dct(e,t){if(cP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex){hN(e);return}e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=hN,uP(e)}}}function vct(e){if(cP(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=hN,uP(e)}}function hN(e){if(cP(e)){var t=e._fullLayout._activeSelectionIndex;t>=0&&(Ace(e),delete e._fullLayout._activeSelectionIndex,uP(e))}}});var Lce=ye((Mir,Cce)=>{function pct(){var e,t=0,r=!1;function n(i,a){return e.list.push({type:i,data:a?JSON.parse(JSON.stringify(a)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(i,a){return n("check",{seg1:i,seg2:a})},segmentChop:function(i,a){return n("div_seg",{seg:i,pt:a}),n("chop",{seg:i,pt:a})},statusRemove:function(i){return n("pop_seg",{seg:i})},segmentUpdate:function(i){return n("seg_update",{seg:i})},segmentNew:function(i,a){return n("new_seg",{seg:i,primary:a})},segmentRemove:function(i){return n("rem_seg",{seg:i})},tempStatus:function(i,a,o){return n("temp_status",{seg:i,above:a,below:o})},rewind:function(i){return n("rewind",{seg:i})},status:function(i,a,o){return n("status",{seg:i,above:a,below:o})},vert:function(i){return i===r?e:(r=i,n("vert",{x:i}))},log:function(i){return typeof i!="string"&&(i=JSON.stringify(i,!1," ")),n("log",{txt:i})},reset:function(){return n("reset")},selected:function(i){return n("selected",{segs:i})},chainStart:function(i){return n("chain_start",{seg:i})},chainRemoveHead:function(i,a){return n("chain_rem_head",{index:i,pt:a})},chainRemoveTail:function(i,a){return n("chain_rem_tail",{index:i,pt:a})},chainNew:function(i,a){return n("chain_new",{pt1:i,pt2:a})},chainMatch:function(i){return n("chain_match",{index:i})},chainClose:function(i){return n("chain_close",{index:i})},chainAddHead:function(i,a){return n("chain_add_head",{index:i,pt:a})},chainAddTail:function(i,a){return n("chain_add_tail",{index:i,pt:a})},chainConnect:function(i,a){return n("chain_con",{index1:i,index2:a})},chainReverse:function(i){return n("chain_rev",{index:i})},chainJoin:function(i,a){return n("chain_join",{index1:i,index2:a})},done:function(){return n("done")}},e}Cce.exports=pct});var Ice=ye((Eir,Pce)=>{function gct(e){typeof e!="number"&&(e=1e-10);var t={epsilon:function(r){return typeof r=="number"&&(e=r),e},pointAboveOrOnLine:function(r,n,i){var a=n[0],o=n[1],s=i[0],l=i[1],u=r[0],c=r[1];return(s-a)*(c-o)-(l-o)*(u-a)>=-e},pointBetween:function(r,n,i){var a=r[1]-n[1],o=i[0]-n[0],s=r[0]-n[0],l=i[1]-n[1],u=s*o+a*l;if(u-e)},pointsSameX:function(r,n){return Math.abs(r[0]-n[0])e!=s-a>e&&(o-c)*(a-f)/(s-f)+c-i>e&&(l=!l),o=c,s=f}return l}};return t}Pce.exports=gct});var Dce=ye((kir,Rce)=>{var mct={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(t===null||t===e.root)},isEmpty:function(){return e.root.next===null},getHead:function(){return e.root.next},insertBefore:function(t,r){for(var n=e.root,i=e.root.next;i!==null;){if(r(i)){t.prev=i.prev,t.next=i,i.prev.next=t,i.prev=t;return}n=i,i=i.next}n.next=t,t.prev=n,t.next=null},findTransition:function(t){for(var r=e.root,n=e.root.next;n!==null&&!t(n);)r=n,n=n.next;return{before:r===e.root?null:r,after:n,insert:function(i){return i.prev=r,i.next=n,r.next=i,n!==null&&(n.prev=i),i}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}};Rce.exports=mct});var Fce=ye((Cir,zce)=>{var mM=Dce();function yct(e,t,r){function n(v,x){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:null,below:null},otherFill:null}}function i(v,x,b){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:b.myFill.above,below:b.myFill.below},otherFill:null}}var a=mM.create();function o(v,x,b,p,E,k){var A=t.pointsCompare(x,E);return A!==0?A:t.pointsSame(b,k)?0:v!==p?v?1:-1:t.pointAboveOrOnLine(b,p?E:k,p?k:E)?1:-1}function s(v,x){a.insertBefore(v,function(b){var p=o(v.isStart,v.pt,x,b.isStart,b.pt,b.other.pt);return p<0})}function l(v,x){var b=mM.node({isStart:!0,pt:v.start,seg:v,primary:x,other:null,status:null});return s(b,v.end),b}function u(v,x,b){var p=mM.node({isStart:!1,pt:x.end,seg:x,primary:b,other:v,status:null});v.other=p,s(p,v.pt)}function c(v,x){var b=l(v,x);return u(b,v,x),b}function f(v,x){r&&r.segmentChop(v.seg,x),v.other.remove(),v.seg.end=x,v.other.pt=x,s(v.other,v.pt)}function h(v,x){var b=i(x,v.seg.end,v.seg);return f(v,x),c(b,v.primary)}function d(v,x){var b=mM.create();function p(H,X){var G=H.seg.start,N=H.seg.end,W=X.seg.start,re=X.seg.end;return t.pointsCollinear(G,W,re)?t.pointsCollinear(N,W,re)||t.pointAboveOrOnLine(N,W,re)?1:-1:t.pointAboveOrOnLine(G,W,re)?1:-1}function E(H){return b.findTransition(function(X){var G=p(H,X.ev);return G>0})}function k(H,X){var G=H.seg,N=X.seg,W=G.start,re=G.end,ae=N.start,_e=N.end;r&&r.checkIntersection(G,N);var Me=t.linesIntersect(W,re,ae,_e);if(Me===!1){if(!t.pointsCollinear(W,re,ae)||t.pointsSame(W,_e)||t.pointsSame(re,ae))return!1;var ke=t.pointsSame(W,ae),ge=t.pointsSame(re,_e);if(ke&&ge)return X;var ie=!ke&&t.pointBetween(W,ae,_e),Te=!ge&&t.pointBetween(re,ae,_e);if(ke)return Te?h(X,re):h(H,_e),X;ie&&(ge||(Te?h(X,re):h(H,_e)),h(X,W))}else Me.alongA===0&&(Me.alongB===-1?h(H,ae):Me.alongB===0?h(H,Me.pt):Me.alongB===1&&h(H,_e)),Me.alongB===0&&(Me.alongA===-1?h(X,W):Me.alongA===0?h(X,Me.pt):Me.alongA===1&&h(X,re));return!1}for(var A=[];!a.isEmpty();){var L=a.getHead();if(r&&r.vert(L.pt[0]),L.isStart){let H=function(){if(C){var X=k(L,C);if(X)return X}return M?k(L,M):!1};var V=H;r&&r.segmentNew(L.seg,L.primary);var _=E(L),C=_.before?_.before.ev:null,M=_.after?_.after.ev:null;r&&r.tempStatus(L.seg,C?C.seg:!1,M?M.seg:!1);var g=H();if(g){if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,P&&(g.seg.myFill.above=!g.seg.myFill.above)}else g.seg.otherFill=L.seg.myFill;r&&r.segmentUpdate(g.seg),L.other.remove(),L.remove()}if(a.getHead()!==L){r&&r.rewind(L.seg);continue}if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,M?L.seg.myFill.below=M.seg.myFill.above:L.seg.myFill.below=v,P?L.seg.myFill.above=!L.seg.myFill.below:L.seg.myFill.above=L.seg.myFill.below}else if(L.seg.otherFill===null){var T;M?L.primary===M.primary?T=M.seg.otherFill.above:T=M.seg.myFill.above:T=L.primary?x:v,L.seg.otherFill={above:T,below:T}}r&&r.status(L.seg,C?C.seg:!1,M?M.seg:!1),L.other.status=_.insert(mM.node({ev:L}))}else{var F=L.status;if(F===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(b.exists(F.prev)&&b.exists(F.next)&&k(F.prev.ev,F.next.ev),r&&r.statusRemove(F.ev.seg),F.remove(),!L.primary){var q=L.seg.myFill;L.seg.myFill=L.seg.otherFill,L.seg.otherFill=q}A.push(L.seg)}a.getHead().remove()}return r&&r.done(),A}return e?{addRegion:function(v){for(var x,b=v[v.length-1],p=0;p{function _ct(e,t,r){var n=[],i=[];return e.forEach(function(a){var o=a.start,s=a.end;if(t.pointsSame(o,s)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}r&&r.chainStart(a);var l={index:0,matches_head:!1,matches_pt1:!1},u={index:0,matches_head:!1,matches_pt1:!1},c=l;function f(V,H,X){return c.index=V,c.matches_head=H,c.matches_pt1=X,c===l?(c=u,!1):(c=null,!0)}for(var h=0;h{function yM(e,t,r){var n=[];return e.forEach(function(i){var a=(i.myFill.above?8:0)+(i.myFill.below?4:0)+(i.otherFill&&i.otherFill.above?2:0)+(i.otherFill&&i.otherFill.below?1:0);t[a]!==0&&n.push({id:r?r.segmentId():-1,start:i.start,end:i.end,myFill:{above:t[a]===1,below:t[a]===2},otherFill:null})}),r&&r.selected(n),n}var xct={union:function(e,t){return yM(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return yM(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return yM(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return yM(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return yM(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};Bce.exports=xct});var Vce=ye((Iir,Uce)=>{var bct={toPolygon:function(e,t){function r(a){if(a.length<=0)return e.segments({inverted:!1,regions:[]});function o(u){var c=u.slice(0,u.length-1);return e.segments({inverted:!1,regions:[c]})}for(var s=o(a[0]),l=1;l{var wct=Lce(),Tct=Ice(),Hce=Fce(),Act=Oce(),_M=Nce(),Gce=Vce(),E0=!1,xM=Tct(),Ep;Ep={buildLog:function(e){return e===!0?E0=wct():e===!1&&(E0=!1),E0===!1?!1:E0.list},epsilon:function(e){return xM.epsilon(e)},segments:function(e){var t=Hce(!0,xM,E0);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){var r=Hce(!1,xM,E0);return{combined:r.calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:_M.union(e.combined,E0),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:_M.intersect(e.combined,E0),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:_M.difference(e.combined,E0),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:_M.differenceRev(e.combined,E0),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:_M.xor(e.combined,E0),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:Act(e.segments,xM,E0),inverted:e.inverted}},polygonFromGeoJSON:function(e){return Gce.toPolygon(Ep,e)},polygonToGeoJSON:function(e){return Gce.fromPolygon(Ep,xM,e)},union:function(e,t){return bM(e,t,Ep.selectUnion)},intersect:function(e,t){return bM(e,t,Ep.selectIntersect)},difference:function(e,t){return bM(e,t,Ep.selectDifference)},differenceRev:function(e,t){return bM(e,t,Ep.selectDifferenceRev)},xor:function(e,t){return bM(e,t,Ep.selectXor)}};function bM(e,t,r){var n=Ep.segments(e),i=Ep.segments(t),a=Ep.combine(n,i),o=r(a);return Ep.polygon(o)}typeof window=="object"&&(window.PolyBool=Ep);jce.exports=Ep});var Xce=ye((Dir,Zce)=>{Zce.exports=function(t,r,n,i){var a=t[0],o=t[1],s=!1;n===void 0&&(n=0),i===void 0&&(i=r.length);for(var l=i-n,u=0,c=l-1;uo!=v>o&&a<(d-f)*(o-h)/(v-h)+f;x&&(s=!s)}return s}});var wM=ye((zir,Yce)=>{"use strict";var vN=m6().dot,fP=es().BADNUM,hP=Yce.exports={};hP.tester=function(t){var r=t.slice(),n=r[0][0],i=n,a=r[0][1],o=a,s;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),s=1;si||p===fP||po||x&&u(v))}function f(v,x){var b=v[0],p=v[1];if(b===fP||bi||p===fP||po)return!1;var E=r.length,k=r[0][0],A=r[0][1],L=0,_,C,M,g,P;for(_=1;_Math.max(C,k)||p>Math.max(M,A)))if(ps||Math.abs(vN(f,u))>i)return!0;return!1};hP.filter=function(t,r){var n=[t[0]],i=0,a=0;function o(l){t.push(l);var u=n.length,c=i;n.splice(a+1);for(var f=c+1;f1){var s=t.pop();o(s)}return{addPt:o,raw:t,filtered:n}}});var Jce=ye((Fir,Kce)=>{"use strict";Kce.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}});var _fe=ye((qir,yfe)=>{"use strict";var $ce=Wce(),Sct=Xce(),SM=ba(),Mct=ao().dashStyle,TM=va(),Ect=Nc(),kct=rp().makeEventData,LM=Sg(),Cct=LM.freeMode,Lct=LM.rectMode,MM=LM.drawMode,yN=LM.openMode,_N=LM.selectMode,Qce=h_(),efe=cM(),afe=$L(),ofe=e_().clearOutline,sfe=c_(),pN=sfe.handleEllipse,Pct=sfe.readPaths,Ict=XL().newShapes,Rct=VB(),Dct=dN().activateLastSelection,vP=Mr(),zct=vP.sorterAsc,lfe=wM(),AM=P6(),k0=af().getFromId,Fct=lM(),qct=gM().redrawReglTraces,pP=Jce(),Am=pP.MINSELECT,Oct=lfe.filter,xN=lfe.tester,bN=GL(),tfe=bN.p2r,Bct=bN.axValue,Nct=bN.getTransform;function wN(e){return e.subplot!==void 0}function Uct(e,t,r,n,i){var a=!wN(n),o=Cct(i),s=Lct(i),l=yN(i),u=MM(i),c=_N(i),f=i==="drawline",h=i==="drawcircle",d=f||h,v=n.gd,x=v._fullLayout,b=c&&x.newselection.mode==="immediate"&&a,p=x._zoomlayer,E=n.element.getBoundingClientRect(),k=n.plotinfo,A=Nct(k),L=t-E.left,_=r-E.top;x._calcInverseTransform(v);var C=vP.apply3DTransform(x._invTransform)(L,_);L=C[0],_=C[1];var M=x._invScaleX,g=x._invScaleY,P=L,T=_,F="M"+L+","+_,q=n.xaxes[0],V=n.yaxes[0],H=q._length,X=V._length,G=e.altKey&&!(MM(i)&&l),N,W,re,ae,_e,Me,ke;cfe(e,v,n),o&&(N=Oct([[L,_]],pP.BENDPX));var ge=p.selectAll("path.select-outline-"+k.id).data([1]),ie=u?x.newshape:x.newselection;u&&(n.hasText=ie.label.text||ie.label.texttemplate);var Te=u&&!l?ie.fillcolor:"rgba(0,0,0,0)",Ee=ie.line.color||(a?TM.contrast(v._fullLayout.plot_bgcolor):"#7f7f7f");ge.enter().append("path").attr("class","select-outline select-outline-"+k.id).style({opacity:u?ie.opacity/2:1,"stroke-dasharray":Mct(ie.line.dash,ie.line.width),"stroke-width":ie.line.width+"px","shape-rendering":"crispEdges"}).call(TM.stroke,Ee).call(TM.fill,Te).attr("fill-rule","evenodd").classed("cursor-move",!!u).attr("transform",A).attr("d",F+"Z");var Ae=p.append("path").attr("class","zoombox-corners").style({fill:TM.background,stroke:TM.defaultLine,"stroke-width":1}).attr("transform",A).attr("d","M0,0Z");if(u&&n.hasText){var ze=p.select(".label-temp");ze.empty()&&(ze=p.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var Ce=x._uid+pP.SELECTID,me=[],Re=gP(v,n.xaxes,n.yaxes,n.subplot);b&&!e.shiftKey&&(n._clearSubplotSelections=function(){if(a){var Ge=q._id,nt=V._id;pfe(v,Ge,nt,Re);for(var ct=(v.layout||{}).selections||[],qt=[],rt=!1,ot=0;ot=0){v._fullLayout._deactivateShape(v);return}if(!u){var ct=x.clickmode;AM.done(Ce).then(function(){if(AM.clear(Ce),Ge===2){for(ge.remove(),_e=0;_e-1&&ufe(nt,v,n.xaxes,n.yaxes,n.subplot,n,ge),ct==="event"&&CM(v,void 0);Ect.click(v,nt,k.id)}).catch(vP.error)}},n.doneFn=function(){Ae.remove(),AM.done(Ce).then(function(){AM.clear(Ce),!b&&ae&&n.selectionDefs&&(ae.subtract=G,n.selectionDefs.push(ae),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,re)),(b||u)&&EM(n,b),n.doneFnCompleted&&n.doneFnCompleted(me),c&&CM(v,ke)}).catch(vP.error)}}function ufe(e,t,r,n,i,a,o){var s=t._hoverdata,l=t._fullLayout,u=l.clickmode,c=u.indexOf("event")>-1,f=[],h,d,v,x,b,p,E,k,A,L;if(Wct(s)){cfe(e,t,a),h=gP(t,r,n,i);var _=Zct(s,h),C=_.pointNumbers.length>0;if(C?Xct(h,_):Yct(h)&&(E=ife(_))){for(o&&o.remove(),L=0;L=0}function jct(e){return e._fullLayout._activeSelectionIndex>=0}function EM(e,t){var r=e.dragmode,n=e.plotinfo,i=e.gd;Gct(i)&&i._fullLayout._deactivateShape(i),jct(i)&&i._fullLayout._deactivateSelection(i);var a=i._fullLayout,o=a._zoomlayer,s=MM(r),l=_N(r);if(s||l){var u=o.selectAll(".select-outline-"+n.id);if(u&&i._fullLayout._outlining){var c;s&&(c=Ict(u,e)),c&&SM.call("_guiRelayout",i,{shapes:c});var f;l&&!wN(e)&&(f=Rct(u,e)),f&&(i._fullLayout._noEmitSelectedAtStart=!0,SM.call("_guiRelayout",i,{selections:f}).then(function(){t&&Dct(i)})),i._fullLayout._outlining=!1}}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function rfe(e){return e._id}function gP(e,t,r,n){if(!e.calcdata)return[];var i=[],a=t.map(rfe),o=r.map(rfe),s,l,u;for(u=0;u0,a=i?n[0]:r;return t.selectedpoints?t.selectedpoints.indexOf(a)>-1:!1}function Xct(e,t){var r=[],n,i,a,o;for(o=0;o0&&r.push(n);if(r.length===1&&(a=r[0]===t.searchInfo,a&&(i=t.searchInfo.cd[0].trace,i.selectedpoints.length===t.pointNumbers.length))){for(o=0;o1||(t+=n.selectedpoints.length,t>1)))return!1;return t===1}function kM(e,t,r){var n;for(n=0;n-1&&t;if(!o&&t){var Ge=nfe(e,!0);if(Ge.length){var nt=Ge[0].xref,ct=Ge[0].yref;if(nt&&ct){var qt=gfe(Ge),rt=mfe([k0(e,nt,"x"),k0(e,ct,"y")]);rt(me,qt)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ce&&CM(e,me),h._reselect=!1}if(!o&&h._deselect){var ot=h._deselect;s=ot.xref,l=ot.yref,$ct(s,l,c)||pfe(e,s,l,n),ce&&(me.points.length?CM(e,me):SN(e)),h._deselect=!1}return{eventData:me,selectionTesters:r}}function Jct(e){var t=e.calcdata;if(t)for(var r=0;r{"use strict";xfe.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]});var PM=ye((Bir,bfe)=>{"use strict";bfe.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}});var Nb=ye((Uir,Afe)=>{"use strict";var wfe=MN(),Tfe=Su(),mP=ad(),ift=Vs().templatedArray,Nir=PM();Afe.exports=ift("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:Tfe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",mP.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",mP.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:Tfe({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})});var Sm=ye((Vir,Sfe)=>{"use strict";Sfe.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}});var Eg=ye((Hir,Mfe)=>{"use strict";Mfe.exports=function(t){return{valType:"color",editType:"style",anim:!0}}});var Uc=ye((Gir,Ife)=>{"use strict";var Efe=Oc().axisHoverFormat,nft=Wo().texttemplateAttrs,aft=Wo().hovertemplateAttrs,kfe=Jl(),oft=Su(),sft=Ed().dash,lft=Ed().pattern,uft=ao(),cft=Sm(),yP=no().extendFlat,fft=Eg();function Cfe(e){return{valType:"any",dflt:0,editType:"calc"}}function Lfe(e){return{valType:"any",editType:"calc"}}function Pfe(e){return{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"}}Ife.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:Cfe("x"),yperiod:Cfe("y"),xperiod0:Lfe("x0"),yperiod0:Lfe("y0"),xperiodalignment:Pfe("x"),yperiodalignment:Pfe("y"),xhoverformat:Efe("x"),yhoverformat:Efe("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:nft({},{}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:aft({},{keys:cft.eventDataKeys}),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:yP({},sft,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:fft(!0),fillgradient:yP({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:lft,marker:yP({symbol:{valType:"enumerated",values:uft.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:yP({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},editType:"calc"},kfe("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},kfe("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"middle center",arrayOk:!0,editType:"calc"},textfont:oft({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}});var EN=ye((Wir,zfe)=>{"use strict";var Rfe=Nb(),Dfe=Uc().line,hft=Ed().dash,_P=no().extendFlat,dft=Bu().overrideAll,vft=Vs().templatedArray,jir=PM();zfe.exports=dft(vft("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:_P({},Rfe.xref,{}),yref:_P({},Rfe.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:Dfe.color,width:_P({},Dfe.width,{min:1,dflt:1}),dash:_P({},hft,{dflt:"dot"})}}),"arraydraw","from-root")});var Bfe=ye((Zir,Ofe)=>{"use strict";var Ffe=Mr(),xP=Qa(),pft=Zd(),gft=EN(),qfe=h_();Ofe.exports=function(t,r){pft(t,r,{name:"selections",handleItemDefaults:mft});for(var n=r.selections,i=0;i{"use strict";Nfe.exports=function(t,r,n){n("newselection.mode");var i=n("newselection.line.width");i&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}});var IM=ye((Yir,Gfe)=>{"use strict";var yft=ba(),Vfe=Mr(),Hfe=af();Gfe.exports=function(t){return function(n,i){var a=n[t];if(Array.isArray(a))for(var o=yft.subplotsRegistry.cartesian,s=o.idRegex,l=i._subplots,u=l.xaxis,c=l.yaxis,f=l.cartesian,h=i._has("cartesian"),d=0;d{"use strict";var jfe=dN(),RM=_fe();Wfe.exports={moduleType:"component",name:"selections",layoutAttributes:EN(),supplyLayoutDefaults:Bfe(),supplyDrawNewSelectionDefaults:Ufe(),includeBasePlot:IM()("selections"),draw:jfe.draw,drawOne:jfe.drawOne,reselect:RM.reselect,prepSelect:RM.prepSelect,clearOutline:RM.clearOutline,clearSelectionsCache:RM.clearSelectionsCache,selectOnClick:RM.selectOnClick}});var DN=ye((Jir,hhe)=>{"use strict";var IN=xa(),C0=Mr(),Zfe=C0.numberFormat,_ft=id(),xft=kL(),bP=ba(),rhe=C0.strTranslate,bft=Pl(),Xfe=va(),v_=ao(),wft=Nc(),Yfe=Qa(),Tft=Tg(),Aft=gv(),ihe=Sg(),wP=ihe.selectingOrDrawing,Sft=ihe.freeMode,Mft=Nh().FROM_TL,Eft=lM(),kft=gM().redrawReglTraces,Cft=Xu(),CN=af().getFromId,Lft=wf().prepSelect,Pft=wf().clearOutline,Ift=wf().selectOnClick,kN=aN(),RN=ad(),Kfe=RN.MINDRAG,np=RN.MINZOOM,Jfe=!0;function Rft(e,t,r,n,i,a,o,s){var l=e._fullLayout._zoomlayer,u=o+s==="nsew",c=(o+s).length===1,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H,X,G;r+=t.yaxis._shift;function N(){if(f=t.xaxis,h=t.yaxis,k=f._length,A=h._length,p=f._offset,E=h._offset,d={},d[f._id]=f,v={},v[h._id]=h,o&&s)for(var Et=t.overlays,dt=0;dt=0){Ht._fullLayout._deactivateShape(Ht);return}var $t=Ht._fullLayout.clickmode;if(PN(Ht),Et===2&&!c&&er(),u)$t.indexOf("select")>-1&&Ift(dt,Ht,x,b,t.id,ae),$t.indexOf("event")>-1&&wft.click(Ht,dt,t.id);else if(Et===1&&c){var fr=o?h:f,_r=o==="s"||s==="w"?0:1,Br=fr._name+".range["+_r+"]",Or=Dft(fr,_r),Nr="left",ut="middle";if(fr.fixedrange)return;o?(ut=o==="n"?"top":"bottom",fr.side==="right"&&(Nr="right")):s==="e"&&(Nr="right"),Ht._context.showAxisRangeEntryBoxes&&IN.select(re).call(bft.makeEditable,{gd:Ht,immediate:!0,background:Ht._fullLayout.paper_bgcolor,text:String(Or),fill:fr.tickfont?fr.tickfont.color:"#444",horizontalAlign:Nr,verticalAlign:ut}).on("edit",function(Ne){var Ye=fr.d2r(Ne);Ye!==void 0&&bP.call("_guiRelayout",Ht,Br,Ye)})}}Aft.init(ae);var ke,ge,ie,Te,Ee,Ae,ze,Ce,me,Re;function ce(Et,dt,Ht){var $t=re.getBoundingClientRect();ke=dt-$t.left,ge=Ht-$t.top,e._fullLayout._calcInverseTransform(e);var fr=C0.apply3DTransform(e._fullLayout._invTransform)(ke,ge);ke=fr[0],ge=fr[1],ie={l:ke,r:ke,w:0,t:ge,b:ge,h:0},Te=e._hmpixcount?e._hmlumcount/e._hmpixcount:_ft(e._fullLayout.plot_bgcolor).getLuminance(),Ee="M0,0H"+k+"V"+A+"H0V0",Ae=!1,ze="xy",Re=!1,Ce=ohe(l,Te,p,E,Ee),me=she(l,p,E)}function Ge(Et,dt){if(e._transitioningWithDuration)return!1;var Ht=Math.max(0,Math.min(k,X*Et+ke)),$t=Math.max(0,Math.min(A,G*dt+ge)),fr=Math.abs(Ht-ke),_r=Math.abs($t-ge);ie.l=Math.min(ke,Ht),ie.r=Math.max(ke,Ht),ie.t=Math.min(ge,$t),ie.b=Math.max(ge,$t);function Br(){ze="",ie.r=ie.l,ie.t=ie.b,me.attr("d","M0,0Z")}if(L.isSubplotConstrained)fr>np||_r>np?(ze="xy",fr/k>_r/A?(_r=fr*A/k,ge>$t?ie.t=ge-_r:ie.b=ge+_r):(fr=_r*k/A,ke>Ht?ie.l=ke-fr:ie.r=ke+fr),me.attr("d",TP(ie))):Br();else if(_.isSubplotConstrained)if(fr>np||_r>np){ze="xy";var Or=Math.min(ie.l/k,(A-ie.b)/A),Nr=Math.max(ie.r/k,(A-ie.t)/A);ie.l=Or*k,ie.r=Nr*k,ie.b=(1-Or)*A,ie.t=(1-Nr)*A,me.attr("d",TP(ie))}else Br();else!M||_r0){var Ne;if(_.isSubplotConstrained||!C&&M.length===1){for(Ne=0;Ne1&&(Br.maxallowed!==void 0&&P===(Br.range[0]1&&(Or.maxallowed!==void 0&&T===(Or.range[0]=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function Fft(e,t,r){return e?e==="nsew"?r?"":t==="pan"?"move":"crosshair":e.toLowerCase()+"-resize":"pointer"}function ohe(e,t,r,n,i){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",rhe(r,n)).attr("d",i+"Z")}function she(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:Xfe.background,stroke:Xfe.defaultLine,"stroke-width":1,opacity:0}).attr("transform",rhe(t,r)).attr("d","M0,0Z")}function lhe(e,t,r,n,i,a){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),uhe(e,t,i,a)}function uhe(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function PN(e){IN.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function che(e){Jfe&&e.data&&e._context.showTips&&(C0.notifier(C0._(e,"Double-click to zoom back out"),"long"),Jfe=!1)}function qft(e,t){return"M"+(e.l-.5)+","+(t-np-.5)+"h-3v"+(2*np+1)+"h3ZM"+(e.r+.5)+","+(t-np-.5)+"h3v"+(2*np+1)+"h-3Z"}function Oft(e,t){return"M"+(t-np-.5)+","+(e.t-.5)+"v-3h"+(2*np+1)+"v3ZM"+(t-np-.5)+","+(e.b+.5)+"v3h"+(2*np+1)+"v-3Z"}function TP(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,np)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function ehe(e,t,r,n,i){for(var a=!1,o={},s={},l,u,c,f,h=(i||{}).xaHash,d=(i||{}).yaHash,v=0;v{"use strict";var Bft=xa(),AP=Nc(),Nft=gv(),Uft=Tg(),kg=DN().makeDragBox,ud=ad().DRAGGERSIZE;SP.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot){Bft.select(t).selectAll(".drag").remove();return}if(!(!r._has("cartesian")&&!r._has("splom"))){var n=Object.keys(r._plots||{}).sort(function(a,o){if((r._plots[a].mainplot&&!0)===(r._plots[o].mainplot&&!0)){var s=a.split("y"),l=o.split("y");return s[0]===l[0]?Number(s[1]||1)-Number(l[1]||1):Number(s[0]||1)-Number(l[0]||1)}return r._plots[a].mainplot?1:-1});n.forEach(function(a){var o=r._plots[a],s=o.xaxis,l=o.yaxis;if(!o.mainplot){var u=kg(t,o,s._offset,l._offset,s._length,l._length,"ns","ew");u.onmousemove=function(h){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===a&&t._fullLayout._plots[a]&&AP.hover(t,h,a)},AP.hover(t,h,a),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=a},u.onmouseout=function(h){t._dragging||(t._fullLayout._hoversubplot=null,Nft.unhover(t,h))},t._context.showAxisDragHandles&&(kg(t,o,s._offset-ud,l._offset-ud,ud,ud,"n","w"),kg(t,o,s._offset+s._length,l._offset-ud,ud,ud,"n","e"),kg(t,o,s._offset-ud,l._offset+l._length,ud,ud,"s","w"),kg(t,o,s._offset+s._length,l._offset+l._length,ud,ud,"s","e"))}if(t._context.showAxisDragHandles){if(a===s._mainSubplot){var c=s._mainLinePosition;s.side==="top"&&(c-=ud),kg(t,o,s._offset+s._length*.1,c,s._length*.8,ud,"","ew"),kg(t,o,s._offset,c,s._length*.1,ud,"","w"),kg(t,o,s._offset+s._length*.9,c,s._length*.1,ud,"","e")}if(a===l._mainSubplot){var f=l._mainLinePosition;l.side!=="right"&&(f-=ud),kg(t,o,f,l._offset+l._length*.1,ud,l._length*.8,"ns",""),kg(t,o,f,l._offset+l._length*.9,ud,l._length*.1,"s",""),kg(t,o,f,l._offset,ud,l._length*.1,"n","")}}});var i=r._hoverlayer.node();i.onmousemove=function(a){a.target=t._fullLayout._lasthover,AP.hover(t,a,r._hoversubplot)},i.onclick=function(a){a.target=t._fullLayout._lasthover,AP.click(t,a)},i.onmousedown=function(a){t._fullLayout._lasthover.onmousedown(a)},SP.updateFx(t)}};SP.updateFx=function(e){var t=e._fullLayout,r=t.dragmode==="pan"?"move":"crosshair";Uft(t._draggers,r)}});var phe=ye((Qir,vhe)=>{"use strict";var dhe=ba();vhe.exports=function(t){for(var r=dhe.layoutArrayContainers,n=dhe.layoutArrayRegexes,i=t.split("[")[0],a,o,s=0;s{"use strict";var Vft=gy(),FN=g6(),DM=G1(),Hft=k6().sorterAsc,qN=ba();zM.containerArrayMatch=phe();var Gft=zM.isAddVal=function(t){return t==="add"||Vft(t)},ghe=zM.isRemoveVal=function(t){return t===null||t==="remove"};zM.applyContainerArrayChanges=function(t,r,n,i,a){var o=r.astr,s=qN.getComponentMethod(o,"supplyLayoutDefaults"),l=qN.getComponentMethod(o,"draw"),u=qN.getComponentMethod(o,"drawOne"),c=i.replot||i.recalc||s===FN||l===FN,f=t.layout,h=t._fullLayout;if(n[""]){Object.keys(n).length>1&&DM.warn("Full array edits are incompatible with other edits",o);var d=n[""][""];if(ghe(d))r.set(null);else if(Array.isArray(d))r.set(d);else return DM.warn("Unrecognized full array edit value",o,d),!0;return c?!1:(s(f,h),l(t),!0)}var v=Object.keys(n).map(Number).sort(Hft),x=r.get(),b=x||[],p=a(h,o).get(),E=[],k=-1,A=b.length,L,_,C,M,g,P,T,F;for(L=0;Lb.length-(T?0:1)){DM.warn("index out of range",o,C);continue}if(P!==void 0)g.length>1&&DM.warn("Insertion & removal are incompatible with edits to the same index.",o,C),ghe(P)?E.push(C):T?(P==="add"&&(P={}),b.splice(C,0,P),p&&p.splice(C,0,{})):DM.warn("Unrecognized full object edit value",o,C,P),k===-1&&(k=C);else for(_=0;_=0;L--)b.splice(E[L],1),p&&p.splice(E[L],1);if(b.length?x||r.set(b):r.set(null),c)return!1;if(s(f,h),u!==FN){var q;if(k===-1)q=v;else{for(A=Math.max(b.length,A),q=[],L=0;L=k));L++)q.push(C);for(L=k;L{"use strict";var bhe=uo(),tnr=Lq(),whe=ba(),kp=Mr(),FM=Xu(),The=af(),Ahe=va(),qM=The.cleanId,jft=The.getFromTrace,ON=whe.traceIs;Cg.clearPromiseQueue=function(e){Array.isArray(e._promises)&&e._promises.length>0&&kp.log("Clearing previous rejected promises from queue."),e._promises=[]};Cg.cleanLayout=function(e){var t,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var n=(FM.subplotsRegistry.cartesian||{}).attrRegex,i=(FM.subplotsRegistry.polar||{}).attrRegex,a=(FM.subplotsRegistry.ternary||{}).attrRegex,o=(FM.subplotsRegistry.gl3d||{}).attrRegex,s=Object.keys(e);for(t=0;t3?(b.x=1.02,b.xanchor="left"):b.x<-2&&(b.x=-.02,b.xanchor="right"),b.y>3?(b.y=1.02,b.yanchor="bottom"):b.y<-2&&(b.y=-.02,b.yanchor="top")),e.dragmode==="rotate"&&(e.dragmode="orbit"),Ahe.clean(e),e.template&&e.template.layout&&Cg.cleanLayout(e.template.layout),e};function Y3(e,t){var r=e[t],n=t.charAt(0);r&&r!=="paper"&&(e[t]=qM(r,n,!0))}Cg.cleanData=function(e){for(var t=0;t0)return e.substr(0,t)}Cg.hasParent=function(e,t){for(var r=xhe(t);r;){if(r in e)return!0;r=xhe(r)}return!1};var Xft=["x","y","z"];Cg.clearAxisTypes=function(e,t,r){for(var n=0;n{"use strict";var CP=xa(),Yft=uo(),Kft=$q(),sa=Mr(),Yu=sa.nestedProperty,UN=g3(),ap=lne(),L0=ba(),FP=_3(),Ho=Xu(),Nv=Qa(),Jft=dB(),$ft=Cd(),BN=ao(),Qft=va(),eht=zN().initInteractions,tht=Zp(),rht=wf().clearOutline,Lhe=ub().dfltConfig,EP=mhe(),yh=She(),$l=gM(),p_=Bu(),iht=ad().AX_NAME_PATTERN,NN=0,Mhe=5;function nht(e,t,r,n){var i;if(e=sa.getGraphDiv(e),UN.init(e),sa.isPlainObject(t)){var a=t;t=a.data,r=a.layout,n=a.config,i=a.frames}var o=UN.triggerHandler(e,"plotly_beforeplot",[t,r,n]);if(o===!1)return Promise.reject();!t&&!r&&!sa.isPlotDiv(e)&&sa.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",e);function s(){if(i)return pl.addFrames(e,i)}Ihe(e,n),r||(r={}),CP.select(e).classed("js-plotly-plot",!0),BN.makeTester(),Array.isArray(e._promises)||(e._promises=[]);var l=(e.data||[]).length===0&&Array.isArray(t);Array.isArray(t)&&(yh.cleanData(t),l?e.data=t:e.data.push.apply(e.data,t),e.empty=!1),(!e.layout||l)&&(e.layout=yh.cleanLayout(r)),Ho.supplyDefaults(e);var u=e._fullLayout,c=u._has("cartesian");u._replotting=!0,(l||u._shouldCreateBgLayer)&&(Eht(e),u._shouldCreateBgLayer&&delete u._shouldCreateBgLayer),BN.initGradients(e),BN.initPatterns(e),l&&Nv.saveShowSpikeInitial(e);var f=!e.calcdata||e.calcdata.length!==(e._fullData||[]).length;f&&Ho.doCalcdata(e);for(var h=0;h=e.data.length||i<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(i,n+1)>-1||i>=0&&t.indexOf(-e.data.length+i)>-1||i<0&&t.indexOf(e.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function Rhe(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),PP(e,t,"currentIndices"),typeof r!="undefined"&&!Array.isArray(r)&&(r=[r]),typeof r!="undefined"&&PP(e,r,"newIndices"),typeof r!="undefined"&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function uht(e,t,r){var n,i;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&c=0&&c0&&typeof M.parts[T]!="string";)T--;var F=M.parts[T],q=M.parts[T-1]+"."+F,V=M.parts.slice(0,T).join("."),H=Yu(e.layout,V).get(),X=Yu(n,V).get(),G=M.get();if(g!==void 0){p[C]=g,E[C]=F==="reverse"?g:Cy(G);var N=FP.getLayoutValObject(n,M.parts);if(N&&N.impliedEdits&&g!==null)for(var W in N.impliedEdits)k(sa.relativeAttr(C,W),N.impliedEdits[W]);if(["width","height"].indexOf(C)!==-1)if(g){k("autosize",null);var re=C==="height"?"width":"height";k(re,n[re])}else n[C]=e._initialAutoSize[C];else if(C==="autosize")k("width",g?null:n.width),k("height",g?null:n.height);else if(q.match(Vhe))_(q),Yu(n,V+"._inputRange").set(null);else if(q.match(Hhe)){_(q),Yu(n,V+"._inputRange").set(null);var ae=Yu(n,V).get();ae._inputDomain&&(ae._input.domain=ae._inputDomain.slice())}else q.match(dht)&&Yu(n,V+"._inputDomain").set(null);if(F==="type"){L=H;var _e=X.type==="linear"&&g==="log",Me=X.type==="log"&&g==="linear";if(_e||Me){if(!L||!L.range)k(V+".autorange",!0);else if(X.autorange)_e&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var ke=L.range[0],ge=L.range[1];_e?(ke<=0&&ge<=0&&k(V+".autorange",!0),ke<=0?ke=ge/1e6:ge<=0&&(ge=ke/1e6),k(V+".range[0]",Math.log(ke)/Math.LN10),k(V+".range[1]",Math.log(ge)/Math.LN10)):(k(V+".range[0]",Math.pow(10,ke)),k(V+".range[1]",Math.pow(10,ge)))}Array.isArray(n._subplots.polar)&&n._subplots.polar.length&&n[M.parts[0]]&&M.parts[1]==="radialaxis"&&delete n[M.parts[0]]._subplot.viewInitial["radialaxis.range"],L0.getComponentMethod("annotations","convertCoords")(e,X,g,k),L0.getComponentMethod("images","convertCoords")(e,X,g,k)}else k(V+".autorange",!0),k(V+".range",null);Yu(n,V+"._inputRange").set(null)}else if(F.match(iht)){var ie=Yu(n,C).get(),Te=(g||{}).type;(!Te||Te==="-")&&(Te="linear"),L0.getComponentMethod("annotations","convertCoords")(e,ie,Te,k),L0.getComponentMethod("images","convertCoords")(e,ie,Te,k)}var Ee=EP.containerArrayMatch(C);if(Ee){c=Ee.array,f=Ee.index;var Ae=Ee.property,ze=N||{editType:"calc"};f!==""&&Ae===""&&(EP.isAddVal(g)?E[C]=null:EP.isRemoveVal(g)?E[C]=(Yu(r,c).get()||[])[f]:sa.warn("unrecognized full object value",t)),p_.update(b,ze),u[c]||(u[c]={});var Ce=u[c][f];Ce||(Ce=u[c][f]={}),Ce[Ae]=g,delete t[C]}else F==="reverse"?(H.range?H.range.reverse():(k(V+".autorange",!0),H.range=[1,0]),X.autorange?b.calc=!0:b.plot=!0):(C==="dragmode"&&(g===!1&&G!==!1||g!==!1&&G===!1)||n._has("scatter-like")&&n._has("regl")&&C==="dragmode"&&(g==="lasso"||g==="select")&&!(G==="lasso"||G==="select")?b.plot=!0:N?p_.update(b,N):b.calc=!0,M.set(g))}}for(c in u){var me=EP.applyContainerArrayChanges(e,a(r,c),u[c],b,a);me||(b.plot=!0)}for(var Re in A){L=Nv.getFromId(e,Re);var ce=L&&L._constraintGroup;if(ce){b.calc=!0;for(var Ge in ce)A[Ge]||(Nv.getFromId(e,Ge)._constraintShrinkable=!0)}}(jhe(e)||t.height||t.width)&&(b.plot=!0);var nt=n.shapes;for(f=0;f1;)if(n.pop(),r=Yu(t,n.join(".")+".uirevision").get(),r!==void 0)return r;return t.uirevision}function ght(e,t){for(var r=0;r=i.length?i[0]:i[u]:i}function s(u){return Array.isArray(a)?u>=a.length?a[0]:a[u]:a}function l(u,c){var f=0;return function(){if(u&&++f===c)return u()}}return new Promise(function(u,c){function f(){if(n._frameQueue.length!==0){for(;n._frameQueue.length;){var F=n._frameQueue.pop();F.onInterrupt&&F.onInterrupt()}e.emit("plotly_animationinterrupted",[])}}function h(F){if(F.length!==0){for(var q=0;qn._timeToNext&&v()};F()}var b=0;function p(F){return Array.isArray(i)?b>=i.length?F.transitionOpts=i[b]:F.transitionOpts=i[0]:F.transitionOpts=i,b++,F}var E,k,A=[],L=t==null,_=Array.isArray(t),C=!L&&!_&&sa.isPlainObject(t);if(C)A.push({type:"object",data:p(sa.extendFlat({},t))});else if(L||["string","number"].indexOf(typeof t)!==-1)for(E=0;E0&&PP)&&T.push(k);A=T}}A.length>0?h(A):(e.emit("plotly_animated"),u())})}function Tht(e,t,r){if(e=sa.getGraphDiv(e),t==null)return Promise.resolve();if(!sa.isPlotDiv(e))throw new Error("This element is not a Plotly plot: "+e+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,i,a,o,s=e._transitionData._frames,l=e._transitionData._frameHash;if(!Array.isArray(t))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+t);var u=s.length+t.length*2,c=[],f={};for(n=t.length-1;n>=0;n--)if(sa.isPlainObject(t[n])){var h=t[n].name,d=(l[h]||f[h]||{}).name,v=t[n].name,x=l[d]||f[d];d&&v&&typeof v=="number"&&x&&NNM.index?-1:C.index=0;n--){if(i=c[n].frame,typeof i.name=="number"&&sa.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;l[i.name="frame "+e._transitionData._counter++];);if(l[i.name]){for(a=0;a=0;r--)n=t[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var s=Ho.modifyFrames,l=Ho.modifyFrames,u=[e,o],c=[e,a];return ap&&ap.add(e,s,u,l,c),Ho.modifyFrames(e,a)}function Sht(e){e=sa.getGraphDiv(e);var t=e._fullLayout||{},r=e._fullData||[];return Ho.cleanPlot([],{},r,t),Ho.purge(e),UN.purge(e),t._container&&t._container.remove(),delete e._context,e}function Mht(e){var t=e._fullLayout,r=e.getBoundingClientRect();if(!sa.equalDomRects(r,t._lastBBox)){var n=t._invTransform=sa.inverseTransformMatrix(sa.getFullTransformMatrix(e));t._invScaleX=Math.sqrt(n[0][0]*n[0][0]+n[0][1]*n[0][1]+n[0][2]*n[0][2]),t._invScaleY=Math.sqrt(n[1][0]*n[1][0]+n[1][1]*n[1][1]+n[1][2]*n[1][2]),t._lastBBox=r}}function Eht(e){var t=CP.select(e),r=e._fullLayout;if(r._calcInverseTransform=Mht,r._calcInverseTransform(e),r._container=t.selectAll(".plot-container").data([0]),r._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),r._paperdiv=r._container.selectAll(".svg-container").data([0]),r._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),r._glcontainer=r._paperdiv.selectAll(".gl-container").data([{}]),r._glcontainer.enter().append("div").classed("gl-container",!0),r._paperdiv.selectAll(".main-svg").remove(),r._paperdiv.select(".modebar-container").remove(),r._paper=r._paperdiv.insert("svg",":first-child").classed("main-svg",!0),r._toppaper=r._paperdiv.append("svg").classed("main-svg",!0),r._modebardiv=r._paperdiv.append("div"),delete r._modeBar,r._hoverpaper=r._paperdiv.append("svg").classed("main-svg",!0),!r._uid){var n={};CP.selectAll("defs").each(function(){this.id&&(n[this.id.split("-")[1]]=1)}),r._uid=sa.randstr(n)}r._paperdiv.selectAll(".main-svg").attr(tht.svgAttrs),r._defs=r._paper.append("defs").attr("id","defs-"+r._uid),r._clips=r._defs.append("g").classed("clips",!0),r._topdefs=r._toppaper.append("defs").attr("id","topdefs-"+r._uid),r._topclips=r._topdefs.append("g").classed("clips",!0),r._bgLayer=r._paper.append("g").classed("bglayer",!0),r._draggers=r._paper.append("g").classed("draglayer",!0);var i=r._paper.append("g").classed("layer-below",!0);r._imageLowerLayer=i.append("g").classed("imagelayer",!0),r._shapeLowerLayer=i.append("g").classed("shapelayer",!0),r._cartesianlayer=r._paper.append("g").classed("cartesianlayer",!0),r._polarlayer=r._paper.append("g").classed("polarlayer",!0),r._smithlayer=r._paper.append("g").classed("smithlayer",!0),r._ternarylayer=r._paper.append("g").classed("ternarylayer",!0),r._geolayer=r._paper.append("g").classed("geolayer",!0),r._funnelarealayer=r._paper.append("g").classed("funnelarealayer",!0),r._pielayer=r._paper.append("g").classed("pielayer",!0),r._iciclelayer=r._paper.append("g").classed("iciclelayer",!0),r._treemaplayer=r._paper.append("g").classed("treemaplayer",!0),r._sunburstlayer=r._paper.append("g").classed("sunburstlayer",!0),r._indicatorlayer=r._toppaper.append("g").classed("indicatorlayer",!0),r._glimages=r._paper.append("g").classed("glimages",!0);var a=r._toppaper.append("g").classed("layer-above",!0);r._imageUpperLayer=a.append("g").classed("imagelayer",!0),r._shapeUpperLayer=a.append("g").classed("shapelayer",!0),r._selectionLayer=r._toppaper.append("g").classed("selectionlayer",!0),r._infolayer=r._toppaper.append("g").classed("infolayer",!0),r._menulayer=r._toppaper.append("g").classed("menulayer",!0),r._zoomlayer=r._toppaper.append("g").classed("zoomlayer",!0),r._hoverlayer=r._hoverpaper.append("g").classed("hoverlayer",!0),r._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),e.emit("plotly_framework")}pl.animate=wht;pl.addFrames=Tht;pl.deleteFrames=Aht;pl.addTraces=Ohe;pl.deleteTraces=Bhe;pl.extendTraces=Fhe;pl.moveTraces=VN;pl.prependTraces=qhe;pl.newPlot=lht;pl._doPlot=nht;pl.purge=Sht;pl.react=_ht;pl.redraw=sht;pl.relayout=OM;pl.restyle=IP;pl.setPlotConfig=aht;pl.update=DP;pl._guiRelayout=GN(OM);pl._guiRestyle=GN(IP);pl._guiUpdate=GN(DP);pl._storeDirectGUIEdit=hht});var Ly=ye(Mm=>{"use strict";var kht=ba();Mm.getDelay=function(e){return e._has&&(e._has("gl3d")||e._has("mapbox")||e._has("map"))?500:0};Mm.getRedrawFunc=function(e){return function(){kht.getComponentMethod("colorbar","draw")(e)}};Mm.encodeSVG=function(e){return"data:image/svg+xml,"+encodeURIComponent(e)};Mm.encodeJSON=function(e){return"data:application/json,"+encodeURIComponent(e)};var Whe=window.URL||window.webkitURL;Mm.createObjectURL=function(e){return Whe.createObjectURL(e)};Mm.revokeObjectURL=function(e){return Whe.revokeObjectURL(e)};Mm.createBlob=function(e,t){if(t==="svg")return new window.Blob([e],{type:"image/svg+xml;charset=utf-8"});if(t==="full-json")return new window.Blob([e],{type:"application/json;charset=utf-8"});var r=Cht(window.atob(e));return new window.Blob([r],{type:"image/"+t})};Mm.octetStream=function(e){document.location.href="data:application/octet-stream"+e};function Cht(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),i=0;i{"use strict";var WN=xa(),anr=Mr(),Lht=ao(),Pht=va(),onr=Zp(),jN=/"/g,NM="TOBESTRIPPED",Iht=new RegExp('("'+NM+")|("+NM+'")',"g");function Rht(e){var t=WN.select("body").append("div").style({display:"none"}).html(""),r=e.replace(/(&[^;]*;)/gi,function(n){return n==="<"?"<":n==="&rt;"?">":n.indexOf("<")!==-1||n.indexOf(">")!==-1?"":t.html(n).text()});return t.remove(),r}function Dht(e){return e.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}Zhe.exports=function(t,r,n){var i=t._fullLayout,a=i._paper,o=i._toppaper,s=i.width,l=i.height,u;a.insert("rect",":first-child").call(Lht.setRect,0,0,s,l).call(Pht.fill,i.paper_bgcolor);var c=i._basePlotModules||[];for(u=0;u{"use strict";var zht=Mr(),Fht=vb().EventEmitter,UM=Ly();function qht(e){var t=e.emitter||new Fht,r=new Promise(function(n,i){var a=window.Image,o=e.svg,s=e.format||"png",l=e.canvas,u=e.scale||1,c=e.width||300,f=e.height||150,h=u*c,d=u*f,v=l.getContext("2d",{willReadFrequently:!0}),x=new a,b,p;s==="svg"||zht.isSafari()?p=UM.encodeSVG(o):(b=UM.createBlob(o,"svg"),p=UM.createObjectURL(b)),l.width=h,l.height=d,x.onload=function(){var E;switch(b=null,UM.revokeObjectURL(p),s!=="svg"&&v.drawImage(x,0,0,h,d),s){case"jpeg":E=l.toDataURL("image/jpeg");break;case"png":E=l.toDataURL("image/png");break;case"webp":E=l.toDataURL("image/webp");break;case"svg":E=p;break;default:var k="Image format is not jpeg, png, svg or webp.";if(i(new Error(k)),!e.promise)return t.emit("error",k)}n(E),e.promise||t.emit("success",E)},x.onerror=function(E){if(b=null,UM.revokeObjectURL(p),i(E),!e.promise)return t.emit("error",E)},x.src=p});return e.promise?r:t}Xhe.exports=qht});var XN=ye((unr,Jhe)=>{"use strict";var Yhe=uo(),Khe=OP(),Oht=Xu(),Em=Mr(),VM=Ly(),Bht=BP(),Nht=NP(),Uht=e6().version,ZN={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};function Vht(e,t){t=t||{};var r,n,i,a;Em.isPlainObject(e)?(r=e.data||[],n=e.layout||{},i=e.config||{},a={}):(e=Em.getGraphDiv(e),r=Em.extendDeep([],e.data),n=Em.extendDeep({},e.layout),i=e._context,a=e._fullLayout||{});function o(_){return!(_ in t)||Em.validate(t[_],ZN[_])}if(!o("width")&&t.width!==null||!o("height")&&t.height!==null)throw new Error("Height and width should be pixel values.");if(!o("format"))throw new Error("Export format is not "+Em.join2(ZN.format.values,", "," or ")+".");var s={};function l(_,C){return Em.coerce(t,s,ZN,_,C)}var u=l("format"),c=l("width"),f=l("height"),h=l("scale"),d=l("setBackground"),v=l("imageDataOnly"),x=document.createElement("div");x.style.position="absolute",x.style.left="-5000px",document.body.appendChild(x);var b=Em.extendFlat({},n);c?b.width=c:t.width===null&&Yhe(a.width)&&(b.width=a.width),f?b.height=f:t.height===null&&Yhe(a.height)&&(b.height=a.height);var p=Em.extendFlat({},i,{_exportedPlot:!0,staticPlot:!0,setBackground:d}),E=VM.getRedrawFunc(x);function k(){return new Promise(function(_){setTimeout(_,VM.getDelay(x._fullLayout))})}function A(){return new Promise(function(_,C){var M=Bht(x,u,h),g=x._fullLayout.width,P=x._fullLayout.height;function T(){Khe.purge(x),document.body.removeChild(x)}if(u==="full-json"){var F=Oht.graphJson(x,!1,"keepdata","object",!0,!0);return F.version=Uht,F=JSON.stringify(F),T(),_(v?F:VM.encodeJSON(F))}if(T(),u==="svg")return _(v?M:VM.encodeSVG(M));var q=document.createElement("canvas");q.id=Em.randstr(),Nht({format:u,width:g,height:P,scale:h,canvas:q,svg:M,promise:!0}).then(_).catch(C)})}function L(_){return v?_.replace(VM.IMAGE_URL_PREFIX,""):_}return new Promise(function(_,C){Khe.newPlot(x,r,b,p).then(E).then(k).then(A).then(function(M){_(L(M))}).catch(function(M){C(M)})})}Jhe.exports=Vht});var tde=ye((cnr,ede)=>{"use strict";var P0=Mr(),Hht=Xu(),Ght=_3(),jht=ub().dfltConfig,Lg=P0.isPlainObject,Vb=Array.isArray,$he=P0.isArrayOrTypedArray;ede.exports=function(t,r){t===void 0&&(t=[]),r===void 0&&(r={});var n=Ght.get(),i=[],a={_context:P0.extendFlat({},jht)},o,s;Vb(t)?(a.data=P0.extendDeep([],t),o=t):(a.data=[],o=[],i.push(cd("array","data"))),Lg(r)?(a.layout=P0.extendDeep({},r),s=r):(a.layout={},s={},arguments.length>1&&i.push(cd("object","layout"))),Hht.supplyDefaults(a);for(var l=a._fullData,u=o.length,c=0;cf.length&&n.push(cd("unused",i,u.concat(f.length)));var p=f.length,E=Array.isArray(b);E&&(p=Math.min(p,b.length));var k,A,L,_,C;if(h.dimensions===2)for(A=0;Af[A].length&&n.push(cd("unused",i,u.concat(A,f[A].length)));var M=f[A].length;for(k=0;k<(E?Math.min(M,b[A].length):M);k++)L=E?b[A][k]:b,_=c[A][k],C=f[A][k],P0.validate(_,L)?C!==_&&C!==+_&&n.push(cd("dynamic",i,u.concat(A,k),_,C)):n.push(cd("value",i,u.concat(A,k),_))}else n.push(cd("array",i,u.concat(A),c[A]));else for(A=0;A{"use strict";var $ht=Mr(),VP=Ly();function Qht(e,t,r){var n=document.createElement("a"),i="download"in n,a=new Promise(function(o,s){var l,u;if(i)return l=VP.createBlob(e,r),u=VP.createObjectURL(l),n.href=u,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),VP.revokeObjectURL(u),l=null,o(t);if($ht.isSafari()){var c=r==="svg"?",":";base64,";return VP.octetStream(c+encodeURIComponent(e)),o(t)}s(new Error("download error"))});return a}rde.exports=Qht});var YN=ye((dnr,ade)=>{"use strict";var nde=Mr(),edt=XN(),tdt=ide(),hnr=Ly();function rdt(e,t){var r;return nde.isPlainObject(e)||(r=nde.getGraphDiv(e)),t=t||{},t.format=t.format||"png",t.width=t.width||null,t.height=t.height||null,t.imageDataOnly=!0,new Promise(function(n,i){r&&r._snapshotInProgress&&i(new Error("Snapshotting already in progress.")),r&&(r._snapshotInProgress=!0);var a=edt(e,t),o=t.filename||e.fn||"newplot";o+="."+t.format.replace("-","."),a.then(function(s){return r&&(r._snapshotInProgress=!1),tdt(s,o,t.format)}).then(function(s){n(s)}).catch(function(s){r&&(r._snapshotInProgress=!1),i(s)})})}ade.exports=rdt});var cde=ye(KN=>{"use strict";var Cp=Mr(),Lp=Cp.isPlainObject,ode=_3(),sde=Xu(),idt=vl(),lde=Vs(),ude=ub().dfltConfig;KN.makeTemplate=function(e){e=Cp.isPlainObject(e)?e:Cp.getGraphDiv(e),e=Cp.extendDeep({_context:ude},{data:e.data,layout:e.layout}),sde.supplyDefaults(e);var t=e.data||[],r=e.layout||{};r._basePlotModules=e._fullLayout._basePlotModules,r._modules=e._fullLayout._modules;var n={data:{},layout:{}};t.forEach(function(d){var v={};HM(d,v,adt.bind(null,d));var x=Cp.coerce(d,{},idt,"type"),b=n.data[x];b||(b=n.data[x]=[]),b.push(v)}),HM(r,n.layout,ndt.bind(null,r)),delete n.layout.template;var i=r.template;if(Lp(i)){var a=i.layout,o,s,l,u,c,f;Lp(a)&&HP(a,n.layout);var h=i.data;if(Lp(h)){for(s in n.data)if(l=h[s],Array.isArray(l)){for(c=n.data[s],f=c.length,u=l.length,o=0;op?o.push({code:"unused",traceType:d,templateCount:b,dataCount:p}):p>b&&o.push({code:"reused",traceType:d,templateCount:b,dataCount:p})}}function E(k,A){for(var L in k)if(L.charAt(0)!=="_"){var _=k[L],C=I0(k,L,A);Lp(_)?(Array.isArray(k)&&_._template===!1&&_.templateitemname&&o.push({code:"missing",path:C,templateitemname:_.templateitemname}),E(_,C)):Array.isArray(_)&&odt(_)&&E(_,C)}}if(E({data:l,layout:s},""),o.length)return o.map(sdt)};function odt(e){for(var t=0;t{"use strict";var Hh=OP();Sc._doPlot=Hh._doPlot;Sc.newPlot=Hh.newPlot;Sc.restyle=Hh.restyle;Sc.relayout=Hh.relayout;Sc.redraw=Hh.redraw;Sc.update=Hh.update;Sc._guiRestyle=Hh._guiRestyle;Sc._guiRelayout=Hh._guiRelayout;Sc._guiUpdate=Hh._guiUpdate;Sc._storeDirectGUIEdit=Hh._storeDirectGUIEdit;Sc.react=Hh.react;Sc.extendTraces=Hh.extendTraces;Sc.prependTraces=Hh.prependTraces;Sc.addTraces=Hh.addTraces;Sc.deleteTraces=Hh.deleteTraces;Sc.moveTraces=Hh.moveTraces;Sc.purge=Hh.purge;Sc.addFrames=Hh.addFrames;Sc.deleteFrames=Hh.deleteFrames;Sc.animate=Hh.animate;Sc.setPlotConfig=Hh.setPlotConfig;var ldt=DS().getGraphDiv,udt=rP().eraseActiveShape;Sc.deleteActiveShape=function(e){return udt(ldt(e))};Sc.toImage=XN();Sc.validate=tde();Sc.downloadImage=YN();var fde=cde();Sc.makeTemplate=fde.makeTemplate;Sc.validateTemplate=fde.validateTemplate});var K3=ye((gnr,dde)=>{"use strict";var JN=Mr(),cdt=ba();dde.exports=function(t,r,n,i){var a=i("x"),o=i("y"),s,l=cdt.getComponentMethod("calendars","handleTraceDefaults");if(l(t,r,["x","y"],n),a){var u=JN.minRowLength(a);o?s=Math.min(u,JN.minRowLength(o)):(s=u,i("y0"),i("dy"))}else{if(!o)return 0;s=JN.minRowLength(o),i("x0"),i("dx")}return r._length=s,s}});var Pg=ye((mnr,gde)=>{"use strict";var vde=Mr().dateTick0,fdt=es(),hdt=fdt.ONEWEEK;function pde(e,t){return e%hdt===0?vde(t,1):vde(t,0)}gde.exports=function(t,r,n,i,a){if(a||(a={x:!0,y:!0}),a.x){var o=i("xperiod");o&&(i("xperiod0",pde(o,r.xcalendar)),i("xperiodalignment"))}if(a.y){var s=i("yperiod");s&&(i("yperiod0",pde(s,r.ycalendar)),i("yperiodalignment"))}}});var _de=ye((ynr,yde)=>{"use strict";var mde=["orientation","groupnorm","stackgaps"];yde.exports=function(t,r,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=r.xaxis+r.yaxis,l=a[s];l||(l=a[s]={});var u=l[o],c=!1;u?u.traces.push(r):(u=l[o]={traceIndices:[],traces:[r]},c=!0);for(var f={orientation:r.x&&!r.y?"h":"v"},h=0;h{"use strict";var xde=va(),bde=Dv().hasColorscale,wde=Uh(),ddt=lu();Tde.exports=function(t,r,n,i,a,o){var s=ddt.isBubble(t),l=(t.line||{}).color,u;if(o=o||{},l&&(n=l),a("marker.symbol"),a("marker.opacity",s?.7:1),a("marker.size"),o.noAngle||(a("marker.angle"),o.noAngleRef||a("marker.angleref"),o.noStandOff||a("marker.standoff")),a("marker.color",n),bde(t,"marker")&&wde(t,r,i,a,{prefix:"marker.",cLetter:"c"}),o.noSelect||(a("selected.marker.color"),a("unselected.marker.color"),a("selected.marker.size"),a("unselected.marker.size")),o.noLine||(l&&!Array.isArray(l)&&r.marker.color!==l?u=l:s?u=xde.background:u=xde.defaultLine,a("marker.line.color",u),bde(t,"marker.line")&&wde(t,r,i,a,{prefix:"marker.line.",cLetter:"c"}),a("marker.line.width",s?1:0)),s&&(a("marker.sizeref"),a("marker.sizemin"),a("marker.sizemode")),o.gradient){var c=a("marker.gradient.type");c!=="none"&&a("marker.gradient.color")}}});var R0=ye((xnr,Ade)=>{"use strict";var vdt=Mr().isArrayOrTypedArray,pdt=Dv().hasColorscale,gdt=Uh();Ade.exports=function(t,r,n,i,a,o){o||(o={});var s=(t.marker||{}).color;if(s&&s._inputArray&&(s=s._inputArray),a("line.color",n),pdt(t,"line"))gdt(t,r,i,a,{prefix:"line.",cLetter:"c"});else{var l=(vdt(s)?!1:s)||n;a("line.color",l)}a("line.width"),o.noDash||a("line.dash"),o.backoff&&a("line.backoff")}});var J3=ye((bnr,Sde)=>{"use strict";Sde.exports=function(t,r,n){var i=n("line.shape");i==="spline"&&n("line.smoothing")}});var D0=ye((wnr,Mde)=>{"use strict";var mdt=Mr();Mde.exports=function(e,t,r,n,i){i=i||{},n("textposition"),mdt.coerceFont(n,"textfont",i.font||r.font,i),i.noSelect||(n("selected.textfont.color"),n("unselected.textfont.color"))}});var Ig=ye((Tnr,kde)=>{"use strict";var jP=va(),Ede=Mr().isArrayOrTypedArray;function ydt(e){for(var t=jP.interpolate(e[0][1],e[1][1],.5),r=2;r{"use strict";var Cde=Mr(),_dt=ba(),xdt=Uc(),bdt=Sm(),$3=lu(),wdt=K3(),Tdt=Pg(),Adt=_de(),Sdt=$p(),Mdt=R0(),Lde=J3(),Edt=D0(),kdt=Ig(),Cdt=Mr().coercePattern;Pde.exports=function(t,r,n,i){function a(d,v){return Cde.coerce(t,r,xdt,d,v)}var o=wdt(t,r,i,a);if(o||(r.visible=!1),!!r.visible){Tdt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("zorder");var s=Adt(t,r,i,a);i.scattermode==="group"&&r.orientation===void 0&&a("orientation","v");var l=!s&&o{"use strict";var Ldt=Bb().getAxisGroup;Rde.exports=function(t,r,n,i,a){var o=r.orientation,s=r[{v:"x",h:"y"}[o]+"axis"],l=Ldt(n,s)+o,u=n._alignmentOpts||{},c=i("alignmentgroup"),f=u[l];f||(f=u[l]={});var h=f[c];h?h.traces.push(r):h=f[c]={traces:[r],alignmentIndex:Object.keys(f).length,offsetGroups:{}};var d=i("offsetgroup")||"",v=h.offsetGroups,x=v[d];r._offsetIndex=0,(a!=="group"||d)&&(x||(x=v[d]={offsetIndex:Object.keys(v).length}),r._offsetIndex=x.offsetIndex)}});var $N=ye((Mnr,Dde)=>{"use strict";var Pdt=Mr(),Idt=Hb(),Rdt=Uc();Dde.exports=function(t,r){var n,i,a,o=r.scattermode;function s(h){return Pdt.coerce(i._input,i,Rdt,h)}if(r.scattermode==="group")for(a=0;a=0;c--){var f=t[c];if(f.type==="scatter"&&f.xaxis===l.xaxis&&f.yaxis===l.yaxis){f.opacity=void 0;break}}}}}});var Fde=ye((Enr,zde)=>{"use strict";var Ddt=Mr(),zdt=V6();zde.exports=function(e,t){function r(i,a){return Ddt.coerce(e,t,zdt,i,a)}var n=t.barmode==="group";t.scattermode==="group"&&r("scattergap",n?t.bargap:.2)}});var Rg=ye((knr,Ode)=>{"use strict";var Fdt=uo(),qde=Mr(),qdt=qde.dateTime2ms,WP=qde.incrementMonth,Odt=es(),Bdt=Odt.ONEAVGMONTH;Ode.exports=function(t,r,n,i){if(r.type!=="date")return{vals:i};var a=t[n+"periodalignment"];if(!a)return{vals:i};var o=t[n+"period"],s;if(Fdt(o)){if(o=+o,o<=0)return{vals:i}}else if(typeof o=="string"&&o.charAt(0)==="M"){var l=+o.substring(1);if(l>0&&Math.round(l)===l)s=l;else return{vals:i}}for(var u=r.calendar,c=a==="start",f=a==="end",h=t[n+"period0"],d=qdt(h,u)||0,v=[],x=[],b=[],p=i.length,E=0;Ek;)_=WP(_,-s,u);for(;_<=k;)_=WP(_,s,u);L=WP(_,-s,u)}else{for(A=Math.round((k-d)/o),_=d+A*o;_>k;)_-=o;for(;_<=k;)_+=o;L=_-o}v[E]=c?L:f?_:(L+_)/2,x[E]=L,b[E]=_}return{vals:v,starts:x,ends:b}}});var z0=ye((Cnr,Nde)=>{"use strict";var QN=Dv().hasColorscale,eU=zv(),Bde=lu();Nde.exports=function(t,r){Bde.hasLines(r)&&QN(r,"line")&&eU(t,r,{vals:r.line.color,containerStr:"line",cLetter:"c"}),Bde.hasMarkers(r)&&(QN(r,"marker")&&eU(t,r,{vals:r.marker.color,containerStr:"marker",cLetter:"c"}),QN(r,"marker.line")&&eU(t,r,{vals:r.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}});var km=ye((Lnr,Ude)=>{"use strict";var Df=Mr();Ude.exports=function(t,r){for(var n=0;n{"use strict";var Vde=Mr();Hde.exports=function(t,r){Vde.isArrayOrTypedArray(r.selectedpoints)&&Vde.tagSelected(t,r)}});var q0=ye((Inr,Kde)=>{"use strict";var Gde=uo(),rU=Mr(),GM=Qa(),jde=Rg(),tU=es().BADNUM,iU=lu(),Ndt=z0(),Udt=km(),Vdt=F0();function Hdt(e,t){var r=e._fullLayout,n=t._xA=GM.getFromId(e,t.xaxis||"x","x"),i=t._yA=GM.getFromId(e,t.yaxis||"y","y"),a=n.makeCalcdata(t,"x"),o=i.makeCalcdata(t,"y"),s=jde(t,n,"x",a),l=jde(t,i,"y",o),u=s.vals,c=l.vals,f=t._length,h=new Array(f),d=t.ids,v=nU(t,r,n,i),x=!1,b,p,E,k,A,L;Xde(r,t);var _="x",C="y",M;if(v)rU.pushUnique(v.traceIndices,t.index),b=v.orientation==="v",b?(C="s",M="x"):(_="s",M="y"),A=v.stackgaps==="interpolate";else{var g=Zde(t,f);Wde(e,t,n,i,u,c,g)}var P=!!t.xperiodalignment,T=!!t.yperiodalignment;for(p=0;pp&&h[k].gap;)k--;for(L=h[k].s,E=h.length-1;E>k;E--)h[E].s=L;for(;p{"use strict";Jde.exports=ZP;var Gdt=Mr().distinctVals;function ZP(e,t){this.traces=e,this.sepNegVal=t.sepNegVal,this.overlapNoMerge=t.overlapNoMerge;for(var r=1/0,n=t.posAxis._id.charAt(0),i=[],a=0;a{"use strict";var O0=uo(),g_=Mr().isArrayOrTypedArray,Q3=es().BADNUM,jdt=ba(),jM=Qa(),Wdt=Bb().getAxisGroup,XP=$de();function Zdt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ul+o||!O0(s))}for(var c=0;c{"use strict";var ive=q0(),nve=Gb().setGroupPositions;function avt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ug[c]&&c{"use strict";var svt=ao(),cve=es(),WM=cve.BADNUM,fve=cve.LOG_CLIP,sve=fve+.5,lve=fve-.5,YP=Mr(),lvt=YP.segmentsIntersect,uve=YP.constrain,cU=Sm();hve.exports=function(t,r){var n=r.trace||{},i=r.xaxis,a=r.yaxis,o=i.type==="log",s=a.type==="log",l=i._length,u=a._length,c=r.backoff,f=n.marker,h=r.connectGaps,d=r.baseTolerance,v=r.shape,x=v==="linear",b=n.fill&&n.fill!=="none",p=[],E=cU.minTolerance,k=t.length,A=new Array(k),L=0,_,C,M,g,P,T,F,q,V,H,X,G,N,W,re,ae;function _e(ut){var Ne=t[ut];if(!Ne)return!1;var Ye=r.linearized?i.l2p(Ne.x):i.c2p(Ne.x),Ve=r.linearized?a.l2p(Ne.y):a.c2p(Ne.y);if(Ye===WM){if(o&&(Ye=i.c2p(Ne.x,!0)),Ye===WM)return!1;s&&Ve===WM&&(Ye*=Math.abs(i._m*u*(i._m>0?sve:lve)/(a._m*l*(a._m>0?sve:lve)))),Ye*=1e3}if(Ve===WM){if(s&&(Ve=a.c2p(Ne.y,!0)),Ve===WM)return!1;Ve*=1e3}return[Ye,Ve]}function Me(ut,Ne,Ye,Ve){var Xe=Ye-ut,ht=Ve-Ne,Le=.5-ut,xe=.5-Ne,Se=Xe*Xe+ht*ht,lt=Xe*Le+ht*xe;if(lt>0&<1||Math.abs(Le.y-Ye[0][1])>1)&&(Le=[Le.x,Le.y],Ve&&Te(Le,ut)ze||ut[1]me)return[uve(ut[0],Ae,ze),uve(ut[1],Ce,me)]}function kt(ut,Ne){if(ut[0]===Ne[0]&&(ut[0]===Ae||ut[0]===ze)||ut[1]===Ne[1]&&(ut[1]===Ce||ut[1]===me))return!0}function Ct(ut,Ne){var Ye=[],Ve=Rt(ut),Xe=Rt(Ne);return Ve&&Xe&&kt(Ve,Xe)||(Ve&&Ye.push(Ve),Xe&&Ye.push(Xe)),Ye}function Yt(ut,Ne,Ye){return function(Ve,Xe){var ht=Rt(Ve),Le=Rt(Xe),xe=[];if(ht&&Le&&kt(ht,Le))return xe;ht&&xe.push(ht),Le&&xe.push(Le);var Se=2*YP.constrain((Ve[ut]+Xe[ut])/2,Ne,Ye)-((ht||Ve)[ut]+(Le||Xe)[ut]);if(Se){var lt;ht&&Le?lt=Se>0==ht[ut]>Le[ut]?ht:Le:lt=ht||Le,lt[ut]+=Se}return xe}}var xr;v==="linear"||v==="spline"?xr=ot:v==="hv"||v==="vh"?xr=Ct:v==="hvh"?xr=Yt(0,Ae,ze):v==="vhv"&&(xr=Yt(1,Ce,me));function er(ut,Ne){var Ye=Ne[0]-ut[0],Ve=(Ne[1]-ut[1])/Ye,Xe=(ut[1]*Ne[0]-Ne[1]*ut[0])/Ye;return Xe>0?[Ve>0?Ae:ze,me]:[Ve>0?ze:Ae,Ce]}function Ke(ut){var Ne=ut[0],Ye=ut[1],Ve=Ne===A[L-1][0],Xe=Ye===A[L-1][1];if(!(Ve&&Xe))if(L>1){var ht=Ne===A[L-2][0],Le=Ye===A[L-2][1];Ve&&(Ne===Ae||Ne===ze)&&ht?Le?L--:A[L-1]=ut:Xe&&(Ye===Ce||Ye===me)&&Le?ht?L--:A[L-1]=ut:A[L++]=ut}else A[L++]=ut}function xt(ut){A[L-1][0]!==ut[0]&&A[L-1][1]!==ut[1]&&Ke([nt,ct]),Ke(ut),qt=null,nt=ct=0}var bt=YP.isArrayOrTypedArray(f);function Lt(ut){if(ut&&c&&(ut.i=_,ut.d=t,ut.trace=n,ut.marker=bt?f[ut.i]:f,ut.backoff=c),ke=ut[0]/l,ge=ut[1]/u,ce=ut[0]ze?ze:0,Ge=ut[1]me?me:0,ce||Ge){if(!L)A[L++]=[ce||ut[0],Ge||ut[1]];else if(qt){var Ne=xr(qt,ut);Ne.length>1&&(xt(Ne[0]),A[L++]=Ne[1])}else rt=xr(A[L-1],ut)[0],A[L++]=rt;var Ye=A[L-1];ce&&Ge&&(Ye[0]!==ce||Ye[1]!==Ge)?(qt&&(nt!==ce&&ct!==Ge?Ke(nt&&ct?er(qt,ut):[nt||ce,ct||Ge]):nt&&ct&&Ke([nt,ct])),Ke([ce,Ge])):nt-ce&&ct-Ge&&Ke([ce||nt,Ge||ct]),qt=ut,nt=ce,ct=Ge}else qt&&xt(xr(qt,ut)[0]),A[L++]=ut}for(_=0;_ie(T,St))break;M=T,N=V[0]*q[0]+V[1]*q[1],N>X?(X=N,g=T,F=!1):N=t.length||!T)break;Lt(T),C=T}}qt&&Ke([nt||qt[0],ct||qt[1]]),p.push(A.slice(0,L))}var Et=v.slice(v.length-1);if(c&&Et!=="h"&&Et!=="v"){for(var dt=!1,Ht=-1,$t=[],fr=0;fr{"use strict";var dve={tonextx:1,tonexty:1,tonext:1};vve.exports=function(t,r,n){var i,a,o,s,l,u={},c=!1,f=-1,h=0,d=-1;for(a=0;a=0?l=d:(l=d=h,h++),l{"use strict";var Dg=xa(),uvt=ba(),ZM=Mr(),tT=ZM.ensureSingle,gve=ZM.identity,zf=ao(),rT=lu(),cvt=fU(),fvt=hU(),KP=wM().tester;mve.exports=function(t,r,n,i,a,o){var s,l,u=!a,c=!!a&&a.duration>0,f=fvt(t,r,n);if(s=i.selectAll("g.trace").data(f,function(d){return d[0].trace.uid}),s.enter().append("g").attr("class",function(d){return"trace scatter trace"+d[0].trace.uid}).style("stroke-miterlimit",2),s.order(),hvt(t,s,r),c){o&&(l=o());var h=Dg.transition().duration(a.duration).ease(a.easing).each("end",function(){l&&l()}).each("interrupt",function(){l&&l()});h.each(function(){i.selectAll("g.trace").each(function(d,v){pve(t,v,r,d,f,this,a)})})}else s.each(function(d,v){pve(t,v,r,d,f,this,a)});u&&s.exit().remove(),i.selectAll("path:not([d])").remove()};function hvt(e,t,r){t.each(function(n){var i=tT(Dg.select(this),"g","fills");zf.setClipUrl(i,r.layerClipId,e);var a=n[0].trace,o=[];a._ownfill&&o.push("_ownFill"),a._nexttrace&&o.push("_nextFill");var s=i.selectAll("g").data(o,gve);s.enter().append("g"),s.exit().each(function(l){a[l]=null}).remove(),s.order().each(function(l){a[l]=tT(Dg.select(this),"path","js-fill")})})}function pve(e,t,r,n,i,a,o){var s=e._context.staticPlot,l;dvt(e,t,r,n,i);var u=!!o&&o.duration>0;function c(Yt){return u?Yt.transition():Yt}var f=r.xaxis,h=r.yaxis,d=n[0].trace,v=d.line,x=Dg.select(a),b=tT(x,"g","errorbars"),p=tT(x,"g","lines"),E=tT(x,"g","points"),k=tT(x,"g","text");if(uvt.getComponentMethod("errorbars","plot")(e,b,r,o),d.visible!==!0)return;c(x).style("opacity",d.opacity);var A,L,_=d.fill.charAt(d.fill.length-1);_!=="x"&&_!=="y"&&(_="");var C,M;_==="y"?(C=1,M=h.c2p(0,!0)):_==="x"&&(C=0,M=f.c2p(0,!0)),n[0][r.isRangePlot?"nodeRangePlot3":"node3"]=x;var g="",P=[],T=d._prevtrace,F=null,q=null;T&&(g=T._prevRevpath||"",L=T._nextFill,P=T._ownPolygons,F=T._fillsegments,q=T._fillElement);var V,H,X="",G="",N,W,re,ae,_e,Me,ke=[];d._polygons=[];var ge=[],ie=[],Te=ZM.noop;if(A=d._ownFill,rT.hasLines(d)||d.fill!=="none"){L&&L.datum(n),["hv","vh","hvh","vhv"].indexOf(v.shape)!==-1?(N=zf.steps(v.shape),W=zf.steps(v.shape.split("").reverse().join(""))):v.shape==="spline"?N=W=function(Yt){var xr=Yt[Yt.length-1];return Yt.length>1&&Yt[0][0]===xr[0]&&Yt[0][1]===xr[1]?zf.smoothclosed(Yt.slice(1),v.smoothing):zf.smoothopen(Yt,v.smoothing)}:N=W=function(Yt){return"M"+Yt.join("L")},re=function(Yt){return W(Yt.reverse())},ie=cvt(n,{xaxis:f,yaxis:h,trace:d,connectGaps:d.connectgaps,baseTolerance:Math.max(v.width||1,3)/4,shape:v.shape,backoff:v.backoff,simplify:v.simplify,fill:d.fill}),ge=new Array(ie.length);var Ee=0;for(l=0;l=s[0]&&x.x<=s[1]&&x.y>=l[0]&&x.y<=l[1]}),h=Math.ceil(f.length/c),d=0;i.forEach(function(x,b){var p=x[0].trace;rT.hasMarkers(p)&&p.marker.maxdisplayed>0&&b{"use strict";yve.exports={container:"marker",min:"cmin",max:"cmax"}});var $P=ye((Nnr,_ve)=>{"use strict";var JP=Qa();_ve.exports=function(t,r,n){var i={},a={_fullLayout:n},o=JP.getFromTrace(a,r,"x"),s=JP.getFromTrace(a,r,"y"),l=t.orig_x;l===void 0&&(l=t.x);var u=t.orig_y;return u===void 0&&(u=t.y),i.xLabel=JP.tickText(o,o.c2l(l),!0).text,i.yLabel=JP.tickText(s,s.c2l(u),!0).text,i}});var op=ye((Unr,xve)=>{"use strict";var dU=xa(),nT=ao(),vvt=ba();function pvt(e){var t=dU.select(e).selectAll("g.trace.scatter");t.style("opacity",function(r){return r[0].trace.opacity}),t.selectAll("g.points").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;vU(n,i,e)}),t.selectAll("g.text").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;pU(n,i,e)}),t.selectAll("g.trace path.js-line").call(nT.lineGroupStyle),t.selectAll("g.trace path.js-fill").call(nT.fillGroupStyle,e,!1),vvt.getComponentMethod("errorbars","style")(t)}function vU(e,t,r){nT.pointStyle(e.selectAll("path.point"),t,r)}function pU(e,t,r){nT.textPointStyle(e.selectAll("text"),t,r)}function gvt(e,t,r){var n=t[0].trace;n.selectedpoints?(nT.selectedPointStyle(r.selectAll("path.point"),n),nT.selectedTextStyle(r.selectAll("text"),n)):(vU(r,n,e),pU(r,n,e))}xve.exports={style:pvt,stylePoints:vU,styleText:pU,styleOnSelect:gvt}});var oT=ye((Vnr,bve)=>{"use strict";var aT=va(),mvt=lu();bve.exports=function(t,r){var n,i;if(t.mode==="lines")return n=t.line.color,n&&aT.opacity(n)?n:t.fillcolor;if(t.mode==="none")return t.fill?t.fillcolor:"";var a=r.mcc||(t.marker||{}).color,o=r.mlcc||((t.marker||{}).line||{}).color;return i=a&&aT.opacity(a)?a:o&&aT.opacity(o)&&(r.mlw||((t.marker||{}).line||{}).width)?o:"",i?aT.opacity(i)<.3?aT.addOpacity(i,.3):i:(n=(t.line||{}).color,n&&aT.opacity(n)&&mvt.hasLines(t)&&t.line.width?n:t.fillcolor)}});var sT=ye((Hnr,Tve)=>{"use strict";var QP=Mr(),wve=Nc(),yvt=ba(),_vt=oT(),gU=va(),xvt=QP.fillText;Tve.exports=function(t,r,n,i){var a=t.cd,o=a[0].trace,s=t.xa,l=t.ya,u=s.c2p(r),c=l.c2p(n),f=[u,c],h=o.hoveron||"",d=o.mode.indexOf("markers")!==-1?3:.5,v=!!o.xperiodalignment,x=!!o.yperiodalignment;if(h.indexOf("points")!==-1){var b=function(G){if(v){var N=s.c2p(G.xStart),W=s.c2p(G.xEnd);return u>=Math.min(N,W)&&u<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(s.c2p(G.x)-u);return _e=Math.min(N,W)&&c<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(l.c2p(G.y)-c);return _eke!=me>=ke&&(Ae=Te[ie-1][0],ze=Te[ie][0],me-Ce&&(Ee=Ae+(ze-Ae)*(ke-Ce)/(me-Ce),re=Math.min(re,Ee),ae=Math.max(ae,Ee)));return re=Math.max(re,0),ae=Math.min(ae,s._length),{x0:re,x1:ae,y0:ke,y1:ke}}if(h.indexOf("fills")!==-1&&o._fillElement){var V=F(o._fillElement)&&!F(o._fillExclusionElement);if(V){var H=q(o._polygons);H===null&&(H={x0:f[0],x1:f[0],y0:f[1],y1:f[1]});var X=gU.defaultLine;return gU.opacity(o.fillcolor)?X=o.fillcolor:gU.opacity((o.line||{}).color)&&(X=o.line.color),QP.extendFlat(t,{distance:t.maxHoverDistance,x0:H.x0,x1:H.x1,y0:H.y0,y1:H.y1,color:X,hovertemplate:!1}),delete t.index,o.text&&!QP.isArrayOrTypedArray(o.text)?t.text=String(o.text):t.text=o.name,[t]}}}});var lT=ye((Gnr,Sve)=>{"use strict";var Ave=lu();Sve.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h=!Ave.hasMarkers(s)&&!Ave.hasText(s);if(h)return[];if(r===!1)for(l=0;l{"use strict";Mve.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}});var yU=ye((Wnr,Lve)=>{"use strict";var XM=ba().traceIs,mU=L3();Lve.exports=function(t,r,n,i){n("autotypenumbers",i.autotypenumbersDflt);var a=n("type",(i.splomStash||{}).type);a==="-"&&(bvt(r,i.data),r.type==="-"?r.type="linear":t.type=r.type)};function bvt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i;r.indexOf("scene")!==-1&&(r=n);var a=wvt(t,r,n);if(a){if(a.type==="histogram"&&n==={v:"y",h:"x"}[a.orientation||"v"]){e.type="linear";return}var o=n+"calendar",s=a[o],l={noMultiCategory:!XM(a,"cartesian")||XM(a,"noMultiCategory")};if(a.type==="box"&&a._hasPreCompStats&&n==={h:"x",v:"y"}[a.orientation||"v"]&&(l.noMultiCategory=!0),l.autotypenumbers=e.autotypenumbers,Cve(a,n)){var u=kve(a),c=[];for(i=0;i0&&(i["_"+r+"axes"]||{})[t])return i;if((i[r+"axis"]||r)===t){if(Cve(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}function kve(e){return{v:"x",h:"y"}[e.orientation||"v"]}function Cve(e,t){var r=kve(e),n=XM(e,"box-violin"),i=XM(e._fullInput||{},"candlestick");return n&&!i&&t===r&&e[r]===void 0&&e[r+"0"]===void 0}});var eI=ye((Znr,Pve)=>{"use strict";var Tvt=vv().isTypedArraySpec;function Avt(e,t){var r=t.dataAttr||e._id.charAt(0),n={},i,a,o;if(t.axData)i=t.axData;else for(i=[],a=0;a0||Tvt(a),s;o&&(s="array");var l=n("categoryorder",s),u;l==="array"&&(u=n("categoryarray")),!o&&l==="array"&&(l=r.categoryorder="trace"),l==="trace"?r._initialCategories=[]:l==="array"?r._initialCategories=u.slice():(u=Avt(r,i).sort(),l==="category ascending"?r._initialCategories=u:l==="category descending"&&(r._initialCategories=u.reverse()))}}});var YM=ye((Xnr,Rve)=>{"use strict";var Ive=id().mix,Svt=dh(),Mvt=Mr();Rve.exports=function(t,r,n,i){i=i||{};var a=i.dfltColor;function o(C,M){return Mvt.coerce2(t,r,i.attributes,C,M)}var s=o("linecolor",a),l=o("linewidth"),u=n("showline",i.showLine||!!s||!!l);u||(delete r.linecolor,delete r.linewidth);var c=Ive(a,i.bgColor,i.blend||Svt.lightFraction).toRgbString(),f=o("gridcolor",c),h=o("gridwidth"),d=o("griddash"),v=n("showgrid",i.showGrid||!!f||!!h||!!d);if(v||(delete r.gridcolor,delete r.gridwidth,delete r.griddash),i.hasMinor){var x=Ive(r.gridcolor,i.bgColor,67).toRgbString(),b=o("minor.gridcolor",x),p=o("minor.gridwidth",r.gridwidth||1),E=o("minor.griddash",r.griddash||"solid"),k=n("minor.showgrid",!!b||!!p||!!E);k||(delete r.minor.gridcolor,delete r.minor.gridwidth,delete r.minor.griddash)}if(!i.noZeroLine){var A=o("zerolinecolor",a),L=o("zerolinewidth"),_=n("zeroline",i.showGrid||!!A||!!L);_||(delete r.zerolinecolor,delete r.zerolinewidth)}}});var JM=ye((Ynr,Bve)=>{"use strict";var Dve=uo(),Evt=ba(),KM=Mr(),kvt=Vs(),Cvt=Zd(),_U=Cd(),zve=xb(),Fve=T3(),Lvt=t_(),Pvt=r_(),Ivt=eI(),Rvt=YM(),Dvt=dB(),qve=ym(),tI=ad().WEEKDAY_PATTERN,zvt=ad().HOUR_PATTERN;Bve.exports=function(t,r,n,i,a){var o=i.letter,s=i.font||{},l=i.splomStash||{},u=n("visible",!i.visibleDflt),c=r._template||{},f=r.type||c.type||"-",h;if(f==="date"){var d=Evt.getComponentMethod("calendars","handleDefaults");d(t,r,"calendar",i.calendar),i.noTicklabelmode||(h=n("ticklabelmode"))}!i.noTicklabelindex&&(f==="date"||f==="linear")&&n("ticklabelindex");var v="";(!i.noTicklabelposition||f==="multicategory")&&(v=KM.coerce(t,r,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:h==="period"?["outside","inside"]:o==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),i.noTicklabeloverflow||n("ticklabeloverflow",v.indexOf("inside")!==-1?"hide past domain":f==="category"||f==="multicategory"?"allow":"hide past div"),qve(r,a),Dvt(t,r,n,i),Ivt(t,r,n,i),f!=="category"&&!i.noHover&&n("hoverformat");var x=n("color"),b=x!==_U.color.dflt?x:s.color,p=l.label||a._dfltTitle[o];if(Pvt(t,r,n,f,i),!u)return r;n("title.text",p),KM.coerceFont(n,"title.font",s,{overrideDflt:{size:KM.bigFont(s.size),color:b}}),zve(t,r,n,f);var E=i.hasMinor;if(E&&(kvt.newContainer(r,"minor"),zve(t,r,n,f,{isMinor:!0})),Lvt(t,r,n,f,i),Fve(t,r,n,i),E){var k=i.isMinor;i.isMinor=!0,Fve(t,r,n,i),i.isMinor=k}Rvt(t,r,n,{dfltColor:x,bgColor:i.bgColor,showGrid:i.showGrid,hasMinor:E,attributes:_U}),E&&!r.minor.ticks&&!r.minor.showgrid&&delete r.minor,(r.showline||r.ticks)&&n("mirror");var A=f==="multicategory";if(!i.noTickson&&(f==="category"||A)&&(r.ticks||r.showgrid)){var L;A&&(L="boundaries");var _=n("tickson",L);_==="boundaries"&&delete r.ticklabelposition}if(A){var C=n("showdividers");C&&(n("dividercolor"),n("dividerwidth"))}if(f==="date")if(Cvt(t,r,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:Fvt}),!r.rangebreaks.length)delete r.rangebreaks;else{for(var M=0;M=2){var o="",s,l;if(a.length===2){for(s=0;s<2;s++)if(l=Ove(a[s]),l){o=tI;break}}var u=n("pattern",o);if(u===tI)for(s=0;s<2;s++)l=Ove(a[s]),l&&(t.bounds[s]=a[s]=l-1);if(u)for(s=0;s<2;s++)switch(l=a[s],u){case tI:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l!==Math.floor(l)||l<0||l>=7){t.enabled=!1;return}t.bounds[s]=a[s]=l;break;case zvt:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l<0||l>24){t.enabled=!1;return}t.bounds[s]=a[s]=l;break}if(r.autorange===!1){var c=r.range;if(c[0]c[1]){t.enabled=!1;return}}else if(a[0]>c[0]&&a[1]{"use strict";var Ovt=uo(),rI=Mr();Nve.exports=function(t,r,n,i){var a=i.counterAxes||[],o=i.overlayableAxes||[],s=i.letter,l=i.grid,u=i.overlayingDomain,c,f,h,d,v,x;l&&(f=l._domains[s][l._axisMap[r._id]],c=l._anchors[r._id],f&&(h=l[s+"side"].split(" ")[0],d=l.domain[s][h==="right"||h==="top"?1:0])),f=f||[0,1],c=c||(Ovt(t.position)?"free":a[0]||"free"),h=h||(s==="x"?"bottom":"left"),d=d||0,v=0,x=!1;var b=rI.coerce(t,r,{anchor:{valType:"enumerated",values:["free"].concat(a),dflt:c}},"anchor"),p=rI.coerce(t,r,{side:{valType:"enumerated",values:s==="x"?["bottom","top"]:["left","right"],dflt:h}},"side");if(b==="free"){if(s==="y"){var E=n("autoshift");E&&(d=p==="left"?u[0]:u[1],x=r.automargin?r.automargin:!0,v=p==="left"?-3:3),n("shift",v)}n("position",d)}n("automargin",x);var k=!1;if(o.length&&(k=rI.coerce(t,r,{overlaying:{valType:"enumerated",values:[!1].concat(o),dflt:!1}},"overlaying")),!k){var A=n("domain",f);A[0]>A[1]-1/4096&&(r.domain=f),rI.noneOrAll(t.domain,r.domain,f),r.tickmode==="sync"&&(r.tickmode="auto")}return n("layer"),r}});var Yve=ye((Jnr,Xve)=>{"use strict";var jb=Mr(),Uve=va(),Bvt=rp().isUnifiedHover,Nvt=OB(),Vve=Vs(),Uvt=s3(),Hve=Cd(),Vvt=yU(),Gve=JM(),Hvt=Bb(),jve=iI(),bU=af(),Cm=bU.id2name,Wve=bU.name2id,Gvt=ad().AX_ID_PATTERN,Zve=ba(),nI=Zve.traceIs,xU=Zve.getComponentMethod;function aI(e,t,r){Array.isArray(e[t])?e[t].push(r):e[t]=[r]}Xve.exports=function(t,r,n){var i=r.autotypenumbers,a={},o={},s={},l={},u={},c={},f={},h={},d={},v={},x,b;for(x=0;x{"use strict";var jvt=xa(),Kve=ba(),oI=Mr(),Qp=ao(),sI=Qa();Jve.exports=function(t,r,n,i){var a=t._fullLayout;if(r.length===0){sI.redrawComponents(t);return}function o(b){var p=b.xaxis,E=b.yaxis;a._defs.select("#"+b.clipId+"> rect").call(Qp.setTranslate,0,0).call(Qp.setScale,1,1),b.plot.call(Qp.setTranslate,p._offset,E._offset).call(Qp.setScale,1,1);var k=b.plot.selectAll(".scatterlayer .trace");k.selectAll(".point").call(Qp.setPointGroupScale,1,1),k.selectAll(".textpoint").call(Qp.setTextPointsScale,1,1),k.call(Qp.hideOutsideRangePoints,b)}function s(b,p){var E=b.plotinfo,k=E.xaxis,A=E.yaxis,L=k._length,_=A._length,C=!!b.xr1,M=!!b.yr1,g=[];if(C){var P=oI.simpleMap(b.xr0,k.r2l),T=oI.simpleMap(b.xr1,k.r2l),F=P[1]-P[0],q=T[1]-T[0];g[0]=(P[0]*(1-p)+p*T[0]-P[0])/(P[1]-P[0])*L,g[2]=L*(1-p+p*q/F),k.range[0]=k.l2r(P[0]*(1-p)+p*T[0]),k.range[1]=k.l2r(P[1]*(1-p)+p*T[1])}else g[0]=0,g[2]=L;if(M){var V=oI.simpleMap(b.yr0,A.r2l),H=oI.simpleMap(b.yr1,A.r2l),X=V[1]-V[0],G=H[1]-H[0];g[1]=(V[1]*(1-p)+p*H[1]-V[1])/(V[0]-V[1])*_,g[3]=_*(1-p+p*G/X),A.range[0]=k.l2r(V[0]*(1-p)+p*H[0]),A.range[1]=A.l2r(V[1]*(1-p)+p*H[1])}else g[1]=0,g[3]=_;sI.drawOne(t,k,{skipTitle:!0}),sI.drawOne(t,A,{skipTitle:!0}),sI.redrawComponents(t,[k._id,A._id]);var N=C?L/g[2]:1,W=M?_/g[3]:1,re=C?g[0]:0,ae=M?g[1]:0,_e=C?g[0]/g[2]*L:0,Me=M?g[1]/g[3]*_:0,ke=k._offset-_e,ge=A._offset-Me;E.clipRect.call(Qp.setTranslate,re,ae).call(Qp.setScale,1/N,1/W),E.plot.call(Qp.setTranslate,ke,ge).call(Qp.setScale,N,W),Qp.setPointGroupScale(E.zoomScalePts,1/N,1/W),Qp.setTextPointsScale(E.zoomScaleTxt,1/N,1/W)}var l;i&&(l=i());function u(){for(var b={},p=0;pn.duration?(u(),d=window.cancelAnimationFrame(x)):d=window.requestAnimationFrame(x)}return f=Date.now(),d=window.requestAnimationFrame(x),Promise.resolve()}});var Jf=ye(yv=>{"use strict";var uI=xa(),Qve=ba(),Wb=Mr(),Wvt=Xu(),Zvt=ao(),epe=kd().getModuleCalcData,m_=af(),zg=ad(),Xvt=Zp(),ql=Wb.ensureSingle;function lI(e,t,r){return Wb.ensureSingle(e,t,r,function(n){n.datum(r)})}var Zb=zg.zindexSeparator;yv.name="cartesian";yv.attr=["xaxis","yaxis"];yv.idRoot=["x","y"];yv.idRegex=zg.idRegex;yv.attrRegex=zg.attrRegex;yv.attributes=Eve();yv.layoutAttributes=Cd();yv.supplyLayoutDefaults=Yve();yv.transitionAxes=$ve();yv.finalizeSubplots=function(e,t){var r=t._subplots,n=r.xaxis,i=r.yaxis,a=r.cartesian,o=a,s={},l={},u,c,f;for(u=0;u0){var d=h.id;if(d.indexOf(Zb)!==-1)continue;d+=Zb+(u+1),h=Wb.extendFlat({},h,{id:d,plot:i._cartesianlayer.selectAll(".subplot").select("."+d)})}for(var v=[],x,b=0;b1&&(L+=Zb+A),k.push(s+L),o=0;o1,f=t.mainplotinfo;if(!t.mainplot||c)if(u)t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.xaxislayer=ql(n,"g","xaxislayer-above"),t.yaxislayer=ql(n,"g","yaxislayer-above");else{if(!o){var h=ql(n,"g","layer-subplot");t.shapelayer=ql(h,"g","shapelayer"),t.imagelayer=ql(h,"g","imagelayer"),f&&c?(t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer):(t.minorGridlayer=ql(n,"g","minor-gridlayer"),t.gridlayer=ql(n,"g","gridlayer"),t.zerolinelayer=ql(n,"g","zerolinelayer"));var d=ql(n,"g","layer-between");t.shapelayerBetween=ql(d,"g","shapelayer"),t.imagelayerBetween=ql(d,"g","imagelayer"),ql(n,"path","xlines-below"),ql(n,"path","ylines-below"),t.overlinesBelow=ql(n,"g","overlines-below"),ql(n,"g","xaxislayer-below"),ql(n,"g","yaxislayer-below"),t.overaxesBelow=ql(n,"g","overaxes-below")}t.overplot=ql(n,"g","overplot"),t.plot=ql(t.overplot,"g",i),o||(t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.overlinesAbove=ql(n,"g","overlines-above"),ql(n,"g","xaxislayer-above"),ql(n,"g","yaxislayer-above"),t.overaxesAbove=ql(n,"g","overaxes-above"),t.xlines=n.select(".xlines-"+s),t.ylines=n.select(".ylines-"+l),t.xaxislayer=n.select(".xaxislayer-"+s),t.yaxislayer=n.select(".yaxislayer-"+l))}else{var v=f.plotgroup,x=i+"-x",b=i+"-y";t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer,ql(f.overlinesBelow,"path",x),ql(f.overlinesBelow,"path",b),ql(f.overaxesBelow,"g",x),ql(f.overaxesBelow,"g",b),t.plot=ql(f.overplot,"g",i),ql(f.overlinesAbove,"path",x),ql(f.overlinesAbove,"path",b),ql(f.overaxesAbove,"g",x),ql(f.overaxesAbove,"g",b),t.xlines=v.select(".overlines-"+s).select("."+x),t.ylines=v.select(".overlines-"+l).select("."+b),t.xaxislayer=v.select(".overaxes-"+s).select("."+x),t.yaxislayer=v.select(".overaxes-"+l).select("."+b)}o||(u||(lI(t.minorGridlayer,"g",t.xaxis._id),lI(t.minorGridlayer,"g",t.yaxis._id),t.minorGridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort),lI(t.gridlayer,"g",t.xaxis._id),lI(t.gridlayer,"g",t.yaxis._id),t.gridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort)),t.xlines.style("fill","none").classed("crisp",!0),t.ylines.style("fill","none").classed("crisp",!0))}function ipe(e,t){if(e){var r={};e.each(function(l){var u=l[0],c=uI.select(this);c.remove(),npe(u,t),r[u]=!0});for(var n in t._plots)for(var i=t._plots[n],a=i.overlays||[],o=0;o{"use strict";var cI=lu();ape.exports={hasLines:cI.hasLines,hasMarkers:cI.hasMarkers,hasText:cI.hasText,isBubble:cI.isBubble,attributes:Uc(),layoutAttributes:V6(),supplyDefaults:Ide(),crossTraceDefaults:$N(),supplyLayoutDefaults:Fde(),calc:q0().calc,crossTraceCalc:ove(),arraysToCalcdata:km(),plot:iT(),colorbar:Kd(),formatLabels:$P(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:sT(),selectPoints:lT(),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:Jf(),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}});var upe=ye((tar,lpe)=>{"use strict";var Kvt=xa(),Jvt=va(),spe=MN(),wU=Mr(),$vt=wU.strScale,Qvt=wU.strRotate,ept=wU.strTranslate;lpe.exports=function(t,r,n){var i=t.node(),a=spe[n.arrowhead||0],o=spe[n.startarrowhead||0],s=(n.arrowwidth||1)*(n.arrowsize||1),l=(n.arrowwidth||1)*(n.startarrowsize||1),u=r.indexOf("start")>=0,c=r.indexOf("end")>=0,f=a.backoff*s+n.standoff,h=o.backoff*l+n.startstandoff,d,v,x,b;if(i.nodeName==="line"){d={x:+t.attr("x1"),y:+t.attr("y1")},v={x:+t.attr("x2"),y:+t.attr("y2")};var p=d.x-v.x,E=d.y-v.y;if(x=Math.atan2(E,p),b=x+Math.PI,f&&h&&f+h>Math.sqrt(p*p+E*E)){V();return}if(f){if(f*f>p*p+E*E){V();return}var k=f*Math.cos(x),A=f*Math.sin(x);v.x+=k,v.y+=A,t.attr({x2:v.x,y2:v.y})}if(h){if(h*h>p*p+E*E){V();return}var L=h*Math.cos(x),_=h*Math.sin(x);d.x-=L,d.y-=_,t.attr({x1:d.x,y1:d.y})}}else if(i.nodeName==="path"){var C=i.getTotalLength(),M="";if(C{"use strict";var cpe=xa(),TU=ba(),tpt=Xu(),__=Mr(),AU=__.strTranslate,QM=Qa(),Xb=va(),Py=ao(),fpe=Nc(),SU=Pl(),MU=Tg(),$M=gv(),rpt=Vs().arrayEditor,ipt=upe();vpe.exports={draw:npt,drawOne:hpe,drawRaw:dpe};function npt(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r2/3?Xe="right":Xe="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[Xe]}for(var Ce=!1,me=["x","y"],Re=0;Re1)&&(nt===Ge?(St=ct.r2fraction(t["a"+ce]),(St<0||St>1)&&(Ce=!0)):Ce=!0),xr=ct._offset+ct.r2p(t[ce]),xt=.5}else{var Et=Lt==="domain";ce==="x"?(Ke=t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.l+s.w*Ke):(Ke=1-t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.t+s.h*Ke),xt=t.showarrow?.5:Ke}if(t.showarrow){Yt.head=xr;var dt=t["a"+ce];if(bt=rt*ze(.5,t.xanchor)-ot*ze(.5,t.yanchor),nt===Ge){var Ht=QM.getRefType(nt);Ht==="domain"?(ce==="y"&&(dt=1-dt),Yt.tail=ct._offset+ct._length*dt):Ht==="paper"?ce==="y"?(dt=1-dt,Yt.tail=s.t+s.h*dt):Yt.tail=s.l+s.w*dt:Yt.tail=ct._offset+ct.r2p(dt),er=bt}else Yt.tail=xr+dt,er=bt+dt;Yt.text=Yt.tail+bt;var $t=o[ce==="x"?"width":"height"];if(Ge==="paper"&&(Yt.head=__.constrain(Yt.head,1,$t-1)),nt==="pixel"){var fr=-Math.max(Yt.tail-3,Yt.text),_r=Math.min(Yt.tail+3,Yt.text)-$t;fr>0?(Yt.tail+=fr,Yt.text+=fr):_r>0&&(Yt.tail-=_r,Yt.text-=_r)}Yt.tail+=Ct,Yt.head+=Ct}else bt=Rt*ze(xt,kt),er=bt,Yt.text=xr+bt;Yt.text+=Ct,bt+=Ct,er+=Ct,t["_"+ce+"padplus"]=Rt/2+er,t["_"+ce+"padminus"]=Rt/2-er,t["_"+ce+"size"]=Rt,t["_"+ce+"shift"]=bt}if(Ce){C.remove();return}var Br=0,Or=0;if(t.align!=="left"&&(Br=(ie-ke)*(t.align==="center"?.5:1)),t.valign!=="top"&&(Or=(Te-ge)*(t.valign==="middle"?.5:1)),_e)ae.select("svg").attr({x:P+Br-1,y:P+Or}).call(Py.setClipUrl,F?x:null,e);else{var Nr=P+Or-Me.top,ut=P+Br-Me.left;X.call(SU.positionText,ut,Nr).call(Py.setClipUrl,F?x:null,e)}q.select("rect").call(Py.setRect,P,P,ie,Te),T.call(Py.setRect,M/2,M/2,Ee-M,Ae-M),C.call(Py.setTranslate,Math.round(b.x.text-Ee/2),Math.round(b.y.text-Ae/2)),k.attr({transform:"rotate("+p+","+b.x.text+","+b.y.text+")"});var Ne=function(Ve,Xe){E.selectAll(".annotation-arrow-g").remove();var ht=b.x.head,Le=b.y.head,xe=b.x.tail+Ve,Se=b.y.tail+Xe,lt=b.x.text+Ve,Gt=b.y.text+Xe,Vt=__.rotationXYMatrix(p,lt,Gt),ar=__.apply2DTransform(Vt),Qr=__.apply2DTransform2(Vt),ai=+T.attr("width"),jr=+T.attr("height"),ri=lt-.5*ai,bi=ri+ai,nn=Gt-.5*jr,Wi=nn+jr,Ni=[[ri,nn,ri,Wi],[ri,Wi,bi,Wi],[bi,Wi,bi,nn],[bi,nn,ri,nn]].map(Qr);if(!Ni.reduce(function(Vr,gi){return Vr^!!__.segmentsIntersect(ht,Le,ht+1e6,Le+1e6,gi[0],gi[1],gi[2],gi[3])},!1)){Ni.forEach(function(Vr){var gi=__.segmentsIntersect(xe,Se,ht,Le,Vr[0],Vr[1],Vr[2],Vr[3]);gi&&(xe=gi.x,Se=gi.y)});var _n=t.arrowwidth,$i=t.arrowcolor,zn=t.arrowside,Wn=E.append("g").style({opacity:Xb.opacity($i)}).classed("annotation-arrow-g",!0),It=Wn.append("path").attr("d","M"+xe+","+Se+"L"+ht+","+Le).style("stroke-width",_n+"px").call(Xb.stroke,Xb.rgb($i));if(ipt(It,zn,t),l.annotationPosition&&It.node().parentNode&&!n){var ft=ht,jt=Le;if(t.standoff){var Zt=Math.sqrt(Math.pow(ht-xe,2)+Math.pow(Le-Se,2));ft+=t.standoff*(xe-ht)/Zt,jt+=t.standoff*(Se-Le)/Zt}var yr=Wn.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(xe-ft)+","+(Se-jt),transform:AU(ft,jt)}).style("stroke-width",_n+6+"px").call(Xb.stroke,"rgba(0,0,0,0)").call(Xb.fill,"rgba(0,0,0,0)"),Fr,Zr;$M.init({element:yr.node(),gd:e,prepFn:function(){var Vr=Py.getTranslate(C);Fr=Vr.x,Zr=Vr.y,i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0)},moveFn:function(Vr,gi){var Si=ar(Fr,Zr),Mi=Si[0]+Vr,Pi=Si[1]+gi;C.call(Py.setTranslate,Mi,Pi),d("x",y_(i,Vr,"x",s,t)),d("y",y_(a,gi,"y",s,t)),t.axref===t.xref&&d("ax",y_(i,Vr,"ax",s,t)),t.ayref===t.yref&&d("ay",y_(a,gi,"ay",s,t)),Wn.attr("transform",AU(Vr,gi)),k.attr({transform:"rotate("+p+","+Mi+","+Pi+")"})},doneFn:function(){TU.call("_guiRelayout",e,v());var Vr=document.querySelector(".js-notes-box-panel");Vr&&Vr.redraw(Vr.selectedObj)}})}}};if(t.showarrow&&Ne(0,0),A){var Ye;$M.init({element:C.node(),gd:e,prepFn:function(){Ye=k.attr("transform")},moveFn:function(Ve,Xe){var ht="pointer";if(t.showarrow)t.axref===t.xref?d("ax",y_(i,Ve,"ax",s,t)):d("ax",t.ax+Ve),t.ayref===t.yref?d("ay",y_(a,Xe,"ay",s.w,t)):d("ay",t.ay+Xe),Ne(Ve,Xe);else{if(n)return;var Le,xe;if(i)Le=y_(i,Ve,"x",s,t);else{var Se=t._xsize/s.w,lt=t.x+(t._xshift-t.xshift)/s.w-Se/2;Le=$M.align(lt+Ve/s.w,Se,0,1,t.xanchor)}if(a)xe=y_(a,Xe,"y",s,t);else{var Gt=t._ysize/s.h,Vt=t.y-(t._yshift+t.yshift)/s.h-Gt/2;xe=$M.align(Vt-Xe/s.h,Gt,0,1,t.yanchor)}d("x",Le),d("y",xe),(!i||!a)&&(ht=$M.getCursor(i?.5:Le,a?.5:xe,t.xanchor,t.yanchor))}k.attr({transform:AU(Ve,Xe)+Ye}),MU(C,ht)},clickFn:function(Ve,Xe){t.captureevents&&e.emit("plotly_clickannotation",_(Xe))},doneFn:function(){MU(C),TU.call("_guiRelayout",e,v());var Ve=document.querySelector(".js-notes-box-panel");Ve&&Ve.redraw(Ve.selectedObj)}})}}l.annotationText?X.call(SU.makeEditable,{delegate:C,gd:e}).call(G).on("edit",function(W){t.text=W,this.call(G),d("text",W),i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0),TU.call("_guiRelayout",e,v())}):X.call(G)}});var xpe=ye((iar,_pe)=>{"use strict";var ppe=Mr(),apt=ba(),gpe=Vs().arrayEditor;_pe.exports={hasClickToShow:opt,onClick:spt};function opt(e,t){var r=ype(e,t);return r.on.length>0||r.explicitOff.length>0}function spt(e,t){var r=ype(e,t),n=r.on,i=r.off.concat(r.explicitOff),a={},o=e._fullLayout.annotations,s,l;if(n.length||i.length){for(s=0;s{"use strict";var EU=Mr(),uT=va();bpe.exports=function(t,r,n,i){i("opacity");var a=i("bgcolor"),o=i("bordercolor"),s=uT.opacity(o);i("borderpad");var l=i("borderwidth"),u=i("showarrow");i("text",u?" ":n._dfltTitle.annotation),i("textangle"),EU.coerceFont(i,"font",n.font),i("width"),i("align");var c=i("height");if(c&&i("valign"),u){var f=i("arrowside"),h,d;f.indexOf("end")!==-1&&(h=i("arrowhead"),d=i("arrowsize")),f.indexOf("start")!==-1&&(i("startarrowhead",h),i("startarrowsize",d)),i("arrowcolor",s?r.bordercolor:uT.defaultLine),i("arrowwidth",(s&&l||1)*2),i("standoff"),i("startstandoff")}var v=i("hovertext"),x=n.hoverlabel||{};if(v){var b=i("hoverlabel.bgcolor",x.bgcolor||(uT.opacity(a)?uT.rgb(a):uT.defaultLine)),p=i("hoverlabel.bordercolor",x.bordercolor||uT.contrast(b)),E=EU.extendFlat({},x.font);E.color||(E.color=p),EU.coerceFont(i,"hoverlabel.font",E)}i("captureevents",!!v)}});var Tpe=ye((aar,wpe)=>{"use strict";var CU=Mr(),Yb=Qa(),lpt=Zd(),upt=kU(),cpt=Nb();wpe.exports=function(t,r){lpt(t,r,{name:"annotations",handleItemDefaults:fpt})};function fpt(e,t,r){function n(k,A){return CU.coerce(e,t,cpt,k,A)}var i=n("visible"),a=n("clicktoshow");if(i||a){upt(e,t,r,n);for(var o=t.showarrow,s=["x","y"],l=[-10,-30],u={_fullLayout:r},c=0;c<2;c++){var f=s[c],h=Yb.coerceRef(e,t,u,f,"","paper");if(h!=="paper"){var d=Yb.getFromId(u,h);d._annIndices.push(t._index)}if(Yb.coercePosition(t,u,n,h,f,.5),o){var v="a"+f,x=Yb.coerceRef(e,t,u,v,"pixel",["pixel","paper"]);x!=="pixel"&&x!==h&&(x=t[v]="pixel");var b=x==="pixel"?l[c]:.4;Yb.coercePosition(t,u,n,x,v,b)}n(f+"anchor"),n(f+"shift")}if(CU.noneOrAll(e,t,["x","y"]),o&&CU.noneOrAll(e,t,["ax","ay"]),a){var p=n("xclick"),E=n("yclick");t._xclick=p===void 0?t.x:Yb.cleanPosition(p,u,t.xref),t._yclick=E===void 0?t.y:Yb.cleanPosition(E,u,t.yref)}}}});var Mpe=ye((oar,Spe)=>{"use strict";var LU=Mr(),Kb=Qa(),hpt=fI().draw;Spe.exports=function(t){var r=t._fullLayout,n=LU.filterVisible(r.annotations);if(n.length&&t._fullData.length)return LU.syncOrAsync([hpt,dpt],t)};function dpt(e){var t=e._fullLayout;LU.filterVisible(t.annotations).forEach(function(r){var n=Kb.getFromId(e,r.xref),i=Kb.getFromId(e,r.yref),a=Kb.getRefType(r.xref),o=Kb.getRefType(r.yref);r._extremes={},a==="range"&&Ape(r,n),o==="range"&&Ape(r,i)})}function Ape(e,t){var r=t._id,n=r.charAt(0),i=e[n],a=e["a"+n],o=e[n+"ref"],s=e["a"+n+"ref"],l=e["_"+n+"padplus"],u=e["_"+n+"padminus"],c={x:1,y:-1}[n]*e[n+"shift"],f=3*e.arrowsize*e.arrowwidth||0,h=f+c,d=f-c,v=3*e.startarrowsize*e.arrowwidth||0,x=v+c,b=v-c,p;if(s===o){var E=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:h,ppadminus:d}),k=Kb.findExtremes(t,[t.r2c(a)],{ppadplus:Math.max(l,x),ppadminus:Math.max(u,b)});p={min:[E.min[0],k.min[0]],max:[E.max[0],k.max[0]]}}else x=a?x+a:x,b=a?b-a:b,p=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:Math.max(l,h,x),ppadminus:Math.max(u,d,b)});e._extremes[r]=p}});var kpe=ye((sar,Epe)=>{"use strict";var vpt=uo(),ppt=u6();Epe.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(!(a||o))return;var s=t._fullLayout.annotations,l=r._id.charAt(0),u,c;function f(d){var v=u[d],x=null;a?x=ppt(v,r.range):x=Math.pow(10,v),vpt(x)||(x=null),i(c+d,x)}for(var h=0;h{"use strict";var PU=fI(),Cpe=xpe();Lpe.exports={moduleType:"component",name:"annotations",layoutAttributes:Nb(),supplyLayoutDefaults:Tpe(),includeBasePlot:IM()("annotations"),calcAutorange:Mpe(),draw:PU.draw,drawOne:PU.drawOne,drawRaw:PU.drawRaw,hasClickToShow:Cpe.hasClickToShow,onClick:Cpe.onClick,convertCoords:kpe()}});var hI=ye((uar,Ipe)=>{"use strict";var Ku=Nb(),gpt=Bu().overrideAll,mpt=Vs().templatedArray;Ipe.exports=gpt(mpt("annotation",{visible:Ku.visible,x:{valType:"any"},y:{valType:"any"},z:{valType:"any"},ax:{valType:"number"},ay:{valType:"number"},xanchor:Ku.xanchor,xshift:Ku.xshift,yanchor:Ku.yanchor,yshift:Ku.yshift,text:Ku.text,textangle:Ku.textangle,font:Ku.font,width:Ku.width,height:Ku.height,opacity:Ku.opacity,align:Ku.align,valign:Ku.valign,bgcolor:Ku.bgcolor,bordercolor:Ku.bordercolor,borderpad:Ku.borderpad,borderwidth:Ku.borderwidth,showarrow:Ku.showarrow,arrowcolor:Ku.arrowcolor,arrowhead:Ku.arrowhead,startarrowhead:Ku.startarrowhead,arrowside:Ku.arrowside,arrowsize:Ku.arrowsize,startarrowsize:Ku.startarrowsize,arrowwidth:Ku.arrowwidth,standoff:Ku.standoff,startstandoff:Ku.startstandoff,hovertext:Ku.hovertext,hoverlabel:Ku.hoverlabel,captureevents:Ku.captureevents}),"calc","from-root")});var Dpe=ye((car,Rpe)=>{"use strict";var IU=Mr(),ypt=Qa(),_pt=Zd(),xpt=kU(),bpt=hI();Rpe.exports=function(t,r,n){_pt(t,r,{name:"annotations",handleItemDefaults:wpt,fullLayout:n.fullLayout})};function wpt(e,t,r,n){function i(s,l){return IU.coerce(e,t,bpt,s,l)}function a(s){var l=s+"axis",u={_fullLayout:{}};return u._fullLayout[l]=r[l],ypt.coercePosition(t,u,i,s,s,.5)}var o=i("visible");o&&(xpt(e,t,n.fullLayout,i),a("x"),a("y"),a("z"),IU.noneOrAll(e,t,["x","y","z"]),t.xref="x",t.yref="y",t.zref="z",i("xanchor"),i("yanchor"),i("xshift"),i("yshift"),t.showarrow&&(t.axref="pixel",t.ayref="pixel",i("ax",-10),i("ay",-30),IU.noneOrAll(e,t,["ax","ay"])))}});var Ope=ye((far,qpe)=>{"use strict";var zpe=Mr(),Fpe=Qa();qpe.exports=function(t){for(var r=t.fullSceneLayout,n=r.annotations,i=0;i{"use strict";function RU(e,t){var r=[0,0,0,0],n,i;for(n=0;n<4;++n)for(i=0;i<4;++i)r[i]+=e[4*n+i]*t[n];return r}function Apt(e,t){var r=RU(e.projection,RU(e.view,RU(e.model,[t[0],t[1],t[2],1])));return r}Bpe.exports=Apt});var Upe=ye((dar,Npe)=>{"use strict";var Spt=fI().drawRaw,Mpt=DU(),Ept=["x","y","z"];Npe.exports=function(t){for(var r=t.fullSceneLayout,n=t.dataScale,i=r.annotations,a=0;a1){s=!0;break}}s?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+a+'"]').remove():(o._pdata=Mpt(t.glplot.cameraParams,[r.xaxis.r2l(o.x)*n[0],r.yaxis.r2l(o.y)*n[1],r.zaxis.r2l(o.z)*n[2]]),Spt(t.graphDiv,o,a,t.id,o._xa,o._ya))}}});var Gpe=ye((par,Hpe)=>{"use strict";var kpt=ba(),Vpe=Mr();Hpe.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:hI()}}},layoutAttributes:hI(),handleDefaults:Dpe(),includeBasePlot:Cpt,convert:Ope(),draw:Upe()};function Cpt(e,t){var r=kpt.subplotsRegistry.gl3d;if(r)for(var n=r.attrRegex,i=Object.keys(e),a=0;a{"use strict";var jpe=Nb(),Wpe=Su(),Zpe=Uc().line,Lpt=Ed().dash,Fg=no().extendFlat,Ppt=Vs().templatedArray,gar=PM(),cT=vl(),Ipt=Wo().shapeTexttemplateAttrs,Rpt=b6();Xpe.exports=Ppt("shape",{visible:Fg({},cT.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:Fg({},cT.legend,{editType:"calc+arraydraw"}),legendgroup:Fg({},cT.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:Fg({},cT.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:Wpe({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:Fg({},cT.legendrank,{editType:"calc+arraydraw"}),legendwidth:Fg({},cT.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above",editType:"arraydraw"},xref:Fg({},jpe.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},x0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},x1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},yref:Fg({},jpe.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},y0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},y1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:Fg({},Zpe.color,{editType:"arraydraw"}),width:Fg({},Zpe.width,{editType:"calc+arraydraw"}),dash:Fg({},Lpt,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:Ipt({},{keys:Object.keys(Rpt)}),font:Wpe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})});var Jpe=ye((yar,Kpe)=>{"use strict";var e4=Mr(),fT=Qa(),Dpt=Zd(),zpt=zU(),Ype=h_();Kpe.exports=function(t,r){Dpt(t,r,{name:"shapes",handleItemDefaults:qpt})};function Fpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}function qpt(e,t,r){function n(W,re){return e4.coerce(e,t,zpt,W,re)}t._isShape=!0;var i=n("visible");if(i){var a=n("showlegend");a&&(n("legend"),n("legendwidth"),n("legendgroup"),n("legendgrouptitle.text"),e4.coerceFont(n,"legendgrouptitle.font"),n("legendrank"));var o=n("path"),s=o?"path":"rect",l=n("type",s),u=l!=="path";u&&delete t.path,n("editable"),n("layer"),n("opacity"),n("fillcolor"),n("fillrule");var c=n("line.width");c&&(n("line.color"),n("line.dash"));for(var f=n("xsizemode"),h=n("ysizemode"),d=["x","y"],v=0;v<2;v++){var x=d[v],b=x+"anchor",p=x==="x"?f:h,E={_fullLayout:r},k,A,L,_=fT.coerceRef(e,t,E,x,void 0,"paper"),C=fT.getRefType(_);if(C==="range"?(k=fT.getFromId(E,_),k._shapeIndices.push(t._index),L=Ype.rangeToShapePosition(k),A=Ype.shapePositionToRange(k),(k.type==="category"||k.type==="multicategory")&&(n(x+"0shift"),n(x+"1shift"))):A=L=e4.identity,u){var M=.25,g=.75,P=x+"0",T=x+"1",F=e[P],q=e[T];e[P]=A(e[P],!0),e[T]=A(e[T],!0),p==="pixel"?(n(P,0),n(T,10)):(fT.coercePosition(t,E,n,_,P,M),fT.coercePosition(t,E,n,_,T,g)),t[P]=L(t[P]),t[T]=L(t[T]),e[P]=F,e[T]=q}if(p==="pixel"){var V=e[b];e[b]=A(e[b],!0),fT.coercePosition(t,E,n,_,b,.25),t[b]=L(t[b]),e[b]=V}}u&&e4.noneOrAll(e,t,["x0","x1","y0","y1"]);var H=l==="line",X,G;if(u&&(X=n("label.texttemplate")),X||(G=n("label.text")),G||X){n("label.textangle");var N=n("label.textposition",H?"middle":"middle center");n("label.xanchor"),n("label.yanchor",Fpt(H,N)),n("label.padding"),e4.coerceFont(n,"label.font",r.font)}}}});var e0e=ye((_ar,Qpe)=>{"use strict";var Opt=va(),$pe=Mr();function Bpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}Qpe.exports=function(t,r,n){n("newshape.visible"),n("newshape.name"),n("newshape.showlegend"),n("newshape.legend"),n("newshape.legendwidth"),n("newshape.legendgroup"),n("newshape.legendgrouptitle.text"),$pe.coerceFont(n,"newshape.legendgrouptitle.font"),n("newshape.legendrank"),n("newshape.drawdirection"),n("newshape.layer"),n("newshape.fillcolor"),n("newshape.fillrule"),n("newshape.opacity");var i=n("newshape.line.width");if(i){var a=(t||{}).plot_bgcolor||"#FFF";n("newshape.line.color",Opt.contrast(a)),n("newshape.line.dash")}var o=t.dragmode==="drawline",s=n("newshape.label.text"),l=n("newshape.label.texttemplate");if(s||l){n("newshape.label.textangle");var u=n("newshape.label.textposition",o?"middle":"middle center");n("newshape.label.xanchor"),n("newshape.label.yanchor",Bpt(o,u)),n("newshape.label.padding"),$pe.coerceFont(n,"newshape.label.font",r.font)}n("activeshape.fillcolor"),n("activeshape.opacity")}});var a0e=ye((xar,n0e)=>{"use strict";var FU=Mr(),hT=Qa(),dT=cM(),r0e=h_();n0e.exports=function(t){var r=t._fullLayout,n=FU.filterVisible(r.shapes);if(!(!n.length||!t._fullData.length))for(var i=0;i0?u+o:o;return{ppad:o,ppadplus:s?f:h,ppadminus:s?h:f}}else return{ppad:o}}function t0e(e,t,r){var n=e._id.charAt(0)==="x"?"x":"y",i=e.type==="category"||e.type==="multicategory",a,o,s=0,l=0,u=i?e.r2c:e.d2c,c=t[n+"sizemode"]==="scaled";if(c?(a=t[n+"0"],o=t[n+"1"],i&&(s=t[n+"0shift"],l=t[n+"1shift"])):(a=t[n+"anchor"],o=t[n+"anchor"]),a!==void 0)return[u(a)+s,u(o)+l];if(t.path){var f=1/0,h=-1/0,d=t.path.match(dT.segmentRE),v,x,b,p,E;for(e.type==="date"&&(u=r0e.decodeDate(u)),v=0;vh&&(h=E)));if(h>=f)return[f,h]}}});var l0e=ye((bar,s0e)=>{"use strict";var o0e=rP();s0e.exports={moduleType:"component",name:"shapes",layoutAttributes:zU(),supplyLayoutDefaults:Jpe(),supplyDrawNewShapeDefaults:e0e(),includeBasePlot:IM()("shapes"),calcAutorange:a0e(),draw:o0e.draw,drawOne:o0e.drawOne}});var qU=ye((Tar,c0e)=>{"use strict";var u0e=ad(),Vpt=Vs().templatedArray,war=PM();c0e.exports=Vpt("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",u0e.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",u0e.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})});var h0e=ye((Aar,f0e)=>{"use strict";var Hpt=Mr(),OU=Qa(),Gpt=Zd(),jpt=qU(),Wpt="images";f0e.exports=function(t,r){var n={name:Wpt,handleItemDefaults:Zpt};Gpt(t,r,n)};function Zpt(e,t,r){function n(h,d){return Hpt.coerce(e,t,jpt,h,d)}var i=n("source"),a=n("visible",!!i);if(!a)return t;n("layer"),n("xanchor"),n("yanchor"),n("sizex"),n("sizey"),n("sizing"),n("opacity");for(var o={_fullLayout:r},s=["x","y"],l=0;l<2;l++){var u=s[l],c=OU.coerceRef(e,t,o,u,"paper",void 0);if(c!=="paper"){var f=OU.getFromId(o,c);f._imgIndices.push(t._index)}OU.coercePosition(t,o,n,c,u,0)}return t}});var g0e=ye((Sar,p0e)=>{"use strict";var d0e=xa(),Xpt=ao(),vT=Qa(),v0e=af(),Ypt=Zp();p0e.exports=function(t){var r=t._fullLayout,n=[],i={},a=[],o,s;for(s=0;s{"use strict";var m0e=uo(),Kpt=u6();y0e.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(a||o){for(var s=t._fullLayout.images,l=r._id.charAt(0),u,c,f=0;f{"use strict";x0e.exports={moduleType:"component",name:"images",layoutAttributes:qU(),supplyLayoutDefaults:h0e(),includeBasePlot:IM()("images"),draw:g0e(),convertCoords:_0e()}});var dI=ye((kar,w0e)=>{"use strict";w0e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25C4",right:"\u25BA",up:"\u25B2",down:"\u25BC"}}});var BU=ye((Car,A0e)=>{"use strict";var Jpt=Su(),$pt=dh(),Qpt=no().extendFlat,e0t=Bu().overrideAll,t0t=w6(),T0e=Vs().templatedArray,r0t=T0e("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});A0e.exports=e0t(T0e("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:r0t,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:Qpt(t0t({editType:"arraydraw"}),{}),font:Jpt({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:$pt.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")});var k0e=ye((Lar,E0e)=>{"use strict";var vI=Mr(),S0e=Zd(),M0e=BU(),i0t=dI(),n0t=i0t.name,a0t=M0e.buttons;E0e.exports=function(t,r){var n={name:n0t,handleItemDefaults:o0t};S0e(t,r,n)};function o0t(e,t,r){function n(o,s){return vI.coerce(e,t,M0e,o,s)}var i=S0e(e,t,{name:"buttons",handleItemDefaults:s0t}),a=n("visible",i.length>0);a&&(n("active"),n("direction"),n("type"),n("showactive"),n("x"),n("y"),vI.noneOrAll(e,t,["x","y"]),n("xanchor"),n("yanchor"),n("pad.t"),n("pad.r"),n("pad.b"),n("pad.l"),vI.coerceFont(n,"font",r.font),n("bgcolor",r.paper_bgcolor),n("bordercolor"),n("borderwidth"))}function s0t(e,t){function r(i,a){return vI.coerce(e,t,a0t,i,a)}var n=r("visible",e.method==="skip"||Array.isArray(e.args));n&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}});var P0e=ye((Par,L0e)=>{"use strict";L0e.exports=of;var qg=xa(),C0e=va(),pT=ao(),pI=Mr();function of(e,t,r){this.gd=e,this.container=t,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}of.barWidth=2;of.barLength=20;of.barRadius=2;of.barPad=1;of.barColor="#808BA4";of.prototype.enable=function(t,r,n){var i=this.gd._fullLayout,a=i.width,o=i.height;this.position=t;var s=this.position.l,l=this.position.w,u=this.position.t,c=this.position.h,f=this.position.direction,h=f==="down",d=f==="left",v=f==="right",x=f==="up",b=l,p=c,E,k,A,L;!h&&!d&&!v&&!x&&(this.position.direction="down",h=!0);var _=h||x;_?(E=s,k=E+b,h?(A=u,L=Math.min(A+p,o),p=L-A):(L=u+p,A=Math.max(L-p,0),p=L-A)):(A=u,L=A+p,d?(k=s+b,E=Math.max(k-b,0),b=k-E):(E=s,k=Math.min(E+b,a),b=k-E)),this._box={l:E,t:A,w:b,h:p};var C=l>b,M=of.barLength+2*of.barPad,g=of.barWidth+2*of.barPad,P=s,T=u+c;T+g>o&&(T=o-g);var F=this.container.selectAll("rect.scrollbar-horizontal").data(C?[0]:[]);F.exit().on(".drag",null).remove(),F.enter().append("rect").classed("scrollbar-horizontal",!0).call(C0e.fill,of.barColor),C?(this.hbar=F.attr({rx:of.barRadius,ry:of.barRadius,x:P,y:T,width:M,height:g}),this._hbarXMin=P+M/2,this._hbarTranslateMax=b-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var q=c>p,V=of.barWidth+2*of.barPad,H=of.barLength+2*of.barPad,X=s+l,G=u;X+V>a&&(X=a-V);var N=this.container.selectAll("rect.scrollbar-vertical").data(q?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(C0e.fill,of.barColor),q?(this.vbar=N.attr({rx:of.barRadius,ry:of.barRadius,x:X,y:G,width:V,height:H}),this._vbarYMin=G+H/2,this._vbarTranslateMax=p-H):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var W=this.id,re=E-.5,ae=q?k+V+.5:k+.5,_e=A-.5,Me=C?L+g+.5:L+.5,ke=i._topdefs.selectAll("#"+W).data(C||q?[0]:[]);if(ke.exit().remove(),ke.enter().append("clipPath").attr("id",W).append("rect"),C||q?(this._clipRect=ke.select("rect").attr({x:Math.floor(re),y:Math.floor(_e),width:Math.ceil(ae)-Math.floor(re),height:Math.ceil(Me)-Math.floor(_e)}),this.container.call(pT.setClipUrl,W,this.gd),this.bg.attr({x:s,y:u,width:l,height:c})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),C||q){var ge=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(ge);var ie=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault(),qg.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));C&&this.hbar.on(".drag",null).call(ie),q&&this.vbar.on(".drag",null).call(ie)}this.setTranslate(r,n)};of.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)};of.prototype._onBoxDrag=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t-=qg.event.dx),this.vbar&&(r-=qg.event.dy),this.setTranslate(t,r)};of.prototype._onBoxWheel=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t+=qg.event.deltaY),this.vbar&&(r+=qg.event.deltaY),this.setTranslate(t,r)};of.prototype._onBarDrag=function(){var t=this.translateX,r=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax,a=pI.constrain(qg.event.x,n,i),o=(a-n)/(i-n),s=this.position.w-this._box.w;t=o*s}if(this.vbar){var l=r+this._vbarYMin,u=l+this._vbarTranslateMax,c=pI.constrain(qg.event.y,l,u),f=(c-l)/(u-l),h=this.position.h-this._box.h;r=f*h}this.setTranslate(t,r)};of.prototype.setTranslate=function(t,r){var n=this.position.w-this._box.w,i=this.position.h-this._box.h;if(t=pI.constrain(t||0,0,n),r=pI.constrain(r||0,0,i),this.translateX=t,this.translateY=r,this.container.call(pT.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-r),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+r-.5)}),this.hbar){var a=t/n;this.hbar.call(pT.setTranslate,t+a*this._hbarTranslateMax,r)}if(this.vbar){var o=r/i;this.vbar.call(pT.setTranslate,t,r+o*this._vbarTranslateMax)}}});var U0e=ye((Iar,N0e)=>{"use strict";var gT=xa(),t4=Xu(),r4=va(),mT=ao(),e0=Mr(),gI=Pl(),l0t=Vs().arrayEditor,R0e=Nh().LINE_SPACING,Go=dI(),u0t=P0e();N0e.exports=function(t){var r=t._fullLayout,n=e0.filterVisible(r[Go.name]);function i(h){t4.autoMargin(t,O0e(h))}var a=r._menulayer.selectAll("g."+Go.containerClassName).data(n.length>0?[0]:[]);if(a.enter().append("g").classed(Go.containerClassName,!0).style("cursor","pointer"),a.exit().each(function(){gT.select(this).selectAll("g."+Go.headerGroupClassName).each(i)}).remove(),n.length!==0){var o=a.selectAll("g."+Go.headerGroupClassName).data(n,c0t);o.enter().append("g").classed(Go.headerGroupClassName,!0);for(var s=e0.ensureSingle(a,"g",Go.dropdownButtonGroupClassName,function(h){h.style("pointer-events","all")}),l=0;l{"use strict";var m0t=dI();V0e.exports={moduleType:"component",name:m0t.name,layoutAttributes:BU(),supplyLayoutDefaults:k0e(),draw:U0e()}});var n4=ye((Dar,G0e)=>{"use strict";G0e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}});var HU=ye((zar,Z0e)=>{"use strict";var j0e=Su(),y0t=w6(),_0t=no().extendDeepAll,x0t=Bu().overrideAll,b0t=zS(),W0e=Vs().templatedArray,Jb=n4(),w0t=W0e("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});Z0e.exports=x0t(W0e("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:w0t,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:_0t(y0t({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:b0t.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:j0e({})},font:j0e({}),activebgcolor:{valType:"color",dflt:Jb.gripBgActiveColor},bgcolor:{valType:"color",dflt:Jb.railBgColor},bordercolor:{valType:"color",dflt:Jb.railBorderColor},borderwidth:{valType:"number",min:0,dflt:Jb.railBorderWidth},ticklen:{valType:"number",min:0,dflt:Jb.tickLength},tickcolor:{valType:"color",dflt:Jb.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:Jb.minorTickLength}}),"arraydraw","from-root")});var J0e=ye((Far,K0e)=>{"use strict";var yT=Mr(),X0e=Zd(),Y0e=HU(),T0t=n4(),A0t=T0t.name,S0t=Y0e.steps;K0e.exports=function(t,r){X0e(t,r,{name:A0t,handleItemDefaults:M0t})};function M0t(e,t,r){function n(f,h){return yT.coerce(e,t,Y0e,f,h)}for(var i=X0e(e,t,{name:"steps",handleItemDefaults:E0t}),a=0,o=0;o{"use strict";var Og=xa(),mI=Xu(),x_=va(),Bg=ao(),t0=Mr(),k0t=t0.strTranslate,a4=Pl(),C0t=Vs().arrayEditor,gs=n4(),WU=Nh(),ege=WU.LINE_SPACING,GU=WU.FROM_TL,jU=WU.FROM_BR;oge.exports=function(t){var r=t._context.staticPlot,n=t._fullLayout,i=L0t(n,t),a=n._infolayer.selectAll("g."+gs.containerClassName).data(i.length>0?[0]:[]);a.enter().append("g").classed(gs.containerClassName,!0).style("cursor",r?null:"ew-resize");function o(c){c._commandObserver&&(c._commandObserver.remove(),delete c._commandObserver),mI.autoMargin(t,tge(c))}if(a.exit().each(function(){Og.select(this).selectAll("g."+gs.groupClassName).each(o)}).remove(),i.length!==0){var s=a.selectAll("g."+gs.groupClassName).data(i,P0t);s.enter().append("g").classed(gs.groupClassName,!0),s.exit().each(o).remove();for(var l=0;l0&&(s=s.transition().duration(t.transition.duration).ease(t.transition.easing)),s.attr("transform",k0t(o-gs.gripWidth*.5,t._dims.currentValueTotalHeight))}}function ZU(e,t){var r=e._dims;return r.inputAreaStart+gs.stepInset+(r.inputAreaLength-2*gs.stepInset)*Math.min(1,Math.max(0,t))}function Q0e(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-gs.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*gs.stepInset-2*r.inputAreaStart)))}function O0t(e,t,r){var n=r._dims,i=t0.ensureSingle(e,"rect",gs.railTouchRectClass,function(a){a.call(nge,t,e,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,gs.tickOffset+r.ticklen+n.labelHeight)}).call(x_.fill,r.bgcolor).attr("opacity",0),Bg.setTranslate(i,0,n.currentValueTotalHeight)}function B0t(e,t){var r=t._dims,n=r.inputAreaLength-gs.railInset*2,i=t0.ensureSingle(e,"rect",gs.railRectClass);i.attr({width:n,height:gs.railWidth,rx:gs.railRadius,ry:gs.railRadius,"shape-rendering":"crispEdges"}).call(x_.stroke,t.bordercolor).call(x_.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),Bg.setTranslate(i,gs.railInset,(r.inputAreaWidth-gs.railWidth)*.5+r.currentValueTotalHeight)}});var uge=ye((Oar,lge)=>{"use strict";var N0t=n4();lge.exports={moduleType:"component",name:N0t.name,layoutAttributes:HU(),supplyLayoutDefaults:J0e(),draw:sge()}});var _I=ye((Bar,fge)=>{"use strict";var cge=dh();fge.exports={bgcolor:{valType:"color",dflt:cge.background,editType:"plot"},bordercolor:{valType:"color",dflt:cge.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}});var XU=ye((Nar,hge)=>{"use strict";hge.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}});var xI=ye((Uar,dge)=>{"use strict";dge.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}});var gge=ye(wI=>{"use strict";var U0t=af(),V0t=Pl(),vge=xI(),H0t=Nh().LINE_SPACING,bI=vge.name;function pge(e){var t=e&&e[bI];return t&&t.visible}wI.isVisible=pge;wI.makeData=function(e){for(var t=U0t.list({_fullLayout:e},"x",!0),r=e.margin,n=[],i=0;i{"use strict";var TI=Mr(),mge=Vs(),yge=af(),G0t=_I(),j0t=XU();_ge.exports=function(t,r,n){var i=t[n],a=r[n];if(!(i.rangeslider||r._requestRangeslider[a._id]))return;TI.isPlainObject(i.rangeslider)||(i.rangeslider={});var o=i.rangeslider,s=mge.newContainer(a,"rangeslider");function l(L,_){return TI.coerce(o,s,G0t,L,_)}var u,c;function f(L,_){return TI.coerce(u,c,j0t,L,_)}var h=l("visible");if(h){l("bgcolor",r.plot_bgcolor),l("bordercolor"),l("borderwidth"),l("thickness"),l("autorange",!a.isValidRange(o.range)),l("range");var d=r._subplots;if(d)for(var v=d.cartesian.filter(function(L){return L.substr(0,L.indexOf("y"))===yge.name2id(n)}).map(function(L){return L.substr(L.indexOf("y"),L.length)}),x=TI.simpleMap(v,yge.id2name),b=0;b{"use strict";var W0t=af().list,Z0t=wg().getAutoRange,X0t=xI();bge.exports=function(t){for(var r=W0t(t,"x",!0),n=0;n{"use strict";var AI=xa(),Y0t=ba(),K0t=Xu(),Ff=Mr(),SI=Ff.strTranslate,Age=ao(),b_=va(),J0t=Mb(),$0t=Jf(),YU=af(),Q0t=gv(),egt=Tg(),Bs=xI();Sge.exports=function(e){for(var t=e._fullLayout,r=t._rangeSliderData,n=0;n=N.max)X=T[G+1];else if(H=N.pmax)X=T[G+1];else if(H0?e.touches[0].clientX:0}function tgt(e,t,r,n){if(t._context.staticPlot)return;var i=e.select("rect."+Bs.slideBoxClassName).node(),a=e.select("rect."+Bs.grabAreaMinClassName).node(),o=e.select("rect."+Bs.grabAreaMaxClassName).node();function s(){var l=AI.event,u=l.target,c=Tge(l),f=c-e.node().getBoundingClientRect().left,h=n.d2p(r._rl[0]),d=n.d2p(r._rl[1]),v=Q0t.coverSlip();this.addEventListener("touchmove",x),this.addEventListener("touchend",b),v.addEventListener("mousemove",x),v.addEventListener("mouseup",b);function x(p){var E=Tge(p),k=+E-c,A,L,_;switch(u){case i:if(_="ew-resize",h+k>r._length||d+k<0)return;A=h+k,L=d+k;break;case a:if(_="col-resize",h+k>r._length)return;A=h+k,L=d;break;case o:if(_="col-resize",d+k<0)return;A=h,L=d+k;break;default:_="ew-resize",A=f,L=f+k;break}if(L{"use strict";var fgt=Mr(),hgt=_I(),dgt=XU(),KU=gge();Ege.exports={moduleType:"component",name:"rangeslider",schema:{subplots:{xaxis:{rangeslider:fgt.extendFlat({},hgt,{yaxis:dgt})}}},layoutAttributes:_I(),handleDefaults:xge(),calcAutorange:wge(),draw:Mge(),isVisible:KU.isVisible,makeData:KU.makeData,autoMarginOpts:KU.autoMarginOpts}});var MI=ye((Zar,Lge)=>{"use strict";var vgt=Su(),Cge=dh(),pgt=Vs().templatedArray,ggt=pgt("button",{visible:{valType:"boolean",dflt:!0,editType:"plot"},step:{valType:"enumerated",values:["month","year","day","hour","minute","second","all"],dflt:"month",editType:"plot"},stepmode:{valType:"enumerated",values:["backward","todate"],dflt:"backward",editType:"plot"},count:{valType:"number",min:0,dflt:1,editType:"plot"},label:{valType:"string",editType:"plot"},editType:"plot"});Lge.exports={visible:{valType:"boolean",editType:"plot"},buttons:ggt,x:{valType:"number",min:-2,max:3,editType:"plot"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"plot"},y:{valType:"number",min:-2,max:3,editType:"plot"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"bottom",editType:"plot"},font:vgt({editType:"plot"}),bgcolor:{valType:"color",dflt:Cge.lightLine,editType:"plot"},activecolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:Cge.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"}});var JU=ye((Xar,Pge)=>{"use strict";Pge.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}});var Dge=ye((Yar,Rge)=>{"use strict";var EI=Mr(),mgt=va(),ygt=Vs(),_gt=Zd(),Ige=MI(),$U=JU();Rge.exports=function(t,r,n,i,a){var o=t.rangeselector||{},s=ygt.newContainer(r,"rangeselector");function l(d,v){return EI.coerce(o,s,Ige,d,v)}var u=_gt(o,s,{name:"buttons",handleItemDefaults:xgt,calendar:a}),c=l("visible",u.length>0);if(c){var f=bgt(r,n,i);l("x",f[0]),l("y",f[1]),EI.noneOrAll(t,r,["x","y"]),l("xanchor"),l("yanchor"),EI.coerceFont(l,"font",n.font);var h=l("bgcolor");l("activecolor",mgt.contrast(h,$U.lightAmount,$U.darkAmount)),l("bordercolor"),l("borderwidth")}};function xgt(e,t,r,n){var i=n.calendar;function a(l,u){return EI.coerce(e,t,Ige.buttons,l,u)}var o=a("visible");if(o){var s=a("step");s!=="all"&&(i&&i!=="gregorian"&&(s==="month"||s==="year")?t.stepmode="backward":a("stepmode"),a("count")),a("label")}}function bgt(e,t,r){for(var n=r.filter(function(s){return t[s].anchor===e._id}),i=0,a=0;a{"use strict";var wgt=dq(),Tgt=Mr().titleCase;zge.exports=function(t,r){var n=t._name,i={};if(r.step==="all")i[n+".autorange"]=!0;else{var a=Agt(t,r);i[n+".range[0]"]=a[0],i[n+".range[1]"]=a[1]}return i};function Agt(e,t){var r=e.range,n=new Date(e.r2l(r[1])),i=t.step,a=wgt["utc"+Tgt(i)],o=t.count,s;switch(t.stepmode){case"backward":s=e.l2r(+a.offset(n,-o));break;case"todate":var l=a.offset(n,-o);s=e.l2r(+a.ceil(l));break}var u=r[1];return[s,u]}});var Gge=ye((Jar,Hge)=>{"use strict";var CI=xa(),Sgt=ba(),Mgt=Xu(),qge=va(),Vge=ao(),Iy=Mr(),Oge=Iy.strTranslate,kI=Pl(),Egt=af(),tV=Nh(),Bge=tV.LINE_SPACING,Nge=tV.FROM_TL,Uge=tV.FROM_BR,eV=JU(),kgt=Fge();Hge.exports=function(t){var r=t._fullLayout,n=r._infolayer.selectAll(".rangeselector").data(Cgt(t),Lgt);n.enter().append("g").classed("rangeselector",!0),n.exit().remove(),n.style({cursor:"pointer","pointer-events":"all"}),n.each(function(i){var a=CI.select(this),o=i,s=o.rangeselector,l=a.selectAll("g.button").data(Iy.filterVisible(s.buttons));l.enter().append("g").classed("button",!0),l.exit().remove(),l.each(function(u){var c=CI.select(this),f=kgt(o,u);u._isActive=Pgt(o,u,f),c.call(QU,s,u),c.call(Rgt,s,u,t),c.on("click",function(){t._dragged||Sgt.call("_guiRelayout",t,f)}),c.on("mouseover",function(){u._isHovered=!0,c.call(QU,s,u)}),c.on("mouseout",function(){u._isHovered=!1,c.call(QU,s,u)})}),zgt(t,l,s,o._name,a)})};function Cgt(e){for(var t=Egt.list(e,"x",!0),r=[],n=0;n{"use strict";jge.exports={moduleType:"component",name:"rangeselector",schema:{subplots:{xaxis:{rangeselector:MI()}}},layoutAttributes:MI(),handleDefaults:Dge(),draw:Gge()}});var Ju=ye(rV=>{"use strict";var Zge=no().extendFlat;rV.attributes=function(e,t){e=e||{},t=t||{};var r={valType:"info_array",editType:e.editType,items:[{valType:"number",min:0,max:1,editType:e.editType},{valType:"number",min:0,max:1,editType:e.editType}],dflt:[0,1]},n=e.name?e.name+" ":"",i=e.trace?"trace ":"subplot ",a=t.description?" "+t.description:"",o={x:Zge({},r,{}),y:Zge({},r,{}),editType:e.editType};return e.noGridCell||(o.row={valType:"integer",min:0,dflt:0,editType:e.editType},o.column={valType:"integer",min:0,dflt:0,editType:e.editType}),o};rV.defaults=function(e,t,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=t.grid;if(o){var s=r("domain.column");s!==void 0&&(s{"use strict";var Fgt=Mr(),qgt=n3().counter,Ogt=Ju().attributes,Xge=ad().idRegex,Bgt=Vs(),iV={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[qgt("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:Ogt({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function LI(e,t,r){var n=t[r+"axes"],i=Object.keys((e._splomAxes||{})[r]||{});if(Array.isArray(n))return n;if(i.length)return i}function Ngt(e,t){var r=e.grid||{},n=LI(t,r,"x"),i=LI(t,r,"y");if(!e.grid&&!n&&!i)return;var a=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),o=Array.isArray(n),s=Array.isArray(i),l=o&&n!==r.xaxes&&s&&i!==r.yaxes,u,c;a?(u=r.subplots.length,c=r.subplots[0].length):(s&&(u=i.length),o&&(c=n.length));var f=Bgt.newContainer(t,"grid");function h(_,C){return Fgt.coerce(r,f,iV,_,C)}var d=h("rows",u),v=h("columns",c);if(!(d*v>1)){delete t.grid;return}if(!a&&!o&&!s){var x=h("pattern")==="independent";x&&(a=!0)}f._hasSubplotGrid=a;var b=h("roworder"),p=b==="top to bottom",E=a?.2:.1,k=a?.3:.1,A,L;l&&t._splomGridDflt&&(A=t._splomGridDflt.xside,L=t._splomGridDflt.yside),f._domains={x:Yge("x",h,E,A,v),y:Yge("y",h,k,L,d,p)}}function Yge(e,t,r,n,i,a){var o=t(e+"gap",r),s=t("domain."+e);t(e+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h{"use strict";$ge.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc"}});var tme=ye((ror,eme)=>{"use strict";var Qge=uo(),Vgt=ba(),Hgt=Mr(),Ggt=Vs(),jgt=aV();eme.exports=function(e,t,r,n){var i="error_"+n.axis,a=Ggt.newContainer(t,i),o=e[i]||{};function s(v,x){return Hgt.coerce(o,a,jgt,v,x)}var l=o.array!==void 0||o.value!==void 0||o.type==="sqrt",u=s("visible",l);if(u!==!1){var c=s("type","array"in o?"data":"percent"),f=!0;c!=="sqrt"&&(f=s("symmetric",!((c==="data"?"arrayminus":"valueminus")in o))),c==="data"?(s("array"),s("traceref"),f||(s("arrayminus"),s("tracerefminus"))):(c==="percent"||c==="constant")&&(s("value"),f||s("valueminus"));var h="copy_"+n.inherit+"style";if(n.inherit){var d=t["error_"+n.inherit];(d||{}).visible&&s(h,!(o.color||Qge(o.thickness)||Qge(o.width)))}(!n.inherit||!a[h])&&(s("color",r),s("thickness"),s("width",Vgt.traceIs(t,"gl3d")?0:4))}}});var oV=ye((ior,ime)=>{"use strict";ime.exports=function(t){var r=t.type,n=t.symmetric;if(r==="data"){var i=t.array||[];if(n)return function(u,c){var f=+i[c];return[f,f]};var a=t.arrayminus||[];return function(u,c){var f=+i[c],h=+a[c];return!isNaN(f)||!isNaN(h)?[h||0,f||0]:[NaN,NaN]}}else{var o=rme(r,t.value),s=rme(r,t.valueminus);return n||t.valueminus===void 0?function(u){var c=o(u);return[c,c]}:function(u){return[s(u),o(u)]}}};function rme(e,t){if(e==="percent")return function(r){return Math.abs(r*t/100)};if(e==="constant")return function(){return Math.abs(t)};if(e==="sqrt")return function(r){return Math.sqrt(Math.abs(r))}}});var ome=ye((nor,ame)=>{"use strict";var sV=uo(),Wgt=ba(),lV=Qa(),Zgt=Mr(),Xgt=oV();ame.exports=function(t){for(var r=t.calcdata,n=0;n{"use strict";var sme=xa(),w_=uo(),Ygt=ao(),Kgt=lu();lme.exports=function(t,r,n,i){var a,o=n.xaxis,s=n.yaxis,l=i&&i.duration>0,u=t._context.staticPlot;r.each(function(c){var f=c[0].trace,h=f.error_x||{},d=f.error_y||{},v;f.ids&&(v=function(E){return E.id});var x=Kgt.hasMarkers(f)&&f.marker.maxdisplayed>0;!d.visible&&!h.visible&&(c=[]);var b=sme.select(this).selectAll("g.errorbar").data(c,v);if(b.exit().remove(),!!c.length){h.visible||b.selectAll("path.xerror").remove(),d.visible||b.selectAll("path.yerror").remove(),b.style("opacity",1);var p=b.enter().append("g").classed("errorbar",!0);l&&p.style("opacity",0).transition().duration(i.duration).style("opacity",1),Ygt.setClipUrl(b,n.layerClipId,t),b.each(function(E){var k=sme.select(this),A=Jgt(E,o,s);if(!(x&&!E.vis)){var L,_=k.select("path.yerror");if(d.visible&&w_(A.x)&&w_(A.yh)&&w_(A.ys)){var C=d.width;L="M"+(A.x-C)+","+A.yh+"h"+2*C+"m-"+C+",0V"+A.ys,A.noYS||(L+="m-"+C+",0h"+2*C),a=!_.size(),a?_=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("yerror",!0):l&&(_=_.transition().duration(i.duration).ease(i.easing)),_.attr("d",L)}else _.remove();var M=k.select("path.xerror");if(h.visible&&w_(A.y)&&w_(A.xh)&&w_(A.xs)){var g=(h.copy_ystyle?d:h).width;L="M"+A.xh+","+(A.y-g)+"v"+2*g+"m0,-"+g+"H"+A.xs,A.noXS||(L+="m0,-"+g+"v"+2*g),a=!M.size(),a?M=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("xerror",!0):l&&(M=M.transition().duration(i.duration).ease(i.easing)),M.attr("d",L)}else M.remove()}})}})};function Jgt(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};return e.yh!==void 0&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),w_(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0))),e.xh!==void 0&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),w_(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0))),n}});var hme=ye((oor,fme)=>{"use strict";var $gt=xa(),cme=va();fme.exports=function(t){t.each(function(r){var n=r[0].trace,i=n.error_y||{},a=n.error_x||{},o=$gt.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(cme.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(cme.stroke,a.color)})}});var pme=ye((sor,vme)=>{"use strict";var o4=Mr(),dme=Bu().overrideAll,s4=aV(),$b={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4)};delete $b.error_x.copy_zstyle;delete $b.error_y.copy_zstyle;delete $b.error_y.copy_ystyle;var l4={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4),error_z:o4.extendFlat({},s4)};delete l4.error_x.copy_ystyle;delete l4.error_y.copy_ystyle;delete l4.error_z.copy_ystyle;delete l4.error_z.copy_zstyle;vme.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:$b,bar:$b,histogram:$b,scatter3d:dme(l4,"calc","nested"),scattergl:dme($b,"calc","nested")}},supplyDefaults:tme(),calc:ome(),makeComputeError:oV(),plot:ume(),style:hme(),hoverInfo:Qgt};function Qgt(e,t,r){(t.error_y||{}).visible&&(r.yerr=e.yh-e.y,t.error_y.symmetric||(r.yerrneg=e.y-e.ys)),(t.error_x||{}).visible&&(r.xerr=e.xh-e.x,t.error_x.symmetric||(r.xerrneg=e.x-e.xs))}});var mme=ye((lor,gme)=>{"use strict";gme.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}});var Ame=ye((uor,Tme)=>{"use strict";var T_=xa(),uV=id(),II=Xu(),yme=ba(),Ry=Qa(),PI=gv(),B0=Mr(),Ug=B0.strTranslate,wme=no().extendFlat,cV=Tg(),Ng=ao(),fV=va(),emt=Mb(),tmt=Pl(),rmt=Dv().flipScale,imt=JM(),nmt=iI(),amt=Cd(),hV=Nh(),_me=hV.LINE_SPACING,xme=hV.FROM_TL,bme=hV.FROM_BR,Vc=mme().cn;function omt(e){var t=e._fullLayout,r=t._infolayer.selectAll("g."+Vc.colorbar).data(smt(e),function(n){return n._id});r.enter().append("g").attr("class",function(n){return n._id}).classed(Vc.colorbar,!0),r.each(function(n){var i=T_.select(this);B0.ensureSingle(i,"rect",Vc.cbbg),B0.ensureSingle(i,"g",Vc.cbfills),B0.ensureSingle(i,"g",Vc.cblines),B0.ensureSingle(i,"g",Vc.cbaxis,function(o){o.classed(Vc.crisp,!0)}),B0.ensureSingle(i,"g",Vc.cbtitleunshift,function(o){o.append("g").classed(Vc.cbtitle,!0)}),B0.ensureSingle(i,"rect",Vc.cboutline);var a=lmt(i,n,e);a&&a.then&&(e._promises||[]).push(a),e._context.edits.colorbarPosition&&umt(i,n,e)}),r.exit().each(function(n){II.autoMargin(e,n._id)}).remove(),r.order()}function smt(e){var t=e._fullLayout,r=e.calcdata,n=[],i,a,o,s;function l(k){return wme(k,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function u(){typeof s.calc=="function"?s.calc(e,o,i):(i._fillgradient=a.reversescale?rmt(a.colorscale):a.colorscale,i._zrange=[a[s.min],a[s.max]])}for(var c=0;c1){var Re=Math.pow(10,Math.floor(Math.log(me)/Math.LN10));ze*=Re*B0.roundUp(me/Re,[2,5,10]),(Math.abs(F.start)/F.size+1e-6)%1<2e-6&&(Ee.tick0=0)}Ee.dtick=ze}Ee.domain=n?[ie+v/A.h,ie+W-v/A.h]:[ie+d/A.w,ie+W-d/A.w],Ee.setScale(),e.attr("transform",Ug(Math.round(A.l),Math.round(A.t)));var ce=e.select("."+Vc.cbtitleunshift).attr("transform",Ug(-Math.round(A.l),-Math.round(A.t))),Ge=Ee.ticklabelposition,nt=Ee.title.font.size,ct=e.select("."+Vc.cbaxis),qt,rt=0,ot=0;function Rt(er,Ke){var xt={propContainer:Ee,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:k._dfltTitle.colorbar,containerGroup:e.select("."+Vc.cbtitle)},bt=er.charAt(0)==="h"?er.substr(1):"h"+er;e.selectAll("."+bt+",."+bt+"-math-group").remove(),emt.draw(r,er,wme(xt,Ke||{}))}function kt(){if(n&&Ae||!n&&!Ae){var er,Ke;M==="top"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie-W)+3+nt*.75),M==="bottom"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie)-3-nt*.25),M==="right"&&(Ke=v+A.t+ae*b+3+nt*.75,er=d+A.l+re*ie),Rt(Ee._id+"title",{attributes:{x:er,y:Ke,"text-anchor":n?"start":"middle"}})}}function Ct(){if(n&&!Ae||!n&&Ae){var er=Ee.position||0,Ke=Ee._offset+Ee._length/2,xt,bt;if(M==="right")bt=Ke,xt=A.l+re*er+10+nt*(Ee.showticklabels?1:.5);else if(xt=Ke,M==="bottom"&&(bt=A.t+ae*er+10+(Ge.indexOf("inside")===-1?Ee.tickfont.size:0)+(Ee.ticks!=="intside"&&t.ticklen||0)),M==="top"){var Lt=C.text.split("
").length;bt=A.t+ae*er+10-X-_me*nt*Lt}Rt((n?"h":"v")+Ee._id+"title",{avoid:{selection:T_.select(r).selectAll("g."+Ee._id+"tick"),side:M,offsetTop:n?0:A.t,offsetLeft:n?A.l:0,maxShift:n?k.width:k.height},attributes:{x:xt,y:bt,"text-anchor":"middle"},transform:{rotate:n?-90:0,offset:0}})}}function Yt(){if(!n&&!Ae||n&&Ae){var er=e.select("."+Vc.cbtitle),Ke=er.select("text"),xt=[-l/2,l/2],bt=er.select(".h"+Ee._id+"title-math-group").node(),Lt=15.6;Ke.node()&&(Lt=parseInt(Ke.node().style.fontSize,10)*_me);var St;if(bt?(St=Ng.bBox(bt),ot=St.width,rt=St.height,rt>Lt&&(xt[1]-=(rt-Lt)/2)):Ke.node()&&!Ke.classed(Vc.jsPlaceholder)&&(St=Ng.bBox(Ke.node()),ot=St.width,rt=St.height),n){if(rt){if(rt+=5,M==="top")Ee.domain[1]-=rt/A.h,xt[1]*=-1;else{Ee.domain[0]+=rt/A.h;var Et=tmt.lineCount(Ke);xt[1]+=(1-Et)*Lt}er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale()}}else ot&&(M==="right"&&(Ee.domain[0]+=(ot+nt/2)/A.w),er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale())}e.selectAll("."+Vc.cbfills+",."+Vc.cblines).attr("transform",n?Ug(0,Math.round(A.h*(1-Ee.domain[1]))):Ug(Math.round(A.w*Ee.domain[0]),0)),ct.attr("transform",n?Ug(0,Math.round(-A.t)):Ug(Math.round(-A.l),0));var dt=e.select("."+Vc.cbfills).selectAll("rect."+Vc.cbfill).attr("style","").data(V);dt.enter().append("rect").classed(Vc.cbfill,!0).attr("style",""),dt.exit().remove();var Ht=g.map(Ee.c2p).map(Math.round).sort(function(Or,Nr){return Or-Nr});dt.each(function(Or,Nr){var ut=[Nr===0?g[0]:(V[Nr]+V[Nr-1])/2,Nr===V.length-1?g[1]:(V[Nr]+V[Nr+1])/2].map(Ee.c2p).map(Math.round);n&&(ut[1]=B0.constrain(ut[1]+(ut[1]>ut[0])?1:-1,Ht[0],Ht[1]));var Ne=T_.select(this).attr(n?"x":"y",_e).attr(n?"y":"x",T_.min(ut)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(T_.max(ut)-T_.min(ut),2));if(t._fillgradient)Ng.gradient(Ne,r,t._id,n?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var Ye=T(Or).replace("e-","");Ne.attr("fill",uV(Ye).toHexString())}});var $t=e.select("."+Vc.cblines).selectAll("path."+Vc.cbline).data(_.color&&_.width?H:[]);$t.enter().append("path").classed(Vc.cbline,!0),$t.exit().remove(),$t.each(function(Or){var Nr=_e,ut=Math.round(Ee.c2p(Or))+_.width/2%1;T_.select(this).attr("d","M"+(n?Nr+","+ut:ut+","+Nr)+(n?"h":"v")+X).call(Ng.lineGroupStyle,_.width,P(Or),_.dash)}),ct.selectAll("g."+Ee._id+"tick,path").remove();var fr=_e+X+(l||0)/2-(t.ticks==="outside"?1:0),_r=Ry.calcTicks(Ee),Br=Ry.getTickSigns(Ee)[2];return Ry.drawTicks(r,Ee,{vals:Ee.ticks==="inside"?Ry.clipEnds(Ee,_r):_r,layer:ct,path:Ry.makeTickPath(Ee,fr,Br),transFn:Ry.makeTransTickFn(Ee)}),Ry.drawLabels(r,Ee,{vals:_r,layer:ct,transFn:Ry.makeTransTickLabelFn(Ee),labelFns:Ry.makeLabelFns(Ee,fr)})}function xr(){var er,Ke=X+l/2;Ge.indexOf("inside")===-1&&(er=Ng.bBox(ct.node()),Ke+=n?er.width:er.height),qt=ce.select("text");var xt=0,bt=n&&M==="top",Lt=!n&&M==="right",St=0;if(qt.node()&&!qt.classed(Vc.jsPlaceholder)){var Et,dt=ce.select(".h"+Ee._id+"title-math-group").node();dt&&(n&&Ae||!n&&!Ae)?(er=Ng.bBox(dt),xt=er.width,Et=er.height):(er=Ng.bBox(ce.node()),xt=er.right-A.l-(n?_e:Te),Et=er.bottom-A.t-(n?Te:_e),!n&&M==="top"&&(Ke+=er.height,St=er.height)),Lt&&(qt.attr("transform",Ug(xt/2+nt/2,0)),xt*=2),Ke=Math.max(Ke,n?xt:Et)}var Ht=(n?d:v)*2+Ke+u+l/2,$t=0;!n&&C.text&&h==="bottom"&&b<=0&&($t=Ht/2,Ht+=$t,St+=$t),k._hColorbarMoveTitle=$t,k._hColorbarMoveCBTitle=St;var fr=u+l,_r=(n?_e:Te)-fr/2-(n?d:0),Br=(n?Te:_e)-(n?N:v+St-$t);e.select("."+Vc.cbbg).attr("x",_r).attr("y",Br).attr(n?"width":"height",Math.max(Ht-$t,2)).attr(n?"height":"width",Math.max(N+fr,2)).call(fV.fill,c).call(fV.stroke,t.bordercolor).style("stroke-width",u);var Or=Lt?Math.max(xt-10,0):0;e.selectAll("."+Vc.cboutline).attr("x",(n?_e:Te+d)+Or).attr("y",(n?Te+v-N:_e)+(bt?rt:0)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(N-(n?2*v+rt:2*d+Or),2)).call(fV.stroke,t.outlinecolor).style({fill:"none","stroke-width":l});var Nr=n?Me*Ht:0,ut=n?0:(1-ke)*Ht-St;if(Nr=E?A.l-Nr:-Nr,ut=p?A.t-ut:-ut,e.attr("transform",Ug(Nr,ut)),!n&&(u||uV(c).getAlpha()&&!uV.equals(k.paper_bgcolor,c))){var Ne=ct.selectAll("text"),Ye=Ne[0].length,Ve=e.select("."+Vc.cbbg).node(),Xe=Ng.bBox(Ve),ht=Ng.getTranslate(e),Le=2;Ne.each(function(ri,bi){var nn=0,Wi=Ye-1;if(bi===nn||bi===Wi){var Ni=Ng.bBox(this),_n=Ng.getTranslate(this),$i;if(bi===Wi){var zn=Ni.right+_n.x,Wn=Xe.right+ht.x+Te-u-Le+x;$i=Wn-zn,$i>0&&($i=0)}else if(bi===nn){var It=Ni.left+_n.x,ft=Xe.left+ht.x+Te+u+Le;$i=ft-It,$i<0&&($i=0)}$i&&(Ye<3?this.setAttribute("transform","translate("+$i+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var xe={},Se=xme[f],lt=bme[f],Gt=xme[h],Vt=bme[h],ar=Ht-X;n?(a==="pixels"?(xe.y=b,xe.t=N*Gt,xe.b=N*Vt):(xe.t=xe.b=0,xe.yt=b+i*Gt,xe.yb=b-i*Vt),s==="pixels"?(xe.x=x,xe.l=Ht*Se,xe.r=Ht*lt):(xe.l=ar*Se,xe.r=ar*lt,xe.xl=x-o*Se,xe.xr=x+o*lt)):(a==="pixels"?(xe.x=x,xe.l=N*Se,xe.r=N*lt):(xe.l=xe.r=0,xe.xl=x+i*Se,xe.xr=x-i*lt),s==="pixels"?(xe.y=1-b,xe.t=Ht*Gt,xe.b=Ht*Vt):(xe.t=ar*Gt,xe.b=ar*Vt,xe.yt=b-o*Gt,xe.yb=b+o*Vt));var Qr=t.y<.5?"b":"t",ai=t.x<.5?"l":"r";r._fullLayout._reservedMargin[t._id]={};var jr={r:k.width-_r-Nr,l:_r+xe.r,b:k.height-Br-ut,t:Br+xe.b};E&&p?II.autoMargin(r,t._id,xe):E?r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]:p||n?r._fullLayout._reservedMargin[t._id][ai]=jr[ai]:r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]}return B0.syncOrAsync([II.previousPromises,kt,Yt,Ct,II.previousPromises,xr],r)}function umt(e,t,r){var n=t.orientation==="v",i=r._fullLayout,a=i._size,o,s,l;PI.init({element:e.node(),gd:r,prepFn:function(){o=e.attr("transform"),cV(e)},moveFn:function(u,c){e.attr("transform",o+Ug(u,c)),s=PI.align((n?t._uFrac:t._vFrac)+u/a.w,n?t._thickFrac:t._lenFrac,0,1,t.xanchor),l=PI.align((n?t._vFrac:1-t._uFrac)-c/a.h,n?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=PI.getCursor(s,l,t.xanchor,t.yanchor);cV(e,f)},doneFn:function(){if(cV(e),s!==void 0&&l!==void 0){var u={};u[t._propPrefix+"x"]=s,u[t._propPrefix+"y"]=l,t._traceIndex!==void 0?yme.call("_guiRestyle",r,u,t._traceIndex):yme.call("_guiRelayout",r,u)}}})}function cmt(e,t,r){var n=t._levels,i=[],a=[],o,s,l=n.end+n.size/100,u=n.size,c=1.001*r[0]-.001*r[1],f=1.001*r[1]-.001*r[0];for(s=0;s<1e5&&(o=n.start+s*u,!(u>0?o>=l:o<=l));s++)o>c&&o0?o>=l:o<=l));s++)o>r[0]&&o{"use strict";Sme.exports={moduleType:"component",name:"colorbar",attributes:K6(),supplyDefaults:SO(),draw:Ame().draw,hasColorbar:yO()}});var kme=ye((hor,Eme)=>{"use strict";Eme.exports={moduleType:"component",name:"legend",layoutAttributes:yB(),supplyLayoutDefaults:bB(),draw:RB(),style:CB()}});var Lme=ye((dor,Cme)=>{"use strict";Cme.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}});var Ime=ye((vor,Pme)=>{"use strict";Pme.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}});var vV=ye((por,Fme)=>{"use strict";var hmt=ba(),zme=Mr(),dV=zme.extendFlat,Rme=zme.extendDeep;function Dme(e){var t;switch(e){case"themes__thumb":t={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":t={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:t={}}return t}function dmt(e){var t=["xaxis","yaxis","zaxis"];return t.indexOf(e.slice(0,5))>-1}Fme.exports=function(t,r){var n,i=t.data,a=t.layout,o=Rme([],i),s=Rme({},a,Dme(r.tileClass)),l=t._context||{};if(r.width&&(s.width=r.width),r.height&&(s.height=r.height),r.tileClass==="thumbnail"||r.tileClass==="themes__thumb"){s.annotations=[];var u=Object.keys(s);for(n=0;n{"use strict";var vmt=vb().EventEmitter,pmt=ba(),gmt=Mr(),qme=Ly(),mmt=vV(),ymt=BP(),_mt=NP();function xmt(e,t){var r=new vmt,n=mmt(e,{format:"png"}),i=n.gd;i.style.position="absolute",i.style.left="-5000px",document.body.appendChild(i);function a(){var s=qme.getDelay(i._fullLayout);setTimeout(function(){var l=ymt(i),u=document.createElement("canvas");u.id=gmt.randstr(),r=_mt({format:t.format,width:i._fullLayout.width,height:i._fullLayout.height,canvas:u,emitter:r,svg:l}),r.clean=function(){i&&document.body.removeChild(i)}},s)}var o=qme.getRedrawFunc(i);return pmt.call("_doPlot",i,n.data,n.layout,n.config).then(o).then(a).catch(function(s){r.emit("error",s)}),r}Ome.exports=xmt});var Vme=ye((mor,Ume)=>{"use strict";var Nme=Ly(),bmt={getDelay:Nme.getDelay,getRedrawFunc:Nme.getRedrawFunc,clone:vV(),toSVG:BP(),svgToImg:NP(),toImage:Bme(),downloadImage:YN()};Ume.exports=bmt});var Gme=ye(Dy=>{"use strict";Dy.version=e6().version;iee();Wie();var wmt=ba(),u4=Dy.register=wmt.register,gV=hde(),Hme=Object.keys(gV);for(RI=0;RI{"use strict";jme.exports=Gme()});var Qb=ye((xor,Zme)=>{"use strict";Zme.exports={TEXTPAD:3,eventDataKeys:["value","label"]}});var Lm=ye((bor,Jme)=>{"use strict";var Tf=Uc(),Xme=Oc().axisHoverFormat,Tmt=Wo().hovertemplateAttrs,Amt=Wo().texttemplateAttrs,Kme=Jl(),Smt=Su(),Yme=Qb(),Mmt=Ed().pattern,e2=no().extendFlat,mV=Smt({editType:"calc",arrayOk:!0,colorEditType:"style"}),Emt=Tf.marker,kmt=Emt.line,Cmt=e2({},kmt.width,{dflt:0}),Lmt=e2({width:Cmt,editType:"calc"},Kme("marker.line")),Pmt=e2({line:Lmt,editType:"calc"},Kme("marker"),{opacity:{valType:"number",arrayOk:!0,dflt:1,min:0,max:1,editType:"style"},pattern:Mmt,cornerradius:{valType:"any",editType:"calc"}});Jme.exports={x:Tf.x,x0:Tf.x0,dx:Tf.dx,y:Tf.y,y0:Tf.y0,dy:Tf.dy,xperiod:Tf.xperiod,yperiod:Tf.yperiod,xperiod0:Tf.xperiod0,yperiod0:Tf.yperiod0,xperiodalignment:Tf.xperiodalignment,yperiodalignment:Tf.yperiodalignment,xhoverformat:Xme("x"),yhoverformat:Xme("y"),text:Tf.text,texttemplate:Amt({editType:"plot"},{keys:Yme.eventDataKeys}),hovertext:Tf.hovertext,hovertemplate:Tmt({},{keys:Yme.eventDataKeys}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},insidetextanchor:{valType:"enumerated",values:["end","middle","start"],dflt:"end",editType:"plot"},textangle:{valType:"angle",dflt:"auto",editType:"plot"},textfont:e2({},mV,{}),insidetextfont:e2({},mV,{}),outsidetextfont:e2({},mV,{}),constraintext:{valType:"enumerated",values:["inside","outside","both","none"],dflt:"both",editType:"calc"},cliponaxis:e2({},Tf.cliponaxis,{}),orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},base:{valType:"any",dflt:null,arrayOk:!0,editType:"calc"},offset:{valType:"number",dflt:null,arrayOk:!0,editType:"calc"},width:{valType:"number",dflt:null,min:0,arrayOk:!0,editType:"calc"},marker:Pmt,offsetgroup:Tf.offsetgroup,alignmentgroup:Tf.alignmentgroup,selected:{marker:{opacity:Tf.selected.marker.opacity,color:Tf.selected.marker.color,editType:"style"},textfont:Tf.selected.textfont,editType:"style"},unselected:{marker:{opacity:Tf.unselected.marker.opacity,color:Tf.unselected.marker.color,editType:"style"},textfont:Tf.unselected.textfont,editType:"style"},zorder:Tf.zorder}});var zI=ye((wor,$me)=>{"use strict";$me.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}});var FI=ye((Tor,tye)=>{"use strict";var Imt=va(),Qme=Dv().hasColorscale,eye=Uh(),Rmt=Mr().coercePattern;tye.exports=function(t,r,n,i,a){var o=n("marker.color",i),s=Qme(t,"marker");s&&eye(t,r,a,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",Imt.defaultLine),Qme(t,"marker.line")&&eye(t,r,a,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),Rmt(n,"marker.pattern",o,s),n("selected.marker.color"),n("unselected.marker.color")}});var r0=ye((Aor,sye)=>{"use strict";var rye=uo(),xT=Mr(),iye=va(),Dmt=ba(),zmt=K3(),Fmt=Pg(),qmt=FI(),Omt=Hb(),nye=Lm(),qI=xT.coerceFont;function Bmt(e,t,r,n){function i(u,c){return xT.coerce(e,t,nye,u,c)}var a=zmt(e,t,n,i);if(!a){t.visible=!1;return}Fmt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("zorder"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");oye(e,t,n,i,o,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),qmt(e,t,i,r,n);var s=(t.marker.line||{}).color,l=Dmt.getComponentMethod("errorbars","supplyDefaults");l(e,t,s||iye.defaultLine,{axis:"y"}),l(e,t,s||iye.defaultLine,{axis:"x",inherit:"y"}),xT.coerceSelectionMarkerOpacity(t,i)}function Nmt(e,t){var r,n;function i(s,l){return xT.coerce(n._input,n,nye,s,l)}for(var a=0;a=0)return e}else if(typeof e=="string"&&(e=e.trim(),e.slice(-1)==="%"&&rye(e.slice(0,-1))&&(e=+e.slice(0,-1),e>=0)))return e+"%"}function oye(e,t,r,n,i,a){a=a||{};var o=a.moduleHasSelected!==!1,s=a.moduleHasUnselected!==!1,l=a.moduleHasConstrain!==!1,u=a.moduleHasCliponaxis!==!1,c=a.moduleHasTextangle!==!1,f=a.moduleHasInsideanchor!==!1,h=!!a.hasPathbar,d=Array.isArray(i)||i==="auto",v=d||i==="inside",x=d||i==="outside";if(v||x){var b=qI(n,"textfont",r.font),p=xT.extendFlat({},b),E=e.textfont&&e.textfont.color,k=!E;if(k&&delete p.color,qI(n,"insidetextfont",p),h){var A=xT.extendFlat({},b);k&&delete A.color,qI(n,"pathbar.textfont",A)}x&&qI(n,"outsidetextfont",b),o&&n("selected.textfont.color"),s&&n("unselected.textfont.color"),l&&n("constraintext"),u&&n("cliponaxis"),c&&n("textangle"),n("texttemplate")}v&&f&&n("insidetextanchor")}sye.exports={supplyDefaults:Bmt,crossTraceDefaults:Nmt,handleText:oye,validateCornerradius:aye}});var yV=ye((Sor,lye)=>{"use strict";var Umt=ba(),Vmt=Qa(),Hmt=Mr(),Gmt=zI(),jmt=r0().validateCornerradius;lye.exports=function(e,t,r){function n(x,b){return Hmt.coerce(e,t,Gmt,x,b)}for(var i=!1,a=!1,o=!1,s={},l=n("barmode"),u=l==="group",c=0;c0&&!s[h]&&(o=!0),s[h]=!0),f.visible&&f.type==="histogram"){var d=Vmt.getFromId({_fullLayout:t},f[f.orientation==="v"?"xaxis":"yaxis"]);d.type!=="category"&&(a=!0)}}if(!i){delete t.barmode;return}l!=="overlay"&&n("barnorm"),n("bargap",a&&!o?0:.2),n("bargroupgap");var v=n("barcornerradius");t.barcornerradius=jmt(v)}});var c4=ye((Mor,uye)=>{"use strict";var bT=Mr();uye.exports=function(t,r){for(var n=0;n{"use strict";var cye=Qa(),fye=Rg(),hye=Dv().hasColorscale,dye=zv(),Wmt=c4(),Zmt=F0();vye.exports=function(t,r){var n=cye.getFromId(t,r.xaxis||"x"),i=cye.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f={msUTC:!!(r.base||r.base===0)};r.orientation==="h"?(a=n.makeCalcdata(r,"x",f),s=i.makeCalcdata(r,"y"),l=fye(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y",f),s=n.makeCalcdata(r,"x"),l=fye(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var h=Math.min(o.length,a.length),d=new Array(h),v=0;v{"use strict";var Xmt=xa(),Ymt=Mr();function Kmt(e,t,r){var n=e._fullLayout,i=n["_"+r+"Text_minsize"];if(i){var a=n.uniformtext.mode==="hide",o;switch(r){case"funnelarea":case"pie":case"sunburst":o="g.slice";break;case"treemap":case"icicle":o="g.slice, g.pathbar";break;default:o="g.points > g.point"}t.selectAll(o).each(function(s){var l=s.transform;if(l){l.scale=a&&l.hide?0:i/l.fontSize;var u=Xmt.select(this).select("text");Ymt.setTransormAndDisplay(u,l)}})}}function Jmt(e,t,r){if(r.uniformtext.mode){var n=gye(e),i=r.uniformtext.minsize,a=t.scale*t.fontSize;t.hide=a{"use strict";var Qmt=uo(),eyt=id(),yye=Mr().isArrayOrTypedArray;t2.coerceString=function(e,t,r){if(typeof t=="string"){if(t||!e.noBlank)return t}else if((typeof t=="number"||t===!0)&&!e.strict)return String(t);return r!==void 0?r:e.dflt};t2.coerceNumber=function(e,t,r){if(Qmt(t)){t=+t;var n=e.min,i=e.max,a=n!==void 0&&ti;if(!a)return t}return r!==void 0?r:e.dflt};t2.coerceColor=function(e,t,r){return eyt(t).isValid()?t:r!==void 0?r:e.dflt};t2.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),e.values.indexOf(t)!==-1?t:r!==void 0?r:e.dflt};t2.getValue=function(e,t){var r;return yye(e)?t{"use strict";var f4=xa(),tyt=va(),h4=ao(),_ye=Mr(),xye=ba(),bye=_v().resizeText,_V=Lm(),ryt=_V.textfont,iyt=_V.insidetextfont,nyt=_V.outsidetextfont,Jd=OI();function ayt(e){var t=f4.select(e).selectAll('g[class^="barlayer"]').selectAll("g.trace");bye(e,t,"bar");var r=t.size(),n=e._fullLayout;t.style("opacity",function(i){return i[0].trace.opacity}).each(function(i){(n.barmode==="stack"&&r>1||n.bargap===0&&n.bargroupgap===0&&!i[0].trace.marker.line.width)&&f4.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(i){var a=f4.select(this),o=i[0].trace;wye(a,o,e)}),xye.getComponentMethod("errorbars","style")(t)}function wye(e,t,r){h4.pointStyle(e.selectAll("path"),t,r),Tye(e,t,r)}function Tye(e,t,r){e.selectAll("text").each(function(n){var i=f4.select(this),a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));h4.font(i,a)})}function oyt(e,t,r){var n=t[0].trace;n.selectedpoints?syt(r,n,e):(wye(r,n,e),xye.getComponentMethod("errorbars","style")(r))}function syt(e,t,r){h4.selectedPointStyle(e.selectAll("path"),t),lyt(e.selectAll("text"),t,r)}function lyt(e,t,r){e.each(function(n){var i=f4.select(this),a;if(n.selected){a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));var o=t.selected.textfont&&t.selected.textfont.color;o&&(a.color=o),h4.font(i,a)}else h4.selectedTextStyle(i,t)})}function Aye(e,t,r,n){var i=n._fullLayout.font,a=r.textfont;if(e.classed("bartext-inside")){var o=kye(t,r);a=Mye(r,t.i,i,o)}else e.classed("bartext-outside")&&(a=Eye(r,t.i,i));return a}function Sye(e,t,r){return xV(ryt,e.textfont,t,r)}function Mye(e,t,r,n){var i=Sye(e,t,r),a=e._input.textfont===void 0||e._input.textfont.color===void 0||Array.isArray(e.textfont.color)&&e.textfont.color[t]===void 0;return a&&(i={color:tyt.contrast(n),family:i.family,size:i.size,weight:i.weight,style:i.style,variant:i.variant,textcase:i.textcase,lineposition:i.lineposition,shadow:i.shadow}),xV(iyt,e.insidetextfont,t,i)}function Eye(e,t,r){var n=Sye(e,t,r);return xV(nyt,e.outsidetextfont,t,n)}function xV(e,t,r,n){t=t||{};var i=Jd.getValue(t.family,r),a=Jd.getValue(t.size,r),o=Jd.getValue(t.color,r),s=Jd.getValue(t.weight,r),l=Jd.getValue(t.style,r),u=Jd.getValue(t.variant,r),c=Jd.getValue(t.textcase,r),f=Jd.getValue(t.lineposition,r),h=Jd.getValue(t.shadow,r);return{family:Jd.coerceString(e.family,i,n.family),size:Jd.coerceNumber(e.size,a,n.size),color:Jd.coerceColor(e.color,o,n.color),weight:Jd.coerceString(e.weight,s,n.weight),style:Jd.coerceString(e.style,l,n.style),variant:Jd.coerceString(e.variant,u,n.variant),textcase:Jd.coerceString(e.variant,c,n.textcase),lineposition:Jd.coerceString(e.variant,f,n.lineposition),shadow:Jd.coerceString(e.variant,h,n.shadow)}}function kye(e,t){return t.type==="waterfall"?t[e.dir].marker.color:e.mcc||e.mc||t.marker.color}Cye.exports={style:ayt,styleTextPoints:Tye,styleOnSelect:oyt,getInsideTextFont:Mye,getOutsideTextFont:Eye,getBarColor:kye,resizeText:bye}});var i2=ye((Por,qye)=>{"use strict";var BI=xa(),NI=uo(),Pd=Mr(),uyt=Pl(),cyt=va(),A_=ao(),fyt=ba(),UI=Qa().tickText,Lye=_v(),hyt=Lye.recordMinTextSize,dyt=Lye.clearMinTextSize,bV=N0(),wT=OI(),vyt=Qb(),Pye=Lm(),pyt=Pye.text,gyt=Pye.textposition,myt=rp().appendArrayPointValue,Uv=vyt.TEXTPAD;function yyt(e){return e.id}function _yt(e){if(e.ids)return yyt}function wV(e){return(e>0)-(e<0)}function Pm(e,t){return e0}function byt(e,t,r,n,i,a){var o=t.xaxis,s=t.yaxis,l=e._fullLayout,u=e._context.staticPlot;i||(i={mode:l.barmode,norm:l.barmode,gap:l.bargap,groupgap:l.bargroupgap},dyt("bar",l));var c=Pd.makeTraceGroups(n,r,"trace bars").each(function(f){var h=BI.select(this),d=f[0].trace,v=f[0].t,x=d.type==="waterfall",b=d.type==="funnel",p=d.type==="histogram",E=d.type==="bar",k=E||b,A=0;x&&d.connector.visible&&d.connector.mode==="between"&&(A=d.connector.line.width/2);var L=d.orientation==="h",_=Rye(i),C=Pd.ensureSingle(h,"g","points"),M=_yt(d),g=C.selectAll("g.point").data(Pd.identity,M);g.enter().append("g").classed("point",!0),g.exit().remove(),g.each(function(T,F){var q=BI.select(this),V=xyt(T,o,s,L),H=V[0][0],X=V[0][1],G=V[1][0],N=V[1][1],W=(L?X-H:N-G)===0;W&&k&&wT.getLineWidth(d,T)&&(W=!1),W||(W=!NI(H)||!NI(X)||!NI(G)||!NI(N)),T.isBlank=W,W&&(L?X=H:N=G),A&&!W&&(L?(H-=Pm(H,X)*A,X+=Pm(H,X)*A):(G-=Pm(G,N)*A,N+=Pm(G,N)*A));var re,ae;if(d.type==="waterfall"){if(!W){var _e=d[T.dir].marker;re=_e.line.width,ae=_e.color}}else re=wT.getLineWidth(d,T),ae=T.mc||d.marker.color;function Me(Ke){var xt=BI.round(re/2%1,2);return i.gap===0&&i.groupgap===0?BI.round(Math.round(Ke)-xt,2):Ke}function ke(Ke,xt,bt){return bt&&Ke===xt?Ke:Math.abs(Ke-xt)>=2?Me(Ke):Ke>xt?Math.ceil(Ke):Math.floor(Ke)}var ge=cyt.opacity(ae),ie=ge<1||re>.01?Me:ke;e._context.staticPlot||(H=ie(H,X,L),X=ie(X,H,L),G=ie(G,N,!L),N=ie(N,G,!L));var Te=L?o.c2p:s.c2p,Ee;T.s0>0?Ee=T._sMax:T.s0<0?Ee=T._sMin:Ee=T.s1>0?T._sMax:T._sMin;function Ae(Ke,xt){if(!Ke)return 0;var bt=Math.abs(L?N-G:X-H),Lt=Math.abs(L?X-H:N-G),St=ie(Math.abs(Te(Ee,!0)-Te(0,!0))),Et=T.hasB?Math.min(bt/2,Lt/2):Math.min(bt/2,St),dt;if(xt==="%"){var Ht=Math.min(50,Ke);dt=bt*(Ht/100)}else dt=Ke;return ie(Math.max(Math.min(dt,Et),0))}var ze=E||p?Ae(v.cornerradiusvalue,v.cornerradiusform):0,Ce,me,Re="M"+H+","+G+"V"+N+"H"+X+"V"+G+"Z",ce=0;if(ze&&T.s){var Ge=wV(T.s0)===0||wV(T.s)===wV(T.s0)?T.s1:T.s0;if(ce=ie(T.hasB?0:Math.abs(Te(Ee,!0)-Te(Ge,!0))),ce0?Math.sqrt(ce*(2*ze-ce)):0,Rt=nt>0?Math.max:Math.min;Ce="M"+H+","+G+"V"+(N-rt*ct)+"H"+Rt(X-(ze-ce)*nt,H)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct-ot)+"V"+(G+ze*ct+ot)+"A "+ze+","+ze+" 0 0 "+qt+" "+Rt(X-(ze-ce)*nt,H)+","+(G+rt*ct)+"Z"}else if(T.hasB)Ce="M"+(H+ze*nt)+","+G+"A "+ze+","+ze+" 0 0 "+qt+" "+H+","+(G+ze*ct)+"V"+(N-ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt)+","+N+"H"+(X-ze*nt)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct)+"V"+(G+ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-ze*nt)+","+G+"Z";else{me=Math.abs(N-G)+ce;var kt=me0?Math.sqrt(ce*(2*ze-ce)):0,Yt=ct>0?Math.max:Math.min;Ce="M"+(H+kt*nt)+","+G+"V"+Yt(N-(ze-ce)*ct,G)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt-Ct)+","+N+"H"+(X-ze*nt+Ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-kt*nt)+","+Yt(N-(ze-ce)*ct,G)+"V"+G+"Z"}}else Ce=Re}else Ce=Re;var xr=Iye(Pd.ensureSingle(q,"path"),l,i,a);if(xr.style("vector-effect",u?"none":"non-scaling-stroke").attr("d",isNaN((X-H)*(N-G))||W&&e._context.staticPlot?"M0,0Z":Ce).call(A_.setClipUrl,t.layerClipId,e),!l.uniformtext.mode&&_){var er=A_.makePointStyleFns(d);A_.singlePointStyle(T,xr,d,er,e)}wyt(e,t,q,f,F,H,X,G,N,ze,ce,i,a),t.layerClipId&&A_.hideOutsideRangePoint(T,q.select("text"),o,s,d.xcalendar,d.ycalendar)});var P=d.cliponaxis===!1;A_.setClipUrl(h,P?null:t.layerClipId,e)});fyt.getComponentMethod("errorbars","plot")(e,c,t,i)}function wyt(e,t,r,n,i,a,o,s,l,u,c,f,h){var d=t.xaxis,v=t.yaxis,x=e._fullLayout,b;function p(me,Re,ce){var Ge=Pd.ensureSingle(me,"text").text(Re).attr({class:"bartext bartext-"+b,"text-anchor":"middle","data-notex":1}).call(A_.font,ce).call(uyt.convertToTspans,e);return Ge}var E=n[0].trace,k=E.orientation==="h",A=Syt(x,n,i,d,v);b=Myt(E,i);var L=f.mode==="stack"||f.mode==="relative",_=n[i],C=!L||_._outmost,M=_.hasB,g=u&&u-c>Uv;if(!A||b==="none"||(_.isBlank||a===o||s===l)&&(b==="auto"||b==="inside")){r.select("text").remove();return}var P=x.font,T=bV.getBarColor(n[i],E),F=bV.getInsideTextFont(E,i,P,T),q=bV.getOutsideTextFont(E,i,P),V=E.insidetextanchor||"end",H=r.datum();k?d.type==="log"&&H.s0<=0&&(d.range[0]0&&Me>0,ie;g?M?ie=r2(N-2*u,W,_e,Me,k)||r2(N,W-2*u,_e,Me,k):k?ie=r2(N-(u-c),W,_e,Me,k)||r2(N,W-2*(u-c),_e,Me,k):ie=r2(N,W-(u-c),_e,Me,k)||r2(N-2*(u-c),W,_e,Me,k):ie=r2(N,W,_e,Me,k),ge&&ie?b="inside":(b="outside",re.remove(),re=null)}else b="inside";if(!re){ke=Pd.ensureUniformFontSize(e,b==="outside"?q:F),re=p(r,A,ke);var Te=re.attr("transform");if(re.attr("transform",""),ae=A_.bBox(re.node()),_e=ae.width,Me=ae.height,re.attr("transform",Te),_e<=0||Me<=0){re.remove();return}}var Ee=E.textangle,Ae,ze;b==="outside"?(ze=E.constraintext==="both"||E.constraintext==="outside",Ae=Ayt(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee})):(ze=E.constraintext==="both"||E.constraintext==="inside",Ae=Fye(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee,anchor:V,hasB:M,r:u,overhead:c})),Ae.fontSize=ke.size,hyt(E.type==="histogram"?"bar":E.type,Ae,x),_.transform=Ae;var Ce=Iye(re,x,f,h);Pd.setTransormAndDisplay(Ce,Ae)}function r2(e,t,r,n,i){if(e<0||t<0)return!1;var a=r<=e&&n<=t,o=r<=t&&n<=e,s=i?e>=r*(t/n):t>=n*(e/r);return a||o||s}function Dye(e){return e==="auto"?0:e}function zye(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:e.width*i+e.height*n,y:e.width*n+e.height*i}}function Fye(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor,c=u==="end",f=u==="start",h=a.leftToRight||0,d=(h+1)/2,v=1-d,x=a.hasB,b=a.r,p=a.overhead,E=i.width,k=i.height,A=Math.abs(t-e),L=Math.abs(n-r),_=A>2*Uv&&L>2*Uv?Uv:0;A-=2*_,L-=2*_;var C=Dye(l);l==="auto"&&!(E<=A&&k<=L)&&(E>A||k>L)&&(!(E>L||k>A)||EUv){var T=Tyt(e,t,r,n,M,b,p,o,x);g=T.scale,P=T.pad}else g=1,s&&(g=Math.min(1,A/M.x,L/M.y)),P=0;var F=i.left*v+i.right*d,q=(i.top+i.bottom)/2,V=(e+Uv)*v+(t-Uv)*d,H=(r+n)/2,X=0,G=0;if(f||c){var N=(o?M.x:M.y)/2;b&&(c||x)&&(_+=P);var W=o?Pm(e,t):Pm(r,n);o?f?(V=e+W*_,X=-W*N):(V=t-W*_,X=W*N):f?(H=r+W*_,G=-W*N):(H=n-W*_,G=W*N)}return{textX:F,textY:q,targetX:V,targetY:H,anchorX:X,anchorY:G,scale:g,rotate:C}}function Tyt(e,t,r,n,i,a,o,s,l){var u=Math.max(0,Math.abs(t-e)-2*Uv),c=Math.max(0,Math.abs(n-r)-2*Uv),f=a-Uv,h=o?f-Math.sqrt(f*f-(f-o)*(f-o)):f,d=l?f*2:s?f-o:2*h,v=l?f*2:s?2*h:f-o,x,b,p,E,k;return i.y/i.x>=c/(u-d)?E=c/i.y:i.y/i.x<=(c-v)/u?E=u/i.x:!l&&s?(x=i.x*i.x+i.y*i.y/4,b=-2*i.x*(u-f)-i.y*(c/2-f),p=(u-f)*(u-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):l?(x=(i.x*i.x+i.y*i.y)/4,b=-i.x*(u/2-f)-i.y*(c/2-f),p=(u/2-f)*(u/2-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):(x=i.x*i.x/4+i.y*i.y,b=-i.x*(u/2-f)-2*i.y*(c-f),p=(u/2-f)*(u/2-f)+(c-f)*(c-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)),E=Math.min(1,E),s?k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(c-i.y*E)/2)*(f-(c-i.y*E)/2)))-o):k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(u-i.x*E)/2)*(f-(u-i.x*E)/2)))-o),{scale:E,pad:k}}function Ayt(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=i.width,c=i.height,f=Math.abs(t-e),h=Math.abs(n-r),d;o?d=h>2*Uv?Uv:0:d=f>2*Uv?Uv:0;var v=1;s&&(v=o?Math.min(1,h/c):Math.min(1,f/u));var x=Dye(l),b=zye(i,x),p=(o?b.x:b.y)/2,E=(i.left+i.right)/2,k=(i.top+i.bottom)/2,A=(e+t)/2,L=(r+n)/2,_=0,C=0,M=o?Pm(t,e):Pm(r,n);return o?(A=t-M*d,_=M*p):(L=n+M*d,C=-M*p),{textX:E,textY:k,targetX:A,targetY:L,anchorX:_,anchorY:C,scale:v,rotate:x}}function Syt(e,t,r,n,i){var a=t[0].trace,o=a.texttemplate,s;return o?s=Eyt(e,t,r,n,i):a.textinfo?s=kyt(t,r,n,i):s=wT.getValue(a.text,r),wT.coerceString(pyt,s)}function Myt(e,t){var r=wT.getValue(e.textposition,t);return wT.coerceEnumerated(gyt,r)}function Eyt(e,t,r,n,i){var a=t[0].trace,o=Pd.castOption(a,r,"texttemplate");if(!o)return"";var s=a.type==="histogram",l=a.type==="waterfall",u=a.type==="funnel",c=a.orientation==="h",f,h,d,v;c?(f="y",h=i,d="x",v=n):(f="x",h=n,d="y",v=i);function x(_){return UI(h,h.c2l(_),!0).text}function b(_){return UI(v,v.c2l(_),!0).text}var p=t[r],E={};E.label=p.p,E.labelLabel=E[f+"Label"]=x(p.p);var k=Pd.castOption(a,p.i,"text");(k===0||k)&&(E.text=k),E.value=p.s,E.valueLabel=E[d+"Label"]=b(p.s);var A={};myt(A,a,p.i),(s||A.x===void 0)&&(A.x=c?E.value:E.label),(s||A.y===void 0)&&(A.y=c?E.label:E.value),(s||A.xLabel===void 0)&&(A.xLabel=c?E.valueLabel:E.labelLabel),(s||A.yLabel===void 0)&&(A.yLabel=c?E.labelLabel:E.valueLabel),l&&(E.delta=+p.rawS||p.s,E.deltaLabel=b(E.delta),E.final=p.v,E.finalLabel=b(E.final),E.initial=E.final-E.delta,E.initialLabel=b(E.initial)),u&&(E.value=p.s,E.valueLabel=b(E.value),E.percentInitial=p.begR,E.percentInitialLabel=Pd.formatPercent(p.begR),E.percentPrevious=p.difR,E.percentPreviousLabel=Pd.formatPercent(p.difR),E.percentTotal=p.sumR,E.percenTotalLabel=Pd.formatPercent(p.sumR));var L=Pd.castOption(a,p.i,"customdata");return L&&(E.customdata=L),Pd.texttemplateString(o,E,e._d3locale,A,E,a._meta||{})}function kyt(e,t,r,n){var i=e[0].trace,a=i.orientation==="h",o=i.type==="waterfall",s=i.type==="funnel";function l(L){var _=a?n:r;return UI(_,L,!0).text}function u(L){var _=a?r:n;return UI(_,+L,!0).text}var c=i.textinfo,f=e[t],h=c.split("+"),d=[],v,x=function(L){return h.indexOf(L)!==-1};if(x("label")&&d.push(l(e[t].p)),x("text")&&(v=Pd.castOption(i,f.i,"text"),(v===0||v)&&d.push(v)),o){var b=+f.rawS||f.s,p=f.v,E=p-b;x("initial")&&d.push(u(E)),x("delta")&&d.push(u(b)),x("final")&&d.push(u(p))}if(s){x("value")&&d.push(u(f.s));var k=0;x("percent initial")&&k++,x("percent previous")&&k++,x("percent total")&&k++;var A=k>1;x("percent initial")&&(v=Pd.formatPercent(f.begR),A&&(v+=" of initial"),d.push(v)),x("percent previous")&&(v=Pd.formatPercent(f.difR),A&&(v+=" of previous"),d.push(v)),x("percent total")&&(v=Pd.formatPercent(f.sumR),A&&(v+=" of total"),d.push(v))}return d.join("
")}qye.exports={plot:byt,toMoveInsideBar:Fye}});var TT=ye((Ior,Uye)=>{"use strict";var d4=Nc(),Cyt=ba(),Oye=va(),Lyt=Mr().fillText,Pyt=OI().getLineWidth,TV=Qa().hoverLabelText,Iyt=es().BADNUM;function Ryt(e,t,r,n,i){var a=Bye(e,t,r,n,i);if(a){var o=a.cd,s=o[0].trace,l=o[a.index];return a.color=Nye(s,l),Cyt.getComponentMethod("errorbars","hoverInfo")(l,s,a),[a]}}function Bye(e,t,r,n,i){var a=e.cd,o=a[0].trace,s=a[0].t,l=n==="closest",u=o.type==="waterfall",c=e.maxHoverDistance,f=e.maxSpikeDistance,h,d,v,x,b,p,E;o.orientation==="h"?(h=r,d=t,v="y",x="x",b=H,p=F):(h=t,d=r,v="x",x="y",p=H,b=F);var k=o[v+"period"],A=l||k;function L(ie){return C(ie,-1)}function _(ie){return C(ie,1)}function C(ie,Te){var Ee=ie.w;return ie[v]+Te*Ee/2}function M(ie){return ie[v+"End"]-ie[v+"Start"]}var g=l?L:k?function(ie){return ie.p-M(ie)/2}:function(ie){return Math.min(L(ie),ie.p-s.bardelta/2)},P=l?_:k?function(ie){return ie.p+M(ie)/2}:function(ie){return Math.max(_(ie),ie.p+s.bardelta/2)};function T(ie,Te,Ee){return i.finiteRange&&(Ee=0),d4.inbox(ie-h,Te-h,Ee+Math.min(1,Math.abs(Te-ie)/E)-1)}function F(ie){return T(g(ie),P(ie),c)}function q(ie){return T(L(ie),_(ie),f)}function V(ie){var Te=ie[x];if(u){var Ee=Math.abs(ie.rawS)||0;d>0?Te+=Ee:d<0&&(Te-=Ee)}return Te}function H(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,c+(Ae-Te)/(Ae-Ee)-1)}function X(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,f+(Ae-Te)/(Ae-Ee)-1)}var G=e[v+"a"],N=e[x+"a"];E=Math.abs(G.r2c(G.range[1])-G.r2c(G.range[0]));function W(ie){return(b(ie)+p(ie))/2}var re=d4.getDistanceFunction(n,b,p,W);if(d4.getClosest(a,re,e),e.index!==!1&&a[e.index].p!==Iyt){A||(g=function(ie){return Math.min(L(ie),ie.p-s.bargroupwidth/2)},P=function(ie){return Math.max(_(ie),ie.p+s.bargroupwidth/2)});var ae=e.index,_e=a[ae],Me=o.base?_e.b+_e.s:_e.s;e[x+"0"]=e[x+"1"]=N.c2p(_e[x],!0),e[x+"LabelVal"]=Me;var ke=s.extents[s.extents.round(_e.p)];e[v+"0"]=G.c2p(l?g(_e):ke[0],!0),e[v+"1"]=G.c2p(l?P(_e):ke[1],!0);var ge=_e.orig_p!==void 0;return e[v+"LabelVal"]=ge?_e.orig_p:_e.p,e.labelLabel=TV(G,e[v+"LabelVal"],o[v+"hoverformat"]),e.valueLabel=TV(N,e[x+"LabelVal"],o[x+"hoverformat"]),e.baseLabel=TV(N,_e.b,o[x+"hoverformat"]),e.spikeDistance=(X(_e)+q(_e))/2,e[v+"Spike"]=G.c2p(_e.p,!0),Lyt(_e,o,e),e.hovertemplate=o.hovertemplate,e}}function Nye(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,i=Pyt(e,t);if(Oye.opacity(r))return r;if(Oye.opacity(n)&&i)return n}Uye.exports={hoverPoints:Ryt,hoverOnBars:Bye,getTraceColor:Nye}});var Hye=ye((Ror,Vye)=>{"use strict";Vye.exports=function(t,r,n){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),n.orientation==="h"?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}});var AT=ye((Dor,Gye)=>{"use strict";Gye.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=n[0].trace,s=o.type==="funnel",l=o.orientation==="h",u=[],c;if(r===!1)for(c=0;c{"use strict";jye.exports={attributes:Lm(),layoutAttributes:zI(),supplyDefaults:r0().supplyDefaults,crossTraceDefaults:r0().crossTraceDefaults,supplyLayoutDefaults:yV(),calc:pye(),crossTraceCalc:Gb().crossTraceCalc,colorbar:Kd(),arraysToCalcdata:c4(),plot:i2().plot,style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:TT().hoverPoints,eventData:Hye(),selectPoints:AT(),moduleType:"trace",name:"bar",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}});var Xye=ye((For,Zye)=>{"use strict";Zye.exports=Wye()});var v4=ye((qor,$ye)=>{"use strict";var zyt=Eg(),U0=Uc(),Yye=Lm(),Fyt=dh(),Kye=Oc().axisHoverFormat,qyt=Wo().hovertemplateAttrs,zy=no().extendFlat,ST=U0.marker,Jye=ST.line;$ye.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:U0.xperiod,yperiod:U0.yperiod,xperiod0:U0.xperiod0,yperiod0:U0.yperiod0,xperiodalignment:U0.xperiodalignment,yperiodalignment:U0.yperiodalignment,xhoverformat:Kye("x"),yhoverformat:Kye("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},sdmultiple:{valType:"number",min:0,editType:"calc",dflt:1},sizemode:{valType:"enumerated",values:["quartiles","sd"],editType:"calc",dflt:"quartiles"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:zy({},ST.symbol,{arrayOk:!1,editType:"plot"}),opacity:zy({},ST.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:zy({},ST.angle,{arrayOk:!1,editType:"calc"}),size:zy({},ST.size,{arrayOk:!1,editType:"calc"}),color:zy({},ST.color,{arrayOk:!1,editType:"style"}),line:{color:zy({},Jye.color,{arrayOk:!1,dflt:Fyt.defaultLine,editType:"style"}),width:zy({},Jye.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:zyt(),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},showwhiskers:{valType:"boolean",editType:"calc"},offsetgroup:Yye.offsetgroup,alignmentgroup:Yye.alignmentgroup,selected:{marker:U0.selected.marker,editType:"style"},unselected:{marker:U0.unselected.marker,editType:"style"},text:zy({},U0.text,{}),hovertext:zy({},U0.hovertext,{}),hovertemplate:qyt({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"},zorder:U0.zorder}});var p4=ye((Oor,Qye)=>{"use strict";Qye.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}});var m4=ye((Bor,i1e)=>{"use strict";var V0=Mr(),Oyt=ba(),Byt=va(),Nyt=Pg(),Uyt=Hb(),e1e=L3(),g4=v4();function Vyt(e,t,r,n){function i(v,x){return V0.coerce(e,t,g4,v,x)}if(t1e(e,t,i,n),t.visible!==!1){Nyt(e,t,n,i),i("xhoverformat"),i("yhoverformat");var a=t._hasPreCompStats;a&&(i("lowerfence"),i("upperfence")),i("line.color",(e.marker||{}).color||r),i("line.width"),i("fillcolor",Byt.addOpacity(t.line.color,.5));var o=!1;if(a){var s=i("mean"),l=i("sd");s&&s.length&&(o=!0,l&&l.length&&(o="sd"))}i("whiskerwidth");var u=i("sizemode"),c;u==="quartiles"&&(c=i("boxmean",o)),i("showwhiskers",u==="quartiles"),(u==="sd"||c==="sd")&&i("sdmultiple"),i("width"),i("quartilemethod");var f=!1;if(a){var h=i("notchspan");h&&h.length&&(f=!0)}else V0.validate(e.notchwidth,g4.notchwidth)&&(f=!0);var d=i("notched",f);d&&i("notchwidth"),r1e(e,t,i,{prefix:"box"}),i("zorder")}}function t1e(e,t,r,n){function i(P){var T=0;return P&&P.length&&(T+=1,V0.isArrayOrTypedArray(P[0])&&P[0].length&&(T+=1)),T}function a(P){return V0.validate(e[P],g4[P])}var o=r("y"),s=r("x"),l;if(t.type==="box"){var u=r("q1"),c=r("median"),f=r("q3");t._hasPreCompStats=u&&u.length&&c&&c.length&&f&&f.length,l=Math.min(V0.minRowLength(u),V0.minRowLength(c),V0.minRowLength(f))}var h=i(o),d=i(s),v=h&&V0.minRowLength(o),x=d&&V0.minRowLength(s),b=n.calendar,p={autotypenumbers:n.autotypenumbers},E,k;if(t._hasPreCompStats)switch(String(d)+String(h)){case"00":var A=a("x0")||a("dx"),L=a("y0")||a("dy");L&&!A?E="h":E="v",k=l;break;case"10":E="v",k=Math.min(l,x);break;case"20":E="h",k=Math.min(l,s.length);break;case"01":E="h",k=Math.min(l,v);break;case"02":E="v",k=Math.min(l,o.length);break;case"12":E="v",k=Math.min(l,x,o.length);break;case"21":E="h",k=Math.min(l,s.length,v);break;case"11":k=0;break;case"22":var _=!1,C;for(C=0;C0?(E="v",d>0?k=Math.min(x,v):k=Math.min(v)):d>0?(E="h",k=Math.min(x)):k=0;if(!k){t.visible=!1;return}t._length=k;var M=r("orientation",E);t._hasPreCompStats?M==="v"&&d===0?(r("x0",0),r("dx",1)):M==="h"&&h===0&&(r("y0",0),r("dy",1)):M==="v"&&d===0?r("x0"):M==="h"&&h===0&&r("y0");var g=Oyt.getComponentMethod("calendars","handleTraceDefaults");g(e,t,["x","y"],n)}function r1e(e,t,r,n){var i=n.prefix,a=V0.coerce2(e,t,g4,"marker.outliercolor"),o=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(a||o)&&(s="suspectedoutliers");var l=r(i+"points",s);l?(r("jitter",l==="all"?.3:0),r("pointpos",l==="all"?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),l==="suspectedoutliers"&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var u=r("hoveron");(u==="all"||u.indexOf("points")!==-1)&&r("hovertemplate"),V0.coerceSelectionMarkerOpacity(t,r)}function Hyt(e,t){var r,n;function i(l){return V0.coerce(n._input,n,g4,l)}for(var a=0;a{"use strict";var Gyt=ba(),jyt=Mr(),Wyt=p4();function n1e(e,t,r,n,i){for(var a=i+"Layout",o=!1,s=0;s{"use strict";var SV=uo(),HI=Qa(),Xyt=Rg(),$f=Mr(),i0=es().BADNUM,Fy=$f._;v1e.exports=function(t,r){var n=t._fullLayout,i=HI.getFromId(t,r.xaxis||"x"),a=HI.getFromId(t,r.yaxis||"y"),o=[],s=r.type==="violin"?"_numViolins":"_numBoxes",l,u,c,f,h,d,v;r.orientation==="h"?(c=i,f="x",h=a,d="y",v=!!r.yperiodalignment):(c=a,f="y",h=i,d="x",v=!!r.xperiodalignment);var x=Yyt(r,d,h,n[s]),b=x[0],p=x[1],E=$f.distinctVals(b,h),k=E.vals,A=E.minDiff/2,L,_,C,M,g,P,T=(r.boxpoints||r.points)==="all"?$f.identity:function(qt){return qt.vL.uf};if(r._hasPreCompStats){var F=r[f],q=function(qt){return c.d2c((r[qt]||[])[l])},V=1/0,H=-1/0;for(l=0;l=L.q1&&L.q3>=L.med){var G=q("lowerfence");L.lf=G!==i0&&G<=L.q1?G:u1e(L,C,M);var N=q("upperfence");L.uf=N!==i0&&N>=L.q3?N:c1e(L,C,M);var W=q("mean");L.mean=W!==i0?W:M?$f.mean(C,M):(L.q1+L.q3)/2;var re=q("sd");L.sd=W!==i0&&re>=0?re:M?$f.stdev(C,M,L.mean):L.q3-L.q1,L.lo=f1e(L),L.uo=h1e(L);var ae=q("notchspan");ae=ae!==i0&&ae>0?ae:d1e(L,M),L.ln=L.med-ae,L.un=L.med+ae;var _e=L.lf,Me=L.uf;r.boxpoints&&C.length&&(_e=Math.min(_e,C[0]),Me=Math.max(Me,C[M-1])),r.notched&&(_e=Math.min(_e,L.ln),Me=Math.max(Me,L.un)),L.min=_e,L.max=Me}else{$f.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join(` +`));var ke;L.med!==i0?ke=L.med:L.q1!==i0?L.q3!==i0?ke=(L.q1+L.q3)/2:ke=L.q1:L.q3!==i0?ke=L.q3:ke=0,L.med=ke,L.q1=L.q3=ke,L.lf=L.uf=ke,L.mean=L.sd=ke,L.ln=L.un=ke,L.min=L.max=ke}V=Math.min(V,L.min),H=Math.max(H,L.max),L.pts2=_.filter(T),o.push(L)}}r._extremes[c._id]=HI.findExtremes(c,[V,H],{padded:!0})}else{var ge=c.makeCalcdata(r,f),ie=Kyt(k,A),Te=k.length,Ee=Jyt(Te);for(l=0;l=0&&Ae0){if(L={},L.pos=L[d]=k[l],_=L.pts=Ee[l].sort(s1e),C=L[f]=_.map(l1e),M=C.length,L.min=C[0],L.max=C[M-1],L.mean=$f.mean(C,M),L.sd=$f.stdev(C,M,L.mean)*r.sdmultiple,L.med=$f.interp(C,.5),M%2&&(Re||ce)){var Ge,nt;Re?(Ge=C.slice(0,M/2),nt=C.slice(M/2+1)):ce&&(Ge=C.slice(0,M/2+1),nt=C.slice(M/2)),L.q1=$f.interp(Ge,.5),L.q3=$f.interp(nt,.5)}else L.q1=$f.interp(C,.25),L.q3=$f.interp(C,.75);L.lf=u1e(L,C,M),L.uf=c1e(L,C,M),L.lo=f1e(L),L.uo=h1e(L);var ct=d1e(L,M);L.ln=L.med-ct,L.un=L.med+ct,ze=Math.min(ze,L.ln),Ce=Math.max(Ce,L.un),L.pts2=_.filter(T),o.push(L)}r.notched&&$f.isTypedArray(ge)&&(ge=Array.from(ge)),r._extremes[c._id]=HI.findExtremes(c,r.notched?ge.concat([ze,Ce]):ge,{padded:!0})}return $yt(o,r),o.length>0?(o[0].t={num:n[s],dPos:A,posLetter:d,valLetter:f,labels:{med:Fy(t,"median:"),min:Fy(t,"min:"),q1:Fy(t,"q1:"),q3:Fy(t,"q3:"),max:Fy(t,"max:"),mean:r.boxmean==="sd"||r.sizemode==="sd"?Fy(t,"mean \xB1 \u03C3:").replace("\u03C3",r.sdmultiple===1?"\u03C3":r.sdmultiple+"\u03C3"):Fy(t,"mean:"),lf:Fy(t,"lower fence:"),uf:Fy(t,"upper fence:")}},n[s]++,o):[{t:{empty:!0}}]};function Yyt(e,t,r,n){var i=t in e,a=t+"0"in e,o="d"+t in e;if(i||a&&o){var s=r.makeCalcdata(e,t),l=Xyt(e,r,t,s).vals;return[l,s]}var u;a?u=e[t+"0"]:"name"in e&&(r.type==="category"||SV(e.name)&&["linear","log"].indexOf(r.type)!==-1||$f.isDateTime(e.name)&&r.type==="date")?u=e.name:u=n;for(var c=r.type==="multicategory"?r.r2c_just_indices(u):r.d2c(u,0,e[t+"calendar"]),f=e._length,h=new Array(f),d=0;d{"use strict";var p1e=Qa(),Qyt=Mr(),e1t=Bb().getAxisGroup,g1e=["v","h"];function t1t(e,t){for(var r=e.calcdata,n=t.xaxis,i=t.yaxis,a=0;a1,E=1-a[e+"gap"],k=1-a[e+"groupgap"];for(l=0;l0;if(C==="positive"?(N=M*(_?1:.5),ae=re,W=ae=P):C==="negative"?(N=ae=P,W=M*(_?1:.5),_e=re):(N=W=M,ae=_e=re),Ee){var Ae=A.pointpos,ze=A.jitter,Ce=A.marker.size/2,me=0;Ae+ze>=0&&(me=re*(Ae+ze),me>N?(Te=!0,ge=Ce,Me=me):me>ae&&(ge=Ce,Me=N)),me<=N&&(Me=N);var Re=0;Ae-ze<=0&&(Re=-re*(Ae-ze),Re>W?(Te=!0,ie=Ce,ke=Re):Re>_e&&(ie=Ce,ke=W)),Re<=W&&(ke=W)}else Me=N,ke=W;var ce=new Array(c.length);for(u=0;u{"use strict";var MT=xa(),n2=Mr(),r1t=ao(),_1e=5,i1t=.01;function n1t(e,t,r,n){var i=e._context.staticPlot,a=t.xaxis,o=t.yaxis;n2.makeTraceGroups(n,r,"trace boxes").each(function(s){var l=MT.select(this),u=s[0],c=u.t,f=u.trace;if(c.wdPos=c.bdPos*f.whiskerwidth,f.visible!==!0||c.empty){l.remove();return}var h,d;f.orientation==="h"?(h=o,d=a):(h=a,d=o),x1e(l,{pos:h,val:d},f,c,i),b1e(l,{x:a,y:o},f,c),w1e(l,{pos:h,val:d},f,c)})}function x1e(e,t,r,n,i){var a=r.orientation==="h",o=t.val,s=t.pos,l=!!s.rangebreaks,u=n.bPos,c=n.wdPos||0,f=n.bPosPxOffset||0,h=r.whiskerwidth||0,d=r.showwhiskers!==!1,v=r.notched||!1,x=v?1-2*r.notchwidth:1,b,p;Array.isArray(n.bdPos)?(b=n.bdPos[0],p=n.bdPos[1]):(b=n.bdPos,p=n.bdPos);var E=e.selectAll("path.box").data(r.type!=="violin"||r.box.visible?n2.identity:[]);E.enter().append("path").style("vector-effect",i?"none":"non-scaling-stroke").attr("class","box"),E.exit().remove(),E.each(function(k){if(k.empty)return MT.select(this).attr("d","M0,0Z");var A=s.c2l(k.pos+u,!0),L=s.l2p(A-b)+f,_=s.l2p(A+p)+f,C=l?(L+_)/2:s.l2p(A)+f,M=r.whiskerwidth,g=l?L*M+(1-M)*C:s.l2p(A-c)+f,P=l?_*M+(1-M)*C:s.l2p(A+c)+f,T=s.l2p(A-b*x)+f,F=s.l2p(A+p*x)+f,q=r.sizemode==="sd",V=o.c2p(q?k.mean-k.sd:k.q1,!0),H=q?o.c2p(k.mean+k.sd,!0):o.c2p(k.q3,!0),X=n2.constrain(q?o.c2p(k.mean,!0):o.c2p(k.med,!0),Math.min(V,H)+1,Math.max(V,H)-1),G=k.lf===void 0||r.boxpoints===!1||q,N=o.c2p(G?k.min:k.lf,!0),W=o.c2p(G?k.max:k.uf,!0),re=o.c2p(k.ln,!0),ae=o.c2p(k.un,!0);a?MT.select(this).attr("d","M"+X+","+T+"V"+F+"M"+V+","+L+"V"+_+(v?"H"+re+"L"+X+","+F+"L"+ae+","+_:"")+"H"+H+"V"+L+(v?"H"+ae+"L"+X+","+T+"L"+re+","+L:"")+"Z"+(d?"M"+V+","+C+"H"+N+"M"+H+","+C+"H"+W+(h===0?"":"M"+N+","+g+"V"+P+"M"+W+","+g+"V"+P):"")):MT.select(this).attr("d","M"+T+","+X+"H"+F+"M"+L+","+V+"H"+_+(v?"V"+re+"L"+F+","+X+"L"+_+","+ae:"")+"V"+H+"H"+L+(v?"V"+ae+"L"+T+","+X+"L"+L+","+re:"")+"Z"+(d?"M"+C+","+V+"V"+N+"M"+C+","+H+"V"+W+(h===0?"":"M"+g+","+N+"H"+P+"M"+g+","+W+"H"+P):""))})}function b1e(e,t,r,n){var i=t.x,a=t.y,o=n.bdPos,s=n.bPos,l=r.boxpoints||r.points;n2.seedPseudoRandom();var u=function(h){return h.forEach(function(d){d.t=n,d.trace=r}),h},c=e.selectAll("g.points").data(l?u:[]);c.enter().append("g").attr("class","points"),c.exit().remove();var f=c.selectAll("path").data(function(h){var d,v=h.pts2,x=Math.max((h.max-h.min)/10,h.q3-h.q1),b=x*1e-9,p=x*i1t,E=[],k=0,A;if(r.jitter){if(x===0)for(k=1,E=new Array(v.length),d=0;dh.lo&&(P.so=!0)}return v});f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(r1t.translatePoints,i,a)}function w1e(e,t,r,n){var i=t.val,a=t.pos,o=!!a.rangebreaks,s=n.bPos,l=n.bPosPxOffset||0,u=r.boxmean||(r.meanline||{}).visible,c,f;Array.isArray(n.bdPos)?(c=n.bdPos[0],f=n.bdPos[1]):(c=n.bdPos,f=n.bdPos);var h=e.selectAll("path.mean").data(r.type==="box"&&r.boxmean||r.type==="violin"&&r.box.visible&&r.meanline.visible?n2.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each(function(d){var v=a.c2l(d.pos+s,!0),x=a.l2p(v-c)+l,b=a.l2p(v+f)+l,p=o?(x+b)/2:a.l2p(v)+l,E=i.c2p(d.mean,!0),k=i.c2p(d.mean-d.sd,!0),A=i.c2p(d.mean+d.sd,!0);r.orientation==="h"?MT.select(this).attr("d","M"+E+","+x+"V"+b+(u==="sd"?"m0,0L"+k+","+p+"L"+E+","+x+"L"+A+","+p+"Z":"")):MT.select(this).attr("d","M"+x+","+E+"H"+b+(u==="sd"?"m0,0L"+p+","+k+"L"+x+","+E+"L"+p+","+A+"Z":""))})}T1e.exports={plot:n1t,plotBoxAndWhiskers:x1e,plotPoints:b1e,plotBoxMean:w1e}});var WI=ye((Gor,A1e)=>{"use strict";var EV=xa(),kV=va(),CV=ao();function a1t(e,t,r){var n=r||EV.select(e).selectAll("g.trace.boxes");n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=EV.select(this),o=i[0].trace,s=o.line.width;function l(f,h,d,v){f.style("stroke-width",h+"px").call(kV.stroke,d).call(kV.fill,v)}var u=a.selectAll("path.box");if(o.type==="candlestick")u.each(function(f){if(!f.empty){var h=EV.select(this),d=o[f.dir];l(h,d.line.width,d.line.color,d.fillcolor),h.style("opacity",o.selectedpoints&&!f.selected?.3:1)}});else{l(u,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(kV.stroke,o.line.color);var c=a.selectAll("path.point");CV.pointStyle(c,o,e)}})}function o1t(e,t,r){var n=t[0].trace,i=r.selectAll("path.point");n.selectedpoints?CV.selectedPointStyle(i,n):CV.pointStyle(i,n,e)}A1e.exports={style:a1t,styleOnSelect:o1t}});var PV=ye((jor,k1e)=>{"use strict";var s1t=Qa(),LV=Mr(),S_=Nc(),S1e=va(),l1t=LV.fillText;function u1t(e,t,r,n){var i=e.cd,a=i[0].trace,o=a.hoveron,s=[],l;return o.indexOf("boxes")!==-1&&(s=s.concat(M1e(e,t,r,n))),o.indexOf("points")!==-1&&(l=E1e(e,t,r)),n==="closest"?l?[l]:s:(l&&s.push(l),s)}function M1e(e,t,r,n){var i=e.cd,a=e.xa,o=e.ya,s=i[0].trace,l=i[0].t,u=s.type==="violin",c,f,h,d,v,x,b,p,E,k,A,L=l.bdPos,_,C,M=l.wHover,g=function(Ce){return h.c2l(Ce.pos)+l.bPos-h.c2l(x)};u&&s.side!=="both"?(s.side==="positive"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me,me+M,k)},_=L,C=0),s.side==="negative"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me,k)},_=0,C=L)):(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me+M,k)},_=C=L);var P;u?P=function(Ce){return S_.inbox(Ce.span[0]-v,Ce.span[1]-v,k)}:P=function(Ce){return S_.inbox(Ce.min-v,Ce.max-v,k)},s.orientation==="h"?(v=t,x=r,b=P,p=E,c="y",h=o,f="x",d=a):(v=r,x=t,b=E,p=P,c="x",h=a,f="y",d=o);var T=Math.min(1,L/Math.abs(h.r2c(h.range[1])-h.r2c(h.range[0])));k=e.maxHoverDistance-T,A=e.maxSpikeDistance-T;function F(Ce){return(b(Ce)+p(Ce))/2}var q=S_.getDistanceFunction(n,b,p,F);if(S_.getClosest(i,q,e),e.index===!1)return[];var V=i[e.index],H=s.line.color,X=(s.marker||{}).color;S1e.opacity(H)&&s.line.width?e.color=H:S1e.opacity(X)&&s.boxpoints?e.color=X:e.color=s.fillcolor,e[c+"0"]=h.c2p(V.pos+l.bPos-C,!0),e[c+"1"]=h.c2p(V.pos+l.bPos+_,!0),e[c+"LabelVal"]=V.orig_p!==void 0?V.orig_p:V.pos;var G=c+"Spike";e.spikeDistance=F(V)*A/k,e[G]=h.c2p(V.pos,!0);var N=s.boxmean||s.sizemode==="sd"||(s.meanline||{}).visible,W=s.boxpoints||s.points,re=W&&N?["max","uf","q3","med","mean","q1","lf","min"]:W&&!N?["max","uf","q3","med","q1","lf","min"]:!W&&N?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],ae=d.range[1]{"use strict";C1e.exports=function(t,r){return r.hoverOnBox&&(t.hoverOnBox=r.hoverOnBox),"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var IV=ye((Zor,P1e)=>{"use strict";P1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l;if(r===!1)for(s=0;s{"use strict";I1e.exports={attributes:v4(),layoutAttributes:p4(),supplyDefaults:m4().supplyDefaults,crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:VI().supplyLayoutDefaults,calc:MV(),crossTraceCalc:GI().crossTraceCalc,plot:jI().plot,style:WI().style,styleOnSelect:WI().styleOnSelect,hoverPoints:PV().hoverPoints,eventData:L1e(),selectPoints:IV(),moduleType:"trace",name:"box",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","boxLayout","zoomScale"],meta:{}}});var z1e=ye((Yor,D1e)=>{"use strict";D1e.exports=R1e()});var ET=ye((Kor,F1e)=>{"use strict";var n0=Uc(),c1t=vl(),f1t=Su(),RV=Oc().axisHoverFormat,h1t=Wo().hovertemplateAttrs,d1t=Wo().texttemplateAttrs,v1t=Jl(),Pp=no().extendFlat;F1e.exports=Pp({z:{valType:"data_array",editType:"calc"},x:Pp({},n0.x,{impliedEdits:{xtype:"array"}}),x0:Pp({},n0.x0,{impliedEdits:{xtype:"scaled"}}),dx:Pp({},n0.dx,{impliedEdits:{xtype:"scaled"}}),y:Pp({},n0.y,{impliedEdits:{ytype:"array"}}),y0:Pp({},n0.y0,{impliedEdits:{ytype:"scaled"}}),dy:Pp({},n0.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:Pp({},n0.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:Pp({},n0.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:Pp({},n0.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:Pp({},n0.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:Pp({},n0.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:Pp({},n0.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:RV("x"),yhoverformat:RV("y"),zhoverformat:RV("z",1),hovertemplate:h1t(),texttemplate:d1t({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:f1t({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:Pp({},c1t.showlegend,{dflt:!1}),zorder:n0.zorder},v1t("",{cLetter:"z",autoColorDflt:!1}))});var XI=ye((Jor,O1e)=>{"use strict";var p1t=uo(),ZI=Mr(),g1t=ba();O1e.exports=function(t,r,n,i,a,o){var s=n("z");a=a||"x",o=o||"y";var l,u;if(s===void 0||!s.length)return 0;if(ZI.isArray1D(s)){l=n(a),u=n(o);var c=ZI.minRowLength(l),f=ZI.minRowLength(u);if(c===0||f===0)return 0;r._length=Math.min(c,f,s.length)}else{if(l=q1e(a,n),u=q1e(o,n),!m1t(s))return 0;n("transpose"),r._length=null}var h=g1t.getComponentMethod("calendars","handleTraceDefaults");return h(t,r,[a,o],i),!0};function q1e(e,t){var r=t(e),n=r?t(e+"type","array"):"scaled";return n==="scaled"&&(t(e+"0"),t("d"+e)),r}function m1t(e){for(var t=!0,r=!1,n=!1,i,a=0;a0&&(r=!0);for(var o=0;o{"use strict";var B1e=Mr();N1e.exports=function(t,r){t("texttemplate");var n=B1e.extendFlat({},r.font,{color:"auto",size:"auto"});B1e.coerceFont(t,"textfont",n)}});var DV=ye((Qor,U1e)=>{"use strict";U1e.exports=function(t,r,n){var i=n("zsmooth");i===!1&&(n("xgap"),n("ygap")),n("zhoverformat")}});var G1e=ye((esr,H1e)=>{"use strict";var V1e=Mr(),y1t=XI(),_1t=y4(),x1t=Pg(),b1t=DV(),w1t=Uh(),T1t=ET();H1e.exports=function(t,r,n,i){function a(s,l){return V1e.coerce(t,r,T1t,s,l)}var o=y1t(t,r,a,i);if(!o){r.visible=!1;return}x1t(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hovertemplate"),_1t(a,i),b1t(t,r,a,i),a("hoverongaps"),a("connectgaps",V1e.isArray1D(r.z)&&r.zsmooth!==!1),w1t(t,r,i,a,{prefix:"",cLetter:"z"}),a("zorder")}});var zV=ye((tsr,j1e)=>{"use strict";var kT=uo();j1e.exports={count:function(e,t,r){return r[e]++,1},sum:function(e,t,r,n){var i=n[t];return kT(i)?(i=Number(i),r[e]+=i,i):0},avg:function(e,t,r,n,i){var a=n[t];return kT(a)&&(a=Number(a),r[e]+=a,i[e]++),0},min:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]>i){var a=i-r[e];return r[e]=i,a}}else return r[e]=i,i;return 0},max:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]{"use strict";W1e.exports={percent:function(e,t){for(var r=e.length,n=100/t,i=0;i{"use strict";Z1e.exports=function(t,r){for(var n=t.length,i=0,a=0;a{"use strict";var CT=es(),a2=CT.ONEAVGYEAR,X1e=CT.ONEAVGMONTH,KI=CT.ONEDAY,Y1e=CT.ONEHOUR,K1e=CT.ONEMIN,J1e=CT.ONESEC,$1e=Qa().tickIncrement;t_e.exports=function(t,r,n,i,a){var o=-1.1*r,s=-.1*r,l=t-s,u=n[0],c=n[1],f=Math.min(YI(u+s,u+l,i,a),YI(c+s,c+l,i,a)),h=Math.min(YI(u+o,u+s,i,a),YI(c+o,c+s,i,a)),d,v;if(f>h&&hKI){var x=d===a2?1:6,b=d===a2?"M12":"M1";return function(p,E){var k=i.c2d(p,a2,a),A=k.indexOf("-",x);A>0&&(k=k.substr(0,A));var L=i.d2c(k,0,a);if(LJ1e?e>KI?e>a2*1.1?a2:e>X1e*1.1?X1e:KI:e>Y1e?Y1e:e>K1e?K1e:J1e:Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function A1t(e,t,r,n,i,a){if(n&&e>KI){var o=e_e(t,i,a),s=e_e(r,i,a),l=e===a2?0:1;return o[l]!==s[l]}return Math.floor(r/e)-Math.floor(t/e)>.1}function e_e(e,t,r){var n=t.c2d(e,a2,r).split("-");return n[0]===""&&(n.unshift(),n[0]="-"+n[0]),n}});var UV=ye((asr,n_e)=>{"use strict";var BV=uo(),Vv=Mr(),r_e=ba(),H0=Qa(),S1t=c4(),i_e=zV(),M1t=FV(),E1t=qV(),k1t=OV();function C1t(e,t){var r=[],n=[],i=t.orientation==="h",a=H0.getFromId(e,i?t.yaxis:t.xaxis),o=i?"y":"x",s={x:"y",y:"x"}[o],l=t[o+"calendar"],u=t.cumulative,c,f=NV(e,t,a,o),h=f[0],d=f[1],v=typeof h.size=="string",x=[],b=v?x:h,p=[],E=[],k=[],A=0,L=t.histnorm,_=t.histfunc,C=L.indexOf("density")!==-1,M,g,P;u.enabled&&C&&(L=L.replace(/ ?density$/,""),C=!1);var T=_==="max"||_==="min",F=T?null:0,q=i_e.count,V=M1t[L],H=!1,X=function(me){return a.r2c(me,0,l)},G;for(Vv.isArrayOrTypedArray(t[s])&&_!=="count"&&(G=t[s],H=_==="avg",q=i_e[_]),c=X(h.start),g=X(h.end)+(c-H0.tickIncrement(c,h.size,!1,l))/1e6;c=0&&P=Ae;c--)if(n[c]){ze=c;break}for(c=Ae;c<=ze;c++)if(BV(r[c])&&BV(n[c])){var Ce={p:r[c],s:n[c],b:0};u.enabled||(Ce.pts=k[c],ae?Ce.ph0=Ce.ph1=k[c].length?d[k[c][0]]:r[c]:(t._computePh=!0,Ce.ph0=ie(x[c]),Ce.ph1=ie(x[c+1],!0))),Ee.push(Ce)}return Ee.length===1&&(Ee[0].width1=H0.tickIncrement(Ee[0].p,h.size,!1,l)-Ee[0].p),S1t(Ee,t),Vv.isArrayOrTypedArray(t.selectedpoints)&&Vv.tagSelected(Ee,t,ke),Ee}function NV(e,t,r,n,i){var a=n+"bins",o=e._fullLayout,s=t["_"+n+"bingroup"],l=o._histogramBinOpts[s],u=o.barmode==="overlay",c,f,h,d,v,x,b,p=function(ge){return r.r2c(ge,0,d)},E=function(ge){return r.c2r(ge,0,d)},k=r.type==="date"?function(ge){return ge||ge===0?Vv.cleanDate(ge,null,d):null}:function(ge){return BV(ge)?Number(ge):null};function A(ge,ie,Te){ie[ge+"Found"]?(ie[ge]=k(ie[ge]),ie[ge]===null&&(ie[ge]=Te[ge])):(x[ge]=ie[ge]=Te[ge],Vv.nestedProperty(f[0],a+"."+ge).set(Te[ge]))}if(t["_"+n+"autoBinFinished"])delete t["_"+n+"autoBinFinished"];else{f=l.traces;var L=[],_=!0,C=!1,M=!1;for(c=0;cr.r2l(G)&&(W=H0.tickIncrement(W,l.size,!0,d)),q.start=r.l2r(W),X||Vv.nestedProperty(t,a+".start").set(q.start)}var re=l.end,ae=r.r2l(F.end),_e=ae!==void 0;if((l.endFound||_e)&&ae!==r.r2l(re)){var Me=_e?ae:Vv.aggNums(Math.max,null,v);q.end=r.l2r(Me),_e||Vv.nestedProperty(t,a+".start").set(q.end)}var ke="autobin"+n;return t._input[ke]===!1&&(t._input[a]=Vv.extendFlat({},t[a]||{}),delete t._input[ke],delete t[ke]),[q,v]}function L1t(e,t,r,n,i){var a=e._fullLayout,o=P1t(e,t),s=!1,l=1/0,u=[t],c,f,h;for(c=0;c=0;n--)s(n);else if(t==="increasing"){for(n=1;n=0;n--)e[n]+=e[n+1];r==="exclude"&&(e.push(0),e.shift())}}n_e.exports={calc:C1t,calcAllAutoBins:NV}});var h_e=ye((osr,f_e)=>{"use strict";var a_e=Mr(),LT=Qa(),o_e=zV(),R1t=FV(),D1t=qV(),z1t=OV(),s_e=UV().calcAllAutoBins;f_e.exports=function(t,r){var n=LT.getFromId(t,r.xaxis),i=LT.getFromId(t,r.yaxis),a=r.xcalendar,o=r.ycalendar,s=function(Et){return n.r2c(Et,0,a)},l=function(Et){return i.r2c(Et,0,o)},u=function(Et){return n.c2r(Et,0,a)},c=function(Et){return i.c2r(Et,0,o)},f,h,d,v,x=s_e(t,r,n,"x"),b=x[0],p=x[1],E=s_e(t,r,i,"y"),k=E[0],A=E[1],L=r._length;p.length>L&&p.splice(L,p.length-L),A.length>L&&A.splice(L,A.length-L);var _=[],C=[],M=[],g=typeof b.size=="string",P=typeof k.size=="string",T=[],F=[],q=g?T:b,V=P?F:k,H=0,X=[],G=[],N=r.histnorm,W=r.histfunc,re=N.indexOf("density")!==-1,ae=W==="max"||W==="min",_e=ae?null:0,Me=o_e.count,ke=R1t[N],ge=!1,ie=[],Te=[],Ee="z"in r?r.z:"marker"in r&&Array.isArray(r.marker.color)?r.marker.color:"";Ee&&W!=="count"&&(ge=W==="avg",Me=o_e[W]);var Ae=b.size,ze=s(b.start),Ce=s(b.end)+(ze-LT.tickIncrement(ze,Ae,!1,a))/1e6;for(f=ze;f=0&&d=0&&v{"use strict";var Im=Mr(),d_e=es().BADNUM,v_e=Rg();p_e.exports=function(t,r,n,i,a,o){var s=t._length,l=r.makeCalcdata(t,i),u=n.makeCalcdata(t,a);l=v_e(t,r,i,l).vals,u=v_e(t,n,a,u).vals;var c=t.text,f=c!==void 0&&Im.isArray1D(c),h=t.hovertext,d=h!==void 0&&Im.isArray1D(h),v,x,b=Im.distinctVals(l),p=b.vals,E=Im.distinctVals(u),k=E.vals,A=[],L,_,C=k.length,M=p.length;for(v=0;v{"use strict";var F1t=uo(),q1t=Mr(),$I=es().BADNUM;g_e.exports=function(t,r,n,i){var a,o,s,l,u,c;function f(p){if(F1t(p))return+p}if(r&&r.transpose){for(a=0,u=0;u{"use strict";var O1t=Mr(),m_e=.01,B1t=[[-1,0],[1,0],[0,-1],[0,1]];function N1t(e){return .5-.25*Math.min(1,e*.5)}__e.exports=function(t,r){var n=1,i;for(y_e(t,r),i=0;im_e;i++)n=y_e(t,r,N1t(n));return n>m_e&&O1t.log("interp2d didn't converge quickly",n),t};function y_e(e,t,r){var n=0,i,a,o,s,l,u,c,f,h,d,v,x,b;for(s=0;sx&&(n=Math.max(n,Math.abs(e[a][o]-v)/(b-x))))}return n}});var t8=ye((csr,x_e)=>{"use strict";var U1t=Mr().maxRowLength;x_e.exports=function(t){var r=[],n={},i=[],a=t[0],o=[],s=[0,0,0],l=U1t(t),u,c,f,h,d,v,x,b;for(c=0;c=0;d--)h=i[d],c=h[0],f=h[1],v=((n[[c-1,f]]||s)[2]+(n[[c+1,f]]||s)[2]+(n[[c,f-1]]||s)[2]+(n[[c,f+1]]||s)[2])/20,v&&(x[h]=[c,f,v],i.splice(d,1),b=!0);if(!b)throw"findEmpties iterated with no new neighbors";for(h in x)n[h]=x[h],r.push(x[h])}return r.sort(function(p,E){return E[2]-p[2]})}});var VV=ye((fsr,T_e)=>{"use strict";var b_e=ba(),w_e=Mr().isArrayOrTypedArray;T_e.exports=function(t,r,n,i,a,o){var s=[],l=b_e.traceIs(t,"contour"),u=b_e.traceIs(t,"histogram"),c,f,h,d=w_e(r)&&r.length>1;if(d&&!u&&o.type!=="category"){var v=r.length;if(v<=a){if(l)s=Array.from(r).slice(0,a);else if(a===1)o.type==="log"?s=[.5*r[0],2*r[0]]:s=[r[0]-.5,r[0]+.5];else if(o.type==="log"){for(s=[Math.pow(r[0],1.5)/Math.pow(r[1],.5)],h=1;h{"use strict";var A_e=ba(),HV=Mr(),r8=Qa(),S_e=Rg(),V1t=h_e(),H1t=zv(),G1t=JI(),j1t=QI(),W1t=e8(),Z1t=t8(),i8=VV(),GV=es().BADNUM;E_e.exports=function(t,r){var n=r8.getFromId(t,r.xaxis||"x"),i=r8.getFromId(t,r.yaxis||"y"),a=A_e.traceIs(r,"contour"),o=A_e.traceIs(r,"histogram"),s=a?"best":r.zsmooth,l,u,c,f,h,d,v,x,b,p,E;if(n._minDtick=0,i._minDtick=0,o)E=V1t(t,r),f=E.orig_x,l=E.x,u=E.x0,c=E.dx,x=E.orig_y,h=E.y,d=E.y0,v=E.dy,b=E.z;else{var k=r.z;HV.isArray1D(k)?(G1t(r,n,i,"x","y",["z"]),l=r._x,h=r._y,k=r._z):(f=r.x?n.makeCalcdata(r,"x"):[],x=r.y?i.makeCalcdata(r,"y"):[],l=S_e(r,n,"x",f).vals,h=S_e(r,i,"y",x).vals,r._x=l,r._y=h),u=r.x0,c=r.dx,d=r.y0,v=r.dy,b=j1t(k,r,n,i)}(n.rangebreaks||i.rangebreaks)&&(b=X1t(l,h,b),o||(l=M_e(l),h=M_e(h),r._x=l,r._y=h)),!o&&(a||r.connectgaps)&&(r._emptypoints=Z1t(b),W1t(b,r._emptypoints));function A(q){s=r._input.zsmooth=r.zsmooth=!1,HV.warn('cannot use zsmooth: "fast": '+q)}function L(q){if(q.length>1){var V=(q[q.length-1]-q[0])/(q.length-1),H=Math.abs(V/100);for(p=0;pH)return!1}return!0}r._islinear=!1,n.type==="log"||i.type==="log"?s==="fast"&&A("log axis found"):L(l)?L(h)?r._islinear=!0:s==="fast"&&A("y scale is not linear"):s==="fast"&&A("x scale is not linear");var _=HV.maxRowLength(b),C=r.xtype==="scaled"?"":l,M=i8(r,C,u,c,_,n),g=r.ytype==="scaled"?"":h,P=i8(r,g,d,v,b.length,i);r._extremes[n._id]=r8.findExtremes(n,M),r._extremes[i._id]=r8.findExtremes(i,P);var T={x:M,y:P,z:b,text:r._text||r.text,hovertext:r._hovertext||r.hovertext};if(r.xperiodalignment&&f&&(T.orig_x=f),r.yperiodalignment&&x&&(T.orig_y=x),C&&C.length===M.length-1&&(T.xCenter=C),g&&g.length===P.length-1&&(T.yCenter=g),o&&(T.xRanges=E.xRanges,T.yRanges=E.yRanges,T.pts=E.pts),a||H1t(t,r,{vals:b,cLetter:"z"}),a&&r.contours&&r.contours.coloring==="heatmap"){var F={type:r.type==="contour"?"heatmap":"histogram2d",xcalendar:r.xcalendar,ycalendar:r.ycalendar};T.xfill=i8(F,C,u,c,_,n),T.yfill=i8(F,g,d,v,b.length,i)}return[T]};function M_e(e){for(var t=[],r=e.length,n=0;n{"use strict";a8.CSS_DECLARATIONS=[["image-rendering","optimizeSpeed"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-crisp-edges"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","optimize-contrast"],["image-rendering","crisp-edges"],["image-rendering","pixelated"]];a8.STYLE=a8.CSS_DECLARATIONS.map(function(e){return e.join(": ")+"; "}).join("")});var jV=ye((vsr,L_e)=>{"use strict";var k_e=o8(),Y1t=ao(),C_e=Mr(),PT=null;function K1t(){if(PT!==null)return PT;PT=!1;var e=C_e.isSafari()||C_e.isIOS();if(window.navigator.userAgent&&!e){var t=Array.from(k_e.CSS_DECLARATIONS).reverse(),r=window.CSS&&window.CSS.supports||window.supportsCSS;if(typeof r=="function")PT=t.some(function(o){return r.apply(null,o)});else{var n=Y1t.tester.append("image").attr("style",k_e.STYLE),i=window.getComputedStyle(n.node()),a=i.imageRendering;PT=t.some(function(o){var s=o[1];return a===s||a===s.toLowerCase()}),n.remove()}}return PT}L_e.exports=K1t});var s8=ye((psr,B_e)=>{"use strict";var P_e=xa(),J1t=id(),$1t=ba(),Q1t=ao(),e_t=Qa(),G0=Mr(),I_e=Pl(),t_t=$P(),r_t=va(),i_t=Mu().extractOpts,n_t=Mu().makeColorScaleFuncFromTrace,a_t=Zp(),o_t=Nh(),WV=o_t.LINE_SPACING,s_t=jV(),l_t=o8().STYLE,q_e="heatmap-label";function O_e(e){return e.selectAll("g."+q_e)}function R_e(e){O_e(e).remove()}B_e.exports=function(e,t,r,n){var i=t.xaxis,a=t.yaxis;G0.makeTraceGroups(n,r,"hm").each(function(o){var s=P_e.select(this),l=o[0],u=l.trace,c=u.xgap||0,f=u.ygap||0,h=l.z,d=l.x,v=l.y,x=l.xCenter,b=l.yCenter,p=$1t.traceIs(u,"contour"),E=p?"best":u.zsmooth,k=h.length,A=G0.maxRowLength(h),L=!1,_=!1,C,M,g,P,T,F,q,V;for(F=0;C===void 0&&F0;)M=i.c2p(d[F]),F--;for(M0;)T=a.c2p(v[F]),F--;T=i._length||M<=0||P>=a._length||T<=0;if(W){var re=s.selectAll("image").data([]);re.exit().remove(),R_e(s);return}var ae,_e;H==="fast"?(ae=A,_e=k):(ae=G,_e=N);var Me=document.createElement("canvas");Me.width=ae,Me.height=_e;var ke=Me.getContext("2d",{willReadFrequently:!0}),ge=n_t(u,{noNumericCheck:!0,returnArray:!0}),ie,Te;H==="fast"?(ie=L?function(Pi){return A-1-Pi}:G0.identity,Te=_?function(Pi){return k-1-Pi}:G0.identity):(ie=function(Pi){return G0.constrain(Math.round(i.c2p(d[Pi])-C),0,G)},Te=function(Pi){return G0.constrain(Math.round(a.c2p(v[Pi])-P),0,N)});var Ee=Te(0),Ae=[Ee,Ee],ze=L?0:1,Ce=_?0:1,me=0,Re=0,ce=0,Ge=0,nt,ct,qt,rt,ot;function Rt(Pi,Gi){if(Pi!==void 0){var Ki=ge(Pi);return Ki[0]=Math.round(Ki[0]),Ki[1]=Math.round(Ki[1]),Ki[2]=Math.round(Ki[2]),me+=Gi,Re+=Ki[0]*Gi,ce+=Ki[1]*Gi,Ge+=Ki[2]*Gi,Ki}return[0,0,0,0]}function kt(Pi,Gi,Ki,ka){var jn=Pi[Ki.bin0];if(jn===void 0)return Rt(void 0,1);var la=Pi[Ki.bin1],Fa=Gi[Ki.bin0],Ra=Gi[Ki.bin1],jo=la-jn||0,oa=Fa-jn||0,Sn;return la===void 0?Ra===void 0?Sn=0:Fa===void 0?Sn=2*(Ra-jn):Sn=(2*Ra-Fa-jn)*2/3:Ra===void 0?Fa===void 0?Sn=0:Sn=(2*jn-la-Fa)*2/3:Fa===void 0?Sn=(2*Ra-la-jn)*2/3:Sn=Ra+jn-la-Fa,Rt(jn+Ki.frac*jo+ka.frac*(oa+Ki.frac*Sn))}if(H!=="default"){var Ct=0,Yt;try{Yt=new Uint8Array(ae*_e*4)}catch(Pi){Yt=new Array(ae*_e*4)}if(H==="smooth"){var xr=x||d,er=b||v,Ke=new Array(xr.length),xt=new Array(er.length),bt=new Array(G),Lt=x?z_e:D_e,St=b?z_e:D_e,Et,dt,Ht;for(F=0;Far||ar>a._length))for(q=Se;qai||ai>i._length)){var jr=t_t({x:Qr,y:Vt},u,e._fullLayout);jr.x=Qr,jr.y=Vt;var ri=l.z[F][q];ri===void 0?(jr.z="",jr.zLabel=""):(jr.z=ri,jr.zLabel=e_t.tickText(Ve,ri,"hover").text);var bi=l.text&&l.text[F]&&l.text[F][q];(bi===void 0||bi===!1)&&(bi=""),jr.text=bi;var nn=G0.texttemplateString(Ne,jr,e._fullLayout._d3locale,jr,u._meta||{});if(nn){var Wi=nn.split("
"),Ni=Wi.length,_n=0;for(V=0;V{"use strict";N_e.exports={min:"zmin",max:"zmax"}});var l8=ye((msr,U_e)=>{"use strict";var u_t=xa();U_e.exports=function(t){u_t.select(t).selectAll(".hm image").style("opacity",function(r){return r.trace.opacity})}});var c8=ye((ysr,H_e)=>{"use strict";var V_e=Nc(),_4=Mr(),u8=_4.isArrayOrTypedArray,c_t=Qa(),f_t=Mu().extractOpts;H_e.exports=function(t,r,n,i,a){a||(a={});var o=a.isContour,s=t.cd[0],l=s.trace,u=t.xa,c=t.ya,f=s.x,h=s.y,d=s.z,v=s.xCenter,x=s.yCenter,b=s.zmask,p=l.zhoverformat,E=f,k=h,A,L,_,C;if(t.index!==!1){try{_=Math.round(t.index[1]),C=Math.round(t.index[0])}catch(re){_4.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index);return}if(_<0||_>=d[0].length||C<0||C>d.length)return}else{if(V_e.inbox(r-f[0],r-f[f.length-1],0)>0||V_e.inbox(n-h[0],n-h[h.length-1],0)>0)return;if(o){var M;for(E=[2*f[0]-f[1]],M=1;M{"use strict";G_e.exports={attributes:ET(),supplyDefaults:G1e(),calc:n8(),plot:s8(),colorbar:M_(),style:l8(),hoverPoints:c8(),moduleType:"trace",name:"heatmap",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}});var Z_e=ye((xsr,W_e)=>{"use strict";W_e.exports=j_e()});var ZV=ye((bsr,X_e)=>{"use strict";X_e.exports=function(t,r){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}});var K_e=ye((wsr,Y_e)=>{"use strict";Y_e.exports={eventDataKeys:["binNumber"]}});var f8=ye((Tsr,Q_e)=>{"use strict";var Ip=Lm(),J_e=Oc().axisHoverFormat,h_t=Wo().hovertemplateAttrs,d_t=Wo().texttemplateAttrs,XV=Su(),$_e=ZV(),v_t=K_e(),YV=no().extendFlat;Q_e.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},xhoverformat:J_e("x"),yhoverformat:J_e("y"),text:YV({},Ip.text,{}),hovertext:YV({},Ip.hovertext,{}),orientation:Ip.orientation,histfunc:{valType:"enumerated",values:["count","sum","avg","min","max"],dflt:"count",editType:"calc"},histnorm:{valType:"enumerated",values:["","percent","probability","density","probability density"],dflt:"",editType:"calc"},cumulative:{enabled:{valType:"boolean",dflt:!1,editType:"calc"},direction:{valType:"enumerated",values:["increasing","decreasing"],dflt:"increasing",editType:"calc"},currentbin:{valType:"enumerated",values:["include","exclude","half"],dflt:"include",editType:"calc"},editType:"calc"},nbinsx:{valType:"integer",min:0,dflt:0,editType:"calc"},xbins:$_e("x",!0),nbinsy:{valType:"integer",min:0,dflt:0,editType:"calc"},ybins:$_e("y",!0),autobinx:{valType:"boolean",dflt:null,editType:"calc"},autobiny:{valType:"boolean",dflt:null,editType:"calc"},bingroup:{valType:"string",dflt:"",editType:"calc"},hovertemplate:h_t({},{keys:v_t.eventDataKeys}),texttemplate:d_t({arrayOk:!1,editType:"plot"},{keys:["label","value"]}),textposition:YV({},Ip.textposition,{arrayOk:!1}),textfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),outsidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextanchor:Ip.insidetextanchor,textangle:Ip.textangle,cliponaxis:Ip.cliponaxis,constraintext:Ip.constraintext,marker:Ip.marker,offsetgroup:Ip.offsetgroup,alignmentgroup:Ip.alignmentgroup,selected:Ip.selected,unselected:Ip.unselected,zorder:Ip.zorder}});var ixe=ye((Asr,rxe)=>{"use strict";var exe=ba(),x4=Mr(),txe=va(),p_t=r0().handleText,g_t=FI(),m_t=f8();rxe.exports=function(t,r,n,i){function a(E,k){return x4.coerce(t,r,m_t,E,k)}var o=a("x"),s=a("y"),l=a("cumulative.enabled");l&&(a("cumulative.direction"),a("cumulative.currentbin")),a("text");var u=a("textposition");p_t(t,r,i,a,u,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat");var c=a("orientation",s&&!o?"h":"v"),f=c==="v"?"x":"y",h=c==="v"?"y":"x",d=o&&s?Math.min(x4.minRowLength(o)&&x4.minRowLength(s)):x4.minRowLength(r[f]||[]);if(!d){r.visible=!1;return}r._length=d;var v=exe.getComponentMethod("calendars","handleTraceDefaults");v(t,r,["x","y"],i);var x=r[h];x&&a("histfunc"),a("histnorm"),a("autobin"+f),g_t(t,r,a,n,i),x4.coerceSelectionMarkerOpacity(r,a);var b=(r.marker.line||{}).color,p=exe.getComponentMethod("errorbars","supplyDefaults");p(t,r,b||txe.defaultLine,{axis:"y"}),p(t,r,b||txe.defaultLine,{axis:"x",inherit:"y"}),a("zorder")}});var d8=ye((Ssr,oxe)=>{"use strict";var b4=Mr(),y_t=af(),h8=ba().traceIs,__t=Hb(),x_t=r0().validateCornerradius,nxe=b4.nestedProperty,KV=Bb().getAxisGroup,axe=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],b_t=["x","y"];oxe.exports=function(t,r){var n=r._histogramBinOpts={},i=[],a={},o=[],s,l,u,c,f,h,d;function v(H,X){return b4.coerce(s._input,s,s._module.attributes,H,X)}function x(H){return H.orientation==="v"?"x":"y"}function b(H,X){var G=y_t.getFromTrace({_fullLayout:r},H,X);return G.type}function p(H,X,G){var N=H.uid+"__"+G;X||(X=N);var W=b(H,G),re=H[G+"calendar"]||"",ae=n[X],_e=!0;ae&&(W===ae.axType&&re===ae.calendar?(_e=!1,ae.traces.push(H),ae.dirs.push(G)):(X=N,W!==ae.axType&&b4.warn(["Attempted to group the bins of trace",H.index,"set on a","type:"+W,"axis","with bins on","type:"+ae.axType,"axis."].join(" ")),re!==ae.calendar&&b4.warn(["Attempted to group the bins of trace",H.index,"set with a",re,"calendar","with bins",ae.calendar?"on a "+ae.calendar+" calendar":"w/o a set calendar"].join(" ")))),_e&&(n[X]={traces:[H],dirs:[G],axType:W,calendar:H[G+"calendar"]||""}),H["_"+G+"bingroup"]=X}for(f=0;f{"use strict";var w_t=TT().hoverPoints,T_t=Qa().hoverLabelText;sxe.exports=function(t,r,n,i,a){var o=w_t(t,r,n,i,a);if(o){t=o[0];var s=t.cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var u=l.orientation==="h"?"y":"x";t[u+"Label"]=T_t(t[u+"a"],[s.ph0,s.ph1],l[u+"hoverformat"])}return o}}});var JV=ye((Esr,uxe)=>{"use strict";uxe.exports=function(t,r,n,i,a){if(t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"zLabelVal"in r&&(t.z=r.zLabelVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),!(n.cumulative||{}).enabled){var o=Array.isArray(a)?i[0].pts[a[0]][a[1]]:i[a].pts;t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex;var s;if(n._indexToPoints){s=[];for(var l=0;l{"use strict";cxe.exports={attributes:f8(),layoutAttributes:zI(),supplyDefaults:ixe(),crossTraceDefaults:d8(),supplyLayoutDefaults:yV(),calc:UV().calc,crossTraceCalc:Gb().crossTraceCalc,plot:i2().plot,layerName:"barlayer",style:N0().style,styleOnSelect:N0().styleOnSelect,colorbar:Kd(),hoverPoints:lxe(),selectPoints:AT(),eventData:JV(),moduleType:"trace",name:"histogram",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}});var dxe=ye((Csr,hxe)=>{"use strict";hxe.exports=fxe()});var p8=ye((Lsr,pxe)=>{"use strict";var Vg=f8(),vxe=ZV(),v8=ET(),A_t=vl(),$V=Oc().axisHoverFormat,S_t=Wo().hovertemplateAttrs,M_t=Wo().texttemplateAttrs,E_t=Jl(),w4=no().extendFlat;pxe.exports=w4({x:Vg.x,y:Vg.y,z:{valType:"data_array",editType:"calc"},marker:{color:{valType:"data_array",editType:"calc"},editType:"calc"},histnorm:Vg.histnorm,histfunc:Vg.histfunc,nbinsx:Vg.nbinsx,xbins:vxe("x"),nbinsy:Vg.nbinsy,ybins:vxe("y"),autobinx:Vg.autobinx,autobiny:Vg.autobiny,bingroup:w4({},Vg.bingroup,{}),xbingroup:w4({},Vg.bingroup,{}),ybingroup:w4({},Vg.bingroup,{}),xgap:v8.xgap,ygap:v8.ygap,zsmooth:v8.zsmooth,xhoverformat:$V("x"),yhoverformat:$V("y"),zhoverformat:$V("z",1),hovertemplate:S_t({},{keys:"z"}),texttemplate:M_t({arrayOk:!1,editType:"plot"},{keys:"z"}),textfont:v8.textfont,showlegend:w4({},A_t.showlegend,{dflt:!1})},E_t("",{cLetter:"z",autoColorDflt:!1}))});var QV=ye((Psr,mxe)=>{"use strict";var k_t=ba(),gxe=Mr();mxe.exports=function(t,r,n,i){var a=n("x"),o=n("y"),s=gxe.minRowLength(a),l=gxe.minRowLength(o);if(!s||!l){r.visible=!1;return}r._length=Math.min(s,l);var u=k_t.getComponentMethod("calendars","handleTraceDefaults");u(t,r,["x","y"],i);var c=n("z")||n("marker.color");c&&n("histfunc"),n("histnorm"),n("autobinx"),n("autobiny")}});var _xe=ye((Isr,yxe)=>{"use strict";var C_t=Mr(),L_t=QV(),P_t=DV(),I_t=Uh(),R_t=y4(),D_t=p8();yxe.exports=function(t,r,n,i){function a(o,s){return C_t.coerce(t,r,D_t,o,s)}L_t(t,r,a,i),r.visible!==!1&&(P_t(t,r,a,i),I_t(t,r,i,a,{prefix:"",cLetter:"z"}),a("hovertemplate"),R_t(a,i),a("xhoverformat"),a("yhoverformat"))}});var wxe=ye((Rsr,bxe)=>{"use strict";var z_t=c8(),xxe=Qa().hoverLabelText;bxe.exports=function(t,r,n,i,a){var o=z_t(t,r,n,i,a);if(o){t=o[0];var s=t.index,l=s[0],u=s[1],c=t.cd[0],f=c.trace,h=c.xRanges[u],d=c.yRanges[l];return t.xLabel=xxe(t.xa,[h[0],h[1]],f.xhoverformat),t.yLabel=xxe(t.ya,[d[0],d[1]],f.yhoverformat),o}}});var Axe=ye((Dsr,Txe)=>{"use strict";Txe.exports={attributes:p8(),supplyDefaults:_xe(),crossTraceDefaults:d8(),calc:n8(),plot:s8(),layerName:"heatmaplayer",colorbar:M_(),style:l8(),hoverPoints:wxe(),eventData:JV(),moduleType:"trace",name:"histogram2d",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","histogram","showLegend"],meta:{}}});var Mxe=ye((zsr,Sxe)=>{"use strict";Sxe.exports=Axe()});var g8=ye((Fsr,Exe)=>{"use strict";Exe.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}});var T4=ye((qsr,Pxe)=>{"use strict";var Gh=ET(),m8=Uc(),Cxe=Oc(),eH=Cxe.axisHoverFormat,F_t=Cxe.descriptionOnlyNumbers,q_t=Jl(),O_t=Ed().dash,B_t=Su(),IT=no().extendFlat,Lxe=g8(),N_t=Lxe.COMPARISON_OPS2,U_t=Lxe.INTERVAL_OPS,kxe=m8.line;Pxe.exports=IT({z:Gh.z,x:Gh.x,x0:Gh.x0,dx:Gh.dx,y:Gh.y,y0:Gh.y0,dy:Gh.dy,xperiod:Gh.xperiod,yperiod:Gh.yperiod,xperiod0:m8.xperiod0,yperiod0:m8.yperiod0,xperiodalignment:Gh.xperiodalignment,yperiodalignment:Gh.yperiodalignment,text:Gh.text,hovertext:Gh.hovertext,transpose:Gh.transpose,xtype:Gh.xtype,ytype:Gh.ytype,xhoverformat:eH("x"),yhoverformat:eH("y"),zhoverformat:eH("z",1),hovertemplate:Gh.hovertemplate,texttemplate:IT({},Gh.texttemplate,{}),textfont:IT({},Gh.textfont,{}),hoverongaps:Gh.hoverongaps,connectgaps:IT({},Gh.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:B_t({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:F_t("contour label")},operation:{valType:"enumerated",values:[].concat(N_t).concat(U_t),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:IT({},kxe.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:O_t,smoothing:IT({},kxe.smoothing,{}),editType:"plot"},zorder:m8.zorder},q_t("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))});var rH=ye((Osr,Rxe)=>{"use strict";var Hv=p8(),qy=T4(),V_t=Jl(),tH=Oc().axisHoverFormat,Ixe=no().extendFlat;Rxe.exports=Ixe({x:Hv.x,y:Hv.y,z:Hv.z,marker:Hv.marker,histnorm:Hv.histnorm,histfunc:Hv.histfunc,nbinsx:Hv.nbinsx,xbins:Hv.xbins,nbinsy:Hv.nbinsy,ybins:Hv.ybins,autobinx:Hv.autobinx,autobiny:Hv.autobiny,bingroup:Hv.bingroup,xbingroup:Hv.xbingroup,ybingroup:Hv.ybingroup,autocontour:qy.autocontour,ncontours:qy.ncontours,contours:qy.contours,line:{color:qy.line.color,width:Ixe({},qy.line.width,{dflt:.5}),dash:qy.line.dash,smoothing:qy.line.smoothing,editType:"plot"},xhoverformat:tH("x"),yhoverformat:tH("y"),zhoverformat:tH("z",1),hovertemplate:Hv.hovertemplate,texttemplate:qy.texttemplate,textfont:qy.textfont},V_t("",{cLetter:"z",editTypeOverride:"calc"}))});var y8=ye((Bsr,Dxe)=>{"use strict";Dxe.exports=function(t,r,n,i){var a=i("contours.start"),o=i("contours.end"),s=a===!1||o===!1,l=n("contours.size"),u;s?u=r.autocontour=!0:u=n("autocontour",!1),(u||!l)&&n("ncontours")}});var iH=ye((Nsr,zxe)=>{"use strict";var H_t=Mr();zxe.exports=function(t,r,n,i){i||(i={});var a=t("contours.showlabels");if(a){var o=r.font;H_t.coerceFont(t,"contours.labelfont",o,{overrideDflt:{color:n}}),t("contours.labelformat")}i.hasHover!==!1&&t("zhoverformat")}});var _8=ye((Usr,Fxe)=>{"use strict";var G_t=Uh(),j_t=iH();Fxe.exports=function(t,r,n,i,a){var o=n("contours.coloring"),s,l="";o==="fill"&&(s=n("contours.showlines")),s!==!1&&(o!=="lines"&&(l=n("line.color","#000")),n("line.width",.5),n("line.dash")),o!=="none"&&(t.showlegend!==!0&&(r.showlegend=!1),r._dfltShowLegend=!1,G_t(t,r,i,n,{prefix:"",cLetter:"z"})),n("line.smoothing"),j_t(n,i,l,a)}});var Nxe=ye((Vsr,Bxe)=>{"use strict";var qxe=Mr(),W_t=QV(),Z_t=y8(),X_t=_8(),Y_t=y4(),Oxe=rH();Bxe.exports=function(t,r,n,i){function a(s,l){return qxe.coerce(t,r,Oxe,s,l)}function o(s){return qxe.coerce2(t,r,Oxe,s)}W_t(t,r,a,i),r.visible!==!1&&(Z_t(t,r,a,o),X_t(t,r,a,i),a("xhoverformat"),a("yhoverformat"),a("hovertemplate"),r.contours&&r.contours.coloring==="heatmap"&&Y_t(a,i))}});var oH=ye((Hsr,Vxe)=>{"use strict";var aH=Qa(),nH=Mr();Vxe.exports=function(t,r){var n=t.contours;if(t.autocontour){var i=t.zmin,a=t.zmax;(t.zauto||i===void 0)&&(i=nH.aggNums(Math.min,null,r)),(t.zauto||a===void 0)&&(a=nH.aggNums(Math.max,null,r));var o=Uxe(i,a,t.ncontours);n.size=o.dtick,n.start=aH.tickFirst(o),o.range.reverse(),n.end=aH.tickFirst(o),n.start===i&&(n.start+=n.size),n.end===a&&(n.end-=n.size),n.start>n.end&&(n.start=n.end=(n.start+n.end)/2),t._input.contours||(t._input.contours={}),nH.extendFlat(t._input.contours,{start:n.start,end:n.end,size:n.size}),t._input.autocontour=!0}else if(n.type!=="constraint"){var s=n.start,l=n.end,u=t._input.contours;if(s>l&&(n.start=u.start=l,l=n.end=u.end=s,s=n.start),!(n.size>0)){var c;s===l?c=1:c=Uxe(s,l,t.ncontours).dtick,u.size=n.size=c}}};function Uxe(e,t,r){var n={type:"linear",range:[e,t]};return aH.autoTicks(n,(t-e)/(r||15)),n}});var A4=ye((Gsr,Hxe)=>{"use strict";Hxe.exports=function(t){return t.end+t.size/1e6}});var sH=ye((jsr,jxe)=>{"use strict";var Gxe=Mu(),K_t=n8(),J_t=oH(),$_t=A4();jxe.exports=function(t,r){var n=K_t(t,r),i=n[0].z;J_t(r,i);var a=r.contours,o=Gxe.extractOpts(r),s;if(a.coloring==="heatmap"&&o.auto&&r.autocontour===!1){var l=a.start,u=$_t(a),c=a.size||1,f=Math.floor((u-l)/c)+1;isFinite(c)||(c=1,f=1);var h=l-c/2,d=h+f*c;s=[h,d]}else s=i;return Gxe.calc(t,r,{vals:s,cLetter:"z"}),n}});var S4=ye((Wsr,Wxe)=>{"use strict";Wxe.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}});var lH=ye((Zsr,Zxe)=>{"use strict";var x8=S4();Zxe.exports=function(t){var r=t[0].z,n=r.length,i=r[0].length,a=n===2||i===2,o,s,l,u,c,f,h,d,v;for(s=0;se?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);if(r===5||r===10){var n=(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4;return e>n?r===5?713:1114:r===5?104:208}return r===15?0:r}});var uH=ye((Xsr,Kxe)=>{"use strict";var b8=Mr(),RT=S4();Kxe.exports=function(t,r,n){var i,a,o,s,l;for(r=r||.01,n=n||.01,o=0;o20?(o=RT.CHOOSESADDLE[o][(s[0]||s[1])<0?0:1],e.crossings[a]=RT.SADDLEREMAINDER[o]):delete e.crossings[a],s=RT.NEWDELTA[o],!s){b8.log("Found bad marching index:",o,t,e.level);break}l.push(Yxe(e,t,s)),t[0]+=s[0],t[1]+=s[1],a=t.join(","),M4(l[l.length-1],l[l.length-2],n,i)&&l.pop();var v=s[0]&&(t[0]<0||t[0]>c-2)||s[1]&&(t[1]<0||t[1]>u-2),x=t[0]===f[0]&&t[1]===f[1]&&s[0]===h[0]&&s[1]===h[1];if(x||r&&v)break;o=e.crossings[a]}d===1e4&&b8.log("Infinite loop in contour?");var b=M4(l[0],l[l.length-1],n,i),p=0,E=.2*e.smoothing,k=[],A=0,L,_,C,M,g,P,T,F,q,V,H;for(d=1;d=A;d--)if(L=k[d],L=A&&L+k[_]F&&q--,e.edgepaths[q]=H.concat(l,V));break}W||(e.edgepaths[F]=l.concat(V))}for(F=0;F20&&t?e===208||e===1114?n=r[0]===0?1:-1:i=r[1]===0?1:-1:RT.BOTTOMSTART.indexOf(e)!==-1?i=1:RT.LEFTSTART.indexOf(e)!==-1?n=1:RT.TOPSTART.indexOf(e)!==-1?i=-1:n=-1,[n,i]}function Yxe(e,t,r){var n=t[0]+Math.max(r[0],0),i=t[1]+Math.max(r[1],0),a=e.z[i][n],o=e.xaxis,s=e.yaxis;if(r[1]){var l=(e.level-a)/(e.z[i][n+1]-a),u=(l!==1?(1-l)*o.c2l(e.x[n]):0)+(l!==0?l*o.c2l(e.x[n+1]):0);return[o.c2p(o.l2c(u),!0),s.c2p(e.y[i],!0),n+l,i]}else{var c=(e.level-a)/(e.z[i+1][n]-a),f=(c!==1?(1-c)*s.c2l(e.y[i]):0)+(c!==0?c*s.c2l(e.y[i+1]):0);return[o.c2p(e.x[n],!0),s.c2p(s.l2c(f),!0),n,i+c]}}});var ebe=ye((Ysr,Qxe)=>{"use strict";var cH=g8(),rxt=uo();Qxe.exports={"[]":Jxe("[]"),"][":Jxe("]["),">":fH(">"),"<":fH("<"),"=":fH("=")};function $xe(e,t){var r=Array.isArray(t),n;function i(a){return rxt(a)?+a:null}return cH.COMPARISON_OPS2.indexOf(e)!==-1?n=i(r?t[0]:t):cH.INTERVAL_OPS.indexOf(e)!==-1?n=r?[i(t[0]),i(t[1])]:[i(t),i(t)]:cH.SET_OPS.indexOf(e)!==-1&&(n=r?t.map(i):[i(t)]),n}function Jxe(e){return function(t){t=$xe(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function fH(e){return function(t){return t=$xe(e,t),{start:t,end:1/0,size:1/0}}}});var hH=ye((Ksr,rbe)=>{"use strict";var tbe=Mr(),ixt=ebe(),nxt=A4();rbe.exports=function(t,r,n){for(var i=t.type==="constraint"?ixt[t._operation](t.value):t,a=i.size,o=[],s=nxt(i),l=n.trace._carpetTrace,u=l?{xaxis:l.aaxis,yaxis:l.baxis,x:n.a,y:n.b}:{xaxis:r.xaxis,yaxis:r.yaxis,x:n.x,y:n.y},c=i.start;c1e3){tbe.warn("Too many contours, clipping at 1000",t);break}return o}});var dH=ye((Jsr,nbe)=>{"use strict";var DT=Mr();nbe.exports=function(e,t){var r,n,i,a=function(l){return l.reverse()},o=function(l){return l};switch(t){case"=":case"<":return e;case">":for(e.length!==1&&DT.warn("Contour data invalid for the specified inequality operation."),n=e[0],r=0;r{"use strict";abe.exports=function(e,t){var r=e[0],n=r.z,i;switch(t.type){case"levels":var a=Math.min(n[0][0],n[0][1]);for(i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(r.prefixBoundary=!1,r.edgepaths.length)return;var s=r.x.length,l=r.y.length,u=-1/0,c=1/0;for(i=0;i":f>u&&(r.prefixBoundary=!0);break;case"<":(fu||r.starts.length&&d===c)&&(r.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),d=Math.max(f[0],f[1]),hu&&(r.prefixBoundary=!0);break}break}}});var w8=ye(Gv=>{"use strict";var k4=xa(),Id=Mr(),Oy=ao(),axt=Mu(),lbe=Pl(),obe=Qa(),sbe=ym(),oxt=s8(),ube=lH(),cbe=uH(),sxt=hH(),lxt=dH(),fbe=vH(),E4=S4(),Rm=E4.LABELOPTIMIZER;Gv.plot=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;Id.makeTraceGroups(i,n,"contour").each(function(s){var l=k4.select(this),u=s[0],c=u.trace,f=u.x,h=u.y,d=c.contours,v=sxt(d,r,u),x=Id.ensureSingle(l,"g","heatmapcoloring"),b=[];d.coloring==="heatmap"&&(b=[s]),oxt(t,r,b,x),ube(v),cbe(v);var p=a.c2p(f[0],!0),E=a.c2p(f[f.length-1],!0),k=o.c2p(h[0],!0),A=o.c2p(h[h.length-1],!0),L=[[p,A],[E,A],[E,k],[p,k]],_=v;d.type==="constraint"&&(_=lxt(v,d._operation)),uxt(l,L,d),cxt(l,_,L,d),fxt(l,v,t,u,d),dxt(l,r,t,u,L)})};function uxt(e,t,r){var n=Id.ensureSingle(e,"g","contourbg"),i=n.selectAll("path").data(r.coloring==="fill"?[0]:[]);i.enter().append("path"),i.exit().remove(),i.attr("d","M"+t.join("L")+"Z").style("stroke","none")}function cxt(e,t,r,n){var i=n.coloring==="fill"||n.type==="constraint"&&n._operation!=="=",a="M"+r.join("L")+"Z";i&&fbe(t,n);var o=Id.ensureSingle(e,"g","contourfill"),s=o.selectAll("path").data(i?t:[]);s.enter().append("path"),s.exit().remove(),s.each(function(l){var u=(l.prefixBoundary?a:"")+hbe(l,r);u?k4.select(this).attr("d",u).style("stroke","none"):k4.select(this).remove()})}function hbe(e,t){var r="",n=0,i=e.edgepaths.map(function(p,E){return E}),a=!0,o,s,l,u,c,f;function h(p){return Math.abs(p[1]-t[0][1])<.01}function d(p){return Math.abs(p[1]-t[2][1])<.01}function v(p){return Math.abs(p[0]-t[0][0])<.01}function x(p){return Math.abs(p[0]-t[2][0])<.01}for(;i.length;){for(f=Oy.smoothopen(e.edgepaths[n],e.smoothing),r+=a?f:f.replace(/^M/,"L"),i.splice(i.indexOf(n),1),o=e.edgepaths[n][e.edgepaths[n].length-1],u=-1,l=0;l<4;l++){if(!o){Id.log("Missing end?",n,e);break}for(h(o)&&!x(o)?s=t[1]:v(o)?s=t[0]:d(o)?s=t[3]:x(o)&&(s=t[2]),c=0;c=0&&(s=b,u=c):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-b[1])<.01&&(b[0]-o[0])*(s[0]-b[0])>=0&&(s=b,u=c):Id.log("endpt to newendpt is not vert. or horz.",o,s,b)}if(o=s,u>=0)break;r+="L"+s}if(u===e.edgepaths.length){Id.log("unclosed perimeter path");break}n=u,a=i.indexOf(n)===-1,a&&(n=i[0],r+="Z")}for(n=0;nRm.MAXCOST*2)break;h&&(s/=2),o=u-s/2,l=o+s*1.5}if(f<=Rm.MAXCOST)return c};function hxt(e,t,r,n){var i=t.width/2,a=t.height/2,o=e.x,s=e.y,l=e.theta,u=Math.cos(l)*i,c=Math.sin(l)*i,f=(o>n.center?n.right-o:o-n.left)/(u+Math.abs(Math.sin(l)*a)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(c)+Math.cos(l)*a);if(f<1||h<1)return 1/0;var d=Rm.EDGECOST*(1/(f-1)+1/(h-1));d+=Rm.ANGLECOST*l*l;for(var v=o-u,x=s-c,b=o+u,p=s+c,E=0;E{"use strict";var pxt=xa(),pH=Mu(),gxt=A4();dbe.exports=function(t){var r=t.contours,n=r.start,i=gxt(r),a=r.size||1,o=Math.floor((i-n)/a)+1,s=r.coloring==="lines"?0:1,l=pH.extractOpts(t);isFinite(a)||(a=1,o=1);var u=l.reversescale?pH.flipScale(l.colorscale):l.colorscale,c=u.length,f=new Array(c),h=new Array(c),d,v,x=l.min,b=l.max;if(r.coloring==="heatmap"){for(v=0;v=b)&&(n<=x&&(n=x),i>=b&&(i=b),o=Math.floor((i-n)/a)+1,s=0),v=0;vx&&(f.unshift(x),h.unshift(h[0])),f[f.length-1]{"use strict";var T8=xa(),vbe=ao(),mxt=l8(),yxt=gH();pbe.exports=function(t){var r=T8.select(t).selectAll("g.contour");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=T8.select(this),a=n[0].trace,o=a.contours,s=a.line,l=o.size||1,u=o.start,c=o.type==="constraint",f=!c&&o.coloring==="lines",h=!c&&o.coloring==="fill",d=f||h?yxt(a):null;i.selectAll("g.contourlevel").each(function(b){T8.select(this).selectAll("path").call(vbe.lineGroupStyle,s.width,f?d(b.level):s.color,s.dash)});var v=o.labelfont;if(i.selectAll("g.contourlabels text").each(function(b){vbe.font(T8.select(this),{weight:v.weight,style:v.style,variant:v.variant,textcase:v.textcase,lineposition:v.lineposition,shadow:v.shadow,family:v.family,size:v.size,color:v.color||(f?d(b.level):s.color)})}),c)i.selectAll("g.contourfill path").style("fill",a.fillcolor);else if(h){var x;i.selectAll("g.contourfill path").style("fill",function(b){return x===void 0&&(x=b.level),d(b.level+.5*l)}),x===void 0&&(x=u),i.selectAll("g.contourbg path").style("fill",d(x-.5*l))}}),mxt(t)}});var S8=ye((rlr,mbe)=>{"use strict";var gbe=Mu(),_xt=gH(),xxt=A4();function bxt(e,t,r){var n=t.contours,i=t.line,a=n.size||1,o=n.coloring,s=_xt(t,{isColorbar:!0});if(o==="heatmap"){var l=gbe.extractOpts(t);r._fillgradient=l.reversescale?gbe.flipScale(l.colorscale):l.colorscale,r._zrange=[l.min,l.max]}else o==="fill"&&(r._fillcolor=s);r._line={color:o==="lines"?s:i.color,width:n.showlines!==!1?i.width:0,dash:i.dash},r._levels={start:n.start,end:xxt(n),size:a}}mbe.exports={min:"zmin",max:"zmax",calc:bxt}});var mH=ye((ilr,ybe)=>{"use strict";var M8=va(),wxt=c8();ybe.exports=function(t,r,n,i,a){a||(a={}),a.isContour=!0;var o=wxt(t,r,n,i,a);return o&&o.forEach(function(s){var l=s.trace;l.contours.type==="constraint"&&(l.fillcolor&&M8.opacity(l.fillcolor)?s.color=M8.addOpacity(l.fillcolor,1):l.contours.showlines&&M8.opacity(l.line.color)&&(s.color=M8.addOpacity(l.line.color,1)))}),o}});var xbe=ye((nlr,_be)=>{"use strict";_be.exports={attributes:rH(),supplyDefaults:Nxe(),crossTraceDefaults:d8(),calc:sH(),plot:w8().plot,layerName:"contourlayer",style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"histogram2dcontour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}});var wbe=ye((alr,bbe)=>{"use strict";bbe.exports=xbe()});var yH=ye((olr,kbe)=>{"use strict";var Tbe=uo(),Txt=iH(),Mbe=va(),Abe=Mbe.addOpacity,Axt=Mbe.opacity,Ebe=g8(),Sbe=Mr().isArrayOrTypedArray,Sxt=Ebe.CONSTRAINT_REDUCTION,Mxt=Ebe.COMPARISON_OPS2;kbe.exports=function(t,r,n,i,a,o){var s=r.contours,l,u,c,f=n("contours.operation");if(s._operation=Sxt[f],Ext(n,s),f==="="?l=s.showlines=!0:(l=n("contours.showlines"),c=n("fillcolor",Abe((t.line||{}).color||a,.5))),l){var h=c&&Axt(c)?Abe(r.fillcolor,1):a;u=n("line.color",h),n("line.width",2),n("line.dash")}n("line.smoothing"),Txt(n,i,u,o)};function Ext(e,t){var r;Mxt.indexOf(t.operation)===-1?(e("contours.value",[0,1]),Sbe(t.value)?t.value.length>2?t.value=t.value.slice(2):t.length===0?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:Tbe(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),Tbe(t.value)||(Sbe(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}});var Pbe=ye((slr,Lbe)=>{"use strict";var _H=Mr(),kxt=XI(),Cxt=Pg(),Lxt=yH(),Pxt=y8(),Ixt=_8(),Rxt=y4(),Cbe=T4();Lbe.exports=function(t,r,n,i){function a(u,c){return _H.coerce(t,r,Cbe,u,c)}function o(u){return _H.coerce2(t,r,Cbe,u)}var s=kxt(t,r,a,i);if(!s){r.visible=!1;return}Cxt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hoverongaps"),a("hovertemplate");var l=a("contours.type")==="constraint";a("connectgaps",_H.isArray1D(r.z)),l?Lxt(t,r,a,i,n):(Pxt(t,r,a,o),Ixt(t,r,a,i)),r.contours&&r.contours.coloring==="heatmap"&&Rxt(a,i),a("zorder")}});var Rbe=ye((llr,Ibe)=>{"use strict";Ibe.exports={attributes:T4(),supplyDefaults:Pbe(),calc:sH(),plot:w8().plot,style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"contour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}});var zbe=ye((ulr,Dbe)=>{"use strict";Dbe.exports=Rbe()});var xH=ye((clr,qbe)=>{"use strict";var Dxt=Wo().hovertemplateAttrs,zxt=Wo().texttemplateAttrs,Fxt=Eg(),a0=Uc(),qxt=vl(),Fbe=Jl(),Oxt=Ed().dash,E_=no().extendFlat,j0=a0.marker,C4=a0.line,Bxt=j0.line;qbe.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:E_({},a0.mode,{dflt:"markers"}),text:E_({},a0.text,{}),texttemplate:zxt({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:E_({},a0.hovertext,{}),line:{color:C4.color,width:C4.width,dash:Oxt,backoff:C4.backoff,shape:E_({},C4.shape,{values:["linear","spline"]}),smoothing:C4.smoothing,editType:"calc"},connectgaps:a0.connectgaps,cliponaxis:a0.cliponaxis,fill:E_({},a0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:Fxt(),marker:E_({symbol:j0.symbol,opacity:j0.opacity,angle:j0.angle,angleref:j0.angleref,standoff:j0.standoff,maxdisplayed:j0.maxdisplayed,size:j0.size,sizeref:j0.sizeref,sizemin:j0.sizemin,sizemode:j0.sizemode,line:E_({width:Bxt.width,editType:"calc"},Fbe("marker.line")),gradient:j0.gradient,editType:"calc"},Fbe("marker")),textfont:a0.textfont,textposition:a0.textposition,selected:a0.selected,unselected:a0.unselected,hoverinfo:E_({},qxt.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:a0.hoveron,hovertemplate:Dxt()}});var Ube=ye((flr,Nbe)=>{"use strict";var Obe=Mr(),Nxt=Sm(),zT=lu(),Uxt=$p(),Vxt=R0(),Bbe=J3(),Hxt=D0(),Gxt=Ig(),jxt=xH();Nbe.exports=function(t,r,n,i){function a(h,d){return Obe.coerce(t,r,jxt,h,d)}var o=a("a"),s=a("b"),l=a("c"),u;if(o?(u=o.length,s?(u=Math.min(u,s.length),l&&(u=Math.min(u,l.length))):l?u=Math.min(u,l.length):u=0):s&&l&&(u=Math.min(s.length,l.length)),!u){r.visible=!1;return}r._length=u,a("sum"),a("text"),a("hovertext"),r.hoveron!=="fills"&&a("hovertemplate");var c=u{"use strict";var bH=Qa();Vbe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.aLabel=bH.tickText(a.aaxis,t.a,!0).text,i.bLabel=bH.tickText(a.baxis,t.b,!0).text,i.cLabel=bH.tickText(a.caxis,t.c,!0).text,i}});var Zbe=ye((dlr,Wbe)=>{"use strict";var wH=uo(),Wxt=z0(),Zxt=km(),Xxt=F0(),Yxt=q0().calcMarkerSize,Gbe=["a","b","c"],jbe={a:["b","c"],b:["a","c"],c:["a","b"]};Wbe.exports=function(t,r){var n=t._fullLayout[r.subplot],i=n.sum,a=r.sum||i,o={a:r.a,b:r.b,c:r.c},s=r.ids,l,u,c,f,h,d;for(l=0;l{"use strict";var Kxt=iT();Xbe.exports=function(t,r,n){var i=r.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:r._hasClipOnAxisFalse?r.clipIdRelative:null},l=r.layers.frontplot.select("g.scatterlayer"),u=0;u{"use strict";var Jxt=sT();Kbe.exports=function(t,r,n,i){var a=Jxt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index],h=o.trace,d=o.subplot;o.a=f.a,o.b=f.b,o.c=f.c,o.xLabelVal=void 0,o.yLabelVal=void 0;var v={};v[h.subplot]={_subplot:d};var x=h._module.formatLabels(f,h,v);o.aLabel=x.aLabel,o.bLabel=x.bLabel,o.cLabel=x.cLabel;var b=f.hi||h.hoverinfo,p=[];function E(A,L){p.push(A._hovertitle+": "+L)}if(!h.hovertemplate){var k=b.split("+");k.indexOf("all")!==-1&&(k=["a","b","c"]),k.indexOf("a")!==-1&&E(d.aaxis,o.aLabel),k.indexOf("b")!==-1&&E(d.baxis,o.bLabel),k.indexOf("c")!==-1&&E(d.caxis,o.cLabel)}return o.extraText=p.join("
"),o.hovertemplate=h.hovertemplate,a}});var Qbe=ye((glr,$be)=>{"use strict";$be.exports=function(t,r,n,i,a){if(r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),i[a]){var o=i[a];t.a=o.a,t.b=o.b,t.c=o.c}else t.a=r.a,t.b=r.b,t.c=r.c;return t}});var c2e=ye((mlr,u2e)=>{"use strict";var a2e=xa(),$xt=id(),TH=ba(),By=Mr(),Dm=By.strTranslate,E8=By._,qT=va(),k8=ao(),L4=ym(),AH=no().extendFlat,Qxt=Xu(),k_=Qa(),e2e=gv(),t2e=Nc(),o2e=Sg(),r2e=o2e.freeMode,ebt=o2e.rectMode,SH=Mb(),tbt=wf().prepSelect,rbt=wf().selectOnClick,ibt=wf().clearOutline,nbt=wf().clearSelectionsCache,s2e=ad();function l2e(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.updateFx(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}u2e.exports=l2e;var zm=l2e.prototype;zm.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}};zm.plot=function(e,t){var r=this,n=t[r.id],i=t._size;r._hasClipOnAxisFalse=!1;for(var a=0;aFT*u?(p=u,b=p*FT):(b=l,p=b/FT),E=o*b/l,k=s*p/u,v=t.l+t.w*i-b/2,x=t.t+t.h*(1-a)-p/2,r.x0=v,r.y0=x,r.w=b,r.h=p,r.sum=c,r.xaxis={type:"linear",range:[f+2*d-c,c-f-2*h],domain:[i-E/2,i+E/2],_id:"x"},L4(r.xaxis,r.graphDiv._fullLayout),r.xaxis.setScale(),r.xaxis.isPtWithinRange=function(V){return V.a>=r.aaxis.range[0]&&V.a<=r.aaxis.range[1]&&V.b>=r.baxis.range[1]&&V.b<=r.baxis.range[0]&&V.c>=r.caxis.range[1]&&V.c<=r.caxis.range[0]},r.yaxis={type:"linear",range:[f,c-h-d],domain:[a-k/2,a+k/2],_id:"y"},L4(r.yaxis,r.graphDiv._fullLayout),r.yaxis.setScale(),r.yaxis.isPtWithinRange=function(){return!0};var A=r.yaxis.domain[0],L=r.aaxis=AH({},e.aaxis,{range:[f,c-h-d],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(L,r.graphDiv._fullLayout),L.setScale();var _=r.baxis=AH({},e.baxis,{range:[c-f-d,h],side:"bottom",domain:r.xaxis.domain,anchor:"free",position:0,_id:"x",_length:b});L4(_,r.graphDiv._fullLayout),_.setScale();var C=r.caxis=AH({},e.caxis,{range:[c-f-h,d],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(C,r.graphDiv._fullLayout),C.setScale();var M="M"+v+","+(x+p)+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDef.select("path").attr("d",M),r.layers.plotbg.select("path").attr("d",M);var g="M0,"+p+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDefRelative.select("path").attr("d",g);var P=Dm(v,x);r.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),r.clipDefRelative.select("path").attr("transform",null);var T=Dm(v-_._offset,x+p);r.layers.baxis.attr("transform",T),r.layers.bgrid.attr("transform",T);var F=Dm(v+b/2,x)+"rotate(30)"+Dm(0,-L._offset);r.layers.aaxis.attr("transform",F),r.layers.agrid.attr("transform",F);var q=Dm(v+b/2,x)+"rotate(-30)"+Dm(0,-C._offset);r.layers.caxis.attr("transform",q),r.layers.cgrid.attr("transform",q),r.drawAxes(!0),r.layers.aline.select("path").attr("d",L.showline?"M"+v+","+(x+p)+"l"+b/2+",-"+p:"M0,0").call(qT.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),r.layers.bline.select("path").attr("d",_.showline?"M"+v+","+(x+p)+"h"+b:"M0,0").call(qT.stroke,_.linecolor||"#000").style("stroke-width",(_.linewidth||0)+"px"),r.layers.cline.select("path").attr("d",C.showline?"M"+(v+b/2)+","+x+"l"+b/2+","+p:"M0,0").call(qT.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),r.graphDiv._context.staticPlot||r.initInteractions(),k8.setClipUrl(r.layers.frontplot,r._hasClipOnAxisFalse?null:r.clipId,r.graphDiv)};zm.drawAxes=function(e){var t=this,r=t.graphDiv,n=t.id.substr(7)+"title",i=t.layers,a=t.aaxis,o=t.baxis,s=t.caxis;if(t.drawAx(a),t.drawAx(o),t.drawAx(s),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?s.tickfont.size*.75:0)+(s.ticks==="outside"?s.ticklen*.87:0)),u=(o.showticklabels?o.tickfont.size:0)+(o.ticks==="outside"?o.ticklen:0)+3;i["a-title"]=SH.draw(r,"a"+n,{propContainer:a,propName:t.id+".aaxis.title",placeholder:E8(r,"Click to enter Component A title"),attributes:{x:t.x0+t.w/2,y:t.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),i["b-title"]=SH.draw(r,"b"+n,{propContainer:o,propName:t.id+".baxis.title",placeholder:E8(r,"Click to enter Component B title"),attributes:{x:t.x0-u,y:t.y0+t.h+o.title.font.size*.83+u,"text-anchor":"middle"}}),i["c-title"]=SH.draw(r,"c"+n,{propContainer:s,propName:t.id+".caxis.title",placeholder:E8(r,"Click to enter Component C title"),attributes:{x:t.x0+t.w+u,y:t.y0+t.h+s.title.font.size*.83+u,"text-anchor":"middle"}})}};zm.drawAx=function(e){var t=this,r=t.graphDiv,n=e._name,i=n.charAt(0),a=e._id,o=t.layers[n],s=30,l=i+"tickLayout",u=abt(e);t[l]!==u&&(o.selectAll("."+a+"tick").remove(),t[l]=u),e.setScale();var c=k_.calcTicks(e),f=k_.clipEnds(e,c),h=k_.makeTransTickFn(e),d=k_.getTickSigns(e)[2],v=By.deg2rad(s),x=d*(e.linewidth||1)/2,b=d*e.ticklen,p=t.w,E=t.h,k=i==="b"?"M0,"+x+"l"+Math.sin(v)*b+","+Math.cos(v)*b:"M"+x+",0l"+Math.cos(v)*b+","+-Math.sin(v)*b,A={a:"M0,0l"+E+",-"+p/2,b:"M0,0l-"+p/2+",-"+E,c:"M0,0l-"+E+","+p/2}[i];k_.drawTicks(r,e,{vals:e.ticks==="inside"?f:c,layer:o,path:k,transFn:h,crisp:!1}),k_.drawGrid(r,e,{vals:f,layer:t.layers[i+"grid"],path:A,transFn:h,crisp:!1}),k_.drawLabels(r,e,{vals:c,layer:o,transFn:h,labelFns:k_.makeLabelFns(e,0,s)})};function abt(e){return e.ticks+String(e.ticklen)+String(e.showticklabels)}var fd=s2e.MINZOOM/2+.87,obt="m-0.87,.5h"+fd+"v3h-"+(fd+5.2)+"l"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l2.6,1.5l-"+fd/2+","+fd*.87+"Z",sbt="m0.87,.5h-"+fd+"v3h"+(fd+5.2)+"l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-2.6,1.5l"+fd/2+","+fd*.87+"Z",lbt="m0,1l"+fd/2+","+fd*.87+"l2.6,-1.5l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-"+(fd/2+2.6)+","+(fd*.87+4.5)+"l2.6,1.5l"+fd/2+",-"+fd*.87+"Z",ubt="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",i2e=!0;zm.clearOutline=function(){nbt(this.dragOptions),ibt(this.dragOptions.gd)};zm.initInteractions=function(){var e=this,t=e.layers.plotbg.select("path").node(),r=e.graphDiv,n=r._fullLayout._zoomlayer,i,a;this.dragOptions={element:t,gd:r,plotinfo:{id:e.id,domain:r._fullLayout[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis},subplot:e.id,prepFn:function(T,F,q){e.dragOptions.xaxes=[e.xaxis],e.dragOptions.yaxes=[e.yaxis],i=r._fullLayout._invScaleX,a=r._fullLayout._invScaleY;var V=e.dragOptions.dragmode=r._fullLayout.dragmode;r2e(V)?e.dragOptions.minDrag=1:e.dragOptions.minDrag=void 0,V==="zoom"?(e.dragOptions.moveFn=_,e.dragOptions.clickFn=p,e.dragOptions.doneFn=C,E(T,F,q)):V==="pan"?(e.dragOptions.moveFn=g,e.dragOptions.clickFn=p,e.dragOptions.doneFn=P,M(),e.clearOutline(r)):(ebt(V)||r2e(V))&&tbt(T,F,q,e.dragOptions,V)}};var o,s,l,u,c,f,h,d,v,x;function b(T){var F={};return F[e.id+".aaxis.min"]=T.a,F[e.id+".baxis.min"]=T.b,F[e.id+".caxis.min"]=T.c,F}function p(T,F){var q=r._fullLayout.clickmode;n2e(r),T===2&&(r.emit("plotly_doubleclick",null),TH.call("_guiRelayout",r,b({a:0,b:0,c:0}))),q.indexOf("select")>-1&&T===1&&rbt(F,r,[e.xaxis],[e.yaxis],e.id,e.dragOptions),q.indexOf("event")>-1&&t2e.click(r,F,e.id)}function E(T,F,q){var V=t.getBoundingClientRect();o=F-V.left,s=q-V.top,r._fullLayout._calcInverseTransform(r);var H=r._fullLayout._invTransform,X=By.apply3DTransform(H)(o,s);o=X[0],s=X[1],l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l,u=e.aaxis.range[1]-l.a,f=$xt(e.graphDiv._fullLayout[e.id].bgcolor).getLuminance(),h="M0,"+e.h+"L"+e.w/2+", 0L"+e.w+","+e.h+"Z",d=!1,v=n.append("path").attr("class","zoombox").attr("transform",Dm(e.x0,e.y0)).style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),x=n.append("path").attr("class","zoombox-corners").attr("transform",Dm(e.x0,e.y0)).style({fill:qT.background,stroke:qT.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),e.clearOutline(r)}function k(T,F){return 1-F/e.h}function A(T,F){return 1-(T+(e.h-F)/Math.sqrt(3))/e.w}function L(T,F){return(T-(e.h-F)/Math.sqrt(3))/e.w}function _(T,F){var q=o+T*i,V=s+F*a,H=Math.max(0,Math.min(1,k(o,s),k(q,V))),X=Math.max(0,Math.min(1,A(o,s),A(q,V))),G=Math.max(0,Math.min(1,L(o,s),L(q,V))),N=(H/2+G)*e.w,W=(1-H/2-X)*e.w,re=(N+W)/2,ae=W-N,_e=(1-H)*e.h,Me=_e-ae/FT;ae.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),x.transition().style("opacity",1).duration(200),d=!0),r.emit("plotly_relayouting",b(c))}function C(){n2e(r),c!==l&&(TH.call("_guiRelayout",r,b(c)),i2e&&r.data&&r._context.showTips&&(By.notifier(E8(r,"Double-click to zoom back out"),"long"),i2e=!1))}function M(){l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l}function g(T,F){var q=T/e.xaxis._m,V=F/e.yaxis._m;c={a:l.a-V,b:l.b+(q+V)/2,c:l.c-(q-V)/2};var H=[c.a,c.b,c.c].sort(By.sorterAsc),X={a:H.indexOf(c.a),b:H.indexOf(c.b),c:H.indexOf(c.c)};H[0]<0&&(H[1]+H[0]/2<0?(H[2]+=H[0]+H[1],H[0]=H[1]=0):(H[2]+=H[0]/2,H[1]+=H[0]/2,H[0]=0),c={a:H[X.a],b:H[X.b],c:H[X.c]},F=(l.a-c.a)*e.yaxis._m,T=(l.c-c.c-l.b+c.b)*e.xaxis._m);var G=Dm(e.x0+T,e.y0+F);e.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",G);var N=Dm(-T,-F);e.clipDefRelative.select("path").attr("transform",N),e.aaxis.range=[c.a,e.sum-c.b-c.c],e.baxis.range=[e.sum-c.a-c.c,c.b],e.caxis.range=[e.sum-c.a-c.b,c.c],e.drawAxes(!1),e._hasClipOnAxisFalse&&e.plotContainer.select(".scatterlayer").selectAll(".trace").call(k8.hideOutsideRangePoints,e),r.emit("plotly_relayouting",b(c))}function P(){TH.call("_guiRelayout",r,b(c))}t.onmousemove=function(T){t2e.hover(r,T,e.id),r._fullLayout._lasthover=t,r._fullLayout._hoversubplot=e.id},t.onmouseout=function(T){r._dragging||e2e.unhover(r,T)},e2e.init(this.dragOptions)};function n2e(e){a2e.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}});var kH=ye((ylr,f2e)=>{"use strict";var cbt=dh(),fbt=Ju().attributes,Ol=Cd(),hbt=Bu().overrideAll,MH=no().extendFlat,EH={title:{text:Ol.title.text,font:Ol.title.font},color:Ol.color,tickmode:Ol.minor.tickmode,nticks:MH({},Ol.nticks,{dflt:6,min:1}),tick0:Ol.tick0,dtick:Ol.dtick,tickvals:Ol.tickvals,ticktext:Ol.ticktext,ticks:Ol.ticks,ticklen:Ol.ticklen,tickwidth:Ol.tickwidth,tickcolor:Ol.tickcolor,ticklabelstep:Ol.ticklabelstep,showticklabels:Ol.showticklabels,labelalias:Ol.labelalias,showtickprefix:Ol.showtickprefix,tickprefix:Ol.tickprefix,showticksuffix:Ol.showticksuffix,ticksuffix:Ol.ticksuffix,showexponent:Ol.showexponent,exponentformat:Ol.exponentformat,minexponent:Ol.minexponent,separatethousands:Ol.separatethousands,tickfont:Ol.tickfont,tickangle:Ol.tickangle,tickformat:Ol.tickformat,tickformatstops:Ol.tickformatstops,hoverformat:Ol.hoverformat,showline:MH({},Ol.showline,{dflt:!0}),linecolor:Ol.linecolor,linewidth:Ol.linewidth,showgrid:MH({},Ol.showgrid,{dflt:!0}),gridcolor:Ol.gridcolor,gridwidth:Ol.gridwidth,griddash:Ol.griddash,layer:Ol.layer,min:{valType:"number",dflt:0,min:0}},C8=f2e.exports=hbt({domain:fbt({name:"ternary"}),bgcolor:{valType:"color",dflt:cbt.background},sum:{valType:"number",dflt:1,min:0},aaxis:EH,baxis:EH,caxis:EH},"plot","from-root");C8.uirevision={valType:"any",editType:"none"};C8.aaxis.uirevision=C8.baxis.uirevision=C8.caxis.uirevision={valType:"any",editType:"none"}});var C_=ye((_lr,h2e)=>{"use strict";var dbt=Mr(),vbt=Vs(),pbt=Ju().defaults;h2e.exports=function(t,r,n,i){var a=i.type,o=i.attributes,s=i.handleDefaults,l=i.partition||"x",u=r._subplots[a],c=u.length,f=c&&u[0].replace(/\d+$/,""),h,d;function v(E,k){return dbt.coerce(h,d,o,E,k)}for(var x=0;x{"use strict";var gbt=va(),mbt=Vs(),L8=Mr(),ybt=C_(),_bt=t_(),xbt=r_(),bbt=T3(),wbt=xb(),Tbt=YM(),v2e=kH(),d2e=["aaxis","baxis","caxis"];p2e.exports=function(t,r,n){ybt(t,r,n,{type:"ternary",attributes:v2e,handleDefaults:Abt,font:r.font,paper_bgcolor:r.paper_bgcolor})};function Abt(e,t,r,n){var i=r("bgcolor"),a=r("sum");n.bgColor=gbt.combine(i,n.paper_bgcolor);for(var o,s,l,u=0;u=a&&(c.min=0,f.min=0,h.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function Sbt(e,t,r,n){var i=v2e[t._name];function a(d,v){return L8.coerce(e,t,i,d,v)}a("uirevision",n.uirevision),t.type="linear";var o=a("color"),s=o!==i.color.dflt?o:r.font.color,l=t._name,u=l.charAt(0).toUpperCase(),c="Component "+u,f=a("title.text",c);t._hovertitle=f===c?f:u,L8.coerceFont(a,"title.font",r.font,{overrideDflt:{size:L8.bigFont(r.font.size),color:s}}),a("min"),wbt(e,t,a,"linear"),xbt(e,t,a,"linear"),_bt(e,t,a,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),bbt(e,t,a,{outerTicks:!0});var h=a("showticklabels");h&&(L8.coerceFont(a,"tickfont",r.font,{overrideDflt:{color:s}}),a("tickangle"),a("tickformat")),Tbt(e,t,a,{dfltColor:o,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),a("hoverformat"),a("layer")}});var m2e=ye(W0=>{"use strict";var Mbt=c2e(),Ebt=kd().getSubplotCalcData,kbt=Mr().counterRegex,OT="ternary";W0.name=OT;var Cbt=W0.attr="subplot";W0.idRoot=OT;W0.idRegex=W0.attrRegex=kbt(OT);var Lbt=W0.attributes={};Lbt[Cbt]={valType:"subplotid",dflt:"ternary",editType:"calc"};W0.layoutAttributes=kH();W0.supplyLayoutDefaults=g2e();W0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[OT],a=0;a{"use strict";y2e.exports={attributes:xH(),supplyDefaults:Ube(),colorbar:Kd(),formatLabels:Hbe(),calc:Zbe(),plot:Ybe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:Jbe(),selectPoints:lT(),eventData:Qbe(),moduleType:"trace",name:"scatterternary",basePlotModule:m2e(),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}});var b2e=ye((Tlr,x2e)=>{"use strict";x2e.exports=_2e()});var CH=ye((Alr,T2e)=>{"use strict";var jh=v4(),BT=no().extendFlat,w2e=Oc().axisHoverFormat;T2e.exports={y:jh.y,x:jh.x,x0:jh.x0,y0:jh.y0,xhoverformat:w2e("x"),yhoverformat:w2e("y"),name:BT({},jh.name,{}),orientation:BT({},jh.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:jh.fillcolor,points:BT({},jh.boxpoints,{}),jitter:BT({},jh.jitter,{}),pointpos:BT({},jh.pointpos,{}),width:BT({},jh.width,{}),marker:jh.marker,text:jh.text,hovertext:jh.hovertext,hovertemplate:jh.hovertemplate,quartilemethod:jh.quartilemethod,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:jh.offsetgroup,alignmentgroup:jh.alignmentgroup,selected:jh.selected,unselected:jh.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"},zorder:jh.zorder}});var IH=ye((Slr,A2e)=>{"use strict";var LH=p4(),PH=Mr().extendFlat;A2e.exports={violinmode:PH({},LH.boxmode,{}),violingap:PH({},LH.boxgap,{}),violingroupgap:PH({},LH.boxgroupgap,{})}});var C2e=ye((Mlr,k2e)=>{"use strict";var S2e=Mr(),Pbt=va(),M2e=m4(),E2e=CH();k2e.exports=function(t,r,n,i){function a(L,_){return S2e.coerce(t,r,E2e,L,_)}function o(L,_){return S2e.coerce2(t,r,E2e,L,_)}if(M2e.handleSampleDefaults(t,r,a,i),r.visible!==!1){a("bandwidth"),a("side");var s=a("width");s||(a("scalegroup",r.name),a("scalemode"));var l=a("span"),u;Array.isArray(l)&&(u="manual"),a("spanmode",u);var c=a("line.color",(t.marker||{}).color||n),f=a("line.width"),h=a("fillcolor",Pbt.addOpacity(r.line.color,.5));M2e.handlePointsDefaults(t,r,a,{prefix:""});var d=o("box.width"),v=o("box.fillcolor",h),x=o("box.line.color",c),b=o("box.line.width",f),p=a("box.visible",!!(d||v||x||b));p||(r.box={visible:!1});var E=o("meanline.color",c),k=o("meanline.width",f),A=a("meanline.visible",!!(E||k));A||(r.meanline={visible:!1}),a("quartilemethod"),a("zorder")}}});var P2e=ye((Elr,L2e)=>{"use strict";var Ibt=Mr(),Rbt=IH(),Dbt=VI();L2e.exports=function(t,r,n){function i(a,o){return Ibt.coerce(t,r,Rbt,a,o)}Dbt._supply(t,r,n,i,"violin")}});var P8=ye(o2=>{"use strict";var zbt=Mr(),Fbt={gaussian:function(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}};o2.makeKDE=function(e,t,r){var n=r.length,i=Fbt.gaussian,a=e.bandwidth,o=1/(n*a);return function(s){for(var l=0,u=0;u{"use strict";var RH=Mr(),DH=Qa(),qbt=MV(),I2e=P8(),Obt=es().BADNUM;R2e.exports=function(t,r){var n=qbt(t,r);if(n[0].t.empty)return n;for(var i=t._fullLayout,a=DH.getFromId(t,r[r.orientation==="h"?"xaxis":"yaxis"]),o=1/0,s=-1/0,l=0,u=0,c=0;c{"use strict";var Vbt=GI().setPositionOffset,z2e=["v","h"];F2e.exports=function(t,r){for(var n=t.calcdata,i=r.xaxis,a=r.yaxis,o=0;o{"use strict";var zH=xa(),FH=Mr(),Hbt=ao(),qH=jI(),Gbt=fU(),jbt=P8();O2e.exports=function(t,r,n,i){var a=t._context.staticPlot,o=t._fullLayout,s=r.xaxis,l=r.yaxis;function u(c,f){var h=Gbt(c,{xaxis:s,yaxis:l,trace:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return Hbt.smoothopen(h[0],1)}FH.makeTraceGroups(i,n,"trace violins").each(function(c){var f=zH.select(this),h=c[0],d=h.t,v=h.trace;if(v.visible!==!0||d.empty){f.remove();return}var x=d.bPos,b=d.bdPos,p=r[d.valLetter+"axis"],E=r[d.posLetter+"axis"],k=v.side==="both",A=k||v.side==="positive",L=k||v.side==="negative",_=f.selectAll("path.violin").data(FH.identity);_.enter().append("path").style("vector-effect",a?"none":"non-scaling-stroke").attr("class","violin"),_.exit().remove(),_.each(function(V){var H=zH.select(this),X=V.density,G=X.length,N=E.c2l(V.pos+x,!0),W=E.l2p(N),re;if(v.width)re=d.maxKDE/b;else{var ae=o._violinScaleGroupStats[v.scalegroup];re=v.scalemode==="count"?ae.maxKDE/b*(ae.maxCount/V.pts.length):ae.maxKDE/b}var _e,Me,ke,ge,ie,Te,Ee;if(A){for(Te=new Array(G),ge=0;ge{"use strict";var N2e=xa(),NT=va(),Wbt=op().stylePoints;U2e.exports=function(t){var r=N2e.select(t).selectAll("g.trace.violins");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=n[0].trace,a=N2e.select(this),o=i.box||{},s=o.line||{},l=i.meanline||{},u=l.width;a.selectAll("path.violin").style("stroke-width",i.line.width+"px").call(NT.stroke,i.line.color).call(NT.fill,i.fillcolor),a.selectAll("path.box").style("stroke-width",s.width+"px").call(NT.stroke,s.color).call(NT.fill,o.fillcolor);var c={"stroke-width":u+"px","stroke-dasharray":2*u+"px,"+u+"px"};a.selectAll("path.mean").style(c).call(NT.stroke,l.color),a.selectAll("path.meanline").style(c).call(NT.stroke,l.color),Wbt(a,i,t)})}});var W2e=ye((Rlr,j2e)=>{"use strict";var Zbt=va(),OH=Mr(),Xbt=Qa(),H2e=PV(),G2e=P8();j2e.exports=function(t,r,n,i,a){a||(a={});var o=a.hoverLayer,s=t.cd,l=s[0].trace,u=l.hoveron,c=u.indexOf("violins")!==-1,f=u.indexOf("kde")!==-1,h=[],d,v;if(c||f){var x=H2e.hoverOnBoxes(t,r,n,i);if(f&&x.length>0){var b=t.xa,p=t.ya,E,k,A,L,_;l.orientation==="h"?(_=r,E="y",A=p,k="x",L=b):(_=n,E="x",A=b,k="y",L=p);var C=s[t.index];if(_>=C.span[0]&&_<=C.span[1]){var M=OH.extendFlat({},t),g=L.c2p(_,!0),P=G2e.getKdeValue(C,l,_),T=G2e.getPositionOnKdePath(C,l,g),F=A._offset,q=A._length;M[E+"0"]=T[0],M[E+"1"]=T[1],M[k+"0"]=M[k+"1"]=g,M[k+"Label"]=k+": "+Xbt.hoverLabelText(L,_,l[k+"hoverformat"])+", "+s[0].t.labels.kde+" "+P.toFixed(3);for(var V=0,H=0;H{"use strict";Z2e.exports={attributes:CH(),layoutAttributes:IH(),supplyDefaults:C2e(),crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:P2e(),calc:D2e(),crossTraceCalc:q2e(),plot:B2e(),style:V2e(),styleOnSelect:op().styleOnSelect,hoverPoints:W2e(),selectPoints:IV(),moduleType:"trace",name:"violin",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}});var K2e=ye((zlr,Y2e)=>{"use strict";Y2e.exports=X2e()});var $2e=ye((Flr,J2e)=>{"use strict";J2e.exports={eventDataKeys:["percentInitial","percentPrevious","percentTotal"]}});var NH=ye((qlr,twe)=>{"use strict";var lc=Lm(),BH=Uc().line,Ybt=vl(),Q2e=Oc().axisHoverFormat,Kbt=Wo().hovertemplateAttrs,Jbt=Wo().texttemplateAttrs,ewe=$2e(),Ny=no().extendFlat,$bt=va();twe.exports={x:lc.x,x0:lc.x0,dx:lc.dx,y:lc.y,y0:lc.y0,dy:lc.dy,xperiod:lc.xperiod,yperiod:lc.yperiod,xperiod0:lc.xperiod0,yperiod0:lc.yperiod0,xperiodalignment:lc.xperiodalignment,yperiodalignment:lc.yperiodalignment,xhoverformat:Q2e("x"),yhoverformat:Q2e("y"),hovertext:lc.hovertext,hovertemplate:Kbt({},{keys:ewe.eventDataKeys}),hoverinfo:Ny({},Ybt.hoverinfo,{flags:["name","x","y","text","percent initial","percent previous","percent total"]}),textinfo:{valType:"flaglist",flags:["label","text","percent initial","percent previous","percent total","value"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:Jbt({editType:"plot"},{keys:ewe.eventDataKeys.concat(["label","value"])}),text:lc.text,textposition:lc.textposition,insidetextanchor:Ny({},lc.insidetextanchor,{dflt:"middle"}),textangle:Ny({},lc.textangle,{dflt:0}),textfont:lc.textfont,insidetextfont:lc.insidetextfont,outsidetextfont:lc.outsidetextfont,constraintext:lc.constraintext,cliponaxis:lc.cliponaxis,orientation:Ny({},lc.orientation,{}),offset:Ny({},lc.offset,{arrayOk:!1}),width:Ny({},lc.width,{arrayOk:!1}),marker:Qbt(),connector:{fillcolor:{valType:"color",editType:"style"},line:{color:Ny({},BH.color,{dflt:$bt.defaultLine}),width:Ny({},BH.width,{dflt:0,editType:"plot"}),dash:BH.dash,editType:"style"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:lc.offsetgroup,alignmentgroup:lc.alignmentgroup,zorder:lc.zorder};function Qbt(){var e=Ny({},lc.marker);return delete e.pattern,delete e.cornerradius,e}});var UH=ye((Olr,rwe)=>{"use strict";rwe.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HH=ye((Blr,nwe)=>{"use strict";var I8=Mr(),e2t=Hb(),t2t=r0().handleText,r2t=K3(),i2t=Pg(),iwe=NH(),VH=va();function n2t(e,t,r,n){function i(f,h){return I8.coerce(e,t,iwe,f,h)}var a=r2t(e,t,n,i);if(!a){t.visible=!1;return}i2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("orientation",t.y&&!t.x?"v":"h"),i("offset"),i("width");var o=i("text");i("hovertext"),i("hovertemplate");var s=i("textposition");t2t(e,t,n,i,s,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&!t.texttemplate&&i("textinfo",I8.isArrayOrTypedArray(o)?"text+value":"value");var l=i("marker.color",r);i("marker.line.color",VH.defaultLine),i("marker.line.width");var u=i("connector.visible");if(u){i("connector.fillcolor",a2t(l));var c=i("connector.line.width");c&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function a2t(e){var t=I8.isArrayOrTypedArray(e)?"#000":e;return VH.addOpacity(t,.5*VH.opacity(t))}function o2t(e,t){var r,n;function i(o){return I8.coerce(n._input,n,iwe,o)}for(var a=0;a{"use strict";var s2t=Mr(),l2t=UH();awe.exports=function(e,t,r){var n=!1;function i(s,l){return s2t.coerce(e,t,l2t,s,l)}for(var a=0;a{"use strict";var UT=Mr();swe.exports=function(t,r){for(var n=0;n{"use strict";var uwe=Qa(),cwe=Rg(),u2t=lwe(),c2t=F0(),P4=es().BADNUM;fwe.exports=function(t,r){var n=uwe.getFromId(t,r.xaxis||"x"),i=uwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f,h;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=cwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=cwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;var d=Math.min(o.length,a.length),v=new Array(d);for(r._base=[],f=0;f{"use strict";var dwe=Gb().setGroupPositions;vwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var R8=xa(),P_=Mr(),gwe=ao(),L_=es().BADNUM,f2t=i2(),h2t=_v().clearMinTextSize;ywe.exports=function(t,r,n,i){var a=t._fullLayout;h2t("funnel",a),d2t(t,r,n,i),v2t(t,r,n,i),f2t.plot(t,r,n,i,{mode:a.funnelmode,norm:a.funnelmode,gap:a.funnelgap,groupgap:a.funnelgroupgap})};function d2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","regions");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.region").data(P_.identity);f.enter().append("g").classed("region",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[0]!==L_&&p[0]!==L_&&b[1]!==L_&&p[1]!==L_&&b[2]!==L_&&p[2]!==L_&&b[3]!==L_&&p[3]!==L_&&(c?E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2]+"H"+b[3]+"L"+b[1]+","+p[1]+"Z":E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3]+"V"+p[2]+"L"+b[1]+","+p[0]+"Z"),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function v2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible||!l.connector.line.width){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.line").data(P_.identity);f.enter().append("g").classed("line",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[3]!==void 0&&p[3]!==void 0&&(c?(E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2],E+="M"+b[1]+","+p[1]+"L"+b[3]+","+p[2]):(E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3],E+="M"+b[1]+","+p[0]+"L"+b[2]+","+p[2])),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function mwe(e,t,r,n){var i=[],a=[],o=n?t:r,s=n?r:t;return i[0]=o.c2p(e.s0,!0),a[0]=s.c2p(e.p0,!0),i[1]=o.c2p(e.s1,!0),a[1]=s.c2p(e.p1,!0),i[2]=o.c2p(e.nextS0,!0),a[2]=s.c2p(e.nextP0,!0),i[3]=o.c2p(e.nextS1,!0),a[3]=s.c2p(e.nextP1,!0),n?[i,a]:[a,i]}});var wwe=ye((jlr,bwe)=>{"use strict";var I4=xa(),xwe=ao(),jH=va(),p2t=U1().DESELECTDIM,g2t=N0(),m2t=_v().resizeText,y2t=g2t.styleTextPoints;function _2t(e,t,r){var n=r||I4.select(e).selectAll('g[class^="funnellayer"]').selectAll("g.trace");m2t(e,n,"funnel"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=I4.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o.marker;I4.select(this).call(jH.fill,s.mc||l.color).call(jH.stroke,s.mlc||l.line.color).call(xwe.dashLine,l.line.dash,s.mlw||l.line.width).style("opacity",o.selectedpoints&&!s.selected?p2t:1)}}),y2t(a,o,e),a.selectAll(".regions").each(function(){I4.select(this).selectAll("path").style("stroke-width",0).call(jH.fill,o.connector.fillcolor)}),a.selectAll(".lines").each(function(){var s=o.connector.line;xwe.lineGroupStyle(I4.select(this).selectAll("path"),s.width,s.color,s.dash)})})}bwe.exports={style:_2t}});var Swe=ye((Wlr,Awe)=>{"use strict";var Twe=va().opacity,x2t=TT().hoverOnBars,WH=Mr().formatPercent;Awe.exports=function(t,r,n,i,a){var o=x2t(t,r,n,i,a);if(o){var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=o.index,f=s[c],h=u?"x":"y";o[h+"LabelVal"]=f.s,o.percentInitial=f.begR,o.percentInitialLabel=WH(f.begR,1),o.percentPrevious=f.difR,o.percentPreviousLabel=WH(f.difR,1),o.percentTotal=f.sumR,o.percentTotalLabel=WH(f.sumR,1);var d=f.hi||l.hoverinfo,v=[];if(d&&d!=="none"&&d!=="skip"){var x=d==="all",b=d.split("+"),p=function(E){return x||b.indexOf(E)!==-1};p("percent initial")&&v.push(o.percentInitialLabel+" of initial"),p("percent previous")&&v.push(o.percentPreviousLabel+" of previous"),p("percent total")&&v.push(o.percentTotalLabel+" of total")}return o.extraText=v.join("
"),o.color=b2t(l,f),[o]}};function b2t(e,t){var r=e.marker,n=t.mc||r.color,i=t.mlc||r.line.color,a=t.mlw||r.line.width;if(Twe(n))return n;if(Twe(i)&&a)return i}});var Ewe=ye((Zlr,Mwe)=>{"use strict";Mwe.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"percentInitial"in r&&(t.percentInitial=r.percentInitial),"percentPrevious"in r&&(t.percentPrevious=r.percentPrevious),"percentTotal"in r&&(t.percentTotal=r.percentTotal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var Cwe=ye((Xlr,kwe)=>{"use strict";kwe.exports={attributes:NH(),layoutAttributes:UH(),supplyDefaults:HH().supplyDefaults,crossTraceDefaults:HH().crossTraceDefaults,supplyLayoutDefaults:owe(),calc:hwe(),crossTraceCalc:pwe(),plot:_we(),style:wwe().style,hoverPoints:Swe(),eventData:Ewe(),selectPoints:AT(),moduleType:"trace",name:"funnel",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var Pwe=ye((Ylr,Lwe)=>{"use strict";Lwe.exports=Cwe()});var Rwe=ye((Klr,Iwe)=>{"use strict";Iwe.exports={eventDataKeys:["initial","delta","final"]}});var YH=ye((Jlr,Fwe)=>{"use strict";var Uu=Lm(),ZH=Uc().line,w2t=vl(),Dwe=Oc().axisHoverFormat,T2t=Wo().hovertemplateAttrs,A2t=Wo().texttemplateAttrs,zwe=Rwe(),VT=no().extendFlat,S2t=va();function XH(e){return{marker:{color:VT({},Uu.marker.color,{arrayOk:!1,editType:"style"}),line:{color:VT({},Uu.marker.line.color,{arrayOk:!1,editType:"style"}),width:VT({},Uu.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}Fwe.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:Uu.x,x0:Uu.x0,dx:Uu.dx,y:Uu.y,y0:Uu.y0,dy:Uu.dy,xperiod:Uu.xperiod,yperiod:Uu.yperiod,xperiod0:Uu.xperiod0,yperiod0:Uu.yperiod0,xperiodalignment:Uu.xperiodalignment,yperiodalignment:Uu.yperiodalignment,xhoverformat:Dwe("x"),yhoverformat:Dwe("y"),hovertext:Uu.hovertext,hovertemplate:T2t({},{keys:zwe.eventDataKeys}),hoverinfo:VT({},w2t.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:A2t({editType:"plot"},{keys:zwe.eventDataKeys.concat(["label"])}),text:Uu.text,textposition:Uu.textposition,insidetextanchor:Uu.insidetextanchor,textangle:Uu.textangle,textfont:Uu.textfont,insidetextfont:Uu.insidetextfont,outsidetextfont:Uu.outsidetextfont,constraintext:Uu.constraintext,cliponaxis:Uu.cliponaxis,orientation:Uu.orientation,offset:Uu.offset,width:Uu.width,increasing:XH("increasing"),decreasing:XH("decreasing"),totals:XH("intermediate sums and total"),connector:{line:{color:VT({},ZH.color,{dflt:S2t.defaultLine}),width:VT({},ZH.width,{editType:"plot"}),dash:ZH.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:Uu.offsetgroup,alignmentgroup:Uu.alignmentgroup,zorder:Uu.zorder}});var KH=ye(($lr,qwe)=>{"use strict";qwe.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HT=ye((Qlr,Owe)=>{"use strict";Owe.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}});var $H=ye((eur,Vwe)=>{"use strict";var Bwe=Mr(),M2t=Hb(),E2t=r0().handleText,k2t=K3(),C2t=Pg(),Nwe=YH(),L2t=va(),Uwe=HT(),P2t=Uwe.INCREASING.COLOR,I2t=Uwe.DECREASING.COLOR,R2t="#4499FF";function JH(e,t,r){e(t+".marker.color",r),e(t+".marker.line.color",L2t.defaultLine),e(t+".marker.line.width")}function D2t(e,t,r,n){function i(u,c){return Bwe.coerce(e,t,Nwe,u,c)}var a=k2t(e,t,n,i);if(!a){t.visible=!1;return}C2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("measure"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");E2t(e,t,n,i,o,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&(i("texttemplate"),t.texttemplate||i("textinfo")),JH(i,"increasing",P2t),JH(i,"decreasing",I2t),JH(i,"totals",R2t);var s=i("connector.visible");if(s){i("connector.mode");var l=i("connector.line.width");l&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function z2t(e,t){var r,n;function i(o){return Bwe.coerce(n._input,n,Nwe,o)}if(t.waterfallmode==="group")for(var a=0;a{"use strict";var F2t=Mr(),q2t=KH();Hwe.exports=function(e,t,r){var n=!1;function i(s,l){return F2t.coerce(e,t,q2t,s,l)}for(var a=0;a{"use strict";var jwe=Qa(),Wwe=Rg(),Zwe=Mr().mergeArray,O2t=F0(),Xwe=es().BADNUM;function QH(e){return e==="a"||e==="absolute"}function eG(e){return e==="t"||e==="total"}Ywe.exports=function(t,r){var n=jwe.getFromId(t,r.xaxis||"x"),i=jwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=Wwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=Wwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var f=Math.min(o.length,a.length),h=new Array(f),d=0,v,x=!1,b=0;b{"use strict";var Jwe=Gb().setGroupPositions;$we.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var e3e=xa(),D8=Mr(),B2t=ao(),GT=es().BADNUM,N2t=i2(),U2t=_v().clearMinTextSize;t3e.exports=function(t,r,n,i){var a=t._fullLayout;U2t("waterfall",a),N2t.plot(t,r,n,i,{mode:a.waterfallmode,norm:a.waterfallmode,gap:a.waterfallgap,groupgap:a.waterfallgroupgap}),V2t(t,r,n,i)};function V2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;D8.makeTraceGroups(n,r,"trace bars").each(function(o){var s=e3e.select(this),l=o[0].trace,u=D8.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=l.connector.mode,h=u.selectAll("g.line").data(D8.identity);h.enter().append("g").classed("line",!0),h.exit().remove();var d=h.size();h.each(function(v,x){if(!(x!==d-1&&!v.cNext)){var b=H2t(v,i,a,c),p=b[0],E=b[1],k="";p[0]!==GT&&E[0]!==GT&&p[1]!==GT&&E[1]!==GT&&(f==="spanning"&&!v.isSum&&x>0&&(c?k+="M"+p[0]+","+E[1]+"V"+E[0]:k+="M"+p[1]+","+E[0]+"H"+p[0]),f!=="between"&&(v.isSum||x{"use strict";var z8=xa(),i3e=ao(),n3e=va(),G2t=U1().DESELECTDIM,j2t=N0(),W2t=_v().resizeText,Z2t=j2t.styleTextPoints;function X2t(e,t,r){var n=r||z8.select(e).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");W2t(e,n,"waterfall"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=z8.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o[s.dir].marker;z8.select(this).call(n3e.fill,l.color).call(n3e.stroke,l.line.color).call(i3e.dashLine,l.line.dash,l.line.width).style("opacity",o.selectedpoints&&!s.selected?G2t:1)}}),Z2t(a,o,e),a.selectAll(".lines").each(function(){var s=o.connector.line;i3e.lineGroupStyle(z8.select(this).selectAll("path"),s.width,s.color,s.dash)})})}a3e.exports={style:X2t}});var f3e=ye((our,c3e)=>{"use strict";var Y2t=Qa().hoverLabelText,s3e=va().opacity,K2t=TT().hoverOnBars,l3e=HT(),u3e={increasing:l3e.INCREASING.SYMBOL,decreasing:l3e.DECREASING.SYMBOL};c3e.exports=function(t,r,n,i,a){var o=K2t(t,r,n,i,a);if(!o)return;var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=u?"x":"y",f=u?t.xa:t.ya;function h(_){return Y2t(f,_,l[c+"hoverformat"])}var d=o.index,v=s[d],x=v.isSum?v.b+v.s:v.rawS;o.initial=v.b+v.s-x,o.delta=x,o.final=o.initial+o.delta;var b=h(Math.abs(o.delta));o.deltaLabel=x<0?"("+b+")":b,o.finalLabel=h(o.final),o.initialLabel=h(o.initial);var p=v.hi||l.hoverinfo,E=[];if(p&&p!=="none"&&p!=="skip"){var k=p==="all",A=p.split("+"),L=function(_){return k||A.indexOf(_)!==-1};v.isSum||(L("final")&&(u?!L("x"):!L("y"))&&E.push(o.finalLabel),L("delta")&&(x<0?E.push(o.deltaLabel+" "+u3e.decreasing):E.push(o.deltaLabel+" "+u3e.increasing)),L("initial")&&E.push("Initial: "+o.initialLabel))}return E.length&&(o.extraText=E.join("
")),o.color=J2t(l,v),[o]};function J2t(e,t){var r=e[t.dir].marker,n=r.color,i=r.line.color,a=r.line.width;if(s3e(n))return n;if(s3e(i)&&a)return i}});var d3e=ye((sur,h3e)=>{"use strict";h3e.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"initial"in r&&(t.initial=r.initial),"delta"in r&&(t.delta=r.delta),"final"in r&&(t.final=r.final),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var p3e=ye((lur,v3e)=>{"use strict";v3e.exports={attributes:YH(),layoutAttributes:KH(),supplyDefaults:$H().supplyDefaults,crossTraceDefaults:$H().crossTraceDefaults,supplyLayoutDefaults:Gwe(),calc:Kwe(),crossTraceCalc:Qwe(),plot:r3e(),style:o3e().style,hoverPoints:f3e(),eventData:d3e(),selectPoints:AT(),moduleType:"trace",name:"waterfall",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var m3e=ye((uur,g3e)=>{"use strict";g3e.exports=p3e()});var jT=ye((cur,y3e)=>{"use strict";y3e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(e){return e.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(e){var t=e.slice(0,3);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(e){var t=e.slice(0,4);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%",""]}}}});var tG=ye((fur,x3e)=>{"use strict";var $2t=vl(),Q2t=Uc().zorder,ewt=Wo().hovertemplateAttrs,_3e=no().extendFlat,twt=jT().colormodel,D4=["rgb","rgba","rgba256","hsl","hsla"],rwt=[],iwt=[];for(WT=0;WT{"use strict";var nwt=Mr(),awt=tG(),b3e=jT(),owt=Ly().IMAGE_URL_PREFIX;w3e.exports=function(t,r){function n(o,s){return nwt.coerce(t,r,awt,o,s)}n("source"),r.source&&!r.source.match(owt)&&delete r.source,r._hasSource=!!r.source;var i=n("z");if(r._hasZ=!(i===void 0||!i.length||!i[0]||!i[0].length),!r._hasZ&&!r._hasSource){r.visible=!1;return}n("x0"),n("y0"),n("dx"),n("dy");var a;r._hasZ?(n("colormodel","rgb"),a=b3e.colormodel[r.colormodel],n("zmin",a.zminDflt||a.min),n("zmax",a.zmaxDflt||a.max)):r._hasSource&&(r.colormodel="rgba256",a=b3e.colormodel[r.colormodel],r.zmin=a.zminDflt,r.zmax=a.zmaxDflt),n("zsmooth"),n("text"),n("hovertext"),n("hovertemplate"),r._length=null,n("zorder")}});var Uy=ye((dur,rG)=>{typeof Object.create=="function"?rG.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:rG.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}}});var iG=ye((vur,A3e)=>{A3e.exports=vb().EventEmitter});var E3e=ye(F8=>{"use strict";F8.byteLength=lwt;F8.toByteArray=cwt;F8.fromByteArray=dwt;var Fm=[],Z0=[],swt=typeof Uint8Array!="undefined"?Uint8Array:Array,nG="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(s2=0,S3e=nG.length;s20)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function lwt(e){var t=M3e(e),r=t[0],n=t[1];return(r+n)*3/4-n}function uwt(e,t,r){return(t+r)*3/4-r}function cwt(e){var t,r=M3e(e),n=r[0],i=r[1],a=new swt(uwt(e,n,i)),o=0,s=i>0?n-4:n,l;for(l=0;l>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Z0[e.charCodeAt(l)]<<2|Z0[e.charCodeAt(l+1)]>>4,a[o++]=t&255),i===1&&(t=Z0[e.charCodeAt(l)]<<10|Z0[e.charCodeAt(l+1)]<<4|Z0[e.charCodeAt(l+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function fwt(e){return Fm[e>>18&63]+Fm[e>>12&63]+Fm[e>>6&63]+Fm[e&63]}function hwt(e,t,r){for(var n,i=[],a=t;as?s:o+a));return n===1?(t=e[r-1],i.push(Fm[t>>2]+Fm[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(Fm[t>>10]+Fm[t>>4&63]+Fm[t<<2&63]+"=")),i.join("")}});var k3e=ye(aG=>{aG.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=h,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};aG.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,v=n?1:-1,x=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=h/l:t+=h*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=v,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=v,o/=256,u-=8);e[r+d-v]|=x*128}});var u2=ye(KT=>{"use strict";var oG=E3e(),XT=k3e(),C3e=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;KT.Buffer=In;KT.SlowBuffer=_wt;KT.INSPECT_MAX_BYTES=50;var q8=2147483647;KT.kMaxLength=q8;In.TYPED_ARRAY_SUPPORT=vwt();!In.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function vwt(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(In.prototype,"parent",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.buffer}});Object.defineProperty(In.prototype,"offset",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.byteOffset}});function Vy(e){if(e>q8)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,In.prototype),t}function In(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return cG(e)}return R3e(e,t,r)}In.poolSize=8192;function R3e(e,t,r){if(typeof e=="string")return gwt(e,t);if(ArrayBuffer.isView(e))return mwt(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(qm(e,ArrayBuffer)||e&&qm(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(qm(e,SharedArrayBuffer)||e&&qm(e.buffer,SharedArrayBuffer)))return lG(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return In.from(n,t,r);let i=ywt(e);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return In.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}In.from=function(e,t,r){return R3e(e,t,r)};Object.setPrototypeOf(In.prototype,Uint8Array.prototype);Object.setPrototypeOf(In,Uint8Array);function D3e(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function pwt(e,t,r){return D3e(e),e<=0?Vy(e):t!==void 0?typeof r=="string"?Vy(e).fill(t,r):Vy(e).fill(t):Vy(e)}In.alloc=function(e,t,r){return pwt(e,t,r)};function cG(e){return D3e(e),Vy(e<0?0:fG(e)|0)}In.allocUnsafe=function(e){return cG(e)};In.allocUnsafeSlow=function(e){return cG(e)};function gwt(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!In.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=z3e(e,t)|0,n=Vy(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function sG(e){let t=e.length<0?0:fG(e.length)|0,r=Vy(t);for(let n=0;n=q8)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+q8.toString(16)+" bytes");return e|0}function _wt(e){return+e!=e&&(e=0),In.alloc(+e)}In.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==In.prototype};In.compare=function(t,r){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),qm(r,Uint8Array)&&(r=In.from(r,r.offset,r.byteLength)),!In.isBuffer(t)||!In.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let n=t.length,i=r.length;for(let a=0,o=Math.min(n,i);ai.length?(In.isBuffer(o)||(o=In.from(o)),o.copy(i,a)):Uint8Array.prototype.set.call(i,o,a);else if(In.isBuffer(o))o.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return i};function z3e(e,t){if(In.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||qm(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return uG(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return G3e(e).length;default:if(i)return n?-1:uG(e).length;t=(""+t).toLowerCase(),i=!0}}In.byteLength=z3e;function xwt(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Lwt(this,t,r);case"utf8":case"utf-8":return q3e(this,t,r);case"ascii":return kwt(this,t,r);case"latin1":case"binary":return Cwt(this,t,r);case"base64":return Mwt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pwt(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}In.prototype._isBuffer=!0;function l2(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}In.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};C3e&&(In.prototype[C3e]=In.prototype.inspect);In.prototype.compare=function(t,r,n,i,a){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),!In.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;let o=a-i,s=n-r,l=Math.min(o,s),u=this.slice(i,a),c=t.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,dG(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=In.from(t,n)),In.isBuffer(t))return t.length===0?-1:L3e(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):L3e(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function L3e(e,t,r,n,i){let a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function l(c,f){return a===1?c[f]:c.readUInt16BE(f*a)}let u;if(i){let c=-1;for(u=r;uo&&(r=o-s),u=r;u>=0;u--){let c=!0;for(let f=0;fi&&(n=i)):n=i;let a=t.length;n>a/2&&(n=a/2);let o;for(o=0;o>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return bwt(this,t,r,n);case"utf8":case"utf-8":return wwt(this,t,r,n);case"ascii":case"latin1":case"binary":return Twt(this,t,r,n);case"base64":return Awt(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Swt(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};In.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Mwt(e,t,r){return t===0&&r===e.length?oG.fromByteArray(e):oG.fromByteArray(e.slice(t,r))}function q3e(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:a>223?3:a>191?2:1;if(i+s<=r){let l,u,c,f;switch(s){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(o=f));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(f=(a&15)<<12|(l&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(f=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Ewt(n)}var P3e=4096;function Ewt(e){let t=e.length;if(t<=P3e)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=t;an&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}In.prototype.readUintLE=In.prototype.readUIntLE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t+--r],a=1;for(;r>0&&(a*=256);)i+=this[t+--r]*a;return i};In.prototype.readUint8=In.prototype.readUInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]};In.prototype.readUint16LE=In.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]|this[t+1]<<8};In.prototype.readUint16BE=In.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]<<8|this[t+1]};In.prototype.readUint32LE=In.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};In.prototype.readUint32BE=In.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};In.prototype.readBigUInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,a=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],a=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o=a&&(i-=Math.pow(2,8*r)),i};In.prototype.readIntBE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=r,a=1,o=this[t+--i];for(;i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};In.prototype.readInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};In.prototype.readInt16LE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};In.prototype.readInt16BE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};In.prototype.readInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};In.prototype.readInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};In.prototype.readBigInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,r||$d(t,4,this.length),XT.read(this,t,!0,23,4)};In.prototype.readFloatBE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),XT.read(this,t,!1,23,4)};In.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!0,52,8)};In.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!1,52,8)};function Rp(e,t,r,n,i,a){if(!In.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}In.prototype.writeUintLE=In.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=1,o=0;for(this[r]=t&255;++o>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=n-1,o=1;for(this[r+a]=t&255;--a>=0&&(o*=256);)this[r+a]=t/o&255;return r+n};In.prototype.writeUint8=In.prototype.writeUInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,255,0),this[r]=t&255,r+1};In.prototype.writeUint16LE=In.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeUint16BE=In.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeUint32LE=In.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};In.prototype.writeUint32BE=In.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function O3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,r}function B3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a=a>>8,e[r+6]=a,a=a>>8,e[r+5]=a,a=a>>8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o=o>>8,e[r+2]=o,o=o>>8,e[r+1]=o,o=o>>8,e[r]=o,r+8}In.prototype.writeBigUInt64LE=I_(function(t,r=0){return O3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeBigUInt64BE=I_(function(t,r=0){return B3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=0,o=1,s=0;for(this[r]=t&255;++a>0)-s&255;return r+n};In.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=n-1,o=1,s=0;for(this[r+a]=t&255;--a>=0&&(o*=256);)t<0&&s===0&&this[r+a+1]!==0&&(s=1),this[r+a]=(t/o>>0)-s&255;return r+n};In.prototype.writeInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};In.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};In.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};In.prototype.writeBigInt64LE=I_(function(t,r=0){return O3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});In.prototype.writeBigInt64BE=I_(function(t,r=0){return B3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function N3e(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function U3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,4,34028234663852886e22,-34028234663852886e22),XT.write(e,t,r,n,23,4),r+4}In.prototype.writeFloatLE=function(t,r,n){return U3e(this,t,r,!0,n)};In.prototype.writeFloatBE=function(t,r,n){return U3e(this,t,r,!1,n)};function V3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,8,17976931348623157e292,-17976931348623157e292),XT.write(e,t,r,n,52,8),r+8}In.prototype.writeDoubleLE=function(t,r,n){return V3e(this,t,r,!0,n)};In.prototype.writeDoubleBE=function(t,r,n){return V3e(this,t,r,!1,n)};In.prototype.copy=function(t,r,n,i){if(!In.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let a;if(typeof t=="number")for(a=r;a2**32?i=I3e(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=I3e(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function I3e(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Iwt(e,t,r){YT(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&z4(t,e.length-(r+1))}function H3e(e,t,r,n,i,a){if(e>r||e3?t===0||t===BigInt(0)?s=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:s=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:s=`>= ${t}${o} and <= ${r}${o}`,new ZT.ERR_OUT_OF_RANGE("value",s,e)}Iwt(n,i,a)}function YT(e,t){if(typeof e!="number")throw new ZT.ERR_INVALID_ARG_TYPE(t,"number",e)}function z4(e,t,r){throw Math.floor(e)!==e?(YT(e,r),new ZT.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new ZT.ERR_BUFFER_OUT_OF_BOUNDS:new ZT.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Rwt=/[^+/0-9A-Za-z-_]/g;function Dwt(e){if(e=e.split("=")[0],e=e.trim().replace(Rwt,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function uG(e,t){t=t||1/0;let r,n=e.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function zwt(e){let t=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function G3e(e){return oG.toByteArray(Dwt(e))}function O8(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function qm(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function dG(e){return e!==e}var qwt=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function I_(e){return typeof BigInt=="undefined"?Owt:e}function Owt(){throw new Error("BigInt not supported")}});var B8=ye((_ur,j3e)=>{"use strict";j3e.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var a=Object.getOwnPropertySymbols(t);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(t,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var F4=ye((xur,W3e)=>{"use strict";var Bwt=B8();W3e.exports=function(){return Bwt()&&!!Symbol.toStringTag}});var X3e=ye((bur,Z3e)=>{"use strict";Z3e.exports=Error});var K3e=ye((wur,Y3e)=>{"use strict";Y3e.exports=EvalError});var $3e=ye((Tur,J3e)=>{"use strict";J3e.exports=RangeError});var eTe=ye((Aur,Q3e)=>{"use strict";Q3e.exports=ReferenceError});var vG=ye((Sur,tTe)=>{"use strict";tTe.exports=SyntaxError});var q4=ye((Mur,rTe)=>{"use strict";rTe.exports=TypeError});var nTe=ye((Eur,iTe)=>{"use strict";iTe.exports=URIError});var sTe=ye((kur,oTe)=>{"use strict";var aTe=typeof Symbol!="undefined"&&Symbol,Nwt=B8();oTe.exports=function(){return typeof aTe!="function"||typeof Symbol!="function"||typeof aTe("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:Nwt()}});var cTe=ye((Cur,uTe)=>{"use strict";var lTe={foo:{}},Uwt=Object;uTe.exports=function(){return{__proto__:lTe}.foo===lTe.foo&&!({__proto__:null}instanceof Uwt)}});var dTe=ye((Lur,hTe)=>{"use strict";var Vwt="Function.prototype.bind called on incompatible ",Hwt=Object.prototype.toString,Gwt=Math.max,jwt="[object Function]",fTe=function(t,r){for(var n=[],i=0;i{"use strict";var Xwt=dTe();vTe.exports=Function.prototype.bind||Xwt});var gTe=ye((Iur,pTe)=>{"use strict";var Ywt=Function.prototype.call,Kwt=Object.prototype.hasOwnProperty,Jwt=N8();pTe.exports=Jwt.call(Ywt,Kwt)});var t5=ye((Rur,bTe)=>{"use strict";var jl,$wt=X3e(),Qwt=K3e(),e3t=$3e(),t3t=eTe(),e5=vG(),QT=q4(),r3t=nTe(),xTe=Function,pG=function(e){try{return xTe('"use strict"; return ('+e+").constructor;")()}catch(t){}},c2=Object.getOwnPropertyDescriptor;if(c2)try{c2({},"")}catch(e){c2=null}var gG=function(){throw new QT},i3t=c2?function(){try{return arguments.callee,gG}catch(e){try{return c2(arguments,"callee").get}catch(t){return gG}}}():gG,JT=sTe()(),n3t=cTe()(),Qd=Object.getPrototypeOf||(n3t?function(e){return e.__proto__}:null),$T={},a3t=typeof Uint8Array=="undefined"||!Qd?jl:Qd(Uint8Array),f2={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?jl:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?jl:ArrayBuffer,"%ArrayIteratorPrototype%":JT&&Qd?Qd([][Symbol.iterator]()):jl,"%AsyncFromSyncIteratorPrototype%":jl,"%AsyncFunction%":$T,"%AsyncGenerator%":$T,"%AsyncGeneratorFunction%":$T,"%AsyncIteratorPrototype%":$T,"%Atomics%":typeof Atomics=="undefined"?jl:Atomics,"%BigInt%":typeof BigInt=="undefined"?jl:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?jl:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?jl:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?jl:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$wt,"%eval%":eval,"%EvalError%":Qwt,"%Float32Array%":typeof Float32Array=="undefined"?jl:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?jl:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?jl:FinalizationRegistry,"%Function%":xTe,"%GeneratorFunction%":$T,"%Int8Array%":typeof Int8Array=="undefined"?jl:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?jl:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?jl:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":JT&&Qd?Qd(Qd([][Symbol.iterator]())):jl,"%JSON%":typeof JSON=="object"?JSON:jl,"%Map%":typeof Map=="undefined"?jl:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!JT||!Qd?jl:Qd(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?jl:Promise,"%Proxy%":typeof Proxy=="undefined"?jl:Proxy,"%RangeError%":e3t,"%ReferenceError%":t3t,"%Reflect%":typeof Reflect=="undefined"?jl:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?jl:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!JT||!Qd?jl:Qd(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?jl:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":JT&&Qd?Qd(""[Symbol.iterator]()):jl,"%Symbol%":JT?Symbol:jl,"%SyntaxError%":e5,"%ThrowTypeError%":i3t,"%TypedArray%":a3t,"%TypeError%":QT,"%Uint8Array%":typeof Uint8Array=="undefined"?jl:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?jl:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?jl:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?jl:Uint32Array,"%URIError%":r3t,"%WeakMap%":typeof WeakMap=="undefined"?jl:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?jl:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?jl:WeakSet};if(Qd)try{null.error}catch(e){mTe=Qd(Qd(e)),f2["%Error.prototype%"]=mTe}var mTe,o3t=function e(t){var r;if(t==="%AsyncFunction%")r=pG("async function () {}");else if(t==="%GeneratorFunction%")r=pG("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=pG("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Qd&&(r=Qd(i.prototype))}return f2[t]=r,r},yTe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O4=N8(),U8=gTe(),s3t=O4.call(Function.call,Array.prototype.concat),l3t=O4.call(Function.apply,Array.prototype.splice),_Te=O4.call(Function.call,String.prototype.replace),V8=O4.call(Function.call,String.prototype.slice),u3t=O4.call(Function.call,RegExp.prototype.exec),c3t=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,f3t=/\\(\\)?/g,h3t=function(t){var r=V8(t,0,1),n=V8(t,-1);if(r==="%"&&n!=="%")throw new e5("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new e5("invalid intrinsic syntax, expected opening `%`");var i=[];return _Te(t,c3t,function(a,o,s,l){i[i.length]=s?_Te(l,f3t,"$1"):o||a}),i},d3t=function(t,r){var n=t,i;if(U8(yTe,n)&&(i=yTe[n],n="%"+i[0]+"%"),U8(f2,n)){var a=f2[n];if(a===$T&&(a=o3t(n)),typeof a=="undefined"&&!r)throw new QT("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new e5("intrinsic "+t+" does not exist!")};bTe.exports=function(t,r){if(typeof t!="string"||t.length===0)throw new QT("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new QT('"allowMissing" argument must be a boolean');if(u3t(/^%?[^%]*%?$/,t)===null)throw new e5("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=h3t(t),i=n.length>0?n[0]:"",a=d3t("%"+i+"%",r),o=a.name,s=a.value,l=!1,u=a.alias;u&&(i=u[0],l3t(n,s3t([0,1],u)));for(var c=1,f=!0;c=n.length){var x=c2(s,h);f=!!x,f&&"get"in x&&!("originalValue"in x.get)?s=x.get:s=s[h]}else f=U8(s,h),s=s[h];f&&!l&&(f2[o]=s)}}return s}});var G8=ye((Dur,wTe)=>{"use strict";var v3t=t5(),H8=v3t("%Object.defineProperty%",!0)||!1;if(H8)try{H8({},"a",{value:1})}catch(e){H8=!1}wTe.exports=H8});var B4=ye((zur,TTe)=>{"use strict";var p3t=t5(),j8=p3t("%Object.getOwnPropertyDescriptor%",!0);if(j8)try{j8([],"length")}catch(e){j8=null}TTe.exports=j8});var ETe=ye((Fur,MTe)=>{"use strict";var ATe=G8(),g3t=vG(),r5=q4(),STe=B4();MTe.exports=function(t,r,n){if(!t||typeof t!="object"&&typeof t!="function")throw new r5("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new r5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new r5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new r5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new r5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new r5("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,o=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,l=!!STe&&STe(t,r);if(ATe)ATe(t,r,{configurable:o===null&&l?l.configurable:!o,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(s||!i&&!a&&!o)t[r]=n;else throw new g3t("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var yG=ye((qur,CTe)=>{"use strict";var mG=G8(),kTe=function(){return!!mG};kTe.hasArrayLengthDefineBug=function(){if(!mG)return null;try{return mG([],"length",{value:1}).length!==1}catch(t){return!0}};CTe.exports=kTe});var DTe=ye((Our,RTe)=>{"use strict";var m3t=t5(),LTe=ETe(),y3t=yG()(),PTe=B4(),ITe=q4(),_3t=m3t("%Math.floor%");RTe.exports=function(t,r){if(typeof t!="function")throw new ITe("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||_3t(r)!==r)throw new ITe("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in t&&PTe){var o=PTe(t,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(a=!1)}return(i||a||!n)&&(y3t?LTe(t,"length",r,!0,!0):LTe(t,"length",r)),t}});var N4=ye((Bur,W8)=>{"use strict";var _G=N8(),Z8=t5(),x3t=DTe(),b3t=q4(),qTe=Z8("%Function.prototype.apply%"),OTe=Z8("%Function.prototype.call%"),BTe=Z8("%Reflect.apply%",!0)||_G.call(OTe,qTe),zTe=G8(),w3t=Z8("%Math.max%");W8.exports=function(t){if(typeof t!="function")throw new b3t("a function is required");var r=BTe(_G,OTe,arguments);return x3t(r,1+w3t(0,t.length-(arguments.length-1)),!0)};var FTe=function(){return BTe(_G,qTe,arguments)};zTe?zTe(W8.exports,"apply",{value:FTe}):W8.exports.apply=FTe});var i5=ye((Nur,VTe)=>{"use strict";var NTe=t5(),UTe=N4(),T3t=UTe(NTe("String.prototype.indexOf"));VTe.exports=function(t,r){var n=NTe(t,!!r);return typeof n=="function"&&T3t(t,".prototype.")>-1?UTe(n):n}});var jTe=ye((Uur,GTe)=>{"use strict";var A3t=F4()(),S3t=i5(),xG=S3t("Object.prototype.toString"),X8=function(t){return A3t&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:xG(t)==="[object Arguments]"},HTe=function(t){return X8(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&xG(t)!=="[object Array]"&&xG(t.callee)==="[object Function]"},M3t=function(){return X8(arguments)}();X8.isLegacyArguments=HTe;GTe.exports=M3t?X8:HTe});var XTe=ye((Vur,ZTe)=>{"use strict";var E3t=Object.prototype.toString,k3t=Function.prototype.toString,C3t=/^\s*(?:function)?\*/,WTe=F4()(),bG=Object.getPrototypeOf,L3t=function(){if(!WTe)return!1;try{return Function("return function*() {}")()}catch(e){}},wG;ZTe.exports=function(t){if(typeof t!="function")return!1;if(C3t.test(k3t.call(t)))return!0;if(!WTe){var r=E3t.call(t);return r==="[object GeneratorFunction]"}if(!bG)return!1;if(typeof wG=="undefined"){var n=L3t();wG=n?bG(n):!1}return bG(t)===wG}});var $Te=ye((Hur,JTe)=>{"use strict";var KTe=Function.prototype.toString,n5=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,AG,Y8;if(typeof n5=="function"&&typeof Object.defineProperty=="function")try{AG=Object.defineProperty({},"length",{get:function(){throw Y8}}),Y8={},n5(function(){throw 42},null,AG)}catch(e){e!==Y8&&(n5=null)}else n5=null;var P3t=/^\s*class\b/,SG=function(t){try{var r=KTe.call(t);return P3t.test(r)}catch(n){return!1}},TG=function(t){try{return SG(t)?!1:(KTe.call(t),!0)}catch(r){return!1}},K8=Object.prototype.toString,I3t="[object Object]",R3t="[object Function]",D3t="[object GeneratorFunction]",z3t="[object HTMLAllCollection]",F3t="[object HTML document.all class]",q3t="[object HTMLCollection]",O3t=typeof Symbol=="function"&&!!Symbol.toStringTag,B3t=!(0 in[,]),MG=function(){return!1};typeof document=="object"&&(YTe=document.all,K8.call(YTe)===K8.call(document.all)&&(MG=function(t){if((B3t||!t)&&(typeof t=="undefined"||typeof t=="object"))try{var r=K8.call(t);return(r===z3t||r===F3t||r===q3t||r===I3t)&&t("")==null}catch(n){}return!1}));var YTe;JTe.exports=n5?function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{n5(t,null,AG)}catch(r){if(r!==Y8)return!1}return!SG(t)&&TG(t)}:function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(O3t)return TG(t);if(SG(t))return!1;var r=K8.call(t);return r!==R3t&&r!==D3t&&!/^\[object HTML/.test(r)?!1:TG(t)}});var EG=ye((Gur,e5e)=>{"use strict";var N3t=$Te(),U3t=Object.prototype.toString,QTe=Object.prototype.hasOwnProperty,V3t=function(t,r,n){for(var i=0,a=t.length;i=3&&(i=n),U3t.call(t)==="[object Array]"?V3t(t,r,i):typeof t=="string"?H3t(t,r,i):G3t(t,r,i)};e5e.exports=j3t});var CG=ye((jur,t5e)=>{"use strict";var kG=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],W3t=typeof globalThis=="undefined"?window:globalThis;t5e.exports=function(){for(var t=[],r=0;r{"use strict";var $8=EG(),Z3t=CG(),r5e=N4(),IG=i5(),J8=B4(),X3t=IG("Object.prototype.toString"),n5e=F4()(),i5e=typeof globalThis=="undefined"?window:globalThis,PG=Z3t(),RG=IG("String.prototype.slice"),LG=Object.getPrototypeOf,Y3t=IG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1?r:r!=="Object"?!1:J3t(t)}return J8?K3t(t):null}});var h5e=ye((Zur,f5e)=>{"use strict";var s5e=EG(),$3t=CG(),zG=i5(),Q3t=zG("Object.prototype.toString"),l5e=F4()(),eR=B4(),eTt=typeof globalThis=="undefined"?window:globalThis,u5e=$3t(),tTt=zG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1}return eR?iTt(t):!1}});var OG=ye(Bl=>{"use strict";var nTt=jTe(),aTt=XTe(),Hg=o5e(),d5e=h5e();function a5(e){return e.call.bind(e)}var v5e=typeof BigInt!="undefined",p5e=typeof Symbol!="undefined",X0=a5(Object.prototype.toString),oTt=a5(Number.prototype.valueOf),sTt=a5(String.prototype.valueOf),lTt=a5(Boolean.prototype.valueOf);v5e&&(g5e=a5(BigInt.prototype.valueOf));var g5e;p5e&&(m5e=a5(Symbol.prototype.valueOf));var m5e;function V4(e,t){if(typeof e!="object")return!1;try{return t(e),!0}catch(r){return!1}}Bl.isArgumentsObject=nTt;Bl.isGeneratorFunction=aTt;Bl.isTypedArray=d5e;function uTt(e){return typeof Promise!="undefined"&&e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"}Bl.isPromise=uTt;function cTt(e){return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?ArrayBuffer.isView(e):d5e(e)||_5e(e)}Bl.isArrayBufferView=cTt;function fTt(e){return Hg(e)==="Uint8Array"}Bl.isUint8Array=fTt;function hTt(e){return Hg(e)==="Uint8ClampedArray"}Bl.isUint8ClampedArray=hTt;function dTt(e){return Hg(e)==="Uint16Array"}Bl.isUint16Array=dTt;function vTt(e){return Hg(e)==="Uint32Array"}Bl.isUint32Array=vTt;function pTt(e){return Hg(e)==="Int8Array"}Bl.isInt8Array=pTt;function gTt(e){return Hg(e)==="Int16Array"}Bl.isInt16Array=gTt;function mTt(e){return Hg(e)==="Int32Array"}Bl.isInt32Array=mTt;function yTt(e){return Hg(e)==="Float32Array"}Bl.isFloat32Array=yTt;function _Tt(e){return Hg(e)==="Float64Array"}Bl.isFloat64Array=_Tt;function xTt(e){return Hg(e)==="BigInt64Array"}Bl.isBigInt64Array=xTt;function bTt(e){return Hg(e)==="BigUint64Array"}Bl.isBigUint64Array=bTt;function tR(e){return X0(e)==="[object Map]"}tR.working=typeof Map!="undefined"&&tR(new Map);function wTt(e){return typeof Map=="undefined"?!1:tR.working?tR(e):e instanceof Map}Bl.isMap=wTt;function rR(e){return X0(e)==="[object Set]"}rR.working=typeof Set!="undefined"&&rR(new Set);function TTt(e){return typeof Set=="undefined"?!1:rR.working?rR(e):e instanceof Set}Bl.isSet=TTt;function iR(e){return X0(e)==="[object WeakMap]"}iR.working=typeof WeakMap!="undefined"&&iR(new WeakMap);function ATt(e){return typeof WeakMap=="undefined"?!1:iR.working?iR(e):e instanceof WeakMap}Bl.isWeakMap=ATt;function qG(e){return X0(e)==="[object WeakSet]"}qG.working=typeof WeakSet!="undefined"&&qG(new WeakSet);function STt(e){return qG(e)}Bl.isWeakSet=STt;function nR(e){return X0(e)==="[object ArrayBuffer]"}nR.working=typeof ArrayBuffer!="undefined"&&nR(new ArrayBuffer);function y5e(e){return typeof ArrayBuffer=="undefined"?!1:nR.working?nR(e):e instanceof ArrayBuffer}Bl.isArrayBuffer=y5e;function aR(e){return X0(e)==="[object DataView]"}aR.working=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"&&aR(new DataView(new ArrayBuffer(1),0,1));function _5e(e){return typeof DataView=="undefined"?!1:aR.working?aR(e):e instanceof DataView}Bl.isDataView=_5e;var FG=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:void 0;function U4(e){return X0(e)==="[object SharedArrayBuffer]"}function x5e(e){return typeof FG=="undefined"?!1:(typeof U4.working=="undefined"&&(U4.working=U4(new FG)),U4.working?U4(e):e instanceof FG)}Bl.isSharedArrayBuffer=x5e;function MTt(e){return X0(e)==="[object AsyncFunction]"}Bl.isAsyncFunction=MTt;function ETt(e){return X0(e)==="[object Map Iterator]"}Bl.isMapIterator=ETt;function kTt(e){return X0(e)==="[object Set Iterator]"}Bl.isSetIterator=kTt;function CTt(e){return X0(e)==="[object Generator]"}Bl.isGeneratorObject=CTt;function LTt(e){return X0(e)==="[object WebAssembly.Module]"}Bl.isWebAssemblyCompiledModule=LTt;function b5e(e){return V4(e,oTt)}Bl.isNumberObject=b5e;function w5e(e){return V4(e,sTt)}Bl.isStringObject=w5e;function T5e(e){return V4(e,lTt)}Bl.isBooleanObject=T5e;function A5e(e){return v5e&&V4(e,g5e)}Bl.isBigIntObject=A5e;function S5e(e){return p5e&&V4(e,m5e)}Bl.isSymbolObject=S5e;function PTt(e){return b5e(e)||w5e(e)||T5e(e)||A5e(e)||S5e(e)}Bl.isBoxedPrimitive=PTt;function ITt(e){return typeof Uint8Array!="undefined"&&(y5e(e)||x5e(e))}Bl.isAnyArrayBuffer=ITt;["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(Bl,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})});var BG=ye((Yur,M5e)=>{M5e.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}});var jG=ye(Nl=>{var E5e=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),HG(t)?r.showHidden=t:t&&Nl._extend(r,t),d2(r.showHidden)&&(r.showHidden=!1),d2(r.depth)&&(r.depth=2),d2(r.colors)&&(r.colors=!1),d2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=DTt),uR(r,e,r.depth)}Nl.inspect=R_;R_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};R_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function DTt(e,t){var r=R_.styles[t];return r?"\x1B["+R_.colors[r][0]+"m"+e+"\x1B["+R_.colors[r][1]+"m":e}function zTt(e,t){return e}function FTt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function uR(e,t,r){if(e.customInspect&&t&&lR(t.inspect)&&t.inspect!==Nl.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return hR(n)||(n=uR(e,n,r)),n}var i=qTt(e,t);if(i)return i;var a=Object.keys(t),o=FTt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),G4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return NG(t);if(a.length===0){if(lR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(H4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(cR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(G4(t))return NG(t)}var l="",u=!1,c=["{","}"];if(C5e(t)&&(u=!0,c=["[","]"]),lR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(H4(t)&&(l=" "+RegExp.prototype.toString.call(t)),cR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),G4(t)&&(l=" "+NG(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return H4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=OTt(e,t,r,o,a):h=a.map(function(d){return VG(e,t,r,o,d,u)}),e.seen.pop(),BTt(h,l,c)}function qTt(e,t){if(d2(t))return e.stylize("undefined","undefined");if(hR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L5e(t))return e.stylize(""+t,"number");if(HG(t))return e.stylize(""+t,"boolean");if(fR(t))return e.stylize("null","null")}function NG(e){return"["+Error.prototype.toString.call(e)+"]"}function OTt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),d2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function BTt(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Nl.types=OG();function C5e(e){return Array.isArray(e)}Nl.isArray=C5e;function HG(e){return typeof e=="boolean"}Nl.isBoolean=HG;function fR(e){return e===null}Nl.isNull=fR;function NTt(e){return e==null}Nl.isNullOrUndefined=NTt;function L5e(e){return typeof e=="number"}Nl.isNumber=L5e;function hR(e){return typeof e=="string"}Nl.isString=hR;function UTt(e){return typeof e=="symbol"}Nl.isSymbol=UTt;function d2(e){return e===void 0}Nl.isUndefined=d2;function H4(e){return o5(e)&&GG(e)==="[object RegExp]"}Nl.isRegExp=H4;Nl.types.isRegExp=H4;function o5(e){return typeof e=="object"&&e!==null}Nl.isObject=o5;function cR(e){return o5(e)&&GG(e)==="[object Date]"}Nl.isDate=cR;Nl.types.isDate=cR;function G4(e){return o5(e)&&(GG(e)==="[object Error]"||e instanceof Error)}Nl.isError=G4;Nl.types.isNativeError=G4;function lR(e){return typeof e=="function"}Nl.isFunction=lR;function VTt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Nl.isPrimitive=VTt;Nl.isBuffer=BG();function GG(e){return Object.prototype.toString.call(e)}function UG(e){return e<10?"0"+e.toString(10):e.toString(10)}var HTt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function GTt(){var e=new Date,t=[UG(e.getHours()),UG(e.getMinutes()),UG(e.getSeconds())].join(":");return[e.getDate(),HTt[e.getMonth()],t].join(" ")}Nl.log=function(){console.log("%s - %s",GTt(),Nl.format.apply(Nl,arguments))};Nl.inherits=Uy();Nl._extend=function(e,t){if(!t||!o5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function P5e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var h2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Nl.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(h2&&t[h2]){var r=t[h2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,h2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function I5e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ZTt(e){for(var t=1;t0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=r+n.data;return i}},{key:"concat",value:function(r){if(this.length===0)return dR.alloc(0);for(var n=dR.allocUnsafe(r>>>0),i=this.head,a=0;i;)e5t(i.data,n,a),a+=i.data.length,i=i.next;return n}},{key:"consume",value:function(r,n){var i;return ro.length?o.length:r;if(s===o.length?a+=o:a+=o.slice(0,r),r-=s,r===0){s===o.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(s));break}++i}return this.length-=i,a}},{key:"_getBuffer",value:function(r){var n=dR.allocUnsafe(r),i=this.head,a=1;for(i.data.copy(n),r-=i.data.length;i=i.next;){var o=i.data,s=r>o.length?o.length:r;if(o.copy(n,n.length-r,0,s),r-=s,r===0){s===o.length?(++a,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(s));break}++a}return this.length-=a,n}},{key:QTt,value:function(r,n){return WG(this,ZTt({},n,{depth:0,customInspect:!1}))}}]),e}()});var XG=ye(($ur,q5e)=>{"use strict";function t5t(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(ZG,this,e)):process.nextTick(ZG,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(a){!t&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(vR,r):(r._writableState.errorEmitted=!0,process.nextTick(F5e,r,a)):process.nextTick(F5e,r,a):t?(process.nextTick(vR,r),t(a)):process.nextTick(vR,r)}),this)}function F5e(e,t){ZG(e,t),vR(e)}function vR(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function r5t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function ZG(e,t){e.emit("error",t)}function i5t(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}q5e.exports={destroy:t5t,undestroy:r5t,errorOrDestroy:i5t}});var v2=ye((Qur,N5e)=>{"use strict";function n5t(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var B5e={};function Y0(e,t,r){r||(r=Error);function n(a,o,s){return typeof t=="string"?t:t(a,o,s)}var i=function(a){n5t(o,a);function o(s,l,u){return a.call(this,n(s,l,u))||this}return o}(r);i.prototype.name=r.name,i.prototype.code=e,B5e[e]=i}function O5e(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(n){return String(n)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function a5t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function o5t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function s5t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Y0("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Y0("ERR_INVALID_ARG_TYPE",function(e,t,r){var n;typeof t=="string"&&a5t(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(o5t(e," argument"))i="The ".concat(e," ").concat(n," ").concat(O5e(t,"type"));else{var a=s5t(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(O5e(t,"type"))}return i+=". Received type ".concat(typeof r),i},TypeError);Y0("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Y0("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Y0("ERR_STREAM_PREMATURE_CLOSE","Premature close");Y0("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Y0("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Y0("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Y0("ERR_STREAM_WRITE_AFTER_END","write after end");Y0("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Y0("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Y0("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");N5e.exports.codes=B5e});var YG=ye((ecr,U5e)=>{"use strict";var l5t=v2().codes.ERR_INVALID_OPT_VALUE;function u5t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function c5t(e,t,r,n){var i=u5t(t,n,r);if(i!=null){if(!(isFinite(i)&&Math.floor(i)===i)||i<0){var a=n?r:"highWaterMark";throw new l5t(a,i)}return Math.floor(i)}return e.objectMode?16:16*1024}U5e.exports={getHighWaterMark:c5t}});var H5e=ye((tcr,V5e)=>{V5e.exports=f5t;function f5t(e,t){if(KG("noDeprecation"))return e;var r=!1;function n(){if(!r){if(KG("throwDeprecation"))throw new Error(t);KG("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return n}function KG(e){try{if(!window.localStorage)return!1}catch(r){return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var QG=ye((rcr,Y5e)=>{"use strict";Y5e.exports=_h;function j5e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){O5t(t,e)}}var s5;_h.WritableState=W4;var h5t={deprecate:H5e()},W5e=iG(),gR=u2().Buffer,d5t=window.Uint8Array||function(){};function v5t(e){return gR.from(e)}function p5t(e){return gR.isBuffer(e)||e instanceof d5t}var $G=XG(),g5t=YG(),m5t=g5t.getHighWaterMark,D_=v2().codes,y5t=D_.ERR_INVALID_ARG_TYPE,_5t=D_.ERR_METHOD_NOT_IMPLEMENTED,x5t=D_.ERR_MULTIPLE_CALLBACK,b5t=D_.ERR_STREAM_CANNOT_PIPE,w5t=D_.ERR_STREAM_DESTROYED,T5t=D_.ERR_STREAM_NULL_VALUES,A5t=D_.ERR_STREAM_WRITE_AFTER_END,S5t=D_.ERR_UNKNOWN_ENCODING,l5=$G.errorOrDestroy;Uy()(_h,W5e);function M5t(){}function W4(e,t,r){s5=s5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof s5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=m5t(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=e.decodeStrings===!1;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(i){R5t(t,i)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new j5e(this)}W4.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(W4.prototype,"buffer",{get:h5t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var pR;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(pR=Function.prototype[Symbol.hasInstance],Object.defineProperty(_h,Symbol.hasInstance,{value:function(t){return pR.call(this,t)?!0:this!==_h?!1:t&&t._writableState instanceof W4}})):pR=function(t){return t instanceof this};function _h(e){s5=s5||p2();var t=this instanceof s5;if(!t&&!pR.call(_h,this))return new _h(e);this._writableState=new W4(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),W5e.call(this)}_h.prototype.pipe=function(){l5(this,new b5t)};function E5t(e,t){var r=new A5t;l5(e,r),process.nextTick(t,r)}function k5t(e,t,r,n){var i;return r===null?i=new T5t:typeof r!="string"&&!t.objectMode&&(i=new y5t("chunk",["string","Buffer"],r)),i?(l5(e,i),process.nextTick(n,i),!1):!0}_h.prototype.write=function(e,t,r){var n=this._writableState,i=!1,a=!n.objectMode&&p5t(e);return a&&!gR.isBuffer(e)&&(e=v5t(e)),typeof t=="function"&&(r=t,t=null),a?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=M5t),n.ending?E5t(this,r):(a||k5t(this,n,e,r))&&(n.pendingcb++,i=L5t(this,n,a,e,t,r)),i};_h.prototype.cork=function(){this._writableState.corked++};_h.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&Z5e(this,e))};_h.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new S5t(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(_h.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function C5t(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=gR.from(t,r)),t}Object.defineProperty(_h.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L5t(e,t,r,n,i,a){if(!r){var o=C5t(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var B5t=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};J5e.exports=Om;var K5e=rj(),tj=QG();Uy()(Om,K5e);for(ej=B5t(tj.prototype),mR=0;mR{var _R=u2(),Bm=_R.Buffer;function $5e(e,t){for(var r in e)t[r]=e[r]}Bm.from&&Bm.alloc&&Bm.allocUnsafe&&Bm.allocUnsafeSlow?Q5e.exports=_R:($5e(_R,ij),ij.Buffer=g2);function g2(e,t,r){return Bm(e,t,r)}g2.prototype=Object.create(Bm.prototype);$5e(Bm,g2);g2.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Bm(e,t,r)};g2.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Bm(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n};g2.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Bm(e)};g2.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return _R.SlowBuffer(e)}});var oj=ye(rAe=>{"use strict";var aj=eAe().Buffer,tAe=aj.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function V5t(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function H5t(e){var t=V5t(e);if(typeof t!="string"&&(aj.isEncoding===tAe||!tAe(e)))throw new Error("Unknown encoding: "+e);return t||e}rAe.StringDecoder=Z4;function Z4(e){this.encoding=H5t(e);var t;switch(this.encoding){case"utf16le":this.text=Y5t,this.end=K5t,t=4;break;case"utf8":this.fillLast=W5t,t=4;break;case"base64":this.text=J5t,this.end=$5t,t=3;break;default:this.write=Q5t,this.end=eAt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=aj.allocUnsafe(t)}Z4.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function G5t(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function j5t(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function W5t(e){var t=this.lastTotal-this.lastNeed,r=j5t(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Z5t(e,t){var r=G5t(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function X5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Y5t(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function K5t(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function J5t(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function $5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Q5t(e){return e.toString(this.encoding)}function eAt(e){return e&&e.length?this.write(e):""}});var xR=ye((acr,aAe)=>{"use strict";var iAe=v2().codes.ERR_STREAM_PREMATURE_CLOSE;function tAt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i{"use strict";var bR;function z_(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var nAt=xR(),F_=Symbol("lastResolve"),m2=Symbol("lastReject"),X4=Symbol("error"),wR=Symbol("ended"),y2=Symbol("lastPromise"),sj=Symbol("handlePromise"),_2=Symbol("stream");function q_(e,t){return{value:e,done:t}}function aAt(e){var t=e[F_];if(t!==null){var r=e[_2].read();r!==null&&(e[y2]=null,e[F_]=null,e[m2]=null,t(q_(r,!1)))}}function oAt(e){process.nextTick(aAt,e)}function sAt(e,t){return function(r,n){e.then(function(){if(t[wR]){r(q_(void 0,!0));return}t[sj](r,n)},n)}}var lAt=Object.getPrototypeOf(function(){}),uAt=Object.setPrototypeOf((bR={get stream(){return this[_2]},next:function(){var t=this,r=this[X4];if(r!==null)return Promise.reject(r);if(this[wR])return Promise.resolve(q_(void 0,!0));if(this[_2].destroyed)return new Promise(function(o,s){process.nextTick(function(){t[X4]?s(t[X4]):o(q_(void 0,!0))})});var n=this[y2],i;if(n)i=new Promise(sAt(n,this));else{var a=this[_2].read();if(a!==null)return Promise.resolve(q_(a,!1));i=new Promise(this[sj])}return this[y2]=i,i}},z_(bR,Symbol.asyncIterator,function(){return this}),z_(bR,"return",function(){var t=this;return new Promise(function(r,n){t[_2].destroy(null,function(i){if(i){n(i);return}r(q_(void 0,!0))})})}),bR),lAt),cAt=function(t){var r,n=Object.create(uAt,(r={},z_(r,_2,{value:t,writable:!0}),z_(r,F_,{value:null,writable:!0}),z_(r,m2,{value:null,writable:!0}),z_(r,X4,{value:null,writable:!0}),z_(r,wR,{value:t._readableState.endEmitted,writable:!0}),z_(r,sj,{value:function(a,o){var s=n[_2].read();s?(n[y2]=null,n[F_]=null,n[m2]=null,a(q_(s,!1))):(n[F_]=a,n[m2]=o)},writable:!0}),r));return n[y2]=null,nAt(t,function(i){if(i&&i.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=n[m2];a!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,a(i)),n[X4]=i;return}var o=n[F_];o!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,o(q_(void 0,!0))),n[wR]=!0}),t.on("readable",oAt.bind(null,n)),n};oAe.exports=cAt});var uAe=ye((scr,lAe)=>{lAe.exports=function(){throw new Error("Readable.from is not available in the browser")}});var rj=ye((ucr,_Ae)=>{"use strict";_Ae.exports=vu;var u5;vu.ReadableState=dAe;var lcr=vb().EventEmitter,hAe=function(t,r){return t.listeners(r).length},K4=iG(),TR=u2().Buffer,fAt=window.Uint8Array||function(){};function hAt(e){return TR.from(e)}function dAt(e){return TR.isBuffer(e)||e instanceof fAt}var lj=jG(),Il;lj&&lj.debuglog?Il=lj.debuglog("stream"):Il=function(){};var vAt=z5e(),pj=XG(),pAt=YG(),gAt=pAt.getHighWaterMark,AR=v2().codes,mAt=AR.ERR_INVALID_ARG_TYPE,yAt=AR.ERR_STREAM_PUSH_AFTER_EOF,_At=AR.ERR_METHOD_NOT_IMPLEMENTED,xAt=AR.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,c5,uj,cj;Uy()(vu,K4);var Y4=pj.errorOrDestroy,fj=["error","close","destroy","pause","resume"];function bAt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function dAe(e,t,r){u5=u5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof u5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=gAt(this,e,"readableHighWaterMark",r),this.buffer=new vAt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(c5||(c5=oj().StringDecoder),this.decoder=new c5(e.encoding),this.encoding=e.encoding)}function vu(e){if(u5=u5||p2(),!(this instanceof vu))return new vu(e);var t=this instanceof u5;this._readableState=new dAe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),K4.call(this)}Object.defineProperty(vu.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});vu.prototype.destroy=pj.destroy;vu.prototype._undestroy=pj.undestroy;vu.prototype._destroy=function(e,t){t(e)};vu.prototype.push=function(e,t){var r=this._readableState,n;return r.objectMode?n=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=TR.from(e,t),t=""),n=!0),vAe(this,e,t,!1,n)};vu.prototype.unshift=function(e){return vAe(this,e,null,!0,!1)};function vAe(e,t,r,n,i){Il("readableAddChunk",t);var a=e._readableState;if(t===null)a.reading=!1,AAt(e,a);else{var o;if(i||(o=wAt(a,t)),o)Y4(e,o);else if(a.objectMode||t&&t.length>0)if(typeof t!="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==TR.prototype&&(t=hAt(t)),n)a.endEmitted?Y4(e,new xAt):hj(e,a,t,!0);else if(a.ended)Y4(e,new yAt);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||t.length!==0?hj(e,a,t,!1):vj(e,a)):hj(e,a,t,!1)}else n||(a.reading=!1,vj(e,a))}return!a.ended&&(a.length=cAe?e=cAe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function fAe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=TAt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}vu.prototype.read=function(e){Il("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return Il("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?dj(this):SR(this),null;if(e=fAe(e,t),e===0&&t.ended)return t.length===0&&dj(this),null;var n=t.needReadable;Il("need readable",n),(t.length===0||t.length-e0?i=mAe(e,t):i=null,i===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&dj(this)),i!==null&&this.emit("data",i),i};function AAt(e,t){if(Il("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?SR(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,pAe(e)))}}function SR(e){var t=e._readableState;Il("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(Il("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(pAe,e))}function pAe(e){var t=e._readableState;Il("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,gj(e)}function vj(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(SAt,e,t))}function SAt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&yAe(n.pipes,e)!==-1)&&!u&&(Il("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(b){Il("onerror",b),x(),e.removeListener("error",h),hAe(e,"error")===0&&Y4(e,b)}bAt(e,"error",h);function d(){e.removeListener("finish",v),x()}e.once("close",d);function v(){Il("onfinish"),e.removeListener("close",d),x()}e.once("finish",v);function x(){Il("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(Il("pipe resume"),r.resume()),e};function MAt(e){return function(){var r=e._readableState;Il("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&hAe(e,"data")&&(r.flowing=!0,gj(e))}}vu.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,n.flowing!==!1&&this.resume()):e==="readable"&&!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,Il("on readable",n.length,n.reading),n.length?SR(this):n.reading||process.nextTick(EAt,this)),r};vu.prototype.addListener=vu.prototype.on;vu.prototype.removeListener=function(e,t){var r=K4.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(gAe,this),r};vu.prototype.removeAllListeners=function(e){var t=K4.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(gAe,this),t};function gAe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function EAt(e){Il("readable nexttick read 0"),e.read(0)}vu.prototype.resume=function(){var e=this._readableState;return e.flowing||(Il("resume"),e.flowing=!e.readableListening,kAt(this,e)),e.paused=!1,this};function kAt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(CAt,e,t))}function CAt(e,t){Il("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),gj(e),t.flowing&&!t.reading&&e.read(0)}vu.prototype.pause=function(){return Il("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Il("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function gj(e){var t=e._readableState;for(Il("flow",t.flowing);t.flowing&&e.read()!==null;);}vu.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(Il("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Il("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(s){return function(){return e[s].apply(e,arguments)}}(i));for(var a=0;a=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function dj(e){var t=e._readableState;Il("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(LAt,t,e))}function LAt(e,t){if(Il("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(vu.from=function(e,t){return cj===void 0&&(cj=uAe()),cj(vu,e,t)});function yAe(e,t){for(var r=0,n=e.length;r{"use strict";bAe.exports=Hy;var MR=v2().codes,PAt=MR.ERR_METHOD_NOT_IMPLEMENTED,IAt=MR.ERR_MULTIPLE_CALLBACK,RAt=MR.ERR_TRANSFORM_ALREADY_TRANSFORMING,DAt=MR.ERR_TRANSFORM_WITH_LENGTH_0,ER=p2();Uy()(Hy,ER);function zAt(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(n===null)return this.emit("error",new IAt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";TAe.exports=J4;var wAe=mj();Uy()(J4,wAe);function J4(e){if(!(this instanceof J4))return new J4(e);wAe.call(this,e)}J4.prototype._transform=function(e,t,r){r(null,e)}});var CAe=ye((hcr,kAe)=>{"use strict";var yj;function qAt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var EAe=v2().codes,OAt=EAe.ERR_MISSING_ARGS,BAt=EAe.ERR_STREAM_DESTROYED;function SAe(e){if(e)throw e}function NAt(e){return e.setHeader&&typeof e.abort=="function"}function UAt(e,t,r,n){n=qAt(n);var i=!1;e.on("close",function(){i=!0}),yj===void 0&&(yj=xR()),yj(e,{readable:t,writable:r},function(o){if(o)return n(o);i=!0,n()});var a=!1;return function(o){if(!i&&!a){if(a=!0,NAt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();n(o||new BAt("pipe"))}}}function MAe(e){e()}function VAt(e,t){return e.pipe(t)}function HAt(e){return!e.length||typeof e[e.length-1]!="function"?SAe:e.pop()}function GAt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return UAt(o,l,u,function(c){i||(i=c),c&&a.forEach(MAe),!l&&(a.forEach(MAe),n(i))})});return t.reduce(VAt)}kAe.exports=GAt});var PAe=ye((dcr,LAe)=>{LAe.exports=K0;var _j=vb().EventEmitter,jAt=Uy();jAt(K0,_j);K0.Readable=rj();K0.Writable=QG();K0.Duplex=p2();K0.Transform=mj();K0.PassThrough=AAe();K0.finished=xR();K0.pipeline=CAe();K0.Stream=K0;function K0(){_j.call(this)}K0.prototype.pipe=function(e,t){var r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){if(u(),_j.listenerCount(this,"error")===0)throw c}r.on("error",l),e.on("error",l);function u(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}});var h5=ye(Ul=>{var IAe=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Tj(t)?r.showHidden=t:t&&Ul._extend(r,t),b2(r.showHidden)&&(r.showHidden=!1),b2(r.depth)&&(r.depth=2),b2(r.colors)&&(r.colors=!1),b2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ZAt),PR(r,e,r.depth)}Ul.inspect=O_;O_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};O_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function ZAt(e,t){var r=O_.styles[t];return r?"\x1B["+O_.colors[r][0]+"m"+e+"\x1B["+O_.colors[r][1]+"m":e}function XAt(e,t){return e}function YAt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function PR(e,t,r){if(e.customInspect&&t&&LR(t.inspect)&&t.inspect!==Ul.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return DR(n)||(n=PR(e,n,r)),n}var i=KAt(e,t);if(i)return i;var a=Object.keys(t),o=YAt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),Q4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return xj(t);if(a.length===0){if(LR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if($4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(IR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Q4(t))return xj(t)}var l="",u=!1,c=["{","}"];if(DAe(t)&&(u=!0,c=["[","]"]),LR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if($4(t)&&(l=" "+RegExp.prototype.toString.call(t)),IR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),Q4(t)&&(l=" "+xj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return $4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=JAt(e,t,r,o,a):h=a.map(function(d){return wj(e,t,r,o,d,u)}),e.seen.pop(),$At(h,l,c)}function KAt(e,t){if(b2(t))return e.stylize("undefined","undefined");if(DR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(zAe(t))return e.stylize(""+t,"number");if(Tj(t))return e.stylize(""+t,"boolean");if(RR(t))return e.stylize("null","null")}function xj(e){return"["+Error.prototype.toString.call(e)+"]"}function JAt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),b2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function $At(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Ul.types=OG();function DAe(e){return Array.isArray(e)}Ul.isArray=DAe;function Tj(e){return typeof e=="boolean"}Ul.isBoolean=Tj;function RR(e){return e===null}Ul.isNull=RR;function QAt(e){return e==null}Ul.isNullOrUndefined=QAt;function zAe(e){return typeof e=="number"}Ul.isNumber=zAe;function DR(e){return typeof e=="string"}Ul.isString=DR;function eSt(e){return typeof e=="symbol"}Ul.isSymbol=eSt;function b2(e){return e===void 0}Ul.isUndefined=b2;function $4(e){return f5(e)&&Aj(e)==="[object RegExp]"}Ul.isRegExp=$4;Ul.types.isRegExp=$4;function f5(e){return typeof e=="object"&&e!==null}Ul.isObject=f5;function IR(e){return f5(e)&&Aj(e)==="[object Date]"}Ul.isDate=IR;Ul.types.isDate=IR;function Q4(e){return f5(e)&&(Aj(e)==="[object Error]"||e instanceof Error)}Ul.isError=Q4;Ul.types.isNativeError=Q4;function LR(e){return typeof e=="function"}Ul.isFunction=LR;function tSt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Ul.isPrimitive=tSt;Ul.isBuffer=BG();function Aj(e){return Object.prototype.toString.call(e)}function bj(e){return e<10?"0"+e.toString(10):e.toString(10)}var rSt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function iSt(){var e=new Date,t=[bj(e.getHours()),bj(e.getMinutes()),bj(e.getSeconds())].join(":");return[e.getDate(),rSt[e.getMonth()],t].join(" ")}Ul.log=function(){console.log("%s - %s",iSt(),Ul.format.apply(Ul,arguments))};Ul.inherits=Uy();Ul._extend=function(e,t){if(!t||!f5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function FAe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var x2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Ul.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(x2&&t[x2]){var r=t[x2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,x2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function B_(e){"@babel/helpers - typeof";return B_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B_(e)}function qAe(e,t){for(var r=0;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function pSt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function gSt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function mSt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}eE("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError);eE("ERR_INVALID_ARG_TYPE",function(e,t,r){d5===void 0&&(d5=tE()),d5(typeof e=="string","'name' must be a string");var n;typeof t=="string"&&pSt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(gSt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(OAe(t,"type"));else{var a=mSt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(OAe(t,"type"))}return i+=". Received type ".concat(B_(r)),i},TypeError);eE("ERR_INVALID_ARG_VALUE",function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";Sj===void 0&&(Sj=h5());var n=Sj.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(r,". Received ").concat(n)},TypeError,RangeError);eE("ERR_INVALID_RETURN_VALUE",function(e,t,r){var n;return r&&r.constructor&&r.constructor.name?n="instance of ".concat(r.constructor.name):n="type ".concat(B_(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")},TypeError);eE("ERR_MISSING_ARGS",function(){for(var e=arguments.length,t=new Array(e),r=0;r0,"At least one arg needs to be specified");var n="The ",i=t.length;switch(t=t.map(function(a){return'"'.concat(a,'"')}),i){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,i-1).join(", "),n+=", and ".concat(t[i-1]," arguments");break}return"".concat(n," must be specified")},TypeError);NAe.exports.codes=BAe});var KAe=ye((gcr,YAe)=>{"use strict";function UAe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function VAe(e){for(var t=1;te.length)&&(r=e.length),e.substring(r-t.length,r)===t}function kSt(e,t){if(t=Math.floor(t),e.length==0||t==0)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,r-e.length),e}var Gg="",rE="",iE="",xv="",w2={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},CSt=10;function jAe(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach(function(n){r[n]=e[n]}),Object.defineProperty(r,"message",{value:e.message}),r}function nE(e){return Lj(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function LSt(e,t,r){var n="",i="",a=0,o="",s=!1,l=nE(e),u=l.split(` +`),c=nE(t).split(` +`),f=0,h="";if(r==="strictEqual"&&Dp(e)==="object"&&Dp(t)==="object"&&e!==null&&t!==null&&(r="strictEqualObject"),u.length===1&&c.length===1&&u[0]!==c[0]){var d=u[0].length+c[0].length;if(d<=CSt){if((Dp(e)!=="object"||e===null)&&(Dp(t)!=="object"||t===null)&&(e!==0||t!==0))return"".concat(w2[r],` + +`)+"".concat(u[0]," !== ").concat(c[0],` +`)}else if(r!=="strictEqualObject"){var v=process.stderr&&process.stderr.isTTY?process.stderr.columns:80;if(d2&&(h=` + `.concat(kSt(" ",f),"^"),f=0)}}}for(var x=u[u.length-1],b=c[c.length-1];x===b&&(f++<2?o=` + `.concat(x).concat(o):n=x,u.pop(),c.pop(),!(u.length===0||c.length===0));)x=u[u.length-1],b=c[c.length-1];var p=Math.max(u.length,c.length);if(p===0){var E=l.split(` +`);if(E.length>30)for(E[26]="".concat(Gg,"...").concat(xv);E.length>27;)E.pop();return"".concat(w2.notIdentical,` + +`).concat(E.join(` +`),` +`)}f>3&&(o=` +`.concat(Gg,"...").concat(xv).concat(o),s=!0),n!==""&&(o=` + `.concat(n).concat(o),n="");var k=0,A=w2[r]+` +`.concat(rE,"+ actual").concat(xv," ").concat(iE,"- expected").concat(xv),L=" ".concat(Gg,"...").concat(xv," Lines skipped");for(f=0;f1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(c[f-2]),k++),i+=` + `.concat(c[f-1]),k++),a=f,n+=` +`.concat(iE,"-").concat(xv," ").concat(c[f]),k++;else if(c.length1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(u[f-2]),k++),i+=` + `.concat(u[f-1]),k++),a=f,i+=` +`.concat(rE,"+").concat(xv," ").concat(u[f]),k++;else{var C=c[f],M=u[f],g=M!==C&&(!GAe(M,",")||M.slice(0,-1)!==C);g&&GAe(C,",")&&C.slice(0,-1)===M&&(g=!1,M+=","),g?(_>1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(u[f-2]),k++),i+=` + `.concat(u[f-1]),k++),a=f,i+=` +`.concat(rE,"+").concat(xv," ").concat(M),n+=` +`.concat(iE,"-").concat(xv," ").concat(C),k+=2):(i+=n,n="",(_===1||f===0)&&(i+=` + `.concat(M),k++))}if(k>20&&f30)for(d[26]="".concat(Gg,"...").concat(xv);d.length>27;)d.pop();d.length===1?a=r.call(this,"".concat(h," ").concat(d[0])):a=r.call(this,"".concat(h,` + +`).concat(d.join(` +`),` +`))}else{var v=nE(u),x="",b=w2[s];s==="notDeepEqual"||s==="notEqual"?(v="".concat(w2[s],` + +`).concat(v),v.length>1024&&(v="".concat(v.slice(0,1021),"..."))):(x="".concat(nE(c)),v.length>512&&(v="".concat(v.slice(0,509),"...")),x.length>512&&(x="".concat(x.slice(0,509),"...")),s==="deepEqual"||s==="equal"?v="".concat(b,` + +`).concat(v,` + +should equal + +`):x=" ".concat(s," ").concat(x)),a=r.call(this,"".concat(v).concat(x))}return Error.stackTraceLimit=f,a.generatedMessage=!o,Object.defineProperty(kj(a),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),a.code="ERR_ASSERTION",a.actual=u,a.expected=c,a.operator=s,Error.captureStackTrace&&Error.captureStackTrace(kj(a),l),a.stack,a.name="AssertionError",ZAe(a)}return xSt(n,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(a,o){return Lj(this,VAe(VAe({},o),{},{customInspect:!1,depth:0}))}}]),n}(Cj(Error),Lj.custom);YAe.exports=PSt});var Pj=ye((mcr,$Ae)=>{"use strict";var JAe=Object.prototype.toString;$Ae.exports=function(t){var r=JAe.call(t),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&JAe.call(t.callee)==="[object Function]"),n}});var sSe=ye((ycr,oSe)=>{"use strict";var aSe;Object.keys||(sE=Object.prototype.hasOwnProperty,Ij=Object.prototype.toString,QAe=Pj(),Rj=Object.prototype.propertyIsEnumerable,eSe=!Rj.call({toString:null},"toString"),tSe=Rj.call(function(){},"prototype"),lE=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],qR=function(e){var t=e.constructor;return t&&t.prototype===e},rSe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},iSe=function(){if(typeof window=="undefined")return!1;for(var e in window)try{if(!rSe["$"+e]&&sE.call(window,e)&&window[e]!==null&&typeof window[e]=="object")try{qR(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),nSe=function(e){if(typeof window=="undefined"||!iSe)return qR(e);try{return qR(e)}catch(t){return!1}},aSe=function(t){var r=t!==null&&typeof t=="object",n=Ij.call(t)==="[object Function]",i=QAe(t),a=r&&Ij.call(t)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=tSe&&n;if(a&&t.length>0&&!sE.call(t,0))for(var l=0;l0)for(var u=0;u{"use strict";var ISt=Array.prototype.slice,RSt=Pj(),lSe=Object.keys,OR=lSe?function(t){return lSe(t)}:sSe(),uSe=Object.keys;OR.shim=function(){if(Object.keys){var t=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);t||(Object.keys=function(n){return RSt(n)?uSe(ISt.call(n)):uSe(n)})}else Object.keys=OR;return Object.keys||OR};cSe.exports=OR});var gSe=ye((xcr,pSe)=>{"use strict";var DSt=Dj(),dSe=B8()(),vSe=i5(),fSe=Object,zSt=vSe("Array.prototype.push"),hSe=vSe("Object.prototype.propertyIsEnumerable"),FSt=dSe?Object.getOwnPropertySymbols:null;pSe.exports=function(t,r){if(t==null)throw new TypeError("target must be an object");var n=fSe(t);if(arguments.length===1)return n;for(var i=1;i{"use strict";var zj=gSe(),qSt=function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n{"use strict";var _Se=function(e){return e!==e};xSe.exports=function(t,r){return t===0&&r===0?1/t===1/r:!!(t===r||_Se(t)&&_Se(r))}});var BR=ye((Tcr,bSe)=>{"use strict";var BSt=Fj();bSe.exports=function(){return typeof Object.is=="function"?Object.is:BSt}});var uE=ye((Acr,SSe)=>{"use strict";var NSt=Dj(),USt=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",VSt=Object.prototype.toString,HSt=Array.prototype.concat,wSe=Object.defineProperty,GSt=function(e){return typeof e=="function"&&VSt.call(e)==="[object Function]"},jSt=yG()(),TSe=wSe&&jSt,WSt=function(e,t,r,n){if(t in e){if(n===!0){if(e[t]===r)return}else if(!GSt(n)||!n())return}TSe?wSe(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r},ASe=function(e,t){var r=arguments.length>2?arguments[2]:{},n=NSt(t);USt&&(n=HSt.call(n,Object.getOwnPropertySymbols(t)));for(var i=0;i{"use strict";var ZSt=BR(),XSt=uE();MSe.exports=function(){var t=ZSt();return XSt(Object,{is:t},{is:function(){return Object.is!==t}}),t}});var PSe=ye((Mcr,LSe)=>{"use strict";var YSt=uE(),KSt=N4(),JSt=Fj(),kSe=BR(),$St=ESe(),CSe=KSt(kSe(),Object);YSt(CSe,{getPolyfill:kSe,implementation:JSt,shim:$St});LSe.exports=CSe});var qj=ye((Ecr,ISe)=>{"use strict";ISe.exports=function(t){return t!==t}});var Oj=ye((kcr,RSe)=>{"use strict";var QSt=qj();RSe.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:QSt}});var zSe=ye((Ccr,DSe)=>{"use strict";var eMt=uE(),tMt=Oj();DSe.exports=function(){var t=tMt();return eMt(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}});var BSe=ye((Lcr,OSe)=>{"use strict";var rMt=N4(),iMt=uE(),nMt=qj(),FSe=Oj(),aMt=zSe(),qSe=rMt(FSe(),Number);iMt(qSe,{getPolyfill:FSe,implementation:nMt,shim:aMt});OSe.exports=qSe});var aMe=ye((Pcr,nMe)=>{"use strict";function NSe(e,t){return uMt(e)||lMt(e,t)||sMt(e,t)||oMt()}function oMt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function sMt(e,t){if(e){if(typeof e=="string")return USe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return USe(e,t)}}function USe(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r10)return!0;for(var t=0;t57)return!0}return e.length===10&&e>=Math.pow(2,32)}function VR(e){return Object.keys(e).filter(yMt).concat(GR(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function eMe(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i{"use strict";function jg(e){"@babel/helpers - typeof";return jg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jg(e)}function oMe(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i{var vE=1e3,pE=vE*60,gE=pE*60,mE=gE*24,GMt=mE*365.25;AMe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return jMt(e);if(r==="number"&&isNaN(e)===!1)return t.long?ZMt(e):WMt(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function jMt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*GMt;case"days":case"day":case"d":return r*mE;case"hours":case"hour":case"hrs":case"hr":case"h":return r*gE;case"minutes":case"minute":case"mins":case"min":case"m":return r*pE;case"seconds":case"second":case"secs":case"sec":case"s":return r*vE;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function WMt(e){return e>=mE?Math.round(e/mE)+"d":e>=gE?Math.round(e/gE)+"h":e>=pE?Math.round(e/pE)+"m":e>=vE?Math.round(e/vE)+"s":e+"ms"}function ZMt(e){return $R(e,mE,"day")||$R(e,gE,"hour")||$R(e,pE,"minute")||$R(e,vE,"second")||e+" ms"}function $R(e,t,r){if(!(e{$u=MMe.exports=jj.debug=jj.default=jj;$u.coerce=$Mt;$u.disable=KMt;$u.enable=YMt;$u.enabled=JMt;$u.humanize=SMe();$u.names=[];$u.skips=[];$u.formatters={};var Gj;function XMt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return $u.colors[Math.abs(t)%$u.colors.length]}function jj(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(Gj||n);r.diff=i,r.prev=Gj,r.curr=n,Gj=n;for(var a=new Array(arguments.length),o=0;o{lp=CMe.exports=EMe();lp.log=t4t;lp.formatArgs=e4t;lp.save=r4t;lp.load=kMe;lp.useColors=QMt;lp.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:i4t();lp.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function QMt(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}lp.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}};function e4t(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+lp.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),e.splice(i,0,r)}}function t4t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function r4t(e){try{e==null?lp.storage.removeItem("debug"):lp.storage.debug=e}catch(t){}}function kMe(){var e;try{e=lp.storage.debug}catch(t){}return!e&&typeof process!="undefined"&&"env"in process&&(e=process.env.DEBUG),e}lp.enable(kMe());function i4t(){try{return window.localStorage}catch(e){}}});var OMe=ye((Dcr,qMe)=>{var p5=tE(),H_=LMe()("stream-parser");qMe.exports=a4t;var IMe=-1,QR=0,n4t=1,RMe=2;function a4t(e){var t=e&&typeof e._transform=="function",r=e&&typeof e._write=="function";if(!t&&!r)throw new Error("must pass a Writable or Transform stream in");H_("extending Parser into stream"),e._bytes=o4t,e._skipBytes=s4t,t&&(e._passthrough=l4t),t?e._transform=c4t:e._write=u4t}function yE(e){H_("initializing parser stream"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=IMe,e._parserCallback=null,typeof e.push=="function"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function o4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got "'+e+'"'),this._parserInit||yE(this),H_("buffering %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=QR}function s4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(e>0,'can only skip > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("skipping %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=n4t}function l4t(e,t){p5(!this._parserCallback,'There is already a "callback" set!'),p5(e>0,'can only pass through > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("passing through %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=RMe}function u4t(e,t,r){this._parserInit||yE(this),H_("write(%o bytes)",e.length),typeof t=="function"&&(r=t),zMe(this,e,null,r)}function c4t(e,t,r){this._parserInit||yE(this),H_("transform(%o bytes)",e.length),typeof t!="function"&&(t=this._parserOutput),zMe(this,e,t,r)}function DMe(e,t,r,n){return e._parserBytesLeft<=0?n(new Error("got data but not currently parsing anything")):t.length<=e._parserBytesLeft?function(){return PMe(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return PMe(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return DMe(e,t.slice(i.length),r,n)}})}}function PMe(e,t,r,n){if(e._parserBytesLeft-=t.length,H_("%o bytes left for stream piece",e._parserBytesLeft),e._parserState===QR?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===RMe&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===QR&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==QR&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=IMe,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(FMe(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var zMe=FMe(DMe);function FMe(e){return function(){for(var t=e.apply(this,arguments);typeof t=="function";)t=t();return t}}});var Eu=ye(Gy=>{"use strict";var BMe=PAe().Transform,f4t=OMe();function _E(){BMe.call(this,{readableObjectMode:!0})}_E.prototype=Object.create(BMe.prototype);_E.prototype.constructor=_E;f4t(_E.prototype);Gy.ParserStream=_E;Gy.sliceEq=function(e,t,r){for(var n=t,i=0;i{"use strict";var g5=Eu().readUInt16BE,Zj=Eu().readUInt32BE;function xE(e,t){if(e.length<4+t)return null;var r=Zj(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=g5(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}tD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(g4t(e,t),!!t.sizes.length){var r=m4t(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type==="imir"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type==="irot")for(var l=0;l{"use strict";function rD(e,t){var r=new Error(e);return r.code=t,r}function y4t(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function jy(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!=="II*\0"&&n!=="MM\0*")throw rD("invalid TIFF signature","EBADDATA");this.big_endian=n[0]==="M"}jy.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};jy.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};jy.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};jy.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};jy.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};jy.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};jy.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw rD("unexpected EOF","EBADDATA");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};Xj.exports.ExifParser=jy;Xj.exports.get_orientation=function(e){var t=0;try{return new jy(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var VMe=ye((Ocr,UMe)=>{"use strict";var _4t=Eu().str2arr,x4t=Eu().sliceEq,b4t=Eu().readUInt32BE,nD=NMe(),w4t=iD(),T4t=_4t("ftyp");UMe.exports=function(e){if(x4t(e,4,T4t)){var t=nD.unbox(e,0);if(t){var r=nD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=nD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype==="mdat")return;if(a.boxtype==="meta"){n=a.data;break}}if(n){var o=nD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=b4t(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=w4t.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var jMe=ye((Bcr,GMe)=>{"use strict";var A4t=Eu().str2arr,S4t=Eu().sliceEq,HMe=Eu().readUInt16LE,M4t=A4t("BM");GMe.exports=function(e){if(!(e.length<26)&&S4t(e,0,M4t))return{width:HMe(e,18),height:HMe(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}});var KMe=ye((Ncr,YMe)=>{"use strict";var XMe=Eu().str2arr,WMe=Eu().sliceEq,ZMe=Eu().readUInt16LE,E4t=XMe("GIF87a"),k4t=XMe("GIF89a");YMe.exports=function(e){if(!(e.length<10)&&!(!WMe(e,0,E4t)&&!WMe(e,0,k4t)))return{width:ZMe(e,6),height:ZMe(e,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}});var QMe=ye((Ucr,$Me)=>{"use strict";var Yj=Eu().readUInt16LE,C4t=0,L4t=1,JMe=16;$Me.exports=function(e){var t=Yj(e,0),r=Yj(e,2),n=Yj(e,4);if(!(t!==C4t||r!==L4t||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}});var t4e=ye((Vcr,e4e)=>{"use strict";var Kj=Eu().readUInt16BE,P4t=Eu().str2arr,I4t=Eu().sliceEq,R4t=iD(),D4t=P4t("Exif\0\0");e4e.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=Kj(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&I4t(e,t,D4t)&&(i=R4t.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var o4e=ye((Hcr,a4e)=>{"use strict";var n4e=Eu().str2arr,r4e=Eu().sliceEq,i4e=Eu().readUInt32BE,z4t=n4e(`\x89PNG\r + +`),F4t=n4e("IHDR");a4e.exports=function(e){if(!(e.length<24)&&r4e(e,0,z4t)&&r4e(e,12,F4t))return{width:i4e(e,16),height:i4e(e,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}});var u4e=ye((Gcr,l4e)=>{"use strict";var q4t=Eu().str2arr,O4t=Eu().sliceEq,s4e=Eu().readUInt32BE,B4t=q4t("8BPS\0");l4e.exports=function(e){if(!(e.length<22)&&O4t(e,0,B4t))return{width:s4e(e,18),height:s4e(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}});var h4e=ye((jcr,f4e)=>{"use strict";function N4t(e){return e===32||e===9||e===13||e===10}function m5(e){return typeof e=="number"&&isFinite(e)&&e>0}function U4t(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,H4t=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,G4t=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,j4t=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,W4t=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,c4e=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function Z4t(e){var t=e.match(G4t),r=e.match(j4t),n=e.match(W4t);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Nm(e){return c4e.test(e)?e.match(c4e)[0]:"px"}f4e.exports=function(e){if(U4t(e)){for(var t="",r=0;r{"use strict";var p4e=Eu().str2arr,d4e=Eu().sliceEq,X4t=Eu().readUInt16LE,Y4t=Eu().readUInt16BE,K4t=Eu().readUInt32LE,J4t=Eu().readUInt32BE,$4t=p4e("II*\0"),Q4t=p4e("MM\0*");function aD(e,t,r){return r?Y4t(e,t):X4t(e,t)}function Jj(e,t,r){return r?J4t(e,t):K4t(e,t)}function v4e(e,t,r){var n=aD(e,t+2,r),i=Jj(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?aD(e,t+8,r):Jj(e,t+8,r)}g4e.exports=function(e){if(!(e.length<8)&&!(!d4e(e,0,$4t)&&!d4e(e,0,Q4t))){var t=e[0]===77,r=Jj(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=aD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{"use strict";var x4e=Eu().str2arr,y4e=Eu().sliceEq,_4e=Eu().readUInt16LE,$j=Eu().readUInt32LE,eEt=iD(),tEt=x4e("RIFF"),rEt=x4e("WEBP");function iEt(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:_4e(e,t+6)&16383,height:_4e(e,t+8)&16383,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}function nEt(e,t){if(e[t]===47){var r=$j(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function aEt(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||iEt(e,t+8):a==="VP8L"&&o>=9?r=r||nEt(e,t+8):a==="VP8X"&&o>=10?r=r||aEt(e,t+8):a==="EXIF"&&(n=eEt.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var A4e=ye((Xcr,T4e)=>{"use strict";T4e.exports={avif:VMe(),bmp:jMe(),gif:KMe(),ico:QMe(),jpeg:t4e(),png:o4e(),psd:u4e(),svg:h4e(),tiff:m4e(),webp:w4e()}});var S4e=ye((Ycr,eW)=>{"use strict";var Qj=A4e();function oEt(e){for(var t=Object.keys(Qj),r=0;r{"use strict";var sEt=S4e(),lEt=Ly().IMAGE_URL_PREFIX,uEt=u2().Buffer;M4e.getImageSize=function(e){var t=e.replace(lEt,""),r=new uEt(t,"base64");return sEt(r)}});var L4e=ye((Jcr,C4e)=>{"use strict";var k4e=Mr(),cEt=jT(),fEt=uo(),oD=Qa(),hEt=Mr().maxRowLength,dEt=E4e().getImageSize;C4e.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=hEt(r.z);else if(r._hasSource){var a=dEt(r.source);n=a.height,i=a.width}var o=oD.getFromId(t,r.xaxis||"x"),s=oD.getFromId(t,r.yaxis||"y"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type==="log")for(c=0;c{"use strict";var mEt=xa(),T2=Mr(),P4e=T2.strTranslate,yEt=Zp(),_Et=jT(),xEt=jV(),bEt=o8().STYLE;I4e.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&xEt();T2.makeTraceGroups(i,n,"im").each(function(l){var u=mEt.select(this),c=l[0],f=c.trace,h=(f.zsmooth==="fast"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type==="linear"&&o.type==="linear";f._realImage=h;var d=c.z,v=c.x0,x=c.y0,b=c.w,p=c.h,E=f.dx,k=f.dy,A,L,_,C,M,g;for(g=0;A===void 0&&g0;)L=a.c2p(v+g*E),g--;for(g=0;C===void 0&&g0;)M=o.c2p(x+g*k),g--;if(LW[0];if(re||ae){var _e=A+T/2,Me=C+F/2;G+="transform:"+P4e(_e+"px",Me+"px")+"scale("+(re?-1:1)+","+(ae?-1:1)+")"+P4e(-_e+"px",-Me+"px")+";"}}X.attr("style",G);var ke=new Promise(function(ge){if(f._hasZ)ge();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===p&&f._canvas.source===f.source)ge();else{var ie=document.createElement("canvas");ie.width=b,ie.height=p;var Te=ie.getContext("2d",{willReadFrequently:!0});f._image=f._image||new Image;var Ee=f._image;Ee.onload=function(){Te.drawImage(Ee,0,0),f._canvas={el:ie,source:f.source},ge()},Ee.setAttribute("src",f.source)}}).then(function(){var ge,ie;if(f._hasZ)ie=H(function(Ae,ze){var Ce=d[ze][Ae];return T2.isTypedArray(Ce)&&(Ce=Array.from(Ce)),Ce}),ge=ie.toDataURL("image/png");else if(f._hasSource)if(h)ge=f.source;else{var Te=f._canvas.el.getContext("2d",{willReadFrequently:!0}),Ee=Te.getImageData(0,0,b,p).data;ie=H(function(Ae,ze){var Ce=4*(ze*b+Ae);return[Ee[Ce],Ee[Ce+1],Ee[Ce+2],Ee[Ce+3]]}),ge=ie.toDataURL("image/png")}X.attr({"xlink:href":ge,height:F,width:T,x:A,y:C})});t._promises.push(ke)})}});var z4e=ye((Qcr,D4e)=>{"use strict";var wEt=xa();D4e.exports=function(t){wEt.select(t).selectAll(".im image").style("opacity",function(r){return r[0].trace.opacity})}});var B4e=ye((efr,O4e)=>{"use strict";var F4e=Nc(),q4e=Mr(),sD=q4e.isArrayOrTypedArray,TEt=jT();O4e.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(F4e.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||F4e.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split("+");d.indexOf("all")!==-1&&(d=["color"]),d.indexOf("color")!==-1&&(h=!0)}var v=TEt.colormodel[a.colormodel],x=v.colormodel||a.colormodel,b=x.length,p=a._scaler(c),E=v.suffix,k=[];(a.hovertemplate||h)&&(k.push("["+[p[0]+E[0],p[1]+E[1],p[2]+E[2]].join(", ")),b===4&&k.push(", "+p[3]+E[3]),k.push("]"),k=k.join(""),t.extraText=x.toUpperCase()+": "+k);var A;sD(a.hovertext)&&sD(a.hovertext[u])?A=a.hovertext[u][l]:sD(a.text)&&sD(a.text[u])&&(A=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),_=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,M="["+c.slice(0,a.colormodel.length).join(", ")+"]";return[q4e.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:p,xVal:_,xLabelVal:_,yVal:C,yLabelVal:C,zLabelVal:M,text:A,hovertemplateLabels:{zLabel:M,colorLabel:k,"color[0]Label":p[0]+E[0],"color[1]Label":p[1]+E[1],"color[2]Label":p[2]+E[2],"color[3]Label":p[3]+E[3]}})]}}}});var U4e=ye((tfr,N4e)=>{"use strict";N4e.exports=function(t,r){return"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var H4e=ye((rfr,V4e)=>{"use strict";V4e.exports={attributes:tG(),supplyDefaults:T3e(),calc:L4e(),plot:R4e(),style:z4e(),hoverPoints:B4e(),eventData:U4e(),moduleType:"trace",name:"image",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}});var j4e=ye((ifr,G4e)=>{"use strict";G4e.exports=H4e()});var A2=ye((nfr,W4e)=>{"use strict";var AEt=vl(),SEt=Ju().attributes,MEt=Su(),EEt=dh(),kEt=Wo().hovertemplateAttrs,CEt=Wo().texttemplateAttrs,bE=no().extendFlat,LEt=Ed().pattern,lD=MEt({editType:"plot",arrayOk:!0,colorEditType:"plot"});W4e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:EEt.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:LEt,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:bE({},AEt.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:kEt({},{keys:["label","color","value","percent","text"]}),texttemplate:CEt({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:bE({},lD,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:bE({},lD,{}),outsidetextfont:bE({},lD,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:bE({},lD,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:SEt({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}});var S2=ye((afr,Y4e)=>{"use strict";var PEt=uo(),wE=Mr(),IEt=A2(),REt=Ju().defaults,DEt=r0().handleText,zEt=Mr().coercePattern;function Z4e(e,t){var r=wE.isArrayOrTypedArray(e),n=wE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function X4e(e,t,r,n,i){var a=n("marker.line.width");a&&n("marker.line.color",i?void 0:r.paper_bgcolor);var o=n("marker.colors");zEt(n,"marker.pattern",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function FEt(e,t,r,n){function i(E,k){return wE.coerce(e,t,IEt,E,k)}var a=i("labels"),o=i("values"),s=Z4e(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i("label0"),i("dlabel")),!l){t.visible=!1;return}t._length=l,X4e(e,t,n,i,!0),i("scalegroup");var u=i("text"),c=i("texttemplate"),f;if(c||(f=i("textinfo",wE.isArrayOrTypedArray(u)?"text+percent":"percent")),i("hovertext"),i("hovertemplate"),c||f&&f!=="none"){var h=i("textposition");DEt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h==="auto",v=d||h==="outside";v&&i("automargin"),(h==="inside"||h==="auto"||Array.isArray(h))&&i("insidetextorientation")}else f==="none"&&i("textposition","none");REt(t,n,i);var x=i("hole"),b=i("title.text");if(b){var p=i("title.position",x?"middle center":"top center");!x&&p==="middle center"&&(t.title.position="top center"),wE.coerceFont(i,"title.font",n.font)}i("sort"),i("direction"),i("rotation"),i("pull")}Y4e.exports={handleLabelsAndValues:Z4e,handleMarkerDefaults:X4e,supplyDefaults:FEt}});var uD=ye((ofr,K4e)=>{"use strict";K4e.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var $4e=ye((sfr,J4e)=>{"use strict";var qEt=Mr(),OEt=uD();J4e.exports=function(t,r){function n(i,a){return qEt.coerce(t,r,OEt,i,a)}n("hiddenlabels"),n("piecolorway",r.colorway),n("extendpiecolors")}});var y5=ye((lfr,tEe)=>{"use strict";var BEt=uo(),tW=id(),NEt=va(),UEt={};function VEt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var A=t.type==="funnelarea"?x:t.sort;return A&&r.sort(function(L,_){return _.v-L.v}),r[0]&&(r[0].vTotal=v),r}function Q4e(e){return function(r,n){return!r||(r=tW(r),!r.isValid())?!1:(r=NEt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function HEt(e,t){var r=(t||{}).type;r||(r="pie");var n=e._fullLayout,i=e.calcdata,a=n[r+"colorway"],o=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=eEe(a,UEt));for(var s=0,l=0;l{"use strict";var GEt=rp().appendArrayMultiPointValues;rEe.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),GEt(n,r,t.pts),r.type==="funnelarea"&&(delete n.v,delete n.i),n}});var dD=ye((cfr,AEe)=>{"use strict";var zp=xa(),jEt=Xu(),cD=Nc(),uEe=va(),Wy=ao(),ev=Mr(),WEt=ev.strScale,nEe=ev.strTranslate,rW=Pl(),cEe=_v(),ZEt=cEe.recordMinTextSize,XEt=cEe.clearMinTextSize,fEe=Qb().TEXTPAD,Zo=u_(),fD=iEe(),aEe=Mr().isValidTextValue;function YEt(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;XEt("pie",n),vEe(t,e),bEe(t,i);var a=ev.makeTraceGroups(n._pielayer,t,"trace").each(function(o){var s=zp.select(this),l=o[0],u=l.trace;nkt(o),s.attr("stroke-linejoin","round"),s.each(function(){var c=zp.select(this).selectAll("g.slice").data(o);c.enter().append("g").classed("slice",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(A,L){if(A.hidden){zp.select(this).selectAll("path,g").remove();return}A.pointNumber=A.i,A.curveNumber=u.index,f[A.pxmid[1]<0?0:1][A.pxmid[0]<0?0:1].push(A);var _=l.cx,C=l.cy,M=zp.select(this),g=M.selectAll("path.surface").data([A]);if(g.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),M.call(hEe,e,o),u.pull){var P=+Zo.castOption(u.pull,A.pts)||0;P>0&&(_+=P*A.pxmid[0],C+=P*A.pxmid[1])}A.cxFinal=_,A.cyFinal=C;function T(N,W,re,ae){var _e=ae*(W[0]-N[0]),Me=ae*(W[1]-N[1]);return"a"+ae*l.r+","+ae*l.r+" 0 "+A.largeArc+(re?" 1 ":" 0 ")+_e+","+Me}var F=u.hole;if(A.v===l.vTotal){var q="M"+(_+A.px0[0])+","+(C+A.px0[1])+T(A.px0,A.pxmid,!0,1)+T(A.pxmid,A.px0,!0,1)+"Z";F?g.attr("d","M"+(_+F*A.px0[0])+","+(C+F*A.px0[1])+T(A.px0,A.pxmid,!1,F)+T(A.pxmid,A.px0,!1,F)+"Z"+q):g.attr("d",q)}else{var V=T(A.px0,A.px1,!0,1);if(F){var H=1-F;g.attr("d","M"+(_+F*A.px1[0])+","+(C+F*A.px1[1])+T(A.px1,A.px0,!1,F)+"l"+H*A.px0[0]+","+H*A.px0[1]+V+"Z")}else g.attr("d","M"+_+","+C+"l"+A.px0[0]+","+A.px0[1]+V+"Z")}wEe(e,A,l);var X=Zo.castOption(u.textposition,A.pts),G=M.selectAll("g.slicetext").data(A.text&&X!=="none"?[0]:[]);G.enter().append("g").classed("slicetext",!0),G.exit().remove(),G.each(function(){var N=ev.ensureSingle(zp.select(this),"text","",function(ie){ie.attr("data-notex",1)}),W=ev.ensureUniformFontSize(e,X==="outside"?JEt(u,A,n.font):dEe(u,A,n.font));N.text(A.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(Wy.font,W).call(rW.convertToTspans,e);var re=Wy.bBox(N.node()),ae;if(X==="outside")ae=lEe(re,A);else if(ae=pEe(re,A,l),X==="auto"&&ae.scale<1){var _e=ev.ensureUniformFontSize(e,u.outsidetextfont);N.call(Wy.font,_e),re=Wy.bBox(N.node()),ae=lEe(re,A)}var Me=ae.textPosAngle,ke=Me===void 0?A.pxmid:hD(l.r,Me);if(ae.targetX=_+ke[0]*ae.rCenter+(ae.x||0),ae.targetY=C+ke[1]*ae.rCenter+(ae.y||0),TEe(ae,re),ae.outside){var ge=ae.targetY;A.yLabelMin=ge-re.height/2,A.yLabelMid=ge,A.yLabelMax=ge+re.height/2,A.labelExtraX=0,A.labelExtraY=0,h=!0}ae.fontSize=W.size,ZEt(u.type,ae,n),o[L].transform=ae,ev.setTransormAndDisplay(N,ae)})});var d=zp.select(this).selectAll("g.titletext").data(u.title.text?[0]:[]);if(d.enter().append("g").classed("titletext",!0),d.exit().remove(),d.each(function(){var A=ev.ensureSingle(zp.select(this),"text","",function(C){C.attr("data-notex",1)}),L=u.title.text;u._meta&&(L=ev.templateString(L,u._meta)),A.text(L).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(Wy.font,u.title.font).call(rW.convertToTspans,e);var _;u.title.position==="middle center"?_=ekt(l):_=_Ee(l,i),A.attr("transform",nEe(_.x,_.y)+WEt(Math.min(1,_.scale))+nEe(_.tx,_.ty))}),h&&rkt(f,u),KEt(c,u),h&&u.automargin){var v=Wy.bBox(s.node()),x=u.domain,b=i.w*(x.x[1]-x.x[0]),p=i.h*(x.y[1]-x.y[0]),E=(.5*b-l.r)/i.w,k=(.5*p-l.r)/i.h;jEt.autoMargin(e,"pie."+u.uid+".automargin",{xl:x.x[0]-E,xr:x.x[1]+E,yb:x.y[0]-k,yt:x.y[1]+k,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll("tspan").each(function(){var o=zp.select(this);o.attr("dy")&&o.attr("dy",o.attr("dy"))})},0)}function KEt(e,t){e.each(function(r){var n=zp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select("path.textline").remove();return}var i=n.select("g.slicetext text");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,ev.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s="M"+a+","+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+="l"+c*r.pxmid[0]/r.pxmid[1]+","+c+"H"+(a+r.labelExtraX+l):s+="l"+r.labelExtraX+","+u+"v"+(c-u)+"h"+l}else s+="V"+(r.yLabelMid+r.labelExtraY)+"h"+l;ev.ensureSingle(n,"path","textline").call(uEe.stroke,t.outsidetextfont.color).attr({"stroke-width":Math.min(2,t.outsidetextfont.size/8),d:s,fill:"none"})})}function hEe(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type==="funnelarea";"_hasHoverLabel"in o||(o._hasHoverLabel=!1),"_hasHoverEvent"in o||(o._hasHoverEvent=!1),e.on("mouseover",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=cD.castHoverinfo({hoverinfo:[Zo.castOption(f,l.pts)],_module:o._module},u,0)),f==="all"&&(f="label+text+value+percent+name"),c.hovertemplate||f!=="none"&&f!=="skip"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),x=u.separators,b=[];if(f&&f.indexOf("label")!==-1&&b.push(l.label),l.text=Zo.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf("text")!==-1){var p=l.text;ev.isValidTextValue(p)&&b.push(p)}l.value=l.v,l.valueLabel=Zo.formatPieValue(l.v,x),f&&f.indexOf("value")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=Zo.formatPiePercent(l.percent,x),f&&f.indexOf("percent")!==-1&&b.push(l.percentLabel);var E=c.hoverlabel,k=E.font,A=[];cD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join("
"),name:c.hovertemplate||f.indexOf("name")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?"left":"right",color:Zo.castOption(E.bgcolor,l.pts)||l.color,borderColor:Zo.castOption(E.bordercolor,l.pts),fontFamily:Zo.castOption(k.family,l.pts),fontSize:Zo.castOption(k.size,l.pts),fontColor:Zo.castOption(k.color,l.pts),nameLength:Zo.castOption(E.namelength,l.pts),textAlign:Zo.castOption(E.align,l.pts),hovertemplate:Zo.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[fD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:A}),l.bbox=A[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit("plotly_hover",{points:[fD(l,c)],event:zp.event})}}),e.on("mouseout",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=zp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=zp.event,t.emit("plotly_unhover",{points:[fD(f,c)],event:zp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(cD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on("click",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[fD(l,c)],cD.click(t,zp.event))})}function JEt(e,t,r){var n=Zo.castOption(e.outsidetextfont.color,t.pts)||Zo.castOption(e.textfont.color,t.pts)||r.color,i=Zo.castOption(e.outsidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.outsidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.outsidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.outsidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.outsidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.outsidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.outsidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.outsidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function dEe(e,t,r){var n=Zo.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=Zo.castOption(e._input.textfont.color,t.pts));var i=Zo.castOption(e.insidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.insidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.insidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.insidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.insidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.insidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.insidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.insidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||uEe.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function vEe(e,t){for(var r,n,i=0;i=-4;E-=2)p(Math.PI*E,"tan");for(E=4;E>=-4;E-=2)p(Math.PI*(E+1),"tan")}if(f||d){for(E=4;E>=-4;E-=2)p(Math.PI*(E+1.5),"rad");for(E=4;E>=-4;E-=2)p(Math.PI*(E+.5),"rad")}}if(s||v||f){var k=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/k,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;x.push(b)}(v||d)&&(b=oEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b)),(v||h)&&(b=sEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b));for(var A=0,L=0,_=0;_=1)break}return x[A]}function $Et(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function ekt(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function _Ee(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=xEe(a),a.title.position.indexOf("top")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf("bottom")!==-1&&(o.y+=(1+i)*e.r);var l=tkt(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf("left")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf("center")!==-1?u*=2:a.title.position.indexOf("right")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=iW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function tkt(e,t){return e/(t===void 0?1:t)}function iW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function xEe(e){var t=e.pull;if(!t)return 0;var r;if(ev.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function rkt(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function x(k,A){return k.pxmid[1]-A.pxmid[1]}function b(k,A){return A.pxmid[1]-k.pxmid[1]}function p(k,A){A||(A={});var L=A.labelExtraY+(n?A.yLabelMax:A.yLabelMin),_=n?k.yLabelMin:k.yLabelMax,C=n?k.yLabelMax:k.yLabelMin,M=k.cyFinal+o(k.px0[1],k.px1[1]),g=L-_,P,T,F,q,V,H;if(g*l>0&&(k.labelExtraY=g),!!ev.isArrayOrTypedArray(t.pull))for(T=0;T=(Zo.castOption(t.pull,F.pts)||0))&&((k.pxmid[1]-F.pxmid[1])*l>0?(q=F.cyFinal+o(F.px0[1],F.px1[1]),g=q-_-k.labelExtraY,g*l>0&&(k.labelExtraY+=g)):(C+k.labelExtraY-M)*l>0&&(P=3*s*Math.abs(T-f.indexOf(k)),V=F.cxFinal+a(F.px0[0],F.px1[0]),H=V+P-(k.cxFinal+k.pxmid[0])-k.labelExtraX,H*s>0&&(k.labelExtraX+=H)))}for(n=0;n<2;n++)for(i=n?x:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=QEt(u,t))}function hD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function wEe(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!=="none"){var s=o.split("+"),l=function(A){return s.indexOf(A)!==-1},u=l("label"),c=l("text"),f=l("value"),h=l("percent"),d=n.separators,v;if(v=u?[t.label]:[],c){var x=Zo.getFirstFilled(i.text,t.pts);aEe(x)&&v.push(x)}f&&v.push(Zo.formatPieValue(t.v,d)),h&&v.push(Zo.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join("
")}function b(A){return{label:A.label,value:A.v,valueLabel:Zo.formatPieValue(A.v,n.separators),percent:A.v/r.vTotal,percentLabel:Zo.formatPiePercent(A.v/r.vTotal,n.separators),color:A.color,text:A.text,customdata:ev.castOption(i,A.i,"customdata")}}if(a){var p=ev.castOption(i,t.i,"texttemplate");if(!p)t.text="";else{var E=b(t),k=Zo.getFirstFilled(i.text,t.pts);(aEe(k)||k==="")&&(E.text=k),t.text=ev.texttemplateString(p,E,e._fullLayout._d3locale,E,i._meta||{})}}}function TEe(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}AEe.exports={plot:YEt,formatSliceLabel:wEe,transformInsideText:pEe,determineInsideTextFont:dEe,positionTitleOutside:_Ee,prerenderTitles:vEe,layoutAreas:bEe,attachFxHandlers:hEe,computeTransform:TEe}});var EEe=ye((ffr,MEe)=>{"use strict";var SEe=xa(),akt=z3(),okt=_v().resizeText;MEe.exports=function(t){var r=t._fullLayout._pielayer.selectAll(".trace");okt(t,r,"pie"),r.each(function(n){var i=n[0],a=i.trace,o=SEe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){SEe.select(this).call(akt,s,a,t)})})}});var CEe=ye(_5=>{"use strict";var kEe=Xu();_5.name="pie";_5.plot=function(e,t,r,n){kEe.plotBasePlot(_5.name,e,t,r,n)};_5.clean=function(e,t,r,n){kEe.cleanBasePlot(_5.name,e,t,r,n)}});var PEe=ye((dfr,LEe)=>{"use strict";LEe.exports={attributes:A2(),supplyDefaults:S2().supplyDefaults,supplyLayoutDefaults:$4e(),layoutAttributes:uD(),calc:y5().calc,crossTraceCalc:y5().crossTraceCalc,plot:dD().plot,style:EEe(),styleOne:z3(),moduleType:"trace",name:"pie",basePlotModule:CEe(),categories:["pie-like","pie","showLegend"],meta:{}}});var REe=ye((vfr,IEe)=>{"use strict";IEe.exports=PEe()});var zEe=ye(x5=>{"use strict";var DEe=Xu();x5.name="sunburst";x5.plot=function(e,t,r,n){DEe.plotBasePlot(x5.name,e,t,r,n)};x5.clean=function(e,t,r,n){DEe.cleanBasePlot(x5.name,e,t,r,n)}});var nW=ye((gfr,FEe)=>{"use strict";FEe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}});var AE=ye((mfr,OEe)=>{"use strict";var skt=vl(),lkt=Wo().hovertemplateAttrs,ukt=Wo().texttemplateAttrs,ckt=Jl(),fkt=Ju().attributes,Zy=A2(),qEe=nW(),TE=no().extendFlat,hkt=Ed().pattern;OEe.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:TE({colors:{valType:"data_array",editType:"calc"},line:{color:TE({},Zy.marker.line.color,{dflt:null}),width:TE({},Zy.marker.line.width,{dflt:1}),editType:"calc"},pattern:hkt,editType:"calc"},ckt("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:Zy.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:ukt({editType:"plot"},{keys:qEe.eventDataKeys.concat(["label","value"])}),hovertext:Zy.hovertext,hoverinfo:TE({},skt.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:lkt({},{keys:qEe.eventDataKeys}),textfont:Zy.textfont,insidetextorientation:Zy.insidetextorientation,insidetextfont:Zy.insidetextfont,outsidetextfont:TE({},Zy.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:Zy.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:fkt({name:"sunburst",trace:!0,editType:"calc"})}});var aW=ye((yfr,BEe)=>{"use strict";BEe.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var HEe=ye((_fr,VEe)=>{"use strict";var NEe=Mr(),dkt=AE(),vkt=Ju().defaults,pkt=r0().handleText,gkt=S2().handleMarkerDefaults,UEe=Mu(),mkt=UEe.hasColorscale,ykt=UEe.handleDefaults;VEe.exports=function(t,r,n,i){function a(h,d){return NEe.coerce(t,r,dkt,h,d)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),gkt(t,r,i,a);var u=r._hasColorscale=mkt(t,"marker","colors")||(t.marker||{}).coloraxis;u&&ykt(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",u?1:.7);var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",NEe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f="auto";pkt(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("insidetextorientation"),a("sort"),a("rotation"),a("root.color"),vkt(r,i,a),r._length=null}});var jEe=ye((xfr,GEe)=>{"use strict";var _kt=Mr(),xkt=aW();GEe.exports=function(t,r){function n(i,a){return _kt.coerce(t,r,xkt,i,a)}n("sunburstcolorway",r.colorway),n("extendsunburstcolors")}});var SE=ye((vD,WEe)=>{(function(e,t){typeof vD=="object"&&typeof WEe!="undefined"?t(vD):(e=e||self,t(e.d3=e.d3||{}))})(vD,function(e){"use strict";function t(Ve,Xe){return Ve.parent===Xe.parent?1:2}function r(Ve){return Ve.reduce(n,0)/Ve.length}function n(Ve,Xe){return Ve+Xe.x}function i(Ve){return 1+Ve.reduce(a,0)}function a(Ve,Xe){return Math.max(Ve,Xe.y)}function o(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[0];return Ve}function s(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[Xe.length-1];return Ve}function l(){var Ve=t,Xe=1,ht=1,Le=!1;function xe(Se){var lt,Gt=0;Se.eachAfter(function(jr){var ri=jr.children;ri?(jr.x=r(ri),jr.y=i(ri)):(jr.x=lt?Gt+=Ve(jr,lt):0,jr.y=0,lt=jr)});var Vt=o(Se),ar=s(Se),Qr=Vt.x-Ve(Vt,ar)/2,ai=ar.x+Ve(ar,Vt)/2;return Se.eachAfter(Le?function(jr){jr.x=(jr.x-Se.x)*Xe,jr.y=(Se.y-jr.y)*ht}:function(jr){jr.x=(jr.x-Qr)/(ai-Qr)*Xe,jr.y=(1-(Se.y?jr.y/Se.y:1))*ht})}return xe.separation=function(Se){return arguments.length?(Ve=Se,xe):Ve},xe.size=function(Se){return arguments.length?(Le=!1,Xe=+Se[0],ht=+Se[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(Se){return arguments.length?(Le=!0,Xe=+Se[0],ht=+Se[1],xe):Le?[Xe,ht]:null},xe}function u(Ve){var Xe=0,ht=Ve.children,Le=ht&&ht.length;if(!Le)Xe=1;else for(;--Le>=0;)Xe+=ht[Le].value;Ve.value=Xe}function c(){return this.eachAfter(u)}function f(Ve){var Xe=this,ht,Le=[Xe],xe,Se,lt;do for(ht=Le.reverse(),Le=[];Xe=ht.pop();)if(Ve(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;--xe)ht.push(Le[xe]);return this}function d(Ve){for(var Xe=this,ht=[Xe],Le=[],xe,Se,lt;Xe=ht.pop();)if(Le.push(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;)ht+=Le[xe].value;Xe.value=ht})}function x(Ve){return this.eachBefore(function(Xe){Xe.children&&Xe.children.sort(Ve)})}function b(Ve){for(var Xe=this,ht=p(Xe,Ve),Le=[Xe];Xe!==ht;)Xe=Xe.parent,Le.push(Xe);for(var xe=Le.length;Ve!==ht;)Le.splice(xe,0,Ve),Ve=Ve.parent;return Le}function p(Ve,Xe){if(Ve===Xe)return Ve;var ht=Ve.ancestors(),Le=Xe.ancestors(),xe=null;for(Ve=ht.pop(),Xe=Le.pop();Ve===Xe;)xe=Ve,Ve=ht.pop(),Xe=Le.pop();return xe}function E(){for(var Ve=this,Xe=[Ve];Ve=Ve.parent;)Xe.push(Ve);return Xe}function k(){var Ve=[];return this.each(function(Xe){Ve.push(Xe)}),Ve}function A(){var Ve=[];return this.eachBefore(function(Xe){Xe.children||Ve.push(Xe)}),Ve}function L(){var Ve=this,Xe=[];return Ve.each(function(ht){ht!==Ve&&Xe.push({source:ht.parent,target:ht})}),Xe}function _(Ve,Xe){var ht=new T(Ve),Le=+Ve.value&&(ht.value=Ve.value),xe,Se=[ht],lt,Gt,Vt,ar;for(Xe==null&&(Xe=M);xe=Se.pop();)if(Le&&(xe.value=+xe.data.value),(Gt=Xe(xe.data))&&(ar=Gt.length))for(xe.children=new Array(ar),Vt=ar-1;Vt>=0;--Vt)Se.push(lt=xe.children[Vt]=new T(Gt[Vt])),lt.parent=xe,lt.depth=xe.depth+1;return ht.eachBefore(P)}function C(){return _(this).eachBefore(g)}function M(Ve){return Ve.children}function g(Ve){Ve.data=Ve.data.data}function P(Ve){var Xe=0;do Ve.height=Xe;while((Ve=Ve.parent)&&Ve.height<++Xe)}function T(Ve){this.data=Ve,this.depth=this.height=0,this.parent=null}T.prototype=_.prototype={constructor:T,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:x,path:b,ancestors:E,descendants:k,leaves:A,links:L,copy:C};var F=Array.prototype.slice;function q(Ve){for(var Xe=Ve.length,ht,Le;Xe;)Le=Math.random()*Xe--|0,ht=Ve[Xe],Ve[Xe]=Ve[Le],Ve[Le]=ht;return Ve}function V(Ve){for(var Xe=0,ht=(Ve=q(F.call(Ve))).length,Le=[],xe,Se;Xe0&&ht*ht>Le*Le+xe*xe}function N(Ve,Xe){for(var ht=0;htVt?(xe=(ar+Vt-Se)/(2*ar),Gt=Math.sqrt(Math.max(0,Vt/ar-xe*xe)),ht.x=Ve.x-xe*Le-Gt*lt,ht.y=Ve.y-xe*lt+Gt*Le):(xe=(ar+Se-Vt)/(2*ar),Gt=Math.sqrt(Math.max(0,Se/ar-xe*xe)),ht.x=Xe.x+xe*Le-Gt*lt,ht.y=Xe.y+xe*lt+Gt*Le)):(ht.x=Xe.x+ht.r,ht.y=Xe.y)}function ke(Ve,Xe){var ht=Ve.r+Xe.r-1e-6,Le=Xe.x-Ve.x,xe=Xe.y-Ve.y;return ht>0&&ht*ht>Le*Le+xe*xe}function ge(Ve){var Xe=Ve._,ht=Ve.next._,Le=Xe.r+ht.r,xe=(Xe.x*ht.r+ht.x*Xe.r)/Le,Se=(Xe.y*ht.r+ht.y*Xe.r)/Le;return xe*xe+Se*Se}function ie(Ve){this._=Ve,this.next=null,this.previous=null}function Te(Ve){if(!(xe=Ve.length))return 0;var Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai;if(Xe=Ve[0],Xe.x=0,Xe.y=0,!(xe>1))return Xe.r;if(ht=Ve[1],Xe.x=-ht.r,ht.x=Xe.r,ht.y=0,!(xe>2))return Xe.r+ht.r;Me(ht,Xe,Le=Ve[2]),Xe=new ie(Xe),ht=new ie(ht),Le=new ie(Le),Xe.next=Le.previous=ht,ht.next=Xe.previous=Le,Le.next=ht.previous=Xe;e:for(Gt=3;Gt0)throw new Error("cycle");return Gt}return ht.id=function(Le){return arguments.length?(Ve=ze(Le),ht):Ve},ht.parentId=function(Le){return arguments.length?(Xe=ze(Le),ht):Xe},ht}function Ke(Ve,Xe){return Ve.parent===Xe.parent?1:2}function xt(Ve){var Xe=Ve.children;return Xe?Xe[0]:Ve.t}function bt(Ve){var Xe=Ve.children;return Xe?Xe[Xe.length-1]:Ve.t}function Lt(Ve,Xe,ht){var Le=ht/(Xe.i-Ve.i);Xe.c-=Le,Xe.s+=ht,Ve.c+=Le,Xe.z+=ht,Xe.m+=ht}function St(Ve){for(var Xe=0,ht=0,Le=Ve.children,xe=Le.length,Se;--xe>=0;)Se=Le[xe],Se.z+=Xe,Se.m+=Xe,Xe+=Se.s+(ht+=Se.c)}function Et(Ve,Xe,ht){return Ve.a.parent===Xe.parent?Ve.a:ht}function dt(Ve,Xe){this._=Ve,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=Xe}dt.prototype=Object.create(T.prototype);function Ht(Ve){for(var Xe=new dt(Ve,0),ht,Le=[Xe],xe,Se,lt,Gt;ht=Le.pop();)if(Se=ht._.children)for(ht.children=new Array(Gt=Se.length),lt=Gt-1;lt>=0;--lt)Le.push(xe=ht.children[lt]=new dt(Se[lt],lt)),xe.parent=ht;return(Xe.parent=new dt(null,0)).children=[Xe],Xe}function $t(){var Ve=Ke,Xe=1,ht=1,Le=null;function xe(ar){var Qr=Ht(ar);if(Qr.eachAfter(Se),Qr.parent.m=-Qr.z,Qr.eachBefore(lt),Le)ar.eachBefore(Vt);else{var ai=ar,jr=ar,ri=ar;ar.eachBefore(function(_n){_n.xjr.x&&(jr=_n),_n.depth>ri.depth&&(ri=_n)});var bi=ai===jr?1:Ve(ai,jr)/2,nn=bi-ai.x,Wi=Xe/(jr.x+bi+nn),Ni=ht/(ri.depth||1);ar.eachBefore(function(_n){_n.x=(_n.x+nn)*Wi,_n.y=_n.depth*Ni})}return ar}function Se(ar){var Qr=ar.children,ai=ar.parent.children,jr=ar.i?ai[ar.i-1]:null;if(Qr){St(ar);var ri=(Qr[0].z+Qr[Qr.length-1].z)/2;jr?(ar.z=jr.z+Ve(ar._,jr._),ar.m=ar.z-ri):ar.z=ri}else jr&&(ar.z=jr.z+Ve(ar._,jr._));ar.parent.A=Gt(ar,jr,ar.parent.A||ai[0])}function lt(ar){ar._.x=ar.z+ar.parent.m,ar.m+=ar.parent.m}function Gt(ar,Qr,ai){if(Qr){for(var jr=ar,ri=ar,bi=Qr,nn=jr.parent.children[0],Wi=jr.m,Ni=ri.m,_n=bi.m,$i=nn.m,zn;bi=bt(bi),jr=xt(jr),bi&&jr;)nn=xt(nn),ri=bt(ri),ri.a=ar,zn=bi.z+_n-jr.z-Wi+Ve(bi._,jr._),zn>0&&(Lt(Et(bi,ar,ai),ar,zn),Wi+=zn,Ni+=zn),_n+=bi.m,Wi+=jr.m,$i+=nn.m,Ni+=ri.m;bi&&!bt(ri)&&(ri.t=bi,ri.m+=_n-Ni),jr&&!xt(nn)&&(nn.t=jr,nn.m+=Wi-$i,ai=ar)}return ai}function Vt(ar){ar.x*=Xe,ar.y=ar.depth*ht}return xe.separation=function(ar){return arguments.length?(Ve=ar,xe):Ve},xe.size=function(ar){return arguments.length?(Le=!1,Xe=+ar[0],ht=+ar[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(ar){return arguments.length?(Le=!0,Xe=+ar[0],ht=+ar[1],xe):Le?[Xe,ht]:null},xe}function fr(Ve,Xe,ht,Le,xe){for(var Se=Ve.children,lt,Gt=-1,Vt=Se.length,ar=Ve.value&&(xe-ht)/Ve.value;++Gt_n&&(_n=ar),It=Wi*Wi*Wn,$i=Math.max(_n/It,It/Ni),$i>zn){Wi-=ar;break}zn=$i}lt.push(Vt={value:Wi,dice:ri1?Le:1)},ht}(_r);function Nr(){var Ve=Or,Xe=!1,ht=1,Le=1,xe=[0],Se=Ce,lt=Ce,Gt=Ce,Vt=Ce,ar=Ce;function Qr(jr){return jr.x0=jr.y0=0,jr.x1=ht,jr.y1=Le,jr.eachBefore(ai),xe=[0],Xe&&jr.eachBefore(qt),jr}function ai(jr){var ri=xe[jr.depth],bi=jr.x0+ri,nn=jr.y0+ri,Wi=jr.x1-ri,Ni=jr.y1-ri;Wi=jr-1){var _n=Se[ai];_n.x0=bi,_n.y0=nn,_n.x1=Wi,_n.y1=Ni;return}for(var $i=ar[ai],zn=ri/2+$i,Wn=ai+1,It=jr-1;Wn>>1;ar[ft]Ni-nn){var yr=(bi*Zt+Wi*jt)/ri;Qr(ai,Wn,jt,bi,nn,yr,Ni),Qr(Wn,jr,Zt,yr,nn,Wi,Ni)}else{var Fr=(nn*Zt+Ni*jt)/ri;Qr(ai,Wn,jt,bi,nn,Wi,Fr),Qr(Wn,jr,Zt,bi,Fr,Wi,Ni)}}}function Ne(Ve,Xe,ht,Le,xe){(Ve.depth&1?fr:rt)(Ve,Xe,ht,Le,xe)}var Ye=function Ve(Xe){function ht(Le,xe,Se,lt,Gt){if((Vt=Le._squarify)&&Vt.ratio===Xe)for(var Vt,ar,Qr,ai,jr=-1,ri,bi=Vt.length,nn=Le.value;++jr1?Le:1)},ht}(_r);e.cluster=l,e.hierarchy=_,e.pack=ce,e.packEnclose=V,e.packSiblings=Ee,e.partition=ot,e.stratify=er,e.tree=$t,e.treemap=Nr,e.treemapBinary=ut,e.treemapDice=rt,e.treemapResquarify=Ye,e.treemapSlice=fr,e.treemapSliceDice=Ne,e.treemapSquarify=Or,Object.defineProperty(e,"__esModule",{value:!0})})});var EE=ye(ME=>{"use strict";var ZEe=SE(),bkt=uo(),b5=Mr(),wkt=Mu().makeColorScaleFuncFromTrace,Tkt=y5().makePullColorFn,Akt=y5().generateExtendedColors,Skt=Mu().calc,Mkt=es().ALMOST_EQUAL,Ekt={},kkt={},Ckt={};ME.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=b5.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=b5.isArrayOrTypedArray(s),u=[],c={},f={},h=function(G,N){c[G]?c[G].push(N):c[G]=[N],f[N]=1},d=function(G){return G||typeof G=="number"},v=function(G){return!l||bkt(s[G])&&s[G]>=0},x,b,p;i?(x=Math.min(n.length,o.length),b=function(G){return d(n[G])&&v(G)},p=function(G){return String(n[G])}):(x=Math.min(a.length,o.length),b=function(G){return d(a[G])&&v(G)},p=function(G){return String(a[G])}),l&&(x=Math.min(x,s.length));for(var E=0;E1){for(var M=b5.randstr(),g=0;g{});function Vm(){}function KEe(){return this.rgb().formatHex()}function qkt(){return this.rgb().formatHex8()}function Okt(){return ike(this).formatHsl()}function JEe(){return this.rgb().formatRgb()}function W_(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Lkt.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?$Ee(t):r===3?new hd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?gD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Pkt.exec(e))?new hd(t[1],t[2],t[3],1):(t=Ikt.exec(e))?new hd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Rkt.exec(e))?gD(t[1],t[2],t[3],t[4]):(t=Dkt.exec(e))?gD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=zkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,1):(t=Fkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,t[4]):YEe.hasOwnProperty(e)?$Ee(YEe[e]):e==="transparent"?new hd(NaN,NaN,NaN,0):null}function $Ee(e){return new hd(e>>16&255,e>>8&255,e&255,1)}function gD(e,t,r,n){return n<=0&&(e=t=r=NaN),new hd(e,t,r,n)}function CE(e){return e instanceof Vm||(e=W_(e)),e?(e=e.rgb(),new hd(e.r,e.g,e.b,e.opacity)):new hd}function T5(e,t,r,n){return arguments.length===1?CE(e):new hd(e,t,r,n==null?1:n)}function hd(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function QEe(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}`}function Bkt(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}${M2((isNaN(this.opacity)?1:this.opacity)*255)}`}function eke(){let e=yD(this.opacity);return`${e===1?"rgb(":"rgba("}${E2(this.r)}, ${E2(this.g)}, ${E2(this.b)}${e===1?")":`, ${e})`}`}function yD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function E2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function M2(e){return e=E2(e),(e<16?"0":"")+e.toString(16)}function tke(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Zg(e,t,r,n)}function ike(e){if(e instanceof Zg)return new Zg(e.h,e.s,e.l,e.opacity);if(e instanceof Vm||(e=W_(e)),!e)return new Zg;if(e instanceof Zg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Zg(o,s,l,e.opacity)}function LE(e,t,r,n){return arguments.length===1?ike(e):new Zg(e,t,r,n==null?1:n)}function Zg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function rke(e){return e=(e||0)%360,e<0?e+360:e}function mD(e){return Math.max(0,Math.min(1,e||0))}function oW(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var j_,k2,w5,kE,Um,Lkt,Pkt,Ikt,Rkt,Dkt,zkt,Fkt,YEe,_D=Ll(()=>{pD();j_=.7,k2=1/j_,w5="\\s*([+-]?\\d+)\\s*",kE="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Um="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Lkt=/^#([0-9a-f]{3,8})$/,Pkt=new RegExp(`^rgb\\(${w5},${w5},${w5}\\)$`),Ikt=new RegExp(`^rgb\\(${Um},${Um},${Um}\\)$`),Rkt=new RegExp(`^rgba\\(${w5},${w5},${w5},${kE}\\)$`),Dkt=new RegExp(`^rgba\\(${Um},${Um},${Um},${kE}\\)$`),zkt=new RegExp(`^hsl\\(${kE},${Um},${Um}\\)$`),Fkt=new RegExp(`^hsla\\(${kE},${Um},${Um},${kE}\\)$`),YEe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Xy(Vm,W_,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:KEe,formatHex:KEe,formatHex8:qkt,formatHsl:Okt,formatRgb:JEe,toString:JEe});Xy(hd,T5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hd(E2(this.r),E2(this.g),E2(this.b),yD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:QEe,formatHex:QEe,formatHex8:Bkt,formatRgb:eke,toString:eke}));Xy(Zg,LE,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new Zg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new Zg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new hd(oW(e>=240?e-240:e+120,i,n),oW(e,i,n),oW(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Zg(rke(this.h),mD(this.s),mD(this.l),yD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=yD(this.opacity);return`${e===1?"hsl(":"hsla("}${rke(this.h)}, ${mD(this.s)*100}%, ${mD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var xD,bD,sW=Ll(()=>{xD=Math.PI/180,bD=180/Math.PI});function uke(e){if(e instanceof Hm)return new Hm(e.l,e.a,e.b,e.opacity);if(e instanceof Yy)return cke(e);e instanceof hd||(e=CE(e));var t=fW(e.r),r=fW(e.g),n=fW(e.b),i=lW((.2225045*t+.7168786*r+.0606169*n)/ake),a,o;return t===r&&r===n?a=o=i:(a=lW((.4360747*t+.3850649*r+.1430804*n)/nke),o=lW((.0139322*t+.0971045*r+.7141733*n)/oke)),new Hm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function S5(e,t,r,n){return arguments.length===1?uke(e):new Hm(e,t,r,n==null?1:n)}function Hm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function lW(e){return e>Nkt?Math.pow(e,1/3):e/lke+ske}function uW(e){return e>A5?e*e*e:lke*(e-ske)}function cW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function fW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Ukt(e){if(e instanceof Yy)return new Yy(e.h,e.c,e.l,e.opacity);if(e instanceof Hm||(e=uke(e)),e.a===0&&e.b===0)return new Yy(NaN,0{pD();_D();sW();wD=18,nke=.96422,ake=1,oke=.82521,ske=4/29,A5=6/29,lke=3*A5*A5,Nkt=A5*A5*A5;Xy(Hm,S5,G_(Vm,{brighter(e){return new Hm(this.l+wD*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Hm(this.l-wD*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=nke*uW(t),e=ake*uW(e),r=oke*uW(r),new hd(cW(3.1338561*t-1.6168667*e-.4906146*r),cW(-.9787684*t+1.9161415*e+.033454*r),cW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Xy(Yy,PE,G_(Vm,{brighter(e){return new Yy(this.h,this.c,this.l+wD*(e==null?1:e),this.opacity)},darker(e){return new Yy(this.h,this.c,this.l-wD*(e==null?1:e),this.opacity)},rgb(){return cke(this).rgb()}}))});function Vkt(e){if(e instanceof C2)return new C2(e.h,e.s,e.l,e.opacity);e instanceof hd||(e=CE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(vke*n+hke*t-dke*r)/(vke+hke-dke),a=n-i,o=(IE*(r-i)-dW*a)/TD,s=Math.sqrt(o*o+a*a)/(IE*i*(1-i)),l=s?Math.atan2(o,a)*bD-120:NaN;return new C2(l<0?l+360:l,s,i,e.opacity)}function M5(e,t,r,n){return arguments.length===1?Vkt(e):new C2(e,t,r,n==null?1:n)}function C2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var pke,hW,dW,TD,IE,hke,dke,vke,gke=Ll(()=>{pD();_D();sW();pke=-.14861,hW=1.78277,dW=-.29227,TD=-.90649,IE=1.97294,hke=IE*TD,dke=IE*hW,vke=hW*dW-TD*pke;Xy(C2,M5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new C2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new C2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*xD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new hd(255*(t+r*(pke*n+hW*i)),255*(t+r*(dW*n+TD*i)),255*(t+r*(IE*n)),this.opacity)}}))});var L2=Ll(()=>{_D();fke();gke()});function vW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function AD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function MD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return vW((r-n/t)*t,i,a,o,s)}}var pW=Ll(()=>{SD()});var E5,gW=Ll(()=>{E5=e=>()=>e});function mke(e,t){return function(r){return e+r*t}}function Hkt(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Z_(e,t){var r=t-e;return r?mke(e,r>180||r<-180?r-360*Math.round(r/360):r):E5(isNaN(e)?t:e)}function yke(e){return(e=+e)==1?qf:function(t,r){return r-t?Hkt(t,r,e):E5(isNaN(t)?r:t)}}function qf(e,t){var r=t-e;return r?mke(e,r):E5(isNaN(e)?t:e)}var P2=Ll(()=>{gW()});function _ke(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{L2();SD();pW();P2();RE=function e(t){var r=yke(t);function n(i,a){var o=r((i=T5(i)).r,(a=T5(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=qf(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);xke=_ke(AD),bke=_ke(MD)});function k5(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function wke(e,t){return(ED(t)?k5:yW)(e,t)}function yW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{DE();kD()});function CD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var xW=Ll(()=>{});function Fp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var zE=Ll(()=>{});function LD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=X_(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var bW=Ll(()=>{DE()});function Gkt(e){return function(){return e}}function jkt(e){return function(t){return e(t)+""}}function PD(e,t){var r=TW.lastIndex=wW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(n=TW.exec(e))&&(i=wW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:Fp(n,i)})),r=wW.lastIndex;return r{zE();TW=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wW=new RegExp(TW.source,"g")});function X_(e,t){var r=typeof t,n;return t==null||r==="boolean"?E5(t):(r==="number"?Fp:r==="string"?(n=W_(t))?(t=n,RE):PD:t instanceof W_?RE:t instanceof Date?CD:ED(t)?k5:Array.isArray(t)?yW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?LD:Fp)(e,t)}var DE=Ll(()=>{L2();mW();_W();xW();zE();bW();AW();gW();kD()});function Tke(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Ake=Ll(()=>{});function Ske(e,t){var r=Z_(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var Mke=Ll(()=>{P2()});function Eke(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var kke=Ll(()=>{});function SW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{Cke=180/Math.PI,ID={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function Pke(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?ID:SW(t.a,t.b,t.c,t.d,t.e,t.f)}function Ike(e){return e==null?ID:(RD||(RD=document.createElementNS("http://www.w3.org/2000/svg","g")),RD.setAttribute("transform",e),(e=RD.transform.baseVal.consolidate())?(e=e.matrix,SW(e.a,e.b,e.c,e.d,e.e,e.f)):ID)}var RD,Rke=Ll(()=>{Lke()});function Dke(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push("translate(",null,t,null,r);v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f||h)&&d.push("translate("+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,n)-2,x:Fp(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+"skewX(",null,n)-2,x:Fp(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push(i(d)+"scale(",null,",",null,")");v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+"scale("+f+","+h+")")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,x=h.length,b;++v{zE();Rke();zke=Dke(Pke,"px, ","px)","deg)"),Fke=Dke(Ike,", ",")",")")});function Oke(e){return((e=Math.exp(e))+1/e)/2}function Zkt(e){return((e=Math.exp(e))-1/e)/2}function Xkt(e){return((e=Math.exp(2*e))-1)/(e+1)}var Wkt,Bke,Nke=Ll(()=>{Wkt=1e-12;Bke=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,x=d*d+v*v,b,p;if(x{L2();P2();Vke=Uke(Z_),Hke=Uke(qf)});function MW(e,t){var r=qf((e=S5(e)).l,(t=S5(t)).l),n=qf(e.a,t.a),i=qf(e.b,t.b),a=qf(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+""}}var jke=Ll(()=>{L2();P2()});function Wke(e){return function(t,r){var n=e((t=PE(t)).h,(r=PE(r)).h),i=qf(t.c,r.c),a=qf(t.l,r.l),o=qf(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}var Zke,Xke,Yke=Ll(()=>{L2();P2();Zke=Wke(Z_),Xke=Wke(qf)});function Kke(e){return function t(r){r=+r;function n(i,a){var o=e((i=M5(i)).h,(a=M5(a)).h),s=qf(i.s,a.s),l=qf(i.l,a.l),u=qf(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+""}}return n.gamma=t,n}(1)}var Jke,$ke,Qke=Ll(()=>{L2();P2();Jke=Kke(Z_),$ke=Kke(qf)});function EW(e,t){t===void 0&&(t=e,e=X_);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{DE()});function tCe(e,t){for(var r=new Array(t),n=0;n{});var I2={};QQ(I2,{interpolate:()=>X_,interpolateArray:()=>wke,interpolateBasis:()=>AD,interpolateBasisClosed:()=>MD,interpolateCubehelix:()=>Jke,interpolateCubehelixLong:()=>$ke,interpolateDate:()=>CD,interpolateDiscrete:()=>Tke,interpolateHcl:()=>Zke,interpolateHclLong:()=>Xke,interpolateHsl:()=>Vke,interpolateHslLong:()=>Hke,interpolateHue:()=>Ske,interpolateLab:()=>MW,interpolateNumber:()=>Fp,interpolateNumberArray:()=>k5,interpolateObject:()=>LD,interpolateRgb:()=>RE,interpolateRgbBasis:()=>xke,interpolateRgbBasisClosed:()=>bke,interpolateRound:()=>Eke,interpolateString:()=>PD,interpolateTransformCss:()=>zke,interpolateTransformSvg:()=>Fke,interpolateZoom:()=>Bke,piecewise:()=>EW,quantize:()=>tCe});var R2=Ll(()=>{DE();_W();SD();pW();xW();Ake();Mke();zE();kD();bW();kke();AW();qke();Nke();mW();Gke();jke();Yke();Qke();eCe();rCe()});var DD=ye((cdr,iCe)=>{"use strict";var Ykt=ao(),Kkt=va();iCe.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),Ykt.pointStyle(t,n,i,r)}else Kkt.fill(t,l)}});var kW=ye((fdr,lCe)=>{"use strict";var nCe=xa(),aCe=va(),oCe=Mr(),Jkt=_v().resizeText,$kt=DD();function Qkt(e){var t=e._fullLayout._sunburstlayer.selectAll(".trace");Jkt(e,t,"sunburst"),t.each(function(r){var n=nCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){nCe.select(this).call(sCe,o,a,e)})})}function sCe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=oCe.castOption(r,o,"marker.line.color")||aCe.defaultLine,l=oCe.castOption(r,o,"marker.line.width")||0;e.call($kt,t,r,n).style("stroke-width",l).call(aCe.stroke,s).style("opacity",a?r.leaf.opacity:null)}lCe.exports={style:Qkt,styleOne:sCe}});var Ky=ye(bs=>{"use strict";var D2=Mr(),eCt=va(),tCt=Tg(),uCe=u_();bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(bs.getPtId(n)===t)return r=n.copy()}),r||e};bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};bs.isHeader=function(e,t){return!(bs.isLeaf(e)||e.depth===t._maxDepth-1)};function cCe(e){return e.data.data.pid}bs.getParent=function(e,t){return bs.findEntryWithLevel(e,cCe(t))};bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return bs.listPath(r,t).concat(n)};bs.getPath=function(e){return bs.listPath(e,"label").join("/")+"/"};bs.formatValue=uCe.formatPieValue;bs.formatPercent=function(e,t){var r=D2.formatPercent(e,0);return r==="0%"&&(r=uCe.formatPiePercent(e,t)),r}});var OE=ye((ddr,dCe)=>{"use strict";var C5=xa(),fCe=ba(),nCt=rp().appendArrayPointValue,FE=Nc(),hCe=Mr(),aCt=g3(),Wh=Ky(),oCt=u_(),sCt=oCt.formatPieValue;dCe.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type==="sunburst",c=s.type==="treemap"||s.type==="icicle";"_hasHoverLabel"in s||(s._hasHoverLabel=!1),"_hasHoverEvent"in s||(s._hasHoverEvent=!1);var f=function(v){var x=n._fullLayout;if(!(n._dragging||x.hovermode===!1)){var b=n._fullData[s.index],p=v.data.data,E=p.i,k=Wh.isHierarchyRoot(v),A=Wh.getParent(l,v),L=Wh.getValue(v),_=function(Me){return hCe.castOption(b,E,Me)},C=_("hovertemplate"),M=FE.castHoverinfo(b,x,E),g=x.separators,P;if(C||M&&M!=="none"&&M!=="skip"){var T,F;u&&(T=o.cx+v.pxmid[0]*(1-v.rInscribed),F=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(T=v._hoverX,F=v._hoverY);var q={},V=[],H=[],X=function(Me){return V.indexOf(Me)!==-1};M&&(V=M==="all"?b._module.attributes.hoverinfo.flags:M.split("+")),q.label=p.label,X("label")&&q.label&&H.push(q.label),p.hasOwnProperty("v")&&(q.value=p.v,q.valueLabel=sCt(q.value,g),X("value")&&H.push(q.valueLabel)),q.currentPath=v.currentPath=Wh.getPath(v.data),X("current path")&&!k&&H.push(q.currentPath);var G,N=[],W=function(){N.indexOf(G)===-1&&(H.push(G),N.push(G))};q.percentParent=v.percentParent=L/Wh.getValue(A),q.parent=v.parentString=Wh.getPtLabel(A),X("percent parent")&&(G=Wh.formatPercent(q.percentParent,g)+" of "+q.parent,W()),q.percentEntry=v.percentEntry=L/Wh.getValue(r),q.entry=v.entry=Wh.getPtLabel(r),X("percent entry")&&!k&&!v.onPathbar&&(G=Wh.formatPercent(q.percentEntry,g)+" of "+q.entry,W()),q.percentRoot=v.percentRoot=L/Wh.getValue(l),q.root=v.root=Wh.getPtLabel(l),X("percent root")&&!k&&(G=Wh.formatPercent(q.percentRoot,g)+" of "+q.root,W()),q.text=_("hovertext")||_("text"),X("text")&&(G=q.text,hCe.isValidTextValue(G)&&H.push(G)),P=[qE(v,b,a.eventDataKeys)];var re={trace:b,y:F,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:H.join("
"),name:C||X("name")?b.name:void 0,color:_("hoverlabel.bgcolor")||p.color,borderColor:_("hoverlabel.bordercolor"),fontFamily:_("hoverlabel.font.family"),fontSize:_("hoverlabel.font.size"),fontColor:_("hoverlabel.font.color"),fontWeight:_("hoverlabel.font.weight"),fontStyle:_("hoverlabel.font.style"),fontVariant:_("hoverlabel.font.variant"),nameLength:_("hoverlabel.namelength"),textAlign:_("hoverlabel.align"),hovertemplate:C,hovertemplateLabels:q,eventData:P};u&&(re.x0=T-v.rInscribed*v.rpx1,re.x1=T+v.rInscribed*v.rpx1,re.idealAlign=v.pxmid[0]<0?"left":"right"),c&&(re.x=T,re.idealAlign=T<0?"left":"right");var ae=[];FE.loneHover(re,{container:x._hoverlayer.node(),outerContainer:x._paper.node(),gd:n,inOut_bbox:ae}),P[0].bbox=ae[0],s._hasHoverLabel=!0}if(c){var _e=t.select("path.surface");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit("plotly_hover",{points:P||[qE(v,b,a.eventDataKeys)],event:C5.event})}},h=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=C5.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=C5.event,n.emit("plotly_unhover",{points:[qE(p,b,a.eventDataKeys)],event:C5.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(FE.loneUnhover(x._hoverlayer.node()),s._hasHoverLabel=!1),c){var E=t.select("path.surface");a.styleOne(E,p,b,n,{hovered:!1})}},d=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=u&&(Wh.isHierarchyRoot(v)||Wh.isLeaf(v)),E=Wh.getPtId(v),k=Wh.isEntry(v)?Wh.findEntryWithChild(l,E):Wh.findEntryWithLevel(l,E),A=Wh.getPtId(k),L={points:[qE(v,b,a.eventDataKeys)],event:C5.event};p||(L.nextLevel=A);var _=aCt.triggerHandler(n,"plotly_"+s.type+"click",L);if(_!==!1&&x.hovermode&&(n._hoverdata=[qE(v,b,a.eventDataKeys)],FE.click(n,C5.event)),!p&&_!==!1&&!n._dragging&&!n._transitioning){fCe.call("_storeDirectGUIEdit",b,x._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:A}],traces:[s.index]},M={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:"immediate",fromcurrent:!0};FE.loneUnhover(x._hoverlayer.node()),fCe.call("animate",n,C,M)}};t.on("mouseover",f),t.on("mouseout",h),t.on("click",d)};function qE(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{"use strict";var BE=xa(),lCt=SE(),Xg=(R2(),B1(I2)).interpolate,vCe=ao(),bv=Mr(),uCt=Pl(),yCe=_v(),pCe=yCe.recordMinTextSize,cCt=yCe.clearMinTextSize,_Ce=dD(),fCt=u_().getRotationAngle,hCt=_Ce.computeTransform,dCt=_Ce.transformInsideText,vCt=kW().styleOne,pCt=N0().resizeText,gCt=OE(),CW=nW(),sl=Ky();zD.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&sl.hasTransition(r);if(cCt("sunburst",i),o=a.selectAll("g.trace.sunburst").data(t,function(f){return f[0].trace.uid}),o.enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),o.order(),u){n&&(s=n());var c=BE.transition().duration(r.duration).ease(r.easing).each("end",function(){s&&s()}).each("interrupt",function(){s&&s()});c.each(function(){a.selectAll("g.trace").each(function(f){gCe(e,f,this,r)})})}else o.each(function(f){gCe(e,f,this,r)}),i.uniformtext.mode&&pCt(e,i._sunburstlayer.selectAll(".trace"),"sunburst");l&&o.exit().remove()};function gCe(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&sl.hasTransition(n),s=BE.select(r),l=s.selectAll("g.slice"),u=t[0],c=u.trace,f=u.hierarchy,h=sl.findEntryWithLevel(f,c.level),d=sl.getMaxDepth(c),v=a._size,x=c.domain,b=v.w*(x.x[1]-x.x[0]),p=v.h*(x.y[1]-x.y[0]),E=.5*Math.min(b,p),k=u.cx=v.l+v.w*(x.x[1]+x.x[0])/2,A=u.cy=v.t+v.h*(1-x.y[0])-p/2;if(!h)return l.remove();var L=null,_={};o&&l.each(function(ge){_[sl.getPtId(ge)]={rpx0:ge.rpx0,rpx1:ge.rpx1,x0:ge.x0,x1:ge.x1,transform:ge.transform},!L&&sl.isEntry(ge)&&(L=ge)});var C=mCt(h).descendants(),M=h.height+1,g=0,P=d;u.hasMultipleRoots&&sl.isHierarchyRoot(h)&&(C=C.slice(1),M-=1,g=1,P+=1),C=C.filter(function(ge){return ge.y1<=P});var T=fCt(c.rotation);T&&C.forEach(function(ge){ge.x0+=T,ge.x1+=T});var F=Math.min(M,d),q=function(ge){return(ge-g)/F*E},V=function(ge,ie){return[ge*Math.cos(ie),-ge*Math.sin(ie)]},H=function(ge){return bv.pathAnnulus(ge.rpx0,ge.rpx1,ge.x0,ge.x1,k,A)},X=function(ge){return k+mCe(ge)[0]*(ge.transform.rCenter||0)+(ge.transform.x||0)},G=function(ge){return A+mCe(ge)[1]*(ge.transform.rCenter||0)+(ge.transform.y||0)};l=l.data(C,sl.getPtId),l.enter().append("g").classed("slice",!0),o?l.exit().transition().each(function(){var ge=BE.select(this),ie=ge.select("path.surface");ie.transition().attrTween("d",function(Ee){var Ae=ae(Ee);return function(ze){return H(Ae(ze))}});var Te=ge.select("g.slicetext");Te.attr("opacity",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var W=sl.getPtId(L);l.each(function(ge){N===null&&sl.getPtId(ge)===W&&(N=ge.x1)})}var re=l;o&&(re=re.transition().each("end",function(){var ge=BE.select(this);sl.setSliceCursor(ge,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),re.each(function(ge){var ie=BE.select(this),Te=bv.ensureSingle(ie,"path","surface",function(Re){Re.style("pointer-events",i?"none":"all")});ge.rpx0=q(ge.y0),ge.rpx1=q(ge.y1),ge.xmid=(ge.x0+ge.x1)/2,ge.pxmid=V(ge.rpx1,ge.xmid),ge.midangle=-(ge.xmid-Math.PI/2),ge.startangle=-(ge.x0-Math.PI/2),ge.stopangle=-(ge.x1-Math.PI/2),ge.halfangle=.5*Math.min(bv.angleDelta(ge.x0,ge.x1)||Math.PI,Math.PI),ge.ring=1-ge.rpx0/ge.rpx1,ge.rInscribed=yCt(ge,c),o?Te.transition().attrTween("d",function(Re){var ce=_e(Re);return function(Ge){return H(ce(Ge))}}):Te.attr("d",H),ie.call(gCt,h,e,t,{eventDataKeys:CW.eventDataKeys,transitionTime:CW.CLICK_TRANSITION_TIME,transitionEasing:CW.CLICK_TRANSITION_EASING}).call(sl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Te.call(vCt,ge,c,e);var Ee=bv.ensureSingle(ie,"g","slicetext"),Ae=bv.ensureSingle(Ee,"text","",function(Re){Re.attr("data-notex",1)}),ze=bv.ensureUniformFontSize(e,sl.determineTextFont(c,ge,a.font));Ae.text(zD.formatSliceLabel(ge,h,c,t,a)).classed("slicetext",!0).attr("text-anchor","middle").call(vCe.font,ze).call(uCt.convertToTspans,e);var Ce=vCe.bBox(Ae.node());ge.transform=dCt(Ce,ge,u),ge.transform.targetX=X(ge),ge.transform.targetY=G(ge);var me=function(Re,ce){var Ge=Re.transform;return hCt(Ge,ce),Ge.fontSize=ze.size,pCe(c.type,Ge,a),bv.getTextTransform(Ge)};o?Ae.transition().attrTween("transform",function(Re){var ce=Me(Re);return function(Ge){return me(ce(Ge),Ce)}}):Ae.attr("transform",me(ge,Ce))});function ae(ge){var ie=sl.getPtId(ge),Te=_[ie],Ee=_[sl.getPtId(h)],Ae;if(Ee){var ze=(ge.x1>Ee.x1?2*Math.PI:0)+T;Ae=ge.rpx1N?2*Math.PI:0)+T;Te={x0:Ae,x1:Ae}}else Te={rpx0:E,rpx1:E},bv.extendFlat(Te,ke(ge));else Te={rpx0:0,rpx1:0};else Te={x0:T,x1:T};return Xg(Te,Ee)}function Me(ge){var ie=_[sl.getPtId(ge)],Te,Ee=ge.transform;if(ie)Te=ie;else if(Te={rpx1:ge.rpx1,transform:{textPosAngle:Ee.textPosAngle,scale:0,rotate:Ee.rotate,rCenter:Ee.rCenter,x:Ee.x,y:Ee.y}},L)if(ge.parent)if(N){var Ae=ge.x1>N?2*Math.PI:0;Te.x0=Te.x1=Ae}else bv.extendFlat(Te,ke(ge));else Te.x0=Te.x1=T;else Te.x0=Te.x1=T;var ze=Xg(Te.transform.textPosAngle,ge.transform.textPosAngle),Ce=Xg(Te.rpx1,ge.rpx1),me=Xg(Te.x0,ge.x0),Re=Xg(Te.x1,ge.x1),ce=Xg(Te.transform.scale,Ee.scale),Ge=Xg(Te.transform.rotate,Ee.rotate),nt=Ee.rCenter===0?3:Te.transform.rCenter===0?1/3:1,ct=Xg(Te.transform.rCenter,Ee.rCenter),qt=function(rt){return ct(Math.pow(rt,nt))};return function(rt){var ot=Ce(rt),Rt=me(rt),kt=Re(rt),Ct=qt(rt),Yt=V(ot,(Rt+kt)/2),xr=ze(rt),er={pxmid:Yt,rpx1:ot,transform:{textPosAngle:xr,rCenter:Ct,x:Ee.x,y:Ee.y}};return pCe(c.type,Ee,a),{transform:{targetX:X(er),targetY:G(er),scale:ce(rt),rotate:Ge(rt),rCenter:Ct}}}}function ke(ge){var ie=ge.parent,Te=_[sl.getPtId(ie)],Ee={};if(Te){var Ae=ie.children,ze=Ae.indexOf(ge),Ce=Ae.length,me=Xg(Te.x0,Te.x1);Ee.x0=me(ze/Ce),Ee.x1=me(ze/Ce)}else Ee.x0=Ee.x1=0;return Ee}}function mCt(e){return lCt.partition().size([2*Math.PI,e.height+1])(e)}zD.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o==="none"))return"";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=sl.isHierarchyRoot(e),h=sl.getParent(c,e),d=sl.getValue(e);if(!a){var v=o.split("+"),x=function(g){return v.indexOf(g)!==-1},b=[],p;if(x("label")&&u.label&&b.push(u.label),u.hasOwnProperty("v")&&x("value")&&b.push(sl.formatValue(u.v,s)),!f){x("current path")&&b.push(sl.getPath(e.data));var E=0;x("percent parent")&&E++,x("percent entry")&&E++,x("percent root")&&E++;var k=E>1;if(E){var A,L=function(g){p=sl.formatPercent(A,s),k&&(p+=" of "+g),b.push(p)};x("percent parent")&&!f&&(A=d/sl.getValue(h),L("parent")),x("percent entry")&&(A=d/sl.getValue(t),L("entry")),x("percent root")&&(A=d/sl.getValue(c),L("root"))}}return x("text")&&(p=bv.castOption(r,u.i,"text"),bv.isValidTextValue(p)&&b.push(p)),b.join("
")}var _=bv.castOption(r,u.i,"texttemplate");if(!_)return"";var C={};u.label&&(C.label=u.label),u.hasOwnProperty("v")&&(C.value=u.v,C.valueLabel=sl.formatValue(u.v,s)),C.currentPath=sl.getPath(e.data),f||(C.percentParent=d/sl.getValue(h),C.percentParentLabel=sl.formatPercent(C.percentParent,s),C.parent=sl.getPtLabel(h)),C.percentEntry=d/sl.getValue(t),C.percentEntryLabel=sl.formatPercent(C.percentEntry,s),C.entry=sl.getPtLabel(t),C.percentRoot=d/sl.getValue(c),C.percentRootLabel=sl.formatPercent(C.percentRoot,s),C.root=sl.getPtLabel(c),u.hasOwnProperty("color")&&(C.color=u.color);var M=bv.castOption(r,u.i,"text");return(bv.isValidTextValue(M)||M==="")&&(C.text=M),C.customdata=bv.castOption(r,u.i,"customdata"),bv.texttemplateString(_,C,i._d3locale,C,r._meta||{})};function yCt(e){return e.rpx0===0&&bv.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function mCe(e){return _Ct(e.rpx1,e.transform.textPosAngle)}function _Ct(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var bCe=ye((pdr,xCe)=>{"use strict";xCe.exports={moduleType:"trace",name:"sunburst",basePlotModule:zEe(),categories:[],animatable:!0,attributes:AE(),layoutAttributes:aW(),supplyDefaults:HEe(),supplyLayoutDefaults:jEe(),calc:EE().calc,crossTraceCalc:EE().crossTraceCalc,plot:FD().plot,style:kW().style,colorbar:Kd(),meta:{}}});var TCe=ye((gdr,wCe)=>{"use strict";wCe.exports=bCe()});var SCe=ye(L5=>{"use strict";var ACe=Xu();L5.name="treemap";L5.plot=function(e,t,r,n){ACe.plotBasePlot(L5.name,e,t,r,n)};L5.clean=function(e,t,r,n){ACe.cleanBasePlot(L5.name,e,t,r,n)}});var z2=ye((ydr,MCe)=>{"use strict";MCe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}});var qD=ye((_dr,kCe)=>{"use strict";var xCt=Wo().hovertemplateAttrs,bCt=Wo().texttemplateAttrs,wCt=Jl(),TCt=Ju().attributes,F2=A2(),Q0=AE(),ECe=z2(),LW=no().extendFlat,ACt=Ed().pattern;kCe.exports={labels:Q0.labels,parents:Q0.parents,values:Q0.values,branchvalues:Q0.branchvalues,count:Q0.count,level:Q0.level,maxdepth:Q0.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:LW({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:Q0.marker.colors,pattern:ACt,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:Q0.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},wCt("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:LW({},F2.textfont,{}),editType:"calc"},text:F2.text,textinfo:Q0.textinfo,texttemplate:bCt({editType:"plot"},{keys:ECe.eventDataKeys.concat(["label","value"])}),hovertext:F2.hovertext,hoverinfo:Q0.hoverinfo,hovertemplate:xCt({},{keys:ECe.eventDataKeys}),textfont:F2.textfont,insidetextfont:F2.insidetextfont,outsidetextfont:LW({},F2.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:F2.sort,root:Q0.root,domain:TCt({name:"treemap",trace:!0,editType:"calc"})}});var PW=ye((xdr,CCe)=>{"use strict";CCe.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var RCe=ye((bdr,ICe)=>{"use strict";var LCe=Mr(),SCt=qD(),MCt=va(),ECt=Ju().defaults,kCt=r0().handleText,CCt=Qb().TEXTPAD,LCt=S2().handleMarkerDefaults,PCe=Mu(),PCt=PCe.hasColorscale,ICt=PCe.handleDefaults;ICe.exports=function(t,r,n,i){function a(b,p){return LCe.coerce(t,r,SCt,b,p)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth");var u=a("tiling.packing");u==="squarify"&&a("tiling.squarifyratio"),a("tiling.flip"),a("tiling.pad");var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",LCe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f=a("pathbar.visible"),h="auto";kCt(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition");var d=r.textposition.indexOf("bottom")!==-1;LCt(t,r,i,a);var v=r._hasColorscale=PCt(t,"marker","colors")||(t.marker||{}).coloraxis;v?ICt(t,r,i,a,{prefix:"marker.",cLetter:"c"}):a("marker.depthfade",!(r.marker.colors||[]).length);var x=r.textfont.size*2;a("marker.pad.t",d?x/4:x),a("marker.pad.l",x/4),a("marker.pad.r",x/4),a("marker.pad.b",d?x:x/4),a("marker.cornerradius"),r._hovered={marker:{line:{width:2,color:MCt.contrast(i.paper_bgcolor)}}},f&&(a("pathbar.thickness",r.pathbar.textfont.size+2*CCt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),ECt(r,i,a),r._length=null}});var zCe=ye((wdr,DCe)=>{"use strict";var RCt=Mr(),DCt=PW();DCe.exports=function(t,r){function n(i,a){return RCt.coerce(t,r,DCt,i,a)}n("treemapcolorway",r.colorway),n("extendtreemapcolors")}});var RW=ye(IW=>{"use strict";var FCe=EE();IW.calc=function(e,t){return FCe.calc(e,t)};IW.crossTraceCalc=function(e){return FCe._runCrossTraceCalc("treemap",e)}});var DW=ye((Adr,qCe)=>{"use strict";qCe.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{"use strict";var P5=SE(),zCt=DW();OCe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing==="dice-slice",s=n.pad[a?"bottom":"top"],l=n.pad[i?"right":"left"],u=n.pad[i?"left":"right"],c=n.pad[a?"top":"bottom"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=P5.treemap().tile(FCt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&zCt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function FCt(e,t){switch(e){case"squarify":return P5.treemapSquarify.ratio(t);case"binary":return P5.treemapBinary;case"dice":return P5.treemapDice;case"slice":return P5.treemapSlice;default:return P5.treemapSliceDice}}});var OD=ye((Mdr,VCe)=>{"use strict";var BCe=xa(),I5=va(),NCe=Mr(),FW=Ky(),qCt=_v().resizeText,OCt=DD();function BCt(e){var t=e._fullLayout._treemaplayer.selectAll(".trace");qCt(e,t,"treemap"),t.each(function(r){var n=BCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){BCe.select(this).call(UCe,o,a,e,{hovered:!1})})})}function UCe(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=FW.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l="rgba(0,0,0,0)",u=0;else if(l=NCe.castOption(r,s,"marker.line.color")||I5.defaultLine,u=NCe.castOption(r,s,"marker.line.width")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=I5.combine(I5.addOpacity(r._backgroundColor,.75),c),x;if(d===!0){var b=FW.getMaxDepth(r);isFinite(b)?FW.isLeaf(t)?x=0:x=r._maxVisibleLayers-(t.data.depth-r._entryDepth):x=t.data.height+1}else x=t.data.depth-r._entryDepth,r._atRootLevel||x++;if(x>0)for(var p=0;p{"use strict";var HCe=xa(),BD=Mr(),GCe=ao(),NCt=Pl(),UCt=zW(),jCe=OD().styleOne,qW=z2(),R5=Ky(),VCt=OE(),OW=!0;WCe.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,x=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,p=a.makeUpdateTextInterpolator,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=L.hierarchy,M=s/_._entryDepth,g=R5.listPath(n.data,"id"),P=UCt(C.copy(),[s,l],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(F){var q=g.indexOf(F.data.id);return q===-1?!1:(F.x0=M*q,F.x1=M*(q+1),F.y0=o,F.y1=o+l,F.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,R5.getPtId),i.enter().append("g").classed("pathbar",!0),x(i,OW,E,[s,l],f),i.order();var T=i;v&&(T=T.transition().each("end",function(){var F=HCe.select(this);R5.setSliceCursor(F,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),T.each(function(F){F._x0=u(F.x0),F._x1=u(F.x1),F._y0=c(F.y0),F._y1=c(F.y1),F._hoverX=u(F.x1-Math.min(s,l)/2),F._hoverY=c(F.y1-l/2);var q=HCe.select(this),V=BD.ensureSingle(q,"path","surface",function(N){N.style("pointer-events",k?"none":"all")});v?V.transition().attrTween("d",function(N){var W=b(N,OW,E,[s,l]);return function(re){return f(W(re))}}):V.attr("d",f),q.call(VCt,n,t,r,{styleOne:jCe,eventDataKeys:qW.eventDataKeys,transitionTime:qW.CLICK_TRANSITION_TIME,transitionEasing:qW.CLICK_TRANSITION_EASING}).call(R5.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(jCe,F,_,t,{hovered:!1}),F._text=(R5.getPtLabel(F)||"").split("
").join(" ")||"";var H=BD.ensureSingle(q,"g","slicetext"),X=BD.ensureSingle(H,"text","",function(N){N.attr("data-notex",1)}),G=BD.ensureUniformFontSize(t,R5.determineTextFont(_,F,A.font,{onPathbar:!0}));X.text(F._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(GCe.font,G).call(NCt.convertToTspans,t),F.textBB=GCe.bBox(X.node()),F.transform=h(F,{fontSize:G.size,onPathbar:!0}),F.transform.fontSize=G.size,v?X.transition().attrTween("transform",function(N){var W=p(N,OW,E,[s,l]);return function(re){return d(W(re))}}):X.attr("transform",d(F))})}});var JCe=ye((kdr,KCe)=>{"use strict";var XCe=xa(),BW=(R2(),B1(I2)).interpolate,Y_=Ky(),NE=Mr(),YCe=Qb().TEXTPAD,HCt=i2(),GCt=HCt.toMoveInsideBar,jCt=_v(),NW=jCt.recordMinTextSize,WCt=z2(),ZCt=ZCe();function q2(e){return Y_.isHierarchyRoot(e)?"":Y_.getPtId(e)}KCe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u==="icicle",f=s.hierarchy,h=Y_.findEntryWithLevel(f,l.level),d=XCe.select(n),v=d.selectAll("g.pathbar"),x=d.selectAll("g.slice");if(!h){v.remove(),x.remove();return}var b=Y_.isHierarchyRoot(h),p=!o.uniformtext.mode&&Y_.hasTransition(i),E=Y_.getMaxDepth(l),k=function(Ke){return Ke.data.depth-h.data.depth-1?C+P:-(g+P):0,F={x0:M,x1:M,y0:T,y1:T+g},q=function(Ke,xt,bt){var Lt=l.tiling.pad,St=function($t){return $t-Lt<=xt.x0},Et=function($t){return $t+Lt>=xt.x1},dt=function($t){return $t-Lt<=xt.y0},Ht=function($t){return $t+Lt>=xt.y1};return Ke.x0===xt.x0&&Ke.x1===xt.x1&&Ke.y0===xt.y0&&Ke.y1===xt.y1?{x0:Ke.x0,x1:Ke.x1,y0:Ke.y0,y1:Ke.y1}:{x0:St(Ke.x0-Lt)?0:Et(Ke.x0-Lt)?bt[0]:Ke.x0,x1:St(Ke.x1+Lt)?0:Et(Ke.x1+Lt)?bt[0]:Ke.x1,y0:dt(Ke.y0-Lt)?0:Ht(Ke.y0-Lt)?bt[1]:Ke.y0,y1:dt(Ke.y1+Lt)?0:Ht(Ke.y1+Lt)?bt[1]:Ke.y1}},V=null,H={},X={},G=null,N=function(Ke,xt){return xt?H[q2(Ke)]:X[q2(Ke)]},W=function(Ke,xt,bt,Lt){if(xt)return H[q2(f)]||F;var St=X[l.level]||bt;return k(Ke)?q(Ke,St,Lt):{}};s.hasMultipleRoots&&b&&E++,l._maxDepth=E,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var re=-_/2+A.l+A.w*(L.x[1]+L.x[0])/2,ae=-C/2+A.t+A.h*(1-(L.y[1]+L.y[0])/2),_e=function(Ke){return re+Ke},Me=function(Ke){return ae+Ke},ke=Me(0),ge=_e(0),ie=function(Ke){return ge+Ke},Te=function(Ke){return ke+Ke};function Ee(Ke,xt){return Ke+","+xt}var Ae=ie(0),ze=function(Ke){Ke.x=Math.max(Ae,Ke.x)},Ce=l.pathbar.edgeshape,me=function(Ke){var xt=ie(Math.max(Math.min(Ke.x0,Ke.x0),0)),bt=ie(Math.min(Math.max(Ke.x1,Ke.x1),M)),Lt=Te(Ke.y0),St=Te(Ke.y1),Et=g/2,dt={},Ht={};dt.x=xt,Ht.x=bt,dt.y=Ht.y=(Lt+St)/2;var $t={x:xt,y:Lt},fr={x:bt,y:Lt},_r={x:bt,y:St},Br={x:xt,y:St};return Ce===">"?($t.x-=Et,fr.x-=Et,_r.x-=Et,Br.x-=Et):Ce==="/"?(_r.x-=Et,Br.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="\\"?($t.x-=Et,fr.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="<"&&(dt.x-=Et,Ht.x-=Et),ze($t),ze(Br),ze(dt),ze(fr),ze(_r),ze(Ht),"M"+Ee($t.x,$t.y)+"L"+Ee(fr.x,fr.y)+"L"+Ee(Ht.x,Ht.y)+"L"+Ee(_r.x,_r.y)+"L"+Ee(Br.x,Br.y)+"L"+Ee(dt.x,dt.y)+"Z"},Re=l[c?"tiling":"marker"].pad,ce=function(Ke){return l.textposition.indexOf(Ke)!==-1},Ge=ce("top"),nt=ce("left"),ct=ce("right"),qt=ce("bottom"),rt=function(Ke){var xt=_e(Ke.x0),bt=_e(Ke.x1),Lt=Me(Ke.y0),St=Me(Ke.y1),Et=bt-xt,dt=St-Lt;if(!Et||!dt)return"";var Ht=l.marker.cornerradius||0,$t=Math.min(Ht,Et/2,dt/2);$t&&Ke.data&&Ke.data.data&&Ke.data.data.label&&(Ge&&($t=Math.min($t,Re.t)),nt&&($t=Math.min($t,Re.l)),ct&&($t=Math.min($t,Re.r)),qt&&($t=Math.min($t,Re.b)));var fr=function(_r,Br){return $t?"a"+Ee($t,$t)+" 0 0 1 "+Ee(_r,Br):""};return"M"+Ee(xt,Lt+$t)+fr($t,-$t)+"L"+Ee(bt-$t,Lt)+fr($t,$t)+"L"+Ee(bt,St-$t)+fr(-$t,$t)+"L"+Ee(xt+$t,St)+fr(-$t,-$t)+"Z"},ot=function(Ke,xt){var bt=Ke.x0,Lt=Ke.x1,St=Ke.y0,Et=Ke.y1,dt=Ke.textBB,Ht=Ge||xt.isHeader&&!qt,$t=Ht?"start":qt?"end":"middle",fr=ce("right"),_r=ce("left")||xt.onPathbar,Br=_r?-1:fr?1:0;if(xt.isHeader){if(bt+=(c?Re:Re.l)-YCe,Lt-=(c?Re:Re.r)-YCe,bt>=Lt){var Or=(bt+Lt)/2;bt=Or,Lt=Or}var Nr;qt?(Nr=Et-(c?Re:Re.b),St{"use strict";var XCt=xa(),YCt=Ky(),KCt=_v(),JCt=KCt.clearMinTextSize,$Ct=N0().resizeText,$Ce=JCe();QCe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l["_"+o+"layer"],c,f,h=!n;if(JCt(o,l),c=u.selectAll("g.trace."+o).data(r,function(v){return v[0].trace.uid}),c.enter().append("g").classed("trace",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&YCt.hasTransition(n)){i&&(f=i());var d=XCt.transition().duration(n.duration).ease(n.easing).each("end",function(){f&&f()}).each("interrupt",function(){f&&f()});d.each(function(){u.selectAll("g.trace").each(function(v){$Ce(t,v,this,n,s)})})}else c.each(function(v){$Ce(t,v,this,n,s)}),l.uniformtext.mode&&$Ct(t,u.selectAll(".trace"),o);h&&c.exit().remove()}});var n6e=ye((Ldr,i6e)=>{"use strict";var e6e=xa(),ND=Mr(),t6e=ao(),QCt=Pl(),e6t=zW(),r6e=OD().styleOne,VW=z2(),K_=Ky(),t6t=OE(),r6t=FD().formatSliceLabel,HW=!1;i6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=!g&&!_.marker.pad.t||g&&!_.marker.pad.b,T=e6t(n,[o,s],{packing:_.tiling.packing,squarifyratio:_.tiling.squarifyratio,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,pad:{inner:_.tiling.pad,top:_.marker.pad.t,left:_.marker.pad.l,right:_.marker.pad.r,bottom:_.marker.pad.b}}),F=T.descendants(),q=1/0,V=-1/0;F.forEach(function(W){var re=W.depth;re>=_._maxDepth?(W.x0=W.x1=(W.x0+W.x1)/2,W.y0=W.y1=(W.y0+W.y1)/2):(q=Math.min(q,re),V=Math.max(V,re))}),i=i.data(F,K_.getPtId),_._maxVisibleLayers=isFinite(V)?V-q+1:0,i.enter().append("g").classed("slice",!0),v(i,HW,E,[o,s],c),i.order();var H=null;if(d&&p){var X=K_.getPtId(p);i.each(function(W){H===null&&K_.getPtId(W)===X&&(H={x0:W.x0,x1:W.x1,y0:W.y0,y1:W.y1})})}var G=function(){return H||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each("end",function(){var W=e6e.select(this);K_.setSliceCursor(W,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(W){var re=K_.isHeader(W,_);W._x0=l(W.x0),W._x1=l(W.x1),W._y0=u(W.y0),W._y1=u(W.y1),W._hoverX=l(W.x1-_.marker.pad.r),W._hoverY=u(g?W.y1-_.marker.pad.b/2:W.y0+_.marker.pad.t/2);var ae=e6e.select(this),_e=ND.ensureSingle(ae,"path","surface",function(Ee){Ee.style("pointer-events",k?"none":"all")});d?_e.transition().attrTween("d",function(Ee){var Ae=x(Ee,HW,G(),[o,s]);return function(ze){return c(Ae(ze))}}):_e.attr("d",c),ae.call(t6t,n,t,r,{styleOne:r6e,eventDataKeys:VW.eventDataKeys,transitionTime:VW.CLICK_TRANSITION_TIME,transitionEasing:VW.CLICK_TRANSITION_EASING}).call(K_.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(r6e,W,_,t,{hovered:!1}),W.x0===W.x1||W.y0===W.y1?W._text="":re?W._text=P?"":K_.getPtLabel(W)||"":W._text=r6t(W,n,_,r,A)||"";var Me=ND.ensureSingle(ae,"g","slicetext"),ke=ND.ensureSingle(Me,"text","",function(Ee){Ee.attr("data-notex",1)}),ge=ND.ensureUniformFontSize(t,K_.determineTextFont(_,W,A.font)),ie=W._text||" ",Te=re&&ie.indexOf("
")===-1;ke.text(ie).classed("slicetext",!0).attr("text-anchor",M?"end":C||Te?"start":"middle").call(t6e.font,ge).call(QCt.convertToTspans,t),W.textBB=t6e.bBox(ke.node()),W.transform=f(W,{fontSize:ge.size,isHeader:re}),W.transform.fontSize=ge.size,d?ke.transition().attrTween("transform",function(Ee){var Ae=b(Ee,HW,G(),[o,s]);return function(ze){return h(Ae(ze))}}):ke.attr("transform",h(W))}),H}});var o6e=ye((Pdr,a6e)=>{"use strict";var i6t=UW(),n6t=n6e();a6e.exports=function(t,r,n,i){return i6t(t,r,n,i,{type:"treemap",drawDescendants:n6t})}});var l6e=ye((Idr,s6e)=>{"use strict";s6e.exports={moduleType:"trace",name:"treemap",basePlotModule:SCe(),categories:[],animatable:!0,attributes:qD(),layoutAttributes:PW(),supplyDefaults:RCe(),supplyLayoutDefaults:zCe(),calc:RW().calc,crossTraceCalc:RW().crossTraceCalc,plot:o6e(),style:OD().style,colorbar:Kd(),meta:{}}});var c6e=ye((Rdr,u6e)=>{"use strict";u6e.exports=l6e()});var h6e=ye(D5=>{"use strict";var f6e=Xu();D5.name="icicle";D5.plot=function(e,t,r,n){f6e.plotBasePlot(D5.name,e,t,r,n)};D5.clean=function(e,t,r,n){f6e.cleanBasePlot(D5.name,e,t,r,n)}});var GW=ye((zdr,v6e)=>{"use strict";var a6t=Wo().hovertemplateAttrs,o6t=Wo().texttemplateAttrs,s6t=Jl(),l6t=Ju().attributes,UE=A2(),o0=AE(),UD=qD(),d6e=z2(),u6t=no().extendFlat,c6t=Ed().pattern;v6e.exports={labels:o0.labels,parents:o0.parents,values:o0.values,branchvalues:o0.branchvalues,count:o0.count,level:o0.level,maxdepth:o0.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:UD.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:u6t({colors:o0.marker.colors,line:o0.marker.line,pattern:c6t,editType:"calc"},s6t("marker",{colorAttr:"colors",anim:!1})),leaf:o0.leaf,pathbar:UD.pathbar,text:UE.text,textinfo:o0.textinfo,texttemplate:o6t({editType:"plot"},{keys:d6e.eventDataKeys.concat(["label","value"])}),hovertext:UE.hovertext,hoverinfo:o0.hoverinfo,hovertemplate:a6t({},{keys:d6e.eventDataKeys}),textfont:UE.textfont,insidetextfont:UE.insidetextfont,outsidetextfont:UD.outsidetextfont,textposition:UD.textposition,sort:UE.sort,root:o0.root,domain:l6t({name:"icicle",trace:!0,editType:"calc"})}});var jW=ye((Fdr,p6e)=>{"use strict";p6e.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var _6e=ye((qdr,y6e)=>{"use strict";var g6e=Mr(),f6t=GW(),h6t=va(),d6t=Ju().defaults,v6t=r0().handleText,p6t=Qb().TEXTPAD,g6t=S2().handleMarkerDefaults,m6e=Mu(),m6t=m6e.hasColorscale,y6t=m6e.handleDefaults;y6e.exports=function(t,r,n,i){function a(d,v){return g6e.coerce(t,r,f6t,d,v)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),a("tiling.orientation"),a("tiling.flip"),a("tiling.pad");var u=a("text");a("texttemplate"),r.texttemplate||a("textinfo",g6e.isArrayOrTypedArray(u)?"text+label":"label"),a("hovertext"),a("hovertemplate");var c=a("pathbar.visible"),f="auto";v6t(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition"),g6t(t,r,i,a);var h=r._hasColorscale=m6t(t,"marker","colors")||(t.marker||{}).coloraxis;h&&y6t(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",h?1:.7),r._hovered={marker:{line:{width:2,color:h6t.contrast(i.paper_bgcolor)}}},c&&(a("pathbar.thickness",r.pathbar.textfont.size+2*p6t),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),d6t(r,i,a),r._length=null}});var b6e=ye((Odr,x6e)=>{"use strict";var _6t=Mr(),x6t=jW();x6e.exports=function(t,r){function n(i,a){return _6t.coerce(t,r,x6t,i,a)}n("iciclecolorway",r.colorway),n("extendiciclecolors")}});var ZW=ye(WW=>{"use strict";var w6e=EE();WW.calc=function(e,t){return w6e.calc(e,t)};WW.crossTraceCalc=function(e){return w6e._runCrossTraceCalc("icicle",e)}});var A6e=ye((Ndr,T6e)=>{"use strict";var b6t=SE(),w6t=DW();T6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation==="h",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=b6t.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&w6t(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var XW=ye((Udr,C6e)=>{"use strict";var S6e=xa(),M6e=va(),E6e=Mr(),T6t=_v().resizeText,A6t=DD();function S6t(e){var t=e._fullLayout._iciclelayer.selectAll(".trace");T6t(e,t,"icicle"),t.each(function(r){var n=S6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){S6e.select(this).call(k6e,o,a,e)})})}function k6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=E6e.castOption(r,o,"marker.line.color")||M6e.defaultLine,l=E6e.castOption(r,o,"marker.line.width")||0;e.call(A6t,t,r,n).style("stroke-width",l).call(M6e.stroke,s).style("opacity",a?r.leaf.opacity:null)}C6e.exports={style:S6t,styleOne:k6e}});var D6e=ye((Vdr,R6e)=>{"use strict";var L6e=xa(),VD=Mr(),P6e=ao(),M6t=Pl(),E6t=A6e(),I6e=XW().styleOne,YW=z2(),z5=Ky(),k6t=OE(),C6t=FD().formatSliceLabel,KW=!1;R6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=E6t(n,[o,s],{flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,orientation:_.tiling.orientation,pad:{inner:_.tiling.pad},maxDepth:_._maxDepth}),T=P.descendants(),F=1/0,q=-1/0;T.forEach(function(N){var W=N.depth;W>=_._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(F=Math.min(F,W),q=Math.max(q,W))}),i=i.data(T,z5.getPtId),_._maxVisibleLayers=isFinite(q)?q-F+1:0,i.enter().append("g").classed("slice",!0),v(i,KW,E,[o,s],c),i.order();var V=null;if(d&&p){var H=z5.getPtId(p);i.each(function(N){V===null&&z5.getPtId(N)===H&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var X=function(){return V||{x0:0,x1:o,y0:0,y1:s}},G=i;return d&&(G=G.transition().each("end",function(){var N=L6e.select(this);z5.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),G.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-_.tiling.pad),N._hoverY=u(g?N.y1-_.tiling.pad/2:N.y0+_.tiling.pad/2);var W=L6e.select(this),re=VD.ensureSingle(W,"path","surface",function(ke){ke.style("pointer-events",k?"none":"all")});d?re.transition().attrTween("d",function(ke){var ge=x(ke,KW,X(),[o,s],{orientation:_.tiling.orientation,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1});return function(ie){return c(ge(ie))}}):re.attr("d",c),W.call(k6t,n,t,r,{styleOne:I6e,eventDataKeys:YW.eventDataKeys,transitionTime:YW.CLICK_TRANSITION_TIME,transitionEasing:YW.CLICK_TRANSITION_EASING}).call(z5.setSliceCursor,t,{isTransitioning:t._transitioning}),re.call(I6e,N,_,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text="":N._text=C6t(N,n,_,r,A)||"";var ae=VD.ensureSingle(W,"g","slicetext"),_e=VD.ensureSingle(ae,"text","",function(ke){ke.attr("data-notex",1)}),Me=VD.ensureUniformFontSize(t,z5.determineTextFont(_,N,A.font));_e.text(N._text||" ").classed("slicetext",!0).attr("text-anchor",M?"end":C?"start":"middle").call(P6e.font,Me).call(M6t.convertToTspans,t),N.textBB=P6e.bBox(_e.node()),N.transform=f(N,{fontSize:Me.size}),N.transform.fontSize=Me.size,d?_e.transition().attrTween("transform",function(ke){var ge=b(ke,KW,X(),[o,s]);return function(ie){return h(ge(ie))}}):_e.attr("transform",h(N))}),V}});var F6e=ye((Hdr,z6e)=>{"use strict";var L6t=UW(),P6t=D6e();z6e.exports=function(t,r,n,i){return L6t(t,r,n,i,{type:"icicle",drawDescendants:P6t})}});var O6e=ye((Gdr,q6e)=>{"use strict";q6e.exports={moduleType:"trace",name:"icicle",basePlotModule:h6e(),categories:[],animatable:!0,attributes:GW(),layoutAttributes:jW(),supplyDefaults:_6e(),supplyLayoutDefaults:b6e(),calc:ZW().calc,crossTraceCalc:ZW().crossTraceCalc,plot:F6e(),style:XW().style,colorbar:Kd(),meta:{}}});var N6e=ye((jdr,B6e)=>{"use strict";B6e.exports=O6e()});var V6e=ye(F5=>{"use strict";var U6e=Xu();F5.name="funnelarea";F5.plot=function(e,t,r,n){U6e.plotBasePlot(F5.name,e,t,r,n)};F5.clean=function(e,t,r,n){U6e.cleanBasePlot(F5.name,e,t,r,n)}});var JW=ye((Zdr,H6e)=>{"use strict";var tv=A2(),I6t=vl(),R6t=Ju().attributes,D6t=Wo().hovertemplateAttrs,z6t=Wo().texttemplateAttrs,O2=no().extendFlat;H6e.exports={labels:tv.labels,label0:tv.label0,dlabel:tv.dlabel,values:tv.values,marker:{colors:tv.marker.colors,line:{color:O2({},tv.marker.line.color,{dflt:null}),width:O2({},tv.marker.line.width,{dflt:1}),editType:"calc"},pattern:tv.marker.pattern,editType:"calc"},text:tv.text,hovertext:tv.hovertext,scalegroup:O2({},tv.scalegroup,{}),textinfo:O2({},tv.textinfo,{flags:["label","text","value","percent"]}),texttemplate:z6t({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:O2({},I6t.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:D6t({},{keys:["label","color","value","text","percent"]}),textposition:O2({},tv.textposition,{values:["inside","none"],dflt:"inside"}),textfont:tv.textfont,insidetextfont:tv.insidetextfont,title:{text:tv.title.text,font:tv.title.font,position:O2({},tv.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:R6t({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}});var $W=ye((Xdr,G6e)=>{"use strict";var F6t=uD().hiddenlabels;G6e.exports={hiddenlabels:F6t,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var Z6e=ye((Ydr,W6e)=>{"use strict";var j6e=Mr(),q6t=JW(),O6t=Ju().defaults,B6t=r0().handleText,N6t=S2().handleLabelsAndValues,U6t=S2().handleMarkerDefaults;W6e.exports=function(t,r,n,i){function a(x,b){return j6e.coerce(t,r,q6t,x,b)}var o=a("labels"),s=a("values"),l=N6t(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a("label0"),a("dlabel")),!u){r.visible=!1;return}r._length=u,U6t(t,r,i,a),a("scalegroup");var c=a("text"),f=a("texttemplate"),h;if(f||(h=a("textinfo",Array.isArray(c)?"text+percent":"percent")),a("hovertext"),a("hovertemplate"),f||h&&h!=="none"){var d=a("textposition");B6t(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h==="none"&&a("textposition","none");O6t(r,i,a);var v=a("title.text");v&&(a("title.position"),j6e.coerceFont(a,"title.font",i.font)),a("aspectratio"),a("baseratio")}});var Y6e=ye((Kdr,X6e)=>{"use strict";var V6t=Mr(),H6t=$W();X6e.exports=function(t,r){function n(i,a){return V6t.coerce(t,r,H6t,i,a)}n("hiddenlabels"),n("funnelareacolorway",r.colorway),n("extendfunnelareacolors")}});var QW=ye((Jdr,J6e)=>{"use strict";var K6e=y5();function G6t(e,t){return K6e.calc(e,t)}function j6t(e){K6e.crossTraceCalc(e,{type:"funnelarea"})}J6e.exports={calc:G6t,crossTraceCalc:j6t}});var rLe=ye(($dr,tLe)=>{"use strict";var B2=xa(),eZ=ao(),J_=Mr(),W6t=J_.strScale,$6e=J_.strTranslate,Q6e=Pl(),Z6t=i2(),X6t=Z6t.toMoveInsideBar,eLe=_v(),Y6t=eLe.recordMinTextSize,K6t=eLe.clearMinTextSize,J6t=u_(),q5=dD(),$6t=q5.attachFxHandlers,Q6t=q5.determineInsideTextFont,eLt=q5.layoutAreas,tLt=q5.prerenderTitles,rLt=q5.positionTitleOutside,iLt=q5.formatSliceLabel;tLe.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;K6t("funnelarea",i),tLt(r,t),eLt(r,i._size),J_.makeTraceGroups(i._funnelarealayer,r,"trace").each(function(a){var o=B2.select(this),s=a[0],l=s.trace;aLt(a),o.each(function(){var u=B2.select(this).selectAll("g.slice").data(a);u.enter().append("g").classed("slice",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){B2.select(this).selectAll("path,g").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,x=B2.select(this),b=x.selectAll("path.surface").data([f]);b.enter().append("path").classed("surface",!0).style({"pointer-events":n?"none":"all"}),x.call($6t,t,a);var p="M"+(d+f.TR[0])+","+(v+f.TR[1])+tZ(f.TR,f.BR)+tZ(f.BR,f.BL)+tZ(f.BL,f.TL)+"Z";b.attr("d",p),iLt(t,f,s);var E=J6t.castOption(l.textposition,f.pts),k=x.selectAll("g.slicetext").data(f.text&&E!=="none"?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each(function(){var A=J_.ensureSingle(B2.select(this),"text","",function(F){F.attr("data-notex",1)}),L=J_.ensureUniformFontSize(t,Q6t(l,f,i.font));A.text(f.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(eZ.font,L).call(Q6e.convertToTspans,t);var _=eZ.bBox(A.node()),C,M,g,P=Math.min(f.BL[1],f.BR[1])+v,T=Math.max(f.TL[1],f.TR[1])+v;M=Math.max(f.TL[0],f.BL[0])+d,g=Math.min(f.TR[0],f.BR[0])+d,C=X6t(M,g,P,T,_,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),C.fontSize=L.size,Y6t(l.type,C,i),a[h].transform=C,J_.setTransormAndDisplay(A,C)})});var c=B2.select(this).selectAll("g.titletext").data(l.title.text?[0]:[]);c.enter().append("g").classed("titletext",!0),c.exit().remove(),c.each(function(){var f=J_.ensureSingle(B2.select(this),"text","",function(v){v.attr("data-notex",1)}),h=l.title.text;l._meta&&(h=J_.templateString(h,l._meta)),f.text(h).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(eZ.font,l.title.font).call(Q6e.convertToTspans,t);var d=rLt(s,i._size);f.attr("transform",$6e(d.x,d.y)+W6t(Math.min(1,d.scale))+$6e(d.tx,d.ty))})})})};function tZ(e,t){var r=t[0]-e[0],n=t[1]-e[1];return"l"+r+","+n}function nLt(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function aLt(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var q=Math.sqrt(u);return{x:q,y:-q}}function f(){var q=c();return[q.x,q.y]}var h,d=[];d.push(f());var v,x;for(v=e.length-1;v>-1;v--)if(x=e[v],!x.hidden){var b=x.v/l;u+=b,d.push(f())}var p=1/0,E=-1/0;for(v=0;v-1;v--)if(x=e[v],!x.hidden){P+=1;var T=d[P][0],F=d[P][1];x.TL=[-T,F],x.TR=[T,F],x.BL=M,x.BR=g,x.pxmid=nLt(x.TR,x.BR),M=x.TL,g=x.TR}}});var aLe=ye((Qdr,nLe)=>{"use strict";var iLe=xa(),oLt=z3(),sLt=_v().resizeText;nLe.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(".trace");sLt(t,r,"funnelarea"),r.each(function(n){var i=n[0],a=i.trace,o=iLe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){iLe.select(this).call(oLt,s,a,t)})})}});var sLe=ye((evr,oLe)=>{"use strict";oLe.exports={moduleType:"trace",name:"funnelarea",basePlotModule:V6e(),categories:["pie-like","funnelarea","showLegend"],attributes:JW(),layoutAttributes:$W(),supplyDefaults:Z6e(),supplyLayoutDefaults:Y6e(),calc:QW().calc,crossTraceCalc:QW().crossTraceCalc,plot:rLe(),style:aLe(),styleOne:z3(),meta:{}}});var uLe=ye((tvr,lLe)=>{"use strict";lLe.exports=sLe()});var Rd=ye((rvr,cLe)=>{(function(){var e={1964:function(i,a,o){i.exports={alpha_shape:o(3502),convex_hull:o(7352),delaunay_triangulate:o(7642),gl_cone3d:o(6405),gl_error3d:o(9165),gl_line3d:o(5714),gl_mesh3d:o(7201),gl_plot3d:o(4100),gl_scatter3d:o(8418),gl_streamtube3d:o(7815),gl_surface3d:o(9499),ndarray:o(9618),ndarray_linear_interpolate:o(4317)}},4793:function(i,a,o){"use strict";var s;function l(Le,xe){if(!(Le instanceof xe))throw new TypeError("Cannot call a class as a function")}function u(Le,xe){for(var Se=0;SeM)throw new RangeError('The value "'+Le+'" is invalid for option "size"');var xe=new Uint8Array(Le);return Object.setPrototypeOf(xe,T.prototype),xe}function T(Le,xe,Se){if(typeof Le=="number"){if(typeof xe=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return H(Le)}return F(Le,xe,Se)}T.poolSize=8192;function F(Le,xe,Se){if(typeof Le=="string")return X(Le,xe);if(ArrayBuffer.isView(Le))return N(Le);if(Le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le));if(Ne(Le,ArrayBuffer)||Le&&Ne(Le.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(Ne(Le,SharedArrayBuffer)||Le&&Ne(Le.buffer,SharedArrayBuffer)))return W(Le,xe,Se);if(typeof Le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var lt=Le.valueOf&&Le.valueOf();if(lt!=null&<!==Le)return T.from(lt,xe,Se);var Gt=re(Le);if(Gt)return Gt;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof Le[Symbol.toPrimitive]=="function")return T.from(Le[Symbol.toPrimitive]("string"),xe,Se);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le))}T.from=function(Le,xe,Se){return F(Le,xe,Se)},Object.setPrototypeOf(T.prototype,Uint8Array.prototype),Object.setPrototypeOf(T,Uint8Array);function q(Le){if(typeof Le!="number")throw new TypeError('"size" argument must be of type number');if(Le<0)throw new RangeError('The value "'+Le+'" is invalid for option "size"')}function V(Le,xe,Se){return q(Le),Le<=0?P(Le):xe!==void 0?typeof Se=="string"?P(Le).fill(xe,Se):P(Le).fill(xe):P(Le)}T.alloc=function(Le,xe,Se){return V(Le,xe,Se)};function H(Le){return q(Le),P(Le<0?0:ae(Le)|0)}T.allocUnsafe=function(Le){return H(Le)},T.allocUnsafeSlow=function(Le){return H(Le)};function X(Le,xe){if((typeof xe!="string"||xe==="")&&(xe="utf8"),!T.isEncoding(xe))throw new TypeError("Unknown encoding: "+xe);var Se=Me(Le,xe)|0,lt=P(Se),Gt=lt.write(Le,xe);return Gt!==Se&&(lt=lt.slice(0,Gt)),lt}function G(Le){for(var xe=Le.length<0?0:ae(Le.length)|0,Se=P(xe),lt=0;lt=M)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+M.toString(16)+" bytes");return Le|0}function _e(Le){return+Le!=Le&&(Le=0),T.alloc(+Le)}T.isBuffer=function(xe){return xe!=null&&xe._isBuffer===!0&&xe!==T.prototype},T.compare=function(xe,Se){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),Ne(Se,Uint8Array)&&(Se=T.from(Se,Se.offset,Se.byteLength)),!T.isBuffer(xe)||!T.isBuffer(Se))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(xe===Se)return 0;for(var lt=xe.length,Gt=Se.length,Vt=0,ar=Math.min(lt,Gt);VtGt.length?(T.isBuffer(ar)||(ar=T.from(ar)),ar.copy(Gt,Vt)):Uint8Array.prototype.set.call(Gt,ar,Vt);else if(T.isBuffer(ar))ar.copy(Gt,Vt);else throw new TypeError('"list" argument must be an Array of Buffers');Vt+=ar.length}return Gt};function Me(Le,xe){if(T.isBuffer(Le))return Le.length;if(ArrayBuffer.isView(Le)||Ne(Le,ArrayBuffer))return Le.byteLength;if(typeof Le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+A(Le));var Se=Le.length,lt=arguments.length>2&&arguments[2]===!0;if(!lt&&Se===0)return 0;for(var Gt=!1;;)switch(xe){case"ascii":case"latin1":case"binary":return Se;case"utf8":case"utf-8":return _r(Le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Se*2;case"hex":return Se>>>1;case"base64":return Nr(Le).length;default:if(Gt)return lt?-1:_r(Le).length;xe=(""+xe).toLowerCase(),Gt=!0}}T.byteLength=Me;function ke(Le,xe,Se){var lt=!1;if((xe===void 0||xe<0)&&(xe=0),xe>this.length||((Se===void 0||Se>this.length)&&(Se=this.length),Se<=0)||(Se>>>=0,xe>>>=0,Se<=xe))return"";for(Le||(Le="utf8");;)switch(Le){case"hex":return rt(this,xe,Se);case"utf8":case"utf-8":return ce(this,xe,Se);case"ascii":return ct(this,xe,Se);case"latin1":case"binary":return qt(this,xe,Se);case"base64":return Re(this,xe,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ot(this,xe,Se);default:if(lt)throw new TypeError("Unknown encoding: "+Le);Le=(Le+"").toLowerCase(),lt=!0}}T.prototype._isBuffer=!0;function ge(Le,xe,Se){var lt=Le[xe];Le[xe]=Le[Se],Le[Se]=lt}T.prototype.swap16=function(){var xe=this.length;if(xe%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Se=0;SeSe&&(xe+=" ... "),""},C&&(T.prototype[C]=T.prototype.inspect),T.prototype.compare=function(xe,Se,lt,Gt,Vt){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),!T.isBuffer(xe))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+A(xe));if(Se===void 0&&(Se=0),lt===void 0&&(lt=xe?xe.length:0),Gt===void 0&&(Gt=0),Vt===void 0&&(Vt=this.length),Se<0||lt>xe.length||Gt<0||Vt>this.length)throw new RangeError("out of range index");if(Gt>=Vt&&Se>=lt)return 0;if(Gt>=Vt)return-1;if(Se>=lt)return 1;if(Se>>>=0,lt>>>=0,Gt>>>=0,Vt>>>=0,this===xe)return 0;for(var ar=Vt-Gt,Qr=lt-Se,ai=Math.min(ar,Qr),jr=this.slice(Gt,Vt),ri=xe.slice(Se,lt),bi=0;bi2147483647?Se=2147483647:Se<-2147483648&&(Se=-2147483648),Se=+Se,Ye(Se)&&(Se=Gt?0:Le.length-1),Se<0&&(Se=Le.length+Se),Se>=Le.length){if(Gt)return-1;Se=Le.length-1}else if(Se<0)if(Gt)Se=0;else return-1;if(typeof xe=="string"&&(xe=T.from(xe,lt)),T.isBuffer(xe))return xe.length===0?-1:Te(Le,xe,Se,lt,Gt);if(typeof xe=="number")return xe=xe&255,typeof Uint8Array.prototype.indexOf=="function"?Gt?Uint8Array.prototype.indexOf.call(Le,xe,Se):Uint8Array.prototype.lastIndexOf.call(Le,xe,Se):Te(Le,[xe],Se,lt,Gt);throw new TypeError("val must be string, number or Buffer")}function Te(Le,xe,Se,lt,Gt){var Vt=1,ar=Le.length,Qr=xe.length;if(lt!==void 0&&(lt=String(lt).toLowerCase(),lt==="ucs2"||lt==="ucs-2"||lt==="utf16le"||lt==="utf-16le")){if(Le.length<2||xe.length<2)return-1;Vt=2,ar/=2,Qr/=2,Se/=2}function ai(Wi,Ni){return Vt===1?Wi[Ni]:Wi.readUInt16BE(Ni*Vt)}var jr;if(Gt){var ri=-1;for(jr=Se;jrar&&(Se=ar-Qr),jr=Se;jr>=0;jr--){for(var bi=!0,nn=0;nnGt&&(lt=Gt)):lt=Gt;var Vt=xe.length;lt>Vt/2&&(lt=Vt/2);var ar;for(ar=0;ar>>0,isFinite(lt)?(lt=lt>>>0,Gt===void 0&&(Gt="utf8")):(Gt=lt,lt=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Vt=this.length-Se;if((lt===void 0||lt>Vt)&&(lt=Vt),xe.length>0&&(lt<0||Se<0)||Se>this.length)throw new RangeError("Attempt to write outside buffer bounds");Gt||(Gt="utf8");for(var ar=!1;;)switch(Gt){case"hex":return Ee(this,xe,Se,lt);case"utf8":case"utf-8":return Ae(this,xe,Se,lt);case"ascii":case"latin1":case"binary":return ze(this,xe,Se,lt);case"base64":return Ce(this,xe,Se,lt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return me(this,xe,Se,lt);default:if(ar)throw new TypeError("Unknown encoding: "+Gt);Gt=(""+Gt).toLowerCase(),ar=!0}},T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Re(Le,xe,Se){return xe===0&&Se===Le.length?L.fromByteArray(Le):L.fromByteArray(Le.slice(xe,Se))}function ce(Le,xe,Se){Se=Math.min(Le.length,Se);for(var lt=[],Gt=xe;Gt239?4:Vt>223?3:Vt>191?2:1;if(Gt+Qr<=Se){var ai=void 0,jr=void 0,ri=void 0,bi=void 0;switch(Qr){case 1:Vt<128&&(ar=Vt);break;case 2:ai=Le[Gt+1],(ai&192)===128&&(bi=(Vt&31)<<6|ai&63,bi>127&&(ar=bi));break;case 3:ai=Le[Gt+1],jr=Le[Gt+2],(ai&192)===128&&(jr&192)===128&&(bi=(Vt&15)<<12|(ai&63)<<6|jr&63,bi>2047&&(bi<55296||bi>57343)&&(ar=bi));break;case 4:ai=Le[Gt+1],jr=Le[Gt+2],ri=Le[Gt+3],(ai&192)===128&&(jr&192)===128&&(ri&192)===128&&(bi=(Vt&15)<<18|(ai&63)<<12|(jr&63)<<6|ri&63,bi>65535&&bi<1114112&&(ar=bi))}}ar===null?(ar=65533,Qr=1):ar>65535&&(ar-=65536,lt.push(ar>>>10&1023|55296),ar=56320|ar&1023),lt.push(ar),Gt+=Qr}return nt(lt)}var Ge=4096;function nt(Le){var xe=Le.length;if(xe<=Ge)return String.fromCharCode.apply(String,Le);for(var Se="",lt=0;ltlt)&&(Se=lt);for(var Gt="",Vt=xe;Vtlt&&(xe=lt),Se<0?(Se+=lt,Se<0&&(Se=0)):Se>lt&&(Se=lt),SeSe)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe+--Se],Vt=1;Se>0&&(Vt*=256);)Gt+=this[xe+--Se]*Vt;return Gt},T.prototype.readUint8=T.prototype.readUInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]},T.prototype.readUint16LE=T.prototype.readUInt16LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]|this[xe+1]<<8},T.prototype.readUint16BE=T.prototype.readUInt16BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]<<8|this[xe+1]},T.prototype.readUint32LE=T.prototype.readUInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),(this[xe]|this[xe+1]<<8|this[xe+2]<<16)+this[xe+3]*16777216},T.prototype.readUint32BE=T.prototype.readUInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]*16777216+(this[xe+1]<<16|this[xe+2]<<8|this[xe+3])},T.prototype.readBigUInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,24),Vt=this[++xe]+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+lt*Math.pow(2,24);return BigInt(Gt)+(BigInt(Vt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe],Vt=this[++xe]*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+lt;return(BigInt(Gt)<>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar=Vt&&(Gt-=Math.pow(2,8*Se)),Gt},T.prototype.readIntBE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=Se,Vt=1,ar=this[xe+--Gt];Gt>0&&(Vt*=256);)ar+=this[xe+--Gt]*Vt;return Vt*=128,ar>=Vt&&(ar-=Math.pow(2,8*Se)),ar},T.prototype.readInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]&128?(255-this[xe]+1)*-1:this[xe]},T.prototype.readInt16LE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe]|this[xe+1]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt16BE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe+1]|this[xe]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]|this[xe+1]<<8|this[xe+2]<<16|this[xe+3]<<24},T.prototype.readInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]<<24|this[xe+1]<<16|this[xe+2]<<8|this[xe+3]},T.prototype.readBigInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=this[xe+4]+this[xe+5]*Math.pow(2,8)+this[xe+6]*Math.pow(2,16)+(lt<<24);return(BigInt(Gt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=(Se<<24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe];return(BigInt(Gt)<>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!0,23,4)},T.prototype.readFloatBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!1,23,4)},T.prototype.readDoubleLE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!0,52,8)},T.prototype.readDoubleBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!1,52,8)};function kt(Le,xe,Se,lt,Gt,Vt){if(!T.isBuffer(Le))throw new TypeError('"buffer" argument must be a Buffer instance');if(xe>Gt||xeLe.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=1,Qr=0;for(this[Se]=xe&255;++Qr>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=lt-1,Qr=1;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)this[Se+ar]=xe/Qr&255;return Se+lt},T.prototype.writeUint8=T.prototype.writeUInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,255,0),this[Se]=xe&255,Se+1},T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se+3]=xe>>>24,this[Se+2]=xe>>>16,this[Se+1]=xe>>>8,this[Se]=xe&255,Se+4},T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4};function Ct(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,Se}function Yt(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se+7]=Vt,Vt=Vt>>8,Le[Se+6]=Vt,Vt=Vt>>8,Le[Se+5]=Vt,Vt=Vt>>8,Le[Se+4]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se+3]=ar,ar=ar>>8,Le[Se+2]=ar,ar=ar>>8,Le[Se+1]=ar,ar=ar>>8,Le[Se]=ar,Se+8}T.prototype.writeBigUInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeBigUInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=0,Qr=1,ai=0;for(this[Se]=xe&255;++ar>0)-ai&255;return Se+lt},T.prototype.writeIntBE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=lt-1,Qr=1,ai=0;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)xe<0&&ai===0&&this[Se+ar+1]!==0&&(ai=1),this[Se+ar]=(xe/Qr>>0)-ai&255;return Se+lt},T.prototype.writeInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,127,-128),xe<0&&(xe=255+xe+1),this[Se]=xe&255,Se+1},T.prototype.writeInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),this[Se]=xe&255,this[Se+1]=xe>>>8,this[Se+2]=xe>>>16,this[Se+3]=xe>>>24,Se+4},T.prototype.writeInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),xe<0&&(xe=4294967295+xe+1),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4},T.prototype.writeBigInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),T.prototype.writeBigInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function xr(Le,xe,Se,lt,Gt,Vt){if(Se+lt>Le.length)throw new RangeError("Index out of range");if(Se<0)throw new RangeError("Index out of range")}function er(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,4,34028234663852886e22,-34028234663852886e22),_.write(Le,xe,Se,lt,23,4),Se+4}T.prototype.writeFloatLE=function(xe,Se,lt){return er(this,xe,Se,!0,lt)},T.prototype.writeFloatBE=function(xe,Se,lt){return er(this,xe,Se,!1,lt)};function Ke(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,8,17976931348623157e292,-17976931348623157e292),_.write(Le,xe,Se,lt,52,8),Se+8}T.prototype.writeDoubleLE=function(xe,Se,lt){return Ke(this,xe,Se,!0,lt)},T.prototype.writeDoubleBE=function(xe,Se,lt){return Ke(this,xe,Se,!1,lt)},T.prototype.copy=function(xe,Se,lt,Gt){if(!T.isBuffer(xe))throw new TypeError("argument should be a Buffer");if(lt||(lt=0),!Gt&&Gt!==0&&(Gt=this.length),Se>=xe.length&&(Se=xe.length),Se||(Se=0),Gt>0&&Gt=this.length)throw new RangeError("Index out of range");if(Gt<0)throw new RangeError("sourceEnd out of bounds");Gt>this.length&&(Gt=this.length),xe.length-Se>>0,lt=lt===void 0?this.length:lt>>>0,xe||(xe=0);var ar;if(typeof xe=="number")for(ar=Se;arMath.pow(2,32)?Gt=Lt(String(Se)):typeof Se=="bigint"&&(Gt=String(Se),(Se>Math.pow(BigInt(2),BigInt(32))||Se<-Math.pow(BigInt(2),BigInt(32)))&&(Gt=Lt(Gt)),Gt+="n"),lt+=" It must be ".concat(xe,". Received ").concat(Gt),lt},RangeError);function Lt(Le){for(var xe="",Se=Le.length,lt=Le[0]==="-"?1:0;Se>=lt+4;Se-=3)xe="_".concat(Le.slice(Se-3,Se)).concat(xe);return"".concat(Le.slice(0,Se)).concat(xe)}function St(Le,xe,Se){dt(xe,"offset"),(Le[xe]===void 0||Le[xe+Se]===void 0)&&Ht(xe,Le.length-(Se+1))}function Et(Le,xe,Se,lt,Gt,Vt){if(Le>Se||Le3?xe===0||xe===BigInt(0)?Qr=">= 0".concat(ar," and < 2").concat(ar," ** ").concat((Vt+1)*8).concat(ar):Qr=">= -(2".concat(ar," ** ").concat((Vt+1)*8-1).concat(ar,") and < 2 ** ")+"".concat((Vt+1)*8-1).concat(ar):Qr=">= ".concat(xe).concat(ar," and <= ").concat(Se).concat(ar),new xt.ERR_OUT_OF_RANGE("value",Qr,Le)}St(lt,Gt,Vt)}function dt(Le,xe){if(typeof Le!="number")throw new xt.ERR_INVALID_ARG_TYPE(xe,"number",Le)}function Ht(Le,xe,Se){throw Math.floor(Le)!==Le?(dt(Le,Se),new xt.ERR_OUT_OF_RANGE(Se||"offset","an integer",Le)):xe<0?new xt.ERR_BUFFER_OUT_OF_BOUNDS:new xt.ERR_OUT_OF_RANGE(Se||"offset",">= ".concat(Se?1:0," and <= ").concat(xe),Le)}var $t=/[^+/0-9A-Za-z-_]/g;function fr(Le){if(Le=Le.split("=")[0],Le=Le.trim().replace($t,""),Le.length<2)return"";for(;Le.length%4!==0;)Le=Le+"=";return Le}function _r(Le,xe){xe=xe||1/0;for(var Se,lt=Le.length,Gt=null,Vt=[],ar=0;ar55295&&Se<57344){if(!Gt){if(Se>56319){(xe-=3)>-1&&Vt.push(239,191,189);continue}else if(ar+1===lt){(xe-=3)>-1&&Vt.push(239,191,189);continue}Gt=Se;continue}if(Se<56320){(xe-=3)>-1&&Vt.push(239,191,189),Gt=Se;continue}Se=(Gt-55296<<10|Se-56320)+65536}else Gt&&(xe-=3)>-1&&Vt.push(239,191,189);if(Gt=null,Se<128){if((xe-=1)<0)break;Vt.push(Se)}else if(Se<2048){if((xe-=2)<0)break;Vt.push(Se>>6|192,Se&63|128)}else if(Se<65536){if((xe-=3)<0)break;Vt.push(Se>>12|224,Se>>6&63|128,Se&63|128)}else if(Se<1114112){if((xe-=4)<0)break;Vt.push(Se>>18|240,Se>>12&63|128,Se>>6&63|128,Se&63|128)}else throw new Error("Invalid code point")}return Vt}function Br(Le){for(var xe=[],Se=0;Se>8,Gt=Se%256,Vt.push(Gt),Vt.push(lt);return Vt}function Nr(Le){return L.toByteArray(fr(Le))}function ut(Le,xe,Se,lt){var Gt;for(Gt=0;Gt=xe.length||Gt>=Le.length);++Gt)xe[Gt+Se]=Le[Gt];return Gt}function Ne(Le,xe){return Le instanceof xe||Le!=null&&Le.constructor!=null&&Le.constructor.name!=null&&Le.constructor.name===xe.name}function Ye(Le){return Le!==Le}var Ve=function(){for(var Le="0123456789abcdef",xe=new Array(256),Se=0;Se<16;++Se)for(var lt=Se*16,Gt=0;Gt<16;++Gt)xe[lt+Gt]=Le[Se]+Le[Gt];return xe}();function Xe(Le){return typeof BigInt=="undefined"?ht:Le}function ht(){throw new Error("BigInt not supported")}},9216:function(i){"use strict";i.exports=l,i.exports.isMobile=l,i.exports.default=l;var a=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,o=/CrOS/,s=/android|ipad|playbook|silk/i;function l(u){u||(u={});var c=u.ua;if(!c&&typeof navigator!="undefined"&&(c=navigator.userAgent),c&&c.headers&&typeof c.headers["user-agent"]=="string"&&(c=c.headers["user-agent"]),typeof c!="string")return!1;var f=a.test(c)&&!o.test(c)||!!u.tablet&&s.test(c);return!f&&u.tablet&&u.featureDetect&&navigator&&navigator.maxTouchPoints>1&&c.indexOf("Macintosh")!==-1&&c.indexOf("Safari")!==-1&&(f=!0),f}},6296:function(i,a,o){"use strict";i.exports=h;var s=o(7261),l=o(9977),u=o(1811);function c(d,v){this._controllerNames=Object.keys(d),this._controllerList=this._controllerNames.map(function(x){return d[x]}),this._mode=v,this._active=d[v],this._active||(this._mode="turntable",this._active=d.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var f=c.prototype;f.flush=function(d){for(var v=this._controllerList,x=0;x0)throw new Error("Invalid string. Length must be a multiple of 4");var L=k.indexOf("=");L===-1&&(L=A);var _=L===A?0:4-L%4;return[L,_]}function d(k){var A=h(k),L=A[0],_=A[1];return(L+_)*3/4-_}function v(k,A,L){return(A+L)*3/4-L}function x(k){var A,L=h(k),_=L[0],C=L[1],M=new l(v(k,_,C)),g=0,P=C>0?_-4:_,T;for(T=0;T>16&255,M[g++]=A>>8&255,M[g++]=A&255;return C===2&&(A=s[k.charCodeAt(T)]<<2|s[k.charCodeAt(T+1)]>>4,M[g++]=A&255),C===1&&(A=s[k.charCodeAt(T)]<<10|s[k.charCodeAt(T+1)]<<4|s[k.charCodeAt(T+2)]>>2,M[g++]=A>>8&255,M[g++]=A&255),M}function b(k){return o[k>>18&63]+o[k>>12&63]+o[k>>6&63]+o[k&63]}function p(k,A,L){for(var _,C=[],M=A;MP?P:g+M));return _===1?(A=k[L-1],C.push(o[A>>2]+o[A<<4&63]+"==")):_===2&&(A=(k[L-2]<<8)+k[L-1],C.push(o[A>>10]+o[A>>4&63]+o[A<<2&63]+"=")),C.join("")}},3865:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).add(c[0].mul(u[1])),u[1].mul(c[1]))}},1318:function(i){"use strict";i.exports=a;function a(o,s){return o[0].mul(s[1]).cmp(s[0].mul(o[1]))}},8697:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]),u[1].mul(c[0]))}},7842:function(i,a,o){"use strict";var s=o(6330),l=o(1533),u=o(2651),c=o(6768),f=o(869),h=o(8697);i.exports=d;function d(v,x){if(s(v))return x?h(v,d(x)):[v[0].clone(),v[1].clone()];var b=0,p,E;if(l(v))p=v.clone();else if(typeof v=="string")p=c(v);else{if(v===0)return[u(0),u(1)];if(v===Math.floor(v))p=u(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),b-=256;p=u(v)}}if(s(x))p.mul(x[1]),E=x[0].clone();else if(l(x))E=x.clone();else if(typeof x=="string")E=c(x);else if(!x)E=u(1);else if(x===Math.floor(x))E=u(x);else{for(;x!==Math.floor(x);)x=x*Math.pow(2,256),b+=256;E=u(x)}return b>0?p=p.ushln(b):b<0&&(E=E.ushln(-b)),f(p,E)}},6330:function(i,a,o){"use strict";var s=o(1533);i.exports=l;function l(u){return Array.isArray(u)&&u.length===2&&s(u[0])&&s(u[1])}},5716:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u.cmp(new s(0))}},1369:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){var c=u.length,f=u.words,h=0;if(c===1)h=f[0];else if(c===2)h=f[0]+f[1]*67108864;else for(var d=0;d20?52:h+32}},1533:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u&&typeof u=="object"&&!!u.words}},2651:function(i,a,o){"use strict";var s=o(6859),l=o(2361);i.exports=u;function u(c){var f=l.exponent(c);return f<52?new s(c):new s(c*Math.pow(2,52-f)).ushln(f-52)}},869:function(i,a,o){"use strict";var s=o(2651),l=o(5716);i.exports=u;function u(c,f){var h=l(c),d=l(f);if(h===0)return[s(0),s(1)];if(d===0)return[s(0),s(0)];d<0&&(c=c.neg(),f=f.neg());var v=c.gcd(f);return v.cmpn(1)?[c.div(v),f.div(v)]:[c,f]}},6768:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return new s(u)}},6504:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[0]),u[1].mul(c[1]))}},7721:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){return s(u[0])*s(u[1])}},5572:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).sub(u[1].mul(c[0])),u[1].mul(c[1]))}},946:function(i,a,o){"use strict";var s=o(1369),l=o(4025);i.exports=u;function u(c){var f=c[0],h=c[1];if(f.cmpn(0)===0)return 0;var d=f.abs().divmod(h.abs()),v=d.div,x=s(v),b=d.mod,p=f.negative!==h.negative?-1:1;if(b.cmpn(0)===0)return p*x;if(x){var E=l(x)+4,k=s(b.ushln(E).divRound(h));return p*(x+k*Math.pow(2,-E))}else{var A=h.bitLength()-b.bitLength()+53,k=s(b.ushln(A).divRound(h));return A<1023?p*k*Math.pow(2,-A):(k*=Math.pow(2,-1023),p*k*Math.pow(2,1023-A))}}},2478:function(i){"use strict";function a(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>=0?(b=p,x=p-1):v=p+1}return b}function o(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>0?(b=p,x=p-1):v=p+1}return b}function s(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<0?(b=p,v=p+1):x=p-1}return b}function l(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<=0?(b=p,v=p+1):x=p-1}return b}function u(f,h,d,v,x){for(;v<=x;){var b=v+x>>>1,p=f[b],E=d!==void 0?d(p,h):p-h;if(E===0)return b;E<=0?v=b+1:x=b-1}return-1}function c(f,h,d,v,x,b){return typeof d=="function"?b(f,h,d,v===void 0?0:v|0,x===void 0?f.length-1:x|0):b(f,h,void 0,d===void 0?0:d|0,v===void 0?f.length-1:v|0)}i.exports={ge:function(f,h,d,v,x){return c(f,h,d,v,x,a)},gt:function(f,h,d,v,x){return c(f,h,d,v,x,o)},lt:function(f,h,d,v,x){return c(f,h,d,v,x,s)},le:function(f,h,d,v,x){return c(f,h,d,v,x,l)},eq:function(f,h,d,v,x){return c(f,h,d,v,x,u)}}},8828:function(i,a){"use strict";"use restrict";var o=32;a.INT_BITS=o,a.INT_MAX=2147483647,a.INT_MIN=-1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},6859:function(i,a,o){i=o.nmd(i),function(s,l){"use strict";function u(G,N){if(!G)throw new Error(N||"Assertion failed")}function c(G,N){G.super_=N;var W=function(){};W.prototype=N.prototype,G.prototype=new W,G.prototype.constructor=G}function f(G,N,W){if(f.isBN(G))return G;this.negative=0,this.words=null,this.length=0,this.red=null,G!==null&&((N==="le"||N==="be")&&(W=N,N=10),this._init(G||0,N||10,W||"be"))}typeof s=="object"?s.exports=f:l.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window!="undefined"&&typeof window.Buffer!="undefined"?h=window.Buffer:h=o(7790).Buffer}catch(G){}f.isBN=function(N){return N instanceof f?!0:N!==null&&typeof N=="object"&&N.constructor.wordSize===f.wordSize&&Array.isArray(N.words)},f.max=function(N,W){return N.cmp(W)>0?N:W},f.min=function(N,W){return N.cmp(W)<0?N:W},f.prototype._init=function(N,W,re){if(typeof N=="number")return this._initNumber(N,W,re);if(typeof N=="object")return this._initArray(N,W,re);W==="hex"&&(W=16),u(W===(W|0)&&W>=2&&W<=36),N=N.toString().replace(/\s+/g,"");var ae=0;N[0]==="-"&&(ae++,this.negative=1),ae=0;ae-=3)Me=N[ae]|N[ae-1]<<8|N[ae-2]<<16,this.words[_e]|=Me<>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);else if(re==="le")for(ae=0,_e=0;ae>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);return this.strip()};function d(G,N){var W=G.charCodeAt(N);return W>=65&&W<=70?W-55:W>=97&&W<=102?W-87:W-48&15}function v(G,N,W){var re=d(G,W);return W-1>=N&&(re|=d(G,W-1)<<4),re}f.prototype._parseHex=function(N,W,re){this.length=Math.ceil((N.length-W)/6),this.words=new Array(this.length);for(var ae=0;ae=W;ae-=2)ke=v(N,W,ae)<<_e,this.words[Me]|=ke&67108863,_e>=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8;else{var ge=N.length-W;for(ae=ge%2===0?W+1:W;ae=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8}this.strip()};function x(G,N,W,re){for(var ae=0,_e=Math.min(G.length,W),Me=N;Me<_e;Me++){var ke=G.charCodeAt(Me)-48;ae*=re,ke>=49?ae+=ke-49+10:ke>=17?ae+=ke-17+10:ae+=ke}return ae}f.prototype._parseBase=function(N,W,re){this.words=[0],this.length=1;for(var ae=0,_e=1;_e<=67108863;_e*=W)ae++;ae--,_e=_e/W|0;for(var Me=N.length-re,ke=Me%ae,ge=Math.min(Me,Me-ke)+re,ie=0,Te=re;Te1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(N,W){N=N||10,W=W|0||1;var re;if(N===16||N==="hex"){re="";for(var ae=0,_e=0,Me=0;Me>>24-ae&16777215,_e!==0||Me!==this.length-1?re=b[6-ge.length]+ge+re:re=ge+re,ae+=2,ae>=26&&(ae-=26,Me--)}for(_e!==0&&(re=_e.toString(16)+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}if(N===(N|0)&&N>=2&&N<=36){var ie=p[N],Te=E[N];re="";var Ee=this.clone();for(Ee.negative=0;!Ee.isZero();){var Ae=Ee.modn(Te).toString(N);Ee=Ee.idivn(Te),Ee.isZero()?re=Ae+re:re=b[ie-Ae.length]+Ae+re}for(this.isZero()&&(re="0"+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}u(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var N=this.words[0];return this.length===2?N+=this.words[1]*67108864:this.length===3&&this.words[2]===1?N+=4503599627370496+this.words[1]*67108864:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-N:N},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(N,W){return u(typeof h!="undefined"),this.toArrayLike(h,N,W)},f.prototype.toArray=function(N,W){return this.toArrayLike(Array,N,W)},f.prototype.toArrayLike=function(N,W,re){var ae=this.byteLength(),_e=re||Math.max(1,ae);u(ae<=_e,"byte array longer than desired length"),u(_e>0,"Requested array length <= 0"),this.strip();var Me=W==="le",ke=new N(_e),ge,ie,Te=this.clone();if(Me){for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[ie]=ge;for(;ie<_e;ie++)ke[ie]=0}else{for(ie=0;ie<_e-ae;ie++)ke[ie]=0;for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[_e-ie-1]=ge}return ke},Math.clz32?f.prototype._countBits=function(N){return 32-Math.clz32(N)}:f.prototype._countBits=function(N){var W=N,re=0;return W>=4096&&(re+=13,W>>>=13),W>=64&&(re+=7,W>>>=7),W>=8&&(re+=4,W>>>=4),W>=2&&(re+=2,W>>>=2),re+W},f.prototype._zeroBits=function(N){if(N===0)return 26;var W=N,re=0;return W&8191||(re+=13,W>>>=13),W&127||(re+=7,W>>>=7),W&15||(re+=4,W>>>=4),W&3||(re+=2,W>>>=2),W&1||re++,re},f.prototype.bitLength=function(){var N=this.words[this.length-1],W=this._countBits(N);return(this.length-1)*26+W};function k(G){for(var N=new Array(G.bitLength()),W=0;W>>ae}return N}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var N=0,W=0;WN.length?this.clone().ior(N):N.clone().ior(this)},f.prototype.uor=function(N){return this.length>N.length?this.clone().iuor(N):N.clone().iuor(this)},f.prototype.iuand=function(N){var W;this.length>N.length?W=N:W=this;for(var re=0;reN.length?this.clone().iand(N):N.clone().iand(this)},f.prototype.uand=function(N){return this.length>N.length?this.clone().iuand(N):N.clone().iuand(this)},f.prototype.iuxor=function(N){var W,re;this.length>N.length?(W=this,re=N):(W=N,re=this);for(var ae=0;aeN.length?this.clone().ixor(N):N.clone().ixor(this)},f.prototype.uxor=function(N){return this.length>N.length?this.clone().iuxor(N):N.clone().iuxor(this)},f.prototype.inotn=function(N){u(typeof N=="number"&&N>=0);var W=Math.ceil(N/26)|0,re=N%26;this._expand(W),re>0&&W--;for(var ae=0;ae0&&(this.words[ae]=~this.words[ae]&67108863>>26-re),this.strip()},f.prototype.notn=function(N){return this.clone().inotn(N)},f.prototype.setn=function(N,W){u(typeof N=="number"&&N>=0);var re=N/26|0,ae=N%26;return this._expand(re+1),W?this.words[re]=this.words[re]|1<N.length?(re=this,ae=N):(re=N,ae=this);for(var _e=0,Me=0;Me>>26;for(;_e!==0&&Me>>26;if(this.length=re.length,_e!==0)this.words[this.length]=_e,this.length++;else if(re!==this)for(;MeN.length?this.clone().iadd(N):N.clone().iadd(this)},f.prototype.isub=function(N){if(N.negative!==0){N.negative=0;var W=this.iadd(N);return N.negative=1,W._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(N),this.negative=1,this._normSign();var re=this.cmp(N);if(re===0)return this.negative=0,this.length=1,this.words[0]=0,this;var ae,_e;re>0?(ae=this,_e=N):(ae=N,_e=this);for(var Me=0,ke=0;ke<_e.length;ke++)W=(ae.words[ke]|0)-(_e.words[ke]|0)+Me,Me=W>>26,this.words[ke]=W&67108863;for(;Me!==0&&ke>26,this.words[ke]=W&67108863;if(Me===0&&ke>>26,Ee=ge&67108863,Ae=Math.min(ie,N.length-1),ze=Math.max(0,ie-G.length+1);ze<=Ae;ze++){var Ce=ie-ze|0;ae=G.words[Ce]|0,_e=N.words[ze]|0,Me=ae*_e+Ee,Te+=Me/67108864|0,Ee=Me&67108863}W.words[ie]=Ee|0,ge=Te|0}return ge!==0?W.words[ie]=ge|0:W.length--,W.strip()}var L=function(N,W,re){var ae=N.words,_e=W.words,Me=re.words,ke=0,ge,ie,Te,Ee=ae[0]|0,Ae=Ee&8191,ze=Ee>>>13,Ce=ae[1]|0,me=Ce&8191,Re=Ce>>>13,ce=ae[2]|0,Ge=ce&8191,nt=ce>>>13,ct=ae[3]|0,qt=ct&8191,rt=ct>>>13,ot=ae[4]|0,Rt=ot&8191,kt=ot>>>13,Ct=ae[5]|0,Yt=Ct&8191,xr=Ct>>>13,er=ae[6]|0,Ke=er&8191,xt=er>>>13,bt=ae[7]|0,Lt=bt&8191,St=bt>>>13,Et=ae[8]|0,dt=Et&8191,Ht=Et>>>13,$t=ae[9]|0,fr=$t&8191,_r=$t>>>13,Br=_e[0]|0,Or=Br&8191,Nr=Br>>>13,ut=_e[1]|0,Ne=ut&8191,Ye=ut>>>13,Ve=_e[2]|0,Xe=Ve&8191,ht=Ve>>>13,Le=_e[3]|0,xe=Le&8191,Se=Le>>>13,lt=_e[4]|0,Gt=lt&8191,Vt=lt>>>13,ar=_e[5]|0,Qr=ar&8191,ai=ar>>>13,jr=_e[6]|0,ri=jr&8191,bi=jr>>>13,nn=_e[7]|0,Wi=nn&8191,Ni=nn>>>13,_n=_e[8]|0,$i=_n&8191,zn=_n>>>13,Wn=_e[9]|0,It=Wn&8191,ft=Wn>>>13;re.negative=N.negative^W.negative,re.length=19,ge=Math.imul(Ae,Or),ie=Math.imul(Ae,Nr),ie=ie+Math.imul(ze,Or)|0,Te=Math.imul(ze,Nr);var jt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jt>>>26)|0,jt&=67108863,ge=Math.imul(me,Or),ie=Math.imul(me,Nr),ie=ie+Math.imul(Re,Or)|0,Te=Math.imul(Re,Nr),ge=ge+Math.imul(Ae,Ne)|0,ie=ie+Math.imul(Ae,Ye)|0,ie=ie+Math.imul(ze,Ne)|0,Te=Te+Math.imul(ze,Ye)|0;var Zt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,ge=Math.imul(Ge,Or),ie=Math.imul(Ge,Nr),ie=ie+Math.imul(nt,Or)|0,Te=Math.imul(nt,Nr),ge=ge+Math.imul(me,Ne)|0,ie=ie+Math.imul(me,Ye)|0,ie=ie+Math.imul(Re,Ne)|0,Te=Te+Math.imul(Re,Ye)|0,ge=ge+Math.imul(Ae,Xe)|0,ie=ie+Math.imul(Ae,ht)|0,ie=ie+Math.imul(ze,Xe)|0,Te=Te+Math.imul(ze,ht)|0;var yr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(yr>>>26)|0,yr&=67108863,ge=Math.imul(qt,Or),ie=Math.imul(qt,Nr),ie=ie+Math.imul(rt,Or)|0,Te=Math.imul(rt,Nr),ge=ge+Math.imul(Ge,Ne)|0,ie=ie+Math.imul(Ge,Ye)|0,ie=ie+Math.imul(nt,Ne)|0,Te=Te+Math.imul(nt,Ye)|0,ge=ge+Math.imul(me,Xe)|0,ie=ie+Math.imul(me,ht)|0,ie=ie+Math.imul(Re,Xe)|0,Te=Te+Math.imul(Re,ht)|0,ge=ge+Math.imul(Ae,xe)|0,ie=ie+Math.imul(Ae,Se)|0,ie=ie+Math.imul(ze,xe)|0,Te=Te+Math.imul(ze,Se)|0;var Fr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,ge=Math.imul(Rt,Or),ie=Math.imul(Rt,Nr),ie=ie+Math.imul(kt,Or)|0,Te=Math.imul(kt,Nr),ge=ge+Math.imul(qt,Ne)|0,ie=ie+Math.imul(qt,Ye)|0,ie=ie+Math.imul(rt,Ne)|0,Te=Te+Math.imul(rt,Ye)|0,ge=ge+Math.imul(Ge,Xe)|0,ie=ie+Math.imul(Ge,ht)|0,ie=ie+Math.imul(nt,Xe)|0,Te=Te+Math.imul(nt,ht)|0,ge=ge+Math.imul(me,xe)|0,ie=ie+Math.imul(me,Se)|0,ie=ie+Math.imul(Re,xe)|0,Te=Te+Math.imul(Re,Se)|0,ge=ge+Math.imul(Ae,Gt)|0,ie=ie+Math.imul(Ae,Vt)|0,ie=ie+Math.imul(ze,Gt)|0,Te=Te+Math.imul(ze,Vt)|0;var Zr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,ge=Math.imul(Yt,Or),ie=Math.imul(Yt,Nr),ie=ie+Math.imul(xr,Or)|0,Te=Math.imul(xr,Nr),ge=ge+Math.imul(Rt,Ne)|0,ie=ie+Math.imul(Rt,Ye)|0,ie=ie+Math.imul(kt,Ne)|0,Te=Te+Math.imul(kt,Ye)|0,ge=ge+Math.imul(qt,Xe)|0,ie=ie+Math.imul(qt,ht)|0,ie=ie+Math.imul(rt,Xe)|0,Te=Te+Math.imul(rt,ht)|0,ge=ge+Math.imul(Ge,xe)|0,ie=ie+Math.imul(Ge,Se)|0,ie=ie+Math.imul(nt,xe)|0,Te=Te+Math.imul(nt,Se)|0,ge=ge+Math.imul(me,Gt)|0,ie=ie+Math.imul(me,Vt)|0,ie=ie+Math.imul(Re,Gt)|0,Te=Te+Math.imul(Re,Vt)|0,ge=ge+Math.imul(Ae,Qr)|0,ie=ie+Math.imul(Ae,ai)|0,ie=ie+Math.imul(ze,Qr)|0,Te=Te+Math.imul(ze,ai)|0;var Vr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,ge=Math.imul(Ke,Or),ie=Math.imul(Ke,Nr),ie=ie+Math.imul(xt,Or)|0,Te=Math.imul(xt,Nr),ge=ge+Math.imul(Yt,Ne)|0,ie=ie+Math.imul(Yt,Ye)|0,ie=ie+Math.imul(xr,Ne)|0,Te=Te+Math.imul(xr,Ye)|0,ge=ge+Math.imul(Rt,Xe)|0,ie=ie+Math.imul(Rt,ht)|0,ie=ie+Math.imul(kt,Xe)|0,Te=Te+Math.imul(kt,ht)|0,ge=ge+Math.imul(qt,xe)|0,ie=ie+Math.imul(qt,Se)|0,ie=ie+Math.imul(rt,xe)|0,Te=Te+Math.imul(rt,Se)|0,ge=ge+Math.imul(Ge,Gt)|0,ie=ie+Math.imul(Ge,Vt)|0,ie=ie+Math.imul(nt,Gt)|0,Te=Te+Math.imul(nt,Vt)|0,ge=ge+Math.imul(me,Qr)|0,ie=ie+Math.imul(me,ai)|0,ie=ie+Math.imul(Re,Qr)|0,Te=Te+Math.imul(Re,ai)|0,ge=ge+Math.imul(Ae,ri)|0,ie=ie+Math.imul(Ae,bi)|0,ie=ie+Math.imul(ze,ri)|0,Te=Te+Math.imul(ze,bi)|0;var gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(gi>>>26)|0,gi&=67108863,ge=Math.imul(Lt,Or),ie=Math.imul(Lt,Nr),ie=ie+Math.imul(St,Or)|0,Te=Math.imul(St,Nr),ge=ge+Math.imul(Ke,Ne)|0,ie=ie+Math.imul(Ke,Ye)|0,ie=ie+Math.imul(xt,Ne)|0,Te=Te+Math.imul(xt,Ye)|0,ge=ge+Math.imul(Yt,Xe)|0,ie=ie+Math.imul(Yt,ht)|0,ie=ie+Math.imul(xr,Xe)|0,Te=Te+Math.imul(xr,ht)|0,ge=ge+Math.imul(Rt,xe)|0,ie=ie+Math.imul(Rt,Se)|0,ie=ie+Math.imul(kt,xe)|0,Te=Te+Math.imul(kt,Se)|0,ge=ge+Math.imul(qt,Gt)|0,ie=ie+Math.imul(qt,Vt)|0,ie=ie+Math.imul(rt,Gt)|0,Te=Te+Math.imul(rt,Vt)|0,ge=ge+Math.imul(Ge,Qr)|0,ie=ie+Math.imul(Ge,ai)|0,ie=ie+Math.imul(nt,Qr)|0,Te=Te+Math.imul(nt,ai)|0,ge=ge+Math.imul(me,ri)|0,ie=ie+Math.imul(me,bi)|0,ie=ie+Math.imul(Re,ri)|0,Te=Te+Math.imul(Re,bi)|0,ge=ge+Math.imul(Ae,Wi)|0,ie=ie+Math.imul(Ae,Ni)|0,ie=ie+Math.imul(ze,Wi)|0,Te=Te+Math.imul(ze,Ni)|0;var Si=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Si>>>26)|0,Si&=67108863,ge=Math.imul(dt,Or),ie=Math.imul(dt,Nr),ie=ie+Math.imul(Ht,Or)|0,Te=Math.imul(Ht,Nr),ge=ge+Math.imul(Lt,Ne)|0,ie=ie+Math.imul(Lt,Ye)|0,ie=ie+Math.imul(St,Ne)|0,Te=Te+Math.imul(St,Ye)|0,ge=ge+Math.imul(Ke,Xe)|0,ie=ie+Math.imul(Ke,ht)|0,ie=ie+Math.imul(xt,Xe)|0,Te=Te+Math.imul(xt,ht)|0,ge=ge+Math.imul(Yt,xe)|0,ie=ie+Math.imul(Yt,Se)|0,ie=ie+Math.imul(xr,xe)|0,Te=Te+Math.imul(xr,Se)|0,ge=ge+Math.imul(Rt,Gt)|0,ie=ie+Math.imul(Rt,Vt)|0,ie=ie+Math.imul(kt,Gt)|0,Te=Te+Math.imul(kt,Vt)|0,ge=ge+Math.imul(qt,Qr)|0,ie=ie+Math.imul(qt,ai)|0,ie=ie+Math.imul(rt,Qr)|0,Te=Te+Math.imul(rt,ai)|0,ge=ge+Math.imul(Ge,ri)|0,ie=ie+Math.imul(Ge,bi)|0,ie=ie+Math.imul(nt,ri)|0,Te=Te+Math.imul(nt,bi)|0,ge=ge+Math.imul(me,Wi)|0,ie=ie+Math.imul(me,Ni)|0,ie=ie+Math.imul(Re,Wi)|0,Te=Te+Math.imul(Re,Ni)|0,ge=ge+Math.imul(Ae,$i)|0,ie=ie+Math.imul(Ae,zn)|0,ie=ie+Math.imul(ze,$i)|0,Te=Te+Math.imul(ze,zn)|0;var Mi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,ge=Math.imul(fr,Or),ie=Math.imul(fr,Nr),ie=ie+Math.imul(_r,Or)|0,Te=Math.imul(_r,Nr),ge=ge+Math.imul(dt,Ne)|0,ie=ie+Math.imul(dt,Ye)|0,ie=ie+Math.imul(Ht,Ne)|0,Te=Te+Math.imul(Ht,Ye)|0,ge=ge+Math.imul(Lt,Xe)|0,ie=ie+Math.imul(Lt,ht)|0,ie=ie+Math.imul(St,Xe)|0,Te=Te+Math.imul(St,ht)|0,ge=ge+Math.imul(Ke,xe)|0,ie=ie+Math.imul(Ke,Se)|0,ie=ie+Math.imul(xt,xe)|0,Te=Te+Math.imul(xt,Se)|0,ge=ge+Math.imul(Yt,Gt)|0,ie=ie+Math.imul(Yt,Vt)|0,ie=ie+Math.imul(xr,Gt)|0,Te=Te+Math.imul(xr,Vt)|0,ge=ge+Math.imul(Rt,Qr)|0,ie=ie+Math.imul(Rt,ai)|0,ie=ie+Math.imul(kt,Qr)|0,Te=Te+Math.imul(kt,ai)|0,ge=ge+Math.imul(qt,ri)|0,ie=ie+Math.imul(qt,bi)|0,ie=ie+Math.imul(rt,ri)|0,Te=Te+Math.imul(rt,bi)|0,ge=ge+Math.imul(Ge,Wi)|0,ie=ie+Math.imul(Ge,Ni)|0,ie=ie+Math.imul(nt,Wi)|0,Te=Te+Math.imul(nt,Ni)|0,ge=ge+Math.imul(me,$i)|0,ie=ie+Math.imul(me,zn)|0,ie=ie+Math.imul(Re,$i)|0,Te=Te+Math.imul(Re,zn)|0,ge=ge+Math.imul(Ae,It)|0,ie=ie+Math.imul(Ae,ft)|0,ie=ie+Math.imul(ze,It)|0,Te=Te+Math.imul(ze,ft)|0;var Pi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,ge=Math.imul(fr,Ne),ie=Math.imul(fr,Ye),ie=ie+Math.imul(_r,Ne)|0,Te=Math.imul(_r,Ye),ge=ge+Math.imul(dt,Xe)|0,ie=ie+Math.imul(dt,ht)|0,ie=ie+Math.imul(Ht,Xe)|0,Te=Te+Math.imul(Ht,ht)|0,ge=ge+Math.imul(Lt,xe)|0,ie=ie+Math.imul(Lt,Se)|0,ie=ie+Math.imul(St,xe)|0,Te=Te+Math.imul(St,Se)|0,ge=ge+Math.imul(Ke,Gt)|0,ie=ie+Math.imul(Ke,Vt)|0,ie=ie+Math.imul(xt,Gt)|0,Te=Te+Math.imul(xt,Vt)|0,ge=ge+Math.imul(Yt,Qr)|0,ie=ie+Math.imul(Yt,ai)|0,ie=ie+Math.imul(xr,Qr)|0,Te=Te+Math.imul(xr,ai)|0,ge=ge+Math.imul(Rt,ri)|0,ie=ie+Math.imul(Rt,bi)|0,ie=ie+Math.imul(kt,ri)|0,Te=Te+Math.imul(kt,bi)|0,ge=ge+Math.imul(qt,Wi)|0,ie=ie+Math.imul(qt,Ni)|0,ie=ie+Math.imul(rt,Wi)|0,Te=Te+Math.imul(rt,Ni)|0,ge=ge+Math.imul(Ge,$i)|0,ie=ie+Math.imul(Ge,zn)|0,ie=ie+Math.imul(nt,$i)|0,Te=Te+Math.imul(nt,zn)|0,ge=ge+Math.imul(me,It)|0,ie=ie+Math.imul(me,ft)|0,ie=ie+Math.imul(Re,It)|0,Te=Te+Math.imul(Re,ft)|0;var Gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,ge=Math.imul(fr,Xe),ie=Math.imul(fr,ht),ie=ie+Math.imul(_r,Xe)|0,Te=Math.imul(_r,ht),ge=ge+Math.imul(dt,xe)|0,ie=ie+Math.imul(dt,Se)|0,ie=ie+Math.imul(Ht,xe)|0,Te=Te+Math.imul(Ht,Se)|0,ge=ge+Math.imul(Lt,Gt)|0,ie=ie+Math.imul(Lt,Vt)|0,ie=ie+Math.imul(St,Gt)|0,Te=Te+Math.imul(St,Vt)|0,ge=ge+Math.imul(Ke,Qr)|0,ie=ie+Math.imul(Ke,ai)|0,ie=ie+Math.imul(xt,Qr)|0,Te=Te+Math.imul(xt,ai)|0,ge=ge+Math.imul(Yt,ri)|0,ie=ie+Math.imul(Yt,bi)|0,ie=ie+Math.imul(xr,ri)|0,Te=Te+Math.imul(xr,bi)|0,ge=ge+Math.imul(Rt,Wi)|0,ie=ie+Math.imul(Rt,Ni)|0,ie=ie+Math.imul(kt,Wi)|0,Te=Te+Math.imul(kt,Ni)|0,ge=ge+Math.imul(qt,$i)|0,ie=ie+Math.imul(qt,zn)|0,ie=ie+Math.imul(rt,$i)|0,Te=Te+Math.imul(rt,zn)|0,ge=ge+Math.imul(Ge,It)|0,ie=ie+Math.imul(Ge,ft)|0,ie=ie+Math.imul(nt,It)|0,Te=Te+Math.imul(nt,ft)|0;var Ki=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,ge=Math.imul(fr,xe),ie=Math.imul(fr,Se),ie=ie+Math.imul(_r,xe)|0,Te=Math.imul(_r,Se),ge=ge+Math.imul(dt,Gt)|0,ie=ie+Math.imul(dt,Vt)|0,ie=ie+Math.imul(Ht,Gt)|0,Te=Te+Math.imul(Ht,Vt)|0,ge=ge+Math.imul(Lt,Qr)|0,ie=ie+Math.imul(Lt,ai)|0,ie=ie+Math.imul(St,Qr)|0,Te=Te+Math.imul(St,ai)|0,ge=ge+Math.imul(Ke,ri)|0,ie=ie+Math.imul(Ke,bi)|0,ie=ie+Math.imul(xt,ri)|0,Te=Te+Math.imul(xt,bi)|0,ge=ge+Math.imul(Yt,Wi)|0,ie=ie+Math.imul(Yt,Ni)|0,ie=ie+Math.imul(xr,Wi)|0,Te=Te+Math.imul(xr,Ni)|0,ge=ge+Math.imul(Rt,$i)|0,ie=ie+Math.imul(Rt,zn)|0,ie=ie+Math.imul(kt,$i)|0,Te=Te+Math.imul(kt,zn)|0,ge=ge+Math.imul(qt,It)|0,ie=ie+Math.imul(qt,ft)|0,ie=ie+Math.imul(rt,It)|0,Te=Te+Math.imul(rt,ft)|0;var ka=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(ka>>>26)|0,ka&=67108863,ge=Math.imul(fr,Gt),ie=Math.imul(fr,Vt),ie=ie+Math.imul(_r,Gt)|0,Te=Math.imul(_r,Vt),ge=ge+Math.imul(dt,Qr)|0,ie=ie+Math.imul(dt,ai)|0,ie=ie+Math.imul(Ht,Qr)|0,Te=Te+Math.imul(Ht,ai)|0,ge=ge+Math.imul(Lt,ri)|0,ie=ie+Math.imul(Lt,bi)|0,ie=ie+Math.imul(St,ri)|0,Te=Te+Math.imul(St,bi)|0,ge=ge+Math.imul(Ke,Wi)|0,ie=ie+Math.imul(Ke,Ni)|0,ie=ie+Math.imul(xt,Wi)|0,Te=Te+Math.imul(xt,Ni)|0,ge=ge+Math.imul(Yt,$i)|0,ie=ie+Math.imul(Yt,zn)|0,ie=ie+Math.imul(xr,$i)|0,Te=Te+Math.imul(xr,zn)|0,ge=ge+Math.imul(Rt,It)|0,ie=ie+Math.imul(Rt,ft)|0,ie=ie+Math.imul(kt,It)|0,Te=Te+Math.imul(kt,ft)|0;var jn=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jn>>>26)|0,jn&=67108863,ge=Math.imul(fr,Qr),ie=Math.imul(fr,ai),ie=ie+Math.imul(_r,Qr)|0,Te=Math.imul(_r,ai),ge=ge+Math.imul(dt,ri)|0,ie=ie+Math.imul(dt,bi)|0,ie=ie+Math.imul(Ht,ri)|0,Te=Te+Math.imul(Ht,bi)|0,ge=ge+Math.imul(Lt,Wi)|0,ie=ie+Math.imul(Lt,Ni)|0,ie=ie+Math.imul(St,Wi)|0,Te=Te+Math.imul(St,Ni)|0,ge=ge+Math.imul(Ke,$i)|0,ie=ie+Math.imul(Ke,zn)|0,ie=ie+Math.imul(xt,$i)|0,Te=Te+Math.imul(xt,zn)|0,ge=ge+Math.imul(Yt,It)|0,ie=ie+Math.imul(Yt,ft)|0,ie=ie+Math.imul(xr,It)|0,Te=Te+Math.imul(xr,ft)|0;var la=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(la>>>26)|0,la&=67108863,ge=Math.imul(fr,ri),ie=Math.imul(fr,bi),ie=ie+Math.imul(_r,ri)|0,Te=Math.imul(_r,bi),ge=ge+Math.imul(dt,Wi)|0,ie=ie+Math.imul(dt,Ni)|0,ie=ie+Math.imul(Ht,Wi)|0,Te=Te+Math.imul(Ht,Ni)|0,ge=ge+Math.imul(Lt,$i)|0,ie=ie+Math.imul(Lt,zn)|0,ie=ie+Math.imul(St,$i)|0,Te=Te+Math.imul(St,zn)|0,ge=ge+Math.imul(Ke,It)|0,ie=ie+Math.imul(Ke,ft)|0,ie=ie+Math.imul(xt,It)|0,Te=Te+Math.imul(xt,ft)|0;var Fa=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,ge=Math.imul(fr,Wi),ie=Math.imul(fr,Ni),ie=ie+Math.imul(_r,Wi)|0,Te=Math.imul(_r,Ni),ge=ge+Math.imul(dt,$i)|0,ie=ie+Math.imul(dt,zn)|0,ie=ie+Math.imul(Ht,$i)|0,Te=Te+Math.imul(Ht,zn)|0,ge=ge+Math.imul(Lt,It)|0,ie=ie+Math.imul(Lt,ft)|0,ie=ie+Math.imul(St,It)|0,Te=Te+Math.imul(St,ft)|0;var Ra=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ra>>>26)|0,Ra&=67108863,ge=Math.imul(fr,$i),ie=Math.imul(fr,zn),ie=ie+Math.imul(_r,$i)|0,Te=Math.imul(_r,zn),ge=ge+Math.imul(dt,It)|0,ie=ie+Math.imul(dt,ft)|0,ie=ie+Math.imul(Ht,It)|0,Te=Te+Math.imul(Ht,ft)|0;var jo=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jo>>>26)|0,jo&=67108863,ge=Math.imul(fr,It),ie=Math.imul(fr,ft),ie=ie+Math.imul(_r,It)|0,Te=Math.imul(_r,ft);var oa=(ke+ge|0)+((ie&8191)<<13)|0;return ke=(Te+(ie>>>13)|0)+(oa>>>26)|0,oa&=67108863,Me[0]=jt,Me[1]=Zt,Me[2]=yr,Me[3]=Fr,Me[4]=Zr,Me[5]=Vr,Me[6]=gi,Me[7]=Si,Me[8]=Mi,Me[9]=Pi,Me[10]=Gi,Me[11]=Ki,Me[12]=ka,Me[13]=jn,Me[14]=la,Me[15]=Fa,Me[16]=Ra,Me[17]=jo,Me[18]=oa,ke!==0&&(Me[19]=ke,re.length++),re};Math.imul||(L=A);function _(G,N,W){W.negative=N.negative^G.negative,W.length=G.length+N.length;for(var re=0,ae=0,_e=0;_e>>26)|0,ae+=Me>>>26,Me&=67108863}W.words[_e]=ke,re=Me,Me=ae}return re!==0?W.words[_e]=re:W.length--,W.strip()}function C(G,N,W){var re=new M;return re.mulp(G,N,W)}f.prototype.mulTo=function(N,W){var re,ae=this.length+N.length;return this.length===10&&N.length===10?re=L(this,N,W):ae<63?re=A(this,N,W):ae<1024?re=_(this,N,W):re=C(this,N,W),re};function M(G,N){this.x=G,this.y=N}M.prototype.makeRBT=function(N){for(var W=new Array(N),re=f.prototype._countBits(N)-1,ae=0;ae>=1;return ae},M.prototype.permute=function(N,W,re,ae,_e,Me){for(var ke=0;ke>>1)_e++;return 1<<_e+1+ae},M.prototype.conjugate=function(N,W,re){if(!(re<=1))for(var ae=0;ae>>13,re[2*Me+1]=_e&8191,_e=_e>>>13;for(Me=2*W;Me>=26,W+=ae/67108864|0,W+=_e>>>26,this.words[re]=_e&67108863}return W!==0&&(this.words[re]=W,this.length++),this},f.prototype.muln=function(N){return this.clone().imuln(N)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(N){var W=k(N);if(W.length===0)return new f(1);for(var re=this,ae=0;ae=0);var W=N%26,re=(N-W)/26,ae=67108863>>>26-W<<26-W,_e;if(W!==0){var Me=0;for(_e=0;_e>>26-W}Me&&(this.words[_e]=Me,this.length++)}if(re!==0){for(_e=this.length-1;_e>=0;_e--)this.words[_e+re]=this.words[_e];for(_e=0;_e=0);var ae;W?ae=(W-W%26)/26:ae=0;var _e=N%26,Me=Math.min((N-_e)/26,this.length),ke=67108863^67108863>>>_e<<_e,ge=re;if(ae-=Me,ae=Math.max(0,ae),ge){for(var ie=0;ieMe)for(this.length-=Me,ie=0;ie=0&&(Te!==0||ie>=ae);ie--){var Ee=this.words[ie]|0;this.words[ie]=Te<<26-_e|Ee>>>_e,Te=Ee&ke}return ge&&Te!==0&&(ge.words[ge.length++]=Te),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(N,W,re){return u(this.negative===0),this.iushrn(N,W,re)},f.prototype.shln=function(N){return this.clone().ishln(N)},f.prototype.ushln=function(N){return this.clone().iushln(N)},f.prototype.shrn=function(N){return this.clone().ishrn(N)},f.prototype.ushrn=function(N){return this.clone().iushrn(N)},f.prototype.testn=function(N){u(typeof N=="number"&&N>=0);var W=N%26,re=(N-W)/26,ae=1<=0);var W=N%26,re=(N-W)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=re)return this;if(W!==0&&re++,this.length=Math.min(re,this.length),W!==0){var ae=67108863^67108863>>>W<=67108864;W++)this.words[W]-=67108864,W===this.length-1?this.words[W+1]=1:this.words[W+1]++;return this.length=Math.max(this.length,W+1),this},f.prototype.isubn=function(N){if(u(typeof N=="number"),u(N<67108864),N<0)return this.iaddn(-N);if(this.negative!==0)return this.negative=0,this.iaddn(N),this.negative=1,this;if(this.words[0]-=N,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var W=0;W>26)-(ge/67108864|0),this.words[_e+re]=Me&67108863}for(;_e>26,this.words[_e+re]=Me&67108863;if(ke===0)return this.strip();for(u(ke===-1),ke=0,_e=0;_e>26,this.words[_e]=Me&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(N,W){var re=this.length-N.length,ae=this.clone(),_e=N,Me=_e.words[_e.length-1]|0,ke=this._countBits(Me);re=26-ke,re!==0&&(_e=_e.ushln(re),ae.iushln(re),Me=_e.words[_e.length-1]|0);var ge=ae.length-_e.length,ie;if(W!=="mod"){ie=new f(null),ie.length=ge+1,ie.words=new Array(ie.length);for(var Te=0;Te=0;Ae--){var ze=(ae.words[_e.length+Ae]|0)*67108864+(ae.words[_e.length+Ae-1]|0);for(ze=Math.min(ze/Me|0,67108863),ae._ishlnsubmul(_e,ze,Ae);ae.negative!==0;)ze--,ae.negative=0,ae._ishlnsubmul(_e,1,Ae),ae.isZero()||(ae.negative^=1);ie&&(ie.words[Ae]=ze)}return ie&&ie.strip(),ae.strip(),W!=="div"&&re!==0&&ae.iushrn(re),{div:ie||null,mod:ae}},f.prototype.divmod=function(N,W,re){if(u(!N.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var ae,_e,Me;return this.negative!==0&&N.negative===0?(Me=this.neg().divmod(N,W),W!=="mod"&&(ae=Me.div.neg()),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.iadd(N)),{div:ae,mod:_e}):this.negative===0&&N.negative!==0?(Me=this.divmod(N.neg(),W),W!=="mod"&&(ae=Me.div.neg()),{div:ae,mod:Me.mod}):this.negative&N.negative?(Me=this.neg().divmod(N.neg(),W),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.isub(N)),{div:Me.div,mod:_e}):N.length>this.length||this.cmp(N)<0?{div:new f(0),mod:this}:N.length===1?W==="div"?{div:this.divn(N.words[0]),mod:null}:W==="mod"?{div:null,mod:new f(this.modn(N.words[0]))}:{div:this.divn(N.words[0]),mod:new f(this.modn(N.words[0]))}:this._wordDiv(N,W)},f.prototype.div=function(N){return this.divmod(N,"div",!1).div},f.prototype.mod=function(N){return this.divmod(N,"mod",!1).mod},f.prototype.umod=function(N){return this.divmod(N,"mod",!0).mod},f.prototype.divRound=function(N){var W=this.divmod(N);if(W.mod.isZero())return W.div;var re=W.div.negative!==0?W.mod.isub(N):W.mod,ae=N.ushrn(1),_e=N.andln(1),Me=re.cmp(ae);return Me<0||_e===1&&Me===0?W.div:W.div.negative!==0?W.div.isubn(1):W.div.iaddn(1)},f.prototype.modn=function(N){u(N<=67108863);for(var W=(1<<26)%N,re=0,ae=this.length-1;ae>=0;ae--)re=(W*re+(this.words[ae]|0))%N;return re},f.prototype.idivn=function(N){u(N<=67108863);for(var W=0,re=this.length-1;re>=0;re--){var ae=(this.words[re]|0)+W*67108864;this.words[re]=ae/N|0,W=ae%N}return this.strip()},f.prototype.divn=function(N){return this.clone().idivn(N)},f.prototype.egcd=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=new f(0),ke=new f(1),ge=0;W.isEven()&&re.isEven();)W.iushrn(1),re.iushrn(1),++ge;for(var ie=re.clone(),Te=W.clone();!W.isZero();){for(var Ee=0,Ae=1;!(W.words[0]&Ae)&&Ee<26;++Ee,Ae<<=1);if(Ee>0)for(W.iushrn(Ee);Ee-- >0;)(ae.isOdd()||_e.isOdd())&&(ae.iadd(ie),_e.isub(Te)),ae.iushrn(1),_e.iushrn(1);for(var ze=0,Ce=1;!(re.words[0]&Ce)&&ze<26;++ze,Ce<<=1);if(ze>0)for(re.iushrn(ze);ze-- >0;)(Me.isOdd()||ke.isOdd())&&(Me.iadd(ie),ke.isub(Te)),Me.iushrn(1),ke.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(Me),_e.isub(ke)):(re.isub(W),Me.isub(ae),ke.isub(_e))}return{a:Me,b:ke,gcd:re.iushln(ge)}},f.prototype._invmp=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=re.clone();W.cmpn(1)>0&&re.cmpn(1)>0;){for(var ke=0,ge=1;!(W.words[0]&ge)&&ke<26;++ke,ge<<=1);if(ke>0)for(W.iushrn(ke);ke-- >0;)ae.isOdd()&&ae.iadd(Me),ae.iushrn(1);for(var ie=0,Te=1;!(re.words[0]&Te)&&ie<26;++ie,Te<<=1);if(ie>0)for(re.iushrn(ie);ie-- >0;)_e.isOdd()&&_e.iadd(Me),_e.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(_e)):(re.isub(W),_e.isub(ae))}var Ee;return W.cmpn(1)===0?Ee=ae:Ee=_e,Ee.cmpn(0)<0&&Ee.iadd(N),Ee},f.prototype.gcd=function(N){if(this.isZero())return N.abs();if(N.isZero())return this.abs();var W=this.clone(),re=N.clone();W.negative=0,re.negative=0;for(var ae=0;W.isEven()&&re.isEven();ae++)W.iushrn(1),re.iushrn(1);do{for(;W.isEven();)W.iushrn(1);for(;re.isEven();)re.iushrn(1);var _e=W.cmp(re);if(_e<0){var Me=W;W=re,re=Me}else if(_e===0||re.cmpn(1)===0)break;W.isub(re)}while(!0);return re.iushln(ae)},f.prototype.invm=function(N){return this.egcd(N).a.umod(N)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(N){return this.words[0]&N},f.prototype.bincn=function(N){u(typeof N=="number");var W=N%26,re=(N-W)/26,ae=1<>>26,ke&=67108863,this.words[Me]=ke}return _e!==0&&(this.words[Me]=_e,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(N){var W=N<0;if(this.negative!==0&&!W)return-1;if(this.negative===0&&W)return 1;this.strip();var re;if(this.length>1)re=1;else{W&&(N=-N),u(N<=67108863,"Number is too big");var ae=this.words[0]|0;re=ae===N?0:aeN.length)return 1;if(this.length=0;re--){var ae=this.words[re]|0,_e=N.words[re]|0;if(ae!==_e){ae<_e?W=-1:ae>_e&&(W=1);break}}return W},f.prototype.gtn=function(N){return this.cmpn(N)===1},f.prototype.gt=function(N){return this.cmp(N)===1},f.prototype.gten=function(N){return this.cmpn(N)>=0},f.prototype.gte=function(N){return this.cmp(N)>=0},f.prototype.ltn=function(N){return this.cmpn(N)===-1},f.prototype.lt=function(N){return this.cmp(N)===-1},f.prototype.lten=function(N){return this.cmpn(N)<=0},f.prototype.lte=function(N){return this.cmp(N)<=0},f.prototype.eqn=function(N){return this.cmpn(N)===0},f.prototype.eq=function(N){return this.cmp(N)===0},f.red=function(N){return new H(N)},f.prototype.toRed=function(N){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),N.convertTo(this)._forceRed(N)},f.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(N){return this.red=N,this},f.prototype.forceRed=function(N){return u(!this.red,"Already a number in reduction context"),this._forceRed(N)},f.prototype.redAdd=function(N){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,N)},f.prototype.redIAdd=function(N){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,N)},f.prototype.redSub=function(N){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,N)},f.prototype.redISub=function(N){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,N)},f.prototype.redShl=function(N){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,N)},f.prototype.redMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.mul(this,N)},f.prototype.redIMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.imul(this,N)},f.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(N){return u(this.red&&!N.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,N)};var g={k256:null,p224:null,p192:null,p25519:null};function P(G,N){this.name=G,this.p=new f(N,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}P.prototype._tmp=function(){var N=new f(null);return N.words=new Array(Math.ceil(this.n/13)),N},P.prototype.ireduce=function(N){var W=N,re;do this.split(W,this.tmp),W=this.imulK(W),W=W.iadd(this.tmp),re=W.bitLength();while(re>this.n);var ae=re0?W.isub(this.p):W.strip!==void 0?W.strip():W._strip(),W},P.prototype.split=function(N,W){N.iushrn(this.n,0,W)},P.prototype.imulK=function(N){return N.imul(this.k)};function T(){P.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}c(T,P),T.prototype.split=function(N,W){for(var re=4194303,ae=Math.min(N.length,9),_e=0;_e>>22,Me=ke}Me>>>=22,N.words[_e-10]=Me,Me===0&&N.length>10?N.length-=10:N.length-=9},T.prototype.imulK=function(N){N.words[N.length]=0,N.words[N.length+1]=0,N.length+=2;for(var W=0,re=0;re>>=26,N.words[re]=_e,W=ae}return W!==0&&(N.words[N.length++]=W),N},f._prime=function(N){if(g[N])return g[N];var W;if(N==="k256")W=new T;else if(N==="p224")W=new F;else if(N==="p192")W=new q;else if(N==="p25519")W=new V;else throw new Error("Unknown prime "+N);return g[N]=W,W};function H(G){if(typeof G=="string"){var N=f._prime(G);this.m=N.p,this.prime=N}else u(G.gtn(1),"modulus must be greater than 1"),this.m=G,this.prime=null}H.prototype._verify1=function(N){u(N.negative===0,"red works only with positives"),u(N.red,"red works only with red numbers")},H.prototype._verify2=function(N,W){u((N.negative|W.negative)===0,"red works only with positives"),u(N.red&&N.red===W.red,"red works only with red numbers")},H.prototype.imod=function(N){return this.prime?this.prime.ireduce(N)._forceRed(this):N.umod(this.m)._forceRed(this)},H.prototype.neg=function(N){return N.isZero()?N.clone():this.m.sub(N)._forceRed(this)},H.prototype.add=function(N,W){this._verify2(N,W);var re=N.add(W);return re.cmp(this.m)>=0&&re.isub(this.m),re._forceRed(this)},H.prototype.iadd=function(N,W){this._verify2(N,W);var re=N.iadd(W);return re.cmp(this.m)>=0&&re.isub(this.m),re},H.prototype.sub=function(N,W){this._verify2(N,W);var re=N.sub(W);return re.cmpn(0)<0&&re.iadd(this.m),re._forceRed(this)},H.prototype.isub=function(N,W){this._verify2(N,W);var re=N.isub(W);return re.cmpn(0)<0&&re.iadd(this.m),re},H.prototype.shl=function(N,W){return this._verify1(N),this.imod(N.ushln(W))},H.prototype.imul=function(N,W){return this._verify2(N,W),this.imod(N.imul(W))},H.prototype.mul=function(N,W){return this._verify2(N,W),this.imod(N.mul(W))},H.prototype.isqr=function(N){return this.imul(N,N.clone())},H.prototype.sqr=function(N){return this.mul(N,N)},H.prototype.sqrt=function(N){if(N.isZero())return N.clone();var W=this.m.andln(3);if(u(W%2===1),W===3){var re=this.m.add(new f(1)).iushrn(2);return this.pow(N,re)}for(var ae=this.m.subn(1),_e=0;!ae.isZero()&&ae.andln(1)===0;)_e++,ae.iushrn(1);u(!ae.isZero());var Me=new f(1).toRed(this),ke=Me.redNeg(),ge=this.m.subn(1).iushrn(1),ie=this.m.bitLength();for(ie=new f(2*ie*ie).toRed(this);this.pow(ie,ge).cmp(ke)!==0;)ie.redIAdd(ke);for(var Te=this.pow(ie,ae),Ee=this.pow(N,ae.addn(1).iushrn(1)),Ae=this.pow(N,ae),ze=_e;Ae.cmp(Me)!==0;){for(var Ce=Ae,me=0;Ce.cmp(Me)!==0;me++)Ce=Ce.redSqr();u(me=0;_e--){for(var Te=W.words[_e],Ee=ie-1;Ee>=0;Ee--){var Ae=Te>>Ee&1;if(Me!==ae[0]&&(Me=this.sqr(Me)),Ae===0&&ke===0){ge=0;continue}ke<<=1,ke|=Ae,ge++,!(ge!==re&&(_e!==0||Ee!==0))&&(Me=this.mul(Me,ae[ke]),ge=0,ke=0)}ie=26}return Me},H.prototype.convertTo=function(N){var W=N.umod(this.m);return W===N?W.clone():W},H.prototype.convertFrom=function(N){var W=N.clone();return W.red=null,W},f.mont=function(N){return new X(N)};function X(G){H.call(this,G),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}c(X,H),X.prototype.convertTo=function(N){return this.imod(N.ushln(this.shift))},X.prototype.convertFrom=function(N){var W=this.imod(N.mul(this.rinv));return W.red=null,W},X.prototype.imul=function(N,W){if(N.isZero()||W.isZero())return N.words[0]=0,N.length=1,N;var re=N.imul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.mul=function(N,W){if(N.isZero()||W.isZero())return new f(0)._forceRed(this);var re=N.mul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.invm=function(N){var W=this.imod(N._invmp(this.m).mul(this.r2));return W._forceRed(this)}}(i,this)},6204:function(i){"use strict";i.exports=a;function a(o){var s,l,u,c=o.length,f=0;for(s=0;s>>1;if(!(M<=0)){var g,P=s.mallocDouble(2*M*_),T=s.mallocInt32(_);if(_=f(E,M,P,T),_>0){if(M===1&&L)l.init(_),g=l.sweepComplete(M,A,0,_,P,T,0,_,P,T);else{var F=s.mallocDouble(2*M*C),q=s.mallocInt32(C);C=f(k,M,F,q),C>0&&(l.init(_+C),M===1?g=l.sweepBipartite(M,A,0,_,P,T,0,C,F,q):g=u(M,A,L,_,P,T,C,F,q),s.free(F),s.free(q))}s.free(P),s.free(T)}return g}}}var d;function v(E,k){d.push([E,k])}function x(E){return d=[],h(E,E,v,!0),d}function b(E,k){return d=[],h(E,k,v,!1),d}function p(E,k,A){switch(arguments.length){case 1:return x(E);case 2:return typeof k=="function"?h(E,E,k,!0):b(E,k);case 3:return h(E,k,A,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(i,a){"use strict";function o(){function u(h,d,v,x,b,p,E,k,A,L,_){for(var C=2*h,M=x,g=C*x;MA-k?u(h,d,v,x,b,p,E,k,A,L,_):c(h,d,v,x,b,p,E,k,A,L,_)}return f}function s(){function u(v,x,b,p,E,k,A,L,_,C,M){for(var g=2*v,P=p,T=g*p;PC-_?p?u(v,x,b,E,k,A,L,_,C,M,g):c(v,x,b,E,k,A,L,_,C,M,g):p?f(v,x,b,E,k,A,L,_,C,M,g):h(v,x,b,E,k,A,L,_,C,M,g)}return d}function l(u){return u?o():s()}a.partial=l(!1),a.full=l(!0)},7150:function(i,a,o){"use strict";i.exports=G;var s=o(1888),l=o(8828),u=o(2455),c=u.partial,f=u.full,h=o(855),d=o(3545),v=o(8105),x=128,b=1<<22,p=1<<22,E=v("!(lo>=p0)&&!(p1>=hi)"),k=v("lo===p0"),A=v("lo0;){Te-=1;var ze=Te*M,Ce=T[ze],me=T[ze+1],Re=T[ze+2],ce=T[ze+3],Ge=T[ze+4],nt=T[ze+5],ct=Te*g,qt=F[ct],rt=F[ct+1],ot=nt&1,Rt=!!(nt&16),kt=_e,Ct=Me,Yt=ge,xr=ie;if(ot&&(kt=ge,Ct=ie,Yt=_e,xr=Me),!(nt&2&&(Re=A(N,Ce,me,Re,kt,Ct,rt),me>=Re))&&!(nt&4&&(me=L(N,Ce,me,Re,kt,Ct,qt),me>=Re))){var er=Re-me,Ke=Ge-ce;if(Rt){if(N*er*(er+Ke)v&&b[C+d]>L;--_,C-=E){for(var M=C,g=C+E,P=0;P>>1,L=2*h,_=A,C=b[L*A+d];E=F?(_=T,C=F):P>=V?(_=g,C=P):(_=q,C=V):F>=V?(_=T,C=F):V>=P?(_=g,C=P):(_=q,C=V);for(var G=L*(k-1),N=L*_,H=0;H=p0)&&!(p1>=hi)":d};function o(v){return a[v]}function s(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(F===A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function l(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(Fq;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function u(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function c(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function f(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(F<=A&&A<=q)if(M===T)M+=1,C+=L;else{for(var V=0;L>V;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function h(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(FV;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function d(v,x,b,p,E,k,A,L){for(var _=2*v,C=_*b,M=C,g=b,P=x,T=v+x,F=b;p>F;++F,C+=_){var q=E[C+P],V=E[C+T];if(!(q>=A)&&!(L>=V))if(g===F)g+=1,M+=_;else{for(var H=0;_>H;++H){var X=E[C+H];E[C+H]=E[M],E[M++]=X}var G=k[F];k[F]=k[g],k[g++]=G}}return g}},4192:function(i){"use strict";i.exports=o;var a=32;function o(x,b){b<=4*a?s(0,b-1,x):v(0,b-1,x)}function s(x,b,p){for(var E=2*(x+1),k=x+1;k<=b;++k){for(var A=p[E++],L=p[E++],_=k,C=E-2;_-- >x;){var M=p[C-2],g=p[C-1];if(Mp[b+1]:!0}function d(x,b,p,E){x*=2;var k=E[x];return k>1,_=L-E,C=L+E,M=k,g=_,P=L,T=C,F=A,q=x+1,V=b-1,H=0;h(M,g,p)&&(H=M,M=g,g=H),h(T,F,p)&&(H=T,T=F,F=H),h(M,P,p)&&(H=M,M=P,P=H),h(g,P,p)&&(H=g,g=P,P=H),h(M,T,p)&&(H=M,M=T,T=H),h(P,T,p)&&(H=P,P=T,T=H),h(g,F,p)&&(H=g,g=F,F=H),h(g,P,p)&&(H=g,g=P,P=H),h(T,F,p)&&(H=T,T=F,F=H);for(var X=p[2*g],G=p[2*g+1],N=p[2*T],W=p[2*T+1],re=2*M,ae=2*P,_e=2*F,Me=2*k,ke=2*L,ge=2*A,ie=0;ie<2;++ie){var Te=p[re+ie],Ee=p[ae+ie],Ae=p[_e+ie];p[Me+ie]=Te,p[ke+ie]=Ee,p[ge+ie]=Ae}u(_,x,p),u(C,b,p);for(var ze=q;ze<=V;++ze)if(d(ze,X,G,p))ze!==q&&l(ze,q,p),++q;else if(!d(ze,N,W,p))for(;;)if(d(V,N,W,p)){d(V,X,G,p)?(c(ze,q,V,p),++q,--V):(l(ze,V,p),--V);break}else{if(--V>>1;u(E,Ee);for(var Ae=0,ze=0,ke=0;ke=c)Ce=Ce-c|0,A(v,x,ze--,Ce);else if(Ce>=0)A(h,d,Ae--,Ce);else if(Ce<=-c){Ce=-Ce-c|0;for(var me=0;me>>1;u(E,Ee);for(var Ae=0,ze=0,Ce=0,ke=0;ke>1===E[2*ke+3]>>1&&(Re=2,ke+=1),me<0){for(var ce=-(me>>1)-1,Ge=0;Ge>1)-1;Re===0?A(h,d,Ae--,ce):Re===1?A(v,x,ze--,ce):Re===2&&A(b,p,Ce--,ce)}}}function M(P,T,F,q,V,H,X,G,N,W,re,ae){var _e=0,Me=2*P,ke=T,ge=T+P,ie=1,Te=1;q?Te=c:ie=c;for(var Ee=V;Ee>>1;u(E,me);for(var Re=0,Ee=0;Ee=c?(Ge=!q,Ae-=c):(Ge=!!q,Ae-=1),Ge)L(h,d,Re++,Ae);else{var nt=ae[Ae],ct=Me*Ae,qt=re[ct+T+1],rt=re[ct+T+1+P];e:for(var ot=0;ot>>1;u(E,Ae);for(var ze=0,ge=0;ge=c)h[ze++]=ie-c;else{ie-=1;var me=re[ie],Re=_e*ie,ce=W[Re+T+1],Ge=W[Re+T+1+P];e:for(var nt=0;nt=0;--nt)if(h[nt]===ie){for(var ot=nt+1;ot0;){for(var k=d.pop(),b=d.pop(),A=-1,L=-1,p=x[b],C=1;C=0||(h.flip(b,k),u(f,h,d,A,b,L),u(f,h,d,b,L,A),u(f,h,d,L,k,A),u(f,h,d,k,A,L))}}},5023:function(i,a,o){"use strict";var s=o(2478);i.exports=d;function l(v,x,b,p,E,k,A){this.cells=v,this.neighbor=x,this.flags=p,this.constraint=b,this.active=E,this.next=k,this.boundary=A}var u=l.prototype;function c(v,x){return v[0]-x[0]||v[1]-x[1]||v[2]-x[2]}u.locate=function(){var v=[0,0,0];return function(x,b,p){var E=x,k=b,A=p;return b0||A.length>0;){for(;k.length>0;){var g=k.pop();if(L[g]!==-E){L[g]=E;for(var P=_[g],T=0;T<3;++T){var F=M[3*g+T];F>=0&&L[F]===0&&(C[3*g+T]?A.push(F):(k.push(F),L[F]=E))}}}var q=A;A=k,k=q,A.length=0,E=-E}var V=h(_,L,x);return b?V.concat(p.boundary):V}},8902:function(i,a,o){"use strict";var s=o(2478),l=o(3250)[3],u=0,c=1,f=2;i.exports=A;function h(L,_,C,M,g){this.a=L,this.b=_,this.idx=C,this.lowerIds=M,this.upperIds=g}function d(L,_,C,M){this.a=L,this.b=_,this.type=C,this.idx=M}function v(L,_){var C=L.a[0]-_.a[0]||L.a[1]-_.a[1]||L.type-_.type;return C||L.type!==u&&(C=l(L.a,L.b,_.b),C)?C:L.idx-_.idx}function x(L,_){return l(L.a,L.b,_)}function b(L,_,C,M,g){for(var P=s.lt(_,M,x),T=s.gt(_,M,x),F=P;F1&&l(C[V[X-2]],C[V[X-1]],M)>0;)L.push([V[X-1],V[X-2],g]),X-=1;V.length=X,V.push(g);for(var H=q.upperIds,X=H.length;X>1&&l(C[H[X-2]],C[H[X-1]],M)<0;)L.push([H[X-2],H[X-1],g]),X-=1;H.length=X,H.push(g)}}function p(L,_){var C;return L.a[0]<_.a[0]?C=l(L.a,L.b,_.a):C=l(_.b,_.a,L.a),C||(_.b[0]q[0]&&g.push(new d(q,F,f,P),new d(F,q,c,P))}g.sort(v);for(var V=g[0].a[0]-(1+Math.abs(g[0].a[0]))*Math.pow(2,-52),H=[new h([V,1],[V,0],-1,[],[],[],[])],X=[],P=0,G=g.length;P=0}}(),u.removeTriangle=function(h,d,v){var x=this.stars;c(x[h],d,v),c(x[d],v,h),c(x[v],h,d)},u.addTriangle=function(h,d,v){var x=this.stars;x[h].push(d,v),x[d].push(v,h),x[v].push(h,d)},u.opposite=function(h,d){for(var v=this.stars[d],x=1,b=v.length;x=0;--N){var Te=X[N];W=Te[0];var Ee=V[W],Ae=Ee[0],ze=Ee[1],Ce=q[Ae],me=q[ze];if((Ce[0]-me[0]||Ce[1]-me[1])<0){var Re=Ae;Ae=ze,ze=Re}Ee[0]=Ae;var ce=Ee[1]=Te[1],Ge;for(G&&(Ge=Ee[2]);N>0&&X[N-1][0]===W;){var Te=X[--N],nt=Te[1];G?V.push([ce,nt,Ge]):V.push([ce,nt]),ce=nt}G?V.push([ce,ze,Ge]):V.push([ce,ze])}return re}function _(q,V,H){for(var X=V.length,G=new s(X),N=[],W=0;WV[2]?1:0)}function g(q,V,H){if(q.length!==0){if(V)for(var X=0;X0||W.length>0}function F(q,V,H){var X;if(H){X=V;for(var G=new Array(V.length),N=0;NL+1)throw new Error(k+" map requires nshades to be at least size "+E.length);Array.isArray(d.alpha)?d.alpha.length!==2?_=[1,1]:_=d.alpha.slice():typeof d.alpha=="number"?_=[d.alpha,d.alpha]:_=[1,1],v=E.map(function(F){return Math.round(F.index*L)}),_[0]=Math.min(Math.max(_[0],0),1),_[1]=Math.min(Math.max(_[1],0),1);var M=E.map(function(F,q){var V=E[q].index,H=E[q].rgb.slice();return H.length===4&&H[3]>=0&&H[3]<=1||(H[3]=_[0]+(_[1]-_[0])*V),H}),g=[];for(C=0;C=0}function d(v,x,b,p){var E=s(x,b,p);if(E===0){var k=l(s(v,x,b)),A=l(s(v,x,p));if(k===A){if(k===0){var L=h(v,x,b),_=h(v,x,p);return L===_?0:L?1:-1}return 0}else{if(A===0)return k>0||h(v,x,p)?-1:1;if(k===0)return A>0||h(v,x,b)?1:-1}return l(A-k)}var C=s(v,x,b);if(C>0)return E>0&&s(v,x,p)>0?1:-1;if(C<0)return E>0||s(v,x,p)>0?1:-1;var M=s(v,x,p);return M>0||h(v,x,b)?1:-1}},8572:function(i){"use strict";i.exports=function(o){return o<0?-1:o>0?1:0}},8507:function(i){i.exports=s;var a=Math.min;function o(l,u){return l-u}function s(l,u){var c=l.length,f=l.length-u.length;if(f)return f;switch(c){case 0:return 0;case 1:return l[0]-u[0];case 2:return l[0]+l[1]-u[0]-u[1]||a(l[0],l[1])-a(u[0],u[1]);case 3:var h=l[0]+l[1],d=u[0]+u[1];if(f=h+l[2]-(d+u[2]),f)return f;var v=a(l[0],l[1]),x=a(u[0],u[1]);return a(v,l[2])-a(x,u[2])||a(v+l[2],h)-a(x+u[2],d);case 4:var b=l[0],p=l[1],E=l[2],k=l[3],A=u[0],L=u[1],_=u[2],C=u[3];return b+p+E+k-(A+L+_+C)||a(b,p,E,k)-a(A,L,_,C,A)||a(b+p,b+E,b+k,p+E,p+k,E+k)-a(A+L,A+_,A+C,L+_,L+C,_+C)||a(b+p+E,b+p+k,b+E+k,p+E+k)-a(A+L+_,A+L+C,A+_+C,L+_+C);default:for(var M=l.slice().sort(o),g=u.slice().sort(o),P=0;Po[l][0]&&(l=u);return sl?[[l],[s]]:[[s]]}},4750:function(i,a,o){"use strict";i.exports=l;var s=o(3090);function l(u){var c=s(u),f=c.length;if(f<=2)return[];for(var h=new Array(f),d=c[f-1],v=0;v=d[A]&&(k+=1);p[E]=k}}return h}function f(h,d){try{return s(h,!0)}catch(p){var v=l(h);if(v.length<=d)return[];var x=u(h,v),b=s(x,!0);return c(b,v)}}},4769:function(i){"use strict";function a(s,l,u,c,f,h){var d=6*f*f-6*f,v=3*f*f-4*f+1,x=-6*f*f+6*f,b=3*f*f-2*f;if(s.length){h||(h=new Array(s.length));for(var p=s.length-1;p>=0;--p)h[p]=d*s[p]+v*l[p]+x*u[p]+b*c[p];return h}return d*s+v*l+x*u[p]+b*c}function o(s,l,u,c,f,h){var d=f-1,v=f*f,x=d*d,b=(1+2*f)*x,p=f*x,E=v*(3-2*f),k=v*d;if(s.length){h||(h=new Array(s.length));for(var A=s.length-1;A>=0;--A)h[A]=b*s[A]+p*l[A]+E*u[A]+k*c[A];return h}return b*s+p*l+E*u+k*c}i.exports=o,i.exports.derivative=a},7642:function(i,a,o){"use strict";var s=o(8954),l=o(1682);i.exports=h;function u(d,v){this.point=d,this.index=v}function c(d,v){for(var x=d.point,b=v.point,p=x.length,E=0;E=2)return!1;H[G]=N}return!0}):V=V.filter(function(H){for(var X=0;X<=b;++X){var G=P[H[X]];if(G<0)return!1;H[X]=G}return!0}),b&1)for(var k=0;k>>31},i.exports.exponent=function(E){var k=i.exports.hi(E);return(k<<1>>>21)-1023},i.exports.fraction=function(E){var k=i.exports.lo(E),A=i.exports.hi(E),L=A&(1<<20)-1;return A&2146435072&&(L+=1048576),[k,L]},i.exports.denormalized=function(E){var k=i.exports.hi(E);return!(k&2146435072)}},1338:function(i){"use strict";function a(l,u,c){var f=l[c]|0;if(f<=0)return[];var h=new Array(f),d;if(c===l.length-1)for(d=0;d0)return o(l|0,u);break;case"object":if(typeof l.length=="number")return a(l,u,0);break}return[]}i.exports=s},3134:function(i,a,o){"use strict";i.exports=l;var s=o(1682);function l(u,c){var f=u.length;if(typeof c!="number"){c=0;for(var h=0;h=b-1)for(var C=k.length-1,g=v-x[b-1],M=0;M=b-1)for(var _=k.length-1,C=v-x[b-1],M=0;M=0;--b)if(v[--x])return!1;return!0},f.jump=function(v){var x=this.lastT(),b=this.dimension;if(!(v0;--M)p.push(u(L[M-1],_[M-1],arguments[M])),E.push(0)}},f.push=function(v){var x=this.lastT(),b=this.dimension;if(!(v1e-6?1/A:0;this._time.push(v);for(var g=b;g>0;--g){var P=u(_[g-1],C[g-1],arguments[g]);p.push(P),E.push((P-p[k++])*M)}}},f.set=function(v){var x=this.dimension;if(!(v0;--L)b.push(u(k[L-1],A[L-1],arguments[L])),p.push(0)}},f.move=function(v){var x=this.lastT(),b=this.dimension;if(!(v<=x||arguments.length!==b+1)){var p=this._state,E=this._velocity,k=p.length-this.dimension,A=this.bounds,L=A[0],_=A[1],C=v-x,M=C>1e-6?1/C:0;this._time.push(v);for(var g=b;g>0;--g){var P=arguments[g];p.push(u(L[g-1],_[g-1],p[k++]+P)),E.push(P*M)}}},f.idle=function(v){var x=this.lastT();if(!(v=0;--M)p.push(u(L[M],_[M],p[k]+C*E[k])),E.push(0),k+=1}};function h(v){for(var x=new Array(v),b=0;b=0;--q){var g=P[q];T[q]<=0?P[q]=new s(g._color,g.key,g.value,P[q+1],g.right,g._count+1):P[q]=new s(g._color,g.key,g.value,g.left,P[q+1],g._count+1)}for(var q=P.length-1;q>1;--q){var V=P[q-1],g=P[q];if(V._color===o||g._color===o)break;var H=P[q-2];if(H.left===V)if(V.left===g){var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.left=V.right,V._color=o,V.right=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.left===H?G.left=V:G.right=V}break}}else{var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(V.right=g.left,H._color=a,H.left=g.right,g._color=o,g.left=V,g.right=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.left===H?G.left=g:G.right=g}break}}else if(V.right===g){var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.right=V.left,V._color=o,V.left=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.right===H?G.right=V:G.left=V}break}}else{var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(V.left=g.right,H._color=a,H.right=g.left,g._color=o,g.right=V,g.left=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.right===H?G.right=g:G.left=g}break}}}return P[0]._color=o,new f(M,P[0])};function d(_,C){if(C.left){var M=d(_,C.left);if(M)return M}var M=_(C.key,C.value);if(M)return M;if(C.right)return d(_,C.right)}function v(_,C,M,g){var P=C(_,g.key);if(P<=0){if(g.left){var T=v(_,C,M,g.left);if(T)return T}var T=M(g.key,g.value);if(T)return T}if(g.right)return v(_,C,M,g.right)}function x(_,C,M,g,P){var T=M(_,P.key),F=M(C,P.key),q;if(T<=0&&(P.left&&(q=x(_,C,M,g,P.left),q)||F>0&&(q=g(P.key,P.value),q)))return q;if(F>0&&P.right)return x(_,C,M,g,P.right)}h.forEach=function(C,M,g){if(this.root)switch(arguments.length){case 1:return d(C,this.root);case 2:return v(M,this._compare,C,this.root);case 3:return this._compare(M,g)>=0?void 0:x(M,g,this._compare,C,this.root)}},Object.defineProperty(h,"begin",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.left;return new b(this,_)}}),Object.defineProperty(h,"end",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.right;return new b(this,_)}}),h.at=function(_){if(_<0)return new b(this,[]);for(var C=this.root,M=[];;){if(M.push(C),C.left){if(_=C.right._count)break;C=C.right}else break}return new b(this,[])},h.ge=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<=0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.gt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.lt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.le=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>=0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.find=function(_){for(var C=this._compare,M=this.root,g=[];M;){var P=C(_,M.key);if(g.push(M),P===0)return new b(this,g);P<=0?M=M.left:M=M.right}return new b(this,[])},h.remove=function(_){var C=this.find(_);return C?C.remove():this},h.get=function(_){for(var C=this._compare,M=this.root;M;){var g=C(_,M.key);if(g===0)return M.value;g<=0?M=M.left:M=M.right}};function b(_,C){this.tree=_,this._stack=C}var p=b.prototype;Object.defineProperty(p,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(p,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),p.clone=function(){return new b(this.tree,this._stack.slice())};function E(_,C){_.key=C.key,_.value=C.value,_.left=C.left,_.right=C.right,_._color=C._color,_._count=C._count}function k(_){for(var C,M,g,P,T=_.length-1;T>=0;--T){if(C=_[T],T===0){C._color=o;return}if(M=_[T-1],M.left===C){if(g=M.right,g.right&&g.right._color===a){if(g=M.right=l(g),P=g.right=l(g.right),M.right=g.left,g.left=M,g.right=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g;return}else if(g.left&&g.left._color===a){if(g=M.right=l(g),P=g.left=l(g.left),M.right=P.left,g.left=P.right,P.left=M,P.right=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.left===M?F.left=P:F.right=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.right=u(a,g);return}else{M.right=u(a,g);continue}else{if(g=l(g),M.right=g.left,g.left=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}else{if(g=M.left,g.left&&g.left._color===a){if(g=M.left=l(g),P=g.left=l(g.left),M.left=g.right,g.right=M,g.left=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g;return}else if(g.right&&g.right._color===a){if(g=M.left=l(g),P=g.right=l(g.right),M.left=P.right,g.right=P.left,P.right=M,P.left=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.right===M?F.right=P:F.left=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.left=u(a,g);return}else{M.left=u(a,g);continue}else{if(g=l(g),M.left=g.right,g.right=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}}}p.remove=function(){var _=this._stack;if(_.length===0)return this.tree;var C=new Array(_.length),M=_[_.length-1];C[C.length-1]=new s(M._color,M.key,M.value,M.left,M.right,M._count);for(var g=_.length-2;g>=0;--g){var M=_[g];M.left===_[g+1]?C[g]=new s(M._color,M.key,M.value,C[g+1],M.right,M._count):C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count)}if(M=C[C.length-1],M.left&&M.right){var P=C.length;for(M=M.left;M.right;)C.push(M),M=M.right;var T=C[P-1];C.push(new s(M._color,T.key,T.value,M.left,M.right,M._count)),C[P-1].key=M.key,C[P-1].value=M.value;for(var g=C.length-2;g>=P;--g)M=C[g],C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count);C[P-1].left=C[P]}if(M=C[C.length-1],M._color===a){var F=C[C.length-2];F.left===M?F.left=null:F.right===M&&(F.right=null),C.pop();for(var g=0;g0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(p,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(p,"index",{get:function(){var _=0,C=this._stack;if(C.length===0){var M=this.tree.root;return M?M._count:0}else C[C.length-1].left&&(_=C[C.length-1].left._count);for(var g=C.length-2;g>=0;--g)C[g+1]===C[g].right&&(++_,C[g].left&&(_+=C[g].left._count));return _},enumerable:!0}),p.next=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.right)for(C=C.right;C;)_.push(C),C=C.left;else for(_.pop();_.length>0&&_[_.length-1].right===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasNext",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].right)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].left===_[C])return!0;return!1}}),p.update=function(_){var C=this._stack;if(C.length===0)throw new Error("Can't update empty node!");var M=new Array(C.length),g=C[C.length-1];M[M.length-1]=new s(g._color,g.key,_,g.left,g.right,g._count);for(var P=C.length-2;P>=0;--P)g=C[P],g.left===C[P+1]?M[P]=new s(g._color,g.key,g.value,M[P+1],g.right,g._count):M[P]=new s(g._color,g.key,g.value,g.left,M[P+1],g._count);return new f(this.tree._compare,M[0])},p.prev=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.left)for(C=C.left;C;)_.push(C),C=C.right;else for(_.pop();_.length>0&&_[_.length-1].left===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasPrev",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].left)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].right===_[C])return!0;return!1}});function A(_,C){return _C?1:0}function L(_){return new f(_||A,null)}},3837:function(i,a,o){"use strict";i.exports=q;var s=o(4935),l=o(501),u=o(5304),c=o(6429),f=o(6444),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=ArrayBuffer,v=DataView;function x(V){return d.isView(V)&&!(V instanceof v)}function b(V){return Array.isArray(V)||x(V)}function p(V,H){return V[0]=H[0],V[1]=H[1],V[2]=H[2],V}function E(V){this.gl=V,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(V)}var k=E.prototype;k.update=function(V){V=V||{};function H(Ae,ze,Ce){if(Ce in V){var me=V[Ce],Re=this[Ce],ce;(Ae?b(me)&&b(me[0]):b(me))?this[Ce]=ce=[ze(me[0]),ze(me[1]),ze(me[2])]:this[Ce]=ce=[ze(me),ze(me),ze(me)];for(var Ge=0;Ge<3;++Ge)if(ce[Ge]!==Re[Ge])return!0}return!1}var X=H.bind(this,!1,Number),G=H.bind(this,!1,Boolean),N=H.bind(this,!1,String),W=H.bind(this,!0,function(Ae){if(b(Ae)){if(Ae.length===3)return[+Ae[0],+Ae[1],+Ae[2],1];if(Ae.length===4)return[+Ae[0],+Ae[1],+Ae[2],+Ae[3]]}return[0,0,0,1]}),re,ae=!1,_e=!1;if("bounds"in V)for(var Me=V.bounds,ke=0;ke<2;++ke)for(var ge=0;ge<3;++ge)Me[ke][ge]!==this.bounds[ke][ge]&&(_e=!0),this.bounds[ke][ge]=Me[ke][ge];if("ticks"in V){re=V.ticks,ae=!0,this.autoTicks=!1;for(var ke=0;ke<3;++ke)this.tickSpacing[ke]=0}else X("tickSpacing")&&(this.autoTicks=!0,_e=!0);if(this._firstInit&&("ticks"in V||"tickSpacing"in V||(this.autoTicks=!0),_e=!0,ae=!0,this._firstInit=!1),_e&&this.autoTicks&&(re=f.create(this.bounds,this.tickSpacing),ae=!0),ae){for(var ke=0;ke<3;++ke)re[ke].sort(function(ze,Ce){return ze.x-Ce.x});f.equal(re,this.ticks)?ae=!1:this.ticks=re}G("tickEnable"),N("tickFont")&&(ae=!0),N("tickFontStyle")&&(ae=!0),N("tickFontWeight")&&(ae=!0),N("tickFontVariant")&&(ae=!0),X("tickSize"),X("tickAngle"),X("tickPad"),W("tickColor");var ie=N("labels");N("labelFont")&&(ie=!0),N("labelFontStyle")&&(ie=!0),N("labelFontWeight")&&(ie=!0),N("labelFontVariant")&&(ie=!0),G("labelEnable"),X("labelSize"),X("labelPad"),W("labelColor"),G("lineEnable"),G("lineMirror"),X("lineWidth"),W("lineColor"),G("lineTickEnable"),G("lineTickMirror"),X("lineTickLength"),X("lineTickWidth"),W("lineTickColor"),G("gridEnable"),X("gridWidth"),W("gridColor"),G("zeroEnable"),W("zeroLineColor"),X("zeroLineWidth"),G("backgroundEnable"),W("backgroundColor");var Te=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],Ee=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(ie||ae)&&this._text.update(this.bounds,this.labels,Te,this.ticks,Ee):this._text=s(this.gl,this.bounds,this.labels,Te,this.ticks,Ee),this._lines&&ae&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=l(this.gl,this.bounds,this.ticks))};function A(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var L=[new A,new A,new A];function _(V,H,X,G,N){for(var W=V.primalOffset,re=V.primalMinor,ae=V.mirrorOffset,_e=V.mirrorMinor,Me=G[H],ke=0;ke<3;++ke)if(H!==ke){var ge=W,ie=ae,Te=re,Ee=_e;Me&1<0?(Te[ke]=-1,Ee[ke]=0):(Te[ke]=0,Ee[ke]=1)}}var C=[0,0,0],M={model:h,view:h,projection:h,_ortho:!1};k.isOpaque=function(){return!0},k.isTransparent=function(){return!1},k.drawTransparent=function(V){};var g=0,P=[0,0,0],T=[0,0,0],F=[0,0,0];k.draw=function(V){V=V||M;for(var Ce=this.gl,H=V.model||h,X=V.view||h,G=V.projection||h,N=this.bounds,W=V._ortho||!1,re=c(H,X,G,N,W),ae=re.cubeEdges,_e=re.axis,Me=X[12],ke=X[13],ge=X[14],ie=X[15],Te=W?2:1,Ee=Te*this.pixelRatio*(G[3]*Me+G[7]*ke+G[11]*ge+G[15]*ie)/Ce.drawingBufferHeight,Ae=0;Ae<3;++Ae)this.lastCubeProps.cubeEdges[Ae]=ae[Ae],this.lastCubeProps.axis[Ae]=_e[Ae];for(var ze=L,Ae=0;Ae<3;++Ae)_(L[Ae],Ae,this.bounds,ae,_e);for(var Ce=this.gl,me=C,Ae=0;Ae<3;++Ae)this.backgroundEnable[Ae]?me[Ae]=_e[Ae]:me[Ae]=0;this._background.draw(H,X,G,N,me,this.backgroundColor),this._lines.bind(H,X,G,this);for(var Ae=0;Ae<3;++Ae){var Re=[0,0,0];_e[Ae]>0?Re[Ae]=N[1][Ae]:Re[Ae]=N[0][Ae];for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.gridEnable[Ge]&&this._lines.drawGrid(Ge,nt,this.bounds,Re,this.gridColor[Ge],this.gridWidth[Ge]*this.pixelRatio)}for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.zeroEnable[nt]&&Math.min(N[0][nt],N[1][nt])<=0&&Math.max(N[0][nt],N[1][nt])>=0&&this._lines.drawZero(Ge,nt,this.bounds,Re,this.zeroLineColor[nt],this.zeroLineWidth[nt]*this.pixelRatio)}}for(var Ae=0;Ae<3;++Ae){this.lineEnable[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].primalOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio),this.lineMirror[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].mirrorOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio);for(var ct=p(P,ze[Ae].primalMinor),qt=p(T,ze[Ae].mirrorMinor),rt=this.lineTickLength,ce=0;ce<3;++ce){var ot=Ee/H[5*ce];ct[ce]*=rt[ce]*ot,qt[ce]*=rt[ce]*ot}this.lineTickEnable[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].primalOffset,ct,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio),this.lineTickMirror[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].mirrorOffset,qt,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio)}this._lines.unbind(),this._text.bind(H,X,G,this.pixelRatio);var Rt,kt=.5,Ct,Yt;function xr(St){Yt=[0,0,0],Yt[St]=1}function er(St,Et,dt){var Ht=(St+1)%3,$t=(St+2)%3,fr=Et[Ht],_r=Et[$t],Br=dt[Ht],Or=dt[$t];if(fr>0&&Or>0){xr(Ht);return}else if(fr>0&&Or<0){xr(Ht);return}else if(fr<0&&Or>0){xr(Ht);return}else if(fr<0&&Or<0){xr(Ht);return}else if(_r>0&&Br>0){xr($t);return}else if(_r>0&&Br<0){xr($t);return}else if(_r<0&&Br>0){xr($t);return}else if(_r<0&&Br<0){xr($t);return}}for(var Ae=0;Ae<3;++Ae){for(var Ke=ze[Ae].primalMinor,xt=ze[Ae].mirrorMinor,bt=p(F,ze[Ae].primalOffset),ce=0;ce<3;++ce)this.lineTickEnable[Ae]&&(bt[ce]+=Ee*Ke[ce]*Math.max(this.lineTickLength[ce],0)/H[5*ce]);var Lt=[0,0,0];if(Lt[Ae]=1,this.tickEnable[Ae]){this.tickAngle[Ae]===-3600?(this.tickAngle[Ae]=0,this.tickAlign[Ae]="auto"):this.tickAlign[Ae]=-1,Ct=1,Rt=[this.tickAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]),Yt=[0,0,0],er(Ae,Ke,xt);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.tickPad[ce]/H[5*ce];this._text.drawTicks(Ae,this.tickSize[Ae],this.tickAngle[Ae],bt,this.tickColor[Ae],Lt,Yt,Rt)}if(this.labelEnable[Ae]){Ct=0,Yt=[0,0,0],this.labels[Ae].length>4&&(xr(Ae),Ct=1),Rt=[this.labelAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.labelPad[ce]/H[5*ce];bt[Ae]+=.5*(N[0][Ae]+N[1][Ae]),this._text.drawLabel(Ae,this.labelSize[Ae],this.labelAngle[Ae],bt,this.labelColor[Ae],[0,0,0],Yt,Rt)}}this._text.unbind()},k.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function q(V,H){var X=new E(V);return X.update(H),X}},5304:function(i,a,o){"use strict";i.exports=h;var s=o(2762),l=o(8116),u=o(1879).bg;function c(d,v,x,b){this.gl=d,this.buffer=v,this.vao=x,this.shader=b}var f=c.prototype;f.draw=function(d,v,x,b,p,E){for(var k=!1,A=0;A<3;++A)k=k||p[A];if(k){var L=this.gl;L.enable(L.POLYGON_OFFSET_FILL),L.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:d,view:v,projection:x,bounds:b,enable:p,colors:E},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),L.disable(L.POLYGON_OFFSET_FILL)}},f.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function h(d){for(var v=[],x=[],b=0,p=0;p<3;++p)for(var E=(p+1)%3,k=(p+2)%3,A=[0,0,0],L=[0,0,0],_=-1;_<=1;_+=2){x.push(b,b+2,b+1,b+1,b+2,b+3),A[p]=_,L[p]=_;for(var C=-1;C<=1;C+=2){A[E]=C;for(var M=-1;M<=1;M+=2)A[k]=M,v.push(A[0],A[1],A[2],L[0],L[1],L[2]),b+=1}var g=E;E=k,k=g}var P=s(d,new Float32Array(v)),T=s(d,new Uint16Array(x),d.ELEMENT_ARRAY_BUFFER),F=l(d,[{buffer:P,type:d.FLOAT,size:3,offset:0,stride:24},{buffer:P,type:d.FLOAT,size:3,offset:12,stride:24}],T),q=u(d);return q.attributes.position.location=0,q.attributes.normal.location=1,new c(d,P,F,q)}},6429:function(i,a,o){"use strict";i.exports=_;var s=o(8828),l=o(6760),u=o(5202),c=o(3250),f=new Array(16),h=new Array(8),d=new Array(8),v=new Array(3),x=[0,0,0];(function(){for(var C=0;C<8;++C)h[C]=[1,1,1,1],d[C]=[1,1,1]})();function b(C,M,g){for(var P=0;P<4;++P){C[P]=g[12+P];for(var T=0;T<3;++T)C[P]+=M[T]*g[4*T+P]}}var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function E(C){for(var M=0;M_e&&(X|=1<_e){X|=1<d[q][1])&&(ze=q);for(var Ce=-1,q=0;q<3;++q){var me=ze^1<d[Re][0]&&(Re=me)}}var ce=k;ce[0]=ce[1]=ce[2]=0,ce[s.log2(Ce^ze)]=ze&Ce,ce[s.log2(ze^Re)]=zeℜvar Ge=Re^7;Ge===X||Ge===Ae?(Ge=Ce^7,ce[s.log2(Re^Ge)]=Ge&Re):ce[s.log2(Ce^Ge)]=Ge&Ce;for(var nt=A,ct=X,W=0;W<3;++W)ct&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +} +`]),h=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);a.Q=function(x){return l(x,f,h,null,[{name:"position",type:"vec3"}])};var d=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * (view * (model * vec4(nPosition, 1.0))); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +} +`]),v=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);a.bg=function(x){return l(x,d,v,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(i,a,o){"use strict";i.exports=E;var s=o(2762),l=o(8116),u=o(4359),c=o(1879).Q,f=window||process.global||{},h=f.__TEXT_CACHE||{};f.__TEXT_CACHE={};var d=3;function v(k,A,L,_){this.gl=k,this.shader=A,this.buffer=L,this.vao=_,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var x=v.prototype,b=[0,0];x.bind=function(k,A,L,_){this.vao.bind(),this.shader.bind();var C=this.shader.uniforms;C.model=k,C.view=A,C.projection=L,C.pixelScale=_,b[0]=this.gl.drawingBufferWidth,b[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=b},x.unbind=function(){this.vao.unbind()},x.update=function(k,A,L,_,C){var M=[];function g(W,re,ae,_e,Me,ke){var ge=[ae.style,ae.weight,ae.variant,ae.family].join("_"),ie=h[ge];ie||(ie=h[ge]={});var Te=ie[re];Te||(Te=ie[re]=p(re,{triangles:!0,font:ae.family,fontStyle:ae.style,fontWeight:ae.weight,fontVariant:ae.variant,textAlign:"center",textBaseline:"middle",lineSpacing:Me,styletags:ke}));for(var Ee=(_e||12)/12,Ae=Te.positions,ze=Te.cells,Ce=0,me=ze.length;Ce=0;--ce){var Ge=Ae[Re[ce]];M.push(Ee*Ge[0],-Ee*Ge[1],W)}}for(var P=[0,0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0],V=1.25,H={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},X=0;X<3;++X){F[X]=M.length/d|0,g(.5*(k[0][X]+k[1][X]),A[X],L[X],12,V,H),q[X]=(M.length/d|0)-F[X],P[X]=M.length/d|0;for(var G=0;G<_[X].length;++G)if(_[X][G].text){var N={family:_[X][G].font||C[X].family,style:C[X].fontStyle||C[X].style,weight:C[X].fontWeight||C[X].weight,variant:C[X].fontVariant||C[X].variant};g(_[X][G].x,_[X][G].text,N,_[X][G].fontSize||12,V,H)}T[X]=(M.length/d|0)-P[X]}this.buffer.update(M),this.tickOffset=P,this.tickCount=T,this.labelOffset=F,this.labelCount=q},x.drawTicks=function(k,A,L,_,C,M,g,P){this.tickCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.tickCount[k],this.tickOffset[k]))},x.drawLabel=function(k,A,L,_,C,M,g,P){this.labelCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.labelCount[k],this.labelOffset[k]))},x.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()};function p(k,A){try{return u(k,A)}catch(L){return console.warn('error vectorizing text:"'+k+'" error:',L),{cells:[],positions:[]}}}function E(k,A,L,_,C,M){var g=s(k),P=l(k,[{buffer:g,size:3}]),T=c(k);T.attributes.position.location=0;var F=new v(k,T,g,P);return F.update(A,L,_,C,M),F}},6444:function(i,a){"use strict";a.create=s,a.equal=l;function o(u,c){var f=u+"",h=f.indexOf("."),d=0;h>=0&&(d=f.length-h-1);var v=Math.pow(10,d),x=Math.round(u*c*v),b=x+"";if(b.indexOf("e")>=0)return b;var p=x/v,E=x%v;x<0?(p=-Math.ceil(p)|0,E=-E|0):(p=Math.floor(p)|0,E=E|0);var k=""+p;if(x<0&&(k="-"+k),d){for(var A=""+E;A.length=u[0][h];--x)d.push({x:x*c[h],text:o(c[h],x)});f.push(d)}return f}function l(u,c){for(var f=0;f<3;++f){if(u[f].length!==c[f].length)return!1;for(var h=0;hk)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return p.bufferSubData(E,_,L),k}function v(p,E){for(var k=s.malloc(p.length,E),A=p.length,L=0;L=0;--A){if(E[A]!==k)return!1;k*=p[A]}return!0}h.update=function(p,E){if(typeof E!="number"&&(E=-1),this.bind(),typeof p=="object"&&typeof p.shape!="undefined"){var k=p.dtype;if(c.indexOf(k)<0&&(k="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var A=gl.getExtension("OES_element_index_uint");A&&k!=="uint16"?k="uint32":k="uint16"}if(k===p.dtype&&x(p.shape,p.stride))p.offset===0&&p.data.length===p.shape[0]?this.length=d(this.gl,this.type,this.length,this.usage,p.data,E):this.length=d(this.gl,this.type,this.length,this.usage,p.data.subarray(p.offset,p.shape[0]),E);else{var L=s.malloc(p.size,k),_=u(L,p.shape);l.assign(_,p),E<0?this.length=d(this.gl,this.type,this.length,this.usage,L,E):this.length=d(this.gl,this.type,this.length,this.usage,L.subarray(0,p.size),E),s.free(L)}}else if(Array.isArray(p)){var C;this.type===this.gl.ELEMENT_ARRAY_BUFFER?C=v(p,"uint16"):C=v(p,"float32"),E<0?this.length=d(this.gl,this.type,this.length,this.usage,C,E):this.length=d(this.gl,this.type,this.length,this.usage,C.subarray(0,p.length),E),s.free(C)}else if(typeof p=="object"&&typeof p.length=="number")this.length=d(this.gl,this.type,this.length,this.usage,p,E);else if(typeof p=="number"||p===void 0){if(E>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");p=p|0,p<=0&&(p=1),this.gl.bufferData(this.type,p|0,this.usage),this.length=p}else throw new Error("gl-buffer: Invalid data type")};function b(p,E,k,A){if(k=k||p.ARRAY_BUFFER,A=A||p.DYNAMIC_DRAW,k!==p.ARRAY_BUFFER&&k!==p.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(A!==p.DYNAMIC_DRAW&&A!==p.STATIC_DRAW&&A!==p.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var L=p.createBuffer(),_=new f(p,k,L,0,A);return _.update(E),_}i.exports=b},6405:function(i,a,o){"use strict";var s=o(2931);i.exports=function(u,c){var f=u.positions,h=u.vectors,d={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return c&&(c[0]=[0,0,0],c[1]=[0,0,0]),d;for(var v=0,x=1/0,b=-1/0,p=1/0,E=-1/0,k=1/0,A=-1/0,L=null,_=null,C=[],M=1/0,g=!1,P=u.coneSizemode==="raw",T=0;Tv&&(v=s.length(q)),T&&!P){var V=2*s.distance(L,F)/(s.length(_)+s.length(q));V?(M=Math.min(M,V),g=!1):g=!0}g||(L=F,_=q),C.push(q)}var H=[x,p,k],X=[b,E,A];c&&(c[0]=H,c[1]=X),v===0&&(v=1);var G=1/v;isFinite(M)||(M=1),d.vectorScale=M;var N=u.coneSize||(P?1:.5);u.absoluteConeSize&&(N=u.absoluteConeSize*G),d.coneScale=N;for(var T=0,W=0;T=1},p.isTransparent=function(){return this.opacity<1},p.pickSlots=1,p.setPickBase=function(C){this.pickId=C};function E(C){for(var M=v({colormap:C,nshades:256,format:"rgba"}),g=new Uint8Array(256*4),P=0;P<256;++P){for(var T=M[P],F=0;F<3;++F)g[4*P+F]=T[F];g[4*P+3]=T[3]*255}return d(g,[256,256,4],[4,0,1])}function k(C){for(var M=C.length,g=new Array(M),P=0;P0){var W=this.triShader;W.bind(),W.uniforms=V,this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},p.drawPick=function(C){C=C||{};for(var M=this.gl,g=C.model||x,P=C.view||x,T=C.projection||x,F=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],q=0;q<3;++q)F[0][q]=Math.max(F[0][q],this.clipBounds[0][q]),F[1][q]=Math.min(F[1][q],this.clipBounds[1][q]);this._model=[].slice.call(g),this._view=[].slice.call(P),this._projection=[].slice.call(T),this._resolution=[M.drawingBufferWidth,M.drawingBufferHeight];var V={model:g,view:P,projection:T,clipBounds:F,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},H=this.pickShader;H.bind(),H.uniforms=V,this.triangleCount>0&&(this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},p.pick=function(C){if(!C||C.id!==this.pickId)return null;var M=C.value[0]+256*C.value[1]+65536*C.value[2],g=this.cells[M],P=this.positions[g[1]].slice(0,3),T={position:P,dataCoordinate:P,index:Math.floor(g[1]/48)};return this.traceType==="cone"?T.index=Math.floor(g[1]/48):this.traceType==="streamtube"&&(T.intensity=this.intensity[g[1]],T.velocity=this.vectors[g[1]].slice(0,3),T.divergence=this.vectors[g[1]][3],T.index=M),T},p.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function A(C,M){var g=s(C,M.meshShader.vertex,M.meshShader.fragment,null,M.meshShader.attributes);return g.attributes.position.location=0,g.attributes.color.location=2,g.attributes.uv.location=3,g.attributes.vector.location=4,g}function L(C,M){var g=s(C,M.pickShader.vertex,M.pickShader.fragment,null,M.pickShader.attributes);return g.attributes.position.location=0,g.attributes.id.location=1,g.attributes.vector.location=4,g}function _(C,M,g){var P=g.shaders;arguments.length===1&&(M=C,C=M.gl);var T=A(C,P),F=L(C,P),q=c(C,d(new Uint8Array([255,255,255,255]),[1,1,4]));q.generateMipmap(),q.minFilter=C.LINEAR_MIPMAP_LINEAR,q.magFilter=C.LINEAR;var V=l(C),H=l(C),X=l(C),G=l(C),N=l(C),W=u(C,[{buffer:V,type:C.FLOAT,size:4},{buffer:N,type:C.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:X,type:C.FLOAT,size:4},{buffer:G,type:C.FLOAT,size:2},{buffer:H,type:C.FLOAT,size:4}]),re=new b(C,q,T,F,V,H,N,X,G,W,g.traceType||"cone");return re.update(M),re}i.exports=_},614:function(i,a,o){var s=o(3236),l=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * (view * conePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(i){i.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(i,a,o){var s=o(737);i.exports=function(u){return s[u]}},9165:function(i,a,o){"use strict";i.exports=b;var s=o(2762),l=o(8116),u=o(3436),c=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function f(p,E,k,A){this.gl=p,this.shader=A,this.buffer=E,this.vao=k,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var h=f.prototype;h.isOpaque=function(){return!this.hasAlpha},h.isTransparent=function(){return this.hasAlpha},h.drawTransparent=h.draw=function(p){var E=this.gl,k=this.shader.uniforms;this.shader.bind();var A=k.view=p.view||c,L=k.projection=p.projection||c;k.model=p.model||c,k.clipBounds=this.clipBounds,k.opacity=this.opacity;var _=A[12],C=A[13],M=A[14],g=A[15],P=p._ortho||!1,T=P?2:1,F=T*this.pixelRatio*(L[3]*_+L[7]*C+L[11]*M+L[15]*g)/E.drawingBufferHeight;this.vao.bind();for(var q=0;q<3;++q)E.lineWidth(this.lineWidth[q]*this.pixelRatio),k.capSize=this.capSize[q]*F,this.lineCount[q]&&E.drawArrays(E.LINES,this.lineOffset[q],this.lineCount[q]);this.vao.unbind()};function d(p,E){for(var k=0;k<3;++k)p[0][k]=Math.min(p[0][k],E[k]),p[1][k]=Math.max(p[1][k],E[k])}var v=function(){for(var p=new Array(3),E=0;E<3;++E){for(var k=[],A=1;A<=2;++A)for(var L=-1;L<=1;L+=2){var _=(A+E)%3,C=[0,0,0];C[_]=L,k.push(C)}p[E]=k}return p}();function x(p,E,k,A){for(var L=v[A],_=0;_0){var V=P.slice();V[M]+=F[1][M],L.push(P[0],P[1],P[2],q[0],q[1],q[2],q[3],0,0,0,V[0],V[1],V[2],q[0],q[1],q[2],q[3],0,0,0),d(this.bounds,V),C+=2+x(L,V,q,M)}}}this.lineCount[M]=C-this.lineOffset[M]}this.buffer.update(L)}},h.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function b(p){var E=p.gl,k=s(E),A=l(E,[{buffer:k,type:E.FLOAT,size:3,offset:0,stride:40},{buffer:k,type:E.FLOAT,size:4,offset:12,stride:40},{buffer:k,type:E.FLOAT,size:3,offset:28,stride:40}]),L=u(E);L.attributes.position.location=0,L.attributes.color.location=1,L.attributes.offset.location=2;var _=new f(E,k,A,L);return _.update(p),_}},3436:function(i,a,o){"use strict";var s=o(3236),l=o(9405),u=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * (view * worldPosition); + fragColor = color; + fragPosition = position; +}`]),c=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(i,a,o){"use strict";var s=o(7766);i.exports=C;var l=null,u,c,f,h;function d(M){var g=M.getParameter(M.FRAMEBUFFER_BINDING),P=M.getParameter(M.RENDERBUFFER_BINDING),T=M.getParameter(M.TEXTURE_BINDING_2D);return[g,P,T]}function v(M,g){M.bindFramebuffer(M.FRAMEBUFFER,g[0]),M.bindRenderbuffer(M.RENDERBUFFER,g[1]),M.bindTexture(M.TEXTURE_2D,g[2])}function x(M,g){var P=M.getParameter(g.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(P+1);for(var T=0;T<=P;++T){for(var F=new Array(P),q=0;q1&&H.drawBuffersWEBGL(l[V]);var re=P.getExtension("WEBGL_depth_texture");re?X?M.depth=p(P,F,q,re.UNSIGNED_INT_24_8_WEBGL,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G&&(M.depth=p(P,F,q,P.UNSIGNED_SHORT,P.DEPTH_COMPONENT,P.DEPTH_ATTACHMENT)):G&&X?M._depth_rb=E(P,F,q,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G?M._depth_rb=E(P,F,q,P.DEPTH_COMPONENT16,P.DEPTH_ATTACHMENT):X&&(M._depth_rb=E(P,F,q,P.STENCIL_INDEX,P.STENCIL_ATTACHMENT));var ae=P.checkFramebufferStatus(P.FRAMEBUFFER);if(ae!==P.FRAMEBUFFER_COMPLETE){M._destroyed=!0,P.bindFramebuffer(P.FRAMEBUFFER,null),P.deleteFramebuffer(M.handle),M.handle=null,M.depth&&(M.depth.dispose(),M.depth=null),M._depth_rb&&(P.deleteRenderbuffer(M._depth_rb),M._depth_rb=null);for(var W=0;WF||P<0||P>F)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");M._shape[0]=g,M._shape[1]=P;for(var q=d(T),V=0;Vq||P<0||P>q)throw new Error("gl-fbo: Parameters are too large for FBO");T=T||{};var V=1;if("color"in T){if(V=Math.max(T.color|0,0),V<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(V>1)if(F){if(V>M.getParameter(F.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+V+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var H=M.UNSIGNED_BYTE,X=M.getExtension("OES_texture_float");if(T.float&&V>0){if(!X)throw new Error("gl-fbo: Context does not support floating point textures");H=M.FLOAT}else T.preferFloat&&V>0&&X&&(H=M.FLOAT);var G=!0;"depth"in T&&(G=!!T.depth);var N=!1;return"stencil"in T&&(N=!!T.stencil),new A(M,g,P,H,V,G,N,F)}},2992:function(i,a,o){var s=o(3387).sprintf,l=o(5171),u=o(1848),c=o(1085);i.exports=f;function f(h,d,v){"use strict";var x=u(d)||"of unknown name (see npm glsl-shader-name)",b="unknown type";v!==void 0&&(b=v===l.FRAGMENT_SHADER?"fragment":"vertex");for(var p=s(`Error compiling %s shader %s: +`,b,x),E=s("%s%s",p,h),k=h.split(` +`),A={},L=0;L max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),h=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];a.createShader=function(d){return l(d,u,c,null,h)},a.createPickShader=function(d){return l(d,u,f,null,h)}},5714:function(i,a,o){"use strict";i.exports=M;var s=o(2762),l=o(8116),u=o(7766),c=new Uint8Array(4),f=new Float32Array(c.buffer);function h(g,P,T,F){return c[0]=F,c[1]=T,c[2]=P,c[3]=g,f[0]}var d=o(2478),v=o(9618),x=o(7319),b=x.createShader,p=x.createPickShader,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function k(g,P){for(var T=0,F=0;F<3;++F){var q=g[F]-P[F];T+=q*q}return Math.sqrt(T)}function A(g){for(var P=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],T=0;T<3;++T)P[0][T]=Math.max(g[0][T],P[0][T]),P[1][T]=Math.min(g[1][T],P[1][T]);return P}function L(g,P,T,F){this.arcLength=g,this.position=P,this.index=T,this.dataCoordinate=F}function _(g,P,T,F,q,V){this.gl=g,this.shader=P,this.pickShader=T,this.buffer=F,this.vao=q,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=V,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var C=_.prototype;C.isTransparent=function(){return this.hasAlpha},C.isOpaque=function(){return!this.hasAlpha},C.pickSlots=1,C.setPickBase=function(g){this.pickId=g},C.drawTransparent=C.draw=function(g){if(this.vertexCount){var P=this.gl,T=this.shader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,clipBounds:A(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.drawPick=function(g){if(this.vertexCount){var P=this.gl,T=this.pickShader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,pickId:this.pickId,clipBounds:A(this.clipBounds),screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.update=function(g){var P,T;this.dirty=!0;var F=!!g.connectGaps;"dashScale"in g&&(this.dashScale=g.dashScale),this.hasAlpha=!1,"opacity"in g&&(this.opacity=+g.opacity,this.opacity<1&&(this.hasAlpha=!0));var q=[],V=[],H=[],X=0,G=0,N=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],W=g.position||g.positions;if(W){var re=g.color||g.colors||[0,0,0,1],ae=g.lineWidth||1,_e=!1;e:for(P=1;P0){for(var ge=0;ge<24;++ge)q.push(q[q.length-12]);G+=2,_e=!0}continue e}N[0][T]=Math.min(N[0][T],Me[T],ke[T]),N[1][T]=Math.max(N[1][T],Me[T],ke[T])}var ie,Te;Array.isArray(re[0])?(ie=re.length>P-1?re[P-1]:re.length>0?re[re.length-1]:[0,0,0,1],Te=re.length>P?re[P]:re.length>0?re[re.length-1]:[0,0,0,1]):ie=Te=re,ie.length===3&&(ie=[ie[0],ie[1],ie[2],1]),Te.length===3&&(Te=[Te[0],Te[1],Te[2],1]),!this.hasAlpha&&ie[3]<1&&(this.hasAlpha=!0);var Ee;Array.isArray(ae)?Ee=ae.length>P-1?ae[P-1]:ae.length>0?ae[ae.length-1]:[0,0,0,1]:Ee=ae;var Ae=X;if(X+=k(Me,ke),_e){for(T=0;T<2;++T)q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3]);G+=2,_e=!1}q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3],Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,-Ee,ie[0],ie[1],ie[2],ie[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,-Ee,Te[0],Te[1],Te[2],Te[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,Ee,Te[0],Te[1],Te[2],Te[3]),G+=4}}if(this.buffer.update(q),V.push(X),H.push(W[W.length-1].slice()),this.bounds=N,this.vertexCount=G,this.points=H,this.arcLength=V,"dashes"in g){var ze=g.dashes,Ce=ze.slice();for(Ce.unshift(0),P=1;P1.0001)return null;T+=P[L]}return Math.abs(T-1)>.001?null:[_,h(v,P),P]}},840:function(i,a,o){var s=o(3236),l=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * (view * (model * vec4(p, 1.0))); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),c=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_color = color; + f_data = position; + f_uv = uv; +}`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),h=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),d=s([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),v=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_id = id; + f_position = position; +}`]),x=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),b=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),p=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); +}`]),E=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.wireShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.pointShader={vertex:h,fragment:d,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},a.pickShader={vertex:v,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},a.pointPickShader={vertex:b,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},a.contourShader={vertex:p,fragment:E,attributes:[{name:"position",type:"vec3"}]}},7201:function(i,a,o){"use strict";var s=1e-6,l=1e-6,u=o(9405),c=o(2762),f=o(8116),h=o(7766),d=o(8406),v=o(6760),x=o(7608),b=o(9618),p=o(6729),E=o(7765),k=o(1888),A=o(840),L=o(7626),_=A.meshShader,C=A.wireShader,M=A.pointShader,g=A.pickShader,P=A.pointPickShader,T=A.contourShader,F=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function q(ge,ie,Te,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St){this.gl=ge,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=ie,this.dirty=!0,this.triShader=Te,this.lineShader=Ee,this.pointShader=Ae,this.pickShader=ze,this.pointPickShader=Ce,this.contourShader=me,this.trianglePositions=Re,this.triangleColors=Ge,this.triangleNormals=ct,this.triangleUVs=nt,this.triangleIds=ce,this.triangleVAO=qt,this.triangleCount=0,this.lineWidth=1,this.edgePositions=rt,this.edgeColors=Rt,this.edgeUVs=kt,this.edgeIds=ot,this.edgeVAO=Ct,this.edgeCount=0,this.pointPositions=Yt,this.pointColors=er,this.pointUVs=Ke,this.pointSizes=xt,this.pointIds=xr,this.pointVAO=bt,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Lt,this.contourVAO=St,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=F,this._view=F,this._projection=F,this._resolution=[1,1]}var V=q.prototype;V.isOpaque=function(){return!this.hasAlpha},V.isTransparent=function(){return this.hasAlpha},V.pickSlots=1,V.setPickBase=function(ge){this.pickId=ge};function H(ge,ie){if(!ie||!ie.length)return 1;for(var Te=0;Tege&&Te>0){var Ee=(ie[Te][0]-ge)/(ie[Te][0]-ie[Te-1][0]);return ie[Te][1]*(1-Ee)+Ee*ie[Te-1][1]}}return 1}function X(ge,ie){for(var Te=p({colormap:ge,nshades:256,format:"rgba"}),Ee=new Uint8Array(256*4),Ae=0;Ae<256;++Ae){for(var ze=Te[Ae],Ce=0;Ce<3;++Ce)Ee[4*Ae+Ce]=ze[Ce];ie?Ee[4*Ae+3]=255*H(Ae/255,ie):Ee[4*Ae+3]=255*ze[3]}return b(Ee,[256,256,4],[4,0,1])}function G(ge){for(var ie=ge.length,Te=new Array(ie),Ee=0;Ee0){var ct=this.triShader;ct.bind(),ct.uniforms=me,this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var ct=this.lineShader;ct.bind(),ct.uniforms=me,this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var ct=this.pointShader;ct.bind(),ct.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var ct=this.contourShader;ct.bind(),ct.uniforms=me,this.contourVAO.bind(),ie.drawArrays(ie.LINES,0,this.contourCount),this.contourVAO.unbind()}},V.drawPick=function(ge){ge=ge||{};for(var ie=this.gl,Te=ge.model||F,Ee=ge.view||F,Ae=ge.projection||F,ze=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],Ce=0;Ce<3;++Ce)ze[0][Ce]=Math.max(ze[0][Ce],this.clipBounds[0][Ce]),ze[1][Ce]=Math.min(ze[1][Ce],this.clipBounds[1][Ce]);this._model=[].slice.call(Te),this._view=[].slice.call(Ee),this._projection=[].slice.call(Ae),this._resolution=[ie.drawingBufferWidth,ie.drawingBufferHeight];var me={model:Te,view:Ee,projection:Ae,clipBounds:ze,pickId:this.pickId/255},Re=this.pickShader;if(Re.bind(),Re.uniforms=me,this.triangleCount>0&&(this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var Re=this.pointPickShader;Re.bind(),Re.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}},V.pick=function(ge){if(!ge||ge.id!==this.pickId)return null;for(var ie=ge.value[0]+256*ge.value[1]+65536*ge.value[2],Te=this.cells[ie],Ee=this.positions,Ae=new Array(Te.length),ze=0;zeMath.abs(g))p.rotate(F,0,0,-M*P*Math.PI*_.rotateSpeed/window.innerWidth);else if(!_._ortho){var q=-_.zoomSpeed*T*g/window.innerHeight*(F-p.lastT())/20;p.pan(F,0,0,k*(Math.exp(q)-1))}}},!0)},_.enableMouseListeners(),_}},799:function(i,a,o){var s=o(3236),l=o(9405),u=s([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),c=s([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec2"}])}},4100:function(i,a,o){"use strict";var s=o(4437),l=o(3837),u=o(5445),c=o(4449),f=o(3589),h=o(2260),d=o(7169),v=o(351),x=o(4772),b=o(4040),p=o(799),E=o(9216)({tablet:!0,featureDetect:!0});i.exports={createScene:C,createCamera:s};function k(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function A(g,P){var T=null;try{T=g.getContext("webgl",P),T||(T=g.getContext("experimental-webgl",P))}catch(F){return null}return T}function L(g){var P=Math.round(Math.log(Math.abs(g))/Math.log(10));if(P<0){var T=Math.round(Math.pow(10,-P));return Math.ceil(g*T)/T}else if(P>0){var T=Math.round(Math.pow(10,P));return Math.ceil(g/T)*T}return Math.ceil(g)}function _(g){return typeof g=="boolean"?g:!0}function C(g){g=g||{},g.camera=g.camera||{};var P=g.canvas;if(!P)if(P=document.createElement("canvas"),g.container){var T=g.container;T.appendChild(P)}else document.body.appendChild(P);var F=g.gl;if(F||(g.glOptions&&(E=!!g.glOptions.preserveDrawingBuffer),F=A(P,g.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:E})),!F)throw new Error("webgl not supported");var q=g.bounds||[[-10,-10,-10],[10,10,10]],V=new k,H=h(F,F.drawingBufferWidth,F.drawingBufferHeight,{preferFloat:!E}),X=p(F),G=g.cameraObject&&g.cameraObject._ortho===!0||g.camera.projection&&g.camera.projection.type==="orthographic"||!1,N={eye:g.camera.eye||[2,0,0],center:g.camera.center||[0,0,0],up:g.camera.up||[0,1,0],zoomMin:g.camera.zoomMax||.1,zoomMax:g.camera.zoomMin||100,mode:g.camera.mode||"turntable",_ortho:G},W=g.axes||{},re=l(F,W);re.enable=!W.disable;var ae=g.spikes||{},_e=c(F,ae),Me=[],ke=[],ge=[],ie=[],Te=!0,Ce=!0,Ee=new Array(16),Ae=new Array(16),ze={view:null,projection:Ee,model:Ae,_ortho:!1},Ce=!0,me=[F.drawingBufferWidth,F.drawingBufferHeight],Re=g.cameraObject||s(P,N),ce={gl:F,contextLost:!1,pixelRatio:g.pixelRatio||1,canvas:P,selection:V,camera:Re,axes:re,axesPixels:null,spikes:_e,bounds:q,objects:Me,shape:me,aspect:g.aspectRatio||[1,1,1],pickRadius:g.pickRadius||10,zNear:g.zNear||.01,zFar:g.zFar||1e3,fovy:g.fovy||Math.PI/4,clearColor:g.clearColor||[0,0,0,0],autoResize:_(g.autoResize),autoBounds:_(g.autoBounds),autoScale:!!g.autoScale,autoCenter:_(g.autoCenter),clipToBounds:_(g.clipToBounds),snapToData:!!g.snapToData,onselect:g.onselect||null,onrender:g.onrender||null,onclick:g.onclick||null,cameraParams:ze,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(Yt){this.aspect[0]=Yt.x,this.aspect[1]=Yt.y,this.aspect[2]=Yt.z,Ce=!0},setBounds:function(Yt,xr){this.bounds[0][Yt]=xr.min,this.bounds[1][Yt]=xr.max},setClearColor:function(Yt){this.clearColor=Yt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},Ge=[F.drawingBufferWidth/ce.pixelRatio|0,F.drawingBufferHeight/ce.pixelRatio|0];function nt(){if(!ce._stopped&&ce.autoResize){var Yt=P.parentNode,xr=1,er=1;Yt&&Yt!==document.body?(xr=Yt.clientWidth,er=Yt.clientHeight):(xr=window.innerWidth,er=window.innerHeight);var Ke=Math.ceil(xr*ce.pixelRatio)|0,xt=Math.ceil(er*ce.pixelRatio)|0;if(Ke!==P.width||xt!==P.height){P.width=Ke,P.height=xt;var bt=P.style;bt.position=bt.position||"absolute",bt.left="0px",bt.top="0px",bt.width=xr+"px",bt.height=er+"px",Te=!0}}}ce.autoResize&&nt(),window.addEventListener("resize",nt);function ct(){for(var Yt=Me.length,xr=ie.length,er=0;er0&&ge[xr-1]===0;)ge.pop(),ie.pop().dispose()}ce.update=function(Yt){ce._stopped||(Yt=Yt||{},Te=!0,Ce=!0)},ce.add=function(Yt){ce._stopped||(Yt.axes=re,Me.push(Yt),ke.push(-1),Te=!0,Ce=!0,ct())},ce.remove=function(Yt){if(!ce._stopped){var xr=Me.indexOf(Yt);xr<0||(Me.splice(xr,1),ke.pop(),Te=!0,Ce=!0,ct())}},ce.dispose=function(){if(!ce._stopped&&(ce._stopped=!0,window.removeEventListener("resize",nt),P.removeEventListener("webglcontextlost",qt),ce.mouseListener.enabled=!1,!ce.contextLost)){re.dispose(),_e.dispose();for(var Yt=0;YtV.distance)continue;for(var dt=0;dt1e-6?(E=Math.acos(k),A=Math.sin(E),L=Math.sin((1-u)*E)/A,_=Math.sin(u*E)/A):(L=1-u,_=u),o[0]=L*c+_*v,o[1]=L*f+_*x,o[2]=L*h+_*b,o[3]=L*d+_*p,o}},5964:function(i){"use strict";i.exports=function(a){return!a&&a!==0?"":a.toString()}},9366:function(i,a,o){"use strict";var s=o(4359);i.exports=u;var l={};function u(c,f,h){var d=[f.style,f.weight,f.variant,f.family].join("_"),v=l[d];if(v||(v=l[d]={}),c in v)return v[c];var x={textAlign:"center",textBaseline:"middle",lineHeight:1,font:f.family,fontStyle:f.style,fontWeight:f.weight,fontVariant:f.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};x.triangles=!0;var b=s(c,x);x.triangles=!1;var p=s(c,x),E,k;if(h&&h!==1){for(E=0;E max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),c=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),f=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * (view * (model * vec4(position, 1))); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1))); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),d=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),v=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],x={vertex:u,fragment:h,attributes:v},b={vertex:c,fragment:h,attributes:v},p={vertex:f,fragment:h,attributes:v},E={vertex:u,fragment:d,attributes:v},k={vertex:c,fragment:d,attributes:v},A={vertex:f,fragment:d,attributes:v};function L(_,C){var M=s(_,C),g=M.attributes;return g.position.location=0,g.color.location=1,g.glyph.location=2,g.id.location=3,M}a.createPerspective=function(_){return L(_,x)},a.createOrtho=function(_){return L(_,b)},a.createProject=function(_){return L(_,p)},a.createPickPerspective=function(_){return L(_,E)},a.createPickOrtho=function(_){return L(_,k)},a.createPickProject=function(_){return L(_,A)}},8418:function(i,a,o){"use strict";var s=o(5219),l=o(2762),u=o(8116),c=o(1888),f=o(6760),h=o(1283),d=o(9366),v=o(5964),x=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],b=ArrayBuffer,p=DataView;function E(Ae){return b.isView(Ae)&&!(Ae instanceof p)}function k(Ae){return Array.isArray(Ae)||E(Ae)}i.exports=Ee;function A(Ae,ze){var Ce=Ae[0],me=Ae[1],Re=Ae[2],ce=Ae[3];return Ae[0]=ze[0]*Ce+ze[4]*me+ze[8]*Re+ze[12]*ce,Ae[1]=ze[1]*Ce+ze[5]*me+ze[9]*Re+ze[13]*ce,Ae[2]=ze[2]*Ce+ze[6]*me+ze[10]*Re+ze[14]*ce,Ae[3]=ze[3]*Ce+ze[7]*me+ze[11]*Re+ze[15]*ce,Ae}function L(Ae,ze,Ce,me){return A(me,me,Ce),A(me,me,ze),A(me,me,Ae)}function _(Ae,ze){this.index=Ae,this.dataCoordinate=this.position=ze}function C(Ae){return Ae===!0||Ae>1?1:Ae}function M(Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot){this.gl=Ae,this.pixelRatio=1,this.shader=ze,this.orthoShader=Ce,this.projectShader=me,this.pointBuffer=Re,this.colorBuffer=ce,this.glyphBuffer=Ge,this.idBuffer=nt,this.vao=ct,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=qt,this.pickOrthoShader=rt,this.pickProjectShader=ot,this.points=[],this._selectResult=new _(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var g=M.prototype;g.pickSlots=1,g.setPickBase=function(Ae){this.pickId=Ae},g.isTransparent=function(){if(this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&this.projectHasAlpha)return!0;return!1},g.isOpaque=function(){if(!this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&!this.projectHasAlpha)return!0;return!1};var P=[0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0,1],V=[0,0,0,1],H=x.slice(),X=[0,0,0],G=[[0,0,0],[0,0,0]];function N(Ae){return Ae[0]=Ae[1]=Ae[2]=0,Ae}function W(Ae,ze){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[3]=1,Ae}function re(Ae,ze,Ce,me){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[Ce]=me,Ae}function ae(Ae){for(var ze=G,Ce=0;Ce<2;++Ce)for(var me=0;me<3;++me)ze[Ce][me]=Math.max(Math.min(Ae[Ce][me],1e8),-1e8);return ze}function _e(Ae,ze,Ce,me){var Re=ze.axesProject,ce=ze.gl,Ge=Ae.uniforms,nt=Ce.model||x,ct=Ce.view||x,qt=Ce.projection||x,rt=ze.axesBounds,ot=ae(ze.clipBounds),Rt;ze.axes&&ze.axes.lastCubeProps?Rt=ze.axes.lastCubeProps.axis:Rt=[1,1,1],P[0]=2/ce.drawingBufferWidth,P[1]=2/ce.drawingBufferHeight,Ae.bind(),Ge.view=ct,Ge.projection=qt,Ge.screenSize=P,Ge.highlightId=ze.highlightId,Ge.highlightScale=ze.highlightScale,Ge.clipBounds=ot,Ge.pickGroup=ze.pickId/255,Ge.pixelRatio=me;for(var kt=0;kt<3;++kt)if(Re[kt]){Ge.scale=ze.projectScale[kt],Ge.opacity=ze.projectOpacity[kt];for(var Ct=H,Yt=0;Yt<16;++Yt)Ct[Yt]=0;for(var Yt=0;Yt<4;++Yt)Ct[5*Yt]=1;Ct[5*kt]=0,Rt[kt]<0?Ct[12+kt]=rt[0][kt]:Ct[12+kt]=rt[1][kt],f(Ct,nt,Ct),Ge.model=Ct;var xr=(kt+1)%3,er=(kt+2)%3,Ke=N(T),xt=N(F);Ke[xr]=1,xt[er]=1;var bt=L(qt,ct,nt,W(q,Ke)),Lt=L(qt,ct,nt,W(V,xt));if(Math.abs(bt[1])>Math.abs(Lt[1])){var St=bt;bt=Lt,Lt=St,St=Ke,Ke=xt,xt=St;var Et=xr;xr=er,er=Et}bt[0]<0&&(Ke[xr]=-1),Lt[1]>0&&(xt[er]=-1);for(var dt=0,Ht=0,Yt=0;Yt<4;++Yt)dt+=Math.pow(nt[4*xr+Yt],2),Ht+=Math.pow(nt[4*er+Yt],2);Ke[xr]/=Math.sqrt(dt),xt[er]/=Math.sqrt(Ht),Ge.axes[0]=Ke,Ge.axes[1]=xt,Ge.fragClipBounds[0]=re(X,ot[0],kt,-1e8),Ge.fragClipBounds[1]=re(X,ot[1],kt,1e8),ze.vao.bind(),ze.vao.draw(ce.TRIANGLES,ze.vertexCount),ze.lineWidth>0&&(ce.lineWidth(ze.lineWidth*me),ze.vao.draw(ce.LINES,ze.lineVertexCount,ze.vertexCount)),ze.vao.unbind()}}var Me=[-1e8,-1e8,-1e8],ke=[1e8,1e8,1e8],ge=[Me,ke];function ie(Ae,ze,Ce,me,Re,ce,Ge){var nt=Ce.gl;if((ce===Ce.projectHasAlpha||Ge)&&_e(ze,Ce,me,Re),ce===Ce.hasAlpha||Ge){Ae.bind();var ct=Ae.uniforms;ct.model=me.model||x,ct.view=me.view||x,ct.projection=me.projection||x,P[0]=2/nt.drawingBufferWidth,P[1]=2/nt.drawingBufferHeight,ct.screenSize=P,ct.highlightId=Ce.highlightId,ct.highlightScale=Ce.highlightScale,ct.fragClipBounds=ge,ct.clipBounds=Ce.axes.bounds,ct.opacity=Ce.opacity,ct.pickGroup=Ce.pickId/255,ct.pixelRatio=Re,Ce.vao.bind(),Ce.vao.draw(nt.TRIANGLES,Ce.vertexCount),Ce.lineWidth>0&&(nt.lineWidth(Ce.lineWidth*Re),Ce.vao.draw(nt.LINES,Ce.lineVertexCount,Ce.vertexCount)),Ce.vao.unbind()}}g.draw=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!1,!1)},g.drawTransparent=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!0,!1)},g.drawPick=function(Ae){var ze=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;ie(ze,this.pickProjectShader,this,Ae,1,!0,!0)},g.pick=function(Ae){if(!Ae||Ae.id!==this.pickId)return null;var ze=Ae.value[2]+(Ae.value[1]<<8)+(Ae.value[0]<<16);if(ze>=this.pointCount||ze<0)return null;var Ce=this.points[ze],me=this._selectResult;me.index=ze;for(var Re=0;Re<3;++Re)me.position[Re]=me.dataCoordinate[Re]=Ce[Re];return me},g.highlight=function(Ae){if(!Ae)this.highlightId=[1,1,1,1];else{var ze=Ae.index,Ce=ze&255,me=ze>>8&255,Re=ze>>16&255;this.highlightId=[Ce/255,me/255,Re/255,0]}};function Te(Ae,ze,Ce,me){var Re;k(Ae)?ze0){var Nr=0,ut=er,Ne=[0,0,0,1],Ye=[0,0,0,1],Ve=k(Rt)&&k(Rt[0]),Xe=k(Yt)&&k(Yt[0]);e:for(var me=0;me0?1-Ht[0][0]:Vt<0?1+Ht[1][0]:1,ar*=ar>0?1-Ht[0][1]:ar<0?1+Ht[1][1]:1;for(var Qr=[Vt,ar],nn=Et.cells||[],Wi=Et.positions||[],Lt=0;Ltthis.buffer.length){l.free(this.buffer);for(var k=this.buffer=l.mallocUint8(c(E*p*4)),A=0;Ak)for(p=k;pE)for(p=E;p=0){for(var G=X.type.charAt(X.type.length-1)|0,N=new Array(G),W=0;W=0;)re+=1;V[H]=re}var ae=new Array(k.length);function _e(){_.program=c.program(C,_._vref,_._fref,q,V);for(var Me=0;Me=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);f(v,x,M[0],p,g,E,_)}else if(C.indexOf("mat")>=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);h(v,x,M,p,g,E,_)}else throw new s("","Unknown data type for attribute "+_+": "+C);break}}return E}},3327:function(i,a,o){"use strict";var s=o(216),l=o(8866);i.exports=f;function u(h){return function(){return h}}function c(h,d){for(var v=new Array(h),x=0;x4)throw new l("","Invalid data type");switch(re.charAt(0)){case"b":case"i":h["uniform"+ae+"iv"](x[V],H);break;case"v":h["uniform"+ae+"fv"](x[V],H);break;default:throw new l("","Unrecognized data type for vector "+name+": "+re)}}else if(re.indexOf("mat")===0&&re.length===4){if(ae=re.charCodeAt(re.length-1)-48,ae<2||ae>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+re);h["uniformMatrix"+ae+"fv"](x[V],!1,H);break}else throw new l("","Unknown uniform data type for "+name+": "+re)}}}}}function E(C,M){if(typeof M!="object")return[[C,M]];var g=[];for(var P in M){var T=M[P],F=C;parseInt(P)+""===P?F+="["+P+"]":F+="."+P,typeof T=="object"?g.push.apply(g,E(F,T)):g.push([F,T])}return g}function k(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var M=C.indexOf("vec");if(0<=M&&M<=1&&C.length===4+M){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid data type");return C.charAt(0)==="b"?c(g,!1):c(g,0)}else if(C.indexOf("mat")===0&&C.length===4){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+C);return c(g*g,0)}else throw new l("","Unknown uniform data type for "+name+": "+C)}}function A(C,M,g){if(typeof g=="object"){var P=L(g);Object.defineProperty(C,M,{get:u(P),set:p(g),enumerable:!0,configurable:!1})}else x[g]?Object.defineProperty(C,M,{get:b(g),set:p(g),enumerable:!0,configurable:!1}):C[M]=k(v[g].type)}function L(C){var M;if(Array.isArray(C)){M=new Array(C.length);for(var g=0;g1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var x=1;x1)for(var E=0;E 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * (view * tubePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(i,a,o){"use strict";var s=o(2931),l=o(9970),u=["xyz","xzy","yxz","yzx","zxy","zyx"],c=function(A,L,_,C){for(var M=A.points,g=A.velocities,P=A.divergences,T=[],F=[],q=[],V=[],H=[],X=[],G=0,N=0,W=l.create(),re=l.create(),ae=8,_e=0;_e0)for(var ie=0;ieL)return C-1}return C},d=function(A,L,_){return A_?_:A},v=function(A,L,_){var C=L.vectors,M=L.meshgrid,g=A[0],P=A[1],T=A[2],F=M[0].length,q=M[1].length,V=M[2].length,H=h(M[0],g),X=h(M[1],P),G=h(M[2],T),N=H+1,W=X+1,re=G+1;if(H=d(H,0,F-1),N=d(N,0,F-1),X=d(X,0,q-1),W=d(W,0,q-1),G=d(G,0,V-1),re=d(re,0,V-1),H<0||X<0||G<0||N>F-1||W>q-1||re>V-1)return s.create();var ae=M[0][H],_e=M[0][N],Me=M[1][X],ke=M[1][W],ge=M[2][G],ie=M[2][re],Te=(g-ae)/(_e-ae),Ee=(P-Me)/(ke-Me),Ae=(T-ge)/(ie-ge);isFinite(Te)||(Te=.5),isFinite(Ee)||(Ee=.5),isFinite(Ae)||(Ae=.5);var ze,Ce,me,Re,ce,Ge;switch(_.reversedX&&(H=F-1-H,N=F-1-N),_.reversedY&&(X=q-1-X,W=q-1-W),_.reversedZ&&(G=V-1-G,re=V-1-re),_.filled){case 5:ce=G,Ge=re,me=X*V,Re=W*V,ze=H*V*q,Ce=N*V*q;break;case 4:ce=G,Ge=re,ze=H*V,Ce=N*V,me=X*V*F,Re=W*V*F;break;case 3:me=X,Re=W,ce=G*q,Ge=re*q,ze=H*q*V,Ce=N*q*V;break;case 2:me=X,Re=W,ze=H*q,Ce=N*q,ce=G*q*F,Ge=re*q*F;break;case 1:ze=H,Ce=N,ce=G*F,Ge=re*F,me=X*F*V,Re=W*F*V;break;default:ze=H,Ce=N,me=X*F,Re=W*F,ce=G*F*q,Ge=re*F*q;break}var nt=C[ze+me+ce],ct=C[ze+me+Ge],qt=C[ze+Re+ce],rt=C[ze+Re+Ge],ot=C[Ce+me+ce],Rt=C[Ce+me+Ge],kt=C[Ce+Re+ce],Ct=C[Ce+Re+Ge],Yt=s.create(),xr=s.create(),er=s.create(),Ke=s.create();s.lerp(Yt,nt,ot,Te),s.lerp(xr,ct,Rt,Te),s.lerp(er,qt,kt,Te),s.lerp(Ke,rt,Ct,Te);var xt=s.create(),bt=s.create();s.lerp(xt,Yt,er,Ee),s.lerp(bt,xr,Ke,Ee);var Lt=s.create();return s.lerp(Lt,xt,bt,Ae),Lt},x=function(A,L){var _=L[0],C=L[1],M=L[2];return A[0]=_<0?-_:_,A[1]=C<0?-C:C,A[2]=M<0?-M:M,A},b=function(A){var L=1/0;A.sort(function(g,P){return g-P});for(var _=A.length,C=1;C<_;C++){var M=Math.abs(A[C]-A[C-1]);MN||CtW||Ytre)},_e=s.distance(L[0],L[1]),Me=10*_e/C,ke=Me*Me,ge=1,ie=0,Te=_.length;Te>1&&(ge=p(_));for(var Ee=0;Eeie&&(ie=nt),ce.push(nt),V.push({points:ze,velocities:Ce,divergences:ce});for(var ct=0;ctke&&s.scale(qt,qt,Me/Math.sqrt(rt)),s.add(qt,qt,Ae),me=F(qt),s.squaredDistance(Re,qt)-ke>-1e-4*ke){ze.push(qt),Re=qt,Ce.push(me);var Ge=q(qt,me),nt=s.length(Ge);isFinite(nt)&&nt>ie&&(ie=nt),ce.push(nt)}Ae=qt}}var ot=f(V,A.colormap,ie,ge);return g?ot.tubeScale=g:(ie===0&&(ie=1),ot.tubeScale=M*.5*ge/ie),ot};var E=o(6740),k=o(6405).createMesh;i.exports.createTubeMesh=function(A,L){return k(A,L,{shaders:E,traceType:"streamtube"})}},990:function(i,a,o){var s=o(9405),l=o(3236),u=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute vec3 f; +attribute vec3 normal; + +uniform vec3 objectOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 lightPosition, eyePosition; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 localCoordinate = vec3(uv.zw, f.x); + worldCoordinate = objectOffset + localCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(localCoordinate, 1.0); + vec4 clipPosition = projection * (view * worldPosition); + gl_Position = clipPosition; + kill = f.y; + value = f.z; + planeCoordinate = uv.xy; + + vColor = texture2D(colormap, vec2(value, value)); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * worldPosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + lightDirection = lightPosition - cameraCoordinate.xyz; + eyeDirection = eyePosition - cameraCoordinate.xyz; + surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz); +} +`]),c=l([`precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float beckmannSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness) { + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color \u2014 in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),f=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0); + + vec4 clipPosition = projection * (view * worldPosition); + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);a.createShader=function(d){var v=s(d,u,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createPickShader=function(d){var v=s(d,u,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createContourShader=function(d){var v=s(d,f,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v},a.createPickContourShader=function(d){var v=s(d,f,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v}},9499:function(i,a,o){"use strict";i.exports=ze;var s=o(8828),l=o(2762),u=o(8116),c=o(7766),f=o(1888),h=o(6729),d=o(5298),v=o(9994),x=o(9618),b=o(3711),p=o(6760),E=o(7608),k=o(2478),A=o(6199),L=o(990),_=L.createShader,C=L.createContourShader,M=L.createPickShader,g=L.createPickContourShader,P=4*10,T=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],F=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],q=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var Ce=0;Ce<3;++Ce){var me=q[Ce],Re=(Ce+1)%3,ce=(Ce+2)%3;me[Re+0]=1,me[ce+3]=1,me[Ce+6]=1}})();function V(Ce,me,Re,ce,Ge){this.position=Ce,this.index=me,this.uv=Re,this.level=ce,this.dataCoordinate=Ge}var H=256;function X(Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr){this.gl=Ce,this.shape=me,this.bounds=Re,this.objectOffset=xr,this.intensityBounds=[],this._shader=ce,this._pickShader=Ge,this._coordinateBuffer=nt,this._vao=ct,this._colorMap=qt,this._contourShader=rt,this._contourPickShader=ot,this._contourBuffer=Rt,this._contourVAO=kt,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new V([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=Ct,this._dynamicVAO=Yt,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var G=X.prototype;G.genColormap=function(Ce,me){var Re=!1,ce=v([h({colormap:Ce,nshades:H,format:"rgba"}).map(function(Ge,nt){var ct=me?N(nt/255,me):Ge[3];return ct<1&&(Re=!0),[Ge[0],Ge[1],Ge[2],255*ct]})]);return d.divseq(ce,255),this.hasAlphaScale=Re,ce},G.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},G.isOpaque=function(){return!this.isTransparent()},G.pickSlots=1,G.setPickBase=function(Ce){this.pickId=Ce};function N(Ce,me){if(!me||!me.length)return 1;for(var Re=0;ReCe&&Re>0){var ce=(me[Re][0]-Ce)/(me[Re][0]-me[Re-1][0]);return me[Re][1]*(1-ce)+ce*me[Re-1][1]}}return 1}var W=[0,0,0],re={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function ae(Ce,me){var Re,ce,Ge,nt=me.axes&&me.axes.lastCubeProps.axis||W,ct=me.showSurface,qt=me.showContour;for(Re=0;Re<3;++Re)for(ct=ct||me.surfaceProject[Re],ce=0;ce<3;++ce)qt=qt||me.contourProject[Re][ce];for(Re=0;Re<3;++Re){var rt=re.projections[Re];for(ce=0;ce<16;++ce)rt[ce]=0;for(ce=0;ce<4;++ce)rt[5*ce]=1;rt[5*Re]=0,rt[12+Re]=me.axesBounds[+(nt[Re]>0)][Re],p(rt,Ce.model,rt);var ot=re.clipBounds[Re];for(Ge=0;Ge<2;++Ge)for(ce=0;ce<3;++ce)ot[Ge][ce]=Ce.clipBounds[Ge][ce];ot[0][Re]=-1e8,ot[1][Re]=1e8}return re.showSurface=ct,re.showContour=qt,re}var _e={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},Me=T.slice(),ke=[1,0,0,0,1,0,0,0,1];function ge(Ce,me){Ce=Ce||{};var Re=this.gl;Re.disable(Re.CULL_FACE),this._colorMap.bind(0);var ce=_e;ce.model=Ce.model||T,ce.view=Ce.view||T,ce.projection=Ce.projection||T,ce.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ce.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ce.objectOffset=this.objectOffset,ce.contourColor=this.contourColor[0],ce.inverseModel=E(ce.inverseModel,ce.model);for(var Ge=0;Ge<2;++Ge)for(var nt=ce.clipBounds[Ge],ct=0;ct<3;++ct)nt[ct]=Math.min(Math.max(this.clipBounds[Ge][ct],-1e8),1e8);ce.kambient=this.ambientLight,ce.kdiffuse=this.diffuseLight,ce.kspecular=this.specularLight,ce.roughness=this.roughness,ce.fresnel=this.fresnel,ce.opacity=this.opacity,ce.height=0,ce.permutation=ke,ce.vertexColor=this.vertexColor;var qt=Me;for(p(qt,ce.view,ce.model),p(qt,ce.projection,qt),E(qt,qt),Ge=0;Ge<3;++Ge)ce.eyePosition[Ge]=qt[12+Ge]/qt[15];var rt=qt[15];for(Ge=0;Ge<3;++Ge)rt+=this.lightPosition[Ge]*qt[4*Ge+3];for(Ge=0;Ge<3;++Ge){var ot=qt[12+Ge];for(ct=0;ct<3;++ct)ot+=qt[4*ct+Ge]*this.lightPosition[ct];ce.lightPosition[Ge]=ot/rt}var Rt=ae(ce,this);if(Rt.showSurface){for(this._shader.bind(),this._shader.uniforms=ce,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(Re.TRIANGLES,this._vertexCount),Ge=0;Ge<3;++Ge)!this.surfaceProject[Ge]||!this.vertexCount||(this._shader.uniforms.model=Rt.projections[Ge],this._shader.uniforms.clipBounds=Rt.clipBounds[Ge],this._vao.draw(Re.TRIANGLES,this._vertexCount));this._vao.unbind()}if(Rt.showContour){var kt=this._contourShader;ce.kambient=1,ce.kdiffuse=0,ce.kspecular=0,ce.opacity=1,kt.bind(),kt.uniforms=ce;var Ct=this._contourVAO;for(Ct.bind(),Ge=0;Ge<3;++Ge)for(kt.uniforms.permutation=q[Ge],Re.lineWidth(this.contourWidth[Ge]*this.pixelRatio),ct=0;ct>4)/16)/255,Ge=Math.floor(ce),nt=ce-Ge,ct=me[1]*(Ce.value[1]+(Ce.value[2]&15)/16)/255,qt=Math.floor(ct),rt=ct-qt;Ge+=1,qt+=1;var ot=Re.position;ot[0]=ot[1]=ot[2]=0;for(var Rt=0;Rt<2;++Rt)for(var kt=Rt?nt:1-nt,Ct=0;Ct<2;++Ct)for(var Yt=Ct?rt:1-rt,xr=Ge+Rt,er=qt+Ct,Ke=kt*Yt,xt=0;xt<3;++xt)ot[xt]+=this._field[xt].get(xr,er)*Ke;for(var bt=this._pickResult.level,Lt=0;Lt<3;++Lt)if(bt[Lt]=k.le(this.contourLevels[Lt],ot[Lt]),bt[Lt]<0)this.contourLevels[Lt].length>0&&(bt[Lt]=0);else if(bt[Lt]Math.abs(Et-ot[Lt])&&(bt[Lt]+=1)}for(Re.index[0]=nt<.5?Ge:Ge+1,Re.index[1]=rt<.5?qt:qt+1,Re.uv[0]=ce/me[0],Re.uv[1]=ct/me[1],xt=0;xt<3;++xt)Re.dataCoordinate[xt]=this._field[xt].get(Re.index[0],Re.index[1]);return Re},G.padField=function(Ce,me){var Re=me.shape.slice(),ce=Ce.shape.slice();d.assign(Ce.lo(1,1).hi(Re[0],Re[1]),me),d.assign(Ce.lo(1).hi(Re[0],1),me.hi(Re[0],1)),d.assign(Ce.lo(1,ce[1]-1).hi(Re[0],1),me.lo(0,Re[1]-1).hi(Re[0],1)),d.assign(Ce.lo(0,1).hi(1,Re[1]),me.hi(1)),d.assign(Ce.lo(ce[0]-1,1).hi(1,Re[1]),me.lo(Re[0]-1)),Ce.set(0,0,me.get(0,0)),Ce.set(0,ce[1]-1,me.get(0,Re[1]-1)),Ce.set(ce[0]-1,0,me.get(Re[0]-1,0)),Ce.set(ce[0]-1,ce[1]-1,me.get(Re[0]-1,Re[1]-1))};function Te(Ce,me){return Array.isArray(Ce)?[me(Ce[0]),me(Ce[1]),me(Ce[2])]:[me(Ce),me(Ce),me(Ce)]}function Ee(Ce){return Array.isArray(Ce)?Ce.length===3?[Ce[0],Ce[1],Ce[2],1]:[Ce[0],Ce[1],Ce[2],Ce[3]]:[0,0,0,1]}function Ae(Ce){if(Array.isArray(Ce)){if(Array.isArray(Ce))return[Ee(Ce[0]),Ee(Ce[1]),Ee(Ce[2])];var me=Ee(Ce);return[me.slice(),me.slice(),me.slice()]}}G.update=function(Ce){Ce=Ce||{},this.objectOffset=Ce.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in Ce&&(this.contourWidth=Te(Ce.contourWidth,Number)),"showContour"in Ce&&(this.showContour=Te(Ce.showContour,Boolean)),"showSurface"in Ce&&(this.showSurface=!!Ce.showSurface),"contourTint"in Ce&&(this.contourTint=Te(Ce.contourTint,Boolean)),"contourColor"in Ce&&(this.contourColor=Ae(Ce.contourColor)),"contourProject"in Ce&&(this.contourProject=Te(Ce.contourProject,function(Gi){return Te(Gi,Boolean)})),"surfaceProject"in Ce&&(this.surfaceProject=Ce.surfaceProject),"dynamicColor"in Ce&&(this.dynamicColor=Ae(Ce.dynamicColor)),"dynamicTint"in Ce&&(this.dynamicTint=Te(Ce.dynamicTint,Number)),"dynamicWidth"in Ce&&(this.dynamicWidth=Te(Ce.dynamicWidth,Number)),"opacity"in Ce&&(this.opacity=Ce.opacity),"opacityscale"in Ce&&(this.opacityscale=Ce.opacityscale),"colorBounds"in Ce&&(this.colorBounds=Ce.colorBounds),"vertexColor"in Ce&&(this.vertexColor=Ce.vertexColor?1:0),"colormap"in Ce&&this._colorMap.setPixels(this.genColormap(Ce.colormap,this.opacityscale));var me=Ce.field||Ce.coords&&Ce.coords[2]||null,Re=!1;if(me||(this._field[2].shape[0]||this._field[2].shape[2]?me=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):me=this._field[2].hi(0,0)),"field"in Ce||"coords"in Ce){var ce=(me.shape[0]+2)*(me.shape[1]+2);ce>this._field[2].data.length&&(f.freeFloat(this._field[2].data),this._field[2].data=f.mallocFloat(s.nextPow2(ce))),this._field[2]=x(this._field[2].data,[me.shape[0]+2,me.shape[1]+2]),this.padField(this._field[2],me),this.shape=me.shape.slice();for(var Ge=this.shape,nt=0;nt<2;++nt)this._field[2].size>this._field[nt].data.length&&(f.freeFloat(this._field[nt].data),this._field[nt].data=f.mallocFloat(this._field[2].size)),this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2]);if(Ce.coords){var ct=Ce.coords;if(!Array.isArray(ct)||ct.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(nt=0;nt<2;++nt){var qt=ct[nt];for(Ct=0;Ct<2;++Ct)if(qt.shape[Ct]!==Ge[Ct])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[nt],qt)}}else if(Ce.ticks){var rt=Ce.ticks;if(!Array.isArray(rt)||rt.length!==2)throw new Error("gl-surface: invalid ticks");for(nt=0;nt<2;++nt){var ot=rt[nt];if((Array.isArray(ot)||ot.length)&&(ot=x(ot)),ot.shape[0]!==Ge[nt])throw new Error("gl-surface: invalid tick length");var Rt=x(ot.data,Ge);Rt.stride[nt]=ot.stride[0],Rt.stride[nt^1]=0,this.padField(this._field[nt],Rt)}}else{for(nt=0;nt<2;++nt){var kt=[0,0];kt[nt]=1,this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2],kt,0)}this._field[0].set(0,0,0);for(var Ct=0;Ct0){for(var Mi=0;Mi<5;++Mi)ai.pop();Ve-=1}continue e}}}nn.push(Ve)}this._contourOffsets[jr]=bi,this._contourCounts[jr]=nn}var Pi=f.mallocFloat(ai.length);for(nt=0;ntV||F<0||F>V)throw new Error("gl-texture2d: Invalid texture size");return P._shape=[T,F],P.bind(),q.texImage2D(q.TEXTURE_2D,0,P.format,T,F,0,P.format,P.type,null),P._mipLevels=[0],P}function p(P,T,F,q,V,H){this.gl=P,this.handle=T,this.format=V,this.type=H,this._shape=[F,q],this._mipLevels=[0],this._magFilter=P.NEAREST,this._minFilter=P.NEAREST,this._wrapS=P.CLAMP_TO_EDGE,this._wrapT=P.CLAMP_TO_EDGE,this._anisoSamples=1;var X=this,G=[this._wrapS,this._wrapT];Object.defineProperties(G,[{get:function(){return X._wrapS},set:function(W){return X.wrapS=W}},{get:function(){return X._wrapT},set:function(W){return X.wrapT=W}}]),this._wrapVector=G;var N=[this._shape[0],this._shape[1]];Object.defineProperties(N,[{get:function(){return X._shape[0]},set:function(W){return X.width=W}},{get:function(){return X._shape[1]},set:function(W){return X.height=W}}]),this._shapeVector=N}var E=p.prototype;Object.defineProperties(E,{minFilter:{get:function(){return this._minFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MIN_FILTER,P),this._minFilter=P}},magFilter:{get:function(){return this._magFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MAG_FILTER,P),this._magFilter=P}},mipSamples:{get:function(){return this._anisoSamples},set:function(P){var T=this._anisoSamples;if(this._anisoSamples=Math.max(P,1)|0,T!==this._anisoSamples){var F=this.gl.getExtension("EXT_texture_filter_anisotropic");F&&this.gl.texParameterf(this.gl.TEXTURE_2D,F.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,P),this._wrapS=P}},wrapT:{get:function(){return this._wrapT},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,P),this._wrapT=P}},wrap:{get:function(){return this._wrapVector},set:function(P){if(Array.isArray(P)||(P=[P,P]),P.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var T=0;T<2;++T)if(h.indexOf(P[T])<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);this._wrapS=P[0],this._wrapT=P[1];var F=this.gl;return this.bind(),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_S,this._wrapS),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_T,this._wrapT),P}},shape:{get:function(){return this._shapeVector},set:function(P){if(!Array.isArray(P))P=[P|0,P|0];else if(P.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return b(this,P[0]|0,P[1]|0),[P[0]|0,P[1]|0]}},width:{get:function(){return this._shape[0]},set:function(P){return P=P|0,b(this,P,this._shape[1]),P}},height:{get:function(){return this._shape[1]},set:function(P){return P=P|0,b(this,this._shape[0],P),P}}}),E.bind=function(P){var T=this.gl;return P!==void 0&&T.activeTexture(T.TEXTURE0+(P|0)),T.bindTexture(T.TEXTURE_2D,this.handle),P!==void 0?P|0:T.getParameter(T.ACTIVE_TEXTURE)-T.TEXTURE0},E.dispose=function(){this.gl.deleteTexture(this.handle)},E.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var P=Math.min(this._shape[0],this._shape[1]),T=0;P>0;++T,P>>>=1)this._mipLevels.indexOf(T)<0&&this._mipLevels.push(T)},E.setPixels=function(P,T,F,q){var V=this.gl;this.bind(),Array.isArray(T)?(q=F,F=T[1]|0,T=T[0]|0):(T=T||0,F=F||0),q=q||0;var H=v(P)?P:P.raw;if(H){var X=this._mipLevels.indexOf(q)<0;X?(V.texImage2D(V.TEXTURE_2D,0,this.format,this.format,this.type,H),this._mipLevels.push(q)):V.texSubImage2D(V.TEXTURE_2D,q,T,F,this.format,this.type,H)}else if(P.shape&&P.stride&&P.data){if(P.shape.length<2||T+P.shape[1]>this._shape[1]>>>q||F+P.shape[0]>this._shape[0]>>>q||T<0||F<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");A(V,T,F,q,this.format,this.type,this._mipLevels,P)}else throw new Error("gl-texture2d: Unsupported data type")};function k(P,T){return P.length===3?T[2]===1&&T[1]===P[0]*P[2]&&T[0]===P[2]:T[0]===1&&T[1]===P[0]}function A(P,T,F,q,V,H,X,G){var N=G.dtype,W=G.shape.slice();if(W.length<2||W.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var re=0,ae=0,_e=k(W,G.stride.slice());N==="float32"?re=P.FLOAT:N==="float64"?(re=P.FLOAT,_e=!1,N="float32"):N==="uint8"?re=P.UNSIGNED_BYTE:(re=P.UNSIGNED_BYTE,_e=!1,N="uint8");var Me=1;if(W.length===2)ae=P.LUMINANCE,W=[W[0],W[1],1],G=s(G.data,W,[G.stride[0],G.stride[1],1],G.offset);else if(W.length===3){if(W[2]===1)ae=P.ALPHA;else if(W[2]===2)ae=P.LUMINANCE_ALPHA;else if(W[2]===3)ae=P.RGB;else if(W[2]===4)ae=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");Me=W[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((ae===P.LUMINANCE||ae===P.ALPHA)&&(V===P.LUMINANCE||V===P.ALPHA)&&(ae=V),ae!==V)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var ke=G.size,ge=X.indexOf(q)<0;if(ge&&X.push(q),re===H&&_e)G.offset===0&&G.data.length===ke?ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data):ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data.subarray(G.offset,G.offset+ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data.subarray(G.offset,G.offset+ke));else{var ie;H===P.FLOAT?ie=u.mallocFloat32(ke):ie=u.mallocUint8(ke);var Te=s(ie,W,[W[2],W[2]*W[0],1]);re===P.FLOAT&&H===P.UNSIGNED_BYTE?x(Te,G):l.assign(Te,G),ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,ie.subarray(0,ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,ie.subarray(0,ke)),H===P.FLOAT?u.freeFloat32(ie):u.freeUint8(ie)}}function L(P){var T=P.createTexture();return P.bindTexture(P.TEXTURE_2D,T),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MIN_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MAG_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,P.CLAMP_TO_EDGE),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,P.CLAMP_TO_EDGE),T}function _(P,T,F,q,V){var H=P.getParameter(P.MAX_TEXTURE_SIZE);if(T<0||T>H||F<0||F>H)throw new Error("gl-texture2d: Invalid texture shape");if(V===P.FLOAT&&!P.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,q,T,F,0,q,V,null),new p(P,X,T,F,q,V)}function C(P,T,F,q,V,H){var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,V,V,H,T),new p(P,X,F,q,V,H)}function M(P,T){var F=T.dtype,q=T.shape.slice(),V=P.getParameter(P.MAX_TEXTURE_SIZE);if(q[0]<0||q[0]>V||q[1]<0||q[1]>V)throw new Error("gl-texture2d: Invalid texture size");var H=k(q,T.stride.slice()),X=0;F==="float32"?X=P.FLOAT:F==="float64"?(X=P.FLOAT,H=!1,F="float32"):F==="uint8"?X=P.UNSIGNED_BYTE:(X=P.UNSIGNED_BYTE,H=!1,F="uint8");var G=0;if(q.length===2)G=P.LUMINANCE,q=[q[0],q[1],1],T=s(T.data,q,[T.stride[0],T.stride[1],1],T.offset);else if(q.length===3)if(q[2]===1)G=P.ALPHA;else if(q[2]===2)G=P.LUMINANCE_ALPHA;else if(q[2]===3)G=P.RGB;else if(q[2]===4)G=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");X===P.FLOAT&&!P.getExtension("OES_texture_float")&&(X=P.UNSIGNED_BYTE,H=!1);var N,W,re=T.size;if(H)T.offset===0&&T.data.length===re?N=T.data:N=T.data.subarray(T.offset,T.offset+re);else{var ae=[q[2],q[2]*q[0],1];W=u.malloc(re,F);var _e=s(W,q,ae,0);(F==="float32"||F==="float64")&&X===P.UNSIGNED_BYTE?x(_e,T):l.assign(_e,T),N=W.subarray(0,re)}var Me=L(P);return P.texImage2D(P.TEXTURE_2D,0,G,q[0],q[1],0,G,X,N),H||u.free(W),new p(P,Me,q[0],q[1],G,X)}function g(P){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(c||d(P),typeof arguments[1]=="number")return _(P,arguments[1],arguments[2],arguments[3]||P.RGBA,arguments[4]||P.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return _(P,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var T=arguments[1],F=v(T)?T:T.raw;if(F)return C(P,F,T.width|0,T.height|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(T.shape&&T.data&&T.stride)return M(P,T)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(i){"use strict";function a(o,s,l){s?s.bind():o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,null);var u=o.getParameter(o.MAX_VERTEX_ATTRIBS)|0;if(l){if(l.length>u)throw new Error("gl-vao: Too many vertex attributes");for(var c=0;c1?0:Math.acos(x)}},9226:function(i){i.exports=a;function a(o,s){return o[0]=Math.ceil(s[0]),o[1]=Math.ceil(s[1]),o[2]=Math.ceil(s[2]),o}},3126:function(i){i.exports=a;function a(o){var s=new Float32Array(3);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s}},3990:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o}},1091:function(i){i.exports=a;function a(){var o=new Float32Array(3);return o[0]=0,o[1]=0,o[2]=0,o}},5911:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2];return o[0]=c*v-f*d,o[1]=f*h-u*v,o[2]=u*d-c*h,o}},5455:function(i,a,o){i.exports=o(7056)},7056:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return Math.sqrt(l*l+u*u+c*c)}},4008:function(i,a,o){i.exports=o(6690)},6690:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o}},244:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]}},2613:function(i){i.exports=1e-6},9922:function(i,a,o){i.exports=l;var s=o(2613);function l(u,c){var f=u[0],h=u[1],d=u[2],v=c[0],x=c[1],b=c[2];return Math.abs(f-v)<=s*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-x)<=s*Math.max(1,Math.abs(h),Math.abs(x))&&Math.abs(d-b)<=s*Math.max(1,Math.abs(d),Math.abs(b))}},9265:function(i){i.exports=a;function a(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}},2681:function(i){i.exports=a;function a(o,s){return o[0]=Math.floor(s[0]),o[1]=Math.floor(s[1]),o[2]=Math.floor(s[2]),o}},5137:function(i,a,o){i.exports=l;var s=o(1091)();function l(u,c,f,h,d,v){var x,b;for(c||(c=3),f||(f=0),h?b=Math.min(h*c+f,u.length):b=u.length,x=f;x0&&(f=1/Math.sqrt(f),o[0]=s[0]*f,o[1]=s[1]*f,o[2]=s[2]*f),o}},7636:function(i){i.exports=a;function a(o,s){s=s||1;var l=Math.random()*2*Math.PI,u=Math.random()*2-1,c=Math.sqrt(1-u*u)*s;return o[0]=Math.cos(l)*c,o[1]=Math.sin(l)*c,o[2]=u*s,o}},6894:function(i){i.exports=a;function a(o,s,l,u){var c=l[1],f=l[2],h=s[1]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=s[0],o[1]=c+h*x-d*v,o[2]=f+h*v+d*x,o}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+d*v+h*x,o[1]=s[1],o[2]=f+d*x-h*v,o}},8692:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[1],h=s[0]-c,d=s[1]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+h*x-d*v,o[1]=f+h*v+d*x,o[2]=s[2],o}},2447:function(i){i.exports=a;function a(o,s){return o[0]=Math.round(s[0]),o[1]=Math.round(s[1]),o[2]=Math.round(s[2]),o}},6621:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o}},8489:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o}},1463:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s,o[1]=l,o[2]=u,o}},6141:function(i,a,o){i.exports=o(2953)},5486:function(i,a,o){i.exports=o(3066)},2953:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return l*l+u*u+c*c}},3066:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2];return s*s+l*l+u*u}},2229:function(i,a,o){i.exports=o(6843)},6843:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o}},492:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2];return o[0]=u*l[0]+c*l[3]+f*l[6],o[1]=u*l[1]+c*l[4]+f*l[7],o[2]=u*l[2]+c*l[5]+f*l[8],o}},5673:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[3]*u+l[7]*c+l[11]*f+l[15];return h=h||1,o[0]=(l[0]*u+l[4]*c+l[8]*f+l[12])/h,o[1]=(l[1]*u+l[5]*c+l[9]*f+l[13])/h,o[2]=(l[2]*u+l[6]*c+l[10]*f+l[14])/h,o}},264:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o}},4361:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]+l[0],o[1]=s[1]+l[1],o[2]=s[2]+l[2],o[3]=s[3]+l[3],o}},2335:function(i){i.exports=a;function a(o){var s=new Float32Array(4);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s}},2933:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o[3]=s[3],o}},7536:function(i){i.exports=a;function a(){var o=new Float32Array(4);return o[0]=0,o[1]=0,o[2]=0,o[3]=0,o}},4691:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return Math.sqrt(l*l+u*u+c*c+f*f)}},1373:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o[3]=s[3]/l[3],o}},3750:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]+o[3]*s[3]}},3390:function(i){i.exports=a;function a(o,s,l,u){var c=new Float32Array(4);return c[0]=o,c[1]=s,c[2]=l,c[3]=u,c}},9970:function(i,a,o){i.exports={create:o(7536),clone:o(2335),fromValues:o(3390),copy:o(2933),set:o(4578),add:o(4361),subtract:o(6860),multiply:o(3576),divide:o(1373),min:o(2334),max:o(160),scale:o(9288),scaleAndAdd:o(4844),distance:o(4691),squaredDistance:o(7960),length:o(6808),squaredLength:o(483),negate:o(1498),inverse:o(4494),normalize:o(5177),dot:o(3750),lerp:o(2573),random:o(9131),transformMat4:o(5352),transformQuat:o(4041)}},4494:function(i){i.exports=a;function a(o,s){return o[0]=1/s[0],o[1]=1/s[1],o[2]=1/s[2],o[3]=1/s[3],o}},6808:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return Math.sqrt(s*s+l*l+u*u+c*c)}},2573:function(i){i.exports=a;function a(o,s,l,u){var c=s[0],f=s[1],h=s[2],d=s[3];return o[0]=c+u*(l[0]-c),o[1]=f+u*(l[1]-f),o[2]=h+u*(l[2]-h),o[3]=d+u*(l[3]-d),o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},2334:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.min(s[0],l[0]),o[1]=Math.min(s[1],l[1]),o[2]=Math.min(s[2],l[2]),o[3]=Math.min(s[3],l[3]),o}},3576:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l[0],o[1]=s[1]*l[1],o[2]=s[2]*l[2],o[3]=s[3]*l[3],o}},1498:function(i){i.exports=a;function a(o,s){return o[0]=-s[0],o[1]=-s[1],o[2]=-s[2],o[3]=-s[3],o}},5177:function(i){i.exports=a;function a(o,s){var l=s[0],u=s[1],c=s[2],f=s[3],h=l*l+u*u+c*c+f*f;return h>0&&(h=1/Math.sqrt(h),o[0]=l*h,o[1]=u*h,o[2]=c*h,o[3]=f*h),o}},9131:function(i,a,o){var s=o(5177),l=o(9288);i.exports=u;function u(c,f){return f=f||1,c[0]=Math.random(),c[1]=Math.random(),c[2]=Math.random(),c[3]=Math.random(),s(c,c),l(c,c,f),c}},9288:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o[3]=s[3]*l,o}},4844:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o[3]=s[3]+l[3]*u,o}},4578:function(i){i.exports=a;function a(o,s,l,u,c){return o[0]=s,o[1]=l,o[2]=u,o[3]=c,o}},7960:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return l*l+u*u+c*c+f*f}},483:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return s*s+l*l+u*u+c*c}},6860:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o[3]=s[3]-l[3],o}},5352:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=s[3];return o[0]=l[0]*u+l[4]*c+l[8]*f+l[12]*h,o[1]=l[1]*u+l[5]*c+l[9]*f+l[13]*h,o[2]=l[2]*u+l[6]*c+l[10]*f+l[14]*h,o[3]=l[3]*u+l[7]*c+l[11]*f+l[15]*h,o}},4041:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o[3]=s[3],o}},1848:function(i,a,o){var s=o(4905),l=o(6468);i.exports=u;function u(c){for(var f=Array.isArray(c)?c:s(c),h=0;h0)continue;Lt=Ke.slice(0,1).join("")}return Re(Lt),ke+=Lt.length,N=N.slice(Lt.length),N.length}while(!0)}function Ct(){return/[^a-fA-F0-9]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function Yt(){return X==="."||/[eE]/.test(X)?(N.push(X),H=k,G=X,q+1):X==="x"&&N.length===1&&N[0]==="0"?(H=g,N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function xr(){return X==="f"&&(N.push(X),G=X,q+=1),/[eE]/.test(X)||(X==="-"||X==="+")&&/[eE]/.test(G)?(N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function er(){if(/[^\d\w_]/.test(X)){var Ke=N.join("");return me[Ke]?H=_:Ce[Ke]?H=L:H=A,Re(N.join("")),H=h,q}return N.push(X),G=X,q+1}}},3508:function(i,a,o){var s=o(6852);s=s.slice().filter(function(l){return!/^(gl\_|texture)/.test(l)}),i.exports=s.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(i){i.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(i,a,o){var s=o(620);i.exports=s.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(i){i.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(i){i.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(i,a,o){var s=o(5874);i.exports=l;function l(u,c){var f=s(c),h=[];return h=h.concat(f(u)),h=h.concat(f(null)),h}},3236:function(i){i.exports=function(a){typeof a=="string"&&(a=[a]);for(var o=[].slice.call(arguments,1),s=[],l=0;l>1,b=-7,p=l?c-1:0,E=l?-1:1,k=o[s+p];for(p+=E,f=k&(1<<-b)-1,k>>=-b,b+=d;b>0;f=f*256+o[s+p],p+=E,b-=8);for(h=f&(1<<-b)-1,f>>=-b,b+=u;b>0;h=h*256+o[s+p],p+=E,b-=8);if(f===0)f=1-x;else{if(f===v)return h?NaN:(k?-1:1)*(1/0);h=h+Math.pow(2,u),f=f-x}return(k?-1:1)*h*Math.pow(2,f-u)},a.write=function(o,s,l,u,c,f){var h,d,v,x=f*8-c-1,b=(1<>1,E=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,k=u?0:f-1,A=u?1:-1,L=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(d=isNaN(s)?1:0,h=b):(h=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-h))<1&&(h--,v*=2),h+p>=1?s+=E/v:s+=E*Math.pow(2,1-p),s*v>=2&&(h++,v/=2),h+p>=b?(d=0,h=b):h+p>=1?(d=(s*v-1)*Math.pow(2,c),h=h+p):(d=s*Math.pow(2,p-1)*Math.pow(2,c),h=0));c>=8;o[l+k]=d&255,k+=A,d/=256,c-=8);for(h=h<0;o[l+k]=h&255,k+=A,h/=256,x-=8);o[l+k-A]|=L*128}},8954:function(i,a,o){"use strict";i.exports=p;var s=o(3250),l=o(6803).Fw;function u(E,k,A){this.vertices=E,this.adjacent=k,this.boundary=A,this.lastVisited=-1}u.prototype.flip=function(){var E=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=E;var k=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=k};function c(E,k,A){this.vertices=E,this.cell=k,this.index=A}function f(E,k){return l(E.vertices,k.vertices)}function h(E){return function(){var k=this.tuple;return E.apply(this,k)}}function d(E){var k=s[E+1];return k||(k=s),h(k)}var v=[];function x(E,k,A){this.dimension=E,this.vertices=k,this.simplices=A,this.interior=A.filter(function(C){return!C.boundary}),this.tuple=new Array(E+1);for(var L=0;L<=E;++L)this.tuple[L]=this.vertices[L];var _=v[E];_||(_=v[E]=d(E)),this.orient=_}var b=x.prototype;b.handleBoundaryDegeneracy=function(E,k){var A=this.dimension,L=this.vertices.length-1,_=this.tuple,C=this.vertices,M=[E];for(E.lastVisited=-L;M.length>0;){E=M.pop();for(var g=E.adjacent,P=0;P<=A;++P){var T=g[P];if(!(!T.boundary||T.lastVisited<=-L)){for(var F=T.vertices,q=0;q<=A;++q){var V=F[q];V<0?_[q]=k:_[q]=C[V]}var H=this.orient();if(H>0)return T;T.lastVisited=-L,H===0&&M.push(T)}}}return null},b.walk=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=k?this.interior.length*Math.random()|0:this.interior.length-1,g=this.interior[M];e:for(;!g.boundary;){for(var P=g.vertices,T=g.adjacent,F=0;F<=L;++F)C[F]=_[P[F]];g.lastVisited=A;for(var F=0;F<=L;++F){var q=T[F];if(!(q.lastVisited>=A)){var V=C[F];C[F]=E;var H=this.orient();if(C[F]=V,H<0){g=q;continue e}else q.boundary?q.lastVisited=-A:q.lastVisited=A}}return}return g},b.addPeaks=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=this.interior,g=this.simplices,P=[k];k.lastVisited=A,k.vertices[k.vertices.indexOf(-1)]=A,k.boundary=!1,M.push(k);for(var T=[];P.length>0;){var k=P.pop(),F=k.vertices,q=k.adjacent,V=F.indexOf(A);if(!(V<0)){for(var H=0;H<=L;++H)if(H!==V){var X=q[H];if(!(!X.boundary||X.lastVisited>=A)){var G=X.vertices;if(X.lastVisited!==-A){for(var N=0,W=0;W<=L;++W)G[W]<0?(N=W,C[W]=E):C[W]=_[G[W]];var re=this.orient();if(re>0){G[N]=A,X.boundary=!1,M.push(X),P.push(X),X.lastVisited=A;continue}else X.lastVisited=-A}var ae=X.adjacent,_e=F.slice(),Me=q.slice(),ke=new u(_e,Me,!0);g.push(ke);var ge=ae.indexOf(k);if(!(ge<0)){ae[ge]=ke,Me[V]=X,_e[H]=-1,Me[H]=k,q[H]=ke,ke.flip();for(var W=0;W<=L;++W){var ie=_e[W];if(!(ie<0||ie===A)){for(var Te=new Array(L-1),Ee=0,Ae=0;Ae<=L;++Ae){var ze=_e[Ae];ze<0||Ae===W||(Te[Ee++]=ze)}T.push(new c(Te,ke,W))}}}}}}}T.sort(f);for(var H=0;H+1=0?M[P++]=g[F]:T=F&1;if(T===(E&1)){var q=M[0];M[0]=M[1],M[1]=q}k.push(M)}}return k};function p(E,k){var A=E.length;if(A===0)throw new Error("Must have at least d+1 points");var L=E[0].length;if(A<=L)throw new Error("Must input at least d+1 points");var _=E.slice(0,L+1),C=s.apply(void 0,_);if(C===0)throw new Error("Input not in general position");for(var M=new Array(L+1),g=0;g<=L;++g)M[g]=g;C<0&&(M[0]=1,M[1]=0);for(var P=new u(M,new Array(L+1),!1),T=P.adjacent,F=new Array(L+2),g=0;g<=L;++g){for(var q=M.slice(),V=0;V<=L;++V)V===g&&(q[V]=-1);var H=q[0];q[0]=q[1],q[1]=H;var X=new u(q,new Array(L+1),!0);T[g]=X,F[g]=X}F[L+1]=P;for(var g=0;g<=L;++g)for(var q=T[g].vertices,G=T[g].adjacent,V=0;V<=L;++V){var N=q[V];if(N<0){G[V]=P;continue}for(var W=0;W<=L;++W)T[W].vertices.indexOf(N)<0&&(G[V]=T[W])}for(var re=new x(L,_,F),ae=!!k,g=L+1;g3*(F+1)?x(this,T):this.left.insert(T):this.left=C([T]);else if(T[0]>this.mid)this.right?4*(this.right.count+1)>3*(F+1)?x(this,T):this.right.insert(T):this.right=C([T]);else{var q=s.ge(this.leftPoints,T,L),V=s.ge(this.rightPoints,T,_);this.leftPoints.splice(q,0,T),this.rightPoints.splice(V,0,T)}},h.remove=function(T){var F=this.count-this.leftPoints;if(T[1]3*(F-1))return b(this,T);var V=this.left.remove(T);return V===c?(this.left=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else if(T[0]>this.mid){if(!this.right)return l;var H=this.left?this.left.count:0;if(4*H>3*(F-1))return b(this,T);var V=this.right.remove(T);return V===c?(this.right=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else{if(this.count===1)return this.leftPoints[0]===T?c:l;if(this.leftPoints.length===1&&this.leftPoints[0]===T){if(this.left&&this.right){for(var X=this,G=this.left;G.right;)X=G,G=G.right;if(X===this)G.right=this.right;else{var N=this.left,V=this.right;X.count-=G.count,X.right=G.left,G.left=N,G.right=V}d(this,G),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return u}for(var N=s.ge(this.leftPoints,T,L);N=0&&T[V][1]>=F;--V){var H=q(T[V]);if(H)return H}}function k(T,F){for(var q=0;qthis.mid){if(this.right){var q=this.right.queryPoint(T,F);if(q)return q}return E(this.rightPoints,T,F)}else return k(this.leftPoints,F)},h.queryInterval=function(T,F,q){if(Tthis.mid&&this.right){var V=this.right.queryInterval(T,F,q);if(V)return V}return Fthis.mid?E(this.rightPoints,T,q):k(this.leftPoints,q)};function A(T,F){return T-F}function L(T,F){var q=T[0]-F[0];return q||T[1]-F[1]}function _(T,F){var q=T[1]-F[1];return q||T[0]-F[0]}function C(T){if(T.length===0)return null;for(var F=[],q=0;q>1],H=[],X=[],G=[],q=0;q13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},395:function(i){function a(o,s,l){return o*(1-l)+s*l}i.exports=a},2652:function(i,a,o){var s=o(4335),l=o(6864),u=o(1903),c=o(9921),f=o(7608),h=o(5665),d={length:o(1387),normalize:o(3536),dot:o(244),cross:o(5911)},v=l(),x=l(),b=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],E=[0,0,0];i.exports=function(C,M,g,P,T,F){if(M||(M=[0,0,0]),g||(g=[0,0,0]),P||(P=[0,0,0]),T||(T=[0,0,0,1]),F||(F=[0,0,0,1]),!s(v,C)||(u(x,v),x[3]=0,x[7]=0,x[11]=0,x[15]=1,Math.abs(c(x)<1e-8)))return!1;var q=v[3],V=v[7],H=v[11],X=v[12],G=v[13],N=v[14],W=v[15];if(q!==0||V!==0||H!==0){b[0]=q,b[1]=V,b[2]=H,b[3]=W;var re=f(x,x);if(!re)return!1;h(x,x),k(T,b,x)}else T[0]=T[1]=T[2]=0,T[3]=1;if(M[0]=X,M[1]=G,M[2]=N,A(p,v),g[0]=d.length(p[0]),d.normalize(p[0],p[0]),P[0]=d.dot(p[0],p[1]),L(p[1],p[1],p[0],1,-P[0]),g[1]=d.length(p[1]),d.normalize(p[1],p[1]),P[0]/=g[1],P[1]=d.dot(p[0],p[2]),L(p[2],p[2],p[0],1,-P[1]),P[2]=d.dot(p[1],p[2]),L(p[2],p[2],p[1],1,-P[2]),g[2]=d.length(p[2]),d.normalize(p[2],p[2]),P[1]/=g[2],P[2]/=g[2],d.cross(E,p[1],p[2]),d.dot(p[0],E)<0)for(var ae=0;ae<3;ae++)g[ae]*=-1,p[ae][0]*=-1,p[ae][1]*=-1,p[ae][2]*=-1;return F[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),F[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),F[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),F[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(F[0]=-F[0]),p[0][2]>p[2][0]&&(F[1]=-F[1]),p[1][0]>p[0][1]&&(F[2]=-F[2]),!0};function k(_,C,M){var g=C[0],P=C[1],T=C[2],F=C[3];return _[0]=M[0]*g+M[4]*P+M[8]*T+M[12]*F,_[1]=M[1]*g+M[5]*P+M[9]*T+M[13]*F,_[2]=M[2]*g+M[6]*P+M[10]*T+M[14]*F,_[3]=M[3]*g+M[7]*P+M[11]*T+M[15]*F,_}function A(_,C){_[0][0]=C[0],_[0][1]=C[1],_[0][2]=C[2],_[1][0]=C[4],_[1][1]=C[5],_[1][2]=C[6],_[2][0]=C[8],_[2][1]=C[9],_[2][2]=C[10]}function L(_,C,M,g,P){_[0]=C[0]*g+M[0]*P,_[1]=C[1]*g+M[1]*P,_[2]=C[2]*g+M[2]*P}},4335:function(i){i.exports=function(o,s){var l=s[15];if(l===0)return!1;for(var u=1/l,c=0;c<16;c++)o[c]=s[c]*u;return!0}},7442:function(i,a,o){var s=o(6658),l=o(7182),u=o(2652),c=o(9921),f=o(8648),h=b(),d=b(),v=b();i.exports=x;function x(k,A,L,_){if(c(A)===0||c(L)===0)return!1;var C=u(A,h.translate,h.scale,h.skew,h.perspective,h.quaternion),M=u(L,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return!C||!M?!1:(s(v.translate,h.translate,d.translate,_),s(v.skew,h.skew,d.skew,_),s(v.scale,h.scale,d.scale,_),s(v.perspective,h.perspective,d.perspective,_),f(v.quaternion,h.quaternion,d.quaternion,_),l(k,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function b(){return{translate:p(),scale:p(1),skew:p(),perspective:E(),quaternion:E()}}function p(k){return[k||0,k||0,k||0]}function E(){return[0,0,0,1]}},7182:function(i,a,o){var s={identity:o(7894),translate:o(7656),multiply:o(6760),create:o(6864),scale:o(2504),fromRotationTranslation:o(6743)},l=s.create(),u=s.create();i.exports=function(f,h,d,v,x,b){return s.identity(f),s.fromRotationTranslation(f,b,h),f[3]=x[0],f[7]=x[1],f[11]=x[2],f[15]=x[3],s.identity(u),v[2]!==0&&(u[9]=v[2],s.multiply(f,f,u)),v[1]!==0&&(u[9]=0,u[8]=v[1],s.multiply(f,f,u)),v[0]!==0&&(u[8]=0,u[4]=v[0],s.multiply(f,f,u)),s.scale(f,f,d),f}},1811:function(i,a,o){"use strict";var s=o(2478),l=o(7442),u=o(7608),c=o(5567),f=o(2408),h=o(7089),d=o(6582),v=o(7656),x=o(2504),b=o(3536),p=[0,0,0];i.exports=L;function E(_){this._components=_.slice(),this._time=[0],this.prevMatrix=_.slice(),this.nextMatrix=_.slice(),this.computedMatrix=_.slice(),this.computedInverse=_.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var k=E.prototype;k.recalcMatrix=function(_){var C=this._time,M=s.le(C,_),g=this.computedMatrix;if(!(M<0)){var P=this._components;if(M===C.length-1)for(var T=16*M,F=0;F<16;++F)g[F]=P[T++];else{for(var q=C[M+1]-C[M],T=16*M,V=this.prevMatrix,H=!0,F=0;F<16;++F)V[F]=P[T++];for(var X=this.nextMatrix,F=0;F<16;++F)X[F]=P[T++],H=H&&V[F]===X[F];if(q<1e-6||H)for(var F=0;F<16;++F)g[F]=V[F];else l(g,V,X,(_-C[M])/q)}var G=this.computedUp;G[0]=g[1],G[1]=g[5],G[2]=g[9],b(G,G);var N=this.computedInverse;u(N,g);var W=this.computedEye,re=N[15];W[0]=N[12]/re,W[1]=N[13]/re,W[2]=N[14]/re;for(var ae=this.computedCenter,_e=Math.exp(this.computedRadius[0]),F=0;F<3;++F)ae[F]=W[F]-g[2+4*F]*_e}},k.idle=function(_){if(!(_1&&s(u[d[p-2]],u[d[p-1]],b)<=0;)p-=1,d.pop();for(d.push(x),p=v.length;p>1&&s(u[v[p-2]],u[v[p-1]],b)>=0;)p-=1,v.pop();v.push(x)}for(var E=new Array(v.length+d.length-2),k=0,f=0,A=d.length;f0;--L)E[k++]=v[L];return E}},351:function(i,a,o){"use strict";i.exports=l;var s=o(4687);function l(u,c){c||(c=u,u=window);var f=0,h=0,d=0,v={shift:!1,alt:!1,control:!1,meta:!1},x=!1;function b(T){var F=!1;return"altKey"in T&&(F=F||T.altKey!==v.alt,v.alt=!!T.altKey),"shiftKey"in T&&(F=F||T.shiftKey!==v.shift,v.shift=!!T.shiftKey),"ctrlKey"in T&&(F=F||T.ctrlKey!==v.control,v.control=!!T.ctrlKey),"metaKey"in T&&(F=F||T.metaKey!==v.meta,v.meta=!!T.metaKey),F}function p(T,F){var q=s.x(F),V=s.y(F);"buttons"in F&&(T=F.buttons|0),(T!==f||q!==h||V!==d||b(F))&&(f=T|0,h=q||0,d=V||0,c&&c(f,h,d,v))}function E(T){p(0,T)}function k(){(f||h||d||v.shift||v.alt||v.meta||v.control)&&(h=d=0,f=0,v.shift=v.alt=v.control=v.meta=!1,c&&c(0,0,0,v))}function A(T){b(T)&&c&&c(f,h,d,v)}function L(T){s.buttons(T)===0?p(0,T):p(f,T)}function _(T){p(f|s.buttons(T),T)}function C(T){p(f&~s.buttons(T),T)}function M(){x||(x=!0,u.addEventListener("mousemove",L),u.addEventListener("mousedown",_),u.addEventListener("mouseup",C),u.addEventListener("mouseleave",E),u.addEventListener("mouseenter",E),u.addEventListener("mouseout",E),u.addEventListener("mouseover",E),u.addEventListener("blur",k),u.addEventListener("keyup",A),u.addEventListener("keydown",A),u.addEventListener("keypress",A),u!==window&&(window.addEventListener("blur",k),window.addEventListener("keyup",A),window.addEventListener("keydown",A),window.addEventListener("keypress",A)))}function g(){x&&(x=!1,u.removeEventListener("mousemove",L),u.removeEventListener("mousedown",_),u.removeEventListener("mouseup",C),u.removeEventListener("mouseleave",E),u.removeEventListener("mouseenter",E),u.removeEventListener("mouseout",E),u.removeEventListener("mouseover",E),u.removeEventListener("blur",k),u.removeEventListener("keyup",A),u.removeEventListener("keydown",A),u.removeEventListener("keypress",A),u!==window&&(window.removeEventListener("blur",k),window.removeEventListener("keyup",A),window.removeEventListener("keydown",A),window.removeEventListener("keypress",A)))}M();var P={element:u};return Object.defineProperties(P,{enabled:{get:function(){return x},set:function(T){T?M():g()},enumerable:!0},buttons:{get:function(){return f},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return d},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),P}},24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},4687:function(i,a){"use strict";function o(c){if(typeof c=="object"){if("buttons"in c)return c.buttons;if("which"in c){var f=c.which;if(f===2)return 4;if(f===3)return 2;if(f>0)return 1<=0)return 1<0){if(Me=1,ie[Ee++]=v(M[F],k,A,L),F+=re,_>0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;for(F+=ae,Ee=0,ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,Me=2;Me0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L)),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L),qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;Me&1&&(Ee=0),ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,F+=ae}}b(Te),b(ie)}},"false,1,0":function(h,d,v,x,b){return function(E,k,A,L){var _=E.shape[0]|0,C=E.shape[1]|0,M=E.data,g=E.offset|0,P=E.stride[0]|0,T=E.stride[1]|0,F=g,q,V=-P|0,H=0,X=-T|0,G=0,N=-P-T|0,W=0,re=T|0,ae=P-T*C|0,_e=0,Me=0,ke=0,ge=2*C|0,ie=x(ge),Te=x(ge),Ee=0,Ae=0,ze=-1,Ce=-1,me=0,Re=-C|0,ce=C|0,Ge=0,nt=-C-1|0,ct=C-1|0,qt=0,rt=0,ot=0;for(Me=0;Me0){if(_e=1,ie[Ee++]=v(M[F],k,A,L),F+=re,C>0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,Me=2;Me0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,W,H,qt,Ge,k,A,L)),Ee+=1,F+=re,Me=2;Me 0"),typeof f.vertex!="function"&&h("Must specify vertex creation function"),typeof f.cell!="function"&&h("Must specify cell creation function"),typeof f.phase!="function"&&h("Must specify phase function");for(var b=f.getters||[],p=new Array(v),E=0;E=0?p[E]=!0:p[E]=!1;return u(f.vertex,f.cell,f.phase,x,d,p)}},6199:function(i,a,o){"use strict";var s=o(1338),l={zero:function(L,_,C,M){var g=L[0],P=C[0];M|=0;var T=0,F=P;for(T=0;T2&&T[1]>2&&M(P.pick(-1,-1).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,0).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,1).lo(1,1).hi(T[0]-2,T[1]-2)),T[1]>2&&(C(P.pick(0,-1).lo(1).hi(T[1]-2),g.pick(0,-1,1).lo(1).hi(T[1]-2)),_(g.pick(0,-1,0).lo(1).hi(T[1]-2))),T[1]>2&&(C(P.pick(T[0]-1,-1).lo(1).hi(T[1]-2),g.pick(T[0]-1,-1,1).lo(1).hi(T[1]-2)),_(g.pick(T[0]-1,-1,0).lo(1).hi(T[1]-2))),T[0]>2&&(C(P.pick(-1,0).lo(1).hi(T[0]-2),g.pick(-1,0,0).lo(1).hi(T[0]-2)),_(g.pick(-1,0,1).lo(1).hi(T[0]-2))),T[0]>2&&(C(P.pick(-1,T[1]-1).lo(1).hi(T[0]-2),g.pick(-1,T[1]-1,0).lo(1).hi(T[0]-2)),_(g.pick(-1,T[1]-1,1).lo(1).hi(T[0]-2))),g.set(0,0,0,0),g.set(0,0,1,0),g.set(T[0]-1,0,0,0),g.set(T[0]-1,0,1,0),g.set(0,T[1]-1,0,0),g.set(0,T[1]-1,1,0),g.set(T[0]-1,T[1]-1,0,0),g.set(T[0]-1,T[1]-1,1,0),g}}function A(L){var _=L.join(),T=v[_];if(T)return T;for(var C=L.length,M=[b,p],g=1;g<=C;++g)M.push(E(g));var P=k,T=P.apply(void 0,M);return v[_]=T,T}i.exports=function(_,C,M){if(Array.isArray(M)||(typeof M=="string"?M=s(C.dimension,M):M=s(C.dimension,"clamp")),C.size===0)return _;if(C.dimension===0)return _.set(0),_;var g=A(M);return g(_,C)}},4317:function(i){"use strict";function a(c,f){var h=Math.floor(f),d=f-h,v=0<=h&&h0;){G<64?(_=G,G=0):(_=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(C=N,N=0):(C=64,N-=64),p=H+G*g+N*P,A=X+G*F+N*q;var W=0,re=0,ae=0,_e=T,Me=g-M*T,ke=P-_*g,ge=V,ie=F-M*V,Te=q-_*F;for(ae=0;ae0;){q<64?(_=q,q=0):(_=64,q-=64);for(var V=v[0]|0;V>0;){V<64?(L=V,V=0):(L=64,V-=64),p=T+q*M+V*C,A=F+q*P+V*g;var H=0,X=0,G=M,N=C-_*M,W=P,re=g-_*P;for(X=0;X0;){X<64?(C=X,X=0):(C=64,X-=64);for(var G=v[0]|0;G>0;){G<64?(L=G,G=0):(L=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(_=N,N=0):(_=64,N-=64),p=V+X*P+G*M+N*g,A=H+X*q+G*T+N*F;var W=0,re=0,ae=0,_e=P,Me=M-C*P,ke=g-L*M,ge=q,ie=T-C*q,Te=F-L*T;for(ae=0;ae<_;++ae){for(re=0;reE;){W=0,re=H-_;t:for(G=0;G_e)break t;re+=T,W+=F}for(W=H,re=H-_,G=0;G>1,N=G-V,W=G+V,re=H,ae=N,_e=G,Me=W,ke=X,ge=k+1,ie=A-1,Te=!0,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct=0,qt=0,rt=0,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St,Et,dt,Ht,$t,fr=P,_r=b(fr),Br=b(fr);Rt=C*re,kt=C*ae,$t=_;e:for(ot=0;ot0){Ae=re,re=ae,ae=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=re,re=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=re,re=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*_e,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=_e,_e=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=ae,ae=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}for(Rt=C*re,kt=C*ae,Ct=C*_e,Yt=C*Me,xr=C*ke,er=C*H,Ke=C*G,xt=C*X,Ht=0,$t=_,ot=0;ot0)ie--;else if(rt<0){for(Rt=C*Re,kt=C*ge,Ct=C*ie,$t=_,ot=0;ot0)for(;;){ce=_+ie*C,Ht=0;e:for(ot=0;ot0){if(--ieX){e:for(;;){for(ce=_+ge*C,Ht=0,$t=_,ot=0;ot1&&E?A(p,E[0],E[1]):A(p)}var d={"uint32,1,0":function(x,b){return function(p){var E=p.data,k=p.offset|0,A=p.shape,L=p.stride,_=L[0]|0,C=A[0]|0,M=L[1]|0,g=A[1]|0,P=M,T=M,F=1;C<=32?x(0,C-1,E,k,_,M,C,g,P,T,F):b(0,C-1,E,k,_,M,C,g,P,T,F)}}};function v(x,b){var p=[b,x].join(","),E=d[p],k=c(x,b),A=h(x,b,k);return E(k,A)}i.exports=v},446:function(i,a,o){"use strict";var s=o(7640),l={};function u(c){var f=c.order,h=c.dtype,d=[f,h],v=d.join(":"),x=l[v];return x||(l[v]=x=s(f,h)),x(c),c}i.exports=u},9618:function(i,a,o){var s=o(7163),l=typeof Float64Array!="undefined";function u(b,p){return b[0]-p[0]}function c(){var b=this.stride,p=new Array(b.length),E;for(E=0;E=0&&(M=_|0,C+=P*M,g-=M),new k(this.data,g,P,C)},A.step=function(_){var C=this.shape[0],M=this.stride[0],g=this.offset,P=0,T=Math.ceil;return typeof _=="number"&&(P=_|0,P<0?(g+=M*(C-1),C=T(-C/P)):C=T(C/P),M*=P),new k(this.data,C,M,g)},A.transpose=function(_){_=_===void 0?0:_|0;var C=this.shape,M=this.stride;return new k(this.data,C[_],M[_],this.offset)},A.pick=function(_){var C=[],M=[],g=this.offset;typeof _=="number"&&_>=0?g=g+this.stride[0]*_|0:(C.push(this.shape[0]),M.push(this.stride[0]));var P=p[C.length+1];return P(this.data,C,M,g)},function(_,C,M,g){return new k(_,C[0],M[0],g)}},2:function(b,p,E){function k(L,_,C,M,g,P){this.data=L,this.shape=[_,C],this.stride=[M,g],this.offset=P|0}var A=k.prototype;return A.dtype=b,A.dimension=2,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(A,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),A.set=function(_,C,M){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C,M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]=M},A.get=function(_,C){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]},A.index=function(_,C){return this.offset+this.stride[0]*_+this.stride[1]*C},A.hi=function(_,C){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,this.stride[0],this.stride[1],this.offset)},A.lo=function(_,C){var M=this.offset,g=0,P=this.shape[0],T=this.shape[1],F=this.stride[0],q=this.stride[1];return typeof _=="number"&&_>=0&&(g=_|0,M+=F*g,P-=g),typeof C=="number"&&C>=0&&(g=C|0,M+=q*g,T-=g),new k(this.data,P,T,F,q,M)},A.step=function(_,C){var M=this.shape[0],g=this.shape[1],P=this.stride[0],T=this.stride[1],F=this.offset,q=0,V=Math.ceil;return typeof _=="number"&&(q=_|0,q<0?(F+=P*(M-1),M=V(-M/q)):M=V(M/q),P*=q),typeof C=="number"&&(q=C|0,q<0?(F+=T*(g-1),g=V(-g/q)):g=V(g/q),T*=q),new k(this.data,M,g,P,T,F)},A.transpose=function(_,C){_=_===void 0?0:_|0,C=C===void 0?1:C|0;var M=this.shape,g=this.stride;return new k(this.data,M[_],M[C],g[_],g[C],this.offset)},A.pick=function(_,C){var M=[],g=[],P=this.offset;typeof _=="number"&&_>=0?P=P+this.stride[0]*_|0:(M.push(this.shape[0]),g.push(this.stride[0])),typeof C=="number"&&C>=0?P=P+this.stride[1]*C|0:(M.push(this.shape[1]),g.push(this.stride[1]));var T=p[M.length+1];return T(this.data,M,g,P)},function(_,C,M,g){return new k(_,C[0],C[1],M[0],M[1],g)}},3:function(b,p,E){function k(L,_,C,M,g,P,T,F){this.data=L,this.shape=[_,C,M],this.stride=[g,P,T],this.offset=F|0}var A=k.prototype;return A.dtype=b,A.dimension=3,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(A,"order",{get:function(){var _=Math.abs(this.stride[0]),C=Math.abs(this.stride[1]),M=Math.abs(this.stride[2]);return _>C?C>M?[2,1,0]:_>M?[1,2,0]:[1,0,2]:_>M?[2,0,1]:M>C?[0,1,2]:[0,2,1]}}),A.set=function(_,C,M,g){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M,g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]=g},A.get=function(_,C,M){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]},A.index=function(_,C,M){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M},A.hi=function(_,C,M){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},A.lo=function(_,C,M){var g=this.offset,P=0,T=this.shape[0],F=this.shape[1],q=this.shape[2],V=this.stride[0],H=this.stride[1],X=this.stride[2];return typeof _=="number"&&_>=0&&(P=_|0,g+=V*P,T-=P),typeof C=="number"&&C>=0&&(P=C|0,g+=H*P,F-=P),typeof M=="number"&&M>=0&&(P=M|0,g+=X*P,q-=P),new k(this.data,T,F,q,V,H,X,g)},A.step=function(_,C,M){var g=this.shape[0],P=this.shape[1],T=this.shape[2],F=this.stride[0],q=this.stride[1],V=this.stride[2],H=this.offset,X=0,G=Math.ceil;return typeof _=="number"&&(X=_|0,X<0?(H+=F*(g-1),g=G(-g/X)):g=G(g/X),F*=X),typeof C=="number"&&(X=C|0,X<0?(H+=q*(P-1),P=G(-P/X)):P=G(P/X),q*=X),typeof M=="number"&&(X=M|0,X<0?(H+=V*(T-1),T=G(-T/X)):T=G(T/X),V*=X),new k(this.data,g,P,T,F,q,V,H)},A.transpose=function(_,C,M){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0;var g=this.shape,P=this.stride;return new k(this.data,g[_],g[C],g[M],P[_],P[C],P[M],this.offset)},A.pick=function(_,C,M){var g=[],P=[],T=this.offset;typeof _=="number"&&_>=0?T=T+this.stride[0]*_|0:(g.push(this.shape[0]),P.push(this.stride[0])),typeof C=="number"&&C>=0?T=T+this.stride[1]*C|0:(g.push(this.shape[1]),P.push(this.stride[1])),typeof M=="number"&&M>=0?T=T+this.stride[2]*M|0:(g.push(this.shape[2]),P.push(this.stride[2]));var F=p[g.length+1];return F(this.data,g,P,T)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],M[0],M[1],M[2],g)}},4:function(b,p,E){function k(L,_,C,M,g,P,T,F,q,V){this.data=L,this.shape=[_,C,M,g],this.stride=[P,T,F,q],this.offset=V|0}var A=k.prototype;return A.dtype=b,A.dimension=4,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(A,"order",{get:E}),A.set=function(_,C,M,g,P){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g,P):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]=P},A.get=function(_,C,M,g){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]},A.index=function(_,C,M,g){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g},A.hi=function(_,C,M,g){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,typeof g!="number"||g<0?this.shape[3]:g|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},A.lo=function(_,C,M,g){var P=this.offset,T=0,F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.stride[0],G=this.stride[1],N=this.stride[2],W=this.stride[3];return typeof _=="number"&&_>=0&&(T=_|0,P+=X*T,F-=T),typeof C=="number"&&C>=0&&(T=C|0,P+=G*T,q-=T),typeof M=="number"&&M>=0&&(T=M|0,P+=N*T,V-=T),typeof g=="number"&&g>=0&&(T=g|0,P+=W*T,H-=T),new k(this.data,F,q,V,H,X,G,N,W,P)},A.step=function(_,C,M,g){var P=this.shape[0],T=this.shape[1],F=this.shape[2],q=this.shape[3],V=this.stride[0],H=this.stride[1],X=this.stride[2],G=this.stride[3],N=this.offset,W=0,re=Math.ceil;return typeof _=="number"&&(W=_|0,W<0?(N+=V*(P-1),P=re(-P/W)):P=re(P/W),V*=W),typeof C=="number"&&(W=C|0,W<0?(N+=H*(T-1),T=re(-T/W)):T=re(T/W),H*=W),typeof M=="number"&&(W=M|0,W<0?(N+=X*(F-1),F=re(-F/W)):F=re(F/W),X*=W),typeof g=="number"&&(W=g|0,W<0?(N+=G*(q-1),q=re(-q/W)):q=re(q/W),G*=W),new k(this.data,P,T,F,q,V,H,X,G,N)},A.transpose=function(_,C,M,g){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0,g=g===void 0?3:g|0;var P=this.shape,T=this.stride;return new k(this.data,P[_],P[C],P[M],P[g],T[_],T[C],T[M],T[g],this.offset)},A.pick=function(_,C,M,g){var P=[],T=[],F=this.offset;typeof _=="number"&&_>=0?F=F+this.stride[0]*_|0:(P.push(this.shape[0]),T.push(this.stride[0])),typeof C=="number"&&C>=0?F=F+this.stride[1]*C|0:(P.push(this.shape[1]),T.push(this.stride[1])),typeof M=="number"&&M>=0?F=F+this.stride[2]*M|0:(P.push(this.shape[2]),T.push(this.stride[2])),typeof g=="number"&&g>=0?F=F+this.stride[3]*g|0:(P.push(this.shape[3]),T.push(this.stride[3]));var q=p[P.length+1];return q(this.data,P,T,F)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],C[3],M[0],M[1],M[2],M[3],g)}},5:function(p,E,k){function A(_,C,M,g,P,T,F,q,V,H,X,G){this.data=_,this.shape=[C,M,g,P,T],this.stride=[F,q,V,H,X],this.offset=G|0}var L=A.prototype;return L.dtype=p,L.dimension=5,Object.defineProperty(L,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(L,"order",{get:k}),L.set=function(C,M,g,P,T,F){return p==="generic"?this.data.set(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T,F):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]=F},L.get=function(C,M,g,P,T){return p==="generic"?this.data.get(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]},L.index=function(C,M,g,P,T){return this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T},L.hi=function(C,M,g,P,T){return new A(this.data,typeof C!="number"||C<0?this.shape[0]:C|0,typeof M!="number"||M<0?this.shape[1]:M|0,typeof g!="number"||g<0?this.shape[2]:g|0,typeof P!="number"||P<0?this.shape[3]:P|0,typeof T!="number"||T<0?this.shape[4]:T|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},L.lo=function(C,M,g,P,T){var F=this.offset,q=0,V=this.shape[0],H=this.shape[1],X=this.shape[2],G=this.shape[3],N=this.shape[4],W=this.stride[0],re=this.stride[1],ae=this.stride[2],_e=this.stride[3],Me=this.stride[4];return typeof C=="number"&&C>=0&&(q=C|0,F+=W*q,V-=q),typeof M=="number"&&M>=0&&(q=M|0,F+=re*q,H-=q),typeof g=="number"&&g>=0&&(q=g|0,F+=ae*q,X-=q),typeof P=="number"&&P>=0&&(q=P|0,F+=_e*q,G-=q),typeof T=="number"&&T>=0&&(q=T|0,F+=Me*q,N-=q),new A(this.data,V,H,X,G,N,W,re,ae,_e,Me,F)},L.step=function(C,M,g,P,T){var F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.shape[4],G=this.stride[0],N=this.stride[1],W=this.stride[2],re=this.stride[3],ae=this.stride[4],_e=this.offset,Me=0,ke=Math.ceil;return typeof C=="number"&&(Me=C|0,Me<0?(_e+=G*(F-1),F=ke(-F/Me)):F=ke(F/Me),G*=Me),typeof M=="number"&&(Me=M|0,Me<0?(_e+=N*(q-1),q=ke(-q/Me)):q=ke(q/Me),N*=Me),typeof g=="number"&&(Me=g|0,Me<0?(_e+=W*(V-1),V=ke(-V/Me)):V=ke(V/Me),W*=Me),typeof P=="number"&&(Me=P|0,Me<0?(_e+=re*(H-1),H=ke(-H/Me)):H=ke(H/Me),re*=Me),typeof T=="number"&&(Me=T|0,Me<0?(_e+=ae*(X-1),X=ke(-X/Me)):X=ke(X/Me),ae*=Me),new A(this.data,F,q,V,H,X,G,N,W,re,ae,_e)},L.transpose=function(C,M,g,P,T){C=C===void 0?0:C|0,M=M===void 0?1:M|0,g=g===void 0?2:g|0,P=P===void 0?3:P|0,T=T===void 0?4:T|0;var F=this.shape,q=this.stride;return new A(this.data,F[C],F[M],F[g],F[P],F[T],q[C],q[M],q[g],q[P],q[T],this.offset)},L.pick=function(C,M,g,P,T){var F=[],q=[],V=this.offset;typeof C=="number"&&C>=0?V=V+this.stride[0]*C|0:(F.push(this.shape[0]),q.push(this.stride[0])),typeof M=="number"&&M>=0?V=V+this.stride[1]*M|0:(F.push(this.shape[1]),q.push(this.stride[1])),typeof g=="number"&&g>=0?V=V+this.stride[2]*g|0:(F.push(this.shape[2]),q.push(this.stride[2])),typeof P=="number"&&P>=0?V=V+this.stride[3]*P|0:(F.push(this.shape[3]),q.push(this.stride[3])),typeof T=="number"&&T>=0?V=V+this.stride[4]*T|0:(F.push(this.shape[4]),q.push(this.stride[4]));var H=E[F.length+1];return H(this.data,F,q,V)},function(C,M,g,P){return new A(C,M[0],M[1],M[2],M[3],M[4],g[0],g[1],g[2],g[3],g[4],P)}}};function h(b,p){var E=p===-1?"T":String(p),k=f[E];return p===-1?k(b):p===0?k(b,v[b][0]):k(b,v[b],c)}function d(b){if(s(b))return"buffer";if(l)switch(Object.prototype.toString.call(b)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(b)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function x(b,p,E,k){if(b===void 0){var g=v.array[0];return g([])}else typeof b=="number"&&(b=[b]);p===void 0&&(p=[b.length]);var A=p.length;if(E===void 0){E=new Array(A);for(var L=A-1,_=1;L>=0;--L)E[L]=_,_*=p[L]}if(k===void 0){k=0;for(var L=0;L>>0;i.exports=c;function c(f,h){if(isNaN(f)||isNaN(h))return NaN;if(f===h)return f;if(f===0)return h<0?-l:l;var d=s.hi(f),v=s.lo(f);return h>f==f>0?v===u?(d+=1,v=0):v+=1:v===0?(v=u,d-=1):v-=1,s.pack(v,d)}},8406:function(i,a){var o=1e-6,s=1e-6;a.vertexNormals=function(l,u,c){for(var f=u.length,h=new Array(f),d=c===void 0?o:c,v=0;vd)for(var F=h[p],q=1/Math.sqrt(M*P),T=0;T<3;++T){var V=(T+1)%3,H=(T+2)%3;F[T]+=q*(g[V]*C[H]-g[H]*C[V])}}for(var v=0;vd)for(var q=1/Math.sqrt(X),T=0;T<3;++T)F[T]*=q;else for(var T=0;T<3;++T)F[T]=0}return h},a.faceNormals=function(l,u,c){for(var f=l.length,h=new Array(f),d=c===void 0?s:c,v=0;vd?L=1/Math.sqrt(L):L=0;for(var p=0;p<3;++p)A[p]*=L;h[v]=A}return h}},4081:function(i){"use strict";i.exports=a;function a(o,s,l,u,c,f,h,d,v,x){var b=s+f+x;if(p>0){var p=Math.sqrt(b+1);o[0]=.5*(h-v)/p,o[1]=.5*(d-u)/p,o[2]=.5*(l-f)/p,o[3]=.5*p}else{var E=Math.max(s,f,x),p=Math.sqrt(2*E-b+1);s>=E?(o[0]=.5*p,o[1]=.5*(c+l)/p,o[2]=.5*(d+u)/p,o[3]=.5*(h-v)/p):f>=E?(o[0]=.5*(l+c)/p,o[1]=.5*p,o[2]=.5*(v+h)/p,o[3]=.5*(d-u)/p):(o[0]=.5*(u+d)/p,o[1]=.5*(h+v)/p,o[2]=.5*p,o[3]=.5*(l-c)/p)}return o}},9977:function(i,a,o){"use strict";i.exports=p;var s=o(9215),l=o(6582),u=o(7399),c=o(7608),f=o(4081);function h(E,k,A){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2))}function d(E,k,A,L){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2)+Math.pow(L,2))}function v(E,k){var A=k[0],L=k[1],_=k[2],C=k[3],M=d(A,L,_,C);M>1e-6?(E[0]=A/M,E[1]=L/M,E[2]=_/M,E[3]=C/M):(E[0]=E[1]=E[2]=0,E[3]=1)}function x(E,k,A){this.radius=s([A]),this.center=s(k),this.rotation=s(E),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var b=x.prototype;b.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},b.recalcMatrix=function(E){this.radius.curve(E),this.center.curve(E),this.rotation.curve(E);var k=this.computedRotation;v(k,k);var A=this.computedMatrix;u(A,k);var L=this.computedCenter,_=this.computedEye,C=this.computedUp,M=Math.exp(this.computedRadius[0]);_[0]=L[0]+M*A[2],_[1]=L[1]+M*A[6],_[2]=L[2]+M*A[10],C[0]=A[1],C[1]=A[5],C[2]=A[9];for(var g=0;g<3;++g){for(var P=0,T=0;T<3;++T)P+=A[g+4*T]*_[T];A[12+g]=-P}},b.getMatrix=function(E,k){this.recalcMatrix(E);var A=this.computedMatrix;if(k){for(var L=0;L<16;++L)k[L]=A[L];return k}return A},b.idle=function(E){this.center.idle(E),this.radius.idle(E),this.rotation.idle(E)},b.flush=function(E){this.center.flush(E),this.radius.flush(E),this.rotation.flush(E)},b.pan=function(E,k,A,L){k=k||0,A=A||0,L=L||0,this.recalcMatrix(E);var _=this.computedMatrix,C=_[1],M=_[5],g=_[9],P=h(C,M,g);C/=P,M/=P,g/=P;var T=_[0],F=_[4],q=_[8],V=T*C+F*M+q*g;T-=C*V,F-=M*V,q-=g*V;var H=h(T,F,q);T/=H,F/=H,q/=H;var X=_[2],G=_[6],N=_[10],W=X*C+G*M+N*g,re=X*T+G*F+N*q;X-=W*C+re*T,G-=W*M+re*F,N-=W*g+re*q;var ae=h(X,G,N);X/=ae,G/=ae,N/=ae;var _e=T*k+C*A,Me=F*k+M*A,ke=q*k+g*A;this.center.move(E,_e,Me,ke);var ge=Math.exp(this.computedRadius[0]);ge=Math.max(1e-4,ge+L),this.radius.set(E,Math.log(ge))},b.rotate=function(E,k,A,L){this.recalcMatrix(E),k=k||0,A=A||0;var _=this.computedMatrix,C=_[0],M=_[4],g=_[8],P=_[1],T=_[5],F=_[9],q=_[2],V=_[6],H=_[10],X=k*C+A*P,G=k*M+A*T,N=k*g+A*F,W=-(V*N-H*G),re=-(H*X-q*N),ae=-(q*G-V*X),_e=Math.sqrt(Math.max(0,1-Math.pow(W,2)-Math.pow(re,2)-Math.pow(ae,2))),Me=d(W,re,ae,_e);Me>1e-6?(W/=Me,re/=Me,ae/=Me,_e/=Me):(W=re=ae=0,_e=1);var ke=this.computedRotation,ge=ke[0],ie=ke[1],Te=ke[2],Ee=ke[3],Ae=ge*_e+Ee*W+ie*ae-Te*re,ze=ie*_e+Ee*re+Te*W-ge*ae,Ce=Te*_e+Ee*ae+ge*re-ie*W,me=Ee*_e-ge*W-ie*re-Te*ae;if(L){W=q,re=V,ae=H;var Re=Math.sin(L)/h(W,re,ae);W*=Re,re*=Re,ae*=Re,_e=Math.cos(k),Ae=Ae*_e+me*W+ze*ae-Ce*re,ze=ze*_e+me*re+Ce*W-Ae*ae,Ce=Ce*_e+me*ae+Ae*re-ze*W,me=me*_e-Ae*W-ze*re-Ce*ae}var ce=d(Ae,ze,Ce,me);ce>1e-6?(Ae/=ce,ze/=ce,Ce/=ce,me/=ce):(Ae=ze=Ce=0,me=1),this.rotation.set(E,Ae,ze,Ce,me)},b.lookAt=function(E,k,A,L){this.recalcMatrix(E),A=A||this.computedCenter,k=k||this.computedEye,L=L||this.computedUp;var _=this.computedMatrix;l(_,k,A,L);var C=this.computedRotation;f(C,_[0],_[1],_[2],_[4],_[5],_[6],_[8],_[9],_[10]),v(C,C),this.rotation.set(E,C[0],C[1],C[2],C[3]);for(var M=0,g=0;g<3;++g)M+=Math.pow(A[g]-k[g],2);this.radius.set(E,.5*Math.log(Math.max(M,1e-6))),this.center.set(E,A[0],A[1],A[2])},b.translate=function(E,k,A,L){this.center.move(E,k||0,A||0,L||0)},b.setMatrix=function(E,k){var A=this.computedRotation;f(A,k[0],k[1],k[2],k[4],k[5],k[6],k[8],k[9],k[10]),v(A,A),this.rotation.set(E,A[0],A[1],A[2],A[3]);var L=this.computedMatrix;c(L,k);var _=L[15];if(Math.abs(_)>1e-6){var C=L[12]/_,M=L[13]/_,g=L[14]/_;this.recalcMatrix(E);var P=Math.exp(this.computedRadius[0]);this.center.set(E,C-L[2]*P,M-L[6]*P,g-L[10]*P),this.radius.idle(E)}else this.center.idle(E),this.radius.idle(E)},b.setDistance=function(E,k){k>0&&this.radius.set(E,Math.log(k))},b.setDistanceLimits=function(E,k){E>0?E=Math.log(E):E=-1/0,k>0?k=Math.log(k):k=1/0,k=Math.max(k,E),this.radius.bounds[0][0]=E,this.radius.bounds[1][0]=k},b.getDistanceLimits=function(E){var k=this.radius.bounds;return E?(E[0]=Math.exp(k[0][0]),E[1]=Math.exp(k[1][0]),E):[Math.exp(k[0][0]),Math.exp(k[1][0])]},b.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},b.fromJSON=function(E){var k=this.lastT(),A=E.center;A&&this.center.set(k,A[0],A[1],A[2]);var L=E.rotation;L&&this.rotation.set(k,L[0],L[1],L[2],L[3]);var _=E.distance;_&&_>0&&this.radius.set(k,Math.log(_)),this.setDistanceLimits(E.zoomMin,E.zoomMax)};function p(E){E=E||{};var k=E.center||[0,0,0],A=E.rotation||[0,0,0,1],L=E.radius||1;k=[].slice.call(k,0,3),A=[].slice.call(A,0,4),v(A,A);var _=new x(A,k,Math.log(L));return _.setDistanceLimits(E.zoomMin,E.zoomMax),("eye"in E||"up"in E)&&_.lookAt(0,E.eye,E.center,E.up),_}},1371:function(i,a,o){"use strict";var s=o(3233);i.exports=function(u,c,f){return f=typeof f!="undefined"?f+"":" ",s(f,c)+u}},3202:function(i){i.exports=function(o,s){s||(s=[0,""]),o=String(o);var l=parseFloat(o,10);return s[0]=l,s[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},3088:function(i,a,o){"use strict";i.exports=l;var s=o(3140);function l(u,c){for(var f=c.length|0,h=u.length,d=[new Array(f),new Array(f)],v=0;v0){F=d[H][P][0],V=H;break}q=F[V^1];for(var X=0;X<2;++X)for(var G=d[X][P],N=0;N0&&(F=W,q=re,V=X)}return T||F&&p(F,V),q}function k(g,P){var T=d[P][g][0],F=[g];p(T,P);for(var q=T[P^1],V=P;;){for(;q!==g;)F.push(q),q=E(F[F.length-2],q,!1);if(d[0][g].length+d[1][g].length===0)break;var H=F[F.length-1],X=g,G=F[1],N=E(H,X,!0);if(s(c[H],c[X],c[G],c[N])<0)break;F.push(g),q=E(H,X)}return F}function A(g,P){return P[1]===P[P.length-1]}for(var v=0;v0;){var C=d[0][v].length,M=k(v,L);A(_,M)?_.push.apply(_,M):(_.length>0&&b.push(_),_=M)}_.length>0&&b.push(_)}return b}},5609:function(i,a,o){"use strict";i.exports=l;var s=o(3134);function l(u,c){for(var f=s(u,c.length),h=new Array(c.length),d=new Array(c.length),v=[],x=0;x0;){var p=v.pop();h[p]=!1;for(var E=f[p],x=0;x0}C=C.filter(M);for(var g=C.length,P=new Array(g),T=new Array(g),_=0;_0;){var ce=Ce.pop(),Ge=Me[ce];h(Ge,function(ot,Rt){return ot-Rt});var nt=Ge.length,ct=me[ce],qt;if(ct===0){var G=C[ce];qt=[G]}for(var _=0;_=0)&&(me[rt]=ct^1,Ce.push(rt),ct===0)){var G=C[rt];ze(G)||(G.reverse(),qt.push(G))}}ct===0&&Re.push(qt)}return Re}},5085:function(i,a,o){i.exports=E;var s=o(3250)[3],l=o(4209),u=o(3352),c=o(2478);function f(){return!0}function h(k){return function(A,L){var _=k[A];return _?!!_.queryPoint(L,f):!1}}function d(k){for(var A={},L=0;L0&&A[_]===L[0])C=k[_-1];else return 1;for(var M=1;C;){var g=C.key,P=s(L,g[0],g[1]);if(g[0][0]0)M=-1,C=C.right;else return 0;else if(P>0)C=C.left;else if(P<0)M=1,C=C.right;else return 0}return M}}function x(k){return 1}function b(k){return function(L){return k(L[0],L[1])?0:1}}function p(k,A){return function(_){return k(_[0],_[1])?0:A(_)}}function E(k){for(var A=k.length,L=[],_=[],C=0,M=0;M=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A)):(g=0,k>=0?(P=0,T=A):-k>=p?(P=1,T=p+2*k+A):(P=-k/p,T=k*P+A));else if(P<0)P=0,E>=0?(g=0,T=A):-E>=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A);else{var F=1/M;g*=F,P*=F,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A}else{var q,V,H,X;g<0?(q=b+E,V=p+k,V>q?(H=V-q,X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(g=0,V<=0?(P=1,T=p+2*k+A):k>=0?(P=0,T=A):(P=-k/p,T=k*P+A))):P<0?(q=b+k,V=x+E,V>q?(H=V-q,X=x-2*b+p,H>=X?(P=1,g=0,T=p+2*k+A):(P=H/X,g=1-P,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(P=0,V<=0?(g=1,T=x+2*E+A):E>=0?(g=0,T=A):(g=-E/x,T=E*g+A))):(H=p+k-b-E,H<=0?(g=0,P=1,T=p+2*k+A):(X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)))}for(var G=1-g-P,v=0;v0){var p=f[d-1];if(s(x,p)===0&&u(p)!==b){d-=1;continue}}f[d++]=x}}return f.length=d,f}},3233:function(i){"use strict";var a="",o;i.exports=s;function s(l,u){if(typeof l!="string")throw new TypeError("expected a string");if(u===1)return l;if(u===2)return l+l;var c=l.length*u;if(o!==l||typeof o=="undefined")o=l,a="";else if(a.length>=c)return a.substr(0,c);for(;c>a.length&&u>1;)u&1&&(a+=l),u>>=1,l+=l;return a+=l,a=a.substr(0,c),a}},3025:function(i,a,o){i.exports=o.g.performance&&o.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(i){"use strict";i.exports=a;function a(o){for(var s=o.length,l=o[o.length-1],u=s,c=s-2;c>=0;--c){var f=l,h=o[c];l=f+h;var d=l-f,v=h-d;v&&(o[--u]=l,l=v)}for(var x=0,c=u;c0){if(V<=0)return H;X=q+V}else if(q<0){if(V>=0)return H;X=-(q+V)}else return H;var G=d*X;return H>=G||H<=-G?H:k(P,T,F)},function(P,T,F,q){var V=P[0]-q[0],H=T[0]-q[0],X=F[0]-q[0],G=P[1]-q[1],N=T[1]-q[1],W=F[1]-q[1],re=P[2]-q[2],ae=T[2]-q[2],_e=F[2]-q[2],Me=H*W,ke=X*N,ge=X*G,ie=V*W,Te=V*N,Ee=H*G,Ae=re*(Me-ke)+ae*(ge-ie)+_e*(Te-Ee),ze=(Math.abs(Me)+Math.abs(ke))*Math.abs(re)+(Math.abs(ge)+Math.abs(ie))*Math.abs(ae)+(Math.abs(Te)+Math.abs(Ee))*Math.abs(_e),Ce=v*ze;return Ae>Ce||-Ae>Ce?Ae:A(P,T,F,q)}];function _(g){var P=L[g.length];return P||(P=L[g.length]=E(g.length)),P.apply(void 0,g)}function C(g,P,T,F,q,V,H){return function(G,N,W,re,ae){switch(arguments.length){case 0:case 1:return 0;case 2:return F(G,N);case 3:return q(G,N,W);case 4:return V(G,N,W,re);case 5:return H(G,N,W,re,ae)}for(var _e=new Array(arguments.length),Me=0;Me0&&x>0||v<0&&x<0)return!1;var b=s(h,c,f),p=s(d,c,f);return b>0&&p>0||b<0&&p<0?!1:v===0&&x===0&&b===0&&p===0?l(c,f,h,d):!0}},8545:function(i){"use strict";i.exports=o;function a(s,l){var u=s+l,c=u-s,f=u-c,h=l-c,d=s-f,v=d+h;return v?[v,u]:[u]}function o(s,l){var u=s.length|0,c=l.length|0;if(u===1&&c===1)return a(s[0],-l[0]);var f=u+c,h=new Array(f),d=0,v=0,x=0,b=Math.abs,p=s[v],E=b(p),k=-l[x],A=b(k),L,_;E=c?(L=p,v+=1,v=c?(L=p,v+=1,v>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,X=d(P[H],T);X<=0?(X===0&&(V=H),F=H+1):X>0&&(q=H-1)}return V}s=p;function E(P,T){for(var F=new Array(P.length),q=0,V=F.length;q=P.length||d(P[Me],H)!==0););}return F}s=E;function k(P,T){if(!T)return E(b(L(P,0)),P,0);for(var F=new Array(T),q=0;q>>W&1&&N.push(V[W]);T.push(N)}return x(T)}s=A;function L(P,T){if(T<0)return[];for(var F=[],q=(1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},2014:function(i,a,o){"use strict";"use restrict";var s=o(3105),l=o(4623);function u(g){for(var P=0,T=Math.max,F=0,q=g.length;F>1,H=h(g[V],P);H<=0?(H===0&&(q=V),T=V+1):H>0&&(F=V-1)}return q}a.findCell=b;function p(g,P){for(var T=new Array(g.length),F=0,q=T.length;F=g.length||h(g[_e],V)!==0););}return T}a.incidence=p;function E(g,P){if(!P)return p(x(A(g,0)),g,0);for(var T=new Array(P),F=0;F>>N&1&&G.push(q[N]);P.push(G)}return v(P)}a.explode=k;function A(g,P){if(P<0)return[];for(var T=[],F=(1<>1:(ie>>1)-1}function F(ie){for(var Te=P(ie);;){var Ee=Te,Ae=2*ie+1,ze=2*(ie+1),Ce=ie;if(Ae0;){var Ee=T(ie);if(Ee>=0){var Ae=P(Ee);if(Te0){var ie=G[0];return g(0,re-1),re-=1,F(0),ie}return-1}function H(ie,Te){var Ee=G[ie];return E[Ee]===Te?ie:(E[Ee]=-1/0,q(ie),V(),E[Ee]=Te,re+=1,q(re-1))}function X(ie){if(!k[ie]){k[ie]=!0;var Te=b[ie],Ee=p[ie];b[Ee]>=0&&(b[Ee]=Te),p[Te]>=0&&(p[Te]=Ee),N[Te]>=0&&H(N[Te],M(Te)),N[Ee]>=0&&H(N[Ee],M(Ee))}}for(var G=[],N=new Array(v),A=0;A>1;A>=0;--A)F(A);for(;;){var ae=V();if(ae<0||E[ae]>d)break;X(ae)}for(var _e=[],A=0;A=0&&Ee>=0&&Te!==Ee){var Ae=N[Te],ze=N[Ee];Ae!==ze&&ge.push([Ae,ze])}}),l.unique(l.normalize(ge)),{positions:_e,edges:ge}}},1303:function(i,a,o){"use strict";i.exports=u;var s=o(3250);function l(c,f){var h,d;if(f[0][0]f[1][0])h=f[1],d=f[0];else{var v=Math.min(c[0][1],c[1][1]),x=Math.max(c[0][1],c[1][1]),b=Math.min(f[0][1],f[1][1]),p=Math.max(f[0][1],f[1][1]);return xp?v-p:x-p}var E,k;c[0][1]f[1][0])h=f[1],d=f[0];else return l(f,c);var v,x;if(c[0][0]c[1][0])v=c[1],x=c[0];else return-l(c,f);var b=s(h,d,x),p=s(h,d,v);if(b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;if(b=s(x,v,d),p=s(x,v,h),b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;return d[0]-x[0]}},4209:function(i,a,o){"use strict";i.exports=p;var s=o(2478),l=o(3840),u=o(3250),c=o(1303);function f(E,k,A){this.slabs=E,this.coordinates=k,this.horizontal=A}var h=f.prototype;function d(E,k){return E.y-k}function v(E,k){for(var A=null;E;){var L=E.key,_,C;L[0][0]0)if(k[0]!==L[1][0])A=E,E=E.right;else{var g=v(E.right,k);if(g)return g;E=E.left}else{if(k[0]!==L[1][0])return E;var g=v(E.right,k);if(g)return g;E=E.left}}return A}h.castUp=function(E){var k=s.le(this.coordinates,E[0]);if(k<0)return-1;var A=this.slabs[k],L=v(this.slabs[k],E),_=-1;if(L&&(_=L.value),this.coordinates[k]===E[0]){var C=null;if(L&&(C=L.key),k>0){var M=v(this.slabs[k-1],E);M&&(C?c(M.key,C)>0&&(C=M.key,_=M.value):(_=M.value,C=M.key))}var g=this.horizontal[k];if(g.length>0){var P=s.ge(g,E[1],d);if(P=g.length)return _;T=g[P]}}if(T.start)if(C){var F=u(C[0],C[1],[E[0],T.y]);C[0][0]>C[1][0]&&(F=-F),F>0&&(_=T.index)}else _=T.index;else T.y!==E[1]&&(_=T.index)}}}return _};function x(E,k,A,L){this.y=E,this.index=k,this.start=A,this.closed=L}function b(E,k,A,L){this.x=E,this.segment=k,this.create=A,this.index=L}function p(E){for(var k=E.length,A=2*k,L=new Array(A),_=0;_1&&(k=1);for(var A=1-k,L=v.length,_=new Array(L),C=0;C0||E>0&&_<0){var C=c(k,_,A,E);b.push(C),p.push(C.slice())}_<0?p.push(A.slice()):_>0?b.push(A.slice()):(b.push(A.slice()),p.push(A.slice())),E=_}return{positive:b,negative:p}}function h(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L>=0&&b.push(k.slice()),p=L}return b}function d(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L<=0&&b.push(k.slice()),p=L}return b}},3387:function(i,a,o){var s;(function(){"use strict";var l={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function u(v){return f(d(v),arguments)}function c(v,x){return u.apply(null,[v].concat(x||[]))}function f(v,x){var b=1,p=v.length,E,k="",A,L,_,C,M,g,P,T;for(A=0;A=0),_.type){case"b":E=parseInt(E,10).toString(2);break;case"c":E=String.fromCharCode(parseInt(E,10));break;case"d":case"i":E=parseInt(E,10);break;case"j":E=JSON.stringify(E,null,_.width?parseInt(_.width):0);break;case"e":E=_.precision?parseFloat(E).toExponential(_.precision):parseFloat(E).toExponential();break;case"f":E=_.precision?parseFloat(E).toFixed(_.precision):parseFloat(E);break;case"g":E=_.precision?String(Number(E.toPrecision(_.precision))):parseFloat(E);break;case"o":E=(parseInt(E,10)>>>0).toString(8);break;case"s":E=String(E),E=_.precision?E.substring(0,_.precision):E;break;case"t":E=String(!!E),E=_.precision?E.substring(0,_.precision):E;break;case"T":E=Object.prototype.toString.call(E).slice(8,-1).toLowerCase(),E=_.precision?E.substring(0,_.precision):E;break;case"u":E=parseInt(E,10)>>>0;break;case"v":E=E.valueOf(),E=_.precision?E.substring(0,_.precision):E;break;case"x":E=(parseInt(E,10)>>>0).toString(16);break;case"X":E=(parseInt(E,10)>>>0).toString(16).toUpperCase();break}l.json.test(_.type)?k+=E:(l.number.test(_.type)&&(!P||_.sign)?(T=P?"+":"-",E=E.toString().replace(l.sign,"")):T="",M=_.pad_char?_.pad_char==="0"?"0":_.pad_char.charAt(1):" ",g=_.width-(T+E).length,C=_.width&&g>0?M.repeat(g):"",k+=_.align?T+E+C:M==="0"?T+C+E:C+T+E)}return k}var h=Object.create(null);function d(v){if(h[v])return h[v];for(var x=v,b,p=[],E=0;x;){if((b=l.text.exec(x))!==null)p.push(b[0]);else if((b=l.modulo.exec(x))!==null)p.push("%");else if((b=l.placeholder.exec(x))!==null){if(b[2]){E|=1;var k=[],A=b[2],L=[];if((L=l.key.exec(A))!==null)for(k.push(L[1]);(A=A.substring(L[0].length))!=="";)if((L=l.key_access.exec(A))!==null)k.push(L[1]);else if((L=l.index_access.exec(A))!==null)k.push(L[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=k}else E|=2;if(E===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");p.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");x=x.substring(b[0].length)}return h[v]=p}a.sprintf=u,a.vsprintf=c,typeof window!="undefined"&&(window.sprintf=u,window.vsprintf=c,s=function(){return{sprintf:u,vsprintf:c}}.call(a,o,a,i),s!==void 0&&(i.exports=s))})()},3711:function(i,a,o){"use strict";i.exports=d;var s=o(2640),l=o(781),u={"2d":function(v,x,b){var p=v({order:x,scalarArguments:3,getters:b==="generic"?[0]:void 0,phase:function(k,A,L,_){return k>_|0},vertex:function(k,A,L,_,C,M,g,P,T,F,q,V,H){var X=(g<<0)+(P<<1)+(T<<2)+(F<<3)|0;if(!(X===0||X===15))switch(X){case 0:q.push([k-.5,A-.5]);break;case 1:q.push([k-.25-.25*(_+L-2*H)/(L-_),A-.25-.25*(C+L-2*H)/(L-C)]);break;case 2:q.push([k-.75-.25*(-_-L+2*H)/(_-L),A-.25-.25*(M+_-2*H)/(_-M)]);break;case 3:q.push([k-.5,A-.5-.5*(C+L+M+_-4*H)/(L-C+_-M)]);break;case 4:q.push([k-.25-.25*(M+C-2*H)/(C-M),A-.75-.25*(-C-L+2*H)/(C-L)]);break;case 5:q.push([k-.5-.5*(_+L+M+C-4*H)/(L-_+C-M),A-.5]);break;case 6:q.push([k-.5-.25*(-_-L+M+C)/(_-L+C-M),A-.5-.25*(-C-L+M+_)/(C-L+_-M)]);break;case 7:q.push([k-.75-.25*(M+C-2*H)/(C-M),A-.75-.25*(M+_-2*H)/(_-M)]);break;case 8:q.push([k-.75-.25*(-M-C+2*H)/(M-C),A-.75-.25*(-M-_+2*H)/(M-_)]);break;case 9:q.push([k-.5-.25*(_+L+-M-C)/(L-_+M-C),A-.5-.25*(C+L+-M-_)/(L-C+M-_)]);break;case 10:q.push([k-.5-.5*(-_-L+-M-C+4*H)/(_-L+M-C),A-.5]);break;case 11:q.push([k-.25-.25*(-M-C+2*H)/(M-C),A-.75-.25*(C+L-2*H)/(L-C)]);break;case 12:q.push([k-.5,A-.5-.5*(-C-L+-M-_+4*H)/(C-L+M-_)]);break;case 13:q.push([k-.75-.25*(_+L-2*H)/(L-_),A-.25-.25*(-M-_+2*H)/(M-_)]);break;case 14:q.push([k-.25-.25*(-_-L+2*H)/(_-L),A-.25-.25*(-C-L+2*H)/(C-L)]);break;case 15:q.push([k-.5,A-.5]);break}},cell:function(k,A,L,_,C,M,g,P,T){C?P.push([k,A]):P.push([A,k])}});return function(E,k){var A=[],L=[];return p(E,A,L,k),{positions:A,cells:L}}}};function c(v,x){var b=v.length+"d",p=u[b];if(p)return p(s,v,x)}function f(v,x){for(var b=l(v,x),p=b.length,E=new Array(p),k=new Array(p),A=0;AMath.max(_,C)?M[2]=1:_>Math.max(L,C)?M[0]=1:M[1]=1;for(var g=0,P=0,T=0;T<3;++T)g+=A[T]*A[T],P+=M[T]*A[T];for(var T=0;T<3;++T)M[T]-=P/g*A[T];return f(M,M),M}function b(A,L,_,C,M,g,P,T){this.center=s(_),this.up=s(C),this.right=s(M),this.radius=s([g]),this.angle=s([P,T]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(A,L),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var F=0;F<16;++F)this.computedMatrix[F]=.5;this.recalcMatrix(0)}var p=b.prototype;p.setDistanceLimits=function(A,L){A>0?A=Math.log(A):A=-1/0,L>0?L=Math.log(L):L=1/0,L=Math.max(L,A),this.radius.bounds[0][0]=A,this.radius.bounds[1][0]=L},p.getDistanceLimits=function(A){var L=this.radius.bounds[0];return A?(A[0]=Math.exp(L[0][0]),A[1]=Math.exp(L[1][0]),A):[Math.exp(L[0][0]),Math.exp(L[1][0])]},p.recalcMatrix=function(A){this.center.curve(A),this.up.curve(A),this.right.curve(A),this.radius.curve(A),this.angle.curve(A);for(var L=this.computedUp,_=this.computedRight,C=0,M=0,g=0;g<3;++g)M+=L[g]*_[g],C+=L[g]*L[g];for(var P=Math.sqrt(C),T=0,g=0;g<3;++g)_[g]-=L[g]*M/C,T+=_[g]*_[g],L[g]/=P;for(var F=Math.sqrt(T),g=0;g<3;++g)_[g]/=F;var q=this.computedToward;c(q,L,_),f(q,q);for(var V=Math.exp(this.computedRadius[0]),H=this.computedAngle[0],X=this.computedAngle[1],G=Math.cos(H),N=Math.sin(H),W=Math.cos(X),re=Math.sin(X),ae=this.computedCenter,_e=G*W,Me=N*W,ke=re,ge=-G*re,ie=-N*re,Te=W,Ee=this.computedEye,Ae=this.computedMatrix,g=0;g<3;++g){var ze=_e*_[g]+Me*q[g]+ke*L[g];Ae[4*g+1]=ge*_[g]+ie*q[g]+Te*L[g],Ae[4*g+2]=ze,Ae[4*g+3]=0}var Ce=Ae[1],me=Ae[5],Re=Ae[9],ce=Ae[2],Ge=Ae[6],nt=Ae[10],ct=me*nt-Re*Ge,qt=Re*ce-Ce*nt,rt=Ce*Ge-me*ce,ot=d(ct,qt,rt);ct/=ot,qt/=ot,rt/=ot,Ae[0]=ct,Ae[4]=qt,Ae[8]=rt;for(var g=0;g<3;++g)Ee[g]=ae[g]+Ae[2+4*g]*V;for(var g=0;g<3;++g){for(var T=0,Rt=0;Rt<3;++Rt)T+=Ae[g+4*Rt]*Ee[Rt];Ae[12+g]=-T}Ae[15]=1},p.getMatrix=function(A,L){this.recalcMatrix(A);var _=this.computedMatrix;if(L){for(var C=0;C<16;++C)L[C]=_[C];return L}return _};var E=[0,0,0];p.rotate=function(A,L,_,C){if(this.angle.move(A,L,_),C){this.recalcMatrix(A);var M=this.computedMatrix;E[0]=M[2],E[1]=M[6],E[2]=M[10];for(var g=this.computedUp,P=this.computedRight,T=this.computedToward,F=0;F<3;++F)M[4*F]=g[F],M[4*F+1]=P[F],M[4*F+2]=T[F];u(M,M,C,E);for(var F=0;F<3;++F)g[F]=M[4*F],P[F]=M[4*F+1];this.up.set(A,g[0],g[1],g[2]),this.right.set(A,P[0],P[1],P[2])}},p.pan=function(A,L,_,C){L=L||0,_=_||0,C=C||0,this.recalcMatrix(A);var M=this.computedMatrix,g=Math.exp(this.computedRadius[0]),P=M[1],T=M[5],F=M[9],q=d(P,T,F);P/=q,T/=q,F/=q;var V=M[0],H=M[4],X=M[8],G=V*P+H*T+X*F;V-=P*G,H-=T*G,X-=F*G;var N=d(V,H,X);V/=N,H/=N,X/=N;var W=V*L+P*_,re=H*L+T*_,ae=X*L+F*_;this.center.move(A,W,re,ae);var _e=Math.exp(this.computedRadius[0]);_e=Math.max(1e-4,_e+C),this.radius.set(A,Math.log(_e))},p.translate=function(A,L,_,C){this.center.move(A,L||0,_||0,C||0)},p.setMatrix=function(A,L,_,C){var M=1;typeof _=="number"&&(M=_|0),(M<0||M>3)&&(M=1);var g=(M+2)%3,P=(M+1)%3;L||(this.recalcMatrix(A),L=this.computedMatrix);var T=L[M],F=L[M+4],q=L[M+8];if(C){var H=Math.abs(T),X=Math.abs(F),G=Math.abs(q),N=Math.max(H,X,G);H===N?(T=T<0?-1:1,F=q=0):G===N?(q=q<0?-1:1,T=F=0):(F=F<0?-1:1,T=q=0)}else{var V=d(T,F,q);T/=V,F/=V,q/=V}var W=L[g],re=L[g+4],ae=L[g+8],_e=W*T+re*F+ae*q;W-=T*_e,re-=F*_e,ae-=q*_e;var Me=d(W,re,ae);W/=Me,re/=Me,ae/=Me;var ke=F*ae-q*re,ge=q*W-T*ae,ie=T*re-F*W,Te=d(ke,ge,ie);ke/=Te,ge/=Te,ie/=Te,this.center.jump(A,er,Ke,xt),this.radius.idle(A),this.up.jump(A,T,F,q),this.right.jump(A,W,re,ae);var Ee,Ae;if(M===2){var ze=L[1],Ce=L[5],me=L[9],Re=ze*W+Ce*re+me*ae,ce=ze*ke+Ce*ge+me*ie;qt<0?Ee=-Math.PI/2:Ee=Math.PI/2,Ae=Math.atan2(ce,Re)}else{var Ge=L[2],nt=L[6],ct=L[10],qt=Ge*T+nt*F+ct*q,rt=Ge*W+nt*re+ct*ae,ot=Ge*ke+nt*ge+ct*ie;Ee=Math.asin(v(qt)),Ae=Math.atan2(ot,rt)}this.angle.jump(A,Ae,Ee),this.recalcMatrix(A);var Rt=L[2],kt=L[6],Ct=L[10],Yt=this.computedMatrix;l(Yt,L);var xr=Yt[15],er=Yt[12]/xr,Ke=Yt[13]/xr,xt=Yt[14]/xr,bt=Math.exp(this.computedRadius[0]);this.center.jump(A,er-Rt*bt,Ke-kt*bt,xt-Ct*bt)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(A){this.center.idle(A),this.up.idle(A),this.right.idle(A),this.radius.idle(A),this.angle.idle(A)},p.flush=function(A){this.center.flush(A),this.up.flush(A),this.right.flush(A),this.radius.flush(A),this.angle.flush(A)},p.setDistance=function(A,L){L>0&&this.radius.set(A,Math.log(L))},p.lookAt=function(A,L,_,C){this.recalcMatrix(A),L=L||this.computedEye,_=_||this.computedCenter,C=C||this.computedUp;var M=C[0],g=C[1],P=C[2],T=d(M,g,P);if(!(T<1e-6)){M/=T,g/=T,P/=T;var F=L[0]-_[0],q=L[1]-_[1],V=L[2]-_[2],H=d(F,q,V);if(!(H<1e-6)){F/=H,q/=H,V/=H;var X=this.computedRight,G=X[0],N=X[1],W=X[2],re=M*G+g*N+P*W;G-=re*M,N-=re*g,W-=re*P;var ae=d(G,N,W);if(!(ae<.01&&(G=g*V-P*q,N=P*F-M*V,W=M*q-g*F,ae=d(G,N,W),ae<1e-6))){G/=ae,N/=ae,W/=ae,this.up.set(A,M,g,P),this.right.set(A,G,N,W),this.center.set(A,_[0],_[1],_[2]),this.radius.set(A,Math.log(H));var _e=g*W-P*N,Me=P*G-M*W,ke=M*N-g*G,ge=d(_e,Me,ke);_e/=ge,Me/=ge,ke/=ge;var ie=M*F+g*q+P*V,Te=G*F+N*q+W*V,Ee=_e*F+Me*q+ke*V,Ae=Math.asin(v(ie)),ze=Math.atan2(Ee,Te),Ce=this.angle._state,me=Ce[Ce.length-1],Re=Ce[Ce.length-2];me=me%(2*Math.PI);var ce=Math.abs(me+2*Math.PI-ze),Ge=Math.abs(me-ze),nt=Math.abs(me-2*Math.PI-ze);ce0?W.pop():new ArrayBuffer(G)}a.mallocArrayBuffer=E;function k(X){return new Uint8Array(E(X),0,X)}a.mallocUint8=k;function A(X){return new Uint16Array(E(2*X),0,X)}a.mallocUint16=A;function L(X){return new Uint32Array(E(4*X),0,X)}a.mallocUint32=L;function _(X){return new Int8Array(E(X),0,X)}a.mallocInt8=_;function C(X){return new Int16Array(E(2*X),0,X)}a.mallocInt16=C;function M(X){return new Int32Array(E(4*X),0,X)}a.mallocInt32=M;function g(X){return new Float32Array(E(4*X),0,X)}a.mallocFloat32=a.mallocFloat=g;function P(X){return new Float64Array(E(8*X),0,X)}a.mallocFloat64=a.mallocDouble=P;function T(X){return c?new Uint8ClampedArray(E(X),0,X):k(X)}a.mallocUint8Clamped=T;function F(X){return f?new BigUint64Array(E(8*X),0,X):null}a.mallocBigUint64=F;function q(X){return h?new BigInt64Array(E(8*X),0,X):null}a.mallocBigInt64=q;function V(X){return new DataView(E(X),0,X)}a.mallocDataView=V;function H(X){X=s.nextPow2(X);var G=s.log2(X),N=x[G];return N.length>0?N.pop():new u(X)}a.mallocBuffer=H,a.clearCache=function(){for(var G=0;G<32;++G)d.UINT8[G].length=0,d.UINT16[G].length=0,d.UINT32[G].length=0,d.INT8[G].length=0,d.INT16[G].length=0,d.INT32[G].length=0,d.FLOAT[G].length=0,d.DOUBLE[G].length=0,d.BIGUINT64[G].length=0,d.BIGINT64[G].length=0,d.UINT8C[G].length=0,v[G].length=0,x[G].length=0}},1755:function(i){"use strict";"use restrict";i.exports=a;function a(s){this.roots=new Array(s),this.ranks=new Array(s);for(var l=0;l",W="",re=N.length,ae=W.length,_e=H[0]===E||H[0]===L,Me=0,ke=-ae;Me>-1&&(Me=X.indexOf(N,Me),!(Me===-1||(ke=X.indexOf(W,Me+re),ke===-1)||ke<=Me));){for(var ge=Me;ge=ke)G[ge]=null,X=X.substr(0,ge)+" "+X.substr(ge+1);else if(G[ge]!==null){var ie=G[ge].indexOf(H[0]);ie===-1?G[ge]+=H:_e&&(G[ge]=G[ge].substr(0,ie+1)+(1+parseInt(G[ge][ie+1]))+G[ge].substr(ie+2))}var Te=Me+re,Ee=X.substr(Te,ke-Te),Ae=Ee.indexOf(N);Ae!==-1?Me=Ae:Me=ke+ae}return G}function M(V,H,X){for(var G=H.textAlign||"start",N=H.textBaseline||"alphabetic",W=[1<<30,1<<30],re=[0,0],ae=V.length,_e=0;_e/g,` +`):X=X.replace(/\/g," ");var re="",ae=[];for(me=0;me-1?parseInt(Ke[1+Lt]):0,dt=St>-1?parseInt(xt[1+St]):0;Et!==dt&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,dt-Et),bt=bt.replace("?px ",rt())),ce+=.25*ie*(dt-Et)}if(W.superscripts===!0){var Ht=Ke.indexOf(E),$t=xt.indexOf(E),fr=Ht>-1?parseInt(Ke[1+Ht]):0,_r=$t>-1?parseInt(xt[1+$t]):0;fr!==_r&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,_r-fr),bt=bt.replace("?px ",rt())),ce-=.25*ie*(_r-fr)}if(W.bolds===!0){var Br=Ke.indexOf(v)>-1,Or=xt.indexOf(v)>-1;!Br&&Or&&(Nr?bt=bt.replace("italic ","italic bold "):bt="bold "+bt),Br&&!Or&&(bt=bt.replace("bold ",""))}if(W.italics===!0){var Nr=Ke.indexOf(b)>-1,ut=xt.indexOf(b)>-1;!Nr&&ut&&(bt="italic "+bt),Nr&&!ut&&(bt=bt.replace("italic ",""))}H.font=bt}for(Ce=0;Ce0&&(N=G.size),G.lineSpacing&&G.lineSpacing>0&&(W=G.lineSpacing),G.styletags&&G.styletags.breaklines&&(re.breaklines=!!G.styletags.breaklines),G.styletags&&G.styletags.bolds&&(re.bolds=!!G.styletags.bolds),G.styletags&&G.styletags.italics&&(re.italics=!!G.styletags.italics),G.styletags&&G.styletags.subscripts&&(re.subscripts=!!G.styletags.subscripts),G.styletags&&G.styletags.superscripts&&(re.superscripts=!!G.styletags.superscripts)),X.font=[G.fontStyle,G.fontVariant,G.fontWeight,N+"px",G.font].filter(function(_e){return _e}).join(" "),X.textAlign="start",X.textBaseline="alphabetic",X.direction="ltr";var ae=g(H,X,V,N,W,re);return F(ae,G,N)}},1538:function(i){(function(){"use strict";if(typeof ses!="undefined"&&ses.ok&&!ses.ok())return;function o(T){T.permitHostObjects___&&T.permitHostObjects___(o)}typeof ses!="undefined"&&(ses.weakMapPermitHostObjects=o);var s=!1;if(typeof WeakMap=="function"){var l=WeakMap;if(!(typeof navigator!="undefined"&&/Firefox/.test(navigator.userAgent))){var u=new l,c=Object.freeze({});if(u.set(c,1),u.get(c)!==1)s=!0;else{i.exports=WeakMap;return}}}var f=Object.prototype.hasOwnProperty,h=Object.getOwnPropertyNames,d=Object.defineProperty,v=Object.isExtensible,x="weakmap:",b=x+"ident:"+Math.random()+"___";if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var p=new ArrayBuffer(25),E=new Uint8Array(p);crypto.getRandomValues(E),b=x+"rand:"+Array.prototype.map.call(E,function(T){return(T%36).toString(36)}).join("")+"___"}function k(T){return!(T.substr(0,x.length)==x&&T.substr(T.length-3)==="___")}if(d(Object,"getOwnPropertyNames",{value:function(F){return h(F).filter(k)}}),"getPropertyNames"in Object){var A=Object.getPropertyNames;d(Object,"getPropertyNames",{value:function(F){return A(F).filter(k)}})}function L(T){if(T!==Object(T))throw new TypeError("Not an object: "+T);var F=T[b];if(F&&F.key===T)return F;if(v(T)){F={key:T};try{return d(T,b,{value:F,writable:!1,enumerable:!1,configurable:!1}),F}catch(q){return}}}(function(){var T=Object.freeze;d(Object,"freeze",{value:function(H){return L(H),T(H)}});var F=Object.seal;d(Object,"seal",{value:function(H){return L(H),F(H)}});var q=Object.preventExtensions;d(Object,"preventExtensions",{value:function(H){return L(H),q(H)}})})();function _(T){return T.prototype=null,Object.freeze(T)}var C=!1;function M(){!C&&typeof console!="undefined"&&(C=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var g=0,P=function(){this instanceof P||M();var T=[],F=[],q=g++;function V(N,W){var re,ae=L(N);return ae?q in ae?ae[q]:W:(re=T.indexOf(N),re>=0?F[re]:W)}function H(N){var W=L(N);return W?q in W:T.indexOf(N)>=0}function X(N,W){var re,ae=L(N);return ae?ae[q]=W:(re=T.indexOf(N),re>=0?F[re]=W:(re=T.length,F[re]=W,T[re]=N)),this}function G(N){var W=L(N),re,ae;return W?q in W&&delete W[q]:(re=T.indexOf(N),re<0?!1:(ae=T.length-1,T[re]=void 0,F[re]=F[ae],T[re]=T[ae],T.length=ae,F.length=ae,!0))}return Object.create(P.prototype,{get___:{value:_(V)},has___:{value:_(H)},set___:{value:_(X)},delete___:{value:_(G)}})};P.prototype=Object.create(Object.prototype,{get:{value:function(F,q){return this.get___(F,q)},writable:!0,configurable:!0},has:{value:function(F){return this.has___(F)},writable:!0,configurable:!0},set:{value:function(F,q){return this.set___(F,q)},writable:!0,configurable:!0},delete:{value:function(F){return this.delete___(F)},writable:!0,configurable:!0}}),typeof l=="function"?function(){s&&typeof Proxy!="undefined"&&(Proxy=void 0);function T(){this instanceof P||M();var F=new l,q=void 0,V=!1;function H(W,re){return q?F.has(W)?F.get(W):q.get___(W,re):F.get(W,re)}function X(W){return F.has(W)||(q?q.has___(W):!1)}var G;s?G=function(W,re){return F.set(W,re),F.has(W)||(q||(q=new P),q.set(W,re)),this}:G=function(W,re){if(V)try{F.set(W,re)}catch(ae){q||(q=new P),q.set___(W,re)}else F.set(W,re);return this};function N(W){var re=!!F.delete(W);return q&&q.delete___(W)||re}return Object.create(P.prototype,{get___:{value:_(H)},has___:{value:_(X)},set___:{value:_(G)},delete___:{value:_(N)},permitHostObjects___:{value:_(function(W){if(W===o)V=!0;else throw new Error("bogus call to permitHostObjects___")})}})}T.prototype=P.prototype,i.exports=T,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy!="undefined"&&(Proxy=void 0),i.exports=P)})()},236:function(i,a,o){var s=o(8284);i.exports=l;function l(){var u={};return function(c){if((typeof c!="object"||c===null)&&typeof c!="function")throw new Error("Weakmap-shim: Key must be object");var f=c.valueOf(u);return f&&f.identity===u?f:s(c,u)}}},8284:function(i){i.exports=a;function a(o,s){var l={identity:s},u=o.valueOf;return Object.defineProperty(o,"valueOf",{value:function(c){return c!==s?u.apply(this,arguments):l},writable:!0}),l}},606:function(i,a,o){var s=o(236);i.exports=l;function l(){var u=s();return{get:function(c,f){var h=u(c);return h.hasOwnProperty("value")?h.value:f},set:function(c,f){return u(c).value=f,this},has:function(c){return"value"in u(c)},delete:function(c){return delete u(c).value}}}},3349:function(i){"use strict";function a(){return function(f,h,d,v,x,b){var p=f[0],E=d[0],k=[0],A=E;v|=0;var L=0,_=E;for(L=0;L=0!=M>=0&&x.push(k[0]+.5+.5*(C+M)/(C-M))}v+=_,++k[0]}}}function o(){return a()}var s=o;function l(f){var h={};return function(v,x,b){var p=v.dtype,E=v.order,k=[p,E.join()].join(),A=h[k];return A||(h[k]=A=f([p,E])),A(v.shape.slice(0),v.data,v.stride,v.offset|0,x,b)}}function u(f){return l(s.bind(void 0,f))}function c(f){return u({funcName:f.funcName})}i.exports=c({funcName:"zeroCrossings"})},781:function(i,a,o){"use strict";i.exports=l;var s=o(3349);function l(u,c){var f=[];return c=+c||0,s(u.hi(u.shape[0]-1),f,c),f}},7790:function(){}},t={};function r(i){var a=t[i];if(a!==void 0)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}(function(){r.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(i){if(typeof window=="object")return window}}()})(),function(){r.nmd=function(i){return i.paths=[],i.children||(i.children=[]),i}}();var n=r(1964);cLe.exports=n})()});var rZ=ye((ivr,fLe)=>{"use strict";fLe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var pLe=ye((nvr,vLe)=>{"use strict";var hLe=rZ();vLe.exports=lLt;var dLe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function lLt(e){var t,r=[],n=1,i;if(typeof e=="string")if(e=e.toLowerCase(),hLe[e])r=hLe[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var l=t[1],u=l==="rgb",a=l.replace(/a$/,"");i=a;var o=a==="cmyk"?4:a==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(h,d){if(/%$/.test(h))return d===o?parseFloat(h)/100:a==="rgb"?parseFloat(h)*255/100:parseFloat(h);if(a[d]==="h"){if(/deg$/.test(h))return parseFloat(h);if(dLe[h]!==void 0)return dLe[h]}return parseFloat(h)}),l===a&&r.push(1),n=u||r[o]===void 0?1:r[o],r=r.slice(0,o)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(c){return parseFloat(c)}),i=e.match(/([a-z])/ig).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],i="rgb",n=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(i="rgb",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(i="hsl",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),n=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(n/=100)):(i="rgb",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:i,values:r,alpha:n}}});var mLe=ye((avr,gLe)=>{"use strict";var uLt=pLe();gLe.exports=function(t){Array.isArray(t)&&t.raw&&(t=String.raw.apply(null,arguments));var r,n,i,a=uLt(t);if(!a.space)return[];var o=[0,0,0],s=a.space[0]==="h"?[360,100,100]:[255,255,255];return r=Array(3),r[0]=Math.min(Math.max(a.values[0],o[0]),s[0]),r[1]=Math.min(Math.max(a.values[1],o[1]),s[1]),r[2]=Math.min(Math.max(a.values[2],o[2]),s[2]),a.space[0]==="h"&&(r=cLt(r)),r.push(Math.min(Math.max(a.alpha,0),1)),r};function cLt(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}});var VE=ye((ovr,yLe)=>{yLe.exports=fLt;function fLt(e,t,r){return tr?r:e:et?t:e}});var HD=ye((svr,_Le)=>{_Le.exports=function(e){switch(e){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}});var $_=ye((lvr,xLe)=>{"use strict";var hLt=mLe(),GD=VE(),dLt=HD();xLe.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var n=dLt(r),i=new n(4),a=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=hLt(t),t[0]/=255,t[1]/=255,t[2]/=255),vLt(t)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:255,a&&(i[0]/=255,i[1]/=255,i[2]/=255,i[3]/=255),i):(a?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:1):(i[0]=GD(Math.floor(t[0]*255),0,255),i[1]=GD(Math.floor(t[1]*255),0,255),i[2]=GD(Math.floor(t[2]*255),0,255),i[3]=t[3]==null?255:GD(Math.floor(t[3]*255),0,255)),i)};function vLt(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}});var Jy=ye((uvr,bLe)=>{"use strict";var pLt=$_();function gLt(e){return e?pLt(e):[0,0,0,1]}bLe.exports=gLt});var $y=ye((cvr,kLe)=>{"use strict";var MLe=uo(),mLt=id(),jD=$_(),WD=Mu(),yLt=dh().defaultLine,wLe=vv().isArrayOrTypedArray,iZ=jD(yLt),ELe=1;function TLe(e,t){var r=e;return r[3]*=t,r}function ALe(e){if(MLe(e))return iZ;var t=jD(e);return t.length?t:iZ}function SLe(e){return MLe(e)?e:ELe}function _Lt(e,t,r){var n=e.color;n&&n._inputArray&&(n=n._inputArray);var i=wLe(n),a=wLe(t),o=WD.extractOpts(e),s=[],l,u,c,f,h;if(o.colorscale!==void 0?l=WD.makeColorScaleFuncFromTrace(e):l=ALe,i?u=function(v,x){return v[x]===void 0?iZ:jD(l(v[x]))}:u=ALe,a?c=function(v,x){return v[x]===void 0?ELe:SLe(v[x])}:c=SLe,i||a)for(var d=0;d{"use strict";CLe.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}});var ZD=ye((hvr,LLe)=>{"use strict";LLe.exports={circle:"\u25CF","circle-open":"\u25CB",square:"\u25A0","square-open":"\u25A1",diamond:"\u25C6","diamond-open":"\u25C7",cross:"+",x:"\u274C"}});var ILe=ye((dvr,PLe)=>{"use strict";var bLt=ba();function aZ(e,t,r,n){if(!t||!t.visible)return null;for(var i=bLt.getComponentMethod("errorbars","makeComputeError")(t),a=new Array(e.length),o=0;o0){var f=n.c2l(u);n._lowerLogErrorBound||(n._lowerLogErrorBound=f),n._lowerErrorBound=Math.min(n._lowerLogErrorBound,f)}}else a[o]=[-s[0]*r,s[1]*r]}return a}function wLt(e){for(var t=0;t{"use strict";var ALt=Rd().gl_line3d,RLe=Rd().gl_scatter3d,SLt=Rd().gl_error3d,MLt=Rd().gl_mesh3d,ELt=Rd().delaunay_triangulate,Qy=Mr(),OLe=Jy(),XD=$y().formatColor,kLt=S3(),oZ=nZ(),CLt=ZD(),LLt=Qa(),PLt=rp().appendArrayPointValue,ILt=ILe();function BLe(e,t){this.scene=e,this.uid=t,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode="",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var lZ=BLe.prototype;lZ.handlePick=function(e){if(e.object&&(e.object===this.linePlot||e.object===this.delaunayMesh||e.object===this.textMarkers||e.object===this.scatterPlot)){var t=e.index=e.data.index;return e.object.highlight&&e.object.highlight(null),this.scatterPlot&&(e.object=this.scatterPlot,this.scatterPlot.highlight(e.data)),e.textLabel="",this.textLabels&&(Qy.isArrayOrTypedArray(this.textLabels)?(this.textLabels[t]||this.textLabels[t]===0)&&(e.textLabel=this.textLabels[t]):e.textLabel=this.textLabels),e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]],!0}};function RLt(e,t,r){var n=(r+1)%3,i=(r+2)%3,a=[],o=[],s;for(s=0;s-1?-1:e.indexOf("right")>-1?1:0}function zLe(e){return e==null?0:e.indexOf("top")>-1?-1:e.indexOf("bottom")>-1?1:0}function zLt(e){var t=0,r=0,n=[t,r];if(Array.isArray(e))for(var i=0;i=0){var u=RLt(s.position,s.delaunayColor,s.delaunayAxis);u.opacity=e.opacity,this.delaunayMesh?this.delaunayMesh.update(u):(u.gl=t,this.delaunayMesh=MLt(u),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)};lZ.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function BLt(e,t){var r=new BLe(e,t.uid);return r.update(t),r}NLe.exports=BLt});var dZ=ye((pvr,GLe)=>{"use strict";var e1=Uc(),NLt=Su(),hZ=Jl(),uZ=Oc().axisHoverFormat,ULt=Wo().hovertemplateAttrs,VLt=Wo().texttemplateAttrs,VLe=vl(),HLt=nZ(),GLt=ZD(),Yg=no().extendFlat,jLt=Bu().overrideAll,HLe=Y1(),WLt=e1.line,N2=e1.marker,ZLt=N2.line,XLt=Yg({width:WLt.width,dash:{valType:"enumerated",values:HLe(HLt),dflt:"solid"}},hZ("line"));function cZ(e){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var fZ=GLe.exports=jLt({x:e1.x,y:e1.y,z:{valType:"data_array"},text:Yg({},e1.text,{}),texttemplate:VLt({},{}),hovertext:Yg({},e1.hovertext,{}),hovertemplate:ULt(),xhoverformat:uZ("x"),yhoverformat:uZ("y"),zhoverformat:uZ("z"),mode:Yg({},e1.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:cZ("x"),y:cZ("y"),z:cZ("z")},connectgaps:e1.connectgaps,line:XLt,marker:Yg({symbol:{valType:"enumerated",values:HLe(GLt),dflt:"circle",arrayOk:!0},size:Yg({},N2.size,{dflt:8}),sizeref:N2.sizeref,sizemin:N2.sizemin,sizemode:N2.sizemode,opacity:Yg({},N2.opacity,{arrayOk:!1}),colorbar:N2.colorbar,line:Yg({width:Yg({},ZLt.width,{arrayOk:!1})},hZ("marker.line"))},hZ("marker")),textposition:Yg({},e1.textposition,{dflt:"top center"}),textfont:NLt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:VLe.opacity,hoverinfo:Yg({},VLe.hoverinfo)},"calc","nested");fZ.x.editType=fZ.y.editType=fZ.z.editType="calc+clearAxisTypes"});var ZLe=ye((gvr,WLe)=>{"use strict";var jLe=ba(),YLt=Mr(),vZ=lu(),KLt=$p(),JLt=R0(),$Lt=D0(),QLt=dZ();WLe.exports=function(t,r,n,i){function a(d,v){return YLt.coerce(t,r,QLt,d,v)}var o=ePt(t,r,a,i);if(!o){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),a("mode"),vZ.hasMarkers(r)&&KLt(t,r,n,i,a,{noSelect:!0,noAngle:!0}),vZ.hasLines(r)&&(a("connectgaps"),JLt(t,r,n,i,a)),vZ.hasText(r)&&(a("texttemplate"),$Lt(t,r,i,a,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var s=(r.line||{}).color,l=(r.marker||{}).color;a("surfaceaxis")>=0&&a("surfacecolor",s||l);for(var u=["x","y","z"],c=0;c<3;++c){var f="projection."+u[c];a(f+".show")&&(a(f+".opacity"),a(f+".scale"))}var h=jLe.getComponentMethod("errorbars","supplyDefaults");h(t,r,s||l||n,{axis:"z"}),h(t,r,s||l||n,{axis:"y",inherit:"z"}),h(t,r,s||l||n,{axis:"x",inherit:"z"})};function ePt(e,t,r,n){var i=0,a=r("x"),o=r("y"),s=r("z"),l=jLe.getComponentMethod("calendars","handleTraceDefaults");return l(e,t,["x","y","z"],n),a&&o&&s&&(i=Math.min(a.length,o.length,s.length),t._length=t._xlength=t._ylength=t._zlength=i),i}});var YLe=ye((mvr,XLe)=>{"use strict";var tPt=km(),rPt=z0();XLe.exports=function(t,r){var n=[{x:!1,y:!1,trace:r,t:{}}];return tPt(n,r),rPt(t,r),n}});var JLe=ye((yvr,KLe)=>{KLe.exports=iPt;function iPt(e,t){if(typeof e!="string")throw new TypeError("must specify type string");if(t=t||{},typeof document=="undefined"&&!t.canvas)return null;var r=t.canvas||document.createElement("canvas");typeof t.width=="number"&&(r.width=t.width),typeof t.height=="number"&&(r.height=t.height);var n=t,i;try{var a=[e];e.indexOf("webgl")===0&&a.push("experimental-"+e);for(var o=0;o{var nPt=JLe();$Le.exports=function(t){return nPt("webgl",t)}});var pZ=ye((xvr,tPe)=>{"use strict";var ePe=va(),aPt=function(){};tPe.exports=function(t){for(var r in t)typeof t[r]=="function"&&(t[r]=aPt);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var n=document.createElement("div");n.className="no-webgl",n.style.cursor="pointer",n.style.fontSize="24px",n.style.color=ePe.defaults[0],n.style.position="absolute",n.style.left=n.style.top="0px",n.style.width=n.style.height="100%",n.style["background-color"]=ePe.lightLine,n.style["z-index"]=30;var i=document.createElement("p");return i.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",i.style.position="relative",i.style.top="50%",i.style.left="50%",i.style.height="30%",i.style.width="50%",i.style.margin="-15% 0 0 -25%",n.appendChild(i),t.container.appendChild(n),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}});var nPe=ye((bvr,iPe)=>{"use strict";var U2=Jy(),oPt=Mr(),sPt=["xaxis","yaxis","zaxis"];function rPe(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickFontWeight=["normal","normal","normal","normal"],this.tickFontStyle=["normal","normal","normal","normal"],this.tickFontVariant=["normal","normal","normal","normal"],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelFontWeight=["normal","normal","normal","normal"],this.labelFontStyle=["normal","normal","normal","normal"],this.labelFontVariant=["normal","normal","normal","normal"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}var lPt=rPe.prototype;lPt.merge=function(e,t){for(var r=this,n=0;n<3;++n){var i=t[sPt[n]];if(!i.visible){r.tickEnable[n]=!1,r.labelEnable[n]=!1,r.lineEnable[n]=!1,r.lineTickEnable[n]=!1,r.gridEnable[n]=!1,r.zeroEnable[n]=!1,r.backgroundEnable[n]=!1;continue}r.labels[n]=e._meta?oPt.templateString(i.title.text,e._meta):i.title.text,"font"in i.title&&(i.title.font.color&&(r.labelColor[n]=U2(i.title.font.color)),i.title.font.family&&(r.labelFont[n]=i.title.font.family),i.title.font.size&&(r.labelSize[n]=i.title.font.size),i.title.font.weight&&(r.labelFontWeight[n]=i.title.font.weight),i.title.font.style&&(r.labelFontStyle[n]=i.title.font.style),i.title.font.variant&&(r.labelFontVariant[n]=i.title.font.variant)),"showline"in i&&(r.lineEnable[n]=i.showline),"linecolor"in i&&(r.lineColor[n]=U2(i.linecolor)),"linewidth"in i&&(r.lineWidth[n]=i.linewidth),"showgrid"in i&&(r.gridEnable[n]=i.showgrid),"gridcolor"in i&&(r.gridColor[n]=U2(i.gridcolor)),"gridwidth"in i&&(r.gridWidth[n]=i.gridwidth),i.type==="log"?r.zeroEnable[n]=!1:"zeroline"in i&&(r.zeroEnable[n]=i.zeroline),"zerolinecolor"in i&&(r.zeroLineColor[n]=U2(i.zerolinecolor)),"zerolinewidth"in i&&(r.zeroLineWidth[n]=i.zerolinewidth),"ticks"in i&&i.ticks?r.lineTickEnable[n]=!0:r.lineTickEnable[n]=!1,"ticklen"in i&&(r.lineTickLength[n]=r._defaultLineTickLength[n]=i.ticklen),"tickcolor"in i&&(r.lineTickColor[n]=U2(i.tickcolor)),"tickwidth"in i&&(r.lineTickWidth[n]=i.tickwidth),"tickangle"in i&&(r.tickAngle[n]=i.tickangle==="auto"?-3600:Math.PI*-i.tickangle/180),"showticklabels"in i&&(r.tickEnable[n]=i.showticklabels),"tickfont"in i&&(i.tickfont.color&&(r.tickColor[n]=U2(i.tickfont.color)),i.tickfont.family&&(r.tickFont[n]=i.tickfont.family),i.tickfont.size&&(r.tickSize[n]=i.tickfont.size),i.tickfont.weight&&(r.tickFontWeight[n]=i.tickfont.weight),i.tickfont.style&&(r.tickFontStyle[n]=i.tickfont.style),i.tickfont.variant&&(r.tickFontVariant[n]=i.tickfont.variant)),"mirror"in i?["ticks","all","allticks"].indexOf(i.mirror)!==-1?(r.lineTickMirror[n]=!0,r.lineMirror[n]=!0):i.mirror===!0?(r.lineTickMirror[n]=!1,r.lineMirror[n]=!0):(r.lineTickMirror[n]=!1,r.lineMirror[n]=!1):r.lineMirror[n]=!1,"showbackground"in i&&i.showbackground!==!1?(r.backgroundEnable[n]=!0,r.backgroundColor[n]=U2(i.backgroundcolor)):r.backgroundEnable[n]=!1}};function uPt(e,t){var r=new rPe;return r.merge(e,t),r}iPe.exports=uPt});var sPe=ye((wvr,oPe)=>{"use strict";var cPt=Jy(),fPt=["xaxis","yaxis","zaxis"];function aPe(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}var hPt=aPe.prototype;hPt.merge=function(e){for(var t=0;t<3;++t){var r=e[fPt[t]];if(!r.visible){this.enabled[t]=!1,this.drawSides[t]=!1;continue}this.enabled[t]=r.showspikes,this.colors[t]=cPt(r.spikecolor),this.drawSides[t]=r.spikesides,this.lineWidth[t]=r.spikethickness}};function dPt(e){var t=new aPe;return t.merge(e),t}oPe.exports=dPt});var cPe=ye((Tvr,uPe)=>{"use strict";uPe.exports=yPt;var lPe=Qa(),vPt=Mr(),pPt=["xaxis","yaxis","zaxis"],gPt=[0,0,0];function mPt(e){for(var t=new Array(3),r=0;r<3;++r){for(var n=e[r],i=new Array(n.length),a=0;a/g," "));i[a]=u,o.tickmode=s}}t.ticks=i;for(var a=0;a<3;++a){gPt[a]=.5*(e.glplot.bounds[0][a]+e.glplot.bounds[1][a]);for(var c=0;c<2;++c)t.bounds[c][a]=e.glplot.bounds[c][a]}e.contourLevels=mPt(i)}});var mPe=ye((Avr,gPe)=>{"use strict";var dPe=Rd().gl_plot3d,_Pt=dPe.createCamera,fPe=dPe.createScene,xPt=QLe(),bPt=kL(),JD=ba(),up=Mr(),KD=up.preserveDrawingBuffer(),$D=Qa(),Kg=Nc(),wPt=Jy(),TPt=pZ(),APt=DU(),SPt=nPe(),MPt=sPe(),EPt=cPe(),kPt=wg().applyAutorangeOptions,HE,YD,vPe=!1;function pPe(e,t){var r=document.createElement("div"),n=e.container;this.graphDiv=e.graphDiv;var i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.position="absolute",i.style.top=i.style.left="0px",i.style.width=i.style.height="100%",i.style["z-index"]=20,i.style["pointer-events"]="none",r.appendChild(i),this.svgContainer=i,r.id=e.id,r.style.position="absolute",r.style.top=r.style.left="0px",r.style.width=r.style.height="100%",n.appendChild(r),this.fullLayout=t,this.id=e.id||"scene",this.fullSceneLayout=t[this.id],this.plotArgs=[[],{},{}],this.axesOptions=SPt(t,t[this.id]),this.spikeOptions=MPt(t[this.id]),this.container=r,this.staticMode=!!e.staticPlot,this.pixelRatio=this.pixelRatio||e.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=JD.getComponentMethod("annotations3d","convert"),this.drawAnnotations=JD.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var wv=pPe.prototype;wv.prepareOptions=function(){var e=this,t={canvas:e.canvas,gl:e.gl,glOptions:{preserveDrawingBuffer:KD,premultipliedAlpha:!0,antialias:!0},container:e.container,axes:e.axesOptions,spikes:e.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:e.camera,pixelRatio:e.pixelRatio};if(e.staticMode){if(!YD&&(HE=document.createElement("canvas"),YD=xPt({canvas:HE,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!YD))throw new Error("error creating static canvas/context for image server");t.gl=YD,t.canvas=HE}return t};var hPe=!0;wv.tryCreatePlot=function(){var e=this,t=e.prepareOptions(),r=!0;try{e.glplot=fPe(t)}catch(n){if(e.staticMode||!hPe||KD)r=!1;else{up.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{KD=t.glOptions.preserveDrawingBuffer=!0,e.glplot=fPe(t)}catch(i){KD=t.glOptions.preserveDrawingBuffer=!1,r=!1}}}return hPe=!1,r};wv.initializeGLCamera=function(){var e=this,t=e.fullSceneLayout.camera,r=t.projection.type==="orthographic";e.camera=_Pt(e.container,{center:[t.center.x,t.center.y,t.center.z],eye:[t.eye.x,t.eye.y,t.eye.z],up:[t.up.x,t.up.y,t.up.z],_ortho:r,zoomMin:.01,zoomMax:100,mode:"orbit"})};wv.initializeGLPlot=function(){var e=this;e.initializeGLCamera();var t=e.tryCreatePlot();if(!t)return TPt(e);e.traces={},e.make4thDimension();var r=e.graphDiv,n=r.layout,i=function(){var o={};return e.isCameraChanged(n)&&(o[e.id+".camera"]=e.getCamera()),e.isAspectChanged(n)&&(o[e.id+".aspectratio"]=e.glplot.getAspectratio(),n[e.id].aspectmode!=="manual"&&(e.fullSceneLayout.aspectmode=n[e.id].aspectmode=o[e.id+".aspectmode"]="manual")),o},a=function(o){if(o.fullSceneLayout.dragmode!==!1){var s=i();o.saveLayout(n),o.graphDiv.emit("plotly_relayout",s)}};return e.glplot.canvas&&(e.glplot.canvas.addEventListener("mouseup",function(){a(e)}),e.glplot.canvas.addEventListener("touchstart",function(){vPe=!0}),e.glplot.canvas.addEventListener("wheel",function(o){if(r._context._scrollZoom.gl3d){if(e.camera._ortho){var s=o.deltaX>o.deltaY?1.1:.9090909090909091,l=e.glplot.getAspectratio();e.glplot.setAspectratio({x:s*l.x,y:s*l.y,z:s*l.z})}a(e)}},bPt?{passive:!1}:!1),e.glplot.canvas.addEventListener("mousemove",function(){if(e.fullSceneLayout.dragmode!==!1&&e.camera.mouseListener.buttons!==0){var o=i();e.graphDiv.emit("plotly_relayouting",o)}}),e.staticMode||e.glplot.canvas.addEventListener("webglcontextlost",function(o){r&&r.emit&&r.emit("plotly_webglcontextlost",{event:o,layer:e.id})},!1)),e.glplot.oncontextloss=function(){e.recoverContext()},e.glplot.onrender=function(){e.render()},!0};wv.render=function(){var e=this,t=e.graphDiv,r,n=e.svgContainer,i=e.container.getBoundingClientRect();t._fullLayout._calcInverseTransform(t);var a=t._fullLayout._invScaleX,o=t._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),EPt(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,f=e.glplot.selection,h=0;h")):r.type==="isosurface"||r.type==="volume"?(p.valueLabel=$D.hoverLabelText(e._mockAxis,e._mockAxis.d2l(f.traceCoordinate[3]),r.valuehoverformat),_.push("value: "+p.valueLabel),f.textLabel&&_.push(f.textLabel),L=_.join("
")):L=f.textLabel;var C={x:f.traceCoordinate[0],y:f.traceCoordinate[1],z:f.traceCoordinate[2],data:x._input,fullData:x,curveNumber:x.index,pointNumber:b};Kg.appendArrayPointValue(C,x,b),r._module.eventData&&(C=x._module.eventData(C,f,x,{},b));var M={points:[C]};if(e.fullSceneLayout.hovermode){var g=[];Kg.loneHover({trace:x,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:p.xLabel,yLabel:p.yLabel,zLabel:p.zLabel,text:L,name:c.name,color:Kg.castHoverOption(x,b,"bgcolor")||c.color,borderColor:Kg.castHoverOption(x,b,"bordercolor"),fontFamily:Kg.castHoverOption(x,b,"font.family"),fontSize:Kg.castHoverOption(x,b,"font.size"),fontColor:Kg.castHoverOption(x,b,"font.color"),nameLength:Kg.castHoverOption(x,b,"namelength"),textAlign:Kg.castHoverOption(x,b,"align"),hovertemplate:up.castOption(x,b,"hovertemplate"),hovertemplateLabels:up.extendFlat({},C,p),eventData:[C]},{container:n,gd:t,inOut_bbox:g}),C.bbox=g[0]}f.distance<5&&(f.buttons||vPe)?t.emit("plotly_click",M):t.emit("plotly_hover",M),this.oldEventData=M}else Kg.loneUnhover(n),this.oldEventData&&t.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)};wv.recoverContext=function(){var e=this;e.glplot.dispose();var t=function(){if(e.glplot.gl.isContextLost()){requestAnimationFrame(t);return}if(!e.initializeGLPlot()){up.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}e.plot.apply(e,e.plotArgs)};requestAnimationFrame(t)};var GE=["xaxis","yaxis","zaxis"];function CPt(e,t,r){for(var n=e.fullSceneLayout,i=0;i<3;i++){var a=GE[i],o=a.charAt(0),s=n[a],l=t[o],u=t[o+"calendar"],c=t["_"+o+"length"];if(!up.isArrayOrTypedArray(l))r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],c-1);else for(var f,h=0;h<(c||l.length);h++)if(up.isArrayOrTypedArray(l[h]))for(var d=0;dx[1][o])x[0][o]=-1,x[1][o]=1;else{var T=x[1][o]-x[0][o];x[0][o]-=T/32,x[1][o]+=T/32}if(E=[x[0][o],x[1][o]],E=kPt(E,l),x[0][o]=E[0],x[1][o]=E[1],l.isReversed()){var F=x[0][o];x[0][o]=x[1][o],x[1][o]=F}}else E=l.range,x[0][o]=l.r2l(E[0]),x[1][o]=l.r2l(E[1]);x[0][o]===x[1][o]&&(x[0][o]-=1,x[1][o]+=1),b[o]=x[1][o]-x[0][o],l.range=[x[0][o],x[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*d[o],max:l.range[1]*d[o]})}var q,V=c.aspectmode;if(V==="cube")q=[1,1,1];else if(V==="manual"){var H=c.aspectratio;q=[H.x,H.y,H.z]}else if(V==="auto"||V==="data"){var X=[1,1,1];for(o=0;o<3;++o){l=c[GE[o]],u=l.type;var G=p[u];X[o]=Math.pow(G.acc,1/G.count)/d[o]}V==="data"||Math.max.apply(null,X)/Math.min.apply(null,X)<=4?q=X:q=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");c.aspectratio.x=f.aspectratio.x=q[0],c.aspectratio.y=f.aspectratio.y=q[1],c.aspectratio.z=f.aspectratio.z=q[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var N=c.domain||null,W=t._size||null;if(N&&W){var re=n.container.style;re.position="absolute",re.left=W.l+N.x[0]*W.w+"px",re.top=W.t+(1-N.y[1])*W.h+"px",re.width=W.w*(N.x[1]-N.x[0])+"px",re.height=W.h*(N.y[1]-N.y[0])+"px"}n.glplot.redraw()}};wv.destroy=function(){var e=this;e.glplot&&(e.camera.mouseListener.enabled=!1,e.container.removeEventListener("wheel",e.camera.wheelListener),e.camera=null,e.glplot.dispose(),e.container.parentNode.removeChild(e.container),e.glplot=null)};function PPt(e){return[[e.eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]}function IPt(e){return{up:{x:e.up[0],y:e.up[1],z:e.up[2]},center:{x:e.center[0],y:e.center[1],z:e.center[2]},eye:{x:e.eye[0],y:e.eye[1],z:e.eye[2]},projection:{type:e._ortho===!0?"orthographic":"perspective"}}}wv.getCamera=function(){var e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),IPt(e.camera)};wv.setViewport=function(e){var t=this,r=e.camera;t.camera.lookAt.apply(this,PPt(r)),t.glplot.setAspectratio(e.aspectratio);var n=r.projection.type==="orthographic",i=t.camera._ortho;n!==i&&(t.glplot.redraw(),t.glplot.clearRGBA(),t.glplot.dispose(),t.initializeGLPlot())};wv.isCameraChanged=function(e){var t=this,r=t.getCamera(),n=up.nestedProperty(e,t.id+".camera"),i=n.get();function a(u,c,f,h){var d=["up","center","eye"],v=["x","y","z"];return c[d[f]]&&u[d[f]][v[h]]===c[d[f]][v[h]]}var o=!1;if(i===void 0)o=!0;else{for(var s=0;s<3;s++)for(var l=0;l<3;l++)if(!a(r,i,s,l)){o=!0;break}(!i.projection||r.projection&&r.projection.type!==i.projection.type)&&(o=!0)}return o};wv.isAspectChanged=function(e){var t=this,r=t.glplot.getAspectratio(),n=up.nestedProperty(e,t.id+".aspectratio"),i=n.get();return i===void 0||i.x!==r.x||i.y!==r.y||i.z!==r.z};wv.saveLayout=function(e){var t=this,r=t.fullLayout,n,i,a,o,s,l,u=t.isCameraChanged(e),c=t.isAspectChanged(e),f=u||c;if(f){var h={};if(u&&(n=t.getCamera(),i=up.nestedProperty(e,t.id+".camera"),a=i.get(),h[t.id+".camera"]=a),c&&(o=t.glplot.getAspectratio(),s=up.nestedProperty(e,t.id+".aspectratio"),l=s.get(),h[t.id+".aspectratio"]=l),JD.call("_storeDirectGUIEdit",e,r._preGUI,h),u){i.set(n);var d=up.nestedProperty(r,t.id+".camera");d.set(n)}if(c){s.set(o);var v=up.nestedProperty(r,t.id+".aspectratio");v.set(o),t.glplot.redraw()}}return f};wv.updateFx=function(e,t){var r=this,n=r.camera;if(n)if(e==="orbit")n.mode="orbit",n.keyBindingMode="rotate";else if(e==="turntable"){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var c=r.id+".camera.up",f={x:0,y:0,z:1},h={};h[c]=f;var d=i.layout;JD.call("_storeDirectGUIEdit",d,a._preGUI,h),o.up=f,up.nestedProperty(d,c).set(f)}}else n.keyBindingMode=e;r.fullSceneLayout.hovermode=t};function RPt(e,t,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)e[a+l]=Math.min(s*e[a+l],255)}}wv.toImage=function(e){var t=this;e||(e="png"),t.staticMode&&t.container.appendChild(HE),t.glplot.redraw();var r=t.glplot.gl,n=r.drawingBufferWidth,i=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var a=new Uint8Array(n*i*4);r.readPixels(0,0,n,i,r.RGBA,r.UNSIGNED_BYTE,a),RPt(a,n,i),DPt(a,n,i);var o=document.createElement("canvas");o.width=n,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0}),l=s.createImageData(n,i);l.data.set(a),s.putImageData(l,0,0);var u;switch(e){case"jpeg":u=o.toDataURL("image/jpeg");break;case"webp":u=o.toDataURL("image/webp");break;default:u=o.toDataURL("image/png")}return t.staticMode&&t.container.removeChild(HE),u};wv.setConvert=function(){for(var e=this,t=0;t<3;t++){var r=e.fullSceneLayout[GE[t]];$D.setConvert(r,e.fullLayout),r.setScale=up.noop}};wv.make4thDimension=function(){var e=this,t=e.graphDiv,r=t._fullLayout;e._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},$D.setConvert(e._mockAxis,r)};gPe.exports=pPe});var _Pe=ye((Svr,yPe)=>{"use strict";yPe.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}});var mZ=ye((Mvr,xPe)=>{"use strict";var zPt=va(),cs=Cd(),gZ=no().extendFlat,FPt=Bu().overrideAll;xPe.exports=FPt({visible:cs.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:zPt.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:cs.color,categoryorder:cs.categoryorder,categoryarray:cs.categoryarray,title:{text:cs.title.text,font:cs.title.font},type:gZ({},cs.type,{values:["-","linear","log","date","category"]}),autotypenumbers:cs.autotypenumbers,autorange:cs.autorange,autorangeoptions:{minallowed:cs.autorangeoptions.minallowed,maxallowed:cs.autorangeoptions.maxallowed,clipmin:cs.autorangeoptions.clipmin,clipmax:cs.autorangeoptions.clipmax,include:cs.autorangeoptions.include,editType:"plot"},rangemode:cs.rangemode,minallowed:cs.minallowed,maxallowed:cs.maxallowed,range:gZ({},cs.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:cs.minor.tickmode,nticks:cs.nticks,tick0:cs.tick0,dtick:cs.dtick,tickvals:cs.tickvals,ticktext:cs.ticktext,ticks:cs.ticks,mirror:cs.mirror,ticklen:cs.ticklen,tickwidth:cs.tickwidth,tickcolor:cs.tickcolor,showticklabels:cs.showticklabels,labelalias:cs.labelalias,tickfont:cs.tickfont,tickangle:cs.tickangle,tickprefix:cs.tickprefix,showtickprefix:cs.showtickprefix,ticksuffix:cs.ticksuffix,showticksuffix:cs.showticksuffix,showexponent:cs.showexponent,exponentformat:cs.exponentformat,minexponent:cs.minexponent,separatethousands:cs.separatethousands,tickformat:cs.tickformat,tickformatstops:cs.tickformatstops,hoverformat:cs.hoverformat,showline:cs.showline,linecolor:cs.linecolor,linewidth:cs.linewidth,showgrid:cs.showgrid,gridcolor:gZ({},cs.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:cs.gridwidth,zeroline:cs.zeroline,zerolinecolor:cs.zerolinecolor,zerolinewidth:cs.zerolinewidth},"plot","from-root")});var bZ=ye((Evr,bPe)=>{"use strict";var yZ=mZ(),qPt=Ju().attributes,_Z=no().extendFlat,OPt=Mr().counterRegex;function xZ(e,t,r){return{x:{valType:"number",dflt:e,editType:"camera"},y:{valType:"number",dflt:t,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}bPe.exports={_arrayAttrRegexps:[OPt("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:_Z(xZ(0,0,1),{}),center:_Z(xZ(0,0,0),{}),eye:_Z(xZ(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:qPt({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:yZ,yaxis:yZ,zaxis:yZ,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}});var SPe=ye((kvr,APe)=>{"use strict";var BPt=id().mix,wPe=Mr(),NPt=Vs(),UPt=mZ(),VPt=yU(),HPt=JM(),TPe=["xaxis","yaxis","zaxis"],GPt=100*136/187;APe.exports=function(t,r,n){var i,a;function o(u,c){return wPe.coerce(i,a,UPt,u,c)}for(var s=0;s{"use strict";var jPt=Mr(),WPt=va(),ZPt=ba(),XPt=C_(),YPt=SPe(),MPe=bZ(),KPt=kd().getSubplotData,EPe="gl3d";kPe.exports=function(t,r,n){var i=r._basePlotModules.length>1;function a(o){if(!i){var s=jPt.validate(t[o],MPe[o]);if(s)return t[o]}}XPt(t,r,n,{type:EPe,attributes:MPe,handleDefaults:JPt,fullLayout:r,font:r.font,fullData:n,getDfltFromLayout:a,autotypenumbersDflt:r.autotypenumbers,paper_bgcolor:r.paper_bgcolor,calendar:r.calendar})};function JPt(e,t,r,n){for(var i=r("bgcolor"),a=WPt.combine(i,n.paper_bgcolor),o=["up","center","eye"],s=0;s.999)&&(h="turntable")}else h="turntable";r("dragmode",h),r("hovermode",n.getDfltFromLayout("hovermode"))}});var Q_=ye(cp=>{"use strict";var $Pt=Bu().overrideAll,QPt=N1(),eIt=mPe(),tIt=kd().getSubplotData,rIt=Mr(),iIt=Zp(),O5="gl3d",wZ="scene";cp.name=O5;cp.attr=wZ;cp.idRoot=wZ;cp.idRegex=cp.attrRegex=rIt.counterRegex("scene");cp.attributes=_Pe();cp.layoutAttributes=bZ();cp.baseLayoutAttrOverrides=$Pt({hoverlabel:QPt.hoverlabel},"plot","nested");cp.supplyLayoutDefaults=CPe();cp.plot=function(t){for(var r=t._fullLayout,n=t._fullData,i=r._subplots[O5],a=0;a{"use strict";LPe.exports={plot:ULe(),attributes:dZ(),markerSymbols:ZD(),supplyDefaults:ZLe(),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:YLe(),moduleType:"trace",name:"scatter3d",basePlotModule:Q_(),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}});var RPe=ye((Ivr,IPe)=>{"use strict";IPe.exports=PPe()});var jE=ye((Rvr,FPe)=>{"use strict";var DPe=va(),nIt=Jl(),TZ=Oc().axisHoverFormat,aIt=Wo().hovertemplateAttrs,zPe=vl(),AZ=no().extendFlat,oIt=Bu().overrideAll;function SZ(e){return{valType:"boolean",dflt:!1}}function MZ(e){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:SZ("x"),y:SZ("y"),z:SZ("z")},color:{valType:"color",dflt:DPe.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:DPe.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var EZ=FPe.exports=oIt(AZ({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:aIt(),xhoverformat:TZ("x"),yhoverformat:TZ("y"),zhoverformat:TZ("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},nIt("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:MZ("x"),y:MZ("y"),z:MZ("z")},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},hoverinfo:AZ({},zPe.hoverinfo),showlegend:AZ({},zPe.showlegend,{dflt:!1})}),"calc","nested");EZ.x.editType=EZ.y.editType=EZ.z.editType="calc+clearAxisTypes"});var CZ=ye((Dvr,BPe)=>{"use strict";var sIt=ba(),qPe=Mr(),lIt=Uh(),uIt=jE(),kZ=.1;function cIt(e,t){for(var r=[],n=32,i=0;i{"use strict";var NPe=zv();UPe.exports=function(t,r){r.surfacecolor?NPe(t,r,{vals:r.surfacecolor,containerStr:"",cLetter:"c"}):NPe(t,r,{vals:r.z,containerStr:"",cLetter:"c"})}});var XPe=ye((Fvr,ZPe)=>{"use strict";var dIt=Rd().gl_surface3d,B5=Rd().ndarray,vIt=Rd().ndarray_linear_interpolate.d2,pIt=e8(),gIt=t8(),WE=Mr().isArrayOrTypedArray,mIt=$y().parseColorScale,HPe=Jy(),yIt=Mu().extractOpts;function jPe(e,t,r){this.scene=e,this.uid=r,this.surface=t,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var Jg=jPe.prototype;Jg.getXat=function(e,t,r,n){var i=WE(this.data.x)?WE(this.data.x[0])?this.data.x[t][e]:this.data.x[e]:e;return r===void 0?i:n.d2l(i,0,r)};Jg.getYat=function(e,t,r,n){var i=WE(this.data.y)?WE(this.data.y[0])?this.data.y[t][e]:this.data.y[t]:t;return r===void 0?i:n.d2l(i,0,r)};Jg.getZat=function(e,t,r,n){var i=this.data.z[t][e];return i===null&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[t][e]),r===void 0?i:n.d2l(i,0,r)};Jg.handlePick=function(e){if(e.object===this.surface){var t=(e.data.index[0]-1)/this.dataScaleX-1,r=(e.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(t),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);e.index=[n,i],e.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],e.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=e.dataCoordinate[a];o!=null&&(e.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return WE(s)&&s[i]&&s[i][n]!==void 0?e.textLabel=s[i][n]:s?e.textLabel=s:e.textLabel="",e.data.dataCoordinate=e.dataCoordinate.slice(),this.surface.highlight(e.data),this.scene.glplot.spikes.position=e.dataCoordinate,!0}};function _It(e){var t=e[0].rgb,r=e[e.length-1].rgb;return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]}var N5=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function xIt(e,t){if(e0){r=N5[n];break}return r}function wIt(e,t){if(!(e<1||t<1)){for(var r=LZ(e),n=LZ(t),i=1,a=0;aQD;)n--,n/=bIt(n),n++,n1?i:1};function AIt(e,t,r){var n=r[8]+r[2]*t[0]+r[5]*t[1];return e[0]=(r[6]+r[0]*t[0]+r[3]*t[1])/n,e[1]=(r[7]+r[1]*t[0]+r[4]*t[1])/n,e}function SIt(e,t,r){return MIt(e,t,AIt,r),e}function MIt(e,t,r,n){for(var i=[0,0],a=e.shape[0],o=e.shape[1],s=0;s0&&this.contourStart[n]!==null&&this.contourEnd[n]!==null&&this.contourEnd[n]>this.contourStart[n]))for(t[n]=!0,i=this.contourStart[n];ih&&(this.minValues[u]=h),this.maxValues[u]{"use strict";YPe.exports={attributes:jE(),supplyDefaults:CZ().supplyDefaults,colorbar:{min:"cmin",max:"cmax"},calc:VPe(),plot:XPe(),moduleType:"trace",name:"surface",basePlotModule:Q_(),categories:["gl3d","2dMap","showLegend"],meta:{}}});var $Pe=ye((Ovr,JPe)=>{"use strict";JPe.exports=KPe()});var U5=ye((Bvr,eIe)=>{"use strict";var CIt=Jl(),PZ=Oc().axisHoverFormat,LIt=Wo().hovertemplateAttrs,ex=jE(),QPe=vl(),tx=no().extendFlat;eIe.exports=tx({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:LIt({editType:"calc"}),xhoverformat:PZ("x"),yhoverformat:PZ("y"),zhoverformat:PZ("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"}},CIt("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ex.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:tx({},ex.contours.x.show,{}),color:ex.contours.x.color,width:ex.contours.x.width,editType:"calc"},lightposition:{x:tx({},ex.lightposition.x,{dflt:1e5}),y:tx({},ex.lightposition.y,{dflt:1e5}),z:tx({},ex.lightposition.z,{dflt:0}),editType:"calc"},lighting:tx({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},ex.lighting),hoverinfo:tx({},QPe.hoverinfo,{editType:"calc"}),showlegend:tx({},QPe.showlegend,{dflt:!1})})});var tz=ye((Nvr,rIe)=>{"use strict";var PIt=Jl(),ez=Oc().axisHoverFormat,IIt=Wo().hovertemplateAttrs,ZE=U5(),tIe=vl(),IZ=no().extendFlat,RIt=Bu().overrideAll;function RZ(e){return{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}}function DZ(e){return{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}}var V5=rIe.exports=RIt(IZ({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:RZ("x"),y:RZ("y"),z:RZ("z")},caps:{x:DZ("x"),y:DZ("y"),z:DZ("z")},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:IIt(),xhoverformat:ez("x"),yhoverformat:ez("y"),zhoverformat:ez("z"),valuehoverformat:ez("value",1),showlegend:IZ({},tIe.showlegend,{dflt:!1})},PIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ZE.opacity,lightposition:ZE.lightposition,lighting:ZE.lighting,flatshading:ZE.flatshading,contour:ZE.contour,hoverinfo:IZ({},tIe.hoverinfo)}),"calc","nested");V5.flatshading.dflt=!0;V5.lighting.facenormalsepsilon.dflt=0;V5.x.editType=V5.y.editType=V5.z.editType=V5.value.editType="calc+clearAxisTypes"});var zZ=ye((Uvr,nIe)=>{"use strict";var DIt=Mr(),zIt=ba(),FIt=tz(),qIt=Uh();function OIt(e,t,r,n){function i(a,o){return DIt.coerce(e,t,FIt,a,o)}iIe(e,t,r,n,i)}function iIe(e,t,r,n,i){var a=i("isomin"),o=i("isomax");o!=null&&a!==void 0&&a!==null&&a>o&&(t.isomin=null,t.isomax=null);var s=i("x"),l=i("y"),u=i("z"),c=i("value");if(!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length){t.visible=!1;return}var f=zIt.getComponentMethod("calendars","handleTraceDefaults");f(e,t,["x","y","z"],n),i("valuehoverformat"),["x","y","z"].forEach(function(x){i(x+"hoverformat");var b="caps."+x,p=i(b+".show");p&&i(b+".fill");var E="slices."+x,k=i(E+".show");k&&(i(E+".fill"),i(E+".locations"))});var h=i("spaceframe.show");h&&i("spaceframe.fill");var d=i("surface.show");d&&(i("surface.count"),i("surface.fill"),i("surface.pattern"));var v=i("contour.show");v&&(i("contour.color"),i("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(x){i(x)}),qIt(e,t,n,i,{prefix:"",cLetter:"c"}),t._length=null}nIe.exports={supplyDefaults:OIt,supplyIsoDefaults:iIe}});var rz=ye((Vvr,oIe)=>{"use strict";var qZ=Mr(),BIt=zv();function NIt(e,t){t._len=Math.min(t.u.length,t.v.length,t.w.length,t.x.length,t.y.length,t.z.length),t._u=Gm(t.u,t._len),t._v=Gm(t.v,t._len),t._w=Gm(t.w,t._len),t._x=Gm(t.x,t._len),t._y=Gm(t.y,t._len),t._z=Gm(t.z,t._len);var r=aIe(t);t._gridFill=r.fill,t._Xs=r.Xs,t._Ys=r.Ys,t._Zs=r.Zs,t._len=r.len;var n=0,i,a,o;t.starts&&(i=Gm(t.starts.x||[]),a=Gm(t.starts.y||[]),o=Gm(t.starts.z||[]),n=Math.min(i.length,a.length,o.length)),t._startsX=i||[],t._startsY=a||[],t._startsZ=o||[];var s=0,l=1/0,u;for(u=0;u1&&(k=t[i-1],L=r[i-1],C=n[i-1]),a=0;ak?"-":"+")+"x"),v=v.replace("y",(A>L?"-":"+")+"y"),v=v.replace("z",(_>C?"-":"+")+"z");var T=function(){i=0,M=[],g=[],P=[]};(!i||i{"use strict";var UIt=zv(),VIt=rz().processGrid,iz=rz().filter;sIe.exports=function(t,r){r._len=Math.min(r.x.length,r.y.length,r.z.length,r.value.length),r._x=iz(r.x,r._len),r._y=iz(r.y,r._len),r._z=iz(r.z,r._len),r._value=iz(r.value,r._len);var n=VIt(r);r._gridFill=n.fill,r._Xs=n.Xs,r._Ys=n.Ys,r._Zs=n.Zs,r._len=n.len;for(var i=1/0,a=-1/0,o=0;o{"use strict";lIe.exports=function(t,r,n,i){i=i||t.length;for(var a=new Array(i),o=0;o{"use strict";var HIt=Rd().gl_mesh3d,GIt=$y().parseColorScale,jIt=Mr().isArrayOrTypedArray,WIt=Jy(),ZIt=Mu().extractOpts,uIe=H5(),XE=function(e,t){for(var r=t.length-1;r>0;r--){var n=Math.min(t[r],t[r-1]),i=Math.max(t[r],t[r-1]);if(i>n&&n-1}function ae(bt,Lt){return bt===null?Lt:bt}function _e(bt,Lt,St){T();var Et=[Lt],dt=[St];if(G>=1)Et=[Lt],dt=[St];else if(G>0){var Ht=W(Lt,St);Et=Ht.xyzv,dt=Ht.abc}for(var $t=0;$t-1?St[_r]:P(Br,Or,Nr);Ne>-1?fr[_r]=Ne:fr[_r]=q(Br,Or,Nr,ae(bt,ut))}V(fr[0],fr[1],fr[2])}}function Me(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(2,3,0)}function ke(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}function ge(bt,Lt,St,Et){var dt=bt[3];dtEt&&(dt=Et);for(var Ht=(bt[3]-dt)/(bt[3]-Lt[3]+1e-9),$t=[],fr=0;fr<4;fr++)$t[fr]=(1-Ht)*bt[fr]+Ht*Lt[fr];return $t}function ie(bt,Lt,St){return bt>=Lt&&bt<=St}function Te(bt){var Lt=.001*(L-A);return bt>=A-Lt&&bt<=L+Lt}function Ee(bt){for(var Lt=[],St=0;St<4;St++){var Et=bt[St];Lt.push([e._x[Et],e._y[Et],e._z[Et],e._value[Et]])}return Lt}var Ae=3;function ze(bt,Lt,St,Et,dt,Ht){Ht||(Ht=1),St=[-1,-1,-1];var $t=!1,fr=[ie(Lt[0][3],Et,dt),ie(Lt[1][3],Et,dt),ie(Lt[2][3],Et,dt)];if(!fr[0]&&!fr[1]&&!fr[2])return!1;var _r=function(Or,Nr,ut){return Te(Nr[0][3])&&Te(Nr[1][3])&&Te(Nr[2][3])?(_e(Or,Nr,ut),!0):Htfr?[E,Ht]:[Ht,k];kt(Lt,_r[0],_r[1])}}var Br=[[Math.min(A,k),Math.max(A,k)],[Math.min(E,L),Math.max(E,L)]];["x","y","z"].forEach(function(Or){for(var Nr=[],ut=0;ut0&&(Le.push(lt.id),Or==="x"?xe.push([lt.distRatio,0,0]):Or==="y"?xe.push([0,lt.distRatio,0]):xe.push([0,0,lt.distRatio]))}else Or==="x"?ht=er(1,d-1):Or==="y"?ht=er(1,v-1):ht=er(1,x-1);Le.length>0&&(Or==="x"?Nr[Ne]=Ct(bt,Le,Ye,Ve,xe,Nr[Ne]):Or==="y"?Nr[Ne]=Yt(bt,Le,Ye,Ve,xe,Nr[Ne]):Nr[Ne]=xr(bt,Le,Ye,Ve,xe,Nr[Ne]),Ne++),ht.length>0&&(Or==="x"?Nr[Ne]=ct(bt,ht,Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,ht,Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,ht,Ye,Ve,Nr[Ne]),Ne++)}var Gt=e.caps[Or];Gt.show&&Gt.fill&&(N(Gt.fill),Or==="x"?Nr[Ne]=ct(bt,[0,d-1],Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,[0,v-1],Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,[0,x-1],Ye,Ve,Nr[Ne]),Ne++)}}),s===0&&F(),e._meshX=_,e._meshY=C,e._meshZ=M,e._meshIntensity=g,e._Xs=c,e._Ys=f,e._Zs=h}return xt(),e}function YIt(e,t){var r=e.glplot.gl,n=HIt({gl:r}),i=new cIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}hIe.exports={findNearestOnAxis:XE,generateIsoMeshes:fIe,createIsosurfaceTrace:YIt}});var vIe=ye((Wvr,dIe)=>{"use strict";dIe.exports={attributes:tz(),supplyDefaults:zZ().supplyDefaults,calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:nz().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var gIe=ye((Zvr,pIe)=>{"use strict";pIe.exports=vIe()});var UZ=ye((Xvr,yIe)=>{"use strict";var KIt=Jl(),xh=tz(),JIt=jE(),mIe=vl(),NZ=no().extendFlat,$It=Bu().overrideAll,az=yIe.exports=$It(NZ({x:xh.x,y:xh.y,z:xh.z,value:xh.value,isomin:xh.isomin,isomax:xh.isomax,surface:xh.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:xh.slices,caps:xh.caps,text:xh.text,hovertext:xh.hovertext,xhoverformat:xh.xhoverformat,yhoverformat:xh.yhoverformat,zhoverformat:xh.zhoverformat,valuehoverformat:xh.valuehoverformat,hovertemplate:xh.hovertemplate},KIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:xh.colorbar,opacity:xh.opacity,opacityscale:JIt.opacityscale,lightposition:xh.lightposition,lighting:xh.lighting,flatshading:xh.flatshading,contour:xh.contour,hoverinfo:NZ({},mIe.hoverinfo),showlegend:NZ({},mIe.showlegend,{dflt:!1})}),"calc","nested");az.x.editType=az.y.editType=az.z.editType=az.value.editType="calc+clearAxisTypes"});var xIe=ye((Yvr,_Ie)=>{"use strict";var QIt=Mr(),e8t=UZ(),t8t=zZ().supplyIsoDefaults,r8t=CZ().opacityscaleDefaults;_Ie.exports=function(t,r,n,i){function a(o,s){return QIt.coerce(t,r,e8t,o,s)}t8t(t,r,n,i,a),r8t(t,r,i,a)}});var AIe=ye((Kvr,TIe)=>{"use strict";var i8t=Rd().gl_mesh3d,n8t=$y().parseColorScale,a8t=Mr().isArrayOrTypedArray,o8t=Jy(),s8t=Mu().extractOpts,bIe=H5(),VZ=nz().findNearestOnAxis,l8t=nz().generateIsoMeshes;function wIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.data=null,this.showContour=!1}var HZ=wIe.prototype;HZ.handlePick=function(e){if(e.object===this.mesh){var t=e.data.index,r=this.data._meshX[t],n=this.data._meshY[t],i=this.data._meshZ[t],a=this.data._Ys.length,o=this.data._Zs.length,s=VZ(r,this.data._Xs).id,l=VZ(n,this.data._Ys).id,u=VZ(i,this.data._Zs).id,c=e.index=u+o*l+o*a*s;e.traceCoordinate=[this.data._meshX[c],this.data._meshY[c],this.data._meshZ[c],this.data._value[c]];var f=this.data.hovertext||this.data.text;return a8t(f)&&f[c]!==void 0?e.textLabel=f[c]:f&&(e.textLabel=f),!0}};HZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=l8t(e);function n(l,u,c,f){return u.map(function(h){return l.d2l(h,0,f)*c})}var i=bIe(n(r.xaxis,e._meshX,t.dataScale[0],e.xcalendar),n(r.yaxis,e._meshY,t.dataScale[1],e.ycalendar),n(r.zaxis,e._meshZ,t.dataScale[2],e.zcalendar)),a=bIe(e._meshI,e._meshJ,e._meshK),o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,opacityscale:e.opacityscale,contourEnable:e.contour.show,contourColor:o8t(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading},s=s8t(e);o.vertexIntensity=e._meshIntensity,o.vertexIntensityBounds=[s.min,s.max],o.colormap=n8t(e),this.mesh.update(o)};HZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function u8t(e,t){var r=e.glplot.gl,n=i8t({gl:r}),i=new wIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}TIe.exports=u8t});var MIe=ye((Jvr,SIe)=>{"use strict";SIe.exports={attributes:UZ(),supplyDefaults:xIe(),calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:AIe(),moduleType:"trace",name:"volume",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var kIe=ye(($vr,EIe)=>{"use strict";EIe.exports=MIe()});var PIe=ye((Qvr,LIe)=>{"use strict";var c8t=ba(),CIe=Mr(),f8t=Uh(),h8t=U5();LIe.exports=function(t,r,n,i){function a(c,f){return CIe.coerce(t,r,h8t,c,f)}function o(c){var f=c.map(function(h){var d=a(h);return d&&CIe.isArrayOrTypedArray(d)?d:null});return f.every(function(h){return h&&h.length===f[0].length})&&f}var s=o(["x","y","z"]);if(!s){r.visible=!1;return}if(o(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var l=c8t.getComponentMethod("calendars","handleTraceDefaults");l(t,r,["x","y","z"],i),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(c){a(c)});var u=a("contour.show");u&&(a("contour.color"),a("contour.width")),"intensity"in t?(a("intensity"),a("intensitymode"),f8t(t,r,i,a,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?a("facecolor"):"vertexcolor"in t?a("vertexcolor"):a("color",n)),a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var RIe=ye((epr,IIe)=>{"use strict";var d8t=zv();IIe.exports=function(t,r){r.intensity&&d8t(t,r,{vals:r.intensity,containerStr:"",cLetter:"c"})}});var OIe=ye((tpr,qIe)=>{"use strict";var v8t=Rd().gl_mesh3d,p8t=Rd().delaunay_triangulate,g8t=Rd().alpha_shape,m8t=Rd().convex_hull,y8t=$y().parseColorScale,_8t=Mr().isArrayOrTypedArray,ZZ=Jy(),x8t=Mu().extractOpts,DIe=H5();function FIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var XZ=FIe.prototype;XZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index;e.data._cellCenter?e.traceCoordinate=e.data.dataCoordinate:e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]];var r=this.data.hovertext||this.data.text;return _8t(r)&&r[t]!==void 0?e.textLabel=r[t]:r&&(e.textLabel=r),!0}};function zIe(e){for(var t=[],r=e.length,n=0;n=t-.5)return!1;return!0}XZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e;var n=e.x.length,i=DIe(GZ(r.xaxis,e.x,t.dataScale[0],e.xcalendar),GZ(r.yaxis,e.y,t.dataScale[1],e.ycalendar),GZ(r.zaxis,e.z,t.dataScale[2],e.zcalendar)),a;if(e.i&&e.j&&e.k){if(e.i.length!==e.j.length||e.j.length!==e.k.length||!WZ(e.i,n)||!WZ(e.j,n)||!WZ(e.k,n))return;a=DIe(jZ(e.i),jZ(e.j),jZ(e.k))}else e.alphahull===0?a=m8t(i):e.alphahull>0?a=g8t(e.alphahull,i):a=b8t(e.delaunayaxis,i);var o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,contourEnable:e.contour.show,contourColor:ZZ(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading};if(e.intensity){var s=x8t(e);this.color="#fff";var l=e.intensitymode;o[l+"Intensity"]=e.intensity,o[l+"IntensityBounds"]=[s.min,s.max],o.colormap=y8t(e)}else e.vertexcolor?(this.color=e.vertexcolor[0],o.vertexColors=zIe(e.vertexcolor)):e.facecolor?(this.color=e.facecolor[0],o.cellColors=zIe(e.facecolor)):(this.color=e.color,o.meshColor=ZZ(e.color));this.mesh.update(o)};XZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function w8t(e,t){var r=e.glplot.gl,n=v8t({gl:r}),i=new FIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}qIe.exports=w8t});var NIe=ye((rpr,BIe)=>{"use strict";BIe.exports={attributes:U5(),supplyDefaults:PIe(),calc:RIe(),colorbar:{min:"cmin",max:"cmax"},plot:OIe(),moduleType:"trace",name:"mesh3d",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var VIe=ye((ipr,UIe)=>{"use strict";UIe.exports=NIe()});var KZ=ye((npr,GIe)=>{"use strict";var T8t=Jl(),G5=Oc().axisHoverFormat,A8t=Wo().hovertemplateAttrs,S8t=U5(),HIe=vl(),YZ=no().extendFlat,oz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:A8t({editType:"calc"},{keys:["norm"]}),uhoverformat:G5("u",1),vhoverformat:G5("v",1),whoverformat:G5("w",1),xhoverformat:G5("x"),yhoverformat:G5("y"),zhoverformat:G5("z"),showlegend:YZ({},HIe.showlegend,{dflt:!1})};YZ(oz,T8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var M8t=["opacity","lightposition","lighting"];M8t.forEach(function(e){oz[e]=S8t[e]});oz.hoverinfo=YZ({},HIe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"});GIe.exports=oz});var WIe=ye((apr,jIe)=>{"use strict";var E8t=Mr(),k8t=Uh(),C8t=KZ();jIe.exports=function(t,r,n,i){function a(d,v){return E8t.coerce(t,r,C8t,d,v)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}var h=a("sizemode");a("sizeref",h==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),k8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var XIe=ye((opr,ZIe)=>{"use strict";var L8t=zv();ZIe.exports=function(t,r){for(var n=r.u,i=r.v,a=r.w,o=Math.min(r.x.length,r.y.length,r.z.length,n.length,i.length,a.length),s=-1/0,l=1/0,u=0;u{"use strict";var P8t=Rd().gl_cone3d,I8t=Rd().gl_cone3d.createConeMesh,R8t=Mr().simpleMap,D8t=$y().parseColorScale,z8t=Mu().extractOpts,F8t=Mr().isArrayOrTypedArray,YIe=H5();function KIe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var JZ=KIe.prototype;JZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index,r=this.data.x[t],n=this.data.y[t],i=this.data.z[t],a=this.data.u[t],o=this.data.v[t],s=this.data.w[t];e.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.hovertext||this.data.text;return F8t(l)&&l[t]!==void 0?e.textLabel=l[t]:l&&(e.textLabel=l),!0}};var q8t={xaxis:0,yaxis:1,zaxis:2},O8t={tip:1,tail:0,cm:.25,center:.5},B8t={tip:1,tail:1,cm:.75,center:.5};function JIe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i={};function a(c,f){var h=r[f],d=n[q8t[f]];return R8t(c,function(v){return h.d2l(v)*d})}i.vectors=YIe(a(t.u,"xaxis"),a(t.v,"yaxis"),a(t.w,"zaxis"),t._len),i.positions=YIe(a(t.x,"xaxis"),a(t.y,"yaxis"),a(t.z,"zaxis"),t._len);var o=z8t(t);i.colormap=D8t(t),i.vertexIntensityBounds=[o.min/t._normMax,o.max/t._normMax],i.coneOffset=O8t[t.anchor];var s=t.sizemode;s==="scaled"?i.coneSize=t.sizeref||.5:s==="absolute"?i.coneSize=t.sizeref&&t._normMax?t.sizeref/t._normMax:.5:s==="raw"&&(i.coneSize=t.sizeref),i.coneSizemode=s;var l=P8t(i),u=t.lightposition;return l.lightPosition=[u.x,u.y,u.z],l.ambient=t.lighting.ambient,l.diffuse=t.lighting.diffuse,l.specular=t.lighting.specular,l.roughness=t.lighting.roughness,l.fresnel=t.lighting.fresnel,l.opacity=t.opacity,t._pad=B8t[t.anchor]*l.vectorScale*l.coneScale*t._normMax,l}JZ.update=function(e){this.data=e;var t=JIe(this.scene,e);this.mesh.update(t)};JZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function N8t(e,t){var r=e.glplot.gl,n=JIe(e,t),i=I8t(r,n),a=new KIe(e,t.uid);return a.mesh=i,a.data=t,i._trace=a,e.glplot.add(i),a}$Ie.exports=N8t});var t8e=ye((lpr,e8e)=>{"use strict";e8e.exports={moduleType:"trace",name:"cone",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:KZ(),supplyDefaults:WIe(),colorbar:{min:"cmin",max:"cmax"},calc:XIe(),plot:QIe(),eventData:function(e,t){return e.norm=t.traceCoordinate[6],e},meta:{}}});var i8e=ye((upr,r8e)=>{"use strict";r8e.exports=t8e()});var QZ=ye((cpr,a8e)=>{"use strict";var U8t=Jl(),j5=Oc().axisHoverFormat,V8t=Wo().hovertemplateAttrs,H8t=U5(),n8e=vl(),$Z=no().extendFlat,sz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},starts:{x:{valType:"data_array",editType:"calc"},y:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},editType:"calc"},maxdisplayed:{valType:"integer",min:0,dflt:1e3,editType:"calc"},sizeref:{valType:"number",editType:"calc",min:0,dflt:1},text:{valType:"string",dflt:"",editType:"calc"},hovertext:{valType:"string",dflt:"",editType:"calc"},hovertemplate:V8t({editType:"calc"},{keys:["tubex","tubey","tubez","tubeu","tubev","tubew","norm","divergence"]}),uhoverformat:j5("u",1),vhoverformat:j5("v",1),whoverformat:j5("w",1),xhoverformat:j5("x"),yhoverformat:j5("y"),zhoverformat:j5("z"),showlegend:$Z({},n8e.showlegend,{dflt:!1})};$Z(sz,U8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var G8t=["opacity","lightposition","lighting"];G8t.forEach(function(e){sz[e]=H8t[e]});sz.hoverinfo=$Z({},n8e.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","divergence","text","name"],dflt:"x+y+z+norm+text+name"});a8e.exports=sz});var s8e=ye((fpr,o8e)=>{"use strict";var j8t=Mr(),W8t=Uh(),Z8t=QZ();o8e.exports=function(t,r,n,i){function a(h,d){return j8t.coerce(t,r,Z8t,h,d)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}a("starts.x"),a("starts.y"),a("starts.z"),a("maxdisplayed"),a("sizeref"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),W8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var p8e=ye((hpr,v8e)=>{"use strict";var c8e=Rd().gl_streamtube3d,X8t=c8e.createTubeMesh,Y8t=Mr(),K8t=$y().parseColorScale,J8t=Mu().extractOpts,l8e=H5(),f8e={xaxis:0,yaxis:1,zaxis:2};function h8e(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var tX=h8e.prototype;tX.handlePick=function(e){var t=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(o,s){var l=t[s],u=r[f8e[s]];return l.l2c(o)/u}if(e.object===this.mesh){var i=e.data.position,a=e.data.velocity;return e.traceCoordinate=[n(i[0],"xaxis"),n(i[1],"yaxis"),n(i[2],"zaxis"),n(a[0],"xaxis"),n(a[1],"yaxis"),n(a[2],"zaxis"),e.data.intensity*this.data._normMax,e.data.divergence],e.textLabel=this.data.hovertext||this.data.text,!0}};function u8e(e){var t=e.length,r;return t>2?r=e.slice(1,t-1):t===2?r=[(e[0]+e[1])/2]:r=e,r}function eX(e){var t=e.length;return t===1?[.5,.5]:[e[1]-e[0],e[t-1]-e[t-2]]}function d8e(e,t){var r=e.fullSceneLayout,n=e.dataScale,i=t._len,a={};function o(F,q){var V=r[q],H=n[f8e[q]];return Y8t.simpleMap(F,function(X){return V.d2l(X)*H})}if(a.vectors=l8e(o(t._u,"xaxis"),o(t._v,"yaxis"),o(t._w,"zaxis"),i),!i)return{positions:[],cells:[]};var s=o(t._Xs,"xaxis"),l=o(t._Ys,"yaxis"),u=o(t._Zs,"zaxis");a.meshgrid=[s,l,u],a.gridFill=t._gridFill;var c=t._slen;if(c)a.startingPositions=l8e(o(t._startsX,"xaxis"),o(t._startsY,"yaxis"),o(t._startsZ,"zaxis"));else{for(var f=l[0],h=u8e(s),d=u8e(u),v=new Array(h.length*d.length),x=0,b=0;b{"use strict";g8e.exports={moduleType:"trace",name:"streamtube",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:QZ(),supplyDefaults:s8e(),colorbar:{min:"cmin",max:"cmax"},calc:rz().calc,plot:p8e(),eventData:function(e,t){return e.tubex=e.x,e.tubey=e.y,e.tubez=e.z,e.tubeu=t.traceCoordinate[3],e.tubev=t.traceCoordinate[4],e.tubew=t.traceCoordinate[5],e.norm=t.traceCoordinate[6],e.divergence=t.traceCoordinate[7],delete e.x,delete e.y,delete e.z,e},meta:{}}});var _8e=ye((vpr,y8e)=>{"use strict";y8e.exports=m8e()});var H2=ye((ppr,w8e)=>{"use strict";var Q8t=Wo().hovertemplateAttrs,eRt=Wo().texttemplateAttrs,tRt=Eg(),jm=Uc(),rRt=vl(),x8e=Jl(),iRt=Ed().dash,V2=no().extendFlat,nRt=Bu().overrideAll,eg=jm.marker,b8e=jm.line,aRt=eg.line;w8e.exports=nRt({lon:{valType:"data_array"},lat:{valType:"data_array"},locations:{valType:"data_array"},locationmode:{valType:"enumerated",values:["ISO-3","USA-states","country names","geojson-id"],dflt:"ISO-3"},geojson:{valType:"any",editType:"calc"},featureidkey:{valType:"string",editType:"calc",dflt:"id"},mode:V2({},jm.mode,{dflt:"markers"}),text:V2({},jm.text,{}),texttemplate:eRt({editType:"plot"},{keys:["lat","lon","location","text"]}),hovertext:V2({},jm.hovertext,{}),textfont:jm.textfont,textposition:jm.textposition,line:{color:b8e.color,width:b8e.width,dash:iRt},connectgaps:jm.connectgaps,marker:V2({symbol:eg.symbol,opacity:eg.opacity,angle:eg.angle,angleref:V2({},eg.angleref,{values:["previous","up","north"]}),standoff:eg.standoff,size:eg.size,sizeref:eg.sizeref,sizemin:eg.sizemin,sizemode:eg.sizemode,colorbar:eg.colorbar,line:V2({width:aRt.width},x8e("marker.line")),gradient:eg.gradient},x8e("marker")),fill:{valType:"enumerated",values:["none","toself"],dflt:"none"},fillcolor:tRt(),selected:jm.selected,unselected:jm.unselected,hoverinfo:V2({},rRt.hoverinfo,{flags:["lon","lat","location","text","name"]}),hovertemplate:Q8t()},"calc","nested")});var A8e=ye((gpr,T8e)=>{"use strict";var rX=Mr(),iX=lu(),oRt=$p(),sRt=R0(),lRt=D0(),uRt=Ig(),cRt=H2();T8e.exports=function(t,r,n,i){function a(d,v){return rX.coerce(t,r,cRt,d,v)}var o=a("locations"),s;if(o&&o.length){var l=a("geojson"),u;(typeof l=="string"&&l!==""||rX.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),s=o.length}else{var f=a("lon")||[],h=a("lat")||[];s=Math.min(f.length,h.length)}if(!s){r.visible=!1;return}r._length=s,a("text"),a("hovertext"),a("hovertemplate"),a("mode"),iX.hasMarkers(r)&&oRt(t,r,n,i,a,{gradient:!0}),iX.hasLines(r)&&(sRt(t,r,n,i,a),a("connectgaps")),iX.hasText(r)&&(a("texttemplate"),lRt(t,r,i,a)),a("fill"),r.fill!=="none"&&uRt(t,r,n,a),rX.coerceSelectionMarkerOpacity(r,a)}});var E8e=ye((mpr,M8e)=>{"use strict";var S8e=Qa();M8e.exports=function(t,r,n){var i={},a=n[r.geo]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=S8e.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=S8e.tickText(o,o.c2l(s[1]),!0).text,i}});var lz=ye((ypr,P8e)=>{"use strict";var nX=uo(),k8e=es().BADNUM,fRt=z0(),hRt=km(),dRt=F0(),vRt=Mr().isArrayOrTypedArray,C8e=Mr()._;function L8e(e){return e&&typeof e=="string"}P8e.exports=function(t,r){var n=vRt(r.locations),i=n?r.locations.length:r._length,a=new Array(i),o;r.geojson?o=function(h){return L8e(h)||nX(h)}:o=L8e;for(var s=0;s{"use strict";Tv.projNames={airy:"airy",aitoff:"aitoff","albers usa":"albersUsa",albers:"albers",august:"august","azimuthal equal area":"azimuthalEqualArea","azimuthal equidistant":"azimuthalEquidistant",baker:"baker",bertin1953:"bertin1953",boggs:"boggs",bonne:"bonne",bottomley:"bottomley",bromley:"bromley",collignon:"collignon","conic conformal":"conicConformal","conic equal area":"conicEqualArea","conic equidistant":"conicEquidistant",craig:"craig",craster:"craster","cylindrical equal area":"cylindricalEqualArea","cylindrical stereographic":"cylindricalStereographic",eckert1:"eckert1",eckert2:"eckert2",eckert3:"eckert3",eckert4:"eckert4",eckert5:"eckert5",eckert6:"eckert6",eisenlohr:"eisenlohr","equal earth":"equalEarth",equirectangular:"equirectangular",fahey:"fahey","foucaut sinusoidal":"foucautSinusoidal",foucaut:"foucaut",ginzburg4:"ginzburg4",ginzburg5:"ginzburg5",ginzburg6:"ginzburg6",ginzburg8:"ginzburg8",ginzburg9:"ginzburg9",gnomonic:"gnomonic","gringorten quincuncial":"gringortenQuincuncial",gringorten:"gringorten",guyou:"guyou",hammer:"hammer",hill:"hill",homolosine:"homolosine",hufnagel:"hufnagel",hyperelliptical:"hyperelliptical",kavrayskiy7:"kavrayskiy7",lagrange:"lagrange",larrivee:"larrivee",laskowski:"laskowski",loximuthal:"loximuthal",mercator:"mercator",miller:"miller",mollweide:"mollweide","mt flat polar parabolic":"mtFlatPolarParabolic","mt flat polar quartic":"mtFlatPolarQuartic","mt flat polar sinusoidal":"mtFlatPolarSinusoidal","natural earth":"naturalEarth","natural earth1":"naturalEarth1","natural earth2":"naturalEarth2","nell hammer":"nellHammer",nicolosi:"nicolosi",orthographic:"orthographic",patterson:"patterson","peirce quincuncial":"peirceQuincuncial",polyconic:"polyconic","rectangular polyconic":"rectangularPolyconic",robinson:"robinson",satellite:"satellite","sinu mollweide":"sinuMollweide",sinusoidal:"sinusoidal",stereographic:"stereographic",times:"times","transverse mercator":"transverseMercator","van der grinten":"vanDerGrinten","van der grinten2":"vanDerGrinten2","van der grinten3":"vanDerGrinten3","van der grinten4":"vanDerGrinten4",wagner4:"wagner4",wagner6:"wagner6",wiechel:"wiechel","winkel tripel":"winkel3",winkel3:"winkel3"};Tv.axesNames=["lonaxis","lataxis"];Tv.lonaxisSpan={orthographic:180,"azimuthal equal area":360,"azimuthal equidistant":360,"conic conformal":180,gnomonic:160,stereographic:180,"transverse mercator":180,"*":360};Tv.lataxisSpan={"conic conformal":150,stereographic:179.5,"*":180};Tv.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:"equirectangular",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:"albers usa"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:"conic conformal",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:"mercator",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:"mercator",projRotate:[0,0,0]},"north america":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:"conic conformal",projRotate:[-100,0,0],projParallels:[29.5,45.5]},"south america":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:"mercator",projRotate:[0,0,0]}};Tv.clipPad=.001;Tv.precision=.1;Tv.landColor="#F0DC82";Tv.waterColor="#3399FF";Tv.locationmodeToLayer={"ISO-3":"countries","USA-states":"subunits","country names":"countries"};Tv.sphereSVG={type:"Sphere"};Tv.fillLayers={ocean:1,land:1,lakes:1};Tv.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1};Tv.layers=["bg","ocean","land","lakes","subunits","countries","coastlines","rivers","lataxis","lonaxis","frame","backplot","frontplot"];Tv.layersForChoropleth=["bg","ocean","land","subunits","countries","coastlines","lataxis","lonaxis","frame","backplot","rivers","lakes","frontplot"];Tv.layerNameToAdjective={ocean:"ocean",land:"land",lakes:"lake",subunits:"subunit",countries:"country",coastlines:"coastline",rivers:"river",frame:"frame"}});var aX=ye((uz,I8e)=>{(function(e,t){typeof uz=="object"&&typeof I8e!="undefined"?t(uz):(e=e||self,t(e.topojson=e.topojson||{}))})(uz,function(e){"use strict";function t(k){return k}function r(k){if(k==null)return t;var A,L,_=k.scale[0],C=k.scale[1],M=k.translate[0],g=k.translate[1];return function(P,T){T||(A=L=0);var F=2,q=P.length,V=new Array(q);for(V[0]=(A+=P[0])*_+M,V[1]=(L+=P[1])*C+g;FM&&(M=F[0]),F[1]g&&(g=F[1])}function T(F){switch(F.type){case"GeometryCollection":F.geometries.forEach(T);break;case"Point":P(F.coordinates);break;case"MultiPoint":F.coordinates.forEach(P);break}}k.arcs.forEach(function(F){for(var q=-1,V=F.length,H;++qM&&(M=H[0]),H[1]g&&(g=H[1])});for(L in k.objects)T(k.objects[L]);return[_,C,M,g]}function i(k,A){for(var L,_=k.length,C=_-A;C<--_;)L=k[C],k[C++]=k[_],k[_]=L}function a(k,A){return typeof A=="string"&&(A=k.objects[A]),A.type==="GeometryCollection"?{type:"FeatureCollection",features:A.geometries.map(function(L){return o(k,L)})}:o(k,A)}function o(k,A){var L=A.id,_=A.bbox,C=A.properties==null?{}:A.properties,M=s(k,A);return L==null&&_==null?{type:"Feature",properties:C,geometry:M}:_==null?{type:"Feature",id:L,properties:C,geometry:M}:{type:"Feature",id:L,bbox:_,properties:C,geometry:M}}function s(k,A){var L=r(k.transform),_=k.arcs;function C(q,V){V.length&&V.pop();for(var H=_[q<0?~q:q],X=0,G=H.length;X1)_=f(k,A,L);else for(C=0,_=new Array(M=k.arcs.length);C1)for(var V=1,H=P(F[0]),X,G;VH&&(G=F[0],F[0]=F[V],F[V]=G,H=X);return F}).filter(function(T){return T.length>0})}}function x(k,A){for(var L=0,_=k.length;L<_;){var C=L+_>>>1;k[C]=2))throw new Error("n must be \u22652");T=k.bbox||n(k);var L=T[0],_=T[1],C=T[2],M=T[3],g;A={scale:[C-L?(C-L)/(g-1):1,M-_?(M-_)/(g-1):1],translate:[L,_]}}else T=k.bbox;var P=p(A),T,F,q=k.objects,V={};function H(N){return P(N)}function X(N){var W;switch(N.type){case"GeometryCollection":W={type:"GeometryCollection",geometries:N.geometries.map(X)};break;case"Point":W={type:"Point",coordinates:H(N.coordinates)};break;case"MultiPoint":W={type:"MultiPoint",coordinates:N.coordinates.map(H)};break;default:return N}return N.id!=null&&(W.id=N.id),N.bbox!=null&&(W.bbox=N.bbox),N.properties!=null&&(W.properties=N.properties),W}function G(N){var W=0,re=1,ae=N.length,_e,Me=new Array(ae);for(Me[0]=P(N[0],0);++W{"use strict";var oX=R8e.exports={},pRt=YE().locationmodeToLayer,gRt=aX().feature;oX.getTopojsonName=function(e){return[e.scope.replace(/ /g,"-"),"_",e.resolution.toString(),"m"].join("")};oX.getTopojsonPath=function(e,t){return e+t+".json"};oX.getTopojsonFeatures=function(e,t){var r=pRt[e.locationmode],n=t.objects[r];return gRt(t,n).features}});var rx=ye(KE=>{"use strict";var mRt=es().BADNUM;KE.calcTraceToLineCoords=function(e){for(var t=e[0].trace,r=t.connectgaps,n=[],i=[],a=0;a0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n};KE.makeLine=function(e){return e.length===1?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}};KE.makePolygon=function(e){if(e.length===1)return{type:"Polygon",coordinates:e};for(var t=new Array(e.length),r=0;r{D8e.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xE7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xE9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xE9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xE3)o.?tom(e|\xE9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}});var dz=ye(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var qp=63710088e-1,lX={centimeters:qp*100,centimetres:qp*100,degrees:360/(2*Math.PI),feet:qp*3.28084,inches:qp*39.37,kilometers:qp/1e3,kilometres:qp/1e3,meters:qp,metres:qp,miles:qp/1609.344,millimeters:qp*1e3,millimetres:qp*1e3,nauticalmiles:qp/1852,radians:1,yards:qp*1.0936},sX={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function ix(e,t,r={}){let n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function yRt(e,t,r={}){switch(e){case"Point":return uX(t).geometry;case"LineString":return fX(t).geometry;case"Polygon":return cX(t).geometry;case"MultiPoint":return q8e(t).geometry;case"MultiLineString":return F8e(t).geometry;case"MultiPolygon":return O8e(t).geometry;default:throw new Error(e+" is invalid")}}function uX(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!fz(e[0])||!fz(e[1]))throw new Error("coordinates must contain numbers");return ix({type:"Point",coordinates:e},t,r)}function _Rt(e,t,r={}){return hz(e.map(n=>uX(n,t)),r)}function cX(e,t,r={}){for(let i of e){if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(i[i.length-1].length!==i[0].length)throw new Error("First and last Position are not equivalent.");for(let a=0;acX(n,t)),r)}function fX(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return ix({type:"LineString",coordinates:e},t,r)}function bRt(e,t,r={}){return hz(e.map(n=>fX(n,t)),r)}function hz(e,t={}){let r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function F8e(e,t,r={}){return ix({type:"MultiLineString",coordinates:e},t,r)}function q8e(e,t,r={}){return ix({type:"MultiPoint",coordinates:e},t,r)}function O8e(e,t,r={}){return ix({type:"MultiPolygon",coordinates:e},t,r)}function wRt(e,t,r={}){return ix({type:"GeometryCollection",geometries:e},t,r)}function TRt(e,t=0){if(t&&!(t>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,t||0);return Math.round(e*r)/r}function B8e(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e*r}function hX(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e/r}function ARt(e,t){return N8e(hX(e,t))}function SRt(e){let t=e%360;return t<0&&(t+=360),t}function MRt(e){return e=e%360,e>0?e>180?e-360:e:e<-180?e+360:e}function N8e(e){return e%(2*Math.PI)*180/Math.PI}function ERt(e){return e%360*Math.PI/180}function kRt(e,t="kilometers",r="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return B8e(hX(e,t),r)}function CRt(e,t="meters",r="kilometers"){if(!(e>=0))throw new Error("area must be a positive number");let n=sX[t];if(!n)throw new Error("invalid original units");let i=sX[r];if(!i)throw new Error("invalid final units");return e/n*i}function fz(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function LRt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function PRt(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(e.length!==4&&e.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach(t=>{if(!fz(t))throw new Error("bbox must only contain numbers")})}function IRt(e){if(!e)throw new Error("id is required");if(["string","number"].indexOf(typeof e)===-1)throw new Error("id must be a number or a string")}ku.areaFactors=sX;ku.azimuthToBearing=MRt;ku.bearingToAzimuth=SRt;ku.convertArea=CRt;ku.convertLength=kRt;ku.degreesToRadians=ERt;ku.earthRadius=qp;ku.factors=lX;ku.feature=ix;ku.featureCollection=hz;ku.geometry=yRt;ku.geometryCollection=wRt;ku.isNumber=fz;ku.isObject=LRt;ku.lengthToDegrees=ARt;ku.lengthToRadians=hX;ku.lineString=fX;ku.lineStrings=bRt;ku.multiLineString=F8e;ku.multiPoint=q8e;ku.multiPolygon=O8e;ku.point=uX;ku.points=_Rt;ku.polygon=cX;ku.polygons=xRt;ku.radiansToDegrees=N8e;ku.radiansToLength=B8e;ku.round=TRt;ku.validateBBox=PRt;ku.validateId=IRt});var pz=ye(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var jv=dz();function JE(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,h,d=e.type,v=d==="FeatureCollection",x=d==="Feature",b=v?e.features.length:1,p=0;pl||v>u||x>c){s=f,l=n,u=v,c=x,a=0;return}var b=jv.lineString.call(void 0,[s,f],r.properties);if(t(b,n,i,x,a)===!1)return!1;a++,s=f})===!1)return!1}}})}function BRt(e,t,r){var n=r,i=!1;return H8e(e,function(a,o,s,l,u){i===!1&&r===void 0?n=a:n=t(n,a,o,s,l,u),i=!0}),n}function G8e(e,t){if(!e)throw new Error("geojson is required");vz(e,function(r,n,i){if(r.geometry!==null){var a=r.geometry.type,o=r.geometry.coordinates;switch(a){case"LineString":if(t(r,n,i,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s{"use strict";Object.defineProperty(gz,"__esModule",{value:!0});var j8e=dz(),HRt=pz();function X8e(e){return HRt.geomReduce.call(void 0,e,(t,r)=>t+GRt(r),0)}function GRt(e){let t=0,r;switch(e.type){case"Polygon":return W8e(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(Z8e(e[0]));for(let r=1;r=t?(n+2)%t:n+2],s=i[0]*vX,l=a[1]*vX,u=o[0]*vX;r+=(u-s)*Math.sin(l),n++}return r*jRt}var WRt=X8e;gz.area=X8e;gz.default=WRt});var J8e=ye(mz=>{"use strict";Object.defineProperty(mz,"__esModule",{value:!0});var ZRt=dz(),XRt=pz();function K8e(e,t={}){let r=0,n=0,i=0;return XRt.coordEach.call(void 0,e,function(a){r+=a[0],n+=a[1],i++},!0),ZRt.point.call(void 0,[r/i,n/i],t.properties)}var YRt=K8e;mz.centroid=K8e;mz.default=YRt});var Q8e=ye(yz=>{"use strict";Object.defineProperty(yz,"__esModule",{value:!0});var KRt=pz();function $8e(e,t={}){if(e.bbox!=null&&t.recompute!==!0)return e.bbox;let r=[1/0,1/0,-1/0,-1/0];return KRt.coordEach.call(void 0,e,n=>{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]{"use strict";var $Rt=xa(),rRe=z8e(),{area:QRt}=Y8e(),{centroid:eDt}=J8e(),{bbox:tDt}=Q8e(),eRe=OS(),W5=G1(),rDt=gy(),iDt=ES(),_z=wM(),tRe=Object.keys(rRe),nDt={"ISO-3":eRe,"USA-states":eRe,"country names":aDt};function aDt(e){for(var t=0;t0&&c[f+1][0]<0)return f;return null}switch(n==="RUS"||n==="FJI"?a=function(c){var f;if(u(c)===null)f=c;else for(f=new Array(c.length),l=0;lf?h[d++]=[c[l][0]+360,c[l][1]]:l===f?(h[d++]=c[l],h[d++]=[c[l][0],-90]):h[d++]=c[l];var v=_z.tester(h);v.pts.pop(),i.push(v)}:a=function(c){i.push(_z.tester(c))},t.type){case"MultiPolygon":for(o=0;o0?v.properties.ct=uDt(v):v.properties.ct=[NaN,NaN],h.fIn=c,h.fOut=v,i.push(v)}else W5.log(["Location",h.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete n[f]}switch(r.type){case"FeatureCollection":var l=r.features;for(a=0;ai&&(i=s,r=o)}else r=t;return eDt(r).geometry.coordinates}function cDt(e){var t=window.PlotlyGeoAssets||{},r=[];function n(l){return new Promise(function(u,c){$Rt.json(l,function(f,h){if(f){delete t[l];var d=f.status===404?'GeoJSON at URL "'+l+'" does not exist.':"Unexpected error while fetching from "+l;return c(new Error(d))}return t[l]=h,u(h)})})}function i(l){return new Promise(function(u,c){var f=0,h=setInterval(function(){if(t[l]&&t[l]!=="pending")return clearInterval(h),u(t[l]);if(f>100)return clearInterval(h),c("Unexpected error while fetching from "+l);f++},50)})}for(var a=0;a{"use strict";var hDt=xa(),dDt=ao(),aRe=va(),oRe=op(),vDt=oRe.stylePoints,pDt=oRe.styleText;sRe.exports=function(t,r){r&&gDt(t,r)};function gDt(e,t){var r=t[0].trace,n=t[0].node3;n.style("opacity",t[0].trace.opacity),vDt(n,r,e),pDt(n,r,e),n.selectAll("path.js-line").style("fill","none").each(function(i){var a=hDt.select(this),o=i.trace,s=o.line||{};a.call(aRe.stroke,s.color).call(dDt.dashLine,s.dash||"",s.width||0),o.fill!=="none"&&a.call(aRe.fill,o.fillcolor)})}});var _X=ye((Lpr,cRe)=>{"use strict";var lRe=xa(),bz=Mr(),mDt=cz().getTopojsonFeatures,gX=rx(),xz=nx(),uRe=wg().findExtremes,yX=es().BADNUM,yDt=q0().calcMarkerSize,mX=lu(),_Dt=pX();function xDt(e,t,r){var n=t.layers.frontplot.select(".scatterlayer"),i=bz.makeTraceGroups(n,r,"trace scattergeo");function a(o,s){o.lonlat[0]===yX&&lRe.select(s).remove()}i.selectAll("*").remove(),i.each(function(o){var s=lRe.select(this),l=o[0].trace;if(mX.hasLines(l)||l.fill!=="none"){var u=gX.calcTraceToLineCoords(o),c=l.fill!=="none"?gX.makePolygon(u):gX.makeLine(u);s.selectAll("path.js-line").data([{geojson:c,trace:l}]).enter().append("path").classed("js-line",!0).style("stroke-miterlimit",2)}mX.hasMarkers(l)&&s.selectAll("path.point").data(bz.identity).enter().append("path").classed("point",!0).each(function(f){a(f,this)}),mX.hasText(l)&&s.selectAll("g").data(bz.identity).enter().append("g").append("text").each(function(f){a(f,this)}),_Dt(e,o)})}function bDt(e,t){var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r._length,o,s;if(bz.isArrayOrTypedArray(r.locations)){var l=r.locationmode,u=l==="geojson-id"?xz.extractTraceFeature(e):mDt(r,i.topojson);for(o=0;o{"use strict";var wDt=Nc(),TDt=es().BADNUM,ADt=oT(),SDt=Mr().fillText,MDt=H2();fRe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.xa,s=t.ya,l=t.subplot,u=l.projection.isLonLatOverEdges,c=l.project;function f(E){var k=E.lonlat;if(k[0]===TDt||u(k))return 1/0;var A=c(k),L=c([r,n]),_=Math.abs(A[0]-L[0]),C=Math.abs(A[1]-L[1]),M=Math.max(3,E.mrc||0);return Math.max(Math.sqrt(_*_+C*C)-M,1-3/M)}if(wDt.getClosest(i,f,t),t.index!==!1){var h=i[t.index],d=h.lonlat,v=[o.c2p(d),s.c2p(d)],x=h.mrc||1;t.x0=v[0]-x,t.x1=v[0]+x,t.y0=v[1]-x,t.y1=v[1]+x,t.loc=h.loc,t.lon=d[0],t.lat=d[1];var b={};b[a.geo]={_subplot:l};var p=a._module.formatLabels(h,a,b);return t.lonLabel=p.lonLabel,t.latLabel=p.latLabel,t.color=ADt(a,h),t.extraText=EDt(a,h,t,i[0].t.labels),t.hovertemplate=a.hovertemplate,[t]}};function EDt(e,t,r,n){if(e.hovertemplate)return;var i=t.hi||e.hoverinfo,a=i==="all"?MDt.hoverinfo.flags:i.split("+"),o=a.indexOf("location")!==-1&&Array.isArray(e.locations),s=a.indexOf("lon")!==-1,l=a.indexOf("lat")!==-1,u=a.indexOf("text")!==-1,c=[];function f(h){return h+"\xB0"}return o?c.push(t.loc):s&&l?c.push("("+f(r.latLabel)+", "+f(r.lonLabel)+")"):s?c.push(n.lon+f(r.lonLabel)):l&&c.push(n.lat+f(r.latLabel)),u&&SDt(t,e,c),c.join("
")}});var vRe=ye((Ipr,dRe)=>{"use strict";dRe.exports=function(t,r,n,i,a){t.lon=r.lon,t.lat=r.lat,t.location=r.loc?r.loc:null;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t}});var mRe=ye((Rpr,gRe)=>{"use strict";var pRe=lu(),kDt=es().BADNUM;gRe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h,d=!pRe.hasMarkers(s)&&!pRe.hasText(s);if(d)return[];if(r===!1)for(h=0;h{(function(e,t){t(typeof wz=="object"&&typeof yRe!="undefined"?wz:e.d3=e.d3||{})})(wz,function(e){"use strict";function t(Ee,Ae){return EeAe?1:Ee>=Ae?0:NaN}function r(Ee){return Ee.length===1&&(Ee=n(Ee)),{left:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)<0?Ce=Re+1:me=Re}return Ce},right:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)>0?me=Re:Ce=Re+1}return Ce}}}function n(Ee){return function(Ae,ze){return t(Ee(Ae),ze)}}var i=r(t),a=i.right,o=i.left;function s(Ee,Ae){Ae==null&&(Ae=l);for(var ze=0,Ce=Ee.length-1,me=Ee[0],Re=new Array(Ce<0?0:Ce);zeEe?1:Ae>=Ee?0:NaN}function f(Ee){return Ee===null?NaN:+Ee}function h(Ee,Ae){var ze=Ee.length,Ce=0,me=-1,Re=0,ce,Ge,nt=0;if(Ae==null)for(;++me1)return nt/(Ce-1)}function d(Ee,Ae){var ze=h(Ee,Ae);return ze&&Math.sqrt(ze)}function v(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re,ce;if(Ae==null){for(;++Ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce0)return[Ee];if((Ce=Ae0)for(Ee=Math.ceil(Ee/Ge),Ae=Math.floor(Ae/Ge),ce=new Array(Re=Math.ceil(Ae-Ee+1));++me=0?(Re>=L?10:Re>=_?5:Re>=C?2:1)*Math.pow(10,me):-Math.pow(10,-me)/(Re>=L?10:Re>=_?5:Re>=C?2:1)}function P(Ee,Ae,ze){var Ce=Math.abs(Ae-Ee)/Math.max(0,ze),me=Math.pow(10,Math.floor(Math.log(Ce)/Math.LN10)),Re=Ce/me;return Re>=L?me*=10:Re>=_?me*=5:Re>=C&&(me*=2),Aert;)ot.pop(),--Rt;var kt=new Array(Rt+1),Ct;for(Re=0;Re<=Rt;++Re)Ct=kt[Re]=[],Ct.x0=Re>0?ot[Re-1]:qt,Ct.x1=Re=1)return+ze(Ee[Ce-1],Ce-1,Ee);var Ce,me=(Ce-1)*Ae,Re=Math.floor(me),ce=+ze(Ee[Re],Re,Ee),Ge=+ze(Ee[Re+1],Re+1,Ee);return ce+(Ge-ce)*(me-Re)}}function V(Ee,Ae,ze){return Ee=p.call(Ee,f).sort(t),Math.ceil((ze-Ae)/(2*(q(Ee,.75)-q(Ee,.25))*Math.pow(Ee.length,-1/3)))}function H(Ee,Ae,ze){return Math.ceil((ze-Ae)/(3.5*d(Ee)*Math.pow(Ee.length,-1/3)))}function X(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++CeRe&&(Re=me)}else for(;++Ce=me)for(Re=me;++CeRe&&(Re=me);return Re}function G(Ee,Ae){var ze=Ee.length,Ce=ze,me=-1,Re,ce=0;if(Ae==null)for(;++me=0;)for(ce=Ee[Ae],ze=ce.length;--ze>=0;)Re[--me]=ce[ze];return Re}function re(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++Ceme&&(Re=me)}else for(;++Ce=me)for(Re=me;++Ceme&&(Re=me);return Re}function ae(Ee,Ae){for(var ze=Ae.length,Ce=new Array(ze);ze--;)Ce[ze]=Ee[Ae[ze]];return Ce}function _e(Ee,Ae){if(ze=Ee.length){var ze,Ce=0,me=0,Re,ce=Ee[me];for(Ae==null&&(Ae=t);++Ce{(function(e,t){typeof Tz=="object"&&typeof _Re!="undefined"?t(Tz,$E()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(Tz,function(e,t){"use strict";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(gt){a(i,gt,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(gt,Bt,wr){var vr=gt.s=Bt+wr,Ur=vr-Bt,fi=vr-Ur;gt.t=Bt-fi+(wr-Ur)}var o=1e-6,s=1e-12,l=Math.PI,u=l/2,c=l/4,f=l*2,h=180/l,d=l/180,v=Math.abs,x=Math.atan,b=Math.atan2,p=Math.cos,E=Math.ceil,k=Math.exp,A=Math.log,L=Math.pow,_=Math.sin,C=Math.sign||function(gt){return gt>0?1:gt<0?-1:0},M=Math.sqrt,g=Math.tan;function P(gt){return gt>1?0:gt<-1?l:Math.acos(gt)}function T(gt){return gt>1?u:gt<-1?-u:Math.asin(gt)}function F(gt){return(gt=_(gt/2))*gt}function q(){}function V(gt,Bt){gt&&X.hasOwnProperty(gt.type)&&X[gt.type](gt,Bt)}var H={Feature:function(gt,Bt){V(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr=0?1:-1,Ur=vr*wr,fi=p(Bt),xi=_(Bt),Fi=ie*xi,Xi=ge*fi+Fi*p(Ur),hn=Fi*vr*_(Ur);re.add(b(hn,Xi)),ke=gt,ge=fi,ie=xi}function me(gt){return ae.reset(),W(gt,Te),ae*2}function Re(gt){return[b(gt[1],gt[0]),T(gt[2])]}function ce(gt){var Bt=gt[0],wr=gt[1],vr=p(wr);return[vr*p(Bt),vr*_(Bt),_(wr)]}function Ge(gt,Bt){return gt[0]*Bt[0]+gt[1]*Bt[1]+gt[2]*Bt[2]}function nt(gt,Bt){return[gt[1]*Bt[2]-gt[2]*Bt[1],gt[2]*Bt[0]-gt[0]*Bt[2],gt[0]*Bt[1]-gt[1]*Bt[0]]}function ct(gt,Bt){gt[0]+=Bt[0],gt[1]+=Bt[1],gt[2]+=Bt[2]}function qt(gt,Bt){return[gt[0]*Bt,gt[1]*Bt,gt[2]*Bt]}function rt(gt){var Bt=M(gt[0]*gt[0]+gt[1]*gt[1]+gt[2]*gt[2]);gt[0]/=Bt,gt[1]/=Bt,gt[2]/=Bt}var ot,Rt,kt,Ct,Yt,xr,er,Ke,xt=r(),bt,Lt,St={point:Et,lineStart:Ht,lineEnd:$t,polygonStart:function(){St.point=fr,St.lineStart=_r,St.lineEnd=Br,xt.reset(),Te.polygonStart()},polygonEnd:function(){Te.polygonEnd(),St.point=Et,St.lineStart=Ht,St.lineEnd=$t,re<0?(ot=-(kt=180),Rt=-(Ct=90)):xt>o?Ct=90:xt<-o&&(Rt=-90),Lt[0]=ot,Lt[1]=kt},sphere:function(){ot=-(kt=180),Rt=-(Ct=90)}};function Et(gt,Bt){bt.push(Lt=[ot=gt,kt=gt]),BtCt&&(Ct=Bt)}function dt(gt,Bt){var wr=ce([gt*d,Bt*d]);if(Ke){var vr=nt(Ke,wr),Ur=[vr[1],-vr[0],0],fi=nt(Ur,vr);rt(fi),fi=Re(fi);var xi=gt-Yt,Fi=xi>0?1:-1,Xi=fi[0]*h*Fi,hn,Ti=v(xi)>180;Ti^(Fi*YtCt&&(Ct=hn)):(Xi=(Xi+360)%360-180,Ti^(Fi*YtCt&&(Ct=Bt))),Ti?gtOr(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt):kt>=ot?(gtkt&&(kt=gt)):gt>Yt?Or(ot,gt)>Or(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt)}else bt.push(Lt=[ot=gt,kt=gt]);BtCt&&(Ct=Bt),Ke=wr,Yt=gt}function Ht(){St.point=dt}function $t(){Lt[0]=ot,Lt[1]=kt,St.point=Et,Ke=null}function fr(gt,Bt){if(Ke){var wr=gt-Yt;xt.add(v(wr)>180?wr+(wr>0?360:-360):wr)}else xr=gt,er=Bt;Te.point(gt,Bt),dt(gt,Bt)}function _r(){Te.lineStart()}function Br(){fr(xr,er),Te.lineEnd(),v(xt)>o&&(ot=-(kt=180)),Lt[0]=ot,Lt[1]=kt,Ke=null}function Or(gt,Bt){return(Bt-=gt)<0?Bt+360:Bt}function Nr(gt,Bt){return gt[0]-Bt[0]}function ut(gt,Bt){return gt[0]<=gt[1]?gt[0]<=Bt&&Bt<=gt[1]:BtOr(vr[0],vr[1])&&(vr[1]=Ur[1]),Or(Ur[0],vr[1])>Or(vr[0],vr[1])&&(vr[0]=Ur[0])):fi.push(vr=Ur);for(xi=-1/0,wr=fi.length-1,Bt=0,vr=fi[wr];Bt<=wr;vr=Ur,++Bt)Ur=fi[Bt],(Fi=Or(vr[1],Ur[0]))>xi&&(xi=Fi,ot=Ur[0],kt=vr[1])}return bt=Lt=null,ot===1/0||Rt===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,Rt],[kt,Ct]]}var Ye,Ve,Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai,jr,ri,bi,nn={sphere:q,point:Wi,lineStart:_n,lineEnd:Wn,polygonStart:function(){nn.lineStart=It,nn.lineEnd=ft},polygonEnd:function(){nn.lineStart=_n,nn.lineEnd=Wn}};function Wi(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);Ni(wr*p(gt),wr*_(gt),_(Bt))}function Ni(gt,Bt,wr){++Ye,Xe+=(gt-Xe)/Ye,ht+=(Bt-ht)/Ye,Le+=(wr-Le)/Ye}function _n(){nn.point=$i}function $i(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),nn.point=zn,Ni(jr,ri,bi)}function zn(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=b(M((xi=ri*fi-bi*Ur)*xi+(xi=bi*vr-jr*fi)*xi+(xi=jr*Ur-ri*vr)*xi),jr*vr+ri*Ur+bi*fi);Ve+=xi,xe+=xi*(jr+(jr=vr)),Se+=xi*(ri+(ri=Ur)),lt+=xi*(bi+(bi=fi)),Ni(jr,ri,bi)}function Wn(){nn.point=Wi}function It(){nn.point=jt}function ft(){Zt(Qr,ai),nn.point=Wi}function jt(gt,Bt){Qr=gt,ai=Bt,gt*=d,Bt*=d,nn.point=Zt;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),Ni(jr,ri,bi)}function Zt(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=ri*fi-bi*Ur,Fi=bi*vr-jr*fi,Xi=jr*Ur-ri*vr,hn=M(xi*xi+Fi*Fi+Xi*Xi),Ti=T(hn),qi=hn&&-Ti/hn;Gt+=qi*xi,Vt+=qi*Fi,ar+=qi*Xi,Ve+=Ti,xe+=Ti*(jr+(jr=vr)),Se+=Ti*(ri+(ri=Ur)),lt+=Ti*(bi+(bi=fi)),Ni(jr,ri,bi)}function yr(gt){Ye=Ve=Xe=ht=Le=xe=Se=lt=Gt=Vt=ar=0,W(gt,nn);var Bt=Gt,wr=Vt,vr=ar,Ur=Bt*Bt+wr*wr+vr*vr;return Url?gt+Math.round(-gt/f)*f:gt,Bt]}Vr.invert=Vr;function gi(gt,Bt,wr){return(gt%=f)?Bt||wr?Zr(Mi(gt),Pi(Bt,wr)):Mi(gt):Bt||wr?Pi(Bt,wr):Vr}function Si(gt){return function(Bt,wr){return Bt+=gt,[Bt>l?Bt-f:Bt<-l?Bt+f:Bt,wr]}}function Mi(gt){var Bt=Si(gt);return Bt.invert=Si(-gt),Bt}function Pi(gt,Bt){var wr=p(gt),vr=_(gt),Ur=p(Bt),fi=_(Bt);function xi(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*wr+Ti*vr;return[b(qi*Ur-mi*fi,Ti*wr-Ii*vr),T(mi*Ur+qi*fi)]}return xi.invert=function(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*Ur-qi*fi;return[b(qi*Ur+Ii*fi,Ti*wr+mi*vr),T(mi*wr-Ti*vr)]},xi}function Gi(gt){gt=gi(gt[0]*d,gt[1]*d,gt.length>2?gt[2]*d:0);function Bt(wr){return wr=gt(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr}return Bt.invert=function(wr){return wr=gt.invert(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr},Bt}function Ki(gt,Bt,wr,vr,Ur,fi){if(wr){var xi=p(Bt),Fi=_(Bt),Xi=vr*wr;Ur==null?(Ur=Bt+vr*f,fi=Bt-Xi/2):(Ur=ka(xi,Ur),fi=ka(xi,fi),(vr>0?Urfi)&&(Ur+=vr*f));for(var hn,Ti=Ur;vr>0?Ti>fi:Ti1&>.push(gt.pop().concat(gt.shift()))},result:function(){var wr=gt;return gt=[],Bt=null,wr}}}function Fa(gt,Bt){return v(gt[0]-Bt[0])=0;--Fi)Ur.point((qi=Ti[Fi])[0],qi[1]);else vr(Ii.x,Ii.p.x,-1,Ur);Ii=Ii.p}Ii=Ii.o,Ti=Ii.z,mi=!mi}while(!Ii.v);Ur.lineEnd()}}}function oa(gt){if(Bt=gt.length){for(var Bt,wr=0,vr=gt[0],Ur;++wr=0?1:-1,Qo=Ts*Xo,ys=Qo>l,Bo=Ma*Ua;if(Sn.add(b(Bo*Ts*_(Qo),Ta*mo+Bo*p(Qo))),xi+=ys?Xo+Ts*f:Xo,ys^mi>=wr^Cn>=wr){var yl=nt(ce(Ii),ce(qa));rt(yl);var Gs=nt(fi,yl);rt(Gs);var Rs=(ys^Xo>=0?-1:1)*T(Gs[2]);(vr>Rs||vr===Rs&&(yl[0]||yl[1]))&&(Fi+=ys^Xo>=0?1:-1)}}return(xi<-o||xi0){for(Xi||(Ur.polygonStart(),Xi=!0),Ur.lineStart(),mo=0;mo1&&sn&2&&Ua.push(Ua.pop().concat(Ua.shift())),Ti.push(Ua.filter(_t))}}return Ii}}function _t(gt){return gt.length>1}function br(gt,Bt){return((gt=gt.x)[0]<0?gt[1]-u-o:u-gt[1])-((Bt=Bt.x)[0]<0?Bt[1]-u-o:u-Bt[1])}var Hr=xn(function(){return!0},ti,Yi,[-l,-u]);function ti(gt){var Bt=NaN,wr=NaN,vr=NaN,Ur;return{lineStart:function(){gt.lineStart(),Ur=1},point:function(fi,xi){var Fi=fi>0?l:-l,Xi=v(fi-Bt);v(Xi-l)0?u:-u),gt.point(vr,wr),gt.lineEnd(),gt.lineStart(),gt.point(Fi,wr),gt.point(fi,wr),Ur=0):vr!==Fi&&Xi>=l&&(v(Bt-vr)o?x((_(Bt)*(fi=p(vr))*_(wr)-_(vr)*(Ur=p(Bt))*_(gt))/(Ur*fi*xi)):(Bt+vr)/2}function Yi(gt,Bt,wr,vr){var Ur;if(gt==null)Ur=wr*u,vr.point(-l,Ur),vr.point(0,Ur),vr.point(l,Ur),vr.point(l,0),vr.point(l,-Ur),vr.point(0,-Ur),vr.point(-l,-Ur),vr.point(-l,0),vr.point(-l,Ur);else if(v(gt[0]-Bt[0])>o){var fi=gt[0]0,Ur=v(Bt)>o;function fi(Ti,qi,Ii,mi){Ki(mi,gt,wr,Ii,Ti,qi)}function xi(Ti,qi){return p(Ti)*p(qi)>Bt}function Fi(Ti){var qi,Ii,mi,Pn,Ma;return{lineStart:function(){Pn=mi=!1,Ma=1},point:function(Ta,Ea){var qa=[Ta,Ea],Cn,sn=xi(Ta,Ea),Ua=vr?sn?0:hn(Ta,Ea):sn?hn(Ta+(Ta<0?l:-l),Ea):0;if(!qi&&(Pn=mi=sn)&&Ti.lineStart(),sn!==mi&&(Cn=Xi(qi,qa),(!Cn||Fa(qi,Cn)||Fa(qa,Cn))&&(qa[2]=1)),sn!==mi)Ma=0,sn?(Ti.lineStart(),Cn=Xi(qa,qi),Ti.point(Cn[0],Cn[1])):(Cn=Xi(qi,qa),Ti.point(Cn[0],Cn[1],2),Ti.lineEnd()),qi=Cn;else if(Ur&&qi&&vr^sn){var mo;!(Ua&Ii)&&(mo=Xi(qa,qi,!0))&&(Ma=0,vr?(Ti.lineStart(),Ti.point(mo[0][0],mo[0][1]),Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd()):(Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd(),Ti.lineStart(),Ti.point(mo[0][0],mo[0][1],3)))}sn&&(!qi||!Fa(qi,qa))&&Ti.point(qa[0],qa[1]),qi=qa,mi=sn,Ii=Ua},lineEnd:function(){mi&&Ti.lineEnd(),qi=null},clean:function(){return Ma|(Pn&&mi)<<1}}}function Xi(Ti,qi,Ii){var mi=ce(Ti),Pn=ce(qi),Ma=[1,0,0],Ta=nt(mi,Pn),Ea=Ge(Ta,Ta),qa=Ta[0],Cn=Ea-qa*qa;if(!Cn)return!Ii&&Ti;var sn=Bt*Ea/Cn,Ua=-Bt*qa/Cn,mo=nt(Ma,Ta),Xo=qt(Ma,sn),Ts=qt(Ta,Ua);ct(Xo,Ts);var Qo=mo,ys=Ge(Xo,Qo),Bo=Ge(Qo,Qo),yl=ys*ys-Bo*(Ge(Xo,Xo)-1);if(!(yl<0)){var Gs=M(yl),Rs=qt(Qo,(-ys-Gs)/Bo);if(ct(Rs,Xo),Rs=Re(Rs),!Ii)return Rs;var ia=Ti[0],Ka=qi[0],vs=Ti[1],Ko=qi[1],nu;Ka0^Rs[1]<(v(Rs[0]-ia)l^(ia<=Rs[0]&&Rs[0]<=Ka)){var bu=qt(Qo,(-ys+Gs)/Bo);return ct(bu,Xo),[Rs,Re(bu)]}}}function hn(Ti,qi){var Ii=vr?gt:l-gt,mi=0;return Ti<-Ii?mi|=1:Ti>Ii&&(mi|=2),qi<-Ii?mi|=4:qi>Ii&&(mi|=8),mi}return xn(xi,Fi,fi,vr?[0,-gt]:[-l,gt-l])}function hi(gt,Bt,wr,vr,Ur,fi){var xi=gt[0],Fi=gt[1],Xi=Bt[0],hn=Bt[1],Ti=0,qi=1,Ii=Xi-xi,mi=hn-Fi,Pn;if(Pn=wr-xi,!(!Ii&&Pn>0)){if(Pn/=Ii,Ii<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=Ur-xi,!(!Ii&&Pn<0)){if(Pn/=Ii,Ii<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(Ii>0){if(Pn0)){if(Pn/=mi,mi<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=fi-Fi,!(!mi&&Pn<0)){if(Pn/=mi,mi<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(mi>0){if(Pn0&&(gt[0]=xi+Ti*Ii,gt[1]=Fi+Ti*mi),qi<1&&(Bt[0]=xi+qi*Ii,Bt[1]=Fi+qi*mi),!0}}}}}var Ji=1e9,ua=-Ji;function Fn(gt,Bt,wr,vr){function Ur(hn,Ti){return gt<=hn&&hn<=wr&&Bt<=Ti&&Ti<=vr}function fi(hn,Ti,qi,Ii){var mi=0,Pn=0;if(hn==null||(mi=xi(hn,qi))!==(Pn=xi(Ti,qi))||Xi(hn,Ti)<0^qi>0)do Ii.point(mi===0||mi===3?gt:wr,mi>1?vr:Bt);while((mi=(mi+qi+4)%4)!==Pn);else Ii.point(Ti[0],Ti[1])}function xi(hn,Ti){return v(hn[0]-gt)0?0:3:v(hn[0]-wr)0?2:1:v(hn[1]-Bt)0?1:0:Ti>0?3:2}function Fi(hn,Ti){return Xi(hn.x,Ti.x)}function Xi(hn,Ti){var qi=xi(hn,1),Ii=xi(Ti,1);return qi!==Ii?qi-Ii:qi===0?Ti[1]-hn[1]:qi===1?hn[0]-Ti[0]:qi===2?hn[1]-Ti[1]:Ti[0]-hn[0]}return function(hn){var Ti=hn,qi=la(),Ii,mi,Pn,Ma,Ta,Ea,qa,Cn,sn,Ua,mo,Xo={point:Ts,lineStart:yl,lineEnd:Gs,polygonStart:ys,polygonEnd:Bo};function Ts(ia,Ka){Ur(ia,Ka)&&Ti.point(ia,Ka)}function Qo(){for(var ia=0,Ka=0,vs=mi.length;Kavr&&(Kc-mf)*(vr-bu)>(Du-bu)*(gt-mf)&&++ia:Du<=vr&&(Kc-mf)*(vr-bu)<(Du-bu)*(gt-mf)&&--ia;return ia}function ys(){Ti=qi,Ii=[],mi=[],mo=!0}function Bo(){var ia=Qo(),Ka=mo&&ia,vs=(Ii=t.merge(Ii)).length;(Ka||vs)&&(hn.polygonStart(),Ka&&(hn.lineStart(),fi(null,null,1,hn),hn.lineEnd()),vs&&jo(Ii,Fi,ia,fi,hn),hn.polygonEnd()),Ti=hn,Ii=mi=Pn=null}function yl(){Xo.point=Rs,mi&&mi.push(Pn=[]),Ua=!0,sn=!1,qa=Cn=NaN}function Gs(){Ii&&(Rs(Ma,Ta),Ea&&sn&&qi.rejoin(),Ii.push(qi.result())),Xo.point=Ts,sn&&Ti.lineEnd()}function Rs(ia,Ka){var vs=Ur(ia,Ka);if(mi&&Pn.push([ia,Ka]),Ua)Ma=ia,Ta=Ka,Ea=vs,Ua=!1,vs&&(Ti.lineStart(),Ti.point(ia,Ka));else if(vs&&sn)Ti.point(ia,Ka);else{var Ko=[qa=Math.max(ua,Math.min(Ji,qa)),Cn=Math.max(ua,Math.min(Ji,Cn))],nu=[ia=Math.max(ua,Math.min(Ji,ia)),Ka=Math.max(ua,Math.min(Ji,Ka))];hi(Ko,nu,gt,Bt,wr,vr)?(sn||(Ti.lineStart(),Ti.point(Ko[0],Ko[1])),Ti.point(nu[0],nu[1]),vs||Ti.lineEnd(),mo=!1):vs&&(Ti.lineStart(),Ti.point(ia,Ka),mo=!1)}qa=ia,Cn=Ka,sn=vs}return Xo}}function Sa(){var gt=0,Bt=0,wr=960,vr=500,Ur,fi,xi;return xi={stream:function(Fi){return Ur&&fi===Fi?Ur:Ur=Fn(gt,Bt,wr,vr)(fi=Fi)},extent:function(Fi){return arguments.length?(gt=+Fi[0][0],Bt=+Fi[0][1],wr=+Fi[1][0],vr=+Fi[1][1],Ur=fi=null,xi):[[gt,Bt],[wr,vr]]}}}var go=r(),Oo,ho,Mo,xo={sphere:q,point:q,lineStart:zs,lineEnd:q,polygonStart:q,polygonEnd:q};function zs(){xo.point=Zs,xo.lineEnd=ks}function ks(){xo.point=xo.lineEnd=q}function Zs(gt,Bt){gt*=d,Bt*=d,Oo=gt,ho=_(Bt),Mo=p(Bt),xo.point=Xs}function Xs(gt,Bt){gt*=d,Bt*=d;var wr=_(Bt),vr=p(Bt),Ur=v(gt-Oo),fi=p(Ur),xi=_(Ur),Fi=vr*xi,Xi=Mo*wr-ho*vr*fi,hn=ho*wr+Mo*vr*fi;go.add(b(M(Fi*Fi+Xi*Xi),hn)),Oo=gt,ho=wr,Mo=vr}function wl(gt){return go.reset(),W(gt,xo),+go}var os=[null,null],cl={type:"LineString",coordinates:os};function Cs(gt,Bt){return os[0]=gt,os[1]=Bt,wl(cl)}var ml={Feature:function(gt,Bt){return Hs(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr0&&(Ur=Cs(gt[fi],gt[fi-1]),Ur>0&&wr<=Ur&&vr<=Ur&&(wr+vr-Ur)*(1-Math.pow((wr-vr)/Ur,2))o}).map(Ii)).concat(t.range(E(fi/hn)*hn,Ur,hn).filter(function(Cn){return v(Cn%qi)>o}).map(mi))}return Ea.lines=function(){return qa().map(function(Cn){return{type:"LineString",coordinates:Cn}})},Ea.outline=function(){return{type:"Polygon",coordinates:[Pn(vr).concat(Ma(xi).slice(1),Pn(wr).reverse().slice(1),Ma(Fi).reverse().slice(1))]}},Ea.extent=function(Cn){return arguments.length?Ea.extentMajor(Cn).extentMinor(Cn):Ea.extentMinor()},Ea.extentMajor=function(Cn){return arguments.length?(vr=+Cn[0][0],wr=+Cn[1][0],Fi=+Cn[0][1],xi=+Cn[1][1],vr>wr&&(Cn=vr,vr=wr,wr=Cn),Fi>xi&&(Cn=Fi,Fi=xi,xi=Cn),Ea.precision(Ta)):[[vr,Fi],[wr,xi]]},Ea.extentMinor=function(Cn){return arguments.length?(Bt=+Cn[0][0],gt=+Cn[1][0],fi=+Cn[0][1],Ur=+Cn[1][1],Bt>gt&&(Cn=Bt,Bt=gt,gt=Cn),fi>Ur&&(Cn=fi,fi=Ur,Ur=Cn),Ea.precision(Ta)):[[Bt,fi],[gt,Ur]]},Ea.step=function(Cn){return arguments.length?Ea.stepMajor(Cn).stepMinor(Cn):Ea.stepMinor()},Ea.stepMajor=function(Cn){return arguments.length?(Ti=+Cn[0],qi=+Cn[1],Ea):[Ti,qi]},Ea.stepMinor=function(Cn){return arguments.length?(Xi=+Cn[0],hn=+Cn[1],Ea):[Xi,hn]},Ea.precision=function(Cn){return arguments.length?(Ta=+Cn,Ii=on(fi,Ur,90),mi=fa(Bt,gt,Ta),Pn=on(Fi,xi,90),Ma=fa(vr,wr,Ta),Ea):Ta},Ea.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Rl(){return Qu()()}function vo(gt,Bt){var wr=gt[0]*d,vr=gt[1]*d,Ur=Bt[0]*d,fi=Bt[1]*d,xi=p(vr),Fi=_(vr),Xi=p(fi),hn=_(fi),Ti=xi*p(wr),qi=xi*_(wr),Ii=Xi*p(Ur),mi=Xi*_(Ur),Pn=2*T(M(F(fi-vr)+xi*Xi*F(Ur-wr))),Ma=_(Pn),Ta=Pn?function(Ea){var qa=_(Ea*=Pn)/Ma,Cn=_(Pn-Ea)/Ma,sn=Cn*Ti+qa*Ii,Ua=Cn*qi+qa*mi,mo=Cn*Fi+qa*hn;return[b(Ua,sn)*h,b(mo,M(sn*sn+Ua*Ua))*h]}:function(){return[wr*h,vr*h]};return Ta.distance=Pn,Ta}function Zl(gt){return gt}var Ks=r(),Xl=r(),Ec,Zn,ko,Co,Tl={point:q,lineStart:q,lineEnd:q,polygonStart:function(){Tl.lineStart=uf,Tl.lineEnd=rh},polygonEnd:function(){Tl.lineStart=Tl.lineEnd=Tl.point=q,Ks.add(v(Xl)),Xl.reset()},result:function(){var gt=Ks/2;return Ks.reset(),gt}};function uf(){Tl.point=So}function So(gt,Bt){Tl.point=cf,Ec=ko=gt,Zn=Co=Bt}function cf(gt,Bt){Xl.add(Co*gt-ko*Bt),ko=gt,Co=Bt}function rh(){cf(Ec,Zn)}var Al=1/0,Hc=Al,eu=-Al,Ls=eu,mu={point:kc,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q,result:function(){var gt=[[Al,Hc],[eu,Ls]];return eu=Ls=-(Hc=Al=1/0),gt}};function kc(gt,Bt){gteu&&(eu=gt),BtLs&&(Ls=Bt)}var Of=0,Gc=0,vd=0,Bf=0,ss=0,ff=0,ih=0,Vl=0,Js=0,hc,Cc,ws,$s,hs={point:Ms,lineStart:dc,lineEnd:Ps,polygonStart:function(){hs.lineStart=ov,hs.lineEnd=wo},polygonEnd:function(){hs.point=Ms,hs.lineStart=dc,hs.lineEnd=Ps},result:function(){var gt=Js?[ih/Js,Vl/Js]:ff?[Bf/ff,ss/ff]:vd?[Of/vd,Gc/vd]:[NaN,NaN];return Of=Gc=vd=Bf=ss=ff=ih=Vl=Js=0,gt}};function Ms(gt,Bt){Of+=gt,Gc+=Bt,++vd}function dc(){hs.point=Sl}function Sl(gt,Bt){hs.point=ec,Ms(ws=gt,$s=Bt)}function ec(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ms(ws=gt,$s=Bt)}function Ps(){hs.point=Ms}function ov(){hs.point=Od}function wo(){$o(hc,Cc)}function Od(gt,Bt){hs.point=$o,Ms(hc=ws=gt,Cc=$s=Bt)}function $o(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ur=$s*gt-ws*Bt,ih+=Ur*(ws+gt),Vl+=Ur*($s+Bt),Js+=Ur*3,Ms(ws=gt,$s=Bt)}function Ja(gt){this._context=gt}Ja.prototype={_radius:4.5,pointRadius:function(gt){return this._radius=gt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._context.moveTo(gt,Bt),this._point=1;break}case 1:{this._context.lineTo(gt,Bt);break}default:{this._context.moveTo(gt+this._radius,Bt),this._context.arc(gt,Bt,this._radius,0,f);break}}},result:q};var Ef=r(),tc,uu,Mh,jc,kf,Ml={point:q,lineStart:function(){Ml.point=Yh},lineEnd:function(){tc&&Eh(uu,Mh),Ml.point=q},polygonStart:function(){tc=!0},polygonEnd:function(){tc=null},result:function(){var gt=+Ef;return Ef.reset(),gt}};function Yh(gt,Bt){Ml.point=Eh,uu=jc=gt,Mh=kf=Bt}function Eh(gt,Bt){jc-=gt,kf-=Bt,Ef.add(M(jc*jc+kf*kf)),jc=gt,kf=Bt}function nh(){this._string=[]}nh.prototype={_radius:4.5,_circle:hf(4.5),pointRadius:function(gt){return(gt=+gt)!==this._radius&&(this._radius=gt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._string.push("M",gt,",",Bt),this._point=1;break}case 1:{this._string.push("L",gt,",",Bt);break}default:{this._circle==null&&(this._circle=hf(this._radius)),this._string.push("M",gt,",",Bt,this._circle);break}}},result:function(){if(this._string.length){var gt=this._string.join("");return this._string=[],gt}else return null}};function hf(gt){return"m0,"+gt+"a"+gt+","+gt+" 0 1,1 0,"+-2*gt+"a"+gt+","+gt+" 0 1,1 0,"+2*gt+"z"}function kh(gt,Bt){var wr=4.5,vr,Ur;function fi(xi){return xi&&(typeof wr=="function"&&Ur.pointRadius(+wr.apply(this,arguments)),W(xi,vr(Ur))),Ur.result()}return fi.area=function(xi){return W(xi,vr(Tl)),Tl.result()},fi.measure=function(xi){return W(xi,vr(Ml)),Ml.result()},fi.bounds=function(xi){return W(xi,vr(mu)),mu.result()},fi.centroid=function(xi){return W(xi,vr(hs)),hs.result()},fi.projection=function(xi){return arguments.length?(vr=xi==null?(gt=null,Zl):(gt=xi).stream,fi):gt},fi.context=function(xi){return arguments.length?(Ur=xi==null?(Bt=null,new nh):new Ja(Bt=xi),typeof wr!="function"&&Ur.pointRadius(wr),fi):Bt},fi.pointRadius=function(xi){return arguments.length?(wr=typeof xi=="function"?xi:(Ur.pointRadius(+xi),+xi),fi):wr},fi.projection(gt).context(Bt)}function Kh(gt){return{stream:rc(gt)}}function rc(gt){return function(Bt){var wr=new ah;for(var vr in gt)wr[vr]=gt[vr];return wr.stream=Bt,wr}}function ah(){}ah.prototype={constructor:ah,point:function(gt,Bt){this.stream.point(gt,Bt)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Wc(gt,Bt,wr){var vr=gt.clipExtent&>.clipExtent();return gt.scale(150).translate([0,0]),vr!=null&>.clipExtent(null),W(wr,gt.stream(mu)),Bt(mu.result()),vr!=null&>.clipExtent(vr),gt}function df(gt,Bt,wr){return Wc(gt,function(vr){var Ur=Bt[1][0]-Bt[0][0],fi=Bt[1][1]-Bt[0][1],xi=Math.min(Ur/(vr[1][0]-vr[0][0]),fi/(vr[1][1]-vr[0][1])),Fi=+Bt[0][0]+(Ur-xi*(vr[1][0]+vr[0][0]))/2,Xi=+Bt[0][1]+(fi-xi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*xi).translate([Fi,Xi])},wr)}function Cu(gt,Bt,wr){return df(gt,[[0,0],Bt],wr)}function Nf(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][0]-vr[0][0]),xi=(Ur-fi*(vr[1][0]+vr[0][0]))/2,Fi=-fi*vr[0][1];gt.scale(150*fi).translate([xi,Fi])},wr)}function Zc(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][1]-vr[0][1]),xi=-fi*vr[0][0],Fi=(Ur-fi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*fi).translate([xi,Fi])},wr)}var ds=16,Ch=p(30*d);function Bd(gt,Bt){return+Bt?Cf(gt,Bt):Jh(gt)}function Jh(gt){return rc({point:function(Bt,wr){Bt=gt(Bt,wr),this.stream.point(Bt[0],Bt[1])}})}function Cf(gt,Bt){function wr(vr,Ur,fi,xi,Fi,Xi,hn,Ti,qi,Ii,mi,Pn,Ma,Ta){var Ea=hn-vr,qa=Ti-Ur,Cn=Ea*Ea+qa*qa;if(Cn>4*Bt&&Ma--){var sn=xi+Ii,Ua=Fi+mi,mo=Xi+Pn,Xo=M(sn*sn+Ua*Ua+mo*mo),Ts=T(mo/=Xo),Qo=v(v(mo)-1)Bt||v((Ea*Gs+qa*Rs)/Cn-.5)>.3||xi*Ii+Fi*mi+Xi*Pn2?ia[2]%360*d:0,Gs()):[Fi*h,Xi*h,hn*h]},Bo.angle=function(ia){return arguments.length?(qi=ia%360*d,Gs()):qi*h},Bo.reflectX=function(ia){return arguments.length?(Ii=ia?-1:1,Gs()):Ii<0},Bo.reflectY=function(ia){return arguments.length?(mi=ia?-1:1,Gs()):mi<0},Bo.precision=function(ia){return arguments.length?(mo=Bd(Xo,Ua=ia*ia),Rs()):M(Ua)},Bo.fitExtent=function(ia,Ka){return df(Bo,ia,Ka)},Bo.fitSize=function(ia,Ka){return Cu(Bo,ia,Ka)},Bo.fitWidth=function(ia,Ka){return Nf(Bo,ia,Ka)},Bo.fitHeight=function(ia,Ka){return Zc(Bo,ia,Ka)};function Gs(){var ia=tu(wr,0,0,Ii,mi,qi).apply(null,Bt(fi,xi)),Ka=(qi?tu:$h)(wr,vr-ia[0],Ur-ia[1],Ii,mi,qi);return Ti=gi(Fi,Xi,hn),Xo=Zr(Bt,Ka),Ts=Zr(Ti,Xo),mo=Bd(Xo,Ua),Rs()}function Rs(){return Qo=ys=null,Bo}return function(){return Bt=gt.apply(this,arguments),Bo.invert=Bt.invert&&yl,Gs()}}function fl(gt){var Bt=0,wr=l/3,vr=Lc(gt),Ur=vr(Bt,wr);return Ur.parallels=function(fi){return arguments.length?vr(Bt=fi[0]*d,wr=fi[1]*d):[Bt*h,wr*h]},Ur}function Xc(gt){var Bt=p(gt);function wr(vr,Ur){return[vr*Bt,_(Ur)/Bt]}return wr.invert=function(vr,Ur){return[vr/Bt,T(Ur*Bt)]},wr}function ic(gt,Bt){var wr=_(gt),vr=(wr+_(Bt))/2;if(v(vr)=.12&&Ta<.234&&Ma>=-.425&&Ma<-.214?Ur:Ta>=.166&&Ta<.234&&Ma>=-.214&&Ma<-.115?xi:wr).invert(Ii)},Ti.stream=function(Ii){return gt&&Bt===Ii?gt:gt=Qh([wr.stream(Bt=Ii),Ur.stream(Ii),xi.stream(Ii)])},Ti.precision=function(Ii){return arguments.length?(wr.precision(Ii),Ur.precision(Ii),xi.precision(Ii),qi()):wr.precision()},Ti.scale=function(Ii){return arguments.length?(wr.scale(Ii),Ur.scale(Ii*.35),xi.scale(Ii),Ti.translate(wr.translate())):wr.scale()},Ti.translate=function(Ii){if(!arguments.length)return wr.translate();var mi=wr.scale(),Pn=+Ii[0],Ma=+Ii[1];return vr=wr.translate(Ii).clipExtent([[Pn-.455*mi,Ma-.238*mi],[Pn+.455*mi,Ma+.238*mi]]).stream(hn),fi=Ur.translate([Pn-.307*mi,Ma+.201*mi]).clipExtent([[Pn-.425*mi+o,Ma+.12*mi+o],[Pn-.214*mi-o,Ma+.234*mi-o]]).stream(hn),Fi=xi.translate([Pn-.205*mi,Ma+.212*mi]).clipExtent([[Pn-.214*mi+o,Ma+.166*mi+o],[Pn-.115*mi-o,Ma+.234*mi-o]]).stream(hn),qi()},Ti.fitExtent=function(Ii,mi){return df(Ti,Ii,mi)},Ti.fitSize=function(Ii,mi){return Cu(Ti,Ii,mi)},Ti.fitWidth=function(Ii,mi){return Nf(Ti,Ii,mi)},Ti.fitHeight=function(Ii,mi){return Zc(Ti,Ii,mi)};function qi(){return gt=Bt=null,Ti}return Ti.scale(1070)}function Gu(gt){return function(Bt,wr){var vr=p(Bt),Ur=p(wr),fi=gt(vr*Ur);return[fi*Ur*_(Bt),fi*_(wr)]}}function Pc(gt){return function(Bt,wr){var vr=M(Bt*Bt+wr*wr),Ur=gt(vr),fi=_(Ur),xi=p(Ur);return[b(Bt*fi,vr*xi),T(vr&&wr*fi/vr)]}}var vc=Gu(function(gt){return M(2/(1+gt))});vc.invert=Pc(function(gt){return 2*T(gt/2)});function sv(){return Pu(vc).scale(124.75).clipAngle(180-.001)}var Lf=Gu(function(gt){return(gt=P(gt))&>/_(gt)});Lf.invert=Pc(function(gt){return gt});function Uf(){return Pu(Lf).scale(79.4188).clipAngle(180-.001)}function Iu(gt,Bt){return[gt,A(g((u+Bt)/2))]}Iu.invert=function(gt,Bt){return[gt,2*x(k(Bt))-u]};function oh(){return ru(Iu).scale(961/f)}function ru(gt){var Bt=Pu(gt),wr=Bt.center,vr=Bt.scale,Ur=Bt.translate,fi=Bt.clipExtent,xi=null,Fi,Xi,hn;Bt.scale=function(qi){return arguments.length?(vr(qi),Ti()):vr()},Bt.translate=function(qi){return arguments.length?(Ur(qi),Ti()):Ur()},Bt.center=function(qi){return arguments.length?(wr(qi),Ti()):wr()},Bt.clipExtent=function(qi){return arguments.length?(qi==null?xi=Fi=Xi=hn=null:(xi=+qi[0][0],Fi=+qi[0][1],Xi=+qi[1][0],hn=+qi[1][1]),Ti()):xi==null?null:[[xi,Fi],[Xi,hn]]};function Ti(){var qi=l*vr(),Ii=Bt(Gi(Bt.rotate()).invert([0,0]));return fi(xi==null?[[Ii[0]-qi,Ii[1]-qi],[Ii[0]+qi,Ii[1]+qi]]:gt===Iu?[[Math.max(Ii[0]-qi,xi),Fi],[Math.min(Ii[0]+qi,Xi),hn]]:[[xi,Math.max(Ii[1]-qi,Fi)],[Xi,Math.min(Ii[1]+qi,hn)]])}return Ti()}function vf(gt){return g((u+gt)/2)}function md(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):A(wr/p(Bt))/A(vf(Bt)/vf(gt)),Ur=wr*L(vf(gt),vr)/vr;if(!vr)return Iu;function fi(xi,Fi){Ur>0?Fi<-u+o&&(Fi=-u+o):Fi>u-o&&(Fi=u-o);var Xi=Ur/L(vf(Fi),vr);return[Xi*_(vr*xi),Ur-Xi*p(vr*xi)]}return fi.invert=function(xi,Fi){var Xi=Ur-Fi,hn=C(vr)*M(xi*xi+Xi*Xi),Ti=b(xi,v(Xi))*C(Xi);return Xi*vr<0&&(Ti-=l*C(xi)*C(Xi)),[Ti/vr,2*x(L(Ur/hn,1/vr))-u]},fi}function sh(){return fl(md).scale(109.5).parallels([30,30])}function Fs(gt,Bt){return[gt,Bt]}Fs.invert=Fs;function _u(){return Pu(Fs).scale(152.63)}function xu(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):(wr-p(Bt))/(Bt-gt),Ur=wr/vr+gt;if(v(vr)o&&--vr>0);return[gt/(.8707+(fi=wr*wr)*(-.131979+fi*(-.013791+fi*fi*fi*(.003971-.001529*fi)))),wr]};function gc(){return Pu(Rc).scale(175.295)}function hl(gt,Bt){return[p(Bt)*_(gt),_(Bt)]}hl.invert=Pc(T);function iu(){return Pu(hl).scale(249.5).clipAngle(90+o)}function mc(gt,Bt){var wr=p(Bt),vr=1+p(gt)*wr;return[wr*_(gt)/vr,_(Bt)/vr]}mc.invert=Pc(function(gt){return 2*x(gt)});function Yc(){return Pu(mc).scale(250).clipAngle(142)}function nc(gt,Bt){return[A(g((u+Bt)/2)),-gt]}nc.invert=function(gt,Bt){return[-Bt,2*x(k(gt))-u]};function gf(){var gt=ru(nc),Bt=gt.center,wr=gt.rotate;return gt.center=function(vr){return arguments.length?Bt([-vr[1],vr[0]]):(vr=Bt(),[vr[1],-vr[0]])},gt.rotate=function(vr){return arguments.length?wr([vr[0],vr[1],vr.length>2?vr[2]+90:90]):(vr=wr(),[vr[0],vr[1],vr[2]-90])},wr([0,0,90]).scale(159.155)}e.geoAlbers=Qs,e.geoAlbersUsa=gd,e.geoArea=me,e.geoAzimuthalEqualArea=sv,e.geoAzimuthalEqualAreaRaw=vc,e.geoAzimuthalEquidistant=Uf,e.geoAzimuthalEquidistantRaw=Lf,e.geoBounds=Ne,e.geoCentroid=yr,e.geoCircle=jn,e.geoClipAntimeridian=Hr,e.geoClipCircle=an,e.geoClipExtent=Sa,e.geoClipRectangle=Fn,e.geoConicConformal=sh,e.geoConicConformalRaw=md,e.geoConicEqualArea=yu,e.geoConicEqualAreaRaw=ic,e.geoConicEquidistant=Lh,e.geoConicEquidistantRaw=xu,e.geoContains=ms,e.geoDistance=Cs,e.geoEqualEarth=Ph,e.geoEqualEarthRaw=pf,e.geoEquirectangular=_u,e.geoEquirectangularRaw=Fs,e.geoGnomonic=Ih,e.geoGnomonicRaw=Dl,e.geoGraticule=Qu,e.geoGraticule10=Rl,e.geoIdentity=Wu,e.geoInterpolate=vo,e.geoLength=wl,e.geoMercator=oh,e.geoMercatorRaw=Iu,e.geoNaturalEarth1=gc,e.geoNaturalEarth1Raw=Rc,e.geoOrthographic=iu,e.geoOrthographicRaw=hl,e.geoPath=kh,e.geoProjection=Pu,e.geoProjectionMutator=Lc,e.geoRotation=Gi,e.geoStereographic=Yc,e.geoStereographicRaw=mc,e.geoStream=W,e.geoTransform=Kh,e.geoTransverseMercator=gf,e.geoTransverseMercatorRaw=nc,Object.defineProperty(e,"__esModule",{value:!0})})});var bRe=ye((Az,xRe)=>{(function(e,t){typeof Az=="object"&&typeof xRe!="undefined"?t(Az,xX(),$E()):t(e.d3=e.d3||{},e.d3,e.d3)})(Az,function(e,t,r){"use strict";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,u=Math.log,c=Math.max,f=Math.min,h=Math.pow,d=Math.round,v=Math.sign||function(he){return he>0?1:he<0?-1:0},x=Math.sin,b=Math.tan,p=1e-6,E=1e-12,k=Math.PI,A=k/2,L=k/4,_=Math.SQRT1_2,C=H(2),M=H(k),g=k*2,P=180/k,T=k/180;function F(he){return he?he/Math.sin(he):1}function q(he){return he>1?A:he<-1?-A:Math.asin(he)}function V(he){return he>1?0:he<-1?k:Math.acos(he)}function H(he){return he>0?Math.sqrt(he):0}function X(he){return he=s(2*he),(he-1)/(he+1)}function G(he){return(s(he)-s(-he))/2}function N(he){return(s(he)+s(-he))/2}function W(he){return u(he+H(he*he+1))}function re(he){return u(he+H(he*he-1))}function ae(he){var be=b(he/2),Pe=2*u(o(he/2))/(be*be);function Oe(Je,He){var et=o(Je),Mt=o(He),Dt=x(He),Ut=Mt*et,tr=-((1-Ut?u((1+Ut)/2)/(1-Ut):-.5)+Pe/(1+Ut));return[tr*Mt*x(Je),tr*Dt]}return Oe.invert=function(Je,He){var et=H(Je*Je+He*He),Mt=-he/2,Dt=50,Ut;if(!et)return[0,0];do{var tr=Mt/2,mr=o(tr),Rr=x(tr),zr=Rr/mr,Xr=-u(n(mr));Mt-=Ut=(2/zr*Xr-Pe*zr-et)/(-Xr/(Rr*Rr)+1-Pe/(2*mr*mr))*(mr<0?.7:1)}while(n(Ut)>p&&--Dt>0);var di=x(Mt);return[a(Je*di,et*o(Mt)),q(He*di/et)]},Oe}function _e(){var he=A,be=t.geoProjectionMutator(ae),Pe=be(he);return Pe.radius=function(Oe){return arguments.length?be(he=Oe*T):he*P},Pe.scale(179.976).clipAngle(147)}function Me(he,be){var Pe=o(be),Oe=F(V(Pe*o(he/=2)));return[2*Pe*x(he)*Oe,x(be)*Oe]}Me.invert=function(he,be){if(!(he*he+4*be*be>k*k+p)){var Pe=he,Oe=be,Je=25;do{var He=x(Pe),et=x(Pe/2),Mt=o(Pe/2),Dt=x(Oe),Ut=o(Oe),tr=x(2*Oe),mr=Dt*Dt,Rr=Ut*Ut,zr=et*et,Xr=1-Rr*Mt*Mt,di=Xr?V(Ut*Mt)*H(Li=1/Xr):Li=0,Li,Ci=2*di*Ut*et-he,Qi=di*Dt-be,Mn=Li*(Rr*zr+di*Ut*Mt*mr),pa=Li*(.5*He*tr-di*2*Dt*et),ea=Li*.25*(tr*et-di*Dt*Rr*He),Ga=Li*(mr*Mt+di*zr*Ut),To=pa*ea-Ga*Mn;if(!To)break;var Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]}};function ke(){return t.geoProjection(Me).scale(152.63)}function ge(he){var be=x(he),Pe=o(he),Oe=he>=0?1:-1,Je=b(Oe*he),He=(1+be-Pe)/2;function et(Mt,Dt){var Ut=o(Dt),tr=o(Mt/=2);return[(1+Ut)*x(Mt),(Oe*Dt>-a(tr,Je)-.001?0:-Oe*10)+He+x(Dt)*Pe-(1+Ut)*be*tr]}return et.invert=function(Mt,Dt){var Ut=0,tr=0,mr=50;do{var Rr=o(Ut),zr=x(Ut),Xr=o(tr),di=x(tr),Li=1+Xr,Ci=Li*zr-Mt,Qi=He+di*Pe-Li*be*Rr-Dt,Mn=Li*Rr/2,pa=-zr*di,ea=be*Li*zr/2,Ga=Pe*Xr+be*Rr*di,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To/2,co=(Ci*ea-Qi*Mn)/To;n(co)>2&&(co/=2),Ut-=Wa,tr-=co}while((n(Wa)>p||n(co)>p)&&--mr>0);return Oe*tr>-a(o(Ut),Je)-.001?[Ut*2,tr]:null},et}function ie(){var he=20*T,be=he>=0?1:-1,Pe=b(be*he),Oe=t.geoProjectionMutator(ge),Je=Oe(he),He=Je.stream;return Je.parallel=function(et){return arguments.length?(Pe=b((be=(he=et*T)>=0?1:-1)*he),Oe(he)):he*P},Je.stream=function(et){var Mt=Je.rotate(),Dt=He(et),Ut=(Je.rotate([0,0]),He(et)),tr=Je.precision();return Je.rotate(Mt),Dt.sphere=function(){Ut.polygonStart(),Ut.lineStart();for(var mr=be*-180;be*mr<180;mr+=be*90)Ut.point(mr,be*90);if(he)for(;be*(mr-=3*be*tr)>=-180;)Ut.point(mr,be*-a(o(mr*T/2),Pe)*P);Ut.lineEnd(),Ut.polygonEnd()},Dt},Je.scale(218.695).center([0,28.0974])}function Te(he,be){var Pe=b(be/2),Oe=H(1-Pe*Pe),Je=1+Oe*o(he/=2),He=x(he)*Oe/Je,et=Pe/Je,Mt=He*He,Dt=et*et;return[4/3*He*(3+Mt-3*Dt),4/3*et*(3+3*Mt-Dt)]}Te.invert=function(he,be){if(he*=3/8,be*=3/8,!he&&n(be)>1)return null;var Pe=he*he,Oe=be*be,Je=1+Pe+Oe,He=H((Je-H(Je*Je-4*be*be))/2),et=q(He)/3,Mt=He?re(n(be/He))/3:W(n(he))/3,Dt=o(et),Ut=N(Mt),tr=Ut*Ut-Dt*Dt;return[v(he)*2*a(G(Mt)*Dt,.25-tr),v(be)*2*a(Ut*x(et),.25+tr)]};function Ee(){return t.geoProjection(Te).scale(66.1603)}var Ae=H(8),ze=u(1+C);function Ce(he,be){var Pe=n(be);return PeE&&--Oe>0);return[he/(o(Pe)*(Ae-1/x(Pe))),v(be)*Pe]};function me(){return t.geoProjection(Ce).scale(112.314)}function Re(he){var be=2*k/he;function Pe(Oe,Je){var He=t.geoAzimuthalEquidistantRaw(Oe,Je);if(n(Oe)>A){var et=a(He[1],He[0]),Mt=H(He[0]*He[0]+He[1]*He[1]),Dt=be*d((et-A)/be)+A,Ut=a(x(et-=Dt),2-o(et));et=Dt+q(k/Mt*x(Ut))-Ut,He[0]=Mt*o(et),He[1]=Mt*x(et)}return He}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+Je*Je);if(He>A){var et=a(Je,Oe),Mt=be*d((et-A)/be)+A,Dt=et>Mt?-1:1,Ut=He*o(Mt-et),tr=1/b(Dt*V((Ut-k)/H(k*(k-2*Ut)+He*He)));et=Mt+2*i((tr+Dt*H(tr*tr-3))/3),Oe=He*o(et),Je=He*x(et)}return t.geoAzimuthalEquidistantRaw.invert(Oe,Je)},Pe}function ce(){var he=5,be=t.geoProjectionMutator(Re),Pe=be(he),Oe=Pe.stream,Je=.01,He=-o(Je*T),et=x(Je*T);return Pe.lobes=function(Mt){return arguments.length?be(he=+Mt):he},Pe.stream=function(Mt){var Dt=Pe.rotate(),Ut=Oe(Mt),tr=(Pe.rotate([0,0]),Oe(Mt));return Pe.rotate(Dt),Ut.sphere=function(){tr.polygonStart(),tr.lineStart();for(var mr=0,Rr=360/he,zr=2*k/he,Xr=90-180/he,di=A;mr0&&n(Je)>p);return Oe<0?NaN:Pe}function rt(he,be,Pe){return be===void 0&&(be=40),Pe===void 0&&(Pe=E),function(Oe,Je,He,et){var Mt,Dt,Ut;He=He===void 0?0:+He,et=et===void 0?0:+et;for(var tr=0;trMt){He-=Dt/=2,et-=Ut/=2;continue}Mt=Xr;var di=(He>0?-1:1)*Pe,Li=(et>0?-1:1)*Pe,Ci=he(He+di,et),Qi=he(He,et+Li),Mn=(Ci[0]-mr[0])/di,pa=(Ci[1]-mr[1])/di,ea=(Qi[0]-mr[0])/Li,Ga=(Qi[1]-mr[1])/Li,To=Ga*Mn-pa*ea,Wa=(n(To)<.5?.5:1)/To;if(Dt=(zr*ea-Rr*Ga)*Wa,Ut=(Rr*pa-zr*Mn)*Wa,He+=Dt,et+=Ut,n(Dt)0&&(Mt[1]*=1+Dt/1.5*Mt[0]*Mt[0]),Mt}return Oe.invert=rt(Oe),Oe}function Rt(){return t.geoProjection(ot()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function kt(he,be){var Pe=he*x(be),Oe=30,Je;do be-=Je=(be+x(be)-Pe)/(1+o(be));while(n(Je)>p&&--Oe>0);return be/2}function Ct(he,be,Pe){function Oe(Je,He){return[he*Je*o(He=kt(Pe,He)),be*x(He)]}return Oe.invert=function(Je,He){return He=q(He/be),[Je/(he*o(He)),q((2*He+x(2*He))/Pe)]},Oe}var Yt=Ct(C/A,C,k);function xr(){return t.geoProjection(Yt).scale(169.529)}var er=2.00276,Ke=1.11072;function xt(he,be){var Pe=kt(k,be);return[er*he/(1/o(be)+Ke/o(Pe)),(be+C*x(Pe))/er]}xt.invert=function(he,be){var Pe=er*be,Oe=be<0?-L:L,Je=25,He,et;do et=Pe-C*x(Oe),Oe-=He=(x(2*Oe)+2*Oe-k*x(et))/(2*o(2*Oe)+2+k*o(et)*C*o(Oe));while(n(He)>p&&--Je>0);return et=Pe-C*x(Oe),[he*(1/o(et)+Ke/o(Oe))/er,et]};function bt(){return t.geoProjection(xt).scale(160.857)}function Lt(he){var be=0,Pe=t.geoProjectionMutator(he),Oe=Pe(be);return Oe.parallel=function(Je){return arguments.length?Pe(be=Je*T):be*P},Oe}function St(he,be){return[he*o(be),be]}St.invert=function(he,be){return[he/o(be),be]};function Et(){return t.geoProjection(St).scale(152.63)}function dt(he){if(!he)return St;var be=1/b(he);function Pe(Oe,Je){var He=be+he-Je,et=He&&Oe*o(Je)/He;return[He*x(et),be-He*o(et)]}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+(Je=be-Je)*Je),et=be+he-He;return[He/o(et)*a(Oe,Je),et]},Pe}function Ht(){return Lt(dt).scale(123.082).center([0,26.1441]).parallel(45)}function $t(he){function be(Pe,Oe){var Je=A-Oe,He=Je&&Pe*he*x(Je)/Je;return[Je*x(He)/he,A-Je*o(He)]}return be.invert=function(Pe,Oe){var Je=Pe*he,He=A-Oe,et=H(Je*Je+He*He),Mt=a(Je,He);return[(et?et/x(et):1)*Mt/he,A-et]},be}function fr(){var he=.5,be=t.geoProjectionMutator($t),Pe=be(he);return Pe.fraction=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(158.837)}var _r=Ct(1,4/k,k);function Br(){return t.geoProjection(_r).scale(152.63)}function Or(he,be,Pe,Oe,Je,He){var et=o(He),Mt;if(n(he)>1||n(He)>1)Mt=V(Pe*Je+be*Oe*et);else{var Dt=x(he/2),Ut=x(He/2);Mt=2*q(H(Dt*Dt+be*Oe*Ut*Ut))}return n(Mt)>p?[Mt,a(Oe*x(He),be*Je-Pe*Oe*et)]:[0,0]}function Nr(he,be,Pe){return V((he*he+be*be-Pe*Pe)/(2*he*be))}function ut(he){return he-2*k*l((he+k)/(2*k))}function Ne(he,be,Pe){for(var Oe=[[he[0],he[1],x(he[1]),o(he[1])],[be[0],be[1],x(be[1]),o(be[1])],[Pe[0],Pe[1],x(Pe[1]),o(Pe[1])]],Je=Oe[2],He,et=0;et<3;++et,Je=He)He=Oe[et],Je.v=Or(He[1]-Je[1],Je[3],Je[2],He[3],He[2],He[0]-Je[0]),Je.point=[0,0];var Mt=Nr(Oe[0].v[0],Oe[2].v[0],Oe[1].v[0]),Dt=Nr(Oe[0].v[0],Oe[1].v[0],Oe[2].v[0]),Ut=k-Mt;Oe[2].point[1]=0,Oe[0].point[0]=-(Oe[1].point[0]=Oe[0].v[0]/2);var tr=[Oe[2].point[0]=Oe[0].point[0]+Oe[2].v[0]*o(Mt),2*(Oe[0].point[1]=Oe[1].point[1]=Oe[2].v[0]*x(Mt))];function mr(Rr,zr){var Xr=x(zr),di=o(zr),Li=new Array(3),Ci;for(Ci=0;Ci<3;++Ci){var Qi=Oe[Ci];if(Li[Ci]=Or(zr-Qi[1],Qi[3],Qi[2],di,Xr,Rr-Qi[0]),!Li[Ci][0])return Qi.point;Li[Ci][1]=ut(Li[Ci][1]-Qi.v[1])}var Mn=tr.slice();for(Ci=0;Ci<3;++Ci){var pa=Ci==2?0:Ci+1,ea=Nr(Oe[Ci].v[0],Li[Ci][0],Li[pa][0]);Li[Ci][1]<0&&(ea=-ea),Ci?Ci==1?(ea=Dt-ea,Mn[0]-=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea)):(ea=Ut-ea,Mn[0]+=Li[Ci][0]*o(ea),Mn[1]+=Li[Ci][0]*x(ea)):(Mn[0]+=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea))}return Mn[0]/=3,Mn[1]/=3,Mn}return mr}function Ye(he){return he[0]*=T,he[1]*=T,he}function Ve(){return Xe([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Xe(he,be,Pe){var Oe=t.geoCentroid({type:"MultiPoint",coordinates:[he,be,Pe]}),Je=[-Oe[0],-Oe[1]],He=t.geoRotation(Je),et=Ne(Ye(He(he)),Ye(He(be)),Ye(He(Pe)));et.invert=rt(et);var Mt=t.geoProjection(et).rotate(Je),Dt=Mt.center;return delete Mt.rotate,Mt.center=function(Ut){return arguments.length?Dt(He(Ut)):He.invert(Dt())},Mt.clipAngle(90)}function ht(he,be){var Pe=H(1-x(be));return[2/M*he*Pe,M*(1-Pe)]}ht.invert=function(he,be){var Pe=(Pe=be/M-1)*Pe;return[Pe>0?he*H(k/Pe)/2:0,q(1-Pe)]};function Le(){return t.geoProjection(ht).scale(95.6464).center([0,30])}function xe(he){var be=b(he);function Pe(Oe,Je){return[Oe,(Oe?Oe/x(Oe):1)*(x(Je)*o(Oe)-be*o(Je))]}return Pe.invert=be?function(Oe,Je){Oe&&(Je*=x(Oe)/Oe);var He=o(Oe);return[Oe,2*a(H(He*He+be*be-Je*Je)-He,be-Je)]}:function(Oe,Je){return[Oe,q(Oe?Je*b(Oe)/Oe:Je)]},Pe}function Se(){return Lt(xe).scale(249.828).clipAngle(90)}var lt=H(3);function Gt(he,be){return[lt*he*(2*o(2*be/3)-1)/M,lt*M*x(be/3)]}Gt.invert=function(he,be){var Pe=3*q(be/(lt*M));return[M*he/(lt*(2*o(2*Pe/3)-1)),Pe]};function Vt(){return t.geoProjection(Gt).scale(156.19)}function ar(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,x(Je)/be]}return Pe.invert=function(Oe,Je){return[Oe/be,q(Je*be)]},Pe}function Qr(){return Lt(ar).parallel(38.58).scale(195.044)}function ai(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,(1+be)*b(Je/2)]}return Pe.invert=function(Oe,Je){return[Oe/be,i(Je/(1+be))*2]},Pe}function jr(){return Lt(ai).scale(124.75)}function ri(he,be){var Pe=H(8/(3*k));return[Pe*he*(1-n(be)/k),Pe*be]}ri.invert=function(he,be){var Pe=H(8/(3*k)),Oe=be/Pe;return[he/(Pe*(1-n(Oe)/k)),Oe]};function bi(){return t.geoProjection(ri).scale(165.664)}function nn(he,be){var Pe=H(4-3*x(n(be)));return[2/H(6*k)*he*Pe,v(be)*H(2*k/3)*(2-Pe)]}nn.invert=function(he,be){var Pe=2-n(be)/H(2*k/3);return[he*H(6*k)/(2*Pe),v(be)*q((4-Pe*Pe)/3)]};function Wi(){return t.geoProjection(nn).scale(165.664)}function Ni(he,be){var Pe=H(k*(4+k));return[2/Pe*he*(1+H(1-4*be*be/(k*k))),4/Pe*be]}Ni.invert=function(he,be){var Pe=H(k*(4+k))/2;return[he*Pe/(1+H(1-be*be*(4+k)/(4*k))),be*Pe/2]};function _n(){return t.geoProjection(Ni).scale(180.739)}function $i(he,be){var Pe=(2+A)*x(be);be/=2;for(var Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++){var He=o(be);be-=Je=(be+x(be)*(He+2)-Pe)/(2*He*(1+He))}return[2/H(k*(4+k))*he*(1+o(be)),2*H(k/(4+k))*x(be)]}$i.invert=function(he,be){var Pe=be*H((4+k)/k)/2,Oe=q(Pe),Je=o(Oe);return[he/(2/H(k*(4+k))*(1+Je)),q((Oe+Pe*(Je+2))/(2+A))]};function zn(){return t.geoProjection($i).scale(180.739)}function Wn(he,be){return[he*(1+o(be))/H(2+k),2*be/H(2+k)]}Wn.invert=function(he,be){var Pe=H(2+k),Oe=be*Pe/2;return[Pe*he/(1+o(Oe)),Oe]};function It(){return t.geoProjection(Wn).scale(173.044)}function ft(he,be){for(var Pe=(1+A)*x(be),Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++)be-=Je=(be+x(be)-Pe)/(1+o(be));return Pe=H(2+k),[he*(1+o(be))/Pe,2*be/Pe]}ft.invert=function(he,be){var Pe=1+A,Oe=H(Pe/2);return[he*2*Oe/(1+o(be*=Oe)),q((be+x(be))/Pe)]};function jt(){return t.geoProjection(ft).scale(173.044)}var Zt=3+2*C;function yr(he,be){var Pe=x(he/=2),Oe=o(he),Je=H(o(be)),He=o(be/=2),et=x(be)/(He+C*Oe*Je),Mt=H(2/(1+et*et)),Dt=H((C*He+(Oe+Pe)*Je)/(C*He+(Oe-Pe)*Je));return[Zt*(Mt*(Dt-1/Dt)-2*u(Dt)),Zt*(Mt*et*(Dt+1/Dt)-2*i(et))]}yr.invert=function(he,be){if(!(He=Te.invert(he/1.2,be*1.065)))return null;var Pe=He[0],Oe=He[1],Je=20,He;he/=Zt,be/=Zt;do{var et=Pe/2,Mt=Oe/2,Dt=x(et),Ut=o(et),tr=x(Mt),mr=o(Mt),Rr=o(Oe),zr=H(Rr),Xr=tr/(mr+C*Ut*zr),di=Xr*Xr,Li=H(2/(1+di)),Ci=C*mr+(Ut+Dt)*zr,Qi=C*mr+(Ut-Dt)*zr,Mn=Ci/Qi,pa=H(Mn),ea=pa-1/pa,Ga=pa+1/pa,To=Li*ea-2*u(pa)-he,Wa=Li*Xr*Ga-2*i(Xr)-be,co=tr&&_*zr*Dt*di/tr,Ro=(C*Ut*mr+zr)/(2*(mr+C*Ut*zr)*(mr+C*Ut*zr)*zr),Ds=-.5*Xr*Li*Li*Li,As=Ds*co,yo=Ds*Ro,po=(po=2*mr+C*zr*(Ut-Dt))*po*pa,_l=(C*Ut*mr*zr+Rr)/po,Hl=-(C*Dt*tr)/(zr*po),Zu=ea*As-2*_l/pa+Li*(_l+_l/Mn),cu=ea*yo-2*Hl/pa+Li*(Hl+Hl/Mn),el=Xr*Ga*As-2*co/(1+di)+Li*Ga*co+Li*Xr*(_l-_l/Mn),au=Xr*Ga*yo-2*Ro/(1+di)+Li*Ga*Ro+Li*Xr*(Hl-Hl/Mn),zc=cu*el-au*Zu;if(!zc)break;var zl=(Wa*cu-To*au)/zc,Fl=(To*el-Wa*Zu)/zc;Pe-=zl,Oe=c(-A,f(A,Oe-Fl))}while((n(zl)>p||n(Fl)>p)&&--Je>0);return n(n(Oe)-A)Oe){var mr=H(tr),Rr=a(Ut,Dt),zr=Pe*d(Rr/Pe),Xr=Rr-zr,di=he*o(Xr),Li=(he*x(Xr)-Xr*x(di))/(A-di),Ci=Fa(Xr,Li),Qi=(k-he)/Ra(Ci,di,k);Dt=mr;var Mn=50,pa;do Dt-=pa=(he+Ra(Ci,di,Dt)*Qi-mr)/(Ci(Dt)*Qi);while(n(pa)>p&&--Mn>0);Ut=Xr*x(Dt),DtOe){var Dt=H(Mt),Ut=a(et,He),tr=Pe*d(Ut/Pe),mr=Ut-tr;He=Dt*o(mr),et=Dt*x(mr);for(var Rr=He-A,zr=x(He),Xr=et/zr,di=Hep||n(Xr)>p)&&--di>0);return[mr,Rr]},Dt}var Sn=oa(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Ha(){return t.geoProjection(Sn).scale(149.995)}var oo=oa(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function xn(){return t.geoProjection(oo).scale(153.93)}var _t=oa(5/6*k,-.62636,-.0344,0,1.3493,-.05524,0,.045);function br(){return t.geoProjection(_t).scale(130.945)}function Hr(he,be){var Pe=he*he,Oe=be*be;return[he*(1-.162388*Oe)*(.87-952426e-9*Pe*Pe),be*(1+Oe/12)]}Hr.invert=function(he,be){var Pe=he,Oe=be,Je=50,He;do{var et=Oe*Oe;Oe-=He=(Oe*(1+et/12)-be)/(1+et/4)}while(n(He)>p&&--Je>0);Je=50,he/=1-.162388*et;do{var Mt=(Mt=Pe*Pe)*Mt;Pe-=He=(Pe*(.87-952426e-9*Mt)-he)/(.87-.00476213*Mt)}while(n(He)>p&&--Je>0);return[Pe,Oe]};function ti(){return t.geoProjection(Hr).scale(131.747)}var zi=oa(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Yi(){return t.geoProjection(zi).scale(131.087)}function an(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=Oe>0?-.5:.5,et=he(Oe+He*k,Je);return et[0]-=He*be,et}return he.invert&&(Pe.invert=function(Oe,Je){var He=Oe>0?-.5:.5,et=he.invert(Oe+He*be,Je),Mt=et[0]-He*k;return Mt<-k?Mt+=2*k:Mt>k&&(Mt-=2*k),et[0]=Mt,et}),Pe}function hi(he,be){var Pe=v(he),Oe=v(be),Je=o(be),He=o(he)*Je,et=x(he)*Je,Mt=x(Oe*be);he=n(a(et,Mt)),be=q(He),n(he-A)>p&&(he%=A);var Dt=Ji(he>k/4?A-he:he,be);return he>k/4&&(Mt=Dt[0],Dt[0]=-Dt[1],Dt[1]=-Mt),Dt[0]*=Pe,Dt[1]*=-Oe,Dt}hi.invert=function(he,be){n(he)>1&&(he=v(he)*2-he),n(be)>1&&(be=v(be)*2-be);var Pe=v(he),Oe=v(be),Je=-Pe*he,He=-Oe*be,et=He/Je<1,Mt=ua(et?He:Je,et?Je:He),Dt=Mt[0],Ut=Mt[1],tr=o(Ut);return et&&(Dt=-A-Dt),[Pe*(a(x(Dt)*tr,-x(Ut))+k),Oe*q(o(Dt)*tr)]};function Ji(he,be){if(be===A)return[0,0];var Pe=x(be),Oe=Pe*Pe,Je=Oe*Oe,He=1+Je,et=1+3*Je,Mt=1-Je,Dt=q(1/H(He)),Ut=Mt+Oe*He*Dt,tr=(1-Pe)/Ut,mr=H(tr),Rr=tr*He,zr=H(Rr),Xr=mr*Mt,di,Li;if(he===0)return[0,-(Xr+Oe*zr)];var Ci=o(be),Qi=1/Ci,Mn=2*Pe*Ci,pa=(-3*Oe+Dt*et)*Mn,ea=(-Ut*Ci-(1-Pe)*pa)/(Ut*Ut),Ga=.5*ea/mr,To=Mt*Ga-2*Oe*mr*Mn,Wa=Oe*He*ea+tr*et*Mn,co=-Qi*Mn,Ro=-Qi*Wa,Ds=-2*Qi*To,As=4*he/k,yo;if(he>.222*k||be.175*k){if(di=(Xr+Oe*H(Rr*(1+Je)-Xr*Xr))/(1+Je),he>k/4)return[di,di];var po=di,_l=.5*di;di=.5*(_l+po),Li=50;do{var Hl=H(Rr-di*di),Zu=di*(Ds+co*Hl)+Ro*q(di/zr)-As;if(!Zu)break;Zu<0?_l=di:po=di,di=.5*(_l+po)}while(n(po-_l)>p&&--Li>0)}else{di=p,Li=25;do{var cu=di*di,el=H(Rr-cu),au=Ds+co*el,zc=di*au+Ro*q(di/zr)-As,zl=au+(Ro-co*cu)/el;di-=yo=el?zc/zl:0}while(n(yo)>p&&--Li>0)}return[di,-Xr-Oe*H(Rr-di*di)]}function ua(he,be){for(var Pe=0,Oe=1,Je=.5,He=50;;){var et=Je*Je,Mt=H(Je),Dt=q(1/H(1+et)),Ut=1-et+Je*(1+et)*Dt,tr=(1-Mt)/Ut,mr=H(tr),Rr=tr*(1+et),zr=mr*(1-et),Xr=Rr-he*he,di=H(Xr),Li=be+zr+Je*di;if(n(Oe-Pe)0?Pe=Je:Oe=Je,Je=.5*(Pe+Oe)}if(!He)return null;var Ci=q(Mt),Qi=o(Ci),Mn=1/Qi,pa=2*Mt*Qi,ea=(-3*Je+Dt*(1+3*et))*pa,Ga=(-Ut*Qi-(1-Mt)*ea)/(Ut*Ut),To=.5*Ga/mr,Wa=(1-et)*To-2*Je*mr*pa,co=-2*Mn*Wa,Ro=-Mn*pa,Ds=-Mn*(Je*(1+et)*Ga+tr*(1+3*et)*pa);return[k/4*(he*(co+Ro*di)+Ds*q(he/H(Rr))),Ci]}function Fn(){return t.geoProjection(an(hi)).scale(239.75)}function Sa(he,be,Pe){var Oe,Je,He;return he?(Oe=go(he,Pe),be?(Je=go(be,1-Pe),He=Je[1]*Je[1]+Pe*Oe[0]*Oe[0]*Je[0]*Je[0],[[Oe[0]*Je[2]/He,Oe[1]*Oe[2]*Je[0]*Je[1]/He],[Oe[1]*Je[1]/He,-Oe[0]*Oe[2]*Je[0]*Je[2]/He],[Oe[2]*Je[1]*Je[2]/He,-Pe*Oe[0]*Oe[1]*Je[0]/He]]):[[Oe[0],0],[Oe[1],0],[Oe[2],0]]):(Je=go(be,1-Pe),[[0,Je[0]/Je[1]],[1/Je[1],0],[Je[2]/Je[1],0]])}function go(he,be){var Pe,Oe,Je,He,et;if(be=1-p)return Pe=(1-be)/4,Oe=N(he),He=X(he),Je=1/Oe,et=Oe*G(he),[He+Pe*(et-he)/(Oe*Oe),Je-Pe*He*Je*(et-he),Je+Pe*He*Je*(et+he),2*i(s(he))-A+Pe*(et-he)/Oe];var Mt=[1,0,0,0,0,0,0,0,0],Dt=[H(be),0,0,0,0,0,0,0,0],Ut=0;for(Oe=H(1-be),et=1;n(Dt[Ut]/Mt[Ut])>p&&Ut<8;)Pe=Mt[Ut++],Dt[Ut]=(Pe-Oe)/2,Mt[Ut]=(Pe+Oe)/2,Oe=H(Pe*Oe),et*=2;Je=et*Mt[Ut]*he;do He=Dt[Ut]*x(Oe=Je)/Mt[Ut],Je=(q(He)+Je)/2;while(--Ut);return[x(Je),He=o(Je),He/o(Je-Oe),Je]}function Oo(he,be,Pe){var Oe=n(he),Je=n(be),He=G(Je);if(Oe){var et=1/x(Oe),Mt=1/(b(Oe)*b(Oe)),Dt=-(Mt+Pe*(He*He*et*et)-1+Pe),Ut=(Pe-1)*Mt,tr=(-Dt+H(Dt*Dt-4*Ut))/2;return[ho(i(1/H(tr)),Pe)*v(he),ho(i(H((tr/Mt-1)/Pe)),1-Pe)*v(be)]}return[0,ho(i(He),1-Pe)*v(be)]}function ho(he,be){if(!be)return he;if(be===1)return u(b(he/2+L));for(var Pe=1,Oe=H(1-be),Je=H(be),He=0;n(Je)>p;He++){if(he%k){var et=i(Oe*b(he)/Pe);et<0&&(et+=k),he+=et+~~(he/k)*k}else he+=he;Je=(Pe+Oe)/2,Oe=H(Pe*Oe),Je=((Pe=Je)-Oe)/2}return he/(h(2,He)*Pe)}function Mo(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=u(b(k/4+n(be)/2)),Mt=s(He*et)/H(Pe),Dt=xo(Mt*o(He*he),Mt*x(He*he)),Ut=Oo(Dt[0],Dt[1],Oe*Oe);return[-Ut[1],(be>=0?1:-1)*(.5*Je-Ut[0])]}function xo(he,be){var Pe=he*he,Oe=be+1,Je=1-Pe-be*be;return[.5*((he>=0?A:-A)-a(Je,2*he)),-.25*u(Je*Je+4*Pe)+.5*u(Oe*Oe+Pe)]}function zs(he,be){var Pe=be[0]*be[0]+be[1]*be[1];return[(he[0]*be[0]+he[1]*be[1])/Pe,(he[1]*be[0]-he[0]*be[1])/Pe]}Mo.invert=function(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=Sa(.5*Je-be,-he,Oe*Oe),Mt=zs(et[0],et[1]),Dt=a(Mt[1],Mt[0])/He;return[Dt,2*i(s(.5/He*u(Pe*Mt[0]*Mt[0]+Pe*Mt[1]*Mt[1])))-A]};function ks(){return t.geoProjection(an(Mo)).scale(151.496)}function Zs(he){var be=x(he),Pe=o(he),Oe=Xs(he);Oe.invert=Xs(-he);function Je(He,et){var Mt=Oe(He,et);He=Mt[0],et=Mt[1];var Dt=x(et),Ut=o(et),tr=o(He),mr=V(be*Dt+Pe*Ut*tr),Rr=x(mr),zr=n(Rr)>p?mr/Rr:1;return[zr*Pe*x(He),(n(He)>A?zr:-zr)*(be*Ut-Pe*Dt*tr)]}return Je.invert=function(He,et){var Mt=H(He*He+et*et),Dt=-x(Mt),Ut=o(Mt),tr=Mt*Ut,mr=-et*Dt,Rr=Mt*be,zr=H(tr*tr+mr*mr-Rr*Rr),Xr=a(tr*Rr+mr*zr,mr*Rr-tr*zr),di=(Mt>A?-1:1)*a(He*Dt,Mt*o(Xr)*Ut+et*x(Xr)*Dt);return Oe.invert(di,Xr)},Je}function Xs(he){var be=x(he),Pe=o(he);return function(Oe,Je){var He=o(Je),et=o(Oe)*He,Mt=x(Oe)*He,Dt=x(Je);return[a(Mt,et*Pe-Dt*be),q(Dt*Pe+et*be)]}}function wl(){var he=0,be=t.geoProjectionMutator(Zs),Pe=be(he),Oe=Pe.rotate,Je=Pe.stream,He=t.geoCircle();return Pe.parallel=function(et){if(!arguments.length)return he*P;var Mt=Pe.rotate();return be(he=et*T).rotate(Mt)},Pe.rotate=function(et){return arguments.length?(Oe.call(Pe,[et[0],et[1]-he*P]),He.center([-et[0],-et[1]]),Pe):(et=Oe.call(Pe),et[1]+=he*P,et)},Pe.stream=function(et){return et=Je(et),et.sphere=function(){et.polygonStart();var Mt=.01,Dt=He.radius(90-Mt)().coordinates[0],Ut=Dt.length-1,tr=-1,mr;for(et.lineStart();++tr=0;)et.point((mr=Dt[tr])[0],mr[1]);et.lineEnd(),et.polygonEnd()},et},Pe.scale(79.4187).parallel(45).clipAngle(180-.001)}var os=3,cl=q(1-1/os)*P,Cs=ar(0);function ml(he){var be=cl*T,Pe=ht(k,be)[0]-ht(-k,be)[0],Oe=Cs(0,be)[1],Je=ht(0,be)[1],He=M-Je,et=g/he,Mt=4/g,Dt=Oe+He*He*4/g;function Ut(tr,mr){var Rr,zr=n(mr);if(zr>be){var Xr=f(he-1,c(0,l((tr+k)/et)));tr+=k*(he-1)/he-Xr*et,Rr=ht(tr,zr),Rr[0]=Rr[0]*g/Pe-g*(he-1)/(2*he)+Xr*g/he,Rr[1]=Oe+(Rr[1]-Je)*4*He/g,mr<0&&(Rr[1]=-Rr[1])}else Rr=Cs(tr,mr);return Rr[0]*=Mt,Rr[1]/=Dt,Rr}return Ut.invert=function(tr,mr){tr/=Mt,mr*=Dt;var Rr=n(mr);if(Rr>Oe){var zr=f(he-1,c(0,l((tr+k)/et)));tr=(tr+k*(he-1)/he-zr*et)*Pe/g;var Xr=ht.invert(tr,.25*(Rr-Oe)*g/He+Je);return Xr[0]-=k*(he-1)/he-zr*et,mr<0&&(Xr[1]=-Xr[1]),Xr}return Cs.invert(tr,mr)},Ut}function Ys(he,be){return[he,be&1?90-p:cl]}function Hs(he,be){return[he,be&1?-90+p:-cl]}function Eo(he){return[he[0]*(1-p),he[1]]}function fs(he){var be=[].concat(r.range(-180,180+he/2,he).map(Ys),r.range(180,-180-he/2,-he).map(Hs));return{type:"Polygon",coordinates:[he===180?be.map(Eo):be]}}function Ql(){var he=4,be=t.geoProjectionMutator(ml),Pe=be(he),Oe=Pe.stream;return Pe.lobes=function(Je){return arguments.length?be(he=+Je):he},Pe.stream=function(Je){var He=Pe.rotate(),et=Oe(Je),Mt=(Pe.rotate([0,0]),Oe(Je));return Pe.rotate(He),et.sphere=function(){t.geoStream(fs(180/he),Mt)},et},Pe.scale(239.75)}function Hu(he){var be=1+he,Pe=x(1/be),Oe=q(Pe),Je=2*H(k/(He=k+4*Oe*be)),He,et=.5*Je*(be+H(he*(2+he))),Mt=he*he,Dt=be*be;function Ut(tr,mr){var Rr=1-x(mr),zr,Xr;if(Rr&&Rr<2){var di=A-mr,Li=25,Ci;do{var Qi=x(di),Mn=o(di),pa=Oe+a(Qi,be-Mn),ea=1+Dt-2*be*Mn;di-=Ci=(di-Mt*Oe-be*Qi+ea*pa-.5*Rr*He)/(2*be*Qi*pa)}while(n(Ci)>E&&--Li>0);zr=Je*H(ea),Xr=tr*pa/k}else zr=Je*(he+Rr),Xr=tr*Oe/k;return[zr*x(Xr),et-zr*o(Xr)]}return Ut.invert=function(tr,mr){var Rr=tr*tr+(mr-=et)*mr,zr=(1+Dt-Rr/(Je*Je))/(2*be),Xr=V(zr),di=x(Xr),Li=Oe+a(di,be-zr);return[q(tr/H(Rr))*k/Li,q(1-2*(Xr-Mt*Oe-be*di+(1+Dt-2*be*zr)*Li)/He)]},Ut}function fc(){var he=1,be=t.geoProjectionMutator(Hu),Pe=be(he);return Pe.ratio=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(167.774).center([0,18.67])}var ms=.7109889596207567,on=.0528035274542;function fa(he,be){return be>-ms?(he=Yt(he,be),he[1]+=on,he):St(he,be)}fa.invert=function(he,be){return be>-ms?Yt.invert(he,be-on):St.invert(he,be)};function Qu(){return t.geoProjection(fa).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Rl(he,be){return n(be)>ms?(he=Yt(he,be),he[1]-=be>0?on:-on,he):St(he,be)}Rl.invert=function(he,be){return n(be)>ms?Yt.invert(he,be+(be>0?on:-on)):St.invert(he,be)};function vo(){return t.geoProjection(Rl).scale(152.63)}function Zl(he,be,Pe,Oe){var Je=H(4*k/(2*Pe+(1+he-be/2)*x(2*Pe)+(he+be)/2*x(4*Pe)+be/2*x(6*Pe))),He=H(Oe*x(Pe)*H((1+he*o(2*Pe)+be*o(4*Pe))/(1+he+be))),et=Pe*Dt(1);function Mt(mr){return H(1+he*o(2*mr)+be*o(4*mr))}function Dt(mr){var Rr=mr*Pe;return(2*Rr+(1+he-be/2)*x(2*Rr)+(he+be)/2*x(4*Rr)+be/2*x(6*Rr))/Pe}function Ut(mr){return Mt(mr)*x(mr)}var tr=function(mr,Rr){var zr=Pe*qt(Dt,et*x(Rr)/Pe,Rr/k);isNaN(zr)&&(zr=Pe*v(Rr));var Xr=Je*Mt(zr);return[Xr*He*mr/k*o(zr),Xr/He*x(zr)]};return tr.invert=function(mr,Rr){var zr=qt(Ut,Rr*He/Je);return[mr*k/(o(zr)*Je*He*Mt(zr)),q(Pe*Dt(zr/Pe)/et)]},Pe===0&&(Je=H(Oe/k),tr=function(mr,Rr){return[mr*Je,x(Rr)/Je]},tr.invert=function(mr,Rr){return[mr/Je,q(Rr*Je)]}),tr}function Ks(){var he=1,be=0,Pe=45*T,Oe=2,Je=t.geoProjectionMutator(Zl),He=Je(he,be,Pe,Oe);return He.a=function(et){return arguments.length?Je(he=+et,be,Pe,Oe):he},He.b=function(et){return arguments.length?Je(he,be=+et,Pe,Oe):be},He.psiMax=function(et){return arguments.length?Je(he,be,Pe=+et*T,Oe):Pe*P},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(180.739)}function Xl(he,be,Pe,Oe,Je,He,et,Mt,Dt,Ut,tr){if(tr.nanEncountered)return NaN;var mr,Rr,zr,Xr,di,Li,Ci,Qi,Mn,pa;if(mr=Pe-be,Rr=he(be+mr*.25),zr=he(Pe-mr*.25),isNaN(Rr)){tr.nanEncountered=!0;return}if(isNaN(zr)){tr.nanEncountered=!0;return}return Xr=mr*(Oe+4*Rr+Je)/12,di=mr*(Je+4*zr+He)/12,Li=Xr+di,pa=(Li-et)/15,Ut>Dt?(tr.maxDepthCount++,Li+pa):Math.abs(pa)>1;do Dt[Li]>zr?di=Li:Xr=Li,Li=Xr+di>>1;while(Li>Xr);var Ci=Dt[Li+1]-Dt[Li];return Ci&&(Ci=(zr-Dt[Li+1])/Ci),(Li+1+Ci)/et}var mr=2*tr(1)/k*He/Pe,Rr=function(zr,Xr){var di=tr(n(x(Xr))),Li=Oe(di)*zr;return di/=mr,[Li,Xr>=0?di:-di]};return Rr.invert=function(zr,Xr){var di;return Xr*=mr,n(Xr)<1&&(di=v(Xr)*q(Je(n(Xr))*He)),[zr/Oe(n(Xr)),di]},Rr}function ko(){var he=0,be=2.5,Pe=1.183136,Oe=t.geoProjectionMutator(Zn),Je=Oe(he,be,Pe);return Je.alpha=function(He){return arguments.length?Oe(he=+He,be,Pe):he},Je.k=function(He){return arguments.length?Oe(he,be=+He,Pe):be},Je.gamma=function(He){return arguments.length?Oe(he,be,Pe=+He):Pe},Je.scale(152.63)}function Co(he,be){return n(he[0]-be[0])=0;--Dt)Pe=he[1][Dt],Oe=Pe[0][0],Je=Pe[0][1],He=Pe[1][1],et=Pe[2][0],Mt=Pe[2][1],be.push(Tl([[et-p,Mt-p],[et-p,He+p],[Oe+p,He+p],[Oe+p,Je-p]],30));return{type:"Polygon",coordinates:[r.merge(be)]}}function So(he,be,Pe){var Oe,Je;function He(Dt,Ut){for(var tr=Ut<0?-1:1,mr=be[+(Ut<0)],Rr=0,zr=mr.length-1;Rrmr[Rr][2][0];++Rr);var Xr=he(Dt-mr[Rr][1][0],Ut);return Xr[0]+=he(mr[Rr][1][0],tr*Ut>tr*mr[Rr][0][1]?mr[Rr][0][1]:Ut)[0],Xr}Pe?He.invert=Pe(He):he.invert&&(He.invert=function(Dt,Ut){for(var tr=Je[+(Ut<0)],mr=be[+(Ut<0)],Rr=0,zr=tr.length;RrXr&&(di=zr,zr=Xr,Xr=di),[[mr,zr],[Rr,Xr]]})}),et):be.map(function(Ut){return Ut.map(function(tr){return[[tr[0][0]*P,tr[0][1]*P],[tr[1][0]*P,tr[1][1]*P],[tr[2][0]*P,tr[2][1]*P]]})})},be!=null&&et.lobes(be),et}var cf=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function rh(){return So(xt,cf).scale(160.857)}var Al=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Hc(){return So(Rl,Al).scale(152.63)}var eu=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Ls(){return So(Yt,eu).scale(169.529)}var mu=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function kc(){return So(Yt,mu).scale(169.529).rotate([20,0])}var Of=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Gc(){return So(fa,Of,rt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var vd=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function Bf(){return So(St,vd).scale(152.63).rotate([-20,0])}function ss(he,be){return[3/g*he*H(k*k/3-be*be),be]}ss.invert=function(he,be){return[g/3*he/H(k*k/3-be*be),be]};function ff(){return t.geoProjection(ss).scale(158.837)}function ih(he){function be(Pe,Oe){if(n(n(Oe)-A)2)return null;Pe/=2,Oe/=2;var He=Pe*Pe,et=Oe*Oe,Mt=2*Oe/(1+He+et);return Mt=h((1+Mt)/(1-Mt),1/he),[a(2*Pe,1-He-et)/he,q((Mt-1)/(Mt+1))]},be}function Vl(){var he=.5,be=t.geoProjectionMutator(ih),Pe=be(he);return Pe.spacing=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(124.75)}var Js=k/C;function hc(he,be){return[he*(1+H(o(be)))/2,be/(o(be/2)*o(he/6))]}hc.invert=function(he,be){var Pe=n(he),Oe=n(be),Je=p,He=A;Oep||n(Li)>p)&&--Je>0);return Je&&[Pe,Oe]};function $s(){return t.geoProjection(ws).scale(139.98)}function hs(he,be){return[x(he)/o(be),b(be)*o(he)]}hs.invert=function(he,be){var Pe=he*he,Oe=be*be,Je=Oe+1,He=Pe+Je,et=he?_*H((He-H(He*He-4*Pe))/Pe):1/H(Je);return[q(he*et),v(be)*V(et)]};function Ms(){return t.geoProjection(hs).scale(144.049).clipAngle(90-.001)}function dc(he){var be=o(he),Pe=b(L+he/2);function Oe(Je,He){var et=He-he,Mt=n(et)=0;)tr=he[Ut],mr=tr[0]+Mt*(zr=mr)-Dt*Rr,Rr=tr[1]+Mt*Rr+Dt*zr;return mr=Mt*(zr=mr)-Dt*Rr,Rr=Mt*Rr+Dt*zr,[mr,Rr]}return Pe.invert=function(Oe,Je){var He=20,et=Oe,Mt=Je;do{for(var Dt=be,Ut=he[Dt],tr=Ut[0],mr=Ut[1],Rr=0,zr=0,Xr;--Dt>=0;)Ut=he[Dt],Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=Ut[0]+et*(Xr=tr)-Mt*mr,mr=Ut[1]+et*mr+Mt*Xr;Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=et*(Xr=tr)-Mt*mr-Oe,mr=et*mr+Mt*Xr-Je;var di=Rr*Rr+zr*zr,Li,Ci;et-=Li=(tr*Rr+mr*zr)/di,Mt-=Ci=(mr*Rr-tr*zr)/di}while(n(Li)+n(Ci)>p*p&&--He>0);if(He){var Qi=H(et*et+Mt*Mt),Mn=2*i(Qi*.5),pa=x(Mn);return[a(et*pa,Qi*o(Mn)),Qi?q(Mt*pa/Qi):0]}},Pe}var wo=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Od=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],$o=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Ja=[[.9245,0],[0,0],[.01943,0]],Ef=[[.721316,0],[0,0],[-.00881625,-.00617325]];function tc(){return Ml(wo,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function uu(){return Ml(Od,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Mh(){return Ml($o,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function jc(){return Ml(Ja,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function kf(){return Ml(Ef,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Ml(he,be){var Pe=t.geoProjection(ov(he)).rotate(be).clipAngle(90),Oe=t.geoRotation(be),Je=Pe.center;return delete Pe.rotate,Pe.center=function(He){return arguments.length?Je(Oe(He)):Oe.invert(Je())},Pe}var Yh=H(6),Eh=H(7);function nh(he,be){var Pe=q(7*x(be)/(3*Yh));return[Yh*he*(2*o(2*Pe/3)-1)/Eh,9*x(Pe/3)/Eh]}nh.invert=function(he,be){var Pe=3*q(be*Eh/9);return[he*Eh/(Yh*(2*o(2*Pe/3)-1)),q(x(Pe)*3*Yh/7)]};function hf(){return t.geoProjection(nh).scale(164.859)}function kh(he,be){for(var Pe=(1+_)*x(be),Oe=be,Je=0,He;Je<25&&(Oe-=He=(x(Oe/2)+x(Oe)-Pe)/(.5*o(Oe/2)+o(Oe)),!(n(He)E&&--Oe>0);return He=Pe*Pe,et=He*He,Mt=He*et,[he/(.84719-.13063*He+Mt*Mt*(-.04515+.05494*He-.02326*et+.00331*Mt)),Pe]};function df(){return t.geoProjection(Wc).scale(175.295)}function Cu(he,be){return[he*(1+o(be))/2,2*(be-b(be/2))]}Cu.invert=function(he,be){for(var Pe=be/2,Oe=0,Je=1/0;Oe<10&&n(Je)>p;++Oe){var He=o(be/2);be-=Je=(be-b(be/2)-Pe)/(1-.5/(He*He))}return[2*he/(1+o(be)),be]};function Nf(){return t.geoProjection(Cu).scale(152.63)}var Zc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function ds(){return So(Ge(1/0),Zc).rotate([20,0]).scale(152.63)}function Ch(he,be){var Pe=x(be),Oe=o(be),Je=v(he);if(he===0||n(be)===A)return[0,be];if(be===0)return[he,0];if(n(he)===A)return[he*Oe,A*Pe];var He=k/(2*he)-2*he/k,et=2*be/k,Mt=(1-et*et)/(Pe-et),Dt=He*He,Ut=Mt*Mt,tr=1+Dt/Ut,mr=1+Ut/Dt,Rr=(He*Pe/Mt-He/2)/tr,zr=(Ut*Pe/Dt+Mt/2)/mr,Xr=Rr*Rr+Oe*Oe/tr,di=zr*zr-(Ut*Pe*Pe/Dt+Mt*Pe-1)/mr;return[A*(Rr+H(Xr)*Je),A*(zr+H(di<0?0:di)*v(-be*He)*Je)]}Ch.invert=function(he,be){he/=A,be/=A;var Pe=he*he,Oe=be*be,Je=Pe+Oe,He=k*k;return[he?(Je-1+H((1-Je)*(1-Je)+4*Pe))/(2*he)*A:0,qt(function(et){return Je*(k*x(et)-2*et)*k+4*et*et*(be-x(et))+2*k*et-He*be},0)]};function Bd(){return t.geoProjection(Ch).scale(127.267)}var Jh=1.0148,Cf=.23185,pd=-.14499,Lu=.02406,$h=Jh,tu=5*Cf,Pu=7*pd,Lc=9*Lu,fl=1.790857183;function Xc(he,be){var Pe=be*be;return[he,be*(Jh+Pe*Pe*(Cf+Pe*(pd+Lu*Pe)))]}Xc.invert=function(he,be){be>fl?be=fl:be<-fl&&(be=-fl);var Pe=be,Oe;do{var Je=Pe*Pe;Pe-=Oe=(Pe*(Jh+Je*Je*(Cf+Je*(pd+Lu*Je)))-be)/($h+Je*Je*(tu+Je*(Pu+Lc*Je)))}while(n(Oe)>p);return[he,Pe]};function ic(){return t.geoProjection(Xc).scale(139.319)}function yu(he,be){if(n(be)p&&--Je>0);return et=b(Oe),[(n(be)=0;)if(Oe=be[Mt],Pe[0]===Oe[0]&&Pe[1]===Oe[1]){if(He)return[He,Pe];He=Pe}}}function ru(he){for(var be=he.length,Pe=[],Oe=he[be-1],Je=0;Je0?[-Oe[0],0]:[180-Oe[0],180])};var be=sh.map(function(Pe){return{face:Pe,project:he(Pe)}});return[-1,0,0,1,0,1,4,5].forEach(function(Pe,Oe){var Je=be[Pe];Je&&(Je.children||(Je.children=[])).push(be[Oe])}),Lf(be[0],function(Pe,Oe){return be[Pe<-k/2?Oe<0?6:4:Pe<0?Oe<0?2:0:PeOe^zr>Oe&&Pe<(Rr-Ut)*(Oe-tr)/(zr-tr)+Ut&&(Je=!Je)}return Je}function Dl(he,be){var Pe=be.stream,Oe;if(!Pe)throw new Error("invalid projection");switch(he&&he.type){case"Feature":Oe=Wu;break;case"FeatureCollection":Oe=Ih;break;default:Oe=gc;break}return Oe(he,Pe)}function Ih(he,be){return{type:"FeatureCollection",features:he.features.map(function(Pe){return Wu(Pe,be)})}}function Wu(he,be){return{type:"Feature",id:he.id,properties:he.properties,geometry:gc(he.geometry,be)}}function Rc(he,be){return{type:"GeometryCollection",geometries:he.geometries.map(function(Pe){return gc(Pe,be)})}}function gc(he,be){if(!he)return null;if(he.type==="GeometryCollection")return Rc(he,be);var Pe;switch(he.type){case"Point":Pe=mc;break;case"MultiPoint":Pe=mc;break;case"LineString":Pe=Yc;break;case"MultiLineString":Pe=Yc;break;case"Polygon":Pe=nc;break;case"MultiPolygon":Pe=nc;break;case"Sphere":Pe=nc;break;default:return null}return t.geoStream(he,be(Pe)),Pe.result()}var hl=[],iu=[],mc={point:function(he,be){hl.push([he,be])},result:function(){var he=hl.length?hl.length<2?{type:"Point",coordinates:hl[0]}:{type:"MultiPoint",coordinates:hl}:null;return hl=[],he}},Yc={lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){hl.length&&(iu.push(hl),hl=[])},result:function(){var he=iu.length?iu.length<2?{type:"LineString",coordinates:iu[0]}:{type:"MultiLineString",coordinates:iu}:null;return iu=[],he}},nc={polygonStart:pc,lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){var he=hl.length;if(he){do hl.push(hl[0].slice());while(++he<4);iu.push(hl),hl=[]}},polygonEnd:pc,result:function(){if(!iu.length)return null;var he=[],be=[];return iu.forEach(function(Pe){pf(Pe)?he.push([Pe]):be.push(Pe)}),be.forEach(function(Pe){var Oe=Pe[0];he.some(function(Je){if(Ph(Je[0],Oe))return Je.push(Pe),!0})||he.push([Pe])}),iu=[],he.length?he.length>1?{type:"MultiPolygon",coordinates:he}:{type:"Polygon",coordinates:he[0]}:null}};function gf(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=n(Oe)0?Oe-k:Oe+k,Je),Mt=(et[0]-et[1])*_,Dt=(et[0]+et[1])*_;if(He)return[Mt,Dt];var Ut=be*_,tr=Mt>0^Dt>0?-1:1;return[tr*Mt-v(Dt)*Ut,tr*Dt-v(Mt)*Ut]}return he.invert&&(Pe.invert=function(Oe,Je){var He=(Oe+Je)*_,et=(Je-Oe)*_,Mt=n(He)<.5*be&&n(et)<.5*be;if(!Mt){var Dt=be*_,Ut=He>0^et>0?-1:1,tr=-Ut*Oe+(et>0?1:-1)*Dt,mr=-Ut*Je+(He>0?1:-1)*Dt;He=(-tr-mr)*_,et=(tr-mr)*_}var Rr=he.invert(He,et);return Mt||(Rr[0]+=He>0?k:-k),Rr}),t.geoProjection(Pe).rotate([-90,-90,45]).clipAngle(180-.001)}function gt(){return gf(hi).scale(176.423)}function Bt(){return gf(Mo).scale(111.48)}function wr(he,be){if(!(0<=(be=+be)&&be<=20))throw new Error("invalid digits");function Pe(Ut){var tr=Ut.length,mr=2,Rr=new Array(tr);for(Rr[0]=+Ut[0].toFixed(be),Rr[1]=+Ut[1].toFixed(be);mr2||zr[0]!=tr[0]||zr[1]!=tr[1])&&(mr.push(zr),tr=zr)}return mr.length===1&&Ut.length>1&&mr.push(Pe(Ut[Ut.length-1])),mr}function He(Ut){return Ut.map(Je)}function et(Ut){if(Ut==null)return Ut;var tr;switch(Ut.type){case"GeometryCollection":tr={type:"GeometryCollection",geometries:Ut.geometries.map(et)};break;case"Point":tr={type:"Point",coordinates:Pe(Ut.coordinates)};break;case"MultiPoint":tr={type:Ut.type,coordinates:Oe(Ut.coordinates)};break;case"LineString":tr={type:Ut.type,coordinates:Je(Ut.coordinates)};break;case"MultiLineString":case"Polygon":tr={type:Ut.type,coordinates:He(Ut.coordinates)};break;case"MultiPolygon":tr={type:"MultiPolygon",coordinates:Ut.coordinates.map(He)};break;default:return Ut}return Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}function Mt(Ut){var tr={type:"Feature",properties:Ut.properties,geometry:et(Ut.geometry)};return Ut.id!=null&&(tr.id=Ut.id),Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}if(he!=null)switch(he.type){case"Feature":return Mt(he);case"FeatureCollection":{var Dt={type:"FeatureCollection",features:he.features.map(Mt)};return he.bbox!=null&&(Dt.bbox=he.bbox),Dt}default:return et(he)}return he}function vr(he){var be=x(he);function Pe(Oe,Je){var He=be?b(Oe*be/2)/be:Oe/2;if(!Je)return[2*He,-he];var et=2*i(He*x(Je)),Mt=1/b(Je);return[x(et)*Mt,Je+(1-o(et))*Mt-he]}return Pe.invert=function(Oe,Je){if(n(Je+=he)p&&--Mt>0);var Rr=Oe*(Ut=b(et)),zr=b(n(Je)0?A:-A)*(Dt+Je*(tr-et)/2+Je*Je*(tr-2*Dt+et)/2)]}xi.invert=function(he,be){var Pe=be/A,Oe=Pe*90,Je=f(18,n(Oe/5)),He=c(0,l(Je));do{var et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Ut=Dt-et,tr=Dt-2*Mt+et,mr=2*(n(Pe)-Mt)/Ut,Rr=tr/Ut,zr=mr*(1-Rr*mr*(1-2*Rr*mr));if(zr>=0||He===1){Oe=(be>=0?5:-5)*(zr+Je);var Xr=50,di;do Je=f(18,n(Oe)/5),He=l(Je),zr=Je-He,et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Oe-=(di=(be>=0?A:-A)*(Mt+zr*(Dt-et)/2+zr*zr*(Dt-2*Mt+et)/2)-be)*P;while(n(di)>E&&--Xr>0);break}}while(--He>=0);var Li=fi[He][0],Ci=fi[He+1][0],Qi=fi[f(19,He+2)][0];return[he/(Ci+zr*(Qi-Li)/2+zr*zr*(Qi-2*Ci+Li)/2),Oe*T]};function Fi(){return t.geoProjection(xi).scale(152.63)}function Xi(he){function be(Pe,Oe){var Je=o(Oe),He=(he-1)/(he-Je*o(Pe));return[He*Je*x(Pe),He*x(Oe)]}return be.invert=function(Pe,Oe){var Je=Pe*Pe+Oe*Oe,He=H(Je),et=(he-H(1-Je*(he+1)/(he-1)))/((he-1)/He+He/(he-1));return[a(Pe*et,He*H(1-et*et)),He?q(Oe*et/He):0]},be}function hn(he,be){var Pe=Xi(he);if(!be)return Pe;var Oe=o(be),Je=x(be);function He(et,Mt){var Dt=Pe(et,Mt),Ut=Dt[1],tr=Ut*Je/(he-1)+Oe;return[Dt[0]*Oe/tr,Ut/tr]}return He.invert=function(et,Mt){var Dt=(he-1)/(he-1-Mt*Je);return Pe.invert(Dt*et,Dt*Mt*Oe)},He}function Ti(){var he=2,be=0,Pe=t.geoProjectionMutator(hn),Oe=Pe(he,be);return Oe.distance=function(Je){return arguments.length?Pe(he=+Je,be):he},Oe.tilt=function(Je){return arguments.length?Pe(he,be=Je*T):be*P},Oe.scale(432.147).clipAngle(V(1/he)*P-1e-6)}var qi=1e-4,Ii=1e4,mi=-180,Pn=mi+qi,Ma=180,Ta=Ma-qi,Ea=-90,qa=Ea+qi,Cn=90,sn=Cn-qi;function Ua(he){return he.length>0}function mo(he){return Math.floor(he*Ii)/Ii}function Xo(he){return he===Ea||he===Cn?[0,he]:[mi,mo(he)]}function Ts(he){var be=he[0],Pe=he[1],Oe=!1;return be<=Pn?(be=mi,Oe=!0):be>=Ta&&(be=Ma,Oe=!0),Pe<=qa?(Pe=Ea,Oe=!0):Pe>=sn&&(Pe=Cn,Oe=!0),Oe?[be,Pe]:he}function Qo(he){return he.map(Ts)}function ys(he,be,Pe){for(var Oe=0,Je=he.length;Oe=Ta||tr<=qa||tr>=sn){He[et]=Ts(Dt);for(var mr=et+1;mrPn&&zrqa&&Xr=Mt)break;Pe.push({index:-1,polygon:be,ring:He=He.slice(mr-1)}),He[0]=Xo(He[0][1]),et=-1,Mt=He.length}}}}function Bo(he){var be,Pe=he.length,Oe={},Je={},He,et,Mt,Dt,Ut;for(be=0;be0?k-Mt:Mt)*P],Ut=t.geoProjection(he(et)).rotate(Dt),tr=t.geoRotation(Dt),mr=Ut.center;return delete Ut.rotate,Ut.center=function(Rr){return arguments.length?mr(tr(Rr)):tr.invert(mr())},Ut.clipAngle(90)}function Ko(he){var be=o(he);function Pe(Oe,Je){var He=t.geoGnomonicRaw(Oe,Je);return He[0]*=be,He}return Pe.invert=function(Oe,Je){return t.geoGnomonicRaw.invert(Oe/be,Je)},Pe}function nu(){return Ru([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Ru(he,be){return vs(Ko,he,be)}function ac(he){if(!(he*=2))return t.geoAzimuthalEquidistantRaw;var be=-he/2,Pe=-be,Oe=he*he,Je=b(Pe),He=.5/x(Pe);function et(Mt,Dt){var Ut=V(o(Dt)*o(Mt-be)),tr=V(o(Dt)*o(Mt-Pe)),mr=Dt<0?-1:1;return Ut*=Ut,tr*=tr,[(Ut-tr)/(2*he),mr*H(4*Oe*tr-(Oe-Ut+tr)*(Oe-Ut+tr))/(2*he)]}return et.invert=function(Mt,Dt){var Ut=Dt*Dt,tr=o(H(Ut+(Rr=Mt+be)*Rr)),mr=o(H(Ut+(Rr=Mt+Pe)*Rr)),Rr,zr;return[a(zr=tr-mr,Rr=(tr+mr)*Je),(Dt<0?-1:1)*V(H(Rr*Rr+zr*zr)*He)]},et}function mf(){return bu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function bu(he,be){return vs(ac,he,be)}function Kc(he,be){if(n(be)p&&--Mt>0);return[v(he)*(H(Je*Je+4)+Je)*k/4,A*et]};function _c(){return t.geoProjection(yc).scale(127.16)}function le(he,be,Pe,Oe,Je){function He(et,Mt){var Dt=Pe*x(Oe*Mt),Ut=H(1-Dt*Dt),tr=H(2/(1+Ut*o(et*=Je)));return[he*Ut*tr*x(et),be*Dt*tr]}return He.invert=function(et,Mt){var Dt=et/he,Ut=Mt/be,tr=H(Dt*Dt+Ut*Ut),mr=2*q(tr/2);return[a(et*b(mr),he*tr)/Je,tr&&q(Mt*x(mr)/(be*Pe*tr))/Oe]},He}function w(he,be,Pe,Oe){var Je=k/3;he=c(he,p),be=c(be,p),he=f(he,A),be=f(be,k-p),Pe=c(Pe,0),Pe=f(Pe,100-p),Oe=c(Oe,p);var He=Pe/100+1,et=Oe/100,Mt=V(He*o(Je))/Je,Dt=x(he)/x(Mt*A),Ut=be/k,tr=H(et*x(he/2)/x(be/2)),mr=tr/H(Ut*Dt*Mt),Rr=1/(tr*H(Ut*Dt*Mt));return le(mr,Rr,Dt,Mt,Ut)}function B(){var he=65*T,be=60*T,Pe=20,Oe=200,Je=t.geoProjectionMutator(w),He=Je(he,be,Pe,Oe);return He.poleline=function(et){return arguments.length?Je(he=+et*T,be,Pe,Oe):he*P},He.parallels=function(et){return arguments.length?Je(he,be=+et*T,Pe,Oe):be*P},He.inflation=function(et){return arguments.length?Je(he,be,Pe=+et,Oe):Pe},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(163.775)}function Q(){return B().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var ee=4*k+3*H(3),se=2*H(2*k*H(3)/ee),qe=Ct(se*H(3)/k,se,ee/6);function je(){return t.geoProjection(qe).scale(176.84)}function it(he,be){return[he*H(1-3*be*be/(k*k)),be]}it.invert=function(he,be){return[he/H(1-3*be*be/(k*k)),be]};function yt(){return t.geoProjection(it).scale(152.63)}function Ot(he,be){var Pe=o(be),Oe=o(he)*Pe,Je=1-Oe,He=o(he=a(x(he)*Pe,-x(be))),et=x(he);return Pe=H(1-Oe*Oe),[et*Pe-He*Je,-He*Pe-et*Je]}Ot.invert=function(he,be){var Pe=(he*he+be*be)/-2,Oe=H(-Pe*(2+Pe)),Je=be*Pe+he*Oe,He=he*Pe-be*Oe,et=H(He*He+Je*Je);return[a(Oe*Je,et*(1+Pe)),et?-q(Oe*He/et):0]};function Nt(){return t.geoProjection(Ot).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function hr(he,be){var Pe=Me(he,be);return[(Pe[0]+he/A)/2,(Pe[1]+be)/2]}hr.invert=function(he,be){var Pe=he,Oe=be,Je=25;do{var He=o(Oe),et=x(Oe),Mt=x(2*Oe),Dt=et*et,Ut=He*He,tr=x(Pe),mr=o(Pe/2),Rr=x(Pe/2),zr=Rr*Rr,Xr=1-Ut*mr*mr,di=Xr?V(He*mr)*H(Li=1/Xr):Li=0,Li,Ci=.5*(2*di*He*Rr+Pe/A)-he,Qi=.5*(di*et+Oe)-be,Mn=.5*Li*(Ut*zr+di*He*mr*Dt)+.5/A,pa=Li*(tr*Mt/4-di*et*Rr),ea=.125*Li*(Mt*Rr-di*et*Ut*tr),Ga=.5*Li*(Dt*mr+di*zr*He)+.5,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]};function Sr(){return t.geoProjection(hr).scale(158.837)}e.geoNaturalEarth=t.geoNaturalEarth1,e.geoNaturalEarthRaw=t.geoNaturalEarth1Raw,e.geoAiry=_e,e.geoAiryRaw=ae,e.geoAitoff=ke,e.geoAitoffRaw=Me,e.geoArmadillo=ie,e.geoArmadilloRaw=ge,e.geoAugust=Ee,e.geoAugustRaw=Te,e.geoBaker=me,e.geoBakerRaw=Ce,e.geoBerghaus=ce,e.geoBerghausRaw=Re,e.geoBertin1953=Rt,e.geoBertin1953Raw=ot,e.geoBoggs=bt,e.geoBoggsRaw=xt,e.geoBonne=Ht,e.geoBonneRaw=dt,e.geoBottomley=fr,e.geoBottomleyRaw=$t,e.geoBromley=Br,e.geoBromleyRaw=_r,e.geoChamberlin=Xe,e.geoChamberlinRaw=Ne,e.geoChamberlinAfrica=Ve,e.geoCollignon=Le,e.geoCollignonRaw=ht,e.geoCraig=Se,e.geoCraigRaw=xe,e.geoCraster=Vt,e.geoCrasterRaw=Gt,e.geoCylindricalEqualArea=Qr,e.geoCylindricalEqualAreaRaw=ar,e.geoCylindricalStereographic=jr,e.geoCylindricalStereographicRaw=ai,e.geoEckert1=bi,e.geoEckert1Raw=ri,e.geoEckert2=Wi,e.geoEckert2Raw=nn,e.geoEckert3=_n,e.geoEckert3Raw=Ni,e.geoEckert4=zn,e.geoEckert4Raw=$i,e.geoEckert5=It,e.geoEckert5Raw=Wn,e.geoEckert6=jt,e.geoEckert6Raw=ft,e.geoEisenlohr=Fr,e.geoEisenlohrRaw=yr,e.geoFahey=gi,e.geoFaheyRaw=Vr,e.geoFoucaut=Mi,e.geoFoucautRaw=Si,e.geoFoucautSinusoidal=Gi,e.geoFoucautSinusoidalRaw=Pi,e.geoGilbert=jn,e.geoGingery=jo,e.geoGingeryRaw=la,e.geoGinzburg4=Ha,e.geoGinzburg4Raw=Sn,e.geoGinzburg5=xn,e.geoGinzburg5Raw=oo,e.geoGinzburg6=br,e.geoGinzburg6Raw=_t,e.geoGinzburg8=ti,e.geoGinzburg8Raw=Hr,e.geoGinzburg9=Yi,e.geoGinzburg9Raw=zi,e.geoGringorten=Fn,e.geoGringortenRaw=hi,e.geoGuyou=ks,e.geoGuyouRaw=Mo,e.geoHammer=ct,e.geoHammerRaw=Ge,e.geoHammerRetroazimuthal=wl,e.geoHammerRetroazimuthalRaw=Zs,e.geoHealpix=Ql,e.geoHealpixRaw=ml,e.geoHill=fc,e.geoHillRaw=Hu,e.geoHomolosine=vo,e.geoHomolosineRaw=Rl,e.geoHufnagel=Ks,e.geoHufnagelRaw=Zl,e.geoHyperelliptical=ko,e.geoHyperellipticalRaw=Zn,e.geoInterrupt=So,e.geoInterruptedBoggs=rh,e.geoInterruptedHomolosine=Hc,e.geoInterruptedMollweide=Ls,e.geoInterruptedMollweideHemispheres=kc,e.geoInterruptedSinuMollweide=Gc,e.geoInterruptedSinusoidal=Bf,e.geoKavrayskiy7=ff,e.geoKavrayskiy7Raw=ss,e.geoLagrange=Vl,e.geoLagrangeRaw=ih,e.geoLarrivee=Cc,e.geoLarriveeRaw=hc,e.geoLaskowski=$s,e.geoLaskowskiRaw=ws,e.geoLittrow=Ms,e.geoLittrowRaw=hs,e.geoLoximuthal=Sl,e.geoLoximuthalRaw=dc,e.geoMiller=Ps,e.geoMillerRaw=ec,e.geoModifiedStereographic=Ml,e.geoModifiedStereographicRaw=ov,e.geoModifiedStereographicAlaska=tc,e.geoModifiedStereographicGs48=uu,e.geoModifiedStereographicGs50=Mh,e.geoModifiedStereographicMiller=jc,e.geoModifiedStereographicLee=kf,e.geoMollweide=xr,e.geoMollweideRaw=Yt,e.geoMtFlatPolarParabolic=hf,e.geoMtFlatPolarParabolicRaw=nh,e.geoMtFlatPolarQuartic=Kh,e.geoMtFlatPolarQuarticRaw=kh,e.geoMtFlatPolarSinusoidal=ah,e.geoMtFlatPolarSinusoidalRaw=rc,e.geoNaturalEarth2=df,e.geoNaturalEarth2Raw=Wc,e.geoNellHammer=Nf,e.geoNellHammerRaw=Cu,e.geoInterruptedQuarticAuthalic=ds,e.geoNicolosi=Bd,e.geoNicolosiRaw=Ch,e.geoPatterson=ic,e.geoPattersonRaw=Xc,e.geoPolyconic=Qs,e.geoPolyconicRaw=yu,e.geoPolyhedral=Lf,e.geoPolyhedralButterfly=Fs,e.geoPolyhedralCollignon=Lh,e.geoPolyhedralWaterman=Is,e.geoProject=Dl,e.geoGringortenQuincuncial=gt,e.geoPeirceQuincuncial=Bt,e.geoPierceQuincuncial=Bt,e.geoQuantize=wr,e.geoQuincuncial=gf,e.geoRectangularPolyconic=Ur,e.geoRectangularPolyconicRaw=vr,e.geoRobinson=Fi,e.geoRobinsonRaw=xi,e.geoSatellite=Ti,e.geoSatelliteRaw=hn,e.geoSinuMollweide=Qu,e.geoSinuMollweideRaw=fa,e.geoSinusoidal=Et,e.geoSinusoidalRaw=St,e.geoStitch=Rs,e.geoTimes=Ka,e.geoTimesRaw=ia,e.geoTwoPointAzimuthal=Ru,e.geoTwoPointAzimuthalRaw=Ko,e.geoTwoPointAzimuthalUsa=nu,e.geoTwoPointEquidistant=bu,e.geoTwoPointEquidistantRaw=ac,e.geoTwoPointEquidistantUsa=mf,e.geoVanDerGrinten=Du,e.geoVanDerGrintenRaw=Kc,e.geoVanDerGrinten2=Da,e.geoVanDerGrinten2Raw=Dc,e.geoVanDerGrinten3=Jc,e.geoVanDerGrinten3Raw=eo,e.geoVanDerGrinten4=_c,e.geoVanDerGrinten4Raw=yc,e.geoWagner=B,e.geoWagner7=Q,e.geoWagnerRaw=w,e.geoWagner4=je,e.geoWagner4Raw=qe,e.geoWagner6=yt,e.geoWagner6Raw=it,e.geoWiechel=Nt,e.geoWiechelRaw=Ot,e.geoWinkel3=Sr,e.geoWinkel3Raw=hr,Object.defineProperty(e,"__esModule",{value:!0})})});var MRe=ye((Dpr,SRe)=>{"use strict";var Zh=xa(),bX=Mr(),CDt=ba(),Z5=Math.PI/180,G2=180/Math.PI,TX={cursor:"pointer"},AX={cursor:"auto"};function LDt(e,t){var r=e.projection,n;return t._isScoped?n=PDt:t._isClipped?n=RDt:n=IDt,n(e,r)}SRe.exports=LDt;function SX(e,t){return Zh.behavior.zoom().translate(t.translate()).scale(t.scale())}function MX(e,t,r){var n=e.id,i=e.graphDiv,a=i.layout,o=a[n],s=i._fullLayout,l=s[n],u={},c={};function f(h,d){u[n+"."+h]=bX.nestedProperty(o,h).get(),CDt.call("_storeDirectGUIEdit",a,s._preGUI,u);var v=bX.nestedProperty(l,h);v.get()!==d&&(v.set(d),bX.nestedProperty(o,h).set(d),c[n+"."+h]=d)}r(f),f("projection.scale",t.scale()/e.fitScale),f("fitbounds",!1),i.emit("plotly_relayout",c)}function PDt(e,t){var r=SX(e,t);function n(){Zh.select(this).style(TX)}function i(){t.scale(Zh.event.scale).translate(Zh.event.translate),e.render(!0);var s=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":s[0],"geo.center.lat":s[1]})}function a(s){var l=t.invert(e.midPt);s("center.lon",l[0]),s("center.lat",l[1])}function o(){Zh.select(this).style(AX),MX(e,t,a)}return r.on("zoomstart",n).on("zoom",i).on("zoomend",o),r}function IDt(e,t){var r=SX(e,t),n=2,i,a,o,s,l,u,c,f,h;function d(k){return t.invert(k)}function v(k){var A=d(k);if(!A)return!0;var L=t(A);return Math.abs(L[0]-k[0])>n||Math.abs(L[1]-k[1])>n}function x(){Zh.select(this).style(TX),i=Zh.mouse(this),a=t.rotate(),o=t.translate(),s=a,l=d(i)}function b(){if(u=Zh.mouse(this),v(i)){r.scale(t.scale()),r.translate(t.translate());return}t.scale(Zh.event.scale),t.translate([o[0],Zh.event.translate[1]]),l?d(u)&&(f=d(u),c=[s[0]+(f[0]-l[0]),a[1],a[2]],t.rotate(c),s=c):(i=u,l=d(i)),h=!0,e.render(!0);var k=t.rotate(),A=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":A[0],"geo.center.lat":A[1],"geo.projection.rotation.lon":-k[0]})}function p(){Zh.select(this).style(AX),h&&MX(e,t,E)}function E(k){var A=t.rotate(),L=t.invert(e.midPt);k("projection.rotation.lon",-A[0]),k("center.lon",L[0]),k("center.lat",L[1])}return r.on("zoomstart",x).on("zoom",b).on("zoomend",p),r}function RDt(e,t){var r={r:t.rotate(),k:t.scale()},n=SX(e,t),i=UDt(n,"zoomstart","zoom","zoomend"),a=0,o=n.on,s;n.on("zoomstart",function(){Zh.select(this).style(TX);var h=Zh.mouse(this),d=t.rotate(),v=d,x=t.translate(),b=DDt(d);s=Sz(t,h),o.call(n,"zoom",function(){var p=Zh.mouse(this);if(t.scale(r.k=Zh.event.scale),!s)h=p,s=Sz(t,h);else if(Sz(t,p)){t.rotate(d).translate(x);var E=Sz(t,p),k=FDt(s,E),A=ODt(zDt(b,k)),L=r.r=qDt(A,s,v);(!isFinite(L[0])||!isFinite(L[1])||!isFinite(L[2]))&&(L=v),t.rotate(L),v=L}u(i.of(this,arguments))}),l(i.of(this,arguments))}).on("zoomend",function(){Zh.select(this).style(AX),o.call(n,"zoom",null),c(i.of(this,arguments)),MX(e,t,f)}).on("zoom.redraw",function(){e.render(!0);var h=t.rotate();e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.projection.rotation.lon":-h[0],"geo.projection.rotation.lat":-h[1]})});function l(h){a++||h({type:"zoomstart"})}function u(h){h({type:"zoom"})}function c(h){--a||h({type:"zoomend"})}function f(h){var d=t.rotate();h("projection.rotation.lon",-d[0]),h("projection.rotation.lat",-d[1])}return Zh.rebind(n,i,"on")}function Sz(e,t){var r=e.invert(t);return r&&isFinite(r[0])&&isFinite(r[1])&&BDt(r)}function DDt(e){var t=.5*e[0]*Z5,r=.5*e[1]*Z5,n=.5*e[2]*Z5,i=Math.sin(t),a=Math.cos(t),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),u=Math.cos(n);return[a*s*u+i*o*l,i*s*u-a*o*l,a*o*u+i*s*l,a*s*l-i*o*u]}function zDt(e,t){var r=e[0],n=e[1],i=e[2],a=e[3],o=t[0],s=t[1],l=t[2],u=t[3];return[r*o-n*s-i*l-a*u,r*s+n*o+i*u-a*l,r*l-n*u+i*o+a*s,r*u+n*l-i*s+a*o]}function FDt(e,t){if(!(!e||!t)){var r=NDt(e,t),n=Math.sqrt(ARe(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,ARe(e,t)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function qDt(e,t,r){var n=wX(t,2,e[0]);n=wX(n,1,e[1]),n=wX(n,0,e[2]-r[2]);var i=t[0],a=t[1],o=t[2],s=n[0],l=n[1],u=n[2],c=Math.atan2(a,i)*G2,f=Math.sqrt(i*i+a*a),h,d;Math.abs(l)>f?(d=(l>0?90:-90)-c,h=0):(d=Math.asin(l/f)*G2-c,h=Math.sqrt(f*f-l*l));var v=180-d-2*c,x=(Math.atan2(u,s)-Math.atan2(o,h))*G2,b=(Math.atan2(u,s)-Math.atan2(o,-h))*G2,p=wRe(r[0],r[1],d,x),E=wRe(r[0],r[1],v,b);return p<=E?[d,x,r[2]]:[v,b,r[2]]}function wRe(e,t,r,n){var i=TRe(r-e),a=TRe(n-t);return Math.sqrt(i*i+a*a)}function TRe(e){return(e%360+540)%360-180}function wX(e,t,r){var n=r*Z5,i=e.slice(),a=t===0?1:0,o=t===2?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=e[a]*s-e[o]*l,i[o]=e[o]*s+e[a]*l,i}function ODt(e){return[Math.atan2(2*(e[0]*e[1]+e[2]*e[3]),1-2*(e[1]*e[1]+e[2]*e[2]))*G2,Math.asin(Math.max(-1,Math.min(1,2*(e[0]*e[2]-e[3]*e[1]))))*G2,Math.atan2(2*(e[0]*e[3]+e[1]*e[2]),1-2*(e[2]*e[2]+e[3]*e[3]))*G2]}function BDt(e){var t=e[0]*Z5,r=e[1]*Z5,n=Math.cos(r);return[n*Math.cos(t),n*Math.sin(t),Math.sin(r)]}function ARe(e,t){for(var r=0,n=0,i=e.length;n{"use strict";var t1=xa(),CX=xX(),VDt=CX.geoPath,HDt=CX.geoDistance,GDt=bRe(),jDt=ba(),ek=Mr(),WDt=ek.strTranslate,Mz=va(),QE=ao(),ERe=Nc(),ZDt=Xu(),kX=Qa(),kRe=wg().getAutoRange,EX=gv(),XDt=wf().prepSelect,YDt=wf().clearOutline,KDt=wf().selectOnClick,JDt=MRe(),fp=YE(),$Dt=nx(),LRe=cz(),QDt=aX().feature;function PRe(e){this.id=e.id,this.graphDiv=e.graphDiv,this.container=e.container,this.topojsonURL=e.topojsonURL,this.isStatic=e.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.scope=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}var $g=PRe.prototype;IRe.exports=function(t){return new PRe(t)};$g.plot=function(e,t,r,n){var i=this;if(n)return i.update(e,t,!0);i._geoCalcData=e,i._fullLayout=t;var a=t[this.id],o=[],s=!1;for(var l in fp.layerNameToAdjective)if(l!=="frame"&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,t)}if(!r){var s=this.updateProjection(e,t);if(s)return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(t,n),this.updateDims(t,n),this.updateFx(t,n),ZDt.generalUpdatePerTraceModule(this.graphDiv,this,e,n);var l=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=l.selectAll(".point"),this.dataPoints.text=l.selectAll("text"),this.dataPaths.line=l.selectAll(".js-line");var u=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=u.selectAll("path"),this._render()};$g.updateProjection=function(e,t){var r=this.graphDiv,n=t[this.id],i=t._size,a=n.domain,o=n.projection,s=n.lonaxis,l=n.lataxis,u=s._ax,c=l._ax,f=this.projection=ezt(n),h=[[i.l+i.w*a.x[0],i.t+i.h*(1-a.y[1])],[i.l+i.w*a.x[1],i.t+i.h*(1-a.y[0])]],d=n.center||{},v=o.rotation||{},x=s.range||[],b=l.range||[];if(n.fitbounds){u._length=h[1][0]-h[0][0],c._length=h[1][1]-h[0][1],u.range=kRe(r,u),c.range=kRe(r,c);var p=(u.range[0]+u.range[1])/2,E=(c.range[0]+c.range[1])/2;if(n._isScoped)d={lon:p,lat:E};else if(n._isClipped){d={lon:p,lat:E},v={lon:p,lat:E,roll:v.roll};var k=o.type,A=fp.lonaxisSpan[k]/2||180,L=fp.lataxisSpan[k]/2||90;x=[p-A,p+A],b=[E-L,E+L]}else d={lon:p,lat:E},v={lon:p,lat:v.lat,roll:v.roll}}f.center([d.lon-v.lon,d.lat-v.lat]).rotate([-v.lon,-v.lat,v.roll]).parallels(o.parallels);var _=CRe(x,b);f.fitExtent(h,_);var C=this.bounds=f.getBounds(_),M=this.fitScale=f.scale(),g=f.translate();if(n.fitbounds){var P=f.getBounds(CRe(u.range,c.range)),T=Math.min((C[1][0]-C[0][0])/(P[1][0]-P[0][0]),(C[1][1]-C[0][1])/(P[1][1]-P[0][1]));isFinite(T)?f.scale(T*M):ek.warn("Something went wrong during"+this.id+"fitbounds computations.")}else f.scale(o.scale*M);var F=this.midPt=[(C[0][0]+C[1][0])/2,(C[0][1]+C[1][1])/2];if(f.translate([g[0]+(F[0]-g[0]),g[1]+(F[1]-g[1])]).clipExtent(C),n._isAlbersUsa){var q=f([d.lon,d.lat]),V=f.translate();f.translate([V[0]-(q[0]-V[0]),V[1]-(q[1]-V[1])])}};$g.updateBaseLayers=function(e,t){var r=this,n=r.topojson,i=r.layers,a=r.basePaths;function o(h){return h==="lonaxis"||h==="lataxis"}function s(h){return!!fp.lineLayers[h]}function l(h){return!!fp.fillLayers[h]}var u=this.hasChoropleth?fp.layersForChoropleth:fp.layers,c=u.filter(function(h){return s(h)||l(h)?t["show"+h]:o(h)?t[h].showgrid:!0}),f=r.framework.selectAll(".layer").data(c,String);f.exit().each(function(h){delete i[h],delete a[h],t1.select(this).remove()}),f.enter().append("g").attr("class",function(h){return"layer "+h}).each(function(h){var d=i[h]=t1.select(this);h==="bg"?r.bgRect=d.append("rect").style("pointer-events","all"):o(h)?a[h]=d.append("path").style("fill","none"):h==="backplot"?d.append("g").classed("choroplethlayer",!0):h==="frontplot"?d.append("g").classed("scatterlayer",!0):s(h)?a[h]=d.append("path").style("fill","none").style("stroke-miterlimit",2):l(h)&&(a[h]=d.append("path").style("stroke","none"))}),f.order(),f.each(function(h){var d=a[h],v=fp.layerNameToAdjective[h];h==="frame"?d.datum(fp.sphereSVG):s(h)||l(h)?d.datum(QDt(n,n.objects[h])):o(h)&&d.datum(tzt(h,t,e)).call(Mz.stroke,t[h].gridcolor).call(QE.dashLine,t[h].griddash,t[h].gridwidth),s(h)?d.call(Mz.stroke,t[v+"color"]).call(QE.dashLine,"",t[v+"width"]):l(h)&&d.call(Mz.fill,t[v+"color"])})};$g.updateDims=function(e,t){var r=this.bounds,n=(t.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,o=r[1][0]-i+n,s=r[1][1]-a+n;QE.setRect(this.clipRect,i,a,o,s),this.bgRect.call(QE.setRect,i,a,o,s).call(Mz.fill,t.bgcolor),this.xaxis._offset=i,this.xaxis._length=o,this.yaxis._offset=a,this.yaxis._length=s};$g.updateFx=function(e,t){var r=this,n=r.graphDiv,i=r.bgRect,a=e.dragmode,o=e.clickmode;if(r.isStatic)return;function s(){var f=r.viewInitial,h={};for(var d in f)h[r.id+"."+d]=f[d];jDt.call("_guiRelayout",n,h),n.emit("plotly_doubleclick",null)}function l(f){return r.projection.invert([f[0]+r.xaxis._offset,f[1]+r.yaxis._offset])}var u=function(f,h){if(h.isRect){var d=f.range={};d[r.id]=[l([h.xmin,h.ymin]),l([h.xmax,h.ymax])]}else{var v=f.lassoPoints={};v[r.id]=h.map(l)}},c={element:r.bgRect.node(),gd:n,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(f){f===2&&YDt(n)}};a==="pan"?(i.node().onmousedown=null,i.call(JDt(r,t)),i.on("dblclick.zoom",s),n._context._scrollZoom.geo||i.on("wheel.zoom",null)):(a==="select"||a==="lasso")&&(i.on(".zoom",null),c.prepFn=function(f,h,d){XDt(f,h,d,c,a)},EX.init(c)),i.on("mousemove",function(){var f=r.projection.invert(ek.getPositionFromD3Event());if(!f)return EX.unhover(n,t1.event);r.xaxis.p2c=function(){return f[0]},r.yaxis.p2c=function(){return f[1]},ERe.hover(n,t1.event,r.id)}),i.on("mouseout",function(){n._dragging||EX.unhover(n,t1.event)}),i.on("click",function(){a!=="select"&&a!=="lasso"&&(o.indexOf("select")>-1&&KDt(t1.event,n,[r.xaxis],[r.yaxis],r.id,c),o.indexOf("event")>-1&&ERe.click(n,t1.event))})};$g.makeFramework=function(){var e=this,t=e.graphDiv,r=t._fullLayout,n="clip"+r._uid+e.id;e.clipDef=r._clips.append("clipPath").attr("id",n),e.clipRect=e.clipDef.append("rect"),e.framework=t1.select(e.container).append("g").attr("class","geo "+e.id).call(QE.setClipUrl,n,t),e.project=function(i){var a=e.projection(i);return a?[a[0]-e.xaxis._offset,a[1]-e.yaxis._offset]:[null,null]},e.xaxis={_id:"x",c2p:function(i){return e.project(i)[0]}},e.yaxis={_id:"y",c2p:function(i){return e.project(i)[1]}},e.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},kX.setConvert(e.mockAxis,r)};$g.saveViewInitial=function(e){var t=e.center||{},r=e.projection,n=r.rotation||{};this.viewInitial={fitbounds:e.fitbounds,"projection.scale":r.scale};var i;e._isScoped?i={"center.lon":t.lon,"center.lat":t.lat}:e._isClipped?i={"projection.rotation.lon":n.lon,"projection.rotation.lat":n.lat}:i={"center.lon":t.lon,"center.lat":t.lat,"projection.rotation.lon":n.lon},ek.extendFlat(this.viewInitial,i)};$g.render=function(e){this._hasMarkerAngles&&e?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()};$g._render=function(){var e=this.projection,t=e.getPath(),r;function n(a){var o=e(a.lonlat);return o?WDt(o[0],o[1]):null}function i(a){return e.isLonLatOverEdges(a.lonlat)?"none":null}for(r in this.basePaths)this.basePaths[r].attr("d",t);for(r in this.dataPaths)this.dataPaths[r].attr("d",function(a){return t(a.geojson)});for(r in this.dataPoints)this.dataPoints[r].attr("display",i).attr("transform",n)};function ezt(e){var t=e.projection,r=t.type,n=fp.projNames[r];n="geo"+ek.titleCase(n);for(var i=CX[n]||GDt[n],a=i(),o=e._isSatellite?Math.acos(1/t.distance)*180/Math.PI:e._isClipped?fp.lonaxisSpan[r]/2:null,s=["center","rotate","parallels","clipExtent"],l=function(f){return f?a:[]},u=0;uv}else return!1},a.getPath=function(){return VDt().projection(a)},a.getBounds=function(f){return a.getPath().bounds(f)},a.precision(fp.precision),e._isSatellite&&a.tilt(t.tilt).distance(t.distance),o&&a.clipAngle(o-fp.clipPad),a}function tzt(e,t,r){var n=1e-6,i=2.5,a=t[e],o=fp.scopeDefaults[t.scope],s,l,u;e==="lonaxis"?(s=o.lonaxisRange,l=o.lataxisRange,u=function(E,k){return[E,k]}):e==="lataxis"&&(s=o.lataxisRange,l=o.lonaxisRange,u=function(E,k){return[k,E]});var c={type:"linear",range:[s[0],s[1]-n],tick0:a.tick0,dtick:a.dtick};kX.setConvert(c,r);var f=kX.calcTicks(c);!t.isScoped&&e==="lonaxis"&&f.pop();for(var h=f.length,d=new Array(h),v=0;v0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}});var LX=ye((Fpr,FRe)=>{"use strict";var Y5=dh(),rzt=Ju().attributes,izt=Ed().dash,X5=YE(),nzt=Bu().overrideAll,DRe=Y1(),zRe={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:Y5.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:izt},azt=FRe.exports=nzt({domain:rzt({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:DRe(X5.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:DRe(X5.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:Y5.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:X5.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:X5.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:X5.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:X5.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:Y5.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:Y5.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:Y5.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:Y5.background},lonaxis:zRe,lataxis:zRe},"plot","from-root");azt.uirevision={valType:"any",editType:"none"}});var BRe=ye((qpr,ORe)=>{"use strict";var Ez=Mr(),ozt=C_(),szt=kd().getSubplotData,kz=YE(),lzt=LX(),qRe=kz.axesNames;ORe.exports=function(t,r,n){ozt(t,r,n,{type:"geo",attributes:lzt,handleDefaults:uzt,fullData:n,partition:"y"})};function uzt(e,t,r,n){var i=szt(n.fullData,"geo",n.id),a=i.map(function(ae){return ae.index}),o=r("resolution"),s=r("scope"),l=kz.scopeDefaults[s],u=r("projection.type",l.projType),c=t._isAlbersUsa=u==="albers usa";c&&(s=t.scope="usa");var f=t._isScoped=s!=="world",h=t._isSatellite=u==="satellite",d=t._isConic=u.indexOf("conic")!==-1||u==="albers",v=t._isClipped=!!kz.lonaxisSpan[u];if(e.visible===!1){var x=Ez.extendDeep({},t._template);x.showcoastlines=!1,x.showcountries=!1,x.showframe=!1,x.showlakes=!1,x.showland=!1,x.showocean=!1,x.showrivers=!1,x.showsubunits=!1,x.lonaxis&&(x.lonaxis.showgrid=!1),x.lataxis&&(x.lataxis.showgrid=!1),t._template=x}for(var b=r("visible"),p,E=0;E0&&q<0&&(q+=360);var V=(F+q)/2,H;if(!c){var X=f?l.projRotate:[V,0,0];H=r("projection.rotation.lon",X[0]),r("projection.rotation.lat",X[1]),r("projection.rotation.roll",X[2]),p=r("showcoastlines",!f&&b),p&&(r("coastlinecolor"),r("coastlinewidth")),p=r("showocean",b?void 0:!1),p&&r("oceancolor")}var G,N;if(c?(G=-96.6,N=38.7):(G=f?V:H,N=(T[0]+T[1])/2),r("center.lon",G),r("center.lat",N),h&&(r("projection.tilt"),r("projection.distance")),d){var W=l.projParallels||[0,60];r("projection.parallels",W)}r("projection.scale"),p=r("showland",b?void 0:!1),p&&r("landcolor"),p=r("showlakes",b?void 0:!1),p&&r("lakecolor"),p=r("showrivers",b?void 0:!1),p&&(r("rivercolor"),r("riverwidth")),p=r("showcountries",f&&s!=="usa"&&b),p&&(r("countrycolor"),r("countrywidth")),(s==="usa"||s==="north america"&&o===50)&&(r("showsubunits",b),r("subunitcolor"),r("subunitwidth")),f||(p=r("showframe",b),p&&(r("framecolor"),r("framewidth"))),r("bgcolor");var re=r("fitbounds");re&&(delete t.projection.scale,f?(delete t.center.lon,delete t.center.lat):v?(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon,delete t.projection.rotation.lat,delete t.lonaxis.range,delete t.lataxis.range):(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon))}});var PX=ye((Opr,VRe)=>{"use strict";var czt=kd().getSubplotCalcData,fzt=Mr().counterRegex,hzt=RRe(),Wm="geo",NRe=fzt(Wm),URe={};URe[Wm]={valType:"subplotid",dflt:Wm,editType:"calc"};function dzt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Wm],i=0;i{"use strict";HRe.exports={attributes:H2(),supplyDefaults:A8e(),colorbar:Kd(),formatLabels:E8e(),calc:lz(),calcGeoJSON:_X().calcGeoJSON,plot:_X().plot,style:pX(),styleOnSelect:op().styleOnSelect,hoverPoints:hRe(),eventData:vRe(),selectPoints:mRe(),moduleType:"trace",name:"scattergeo",basePlotModule:PX(),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}});var WRe=ye((Npr,jRe)=>{"use strict";jRe.exports=GRe()});var K5=ye((Upr,YRe)=>{"use strict";var gzt=Wo().hovertemplateAttrs,ox=H2(),mzt=Jl(),ZRe=vl(),yzt=dh().defaultLine,ax=no().extendFlat,XRe=ox.marker.line;YRe.exports=ax({locations:{valType:"data_array",editType:"calc"},locationmode:ox.locationmode,z:{valType:"data_array",editType:"calc"},geojson:ax({},ox.geojson,{}),featureidkey:ox.featureidkey,text:ax({},ox.text,{}),hovertext:ax({},ox.hovertext,{}),marker:{line:{color:ax({},XRe.color,{dflt:yzt}),width:ax({},XRe.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:ox.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:ox.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:ax({},ZRe.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:gzt(),showlegend:ax({},ZRe.showlegend,{dflt:!1})},mzt("",{cLetter:"z",editTypeOverride:"calc"}))});var JRe=ye((Vpr,KRe)=>{"use strict";var Cz=Mr(),_zt=Uh(),xzt=K5();KRe.exports=function(t,r,n,i){function a(h,d){return Cz.coerce(t,r,xzt,h,d)}var o=a("locations"),s=a("z");if(!(o&&o.length&&Cz.isArrayOrTypedArray(s)&&s.length)){r.visible=!1;return}r._length=Math.min(o.length,s.length);var l=a("geojson"),u;(typeof l=="string"&&l!==""||Cz.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),a("text"),a("hovertext"),a("hovertemplate");var f=a("marker.line.width");f&&a("marker.line.color"),a("marker.opacity"),_zt(t,r,i,a,{prefix:"",cLetter:"z"}),Cz.coerceSelectionMarkerOpacity(r,a)}});var Lz=ye((Hpr,eDe)=>{"use strict";var $Re=uo(),bzt=es().BADNUM,wzt=zv(),Tzt=km(),Azt=F0();function QRe(e){return e&&typeof e=="string"}eDe.exports=function(t,r){var n=r._length,i=new Array(n),a;r.geojson?a=function(c){return QRe(c)||$Re(c)}:a=QRe;for(var o=0;o{"use strict";var Szt=xa(),Mzt=va(),IX=ao(),Ezt=Mu();function kzt(e,t){t&&tDe(e,t)}function tDe(e,t){var r=t[0].trace,n=t[0].node3,i=n.selectAll(".choroplethlocation"),a=r.marker||{},o=a.line||{},s=Ezt.makeColorScaleFuncFromTrace(r);i.each(function(l){Szt.select(this).attr("fill",s(l.z)).call(Mzt.stroke,l.mlc||o.color).call(IX.dashLine,"",l.mlw||o.width||0).style("opacity",a.opacity)}),IX.selectedPointStyle(i,r)}function Czt(e,t){var r=t[0].node3,n=t[0].trace;n.selectedpoints?IX.selectedPointStyle(r.selectAll(".choroplethlocation"),n):tDe(e,t)}rDe.exports={style:kzt,styleOnSelect:Czt}});var RX=ye((jpr,aDe)=>{"use strict";var Lzt=xa(),iDe=Mr(),J5=nx(),Pzt=cz().getTopojsonFeatures,nDe=wg().findExtremes,Izt=Pz().style;function Rzt(e,t,r){var n=t.layers.backplot.select(".choroplethlayer");iDe.makeTraceGroups(n,r,"trace choropleth").each(function(i){var a=Lzt.select(this),o=a.selectAll("path.choroplethlocation").data(iDe.identity);o.enter().append("path").classed("choroplethlocation",!0),o.exit().remove(),Izt(e,i)})}function Dzt(e,t){for(var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r.locationmode,o=r._length,s=a==="geojson-id"?J5.extractTraceFeature(e):Pzt(r,i.topojson),l=[],u=[],c=0;c{"use strict";var zzt=Qa(),Fzt=K5(),qzt=Mr().fillText;oDe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s,l,u,c,f=[r,n],h=[r+360,n];for(l=0;l")}}});var Rz=ye((Zpr,sDe)=>{"use strict";sDe.exports=function(t,r,n,i,a){t.location=r.location,t.z=r.z;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t.ct=o.ct,t}});var Dz=ye((Xpr,lDe)=>{"use strict";lDe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l,u,c,f;if(r===!1)for(s=0;s{"use strict";uDe.exports={attributes:K5(),supplyDefaults:JRe(),colorbar:M_(),calc:Lz(),calcGeoJSON:RX().calcGeoJSON,plot:RX().plot,style:Pz().style,styleOnSelect:Pz().styleOnSelect,hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),moduleType:"trace",name:"choropleth",basePlotModule:PX(),categories:["geo","noOpacity","showLegend"],meta:{}}});var hDe=ye((Kpr,fDe)=>{"use strict";fDe.exports=cDe()});var zz=ye((Jpr,vDe)=>{"use strict";var Bzt=ba(),s0=Mr(),Nzt=oT();function Uzt(e,t,r,n){var i=e.cd,a=i[0].t,o=i[0].trace,s=e.xa,l=e.ya,u=a.x,c=a.y,f=s.c2p(t),h=l.c2p(r),d=e.distance,v;if(a.tree){var x=s.p2c(f-d),b=s.p2c(f+d),p=l.p2c(h-d),E=l.p2c(h+d);n==="x"?v=a.tree.range(Math.min(x,b),Math.min(l._rl[0],l._rl[1]),Math.max(x,b),Math.max(l._rl[0],l._rl[1])):v=a.tree.range(Math.min(x,b),Math.min(p,E),Math.max(x,b),Math.max(p,E))}else v=a.ids;var k,A,L,_,C,M,g,P,T,F=d;if(n==="x"){var q=!!o.xperiodalignment,V=!!o.yperiodalignment;for(C=0;C=Math.min(H,X)&&f<=Math.max(H,X)?0:1/0}if(M=Math.min(G,N)&&h<=Math.max(G,N)?0:1/0}T=Math.sqrt(M*M+g*g),A=v[C]}}}else for(C=v.length-1;C>-1;C--)k=v[C],L=u[k],_=c[k],M=s.c2p(L)-f,g=l.c2p(_)-h,P=Math.sqrt(M*M+g*g),P{"use strict";var pDe=20;gDe.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:pDe,SYMBOL_STROKE:pDe/20,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}});var tk=ye((Qpr,xDe)=>{"use strict";var Vzt=vl(),Hzt=Su(),Gzt=Eg(),Af=Uc(),mDe=Oc().axisHoverFormat,yDe=Jl(),jzt=Y1(),DX=no().extendFlat,Wzt=Bu().overrideAll,Zzt=sx().DASHES,_De=Af.line,r1=Af.marker,Xzt=r1.line,$5=xDe.exports=Wzt({x:Af.x,x0:Af.x0,dx:Af.dx,y:Af.y,y0:Af.y0,dy:Af.dy,xperiod:Af.xperiod,yperiod:Af.yperiod,xperiod0:Af.xperiod0,yperiod0:Af.yperiod0,xperiodalignment:Af.xperiodalignment,yperiodalignment:Af.yperiodalignment,xhoverformat:mDe("x"),yhoverformat:mDe("y"),text:Af.text,hovertext:Af.hovertext,textposition:Af.textposition,textfont:Hzt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,noNumericWeightValues:!0,variantValues:["normal","small-caps"]}),mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:_De.color,width:_De.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:jzt(Zzt),dflt:"solid"}},marker:DX({},yDe("marker"),{symbol:r1.symbol,angle:r1.angle,size:r1.size,sizeref:r1.sizeref,sizemin:r1.sizemin,sizemode:r1.sizemode,opacity:r1.opacity,colorbar:r1.colorbar,line:DX({},yDe("marker.line"),{width:Xzt.width})}),connectgaps:Af.connectgaps,fill:DX({},Af.fill,{dflt:"none"}),fillcolor:Gzt(),selected:{marker:Af.selected.marker,textfont:Af.selected.textfont},unselected:{marker:Af.unselected.marker,textfont:Af.unselected.textfont},opacity:Vzt.opacity},"calc","nested");$5.x.editType=$5.y.editType=$5.x0.editType=$5.y0.editType="calc+clearAxisTypes";$5.hovertemplate=Af.hovertemplate;$5.texttemplate=Af.texttemplate});var Fz=ye(zX=>{"use strict";var bDe=sx();zX.isOpenSymbol=function(e){return typeof e=="string"?bDe.OPEN_RE.test(e):e%200>100};zX.isDotSymbol=function(e){return typeof e=="string"?bDe.DOT_RE.test(e):e>200}});var ADe=ye((t0r,TDe)=>{"use strict";var wDe=Mr(),Yzt=ba(),Kzt=Fz(),Jzt=tk(),$zt=Sm(),qz=lu(),Qzt=K3(),eFt=Pg(),tFt=$p(),rFt=R0(),iFt=Ig(),nFt=D0();TDe.exports=function(t,r,n,i){function a(d,v){return wDe.coerce(t,r,Jzt,d,v)}var o=t.marker?Kzt.isOpenSymbol(t.marker.symbol):!1,s=qz.isBubble(t),l=Qzt(t,r,i,a);if(!l){r.visible=!1;return}eFt(t,r,i,a),a("xhoverformat"),a("yhoverformat");var u=l<$zt.PTS_LINESONLY?"lines+markers":"lines";a("text"),a("hovertext"),a("hovertemplate"),a("mode",u),qz.hasMarkers(r)&&(tFt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0}),a("marker.line.width",o||s?1:0)),qz.hasLines(r)&&(a("connectgaps"),rFt(t,r,n,i,a),a("line.shape")),qz.hasText(r)&&(a("texttemplate"),nFt(t,r,i,a,{noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var c=(r.line||{}).color,f=(r.marker||{}).color;a("fill"),r.fill!=="none"&&iFt(t,r,n,a);var h=Yzt.getComponentMethod("errorbars","supplyDefaults");h(t,r,c||f||n,{axis:"y"}),h(t,r,c||f||n,{axis:"x",inherit:"y"}),wDe.coerceSelectionMarkerOpacity(r,a)}});var MDe=ye((r0r,SDe)=>{"use strict";var aFt=$P();SDe.exports=function(t,r,n){var i=t.i;return"x"in t||(t.x=r._x[i]),"y"in t||(t.y=r._y[i]),aFt(t,r,n)}});var kDe=ye((i0r,EDe)=>{"use strict";function oFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>=0?(a=o,i=o-1):n=o+1}return a}function sFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>0?(a=o,i=o-1):n=o+1}return a}function lFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<0?(a=o,n=o+1):i=o-1}return a}function uFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<=0?(a=o,n=o+1):i=o-1}return a}function cFt(e,t,r,n,i){for(;n<=i;){var a=n+i>>>1,o=e[a],s=r!==void 0?r(o,t):o-t;if(s===0)return a;s<=0?n=a+1:i=a-1}return-1}function rk(e,t,r,n,i,a){return typeof r=="function"?a(e,t,r,n===void 0?0:n|0,i===void 0?e.length-1:i|0):a(e,t,void 0,r===void 0?0:r|0,n===void 0?e.length-1:n|0)}EDe.exports={ge:function(e,t,r,n,i){return rk(e,t,r,n,i,oFt)},gt:function(e,t,r,n,i){return rk(e,t,r,n,i,sFt)},lt:function(e,t,r,n,i){return rk(e,t,r,n,i,lFt)},le:function(e,t,r,n,i){return rk(e,t,r,n,i,uFt)},eq:function(e,t,r,n,i){return rk(e,t,r,n,i,cFt)}}});var Zm=ye((n0r,LDe)=>{"use strict";LDe.exports=function(t,r,n){var i={},a,o;if(typeof r=="string"&&(r=CDe(r)),Array.isArray(r)){var s={};for(o=0;o{"use strict";var fFt=Zm();PDe.exports=hFt;function hFt(e){var t;return arguments.length>1&&(e=arguments),typeof e=="string"?e=e.split(/\s/).map(parseFloat):typeof e=="number"&&(e=[e]),e.length&&typeof e[0]=="number"?e.length===1?t={width:e[0],height:e[0],x:0,y:0}:e.length===2?t={width:e[0],height:e[1],x:0,y:0}:t={x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(e=fFt(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),t={x:e.left||0,y:e.top||0},e.width==null?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,e.height==null?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}});var j2=ye((o0r,IDe)=>{"use strict";IDe.exports=dFt;function dFt(e,t){if(!e||e.length==null)throw Error("Argument should be an array");t==null?t=1:t=Math.floor(t);for(var r=Array(t*2),n=0;ni&&(i=e[o]),e[o]{RDe.exports=function(){for(var e=0;e{var zDe=HD();FDe.exports=vFt;function vFt(e,t,r){if(!e)throw new TypeError("must specify data as first parameter");if(r=+(r||0)|0,Array.isArray(e)&&e[0]&&typeof e[0][0]=="number"){var n=e[0].length,i=e.length*n,a,o,s,l;(!t||typeof t=="string")&&(t=new(zDe(t||"float32"))(i+r));var u=t.length-r;if(i!==u)throw new Error("source length "+i+" ("+n+"x"+e.length+") does not match destination length "+u);for(a=0,s=r;a{"use strict";qDe.exports=function(e){var t=typeof e;return e!==null&&(t==="object"||t==="function")}});var NDe=ye((c0r,BDe)=>{"use strict";BDe.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}});var ZDe=ye((f0r,WDe)=>{"use strict";var UDe=kDe(),VDe=VE(),pFt=Q5(),gFt=j2(),HDe=Zm(),qX=DDe(),mFt=W2(),yFt=ODe(),_Ft=HD(),GDe=NDe(),xFt=1073741824;WDe.exports=function(t,r){r||(r={}),t=mFt(t,"float64"),r=HDe(r,{bounds:"range bounds dataBox databox",maxDepth:"depth maxDepth maxdepth level maxLevel maxlevel levels",dtype:"type dtype format out dst output destination"});let n=qX(r.maxDepth,255),i=qX(r.bounds,gFt(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;let a=jDe(t,i),o=t.length>>>1,s;r.dtype||(r.dtype="array"),typeof r.dtype=="string"?s=new(_Ft(r.dtype))(o):r.dtype&&(s=r.dtype,Array.isArray(s)&&(s.length=o));for(let p=0;pn||_>xFt){for(let N=0;N_e||g>Me||P=F||re===ae)return;let ke=l[W];ae===void 0&&(ae=ke.length);for(let Re=re;Re=A&&Ge<=_&&nt>=L&&nt<=C&&q.push(ce)}let ge=u[W],ie=ge[re*4+0],Te=ge[re*4+1],Ee=ge[re*4+2],Ae=ge[re*4+3],ze=H(ge,re+1),Ce=N*.5,me=W+1;V(X,G,Ce,me,ie,Te||Ee||Ae||ze),V(X,G+Ce,Ce,me,Te,Ee||Ae||ze),V(X+Ce,G,Ce,me,Ee,Ae||ze),V(X+Ce,G+Ce,Ce,me,Ae,ze)}function H(X,G){let N=null,W=0;for(;N===null;)if(N=X[G*4+W],W++,W>X.length)return null;return N}return q}function x(p,E,k,A,L){let _=[];for(let C=0;C{"use strict";XDe.exports=ZDe()});var OX=ye((d0r,YDe)=>{YDe.exports=bFt;function bFt(e){var t=0,r=0,n=0,i=0;return e.map(function(a){a=a.slice();var o=a[0],s=o.toUpperCase();if(o!=s)switch(a[0]=s,o){case"a":a[6]+=n,a[7]+=i;break;case"v":a[1]+=i;break;case"h":a[1]+=n;break;default:for(var l=1;l{"use strict";Object.defineProperty(Bz,"__esModule",{value:!0});var wFt=function(){function e(t,r){var n=[],i=!0,a=!1,o=void 0;try{for(var s=t[Symbol.iterator](),l;!(i=(l=s.next()).done)&&(n.push(l.value),!(r&&n.length===r));i=!0);}catch(u){a=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(a)throw o}}return n}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),ik=Math.PI*2,BX=function(t,r,n,i,a,o,s){var l=t.x,u=t.y;l*=r,u*=n;var c=i*l-a*u,f=a*l+i*u;return{x:c+o,y:f+s}},TFt=function(t,r){var n=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),i=Math.cos(t),a=Math.sin(t),o=Math.cos(t+r),s=Math.sin(t+r);return[{x:i-a*n,y:a+i*n},{x:o+s*n,y:s-o*n},{x:o,y:s}]},KDe=function(t,r,n,i){var a=t*i-r*n<0?-1:1,o=t*n+r*i;return o>1&&(o=1),o<-1&&(o=-1),a*Math.acos(o)},AFt=function(t,r,n,i,a,o,s,l,u,c,f,h){var d=Math.pow(a,2),v=Math.pow(o,2),x=Math.pow(f,2),b=Math.pow(h,2),p=d*v-d*b-v*x;p<0&&(p=0),p/=d*b+v*x,p=Math.sqrt(p)*(s===l?-1:1);var E=p*a/o*h,k=p*-o/a*f,A=c*E-u*k+(t+n)/2,L=u*E+c*k+(r+i)/2,_=(f-E)/a,C=(h-k)/o,M=(-f-E)/a,g=(-h-k)/o,P=KDe(1,0,_,C),T=KDe(_,C,M,g);return l===0&&T>0&&(T-=ik),l===1&&T<0&&(T+=ik),[A,L,P,T]},SFt=function(t){var r=t.px,n=t.py,i=t.cx,a=t.cy,o=t.rx,s=t.ry,l=t.xAxisRotation,u=l===void 0?0:l,c=t.largeArcFlag,f=c===void 0?0:c,h=t.sweepFlag,d=h===void 0?0:h,v=[];if(o===0||s===0)return[];var x=Math.sin(u*ik/360),b=Math.cos(u*ik/360),p=b*(r-i)/2+x*(n-a)/2,E=-x*(r-i)/2+b*(n-a)/2;if(p===0&&E===0)return[];o=Math.abs(o),s=Math.abs(s);var k=Math.pow(p,2)/Math.pow(o,2)+Math.pow(E,2)/Math.pow(s,2);k>1&&(o*=Math.sqrt(k),s*=Math.sqrt(k));var A=AFt(r,n,i,a,o,s,f,d,x,b,p,E),L=wFt(A,4),_=L[0],C=L[1],M=L[2],g=L[3],P=Math.abs(g)/(ik/4);Math.abs(1-P)<1e-7&&(P=1);var T=Math.max(Math.ceil(P),1);g/=T;for(var F=0;F{"use strict";eze.exports=EFt;var MFt=$De();function EFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Nz(e,t,r,n){return["C",e,t,r,n,r,n]}function QDe(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}});var NX=ye((p0r,rze)=>{"use strict";rze.exports=function(t){return typeof t!="string"?!1:(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}});var aze=ye((g0r,nze)=>{"use strict";var kFt=XS(),CFt=OX(),LFt=tze(),PFt=NX(),ize=tE();nze.exports=IFt;function IFt(e){if(Array.isArray(e)&&e.length===1&&typeof e[0]=="string"&&(e=e[0]),typeof e=="string"&&(ize(PFt(e),"String is not an SVG path."),e=kFt(e)),ize(Array.isArray(e),"Argument should be a string or an array of path segments."),e=CFt(e),e=LFt(e),!e.length)return[0,0,0,0];for(var t=[1/0,1/0,-1/0,-1/0],r=0,n=e.length;rt[2]&&(t[2]=i[a+0]),i[a+1]>t[3]&&(t[3]=i[a+1]);return t}});var fze=ye((m0r,cze)=>{var Z2=Math.PI,oze=uze(120);cze.exports=RFt;function RFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f7&&(r.push(d.splice(0,7)),d.unshift("C"));break;case"S":var x=u,b=c;(t=="C"||t=="S")&&(x+=x-n,b+=b-i),d=["C",x,b,d[1],d[2],d[3],d[4]];break;case"T":t=="Q"||t=="T"?(s=u*2-s,l=c*2-l):(s=u,l=c),d=sze(u,c,s,l,d[1],d[2]);break;case"Q":s=d[1],l=d[2],d=sze(u,c,d[1],d[2],d[3],d[4]);break;case"L":d=Uz(u,c,d[1],d[2]);break;case"H":d=Uz(u,c,d[1],c);break;case"V":d=Uz(u,c,u,d[1]);break;case"Z":d=Uz(u,c,a,o);break}t=v,u=d[d.length-2],c=d[d.length-1],d.length>4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Uz(e,t,r,n){return["C",e,t,r,n,r,n]}function sze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function lze(e,t,r,n,i,a,o,s,l,u){if(u)k=u[0],A=u[1],p=u[2],E=u[3];else{var c=UX(e,t,-i);e=c.x,t=c.y,c=UX(s,l,-i),s=c.x,l=c.y;var f=(e-s)/2,h=(t-l)/2,d=f*f/(r*r)+h*h/(n*n);d>1&&(d=Math.sqrt(d),r=d*r,n=d*n);var v=r*r,x=n*n,b=(a==o?-1:1)*Math.sqrt(Math.abs((v*x-v*h*h-x*f*f)/(v*h*h+x*f*f)));b==1/0&&(b=1);var p=b*r*h/n+(e+s)/2,E=b*-n*f/r+(t+l)/2,k=Math.asin(((t-E)/n).toFixed(9)),A=Math.asin(((l-E)/n).toFixed(9));k=eA&&(k=k-Z2*2),!o&&A>k&&(A=A-Z2*2)}if(Math.abs(A-k)>oze){var L=A,_=s,C=l;A=k+oze*(o&&A>k?1:-1),s=p+r*Math.cos(A),l=E+n*Math.sin(A);var M=lze(s,l,r,n,i,0,o,_,C,[A,L,p,E])}var g=Math.tan((A-k)/4),P=4/3*r*g,T=4/3*n*g,F=[2*e-(e+P*Math.sin(k)),2*t-(t-T*Math.cos(k)),s+P*Math.sin(A),l-T*Math.cos(A),s,l];if(u)return F;M&&(F=F.concat(M));for(var q=0;q{var DFt=OX(),zFt=fze(),FFt={M:"moveTo",C:"bezierCurveTo"};hze.exports=function(e,t){e.beginPath(),zFt(DFt(t)).forEach(function(r){var n=r[0],i=r.slice(1);e[FFt[n]].apply(e,i)}),e.closePath()}});var mze=ye((_0r,gze)=>{"use strict";var qFt=VE();gze.exports=OFt;var nk=1e20;function OFt(e,t){t||(t={});var r=t.cutoff==null?.25:t.cutoff,n=t.radius==null?8:t.radius,i=t.channel||0,a,o,s,l,u,c,f,h,d,v,x;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");a=t.width,o=t.height,l=e,t.stride?c=t.stride:c=Math.floor(e.length/a/o)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(h=e,f=h.getContext("2d"),a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(h=e.canvas,f=e,a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.ImageData&&e instanceof window.ImageData&&(d=e,a=e.width,o=e.height,l=d.data,c=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(a*o),v=0,x=u.length;v{"use strict";var BFt=aze(),NFt=XS(),UFt=dze(),VFt=NX(),HFt=mze(),VX=document.createElement("canvas"),hp=VX.getContext("2d");yze.exports=GFt;function GFt(e,t){if(!VFt(e))throw Error("Argument should be valid svg path string");t||(t={});var r,n;t.shape?(r=t.shape[0],n=t.shape[1]):(r=VX.width=t.w||t.width||200,n=VX.height=t.h||t.height||200);var i=Math.min(r,n),a=t.stroke||0,o=t.viewbox||t.viewBox||BFt(e),s=[r/(o[2]-o[0]),n/(o[3]-o[1])],l=Math.min(s[0]||0,s[1]||0)/2;if(hp.fillStyle="black",hp.fillRect(0,0,r,n),hp.fillStyle="white",a&&(typeof a!="number"&&(a=1),a>0?hp.strokeStyle="white":hp.strokeStyle="black",hp.lineWidth=Math.abs(a)),hp.translate(r*.5,n*.5),hp.scale(l,l),jFt()){var u=new Path2D(e);hp.fill(u),a&&hp.stroke(u)}else{var c=NFt(e);UFt(hp,c),hp.fill(),a&&hp.stroke()}hp.setTransform(1,0,0,1,0,0);var f=HFt(hp,{cutoff:t.cutoff!=null?t.cutoff:.5,radius:t.radius!=null?t.radius:i*.5});return f}var Vz;function jFt(){if(Vz!=null)return Vz;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return Vz=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var r=e.getImageData(0,0,1,1);return Vz=r&&r.data&&r.data[3]===255}});var Y2=ye((b0r,Lze)=>{"use strict";var Gz=uo(),WFt=_ze(),Hz=$_(),ZFt=ba(),rA=Mr(),Qf=rA.isArrayOrTypedArray,eA=ao(),xze=af(),bze=$y().formatColor,tA=lu(),XFt=S3(),GX=Fz(),ak=sx(),YFt=U1().DESELECTDIM,wze={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},KFt=rp().appendArrayPointValue;function JFt(e,t){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},i=e._context.plotGlPixelRatio;if(t.visible!==!0)return n;if(tA.hasText(t)&&(n.text=Cze(e,t),n.textSel=Aze(e,t,t.selected),n.textUnsel=Aze(e,t,t.unselected)),tA.hasMarkers(t)&&(n.marker=WX(e,t),n.markerSel=jX(e,t,t.selected),n.markerUnsel=jX(e,t,t.unselected),!t.unselected&&Qf(t.marker.opacity))){var a=t.marker.opacity;for(n.markerUnsel.opacity=new Array(a.length),r=0;r500?"bold":"normal":e}function WX(e,t){var r=t._length,n=t.marker,i={},a,o=Qf(n.symbol),s=Qf(n.angle),l=Qf(n.color),u=Qf(n.line.color),c=Qf(n.opacity),f=Qf(n.size),h=Qf(n.line.width),d;if(o||(d=GX.isOpenSymbol(n.symbol)),o||l||u||c||s){i.symbols=new Array(r),i.angles=new Array(r),i.colors=new Array(r),i.borderColors=new Array(r);var v=n.symbol,x=n.angle,b=bze(n,n.opacity,r),p=bze(n.line,n.opacity,r);if(!Qf(p[0])){var E=p;for(p=Array(r),a=0;aak.TOO_MANY_POINTS||tA.hasMarkers(t)?"rect":"round";if(u&&t.connectgaps){var f=a[0],h=a[1];for(o=0;o1?l[o]:l[0]:l,d=Qf(u)?u.length>1?u[o]:u[0]:u,v=wze[h],x=wze[d],b=c?c/.8+1:0,p=-x*b-x*.5;a.offset[o]=[v*b/f,p/f]}}return a}Lze.exports={style:JFt,markerStyle:WX,markerSelection:jX,linePositions:QFt,errorBarPositions:e7t,textPosition:t7t}});var ZX=ye((w0r,Pze)=>{"use strict";var jz=Mr();Pze.exports=function(t,r){var n=r._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return r._scene||(n=r._scene={},n.init=function(){jz.extendFlat(n,a,i)},n.init(),n.update=function(s){var l=jz.repeat(s,n.count);if(n.fill2d&&n.fill2d.update(l),n.scatter2d&&n.scatter2d.update(l),n.line2d&&n.line2d.update(l),n.error2d&&n.error2d.update(l.concat(l)),n.select2d&&n.select2d.update(l),n.glText)for(var u=0;u{"use strict";var r7t=Oz(),iA=Mr(),Ize=af(),i7t=wg().findExtremes,Rze=Rg(),XX=q0(),n7t=XX.calcMarkerSize,a7t=XX.calcAxisExpansion,o7t=XX.setFirstScatter,s7t=z0(),nA=Y2(),l7t=ZX(),Dze=es().BADNUM,u7t=sx().TOO_MANY_POINTS;Fze.exports=function(t,r){var n=t._fullLayout,i=r._xA=Ize.getFromId(t,r.xaxis,"x"),a=r._yA=Ize.getFromId(t,r.yaxis,"y"),o=n._plots[r.xaxis+r.yaxis],s=r._length,l=s>=u7t,u=s*2,c={},f,h=i.makeCalcdata(r,"x"),d=a.makeCalcdata(r,"y"),v=Rze(r,i,"x",h),x=Rze(r,a,"y",d),b=v.vals,p=x.vals;r._x=b,r._y=p,r.xperiodalignment&&(r._origX=h,r._xStarts=v.starts,r._xEnds=v.ends),r.yperiodalignment&&(r._origY=d,r._yStarts=x.starts,r._yEnds=x.ends);var E=new Array(u),k=new Array(s);for(f=0;f1&&iA.extendFlat(o.line,nA.linePositions(e,r,n)),o.errorX||o.errorY){var s=nA.errorBarPositions(e,r,n,i,a);o.errorX&&iA.extendFlat(o.errorX,s.x),o.errorY&&iA.extendFlat(o.errorY,s.y)}return o.text&&(iA.extendFlat(o.text,{positions:n},nA.textPosition(e,r,o.text,o.marker)),iA.extendFlat(o.textSel,{positions:n},nA.textPosition(e,r,o.text,o.markerSel)),iA.extendFlat(o.textUnsel,{positions:n},nA.textPosition(e,r,o.text,o.markerUnsel))),o}});var YX=ye((A0r,Bze)=>{"use strict";var Oze=Mr(),f7t=va(),h7t=U1().DESELECTDIM;function d7t(e){var t=e[0],r=t.trace,n=t.t,i=n._scene,a=n.index,o=i.selectBatch[a],s=i.unselectBatch[a],l=i.textOptions[a],u=i.textSelectedOptions[a]||{},c=i.textUnselectedOptions[a]||{},f=Oze.extendFlat({},l),h,d;if(o.length||s.length){var v=u.color,x=c.color,b=l.color,p=Oze.isArrayOrTypedArray(b);for(f.color=new Array(r._length),h=0;h{"use strict";var Nze=lu(),v7t=YX().styleTextSelection;Uze.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l=n[0].t,u=s._length,c=l.x,f=l.y,h=l._scene,d=l.index;if(!h)return o;var v=Nze.hasText(s),x=Nze.hasMarkers(s),b=!x&&!v;if(s.visible!==!0||b)return o;var p=[],E=[];if(r!==!1&&!r.degenerate)for(var k=0;k{"use strict";var p7t=zz();Vze.exports={moduleType:"trace",name:"scattergl",basePlotModule:Jf(),categories:["gl","regl","cartesian","symbols","errorBarsOK","showLegend","scatter-like"],attributes:tk(),supplyDefaults:ADe(),crossTraceDefaults:$N(),colorbar:Kd(),formatLabels:MDe(),calc:qze(),hoverPoints:p7t.hoverPoints,selectPoints:KX(),meta:{}}});var jze=ye((E0r,Zz)=>{"use strict";var Wz=VE();Zz.exports=Gze;Zz.exports.to=Gze;Zz.exports.from=g7t;function Gze(e,t){t==null&&(t=!0);var r=e[0],n=e[1],i=e[2],a=e[3];a==null&&(a=t?1:255),t&&(r*=255,n*=255,i*=255,a*=255),r=Wz(r,0,255)&255,n=Wz(n,0,255)&255,i=Wz(i,0,255)&255,a=Wz(a,0,255)&255;var o=r*16777216+(n<<16)+(i<<8)+a;return o}function g7t(e,t){e=+e;var r=e>>>24,n=(e&16711680)>>>16,i=(e&65280)>>>8,a=e&255;return t===!1?[r,n,i,a]:[r/255,n/255,i/255,a/255]}});var bh=ye((k0r,Zze)=>{"use strict";var Wze=Object.getOwnPropertySymbols,m7t=Object.prototype.hasOwnProperty,y7t=Object.prototype.propertyIsEnumerable;function _7t(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function x7t(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(a){return t[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(a){return!1}}Zze.exports=x7t()?Object.assign:function(e,t){for(var r,n=_7t(e),i,a=1;a{Xze.exports=function(e){typeof e=="string"&&(e=[e]);for(var t=[].slice.call(arguments,1),r=[],n=0;n{"use strict";Kze.exports=function(t,r,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var i=0,a=n.length;i{"use strict";Jze.exports=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))});var Xz=ye((I0r,aA)=>{"use strict";aA.exports=ok;aA.exports.float32=aA.exports.float=ok;aA.exports.fract32=aA.exports.fract=b7t;var Qze=new Float32Array(1);function b7t(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=ok(e));for(var r=0,n=t.length;r{"use strict";function w7t(e,t){var r=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function T7t(e,t){return M7t(e)||w7t(e,t)||tFe(e,t)||C7t()}function A7t(e){return S7t(e)||E7t(e)||tFe(e)||k7t()}function S7t(e){if(Array.isArray(e))return $X(e)}function M7t(e){if(Array.isArray(e))return e}function E7t(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tFe(e,t){if(e){if(typeof e=="string")return $X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $X(e,t)}}function $X(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 1.0 + delta) { + discard; + } + + alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius); + + float borderRadius = fragBorderRadius; + float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius); + vec4 color = mix(fragColor, fragBorderColor, ratio); + color.a *= alpha * opacity; + gl_FragColor = color; +} +`]),v.vert=Yz([`precision highp float; +#define GLSLIFY 1 + +attribute float x, y, xFract, yFract; +attribute float size, borderSize; +attribute vec4 colorId, borderColorId; +attribute float isActive; + +// \`invariant\` effectively turns off optimizations for the position. +// We need this because -fast-math on M1 Macs is re-ordering +// floating point operations in a way that causes floating point +// precision limits to put points in the wrong locations. +invariant gl_Position; + +uniform bool constPointSize; +uniform float pixelRatio; +uniform vec2 paletteSize, scale, scaleFract, translate, translateFract; +uniform sampler2D paletteTexture; + +const float maxSize = 100.; + +varying vec4 fragColor, fragBorderColor; +varying float fragBorderRadius, fragWidth; + +float pointSizeScale = (constPointSize) ? 2. : pixelRatio; + +bool isDirect = (paletteSize.x < 1.); + +vec4 getColor(vec4 id) { + return isDirect ? id / 255. : texture2D(paletteTexture, + vec2( + (id.x + .5) / paletteSize.x, + (id.y + .5) / paletteSize.y + ) + ); +} + +void main() { + // ignore inactive points + if (isActive == 0.) return; + + vec2 position = vec2(x, y); + vec2 positionFract = vec2(xFract, yFract); + + vec4 color = getColor(colorId); + vec4 borderColor = getColor(borderColorId); + + float size = size * maxSize / 255.; + float borderSize = borderSize * maxSize / 255.; + + gl_PointSize = (size + borderSize) * pointSizeScale; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + gl_Position = vec4(pos * 2. - 1., 0., 1.); + + fragBorderRadius = 1. - 2. * borderSize / (size + borderSize); + fragColor = color; + fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor; + fragWidth = 1. / gl_PointSize; +} +`]),eFe&&(v.frag=v.frag.replace("smoothstep","smoothStep"),d.frag=d.frag.replace("smoothstep","smoothStep")),this.drawCircle=e(v)}rv.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4};rv.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this};rv.prototype.draw=function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;nre)?N.tree=R7t(G,{bounds:ge}):re&&re.length&&(N.tree=re),N.tree){var ie={primitive:"points",usage:"static",data:N.tree,type:"uint32"};N.elements?N.elements(ie):N.elements=o.elements(ie)}var Te=Kz.float32(G);ae({data:Te,usage:"dynamic"});var Ee=Kz.fract32(G,Te);return _e({data:Ee,usage:"dynamic"}),Me({data:new Uint8Array(ke),type:"uint8",usage:"stream"}),G}},{marker:function(G,N,W){var re=N.activation;if(re.forEach(function(Ee){return Ee&&Ee.destroy&&Ee.destroy()}),re.length=0,!G||typeof G[0]=="number"){var ae=e.addMarker(G);re[ae]=!0}else{for(var _e=[],Me=0,ke=Math.min(G.length,N.count);Me=0)return i;var a;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)a=e;else{a=new Uint8Array(e.length);for(var o=0,s=e.length;on*4&&(this.tooManyColors=!0),this.updatePalette(r),i.length===1?i[0]:i};rv.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,r=this.paletteTexture,n=Math.ceil(e.length*.25/t);if(n>1){e=e.slice();for(var i=e.length*.25%t;i{"use strict";iY.exports=Qz;iY.exports.default=Qz;function Qz(e,t,r){r=r||2;var n=t&&t.length,i=n?t[0]*r:e.length,a=nFe(e,0,i,r,!0),o=[];if(!a||a.next===a.prev)return o;var s,l,u,c,f,h,d;if(n&&(a=j7t(e,t,a,r)),e.length>80*r){s=u=e[0],l=c=e[1];for(var v=r;vu&&(u=f),h>c&&(c=h);d=Math.max(u-s,c-l),d=d!==0?32767/d:0}return sk(a,o,r,s,l,d,0),o}function nFe(e,t,r,n,i){var a,o;if(i===rY(e,t,r,n)>0)for(a=t;a=t;a-=n)o=iFe(a,e[a],e[a+1],o);return o&&eF(o,o.next)&&(uk(o),o=o.next),o}function J2(e,t){if(!e)return e;t||(t=e);var r=e,n;do if(n=!1,!r.steiner&&(eF(r,r.next)||eh(r.prev,r,r.next)===0)){if(uk(r),r=t=r.prev,r===r.next)break;n=!0}else r=r.next;while(n||r!==t);return t}function sk(e,t,r,n,i,a,o){if(e){!o&&a&&K7t(e,n,i,a);for(var s=e,l,u;e.prev!==e.next;){if(l=e.prev,u=e.next,a?V7t(e,n,i,a):U7t(e)){t.push(l.i/r|0),t.push(e.i/r|0),t.push(u.i/r|0),uk(e),e=u.next,s=u.next;continue}if(e=u,e===s){o?o===1?(e=H7t(J2(e),t,r),sk(e,t,r,n,i,a,2)):o===2&&G7t(e,t,r,n,i,a):sk(J2(e),t,r,n,i,a,1);break}}}}function U7t(e){var t=e.prev,r=e,n=e.next;if(eh(t,r,n)>=0)return!1;for(var i=t.x,a=r.x,o=n.x,s=t.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,d=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==t;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=d&&oA(i,s,a,l,o,u,v.x,v.y)&&eh(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function V7t(e,t,r,n){var i=e.prev,a=e,o=e.next;if(eh(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,h=o.y,d=sl?s>u?s:u:l>u?l:u,b=c>f?c>h?c:h:f>h?f:h,p=eY(d,v,t,r,n),E=eY(x,b,t,r,n),k=e.prevZ,A=e.nextZ;k&&k.z>=p&&A&&A.z<=E;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0||(k=k.prevZ,A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;k&&k.z>=p;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0)return!1;k=k.prevZ}for(;A&&A.z<=E;){if(A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function H7t(e,t,r){var n=e;do{var i=n.prev,a=n.next.next;!eF(i,a)&&aFe(i,n,n.next,a)&&lk(i,a)&&lk(a,i)&&(t.push(i.i/r|0),t.push(n.i/r|0),t.push(a.i/r|0),uk(n),uk(n.next),n=e=a),n=n.next}while(n!==e);return J2(n)}function G7t(e,t,r,n,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Q7t(o,s)){var l=oFe(o,s);o=J2(o,o.next),l=J2(l,l.next),sk(o,t,r,n,i,a,0),sk(l,t,r,n,i,a,0);return}s=s.next}o=o.next}while(o!==e)}function j7t(e,t,r,n){var i=[],a,o,s,l,u;for(a=0,o=t.length;a=r.next.y&&r.next.y!==r.y){var s=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=n&&s>a&&(a=s,o=r.x=r.x&&r.x>=u&&n!==r.x&&oA(io.x||r.x===o.x&&Y7t(o,r)))&&(o=r,f=h)),r=r.next;while(r!==l);return o}function Y7t(e,t){return eh(e.prev,e,t.prev)<0&&eh(t.next,e,e.next)<0}function K7t(e,t,r,n){var i=e;do i.z===0&&(i.z=eY(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,J7t(i)}function J7t(e){var t,r,n,i,a,o,s,l,u=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,n=r,s=0,t=0;t0||l>0&&n;)s!==0&&(l===0||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1);return e}function eY(e,t,r,n,i){return e=(e-r)*i|0,t=(t-n)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function $7t(e){var t=e,r=e;do(t.x=(e-o)*(a-s)&&(e-o)*(n-s)>=(r-o)*(t-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function Q7t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!e9t(e,t)&&(lk(e,t)&&lk(t,e)&&t9t(e,t)&&(eh(e.prev,e,t.prev)||eh(e,t.prev,t))||eF(e,t)&&eh(e.prev,e,e.next)>0&&eh(t.prev,t,t.next)>0)}function eh(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function eF(e,t){return e.x===t.x&&e.y===t.y}function aFe(e,t,r,n){var i=$z(eh(e,t,r)),a=$z(eh(e,t,n)),o=$z(eh(r,n,e)),s=$z(eh(r,n,t));return!!(i!==a&&o!==s||i===0&&Jz(e,r,t)||a===0&&Jz(e,n,t)||o===0&&Jz(r,e,n)||s===0&&Jz(r,t,n))}function Jz(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function $z(e){return e>0?1:e<0?-1:0}function e9t(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&aFe(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function lk(e,t){return eh(e.prev,e,e.next)<0?eh(e,t,e.next)>=0&&eh(e,e.prev,t)>=0:eh(e,t,e.prev)<0||eh(e,e.next,t)<0}function t9t(e,t){var r=e,n=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function oFe(e,t){var r=new tY(e.i,e.x,e.y),n=new tY(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function iFe(e,t,r,n){var i=new tY(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function uk(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function tY(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Qz.deviation=function(e,t,r,n){var i=t&&t.length,a=i?t[0]*r:e.length,o=Math.abs(rY(e,0,a,r));if(i)for(var s=0,l=t.length;s0&&(n+=e[i-1].length,r.holes.push(n))}return r}});var uFe=ye((z0r,lFe)=>{"use strict";var r9t=j2();lFe.exports=i9t;function i9t(e,t,r){if(!e||e.length==null)throw Error("Argument should be an array");t==null&&(t=1),r==null&&(r=r9t(e,t));for(var n=0;n{"use strict";cFe.exports=function(){var e,t;if(typeof WeakMap!="function")return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(r){return!1}return!(String(e)!=="[object WeakMap]"||typeof e.set!="function"||e.set({},1)!==e||typeof e.delete!="function"||typeof e.has!="function"||e.get(t)!=="one")}});var dFe=ye((q0r,hFe)=>{"use strict";hFe.exports=function(){}});var lx=ye((O0r,vFe)=>{"use strict";var n9t=dFe()();vFe.exports=function(e){return e!==n9t&&e!==null}});var nY=ye((B0r,gFe)=>{"use strict";var a9t=Object.create,o9t=Object.getPrototypeOf,pFe={};gFe.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||a9t;return typeof e!="function"?!1:o9t(e(t(null),pFe))===pFe}});var aY=ye((N0r,mFe)=>{"use strict";var s9t=lx(),l9t={function:!0,object:!0};mFe.exports=function(e){return s9t(e)&&l9t[typeof e]||!1}});var i1=ye((U0r,yFe)=>{"use strict";var u9t=lx();yFe.exports=function(e){if(!u9t(e))throw new TypeError("Cannot use null or undefined");return e}});var xFe=ye((V0r,_Fe)=>{"use strict";var oY=Object.create,tF;nY()()||(tF=sY());_Fe.exports=function(){var e,t,r;return!tF||tF.level!==1?oY:(e={},t={},r={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(n){if(n==="__proto__"){t[n]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[n]=r}),Object.defineProperties(e,t),Object.defineProperty(tF,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:e}),function(n,i){return oY(n===null?e:n,i)})}()});var sY=ye((H0r,bFe)=>{"use strict";var c9t=aY(),f9t=i1(),h9t=Object.prototype.isPrototypeOf,d9t=Object.defineProperty,v9t={configurable:!0,enumerable:!1,writable:!0,value:void 0},rF;rF=function(e,t){if(f9t(e),t===null||c9t(t))return e;throw new TypeError("Prototype must be null or an object")};bFe.exports=function(e){var t,r;return e?(e.level===2?e.set?(r=e.set,t=function(n,i){return r.call(rF(n,i),i),n}):t=function(n,i){return rF(n,i).__proto__=i,n}:t=function n(i,a){var o;return rF(i,a),o=h9t.call(n.nullPolyfill,i),o&&delete n.nullPolyfill.__proto__,a===null&&(a=n.nullPolyfill),i.__proto__=a,o&&d9t(n.nullPolyfill,"__proto__",v9t),i},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e=Object.create(null),t={},r,n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(n){try{r=n.set,r.call(e,t)}catch(i){}if(Object.getPrototypeOf(e)===t)return{set:r,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)}());xFe()});var iF=ye((G0r,wFe)=>{"use strict";wFe.exports=nY()()?Object.setPrototypeOf:sY()});var AFe=ye((j0r,TFe)=>{"use strict";var p9t=aY();TFe.exports=function(e){if(!p9t(e))throw new TypeError(e+" is not an Object");return e}});var MFe=ye((W0r,SFe)=>{"use strict";var g9t=Object.create(null),m9t=Math.random;SFe.exports=function(){var e;do e=m9t().toString(36).slice(2);while(g9t[e]);return e}});var $2=ye((Z0r,EFe)=>{"use strict";var y9t=void 0;EFe.exports=function(e){return e!==y9t&&e!==null}});var nF=ye((X0r,kFe)=>{"use strict";var _9t=$2(),x9t={object:!0,function:!0,undefined:!0};kFe.exports=function(e){return _9t(e)?hasOwnProperty.call(x9t,typeof e):!1}});var LFe=ye((Y0r,CFe)=>{"use strict";var b9t=nF();CFe.exports=function(e){if(!b9t(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(t){return!1}}});var IFe=ye((K0r,PFe)=>{"use strict";var w9t=LFe();PFe.exports=function(e){if(typeof e!="function"||!hasOwnProperty.call(e,"length"))return!1;try{if(typeof e.length!="number"||typeof e.call!="function"||typeof e.apply!="function")return!1}catch(t){return!1}return!w9t(e)}});var lY=ye((J0r,RFe)=>{"use strict";var T9t=IFe(),A9t=/^\s*class[\s{/}]/,S9t=Function.prototype.toString;RFe.exports=function(e){return!(!T9t(e)||A9t.test(S9t.call(e)))}});var zFe=ye(($0r,DFe)=>{"use strict";DFe.exports=function(){var e=Object.assign,t;return typeof e!="function"?!1:(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}});var qFe=ye((Q0r,FFe)=>{"use strict";FFe.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}});var BFe=ye((egr,OFe)=>{"use strict";var M9t=lx(),E9t=Object.keys;OFe.exports=function(e){return E9t(M9t(e)?Object(e):e)}});var UFe=ye((tgr,NFe)=>{"use strict";NFe.exports=qFe()()?Object.keys:BFe()});var HFe=ye((rgr,VFe)=>{"use strict";var k9t=UFe(),C9t=i1(),L9t=Math.max;VFe.exports=function(e,t){var r,n,i=L9t(arguments.length,2),a;for(e=Object(C9t(e)),a=function(o){try{e[o]=t[o]}catch(s){r||(r=s)}},n=1;n{"use strict";GFe.exports=zFe()()?Object.assign:HFe()});var uY=ye((ngr,jFe)=>{"use strict";var P9t=lx(),I9t=Array.prototype.forEach,R9t=Object.create,D9t=function(e,t){var r;for(r in e)t[r]=e[r]};jFe.exports=function(e){var t=R9t(null);return I9t.call(arguments,function(r){P9t(r)&&D9t(Object(r),t)}),t}});var ZFe=ye((agr,WFe)=>{"use strict";var cY="razdwatrzy";WFe.exports=function(){return typeof cY.contains!="function"?!1:cY.contains("dwa")===!0&&cY.contains("foo")===!1}});var YFe=ye((ogr,XFe)=>{"use strict";var z9t=String.prototype.indexOf;XFe.exports=function(e){return z9t.call(this,e,arguments[1])>-1}});var fY=ye((sgr,KFe)=>{"use strict";KFe.exports=ZFe()()?String.prototype.contains:YFe()});var n1=ye((lgr,e7e)=>{"use strict";var oF=$2(),JFe=lY(),$Fe=aF(),QFe=uY(),ck=fY(),F9t=e7e.exports=function(e,t){var r,n,i,a,o;return arguments.length<2||typeof e!="string"?(a=t,t=e,e=null):a=arguments[2],oF(e)?(r=ck.call(e,"c"),n=ck.call(e,"e"),i=ck.call(e,"w")):(r=i=!0,n=!1),o={value:t,configurable:r,enumerable:n,writable:i},a?$Fe(QFe(a),o):o};F9t.gs=function(e,t,r){var n,i,a,o;return typeof e!="string"?(a=r,r=t,t=e,e=null):a=arguments[3],oF(t)?JFe(t)?oF(r)?JFe(r)||(a=r,r=void 0):r=void 0:(a=t,t=r=void 0):t=void 0,oF(e)?(n=ck.call(e,"c"),i=ck.call(e,"e")):(n=!0,i=!1),o={get:t,set:r,configurable:n,enumerable:i},a?$Fe(QFe(a),o):o}});var fk=ye((ugr,r7e)=>{"use strict";var t7e=Object.prototype.toString,q9t=t7e.call(function(){return arguments}());r7e.exports=function(e){return t7e.call(e)===q9t}});var hk=ye((cgr,n7e)=>{"use strict";var i7e=Object.prototype.toString,O9t=i7e.call("");n7e.exports=function(e){return typeof e=="string"||e&&typeof e=="object"&&(e instanceof String||i7e.call(e)===O9t)||!1}});var o7e=ye((fgr,a7e)=>{"use strict";a7e.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}});var u7e=ye((hgr,l7e)=>{var s7e=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};l7e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return s7e()}try{return __global__||s7e()}finally{delete Object.prototype.__global__}}()});var dk=ye((dgr,c7e)=>{"use strict";c7e.exports=o7e()()?globalThis:u7e()});var h7e=ye((vgr,f7e)=>{"use strict";var B9t=dk(),hY={object:!0,symbol:!0};f7e.exports=function(){var e=B9t.Symbol,t;if(typeof e!="function")return!1;t=e("test symbol");try{String(t)}catch(r){return!1}return!(!hY[typeof e.iterator]||!hY[typeof e.toPrimitive]||!hY[typeof e.toStringTag])}});var v7e=ye((pgr,d7e)=>{"use strict";d7e.exports=function(e){return e?typeof e=="symbol"?!0:!e.constructor||e.constructor.name!=="Symbol"?!1:e[e.constructor.toStringTag]==="Symbol":!1}});var dY=ye((ggr,p7e)=>{"use strict";var N9t=v7e();p7e.exports=function(e){if(!N9t(e))throw new TypeError(e+" is not a symbol");return e}});var x7e=ye((mgr,_7e)=>{"use strict";var g7e=n1(),U9t=Object.create,m7e=Object.defineProperty,V9t=Object.prototype,y7e=U9t(null);_7e.exports=function(e){for(var t=0,r,n;y7e[e+(t||"")];)++t;return e+=t||"",y7e[e]=!0,r="@@"+e,m7e(V9t,r,g7e.gs(null,function(i){n||(n=!0,m7e(this,r,g7e(i)),n=!1)})),r}});var w7e=ye((ygr,b7e)=>{"use strict";var Qg=n1(),wh=dk().Symbol;b7e.exports=function(e){return Object.defineProperties(e,{hasInstance:Qg("",wh&&wh.hasInstance||e("hasInstance")),isConcatSpreadable:Qg("",wh&&wh.isConcatSpreadable||e("isConcatSpreadable")),iterator:Qg("",wh&&wh.iterator||e("iterator")),match:Qg("",wh&&wh.match||e("match")),replace:Qg("",wh&&wh.replace||e("replace")),search:Qg("",wh&&wh.search||e("search")),species:Qg("",wh&&wh.species||e("species")),split:Qg("",wh&&wh.split||e("split")),toPrimitive:Qg("",wh&&wh.toPrimitive||e("toPrimitive")),toStringTag:Qg("",wh&&wh.toStringTag||e("toStringTag")),unscopables:Qg("",wh&&wh.unscopables||e("unscopables"))})}});var S7e=ye((_gr,A7e)=>{"use strict";var T7e=n1(),H9t=dY(),vk=Object.create(null);A7e.exports=function(e){return Object.defineProperties(e,{for:T7e(function(t){return vk[t]?vk[t]:vk[t]=e(String(t))}),keyFor:T7e(function(t){var r;H9t(t);for(r in vk)if(vk[r]===t)return r})})}});var k7e=ye((xgr,E7e)=>{"use strict";var Xm=n1(),vY=dY(),sF=dk().Symbol,G9t=x7e(),j9t=w7e(),W9t=S7e(),Z9t=Object.create,pY=Object.defineProperties,lF=Object.defineProperty,Wv,sA,M7e;if(typeof sF=="function")try{String(sF()),M7e=!0}catch(e){}else sF=null;sA=function(t){if(this instanceof sA)throw new TypeError("Symbol is not a constructor");return Wv(t)};E7e.exports=Wv=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return M7e?sF(t):(r=Z9t(sA.prototype),t=t===void 0?"":String(t),pY(r,{__description__:Xm("",t),__name__:Xm("",G9t(t))}))};j9t(Wv);W9t(Wv);pY(sA.prototype,{constructor:Xm(Wv),toString:Xm("",function(){return this.__name__})});pY(Wv.prototype,{toString:Xm(function(){return"Symbol ("+vY(this).__description__+")"}),valueOf:Xm(function(){return vY(this)})});lF(Wv.prototype,Wv.toPrimitive,Xm("",function(){var e=vY(this);return typeof e=="symbol"?e:e.toString()}));lF(Wv.prototype,Wv.toStringTag,Xm("c","Symbol"));lF(sA.prototype,Wv.toStringTag,Xm("c",Wv.prototype[Wv.toStringTag]));lF(sA.prototype,Wv.toPrimitive,Xm("c",Wv.prototype[Wv.toPrimitive]))});var ux=ye((bgr,C7e)=>{"use strict";C7e.exports=h7e()()?dk().Symbol:k7e()});var P7e=ye((wgr,L7e)=>{"use strict";var X9t=i1();L7e.exports=function(){return X9t(this).length=0,this}});var lA=ye((Tgr,I7e)=>{"use strict";I7e.exports=function(e){if(typeof e!="function")throw new TypeError(e+" is not a function");return e}});var D7e=ye((Agr,R7e)=>{"use strict";var Y9t=$2(),K9t=nF(),J9t=Object.prototype.toString;R7e.exports=function(e){if(!Y9t(e))return null;if(K9t(e)){var t=e.toString;if(typeof t!="function"||t===J9t)return null}try{return""+e}catch(r){return null}}});var F7e=ye((Sgr,z7e)=>{"use strict";z7e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(r){return null}}}});var O7e=ye((Mgr,q7e)=>{"use strict";var $9t=F7e(),Q9t=/[\n\r\u2028\u2029]/g;q7e.exports=function(e){var t=$9t(e);return t===null?"":(t.length>100&&(t=t.slice(0,99)+"\u2026"),t=t.replace(Q9t,function(r){switch(r){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),t)}});var gY=ye((Egr,U7e)=>{"use strict";var B7e=$2(),eqt=nF(),tqt=D7e(),rqt=O7e(),N7e=function(e,t){return e.replace("%v",rqt(t))};U7e.exports=function(e,t,r){if(!eqt(r))throw new TypeError(N7e(t,e));if(!B7e(e)){if("default"in r)return r.default;if(r.isOptional)return null}var n=tqt(r.errorMessage);throw B7e(n)||(n=t),new TypeError(N7e(n,e))}});var H7e=ye((kgr,V7e)=>{"use strict";var iqt=gY(),nqt=$2();V7e.exports=function(e){return nqt(e)?e:iqt(e,"Cannot use %v",arguments[1])}});var j7e=ye((Cgr,G7e)=>{"use strict";var aqt=gY(),oqt=lY();G7e.exports=function(e){return oqt(e)?e:aqt(e,"%v is not a plain function",arguments[1])}});var Z7e=ye((Lgr,W7e)=>{"use strict";W7e.exports=function(){var e=Array.from,t,r;return typeof e!="function"?!1:(t=["raz","dwa"],r=e(t),!!(r&&r!==t&&r[1]==="dwa"))}});var Y7e=ye((Pgr,X7e)=>{"use strict";var sqt=Object.prototype.toString,lqt=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);X7e.exports=function(e){return typeof e=="function"&&lqt(sqt.call(e))}});var J7e=ye((Igr,K7e)=>{"use strict";K7e.exports=function(){var e=Math.sign;return typeof e!="function"?!1:e(10)===1&&e(-20)===-1}});var Q7e=ye((Rgr,$7e)=>{"use strict";$7e.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}});var t9e=ye((Dgr,e9e)=>{"use strict";e9e.exports=J7e()()?Math.sign:Q7e()});var i9e=ye((zgr,r9e)=>{"use strict";var uqt=t9e(),cqt=Math.abs,fqt=Math.floor;r9e.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:uqt(e)*fqt(cqt(e)))}});var a9e=ye((Fgr,n9e)=>{"use strict";var hqt=i9e(),dqt=Math.max;n9e.exports=function(e){return dqt(0,hqt(e))}});var u9e=ye((qgr,l9e)=>{"use strict";var vqt=ux().iterator,pqt=fk(),gqt=Y7e(),mqt=a9e(),o9e=lA(),yqt=i1(),_qt=lx(),xqt=hk(),s9e=Array.isArray,mY=Function.prototype.call,Q2={configurable:!0,enumerable:!0,writable:!0,value:null},yY=Object.defineProperty;l9e.exports=function(e){var t=arguments[1],r=arguments[2],n,i,a,o,s,l,u,c,f,h;if(e=Object(yqt(e)),_qt(t)&&o9e(t),!this||this===Array||!gqt(this)){if(!t){if(pqt(e))return s=e.length,s!==1?Array.apply(null,e):(o=new Array(1),o[0]=e[0],o);if(s9e(e)){for(o=new Array(s=e.length),i=0;i=55296&&l<=56319&&(h+=e[++i])),h=t?mY.call(t,r,h,a):h,n?(Q2.value=h,yY(o,a,Q2)):o[a]=h,++a;s=a}}if(s===void 0)for(s=mqt(e.length),n&&(o=new n(s)),i=0;i{"use strict";c9e.exports=Z7e()()?Array.from:u9e()});var d9e=ye((Bgr,h9e)=>{"use strict";var bqt=f9e(),wqt=aF(),Tqt=i1();h9e.exports=function(e){var t=Object(Tqt(e)),r=arguments[1],n=Object(arguments[2]);if(t!==e&&!r)return t;var i={};return r?bqt(r,function(a){(n.ensure||a in e)&&(i[a]=e[a])}):wqt(i,e),i}});var g9e=ye((Ngr,p9e)=>{"use strict";var Aqt=lA(),Sqt=i1(),Mqt=Function.prototype.bind,v9e=Function.prototype.call,Eqt=Object.keys,kqt=Object.prototype.propertyIsEnumerable;p9e.exports=function(e,t){return function(r,n){var i,a=arguments[2],o=arguments[3];return r=Object(Sqt(r)),Aqt(n),i=Eqt(r),o&&i.sort(typeof o=="function"?Mqt.call(o,r):void 0),typeof e!="function"&&(e=i[e]),v9e.call(e,i,function(s,l){return kqt.call(r,s)?v9e.call(n,a,r[s],s,r,l):t})}}});var y9e=ye((Ugr,m9e)=>{"use strict";m9e.exports=g9e()("forEach")});var x9e=ye((Vgr,_9e)=>{"use strict";var Cqt=lA(),Lqt=y9e(),Pqt=Function.prototype.call;_9e.exports=function(e,t){var r={},n=arguments[2];return Cqt(t),Lqt(e,function(i,a,o,s){r[a]=Pqt.call(t,n,i,a,o,s)}),r}});var A9e=ye((Hgr,T9e)=>{"use strict";var Iqt=$2(),Rqt=H7e(),b9e=j7e(),Dqt=d9e(),zqt=uY(),Fqt=x9e(),qqt=Function.prototype.bind,Oqt=Object.defineProperty,Bqt=Object.prototype.hasOwnProperty,w9e;w9e=function(e,t,r){var n=Rqt(t)&&b9e(t.value),i;return i=Dqt(t),delete i.writable,delete i.value,i.get=function(){return!r.overwriteDefinition&&Bqt.call(this,e)?n:(t.value=qqt.call(n,r.resolveContext?r.resolveContext(this):this),Oqt(this,e,t),this[e])},i};T9e.exports=function(e){var t=zqt(arguments[1]);return Iqt(t.resolveContext)&&b9e(t.resolveContext),Fqt(e,function(r,n){return w9e(n,r,t)})}});var _Y=ye((Ggr,k9e)=>{"use strict";var Nqt=P7e(),Uqt=aF(),Vqt=lA(),Hqt=i1(),Op=n1(),Gqt=A9e(),S9e=ux(),M9e=Object.defineProperty,E9e=Object.defineProperties,pk;k9e.exports=pk=function(e,t){if(!(this instanceof pk))throw new TypeError("Constructor requires 'new'");E9e(this,{__list__:Op("w",Hqt(e)),__context__:Op("w",t),__nextIndex__:Op("w",0)}),t&&(Vqt(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))};delete pk.prototype.constructor;E9e(pk.prototype,Uqt({_next:Op(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){M9e(this,"__redo__",Op("c",[e]));return}this.__redo__.forEach(function(t,r){t>=e&&(this.__redo__[r]=++t)},this),this.__redo__.push(e)}}),_onDelete:Op(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(r,n){r>e&&(this.__redo__[n]=--r)},this)))}),_onClear:Op(function(){this.__redo__&&Nqt.call(this.__redo__),this.__nextIndex__=0})})));M9e(pk.prototype,S9e.iterator,Op(function(){return this}))});var R9e=ye((jgr,I9e)=>{"use strict";var C9e=iF(),L9e=fY(),xY=n1(),jqt=ux(),bY=_Y(),P9e=Object.defineProperty,uA;uA=I9e.exports=function(e,t){if(!(this instanceof uA))throw new TypeError("Constructor requires 'new'");bY.call(this,e),t?L9e.call(t,"key+value")?t="key+value":L9e.call(t,"key")?t="key":t="value":t="value",P9e(this,"__kind__",xY("",t))};C9e&&C9e(uA,bY);delete uA.prototype.constructor;uA.prototype=Object.create(bY.prototype,{_resolve:xY(function(e){return this.__kind__==="value"?this.__list__[e]:this.__kind__==="key+value"?[e,this.__list__[e]]:e})});P9e(uA.prototype,jqt.toStringTag,xY("c","Array Iterator"))});var q9e=ye((Wgr,F9e)=>{"use strict";var D9e=iF(),uF=n1(),Wqt=ux(),wY=_Y(),z9e=Object.defineProperty,cA;cA=F9e.exports=function(e){if(!(this instanceof cA))throw new TypeError("Constructor requires 'new'");e=String(e),wY.call(this,e),z9e(this,"__length__",uF("",e.length))};D9e&&D9e(cA,wY);delete cA.prototype.constructor;cA.prototype=Object.create(wY.prototype,{_next:uF(function(){if(this.__list__){if(this.__nextIndex__=55296&&r<=56319?t+this.__list__[this.__nextIndex__++]:t)})});z9e(cA.prototype,Wqt.toStringTag,uF("c","String Iterator"))});var B9e=ye((Zgr,O9e)=>{"use strict";var Zqt=fk(),Xqt=lx(),Yqt=hk(),Kqt=ux().iterator,Jqt=Array.isArray;O9e.exports=function(e){return Xqt(e)?Jqt(e)||Yqt(e)||Zqt(e)?!0:typeof e[Kqt]=="function":!1}});var U9e=ye((Xgr,N9e)=>{"use strict";var $qt=B9e();N9e.exports=function(e){if(!$qt(e))throw new TypeError(e+" is not iterable");return e}});var TY=ye((Ygr,G9e)=>{"use strict";var Qqt=fk(),eOt=hk(),V9e=R9e(),tOt=q9e(),rOt=U9e(),H9e=ux().iterator;G9e.exports=function(e){return typeof rOt(e)[H9e]=="function"?e[H9e]():Qqt(e)?new V9e(e):eOt(e)?new tOt(e):new V9e(e)}});var W9e=ye((Kgr,j9e)=>{"use strict";var iOt=fk(),nOt=lA(),aOt=hk(),oOt=TY(),sOt=Array.isArray,AY=Function.prototype.call,lOt=Array.prototype.some;j9e.exports=function(e,t){var r,n=arguments[2],i,a,o,s,l,u,c;if(sOt(e)||iOt(e)?r="array":aOt(e)?r="string":e=oOt(e),nOt(t),a=function(){o=!0},r==="array"){lOt.call(e,function(f){return AY.call(t,n,f,a),o});return}if(r==="string"){for(l=e.length,s=0;s=55296&&c<=56319&&(u+=e[++s])),AY.call(t,n,u,a),!o);++s);return}for(i=e.next();!i.done;){if(AY.call(t,n,i.value,a),o)return;i=e.next()}}});var X9e=ye((Jgr,Z9e)=>{"use strict";Z9e.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()});var J9e=ye(($gr,K9e)=>{"use strict";var uOt=lx(),fF=iF(),cF=AFe(),cOt=i1(),fOt=MFe(),a1=n1(),hOt=TY(),dOt=W9e(),vOt=ux().toStringTag,Y9e=X9e(),pOt=Array.isArray,MY=Object.defineProperty,SY=Object.prototype.hasOwnProperty,gOt=Object.getPrototypeOf,cx;K9e.exports=cx=function(){var e=arguments[0],t;if(!(this instanceof cx))throw new TypeError("Constructor requires 'new'");return t=Y9e&&fF&&WeakMap!==cx?fF(new WeakMap,gOt(this)):this,uOt(e)&&(pOt(e)||(e=hOt(e))),MY(t,"__weakMapData__",a1("c","$weakMap$"+fOt())),e&&dOt(e,function(r){cOt(r),t.set(r[0],r[1])}),t};Y9e&&(fF&&fF(cx,WeakMap),cx.prototype=Object.create(WeakMap.prototype,{constructor:a1(cx)}));Object.defineProperties(cx.prototype,{delete:a1(function(e){return SY.call(cF(e),this.__weakMapData__)?(delete e[this.__weakMapData__],!0):!1}),get:a1(function(e){if(SY.call(cF(e),this.__weakMapData__))return e[this.__weakMapData__]}),has:a1(function(e){return SY.call(cF(e),this.__weakMapData__)}),set:a1(function(e,t){return MY(cF(e),this.__weakMapData__,a1("c",t)),this}),toString:a1(function(){return"[object WeakMap]"})});MY(cx.prototype,vOt,a1("c","WeakMap"))});var EY=ye((Qgr,$9e)=>{"use strict";$9e.exports=fFe()()?WeakMap:J9e()});var eqe=ye((emr,Q9e)=>{"use strict";Q9e.exports=function(e,t,r){if(typeof Array.prototype.findIndex=="function")return e.findIndex(t,r);if(typeof t!="function")throw new TypeError("predicate must be a function");var n=Object(e),i=n.length;if(i===0)return-1;for(var a=0;a{"use strict";var hF=$_(),mOt=j2(),CY=bh(),yOt=Zm(),_Ot=W2(),tqe=sFe(),xOt=uFe(),{float32:bOt,fract32:kY}=Xz(),wOt=EY(),rqe=Q5(),TOt=eqe(),AOt=` +precision highp float; + +attribute vec2 aCoord, bCoord, aCoordFract, bCoordFract; +attribute vec4 color; +attribute float lineEnd, lineTop; + +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; + +varying vec4 fragColor; +varying vec2 tangent; + +vec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) { + // the order is important + return position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; +} + +void main() { + float lineStart = 1. - lineEnd; + float lineOffset = lineTop * 2. - 1.; + + vec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract); + tangent = normalize(diff * scale * viewport.zw); + vec2 normal = vec2(-tangent.y, tangent.x); + + vec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart + + project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd + + + thickness * normal * .5 * lineOffset / viewport.zw; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; +} +`,SOt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; + +void main() { + float alpha = 1.; + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`,MOt=` +precision highp float; + +attribute vec2 position, positionFract; + +uniform vec4 color; +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float pixelRatio, id; +uniform vec4 viewport; +uniform float opacity; + +varying vec4 fragColor; + +const float MAX_LINES = 256.; + +void main() { + float depth = (MAX_LINES - 4. - id) / (MAX_LINES); + + vec2 position = position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; + fragColor.a *= opacity; +} +`,EOt=` +precision highp float; +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`,kOt=` +precision highp float; + +attribute vec2 aCoord, bCoord, nextCoord, prevCoord; +attribute vec4 aColor, bColor; +attribute float lineEnd, lineTop; + +uniform vec2 scale, translate; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; +uniform float miterLimit, miterMode; + +varying vec4 fragColor; +varying vec4 startCutoff, endCutoff; +varying vec2 tangent; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +const float REVERSE_THRESHOLD = -.875; +const float MIN_DIFF = 1e-6; + +// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead +// TODO: precalculate dot products, normalize things beforehead etc. +// TODO: refactor to rectangular algorithm + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +bool isNaN( float val ){ + return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true; +} + +void main() { + vec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord; + + vec2 adjustedScale; + adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x; + adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y; + + vec2 scaleRatio = adjustedScale * viewport.zw; + vec2 normalWidth = thickness / scaleRatio; + + float lineStart = 1. - lineEnd; + float lineBot = 1. - lineTop; + + fragColor = (lineStart * aColor + lineEnd * bColor) / 255.; + + if (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return; + + if (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord); + if (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord); + + + vec2 prevDiff = aCoord - prevCoord; + vec2 currDiff = bCoord - aCoord; + vec2 nextDiff = nextCoord - bCoord; + + vec2 prevTangent = normalize(prevDiff * scaleRatio); + vec2 currTangent = normalize(currDiff * scaleRatio); + vec2 nextTangent = normalize(nextDiff * scaleRatio); + + vec2 prevNormal = vec2(-prevTangent.y, prevTangent.x); + vec2 currNormal = vec2(-currTangent.y, currTangent.x); + vec2 nextNormal = vec2(-nextTangent.y, nextTangent.x); + + vec2 startJoinDirection = normalize(prevTangent - currTangent); + vec2 endJoinDirection = normalize(currTangent - nextTangent); + + // collapsed/unidirectional segment cases + // FIXME: there should be more elegant solution + vec2 prevTanDiff = abs(prevTangent - currTangent); + vec2 nextTanDiff = abs(nextTangent - currTangent); + if (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) { + startJoinDirection = currNormal; + } + if (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) { + endJoinDirection = currNormal; + } + if (aCoord == bCoord) { + endJoinDirection = startJoinDirection; + currNormal = prevNormal; + currTangent = prevTangent; + } + + tangent = currTangent; + + //calculate join shifts relative to normals + float startJoinShift = dot(currNormal, startJoinDirection); + float endJoinShift = dot(currNormal, endJoinDirection); + + float startMiterRatio = abs(1. / startJoinShift); + float endMiterRatio = abs(1. / endJoinShift); + + vec2 startJoin = startJoinDirection * startMiterRatio; + vec2 endJoin = endJoinDirection * endMiterRatio; + + vec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin; + startTopJoin = sign(startJoinShift) * startJoin * .5; + startBotJoin = -startTopJoin; + + endTopJoin = sign(endJoinShift) * endJoin * .5; + endBotJoin = -endTopJoin; + + vec2 aTopCoord = aCoord + normalWidth * startTopJoin; + vec2 bTopCoord = bCoord + normalWidth * endTopJoin; + vec2 aBotCoord = aCoord + normalWidth * startBotJoin; + vec2 bBotCoord = bCoord + normalWidth * endBotJoin; + + //miter anti-clipping + float baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x))); + float abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x))); + + //prevent close to reverse direction switch + bool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal); + bool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal); + + if (prevReverse) { + //make join rectangular + vec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.); + aBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + aTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) { + //handle miter clipping + bTopCoord -= normalWidth * endTopJoin; + bTopCoord += normalize(endTopJoin * normalWidth) * baClipping; + } + + if (nextReverse) { + //make join rectangular + vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.); + bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) { + //handle miter clipping + aBotCoord -= normalWidth * startBotJoin; + aBotCoord += normalize(startBotJoin * normalWidth) * abClipping; + } + + vec2 aTopPosition = (aTopCoord) * adjustedScale + translate; + vec2 aBotPosition = (aBotCoord) * adjustedScale + translate; + + vec2 bTopPosition = (bTopCoord) * adjustedScale + translate; + vec2 bBotPosition = (bBotCoord) * adjustedScale + translate; + + //position is normalized 0..1 coord on the screen + vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd; + + startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy; + endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + enableStartMiter = step(dot(currTangent, prevTangent), .5); + enableEndMiter = step(dot(currTangent, nextTangent), .5); + + //bevel miter cutoffs + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } + + //round miter cutoffs + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } +} +`,COt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; +varying vec4 startCutoff, endCutoff; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +void main() { + float alpha = 1., distToStart, distToEnd; + float cutoff = thickness * .5; + + //bevel miter + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < -1.) { + discard; + return; + } + alpha *= min(max(distToStart + 1., 0.), 1.); + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < -1.) { + discard; + return; + } + alpha *= min(max(distToEnd + 1., 0.), 1.); + } + } + + // round miter + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < 0.) { + float radius = length(gl_FragCoord.xy - startCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < 0.) { + float radius = length(gl_FragCoord.xy - endCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + } + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`;iqe.exports=uc;function uc(e,t){if(!(this instanceof uc))return new uc(e,t);if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=e._gl,this.regl=e,this.passes=[],this.shaders=uc.shaders.has(e)?uc.shaders.get(e):uc.shaders.set(e,uc.createShaders(e)).get(e),this.update(t)}uc.dashMult=2;uc.maxPatternLength=256;uc.precisionThreshold=3e6;uc.maxPoints=1e4;uc.maxLines=2048;uc.shaders=new wOt;uc.createShaders=function(e){let t=e.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),r={primitive:"triangle strip",instances:e.prop("count"),count:4,offset:0,uniforms:{miterMode:(o,s)=>s.join==="round"?2:1,miterLimit:e.prop("miterLimit"),scale:e.prop("scale"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),thickness:e.prop("thickness"),dashTexture:e.prop("dashTexture"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),dashLength:e.prop("dashLength"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight],depth:e.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(o,s)=>!s.overlay},stencil:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport")},n=e(CY({vert:AOt,frag:SOt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},r)),i;try{i=e(CY({cull:{enable:!0,face:"back"},vert:kOt,frag:COt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){i=n}return{fill:e({primitive:"triangle",elements:(o,s)=>s.triangles,offset:0,vert:MOt,frag:EOt,uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight]},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:n,miter:i}};uc.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null};uc.prototype.render=function(...e){e.length&&this.update(...e),this.draw()};uc.prototype.draw=function(...e){return(e.length?e:this.passes).forEach((t,r)=>{if(t&&Array.isArray(t))return this.draw(...t);typeof t=="number"&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>uc.precisionThreshold||t.scale[1]*t.viewport.height>uc.precisionThreshold?this.shaders.rect(t):t.join==="rect"||!t.join&&(t.thickness<=2||t.count>=uc.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))}),this};uc.prototype.update=function(e){if(!e)return;e.length!=null?typeof e[0]=="number"&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);let{regl:t,gl:r}=this;if(e.forEach((i,a)=>{let o=this.passes[a];if(i!==void 0){if(i===null){this.passes[a]=null;return}if(typeof i[0]=="number"&&(i={positions:i}),i=yOt(i,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),o||(this.passes[a]=o={id:a,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:t.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},i=CY({},uc.defaults,i)),i.thickness!=null&&(o.thickness=parseFloat(i.thickness)),i.opacity!=null&&(o.opacity=parseFloat(i.opacity)),i.miterLimit!=null&&(o.miterLimit=parseFloat(i.miterLimit)),i.overlay!=null&&(o.overlay=!!i.overlay,aL-_),E=[],k=0,A=o.hole!=null?o.hole[0]:null;if(A!=null){let L=TOt(p,_=>_>=A);p=p.slice(0,L),p.push(A)}for(let L=0;Lg-A+(p[L]-k)),M=tqe(_,C);M=M.map(g=>g+k+(g+k{e.colorBuffer.destroy(),e.positionBuffer.destroy(),e.dashTexture.destroy()}),this.passes.length=0,this}});var lqe=ye((rmr,sqe)=>{"use strict";var LOt=j2(),POt=$_(),IOt=JX(),ROt=Zm(),nqe=bh(),aqe=W2(),{float32:DOt,fract32:PY}=Xz();sqe.exports=zOt;var oqe=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function zOt(e,t){if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let r=e._gl,n,i,a,o,s,l,u={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},c=[];return o=e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),i=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),a=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),s=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=e.buffer({usage:"static",type:"float",data:oqe}),v(t),n=e({vert:` + precision highp float; + + attribute vec2 position, positionFract; + attribute vec4 error; + attribute vec4 color; + + attribute vec2 direction, lineOffset, capOffset; + + uniform vec4 viewport; + uniform float lineWidth, capSize; + uniform vec2 scale, scaleFract, translate, translateFract; + + varying vec4 fragColor; + + void main() { + fragColor = color / 255.; + + vec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset; + + vec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw; + + vec2 position = position + dxy; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + pos += pixelOffset / viewport.zw; + + gl_Position = vec4(pos * 2. - 1., 0, 1); + } + `,frag:` + precision highp float; + + varying vec4 fragColor; + + uniform float opacity; + + void main() { + gl_FragColor = fragColor; + gl_FragColor.a *= opacity; + } + `,uniforms:{range:e.prop("range"),lineWidth:e.prop("lineWidth"),capSize:e.prop("capSize"),opacity:e.prop("opacity"),scale:e.prop("scale"),translate:e.prop("translate"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),viewport:(b,p)=>[p.viewport.x,p.viewport.y,b.viewportWidth,b.viewportHeight]},attributes:{color:{buffer:o,offset:(b,p)=>p.offset*4,divisor:1},position:{buffer:i,offset:(b,p)=>p.offset*8,divisor:1},positionFract:{buffer:a,offset:(b,p)=>p.offset*8,divisor:1},error:{buffer:s,offset:(b,p)=>p.offset*16,divisor:1},direction:{buffer:l,stride:24,offset:0},lineOffset:{buffer:l,stride:24,offset:8},capOffset:{buffer:l,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport"),stencil:!1,instances:e.prop("count"),count:oqe.length}),nqe(f,{update:v,draw:h,destroy:x,regl:e,gl:r,canvas:r.canvas,groups:c}),f;function f(b){b?v(b):b===null&&x(),h()}function h(b){if(typeof b=="number")return d(b);b&&!Array.isArray(b)&&(b=[b]),e._refresh(),c.forEach((p,E)=>{if(p){if(b&&(b[E]?p.draw=!0:p.draw=!1),!p.draw){p.draw=!0;return}d(E)}})}function d(b){typeof b=="number"&&(b=c[b]),b!=null&&b&&b.count&&b.color&&b.opacity&&b.positions&&b.positions.length>1&&(b.scaleRatio=[b.scale[0]*b.viewport.width,b.scale[1]*b.viewport.height],n(b),b.after&&b.after(b))}function v(b){if(!b)return;b.length!=null?typeof b[0]=="number"&&(b=[{positions:b}]):Array.isArray(b)||(b=[b]);let p=0,E=0;if(f.groups=c=b.map((L,_)=>{let C=c[_];if(L)typeof L=="function"?L={after:L}:typeof L[0]=="number"&&(L={positions:L});else return C;return L=ROt(L,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),C||(c[_]=C={id:_,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},L=nqe({},u,L)),IOt(C,L,[{lineWidth:M=>+M*.5,capSize:M=>+M*.5,opacity:parseFloat,errors:M=>(M=aqe(M),E+=M.length,M),positions:(M,g)=>(M=aqe(M,"float64"),g.count=Math.floor(M.length/2),g.bounds=LOt(M,2),g.offset=p,p+=g.count,M)},{color:(M,g)=>{let P=g.count;if(M||(M="transparent"),!Array.isArray(M)||typeof M[0]=="number"){let F=M;M=Array(P);for(let q=0;q{let T=g.bounds;return M||(M=T),g.scale=[1/(M[2]-M[0]),1/(M[3]-M[1])],g.translate=[-M[0],-M[1]],g.scaleFract=PY(g.scale),g.translateFract=PY(g.translate),M},viewport:M=>{let g;return Array.isArray(M)?g={x:M[0],y:M[1],width:M[2]-M[0],height:M[3]-M[1]}:M?(g={x:M.x||M.left||0,y:M.y||M.top||0},M.right?g.width=M.right-g.x:g.width=M.w||M.width||0,M.bottom?g.height=M.bottom-g.y:g.height=M.h||M.height||0):g={x:0,y:0,width:r.drawingBufferWidth,height:r.drawingBufferHeight},g}}]),C}),p||E){let L=c.reduce((g,P,T)=>g+(P?P.count:0),0),_=new Float64Array(L*2),C=new Uint8Array(L*4),M=new Float32Array(L*4);c.forEach((g,P)=>{if(!g)return;let{positions:T,count:F,offset:q,color:V,errors:H}=g;F&&(C.set(V,q*4),M.set(H,q*4),_.set(T,q*2))});var k=DOt(_);i(k);var A=PY(_,k);a(A),o(C),s(M)}}function x(){i.destroy(),a.destroy(),o.destroy(),s.destroy(),l.destroy()}}});var fqe=ye((imr,cqe)=>{var uqe=/[\'\"]/;cqe.exports=function(t){return t?(uqe.test(t.charAt(0))&&(t=t.substr(1)),uqe.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}});var IY=ye(()=>{});var RY=ye(()=>{});var DY=ye(()=>{});var zY=ye(()=>{});var FY=ye(()=>{});var pqe=ye((vmr,vqe)=>{"use strict";function hqe(e,t){if(typeof e!="string")return[e];var r=[e];typeof t=="string"||Array.isArray(t)?t={brackets:t}:t||(t={});var n=t.brackets?Array.isArray(t.brackets)?t.brackets:[t.brackets]:["{}","[]","()"],i=t.escape||"___",a=!!t.flat;n.forEach(function(l){var u=new RegExp(["\\",l[0],"[^\\",l[0],"\\",l[1],"]*\\",l[1]].join("")),c=[];function f(h,d,v){var x=r.push(h.slice(l[0].length,-l[1].length))-1;return c.push(x),i+x+i}r.forEach(function(h,d){for(var v,x=0;h!=v;)if(v=h,h=h.replace(u,f),x++>1e4)throw Error("References have circular dependency. Please, check them.");r[d]=h}),c=c.reverse(),r=r.map(function(h){return c.forEach(function(d){h=h.replace(new RegExp("(\\"+i+d+"\\"+i+")","g"),l[0]+"$1"+l[1])}),h})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);function s(l,u,c){for(var f=[],h,d=0;h=o.exec(l);){if(d++>1e4)throw Error("Circular references in parenthesis");f.push(l.slice(0,h.index)),f.push(s(u[h[1]],u)),l=l.slice(h.index+h[0].length)}return f.push(l),f}return a?r:s(r[0],r)}function dqe(e,t){if(t&&t.flat){var r=t&&t.escape||"___",n=e[0],i;if(!n)return"";for(var a=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;n!=i;){if(o++>1e4)throw Error("Circular references in "+e);i=n,n=n.replace(a,s)}return n}return e.reduce(function l(u,c){return Array.isArray(c)&&(c=c.reduce(l,"")),u+c},"");function s(l,u){if(e[u]==null)throw Error("Reference "+u+"is undefined");return e[u]}}function qY(e,t){return Array.isArray(e)?dqe(e,t):hqe(e,t)}qY.parse=hqe;qY.stringify=dqe;vqe.exports=qY});var yqe=ye((pmr,mqe)=>{"use strict";var gqe=pqe();mqe.exports=function(t,r,n){if(t==null)throw Error("First argument should be a string");if(r==null)throw Error("Separator should be a string or a RegExp");n?(typeof n=="string"||Array.isArray(n))&&(n={ignore:n}):n={},n.escape==null&&(n.escape=!0),n.ignore==null?n.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map(function(f){return f.length===1&&(f=f+f),f}));var i=gqe.parse(t,{flat:!0,brackets:n.ignore}),a=i[0],o=a.split(r);if(n.escape){for(var s=[],l=0;l{});var OY=ye((ymr,xqe)=>{"use strict";var FOt=_qe();xqe.exports={isSize:function(t){return/^[\d\.]/.test(t)||t.indexOf("/")!==-1||FOt.indexOf(t)!==-1}}});var Aqe=ye((_mr,Tqe)=>{"use strict";var qOt=fqe(),OOt=IY(),BOt=RY(),NOt=DY(),UOt=zY(),VOt=FY(),BY=yqe(),HOt=OY().isSize;Tqe.exports=wqe;var gk=wqe.cache={};function wqe(e){if(typeof e!="string")throw new Error("Font argument must be a string.");if(gk[e])return gk[e];if(e==="")throw new Error("Cannot parse an empty string.");if(BOt.indexOf(e)!==-1)return gk[e]={system:e};for(var t={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},r=BY(e,/\s+/),n;n=r.shift();){if(OOt.indexOf(n)!==-1)return["style","variant","weight","stretch"].forEach(function(a){t[a]=n}),gk[e]=t;if(UOt.indexOf(n)!==-1){t.style=n;continue}if(n==="normal"||n==="small-caps"){t.variant=n;continue}if(VOt.indexOf(n)!==-1){t.stretch=n;continue}if(NOt.indexOf(n)!==-1){t.weight=n;continue}if(HOt(n)){var i=BY(n,"/");if(t.size=i[0],i[1]!=null?t.lineHeight=bqe(i[1]):r[0]==="/"&&(r.shift(),t.lineHeight=bqe(r.shift())),!r.length)throw new Error("Missing required font-family.");return t.family=BY(r.join(" "),/\s*,\s*/).map(qOt),gk[e]=t}throw new Error("Unknown or unsupported font token: "+n)}throw new Error("Missing required font-size.")}function bqe(e){var t=parseFloat(e);return t.toString()===e?t:e}});var UY=ye((xmr,Sqe)=>{"use strict";var GOt=Zm(),jOt=OY().isSize,WOt=yk(IY()),ZOt=yk(RY()),XOt=yk(DY()),YOt=yk(zY()),KOt=yk(FY()),JOt={normal:1,"small-caps":1},$Ot={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},NY={style:"normal",variant:"normal",weight:"normal",stretch:"normal",size:"1rem",lineHeight:"normal",family:"serif"};Sqe.exports=function(t){if(t=GOt(t,{style:"style fontstyle fontStyle font-style slope distinction",variant:"variant font-variant fontVariant fontvariant var capitalization",weight:"weight w font-weight fontWeight fontweight",stretch:"stretch font-stretch fontStretch fontstretch width",size:"size s font-size fontSize fontsize height em emSize",lineHeight:"lh line-height lineHeight lineheight leading",family:"font family fontFamily font-family fontfamily type typeface face",system:"system reserved default global"}),t.system)return t.system&&mk(t.system,ZOt),t.system;if(mk(t.style,YOt),mk(t.variant,JOt),mk(t.weight,XOt),mk(t.stretch,KOt),t.size==null&&(t.size=NY.size),typeof t.size=="number"&&(t.size+="px"),!jOt)throw Error("Bad size value `"+t.size+"`");t.family||(t.family=NY.family),Array.isArray(t.family)&&(t.family.length||(t.family=[NY.family]),t.family=t.family.map(function(n){return $Ot[n]?n:'"'+n+'"'}).join(", "));var r=[];return r.push(t.style),t.variant!==t.style&&r.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&r.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&r.push(t.stretch),r.push(t.size+(t.lineHeight==null||t.lineHeight==="normal"||t.lineHeight+""=="1"?"":"/"+t.lineHeight)),r.push(t.family),r.filter(Boolean).join(" ")};function mk(e,t){if(e&&!t[e]&&!WOt[e])throw Error("Unknown keyword `"+e+"`");return e}function yk(e){for(var t={},r=0;r{"use strict";Mqe.exports={parse:Aqe(),stringify:UY()}});var GY=ye((VY,HY)=>{(function(e,t){typeof VY=="object"&&typeof HY!="undefined"?HY.exports=t():e.createREGL=t()})(VY,function(){"use strict";var e=function(At,Er){for(var Wr=Object.keys(Er),wi=0;wi1&&Er===Wr&&(Er==='"'||Er==="'"))return['"'+o(At.substr(1,At.length-2))+'"'];var wi=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(At);if(wi)return s(At.substr(0,wi.index)).concat(s(wi[1])).concat(s(At.substr(wi.index+wi[0].length)));var Ui=At.split(".");if(Ui.length===1)return['"'+o(At)+'"'];for(var Oi=[],Bi=0;Bi65535)<<4,At>>>=Er,Wr=(At>255)<<3,At>>>=Wr,Er|=Wr,Wr=(At>15)<<2,At>>>=Wr,Er|=Wr,Wr=(At>3)<<1,At>>>=Wr,Er|=Wr,Er|At>>1}function N(){var At=M(8,function(){return[]});function Er(Oi){var Bi=X(Oi),cn=At[G(Bi)>>2];return cn.length>0?cn.pop():new ArrayBuffer(Bi)}function Wr(Oi){At[G(Oi.byteLength)>>2].push(Oi)}function wi(Oi,Bi){var cn=null;switch(Oi){case g:cn=new Int8Array(Er(Bi),0,Bi);break;case P:cn=new Uint8Array(Er(Bi),0,Bi);break;case T:cn=new Int16Array(Er(2*Bi),0,Bi);break;case F:cn=new Uint16Array(Er(2*Bi),0,Bi);break;case q:cn=new Int32Array(Er(4*Bi),0,Bi);break;case V:cn=new Uint32Array(Er(4*Bi),0,Bi);break;case H:cn=new Float32Array(Er(4*Bi),0,Bi);break;default:return null}return cn.length!==Bi?cn.subarray(0,Bi):cn}function Ui(Oi){Wr(Oi.buffer)}return{alloc:Er,free:Wr,allocType:wi,freeType:Ui}}var W=N();W.zero=N();var re=3408,ae=3410,_e=3411,Me=3412,ke=3413,ge=3414,ie=3415,Te=33901,Ee=33902,Ae=3379,ze=3386,Ce=34921,me=36347,Re=36348,ce=35661,Ge=35660,nt=34930,ct=36349,qt=34076,rt=34024,ot=7936,Rt=7937,kt=7938,Ct=35724,Yt=34047,xr=36063,er=34852,Ke=3553,xt=34067,bt=34069,Lt=33984,St=6408,Et=5126,dt=5121,Ht=36160,$t=36053,fr=36064,_r=16384,Br=function(At,Er){var Wr=1;Er.ext_texture_filter_anisotropic&&(Wr=At.getParameter(Yt));var wi=1,Ui=1;Er.webgl_draw_buffers&&(wi=At.getParameter(er),Ui=At.getParameter(xr));var Oi=!!Er.oes_texture_float;if(Oi){var Bi=At.createTexture();At.bindTexture(Ke,Bi),At.texImage2D(Ke,0,St,1,1,0,St,Et,null);var cn=At.createFramebuffer();if(At.bindFramebuffer(Ht,cn),At.framebufferTexture2D(Ht,fr,Ke,Bi,0),At.bindTexture(Ke,null),At.checkFramebufferStatus(Ht)!==$t)Oi=!1;else{At.viewport(0,0,1,1),At.clearColor(1,0,0,1),At.clear(_r);var On=W.allocType(Et,4);At.readPixels(0,0,1,1,St,Et,On),At.getError()?Oi=!1:(At.deleteFramebuffer(cn),At.deleteTexture(Bi),Oi=On[0]===1),W.freeType(On)}}var Bn=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),yn=!0;if(!Bn){var to=At.createTexture(),Rn=W.allocType(dt,36);At.activeTexture(Lt),At.bindTexture(xt,to),At.texImage2D(bt,0,St,3,3,0,St,dt,Rn),W.freeType(Rn),At.bindTexture(xt,null),At.deleteTexture(to),yn=!At.getError()}return{colorBits:[At.getParameter(ae),At.getParameter(_e),At.getParameter(Me),At.getParameter(ke)],depthBits:At.getParameter(ge),stencilBits:At.getParameter(ie),subpixelBits:At.getParameter(re),extensions:Object.keys(Er).filter(function(Dn){return!!Er[Dn]}),maxAnisotropic:Wr,maxDrawbuffers:wi,maxColorAttachments:Ui,pointSizeDims:At.getParameter(Te),lineWidthDims:At.getParameter(Ee),maxViewportDims:At.getParameter(ze),maxCombinedTextureUnits:At.getParameter(ce),maxCubeMapSize:At.getParameter(qt),maxRenderbufferSize:At.getParameter(rt),maxTextureUnits:At.getParameter(nt),maxTextureSize:At.getParameter(Ae),maxAttributes:At.getParameter(Ce),maxVertexUniforms:At.getParameter(me),maxVertexTextureUnits:At.getParameter(Ge),maxVaryingVectors:At.getParameter(Re),maxFragmentUniforms:At.getParameter(ct),glsl:At.getParameter(Ct),renderer:At.getParameter(Rt),vendor:At.getParameter(ot),version:At.getParameter(kt),readFloat:Oi,npotTextureCube:yn}},Or=function(At){return At instanceof Uint8Array||At instanceof Uint16Array||At instanceof Uint32Array||At instanceof Int8Array||At instanceof Int16Array||At instanceof Int32Array||At instanceof Float32Array||At instanceof Float64Array||At instanceof Uint8ClampedArray};function Nr(At){return!!At&&typeof At=="object"&&Array.isArray(At.shape)&&Array.isArray(At.stride)&&typeof At.offset=="number"&&At.shape.length===At.stride.length&&(Array.isArray(At.data)||Or(At.data))}var ut=function(At){return Object.keys(At).map(function(Er){return At[Er]})},Ne={shape:xe,flatten:Le};function Ye(At,Er,Wr){for(var wi=0;wi0){var Za;if(Array.isArray(ji[0])){Kn=$i(ji);for(var wn=1,vn=1;vn0){if(typeof wn[0]=="number"){var Xn=W.allocType(gn.dtype,wn.length);yr(Xn,wn),Kn(Xn,Aa),W.freeType(Xn)}else if(Array.isArray(wn[0])||Or(wn[0])){aa=$i(wn);var Vn=_n(wn,aa,gn.dtype);Kn(Vn,Aa),W.freeType(Vn)}}}else if(Nr(wn)){aa=wn.shape;var ma=wn.stride,ro=0,Ao=0,Jn=0,Oa=0;aa.length===1?(ro=aa[0],Ao=1,Jn=ma[0],Oa=0):aa.length===2&&(ro=aa[0],Ao=aa[1],Jn=ma[0],Oa=ma[1]);var _o=Array.isArray(wn.data)?gn.dtype:Zt(wn.data),Po=W.allocType(_o,ro*Ao);Fr(Po,wn.data,ro,Ao,Jn,Oa,wn.offset),Kn(Po,Aa),W.freeType(Po)}return ca}return Ln||ca(Ai),ca._reglType="buffer",ca._buffer=gn,ca.subdata=Za,Wr.profile&&(ca.stats=gn.stats),ca.destroy=function(){Rn(gn)},ca}function fn(){ut(Oi).forEach(function(Ai){Ai.buffer=At.createBuffer(),At.bindBuffer(Ai.type,Ai.buffer),At.bufferData(Ai.type,Ai.persistentData||Ai.byteLength,Ai.usage)})}return Wr.profile&&(Er.getTotalBufferSize=function(){var Ai=0;return Object.keys(Oi).forEach(function(ji){Ai+=Oi[ji].stats.size}),Ai}),{create:Dn,createStream:On,destroyStream:Bn,clear:function(){ut(Oi).forEach(Rn),cn.forEach(Rn)},getBuffer:function(Ai){return Ai&&Ai._buffer instanceof Bi?Ai._buffer:null},restore:fn,_initBuffer:to}}var Vr=0,gi=0,Si=1,Mi=1,Pi=4,Gi=4,Ki={points:Vr,point:gi,lines:Si,line:Mi,triangles:Pi,triangle:Gi,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ka=0,jn=1,la=4,Fa=5120,Ra=5121,jo=5122,oa=5123,Sn=5124,Ha=5125,oo=34963,xn=35040,_t=35044;function br(At,Er,Wr,wi){var Ui={},Oi=0,Bi={uint8:Ra,uint16:oa};Er.oes_element_index_uint&&(Bi.uint32=Ha);function cn(fn){this.id=Oi++,Ui[this.id]=this,this.buffer=fn,this.primType=la,this.vertCount=0,this.type=0}cn.prototype.bind=function(){this.buffer.bind()};var On=[];function Bn(fn){var Ai=On.pop();return Ai||(Ai=new cn(Wr.create(null,oo,!0,!1)._buffer)),to(Ai,fn,xn,-1,-1,0,0),Ai}function yn(fn){On.push(fn)}function to(fn,Ai,ji,Ln,Un,gn,ca){fn.buffer.bind();var Kn;if(Ai){var Za=ca;!ca&&(!Or(Ai)||Nr(Ai)&&!Or(Ai.data))&&(Za=Er.oes_element_index_uint?Ha:oa),Wr._initBuffer(fn.buffer,Ai,ji,Za,3)}else At.bufferData(oo,gn,ji),fn.buffer.dtype=Kn||Ra,fn.buffer.usage=ji,fn.buffer.dimension=3,fn.buffer.byteLength=gn;if(Kn=ca,!ca){switch(fn.buffer.dtype){case Ra:case Fa:Kn=Ra;break;case oa:case jo:Kn=oa;break;case Ha:case Sn:Kn=Ha;break;default:}fn.buffer.dtype=Kn}fn.type=Kn;var wn=Un;wn<0&&(wn=fn.buffer.byteLength,Kn===oa?wn>>=1:Kn===Ha&&(wn>>=2)),fn.vertCount=wn;var vn=Ln;if(Ln<0){vn=la;var Aa=fn.buffer.dimension;Aa===1&&(vn=ka),Aa===2&&(vn=jn),Aa===3&&(vn=la)}fn.primType=vn}function Rn(fn){wi.elementsCount--,delete Ui[fn.id],fn.buffer.destroy(),fn.buffer=null}function Dn(fn,Ai){var ji=Wr.create(null,oo,!0),Ln=new cn(ji._buffer);wi.elementsCount++;function Un(gn){if(!gn)ji(),Ln.primType=la,Ln.vertCount=0,Ln.type=Ra;else if(typeof gn=="number")ji(gn),Ln.primType=la,Ln.vertCount=gn|0,Ln.type=Ra;else{var ca=null,Kn=_t,Za=-1,wn=-1,vn=0,Aa=0;Array.isArray(gn)||Or(gn)||Nr(gn)?ca=gn:("data"in gn&&(ca=gn.data),"usage"in gn&&(Kn=Ni[gn.usage]),"primitive"in gn&&(Za=Ki[gn.primitive]),"count"in gn&&(wn=gn.count|0),"type"in gn&&(Aa=Bi[gn.type]),"length"in gn?vn=gn.length|0:(vn=wn,Aa===oa||Aa===jo?vn*=2:(Aa===Ha||Aa===Sn)&&(vn*=4))),to(Ln,ca,Kn,Za,wn,vn,Aa)}return Un}return Un(fn),Un._reglType="elements",Un._elements=Ln,Un.subdata=function(gn,ca){return ji.subdata(gn,ca),Un},Un.destroy=function(){Rn(Ln)},Un}return{create:Dn,createStream:Bn,destroyStream:yn,getElements:function(fn){return typeof fn=="function"&&fn._elements instanceof cn?fn._elements:null},clear:function(){ut(Ui).forEach(Rn)}}}var Hr=new Float32Array(1),ti=new Uint32Array(Hr.buffer),zi=5123;function Yi(At){for(var Er=W.allocType(zi,At.length),Wr=0;Wr>>31<<15,Oi=(wi<<1>>>24)-127,Bi=wi>>13&1023;if(Oi<-24)Er[Wr]=Ui;else if(Oi<-14){var cn=-14-Oi;Er[Wr]=Ui+(Bi+1024>>cn)}else Oi>15?Er[Wr]=Ui+31744:Er[Wr]=Ui+(Oi+15<<10)+Bi}return Er}function an(At){return Array.isArray(At)||Or(At)}var hi=34467,Ji=3553,ua=34067,Fn=34069,Sa=6408,go=6406,Oo=6407,ho=6409,Mo=6410,xo=32854,zs=32855,ks=36194,Zs=32819,Xs=32820,wl=33635,os=34042,cl=6402,Cs=34041,ml=35904,Ys=35906,Hs=36193,Eo=33776,fs=33777,Ql=33778,Hu=33779,fc=35986,ms=35987,on=34798,fa=35840,Qu=35841,Rl=35842,vo=35843,Zl=36196,Ks=5121,Xl=5123,Ec=5125,Zn=5126,ko=10242,Co=10243,Tl=10497,uf=33071,So=33648,cf=10240,rh=10241,Al=9728,Hc=9729,eu=9984,Ls=9985,mu=9986,kc=9987,Of=33170,Gc=4352,vd=4353,Bf=4354,ss=34046,ff=3317,ih=37440,Vl=37441,Js=37443,hc=37444,Cc=33984,ws=[eu,mu,Ls,kc],$s=[0,ho,Mo,Oo,Sa],hs={};hs[ho]=hs[go]=hs[cl]=1,hs[Cs]=hs[Mo]=2,hs[Oo]=hs[ml]=3,hs[Sa]=hs[Ys]=4;function Ms(At){return"[object "+At+"]"}var dc=Ms("HTMLCanvasElement"),Sl=Ms("OffscreenCanvas"),ec=Ms("CanvasRenderingContext2D"),Ps=Ms("ImageBitmap"),ov=Ms("HTMLImageElement"),wo=Ms("HTMLVideoElement"),Od=Object.keys(Se).concat([dc,Sl,ec,Ps,ov,wo]),$o=[];$o[Ks]=1,$o[Zn]=4,$o[Hs]=2,$o[Xl]=2,$o[Ec]=4;var Ja=[];Ja[xo]=2,Ja[zs]=2,Ja[ks]=2,Ja[Cs]=4,Ja[Eo]=.5,Ja[fs]=.5,Ja[Ql]=1,Ja[Hu]=1,Ja[fc]=.5,Ja[ms]=1,Ja[on]=1,Ja[fa]=.5,Ja[Qu]=.25,Ja[Rl]=.5,Ja[vo]=.25,Ja[Zl]=.5;function Ef(At){return Array.isArray(At)&&(At.length===0||typeof At[0]=="number")}function tc(At){if(!Array.isArray(At))return!1;var Er=At.length;return!(Er===0||!an(At[0]))}function uu(At){return Object.prototype.toString.call(At)}function Mh(At){return uu(At)===dc}function jc(At){return uu(At)===Sl}function kf(At){return uu(At)===ec}function Ml(At){return uu(At)===Ps}function Yh(At){return uu(At)===ov}function Eh(At){return uu(At)===wo}function nh(At){if(!At)return!1;var Er=uu(At);return Od.indexOf(Er)>=0?!0:Ef(At)||tc(At)||Nr(At)}function hf(At){return Se[Object.prototype.toString.call(At)]|0}function kh(At,Er){var Wr=Er.length;switch(At.type){case Ks:case Xl:case Ec:case Zn:var wi=W.allocType(At.type,Wr);wi.set(Er),At.data=wi;break;case Hs:At.data=Yi(Er);break;default:}}function Kh(At,Er){return W.allocType(At.type===Hs?Zn:At.type,Er)}function rc(At,Er){At.type===Hs?(At.data=Yi(Er),W.freeType(Er)):At.data=Er}function ah(At,Er,Wr,wi,Ui,Oi){for(var Bi=At.width,cn=At.height,On=At.channels,Bn=Bi*cn*On,yn=Kh(At,Bn),to=0,Rn=0;Rn=1;)cn+=Bi*On*On,On/=2;return cn}else return Bi*Wr*wi}function df(At,Er,Wr,wi,Ui,Oi,Bi){var cn={"don't care":Gc,"dont care":Gc,nice:Bf,fast:vd},On={repeat:Tl,clamp:uf,mirror:So},Bn={nearest:Al,linear:Hc},yn=e({mipmap:kc,"nearest mipmap nearest":eu,"linear mipmap nearest":Ls,"nearest mipmap linear":mu,"linear mipmap linear":kc},Bn),to={none:0,browser:hc},Rn={uint8:Ks,rgba4:Zs,rgb565:wl,"rgb5 a1":Xs},Dn={alpha:go,luminance:ho,"luminance alpha":Mo,rgb:Oo,rgba:Sa,rgba4:xo,"rgb5 a1":zs,rgb565:ks},fn={};Er.ext_srgb&&(Dn.srgb=ml,Dn.srgba=Ys),Er.oes_texture_float&&(Rn.float32=Rn.float=Zn),Er.oes_texture_half_float&&(Rn.float16=Rn["half float"]=Hs),Er.webgl_depth_texture&&(e(Dn,{depth:cl,"depth stencil":Cs}),e(Rn,{uint16:Xl,uint32:Ec,"depth stencil":os})),Er.webgl_compressed_texture_s3tc&&e(fn,{"rgb s3tc dxt1":Eo,"rgba s3tc dxt1":fs,"rgba s3tc dxt3":Ql,"rgba s3tc dxt5":Hu}),Er.webgl_compressed_texture_atc&&e(fn,{"rgb atc":fc,"rgba atc explicit alpha":ms,"rgba atc interpolated alpha":on}),Er.webgl_compressed_texture_pvrtc&&e(fn,{"rgb pvrtc 4bppv1":fa,"rgb pvrtc 2bppv1":Qu,"rgba pvrtc 4bppv1":Rl,"rgba pvrtc 2bppv1":vo}),Er.webgl_compressed_texture_etc1&&(fn["rgb etc1"]=Zl);var Ai=Array.prototype.slice.call(At.getParameter(hi));Object.keys(fn).forEach(function(de){var Ie=fn[de];Ai.indexOf(Ie)>=0&&(Dn[de]=Ie)});var ji=Object.keys(Dn);Wr.textureFormats=ji;var Ln=[];Object.keys(Dn).forEach(function(de){var Ie=Dn[de];Ln[Ie]=de});var Un=[];Object.keys(Rn).forEach(function(de){var Ie=Rn[de];Un[Ie]=de});var gn=[];Object.keys(Bn).forEach(function(de){var Ie=Bn[de];gn[Ie]=de});var ca=[];Object.keys(yn).forEach(function(de){var Ie=yn[de];ca[Ie]=de});var Kn=[];Object.keys(On).forEach(function(de){var Ie=On[de];Kn[Ie]=de});var Za=ji.reduce(function(de,Ie){var $e=Dn[Ie];return $e===ho||$e===go||$e===ho||$e===Mo||$e===cl||$e===Cs||Er.ext_srgb&&($e===ml||$e===Ys)?de[$e]=$e:$e===zs||Ie.indexOf("rgba")>=0?de[$e]=Sa:de[$e]=Oo,de},{});function wn(){this.internalformat=Sa,this.format=Sa,this.type=Ks,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=hc,this.width=0,this.height=0,this.channels=0}function vn(de,Ie){de.internalformat=Ie.internalformat,de.format=Ie.format,de.type=Ie.type,de.compressed=Ie.compressed,de.premultiplyAlpha=Ie.premultiplyAlpha,de.flipY=Ie.flipY,de.unpackAlignment=Ie.unpackAlignment,de.colorSpace=Ie.colorSpace,de.width=Ie.width,de.height=Ie.height,de.channels=Ie.channels}function Aa(de,Ie){if(!(typeof Ie!="object"||!Ie)){if("premultiplyAlpha"in Ie&&(de.premultiplyAlpha=Ie.premultiplyAlpha),"flipY"in Ie&&(de.flipY=Ie.flipY),"alignment"in Ie&&(de.unpackAlignment=Ie.alignment),"colorSpace"in Ie&&(de.colorSpace=to[Ie.colorSpace]),"type"in Ie){var $e=Ie.type;de.type=Rn[$e]}var pt=de.width,Kt=de.height,ir=de.channels,Jt=!1;"shape"in Ie?(pt=Ie.shape[0],Kt=Ie.shape[1],Ie.shape.length===3&&(ir=Ie.shape[2],Jt=!0)):("radius"in Ie&&(pt=Kt=Ie.radius),"width"in Ie&&(pt=Ie.width),"height"in Ie&&(Kt=Ie.height),"channels"in Ie&&(ir=Ie.channels,Jt=!0)),de.width=pt|0,de.height=Kt|0,de.channels=ir|0;var vt=!1;if("format"in Ie){var Pt=Ie.format,Wt=de.internalformat=Dn[Pt];de.format=Za[Wt],Pt in Rn&&("type"in Ie||(de.type=Rn[Pt])),Pt in fn&&(de.compressed=!0),vt=!0}!Jt&&vt?de.channels=hs[de.format]:Jt&&!vt&&de.channels!==$s[de.format]&&(de.format=de.internalformat=$s[de.channels])}}function aa(de){At.pixelStorei(ih,de.flipY),At.pixelStorei(Vl,de.premultiplyAlpha),At.pixelStorei(Js,de.colorSpace),At.pixelStorei(ff,de.unpackAlignment)}function Xn(){wn.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Vn(de,Ie){var $e=null;if(nh(Ie)?$e=Ie:Ie&&(Aa(de,Ie),"x"in Ie&&(de.xOffset=Ie.x|0),"y"in Ie&&(de.yOffset=Ie.y|0),nh(Ie.data)&&($e=Ie.data)),Ie.copy){var pt=Ui.viewportWidth,Kt=Ui.viewportHeight;de.width=de.width||pt-de.xOffset,de.height=de.height||Kt-de.yOffset,de.needsCopy=!0}else if(!$e)de.width=de.width||1,de.height=de.height||1,de.channels=de.channels||4;else if(Or($e))de.channels=de.channels||4,de.data=$e,!("type"in Ie)&&de.type===Ks&&(de.type=hf($e));else if(Ef($e))de.channels=de.channels||4,kh(de,$e),de.alignment=1,de.needsFree=!0;else if(Nr($e)){var ir=$e.data;!Array.isArray(ir)&&de.type===Ks&&(de.type=hf(ir));var Jt=$e.shape,vt=$e.stride,Pt,Wt,rr,dr,pr,kr;Jt.length===3?(rr=Jt[2],kr=vt[2]):(rr=1,kr=1),Pt=Jt[0],Wt=Jt[1],dr=vt[0],pr=vt[1],de.alignment=1,de.width=Pt,de.height=Wt,de.channels=rr,de.format=de.internalformat=$s[rr],de.needsFree=!0,ah(de,ir,dr,pr,kr,$e.offset)}else if(Mh($e)||jc($e)||kf($e))Mh($e)||jc($e)?de.element=$e:de.element=$e.canvas,de.width=de.element.width,de.height=de.element.height,de.channels=4;else if(Ml($e))de.element=$e,de.width=$e.width,de.height=$e.height,de.channels=4;else if(Yh($e))de.element=$e,de.width=$e.naturalWidth,de.height=$e.naturalHeight,de.channels=4;else if(Eh($e))de.element=$e,de.width=$e.videoWidth,de.height=$e.videoHeight,de.channels=4;else if(tc($e)){var Ar=de.width||$e[0].length,gr=de.height||$e.length,Cr=de.channels;an($e[0][0])?Cr=Cr||$e[0][0].length:Cr=Cr||1;for(var cr=Ne.shape($e),Gr=1,ei=0;ei>=Kt,$e.height>>=Kt,Vn($e,pt[Kt]),de.mipmask|=1<=0&&!("faces"in Ie)&&(de.genMipmaps=!0)}if("mag"in Ie){var pt=Ie.mag;de.magFilter=Bn[pt]}var Kt=de.wrapS,ir=de.wrapT;if("wrap"in Ie){var Jt=Ie.wrap;typeof Jt=="string"?Kt=ir=On[Jt]:Array.isArray(Jt)&&(Kt=On[Jt[0]],ir=On[Jt[1]])}else{if("wrapS"in Ie){var vt=Ie.wrapS;Kt=On[vt]}if("wrapT"in Ie){var Pt=Ie.wrapT;ir=On[Pt]}}if(de.wrapS=Kt,de.wrapT=ir,"anisotropic"in Ie){var Wt=Ie.anisotropic;de.anisotropic=Ie.anisotropic}if("mipmap"in Ie){var rr=!1;switch(typeof Ie.mipmap){case"string":de.mipmapHint=cn[Ie.mipmap],de.genMipmaps=!0,rr=!0;break;case"boolean":rr=de.genMipmaps=Ie.mipmap;break;case"object":de.genMipmaps=!1,rr=!0;break;default:}rr&&!("min"in Ie)&&(de.minFilter=eu)}}function wc(de,Ie){At.texParameteri(Ie,rh,de.minFilter),At.texParameteri(Ie,cf,de.magFilter),At.texParameteri(Ie,ko,de.wrapS),At.texParameteri(Ie,Co,de.wrapT),Er.ext_texture_filter_anisotropic&&At.texParameteri(Ie,ss,de.anisotropic),de.genMipmaps&&(At.hint(Of,de.mipmapHint),At.generateMipmap(Ie))}var yf=0,Gl={},Fc=Wr.maxTextureUnits,ef=Array(Fc).map(function(){return null});function ls(de){wn.call(this),this.mipmask=0,this.internalformat=Sa,this.id=yf++,this.refCount=1,this.target=de,this.texture=At.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new El,Bi.profile&&(this.stats={size:0})}function _f(de){At.activeTexture(Cc),At.bindTexture(de.target,de.texture)}function ns(){var de=ef[0];de?At.bindTexture(de.target,de.texture):At.bindTexture(Ji,null)}function Y(de){var Ie=de.texture,$e=de.unit,pt=de.target;$e>=0&&(At.activeTexture(Cc+$e),At.bindTexture(pt,null),ef[$e]=null),At.deleteTexture(Ie),de.texture=null,de.params=null,de.pixels=null,de.refCount=0,delete Gl[de.id],Oi.textureCount--}e(ls.prototype,{bind:function(){var de=this;de.bindCount+=1;var Ie=de.unit;if(Ie<0){for(var $e=0;$e0)continue;pt.unit=-1}ef[$e]=de,Ie=$e;break}Ie>=Fc,Bi.profile&&Oi.maxTextureUnits>pr)-rr,kr.height=kr.height||($e.height>>pr)-dr,_f($e),ro(kr,Ji,rr,dr,pr),ns(),Oa(kr),pt}function ir(Jt,vt){var Pt=Jt|0,Wt=vt|0||Pt;if(Pt===$e.width&&Wt===$e.height)return pt;pt.width=$e.width=Pt,pt.height=$e.height=Wt,_f($e);for(var rr=0;$e.mipmask>>rr;++rr){var dr=Pt>>rr,pr=Wt>>rr;if(!dr||!pr)break;At.texImage2D(Ji,rr,$e.format,dr,pr,0,$e.format,$e.type,null)}return ns(),Bi.profile&&($e.stats.size=Wc($e.internalformat,$e.type,Pt,Wt,!1,!1)),pt}return pt(de,Ie),pt.subimage=Kt,pt.resize=ir,pt._reglType="texture2d",pt._texture=$e,Bi.profile&&(pt.stats=$e.stats),pt.destroy=function(){$e.decRef()},pt}function K(de,Ie,$e,pt,Kt,ir){var Jt=new ls(ua);Gl[Jt.id]=Jt,Oi.cubeCount++;var vt=new Array(6);function Pt(dr,pr,kr,Ar,gr,Cr){var cr,Gr=Jt.texInfo;for(El.call(Gr),cr=0;cr<6;++cr)vt[cr]=xs();if(typeof dr=="number"||!dr){var ei=dr|0||1;for(cr=0;cr<6;++cr)Po(vt[cr],ei,ei)}else if(typeof dr=="object")if(pr)Jo(vt[0],dr),Jo(vt[1],pr),Jo(vt[2],kr),Jo(vt[3],Ar),Jo(vt[4],gr),Jo(vt[5],Cr);else if(bc(Gr,dr),Aa(Jt,dr),"faces"in dr){var yi=dr.faces;for(cr=0;cr<6;++cr)vn(vt[cr],Jt),Jo(vt[cr],yi[cr])}else for(cr=0;cr<6;++cr)Jo(vt[cr],dr);for(vn(Jt,vt[0]),Gr.genMipmaps?Jt.mipmask=(vt[0].width<<1)-1:Jt.mipmask=vt[0].mipmask,Jt.internalformat=vt[0].internalformat,Pt.width=vt[0].width,Pt.height=vt[0].height,_f(Jt),cr=0;cr<6;++cr)Yl(vt[cr],Fn+cr);for(wc(Gr,ua),ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,Gr.genMipmaps,!0)),Pt.format=Ln[Jt.internalformat],Pt.type=Un[Jt.type],Pt.mag=gn[Gr.magFilter],Pt.min=ca[Gr.minFilter],Pt.wrapS=Kn[Gr.wrapS],Pt.wrapT=Kn[Gr.wrapT],cr=0;cr<6;++cr)Qc(vt[cr]);return Pt}function Wt(dr,pr,kr,Ar,gr){var Cr=kr|0,cr=Ar|0,Gr=gr|0,ei=Jn();return vn(ei,Jt),ei.width=0,ei.height=0,Vn(ei,pr),ei.width=ei.width||(Jt.width>>Gr)-Cr,ei.height=ei.height||(Jt.height>>Gr)-cr,_f(Jt),ro(ei,Fn+dr,Cr,cr,Gr),ns(),Oa(ei),Pt}function rr(dr){var pr=dr|0;if(pr!==Jt.width){Pt.width=Jt.width=pr,Pt.height=Jt.height=pr,_f(Jt);for(var kr=0;kr<6;++kr)for(var Ar=0;Jt.mipmask>>Ar;++Ar)At.texImage2D(Fn+kr,Ar,Jt.format,pr>>Ar,pr>>Ar,0,Jt.format,Jt.type,null);return ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,!1,!0)),Pt}}return Pt(de,Ie,$e,pt,Kt,ir),Pt.subimage=Wt,Pt.resize=rr,Pt._reglType="textureCube",Pt._texture=Jt,Bi.profile&&(Pt.stats=Jt.stats),Pt.destroy=function(){Jt.decRef()},Pt}function O(){for(var de=0;de>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);else for(var Kt=0;Kt<6;++Kt)At.texImage2D(Fn+Kt,pt,$e.internalformat,$e.width>>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);wc($e.texInfo,$e.target)})}function pe(){for(var de=0;de=0?Qc=!0:On.indexOf(El)>=0&&(Qc=!1))),("depthTexture"in ls||"depthStencilTexture"in ls)&&(ef=!!(ls.depthTexture||ls.depthStencilTexture)),"depth"in ls&&(typeof ls.depth=="boolean"?Yl=ls.depth:(yf=ls.depth,$c=!1)),"stencil"in ls&&(typeof ls.stencil=="boolean"?$c=ls.stencil:(Gl=ls.stencil,Yl=!1)),"depthStencil"in ls&&(typeof ls.depthStencil=="boolean"?Yl=$c=ls.depthStencil:(Fc=ls.depthStencil,Yl=!1,$c=!1))}var ns=null,Y=null,z=null,K=null;if(Array.isArray(xs))ns=xs.map(fn);else if(xs)ns=[fn(xs)];else for(ns=new Array(wc),_o=0;_o0&&(Oa.depth=Vn[0].depth,Oa.stencil=Vn[0].stencil,Oa.depthStencil=Vn[0].depthStencil),Vn[Jn]?Vn[Jn](Oa):Vn[Jn]=vn(Oa)}return e(ma,{width:_o,height:_o,color:El})}function ro(Ao){var Jn,Oa=Ao|0;if(Oa===ma.width)return ma;var _o=ma.color;for(Jn=0;Jn<_o.length;++Jn)_o[Jn].resize(Oa);for(Jn=0;Jn<6;++Jn)Vn[Jn].resize(Oa);return ma.width=ma.height=Oa,ma}return ma(Xn),e(ma,{faces:Vn,resize:ro,_reglType:"framebufferCube",destroy:function(){Vn.forEach(function(Ao){Ao.destroy()})}})}function aa(){Bi.cur=null,Bi.next=null,Bi.dirty=!0,ut(gn).forEach(function(Xn){Xn.framebuffer=At.createFramebuffer(),wn(Xn)})}return e(Bi,{getFramebuffer:function(Xn){if(typeof Xn=="function"&&Xn._reglType==="framebuffer"){var Vn=Xn._framebuffer;if(Vn instanceof ca)return Vn}return null},create:vn,createCube:Aa,clear:function(){ut(gn).forEach(Za)},restore:aa})}var md=5126,sh=34962,Fs=34963;function _u(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=md,this.offset=0,this.stride=0,this.divisor=0}function xu(At,Er,Wr,wi,Ui,Oi,Bi){for(var cn=Wr.maxAttributes,On=new Array(cn),Bn=0;Bn=_o.byteLength?Po.subdata(_o):(Po.destroy(),vn.buffers[Ao]=null)),vn.buffers[Ao]||(Po=vn.buffers[Ao]=Ui.create(Jn,sh,!1,!0)),Oa.buffer=Ui.getBuffer(Po),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1,ma[Ao]=1}else Ui.getBuffer(Jn)?(Oa.buffer=Ui.getBuffer(Jn),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1):Ui.getBuffer(Jn.buffer)?(Oa.buffer=Ui.getBuffer(Jn.buffer),Oa.size=(+Jn.size||Oa.buffer.dimension)|0,Oa.normalized=!!Jn.normalized||!1,"type"in Jn?Oa.type=bi[Jn.type]:Oa.type=Oa.buffer.dtype,Oa.offset=(Jn.offset||0)|0,Oa.stride=(Jn.stride||0)|0,Oa.divisor=(Jn.divisor||0)|0,Oa.state=1):"x"in Jn&&(Oa.x=+Jn.x||0,Oa.y=+Jn.y||0,Oa.z=+Jn.z||0,Oa.w=+Jn.w||0,Oa.state=2)}for(var Jo=0;Jo1)for(var aa=0;aaAi&&(Ai=ji.stats.uniformsCount)}),Ai},Wr.getMaxAttributesCount=function(){var Ai=0;return yn.forEach(function(ji){ji.stats.attributesCount>Ai&&(Ai=ji.stats.attributesCount)}),Ai});function fn(){Ui={},Oi={};for(var Ai=0;Ai16&&(Wr=Ti(Wr,At.length*8));for(var wi=Array(16),Ui=Array(16),Oi=0;Oi<16;Oi++)wi[Oi]=Wr[Oi]^909522486,Ui[Oi]=Wr[Oi]^1549556828;var Bi=Ti(wi.concat(gf(Er)),512+Er.length*8);return gt(Ti(Ui.concat(Bi),768))}function iu(At){for(var Er=Ih?"0123456789ABCDEF":"0123456789abcdef",Wr="",wi,Ui=0;Ui>>4&15)+Er.charAt(wi&15);return Wr}function mc(At){for(var Er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wr="",wi=At.length,Ui=0;UiAt.length*8?Wr+=Wu:Wr+=Er.charAt(Oi>>>6*(3-Bi)&63);return Wr}function Yc(At,Er){var Wr=Er.length,wi=Array(),Ui,Oi,Bi,cn,On=Array(Math.ceil(At.length/2));for(Ui=0;Ui0;){for(cn=Array(),Bi=0,Ui=0;Ui0||Oi>0)&&(cn[cn.length]=Oi);wi[wi.length]=Bi,On=cn}var Bn="";for(Ui=wi.length-1;Ui>=0;Ui--)Bn+=Er.charAt(wi[Ui]);var yn=Math.ceil(At.length*8/(Math.log(Er.length)/Math.log(2)));for(Ui=Bn.length;Ui>>6&31,128|wi&63):wi<=65535?Er+=String.fromCharCode(224|wi>>>12&15,128|wi>>>6&63,128|wi&63):wi<=2097151&&(Er+=String.fromCharCode(240|wi>>>18&7,128|wi>>>12&63,128|wi>>>6&63,128|wi&63));return Er}function gf(At){for(var Er=Array(At.length>>2),Wr=0;Wr>5]|=(At.charCodeAt(Wr/8)&255)<<24-Wr%32;return Er}function gt(At){for(var Er="",Wr=0;Wr>5]>>>24-Wr%32&255);return Er}function Bt(At,Er){return At>>>Er|At<<32-Er}function wr(At,Er){return At>>>Er}function vr(At,Er,Wr){return At&Er^~At&Wr}function Ur(At,Er,Wr){return At&Er^At&Wr^Er&Wr}function fi(At){return Bt(At,2)^Bt(At,13)^Bt(At,22)}function xi(At){return Bt(At,6)^Bt(At,11)^Bt(At,25)}function Fi(At){return Bt(At,7)^Bt(At,18)^wr(At,3)}function Xi(At){return Bt(At,17)^Bt(At,19)^wr(At,10)}var hn=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Ti(At,Er){var Wr=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),wi=new Array(64),Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai;for(At[Er>>5]|=128<<24-Er%32,At[(Er+64>>9<<4)+15]=Er,Rn=0;Rn>16)+(Er>>16)+(Wr>>16);return wi<<16|Wr&65535}function Ii(At){return Array.prototype.slice.call(At)}function mi(At){return Ii(At).join("")}function Pn(At){var Er=At&&At.cache,Wr=0,wi=[],Ui=[],Oi=[];function Bi(fn,Ai){var ji=Ai&&Ai.stable;if(!ji){for(var Ln=0;Ln0&&(fn.push(Un,"="),fn.push.apply(fn,Ii(arguments)),fn.push(";")),Un}return e(Ai,{def:Ln,toString:function(){return mi([ji.length>0?"var "+ji.join(",")+";":"",mi(fn)])}})}function On(){var fn=cn(),Ai=cn(),ji=fn.toString,Ln=Ai.toString;function Un(gn,ca){Ai(gn,ca,"=",fn.def(gn,ca),";")}return e(function(){fn.apply(fn,Ii(arguments))},{def:fn.def,entry:fn,exit:Ai,save:Un,set:function(gn,ca,Kn){Un(gn,ca),fn(gn,ca,"=",Kn,";")},toString:function(){return ji()+Ln()}})}function Bn(){var fn=mi(arguments),Ai=On(),ji=On(),Ln=Ai.toString,Un=ji.toString;return e(Ai,{then:function(){return Ai.apply(Ai,Ii(arguments)),this},else:function(){return ji.apply(ji,Ii(arguments)),this},toString:function(){var gn=Un();return gn&&(gn="else{"+gn+"}"),mi(["if(",fn,"){",Ln(),"}",gn])}})}var yn=cn(),to={};function Rn(fn,Ai){var ji=[];function Ln(){var Za="a"+ji.length;return ji.push(Za),Za}Ai=Ai||0;for(var Un=0;Un":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},ii={cw:we,ccw:Be};function vi(At){return Array.isArray(At)||Or(At)||Nr(At)}function ci(At){return At.sort(function(Er,Wr){return Er===ee?-1:Wr===ee?1:Er=1,wi>=2,Er)}else if(Wr===Xo){var Ui=At.data;return new Jr(Ui.thisDep,Ui.contextDep,Ui.propDep,Er)}else{if(Wr===Ts)return new Jr(!1,!1,!1,Er);if(Wr===Qo){for(var Oi=!1,Bi=!1,cn=!1,On=0;On=1&&(Bi=!0),yn>=2&&(cn=!0)}else Bn.type===Xo&&(Oi=Oi||Bn.data.thisDep,Bi=Bi||Bn.data.contextDep,cn=cn||Bn.data.propDep)}return new Jr(Oi,Bi,cn,Er)}else return new Jr(Wr===mo,Wr===Ua,Wr===sn,Er)}}var Nn=new Jr(!1,!1,!1,function(){});function ga(At,Er,Wr,wi,Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai){var ji=Bn.Record,Ln={add:32774,subtract:32778,"reverse subtract":32779};Wr.ext_blend_minmax&&(Ln.min=Ue,Ln.max=We);var Un=Wr.angle_instanced_arrays,gn=Wr.webgl_draw_buffers,ca=Wr.oes_vertex_array_object,Kn={dirty:!0,profile:Ai.profile},Za={},wn=[],vn={},Aa={};function aa(vt){return vt.replace(".","_")}function Xn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Za[rr]=Kn[rr]=!!Wt,vn[rr]=Pt}function Vn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Array.isArray(Wt)?(Kn[rr]=Wt.slice(),Za[rr]=Wt.slice()):Kn[rr]=Za[rr]=Wt,Aa[rr]=Pt}function ma(vt){return!!isNaN(vt)}Xn(ys,di),Xn(Bo,Xr),Vn(yl,"blendColor",[0,0,0,0]),Vn(Gs,"blendEquationSeparate",[lr,lr]),Vn(Rs,"blendFuncSeparate",[or,zt,or,zt]),Xn(ia,Ci,!0),Vn(Ka,"depthFunc",Dr),Vn(vs,"depthRange",[0,1]),Vn(Ko,"depthMask",!0),Vn(nu,nu,[!0,!0,!0,!0]),Xn(Ru,zr),Vn(ac,"cullFace",oe),Vn(mf,mf,Be),Vn(bu,bu,1),Xn(Kc,Mn),Vn(Du,"polygonOffset",[0,0]),Xn(Dc,pa),Xn(Da,ea),Vn(eo,"sampleCoverage",[1,!1]),Xn(Jc,Li),Vn(yc,"stencilMask",-1),Vn(_c,"stencilFunc",[wt,0,-1]),Vn(le,"stencilOpSeparate",[Z,tt,tt,tt]),Vn(w,"stencilOpSeparate",[oe,tt,tt,tt]),Xn(B,Qi),Vn(Q,"scissor",[0,0,At.drawingBufferWidth,At.drawingBufferHeight]),Vn(ee,ee,[0,0,At.drawingBufferWidth,At.drawingBufferHeight]);var ro={gl:At,context:Rn,strings:Er,next:Za,current:Kn,draw:to,elements:Oi,buffer:Ui,shader:yn,attributes:Bn.state,vao:Bn,uniforms:On,framebuffer:cn,extensions:Wr,timer:Dn,isBufferArgs:vi},Ao={primTypes:Ki,compareFuncs:qr,blendFuncs:ui,blendEquations:Ln,stencilOps:Kr,glTypes:bi,orientationType:ii};gn&&(Ao.backBuffer=[oe],Ao.drawBuffer=M(wi.maxDrawbuffers,function(vt){return vt===0?[0]:M(vt,function(Pt){return oi+Pt})}));var Jn=0;function Oa(){var vt=Pn({cache:fn}),Pt=vt.link,Wt=vt.global;vt.id=Jn++,vt.batchId="0";var rr=Pt(ro),dr=vt.shared={props:"a0"};Object.keys(ro).forEach(function(Cr){dr[Cr]=Wt.def(rr,".",Cr)});var pr=vt.next={},kr=vt.current={};Object.keys(Aa).forEach(function(Cr){Array.isArray(Kn[Cr])&&(pr[Cr]=Wt.def(dr.next,".",Cr),kr[Cr]=Wt.def(dr.current,".",Cr))});var Ar=vt.constants={};Object.keys(Ao).forEach(function(Cr){Ar[Cr]=Wt.def(JSON.stringify(Ao[Cr]))}),vt.invoke=function(Cr,cr){switch(cr.type){case Cn:var Gr=["this",dr.context,dr.props,vt.batchId];return Cr.def(Pt(cr.data),".call(",Gr.slice(0,Math.max(cr.data.length+1,4)),")");case sn:return Cr.def(dr.props,cr.data);case Ua:return Cr.def(dr.context,cr.data);case mo:return Cr.def("this",cr.data);case Xo:return cr.data.append(vt,Cr),cr.data.ref;case Ts:return cr.data.toString();case Qo:return cr.data.map(function(ei){return vt.invoke(Cr,ei)})}},vt.attribCache={};var gr={};return vt.scopeAttrib=function(Cr){var cr=Er.id(Cr);if(cr in gr)return gr[cr];var Gr=Bn.scope[cr];Gr||(Gr=Bn.scope[cr]=new ji);var ei=gr[cr]=Pt(Gr);return ei},vt}function _o(vt){var Pt=vt.static,Wt=vt.dynamic,rr;if(se in Pt){var dr=!!Pt[se];rr=dn(function(kr,Ar){return dr}),rr.enable=dr}else if(se in Wt){var pr=Wt[se];rr=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}return rr}function Po(vt,Pt){var Wt=vt.static,rr=vt.dynamic;if(qe in Wt){var dr=Wt[qe];return dr?(dr=cn.getFramebuffer(dr),dn(function(kr,Ar){var gr=kr.link(dr),Cr=kr.shared;Ar.set(Cr.framebuffer,".next",gr);var cr=Cr.context;return Ar.set(cr,"."+Oe,gr+".width"),Ar.set(cr,"."+Je,gr+".height"),gr})):dn(function(kr,Ar){var gr=kr.shared;Ar.set(gr.framebuffer,".next","null");var Cr=gr.context;return Ar.set(Cr,"."+Oe,Cr+"."+Dt),Ar.set(Cr,"."+Je,Cr+"."+Ut),"null"})}else if(qe in rr){var pr=rr[qe];return En(pr,function(kr,Ar){var gr=kr.invoke(Ar,pr),Cr=kr.shared,cr=Cr.framebuffer,Gr=Ar.def(cr,".getFramebuffer(",gr,")");Ar.set(cr,".next",Gr);var ei=Cr.context;return Ar.set(ei,"."+Oe,Gr+"?"+Gr+".width:"+ei+"."+Dt),Ar.set(ei,"."+Je,Gr+"?"+Gr+".height:"+ei+"."+Ut),Gr})}else return null}function Jo(vt,Pt,Wt){var rr=vt.static,dr=vt.dynamic;function pr(gr){if(gr in rr){var Cr=rr[gr],cr=!0,Gr=Cr.x|0,ei=Cr.y|0,yi,tn;return"width"in Cr?yi=Cr.width|0:cr=!1,"height"in Cr?tn=Cr.height|0:cr=!1,new Jr(!cr&&Pt&&Pt.thisDep,!cr&&Pt&&Pt.contextDep,!cr&&Pt&&Pt.propDep,function(Qn,qn){var rn=Qn.shared.context,bn=yi;"width"in Cr||(bn=qn.def(rn,".",Oe,"-",Gr));var mn=tn;return"height"in Cr||(mn=qn.def(rn,".",Je,"-",ei)),[Gr,ei,bn,mn]})}else if(gr in dr){var Ri=dr[gr],ln=En(Ri,function(Qn,qn){var rn=Qn.invoke(qn,Ri),bn=Qn.shared.context,mn=qn.def(rn,".x|0"),Gn=qn.def(rn,".y|0"),da=qn.def('"width" in ',rn,"?",rn,".width|0:","(",bn,".",Oe,"-",mn,")"),No=qn.def('"height" in ',rn,"?",rn,".height|0:","(",bn,".",Je,"-",Gn,")");return[mn,Gn,da,No]});return Pt&&(ln.thisDep=ln.thisDep||Pt.thisDep,ln.contextDep=ln.contextDep||Pt.contextDep,ln.propDep=ln.propDep||Pt.propDep),ln}else return Pt?new Jr(Pt.thisDep,Pt.contextDep,Pt.propDep,function(Qn,qn){var rn=Qn.shared.context;return[0,0,qn.def(rn,".",Oe),qn.def(rn,".",Je)]}):null}var kr=pr(ee);if(kr){var Ar=kr;kr=new Jr(kr.thisDep,kr.contextDep,kr.propDep,function(gr,Cr){var cr=Ar.append(gr,Cr),Gr=gr.shared.context;return Cr.set(Gr,"."+He,cr[2]),Cr.set(Gr,"."+et,cr[3]),cr})}return{viewport:kr,scissor_box:pr(Q)}}function Yl(vt,Pt){var Wt=vt.static,rr=typeof Wt[it]=="string"&&typeof Wt[je]=="string";if(rr){if(Object.keys(Pt.dynamic).length>0)return null;var dr=Pt.static,pr=Object.keys(dr);if(pr.length>0&&typeof dr[pr[0]]=="number"){for(var kr=[],Ar=0;Ar"+mn+"?"+cr+".constant["+mn+"]:0;"}).join(""),"}}else{","if(",yi,"(",cr,".buffer)){",Qn,"=",tn,".createStream(",mr,",",cr,".buffer);","}else{",Qn,"=",tn,".getBuffer(",cr,".buffer);","}",qn,'="type" in ',cr,"?",ei.glTypes,"[",cr,".type]:",Qn,".dtype;",Ri.normalized,"=!!",cr,".normalized;");function rn(bn){Cr(Ri[bn],"=",cr,".",bn,"|0;")}return rn("size"),rn("offset"),rn("stride"),rn("divisor"),Cr("}}"),Cr.exit("if(",Ri.isStream,"){",tn,".destroyStream(",Qn,");","}"),Ri}dr[pr]=En(kr,Ar)}),dr}function wc(vt){var Pt=vt.static,Wt=vt.dynamic,rr={};return Object.keys(Pt).forEach(function(dr){var pr=Pt[dr];rr[dr]=dn(function(kr,Ar){return typeof pr=="number"||typeof pr=="boolean"?""+pr:kr.link(pr)})}),Object.keys(Wt).forEach(function(dr){var pr=Wt[dr];rr[dr]=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}),rr}function yf(vt,Pt,Wt,rr,dr){var pr=vt.static,kr=vt.dynamic,Ar=Yl(vt,Pt),gr=Po(vt,dr),Cr=Jo(vt,gr,dr),cr=xs(vt,dr),Gr=Qc(vt,dr),ei=$c(vt,dr,Ar);function yi(rn){var bn=Cr[rn];bn&&(Gr[rn]=bn)}yi(ee),yi(aa(Q));var tn=Object.keys(Gr).length>0,Ri={framebuffer:gr,draw:cr,shader:ei,state:Gr,dirty:tn,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(Ri.profile=_o(vt,dr),Ri.uniforms=El(Wt,dr),Ri.drawVAO=Ri.scopeVAO=cr.vao,!Ri.drawVAO&&ei.program&&!Ar&&Wr.angle_instanced_arrays&&cr.static.elements){var ln=!0,Qn=ei.program.attributes.map(function(rn){var bn=Pt.static[rn];return ln=ln&&!!bn,bn});if(ln&&Qn.length>0){var qn=Bn.getVAO(Bn.createVAO({attributes:Qn,elements:cr.static.elements}));Ri.drawVAO=new Jr(null,null,null,function(rn,bn){return rn.link(qn)}),Ri.useVAO=!0}}return Ar?Ri.useVAO=!0:Ri.attributes=bc(Pt,dr),Ri.context=wc(rr,dr),Ri}function Gl(vt,Pt,Wt){var rr=vt.shared,dr=rr.context,pr=vt.scope();Object.keys(Wt).forEach(function(kr){Pt.save(dr,"."+kr);var Ar=Wt[kr],gr=Ar.append(vt,Pt);Array.isArray(gr)?pr(dr,".",kr,"=[",gr.join(),"];"):pr(dr,".",kr,"=",gr,";")}),Pt(pr)}function Fc(vt,Pt,Wt,rr){var dr=vt.shared,pr=dr.gl,kr=dr.framebuffer,Ar;gn&&(Ar=Pt.def(dr.extensions,".webgl_draw_buffers"));var gr=vt.constants,Cr=gr.drawBuffer,cr=gr.backBuffer,Gr;Wt?Gr=Wt.append(vt,Pt):Gr=Pt.def(kr,".next"),rr||Pt("if(",Gr,"!==",kr,".cur){"),Pt("if(",Gr,"){",pr,".bindFramebuffer(",Ir,",",Gr,".framebuffer);"),gn&&Pt(Ar,".drawBuffersWEBGL(",Cr,"[",Gr,".colorAttachments.length]);"),Pt("}else{",pr,".bindFramebuffer(",Ir,",null);"),gn&&Pt(Ar,".drawBuffersWEBGL(",cr,");"),Pt("}",kr,".cur=",Gr,";"),rr||Pt("}")}function ef(vt,Pt,Wt){var rr=vt.shared,dr=rr.gl,pr=vt.current,kr=vt.next,Ar=rr.current,gr=rr.next,Cr=vt.cond(Ar,".dirty");wn.forEach(function(cr){var Gr=aa(cr);if(!(Gr in Wt.state)){var ei,yi;if(Gr in kr){ei=kr[Gr],yi=pr[Gr];var tn=M(Kn[Gr].length,function(ln){return Cr.def(ei,"[",ln,"]")});Cr(vt.cond(tn.map(function(ln,Qn){return ln+"!=="+yi+"["+Qn+"]"}).join("||")).then(dr,".",Aa[Gr],"(",tn,");",tn.map(function(ln,Qn){return yi+"["+Qn+"]="+ln}).join(";"),";"))}else{ei=Cr.def(gr,".",Gr);var Ri=vt.cond(ei,"!==",Ar,".",Gr);Cr(Ri),Gr in vn?Ri(vt.cond(ei).then(dr,".enable(",vn[Gr],");").else(dr,".disable(",vn[Gr],");"),Ar,".",Gr,"=",ei,";"):Ri(dr,".",Aa[Gr],"(",ei,");",Ar,".",Gr,"=",ei,";")}}}),Object.keys(Wt.state).length===0&&Cr(Ar,".dirty=false;"),Pt(Cr)}function ls(vt,Pt,Wt,rr){var dr=vt.shared,pr=vt.current,kr=dr.current,Ar=dr.gl,gr;ci(Object.keys(Wt)).forEach(function(Cr){var cr=Wt[Cr];if(!(rr&&!rr(cr))){var Gr=cr.append(vt,Pt);if(vn[Cr]){var ei=vn[Cr];un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(vt.cond(gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",gr,";")):(Pt(vt.cond(Gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",Gr,";"))}else if(an(Gr)){var yi=pr[Cr];Pt(Ar,".",Aa[Cr],"(",Gr,");",Gr.map(function(tn,Ri){return yi+"["+Ri+"]="+tn}).join(";"),";")}else un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(Ar,".",Aa[Cr],"(",gr,");",kr,".",Cr,"=",gr,";")):Pt(Ar,".",Aa[Cr],"(",Gr,");",kr,".",Cr,"=",Gr,";")}})}function _f(vt,Pt){Un&&(vt.instancing=Pt.def(vt.shared.extensions,".angle_instanced_arrays"))}function ns(vt,Pt,Wt,rr,dr){var pr=vt.shared,kr=vt.stats,Ar=pr.current,gr=pr.timer,Cr=Wt.profile;function cr(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var Gr,ei;function yi(rn){Gr=Pt.def(),rn(Gr,"=",cr(),";"),typeof dr=="string"?rn(kr,".count+=",dr,";"):rn(kr,".count++;"),Dn&&(rr?(ei=Pt.def(),rn(ei,"=",gr,".getNumPendingQueries();")):rn(gr,".beginQuery(",kr,");"))}function tn(rn){rn(kr,".cpuTime+=",cr(),"-",Gr,";"),Dn&&(rr?rn(gr,".pushScopeStats(",ei,",",gr,".getNumPendingQueries(),",kr,");"):rn(gr,".endQuery();"))}function Ri(rn){var bn=Pt.def(Ar,".profile");Pt(Ar,".profile=",rn,";"),Pt.exit(Ar,".profile=",bn,";")}var ln;if(Cr){if(un(Cr)){Cr.enable?(yi(Pt),tn(Pt.exit),Ri("true")):Ri("false");return}ln=Cr.append(vt,Pt),Ri(ln)}else ln=Pt.def(Ar,".profile");var Qn=vt.block();yi(Qn),Pt("if(",ln,"){",Qn,"}");var qn=vt.block();tn(qn),Pt.exit("if(",ln,"){",qn,"}")}function Y(vt,Pt,Wt,rr,dr){var pr=vt.shared;function kr(gr){switch(gr){case To:case Ds:case _l:return 2;case Wa:case As:case Hl:return 3;case co:case yo:case Zu:return 4;default:return 1}}function Ar(gr,Cr,cr){var Gr=pr.gl,ei=Pt.def(gr,".location"),yi=Pt.def(pr.attributes,"[",ei,"]"),tn=cr.state,Ri=cr.buffer,ln=[cr.x,cr.y,cr.z,cr.w],Qn=["buffer","normalized","offset","stride"];function qn(){Pt("if(!",yi,".buffer){",Gr,".enableVertexAttribArray(",ei,");}");var bn=cr.type,mn;if(cr.size?mn=Pt.def(cr.size,"||",Cr):mn=Cr,Pt("if(",yi,".type!==",bn,"||",yi,".size!==",mn,"||",Qn.map(function(da){return yi+"."+da+"!=="+cr[da]}).join("||"),"){",Gr,".bindBuffer(",mr,",",Ri,".buffer);",Gr,".vertexAttribPointer(",[ei,mn,bn,cr.normalized,cr.stride,cr.offset],");",yi,".type=",bn,";",yi,".size=",mn,";",Qn.map(function(da){return yi+"."+da+"="+cr[da]+";"}).join(""),"}"),Un){var Gn=cr.divisor;Pt("if(",yi,".divisor!==",Gn,"){",vt.instancing,".vertexAttribDivisorANGLE(",[ei,Gn],");",yi,".divisor=",Gn,";}")}}function rn(){Pt("if(",yi,".buffer){",Gr,".disableVertexAttribArray(",ei,");",yi,".buffer=null;","}if(",Ma.map(function(bn,mn){return yi+"."+bn+"!=="+ln[mn]}).join("||"),"){",Gr,".vertexAttrib4f(",ei,",",ln,");",Ma.map(function(bn,mn){return yi+"."+bn+"="+ln[mn]+";"}).join(""),"}")}tn===Ea?qn():tn===qa?rn():(Pt("if(",tn,"===",Ea,"){"),qn(),Pt("}else{"),rn(),Pt("}"))}rr.forEach(function(gr){var Cr=gr.name,cr=Wt.attributes[Cr],Gr;if(cr){if(!dr(cr))return;Gr=cr.append(vt,Pt)}else{if(!dr(Nn))return;var ei=vt.scopeAttrib(Cr);Gr={},Object.keys(new ji).forEach(function(yi){Gr[yi]=Pt.def(ei,".",yi)})}Ar(vt.link(gr),kr(gr.info.type),Gr)})}function z(vt,Pt,Wt,rr,dr,pr){for(var kr=vt.shared,Ar=kr.gl,gr,Cr=0;Cr1){for(var Do=[],ps=[],fo=0;fo>1)",Ri],");")}function Gn(){Wt(ln,".drawArraysInstancedANGLE(",[ei,yi,tn,Ri],");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}function bn(){function mn(){Wt(pr+".drawElements("+[ei,tn,Qn,yi+"<<(("+Qn+"-"+Ta+")>>1)"]+");")}function Gn(){Wt(pr+".drawArrays("+[ei,yi,tn]+");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}Un&&(typeof Ri!="number"||Ri>=0)?typeof Ri=="string"?(Wt("if(",Ri,">0){"),rn(),Wt("}else if(",Ri,"<0){"),bn(),Wt("}")):rn():bn()}function O(vt,Pt,Wt,rr,dr){var pr=Oa(),kr=pr.proc("body",dr);return Un&&(pr.instancing=kr.def(pr.shared.extensions,".angle_instanced_arrays")),vt(pr,kr,Wt,rr),pr.compile().body}function $(vt,Pt,Wt,rr){_f(vt,Pt),Wt.useVAO?Wt.drawVAO?Pt(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Pt),");"):Pt(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Pt(vt.shared.vao,".setVAO(null);"),Y(vt,Pt,Wt,rr.attributes,function(){return!0})),z(vt,Pt,Wt,rr.uniforms,function(){return!0},!1),K(vt,Pt,Pt,Wt)}function pe(vt,Pt){var Wt=vt.proc("draw",1);_f(vt,Wt),Gl(vt,Wt,Pt.context),Fc(vt,Wt,Pt.framebuffer),ef(vt,Wt,Pt),ls(vt,Wt,Pt.state),ns(vt,Wt,Pt,!1,!0);var rr=Pt.shader.progVar.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",rr,".program);"),Pt.shader.program)$(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var dr=vt.global.def("{}"),pr=Wt.def(rr,".id"),kr=Wt.def(dr,"[",pr,"]");Wt(vt.cond(kr).then(kr,".call(this,a0);").else(kr,"=",dr,"[",pr,"]=",vt.link(function(Ar){return O($,vt,Pt,Ar,1)}),"(",rr,");",kr,".call(this,a0);"))}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function de(vt,Pt,Wt,rr){vt.batchId="a1",_f(vt,Pt);function dr(){return!0}Y(vt,Pt,Wt,rr.attributes,dr),z(vt,Pt,Wt,rr.uniforms,dr,!1),K(vt,Pt,Pt,Wt)}function Ie(vt,Pt,Wt,rr){_f(vt,Pt);var dr=Wt.contextDep,pr=Pt.def(),kr="a0",Ar="a1",gr=Pt.def();vt.shared.props=gr,vt.batchId=pr;var Cr=vt.scope(),cr=vt.scope();Pt(Cr.entry,"for(",pr,"=0;",pr,"<",Ar,";++",pr,"){",gr,"=",kr,"[",pr,"];",cr,"}",Cr.exit);function Gr(Qn){return Qn.contextDep&&dr||Qn.propDep}function ei(Qn){return!Gr(Qn)}if(Wt.needsContext&&Gl(vt,cr,Wt.context),Wt.needsFramebuffer&&Fc(vt,cr,Wt.framebuffer),ls(vt,cr,Wt.state,Gr),Wt.profile&&Gr(Wt.profile)&&ns(vt,cr,Wt,!1,!0),rr)Wt.useVAO?Wt.drawVAO?Gr(Wt.drawVAO)?cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,cr),");"):Cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Cr),");"):Cr(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Cr(vt.shared.vao,".setVAO(null);"),Y(vt,Cr,Wt,rr.attributes,ei),Y(vt,cr,Wt,rr.attributes,Gr)),z(vt,Cr,Wt,rr.uniforms,ei,!1),z(vt,cr,Wt,rr.uniforms,Gr,!0),K(vt,Cr,cr,Wt);else{var yi=vt.global.def("{}"),tn=Wt.shader.progVar.append(vt,cr),Ri=cr.def(tn,".id"),ln=cr.def(yi,"[",Ri,"]");cr(vt.shared.gl,".useProgram(",tn,".program);","if(!",ln,"){",ln,"=",yi,"[",Ri,"]=",vt.link(function(Qn){return O(de,vt,Wt,Qn,2)}),"(",tn,");}",ln,".call(this,a0[",pr,"],",pr,");")}}function $e(vt,Pt){var Wt=vt.proc("batch",2);vt.batchId="0",_f(vt,Wt);var rr=!1,dr=!0;Object.keys(Pt.context).forEach(function(yi){rr=rr||Pt.context[yi].propDep}),rr||(Gl(vt,Wt,Pt.context),dr=!1);var pr=Pt.framebuffer,kr=!1;pr?(pr.propDep?rr=kr=!0:pr.contextDep&&rr&&(kr=!0),kr||Fc(vt,Wt,pr)):Fc(vt,Wt,null),Pt.state.viewport&&Pt.state.viewport.propDep&&(rr=!0);function Ar(yi){return yi.contextDep&&rr||yi.propDep}ef(vt,Wt,Pt),ls(vt,Wt,Pt.state,function(yi){return!Ar(yi)}),(!Pt.profile||!Ar(Pt.profile))&&ns(vt,Wt,Pt,!1,"a1"),Pt.contextDep=rr,Pt.needsContext=dr,Pt.needsFramebuffer=kr;var gr=Pt.shader.progVar;if(gr.contextDep&&rr||gr.propDep)Ie(vt,Wt,Pt,null);else{var Cr=gr.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",Cr,".program);"),Pt.shader.program)Ie(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var cr=vt.global.def("{}"),Gr=Wt.def(Cr,".id"),ei=Wt.def(cr,"[",Gr,"]");Wt(vt.cond(ei).then(ei,".call(this,a0,a1);").else(ei,"=",cr,"[",Gr,"]=",vt.link(function(yi){return O(Ie,vt,Pt,yi,2)}),"(",Cr,");",ei,".call(this,a0,a1);"))}}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function pt(vt,Pt){var Wt=vt.proc("scope",3);vt.batchId="a2";var rr=vt.shared,dr=rr.current;if(Gl(vt,Wt,Pt.context),Pt.framebuffer&&Pt.framebuffer.append(vt,Wt),ci(Object.keys(Pt.state)).forEach(function(Ar){var gr=Pt.state[Ar],Cr=gr.append(vt,Wt);an(Cr)?Cr.forEach(function(cr,Gr){ma(cr)?Wt.set(vt.next[Ar],"["+Gr+"]",cr):Wt.set(vt.next[Ar],"["+Gr+"]",vt.link(cr,{stable:!0}))}):un(gr)?Wt.set(rr.next,"."+Ar,vt.link(Cr,{stable:!0})):Wt.set(rr.next,"."+Ar,Cr)}),ns(vt,Wt,Pt,!0,!0),[yt,hr,Nt,Sr,Ot].forEach(function(Ar){var gr=Pt.draw[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.draw,"."+Ar,Cr):Wt.set(rr.draw,"."+Ar,vt.link(Cr),{stable:!0})}}),Object.keys(Pt.uniforms).forEach(function(Ar){var gr=Pt.uniforms[Ar].append(vt,Wt);Array.isArray(gr)&&(gr="["+gr.map(function(Cr){return ma(Cr)?Cr:vt.link(Cr,{stable:!0})})+"]"),Wt.set(rr.uniforms,"["+vt.link(Er.id(Ar),{stable:!0})+"]",gr)}),Object.keys(Pt.attributes).forEach(function(Ar){var gr=Pt.attributes[Ar].append(vt,Wt),Cr=vt.scopeAttrib(Ar);Object.keys(new ji).forEach(function(cr){Wt.set(Cr,"."+cr,gr[cr])})}),Pt.scopeVAO){var pr=Pt.scopeVAO.append(vt,Wt);ma(pr)?Wt.set(rr.vao,".targetVAO",pr):Wt.set(rr.vao,".targetVAO",vt.link(pr,{stable:!0}))}function kr(Ar){var gr=Pt.shader[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.shader,"."+Ar,Cr):Wt.set(rr.shader,"."+Ar,vt.link(Cr,{stable:!0}))}}kr(je),kr(it),Object.keys(Pt.state).length>0&&(Wt(dr,".dirty=true;"),Wt.exit(dr,".dirty=true;")),Wt("a1(",vt.shared.context,",a0,",vt.batchId,");")}function Kt(vt){if(!(typeof vt!="object"||an(vt))){for(var Pt=Object.keys(vt),Wt=0;Wt=0;--O){var $=ro[O];$&&$(fn,null,0)}Wr.flush(),yn&&yn.update()}function Jo(){!_o&&ro.length>0&&(_o=d.next(Po))}function Yl(){_o&&(d.cancel(Po),_o=null)}function $c(O){O.preventDefault(),Ui=!0,Yl(),Ao.forEach(function($){$()})}function xs(O){Wr.getError(),Ui=!1,Oi.restore(),Za.restore(),Un.restore(),wn.restore(),vn.restore(),Aa.restore(),ca.restore(),yn&&yn.restore(),aa.procs.refresh(),Jo(),Jn.forEach(function($){$()})}ma&&(ma.addEventListener(Lo,$c,!1),ma.addEventListener(Fo,xs,!1));function Qc(){ro.length=0,Yl(),ma&&(ma.removeEventListener(Lo,$c),ma.removeEventListener(Fo,xs)),Za.clear(),Aa.clear(),vn.clear(),ca.clear(),wn.clear(),gn.clear(),Un.clear(),yn&&yn.clear(),Oa.forEach(function(O){O()})}function El(O){function $(pr){var kr=e({},pr);delete kr.uniforms,delete kr.attributes,delete kr.context,delete kr.vao,"stencil"in kr&&kr.stencil.op&&(kr.stencil.opBack=kr.stencil.opFront=kr.stencil.op,delete kr.stencil.op);function Ar(gr){if(gr in kr){var Cr=kr[gr];delete kr[gr],Object.keys(Cr).forEach(function(cr){kr[gr+"."+cr]=Cr[cr]})}}return Ar("blend"),Ar("depth"),Ar("cull"),Ar("stencil"),Ar("polygonOffset"),Ar("scissor"),Ar("sample"),"vao"in pr&&(kr.vao=pr.vao),kr}function pe(pr,kr){var Ar={},gr={};return Object.keys(pr).forEach(function(Cr){var cr=pr[Cr];if(h.isDynamic(cr)){gr[Cr]=h.unbox(cr,Cr);return}else if(kr&&Array.isArray(cr)){for(var Gr=0;Gr0)return vt.call(this,rr(pr|0),pr|0)}else if(Array.isArray(pr)){if(pr.length)return vt.call(this,pr,pr.length)}else return Jt.call(this,pr)}return e(dr,{stats:Kt,destroy:function(){ir.destroy()}})}var bc=Aa.setFBO=El({framebuffer:h.define.call(null,js,"framebuffer")});function wc(O,$){var pe=0;aa.procs.poll();var de=$.color;de&&(Wr.clearColor(+de[0]||0,+de[1]||0,+de[2]||0,+de[3]||0),pe|=_s),"depth"in $&&(Wr.clearDepth(+$.depth),pe|=Ns),"stencil"in $&&(Wr.clearStencil($.stencil|0),pe|=pn),Wr.clear(pe)}function yf(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var $=0;$<6;++$)bc(e({framebuffer:O.framebuffer.faces[$]},O),wc);else bc(O,wc);else wc(null,O)}function Gl(O){ro.push(O);function $(){var pe=dl(ro,O);function de(){var Ie=dl(ro,de);ro[Ie]=ro[ro.length-1],ro.length-=1,ro.length<=0&&Yl()}ro[pe]=de}return Jo(),{cancel:$}}function Fc(){var O=Vn.viewport,$=Vn.scissor_box;O[0]=O[1]=$[0]=$[1]=0,fn.viewportWidth=fn.framebufferWidth=fn.drawingBufferWidth=O[2]=$[2]=Wr.drawingBufferWidth,fn.viewportHeight=fn.framebufferHeight=fn.drawingBufferHeight=O[3]=$[3]=Wr.drawingBufferHeight}function ef(){fn.tick+=1,fn.time=_f(),Fc(),aa.procs.poll()}function ls(){wn.refresh(),Fc(),aa.procs.refresh(),yn&&yn.update()}function _f(){return(v()-to)/1e3}ls();function ns(O,$){var pe;switch(O){case"frame":return Gl($);case"lost":pe=Ao;break;case"restore":pe=Jn;break;case"destroy":pe=Oa;break;default:}return pe.push($),{cancel:function(){for(var de=0;de=0},read:Xn,destroy:Qc,_gl:Wr,_refresh:ls,poll:function(){ef(),yn&&yn.update()},now:_f,stats:cn,getCachedCode:Y,preloadCachedCode:z});return Er.onDone(null,K),K}return xc})});var Iqe=ye((wmr,Pqe)=>{"use strict";var QOt=Zm();Pqe.exports=function(t){if(t?typeof t=="string"&&(t={container:t}):t={},Cqe(t)?t={container:t}:eBt(t)?t={container:t}:tBt(t)?t={gl:t}:t=QOt(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(typeof t.container=="string"){var r=document.querySelector(t.container);if(!r)throw Error("Element "+t.container+" is not found");t.container=r}Cqe(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t))}else if(!t.canvas)if(typeof document!="undefined")t.container=document.body||document.documentElement,t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t);else throw Error("Not DOM environment. Use headless-gl.");return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(n){try{t.gl=t.canvas.getContext(n,t.attrs)}catch(i){}return t.gl}),t.gl};function kqe(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*window.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*window.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function Cqe(e){return typeof e.getContext=="function"&&"width"in e&&"height"in e}function eBt(e){return typeof e.nodeName=="string"&&typeof e.appendChild=="function"&&typeof e.getBoundingClientRect=="function"}function tBt(e){return typeof e.drawArrays=="function"||typeof e.drawElements=="function"}function Lqe(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}});var Dqe=ye((Tmr,Rqe)=>{"use strict";var rBt=UY(),iBt=[32,126];Rqe.exports=nBt;function nBt(e){e=e||{};var t=e.shape?e.shape:e.canvas?[e.canvas.width,e.canvas.height]:[512,512],r=e.canvas||document.createElement("canvas"),n=e.font,i=typeof e.step=="number"?[e.step,e.step]:e.step||[32,32],a=e.chars||iBt;if(n&&typeof n!="string"&&(n=rBt(n)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var o=[],s=a[0],l=0;s<=a[1];s++)o[l++]=String.fromCharCode(s);a=o}t=t.slice(),r.width=t[0],r.height=t[1];var u=r.getContext("2d");u.fillStyle="#000",u.fillRect(0,0,r.width,r.height),u.font=n,u.textAlign="center",u.textBaseline="middle",u.fillStyle="#fff";for(var c=i[0]/2,f=i[1]/2,s=0;st[0]-i[0]/2&&(c=i[0]/2,f+=i[1]);return r}});var WY=ye(Th=>{"use strict";"use restrict";var jY=32;Th.INT_BITS=jY;Th.INT_MAX=2147483647;Th.INT_MIN=-1<0)-(e<0)};Th.abs=function(e){var t=e>>jY-1;return(e^t)-t};Th.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};Th.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};Th.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function zqe(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}Th.countTrailingZeros=zqe;Th.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};Th.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};Th.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var _k=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|_k[e>>>16&255]<<8|_k[e>>>24&255]};Th.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};Th.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};Th.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};Th.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};Th.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>zqe(e)+1}});var Oqe=ye((Smr,qqe)=>{"use strict";function Fqe(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return aBt(e|0,t);break;case"object":if(typeof e.length=="number")return Fqe(e,t,0);break}return[]}qqe.exports=oBt});var Qqe=ye(Wl=>{"use strict";var fx=WY(),Av=Oqe(),Bqe=u2().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Av([32,0]),UINT16:Av([32,0]),UINT32:Av([32,0]),BIGUINT64:Av([32,0]),INT8:Av([32,0]),INT16:Av([32,0]),INT32:Av([32,0]),BIGINT64:Av([32,0]),FLOAT:Av([32,0]),DOUBLE:Av([32,0]),DATA:Av([32,0]),UINT8C:Av([32,0]),BUFFER:Av([32,0])});var sBt=typeof Uint8ClampedArray!="undefined",lBt=typeof BigUint64Array!="undefined",uBt=typeof BigInt64Array!="undefined",Xh=window.__TYPEDARRAY_POOL;Xh.UINT8C||(Xh.UINT8C=Av([32,0]));Xh.BIGUINT64||(Xh.BIGUINT64=Av([32,0]));Xh.BIGINT64||(Xh.BIGINT64=Av([32,0]));Xh.BUFFER||(Xh.BUFFER=Av([32,0]));var dF=Xh.DATA,vF=Xh.BUFFER;Wl.free=function(t){if(Bqe.isBuffer(t))vF[fx.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=fx.log2(r)|0;dF[n].push(t)}};function Nqe(e){if(e){var t=e.length||e.byteLength,r=fx.log2(t);dF[r].push(e)}}function cBt(e){Nqe(e.buffer)}Wl.freeUint8=Wl.freeUint16=Wl.freeUint32=Wl.freeBigUint64=Wl.freeInt8=Wl.freeInt16=Wl.freeInt32=Wl.freeBigInt64=Wl.freeFloat32=Wl.freeFloat=Wl.freeFloat64=Wl.freeDouble=Wl.freeUint8Clamped=Wl.freeDataView=cBt;Wl.freeArrayBuffer=Nqe;Wl.freeBuffer=function(t){vF[fx.log2(t.length)].push(t)};Wl.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return Bp(t);switch(r){case"uint8":return ZY(t);case"uint16":return Uqe(t);case"uint32":return Vqe(t);case"int8":return Hqe(t);case"int16":return Gqe(t);case"int32":return jqe(t);case"float":case"float32":return Wqe(t);case"double":case"float64":return Zqe(t);case"uint8_clamped":return Xqe(t);case"bigint64":return Kqe(t);case"biguint64":return Yqe(t);case"buffer":return $qe(t);case"data":case"dataview":return Jqe(t);default:return null}return null};function Bp(t){var t=fx.nextPow2(t),r=fx.log2(t),n=dF[r];return n.length>0?n.pop():new ArrayBuffer(t)}Wl.mallocArrayBuffer=Bp;function ZY(e){return new Uint8Array(Bp(e),0,e)}Wl.mallocUint8=ZY;function Uqe(e){return new Uint16Array(Bp(2*e),0,e)}Wl.mallocUint16=Uqe;function Vqe(e){return new Uint32Array(Bp(4*e),0,e)}Wl.mallocUint32=Vqe;function Hqe(e){return new Int8Array(Bp(e),0,e)}Wl.mallocInt8=Hqe;function Gqe(e){return new Int16Array(Bp(2*e),0,e)}Wl.mallocInt16=Gqe;function jqe(e){return new Int32Array(Bp(4*e),0,e)}Wl.mallocInt32=jqe;function Wqe(e){return new Float32Array(Bp(4*e),0,e)}Wl.mallocFloat32=Wl.mallocFloat=Wqe;function Zqe(e){return new Float64Array(Bp(8*e),0,e)}Wl.mallocFloat64=Wl.mallocDouble=Zqe;function Xqe(e){return sBt?new Uint8ClampedArray(Bp(e),0,e):ZY(e)}Wl.mallocUint8Clamped=Xqe;function Yqe(e){return lBt?new BigUint64Array(Bp(8*e),0,e):null}Wl.mallocBigUint64=Yqe;function Kqe(e){return uBt?new BigInt64Array(Bp(8*e),0,e):null}Wl.mallocBigInt64=Kqe;function Jqe(e){return new DataView(Bp(e),0,e)}Wl.mallocDataView=Jqe;function $qe(e){e=fx.nextPow2(e);var t=fx.log2(e),r=vF[t];return r.length>0?r.pop():new Bqe(e)}Wl.mallocBuffer=$qe;Wl.clearCache=function(){for(var t=0;t<32;++t)Xh.UINT8[t].length=0,Xh.UINT16[t].length=0,Xh.UINT32[t].length=0,Xh.INT8[t].length=0,Xh.INT16[t].length=0,Xh.INT32[t].length=0,Xh.FLOAT[t].length=0,Xh.DOUBLE[t].length=0,Xh.BIGUINT64[t].length=0,Xh.BIGINT64[t].length=0,Xh.UINT8C[t].length=0,dF[t].length=0,vF[t].length=0}});var tOe=ye((Emr,eOe)=>{"use strict";var fBt=Object.prototype.toString;eOe.exports=function(e){var t;return fBt.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var XY=ye((kmr,rOe)=>{rOe.exports=function(t,r){r||(r=[0,""]),t=String(t);var n=parseFloat(t,10);return r[0]=n,r[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",r}});var aOe=ye((Cmr,nOe)=>{"use strict";var hBt=XY();nOe.exports=iOe;var xk=96;function YY(e,t){var r=hBt(getComputedStyle(e).getPropertyValue(t));return r[0]*iOe(r[1],e)}function dBt(e,t){var r=document.createElement("div");r.style["font-size"]="128"+e,t.appendChild(r);var n=YY(r,"font-size")/128;return t.removeChild(r),n}function iOe(e,t){switch(t=t||document.body,e=(e||"px").trim().toLowerCase(),(t===window||t===document)&&(t=document.body),e){case"%":return t.clientHeight/100;case"ch":case"ex":return dBt(e,t);case"em":return YY(t,"font-size");case"rem":return YY(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return xk;case"cm":return xk/2.54;case"mm":return xk/25.4;case"pt":return xk/72;case"pc":return xk/6}return 1}});var lOe=ye((Lmr,sOe)=>{"use strict";sOe.exports=mF;var vBt=mF.canvas=document.createElement("canvas"),pF=vBt.getContext("2d"),oOe=gF([32,126]);mF.createPairs=gF;mF.ascii=oOe;function mF(e,t){Array.isArray(e)&&(e=e.join(", "));var r={},n,i=16,a=.05;t&&(t.length===2&&typeof t[0]=="number"?n=gF(t):Array.isArray(t)?n=t:(t.o?n=gF(t.o):t.pairs&&(n=t.pairs),t.fontSize&&(i=t.fontSize),t.threshold!=null&&(a=t.threshold))),n||(n=oOe),pF.font=i+"px "+e;for(var o=0;oi*a){var c=(u-l)/i;r[s]=c*1e3}}return r}function gF(e){for(var t=[],r=e[0];r<=e[1];r++)for(var n=String.fromCharCode(r),i=e[0];i{"use strict";fOe.exports=hx;hx.canvas=document.createElement("canvas");hx.cache={};function hx(o,t){t||(t={}),(typeof o=="string"||Array.isArray(o))&&(t.family=o);var r=Array.isArray(t.family)?t.family.join(", "):t.family;if(!r)throw Error("`family` must be defined");var n=t.size||t.fontSize||t.em||48,i=t.weight||t.fontWeight||"",a=t.style||t.fontStyle||"",o=[a,i,n].join(" ")+"px "+r,s=t.origin||"top";if(hx.cache[r]&&n<=hx.cache[r].em)return uOe(hx.cache[r],s);var l=t.canvas||hx.canvas,u=l.getContext("2d"),c={upper:t.upper!==void 0?t.upper:"H",lower:t.lower!==void 0?t.lower:"x",descent:t.descent!==void 0?t.descent:"p",ascent:t.ascent!==void 0?t.ascent:"h",tittle:t.tittle!==void 0?t.tittle:"i",overshoot:t.overshoot!==void 0?t.overshoot:"O"},f=Math.ceil(n*1.5);l.height=f,l.width=f*.5,u.font=o;var h="H",d={top:0};u.clearRect(0,0,f,f),u.textBaseline="top",u.fillStyle="black",u.fillText(h,0,0);var v=Ym(u.getImageData(0,0,f,f));u.clearRect(0,0,f,f),u.textBaseline="bottom",u.fillText(h,0,f);var x=Ym(u.getImageData(0,0,f,f));d.lineHeight=d.bottom=f-x+v,u.clearRect(0,0,f,f),u.textBaseline="alphabetic",u.fillText(h,0,f);var b=Ym(u.getImageData(0,0,f,f)),p=f-b-1+v;d.baseline=d.alphabetic=p,u.clearRect(0,0,f,f),u.textBaseline="middle",u.fillText(h,0,f*.5);var E=Ym(u.getImageData(0,0,f,f));d.median=d.middle=f-E-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="hanging",u.fillText(h,0,f*.5);var k=Ym(u.getImageData(0,0,f,f));d.hanging=f-k-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="ideographic",u.fillText(h,0,f);var A=Ym(u.getImageData(0,0,f,f));if(d.ideographic=f-A-1+v,c.upper&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.upper,0,0),d.upper=Ym(u.getImageData(0,0,f,f)),d.capHeight=d.baseline-d.upper),c.lower&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.lower,0,0),d.lower=Ym(u.getImageData(0,0,f,f)),d.xHeight=d.baseline-d.lower),c.tittle&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.tittle,0,0),d.tittle=Ym(u.getImageData(0,0,f,f))),c.ascent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.ascent,0,0),d.ascent=Ym(u.getImageData(0,0,f,f))),c.descent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.descent,0,0),d.descent=cOe(u.getImageData(0,0,f,f))),c.overshoot){u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.overshoot,0,0);var L=cOe(u.getImageData(0,0,f,f));d.overshoot=L-p}for(var _ in d)d[_]/=n;return d.em=n,hx.cache[r]=d,uOe(d,s)}function uOe(e,t){var r={};typeof t=="string"&&(t=e[t]);for(var n in e)n!=="em"&&(r[n]=e[n]-t);return r}function Ym(e){for(var t=e.height,r=e.data,n=3;n0;n-=4)if(r[n]!==0)return Math.floor((n-3)*.25/t)}});var gOe=ye((Imr,pOe)=>{"use strict";var fA=Eqe(),pBt=Zm(),gBt=GY(),mBt=Iqe(),yBt=EY(),KY=$_(),_Bt=Dqe(),dx=Qqe(),xBt=Q5(),bBt=tOe(),wBt=XY(),TBt=aOe(),ABt=lOe(),SBt=bh(),MBt=hOe(),EBt=W2(),kBt=WY(),dOe=kBt.nextPow2,vOe=new yBt,_F=!1;document.body&&(yF=document.body.appendChild(document.createElement("div")),yF.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(yF).fontStretch&&(_F=!0),document.body.removeChild(yF));var yF,Vu=function(t){CBt(t)?(t={regl:t},this.gl=t.regl._gl):this.gl=mBt(t),this.shader=vOe.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||gBt({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),vOe.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(bBt(t)?t:{})};Vu.prototype.createShader=function(){var t=this.regl,r=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(i,a){return[a.atlas.width,a.atlas.height]},atlasDim:function(i,a){return[a.atlas.cols,a.atlas.rows]},atlas:function(i,a){return a.atlas.texture},charStep:function(i,a){return a.atlas.step},em:function(i,a){return a.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:` + precision highp float; + attribute float width, charOffset, char; + attribute vec2 position; + uniform float fontSize, charStep, em, align, baseline; + uniform vec4 viewport; + uniform vec4 color; + uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset; + varying vec2 charCoord, charId; + varying float charWidth; + varying vec4 fontColor; + void main () { + vec2 offset = floor(em * (vec2(align + charOffset, baseline) + + vec2(positionOffset.x, -positionOffset.y))) + / (viewport.zw * scale.xy); + + vec2 position = (position + translate) * scale; + position += offset * scale; + + charCoord = position * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2. - 1., 0, 1); + + gl_PointSize = charStep; + + charId.x = mod(char, atlasDim.x); + charId.y = floor(char / atlasDim.x); + + charWidth = width * em; + + fontColor = color / 255.; + }`,frag:` + precision highp float; + uniform float fontSize, charStep, opacity; + uniform vec2 atlasSize; + uniform vec4 viewport; + uniform sampler2D atlas; + varying vec4 fontColor; + varying vec2 charCoord, charId; + varying float charWidth; + + float lightness(vec4 color) { + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + } + + void main () { + vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5; + float halfCharStep = floor(charStep * .5 + .5); + + // invert y and shift by 1px (FF expecially needs that) + uv.y = charStep - uv.y; + + // ignore points outside of character bounding box + float halfCharWidth = ceil(charWidth * .5); + if (floor(uv.x) > halfCharStep + halfCharWidth || + floor(uv.x) < halfCharStep - halfCharWidth) return; + + uv += charId * charStep; + uv = uv / atlasSize; + + vec4 color = fontColor; + vec4 mask = texture2D(atlas, uv); + + float maskY = lightness(mask); + // float colorY = lightness(color); + color.a *= maskY; + color.a *= opacity; + + // color.a += .1; + + // antialiasing, see yiq color space y-channel formula + // color.rgb += (1. - color.rgb) * (1. - mask.rgb); + + gl_FragColor = color; + }`}),n={};return{regl:t,draw:r,atlas:n}};Vu.prototype.update=function(t){var r=this;if(typeof t=="string")t={text:t};else if(!t)return;t=pBt(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),t.opacity!=null&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(ke){return parseFloat(ke)}):this.opacity=parseFloat(t.opacity)),t.viewport!=null&&(this.viewport=xBt(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),t.kerning!=null&&(this.kerning=t.kerning),t.offset!=null&&(typeof t.offset=="number"&&(t.offset=[t.offset,0]),this.positionOffset=EBt(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=Vu.baseFontSize+"px sans-serif");var n=!1,i=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(ke,ge){if(typeof ke=="string")try{ke=fA.parse(ke)}catch(Ge){ke=fA.parse(Vu.baseFontSize+"px "+ke)}else{var ie=ke.style,Te=ke.weight,Ee=ke.stretch,Ae=ke.variant;ke=fA.parse(fA.stringify(ke)),ie&&(ke.style=ie),Te&&(ke.weight=Te),Ee&&(ke.stretch=Ee),Ae&&(ke.variant=Ae)}var ze=fA.stringify({size:Vu.baseFontSize,family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style}),Ce=wBt(ke.size),me=Math.round(Ce[0]*TBt(Ce[1]));if(me!==r.fontSize[ge]&&(i=!0,r.fontSize[ge]=me),(!r.font[ge]||ze!=r.font[ge].baseString)&&(n=!0,r.font[ge]=Vu.fonts[ze],!r.font[ge])){var Re=ke.family.join(", "),ce=[ke.style];ke.style!=ke.variant&&ce.push(ke.variant),ke.variant!=ke.weight&&ce.push(ke.weight),_F&&ke.weight!=ke.stretch&&ce.push(ke.stretch),r.font[ge]={baseString:ze,family:Re,weight:ke.weight,stretch:ke.stretch,style:ke.style,variant:ke.variant,width:{},kerning:{},metrics:MBt(Re,{origin:"top",fontSize:Vu.baseFontSize,fontStyle:ce.join(" ")})},Vu.fonts[ze]=r.font[ge]}}),(n||i)&&this.font.forEach(function(ke,ge){var ie=fA.stringify({size:r.fontSize[ge],family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style});if(r.fontAtlas[ge]=r.shader.atlas[ie],!r.fontAtlas[ge]){var Te=ke.metrics;r.shader.atlas[ie]=r.fontAtlas[ge]={fontString:ie,step:Math.ceil(r.fontSize[ge]*Te.bottom*.5)*2,em:r.fontSize[ge],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:r.regl.texture()}}t.text==null&&(t.text=r.text)}),typeof t.text=="string"&&t.position&&t.position.length>2){for(var a=Array(t.position.length*.5),o=0;o2){for(var u=!t.position[0].length,c=dx.mallocFloat(this.count*2),f=0,h=0;f1?r.align[ge]:r.align[0]:r.align;if(typeof ie=="number")return ie;switch(ie){case"right":case"end":return-ke;case"center":case"centre":case"middle":return-ke*.5}return 0})),this.baseline==null&&t.baseline==null&&(t.baseline=0),t.baseline!=null&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ke,ge){var ie=(r.font[ge]||r.font[0]).metrics,Te=0;return Te+=ie.bottom*.5,typeof ke=="number"?Te+=ke-ie.baseline:Te+=-ie[ke],Te*=-1,Te})),t.color!=null)if(t.color||(t.color="transparent"),typeof t.color=="string"||!isNaN(t.color))this.color=KY(t.color,"uint8");else{var H;if(typeof t.color[0]=="number"&&t.color.length>this.counts.length){var X=t.color.length;H=dx.mallocUint8(X);for(var G=(t.color.subarray||t.color.slice).bind(t.color),N=0;N4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(ae){var _e=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(_e);for(var Me=0;Me1?this.counts[Me]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Me]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(Me*4,Me*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Me]:this.opacity,baseline:this.baselineOffset[Me]!=null?this.baselineOffset[Me]:this.baselineOffset[0],align:this.align?this.alignOffset[Me]!=null?this.alignOffset[Me]:this.alignOffset[0]:0,atlas:this.fontAtlas[Me]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(Me*2,Me*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}};Vu.prototype.destroy=function(){};Vu.prototype.kerning=!0;Vu.prototype.position={constant:new Float32Array(2)};Vu.prototype.translate=null;Vu.prototype.scale=null;Vu.prototype.font=null;Vu.prototype.text="";Vu.prototype.positionOffset=[0,0];Vu.prototype.opacity=1;Vu.prototype.color=new Uint8Array([0,0,0,255]);Vu.prototype.alignOffset=[0,0];Vu.maxAtlasSize=1024;Vu.atlasCanvas=document.createElement("canvas");Vu.atlasContext=Vu.atlasCanvas.getContext("2d",{alpha:!1});Vu.baseFontSize=64;Vu.fonts={};function CBt(e){return typeof e=="function"&&e._gl&&e.prop&&e.texture&&e.buffer}pOe.exports=Vu});var xF=ye((Rmr,mOe)=>{"use strict";var LBt=pZ(),PBt=GY();mOe.exports=function(t,r,n){var i=t._fullLayout,a=!0;return i._glcanvas.each(function(o){if(o.regl){o.regl.preloadCachedCode(n);return}if(!(o.pick&&!i._has("parcoords"))){try{o.regl=PBt({canvas:this,attributes:{antialias:!o.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:r||[],cachedCode:n||{}})}catch(s){a=!1}o.regl||(a=!1),a&&this.addEventListener("webglcontextlost",function(s){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:s,layer:o.key})},!1)}}),a||LBt({container:i._glcontainer.node()}),a}});var QY=ye(($Y,wOe)=>{"use strict";var yOe=QX(),_Oe=LY(),IBt=lqe(),xOe=gOe(),JY=Mr(),RBt=Sg().selectMode,DBt=xF(),zBt=lu(),FBt=hU(),qBt=YX().styleTextSelection,bOe={};function OBt(e,t,r,n){var i=e._size,a=e.width*n,o=e.height*n,s=i.l*n,l=i.b*n,u=i.r*n,c=i.t*n,f=i.w*n,h=i.h*n;return[s+t.domain[0]*f,l+r.domain[0]*h,a-u-(1-t.domain[1])*f,o-c-(1-r.domain[1])*h]}var $Y=wOe.exports=function(t,r,n){if(n.length){var i=t._fullLayout,a=r._scene,o=r.xaxis,s=r.yaxis,l,u;if(a){var c=DBt(t,["ANGLE_instanced_arrays","OES_element_index_uint"],bOe);if(!c){a.init();return}var f=a.count,h=i._glcanvas.data()[0].regl;if(FBt(t,r,n),a.dirty){if((a.line2d||a.error2d)&&!(a.scatter2d||a.fill2d||a.glText)&&h.clear({}),a.error2d===!0&&(a.error2d=IBt(h)),a.line2d===!0&&(a.line2d=_Oe(h)),a.scatter2d===!0&&(a.scatter2d=yOe(h)),a.fill2d===!0&&(a.fill2d=_Oe(h)),a.glText===!0)for(a.glText=new Array(f),l=0;la.glText.length){var d=f-a.glText.length;for(l=0;lae&&(isNaN(re[_e])||isNaN(re[_e+1]));)_e-=2;W.positions=re.slice(ae,_e+2)}return W}),a.line2d.update(a.lineOptions)),a.error2d){var b=(a.errorXOptions||[]).concat(a.errorYOptions||[]);a.error2d.update(b)}a.scatter2d&&a.scatter2d.update(a.markerOptions),a.fillOrder=JY.repeat(null,f),a.fill2d&&(a.fillOptions=a.fillOptions.map(function(W,re){var ae=n[re];if(!(!W||!ae||!ae[0]||!ae[0].trace)){var _e=ae[0],Me=_e.trace,ke=_e.t,ge=a.lineOptions[re],ie,Te,Ee=[];Me._ownfill&&Ee.push(re),Me._nexttrace&&Ee.push(re+1),Ee.length&&(a.fillOrder[re]=Ee);var Ae=[],ze=ge&&ge.positions||ke.positions,Ce,me;if(Me.fill==="tozeroy"){for(Ce=0;CeCe&&isNaN(ze[me+1]);)me-=2;ze[Ce+1]!==0&&(Ae=[ze[Ce],0]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me+1]!==0&&(Ae=Ae.concat([ze[me],0]))}else if(Me.fill==="tozerox"){for(Ce=0;CeCe&&isNaN(ze[me]);)me-=2;ze[Ce]!==0&&(Ae=[0,ze[Ce+1]]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me]!==0&&(Ae=Ae.concat([0,ze[me+1]]))}else if(Me.fill==="toself"||Me.fill==="tonext"){for(Ae=[],ie=0,W.splitNull=!0,Te=0;Te-1;for(l=0;l{"use strict";var TOe=Hze();TOe.plot=QY();AOe.exports=TOe});var EOe=ye((zmr,MOe)=>{"use strict";MOe.exports=SOe()});var eK=ye((Fmr,POe)=>{"use strict";var BBt=Uc(),LOe=Jl(),kOe=Oc().axisHoverFormat,NBt=Wo().hovertemplateAttrs,bk=tk(),UBt=ad().idRegex,VBt=Vs().templatedArray,hA=no().extendFlat,o1=BBt.marker,HBt=o1.line,GBt=hA(LOe("marker.line",{editTypeOverride:"calc"}),{width:hA({},HBt.width,{editType:"calc"}),editType:"calc"}),bF=hA(LOe("marker"),{symbol:o1.symbol,angle:o1.angle,size:hA({},o1.size,{editType:"markerSize"}),sizeref:o1.sizeref,sizemin:o1.sizemin,sizemode:o1.sizemode,opacity:o1.opacity,colorbar:o1.colorbar,line:GBt,editType:"calc"});bF.color.editType=bF.cmin.editType=bF.cmax.editType="style";function COe(e){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:UBt[e],editType:"plot"}}}POe.exports={dimensions:VBt("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:hA({},bk.text,{}),hovertext:hA({},bk.hovertext,{}),hovertemplate:NBt(),xhoverformat:kOe("x"),yhoverformat:kOe("y"),marker:bF,xaxes:COe("x"),yaxes:COe("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:bk.selected.marker,editType:"calc"},unselected:{marker:bk.unselected.marker,editType:"calc"},opacity:bk.opacity}});var wF=ye((qmr,IOe)=>{"use strict";IOe.exports=function(e,t,r,n){n||(n=1/0);var i,a;for(i=0;i{"use strict";var tK=Mr(),jBt=Zd(),ROe=eK(),WBt=lu(),ZBt=$p(),XBt=wF(),YBt=Fz().isOpenSymbol;DOe.exports=function(t,r,n,i){function a(d,v){return tK.coerce(t,r,ROe,d,v)}var o=jBt(t,r,{name:"dimensions",handleItemDefaults:KBt}),s=a("diagonal.visible"),l=a("showupperhalf"),u=a("showlowerhalf"),c=XBt(r,o,"values");if(!c||!s&&!l&&!u){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),ZBt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0});var f=YBt(r.marker.symbol),h=WBt.isBubble(r);a("marker.line.width",f||h?1:0),JBt(t,r,i,a),tK.coerceSelectionMarkerOpacity(r,a)};function KBt(e,t){function r(i,a){return tK.coerce(e,t,ROe.dimensions,i,a)}r("label");var n=r("values");n&&n.length?r("visible"):t.visible=!1,r("axis.type"),r("axis.matches")}function JBt(e,t,r,n){var i=t.dimensions,a=i.length,o=t.showupperhalf,s=t.showlowerhalf,l=t.diagonal.visible,u,c,f=new Array(a),h=new Array(a);for(u=0;uc&&o||u{"use strict";var FOe=Mr();qOe.exports=function(t,r){var n=t._fullLayout,i=r.uid,a=n._splomScenes;a||(a=n._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s={matrix:!1,selectBatch:[],unselectBatch:[]},l=a[r.uid];return l||(l=a[i]=FOe.extendFlat({},o,s),l.draw=function(){l.matrix&&l.matrix.draw&&(l.selectBatch.length||l.unselectBatch.length?l.matrix.draw(l.unselectBatch,l.selectBatch):l.matrix.draw()),l.dirty=!1},l.destroy=function(){l.matrix&&l.matrix.destroy&&l.matrix.destroy(),l.matrixOptions=null,l.selectBatch=null,l.unselectBatch=null,l=null}),l.dirty||FOe.extendFlat(l,o),l}});var UOe=ye((Nmr,NOe)=>{"use strict";var rK=Mr(),TF=af(),$Bt=q0().calcMarkerSize,QBt=q0().calcAxisExpansion,eNt=z0(),BOe=Y2().markerSelection,tNt=Y2().markerStyle,rNt=OOe(),iNt=es().BADNUM,nNt=sx().TOO_MANY_POINTS;NOe.exports=function(t,r){var n=r.dimensions,i=r._length,a={},o=a.cdata=[],s=a.data=[],l=r._visibleDims=[],u,c,f,h,d;function v(k,A){for(var L=k.makeCalcdata({v:A.values,vcalendar:r.calendar},"v"),_=0;_nNt,p;for(b?p=a.sizeAvg||Math.max(a.size,3):p=$Bt(r,i),c=0;c{(function(){var e,t,r,n,i,a;typeof performance!="undefined"&&performance!==null&&performance.now?wk.exports=function(){return performance.now()}:typeof process!="undefined"&&process!==null&&process.hrtime?(wk.exports=function(){return(e()-i)/1e6},t=process.hrtime,e=function(){var o;return o=t(),o[0]*1e9+o[1]},n=e(),a=process.uptime()*1e9,i=n-a):Date.now?(wk.exports=function(){return Date.now()-r},r=Date.now()):(wk.exports=function(){return new Date().getTime()-r},r=new Date().getTime())}).call(VOe)});var jOe=ye((Umr,MF)=>{var aNt=HOe(),s1=window,AF=["moz","webkit"],vA="AnimationFrame",pA=s1["request"+vA],Tk=s1["cancel"+vA]||s1["cancelRequest"+vA];for(dA=0;!pA&&dA{WOe.exports=function(t,r){var n=typeof t=="number",i=typeof r=="number";n&&!i?(r=t,t=0):!n&&!i&&(t=0,r=0),t=t|0,r=r|0;var a=r-t;if(a<0)throw new Error("array length must be positive");for(var o=new Array(a),s=0,l=t;s{"use strict";var oNt=QX(),sNt=Zm(),lNt=j2(),XOe=jOe(),uNt=ZOe(),nK=Q5(),cNt=W2();KOe.exports=px;function px(e,t){if(!(this instanceof px))return new px(e,t);this.traces=[],this.passes={},this.regl=e,this.scatter=oNt(e),this.canvas=this.scatter.canvas}px.prototype.render=function(...e){return e.length&&this.update(...e),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=XOe(()=>{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,XOe(()=>{this.dirty=!1})),this)};px.prototype.update=function(...e){if(!e.length)return;for(let n=0;nb||!i.lower&&x{t[a+s]=n})}this.scatter.draw(...t)}return this};px.prototype.destroy=function(){return this.traces.forEach(e=>{e.buffer&&e.buffer.destroy&&e.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function fNt(e,t,r){let n=e.id!=null?e.id:e,i=t,a=r;return n<<16|(i&255)<<8|a&255}function EF(e,t,r){let n,i,a,o,s,l,u,c,f=e[t],h=e[r];return f.length>2?(n=f[0],a=f[2],i=f[1],o=f[3]):f.length?(n=i=f[0],a=o=f[1]):(n=f.x,i=f.y,a=f.x+f.width,o=f.y+f.height),h.length>2?(s=h[0],u=h[2],l=h[1],c=h[3]):h.length?(s=l=h[0],u=c=h[1]):(s=h.x,l=h.y,u=h.x+h.width,c=h.y+h.height),[s,i,u,o]}function YOe(e){if(typeof e=="number")return[e,e,e,e];if(e.length===2)return[e[0],e[1],e[0],e[1]];{let t=nK(e);return[t.x,t.y,t.x+t.width,t.y+t.height]}}});var QOe=ye((Gmr,$Oe)=>{"use strict";var hNt=JOe(),aK=Mr(),kF=af(),dNt=Sg().selectMode;$Oe.exports=function(t,r,n){if(n.length)for(var i=0;i-1,T=dNt(c)||!!i.selectedpoints||P,F=!0;if(T){var q=i._length;if(i.selectedpoints){o.selectBatch=i.selectedpoints;var V=i.selectedpoints,H={};for(d=0;d{"use strict";eBe.getDimIndex=function(t,r){for(var n=r._id,i=n.charAt(0),a={x:0,y:1}[i],o=t._visibleDims,s=0;s{"use strict";var tBe=oK(),pNt=zz().calcHover,rBe=Qa().getFromId,gNt=no().extendFlat;function mNt(e,t,r,n,i){i||(i={});var a=(n||"").charAt(0)==="x",o=(n||"").charAt(0)==="y",s=iBe(e,t,r);if((a||o)&&i.hoversubplots==="axis"&&s[0])for(var l=(a?e.xa:e.ya)._subplotsWith,u=i.gd,c=gNt({},e),f=0;f{"use strict";var uBe=Mr(),oBe=uBe.pushUnique,sBe=lu(),lBe=oK();cBe.exports=function(t,r){var n=t.cd,i=n[0].trace,a=n[0].t,o=t.scene,s=o.matrixOptions.cdata,l=t.xaxis,u=t.yaxis,c=[];if(!o)return c;var f=!sBe.hasMarkers(i)&&!sBe.hasText(i);if(i.visible!==!0||f)return c;var h=lBe.getDimIndex(i,l),d=lBe.getDimIndex(i,u);if(h===!1||d===!1)return c;var v=a.xpx[h],x=a.ypx[d],b=s[h],p=s[d],E=(t.scene.selectBatch||[]).slice(),k=[];if(r!==!1&&!r.degenerate)for(var A=0;A{"use strict";var hBe=Mr(),yNt=z0(),_Nt=Y2().markerStyle;dBe.exports=function(t,r){var n=r.trace,i=t._fullLayout._splomScenes[n.uid];if(i){yNt(t,n),hBe.extendFlat(i.matrixOptions,_Nt(t,n));var a=hBe.extendFlat({},i.matrixOptions,i.viewOpts);i.matrix.update(a,null)}}});var gBe=ye((Ymr,pBe)=>{"use strict";var xNt=ba(),bNt=nV();pBe.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:eK(),supplyDefaults:zOe(),colorbar:Kd(),calc:UOe(),plot:QOe(),hoverPoints:aBe().hoverPoints,selectPoints:fBe(),editStyle:vBe(),meta:{}};xNt.register(bNt)});var wBe=ye((Kmr,bBe)=>{"use strict";var wNt=LY(),TNt=ba(),ANt=xF(),SNt=kd().getModuleCalcData,gx=Jf(),mBe=af().getFromId,yBe=Qa().shouldShowZeroLine,_Be="splom",xBe={};function MNt(e){var t=e._fullLayout,r=TNt.getModule(_Be),n=SNt(e.calcdata,r)[0],i=ANt(e,["ANGLE_instanced_arrays","OES_element_index_uint"],xBe);i&&(t._hasOnlyLargeSploms&&sK(e),r.plot(e,{},n))}function ENt(e){var t=e.calcdata,r=e._fullLayout;r._hasOnlyLargeSploms&&sK(e);for(var n=0;n{"use strict";var TBe=gBe();TBe.basePlotModule=wBe(),ABe.exports=TBe});var EBe=ye(($mr,MBe)=>{"use strict";MBe.exports=SBe()});var cK=ye((Qmr,kBe)=>{"use strict";var PNt=Jl(),lK=Cd(),uK=Su(),INt=Ju().attributes,CF=no().extendFlat,RNt=Vs().templatedArray;kBe.exports={domain:INt({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:uK({editType:"plot"}),tickfont:uK({autoShadowDflt:!0,editType:"plot"}),rangefont:uK({editType:"plot"}),dimensions:RNt("dimension",{label:{valType:"string",editType:"plot"},tickvals:CF({},lK.tickvals,{editType:"plot"}),ticktext:CF({},lK.ticktext,{editType:"plot"}),tickformat:CF({},lK.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:CF({editType:"calc"},PNt("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}});var Ak=ye((eyr,CBe)=>{"use strict";CBe.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:["contextLineLayer","focusLineLayer","pickLineLayer"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:"magenta",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:"axis-extent-text",parcoordsLineLayers:"parcoords-line-layers",parcoordsLineLayer:"parcoords-lines",parcoords:"parcoords",parcoordsControlView:"parcoords-control-view",yAxis:"y-axis",axisOverlays:"axis-overlays",axis:"axis",axisHeading:"axis-heading",axisTitle:"axis-title",axisExtent:"axis-extent",axisExtentTop:"axis-extent-top",axisExtentTopText:"axis-extent-top-text",axisExtentBottom:"axis-extent-bottom",axisExtentBottomText:"axis-extent-bottom-text",axisBrush:"axis-brush"},id:{filterBarPattern:"filter-bar-pattern"}}});var Km=ye((tyr,PBe)=>{"use strict";var DNt=OS();function LBe(e){return[e]}PBe.exports={keyFun:function(e){return e.key},repeat:LBe,descend:DNt,wrap:LBe,unwrap:function(e){return e[0]}}});var dK=ye((ryr,VBe)=>{"use strict";var th=Ak(),em=xa(),zNt=Km().keyFun,LF=Km().repeat,gA=Mr().sorterAsc,FNt=Mr().strTranslate,IBe=th.bar.snapRatio;function RBe(e,t){return e*(1-IBe)+t*IBe}var DBe=th.bar.snapClose;function qNt(e,t){return e*(1-DBe)+t*DBe}function IF(e,t,r,n){if(ONt(r,n))return r;var i=e?-1:1,a=0,o=t.length-1;if(i<0){var s=a;a=o,o=s}for(var l=t[a],u=l,c=a;i*c=t[r][0]&&e<=t[r][1])return!0;return!1}function BNt(e){e.attr("x",-th.bar.captureWidth/2).attr("width",th.bar.captureWidth)}function NNt(e){e.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function UNt(e){if(!e.brush.filterSpecified)return"0,"+e.height;for(var t=zBe(e.brush.filter.getConsolidated(),e.height),r=[0],n,i,a,o=t.length?t[0][0]:null,s=0;se[1]+r||t=.9*e[1]+.1*e[0]?"n":t<=.9*e[0]+.1*e[1]?"s":"ns"}function FBe(){em.select(document.body).style("cursor",null)}function hK(e){e.attr("stroke-dasharray",UNt)}function PF(e,t){var r=em.select(e).selectAll(".highlight, .highlight-shadow"),n=t?r.transition().duration(th.bar.snapDuration).each("end",t):r;hK(n)}function qBe(e,t){var r=e.brush,n=r.filterSpecified,i=NaN,a={},o;if(n){var s=e.height,l=r.filter.getConsolidated(),u=zBe(l,s),c=NaN,f=NaN,h=NaN;for(o=0;o<=u.length;o++){var d=u[o];if(d&&d[0]<=t&&t<=d[1]){c=o;break}else if(f=o?o-1:NaN,d&&d[0]>t){h=o;break}}if(i=c,isNaN(i)&&(isNaN(f)||isNaN(h)?i=isNaN(f)?h:f:i=t-u[f][1]=E[0]&&p<=E[1]){a.clickableOrdinalRange=E;break}}}return a}function HNt(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.unitToPaddedPx.invert(r),i=t.brush,a=qBe(t,r),o=a.interval,s=i.svgBrush;if(s.wasDragged=!1,s.grabbingBar=a.region==="ns",s.grabbingBar){var l=o.map(t.unitToPaddedPx);s.grabPoint=r-l[0]-th.verticalPadding,s.barLength=l[1]-l[0]}s.clickableOrdinalRange=a.clickableOrdinalRange,s.stayingIntervals=t.multiselect&&i.filterSpecified?i.filter.getConsolidated():[],o&&(s.stayingIntervals=s.stayingIntervals.filter(function(u){return u[0]!==o[0]&&u[1]!==o[1]})),s.startExtent=a.region?o[a.region==="s"?1:0]:n,t.parent.inBrushDrag=!0,s.brushStartCallback()}function OBe(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.brush.svgBrush;n.wasDragged=!0,n._dragging=!0,n.grabbingBar?n.newExtent=[r-n.grabPoint,r+n.barLength-n.grabPoint].map(t.unitToPaddedPx.invert):n.newExtent=[n.startExtent,t.unitToPaddedPx.invert(r)].sort(gA),t.brush.filterSpecified=!0,n.extent=n.stayingIntervals.concat([n.newExtent]),n.brushCallback(t),PF(e.parentNode)}function GNt(e,t){var r=t.brush,n=r.filter,i=r.svgBrush;i._dragging||(BBe(e,t),OBe(e,t),t.brush.svgBrush.wasDragged=!1),i._dragging=!1;var a=em.event;a.sourceEvent.stopPropagation();var o=i.grabbingBar;if(i.grabbingBar=!1,i.grabLocation=void 0,t.parent.inBrushDrag=!1,FBe(),!i.wasDragged){i.wasDragged=void 0,i.clickableOrdinalRange?r.filterSpecified&&t.multiselect?i.extent.push(i.clickableOrdinalRange):(i.extent=[i.clickableOrdinalRange],r.filterSpecified=!0):o?(i.extent=i.stayingIntervals,i.extent.length===0&&fK(r)):fK(r),i.brushCallback(t),PF(e.parentNode),i.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);return}var s=function(){n.set(n.getConsolidated())};if(t.ordinal){var l=t.unitTickvals;l[l.length-1]i.newExtent[0];i.extent=i.stayingIntervals.concat(u?[i.newExtent]:[]),i.extent.length||fK(r),i.brushCallback(t),u?PF(e.parentNode,s):(s(),PF(e.parentNode))}else s();i.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}function BBe(e,t){var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=qBe(t,r),i="crosshair";n.clickableOrdinalRange?i="pointer":n.region&&(i=n.region+"-resize"),em.select(document.body).style("cursor",i)}function jNt(e){e.on("mousemove",function(t){em.event.preventDefault(),t.parent.inBrushDrag||BBe(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||FBe()}).call(em.behavior.drag().on("dragstart",function(t){HNt(this,t)}).on("drag",function(t){OBe(this,t)}).on("dragend",function(t){GNt(this,t)}))}function NBe(e,t){return e[0]-t[0]}function WNt(e,t,r){var n=r._context.staticPlot,i=e.selectAll(".background").data(LF);i.enter().append("rect").classed("background",!0).call(BNt).call(NNt).style("pointer-events",n?"none":"auto").attr("transform",FNt(0,th.verticalPadding)),i.call(jNt).attr("height",function(s){return s.height-th.verticalPadding});var a=e.selectAll(".highlight-shadow").data(LF);a.enter().append("line").classed("highlight-shadow",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width+th.bar.strokeWidth).attr("stroke",t).attr("opacity",th.bar.strokeOpacity).attr("stroke-linecap","butt"),a.attr("y1",function(s){return s.height}).call(hK);var o=e.selectAll(".highlight").data(LF);o.enter().append("line").classed("highlight",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width-th.bar.strokeWidth).attr("stroke",th.bar.fillColor).attr("opacity",th.bar.fillOpacity).attr("stroke-linecap","butt"),o.attr("y1",function(s){return s.height}).call(hK)}function ZNt(e,t,r){var n=e.selectAll("."+th.cn.axisBrush).data(LF,zNt);n.enter().append("g").classed(th.cn.axisBrush,!0),WNt(n,t,r)}function XNt(e){return e.svgBrush.extent.map(function(t){return t.slice()})}function fK(e){e.filterSpecified=!1,e.svgBrush.extent=[[-1/0,1/0]]}function YNt(e){return function(r){var n=r.brush,i=XNt(n),a=i.slice();n.filter.set(a),e()}}function UBe(e){for(var t=e.slice(),r=[],n,i=t.shift();i;){for(n=i.slice();(i=t.shift())&&i[0]<=n[1];)n[1]=Math.max(n[1],i[1]);r.push(n)}return r.length===1&&r[0][0]>r[0][1]&&(r=[]),r}function KNt(){var e=[],t,r;return{set:function(n){e=n.map(function(i){return i.slice().sort(gA)}).sort(NBe),e.length===1&&e[0][0]===-1/0&&e[0][1]===1/0&&(e=[[0,-1]]),t=UBe(e),r=e.reduce(function(i,a){return[Math.min(i[0],a[0]),Math.max(i[1],a[1])]},[1/0,-1/0])},get:function(){return e.slice()},getConsolidated:function(){return t},getBounds:function(){return r}}}function JNt(e,t,r,n,i,a){var o=KNt();return o.set(r),{filter:o,filterSpecified:t,svgBrush:{extent:[],brushStartCallback:n,brushCallback:YNt(i),brushEndCallback:a}}}function $Nt(e,t){if(Array.isArray(e[0])?(e=e.map(function(n){return n.sort(gA)}),t.multiselect?e=UBe(e.sort(NBe)):e=[e[0]]):e=[e.sort(gA)],t.tickvals){var r=t.tickvals.slice().sort(gA);if(e=e.map(function(n){var i=[IF(0,r,n[0],[]),IF(1,r,n[1],[])];if(i[1]>i[0])return i}).filter(function(n){return n}),!e.length)return}return e.length>1?e:e[0]}VBe.exports={makeBrush:JNt,ensureAxisBrush:ZNt,cleanRanges:$Nt}});var jBe=ye((iyr,GBe)=>{"use strict";var mx=Mr(),QNt=Dv().hasColorscale,eUt=Uh(),tUt=Ju().defaults,rUt=Zd(),iUt=Qa(),HBe=cK(),nUt=dK(),vK=Ak().maxDimensionCount,aUt=wF();function oUt(e,t,r,n,i){var a=i("line.color",r);if(QNt(e,"line")&&mx.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),eUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function sUt(e,t,r,n){function i(u,c){return mx.coerce(e,t,HBe.dimensions,u,c)}var a=i("values"),o=i("visible");if(a&&a.length||(o=t.visible=!1),o){i("label"),i("tickvals"),i("ticktext"),i("tickformat");var s=i("range");t._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:s},iUt.setConvert(t._ax,n.layout),i("multiselect");var l=i("constraintrange");l&&(t.constraintrange=nUt.cleanRanges(l,t))}}GBe.exports=function(t,r,n,i){function a(c,f){return mx.coerce(t,r,HBe,c,f)}var o=t.dimensions;Array.isArray(o)&&o.length>vK&&(mx.log("parcoords traces support up to "+vK+" dimensions at the moment"),o.splice(vK));var s=rUt(t,r,{name:"dimensions",layout:i,handleItemDefaults:sUt}),l=oUt(t,r,n,i,a);tUt(r,i,a),(!Array.isArray(s)||!s.length)&&(r.visible=!1),aUt(r,s,"values",l);var u=mx.extendFlat({},i.font,{size:Math.round(i.font.size/1.2)});mx.coerceFont(a,"labelfont",u),mx.coerceFont(a,"tickfont",u,{autoShadowDflt:!0}),mx.coerceFont(a,"rangefont",u),a("labelangle"),a("labelside"),a("unselected.line.color"),a("unselected.line.opacity")}});var ZBe=ye((nyr,WBe)=>{"use strict";var lUt=Mr().isArrayOrTypedArray,pK=Mu(),uUt=Km().wrap;WBe.exports=function(t,r){var n,i;return pK.hasColorscale(r,"line")&&lUt(r.line.color)?(n=r.line.color,i=pK.extractOpts(r.line).colorscale,pK.calc(t,r,{vals:n,containerStr:"line",cLetter:"c"})):(n=cUt(r._length),i=[[0,r.line.color],[1,r.line.color]]),uUt({lineColor:n,cscale:i})};function cUt(e){for(var t=new Array(e),r=0;r>>16,(e&65280)>>>8,e&255],alpha:1};if(typeof e=="number")return{space:"rgb",values:[e>>>16,(e&65280)>>>8,e&255],alpha:1};if(e=String(e).toLowerCase(),gK.default[e])r=gK.default[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(e[0]==="#"){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(e)){var l=t[1];i=l.replace(/a$/,"");var u=i==="cmyk"?4:i==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/),i==="color"&&(i=r.shift()),r=r.map(function(h,d){if(h[h.length-1]==="%")return h=parseFloat(h)/100,d===3?h:i==="rgb"?h*255:i[0]==="h"||i[0]==="l"&&!d?h*100:i==="lab"?h*125:i==="lch"?d<2?h*150:h*360:i[0]==="o"&&!d?h:i==="oklab"?h*.4:i==="oklch"?d<2?h*.4:h*360:h;if(i[d]==="h"||d===2&&i[i.length-1]==="h"){if(XBe[h]!==void 0)return XBe[h];if(h.endsWith("deg"))return parseFloat(h);if(h.endsWith("turn"))return parseFloat(h)*360;if(h.endsWith("grad"))return parseFloat(h)*360/400;if(h.endsWith("rad"))return parseFloat(h)*180/Math.PI}return h==="none"?0:parseFloat(h)}),n=r.length>u?r.pop():1}else/[0-9](?:\s|\/|,)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(h){return parseFloat(h)}),i=((f=(c=e.match(/([a-z])/ig))==null?void 0:c.join(""))==null?void 0:f.toLowerCase())||"rgb");return{space:i,values:r,alpha:n}}var gK,YBe,XBe,KBe=Ll(()=>{gK=YQe(rZ(),1),YBe=fUt,XBe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}});var Sk,mK=Ll(()=>{Sk={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}});var RF,JBe=Ll(()=>{mK();RF={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}};Sk.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s,l,u;return a===i?s=0:t===a?s=(r-n)/o:r===a?s=2+(n-t)/o:n===a&&(s=4+(t-r)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+a)/2,a===i?l=0:u<=.5?l=o/(a+i):l=o/(2-a-i),[s,l*100,u*100]}});var QBe={};QQ(QBe,{default:()=>$Be});function $Be(e){Array.isArray(e)&&e.raw&&(e=String.raw(...arguments)),e instanceof Number&&(e=+e);var t,r,n,i=YBe(e);if(!i.space)return[];let a=i.space[0]==="h"?RF.min:Sk.min,o=i.space[0]==="h"?RF.max:Sk.max;return t=Array(3),t[0]=Math.min(Math.max(i.values[0],a[0]),o[0]),t[1]=Math.min(Math.max(i.values[1],a[1]),o[1]),t[2]=Math.min(Math.max(i.values[2],a[2]),o[2]),i.space[0]==="h"&&(t=RF.rgb(t)),t.push(Math.min(Math.max(i.alpha,0),1)),t}var eNe=Ll(()=>{KBe();mK();JBe()});var yK=ye(DF=>{"use strict";var hUt=Mr().isTypedArray;DF.convertTypedArray=function(e){return hUt(e)?Array.prototype.slice.call(e):e};DF.isOrdinal=function(e){return!!e.tickvals};DF.isVisible=function(e){return e.visible||!("visible"in e)}});var cNe=ye((dyr,uNe)=>{"use strict";var dUt=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` +`),vUt=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` +`),Mk=Ak().maxDimensionCount,oNe=Mr(),tNe=1e-6,zF=2048,pUt=new Uint8Array(4),rNe=new Uint8Array(4),iNe={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function gUt(e){e.read({x:0,y:0,width:1,height:1,data:pUt})}function sNe(e,t,r,n,i){var a=e._gl;a.enable(a.SCISSOR_TEST),a.scissor(t,r,n,i),e.clear({color:[0,0,0,0],depth:1})}function mUt(e,t,r,n,i,a){var o=a.key;function s(l){var u=Math.min(n,i-l*n);l===0&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],sNe(e,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*u,a.offset=2*l*n,t(a),l*n+u>>8*t)%256/255}function xUt(e,t,r){for(var n=new Array(e*(Mk+4)),i=0,a=0;aX&&(X=M[F].dim1.canvasX,V=F);T===0&&sNe(i,0,0,u.canvasWidth,u.canvasHeight);var G=k(r);for(F=0;F{"use strict";var zd=xa(),l1=Mr(),xK=l1.isArrayOrTypedArray,gNe=l1.numberFormat,mNe=(eNe(),B1(QBe)).default,yNe=Qa(),SUt=l1.strRotate,Jm=l1.strTranslate,MUt=Pl(),FF=ao(),fNe=Mu(),TK=Km(),tg=TK.keyFun,$m=TK.repeat,_Ne=TK.unwrap,mA=yK(),ll=Ak(),xNe=dK(),EUt=cNe();function hNe(e,t,r){return l1.aggNums(e,null,t,r)}function bNe(e,t){return AK(hNe(Math.min,e,t),hNe(Math.max,e,t))}function qF(e){var t=e.range;return t?AK(t[0],t[1]):bNe(e.values,e._length)}function AK(e,t){return(isNaN(e)||!isFinite(e))&&(e=0),(isNaN(t)||!isFinite(t))&&(t=0),e===t&&(e===0?(e-=1,t+=1):(e*=.9,t*=1.1)),[e,t]}function kUt(e,t){return t?function(r,n){var i=t[n];return i==null?e(r):i}:e}function CUt(e,t,r,n,i){var a=qF(r);return n?zd.scale.ordinal().domain(n.map(kUt(gNe(r.tickformat),i))).range(n.map(function(o){var s=(o-a[0])/(a[1]-a[0]);return e-t+s*(2*t-e)})):zd.scale.linear().domain(a).range([e-t,t])}function LUt(e,t){return zd.scale.linear().range([t,e-t])}function PUt(e,t){return zd.scale.linear().domain(qF(e)).range([t,1-t])}function IUt(e){if(e.tickvals){var t=qF(e);return zd.scale.ordinal().domain(e.tickvals).range(e.tickvals.map(function(r){return(r-t[0])/(t[1]-t[0])}))}}function RUt(e){var t=e.map(function(a){return a[0]}),r=e.map(function(a){var o=mNe(a[1]);return zd.rgb("rgb("+o[0]+","+o[1]+","+o[2]+")")}),n=function(a){return function(o){return o[a]}},i="rgb".split("").map(function(a){return zd.scale.linear().clamp(!0).domain(t).range(r.map(n(a)))});return function(a){return i.map(function(o){return o(a)})}}function wK(e){return e.dimensions.some(function(t){return t.brush.filterSpecified})}function DUt(e,t,r){var n=_Ne(t),i=n.trace,a=mA.convertTypedArray(n.lineColor),o=i.line,s={color:mNe(i.unselected.line.color),opacity:i.unselected.line.opacity},l=fNe.extractOpts(o),u=l.reversescale?fNe.flipScale(n.cscale):n.cscale,c=i.domain,f=i.dimensions,h=e.width,d=i.labelangle,v=i.labelside,x=i.labelfont,b=i.tickfont,p=i.rangefont,E=l1.extendDeepNoArrays({},o,{color:a.map(zd.scale.linear().domain(qF({values:a,range:[l.min,l.max],_length:i._length}))),blockLineCount:ll.blockLineCount,canvasOverdrag:ll.overdrag*ll.canvasPixelRatio}),k=Math.floor(h*(c.x[1]-c.x[0])),A=Math.floor(e.height*(c.y[1]-c.y[0])),L=e.margin||{l:80,r:80,t:100,b:80},_=k,C=A;return{key:r,colCount:f.filter(mA.isVisible).length,dimensions:f,tickDistance:ll.tickDistance,unitToColor:RUt(u),lines:E,deselectedLines:s,labelAngle:d,labelSide:v,labelFont:x,tickFont:b,rangeFont:p,layoutWidth:h,layoutHeight:e.height,domain:c,translateX:c.x[0]*h,translateY:e.height-c.y[1]*e.height,pad:L,canvasWidth:_*ll.canvasPixelRatio+2*E.canvasOverdrag,canvasHeight:C*ll.canvasPixelRatio,width:_,height:C,canvasPixelRatio:ll.canvasPixelRatio}}function zUt(e,t,r){var n=r.width,i=r.height,a=r.dimensions,o=r.canvasPixelRatio,s=function(h){return n*h/Math.max(1,r.colCount-1)},l=ll.verticalPadding/i,u=LUt(i,ll.verticalPadding),c={key:r.key,xScale:s,model:r,inBrushDrag:!1},f={};return c.dimensions=a.filter(mA.isVisible).map(function(h,d){var v=PUt(h,l),x=f[h.label];f[h.label]=(x||0)+1;var b=h.label+(x?"__"+x:""),p=h.constraintrange,E=p&&p.length;E&&!xK(p[0])&&(p=[p]);var k=E?p.map(function(q){return q.map(v)}):[[-1/0,1/0]],A=function(){var q=c;q.focusLayer&&q.focusLayer.render(q.panels,!0);var V=wK(q);!e.contextShown()&&V?(q.contextLayer&&q.contextLayer.render(q.panels,!0),e.contextShown(!0)):e.contextShown()&&!V&&(q.contextLayer&&q.contextLayer.render(q.panels,!0,!0),e.contextShown(!1))},L=h.values;L.length>h._length&&(L=L.slice(0,h._length));var _=h.tickvals,C;function M(q,V){return{val:q,text:C[V]}}function g(q,V){return q.val-V.val}if(xK(_)&&_.length){l1.isTypedArray(_)&&(_=Array.from(_)),C=h.ticktext,!xK(C)||!C.length?C=_.map(gNe(h.tickformat)):C.length>_.length?C=C.slice(0,_.length):_.length>C.length&&(_=_.slice(0,C.length));for(var P=1;P<_.length;P++)if(_[P]<_[P-1]){for(var T=_.map(M).sort(g),F=0;F<_.length;F++)_[F]=T[F].val,C[F]=T[F].text;break}}else _=void 0;return L=mA.convertTypedArray(L),{key:b,label:h.label,tickFormat:h.tickformat,tickvals:_,ticktext:C,ordinal:mA.isOrdinal(h),multiselect:h.multiselect,xIndex:d,crossfilterDimensionIndex:d,visibleIndex:h._index,height:i,values:L,paddedUnitValues:L.map(v),unitTickvals:_&&_.map(v),xScale:s,x:s(d),canvasX:s(d)*o,unitToPaddedPx:u,domainScale:CUt(i,ll.verticalPadding,h,_,C),ordinalScale:IUt(h),parent:c,model:r,brush:xNe.makeBrush(e,E,k,function(){e.linePickActive(!1)},A,function(q){if(c.focusLayer.render(c.panels,!0),c.pickLayer&&c.pickLayer.render(c.panels,!0),e.linePickActive(!0),t&&t.filterChanged){var V=v.invert,H=q.map(function(X){return X.map(V).sort(l1.sorterAsc)}).sort(function(X,G){return X[0]-G[0]});t.filterChanged(c.key,h._index,H)}})}}),c}function dNe(e){e.classed(ll.cn.axisExtentText,!0).attr("text-anchor","middle").style("cursor","default")}function FUt(){var e=!0,t=!1;return{linePickActive:function(r){return arguments.length?e=!!r:e},contextShown:function(r){return arguments.length?t=!!r:t}}}function vNe(e,t){var r=t==="top"?1:-1,n=e*Math.PI/180,i=Math.sin(n),a=Math.cos(n);return{dir:r,dx:i,dy:a,degrees:e}}function bK(e,t,r){for(var n=t.panels||(t.panels=[]),i=e.data(),a=0;a=V||N>=H)return;var W=F.lineLayer.readPixel(G,H-1-N),re=W[3]!==0,ae=re?W[2]+256*(W[1]+256*W[0]):null,_e={x:G,y:N,clientX:q.clientX,clientY:q.clientY,dataIndex:F.model.key,curveNumber:ae};ae!==v&&(re?i.hover(_e):i.unhover&&i.unhover(_e),v=ae)}}),d.style("opacity",function(F){return F.pick?0:1}),s.style("background","rgba(255, 255, 255, 0)");var b=s.selectAll("."+ll.cn.parcoords).data(h,tg);b.exit().remove(),b.enter().append("g").classed(ll.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),b.attr("transform",function(F){return Jm(F.model.translateX,F.model.translateY)});var p=b.selectAll("."+ll.cn.parcoordsControlView).data($m,tg);p.enter().append("g").classed(ll.cn.parcoordsControlView,!0),p.attr("transform",function(F){return Jm(F.model.pad.l,F.model.pad.t)});var E=p.selectAll("."+ll.cn.yAxis).data(function(F){return F.dimensions},tg);E.enter().append("g").classed(ll.cn.yAxis,!0),p.each(function(F){bK(E,F,u)}),d.each(function(F){if(F.viewModel){!F.lineLayer||i?F.lineLayer=EUt(this,F):F.lineLayer.update(F),(F.key||F.key===0)&&(F.viewModel[F.key]=F.lineLayer);var q=!F.context||i;F.lineLayer.render(F.viewModel.panels,q)}}),E.attr("transform",function(F){return Jm(F.xScale(F.xIndex),0)}),E.call(zd.behavior.drag().origin(function(F){return F}).on("drag",function(F){var q=F.parent;f.linePickActive(!1),F.x=Math.max(-ll.overdrag,Math.min(F.model.width+ll.overdrag,zd.event.x)),F.canvasX=F.x*F.model.canvasPixelRatio,E.sort(function(V,H){return V.x-H.x}).each(function(V,H){V.xIndex=H,V.x=F===V?V.x:V.xScale(V.xIndex),V.canvasX=V.x*V.model.canvasPixelRatio}),bK(E,q,u),E.filter(function(V){return Math.abs(F.xIndex-V.xIndex)!==0}).attr("transform",function(V){return Jm(V.xScale(V.xIndex),0)}),zd.select(this).attr("transform",Jm(F.x,0)),E.each(function(V,H,X){X===F.parent.key&&(q.dimensions[H]=V)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer.render&&q.focusLayer.render(q.panels)}).on("dragend",function(F){var q=F.parent;F.x=F.xScale(F.xIndex),F.canvasX=F.x*F.model.canvasPixelRatio,bK(E,q,u),zd.select(this).attr("transform",function(V){return Jm(V.x,0)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer&&q.focusLayer.render(q.panels),q.pickLayer&&q.pickLayer.render(q.panels,!0),f.linePickActive(!0),i&&i.axesMoved&&i.axesMoved(q.key,q.dimensions.map(function(V){return V.crossfilterDimensionIndex}))})),E.exit().remove();var k=E.selectAll("."+ll.cn.axisOverlays).data($m,tg);k.enter().append("g").classed(ll.cn.axisOverlays,!0),k.selectAll("."+ll.cn.axis).remove();var A=k.selectAll("."+ll.cn.axis).data($m,tg);A.enter().append("g").classed(ll.cn.axis,!0),A.each(function(F){var q=F.model.height/F.model.tickDistance,V=F.domainScale,H=V.domain();zd.select(this).call(zd.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(q,F.tickFormat).tickValues(F.ordinal?H:null).tickFormat(function(X){return mA.isOrdinal(F)?X:wNe(F.model.dimensions[F.visibleIndex],X)}).scale(V)),FF.font(A.selectAll("text"),F.model.tickFont)}),A.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),A.selectAll("text").style("cursor","default");var L=k.selectAll("."+ll.cn.axisHeading).data($m,tg);L.enter().append("g").classed(ll.cn.axisHeading,!0);var _=L.selectAll("."+ll.cn.axisTitle).data($m,tg);_.enter().append("text").classed(ll.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",a?"none":"auto"),_.text(function(F){return F.label}).each(function(F){var q=zd.select(this);FF.font(q,F.model.labelFont),MUt.convertToTspans(q,t)}).attr("transform",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=ll.axisTitleOffset;return(q.dir>0?"":Jm(0,2*V+F.model.height))+SUt(q.degrees)+Jm(-V*q.dx,-V*q.dy)}).attr("text-anchor",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=Math.abs(q.dx),H=Math.abs(q.dy);return 2*V>H?q.dir*q.dx<0?"start":"end":"middle"});var C=k.selectAll("."+ll.cn.axisExtent).data($m,tg);C.enter().append("g").classed(ll.cn.axisExtent,!0);var M=C.selectAll("."+ll.cn.axisExtentTop).data($m,tg);M.enter().append("g").classed(ll.cn.axisExtentTop,!0),M.attr("transform",Jm(0,-ll.axisExtentOffset));var g=M.selectAll("."+ll.cn.axisExtentTopText).data($m,tg);g.enter().append("text").classed(ll.cn.axisExtentTopText,!0).call(dNe),g.text(function(F){return pNe(F,!0)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)});var P=C.selectAll("."+ll.cn.axisExtentBottom).data($m,tg);P.enter().append("g").classed(ll.cn.axisExtentBottom,!0),P.attr("transform",function(F){return Jm(0,F.model.height+ll.axisExtentOffset)});var T=P.selectAll("."+ll.cn.axisExtentBottomText).data($m,tg);T.enter().append("text").classed(ll.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(dNe),T.text(function(F){return pNe(F,!1)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)}),xNe.ensureAxisBrush(k,c,t)}});var MK=ye((SK,kNe)=>{"use strict";var OUt=ANe(),BUt=xF(),SNe=yK().isVisible,ENe={};function MNe(e,t,r){var n=t.indexOf(r),i=e.indexOf(n);return i===-1&&(i+=t.length),i}function NUt(e,t){return function(n,i){return MNe(e,t,n)-MNe(e,t,i)}}var SK=kNe.exports=function(t,r){var n=t._fullLayout,i=BUt(t,[],ENe);if(i){var a={},o={},s={},l={},u=n._size;r.forEach(function(v,x){var b=v[0].trace;s[x]=b.index;var p=l[x]=b.index;a[x]=t.data[p].dimensions,o[x]=t.data[p].dimensions.slice()});var c=function(v,x,b){var p=o[v][x],E=b.map(function(M){return M.slice()}),k="dimensions["+x+"].constraintrange",A=n._tracePreGUI[t._fullData[s[v]]._fullInput.uid];if(A[k]===void 0){var L=p.constraintrange;A[k]=L||null}var _=t._fullData[s[v]].dimensions[x];E.length?(E.length===1&&(E=E[0]),p.constraintrange=E,_.constraintrange=E.slice(),E=[E]):(delete p.constraintrange,delete _.constraintrange,E=null);var C={};C[k]=E,t.emit("plotly_restyle",[C,[l[v]]])},f=function(v){t.emit("plotly_hover",v)},h=function(v){t.emit("plotly_unhover",v)},d=function(v,x){var b=NUt(x,o[v].filter(SNe));a[v].sort(b),o[v].filter(function(p){return!SNe(p)}).sort(function(p){return o[v].indexOf(p)}).forEach(function(p){a[v].splice(a[v].indexOf(p),1),a[v].splice(o[v].indexOf(p),0,p)}),t.emit("plotly_restyle",[{dimensions:[a[v]]},[l[v]]])};OUt(t,r,{width:u.w,height:u.h,margin:{t:u.t,r:u.r,b:u.b,l:u.l}},{filterChanged:c,hover:f,unhover:h,axesMoved:d})}};SK.reglPrecompiled=ENe});var LNe=ye(Ek=>{"use strict";var CNe=xa(),UUt=kd().getModuleCalcData,VUt=MK(),HUt=Zp();Ek.name="parcoords";Ek.plot=function(e){var t=UUt(e.calcdata,"parcoords")[0];t.length&&VUt(e,t)};Ek.clean=function(e,t,r,n){var i=n._has&&n._has("parcoords"),a=t._has&&t._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())};Ek.toSVG=function(e){var t=e._fullLayout._glimages,r=CNe.select(e).selectAll(".svg-container"),n=r.filter(function(a,o){return o===r.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function i(){var a=this,o=a.toDataURL("image/png"),s=t.append("svg:image");s.attr({xmlns:HUt.svg,"xlink:href":o,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}n.each(i),window.setTimeout(function(){CNe.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}});var INe=ye((gyr,PNe)=>{"use strict";PNe.exports={attributes:cK(),supplyDefaults:jBe(),calc:ZBe(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:LNe(),categories:["gl","regl","noOpacity","noHover"],meta:{}}});var zNe=ye((myr,DNe)=>{"use strict";var RNe=INe();RNe.plot=MK();DNe.exports=RNe});var qNe=ye((yyr,FNe)=>{"use strict";FNe.exports=zNe()});var EK=ye((_yr,UNe)=>{"use strict";var BNe=no().extendFlat,GUt=vl(),ONe=Su(),jUt=Jl(),NNe=Wo().hovertemplateAttrs,WUt=Ju().attributes,ZUt=BNe({editType:"calc"},jUt("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});UNe.exports={domain:WUt({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:BNe({},GUt.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:ONe({editType:"calc"}),tickfont:ONe({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:ZUt,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}});var GNe=ye((xyr,HNe)=>{"use strict";var yA=Mr(),XUt=Dv().hasColorscale,YUt=Uh(),KUt=Ju().defaults,JUt=Zd(),VNe=EK(),$Ut=wF(),QUt=vv().isTypedArraySpec;function eVt(e,t,r,n,i){i("line.shape"),i("line.hovertemplate");var a=i("line.color",n.colorway[0]);if(XUt(e,"line")&&yA.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),YUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function tVt(e,t){function r(u,c){return yA.coerce(e,t,VNe.dimensions,u,c)}var n=r("values"),i=r("visible");if(n&&n.length||(i=t.visible=!1),i){r("label"),r("displayindex",t._index);var a=e.categoryarray,o=yA.isArrayOrTypedArray(a)&&a.length>0||QUt(a),s;o&&(s="array");var l=r("categoryorder",s);l==="array"?(r("categoryarray"),r("ticktext")):(delete e.categoryarray,delete e.ticktext),!o&&l==="array"&&(t.categoryorder="trace")}}HNe.exports=function(t,r,n,i){function a(u,c){return yA.coerce(t,r,VNe,u,c)}var o=JUt(t,r,{name:"dimensions",handleItemDefaults:tVt}),s=eVt(t,r,n,i,a);KUt(r,i,a),(!Array.isArray(o)||!o.length)&&(r.visible=!1),$Ut(r,o,"values",s),a("hoveron"),a("hovertemplate"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var l=i.font;yA.coerceFont(a,"labelfont",l,{overrideDflt:{size:Math.round(l.size)}}),yA.coerceFont(a,"tickfont",l,{autoShadowDflt:!0,overrideDflt:{size:Math.round(l.size/1.2)}})}});var WNe=ye((byr,jNe)=>{"use strict";var rVt=Km().wrap,iVt=Dv().hasColorscale,nVt=zv(),aVt=jq(),oVt=ao(),kk=Mr(),sVt=uo();jNe.exports=function(t,r){var n=kk.filterVisible(r.dimensions);if(n.length===0)return[];var i=n.map(function(g){var P;if(g.categoryorder==="trace")P=null;else if(g.categoryorder==="array")P=g.categoryarray;else{P=aVt(g.values);for(var T=!0,F=0;F=e.length||t[e[r]]!==void 0)return!1;t[e[r]]=!0}return!0}});var tUe=ye((wyr,eUe)=>{"use strict";var ul=xa(),yVt=(R2(),B1(I2)).interpolateNumber,_Vt=OP(),Pk=Nc(),yx=Mr(),Ck=yx.strTranslate,ZNe=ao(),kK=id(),xVt=Pl();function bVt(e,t,r,n){var i=t._context.staticPlot,a=e.map(FVt.bind(0,t,r)),o=n.selectAll("g.parcatslayer").data([null]);o.enter().append("g").attr("class","parcatslayer").style("pointer-events",i?"none":"all");var s=o.selectAll("g.trace.parcats").data(a,u1),l=s.enter().append("g").attr("class","trace parcats");s.attr("transform",function(E){return Ck(E.x,E.y)}),l.append("g").attr("class","paths");var u=s.select("g.paths"),c=u.selectAll("path.path").data(function(E){return E.paths},u1);c.attr("fill",function(E){return E.model.color});var f=c.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(E){return E.model.color}).attr("fill-opacity",0);PK(f),c.attr("d",function(E){return E.svgD}),f.empty()||c.sort(CK),c.exit().remove(),c.on("mouseover",wVt).on("mouseout",TVt).on("click",AVt),l.append("g").attr("class","dimensions");var h=s.select("g.dimensions"),d=h.selectAll("g.dimension").data(function(E){return E.dimensions},u1);d.enter().append("g").attr("class","dimension"),d.attr("transform",function(E){return Ck(E.x,0)}),d.exit().remove();var v=d.selectAll("g.category").data(function(E){return E.categories},u1),x=v.enter().append("g").attr("class","category");v.attr("transform",function(E){return Ck(0,E.y)}),x.append("rect").attr("class","catrect").attr("pointer-events","none"),v.select("rect.catrect").attr("fill","none").attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),YNe(x);var b=v.selectAll("rect.bandrect").data(function(E){return E.bands},u1);b.each(function(){yx.raiseToTop(this)}),b.attr("fill",function(E){return E.color});var p=b.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(E){return E.color}).attr("fill-opacity",0);b.attr("fill",function(E){return E.color}).attr("width",function(E){return E.width}).attr("height",function(E){return E.height}).attr("y",function(E){return E.y}).attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":E.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),RK(p),b.exit().remove(),x.append("text").attr("class","catlabel").attr("pointer-events","none"),v.select("text.catlabel").attr("text-anchor",function(E){return Lk(E)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(E){return Lk(E)?E.width+5:-5}).attr("y",function(E){return E.height/2}).text(function(E){return E.model.categoryLabel}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.categorylabelfont),xVt.convertToTspans(ul.select(this),t)}),x.append("text").attr("class","dimlabel"),v.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(E){return E.width/2}).attr("y",-5).text(function(E,k){return k===0?E.parcatsViewModel.model.dimensions[E.model.dimensionInd].dimensionLabel:null}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.labelfont)}),v.selectAll("rect.bandrect").on("mouseover",PVt).on("mouseout",IVt),v.exit().remove(),d.call(ul.behavior.drag().origin(function(E){return{x:E.x,y:0}}).on("dragstart",RVt).on("drag",DVt).on("dragend",zVt)),s.each(function(E){E.traceSelection=ul.select(this),E.pathSelection=ul.select(this).selectAll("g.paths").selectAll("path.path"),E.dimensionSelection=ul.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),s.exit().remove()}eUe.exports=function(e,t,r,n){bVt(r,e,n,t)};function u1(e){return e.key}function Lk(e){var t=e.parcatsViewModel.dimensions.length,r=e.parcatsViewModel.dimensions[t-1].model.dimensionInd;return e.model.dimensionInd===r}function CK(e,t){return e.model.rawColor>t.model.rawColor?1:e.model.rawColor"),_=ul.mouse(i)[0];Pk.loneHover({trace:a,x:v-s.left+l.left,y:x-s.top+l.top,text:L,color:e.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:b,idealAlign:_1&&u.displayInd===l.dimensions.length-1?(h=o.left,d="left"):(h=o.left+o.width,d="right");var v=s.model.count,x=s.model.categoryLabel,b=v/s.parcatsViewModel.model.count,p={countLabel:v,categoryLabel:x,probabilityLabel:b.toFixed(3)},E=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&E.push(["Count:",p.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&E.push(["P("+p.categoryLabel+"):",p.probabilityLabel].join(" "));var k=E.join("
");return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:k,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:p,eventData:[{data:c._input,fullData:c,count:v,category:x,probability:b}]}}function CVt(e,t,r){var n=[];return ul.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var i=this;n.push(KNe(e,t,i))}),n}function LVt(e,t,r){e._fullLayout._calcInverseTransform(e);var n=e._fullLayout._invScaleX,i=e._fullLayout._invScaleY,a=r.getBoundingClientRect(),o=ul.select(r).datum(),s=o.categoryViewModel,l=s.parcatsViewModel,u=l.model.dimensions[s.model.dimensionInd],c=l.trace,f=a.y+a.height/2,h,d;l.dimensions.length>1&&u.displayInd===l.dimensions.length-1?(h=a.left,d="left"):(h=a.left+a.width,d="right");var v=s.model.categoryLabel,x=o.parcatsViewModel.model.count,b=0;o.categoryViewModel.bands.forEach(function(P){P.color===o.color&&(b+=P.count)});var p=s.model.count,E=0;l.pathSelection.each(function(P){P.model.color===o.color&&(E+=P.model.count)});var k=b/x,A=b/E,L=b/p,_={countLabel:b,categoryLabel:v,probabilityLabel:k.toFixed(3)},C=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&C.push(["Count:",_.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(C.push("P(color \u2229 "+v+"): "+_.probabilityLabel),C.push("P("+v+" | color): "+A.toFixed(3)),C.push("P(color | "+v+"): "+L.toFixed(3)));var M=C.join("
"),g=kK.mostReadable(o.color,["black","white"]);return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:M,color:o.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:g,fontSize:10,idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:_,eventData:[{data:c._input,fullData:c,category:v,count:x,probability:k,categorycount:p,colorcount:E,bandcolorcount:b}]}}function PVt(e){if(!e.parcatsViewModel.dragDimension&&e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var t=ul.mouse(this)[1];if(t<-1)return;var r=e.parcatsViewModel.graphDiv,n=r._fullLayout,i=n._paperdiv.node().getBoundingClientRect(),a=e.parcatsViewModel.hoveron,o=this;if(a==="color"?(kVt(o),zK(o,"plotly_hover",ul.event)):(EVt(o),DK(o,"plotly_hover",ul.event)),e.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var s;a==="category"?s=KNe(r,i,o):a==="color"?s=LVt(r,i,o):a==="dimension"&&(s=CVt(r,i,o)),s&&Pk.loneHover(s,{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:r})}}}function IVt(e){var t=e.parcatsViewModel;if(!t.dragDimension&&(PK(t.pathSelection),YNe(t.dimensionSelection.selectAll("g.category")),RK(t.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),Pk.loneUnhover(t.graphDiv._fullLayout._hoverlayer.node()),t.pathSelection.sort(CK),t.hoverinfoItems.indexOf("skip")===-1)){var r=e.parcatsViewModel.hoveron,n=this;r==="color"?zK(n,"plotly_unhover",ul.event):DK(n,"plotly_unhover",ul.event)}}function RVt(e){e.parcatsViewModel.arrangement!=="fixed"&&(e.dragDimensionDisplayInd=e.model.displayInd,e.initialDragDimensionDisplayInds=e.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),e.dragHasMoved=!1,e.dragCategoryDisplayInd=null,ul.select(this).selectAll("g.category").select("rect.catrect").each(function(t){var r=ul.mouse(this)[0],n=ul.mouse(this)[1];-2<=r&&r<=t.width+2&&-2<=n&&n<=t.height+2&&(e.dragCategoryDisplayInd=t.model.displayInd,e.initialDragCategoryDisplayInds=e.model.categories.map(function(i){return i.displayInd}),t.model.dragY=t.y,yx.raiseToTop(this.parentNode),ul.select(this.parentNode).selectAll("rect.bandrect").each(function(i){i.yc.y+c.height/2&&(a.model.displayInd=c.model.displayInd,c.model.displayInd=s),e.dragCategoryDisplayInd=a.model.displayInd}if(e.dragCategoryDisplayInd===null||e.parcatsViewModel.arrangement==="freeform"){i.model.dragX=ul.event.x;var f=e.parcatsViewModel.dimensions[r],h=e.parcatsViewModel.dimensions[n];f!==void 0&&i.model.dragXh.x&&(i.model.displayInd=h.model.displayInd,h.model.displayInd=e.dragDimensionDisplayInd),e.dragDimensionDisplayInd=i.model.displayInd}qK(e.parcatsViewModel),FK(e.parcatsViewModel),QNe(e.parcatsViewModel),$Ne(e.parcatsViewModel)}}function zVt(e){if(e.parcatsViewModel.arrangement!=="fixed"&&e.dragDimensionDisplayInd!==null){ul.select(this).selectAll("text").attr("font-weight","normal");var t={},r=JNe(e.parcatsViewModel),n=e.parcatsViewModel.model.dimensions.map(function(h){return h.displayInd}),i=e.initialDragDimensionDisplayInds.some(function(h,d){return h!==n[d]});i&&n.forEach(function(h,d){var v=e.parcatsViewModel.model.dimensions[d].containerInd;t["dimensions["+v+"].displayindex"]=h});var a=!1;if(e.dragCategoryDisplayInd!==null){var o=e.model.categories.map(function(h){return h.displayInd});if(a=e.initialDragCategoryDisplayInds.some(function(h,d){return h!==o[d]}),a){var s=e.model.categories.slice().sort(function(h,d){return h.displayInd-d.displayInd}),l=s.map(function(h){return h.categoryValue}),u=s.map(function(h){return h.categoryLabel});t["dimensions["+e.model.containerInd+"].categoryarray"]=[l],t["dimensions["+e.model.containerInd+"].ticktext"]=[u],t["dimensions["+e.model.containerInd+"].categoryorder"]="array"}}if(e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!e.dragHasMoved&&e.potentialClickBand&&(e.parcatsViewModel.hoveron==="color"?zK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent):DK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent)),e.model.dragX=null,e.dragCategoryDisplayInd!==null){var c=e.parcatsViewModel.dimensions[e.dragDimensionDisplayInd].categories[e.dragCategoryDisplayInd];c.model.dragY=null,e.dragCategoryDisplayInd=null}e.dragDimensionDisplayInd=null,e.parcatsViewModel.dragDimension=null,e.dragHasMoved=null,e.potentialClickBand=null,qK(e.parcatsViewModel),FK(e.parcatsViewModel);var f=ul.transition().duration(300).ease("cubic-in-out");f.each(function(){QNe(e.parcatsViewModel,!0),$Ne(e.parcatsViewModel,!0)}).each("end",function(){(i||a)&&_Vt.restyle(e.parcatsViewModel.graphDiv,t,[r])})}}function JNe(e){for(var t,r=e.graphDiv._fullData,n=0;n=0;l--)u+="C"+o[l]+","+(t[l+1]+n)+" "+a[l]+","+(t[l]+n)+" "+(e[l]+r[l])+","+(t[l]+n),u+="l-"+r[l]+",0 ";return u+="Z",u}function FK(e){var t=e.dimensions,r=e.model,n=t.map(function(q){return q.categories.map(function(V){return V.y})}),i=e.model.dimensions.map(function(q){return q.categories.map(function(V){return V.displayInd})}),a=e.model.dimensions.map(function(q){return q.displayInd}),o=e.dimensions.map(function(q){return q.model.dimensionInd}),s=t.map(function(q){return q.x}),l=t.map(function(q){return q.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(q){var V=q.categoryInds.map(function(X,G){return i[G][X]}),H=o.map(function(X){return V[X]});return H}u.sort(function(q,V){var H=f(q),X=f(V);return e.sortpaths==="backward"&&(H.reverse(),X.reverse()),H.push(q.valueInds[0]),X.push(V.valueInds[0]),e.bundlecolors&&(H.unshift(q.rawColor),X.unshift(V.rawColor)),HX?1:0});for(var h=new Array(u.length),d=t[0].model.count,v=t[0].categories.map(function(q){return q.height}).reduce(function(q,V){return q+V}),x=0;x0?p=v*(b.count/d):p=0;for(var E=new Array(n.length),k=0;k1?o=(e.width-2*r-n)/(i-1):o=0,s=r,l=s+o*a;var u=[],c=e.model.maxCats,f=t.categories.length,h=8,d=t.count,v=e.height-h*(c-1),x,b,p,E,k,A=(c-f)*h/2,L=t.categories.map(function(_){return{displayInd:_.displayInd,categoryInd:_.categoryInd}});for(L.sort(function(_,C){return _.displayInd-C.displayInd}),k=0;k0?x=b.count/d*v:x=0,p={key:b.valueInds[0],model:b,width:n,height:x,y:b.dragY!==null?b.dragY:A,bands:[],parcatsViewModel:e},A=A+x+h,u.push(p);return{key:t.dimensionInd,x:t.dragX!==null?t.dragX:l,y:0,width:n,model:t,categories:u,parcatsViewModel:e,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}});var OK=ye((Tyr,rUe)=>{"use strict";var OVt=tUe();rUe.exports=function(t,r,n,i){var a=t._fullLayout,o=a._paper,s=a._size;OVt(t,o,r,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}});var nUe=ye(BF=>{"use strict";var BVt=kd().getModuleCalcData,NVt=OK(),iUe="parcats";BF.name=iUe;BF.plot=function(e,t,r,n){var i=BVt(e.calcdata,iUe);if(i.length){var a=i[0];NVt(e,a,r,n)}};BF.clean=function(e,t,r,n){var i=n._has&&n._has("parcats"),a=t._has&&t._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}});var oUe=ye((Syr,aUe)=>{"use strict";aUe.exports={attributes:EK(),supplyDefaults:GNe(),calc:WNe(),plot:OK(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:nUe(),categories:["noOpacity"],meta:{}}});var lUe=ye((Myr,sUe)=>{"use strict";sUe.exports=oUe()});var c1=ye((Eyr,pUe)=>{"use strict";var UVt=Y1(),uUe="1.13.4",dUe='\xA9 OpenStreetMap contributors',cUe=['\xA9 Carto',dUe].join(" "),fUe=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),VVt=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),vUe={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:dUe,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-positron",type:"raster",source:"plotly-carto-positron",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-darkmatter":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-carto-darkmatter",type:"raster",source:"plotly-carto-darkmatter",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-terrain":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-terrain",type:"raster",source:"plotly-stamen-terrain",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-toner":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-toner",type:"raster",source:"plotly-stamen-toner",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"stamen-watercolor":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:VVt,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},hUe=UVt(vUe);pUe.exports={requiredVersion:uUe,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:vUe,styleValuesNonMapbox:hUe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+uUe+"."].join(` +`),noAccessTokenErrorMsg:["Missing Mapbox access token.","Mapbox trace type require a Mapbox access token to be registered.","For example:"," Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",hUe.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z",path1:"M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z",path2:"M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z",polygon:"11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner":"display: none;","ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner":"display: block; margin-top:2px","ctrl-attrib.mapboxgl-compact:hover":"padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;","ctrl-attrib.mapboxgl-compact::after":`content: ""; cursor: pointer; position: absolute; background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;`,"ctrl-attrib.mapboxgl-compact":"min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;","ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; right: 0","ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after":"bottom: 0; left: 0","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","ctrl-logo":`display:block; width: 21px; height: 21px; background-image: url('data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E')`}}});var Rk=ye((kyr,_Ue)=>{"use strict";var gUe=Mr(),mUe=va().defaultLine,HVt=Ju().attributes,GVt=Su(),jVt=Uc().textposition,WVt=Bu().overrideAll,ZVt=Vs().templatedArray,BK=c1(),yUe=GVt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});yUe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var XVt=_Ue.exports=WVt({_arrayAttrRegexps:[gUe.counterRegex("mapbox",".layers",!0)],domain:HVt({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:BK.styleValuesMapbox.concat(BK.styleValuesNonMapbox),dflt:BK.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:ZVt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:mUe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:mUe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:yUe,textposition:gUe.extendFlat({},jVt,{arrayOk:!1})}})},"plot","from-root");XVt.uirevision={valType:"any",editType:"none"}});var NF=ye((Cyr,wUe)=>{"use strict";var YVt=Wo().hovertemplateAttrs,KVt=Wo().texttemplateAttrs,JVt=Eg(),Dk=H2(),_A=Uc(),xUe=Rk(),$Vt=vl(),QVt=Jl(),ew=no().extendFlat,eHt=Bu().overrideAll,tHt=Rk(),bUe=Dk.line,xA=Dk.marker;wUe.exports=eHt({lon:Dk.lon,lat:Dk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:ew({},tHt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:ew({},xA.opacity,{dflt:1})},mode:ew({},_A.mode,{dflt:"markers"}),text:ew({},_A.text,{}),texttemplate:KVt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:ew({},_A.hovertext,{}),line:{color:bUe.color,width:bUe.width},connectgaps:_A.connectgaps,marker:ew({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:xA.opacity,size:xA.size,sizeref:xA.sizeref,sizemin:xA.sizemin,sizemode:xA.sizemode},QVt("marker")),fill:Dk.fill,fillcolor:JVt(),textfont:xUe.layers.symbol.textfont,textposition:xUe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:_A.selected.marker},unselected:{marker:_A.unselected.marker},hoverinfo:ew({},$Vt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:YVt()},"calc","nested")});var NK=ye((Lyr,TUe)=>{"use strict";var rHt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];TUe.exports={isSupportedFont:function(e){return rHt.indexOf(e)!==-1}}});var MUe=ye((Pyr,SUe)=>{"use strict";var zk=Mr(),UK=lu(),iHt=$p(),nHt=R0(),aHt=D0(),oHt=Ig(),AUe=NF(),sHt=NK().isSupportedFont;SUe.exports=function(t,r,n,i){function a(p,E){return zk.coerce(t,r,AUe,p,E)}function o(p,E){return zk.coerce2(t,r,AUe,p,E)}var s=lHt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),UK.hasMarkers(r)){iHt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(zk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),zk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}UK.hasLines(r)&&(nHt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||UK.hasText(r)){var b=i.font.family;aHt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:sHt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&oHt(t,r,n,a),zk.coerceSelectionMarkerOpacity(r,a)};function lHt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var VK=ye((Iyr,kUe)=>{"use strict";var EUe=Qa();kUe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=EUe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=EUe.tickText(o,o.c2l(s[1]),!0).text,i}});var HK=ye((Ryr,LUe)=>{"use strict";var CUe=Mr();LUe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=CUe.isArrayOrTypedArray(r)?CUe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var FUe=ye((Dyr,zUe)=>{"use strict";var RUe=uo(),iv=Mr(),uHt=es().BADNUM,VF=rx(),PUe=Mu(),cHt=ao(),fHt=S3(),HF=lu(),hHt=NK().isSupportedFont,dHt=HK(),vHt=rp().appendArrayPointValue,pHt=Pl().NEWLINES,gHt=Pl().BR_TAG_ALL;zUe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=HF.hasLines(n),s=HF.hasMarkers(n),l=HF.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=UF("fill"),d=UF("line"),v=UF("circle"),x=UF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=VF.calcTraceToLineCoords(r)),a&&(h.geojson=VF.makePolygon(p),h.layout.visibility="visible",iv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=VF.makeLine(p),d.layout.visibility="visible",iv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=mHt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":jK(n.cluster.color,n.cluster.step),"circle-radius":jK(n.cluster.size,n.cluster.step),"circle-opacity":jK(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":IUe(n),"text-size":12}}),iv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=yHt(r,t),iv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(iv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&iv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,iv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=dHt(n.textposition,k);iv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":IUe(n)}),iv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function UF(e){return{type:e,geojson:VF.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function mHt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=iv.isArrayOrTypedArray(r.color),a=iv.isArrayOrTypedArray(r.size),o=iv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(PUe.hasColorscale(t,"marker")?c=PUe.makeColorScaleFuncFromTrace(r):c=iv.identity);var f;a&&(f=fHt(t));var h;o&&(h=function(k){var A=RUe(k)?+iv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),hHt(s)||(s=r);var l=s.split(", ");return l}});var NUe=ye((zyr,BUe)=>{"use strict";var _Ht=Mr(),qUe=FUe(),bA=c1().traceLayerPrefix,rg={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function OUe(e,t,r,n){this.type="scattermapbox",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:bA+t+"-fill",line:bA+t+"-line",circle:bA+t+"-circle",symbol:bA+t+"-symbol",cluster:bA+t+"-cluster",clusterCount:bA+t+"-cluster-count"},this.below=null}var Fk=OUe.prototype;Fk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&_Ht.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Fk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Fk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=rg.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?rg.cluster:rg.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};BUe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new OUe(t,n.uid,i,a),s=qUe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var xHt=Nc(),WK=Mr(),bHt=oT(),wHt=WK.fillText,THt=es().BADNUM,AHt=c1().traceLayerPrefix;function SHt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=AHt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===THt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=WK.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(xHt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[WK.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=bHt(i,b),e.extraText=UUe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function UUe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&wHt(t,e,u),u.join("
")}VUe.exports={hoverPoints:SHt,getExtraText:UUe}});var GUe=ye((qyr,HUe)=>{"use strict";HUe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var WUe=ye((Oyr,jUe)=>{"use strict";var MHt=Mr(),EHt=lu(),kHt=es().BADNUM;jUe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!EHt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof ZK=="object"&&typeof XK!="undefined"?XK.exports=t():(e=e||self,e.mapboxgl=t())})(ZK,function(){"use strict";var e,t,r;function n(i,a){if(!e)e=a;else if(!t)t=a;else{var o="var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk);",s={};e(s),r=a(s),typeof window!="undefined"&&(r.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}}return n(["exports"],function(i){"use strict";function a(m,y){return y={exports:{}},m(y,y.exports),y.exports}var o="1.13.4",s=l;function l(m,y,I,U){this.cx=3*m,this.bx=3*(I-m)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*y,this.by=3*(U-y)-this.cy,this.ay=1-this.cy-this.by,this.p1x=m,this.p1y=U,this.p2x=I,this.p2y=U}l.prototype.sampleCurveX=function(m){return((this.ax*m+this.bx)*m+this.cx)*m},l.prototype.sampleCurveY=function(m){return((this.ay*m+this.by)*m+this.cy)*m},l.prototype.sampleCurveDerivativeX=function(m){return(3*this.ax*m+2*this.bx)*m+this.cx},l.prototype.solveCurveX=function(m,y){typeof y=="undefined"&&(y=1e-6);var I,U,J,ne,fe;for(J=m,fe=0;fe<8;fe++){if(ne=this.sampleCurveX(J)-m,Math.abs(ne)U)return U;for(;Ine?I=J:U=J,J=(U-I)*.5+I}return J},l.prototype.solve=function(m,y){return this.sampleCurveY(this.solveCurveX(m,y))};var u=c;function c(m,y){this.x=m,this.y=y}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(m){return this.clone()._add(m)},sub:function(m){return this.clone()._sub(m)},multByPoint:function(m){return this.clone()._multByPoint(m)},divByPoint:function(m){return this.clone()._divByPoint(m)},mult:function(m){return this.clone()._mult(m)},div:function(m){return this.clone()._div(m)},rotate:function(m){return this.clone()._rotate(m)},rotateAround:function(m,y){return this.clone()._rotateAround(m,y)},matMult:function(m){return this.clone()._matMult(m)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(m){return this.x===m.x&&this.y===m.y},dist:function(m){return Math.sqrt(this.distSqr(m))},distSqr:function(m){var y=m.x-this.x,I=m.y-this.y;return y*y+I*I},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(m){return Math.atan2(this.y-m.y,this.x-m.x)},angleWith:function(m){return this.angleWithSep(m.x,m.y)},angleWithSep:function(m,y){return Math.atan2(this.x*y-this.y*m,this.x*m+this.y*y)},_matMult:function(m){var y=m[0]*this.x+m[1]*this.y,I=m[2]*this.x+m[3]*this.y;return this.x=y,this.y=I,this},_add:function(m){return this.x+=m.x,this.y+=m.y,this},_sub:function(m){return this.x-=m.x,this.y-=m.y,this},_mult:function(m){return this.x*=m,this.y*=m,this},_div:function(m){return this.x/=m,this.y/=m,this},_multByPoint:function(m){return this.x*=m.x,this.y*=m.y,this},_divByPoint:function(m){return this.x/=m.x,this.y/=m.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var m=this.y;return this.y=this.x,this.x=-m,this},_rotate:function(m){var y=Math.cos(m),I=Math.sin(m),U=y*this.x-I*this.y,J=I*this.x+y*this.y;return this.x=U,this.y=J,this},_rotateAround:function(m,y){var I=Math.cos(m),U=Math.sin(m),J=y.x+I*(this.x-y.x)-U*(this.y-y.y),ne=y.y+U*(this.x-y.x)+I*(this.y-y.y);return this.x=J,this.y=ne,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(m){return m instanceof c?m:Array.isArray(m)?new c(m[0],m[1]):m};var f=typeof self!="undefined"?self:{};function h(m,y){if(Array.isArray(m)){if(!Array.isArray(y)||m.length!==y.length)return!1;for(var I=0;I=1)return 1;var y=m*m,I=y*m;return 4*(m<.5?I:3*(m-y)+I-.75)}function x(m,y,I,U){var J=new s(m,y,I,U);return function(ne){return J.solve(ne)}}var b=x(.25,.1,.25,1);function p(m,y,I){return Math.min(I,Math.max(y,m))}function E(m,y,I){var U=I-y,J=((m-y)%U+U)%U+y;return J===y?I:J}function k(m,y,I){if(!m.length)return I(null,[]);var U=m.length,J=new Array(m.length),ne=null;m.forEach(function(fe,Fe){y(fe,function(Qe,st){Qe&&(ne=Qe),J[Fe]=st,--U===0&&I(ne,J)})})}function A(m){var y=[];for(var I in m)y.push(m[I]);return y}function L(m,y){var I=[];for(var U in m)U in y||I.push(U);return I}function _(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U>y/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,m)}return m()}function T(m){return m<=1?1:Math.pow(2,Math.ceil(Math.log(m)/Math.LN2))}function F(m){return m?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(m):!1}function q(m,y){m.forEach(function(I){y[I]&&(y[I]=y[I].bind(y))})}function V(m,y){return m.indexOf(y,m.length-y.length)!==-1}function H(m,y,I){var U={};for(var J in m)U[J]=y.call(I||this,m[J],J,m);return U}function X(m,y,I){var U={};for(var J in m)y.call(I||this,m[J],J,m)&&(U[J]=m[J]);return U}function G(m){return Array.isArray(m)?m.map(G):typeof m=="object"&&m?H(m,G):m}function N(m,y){for(var I=0;I=0)return!0;return!1}var W={};function re(m){W[m]||(typeof console!="undefined"&&console.warn(m),W[m]=!0)}function ae(m,y,I){return(I.y-m.y)*(y.x-m.x)>(y.y-m.y)*(I.x-m.x)}function _e(m){for(var y=0,I=0,U=m.length,J=U-1,ne=void 0,fe=void 0;I@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,I={};if(m.replace(y,function(J,ne,fe,Fe){var Qe=fe||Fe;return I[ne]=Qe?Qe.toLowerCase():!0,""}),I["max-age"]){var U=parseInt(I["max-age"],10);isNaN(U)?delete I["max-age"]:I["max-age"]=U}return I}var ie=null;function Te(m){if(ie==null){var y=m.navigator?m.navigator.userAgent:null;ie=!!m.safari||!!(y&&(/\b(iPad|iPhone|iPod)\b/.test(y)||y.match("Safari")&&!y.match("Chrome")))}return ie}function Ee(m){try{var y=f[m];return y.setItem("_mapbox_test_",1),y.removeItem("_mapbox_test_"),!0}catch(I){return!1}}function Ae(m){return f.btoa(encodeURIComponent(m).replace(/%([0-9A-F]{2})/g,function(y,I){return String.fromCharCode(+("0x"+I))}))}function ze(m){return decodeURIComponent(f.atob(m).split("").map(function(y){return"%"+("00"+y.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Ce=f.performance&&f.performance.now?f.performance.now.bind(f.performance):Date.now.bind(Date),me=f.requestAnimationFrame||f.mozRequestAnimationFrame||f.webkitRequestAnimationFrame||f.msRequestAnimationFrame,Re=f.cancelAnimationFrame||f.mozCancelAnimationFrame||f.webkitCancelAnimationFrame||f.msCancelAnimationFrame,ce,Ge,nt={now:Ce,frame:function(y){var I=me(y);return{cancel:function(){return Re(I)}}},getImageData:function(y,I){I===void 0&&(I=0);var U=f.document.createElement("canvas"),J=U.getContext("2d");if(!J)throw new Error("failed to create canvas 2d context");return U.width=y.width,U.height=y.height,J.drawImage(y,0,0,y.width,y.height),J.getImageData(-I,-I,y.width+2*I,y.height+2*I)},resolveURL:function(y){return ce||(ce=f.document.createElement("a")),ce.href=y,ce.href},hardwareConcurrency:f.navigator&&f.navigator.hardwareConcurrency||4,get devicePixelRatio(){return f.devicePixelRatio},get prefersReducedMotion(){return f.matchMedia?(Ge==null&&(Ge=f.matchMedia("(prefers-reduced-motion: reduce)")),Ge.matches):!1}},ct={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},qt={supported:!1,testSupport:Ct},rt,ot=!1,Rt,kt=!1;f.document&&(Rt=f.document.createElement("img"),Rt.onload=function(){rt&&Yt(rt),rt=null,kt=!0},Rt.onerror=function(){ot=!0,rt=null},Rt.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function Ct(m){ot||!Rt||(kt?Yt(m):rt=m)}function Yt(m){var y=m.createTexture();m.bindTexture(m.TEXTURE_2D,y);try{if(m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,Rt),m.isContextLost())return;qt.supported=!0}catch(I){}m.deleteTexture(y),ot=!0}var xr="01";function er(){for(var m="1",y="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",I="",U=0;U<10;U++)I+=y[Math.floor(Math.random()*62)];var J=12*60*60*1e3,ne=[m,xr,I].join(""),fe=Date.now()+J;return{token:ne,tokenExpiresAt:fe}}var Ke=function(y,I){this._transformRequestFn=y,this._customAccessToken=I,this._createSkuToken()};Ke.prototype._createSkuToken=function(){var y=er();this._skuToken=y.token,this._skuTokenExpiresAt=y.tokenExpiresAt},Ke.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},Ke.prototype.transformRequest=function(y,I){return this._transformRequestFn?this._transformRequestFn(y,I)||{url:y}:{url:y}},Ke.prototype.normalizeStyleURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/styles/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeGlyphsURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/fonts/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSourceURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/v4/"+U.authority+".json",U.params.push("secure"),this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSpriteURL=function(y,I,U,J){var ne=Ht(y);return xt(y)?(ne.path="/styles/v1"+ne.path+"/sprite"+I+U,this._makeAPIURL(ne,this._customAccessToken||J)):(ne.path+=""+I+U,$t(ne))},Ke.prototype.normalizeTileURL=function(y,I){if(this._isSkuTokenExpired()&&this._createSkuToken(),y&&!xt(y))return y;var U=Ht(y),J=/(\.(png|jpg)\d*)(?=$)/,ne=/^.+\/v4\//,fe=nt.devicePixelRatio>=2||I===512?"@2x":"",Fe=qt.supported?".webp":"$1";U.path=U.path.replace(J,""+fe+Fe),U.path=U.path.replace(ne,"/"),U.path="/v4"+U.path;var Qe=this._customAccessToken||Et(U.params)||ct.ACCESS_TOKEN;return ct.REQUIRE_ACCESS_TOKEN&&Qe&&this._skuToken&&U.params.push("sku="+this._skuToken),this._makeAPIURL(U,Qe)},Ke.prototype.canonicalizeTileURL=function(y,I){var U="/v4/",J=/\.[\w]+$/,ne=Ht(y);if(!ne.path.match(/(^\/v4\/)/)||!ne.path.match(J))return y;var fe="mapbox://tiles/";fe+=ne.path.replace(U,"");var Fe=ne.params;return I&&(Fe=Fe.filter(function(Qe){return!Qe.match(/^access_token=/)})),Fe.length&&(fe+="?"+Fe.join("&")),fe},Ke.prototype.canonicalizeTileset=function(y,I){for(var U=I?xt(I):!1,J=[],ne=0,fe=y.tiles||[];ne=0&&y.params.splice(ne,1)}if(J.path!=="/"&&(y.path=""+J.path+y.path),!ct.REQUIRE_ACCESS_TOKEN)return $t(y);if(I=I||ct.ACCESS_TOKEN,!I)throw new Error("An API access token is required to use Mapbox GL. "+U);if(I[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+U);return y.params=y.params.filter(function(fe){return fe.indexOf("access_token")===-1}),y.params.push("access_token="+I),$t(y)};function xt(m){return m.indexOf("mapbox:")===0}var bt=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function Lt(m){return bt.test(m)}function St(m){return m.indexOf("sku=")>0&&Lt(m)}function Et(m){for(var y=0,I=m;y=1&&f.localStorage.setItem(I,JSON.stringify(this.eventData))}catch(J){re("Unable to write to LocalStorage")}},Br.prototype.processRequests=function(y){},Br.prototype.postEvent=function(y,I,U,J){var ne=this;if(ct.EVENTS_URL){var fe=Ht(ct.EVENTS_URL);fe.params.push("access_token="+(J||ct.ACCESS_TOKEN||""));var Fe={event:this.type,created:new Date(y).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:o,skuId:xr,userId:this.anonId},Qe=I?_(Fe,I):Fe,st={url:$t(fe),headers:{"Content-Type":"text/plain"},body:JSON.stringify([Qe])};this.pendingRequest=Vr(st,function(mt){ne.pendingRequest=null,U(mt),ne.saveEventData(),ne.processRequests(J)})}},Br.prototype.queueRequest=function(y,I){this.queue.push(y),this.processRequests(I)};var Or=function(m){function y(){m.call(this,"map.load"),this.success={},this.skuToken=""}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postMapLoadEvent=function(U,J,ne,fe){this.skuToken=ne,(ct.EVENTS_URL&&fe||ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(Fe){return xt(Fe)||Lt(Fe)}))&&this.queueRequest({id:J,timestamp:Date.now()},fe)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){var ne=this.queue.shift(),fe=ne.id,Fe=ne.timestamp;fe&&this.success[fe]||(this.anonId||this.fetchEventData(),F(this.anonId)||(this.anonId=P()),this.postEvent(Fe,{skuToken:this.skuToken},function(Qe){Qe||fe&&(J.success[fe]=!0)},U))}},y}(Br),Nr=function(m){function y(I){m.call(this,"appUserTurnstile"),this._customAccessToken=I}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postTurnstileEvent=function(U,J){ct.EVENTS_URL&&ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(ne){return xt(ne)||Lt(ne)})&&this.queueRequest(Date.now(),J)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var ne=_r(ct.ACCESS_TOKEN),fe=ne?ne.u:ct.ACCESS_TOKEN,Fe=fe!==this.eventData.tokenU;F(this.anonId)||(this.anonId=P(),Fe=!0);var Qe=this.queue.shift();if(this.eventData.lastSuccess){var st=new Date(this.eventData.lastSuccess),mt=new Date(Qe),Xt=(Qe-this.eventData.lastSuccess)/(24*60*60*1e3);Fe=Fe||Xt>=1||Xt<-1||st.getDate()!==mt.getDate()}else Fe=!0;if(!Fe)return this.processRequests();this.postEvent(Qe,{"enabled.telemetry":!1},function(ur){ur||(J.eventData.lastSuccess=Qe,J.eventData.tokenU=fe)},U)}},y}(Br),ut=new Nr,Ne=ut.postTurnstileEvent.bind(ut),Ye=new Or,Ve=Ye.postMapLoadEvent.bind(Ye),Xe="mapbox-tiles",ht=500,Le=50,xe=1e3*60*7,Se;function lt(){f.caches&&!Se&&(Se=f.caches.open(Xe))}var Gt;function Vt(m,y){if(Gt===void 0)try{new Response(new ReadableStream),Gt=!0}catch(I){Gt=!1}Gt?y(m.body):m.blob().then(y)}function ar(m,y,I){if(lt(),!!Se){var U={status:y.status,statusText:y.statusText,headers:new f.Headers};y.headers.forEach(function(fe,Fe){return U.headers.set(Fe,fe)});var J=ge(y.headers.get("Cache-Control")||"");if(!J["no-store"]){J["max-age"]&&U.headers.set("Expires",new Date(I+J["max-age"]*1e3).toUTCString());var ne=new Date(U.headers.get("Expires")).getTime()-I;neDate.now()&&!I["no-cache"]}var ri=1/0;function bi(m){ri++,ri>Le&&(m.getActor().send("enforceCacheSizeLimit",ht),ri=0)}function nn(m){lt(),Se&&Se.then(function(y){y.keys().then(function(I){for(var U=0;U=200&&I.status<300||I.status===0)&&I.response!==null){var J=I.response;if(m.type==="json")try{J=JSON.parse(I.response)}catch(ne){return y(ne)}y(null,J,I.getResponseHeader("Cache-Control"),I.getResponseHeader("Expires"))}else y(new Wn(I.statusText,I.status,m.url))},I.send(m.body),{cancel:function(){return I.abort()}}}var yr=function(m,y){if(!ft(m.url)){if(f.fetch&&f.Request&&f.AbortController&&f.Request.prototype.hasOwnProperty("signal"))return jt(m,y);if(ke()&&self.worker&&self.worker.actor){var I=!0;return self.worker.actor.send("getResource",m,y,void 0,I)}}return Zt(m,y)},Fr=function(m,y){return yr(_(m,{type:"json"}),y)},Zr=function(m,y){return yr(_(m,{type:"arrayBuffer"}),y)},Vr=function(m,y){return yr(_(m,{method:"POST"}),y)};function gi(m){var y=f.document.createElement("a");return y.href=m,y.protocol===f.document.location.protocol&&y.host===f.document.location.host}var Si="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Mi(m,y,I,U){var J=new f.Image,ne=f.URL;J.onload=function(){y(null,J),ne.revokeObjectURL(J.src),J.onload=null,f.requestAnimationFrame(function(){J.src=Si})},J.onerror=function(){return y(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var fe=new f.Blob([new Uint8Array(m)],{type:"image/png"});J.cacheControl=I,J.expires=U,J.src=m.byteLength?ne.createObjectURL(fe):Si}function Pi(m,y){var I=new f.Blob([new Uint8Array(m)],{type:"image/png"});f.createImageBitmap(I).then(function(U){y(null,U)}).catch(function(U){y(new Error("Could not load image because of "+U.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var Gi,Ki,ka=function(){Gi=[],Ki=0};ka();var jn=function(m,y){if(qt.supported&&(m.headers||(m.headers={}),m.headers.accept="image/webp,*/*"),Ki>=ct.MAX_PARALLEL_IMAGE_REQUESTS){var I={requestParameters:m,callback:y,cancelled:!1,cancel:function(){this.cancelled=!0}};return Gi.push(I),I}Ki++;var U=!1,J=function(){if(!U)for(U=!0,Ki--;Gi.length&&Ki0||this._oneTimeListeners&&this._oneTimeListeners[y]&&this._oneTimeListeners[y].length>0||this._eventedParent&&this._eventedParent.listens(y)},Sn.prototype.setEventedParent=function(y,I){return this._eventedParent=y,this._eventedParentData=I,this};var Ha=8,oo={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},xn={"*":{type:"source"}},_t=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],br={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},Hr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},ti={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},zi={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Yi={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},an={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},hi={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},Ji=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],ua={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Fn={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Sa={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},go={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Oo={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ho={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Mo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},xo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},zs={type:"array",value:"*"},ks={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},Zs={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},Xs={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},wl={type:"array",value:"*",minimum:1},os={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},cl=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],Cs={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},ml={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ys={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},Hs={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Eo={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},fs={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Ql={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Hu={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},fc={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},ms={"*":{type:"string"}},on={$version:Ha,$root:oo,sources:xn,source:_t,source_vector:br,source_raster:Hr,source_raster_dem:ti,source_geojson:zi,source_video:Yi,source_image:an,layer:hi,layout:Ji,layout_background:ua,layout_fill:Fn,layout_circle:Sa,layout_heatmap:go,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:Oo,layout_symbol:ho,layout_raster:Mo,layout_hillshade:xo,filter:zs,filter_operator:ks,geometry_type:Zs,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:Xs,expression:wl,light:os,paint:cl,paint_fill:Cs,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:ml,paint_circle:Ys,paint_heatmap:Hs,paint_symbol:Eo,paint_raster:fs,paint_hillshade:Ql,paint_background:Hu,transition:fc,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:ms},fa=function(y,I,U,J){this.message=(y?y+": ":"")+U,J&&(this.identifier=J),I!=null&&I.__line__&&(this.line=I.__line__)};function Qu(m){var y=m.key,I=m.value;return I?[new fa(y,I,"constants have been deprecated as of v8")]:[]}function Rl(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U":m.itemType.kind==="value"?"array":"array<"+y+">"}else return m.kind}var mu=[Ec,Zn,ko,Co,Tl,Al,uf,eu(So),Hc];function kc(m,y){if(y.kind==="error")return null;if(m.kind==="array"){if(y.kind==="array"&&(y.N===0&&y.itemType.kind==="value"||!kc(m.itemType,y.itemType))&&(typeof m.N!="number"||m.N===y.N))return null}else{if(m.kind===y.kind)return null;if(m.kind==="value")for(var I=0,U=mu;I255?255:st}function J(st){return st<0?0:st>1?1:st}function ne(st){return st[st.length-1]==="%"?U(parseFloat(st)/100*255):U(parseInt(st))}function fe(st){return st[st.length-1]==="%"?J(parseFloat(st)/100):J(parseFloat(st))}function Fe(st,mt,Xt){return Xt<0?Xt+=1:Xt>1&&(Xt-=1),Xt*6<1?st+(mt-st)*Xt*6:Xt*2<1?mt:Xt*3<2?st+(mt-st)*(2/3-Xt)*6:st}function Qe(st){var mt=st.replace(/ /g,"").toLowerCase();if(mt in I)return I[mt].slice();if(mt[0]==="#"){if(mt.length===4){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=4095?[(Xt&3840)>>4|(Xt&3840)>>8,Xt&240|(Xt&240)>>4,Xt&15|(Xt&15)<<4,1]:null}else if(mt.length===7){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=16777215?[(Xt&16711680)>>16,(Xt&65280)>>8,Xt&255,1]:null}return null}var ur=mt.indexOf("("),nr=mt.indexOf(")");if(ur!==-1&&nr+1===mt.length){var Lr=mt.substr(0,ur),Yr=mt.substr(ur+1,nr-(ur+1)).split(","),_i=1;switch(Lr){case"rgba":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"rgb":return Yr.length!==3?null:[ne(Yr[0]),ne(Yr[1]),ne(Yr[2]),_i];case"hsla":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"hsl":if(Yr.length!==3)return null;var si=(parseFloat(Yr[0])%360+360)%360/360,Hi=fe(Yr[1]),Ei=fe(Yr[2]),Vi=Ei<=.5?Ei*(Hi+1):Ei+Hi-Ei*Hi,en=Ei*2-Vi;return[U(Fe(en,Vi,si+1/3)*255),U(Fe(en,Vi,si)*255),U(Fe(en,Vi,si-1/3)*255),_i];default:return null}}return null}try{y.parseCSSColor=Qe}catch(st){}}),Bf=vd.parseCSSColor,ss=function(y,I,U,J){J===void 0&&(J=1),this.r=y,this.g=I,this.b=U,this.a=J};ss.parse=function(y){if(y){if(y instanceof ss)return y;if(typeof y=="string"){var I=Bf(y);if(I)return new ss(I[0]/255*I[3],I[1]/255*I[3],I[2]/255*I[3],I[3])}}},ss.prototype.toString=function(){var y=this.toArray(),I=y[0],U=y[1],J=y[2],ne=y[3];return"rgba("+Math.round(I)+","+Math.round(U)+","+Math.round(J)+","+ne+")"},ss.prototype.toArray=function(){var y=this,I=y.r,U=y.g,J=y.b,ne=y.a;return ne===0?[0,0,0,0]:[I*255/ne,U*255/ne,J*255/ne,ne]},ss.black=new ss(0,0,0,1),ss.white=new ss(1,1,1,1),ss.transparent=new ss(0,0,0,0),ss.red=new ss(1,0,0,1);var ff=function(y,I,U){y?this.sensitivity=I?"variant":"case":this.sensitivity=I?"accent":"base",this.locale=U,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};ff.prototype.compare=function(y,I){return this.collator.compare(y,I)},ff.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var ih=function(y,I,U,J,ne){this.text=y,this.image=I,this.scale=U,this.fontStack=J,this.textColor=ne},Vl=function(y){this.sections=y};Vl.fromString=function(y){return new Vl([new ih(y,null,null,null,null)])},Vl.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(y){return y.text.length!==0||y.image&&y.image.name.length!==0})},Vl.factory=function(y){return y instanceof Vl?y:Vl.fromString(y)},Vl.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(y){return y.text}).join("")},Vl.prototype.serialize=function(){for(var y=["format"],I=0,U=this.sections;I=0&&m<=255&&typeof y=="number"&&y>=0&&y<=255&&typeof I=="number"&&I>=0&&I<=255)){var J=typeof U=="number"?[m,y,I,U]:[m,y,I];return"Invalid rgba value ["+J.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof U=="undefined"||typeof U=="number"&&U>=0&&U<=1?null:"Invalid rgba value ["+[m,y,I,U].join(", ")+"]: 'a' must be between 0 and 1."}function Cc(m){if(m===null)return!0;if(typeof m=="string")return!0;if(typeof m=="boolean")return!0;if(typeof m=="number")return!0;if(m instanceof ss)return!0;if(m instanceof ff)return!0;if(m instanceof Vl)return!0;if(m instanceof Js)return!0;if(Array.isArray(m)){for(var y=0,I=m;y2){var Fe=y[1];if(typeof Fe!="string"||!(Fe in dc)||Fe==="object")return I.error('The item type argument of "array" must be one of string, number, boolean',1);fe=dc[Fe],U++}else fe=So;var Qe;if(y.length>3){if(y[2]!==null&&(typeof y[2]!="number"||y[2]<0||y[2]!==Math.floor(y[2])))return I.error('The length argument to "array" must be a positive integer literal',2);Qe=y[2],U++}J=eu(fe,Qe)}else J=dc[ne];for(var st=[];U1)&&I.push(J)}}return I.concat(this.args.map(function(ne){return ne.serialize()}))};var ec=function(y){this.type=Al,this.sections=y};ec.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[1];if(!Array.isArray(U)&&typeof U=="object")return I.error("First argument must be an image or text section.");for(var J=[],ne=!1,fe=1;fe<=y.length-1;++fe){var Fe=y[fe];if(ne&&typeof Fe=="object"&&!Array.isArray(Fe)){ne=!1;var Qe=null;if(Fe["font-scale"]&&(Qe=I.parse(Fe["font-scale"],1,Zn),!Qe))return null;var st=null;if(Fe["text-font"]&&(st=I.parse(Fe["text-font"],1,eu(ko)),!st))return null;var mt=null;if(Fe["text-color"]&&(mt=I.parse(Fe["text-color"],1,Tl),!mt))return null;var Xt=J[J.length-1];Xt.scale=Qe,Xt.font=st,Xt.textColor=mt}else{var ur=I.parse(y[fe],1,So);if(!ur)return null;var nr=ur.type.kind;if(nr!=="string"&&nr!=="value"&&nr!=="null"&&nr!=="resolvedImage")return I.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ne=!0,J.push({content:ur,scale:null,font:null,textColor:null})}}return new ec(J)},ec.prototype.evaluate=function(y){var I=function(U){var J=U.content.evaluate(y);return ws(J)===Hc?new ih("",J,null,null,null):new ih($s(J),null,U.scale?U.scale.evaluate(y):null,U.font?U.font.evaluate(y).join(","):null,U.textColor?U.textColor.evaluate(y):null)};return new Vl(this.sections.map(I))},ec.prototype.eachChild=function(y){for(var I=0,U=this.sections;I-1),U},Ps.prototype.eachChild=function(y){y(this.input)},Ps.prototype.outputDefined=function(){return!1},Ps.prototype.serialize=function(){return["image",this.input.serialize()]};var ov={"to-boolean":Co,"to-color":Tl,"to-number":Zn,"to-string":ko},wo=function(y,I){this.type=y,this.args=I};wo.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[0];if((U==="to-boolean"||U==="to-string")&&y.length!==2)return I.error("Expected one argument.");for(var J=ov[U],ne=[],fe=1;fe4?U="Invalid rbga value "+JSON.stringify(I)+": expected an array containing either three or four numeric values.":U=hc(I[0],I[1],I[2],I[3]),!U))return new ss(I[0]/255,I[1]/255,I[2]/255,I[3])}throw new Ms(U||"Could not parse color from value '"+(typeof I=="string"?I:String(JSON.stringify(I)))+"'")}else if(this.type.kind==="number"){for(var Qe=null,st=0,mt=this.args;st=y[2]||m[1]<=y[1]||m[3]>=y[3])}function Yh(m,y){var I=jc(m[0]),U=kf(m[1]),J=Math.pow(2,y.z);return[Math.round(I*J*uu),Math.round(U*J*uu)]}function Eh(m,y,I){var U=m[0]-y[0],J=m[1]-y[1],ne=m[0]-I[0],fe=m[1]-I[1];return U*fe-ne*J===0&&U*ne<=0&&J*fe<=0}function nh(m,y,I){return y[1]>m[1]!=I[1]>m[1]&&m[0]<(I[0]-y[0])*(m[1]-y[1])/(I[1]-y[1])+y[0]}function hf(m,y){for(var I=!1,U=0,J=y.length;U0&&Xt<0||mt<0&&Xt>0}function ah(m,y,I,U){var J=[y[0]-m[0],y[1]-m[1]],ne=[U[0]-I[0],U[1]-I[1]];return Kh(ne,J)===0?!1:!!(rc(m,y,I,U)&&rc(I,U,m,y))}function Wc(m,y,I){for(var U=0,J=I;UI[2]){var J=U*.5,ne=m[0]-I[0]>J?-U:I[0]-m[0]>J?U:0;ne===0&&(ne=m[0]-I[2]>J?-U:I[2]-m[0]>J?U:0),m[0]+=ne}Mh(y,m)}function Ch(m){m[0]=m[1]=1/0,m[2]=m[3]=-1/0}function Bd(m,y,I,U){for(var J=Math.pow(2,U.z)*uu,ne=[U.x*uu,U.y*uu],fe=[],Fe=0,Qe=m;Fe=0)return!1;var I=!0;return m.eachChild(function(U){I&&!Pu(U,y)&&(I=!1)}),I}var Lc=function(y,I){this.type=I.type,this.name=y,this.boundExpression=I};Lc.parse=function(y,I){if(y.length!==2||typeof y[1]!="string")return I.error("'var' expression requires exactly one string literal argument.");var U=y[1];return I.scope.has(U)?new Lc(U,I.scope.get(U)):I.error('Unknown variable "'+U+'". Make sure "'+U+'" has been bound in an enclosing "let" expression before using it.',1)},Lc.prototype.evaluate=function(y){return this.boundExpression.evaluate(y)},Lc.prototype.eachChild=function(){},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return["var",this.name]};var fl=function(y,I,U,J,ne){I===void 0&&(I=[]),J===void 0&&(J=new Xl),ne===void 0&&(ne=[]),this.registry=y,this.path=I,this.key=I.map(function(fe){return"["+fe+"]"}).join(""),this.scope=J,this.errors=ne,this.expectedType=U};fl.prototype.parse=function(y,I,U,J,ne){return ne===void 0&&(ne={}),I?this.concat(I,U,J)._parse(y,ne):this._parse(y,ne)},fl.prototype._parse=function(y,I){(y===null||typeof y=="string"||typeof y=="boolean"||typeof y=="number")&&(y=["literal",y]);function U(mt,Xt,ur){return ur==="assert"?new Sl(Xt,[mt]):ur==="coerce"?new wo(Xt,[mt]):mt}if(Array.isArray(y)){if(y.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var J=y[0];if(typeof J!="string")return this.error("Expression name must be a string, but found "+typeof J+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var ne=this.registry[J];if(ne){var fe=ne.parse(y,this);if(!fe)return null;if(this.expectedType){var Fe=this.expectedType,Qe=fe.type;if((Fe.kind==="string"||Fe.kind==="number"||Fe.kind==="boolean"||Fe.kind==="object"||Fe.kind==="array")&&Qe.kind==="value")fe=U(fe,Fe,I.typeAnnotation||"assert");else if((Fe.kind==="color"||Fe.kind==="formatted"||Fe.kind==="resolvedImage")&&(Qe.kind==="value"||Qe.kind==="string"))fe=U(fe,Fe,I.typeAnnotation||"coerce");else if(this.checkSubtype(Fe,Qe))return null}if(!(fe instanceof hs)&&fe.type.kind!=="resolvedImage"&&Xc(fe)){var st=new $o;try{fe=new hs(fe.type,fe.evaluate(st))}catch(mt){return this.error(mt.message),null}}return fe}return this.error('Unknown expression "'+J+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof y=="undefined"?this.error("'undefined' value invalid. Use null instead."):typeof y=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof y+" instead.")},fl.prototype.concat=function(y,I,U){var J=typeof y=="number"?this.path.concat(y):this.path,ne=U?this.scope.concat(U):this.scope;return new fl(this.registry,J,I||null,ne,this.errors)},fl.prototype.error=function(y){for(var I=[],U=arguments.length-1;U-- >0;)I[U]=arguments[U+1];var J=""+this.key+I.map(function(ne){return"["+ne+"]"}).join("");this.errors.push(new Ks(J,y))},fl.prototype.checkSubtype=function(y,I){var U=kc(y,I);return U&&this.error(U),U};function Xc(m){if(m instanceof Lc)return Xc(m.boundExpression);if(m instanceof Ja&&m.name==="error")return!1;if(m instanceof tc)return!1;if(m instanceof Lu)return!1;var y=m instanceof wo||m instanceof Sl,I=!0;return m.eachChild(function(U){y?I=I&&Xc(U):I=I&&U instanceof hs}),I?$h(m)&&Pu(m,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function ic(m,y){for(var I=m.length-1,U=0,J=I,ne=0,fe,Fe;U<=J;)if(ne=Math.floor((U+J)/2),fe=m[ne],Fe=m[ne+1],fe<=y){if(ne===I||yy)J=ne-1;else throw new Ms("Input is not a number.");return 0}var yu=function(y,I,U){this.type=y,this.input=I,this.labels=[],this.outputs=[];for(var J=0,ne=U;J=Fe)return I.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',st);var Xt=I.parse(Qe,mt,ne);if(!Xt)return null;ne=ne||Xt.type,J.push([Fe,Xt])}return new yu(ne,U,J)},yu.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J);return U[fe].evaluate(y)},yu.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I0&&y.push(this.labels[I]),y.push(this.outputs[I].serialize());return y};function Qs(m,y,I){return m*(1-I)+y*I}function Qh(m,y,I){return new ss(Qs(m.r,y.r,I),Qs(m.g,y.g,I),Qs(m.b,y.b,I),Qs(m.a,y.a,I))}function gd(m,y,I){return m.map(function(U,J){return Qs(U,y[J],I)})}var Gu=Object.freeze({__proto__:null,number:Qs,color:Qh,array:gd}),Pc=.95047,vc=1,sv=1.08883,Lf=4/29,Uf=6/29,Iu=3*Uf*Uf,oh=Uf*Uf*Uf,ru=Math.PI/180,vf=180/Math.PI;function md(m){return m>oh?Math.pow(m,1/3):m/Iu+Lf}function sh(m){return m>Uf?m*m*m:Iu*(m-Lf)}function Fs(m){return 255*(m<=.0031308?12.92*m:1.055*Math.pow(m,1/2.4)-.055)}function _u(m){return m/=255,m<=.04045?m/12.92:Math.pow((m+.055)/1.055,2.4)}function xu(m){var y=_u(m.r),I=_u(m.g),U=_u(m.b),J=md((.4124564*y+.3575761*I+.1804375*U)/Pc),ne=md((.2126729*y+.7151522*I+.072175*U)/vc),fe=md((.0193339*y+.119192*I+.9503041*U)/sv);return{l:116*ne-16,a:500*(J-ne),b:200*(ne-fe),alpha:m.a}}function Lh(m){var y=(m.l+16)/116,I=isNaN(m.a)?y:y+m.a/500,U=isNaN(m.b)?y:y-m.b/200;return y=vc*sh(y),I=Pc*sh(I),U=sv*sh(U),new ss(Fs(3.2404542*I-1.5371385*y-.4985314*U),Fs(-.969266*I+1.8760108*y+.041556*U),Fs(.0556434*I-.2040259*y+1.0572252*U),m.alpha)}function Is(m,y,I){return{l:Qs(m.l,y.l,I),a:Qs(m.a,y.a,I),b:Qs(m.b,y.b,I),alpha:Qs(m.alpha,y.alpha,I)}}function Pf(m){var y=xu(m),I=y.l,U=y.a,J=y.b,ne=Math.atan2(J,U)*vf;return{h:ne<0?ne+360:ne,c:Math.sqrt(U*U+J*J),l:I,alpha:m.a}}function Ic(m){var y=m.h*ru,I=m.c,U=m.l;return Lh({l:U,a:Math.cos(y)*I,b:Math.sin(y)*I,alpha:m.alpha})}function ju(m,y,I){var U=y-m;return m+I*(U>180||U<-180?U-360*Math.round(U/360):U)}function Vf(m,y,I){return{h:ju(m.h,y.h,I),c:Qs(m.c,y.c,I),l:Qs(m.l,y.l,I),alpha:Qs(m.alpha,y.alpha,I)}}var pc={forward:xu,reverse:Lh,interpolate:Is},pf={forward:Pf,reverse:Ic,interpolate:Vf},Ph=Object.freeze({__proto__:null,lab:pc,hcl:pf}),Dl=function(y,I,U,J,ne){this.type=y,this.operator=I,this.interpolation=U,this.input=J,this.labels=[],this.outputs=[];for(var fe=0,Fe=ne;fe1}))return I.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);J={name:"cubic-bezier",controlPoints:Qe}}else return I.error("Unknown interpolation type "+String(J[0]),1,0);if(y.length-1<4)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if((y.length-1)%2!==0)return I.error("Expected an even number of arguments.");if(ne=I.parse(ne,2,Zn),!ne)return null;var st=[],mt=null;U==="interpolate-hcl"||U==="interpolate-lab"?mt=Tl:I.expectedType&&I.expectedType.kind!=="value"&&(mt=I.expectedType);for(var Xt=0;Xt=ur)return I.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Lr);var _i=I.parse(nr,Yr,mt);if(!_i)return null;mt=mt||_i.type,st.push([ur,_i])}return mt.kind!=="number"&&mt.kind!=="color"&&!(mt.kind==="array"&&mt.itemType.kind==="number"&&typeof mt.N=="number")?I.error("Type "+Ls(mt)+" is not interpolatable."):new Dl(mt,U,J,ne,st)},Dl.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J),Fe=I[fe],Qe=I[fe+1],st=Dl.interpolationFactor(this.interpolation,J,Fe,Qe),mt=U[fe].evaluate(y),Xt=U[fe+1].evaluate(y);return this.operator==="interpolate"?Gu[this.type.kind.toLowerCase()](mt,Xt,st):this.operator==="interpolate-hcl"?pf.reverse(pf.interpolate(pf.forward(mt),pf.forward(Xt),st)):pc.reverse(pc.interpolate(pc.forward(mt),pc.forward(Xt),st))},Dl.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I=U.length)throw new Ms("Array index out of bounds: "+I+" > "+(U.length-1)+".");if(I!==Math.floor(I))throw new Ms("Array index must be an integer, but found "+I+" instead.");return U[I]},gc.prototype.eachChild=function(y){y(this.index),y(this.input)},gc.prototype.outputDefined=function(){return!1},gc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var hl=function(y,I){this.type=Co,this.needle=y,this.haystack=I};hl.parse=function(y,I){if(y.length!==3)return I.error("Expected 2 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);return!U||!J?null:Of(U.type,[Co,ko,Zn,Ec,So])?new hl(U,J):I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead")},hl.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!U)return!1;if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");return U.indexOf(I)>=0},hl.prototype.eachChild=function(y){y(this.needle),y(this.haystack)},hl.prototype.outputDefined=function(){return!0},hl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var iu=function(y,I,U){this.type=Zn,this.needle=y,this.haystack=I,this.fromIndex=U};iu.parse=function(y,I){if(y.length<=2||y.length>=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);if(!U||!J)return null;if(!Of(U.type,[Co,ko,Zn,Ec,So]))return I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new iu(U,J,ne):null}else return new iu(U,J)},iu.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");if(this.fromIndex){var J=this.fromIndex.evaluate(y);return U.indexOf(I,J)}return U.indexOf(I)},iu.prototype.eachChild=function(y){y(this.needle),y(this.haystack),this.fromIndex&&y(this.fromIndex)},iu.prototype.outputDefined=function(){return!1},iu.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var y=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),y]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var mc=function(y,I,U,J,ne,fe){this.inputType=y,this.type=I,this.input=U,this.cases=J,this.outputs=ne,this.otherwise=fe};mc.parse=function(y,I){if(y.length<5)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if(y.length%2!==1)return I.error("Expected an even number of arguments.");var U,J;I.expectedType&&I.expectedType.kind!=="value"&&(J=I.expectedType);for(var ne={},fe=[],Fe=2;FeNumber.MAX_SAFE_INTEGER)return mt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof nr=="number"&&Math.floor(nr)!==nr)return mt.error("Numeric branch labels must be integer values.");if(!U)U=ws(nr);else if(mt.checkSubtype(U,ws(nr)))return null;if(typeof ne[String(nr)]!="undefined")return mt.error("Branch labels must be unique.");ne[String(nr)]=fe.length}var Lr=I.parse(st,Fe,J);if(!Lr)return null;J=J||Lr.type,fe.push(Lr)}var Yr=I.parse(y[1],1,So);if(!Yr)return null;var _i=I.parse(y[y.length-1],y.length-1,J);return!_i||Yr.type.kind!=="value"&&I.concat(1).checkSubtype(U,Yr.type)?null:new mc(U,J,Yr,ne,fe,_i)},mc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=ws(I)===this.inputType&&this.outputs[this.cases[I]]||this.otherwise;return U.evaluate(y)},mc.prototype.eachChild=function(y){y(this.input),this.outputs.forEach(y),y(this.otherwise)},mc.prototype.outputDefined=function(){return this.outputs.every(function(y){return y.outputDefined()})&&this.otherwise.outputDefined()},mc.prototype.serialize=function(){for(var y=this,I=["match",this.input.serialize()],U=Object.keys(this.cases).sort(),J=[],ne={},fe=0,Fe=U;fe=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,Zn);if(!U||!J)return null;if(!Of(U.type,[eu(So),ko,So]))return I.error("Expected first argument to be of type array or string, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new nc(U.type,U,J,ne):null}else return new nc(U.type,U,J)},nc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=this.beginIndex.evaluate(y);if(!Gc(I,["string","array"]))throw new Ms("Expected first argument to be of type array or string, but found "+Ls(ws(I))+" instead.");if(this.endIndex){var J=this.endIndex.evaluate(y);return I.slice(U,J)}return I.slice(U)},nc.prototype.eachChild=function(y){y(this.input),y(this.beginIndex),this.endIndex&&y(this.endIndex)},nc.prototype.outputDefined=function(){return!1},nc.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var y=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),y]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function gf(m,y){return m==="=="||m==="!="?y.kind==="boolean"||y.kind==="string"||y.kind==="number"||y.kind==="null"||y.kind==="value":y.kind==="string"||y.kind==="number"||y.kind==="value"}function gt(m,y,I){return y===I}function Bt(m,y,I){return y!==I}function wr(m,y,I){return yI}function Ur(m,y,I){return y<=I}function fi(m,y,I){return y>=I}function xi(m,y,I,U){return U.compare(y,I)===0}function Fi(m,y,I,U){return!xi(m,y,I,U)}function Xi(m,y,I,U){return U.compare(y,I)<0}function hn(m,y,I,U){return U.compare(y,I)>0}function Ti(m,y,I,U){return U.compare(y,I)<=0}function qi(m,y,I,U){return U.compare(y,I)>=0}function Ii(m,y,I){var U=m!=="=="&&m!=="!=";return function(){function J(ne,fe,Fe){this.type=Co,this.lhs=ne,this.rhs=fe,this.collator=Fe,this.hasUntypedArgument=ne.type.kind==="value"||fe.type.kind==="value"}return J.parse=function(fe,Fe){if(fe.length!==3&&fe.length!==4)return Fe.error("Expected two or three arguments.");var Qe=fe[0],st=Fe.parse(fe[1],1,So);if(!st)return null;if(!gf(Qe,st.type))return Fe.concat(1).error('"'+Qe+`" comparisons are not supported for type '`+Ls(st.type)+"'.");var mt=Fe.parse(fe[2],2,So);if(!mt)return null;if(!gf(Qe,mt.type))return Fe.concat(2).error('"'+Qe+`" comparisons are not supported for type '`+Ls(mt.type)+"'.");if(st.type.kind!==mt.type.kind&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot compare types '"+Ls(st.type)+"' and '"+Ls(mt.type)+"'.");U&&(st.type.kind==="value"&&mt.type.kind!=="value"?st=new Sl(mt.type,[st]):st.type.kind!=="value"&&mt.type.kind==="value"&&(mt=new Sl(st.type,[mt])));var Xt=null;if(fe.length===4){if(st.type.kind!=="string"&&mt.type.kind!=="string"&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot use collator to compare non-string types.");if(Xt=Fe.parse(fe[3],3,rh),!Xt)return null}return new J(st,mt,Xt)},J.prototype.evaluate=function(fe){var Fe=this.lhs.evaluate(fe),Qe=this.rhs.evaluate(fe);if(U&&this.hasUntypedArgument){var st=ws(Fe),mt=ws(Qe);if(st.kind!==mt.kind||!(st.kind==="string"||st.kind==="number"))throw new Ms('Expected arguments for "'+m+'" to be (string, string) or (number, number), but found ('+st.kind+", "+mt.kind+") instead.")}if(this.collator&&!U&&this.hasUntypedArgument){var Xt=ws(Fe),ur=ws(Qe);if(Xt.kind!=="string"||ur.kind!=="string")return y(fe,Fe,Qe)}return this.collator?I(fe,Fe,Qe,this.collator.evaluate(fe)):y(fe,Fe,Qe)},J.prototype.eachChild=function(fe){fe(this.lhs),fe(this.rhs),this.collator&&fe(this.collator)},J.prototype.outputDefined=function(){return!0},J.prototype.serialize=function(){var fe=[m];return this.eachChild(function(Fe){fe.push(Fe.serialize())}),fe},J}()}var mi=Ii("==",gt,xi),Pn=Ii("!=",Bt,Fi),Ma=Ii("<",wr,Xi),Ta=Ii(">",vr,hn),Ea=Ii("<=",Ur,Ti),qa=Ii(">=",fi,qi),Cn=function(y,I,U,J,ne){this.type=ko,this.number=y,this.locale=I,this.currency=U,this.minFractionDigits=J,this.maxFractionDigits=ne};Cn.parse=function(y,I){if(y.length!==3)return I.error("Expected two arguments.");var U=I.parse(y[1],1,Zn);if(!U)return null;var J=y[2];if(typeof J!="object"||Array.isArray(J))return I.error("NumberFormat options argument must be an object.");var ne=null;if(J.locale&&(ne=I.parse(J.locale,1,ko),!ne))return null;var fe=null;if(J.currency&&(fe=I.parse(J.currency,1,ko),!fe))return null;var Fe=null;if(J["min-fraction-digits"]&&(Fe=I.parse(J["min-fraction-digits"],1,Zn),!Fe))return null;var Qe=null;return J["max-fraction-digits"]&&(Qe=I.parse(J["max-fraction-digits"],1,Zn),!Qe)?null:new Cn(U,ne,fe,Fe,Qe)},Cn.prototype.evaluate=function(y){return new Intl.NumberFormat(this.locale?this.locale.evaluate(y):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(y):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(y):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(y):void 0}).format(this.number.evaluate(y))},Cn.prototype.eachChild=function(y){y(this.number),this.locale&&y(this.locale),this.currency&&y(this.currency),this.minFractionDigits&&y(this.minFractionDigits),this.maxFractionDigits&&y(this.maxFractionDigits)},Cn.prototype.outputDefined=function(){return!1},Cn.prototype.serialize=function(){var y={};return this.locale&&(y.locale=this.locale.serialize()),this.currency&&(y.currency=this.currency.serialize()),this.minFractionDigits&&(y["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(y["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),y]};var sn=function(y){this.type=Zn,this.input=y};sn.parse=function(y,I){if(y.length!==2)return I.error("Expected 1 argument, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1);return U?U.type.kind!=="array"&&U.type.kind!=="string"&&U.type.kind!=="value"?I.error("Expected argument of type string or array, but found "+Ls(U.type)+" instead."):new sn(U):null},sn.prototype.evaluate=function(y){var I=this.input.evaluate(y);if(typeof I=="string")return I.length;if(Array.isArray(I))return I.length;throw new Ms("Expected value to be of type string or array, but found "+Ls(ws(I))+" instead.")},sn.prototype.eachChild=function(y){y(this.input)},sn.prototype.outputDefined=function(){return!1},sn.prototype.serialize=function(){var y=["length"];return this.eachChild(function(I){y.push(I.serialize())}),y};var Ua={"==":mi,"!=":Pn,">":Ta,"<":Ma,">=":qa,"<=":Ea,array:Sl,at:gc,boolean:Sl,case:Yc,coalesce:Wu,collator:tc,format:ec,image:Ps,in:hl,"index-of":iu,interpolate:Dl,"interpolate-hcl":Dl,"interpolate-lab":Dl,length:sn,let:Rc,literal:hs,match:mc,number:Sl,"number-format":Cn,object:Sl,slice:nc,step:yu,string:Sl,"to-boolean":wo,"to-color":wo,"to-number":wo,"to-string":wo,var:Lc,within:Lu};function mo(m,y){var I=y[0],U=y[1],J=y[2],ne=y[3];I=I.evaluate(m),U=U.evaluate(m),J=J.evaluate(m);var fe=ne?ne.evaluate(m):1,Fe=hc(I,U,J,fe);if(Fe)throw new Ms(Fe);return new ss(I/255*fe,U/255*fe,J/255*fe,fe)}function Xo(m,y){return m in y}function Ts(m,y){var I=y[m];return typeof I=="undefined"?null:I}function Qo(m,y,I,U){for(;I<=U;){var J=I+U>>1;if(y[J]===m)return!0;y[J]>m?U=J-1:I=J+1}return!1}function ys(m){return{type:m}}Ja.register(Ua,{error:[cf,[ko],function(m,y){var I=y[0];throw new Ms(I.evaluate(m))}],typeof:[ko,[So],function(m,y){var I=y[0];return Ls(ws(I.evaluate(m)))}],"to-rgba":[eu(Zn,4),[Tl],function(m,y){var I=y[0];return I.evaluate(m).toArray()}],rgb:[Tl,[Zn,Zn,Zn],mo],rgba:[Tl,[Zn,Zn,Zn,Zn],mo],has:{type:Co,overloads:[[[ko],function(m,y){var I=y[0];return Xo(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Xo(I.evaluate(m),U.evaluate(m))}]]},get:{type:So,overloads:[[[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Ts(I.evaluate(m),U.evaluate(m))}]]},"feature-state":[So,[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.featureState||{})}],properties:[uf,[],function(m){return m.properties()}],"geometry-type":[ko,[],function(m){return m.geometryType()}],id:[So,[],function(m){return m.id()}],zoom:[Zn,[],function(m){return m.globals.zoom}],"heatmap-density":[Zn,[],function(m){return m.globals.heatmapDensity||0}],"line-progress":[Zn,[],function(m){return m.globals.lineProgress||0}],accumulated:[So,[],function(m){return m.globals.accumulated===void 0?null:m.globals.accumulated}],"+":[Zn,ys(Zn),function(m,y){for(var I=0,U=0,J=y;U":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>ne}],"filter-id->":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>J}],"filter-<=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J<=ne}],"filter-id-<=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U<=J}],"filter->=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>=ne}],"filter-id->=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>=J}],"filter-has":[Co,[So],function(m,y){var I=y[0];return I.value in m.properties()}],"filter-has-id":[Co,[],function(m){return m.id()!==null&&m.id()!==void 0}],"filter-type-in":[Co,[eu(ko)],function(m,y){var I=y[0];return I.value.indexOf(m.geometryType())>=0}],"filter-id-in":[Co,[eu(So)],function(m,y){var I=y[0];return I.value.indexOf(m.id())>=0}],"filter-in-small":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return U.value.indexOf(m.properties()[I.value])>=0}],"filter-in-large":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return Qo(m.properties()[I.value],U.value,0,U.value.length-1)}],all:{type:Co,overloads:[[[Co,Co],function(m,y){var I=y[0],U=y[1];return I.evaluate(m)&&U.evaluate(m)}],[ys(Co),function(m,y){for(var I=0,U=y;I-1}function ia(m){return!!m.expression&&m.expression.interpolated}function Ka(m){return m instanceof Number?"number":m instanceof String?"string":m instanceof Boolean?"boolean":Array.isArray(m)?"array":m===null?"null":typeof m}function vs(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}function Ko(m){return m}function nu(m,y){var I=y.type==="color",U=m.stops&&typeof m.stops[0][0]=="object",J=U||m.property!==void 0,ne=U||!J,fe=m.type||(ia(y)?"exponential":"interval");if(I&&(m=Rl({},m),m.stops&&(m.stops=m.stops.map(function($n){return[$n[0],ss.parse($n[1])]})),m.default?m.default=ss.parse(m.default):m.default=ss.parse(y.default)),m.colorSpace&&m.colorSpace!=="rgb"&&!Ph[m.colorSpace])throw new Error("Unknown color space: "+m.colorSpace);var Fe,Qe,st;if(fe==="exponential")Fe=bu;else if(fe==="interval")Fe=mf;else if(fe==="categorical"){Fe=ac,Qe=Object.create(null);for(var mt=0,Xt=m.stops;mt=m.stops[U-1][0])return m.stops[U-1][1];var J=ic(m.stops.map(function(ne){return ne[0]}),I);return m.stops[J][1]}function bu(m,y,I){var U=m.base!==void 0?m.base:1;if(Ka(I)!=="number")return Ru(m.default,y.default);var J=m.stops.length;if(J===1||I<=m.stops[0][0])return m.stops[0][1];if(I>=m.stops[J-1][0])return m.stops[J-1][1];var ne=ic(m.stops.map(function(Xt){return Xt[0]}),I),fe=Du(I,U,m.stops[ne][0],m.stops[ne+1][0]),Fe=m.stops[ne][1],Qe=m.stops[ne+1][1],st=Gu[y.type]||Ko;if(m.colorSpace&&m.colorSpace!=="rgb"){var mt=Ph[m.colorSpace];st=function(Xt,ur){return mt.reverse(mt.interpolate(mt.forward(Xt),mt.forward(ur),fe))}}return typeof Fe.evaluate=="function"?{evaluate:function(){for(var ur=[],nr=arguments.length;nr--;)ur[nr]=arguments[nr];var Lr=Fe.evaluate.apply(void 0,ur),Yr=Qe.evaluate.apply(void 0,ur);if(!(Lr===void 0||Yr===void 0))return st(Lr,Yr,fe)}}:st(Fe,Qe,fe)}function Kc(m,y,I){return y.type==="color"?I=ss.parse(I):y.type==="formatted"?I=Vl.fromString(I.toString()):y.type==="resolvedImage"?I=Js.fromString(I.toString()):Ka(I)!==y.type&&(y.type!=="enum"||!y.values[I])&&(I=void 0),Ru(I,m.default,y.default)}function Du(m,y,I,U){var J=U-I,ne=m-I;return J===0?0:y===1?ne/J:(Math.pow(y,ne)-1)/(Math.pow(y,J)-1)}var Dc=function(y,I){this.expression=y,this._warningHistory={},this._evaluator=new $o,this._defaultValue=I?ee(I):null,this._enumValues=I&&I.type==="enum"?I.values:null};Dc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._evaluator.globals=y,this._evaluator.feature=I,this._evaluator.featureState=U,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe,this.expression.evaluate(this._evaluator)},Dc.prototype.evaluate=function(y,I,U,J,ne,fe){this._evaluator.globals=y,this._evaluator.feature=I||null,this._evaluator.featureState=U||null,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe||null;try{var Fe=this.expression.evaluate(this._evaluator);if(Fe==null||typeof Fe=="number"&&Fe!==Fe)return this._defaultValue;if(this._enumValues&&!(Fe in this._enumValues))throw new Ms("Expected value to be one of "+Object.keys(this._enumValues).map(function(Qe){return JSON.stringify(Qe)}).join(", ")+", but found "+JSON.stringify(Fe)+" instead.");return Fe}catch(Qe){return this._warningHistory[Qe.message]||(this._warningHistory[Qe.message]=!0,typeof console!="undefined"&&console.warn(Qe.message)),this._defaultValue}};function Da(m){return Array.isArray(m)&&m.length>0&&typeof m[0]=="string"&&m[0]in Ua}function eo(m,y){var I=new fl(Ua,[],y?Q(y):void 0),U=I.parse(m,void 0,void 0,void 0,y&&y.type==="string"?{typeAnnotation:"coerce"}:void 0);return U?Bo(new Dc(U,y)):yl(I.errors)}var Jc=function(y,I){this.kind=y,this._styleExpression=I,this.isStateDependent=y!=="constant"&&!tu(I.expression)};Jc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},Jc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)};var yc=function(y,I,U,J){this.kind=y,this.zoomStops=U,this._styleExpression=I,this.isStateDependent=y!=="camera"&&!tu(I.expression),this.interpolationType=J};yc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},yc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)},yc.prototype.interpolationFactor=function(y,I,U){return this.interpolationType?Dl.interpolationFactor(this.interpolationType,y,I,U):0};function _c(m,y){if(m=eo(m,y),m.result==="error")return m;var I=m.value.expression,U=$h(I);if(!U&&!Gs(y))return yl([new Ks("","data expressions not supported")]);var J=Pu(I,["zoom"]);if(!J&&!Rs(y))return yl([new Ks("","zoom expressions not supported")]);var ne=B(I);if(!ne&&!J)return yl([new Ks("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(ne instanceof Ks)return yl([ne]);if(ne instanceof Dl&&!ia(y))return yl([new Ks("",'"interpolate" expressions cannot be used with this property')]);if(!ne)return Bo(U?new Jc("constant",m.value):new Jc("source",m.value));var fe=ne instanceof Dl?ne.interpolation:void 0;return Bo(U?new yc("camera",m.value,ne.labels,fe):new yc("composite",m.value,ne.labels,fe))}var le=function(y,I){this._parameters=y,this._specification=I,Rl(this,nu(this._parameters,this._specification))};le.deserialize=function(y){return new le(y._parameters,y._specification)},le.serialize=function(y){return{_parameters:y._parameters,_specification:y._specification}};function w(m,y){if(vs(m))return new le(m,y);if(Da(m)){var I=_c(m,y);if(I.result==="error")throw new Error(I.value.map(function(J){return J.key+": "+J.message}).join(", "));return I.value}else{var U=m;return typeof m=="string"&&y.type==="color"&&(U=ss.parse(m)),{kind:"constant",evaluate:function(){return U}}}}function B(m){var y=null;if(m instanceof Rc)y=B(m.result);else if(m instanceof Wu)for(var I=0,U=m.args;IU.maximum?[new fa(y,I,I+" is greater than the maximum value "+U.maximum)]:[]}function it(m){var y=m.valueSpec,I=vo(m.value.type),U,J={},ne,fe,Fe=I!=="categorical"&&m.value.property===void 0,Qe=!Fe,st=Ka(m.value.stops)==="array"&&Ka(m.value.stops[0])==="array"&&Ka(m.value.stops[0][0])==="object",mt=se({key:m.key,value:m.value,valueSpec:m.styleSpec.function,style:m.style,styleSpec:m.styleSpec,objectElementValidators:{stops:Xt,default:Lr}});return I==="identity"&&Fe&&mt.push(new fa(m.key,m.value,'missing required property "property"')),I!=="identity"&&!m.value.stops&&mt.push(new fa(m.key,m.value,'missing required property "stops"')),I==="exponential"&&m.valueSpec.expression&&!ia(m.valueSpec)&&mt.push(new fa(m.key,m.value,"exponential functions not supported")),m.styleSpec.$version>=8&&(Qe&&!Gs(m.valueSpec)?mt.push(new fa(m.key,m.value,"property functions not supported")):Fe&&!Rs(m.valueSpec)&&mt.push(new fa(m.key,m.value,"zoom functions not supported"))),(I==="categorical"||st)&&m.value.property===void 0&&mt.push(new fa(m.key,m.value,'"property" property is required')),mt;function Xt(Yr){if(I==="identity")return[new fa(Yr.key,Yr.value,'identity function may not have a "stops" property')];var _i=[],si=Yr.value;return _i=_i.concat(qe({key:Yr.key,value:si,valueSpec:Yr.valueSpec,style:Yr.style,styleSpec:Yr.styleSpec,arrayElementValidator:ur})),Ka(si)==="array"&&si.length===0&&_i.push(new fa(Yr.key,si,"array must have at least one stop")),_i}function ur(Yr){var _i=[],si=Yr.value,Hi=Yr.key;if(Ka(si)!=="array")return[new fa(Hi,si,"array expected, "+Ka(si)+" found")];if(si.length!==2)return[new fa(Hi,si,"array length 2 expected, length "+si.length+" found")];if(st){if(Ka(si[0])!=="object")return[new fa(Hi,si,"object expected, "+Ka(si[0])+" found")];if(si[0].zoom===void 0)return[new fa(Hi,si,"object stop key must have zoom")];if(si[0].value===void 0)return[new fa(Hi,si,"object stop key must have value")];if(fe&&fe>vo(si[0].zoom))return[new fa(Hi,si[0].zoom,"stop zoom values must appear in ascending order")];vo(si[0].zoom)!==fe&&(fe=vo(si[0].zoom),ne=void 0,J={}),_i=_i.concat(se({key:Hi+"[0]",value:si[0],valueSpec:{zoom:{}},style:Yr.style,styleSpec:Yr.styleSpec,objectElementValidators:{zoom:je,value:nr}}))}else _i=_i.concat(nr({key:Hi+"[0]",value:si[0],valueSpec:{},style:Yr.style,styleSpec:Yr.styleSpec},si));return Da(Zl(si[1]))?_i.concat([new fa(Hi+"[1]",si[1],"expressions are not allowed in function stops.")]):_i.concat(Wa({key:Hi+"[1]",value:si[1],valueSpec:y,style:Yr.style,styleSpec:Yr.styleSpec}))}function nr(Yr,_i){var si=Ka(Yr.value),Hi=vo(Yr.value),Ei=Yr.value!==null?Yr.value:_i;if(!U)U=si;else if(si!==U)return[new fa(Yr.key,Ei,si+" stop domain type must match previous stop domain type "+U)];if(si!=="number"&&si!=="string"&&si!=="boolean")return[new fa(Yr.key,Ei,"stop domain value must be a number, string, or boolean")];if(si!=="number"&&I!=="categorical"){var Vi="number expected, "+si+" found";return Gs(y)&&I===void 0&&(Vi+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new fa(Yr.key,Ei,Vi)]}return I==="categorical"&&si==="number"&&(!isFinite(Hi)||Math.floor(Hi)!==Hi)?[new fa(Yr.key,Ei,"integer expected, found "+Hi)]:I!=="categorical"&&si==="number"&&ne!==void 0&&Hi=2&&m[1]!=="$id"&&m[1]!=="$type";case"in":return m.length>=3&&(typeof m[1]!="string"||Array.isArray(m[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return m.length!==3||Array.isArray(m[1])||Array.isArray(m[2]);case"any":case"all":for(var y=0,I=m.slice(1);yy?1:0}function Oe(m){if(!Array.isArray(m))return!1;if(m[0]==="within")return!0;for(var y=1;y"||y==="<="||y===">="?He(m[1],m[2],y):y==="any"?et(m.slice(1)):y==="all"?["all"].concat(m.slice(1).map(Je)):y==="none"?["all"].concat(m.slice(1).map(Je).map(Ut)):y==="in"?Mt(m[1],m.slice(2)):y==="!in"?Ut(Mt(m[1],m.slice(2))):y==="has"?Dt(m[1]):y==="!has"?Ut(Dt(m[1])):y==="within"?m:!0;return I}function He(m,y,I){switch(m){case"$type":return["filter-type-"+I,y];case"$id":return["filter-id-"+I,y];default:return["filter-"+I,m,y]}}function et(m){return["any"].concat(m.map(Je))}function Mt(m,y){if(y.length===0)return!1;switch(m){case"$type":return["filter-type-in",["literal",y]];case"$id":return["filter-id-in",["literal",y]];default:return y.length>200&&!y.some(function(I){return typeof I!=typeof y[0]})?["filter-in-large",m,["literal",y.sort(Pe)]]:["filter-in-small",m,["literal",y]]}}function Dt(m){switch(m){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",m]}}function Ut(m){return["!",m]}function tr(m){return Sr(Zl(m.value))?yt(Rl({},m,{expressionContext:"filter",valueSpec:{value:"boolean"}})):mr(m)}function mr(m){var y=m.value,I=m.key;if(Ka(y)!=="array")return[new fa(I,y,"array expected, "+Ka(y)+" found")];var U=m.styleSpec,J,ne=[];if(y.length<1)return[new fa(I,y,"filter array must have at least 1 element")];switch(ne=ne.concat(hr({key:I+"[0]",value:y[0],valueSpec:U.filter_operator,style:m.style,styleSpec:m.styleSpec})),vo(y[0])){case"<":case"<=":case">":case">=":y.length>=2&&vo(y[1])==="$type"&&ne.push(new fa(I,y,'"$type" cannot be use with operator "'+y[0]+'"'));case"==":case"!=":y.length!==3&&ne.push(new fa(I,y,'filter array for operator "'+y[0]+'" must have 3 elements'));case"in":case"!in":y.length>=2&&(J=Ka(y[1]),J!=="string"&&ne.push(new fa(I+"[1]",y[1],"string expected, "+J+" found")));for(var fe=2;fe=mt[nr+0]&&U>=mt[nr+1])?(fe[ur]=!0,ne.push(st[ur])):fe[ur]=!1}}},au.prototype._forEachCell=function(m,y,I,U,J,ne,fe,Fe){for(var Qe=this._convertToCellCoord(m),st=this._convertToCellCoord(y),mt=this._convertToCellCoord(I),Xt=this._convertToCellCoord(U),ur=Qe;ur<=mt;ur++)for(var nr=st;nr<=Xt;nr++){var Lr=this.d*nr+ur;if(!(Fe&&!Fe(this._convertFromCellCoord(ur),this._convertFromCellCoord(nr),this._convertFromCellCoord(ur+1),this._convertFromCellCoord(nr+1)))&&J.call(this,m,y,I,U,Lr,ne,fe,Fe))return}},au.prototype._convertFromCellCoord=function(m){return(m-this.padding)/this.scale},au.prototype._convertToCellCoord=function(m){return Math.max(0,Math.min(this.d-1,Math.floor(m*this.scale)+this.padding))},au.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var m=this.cells,y=el+this.cells.length+1+1,I=0,U=0;U=0)){var Xt=m[mt];st[mt]=Fl[Qe].shallow.indexOf(mt)>=0?Xt:Ue(Xt,y)}m instanceof Error&&(st.message=m.message)}if(st.$name)throw new Error("$name property is reserved for worker serialization logic.");return Qe!=="Object"&&(st.$name=Qe),st}throw new Error("can't serialize object of type "+typeof m)}function We(m){if(m==null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||m instanceof Boolean||m instanceof Number||m instanceof String||m instanceof Date||m instanceof RegExp||we(m)||Be(m)||ArrayBuffer.isView(m)||m instanceof zc)return m;if(Array.isArray(m))return m.map(We);if(typeof m=="object"){var y=m.$name||"Object",I=Fl[y],U=I.klass;if(!U)throw new Error("can't deserialize unregistered class "+y);if(U.deserialize)return U.deserialize(m);for(var J=Object.create(U.prototype),ne=0,fe=Object.keys(m);ne=0?Qe:We(Qe)}}return J}throw new Error("can't deserialize object of type "+typeof m)}var wt=function(){this.first=!0};wt.prototype.update=function(y,I){var U=Math.floor(y);return this.first?(this.first=!1,this.lastIntegerZoom=U,this.lastIntegerZoomTime=0,this.lastZoom=y,this.lastFloorZoom=U,!0):(this.lastFloorZoom>U?(this.lastIntegerZoom=U+1,this.lastIntegerZoomTime=I):this.lastFloorZoom=128&&m<=255},Arabic:function(m){return m>=1536&&m<=1791},"Arabic Supplement":function(m){return m>=1872&&m<=1919},"Arabic Extended-A":function(m){return m>=2208&&m<=2303},"Hangul Jamo":function(m){return m>=4352&&m<=4607},"Unified Canadian Aboriginal Syllabics":function(m){return m>=5120&&m<=5759},Khmer:function(m){return m>=6016&&m<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(m){return m>=6320&&m<=6399},"General Punctuation":function(m){return m>=8192&&m<=8303},"Letterlike Symbols":function(m){return m>=8448&&m<=8527},"Number Forms":function(m){return m>=8528&&m<=8591},"Miscellaneous Technical":function(m){return m>=8960&&m<=9215},"Control Pictures":function(m){return m>=9216&&m<=9279},"Optical Character Recognition":function(m){return m>=9280&&m<=9311},"Enclosed Alphanumerics":function(m){return m>=9312&&m<=9471},"Geometric Shapes":function(m){return m>=9632&&m<=9727},"Miscellaneous Symbols":function(m){return m>=9728&&m<=9983},"Miscellaneous Symbols and Arrows":function(m){return m>=11008&&m<=11263},"CJK Radicals Supplement":function(m){return m>=11904&&m<=12031},"Kangxi Radicals":function(m){return m>=12032&&m<=12255},"Ideographic Description Characters":function(m){return m>=12272&&m<=12287},"CJK Symbols and Punctuation":function(m){return m>=12288&&m<=12351},Hiragana:function(m){return m>=12352&&m<=12447},Katakana:function(m){return m>=12448&&m<=12543},Bopomofo:function(m){return m>=12544&&m<=12591},"Hangul Compatibility Jamo":function(m){return m>=12592&&m<=12687},Kanbun:function(m){return m>=12688&&m<=12703},"Bopomofo Extended":function(m){return m>=12704&&m<=12735},"CJK Strokes":function(m){return m>=12736&&m<=12783},"Katakana Phonetic Extensions":function(m){return m>=12784&&m<=12799},"Enclosed CJK Letters and Months":function(m){return m>=12800&&m<=13055},"CJK Compatibility":function(m){return m>=13056&&m<=13311},"CJK Unified Ideographs Extension A":function(m){return m>=13312&&m<=19903},"Yijing Hexagram Symbols":function(m){return m>=19904&&m<=19967},"CJK Unified Ideographs":function(m){return m>=19968&&m<=40959},"Yi Syllables":function(m){return m>=40960&&m<=42127},"Yi Radicals":function(m){return m>=42128&&m<=42191},"Hangul Jamo Extended-A":function(m){return m>=43360&&m<=43391},"Hangul Syllables":function(m){return m>=44032&&m<=55215},"Hangul Jamo Extended-B":function(m){return m>=55216&&m<=55295},"Private Use Area":function(m){return m>=57344&&m<=63743},"CJK Compatibility Ideographs":function(m){return m>=63744&&m<=64255},"Arabic Presentation Forms-A":function(m){return m>=64336&&m<=65023},"Vertical Forms":function(m){return m>=65040&&m<=65055},"CJK Compatibility Forms":function(m){return m>=65072&&m<=65103},"Small Form Variants":function(m){return m>=65104&&m<=65135},"Arabic Presentation Forms-B":function(m){return m>=65136&&m<=65279},"Halfwidth and Fullwidth Forms":function(m){return m>=65280&&m<=65519}};function zt(m){for(var y=0,I=m;y=65097&&m<=65103)||tt["CJK Compatibility Ideographs"](m)||tt["CJK Compatibility"](m)||tt["CJK Radicals Supplement"](m)||tt["CJK Strokes"](m)||tt["CJK Symbols and Punctuation"](m)&&!(m>=12296&&m<=12305)&&!(m>=12308&&m<=12319)&&m!==12336||tt["CJK Unified Ideographs Extension A"](m)||tt["CJK Unified Ideographs"](m)||tt["Enclosed CJK Letters and Months"](m)||tt["Hangul Compatibility Jamo"](m)||tt["Hangul Jamo Extended-A"](m)||tt["Hangul Jamo Extended-B"](m)||tt["Hangul Jamo"](m)||tt["Hangul Syllables"](m)||tt.Hiragana(m)||tt["Ideographic Description Characters"](m)||tt.Kanbun(m)||tt["Kangxi Radicals"](m)||tt["Katakana Phonetic Extensions"](m)||tt.Katakana(m)&&m!==12540||tt["Halfwidth and Fullwidth Forms"](m)&&m!==65288&&m!==65289&&m!==65293&&!(m>=65306&&m<=65310)&&m!==65339&&m!==65341&&m!==65343&&!(m>=65371&&m<=65503)&&m!==65507&&!(m>=65512&&m<=65519)||tt["Small Form Variants"](m)&&!(m>=65112&&m<=65118)&&!(m>=65123&&m<=65126)||tt["Unified Canadian Aboriginal Syllabics"](m)||tt["Unified Canadian Aboriginal Syllabics Extended"](m)||tt["Vertical Forms"](m)||tt["Yijing Hexagram Symbols"](m)||tt["Yi Syllables"](m)||tt["Yi Radicals"](m))}function oi(m){return!!(tt["Latin-1 Supplement"](m)&&(m===167||m===169||m===174||m===177||m===188||m===189||m===190||m===215||m===247)||tt["General Punctuation"](m)&&(m===8214||m===8224||m===8225||m===8240||m===8241||m===8251||m===8252||m===8258||m===8263||m===8264||m===8265||m===8273)||tt["Letterlike Symbols"](m)||tt["Number Forms"](m)||tt["Miscellaneous Technical"](m)&&(m>=8960&&m<=8967||m>=8972&&m<=8991||m>=8996&&m<=9e3||m===9003||m>=9085&&m<=9114||m>=9150&&m<=9165||m===9167||m>=9169&&m<=9179||m>=9186&&m<=9215)||tt["Control Pictures"](m)&&m!==9251||tt["Optical Character Recognition"](m)||tt["Enclosed Alphanumerics"](m)||tt["Geometric Shapes"](m)||tt["Miscellaneous Symbols"](m)&&!(m>=9754&&m<=9759)||tt["Miscellaneous Symbols and Arrows"](m)&&(m>=11026&&m<=11055||m>=11088&&m<=11097||m>=11192&&m<=11243)||tt["CJK Symbols and Punctuation"](m)||tt.Katakana(m)||tt["Private Use Area"](m)||tt["CJK Compatibility Forms"](m)||tt["Small Form Variants"](m)||tt["Halfwidth and Fullwidth Forms"](m)||m===8734||m===8756||m===8757||m>=9984&&m<=10087||m>=10102&&m<=10131||m===65532||m===65533)}function ui(m){return!(Ir(m)||oi(m))}function qr(m){return tt.Arabic(m)||tt["Arabic Supplement"](m)||tt["Arabic Extended-A"](m)||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function Kr(m){return m>=1424&&m<=2303||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function ii(m,y){return!(!y&&Kr(m)||m>=2304&&m<=3583||m>=3840&&m<=4255||tt.Khmer(m))}function vi(m){for(var y=0,I=m;y-1&&(dn=Jr.error),un&&un(m)};function ga(){ya.fire(new jo("pluginStateChange",{pluginStatus:dn,pluginURL:En}))}var ya=new Sn,so=function(){return dn},wa=function(m){return m({pluginStatus:dn,pluginURL:En}),ya.on("pluginStateChange",m),m},io=function(m,y,I){if(I===void 0&&(I=!1),dn===Jr.deferred||dn===Jr.loading||dn===Jr.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");En=nt.resolveURL(m),dn=Jr.deferred,un=y,ga(),I||Ss()},Ss=function(){if(dn!==Jr.deferred||!En)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");dn=Jr.loading,ga(),En&&Zr({url:En},function(m){m?Nn(m):(dn=Jr.loaded,ga())})},_s={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return dn===Jr.loaded||_s.applyArabicShaping!=null},isLoading:function(){return dn===Jr.loading},setState:function(y){dn=y.pluginStatus,En=y.pluginURL},isParsed:function(){return _s.applyArabicShaping!=null&&_s.processBidirectionalText!=null&&_s.processStyledBidirectionalText!=null},getPluginURL:function(){return En}},Ns=function(){!_s.isLoading()&&!_s.isLoaded()&&so()==="deferred"&&Ss()},pn=function(y,I){this.zoom=y,I?(this.now=I.now,this.fadeDuration=I.fadeDuration,this.zoomHistory=I.zoomHistory,this.transition=I.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new wt,this.transition={})};pn.prototype.isSupportedScript=function(y){return ci(y,_s.isLoaded())},pn.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},pn.prototype.getCrossfadeParameters=function(){var y=this.zoom,I=y-Math.floor(y),U=this.crossFadingFactor();return y>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:I+(1-I)*U}:{fromScale:.5,toScale:1,t:1-(1-U)*I}};var za=function(y,I){this.property=y,this.value=I,this.expression=w(I===void 0?y.specification.default:I,y.specification)};za.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},za.prototype.possiblyEvaluate=function(y,I,U){return this.property.possiblyEvaluate(this,y,I,U)};var Lo=function(y){this.property=y,this.value=new za(y,void 0)};Lo.prototype.transitioned=function(y,I){return new js(this.property,this.value,I,_({},y.transition,this.transition),y.now)},Lo.prototype.untransitioned=function(){return new js(this.property,this.value,null,{},0)};var Fo=function(y){this._properties=y,this._values=Object.create(y.defaultTransitionablePropertyValues)};Fo.prototype.getValue=function(y){return G(this._values[y].value.value)},Fo.prototype.setValue=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].value=new za(this._values[y].property,I===null?void 0:G(I))},Fo.prototype.getTransition=function(y){return G(this._values[y].transition)},Fo.prototype.setTransition=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].transition=G(I)||void 0},Fo.prototype.serialize=function(){for(var y={},I=0,U=Object.keys(this._values);Ithis.end)return this.prior=null,ne;if(this.value.isDataDriven())return this.prior=null,ne;if(Jfe.zoomHistory.lastIntegerZoom?{from:U,to:J}:{from:ne,to:J}},y.prototype.interpolate=function(U){return U},y}(Er),wi=function(y){this.specification=y};wi.prototype.possiblyEvaluate=function(y,I,U,J){if(y.value!==void 0)if(y.expression.kind==="constant"){var ne=y.expression.evaluate(I,null,{},U,J);return this._calculate(ne,ne,ne,I)}else return this._calculate(y.expression.evaluate(new pn(Math.floor(I.zoom-1),I)),y.expression.evaluate(new pn(Math.floor(I.zoom),I)),y.expression.evaluate(new pn(Math.floor(I.zoom+1),I)),I)},wi.prototype._calculate=function(y,I,U,J){var ne=J.zoom;return ne>J.zoomHistory.lastIntegerZoom?{from:y,to:I}:{from:U,to:I}},wi.prototype.interpolate=function(y){return y};var Ui=function(y){this.specification=y};Ui.prototype.possiblyEvaluate=function(y,I,U,J){return!!y.expression.evaluate(I,null,{},U,J)},Ui.prototype.interpolate=function(){return!1};var Oi=function(y){this.properties=y,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var I in y){var U=y[I];U.specification.overridable&&this.overridableProperties.push(I);var J=this.defaultPropertyValues[I]=new za(U,void 0),ne=this.defaultTransitionablePropertyValues[I]=new Lo(U);this.defaultTransitioningPropertyValues[I]=ne.untransitioned(),this.defaultPossiblyEvaluatedValues[I]=J.possiblyEvaluate({})}};Z("DataDrivenProperty",Er),Z("DataConstantProperty",At),Z("CrossFadedDataDrivenProperty",Wr),Z("CrossFadedProperty",wi),Z("ColorRampProperty",Ui);var Bi="-transition",cn=function(m){function y(I,U){if(m.call(this),this.id=I.id,this.type=I.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},I.type!=="custom"&&(I=I,this.metadata=I.metadata,this.minzoom=I.minzoom,this.maxzoom=I.maxzoom,I.type!=="background"&&(this.source=I.source,this.sourceLayer=I["source-layer"],this.filter=I.filter),U.layout&&(this._unevaluatedLayout=new fu(U.layout)),U.paint)){this._transitionablePaint=new Fo(U.paint);for(var J in I.paint)this.setPaintProperty(J,I.paint[J],{validate:!1});for(var ne in I.layout)this.setLayoutProperty(ne,I.layout[ne],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new xc(U.paint)}}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},y.prototype.getLayoutProperty=function(U){return U==="visibility"?this.visibility:this._unevaluatedLayout.getValue(U)},y.prototype.setLayoutProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".layout."+U;if(this._validate(Hl,fe,U,J,ne))return}if(U==="visibility"){this.visibility=J;return}this._unevaluatedLayout.setValue(U,J)},y.prototype.getPaintProperty=function(U){return V(U,Bi)?this._transitionablePaint.getTransition(U.slice(0,-Bi.length)):this._transitionablePaint.getValue(U)},y.prototype.setPaintProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".paint."+U;if(this._validate(_l,fe,U,J,ne))return!1}if(V(U,Bi))return this._transitionablePaint.setTransition(U.slice(0,-Bi.length),J||void 0),!1;var Fe=this._transitionablePaint._values[U],Qe=Fe.property.specification["property-type"]==="cross-faded-data-driven",st=Fe.value.isDataDriven(),mt=Fe.value;this._transitionablePaint.setValue(U,J),this._handleSpecialPaintPropertyUpdate(U);var Xt=this._transitionablePaint._values[U].value,ur=Xt.isDataDriven();return ur||st||Qe||this._handleOverridablePaintPropertyUpdate(U,mt,Xt)},y.prototype._handleSpecialPaintPropertyUpdate=function(U){},y.prototype._handleOverridablePaintPropertyUpdate=function(U,J,ne){return!1},y.prototype.isHidden=function(U){return this.minzoom&&U=this.maxzoom?!0:this.visibility==="none"},y.prototype.updateTransitions=function(U){this._transitioningPaint=this._transitionablePaint.transitioned(U,this._transitioningPaint)},y.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},y.prototype.recalculate=function(U,J){U.getCrossfadeParameters&&(this._crossfadeParameters=U.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(U,void 0,J)),this.paint=this._transitioningPaint.possiblyEvaluate(U,void 0,J)},y.prototype.serialize=function(){var U={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(U.layout=U.layout||{},U.layout.visibility=this.visibility),X(U,function(J,ne){return J!==void 0&&!(ne==="layout"&&!Object.keys(J).length)&&!(ne==="paint"&&!Object.keys(J).length)})},y.prototype._validate=function(U,J,ne,fe,Fe){return Fe===void 0&&(Fe={}),Fe&&Fe.validate===!1?!1:Zu(this,U.call(yo,{key:J,layerType:this.type,objectKey:ne,value:fe,styleSpec:on,style:{glyphs:!0,sprite:!0}}))},y.prototype.is3D=function(){return!1},y.prototype.isTileClipped=function(){return!1},y.prototype.hasOffscreenPass=function(){return!1},y.prototype.resize=function(){},y.prototype.isStateDependent=function(){for(var U in this.paint._values){var J=this.paint.get(U);if(!(!(J instanceof dl)||!Gs(J.property.specification))&&(J.value.kind==="source"||J.value.kind==="composite")&&J.value.isStateDependent)return!0}return!1},y}(Sn),On={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Bn=function(y,I){this._structArray=y,this._pos1=I*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},yn=128,to=5,Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};Rn.serialize=function(y,I){return y._trim(),I&&(y.isTransferred=!0,I.push(y.arrayBuffer)),{length:y.length,arrayBuffer:y.arrayBuffer}},Rn.deserialize=function(y){var I=Object.create(this.prototype);return I.arrayBuffer=y.arrayBuffer,I.length=y.length,I.capacity=y.arrayBuffer.byteLength/I.bytesPerElement,I._refreshViews(),I},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Rn.prototype.clear=function(){this.length=0},Rn.prototype.resize=function(y){this.reserve(y),this.length=y},Rn.prototype.reserve=function(y){if(y>this.capacity){this.capacity=Math.max(y,Math.floor(this.capacity*to),yn),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var I=this.uint8;this._refreshViews(),I&&this.uint8.set(I)}},Rn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function Dn(m,y){y===void 0&&(y=1);var I=0,U=0,J=m.map(function(fe){var Fe=fn(fe.type),Qe=I=Ai(I,Math.max(y,Fe)),st=fe.components||1;return U=Math.max(U,Fe),I+=Fe*st,{name:fe.name,type:fe.type,components:st,offset:Qe}}),ne=Ai(I,Math.max(U,y));return{members:J,size:ne,alignment:y}}function fn(m){return On[m].BYTES_PER_ELEMENT}function Ai(m,y){return Math.ceil(m/y)*y}var ji=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.int16[fe+0]=J,this.int16[fe+1]=ne,U},y}(Rn);ji.prototype.bytesPerElement=4,Z("StructArrayLayout2i4",ji);var Ln=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.int16[Qe+0]=J,this.int16[Qe+1]=ne,this.int16[Qe+2]=fe,this.int16[Qe+3]=Fe,U},y}(Rn);Ln.prototype.bytesPerElement=8,Z("StructArrayLayout4i8",Ln);var Un=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);Un.prototype.bytesPerElement=12,Z("StructArrayLayout2i4i12",Un);var gn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*4,Xt=U*8;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.uint8[Xt+4]=fe,this.uint8[Xt+5]=Fe,this.uint8[Xt+6]=Qe,this.uint8[Xt+7]=st,U},y}(Rn);gn.prototype.bytesPerElement=8,Z("StructArrayLayout2i4ub8",gn);var ca=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.float32[fe+0]=J,this.float32[fe+1]=ne,U},y}(Rn);ca.prototype.bytesPerElement=8,Z("StructArrayLayout2f8",ca);var Kn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=this.length;return this.resize(nr+1),this.emplace(nr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr){var Lr=U*10;return this.uint16[Lr+0]=J,this.uint16[Lr+1]=ne,this.uint16[Lr+2]=fe,this.uint16[Lr+3]=Fe,this.uint16[Lr+4]=Qe,this.uint16[Lr+5]=st,this.uint16[Lr+6]=mt,this.uint16[Lr+7]=Xt,this.uint16[Lr+8]=ur,this.uint16[Lr+9]=nr,U},y}(Rn);Kn.prototype.bytesPerElement=20,Z("StructArrayLayout10ui20",Kn);var Za=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr){var Yr=this.length;return this.resize(Yr+1),this.emplace(Yr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr){var _i=U*12;return this.int16[_i+0]=J,this.int16[_i+1]=ne,this.int16[_i+2]=fe,this.int16[_i+3]=Fe,this.uint16[_i+4]=Qe,this.uint16[_i+5]=st,this.uint16[_i+6]=mt,this.uint16[_i+7]=Xt,this.int16[_i+8]=ur,this.int16[_i+9]=nr,this.int16[_i+10]=Lr,this.int16[_i+11]=Yr,U},y}(Rn);Za.prototype.bytesPerElement=24,Z("StructArrayLayout4i4ui4i24",Za);var wn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.float32[Fe+0]=J,this.float32[Fe+1]=ne,this.float32[Fe+2]=fe,U},y}(Rn);wn.prototype.bytesPerElement=12,Z("StructArrayLayout3f12",wn);var vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint32[ne+0]=J,U},y}(Rn);vn.prototype.bytesPerElement=4,Z("StructArrayLayout1ul4",vn);var Aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt){var ur=this.length;return this.resize(ur+1),this.emplace(ur,U,J,ne,fe,Fe,Qe,st,mt,Xt)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=U*10,Lr=U*5;return this.int16[nr+0]=J,this.int16[nr+1]=ne,this.int16[nr+2]=fe,this.int16[nr+3]=Fe,this.int16[nr+4]=Qe,this.int16[nr+5]=st,this.uint32[Lr+3]=mt,this.uint16[nr+8]=Xt,this.uint16[nr+9]=ur,U},y}(Rn);Aa.prototype.bytesPerElement=20,Z("StructArrayLayout6i1ul2ui20",Aa);var aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);aa.prototype.bytesPerElement=12,Z("StructArrayLayout2i2i2i12",aa);var Xn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe){var Qe=this.length;return this.resize(Qe+1),this.emplace(Qe,U,J,ne,fe,Fe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe){var st=U*4,mt=U*8;return this.float32[st+0]=J,this.float32[st+1]=ne,this.float32[st+2]=fe,this.int16[mt+6]=Fe,this.int16[mt+7]=Qe,U},y}(Rn);Xn.prototype.bytesPerElement=16,Z("StructArrayLayout2f1f2i16",Xn);var Vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*12,st=U*3;return this.uint8[Qe+0]=J,this.uint8[Qe+1]=ne,this.float32[st+1]=fe,this.float32[st+2]=Fe,U},y}(Rn);Vn.prototype.bytesPerElement=12,Z("StructArrayLayout2ub2f12",Vn);var ma=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.uint16[Fe+0]=J,this.uint16[Fe+1]=ne,this.uint16[Fe+2]=fe,U},y}(Rn);ma.prototype.bytesPerElement=6,Z("StructArrayLayout3ui6",ma);var ro=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei){var Vi=this.length;return this.resize(Vi+1),this.emplace(Vi,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi){var en=U*24,An=U*12,ra=U*48;return this.int16[en+0]=J,this.int16[en+1]=ne,this.uint16[en+2]=fe,this.uint16[en+3]=Fe,this.uint32[An+2]=Qe,this.uint32[An+3]=st,this.uint32[An+4]=mt,this.uint16[en+10]=Xt,this.uint16[en+11]=ur,this.uint16[en+12]=nr,this.float32[An+7]=Lr,this.float32[An+8]=Yr,this.uint8[ra+36]=_i,this.uint8[ra+37]=si,this.uint8[ra+38]=Hi,this.uint32[An+10]=Ei,this.int16[en+22]=Vi,U},y}(Rn);ro.prototype.bytesPerElement=48,Z("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ro);var Ao=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja){var us=this.length;return this.resize(us+1),this.emplace(us,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja,us){var zo=U*34,rl=U*17;return this.int16[zo+0]=J,this.int16[zo+1]=ne,this.int16[zo+2]=fe,this.int16[zo+3]=Fe,this.int16[zo+4]=Qe,this.int16[zo+5]=st,this.int16[zo+6]=mt,this.int16[zo+7]=Xt,this.uint16[zo+8]=ur,this.uint16[zo+9]=nr,this.uint16[zo+10]=Lr,this.uint16[zo+11]=Yr,this.uint16[zo+12]=_i,this.uint16[zo+13]=si,this.uint16[zo+14]=Hi,this.uint16[zo+15]=Ei,this.uint16[zo+16]=Vi,this.uint16[zo+17]=en,this.uint16[zo+18]=An,this.uint16[zo+19]=ra,this.uint16[zo+20]=$n,this.uint16[zo+21]=Ba,this.uint16[zo+22]=_a,this.uint32[rl+12]=Pa,this.float32[rl+13]=qo,this.float32[rl+14]=Na,this.float32[rl+15]=ja,this.float32[rl+16]=us,U},y}(Rn);Ao.prototype.bytesPerElement=68,Z("StructArrayLayout8i15ui1ul4f68",Ao);var Jn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.float32[ne+0]=J,U},y}(Rn);Jn.prototype.bytesPerElement=4,Z("StructArrayLayout1f4",Jn);var Oa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.int16[Fe+0]=J,this.int16[Fe+1]=ne,this.int16[Fe+2]=fe,U},y}(Rn);Oa.prototype.bytesPerElement=6,Z("StructArrayLayout3i6",Oa);var _o=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*2,Qe=U*4;return this.uint32[Fe+0]=J,this.uint16[Qe+2]=ne,this.uint16[Qe+3]=fe,U},y}(Rn);_o.prototype.bytesPerElement=8,Z("StructArrayLayout1ul2ui8",_o);var Po=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.uint16[fe+0]=J,this.uint16[fe+1]=ne,U},y}(Rn);Po.prototype.bytesPerElement=4,Z("StructArrayLayout2ui4",Po);var Jo=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint16[ne+0]=J,U},y}(Rn);Jo.prototype.bytesPerElement=2,Z("StructArrayLayout1ui2",Jo);var Yl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.float32[Qe+0]=J,this.float32[Qe+1]=ne,this.float32[Qe+2]=fe,this.float32[Qe+3]=Fe,U},y}(Rn);Yl.prototype.bytesPerElement=16,Z("StructArrayLayout4f16",Yl);var $c=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return I.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},I.x1.get=function(){return this._structArray.int16[this._pos2+2]},I.y1.get=function(){return this._structArray.int16[this._pos2+3]},I.x2.get=function(){return this._structArray.int16[this._pos2+4]},I.y2.get=function(){return this._structArray.int16[this._pos2+5]},I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.anchorPoint.get=function(){return new u(this.anchorPointX,this.anchorPointY)},Object.defineProperties(y.prototype,I),y}(Bn);$c.prototype.size=20;var xs=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new $c(this,U)},y}(Aa);Z("CollisionBoxArray",xs);var Qc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},I.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},I.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},I.segment.get=function(){return this._structArray.uint16[this._pos2+10]},I.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},I.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},I.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},I.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},I.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},I.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},I.placedOrientation.set=function(U){this._structArray.uint8[this._pos1+37]=U},I.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},I.hidden.set=function(U){this._structArray.uint8[this._pos1+38]=U},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+10]=U},I.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(y.prototype,I),y}(Bn);Qc.prototype.size=48;var El=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Qc(this,U)},y}(ro);Z("PlacedSymbolArray",El);var bc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},I.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},I.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},I.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},I.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},I.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},I.key.get=function(){return this._structArray.uint16[this._pos2+8]},I.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},I.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},I.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},I.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},I.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},I.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},I.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},I.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},I.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},I.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},I.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},I.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},I.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+12]=U},I.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},I.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},I.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},I.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(y.prototype,I),y}(Bn);bc.prototype.size=68;var wc=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new bc(this,U)},y}(Ao);Z("SymbolInstanceArray",wc);var yf=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getoffsetX=function(U){return this.float32[U*1+0]},y}(Jn);Z("GlyphOffsetArray",yf);var Gl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getx=function(U){return this.int16[U*3+0]},y.prototype.gety=function(U){return this.int16[U*3+1]},y.prototype.gettileUnitDistanceFromAnchor=function(U){return this.int16[U*3+2]},y}(Oa);Z("SymbolLineVertexArray",Gl);var Fc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(y.prototype,I),y}(Bn);Fc.prototype.size=8;var ef=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Fc(this,U)},y}(_o);Z("FeatureIndexArray",ef);var ls=Dn([{name:"a_pos",components:2,type:"Int16"}],4),_f=ls.members,ns=function(y){y===void 0&&(y=[]),this.segments=y};ns.prototype.prepareSegment=function(y,I,U,J){var ne=this.segments[this.segments.length-1];return y>ns.MAX_VERTEX_ARRAY_LENGTH&&re("Max vertices per segment is "+ns.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+y),(!ne||ne.vertexLength+y>ns.MAX_VERTEX_ARRAY_LENGTH||ne.sortKey!==J)&&(ne={vertexOffset:I.length,primitiveOffset:U.length,vertexLength:0,primitiveLength:0},J!==void 0&&(ne.sortKey=J),this.segments.push(ne)),ne},ns.prototype.get=function(){return this.segments},ns.prototype.destroy=function(){for(var y=0,I=this.segments;y>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt,fe=fe<<13|fe>>>19,Fe=(fe&65535)*5+(((fe>>>16)*5&65535)<<16)&4294967295,fe=(Fe&65535)+27492+(((Fe>>>16)+58964&65535)<<16);switch(mt=0,J){case 3:mt^=(I.charCodeAt(Xt+2)&255)<<16;case 2:mt^=(I.charCodeAt(Xt+1)&255)<<8;case 1:mt^=I.charCodeAt(Xt)&255,mt=(mt&65535)*Qe+(((mt>>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt}return fe^=I.length,fe^=fe>>>16,fe=(fe&65535)*2246822507+(((fe>>>16)*2246822507&65535)<<16)&4294967295,fe^=fe>>>13,fe=(fe&65535)*3266489909+(((fe>>>16)*3266489909&65535)<<16)&4294967295,fe^=fe>>>16,fe>>>0}m.exports=y}),O=a(function(m){function y(I,U){for(var J=I.length,ne=U^J,fe=0,Fe;J>=4;)Fe=I.charCodeAt(fe)&255|(I.charCodeAt(++fe)&255)<<8|(I.charCodeAt(++fe)&255)<<16|(I.charCodeAt(++fe)&255)<<24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),Fe^=Fe>>>24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)^Fe,J-=4,++fe;switch(J){case 3:ne^=(I.charCodeAt(fe+2)&255)<<16;case 2:ne^=(I.charCodeAt(fe+1)&255)<<8;case 1:ne^=I.charCodeAt(fe)&255,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)}return ne^=ne>>>13,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16),ne^=ne>>>15,ne>>>0}m.exports=y}),$=K,pe=K,de=O;$.murmur3=pe,$.murmur2=de;var Ie=function(){this.ids=[],this.positions=[],this.indexed=!1};Ie.prototype.add=function(y,I,U,J){this.ids.push(pt(y)),this.positions.push(I,U,J)},Ie.prototype.getPositions=function(y){for(var I=pt(y),U=0,J=this.ids.length-1;U>1;this.ids[ne]>=I?J=ne:U=ne+1}for(var fe=[];this.ids[U]===I;){var Fe=this.positions[3*U],Qe=this.positions[3*U+1],st=this.positions[3*U+2];fe.push({index:Fe,start:Qe,end:st}),U++}return fe},Ie.serialize=function(y,I){var U=new Float64Array(y.ids),J=new Uint32Array(y.positions);return Kt(U,J,0,U.length-1),I&&I.push(U.buffer,J.buffer),{ids:U,positions:J}},Ie.deserialize=function(y){var I=new Ie;return I.ids=y.ids,I.positions=y.positions,I.indexed=!0,I};var $e=Math.pow(2,53)-1;function pt(m){var y=+m;return!isNaN(y)&&y<=$e?y:$(String(m))}function Kt(m,y,I,U){for(;I>1],ne=I-1,fe=U+1;;){do ne++;while(m[ne]J);if(ne>=fe)break;ir(m,ne,fe),ir(y,3*ne,3*fe),ir(y,3*ne+1,3*fe+1),ir(y,3*ne+2,3*fe+2)}fe-Ife.x+1||Qefe.y+1)&&re("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return I}function No(m,y){return{type:m.type,id:m.id,properties:m.properties,geometry:y?da(m):[]}}function Do(m,y,I,U,J){m.emplaceBack(y*2+(U+1)/2,I*2+(J+1)/2)}var ps=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new ji,this.indexArray=new ma,this.segments=new ns,this.programConfigurations=new Ri(y.layers,y.zoom),this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};ps.prototype.populate=function(y,I,U){var J=this.layers[0],ne=[],fe=null;J.type==="circle"&&(fe=J.layout.get("circle-sort-key"));for(var Fe=0,Qe=y;Fe=rn||ur<0||ur>=rn)){var nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,y.sortKey),Lr=nr.vertexLength;Do(this.layoutVertexArray,Xt,ur,-1,-1),Do(this.layoutVertexArray,Xt,ur,1,-1),Do(this.layoutVertexArray,Xt,ur,1,1),Do(this.layoutVertexArray,Xt,ur,-1,1),this.indexArray.emplaceBack(Lr,Lr+1,Lr+2),this.indexArray.emplaceBack(Lr,Lr+3,Lr+2),nr.vertexLength+=4,nr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,y,U,{},J)},Z("CircleBucket",ps,{omit:["layers"]});function fo(m,y){for(var I=0;I=3){for(var ne=0;ne1){if(Ev(m,y))return!0;for(var U=0;U1?m.distSqr(I):m.distSqr(I.sub(y)._mult(J)._add(y))}function vp(m,y){for(var I=!1,U,J,ne,fe=0;fey.y!=ne.y>y.y&&y.x<(ne.x-J.x)*(y.y-J.y)/(ne.y-J.y)+J.x&&(I=!I)}return I}function _d(m,y){for(var I=!1,U=0,J=m.length-1;Uy.y!=fe.y>y.y&&y.x<(fe.x-ne.x)*(y.y-ne.y)/(fe.y-ne.y)+ne.x&&(I=!I)}return I}function pp(m,y,I,U,J){for(var ne=0,fe=m;ne=Fe.x&&J>=Fe.y)return!0}var Qe=[new u(y,I),new u(y,J),new u(U,J),new u(U,I)];if(m.length>2)for(var st=0,mt=Qe;stJ.x&&y.x>J.x||m.yJ.y&&y.y>J.y)return!1;var ne=ae(m,y,I[0]);return ne!==ae(m,y,I[1])||ne!==ae(m,y,I[2])||ne!==ae(m,y,I[3])}function xd(m,y,I){var U=y.paint.get(m).value;return U.kind==="constant"?U.value:I.programConfigurations.get(y.id).getMaxValue(m)}function kv(m){return Math.sqrt(m[0]*m[0]+m[1]*m[1])}function Kv(m,y,I,U,J){if(!y[0]&&!y[1])return m;var ne=u.convert(y)._mult(J);I==="viewport"&&ne._rotate(-U);for(var fe=[],Fe=0;Fe0&&(ne=1/Math.sqrt(ne)),m[0]=y[0]*ne,m[1]=y[1]*ne,m[2]=y[2]*ne,m}function P9(m,y){return m[0]*y[0]+m[1]*y[1]+m[2]*y[2]}function I9(m,y,I){var U=y[0],J=y[1],ne=y[2],fe=I[0],Fe=I[1],Qe=I[2];return m[0]=J*Qe-ne*Fe,m[1]=ne*fe-U*Qe,m[2]=U*Fe-J*fe,m}function R9(m,y,I){var U=y[0],J=y[1],ne=y[2];return m[0]=U*I[0]+J*I[3]+ne*I[6],m[1]=U*I[1]+J*I[4]+ne*I[7],m[2]=U*I[2]+J*I[5]+ne*I[8],m}var D9=om,mQ=function(){var m=am();return function(y,I,U,J,ne,fe){var Fe,Qe;for(I||(I=3),U||(U=0),J?Qe=Math.min(J*I+U,y.length):Qe=y.length,Fe=U;Fem.width||J.height>m.height||I.x>m.width-J.width||I.y>m.height-J.height)throw new RangeError("out of range source coordinates for image copy");if(J.width>y.width||J.height>y.height||U.x>y.width-J.width||U.y>y.height-J.height)throw new RangeError("out of range destination coordinates for image copy");for(var fe=m.data,Fe=y.data,Qe=0;Qe80*I){Fe=st=m[0],Qe=mt=m[1];for(var Lr=I;Lrst&&(st=Xt),ur>mt&&(mt=ur);nr=Math.max(st-Fe,mt-Qe),nr=nr!==0?1/nr:0}return jx(ne,fe,I,Fe,Qe,nr),fe}function Iw(m,y,I,U,J){var ne,fe;if(J===uS(m,y,I,U)>0)for(ne=y;ne=y;ne-=U)fe=xC(ne,m[ne],m[ne+1],fe);return fe&&Zx(fe,fe.next)&&(Kx(fe),fe=fe.next),fe}function sm(m,y){if(!m)return m;y||(y=m);var I=m,U;do if(U=!1,!I.steiner&&(Zx(I,I.next)||tf(I.prev,I,I.next)===0)){if(Kx(I),I=y=I.prev,I===I.next)break;U=!0}else I=I.next;while(U||I!==y);return y}function jx(m,y,I,U,J,ne,fe){if(m){!fe&&ne&&Rw(m,U,J,ne);for(var Fe=m,Qe,st;m.prev!==m.next;){if(Qe=m.prev,st=m.next,ne?mC(m,U,J,ne):gC(m)){y.push(Qe.i/I),y.push(m.i/I),y.push(st.i/I),Kx(m),m=st.next,Fe=st.next;continue}if(m=st,m===Fe){fe?fe===1?(m=Wx(sm(m),y,I),jx(m,y,I,U,J,ne,2)):fe===2&&v0(m,y,I,U,J,ne):jx(sm(m),y,I,U,J,ne,1);break}}}}function gC(m){var y=m.prev,I=m,U=m.next;if(tf(y,I,U)>=0)return!1;for(var J=m.next.next;J!==m.prev;){if(um(y.x,y.y,I.x,I.y,U.x,U.y,J.x,J.y)&&tf(J.prev,J,J.next)>=0)return!1;J=J.next}return!0}function mC(m,y,I,U){var J=m.prev,ne=m,fe=m.next;if(tf(J,ne,fe)>=0)return!1;for(var Fe=J.xne.x?J.x>fe.x?J.x:fe.x:ne.x>fe.x?ne.x:fe.x,mt=J.y>ne.y?J.y>fe.y?J.y:fe.y:ne.y>fe.y?ne.y:fe.y,Xt=aS(Fe,Qe,y,I,U),ur=aS(st,mt,y,I,U),nr=m.prevZ,Lr=m.nextZ;nr&&nr.z>=Xt&&Lr&&Lr.z<=ur;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0||(nr=nr.prevZ,Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0))return!1;Lr=Lr.nextZ}for(;nr&&nr.z>=Xt;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0)return!1;nr=nr.prevZ}for(;Lr&&Lr.z<=ur;){if(Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0)return!1;Lr=Lr.nextZ}return!0}function Wx(m,y,I){var U=m;do{var J=U.prev,ne=U.next.next;!Zx(J,ne)&&Dw(J,U,U.next,ne)&&Yx(J,ne)&&Yx(ne,J)&&(y.push(J.i/I),y.push(U.i/I),y.push(ne.i/I),Kx(U),Kx(U.next),U=m=ne),U=U.next}while(U!==m);return sm(U)}function v0(m,y,I,U,J,ne){var fe=m;do{for(var Fe=fe.next.next;Fe!==fe.prev;){if(fe.i!==Fe.i&&E1(fe,Fe)){var Qe=sS(fe,Fe);fe=sm(fe,fe.next),Qe=sm(Qe,Qe.next),jx(fe,y,I,U,J,ne),jx(Qe,y,I,U,J,ne);return}Fe=Fe.next}fe=fe.next}while(fe!==m)}function lm(m,y,I,U){var J=[],ne,fe,Fe,Qe,st;for(ne=0,fe=y.length;ne=I.next.y&&I.next.y!==I.y){var Fe=I.x+(J-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Fe<=U&&Fe>ne){if(ne=Fe,Fe===U){if(J===I.y)return I;if(J===I.next.y)return I.next}fe=I.x=I.x&&I.x>=st&&U!==I.x&&um(Jfe.x||I.x===fe.x&&H9(fe,I)))&&(fe=I,Xt=ur)),I=I.next;while(I!==Qe);return fe}function H9(m,y){return tf(m.prev,m,y.prev)<0&&tf(y.next,m,m.next)<0}function Rw(m,y,I,U){var J=m;do J.z===null&&(J.z=aS(J.x,J.y,y,I,U)),J.prevZ=J.prev,J.nextZ=J.next,J=J.next;while(J!==m);J.prevZ.nextZ=null,J.prevZ=null,nS(J)}function nS(m){var y,I,U,J,ne,fe,Fe,Qe,st=1;do{for(I=m,m=null,ne=null,fe=0;I;){for(fe++,U=I,Fe=0,y=0;y0||Qe>0&&U;)Fe!==0&&(Qe===0||!U||I.z<=U.z)?(J=I,I=I.nextZ,Fe--):(J=U,U=U.nextZ,Qe--),ne?ne.nextZ=J:m=J,J.prevZ=ne,ne=J;I=U}ne.nextZ=null,st*=2}while(fe>1);return m}function aS(m,y,I,U,J){return m=32767*(m-I)*J,y=32767*(y-U)*J,m=(m|m<<8)&16711935,m=(m|m<<4)&252645135,m=(m|m<<2)&858993459,m=(m|m<<1)&1431655765,y=(y|y<<8)&16711935,y=(y|y<<4)&252645135,y=(y|y<<2)&858993459,y=(y|y<<1)&1431655765,m|y<<1}function oS(m){var y=m,I=m;do(y.x=0&&(m-fe)*(U-Fe)-(I-fe)*(y-Fe)>=0&&(I-fe)*(ne-Fe)-(J-fe)*(U-Fe)>=0}function E1(m,y){return m.next.i!==y.i&&m.prev.i!==y.i&&!_C(m,y)&&(Yx(m,y)&&Yx(y,m)&&G9(m,y)&&(tf(m.prev,m,y.prev)||tf(m,y.prev,y))||Zx(m,y)&&tf(m.prev,m,m.next)>0&&tf(y.prev,y,y.next)>0)}function tf(m,y,I){return(y.y-m.y)*(I.x-y.x)-(y.x-m.x)*(I.y-y.y)}function Zx(m,y){return m.x===y.x&&m.y===y.y}function Dw(m,y,I,U){var J=uy(tf(m,y,I)),ne=uy(tf(m,y,U)),fe=uy(tf(I,U,m)),Fe=uy(tf(I,U,y));return!!(J!==ne&&fe!==Fe||J===0&&Xx(m,I,y)||ne===0&&Xx(m,U,y)||fe===0&&Xx(I,m,U)||Fe===0&&Xx(I,y,U))}function Xx(m,y,I){return y.x<=Math.max(m.x,I.x)&&y.x>=Math.min(m.x,I.x)&&y.y<=Math.max(m.y,I.y)&&y.y>=Math.min(m.y,I.y)}function uy(m){return m>0?1:m<0?-1:0}function _C(m,y){var I=m;do{if(I.i!==m.i&&I.next.i!==m.i&&I.i!==y.i&&I.next.i!==y.i&&Dw(I,I.next,m,y))return!0;I=I.next}while(I!==m);return!1}function Yx(m,y){return tf(m.prev,m,m.next)<0?tf(m,y,m.next)>=0&&tf(m,m.prev,y)>=0:tf(m,y,m.prev)<0||tf(m,m.next,y)<0}function G9(m,y){var I=m,U=!1,J=(m.x+y.x)/2,ne=(m.y+y.y)/2;do I.y>ne!=I.next.y>ne&&I.next.y!==I.y&&J<(I.next.x-I.x)*(ne-I.y)/(I.next.y-I.y)+I.x&&(U=!U),I=I.next;while(I!==m);return U}function sS(m,y){var I=new lS(m.i,m.x,m.y),U=new lS(y.i,y.x,y.y),J=m.next,ne=y.prev;return m.next=y,y.prev=m,I.next=J,J.prev=I,U.next=I,I.prev=U,ne.next=U,U.prev=ne,U}function xC(m,y,I,U){var J=new lS(m,y,I);return U?(J.next=U.next,J.prev=U,U.next.prev=J,U.next=J):(J.prev=J,J.next=J),J}function Kx(m){m.next.prev=m.prev,m.prev.next=m.next,m.prevZ&&(m.prevZ.nextZ=m.nextZ),m.nextZ&&(m.nextZ.prevZ=m.prevZ)}function lS(m,y,I){this.i=m,this.x=y,this.y=I,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}M1.deviation=function(m,y,I,U){var J=y&&y.length,ne=J?y[0]*I:m.length,fe=Math.abs(uS(m,0,ne,I));if(J)for(var Fe=0,Qe=y.length;Fe0&&(U+=m[J-1].length,I.holes.push(U))}return I},Pw.default=pC;function cS(m,y,I,U,J){dg(m,y,I||0,U||m.length-1,J||bC)}function dg(m,y,I,U,J){for(;U>I;){if(U-I>600){var ne=U-I+1,fe=y-I+1,Fe=Math.log(ne),Qe=.5*Math.exp(2*Fe/3),st=.5*Math.sqrt(Fe*Qe*(ne-Qe)/ne)*(fe-ne/2<0?-1:1),mt=Math.max(I,Math.floor(y-fe*Qe/ne+st)),Xt=Math.min(U,Math.floor(y+(ne-fe)*Qe/ne+st));dg(m,y,mt,Xt,J)}var ur=m[y],nr=I,Lr=U;for(k1(m,I,y),J(m[U],ur)>0&&k1(m,I,U);nr0;)Lr--}J(m[I],ur)===0?k1(m,I,Lr):(Lr++,k1(m,Lr,U)),Lr<=y&&(I=Lr+1),y<=Lr&&(U=Lr-1)}}function k1(m,y,I){var U=m[y];m[y]=m[I],m[I]=U}function bC(m,y){return my?1:0}function zw(m,y){var I=m.length;if(I<=1)return[m];for(var U=[],J,ne,fe=0;fe1)for(var Qe=0;Qe>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),I===1&&(Fe&&fe.push(Fe),Fe=[]),Fe.push(new u(J,ne));else if(I===7)Fe&&Fe.push(Fe[0].clone());else throw new Error("unknown command "+I)}return Fe&&fe.push(Fe),fe},cy.prototype.bbox=function(){var m=this._pbf;m.pos=this._geometry;for(var y=m.readVarint()+m.pos,I=1,U=0,J=0,ne=0,fe=1/0,Fe=-1/0,Qe=1/0,st=-1/0;m.pos>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),JFe&&(Fe=J),nest&&(st=ne);else if(I!==7)throw new Error("unknown command "+I)}return[fe,Qe,Fe,st]},cy.prototype.toGeoJSON=function(m,y,I){var U=this.extent*Math.pow(2,I),J=this.extent*m,ne=this.extent*y,fe=this.loadGeometry(),Fe=cy.types[this.type],Qe,st;function mt(nr){for(var Lr=0;Lr>3;y=U===1?m.readString():U===2?m.readFloat():U===3?m.readDouble():U===4?m.readVarint64():U===5?m.readVarint():U===6?m.readSVarint():U===7?m.readBoolean():null}return y}dS.prototype.feature=function(m){if(m<0||m>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[m];var y=this._pbf.readVarint()+this._pbf.pos;return new hS(this._pbf,y,this.extent,this._keys,this._values)};var PC=W9;function W9(m,y){this.layers=m.readFields(Z9,{},y)}function Z9(m,y,I){if(m===3){var U=new vg(I,I.readVarint()+I.pos);U.length&&(y[U.name]=U)}}var IC=PC,C1=hS,RC=vg,pg={VectorTile:IC,VectorTileFeature:C1,VectorTileLayer:RC},DC=pg.VectorTileFeature.types,qw=500,L1=Math.pow(2,13);function cm(m,y,I,U,J,ne,fe,Fe){m.emplaceBack(y,I,Math.floor(U*L1)*2+fe,J*L1*2,ne*L1*2,Math.round(Fe))}var Hp=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new Un,this.indexArray=new ma,this.programConfigurations=new Ri(y.layers,y.zoom),this.segments=new ns,this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};Hp.prototype.populate=function(y,I,U){this.features=[],this.hasPattern=Fw("fill-extrusion",this.layers,I);for(var J=0,ne=y;J=1){var Vi=_i[Hi-1];if(!X9(Ei,Vi)){nr.vertexLength+4>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var en=Ei.sub(Vi)._perp()._unit(),An=Vi.dist(Ei);si+An>32768&&(si=0),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,1,si),si+=An,cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,1,si);var ra=nr.vertexLength;this.indexArray.emplaceBack(ra,ra+2,ra+1),this.indexArray.emplaceBack(ra+1,ra+2,ra+3),nr.vertexLength+=4,nr.primitiveLength+=2}}}}if(nr.vertexLength+st>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(st,this.layoutVertexArray,this.indexArray)),DC[y.type]==="Polygon"){for(var $n=[],Ba=[],_a=nr.vertexLength,Pa=0,qo=Qe;Parn)||m.y===y.y&&(m.y<0||m.y>rn)}function Y9(m){return m.every(function(y){return y.x<0})||m.every(function(y){return y.x>rn})||m.every(function(y){return y.y<0})||m.every(function(y){return y.y>rn})}var P1=new Oi({"fill-extrusion-opacity":new At(on["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Er(on["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new At(on["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new At(on["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Wr(on["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Er(on["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Er(on["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new At(on["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ed={paint:P1},fm=function(m){function y(I){m.call(this,I,ed)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.createBucket=function(U){return new Hp(U)},y.prototype.queryRadius=function(){return kv(this.paint.get("fill-extrusion-translate"))},y.prototype.is3D=function(){return!0},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st,mt){var Xt=Kv(U,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Qe.angle,st),ur=this.paint.get("fill-extrusion-height").evaluate(J,ne),nr=this.paint.get("fill-extrusion-base").evaluate(J,ne),Lr=K9(Xt,mt,Qe,0),Yr=pS(fe,nr,ur,mt),_i=Yr[0],si=Yr[1];return zC(_i,si,Lr)},y}(cn);function fy(m,y){return m.x*y.x+m.y*y.y}function vS(m,y){if(m.length===1){for(var I=0,U=y[I++],J;!J||U.equals(J);)if(J=y[I++],!J)return 1/0;for(;I=2&&y[st-1].equals(y[st-2]);)st--;for(var mt=0;mt0;if($n&&Hi>mt){var _a=nr.dist(Lr);if(_a>2*Xt){var Pa=nr.sub(nr.sub(Lr)._mult(Xt/_a)._round());this.updateDistance(Lr,Pa),this.addCurrentVertex(Pa,_i,0,0,ur),Lr=Pa}}var qo=Lr&&Yr,Na=qo?U:Qe?"butt":J;if(qo&&Na==="round"&&(Anne&&(Na="bevel"),Na==="bevel"&&(An>2&&(Na="flipbevel"),An100)Ei=si.mult(-1);else{var ja=An*_i.add(si).mag()/_i.sub(si).mag();Ei._perp()._mult(ja*(Ba?-1:1))}this.addCurrentVertex(nr,Ei,0,0,ur),this.addCurrentVertex(nr,Ei.mult(-1),0,0,ur)}else if(Na==="bevel"||Na==="fakeround"){var us=-Math.sqrt(An*An-1),zo=Ba?us:0,rl=Ba?0:us;if(Lr&&this.addCurrentVertex(nr,_i,zo,rl,ur),Na==="fakeround")for(var su=Math.round(ra*180/Math.PI/mS),il=1;il2*Xt){var Zf=nr.add(Yr.sub(nr)._mult(Xt/qh)._round());this.updateDistance(nr,Zf),this.addCurrentVertex(Zf,si,0,0,ur),nr=Zf}}}}},Gf.prototype.addCurrentVertex=function(y,I,U,J,ne,fe){fe===void 0&&(fe=!1);var Fe=I.x+I.y*U,Qe=I.y-I.x*U,st=-I.x+I.y*J,mt=-I.y-I.x*J;this.addHalfVertex(y,Fe,Qe,fe,!1,U,ne),this.addHalfVertex(y,st,mt,fe,!0,-J,ne),this.distance>tb/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(y,I,U,J,ne,fe))},Gf.prototype.addHalfVertex=function(y,I,U,J,ne,fe,Fe){var Qe=y.x,st=y.y,mt=this.lineClips?this.scaledDistance*(tb-1):this.scaledDistance,Xt=mt*Bw;if(this.layoutVertexArray.emplaceBack((Qe<<1)+(J?1:0),(st<<1)+(ne?1:0),Math.round(Ow*I)+128,Math.round(Ow*U)+128,(fe===0?0:fe<0?-1:1)+1|(Xt&63)<<2,Xt>>6),this.lineClips){var ur=this.scaledDistance-this.lineClips.start,nr=this.lineClips.end-this.lineClips.start,Lr=ur/nr;this.layoutVertexArray2.emplaceBack(Lr,this.lineClipsArray.length)}var Yr=Fe.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Yr),Fe.primitiveLength++),ne?this.e2=Yr:this.e1=Yr},Gf.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},Gf.prototype.updateDistance=function(y,I){this.distance+=y.dist(I),this.updateScaledDistance()},Z("LineBucket",Gf,{omit:["layers","patternFeatures"]});var yS=new Oi({"line-cap":new At(on.layout_line["line-cap"]),"line-join":new Er(on.layout_line["line-join"]),"line-miter-limit":new At(on.layout_line["line-miter-limit"]),"line-round-limit":new At(on.layout_line["line-round-limit"]),"line-sort-key":new Er(on.layout_line["line-sort-key"])}),_S=new Oi({"line-opacity":new Er(on.paint_line["line-opacity"]),"line-color":new Er(on.paint_line["line-color"]),"line-translate":new At(on.paint_line["line-translate"]),"line-translate-anchor":new At(on.paint_line["line-translate-anchor"]),"line-width":new Er(on.paint_line["line-width"]),"line-gap-width":new Er(on.paint_line["line-gap-width"]),"line-offset":new Er(on.paint_line["line-offset"]),"line-blur":new Er(on.paint_line["line-blur"]),"line-dasharray":new wi(on.paint_line["line-dasharray"]),"line-pattern":new Wr(on.paint_line["line-pattern"]),"line-gradient":new Ui(on.paint_line["line-gradient"])}),Nw={paint:_S,layout:yS},$9=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.possiblyEvaluate=function(U,J){return J=new pn(Math.floor(J.zoom),{now:J.now,fadeDuration:J.fadeDuration,zoomHistory:J.zoomHistory,transition:J.transition}),m.prototype.possiblyEvaluate.call(this,U,J)},y.prototype.evaluate=function(U,J,ne,fe){return J=_({},J,{zoom:Math.floor(J.zoom)}),m.prototype.evaluate.call(this,U,J,ne,fe)},y}(Er),R=new $9(Nw.paint.properties["line-width"].specification);R.useIntegerZoom=!0;var S=function(m){function y(I){m.call(this,I,Nw),this.gradientVersion=0}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._handleSpecialPaintPropertyUpdate=function(U){if(U==="line-gradient"){var J=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=J._styleExpression.expression instanceof yu,this.gradientVersion=(this.gradientVersion+1)%d}},y.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},y.prototype.recalculate=function(U,J){m.prototype.recalculate.call(this,U,J),this.paint._values["line-floorwidth"]=R.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,U)},y.prototype.createBucket=function(U){return new Gf(U)},y.prototype.queryRadius=function(U){var J=U,ne=D(xd("line-width",this,J),xd("line-gap-width",this,J)),fe=xd("line-offset",this,J);return ne/2+Math.abs(fe)+kv(this.paint.get("line-translate"))},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st){var mt=Kv(U,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Qe.angle,st),Xt=st/2*D(this.paint.get("line-width").evaluate(J,ne),this.paint.get("line-gap-width").evaluate(J,ne)),ur=this.paint.get("line-offset").evaluate(J,ne);return ur&&(fe=j(fe,ur*st)),zu(mt,fe,Xt)},y.prototype.isTileClipped=function(){return!0},y}(cn);function D(m,y){return y>0?y+2*m:m}function j(m,y){for(var I=[],U=new u(0,0),J=0;J":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function ki(m){for(var y="",I=0;I>1,mt=-7,Xt=I?J-1:0,ur=I?-1:1,nr=m[y+Xt];for(Xt+=ur,ne=nr&(1<<-mt)-1,nr>>=-mt,mt+=Fe;mt>0;ne=ne*256+m[y+Xt],Xt+=ur,mt-=8);for(fe=ne&(1<<-mt)-1,ne>>=-mt,mt+=U;mt>0;fe=fe*256+m[y+Xt],Xt+=ur,mt-=8);if(ne===0)ne=1-st;else{if(ne===Qe)return fe?NaN:(nr?-1:1)*(1/0);fe=fe+Math.pow(2,U),ne=ne-st}return(nr?-1:1)*fe*Math.pow(2,ne-U)},Va=function(m,y,I,U,J,ne){var fe,Fe,Qe,st=ne*8-J-1,mt=(1<>1,ur=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,nr=U?0:ne-1,Lr=U?1:-1,Yr=y<0||y===0&&1/y<0?1:0;for(y=Math.abs(y),isNaN(y)||y===1/0?(Fe=isNaN(y)?1:0,fe=mt):(fe=Math.floor(Math.log(y)/Math.LN2),y*(Qe=Math.pow(2,-fe))<1&&(fe--,Qe*=2),fe+Xt>=1?y+=ur/Qe:y+=ur*Math.pow(2,1-Xt),y*Qe>=2&&(fe++,Qe/=2),fe+Xt>=mt?(Fe=0,fe=mt):fe+Xt>=1?(Fe=(y*Qe-1)*Math.pow(2,J),fe=fe+Xt):(Fe=y*Math.pow(2,Xt-1)*Math.pow(2,J),fe=0));J>=8;m[I+nr]=Fe&255,nr+=Lr,Fe/=256,J-=8);for(fe=fe<0;m[I+nr]=fe&255,nr+=Lr,fe/=256,st-=8);m[I+nr-Lr]|=Yr*128},Io={read:ta,write:Va},La=Hn;function Hn(m){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(m)?m:new Uint8Array(m||0),this.pos=0,this.type=0,this.length=this.buf.length}Hn.Varint=0,Hn.Fixed64=1,Hn.Bytes=2,Hn.Fixed32=5;var lo=65536*65536,$a=1/lo,Xa=12,Tn=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");Hn.prototype={destroy:function(){this.buf=null},readFields:function(m,y,I){for(I=I||this.length;this.pos>3,ne=this.pos;this.type=U&7,m(J,y,this),this.pos===ne&&this.skip(U)}return y},readMessage:function(m,y){return this.readFields(m,y,this.readVarint()+this.pos)},readFixed32:function(){var m=Dh(this.buf,this.pos);return this.pos+=4,m},readSFixed32:function(){var m=Iv(this.buf,this.pos);return this.pos+=4,m},readFixed64:function(){var m=Dh(this.buf,this.pos)+Dh(this.buf,this.pos+4)*lo;return this.pos+=8,m},readSFixed64:function(){var m=Dh(this.buf,this.pos)+Iv(this.buf,this.pos+4)*lo;return this.pos+=8,m},readFloat:function(){var m=Io.read(this.buf,this.pos,!0,23,4);return this.pos+=4,m},readDouble:function(){var m=Io.read(this.buf,this.pos,!0,52,8);return this.pos+=8,m},readVarint:function(m){var y=this.buf,I,U;return U=y[this.pos++],I=U&127,U<128||(U=y[this.pos++],I|=(U&127)<<7,U<128)||(U=y[this.pos++],I|=(U&127)<<14,U<128)||(U=y[this.pos++],I|=(U&127)<<21,U<128)?I:(U=y[this.pos],I|=(U&15)<<28,bo(I,m,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var m=this.readVarint();return m%2===1?(m+1)/-2:m/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var m=this.readVarint()+this.pos,y=this.pos;return this.pos=m,m-y>=Xa&&Tn?Cl(this.buf,y,m):lv(this.buf,y,m)},readBytes:function(){var m=this.readVarint()+this.pos,y=this.buf.subarray(this.pos,m);return this.pos=m,y},readPackedVarint:function(m,y){if(this.type!==Hn.Bytes)return m.push(this.readVarint(y));var I=Ya(this);for(m=m||[];this.pos127;);else if(y===Hn.Bytes)this.pos=this.readVarint()+this.pos;else if(y===Hn.Fixed32)this.pos+=4;else if(y===Hn.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+y)},writeTag:function(m,y){this.writeVarint(m<<3|y)},realloc:function(m){for(var y=this.length||16;y268435455||m<0){wu(m,this);return}this.realloc(4),this.buf[this.pos++]=m&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=m>>>7&127)))},writeSVarint:function(m){this.writeVarint(m<0?-m*2-1:m*2)},writeBoolean:function(m){this.writeVarint(!!m)},writeString:function(m){m=String(m),this.realloc(m.length*4),this.pos++;var y=this.pos;this.pos=qu(this.buf,m,this.pos);var I=this.pos-y;I>=128&&$v(y,I,this),this.pos=y-1,this.writeVarint(I),this.pos+=I},writeFloat:function(m){this.realloc(4),Io.write(this.buf,m,this.pos,!0,23,4),this.pos+=4},writeDouble:function(m){this.realloc(8),Io.write(this.buf,m,this.pos,!0,52,8),this.pos+=8},writeBytes:function(m){var y=m.length;this.writeVarint(y),this.realloc(y);for(var I=0;I=128&&$v(I,U,this),this.pos=I-1,this.writeVarint(U),this.pos+=U},writeMessage:function(m,y,I){this.writeTag(m,Hn.Bytes),this.writeRawMessage(y,I)},writePackedVarint:function(m,y){y.length&&this.writeMessage(m,td,y)},writePackedSVarint:function(m,y){y.length&&this.writeMessage(m,ch,y)},writePackedBoolean:function(m,y){y.length&&this.writeMessage(m,Hd,y)},writePackedFloat:function(m,y){y.length&&this.writeMessage(m,Ud,y)},writePackedDouble:function(m,y){y.length&&this.writeMessage(m,Vd,y)},writePackedFixed32:function(m,y){y.length&&this.writeMessage(m,rf,y)},writePackedSFixed32:function(m,y){y.length&&this.writeMessage(m,fh,y)},writePackedFixed64:function(m,y){y.length&&this.writeMessage(m,Td,y)},writePackedSFixed64:function(m,y){y.length&&this.writeMessage(m,rd,y)},writeBytesField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeBytes(y)},writeFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFixed32(y)},writeSFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeSFixed32(y)},writeFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeFixed64(y)},writeSFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeSFixed64(y)},writeVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeVarint(y)},writeSVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeSVarint(y)},writeStringField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeString(y)},writeFloatField:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFloat(y)},writeDoubleField:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeDouble(y)},writeBooleanField:function(m,y){this.writeVarintField(m,!!y)}};function bo(m,y,I){var U=I.buf,J,ne;if(ne=U[I.pos++],J=(ne&112)>>4,ne<128||(ne=U[I.pos++],J|=(ne&127)<<3,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<10,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<17,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<24,ne<128)||(ne=U[I.pos++],J|=(ne&1)<<31,ne<128))return Uo(m,J,y);throw new Error("Expected varint not more than 10 bytes")}function Ya(m){return m.type===Hn.Bytes?m.readVarint()+m.pos:m.pos+1}function Uo(m,y,I){return I?y*4294967296+(m>>>0):(y>>>0)*4294967296+(m>>>0)}function wu(m,y){var I,U;if(m>=0?(I=m%4294967296|0,U=m/4294967296|0):(I=~(-m%4294967296),U=~(-m/4294967296),I^4294967295?I=I+1|0:(I=0,U=U+1|0)),m>=18446744073709552e3||m<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");y.realloc(10),hu(I,U,y),uh(U,y)}function hu(m,y,I){I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos]=m&127}function uh(m,y){var I=(m&7)<<4;y.buf[y.pos++]|=I|((m>>>=3)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127)))))}function $v(m,y,I){var U=y<=16383?1:y<=2097151?2:y<=268435455?3:Math.floor(Math.log(y)/(Math.LN2*7));I.realloc(U);for(var J=I.pos-1;J>=m;J--)I.buf[J+U]=I.buf[J]}function td(m,y){for(var I=0;I>>8,m[I+2]=y>>>16,m[I+3]=y>>>24}function Iv(m,y){return(m[y]|m[y+1]<<8|m[y+2]<<16)+(m[y+3]<<24)}function lv(m,y,I){for(var U="",J=y;J239?4:ne>223?3:ne>191?2:1;if(J+Fe>I)break;var Qe,st,mt;Fe===1?ne<128&&(fe=ne):Fe===2?(Qe=m[J+1],(Qe&192)===128&&(fe=(ne&31)<<6|Qe&63,fe<=127&&(fe=null))):Fe===3?(Qe=m[J+1],st=m[J+2],(Qe&192)===128&&(st&192)===128&&(fe=(ne&15)<<12|(Qe&63)<<6|st&63,(fe<=2047||fe>=55296&&fe<=57343)&&(fe=null))):Fe===4&&(Qe=m[J+1],st=m[J+2],mt=m[J+3],(Qe&192)===128&&(st&192)===128&&(mt&192)===128&&(fe=(ne&15)<<18|(Qe&63)<<12|(st&63)<<6|mt&63,(fe<=65535||fe>=1114112)&&(fe=null))),fe===null?(fe=65533,Fe=1):fe>65535&&(fe-=65536,U+=String.fromCharCode(fe>>>10&1023|55296),fe=56320|fe&1023),U+=String.fromCharCode(fe),J+=Fe}return U}function Cl(m,y,I){return Tn.decode(m.subarray(y,I))}function qu(m,y,I){for(var U=0,J,ne;U55295&&J<57344)if(ne)if(J<56320){m[I++]=239,m[I++]=191,m[I++]=189,ne=J;continue}else J=ne-55296<<10|J-56320|65536,ne=null;else{J>56319||U+1===y.length?(m[I++]=239,m[I++]=191,m[I++]=189):ne=J;continue}else ne&&(m[I++]=239,m[I++]=191,m[I++]=189,ne=null);J<128?m[I++]=J:(J<2048?m[I++]=J>>6|192:(J<65536?m[I++]=J>>12|224:(m[I++]=J>>18|240,m[I++]=J>>12&63|128),m[I++]=J>>6&63|128),m[I++]=J&63|128)}return I}var Tu=3;function Rv(m,y,I){m===1&&I.readMessage(qc,y)}function qc(m,y,I){if(m===3){var U=I.readMessage(I1,{}),J=U.id,ne=U.bitmap,fe=U.width,Fe=U.height,Qe=U.left,st=U.top,mt=U.advance;y.push({id:J,bitmap:new Pv({width:fe+2*Tu,height:Fe+2*Tu},ne),metrics:{width:fe,height:Fe,left:Qe,top:st,advance:mt}})}}function I1(m,y,I){m===1?y.id=I.readVarint():m===2?y.bitmap=I.readBytes():m===3?y.width=I.readVarint():m===4?y.height=I.readVarint():m===5?y.left=I.readSVarint():m===6?y.top=I.readSVarint():m===7&&(y.advance=I.readVarint())}function p0(m){return new La(m).readFields(Rv,[])}var Gp=Tu;function Qv(m){for(var y=0,I=0,U=0,J=m;U=0;nr--){var Lr=Fe[nr];if(!(ur.w>Lr.w||ur.h>Lr.h)){if(ur.x=Lr.x,ur.y=Lr.y,st=Math.max(st,ur.y+ur.h),Qe=Math.max(Qe,ur.x+ur.w),ur.w===Lr.w&&ur.h===Lr.h){var Yr=Fe.pop();nr=0&&J>=y&&m0[this.text.charCodeAt(J)];J--)U--;this.text=this.text.substring(y,U),this.sectionIndex=this.sectionIndex.slice(y,U)},zh.prototype.substring=function(y,I){var U=new zh;return U.text=this.text.substring(y,I),U.sectionIndex=this.sectionIndex.slice(y,I),U.sections=this.sections,U},zh.prototype.toString=function(){return this.text},zh.prototype.getMaxScale=function(){var y=this;return this.sectionIndex.reduce(function(I,U){return Math.max(I,y.sections[U].scale)},0)},zh.prototype.addTextSection=function(y,I){this.text+=y.text,this.sections.push(hy.forText(y.scale,y.fontStack||I));for(var U=this.sections.length-1,J=0;J=g0?null:++this.imageSectionID:(this.imageSectionID=Uw,this.imageSectionID)};function Q9(m,y){for(var I=[],U=m.text,J=0,ne=0,fe=y;ne=0,mt=0,Xt=0;Xt0&&Zf>Ba&&(Ba=Zf)}else{var nl=I[Pa.fontStack],Ws=nl&&nl[Na];if(Ws&&Ws.rect)zo=Ws.rect,us=Ws.metrics;else{var Au=y[Pa.fontStack],Ou=Au&&Au[Na];if(!Ou)continue;us=Ou.metrics}ja=(en-Pa.scale)*Zi}il?(m.verticalizable=!0,$n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=su*Pa.scale+st):($n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=us.advance*Pa.scale+st)}if($n.length!==0){var jd=ur-st;Lr=Math.max(jd,Lr),iq($n,0,$n.length-1,_i,Ba)}ur=0;var Wd=ne*en+Ba;ra.lineOffset=Math.max(Ba,An),nr+=Wd,Yr=Math.max(Wd,Yr),++si}var Oh=nr-R1,fv=bS(fe),hv=fv.horizontalAlign,hh=fv.verticalAlign;Ad(m.positionedLines,_i,hv,hh,Lr,Yr,ne,Oh,J.length),m.top+=-hh*Oh,m.bottom=m.top+Oh,m.left+=-hv*Lr,m.right=m.left+Lr}function iq(m,y,I,U,J){if(!(!U&&!J))for(var ne=m[I],fe=ne.metrics.advance*ne.scale,Fe=(m[I].x+fe)*U,Qe=y;Qe<=I;Qe++)m[Qe].x-=Fe,m[Qe].y+=J}function Ad(m,y,I,U,J,ne,fe,Fe,Qe){var st=(y-I)*J,mt=0;ne!==fe?mt=-Fe*U-R1:mt=(-U*Qe+.5)*fe;for(var Xt=0,ur=m;Xt-I/2;){if(fe--,fe<0)return!1;Fe-=m[fe].dist(ne),ne=m[fe]}Fe+=m[fe].dist(m[fe+1]),fe++;for(var Qe=[],st=0;FeU;)st-=Qe.shift().angleDelta;if(st>J)return!1;fe++,Fe+=Xt.dist(ur)}return!0}function wQ(m){for(var y=0,I=0;Ist){var Lr=(st-Qe)/nr,Yr=Qs(Xt.x,ur.x,Lr),_i=Qs(Xt.y,ur.y,Lr),si=new Gd(Yr,_i,ur.angleTo(Xt),mt);return si._round(),!fe||bQ(m,si,Fe,fe,y)?si:void 0}Qe+=nr}}function aQe(m,y,I,U,J,ne,fe,Fe,Qe){var st=TQ(U,ne,fe),mt=AQ(U,J),Xt=mt*fe,ur=m[0].x===0||m[0].x===Qe||m[0].y===0||m[0].y===Qe;y-Xt=0&&Vi=0&&en=0&&ur+st<=mt){var An=new Gd(Vi,en,Hi,Lr);An._round(),(!U||bQ(m,An,ne,U,J))&&nr.push(An)}}Xt+=si}return!Fe&&!nr.length&&!fe&&(nr=SQ(m,Xt/2,I,U,J,ne,fe,!0,Qe)),nr}function MQ(m,y,I,U,J){for(var ne=[],fe=0;fe=U&&Xt.x>=U)&&(mt.x>=U?mt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round():Xt.x>=U&&(Xt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round()),!(mt.y>=J&&Xt.y>=J)&&(mt.y>=J?mt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round():Xt.y>=J&&(Xt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round()),(!Qe||!mt.equals(Qe[Qe.length-1]))&&(Qe=[mt],ne.push(Qe)),Qe.push(Xt)))))}return ne}var Gw=oc;function EQ(m,y,I,U){var J=[],ne=m.image,fe=ne.pixelRatio,Fe=ne.paddedRect.w-2*Gw,Qe=ne.paddedRect.h-2*Gw,st=m.right-m.left,mt=m.bottom-m.top,Xt=ne.stretchX||[[0,Fe]],ur=ne.stretchY||[[0,Qe]],nr=function(nl,Ws){return nl+Ws[1]-Ws[0]},Lr=Xt.reduce(nr,0),Yr=ur.reduce(nr,0),_i=Fe-Lr,si=Qe-Yr,Hi=0,Ei=Lr,Vi=0,en=Yr,An=0,ra=_i,$n=0,Ba=si;if(ne.content&&U){var _a=ne.content;Hi=HC(Xt,0,_a[0]),Vi=HC(ur,0,_a[1]),Ei=HC(Xt,_a[0],_a[2]),en=HC(ur,_a[1],_a[3]),An=_a[0]-Hi,$n=_a[1]-Vi,ra=_a[2]-_a[0]-Ei,Ba=_a[3]-_a[1]-en}var Pa=function(nl,Ws,Au,Ou){var nf=GC(nl.stretch-Hi,Ei,st,m.left),bf=jC(nl.fixed-An,ra,nl.stretch,Lr),qh=GC(Ws.stretch-Vi,en,mt,m.top),Zf=jC(Ws.fixed-$n,Ba,Ws.stretch,Yr),jd=GC(Au.stretch-Hi,Ei,st,m.left),Wd=jC(Au.fixed-An,ra,Au.stretch,Lr),Oh=GC(Ou.stretch-Vi,en,mt,m.top),fv=jC(Ou.fixed-$n,Ba,Ou.stretch,Yr),hv=new u(nf,qh),hh=new u(jd,qh),dv=new u(jd,Oh),_p=new u(nf,Oh),py=new u(bf/fe,Zf/fe),F1=new u(Wd/fe,fv/fe),q1=y*Math.PI/180;if(q1){var O1=Math.sin(q1),$w=Math.cos(q1),y0=[$w,-O1,O1,$w];hv._matMult(y0),hh._matMult(y0),_p._matMult(y0),dv._matMult(y0)}var JC=nl.stretch+nl.fixed,fq=Au.stretch+Au.fixed,$C=Ws.stretch+Ws.fixed,hq=Ou.stretch+Ou.fixed,jp={x:ne.paddedRect.x+Gw+JC,y:ne.paddedRect.y+Gw+$C,w:fq-JC,h:hq-$C},Qw=ra/fe/st,QC=Ba/fe/mt;return{tl:hv,tr:hh,bl:_p,br:dv,tex:jp,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:py,pixelOffsetBR:F1,minFontScaleX:Qw,minFontScaleY:QC,isSDF:I}};if(!U||!ne.stretchX&&!ne.stretchY)J.push(Pa({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:Fe+1},{fixed:0,stretch:Qe+1}));else for(var qo=kQ(Xt,_i,Lr),Na=kQ(ur,si,Yr),ja=0;ja0&&(Lr=Math.max(10,Lr),this.circleDiameter=Lr)}else{var Yr=fe.top*Fe-Qe,_i=fe.bottom*Fe+Qe,si=fe.left*Fe-Qe,Hi=fe.right*Fe+Qe,Ei=fe.collisionPadding;if(Ei&&(si-=Ei[0]*Fe,Yr-=Ei[1]*Fe,Hi+=Ei[2]*Fe,_i+=Ei[3]*Fe),mt){var Vi=new u(si,Yr),en=new u(Hi,Yr),An=new u(si,_i),ra=new u(Hi,_i),$n=mt*Math.PI/180;Vi._rotate($n),en._rotate($n),An._rotate($n),ra._rotate($n),si=Math.min(Vi.x,en.x,An.x,ra.x),Hi=Math.max(Vi.x,en.x,An.x,ra.x),Yr=Math.min(Vi.y,en.y,An.y,ra.y),_i=Math.max(Vi.y,en.y,An.y,ra.y)}y.emplaceBack(I.x,I.y,si,Yr,Hi,_i,U,J,ne)}this.boxEndIndex=y.length},jw=function(y,I){if(y===void 0&&(y=[]),I===void 0&&(I=sQe),this.data=y,this.length=this.data.length,this.compare=I,this.length>0)for(var U=(this.length>>1)-1;U>=0;U--)this._down(U)};jw.prototype.push=function(y){this.data.push(y),this.length++,this._up(this.length-1)},jw.prototype.pop=function(){if(this.length!==0){var y=this.data[0],I=this.data.pop();return this.length--,this.length>0&&(this.data[0]=I,this._down(0)),y}},jw.prototype.peek=function(){return this.data[0]},jw.prototype._up=function(y){for(var I=this,U=I.data,J=I.compare,ne=U[y];y>0;){var fe=y-1>>1,Fe=U[fe];if(J(ne,Fe)>=0)break;U[y]=Fe,y=fe}U[y]=ne},jw.prototype._down=function(y){for(var I=this,U=I.data,J=I.compare,ne=this.length>>1,fe=U[y];y=0)break;U[y]=Qe,y=Fe}U[y]=fe};function sQe(m,y){return my?1:0}function lQe(m,y,I){y===void 0&&(y=1),I===void 0&&(I=!1);for(var U=1/0,J=1/0,ne=-1/0,fe=-1/0,Fe=m[0],Qe=0;Qene)&&(ne=st.x),(!Qe||st.y>fe)&&(fe=st.y)}var mt=ne-U,Xt=fe-J,ur=Math.min(mt,Xt),nr=ur/2,Lr=new jw([],uQe);if(ur===0)return new u(U,J);for(var Yr=U;Yrsi.d||!si.d)&&(si=Ei,I&&console.log("found best %d after %d probes",Math.round(1e4*Ei.d)/1e4,Hi)),!(Ei.max-si.d<=y)&&(nr=Ei.h/2,Lr.push(new Ww(Ei.p.x-nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x-nr,Ei.p.y+nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y+nr,nr,m)),Hi+=4)}return I&&(console.log("num probes: "+Hi),console.log("best distance: "+si.d)),si.p}function uQe(m,y){return y.max-m.max}function Ww(m,y,I,U){this.p=new u(m,y),this.h=I,this.d=cQe(this.p,U),this.max=this.d+this.h*Math.SQRT2}function cQe(m,y){for(var I=!1,U=1/0,J=0;Jm.y!=mt.y>m.y&&m.x<(mt.x-st.x)*(m.y-st.y)/(mt.y-st.y)+st.x&&(I=!I),U=Math.min(U,cg(m,st,mt))}return(I?1:-1)*Math.sqrt(U)}function fQe(m){for(var y=0,I=0,U=0,J=m[0],ne=0,fe=J.length,Fe=fe-1;ne=rn||y0.y<0||y0.y>=rn||vQe(m,y0,$w,I,U,J,Na,m.layers[0],m.collisionBoxArray,y.index,y.sourceLayerIndex,m.index,si,en,$n,Qe,Ei,An,Ba,nr,y,ne,st,mt,fe)};if(_a==="line")for(var us=0,zo=MQ(y.geometry,0,0,rn,rn);us1){var qh=nQe(bf,ra,I.vertical||Lr,U,Yr,Hi);qh&&ja(bf,qh)}}else if(y.type==="Polygon")for(var Zf=0,jd=zw(y.geometry,0);ZfD1&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')):_i.kind==="composite"&&(si=[Sd*nr.compositeTextSizes[0].evaluate(fe,{},Lr),Sd*nr.compositeTextSizes[1].evaluate(fe,{},Lr)],(si[0]>D1||si[1]>D1)&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')),m.addSymbols(m.text,Yr,si,Fe,ne,fe,st,y,Qe.lineStartIndex,Qe.lineLength,ur,Lr);for(var Hi=0,Ei=mt;HiD1&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')):hv.kind==="composite"&&(hh=[Sd*en.compositeIconSizes[0].evaluate(Vi,{},ra),Sd*en.compositeIconSizes[1].evaluate(Vi,{},ra)],(hh[0]>D1||hh[1]>D1)&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')),m.addSymbols(m.icon,Oh,hh,Ei,Hi,Vi,!1,y,_a.lineStartIndex,_a.lineLength,-1,ra),il=m.icon.placedSymbolArray.length-1,fv&&(zo=fv.length*4,m.addSymbols(m.icon,fv,hh,Ei,Hi,Vi,uv.vertical,y,_a.lineStartIndex,_a.lineLength,-1,ra),nl=m.icon.placedSymbolArray.length-1)}for(var dv in U.horizontal){var _p=U.horizontal[dv];if(!Pa){Au=$(_p.text);var py=Fe.layout.get("text-rotate").evaluate(Vi,{},ra);Pa=new WC(Qe,y,st,mt,Xt,_p,ur,nr,Lr,py)}var F1=_p.positionedLines.length===1;if(rl+=LQ(m,y,_p,ne,Fe,Lr,Vi,Yr,_a,U.vertical?uv.horizontal:uv.horizontalOnly,F1?Object.keys(U.horizontal):[dv],Ws,il,en,ra),F1)break}U.vertical&&(su+=LQ(m,y,U.vertical,ne,Fe,Lr,Vi,Yr,_a,uv.vertical,["vertical"],Ws,nl,en,ra));var q1=Pa?Pa.boxStartIndex:m.collisionBoxArray.length,O1=Pa?Pa.boxEndIndex:m.collisionBoxArray.length,$w=Na?Na.boxStartIndex:m.collisionBoxArray.length,y0=Na?Na.boxEndIndex:m.collisionBoxArray.length,JC=qo?qo.boxStartIndex:m.collisionBoxArray.length,fq=qo?qo.boxEndIndex:m.collisionBoxArray.length,$C=ja?ja.boxStartIndex:m.collisionBoxArray.length,hq=ja?ja.boxEndIndex:m.collisionBoxArray.length,jp=-1,Qw=function(SS,ZQ){return SS&&SS.circleDiameter?Math.max(SS.circleDiameter,ZQ):ZQ};jp=Qw(Pa,jp),jp=Qw(Na,jp),jp=Qw(qo,jp),jp=Qw(ja,jp);var QC=jp>-1?1:0;QC&&(jp*=$n/Zi),m.glyphOffsetArray.length>=ou.MAX_GLYPHS&&re("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Vi.sortKey!==void 0&&m.addToSortKeyRanges(m.symbolInstances.length,Vi.sortKey),m.symbolInstances.emplaceBack(y.x,y.y,Ws.right>=0?Ws.right:-1,Ws.center>=0?Ws.center:-1,Ws.left>=0?Ws.left:-1,Ws.vertical||-1,il,nl,Au,q1,O1,$w,y0,JC,fq,$C,hq,st,rl,su,us,zo,QC,0,ur,Ou,nf,jp)}function pQe(m,y,I,U){var J=m.compareText;if(!(y in J))J[y]=[];else for(var ne=J[y],fe=ne.length-1;fe>=0;fe--)if(U.dist(ne[fe])0)&&(fe.value.kind!=="constant"||fe.value.value.length>0),mt=Qe.value.kind!=="constant"||!!Qe.value.value||Object.keys(Qe.parameters).length>0,Xt=ne.get("symbol-sort-key");if(this.features=[],!(!st&&!mt)){for(var ur=I.iconDependencies,nr=I.glyphDependencies,Lr=I.availableImages,Yr=new pn(this.zoom),_i=0,si=y;_i=0;for(var su=0,il=Ba.sections;su=0;Qe--)fe[Qe]={x:I[Qe].x,y:I[Qe].y,tileUnitDistanceFromAnchor:ne},Qe>0&&(ne+=I[Qe-1].dist(I[Qe]));for(var st=0;st0},ou.prototype.hasIconData=function(){return this.icon.segments.get().length>0},ou.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},ou.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},ou.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},ou.prototype.addIndicesForPlacedSymbol=function(y,I){for(var U=y.placedSymbolArray.get(I),J=U.vertexStartIndex+U.numGlyphs*4,ne=U.vertexStartIndex;ne1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(y),this.sortedAngle=y,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var U=0,J=this.symbolInstanceIndexes;U=0&&st.indexOf(Fe)===Qe&&I.addIndicesForPlacedSymbol(I.text,Fe)}),fe.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,fe.verticalPlacedTextSymbolIndex),fe.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.placedIconSymbolIndex),fe.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Z("SymbolBucket",ou,{omit:["layers","collisionBoxArray","features","compareText"]}),ou.MAX_GLYPHS=65535,ou.addDynamicAttributes=oq;function _Qe(m,y){return y.replace(/{([^{}]+)}/g,function(I,U){return U in m?String(m[U]):""})}var xQe=new Oi({"symbol-placement":new At(on.layout_symbol["symbol-placement"]),"symbol-spacing":new At(on.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new At(on.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Er(on.layout_symbol["symbol-sort-key"]),"symbol-z-order":new At(on.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new At(on.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new At(on.layout_symbol["icon-ignore-placement"]),"icon-optional":new At(on.layout_symbol["icon-optional"]),"icon-rotation-alignment":new At(on.layout_symbol["icon-rotation-alignment"]),"icon-size":new Er(on.layout_symbol["icon-size"]),"icon-text-fit":new At(on.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new At(on.layout_symbol["icon-text-fit-padding"]),"icon-image":new Er(on.layout_symbol["icon-image"]),"icon-rotate":new Er(on.layout_symbol["icon-rotate"]),"icon-padding":new At(on.layout_symbol["icon-padding"]),"icon-keep-upright":new At(on.layout_symbol["icon-keep-upright"]),"icon-offset":new Er(on.layout_symbol["icon-offset"]),"icon-anchor":new Er(on.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new At(on.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new At(on.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new At(on.layout_symbol["text-rotation-alignment"]),"text-field":new Er(on.layout_symbol["text-field"]),"text-font":new Er(on.layout_symbol["text-font"]),"text-size":new Er(on.layout_symbol["text-size"]),"text-max-width":new Er(on.layout_symbol["text-max-width"]),"text-line-height":new At(on.layout_symbol["text-line-height"]),"text-letter-spacing":new Er(on.layout_symbol["text-letter-spacing"]),"text-justify":new Er(on.layout_symbol["text-justify"]),"text-radial-offset":new Er(on.layout_symbol["text-radial-offset"]),"text-variable-anchor":new At(on.layout_symbol["text-variable-anchor"]),"text-anchor":new Er(on.layout_symbol["text-anchor"]),"text-max-angle":new At(on.layout_symbol["text-max-angle"]),"text-writing-mode":new At(on.layout_symbol["text-writing-mode"]),"text-rotate":new Er(on.layout_symbol["text-rotate"]),"text-padding":new At(on.layout_symbol["text-padding"]),"text-keep-upright":new At(on.layout_symbol["text-keep-upright"]),"text-transform":new Er(on.layout_symbol["text-transform"]),"text-offset":new Er(on.layout_symbol["text-offset"]),"text-allow-overlap":new At(on.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new At(on.layout_symbol["text-ignore-placement"]),"text-optional":new At(on.layout_symbol["text-optional"])}),bQe=new Oi({"icon-opacity":new Er(on.paint_symbol["icon-opacity"]),"icon-color":new Er(on.paint_symbol["icon-color"]),"icon-halo-color":new Er(on.paint_symbol["icon-halo-color"]),"icon-halo-width":new Er(on.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Er(on.paint_symbol["icon-halo-blur"]),"icon-translate":new At(on.paint_symbol["icon-translate"]),"icon-translate-anchor":new At(on.paint_symbol["icon-translate-anchor"]),"text-opacity":new Er(on.paint_symbol["text-opacity"]),"text-color":new Er(on.paint_symbol["text-color"],{runtimeType:Tl,getOverride:function(m){return m.textColor},hasOverride:function(m){return!!m.textColor}}),"text-halo-color":new Er(on.paint_symbol["text-halo-color"]),"text-halo-width":new Er(on.paint_symbol["text-halo-width"]),"text-halo-blur":new Er(on.paint_symbol["text-halo-blur"]),"text-translate":new At(on.paint_symbol["text-translate"]),"text-translate-anchor":new At(on.paint_symbol["text-translate-anchor"])}),sq={paint:bQe,layout:xQe},Yw=function(y){this.type=y.property.overrides?y.property.overrides.runtimeType:Ec,this.defaultValue=y};Yw.prototype.evaluate=function(y){if(y.formattedSection){var I=this.defaultValue.property.overrides;if(I&&I.hasOverride(y.formattedSection))return I.getOverride(y.formattedSection)}return y.feature&&y.featureState?this.defaultValue.evaluate(y.feature,y.featureState):this.defaultValue.property.specification.default},Yw.prototype.eachChild=function(y){if(!this.defaultValue.isConstant()){var I=this.defaultValue.value;y(I._styleExpression.expression)}},Yw.prototype.outputDefined=function(){return!1},Yw.prototype.serialize=function(){return null},Z("FormatSectionOverride",Yw,{omit:["defaultValue"]});var wQe=function(m){function y(I){m.call(this,I,sq)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.recalculate=function(U,J){if(m.prototype.recalculate.call(this,U,J),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var ne=this.layout.get("text-writing-mode");if(ne){for(var fe=[],Fe=0,Qe=ne;Fe",targetMapId:J,sourceMapId:fe.mapId})}}},Kw.prototype.receive=function(y){var I=y.data,U=I.id;if(U&&!(I.targetMapId&&this.mapId!==I.targetMapId))if(I.type===""){delete this.tasks[U];var J=this.cancelCallbacks[U];delete this.cancelCallbacks[U],J&&J()}else ke()||I.mustQueue?(this.tasks[U]=I,this.taskQueue.push(U),this.invoker.trigger()):this.processTask(U,I)},Kw.prototype.process=function(){if(this.taskQueue.length){var y=this.taskQueue.shift(),I=this.tasks[y];delete this.tasks[y],this.taskQueue.length&&this.invoker.trigger(),I&&this.processTask(y,I)}},Kw.prototype.processTask=function(y,I){var U=this;if(I.type===""){var J=this.callbacks[y];delete this.callbacks[y],J&&(I.error?J(We(I.error)):J(null,We(I.data)))}else{var ne=!1,fe=Te(this.globalScope)?void 0:[],Fe=I.hasCallback?function(ur,nr){ne=!0,delete U.cancelCallbacks[y],U.target.postMessage({id:y,type:"",sourceMapId:U.mapId,error:ur?Ue(ur):null,data:Ue(nr,fe)},fe)}:function(ur){ne=!0},Qe=null,st=We(I.data);if(this.parent[I.type])Qe=this.parent[I.type](I.sourceMapId,st,Fe);else if(this.parent.getWorkerSource){var mt=I.type.split("."),Xt=this.parent.getWorkerSource(I.sourceMapId,mt[0],st.source);Qe=Xt[mt[1]](st,Fe)}else Fe(new Error("Could not find function "+I.type));!ne&&Qe&&Qe.cancel&&(this.cancelCallbacks[y]=Qe.cancel)}},Kw.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function RQe(m,y,I){y=Math.pow(2,I)-y-1;var U=FQ(m*256,y*256,I),J=FQ((m+1)*256,(y+1)*256,I);return U[0]+","+U[1]+","+J[0]+","+J[1]}function FQ(m,y,I){var U=2*Math.PI*6378137/256/Math.pow(2,I),J=m*U-2*Math.PI*6378137/2,ne=y*U-2*Math.PI*6378137/2;return[J,ne]}var jf=function(y,I){y&&(I?this.setSouthWest(y).setNorthEast(I):y.length===4?this.setSouthWest([y[0],y[1]]).setNorthEast([y[2],y[3]]):this.setSouthWest(y[0]).setNorthEast(y[1]))};jf.prototype.setNorthEast=function(y){return this._ne=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.setSouthWest=function(y){return this._sw=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.extend=function(y){var I=this._sw,U=this._ne,J,ne;if(y instanceof sc)J=y,ne=y;else if(y instanceof jf){if(J=y._sw,ne=y._ne,!J||!ne)return this}else{if(Array.isArray(y))if(y.length===4||y.every(Array.isArray)){var fe=y;return this.extend(jf.convert(fe))}else{var Fe=y;return this.extend(sc.convert(Fe))}return this}return!I&&!U?(this._sw=new sc(J.lng,J.lat),this._ne=new sc(ne.lng,ne.lat)):(I.lng=Math.min(J.lng,I.lng),I.lat=Math.min(J.lat,I.lat),U.lng=Math.max(ne.lng,U.lng),U.lat=Math.max(ne.lat,U.lat)),this},jf.prototype.getCenter=function(){return new sc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},jf.prototype.getSouthWest=function(){return this._sw},jf.prototype.getNorthEast=function(){return this._ne},jf.prototype.getNorthWest=function(){return new sc(this.getWest(),this.getNorth())},jf.prototype.getSouthEast=function(){return new sc(this.getEast(),this.getSouth())},jf.prototype.getWest=function(){return this._sw.lng},jf.prototype.getSouth=function(){return this._sw.lat},jf.prototype.getEast=function(){return this._ne.lng},jf.prototype.getNorth=function(){return this._ne.lat},jf.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},jf.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},jf.prototype.isEmpty=function(){return!(this._sw&&this._ne)},jf.prototype.contains=function(y){var I=sc.convert(y),U=I.lng,J=I.lat,ne=this._sw.lat<=J&&J<=this._ne.lat,fe=this._sw.lng<=U&&U<=this._ne.lng;return this._sw.lng>this._ne.lng&&(fe=this._sw.lng>=U&&U>=this._ne.lng),ne&&fe},jf.convert=function(y){return!y||y instanceof jf?y:new jf(y)};var qQ=63710088e-1,sc=function(y,I){if(isNaN(y)||isNaN(I))throw new Error("Invalid LngLat object: ("+y+", "+I+")");if(this.lng=+y,this.lat=+I,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};sc.prototype.wrap=function(){return new sc(E(this.lng,-180,180),this.lat)},sc.prototype.toArray=function(){return[this.lng,this.lat]},sc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},sc.prototype.distanceTo=function(y){var I=Math.PI/180,U=this.lat*I,J=y.lat*I,ne=Math.sin(U)*Math.sin(J)+Math.cos(U)*Math.cos(J)*Math.cos((y.lng-this.lng)*I),fe=qQ*Math.acos(Math.min(ne,1));return fe},sc.prototype.toBounds=function(y){y===void 0&&(y=0);var I=40075017,U=360*y/I,J=U/Math.cos(Math.PI/180*this.lat);return new jf(new sc(this.lng-J,this.lat-U),new sc(this.lng+J,this.lat+U))},sc.convert=function(y){if(y instanceof sc)return y;if(Array.isArray(y)&&(y.length===2||y.length===3))return new sc(Number(y[0]),Number(y[1]));if(!Array.isArray(y)&&typeof y=="object"&&y!==null)return new sc(Number("lng"in y?y.lng:y.lon),Number(y.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var OQ=2*Math.PI*qQ;function BQ(m){return OQ*Math.cos(m*Math.PI/180)}function NQ(m){return(180+m)/360}function UQ(m){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+m*Math.PI/360)))/360}function VQ(m,y){return m/BQ(y)}function DQe(m){return m*360-180}function uq(m){var y=180-m*360;return 360/Math.PI*Math.atan(Math.exp(y*Math.PI/180))-90}function zQe(m,y){return m*BQ(uq(y))}function FQe(m){return 1/Math.cos(m*Math.PI/180)}var nb=function(y,I,U){U===void 0&&(U=0),this.x=+y,this.y=+I,this.z=+U};nb.fromLngLat=function(y,I){I===void 0&&(I=0);var U=sc.convert(y);return new nb(NQ(U.lng),UQ(U.lat),VQ(I,U.lat))},nb.prototype.toLngLat=function(){return new sc(DQe(this.x),uq(this.y))},nb.prototype.toAltitude=function(){return zQe(this.z,this.y)},nb.prototype.meterInMercatorCoordinateUnits=function(){return 1/OQ*FQe(uq(this.y))};var ab=function(y,I,U){this.z=y,this.x=I,this.y=U,this.key=AS(0,y,y,I,U)};ab.prototype.equals=function(y){return this.z===y.z&&this.x===y.x&&this.y===y.y},ab.prototype.url=function(y,I){var U=RQe(this.x,this.y,this.z),J=qQe(this.z,this.x,this.y);return y[(this.x+this.y)%y.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(I==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",J).replace("{bbox-epsg-3857}",U)},ab.prototype.getTilePoint=function(y){var I=Math.pow(2,this.z);return new u((y.x*I-this.x)*rn,(y.y*I-this.y)*rn)},ab.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var HQ=function(y,I){this.wrap=y,this.canonical=I,this.key=AS(y,I.z,I.z,I.x,I.y)},Wf=function(y,I,U,J,ne){this.overscaledZ=y,this.wrap=I,this.canonical=new ab(U,+J,+ne),this.key=AS(I,y,U,J,ne)};Wf.prototype.equals=function(y){return this.overscaledZ===y.overscaledZ&&this.wrap===y.wrap&&this.canonical.equals(y.canonical)},Wf.prototype.scaledTo=function(y){var I=this.canonical.z-y;return y>this.canonical.z?new Wf(y,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Wf(y,this.wrap,y,this.canonical.x>>I,this.canonical.y>>I)},Wf.prototype.calculateScaledKey=function(y,I){var U=this.canonical.z-y;return y>this.canonical.z?AS(this.wrap*+I,y,this.canonical.z,this.canonical.x,this.canonical.y):AS(this.wrap*+I,y,y,this.canonical.x>>U,this.canonical.y>>U)},Wf.prototype.isChildOf=function(y){if(y.wrap!==this.wrap)return!1;var I=this.canonical.z-y.canonical.z;return y.overscaledZ===0||y.overscaledZ>I&&y.canonical.y===this.canonical.y>>I},Wf.prototype.children=function(y){if(this.overscaledZ>=y)return[new Wf(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var I=this.canonical.z+1,U=this.canonical.x*2,J=this.canonical.y*2;return[new Wf(I,this.wrap,I,U,J),new Wf(I,this.wrap,I,U+1,J),new Wf(I,this.wrap,I,U,J+1),new Wf(I,this.wrap,I,U+1,J+1)]},Wf.prototype.isLessThan=function(y){return this.wrapy.wrap?!1:this.overscaledZy.overscaledZ?!1:this.canonical.xy.canonical.x?!1:this.canonical.y0;ne--)J=1<=this.dim+1||I<-1||I>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(I+1)*this.stride+(y+1)},dy.prototype._unpackMapbox=function(y,I,U){return(y*256*256+I*256+U)/10-1e4},dy.prototype._unpackTerrarium=function(y,I,U){return y*256+I+U/256-32768},dy.prototype.getPixels=function(){return new lh({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},dy.prototype.backfillBorder=function(y,I,U){if(this.dim!==y.dim)throw new Error("dem dimension mismatch");var J=I*this.dim,ne=I*this.dim+this.dim,fe=U*this.dim,Fe=U*this.dim+this.dim;switch(I){case-1:J=ne-1;break;case 1:ne=J+1;break}switch(U){case-1:fe=Fe-1;break;case 1:Fe=fe+1;break}for(var Qe=-I*this.dim,st=-U*this.dim,mt=fe;mt=0&&Xt[3]>=0&&Qe.insert(Fe,Xt[0],Xt[1],Xt[2],Xt[3])}},vy.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new pg.VectorTile(new La(this.rawTileData)).layers,this.sourceLayerCoder=new YC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},vy.prototype.query=function(y,I,U,J){var ne=this;this.loadVTLayers();for(var fe=y.params||{},Fe=rn/y.tileSize/y.scale,Qe=be(fe.filter),st=y.queryGeometry,mt=y.queryPadding*Fe,Xt=jQ(st),ur=this.grid.query(Xt.minX-mt,Xt.minY-mt,Xt.maxX+mt,Xt.maxY+mt),nr=jQ(y.cameraQueryGeometry),Lr=this.grid3D.query(nr.minX-mt,nr.minY-mt,nr.maxX+mt,nr.maxY+mt,function(An,ra,$n,Ba){return pp(y.cameraQueryGeometry,An-mt,ra-mt,$n+mt,Ba+mt)}),Yr=0,_i=Lr;Yr<_i.length;Yr+=1){var si=_i[Yr];ur.push(si)}ur.sort(BQe);for(var Hi={},Ei,Vi=function(An){var ra=ur[An];if(ra!==Ei){Ei=ra;var $n=ne.featureIndexArray.get(ra),Ba=null;ne.loadMatchingFeature(Hi,$n.bucketIndex,$n.sourceLayerIndex,$n.featureIndex,Qe,fe.layers,fe.availableImages,I,U,J,function(_a,Pa,qo){return Ba||(Ba=da(_a)),Pa.queryIntersectsFeature(st,_a,qo,Ba,ne.z,y.transform,Fe,y.pixelPosMatrix)})}},en=0;enJ)ne=!1;else if(!I)ne=!0;else if(this.expirationTime=Ha.maxzoom)&&Ha.visibility!=="none"){h(Sn,this.zoom,Zt);var oo=Si[Ha.id]=Ha.createBucket({index:gi.bucketLayerIDs.length,layers:Sn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:ka,sourceID:this.source});oo.populate(jn,Mi,this.tileID.canonical),gi.bucketLayerIDs.push(Sn.map(function(hi){return hi.id}))}}}}var xn,_t,br,Hr,ti=i.mapObject(Mi.glyphDependencies,function(hi){return Object.keys(hi).map(Number)});Object.keys(ti).length?yr.send("getGlyphs",{uid:this.uid,stacks:ti},function(hi,Ji){xn||(xn=hi,_t=Ji,an.call(Zr))}):_t={};var zi=Object.keys(Mi.iconDependencies);zi.length?yr.send("getImages",{icons:zi,source:this.source,tileID:this.tileID,type:"icons"},function(hi,Ji){xn||(xn=hi,br=Ji,an.call(Zr))}):br={};var Yi=Object.keys(Mi.patternDependencies);Yi.length?yr.send("getImages",{icons:Yi,source:this.source,tileID:this.tileID,type:"patterns"},function(hi,Ji){xn||(xn=hi,Hr=Ji,an.call(Zr))}):Hr={},an.call(this);function an(){if(xn)return Fr(xn);if(_t&&br&&Hr){var hi=new c(_t),Ji=new i.ImageAtlas(br,Hr);for(var ua in Si){var Fn=Si[ua];Fn instanceof i.SymbolBucket?(h(Fn.layers,this.zoom,Zt),i.performSymbolLayout(Fn,_t,hi.positions,br,Ji.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):Fn.hasPattern&&(Fn instanceof i.LineBucket||Fn instanceof i.FillBucket||Fn instanceof i.FillExtrusionBucket)&&(h(Fn.layers,this.zoom,Zt),Fn.addFeatures(Mi,this.tileID.canonical,Ji.patternPositions))}this.status="done",Fr(null,{buckets:i.values(Si).filter(function(Sa){return!Sa.isEmpty()}),featureIndex:gi,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:hi.image,imageAtlas:Ji,glyphMap:this.returnDependencies?_t:null,iconMap:this.returnDependencies?br:null,glyphPositions:this.returnDependencies?hi.positions:null})}}};function h(It,ft,jt){for(var Zt=new i.EvaluationParameters(ft),yr=0,Fr=It;yr=0!=!!ft&&It.reverse()}var L=i.vectorTile.VectorTileFeature.prototype.toGeoJSON,_=function(ft){this._feature=ft,this.extent=i.EXTENT,this.type=ft.type,this.properties=ft.tags,"id"in ft&&!isNaN(ft.id)&&(this.id=parseInt(ft.id,10))};_.prototype.loadGeometry=function(){if(this._feature.type===1){for(var ft=[],jt=0,Zt=this._feature.geometry;jt>31}function ke(It,ft){for(var jt=It.loadGeometry(),Zt=It.type,yr=0,Fr=0,Zr=jt.length,Vr=0;Vr>1;Te(It,ft,Zr,Zt,yr,Fr%2),ie(It,ft,jt,Zt,Zr-1,Fr+1),ie(It,ft,jt,Zr+1,yr,Fr+1)}}function Te(It,ft,jt,Zt,yr,Fr){for(;yr>Zt;){if(yr-Zt>600){var Zr=yr-Zt+1,Vr=jt-Zt+1,gi=Math.log(Zr),Si=.5*Math.exp(2*gi/3),Mi=.5*Math.sqrt(gi*Si*(Zr-Si)/Zr)*(Vr-Zr/2<0?-1:1),Pi=Math.max(Zt,Math.floor(jt-Vr*Si/Zr+Mi)),Gi=Math.min(yr,Math.floor(jt+(Zr-Vr)*Si/Zr+Mi));Te(It,ft,jt,Pi,Gi,Fr)}var Ki=ft[2*jt+Fr],ka=Zt,jn=yr;for(Ee(It,ft,Zt,jt),ft[2*yr+Fr]>Ki&&Ee(It,ft,Zt,yr);kaKi;)jn--}ft[2*Zt+Fr]===Ki?Ee(It,ft,Zt,jn):(jn++,Ee(It,ft,jn,yr)),jn<=jt&&(Zt=jn+1),jt<=jn&&(yr=jn-1)}}function Ee(It,ft,jt,Zt){Ae(It,jt,Zt),Ae(ft,2*jt,2*Zt),Ae(ft,2*jt+1,2*Zt+1)}function Ae(It,ft,jt){var Zt=It[ft];It[ft]=It[jt],It[jt]=Zt}function ze(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[0,It.length-1,0],gi=[],Si,Mi;Vr.length;){var Pi=Vr.pop(),Gi=Vr.pop(),Ki=Vr.pop();if(Gi-Ki<=Zr){for(var ka=Ki;ka<=Gi;ka++)Si=ft[2*ka],Mi=ft[2*ka+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[ka]);continue}var jn=Math.floor((Ki+Gi)/2);Si=ft[2*jn],Mi=ft[2*jn+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[jn]);var la=(Pi+1)%2;(Pi===0?jt<=Si:Zt<=Mi)&&(Vr.push(Ki),Vr.push(jn-1),Vr.push(la)),(Pi===0?yr>=Si:Fr>=Mi)&&(Vr.push(jn+1),Vr.push(Gi),Vr.push(la))}return gi}function Ce(It,ft,jt,Zt,yr,Fr){for(var Zr=[0,It.length-1,0],Vr=[],gi=yr*yr;Zr.length;){var Si=Zr.pop(),Mi=Zr.pop(),Pi=Zr.pop();if(Mi-Pi<=Fr){for(var Gi=Pi;Gi<=Mi;Gi++)me(ft[2*Gi],ft[2*Gi+1],jt,Zt)<=gi&&Vr.push(It[Gi]);continue}var Ki=Math.floor((Pi+Mi)/2),ka=ft[2*Ki],jn=ft[2*Ki+1];me(ka,jn,jt,Zt)<=gi&&Vr.push(It[Ki]);var la=(Si+1)%2;(Si===0?jt-yr<=ka:Zt-yr<=jn)&&(Zr.push(Pi),Zr.push(Ki-1),Zr.push(la)),(Si===0?jt+yr>=ka:Zt+yr>=jn)&&(Zr.push(Ki+1),Zr.push(Mi),Zr.push(la))}return Vr}function me(It,ft,jt,Zt){var yr=It-jt,Fr=ft-Zt;return yr*yr+Fr*Fr}var Re=function(It){return It[0]},ce=function(It){return It[1]},Ge=function(ft,jt,Zt,yr,Fr){jt===void 0&&(jt=Re),Zt===void 0&&(Zt=ce),yr===void 0&&(yr=64),Fr===void 0&&(Fr=Float64Array),this.nodeSize=yr,this.points=ft;for(var Zr=ft.length<65536?Uint16Array:Uint32Array,Vr=this.ids=new Zr(ft.length),gi=this.coords=new Fr(ft.length*2),Si=0;Si=yr;Mi--){var Pi=+Date.now();gi=this._cluster(gi,Mi),this.trees[Mi]=new Ge(gi,Ke,xt,Zr,Float32Array),Zt&&console.log("z%d: %d clusters in %dms",Mi,gi.length,+Date.now()-Pi)}return Zt&&console.timeEnd("total time"),this},ct.prototype.getClusters=function(ft,jt){var Zt=((ft[0]+180)%360+360)%360-180,yr=Math.max(-90,Math.min(90,ft[1])),Fr=ft[2]===180?180:((ft[2]+180)%360+360)%360-180,Zr=Math.max(-90,Math.min(90,ft[3]));if(ft[2]-ft[0]>=360)Zt=-180,Fr=180;else if(Zt>Fr){var Vr=this.getClusters([Zt,yr,180,Zr],jt),gi=this.getClusters([-180,yr,Fr,Zr],jt);return Vr.concat(gi)}for(var Si=this.trees[this._limitZoom(jt)],Mi=Si.range(kt(Zt),Ct(Zr),kt(Fr),Ct(yr)),Pi=[],Gi=0,Ki=Mi;Gijt&&(jn+=jo.numPoints||1)}if(jn>=gi){for(var oa=Pi.x*ka,Sn=Pi.y*ka,Ha=Vr&&ka>1?this._map(Pi,!0):null,oo=(Mi<<5)+(jt+1)+this.points.length,xn=0,_t=Ki;xn<_t.length;xn+=1){var br=_t[xn],Hr=Gi.points[br];if(!(Hr.zoom<=jt)){Hr.zoom=jt;var ti=Hr.numPoints||1;oa+=Hr.x*ti,Sn+=Hr.y*ti,Hr.parentId=oo,Vr&&(Ha||(Ha=this._map(Pi,!0)),Vr(Ha,this._map(Hr)))}}Pi.parentId=oo,Zt.push(qt(oa/jn,Sn/jn,oo,jn,Ha))}else if(Zt.push(Pi),jn>1)for(var zi=0,Yi=Ki;zi>5},ct.prototype._getOriginZoom=function(ft){return(ft-this.points.length)%32},ct.prototype._map=function(ft,jt){if(ft.numPoints)return jt?er({},ft.properties):ft.properties;var Zt=this.points[ft.index].properties,yr=this.options.map(Zt);return jt&&yr===Zt?er({},yr):yr};function qt(It,ft,jt,Zt,yr){return{x:It,y:ft,zoom:1/0,id:jt,parentId:-1,numPoints:Zt,properties:yr}}function rt(It,ft){var jt=It.geometry.coordinates,Zt=jt[0],yr=jt[1];return{x:kt(Zt),y:Ct(yr),zoom:1/0,index:ft,parentId:-1}}function ot(It){return{type:"Feature",id:It.id,properties:Rt(It),geometry:{type:"Point",coordinates:[Yt(It.x),xr(It.y)]}}}function Rt(It){var ft=It.numPoints,jt=ft>=1e4?Math.round(ft/1e3)+"k":ft>=1e3?Math.round(ft/100)/10+"k":ft;return er(er({},It.properties),{cluster:!0,cluster_id:It.id,point_count:ft,point_count_abbreviated:jt})}function kt(It){return It/360+.5}function Ct(It){var ft=Math.sin(It*Math.PI/180),jt=.5-.25*Math.log((1+ft)/(1-ft))/Math.PI;return jt<0?0:jt>1?1:jt}function Yt(It){return(It-.5)*360}function xr(It){var ft=(180-It*360)*Math.PI/180;return 360*Math.atan(Math.exp(ft))/Math.PI-90}function er(It,ft){for(var jt in ft)It[jt]=ft[jt];return It}function Ke(It){return It.x}function xt(It){return It.y}function bt(It,ft,jt,Zt){for(var yr=Zt,Fr=jt-ft>>1,Zr=jt-ft,Vr,gi=It[ft],Si=It[ft+1],Mi=It[jt],Pi=It[jt+1],Gi=ft+3;Giyr)Vr=Gi,yr=Ki;else if(Ki===yr){var ka=Math.abs(Gi-Fr);kaZt&&(Vr-ft>3&&bt(It,ft,Vr,Zt),It[Vr+2]=yr,jt-Vr>3&&bt(It,Vr,jt,Zt))}function Lt(It,ft,jt,Zt,yr,Fr){var Zr=yr-jt,Vr=Fr-Zt;if(Zr!==0||Vr!==0){var gi=((It-jt)*Zr+(ft-Zt)*Vr)/(Zr*Zr+Vr*Vr);gi>1?(jt=yr,Zt=Fr):gi>0&&(jt+=Zr*gi,Zt+=Vr*gi)}return Zr=It-jt,Vr=ft-Zt,Zr*Zr+Vr*Vr}function St(It,ft,jt,Zt){var yr={id:typeof It=="undefined"?null:It,type:ft,geometry:jt,tags:Zt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Et(yr),yr}function Et(It){var ft=It.geometry,jt=It.type;if(jt==="Point"||jt==="MultiPoint"||jt==="LineString")dt(It,ft);else if(jt==="Polygon"||jt==="MultiLineString")for(var Zt=0;Zt0&&(Zt?Zr+=(yr*Si-gi*Fr)/2:Zr+=Math.sqrt(Math.pow(gi-yr,2)+Math.pow(Si-Fr,2))),yr=gi,Fr=Si}var Mi=ft.length-3;ft[2]=1,bt(ft,0,Mi,jt),ft[Mi+2]=1,ft.size=Math.abs(Zr),ft.start=0,ft.end=ft.size}function Br(It,ft,jt,Zt){for(var yr=0;yr1?1:jt}function ut(It,ft,jt,Zt,yr,Fr,Zr,Vr){if(jt/=ft,Zt/=ft,Fr>=jt&&Zr=Zt)return null;for(var gi=[],Si=0;Si=jt&&ka=Zt)continue;var jn=[];if(Gi==="Point"||Gi==="MultiPoint")Ne(Pi,jn,jt,Zt,yr);else if(Gi==="LineString")Ye(Pi,jn,jt,Zt,yr,!1,Vr.lineMetrics);else if(Gi==="MultiLineString")Xe(Pi,jn,jt,Zt,yr,!1);else if(Gi==="Polygon")Xe(Pi,jn,jt,Zt,yr,!0);else if(Gi==="MultiPolygon")for(var la=0;la=jt&&Zr<=Zt&&(ft.push(It[Fr]),ft.push(It[Fr+1]),ft.push(It[Fr+2]))}}function Ye(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=Ve(It),gi=yr===0?Le:xe,Si=It.start,Mi,Pi,Gi=0;Gijt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),Zr&&(Vr.start=Si+Mi*Pi)):Ra>Zt?jo=jt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),oa=!0),jo>Zt&&Ra<=Zt&&(Pi=gi(Vr,Ki,ka,la,Fa,Zt),oa=!0),!Fr&&oa&&(Zr&&(Vr.end=Si+Mi*Pi),ft.push(Vr),Vr=Ve(It)),Zr&&(Si+=Mi)}var Sn=It.length-3;Ki=It[Sn],ka=It[Sn+1],jn=It[Sn+2],Ra=yr===0?Ki:ka,Ra>=jt&&Ra<=Zt&&ht(Vr,Ki,ka,jn),Sn=Vr.length-3,Fr&&Sn>=3&&(Vr[Sn]!==Vr[0]||Vr[Sn+1]!==Vr[1])&&ht(Vr,Vr[0],Vr[1],Vr[2]),Vr.length&&ft.push(Vr)}function Ve(It){var ft=[];return ft.size=It.size,ft.start=It.start,ft.end=It.end,ft}function Xe(It,ft,jt,Zt,yr,Fr){for(var Zr=0;ZrZr.maxX&&(Zr.maxX=Mi),Pi>Zr.maxY&&(Zr.maxY=Pi)}return Zr}function ai(It,ft,jt,Zt){var yr=ft.geometry,Fr=ft.type,Zr=[];if(Fr==="Point"||Fr==="MultiPoint")for(var Vr=0;Vr0&&ft.size<(yr?Zr:Zt)){jt.numPoints+=ft.length/3;return}for(var Vr=[],gi=0;giZr)&&(jt.numSimplified++,Vr.push(ft[gi]),Vr.push(ft[gi+1])),jt.numPoints++;yr&&ri(Vr,Fr),It.push(Vr)}function ri(It,ft){for(var jt=0,Zt=0,yr=It.length,Fr=yr-2;Zt0===ft)for(Zt=0,yr=It.length;Zt24)throw new Error("maxZoom should be in the 0-24 range");if(ft.promoteId&&ft.generateId)throw new Error("promoteId and generateId cannot be used together.");var Zt=Ht(It,ft);this.tiles={},this.tileCoords=[],jt&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",ft.indexMaxZoom,ft.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Zt=Se(Zt,ft),Zt.length&&this.splitTile(Zt,0,0,0),jt&&(Zt.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}nn.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},nn.prototype.splitTile=function(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[It,ft,jt,Zt],gi=this.options,Si=gi.debug;Vr.length;){Zt=Vr.pop(),jt=Vr.pop(),ft=Vr.pop(),It=Vr.pop();var Mi=1<1&&console.time("creation"),Gi=this.tiles[Pi]=Qr(It,ft,jt,Zt,gi),this.tileCoords.push({z:ft,x:jt,y:Zt}),Si)){Si>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",ft,jt,Zt,Gi.numFeatures,Gi.numPoints,Gi.numSimplified),console.timeEnd("creation"));var Ki="z"+ft;this.stats[Ki]=(this.stats[Ki]||0)+1,this.total++}if(Gi.source=It,yr){if(ft===gi.maxZoom||ft===yr)continue;var ka=1<1&&console.time("clipping");var jn=.5*gi.buffer/gi.extent,la=.5-jn,Fa=.5+jn,Ra=1+jn,jo,oa,Sn,Ha,oo,xn;jo=oa=Sn=Ha=null,oo=ut(It,Mi,jt-jn,jt+Fa,0,Gi.minX,Gi.maxX,gi),xn=ut(It,Mi,jt+la,jt+Ra,0,Gi.minX,Gi.maxX,gi),It=null,oo&&(jo=ut(oo,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),oa=ut(oo,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),oo=null),xn&&(Sn=ut(xn,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),Ha=ut(xn,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),xn=null),Si>1&&console.timeEnd("clipping"),Vr.push(jo||[],ft+1,jt*2,Zt*2),Vr.push(oa||[],ft+1,jt*2,Zt*2+1),Vr.push(Sn||[],ft+1,jt*2+1,Zt*2),Vr.push(Ha||[],ft+1,jt*2+1,Zt*2+1)}}},nn.prototype.getTile=function(It,ft,jt){var Zt=this.options,yr=Zt.extent,Fr=Zt.debug;if(It<0||It>24)return null;var Zr=1<1&&console.log("drilling down to z%d-%d-%d",It,ft,jt);for(var gi=It,Si=ft,Mi=jt,Pi;!Pi&&gi>0;)gi--,Si=Math.floor(Si/2),Mi=Math.floor(Mi/2),Pi=this.tiles[Wi(gi,Si,Mi)];return!Pi||!Pi.source?null:(Fr>1&&console.log("found parent tile z%d-%d-%d",gi,Si,Mi),Fr>1&&console.time("drilling down"),this.splitTile(Pi.source,gi,Si,Mi,It,ft,jt),Fr>1&&console.timeEnd("drilling down"),this.tiles[Vr]?Vt(this.tiles[Vr],yr):null)};function Wi(It,ft,jt){return((1<=0?0:Y.button},o.remove=function(Y){Y.parentNode&&Y.parentNode.removeChild(Y)};function x(Y,z,K){var O,$,pe,de=i.browser.devicePixelRatio>1?"@2x":"",Ie=i.getJSON(z.transformRequest(z.normalizeSpriteURL(Y,de,".json"),i.ResourceType.SpriteJSON),function(Kt,ir){Ie=null,pe||(pe=Kt,O=ir,pt())}),$e=i.getImage(z.transformRequest(z.normalizeSpriteURL(Y,de,".png"),i.ResourceType.SpriteImage),function(Kt,ir){$e=null,pe||(pe=Kt,$=ir,pt())});function pt(){if(pe)K(pe);else if(O&&$){var Kt=i.browser.getImageData($),ir={};for(var Jt in O){var vt=O[Jt],Pt=vt.width,Wt=vt.height,rr=vt.x,dr=vt.y,pr=vt.sdf,kr=vt.pixelRatio,Ar=vt.stretchX,gr=vt.stretchY,Cr=vt.content,cr=new i.RGBAImage({width:Pt,height:Wt});i.RGBAImage.copy(Kt,cr,{x:rr,y:dr},{x:0,y:0},{width:Pt,height:Wt}),ir[Jt]={data:cr,pixelRatio:kr,sdf:pr,stretchX:Ar,stretchY:gr,content:Cr}}K(null,ir)}}return{cancel:function(){Ie&&(Ie.cancel(),Ie=null),$e&&($e.cancel(),$e=null)}}}function b(Y){var z=Y.userImage;if(z&&z.render){var K=z.render();if(K)return Y.data.replace(new Uint8Array(z.data.buffer)),!0}return!1}var p=1,E=function(Y){function z(){Y.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new i.RGBAImage({width:1,height:1}),this.dirty=!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.isLoaded=function(){return this.loaded},z.prototype.setLoaded=function(O){if(this.loaded!==O&&(this.loaded=O,O)){for(var $=0,pe=this.requestors;$=0?1.2:1))}C.prototype.draw=function(Y){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(Y,this.buffer,this.middle);for(var z=this.ctx.getImageData(0,0,this.size,this.size),K=new Uint8ClampedArray(this.size*this.size),O=0;O65535){Kt(new Error("glyphs > 65535 not supported"));return}if(vt.ranges[Wt]){Kt(null,{stack:ir,id:Jt,glyph:Pt});return}var rr=vt.requests[Wt];rr||(rr=vt.requests[Wt]=[],P.loadGlyphRange(ir,Wt,O.url,O.requestManager,function(dr,pr){if(pr){for(var kr in pr)O._doesCharSupportLocalGlyph(+kr)||(vt.glyphs[+kr]=pr[+kr]);vt.ranges[Wt]=!0}for(var Ar=0,gr=rr;Ar1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=void 0,Wt=pe/O*($+1);if(pt.isDash){var rr=$-Math.abs(Wt);Pt=Math.sqrt(vt*vt+rr*rr)}else Pt=$-Math.sqrt(vt*vt+Wt*Wt);this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addRegularDash=function(z){for(var K=z.length-1;K>=0;--K){var O=z[K],$=z[K+1];O.zeroLength?z.splice(K,1):$&&$.isDash===O.isDash&&($.left=O.left,z.splice(K,1))}var pe=z[0],de=z[z.length-1];pe.isDash===de.isDash&&(pe.left=de.left-this.width,de.right=pe.right+this.width);for(var Ie=this.width*this.nextRow,$e=0,pt=z[$e],Kt=0;Kt1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=pt.isDash?vt:-vt;this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addDash=function(z,K){var O=K?7:0,$=2*O+1;if(this.nextRow+$>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var pe=0,de=0;de=O.minX&&z.x=O.minY&&z.y0&&(Kt[new i.OverscaledTileID(O.overscaledZ,Ie,$.z,de,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,O.wrap,$.z,$.x,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,pt,$.z,$e,$.y-1).key]={backfilled:!1}),$.y+10&&(pe.resourceTiming=O._resourceTiming,O._resourceTiming=[]),O.fire(new i.Event("data",pe))})},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setData=function(O){var $=this;return this._data=O,this.fire(new i.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(pe){if(pe){$.fire(new i.ErrorEvent(pe));return}var de={dataType:"source",sourceDataType:"content"};$._collectResourceTiming&&$._resourceTiming&&$._resourceTiming.length>0&&(de.resourceTiming=$._resourceTiming,$._resourceTiming=[]),$.fire(new i.Event("data",de))}),this},z.prototype.getClusterExpansionZoom=function(O,$){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:O,source:this.id},$),this},z.prototype.getClusterChildren=function(O,$){return this.actor.send("geojson.getClusterChildren",{clusterId:O,source:this.id},$),this},z.prototype.getClusterLeaves=function(O,$,pe,de){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:O,limit:$,offset:pe},de),this},z.prototype._updateWorkerData=function(O){var $=this;this._loaded=!1;var pe=i.extend({},this.workerOptions),de=this._data;typeof de=="string"?(pe.request=this.map._requestManager.transformRequest(i.browser.resolveURL(de),i.ResourceType.Source),pe.request.collectResourceTiming=this._collectResourceTiming):pe.data=JSON.stringify(de),this.actor.send(this.type+".loadData",pe,function(Ie,$e){$._removed||$e&&$e.abandoned||($._loaded=!0,$e&&$e.resourceTiming&&$e.resourceTiming[$.id]&&($._resourceTiming=$e.resourceTiming[$.id].slice(0)),$.actor.send($.type+".coalesce",{source:pe.source},null),O(Ie))})},z.prototype.loaded=function(){return this._loaded},z.prototype.loadTile=function(O,$){var pe=this,de=O.actor?"reloadTile":"loadTile";O.actor=this.actor;var Ie={type:this.type,uid:O.uid,tileID:O.tileID,zoom:O.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:i.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};O.request=this.actor.send(de,Ie,function($e,pt){return delete O.request,O.unloadVectorData(),O.aborted?$(null):$e?$($e):(O.loadVectorData(pt,pe.map.painter,de==="reloadTile"),$(null))})},z.prototype.abortTile=function(O){O.request&&(O.request.cancel(),delete O.request),O.aborted=!0},z.prototype.unloadTile=function(O){O.unloadVectorData(),this.actor.send("removeTile",{uid:O.uid,type:this.type,source:this.id})},z.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},z.prototype.serialize=function(){return i.extend({},this._options,{type:this.type,data:this._data})},z.prototype.hasTransition=function(){return!1},z}(i.Evented),Me=i.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),ke=function(Y){function z(K,O,$,pe){Y.call(this),this.id=K,this.dispatcher=$,this.coordinates=O.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(pe),this.options=O}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(O,$){var pe=this;this._loaded=!1,this.fire(new i.Event("dataloading",{dataType:"source"})),this.url=this.options.url,i.getImage(this.map._requestManager.transformRequest(this.url,i.ResourceType.Image),function(de,Ie){pe._loaded=!0,de?pe.fire(new i.ErrorEvent(de)):Ie&&(pe.image=Ie,O&&(pe.coordinates=O),$&&$(),pe._finishLoading())})},z.prototype.loaded=function(){return this._loaded},z.prototype.updateImage=function(O){var $=this;return!this.image||!O.url?this:(this.options.url=O.url,this.load(O.coordinates,function(){$.texture=null}),this)},z.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"metadata"})))},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setCoordinates=function(O){var $=this;this.coordinates=O;var pe=O.map(i.MercatorCoordinate.fromLngLat);this.tileID=ge(pe),this.minzoom=this.maxzoom=this.tileID.z;var de=pe.map(function(Ie){return $.tileID.getTilePoint(Ie)._round()});return this._boundsArray=new i.StructArrayLayout4i8,this._boundsArray.emplaceBack(de[0].x,de[0].y,0,0),this._boundsArray.emplaceBack(de[1].x,de[1].y,i.EXTENT,0),this._boundsArray.emplaceBack(de[3].x,de[3].y,0,i.EXTENT),this._boundsArray.emplaceBack(de[2].x,de[2].y,i.EXTENT,i.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"content"})),this},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new i.Texture(O,this.image,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.loadTile=function(O,$){this.tileID&&this.tileID.equals(O.tileID.canonical)?(this.tiles[String(O.tileID.wrap)]=O,O.buckets={},$(null)):(O.state="errored",$(null))},z.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return!1},z}(i.Evented);function ge(Y){for(var z=1/0,K=1/0,O=-1/0,$=-1/0,pe=0,de=Y;pe$.end(0)?this.fire(new i.ErrorEvent(new i.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+$.start(0)+" and "+$.end(0)+"-second mark."))):this.video.currentTime=O}},z.prototype.getVideo=function(){return this.video},z.prototype.onAdd=function(O){this.map||(this.map=O,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE),$.texSubImage2D($.TEXTURE_2D,0,0,0,$.RGBA,$.UNSIGNED_BYTE,this.video)):(this.texture=new i.Texture(O,this.video,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this.video&&!this.video.paused},z}(ke),Te=function(Y){function z(K,O,$,pe){Y.call(this,K,O,$,pe),O.coordinates?(!Array.isArray(O.coordinates)||O.coordinates.length!==4||O.coordinates.some(function(de){return!Array.isArray(de)||de.length!==2||de.some(function(Ie){return typeof Ie!="number"})}))&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "coordinates"'))),O.animate&&typeof O.animate!="boolean"&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'optional "animate" property must be a boolean value'))),O.canvas?typeof O.canvas!="string"&&!(O.canvas instanceof i.window.HTMLCanvasElement)&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "canvas"'))),this.options=O,this.animate=O.animate!==void 0?O.animate:!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof i.window.HTMLCanvasElement?this.options.canvas:i.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new i.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},z.prototype.getCanvas=function(){return this.canvas},z.prototype.onAdd=function(O){this.map=O,this.load(),this.canvas&&this.animate&&this.play()},z.prototype.onRemove=function(){this.pause()},z.prototype.prepare=function(){var O=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,O=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,O=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var $=this.map.painter.context,pe=$.gl;this.boundsBuffer||(this.boundsBuffer=$.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(O||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.Texture($,this.canvas,pe.RGBA,{premultiply:!0});for(var de in this.tiles){var Ie=this.tiles[de];Ie.state!=="loaded"&&(Ie.state="loaded",Ie.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this._playing},z.prototype._hasInvalidDimensions=function(){for(var O=0,$=[this.canvas.width,this.canvas.height];O<$.length;O+=1){var pe=$[O];if(isNaN(pe)||pe<=0)return!0}return!1},z}(ke),Ee={vector:W,raster:re,"raster-dem":ae,geojson:_e,video:ie,image:ke,canvas:Te},Ae=function(Y,z,K,O){var $=new Ee[z.type](Y,z,K,O);if($.id!==Y)throw new Error("Expected Source id to be "+Y+" instead of "+$.id);return i.bindAll(["load","abort","unload","serialize","prepare"],$),$},ze=function(Y){return Ee[Y]},Ce=function(Y,z){Ee[Y]=z};function me(Y,z){var K=i.identity([]);return i.translate(K,K,[1,1,0]),i.scale(K,K,[Y.width*.5,Y.height*.5,1]),i.multiply(K,K,Y.calculatePosMatrix(z.toUnwrapped()))}function Re(Y,z,K){if(Y)for(var O=0,$=Y;O<$.length;O+=1){var pe=$[O],de=z[pe];if(de&&de.source===K&&de.type==="fill-extrusion")return!0}else for(var Ie in z){var $e=z[Ie];if($e.source===K&&$e.type==="fill-extrusion")return!0}return!1}function ce(Y,z,K,O,$,pe){var de=Re($&&$.layers,z,Y.id),Ie=pe.maxPitchScaleFactor(),$e=Y.tilesIn(O,Ie,de);$e.sort(ct);for(var pt=[],Kt=0,ir=$e;Ktthis.max){var Ie=this._getAndRemoveByKey(this.order[0]);Ie&&this.onRemove(Ie)}return this},rt.prototype.has=function(z){return z.wrapped().key in this.data},rt.prototype.getAndRemove=function(z){return this.has(z)?this._getAndRemoveByKey(z.wrapped().key):null},rt.prototype._getAndRemoveByKey=function(z){var K=this.data[z].shift();return K.timeout&&clearTimeout(K.timeout),this.data[z].length===0&&delete this.data[z],this.order.splice(this.order.indexOf(z),1),K.value},rt.prototype.getByKey=function(z){var K=this.data[z];return K?K[0].value:null},rt.prototype.get=function(z){if(!this.has(z))return null;var K=this.data[z.wrapped().key][0];return K.value},rt.prototype.remove=function(z,K){if(!this.has(z))return this;var O=z.wrapped().key,$=K===void 0?0:this.data[O].indexOf(K),pe=this.data[O][$];return this.data[O].splice($,1),pe.timeout&&clearTimeout(pe.timeout),this.data[O].length===0&&delete this.data[O],this.onRemove(pe.value),this.order.splice(this.order.indexOf(O),1),this},rt.prototype.setMaxSize=function(z){for(this.max=z;this.order.length>this.max;){var K=this._getAndRemoveByKey(this.order[0]);K&&this.onRemove(K)}return this},rt.prototype.filter=function(z){var K=[];for(var O in this.data)for(var $=0,pe=this.data[O];$1||(Math.abs(ir)>1&&(Math.abs(ir+vt)===1?ir+=vt:Math.abs(ir-vt)===1&&(ir-=vt)),!(!Kt.dem||!pt.dem)&&(pt.dem.backfillBorder(Kt.dem,ir,Jt),pt.neighboringTiles&&pt.neighboringTiles[Pt]&&(pt.neighboringTiles[Pt].backfilled=!0)))}},z.prototype.getTile=function(O){return this.getTileByID(O.key)},z.prototype.getTileByID=function(O){return this._tiles[O]},z.prototype._retainLoadedChildren=function(O,$,pe,de){for(var Ie in this._tiles){var $e=this._tiles[Ie];if(!(de[Ie]||!$e.hasData()||$e.tileID.overscaledZ<=$||$e.tileID.overscaledZ>pe)){for(var pt=$e.tileID;$e&&$e.tileID.overscaledZ>$+1;){var Kt=$e.tileID.scaledTo($e.tileID.overscaledZ-1);$e=this._tiles[Kt.key],$e&&$e.hasData()&&(pt=Kt)}for(var ir=pt;ir.overscaledZ>$;)if(ir=ir.scaledTo(ir.overscaledZ-1),O[ir.key]){de[pt.key]=pt;break}}}},z.prototype.findLoadedParent=function(O,$){if(O.key in this._loadedParentTiles){var pe=this._loadedParentTiles[O.key];return pe&&pe.tileID.overscaledZ>=$?pe:null}for(var de=O.overscaledZ-1;de>=$;de--){var Ie=O.scaledTo(de),$e=this._getLoadedTile(Ie);if($e)return $e}},z.prototype._getLoadedTile=function(O){var $=this._tiles[O.key];if($&&$.hasData())return $;var pe=this._cache.getByKey(O.wrapped().key);return pe},z.prototype.updateCacheSize=function(O){var $=Math.ceil(O.width/this._source.tileSize)+1,pe=Math.ceil(O.height/this._source.tileSize)+1,de=$*pe,Ie=5,$e=Math.floor(de*Ie),pt=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,$e):$e;this._cache.setMaxSize(pt)},z.prototype.handleWrapJump=function(O){var $=this._prevLng===void 0?O:this._prevLng,pe=O-$,de=pe/360,Ie=Math.round(de);if(this._prevLng=O,Ie){var $e={};for(var pt in this._tiles){var Kt=this._tiles[pt];Kt.tileID=Kt.tileID.unwrapTo(Kt.tileID.wrap+Ie),$e[Kt.tileID.key]=Kt}this._tiles=$e;for(var ir in this._timers)clearTimeout(this._timers[ir]),delete this._timers[ir];for(var Jt in this._tiles){var vt=this._tiles[Jt];this._setTileReloadTimer(Jt,vt)}}},z.prototype.update=function(O){var $=this;if(this.transform=O,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(O),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var pe;this.used?this._source.tileID?pe=O.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(yi){return new i.OverscaledTileID(yi.canonical.z,yi.wrap,yi.canonical.z,yi.canonical.x,yi.canonical.y)}):(pe=O.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(pe=pe.filter(function(yi){return $._source.hasTile(yi)}))):pe=[];var de=O.coveringZoomLevel(this._source),Ie=Math.max(de-z.maxOverzooming,this._source.minzoom),$e=Math.max(de+z.maxUnderzooming,this._source.minzoom),pt=this._updateRetainedTiles(pe,de);if(gi(this._source.type)){for(var Kt={},ir={},Jt=Object.keys(pt),vt=0,Pt=Jt;vtthis._source.maxzoom){var pr=rr.children(this._source.maxzoom)[0],kr=this.getTile(pr);if(kr&&kr.hasData()){pe[pr.key]=pr;continue}}else{var Ar=rr.children(this._source.maxzoom);if(pe[Ar[0].key]&&pe[Ar[1].key]&&pe[Ar[2].key]&&pe[Ar[3].key])continue}for(var gr=dr.wasRequested(),Cr=rr.overscaledZ-1;Cr>=Ie;--Cr){var cr=rr.scaledTo(Cr);if(de[cr.key]||(de[cr.key]=!0,dr=this.getTile(cr),!dr&&gr&&(dr=this._addTile(cr)),dr&&(pe[cr.key]=cr,gr=dr.wasRequested(),dr.hasData())))break}}}return pe},z.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var O in this._tiles){for(var $=[],pe=void 0,de=this._tiles[O].tileID;de.overscaledZ>0;){if(de.key in this._loadedParentTiles){pe=this._loadedParentTiles[de.key];break}$.push(de.key);var Ie=de.scaledTo(de.overscaledZ-1);if(pe=this._getLoadedTile(Ie),pe)break;de=Ie}for(var $e=0,pt=$;$e0)&&($.hasData()&&$.state!=="reloading"?this._cache.add($.tileID,$,$.getExpiryTimeout()):($.aborted=!0,this._abortTile($),this._unloadTile($))))},z.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var O in this._tiles)this._removeTile(O);this._cache.reset()},z.prototype.tilesIn=function(O,$,pe){var de=this,Ie=[],$e=this.transform;if(!$e)return Ie;for(var pt=pe?$e.getCameraQueryGeometry(O):O,Kt=O.map(function(Cr){return $e.pointCoordinate(Cr)}),ir=pt.map(function(Cr){return $e.pointCoordinate(Cr)}),Jt=this.getIds(),vt=1/0,Pt=1/0,Wt=-1/0,rr=-1/0,dr=0,pr=ir;dr=0&&tn[1].y+yi>=0){var Ri=Kt.map(function(Qn){return Gr.getTilePoint(Qn)}),ln=ir.map(function(Qn){return Gr.getTilePoint(Qn)});Ie.push({tile:cr,tileID:Gr,queryGeometry:Ri,cameraQueryGeometry:ln,scale:ei})}}},gr=0;gr=i.browser.now())return!0}return!1},z.prototype.setFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.updateState(O,$,pe)},z.prototype.removeFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.removeFeatureState(O,$,pe)},z.prototype.getFeatureState=function(O,$){return O=O||"_geojsonTileLayer",this._state.getState(O,$)},z.prototype.setDependencies=function(O,$,pe){var de=this._tiles[O];de&&de.setDependencies($,pe)},z.prototype.reloadTilesForDependencies=function(O,$){for(var pe in this._tiles){var de=this._tiles[pe];de.hasDependency(O,$)&&this._reloadTile(pe,"reloading")}this._cache.filter(function(Ie){return!Ie.hasDependency(O,$)})},z}(i.Evented);Zr.maxOverzooming=10,Zr.maxUnderzooming=3;function Vr(Y,z){var K=Math.abs(Y.wrap*2)-+(Y.wrap<0),O=Math.abs(z.wrap*2)-+(z.wrap<0);return Y.overscaledZ-z.overscaledZ||O-K||z.canonical.y-Y.canonical.y||z.canonical.x-Y.canonical.x}function gi(Y){return Y==="raster"||Y==="image"||Y==="video"}function Si(){return new i.window.Worker(ns.workerUrl)}var Mi="mapboxgl_preloaded_worker_pool",Pi=function(){this.active={}};Pi.prototype.acquire=function(z){if(!this.workers)for(this.workers=[];this.workers.length0?($-de)/Ie:0;return this.points[pe].mult(1-$e).add(this.points[K].mult($e))};var hi=function(z,K,O){var $=this.boxCells=[],pe=this.circleCells=[];this.xCellCount=Math.ceil(z/O),this.yCellCount=Math.ceil(K/O);for(var de=0;dethis.width||$<0||K>this.height)return pe?!1:[];var Ie=[];if(z<=0&&K<=0&&this.width<=O&&this.height<=$){if(pe)return!0;for(var $e=0;$e0:Ie}},hi.prototype._queryCircle=function(z,K,O,$,pe){var de=z-O,Ie=z+O,$e=K-O,pt=K+O;if(Ie<0||de>this.width||pt<0||$e>this.height)return $?!1:[];var Kt=[],ir={hitTest:$,circle:{x:z,y:K,radius:O},seenUids:{box:{},circle:{}}};return this._forEachCell(de,$e,Ie,pt,this._queryCellCircle,Kt,ir,pe),$?Kt.length>0:Kt},hi.prototype.query=function(z,K,O,$,pe){return this._query(z,K,O,$,!1,pe)},hi.prototype.hitTest=function(z,K,O,$,pe){return this._query(z,K,O,$,!0,pe)},hi.prototype.hitTestCircle=function(z,K,O,$){return this._queryCircle(z,K,O,!0,$)},hi.prototype._queryCell=function(z,K,O,$,pe,de,Ie,$e){var pt=Ie.seenUids,Kt=this.boxCells[pe];if(Kt!==null)for(var ir=this.bboxes,Jt=0,vt=Kt;Jt=ir[Wt+0]&&$>=ir[Wt+1]&&(!$e||$e(this.boxKeys[Pt]))){if(Ie.hitTest)return de.push(!0),!0;de.push({key:this.boxKeys[Pt],x1:ir[Wt],y1:ir[Wt+1],x2:ir[Wt+2],y2:ir[Wt+3]})}}}var rr=this.circleCells[pe];if(rr!==null)for(var dr=this.circles,pr=0,kr=rr;prIe*Ie+$e*$e},hi.prototype._circleAndRectCollide=function(z,K,O,$,pe,de,Ie){var $e=(de-$)/2,pt=Math.abs(z-($+$e));if(pt>$e+O)return!1;var Kt=(Ie-pe)/2,ir=Math.abs(K-(pe+Kt));if(ir>Kt+O)return!1;if(pt<=$e||ir<=Kt)return!0;var Jt=pt-$e,vt=ir-Kt;return Jt*Jt+vt*vt<=O*O};function Ji(Y,z,K,O,$){var pe=i.create();return z?(i.scale(pe,pe,[1/$,1/$,1]),K||i.rotateZ(pe,pe,O.angle)):i.multiply(pe,O.labelPlaneMatrix,Y),pe}function ua(Y,z,K,O,$){if(z){var pe=i.clone(Y);return i.scale(pe,pe,[$,$,1]),K||i.rotateZ(pe,pe,-O.angle),pe}else return O.glCoordMatrix}function Fn(Y,z){var K=[Y.x,Y.y,0,1];wl(K,K,z);var O=K[3];return{point:new i.Point(K[0]/O,K[1]/O),signedDistanceFromCamera:O}}function Sa(Y,z){return .5+.5*(Y/z)}function go(Y,z){var K=Y[0]/Y[3],O=Y[1]/Y[3],$=K>=-z[0]&&K<=z[0]&&O>=-z[1]&&O<=z[1];return $}function Oo(Y,z,K,O,$,pe,de,Ie){var $e=O?Y.textSizeData:Y.iconSizeData,pt=i.evaluateSizeForZoom($e,K.transform.zoom),Kt=[256/K.width*2+1,256/K.height*2+1],ir=O?Y.text.dynamicLayoutVertexArray:Y.icon.dynamicLayoutVertexArray;ir.clear();for(var Jt=Y.lineVertexArray,vt=O?Y.text.placedSymbolArray:Y.icon.placedSymbolArray,Pt=K.transform.width/K.transform.height,Wt=!1,rr=0;rrpe)return{useVertical:!0}}return(Y===i.WritingMode.vertical?z.yK.x)?{needsFlipping:!0}:null}function xo(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt,ir,Jt,vt){var Pt=z/24,Wt=Y.lineOffsetX*Pt,rr=Y.lineOffsetY*Pt,dr;if(Y.numGlyphs>1){var pr=Y.glyphStartIndex+Y.numGlyphs,kr=Y.lineStartIndex,Ar=Y.lineStartIndex+Y.lineLength,gr=ho(Pt,Ie,Wt,rr,K,Kt,ir,Y,$e,pe,Jt);if(!gr)return{notEnoughRoom:!0};var Cr=Fn(gr.first.point,de).point,cr=Fn(gr.last.point,de).point;if(O&&!K){var Gr=Mo(Y.writingMode,Cr,cr,vt);if(Gr)return Gr}dr=[gr.first];for(var ei=Y.glyphStartIndex+1;ei0?ln.point:zs(ir,Ri,yi,1,$),qn=Mo(Y.writingMode,yi,Qn,vt);if(qn)return qn}var rn=ks(Pt*Ie.getoffsetX(Y.glyphStartIndex),Wt,rr,K,Kt,ir,Y.segment,Y.lineStartIndex,Y.lineStartIndex+Y.lineLength,$e,pe,Jt);if(!rn)return{notEnoughRoom:!0};dr=[rn]}for(var bn=0,mn=dr;bn0?1:-1,Pt=0;O&&(vt*=-1,Pt=Math.PI),vt<0&&(Pt+=Math.PI);for(var Wt=vt>0?Ie+de:Ie+de+1,rr=$,dr=$,pr=0,kr=0,Ar=Math.abs(Jt),gr=[];pr+kr<=Ar;){if(Wt+=vt,Wt=$e)return null;if(dr=rr,gr.push(rr),rr=ir[Wt],rr===void 0){var Cr=new i.Point(pt.getx(Wt),pt.gety(Wt)),cr=Fn(Cr,Kt);if(cr.signedDistanceFromCamera>0)rr=ir[Wt]=cr.point;else{var Gr=Wt-vt,ei=pr===0?pe:new i.Point(pt.getx(Gr),pt.gety(Gr));rr=zs(ei,Cr,dr,Ar-pr+1,Kt)}}pr+=kr,kr=dr.dist(rr)}var yi=(Ar-pr)/kr,tn=rr.sub(dr),Ri=tn.mult(yi)._add(dr);Ri._add(tn._unit()._perp()._mult(K*vt));var ln=Pt+Math.atan2(rr.y-dr.y,rr.x-dr.x);return gr.push(Ri),{point:Ri,angle:ln,path:gr}}var Zs=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xs(Y,z){for(var K=0;K=1;Gn--)mn.push(rn.path[Gn]);for(var da=1;da0){for(var fo=mn[0].clone(),as=mn[0].clone(),tl=1;tl=ln.x&&as.x<=Qn.x&&fo.y>=ln.y&&as.y<=Qn.y?ps=[mn]:as.xQn.x||as.yQn.y?ps=[]:ps=i.clipLine([mn],ln.x,ln.y,Qn.x,Qn.y)}for(var zu=0,Mv=ps;zu=this.screenRightBoundary||$this.screenBottomBoundary},cl.prototype.isInsideGrid=function(z,K,O,$){return O>=0&&z=0&&K0){var Ar;return this.prevPlacement&&this.prevPlacement.variableOffsets[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID].text&&(Ar=this.prevPlacement.variableOffsets[Jt.crossTileID].anchor),this.variableOffsets[Jt.crossTileID]={textOffset:rr,width:O,height:$,anchor:z,textBoxScale:pe,prevAnchor:Ar},this.markUsedJustification(vt,z,Jt,Pt),vt.allowVerticalPlacement&&(this.markUsedOrientation(vt,Pt,Jt),this.placedOrientations[Jt.crossTileID]=Pt),{shift:dr,placedGlyphBoxes:pr}}},ms.prototype.placeLayerBucketPart=function(z,K,O){var $=this,pe=z.parameters,de=pe.bucket,Ie=pe.layout,$e=pe.posMatrix,pt=pe.textLabelPlaneMatrix,Kt=pe.labelToScreenMatrix,ir=pe.textPixelRatio,Jt=pe.holdingForFade,vt=pe.collisionBoxArray,Pt=pe.partiallyEvaluatedTextSize,Wt=pe.collisionGroup,rr=Ie.get("text-optional"),dr=Ie.get("icon-optional"),pr=Ie.get("text-allow-overlap"),kr=Ie.get("icon-allow-overlap"),Ar=Ie.get("text-rotation-alignment")==="map",gr=Ie.get("text-pitch-alignment")==="map",Cr=Ie.get("icon-text-fit")!=="none",cr=Ie.get("symbol-z-order")==="viewport-y",Gr=pr&&(kr||!de.hasIconData()||dr),ei=kr&&(pr||!de.hasTextData()||rr);!de.collisionArrays&&vt&&de.deserializeCollisionBoxes(vt);var yi=function(rn,bn){if(!K[rn.crossTileID]){if(Jt){$.placements[rn.crossTileID]=new Hs(!1,!1,!1);return}var mn=!1,Gn=!1,da=!0,No=null,Do={box:null,offscreen:null},ps={box:null,offscreen:null},fo=null,as=null,tl=null,zu=0,Mv=0,Ev=0;bn.textFeatureIndex?zu=bn.textFeatureIndex:rn.useRuntimeCollisionCircles&&(zu=rn.featureIndex),bn.verticalTextFeatureIndex&&(Mv=bn.verticalTextFeatureIndex);var yd=bn.textBox;if(yd){var Yv=function(Fu){var kl=i.WritingMode.horizontal;if(de.allowVerticalPlacement&&!Fu&&$.prevPlacement){var bd=$.prevPlacement.placedOrientations[rn.crossTileID];bd&&($.placedOrientations[rn.crossTileID]=bd,kl=bd,$.markUsedOrientation(de,kl,rn))}return kl},cg=function(Fu,kl){if(de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&bn.verticalTextBox)for(var bd=0,sy=de.writingModes;bd0&&(Nd=Nd.filter(function(Fu){return Fu!==xd.anchor}),Nd.unshift(xd.anchor))}var kv=function(Fu,kl,bd){for(var sy=Fu.x2-Fu.x1,A1=Fu.y2-Fu.y1,Kl=rn.textBoxScale,Nx=Cr&&!kr?kl:null,am={box:[],offscreen:!1},Mw=pr?Nd.length*2:Nd.length,Lv=0;Lv=Nd.length,Ux=$.attemptAnchorPlacement(om,Fu,sy,A1,Kl,Ar,gr,ir,$e,Wt,Ew,rn,de,bd,Nx);if(Ux&&(am=Ux.placedGlyphBoxes,am&&am.box&&am.box.length)){mn=!0,No=Ux.shift;break}}return am},Kv=function(){return kv(yd,bn.iconBox,i.WritingMode.horizontal)},Cv=function(){var Fu=bn.verticalTextBox,kl=Do&&Do.box&&Do.box.length;return de.allowVerticalPlacement&&!kl&&rn.numVerticalGlyphVertices>0&&Fu?kv(Fu,bn.verticalIconBox,i.WritingMode.vertical):{box:null,offscreen:null}};cg(Kv,Cv),Do&&(mn=Do.box,da=Do.offscreen);var ny=Yv(Do&&Do.box);if(!mn&&$.prevPlacement){var fg=$.prevPlacement.variableOffsets[rn.crossTileID];fg&&($.variableOffsets[rn.crossTileID]=fg,$.markUsedJustification(de,fg.anchor,rn,ny))}}else{var vp=function(Fu,kl){var bd=$.collisionIndex.placeCollisionBox(Fu,pr,ir,$e,Wt.predicate);return bd&&bd.box&&bd.box.length&&($.markUsedOrientation(de,kl,rn),$.placedOrientations[rn.crossTileID]=kl),bd},_d=function(){return vp(yd,i.WritingMode.horizontal)},pp=function(){var Fu=bn.verticalTextBox;return de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&Fu?vp(Fu,i.WritingMode.vertical):{box:null,offscreen:null}};cg(_d,pp),Yv(Do&&Do.box&&Do.box.length)}}if(fo=Do,mn=fo&&fo.box&&fo.box.length>0,da=fo&&fo.offscreen,rn.useRuntimeCollisionCircles){var Hf=de.text.placedSymbolArray.get(rn.centerJustifiedTextSymbolIndex),hg=i.evaluateSizeForFeature(de.textSizeData,Pt,Hf),ay=Ie.get("text-padding"),Rh=rn.collisionCircleDiameter;as=$.collisionIndex.placeCollisionCircles(pr,Hf,de.lineVertexArray,de.glyphOffsetArray,hg,$e,pt,Kt,O,gr,Wt.predicate,Rh,ay),mn=pr||as.circles.length>0&&!as.collisionDetected,da=da&&as.offscreen}if(bn.iconFeatureIndex&&(Ev=bn.iconFeatureIndex),bn.iconBox){var rm=function(Fu){var kl=Cr&&No?fc(Fu,No.x,No.y,Ar,gr,$.transform.angle):Fu;return $.collisionIndex.placeCollisionBox(kl,kr,ir,$e,Wt.predicate)};ps&&ps.box&&ps.box.length&&bn.verticalIconBox?(tl=rm(bn.verticalIconBox),Gn=tl.box.length>0):(tl=rm(bn.iconBox),Gn=tl.box.length>0),da=da&&tl.offscreen}var w1=rr||rn.numHorizontalGlyphVertices===0&&rn.numVerticalGlyphVertices===0,T1=dr||rn.numIconVertices===0;if(!w1&&!T1?Gn=mn=Gn&&mn:T1?w1||(Gn=Gn&&mn):mn=Gn&&mn,mn&&fo&&fo.box&&(ps&&ps.box&&Mv?$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,Mv,Wt.ID):$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID)),Gn&&tl&&$.collisionIndex.insertCollisionBox(tl.box,Ie.get("icon-ignore-placement"),de.bucketInstanceId,Ev,Wt.ID),as&&(mn&&$.collisionIndex.insertCollisionCircles(as.circles,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID),O)){var oy=de.bucketInstanceId,im=$.collisionCircleArrays[oy];im===void 0&&(im=$.collisionCircleArrays[oy]=new Eo);for(var nm=0;nm=0;--Ri){var ln=tn[Ri];yi(de.symbolInstances.get(ln),de.collisionArrays[ln])}else for(var Qn=z.symbolInstanceStart;Qn=0&&(de>=0&&Kt!==de?z.text.placedSymbolArray.get(Kt).crossTileID=0:z.text.placedSymbolArray.get(Kt).crossTileID=O.crossTileID)}},ms.prototype.markUsedOrientation=function(z,K,O){for(var $=K===i.WritingMode.horizontal||K===i.WritingMode.horizontalOnly?K:0,pe=K===i.WritingMode.vertical?K:0,de=[O.leftJustifiedTextSymbolIndex,O.centerJustifiedTextSymbolIndex,O.rightJustifiedTextSymbolIndex],Ie=0,$e=de;Ie<$e.length;Ie+=1){var pt=$e[Ie];z.text.placedSymbolArray.get(pt).placedOrientation=$}O.verticalPlacedTextSymbolIndex&&(z.text.placedSymbolArray.get(O.verticalPlacedTextSymbolIndex).placedOrientation=pe)},ms.prototype.commit=function(z){this.commitTime=z,this.zoomAtLastRecencyCheck=this.transform.zoom;var K=this.prevPlacement,O=!1;this.prevZoomAdjustment=K?K.zoomAdjustment(this.transform.zoom):0;var $=K?K.symbolFadeChange(z):1,pe=K?K.opacities:{},de=K?K.variableOffsets:{},Ie=K?K.placedOrientations:{};for(var $e in this.placements){var pt=this.placements[$e],Kt=pe[$e];Kt?(this.opacities[$e]=new Ys(Kt,$,pt.text,pt.icon),O=O||pt.text!==Kt.text.placed||pt.icon!==Kt.icon.placed):(this.opacities[$e]=new Ys(null,$,pt.text,pt.icon,pt.skipFade),O=O||pt.text||pt.icon)}for(var ir in pe){var Jt=pe[ir];if(!this.opacities[ir]){var vt=new Ys(Jt,$,!1,!1);vt.isHidden()||(this.opacities[ir]=vt,O=O||Jt.text.placed||Jt.icon.placed)}}for(var Pt in de)!this.variableOffsets[Pt]&&this.opacities[Pt]&&!this.opacities[Pt].isHidden()&&(this.variableOffsets[Pt]=de[Pt]);for(var Wt in Ie)!this.placedOrientations[Wt]&&this.opacities[Wt]&&!this.opacities[Wt].isHidden()&&(this.placedOrientations[Wt]=Ie[Wt]);O?this.lastPlacementChangeTime=z:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=K?K.lastPlacementChangeTime:z)},ms.prototype.updateLayerOpacities=function(z,K){for(var O={},$=0,pe=K;$0||gr>0,yi=kr.numIconVertices>0,tn=$.placedOrientations[kr.crossTileID],Ri=tn===i.WritingMode.vertical,ln=tn===i.WritingMode.horizontal||tn===i.WritingMode.horizontalOnly;if(ei){var Qn=Ec(Gr.text),qn=Ri?Zn:Qn;Pt(z.text,Ar,qn);var rn=ln?Zn:Qn;Pt(z.text,gr,rn);var bn=Gr.text.isHidden();[kr.rightJustifiedTextSymbolIndex,kr.centerJustifiedTextSymbolIndex,kr.leftJustifiedTextSymbolIndex].forEach(function(Ev){Ev>=0&&(z.text.placedSymbolArray.get(Ev).hidden=bn||Ri?1:0)}),kr.verticalPlacedTextSymbolIndex>=0&&(z.text.placedSymbolArray.get(kr.verticalPlacedTextSymbolIndex).hidden=bn||ln?1:0);var mn=$.variableOffsets[kr.crossTileID];mn&&$.markUsedJustification(z,mn.anchor,kr,tn);var Gn=$.placedOrientations[kr.crossTileID];Gn&&($.markUsedJustification(z,"left",kr,Gn),$.markUsedOrientation(z,Gn,kr))}if(yi){var da=Ec(Gr.icon),No=!(Jt&&kr.verticalPlacedIconSymbolIndex&&Ri);if(kr.placedIconSymbolIndex>=0){var Do=No?da:Zn;Pt(z.icon,kr.numIconVertices,Do),z.icon.placedSymbolArray.get(kr.placedIconSymbolIndex).hidden=Gr.icon.isHidden()}if(kr.verticalPlacedIconSymbolIndex>=0){var ps=No?Zn:da;Pt(z.icon,kr.numVerticalIconVertices,ps),z.icon.placedSymbolArray.get(kr.verticalPlacedIconSymbolIndex).hidden=Gr.icon.isHidden()}}if(z.hasIconCollisionBoxData()||z.hasTextCollisionBoxData()){var fo=z.collisionArrays[pr];if(fo){var as=new i.Point(0,0);if(fo.textBox||fo.verticalTextBox){var tl=!0;if(pt){var zu=$.variableOffsets[Cr];zu?(as=Hu(zu.anchor,zu.width,zu.height,zu.textOffset,zu.textBoxScale),Kt&&as._rotate(ir?$.transform.angle:-$.transform.angle)):tl=!1}fo.textBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||Ri,as.x,as.y),fo.verticalTextBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||ln,as.x,as.y)}var Mv=!!(!ln&&fo.verticalIconBox);fo.iconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,Mv,Jt?as.x:0,Jt?as.y:0),fo.verticalIconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,!Mv,Jt?as.x:0,Jt?as.y:0)}}},rr=0;rrz},ms.prototype.setStale=function(){this.stale=!0};function on(Y,z,K,O,$){Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0)}var fa=Math.pow(2,25),Qu=Math.pow(2,24),Rl=Math.pow(2,17),vo=Math.pow(2,16),Zl=Math.pow(2,9),Ks=Math.pow(2,8),Xl=Math.pow(2,1);function Ec(Y){if(Y.opacity===0&&!Y.placed)return 0;if(Y.opacity===1&&Y.placed)return 4294967295;var z=Y.placed?1:0,K=Math.floor(Y.opacity*127);return K*fa+z*Qu+K*Rl+z*vo+K*Zl+z*Ks+K*Xl+z}var Zn=0,ko=function(z){this._sortAcrossTiles=z.layout.get("symbol-z-order")!=="viewport-y"&&z.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};ko.prototype.continuePlacement=function(z,K,O,$,pe){for(var de=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var Ie=z[this._currentPlacementIndex],$e=K[Ie],pt=this.placement.collisionIndex.transform.zoom;if($e.type==="symbol"&&(!$e.minzoom||$e.minzoom<=pt)&&(!$e.maxzoom||$e.maxzoom>pt)){this._inProgressLayer||(this._inProgressLayer=new ko($e));var Kt=this._inProgressLayer.continuePlacement(O[$e.source],this.placement,this._showCollisionBoxes,$e,de);if(Kt)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Co.prototype.commit=function(z){return this.placement.commit(z),this.placement};var Tl=512/i.EXTENT/2,uf=function(z,K,O){this.tileID=z,this.indexedSymbolInstances={},this.bucketInstanceId=O;for(var $=0;$z.overscaledZ)for(var pt in $e){var Kt=$e[pt];Kt.tileID.isChildOf(z)&&Kt.findMatches(K.symbolInstances,z,de)}else{var ir=z.scaledTo(Number(Ie)),Jt=$e[ir.key];Jt&&Jt.findMatches(K.symbolInstances,z,de)}}for(var vt=0;vt0)throw new Error("Unimplemented: "+de.map(function(Ie){return Ie.command}).join(", ")+".");return pe.forEach(function(Ie){Ie.command!=="setTransition"&&$[Ie.command].apply($,Ie.args)}),this.stylesheet=O,!0},z.prototype.addImage=function(O,$){if(this.getImage(O))return this.fire(new i.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(O,$),this._afterImageUpdated(O)},z.prototype.updateImage=function(O,$){this.imageManager.updateImage(O,$)},z.prototype.getImage=function(O){return this.imageManager.getImage(O)},z.prototype.removeImage=function(O){if(!this.getImage(O))return this.fire(new i.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(O),this._afterImageUpdated(O)},z.prototype._afterImageUpdated=function(O){this._availableImages=this.imageManager.listImages(),this._changedImages[O]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new i.Event("data",{dataType:"style"}))},z.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},z.prototype.addSource=function(O,$,pe){var de=this;if(pe===void 0&&(pe={}),this._checkLoaded(),this.sourceCaches[O]!==void 0)throw new Error("There is already a source with this ID");if(!$.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys($).join(", ")+".");var Ie=["vector","raster","geojson","video","image"],$e=Ie.indexOf($.type)>=0;if(!($e&&this._validate(i.validateStyle.source,"sources."+O,$,null,pe))){this.map&&this.map._collectResourceTiming&&($.collectResourceTiming=!0);var pt=this.sourceCaches[O]=new Zr(O,$,this.dispatcher);pt.style=this,pt.setEventedParent(this,function(){return{isSourceLoaded:de.loaded(),source:pt.serialize(),sourceId:O}}),pt.onAdd(this.map),this._changed=!0}},z.prototype.removeSource=function(O){if(this._checkLoaded(),this.sourceCaches[O]===void 0)throw new Error("There is no source with this ID");for(var $ in this._layers)if(this._layers[$].source===O)return this.fire(new i.ErrorEvent(new Error('Source "'+O+'" cannot be removed while layer "'+$+'" is using it.')));var pe=this.sourceCaches[O];delete this.sourceCaches[O],delete this._updatedSources[O],pe.fire(new i.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:O})),pe.setEventedParent(null),pe.clearTiles(),pe.onRemove&&pe.onRemove(this.map),this._changed=!0},z.prototype.setGeoJSONSourceData=function(O,$){this._checkLoaded();var pe=this.sourceCaches[O].getSource();pe.setData($),this._changed=!0},z.prototype.getSource=function(O){return this.sourceCaches[O]&&this.sourceCaches[O].getSource()},z.prototype.addLayer=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=O.id;if(this.getLayer(de)){this.fire(new i.ErrorEvent(new Error('Layer with id "'+de+'" already exists on this map')));return}var Ie;if(O.type==="custom"){if(Al(this,i.validateCustomStyleLayer(O)))return;Ie=i.createStyleLayer(O)}else{if(typeof O.source=="object"&&(this.addSource(de,O.source),O=i.clone$1(O),O=i.extend(O,{source:de})),this._validate(i.validateStyle.layer,"layers."+de,O,{arrayIndex:-1},pe))return;Ie=i.createStyleLayer(O),this._validateLayer(Ie),Ie.setEventedParent(this,{layer:{id:de}}),this._serializedLayers[Ie.id]=Ie.serialize()}var $e=$?this._order.indexOf($):this._order.length;if($&&$e===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}if(this._order.splice($e,0,de),this._layerOrderChanged=!0,this._layers[de]=Ie,this._removedLayers[de]&&Ie.source&&Ie.type!=="custom"){var pt=this._removedLayers[de];delete this._removedLayers[de],pt.type!==Ie.type?this._updatedSources[Ie.source]="clear":(this._updatedSources[Ie.source]="reload",this.sourceCaches[Ie.source].pause())}this._updateLayer(Ie),Ie.onAdd&&Ie.onAdd(this.map)},z.prototype.moveLayer=function(O,$){this._checkLoaded(),this._changed=!0;var pe=this._layers[O];if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be moved.")));return}if(O!==$){var de=this._order.indexOf(O);this._order.splice(de,1);var Ie=$?this._order.indexOf($):this._order.length;if($&&Ie===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}this._order.splice(Ie,0,O),this._layerOrderChanged=!0}},z.prototype.removeLayer=function(O){this._checkLoaded();var $=this._layers[O];if(!$){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be removed.")));return}$.setEventedParent(null);var pe=this._order.indexOf(O);this._order.splice(pe,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[O]=$,delete this._layers[O],delete this._serializedLayers[O],delete this._updatedLayers[O],delete this._updatedPaintProps[O],$.onRemove&&$.onRemove(this.map)},z.prototype.getLayer=function(O){return this._layers[O]},z.prototype.hasLayer=function(O){return O in this._layers},z.prototype.setLayerZoomRange=function(O,$,pe){this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot have zoom extent.")));return}de.minzoom===$&&de.maxzoom===pe||($!=null&&(de.minzoom=$),pe!=null&&(de.maxzoom=pe),this._updateLayer(de))},z.prototype.setFilter=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be filtered.")));return}if(!i.deepEqual(de.filter,$)){if($==null){de.filter=void 0,this._updateLayer(de);return}this._validate(i.validateStyle.filter,"layers."+de.id+".filter",$,null,pe)||(de.filter=i.clone$1($),this._updateLayer(de))}},z.prototype.getFilter=function(O){return i.clone$1(this.getLayer(O).filter)},z.prototype.setLayoutProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}i.deepEqual(Ie.getLayoutProperty($),pe)||(Ie.setLayoutProperty($,pe,de),this._updateLayer(Ie))},z.prototype.getLayoutProperty=function(O,$){var pe=this.getLayer(O);if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style.")));return}return pe.getLayoutProperty($)},z.prototype.setPaintProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}if(!i.deepEqual(Ie.getPaintProperty($),pe)){var $e=Ie.setPaintProperty($,pe,de);$e&&this._updateLayer(Ie),this._changed=!0,this._updatedPaintProps[O]=!0}},z.prototype.getPaintProperty=function(O,$){return this.getLayer(O).getPaintProperty($)},z.prototype.setFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=O.sourceLayer,Ie=this.sourceCaches[pe];if(Ie===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var $e=Ie.getSource().type;if($e==="geojson"&&de){this.fire(new i.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if($e==="vector"&&!de){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),Ie.setFeatureState(de,O.id,$)},z.prototype.removeFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=this.sourceCaches[pe];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var Ie=de.getSource().type,$e=Ie==="vector"?O.sourceLayer:void 0;if(Ie==="vector"&&!$e){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if($&&typeof O.id!="string"&&typeof O.id!="number"){this.fire(new i.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}de.removeFeatureState($e,O.id,$)},z.prototype.getFeatureState=function(O){this._checkLoaded();var $=O.source,pe=O.sourceLayer,de=this.sourceCaches[$];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+$+"' does not exist in the map's style.")));return}var Ie=de.getSource().type;if(Ie==="vector"&&!pe){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),de.getFeatureState(pe,O.id)},z.prototype.getTransition=function(){return i.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},z.prototype.serialize=function(){return i.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:i.mapObject(this.sourceCaches,function(O){return O.serialize()}),layers:this._serializeLayers(this._order)},function(O){return O!==void 0})},z.prototype._updateLayer=function(O){this._updatedLayers[O.id]=!0,O.source&&!this._updatedSources[O.source]&&this.sourceCaches[O.source].getSource().type!=="raster"&&(this._updatedSources[O.source]="reload",this.sourceCaches[O.source].pause()),this._changed=!0},z.prototype._flattenAndSortRenderedFeatures=function(O){for(var $=this,pe=function(ln){return $._layers[ln].type==="fill-extrusion"},de={},Ie=[],$e=this._order.length-1;$e>=0;$e--){var pt=this._order[$e];if(pe(pt)){de[pt]=$e;for(var Kt=0,ir=O;Kt=0;pr--){var kr=this._order[pr];if(pe(kr))for(var Ar=Ie.length-1;Ar>=0;Ar--){var gr=Ie[Ar].feature;if(de[gr.layer.id] 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`,Ml=`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Yh=`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`,Eh=`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,nh="uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}",hf=`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,kh="uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}",Kh=`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,rc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,ah=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Wc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,df=`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Cu=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`,Nf=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Zc=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`,ds=`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Ch="uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}",Bd=`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Jh=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`,Cf=`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,pd=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`,Lu=`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,$h=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,tu=Is(Of,Gc),Pu=Is(vd,Bf),Lc=Is(ss,ff),fl=Is(ih,Vl),Xc=Is(Js,hc),ic=Is(Cc,ws),yu=Is($s,hs),Qs=Is(Ms,dc),Qh=Is(Sl,ec),gd=Is(Ps,ov),Gu=Is(wo,Od),Pc=Is($o,Ja),vc=Is(Ef,tc),sv=Is(uu,Mh),Lf=Is(jc,kf),Uf=Is(Ml,Yh),Iu=Is(Eh,nh),oh=Is(hf,kh),ru=Is(Kh,rc),vf=Is(ah,Wc),md=Is(df,Cu),sh=Is(Nf,Zc),Fs=Is(ds,Ch),_u=Is(Bd,Jh),xu=Is(Cf,pd),Lh=Is(Lu,$h);function Is(Y,z){var K=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,O=z.match(/attribute ([\w]+) ([\w]+)/g),$=Y.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),pe=z.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),de=pe?pe.concat($):$,Ie={};return Y=Y.replace(K,function($e,pt,Kt,ir,Jt){return Ie[Jt]=!0,pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +varying `+Kt+" "+ir+" "+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:` +#ifdef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`}),z=z.replace(K,function($e,pt,Kt,ir,Jt){var vt=ir==="float"?"vec2":"vec4",Pt=Jt.match(/color/)?"color":vt;return Ie[Jt]?pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +uniform lowp float u_`+Jt+`_t; +attribute `+Kt+" "+vt+" a_"+Jt+`; +varying `+Kt+" "+ir+" "+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:Pt==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Jt+" = a_"+Jt+`; +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Jt+" = unpack_mix_"+Pt+"(a_"+Jt+", u_"+Jt+`_t); +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +uniform lowp float u_`+Jt+`_t; +attribute `+Kt+" "+vt+" a_"+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:Pt==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = a_"+Jt+`; +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = unpack_mix_"+Pt+"(a_"+Jt+", u_"+Jt+`_t); +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`}),{fragmentSource:Y,vertexSource:z,staticAttributes:O,staticUniforms:de}}var Pf=Object.freeze({__proto__:null,prelude:tu,background:Pu,backgroundPattern:Lc,circle:fl,clippingMask:Xc,heatmap:ic,heatmapTexture:yu,collisionBox:Qs,collisionCircle:Qh,debug:gd,fill:Gu,fillOutline:Pc,fillOutlinePattern:vc,fillPattern:sv,fillExtrusion:Lf,fillExtrusionPattern:Uf,hillshadePrepare:Iu,hillshade:oh,line:ru,lineGradient:vf,linePattern:md,lineSDF:sh,raster:Fs,symbolIcon:_u,symbolSDF:xu,symbolTextAndIcon:Lh}),Ic=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Ic.prototype.bind=function(z,K,O,$,pe,de,Ie,$e){this.context=z;for(var pt=this.boundPaintVertexBuffers.length!==$.length,Kt=0;!pt&&Kt<$.length;Kt++)this.boundPaintVertexBuffers[Kt]!==$[Kt]&&(pt=!0);var ir=!this.vao||this.boundProgram!==K||this.boundLayoutVertexBuffer!==O||pt||this.boundIndexBuffer!==pe||this.boundVertexOffset!==de||this.boundDynamicVertexBuffer!==Ie||this.boundDynamicVertexBuffer2!==$e;!z.extVertexArrayObject||ir?this.freshBind(K,O,$,pe,de,Ie,$e):(z.bindVertexArrayOES.set(this.vao),Ie&&Ie.bind(),pe&&pe.dynamicDraw&&pe.bind(),$e&&$e.bind())},Ic.prototype.freshBind=function(z,K,O,$,pe,de,Ie){var $e,pt=z.numAttributes,Kt=this.context,ir=Kt.gl;if(Kt.extVertexArrayObject)this.vao&&this.destroy(),this.vao=Kt.extVertexArrayObject.createVertexArrayOES(),Kt.bindVertexArrayOES.set(this.vao),$e=0,this.boundProgram=z,this.boundLayoutVertexBuffer=K,this.boundPaintVertexBuffers=O,this.boundIndexBuffer=$,this.boundVertexOffset=pe,this.boundDynamicVertexBuffer=de,this.boundDynamicVertexBuffer2=Ie;else{$e=Kt.currentNumAttributes||0;for(var Jt=pt;Jt<$e;Jt++)ir.disableVertexAttribArray(Jt)}K.enableAttributes(ir,z);for(var vt=0,Pt=O;vt>16,Ie>>16],u_pixel_coord_lower:[de&65535,Ie&65535]}}function pf(Y,z,K,O){var $=K.imageManager.getPattern(Y.from.toString()),pe=K.imageManager.getPattern(Y.to.toString()),de=K.imageManager.getPixelSize(),Ie=de.width,$e=de.height,pt=Math.pow(2,O.tileID.overscaledZ),Kt=O.tileSize*Math.pow(2,K.transform.tileZoom)/pt,ir=Kt*(O.tileID.canonical.x+O.tileID.wrap*pt),Jt=Kt*O.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:$.tl,u_pattern_br_a:$.br,u_pattern_tl_b:pe.tl,u_pattern_br_b:pe.br,u_texsize:[Ie,$e],u_mix:z.t,u_pattern_size_a:$.displaySize,u_pattern_size_b:pe.displaySize,u_scale_a:z.fromScale,u_scale_b:z.toScale,u_tile_units_to_pixels:1/Cs(O,1,K.transform.tileZoom),u_pixel_coord_upper:[ir>>16,Jt>>16],u_pixel_coord_lower:[ir&65535,Jt&65535]}}var Ph=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Dl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_height_factor:new i.Uniform1f(Y,z.u_height_factor),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ih=function(Y,z,K,O){var $=z.style.light,pe=$.properties.get("position"),de=[pe.x,pe.y,pe.z],Ie=i.create$1();$.properties.get("anchor")==="viewport"&&i.fromRotation(Ie,-z.transform.angle),i.transformMat3(de,de,Ie);var $e=$.properties.get("color");return{u_matrix:Y,u_lightpos:de,u_lightintensity:$.properties.get("intensity"),u_lightcolor:[$e.r,$e.g,$e.b],u_vertical_gradient:+K,u_opacity:O}},Wu=function(Y,z,K,O,$,pe,de){return i.extend(Ih(Y,z,K,O),pc(pe,z,de),{u_height_factor:-Math.pow(2,$.overscaledZ)/de.tileSize/8})},Rc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},gc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},hl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world)}},iu=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mc=function(Y){return{u_matrix:Y}},Yc=function(Y,z,K,O){return i.extend(mc(Y),pc(K,z,O))},nc=function(Y,z){return{u_matrix:Y,u_world:z}},gf=function(Y,z,K,O,$){return i.extend(Yc(Y,z,K,O),{u_world:$})},gt=function(Y,z){return{u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_scale_with_map:new i.Uniform1i(Y,z.u_scale_with_map),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},Bt=function(Y,z,K,O){var $=Y.transform,pe,de;if(O.paint.get("circle-pitch-alignment")==="map"){var Ie=Cs(K,1,$.zoom);pe=!0,de=[Ie,Ie]}else pe=!1,de=$.pixelsToGLUnits;return{u_camera_to_center_distance:$.cameraToCenterDistance,u_scale_with_map:+(O.paint.get("circle-pitch-scale")==="map"),u_matrix:Y.translatePosMatrix(z.posMatrix,K,O.paint.get("circle-translate"),O.paint.get("circle-translate-anchor")),u_pitch_with_map:+pe,u_device_pixel_ratio:i.browser.devicePixelRatio,u_extrude_scale:de}},wr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pixels_to_tile_units:new i.Uniform1f(Y,z.u_pixels_to_tile_units),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_overscale_factor:new i.Uniform1f(Y,z.u_overscale_factor)}},vr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_inv_matrix:new i.UniformMatrix4f(Y,z.u_inv_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_viewport_size:new i.Uniform2f(Y,z.u_viewport_size)}},Ur=function(Y,z,K){var O=Cs(K,1,z.zoom),$=Math.pow(2,z.zoom-K.tileID.overscaledZ),pe=K.tileID.overscaleFactor();return{u_matrix:Y,u_camera_to_center_distance:z.cameraToCenterDistance,u_pixels_to_tile_units:O,u_extrude_scale:[z.pixelsToGLUnits[0]/(O*$),z.pixelsToGLUnits[1]/(O*$)],u_overscale_factor:pe}},fi=function(Y,z,K){return{u_matrix:Y,u_inv_matrix:z,u_camera_to_center_distance:K.cameraToCenterDistance,u_viewport_size:[K.width,K.height]}},xi=function(Y,z){return{u_color:new i.UniformColor(Y,z.u_color),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_overlay:new i.Uniform1i(Y,z.u_overlay),u_overlay_scale:new i.Uniform1f(Y,z.u_overlay_scale)}},Fi=function(Y,z,K){return K===void 0&&(K=1),{u_matrix:Y,u_color:z,u_overlay:0,u_overlay_scale:K}},Xi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},hn=function(Y){return{u_matrix:Y}},Ti=function(Y,z){return{u_extrude_scale:new i.Uniform1f(Y,z.u_extrude_scale),u_intensity:new i.Uniform1f(Y,z.u_intensity),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},qi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_color_ramp:new i.Uniform1i(Y,z.u_color_ramp),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ii=function(Y,z,K,O){return{u_matrix:Y,u_extrude_scale:Cs(z,1,K),u_intensity:O}},mi=function(Y,z,K,O){var $=i.create();i.ortho($,0,Y.width,Y.height,0,0,1);var pe=Y.context.gl;return{u_matrix:$,u_world:[pe.drawingBufferWidth,pe.drawingBufferHeight],u_image:K,u_color_ramp:O,u_opacity:z.paint.get("heatmap-opacity")}},Pn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_latrange:new i.Uniform2f(Y,z.u_latrange),u_light:new i.Uniform2f(Y,z.u_light),u_shadow:new i.UniformColor(Y,z.u_shadow),u_highlight:new i.UniformColor(Y,z.u_highlight),u_accent:new i.UniformColor(Y,z.u_accent)}},Ma=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_dimension:new i.Uniform2f(Y,z.u_dimension),u_zoom:new i.Uniform1f(Y,z.u_zoom),u_unpack:new i.Uniform4f(Y,z.u_unpack)}},Ta=function(Y,z,K){var O=K.paint.get("hillshade-shadow-color"),$=K.paint.get("hillshade-highlight-color"),pe=K.paint.get("hillshade-accent-color"),de=K.paint.get("hillshade-illumination-direction")*(Math.PI/180);K.paint.get("hillshade-illumination-anchor")==="viewport"&&(de-=Y.transform.angle);var Ie=!Y.options.moving;return{u_matrix:Y.transform.calculatePosMatrix(z.tileID.toUnwrapped(),Ie),u_image:0,u_latrange:qa(Y,z.tileID),u_light:[K.paint.get("hillshade-exaggeration"),de],u_shadow:O,u_highlight:$,u_accent:pe}},Ea=function(Y,z){var K=z.stride,O=i.create();return i.ortho(O,0,i.EXTENT,-i.EXTENT,0,0,1),i.translate(O,O,[0,-i.EXTENT,0]),{u_matrix:O,u_image:1,u_dimension:[K,K],u_zoom:Y.overscaledZ,u_unpack:z.getUnpackVector()}};function qa(Y,z){var K=Math.pow(2,z.canonical.z),O=z.canonical.y;return[new i.MercatorCoordinate(0,O/K).toLngLat().lat,new i.MercatorCoordinate(0,(O+1)/K).toLngLat().lat]}var Cn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels)}},sn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_image:new i.Uniform1i(Y,z.u_image),u_image_height:new i.Uniform1f(Y,z.u_image_height)}},Ua=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_image:new i.Uniform1i(Y,z.u_image),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mo=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_patternscale_a:new i.Uniform2f(Y,z.u_patternscale_a),u_patternscale_b:new i.Uniform2f(Y,z.u_patternscale_b),u_sdfgamma:new i.Uniform1f(Y,z.u_sdfgamma),u_image:new i.Uniform1i(Y,z.u_image),u_tex_y_a:new i.Uniform1f(Y,z.u_tex_y_a),u_tex_y_b:new i.Uniform1f(Y,z.u_tex_y_b),u_mix:new i.Uniform1f(Y,z.u_mix)}},Xo=function(Y,z,K){var O=Y.transform;return{u_matrix:yl(Y,z,K),u_ratio:1/Cs(z,1,O.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_units_to_pixels:[1/O.pixelsToGLUnits[0],1/O.pixelsToGLUnits[1]]}},Ts=function(Y,z,K,O){return i.extend(Xo(Y,z,K),{u_image:0,u_image_height:O})},Qo=function(Y,z,K,O){var $=Y.transform,pe=Bo(z,$);return{u_matrix:yl(Y,z,K),u_texsize:z.imageAtlasTexture.size,u_ratio:1/Cs(z,1,$.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_image:0,u_scale:[pe,O.fromScale,O.toScale],u_fade:O.t,u_units_to_pixels:[1/$.pixelsToGLUnits[0],1/$.pixelsToGLUnits[1]]}},ys=function(Y,z,K,O,$){var pe=Y.transform,de=Y.lineAtlas,Ie=Bo(z,pe),$e=K.layout.get("line-cap")==="round",pt=de.getDash(O.from,$e),Kt=de.getDash(O.to,$e),ir=pt.width*$.fromScale,Jt=Kt.width*$.toScale;return i.extend(Xo(Y,z,K),{u_patternscale_a:[Ie/ir,-pt.height/2],u_patternscale_b:[Ie/Jt,-Kt.height/2],u_sdfgamma:de.width/(Math.min(ir,Jt)*256*i.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:pt.y,u_tex_y_b:Kt.y,u_mix:$.t})};function Bo(Y,z){return 1/Cs(Y,1,z.tileZoom)}function yl(Y,z,K){return Y.translatePosMatrix(z.tileID.posMatrix,z,K.paint.get("line-translate"),K.paint.get("line-translate-anchor"))}var Gs=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_tl_parent:new i.Uniform2f(Y,z.u_tl_parent),u_scale_parent:new i.Uniform1f(Y,z.u_scale_parent),u_buffer_scale:new i.Uniform1f(Y,z.u_buffer_scale),u_fade_t:new i.Uniform1f(Y,z.u_fade_t),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image0:new i.Uniform1i(Y,z.u_image0),u_image1:new i.Uniform1i(Y,z.u_image1),u_brightness_low:new i.Uniform1f(Y,z.u_brightness_low),u_brightness_high:new i.Uniform1f(Y,z.u_brightness_high),u_saturation_factor:new i.Uniform1f(Y,z.u_saturation_factor),u_contrast_factor:new i.Uniform1f(Y,z.u_contrast_factor),u_spin_weights:new i.Uniform3f(Y,z.u_spin_weights)}},Rs=function(Y,z,K,O,$){return{u_matrix:Y,u_tl_parent:z,u_scale_parent:K,u_buffer_scale:1,u_fade_t:O.mix,u_opacity:O.opacity*$.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:$.paint.get("raster-brightness-min"),u_brightness_high:$.paint.get("raster-brightness-max"),u_saturation_factor:vs($.paint.get("raster-saturation")),u_contrast_factor:Ka($.paint.get("raster-contrast")),u_spin_weights:ia($.paint.get("raster-hue-rotate"))}};function ia(Y){Y*=Math.PI/180;var z=Math.sin(Y),K=Math.cos(Y);return[(2*K+1)/3,(-Math.sqrt(3)*z-K+1)/3,(Math.sqrt(3)*z-K+1)/3]}function Ka(Y){return Y>0?1/(1-Y):1+Y}function vs(Y){return Y>0?1-1/(1.001-Y):-Y}var Ko=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture)}},nu=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},Ru=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texsize_icon:new i.Uniform2f(Y,z.u_texsize_icon),u_texture:new i.Uniform1i(Y,z.u_texture),u_texture_icon:new i.Uniform1i(Y,z.u_texture_icon),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},ac=function(Y,z,K,O,$,pe,de,Ie,$e,pt){var Kt=$.transform;return{u_is_size_zoom_constant:+(Y==="constant"||Y==="source"),u_is_size_feature_constant:+(Y==="constant"||Y==="camera"),u_size_t:z?z.uSizeT:0,u_size:z?z.uSize:0,u_camera_to_center_distance:Kt.cameraToCenterDistance,u_pitch:Kt.pitch/360*2*Math.PI,u_rotate_symbol:+K,u_aspect_ratio:Kt.width/Kt.height,u_fade_change:$.options.fadeDuration?$.symbolFadeChange:1,u_matrix:pe,u_label_plane_matrix:de,u_coord_matrix:Ie,u_is_text:+$e,u_pitch_with_map:+O,u_texsize:pt,u_texture:0}},mf=function(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt){var ir=$.transform;return i.extend(ac(Y,z,K,O,$,pe,de,Ie,$e,pt),{u_gamma_scale:O?Math.cos(ir._pitch)*ir.cameraToCenterDistance:1,u_device_pixel_ratio:i.browser.devicePixelRatio,u_is_halo:+Kt})},bu=function(Y,z,K,O,$,pe,de,Ie,$e,pt){return i.extend(mf(Y,z,K,O,$,pe,de,Ie,!0,$e,!0),{u_texsize_icon:pt,u_texture_icon:1})},Kc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_color:new i.UniformColor(Y,z.u_color)}},Du=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image:new i.Uniform1i(Y,z.u_image),u_pattern_tl_a:new i.Uniform2f(Y,z.u_pattern_tl_a),u_pattern_br_a:new i.Uniform2f(Y,z.u_pattern_br_a),u_pattern_tl_b:new i.Uniform2f(Y,z.u_pattern_tl_b),u_pattern_br_b:new i.Uniform2f(Y,z.u_pattern_br_b),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_mix:new i.Uniform1f(Y,z.u_mix),u_pattern_size_a:new i.Uniform2f(Y,z.u_pattern_size_a),u_pattern_size_b:new i.Uniform2f(Y,z.u_pattern_size_b),u_scale_a:new i.Uniform1f(Y,z.u_scale_a),u_scale_b:new i.Uniform1f(Y,z.u_scale_b),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_tile_units_to_pixels:new i.Uniform1f(Y,z.u_tile_units_to_pixels)}},Dc=function(Y,z,K){return{u_matrix:Y,u_opacity:z,u_color:K}},Da=function(Y,z,K,O,$,pe){return i.extend(pf(O,pe,K,$),{u_matrix:Y,u_opacity:z})},eo={fillExtrusion:Ph,fillExtrusionPattern:Dl,fill:Rc,fillPattern:gc,fillOutline:hl,fillOutlinePattern:iu,circle:gt,collisionBox:wr,collisionCircle:vr,debug:xi,clippingMask:Xi,heatmap:Ti,heatmapTexture:qi,hillshade:Pn,hillshadePrepare:Ma,line:Cn,lineGradient:sn,linePattern:Ua,lineSDF:mo,raster:Gs,symbolIcon:Ko,symbolSDF:nu,symbolTextAndIcon:Ru,background:Kc,backgroundPattern:Du},Jc;function yc(Y,z,K,O,$,pe,de){for(var Ie=Y.context,$e=Ie.gl,pt=Y.useProgram("collisionBox"),Kt=[],ir=0,Jt=0,vt=0;vt0){var Ar=i.create(),gr=dr;i.mul(Ar,rr.placementInvProjMatrix,Y.transform.glCoordMatrix),i.mul(Ar,Ar,rr.placementViewportMatrix),Kt.push({circleArray:kr,circleOffset:Jt,transform:gr,invTransform:Ar}),ir+=kr.length/4,Jt=ir}pr&&pt.draw(Ie,$e.LINES,Wi.disabled,$i.disabled,Y.colorModeForRenderPass(),yr.disabled,Ur(dr,Y.transform,Wt),K.id,pr.layoutVertexBuffer,pr.indexBuffer,pr.segments,null,Y.transform.zoom,null,null,pr.collisionVertexBuffer)}}if(!(!de||!Kt.length)){var Cr=Y.useProgram("collisionCircle"),cr=new i.StructArrayLayout2f1f2i16;cr.resize(ir*4),cr._trim();for(var Gr=0,ei=0,yi=Kt;ei=0&&(Pt[rr.associatedIconIndex]={shiftedAnchor:ln,angle:Qn})}}if(Kt){vt.clear();for(var rn=Y.icon.placedSymbolArray,bn=0;bn0){var de=i.browser.now(),Ie=(de-Y.timeAdded)/pe,$e=z?(de-z.timeAdded)/pe:-1,pt=K.getSource(),Kt=$.coveringZoomLevel({tileSize:pt.tileSize,roundZoom:pt.roundZoom}),ir=!z||Math.abs(z.tileID.overscaledZ-Kt)>Math.abs(Y.tileID.overscaledZ-Kt),Jt=ir&&Y.refreshedUponExpiration?1:i.clamp(ir?Ie:1-$e,0,1);return Y.refreshedUponExpiration&&Ie>=1&&(Y.refreshedUponExpiration=!1),z?{opacity:1,mix:1-Jt}:{opacity:Jt,mix:0}}else return{opacity:1,mix:0}}function Ut(Y,z,K){var O=K.paint.get("background-color"),$=K.paint.get("background-opacity");if($!==0){var pe=Y.context,de=pe.gl,Ie=Y.transform,$e=Ie.tileSize,pt=K.paint.get("background-pattern");if(!Y.isPatternMissing(pt)){var Kt=!pt&&O.a===1&&$===1&&Y.opaquePassEnabledForLayer()?"opaque":"translucent";if(Y.renderPass===Kt){var ir=$i.disabled,Jt=Y.depthModeForSublayer(0,Kt==="opaque"?Wi.ReadWrite:Wi.ReadOnly),vt=Y.colorModeForRenderPass(),Pt=Y.useProgram(pt?"backgroundPattern":"background"),Wt=Ie.coveringTiles({tileSize:$e});pt&&(pe.activeTexture.set(de.TEXTURE0),Y.imageManager.bind(Y.context));for(var rr=K.getCrossfadeParameters(),dr=0,pr=Wt;dr "+K.overscaledZ);var dr=rr+" "+vt+"kb";Ga(Y,dr),de.draw(O,$.TRIANGLES,Ie,$e,ft.alphaBlended,yr.disabled,Fi(pe,i.Color.transparent,Wt),Kt,Y.debugBuffer,Y.quadTriangleIndexBuffer,Y.debugSegments)}function Ga(Y,z){Y.initDebugOverlayCanvas();var K=Y.debugOverlayCanvas,O=Y.context.gl,$=Y.debugOverlayCanvas.getContext("2d");$.clearRect(0,0,K.width,K.height),$.shadowColor="white",$.shadowBlur=2,$.lineWidth=1.5,$.strokeStyle="white",$.textBaseline="top",$.font="bold 36px Open Sans, sans-serif",$.fillText(z,5,5),$.strokeText(z,5,5),Y.debugOverlayTexture.update(K),Y.debugOverlayTexture.bind(O.LINEAR,O.CLAMP_TO_EDGE)}function To(Y,z,K){var O=Y.context,$=K.implementation;if(Y.renderPass==="offscreen"){var pe=$.prerender;pe&&(Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),pe.call($,O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState())}else if(Y.renderPass==="translucent"){Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),O.setStencilMode($i.disabled);var de=$.renderingMode==="3d"?new Wi(Y.context.gl.LEQUAL,Wi.ReadWrite,Y.depthRangeFor3D):Y.depthModeForSublayer(0,Wi.ReadOnly);O.setDepthMode(de),$.render(O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState(),O.bindFramebuffer.set(null)}}var Wa={symbol:w,circle:it,heatmap:yt,line:Sr,fill:he,"fill-extrusion":Pe,hillshade:Je,raster:Mt,background:Ut,debug:pa,custom:To},co=function(z,K){this.context=new Fr(z),this.transform=K,this._tileTextures={},this.setup(),this.numSublayers=Zr.maxUnderzooming+Zr.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new rh,this.gpuTimers={}};co.prototype.resize=function(z,K){if(this.width=z*i.browser.devicePixelRatio,this.height=K*i.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var O=0,$=this.style._order;O<$.length;O+=1){var pe=$[O];this.style._layers[pe].resize()}},co.prototype.setup=function(){var z=this.context,K=new i.StructArrayLayout2i4;K.emplaceBack(0,0),K.emplaceBack(i.EXTENT,0),K.emplaceBack(0,i.EXTENT),K.emplaceBack(i.EXTENT,i.EXTENT),this.tileExtentBuffer=z.createVertexBuffer(K,kc.members),this.tileExtentSegments=i.SegmentVector.simpleSegment(0,0,4,2);var O=new i.StructArrayLayout2i4;O.emplaceBack(0,0),O.emplaceBack(i.EXTENT,0),O.emplaceBack(0,i.EXTENT),O.emplaceBack(i.EXTENT,i.EXTENT),this.debugBuffer=z.createVertexBuffer(O,kc.members),this.debugSegments=i.SegmentVector.simpleSegment(0,0,4,5);var $=new i.StructArrayLayout4i8;$.emplaceBack(0,0,0,0),$.emplaceBack(i.EXTENT,0,i.EXTENT,0),$.emplaceBack(0,i.EXTENT,0,i.EXTENT),$.emplaceBack(i.EXTENT,i.EXTENT,i.EXTENT,i.EXTENT),this.rasterBoundsBuffer=z.createVertexBuffer($,Me.members),this.rasterBoundsSegments=i.SegmentVector.simpleSegment(0,0,4,2);var pe=new i.StructArrayLayout2i4;pe.emplaceBack(0,0),pe.emplaceBack(1,0),pe.emplaceBack(0,1),pe.emplaceBack(1,1),this.viewportBuffer=z.createVertexBuffer(pe,kc.members),this.viewportSegments=i.SegmentVector.simpleSegment(0,0,4,2);var de=new i.StructArrayLayout1ui2;de.emplaceBack(0),de.emplaceBack(1),de.emplaceBack(3),de.emplaceBack(2),de.emplaceBack(0),this.tileBorderIndexBuffer=z.createIndexBuffer(de);var Ie=new i.StructArrayLayout3ui6;Ie.emplaceBack(0,1,2),Ie.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=z.createIndexBuffer(Ie),this.emptyTexture=new i.Texture(z,{width:1,height:1,data:new Uint8Array([0,0,0,0])},z.gl.RGBA);var $e=this.context.gl;this.stencilClearMode=new $i({func:$e.ALWAYS,mask:0},0,255,$e.ZERO,$e.ZERO,$e.ZERO)},co.prototype.clearStencil=function(){var z=this.context,K=z.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var O=i.create();i.ortho(O,0,this.width,this.height,0,0,1),i.scale(O,O,[K.drawingBufferWidth,K.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(z,K.TRIANGLES,Wi.disabled,this.stencilClearMode,ft.disabled,yr.disabled,hn(O),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)},co.prototype._renderTileClippingMasks=function(z,K){if(!(this.currentStencilSource===z.source||!z.isTileClipped()||!K||!K.length)){this.currentStencilSource=z.source;var O=this.context,$=O.gl;this.nextStencilID+K.length>256&&this.clearStencil(),O.setColorMode(ft.disabled),O.setDepthMode(Wi.disabled);var pe=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var de=0,Ie=K;de256&&this.clearStencil();var z=this.nextStencilID++,K=this.context.gl;return new $i({func:K.NOTEQUAL,mask:255},z,255,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilModeForClipping=function(z){var K=this.context.gl;return new $i({func:K.EQUAL,mask:255},this._tileClippingMaskIDs[z.key],0,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilConfigForOverlap=function(z){var K,O=this.context.gl,$=z.sort(function(pt,Kt){return Kt.overscaledZ-pt.overscaledZ}),pe=$[$.length-1].overscaledZ,de=$[0].overscaledZ-pe+1;if(de>1){this.currentStencilSource=void 0,this.nextStencilID+de>256&&this.clearStencil();for(var Ie={},$e=0;$e=0;this.currentLayer--){var Ar=this.style._layers[$[this.currentLayer]],gr=pe[Ar.source],Cr=$e[Ar.source];this._renderTileClippingMasks(Ar,Cr),this.renderLayer(this,gr,Ar,Cr)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<$.length;this.currentLayer++){var cr=this.style._layers[$[this.currentLayer]],Gr=pe[cr.source],ei=(cr.type==="symbol"?Kt:pt)[cr.source];this._renderTileClippingMasks(cr,$e[cr.source]),this.renderLayer(this,Gr,cr,ei)}if(this.options.showTileBoundaries){var yi,tn,Ri=i.values(this.style._layers);Ri.forEach(function(ln){ln.source&&!ln.isHidden(O.transform.zoom)&&(ln.source!==(tn&&tn.id)&&(tn=O.style.sourceCaches[ln.source]),(!yi||yi.getSource().maxzoom0?K.pop():null},co.prototype.isPatternMissing=function(z){if(!z)return!1;if(!z.from||!z.to)return!0;var K=this.imageManager.getPattern(z.from.toString()),O=this.imageManager.getPattern(z.to.toString());return!K||!O},co.prototype.useProgram=function(z,K){this.cache=this.cache||{};var O=""+z+(K?K.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[O]||(this.cache[O]=new Vf(this.context,z,Pf[z],K,eo[z],this._showOverdrawInspector)),this.cache[O]},co.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},co.prototype.setBaseState=function(){var z=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(z.FUNC_ADD)},co.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=i.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var z=this.context.gl;this.debugOverlayTexture=new i.Texture(this.context,this.debugOverlayCanvas,z.RGBA)}},co.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var Ro=function(z,K){this.points=z,this.planes=K};Ro.fromInvProjectionMatrix=function(z,K,O){var $=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],pe=Math.pow(2,O),de=$.map(function(pt){return i.transformMat4([],pt,z)}).map(function(pt){return i.scale$1([],pt,1/pt[3]/K*pe)}),Ie=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],$e=Ie.map(function(pt){var Kt=i.sub([],de[pt[0]],de[pt[1]]),ir=i.sub([],de[pt[2]],de[pt[1]]),Jt=i.normalize([],i.cross([],Kt,ir)),vt=-i.dot(Jt,de[pt[1]]);return Jt.concat(vt)});return new Ro(de,$e)};var Ds=function(z,K){this.min=z,this.max=K,this.center=i.scale$2([],i.add([],this.min,this.max),.5)};Ds.prototype.quadrant=function(z){for(var K=[z%2===0,z<2],O=i.clone$2(this.min),$=i.clone$2(this.max),pe=0;pe=0;if(de===0)return 0;de!==K.length&&(O=!1)}if(O)return 2;for(var $e=0;$e<3;$e++){for(var pt=Number.MAX_VALUE,Kt=-Number.MAX_VALUE,ir=0;irthis.max[$e]-this.min[$e])return 0}return 1};var As=function(z,K,O,$){if(z===void 0&&(z=0),K===void 0&&(K=0),O===void 0&&(O=0),$===void 0&&($=0),isNaN(z)||z<0||isNaN(K)||K<0||isNaN(O)||O<0||isNaN($)||$<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=z,this.bottom=K,this.left=O,this.right=$};As.prototype.interpolate=function(z,K,O){return K.top!=null&&z.top!=null&&(this.top=i.number(z.top,K.top,O)),K.bottom!=null&&z.bottom!=null&&(this.bottom=i.number(z.bottom,K.bottom,O)),K.left!=null&&z.left!=null&&(this.left=i.number(z.left,K.left,O)),K.right!=null&&z.right!=null&&(this.right=i.number(z.right,K.right,O)),this},As.prototype.getCenter=function(z,K){var O=i.clamp((this.left+z-this.right)/2,0,z),$=i.clamp((this.top+K-this.bottom)/2,0,K);return new i.Point(O,$)},As.prototype.equals=function(z){return this.top===z.top&&this.bottom===z.bottom&&this.left===z.left&&this.right===z.right},As.prototype.clone=function(){return new As(this.top,this.bottom,this.left,this.right)},As.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var yo=function(z,K,O,$,pe){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=pe===void 0?!0:pe,this._minZoom=z||0,this._maxZoom=K||22,this._minPitch=O==null?0:O,this._maxPitch=$==null?60:$,this.setMaxBounds(),this.width=0,this.height=0,this._center=new i.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new As,this._posMatrixCache={},this._alignedPosMatrixCache={}},po={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};yo.prototype.clone=function(){var z=new yo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return z.tileSize=this.tileSize,z.latRange=this.latRange,z.width=this.width,z.height=this.height,z._center=this._center,z.zoom=this.zoom,z.angle=this.angle,z._fov=this._fov,z._pitch=this._pitch,z._unmodified=this._unmodified,z._edgeInsets=this._edgeInsets.clone(),z._calcMatrices(),z},po.minZoom.get=function(){return this._minZoom},po.minZoom.set=function(Y){this._minZoom!==Y&&(this._minZoom=Y,this.zoom=Math.max(this.zoom,Y))},po.maxZoom.get=function(){return this._maxZoom},po.maxZoom.set=function(Y){this._maxZoom!==Y&&(this._maxZoom=Y,this.zoom=Math.min(this.zoom,Y))},po.minPitch.get=function(){return this._minPitch},po.minPitch.set=function(Y){this._minPitch!==Y&&(this._minPitch=Y,this.pitch=Math.max(this.pitch,Y))},po.maxPitch.get=function(){return this._maxPitch},po.maxPitch.set=function(Y){this._maxPitch!==Y&&(this._maxPitch=Y,this.pitch=Math.min(this.pitch,Y))},po.renderWorldCopies.get=function(){return this._renderWorldCopies},po.renderWorldCopies.set=function(Y){Y===void 0?Y=!0:Y===null&&(Y=!1),this._renderWorldCopies=Y},po.worldSize.get=function(){return this.tileSize*this.scale},po.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},po.size.get=function(){return new i.Point(this.width,this.height)},po.bearing.get=function(){return-this.angle/Math.PI*180},po.bearing.set=function(Y){var z=-i.wrap(Y,-180,180)*Math.PI/180;this.angle!==z&&(this._unmodified=!1,this.angle=z,this._calcMatrices(),this.rotationMatrix=i.create$2(),i.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},po.pitch.get=function(){return this._pitch/Math.PI*180},po.pitch.set=function(Y){var z=i.clamp(Y,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==z&&(this._unmodified=!1,this._pitch=z,this._calcMatrices())},po.fov.get=function(){return this._fov/Math.PI*180},po.fov.set=function(Y){Y=Math.max(.01,Math.min(60,Y)),this._fov!==Y&&(this._unmodified=!1,this._fov=Y/180*Math.PI,this._calcMatrices())},po.zoom.get=function(){return this._zoom},po.zoom.set=function(Y){var z=Math.min(Math.max(Y,this.minZoom),this.maxZoom);this._zoom!==z&&(this._unmodified=!1,this._zoom=z,this.scale=this.zoomScale(z),this.tileZoom=Math.floor(z),this.zoomFraction=z-this.tileZoom,this._constrain(),this._calcMatrices())},po.center.get=function(){return this._center},po.center.set=function(Y){Y.lat===this._center.lat&&Y.lng===this._center.lng||(this._unmodified=!1,this._center=Y,this._constrain(),this._calcMatrices())},po.padding.get=function(){return this._edgeInsets.toJSON()},po.padding.set=function(Y){this._edgeInsets.equals(Y)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,Y,1),this._calcMatrices())},po.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},yo.prototype.isPaddingEqual=function(z){return this._edgeInsets.equals(z)},yo.prototype.interpolatePadding=function(z,K,O){this._unmodified=!1,this._edgeInsets.interpolate(z,K,O),this._constrain(),this._calcMatrices()},yo.prototype.coveringZoomLevel=function(z){var K=(z.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/z.tileSize));return Math.max(0,K)},yo.prototype.getVisibleUnwrappedCoordinates=function(z){var K=[new i.UnwrappedTileID(0,z)];if(this._renderWorldCopies)for(var O=this.pointCoordinate(new i.Point(0,0)),$=this.pointCoordinate(new i.Point(this.width,0)),pe=this.pointCoordinate(new i.Point(this.width,this.height)),de=this.pointCoordinate(new i.Point(0,this.height)),Ie=Math.floor(Math.min(O.x,$.x,pe.x,de.x)),$e=Math.floor(Math.max(O.x,$.x,pe.x,de.x)),pt=1,Kt=Ie-pt;Kt<=$e+pt;Kt++)Kt!==0&&K.push(new i.UnwrappedTileID(Kt,z));return K},yo.prototype.coveringTiles=function(z){var K=this.coveringZoomLevel(z),O=K;if(z.minzoom!==void 0&&Kz.maxzoom&&(K=z.maxzoom);var $=i.MercatorCoordinate.fromLngLat(this.center),pe=Math.pow(2,K),de=[pe*$.x,pe*$.y,0],Ie=Ro.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,K),$e=z.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&($e=K);var pt=3,Kt=function(Ri){return{aabb:new Ds([Ri*pe,0,0],[(Ri+1)*pe,pe,0]),zoom:0,x:0,y:0,wrap:Ri,fullyVisible:!1}},ir=[],Jt=[],vt=K,Pt=z.reparseOverscaled?O:K;if(this._renderWorldCopies)for(var Wt=1;Wt<=3;Wt++)ir.push(Kt(-Wt)),ir.push(Kt(Wt));for(ir.push(Kt(0));ir.length>0;){var rr=ir.pop(),dr=rr.x,pr=rr.y,kr=rr.fullyVisible;if(!kr){var Ar=rr.aabb.intersects(Ie);if(Ar===0)continue;kr=Ar===2}var gr=rr.aabb.distanceX(de),Cr=rr.aabb.distanceY(de),cr=Math.max(Math.abs(gr),Math.abs(Cr)),Gr=pt+(1<Gr&&rr.zoom>=$e){Jt.push({tileID:new i.OverscaledTileID(rr.zoom===vt?Pt:rr.zoom,rr.wrap,rr.zoom,dr,pr),distanceSq:i.sqrLen([de[0]-.5-dr,de[1]-.5-pr])});continue}for(var ei=0;ei<4;ei++){var yi=(dr<<1)+ei%2,tn=(pr<<1)+(ei>>1);ir.push({aabb:rr.aabb.quadrant(ei),zoom:rr.zoom+1,x:yi,y:tn,wrap:rr.wrap,fullyVisible:kr})}}return Jt.sort(function(Ri,ln){return Ri.distanceSq-ln.distanceSq}).map(function(Ri){return Ri.tileID})},yo.prototype.resize=function(z,K){this.width=z,this.height=K,this.pixelsToGLUnits=[2/z,-2/K],this._constrain(),this._calcMatrices()},po.unmodified.get=function(){return this._unmodified},yo.prototype.zoomScale=function(z){return Math.pow(2,z)},yo.prototype.scaleZoom=function(z){return Math.log(z)/Math.LN2},yo.prototype.project=function(z){var K=i.clamp(z.lat,-this.maxValidLatitude,this.maxValidLatitude);return new i.Point(i.mercatorXfromLng(z.lng)*this.worldSize,i.mercatorYfromLat(K)*this.worldSize)},yo.prototype.unproject=function(z){return new i.MercatorCoordinate(z.x/this.worldSize,z.y/this.worldSize).toLngLat()},po.point.get=function(){return this.project(this.center)},yo.prototype.setLocationAtPoint=function(z,K){var O=this.pointCoordinate(K),$=this.pointCoordinate(this.centerPoint),pe=this.locationCoordinate(z),de=new i.MercatorCoordinate(pe.x-(O.x-$.x),pe.y-(O.y-$.y));this.center=this.coordinateLocation(de),this._renderWorldCopies&&(this.center=this.center.wrap())},yo.prototype.locationPoint=function(z){return this.coordinatePoint(this.locationCoordinate(z))},yo.prototype.pointLocation=function(z){return this.coordinateLocation(this.pointCoordinate(z))},yo.prototype.locationCoordinate=function(z){return i.MercatorCoordinate.fromLngLat(z)},yo.prototype.coordinateLocation=function(z){return z.toLngLat()},yo.prototype.pointCoordinate=function(z){var K=0,O=[z.x,z.y,0,1],$=[z.x,z.y,1,1];i.transformMat4(O,O,this.pixelMatrixInverse),i.transformMat4($,$,this.pixelMatrixInverse);var pe=O[3],de=$[3],Ie=O[0]/pe,$e=$[0]/de,pt=O[1]/pe,Kt=$[1]/de,ir=O[2]/pe,Jt=$[2]/de,vt=ir===Jt?0:(K-ir)/(Jt-ir);return new i.MercatorCoordinate(i.number(Ie,$e,vt)/this.worldSize,i.number(pt,Kt,vt)/this.worldSize)},yo.prototype.coordinatePoint=function(z){var K=[z.x*this.worldSize,z.y*this.worldSize,0,1];return i.transformMat4(K,K,this.pixelMatrix),new i.Point(K[0]/K[3],K[1]/K[3])},yo.prototype.getBounds=function(){return new i.LngLatBounds().extend(this.pointLocation(new i.Point(0,0))).extend(this.pointLocation(new i.Point(this.width,0))).extend(this.pointLocation(new i.Point(this.width,this.height))).extend(this.pointLocation(new i.Point(0,this.height)))},yo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new i.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},yo.prototype.setMaxBounds=function(z){z?(this.lngRange=[z.getWest(),z.getEast()],this.latRange=[z.getSouth(),z.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},yo.prototype.calculatePosMatrix=function(z,K){K===void 0&&(K=!1);var O=z.key,$=K?this._alignedPosMatrixCache:this._posMatrixCache;if($[O])return $[O];var pe=z.canonical,de=this.worldSize/this.zoomScale(pe.z),Ie=pe.x+Math.pow(2,pe.z)*z.wrap,$e=i.identity(new Float64Array(16));return i.translate($e,$e,[Ie*de,pe.y*de,0]),i.scale($e,$e,[de/i.EXTENT,de/i.EXTENT,1]),i.multiply($e,K?this.alignedProjMatrix:this.projMatrix,$e),$[O]=new Float32Array($e),$[O]},yo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},yo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var z=-90,K=90,O=-180,$=180,pe,de,Ie,$e,pt=this.size,Kt=this._unmodified;if(this.latRange){var ir=this.latRange;z=i.mercatorYfromLat(ir[1])*this.worldSize,K=i.mercatorYfromLat(ir[0])*this.worldSize,pe=K-zK&&($e=K-rr)}if(this.lngRange){var dr=vt.x,pr=pt.x/2;dr-pr$&&(Ie=$-pr)}(Ie!==void 0||$e!==void 0)&&(this.center=this.unproject(new i.Point(Ie!==void 0?Ie:vt.x,$e!==void 0?$e:vt.y))),this._unmodified=Kt,this._constraining=!1}},yo.prototype._calcMatrices=function(){if(this.height){var z=this._fov/2,K=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(z)*this.height;var O=Math.PI/2+this._pitch,$=this._fov*(.5+K.y/this.height),pe=Math.sin($)*this.cameraToCenterDistance/Math.sin(i.clamp(Math.PI-O-$,.01,Math.PI-.01)),de=this.point,Ie=de.x,$e=de.y,pt=Math.cos(Math.PI/2-this._pitch)*pe+this.cameraToCenterDistance,Kt=pt*1.01,ir=this.height/50,Jt=new Float64Array(16);i.perspective(Jt,this._fov,this.width/this.height,ir,Kt),Jt[8]=-K.x*2/this.width,Jt[9]=K.y*2/this.height,i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[0,0,-this.cameraToCenterDistance]),i.rotateX(Jt,Jt,this._pitch),i.rotateZ(Jt,Jt,this.angle),i.translate(Jt,Jt,[-Ie,-$e,0]),this.mercatorMatrix=i.scale([],Jt,[this.worldSize,this.worldSize,this.worldSize]),i.scale(Jt,Jt,[1,1,i.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=Jt,this.invProjMatrix=i.invert([],this.projMatrix);var vt=this.width%2/2,Pt=this.height%2/2,Wt=Math.cos(this.angle),rr=Math.sin(this.angle),dr=Ie-Math.round(Ie)+Wt*vt+rr*Pt,pr=$e-Math.round($e)+Wt*Pt+rr*vt,kr=new Float64Array(Jt);if(i.translate(kr,kr,[dr>.5?dr-1:dr,pr>.5?pr-1:pr,0]),this.alignedProjMatrix=kr,Jt=i.create(),i.scale(Jt,Jt,[this.width/2,-this.height/2,1]),i.translate(Jt,Jt,[1,-1,0]),this.labelPlaneMatrix=Jt,Jt=i.create(),i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[-1,-1,0]),i.scale(Jt,Jt,[2/this.width,2/this.height,1]),this.glCoordMatrix=Jt,this.pixelMatrix=i.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),Jt=i.invert(new Float64Array(16),this.pixelMatrix),!Jt)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Jt,this._posMatrixCache={},this._alignedPosMatrixCache={}}},yo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var z=this.pointCoordinate(new i.Point(0,0)),K=[z.x*this.worldSize,z.y*this.worldSize,0,1],O=i.transformMat4(K,K,this.pixelMatrix);return O[3]/this.cameraToCenterDistance},yo.prototype.getCameraPoint=function(){var z=this._pitch,K=Math.tan(z)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.Point(0,K))},yo.prototype.getCameraQueryGeometry=function(z){var K=this.getCameraPoint();if(z.length===1)return[z[0],K];for(var O=K.x,$=K.y,pe=K.x,de=K.y,Ie=0,$e=z;Ie<$e.length;Ie+=1){var pt=$e[Ie];O=Math.min(O,pt.x),$=Math.min($,pt.y),pe=Math.max(pe,pt.x),de=Math.max(de,pt.y)}return[new i.Point(O,$),new i.Point(pe,$),new i.Point(pe,de),new i.Point(O,de),new i.Point(O,$)]},Object.defineProperties(yo.prototype,po);function _l(Y,z){var K=!1,O=null,$=function(){O=null,K&&(Y(),O=setTimeout($,z),K=!1)};return function(){return K=!0,O||$(),O}}var Hl=function(z){this._hashName=z&&encodeURIComponent(z),i.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=_l(this._updateHashUnthrottled.bind(this),30*1e3/100)};Hl.prototype.addTo=function(z){return this._map=z,i.window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},Hl.prototype.remove=function(){return i.window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Hl.prototype.getHashString=function(z){var K=this._map.getCenter(),O=Math.round(this._map.getZoom()*100)/100,$=Math.ceil((O*Math.LN2+Math.log(512/360/.5))/Math.LN10),pe=Math.pow(10,$),de=Math.round(K.lng*pe)/pe,Ie=Math.round(K.lat*pe)/pe,$e=this._map.getBearing(),pt=this._map.getPitch(),Kt="";if(z?Kt+="/"+de+"/"+Ie+"/"+O:Kt+=O+"/"+Ie+"/"+de,($e||pt)&&(Kt+="/"+Math.round($e*10)/10),pt&&(Kt+="/"+Math.round(pt)),this._hashName){var ir=this._hashName,Jt=!1,vt=i.window.location.hash.slice(1).split("&").map(function(Pt){var Wt=Pt.split("=")[0];return Wt===ir?(Jt=!0,Wt+"="+Kt):Pt}).filter(function(Pt){return Pt});return Jt||vt.push(ir+"="+Kt),"#"+vt.join("&")}return"#"+Kt},Hl.prototype._getCurrentHash=function(){var z=this,K=i.window.location.hash.replace("#","");if(this._hashName){var O;return K.split("&").map(function($){return $.split("=")}).forEach(function($){$[0]===z._hashName&&(O=$)}),(O&&O[1]||"").split("/")}return K.split("/")},Hl.prototype._onHashChange=function(){var z=this._getCurrentHash();if(z.length>=3&&!z.some(function(O){return isNaN(O)})){var K=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(z[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+z[2],+z[1]],zoom:+z[0],bearing:K,pitch:+(z[4]||0)}),!0}return!1},Hl.prototype._updateHashUnthrottled=function(){var z=i.window.location.href.replace(/(#.+)?$/,this.getHashString());try{i.window.history.replaceState(i.window.history.state,null,z)}catch(K){}};var Zu={linearity:.3,easing:i.bezier(0,0,.3,1)},cu=i.extend({deceleration:2500,maxSpeed:1400},Zu),el=i.extend({deceleration:20,maxSpeed:1400},Zu),au=i.extend({deceleration:1e3,maxSpeed:360},Zu),zc=i.extend({deceleration:1e3,maxSpeed:90},Zu),zl=function(z){this._map=z,this.clear()};zl.prototype.clear=function(){this._inertiaBuffer=[]},zl.prototype.record=function(z){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.browser.now(),settings:z})},zl.prototype._drainInertiaBuffer=function(){for(var z=this._inertiaBuffer,K=i.browser.now(),O=160;z.length>0&&K-z[0].time>O;)z.shift()},zl.prototype._onMoveEnd=function(z){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var K={zoom:0,bearing:0,pitch:0,pan:new i.Point(0,0),pinchAround:void 0,around:void 0},O=0,$=this._inertiaBuffer;O<$.length;O+=1){var pe=$[O],de=pe.settings;K.zoom+=de.zoomDelta||0,K.bearing+=de.bearingDelta||0,K.pitch+=de.pitchDelta||0,de.panDelta&&K.pan._add(de.panDelta),de.around&&(K.around=de.around),de.pinchAround&&(K.pinchAround=de.pinchAround)}var Ie=this._inertiaBuffer[this._inertiaBuffer.length-1],$e=Ie.time-this._inertiaBuffer[0].time,pt={};if(K.pan.mag()){var Kt=Z(K.pan.mag(),$e,i.extend({},cu,z||{}));pt.offset=K.pan.mult(Kt.amount/K.pan.mag()),pt.center=this._map.transform.center,Fl(pt,Kt)}if(K.zoom){var ir=Z(K.zoom,$e,el);pt.zoom=this._map.transform.zoom+ir.amount,Fl(pt,ir)}if(K.bearing){var Jt=Z(K.bearing,$e,au);pt.bearing=this._map.transform.bearing+i.clamp(Jt.amount,-179,179),Fl(pt,Jt)}if(K.pitch){var vt=Z(K.pitch,$e,zc);pt.pitch=this._map.transform.pitch+vt.amount,Fl(pt,vt)}if(pt.zoom||pt.bearing){var Pt=K.pinchAround===void 0?K.around:K.pinchAround;pt.around=Pt?this._map.unproject(Pt):this._map.getCenter()}return this.clear(),i.extend(pt,{noMoveStart:!0})}};function Fl(Y,z){(!Y.duration||Y.duration=this._clickTolerance||this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.dblclick=function(z){return this._firePreventable(new oe(z.type,this._map,z))},Ue.prototype.mouseover=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.mouseout=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.touchstart=function(z){return this._firePreventable(new we(z.type,this._map,z))},Ue.prototype.touchmove=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchend=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchcancel=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype._firePreventable=function(z){if(this._map.fire(z),z.defaultPrevented)return{}},Ue.prototype.isEnabled=function(){return!0},Ue.prototype.isActive=function(){return!1},Ue.prototype.enable=function(){},Ue.prototype.disable=function(){};var We=function(z){this._map=z};We.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},We.prototype.mousemove=function(z){this._map.fire(new oe(z.type,this._map,z))},We.prototype.mousedown=function(){this._delayContextMenu=!0},We.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new oe("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},We.prototype.contextmenu=function(z){this._delayContextMenu?this._contextMenuEvent=z:this._map.fire(new oe(z.type,this._map,z)),this._map.listens("contextmenu")&&z.preventDefault()},We.prototype.isEnabled=function(){return!0},We.prototype.isActive=function(){return!1},We.prototype.enable=function(){},We.prototype.disable=function(){};var wt=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._container=z.getContainer(),this._clickTolerance=K.clickTolerance||1};wt.prototype.isEnabled=function(){return!!this._enabled},wt.prototype.isActive=function(){return!!this._active},wt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},wt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},wt.prototype.mousedown=function(z,K){this.isEnabled()&&z.shiftKey&&z.button===0&&(o.disableDrag(),this._startPos=this._lastPos=K,this._active=!0)},wt.prototype.mousemoveWindow=function(z,K){if(this._active){var O=K;if(!(this._lastPos.equals(O)||!this._box&&O.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=z.timeStamp),O.length===this.numTouches&&(this.centroid=zt(K),this.touches=tt(O,K)))},Ir.prototype.touchmove=function(z,K,O){if(!(this.aborted||!this.centroid)){var $=tt(O,K);for(var pe in this.touches){var de=this.touches[pe],Ie=$[pe];(!Ie||Ie.dist(de)>Dr)&&(this.aborted=!0)}}},Ir.prototype.touchend=function(z,K,O){if((!this.centroid||z.timeStamp-this.startTime>lr)&&(this.aborted=!0),O.length===0){var $=!this.aborted&&this.centroid;if(this.reset(),$)return $}};var oi=function(z){this.singleTap=new Ir(z),this.numTaps=z.numTaps,this.reset()};oi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},oi.prototype.touchstart=function(z,K,O){this.singleTap.touchstart(z,K,O)},oi.prototype.touchmove=function(z,K,O){this.singleTap.touchmove(z,K,O)},oi.prototype.touchend=function(z,K,O){var $=this.singleTap.touchend(z,K,O);if($){var pe=z.timeStamp-this.lastTime0&&(this._active=!0);var $=tt(O,K),pe=new i.Point(0,0),de=new i.Point(0,0),Ie=0;for(var $e in $){var pt=$[$e],Kt=this._touches[$e];Kt&&(pe._add(pt),de._add(pt.sub(Kt)),Ie++,$[$e]=pt)}if(this._touches=$,!(IeMath.abs(Y.x)}var pn=100,za=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.reset=function(){Y.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},z.prototype._start=function(O){this._lastPoints=O,Ns(O[0].sub(O[1]))&&(this._valid=!1)},z.prototype._move=function(O,$,pe){var de=O[0].sub(this._lastPoints[0]),Ie=O[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(de,Ie,pe.timeStamp),!!this._valid){this._lastPoints=O,this._active=!0;var $e=(de.y+Ie.y)/2,pt=-.5;return{pitchDelta:$e*pt}}},z.prototype.gestureBeginsVertically=function(O,$,pe){if(this._valid!==void 0)return this._valid;var de=2,Ie=O.mag()>=de,$e=$.mag()>=de;if(!(!Ie&&!$e)){if(!Ie||!$e)return this._firstMove===void 0&&(this._firstMove=pe),pe-this._firstMove0==$.y>0;return Ns(O)&&Ns($)&&pt}},z}(Nn),Lo={panStep:100,bearingStep:15,pitchStep:10},Fo=function(){var z=Lo;this._panStep=z.panStep,this._bearingStep=z.bearingStep,this._pitchStep=z.pitchStep,this._rotationDisabled=!1};Fo.prototype.reset=function(){this._active=!1},Fo.prototype.keydown=function(z){var K=this;if(!(z.altKey||z.ctrlKey||z.metaKey)){var O=0,$=0,pe=0,de=0,Ie=0;switch(z.keyCode){case 61:case 107:case 171:case 187:O=1;break;case 189:case 109:case 173:O=-1;break;case 37:z.shiftKey?$=-1:(z.preventDefault(),de=-1);break;case 39:z.shiftKey?$=1:(z.preventDefault(),de=1);break;case 38:z.shiftKey?pe=1:(z.preventDefault(),Ie=-1);break;case 40:z.shiftKey?pe=-1:(z.preventDefault(),Ie=1);break;default:return}return this._rotationDisabled&&($=0,pe=0),{cameraAnimation:function($e){var pt=$e.getZoom();$e.easeTo({duration:300,easeId:"keyboardHandler",easing:js,zoom:O?Math.round(pt)+O*(z.shiftKey?2:1):pt,bearing:$e.getBearing()+$*K._bearingStep,pitch:$e.getPitch()+pe*K._pitchStep,offset:[-de*K._panStep,-Ie*K._panStep],center:$e.getCenter()},{originalEvent:z})}}}},Fo.prototype.enable=function(){this._enabled=!0},Fo.prototype.disable=function(){this._enabled=!1,this.reset()},Fo.prototype.isEnabled=function(){return this._enabled},Fo.prototype.isActive=function(){return this._active},Fo.prototype.disableRotation=function(){this._rotationDisabled=!0},Fo.prototype.enableRotation=function(){this._rotationDisabled=!1};function js(Y){return Y*(2-Y)}var xl=4.000244140625,fu=1/100,dl=1/450,xc=2,At=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._handler=K,this._delta=0,this._defaultZoomRate=fu,this._wheelZoomRate=dl,i.bindAll(["_onTimeout"],this)};At.prototype.setZoomRate=function(z){this._defaultZoomRate=z},At.prototype.setWheelZoomRate=function(z){this._wheelZoomRate=z},At.prototype.isEnabled=function(){return!!this._enabled},At.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},At.prototype.isZooming=function(){return!!this._zooming},At.prototype.enable=function(z){this.isEnabled()||(this._enabled=!0,this._aroundCenter=z&&z.around==="center")},At.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},At.prototype.wheel=function(z){if(this.isEnabled()){var K=z.deltaMode===i.window.WheelEvent.DOM_DELTA_LINE?z.deltaY*40:z.deltaY,O=i.browser.now(),$=O-(this._lastWheelEventTime||0);this._lastWheelEventTime=O,K!==0&&K%xl===0?this._type="wheel":K!==0&&Math.abs(K)<4?this._type="trackpad":$>400?(this._type=null,this._lastValue=K,this._timeout=setTimeout(this._onTimeout,40,z)):this._type||(this._type=Math.abs($*K)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,K+=this._lastValue)),z.shiftKey&&K&&(K=K/4),this._type&&(this._lastWheelEvent=z,this._delta-=K,this._active||this._start(z)),z.preventDefault()}},At.prototype._onTimeout=function(z){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(z)},At.prototype._start=function(z){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var K=o.mousePos(this._el,z);this._around=i.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(K)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},At.prototype.renderFrame=function(){var z=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var K=this._map.transform;if(this._delta!==0){var O=this._type==="wheel"&&Math.abs(this._delta)>xl?this._wheelZoomRate:this._defaultZoomRate,$=xc/(1+Math.exp(-Math.abs(this._delta*O)));this._delta<0&&$!==0&&($=1/$);var pe=typeof this._targetZoom=="number"?K.zoomScale(this._targetZoom):K.scale;this._targetZoom=Math.min(K.maxZoom,Math.max(K.minZoom,K.scaleZoom(pe*$))),this._type==="wheel"&&(this._startZoom=K.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var de=typeof this._targetZoom=="number"?this._targetZoom:K.zoom,Ie=this._startZoom,$e=this._easing,pt=!1,Kt;if(this._type==="wheel"&&Ie&&$e){var ir=Math.min((i.browser.now()-this._lastWheelEventTime)/200,1),Jt=$e(ir);Kt=i.number(Ie,de,Jt),ir<1?this._frameId||(this._frameId=!0):pt=!0}else Kt=de,pt=!0;return this._active=!0,pt&&(this._active=!1,this._finishTimeout=setTimeout(function(){z._zooming=!1,z._handler._triggerRenderFrame(),delete z._targetZoom,delete z._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!pt,zoomDelta:Kt-K.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},At.prototype._smoothOutEasing=function(z){var K=i.ease;if(this._prevEase){var O=this._prevEase,$=(i.browser.now()-O.start)/O.duration,pe=O.easing($+.01)-O.easing($),de=.27/Math.sqrt(pe*pe+1e-4)*.01,Ie=Math.sqrt(.27*.27-de*de);K=i.bezier(de,Ie,.25,1)}return this._prevEase={start:i.browser.now(),duration:z,easing:K},K},At.prototype.reset=function(){this._active=!1};var Er=function(z,K){this._clickZoom=z,this._tapZoom=K};Er.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},Er.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},Er.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},Er.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Wr=function(){this.reset()};Wr.prototype.reset=function(){this._active=!1},Wr.prototype.dblclick=function(z,K){return z.preventDefault(),{cameraAnimation:function(O){O.easeTo({duration:300,zoom:O.getZoom()+(z.shiftKey?-1:1),around:O.unproject(K)},{originalEvent:z})}}},Wr.prototype.enable=function(){this._enabled=!0},Wr.prototype.disable=function(){this._enabled=!1,this.reset()},Wr.prototype.isEnabled=function(){return this._enabled},Wr.prototype.isActive=function(){return this._active};var wi=function(){this._tap=new oi({numTouches:1,numTaps:1}),this.reset()};wi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},wi.prototype.touchstart=function(z,K,O){this._swipePoint||(this._tapTime&&z.timeStamp-this._tapTime>or&&this.reset(),this._tapTime?O.length>0&&(this._swipePoint=K[0],this._swipeTouch=O[0].identifier):this._tap.touchstart(z,K,O))},wi.prototype.touchmove=function(z,K,O){if(!this._tapTime)this._tap.touchmove(z,K,O);else if(this._swipePoint){if(O[0].identifier!==this._swipeTouch)return;var $=K[0],pe=$.y-this._swipePoint.y;return this._swipePoint=$,z.preventDefault(),this._active=!0,{zoomDelta:pe/128}}},wi.prototype.touchend=function(z,K,O){if(this._tapTime)this._swipePoint&&O.length===0&&this.reset();else{var $=this._tap.touchend(z,K,O);$&&(this._tapTime=z.timeStamp)}},wi.prototype.touchcancel=function(){this.reset()},wi.prototype.enable=function(){this._enabled=!0},wi.prototype.disable=function(){this._enabled=!1,this.reset()},wi.prototype.isEnabled=function(){return this._enabled},wi.prototype.isActive=function(){return this._active};var Ui=function(z,K,O){this._el=z,this._mousePan=K,this._touchPan=O};Ui.prototype.enable=function(z){this._inertiaOptions=z||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},Ui.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},Ui.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},Ui.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var Oi=function(z,K,O){this._pitchWithRotate=z.pitchWithRotate,this._mouseRotate=K,this._mousePitch=O};Oi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},Oi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},Oi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},Oi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var Bi=function(z,K,O,$){this._el=z,this._touchZoom=K,this._touchRotate=O,this._tapDragZoom=$,this._rotationDisabled=!1,this._enabled=!0};Bi.prototype.enable=function(z){this._touchZoom.enable(z),this._rotationDisabled||this._touchRotate.enable(z),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},Bi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},Bi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},Bi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},Bi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},Bi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var cn=function(Y){return Y.zoom||Y.drag||Y.pitch||Y.rotate},On=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z}(i.Event);function Bn(Y){return Y.panDelta&&Y.panDelta.mag()||Y.zoomDelta||Y.bearingDelta||Y.pitchDelta}var yn=function(z,K){this._map=z,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new zl(z),this._bearingSnap=K.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(K),i.bindAll(["handleEvent","handleWindowEvent"],this);var O=this._el;this._listeners=[[O,"touchstart",{passive:!0}],[O,"touchmove",{passive:!1}],[O,"touchend",void 0],[O,"touchcancel",void 0],[O,"mousedown",void 0],[O,"mousemove",void 0],[O,"mouseup",void 0],[i.window.document,"mousemove",{capture:!0}],[i.window.document,"mouseup",void 0],[O,"mouseover",void 0],[O,"mouseout",void 0],[O,"dblclick",void 0],[O,"click",void 0],[O,"keydown",{capture:!1}],[O,"keyup",void 0],[O,"wheel",{passive:!1}],[O,"contextmenu",void 0],[i.window,"blur",void 0]];for(var $=0,pe=this._listeners;$Ie?Math.min(2,gr):Math.max(.5,gr),Ri=Math.pow(tn,1-ei),ln=de.unproject(kr.add(Ar.mult(ei*Ri)).mult(yi));de.setLocationAtPoint(de.renderWorldCopies?ln.wrap():ln,rr)}pe._fireMoveEvents($)},function(ei){pe._afterEase($,ei)},O),this},z.prototype._prepareEase=function(O,$,pe){pe===void 0&&(pe={}),this._moving=!0,!$&&!pe.moving&&this.fire(new i.Event("movestart",O)),this._zooming&&!pe.zooming&&this.fire(new i.Event("zoomstart",O)),this._rotating&&!pe.rotating&&this.fire(new i.Event("rotatestart",O)),this._pitching&&!pe.pitching&&this.fire(new i.Event("pitchstart",O))},z.prototype._fireMoveEvents=function(O){this.fire(new i.Event("move",O)),this._zooming&&this.fire(new i.Event("zoom",O)),this._rotating&&this.fire(new i.Event("rotate",O)),this._pitching&&this.fire(new i.Event("pitch",O))},z.prototype._afterEase=function(O,$){if(!(this._easeId&&$&&this._easeId===$)){delete this._easeId;var pe=this._zooming,de=this._rotating,Ie=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,pe&&this.fire(new i.Event("zoomend",O)),de&&this.fire(new i.Event("rotateend",O)),Ie&&this.fire(new i.Event("pitchend",O)),this.fire(new i.Event("moveend",O))}},z.prototype.flyTo=function(O,$){var pe=this;if(!O.essential&&i.browser.prefersReducedMotion){var de=i.pick(O,["center","zoom","bearing","pitch","around"]);return this.jumpTo(de,$)}this.stop(),O=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},O);var Ie=this.transform,$e=this.getZoom(),pt=this.getBearing(),Kt=this.getPitch(),ir=this.getPadding(),Jt="zoom"in O?i.clamp(+O.zoom,Ie.minZoom,Ie.maxZoom):$e,vt="bearing"in O?this._normalizeBearing(O.bearing,pt):pt,Pt="pitch"in O?+O.pitch:Kt,Wt="padding"in O?O.padding:Ie.padding,rr=Ie.zoomScale(Jt-$e),dr=i.Point.convert(O.offset),pr=Ie.centerPoint.add(dr),kr=Ie.pointLocation(pr),Ar=i.LngLat.convert(O.center||kr);this._normalizeCenter(Ar);var gr=Ie.project(kr),Cr=Ie.project(Ar).sub(gr),cr=O.curve,Gr=Math.max(Ie.width,Ie.height),ei=Gr/rr,yi=Cr.mag();if("minZoom"in O){var tn=i.clamp(Math.min(O.minZoom,$e,Jt),Ie.minZoom,Ie.maxZoom),Ri=Gr/Ie.zoomScale(tn-$e);cr=Math.sqrt(Ri/yi*2)}var ln=cr*cr;function Qn(fo){var as=(ei*ei-Gr*Gr+(fo?-1:1)*ln*ln*yi*yi)/(2*(fo?ei:Gr)*ln*yi);return Math.log(Math.sqrt(as*as+1)-as)}function qn(fo){return(Math.exp(fo)-Math.exp(-fo))/2}function rn(fo){return(Math.exp(fo)+Math.exp(-fo))/2}function bn(fo){return qn(fo)/rn(fo)}var mn=Qn(0),Gn=function(fo){return rn(mn)/rn(mn+cr*fo)},da=function(fo){return Gr*((rn(mn)*bn(mn+cr*fo)-qn(mn))/ln)/yi},No=(Qn(1)-mn)/cr;if(Math.abs(yi)<1e-6||!isFinite(No)){if(Math.abs(Gr-ei)<1e-6)return this.easeTo(O,$);var Do=eiO.maxDuration&&(O.duration=0),this._zooming=!0,this._rotating=pt!==vt,this._pitching=Pt!==Kt,this._padding=!Ie.isPaddingEqual(Wt),this._prepareEase($,!1),this._ease(function(fo){var as=fo*No,tl=1/Gn(as);Ie.zoom=fo===1?Jt:$e+Ie.scaleZoom(tl),pe._rotating&&(Ie.bearing=i.number(pt,vt,fo)),pe._pitching&&(Ie.pitch=i.number(Kt,Pt,fo)),pe._padding&&(Ie.interpolatePadding(ir,Wt,fo),pr=Ie.centerPoint.add(dr));var zu=fo===1?Ar:Ie.unproject(gr.add(Cr.mult(da(as))).mult(tl));Ie.setLocationAtPoint(Ie.renderWorldCopies?zu.wrap():zu,pr),pe._fireMoveEvents($)},function(){return pe._afterEase($)},O),this},z.prototype.isEasing=function(){return!!this._easeFrameId},z.prototype.stop=function(){return this._stop()},z.prototype._stop=function(O,$){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var pe=this._onEaseEnd;delete this._onEaseEnd,pe.call(this,$)}if(!O){var de=this.handlers;de&&de.stop(!1)}return this},z.prototype._ease=function(O,$,pe){pe.animate===!1||pe.duration===0?(O(1),$()):(this._easeStart=i.browser.now(),this._easeOptions=pe,this._onEaseFrame=O,this._onEaseEnd=$,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},z.prototype._renderFrameCallback=function(){var O=Math.min((i.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(O)),O<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},z.prototype._normalizeBearing=function(O,$){O=i.wrap(O,-180,180);var pe=Math.abs(O-$);return Math.abs(O-360-$)180?-360:pe<-180?360:0}},z}(i.Evented),Rn=function(z){z===void 0&&(z={}),this.options=z,i.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Rn.prototype.getDefaultPosition=function(){return"bottom-right"},Rn.prototype.onAdd=function(z){var K=this.options&&this.options.compact;return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),K&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),K===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Rn.prototype.onRemove=function(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Rn.prototype._setElementTitle=function(z,K){var O=this._map._getUIString("AttributionControl."+K);z.title=O,z.setAttribute("aria-label",O)},Rn.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Rn.prototype._updateEditLink=function(){var z=this._editLink;z||(z=this._editLink=this._container.querySelector(".mapbox-improve-map"));var K=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.config.ACCESS_TOKEN}];if(z){var O=K.reduce(function($,pe,de){return pe.value&&($+=pe.key+"="+pe.value+(de=0)return!1;return!0});var Ie=z.join(" | ");Ie!==this._attribHTML&&(this._attribHTML=Ie,z.length?(this._innerContainer.innerHTML=Ie,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Rn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var Dn=function(){i.bindAll(["_updateLogo"],this),i.bindAll(["_updateCompact"],this)};Dn.prototype.onAdd=function(z){this._map=z,this._container=o.create("div","mapboxgl-ctrl");var K=o.create("a","mapboxgl-ctrl-logo");return K.target="_blank",K.rel="noopener nofollow",K.href="https://www.mapbox.com/",K.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),K.setAttribute("rel","noopener nofollow"),this._container.appendChild(K),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},Dn.prototype.onRemove=function(){o.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},Dn.prototype.getDefaultPosition=function(){return"bottom-left"},Dn.prototype._updateLogo=function(z){(!z||z.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},Dn.prototype._logoRequired=function(){if(this._map.style){var z=this._map.style.sourceCaches;for(var K in z){var O=z[K].getSource();if(O.mapbox_logo)return!0}return!1}},Dn.prototype._updateCompact=function(){var z=this._container.children;if(z.length){var K=z[0];this._map.getCanvasContainer().offsetWidth<250?K.classList.add("mapboxgl-compact"):K.classList.remove("mapboxgl-compact")}};var fn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};fn.prototype.add=function(z){var K=++this._id,O=this._queue;return O.push({callback:z,id:K,cancelled:!1}),K},fn.prototype.remove=function(z){for(var K=this._currentlyRunning,O=K?this._queue.concat(K):this._queue,$=0,pe=O;$O.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(O.minPitch!=null&&O.maxPitch!=null&&O.minPitch>O.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(O.minPitch!=null&&O.minPitchZa)throw new Error("maxPitch must be less than or equal to "+Za);var pe=new yo(O.minZoom,O.maxZoom,O.minPitch,O.maxPitch,O.renderWorldCopies);if(Y.call(this,pe,O),this._interactive=O.interactive,this._maxTileCacheSize=O.maxTileCacheSize,this._failIfMajorPerformanceCaveat=O.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=O.preserveDrawingBuffer,this._antialias=O.antialias,this._trackResize=O.trackResize,this._bearingSnap=O.bearingSnap,this._refreshExpiredTiles=O.refreshExpiredTiles,this._fadeDuration=O.fadeDuration,this._crossSourceCollisions=O.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=O.collectResourceTiming,this._renderTaskQueue=new fn,this._controls=[],this._mapId=i.uniqueId(),this._locale=i.extend({},Ai,O.locale),this._clickTolerance=O.clickTolerance,this._requestManager=new i.RequestManager(O.transformRequest,O.accessToken),typeof O.container=="string"){if(this._container=i.window.document.getElementById(O.container),!this._container)throw new Error("Container '"+O.container+"' not found.")}else if(O.container instanceof Ln)this._container=O.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(O.maxBounds&&this.setMaxBounds(O.maxBounds),i.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return $._update(!1)}),this.on("moveend",function(){return $._update(!1)}),this.on("zoom",function(){return $._update(!0)}),typeof i.window!="undefined"&&(i.window.addEventListener("online",this._onWindowOnline,!1),i.window.addEventListener("resize",this._onWindowResize,!1),i.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new yn(this,O);var de=typeof O.hash=="string"&&O.hash||void 0;this._hash=O.hash&&new Hl(de).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:O.center,zoom:O.zoom,bearing:O.bearing,pitch:O.pitch}),O.bounds&&(this.resize(),this.fitBounds(O.bounds,i.extend({},O.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=O.localIdeographFontFamily,O.style&&this.setStyle(O.style,{localIdeographFontFamily:O.localIdeographFontFamily}),O.attributionControl&&this.addControl(new Rn({customAttribution:O.customAttribution})),this.addControl(new Dn,O.logoPosition),this.on("style.load",function(){$.transform.unmodified&&$.jumpTo($.style.stylesheet)}),this.on("data",function(Ie){$._update(Ie.dataType==="style"),$.fire(new i.Event(Ie.dataType+"data",Ie))}),this.on("dataloading",function(Ie){$.fire(new i.Event(Ie.dataType+"dataloading",Ie))})}Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z;var K={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return z.prototype._getMapId=function(){return this._mapId},z.prototype.addControl=function($,pe){if(pe===void 0&&($.getDefaultPosition?pe=$.getDefaultPosition():pe="top-right"),!$||!$.onAdd)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var de=$.onAdd(this);this._controls.push($);var Ie=this._controlPositions[pe];return pe.indexOf("bottom")!==-1?Ie.insertBefore(de,Ie.firstChild):Ie.appendChild(de),this},z.prototype.removeControl=function($){if(!$||!$.onRemove)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var pe=this._controls.indexOf($);return pe>-1&&this._controls.splice(pe,1),$.onRemove(this),this},z.prototype.hasControl=function($){return this._controls.indexOf($)>-1},z.prototype.resize=function($){var pe=this._containerDimensions(),de=pe[0],Ie=pe[1];this._resizeCanvas(de,Ie),this.transform.resize(de,Ie),this.painter.resize(de,Ie);var $e=!this._moving;return $e&&(this.stop(),this.fire(new i.Event("movestart",$)).fire(new i.Event("move",$))),this.fire(new i.Event("resize",$)),$e&&this.fire(new i.Event("moveend",$)),this},z.prototype.getBounds=function(){return this.transform.getBounds()},z.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},z.prototype.setMaxBounds=function($){return this.transform.setMaxBounds(i.LngLatBounds.convert($)),this._update()},z.prototype.setMinZoom=function($){if($=$==null?gn:$,$>=gn&&$<=this.transform.maxZoom)return this.transform.minZoom=$,this._update(),this.getZoom()<$&&this.setZoom($),this;throw new Error("minZoom must be between "+gn+" and the current maxZoom, inclusive")},z.prototype.getMinZoom=function(){return this.transform.minZoom},z.prototype.setMaxZoom=function($){if($=$==null?ca:$,$>=this.transform.minZoom)return this.transform.maxZoom=$,this._update(),this.getZoom()>$&&this.setZoom($),this;throw new Error("maxZoom must be greater than the current minZoom")},z.prototype.getMaxZoom=function(){return this.transform.maxZoom},z.prototype.setMinPitch=function($){if($=$==null?Kn:$,$=Kn&&$<=this.transform.maxPitch)return this.transform.minPitch=$,this._update(),this.getPitch()<$&&this.setPitch($),this;throw new Error("minPitch must be between "+Kn+" and the current maxPitch, inclusive")},z.prototype.getMinPitch=function(){return this.transform.minPitch},z.prototype.setMaxPitch=function($){if($=$==null?Za:$,$>Za)throw new Error("maxPitch must be less than or equal to "+Za);if($>=this.transform.minPitch)return this.transform.maxPitch=$,this._update(),this.getPitch()>$&&this.setPitch($),this;throw new Error("maxPitch must be greater than the current minPitch")},z.prototype.getMaxPitch=function(){return this.transform.maxPitch},z.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},z.prototype.setRenderWorldCopies=function($){return this.transform.renderWorldCopies=$,this._update()},z.prototype.project=function($){return this.transform.locationPoint(i.LngLat.convert($))},z.prototype.unproject=function($){return this.transform.pointLocation(i.Point.convert($))},z.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},z.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},z.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},z.prototype._createDelegatedListener=function($,pe,de){var Ie=this,$e;if($==="mouseenter"||$==="mouseover"){var pt=!1,Kt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?pt||(pt=!0,de.call(Ie,new oe($,Ie,rr.originalEvent,{features:dr}))):pt=!1},ir=function(){pt=!1};return{layer:pe,listener:de,delegates:{mousemove:Kt,mouseout:ir}}}else if($==="mouseleave"||$==="mouseout"){var Jt=!1,vt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?Jt=!0:Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))},Pt=function(rr){Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))};return{layer:pe,listener:de,delegates:{mousemove:vt,mouseout:Pt}}}else{var Wt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length&&(rr.features=dr,de.call(Ie,rr),delete rr.features)};return{layer:pe,listener:de,delegates:($e={},$e[$]=Wt,$e)}}},z.prototype.on=function($,pe,de){if(de===void 0)return Y.prototype.on.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[$]=this._delegatedListeners[$]||[],this._delegatedListeners[$].push(Ie);for(var $e in Ie.delegates)this.on($e,Ie.delegates[$e]);return this},z.prototype.once=function($,pe,de){if(de===void 0)return Y.prototype.once.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);for(var $e in Ie.delegates)this.once($e,Ie.delegates[$e]);return this},z.prototype.off=function($,pe,de){var Ie=this;if(de===void 0)return Y.prototype.off.call(this,$,pe);var $e=function(pt){for(var Kt=pt[$],ir=0;ir180;){var de=K.locationPoint(Y);if(de.x>=0&&de.y>=0&&de.x<=K.width&&de.y<=K.height)break;Y.lng>K.center.lng?Y.lng-=360:Y.lng+=360}return Y}var ro={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ao(Y,z,K){var O=Y.classList;for(var $ in ro)O.remove("mapboxgl-"+K+"-anchor-"+$);O.add("mapboxgl-"+K+"-anchor-"+z)}var Jn=function(Y){function z(K,O){if(Y.call(this),(K instanceof i.window.HTMLElement||O)&&(K=i.extend({element:K},O)),i.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=K&&K.anchor||"center",this._color=K&&K.color||"#3FB1CE",this._scale=K&&K.scale||1,this._draggable=K&&K.draggable||!1,this._clickTolerance=K&&K.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=K&&K.rotation||0,this._rotationAlignment=K&&K.rotationAlignment||"auto",this._pitchAlignment=K&&K.pitchAlignment&&K.pitchAlignment!=="auto"?K.pitchAlignment:this._rotationAlignment,!K||!K.element){this._defaultMarker=!0,this._element=o.create("div"),this._element.setAttribute("aria-label","Map marker");var $=o.createNS("http://www.w3.org/2000/svg","svg"),pe=41,de=27;$.setAttributeNS(null,"display","block"),$.setAttributeNS(null,"height",pe+"px"),$.setAttributeNS(null,"width",de+"px"),$.setAttributeNS(null,"viewBox","0 0 "+de+" "+pe);var Ie=o.createNS("http://www.w3.org/2000/svg","g");Ie.setAttributeNS(null,"stroke","none"),Ie.setAttributeNS(null,"stroke-width","1"),Ie.setAttributeNS(null,"fill","none"),Ie.setAttributeNS(null,"fill-rule","evenodd");var $e=o.createNS("http://www.w3.org/2000/svg","g");$e.setAttributeNS(null,"fill-rule","nonzero");var pt=o.createNS("http://www.w3.org/2000/svg","g");pt.setAttributeNS(null,"transform","translate(3.0, 29.0)"),pt.setAttributeNS(null,"fill","#000000");for(var Kt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],ir=0,Jt=Kt;ir=$}this._isDragging&&(this._pos=O.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.Event("dragstart"))),this.fire(new i.Event("drag")))},z.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new i.Event("dragend")),this._state="inactive"},z.prototype._addDragHandler=function(O){this._element.contains(O.originalEvent.target)&&(O.preventDefault(),this._positionDelta=O.point.sub(this._pos).add(this._offset),this._pointerdownPos=O.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},z.prototype.setDraggable=function(O){return this._draggable=!!O,this._map&&(O?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},z.prototype.isDraggable=function(){return this._draggable},z.prototype.setRotation=function(O){return this._rotation=O||0,this._update(),this},z.prototype.getRotation=function(){return this._rotation},z.prototype.setRotationAlignment=function(O){return this._rotationAlignment=O||"auto",this._update(),this},z.prototype.getRotationAlignment=function(){return this._rotationAlignment},z.prototype.setPitchAlignment=function(O){return this._pitchAlignment=O&&O!=="auto"?O:this._rotationAlignment,this._update(),this},z.prototype.getPitchAlignment=function(){return this._pitchAlignment},z}(i.Evented),Oa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},_o;function Po(Y){_o!==void 0?Y(_o):i.window.navigator.permissions!==void 0?i.window.navigator.permissions.query({name:"geolocation"}).then(function(z){_o=z.state!=="denied",Y(_o)}):(_o=!!i.window.navigator.geolocation,Y(_o))}var Jo=0,Yl=!1,$c=function(Y){function z(K){Y.call(this),this.options=i.extend({},Oa,K),i.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.onAdd=function(O){return this._map=O,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),Po(this._setupUI),this._container},z.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Jo=0,Yl=!1},z.prototype._isOutOfMapMaxBounds=function(O){var $=this._map.getMaxBounds(),pe=O.coords;return $&&(pe.longitude<$.getWest()||pe.longitude>$.getEast()||pe.latitude<$.getSouth()||pe.latitude>$.getNorth())},z.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},z.prototype._onSuccess=function(O){if(this._map){if(this._isOutOfMapMaxBounds(O)){this._setErrorState(),this.fire(new i.Event("outofmaxbounds",O)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=O,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(O),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(O),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("geolocate",O)),this._finish()}},z.prototype._updateCamera=function(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude),pe=O.coords.accuracy,de=this._map.getBearing(),Ie=i.extend({bearing:de},this.options.fitBoundsOptions);this._map.fitBounds($.toBounds(pe),Ie,{geolocateSource:!0})},z.prototype._updateMarker=function(O){if(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude);this._accuracyCircleMarker.setLngLat($).addTo(this._map),this._userLocationDotMarker.setLngLat($).addTo(this._map),this._accuracy=O.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},z.prototype._updateCircleRadius=function(){var O=this._map._container.clientHeight/2,$=this._map.unproject([0,O]),pe=this._map.unproject([1,O]),de=$.distanceTo(pe),Ie=Math.ceil(2*this._accuracy/de);this._circleElement.style.width=Ie+"px",this._circleElement.style.height=Ie+"px"},z.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},z.prototype._onError=function(O){if(this._map){if(this.options.trackUserLocation)if(O.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var $=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=$,this._geolocateButton.setAttribute("aria-label",$),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(O.code===3&&Yl)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("error",O)),this._finish()}},z.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},z.prototype._setupUI=function(O){var $=this;if(this._container.addEventListener("contextmenu",function(Ie){return Ie.preventDefault()}),this._geolocateButton=o.create("button","mapboxgl-ctrl-geolocate",this._container),o.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",O===!1){i.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var pe=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=pe,this._geolocateButton.setAttribute("aria-label",pe)}else{var de=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=de,this._geolocateButton.setAttribute("aria-label",de)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Jn(this._dotElement),this._circleElement=o.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Jn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(Ie){var $e=Ie.originalEvent&&Ie.originalEvent.type==="resize";!Ie.geolocateSource&&$._watchState==="ACTIVE_LOCK"&&!$e&&($._watchState="BACKGROUND",$._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),$._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),$.fire(new i.Event("trackuserlocationend")))})},z.prototype.trigger=function(){if(!this._setup)return i.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Jo--,Yl=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Jo++;var O;Jo>1?(O={maximumAge:6e5,timeout:0},Yl=!0):(O=this.options.positionOptions,Yl=!1),this._geolocationWatchID=i.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,O)}}else i.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},z.prototype._clearWatch=function(){i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},z}(i.Evented),xs={maxWidth:100,unit:"metric"},Qc=function(z){this.options=i.extend({},xs,z),i.bindAll(["_onMove","setUnit"],this)};Qc.prototype.getDefaultPosition=function(){return"bottom-left"},Qc.prototype._onMove=function(){El(this._map,this._container,this.options)},Qc.prototype.onAdd=function(z){return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",z.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Qc.prototype.onRemove=function(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Qc.prototype.setUnit=function(z){this.options.unit=z,El(this._map,this._container,this.options)};function El(Y,z,K){var O=K&&K.maxWidth||100,$=Y._container.clientHeight/2,pe=Y.unproject([0,$]),de=Y.unproject([O,$]),Ie=pe.distanceTo(de);if(K&&K.unit==="imperial"){var $e=3.2808*Ie;if($e>5280){var pt=$e/5280;bc(z,O,pt,Y._getUIString("ScaleControl.Miles"))}else bc(z,O,$e,Y._getUIString("ScaleControl.Feet"))}else if(K&&K.unit==="nautical"){var Kt=Ie/1852;bc(z,O,Kt,Y._getUIString("ScaleControl.NauticalMiles"))}else Ie>=1e3?bc(z,O,Ie/1e3,Y._getUIString("ScaleControl.Kilometers")):bc(z,O,Ie,Y._getUIString("ScaleControl.Meters"))}function bc(Y,z,K,O){var $=yf(K),pe=$/K;Y.style.width=z*pe+"px",Y.innerHTML=$+" "+O}function wc(Y){var z=Math.pow(10,Math.ceil(-Math.log(Y)/Math.LN10));return Math.round(Y*z)/z}function yf(Y){var z=Math.pow(10,(""+Math.floor(Y)).length-1),K=Y/z;return K=K>=10?10:K>=5?5:K>=3?3:K>=2?2:K>=1?1:wc(K),z*K}var Gl=function(z){this._fullscreen=!1,z&&z.container&&(z.container instanceof i.window.HTMLElement?this._container=z.container:i.warnOnce("Full screen control 'container' must be a DOM element.")),i.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in i.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in i.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in i.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in i.window.document&&(this._fullscreenchange="MSFullscreenChange")};Gl.prototype.onAdd=function(z){return this._map=z,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Gl.prototype.onRemove=function(){o.remove(this._controlContainer),this._map=null,i.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._checkFullscreenSupport=function(){return!!(i.window.document.fullscreenEnabled||i.window.document.mozFullScreenEnabled||i.window.document.msFullscreenEnabled||i.window.document.webkitFullscreenEnabled)},Gl.prototype._setupUI=function(){var z=this._fullscreenButton=o.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o.create("span","mapboxgl-ctrl-icon",z).setAttribute("aria-hidden",!0),z.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),i.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._updateTitle=function(){var z=this._getTitle();this._fullscreenButton.setAttribute("aria-label",z),this._fullscreenButton.title=z},Gl.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Gl.prototype._isFullscreen=function(){return this._fullscreen},Gl.prototype._changeIcon=function(){var z=i.window.document.fullscreenElement||i.window.document.mozFullScreenElement||i.window.document.webkitFullscreenElement||i.window.document.msFullscreenElement;z===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Gl.prototype._onClickFullscreen=function(){this._isFullscreen()?i.window.document.exitFullscreen?i.window.document.exitFullscreen():i.window.document.mozCancelFullScreen?i.window.document.mozCancelFullScreen():i.window.document.msExitFullscreen?i.window.document.msExitFullscreen():i.window.document.webkitCancelFullScreen&&i.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Fc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},ef=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),ls=function(Y){function z(K){Y.call(this),this.options=i.extend(Object.create(Fc),K),i.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.addTo=function(O){return this._map&&this.remove(),this._map=O,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new i.Event("open")),this},z.prototype.isOpen=function(){return!!this._map},z.prototype.remove=function(){return this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new i.Event("close")),this},z.prototype.getLngLat=function(){return this._lngLat},z.prototype.setLngLat=function(O){return this._lngLat=i.LngLat.convert(O),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},z.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},z.prototype.getElement=function(){return this._container},z.prototype.setText=function(O){return this.setDOMContent(i.window.document.createTextNode(O))},z.prototype.setHTML=function(O){var $=i.window.document.createDocumentFragment(),pe=i.window.document.createElement("body"),de;for(pe.innerHTML=O;de=pe.firstChild,!!de;)$.appendChild(de);return this.setDOMContent($)},z.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},z.prototype.setMaxWidth=function(O){return this.options.maxWidth=O,this._update(),this},z.prototype.setDOMContent=function(O){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(O),this._createCloseButton(),this._update(),this._focusFirstElement(),this},z.prototype.addClassName=function(O){this._container&&this._container.classList.add(O)},z.prototype.removeClassName=function(O){this._container&&this._container.classList.remove(O)},z.prototype.setOffset=function(O){return this.options.offset=O,this._update(),this},z.prototype.toggleClassName=function(O){if(this._container)return this._container.classList.toggle(O)},z.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=o.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},z.prototype._onMouseUp=function(O){this._update(O.point)},z.prototype._onMouseMove=function(O){this._update(O.point)},z.prototype._onDrag=function(O){this._update(O.point)},z.prototype._update=function(O){var $=this,pe=this._lngLat||this._trackPointer;if(!(!this._map||!pe||!this._content)&&(this._container||(this._container=o.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=o.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(vt){return $._container.classList.add(vt)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=ma(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!O))){var de=this._pos=this._trackPointer&&O?O:this._map.project(this._lngLat),Ie=this.options.anchor,$e=_f(this.options.offset);if(!Ie){var pt=this._container.offsetWidth,Kt=this._container.offsetHeight,ir;de.y+$e.bottom.ythis._map.transform.height-Kt?ir=["bottom"]:ir=[],de.xthis._map.transform.width-pt/2&&ir.push("right"),ir.length===0?Ie="bottom":Ie=ir.join("-")}var Jt=de.add($e[Ie]).round();o.setTransform(this._container,ro[Ie]+" translate("+Jt.x+"px,"+Jt.y+"px)"),Ao(this._container,Ie,"popup")}},z.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var O=this._container.querySelector(ef);O&&O.focus()}},z.prototype._onClose=function(){this.remove()},z}(i.Evented);function _f(Y){if(Y)if(typeof Y=="number"){var z=Math.round(Math.sqrt(.5*Math.pow(Y,2)));return{center:new i.Point(0,0),top:new i.Point(0,Y),"top-left":new i.Point(z,z),"top-right":new i.Point(-z,z),bottom:new i.Point(0,-Y),"bottom-left":new i.Point(z,-z),"bottom-right":new i.Point(-z,-z),left:new i.Point(Y,0),right:new i.Point(-Y,0)}}else if(Y instanceof i.Point||Array.isArray(Y)){var K=i.Point.convert(Y);return{center:K,top:K,"top-left":K,"top-right":K,bottom:K,"bottom-left":K,"bottom-right":K,left:K,right:K}}else return{center:i.Point.convert(Y.center||[0,0]),top:i.Point.convert(Y.top||[0,0]),"top-left":i.Point.convert(Y["top-left"]||[0,0]),"top-right":i.Point.convert(Y["top-right"]||[0,0]),bottom:i.Point.convert(Y.bottom||[0,0]),"bottom-left":i.Point.convert(Y["bottom-left"]||[0,0]),"bottom-right":i.Point.convert(Y["bottom-right"]||[0,0]),left:i.Point.convert(Y.left||[0,0]),right:i.Point.convert(Y.right||[0,0])};else return _f(new i.Point(0,0))}var ns={version:i.version,supported:a,setRTLTextPlugin:i.setRTLTextPlugin,getRTLTextPluginStatus:i.getRTLTextPluginStatus,Map:vn,NavigationControl:Xn,GeolocateControl:$c,AttributionControl:Rn,ScaleControl:Qc,FullscreenControl:Gl,Popup:ls,Marker:Jn,Style:mu,LngLat:i.LngLat,LngLatBounds:i.LngLatBounds,Point:i.Point,MercatorCoordinate:i.MercatorCoordinate,Evented:i.Evented,config:i.config,prewarm:jn,clearPrewarmedResources:la,get accessToken(){return i.config.ACCESS_TOKEN},set accessToken(Y){i.config.ACCESS_TOKEN=Y},get baseApiUrl(){return i.config.API_URL},set baseApiUrl(Y){i.config.API_URL=Y},get workerCount(){return Pi.workerCount},set workerCount(Y){Pi.workerCount=Y},get maxParallelImageRequests(){return i.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(Y){i.config.MAX_PARALLEL_IMAGE_REQUESTS=Y},clearStorage:function(z){i.clearTileCache(z)},workerUrl:""};return ns}),r})});var JUe=ye((Byr,KUe)=>{"use strict";var tw=Mr(),CHt=Pl().sanitizeHTML,LHt=HK(),ZUe=c1();function XUe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=ZUe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ig=XUe.prototype;ig.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=WF(t)};ig.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ig.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ig.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ig.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ig.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ig.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!WF(e)){var r=PHt(e);t.addSource(this.idSource,r)}};ig.findFollowingMapboxLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function YUe(e){var t={},r={};switch(e.type){case"circle":tw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":tw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":tw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=LHt(n.textposition,n.iconsize);tw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),tw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":tw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function PHt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=CHt(e.sourceattribution)),n}KUe.exports=function(t,r,n){var i=new XUe(t,r);return i.update(n),i}});var oVe=ye((Nyr,aVe)=>{"use strict";var KK=YK(),JK=Mr(),tVe=nx(),$Ue=ba(),IHt=Qa(),RHt=gv(),ZF=Nc(),rVe=Sg(),DHt=rVe.drawMode,zHt=rVe.selectMode,FHt=wf().prepSelect,qHt=wf().clearOutline,OHt=wf().clearSelectionsCache,BHt=wf().selectOnClick,_x=c1(),NHt=JUe();function iVe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Ah=iVe.prototype;Ah.plot=function(e,t,r){var n=this,i=t[n.id];n.map&&i.accesstoken!==n.accessToken&&(n.map.remove(),n.map=null,n.styleObj=null,n.traceHash={},n.layerList=[]);var a;n.map?a=new Promise(function(o,s){n.updateMap(e,t,o,s)}):a=new Promise(function(o,s){n.createMap(e,t,o,s)}),r.push(a)};Ah.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=nVe(a.style,t);i.accessToken=a.accesstoken;var s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new KK.Map({container:i.div,style:o.style,center:$K(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new KK.AttributionControl({compact:!0}));u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var c=[];c.push(new Promise(function(f){u.once("load",f)})),c=c.concat(tVe.fetchTraceGeoData(e)),Promise.all(c).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=nVe(o.style,t);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(tVe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&BHt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&ZF.click(n,l.originalEvent)}}};Ah.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=JK.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),zHt(a)||DHt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){FHt(l,u,c,t.dragOptions,a)},RHt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Ah.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Ah.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var QK=Mr(),UHt=C_(),VHt=Zd(),sVe=Rk();lVe.exports=function(t,r,n){UHt(t,r,n,{type:"mapbox",attributes:sVe,handleDefaults:HHt,partition:"y",accessToken:r._mapboxAccessToken})};function HHt(e,t,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),a=r("bounds.east"),o=r("bounds.south"),s=r("bounds.north");(i===void 0||a===void 0||o===void 0||s===void 0)&&delete t.bounds,VHt(e,t,{name:"layers",handleItemDefaults:GHt}),t._input=e}function GHt(e,t){function r(l,u){return QK.coerce(e,t,sVe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",QK.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),QK.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var XF=ye(Np=>{"use strict";var cVe=YK(),tm=Mr(),eJ=tm.strTranslate,jHt=tm.strScale,WHt=kd().getSubplotCalcData,ZHt=Zp(),XHt=xa(),fVe=ao(),YHt=Pl(),KHt=oVe(),xx="mapbox",Qm=Np.constants=c1();Np.name=xx;Np.attr="subplot";Np.idRoot=xx;Np.idRegex=Np.attrRegex=tm.counterRegex(xx);var JHt=["mapbox subplots and traces are deprecated!","Please consider switching to `map` subplots and traces.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");Np.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}};Np.layoutAttributes=Rk();Np.supplyLayoutDefaults=uVe();var hVe=!0;Np.plot=function(t){hVe&&(hVe=!1,tm.warn(JHt));var r=t._fullLayout,n=t.calcdata,i=r._subplots[xx];if(cVe.version!==Qm.requiredVersion)throw new Error(Qm.wrongVersionErrorMsg);var a=$Ht(t,i);cVe.accessToken=a;for(var o=0;op/2){var E=d.split("|").join("
");x.text(E).attr("data-unformatted",E).call(YHt.convertToTspans,e),b=fVe.bBox(x.node())}x.attr("transform",eJ(-3,-b.height+8)),v.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var k=1;b.width+6>p&&(k=p/(b.width+6));var A=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];v.attr("transform",eJ(A[0],A[1])+jHt(k))}};function $Ht(e,t){var r=e._fullLayout,n=e._context;if(n.mapboxAccessToken==="")return"";for(var i=[],a=[],o=!1,s=!1,l=0;l1&&tm.warn(Qm.multipleTokensErrorMsg),i[0]):(a.length&&tm.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function dVe(e){return typeof e=="string"&&(Qm.styleValuesMapbox.indexOf(e)!==-1||e.indexOf("mapbox://")===0||e.indexOf("stamen")===0)}Np.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[xx],n=0;n{"use strict";var Hyr=["*scattermapbox* trace is deprecated!","Please consider switching to the *scattermap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");vVe.exports={attributes:NF(),supplyDefaults:MUe(),colorbar:Kd(),formatLabels:VK(),calc:lz(),plot:NUe(),hoverPoints:jF().hoverPoints,eventData:GUe(),selectPoints:WUe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermapbox",basePlotModule:XF(),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}});var mVe=ye((jyr,gVe)=>{"use strict";gVe.exports=pVe()});var tJ=ye((Wyr,yVe)=>{"use strict";var f1=K5(),QHt=Jl(),eGt=Wo().hovertemplateAttrs,tGt=vl(),bx=no().extendFlat;yVe.exports=bx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:bx({},f1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:f1.text,hovertext:f1.hovertext,marker:{line:{color:bx({},f1.marker.line.color,{editType:"plot"}),width:bx({},f1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:bx({},f1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:bx({},f1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:bx({},f1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:f1.hoverinfo,hovertemplate:eGt({},{keys:["properties"]}),showlegend:bx({},tGt.showlegend,{dflt:!1})},QHt("",{cLetter:"z",editTypeOverride:"calc"}))});var xVe=ye((Zyr,_Ve)=>{"use strict";var qk=Mr(),rGt=Uh(),iGt=tJ();_Ve.exports=function(t,r,n,i){function a(c,f){return qk.coerce(t,r,iGt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!qk.isArrayOrTypedArray(o)||!o.length||!qk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||qk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),rGt(t,r,i,a,{prefix:"",cLetter:"z"}),qk.coerceSelectionMarkerOpacity(r,a)}});var rJ=ye((Xyr,TVe)=>{"use strict";var nGt=uo(),h1=Mr(),aGt=Mu(),oGt=ao(),sGt=rx().makeBlank,bVe=nx();function lGt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:sGt()};if(!r)return a;var o=bVe.extractTraceFeature(e);if(!o)return a;var s=aGt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;h1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return nGt(k)?+h1.constrain(k,0,1):0});var f;h1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;h1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var SVe=rJ().convert,uGt=rJ().convertOnSelect,AVe=c1().traceLayerPrefix;function MVe(e,t){this.type="choroplethmapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",AVe+t+"-fill"],["line",AVe+t+"-line"]],this.below=null}var wA=MVe.prototype;wA.update=function(e){this._update(SVe(e)),e[0].trace._glTrace=this};wA.updateOnSelect=function(e){this._update(uGt(e))};wA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};wA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};EVe.exports=function(t,r){var n=r[0].trace,i=new MVe(t,n.uid),a=i.sourceId,o=SVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var LVe=ye((Jyr,CVe)=>{"use strict";var Kyr=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");CVe.exports={attributes:tJ(),supplyDefaults:xVe(),colorbar:M_(),calc:Lz(),plot:kVe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";PVe.exports=LVe()});var nJ=ye((Qyr,DVe)=>{"use strict";var cGt=Jl(),fGt=Wo().hovertemplateAttrs,RVe=vl(),YF=NF(),iJ=no().extendFlat;DVe.exports=iJ({lon:YF.lon,lat:YF.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:YF.text,hovertext:YF.hovertext,hoverinfo:iJ({},RVe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:fGt(),showlegend:iJ({},RVe.showlegend,{dflt:!1})},cGt("",{cLetter:"z",editTypeOverride:"calc"}))});var FVe=ye((e1r,zVe)=>{"use strict";var hGt=Mr(),dGt=Uh(),vGt=nJ();zVe.exports=function(t,r,n,i){function a(u,c){return hGt.coerce(t,r,vGt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),dGt(t,r,i,a,{prefix:"",cLetter:"z"})}});var BVe=ye((t1r,OVe)=>{"use strict";var aJ=uo(),pGt=Mr().isArrayOrTypedArray,oJ=es().BADNUM,gGt=zv(),qVe=Mr()._;OVe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=pGt(a)&&a.length,s=0;s{"use strict";var mGt=uo(),sJ=Mr(),NVe=va(),UVe=Mu(),VVe=es().BADNUM,yGt=rx().makeBlank;HVe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:yGt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=sJ.isArrayOrTypedArray(l)&&l.length,f=sJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=UVe.extractOpts(r),p=b.reversescale?UVe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=NVe.opacity(E)<1?E:NVe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var jVe=GVe(),_Gt=c1().traceLayerPrefix;function WVe(e,t){this.type="densitymapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",_Gt+t+"-heatmap"]],this.below=null}var KF=WVe.prototype;KF.update=function(e){var t=this.subplot,r=this.layerList,n=jVe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};KF.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};ZVe.exports=function(t,r){var n=r[0].trace,i=new WVe(t,n.uid),a=i.sourceId,o=jVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var KVe=ye((n1r,YVe)=>{"use strict";var xGt=Qa(),bGt=jF().hoverPoints,wGt=jF().getExtraText;YVe.exports=function(t,r,n){var i=bGt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=xGt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=wGt(s,l,o[0].t.labels),[a]}}});var $Ve=ye((a1r,JVe)=>{"use strict";JVe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var eHe=ye((s1r,QVe)=>{"use strict";var o1r=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");QVe.exports={attributes:nJ(),supplyDefaults:FVe(),colorbar:M_(),formatLabels:VK(),calc:BVe(),plot:XVe(),hoverPoints:KVe(),eventData:$Ve(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";tHe.exports=eHe()});var nHe=ye((u1r,iHe)=>{iHe.exports={version:8,name:"orto",metadata:{"maputnik:renderer":"mlgljs"},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","taxiway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"aeroway-runway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","runway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:14,filter:["all",["==","$type","Point"],["<=","rank",14],["has","name"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":11,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{id:"poi-railway",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:13,filter:["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9,"icon-optional":!1,"icon-ignore-placement":!1,"icon-allow-overlap":!1,"text-ignore-placement":!1,"text-allow-overlap":!1,"text-optional":!0},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==","class","path"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["==","$type","LineString"],["in","class","minor","service","track"]],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["in","class","primary","secondary","tertiary","trunk"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-shield",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"highway-shield-us-other",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"place-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:12,filter:["!in","class","city","town","village","country","continent"],layout:{"text-letter-spacing":.1,"text-size":{base:1.2,stops:[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":`{name:latin} +{name:nonlatin}`,"text-transform":"uppercase","text-max-width":9,visibility:"visible"},paint:{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{id:"place-village",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:10,filter:["==","class","village"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,12],[15,16]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}});var oHe=ye((c1r,aHe)=>{aHe.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}});var wx=ye((f1r,fHe)=>{"use strict";var TGt=Y1(),AGt=nHe(),SGt=oHe(),MGt='\xA9 OpenStreetMap contributors',sHe="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",lHe="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",JF="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",EGt="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",kGt="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",CGt="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",cHe={basic:JF,streets:JF,outdoors:JF,light:sHe,dark:lHe,satellite:SGt,"satellite-streets":AGt,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:MGt,tiles:["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},layers:[{id:"plotly-osm-tiles",type:"raster",source:"plotly-osm-tiles",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"white-bg":{id:"white-bg",version:8,sources:{},layers:[{id:"white-bg",type:"background",paint:{"background-color":"#FFFFFF"},minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":sHe,"carto-darkmatter":lHe,"carto-voyager":JF,"carto-positron-nolabels":EGt,"carto-darkmatter-nolabels":kGt,"carto-voyager-nolabels":CGt},uHe=TGt(cHe);fHe.exports={styleValueDflt:"basic",stylesMap:cHe,styleValuesMap:uHe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",uHe.join(", "),"or use a tile service."].join(` +`),mapOnErrorMsg:"Map error."}});var Ok=ye((h1r,gHe)=>{"use strict";var hHe=Mr(),dHe=va().defaultLine,LGt=Ju().attributes,PGt=Su(),IGt=Uc().textposition,RGt=Bu().overrideAll,DGt=Vs().templatedArray,vHe=wx(),pHe=PGt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});pHe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var zGt=gHe.exports=RGt({_arrayAttrRegexps:[hHe.counterRegex("map",".layers",!0)],domain:LGt({name:"map"}),style:{valType:"any",values:vHe.styleValuesMap,dflt:vHe.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:DGt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:dHe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:dHe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:pHe,textposition:hHe.extendFlat({},IGt,{arrayOk:!1})}})},"plot","from-root");zGt.uirevision={valType:"any",editType:"none"}});var $F=ye((d1r,_He)=>{"use strict";var FGt=Wo().hovertemplateAttrs,qGt=Wo().texttemplateAttrs,OGt=Eg(),Bk=H2(),TA=Uc(),mHe=Ok(),BGt=vl(),NGt=Jl(),rw=no().extendFlat,UGt=Bu().overrideAll,VGt=Ok(),yHe=Bk.line,AA=Bk.marker;_He.exports=UGt({lon:Bk.lon,lat:Bk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:rw({},VGt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:rw({},AA.opacity,{dflt:1})},mode:rw({},TA.mode,{dflt:"markers"}),text:rw({},TA.text,{}),texttemplate:qGt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:rw({},TA.hovertext,{}),line:{color:yHe.color,width:yHe.width},connectgaps:TA.connectgaps,marker:rw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:AA.opacity,size:AA.size,sizeref:AA.sizeref,sizemin:AA.sizemin,sizemode:AA.sizemode},NGt("marker")),fill:Bk.fill,fillcolor:OGt(),textfont:mHe.layers.symbol.textfont,textposition:mHe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:TA.selected.marker},unselected:{marker:TA.unselected.marker},hoverinfo:rw({},BGt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:FGt()},"calc","nested")});var lJ=ye((v1r,xHe)=>{"use strict";var HGt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];xHe.exports={isSupportedFont:function(e){return HGt.indexOf(e)!==-1}}});var THe=ye((p1r,wHe)=>{"use strict";var Nk=Mr(),uJ=lu(),GGt=$p(),jGt=R0(),WGt=D0(),ZGt=Ig(),bHe=$F(),XGt=lJ().isSupportedFont;wHe.exports=function(t,r,n,i){function a(p,E){return Nk.coerce(t,r,bHe,p,E)}function o(p,E){return Nk.coerce2(t,r,bHe,p,E)}var s=YGt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),uJ.hasMarkers(r)){GGt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Nk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Nk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}uJ.hasLines(r)&&(jGt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||uJ.hasText(r)){var b=i.font.family;WGt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:XGt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&ZGt(t,r,n,a),Nk.coerceSelectionMarkerOpacity(r,a)};function YGt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var cJ=ye((g1r,SHe)=>{"use strict";var AHe=Qa();SHe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=AHe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=AHe.tickText(o,o.c2l(s[1]),!0).text,i}});var fJ=ye((m1r,EHe)=>{"use strict";var MHe=Mr();EHe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=MHe.isArrayOrTypedArray(r)?MHe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var RHe=ye((y1r,IHe)=>{"use strict";var LHe=uo(),nv=Mr(),KGt=es().BADNUM,e7=rx(),kHe=Mu(),JGt=ao(),$Gt=S3(),t7=lu(),QGt=lJ().isSupportedFont,ejt=fJ(),tjt=rp().appendArrayPointValue,rjt=Pl().NEWLINES,ijt=Pl().BR_TAG_ALL;IHe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=t7.hasLines(n),s=t7.hasMarkers(n),l=t7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=QF("fill"),d=QF("line"),v=QF("circle"),x=QF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=e7.calcTraceToLineCoords(r)),a&&(h.geojson=e7.makePolygon(p),h.layout.visibility="visible",nv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=e7.makeLine(p),d.layout.visibility="visible",nv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=njt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":dJ(n.cluster.color,n.cluster.step),"circle-radius":dJ(n.cluster.size,n.cluster.step),"circle-opacity":dJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":CHe(n),"text-size":12}}),nv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=ajt(r,t),nv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(nv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&nv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,nv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=ejt(n.textposition,k);nv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":CHe(n)}),nv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function QF(e){return{type:e,geojson:e7.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function njt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=nv.isArrayOrTypedArray(r.color),a=nv.isArrayOrTypedArray(r.size),o=nv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(kHe.hasColorscale(t,"marker")?c=kHe.makeColorScaleFuncFromTrace(r):c=nv.identity);var f;a&&(f=$Gt(t));var h;o&&(h=function(k){var A=LHe(k)?+nv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),QGt(s)||(s=r);var l=s.split(", ");return l}});var qHe=ye((_1r,FHe)=>{"use strict";var ojt=Mr(),DHe=RHe(),SA=wx().traceLayerPrefix,ng={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function zHe(e,t,r,n){this.type="scattermap",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:SA+t+"-fill",line:SA+t+"-line",circle:SA+t+"-circle",symbol:SA+t+"-symbol",cluster:SA+t+"-cluster",clusterCount:SA+t+"-cluster-count"},this.below=null}var Uk=zHe.prototype;Uk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&ojt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Uk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Uk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=ng.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?ng.cluster:ng.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};FHe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new zHe(t,n.uid,i,a),s=DHe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var sjt=Nc(),vJ=Mr(),ljt=oT(),ujt=vJ.fillText,cjt=es().BADNUM,fjt=wx().traceLayerPrefix;function hjt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=fjt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===cjt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=vJ.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(sjt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[vJ.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=ljt(i,b),e.extraText=OHe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function OHe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&ujt(t,e,u),u.join("
")}BHe.exports={hoverPoints:hjt,getExtraText:OHe}});var UHe=ye((b1r,NHe)=>{"use strict";NHe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var HHe=ye((w1r,VHe)=>{"use strict";var djt=Mr(),vjt=lu(),pjt=es().BADNUM;VHe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!vjt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof pJ=="object"&&typeof gJ!="undefined"?gJ.exports=t():(e=typeof globalThis!="undefined"?globalThis:e||self,e.maplibregl=t())})(pJ,function(){"use strict";var e={},t={};function r(i,a,o){if(t[i]=o,i==="index"){var s="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",l={};return t.shared(l),t.index(e,l),typeof window!="undefined"&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}r("shared",["exports"],function(i){"use strict";function a(R,S,D,j){return new(D||(D=Promise))(function(te,ue){function ve(at){try{Ze(j.next(at))}catch(Tt){ue(Tt)}}function De(at){try{Ze(j.throw(at))}catch(Tt){ue(Tt)}}function Ze(at){var Tt;at.done?te(at.value):(Tt=at.value,Tt instanceof D?Tt:new D(function(Ft){Ft(Tt)})).then(ve,De)}Ze((j=j.apply(R,S||[])).next())})}function o(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}typeof SuppressedError=="function"&&SuppressedError;var s=l;function l(R,S){this.x=R,this.y=S}l.prototype={clone:function(){return new l(this.x,this.y)},add:function(R){return this.clone()._add(R)},sub:function(R){return this.clone()._sub(R)},multByPoint:function(R){return this.clone()._multByPoint(R)},divByPoint:function(R){return this.clone()._divByPoint(R)},mult:function(R){return this.clone()._mult(R)},div:function(R){return this.clone()._div(R)},rotate:function(R){return this.clone()._rotate(R)},rotateAround:function(R,S){return this.clone()._rotateAround(R,S)},matMult:function(R){return this.clone()._matMult(R)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(R){return this.x===R.x&&this.y===R.y},dist:function(R){return Math.sqrt(this.distSqr(R))},distSqr:function(R){var S=R.x-this.x,D=R.y-this.y;return S*S+D*D},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(R){return Math.atan2(this.y-R.y,this.x-R.x)},angleWith:function(R){return this.angleWithSep(R.x,R.y)},angleWithSep:function(R,S){return Math.atan2(this.x*S-this.y*R,this.x*R+this.y*S)},_matMult:function(R){var S=R[2]*this.x+R[3]*this.y;return this.x=R[0]*this.x+R[1]*this.y,this.y=S,this},_add:function(R){return this.x+=R.x,this.y+=R.y,this},_sub:function(R){return this.x-=R.x,this.y-=R.y,this},_mult:function(R){return this.x*=R,this.y*=R,this},_div:function(R){return this.x/=R,this.y/=R,this},_multByPoint:function(R){return this.x*=R.x,this.y*=R.y,this},_divByPoint:function(R){return this.x/=R.x,this.y/=R.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var R=this.y;return this.y=this.x,this.x=-R,this},_rotate:function(R){var S=Math.cos(R),D=Math.sin(R),j=D*this.x+S*this.y;return this.x=S*this.x-D*this.y,this.y=j,this},_rotateAround:function(R,S){var D=Math.cos(R),j=Math.sin(R),te=S.y+j*(this.x-S.x)+D*(this.y-S.y);return this.x=S.x+D*(this.x-S.x)-j*(this.y-S.y),this.y=te,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},l.convert=function(R){return R instanceof l?R:Array.isArray(R)?new l(R[0],R[1]):R};var u=o(s),c=f;function f(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}f.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var h=o(c);let d,v;function x(){return d==null&&(d=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),d}function b(){if(v==null&&(v=!1,x())){let S=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(S){for(let j=0;j<5*5;j++){let te=4*j;S.fillStyle=`rgb(${te},${te+1},${te+2})`,S.fillRect(j%5,Math.floor(j/5),1,1)}let D=S.getImageData(0,0,5,5).data;for(let j=0;j<5*5*4;j++)if(j%4!=3&&D[j]!==j){v=!0;break}}}return v||!1}function p(R,S,D,j){let te=new h(R,S,D,j);return ue=>te.solve(ue)}let E=p(.25,.1,.25,1);function k(R,S,D){return Math.min(D,Math.max(S,R))}function A(R,S,D){let j=D-S,te=((R-S)%j+j)%j+S;return te===S?D:te}function L(R,...S){for(let D of S)for(let j in D)R[j]=D[j];return R}let _=1;function C(R,S,D){let j={};for(let te in R)j[te]=S.call(this,R[te],te,R);return j}function M(R,S,D){let j={};for(let te in R)S.call(this,R[te],te,R)&&(j[te]=R[te]);return j}function g(R){return Array.isArray(R)?R.map(g):typeof R=="object"&&R?C(R,g):R}let P={};function T(R){P[R]||(typeof console!="undefined"&&console.warn(R),P[R]=!0)}function F(R,S,D){return(D.y-R.y)*(S.x-R.x)>(S.y-R.y)*(D.x-R.x)}function q(R){return typeof WorkerGlobalScope!="undefined"&&R!==void 0&&R instanceof WorkerGlobalScope}let V=null;function H(R){return typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap}let X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function G(R,S,D,j,te){return a(this,void 0,void 0,function*(){if(typeof VideoFrame=="undefined")throw new Error("VideoFrame not supported");let ue=new VideoFrame(R,{timestamp:0});try{let ve=ue==null?void 0:ue.format;if(!ve||!ve.startsWith("BGR")&&!ve.startsWith("RGB"))throw new Error(`Unrecognized format ${ve}`);let De=ve.startsWith("BGR"),Ze=new Uint8ClampedArray(j*te*4);if(yield ue.copyTo(Ze,function(at,Tt,Ft,Qt,sr){let Tr=4*Math.max(-Tt,0),Pr=(Math.max(0,Ft)-Ft)*Qt*4+Tr,$r=4*Qt,ni=Math.max(0,Tt),Di=Math.max(0,Ft);return{rect:{x:ni,y:Di,width:Math.min(at.width,Tt+Qt)-ni,height:Math.min(at.height,Ft+sr)-Di},layout:[{offset:Pr,stride:$r}]}}(R,S,D,j,te)),De)for(let at=0;atq(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,Te=function(R,S){if(/:\/\//.test(R.url)&&!/^https?:|^file:/.test(R.url)){let j=Me(R.url);if(j)return j(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,targetMapId:ke},S)}if(!(/^file:/.test(D=R.url)||/^file:/.test(ie())&&!/^\w+:/.test(D))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(j,te){return a(this,void 0,void 0,function*(){let ue=new Request(j.url,{method:j.method||"GET",body:j.body,credentials:j.credentials,headers:j.headers,cache:j.cache,referrer:ie(),signal:te.signal});j.type!=="json"||ue.headers.has("Accept")||ue.headers.set("Accept","application/json");let ve=yield fetch(ue);if(!ve.ok){let at=yield ve.blob();throw new ge(ve.status,ve.statusText,j.url,at)}let De;De=j.type==="arrayBuffer"||j.type==="image"?ve.arrayBuffer():j.type==="json"?ve.json():ve.text();let Ze=yield De;if(te.signal.aborted)throw ae();return{data:Ze,cacheControl:ve.headers.get("Cache-Control"),expires:ve.headers.get("Expires")}})}(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,mustQueue:!0,targetMapId:ke},S)}var D;return function(j,te){return new Promise((ue,ve)=>{var De;let Ze=new XMLHttpRequest;Ze.open(j.method||"GET",j.url,!0),j.type!=="arrayBuffer"&&j.type!=="image"||(Ze.responseType="arraybuffer");for(let at in j.headers)Ze.setRequestHeader(at,j.headers[at]);j.type==="json"&&(Ze.responseType="text",!((De=j.headers)===null||De===void 0)&&De.Accept||Ze.setRequestHeader("Accept","application/json")),Ze.withCredentials=j.credentials==="include",Ze.onerror=()=>{ve(new Error(Ze.statusText))},Ze.onload=()=>{if(!te.signal.aborted)if((Ze.status>=200&&Ze.status<300||Ze.status===0)&&Ze.response!==null){let at=Ze.response;if(j.type==="json")try{at=JSON.parse(Ze.response)}catch(Tt){return void ve(Tt)}ue({data:at,cacheControl:Ze.getResponseHeader("Cache-Control"),expires:Ze.getResponseHeader("Expires")})}else{let at=new Blob([Ze.response],{type:Ze.getResponseHeader("Content-Type")});ve(new ge(Ze.status,Ze.statusText,j.url,at))}},te.signal.addEventListener("abort",()=>{Ze.abort(),ve(ae())}),Ze.send(j.body)})}(R,S)};function Ee(R){if(!R||R.indexOf("://")<=0||R.indexOf("data:image/")===0||R.indexOf("blob:")===0)return!0;let S=new URL(R),D=window.location;return S.protocol===D.protocol&&S.host===D.host}function Ae(R,S,D){D[R]&&D[R].indexOf(S)!==-1||(D[R]=D[R]||[],D[R].push(S))}function ze(R,S,D){if(D&&D[R]){let j=D[R].indexOf(S);j!==-1&&D[R].splice(j,1)}}class Ce{constructor(S,D={}){L(this,D),this.type=S}}class me extends Ce{constructor(S,D={}){super("error",L({error:S},D))}}class Re{on(S,D){return this._listeners=this._listeners||{},Ae(S,D,this._listeners),this}off(S,D){return ze(S,D,this._listeners),ze(S,D,this._oneTimeListeners),this}once(S,D){return D?(this._oneTimeListeners=this._oneTimeListeners||{},Ae(S,D,this._oneTimeListeners),this):new Promise(j=>this.once(S,j))}fire(S,D){typeof S=="string"&&(S=new Ce(S,D||{}));let j=S.type;if(this.listens(j)){S.target=this;let te=this._listeners&&this._listeners[j]?this._listeners[j].slice():[];for(let De of te)De.call(this,S);let ue=this._oneTimeListeners&&this._oneTimeListeners[j]?this._oneTimeListeners[j].slice():[];for(let De of ue)ze(j,De,this._oneTimeListeners),De.call(this,S);let ve=this._eventedParent;ve&&(L(S,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),ve.fire(S))}else S instanceof me&&console.error(S.error);return this}listens(S){return this._listeners&&this._listeners[S]&&this._listeners[S].length>0||this._oneTimeListeners&&this._oneTimeListeners[S]&&this._oneTimeListeners[S].length>0||this._eventedParent&&this._eventedParent.listens(S)}setEventedParent(S,D){return this._eventedParent=S,this._eventedParentData=D,this}}var ce={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Ge=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function nt(R,S){let D={};for(let j in R)j!=="ref"&&(D[j]=R[j]);return Ge.forEach(j=>{j in S&&(D[j]=S[j])}),D}function ct(R,S){if(Array.isArray(R)){if(!Array.isArray(S)||R.length!==S.length)return!1;for(let D=0;D`:R.itemType.kind==="value"?"array":`array<${S}>`}return R.kind}let Ve=[Lt,St,Et,dt,Ht,Br,$t,Ne(fr),Or,Nr,ut];function Xe(R,S){if(S.kind==="error")return null;if(R.kind==="array"){if(S.kind==="array"&&(S.N===0&&S.itemType.kind==="value"||!Xe(R.itemType,S.itemType))&&(typeof R.N!="number"||R.N===S.N))return null}else{if(R.kind===S.kind)return null;if(R.kind==="value"){for(let D of Ve)if(!Xe(D,S))return null}}return`Expected ${Ye(R)} but found ${Ye(S)} instead.`}function ht(R,S){return S.some(D=>D.kind===R.kind)}function Le(R,S){return S.some(D=>D==="null"?R===null:D==="array"?Array.isArray(R):D==="object"?R&&!Array.isArray(R)&&typeof R=="object":D===typeof R)}function xe(R,S){return R.kind==="array"&&S.kind==="array"?R.itemType.kind===S.itemType.kind&&typeof R.N=="number":R.kind===S.kind}let Se=.96422,lt=.82521,Gt=4/29,Vt=6/29,ar=3*Vt*Vt,Qr=Vt*Vt*Vt,ai=Math.PI/180,jr=180/Math.PI;function ri(R){return(R%=360)<0&&(R+=360),R}function bi([R,S,D,j]){let te,ue,ve=Wi((.2225045*(R=nn(R))+.7168786*(S=nn(S))+.0606169*(D=nn(D)))/1);R===S&&S===D?te=ue=ve:(te=Wi((.4360747*R+.3850649*S+.1430804*D)/Se),ue=Wi((.0139322*R+.0971045*S+.7141733*D)/lt));let De=116*ve-16;return[De<0?0:De,500*(te-ve),200*(ve-ue),j]}function nn(R){return R<=.04045?R/12.92:Math.pow((R+.055)/1.055,2.4)}function Wi(R){return R>Qr?Math.pow(R,1/3):R/ar+Gt}function Ni([R,S,D,j]){let te=(R+16)/116,ue=isNaN(S)?te:te+S/500,ve=isNaN(D)?te:te-D/200;return te=1*$i(te),ue=Se*$i(ue),ve=lt*$i(ve),[_n(3.1338561*ue-1.6168667*te-.4906146*ve),_n(-.9787684*ue+1.9161415*te+.033454*ve),_n(.0719453*ue-.2289914*te+1.4052427*ve),j]}function _n(R){return(R=R<=.00304?12.92*R:1.055*Math.pow(R,1/2.4)-.055)<0?0:R>1?1:R}function $i(R){return R>Vt?R*R*R:ar*(R-Gt)}function zn(R){return parseInt(R.padEnd(2,R),16)/255}function Wn(R,S){return It(S?R/100:R,0,1)}function It(R,S,D){return Math.min(Math.max(S,R),D)}function ft(R){return!R.some(Number.isNaN)}let jt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Zt{constructor(S,D,j,te=1,ue=!0){this.r=S,this.g=D,this.b=j,this.a=te,ue||(this.r*=te,this.g*=te,this.b*=te,te||this.overwriteGetter("rgb",[S,D,j,te]))}static parse(S){if(S instanceof Zt)return S;if(typeof S!="string")return;let D=function(j){if((j=j.toLowerCase().trim())==="transparent")return[0,0,0,0];let te=jt[j];if(te){let[ve,De,Ze]=te;return[ve/255,De/255,Ze/255,1]}if(j.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(j)){let ve=j.length<6?1:2,De=1;return[zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+ve)||"ff")]}if(j.startsWith("rgb")){let ve=j.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ve){let[De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di]=ve,pi=[Tt||" ",sr||" ",$r].join("");if(pi===" "||pi===" /"||pi===",,"||pi===",,,"){let ki=[at,Qt,Pr].join(""),Zi=ki==="%%%"?100:ki===""?255:0;if(Zi){let ta=[It(+Ze/Zi,0,1),It(+Ft/Zi,0,1),It(+Tr/Zi,0,1),ni?Wn(+ni,Di):1];if(ft(ta))return ta}}return}}let ue=j.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ue){let[ve,De,Ze,at,Tt,Ft,Qt,sr,Tr]=ue,Pr=[Ze||" ",Tt||" ",Qt].join("");if(Pr===" "||Pr===" /"||Pr===",,"||Pr===",,,"){let $r=[+De,It(+at,0,100),It(+Ft,0,100),sr?Wn(+sr,Tr):1];if(ft($r))return function([ni,Di,pi,ki]){function Zi(ta){let Va=(ta+ni/30)%12,Io=Di*Math.min(pi,1-pi);return pi-Io*Math.max(-1,Math.min(Va-3,9-Va,1))}return ni=ri(ni),Di/=100,pi/=100,[Zi(0),Zi(8),Zi(4),ki]}($r)}}}(S);return D?new Zt(...D,!1):void 0}get rgb(){let{r:S,g:D,b:j,a:te}=this,ue=te||1/0;return this.overwriteGetter("rgb",[S/ue,D/ue,j/ue,te])}get hcl(){return this.overwriteGetter("hcl",function(S){let[D,j,te,ue]=bi(S),ve=Math.sqrt(j*j+te*te);return[Math.round(1e4*ve)?ri(Math.atan2(te,j)*jr):NaN,ve,D,ue]}(this.rgb))}get lab(){return this.overwriteGetter("lab",bi(this.rgb))}overwriteGetter(S,D){return Object.defineProperty(this,S,{value:D}),D}toString(){let[S,D,j,te]=this.rgb;return`rgba(${[S,D,j].map(ue=>Math.round(255*ue)).join(",")},${te})`}}Zt.black=new Zt(0,0,0,1),Zt.white=new Zt(1,1,1,1),Zt.transparent=new Zt(0,0,0,0),Zt.red=new Zt(1,0,0,1);class yr{constructor(S,D,j){this.sensitivity=S?D?"variant":"case":D?"accent":"base",this.locale=j,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(S,D){return this.collator.compare(S,D)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(S,D,j,te,ue){this.text=S,this.image=D,this.scale=j,this.fontStack=te,this.textColor=ue}}class Zr{constructor(S){this.sections=S}static fromString(S){return new Zr([new Fr(S,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(S=>S.text.length!==0||S.image&&S.image.name.length!==0)}static factory(S){return S instanceof Zr?S:Zr.fromString(S)}toString(){return this.sections.length===0?"":this.sections.map(S=>S.text).join("")}}class Vr{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Vr)return S;if(typeof S=="number")return new Vr([S,S,S,S]);if(Array.isArray(S)&&!(S.length<1||S.length>4)){for(let D of S)if(typeof D!="number")return;switch(S.length){case 1:S=[S[0],S[0],S[0],S[0]];break;case 2:S=[S[0],S[1],S[0],S[1]];break;case 3:S=[S[0],S[1],S[2],S[1]]}return new Vr(S)}}toString(){return JSON.stringify(this.values)}}let gi=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Si{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Si)return S;if(Array.isArray(S)&&!(S.length<1)&&S.length%2==0){for(let D=0;D=0&&R<=255&&typeof S=="number"&&S>=0&&S<=255&&typeof D=="number"&&D>=0&&D<=255?j===void 0||typeof j=="number"&&j>=0&&j<=1?null:`Invalid rgba value [${[R,S,D,j].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof j=="number"?[R,S,D,j]:[R,S,D]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Gi(R){if(R===null||typeof R=="string"||typeof R=="boolean"||typeof R=="number"||R instanceof Zt||R instanceof yr||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi)return!0;if(Array.isArray(R)){for(let S of R)if(!Gi(S))return!1;return!0}if(typeof R=="object"){for(let S in R)if(!Gi(R[S]))return!1;return!0}return!1}function Ki(R){if(R===null)return Lt;if(typeof R=="string")return Et;if(typeof R=="boolean")return dt;if(typeof R=="number")return St;if(R instanceof Zt)return Ht;if(R instanceof yr)return _r;if(R instanceof Zr)return Br;if(R instanceof Vr)return Or;if(R instanceof Si)return ut;if(R instanceof Mi)return Nr;if(Array.isArray(R)){let S=R.length,D;for(let j of R){let te=Ki(j);if(D){if(D===te)continue;D=fr;break}D=te}return Ne(D||fr,S)}return $t}function ka(R){let S=typeof R;return R===null?"":S==="string"||S==="number"||S==="boolean"?String(R):R instanceof Zt||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi?R.toString():JSON.stringify(R)}class jn{constructor(S,D){this.type=S,this.value=D}static parse(S,D){if(S.length!==2)return D.error(`'literal' expression requires exactly one argument, but found ${S.length-1} instead.`);if(!Gi(S[1]))return D.error("invalid value");let j=S[1],te=Ki(j),ue=D.expectedType;return te.kind!=="array"||te.N!==0||!ue||ue.kind!=="array"||typeof ue.N=="number"&&ue.N!==0||(te=ue),new jn(te,j)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class la{constructor(S){this.name="ExpressionEvaluationError",this.message=S}toJSON(){return this.message}}let Fa={string:Et,number:St,boolean:dt,object:$t};class Ra{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j,te=1,ue=S[0];if(ue==="array"){let De,Ze;if(S.length>2){let at=S[1];if(typeof at!="string"||!(at in Fa)||at==="object")return D.error('The item type argument of "array" must be one of string, number, boolean',1);De=Fa[at],te++}else De=fr;if(S.length>3){if(S[2]!==null&&(typeof S[2]!="number"||S[2]<0||S[2]!==Math.floor(S[2])))return D.error('The length argument to "array" must be a positive integer literal',2);Ze=S[2],te++}j=Ne(De,Ze)}else{if(!Fa[ue])throw new Error(`Types doesn't contain name = ${ue}`);j=Fa[ue]}let ve=[];for(;teS.outputDefined())}}let jo={"to-boolean":dt,"to-color":Ht,"to-number":St,"to-string":Et};class oa{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[0];if(!jo[j])throw new Error(`Can't parse ${j} as it is not part of the known types`);if((j==="to-boolean"||j==="to-string")&&S.length!==2)return D.error("Expected one argument.");let te=jo[j],ue=[];for(let ve=1;ve4?`Invalid rbga value ${JSON.stringify(D)}: expected an array containing either three or four numeric values.`:Pi(D[0],D[1],D[2],D[3]),!j))return new Zt(D[0]/255,D[1]/255,D[2]/255,D[3])}throw new la(j||`Could not parse color from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"padding":{let D;for(let j of this.args){D=j.evaluate(S);let te=Vr.parse(D);if(te)return te}throw new la(`Could not parse padding from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"variableAnchorOffsetCollection":{let D;for(let j of this.args){D=j.evaluate(S);let te=Si.parse(D);if(te)return te}throw new la(`Could not parse variableAnchorOffsetCollection from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"number":{let D=null;for(let j of this.args){if(D=j.evaluate(S),D===null)return 0;let te=Number(D);if(!isNaN(te))return te}throw new la(`Could not convert ${JSON.stringify(D)} to number.`)}case"formatted":return Zr.fromString(ka(this.args[0].evaluate(S)));case"resolvedImage":return Mi.fromString(ka(this.args[0].evaluate(S)));default:return ka(this.args[0].evaluate(S))}}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}let Sn=["Unknown","Point","LineString","Polygon"];class Ha{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Sn[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(S){let D=this._parseColorCache[S];return D||(D=this._parseColorCache[S]=Zt.parse(S)),D}}class oo{constructor(S,D,j=[],te,ue=new bt,ve=[]){this.registry=S,this.path=j,this.key=j.map(De=>`[${De}]`).join(""),this.scope=ue,this.errors=ve,this.expectedType=te,this._isConstant=D}parse(S,D,j,te,ue={}){return D?this.concat(D,j,te)._parse(S,ue):this._parse(S,ue)}_parse(S,D){function j(te,ue,ve){return ve==="assert"?new Ra(ue,[te]):ve==="coerce"?new oa(ue,[te]):te}if(S!==null&&typeof S!="string"&&typeof S!="boolean"&&typeof S!="number"||(S=["literal",S]),Array.isArray(S)){if(S.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let te=S[0];if(typeof te!="string")return this.error(`Expression name must be a string, but found ${typeof te} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let ue=this.registry[te];if(ue){let ve=ue.parse(S,this);if(!ve)return null;if(this.expectedType){let De=this.expectedType,Ze=ve.type;if(De.kind!=="string"&&De.kind!=="number"&&De.kind!=="boolean"&&De.kind!=="object"&&De.kind!=="array"||Ze.kind!=="value")if(De.kind!=="color"&&De.kind!=="formatted"&&De.kind!=="resolvedImage"||Ze.kind!=="value"&&Ze.kind!=="string")if(De.kind!=="padding"||Ze.kind!=="value"&&Ze.kind!=="number"&&Ze.kind!=="array")if(De.kind!=="variableAnchorOffsetCollection"||Ze.kind!=="value"&&Ze.kind!=="array"){if(this.checkSubtype(De,Ze))return null}else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"assert")}if(!(ve instanceof jn)&&ve.type.kind!=="resolvedImage"&&this._isConstant(ve)){let De=new Ha;try{ve=new jn(ve.type,ve.evaluate(De))}catch(Ze){return this.error(Ze.message),null}}return ve}return this.error(`Unknown expression "${te}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(S===void 0?"'undefined' value invalid. Use null instead.":typeof S=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof S} instead.`)}concat(S,D,j){let te=typeof S=="number"?this.path.concat(S):this.path,ue=j?this.scope.concat(j):this.scope;return new oo(this.registry,this._isConstant,te,D||null,ue,this.errors)}error(S,...D){let j=`${this.key}${D.map(te=>`[${te}]`).join("")}`;this.errors.push(new xt(j,S))}checkSubtype(S,D){let j=Xe(S,D);return j&&this.error(j),j}}class xn{constructor(S,D){this.type=D.type,this.bindings=[].concat(S),this.result=D}evaluate(S){return this.result.evaluate(S)}eachChild(S){for(let D of this.bindings)S(D[1]);S(this.result)}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found ${S.length-1} instead.`);let j=[];for(let ue=1;ue=j.length)throw new la(`Array index out of bounds: ${D} > ${j.length-1}.`);if(D!==Math.floor(D))throw new la(`Array index must be an integer, but found ${D} instead.`);return j[D]}eachChild(S){S(this.index),S(this.input)}outputDefined(){return!1}}class Hr{constructor(S,D){this.type=dt,this.needle=S,this.haystack=D}static parse(S,D){if(S.length!==3)return D.error(`Expected 2 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);return j&&te?ht(j.type,[dt,Et,St,Lt,fr])?new Hr(j,te):D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`):null}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!j)return!1;if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);if(!Le(j,["string","array"]))throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`);return j.indexOf(D)>=0}eachChild(S){S(this.needle),S(this.haystack)}outputDefined(){return!0}}class ti{constructor(S,D,j){this.type=St,this.needle=S,this.haystack=D,this.fromIndex=j}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);if(!j||!te)return null;if(!ht(j.type,[dt,Et,St,Lt,fr]))return D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new ti(j,te,ue):null}return new ti(j,te)}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);let te;if(this.fromIndex&&(te=this.fromIndex.evaluate(S)),Le(j,["string"])){let ue=j.indexOf(D,te);return ue===-1?-1:[...j.slice(0,ue)].length}if(Le(j,["array"]))return j.indexOf(D,te);throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`)}eachChild(S){S(this.needle),S(this.haystack),this.fromIndex&&S(this.fromIndex)}outputDefined(){return!1}}class zi{constructor(S,D,j,te,ue,ve){this.inputType=S,this.type=D,this.input=j,this.cases=te,this.outputs=ue,this.otherwise=ve}static parse(S,D){if(S.length<5)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if(S.length%2!=1)return D.error("Expected an even number of arguments.");let j,te;D.expectedType&&D.expectedType.kind!=="value"&&(te=D.expectedType);let ue={},ve=[];for(let at=2;atNumber.MAX_SAFE_INTEGER)return Qt.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof Tr=="number"&&Math.floor(Tr)!==Tr)return Qt.error("Numeric branch labels must be integer values.");if(j){if(Qt.checkSubtype(j,Ki(Tr)))return null}else j=Ki(Tr);if(ue[String(Tr)]!==void 0)return Qt.error("Branch labels must be unique.");ue[String(Tr)]=ve.length}let sr=D.parse(Ft,at,te);if(!sr)return null;te=te||sr.type,ve.push(sr)}let De=D.parse(S[1],1,fr);if(!De)return null;let Ze=D.parse(S[S.length-1],S.length-1,te);return Ze?De.type.kind!=="value"&&D.concat(1).checkSubtype(j,De.type)?null:new zi(j,te,De,ue,ve,Ze):null}evaluate(S){let D=this.input.evaluate(S);return(Ki(D)===this.inputType&&this.outputs[this.cases[D]]||this.otherwise).evaluate(S)}eachChild(S){S(this.input),this.outputs.forEach(S),S(this.otherwise)}outputDefined(){return this.outputs.every(S=>S.outputDefined())&&this.otherwise.outputDefined()}}class Yi{constructor(S,D,j){this.type=S,this.branches=D,this.otherwise=j}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found only ${S.length-1}.`);if(S.length%2!=0)return D.error("Expected an odd number of arguments.");let j;D.expectedType&&D.expectedType.kind!=="value"&&(j=D.expectedType);let te=[];for(let ve=1;veD.outputDefined())&&this.otherwise.outputDefined()}}class an{constructor(S,D,j,te){this.type=S,this.input=D,this.beginIndex=j,this.endIndex=te}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,St);if(!j||!te)return null;if(!ht(j.type,[Ne(fr),Et,fr]))return D.error(`Expected first argument to be of type array or string, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new an(j.type,j,te,ue):null}return new an(j.type,j,te)}evaluate(S){let D=this.input.evaluate(S),j=this.beginIndex.evaluate(S),te;if(this.endIndex&&(te=this.endIndex.evaluate(S)),Le(D,["string"]))return[...D].slice(j,te).join("");if(Le(D,["array"]))return D.slice(j,te);throw new la(`Expected first argument to be of type array or string, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input),S(this.beginIndex),this.endIndex&&S(this.endIndex)}outputDefined(){return!1}}function hi(R,S){let D=R.length-1,j,te,ue=0,ve=D,De=0;for(;ue<=ve;)if(De=Math.floor((ue+ve)/2),j=R[De],te=R[De+1],j<=S){if(De===D||SS))throw new la("Input is not a number.");ve=De-1}return 0}class Ji{constructor(S,D,j){this.type=S,this.input=D,this.labels=[],this.outputs=[];for(let[te,ue]of j)this.labels.push(te),this.outputs.push(ue)}static parse(S,D){if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=[],ue=null;D.expectedType&&D.expectedType.kind!=="value"&&(ue=D.expectedType);for(let ve=1;ve=De)return D.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',at);let Ft=D.parse(Ze,Tt,ue);if(!Ft)return null;ue=ue||Ft.type,te.push([De,Ft])}return new Ji(ue,j,te)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;return te>=D[ue-1]?j[ue-1].evaluate(S):j[hi(D,te)].evaluate(S)}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function ua(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}var Fn=Sa;function Sa(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}Sa.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var go=ua(Fn);function Oo(R,S,D){return R+D*(S-R)}function ho(R,S,D){return R.map((j,te)=>Oo(j,S[te],D))}let Mo={number:Oo,color:function(R,S,D,j="rgb"){switch(j){case"rgb":{let[te,ue,ve,De]=ho(R.rgb,S.rgb,D);return new Zt(te,ue,ve,De,!1)}case"hcl":{let[te,ue,ve,De]=R.hcl,[Ze,at,Tt,Ft]=S.hcl,Qt,sr;if(isNaN(te)||isNaN(Ze))isNaN(te)?isNaN(Ze)?Qt=NaN:(Qt=Ze,ve!==1&&ve!==0||(sr=at)):(Qt=te,Tt!==1&&Tt!==0||(sr=ue));else{let Di=Ze-te;Ze>te&&Di>180?Di-=360:Ze180&&(Di+=360),Qt=te+D*Di}let[Tr,Pr,$r,ni]=function([Di,pi,ki,Zi]){return Di=isNaN(Di)?0:Di*ai,Ni([ki,Math.cos(Di)*pi,Math.sin(Di)*pi,Zi])}([Qt,sr!=null?sr:Oo(ue,at,D),Oo(ve,Tt,D),Oo(De,Ft,D)]);return new Zt(Tr,Pr,$r,ni,!1)}case"lab":{let[te,ue,ve,De]=Ni(ho(R.lab,S.lab,D));return new Zt(te,ue,ve,De,!1)}}},array:ho,padding:function(R,S,D){return new Vr(ho(R.values,S.values,D))},variableAnchorOffsetCollection:function(R,S,D){let j=R.values,te=S.values;if(j.length!==te.length)throw new la(`Cannot interpolate values of different length. from: ${R.toString()}, to: ${S.toString()}`);let ue=[];for(let ve=0;vetypeof Tt!="number"||Tt<0||Tt>1))return D.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);te={name:"cubic-bezier",controlPoints:at}}}if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");if(ue=D.parse(ue,2,St),!ue)return null;let De=[],Ze=null;j==="interpolate-hcl"||j==="interpolate-lab"?Ze=Ht:D.expectedType&&D.expectedType.kind!=="value"&&(Ze=D.expectedType);for(let at=0;at=Tt)return D.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Qt);let Tr=D.parse(Ft,sr,Ze);if(!Tr)return null;Ze=Ze||Tr.type,De.push([Tt,Tr])}return xe(Ze,St)||xe(Ze,Ht)||xe(Ze,Or)||xe(Ze,ut)||xe(Ze,Ne(St))?new xo(Ze,j,te,ue,De):D.error(`Type ${Ye(Ze)} is not interpolatable.`)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;if(te>=D[ue-1])return j[ue-1].evaluate(S);let ve=hi(D,te),De=xo.interpolationFactor(this.interpolation,te,D[ve],D[ve+1]),Ze=j[ve].evaluate(S),at=j[ve+1].evaluate(S);switch(this.operator){case"interpolate":return Mo[this.type.kind](Ze,at,De);case"interpolate-hcl":return Mo.color(Ze,at,De,"hcl");case"interpolate-lab":return Mo.color(Ze,at,De,"lab")}}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function zs(R,S,D,j){let te=j-D,ue=R-D;return te===0?0:S===1?ue/te:(Math.pow(S,ue)-1)/(Math.pow(S,te)-1)}class ks{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expectected at least one argument.");let j=null,te=D.expectedType;te&&te.kind!=="value"&&(j=te);let ue=[];for(let De of S.slice(1)){let Ze=D.parse(De,1+ue.length,j,void 0,{typeAnnotation:"omit"});if(!Ze)return null;j=j||Ze.type,ue.push(Ze)}if(!j)throw new Error("No output type");let ve=te&&ue.some(De=>Xe(te,De.type));return new ks(ve?fr:j,ue)}evaluate(S){let D,j=null,te=0;for(let ue of this.args)if(te++,j=ue.evaluate(S),j&&j instanceof Mi&&!j.available&&(D||(D=j.name),j=null,te===this.args.length&&(j=D)),j!==null)break;return j}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}function Zs(R,S){return R==="=="||R==="!="?S.kind==="boolean"||S.kind==="string"||S.kind==="number"||S.kind==="null"||S.kind==="value":S.kind==="string"||S.kind==="number"||S.kind==="value"}function Xs(R,S,D,j){return j.compare(S,D)===0}function wl(R,S,D){let j=R!=="=="&&R!=="!=";return class GHe{constructor(ue,ve,De){this.type=dt,this.lhs=ue,this.rhs=ve,this.collator=De,this.hasUntypedArgument=ue.type.kind==="value"||ve.type.kind==="value"}static parse(ue,ve){if(ue.length!==3&&ue.length!==4)return ve.error("Expected two or three arguments.");let De=ue[0],Ze=ve.parse(ue[1],1,fr);if(!Ze)return null;if(!Zs(De,Ze.type))return ve.concat(1).error(`"${De}" comparisons are not supported for type '${Ye(Ze.type)}'.`);let at=ve.parse(ue[2],2,fr);if(!at)return null;if(!Zs(De,at.type))return ve.concat(2).error(`"${De}" comparisons are not supported for type '${Ye(at.type)}'.`);if(Ze.type.kind!==at.type.kind&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error(`Cannot compare types '${Ye(Ze.type)}' and '${Ye(at.type)}'.`);j&&(Ze.type.kind==="value"&&at.type.kind!=="value"?Ze=new Ra(at.type,[Ze]):Ze.type.kind!=="value"&&at.type.kind==="value"&&(at=new Ra(Ze.type,[at])));let Tt=null;if(ue.length===4){if(Ze.type.kind!=="string"&&at.type.kind!=="string"&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error("Cannot use collator to compare non-string types.");if(Tt=ve.parse(ue[3],3,_r),!Tt)return null}return new GHe(Ze,at,Tt)}evaluate(ue){let ve=this.lhs.evaluate(ue),De=this.rhs.evaluate(ue);if(j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!==at.kind||Ze.kind!=="string"&&Ze.kind!=="number")throw new la(`Expected arguments for "${R}" to be (string, string) or (number, number), but found (${Ze.kind}, ${at.kind}) instead.`)}if(this.collator&&!j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!=="string"||at.kind!=="string")return S(ue,ve,De)}return this.collator?D(ue,ve,De,this.collator.evaluate(ue)):S(ue,ve,De)}eachChild(ue){ue(this.lhs),ue(this.rhs),this.collator&&ue(this.collator)}outputDefined(){return!0}}}let os=wl("==",function(R,S,D){return S===D},Xs),cl=wl("!=",function(R,S,D){return S!==D},function(R,S,D,j){return!Xs(0,S,D,j)}),Cs=wl("<",function(R,S,D){return S",function(R,S,D){return S>D},function(R,S,D,j){return j.compare(S,D)>0}),Ys=wl("<=",function(R,S,D){return S<=D},function(R,S,D,j){return j.compare(S,D)<=0}),Hs=wl(">=",function(R,S,D){return S>=D},function(R,S,D,j){return j.compare(S,D)>=0});class Eo{constructor(S,D,j){this.type=_r,this.locale=j,this.caseSensitive=S,this.diacriticSensitive=D}static parse(S,D){if(S.length!==2)return D.error("Expected one argument.");let j=S[1];if(typeof j!="object"||Array.isArray(j))return D.error("Collator options argument must be an object.");let te=D.parse(j["case-sensitive"]!==void 0&&j["case-sensitive"],1,dt);if(!te)return null;let ue=D.parse(j["diacritic-sensitive"]!==void 0&&j["diacritic-sensitive"],1,dt);if(!ue)return null;let ve=null;return j.locale&&(ve=D.parse(j.locale,1,Et),!ve)?null:new Eo(te,ue,ve)}evaluate(S){return new yr(this.caseSensitive.evaluate(S),this.diacriticSensitive.evaluate(S),this.locale?this.locale.evaluate(S):null)}eachChild(S){S(this.caseSensitive),S(this.diacriticSensitive),this.locale&&S(this.locale)}outputDefined(){return!1}}class fs{constructor(S,D,j,te,ue){this.type=Et,this.number=S,this.locale=D,this.currency=j,this.minFractionDigits=te,this.maxFractionDigits=ue}static parse(S,D){if(S.length!==3)return D.error("Expected two arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=S[2];if(typeof te!="object"||Array.isArray(te))return D.error("NumberFormat options argument must be an object.");let ue=null;if(te.locale&&(ue=D.parse(te.locale,1,Et),!ue))return null;let ve=null;if(te.currency&&(ve=D.parse(te.currency,1,Et),!ve))return null;let De=null;if(te["min-fraction-digits"]&&(De=D.parse(te["min-fraction-digits"],1,St),!De))return null;let Ze=null;return te["max-fraction-digits"]&&(Ze=D.parse(te["max-fraction-digits"],1,St),!Ze)?null:new fs(j,ue,ve,De,Ze)}evaluate(S){return new Intl.NumberFormat(this.locale?this.locale.evaluate(S):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(S):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(S):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(S):void 0}).format(this.number.evaluate(S))}eachChild(S){S(this.number),this.locale&&S(this.locale),this.currency&&S(this.currency),this.minFractionDigits&&S(this.minFractionDigits),this.maxFractionDigits&&S(this.maxFractionDigits)}outputDefined(){return!1}}class Ql{constructor(S){this.type=Br,this.sections=S}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[1];if(!Array.isArray(j)&&typeof j=="object")return D.error("First argument must be an image or text section.");let te=[],ue=!1;for(let ve=1;ve<=S.length-1;++ve){let De=S[ve];if(ue&&typeof De=="object"&&!Array.isArray(De)){ue=!1;let Ze=null;if(De["font-scale"]&&(Ze=D.parse(De["font-scale"],1,St),!Ze))return null;let at=null;if(De["text-font"]&&(at=D.parse(De["text-font"],1,Ne(Et)),!at))return null;let Tt=null;if(De["text-color"]&&(Tt=D.parse(De["text-color"],1,Ht),!Tt))return null;let Ft=te[te.length-1];Ft.scale=Ze,Ft.font=at,Ft.textColor=Tt}else{let Ze=D.parse(S[ve],1,fr);if(!Ze)return null;let at=Ze.type.kind;if(at!=="string"&&at!=="value"&&at!=="null"&&at!=="resolvedImage")return D.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ue=!0,te.push({content:Ze,scale:null,font:null,textColor:null})}}return new Ql(te)}evaluate(S){return new Zr(this.sections.map(D=>{let j=D.content.evaluate(S);return Ki(j)===Nr?new Fr("",j,null,null,null):new Fr(ka(j),null,D.scale?D.scale.evaluate(S):null,D.font?D.font.evaluate(S).join(","):null,D.textColor?D.textColor.evaluate(S):null)}))}eachChild(S){for(let D of this.sections)S(D.content),D.scale&&S(D.scale),D.font&&S(D.font),D.textColor&&S(D.textColor)}outputDefined(){return!1}}class Hu{constructor(S){this.type=Nr,this.input=S}static parse(S,D){if(S.length!==2)return D.error("Expected two arguments.");let j=D.parse(S[1],1,Et);return j?new Hu(j):D.error("No image name provided.")}evaluate(S){let D=this.input.evaluate(S),j=Mi.fromString(D);return j&&S.availableImages&&(j.available=S.availableImages.indexOf(D)>-1),j}eachChild(S){S(this.input)}outputDefined(){return!1}}class fc{constructor(S){this.type=St,this.input=S}static parse(S,D){if(S.length!==2)return D.error(`Expected 1 argument, but found ${S.length-1} instead.`);let j=D.parse(S[1],1);return j?j.type.kind!=="array"&&j.type.kind!=="string"&&j.type.kind!=="value"?D.error(`Expected argument of type string or array, but found ${Ye(j.type)} instead.`):new fc(j):null}evaluate(S){let D=this.input.evaluate(S);if(typeof D=="string")return[...D].length;if(Array.isArray(D))return D.length;throw new la(`Expected value to be of type string or array, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input)}outputDefined(){return!1}}let ms=8192;function on(R,S){let D=(180+R[0])/360,j=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R[1]*Math.PI/360)))/360,te=Math.pow(2,S.z);return[Math.round(D*te*ms),Math.round(j*te*ms)]}function fa(R,S){let D=Math.pow(2,S.z);return[(te=(R[0]/ms+S.x)/D,360*te-180),(j=(R[1]/ms+S.y)/D,360/Math.PI*Math.atan(Math.exp((180-360*j)*Math.PI/180))-90)];var j,te}function Qu(R,S){R[0]=Math.min(R[0],S[0]),R[1]=Math.min(R[1],S[1]),R[2]=Math.max(R[2],S[0]),R[3]=Math.max(R[3],S[1])}function Rl(R,S){return!(R[0]<=S[0]||R[2]>=S[2]||R[1]<=S[1]||R[3]>=S[3])}function vo(R,S,D){let j=R[0]-S[0],te=R[1]-S[1],ue=R[0]-D[0],ve=R[1]-D[1];return j*ve-ue*te==0&&j*ue<=0&&te*ve<=0}function Zl(R,S,D,j){return(te=[j[0]-D[0],j[1]-D[1]])[0]*(ue=[S[0]-R[0],S[1]-R[1]])[1]-te[1]*ue[0]!=0&&!(!Co(R,S,D,j)||!Co(D,j,R,S));var te,ue}function Ks(R,S,D){for(let j of D)for(let te=0;te(te=R)[1]!=(ve=De[Ze+1])[1]>te[1]&&te[0]<(ve[0]-ue[0])*(te[1]-ue[1])/(ve[1]-ue[1])+ue[0]&&(j=!j)}var te,ue,ve;return j}function Ec(R,S){for(let D of S)if(Xl(R,D))return!0;return!1}function Zn(R,S){for(let D of R)if(!Xl(D,S))return!1;for(let D=0;D0&&De<0||ve<0&&De>0}function Tl(R,S,D){let j=[];for(let te=0;teD[2]){let te=.5*j,ue=R[0]-D[0]>te?-j:D[0]-R[0]>te?j:0;ue===0&&(ue=R[0]-D[2]>te?-j:D[2]-R[0]>te?j:0),R[0]+=ue}Qu(S,R)}function cf(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let De of R)for(let Ze of De){let at=[Ze.x+ue[0],Ze.y+ue[1]];So(at,S,D,te),ve.push(at)}return ve}function rh(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let Ze of R){let at=[];for(let Tt of Ze){let Ft=[Tt.x+ue[0],Tt.y+ue[1]];Qu(S,Ft),at.push(Ft)}ve.push(at)}if(S[2]-S[0]<=te/2){(De=S)[0]=De[1]=1/0,De[2]=De[3]=-1/0;for(let Ze of ve)for(let at of Ze)So(at,S,D,te)}var De;return ve}class Al{constructor(S,D){this.type=dt,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'within' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection"){let te=[];for(let ue of j.features){let{type:ve,coordinates:De}=ue.geometry;ve==="Polygon"&&te.push(De),ve==="MultiPolygon"&&te.push(...De)}if(te.length)return new Al(j,{type:"MultiPolygon",coordinates:te})}else if(j.type==="Feature"){let te=j.geometry.type;if(te==="Polygon"||te==="MultiPolygon")return new Al(j,j.geometry)}else if(j.type==="Polygon"||j.type==="MultiPolygon")return new Al(j,j)}return D.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Xl(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Ec(at,De))return!1}return!0}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Zn(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!ko(at,De))return!1}return!0}(S,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Hc=class{constructor(R=[],S=(D,j)=>Dj?1:0){if(this.data=R,this.length=this.data.length,this.compare=S,this.length>0)for(let D=(this.length>>1)-1;D>=0;D--)this._down(D)}push(R){this.data.push(R),this._up(this.length++)}pop(){if(this.length===0)return;let R=this.data[0],S=this.data.pop();return--this.length>0&&(this.data[0]=S,this._down(0)),R}peek(){return this.data[0]}_up(R){let{data:S,compare:D}=this,j=S[R];for(;R>0;){let te=R-1>>1,ue=S[te];if(D(j,ue)>=0)break;S[R]=ue,R=te}S[R]=j}_down(R){let{data:S,compare:D}=this,j=this.length>>1,te=S[R];for(;R=0)break;S[R]=S[ue],R=ue}S[R]=te}};function eu(R,S,D,j,te){Ls(R,S,D,j||R.length-1,te||kc)}function Ls(R,S,D,j,te){for(;j>D;){if(j-D>600){var ue=j-D+1,ve=S-D+1,De=Math.log(ue),Ze=.5*Math.exp(2*De/3),at=.5*Math.sqrt(De*Ze*(ue-Ze)/ue)*(ve-ue/2<0?-1:1);Ls(R,S,Math.max(D,Math.floor(S-ve*Ze/ue+at)),Math.min(j,Math.floor(S+(ue-ve)*Ze/ue+at)),te)}var Tt=R[S],Ft=D,Qt=j;for(mu(R,D,S),te(R[j],Tt)>0&&mu(R,D,j);Ft0;)Qt--}te(R[D],Tt)===0?mu(R,D,Qt):mu(R,++Qt,j),Qt<=S&&(D=Qt+1),S<=Qt&&(j=Qt-1)}}function mu(R,S,D){var j=R[S];R[S]=R[D],R[D]=j}function kc(R,S){return RS?1:0}function Of(R,S){if(R.length<=1)return[R];let D=[],j,te;for(let ue of R){let ve=vd(ue);ve!==0&&(ue.area=Math.abs(ve),te===void 0&&(te=ve<0),te===ve<0?(j&&D.push(j),j=[ue]):j.push(ue))}if(j&&D.push(j),S>1)for(let ue=0;ue1?(at=S[Ze+1][0],Tt=S[Ze+1][1]):sr>0&&(at+=Ft/this.kx*sr,Tt+=Qt/this.ky*sr)),Ft=this.wrap(D[0]-at)*this.kx,Qt=(D[1]-Tt)*this.ky;let Tr=Ft*Ft+Qt*Qt;Tr180;)S-=360;return S}}function Vl(R,S){return S[0]-R[0]}function Js(R){return R[1]-R[0]+1}function hc(R,S){return R[1]>=R[0]&&R[1]R[1])return[null,null];let D=Js(R);if(S){if(D===2)return[R,null];let te=Math.floor(D/2);return[[R[0],R[0]+te],[R[0]+te,R[1]]]}if(D===1)return[R,null];let j=Math.floor(D/2)-1;return[[R[0],R[0]+j],[R[0]+j+1,R[1]]]}function ws(R,S){if(!hc(S,R.length))return[1/0,1/0,-1/0,-1/0];let D=[1/0,1/0,-1/0,-1/0];for(let j=S[0];j<=S[1];++j)Qu(D,R[j]);return D}function $s(R){let S=[1/0,1/0,-1/0,-1/0];for(let D of R)for(let j of D)Qu(S,j);return S}function hs(R){return R[0]!==-1/0&&R[1]!==-1/0&&R[2]!==1/0&&R[3]!==1/0}function Ms(R,S,D){if(!hs(R)||!hs(S))return NaN;let j=0,te=0;return R[2]S[2]&&(j=R[0]-S[2]),R[1]>S[3]&&(te=R[1]-S[3]),R[3]=j)return j;if(Rl(te,ue)){if(Od(R,S))return 0}else if(Od(S,R))return 0;let ve=1/0;for(let De of R)for(let Ze=0,at=De.length,Tt=at-1;Ze0;){let Ze=ve.pop();if(Ze[0]>=ue)continue;let at=Ze[1],Tt=S?50:100;if(Js(at)<=Tt){if(!hc(at,R.length))return NaN;if(S){let Ft=wo(R,at,D,j);if(isNaN(Ft)||Ft===0)return Ft;ue=Math.min(ue,Ft)}else for(let Ft=at[0];Ft<=at[1];++Ft){let Qt=ov(R[Ft],D,j);if(ue=Math.min(ue,Qt),ue===0)return 0}}else{let Ft=Cc(at,S);Ja(ve,ue,j,R,De,Ft[0]),Ja(ve,ue,j,R,De,Ft[1])}}return ue}function uu(R,S,D,j,te,ue=1/0){let ve=Math.min(ue,te.distance(R[0],D[0]));if(ve===0)return ve;let De=new Hc([[0,[0,R.length-1],[0,D.length-1]]],Vl);for(;De.length>0;){let Ze=De.pop();if(Ze[0]>=ve)continue;let at=Ze[1],Tt=Ze[2],Ft=S?50:100,Qt=j?50:100;if(Js(at)<=Ft&&Js(Tt)<=Qt){if(!hc(at,R.length)&&hc(Tt,D.length))return NaN;let sr;if(S&&j)sr=ec(R,at,D,Tt,te),ve=Math.min(ve,sr);else if(S&&!j){let Tr=R.slice(at[0],at[1]+1);for(let Pr=Tt[0];Pr<=Tt[1];++Pr)if(sr=dc(D[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else if(!S&&j){let Tr=D.slice(Tt[0],Tt[1]+1);for(let Pr=at[0];Pr<=at[1];++Pr)if(sr=dc(R[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else sr=Ps(R,at,D,Tt,te),ve=Math.min(ve,sr)}else{let sr=Cc(at,S),Tr=Cc(Tt,j);Ef(De,ve,te,R,D,sr[0],Tr[0]),Ef(De,ve,te,R,D,sr[0],Tr[1]),Ef(De,ve,te,R,D,sr[1],Tr[0]),Ef(De,ve,te,R,D,sr[1],Tr[1])}}return ve}function Mh(R){return R.type==="MultiPolygon"?R.coordinates.map(S=>({type:"Polygon",coordinates:S})):R.type==="MultiLineString"?R.coordinates.map(S=>({type:"LineString",coordinates:S})):R.type==="MultiPoint"?R.coordinates.map(S=>({type:"Point",coordinates:S})):[R]}class jc{constructor(S,D){this.type=St,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'distance' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection")return new jc(j,j.features.map(te=>Mh(te.geometry)).flat());if(j.type==="Feature")return new jc(j,Mh(j.geometry));if("type"in j&&"coordinates"in j)return new jc(j,Mh(j))}return D.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!1,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!1,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!1,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!0,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!0,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!0,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="Polygon")return function(D,j){let te=D.geometry();if(te.length===0||te[0].length===0)return NaN;let ue=Of(te,0).map(Ze=>Ze.map(at=>at.map(Tt=>fa([Tt.x,Tt.y],D.canonical)))),ve=new ih(ue[0][0][0][1]),De=1/0;for(let Ze of j)for(let at of ue){switch(Ze.type){case"Point":De=Math.min(De,tc([Ze.coordinates],!1,at,ve,De));break;case"LineString":De=Math.min(De,tc(Ze.coordinates,!0,at,ve,De));break;case"Polygon":De=Math.min(De,$o(at,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let kf={"==":os,"!=":cl,">":ml,"<":Cs,">=":Hs,"<=":Ys,array:Ra,at:br,boolean:Ra,case:Yi,coalesce:ks,collator:Eo,format:Ql,image:Hu,in:Hr,"index-of":ti,interpolate:xo,"interpolate-hcl":xo,"interpolate-lab":xo,length:fc,let:xn,literal:jn,match:zi,number:Ra,"number-format":fs,object:Ra,slice:an,step:Ji,string:Ra,"to-boolean":oa,"to-color":oa,"to-number":oa,"to-string":oa,var:_t,within:Al,distance:jc};class Ml{constructor(S,D,j,te){this.name=S,this.type=D,this._evaluate=j,this.args=te}evaluate(S){return this._evaluate(S,this.args)}eachChild(S){this.args.forEach(S)}outputDefined(){return!1}static parse(S,D){let j=S[0],te=Ml.definitions[j];if(!te)return D.error(`Unknown expression "${j}". If you wanted a literal array, use ["literal", [...]].`,0);let ue=Array.isArray(te)?te[0]:te.type,ve=Array.isArray(te)?[[te[1],te[2]]]:te.overloads,De=ve.filter(([at])=>!Array.isArray(at)||at.length===S.length-1),Ze=null;for(let[at,Tt]of De){Ze=new oo(D.registry,kh,D.path,null,D.scope);let Ft=[],Qt=!1;for(let sr=1;sr{return Qt=Ft,Array.isArray(Qt)?`(${Qt.map(Ye).join(", ")})`:`(${Ye(Qt.type)}...)`;var Qt}).join(" | "),Tt=[];for(let Ft=1;Ft{D=S?D&&kh(j):D&&j instanceof jn}),!!D&&Kh(R)&&ah(R,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Kh(R){if(R instanceof Ml&&(R.name==="get"&&R.args.length===1||R.name==="feature-state"||R.name==="has"&&R.args.length===1||R.name==="properties"||R.name==="geometry-type"||R.name==="id"||/^filter-/.test(R.name))||R instanceof Al||R instanceof jc)return!1;let S=!0;return R.eachChild(D=>{S&&!Kh(D)&&(S=!1)}),S}function rc(R){if(R instanceof Ml&&R.name==="feature-state")return!1;let S=!0;return R.eachChild(D=>{S&&!rc(D)&&(S=!1)}),S}function ah(R,S){if(R instanceof Ml&&S.indexOf(R.name)>=0)return!1;let D=!0;return R.eachChild(j=>{D&&!ah(j,S)&&(D=!1)}),D}function Wc(R){return{result:"success",value:R}}function df(R){return{result:"error",value:R}}function Cu(R){return R["property-type"]==="data-driven"||R["property-type"]==="cross-faded-data-driven"}function Nf(R){return!!R.expression&&R.expression.parameters.indexOf("zoom")>-1}function Zc(R){return!!R.expression&&R.expression.interpolated}function ds(R){return R instanceof Number?"number":R instanceof String?"string":R instanceof Boolean?"boolean":Array.isArray(R)?"array":R===null?"null":typeof R}function Ch(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function Bd(R){return R}function Jh(R,S){let D=S.type==="color",j=R.stops&&typeof R.stops[0][0]=="object",te=j||!(j||R.property!==void 0),ue=R.type||(Zc(S)?"exponential":"interval");if(D||S.type==="padding"){let Tt=D?Zt.parse:Vr.parse;(R=Ke({},R)).stops&&(R.stops=R.stops.map(Ft=>[Ft[0],Tt(Ft[1])])),R.default=Tt(R.default?R.default:S.default)}if(R.colorSpace&&(ve=R.colorSpace)!=="rgb"&&ve!=="hcl"&&ve!=="lab")throw new Error(`Unknown color space: "${R.colorSpace}"`);var ve;let De,Ze,at;if(ue==="exponential")De=$h;else if(ue==="interval")De=Lu;else if(ue==="categorical"){De=pd,Ze=Object.create(null);for(let Tt of R.stops)Ze[Tt[0]]=Tt[1];at=typeof R.stops[0][0]}else{if(ue!=="identity")throw new Error(`Unknown function type "${ue}"`);De=tu}if(j){let Tt={},Ft=[];for(let Tr=0;TrTr[0]),evaluate:({zoom:Tr},Pr)=>$h({stops:Qt,base:R.base},S,Tr).evaluate(Tr,Pr)}}if(te){let Tt=ue==="exponential"?{name:"exponential",base:R.base!==void 0?R.base:1}:null;return{kind:"camera",interpolationType:Tt,interpolationFactor:xo.interpolationFactor.bind(void 0,Tt),zoomStops:R.stops.map(Ft=>Ft[0]),evaluate:({zoom:Ft})=>De(R,S,Ft,Ze,at)}}return{kind:"source",evaluate(Tt,Ft){let Qt=Ft&&Ft.properties?Ft.properties[R.property]:void 0;return Qt===void 0?Cf(R.default,S.default):De(R,S,Qt,Ze,at)}}}function Cf(R,S,D){return R!==void 0?R:S!==void 0?S:D!==void 0?D:void 0}function pd(R,S,D,j,te){return Cf(typeof D===te?j[D]:void 0,R.default,S.default)}function Lu(R,S,D){if(ds(D)!=="number")return Cf(R.default,S.default);let j=R.stops.length;if(j===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[j-1][0])return R.stops[j-1][1];let te=hi(R.stops.map(ue=>ue[0]),D);return R.stops[te][1]}function $h(R,S,D){let j=R.base!==void 0?R.base:1;if(ds(D)!=="number")return Cf(R.default,S.default);let te=R.stops.length;if(te===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[te-1][0])return R.stops[te-1][1];let ue=hi(R.stops.map(Tt=>Tt[0]),D),ve=function(Tt,Ft,Qt,sr){let Tr=sr-Qt,Pr=Tt-Qt;return Tr===0?0:Ft===1?Pr/Tr:(Math.pow(Ft,Pr)-1)/(Math.pow(Ft,Tr)-1)}(D,j,R.stops[ue][0],R.stops[ue+1][0]),De=R.stops[ue][1],Ze=R.stops[ue+1][1],at=Mo[S.type]||Bd;return typeof De.evaluate=="function"?{evaluate(...Tt){let Ft=De.evaluate.apply(void 0,Tt),Qt=Ze.evaluate.apply(void 0,Tt);if(Ft!==void 0&&Qt!==void 0)return at(Ft,Qt,ve,R.colorSpace)}}:at(De,Ze,ve,R.colorSpace)}function tu(R,S,D){switch(S.type){case"color":D=Zt.parse(D);break;case"formatted":D=Zr.fromString(D.toString());break;case"resolvedImage":D=Mi.fromString(D.toString());break;case"padding":D=Vr.parse(D);break;default:ds(D)===S.type||S.type==="enum"&&S.values[D]||(D=void 0)}return Cf(D,R.default,S.default)}Ml.register(kf,{error:[{kind:"error"},[Et],(R,[S])=>{throw new la(S.evaluate(R))}],typeof:[Et,[fr],(R,[S])=>Ye(Ki(S.evaluate(R)))],"to-rgba":[Ne(St,4),[Ht],(R,[S])=>{let[D,j,te,ue]=S.evaluate(R).rgb;return[255*D,255*j,255*te,ue]}],rgb:[Ht,[St,St,St],Yh],rgba:[Ht,[St,St,St,St],Yh],has:{type:dt,overloads:[[[Et],(R,[S])=>Eh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>Eh(S.evaluate(R),D.evaluate(R))]]},get:{type:fr,overloads:[[[Et],(R,[S])=>nh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>nh(S.evaluate(R),D.evaluate(R))]]},"feature-state":[fr,[Et],(R,[S])=>nh(S.evaluate(R),R.featureState||{})],properties:[$t,[],R=>R.properties()],"geometry-type":[Et,[],R=>R.geometryType()],id:[fr,[],R=>R.id()],zoom:[St,[],R=>R.globals.zoom],"heatmap-density":[St,[],R=>R.globals.heatmapDensity||0],"line-progress":[St,[],R=>R.globals.lineProgress||0],accumulated:[fr,[],R=>R.globals.accumulated===void 0?null:R.globals.accumulated],"+":[St,hf(St),(R,S)=>{let D=0;for(let j of S)D+=j.evaluate(R);return D}],"*":[St,hf(St),(R,S)=>{let D=1;for(let j of S)D*=j.evaluate(R);return D}],"-":{type:St,overloads:[[[St,St],(R,[S,D])=>S.evaluate(R)-D.evaluate(R)],[[St],(R,[S])=>-S.evaluate(R)]]},"/":[St,[St,St],(R,[S,D])=>S.evaluate(R)/D.evaluate(R)],"%":[St,[St,St],(R,[S,D])=>S.evaluate(R)%D.evaluate(R)],ln2:[St,[],()=>Math.LN2],pi:[St,[],()=>Math.PI],e:[St,[],()=>Math.E],"^":[St,[St,St],(R,[S,D])=>Math.pow(S.evaluate(R),D.evaluate(R))],sqrt:[St,[St],(R,[S])=>Math.sqrt(S.evaluate(R))],log10:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN10],ln:[St,[St],(R,[S])=>Math.log(S.evaluate(R))],log2:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN2],sin:[St,[St],(R,[S])=>Math.sin(S.evaluate(R))],cos:[St,[St],(R,[S])=>Math.cos(S.evaluate(R))],tan:[St,[St],(R,[S])=>Math.tan(S.evaluate(R))],asin:[St,[St],(R,[S])=>Math.asin(S.evaluate(R))],acos:[St,[St],(R,[S])=>Math.acos(S.evaluate(R))],atan:[St,[St],(R,[S])=>Math.atan(S.evaluate(R))],min:[St,hf(St),(R,S)=>Math.min(...S.map(D=>D.evaluate(R)))],max:[St,hf(St),(R,S)=>Math.max(...S.map(D=>D.evaluate(R)))],abs:[St,[St],(R,[S])=>Math.abs(S.evaluate(R))],round:[St,[St],(R,[S])=>{let D=S.evaluate(R);return D<0?-Math.round(-D):Math.round(D)}],floor:[St,[St],(R,[S])=>Math.floor(S.evaluate(R))],ceil:[St,[St],(R,[S])=>Math.ceil(S.evaluate(R))],"filter-==":[dt,[Et,fr],(R,[S,D])=>R.properties()[S.value]===D.value],"filter-id-==":[dt,[fr],(R,[S])=>R.id()===S.value],"filter-type-==":[dt,[Et],(R,[S])=>R.geometryType()===S.value],"filter-<":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j{let D=R.id(),j=S.value;return typeof D==typeof j&&D":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>te}],"filter-id->":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>j}],"filter-<=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j<=te}],"filter-id-<=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D<=j}],"filter->=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>=te}],"filter-id->=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>=j}],"filter-has":[dt,[fr],(R,[S])=>S.value in R.properties()],"filter-has-id":[dt,[],R=>R.id()!==null&&R.id()!==void 0],"filter-type-in":[dt,[Ne(Et)],(R,[S])=>S.value.indexOf(R.geometryType())>=0],"filter-id-in":[dt,[Ne(fr)],(R,[S])=>S.value.indexOf(R.id())>=0],"filter-in-small":[dt,[Et,Ne(fr)],(R,[S,D])=>D.value.indexOf(R.properties()[S.value])>=0],"filter-in-large":[dt,[Et,Ne(fr)],(R,[S,D])=>function(j,te,ue,ve){for(;ue<=ve;){let De=ue+ve>>1;if(te[De]===j)return!0;te[De]>j?ve=De-1:ue=De+1}return!1}(R.properties()[S.value],D.value,0,D.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)&&D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(!D.evaluate(R))return!1;return!0}]]},any:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)||D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(D.evaluate(R))return!0;return!1}]]},"!":[dt,[dt],(R,[S])=>!S.evaluate(R)],"is-supported-script":[dt,[Et],(R,[S])=>{let D=R.globals&&R.globals.isSupportedScript;return!D||D(S.evaluate(R))}],upcase:[Et,[Et],(R,[S])=>S.evaluate(R).toUpperCase()],downcase:[Et,[Et],(R,[S])=>S.evaluate(R).toLowerCase()],concat:[Et,hf(fr),(R,S)=>S.map(D=>ka(D.evaluate(R))).join("")],"resolved-locale":[Et,[_r],(R,[S])=>S.evaluate(R).resolvedLocale()]});class Pu{constructor(S,D){var j;this.expression=S,this._warningHistory={},this._evaluator=new Ha,this._defaultValue=D?(j=D).type==="color"&&Ch(j.default)?new Zt(0,0,0,0):j.type==="color"?Zt.parse(j.default)||null:j.type==="padding"?Vr.parse(j.default)||null:j.type==="variableAnchorOffsetCollection"?Si.parse(j.default)||null:j.default===void 0?null:j.default:null,this._enumValues=D&&D.type==="enum"?D.values:null}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._evaluator.globals=S,this._evaluator.feature=D,this._evaluator.featureState=j,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve,this.expression.evaluate(this._evaluator)}evaluate(S,D,j,te,ue,ve){this._evaluator.globals=S,this._evaluator.feature=D||null,this._evaluator.featureState=j||null,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve||null;try{let De=this.expression.evaluate(this._evaluator);if(De==null||typeof De=="number"&&De!=De)return this._defaultValue;if(this._enumValues&&!(De in this._enumValues))throw new la(`Expected value to be one of ${Object.keys(this._enumValues).map(Ze=>JSON.stringify(Ze)).join(", ")}, but found ${JSON.stringify(De)} instead.`);return De}catch(De){return this._warningHistory[De.message]||(this._warningHistory[De.message]=!0,typeof console!="undefined"&&console.warn(De.message)),this._defaultValue}}}function Lc(R){return Array.isArray(R)&&R.length>0&&typeof R[0]=="string"&&R[0]in kf}function fl(R,S){let D=new oo(kf,kh,[],S?function(te){let ue={color:Ht,string:Et,number:St,enum:Et,boolean:dt,formatted:Br,padding:Or,resolvedImage:Nr,variableAnchorOffsetCollection:ut};return te.type==="array"?Ne(ue[te.value]||fr,te.length):ue[te.type]}(S):void 0),j=D.parse(R,void 0,void 0,void 0,S&&S.type==="string"?{typeAnnotation:"coerce"}:void 0);return j?Wc(new Pu(j,S)):df(D.errors)}class Xc{constructor(S,D){this.kind=S,this._styleExpression=D,this.isStateDependent=S!=="constant"&&!rc(D.expression)}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}}class ic{constructor(S,D,j,te){this.kind=S,this.zoomStops=j,this._styleExpression=D,this.isStateDependent=S!=="camera"&&!rc(D.expression),this.interpolationType=te}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}interpolationFactor(S,D,j){return this.interpolationType?xo.interpolationFactor(this.interpolationType,S,D,j):0}}function yu(R,S){let D=fl(R,S);if(D.result==="error")return D;let j=D.value.expression,te=Kh(j);if(!te&&!Cu(S))return df([new xt("","data expressions not supported")]);let ue=ah(j,["zoom"]);if(!ue&&!Nf(S))return df([new xt("","zoom expressions not supported")]);let ve=Qh(j);return ve||ue?ve instanceof xt?df([ve]):ve instanceof xo&&!Zc(S)?df([new xt("",'"interpolate" expressions cannot be used with this property')]):Wc(ve?new ic(te?"camera":"composite",D.value,ve.labels,ve instanceof xo?ve.interpolation:void 0):new Xc(te?"constant":"source",D.value)):df([new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Qs{constructor(S,D){this._parameters=S,this._specification=D,Ke(this,Jh(this._parameters,this._specification))}static deserialize(S){return new Qs(S._parameters,S._specification)}static serialize(S){return{_parameters:S._parameters,_specification:S._specification}}}function Qh(R){let S=null;if(R instanceof xn)S=Qh(R.result);else if(R instanceof ks){for(let D of R.args)if(S=Qh(D),S)break}else(R instanceof Ji||R instanceof xo)&&R.input instanceof Ml&&R.input.name==="zoom"&&(S=R);return S instanceof xt||R.eachChild(D=>{let j=Qh(D);j instanceof xt?S=j:!S&&j?S=new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):S&&j&&S!==j&&(S=new xt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),S}function gd(R){if(R===!0||R===!1)return!0;if(!Array.isArray(R)||R.length===0)return!1;switch(R[0]){case"has":return R.length>=2&&R[1]!=="$id"&&R[1]!=="$type";case"in":return R.length>=3&&(typeof R[1]!="string"||Array.isArray(R[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return R.length!==3||Array.isArray(R[1])||Array.isArray(R[2]);case"any":case"all":for(let S of R.slice(1))if(!gd(S)&&typeof S!="boolean")return!1;return!0;default:return!0}}let Gu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Pc(R){if(R==null)return{filter:()=>!0,needGeometry:!1};gd(R)||(R=Lf(R));let S=fl(R,Gu);if(S.result==="error")throw new Error(S.value.map(D=>`${D.key}: ${D.message}`).join(", "));return{filter:(D,j,te)=>S.value.evaluate(D,j,{},te),needGeometry:sv(R)}}function vc(R,S){return RS?1:0}function sv(R){if(!Array.isArray(R))return!1;if(R[0]==="within"||R[0]==="distance")return!0;for(let S=1;S"||S==="<="||S===">="?Uf(R[1],R[2],S):S==="any"?(D=R.slice(1),["any"].concat(D.map(Lf))):S==="all"?["all"].concat(R.slice(1).map(Lf)):S==="none"?["all"].concat(R.slice(1).map(Lf).map(ru)):S==="in"?Iu(R[1],R.slice(2)):S==="!in"?ru(Iu(R[1],R.slice(2))):S==="has"?oh(R[1]):S!=="!has"||ru(oh(R[1]));var D}function Uf(R,S,D){switch(R){case"$type":return[`filter-type-${D}`,S];case"$id":return[`filter-id-${D}`,S];default:return[`filter-${D}`,R,S]}}function Iu(R,S){if(S.length===0)return!1;switch(R){case"$type":return["filter-type-in",["literal",S]];case"$id":return["filter-id-in",["literal",S]];default:return S.length>200&&!S.some(D=>typeof D!=typeof S[0])?["filter-in-large",R,["literal",S.sort(vc)]]:["filter-in-small",R,["literal",S]]}}function oh(R){switch(R){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",R]}}function ru(R){return["!",R]}function vf(R){let S=typeof R;if(S==="number"||S==="boolean"||S==="string"||R==null)return JSON.stringify(R);if(Array.isArray(R)){let te="[";for(let ue of R)te+=`${vf(ue)},`;return`${te}]`}let D=Object.keys(R).sort(),j="{";for(let te=0;tej.maximum?[new er(S,D,`${D} is greater than the maximum value ${j.maximum}`)]:[]}function Pf(R){let S=R.valueSpec,D=Fs(R.value.type),j,te,ue,ve={},De=D!=="categorical"&&R.value.property===void 0,Ze=!De,at=ds(R.value.stops)==="array"&&ds(R.value.stops[0])==="array"&&ds(R.value.stops[0][0])==="object",Tt=xu({key:R.key,value:R.value,valueSpec:R.styleSpec.function,validateSpec:R.validateSpec,style:R.style,styleSpec:R.styleSpec,objectElementValidators:{stops:function(sr){if(D==="identity")return[new er(sr.key,sr.value,'identity function may not have a "stops" property')];let Tr=[],Pr=sr.value;return Tr=Tr.concat(Lh({key:sr.key,value:Pr,valueSpec:sr.valueSpec,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,arrayElementValidator:Ft})),ds(Pr)==="array"&&Pr.length===0&&Tr.push(new er(sr.key,Pr,"array must have at least one stop")),Tr},default:function(sr){return sr.validateSpec({key:sr.key,value:sr.value,valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec})}}});return D==="identity"&&De&&Tt.push(new er(R.key,R.value,'missing required property "property"')),D==="identity"||R.value.stops||Tt.push(new er(R.key,R.value,'missing required property "stops"')),D==="exponential"&&R.valueSpec.expression&&!Zc(R.valueSpec)&&Tt.push(new er(R.key,R.value,"exponential functions not supported")),R.styleSpec.$version>=8&&(Ze&&!Cu(R.valueSpec)?Tt.push(new er(R.key,R.value,"property functions not supported")):De&&!Nf(R.valueSpec)&&Tt.push(new er(R.key,R.value,"zoom functions not supported"))),D!=="categorical"&&!at||R.value.property!==void 0||Tt.push(new er(R.key,R.value,'"property" property is required')),Tt;function Ft(sr){let Tr=[],Pr=sr.value,$r=sr.key;if(ds(Pr)!=="array")return[new er($r,Pr,`array expected, ${ds(Pr)} found`)];if(Pr.length!==2)return[new er($r,Pr,`array length 2 expected, length ${Pr.length} found`)];if(at){if(ds(Pr[0])!=="object")return[new er($r,Pr,`object expected, ${ds(Pr[0])} found`)];if(Pr[0].zoom===void 0)return[new er($r,Pr,"object stop key must have zoom")];if(Pr[0].value===void 0)return[new er($r,Pr,"object stop key must have value")];if(ue&&ue>Fs(Pr[0].zoom))return[new er($r,Pr[0].zoom,"stop zoom values must appear in ascending order")];Fs(Pr[0].zoom)!==ue&&(ue=Fs(Pr[0].zoom),te=void 0,ve={}),Tr=Tr.concat(xu({key:`${$r}[0]`,value:Pr[0],valueSpec:{zoom:{}},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,objectElementValidators:{zoom:Is,value:Qt}}))}else Tr=Tr.concat(Qt({key:`${$r}[0]`,value:Pr[0],valueSpec:{},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec},Pr));return Lc(_u(Pr[1]))?Tr.concat([new er(`${$r}[1]`,Pr[1],"expressions are not allowed in function stops.")]):Tr.concat(sr.validateSpec({key:`${$r}[1]`,value:Pr[1],valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec}))}function Qt(sr,Tr){let Pr=ds(sr.value),$r=Fs(sr.value),ni=sr.value!==null?sr.value:Tr;if(j){if(Pr!==j)return[new er(sr.key,ni,`${Pr} stop domain type must match previous stop domain type ${j}`)]}else j=Pr;if(Pr!=="number"&&Pr!=="string"&&Pr!=="boolean")return[new er(sr.key,ni,"stop domain value must be a number, string, or boolean")];if(Pr!=="number"&&D!=="categorical"){let Di=`number expected, ${Pr} found`;return Cu(S)&&D===void 0&&(Di+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new er(sr.key,ni,Di)]}return D!=="categorical"||Pr!=="number"||isFinite($r)&&Math.floor($r)===$r?D!=="categorical"&&Pr==="number"&&te!==void 0&&$rnew er(`${R.key}${j.key}`,R.value,j.message));let D=S.value.expression||S.value._styleExpression.expression;if(R.expressionContext==="property"&&R.propertyKey==="text-font"&&!D.outputDefined())return[new er(R.key,R.value,`Invalid data expression for "${R.propertyKey}". Output values must be contained as literals within the expression.`)];if(R.expressionContext==="property"&&R.propertyType==="layout"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with layout properties.')];if(R.expressionContext==="filter"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with filters.')];if(R.expressionContext&&R.expressionContext.indexOf("cluster")===0){if(!ah(D,["zoom","feature-state"]))return[new er(R.key,R.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(R.expressionContext==="cluster-initial"&&!Kh(D))return[new er(R.key,R.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ju(R){let S=R.key,D=R.value,j=R.valueSpec,te=[];return Array.isArray(j.values)?j.values.indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${j.values.join(", ")}], ${JSON.stringify(D)} found`)):Object.keys(j.values).indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${Object.keys(j.values).join(", ")}], ${JSON.stringify(D)} found`)),te}function Vf(R){return gd(_u(R.value))?Ic(Ke({},R,{expressionContext:"filter",valueSpec:{value:"boolean"}})):pc(R)}function pc(R){let S=R.value,D=R.key;if(ds(S)!=="array")return[new er(D,S,`array expected, ${ds(S)} found`)];let j=R.styleSpec,te,ue=[];if(S.length<1)return[new er(D,S,"filter array must have at least 1 element")];switch(ue=ue.concat(ju({key:`${D}[0]`,value:S[0],valueSpec:j.filter_operator,style:R.style,styleSpec:R.styleSpec})),Fs(S[0])){case"<":case"<=":case">":case">=":S.length>=2&&Fs(S[1])==="$type"&&ue.push(new er(D,S,`"$type" cannot be use with operator "${S[0]}"`));case"==":case"!=":S.length!==3&&ue.push(new er(D,S,`filter array for operator "${S[0]}" must have 3 elements`));case"in":case"!in":S.length>=2&&(te=ds(S[1]),te!=="string"&&ue.push(new er(`${D}[1]`,S[1],`string expected, ${te} found`)));for(let ve=2;ve{at in D&&S.push(new er(j,D[at],`"${at}" is prohibited for ref layers`))}),te.layers.forEach(at=>{Fs(at.id)===De&&(Ze=at)}),Ze?Ze.ref?S.push(new er(j,D.ref,"ref cannot reference another ref layer")):ve=Fs(Ze.type):S.push(new er(j,D.ref,`ref layer "${De}" not found`))}else if(ve!=="background")if(D.source){let Ze=te.sources&&te.sources[D.source],at=Ze&&Fs(Ze.type);Ze?at==="vector"&&ve==="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster source`)):at!=="raster-dem"&&ve==="hillshade"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster-dem source`)):at==="raster"&&ve!=="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a vector source`)):at!=="vector"||D["source-layer"]?at==="raster-dem"&&ve!=="hillshade"?S.push(new er(j,D.source,"raster-dem source can only be used with layer type 'hillshade'.")):ve!=="line"||!D.paint||!D.paint["line-gradient"]||at==="geojson"&&Ze.lineMetrics||S.push(new er(j,D,`layer "${D.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):S.push(new er(j,D,`layer "${D.id}" must specify a "source-layer"`)):S.push(new er(j,D.source,`source "${D.source}" not found`))}else S.push(new er(j,D,'missing required property "source"'));return S=S.concat(xu({key:j,value:D,valueSpec:ue.layer,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,objectElementValidators:{"*":()=>[],type:()=>R.validateSpec({key:`${j}.type`,value:D.type,valueSpec:ue.layer.type,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,object:D,objectKey:"type"}),filter:Vf,layout:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Dl(Ke({layerType:ve},at))}}),paint:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Ph(Ke({layerType:ve},at))}})}})),S}function Wu(R){let S=R.value,D=R.key,j=ds(S);return j!=="string"?[new er(D,S,`string expected, ${j} found`)]:[]}let Rc={promoteId:function({key:R,value:S}){if(ds(S)==="string")return Wu({key:R,value:S});{let D=[];for(let j in S)D.push(...Wu({key:`${R}.${j}`,value:S[j]}));return D}}};function gc(R){let S=R.value,D=R.key,j=R.styleSpec,te=R.style,ue=R.validateSpec;if(!S.type)return[new er(D,S,'"type" is required')];let ve=Fs(S.type),De;switch(ve){case"vector":case"raster":return De=xu({key:D,value:S,valueSpec:j[`source_${ve.replace("-","_")}`],style:R.style,styleSpec:j,objectElementValidators:Rc,validateSpec:ue}),De;case"raster-dem":return De=function(Ze){var at;let Tt=(at=Ze.sourceName)!==null&&at!==void 0?at:"",Ft=Ze.value,Qt=Ze.styleSpec,sr=Qt.source_raster_dem,Tr=Ze.style,Pr=[],$r=ds(Ft);if(Ft===void 0)return Pr;if($r!=="object")return Pr.push(new er("source_raster_dem",Ft,`object expected, ${$r} found`)),Pr;let ni=Fs(Ft.encoding)==="custom",Di=["redFactor","greenFactor","blueFactor","baseShift"],pi=Ze.value.encoding?`"${Ze.value.encoding}"`:"Default";for(let ki in Ft)!ni&&Di.includes(ki)?Pr.push(new er(ki,Ft[ki],`In "${Tt}": "${ki}" is only valid when "encoding" is set to "custom". ${pi} encoding found`)):sr[ki]?Pr=Pr.concat(Ze.validateSpec({key:ki,value:Ft[ki],valueSpec:sr[ki],validateSpec:Ze.validateSpec,style:Tr,styleSpec:Qt})):Pr.push(new er(ki,Ft[ki],`unknown property "${ki}"`));return Pr}({sourceName:D,value:S,style:R.style,styleSpec:j,validateSpec:ue}),De;case"geojson":if(De=xu({key:D,value:S,valueSpec:j.source_geojson,style:te,styleSpec:j,validateSpec:ue,objectElementValidators:Rc}),S.cluster)for(let Ze in S.clusterProperties){let[at,Tt]=S.clusterProperties[Ze],Ft=typeof at=="string"?[at,["accumulated"],["get",Ze]]:at;De.push(...Ic({key:`${D}.${Ze}.map`,value:Tt,validateSpec:ue,expressionContext:"cluster-map"})),De.push(...Ic({key:`${D}.${Ze}.reduce`,value:Ft,validateSpec:ue,expressionContext:"cluster-reduce"}))}return De;case"video":return xu({key:D,value:S,valueSpec:j.source_video,style:te,validateSpec:ue,styleSpec:j});case"image":return xu({key:D,value:S,valueSpec:j.source_image,style:te,validateSpec:ue,styleSpec:j});case"canvas":return[new er(D,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ju({key:`${D}.type`,value:S.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:te,validateSpec:ue,styleSpec:j})}}function hl(R){let S=R.value,D=R.styleSpec,j=D.light,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("light",S,`object expected, ${ve} found`)]),ue;for(let De in S){let Ze=De.match(/^(.*)-transition$/);ue=ue.concat(Ze&&j[Ze[1]]&&j[Ze[1]].transition?R.validateSpec({key:De,value:S[De],valueSpec:D.transition,validateSpec:R.validateSpec,style:te,styleSpec:D}):j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)])}return ue}function iu(R){let S=R.value,D=R.styleSpec,j=D.sky,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("sky",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve}function mc(R){let S=R.value,D=R.styleSpec,j=D.terrain,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("terrain",S,`object expected, ${ve} found`)]),ue;for(let De in S)ue=ue.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ue}function Yc(R){let S=[],D=R.value,j=R.key;if(Array.isArray(D)){let te=[],ue=[];for(let ve in D)D[ve].id&&te.includes(D[ve].id)&&S.push(new er(j,D,`all the sprites' ids must be unique, but ${D[ve].id} is duplicated`)),te.push(D[ve].id),D[ve].url&&ue.includes(D[ve].url)&&S.push(new er(j,D,`all the sprites' URLs must be unique, but ${D[ve].url} is duplicated`)),ue.push(D[ve].url),S=S.concat(xu({key:`${j}[${ve}]`,value:D[ve],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:R.validateSpec}));return S}return Wu({key:j,value:D})}let nc={"*":()=>[],array:Lh,boolean:function(R){let S=R.value,D=R.key,j=ds(S);return j!=="boolean"?[new er(D,S,`boolean expected, ${j} found`)]:[]},number:Is,color:function(R){let S=R.key,D=R.value,j=ds(D);return j!=="string"?[new er(S,D,`color expected, ${j} found`)]:Zt.parse(String(D))?[]:[new er(S,D,`color expected, "${D}" found`)]},constants:sh,enum:ju,filter:Vf,function:Pf,layer:Ih,object:xu,source:gc,light:hl,sky:iu,terrain:mc,projection:function(R){let S=R.value,D=R.styleSpec,j=D.projection,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("projection",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve},string:Wu,formatted:function(R){return Wu(R).length===0?[]:Ic(R)},resolvedImage:function(R){return Wu(R).length===0?[]:Ic(R)},padding:function(R){let S=R.key,D=R.value;if(ds(D)==="array"){if(D.length<1||D.length>4)return[new er(S,D,`padding requires 1 to 4 values; ${D.length} values found`)];let j={type:"number"},te=[];for(let ue=0;ue[]}})),R.constants&&(D=D.concat(sh({key:"constants",value:R.constants,style:R,styleSpec:S,validateSpec:gf}))),vr(D)}function wr(R){return function(S){return R($Q(JQ({},S),{validateSpec:gf}))}}function vr(R){return[].concat(R).sort((S,D)=>S.line-D.line)}function Ur(R){return function(...S){return vr(R.apply(this,S))}}Bt.source=Ur(wr(gc)),Bt.sprite=Ur(wr(Yc)),Bt.glyphs=Ur(wr(gt)),Bt.light=Ur(wr(hl)),Bt.sky=Ur(wr(iu)),Bt.terrain=Ur(wr(mc)),Bt.layer=Ur(wr(Ih)),Bt.filter=Ur(wr(Vf)),Bt.paintProperty=Ur(wr(Ph)),Bt.layoutProperty=Ur(wr(Dl));let fi=Bt,xi=fi.light,Fi=fi.sky,Xi=fi.paintProperty,hn=fi.layoutProperty;function Ti(R,S){let D=!1;if(S&&S.length)for(let j of S)R.fire(new me(new Error(j.message))),D=!0;return D}class qi{constructor(S,D,j){let te=this.cells=[];if(S instanceof ArrayBuffer){this.arrayBuffer=S;let ve=new Int32Array(this.arrayBuffer);S=ve[0],this.d=(D=ve[1])+2*(j=ve[2]);for(let Ze=0;Ze=Ft[Tr+0]&&te>=Ft[Tr+1])?(De[sr]=!0,ve.push(Tt[sr])):De[sr]=!1}}}}_forEachCell(S,D,j,te,ue,ve,De,Ze){let at=this._convertToCellCoord(S),Tt=this._convertToCellCoord(D),Ft=this._convertToCellCoord(j),Qt=this._convertToCellCoord(te);for(let sr=at;sr<=Ft;sr++)for(let Tr=Tt;Tr<=Qt;Tr++){let Pr=this.d*Tr+sr;if((!Ze||Ze(this._convertFromCellCoord(sr),this._convertFromCellCoord(Tr),this._convertFromCellCoord(sr+1),this._convertFromCellCoord(Tr+1)))&&ue.call(this,S,D,j,te,Pr,ve,De,Ze))return}}_convertFromCellCoord(S){return(S-this.padding)/this.scale}_convertToCellCoord(S){return Math.max(0,Math.min(this.d-1,Math.floor(S*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let S=this.cells,D=3+this.cells.length+1+1,j=0;for(let ve=0;ve=0)continue;let ve=R[ue];te[ue]=Ii[D].shallow.indexOf(ue)>=0?ve:Ea(ve,S)}R instanceof Error&&(te.message=R.message)}if(te.$name)throw new Error("$name property is reserved for worker serialization logic.");return D!=="Object"&&(te.$name=D),te}function qa(R){if(Ta(R))return R;if(Array.isArray(R))return R.map(qa);if(typeof R!="object")throw new Error("can't deserialize object of type "+typeof R);let S=Ma(R)||"Object";if(!Ii[S])throw new Error(`can't deserialize unregistered class ${S}`);let{klass:D}=Ii[S];if(!D)throw new Error(`can't deserialize unregistered class ${S}`);if(D.deserialize)return D.deserialize(R);let j=Object.create(D.prototype);for(let te of Object.keys(R)){if(te==="$name")continue;let ue=R[te];j[te]=Ii[S].shallow.indexOf(te)>=0?ue:qa(ue)}return j}class Cn{constructor(){this.first=!0}update(S,D){let j=Math.floor(S);return this.first?(this.first=!1,this.lastIntegerZoom=j,this.lastIntegerZoomTime=0,this.lastZoom=S,this.lastFloorZoom=j,!0):(this.lastFloorZoom>j?(this.lastIntegerZoom=j+1,this.lastIntegerZoomTime=D):this.lastFloorZoomR>=128&&R<=255,"Hangul Jamo":R=>R>=4352&&R<=4607,Khmer:R=>R>=6016&&R<=6143,"General Punctuation":R=>R>=8192&&R<=8303,"Letterlike Symbols":R=>R>=8448&&R<=8527,"Number Forms":R=>R>=8528&&R<=8591,"Miscellaneous Technical":R=>R>=8960&&R<=9215,"Control Pictures":R=>R>=9216&&R<=9279,"Optical Character Recognition":R=>R>=9280&&R<=9311,"Enclosed Alphanumerics":R=>R>=9312&&R<=9471,"Geometric Shapes":R=>R>=9632&&R<=9727,"Miscellaneous Symbols":R=>R>=9728&&R<=9983,"Miscellaneous Symbols and Arrows":R=>R>=11008&&R<=11263,"Ideographic Description Characters":R=>R>=12272&&R<=12287,"CJK Symbols and Punctuation":R=>R>=12288&&R<=12351,Katakana:R=>R>=12448&&R<=12543,Kanbun:R=>R>=12688&&R<=12703,"CJK Strokes":R=>R>=12736&&R<=12783,"Enclosed CJK Letters and Months":R=>R>=12800&&R<=13055,"CJK Compatibility":R=>R>=13056&&R<=13311,"Yijing Hexagram Symbols":R=>R>=19904&&R<=19967,"Private Use Area":R=>R>=57344&&R<=63743,"Vertical Forms":R=>R>=65040&&R<=65055,"CJK Compatibility Forms":R=>R>=65072&&R<=65103,"Small Form Variants":R=>R>=65104&&R<=65135,"Halfwidth and Fullwidth Forms":R=>R>=65280&&R<=65519};function Ua(R){for(let S of R)if(Bo(S.charCodeAt(0)))return!0;return!1}function mo(R){for(let S of R)if(!Qo(S.charCodeAt(0)))return!1;return!0}function Xo(R){let S=R.map(D=>{try{return new RegExp(`\\p{sc=${D}}`,"u").source}catch(j){return null}}).filter(D=>D);return new RegExp(S.join("|"),"u")}let Ts=Xo(["Arab","Dupl","Mong","Ougr","Syrc"]);function Qo(R){return!Ts.test(String.fromCodePoint(R))}let ys=Xo(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Bo(R){return!(R!==746&&R!==747&&(R<4352||!(sn["CJK Compatibility Forms"](R)&&!(R>=65097&&R<=65103)||sn["CJK Compatibility"](R)||sn["CJK Strokes"](R)||!(!sn["CJK Symbols and Punctuation"](R)||R>=12296&&R<=12305||R>=12308&&R<=12319||R===12336)||sn["Enclosed CJK Letters and Months"](R)||sn["Ideographic Description Characters"](R)||sn.Kanbun(R)||sn.Katakana(R)&&R!==12540||!(!sn["Halfwidth and Fullwidth Forms"](R)||R===65288||R===65289||R===65293||R>=65306&&R<=65310||R===65339||R===65341||R===65343||R>=65371&&R<=65503||R===65507||R>=65512&&R<=65519)||!(!sn["Small Form Variants"](R)||R>=65112&&R<=65118||R>=65123&&R<=65126)||sn["Vertical Forms"](R)||sn["Yijing Hexagram Symbols"](R)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(R))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(R))||ys.test(String.fromCodePoint(R)))))}function yl(R){return!(Bo(R)||function(S){return!!(sn["Latin-1 Supplement"](S)&&(S===167||S===169||S===174||S===177||S===188||S===189||S===190||S===215||S===247)||sn["General Punctuation"](S)&&(S===8214||S===8224||S===8225||S===8240||S===8241||S===8251||S===8252||S===8258||S===8263||S===8264||S===8265||S===8273)||sn["Letterlike Symbols"](S)||sn["Number Forms"](S)||sn["Miscellaneous Technical"](S)&&(S>=8960&&S<=8967||S>=8972&&S<=8991||S>=8996&&S<=9e3||S===9003||S>=9085&&S<=9114||S>=9150&&S<=9165||S===9167||S>=9169&&S<=9179||S>=9186&&S<=9215)||sn["Control Pictures"](S)&&S!==9251||sn["Optical Character Recognition"](S)||sn["Enclosed Alphanumerics"](S)||sn["Geometric Shapes"](S)||sn["Miscellaneous Symbols"](S)&&!(S>=9754&&S<=9759)||sn["Miscellaneous Symbols and Arrows"](S)&&(S>=11026&&S<=11055||S>=11088&&S<=11097||S>=11192&&S<=11243)||sn["CJK Symbols and Punctuation"](S)||sn.Katakana(S)||sn["Private Use Area"](S)||sn["CJK Compatibility Forms"](S)||sn["Small Form Variants"](S)||sn["Halfwidth and Fullwidth Forms"](S)||S===8734||S===8756||S===8757||S>=9984&&S<=10087||S>=10102&&S<=10131||S===65532||S===65533)}(R))}let Gs=Xo(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Rs(R){return Gs.test(String.fromCodePoint(R))}function ia(R,S){return!(!S&&Rs(R)||R>=2304&&R<=3583||R>=3840&&R<=4255||sn.Khmer(R))}function Ka(R){for(let S of R)if(Rs(S.charCodeAt(0)))return!0;return!1}let vs=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(R){this.pluginStatus=R.pluginStatus,this.pluginURL=R.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(R){this.applyArabicShaping=R.applyArabicShaping,this.processBidirectionalText=R.processBidirectionalText,this.processStyledBidirectionalText=R.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Ko{constructor(S,D){this.zoom=S,D?(this.now=D.now,this.fadeDuration=D.fadeDuration,this.zoomHistory=D.zoomHistory,this.transition=D.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Cn,this.transition={})}isSupportedScript(S){return function(D,j){for(let te of D)if(!ia(te.charCodeAt(0),j))return!1;return!0}(S,vs.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let S=this.zoom,D=S-Math.floor(S),j=this.crossFadingFactor();return S>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:D+(1-D)*j}:{fromScale:.5,toScale:1,t:1-(1-j)*D}}}class nu{constructor(S,D){this.property=S,this.value=D,this.expression=function(j,te){if(Ch(j))return new Qs(j,te);if(Lc(j)){let ue=yu(j,te);if(ue.result==="error")throw new Error(ue.value.map(ve=>`${ve.key}: ${ve.message}`).join(", "));return ue.value}{let ue=j;return te.type==="color"&&typeof j=="string"?ue=Zt.parse(j):te.type!=="padding"||typeof j!="number"&&!Array.isArray(j)?te.type==="variableAnchorOffsetCollection"&&Array.isArray(j)&&(ue=Si.parse(j)):ue=Vr.parse(j),{kind:"constant",evaluate:()=>ue}}}(D===void 0?S.specification.default:D,S.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(S,D,j){return this.property.possiblyEvaluate(this,S,D,j)}}class Ru{constructor(S){this.property=S,this.value=new nu(S,void 0)}transitioned(S,D){return new mf(this.property,this.value,D,L({},S.transition,this.transition),S.now)}untransitioned(){return new mf(this.property,this.value,null,{},0)}}class ac{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitionablePropertyValues)}getValue(S){return g(this._values[S].value.value)}setValue(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].value=new nu(this._values[S].property,D===null?void 0:g(D))}getTransition(S){return g(this._values[S].transition)}setTransition(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].transition=g(D)||void 0}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j);let te=this.getTransition(D);te!==void 0&&(S[`${D}-transition`]=te)}return S}transitioned(S,D){let j=new bu(this._properties);for(let te of Object.keys(this._values))j._values[te]=this._values[te].transitioned(S,D._values[te]);return j}untransitioned(){let S=new bu(this._properties);for(let D of Object.keys(this._values))S._values[D]=this._values[D].untransitioned();return S}}class mf{constructor(S,D,j,te,ue){this.property=S,this.value=D,this.begin=ue+te.delay||0,this.end=this.begin+te.duration||0,S.specification.transition&&(te.delay||te.duration)&&(this.prior=j)}possiblyEvaluate(S,D,j){let te=S.now||0,ue=this.value.possiblyEvaluate(S,D,j),ve=this.prior;if(ve){if(te>this.end)return this.prior=null,ue;if(this.value.isDataDriven())return this.prior=null,ue;if(te=1)return 1;let at=Ze*Ze,Tt=at*Ze;return 4*(Ze<.5?Tt:3*(Ze-at)+Tt-.75)}(De))}}return ue}}class bu{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitioningPropertyValues)}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}hasTransition(){for(let S of Object.keys(this._values))if(this._values[S].prior)return!0;return!1}}class Kc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPropertyValues)}hasValue(S){return this._values[S].value!==void 0}getValue(S){return g(this._values[S].value)}setValue(S,D){this._values[S]=new nu(this._values[S].property,D===null?void 0:g(D))}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j)}return S}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}}class Du{constructor(S,D,j){this.property=S,this.value=D,this.parameters=j}isConstant(){return this.value.kind==="constant"}constantOr(S){return this.value.kind==="constant"?this.value.value:S}evaluate(S,D,j,te){return this.property.evaluate(this.value,this.parameters,S,D,j,te)}}class Dc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPossiblyEvaluatedValues)}get(S){return this._values[S]}}class Da{constructor(S){this.specification=S}possiblyEvaluate(S,D){if(S.isDataDriven())throw new Error("Value should not be data driven");return S.expression.evaluate(D)}interpolate(S,D,j){let te=Mo[this.specification.type];return te?te(S,D,j):S}}class eo{constructor(S,D){this.specification=S,this.overrides=D}possiblyEvaluate(S,D,j,te){return new Du(this,S.expression.kind==="constant"||S.expression.kind==="camera"?{kind:"constant",value:S.expression.evaluate(D,null,{},j,te)}:S.expression,D)}interpolate(S,D,j){if(S.value.kind!=="constant"||D.value.kind!=="constant")return S;if(S.value.value===void 0||D.value.value===void 0)return new Du(this,{kind:"constant",value:void 0},S.parameters);let te=Mo[this.specification.type];if(te){let ue=te(S.value.value,D.value.value,j);return new Du(this,{kind:"constant",value:ue},S.parameters)}return S}evaluate(S,D,j,te,ue,ve){return S.kind==="constant"?S.value:S.evaluate(D,j,te,ue,ve)}}class Jc extends eo{possiblyEvaluate(S,D,j,te){if(S.value===void 0)return new Du(this,{kind:"constant",value:void 0},D);if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te),ve=S.property.specification.type==="resolvedImage"&&typeof ue!="string"?ue.name:ue,De=this._calculate(ve,ve,ve,D);return new Du(this,{kind:"constant",value:De},D)}if(S.expression.kind==="camera"){let ue=this._calculate(S.expression.evaluate({zoom:D.zoom-1}),S.expression.evaluate({zoom:D.zoom}),S.expression.evaluate({zoom:D.zoom+1}),D);return new Du(this,{kind:"constant",value:ue},D)}return new Du(this,S.expression,D)}evaluate(S,D,j,te,ue,ve){if(S.kind==="source"){let De=S.evaluate(D,j,te,ue,ve);return this._calculate(De,De,De,D)}return S.kind==="composite"?this._calculate(S.evaluate({zoom:Math.floor(D.zoom)-1},j,te),S.evaluate({zoom:Math.floor(D.zoom)},j,te),S.evaluate({zoom:Math.floor(D.zoom)+1},j,te),D):S.value}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class yc{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){if(S.value!==void 0){if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te);return this._calculate(ue,ue,ue,D)}return this._calculate(S.expression.evaluate(new Ko(Math.floor(D.zoom-1),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom+1),D)),D)}}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class _c{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){return!!S.expression.evaluate(D,null,{},j,te)}interpolate(){return!1}}class le{constructor(S){this.properties=S,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let D in S){let j=S[D];j.specification.overridable&&this.overridableProperties.push(D);let te=this.defaultPropertyValues[D]=new nu(j,void 0),ue=this.defaultTransitionablePropertyValues[D]=new Ru(j);this.defaultTransitioningPropertyValues[D]=ue.untransitioned(),this.defaultPossiblyEvaluatedValues[D]=te.possiblyEvaluate({})}}}mi("DataDrivenProperty",eo),mi("DataConstantProperty",Da),mi("CrossFadedDataDrivenProperty",Jc),mi("CrossFadedProperty",yc),mi("ColorRampProperty",_c);let w="-transition";class B extends Re{constructor(S,D){if(super(),this.id=S.id,this.type=S.type,this._featureFilter={filter:()=>!0,needGeometry:!1},S.type!=="custom"&&(this.metadata=S.metadata,this.minzoom=S.minzoom,this.maxzoom=S.maxzoom,S.type!=="background"&&(this.source=S.source,this.sourceLayer=S["source-layer"],this.filter=S.filter),D.layout&&(this._unevaluatedLayout=new Kc(D.layout)),D.paint)){this._transitionablePaint=new ac(D.paint);for(let j in S.paint)this.setPaintProperty(j,S.paint[j],{validate:!1});for(let j in S.layout)this.setLayoutProperty(j,S.layout[j],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Dc(D.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(S){return S==="visibility"?this.visibility:this._unevaluatedLayout.getValue(S)}setLayoutProperty(S,D,j={}){D!=null&&this._validate(hn,`layers.${this.id}.layout.${S}`,S,D,j)||(S!=="visibility"?this._unevaluatedLayout.setValue(S,D):this.visibility=D)}getPaintProperty(S){return S.endsWith(w)?this._transitionablePaint.getTransition(S.slice(0,-11)):this._transitionablePaint.getValue(S)}setPaintProperty(S,D,j={}){if(D!=null&&this._validate(Xi,`layers.${this.id}.paint.${S}`,S,D,j))return!1;if(S.endsWith(w))return this._transitionablePaint.setTransition(S.slice(0,-11),D||void 0),!1;{let te=this._transitionablePaint._values[S],ue=te.property.specification["property-type"]==="cross-faded-data-driven",ve=te.value.isDataDriven(),De=te.value;this._transitionablePaint.setValue(S,D),this._handleSpecialPaintPropertyUpdate(S);let Ze=this._transitionablePaint._values[S].value;return Ze.isDataDriven()||ve||ue||this._handleOverridablePaintPropertyUpdate(S,De,Ze)}}_handleSpecialPaintPropertyUpdate(S){}_handleOverridablePaintPropertyUpdate(S,D,j){return!1}isHidden(S){return!!(this.minzoom&&S=this.maxzoom)||this.visibility==="none"}updateTransitions(S){this._transitioningPaint=this._transitionablePaint.transitioned(S,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(S,D){S.getCrossfadeParameters&&(this._crossfadeParameters=S.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(S,void 0,D)),this.paint=this._transitioningPaint.possiblyEvaluate(S,void 0,D)}serialize(){let S={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(S.layout=S.layout||{},S.layout.visibility=this.visibility),M(S,(D,j)=>!(D===void 0||j==="layout"&&!Object.keys(D).length||j==="paint"&&!Object.keys(D).length))}_validate(S,D,j,te,ue={}){return(!ue||ue.validate!==!1)&&Ti(this,S.call(fi,{key:D,layerType:this.type,objectKey:j,value:te,styleSpec:ce,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let S in this.paint._values){let D=this.paint.get(S);if(D instanceof Du&&Cu(D.property.specification)&&(D.value.kind==="source"||D.value.kind==="composite")&&D.value.isStateDependent)return!0}return!1}}let Q={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ee{constructor(S,D){this._structArray=S,this._pos1=D*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class se{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(S,D){return S._trim(),D&&(S.isTransferred=!0,D.push(S.arrayBuffer)),{length:S.length,arrayBuffer:S.arrayBuffer}}static deserialize(S){let D=Object.create(this.prototype);return D.arrayBuffer=S.arrayBuffer,D.length=S.length,D.capacity=S.arrayBuffer.byteLength/D.bytesPerElement,D._refreshViews(),D}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(S){this.reserve(S),this.length=S}reserve(S){if(S>this.capacity){this.capacity=Math.max(S,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let D=this.uint8;this._refreshViews(),D&&this.uint8.set(D)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function qe(R,S=1){let D=0,j=0;return{members:R.map(te=>{let ue=Q[te.type].BYTES_PER_ELEMENT,ve=D=je(D,Math.max(S,ue)),De=te.components||1;return j=Math.max(j,ue),D+=ue*De,{name:te.name,type:te.type,components:De,offset:ve}}),size:je(D,Math.max(j,S)),alignment:S}}function je(R,S){return Math.ceil(R/S)*S}class it extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.int16[te+0]=D,this.int16[te+1]=j,S}}it.prototype.bytesPerElement=4,mi("StructArrayLayout2i4",it);class yt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.int16[ue+0]=D,this.int16[ue+1]=j,this.int16[ue+2]=te,S}}yt.prototype.bytesPerElement=6,mi("StructArrayLayout3i6",yt);class Ot extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.int16[ve+0]=D,this.int16[ve+1]=j,this.int16[ve+2]=te,this.int16[ve+3]=ue,S}}Ot.prototype.bytesPerElement=8,mi("StructArrayLayout4i8",Ot);class Nt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}Nt.prototype.bytesPerElement=12,mi("StructArrayLayout2i4i12",Nt);class hr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=4*S,at=8*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.uint8[at+4]=te,this.uint8[at+5]=ue,this.uint8[at+6]=ve,this.uint8[at+7]=De,S}}hr.prototype.bytesPerElement=8,mi("StructArrayLayout2i4ub8",hr);class Sr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.float32[te+0]=D,this.float32[te+1]=j,S}}Sr.prototype.bytesPerElement=8,mi("StructArrayLayout2f8",Sr);class he extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=this.length;return this.resize(Ft+1),this.emplace(Ft,S,D,j,te,ue,ve,De,Ze,at,Tt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=10*S;return this.uint16[Qt+0]=D,this.uint16[Qt+1]=j,this.uint16[Qt+2]=te,this.uint16[Qt+3]=ue,this.uint16[Qt+4]=ve,this.uint16[Qt+5]=De,this.uint16[Qt+6]=Ze,this.uint16[Qt+7]=at,this.uint16[Qt+8]=Tt,this.uint16[Qt+9]=Ft,S}}he.prototype.bytesPerElement=20,mi("StructArrayLayout10ui20",he);class be extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt){let sr=this.length;return this.resize(sr+1),this.emplace(sr,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr){let Tr=12*S;return this.int16[Tr+0]=D,this.int16[Tr+1]=j,this.int16[Tr+2]=te,this.int16[Tr+3]=ue,this.uint16[Tr+4]=ve,this.uint16[Tr+5]=De,this.uint16[Tr+6]=Ze,this.uint16[Tr+7]=at,this.int16[Tr+8]=Tt,this.int16[Tr+9]=Ft,this.int16[Tr+10]=Qt,this.int16[Tr+11]=sr,S}}be.prototype.bytesPerElement=24,mi("StructArrayLayout4i4ui4i24",be);class Pe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.float32[ue+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Pe.prototype.bytesPerElement=12,mi("StructArrayLayout3f12",Pe);class Oe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint32[1*S+0]=D,S}}Oe.prototype.bytesPerElement=4,mi("StructArrayLayout1ul4",Oe);class Je extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at){let Tt=this.length;return this.resize(Tt+1),this.emplace(Tt,S,D,j,te,ue,ve,De,Ze,at)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=10*S,Qt=5*S;return this.int16[Ft+0]=D,this.int16[Ft+1]=j,this.int16[Ft+2]=te,this.int16[Ft+3]=ue,this.int16[Ft+4]=ve,this.int16[Ft+5]=De,this.uint32[Qt+3]=Ze,this.uint16[Ft+8]=at,this.uint16[Ft+9]=Tt,S}}Je.prototype.bytesPerElement=20,mi("StructArrayLayout6i1ul2ui20",Je);class He extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}He.prototype.bytesPerElement=12,mi("StructArrayLayout2i2i2i12",He);class et extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue){let ve=this.length;return this.resize(ve+1),this.emplace(ve,S,D,j,te,ue)}emplace(S,D,j,te,ue,ve){let De=4*S,Ze=8*S;return this.float32[De+0]=D,this.float32[De+1]=j,this.float32[De+2]=te,this.int16[Ze+6]=ue,this.int16[Ze+7]=ve,S}}et.prototype.bytesPerElement=16,mi("StructArrayLayout2f1f2i16",et);class Mt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=16*S,at=4*S,Tt=8*S;return this.uint8[Ze+0]=D,this.uint8[Ze+1]=j,this.float32[at+1]=te,this.float32[at+2]=ue,this.int16[Tt+6]=ve,this.int16[Tt+7]=De,S}}Mt.prototype.bytesPerElement=16,mi("StructArrayLayout2ub2f2i16",Mt);class Dt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[ue+0]=D,this.uint16[ue+1]=j,this.uint16[ue+2]=te,S}}Dt.prototype.bytesPerElement=6,mi("StructArrayLayout3ui6",Dt);class Ut extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni){let Di=this.length;return this.resize(Di+1),this.emplace(Di,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di){let pi=24*S,ki=12*S,Zi=48*S;return this.int16[pi+0]=D,this.int16[pi+1]=j,this.uint16[pi+2]=te,this.uint16[pi+3]=ue,this.uint32[ki+2]=ve,this.uint32[ki+3]=De,this.uint32[ki+4]=Ze,this.uint16[pi+10]=at,this.uint16[pi+11]=Tt,this.uint16[pi+12]=Ft,this.float32[ki+7]=Qt,this.float32[ki+8]=sr,this.uint8[Zi+36]=Tr,this.uint8[Zi+37]=Pr,this.uint8[Zi+38]=$r,this.uint32[ki+10]=ni,this.int16[pi+22]=Di,S}}Ut.prototype.bytesPerElement=48,mi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Ut);class tr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a){let Xa=this.length;return this.resize(Xa+1),this.emplace(Xa,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a,Xa){let Tn=32*S,bo=16*S;return this.int16[Tn+0]=D,this.int16[Tn+1]=j,this.int16[Tn+2]=te,this.int16[Tn+3]=ue,this.int16[Tn+4]=ve,this.int16[Tn+5]=De,this.int16[Tn+6]=Ze,this.int16[Tn+7]=at,this.uint16[Tn+8]=Tt,this.uint16[Tn+9]=Ft,this.uint16[Tn+10]=Qt,this.uint16[Tn+11]=sr,this.uint16[Tn+12]=Tr,this.uint16[Tn+13]=Pr,this.uint16[Tn+14]=$r,this.uint16[Tn+15]=ni,this.uint16[Tn+16]=Di,this.uint16[Tn+17]=pi,this.uint16[Tn+18]=ki,this.uint16[Tn+19]=Zi,this.uint16[Tn+20]=ta,this.uint16[Tn+21]=Va,this.uint16[Tn+22]=Io,this.uint32[bo+12]=La,this.float32[bo+13]=Hn,this.float32[bo+14]=lo,this.uint16[Tn+30]=$a,this.uint16[Tn+31]=Xa,S}}tr.prototype.bytesPerElement=64,mi("StructArrayLayout8i15ui1ul2f2ui64",tr);class mr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.float32[1*S+0]=D,S}}mr.prototype.bytesPerElement=4,mi("StructArrayLayout1f4",mr);class Rr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[6*S+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Rr.prototype.bytesPerElement=12,mi("StructArrayLayout1ui2f12",Rr);class zr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=4*S;return this.uint32[2*S+0]=D,this.uint16[ue+2]=j,this.uint16[ue+3]=te,S}}zr.prototype.bytesPerElement=8,mi("StructArrayLayout1ul2ui8",zr);class Xr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.uint16[te+0]=D,this.uint16[te+1]=j,S}}Xr.prototype.bytesPerElement=4,mi("StructArrayLayout2ui4",Xr);class di extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint16[1*S+0]=D,S}}di.prototype.bytesPerElement=2,mi("StructArrayLayout1ui2",di);class Li extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.float32[ve+0]=D,this.float32[ve+1]=j,this.float32[ve+2]=te,this.float32[ve+3]=ue,S}}Li.prototype.bytesPerElement=16,mi("StructArrayLayout4f16",Li);class Ci extends ee{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new u(this.anchorPointX,this.anchorPointY)}}Ci.prototype.size=20;class Qi extends Je{get(S){return new Ci(this,S)}}mi("CollisionBoxArray",Qi);class Mn extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(S){this._structArray.uint8[this._pos1+37]=S}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(S){this._structArray.uint8[this._pos1+38]=S}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(S){this._structArray.uint32[this._pos4+10]=S}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Mn.prototype.size=48;class pa extends Ut{get(S){return new Mn(this,S)}}mi("PlacedSymbolArray",pa);class ea extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(S){this._structArray.uint32[this._pos4+12]=S}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}ea.prototype.size=64;class Ga extends tr{get(S){return new ea(this,S)}}mi("SymbolInstanceArray",Ga);class To extends mr{getoffsetX(S){return this.float32[1*S+0]}}mi("GlyphOffsetArray",To);class Wa extends yt{getx(S){return this.int16[3*S+0]}gety(S){return this.int16[3*S+1]}gettileUnitDistanceFromAnchor(S){return this.int16[3*S+2]}}mi("SymbolLineVertexArray",Wa);class co extends ee{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}co.prototype.size=12;class Ro extends Rr{get(S){return new co(this,S)}}mi("TextAnchorOffsetArray",Ro);class Ds extends ee{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ds.prototype.size=8;class As extends zr{get(S){return new Ds(this,S)}}mi("FeatureIndexArray",As);class yo extends it{}class po extends it{}class _l extends it{}class Hl extends Nt{}class Zu extends hr{}class cu extends Sr{}class el extends he{}class au extends be{}class zc extends Pe{}class zl extends Oe{}class Fl extends He{}class Z extends Mt{}class oe extends Dt{}class we extends Xr{}let Be=qe([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ue}=Be;class We{constructor(S=[]){this.segments=S}prepareSegment(S,D,j,te){let ue=this.segments[this.segments.length-1];return S>We.MAX_VERTEX_ARRAY_LENGTH&&T(`Max vertices per segment is ${We.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${S}`),(!ue||ue.vertexLength+S>We.MAX_VERTEX_ARRAY_LENGTH||ue.sortKey!==te)&&(ue={vertexOffset:D.length,primitiveOffset:j.length,vertexLength:0,primitiveLength:0},te!==void 0&&(ue.sortKey=te),this.segments.push(ue)),ue}get(){return this.segments}destroy(){for(let S of this.segments)for(let D in S.vaos)S.vaos[D].destroy()}static simpleSegment(S,D,j,te){return new We([{vertexOffset:S,primitiveOffset:D,vertexLength:j,primitiveLength:te,vaos:{},sortKey:0}])}}function wt(R,S){return 256*(R=k(Math.floor(R),0,255))+k(Math.floor(S),0,255)}We.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,mi("SegmentVector",We);let tt=qe([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var zt={exports:{}},or={exports:{}};or.exports=function(R,S){var D,j,te,ue,ve,De,Ze,at;for(j=R.length-(D=3&R.length),te=S,ve=3432918353,De=461845907,at=0;at>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295)<<13|te>>>19))+((5*(te>>>16)&65535)<<16)&4294967295))+((58964+(ue>>>16)&65535)<<16);switch(Ze=0,D){case 3:Ze^=(255&R.charCodeAt(at+2))<<16;case 2:Ze^=(255&R.charCodeAt(at+1))<<8;case 1:te^=Ze=(65535&(Ze=(Ze=(65535&(Ze^=255&R.charCodeAt(at)))*ve+(((Ze>>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295}return te^=R.length,te=2246822507*(65535&(te^=te>>>16))+((2246822507*(te>>>16)&65535)<<16)&4294967295,te=3266489909*(65535&(te^=te>>>13))+((3266489909*(te>>>16)&65535)<<16)&4294967295,(te^=te>>>16)>>>0};var lr=or.exports,Dr={exports:{}};Dr.exports=function(R,S){for(var D,j=R.length,te=S^j,ue=0;j>=4;)D=1540483477*(65535&(D=255&R.charCodeAt(ue)|(255&R.charCodeAt(++ue))<<8|(255&R.charCodeAt(++ue))<<16|(255&R.charCodeAt(++ue))<<24))+((1540483477*(D>>>16)&65535)<<16),te=1540483477*(65535&te)+((1540483477*(te>>>16)&65535)<<16)^(D=1540483477*(65535&(D^=D>>>24))+((1540483477*(D>>>16)&65535)<<16)),j-=4,++ue;switch(j){case 3:te^=(255&R.charCodeAt(ue+2))<<16;case 2:te^=(255&R.charCodeAt(ue+1))<<8;case 1:te=1540483477*(65535&(te^=255&R.charCodeAt(ue)))+((1540483477*(te>>>16)&65535)<<16)}return te=1540483477*(65535&(te^=te>>>13))+((1540483477*(te>>>16)&65535)<<16),(te^=te>>>15)>>>0};var Ir=lr,oi=Dr.exports;zt.exports=Ir,zt.exports.murmur3=Ir,zt.exports.murmur2=oi;var ui=o(zt.exports);class qr{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(S,D,j,te){this.ids.push(Kr(S)),this.positions.push(D,j,te)}getPositions(S){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let D=Kr(S),j=0,te=this.ids.length-1;for(;j>1;this.ids[ve]>=D?te=ve:j=ve+1}let ue=[];for(;this.ids[j]===D;)ue.push({index:this.positions[3*j],start:this.positions[3*j+1],end:this.positions[3*j+2]}),j++;return ue}static serialize(S,D){let j=new Float64Array(S.ids),te=new Uint32Array(S.positions);return ii(j,te,0,j.length-1),D&&D.push(j.buffer,te.buffer),{ids:j,positions:te}}static deserialize(S){let D=new qr;return D.ids=S.ids,D.positions=S.positions,D.indexed=!0,D}}function Kr(R){let S=+R;return!isNaN(S)&&S<=Number.MAX_SAFE_INTEGER?S:ui(String(R))}function ii(R,S,D,j){for(;D>1],ue=D-1,ve=j+1;for(;;){do ue++;while(R[ue]te);if(ue>=ve)break;vi(R,ue,ve),vi(S,3*ue,3*ve),vi(S,3*ue+1,3*ve+1),vi(S,3*ue+2,3*ve+2)}ve-D`u_${te}`),this.type=j}setUniform(S,D,j){S.set(j.constantOr(this.value))}getBinding(S,D,j){return this.type==="color"?new dn(S,D):new Jr(S,D)}}class ya{constructor(S,D){this.uniformNames=D.map(j=>`u_${j}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(S,D){this.pixelRatioFrom=D.pixelRatio,this.pixelRatioTo=S.pixelRatio,this.patternFrom=D.tlbr,this.patternTo=S.tlbr}setUniform(S,D,j,te){let ue=te==="u_pattern_to"?this.patternTo:te==="u_pattern_from"?this.patternFrom:te==="u_pixel_ratio_to"?this.pixelRatioTo:te==="u_pixel_ratio_from"?this.pixelRatioFrom:null;ue&&S.set(ue)}getBinding(S,D,j){return j.substr(0,9)==="u_pattern"?new un(S,D):new Jr(S,D)}}class so{constructor(S,D,j,te){this.expression=S,this.type=j,this.maxValue=0,this.paintVertexAttributes=D.map(ue=>({name:`a_${ue}`,type:"Float32",components:j==="color"?2:1,offset:0})),this.paintVertexArray=new te}populatePaintArray(S,D,j,te,ue){let ve=this.paintVertexArray.length,De=this.expression.evaluate(new Ko(0),D,{},te,[],ue);this.paintVertexArray.resize(S),this._setPaintValue(ve,S,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:0},j,te);this._setPaintValue(S,D,ue)}_setPaintValue(S,D,j){if(this.type==="color"){let te=Nn(j);for(let ue=S;ue`u_${De}_t`),this.type=j,this.useIntegerZoom=te,this.zoom=ue,this.maxValue=0,this.paintVertexAttributes=D.map(De=>({name:`a_${De}`,type:"Float32",components:j==="color"?4:2,offset:0})),this.paintVertexArray=new ve}populatePaintArray(S,D,j,te,ue){let ve=this.expression.evaluate(new Ko(this.zoom),D,{},te,[],ue),De=this.expression.evaluate(new Ko(this.zoom+1),D,{},te,[],ue),Ze=this.paintVertexArray.length;this.paintVertexArray.resize(S),this._setPaintValue(Ze,S,ve,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:this.zoom},j,te),ve=this.expression.evaluate({zoom:this.zoom+1},j,te);this._setPaintValue(S,D,ue,ve)}_setPaintValue(S,D,j,te){if(this.type==="color"){let ue=Nn(j),ve=Nn(te);for(let De=S;De`#define HAS_UNIFORM_${te}`))}return S}getBinderAttributes(){let S=[];for(let D in this.binders){let j=this.binders[D];if(j instanceof so||j instanceof wa)for(let te=0;te!0){this.programConfigurations={};for(let te of S)this.programConfigurations[te.id]=new Ss(te,D,j);this.needsUpload=!1,this._featureMap=new qr,this._bufferOffset=0}populatePaintArrays(S,D,j,te,ue,ve){for(let De in this.programConfigurations)this.programConfigurations[De].populatePaintArrays(S,D,te,ue,ve);D.id!==void 0&&this._featureMap.add(D.id,j,this._bufferOffset,S),this._bufferOffset=S,this.needsUpload=!0}updatePaintArrays(S,D,j,te){for(let ue of j)this.needsUpload=this.programConfigurations[ue.id].updatePaintArrays(S,this._featureMap,D,ue,te)||this.needsUpload}get(S){return this.programConfigurations[S]}upload(S){if(this.needsUpload){for(let D in this.programConfigurations)this.programConfigurations[D].upload(S);this.needsUpload=!1}}destroy(){for(let S in this.programConfigurations)this.programConfigurations[S].destroy()}}function Ns(R,S){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[R]||[R.replace(`${S}-`,"").replace(/-/g,"_")]}function pn(R,S,D){let j={color:{source:Sr,composite:Li},number:{source:mr,composite:Sr}},te=function(ue){return{"line-pattern":{source:el,composite:el},"fill-pattern":{source:el,composite:el},"fill-extrusion-pattern":{source:el,composite:el}}[ue]}(R);return te&&te[D]||j[S][D]}mi("ConstantBinder",ga),mi("CrossFadedConstantBinder",ya),mi("SourceExpressionBinder",so),mi("CrossFadedCompositeBinder",io),mi("CompositeExpressionBinder",wa),mi("ProgramConfiguration",Ss,{omit:["_buffers"]}),mi("ProgramConfigurationSet",_s);let za=8192,Lo=Math.pow(2,14)-1,Fo=-Lo-1;function js(R){let S=za/R.extent,D=R.loadGeometry();for(let j=0;jve.x+1||Zeve.y+1)&&T("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return D}function xl(R,S){return{type:R.type,id:R.id,properties:R.properties,geometry:S?js(R):[]}}function fu(R,S,D,j,te){R.emplaceBack(2*S+(j+1)/2,2*D+(te+1)/2)}class dl{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new po,this.indexArray=new oe,this.segments=new We,this.programConfigurations=new _s(S.layers,S.zoom),this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){let te=this.layers[0],ue=[],ve=null,De=!1;te.type==="circle"&&(ve=te.layout.get("circle-sort-key"),De=!ve.isConstant());for(let{feature:Ze,id:at,index:Tt,sourceLayerIndex:Ft}of S){let Qt=this.layers[0]._featureFilter.needGeometry,sr=xl(Ze,Qt);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),sr,j))continue;let Tr=De?ve.evaluate(sr,{},j):void 0,Pr={id:at,properties:Ze.properties,type:Ze.type,sourceLayerIndex:Ft,index:Tt,geometry:Qt?sr.geometry:js(Ze),patterns:{},sortKey:Tr};ue.push(Pr)}De&&ue.sort((Ze,at)=>Ze.sortKey-at.sortKey);for(let Ze of ue){let{geometry:at,index:Tt,sourceLayerIndex:Ft}=Ze,Qt=S[Tt].feature;this.addFeature(Ze,at,Tt,j),D.featureIndex.insert(Qt,at,Tt,Ft,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Ue),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(S,D,j,te){for(let ue of D)for(let ve of ue){let De=ve.x,Ze=ve.y;if(De<0||De>=za||Ze<0||Ze>=za)continue;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,S.sortKey),Tt=at.vertexLength;fu(this.layoutVertexArray,De,Ze,-1,-1),fu(this.layoutVertexArray,De,Ze,1,-1),fu(this.layoutVertexArray,De,Ze,1,1),fu(this.layoutVertexArray,De,Ze,-1,1),this.indexArray.emplaceBack(Tt,Tt+1,Tt+2),this.indexArray.emplaceBack(Tt,Tt+3,Tt+2),at.vertexLength+=4,at.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,{},te)}}function xc(R,S){for(let D=0;D1){if(wi(R,S))return!0;for(let j=0;j1?D:D.sub(S)._mult(te)._add(S))}function cn(R,S){let D,j,te,ue=!1;for(let ve=0;veS.y!=te.y>S.y&&S.x<(te.x-j.x)*(S.y-j.y)/(te.y-j.y)+j.x&&(ue=!ue)}return ue}function On(R,S){let D=!1;for(let j=0,te=R.length-1;jS.y!=ve.y>S.y&&S.x<(ve.x-ue.x)*(S.y-ue.y)/(ve.y-ue.y)+ue.x&&(D=!D)}return D}function Bn(R,S,D){let j=D[0],te=D[2];if(R.xte.x&&S.x>te.x||R.yte.y&&S.y>te.y)return!1;let ue=F(R,S,D[0]);return ue!==F(R,S,D[1])||ue!==F(R,S,D[2])||ue!==F(R,S,D[3])}function yn(R,S,D){let j=S.paint.get(R).value;return j.kind==="constant"?j.value:D.programConfigurations.get(S.id).getMaxValue(R)}function to(R){return Math.sqrt(R[0]*R[0]+R[1]*R[1])}function Rn(R,S,D,j,te){if(!S[0]&&!S[1])return R;let ue=u.convert(S)._mult(te);D==="viewport"&&ue._rotate(-j);let ve=[];for(let De=0;Devn($r,Pr))}(at,Ze),sr=Ft?Tt*De:Tt;for(let Tr of te)for(let Pr of Tr){let $r=Ft?Pr:vn(Pr,Ze),ni=sr,Di=Za([],[Pr.x,Pr.y,0,1],Ze);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ni*=Di[3]/ve.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ni*=ve.cameraToCenterDistance/Di[3]),At(Qt,$r,ni))return!0}return!1}}function vn(R,S){let D=Za([],[R.x,R.y,0,1],S);return new u(D[0]/D[3],D[1]/D[3])}class Aa extends dl{}let aa;mi("HeatmapBucket",Aa,{omit:["layers"]});var Xn={get paint(){return aa=aa||new le({"heatmap-radius":new eo(ce.paint_heatmap["heatmap-radius"]),"heatmap-weight":new eo(ce.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Da(ce.paint_heatmap["heatmap-intensity"]),"heatmap-color":new _c(ce.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Da(ce.paint_heatmap["heatmap-opacity"])})}};function Vn(R,{width:S,height:D},j,te){if(te){if(te instanceof Uint8ClampedArray)te=new Uint8Array(te.buffer);else if(te.length!==S*D*j)throw new RangeError(`mismatched image size. expected: ${te.length} but got: ${S*D*j}`)}else te=new Uint8Array(S*D*j);return R.width=S,R.height=D,R.data=te,R}function ma(R,{width:S,height:D},j){if(S===R.width&&D===R.height)return;let te=Vn({},{width:S,height:D},j);ro(R,te,{x:0,y:0},{x:0,y:0},{width:Math.min(R.width,S),height:Math.min(R.height,D)},j),R.width=S,R.height=D,R.data=te.data}function ro(R,S,D,j,te,ue){if(te.width===0||te.height===0)return S;if(te.width>R.width||te.height>R.height||D.x>R.width-te.width||D.y>R.height-te.height)throw new RangeError("out of range source coordinates for image copy");if(te.width>S.width||te.height>S.height||j.x>S.width-te.width||j.y>S.height-te.height)throw new RangeError("out of range destination coordinates for image copy");let ve=R.data,De=S.data;if(ve===De)throw new Error("srcData equals dstData, so image is already copied");for(let Ze=0;Ze{S[R.evaluationKey]=Ze;let at=R.expression.evaluate(S);te.data[ve+De+0]=Math.floor(255*at.r/at.a),te.data[ve+De+1]=Math.floor(255*at.g/at.a),te.data[ve+De+2]=Math.floor(255*at.b/at.a),te.data[ve+De+3]=Math.floor(255*at.a)};if(R.clips)for(let ve=0,De=0;ve80*D){De=1/0,Ze=1/0;let Tt=-1/0,Ft=-1/0;for(let Qt=D;QtTt&&(Tt=sr),Tr>Ft&&(Ft=Tr)}at=Math.max(Tt-De,Ft-Ze),at=at!==0?32767/at:0}return yf(ue,ve,D,De,Ze,at,0),ve}function bc(R,S,D,j,te){let ue;if(te===function(ve,De,Ze,at){let Tt=0;for(let Ft=De,Qt=Ze-at;Ft0)for(let ve=S;ve=S;ve-=j)ue=Jt(ve/j|0,R[ve],R[ve+1],ue);return ue&&de(ue,ue.next)&&(vt(ue),ue=ue.next),ue}function wc(R,S){if(!R)return R;S||(S=R);let D,j=R;do if(D=!1,j.steiner||!de(j,j.next)&&pe(j.prev,j,j.next)!==0)j=j.next;else{if(vt(j),j=S=j.prev,j===j.next)break;D=!0}while(D||j!==S);return S}function yf(R,S,D,j,te,ue,ve){if(!R)return;!ve&&ue&&function(Ze,at,Tt,Ft){let Qt=Ze;do Qt.z===0&&(Qt.z=z(Qt.x,Qt.y,at,Tt,Ft)),Qt.prevZ=Qt.prev,Qt.nextZ=Qt.next,Qt=Qt.next;while(Qt!==Ze);Qt.prevZ.nextZ=null,Qt.prevZ=null,function(sr){let Tr,Pr=1;do{let $r,ni=sr;sr=null;let Di=null;for(Tr=0;ni;){Tr++;let pi=ni,ki=0;for(let ta=0;ta0||Zi>0&π)ki!==0&&(Zi===0||!pi||ni.z<=pi.z)?($r=ni,ni=ni.nextZ,ki--):($r=pi,pi=pi.nextZ,Zi--),Di?Di.nextZ=$r:sr=$r,$r.prevZ=Di,Di=$r;ni=pi}Di.nextZ=null,Pr*=2}while(Tr>1)}(Qt)}(R,j,te,ue);let De=R;for(;R.prev!==R.next;){let Ze=R.prev,at=R.next;if(ue?Fc(R,j,te,ue):Gl(R))S.push(Ze.i,R.i,at.i),vt(R),R=at.next,De=at.next;else if((R=at)===De){ve?ve===1?yf(R=ef(wc(R),S),S,D,j,te,ue,2):ve===2&&ls(R,S,D,j,te,ue):yf(wc(R),S,D,j,te,ue,1);break}}}function Gl(R){let S=R.prev,D=R,j=R.next;if(pe(S,D,j)>=0)return!1;let te=S.x,ue=D.x,ve=j.x,De=S.y,Ze=D.y,at=j.y,Tt=teue?te>ve?te:ve:ue>ve?ue:ve,sr=De>Ze?De>at?De:at:Ze>at?Ze:at,Tr=j.next;for(;Tr!==S;){if(Tr.x>=Tt&&Tr.x<=Qt&&Tr.y>=Ft&&Tr.y<=sr&&O(te,De,ue,Ze,ve,at,Tr.x,Tr.y)&&pe(Tr.prev,Tr,Tr.next)>=0)return!1;Tr=Tr.next}return!0}function Fc(R,S,D,j){let te=R.prev,ue=R,ve=R.next;if(pe(te,ue,ve)>=0)return!1;let De=te.x,Ze=ue.x,at=ve.x,Tt=te.y,Ft=ue.y,Qt=ve.y,sr=DeZe?De>at?De:at:Ze>at?Ze:at,$r=Tt>Ft?Tt>Qt?Tt:Qt:Ft>Qt?Ft:Qt,ni=z(sr,Tr,S,D,j),Di=z(Pr,$r,S,D,j),pi=R.prevZ,ki=R.nextZ;for(;pi&&pi.z>=ni&&ki&&ki.z<=Di;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0||(pi=pi.prevZ,ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0))return!1;ki=ki.nextZ}for(;pi&&pi.z>=ni;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0)return!1;pi=pi.prevZ}for(;ki&&ki.z<=Di;){if(ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0)return!1;ki=ki.nextZ}return!0}function ef(R,S){let D=R;do{let j=D.prev,te=D.next.next;!de(j,te)&&Ie(j,D,D.next,te)&&Kt(j,te)&&Kt(te,j)&&(S.push(j.i,D.i,te.i),vt(D),vt(D.next),D=R=te),D=D.next}while(D!==R);return wc(D)}function ls(R,S,D,j,te,ue){let ve=R;do{let De=ve.next.next;for(;De!==ve.prev;){if(ve.i!==De.i&&$(ve,De)){let Ze=ir(ve,De);return ve=wc(ve,ve.next),Ze=wc(Ze,Ze.next),yf(ve,S,D,j,te,ue,0),void yf(Ze,S,D,j,te,ue,0)}De=De.next}ve=ve.next}while(ve!==R)}function _f(R,S){return R.x-S.x}function ns(R,S){let D=function(te,ue){let ve=ue,De=te.x,Ze=te.y,at,Tt=-1/0;do{if(Ze<=ve.y&&Ze>=ve.next.y&&ve.next.y!==ve.y){let Pr=ve.x+(Ze-ve.y)*(ve.next.x-ve.x)/(ve.next.y-ve.y);if(Pr<=De&&Pr>Tt&&(Tt=Pr,at=ve.x=ve.x&&ve.x>=Qt&&De!==ve.x&&O(Zeat.x||ve.x===at.x&&Y(at,ve)))&&(at=ve,Tr=Pr)}ve=ve.next}while(ve!==Ft);return at}(R,S);if(!D)return S;let j=ir(D,R);return wc(j,j.next),wc(D,D.next)}function Y(R,S){return pe(R.prev,R,S.prev)<0&&pe(S.next,R,R.next)<0}function z(R,S,D,j,te){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-D)*te|0)|R<<8))|R<<4))|R<<2))|R<<1))|(S=1431655765&((S=858993459&((S=252645135&((S=16711935&((S=(S-j)*te|0)|S<<8))|S<<4))|S<<2))|S<<1))<<1}function K(R){let S=R,D=R;do(S.x=(R-ve)*(ue-De)&&(R-ve)*(j-De)>=(D-ve)*(S-De)&&(D-ve)*(ue-De)>=(te-ve)*(j-De)}function $(R,S){return R.next.i!==S.i&&R.prev.i!==S.i&&!function(D,j){let te=D;do{if(te.i!==D.i&&te.next.i!==D.i&&te.i!==j.i&&te.next.i!==j.i&&Ie(te,te.next,D,j))return!0;te=te.next}while(te!==D);return!1}(R,S)&&(Kt(R,S)&&Kt(S,R)&&function(D,j){let te=D,ue=!1,ve=(D.x+j.x)/2,De=(D.y+j.y)/2;do te.y>De!=te.next.y>De&&te.next.y!==te.y&&ve<(te.next.x-te.x)*(De-te.y)/(te.next.y-te.y)+te.x&&(ue=!ue),te=te.next;while(te!==D);return ue}(R,S)&&(pe(R.prev,R,S.prev)||pe(R,S.prev,S))||de(R,S)&&pe(R.prev,R,R.next)>0&&pe(S.prev,S,S.next)>0)}function pe(R,S,D){return(S.y-R.y)*(D.x-S.x)-(S.x-R.x)*(D.y-S.y)}function de(R,S){return R.x===S.x&&R.y===S.y}function Ie(R,S,D,j){let te=pt(pe(R,S,D)),ue=pt(pe(R,S,j)),ve=pt(pe(D,j,R)),De=pt(pe(D,j,S));return te!==ue&&ve!==De||!(te!==0||!$e(R,D,S))||!(ue!==0||!$e(R,j,S))||!(ve!==0||!$e(D,R,j))||!(De!==0||!$e(D,S,j))}function $e(R,S,D){return S.x<=Math.max(R.x,D.x)&&S.x>=Math.min(R.x,D.x)&&S.y<=Math.max(R.y,D.y)&&S.y>=Math.min(R.y,D.y)}function pt(R){return R>0?1:R<0?-1:0}function Kt(R,S){return pe(R.prev,R,R.next)<0?pe(R,S,R.next)>=0&&pe(R,R.prev,S)>=0:pe(R,S,R.prev)<0||pe(R,R.next,S)<0}function ir(R,S){let D=Pt(R.i,R.x,R.y),j=Pt(S.i,S.x,S.y),te=R.next,ue=S.prev;return R.next=S,S.prev=R,D.next=te,te.prev=D,j.next=D,D.prev=j,ue.next=j,j.prev=ue,j}function Jt(R,S,D,j){let te=Pt(R,S,D);return j?(te.next=j.next,te.prev=j,j.next.prev=te,j.next=te):(te.prev=te,te.next=te),te}function vt(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function Pt(R,S,D){return{i:R,x:S,y:D,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Wt(R,S,D){let j=D.patternDependencies,te=!1;for(let ue of S){let ve=ue.paint.get(`${R}-pattern`);ve.isConstant()||(te=!0);let De=ve.constantOr(null);De&&(te=!0,j[De.to]=!0,j[De.from]=!0)}return te}function rr(R,S,D,j,te){let ue=te.patternDependencies;for(let ve of S){let De=ve.paint.get(`${R}-pattern`).value;if(De.kind!=="constant"){let Ze=De.evaluate({zoom:j-1},D,{},te.availableImages),at=De.evaluate({zoom:j},D,{},te.availableImages),Tt=De.evaluate({zoom:j+1},D,{},te.availableImages);Ze=Ze&&Ze.name?Ze.name:Ze,at=at&&at.name?at.name:at,Tt=Tt&&Tt.name?Tt.name:Tt,ue[Ze]=!0,ue[at]=!0,ue[Tt]=!0,D.patterns[ve.id]={min:Ze,mid:at,max:Tt}}}return D}class dr{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new _l,this.indexArray=new oe,this.indexArray2=new we,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.segments2=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("fill",this.layers,D);let te=this.layers[0].layout.get("fill-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j,D.availableImages):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("fill",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Qc),this.indexBuffer=S.createIndexBuffer(this.indexArray),this.indexBuffer2=S.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De=0;for(let sr of ve)De+=sr.length;let Ze=this.segments.prepareSegment(De,this.layoutVertexArray,this.indexArray),at=Ze.vertexLength,Tt=[],Ft=[];for(let sr of ve){if(sr.length===0)continue;sr!==ve[0]&&Ft.push(Tt.length/2);let Tr=this.segments2.prepareSegment(sr.length,this.layoutVertexArray,this.indexArray2),Pr=Tr.vertexLength;this.layoutVertexArray.emplaceBack(sr[0].x,sr[0].y),this.indexArray2.emplaceBack(Pr+sr.length-1,Pr),Tt.push(sr[0].x),Tt.push(sr[0].y);for(let $r=1;$r>3}if(te--,j===1||j===2)ue+=R.readSVarint(),ve+=R.readSVarint(),j===1&&(S&&De.push(S),S=[]),S.push(new yi(ue,ve));else{if(j!==7)throw new Error("unknown command "+j);S&&S.push(S[0].clone())}}return S&&De.push(S),De},Ri.prototype.bbox=function(){var R=this._pbf;R.pos=this._geometry;for(var S=R.readVarint()+R.pos,D=1,j=0,te=0,ue=0,ve=1/0,De=-1/0,Ze=1/0,at=-1/0;R.pos>3}if(j--,D===1||D===2)(te+=R.readSVarint())De&&(De=te),(ue+=R.readSVarint())at&&(at=ue);else if(D!==7)throw new Error("unknown command "+D)}return[ve,Ze,De,at]},Ri.prototype.toGeoJSON=function(R,S,D){var j,te,ue=this.extent*Math.pow(2,D),ve=this.extent*R,De=this.extent*S,Ze=this.loadGeometry(),at=Ri.types[this.type];function Tt(sr){for(var Tr=0;Tr>3;te=ve===1?j.readString():ve===2?j.readFloat():ve===3?j.readDouble():ve===4?j.readVarint64():ve===5?j.readVarint():ve===6?j.readSVarint():ve===7?j.readBoolean():null}return te}(D))}bn.prototype.feature=function(R){if(R<0||R>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[R];var S=this._pbf.readVarint()+this._pbf.pos;return new qn(this._pbf,S,this.extent,this._keys,this._values)};var Gn=rn;function da(R,S,D){if(R===3){var j=new Gn(D,D.readVarint()+D.pos);j.length&&(S[j.name]=j)}}ei.VectorTile=function(R,S){this.layers=R.readFields(da,{},S)},ei.VectorTileFeature=tn,ei.VectorTileLayer=rn;let No=ei.VectorTileFeature.types,Do=Math.pow(2,13);function ps(R,S,D,j,te,ue,ve,De){R.emplaceBack(S,D,2*Math.floor(j*Do)+ve,te*Do*2,ue*Do*2,Math.round(De))}class fo{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new Hl,this.centroidVertexArray=new yo,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.features=[],this.hasPattern=Wt("fill-extrusion",this.layers,D);for(let{feature:te,id:ue,index:ve,sourceLayerIndex:De}of S){let Ze=this.layers[0]._featureFilter.needGeometry,at=xl(te,Ze);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),at,j))continue;let Tt={id:ue,sourceLayerIndex:De,index:ve,geometry:Ze?at.geometry:js(te),properties:te.properties,type:te.type,patterns:{}};this.hasPattern?this.features.push(rr("fill-extrusion",this.layers,Tt,this.zoom,D)):this.addFeature(Tt,Tt.geometry,ve,j,{}),D.featureIndex.insert(te,Tt.geometry,ve,De,this.index,!0)}}addFeatures(S,D,j){for(let te of this.features){let{geometry:ue}=te;this.addFeature(te,ue,te.index,D,j)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Gr),this.centroidVertexBuffer=S.createVertexBuffer(this.centroidVertexArray,cr.members,!0),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De={x:0,y:0,vertexCount:0},Ze=0;for(let Tr of ve)Ze+=Tr.length;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let Tr of ve){if(Tr.length===0||tl(Tr))continue;let Pr=0;for(let $r=0;$r=1){let Di=Tr[$r-1];if(!as(ni,Di)){at.vertexLength+4>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let pi=ni.sub(Di)._perp()._unit(),ki=Di.dist(ni);Pr+ki>32768&&(Pr=0),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,1,Pr),De.x+=2*ni.x,De.y+=2*ni.y,De.vertexCount+=2,Pr+=ki,ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,1,Pr),De.x+=2*Di.x,De.y+=2*Di.y,De.vertexCount+=2;let Zi=at.vertexLength;this.indexArray.emplaceBack(Zi,Zi+2,Zi+1),this.indexArray.emplaceBack(Zi+1,Zi+2,Zi+3),at.vertexLength+=4,at.primitiveLength+=2}}}}if(at.vertexLength+Ze>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(Ze,this.layoutVertexArray,this.indexArray)),No[S.type]!=="Polygon")continue;let Tt=[],Ft=[],Qt=at.vertexLength;for(let Tr of ve)if(Tr.length!==0){Tr!==ve[0]&&Ft.push(Tt.length/2);for(let Pr=0;Prza)||R.y===S.y&&(R.y<0||R.y>za)}function tl(R){return R.every(S=>S.x<0)||R.every(S=>S.x>za)||R.every(S=>S.y<0)||R.every(S=>S.y>za)}let zu;mi("FillExtrusionBucket",fo,{omit:["layers","features"]});var Mv={get paint(){return zu=zu||new le({"fill-extrusion-opacity":new Da(ce["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new eo(ce["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Jc(ce["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new eo(ce["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new eo(ce["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Da(ce["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ev extends B{constructor(S){super(S,Mv)}createBucket(S){return new fo(S)}queryRadius(){return to(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(S,D,j,te,ue,ve,De,Ze){let at=Rn(S,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),ve.angle,De),Tt=this.paint.get("fill-extrusion-height").evaluate(D,j),Ft=this.paint.get("fill-extrusion-base").evaluate(D,j),Qt=function(Tr,Pr,$r,ni){let Di=[];for(let pi of Tr){let ki=[pi.x,pi.y,0,1];Za(ki,ki,Pr),Di.push(new u(ki[0]/ki[3],ki[1]/ki[3]))}return Di}(at,Ze),sr=function(Tr,Pr,$r,ni){let Di=[],pi=[],ki=ni[8]*Pr,Zi=ni[9]*Pr,ta=ni[10]*Pr,Va=ni[11]*Pr,Io=ni[8]*$r,La=ni[9]*$r,Hn=ni[10]*$r,lo=ni[11]*$r;for(let $a of Tr){let Xa=[],Tn=[];for(let bo of $a){let Ya=bo.x,Uo=bo.y,wu=ni[0]*Ya+ni[4]*Uo+ni[12],hu=ni[1]*Ya+ni[5]*Uo+ni[13],uh=ni[2]*Ya+ni[6]*Uo+ni[14],$v=ni[3]*Ya+ni[7]*Uo+ni[15],td=uh+ta,ch=$v+Va,Ud=wu+Io,Vd=hu+La,Hd=uh+Hn,rf=$v+lo,fh=new u((wu+ki)/ch,(hu+Zi)/ch);fh.z=td/ch,Xa.push(fh);let Td=new u(Ud/rf,Vd/rf);Td.z=Hd/rf,Tn.push(Td)}Di.push(Xa),pi.push(Tn)}return[Di,pi]}(te,Ft,Tt,Ze);return function(Tr,Pr,$r){let ni=1/0;Er($r,Pr)&&(ni=Yv($r,Pr[0]));for(let Di=0;DiD.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(D=>{this.gradients[D.id]={}}),this.layoutVertexArray=new Zu,this.layoutVertexArray2=new cu,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("line",this.layers,D);let te=this.layers[0].layout.get("line-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("line",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=S.createVertexBuffer(this.layoutVertexArray2,pp)),this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,vp),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(S){if(S.properties&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_end"))return{start:+S.properties.mapbox_clip_start,end:+S.properties.mapbox_clip_end}}addFeature(S,D,j,te,ue){let ve=this.layers[0].layout,De=ve.get("line-join").evaluate(S,{}),Ze=ve.get("line-cap"),at=ve.get("line-miter-limit"),Tt=ve.get("line-round-limit");this.lineClips=this.lineFeatureClips(S);for(let Ft of D)this.addLine(Ft,S,De,Ze,at,Tt);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,ue,te)}addLine(S,D,j,te,ue,ve){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ni=0;ni=2&&S[Ze-1].equals(S[Ze-2]);)Ze--;let at=0;for(;at0;if(Va&&ni>at){let lo=Qt.dist(sr);if(lo>2*Tt){let $a=Qt.sub(Qt.sub(sr)._mult(Tt/lo)._round());this.updateDistance(sr,$a),this.addCurrentVertex($a,Pr,0,0,Ft),sr=$a}}let La=sr&&Tr,Hn=La?j:De?"butt":te;if(La&&Hn==="round"&&(Ziue&&(Hn="bevel"),Hn==="bevel"&&(Zi>2&&(Hn="flipbevel"),Zi100)Di=$r.mult(-1);else{let lo=Zi*Pr.add($r).mag()/Pr.sub($r).mag();Di._perp()._mult(lo*(Io?-1:1))}this.addCurrentVertex(Qt,Di,0,0,Ft),this.addCurrentVertex(Qt,Di.mult(-1),0,0,Ft)}else if(Hn==="bevel"||Hn==="fakeround"){let lo=-Math.sqrt(Zi*Zi-1),$a=Io?lo:0,Xa=Io?0:lo;if(sr&&this.addCurrentVertex(Qt,Pr,$a,Xa,Ft),Hn==="fakeround"){let Tn=Math.round(180*ta/Math.PI/20);for(let bo=1;bo2*Tt){let $a=Qt.add(Tr.sub(Qt)._mult(Tt/lo)._round());this.updateDistance(Qt,$a),this.addCurrentVertex($a,$r,0,0,Ft),Qt=$a}}}}addCurrentVertex(S,D,j,te,ue,ve=!1){let De=D.y*te-D.x,Ze=-D.y-D.x*te;this.addHalfVertex(S,D.x+D.y*j,D.y-D.x*j,ve,!1,j,ue),this.addHalfVertex(S,De,Ze,ve,!0,-te,ue),this.distance>kv/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(S,D,j,te,ue,ve))}addHalfVertex({x:S,y:D},j,te,ue,ve,De,Ze){let at=.5*(this.lineClips?this.scaledDistance*(kv-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((S<<1)+(ue?1:0),(D<<1)+(ve?1:0),Math.round(63*j)+128,Math.round(63*te)+128,1+(De===0?0:De<0?-1:1)|(63&at)<<2,at>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Tt=Ze.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Tt),Ze.primitiveLength++),ve?this.e2=Tt:this.e1=Tt}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(S,D){this.distance+=S.dist(D),this.updateScaledDistance()}}let Cv,ny;mi("LineBucket",Kv,{omit:["layers","patternFeatures"]});var fg={get paint(){return ny=ny||new le({"line-opacity":new eo(ce.paint_line["line-opacity"]),"line-color":new eo(ce.paint_line["line-color"]),"line-translate":new Da(ce.paint_line["line-translate"]),"line-translate-anchor":new Da(ce.paint_line["line-translate-anchor"]),"line-width":new eo(ce.paint_line["line-width"]),"line-gap-width":new eo(ce.paint_line["line-gap-width"]),"line-offset":new eo(ce.paint_line["line-offset"]),"line-blur":new eo(ce.paint_line["line-blur"]),"line-dasharray":new yc(ce.paint_line["line-dasharray"]),"line-pattern":new Jc(ce.paint_line["line-pattern"]),"line-gradient":new _c(ce.paint_line["line-gradient"])})},get layout(){return Cv=Cv||new le({"line-cap":new Da(ce.layout_line["line-cap"]),"line-join":new eo(ce.layout_line["line-join"]),"line-miter-limit":new Da(ce.layout_line["line-miter-limit"]),"line-round-limit":new Da(ce.layout_line["line-round-limit"]),"line-sort-key":new eo(ce.layout_line["line-sort-key"])})}};class Hf extends eo{possiblyEvaluate(S,D){return D=new Ko(Math.floor(D.zoom),{now:D.now,fadeDuration:D.fadeDuration,zoomHistory:D.zoomHistory,transition:D.transition}),super.possiblyEvaluate(S,D)}evaluate(S,D,j,te){return D=L({},D,{zoom:Math.floor(D.zoom)}),super.evaluate(S,D,j,te)}}let hg;class ay extends B{constructor(S){super(S,fg),this.gradientVersion=0,hg||(hg=new Hf(fg.paint.properties["line-width"].specification),hg.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(S){if(S==="line-gradient"){let D=this.gradientExpression();this.stepInterpolant=!!function(j){return j._styleExpression!==void 0}(D)&&D._styleExpression.expression instanceof Ji,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(S,D){super.recalculate(S,D),this.paint._values["line-floorwidth"]=hg.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,S)}createBucket(S){return new Kv(S)}queryRadius(S){let D=S,j=Rh(yn("line-width",this,D),yn("line-gap-width",this,D)),te=yn("line-offset",this,D);return j/2+Math.abs(te)+to(this.paint.get("line-translate"))}queryIntersectsFeature(S,D,j,te,ue,ve,De){let Ze=Rn(S,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),ve.angle,De),at=De/2*Rh(this.paint.get("line-width").evaluate(D,j),this.paint.get("line-gap-width").evaluate(D,j)),Tt=this.paint.get("line-offset").evaluate(D,j);return Tt&&(te=function(Ft,Qt){let sr=[];for(let Tr=0;Tr=3){for(let $r=0;$r0?S+2*R:R}let rm=qe([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),w1=qe([{name:"a_projected_pos",components:3,type:"Float32"}],4);qe([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let T1=qe([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);qe([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let oy=qe([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),im=qe([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nm(R,S,D){return R.sections.forEach(j=>{j.text=function(te,ue,ve){let De=ue.layout.get("text-transform").evaluate(ve,{});return De==="uppercase"?te=te.toLocaleUpperCase():De==="lowercase"&&(te=te.toLocaleLowerCase()),vs.applyArabicShaping&&(te=vs.applyArabicShaping(te)),te}(j.text,S,D)}),R}qe([{name:"triangle",components:3,type:"Uint16"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),qe([{type:"Float32",name:"offsetX"}]),qe([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),qe([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Fu={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var kl=24,bd=Kl,sy=function(R,S,D,j,te){var ue,ve,De=8*te-j-1,Ze=(1<>1,Tt=-7,Ft=D?te-1:0,Qt=D?-1:1,sr=R[S+Ft];for(Ft+=Qt,ue=sr&(1<<-Tt)-1,sr>>=-Tt,Tt+=De;Tt>0;ue=256*ue+R[S+Ft],Ft+=Qt,Tt-=8);for(ve=ue&(1<<-Tt)-1,ue>>=-Tt,Tt+=j;Tt>0;ve=256*ve+R[S+Ft],Ft+=Qt,Tt-=8);if(ue===0)ue=1-at;else{if(ue===Ze)return ve?NaN:1/0*(sr?-1:1);ve+=Math.pow(2,j),ue-=at}return(sr?-1:1)*ve*Math.pow(2,ue-j)},A1=function(R,S,D,j,te,ue){var ve,De,Ze,at=8*ue-te-1,Tt=(1<>1,Qt=te===23?Math.pow(2,-24)-Math.pow(2,-77):0,sr=j?0:ue-1,Tr=j?1:-1,Pr=S<0||S===0&&1/S<0?1:0;for(S=Math.abs(S),isNaN(S)||S===1/0?(De=isNaN(S)?1:0,ve=Tt):(ve=Math.floor(Math.log(S)/Math.LN2),S*(Ze=Math.pow(2,-ve))<1&&(ve--,Ze*=2),(S+=ve+Ft>=1?Qt/Ze:Qt*Math.pow(2,1-Ft))*Ze>=2&&(ve++,Ze/=2),ve+Ft>=Tt?(De=0,ve=Tt):ve+Ft>=1?(De=(S*Ze-1)*Math.pow(2,te),ve+=Ft):(De=S*Math.pow(2,Ft-1)*Math.pow(2,te),ve=0));te>=8;R[D+sr]=255&De,sr+=Tr,De/=256,te-=8);for(ve=ve<0;R[D+sr]=255&ve,sr+=Tr,ve/=256,at-=8);R[D+sr-Tr]|=128*Pr};function Kl(R){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(R)?R:new Uint8Array(R||0),this.pos=0,this.type=0,this.length=this.buf.length}Kl.Varint=0,Kl.Fixed64=1,Kl.Bytes=2,Kl.Fixed32=5;var Nx=4294967296,am=1/Nx,Mw=typeof TextDecoder=="undefined"?null:new TextDecoder("utf-8");function Lv(R){return R.type===Kl.Bytes?R.readVarint()+R.pos:R.pos+1}function om(R,S,D){return D?4294967296*S+(R>>>0):4294967296*(S>>>0)+(R>>>0)}function Ew(R,S,D){var j=S<=16383?1:S<=2097151?2:S<=268435455?3:Math.floor(Math.log(S)/(7*Math.LN2));D.realloc(j);for(var te=D.pos-1;te>=R;te--)D.buf[te+j]=D.buf[te]}function Ux(R,S){for(var D=0;D>>8,R[D+2]=S>>>16,R[D+3]=S>>>24}function cC(R,S){return(R[S]|R[S+1]<<8|R[S+2]<<16)+(R[S+3]<<24)}Kl.prototype={destroy:function(){this.buf=null},readFields:function(R,S,D){for(D=D||this.length;this.pos>3,ue=this.pos;this.type=7&j,R(te,S,this),this.pos===ue&&this.skip(j)}return S},readMessage:function(R,S){return this.readFields(R,S,this.readVarint()+this.pos)},readFixed32:function(){var R=ly(this.buf,this.pos);return this.pos+=4,R},readSFixed32:function(){var R=cC(this.buf,this.pos);return this.pos+=4,R},readFixed64:function(){var R=ly(this.buf,this.pos)+ly(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readSFixed64:function(){var R=ly(this.buf,this.pos)+cC(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readFloat:function(){var R=sy(this.buf,this.pos,!0,23,4);return this.pos+=4,R},readDouble:function(){var R=sy(this.buf,this.pos,!0,52,8);return this.pos+=8,R},readVarint:function(R){var S,D,j=this.buf;return S=127&(D=j[this.pos++]),D<128?S:(S|=(127&(D=j[this.pos++]))<<7,D<128?S:(S|=(127&(D=j[this.pos++]))<<14,D<128?S:(S|=(127&(D=j[this.pos++]))<<21,D<128?S:function(te,ue,ve){var De,Ze,at=ve.buf;if(De=(112&(Ze=at[ve.pos++]))>>4,Ze<128||(De|=(127&(Ze=at[ve.pos++]))<<3,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<10,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<17,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<24,Ze<128)||(De|=(1&(Ze=at[ve.pos++]))<<31,Ze<128))return om(te,De,ue);throw new Error("Expected varint not more than 10 bytes")}(S|=(15&(D=j[this.pos]))<<28,R,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var R=this.readVarint();return R%2==1?(R+1)/-2:R/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var R=this.readVarint()+this.pos,S=this.pos;return this.pos=R,R-S>=12&&Mw?function(D,j,te){return Mw.decode(D.subarray(j,te))}(this.buf,S,R):function(D,j,te){for(var ue="",ve=j;ve239?4:Tt>223?3:Tt>191?2:1;if(ve+Qt>te)break;Qt===1?Tt<128&&(Ft=Tt):Qt===2?(192&(De=D[ve+1]))==128&&(Ft=(31&Tt)<<6|63&De)<=127&&(Ft=null):Qt===3?(Ze=D[ve+2],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&((Ft=(15&Tt)<<12|(63&De)<<6|63&Ze)<=2047||Ft>=55296&&Ft<=57343)&&(Ft=null)):Qt===4&&(Ze=D[ve+2],at=D[ve+3],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&(192&at)==128&&((Ft=(15&Tt)<<18|(63&De)<<12|(63&Ze)<<6|63&at)<=65535||Ft>=1114112)&&(Ft=null)),Ft===null?(Ft=65533,Qt=1):Ft>65535&&(Ft-=65536,ue+=String.fromCharCode(Ft>>>10&1023|55296),Ft=56320|1023&Ft),ue+=String.fromCharCode(Ft),ve+=Qt}return ue}(this.buf,S,R)},readBytes:function(){var R=this.readVarint()+this.pos,S=this.buf.subarray(this.pos,R);return this.pos=R,S},readPackedVarint:function(R,S){if(this.type!==Kl.Bytes)return R.push(this.readVarint(S));var D=Lv(this);for(R=R||[];this.pos127;);else if(S===Kl.Bytes)this.pos=this.readVarint()+this.pos;else if(S===Kl.Fixed32)this.pos+=4;else{if(S!==Kl.Fixed64)throw new Error("Unimplemented type: "+S);this.pos+=8}},writeTag:function(R,S){this.writeVarint(R<<3|S)},realloc:function(R){for(var S=this.length||16;S268435455||R<0?function(S,D){var j,te;if(S>=0?(j=S%4294967296|0,te=S/4294967296|0):(te=~(-S/4294967296),4294967295^(j=~(-S%4294967296))?j=j+1|0:(j=0,te=te+1|0)),S>=18446744073709552e3||S<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");D.realloc(10),function(ue,ve,De){De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,De.buf[De.pos]=127&(ue>>>=7)}(j,0,D),function(ue,ve){var De=(7&ue)<<4;ve.buf[ve.pos++]|=De|((ue>>>=3)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue)))))}(te,D)}(R,this):(this.realloc(4),this.buf[this.pos++]=127&R|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=R>>>7&127))))},writeSVarint:function(R){this.writeVarint(R<0?2*-R-1:2*R)},writeBoolean:function(R){this.writeVarint(!!R)},writeString:function(R){R=String(R),this.realloc(4*R.length),this.pos++;var S=this.pos;this.pos=function(j,te,ue){for(var ve,De,Ze=0;Ze55295&&ve<57344){if(!De){ve>56319||Ze+1===te.length?(j[ue++]=239,j[ue++]=191,j[ue++]=189):De=ve;continue}if(ve<56320){j[ue++]=239,j[ue++]=191,j[ue++]=189,De=ve;continue}ve=De-55296<<10|ve-56320|65536,De=null}else De&&(j[ue++]=239,j[ue++]=191,j[ue++]=189,De=null);ve<128?j[ue++]=ve:(ve<2048?j[ue++]=ve>>6|192:(ve<65536?j[ue++]=ve>>12|224:(j[ue++]=ve>>18|240,j[ue++]=ve>>12&63|128),j[ue++]=ve>>6&63|128),j[ue++]=63&ve|128)}return ue}(this.buf,R,this.pos);var D=this.pos-S;D>=128&&Ew(S,D,this),this.pos=S-1,this.writeVarint(D),this.pos+=D},writeFloat:function(R){this.realloc(4),A1(this.buf,R,this.pos,!0,23,4),this.pos+=4},writeDouble:function(R){this.realloc(8),A1(this.buf,R,this.pos,!0,52,8),this.pos+=8},writeBytes:function(R){var S=R.length;this.writeVarint(S),this.realloc(S);for(var D=0;D=128&&Ew(D,j,this),this.pos=D-1,this.writeVarint(j),this.pos+=j},writeMessage:function(R,S,D){this.writeTag(R,Kl.Bytes),this.writeRawMessage(S,D)},writePackedVarint:function(R,S){S.length&&this.writeMessage(R,Ux,S)},writePackedSVarint:function(R,S){S.length&&this.writeMessage(R,P9,S)},writePackedBoolean:function(R,S){S.length&&this.writeMessage(R,D9,S)},writePackedFloat:function(R,S){S.length&&this.writeMessage(R,I9,S)},writePackedDouble:function(R,S){S.length&&this.writeMessage(R,R9,S)},writePackedFixed32:function(R,S){S.length&&this.writeMessage(R,mQ,S)},writePackedSFixed32:function(R,S){S.length&&this.writeMessage(R,z9,S)},writePackedFixed64:function(R,S){S.length&&this.writeMessage(R,F9,S)},writePackedSFixed64:function(R,S){S.length&&this.writeMessage(R,q9,S)},writeBytesField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeBytes(S)},writeFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFixed32(S)},writeSFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeSFixed32(S)},writeFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeFixed64(S)},writeSFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeSFixed64(S)},writeVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeVarint(S)},writeSVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeSVarint(S)},writeStringField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeString(S)},writeFloatField:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFloat(S)},writeDoubleField:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeDouble(S)},writeBooleanField:function(R,S){this.writeVarintField(R,!!S)}};var eS=o(bd);let tS=3;function yQ(R,S,D){R===1&&D.readMessage(O9,S)}function O9(R,S,D){if(R===3){let{id:j,bitmap:te,width:ue,height:ve,left:De,top:Ze,advance:at}=D.readMessage(fC,{});S.push({id:j,bitmap:new Ao({width:ue+2*tS,height:ve+2*tS},te),metrics:{width:ue,height:ve,left:De,top:Ze,advance:at}})}}function fC(R,S,D){R===1?S.id=D.readVarint():R===2?S.bitmap=D.readBytes():R===3?S.width=D.readVarint():R===4?S.height=D.readVarint():R===5?S.left=D.readSVarint():R===6?S.top=D.readSVarint():R===7&&(S.advance=D.readVarint())}let hC=tS;function rS(R){let S=0,D=0;for(let ve of R)S+=ve.w*ve.h,D=Math.max(D,ve.w);R.sort((ve,De)=>De.h-ve.h);let j=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(S/.95)),D),h:1/0}],te=0,ue=0;for(let ve of R)for(let De=j.length-1;De>=0;De--){let Ze=j[De];if(!(ve.w>Ze.w||ve.h>Ze.h)){if(ve.x=Ze.x,ve.y=Ze.y,ue=Math.max(ue,ve.y+ve.h),te=Math.max(te,ve.x+ve.w),ve.w===Ze.w&&ve.h===Ze.h){let at=j.pop();De=0&&j>=S&&Lw[this.text.charCodeAt(j)];j--)D--;this.text=this.text.substring(S,D),this.sectionIndex=this.sectionIndex.slice(S,D)}substring(S,D){let j=new S1;return j.text=this.text.substring(S,D),j.sectionIndex=this.sectionIndex.slice(S,D),j.sections=this.sections,j}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((S,D)=>Math.max(S,this.sections[D].scale),0)}addTextSection(S,D){this.text+=S.text,this.sections.push(Hx.forText(S.scale,S.fontStack||D));let j=this.sections.length-1;for(let te=0;te=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Gx(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=S1.fromFeature(R,te),$r;Ft===i.ah.vertical&&Pr.verticalizePunctuation();let{processBidirectionalText:ni,processStyledBidirectionalText:Di}=vs;if(ni&&Pr.sections.length===1){$r=[];let Zi=ni(Pr.toString(),M1(Pr,at,ue,S,j,sr));for(let ta of Zi){let Va=new S1;Va.text=ta,Va.sections=Pr.sections;for(let Io=0;Io0&&ep>xf&&(xf=ep)}else{let oc=Va[Cl.fontStack],If=oc&&oc[Tu];if(If&&If.rect)I1=If.rect,qc=If.metrics;else{let ep=ta[Cl.fontStack],gg=ep&&ep[Tu];if(!gg)continue;qc=gg.metrics}Rv=(fh-Cl.scale)*kl}Qv?(Zi.verticalizable=!0,Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=Gp*Cl.scale+Tn):(Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=qc.advance*Cl.scale+Tn)}Dh.length!==0&&(hu=Math.max(Uo-Tn,hu),sm(Dh,0,Dh.length-1,$v,xf)),Uo=0;let Iv=Hn*fh+xf;rd.lineOffset=Math.max(xf,Td),wu+=Iv,uh=Math.max(Iv,uh),++td}var ch;let Ud=wu-lh,{horizontalAlign:Vd,verticalAlign:Hd}=Iw(lo);(function(rf,fh,Td,rd,Dh,xf,Iv,lv,Cl){let qu=(fh-Td)*Dh,Tu=0;Tu=xf!==Iv?-lv*rd-lh:(-rd*Cl+.5)*Iv;for(let Rv of rf)for(let qc of Rv.positionedGlyphs)qc.x+=qu,qc.y+=Tu})(Zi.positionedLines,$v,Vd,Hd,hu,uh,Hn,Ud,La.length),Zi.top+=-Hd*Ud,Zi.bottom=Zi.top+Ud,Zi.left+=-Vd*hu,Zi.right=Zi.left+hu}(ki,S,D,j,$r,ve,De,Ze,Ft,at,Qt,Tr),!function(Zi){for(let ta of Zi)if(ta.positionedGlyphs.length!==0)return!1;return!0}(pi)&&ki}let Lw={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},B9={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},N9={40:!0};function dC(R,S,D,j,te,ue){if(S.imageName){let ve=j[S.imageName];return ve?ve.displaySize[0]*S.scale*kl/ue+te:0}{let ve=D[S.fontStack],De=ve&&ve[R];return De?De.metrics.advance*S.scale+te:0}}function vC(R,S,D,j){let te=Math.pow(R-S,2);return j?R=0,at=0;for(let Ft=0;Ftat){let Tt=Math.ceil(ue/at);te*=Tt/ve,ve=Tt}return{x1:j,y1:te,x2:j+ue,y2:te+ve}}function mC(R,S,D,j,te,ue){let ve=R.image,De;if(ve.content){let $r=ve.content,ni=ve.pixelRatio||1;De=[$r[0]/ni,$r[1]/ni,ve.displaySize[0]-$r[2]/ni,ve.displaySize[1]-$r[3]/ni]}let Ze=S.left*ue,at=S.right*ue,Tt,Ft,Qt,sr;D==="width"||D==="both"?(sr=te[0]+Ze-j[3],Ft=te[0]+at+j[1]):(sr=te[0]+(Ze+at-ve.displaySize[0])/2,Ft=sr+ve.displaySize[0]);let Tr=S.top*ue,Pr=S.bottom*ue;return D==="height"||D==="both"?(Tt=te[1]+Tr-j[0],Qt=te[1]+Pr+j[2]):(Tt=te[1]+(Tr+Pr-ve.displaySize[1])/2,Qt=Tt+ve.displaySize[1]),{image:ve,top:Tt,right:Ft,bottom:Qt,left:sr,collisionPadding:De}}let Wx=255,v0=128,lm=Wx*v0;function yC(R,S){let{expression:D}=S;if(D.kind==="constant")return{kind:"constant",layoutSize:D.evaluate(new Ko(R+1))};if(D.kind==="source")return{kind:"source"};{let{zoomStops:j,interpolationType:te}=D,ue=0;for(;ueve.id),this.index=S.index,this.pixelRatio=S.pixelRatio,this.sourceLayerIndex=S.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Un([]),this.placementViewportMatrix=Un([]);let D=this.layers[0]._unevaluatedLayout._values;this.textSizeData=yC(this.zoom,D["text-size"]),this.iconSizeData=yC(this.zoom,D["icon-size"]);let j=this.layers[0].layout,te=j.get("symbol-sort-key"),ue=j.get("symbol-z-order");this.canOverlap=iS(j,"text-overlap","text-allow-overlap")!=="never"||iS(j,"icon-overlap","icon-allow-overlap")!=="never"||j.get("text-ignore-placement")||j.get("icon-ignore-placement"),this.sortFeaturesByKey=ue!=="viewport-y"&&!te.isConstant(),this.sortFeaturesByY=(ue==="viewport-y"||ue==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,j.get("symbol-placement")==="point"&&(this.writingModes=j.get("text-writing-mode").map(ve=>i.ah[ve])),this.stateDependentLayerIds=this.layers.filter(ve=>ve.isStateDependent()).map(ve=>ve.id),this.sourceID=S.sourceID}createArrays(){this.text=new oS(new _s(this.layers,this.zoom,S=>/^text/.test(S))),this.icon=new oS(new _s(this.layers,this.zoom,S=>/^icon/.test(S))),this.glyphOffsetArray=new To,this.lineVertexArray=new Wa,this.symbolInstances=new Ga,this.textAnchorOffsets=new Ro}calculateGlyphDependencies(S,D,j,te,ue){for(let ve=0;ve0)&&(ve.value.kind!=="constant"||ve.value.value.length>0),Tt=Ze.value.kind!=="constant"||!!Ze.value.value||Object.keys(Ze.parameters).length>0,Ft=ue.get("symbol-sort-key");if(this.features=[],!at&&!Tt)return;let Qt=D.iconDependencies,sr=D.glyphDependencies,Tr=D.availableImages,Pr=new Ko(this.zoom);for(let{feature:$r,id:ni,index:Di,sourceLayerIndex:pi}of S){let ki=te._featureFilter.needGeometry,Zi=xl($r,ki);if(!te._featureFilter.filter(Pr,Zi,j))continue;let ta,Va;if(ki||(Zi.geometry=js($r)),at){let La=te.getValueAndResolveTokens("text-field",Zi,j,Tr),Hn=Zr.factory(La),lo=this.hasRTLText=this.hasRTLText||aS(Hn);(!lo||vs.getRTLTextPluginStatus()==="unavailable"||lo&&vs.isParsed())&&(ta=nm(Hn,te,Zi))}if(Tt){let La=te.getValueAndResolveTokens("icon-image",Zi,j,Tr);Va=La instanceof Mi?La:Mi.fromString(La)}if(!ta&&!Va)continue;let Io=this.sortFeaturesByKey?Ft.evaluate(Zi,{},j):void 0;if(this.features.push({id:ni,text:ta,icon:Va,index:Di,sourceLayerIndex:pi,geometry:Zi.geometry,properties:$r.properties,type:V9[$r.type],sortKey:Io}),Va&&(Qt[Va.name]=!0),ta){let La=ve.evaluate(Zi,{},j).join(","),Hn=ue.get("text-rotation-alignment")!=="viewport"&&ue.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(i.ah.vertical)>=0;for(let lo of ta.sections)if(lo.image)Qt[lo.image.name]=!0;else{let $a=Ua(ta.toString()),Xa=lo.fontStack||La,Tn=sr[Xa]=sr[Xa]||{};this.calculateGlyphDependencies(lo.text,Tn,Hn,this.allowVerticalPlacement,$a)}}}ue.get("symbol-placement")==="line"&&(this.features=function($r){let ni={},Di={},pi=[],ki=0;function Zi(La){pi.push($r[La]),ki++}function ta(La,Hn,lo){let $a=Di[La];return delete Di[La],Di[Hn]=$a,pi[$a].geometry[0].pop(),pi[$a].geometry[0]=pi[$a].geometry[0].concat(lo[0]),$a}function Va(La,Hn,lo){let $a=ni[Hn];return delete ni[Hn],ni[La]=$a,pi[$a].geometry[0].shift(),pi[$a].geometry[0]=lo[0].concat(pi[$a].geometry[0]),$a}function Io(La,Hn,lo){let $a=lo?Hn[0][Hn[0].length-1]:Hn[0][0];return`${La}:${$a.x}:${$a.y}`}for(let La=0;La<$r.length;La++){let Hn=$r[La],lo=Hn.geometry,$a=Hn.text?Hn.text.toString():null;if(!$a){Zi(La);continue}let Xa=Io($a,lo),Tn=Io($a,lo,!0);if(Xa in Di&&Tn in ni&&Di[Xa]!==ni[Tn]){let bo=Va(Xa,Tn,lo),Ya=ta(Xa,Tn,pi[bo].geometry);delete ni[Xa],delete Di[Tn],Di[Io($a,pi[Ya].geometry,!0)]=Ya,pi[bo].geometry=null}else Xa in Di?ta(Xa,Tn,lo):Tn in ni?Va(Xa,Tn,lo):(Zi(La),ni[Xa]=ki-1,Di[Tn]=ki-1)}return pi.filter(La=>La.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort(($r,ni)=>$r.sortKey-ni.sortKey)}update(S,D,j){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(S,D,this.layers,j),this.icon.programConfigurations.updatePaintArrays(S,D,this.layers,j))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(S){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(S),this.iconCollisionBox.upload(S)),this.text.upload(S,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(S,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(S,D){let j=this.lineVertexArray.length;if(S.segment!==void 0){let te=S.dist(D[S.segment+1]),ue=S.dist(D[S.segment]),ve={};for(let De=S.segment+1;De=0;De--)ve[De]={x:D[De].x,y:D[De].y,tileUnitDistanceFromAnchor:ue},De>0&&(ue+=D[De-1].dist(D[De]));for(let De=0;De0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(S,D){let j=S.placedSymbolArray.get(D),te=j.vertexStartIndex+4*j.numGlyphs;for(let ue=j.vertexStartIndex;uete[De]-te[Ze]||ue[Ze]-ue[De]),ve}addToSortKeyRanges(S,D){let j=this.sortKeyRanges[this.sortKeyRanges.length-1];j&&j.sortKey===D?j.symbolInstanceEnd=S+1:this.sortKeyRanges.push({sortKey:D,symbolInstanceStart:S,symbolInstanceEnd:S+1})}sortFeatures(S){if(this.sortFeaturesByY&&this.sortedAngle!==S&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(S),this.sortedAngle=S,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let D of this.symbolInstanceIndexes){let j=this.symbolInstances.get(D);this.featureSortOrder.push(j.featureIndex),[j.rightJustifiedTextSymbolIndex,j.centerJustifiedTextSymbolIndex,j.leftJustifiedTextSymbolIndex].forEach((te,ue,ve)=>{te>=0&&ve.indexOf(te)===ue&&this.addIndicesForPlacedSymbol(this.text,te)}),j.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,j.verticalPlacedTextSymbolIndex),j.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.placedIconSymbolIndex),j.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let tf,Zx;mi("SymbolBucket",E1,{omit:["layers","collisionBoxArray","features","compareText"]}),E1.MAX_GLYPHS=65535,E1.addDynamicAttributes=nS;var Dw={get paint(){return Zx=Zx||new le({"icon-opacity":new eo(ce.paint_symbol["icon-opacity"]),"icon-color":new eo(ce.paint_symbol["icon-color"]),"icon-halo-color":new eo(ce.paint_symbol["icon-halo-color"]),"icon-halo-width":new eo(ce.paint_symbol["icon-halo-width"]),"icon-halo-blur":new eo(ce.paint_symbol["icon-halo-blur"]),"icon-translate":new Da(ce.paint_symbol["icon-translate"]),"icon-translate-anchor":new Da(ce.paint_symbol["icon-translate-anchor"]),"text-opacity":new eo(ce.paint_symbol["text-opacity"]),"text-color":new eo(ce.paint_symbol["text-color"],{runtimeType:Ht,getOverride:R=>R.textColor,hasOverride:R=>!!R.textColor}),"text-halo-color":new eo(ce.paint_symbol["text-halo-color"]),"text-halo-width":new eo(ce.paint_symbol["text-halo-width"]),"text-halo-blur":new eo(ce.paint_symbol["text-halo-blur"]),"text-translate":new Da(ce.paint_symbol["text-translate"]),"text-translate-anchor":new Da(ce.paint_symbol["text-translate-anchor"])})},get layout(){return tf=tf||new le({"symbol-placement":new Da(ce.layout_symbol["symbol-placement"]),"symbol-spacing":new Da(ce.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Da(ce.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new eo(ce.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Da(ce.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Da(ce.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Da(ce.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Da(ce.layout_symbol["icon-ignore-placement"]),"icon-optional":new Da(ce.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Da(ce.layout_symbol["icon-rotation-alignment"]),"icon-size":new eo(ce.layout_symbol["icon-size"]),"icon-text-fit":new Da(ce.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Da(ce.layout_symbol["icon-text-fit-padding"]),"icon-image":new eo(ce.layout_symbol["icon-image"]),"icon-rotate":new eo(ce.layout_symbol["icon-rotate"]),"icon-padding":new eo(ce.layout_symbol["icon-padding"]),"icon-keep-upright":new Da(ce.layout_symbol["icon-keep-upright"]),"icon-offset":new eo(ce.layout_symbol["icon-offset"]),"icon-anchor":new eo(ce.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Da(ce.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Da(ce.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Da(ce.layout_symbol["text-rotation-alignment"]),"text-field":new eo(ce.layout_symbol["text-field"]),"text-font":new eo(ce.layout_symbol["text-font"]),"text-size":new eo(ce.layout_symbol["text-size"]),"text-max-width":new eo(ce.layout_symbol["text-max-width"]),"text-line-height":new Da(ce.layout_symbol["text-line-height"]),"text-letter-spacing":new eo(ce.layout_symbol["text-letter-spacing"]),"text-justify":new eo(ce.layout_symbol["text-justify"]),"text-radial-offset":new eo(ce.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Da(ce.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new eo(ce.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new eo(ce.layout_symbol["text-anchor"]),"text-max-angle":new Da(ce.layout_symbol["text-max-angle"]),"text-writing-mode":new Da(ce.layout_symbol["text-writing-mode"]),"text-rotate":new eo(ce.layout_symbol["text-rotate"]),"text-padding":new Da(ce.layout_symbol["text-padding"]),"text-keep-upright":new Da(ce.layout_symbol["text-keep-upright"]),"text-transform":new eo(ce.layout_symbol["text-transform"]),"text-offset":new eo(ce.layout_symbol["text-offset"]),"text-allow-overlap":new Da(ce.layout_symbol["text-allow-overlap"]),"text-overlap":new Da(ce.layout_symbol["text-overlap"]),"text-ignore-placement":new Da(ce.layout_symbol["text-ignore-placement"]),"text-optional":new Da(ce.layout_symbol["text-optional"])})}};class Xx{constructor(S){if(S.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=S.property.overrides?S.property.overrides.runtimeType:Lt,this.defaultValue=S}evaluate(S){if(S.formattedSection){let D=this.defaultValue.property.overrides;if(D&&D.hasOverride(S.formattedSection))return D.getOverride(S.formattedSection)}return S.feature&&S.featureState?this.defaultValue.evaluate(S.feature,S.featureState):this.defaultValue.property.specification.default}eachChild(S){this.defaultValue.isConstant()||S(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}mi("FormatSectionOverride",Xx,{omit:["defaultValue"]});class uy extends B{constructor(S){super(S,Dw)}recalculate(S,D){if(super.recalculate(S,D),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let j=this.layout.get("text-writing-mode");if(j){let te=[];for(let ue of j)te.indexOf(ue)<0&&te.push(ue);this.layout._values["text-writing-mode"]=te}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(S,D,j,te){let ue=this.layout.get(S).evaluate(D,{},j,te),ve=this._unevaluatedLayout._values[S];return ve.isDataDriven()||Lc(ve.value)||!ue?ue:function(De,Ze){return Ze.replace(/{([^{}]+)}/g,(at,Tt)=>De&&Tt in De?String(De[Tt]):"")}(D.properties,ue)}createBucket(S){return new E1(S)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let S of Dw.paint.overridableProperties){if(!uy.hasPaintOverride(this.layout,S))continue;let D=this.paint.get(S),j=new Xx(D),te=new Pu(j,D.property.specification),ue=null;ue=D.value.kind==="constant"||D.value.kind==="source"?new Xc("source",te):new ic("composite",te,D.value.zoomStops),this.paint._values[S]=new Du(D.property,ue,D.parameters)}}_handleOverridablePaintPropertyUpdate(S,D,j){return!(!this.layout||D.isDataDriven()||j.isDataDriven())&&uy.hasPaintOverride(this.layout,S)}static hasPaintOverride(S,D){let j=S.get("text-field"),te=Dw.paint.properties[D],ue=!1,ve=De=>{for(let Ze of De)if(te.overrides&&te.overrides.hasOverride(Ze))return void(ue=!0)};if(j.value.kind==="constant"&&j.value.value instanceof Zr)ve(j.value.value.sections);else if(j.value.kind==="source"){let De=at=>{ue||(at instanceof jn&&Ki(at.value)===Br?ve(at.value.sections):at instanceof Ql?ve(at.sections):at.eachChild(De))},Ze=j.value;Ze._styleExpression&&De(Ze._styleExpression.expression)}return ue}}let _C;var Yx={get paint(){return _C=_C||new le({"background-color":new Da(ce.paint_background["background-color"]),"background-pattern":new yc(ce.paint_background["background-pattern"]),"background-opacity":new Da(ce.paint_background["background-opacity"])})}};class G9 extends B{constructor(S){super(S,Yx)}}let sS;var xC={get paint(){return sS=sS||new le({"raster-opacity":new Da(ce.paint_raster["raster-opacity"]),"raster-hue-rotate":new Da(ce.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Da(ce.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Da(ce.paint_raster["raster-brightness-max"]),"raster-saturation":new Da(ce.paint_raster["raster-saturation"]),"raster-contrast":new Da(ce.paint_raster["raster-contrast"]),"raster-resampling":new Da(ce.paint_raster["raster-resampling"]),"raster-fade-duration":new Da(ce.paint_raster["raster-fade-duration"])})}};class Kx extends B{constructor(S){super(S,xC)}}class lS extends B{constructor(S){super(S,{}),this.onAdd=D=>{this.implementation.onAdd&&this.implementation.onAdd(D,D.painter.context.gl)},this.onRemove=D=>{this.implementation.onRemove&&this.implementation.onRemove(D,D.painter.context.gl)},this.implementation=S}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class uS{constructor(S){this._methodToThrottle=S,this._triggered=!1,typeof MessageChannel!="undefined"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let cS=63710088e-1;class dg{constructor(S,D){if(isNaN(S)||isNaN(D))throw new Error(`Invalid LngLat object: (${S}, ${D})`);if(this.lng=+S,this.lat=+D,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new dg(A(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(S){let D=Math.PI/180,j=this.lat*D,te=S.lat*D,ue=Math.sin(j)*Math.sin(te)+Math.cos(j)*Math.cos(te)*Math.cos((S.lng-this.lng)*D);return cS*Math.acos(Math.min(ue,1))}static convert(S){if(S instanceof dg)return S;if(Array.isArray(S)&&(S.length===2||S.length===3))return new dg(Number(S[0]),Number(S[1]));if(!Array.isArray(S)&&typeof S=="object"&&S!==null)return new dg(Number("lng"in S?S.lng:S.lon),Number(S.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let k1=2*Math.PI*cS;function bC(R){return k1*Math.cos(R*Math.PI/180)}function zw(R){return(180+R)/360}function wC(R){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R*Math.PI/360)))/360}function Fw(R,S){return R/bC(S)}function Jx(R){return 360/Math.PI*Math.atan(Math.exp((180-360*R)*Math.PI/180))-90}class $x{constructor(S,D,j=0){this.x=+S,this.y=+D,this.z=+j}static fromLngLat(S,D=0){let j=dg.convert(S);return new $x(zw(j.lng),wC(j.lat),Fw(D,j.lat))}toLngLat(){return new dg(360*this.x-180,Jx(this.y))}toAltitude(){return this.z*bC(Jx(this.y))}meterInMercatorCoordinateUnits(){return 1/k1*(S=Jx(this.y),1/Math.cos(S*Math.PI/180));var S}}function gp(R,S,D){var j=2*Math.PI*6378137/256/Math.pow(2,D);return[R*j-2*Math.PI*6378137/2,S*j-2*Math.PI*6378137/2]}class fS{constructor(S,D,j){if(!function(te,ue,ve){return!(te<0||te>25||ve<0||ve>=Math.pow(2,te)||ue<0||ue>=Math.pow(2,te))}(S,D,j))throw new Error(`x=${D}, y=${j}, z=${S} outside of bounds. 0<=x<${Math.pow(2,S)}, 0<=y<${Math.pow(2,S)} 0<=z<=25 `);this.z=S,this.x=D,this.y=j,this.key=Qx(0,S,S,D,j)}equals(S){return this.z===S.z&&this.x===S.x&&this.y===S.y}url(S,D,j){let te=(ve=this.y,De=this.z,Ze=gp(256*(ue=this.x),256*(ve=Math.pow(2,De)-ve-1),De),at=gp(256*(ue+1),256*(ve+1),De),Ze[0]+","+Ze[1]+","+at[0]+","+at[1]);var ue,ve,De,Ze,at;let Tt=function(Ft,Qt,sr){let Tr,Pr="";for(let $r=Ft;$r>0;$r--)Tr=1<<$r-1,Pr+=(Qt&Tr?1:0)+(sr&Tr?2:0);return Pr}(this.z,this.x,this.y);return S[(this.x+this.y)%S.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(j==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,D>1?"@2x":"").replace(/{quadkey}/g,Tt).replace(/{bbox-epsg-3857}/g,te)}isChildOf(S){let D=this.z-S.z;return D>0&&S.x===this.x>>D&&S.y===this.y>>D}getTilePoint(S){let D=Math.pow(2,this.z);return new u((S.x*D-this.x)*za,(S.y*D-this.y)*za)}toString(){return`${this.z}/${this.x}/${this.y}`}}class TC{constructor(S,D){this.wrap=S,this.canonical=D,this.key=Qx(S,D.z,D.z,D.x,D.y)}}class Jv{constructor(S,D,j,te,ue){if(S= z; overscaledZ = ${S}; z = ${j}`);this.overscaledZ=S,this.wrap=D,this.canonical=new fS(j,+te,+ue),this.key=Qx(D,S,j,te,ue)}clone(){return new Jv(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(S){return this.overscaledZ===S.overscaledZ&&this.wrap===S.wrap&&this.canonical.equals(S.canonical)}scaledTo(S){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let D=this.canonical.z-S;return S>this.canonical.z?new Jv(S,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jv(S,this.wrap,S,this.canonical.x>>D,this.canonical.y>>D)}calculateScaledKey(S,D){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let j=this.canonical.z-S;return S>this.canonical.z?Qx(this.wrap*+D,S,this.canonical.z,this.canonical.x,this.canonical.y):Qx(this.wrap*+D,S,S,this.canonical.x>>j,this.canonical.y>>j)}isChildOf(S){if(S.wrap!==this.wrap)return!1;let D=this.canonical.z-S.canonical.z;return S.overscaledZ===0||S.overscaledZ>D&&S.canonical.y===this.canonical.y>>D}children(S){if(this.overscaledZ>=S)return[new Jv(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let D=this.canonical.z+1,j=2*this.canonical.x,te=2*this.canonical.y;return[new Jv(D,this.wrap,D,j,te),new Jv(D,this.wrap,D,j+1,te),new Jv(D,this.wrap,D,j,te+1),new Jv(D,this.wrap,D,j+1,te+1)]}isLessThan(S){return this.wrapS.wrap)&&(this.overscaledZS.overscaledZ)&&(this.canonical.xS.canonical.x)&&this.canonical.ythis.max&&(this.max=Ft),Ft=this.dim+1||D<-1||D>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(D+1)*this.stride+(S+1)}unpack(S,D,j){return S*this.redFactor+D*this.greenFactor+j*this.blueFactor-this.baseShift}getPixels(){return new Jn({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(S,D,j){if(this.dim!==S.dim)throw new Error("dem dimension mismatch");let te=D*this.dim,ue=D*this.dim+this.dim,ve=j*this.dim,De=j*this.dim+this.dim;switch(D){case-1:te=ue-1;break;case 1:ue=te+1}switch(j){case-1:ve=De-1;break;case 1:De=ve+1}let Ze=-D*this.dim,at=-j*this.dim;for(let Tt=ve;Tt=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${S} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[S]}}class hS{constructor(S,D,j,te,ue){this.type="Feature",this._vectorTileFeature=S,S._z=D,S._x=j,S._y=te,this.properties=S.properties,this.id=ue}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(S){this._geometry=S}toJSON(){let S={geometry:this.geometry};for(let D in this)D!=="_geometry"&&D!=="_vectorTileFeature"&&(S[D]=this[D]);return S}}class cy{constructor(S,D){this.tileID=S,this.x=S.canonical.x,this.y=S.canonical.y,this.z=S.canonical.z,this.grid=new qi(za,16,0),this.grid3D=new qi(za,16,0),this.featureIndexArray=new As,this.promoteId=D}insert(S,D,j,te,ue,ve){let De=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(j,te,ue);let Ze=ve?this.grid3D:this.grid;for(let at=0;at=0&&Ft[3]>=0&&Ze.insert(De,Ft[0],Ft[1],Ft[2],Ft[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ei.VectorTile(new eS(this.rawTileData)).layers,this.sourceLayerCoder=new SC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(S,D,j,te){this.loadVTLayers();let ue=S.params||{},ve=za/S.tileSize/S.scale,De=Pc(ue.filter),Ze=S.queryGeometry,at=S.queryPadding*ve,Tt=EC(Ze),Ft=this.grid.query(Tt.minX-at,Tt.minY-at,Tt.maxX+at,Tt.maxY+at),Qt=EC(S.cameraQueryGeometry),sr=this.grid3D.query(Qt.minX-at,Qt.minY-at,Qt.maxX+at,Qt.maxY+at,($r,ni,Di,pi)=>function(ki,Zi,ta,Va,Io){for(let Hn of ki)if(Zi<=Hn.x&&ta<=Hn.y&&Va>=Hn.x&&Io>=Hn.y)return!0;let La=[new u(Zi,ta),new u(Zi,Io),new u(Va,Io),new u(Va,ta)];if(ki.length>2){for(let Hn of La)if(On(ki,Hn))return!0}for(let Hn=0;Hn(pi||(pi=js(ki)),Zi.queryIntersectsFeature(Ze,ki,ta,pi,this.z,S.transform,ve,S.pixelPosMatrix)))}return Tr}loadMatchingFeature(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=this.bucketLayerIDs[D];if(ve&&!function($r,ni){for(let Di=0;Di<$r.length;Di++)if(ni.indexOf($r[Di])>=0)return!0;return!1}(ve,Qt))return;let sr=this.sourceLayerCoder.decode(j),Tr=this.vtLayers[sr].feature(te);if(ue.needGeometry){let $r=xl(Tr,!0);if(!ue.filter(new Ko(this.tileID.overscaledZ),$r,this.tileID.canonical))return}else if(!ue.filter(new Ko(this.tileID.overscaledZ),Tr))return;let Pr=this.getId(Tr,sr);for(let $r=0;$r{let De=S instanceof Dc?S.get(ve):null;return De&&De.evaluate?De.evaluate(D,j,te):De})}function EC(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return{minX:S,minY:D,maxX:j,maxY:te}}function j9(R,S){return S-R}function kC(R,S,D,j,te){let ue=[];for(let ve=0;ve=j&&Ft.x>=j||(Tt.x>=j?Tt=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round():Ft.x>=j&&(Ft=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round()),Tt.y>=te&&Ft.y>=te||(Tt.y>=te?Tt=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round():Ft.y>=te&&(Ft=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round()),Ze&&Tt.equals(Ze[Ze.length-1])||(Ze=[Tt],ue.push(Ze)),Ze.push(Ft)))))}}return ue}mi("FeatureIndex",cy,{omit:["rawTileData","sourceLayerCoder"]});class vg extends u{constructor(S,D,j,te){super(S,D),this.angle=j,te!==void 0&&(this.segment=te)}clone(){return new vg(this.x,this.y,this.angle,this.segment)}}function dS(R,S,D,j,te){if(S.segment===void 0||D===0)return!0;let ue=S,ve=S.segment+1,De=0;for(;De>-D/2;){if(ve--,ve<0)return!1;De-=R[ve].dist(ue),ue=R[ve]}De+=R[ve].dist(R[ve+1]),ve++;let Ze=[],at=0;for(;Dej;)at-=Ze.shift().angleDelta;if(at>te)return!1;ve++,De+=Tt.dist(Ft)}return!0}function CC(R){let S=0;for(let D=0;Dat){let Tr=(at-Ze)/sr,Pr=Mo.number(Ft.x,Qt.x,Tr),$r=Mo.number(Ft.y,Qt.y,Tr),ni=new vg(Pr,$r,Qt.angleTo(Ft),Tt);return ni._round(),!ve||dS(R,ni,De,ve,S)?ni:void 0}Ze+=sr}}function Z9(R,S,D,j,te,ue,ve,De,Ze){let at=LC(j,ue,ve),Tt=PC(j,te),Ft=Tt*ve,Qt=R[0].x===0||R[0].x===Ze||R[0].y===0||R[0].y===Ze;return S-Ft=0&&ki=0&&Zi=0&&Qt+at<=Tt){let ta=new vg(ki,Zi,Di,Tr);ta._round(),j&&!dS(R,ta,ue,j,te)||sr.push(ta)}}Ft+=ni}return De||sr.length||ve||(sr=IC(R,Ft/2,D,j,te,ue,ve,!0,Ze)),sr}mi("Anchor",vg);let C1=wd;function RC(R,S,D,j){let te=[],ue=R.image,ve=ue.pixelRatio,De=ue.paddedRect.w-2*C1,Ze=ue.paddedRect.h-2*C1,at={x1:R.left,y1:R.top,x2:R.right,y2:R.bottom},Tt=ue.stretchX||[[0,De]],Ft=ue.stretchY||[[0,Ze]],Qt=(Tn,bo)=>Tn+bo[1]-bo[0],sr=Tt.reduce(Qt,0),Tr=Ft.reduce(Qt,0),Pr=De-sr,$r=Ze-Tr,ni=0,Di=sr,pi=0,ki=Tr,Zi=0,ta=Pr,Va=0,Io=$r;if(ue.content&&j){let Tn=ue.content,bo=Tn[2]-Tn[0],Ya=Tn[3]-Tn[1];(ue.textFitWidth||ue.textFitHeight)&&(at=gC(R)),ni=pg(Tt,0,Tn[0]),pi=pg(Ft,0,Tn[1]),Di=pg(Tt,Tn[0],Tn[2]),ki=pg(Ft,Tn[1],Tn[3]),Zi=Tn[0]-ni,Va=Tn[1]-pi,ta=bo-Di,Io=Ya-ki}let La=at.x1,Hn=at.y1,lo=at.x2-La,$a=at.y2-Hn,Xa=(Tn,bo,Ya,Uo)=>{let wu=qw(Tn.stretch-ni,Di,lo,La),hu=L1(Tn.fixed-Zi,ta,Tn.stretch,sr),uh=qw(bo.stretch-pi,ki,$a,Hn),$v=L1(bo.fixed-Va,Io,bo.stretch,Tr),td=qw(Ya.stretch-ni,Di,lo,La),ch=L1(Ya.fixed-Zi,ta,Ya.stretch,sr),Ud=qw(Uo.stretch-pi,ki,$a,Hn),Vd=L1(Uo.fixed-Va,Io,Uo.stretch,Tr),Hd=new u(wu,uh),rf=new u(td,uh),fh=new u(td,Ud),Td=new u(wu,Ud),rd=new u(hu/ve,$v/ve),Dh=new u(ch/ve,Vd/ve),xf=S*Math.PI/180;if(xf){let Cl=Math.sin(xf),qu=Math.cos(xf),Tu=[qu,-Cl,Cl,qu];Hd._matMult(Tu),rf._matMult(Tu),Td._matMult(Tu),fh._matMult(Tu)}let Iv=Tn.stretch+Tn.fixed,lv=bo.stretch+bo.fixed;return{tl:Hd,tr:rf,bl:Td,br:fh,tex:{x:ue.paddedRect.x+C1+Iv,y:ue.paddedRect.y+C1+lv,w:Ya.stretch+Ya.fixed-Iv,h:Uo.stretch+Uo.fixed-lv},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:rd,pixelOffsetBR:Dh,minFontScaleX:ta/ve/lo,minFontScaleY:Io/ve/$a,isSDF:D}};if(j&&(ue.stretchX||ue.stretchY)){let Tn=DC(Tt,Pr,sr),bo=DC(Ft,$r,Tr);for(let Ya=0;Ya0&&(Pr=Math.max(10,Pr),this.circleDiameter=Pr)}else{let Qt=!((Ft=ve.image)===null||Ft===void 0)&&Ft.content&&(ve.image.textFitWidth||ve.image.textFitHeight)?gC(ve):{x1:ve.left,y1:ve.top,x2:ve.right,y2:ve.bottom};Qt.y1=Qt.y1*De-Ze[0],Qt.y2=Qt.y2*De+Ze[2],Qt.x1=Qt.x1*De-Ze[3],Qt.x2=Qt.x2*De+Ze[1];let sr=ve.collisionPadding;if(sr&&(Qt.x1-=sr[0]*De,Qt.y1-=sr[1]*De,Qt.x2+=sr[2]*De,Qt.y2+=sr[3]*De),Tt){let Tr=new u(Qt.x1,Qt.y1),Pr=new u(Qt.x2,Qt.y1),$r=new u(Qt.x1,Qt.y2),ni=new u(Qt.x2,Qt.y2),Di=Tt*Math.PI/180;Tr._rotate(Di),Pr._rotate(Di),$r._rotate(Di),ni._rotate(Di),Qt.x1=Math.min(Tr.x,Pr.x,$r.x,ni.x),Qt.x2=Math.max(Tr.x,Pr.x,$r.x,ni.x),Qt.y1=Math.min(Tr.y,Pr.y,$r.y,ni.y),Qt.y2=Math.max(Tr.y,Pr.y,$r.y,ni.y)}S.emplaceBack(D.x,D.y,Qt.x1,Qt.y1,Qt.x2,Qt.y2,j,te,ue)}this.boxEndIndex=S.length}}class Hp{constructor(S=[],D=(j,te)=>jte?1:0){if(this.data=S,this.length=this.data.length,this.compare=D,this.length>0)for(let j=(this.length>>1)-1;j>=0;j--)this._down(j)}push(S){this.data.push(S),this._up(this.length++)}pop(){if(this.length===0)return;let S=this.data[0],D=this.data.pop();return--this.length>0&&(this.data[0]=D,this._down(0)),S}peek(){return this.data[0]}_up(S){let{data:D,compare:j}=this,te=D[S];for(;S>0;){let ue=S-1>>1,ve=D[ue];if(j(te,ve)>=0)break;D[S]=ve,S=ue}D[S]=te}_down(S){let{data:D,compare:j}=this,te=this.length>>1,ue=D[S];for(;S=0)break;D[S]=D[ve],S=ve}D[S]=ue}}function X9(R,S=1,D=!1){let j=1/0,te=1/0,ue=-1/0,ve=-1/0,De=R[0];for(let sr=0;srue)&&(ue=Tr.x),(!sr||Tr.y>ve)&&(ve=Tr.y)}let Ze=Math.min(ue-j,ve-te),at=Ze/2,Tt=new Hp([],Y9);if(Ze===0)return new u(j,te);for(let sr=j;srFt.d||!Ft.d)&&(Ft=sr,D&&console.log("found best %d after %d probes",Math.round(1e4*sr.d)/1e4,Qt)),sr.max-Ft.d<=S||(at=sr.h/2,Tt.push(new P1(sr.p.x-at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x-at,sr.p.y+at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y+at,at,R)),Qt+=4)}return D&&(console.log(`num probes: ${Qt}`),console.log(`best distance: ${Ft.d}`)),Ft.p}function Y9(R,S){return S.max-R.max}function P1(R,S,D,j){this.p=new u(R,S),this.h=D,this.d=function(te,ue){let ve=!1,De=1/0;for(let Ze=0;Zete.y!=Tr.y>te.y&&te.x<(Tr.x-sr.x)*(te.y-sr.y)/(Tr.y-sr.y)+sr.x&&(ve=!ve),De=Math.min(De,Bi(te,sr,Tr))}}return(ve?1:-1)*Math.sqrt(De)}(this.p,j),this.max=this.d+this.h*Math.SQRT2}var ed;i.aq=void 0,(ed=i.aq||(i.aq={}))[ed.center=1]="center",ed[ed.left=2]="left",ed[ed.right=3]="right",ed[ed.top=4]="top",ed[ed.bottom=5]="bottom",ed[ed["top-left"]=6]="top-left",ed[ed["top-right"]=7]="top-right",ed[ed["bottom-left"]=8]="bottom-left",ed[ed["bottom-right"]=9]="bottom-right";let fm=7,fy=Number.POSITIVE_INFINITY;function vS(R,S){return S[1]!==fy?function(D,j,te){let ue=0,ve=0;switch(j=Math.abs(j),te=Math.abs(te),D){case"top-right":case"top-left":case"top":ve=te-fm;break;case"bottom-right":case"bottom-left":case"bottom":ve=-te+fm}switch(D){case"top-right":case"bottom-right":case"right":ue=-j;break;case"top-left":case"bottom-left":case"left":ue=j}return[ue,ve]}(R,S[0],S[1]):function(D,j){let te=0,ue=0;j<0&&(j=0);let ve=j/Math.SQRT2;switch(D){case"top-right":case"top-left":ue=ve-fm;break;case"bottom-right":case"bottom-left":ue=-ve+fm;break;case"bottom":ue=-j+fm;break;case"top":ue=j-fm}switch(D){case"top-right":case"bottom-right":te=-ve;break;case"top-left":case"bottom-left":te=ve;break;case"left":te=j;break;case"right":te=-j}return[te,ue]}(R,S[0])}function zC(R,S,D){var j;let te=R.layout,ue=(j=te.get("text-variable-anchor-offset"))===null||j===void 0?void 0:j.evaluate(S,{},D);if(ue){let De=ue.values,Ze=[];for(let at=0;atQt*kl);Tt.startsWith("top")?Ft[1]-=fm:Tt.startsWith("bottom")&&(Ft[1]+=fm),Ze[at+1]=Ft}return new Si(Ze)}let ve=te.get("text-variable-anchor");if(ve){let De;De=R._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[te.get("text-radial-offset").evaluate(S,{},D)*kl,fy]:te.get("text-offset").evaluate(S,{},D).map(at=>at*kl);let Ze=[];for(let at of ve)Ze.push(at,vS(at,De));return new Si(Ze)}return null}function pS(R){switch(R){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function K9(R,S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=ue.textMaxSize.evaluate(S,{});Ft===void 0&&(Ft=ve);let Qt=R.layers[0].layout,sr=Qt.get("icon-offset").evaluate(S,{},Tt),Tr=qC(D.horizontal),Pr=ve/24,$r=R.tilePixelRatio*Pr,ni=R.tilePixelRatio*Ft/24,Di=R.tilePixelRatio*De,pi=R.tilePixelRatio*Qt.get("symbol-spacing"),ki=Qt.get("text-padding")*R.tilePixelRatio,Zi=function(Tn,bo,Ya,Uo=1){let wu=Tn.get("icon-padding").evaluate(bo,{},Ya),hu=wu&&wu.values;return[hu[0]*Uo,hu[1]*Uo,hu[2]*Uo,hu[3]*Uo]}(Qt,S,Tt,R.tilePixelRatio),ta=Qt.get("text-max-angle")/180*Math.PI,Va=Qt.get("text-rotation-alignment")!=="viewport"&&Qt.get("symbol-placement")!=="point",Io=Qt.get("icon-rotation-alignment")==="map"&&Qt.get("symbol-placement")!=="point",La=Qt.get("symbol-placement"),Hn=pi/2,lo=Qt.get("icon-text-fit"),$a;j&&lo!=="none"&&(R.allowVerticalPlacement&&D.vertical&&($a=mC(j,D.vertical,lo,Qt.get("icon-text-fit-padding"),sr,Pr)),Tr&&(j=mC(j,Tr,lo,Qt.get("icon-text-fit-padding"),sr,Pr)));let Xa=(Tn,bo)=>{bo.x<0||bo.x>=za||bo.y<0||bo.y>=za||function(Ya,Uo,wu,hu,uh,$v,td,ch,Ud,Vd,Hd,rf,fh,Td,rd,Dh,xf,Iv,lv,Cl,qu,Tu,Rv,qc,I1){let p0=Ya.addToLineVertexArray(Uo,wu),Gp,Qv,oc,If,ep=0,gg=0,uv=0,R1=0,xS=-1,Uw=-1,g0={},hy=ui("");if(Ya.allowVerticalPlacement&&hu.vertical){let Ad=ch.layout.get("text-rotate").evaluate(qu,{},qc)+90;oc=new cm(Ud,Uo,Vd,Hd,rf,hu.vertical,fh,Td,rd,Ad),td&&(If=new cm(Ud,Uo,Vd,Hd,rf,td,xf,Iv,rd,Ad))}if(uh){let Ad=ch.layout.get("icon-rotate").evaluate(qu,{}),tp=ch.layout.get("icon-text-fit")!=="none",hm=RC(uh,Ad,Rv,tp),Gd=td?RC(td,Ad,Rv,tp):void 0;Qv=new cm(Ud,Uo,Vd,Hd,rf,uh,xf,Iv,!1,Ad),ep=4*hm.length;let Sd=Ya.iconSizeData,yp=null;Sd.kind==="source"?(yp=[v0*ch.layout.get("icon-size").evaluate(qu,{})],yp[0]>lm&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)):Sd.kind==="composite"&&(yp=[v0*Tu.compositeIconSizes[0].evaluate(qu,{},qc),v0*Tu.compositeIconSizes[1].evaluate(qu,{},qc)],(yp[0]>lm||yp[1]>lm)&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)),Ya.addSymbols(Ya.icon,hm,yp,Cl,lv,qu,i.ah.none,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),xS=Ya.icon.placedSymbolArray.length-1,Gd&&(gg=4*Gd.length,Ya.addSymbols(Ya.icon,Gd,yp,Cl,lv,qu,i.ah.vertical,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),Uw=Ya.icon.placedSymbolArray.length-1)}let zh=Object.keys(hu.horizontal);for(let Ad of zh){let tp=hu.horizontal[Ad];if(!Gp){hy=ui(tp.text);let Gd=ch.layout.get("text-rotate").evaluate(qu,{},qc);Gp=new cm(Ud,Uo,Vd,Hd,rf,tp,fh,Td,rd,Gd)}let hm=tp.positionedLines.length===1;if(uv+=FC(Ya,Uo,tp,$v,ch,rd,qu,Dh,p0,hu.vertical?i.ah.horizontal:i.ah.horizontalOnly,hm?zh:[Ad],g0,xS,Tu,qc),hm)break}hu.vertical&&(R1+=FC(Ya,Uo,hu.vertical,$v,ch,rd,qu,Dh,p0,i.ah.vertical,["vertical"],g0,Uw,Tu,qc));let Q9=Gp?Gp.boxStartIndex:Ya.collisionBoxArray.length,Vw=Gp?Gp.boxEndIndex:Ya.collisionBoxArray.length,m0=oc?oc.boxStartIndex:Ya.collisionBoxArray.length,cv=oc?oc.boxEndIndex:Ya.collisionBoxArray.length,UC=Qv?Qv.boxStartIndex:Ya.collisionBoxArray.length,eq=Qv?Qv.boxEndIndex:Ya.collisionBoxArray.length,VC=If?If.boxStartIndex:Ya.collisionBoxArray.length,tq=If?If.boxEndIndex:Ya.collisionBoxArray.length,mp=-1,rb=(Ad,tp)=>Ad&&Ad.circleDiameter?Math.max(Ad.circleDiameter,tp):tp;mp=rb(Gp,mp),mp=rb(oc,mp),mp=rb(Qv,mp),mp=rb(If,mp);let Hw=mp>-1?1:0;Hw&&(mp*=I1/kl),Ya.glyphOffsetArray.length>=E1.MAX_GLYPHS&&T("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),qu.sortKey!==void 0&&Ya.addToSortKeyRanges(Ya.symbolInstances.length,qu.sortKey);let bS=zC(ch,qu,qc),[rq,iq]=function(Ad,tp){let hm=Ad.length,Gd=tp==null?void 0:tp.values;if((Gd==null?void 0:Gd.length)>0)for(let Sd=0;Sd=0?g0.right:-1,g0.center>=0?g0.center:-1,g0.left>=0?g0.left:-1,g0.vertical||-1,xS,Uw,hy,Q9,Vw,m0,cv,UC,eq,VC,tq,Vd,uv,R1,ep,gg,Hw,0,fh,mp,rq,iq)}(R,bo,Tn,D,j,te,$a,R.layers[0],R.collisionBoxArray,S.index,S.sourceLayerIndex,R.index,$r,[ki,ki,ki,ki],Va,Ze,Di,Zi,Io,sr,S,ue,at,Tt,ve)};if(La==="line")for(let Tn of kC(S.geometry,0,0,za,za)){let bo=Z9(Tn,pi,ta,D.vertical||Tr,j,24,ni,R.overscaling,za);for(let Ya of bo)Tr&&J9(R,Tr.text,Hn,Ya)||Xa(Tn,Ya)}else if(La==="line-center"){for(let Tn of S.geometry)if(Tn.length>1){let bo=W9(Tn,ta,D.vertical||Tr,j,24,ni);bo&&Xa(Tn,bo)}}else if(S.type==="Polygon")for(let Tn of Of(S.geometry,0)){let bo=X9(Tn,16);Xa(Tn[0],new vg(bo.x,bo.y,0))}else if(S.type==="LineString")for(let Tn of S.geometry)Xa(Tn,new vg(Tn[0].x,Tn[0].y,0));else if(S.type==="Point")for(let Tn of S.geometry)for(let bo of Tn)Xa([bo],new vg(bo.x,bo.y,0))}function FC(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=function(Di,pi,ki,Zi,ta,Va,Io,La){let Hn=Zi.layout.get("text-rotate").evaluate(Va,{})*Math.PI/180,lo=[];for(let $a of pi.positionedLines)for(let Xa of $a.positionedGlyphs){if(!Xa.rect)continue;let Tn=Xa.rect||{},bo=hC+1,Ya=!0,Uo=1,wu=0,hu=(ta||La)&&Xa.vertical,uh=Xa.metrics.advance*Xa.scale/2;if(La&&pi.verticalizable&&(wu=$a.lineOffset/2-(Xa.imageName?-(kl-Xa.metrics.width*Xa.scale)/2:(Xa.scale-1)*kl)),Xa.imageName){let Cl=Io[Xa.imageName];Ya=Cl.sdf,Uo=Cl.pixelRatio,bo=wd/Uo}let $v=ta?[Xa.x+uh,Xa.y]:[0,0],td=ta?[0,0]:[Xa.x+uh+ki[0],Xa.y+ki[1]-wu],ch=[0,0];hu&&(ch=td,td=[0,0]);let Ud=Xa.metrics.isDoubleResolution?2:1,Vd=(Xa.metrics.left-bo)*Xa.scale-uh+td[0],Hd=(-Xa.metrics.top-bo)*Xa.scale+td[1],rf=Vd+Tn.w/Ud*Xa.scale/Uo,fh=Hd+Tn.h/Ud*Xa.scale/Uo,Td=new u(Vd,Hd),rd=new u(rf,Hd),Dh=new u(Vd,fh),xf=new u(rf,fh);if(hu){let Cl=new u(-uh,uh-lh),qu=-Math.PI/2,Tu=kl/2-uh,Rv=new u(5-lh-Tu,-(Xa.imageName?Tu:0)),qc=new u(...ch);Td._rotateAround(qu,Cl)._add(Rv)._add(qc),rd._rotateAround(qu,Cl)._add(Rv)._add(qc),Dh._rotateAround(qu,Cl)._add(Rv)._add(qc),xf._rotateAround(qu,Cl)._add(Rv)._add(qc)}if(Hn){let Cl=Math.sin(Hn),qu=Math.cos(Hn),Tu=[qu,-Cl,Cl,qu];Td._matMult(Tu),rd._matMult(Tu),Dh._matMult(Tu),xf._matMult(Tu)}let Iv=new u(0,0),lv=new u(0,0);lo.push({tl:Td,tr:rd,bl:Dh,br:xf,tex:Tn,writingMode:pi.writingMode,glyphOffset:$v,sectionIndex:Xa.sectionIndex,isSDF:Ya,pixelOffsetTL:Iv,pixelOffsetBR:lv,minFontScaleX:0,minFontScaleY:0})}return lo}(0,D,De,te,ue,ve,j,R.allowVerticalPlacement),$r=R.textSizeData,ni=null;$r.kind==="source"?(ni=[v0*te.layout.get("text-size").evaluate(ve,{})],ni[0]>lm&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)):$r.kind==="composite"&&(ni=[v0*sr.compositeTextSizes[0].evaluate(ve,{},Tr),v0*sr.compositeTextSizes[1].evaluate(ve,{},Tr)],(ni[0]>lm||ni[1]>lm)&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)),R.addSymbols(R.text,Pr,ni,De,ue,ve,at,S,Ze.lineStartIndex,Ze.lineLength,Qt,Tr);for(let Di of Tt)Ft[Di]=R.text.placedSymbolArray.length-1;return 4*Pr.length}function qC(R){for(let S in R)return R[S];return null}function J9(R,S,D,j){let te=R.compareText;if(S in te){let ue=te[S];for(let ve=ue.length-1;ve>=0;ve--)if(j.dist(ue[ve])>4;if(te!==1)throw new Error(`Got v${te} data when expected v1.`);let ue=OC[15&j];if(!ue)throw new Error("Unrecognized array type.");let[ve]=new Uint16Array(S,2,1),[De]=new Uint32Array(S,4,1);return new gS(De,ve,ue,S)}constructor(S,D=64,j=Float64Array,te){if(isNaN(S)||S<0)throw new Error(`Unpexpected numItems value: ${S}.`);this.numItems=+S,this.nodeSize=Math.min(Math.max(+D,2),65535),this.ArrayType=j,this.IndexArrayType=S<65536?Uint16Array:Uint32Array;let ue=OC.indexOf(this.ArrayType),ve=2*S*this.ArrayType.BYTES_PER_ELEMENT,De=S*this.IndexArrayType.BYTES_PER_ELEMENT,Ze=(8-De%8)%8;if(ue<0)throw new Error(`Unexpected typed array class: ${j}.`);te&&te instanceof ArrayBuffer?(this.data=te,this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=2*S,this._finished=!0):(this.data=new ArrayBuffer(8+ve+De+Ze),this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+ue]),new Uint16Array(this.data,2,1)[0]=D,new Uint32Array(this.data,4,1)[0]=S)}add(S,D){let j=this._pos>>1;return this.ids[j]=j,this.coords[this._pos++]=S,this.coords[this._pos++]=D,j}finish(){let S=this._pos>>1;if(S!==this.numItems)throw new Error(`Added ${S} items when expected ${this.numItems}.`);return Ow(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(S,D,j,te){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:ue,coords:ve,nodeSize:De}=this,Ze=[0,ue.length-1,0],at=[];for(;Ze.length;){let Tt=Ze.pop()||0,Ft=Ze.pop()||0,Qt=Ze.pop()||0;if(Ft-Qt<=De){for(let $r=Qt;$r<=Ft;$r++){let ni=ve[2*$r],Di=ve[2*$r+1];ni>=S&&ni<=j&&Di>=D&&Di<=te&&at.push(ue[$r])}continue}let sr=Qt+Ft>>1,Tr=ve[2*sr],Pr=ve[2*sr+1];Tr>=S&&Tr<=j&&Pr>=D&&Pr<=te&&at.push(ue[sr]),(Tt===0?S<=Tr:D<=Pr)&&(Ze.push(Qt),Ze.push(sr-1),Ze.push(1-Tt)),(Tt===0?j>=Tr:te>=Pr)&&(Ze.push(sr+1),Ze.push(Ft),Ze.push(1-Tt))}return at}within(S,D,j){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:te,coords:ue,nodeSize:ve}=this,De=[0,te.length-1,0],Ze=[],at=j*j;for(;De.length;){let Tt=De.pop()||0,Ft=De.pop()||0,Qt=De.pop()||0;if(Ft-Qt<=ve){for(let $r=Qt;$r<=Ft;$r++)NC(ue[2*$r],ue[2*$r+1],S,D)<=at&&Ze.push(te[$r]);continue}let sr=Qt+Ft>>1,Tr=ue[2*sr],Pr=ue[2*sr+1];NC(Tr,Pr,S,D)<=at&&Ze.push(te[sr]),(Tt===0?S-j<=Tr:D-j<=Pr)&&(De.push(Qt),De.push(sr-1),De.push(1-Tt)),(Tt===0?S+j>=Tr:D+j>=Pr)&&(De.push(sr+1),De.push(Ft),De.push(1-Tt))}return Ze}}function Ow(R,S,D,j,te,ue){if(te-j<=D)return;let ve=j+te>>1;BC(R,S,ve,j,te,ue),Ow(R,S,D,j,ve-1,1-ue),Ow(R,S,D,ve+1,te,1-ue)}function BC(R,S,D,j,te,ue){for(;te>j;){if(te-j>600){let at=te-j+1,Tt=D-j+1,Ft=Math.log(at),Qt=.5*Math.exp(2*Ft/3),sr=.5*Math.sqrt(Ft*Qt*(at-Qt)/at)*(Tt-at/2<0?-1:1);BC(R,S,D,Math.max(j,Math.floor(D-Tt*Qt/at+sr)),Math.min(te,Math.floor(D+(at-Tt)*Qt/at+sr)),ue)}let ve=S[2*D+ue],De=j,Ze=te;for(eb(R,S,j,D),S[2*te+ue]>ve&&eb(R,S,j,te);Deve;)Ze--}S[2*j+ue]===ve?eb(R,S,j,Ze):(Ze++,eb(R,S,Ze,te)),Ze<=D&&(j=Ze+1),D<=Ze&&(te=Ze-1)}}function eb(R,S,D,j){mS(R,D,j),mS(S,2*D,2*j),mS(S,2*D+1,2*j+1)}function mS(R,S,D){let j=R[S];R[S]=R[D],R[D]=j}function NC(R,S,D,j){let te=R-D,ue=S-j;return te*te+ue*ue}var Bw;i.bg=void 0,(Bw=i.bg||(i.bg={})).create="create",Bw.load="load",Bw.fullLoad="fullLoad";let tb=null,Gf=[],yS=1e3/60,_S="loadTime",Nw="fullLoadTime",$9={mark(R){performance.mark(R)},frame(R){let S=R;tb!=null&&Gf.push(S-tb),tb=S},clearMetrics(){tb=null,Gf=[],performance.clearMeasures(_S),performance.clearMeasures(Nw);for(let R in i.bg)performance.clearMarks(i.bg[R])},getPerformanceMetrics(){performance.measure(_S,i.bg.create,i.bg.load),performance.measure(Nw,i.bg.create,i.bg.fullLoad);let R=performance.getEntriesByName(_S)[0].duration,S=performance.getEntriesByName(Nw)[0].duration,D=Gf.length,j=1/(Gf.reduce((ue,ve)=>ue+ve,0)/D/1e3),te=Gf.filter(ue=>ue>yS).reduce((ue,ve)=>ue+(ve-yS)/yS,0);return{loadTime:R,fullLoadTime:S,fps:j,percentDroppedFrames:te/(D+te)*100,totalFrames:D}}};i.$=class extends Ot{},i.A=Ln,i.B=Fi,i.C=function(R){if(V==null){let S=R.navigator?R.navigator.userAgent:null;V=!!R.safari||!(!S||!(/\b(iPad|iPhone|iPod)\b/.test(S)||S.match("Safari")&&!S.match("Chrome")))}return V},i.D=Da,i.E=Re,i.F=class{constructor(R,S){this.target=R,this.mapId=S,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new uS(()=>this.process()),this.subscription=function(D,j,te,ue){return D.addEventListener(j,te,!1),{unsubscribe:()=>{D.removeEventListener(j,te,!1)}}}(this.target,"message",D=>this.receive(D)),this.globalScope=q(self)?R:window}registerMessageHandler(R,S){this.messageHandlers[R]=S}sendAsync(R,S){return new Promise((D,j)=>{let te=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[te]={resolve:D,reject:j},S&&S.signal.addEventListener("abort",()=>{delete this.resolveRejects[te];let De={id:te,type:"",origin:location.origin,targetMapId:R.targetMapId,sourceMapId:this.mapId};this.target.postMessage(De)},{once:!0});let ue=[],ve=Object.assign(Object.assign({},R),{id:te,sourceMapId:this.mapId,origin:location.origin,data:Ea(R.data,ue)});this.target.postMessage(ve,{transfer:ue})})}receive(R){let S=R.data,D=S.id;if(!(S.origin!=="file://"&&location.origin!=="file://"&&S.origin!=="resource://android"&&location.origin!=="resource://android"&&S.origin!==location.origin||S.targetMapId&&this.mapId!==S.targetMapId)){if(S.type===""){delete this.tasks[D];let j=this.abortControllers[D];return delete this.abortControllers[D],void(j&&j.abort())}if(q(self)||S.mustQueue)return this.tasks[D]=S,this.taskQueue.push(D),void this.invoker.trigger();this.processTask(D,S)}}process(){if(this.taskQueue.length===0)return;let R=this.taskQueue.shift(),S=this.tasks[R];delete this.tasks[R],this.taskQueue.length>0&&this.invoker.trigger(),S&&this.processTask(R,S)}processTask(R,S){return a(this,void 0,void 0,function*(){if(S.type===""){let te=this.resolveRejects[R];return delete this.resolveRejects[R],te?void(S.error?te.reject(qa(S.error)):te.resolve(qa(S.data))):void 0}if(!this.messageHandlers[S.type])return void this.completeTask(R,new Error(`Could not find a registered handler for ${S.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let D=qa(S.data),j=new AbortController;this.abortControllers[R]=j;try{let te=yield this.messageHandlers[S.type](S.sourceMapId,D,j);this.completeTask(R,null,te)}catch(te){this.completeTask(R,te)}})}completeTask(R,S,D){let j=[];delete this.abortControllers[R];let te={id:R,type:"",sourceMapId:this.mapId,origin:location.origin,error:S?Ea(S):null,data:Ea(D,j)};this.target.postMessage(te,{transfer:j})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},i.G=ke,i.H=function(){var R=new Ln(16);return Ln!=Float32Array&&(R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[11]=0,R[12]=0,R[13]=0,R[14]=0),R[0]=1,R[5]=1,R[10]=1,R[15]=1,R},i.I=kw,i.J=function(R,S,D){var j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr=D[0],$r=D[1],ni=D[2];return S===R?(R[12]=S[0]*Pr+S[4]*$r+S[8]*ni+S[12],R[13]=S[1]*Pr+S[5]*$r+S[9]*ni+S[13],R[14]=S[2]*Pr+S[6]*$r+S[10]*ni+S[14],R[15]=S[3]*Pr+S[7]*$r+S[11]*ni+S[15]):(te=S[1],ue=S[2],ve=S[3],De=S[4],Ze=S[5],at=S[6],Tt=S[7],Ft=S[8],Qt=S[9],sr=S[10],Tr=S[11],R[0]=j=S[0],R[1]=te,R[2]=ue,R[3]=ve,R[4]=De,R[5]=Ze,R[6]=at,R[7]=Tt,R[8]=Ft,R[9]=Qt,R[10]=sr,R[11]=Tr,R[12]=j*Pr+De*$r+Ft*ni+S[12],R[13]=te*Pr+Ze*$r+Qt*ni+S[13],R[14]=ue*Pr+at*$r+sr*ni+S[14],R[15]=ve*Pr+Tt*$r+Tr*ni+S[15]),R},i.K=function(R,S,D){var j=D[0],te=D[1],ue=D[2];return R[0]=S[0]*j,R[1]=S[1]*j,R[2]=S[2]*j,R[3]=S[3]*j,R[4]=S[4]*te,R[5]=S[5]*te,R[6]=S[6]*te,R[7]=S[7]*te,R[8]=S[8]*ue,R[9]=S[9]*ue,R[10]=S[10]*ue,R[11]=S[11]*ue,R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15],R},i.L=gn,i.M=function(R,S){let D={};for(let j=0;j{let S=window.document.createElement("video");return S.muted=!0,new Promise(D=>{S.onloadstart=()=>{D(S)};for(let j of R){let te=window.document.createElement("source");Ee(j)||(S.crossOrigin="Anonymous"),te.src=j,S.appendChild(te)}})},i.a4=function(){return _++},i.a5=Qi,i.a6=E1,i.a7=Pc,i.a8=xl,i.a9=hS,i.aA=function(R){if(R.type==="custom")return new lS(R);switch(R.type){case"background":return new G9(R);case"circle":return new wn(R);case"fill":return new gr(R);case"fill-extrusion":return new Ev(R);case"heatmap":return new Po(R);case"hillshade":return new $c(R);case"line":return new ay(R);case"raster":return new Kx(R);case"symbol":return new uy(R)}},i.aB=g,i.aC=function(R,S){if(!R)return[{command:"setStyle",args:[S]}];let D=[];try{if(!ct(R.version,S.version))return[{command:"setStyle",args:[S]}];ct(R.center,S.center)||D.push({command:"setCenter",args:[S.center]}),ct(R.zoom,S.zoom)||D.push({command:"setZoom",args:[S.zoom]}),ct(R.bearing,S.bearing)||D.push({command:"setBearing",args:[S.bearing]}),ct(R.pitch,S.pitch)||D.push({command:"setPitch",args:[S.pitch]}),ct(R.sprite,S.sprite)||D.push({command:"setSprite",args:[S.sprite]}),ct(R.glyphs,S.glyphs)||D.push({command:"setGlyphs",args:[S.glyphs]}),ct(R.transition,S.transition)||D.push({command:"setTransition",args:[S.transition]}),ct(R.light,S.light)||D.push({command:"setLight",args:[S.light]}),ct(R.terrain,S.terrain)||D.push({command:"setTerrain",args:[S.terrain]}),ct(R.sky,S.sky)||D.push({command:"setSky",args:[S.sky]}),ct(R.projection,S.projection)||D.push({command:"setProjection",args:[S.projection]});let j={},te=[];(function(ve,De,Ze,at){let Tt;for(Tt in De=De||{},ve=ve||{})Object.prototype.hasOwnProperty.call(ve,Tt)&&(Object.prototype.hasOwnProperty.call(De,Tt)||ot(Tt,Ze,at));for(Tt in De)Object.prototype.hasOwnProperty.call(De,Tt)&&(Object.prototype.hasOwnProperty.call(ve,Tt)?ct(ve[Tt],De[Tt])||(ve[Tt].type==="geojson"&&De[Tt].type==="geojson"&&kt(ve,De,Tt)?qt(Ze,{command:"setGeoJSONSourceData",args:[Tt,De[Tt].data]}):Rt(Tt,De,Ze,at)):rt(Tt,De,Ze))})(R.sources,S.sources,te,j);let ue=[];R.layers&&R.layers.forEach(ve=>{"source"in ve&&j[ve.source]?D.push({command:"removeLayer",args:[ve.id]}):ue.push(ve)}),D=D.concat(te),function(ve,De,Ze){De=De||[];let at=(ve=ve||[]).map(Yt),Tt=De.map(Yt),Ft=ve.reduce(xr,{}),Qt=De.reduce(xr,{}),sr=at.slice(),Tr=Object.create(null),Pr,$r,ni,Di,pi;for(let ki=0,Zi=0;ki@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(D,j,te,ue)=>{let ve=te||ue;return S[j]=!ve||ve.toLowerCase(),""}),S["max-age"]){let D=parseInt(S["max-age"],10);isNaN(D)?delete S["max-age"]:S["max-age"]=D}return S},i.ab=function(R,S){let D=[];for(let j in R)j in S||D.push(j);return D},i.ac=k,i.ad=function(R,S,D){var j=Math.sin(D),te=Math.cos(D),ue=S[0],ve=S[1],De=S[2],Ze=S[3],at=S[4],Tt=S[5],Ft=S[6],Qt=S[7];return S!==R&&(R[8]=S[8],R[9]=S[9],R[10]=S[10],R[11]=S[11],R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15]),R[0]=ue*te+at*j,R[1]=ve*te+Tt*j,R[2]=De*te+Ft*j,R[3]=Ze*te+Qt*j,R[4]=at*te-ue*j,R[5]=Tt*te-ve*j,R[6]=Ft*te-De*j,R[7]=Qt*te-Ze*j,R},i.ae=function(R){var S=new Ln(16);return S[0]=R[0],S[1]=R[1],S[2]=R[2],S[3]=R[3],S[4]=R[4],S[5]=R[5],S[6]=R[6],S[7]=R[7],S[8]=R[8],S[9]=R[9],S[10]=R[10],S[11]=R[11],S[12]=R[12],S[13]=R[13],S[14]=R[14],S[15]=R[15],S},i.af=Za,i.ag=function(R,S){let D=0,j=0;if(R.kind==="constant")j=R.layoutSize;else if(R.kind!=="source"){let{interpolationType:te,minZoom:ue,maxZoom:ve}=R,De=te?k(xo.interpolationFactor(te,S,ue,ve),0,1):0;R.kind==="camera"?j=Mo.number(R.minSize,R.maxSize,De):D=De}return{uSizeT:D,uSize:j}},i.ai=function(R,{uSize:S,uSizeT:D},{lowerSize:j,upperSize:te}){return R.kind==="source"?j/v0:R.kind==="composite"?Mo.number(j/v0,te/v0,D):S},i.aj=nS,i.ak=function(R,S,D,j){let te=S.y-R.y,ue=S.x-R.x,ve=j.y-D.y,De=j.x-D.x,Ze=ve*ue-De*te;if(Ze===0)return null;let at=(De*(R.y-D.y)-ve*(R.x-D.x))/Ze;return new u(R.x+at*ue,R.y+at*te)},i.al=kC,i.am=xc,i.an=Un,i.ao=function(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return[S,D,j,te]},i.ap=kl,i.ar=iS,i.as=function(R,S){var D=S[0],j=S[1],te=S[2],ue=S[3],ve=S[4],De=S[5],Ze=S[6],at=S[7],Tt=S[8],Ft=S[9],Qt=S[10],sr=S[11],Tr=S[12],Pr=S[13],$r=S[14],ni=S[15],Di=D*De-j*ve,pi=D*Ze-te*ve,ki=D*at-ue*ve,Zi=j*Ze-te*De,ta=j*at-ue*De,Va=te*at-ue*Ze,Io=Tt*Pr-Ft*Tr,La=Tt*$r-Qt*Tr,Hn=Tt*ni-sr*Tr,lo=Ft*$r-Qt*Pr,$a=Ft*ni-sr*Pr,Xa=Qt*ni-sr*$r,Tn=Di*Xa-pi*$a+ki*lo+Zi*Hn-ta*La+Va*Io;return Tn?(R[0]=(De*Xa-Ze*$a+at*lo)*(Tn=1/Tn),R[1]=(te*$a-j*Xa-ue*lo)*Tn,R[2]=(Pr*Va-$r*ta+ni*Zi)*Tn,R[3]=(Qt*ta-Ft*Va-sr*Zi)*Tn,R[4]=(Ze*Hn-ve*Xa-at*La)*Tn,R[5]=(D*Xa-te*Hn+ue*La)*Tn,R[6]=($r*ki-Tr*Va-ni*pi)*Tn,R[7]=(Tt*Va-Qt*ki+sr*pi)*Tn,R[8]=(ve*$a-De*Hn+at*Io)*Tn,R[9]=(j*Hn-D*$a-ue*Io)*Tn,R[10]=(Tr*ta-Pr*ki+ni*Di)*Tn,R[11]=(Ft*ki-Tt*ta-sr*Di)*Tn,R[12]=(De*La-ve*lo-Ze*Io)*Tn,R[13]=(D*lo-j*La+te*Io)*Tn,R[14]=(Pr*pi-Tr*Zi-$r*Di)*Tn,R[15]=(Tt*Zi-Ft*pi+Qt*Di)*Tn,R):null},i.at=pS,i.au=Iw,i.av=gS,i.aw=function(){let R={},S=ce.$version;for(let D in ce.$root){let j=ce.$root[D];if(j.required){let te=null;te=D==="version"?S:j.type==="array"?[]:{},te!=null&&(R[D]=te)}}return R},i.ax=Cn,i.ay=ie,i.az=function(R){R=R.slice();let S=Object.create(null);for(let D=0;D25||j<0||j>=1||D<0||D>=1)},i.bc=function(R,S){return R[0]=S[0],R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=S[1],R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=S[2],R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},i.bd=class extends yt{},i.be=cS,i.bf=$9,i.bh=ge,i.bi=function(R,S){_e.REGISTERED_PROTOCOLS[R]=S},i.bj=function(R){delete _e.REGISTERED_PROTOCOLS[R]},i.bk=function(R,S){let D={};for(let te=0;teXa*kl)}let La=ve?"center":D.get("text-justify").evaluate(at,{},R.canonical),Hn=D.get("symbol-placement")==="point"?D.get("text-max-width").evaluate(at,{},R.canonical)*kl:1/0,lo=()=>{R.bucket.allowVerticalPlacement&&Ua(ki)&&(Tr.vertical=Gx(Pr,R.glyphMap,R.glyphPositions,R.imagePositions,Tt,Hn,ue,Va,"left",ta,ni,i.ah.vertical,!0,Qt,Ft))};if(!ve&&Io){let $a=new Set;if(La==="auto")for(let Tn=0;Tna(void 0,void 0,void 0,function*(){if(R.byteLength===0)return createImageBitmap(new ImageData(1,1));let S=new Blob([new Uint8Array(R)],{type:"image/png"});try{return createImageBitmap(S)}catch(D){throw new Error(`Could not load image because of ${D.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),i.e=L,i.f=R=>new Promise((S,D)=>{let j=new Image;j.onload=()=>{S(j),URL.revokeObjectURL(j.src),j.onload=null,window.requestAnimationFrame(()=>{j.src=X})},j.onerror=()=>D(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let te=new Blob([new Uint8Array(R)],{type:"image/png"});j.src=R.byteLength?URL.createObjectURL(te):X}),i.g=Me,i.h=(R,S)=>Te(L(R,{type:"json"}),S),i.i=q,i.j=me,i.k=Ce,i.l=(R,S)=>Te(L(R,{type:"arrayBuffer"}),S),i.m=Te,i.n=function(R){return new eS(R).readFields(yQ,[])},i.o=Ao,i.p=rS,i.q=le,i.r=xi,i.s=Ee,i.t=Ti,i.u=fi,i.v=ce,i.w=T,i.x=function([R,S,D]){return S+=90,S*=Math.PI/180,D*=Math.PI/180,{x:R*Math.cos(S)*Math.sin(D),y:R*Math.sin(S)*Math.sin(D),z:R*Math.cos(D)}},i.y=Mo,i.z=Ko}),r("worker",["./shared"],function(i){"use strict";class a{constructor(Ne){this.keyCache={},Ne&&this.replace(Ne)}replace(Ne){this._layerConfigs={},this._layers={},this.update(Ne,[])}update(Ne,Ye){for(let Xe of Ne){this._layerConfigs[Xe.id]=Xe;let ht=this._layers[Xe.id]=i.aA(Xe);ht._featureFilter=i.a7(ht.filter),this.keyCache[Xe.id]&&delete this.keyCache[Xe.id]}for(let Xe of Ye)delete this.keyCache[Xe],delete this._layerConfigs[Xe],delete this._layers[Xe];this.familiesBySource={};let Ve=i.bk(Object.values(this._layerConfigs),this.keyCache);for(let Xe of Ve){let ht=Xe.map(Vt=>this._layers[Vt.id]),Le=ht[0];if(Le.visibility==="none")continue;let xe=Le.source||"",Se=this.familiesBySource[xe];Se||(Se=this.familiesBySource[xe]={});let lt=Le.sourceLayer||"_geojsonTileLayer",Gt=Se[lt];Gt||(Gt=Se[lt]=[]),Gt.push(ht)}}}class o{constructor(Ne){let Ye={},Ve=[];for(let xe in Ne){let Se=Ne[xe],lt=Ye[xe]={};for(let Gt in Se){let Vt=Se[+Gt];if(!Vt||Vt.bitmap.width===0||Vt.bitmap.height===0)continue;let ar={x:0,y:0,w:Vt.bitmap.width+2,h:Vt.bitmap.height+2};Ve.push(ar),lt[Gt]={rect:ar,metrics:Vt.metrics}}}let{w:Xe,h:ht}=i.p(Ve),Le=new i.o({width:Xe||1,height:ht||1});for(let xe in Ne){let Se=Ne[xe];for(let lt in Se){let Gt=Se[+lt];if(!Gt||Gt.bitmap.width===0||Gt.bitmap.height===0)continue;let Vt=Ye[xe][lt].rect;i.o.copy(Gt.bitmap,Le,{x:0,y:0},{x:Vt.x+1,y:Vt.y+1},Gt.bitmap)}}this.image=Le,this.positions=Ye}}i.bl("GlyphAtlas",o);class s{constructor(Ne){this.tileID=new i.S(Ne.tileID.overscaledZ,Ne.tileID.wrap,Ne.tileID.canonical.z,Ne.tileID.canonical.x,Ne.tileID.canonical.y),this.uid=Ne.uid,this.zoom=Ne.zoom,this.pixelRatio=Ne.pixelRatio,this.tileSize=Ne.tileSize,this.source=Ne.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Ne.showCollisionBoxes,this.collectResourceTiming=!!Ne.collectResourceTiming,this.returnDependencies=!!Ne.returnDependencies,this.promoteId=Ne.promoteId,this.inFlightDependencies=[]}parse(Ne,Ye,Ve,Xe){return i._(this,void 0,void 0,function*(){this.status="parsing",this.data=Ne,this.collisionBoxArray=new i.a5;let ht=new i.bm(Object.keys(Ne.layers).sort()),Le=new i.bn(this.tileID,this.promoteId);Le.bucketLayerIDs=[];let xe={},Se={featureIndex:Le,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:Ve},lt=Ye.familiesBySource[this.source];for(let _n in lt){let $i=Ne.layers[_n];if(!$i)continue;$i.version===1&&i.w(`Vector tile source "${this.source}" layer "${_n}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let zn=ht.encode(_n),Wn=[];for(let It=0;It<$i.length;It++){let ft=$i.feature(It),jt=Le.getId(ft,_n);Wn.push({feature:ft,id:jt,index:It,sourceLayerIndex:zn})}for(let It of lt[_n]){let ft=It[0];ft.source!==this.source&&i.w(`layer.source = ${ft.source} does not equal this.source = ${this.source}`),ft.minzoom&&this.zoom=ft.maxzoom||ft.visibility!=="none"&&(l(It,this.zoom,Ve),(xe[ft.id]=ft.createBucket({index:Le.bucketLayerIDs.length,layers:It,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:zn,sourceID:this.source})).populate(Wn,Se,this.tileID.canonical),Le.bucketLayerIDs.push(It.map(jt=>jt.id)))}}let Gt=i.aF(Se.glyphDependencies,_n=>Object.keys(_n).map(Number));this.inFlightDependencies.forEach(_n=>_n==null?void 0:_n.abort()),this.inFlightDependencies=[];let Vt=Promise.resolve({});if(Object.keys(Gt).length){let _n=new AbortController;this.inFlightDependencies.push(_n),Vt=Xe.sendAsync({type:"GG",data:{stacks:Gt,source:this.source,tileID:this.tileID,type:"glyphs"}},_n)}let ar=Object.keys(Se.iconDependencies),Qr=Promise.resolve({});if(ar.length){let _n=new AbortController;this.inFlightDependencies.push(_n),Qr=Xe.sendAsync({type:"GI",data:{icons:ar,source:this.source,tileID:this.tileID,type:"icons"}},_n)}let ai=Object.keys(Se.patternDependencies),jr=Promise.resolve({});if(ai.length){let _n=new AbortController;this.inFlightDependencies.push(_n),jr=Xe.sendAsync({type:"GI",data:{icons:ai,source:this.source,tileID:this.tileID,type:"patterns"}},_n)}let[ri,bi,nn]=yield Promise.all([Vt,Qr,jr]),Wi=new o(ri),Ni=new i.bo(bi,nn);for(let _n in xe){let $i=xe[_n];$i instanceof i.a6?(l($i.layers,this.zoom,Ve),i.bp({bucket:$i,glyphMap:ri,glyphPositions:Wi.positions,imageMap:bi,imagePositions:Ni.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):$i.hasPattern&&($i instanceof i.bq||$i instanceof i.br||$i instanceof i.bs)&&(l($i.layers,this.zoom,Ve),$i.addFeatures(Se,this.tileID.canonical,Ni.patternPositions))}return this.status="done",{buckets:Object.values(xe).filter(_n=>!_n.isEmpty()),featureIndex:Le,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Wi.image,imageAtlas:Ni,glyphMap:this.returnDependencies?ri:null,iconMap:this.returnDependencies?bi:null,glyphPositions:this.returnDependencies?Wi.positions:null}})}}function l(ut,Ne,Ye){let Ve=new i.z(Ne);for(let Xe of ut)Xe.recalculate(Ve,Ye)}class u{constructor(Ne,Ye,Ve){this.actor=Ne,this.layerIndex=Ye,this.availableImages=Ve,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield i.l(Ne.request,Ye);try{return{vectorTile:new i.bt.VectorTile(new i.bu(Ve.data)),rawData:Ve.data,cacheControl:Ve.cacheControl,expires:Ve.expires}}catch(Xe){let ht=new Uint8Array(Ve.data),Le=`Unable to parse the tile at ${Ne.request.url}, `;throw Le+=ht[0]===31&&ht[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Xe.message}`,new Error(Le)}})}loadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid,Ve=!!(Ne&&Ne.request&&Ne.request.collectResourceTiming)&&new i.bv(Ne.request),Xe=new s(Ne);this.loading[Ye]=Xe;let ht=new AbortController;Xe.abort=ht;try{let Le=yield this.loadVectorTile(Ne,ht);if(delete this.loading[Ye],!Le)return null;let xe=Le.rawData,Se={};Le.expires&&(Se.expires=Le.expires),Le.cacheControl&&(Se.cacheControl=Le.cacheControl);let lt={};if(Ve){let Vt=Ve.finish();Vt&&(lt.resourceTiming=JSON.parse(JSON.stringify(Vt)))}Xe.vectorTile=Le.vectorTile;let Gt=Xe.parse(Le.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Ye]=Xe,this.fetching[Ye]={rawTileData:xe,cacheControl:Se,resourceTiming:lt};try{let Vt=yield Gt;return i.e({rawTileData:xe.slice(0)},Vt,Se,lt)}finally{delete this.fetching[Ye]}}catch(Le){throw delete this.loading[Ye],Xe.status="done",this.loaded[Ye]=Xe,Le}})}reloadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid;if(!this.loaded||!this.loaded[Ye])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let Ve=this.loaded[Ye];if(Ve.showCollisionBoxes=Ne.showCollisionBoxes,Ve.status==="parsing"){let Xe=yield Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor),ht;if(this.fetching[Ye]){let{rawTileData:Le,cacheControl:xe,resourceTiming:Se}=this.fetching[Ye];delete this.fetching[Ye],ht=i.e({rawTileData:Le.slice(0)},Xe,xe,Se)}else ht=Xe;return ht}if(Ve.status==="done"&&Ve.vectorTile)return Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=this.loading,Ve=Ne.uid;Ye&&Ye[Ve]&&Ye[Ve].abort&&(Ye[Ve].abort.abort(),delete Ye[Ve])})}removeTile(Ne){return i._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Ne.uid]&&delete this.loaded[Ne.uid]})}}class c{constructor(){this.loaded={}}loadTile(Ne){return i._(this,void 0,void 0,function*(){let{uid:Ye,encoding:Ve,rawImageData:Xe,redFactor:ht,greenFactor:Le,blueFactor:xe,baseShift:Se}=Ne,lt=Xe.width+2,Gt=Xe.height+2,Vt=i.b(Xe)?new i.R({width:lt,height:Gt},yield i.bw(Xe,-1,-1,lt,Gt)):Xe,ar=new i.bx(Ye,Vt,Ve,ht,Le,xe,Se);return this.loaded=this.loaded||{},this.loaded[Ye]=ar,ar})}removeTile(Ne){let Ye=this.loaded,Ve=Ne.uid;Ye&&Ye[Ve]&&delete Ye[Ve]}}function f(ut,Ne){if(ut.length!==0){h(ut[0],Ne);for(var Ye=1;Ye=Math.abs(xe)?Ye-Se+xe:xe-Se+Ye,Ye=Se}Ye+Ve>=0!=!!Ne&&ut.reverse()}var d=i.by(function ut(Ne,Ye){var Ve,Xe=Ne&&Ne.type;if(Xe==="FeatureCollection")for(Ve=0;Ve>31}function q(ut,Ne){for(var Ye=ut.loadGeometry(),Ve=ut.type,Xe=0,ht=0,Le=Ye.length,xe=0;xeut},G=Math.fround||(N=new Float32Array(1),ut=>(N[0]=+ut,N[0]));var N;let W=3,re=5,ae=6;class _e{constructor(Ne){this.options=Object.assign(Object.create(X),Ne),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Ne){let{log:Ye,minZoom:Ve,maxZoom:Xe}=this.options;Ye&&console.time("total time");let ht=`prepare ${Ne.length} points`;Ye&&console.time(ht),this.points=Ne;let Le=[];for(let Se=0;Se=Ve;Se--){let lt=+Date.now();xe=this.trees[Se]=this._createTree(this._cluster(xe,Se)),Ye&&console.log("z%d: %d clusters in %dms",Se,xe.numItems,+Date.now()-lt)}return Ye&&console.timeEnd("total time"),this}getClusters(Ne,Ye){let Ve=((Ne[0]+180)%360+360)%360-180,Xe=Math.max(-90,Math.min(90,Ne[1])),ht=Ne[2]===180?180:((Ne[2]+180)%360+360)%360-180,Le=Math.max(-90,Math.min(90,Ne[3]));if(Ne[2]-Ne[0]>=360)Ve=-180,ht=180;else if(Ve>ht){let Vt=this.getClusters([Ve,Xe,180,Le],Ye),ar=this.getClusters([-180,Xe,ht,Le],Ye);return Vt.concat(ar)}let xe=this.trees[this._limitZoom(Ye)],Se=xe.range(ge(Ve),ie(Le),ge(ht),ie(Xe)),lt=xe.data,Gt=[];for(let Vt of Se){let ar=this.stride*Vt;Gt.push(lt[ar+re]>1?Me(lt,ar,this.clusterProps):this.points[lt[ar+W]])}return Gt}getChildren(Ne){let Ye=this._getOriginId(Ne),Ve=this._getOriginZoom(Ne),Xe="No cluster with the specified id.",ht=this.trees[Ve];if(!ht)throw new Error(Xe);let Le=ht.data;if(Ye*this.stride>=Le.length)throw new Error(Xe);let xe=this.options.radius/(this.options.extent*Math.pow(2,Ve-1)),Se=ht.within(Le[Ye*this.stride],Le[Ye*this.stride+1],xe),lt=[];for(let Gt of Se){let Vt=Gt*this.stride;Le[Vt+4]===Ne&<.push(Le[Vt+re]>1?Me(Le,Vt,this.clusterProps):this.points[Le[Vt+W]])}if(lt.length===0)throw new Error(Xe);return lt}getLeaves(Ne,Ye,Ve){let Xe=[];return this._appendLeaves(Xe,Ne,Ye=Ye||10,Ve=Ve||0,0),Xe}getTile(Ne,Ye,Ve){let Xe=this.trees[this._limitZoom(Ne)],ht=Math.pow(2,Ne),{extent:Le,radius:xe}=this.options,Se=xe/Le,lt=(Ve-Se)/ht,Gt=(Ve+1+Se)/ht,Vt={features:[]};return this._addTileFeatures(Xe.range((Ye-Se)/ht,lt,(Ye+1+Se)/ht,Gt),Xe.data,Ye,Ve,ht,Vt),Ye===0&&this._addTileFeatures(Xe.range(1-Se/ht,lt,1,Gt),Xe.data,ht,Ve,ht,Vt),Ye===ht-1&&this._addTileFeatures(Xe.range(0,lt,Se/ht,Gt),Xe.data,-1,Ve,ht,Vt),Vt.features.length?Vt:null}getClusterExpansionZoom(Ne){let Ye=this._getOriginZoom(Ne)-1;for(;Ye<=this.options.maxZoom;){let Ve=this.getChildren(Ne);if(Ye++,Ve.length!==1)break;Ne=Ve[0].properties.cluster_id}return Ye}_appendLeaves(Ne,Ye,Ve,Xe,ht){let Le=this.getChildren(Ye);for(let xe of Le){let Se=xe.properties;if(Se&&Se.cluster?ht+Se.point_count<=Xe?ht+=Se.point_count:ht=this._appendLeaves(Ne,Se.cluster_id,Ve,Xe,ht):ht1,Gt,Vt,ar;if(lt)Gt=ke(Ye,Se,this.clusterProps),Vt=Ye[Se],ar=Ye[Se+1];else{let jr=this.points[Ye[Se+W]];Gt=jr.properties;let[ri,bi]=jr.geometry.coordinates;Vt=ge(ri),ar=ie(bi)}let Qr={type:1,geometry:[[Math.round(this.options.extent*(Vt*ht-Ve)),Math.round(this.options.extent*(ar*ht-Xe))]],tags:Gt},ai;ai=lt||this.options.generateId?Ye[Se+W]:this.points[Ye[Se+W]].id,ai!==void 0&&(Qr.id=ai),Le.features.push(Qr)}}_limitZoom(Ne){return Math.max(this.options.minZoom,Math.min(Math.floor(+Ne),this.options.maxZoom+1))}_cluster(Ne,Ye){let{radius:Ve,extent:Xe,reduce:ht,minPoints:Le}=this.options,xe=Ve/(Xe*Math.pow(2,Ye)),Se=Ne.data,lt=[],Gt=this.stride;for(let Vt=0;VtYe&&(ri+=Se[nn+re])}if(ri>jr&&ri>=Le){let bi,nn=ar*jr,Wi=Qr*jr,Ni=-1,_n=((Vt/Gt|0)<<5)+(Ye+1)+this.points.length;for(let $i of ai){let zn=$i*Gt;if(Se[zn+2]<=Ye)continue;Se[zn+2]=Ye;let Wn=Se[zn+re];nn+=Se[zn]*Wn,Wi+=Se[zn+1]*Wn,Se[zn+4]=_n,ht&&(bi||(bi=this._map(Se,Vt,!0),Ni=this.clusterProps.length,this.clusterProps.push(bi)),ht(bi,this._map(Se,zn)))}Se[Vt+4]=_n,lt.push(nn/ri,Wi/ri,1/0,_n,-1,ri),ht&<.push(Ni)}else{for(let bi=0;bi1)for(let bi of ai){let nn=bi*Gt;if(!(Se[nn+2]<=Ye)){Se[nn+2]=Ye;for(let Wi=0;Wi>5}_getOriginZoom(Ne){return(Ne-this.points.length)%32}_map(Ne,Ye,Ve){if(Ne[Ye+re]>1){let Le=this.clusterProps[Ne[Ye+ae]];return Ve?Object.assign({},Le):Le}let Xe=this.points[Ne[Ye+W]].properties,ht=this.options.map(Xe);return Ve&&ht===Xe?Object.assign({},ht):ht}}function Me(ut,Ne,Ye){return{type:"Feature",id:ut[Ne+W],properties:ke(ut,Ne,Ye),geometry:{type:"Point",coordinates:[(Ve=ut[Ne],360*(Ve-.5)),Te(ut[Ne+1])]}};var Ve}function ke(ut,Ne,Ye){let Ve=ut[Ne+re],Xe=Ve>=1e4?`${Math.round(Ve/1e3)}k`:Ve>=1e3?Math.round(Ve/100)/10+"k":Ve,ht=ut[Ne+ae],Le=ht===-1?{}:Object.assign({},Ye[ht]);return Object.assign(Le,{cluster:!0,cluster_id:ut[Ne+W],point_count:Ve,point_count_abbreviated:Xe})}function ge(ut){return ut/360+.5}function ie(ut){let Ne=Math.sin(ut*Math.PI/180),Ye=.5-.25*Math.log((1+Ne)/(1-Ne))/Math.PI;return Ye<0?0:Ye>1?1:Ye}function Te(ut){let Ne=(180-360*ut)*Math.PI/180;return 360*Math.atan(Math.exp(Ne))/Math.PI-90}function Ee(ut,Ne,Ye,Ve){let Xe=Ve,ht=Ne+(Ye-Ne>>1),Le,xe=Ye-Ne,Se=ut[Ne],lt=ut[Ne+1],Gt=ut[Ye],Vt=ut[Ye+1];for(let ar=Ne+3;arXe)Le=ar,Xe=Qr;else if(Qr===Xe){let ai=Math.abs(ar-ht);aiVe&&(Le-Ne>3&&Ee(ut,Ne,Le,Ve),ut[Le+2]=Xe,Ye-Le>3&&Ee(ut,Le,Ye,Ve))}function Ae(ut,Ne,Ye,Ve,Xe,ht){let Le=Xe-Ye,xe=ht-Ve;if(Le!==0||xe!==0){let Se=((ut-Ye)*Le+(Ne-Ve)*xe)/(Le*Le+xe*xe);Se>1?(Ye=Xe,Ve=ht):Se>0&&(Ye+=Le*Se,Ve+=xe*Se)}return Le=ut-Ye,xe=Ne-Ve,Le*Le+xe*xe}function ze(ut,Ne,Ye,Ve){let Xe={id:ut==null?null:ut,type:Ne,geometry:Ye,tags:Ve,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Ne==="Point"||Ne==="MultiPoint"||Ne==="LineString")Ce(Xe,Ye);else if(Ne==="Polygon")Ce(Xe,Ye[0]);else if(Ne==="MultiLineString")for(let ht of Ye)Ce(Xe,ht);else if(Ne==="MultiPolygon")for(let ht of Ye)Ce(Xe,ht[0]);return Xe}function Ce(ut,Ne){for(let Ye=0;Ye0&&(Le+=Ve?(Xe*Gt-lt*ht)/2:Math.sqrt(Math.pow(lt-Xe,2)+Math.pow(Gt-ht,2))),Xe=lt,ht=Gt}let xe=Ne.length-3;Ne[2]=1,Ee(Ne,0,xe,Ye),Ne[xe+2]=1,Ne.size=Math.abs(Le),Ne.start=0,Ne.end=Ne.size}function Ge(ut,Ne,Ye,Ve){for(let Xe=0;Xe1?1:Ye}function qt(ut,Ne,Ye,Ve,Xe,ht,Le,xe){if(Ve/=Ne,ht>=(Ye/=Ne)&&Le=Ve)return null;let Se=[];for(let lt of ut){let Gt=lt.geometry,Vt=lt.type,ar=Xe===0?lt.minX:lt.minY,Qr=Xe===0?lt.maxX:lt.maxY;if(ar>=Ye&&Qr=Ve)continue;let ai=[];if(Vt==="Point"||Vt==="MultiPoint")rt(Gt,ai,Ye,Ve,Xe);else if(Vt==="LineString")ot(Gt,ai,Ye,Ve,Xe,!1,xe.lineMetrics);else if(Vt==="MultiLineString")kt(Gt,ai,Ye,Ve,Xe,!1);else if(Vt==="Polygon")kt(Gt,ai,Ye,Ve,Xe,!0);else if(Vt==="MultiPolygon")for(let jr of Gt){let ri=[];kt(jr,ri,Ye,Ve,Xe,!0),ri.length&&ai.push(ri)}if(ai.length){if(xe.lineMetrics&&Vt==="LineString"){for(let jr of ai)Se.push(ze(lt.id,Vt,jr,lt.tags));continue}Vt!=="LineString"&&Vt!=="MultiLineString"||(ai.length===1?(Vt="LineString",ai=ai[0]):Vt="MultiLineString"),Vt!=="Point"&&Vt!=="MultiPoint"||(Vt=ai.length===3?"Point":"MultiPoint"),Se.push(ze(lt.id,Vt,ai,lt.tags))}}return Se.length?Se:null}function rt(ut,Ne,Ye,Ve,Xe){for(let ht=0;ht=Ye&&Le<=Ve&&Ct(Ne,ut[ht],ut[ht+1],ut[ht+2])}}function ot(ut,Ne,Ye,Ve,Xe,ht,Le){let xe=Rt(ut),Se=Xe===0?Yt:xr,lt,Gt,Vt=ut.start;for(let ri=0;riYe&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Le&&(xe.start=Vt+lt*Gt)):$i>Ve?zn=Ye&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Wn=!0),zn>Ve&&$i<=Ve&&(Gt=Se(xe,bi,nn,Ni,_n,Ve),Wn=!0),!ht&&Wn&&(Le&&(xe.end=Vt+lt*Gt),Ne.push(xe),xe=Rt(ut)),Le&&(Vt+=lt)}let ar=ut.length-3,Qr=ut[ar],ai=ut[ar+1],jr=Xe===0?Qr:ai;jr>=Ye&&jr<=Ve&&Ct(xe,Qr,ai,ut[ar+2]),ar=xe.length-3,ht&&ar>=3&&(xe[ar]!==xe[0]||xe[ar+1]!==xe[1])&&Ct(xe,xe[0],xe[1],xe[2]),xe.length&&Ne.push(xe)}function Rt(ut){let Ne=[];return Ne.size=ut.size,Ne.start=ut.start,Ne.end=ut.end,Ne}function kt(ut,Ne,Ye,Ve,Xe,ht){for(let Le of ut)ot(Le,Ne,Ye,Ve,Xe,ht,!1)}function Ct(ut,Ne,Ye,Ve){ut.push(Ne,Ye,Ve)}function Yt(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ne)/(Ve-Ne);return Ct(ut,ht,Ye+(Xe-Ye)*Le,1),Le}function xr(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ye)/(Xe-Ye);return Ct(ut,Ne+(Ve-Ne)*Le,ht,1),Le}function er(ut,Ne){let Ye=[];for(let Ve=0;Ve0&&Ne.size<(Xe?Le:Ve))return void(Ye.numPoints+=Ne.length/3);let xe=[];for(let Se=0;SeLe)&&(Ye.numSimplified++,xe.push(Ne[Se],Ne[Se+1])),Ye.numPoints++;Xe&&function(Se,lt){let Gt=0;for(let Vt=0,ar=Se.length,Qr=ar-2;Vt0===lt)for(let Vt=0,ar=Se.length;Vt24)throw new Error("maxZoom should be in the 0-24 range");if(Ye.promoteId&&Ye.generateId)throw new Error("promoteId and generateId cannot be used together.");let Xe=function(ht,Le){let xe=[];if(ht.type==="FeatureCollection")for(let Se=0;Se1&&console.time("creation"),Qr=this.tiles[ar]=Lt(Ne,Ye,Ve,Xe,lt),this.tileCoords.push({z:Ye,x:Ve,y:Xe}),Gt)){Gt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ye,Ve,Xe,Qr.numFeatures,Qr.numPoints,Qr.numSimplified),console.timeEnd("creation"));let Wn=`z${Ye}`;this.stats[Wn]=(this.stats[Wn]||0)+1,this.total++}if(Qr.source=Ne,ht==null){if(Ye===lt.indexMaxZoom||Qr.numPoints<=lt.indexMaxPoints)continue}else{if(Ye===lt.maxZoom||Ye===ht)continue;if(ht!=null){let Wn=ht-Ye;if(Ve!==Le>>Wn||Xe!==xe>>Wn)continue}}if(Qr.source=null,Ne.length===0)continue;Gt>1&&console.time("clipping");let ai=.5*lt.buffer/lt.extent,jr=.5-ai,ri=.5+ai,bi=1+ai,nn=null,Wi=null,Ni=null,_n=null,$i=qt(Ne,Vt,Ve-ai,Ve+ri,0,Qr.minX,Qr.maxX,lt),zn=qt(Ne,Vt,Ve+jr,Ve+bi,0,Qr.minX,Qr.maxX,lt);Ne=null,$i&&(nn=qt($i,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),Wi=qt($i,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),$i=null),zn&&(Ni=qt(zn,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),_n=qt(zn,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),zn=null),Gt>1&&console.timeEnd("clipping"),Se.push(nn||[],Ye+1,2*Ve,2*Xe),Se.push(Wi||[],Ye+1,2*Ve,2*Xe+1),Se.push(Ni||[],Ye+1,2*Ve+1,2*Xe),Se.push(_n||[],Ye+1,2*Ve+1,2*Xe+1)}}getTile(Ne,Ye,Ve){Ne=+Ne,Ye=+Ye,Ve=+Ve;let Xe=this.options,{extent:ht,debug:Le}=Xe;if(Ne<0||Ne>24)return null;let xe=1<1&&console.log("drilling down to z%d-%d-%d",Ne,Ye,Ve);let lt,Gt=Ne,Vt=Ye,ar=Ve;for(;!lt&&Gt>0;)Gt--,Vt>>=1,ar>>=1,lt=this.tiles[$t(Gt,Vt,ar)];return lt&<.source?(Le>1&&(console.log("found parent tile z%d-%d-%d",Gt,Vt,ar),console.time("drilling down")),this.splitTile(lt.source,Gt,Vt,ar,Ne,Ye,Ve),Le>1&&console.timeEnd("drilling down"),this.tiles[Se]?xt(this.tiles[Se],ht):null):null}}function $t(ut,Ne,Ye){return 32*((1<{Vt.properties=Qr;let ai={};for(let jr of ar)ai[jr]=Se[jr].evaluate(Gt,Vt);return ai},Le.reduce=(Qr,ai)=>{Vt.properties=ai;for(let jr of ar)Gt.accumulated=Qr[jr],Qr[jr]=lt[jr].evaluate(Gt,Vt)},Le}(Ne)).load((yield this._pendingData).features):(Xe=yield this._pendingData,new Ht(Xe,Ne.geojsonVtOptions)),this.loaded={};let ht={};if(Ve){let Le=Ve.finish();Le&&(ht.resourceTiming={},ht.resourceTiming[Ne.source]=JSON.parse(JSON.stringify(Le)))}return ht}catch(ht){if(delete this._pendingRequest,i.bB(ht))return{abandoned:!0};throw ht}var Xe})}getData(){return i._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Ne){let Ye=this.loaded;return Ye&&Ye[Ne.uid]?super.reloadTile(Ne):this.loadTile(Ne)}loadAndProcessGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield this.loadGeoJSON(Ne,Ye);if(delete this._pendingRequest,typeof Ve!="object")throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(d(Ve,!0),Ne.filter){let Xe=i.bC(Ne.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Xe.result==="error")throw new Error(Xe.value.map(Le=>`${Le.key}: ${Le.message}`).join(", "));Ve={type:"FeatureCollection",features:Ve.features.filter(Le=>Xe.value.evaluate({zoom:0},Le))}}return Ve})}loadGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let{promoteId:Ve}=Ne;if(Ne.request){let Xe=yield i.h(Ne.request,Ye);return this._dataUpdateable=_r(Xe.data,Ve)?Br(Xe.data,Ve):void 0,Xe.data}if(typeof Ne.data=="string")try{let Xe=JSON.parse(Ne.data);return this._dataUpdateable=_r(Xe,Ve)?Br(Xe,Ve):void 0,Xe}catch(Xe){throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`)}if(!Ne.dataDiff)throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Ne.source}`);return function(Xe,ht,Le){var xe,Se,lt,Gt;if(ht.removeAll&&Xe.clear(),ht.remove)for(let Vt of ht.remove)Xe.delete(Vt);if(ht.add)for(let Vt of ht.add){let ar=fr(Vt,Le);ar!=null&&Xe.set(ar,Vt)}if(ht.update)for(let Vt of ht.update){let ar=Xe.get(Vt.id);if(ar==null)continue;let Qr=!Vt.removeAllProperties&&(((xe=Vt.removeProperties)===null||xe===void 0?void 0:xe.length)>0||((Se=Vt.addOrUpdateProperties)===null||Se===void 0?void 0:Se.length)>0);if((Vt.newGeometry||Vt.removeAllProperties||Qr)&&(ar=Object.assign({},ar),Xe.set(Vt.id,ar),Qr&&(ar.properties=Object.assign({},ar.properties))),Vt.newGeometry&&(ar.geometry=Vt.newGeometry),Vt.removeAllProperties)ar.properties={};else if(((lt=Vt.removeProperties)===null||lt===void 0?void 0:lt.length)>0)for(let ai of Vt.removeProperties)Object.prototype.hasOwnProperty.call(ar.properties,ai)&&delete ar.properties[ai];if(((Gt=Vt.addOrUpdateProperties)===null||Gt===void 0?void 0:Gt.length)>0)for(let{key:ai,value:jr}of Vt.addOrUpdateProperties)ar.properties[ai]=jr}}(this._dataUpdateable,Ne.dataDiff,Ve),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Ne){return i._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Ne){return this._geoJSONIndex.getClusterExpansionZoom(Ne.clusterId)}getClusterChildren(Ne){return this._geoJSONIndex.getChildren(Ne.clusterId)}getClusterLeaves(Ne){return this._geoJSONIndex.getLeaves(Ne.clusterId,Ne.limit,Ne.offset)}}class Nr{constructor(Ne){this.self=Ne,this.actor=new i.F(Ne),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Ye,Ve)=>{if(this.externalWorkerSourceTypes[Ye])throw new Error(`Worker source with name "${Ye}" already registered.`);this.externalWorkerSourceTypes[Ye]=Ve},this.self.addProtocol=i.bi,this.self.removeProtocol=i.bj,this.self.registerRTLTextPlugin=Ye=>{if(i.bD.isParsed())throw new Error("RTL text plugin already registered.");i.bD.setMethods(Ye)},this.actor.registerMessageHandler("LDT",(Ye,Ve)=>this._getDEMWorkerSource(Ye,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RDT",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Ye,Ve.source).removeTile(Ve)})),this.actor.registerMessageHandler("GCEZ",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterExpansionZoom(Ve)})),this.actor.registerMessageHandler("GCC",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterChildren(Ve)})),this.actor.registerMessageHandler("GCL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterLeaves(Ve)})),this.actor.registerMessageHandler("LD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadData(Ve)),this.actor.registerMessageHandler("GD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).getData()),this.actor.registerMessageHandler("LT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).reloadTile(Ve)),this.actor.registerMessageHandler("AT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).abortTile(Ve)),this.actor.registerMessageHandler("RMT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).removeTile(Ve)),this.actor.registerMessageHandler("RS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){if(!this.workerSources[Ye]||!this.workerSources[Ye][Ve.type]||!this.workerSources[Ye][Ve.type][Ve.source])return;let Xe=this.workerSources[Ye][Ve.type][Ve.source];delete this.workerSources[Ye][Ve.type][Ve.source],Xe.removeSource!==void 0&&Xe.removeSource(Ve)})),this.actor.registerMessageHandler("RM",Ye=>i._(this,void 0,void 0,function*(){delete this.layerIndexes[Ye],delete this.availableImages[Ye],delete this.workerSources[Ye],delete this.demWorkerSources[Ye]})),this.actor.registerMessageHandler("SR",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.referrer=Ve})),this.actor.registerMessageHandler("SRPS",(Ye,Ve)=>this._syncRTLPluginState(Ye,Ve)),this.actor.registerMessageHandler("IS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.self.importScripts(Ve)})),this.actor.registerMessageHandler("SI",(Ye,Ve)=>this._setImages(Ye,Ve)),this.actor.registerMessageHandler("UL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).update(Ve.layers,Ve.removedIds)})),this.actor.registerMessageHandler("SL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).replace(Ve)}))}_setImages(Ne,Ye){return i._(this,void 0,void 0,function*(){this.availableImages[Ne]=Ye;for(let Ve in this.workerSources[Ne]){let Xe=this.workerSources[Ne][Ve];for(let ht in Xe)Xe[ht].availableImages=Ye}})}_syncRTLPluginState(Ne,Ye){return i._(this,void 0,void 0,function*(){if(i.bD.isParsed())return i.bD.getState();if(Ye.pluginStatus!=="loading")return i.bD.setState(Ye),Ye;let Ve=Ye.pluginURL;if(this.self.importScripts(Ve),i.bD.isParsed()){let Xe={pluginStatus:"loaded",pluginURL:Ve};return i.bD.setState(Xe),Xe}throw i.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${Ve}`)})}_getAvailableImages(Ne){let Ye=this.availableImages[Ne];return Ye||(Ye=[]),Ye}_getLayerIndex(Ne){let Ye=this.layerIndexes[Ne];return Ye||(Ye=this.layerIndexes[Ne]=new a),Ye}_getWorkerSource(Ne,Ye,Ve){if(this.workerSources[Ne]||(this.workerSources[Ne]={}),this.workerSources[Ne][Ye]||(this.workerSources[Ne][Ye]={}),!this.workerSources[Ne][Ye][Ve]){let Xe={sendAsync:(ht,Le)=>(ht.targetMapId=Ne,this.actor.sendAsync(ht,Le))};switch(Ye){case"vector":this.workerSources[Ne][Ye][Ve]=new u(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;case"geojson":this.workerSources[Ne][Ye][Ve]=new Or(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;default:this.workerSources[Ne][Ye][Ve]=new this.externalWorkerSourceTypes[Ye](Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne))}}return this.workerSources[Ne][Ye][Ve]}_getDEMWorkerSource(Ne,Ye){return this.demWorkerSources[Ne]||(this.demWorkerSources[Ne]={}),this.demWorkerSources[Ne][Ye]||(this.demWorkerSources[Ne][Ye]=new c),this.demWorkerSources[Ne][Ye]}}return i.i(self)&&(self.worker=new Nr(self)),Nr}),r("index",["exports","./shared"],function(i,a){"use strict";var o="4.7.1";let s,l,u={now:typeof performance!="undefined"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:le=>new Promise((w,B)=>{let Q=requestAnimationFrame(w);le.signal.addEventListener("abort",()=>{cancelAnimationFrame(Q),B(a.c())})}),getImageData(le,w=0){return this.getImageCanvasContext(le).getImageData(-w,-w,le.width+2*w,le.height+2*w)},getImageCanvasContext(le){let w=window.document.createElement("canvas"),B=w.getContext("2d",{willReadFrequently:!0});if(!B)throw new Error("failed to create canvas 2d context");return w.width=le.width,w.height=le.height,B.drawImage(le,0,0,le.width,le.height),B},resolveURL:le=>(s||(s=document.createElement("a")),s.href=le,s.href),hardwareConcurrency:typeof navigator!="undefined"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(l==null&&(l=matchMedia("(prefers-reduced-motion: reduce)")),l.matches)}};class c{static testProp(w){if(!c.docStyle)return w[0];for(let B=0;B{window.removeEventListener("click",c.suppressClickInternal,!0)},0)}static getScale(w){let B=w.getBoundingClientRect();return{x:B.width/w.offsetWidth||1,y:B.height/w.offsetHeight||1,boundingClientRect:B}}static getPoint(w,B,Q){let ee=B.boundingClientRect;return new a.P((Q.clientX-ee.left)/B.x-w.clientLeft,(Q.clientY-ee.top)/B.y-w.clientTop)}static mousePos(w,B){let Q=c.getScale(w);return c.getPoint(w,Q,B)}static touchPos(w,B){let Q=[],ee=c.getScale(w);for(let se=0;se{h&&b(h),h=null,x=!0},d.onerror=()=>{v=!0,h=null},d.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(le){let w,B,Q,ee;le.resetRequestQueue=()=>{w=[],B=0,Q=0,ee={}},le.addThrottleControl=it=>{let yt=Q++;return ee[yt]=it,yt},le.removeThrottleControl=it=>{delete ee[it],qe()},le.getImage=(it,yt,Ot=!0)=>new Promise((Nt,hr)=>{f.supported&&(it.headers||(it.headers={}),it.headers.accept="image/webp,*/*"),a.e(it,{type:"image"}),w.push({abortController:yt,requestParameters:it,supportImageRefresh:Ot,state:"queued",onError:Sr=>{hr(Sr)},onSuccess:Sr=>{Nt(Sr)}}),qe()});let se=it=>a._(this,void 0,void 0,function*(){it.state="running";let{requestParameters:yt,supportImageRefresh:Ot,onError:Nt,onSuccess:hr,abortController:Sr}=it,he=Ot===!1&&!a.i(self)&&!a.g(yt.url)&&(!yt.headers||Object.keys(yt.headers).reduce((Oe,Je)=>Oe&&Je==="accept",!0));B++;let be=he?je(yt,Sr):a.m(yt,Sr);try{let Oe=yield be;delete it.abortController,it.state="completed",Oe.data instanceof HTMLImageElement||a.b(Oe.data)?hr(Oe):Oe.data&&hr({data:yield(Pe=Oe.data,typeof createImageBitmap=="function"?a.d(Pe):a.f(Pe)),cacheControl:Oe.cacheControl,expires:Oe.expires})}catch(Oe){delete it.abortController,Nt(Oe)}finally{B--,qe()}var Pe}),qe=()=>{let it=(()=>{for(let yt of Object.keys(ee))if(ee[yt]())return!0;return!1})()?a.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let yt=B;yt0;yt++){let Ot=w.shift();Ot.abortController.signal.aborted?yt--:se(Ot)}},je=(it,yt)=>new Promise((Ot,Nt)=>{let hr=new Image,Sr=it.url,he=it.credentials;he&&he==="include"?hr.crossOrigin="use-credentials":(he&&he==="same-origin"||!a.s(Sr))&&(hr.crossOrigin="anonymous"),yt.signal.addEventListener("abort",()=>{hr.src="",Nt(a.c())}),hr.fetchPriority="high",hr.onload=()=>{hr.onerror=hr.onload=null,Ot({data:hr})},hr.onerror=()=>{hr.onerror=hr.onload=null,yt.signal.aborted||Nt(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},hr.src=Sr})}(p||(p={})),p.resetRequestQueue();class E{constructor(w){this._transformRequestFn=w}transformRequest(w,B){return this._transformRequestFn&&this._transformRequestFn(w,B)||{url:w}}setTransformRequest(w){this._transformRequestFn=w}}function k(le){var w=new a.A(3);return w[0]=le[0],w[1]=le[1],w[2]=le[2],w}var A,L=function(le,w,B){return le[0]=w[0]-B[0],le[1]=w[1]-B[1],le[2]=w[2]-B[2],le};A=new a.A(3),a.A!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0);var _=function(le){var w=le[0],B=le[1];return w*w+B*B};function C(le){let w=[];if(typeof le=="string")w.push({id:"default",url:le});else if(le&&le.length>0){let B=[];for(let{id:Q,url:ee}of le){let se=`${Q}${ee}`;B.indexOf(se)===-1&&(B.push(se),w.push({id:Q,url:ee}))}}return w}function M(le,w,B){let Q=le.split("?");return Q[0]+=`${w}${B}`,Q.join("?")}(function(){var le=new a.A(2);a.A!=Float32Array&&(le[0]=0,le[1]=0)})();class g{constructor(w,B,Q,ee){this.context=w,this.format=Q,this.texture=w.gl.createTexture(),this.update(B,ee)}update(w,B,Q){let{width:ee,height:se}=w,qe=!(this.size&&this.size[0]===ee&&this.size[1]===se||Q),{context:je}=this,{gl:it}=je;if(this.useMipmap=!!(B&&B.useMipmap),it.bindTexture(it.TEXTURE_2D,this.texture),je.pixelStoreUnpackFlipY.set(!1),je.pixelStoreUnpack.set(1),je.pixelStoreUnpackPremultiplyAlpha.set(this.format===it.RGBA&&(!B||B.premultiply!==!1)),qe)this.size=[ee,se],w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texImage2D(it.TEXTURE_2D,0,this.format,this.format,it.UNSIGNED_BYTE,w):it.texImage2D(it.TEXTURE_2D,0,this.format,ee,se,0,this.format,it.UNSIGNED_BYTE,w.data);else{let{x:yt,y:Ot}=Q||{x:0,y:0};w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,it.RGBA,it.UNSIGNED_BYTE,w):it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,ee,se,it.RGBA,it.UNSIGNED_BYTE,w.data)}this.useMipmap&&this.isSizePowerOfTwo()&&it.generateMipmap(it.TEXTURE_2D)}bind(w,B,Q){let{context:ee}=this,{gl:se}=ee;se.bindTexture(se.TEXTURE_2D,this.texture),Q!==se.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(Q=se.LINEAR),w!==this.filter&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,w),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,Q||w),this.filter=w),B!==this.wrap&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,B),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,B),this.wrap=B)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:w}=this.context;w.deleteTexture(this.texture),this.texture=null}}function P(le){let{userImage:w}=le;return!!(w&&w.render&&w.render())&&(le.data.replace(new Uint8Array(w.data.buffer)),!0)}class T extends a.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(w){if(this.loaded!==w&&(this.loaded=w,w)){for(let{ids:B,promiseResolve:Q}of this.requestors)Q(this._getImagesForIds(B));this.requestors=[]}}getImage(w){let B=this.images[w];if(B&&!B.data&&B.spriteData){let Q=B.spriteData;B.data=new a.R({width:Q.width,height:Q.height},Q.context.getImageData(Q.x,Q.y,Q.width,Q.height).data),B.spriteData=null}return B}addImage(w,B){if(this.images[w])throw new Error(`Image id ${w} already exist, use updateImage instead`);this._validate(w,B)&&(this.images[w]=B)}_validate(w,B){let Q=!0,ee=B.data||B.spriteData;return this._validateStretch(B.stretchX,ee&&ee.width)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchX" value`))),Q=!1),this._validateStretch(B.stretchY,ee&&ee.height)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchY" value`))),Q=!1),this._validateContent(B.content,B)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "content" value`))),Q=!1),Q}_validateStretch(w,B){if(!w)return!0;let Q=0;for(let ee of w){if(ee[0]{let ee=!0;if(!this.isLoaded())for(let se of w)this.images[se]||(ee=!1);this.isLoaded()||ee?B(this._getImagesForIds(w)):this.requestors.push({ids:w,promiseResolve:B})})}_getImagesForIds(w){let B={};for(let Q of w){let ee=this.getImage(Q);ee||(this.fire(new a.k("styleimagemissing",{id:Q})),ee=this.getImage(Q)),ee?B[Q]={data:ee.data.clone(),pixelRatio:ee.pixelRatio,sdf:ee.sdf,version:ee.version,stretchX:ee.stretchX,stretchY:ee.stretchY,content:ee.content,textFitWidth:ee.textFitWidth,textFitHeight:ee.textFitHeight,hasRenderCallback:!!(ee.userImage&&ee.userImage.render)}:a.w(`Image "${Q}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return B}getPixelSize(){let{width:w,height:B}=this.atlasImage;return{width:w,height:B}}getPattern(w){let B=this.patterns[w],Q=this.getImage(w);if(!Q)return null;if(B&&B.position.version===Q.version)return B.position;if(B)B.position.version=Q.version;else{let ee={w:Q.data.width+2,h:Q.data.height+2,x:0,y:0},se=new a.I(ee,Q);this.patterns[w]={bin:ee,position:se}}return this._updatePatternAtlas(),this.patterns[w].position}bind(w){let B=w.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new g(w,this.atlasImage,B.RGBA),this.atlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE)}_updatePatternAtlas(){let w=[];for(let se in this.patterns)w.push(this.patterns[se].bin);let{w:B,h:Q}=a.p(w),ee=this.atlasImage;ee.resize({width:B||1,height:Q||1});for(let se in this.patterns){let{bin:qe}=this.patterns[se],je=qe.x+1,it=qe.y+1,yt=this.getImage(se).data,Ot=yt.width,Nt=yt.height;a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it},{width:Ot,height:Nt}),a.R.copy(yt,ee,{x:0,y:Nt-1},{x:je,y:it-1},{width:Ot,height:1}),a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it+Nt},{width:Ot,height:1}),a.R.copy(yt,ee,{x:Ot-1,y:0},{x:je-1,y:it},{width:1,height:Nt}),a.R.copy(yt,ee,{x:0,y:0},{x:je+Ot,y:it},{width:1,height:Nt})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(w){for(let B of w){if(this.callbackDispatchedThisFrame[B])continue;this.callbackDispatchedThisFrame[B]=!0;let Q=this.getImage(B);Q||a.w(`Image with ID: "${B}" was not found`),P(Q)&&this.updateImage(B,Q)}}}let F=1e20;function q(le,w,B,Q,ee,se,qe,je,it){for(let yt=w;yt-1);it++,se[it]=je,qe[it]=yt,qe[it+1]=F}for(let je=0,it=0;je65535)throw new Error("glyphs > 65535 not supported");if(Q.ranges[se])return{stack:w,id:B,glyph:ee};if(!this.url)throw new Error("glyphsUrl is not set");if(!Q.requests[se]){let je=H.loadGlyphRange(w,se,this.url,this.requestManager);Q.requests[se]=je}let qe=yield Q.requests[se];for(let je in qe)this._doesCharSupportLocalGlyph(+je)||(Q.glyphs[+je]=qe[+je]);return Q.ranges[se]=!0,{stack:w,id:B,glyph:qe[B]||null}})}_doesCharSupportLocalGlyph(w){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(w))}_tinySDF(w,B,Q){let ee=this.localIdeographFontFamily;if(!ee||!this._doesCharSupportLocalGlyph(Q))return;let se=w.tinySDF;if(!se){let je="400";/bold/i.test(B)?je="900":/medium/i.test(B)?je="500":/light/i.test(B)&&(je="200"),se=w.tinySDF=new H.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:ee,fontWeight:je})}let qe=se.draw(String.fromCharCode(Q));return{id:Q,bitmap:new a.o({width:qe.width||60,height:qe.height||60},qe.data),metrics:{width:qe.glyphWidth/2||24,height:qe.glyphHeight/2||24,left:qe.glyphLeft/2+.5||0,top:qe.glyphTop/2-27.5||-8,advance:qe.glyphAdvance/2||24,isDoubleResolution:!0}}}}H.loadGlyphRange=function(le,w,B,Q){return a._(this,void 0,void 0,function*(){let ee=256*w,se=ee+255,qe=Q.transformRequest(B.replace("{fontstack}",le).replace("{range}",`${ee}-${se}`),"Glyphs"),je=yield a.l(qe,new AbortController);if(!je||!je.data)throw new Error(`Could not load glyph range. range: ${w}, ${ee}-${se}`);let it={};for(let yt of a.n(je.data))it[yt.id]=yt;return it})},H.TinySDF=class{constructor({fontSize:le=24,buffer:w=3,radius:B=8,cutoff:Q=.25,fontFamily:ee="sans-serif",fontWeight:se="normal",fontStyle:qe="normal"}={}){this.buffer=w,this.cutoff=Q,this.radius=B;let je=this.size=le+4*w,it=this._createCanvas(je),yt=this.ctx=it.getContext("2d",{willReadFrequently:!0});yt.font=`${qe} ${se} ${le}px ${ee}`,yt.textBaseline="alphabetic",yt.textAlign="left",yt.fillStyle="black",this.gridOuter=new Float64Array(je*je),this.gridInner=new Float64Array(je*je),this.f=new Float64Array(je),this.z=new Float64Array(je+1),this.v=new Uint16Array(je)}_createCanvas(le){let w=document.createElement("canvas");return w.width=w.height=le,w}draw(le){let{width:w,actualBoundingBoxAscent:B,actualBoundingBoxDescent:Q,actualBoundingBoxLeft:ee,actualBoundingBoxRight:se}=this.ctx.measureText(le),qe=Math.ceil(B),je=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(se-ee))),it=Math.min(this.size-this.buffer,qe+Math.ceil(Q)),yt=je+2*this.buffer,Ot=it+2*this.buffer,Nt=Math.max(yt*Ot,0),hr=new Uint8ClampedArray(Nt),Sr={data:hr,width:yt,height:Ot,glyphWidth:je,glyphHeight:it,glyphTop:qe,glyphLeft:0,glyphAdvance:w};if(je===0||it===0)return Sr;let{ctx:he,buffer:be,gridInner:Pe,gridOuter:Oe}=this;he.clearRect(be,be,je,it),he.fillText(le,be,be+qe);let Je=he.getImageData(be,be,je,it);Oe.fill(F,0,Nt),Pe.fill(0,0,Nt);for(let He=0;He0?Ut*Ut:0,Pe[Dt]=Ut<0?Ut*Ut:0}}q(Oe,0,0,yt,Ot,yt,this.f,this.v,this.z),q(Pe,be,be,je,it,yt,this.f,this.v,this.z);for(let He=0;He1&&(it=w[++je]);let Ot=Math.abs(yt-it.left),Nt=Math.abs(yt-it.right),hr=Math.min(Ot,Nt),Sr,he=se/Q*(ee+1);if(it.isDash){let be=ee-Math.abs(he);Sr=Math.sqrt(hr*hr+be*be)}else Sr=ee-Math.sqrt(hr*hr+he*he);this.data[qe+yt]=Math.max(0,Math.min(255,Sr+128))}}}addRegularDash(w){for(let je=w.length-1;je>=0;--je){let it=w[je],yt=w[je+1];it.zeroLength?w.splice(je,1):yt&&yt.isDash===it.isDash&&(yt.left=it.left,w.splice(je,1))}let B=w[0],Q=w[w.length-1];B.isDash===Q.isDash&&(B.left=Q.left-this.width,Q.right=B.right+this.width);let ee=this.width*this.nextRow,se=0,qe=w[se];for(let je=0;je1&&(qe=w[++se]);let it=Math.abs(je-qe.left),yt=Math.abs(je-qe.right),Ot=Math.min(it,yt);this.data[ee+je]=Math.max(0,Math.min(255,(qe.isDash?Ot:-Ot)+128))}}addDash(w,B){let Q=B?7:0,ee=2*Q+1;if(this.nextRow+ee>this.height)return a.w("LineAtlas out of space"),null;let se=0;for(let je=0;je{B.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[_e]}numActive(){return Object.keys(this.active).length}}let ke=Math.floor(u.hardwareConcurrency/2),ge,ie;function Te(){return ge||(ge=new Me),ge}Me.workerCount=a.C(globalThis)?Math.max(Math.min(ke,3),1):1;class Ee{constructor(w,B){this.workerPool=w,this.actors=[],this.currentActor=0,this.id=B;let Q=this.workerPool.acquire(B);for(let ee=0;ee{B.remove()}),this.actors=[],w&&this.workerPool.release(this.id)}registerMessageHandler(w,B){for(let Q of this.actors)Q.registerMessageHandler(w,B)}}function Ae(){return ie||(ie=new Ee(Te(),a.G),ie.registerMessageHandler("GR",(le,w,B)=>a.m(w,B))),ie}function ze(le,w){let B=a.H();return a.J(B,B,[1,1,0]),a.K(B,B,[.5*le.width,.5*le.height,1]),a.L(B,B,le.calculatePosMatrix(w.toUnwrapped()))}function Ce(le,w,B,Q,ee,se){let qe=function(Nt,hr,Sr){if(Nt)for(let he of Nt){let be=hr[he];if(be&&be.source===Sr&&be.type==="fill-extrusion")return!0}else for(let he in hr){let be=hr[he];if(be.source===Sr&&be.type==="fill-extrusion")return!0}return!1}(ee&&ee.layers,w,le.id),je=se.maxPitchScaleFactor(),it=le.tilesIn(Q,je,qe);it.sort(me);let yt=[];for(let Nt of it)yt.push({wrappedTileID:Nt.tileID.wrapped().key,queryResults:Nt.tile.queryRenderedFeatures(w,B,le._state,Nt.queryGeometry,Nt.cameraQueryGeometry,Nt.scale,ee,se,je,ze(le.transform,Nt.tileID))});let Ot=function(Nt){let hr={},Sr={};for(let he of Nt){let be=he.queryResults,Pe=he.wrappedTileID,Oe=Sr[Pe]=Sr[Pe]||{};for(let Je in be){let He=be[Je],et=Oe[Je]=Oe[Je]||{},Mt=hr[Je]=hr[Je]||[];for(let Dt of He)et[Dt.featureIndex]||(et[Dt.featureIndex]=!0,Mt.push(Dt))}}return hr}(yt);for(let Nt in Ot)Ot[Nt].forEach(hr=>{let Sr=hr.feature,he=le.getFeatureState(Sr.layer["source-layer"],Sr.id);Sr.source=Sr.layer.source,Sr.layer["source-layer"]&&(Sr.sourceLayer=Sr.layer["source-layer"]),Sr.state=he});return Ot}function me(le,w){let B=le.tileID,Q=w.tileID;return B.overscaledZ-Q.overscaledZ||B.canonical.y-Q.canonical.y||B.wrap-Q.wrap||B.canonical.x-Q.canonical.x}function Re(le,w,B){return a._(this,void 0,void 0,function*(){let Q=le;if(le.url?Q=(yield a.h(w.transformRequest(le.url,"Source"),B)).data:yield u.frameAsync(B),!Q)return null;let ee=a.M(a.e(Q,le),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in Q&&Q.vector_layers&&(ee.vectorLayerIds=Q.vector_layers.map(se=>se.id)),ee})}class ce{constructor(w,B){w&&(B?this.setSouthWest(w).setNorthEast(B):Array.isArray(w)&&(w.length===4?this.setSouthWest([w[0],w[1]]).setNorthEast([w[2],w[3]]):this.setSouthWest(w[0]).setNorthEast(w[1])))}setNorthEast(w){return this._ne=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}setSouthWest(w){return this._sw=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}extend(w){let B=this._sw,Q=this._ne,ee,se;if(w instanceof a.N)ee=w,se=w;else{if(!(w instanceof ce))return Array.isArray(w)?w.length===4||w.every(Array.isArray)?this.extend(ce.convert(w)):this.extend(a.N.convert(w)):w&&("lng"in w||"lon"in w)&&"lat"in w?this.extend(a.N.convert(w)):this;if(ee=w._sw,se=w._ne,!ee||!se)return this}return B||Q?(B.lng=Math.min(ee.lng,B.lng),B.lat=Math.min(ee.lat,B.lat),Q.lng=Math.max(se.lng,Q.lng),Q.lat=Math.max(se.lat,Q.lat)):(this._sw=new a.N(ee.lng,ee.lat),this._ne=new a.N(se.lng,se.lat)),this}getCenter(){return new a.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.N(this.getWest(),this.getNorth())}getSouthEast(){return new a.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(w){let{lng:B,lat:Q}=a.N.convert(w),ee=this._sw.lng<=B&&B<=this._ne.lng;return this._sw.lng>this._ne.lng&&(ee=this._sw.lng>=B&&B>=this._ne.lng),this._sw.lat<=Q&&Q<=this._ne.lat&&ee}static convert(w){return w instanceof ce?w:w&&new ce(w)}static fromLngLat(w,B=0){let Q=360*B/40075017,ee=Q/Math.cos(Math.PI/180*w.lat);return new ce(new a.N(w.lng-ee,w.lat-Q),new a.N(w.lng+ee,w.lat+Q))}adjustAntiMeridian(){let w=new a.N(this._sw.lng,this._sw.lat),B=new a.N(this._ne.lng,this._ne.lat);return new ce(w,w.lng>B.lng?new a.N(B.lng+360,B.lat):B)}}class Ge{constructor(w,B,Q){this.bounds=ce.convert(this.validateBounds(w)),this.minzoom=B||0,this.maxzoom=Q||24}validateBounds(w){return Array.isArray(w)&&w.length===4?[Math.max(-180,w[0]),Math.max(-90,w[1]),Math.min(180,w[2]),Math.min(90,w[3])]:[-180,-90,180,90]}contains(w){let B=Math.pow(2,w.z),Q=Math.floor(a.O(this.bounds.getWest())*B),ee=Math.floor(a.Q(this.bounds.getNorth())*B),se=Math.ceil(a.O(this.bounds.getEast())*B),qe=Math.ceil(a.Q(this.bounds.getSouth())*B);return w.x>=Q&&w.x=ee&&w.y{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return a.e({},this._options)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q={request:this.map._requestManager.transformRequest(B,"Tile"),uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,tileSize:this.tileSize*w.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};Q.request.collectResourceTiming=this._collectResourceTiming;let ee="RT";if(w.actor&&w.state!=="expired"){if(w.state==="loading")return new Promise((se,qe)=>{w.reloadPromise={resolve:se,reject:qe}})}else w.actor=this.dispatcher.getActor(),ee="LT";w.abortController=new AbortController;try{let se=yield w.actor.sendAsync({type:ee,data:Q},w.abortController);if(delete w.abortController,w.aborted)return;this._afterTileLoadWorkerResponse(w,se)}catch(se){if(delete w.abortController,w.aborted)return;if(se&&se.status!==404)throw se;this._afterTileLoadWorkerResponse(w,null)}})}_afterTileLoadWorkerResponse(w,B){if(B&&B.resourceTiming&&(w.resourceTiming=B.resourceTiming),B&&this.map._refreshExpiredTiles&&w.setExpiryData(B),w.loadVectorData(B,this.map.painter),w.reloadPromise){let Q=w.reloadPromise;w.reloadPromise=null,this.loadTile(w).then(Q.resolve).catch(Q.reject)}}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.actor&&(yield w.actor.sendAsync({type:"AT",data:{uid:w.uid,type:this.type,source:this.id}}))})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),w.actor&&(yield w.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class ct extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.setEventedParent(ee),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.e({type:"raster"},B),a.e(this,a.M(B,["url","scheme","tileSize"]))}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let w=yield Re(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,w&&(a.e(this,w),w.bounds&&(this.tileBounds=new Ge(w.bounds,this.minzoom,this.maxzoom)),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})))}catch(w){this._tileJSONRequest=null,this.fire(new a.j(w))}})}loaded(){return this._loaded}onAdd(w){this.map=w,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(w){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),w(),this.load()}setTiles(w){return this.setSourceProperty(()=>{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}serialize(){return a.e({},this._options)}hasTile(w){return!this.tileBounds||this.tileBounds.contains(w.canonical)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);w.abortController=new AbortController;try{let Q=yield p.getImage(this.map._requestManager.transformRequest(B,"Tile"),w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(Q&&Q.data){this.map._refreshExpiredTiles&&Q.cacheControl&&Q.expires&&w.setExpiryData({cacheControl:Q.cacheControl,expires:Q.expires});let ee=this.map.painter.context,se=ee.gl,qe=Q.data;w.texture=this.map.painter.getTileTexture(qe.width),w.texture?w.texture.update(qe,{useMipmap:!0}):(w.texture=new g(ee,qe,se.RGBA,{useMipmap:!0}),w.texture.bind(se.LINEAR,se.CLAMP_TO_EDGE,se.LINEAR_MIPMAP_NEAREST)),w.state="loaded"}}catch(Q){if(delete w.abortController,w.aborted)w.state="unloaded";else if(Q)throw w.state="errored",Q}})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController)})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.texture&&this.map.painter.saveTileTexture(w.texture)})}hasTransition(){return!1}}class qt extends ct{constructor(w,B,Q,ee){super(w,B,Q,ee),this.type="raster-dem",this.maxzoom=22,this._options=a.e({type:"raster-dem"},B),this.encoding=B.encoding||"mapbox",this.redFactor=B.redFactor,this.greenFactor=B.greenFactor,this.blueFactor=B.blueFactor,this.baseShift=B.baseShift}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q=this.map._requestManager.transformRequest(B,"Tile");w.neighboringTiles=this._getNeighboringTiles(w.tileID),w.abortController=new AbortController;try{let ee=yield p.getImage(Q,w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(ee&&ee.data){let se=ee.data;this.map._refreshExpiredTiles&&ee.cacheControl&&ee.expires&&w.setExpiryData({cacheControl:ee.cacheControl,expires:ee.expires});let qe=a.b(se)&&a.U()?se:yield this.readImageNow(se),je={type:this.type,uid:w.uid,source:this.id,rawImageData:qe,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!w.actor||w.state==="expired"){w.actor=this.dispatcher.getActor();let it=yield w.actor.sendAsync({type:"LDT",data:je});w.dem=it,w.needsHillshadePrepare=!0,w.needsTerrainPrepare=!0,w.state="loaded"}}}catch(ee){if(delete w.abortController,w.aborted)w.state="unloaded";else if(ee)throw w.state="errored",ee}})}readImageNow(w){return a._(this,void 0,void 0,function*(){if(typeof VideoFrame!="undefined"&&a.V()){let B=w.width+2,Q=w.height+2;try{return new a.R({width:B,height:Q},yield a.W(w,-1,-1,B,Q))}catch(ee){}}return u.getImageData(w,1)})}_getNeighboringTiles(w){let B=w.canonical,Q=Math.pow(2,B.z),ee=(B.x-1+Q)%Q,se=B.x===0?w.wrap-1:w.wrap,qe=(B.x+1+Q)%Q,je=B.x+1===Q?w.wrap+1:w.wrap,it={};return it[new a.S(w.overscaledZ,se,B.z,ee,B.y).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y).key]={backfilled:!1},B.y>0&&(it[new a.S(w.overscaledZ,se,B.z,ee,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,w.wrap,B.z,B.x,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y-1).key]={backfilled:!1}),B.y+10&&a.e(se,{resourceTiming:ee}),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"metadata"}))),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"content"})))}catch(Q){if(this._pendingLoads--,this._removed)return void this.fire(new a.k("dataabort",{dataType:"source"}));this.fire(new a.j(Q))}})}loaded(){return this._pendingLoads===0}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.actor?"RT":"LT";w.actor=this.actor;let Q={type:this.type,uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};w.abortController=new AbortController;let ee=yield this.actor.sendAsync({type:B,data:Q},w.abortController);delete w.abortController,w.unloadVectorData(),w.aborted||w.loadVectorData(ee,this.map.painter,B==="RT")})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.aborted=!0})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return a.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var ot=a.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Rt extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.coordinates=B.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ee),this.options=B}load(w){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let B=yield p.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,B&&B.data&&(this.image=B.data,w&&(this.coordinates=w),this._finishLoading())}catch(B){this._request=null,this._loaded=!0,this.fire(new a.j(B))}})}loaded(){return this._loaded}updateImage(w){return w.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=w.url,this.load(w.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(w){this.map=w,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(w){this.coordinates=w;let B=w.map(a.Z.fromLngLat);this.tileID=function(ee){let se=1/0,qe=1/0,je=-1/0,it=-1/0;for(let hr of ee)se=Math.min(se,hr.x),qe=Math.min(qe,hr.y),je=Math.max(je,hr.x),it=Math.max(it,hr.y);let yt=Math.max(je-se,it-qe),Ot=Math.max(0,Math.floor(-Math.log(yt)/Math.LN2)),Nt=Math.pow(2,Ot);return new a.a1(Ot,Math.floor((se+je)/2*Nt),Math.floor((qe+it)/2*Nt))}(B),this.minzoom=this.maxzoom=this.tileID.z;let Q=B.map(ee=>this.tileID.getTilePoint(ee)._round());return this._boundsArray=new a.$,this._boundsArray.emplaceBack(Q[0].x,Q[0].y,0,0),this._boundsArray.emplaceBack(Q[1].x,Q[1].y,a.X,0),this._boundsArray.emplaceBack(Q[3].x,Q[3].y,0,a.X),this._boundsArray.emplaceBack(Q[2].x,Q[2].y,a.X,a.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new g(w,this.image,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(w){return a._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(w.tileID.canonical)?(this.tiles[String(w.tileID.wrap)]=w,w.buckets={}):w.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class kt extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),this.roundZoom=!0,this.type="video",this.options=B}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1;let w=this.options;this.urls=[];for(let B of w.urls)this.urls.push(this.map._requestManager.transformRequest(B,"Source").url);try{let B=yield a.a3(this.urls);if(this._loaded=!0,!B)return;this.video=B,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(B){this.fire(new a.j(B))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(w){if(this.video){let B=this.video.seekable;wB.end(0)?this.fire(new a.j(new a.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${B.start(0)} and ${B.end(0)}-second mark.`))):this.video.currentTime=w}}getVideo(){return this.video}onAdd(w){this.map||(this.map=w,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE),B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.video)):(this.texture=new g(w,this.video,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ct extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),B.coordinates?Array.isArray(B.coordinates)&&B.coordinates.length===4&&!B.coordinates.some(se=>!Array.isArray(se)||se.length!==2||se.some(qe=>typeof qe!="number"))||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "coordinates"'))),B.animate&&typeof B.animate!="boolean"&&this.fire(new a.j(new a.a2(`sources.${w}`,null,'optional "animate" property must be a boolean value'))),B.canvas?typeof B.canvas=="string"||B.canvas instanceof HTMLCanvasElement||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "canvas"'))),this.options=B,this.animate=B.animate===void 0||B.animate}load(){return a._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(w){this.map=w,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let w=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,w=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,w=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let B=this.map.painter.context,Q=B.gl;this.boundsBuffer||(this.boundsBuffer=B.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?(w||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new g(B,this.canvas,Q.RGBA,{premultiply:!0});let ee=!1;for(let se in this.tiles){let qe=this.tiles[se];qe.state!=="loaded"&&(qe.state="loaded",qe.texture=this.texture,ee=!0)}ee&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let w of[this.canvas.width,this.canvas.height])if(isNaN(w)||w<=0)return!0;return!1}}let Yt={},xr=le=>{switch(le){case"geojson":return rt;case"image":return Rt;case"raster":return ct;case"raster-dem":return qt;case"vector":return nt;case"video":return kt;case"canvas":return Ct}return Yt[le]},er="RTLPluginLoaded";class Ke extends a.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Ae()}_syncState(w){return this.status=w,this.dispatcher.broadcast("SRPS",{pluginStatus:w,pluginURL:this.url}).catch(B=>{throw this.status="error",B})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(w){return a._(this,arguments,void 0,function*(B,Q=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=u.resolveURL(B),!this.url)throw new Error(`requested url ${B} is invalid`);if(this.status==="unavailable"){if(!Q)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return a._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new a.k(er))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let xt=null;function bt(){return xt||(xt=new Ke),xt}class Lt{constructor(w,B){this.timeAdded=0,this.fadeEndTime=0,this.tileID=w,this.uid=a.a4(),this.uses=0,this.tileSize=B,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(w){let B=w+this.timeAdded;Bse.getLayer(yt)).filter(Boolean);if(it.length!==0){je.layers=it,je.stateDependentLayerIds&&(je.stateDependentLayers=je.stateDependentLayerIds.map(yt=>it.filter(Ot=>Ot.id===yt)[0]));for(let yt of it)qe[yt.id]=je}}return qe}(w.buckets,B.style),this.hasSymbolBuckets=!1;for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6){if(this.hasSymbolBuckets=!0,!Q)break;se.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6&&se.hasRTLText){this.hasRTLText=!0,bt().lazyLoad();break}}this.queryPadding=0;for(let ee in this.buckets){let se=this.buckets[ee];this.queryPadding=Math.max(this.queryPadding,B.style.getLayer(ee).queryRadius(se))}w.imageAtlas&&(this.imageAtlas=w.imageAtlas),w.glyphAtlasImage&&(this.glyphAtlasImage=w.glyphAtlasImage)}else this.collisionBoxArray=new a.a5}unloadVectorData(){for(let w in this.buckets)this.buckets[w].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(w){return this.buckets[w.id]}upload(w){for(let Q in this.buckets){let ee=this.buckets[Q];ee.uploadPending()&&ee.upload(w)}let B=w.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new g(w,this.imageAtlas.image,B.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new g(w,this.glyphAtlasImage,B.ALPHA),this.glyphAtlasImage=null)}prepare(w){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(w,this.imageAtlasTexture)}queryRenderedFeatures(w,B,Q,ee,se,qe,je,it,yt,Ot){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:ee,cameraQueryGeometry:se,scale:qe,tileSize:this.tileSize,pixelPosMatrix:Ot,transform:it,params:je,queryPadding:this.queryPadding*yt},w,B,Q):{}}querySourceFeatures(w,B){let Q=this.latestFeatureIndex;if(!Q||!Q.rawTileData)return;let ee=Q.loadVTLayers(),se=B&&B.sourceLayer?B.sourceLayer:"",qe=ee._geojsonTileLayer||ee[se];if(!qe)return;let je=a.a7(B&&B.filter),{z:it,x:yt,y:Ot}=this.tileID.canonical,Nt={z:it,x:yt,y:Ot};for(let hr=0;hrQ)ee=!1;else if(B)if(this.expirationTime{this.remove(w,se)},Q)),this.data[ee].push(se),this.order.push(ee),this.order.length>this.max){let qe=this._getAndRemoveByKey(this.order[0]);qe&&this.onRemove(qe)}return this}has(w){return w.wrapped().key in this.data}getAndRemove(w){return this.has(w)?this._getAndRemoveByKey(w.wrapped().key):null}_getAndRemoveByKey(w){let B=this.data[w].shift();return B.timeout&&clearTimeout(B.timeout),this.data[w].length===0&&delete this.data[w],this.order.splice(this.order.indexOf(w),1),B.value}getByKey(w){let B=this.data[w];return B?B[0].value:null}get(w){return this.has(w)?this.data[w.wrapped().key][0].value:null}remove(w,B){if(!this.has(w))return this;let Q=w.wrapped().key,ee=B===void 0?0:this.data[Q].indexOf(B),se=this.data[Q][ee];return this.data[Q].splice(ee,1),se.timeout&&clearTimeout(se.timeout),this.data[Q].length===0&&delete this.data[Q],this.onRemove(se.value),this.order.splice(this.order.indexOf(Q),1),this}setMaxSize(w){for(this.max=w;this.order.length>this.max;){let B=this._getAndRemoveByKey(this.order[0]);B&&this.onRemove(B)}return this}filter(w){let B=[];for(let Q in this.data)for(let ee of this.data[Q])w(ee.value)||B.push(ee);for(let Q of B)this.remove(Q.value.tileID,Q)}}class Et{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(w,B,Q){let ee=String(B);if(this.stateChanges[w]=this.stateChanges[w]||{},this.stateChanges[w][ee]=this.stateChanges[w][ee]||{},a.e(this.stateChanges[w][ee],Q),this.deletedStates[w]===null){this.deletedStates[w]={};for(let se in this.state[w])se!==ee&&(this.deletedStates[w][se]=null)}else if(this.deletedStates[w]&&this.deletedStates[w][ee]===null){this.deletedStates[w][ee]={};for(let se in this.state[w][ee])Q[se]||(this.deletedStates[w][ee][se]=null)}else for(let se in Q)this.deletedStates[w]&&this.deletedStates[w][ee]&&this.deletedStates[w][ee][se]===null&&delete this.deletedStates[w][ee][se]}removeFeatureState(w,B,Q){if(this.deletedStates[w]===null)return;let ee=String(B);if(this.deletedStates[w]=this.deletedStates[w]||{},Q&&B!==void 0)this.deletedStates[w][ee]!==null&&(this.deletedStates[w][ee]=this.deletedStates[w][ee]||{},this.deletedStates[w][ee][Q]=null);else if(B!==void 0)if(this.stateChanges[w]&&this.stateChanges[w][ee])for(Q in this.deletedStates[w][ee]={},this.stateChanges[w][ee])this.deletedStates[w][ee][Q]=null;else this.deletedStates[w][ee]=null;else this.deletedStates[w]=null}getState(w,B){let Q=String(B),ee=a.e({},(this.state[w]||{})[Q],(this.stateChanges[w]||{})[Q]);if(this.deletedStates[w]===null)return{};if(this.deletedStates[w]){let se=this.deletedStates[w][B];if(se===null)return{};for(let qe in se)delete ee[qe]}return ee}initializeTileState(w,B){w.setFeatureState(this.state,B)}coalesceChanges(w,B){let Q={};for(let ee in this.stateChanges){this.state[ee]=this.state[ee]||{};let se={};for(let qe in this.stateChanges[ee])this.state[ee][qe]||(this.state[ee][qe]={}),a.e(this.state[ee][qe],this.stateChanges[ee][qe]),se[qe]=this.state[ee][qe];Q[ee]=se}for(let ee in this.deletedStates){this.state[ee]=this.state[ee]||{};let se={};if(this.deletedStates[ee]===null)for(let qe in this.state[ee])se[qe]={},this.state[ee][qe]={};else for(let qe in this.deletedStates[ee]){if(this.deletedStates[ee][qe]===null)this.state[ee][qe]={};else for(let je of Object.keys(this.deletedStates[ee][qe]))delete this.state[ee][qe][je];se[qe]=this.state[ee][qe]}Q[ee]=Q[ee]||{},a.e(Q[ee],se)}if(this.stateChanges={},this.deletedStates={},Object.keys(Q).length!==0)for(let ee in w)w[ee].setFeatureState(Q,B)}}class dt extends a.E{constructor(w,B,Q){super(),this.id=w,this.dispatcher=Q,this.on("data",ee=>this._dataHandler(ee)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((ee,se,qe,je)=>{let it=new(xr(se.type))(ee,se,qe,je);if(it.id!==ee)throw new Error(`Expected Source id to be ${ee} instead of ${it.id}`);return it})(w,B,Q,this),this._tiles={},this._cache=new St(0,ee=>this._unloadTile(ee)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Et,this._didEmitContent=!1,this._updated=!1}onAdd(w){this.map=w,this._maxTileCacheSize=w?w._maxTileCacheSize:null,this._maxTileCacheZoomLevels=w?w._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(w)}onRemove(w){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(w)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let w in this._tiles){let B=this._tiles[w];if(B.state!=="loaded"&&B.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let w=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,w&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(w,B,Q){return a._(this,void 0,void 0,function*(){try{yield this._source.loadTile(w),this._tileLoaded(w,B,Q)}catch(ee){w.state="errored",ee.status!==404?this._source.fire(new a.j(ee,{tile:w})):this.update(this.transform,this.terrain)}})}_unloadTile(w){this._source.unloadTile&&this._source.unloadTile(w)}_abortTile(w){this._source.abortTile&&this._source.abortTile(w),this._source.fire(new a.k("dataabort",{tile:w,coord:w.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(w){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let B in this._tiles){let Q=this._tiles[B];Q.upload(w),Q.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(w=>w.tileID).sort(Ht).map(w=>w.key)}getRenderableIds(w){let B=[];for(let Q in this._tiles)this._isIdRenderable(Q,w)&&B.push(this._tiles[Q]);return w?B.sort((Q,ee)=>{let se=Q.tileID,qe=ee.tileID,je=new a.P(se.canonical.x,se.canonical.y)._rotate(this.transform.angle),it=new a.P(qe.canonical.x,qe.canonical.y)._rotate(this.transform.angle);return se.overscaledZ-qe.overscaledZ||it.y-je.y||it.x-je.x}).map(Q=>Q.tileID.key):B.map(Q=>Q.tileID).sort(Ht).map(Q=>Q.key)}hasRenderableParent(w){let B=this.findLoadedParent(w,0);return!!B&&this._isIdRenderable(B.tileID.key)}_isIdRenderable(w,B){return this._tiles[w]&&this._tiles[w].hasData()&&!this._coveredTiles[w]&&(B||!this._tiles[w].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let w in this._tiles)this._tiles[w].state!=="errored"&&this._reloadTile(w,"reloading")}}_reloadTile(w,B){return a._(this,void 0,void 0,function*(){let Q=this._tiles[w];Q&&(Q.state!=="loading"&&(Q.state=B),yield this._loadTile(Q,w,B))})}_tileLoaded(w,B,Q){w.timeAdded=u.now(),Q==="expired"&&(w.refreshedUponExpiration=!0),this._setTileReloadTimer(B,w),this.getSource().type==="raster-dem"&&w.dem&&this._backfillDEM(w),this._state.initializeTileState(w,this.map?this.map.painter:null),w.aborted||this._source.fire(new a.k("data",{dataType:"source",tile:w,coord:w.tileID}))}_backfillDEM(w){let B=this.getRenderableIds();for(let ee=0;ee1||(Math.abs(qe)>1&&(Math.abs(qe+it)===1?qe+=it:Math.abs(qe-it)===1&&(qe-=it)),se.dem&&ee.dem&&(ee.dem.backfillBorder(se.dem,qe,je),ee.neighboringTiles&&ee.neighboringTiles[yt]&&(ee.neighboringTiles[yt].backfilled=!0)))}}getTile(w){return this.getTileByID(w.key)}getTileByID(w){return this._tiles[w]}_retainLoadedChildren(w,B,Q,ee){for(let se in this._tiles){let qe=this._tiles[se];if(ee[se]||!qe.hasData()||qe.tileID.overscaledZ<=B||qe.tileID.overscaledZ>Q)continue;let je=qe.tileID;for(;qe&&qe.tileID.overscaledZ>B+1;){let yt=qe.tileID.scaledTo(qe.tileID.overscaledZ-1);qe=this._tiles[yt.key],qe&&qe.hasData()&&(je=yt)}let it=je;for(;it.overscaledZ>B;)if(it=it.scaledTo(it.overscaledZ-1),w[it.key]){ee[je.key]=je;break}}}findLoadedParent(w,B){if(w.key in this._loadedParentTiles){let Q=this._loadedParentTiles[w.key];return Q&&Q.tileID.overscaledZ>=B?Q:null}for(let Q=w.overscaledZ-1;Q>=B;Q--){let ee=w.scaledTo(Q),se=this._getLoadedTile(ee);if(se)return se}}findLoadedSibling(w){return this._getLoadedTile(w)}_getLoadedTile(w){let B=this._tiles[w.key];return B&&B.hasData()?B:this._cache.getByKey(w.wrapped().key)}updateCacheSize(w){let B=Math.ceil(w.width/this._source.tileSize)+1,Q=Math.ceil(w.height/this._source.tileSize)+1,ee=Math.floor(B*Q*(this._maxTileCacheZoomLevels===null?a.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),se=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,ee):ee;this._cache.setMaxSize(se)}handleWrapJump(w){let B=Math.round((w-(this._prevLng===void 0?w:this._prevLng))/360);if(this._prevLng=w,B){let Q={};for(let ee in this._tiles){let se=this._tiles[ee];se.tileID=se.tileID.unwrapTo(se.tileID.wrap+B),Q[se.tileID.key]=se}this._tiles=Q;for(let ee in this._timers)clearTimeout(this._timers[ee]),delete this._timers[ee];for(let ee in this._tiles)this._setTileReloadTimer(ee,this._tiles[ee])}}_updateCoveredAndRetainedTiles(w,B,Q,ee,se,qe){let je={},it={},yt=Object.keys(w),Ot=u.now();for(let Nt of yt){let hr=w[Nt],Sr=this._tiles[Nt];if(!Sr||Sr.fadeEndTime!==0&&Sr.fadeEndTime<=Ot)continue;let he=this.findLoadedParent(hr,B),be=this.findLoadedSibling(hr),Pe=he||be||null;Pe&&(this._addTile(Pe.tileID),je[Pe.tileID.key]=Pe.tileID),it[Nt]=hr}this._retainLoadedChildren(it,ee,Q,w);for(let Nt in je)w[Nt]||(this._coveredTiles[Nt]=!0,w[Nt]=je[Nt]);if(qe){let Nt={},hr={};for(let Sr of se)this._tiles[Sr.key].hasData()?Nt[Sr.key]=Sr:hr[Sr.key]=Sr;for(let Sr in hr){let he=hr[Sr].children(this._source.maxzoom);this._tiles[he[0].key]&&this._tiles[he[1].key]&&this._tiles[he[2].key]&&this._tiles[he[3].key]&&(Nt[he[0].key]=w[he[0].key]=he[0],Nt[he[1].key]=w[he[1].key]=he[1],Nt[he[2].key]=w[he[2].key]=he[2],Nt[he[3].key]=w[he[3].key]=he[3],delete hr[Sr])}for(let Sr in hr){let he=hr[Sr],be=this.findLoadedParent(he,this._source.minzoom),Pe=this.findLoadedSibling(he),Oe=be||Pe||null;if(Oe){Nt[Oe.tileID.key]=w[Oe.tileID.key]=Oe.tileID;for(let Je in Nt)Nt[Je].isChildOf(Oe.tileID)&&delete Nt[Je]}}for(let Sr in this._tiles)Nt[Sr]||(this._coveredTiles[Sr]=!0)}}update(w,B){if(!this._sourceLoaded||this._paused)return;let Q;this.transform=w,this.terrain=B,this.updateCacheSize(w),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?Q=w.getVisibleUnwrappedCoordinates(this._source.tileID).map(Ot=>new a.S(Ot.canonical.z,Ot.wrap,Ot.canonical.z,Ot.canonical.x,Ot.canonical.y)):(Q=w.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:B}),this._source.hasTile&&(Q=Q.filter(Ot=>this._source.hasTile(Ot)))):Q=[];let ee=w.coveringZoomLevel(this._source),se=Math.max(ee-dt.maxOverzooming,this._source.minzoom),qe=Math.max(ee+dt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Ot={};for(let Nt of Q)if(Nt.canonical.z>this._source.minzoom){let hr=Nt.scaledTo(Nt.canonical.z-1);Ot[hr.key]=hr;let Sr=Nt.scaledTo(Math.max(this._source.minzoom,Math.min(Nt.canonical.z,5)));Ot[Sr.key]=Sr}Q=Q.concat(Object.values(Ot))}let je=Q.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,je&&this.fire(new a.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let it=this._updateRetainedTiles(Q,ee);$t(this._source.type)&&this._updateCoveredAndRetainedTiles(it,se,qe,ee,Q,B);for(let Ot in it)this._tiles[Ot].clearFadeHold();let yt=a.ab(this._tiles,it);for(let Ot of yt){let Nt=this._tiles[Ot];Nt.hasSymbolBuckets&&!Nt.holdingForFade()?Nt.setHoldDuration(this.map._fadeDuration):Nt.hasSymbolBuckets&&!Nt.symbolFadeFinished()||this._removeTile(Ot)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let w in this._tiles)this._tiles[w].holdingForFade()&&this._removeTile(w)}_updateRetainedTiles(w,B){var Q;let ee={},se={},qe=Math.max(B-dt.maxOverzooming,this._source.minzoom),je=Math.max(B+dt.maxUnderzooming,this._source.minzoom),it={};for(let yt of w){let Ot=this._addTile(yt);ee[yt.key]=yt,Ot.hasData()||Bthis._source.maxzoom){let hr=yt.children(this._source.maxzoom)[0],Sr=this.getTile(hr);if(Sr&&Sr.hasData()){ee[hr.key]=hr;continue}}else{let hr=yt.children(this._source.maxzoom);if(ee[hr[0].key]&&ee[hr[1].key]&&ee[hr[2].key]&&ee[hr[3].key])continue}let Nt=Ot.wasRequested();for(let hr=yt.overscaledZ-1;hr>=qe;--hr){let Sr=yt.scaledTo(hr);if(se[Sr.key])break;if(se[Sr.key]=!0,Ot=this.getTile(Sr),!Ot&&Nt&&(Ot=this._addTile(Sr)),Ot){let he=Ot.hasData();if((he||!(!((Q=this.map)===null||Q===void 0)&&Q.cancelPendingTileRequestsWhileZooming)||Nt)&&(ee[Sr.key]=Sr),Nt=Ot.wasRequested(),he)break}}}return ee}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let w in this._tiles){let B=[],Q,ee=this._tiles[w].tileID;for(;ee.overscaledZ>0;){if(ee.key in this._loadedParentTiles){Q=this._loadedParentTiles[ee.key];break}B.push(ee.key);let se=ee.scaledTo(ee.overscaledZ-1);if(Q=this._getLoadedTile(se),Q)break;ee=se}for(let se of B)this._loadedParentTiles[se]=Q}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let w in this._tiles){let B=this._tiles[w].tileID,Q=this._getLoadedTile(B);this._loadedSiblingTiles[B.key]=Q}}_addTile(w){let B=this._tiles[w.key];if(B)return B;B=this._cache.getAndRemove(w),B&&(this._setTileReloadTimer(w.key,B),B.tileID=w,this._state.initializeTileState(B,this.map?this.map.painter:null),this._cacheTimers[w.key]&&(clearTimeout(this._cacheTimers[w.key]),delete this._cacheTimers[w.key],this._setTileReloadTimer(w.key,B)));let Q=B;return B||(B=new Lt(w,this._source.tileSize*w.overscaleFactor()),this._loadTile(B,w.key,B.state)),B.uses++,this._tiles[w.key]=B,Q||this._source.fire(new a.k("dataloading",{tile:B,coord:B.tileID,dataType:"source"})),B}_setTileReloadTimer(w,B){w in this._timers&&(clearTimeout(this._timers[w]),delete this._timers[w]);let Q=B.getExpiryTimeout();Q&&(this._timers[w]=setTimeout(()=>{this._reloadTile(w,"expired"),delete this._timers[w]},Q))}_removeTile(w){let B=this._tiles[w];B&&(B.uses--,delete this._tiles[w],this._timers[w]&&(clearTimeout(this._timers[w]),delete this._timers[w]),B.uses>0||(B.hasData()&&B.state!=="reloading"?this._cache.add(B.tileID,B,B.getExpiryTimeout()):(B.aborted=!0,this._abortTile(B),this._unloadTile(B))))}_dataHandler(w){let B=w.sourceDataType;w.dataType==="source"&&B==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&w.dataType==="source"&&B==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let w in this._tiles)this._removeTile(w);this._cache.reset()}tilesIn(w,B,Q){let ee=[],se=this.transform;if(!se)return ee;let qe=Q?se.getCameraQueryGeometry(w):w,je=w.map(he=>se.pointCoordinate(he,this.terrain)),it=qe.map(he=>se.pointCoordinate(he,this.terrain)),yt=this.getIds(),Ot=1/0,Nt=1/0,hr=-1/0,Sr=-1/0;for(let he of it)Ot=Math.min(Ot,he.x),Nt=Math.min(Nt,he.y),hr=Math.max(hr,he.x),Sr=Math.max(Sr,he.y);for(let he=0;he=0&&He[1].y+Je>=0){let et=je.map(Dt=>Pe.getTilePoint(Dt)),Mt=it.map(Dt=>Pe.getTilePoint(Dt));ee.push({tile:be,tileID:Pe,queryGeometry:et,cameraQueryGeometry:Mt,scale:Oe})}}return ee}getVisibleCoordinates(w){let B=this.getRenderableIds(w).map(Q=>this._tiles[Q].tileID);for(let Q of B)Q.posMatrix=this.transform.calculatePosMatrix(Q.toUnwrapped());return B}hasTransition(){if(this._source.hasTransition())return!0;if($t(this._source.type)){let w=u.now();for(let B in this._tiles)if(this._tiles[B].fadeEndTime>=w)return!0}return!1}setFeatureState(w,B,Q){this._state.updateState(w=w||"_geojsonTileLayer",B,Q)}removeFeatureState(w,B,Q){this._state.removeFeatureState(w=w||"_geojsonTileLayer",B,Q)}getFeatureState(w,B){return this._state.getState(w=w||"_geojsonTileLayer",B)}setDependencies(w,B,Q){let ee=this._tiles[w];ee&&ee.setDependencies(B,Q)}reloadTilesForDependencies(w,B){for(let Q in this._tiles)this._tiles[Q].hasDependency(w,B)&&this._reloadTile(Q,"reloading");this._cache.filter(Q=>!Q.hasDependency(w,B))}}function Ht(le,w){let B=Math.abs(2*le.wrap)-+(le.wrap<0),Q=Math.abs(2*w.wrap)-+(w.wrap<0);return le.overscaledZ-w.overscaledZ||Q-B||w.canonical.y-le.canonical.y||w.canonical.x-le.canonical.x}function $t(le){return le==="raster"||le==="image"||le==="video"}dt.maxOverzooming=10,dt.maxUnderzooming=3;class fr{constructor(w,B){this.reset(w,B)}reset(w,B){this.points=w||[],this._distances=[0];for(let Q=1;Q0?(ee-qe)/je:0;return this.points[se].mult(1-it).add(this.points[B].mult(it))}}function _r(le,w){let B=!0;return le==="always"||le!=="never"&&w!=="never"||(B=!1),B}class Br{constructor(w,B,Q){let ee=this.boxCells=[],se=this.circleCells=[];this.xCellCount=Math.ceil(w/Q),this.yCellCount=Math.ceil(B/Q);for(let qe=0;qethis.width||ee<0||B>this.height)return[];let it=[];if(w<=0&&B<=0&&this.width<=Q&&this.height<=ee){if(se)return[{key:null,x1:w,y1:B,x2:Q,y2:ee}];for(let yt=0;yt0}hitTestCircle(w,B,Q,ee,se){let qe=w-Q,je=w+Q,it=B-Q,yt=B+Q;if(je<0||qe>this.width||yt<0||it>this.height)return!1;let Ot=[];return this._forEachCell(qe,it,je,yt,this._queryCellCircle,Ot,{hitTest:!0,overlapMode:ee,circle:{x:w,y:B,radius:Q},seenUids:{box:{},circle:{}}},se),Ot.length>0}_queryCell(w,B,Q,ee,se,qe,je,it){let{seenUids:yt,hitTest:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!yt.box[be]){yt.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(w<=he[Pe+2]&&B<=he[Pe+3]&&Q>=he[Pe+0]&&ee>=he[Pe+1]&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))&&(qe.push({key:Oe,x1:he[Pe],y1:he[Pe+1],x2:he[Pe+2],y2:he[Pe+3]}),Ot))return!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!yt.circle[be]){yt.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circleAndRectCollide(he[Pe],he[Pe+1],he[Pe+2],w,B,Q,ee)&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))){let Je=he[Pe],He=he[Pe+1],et=he[Pe+2];if(qe.push({key:Oe,x1:Je-et,y1:He-et,x2:Je+et,y2:He+et}),Ot)return!0}}}return!1}_queryCellCircle(w,B,Q,ee,se,qe,je,it){let{circle:yt,seenUids:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!Ot.box[be]){Ot.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(this._circleAndRectCollide(yt.x,yt.y,yt.radius,he[Pe+0],he[Pe+1],he[Pe+2],he[Pe+3])&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!Ot.circle[be]){Ot.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circlesCollide(he[Pe],he[Pe+1],he[Pe+2],yt.x,yt.y,yt.radius)&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}}_forEachCell(w,B,Q,ee,se,qe,je,it){let yt=this._convertToXCellCoord(w),Ot=this._convertToYCellCoord(B),Nt=this._convertToXCellCoord(Q),hr=this._convertToYCellCoord(ee);for(let Sr=yt;Sr<=Nt;Sr++)for(let he=Ot;he<=hr;he++)if(se.call(this,w,B,Q,ee,this.xCellCount*he+Sr,qe,je,it))return}_convertToXCellCoord(w){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(w*this.xScale)))}_convertToYCellCoord(w){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(w*this.yScale)))}_circlesCollide(w,B,Q,ee,se,qe){let je=ee-w,it=se-B,yt=Q+qe;return yt*yt>je*je+it*it}_circleAndRectCollide(w,B,Q,ee,se,qe,je){let it=(qe-ee)/2,yt=Math.abs(w-(ee+it));if(yt>it+Q)return!1;let Ot=(je-se)/2,Nt=Math.abs(B-(se+Ot));if(Nt>Ot+Q)return!1;if(yt<=it||Nt<=Ot)return!0;let hr=yt-it,Sr=Nt-Ot;return hr*hr+Sr*Sr<=Q*Q}}function Or(le,w,B,Q,ee){let se=a.H();return w?(a.K(se,se,[1/ee,1/ee,1]),B||a.ad(se,se,Q.angle)):a.L(se,Q.labelPlaneMatrix,le),se}function Nr(le,w,B,Q,ee){if(w){let se=a.ae(le);return a.K(se,se,[ee,ee,1]),B||a.ad(se,se,-Q.angle),se}return Q.glCoordMatrix}function ut(le,w,B,Q){let ee;Q?(ee=[le,w,Q(le,w),1],a.af(ee,ee,B)):(ee=[le,w,0,1],jr(ee,ee,B));let se=ee[3];return{point:new a.P(ee[0]/se,ee[1]/se),signedDistanceFromCamera:se,isOccluded:!1}}function Ne(le,w){return .5+le/w*.5}function Ye(le,w){return le.x>=-w[0]&&le.x<=w[0]&&le.y>=-w[1]&&le.y<=w[1]}function Ve(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he){let be=Q?le.textSizeData:le.iconSizeData,Pe=a.ag(be,B.transform.zoom),Oe=[256/B.width*2+1,256/B.height*2+1],Je=Q?le.text.dynamicLayoutVertexArray:le.icon.dynamicLayoutVertexArray;Je.clear();let He=le.lineVertexArray,et=Q?le.text.placedSymbolArray:le.icon.placedSymbolArray,Mt=B.transform.width/B.transform.height,Dt=!1;for(let Ut=0;UtMath.abs(B.x-w.x)*Q?{useVertical:!0}:(le===a.ah.vertical?w.yB.x)?{needsFlipping:!0}:null}function Le(le,w,B,Q,ee,se,qe,je,it,yt,Ot){let Nt=B/24,hr=w.lineOffsetX*Nt,Sr=w.lineOffsetY*Nt,he;if(w.numGlyphs>1){let be=w.glyphStartIndex+w.numGlyphs,Pe=w.lineStartIndex,Oe=w.lineStartIndex+w.lineLength,Je=Xe(Nt,je,hr,Sr,Q,w,Ot,le);if(!Je)return{notEnoughRoom:!0};let He=ut(Je.first.point.x,Je.first.point.y,qe,le.getElevation).point,et=ut(Je.last.point.x,Je.last.point.y,qe,le.getElevation).point;if(ee&&!Q){let Mt=ht(w.writingMode,He,et,yt);if(Mt)return Mt}he=[Je.first];for(let Mt=w.glyphStartIndex+1;Mt0?He.point:function(Dt,Ut,tr,mr,Rr,zr){return xe(Dt,Ut,tr,1,Rr,zr)}(le.tileAnchorPoint,Je,Pe,0,se,le),Mt=ht(w.writingMode,Pe,et,yt);if(Mt)return Mt}let be=ar(Nt*je.getoffsetX(w.glyphStartIndex),hr,Sr,Q,w.segment,w.lineStartIndex,w.lineStartIndex+w.lineLength,le,Ot);if(!be||le.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};he=[be]}for(let be of he)a.aj(it,be.point,be.angle);return{}}function xe(le,w,B,Q,ee,se){let qe=le.add(le.sub(w)._unit()),je=ee!==void 0?ut(qe.x,qe.y,ee,se.getElevation).point:lt(qe.x,qe.y,se).point,it=B.sub(je);return B.add(it._mult(Q/it.mag()))}function Se(le,w,B){let Q=w.projectionCache;if(Q.projections[le])return Q.projections[le];let ee=new a.P(w.lineVertexArray.getx(le),w.lineVertexArray.gety(le)),se=lt(ee.x,ee.y,w);if(se.signedDistanceFromCamera>0)return Q.projections[le]=se.point,Q.anyProjectionOccluded=Q.anyProjectionOccluded||se.isOccluded,se.point;let qe=le-B.direction;return function(je,it,yt,Ot,Nt){return xe(je,it,yt,Ot,void 0,Nt)}(B.distanceFromAnchor===0?w.tileAnchorPoint:new a.P(w.lineVertexArray.getx(qe),w.lineVertexArray.gety(qe)),ee,B.previousVertex,B.absOffsetX-B.distanceFromAnchor+1,w)}function lt(le,w,B){let Q=le+B.translation[0],ee=w+B.translation[1],se;return!B.pitchWithMap&&B.projection.useSpecialProjectionForSymbols?(se=B.projection.projectTileCoordinates(Q,ee,B.unwrappedTileID,B.getElevation),se.point.x=(.5*se.point.x+.5)*B.width,se.point.y=(.5*-se.point.y+.5)*B.height):(se=ut(Q,ee,B.labelPlaneMatrix,B.getElevation),se.isOccluded=!1),se}function Gt(le,w,B){return le._unit()._perp()._mult(w*B)}function Vt(le,w,B,Q,ee,se,qe,je,it){if(je.projectionCache.offsets[le])return je.projectionCache.offsets[le];let yt=B.add(w);if(le+it.direction=ee)return je.projectionCache.offsets[le]=yt,yt;let Ot=Se(le+it.direction,je,it),Nt=Gt(Ot.sub(B),qe,it.direction),hr=B.add(Nt),Sr=Ot.add(Nt);return je.projectionCache.offsets[le]=a.ak(se,yt,hr,Sr)||yt,je.projectionCache.offsets[le]}function ar(le,w,B,Q,ee,se,qe,je,it){let yt=Q?le-w:le+w,Ot=yt>0?1:-1,Nt=0;Q&&(Ot*=-1,Nt=Math.PI),Ot<0&&(Nt+=Math.PI);let hr,Sr=Ot>0?se+ee:se+ee+1;je.projectionCache.cachedAnchorPoint?hr=je.projectionCache.cachedAnchorPoint:(hr=lt(je.tileAnchorPoint.x,je.tileAnchorPoint.y,je).point,je.projectionCache.cachedAnchorPoint=hr);let he,be,Pe=hr,Oe=hr,Je=0,He=0,et=Math.abs(yt),Mt=[],Dt;for(;Je+He<=et;){if(Sr+=Ot,Sr=qe)return null;Je+=He,Oe=Pe,be=he;let mr={absOffsetX:et,direction:Ot,distanceFromAnchor:Je,previousVertex:Oe};if(Pe=Se(Sr,je,mr),B===0)Mt.push(Oe),Dt=Pe.sub(Oe);else{let Rr,zr=Pe.sub(Oe);Rr=zr.mag()===0?Gt(Se(Sr+Ot,je,mr).sub(Pe),B,Ot):Gt(zr,B,Ot),be||(be=Oe.add(Rr)),he=Vt(Sr,Rr,Pe,se,qe,be,B,je,mr),Mt.push(be),Dt=he.sub(be)}He=Dt.mag()}let Ut=Dt._mult((et-Je)/He)._add(be||Oe),tr=Nt+Math.atan2(Pe.y-Oe.y,Pe.x-Oe.x);return Mt.push(Ut),{point:Ut,angle:it?tr:0,path:Mt}}let Qr=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ai(le,w){for(let B=0;B=1;ea--)Qi.push(Li.path[ea]);for(let ea=1;eaGa.signedDistanceFromCamera<=0)?[]:ea.map(Ga=>Ga.point)}let pa=[];if(Qi.length>0){let ea=Qi[0].clone(),Ga=Qi[0].clone();for(let To=1;To=zr.x&&Ga.x<=Xr.x&&ea.y>=zr.y&&Ga.y<=Xr.y?[Qi]:Ga.xXr.x||Ga.yXr.y?[]:a.al([Qi],zr.x,zr.y,Xr.x,Xr.y)}for(let ea of pa){di.reset(ea,.25*Rr);let Ga=0;Ga=di.length<=.5*Rr?1:Math.ceil(di.paddedLength/Mn)+1;for(let To=0;Tout(ee.x,ee.y,Q,B.getElevation))}queryRenderedSymbols(w){if(w.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let B=[],Q=1/0,ee=1/0,se=-1/0,qe=-1/0;for(let Ot of w){let Nt=new a.P(Ot.x+ri,Ot.y+ri);Q=Math.min(Q,Nt.x),ee=Math.min(ee,Nt.y),se=Math.max(se,Nt.x),qe=Math.max(qe,Nt.y),B.push(Nt)}let je=this.grid.query(Q,ee,se,qe).concat(this.ignoredGrid.query(Q,ee,se,qe)),it={},yt={};for(let Ot of je){let Nt=Ot.key;if(it[Nt.bucketInstanceId]===void 0&&(it[Nt.bucketInstanceId]={}),it[Nt.bucketInstanceId][Nt.featureIndex])continue;let hr=[new a.P(Ot.x1,Ot.y1),new a.P(Ot.x2,Ot.y1),new a.P(Ot.x2,Ot.y2),new a.P(Ot.x1,Ot.y2)];a.am(B,hr)&&(it[Nt.bucketInstanceId][Nt.featureIndex]=!0,yt[Nt.bucketInstanceId]===void 0&&(yt[Nt.bucketInstanceId]=[]),yt[Nt.bucketInstanceId].push(Nt.featureIndex))}return yt}insertCollisionBox(w,B,Q,ee,se,qe){(Q?this.ignoredGrid:this.grid).insert({bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B},w[0],w[1],w[2],w[3])}insertCollisionCircles(w,B,Q,ee,se,qe){let je=Q?this.ignoredGrid:this.grid,it={bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B};for(let yt=0;yt=this.screenRightBoundary||eethis.screenBottomBoundary}isInsideGrid(w,B,Q,ee){return Q>=0&&w=0&&Bthis.projectAndGetPerspectiveRatio(Q,Rr.x,Rr.y,ee,yt));tr=mr.some(Rr=>!Rr.isOccluded),Ut=mr.map(Rr=>Rr.point)}else tr=!0;return{box:a.ao(Ut),allPointsOccluded:!tr}}}function nn(le,w,B){return w*(a.X/(le.tileSize*Math.pow(2,B-le.tileID.overscaledZ)))}class Wi{constructor(w,B,Q,ee){this.opacity=w?Math.max(0,Math.min(1,w.opacity+(w.placed?B:-B))):ee&&Q?1:0,this.placed=Q}isHidden(){return this.opacity===0&&!this.placed}}class Ni{constructor(w,B,Q,ee,se){this.text=new Wi(w?w.text:null,B,Q,se),this.icon=new Wi(w?w.icon:null,B,ee,se)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class _n{constructor(w,B,Q){this.text=w,this.icon=B,this.skipFade=Q}}class $i{constructor(){this.invProjMatrix=a.H(),this.viewportMatrix=a.H(),this.circles=[]}}class zn{constructor(w,B,Q,ee,se){this.bucketInstanceId=w,this.featureIndex=B,this.sourceLayerIndex=Q,this.bucketIndex=ee,this.tileID=se}}class Wn{constructor(w){this.crossSourceCollisions=w,this.maxGroupID=0,this.collisionGroups={}}get(w){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[w]){let B=++this.maxGroupID;this.collisionGroups[w]={ID:B,predicate:Q=>Q.collisionGroupID===B}}return this.collisionGroups[w]}}function It(le,w,B,Q,ee){let{horizontalAlign:se,verticalAlign:qe}=a.au(le);return new a.P(-(se-.5)*w+Q[0]*ee,-(qe-.5)*B+Q[1]*ee)}class ft{constructor(w,B,Q,ee,se,qe){this.transform=w.clone(),this.terrain=Q,this.collisionIndex=new bi(this.transform,B),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=ee,this.retainedQueryData={},this.collisionGroups=new Wn(se),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=qe,qe&&(qe.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(w){let B=this.terrain;return B?(Q,ee)=>B.getElevation(w,Q,ee):null}getBucketParts(w,B,Q,ee){let se=Q.getBucket(B),qe=Q.latestFeatureIndex;if(!se||!qe||B.id!==se.layerIds[0])return;let je=Q.collisionBoxArray,it=se.layers[0].layout,yt=se.layers[0].paint,Ot=Math.pow(2,this.transform.zoom-Q.tileID.overscaledZ),Nt=Q.tileSize/a.X,hr=Q.tileID.toUnwrapped(),Sr=this.transform.calculatePosMatrix(hr),he=it.get("text-pitch-alignment")==="map",be=it.get("text-rotation-alignment")==="map",Pe=nn(Q,1,this.transform.zoom),Oe=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("text-translate"),yt.get("text-translate-anchor")),Je=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("icon-translate"),yt.get("icon-translate-anchor")),He=Or(Sr,he,be,this.transform,Pe),et=null;if(he){let Dt=Nr(Sr,he,be,this.transform,Pe);et=a.L([],this.transform.labelPlaneMatrix,Dt)}this.retainedQueryData[se.bucketInstanceId]=new zn(se.bucketInstanceId,qe,se.sourceLayerIndex,se.index,Q.tileID);let Mt={bucket:se,layout:it,translationText:Oe,translationIcon:Je,posMatrix:Sr,unwrappedTileID:hr,textLabelPlaneMatrix:He,labelToScreenMatrix:et,scale:Ot,textPixelRatio:Nt,holdingForFade:Q.holdingForFade(),collisionBoxArray:je,partiallyEvaluatedTextSize:a.ag(se.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(se.sourceID)};if(ee)for(let Dt of se.sortKeyRanges){let{sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr}=Dt;w.push({sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr,parameters:Mt})}else w.push({symbolInstanceStart:0,symbolInstanceEnd:se.symbolInstances.length,parameters:Mt})}attemptAnchorPlacement(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je,He){let et=a.aq[w.textAnchor],Mt=[w.textOffset0,w.textOffset1],Dt=It(et,Q,ee,Mt,se),Ut=this.collisionIndex.placeCollisionBox(B,hr,it,yt,Ot,je,qe,Pe,Nt.predicate,He,Dt);if((!Je||this.collisionIndex.placeCollisionBox(Je,hr,it,yt,Ot,je,qe,Oe,Nt.predicate,He,Dt).placeable)&&Ut.placeable){let tr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID].text&&(tr=this.prevPlacement.variableOffsets[Sr.crossTileID].anchor),Sr.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[Sr.crossTileID]={textOffset:Mt,width:Q,height:ee,anchor:et,textBoxScale:se,prevAnchor:tr},this.markUsedJustification(he,et,Sr,be),he.allowVerticalPlacement&&(this.markUsedOrientation(he,be,Sr),this.placedOrientations[Sr.crossTileID]=be),{shift:Dt,placedGlyphBoxes:Ut}}}placeLayerBucketPart(w,B,Q){let{bucket:ee,layout:se,translationText:qe,translationIcon:je,posMatrix:it,unwrappedTileID:yt,textLabelPlaneMatrix:Ot,labelToScreenMatrix:Nt,textPixelRatio:hr,holdingForFade:Sr,collisionBoxArray:he,partiallyEvaluatedTextSize:be,collisionGroup:Pe}=w.parameters,Oe=se.get("text-optional"),Je=se.get("icon-optional"),He=a.ar(se,"text-overlap","text-allow-overlap"),et=He==="always",Mt=a.ar(se,"icon-overlap","icon-allow-overlap"),Dt=Mt==="always",Ut=se.get("text-rotation-alignment")==="map",tr=se.get("text-pitch-alignment")==="map",mr=se.get("icon-text-fit")!=="none",Rr=se.get("symbol-z-order")==="viewport-y",zr=et&&(Dt||!ee.hasIconData()||Je),Xr=Dt&&(et||!ee.hasTextData()||Oe);!ee.collisionArrays&&he&&ee.deserializeCollisionBoxes(he);let di=this._getTerrainElevationFunc(this.retainedQueryData[ee.bucketInstanceId].tileID),Li=(Ci,Qi,Mn)=>{var pa,ea;if(B[Ci.crossTileID])return;if(Sr)return void(this.placements[Ci.crossTileID]=new _n(!1,!1,!1));let Ga=!1,To=!1,Wa=!0,co=null,Ro={box:null,placeable:!1,offscreen:null},Ds={box:null,placeable:!1,offscreen:null},As=null,yo=null,po=null,_l=0,Hl=0,Zu=0;Qi.textFeatureIndex?_l=Qi.textFeatureIndex:Ci.useRuntimeCollisionCircles&&(_l=Ci.featureIndex),Qi.verticalTextFeatureIndex&&(Hl=Qi.verticalTextFeatureIndex);let cu=Qi.textBox;if(cu){let zl=we=>{let Be=a.ah.horizontal;if(ee.allowVerticalPlacement&&!we&&this.prevPlacement){let Ue=this.prevPlacement.placedOrientations[Ci.crossTileID];Ue&&(this.placedOrientations[Ci.crossTileID]=Ue,Be=Ue,this.markUsedOrientation(ee,Be,Ci))}return Be},Fl=(we,Be)=>{if(ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Qi.verticalTextBox){for(let Ue of ee.writingModes)if(Ue===a.ah.vertical?(Ro=Be(),Ds=Ro):Ro=we(),Ro&&Ro.placeable)break}else Ro=we()},Z=Ci.textAnchorOffsetStartIndex,oe=Ci.textAnchorOffsetEndIndex;if(oe===Z){let we=(Be,Ue)=>{let We=this.collisionIndex.placeCollisionBox(Be,He,hr,it,yt,tr,Ut,qe,Pe.predicate,di);return We&&We.placeable&&(this.markUsedOrientation(ee,Ue,Ci),this.placedOrientations[Ci.crossTileID]=Ue),We};Fl(()=>we(cu,a.ah.horizontal),()=>{let Be=Qi.verticalTextBox;return ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Be?we(Be,a.ah.vertical):{box:null,offscreen:null}}),zl(Ro&&Ro.placeable)}else{let we=a.aq[(ea=(pa=this.prevPlacement)===null||pa===void 0?void 0:pa.variableOffsets[Ci.crossTileID])===null||ea===void 0?void 0:ea.anchor],Be=(We,wt,tt)=>{let zt=We.x2-We.x1,or=We.y2-We.y1,lr=Ci.textBoxScale,Dr=mr&&Mt==="never"?wt:null,Ir=null,oi=He==="never"?1:2,ui="never";we&&oi++;for(let qr=0;qrBe(cu,Qi.iconBox,a.ah.horizontal),()=>{let We=Qi.verticalTextBox;return ee.allowVerticalPlacement&&(!Ro||!Ro.placeable)&&Ci.numVerticalGlyphVertices>0&&We?Be(We,Qi.verticalIconBox,a.ah.vertical):{box:null,occluded:!0,offscreen:null}}),Ro&&(Ga=Ro.placeable,Wa=Ro.offscreen);let Ue=zl(Ro&&Ro.placeable);if(!Ga&&this.prevPlacement){let We=this.prevPlacement.variableOffsets[Ci.crossTileID];We&&(this.variableOffsets[Ci.crossTileID]=We,this.markUsedJustification(ee,We.anchor,Ci,Ue))}}}if(As=Ro,Ga=As&&As.placeable,Wa=As&&As.offscreen,Ci.useRuntimeCollisionCircles){let zl=ee.text.placedSymbolArray.get(Ci.centerJustifiedTextSymbolIndex),Fl=a.ai(ee.textSizeData,be,zl),Z=se.get("text-padding");yo=this.collisionIndex.placeCollisionCircles(He,zl,ee.lineVertexArray,ee.glyphOffsetArray,Fl,it,yt,Ot,Nt,Q,tr,Pe.predicate,Ci.collisionCircleDiameter,Z,qe,di),yo.circles.length&&yo.collisionDetected&&!Q&&a.w("Collisions detected, but collision boxes are not shown"),Ga=et||yo.circles.length>0&&!yo.collisionDetected,Wa=Wa&&yo.offscreen}if(Qi.iconFeatureIndex&&(Zu=Qi.iconFeatureIndex),Qi.iconBox){let zl=Fl=>this.collisionIndex.placeCollisionBox(Fl,Mt,hr,it,yt,tr,Ut,je,Pe.predicate,di,mr&&co?co:void 0);Ds&&Ds.placeable&&Qi.verticalIconBox?(po=zl(Qi.verticalIconBox),To=po.placeable):(po=zl(Qi.iconBox),To=po.placeable),Wa=Wa&&po.offscreen}let el=Oe||Ci.numHorizontalGlyphVertices===0&&Ci.numVerticalGlyphVertices===0,au=Je||Ci.numIconVertices===0;el||au?au?el||(To=To&&Ga):Ga=To&&Ga:To=Ga=To&&Ga;let zc=To&&po.placeable;if(Ga&&As.placeable&&this.collisionIndex.insertCollisionBox(As.box,He,se.get("text-ignore-placement"),ee.bucketInstanceId,Ds&&Ds.placeable&&Hl?Hl:_l,Pe.ID),zc&&this.collisionIndex.insertCollisionBox(po.box,Mt,se.get("icon-ignore-placement"),ee.bucketInstanceId,Zu,Pe.ID),yo&&Ga&&this.collisionIndex.insertCollisionCircles(yo.circles,He,se.get("text-ignore-placement"),ee.bucketInstanceId,_l,Pe.ID),Q&&this.storeCollisionData(ee.bucketInstanceId,Mn,Qi,As,po,yo),Ci.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(ee.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ci.crossTileID]=new _n(Ga||zr,To||Xr,Wa||ee.justReloaded),B[Ci.crossTileID]=!0};if(Rr){if(w.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let Ci=ee.getSortedSymbolIndexes(this.transform.angle);for(let Qi=Ci.length-1;Qi>=0;--Qi){let Mn=Ci[Qi];Li(ee.symbolInstances.get(Mn),ee.collisionArrays[Mn],Mn)}}else for(let Ci=w.symbolInstanceStart;Ci=0&&(w.text.placedSymbolArray.get(je).crossTileID=se>=0&&je!==se?0:Q.crossTileID)}markUsedOrientation(w,B,Q){let ee=B===a.ah.horizontal||B===a.ah.horizontalOnly?B:0,se=B===a.ah.vertical?B:0,qe=[Q.leftJustifiedTextSymbolIndex,Q.centerJustifiedTextSymbolIndex,Q.rightJustifiedTextSymbolIndex];for(let je of qe)w.text.placedSymbolArray.get(je).placedOrientation=ee;Q.verticalPlacedTextSymbolIndex&&(w.text.placedSymbolArray.get(Q.verticalPlacedTextSymbolIndex).placedOrientation=se)}commit(w){this.commitTime=w,this.zoomAtLastRecencyCheck=this.transform.zoom;let B=this.prevPlacement,Q=!1;this.prevZoomAdjustment=B?B.zoomAdjustment(this.transform.zoom):0;let ee=B?B.symbolFadeChange(w):1,se=B?B.opacities:{},qe=B?B.variableOffsets:{},je=B?B.placedOrientations:{};for(let it in this.placements){let yt=this.placements[it],Ot=se[it];Ot?(this.opacities[it]=new Ni(Ot,ee,yt.text,yt.icon),Q=Q||yt.text!==Ot.text.placed||yt.icon!==Ot.icon.placed):(this.opacities[it]=new Ni(null,ee,yt.text,yt.icon,yt.skipFade),Q=Q||yt.text||yt.icon)}for(let it in se){let yt=se[it];if(!this.opacities[it]){let Ot=new Ni(yt,ee,!1,!1);Ot.isHidden()||(this.opacities[it]=Ot,Q=Q||yt.text.placed||yt.icon.placed)}}for(let it in qe)this.variableOffsets[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.variableOffsets[it]=qe[it]);for(let it in je)this.placedOrientations[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.placedOrientations[it]=je[it]);if(B&&B.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");Q?this.lastPlacementChangeTime=w:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=B?B.lastPlacementChangeTime:w)}updateLayerOpacities(w,B){let Q={};for(let ee of B){let se=ee.getBucket(w);se&&ee.latestFeatureIndex&&w.id===se.layerIds[0]&&this.updateBucketOpacities(se,ee.tileID,Q,ee.collisionBoxArray)}}updateBucketOpacities(w,B,Q,ee){w.hasTextData()&&(w.text.opacityVertexArray.clear(),w.text.hasVisibleVertices=!1),w.hasIconData()&&(w.icon.opacityVertexArray.clear(),w.icon.hasVisibleVertices=!1),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexArray.clear(),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexArray.clear();let se=w.layers[0],qe=se.layout,je=new Ni(null,0,!1,!1,!0),it=qe.get("text-allow-overlap"),yt=qe.get("icon-allow-overlap"),Ot=se._unevaluatedLayout.hasValue("text-variable-anchor")||se._unevaluatedLayout.hasValue("text-variable-anchor-offset"),Nt=qe.get("text-rotation-alignment")==="map",hr=qe.get("text-pitch-alignment")==="map",Sr=qe.get("icon-text-fit")!=="none",he=new Ni(null,0,it&&(yt||!w.hasIconData()||qe.get("icon-optional")),yt&&(it||!w.hasTextData()||qe.get("text-optional")),!0);!w.collisionArrays&&ee&&(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData())&&w.deserializeCollisionBoxes(ee);let be=(Oe,Je,He)=>{for(let et=0;et0,tr=this.placedOrientations[Je.crossTileID],mr=tr===a.ah.vertical,Rr=tr===a.ah.horizontal||tr===a.ah.horizontalOnly;if(He>0||et>0){let Xr=Mi(Dt.text);be(w.text,He,mr?Pi:Xr),be(w.text,et,Rr?Pi:Xr);let di=Dt.text.isHidden();[Je.rightJustifiedTextSymbolIndex,Je.centerJustifiedTextSymbolIndex,Je.leftJustifiedTextSymbolIndex].forEach(Qi=>{Qi>=0&&(w.text.placedSymbolArray.get(Qi).hidden=di||mr?1:0)}),Je.verticalPlacedTextSymbolIndex>=0&&(w.text.placedSymbolArray.get(Je.verticalPlacedTextSymbolIndex).hidden=di||Rr?1:0);let Li=this.variableOffsets[Je.crossTileID];Li&&this.markUsedJustification(w,Li.anchor,Je,tr);let Ci=this.placedOrientations[Je.crossTileID];Ci&&(this.markUsedJustification(w,"left",Je,Ci),this.markUsedOrientation(w,Ci,Je))}if(Ut){let Xr=Mi(Dt.icon),di=!(Sr&&Je.verticalPlacedIconSymbolIndex&&mr);Je.placedIconSymbolIndex>=0&&(be(w.icon,Je.numIconVertices,di?Xr:Pi),w.icon.placedSymbolArray.get(Je.placedIconSymbolIndex).hidden=Dt.icon.isHidden()),Je.verticalPlacedIconSymbolIndex>=0&&(be(w.icon,Je.numVerticalIconVertices,di?Pi:Xr),w.icon.placedSymbolArray.get(Je.verticalPlacedIconSymbolIndex).hidden=Dt.icon.isHidden())}let zr=Pe&&Pe.has(Oe)?Pe.get(Oe):{text:null,icon:null};if(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData()){let Xr=w.collisionArrays[Oe];if(Xr){let di=new a.P(0,0);if(Xr.textBox||Xr.verticalTextBox){let Li=!0;if(Ot){let Ci=this.variableOffsets[Mt];Ci?(di=It(Ci.anchor,Ci.width,Ci.height,Ci.textOffset,Ci.textBoxScale),Nt&&di._rotate(hr?this.transform.angle:-this.transform.angle)):Li=!1}if(Xr.textBox||Xr.verticalTextBox){let Ci;Xr.textBox&&(Ci=mr),Xr.verticalTextBox&&(Ci=Rr),jt(w.textCollisionBox.collisionVertexArray,Dt.text.placed,!Li||Ci,zr.text,di.x,di.y)}}if(Xr.iconBox||Xr.verticalIconBox){let Li=!!(!Rr&&Xr.verticalIconBox),Ci;Xr.iconBox&&(Ci=Li),Xr.verticalIconBox&&(Ci=!Li),jt(w.iconCollisionBox.collisionVertexArray,Dt.icon.placed,Ci,zr.icon,Sr?di.x:0,Sr?di.y:0)}}}}if(w.sortFeatures(this.transform.angle),this.retainedQueryData[w.bucketInstanceId]&&(this.retainedQueryData[w.bucketInstanceId].featureSortOrder=w.featureSortOrder),w.hasTextData()&&w.text.opacityVertexBuffer&&w.text.opacityVertexBuffer.updateData(w.text.opacityVertexArray),w.hasIconData()&&w.icon.opacityVertexBuffer&&w.icon.opacityVertexBuffer.updateData(w.icon.opacityVertexArray),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexBuffer&&w.iconCollisionBox.collisionVertexBuffer.updateData(w.iconCollisionBox.collisionVertexArray),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexBuffer&&w.textCollisionBox.collisionVertexBuffer.updateData(w.textCollisionBox.collisionVertexArray),w.text.opacityVertexArray.length!==w.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${w.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${w.text.layoutVertexArray.length}) / 4`);if(w.icon.opacityVertexArray.length!==w.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${w.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${w.icon.layoutVertexArray.length}) / 4`);if(w.bucketInstanceId in this.collisionCircleArrays){let Oe=this.collisionCircleArrays[w.bucketInstanceId];w.placementInvProjMatrix=Oe.invProjMatrix,w.placementViewportMatrix=Oe.viewportMatrix,w.collisionCircleArray=Oe.circles,delete this.collisionCircleArrays[w.bucketInstanceId]}}symbolFadeChange(w){return this.fadeDuration===0?1:(w-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(w){return Math.max(0,(this.transform.zoom-w)/1.5)}hasTransitions(w){return this.stale||w-this.lastPlacementChangeTimew}setStale(){this.stale=!0}}function jt(le,w,B,Q,ee,se){Q&&Q.length!==0||(Q=[0,0,0,0]);let qe=Q[0]-ri,je=Q[1]-ri,it=Q[2]-ri,yt=Q[3]-ri;le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,yt),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,yt)}let Zt=Math.pow(2,25),yr=Math.pow(2,24),Fr=Math.pow(2,17),Zr=Math.pow(2,16),Vr=Math.pow(2,9),gi=Math.pow(2,8),Si=Math.pow(2,1);function Mi(le){if(le.opacity===0&&!le.placed)return 0;if(le.opacity===1&&le.placed)return 4294967295;let w=le.placed?1:0,B=Math.floor(127*le.opacity);return B*Zt+w*yr+B*Fr+w*Zr+B*Vr+w*gi+B*Si+w}let Pi=0;function Gi(){return{isOccluded:(le,w,B)=>!1,getPitchedTextCorrection:(le,w,B)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(le,w,B,Q){throw new Error("Not implemented.")},translatePosition:(le,w,B,Q)=>function(ee,se,qe,je,it=!1){if(!qe[0]&&!qe[1])return[0,0];let yt=it?je==="map"?ee.angle:0:je==="viewport"?-ee.angle:0;if(yt){let Ot=Math.sin(yt),Nt=Math.cos(yt);qe=[qe[0]*Nt-qe[1]*Ot,qe[0]*Ot+qe[1]*Nt]}return[it?qe[0]:nn(se,qe[0],ee.zoom),it?qe[1]:nn(se,qe[1],ee.zoom)]}(le,w,B,Q),getCircleRadiusCorrection:le=>1}}class Ki{constructor(w){this._sortAcrossTiles=w.layout.get("symbol-z-order")!=="viewport-y"&&!w.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(w,B,Q,ee,se){let qe=this._bucketParts;for(;this._currentTileIndexje.sortKey-it.sortKey));this._currentPartIndex!this._forceFullPlacement&&u.now()-ee>2;for(;this._currentPlacementIndex>=0;){let qe=B[w[this._currentPlacementIndex]],je=this.placement.collisionIndex.transform.zoom;if(qe.type==="symbol"&&(!qe.minzoom||qe.minzoom<=je)&&(!qe.maxzoom||qe.maxzoom>je)){if(this._inProgressLayer||(this._inProgressLayer=new Ki(qe)),this._inProgressLayer.continuePlacement(Q[qe.source],this.placement,this._showCollisionBoxes,qe,se))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(w){return this.placement.commit(w),this.placement}}let jn=512/a.X/2;class la{constructor(w,B,Q){this.tileID=w,this.bucketInstanceId=Q,this._symbolsByKey={};let ee=new Map;for(let se=0;se({x:Math.floor(it.anchorX*jn),y:Math.floor(it.anchorY*jn)})),crossTileIDs:qe.map(it=>it.crossTileID)};if(je.positions.length>128){let it=new a.av(je.positions.length,16,Uint16Array);for(let{x:yt,y:Ot}of je.positions)it.add(yt,Ot);it.finish(),delete je.positions,je.index=it}this._symbolsByKey[se]=je}}getScaledCoordinates(w,B){let{x:Q,y:ee,z:se}=this.tileID.canonical,{x:qe,y:je,z:it}=B.canonical,yt=jn/Math.pow(2,it-se),Ot=(je*a.X+w.anchorY)*yt,Nt=ee*a.X*jn;return{x:Math.floor((qe*a.X+w.anchorX)*yt-Q*a.X*jn),y:Math.floor(Ot-Nt)}}findMatches(w,B,Q){let ee=this.tileID.canonical.zw)}}class Fa{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Ra{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(w){let B=Math.round((w-this.lng)/360);if(B!==0)for(let Q in this.indexes){let ee=this.indexes[Q],se={};for(let qe in ee){let je=ee[qe];je.tileID=je.tileID.unwrapTo(je.tileID.wrap+B),se[je.tileID.key]=je}this.indexes[Q]=se}this.lng=w}addBucket(w,B,Q){if(this.indexes[w.overscaledZ]&&this.indexes[w.overscaledZ][w.key]){if(this.indexes[w.overscaledZ][w.key].bucketInstanceId===B.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(w.overscaledZ,this.indexes[w.overscaledZ][w.key])}for(let se=0;sew.overscaledZ)for(let je in qe){let it=qe[je];it.tileID.isChildOf(w)&&it.findMatches(B.symbolInstances,w,ee)}else{let je=qe[w.scaledTo(Number(se)).key];je&&je.findMatches(B.symbolInstances,w,ee)}}for(let se=0;se{B[Q]=!0});for(let Q in this.layerIndexes)B[Q]||delete this.layerIndexes[Q]}}let oa=(le,w)=>a.t(le,w&&w.filter(B=>B.identifier!=="source.canvas")),Sn=a.aw();class Ha extends a.E{constructor(w,B={}){super(),this._rtlPluginLoaded=()=>{for(let Q in this.sourceCaches){let ee=this.sourceCaches[Q].getSource().type;ee!=="vector"&&ee!=="geojson"||this.sourceCaches[Q].reload()}},this.map=w,this.dispatcher=new Ee(Te(),w._getMapId()),this.dispatcher.registerMessageHandler("GG",(Q,ee)=>this.getGlyphs(Q,ee)),this.dispatcher.registerMessageHandler("GI",(Q,ee)=>this.getImages(Q,ee)),this.imageManager=new T,this.imageManager.setEventedParent(this),this.glyphManager=new H(w._requestManager,B.localIdeographFontFamily),this.lineAtlas=new ae(256,512),this.crossTileSymbolIndex=new jo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",a.ay()),bt().on(er,this._rtlPluginLoaded),this.on("data",Q=>{if(Q.dataType!=="source"||Q.sourceDataType!=="metadata")return;let ee=this.sourceCaches[Q.sourceId];if(!ee)return;let se=ee.getSource();if(se&&se.vectorLayerIds)for(let qe in this._layers){let je=this._layers[qe];je.source===se.id&&this._validateLayer(je)}})}loadURL(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),B.validate=typeof B.validate!="boolean"||B.validate;let ee=this.map._requestManager.transformRequest(w,"Style");this._loadStyleRequest=new AbortController;let se=this._loadStyleRequest;a.h(ee,this._loadStyleRequest).then(qe=>{this._loadStyleRequest=null,this._load(qe.data,B,Q)}).catch(qe=>{this._loadStyleRequest=null,qe&&!se.signal.aborted&&this.fire(new a.j(qe))})}loadJSON(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,B.validate=B.validate!==!1,this._load(w,B,Q)}).catch(()=>{})}loadEmpty(){this.fire(new a.k("dataloading",{dataType:"style"})),this._load(Sn,{validate:!1})}_load(w,B,Q){var ee;let se=B.transformStyle?B.transformStyle(Q,w):w;if(!B.validate||!oa(this,a.u(se))){this._loaded=!0,this.stylesheet=se;for(let qe in se.sources)this.addSource(qe,se.sources[qe],{validate:!1});se.sprite?this._loadSprite(se.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(se.glyphs),this._createLayers(),this.light=new N(this.stylesheet.light),this.sky=new re(this.stylesheet.sky),this.map.setTerrain((ee=this.stylesheet.terrain)!==null&&ee!==void 0?ee:null),this.fire(new a.k("data",{dataType:"style"})),this.fire(new a.k("style.load"))}}_createLayers(){let w=a.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",w),this._order=w.map(B=>B.id),this._layers={},this._serializedLayers=null;for(let B of w){let Q=a.aA(B);Q.setEventedParent(this,{layer:{id:B.id}}),this._layers[B.id]=Q}}_loadSprite(w,B=!1,Q=void 0){let ee;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(se,qe,je,it){return a._(this,void 0,void 0,function*(){let yt=C(se),Ot=je>1?"@2x":"",Nt={},hr={};for(let{id:Sr,url:he}of yt){let be=qe.transformRequest(M(he,Ot,".json"),"SpriteJSON");Nt[Sr]=a.h(be,it);let Pe=qe.transformRequest(M(he,Ot,".png"),"SpriteImage");hr[Sr]=p.getImage(Pe,it)}return yield Promise.all([...Object.values(Nt),...Object.values(hr)]),function(Sr,he){return a._(this,void 0,void 0,function*(){let be={};for(let Pe in Sr){be[Pe]={};let Oe=u.getImageCanvasContext((yield he[Pe]).data),Je=(yield Sr[Pe]).data;for(let He in Je){let{width:et,height:Mt,x:Dt,y:Ut,sdf:tr,pixelRatio:mr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li}=Je[He];be[Pe][He]={data:null,pixelRatio:mr,sdf:tr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li,spriteData:{width:et,height:Mt,x:Dt,y:Ut,context:Oe}}}}return be})}(Nt,hr)})}(w,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(se=>{if(this._spriteRequest=null,se)for(let qe in se){this._spritesImagesIds[qe]=[];let je=this._spritesImagesIds[qe]?this._spritesImagesIds[qe].filter(it=>!(it in se)):[];for(let it of je)this.imageManager.removeImage(it),this._changedImages[it]=!0;for(let it in se[qe]){let yt=qe==="default"?it:`${qe}:${it}`;this._spritesImagesIds[qe].push(yt),yt in this.imageManager.images?this.imageManager.updateImage(yt,se[qe][it],!1):this.imageManager.addImage(yt,se[qe][it]),B&&(this._changedImages[yt]=!0)}}}).catch(se=>{this._spriteRequest=null,ee=se,this.fire(new a.j(ee))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),B&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"})),Q&&Q(ee)})}_unloadSprite(){for(let w of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(w),this._changedImages[w]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}_validateLayer(w){let B=this.sourceCaches[w.source];if(!B)return;let Q=w.sourceLayer;if(!Q)return;let ee=B.getSource();(ee.type==="geojson"||ee.vectorLayerIds&&ee.vectorLayerIds.indexOf(Q)===-1)&&this.fire(new a.j(new Error(`Source layer "${Q}" does not exist on source "${ee.id}" as specified by style layer "${w.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let w in this.sourceCaches)if(!this.sourceCaches[w].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(w,B=!1){let Q=this._serializedAllLayers();if(!w||w.length===0)return Object.values(B?a.aB(Q):Q);let ee=[];for(let se of w)if(Q[se]){let qe=B?a.aB(Q[se]):Q[se];ee.push(qe)}return ee}_serializedAllLayers(){let w=this._serializedLayers;if(w)return w;w=this._serializedLayers={};let B=Object.keys(this._layers);for(let Q of B){let ee=this._layers[Q];ee.type!=="custom"&&(w[Q]=ee.serialize())}return w}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let w in this.sourceCaches)if(this.sourceCaches[w].hasTransition())return!0;for(let w in this._layers)if(this._layers[w].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(w){if(!this._loaded)return;let B=this._changed;if(B){let ee=Object.keys(this._updatedLayers),se=Object.keys(this._removedLayers);(ee.length||se.length)&&this._updateWorkerLayers(ee,se);for(let qe in this._updatedSources){let je=this._updatedSources[qe];if(je==="reload")this._reloadSource(qe);else{if(je!=="clear")throw new Error(`Invalid action ${je}`);this._clearSource(qe)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let qe in this._updatedPaintProps)this._layers[qe].updateTransitions(w);this.light.updateTransitions(w),this.sky.updateTransitions(w),this._resetUpdates()}let Q={};for(let ee in this.sourceCaches){let se=this.sourceCaches[ee];Q[ee]=se.used,se.used=!1}for(let ee of this._order){let se=this._layers[ee];se.recalculate(w,this._availableImages),!se.isHidden(w.zoom)&&se.source&&(this.sourceCaches[se.source].used=!0)}for(let ee in Q){let se=this.sourceCaches[ee];!!Q[ee]!=!!se.used&&se.fire(new a.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:ee}))}this.light.recalculate(w),this.sky.recalculate(w),this.z=w.zoom,B&&this.fire(new a.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let w=Object.keys(this._changedImages);if(w.length){for(let B in this.sourceCaches)this.sourceCaches[B].reloadTilesForDependencies(["icons","patterns"],w);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let w in this.sourceCaches)this.sourceCaches[w].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(w,B){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(w,!1),removedIds:B})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(w,B={}){var Q;this._checkLoaded();let ee=this.serialize();if(w=B.transformStyle?B.transformStyle(ee,w):w,((Q=B.validate)===null||Q===void 0||Q)&&oa(this,a.u(w)))return!1;(w=a.aB(w)).layers=a.az(w.layers);let se=a.aC(ee,w),qe=this._getOperationsToPerform(se);if(qe.unimplemented.length>0)throw new Error(`Unimplemented: ${qe.unimplemented.join(", ")}.`);if(qe.operations.length===0)return!1;for(let je of qe.operations)je();return this.stylesheet=w,this._serializedLayers=null,!0}_getOperationsToPerform(w){let B=[],Q=[];for(let ee of w)switch(ee.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":B.push(()=>this.addLayer.apply(this,ee.args));break;case"removeLayer":B.push(()=>this.removeLayer.apply(this,ee.args));break;case"setPaintProperty":B.push(()=>this.setPaintProperty.apply(this,ee.args));break;case"setLayoutProperty":B.push(()=>this.setLayoutProperty.apply(this,ee.args));break;case"setFilter":B.push(()=>this.setFilter.apply(this,ee.args));break;case"addSource":B.push(()=>this.addSource.apply(this,ee.args));break;case"removeSource":B.push(()=>this.removeSource.apply(this,ee.args));break;case"setLayerZoomRange":B.push(()=>this.setLayerZoomRange.apply(this,ee.args));break;case"setLight":B.push(()=>this.setLight.apply(this,ee.args));break;case"setGeoJSONSourceData":B.push(()=>this.setGeoJSONSourceData.apply(this,ee.args));break;case"setGlyphs":B.push(()=>this.setGlyphs.apply(this,ee.args));break;case"setSprite":B.push(()=>this.setSprite.apply(this,ee.args));break;case"setSky":B.push(()=>this.setSky.apply(this,ee.args));break;case"setTerrain":B.push(()=>this.map.setTerrain.apply(this,ee.args));break;case"setTransition":B.push(()=>{});break;default:Q.push(ee.command)}return{operations:B,unimplemented:Q}}addImage(w,B){if(this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" already exists.`)));this.imageManager.addImage(w,B),this._afterImageUpdated(w)}updateImage(w,B){this.imageManager.updateImage(w,B)}getImage(w){return this.imageManager.getImage(w)}removeImage(w){if(!this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" does not exist.`)));this.imageManager.removeImage(w),this._afterImageUpdated(w)}_afterImageUpdated(w){this._availableImages=this.imageManager.listImages(),this._changedImages[w]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(w,B,Q={}){if(this._checkLoaded(),this.sourceCaches[w]!==void 0)throw new Error(`Source "${w}" already exists.`);if(!B.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(B).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(B.type)>=0&&this._validate(a.u.source,`sources.${w}`,B,null,Q))return;this.map&&this.map._collectResourceTiming&&(B.collectResourceTiming=!0);let ee=this.sourceCaches[w]=new dt(w,B,this.dispatcher);ee.style=this,ee.setEventedParent(this,()=>({isSourceLoaded:ee.loaded(),source:ee.serialize(),sourceId:w})),ee.onAdd(this.map),this._changed=!0}removeSource(w){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error("There is no source with this ID");for(let Q in this._layers)if(this._layers[Q].source===w)return this.fire(new a.j(new Error(`Source "${w}" cannot be removed while layer "${Q}" is using it.`)));let B=this.sourceCaches[w];delete this.sourceCaches[w],delete this._updatedSources[w],B.fire(new a.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:w})),B.setEventedParent(null),B.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(w,B){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error(`There is no source with this ID=${w}`);let Q=this.sourceCaches[w].getSource();if(Q.type!=="geojson")throw new Error(`geojsonSource.type is ${Q.type}, which is !== 'geojson`);Q.setData(B),this._changed=!0}getSource(w){return this.sourceCaches[w]&&this.sourceCaches[w].getSource()}addLayer(w,B,Q={}){this._checkLoaded();let ee=w.id;if(this.getLayer(ee))return void this.fire(new a.j(new Error(`Layer "${ee}" already exists on this map.`)));let se;if(w.type==="custom"){if(oa(this,a.aD(w)))return;se=a.aA(w)}else{if("source"in w&&typeof w.source=="object"&&(this.addSource(ee,w.source),w=a.aB(w),w=a.e(w,{source:ee})),this._validate(a.u.layer,`layers.${ee}`,w,{arrayIndex:-1},Q))return;se=a.aA(w),this._validateLayer(se),se.setEventedParent(this,{layer:{id:ee}})}let qe=B?this._order.indexOf(B):this._order.length;if(B&&qe===-1)this.fire(new a.j(new Error(`Cannot add layer "${ee}" before non-existing layer "${B}".`)));else{if(this._order.splice(qe,0,ee),this._layerOrderChanged=!0,this._layers[ee]=se,this._removedLayers[ee]&&se.source&&se.type!=="custom"){let je=this._removedLayers[ee];delete this._removedLayers[ee],je.type!==se.type?this._updatedSources[se.source]="clear":(this._updatedSources[se.source]="reload",this.sourceCaches[se.source].pause())}this._updateLayer(se),se.onAdd&&se.onAdd(this.map)}}moveLayer(w,B){if(this._checkLoaded(),this._changed=!0,!this._layers[w])return void this.fire(new a.j(new Error(`The layer '${w}' does not exist in the map's style and cannot be moved.`)));if(w===B)return;let Q=this._order.indexOf(w);this._order.splice(Q,1);let ee=B?this._order.indexOf(B):this._order.length;B&&ee===-1?this.fire(new a.j(new Error(`Cannot move layer "${w}" before non-existing layer "${B}".`))):(this._order.splice(ee,0,w),this._layerOrderChanged=!0)}removeLayer(w){this._checkLoaded();let B=this._layers[w];if(!B)return void this.fire(new a.j(new Error(`Cannot remove non-existing layer "${w}".`)));B.setEventedParent(null);let Q=this._order.indexOf(w);this._order.splice(Q,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[w]=B,delete this._layers[w],this._serializedLayers&&delete this._serializedLayers[w],delete this._updatedLayers[w],delete this._updatedPaintProps[w],B.onRemove&&B.onRemove(this.map)}getLayer(w){return this._layers[w]}getLayersOrder(){return[...this._order]}hasLayer(w){return w in this._layers}setLayerZoomRange(w,B,Q){this._checkLoaded();let ee=this.getLayer(w);ee?ee.minzoom===B&&ee.maxzoom===Q||(B!=null&&(ee.minzoom=B),Q!=null&&(ee.maxzoom=Q),this._updateLayer(ee)):this.fire(new a.j(new Error(`Cannot set the zoom range of non-existing layer "${w}".`)))}setFilter(w,B,Q={}){this._checkLoaded();let ee=this.getLayer(w);if(ee){if(!a.aE(ee.filter,B))return B==null?(ee.filter=void 0,void this._updateLayer(ee)):void(this._validate(a.u.filter,`layers.${ee.id}.filter`,B,null,Q)||(ee.filter=a.aB(B),this._updateLayer(ee)))}else this.fire(new a.j(new Error(`Cannot filter non-existing layer "${w}".`)))}getFilter(w){return a.aB(this.getLayer(w).filter)}setLayoutProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getLayoutProperty(B),Q)||(se.setLayoutProperty(B,Q,ee),this._updateLayer(se)):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getLayoutProperty(w,B){let Q=this.getLayer(w);if(Q)return Q.getLayoutProperty(B);this.fire(new a.j(new Error(`Cannot get style of non-existing layer "${w}".`)))}setPaintProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getPaintProperty(B),Q)||(se.setPaintProperty(B,Q,ee)&&this._updateLayer(se),this._changed=!0,this._updatedPaintProps[w]=!0,this._serializedLayers=null):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getPaintProperty(w,B){return this.getLayer(w).getPaintProperty(B)}setFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=w.sourceLayer,se=this.sourceCaches[Q];if(se===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let qe=se.getSource().type;qe==="geojson"&&ee?this.fire(new a.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):qe!=="vector"||ee?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),se.setFeatureState(ee,w.id,B)):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=this.sourceCaches[Q];if(ee===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let se=ee.getSource().type,qe=se==="vector"?w.sourceLayer:void 0;se!=="vector"||qe?B&&typeof w.id!="string"&&typeof w.id!="number"?this.fire(new a.j(new Error("A feature id is required to remove its specific state property."))):ee.removeFeatureState(qe,w.id,B):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(w){this._checkLoaded();let B=w.source,Q=w.sourceLayer,ee=this.sourceCaches[B];if(ee!==void 0)return ee.getSource().type!=="vector"||Q?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),ee.getFeatureState(Q,w.id)):void this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.j(new Error(`The source '${B}' does not exist in the map's style.`)))}getTransition(){return a.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let w=a.aF(this.sourceCaches,se=>se.serialize()),B=this._serializeByIds(this._order,!0),Q=this.map.getTerrain()||void 0,ee=this.stylesheet;return a.aG({version:ee.version,name:ee.name,metadata:ee.metadata,light:ee.light,sky:ee.sky,center:ee.center,zoom:ee.zoom,bearing:ee.bearing,pitch:ee.pitch,sprite:ee.sprite,glyphs:ee.glyphs,transition:ee.transition,sources:w,layers:B,terrain:Q},se=>se!==void 0)}_updateLayer(w){this._updatedLayers[w.id]=!0,w.source&&!this._updatedSources[w.source]&&this.sourceCaches[w.source].getSource().type!=="raster"&&(this._updatedSources[w.source]="reload",this.sourceCaches[w.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(w){let B=qe=>this._layers[qe].type==="fill-extrusion",Q={},ee=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je)){Q[je]=qe;for(let it of w){let yt=it[je];if(yt)for(let Ot of yt)ee.push(Ot)}}}ee.sort((qe,je)=>je.intersectionZ-qe.intersectionZ);let se=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je))for(let it=ee.length-1;it>=0;it--){let yt=ee[it].feature;if(Q[yt.layer.id]{let tr=Oe.featureSortOrder;if(tr){let mr=tr.indexOf(Dt.featureIndex);return tr.indexOf(Ut.featureIndex)-mr}return Ut.featureIndex-Dt.featureIndex});for(let Dt of Mt)et.push(Dt)}}for(let Oe in he)he[Oe].forEach(Je=>{let He=Je.feature,et=yt[je[Oe].source].getFeatureState(He.layer["source-layer"],He.id);He.source=He.layer.source,He.layer["source-layer"]&&(He.sourceLayer=He.layer["source-layer"]),He.state=et});return he}(this._layers,qe,this.sourceCaches,w,B,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(se)}querySourceFeatures(w,B){B&&B.filter&&this._validate(a.u.filter,"querySourceFeatures.filter",B.filter,null,B);let Q=this.sourceCaches[w];return Q?function(ee,se){let qe=ee.getRenderableIds().map(yt=>ee.getTileByID(yt)),je=[],it={};for(let yt=0;ythr.getTileByID(Sr)).sort((Sr,he)=>he.tileID.overscaledZ-Sr.tileID.overscaledZ||(Sr.tileID.isLessThan(he.tileID)?-1:1))}let Nt=this.crossTileSymbolIndex.addLayer(Ot,it[Ot.source],w.center.lng);qe=qe||Nt}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((se=se||this._layerOrderChanged||Q===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(u.now(),w.zoom))&&(this.pauseablePlacement=new ka(w,this.map.terrain,this._order,se,B,Q,ee,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,it),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(u.now()),je=!0),qe&&this.pauseablePlacement.placement.setStale()),je||qe)for(let yt of this._order){let Ot=this._layers[yt];Ot.type==="symbol"&&this.placement.updateLayerOpacities(Ot,it[Ot.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(u.now())}_releaseSymbolFadeTiles(){for(let w in this.sourceCaches)this.sourceCaches[w].releaseSymbolFadeTiles()}getImages(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.imageManager.getImages(B.icons);this._updateTilesForChangedImages();let ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,B.icons),Q})}getGlyphs(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.glyphManager.getGlyphs(B.stacks),ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,[""]),Q})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(w,B={}){this._checkLoaded(),w&&this._validate(a.u.glyphs,"glyphs",w,null,B)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=w,this.glyphManager.entries={},this.glyphManager.setURL(w))}addSprite(w,B,Q={},ee){this._checkLoaded();let se=[{id:w,url:B}],qe=[...C(this.stylesheet.sprite),...se];this._validate(a.u.sprite,"sprite",qe,null,Q)||(this.stylesheet.sprite=qe,this._loadSprite(se,!0,ee))}removeSprite(w){this._checkLoaded();let B=C(this.stylesheet.sprite);if(B.find(Q=>Q.id===w)){if(this._spritesImagesIds[w])for(let Q of this._spritesImagesIds[w])this.imageManager.removeImage(Q),this._changedImages[Q]=!0;B.splice(B.findIndex(Q=>Q.id===w),1),this.stylesheet.sprite=B.length>0?B:void 0,delete this._spritesImagesIds[w],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}else this.fire(new a.j(new Error(`Sprite "${w}" doesn't exists on this map.`)))}getSprite(){return C(this.stylesheet.sprite)}setSprite(w,B={},Q){this._checkLoaded(),w&&this._validate(a.u.sprite,"sprite",w,null,B)||(this.stylesheet.sprite=w,w?this._loadSprite(w,!0,Q):(this._unloadSprite(),Q&&Q(null)))}}var oo=a.Y([{name:"a_pos",type:"Int16",components:2}]);let xn={prelude:_t(`#ifdef GL_ES +precision mediump float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +`,`#ifdef GL_ES +precision highp float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0 +);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;} +#ifdef TERRAIN3D +uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth; +#endif +const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) { +#ifdef TERRAIN3D +highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0)); +#else +return 1.0; +#endif +}float calculate_visibility(vec4 pos) { +#ifdef TERRAIN3D +vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0; +#else +return 1.0; +#endif +}float ele(vec2 pos) { +#ifdef TERRAIN3D +vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a; +#else +return 0.0; +#endif +}float get_elevation(vec2 pos) { +#ifdef TERRAIN3D +vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration; +#else +return 0.0; +#endif +}`),background:_t(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:_t(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:_t(`varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main(void) { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_t("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:_t(`uniform highp float u_intensity;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#define GAUSS_COEF 0.3989422804014327 +void main() { +#pragma mapbox: initialize highp float weight +float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#pragma mapbox: define mediump float radius +const highp float ZERO=1.0/255.0/16.0; +#define GAUSS_COEF 0.3989422804014327 +void main(void) { +#pragma mapbox: initialize highp float weight +#pragma mapbox: initialize mediump float radius +vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}`),heatmapTexture:_t(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(0.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:_t("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:_t("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:_t("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:_t(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_FragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_t(`varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_t(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_t(`varying vec4 v_color;void main() {gl_FragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_t(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:_t(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:_t(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),lineGradient:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),linePattern:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_t(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:_t(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_t(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_t(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_t("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:_t("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:_t("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:_t("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function _t(le,w){let B=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,Q=w.match(/attribute ([\w]+) ([\w]+)/g),ee=le.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),se=w.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),qe=se?se.concat(ee):ee,je={};return{fragmentSource:le=le.replace(B,(it,yt,Ot,Nt,hr)=>(je[hr]=!0,yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +varying ${Ot} ${Nt} ${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`)),vertexSource:w=w.replace(B,(it,yt,Ot,Nt,hr)=>{let Sr=Nt==="float"?"vec2":"vec4",he=hr.match(/color/)?"color":Sr;return je[hr]?yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +uniform lowp float u_${hr}_t; +attribute ${Ot} ${Sr} a_${hr}; +varying ${Ot} ${Nt} ${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:he==="vec4"?` +#ifndef HAS_UNIFORM_u_${hr} + ${hr} = a_${hr}; +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${hr} + ${hr} = unpack_mix_${he}(a_${hr}, u_${hr}_t); +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +uniform lowp float u_${hr}_t; +attribute ${Ot} ${Sr} a_${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:he==="vec4"?` +#ifndef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = a_${hr}; +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = unpack_mix_${he}(a_${hr}, u_${hr}_t); +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`}),staticAttributes:Q,staticUniforms:qe}}class br{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(w,B,Q,ee,se,qe,je,it,yt){this.context=w;let Ot=this.boundPaintVertexBuffers.length!==ee.length;for(let Nt=0;!Ot&&Nt({u_matrix:le,u_texture:0,u_ele_delta:w,u_fog_matrix:B,u_fog_color:Q?Q.properties.get("fog-color"):a.aM.white,u_fog_ground_blend:Q?Q.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:Q?Q.calculateFogBlendOpacity(ee):0,u_horizon_color:Q?Q.properties.get("horizon-color"):a.aM.white,u_horizon_fog_blend:Q?Q.properties.get("horizon-fog-blend"):1});function ti(le){let w=[];for(let B=0;B({u_depth:new a.aH(Dt,Ut.u_depth),u_terrain:new a.aH(Dt,Ut.u_terrain),u_terrain_dim:new a.aI(Dt,Ut.u_terrain_dim),u_terrain_matrix:new a.aJ(Dt,Ut.u_terrain_matrix),u_terrain_unpack:new a.aK(Dt,Ut.u_terrain_unpack),u_terrain_exaggeration:new a.aI(Dt,Ut.u_terrain_exaggeration)}))(w,Mt),this.binderUniforms=Q?Q.getUniforms(w,Mt):[]}draw(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je){let He=w.gl;if(this.failedToCreate)return;if(w.program.set(this.program),w.setDepthMode(Q),w.setStencilMode(ee),w.setColorMode(se),w.setCullFace(qe),it){w.activeTexture.set(He.TEXTURE2),He.bindTexture(He.TEXTURE_2D,it.depthTexture),w.activeTexture.set(He.TEXTURE3),He.bindTexture(He.TEXTURE_2D,it.texture);for(let Mt in this.terrainUniforms)this.terrainUniforms[Mt].set(it[Mt])}for(let Mt in this.fixedUniforms)this.fixedUniforms[Mt].set(je[Mt]);be&&be.setUniforms(w,this.binderUniforms,Sr,{zoom:he});let et=0;switch(B){case He.LINES:et=2;break;case He.TRIANGLES:et=3;break;case He.LINE_STRIP:et=1}for(let Mt of hr.get()){let Dt=Mt.vaos||(Mt.vaos={});(Dt[yt]||(Dt[yt]=new br)).bind(w,this,Ot,be?be.getPaintVertexBuffers():[],Nt,Mt.vertexOffset,Pe,Oe,Je),He.drawElements(B,Mt.primitiveLength*et,He.UNSIGNED_SHORT,Mt.primitiveOffset*et*2)}}}function Yi(le,w,B){let Q=1/nn(B,1,w.transform.tileZoom),ee=Math.pow(2,B.tileID.overscaledZ),se=B.tileSize*Math.pow(2,w.transform.tileZoom)/ee,qe=se*(B.tileID.canonical.x+B.tileID.wrap*ee),je=se*B.tileID.canonical.y;return{u_image:0,u_texsize:B.imageAtlasTexture.size,u_scale:[Q,le.fromScale,le.toScale],u_fade:le.t,u_pixel_coord_upper:[qe>>16,je>>16],u_pixel_coord_lower:[65535&qe,65535&je]}}let an=(le,w,B,Q)=>{let ee=w.style.light,se=ee.properties.get("position"),qe=[se.x,se.y,se.z],je=function(){var yt=new a.A(9);return a.A!=Float32Array&&(yt[1]=0,yt[2]=0,yt[3]=0,yt[5]=0,yt[6]=0,yt[7]=0),yt[0]=1,yt[4]=1,yt[8]=1,yt}();ee.properties.get("anchor")==="viewport"&&function(yt,Ot){var Nt=Math.sin(Ot),hr=Math.cos(Ot);yt[0]=hr,yt[1]=Nt,yt[2]=0,yt[3]=-Nt,yt[4]=hr,yt[5]=0,yt[6]=0,yt[7]=0,yt[8]=1}(je,-w.transform.angle),function(yt,Ot,Nt){var hr=Ot[0],Sr=Ot[1],he=Ot[2];yt[0]=hr*Nt[0]+Sr*Nt[3]+he*Nt[6],yt[1]=hr*Nt[1]+Sr*Nt[4]+he*Nt[7],yt[2]=hr*Nt[2]+Sr*Nt[5]+he*Nt[8]}(qe,qe,je);let it=ee.properties.get("color");return{u_matrix:le,u_lightpos:qe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[it.r,it.g,it.b],u_vertical_gradient:+B,u_opacity:Q}},hi=(le,w,B,Q,ee,se,qe)=>a.e(an(le,w,B,Q),Yi(se,w,qe),{u_height_factor:-Math.pow(2,ee.overscaledZ)/qe.tileSize/8}),Ji=le=>({u_matrix:le}),ua=(le,w,B,Q)=>a.e(Ji(le),Yi(B,w,Q)),Fn=(le,w)=>({u_matrix:le,u_world:w}),Sa=(le,w,B,Q,ee)=>a.e(ua(le,w,B,Q),{u_world:ee}),go=(le,w,B,Q)=>{let ee=le.transform,se,qe;if(Q.paint.get("circle-pitch-alignment")==="map"){let je=nn(B,1,ee.zoom);se=!0,qe=[je,je]}else se=!1,qe=ee.pixelsToGLUnits;return{u_camera_to_center_distance:ee.cameraToCenterDistance,u_scale_with_map:+(Q.paint.get("circle-pitch-scale")==="map"),u_matrix:le.translatePosMatrix(w.posMatrix,B,Q.paint.get("circle-translate"),Q.paint.get("circle-translate-anchor")),u_pitch_with_map:+se,u_device_pixel_ratio:le.pixelRatio,u_extrude_scale:qe}},Oo=(le,w,B)=>({u_matrix:le,u_inv_matrix:w,u_camera_to_center_distance:B.cameraToCenterDistance,u_viewport_size:[B.width,B.height]}),ho=(le,w,B=1)=>({u_matrix:le,u_color:w,u_overlay:0,u_overlay_scale:B}),Mo=le=>({u_matrix:le}),xo=(le,w,B,Q)=>({u_matrix:le,u_extrude_scale:nn(w,1,B),u_intensity:Q}),zs=(le,w,B,Q)=>{let ee=a.H();a.aP(ee,0,le.width,le.height,0,0,1);let se=le.context.gl;return{u_matrix:ee,u_world:[se.drawingBufferWidth,se.drawingBufferHeight],u_image:B,u_color_ramp:Q,u_opacity:w.paint.get("heatmap-opacity")}};function ks(le,w){let B=Math.pow(2,w.canonical.z),Q=w.canonical.y;return[new a.Z(0,Q/B).toLngLat().lat,new a.Z(0,(Q+1)/B).toLngLat().lat]}let Zs=(le,w,B,Q)=>{let ee=le.transform;return{u_matrix:Cs(le,w,B,Q),u_ratio:1/nn(w,1,ee.zoom),u_device_pixel_ratio:le.pixelRatio,u_units_to_pixels:[1/ee.pixelsToGLUnits[0],1/ee.pixelsToGLUnits[1]]}},Xs=(le,w,B,Q,ee)=>a.e(Zs(le,w,B,ee),{u_image:0,u_image_height:Q}),wl=(le,w,B,Q,ee)=>{let se=le.transform,qe=cl(w,se);return{u_matrix:Cs(le,w,B,ee),u_texsize:w.imageAtlasTexture.size,u_ratio:1/nn(w,1,se.zoom),u_device_pixel_ratio:le.pixelRatio,u_image:0,u_scale:[qe,Q.fromScale,Q.toScale],u_fade:Q.t,u_units_to_pixels:[1/se.pixelsToGLUnits[0],1/se.pixelsToGLUnits[1]]}},os=(le,w,B,Q,ee,se)=>{let qe=le.lineAtlas,je=cl(w,le.transform),it=B.layout.get("line-cap")==="round",yt=qe.getDash(Q.from,it),Ot=qe.getDash(Q.to,it),Nt=yt.width*ee.fromScale,hr=Ot.width*ee.toScale;return a.e(Zs(le,w,B,se),{u_patternscale_a:[je/Nt,-yt.height/2],u_patternscale_b:[je/hr,-Ot.height/2],u_sdfgamma:qe.width/(256*Math.min(Nt,hr)*le.pixelRatio)/2,u_image:0,u_tex_y_a:yt.y,u_tex_y_b:Ot.y,u_mix:ee.t})};function cl(le,w){return 1/nn(le,1,w.tileZoom)}function Cs(le,w,B,Q){return le.translatePosMatrix(Q?Q.posMatrix:w.tileID.posMatrix,w,B.paint.get("line-translate"),B.paint.get("line-translate-anchor"))}let ml=(le,w,B,Q,ee)=>{return{u_matrix:le,u_tl_parent:w,u_scale_parent:B,u_buffer_scale:1,u_fade_t:Q.mix,u_opacity:Q.opacity*ee.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:ee.paint.get("raster-brightness-min"),u_brightness_high:ee.paint.get("raster-brightness-max"),u_saturation_factor:(qe=ee.paint.get("raster-saturation"),qe>0?1-1/(1.001-qe):-qe),u_contrast_factor:(se=ee.paint.get("raster-contrast"),se>0?1/(1-se):1+se),u_spin_weights:Ys(ee.paint.get("raster-hue-rotate"))};var se,qe};function Ys(le){le*=Math.PI/180;let w=Math.sin(le),B=Math.cos(le);return[(2*B+1)/3,(-Math.sqrt(3)*w-B+1)/3,(Math.sqrt(3)*w-B+1)/3]}let Hs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>{let he=qe.transform;return{u_is_size_zoom_constant:+(le==="constant"||le==="source"),u_is_size_feature_constant:+(le==="constant"||le==="camera"),u_size_t:w?w.uSizeT:0,u_size:w?w.uSize:0,u_camera_to_center_distance:he.cameraToCenterDistance,u_pitch:he.pitch/360*2*Math.PI,u_rotate_symbol:+B,u_aspect_ratio:he.width/he.height,u_fade_change:qe.options.fadeDuration?qe.symbolFadeChange:1,u_matrix:je,u_label_plane_matrix:it,u_coord_matrix:yt,u_is_text:+Nt,u_pitch_with_map:+Q,u_is_along_line:ee,u_is_variable_anchor:se,u_texsize:hr,u_texture:0,u_translation:Ot,u_pitched_scale:Sr}},Eo=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he)=>{let be=qe.transform;return a.e(Hs(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,he),{u_gamma_scale:Q?Math.cos(be._pitch)*be.cameraToCenterDistance:1,u_device_pixel_ratio:qe.pixelRatio,u_is_halo:+Sr})},fs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>a.e(Eo(le,w,B,Q,ee,se,qe,je,it,yt,Ot,!0,Nt,!0,Sr),{u_texsize_icon:hr,u_texture_icon:1}),Ql=(le,w,B)=>({u_matrix:le,u_opacity:w,u_color:B}),Hu=(le,w,B,Q,ee,se)=>a.e(function(qe,je,it,yt){let Ot=it.imageManager.getPattern(qe.from.toString()),Nt=it.imageManager.getPattern(qe.to.toString()),{width:hr,height:Sr}=it.imageManager.getPixelSize(),he=Math.pow(2,yt.tileID.overscaledZ),be=yt.tileSize*Math.pow(2,it.transform.tileZoom)/he,Pe=be*(yt.tileID.canonical.x+yt.tileID.wrap*he),Oe=be*yt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Ot.tl,u_pattern_br_a:Ot.br,u_pattern_tl_b:Nt.tl,u_pattern_br_b:Nt.br,u_texsize:[hr,Sr],u_mix:je.t,u_pattern_size_a:Ot.displaySize,u_pattern_size_b:Nt.displaySize,u_scale_a:je.fromScale,u_scale_b:je.toScale,u_tile_units_to_pixels:1/nn(yt,1,it.transform.tileZoom),u_pixel_coord_upper:[Pe>>16,Oe>>16],u_pixel_coord_lower:[65535&Pe,65535&Oe]}}(Q,se,B,ee),{u_matrix:le,u_opacity:w}),fc={fillExtrusion:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_opacity:new a.aI(le,w.u_opacity)}),fillExtrusionPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_height_factor:new a.aI(le,w.u_height_factor),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade),u_opacity:new a.aI(le,w.u_opacity)}),fill:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),fillPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),fillOutline:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world)}),fillOutlinePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),circle:(le,w)=>({u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_scale_with_map:new a.aH(le,w.u_scale_with_map),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_extrude_scale:new a.aO(le,w.u_extrude_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_matrix:new a.aJ(le,w.u_matrix)}),collisionBox:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_pixel_extrude_scale:new a.aO(le,w.u_pixel_extrude_scale)}),collisionCircle:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_inv_matrix:new a.aJ(le,w.u_inv_matrix),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_viewport_size:new a.aO(le,w.u_viewport_size)}),debug:(le,w)=>({u_color:new a.aL(le,w.u_color),u_matrix:new a.aJ(le,w.u_matrix),u_overlay:new a.aH(le,w.u_overlay),u_overlay_scale:new a.aI(le,w.u_overlay_scale)}),clippingMask:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),heatmap:(le,w)=>({u_extrude_scale:new a.aI(le,w.u_extrude_scale),u_intensity:new a.aI(le,w.u_intensity),u_matrix:new a.aJ(le,w.u_matrix)}),heatmapTexture:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_color_ramp:new a.aH(le,w.u_color_ramp),u_opacity:new a.aI(le,w.u_opacity)}),hillshade:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_latrange:new a.aO(le,w.u_latrange),u_light:new a.aO(le,w.u_light),u_shadow:new a.aL(le,w.u_shadow),u_highlight:new a.aL(le,w.u_highlight),u_accent:new a.aL(le,w.u_accent)}),hillshadePrepare:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_dimension:new a.aO(le,w.u_dimension),u_zoom:new a.aI(le,w.u_zoom),u_unpack:new a.aK(le,w.u_unpack)}),line:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels)}),lineGradient:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_image:new a.aH(le,w.u_image),u_image_height:new a.aI(le,w.u_image_height)}),linePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texsize:new a.aO(le,w.u_texsize),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_image:new a.aH(le,w.u_image),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),lineSDF:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_patternscale_a:new a.aO(le,w.u_patternscale_a),u_patternscale_b:new a.aO(le,w.u_patternscale_b),u_sdfgamma:new a.aI(le,w.u_sdfgamma),u_image:new a.aH(le,w.u_image),u_tex_y_a:new a.aI(le,w.u_tex_y_a),u_tex_y_b:new a.aI(le,w.u_tex_y_b),u_mix:new a.aI(le,w.u_mix)}),raster:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_tl_parent:new a.aO(le,w.u_tl_parent),u_scale_parent:new a.aI(le,w.u_scale_parent),u_buffer_scale:new a.aI(le,w.u_buffer_scale),u_fade_t:new a.aI(le,w.u_fade_t),u_opacity:new a.aI(le,w.u_opacity),u_image0:new a.aH(le,w.u_image0),u_image1:new a.aH(le,w.u_image1),u_brightness_low:new a.aI(le,w.u_brightness_low),u_brightness_high:new a.aI(le,w.u_brightness_high),u_saturation_factor:new a.aI(le,w.u_saturation_factor),u_contrast_factor:new a.aI(le,w.u_contrast_factor),u_spin_weights:new a.aN(le,w.u_spin_weights)}),symbolIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolSDF:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolTextAndIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texsize_icon:new a.aO(le,w.u_texsize_icon),u_texture:new a.aH(le,w.u_texture),u_texture_icon:new a.aH(le,w.u_texture_icon),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),background:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_color:new a.aL(le,w.u_color)}),backgroundPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_image:new a.aH(le,w.u_image),u_pattern_tl_a:new a.aO(le,w.u_pattern_tl_a),u_pattern_br_a:new a.aO(le,w.u_pattern_br_a),u_pattern_tl_b:new a.aO(le,w.u_pattern_tl_b),u_pattern_br_b:new a.aO(le,w.u_pattern_br_b),u_texsize:new a.aO(le,w.u_texsize),u_mix:new a.aI(le,w.u_mix),u_pattern_size_a:new a.aO(le,w.u_pattern_size_a),u_pattern_size_b:new a.aO(le,w.u_pattern_size_b),u_scale_a:new a.aI(le,w.u_scale_a),u_scale_b:new a.aI(le,w.u_scale_b),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_tile_units_to_pixels:new a.aI(le,w.u_tile_units_to_pixels)}),terrain:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_ele_delta:new a.aI(le,w.u_ele_delta),u_fog_matrix:new a.aJ(le,w.u_fog_matrix),u_fog_color:new a.aL(le,w.u_fog_color),u_fog_ground_blend:new a.aI(le,w.u_fog_ground_blend),u_fog_ground_blend_opacity:new a.aI(le,w.u_fog_ground_blend_opacity),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon_fog_blend:new a.aI(le,w.u_horizon_fog_blend)}),terrainDepth:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ele_delta:new a.aI(le,w.u_ele_delta)}),terrainCoords:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_terrain_coords_id:new a.aI(le,w.u_terrain_coords_id),u_ele_delta:new a.aI(le,w.u_ele_delta)}),sky:(le,w)=>({u_sky_color:new a.aL(le,w.u_sky_color),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon:new a.aI(le,w.u_horizon),u_sky_horizon_blend:new a.aI(le,w.u_sky_horizon_blend)})};class ms{constructor(w,B,Q){this.context=w;let ee=w.gl;this.buffer=ee.createBuffer(),this.dynamicDraw=!!Q,this.context.unbindVAO(),w.bindElementBuffer.set(this.buffer),ee.bufferData(ee.ELEMENT_ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?ee.DYNAMIC_DRAW:ee.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(w){let B=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),B.bufferSubData(B.ELEMENT_ARRAY_BUFFER,0,w.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let on={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class fa{constructor(w,B,Q,ee){this.length=B.length,this.attributes=Q,this.itemSize=B.bytesPerElement,this.dynamicDraw=ee,this.context=w;let se=w.gl;this.buffer=se.createBuffer(),w.bindVertexBuffer.set(this.buffer),se.bufferData(se.ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?se.DYNAMIC_DRAW:se.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(w){if(w.length!==this.length)throw new Error(`Length of new data is ${w.length}, which doesn't match current length of ${this.length}`);let B=this.context.gl;this.bind(),B.bufferSubData(B.ARRAY_BUFFER,0,w.arrayBuffer)}enableAttributes(w,B){for(let Q=0;Q0){let Dt=a.H();a.aQ(Dt,He.placementInvProjMatrix,le.transform.glCoordMatrix),a.aQ(Dt,Dt,He.placementViewportMatrix),it.push({circleArray:Mt,circleOffset:Ot,transform:Je.posMatrix,invTransform:Dt,coord:Je}),yt+=Mt.length/4,Ot=yt}et&&je.draw(se,qe.LINES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,{u_matrix:Je.posMatrix,u_pixel_extrude_scale:[1/(Nt=le.transform).width,1/Nt.height]},le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je),B.id,et.layoutVertexBuffer,et.indexBuffer,et.segments,null,le.transform.zoom,null,null,et.collisionVertexBuffer)}var Nt;if(!ee||!it.length)return;let hr=le.useProgram("collisionCircle"),Sr=new a.aR;Sr.resize(4*yt),Sr._trim();let he=0;for(let Oe of it)for(let Je=0;Je=0&&(Oe[He.associatedIconIndex]={shiftedAnchor:Mn,angle:pa})}else ai(He.numGlyphs,be)}if(yt){Pe.clear();let Je=le.icon.placedSymbolArray;for(let He=0;Hele.style.map.terrain.getElevation(zr,tt,zt):null,wt=B.layout.get("text-rotation-alignment")==="map";Ve(di,zr.posMatrix,le,ee,Hl,cu,Oe,yt,wt,be,zr.toUnwrapped(),he.width,he.height,el,We)}let zl=zr.posMatrix,Fl=ee&&tr||zc,Z=Je||Fl?uu:Hl,oe=Zu,we=Qi&&B.paint.get(ee?"text-halo-width":"icon-halo-width").constantOr(1)!==0,Be;Be=Qi?di.iconsInText?fs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,Wa,As,Rr):Eo(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,!0,Rr):Hs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,Rr);let Ue={program:ea,buffers:Li,uniformValues:Be,atlasTexture:co,atlasTextureIcon:yo,atlasInterpolation:Ro,atlasInterpolationIcon:Ds,isSDF:Qi,hasHalo:we};if(Mt&&di.canOverlap){Dt=!0;let We=Li.segments.get();for(let wt of We)mr.push({segments:new a.a0([wt]),sortKey:wt.sortKey,state:Ue,terrainData:To})}else mr.push({segments:Li.segments,sortKey:0,state:Ue,terrainData:To})}Dt&&mr.sort((zr,Xr)=>zr.sortKey-Xr.sortKey);for(let zr of mr){let Xr=zr.state;if(hr.activeTexture.set(Sr.TEXTURE0),Xr.atlasTexture.bind(Xr.atlasInterpolation,Sr.CLAMP_TO_EDGE),Xr.atlasTextureIcon&&(hr.activeTexture.set(Sr.TEXTURE1),Xr.atlasTextureIcon&&Xr.atlasTextureIcon.bind(Xr.atlasInterpolationIcon,Sr.CLAMP_TO_EDGE)),Xr.isSDF){let di=Xr.uniformValues;Xr.hasHalo&&(di.u_is_halo=1,Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,di,zr.terrainData)),di.u_is_halo=0}Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,Xr.uniformValues,zr.terrainData)}}function Eh(le,w,B,Q,ee,se,qe,je,it,yt){let Ot=Q.context;ee.draw(Ot,Ot.gl.TRIANGLES,se,qe,je,Ja.disabled,it,yt,B.id,le.layoutVertexBuffer,le.indexBuffer,w,B.paint,Q.transform.zoom,le.programConfigurations.get(B.id),le.dynamicLayoutVertexBuffer,le.opacityVertexBuffer)}function nh(le,w,B,Q){let ee=le.context,se=ee.gl,qe=$o.disabled,je=new Ps([se.ONE,se.ONE],a.aM.transparent,[!0,!0,!0,!0]),it=w.getBucket(B);if(!it)return;let yt=Q.key,Ot=B.heatmapFbos.get(yt);Ot||(Ot=kh(ee,w.tileSize,w.tileSize),B.heatmapFbos.set(yt,Ot)),ee.bindFramebuffer.set(Ot.framebuffer),ee.viewport.set([0,0,w.tileSize,w.tileSize]),ee.clear({color:a.aM.transparent});let Nt=it.programConfigurations.get(B.id),hr=le.useProgram("heatmap",Nt),Sr=le.style.map.terrain.getTerrainData(Q);hr.draw(ee,se.TRIANGLES,wo.disabled,qe,je,Ja.disabled,xo(Q.posMatrix,w,le.transform.zoom,B.paint.get("heatmap-intensity")),Sr,B.id,it.layoutVertexBuffer,it.indexBuffer,it.segments,B.paint,le.transform.zoom,Nt)}function hf(le,w,B){let Q=le.context,ee=Q.gl;Q.setColorMode(le.colorModeForRenderPass());let se=Kh(Q,w),qe=B.key,je=w.heatmapFbos.get(qe);je&&(Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,je.colorAttachment.get()),Q.activeTexture.set(ee.TEXTURE1),se.bind(ee.LINEAR,ee.CLAMP_TO_EDGE),le.useProgram("heatmapTexture").draw(Q,ee.TRIANGLES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,zs(le,w,0,1),null,w.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments,w.paint,le.transform.zoom),je.destroy(),w.heatmapFbos.delete(qe))}function kh(le,w,B){var Q,ee;let se=le.gl,qe=se.createTexture();se.bindTexture(se.TEXTURE_2D,qe),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,se.LINEAR),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,se.LINEAR);let je=(Q=le.HALF_FLOAT)!==null&&Q!==void 0?Q:se.UNSIGNED_BYTE,it=(ee=le.RGBA16F)!==null&&ee!==void 0?ee:se.RGBA;se.texImage2D(se.TEXTURE_2D,0,it,w,B,0,se.RGBA,je,null);let yt=le.createFramebuffer(w,B,!1,!1);return yt.colorAttachment.set(qe),yt}function Kh(le,w){return w.colorRampTexture||(w.colorRampTexture=new g(le,w.colorRamp,le.gl.RGBA)),w.colorRampTexture}function rc(le,w,B,Q,ee){if(!B||!Q||!Q.imageAtlas)return;let se=Q.imageAtlas.patternPositions,qe=se[B.to.toString()],je=se[B.from.toString()];if(!qe&&je&&(qe=je),!je&&qe&&(je=qe),!qe||!je){let it=ee.getPaintProperty(w);qe=se[it],je=se[it]}qe&&je&&le.setConstantPatternPositions(qe,je)}function ah(le,w,B,Q,ee,se,qe){let je=le.context.gl,it="fill-pattern",yt=B.paint.get(it),Ot=yt&&yt.constantOr(1),Nt=B.getCrossfadeParameters(),hr,Sr,he,be,Pe;qe?(Sr=Ot&&!B.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",hr=je.LINES):(Sr=Ot?"fillPattern":"fill",hr=je.TRIANGLES);let Oe=yt.constantOr(null);for(let Je of Q){let He=w.getTile(Je);if(Ot&&!He.patternsLoaded())continue;let et=He.getBucket(B);if(!et)continue;let Mt=et.programConfigurations.get(B.id),Dt=le.useProgram(Sr,Mt),Ut=le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je);Ot&&(le.context.activeTexture.set(je.TEXTURE0),He.imageAtlasTexture.bind(je.LINEAR,je.CLAMP_TO_EDGE),Mt.updatePaintBuffers(Nt)),rc(Mt,it,Oe,He,B);let tr=Ut?Je:null,mr=le.translatePosMatrix(tr?tr.posMatrix:Je.posMatrix,He,B.paint.get("fill-translate"),B.paint.get("fill-translate-anchor"));if(qe){be=et.indexBuffer2,Pe=et.segments2;let Rr=[je.drawingBufferWidth,je.drawingBufferHeight];he=Sr==="fillOutlinePattern"&&Ot?Sa(mr,le,Nt,He,Rr):Fn(mr,Rr)}else be=et.indexBuffer,Pe=et.segments,he=Ot?ua(mr,le,Nt,He):Ji(mr);Dt.draw(le.context,hr,ee,le.stencilModeForClipping(Je),se,Ja.disabled,he,Ut,B.id,et.layoutVertexBuffer,be,Pe,B.paint,le.transform.zoom,Mt)}}function Wc(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt="fill-extrusion-pattern",Ot=B.paint.get(yt),Nt=Ot.constantOr(1),hr=B.getCrossfadeParameters(),Sr=B.paint.get("fill-extrusion-opacity"),he=Ot.constantOr(null);for(let be of Q){let Pe=w.getTile(be),Oe=Pe.getBucket(B);if(!Oe)continue;let Je=le.style.map.terrain&&le.style.map.terrain.getTerrainData(be),He=Oe.programConfigurations.get(B.id),et=le.useProgram(Nt?"fillExtrusionPattern":"fillExtrusion",He);Nt&&(le.context.activeTexture.set(it.TEXTURE0),Pe.imageAtlasTexture.bind(it.LINEAR,it.CLAMP_TO_EDGE),He.updatePaintBuffers(hr)),rc(He,yt,he,Pe,B);let Mt=le.translatePosMatrix(be.posMatrix,Pe,B.paint.get("fill-extrusion-translate"),B.paint.get("fill-extrusion-translate-anchor")),Dt=B.paint.get("fill-extrusion-vertical-gradient"),Ut=Nt?hi(Mt,le,Dt,Sr,be,hr,Pe):an(Mt,le,Dt,Sr);et.draw(je,je.gl.TRIANGLES,ee,se,qe,Ja.backCCW,Ut,Je,B.id,Oe.layoutVertexBuffer,Oe.indexBuffer,Oe.segments,B.paint,le.transform.zoom,He,le.style.map.terrain&&Oe.centroidVertexBuffer)}}function df(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt=B.fbo;if(!yt)return;let Ot=le.useProgram("hillshade"),Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(w);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,yt.colorAttachment.get()),Ot.draw(je,it.TRIANGLES,ee,se,qe,Ja.disabled,((hr,Sr,he,be)=>{let Pe=he.paint.get("hillshade-shadow-color"),Oe=he.paint.get("hillshade-highlight-color"),Je=he.paint.get("hillshade-accent-color"),He=he.paint.get("hillshade-illumination-direction")*(Math.PI/180);he.paint.get("hillshade-illumination-anchor")==="viewport"&&(He-=hr.transform.angle);let et=!hr.options.moving;return{u_matrix:be?be.posMatrix:hr.transform.calculatePosMatrix(Sr.tileID.toUnwrapped(),et),u_image:0,u_latrange:ks(0,Sr.tileID),u_light:[he.paint.get("hillshade-exaggeration"),He],u_shadow:Pe,u_highlight:Oe,u_accent:Je}})(le,B,Q,Nt?w:null),Nt,Q.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments)}function Cu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl,it=w.dem;if(it&&it.data){let yt=it.dim,Ot=it.stride,Nt=it.getPixels();if(qe.activeTexture.set(je.TEXTURE1),qe.pixelStoreUnpackPremultiplyAlpha.set(!1),w.demTexture=w.demTexture||le.getTileTexture(Ot),w.demTexture){let Sr=w.demTexture;Sr.update(Nt,{premultiply:!1}),Sr.bind(je.NEAREST,je.CLAMP_TO_EDGE)}else w.demTexture=new g(qe,Nt,je.RGBA,{premultiply:!1}),w.demTexture.bind(je.NEAREST,je.CLAMP_TO_EDGE);qe.activeTexture.set(je.TEXTURE0);let hr=w.fbo;if(!hr){let Sr=new g(qe,{width:yt,height:yt,data:null},je.RGBA);Sr.bind(je.LINEAR,je.CLAMP_TO_EDGE),hr=w.fbo=qe.createFramebuffer(yt,yt,!0,!1),hr.colorAttachment.set(Sr.texture)}qe.bindFramebuffer.set(hr.framebuffer),qe.viewport.set([0,0,yt,yt]),le.useProgram("hillshadePrepare").draw(qe,je.TRIANGLES,Q,ee,se,Ja.disabled,((Sr,he)=>{let be=he.stride,Pe=a.H();return a.aP(Pe,0,a.X,-a.X,0,0,1),a.J(Pe,Pe,[0,-a.X,0]),{u_matrix:Pe,u_image:1,u_dimension:[be,be],u_zoom:Sr.overscaledZ,u_unpack:he.getUnpackVector()}})(w.tileID,it),null,B.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments),w.needsHillshadePrepare=!1}}function Nf(le,w,B,Q,ee,se){let qe=Q.paint.get("raster-fade-duration");if(!se&&qe>0){let je=u.now(),it=(je-le.timeAdded)/qe,yt=w?(je-w.timeAdded)/qe:-1,Ot=B.getSource(),Nt=ee.coveringZoomLevel({tileSize:Ot.tileSize,roundZoom:Ot.roundZoom}),hr=!w||Math.abs(w.tileID.overscaledZ-Nt)>Math.abs(le.tileID.overscaledZ-Nt),Sr=hr&&le.refreshedUponExpiration?1:a.ac(hr?it:1-yt,0,1);return le.refreshedUponExpiration&&it>=1&&(le.refreshedUponExpiration=!1),w?{opacity:1,mix:1-Sr}:{opacity:Sr,mix:0}}return{opacity:1,mix:0}}let Zc=new a.aM(1,0,0,1),ds=new a.aM(0,1,0,1),Ch=new a.aM(0,0,1,1),Bd=new a.aM(1,0,1,1),Jh=new a.aM(0,1,1,1);function Cf(le,w,B,Q){Lu(le,0,w+B/2,le.transform.width,B,Q)}function pd(le,w,B,Q){Lu(le,w-B/2,0,B,le.transform.height,Q)}function Lu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl;je.enable(je.SCISSOR_TEST),je.scissor(w*le.pixelRatio,B*le.pixelRatio,Q*le.pixelRatio,ee*le.pixelRatio),qe.clear({color:se}),je.disable(je.SCISSOR_TEST)}function $h(le,w,B){let Q=le.context,ee=Q.gl,se=B.posMatrix,qe=le.useProgram("debug"),je=wo.disabled,it=$o.disabled,yt=le.colorModeForRenderPass(),Ot="$debug",Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(B);Q.activeTexture.set(ee.TEXTURE0);let hr=w.getTileByID(B.key).latestRawTileData,Sr=Math.floor((hr&&hr.byteLength||0)/1024),he=w.getTile(B).tileSize,be=512/Math.min(he,512)*(B.overscaledZ/le.transform.zoom)*.5,Pe=B.canonical.toString();B.overscaledZ!==B.canonical.z&&(Pe+=` => ${B.overscaledZ}`),function(Oe,Je){Oe.initDebugOverlayCanvas();let He=Oe.debugOverlayCanvas,et=Oe.context.gl,Mt=Oe.debugOverlayCanvas.getContext("2d");Mt.clearRect(0,0,He.width,He.height),Mt.shadowColor="white",Mt.shadowBlur=2,Mt.lineWidth=1.5,Mt.strokeStyle="white",Mt.textBaseline="top",Mt.font="bold 36px Open Sans, sans-serif",Mt.fillText(Je,5,5),Mt.strokeText(Je,5,5),Oe.debugOverlayTexture.update(He),Oe.debugOverlayTexture.bind(et.LINEAR,et.CLAMP_TO_EDGE)}(le,`${Pe} ${Sr}kB`),qe.draw(Q,ee.TRIANGLES,je,it,Ps.alphaBlended,Ja.disabled,ho(se,a.aM.transparent,be),null,Ot,le.debugBuffer,le.quadTriangleIndexBuffer,le.debugSegments),qe.draw(Q,ee.LINE_STRIP,je,it,yt,Ja.disabled,ho(se,a.aM.red),Nt,Ot,le.debugBuffer,le.tileBorderIndexBuffer,le.debugSegments)}function tu(le,w,B){let Q=le.context,ee=Q.gl,se=le.colorModeForRenderPass(),qe=new wo(ee.LEQUAL,wo.ReadWrite,le.depthRangeFor3D),je=le.useProgram("terrain"),it=w.getTerrainMesh();Q.bindFramebuffer.set(null),Q.viewport.set([0,0,le.width,le.height]);for(let yt of B){let Ot=le.renderToTexture.getTexture(yt),Nt=w.getTerrainData(yt.tileID);Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Ot.texture);let hr=le.transform.calculatePosMatrix(yt.tileID.toUnwrapped()),Sr=w.getMeshFrameDelta(le.transform.zoom),he=le.transform.calculateFogMatrix(yt.tileID.toUnwrapped()),be=Hr(hr,Sr,he,le.style.sky,le.transform.pitch);je.draw(Q,ee.TRIANGLES,qe,$o.disabled,se,Ja.backCCW,be,Nt,"terrain",it.vertexBuffer,it.indexBuffer,it.segments)}}class Pu{constructor(w,B,Q){this.vertexBuffer=w,this.indexBuffer=B,this.segments=Q}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Lc{constructor(w,B){this.context=new ov(w),this.transform=B,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:a.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=dt.maxUnderzooming+dt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new jo}resize(w,B,Q){if(this.width=Math.floor(w*Q),this.height=Math.floor(B*Q),this.pixelRatio=Q,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let ee of this.style._order)this.style._layers[ee].resize()}setup(){let w=this.context,B=new a.aX;B.emplaceBack(0,0),B.emplaceBack(a.X,0),B.emplaceBack(0,a.X),B.emplaceBack(a.X,a.X),this.tileExtentBuffer=w.createVertexBuffer(B,oo.members),this.tileExtentSegments=a.a0.simpleSegment(0,0,4,2);let Q=new a.aX;Q.emplaceBack(0,0),Q.emplaceBack(a.X,0),Q.emplaceBack(0,a.X),Q.emplaceBack(a.X,a.X),this.debugBuffer=w.createVertexBuffer(Q,oo.members),this.debugSegments=a.a0.simpleSegment(0,0,4,5);let ee=new a.$;ee.emplaceBack(0,0,0,0),ee.emplaceBack(a.X,0,a.X,0),ee.emplaceBack(0,a.X,0,a.X),ee.emplaceBack(a.X,a.X,a.X,a.X),this.rasterBoundsBuffer=w.createVertexBuffer(ee,ot.members),this.rasterBoundsSegments=a.a0.simpleSegment(0,0,4,2);let se=new a.aX;se.emplaceBack(0,0),se.emplaceBack(1,0),se.emplaceBack(0,1),se.emplaceBack(1,1),this.viewportBuffer=w.createVertexBuffer(se,oo.members),this.viewportSegments=a.a0.simpleSegment(0,0,4,2);let qe=new a.aZ;qe.emplaceBack(0),qe.emplaceBack(1),qe.emplaceBack(3),qe.emplaceBack(2),qe.emplaceBack(0),this.tileBorderIndexBuffer=w.createIndexBuffer(qe);let je=new a.aY;je.emplaceBack(0,1,2),je.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=w.createIndexBuffer(je);let it=this.context.gl;this.stencilClearMode=new $o({func:it.ALWAYS,mask:0},0,255,it.ZERO,it.ZERO,it.ZERO)}clearStencil(){let w=this.context,B=w.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let Q=a.H();a.aP(Q,0,this.width,this.height,0,0,1),a.K(Q,Q,[B.drawingBufferWidth,B.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(w,B.TRIANGLES,wo.disabled,this.stencilClearMode,Ps.disabled,Ja.disabled,Mo(Q),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(w,B){if(this.currentStencilSource===w.source||!w.isTileClipped()||!B||!B.length)return;this.currentStencilSource=w.source;let Q=this.context,ee=Q.gl;this.nextStencilID+B.length>256&&this.clearStencil(),Q.setColorMode(Ps.disabled),Q.setDepthMode(wo.disabled);let se=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let qe of B){let je=this._tileClippingMaskIDs[qe.key]=this.nextStencilID++,it=this.style.map.terrain&&this.style.map.terrain.getTerrainData(qe);se.draw(Q,ee.TRIANGLES,wo.disabled,new $o({func:ee.ALWAYS,mask:0},je,255,ee.KEEP,ee.KEEP,ee.REPLACE),Ps.disabled,Ja.disabled,Mo(qe.posMatrix),it,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let w=this.nextStencilID++,B=this.context.gl;return new $o({func:B.NOTEQUAL,mask:255},w,255,B.KEEP,B.KEEP,B.REPLACE)}stencilModeForClipping(w){let B=this.context.gl;return new $o({func:B.EQUAL,mask:255},this._tileClippingMaskIDs[w.key],0,B.KEEP,B.KEEP,B.REPLACE)}stencilConfigForOverlap(w){let B=this.context.gl,Q=w.sort((qe,je)=>je.overscaledZ-qe.overscaledZ),ee=Q[Q.length-1].overscaledZ,se=Q[0].overscaledZ-ee+1;if(se>1){this.currentStencilSource=void 0,this.nextStencilID+se>256&&this.clearStencil();let qe={};for(let je=0;je({u_sky_color:Oe.properties.get("sky-color"),u_horizon_color:Oe.properties.get("horizon-color"),u_horizon:(Je.height/2+Je.getHorizon())*He,u_sky_horizon_blend:Oe.properties.get("sky-horizon-blend")*Je.height/2*He}))(yt,it.style.map.transform,it.pixelRatio),Sr=new wo(Nt.LEQUAL,wo.ReadWrite,[0,1]),he=$o.disabled,be=it.colorModeForRenderPass(),Pe=it.useProgram("sky");if(!yt.mesh){let Oe=new a.aX;Oe.emplaceBack(-1,-1),Oe.emplaceBack(1,-1),Oe.emplaceBack(1,1),Oe.emplaceBack(-1,1);let Je=new a.aY;Je.emplaceBack(0,1,2),Je.emplaceBack(0,2,3),yt.mesh=new Pu(Ot.createVertexBuffer(Oe,oo.members),Ot.createIndexBuffer(Je),a.a0.simpleSegment(0,0,Oe.length,Je.length))}Pe.draw(Ot,Nt.TRIANGLES,Sr,he,be,Ja.disabled,hr,void 0,"sky",yt.mesh.vertexBuffer,yt.mesh.indexBuffer,yt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=B.showOverdrawInspector,this.depthRangeFor3D=[0,1-(w._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=Q.length-1;this.currentLayer>=0;this.currentLayer--){let it=this.style._layers[Q[this.currentLayer]],yt=ee[it.source],Ot=se[it.source];this._renderTileClippingMasks(it,Ot),this.renderLayer(this,yt,it,Ot)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerPe.source&&!Pe.isHidden(Ot)?[yt.sourceCaches[Pe.source]]:[]),Sr=hr.filter(Pe=>Pe.getSource().type==="vector"),he=hr.filter(Pe=>Pe.getSource().type!=="vector"),be=Pe=>{(!Nt||Nt.getSource().maxzoombe(Pe)),Nt||he.forEach(Pe=>be(Pe)),Nt}(this.style,this.transform.zoom);it&&function(yt,Ot,Nt){for(let hr=0;hr0),ee&&(a.b0(B,Q),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.sourceCache.getRenderableTiles(),Sr=se.useProgram("terrainDepth");je.bindFramebuffer.set(qe.getFramebuffer("depth").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1});for(let he of hr){let be=qe.getTerrainData(he.tileID),Pe={u_matrix:se.transform.calculatePosMatrix(he.tileID.toUnwrapped()),u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};Sr.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Pe,be,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain),function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.getCoordsTexture(),Sr=qe.sourceCache.getRenderableTiles(),he=se.useProgram("terrainCoords");je.bindFramebuffer.set(qe.getFramebuffer("coords").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1}),qe.coordsIndex=[];for(let be of Sr){let Pe=qe.getTerrainData(be.tileID);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,hr.texture);let Oe={u_matrix:se.transform.calculatePosMatrix(be.tileID.toUnwrapped()),u_terrain_coords_id:(255-qe.coordsIndex.length)/255,u_texture:0,u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};he.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Oe,Pe,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments),qe.coordsIndex.push(be.tileID.key)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain))}renderLayer(w,B,Q,ee){if(!Q.isHidden(this.transform.zoom)&&(Q.type==="background"||Q.type==="custom"||(ee||[]).length))switch(this.id=Q.id,Q.type){case"symbol":(function(se,qe,je,it,yt){if(se.renderPass!=="translucent")return;let Ot=$o.disabled,Nt=se.colorModeForRenderPass();(je._unevaluatedLayout.hasValue("text-variable-anchor")||je._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(hr,Sr,he,be,Pe,Oe,Je,He,et){let Mt=Sr.transform,Dt=Gi(),Ut=Pe==="map",tr=Oe==="map";for(let mr of hr){let Rr=be.getTile(mr),zr=Rr.getBucket(he);if(!zr||!zr.text||!zr.text.segments.get().length)continue;let Xr=a.ag(zr.textSizeData,Mt.zoom),di=nn(Rr,1,Sr.transform.zoom),Li=Or(mr.posMatrix,tr,Ut,Sr.transform,di),Ci=he.layout.get("icon-text-fit")!=="none"&&zr.hasIconData();if(Xr){let Qi=Math.pow(2,Mt.zoom-Rr.tileID.overscaledZ),Mn=Sr.style.map.terrain?(ea,Ga)=>Sr.style.map.terrain.getElevation(mr,ea,Ga):null,pa=Dt.translatePosition(Mt,Rr,Je,He);kf(zr,Ut,tr,et,Mt,Li,mr.posMatrix,Qi,Xr,Ci,Dt,pa,mr.toUnwrapped(),Mn)}}}(it,se,je,qe,je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),yt),je.paint.get("icon-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!1,je.paint.get("icon-translate"),je.paint.get("icon-translate-anchor"),je.layout.get("icon-rotation-alignment"),je.layout.get("icon-pitch-alignment"),je.layout.get("icon-keep-upright"),Ot,Nt),je.paint.get("text-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!0,je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.layout.get("text-keep-upright"),Ot,Nt),qe.map.showCollisionBoxes&&(tc(se,qe,je,it,!0),tc(se,qe,je,it,!1))})(w,B,Q,ee,this.style.placement.variableOffsets);break;case"circle":(function(se,qe,je,it){if(se.renderPass!=="translucent")return;let yt=je.paint.get("circle-opacity"),Ot=je.paint.get("circle-stroke-width"),Nt=je.paint.get("circle-stroke-opacity"),hr=!je.layout.get("circle-sort-key").isConstant();if(yt.constantOr(1)===0&&(Ot.constantOr(1)===0||Nt.constantOr(1)===0))return;let Sr=se.context,he=Sr.gl,be=se.depthModeForSublayer(0,wo.ReadOnly),Pe=$o.disabled,Oe=se.colorModeForRenderPass(),Je=[];for(let He=0;HeHe.sortKey-et.sortKey);for(let He of Je){let{programConfiguration:et,program:Mt,layoutVertexBuffer:Dt,indexBuffer:Ut,uniformValues:tr,terrainData:mr}=He.state;Mt.draw(Sr,he.TRIANGLES,be,Pe,Oe,Ja.disabled,tr,mr,je.id,Dt,Ut,He.segments,je.paint,se.transform.zoom,et)}})(w,B,Q,ee);break;case"heatmap":(function(se,qe,je,it){if(je.paint.get("heatmap-opacity")===0)return;let yt=se.context;if(se.style.map.terrain){for(let Ot of it){let Nt=qe.getTile(Ot);qe.hasRenderableParent(Ot)||(se.renderPass==="offscreen"?nh(se,Nt,je,Ot):se.renderPass==="translucent"&&hf(se,je,Ot))}yt.viewport.set([0,0,se.width,se.height])}else se.renderPass==="offscreen"?function(Ot,Nt,hr,Sr){let he=Ot.context,be=he.gl,Pe=$o.disabled,Oe=new Ps([be.ONE,be.ONE],a.aM.transparent,[!0,!0,!0,!0]);(function(Je,He,et){let Mt=Je.gl;Je.activeTexture.set(Mt.TEXTURE1),Je.viewport.set([0,0,He.width/4,He.height/4]);let Dt=et.heatmapFbos.get(a.aU);Dt?(Mt.bindTexture(Mt.TEXTURE_2D,Dt.colorAttachment.get()),Je.bindFramebuffer.set(Dt.framebuffer)):(Dt=kh(Je,He.width/4,He.height/4),et.heatmapFbos.set(a.aU,Dt))})(he,Ot,hr),he.clear({color:a.aM.transparent});for(let Je=0;Je20&&Ot.texParameterf(Ot.TEXTURE_2D,yt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,yt.extTextureFilterAnisotropicMax);let zr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Je),Xr=zr?Je:null,di=Xr?Xr.posMatrix:se.transform.calculatePosMatrix(Je.toUnwrapped(),Oe),Li=ml(di,mr||[0,0],tr||1,Ut,je);Nt instanceof Rt?hr.draw(yt,Ot.TRIANGLES,He,$o.disabled,Sr,Ja.disabled,Li,zr,je.id,Nt.boundsBuffer,se.quadTriangleIndexBuffer,Nt.boundsSegments):hr.draw(yt,Ot.TRIANGLES,He,he[Je.overscaledZ],Sr,Ja.disabled,Li,zr,je.id,se.rasterBoundsBuffer,se.quadTriangleIndexBuffer,se.rasterBoundsSegments)}})(w,B,Q,ee);break;case"background":(function(se,qe,je,it){let yt=je.paint.get("background-color"),Ot=je.paint.get("background-opacity");if(Ot===0)return;let Nt=se.context,hr=Nt.gl,Sr=se.transform,he=Sr.tileSize,be=je.paint.get("background-pattern");if(se.isPatternMissing(be))return;let Pe=!be&&yt.a===1&&Ot===1&&se.opaquePassEnabledForLayer()?"opaque":"translucent";if(se.renderPass!==Pe)return;let Oe=$o.disabled,Je=se.depthModeForSublayer(0,Pe==="opaque"?wo.ReadWrite:wo.ReadOnly),He=se.colorModeForRenderPass(),et=se.useProgram(be?"backgroundPattern":"background"),Mt=it||Sr.coveringTiles({tileSize:he,terrain:se.style.map.terrain});be&&(Nt.activeTexture.set(hr.TEXTURE0),se.imageManager.bind(se.context));let Dt=je.getCrossfadeParameters();for(let Ut of Mt){let tr=it?Ut.posMatrix:se.transform.calculatePosMatrix(Ut.toUnwrapped()),mr=be?Hu(tr,Ot,se,be,{tileID:Ut,tileSize:he},Dt):Ql(tr,Ot,yt),Rr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Ut);et.draw(Nt,hr.TRIANGLES,Je,Oe,He,Ja.disabled,mr,Rr,je.id,se.tileExtentBuffer,se.quadTriangleIndexBuffer,se.tileExtentSegments)}})(w,0,Q,ee);break;case"custom":(function(se,qe,je){let it=se.context,yt=je.implementation;if(se.renderPass==="offscreen"){let Ot=yt.prerender;Ot&&(se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),Ot.call(yt,it.gl,se.transform.customLayerMatrix()),it.setDirty(),se.setBaseState())}else if(se.renderPass==="translucent"){se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),it.setStencilMode($o.disabled);let Ot=yt.renderingMode==="3d"?new wo(se.context.gl.LEQUAL,wo.ReadWrite,se.depthRangeFor3D):se.depthModeForSublayer(0,wo.ReadOnly);it.setDepthMode(Ot),yt.render(it.gl,se.transform.customLayerMatrix(),{farZ:se.transform.farZ,nearZ:se.transform.nearZ,fov:se.transform._fov,modelViewProjectionMatrix:se.transform.modelViewProjectionMatrix,projectionMatrix:se.transform.projectionMatrix}),it.setDirty(),se.setBaseState(),it.bindFramebuffer.set(null)}})(w,0,Q)}}translatePosMatrix(w,B,Q,ee,se){if(!Q[0]&&!Q[1])return w;let qe=se?ee==="map"?this.transform.angle:0:ee==="viewport"?-this.transform.angle:0;if(qe){let yt=Math.sin(qe),Ot=Math.cos(qe);Q=[Q[0]*Ot-Q[1]*yt,Q[0]*yt+Q[1]*Ot]}let je=[se?Q[0]:nn(B,Q[0],this.transform.zoom),se?Q[1]:nn(B,Q[1],this.transform.zoom),0],it=new Float32Array(16);return a.J(it,w,je),it}saveTileTexture(w){let B=this._tileTextures[w.size[0]];B?B.push(w):this._tileTextures[w.size[0]]=[w]}getTileTexture(w){let B=this._tileTextures[w];return B&&B.length>0?B.pop():null}isPatternMissing(w){if(!w)return!1;if(!w.from||!w.to)return!0;let B=this.imageManager.getPattern(w.from.toString()),Q=this.imageManager.getPattern(w.to.toString());return!B||!Q}useProgram(w,B){this.cache=this.cache||{};let Q=w+(B?B.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[Q]||(this.cache[Q]=new zi(this.context,xn[w],B,fc[w],this._showOverdrawInspector,this.style.map.terrain)),this.cache[Q]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let w=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(w.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new g(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:w,drawingBufferHeight:B}=this.context.gl;return this.width!==w||this.height!==B}}class fl{constructor(w,B){this.points=w,this.planes=B}static fromInvProjectionMatrix(w,B,Q){let ee=Math.pow(2,Q),se=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(je=>{let it=1/(je=a.af([],je,w))[3]/B*ee;return a.b1(je,je,[it,it,1/je[3],it])}),qe=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(je=>{let it=function(hr,Sr){var he=Sr[0],be=Sr[1],Pe=Sr[2],Oe=he*he+be*be+Pe*Pe;return Oe>0&&(Oe=1/Math.sqrt(Oe)),hr[0]=Sr[0]*Oe,hr[1]=Sr[1]*Oe,hr[2]=Sr[2]*Oe,hr}([],function(hr,Sr,he){var be=Sr[0],Pe=Sr[1],Oe=Sr[2],Je=he[0],He=he[1],et=he[2];return hr[0]=Pe*et-Oe*He,hr[1]=Oe*Je-be*et,hr[2]=be*He-Pe*Je,hr}([],L([],se[je[0]],se[je[1]]),L([],se[je[2]],se[je[1]]))),yt=-((Ot=it)[0]*(Nt=se[je[1]])[0]+Ot[1]*Nt[1]+Ot[2]*Nt[2]);var Ot,Nt;return it.concat(yt)});return new fl(se,qe)}}class Xc{constructor(w,B){this.min=w,this.max=B,this.center=function(Q,ee,se){return Q[0]=.5*ee[0],Q[1]=.5*ee[1],Q[2]=.5*ee[2],Q}([],function(Q,ee,se){return Q[0]=ee[0]+se[0],Q[1]=ee[1]+se[1],Q[2]=ee[2]+se[2],Q}([],this.min,this.max))}quadrant(w){let B=[w%2==0,w<2],Q=k(this.min),ee=k(this.max);for(let se=0;se=0&&qe++;if(qe===0)return 0;qe!==B.length&&(Q=!1)}if(Q)return 2;for(let ee=0;ee<3;ee++){let se=Number.MAX_VALUE,qe=-Number.MAX_VALUE;for(let je=0;jethis.max[ee]-this.min[ee])return 0}return 1}}class ic{constructor(w=0,B=0,Q=0,ee=0){if(isNaN(w)||w<0||isNaN(B)||B<0||isNaN(Q)||Q<0||isNaN(ee)||ee<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=w,this.bottom=B,this.left=Q,this.right=ee}interpolate(w,B,Q){return B.top!=null&&w.top!=null&&(this.top=a.y.number(w.top,B.top,Q)),B.bottom!=null&&w.bottom!=null&&(this.bottom=a.y.number(w.bottom,B.bottom,Q)),B.left!=null&&w.left!=null&&(this.left=a.y.number(w.left,B.left,Q)),B.right!=null&&w.right!=null&&(this.right=a.y.number(w.right,B.right,Q)),this}getCenter(w,B){let Q=a.ac((this.left+w-this.right)/2,0,w),ee=a.ac((this.top+B-this.bottom)/2,0,B);return new a.P(Q,ee)}equals(w){return this.top===w.top&&this.bottom===w.bottom&&this.left===w.left&&this.right===w.right}clone(){return new ic(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let yu=85.051129;class Qs{constructor(w,B,Q,ee,se){this.tileSize=512,this._renderWorldCopies=se===void 0||!!se,this._minZoom=w||0,this._maxZoom=B||22,this._minPitch=Q==null?0:Q,this._maxPitch=ee==null?60:ee,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ic,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let w=new Qs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return w.apply(this),w}apply(w){this.tileSize=w.tileSize,this.latRange=w.latRange,this.lngRange=w.lngRange,this.width=w.width,this.height=w.height,this._center=w._center,this._elevation=w._elevation,this.minElevationForCurrentTile=w.minElevationForCurrentTile,this.zoom=w.zoom,this.angle=w.angle,this._fov=w._fov,this._pitch=w._pitch,this._unmodified=w._unmodified,this._edgeInsets=w._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(w){this._minZoom!==w&&(this._minZoom=w,this.zoom=Math.max(this.zoom,w))}get maxZoom(){return this._maxZoom}set maxZoom(w){this._maxZoom!==w&&(this._maxZoom=w,this.zoom=Math.min(this.zoom,w))}get minPitch(){return this._minPitch}set minPitch(w){this._minPitch!==w&&(this._minPitch=w,this.pitch=Math.max(this.pitch,w))}get maxPitch(){return this._maxPitch}set maxPitch(w){this._maxPitch!==w&&(this._maxPitch=w,this.pitch=Math.min(this.pitch,w))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(w){w===void 0?w=!0:w===null&&(w=!1),this._renderWorldCopies=w}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(w){let B=-a.b3(w,-180,180)*Math.PI/180;this.angle!==B&&(this._unmodified=!1,this.angle=B,this._calcMatrices(),this.rotationMatrix=function(){var Q=new a.A(4);return a.A!=Float32Array&&(Q[1]=0,Q[2]=0),Q[0]=1,Q[3]=1,Q}(),function(Q,ee,se){var qe=ee[0],je=ee[1],it=ee[2],yt=ee[3],Ot=Math.sin(se),Nt=Math.cos(se);Q[0]=qe*Nt+it*Ot,Q[1]=je*Nt+yt*Ot,Q[2]=qe*-Ot+it*Nt,Q[3]=je*-Ot+yt*Nt}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(w){let B=a.ac(w,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==B&&(this._unmodified=!1,this._pitch=B,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(w){w=Math.max(.01,Math.min(60,w)),this._fov!==w&&(this._unmodified=!1,this._fov=w/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(w){let B=Math.min(Math.max(w,this.minZoom),this.maxZoom);this._zoom!==B&&(this._unmodified=!1,this._zoom=B,this.tileZoom=Math.max(0,Math.floor(B)),this.scale=this.zoomScale(B),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(w){w.lat===this._center.lat&&w.lng===this._center.lng||(this._unmodified=!1,this._center=w,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(w){w!==this._elevation&&(this._elevation=w,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(w){this._edgeInsets.equals(w)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,w,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(w){return this._edgeInsets.equals(w)}interpolatePadding(w,B,Q){this._unmodified=!1,this._edgeInsets.interpolate(w,B,Q),this._constrain(),this._calcMatrices()}coveringZoomLevel(w){let B=(w.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/w.tileSize));return Math.max(0,B)}getVisibleUnwrappedCoordinates(w){let B=[new a.b4(0,w)];if(this._renderWorldCopies){let Q=this.pointCoordinate(new a.P(0,0)),ee=this.pointCoordinate(new a.P(this.width,0)),se=this.pointCoordinate(new a.P(this.width,this.height)),qe=this.pointCoordinate(new a.P(0,this.height)),je=Math.floor(Math.min(Q.x,ee.x,se.x,qe.x)),it=Math.floor(Math.max(Q.x,ee.x,se.x,qe.x)),yt=1;for(let Ot=je-yt;Ot<=it+yt;Ot++)Ot!==0&&B.push(new a.b4(Ot,w))}return B}coveringTiles(w){var B,Q;let ee=this.coveringZoomLevel(w),se=ee;if(w.minzoom!==void 0&&eew.maxzoom&&(ee=w.maxzoom);let qe=this.pointCoordinate(this.getCameraPoint()),je=a.Z.fromLngLat(this.center),it=Math.pow(2,ee),yt=[it*qe.x,it*qe.y,0],Ot=[it*je.x,it*je.y,0],Nt=fl.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,ee),hr=w.minzoom||0;!w.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(hr=ee);let Sr=w.terrain?2/Math.min(this.tileSize,w.tileSize)*this.tileSize:3,he=He=>({aabb:new Xc([He*it,0,0],[(He+1)*it,it,0]),zoom:0,x:0,y:0,wrap:He,fullyVisible:!1}),be=[],Pe=[],Oe=ee,Je=w.reparseOverscaled?se:ee;if(this._renderWorldCopies)for(let He=1;He<=3;He++)be.push(he(-He)),be.push(he(He));for(be.push(he(0));be.length>0;){let He=be.pop(),et=He.x,Mt=He.y,Dt=He.fullyVisible;if(!Dt){let zr=He.aabb.intersects(Nt);if(zr===0)continue;Dt=zr===2}let Ut=w.terrain?yt:Ot,tr=He.aabb.distanceX(Ut),mr=He.aabb.distanceY(Ut),Rr=Math.max(Math.abs(tr),Math.abs(mr));if(He.zoom===Oe||Rr>Sr+(1<=hr){let zr=Oe-He.zoom,Xr=yt[0]-.5-(et<>1),Li=He.zoom+1,Ci=He.aabb.quadrant(zr);if(w.terrain){let Qi=new a.S(Li,He.wrap,Li,Xr,di),Mn=w.terrain.getMinMaxElevation(Qi),pa=(B=Mn.minElevation)!==null&&B!==void 0?B:this.elevation,ea=(Q=Mn.maxElevation)!==null&&Q!==void 0?Q:this.elevation;Ci=new Xc([Ci.min[0],Ci.min[1],pa],[Ci.max[0],Ci.max[1],ea])}be.push({aabb:Ci,zoom:Li,x:Xr,y:di,wrap:He.wrap,fullyVisible:Dt})}}return Pe.sort((He,et)=>He.distanceSq-et.distanceSq).map(He=>He.tileID)}resize(w,B){this.width=w,this.height=B,this.pixelsToGLUnits=[2/w,-2/B],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(w){return Math.pow(2,w)}scaleZoom(w){return Math.log(w)/Math.LN2}project(w){let B=a.ac(w.lat,-85.051129,yu);return new a.P(a.O(w.lng)*this.worldSize,a.Q(B)*this.worldSize)}unproject(w){return new a.Z(w.x/this.worldSize,w.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(w){let B=this.elevation,Q=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,ee=this.pointLocation(this.centerPoint,w),se=w.getElevationForLngLatZoom(ee,this.tileZoom);if(!(this.elevation-se))return;let qe=Q+B-se,je=Math.cos(this._pitch)*this.cameraToCenterDistance/qe/a.b5(1,ee.lat),it=this.scaleZoom(je/this.tileSize);this._elevation=se,this._center=ee,this.zoom=it}setLocationAtPoint(w,B){let Q=this.pointCoordinate(B),ee=this.pointCoordinate(this.centerPoint),se=this.locationCoordinate(w),qe=new a.Z(se.x-(Q.x-ee.x),se.y-(Q.y-ee.y));this.center=this.coordinateLocation(qe),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(w,B){return B?this.coordinatePoint(this.locationCoordinate(w),B.getElevationForLngLatZoom(w,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(w))}pointLocation(w,B){return this.coordinateLocation(this.pointCoordinate(w,B))}locationCoordinate(w){return a.Z.fromLngLat(w)}coordinateLocation(w){return w&&w.toLngLat()}pointCoordinate(w,B){if(B){let hr=B.pointCoordinate(w);if(hr!=null)return hr}let Q=[w.x,w.y,0,1],ee=[w.x,w.y,1,1];a.af(Q,Q,this.pixelMatrixInverse),a.af(ee,ee,this.pixelMatrixInverse);let se=Q[3],qe=ee[3],je=Q[1]/se,it=ee[1]/qe,yt=Q[2]/se,Ot=ee[2]/qe,Nt=yt===Ot?0:(0-yt)/(Ot-yt);return new a.Z(a.y.number(Q[0]/se,ee[0]/qe,Nt)/this.worldSize,a.y.number(je,it,Nt)/this.worldSize)}coordinatePoint(w,B=0,Q=this.pixelMatrix){let ee=[w.x*this.worldSize,w.y*this.worldSize,B,1];return a.af(ee,ee,Q),new a.P(ee[0]/ee[3],ee[1]/ee[3])}getBounds(){let w=Math.max(0,this.height/2-this.getHorizon());return new ce().extend(this.pointLocation(new a.P(0,w))).extend(this.pointLocation(new a.P(this.width,w))).extend(this.pointLocation(new a.P(this.width,this.height))).extend(this.pointLocation(new a.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ce([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(w){w?(this.lngRange=[w.getWest(),w.getEast()],this.latRange=[w.getSouth(),w.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,yu])}calculateTileMatrix(w){let B=w.canonical,Q=this.worldSize/this.zoomScale(B.z),ee=B.x+Math.pow(2,B.z)*w.wrap,se=a.an(new Float64Array(16));return a.J(se,se,[ee*Q,B.y*Q,0]),a.K(se,se,[Q/a.X,Q/a.X,1]),se}calculatePosMatrix(w,B=!1){let Q=w.key,ee=B?this._alignedPosMatrixCache:this._posMatrixCache;if(ee[Q])return ee[Q];let se=this.calculateTileMatrix(w);return a.L(se,B?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,se),ee[Q]=new Float32Array(se),ee[Q]}calculateFogMatrix(w){let B=w.key,Q=this._fogMatrixCache;if(Q[B])return Q[B];let ee=this.calculateTileMatrix(w);return a.L(ee,this.fogMatrix,ee),Q[B]=new Float32Array(ee),Q[B]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(w,B){B=a.ac(+B,this.minZoom,this.maxZoom);let Q={center:new a.N(w.lng,w.lat),zoom:B},ee=this.lngRange;if(!this._renderWorldCopies&&ee===null){let He=179.9999999999;ee=[-He,He]}let se=this.tileSize*this.zoomScale(Q.zoom),qe=0,je=se,it=0,yt=se,Ot=0,Nt=0,{x:hr,y:Sr}=this.size;if(this.latRange){let He=this.latRange;qe=a.Q(He[1])*se,je=a.Q(He[0])*se,je-qeje&&(Oe=je-He)}if(ee){let He=(it+yt)/2,et=he;this._renderWorldCopies&&(et=a.b3(he,He-se/2,He+se/2));let Mt=hr/2;et-Mtyt&&(Pe=yt-Mt)}if(Pe!==void 0||Oe!==void 0){let He=new a.P(Pe!=null?Pe:he,Oe!=null?Oe:be);Q.center=this.unproject.call({worldSize:se},He).wrap()}return Q}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let w=this._unmodified,{center:B,zoom:Q}=this.getConstrained(this.center,this.zoom);this.center=B,this.zoom=Q,this._unmodified=w,this._constraining=!1}_calcMatrices(){if(!this.height)return;let w=this.centerOffset,B=this.point.x,Q=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.b5(1,this.center.lat)*this.worldSize;let ee=a.an(new Float64Array(16));a.K(ee,ee,[this.width/2,-this.height/2,1]),a.J(ee,ee,[1,-1,0]),this.labelPlaneMatrix=ee,ee=a.an(new Float64Array(16)),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[-1,-1,0]),a.K(ee,ee,[2/this.width,2/this.height,1]),this.glCoordMatrix=ee;let se=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),qe=Math.min(this.elevation,this.minElevationForCurrentTile),je=se-qe*this._pixelPerMeter/Math.cos(this._pitch),it=qe<0?je:se,yt=Math.PI/2+this._pitch,Ot=this._fov*(.5+w.y/this.height),Nt=Math.sin(Ot)*it/Math.sin(a.ac(Math.PI-yt-Ot,.01,Math.PI-.01)),hr=this.getHorizon(),Sr=2*Math.atan(hr/this.cameraToCenterDistance)*(.5+w.y/(2*hr)),he=Math.sin(Sr)*it/Math.sin(a.ac(Math.PI-yt-Sr,.01,Math.PI-.01)),be=Math.min(Nt,he);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*be+it),this.nearZ=this.height/50,ee=new Float64Array(16),a.b6(ee,this._fov,this.width/this.height,this.nearZ,this.farZ),ee[8]=2*-w.x/this.width,ee[9]=2*w.y/this.height,this.projectionMatrix=a.ae(ee),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[0,0,-this.cameraToCenterDistance]),a.b7(ee,ee,this._pitch),a.ad(ee,ee,this.angle),a.J(ee,ee,[-B,-Q,0]),this.mercatorMatrix=a.K([],ee,[this.worldSize,this.worldSize,this.worldSize]),a.K(ee,ee,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.L(new Float64Array(16),this.labelPlaneMatrix,ee),a.J(ee,ee,[0,0,-this.elevation]),this.modelViewProjectionMatrix=ee,this.invModelViewProjectionMatrix=a.as([],ee),this.fogMatrix=new Float64Array(16),a.b6(this.fogMatrix,this._fov,this.width/this.height,se,this.farZ),this.fogMatrix[8]=2*-w.x/this.width,this.fogMatrix[9]=2*w.y/this.height,a.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),a.b7(this.fogMatrix,this.fogMatrix,this._pitch),a.ad(this.fogMatrix,this.fogMatrix,this.angle),a.J(this.fogMatrix,this.fogMatrix,[-B,-Q,0]),a.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=a.L(new Float64Array(16),this.labelPlaneMatrix,ee);let Pe=this.width%2/2,Oe=this.height%2/2,Je=Math.cos(this.angle),He=Math.sin(this.angle),et=B-Math.round(B)+Je*Pe+He*Oe,Mt=Q-Math.round(Q)+Je*Oe+He*Pe,Dt=new Float64Array(ee);if(a.J(Dt,Dt,[et>.5?et-1:et,Mt>.5?Mt-1:Mt,0]),this.alignedModelViewProjectionMatrix=Dt,ee=a.as(new Float64Array(16),this.pixelMatrix),!ee)throw new Error("failed to invert matrix");this.pixelMatrixInverse=ee,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let w=this.pointCoordinate(new a.P(0,0)),B=[w.x*this.worldSize,w.y*this.worldSize,0,1];return a.af(B,B,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let w=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.P(0,w))}getCameraQueryGeometry(w){let B=this.getCameraPoint();if(w.length===1)return[w[0],B];{let Q=B.x,ee=B.y,se=B.x,qe=B.y;for(let je of w)Q=Math.min(Q,je.x),ee=Math.min(ee,je.y),se=Math.max(se,je.x),qe=Math.max(qe,je.y);return[new a.P(Q,ee),new a.P(se,ee),new a.P(se,qe),new a.P(Q,qe),new a.P(Q,ee)]}}lngLatToCameraDepth(w,B){let Q=this.locationCoordinate(w),ee=[Q.x*this.worldSize,Q.y*this.worldSize,B,1];return a.af(ee,ee,this.modelViewProjectionMatrix),ee[2]/ee[3]}}function Qh(le,w){let B,Q=!1,ee=null,se=null,qe=()=>{ee=null,Q&&(le.apply(se,B),ee=setTimeout(qe,w),Q=!1)};return(...je)=>(Q=!0,se=this,B=je,ee||qe(),ee)}class gd{constructor(w){this._getCurrentHash=()=>{let B=window.location.hash.replace("#","");if(this._hashName){let Q;return B.split("&").map(ee=>ee.split("=")).forEach(ee=>{ee[0]===this._hashName&&(Q=ee)}),(Q&&Q[1]||"").split("/")}return B.split("/")},this._onHashChange=()=>{let B=this._getCurrentHash();if(B.length>=3&&!B.some(Q=>isNaN(Q))){let Q=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(B[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+B[2],+B[1]],zoom:+B[0],bearing:Q,pitch:+(B[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let B=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,B)},this._removeHash=()=>{let B=this._getCurrentHash();if(B.length===0)return;let Q=B.join("/"),ee=Q;ee.split("&").length>0&&(ee=ee.split("&")[0]),this._hashName&&(ee=`${this._hashName}=${Q}`);let se=window.location.hash.replace(ee,"");se.startsWith("#&")?se=se.slice(0,1)+se.slice(2):se==="#"&&(se="");let qe=window.location.href.replace(/(#.+)?$/,se);qe=qe.replace("&&","&"),window.history.replaceState(window.history.state,null,qe)},this._updateHash=Qh(this._updateHashUnthrottled,300),this._hashName=w&&encodeURIComponent(w)}addTo(w){return this._map=w,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(w){let B=this._map.getCenter(),Q=Math.round(100*this._map.getZoom())/100,ee=Math.ceil((Q*Math.LN2+Math.log(512/360/.5))/Math.LN10),se=Math.pow(10,ee),qe=Math.round(B.lng*se)/se,je=Math.round(B.lat*se)/se,it=this._map.getBearing(),yt=this._map.getPitch(),Ot="";if(Ot+=w?`/${qe}/${je}/${Q}`:`${Q}/${je}/${qe}`,(it||yt)&&(Ot+="/"+Math.round(10*it)/10),yt&&(Ot+=`/${Math.round(yt)}`),this._hashName){let Nt=this._hashName,hr=!1,Sr=window.location.hash.slice(1).split("&").map(he=>{let be=he.split("=")[0];return be===Nt?(hr=!0,`${be}=${Ot}`):he}).filter(he=>he);return hr||Sr.push(`${Nt}=${Ot}`),`#${Sr.join("&")}`}return`#${Ot}`}}let Gu={linearity:.3,easing:a.b8(0,0,.3,1)},Pc=a.e({deceleration:2500,maxSpeed:1400},Gu),vc=a.e({deceleration:20,maxSpeed:1400},Gu),sv=a.e({deceleration:1e3,maxSpeed:360},Gu),Lf=a.e({deceleration:1e3,maxSpeed:90},Gu);class Uf{constructor(w){this._map=w,this.clear()}clear(){this._inertiaBuffer=[]}record(w){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:u.now(),settings:w})}_drainInertiaBuffer(){let w=this._inertiaBuffer,B=u.now();for(;w.length>0&&B-w[0].time>160;)w.shift()}_onMoveEnd(w){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let B={zoom:0,bearing:0,pitch:0,pan:new a.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:se}of this._inertiaBuffer)B.zoom+=se.zoomDelta||0,B.bearing+=se.bearingDelta||0,B.pitch+=se.pitchDelta||0,se.panDelta&&B.pan._add(se.panDelta),se.around&&(B.around=se.around),se.pinchAround&&(B.pinchAround=se.pinchAround);let Q=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,ee={};if(B.pan.mag()){let se=oh(B.pan.mag(),Q,a.e({},Pc,w||{}));ee.offset=B.pan.mult(se.amount/B.pan.mag()),ee.center=this._map.transform.center,Iu(ee,se)}if(B.zoom){let se=oh(B.zoom,Q,vc);ee.zoom=this._map.transform.zoom+se.amount,Iu(ee,se)}if(B.bearing){let se=oh(B.bearing,Q,sv);ee.bearing=this._map.transform.bearing+a.ac(se.amount,-179,179),Iu(ee,se)}if(B.pitch){let se=oh(B.pitch,Q,Lf);ee.pitch=this._map.transform.pitch+se.amount,Iu(ee,se)}if(ee.zoom||ee.bearing){let se=B.pinchAround===void 0?B.around:B.pinchAround;ee.around=se?this._map.unproject(se):this._map.getCenter()}return this.clear(),a.e(ee,{noMoveStart:!0})}}function Iu(le,w){(!le.duration||le.durationB.unproject(it)),je=se.reduce((it,yt,Ot,Nt)=>it.add(yt.div(Nt.length)),new a.P(0,0));super(w,{points:se,point:je,lngLats:qe,lngLat:B.unproject(je),originalEvent:Q}),this._defaultPrevented=!1}}class md extends a.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(w,B,Q){super(w,{originalEvent:Q}),this._defaultPrevented=!1}}class sh{constructor(w,B){this._map=w,this._clickTolerance=B.clickTolerance}reset(){delete this._mousedownPos}wheel(w){return this._firePreventable(new md(w.type,this._map,w))}mousedown(w,B){return this._mousedownPos=B,this._firePreventable(new ru(w.type,this._map,w))}mouseup(w){this._map.fire(new ru(w.type,this._map,w))}click(w,B){this._mousedownPos&&this._mousedownPos.dist(B)>=this._clickTolerance||this._map.fire(new ru(w.type,this._map,w))}dblclick(w){return this._firePreventable(new ru(w.type,this._map,w))}mouseover(w){this._map.fire(new ru(w.type,this._map,w))}mouseout(w){this._map.fire(new ru(w.type,this._map,w))}touchstart(w){return this._firePreventable(new vf(w.type,this._map,w))}touchmove(w){this._map.fire(new vf(w.type,this._map,w))}touchend(w){this._map.fire(new vf(w.type,this._map,w))}touchcancel(w){this._map.fire(new vf(w.type,this._map,w))}_firePreventable(w){if(this._map.fire(w),w.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Fs{constructor(w){this._map=w}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(w){this._map.fire(new ru(w.type,this._map,w))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ru("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(w){this._delayContextMenu?this._contextMenuEvent=w:this._ignoreContextMenu||this._map.fire(new ru(w.type,this._map,w)),this._map.listens("contextmenu")&&w.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class _u{constructor(w){this._map=w}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(w){return this.transform.pointLocation(a.P.convert(w),this._map.terrain)}}class xu{constructor(w,B){this._map=w,this._tr=new _u(w),this._el=w.getCanvasContainer(),this._container=w.getContainer(),this._clickTolerance=B.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(w,B){this.isEnabled()&&w.shiftKey&&w.button===0&&(c.disableDrag(),this._startPos=this._lastPos=B,this._active=!0)}mousemoveWindow(w,B){if(!this._active)return;let Q=B;if(this._lastPos.equals(Q)||!this._box&&Q.dist(this._startPos)se.fitScreenCoordinates(Q,ee,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",w)}keydown(w){this._active&&w.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",w))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(w,B){return this._map.fire(new a.k(w,{originalEvent:B}))}}function Lh(le,w){if(le.length!==w.length)throw new Error(`The number of touches and points are not equal - touches ${le.length}, points ${w.length}`);let B={};for(let Q=0;Qthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=w.timeStamp),Q.length===this.numTouches&&(this.centroid=function(ee){let se=new a.P(0,0);for(let qe of ee)se._add(qe);return se.div(ee.length)}(B),this.touches=Lh(Q,B)))}touchmove(w,B,Q){if(this.aborted||!this.centroid)return;let ee=Lh(Q,B);for(let se in this.touches){let qe=ee[se];(!qe||qe.dist(this.touches[se])>30)&&(this.aborted=!0)}}touchend(w,B,Q){if((!this.centroid||w.timeStamp-this.startTime>500)&&(this.aborted=!0),Q.length===0){let ee=!this.aborted&&this.centroid;if(this.reset(),ee)return ee}}}class Pf{constructor(w){this.singleTap=new Is(w),this.numTaps=w.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(w,B,Q){this.singleTap.touchstart(w,B,Q)}touchmove(w,B,Q){this.singleTap.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this.singleTap.touchend(w,B,Q);if(ee){let se=w.timeStamp-this.lastTime<500,qe=!this.lastTap||this.lastTap.dist(ee)<30;if(se&&qe||this.reset(),this.count++,this.lastTime=w.timeStamp,this.lastTap=ee,this.count===this.numTaps)return this.reset(),ee}}}class Ic{constructor(w){this._tr=new _u(w),this._zoomIn=new Pf({numTouches:1,numTaps:2}),this._zoomOut=new Pf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(w,B,Q){this._zoomIn.touchstart(w,B,Q),this._zoomOut.touchstart(w,B,Q)}touchmove(w,B,Q){this._zoomIn.touchmove(w,B,Q),this._zoomOut.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this._zoomIn.touchend(w,B,Q),se=this._zoomOut.touchend(w,B,Q),qe=this._tr;return ee?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom+1,around:qe.unproject(ee)},{originalEvent:w})}):se?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom-1,around:qe.unproject(se)},{originalEvent:w})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ju{constructor(w){this._enabled=!!w.enable,this._moveStateManager=w.moveStateManager,this._clickTolerance=w.clickTolerance||1,this._moveFunction=w.move,this._activateOnStart=!!w.activateOnStart,w.assignEvents(this),this.reset()}reset(w){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(w)}_move(...w){let B=this._moveFunction(...w);if(B.bearingDelta||B.pitchDelta||B.around||B.panDelta)return this._active=!0,B}dragStart(w,B){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(w)&&(this._moveStateManager.startMove(w),this._lastPoint=B.length?B[0]:B,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(w,B){if(!this.isEnabled())return;let Q=this._lastPoint;if(!Q)return;if(w.preventDefault(),!this._moveStateManager.isValidMoveEvent(w))return void this.reset(w);let ee=B.length?B[0]:B;return!this._moved&&ee.dist(Q){le.mousedown=le.dragStart,le.mousemoveWindow=le.dragMove,le.mouseup=le.dragEnd,le.contextmenu=w=>{w.preventDefault()}},Dl=({enable:le,clickTolerance:w,bearingDegreesPerPixelMoved:B=.8})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({bearingDelta:(se.x-ee.x)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})},Ih=({enable:le,clickTolerance:w,pitchDegreesPerPixelMoved:B=-.5})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({pitchDelta:(se.y-ee.y)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})};class Wu{constructor(w,B){this._clickTolerance=w.clickTolerance||1,this._map=B,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.P(0,0)}_shouldBePrevented(w){return w<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(w,B,Q){return this._calculateTransform(w,B,Q)}touchmove(w,B,Q){if(this._active){if(!this._shouldBePrevented(Q.length))return w.preventDefault(),this._calculateTransform(w,B,Q);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",w)}}touchend(w,B,Q){this._calculateTransform(w,B,Q),this._active&&this._shouldBePrevented(Q.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(w,B,Q){Q.length>0&&(this._active=!0);let ee=Lh(Q,B),se=new a.P(0,0),qe=new a.P(0,0),je=0;for(let yt in ee){let Ot=ee[yt],Nt=this._touches[yt];Nt&&(se._add(Ot),qe._add(Ot.sub(Nt)),je++,ee[yt]=Ot)}if(this._touches=ee,this._shouldBePrevented(je)||!qe.mag())return;let it=qe.div(je);return this._sum._add(it),this._sum.mag()Math.abs(le.x)}class gf extends Rc{constructor(w){super(),this._currentTouchCount=0,this._map=w}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(w,B,Q){super.touchstart(w,B,Q),this._currentTouchCount=Q.length}_start(w){this._lastPoints=w,nc(w[0].sub(w[1]))&&(this._valid=!1)}_move(w,B,Q){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let ee=w[0].sub(this._lastPoints[0]),se=w[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(ee,se,Q.timeStamp),this._valid?(this._lastPoints=w,this._active=!0,{pitchDelta:(ee.y+se.y)/2*-.5}):void 0}gestureBeginsVertically(w,B,Q){if(this._valid!==void 0)return this._valid;let ee=w.mag()>=2,se=B.mag()>=2;if(!ee&&!se)return;if(!ee||!se)return this._firstMove===void 0&&(this._firstMove=Q),Q-this._firstMove<100&&void 0;let qe=w.y>0==B.y>0;return nc(w)&&nc(B)&&qe}}let gt={panStep:100,bearingStep:15,pitchStep:10};class Bt{constructor(w){this._tr=new _u(w);let B=gt;this._panStep=B.panStep,this._bearingStep=B.bearingStep,this._pitchStep=B.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(w){if(w.altKey||w.ctrlKey||w.metaKey)return;let B=0,Q=0,ee=0,se=0,qe=0;switch(w.keyCode){case 61:case 107:case 171:case 187:B=1;break;case 189:case 109:case 173:B=-1;break;case 37:w.shiftKey?Q=-1:(w.preventDefault(),se=-1);break;case 39:w.shiftKey?Q=1:(w.preventDefault(),se=1);break;case 38:w.shiftKey?ee=1:(w.preventDefault(),qe=-1);break;case 40:w.shiftKey?ee=-1:(w.preventDefault(),qe=1);break;default:return}return this._rotationDisabled&&(Q=0,ee=0),{cameraAnimation:je=>{let it=this._tr;je.easeTo({duration:300,easeId:"keyboardHandler",easing:wr,zoom:B?Math.round(it.zoom)+B*(w.shiftKey?2:1):it.zoom,bearing:it.bearing+Q*this._bearingStep,pitch:it.pitch+ee*this._pitchStep,offset:[-se*this._panStep,-qe*this._panStep],center:it.center},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function wr(le){return le*(2-le)}let vr=4.000244140625;class Ur{constructor(w,B){this._onTimeout=Q=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(Q)},this._map=w,this._tr=new _u(w),this._triggerRenderFrame=B,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(w){this._defaultZoomRate=w}setWheelZoomRate(w){this._wheelZoomRate=w}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(w){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!w&&w.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(w){return!!this._map.cooperativeGestures.isEnabled()&&!(w.ctrlKey||this._map.cooperativeGestures.isBypassed(w))}wheel(w){if(!this.isEnabled())return;if(this._shouldBePrevented(w))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",w);let B=w.deltaMode===WheelEvent.DOM_DELTA_LINE?40*w.deltaY:w.deltaY,Q=u.now(),ee=Q-(this._lastWheelEventTime||0);this._lastWheelEventTime=Q,B!==0&&B%vr==0?this._type="wheel":B!==0&&Math.abs(B)<4?this._type="trackpad":ee>400?(this._type=null,this._lastValue=B,this._timeout=setTimeout(this._onTimeout,40,w)):this._type||(this._type=Math.abs(ee*B)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,B+=this._lastValue)),w.shiftKey&&B&&(B/=4),this._type&&(this._lastWheelEvent=w,this._delta-=B,this._active||this._start(w)),w.preventDefault()}_start(w){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let B=c.mousePos(this._map.getCanvas(),w),Q=this._tr;this._around=B.y>Q.transform.height/2-Q.transform.getHorizon()?a.N.convert(this._aroundCenter?Q.center:Q.unproject(B)):a.N.convert(Q.center),this._aroundPoint=Q.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let w=this._tr.transform;if(this._delta!==0){let it=this._type==="wheel"&&Math.abs(this._delta)>vr?this._wheelZoomRate:this._defaultZoomRate,yt=2/(1+Math.exp(-Math.abs(this._delta*it)));this._delta<0&&yt!==0&&(yt=1/yt);let Ot=typeof this._targetZoom=="number"?w.zoomScale(this._targetZoom):w.scale;this._targetZoom=Math.min(w.maxZoom,Math.max(w.minZoom,w.scaleZoom(Ot*yt))),this._type==="wheel"&&(this._startZoom=w.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let B=typeof this._targetZoom=="number"?this._targetZoom:w.zoom,Q=this._startZoom,ee=this._easing,se,qe=!1,je=u.now()-this._lastWheelEventTime;if(this._type==="wheel"&&Q&&ee&&je){let it=Math.min(je/200,1),yt=ee(it);se=a.y.number(Q,B,yt),it<1?this._frameId||(this._frameId=!0):qe=!0}else se=B,qe=!0;return this._active=!0,qe&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!qe,zoomDelta:se-w.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(w){let B=a.b9;if(this._prevEase){let Q=this._prevEase,ee=(u.now()-Q.start)/Q.duration,se=Q.easing(ee+.01)-Q.easing(ee),qe=.27/Math.sqrt(se*se+1e-4)*.01,je=Math.sqrt(.0729-qe*qe);B=a.b8(qe,je,.25,1)}return this._prevEase={start:u.now(),duration:w,easing:B},B}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class fi{constructor(w,B){this._clickZoom=w,this._tapZoom=B}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class xi{constructor(w){this._tr=new _u(w),this.reset()}reset(){this._active=!1}dblclick(w,B){return w.preventDefault(),{cameraAnimation:Q=>{Q.easeTo({duration:300,zoom:this._tr.zoom+(w.shiftKey?-1:1),around:this._tr.unproject(B)},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fi{constructor(){this._tap=new Pf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(w,B,Q){if(!this._swipePoint)if(this._tapTime){let ee=B[0],se=w.timeStamp-this._tapTime<500,qe=this._tapPoint.dist(ee)<30;se&&qe?Q.length>0&&(this._swipePoint=ee,this._swipeTouch=Q[0].identifier):this.reset()}else this._tap.touchstart(w,B,Q)}touchmove(w,B,Q){if(this._tapTime){if(this._swipePoint){if(Q[0].identifier!==this._swipeTouch)return;let ee=B[0],se=ee.y-this._swipePoint.y;return this._swipePoint=ee,w.preventDefault(),this._active=!0,{zoomDelta:se/128}}}else this._tap.touchmove(w,B,Q)}touchend(w,B,Q){if(this._tapTime)this._swipePoint&&Q.length===0&&this.reset();else{let ee=this._tap.touchend(w,B,Q);ee&&(this._tapTime=w.timeStamp,this._tapPoint=ee)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Xi{constructor(w,B,Q){this._el=w,this._mousePan=B,this._touchPan=Q}enable(w){this._inertiaOptions=w||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class hn{constructor(w,B,Q){this._pitchWithRotate=w.pitchWithRotate,this._mouseRotate=B,this._mousePitch=Q}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Ti{constructor(w,B,Q,ee){this._el=w,this._touchZoom=B,this._touchRotate=Q,this._tapDragZoom=ee,this._rotationDisabled=!1,this._enabled=!0}enable(w){this._touchZoom.enable(w),this._rotationDisabled||this._touchRotate.enable(w),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class qi{constructor(w,B){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=w,this._options=B,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let w=this._map.getCanvasContainer();w.classList.add("maplibregl-cooperative-gestures"),this._container=c.create("div","maplibregl-cooperative-gesture-screen",w);let B=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(B=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let Q=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),ee=document.createElement("div");ee.className="maplibregl-desktop-message",ee.textContent=B,this._container.appendChild(ee);let se=document.createElement("div");se.className="maplibregl-mobile-message",se.textContent=Q,this._container.appendChild(se),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(w){return w[this._bypassKey]}notifyGestureBlocked(w,B){this._enabled&&(this._map.fire(new a.k("cooperativegestureprevented",{gestureType:w,originalEvent:B})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let Ii=le=>le.zoom||le.drag||le.pitch||le.rotate;class mi extends a.k{}function Pn(le){return le.panDelta&&le.panDelta.mag()||le.zoomDelta||le.bearingDelta||le.pitchDelta}class Ma{constructor(w,B){this.handleWindowEvent=ee=>{this.handleEvent(ee,`${ee.type}Window`)},this.handleEvent=(ee,se)=>{if(ee.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let qe=ee.type==="renderFrame"?void 0:ee,je={needsRenderFrame:!1},it={},yt={},Ot=ee.touches,Nt=Ot?this._getMapTouches(Ot):void 0,hr=Nt?c.touchPos(this._map.getCanvas(),Nt):c.mousePos(this._map.getCanvas(),ee);for(let{handlerName:be,handler:Pe,allowed:Oe}of this._handlers){if(!Pe.isEnabled())continue;let Je;this._blockedByActive(yt,Oe,be)?Pe.reset():Pe[se||ee.type]&&(Je=Pe[se||ee.type](ee,hr,Nt),this.mergeHandlerResult(je,it,Je,be,qe),Je&&Je.needsRenderFrame&&this._triggerRenderFrame()),(Je||Pe.isActive())&&(yt[be]=Pe)}let Sr={};for(let be in this._previousActiveHandlers)yt[be]||(Sr[be]=qe);this._previousActiveHandlers=yt,(Object.keys(Sr).length||Pn(je))&&(this._changes.push([je,it,Sr]),this._triggerRenderFrame()),(Object.keys(yt).length||Pn(je))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:he}=je;he&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],he(this._map))},this._map=w,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Uf(w),this._bearingSnap=B.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(B);let Q=this._el;this._listeners=[[Q,"touchstart",{passive:!0}],[Q,"touchmove",{passive:!1}],[Q,"touchend",void 0],[Q,"touchcancel",void 0],[Q,"mousedown",void 0],[Q,"mousemove",void 0],[Q,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[Q,"mouseover",void 0],[Q,"mouseout",void 0],[Q,"dblclick",void 0],[Q,"click",void 0],[Q,"keydown",{capture:!1}],[Q,"keyup",void 0],[Q,"wheel",{passive:!1}],[Q,"contextmenu",void 0],[window,"blur",void 0]];for(let[ee,se,qe]of this._listeners)c.addEventListener(ee,se,ee===document?this.handleWindowEvent:this.handleEvent,qe)}destroy(){for(let[w,B,Q]of this._listeners)c.removeEventListener(w,B,w===document?this.handleWindowEvent:this.handleEvent,Q)}_addDefaultHandlers(w){let B=this._map,Q=B.getCanvasContainer();this._add("mapEvent",new sh(B,w));let ee=B.boxZoom=new xu(B,w);this._add("boxZoom",ee),w.interactive&&w.boxZoom&&ee.enable();let se=B.cooperativeGestures=new qi(B,w.cooperativeGestures);this._add("cooperativeGestures",se),w.cooperativeGestures&&se.enable();let qe=new Ic(B),je=new xi(B);B.doubleClickZoom=new fi(je,qe),this._add("tapZoom",qe),this._add("clickZoom",je),w.interactive&&w.doubleClickZoom&&B.doubleClickZoom.enable();let it=new Fi;this._add("tapDragZoom",it);let yt=B.touchPitch=new gf(B);this._add("touchPitch",yt),w.interactive&&w.touchPitch&&B.touchPitch.enable(w.touchPitch);let Ot=Dl(w),Nt=Ih(w);B.dragRotate=new hn(w,Ot,Nt),this._add("mouseRotate",Ot,["mousePitch"]),this._add("mousePitch",Nt,["mouseRotate"]),w.interactive&&w.dragRotate&&B.dragRotate.enable();let hr=(({enable:Je,clickTolerance:He})=>{let et=new pc({checkCorrectEvent:Mt=>c.mouseButton(Mt)===0&&!Mt.ctrlKey});return new ju({clickTolerance:He,move:(Mt,Dt)=>({around:Dt,panDelta:Dt.sub(Mt)}),activateOnStart:!0,moveStateManager:et,enable:Je,assignEvents:Ph})})(w),Sr=new Wu(w,B);B.dragPan=new Xi(Q,hr,Sr),this._add("mousePan",hr),this._add("touchPan",Sr,["touchZoom","touchRotate"]),w.interactive&&w.dragPan&&B.dragPan.enable(w.dragPan);let he=new Yc,be=new iu;B.touchZoomRotate=new Ti(Q,be,he,it),this._add("touchRotate",he,["touchPan","touchZoom"]),this._add("touchZoom",be,["touchPan","touchRotate"]),w.interactive&&w.touchZoomRotate&&B.touchZoomRotate.enable(w.touchZoomRotate);let Pe=B.scrollZoom=new Ur(B,()=>this._triggerRenderFrame());this._add("scrollZoom",Pe,["mousePan"]),w.interactive&&w.scrollZoom&&B.scrollZoom.enable(w.scrollZoom);let Oe=B.keyboard=new Bt(B);this._add("keyboard",Oe),w.interactive&&w.keyboard&&B.keyboard.enable(),this._add("blockableMapEvent",new Fs(B))}_add(w,B,Q){this._handlers.push({handlerName:w,handler:B,allowed:Q}),this._handlersById[w]=B}stop(w){if(!this._updatingCamera){for(let{handler:B}of this._handlers)B.reset();this._inertia.clear(),this._fireEvents({},{},w),this._changes=[]}}isActive(){for(let{handler:w}of this._handlers)if(w.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Ii(this._eventsInProgress)||this.isZooming()}_blockedByActive(w,B,Q){for(let ee in w)if(ee!==Q&&(!B||B.indexOf(ee)<0))return!0;return!1}_getMapTouches(w){let B=[];for(let Q of w)this._el.contains(Q.target)&&B.push(Q);return B}mergeHandlerResult(w,B,Q,ee,se){if(!Q)return;a.e(w,Q);let qe={handlerName:ee,originalEvent:Q.originalEvent||se};Q.zoomDelta!==void 0&&(B.zoom=qe),Q.panDelta!==void 0&&(B.drag=qe),Q.pitchDelta!==void 0&&(B.pitch=qe),Q.bearingDelta!==void 0&&(B.rotate=qe)}_applyChanges(){let w={},B={},Q={};for(let[ee,se,qe]of this._changes)ee.panDelta&&(w.panDelta=(w.panDelta||new a.P(0,0))._add(ee.panDelta)),ee.zoomDelta&&(w.zoomDelta=(w.zoomDelta||0)+ee.zoomDelta),ee.bearingDelta&&(w.bearingDelta=(w.bearingDelta||0)+ee.bearingDelta),ee.pitchDelta&&(w.pitchDelta=(w.pitchDelta||0)+ee.pitchDelta),ee.around!==void 0&&(w.around=ee.around),ee.pinchAround!==void 0&&(w.pinchAround=ee.pinchAround),ee.noInertia&&(w.noInertia=ee.noInertia),a.e(B,se),a.e(Q,qe);this._updateMapTransform(w,B,Q),this._changes=[]}_updateMapTransform(w,B,Q){let ee=this._map,se=ee._getTransformForUpdate(),qe=ee.terrain;if(!(Pn(w)||qe&&this._terrainMovement))return this._fireEvents(B,Q,!0);let{panDelta:je,zoomDelta:it,bearingDelta:yt,pitchDelta:Ot,around:Nt,pinchAround:hr}=w;hr!==void 0&&(Nt=hr),ee._stop(!0),Nt=Nt||ee.transform.centerPoint;let Sr=se.pointLocation(je?Nt.sub(je):Nt);yt&&(se.bearing+=yt),Ot&&(se.pitch+=Ot),it&&(se.zoom+=it),qe?this._terrainMovement||!B.drag&&!B.zoom?B.drag&&this._terrainMovement?se.center=se.pointLocation(se.centerPoint.sub(je)):se.setLocationAtPoint(Sr,Nt):(this._terrainMovement=!0,this._map._elevationFreeze=!0,se.setLocationAtPoint(Sr,Nt)):se.setLocationAtPoint(Sr,Nt),ee._applyUpdatedTransform(se),this._map._update(),w.noInertia||this._inertia.record(w),this._fireEvents(B,Q,!0)}_fireEvents(w,B,Q){let ee=Ii(this._eventsInProgress),se=Ii(w),qe={};for(let Nt in w){let{originalEvent:hr}=w[Nt];this._eventsInProgress[Nt]||(qe[`${Nt}start`]=hr),this._eventsInProgress[Nt]=w[Nt]}!ee&&se&&this._fireEvent("movestart",se.originalEvent);for(let Nt in qe)this._fireEvent(Nt,qe[Nt]);se&&this._fireEvent("move",se.originalEvent);for(let Nt in w){let{originalEvent:hr}=w[Nt];this._fireEvent(Nt,hr)}let je={},it;for(let Nt in this._eventsInProgress){let{handlerName:hr,originalEvent:Sr}=this._eventsInProgress[Nt];this._handlersById[hr].isActive()||(delete this._eventsInProgress[Nt],it=B[hr]||Sr,je[`${Nt}end`]=it)}for(let Nt in je)this._fireEvent(Nt,je[Nt]);let yt=Ii(this._eventsInProgress),Ot=(ee||se)&&!yt;if(Ot&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let Nt=this._map._getTransformForUpdate();Nt.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(Nt)}if(Q&&Ot){this._updatingCamera=!0;let Nt=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),hr=Sr=>Sr!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new mi("renderFrame",{timeStamp:w})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Ta extends a.E{constructor(w,B){super(),this._renderFrameCallback=()=>{let Q=Math.min((u.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(Q)),Q<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=w,this._bearingSnap=B.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.N(this.transform.center.lng,this.transform.center.lat)}setCenter(w,B){return this.jumpTo({center:w},B)}panBy(w,B,Q){return w=a.P.convert(w).mult(-1),this.panTo(this.transform.center,a.e({offset:w},B),Q)}panTo(w,B,Q){return this.easeTo(a.e({center:w},B),Q)}getZoom(){return this.transform.zoom}setZoom(w,B){return this.jumpTo({zoom:w},B),this}zoomTo(w,B,Q){return this.easeTo(a.e({zoom:w},B),Q)}zoomIn(w,B){return this.zoomTo(this.getZoom()+1,w,B),this}zoomOut(w,B){return this.zoomTo(this.getZoom()-1,w,B),this}getBearing(){return this.transform.bearing}setBearing(w,B){return this.jumpTo({bearing:w},B),this}getPadding(){return this.transform.padding}setPadding(w,B){return this.jumpTo({padding:w},B),this}rotateTo(w,B,Q){return this.easeTo(a.e({bearing:w},B),Q)}resetNorth(w,B){return this.rotateTo(0,a.e({duration:1e3},w),B),this}resetNorthPitch(w,B){return this.easeTo(a.e({bearing:0,pitch:0,duration:1e3},w),B),this}snapToNorth(w,B){return Math.abs(this.getBearing()){if(this._zooming&&(ee.zoom=a.y.number(se,Pe,Ut)),this._rotating&&(ee.bearing=a.y.number(qe,yt,Ut)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Ut)),this._padding&&(ee.interpolatePadding(it,Nt,Ut),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Ut),et)ee.setLocationAtPoint(et,Mt);else{let tr=ee.zoomScale(ee.zoom-se),mr=Pe>se?Math.min(2,He):Math.max(.5,He),Rr=Math.pow(mr,1-Ut),zr=ee.unproject(Oe.add(Je.mult(Ut*Rr)).mult(tr));ee.setLocationAtPoint(ee.renderWorldCopies?zr.wrap():zr,Sr)}this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},Ut=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B,Ut)},w),this}_prepareEase(w,B,Q={}){this._moving=!0,B||Q.moving||this.fire(new a.k("movestart",w)),this._zooming&&!Q.zooming&&this.fire(new a.k("zoomstart",w)),this._rotating&&!Q.rotating&&this.fire(new a.k("rotatestart",w)),this._pitching&&!Q.pitching&&this.fire(new a.k("pitchstart",w))}_prepareElevation(w){this._elevationCenter=w,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(w,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(w){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let B=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(w<1&&B!==this._elevationTarget){let Q=this._elevationTarget-this._elevationStart;this._elevationStart+=w*(Q-(B-(Q*w+this._elevationStart))/(1-w)),this._elevationTarget=B}this.transform.elevation=a.y.number(this._elevationStart,this._elevationTarget,w)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(w){let B=w.getCameraPosition(),Q=this.terrain.getElevationForLngLatZoom(B.lngLat,w.zoom);if(B.altitudethis._elevateCameraIfInsideTerrain(ee)),this.transformCameraUpdate&&B.push(ee=>this.transformCameraUpdate(ee)),!B.length)return;let Q=w.clone();for(let ee of B){let se=Q.clone(),{center:qe,zoom:je,pitch:it,bearing:yt,elevation:Ot}=ee(se);qe&&(se.center=qe),je!==void 0&&(se.zoom=je),it!==void 0&&(se.pitch=it),yt!==void 0&&(se.bearing=yt),Ot!==void 0&&(se.elevation=Ot),Q.apply(se)}this.transform.apply(Q)}_fireMoveEvents(w){this.fire(new a.k("move",w)),this._zooming&&this.fire(new a.k("zoom",w)),this._rotating&&this.fire(new a.k("rotate",w)),this._pitching&&this.fire(new a.k("pitch",w))}_afterEase(w,B){if(this._easeId&&B&&this._easeId===B)return;delete this._easeId;let Q=this._zooming,ee=this._rotating,se=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,Q&&this.fire(new a.k("zoomend",w)),ee&&this.fire(new a.k("rotateend",w)),se&&this.fire(new a.k("pitchend",w)),this.fire(new a.k("moveend",w))}flyTo(w,B){var Q;if(!w.essential&&u.prefersReducedMotion){let Qi=a.M(w,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Qi,B)}this.stop(),w=a.e({offset:[0,0],speed:1.2,curve:1.42,easing:a.b9},w);let ee=this._getTransformForUpdate(),se=ee.zoom,qe=ee.bearing,je=ee.pitch,it=ee.padding,yt="bearing"in w?this._normalizeBearing(w.bearing,qe):qe,Ot="pitch"in w?+w.pitch:je,Nt="padding"in w?w.padding:ee.padding,hr=a.P.convert(w.offset),Sr=ee.centerPoint.add(hr),he=ee.pointLocation(Sr),{center:be,zoom:Pe}=ee.getConstrained(a.N.convert(w.center||he),(Q=w.zoom)!==null&&Q!==void 0?Q:se);this._normalizeCenter(be,ee);let Oe=ee.zoomScale(Pe-se),Je=ee.project(he),He=ee.project(be).sub(Je),et=w.curve,Mt=Math.max(ee.width,ee.height),Dt=Mt/Oe,Ut=He.mag();if("minZoom"in w){let Qi=a.ac(Math.min(w.minZoom,se,Pe),ee.minZoom,ee.maxZoom),Mn=Mt/ee.zoomScale(Qi-se);et=Math.sqrt(Mn/Ut*2)}let tr=et*et;function mr(Qi){let Mn=(Dt*Dt-Mt*Mt+(Qi?-1:1)*tr*tr*Ut*Ut)/(2*(Qi?Dt:Mt)*tr*Ut);return Math.log(Math.sqrt(Mn*Mn+1)-Mn)}function Rr(Qi){return(Math.exp(Qi)-Math.exp(-Qi))/2}function zr(Qi){return(Math.exp(Qi)+Math.exp(-Qi))/2}let Xr=mr(!1),di=function(Qi){return zr(Xr)/zr(Xr+et*Qi)},Li=function(Qi){return Mt*((zr(Xr)*(Rr(Mn=Xr+et*Qi)/zr(Mn))-Rr(Xr))/tr)/Ut;var Mn},Ci=(mr(!0)-Xr)/et;if(Math.abs(Ut)<1e-6||!isFinite(Ci)){if(Math.abs(Mt-Dt)<1e-6)return this.easeTo(w,B);let Qi=Dt0,di=Mn=>Math.exp(Qi*et*Mn)}return w.duration="duration"in w?+w.duration:1e3*Ci/("screenSpeed"in w?+w.screenSpeed/et:+w.speed),w.maxDuration&&w.duration>w.maxDuration&&(w.duration=0),this._zooming=!0,this._rotating=qe!==yt,this._pitching=Ot!==je,this._padding=!ee.isPaddingEqual(Nt),this._prepareEase(B,!1),this.terrain&&this._prepareElevation(be),this._ease(Qi=>{let Mn=Qi*Ci,pa=1/di(Mn);ee.zoom=Qi===1?Pe:se+ee.scaleZoom(pa),this._rotating&&(ee.bearing=a.y.number(qe,yt,Qi)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Qi)),this._padding&&(ee.interpolatePadding(it,Nt,Qi),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Qi);let ea=Qi===1?be:ee.unproject(Je.add(He.mult(Li(Mn))).mult(pa));ee.setLocationAtPoint(ee.renderWorldCopies?ea.wrap():ea,Sr),this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},()=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B)},w),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(w,B){var Q;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let ee=this._onEaseEnd;delete this._onEaseEnd,ee.call(this,B)}return w||(Q=this.handlers)===null||Q===void 0||Q.stop(!1),this}_ease(w,B,Q){Q.animate===!1||Q.duration===0?(w(1),B()):(this._easeStart=u.now(),this._easeOptions=Q,this._onEaseFrame=w,this._onEaseEnd=B,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(w,B){w=a.b3(w,-180,180);let Q=Math.abs(w-B);return Math.abs(w-360-B)180?-360:Q<-180?360:0}queryTerrainElevation(w){return this.terrain?this.terrain.getElevationForLngLatZoom(a.N.convert(w),this.transform.tileZoom)-this.transform.elevation:null}}let Ea={compact:!0,customAttribution:'MapLibre'};class qa{constructor(w=Ea){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=B=>{!B||B.sourceDataType!=="metadata"&&B.sourceDataType!=="visibility"&&B.dataType!=="style"&&B.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=w}getDefaultPosition(){return"bottom-right"}onAdd(w){return this._map=w,this._compact=this.options.compact,this._container=c.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=c.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=c.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(w,B){let Q=this._map._getUIString(`AttributionControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)}_updateAttributions(){if(!this._map.style)return;let w=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?w=w.concat(this.options.customAttribution.map(ee=>typeof ee!="string"?"":ee)):typeof this.options.customAttribution=="string"&&w.push(this.options.customAttribution)),this._map.style.stylesheet){let ee=this._map.style.stylesheet;this.styleOwner=ee.owner,this.styleId=ee.id}let B=this._map.style.sourceCaches;for(let ee in B){let se=B[ee];if(se.used||se.usedForTerrain){let qe=se.getSource();qe.attribution&&w.indexOf(qe.attribution)<0&&w.push(qe.attribution)}}w=w.filter(ee=>String(ee).trim()),w.sort((ee,se)=>ee.length-se.length),w=w.filter((ee,se)=>{for(let qe=se+1;qe=0)return!1;return!0});let Q=w.join(" | ");Q!==this._attribHTML&&(this._attribHTML=Q,w.length?(this._innerContainer.innerHTML=Q,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Cn{constructor(w={}){this._updateCompact=()=>{let B=this._container.children;if(B.length){let Q=B[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&Q.classList.add("maplibregl-compact"):Q.classList.remove("maplibregl-compact")}},this.options=w}getDefaultPosition(){return"bottom-left"}onAdd(w){this._map=w,this._compact=this.options&&this.options.compact,this._container=c.create("div","maplibregl-ctrl");let B=c.create("a","maplibregl-ctrl-logo");return B.target="_blank",B.rel="noopener nofollow",B.href="https://maplibre.org/",B.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),B.setAttribute("rel","noopener nofollow"),this._container.appendChild(B),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class sn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(w){let B=++this._id;return this._queue.push({callback:w,id:B,cancelled:!1}),B}remove(w){let B=this._currentlyRunning,Q=B?this._queue.concat(B):this._queue;for(let ee of Q)if(ee.id===w)return void(ee.cancelled=!0)}run(w=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let B=this._currentlyRunning=this._queue;this._queue=[];for(let Q of B)if(!Q.cancelled&&(Q.callback(w),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ua=a.Y([{name:"a_pos3d",type:"Int16",components:3}]);class mo extends a.E{constructor(w){super(),this.sourceCache=w,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,w.usedForTerrain=!0,w.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(w,B){this.sourceCache.update(w,B),this._renderableTilesKeys=[];let Q={};for(let ee of w.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:B}))Q[ee.key]=!0,this._renderableTilesKeys.push(ee.key),this._tiles[ee.key]||(ee.posMatrix=new Float64Array(16),a.aP(ee.posMatrix,0,a.X,0,a.X,0,1),this._tiles[ee.key]=new Lt(ee,this.tileSize));for(let ee in this._tiles)Q[ee]||delete this._tiles[ee]}freeRtt(w){for(let B in this._tiles){let Q=this._tiles[B];(!w||Q.tileID.equals(w)||Q.tileID.isChildOf(w)||w.isChildOf(Q.tileID))&&(Q.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(w=>this.getTileByID(w))}getTileByID(w){return this._tiles[w]}getTerrainCoords(w){let B={};for(let Q of this._renderableTilesKeys){let ee=this._tiles[Q].tileID;if(ee.canonical.equals(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16),a.aP(se.posMatrix,0,a.X,0,a.X,0,1),B[Q]=se}else if(ee.canonical.isChildOf(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=ee.canonical.z-w.canonical.z,je=ee.canonical.x-(ee.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,yt,0,yt,0,1),a.J(se.posMatrix,se.posMatrix,[-je*yt,-it*yt,0]),B[Q]=se}else if(w.canonical.isChildOf(ee.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=w.canonical.z-ee.canonical.z,je=w.canonical.x-(w.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,a.X,0,a.X,0,1),a.J(se.posMatrix,se.posMatrix,[je*yt,it*yt,0]),a.K(se.posMatrix,se.posMatrix,[1/2**qe,1/2**qe,0]),B[Q]=se}}return B}getSourceTile(w,B){let Q=this.sourceCache._source,ee=w.overscaledZ-this.deltaZoom;if(ee>Q.maxzoom&&(ee=Q.maxzoom),ee=Q.minzoom&&(!se||!se.dem);)se=this.sourceCache.getTileByID(w.scaledTo(ee--).key);return se}tilesAfterTime(w=Date.now()){return Object.values(this._tiles).filter(B=>B.timeAdded>=w)}}class Xo{constructor(w,B,Q){this.painter=w,this.sourceCache=new mo(B),this.options=Q,this.exaggeration=typeof Q.exaggeration=="number"?Q.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(w,B,Q,ee=a.X){var se;if(!(B>=0&&B=0&&Qw.canonical.z&&(w.canonical.z>=ee?se=w.canonical.z-ee:a.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let qe=w.canonical.x-(w.canonical.x>>se<>se<>8<<4|se>>8,B[qe+3]=0;let Q=new a.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(B.buffer)),ee=new g(w,Q,w.gl.RGBA,{premultiply:!1});return ee.bind(w.gl.NEAREST,w.gl.CLAMP_TO_EDGE),this._coordsTexture=ee,ee}pointCoordinate(w){this.painter.maybeDrawDepthAndCoords(!0);let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl,se=Math.round(w.x*this.painter.pixelRatio/devicePixelRatio),qe=Math.round(w.y*this.painter.pixelRatio/devicePixelRatio),je=Math.round(this.painter.height/devicePixelRatio);Q.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),ee.readPixels(se,je-qe-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null);let it=B[0]+(B[2]>>4<<8),yt=B[1]+((15&B[2])<<8),Ot=this.coordsIndex[255-B[3]],Nt=Ot&&this.sourceCache.getTileByID(Ot);if(!Nt)return null;let hr=this._coordsTextureSize,Sr=(1<w.id!==B),this._recentlyUsed.push(w.id)}stampObject(w){w.stamp=++this._stamp}getOrCreateFreeObject(){for(let B of this._recentlyUsed)if(!this._objects[B].inUse)return this._objects[B];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let w=this._createObject(this._objects.length);return this._objects.push(w),w}freeObject(w){w.inUse=!1}freeAllObjects(){for(let w of this._objects)this.freeObject(w)}isFull(){return!(this._objects.length!w.inUse)===!1}}let Qo={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ys{constructor(w,B){this.painter=w,this.terrain=B,this.pool=new Ts(w.context,30,B.sourceCache.tileSize*B.qualityFactor)}destruct(){this.pool.destruct()}getTexture(w){return this.pool.getObjectForId(w.rtt[this._stacks.length-1].id).texture}prepareForRender(w,B){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=w._order.filter(Q=>!w._layers[Q].isHidden(B)),this._coordsDescendingInv={};for(let Q in w.sourceCaches){this._coordsDescendingInv[Q]={};let ee=w.sourceCaches[Q].getVisibleCoordinates();for(let se of ee){let qe=this.terrain.sourceCache.getTerrainCoords(se);for(let je in qe)this._coordsDescendingInv[Q][je]||(this._coordsDescendingInv[Q][je]=[]),this._coordsDescendingInv[Q][je].push(qe[je])}}this._coordsDescendingInvStr={};for(let Q of w._order){let ee=w._layers[Q],se=ee.source;if(Qo[ee.type]&&!this._coordsDescendingInvStr[se]){this._coordsDescendingInvStr[se]={};for(let qe in this._coordsDescendingInv[se])this._coordsDescendingInvStr[se][qe]=this._coordsDescendingInv[se][qe].map(je=>je.key).sort().join()}}for(let Q of this._renderableTiles)for(let ee in this._coordsDescendingInvStr){let se=this._coordsDescendingInvStr[ee][Q.tileID.key];se&&se!==Q.rttCoords[ee]&&(Q.rtt=[])}}renderLayer(w){if(w.isHidden(this.painter.transform.zoom))return!1;let B=w.type,Q=this.painter,ee=this._renderableLayerIds[this._renderableLayerIds.length-1]===w.id;if(Qo[B]&&(this._prevType&&Qo[this._prevType]||this._stacks.push([]),this._prevType=B,this._stacks[this._stacks.length-1].push(w.id),!ee))return!0;if(Qo[this._prevType]||Qo[B]&&ee){this._prevType=B;let se=this._stacks.length-1,qe=this._stacks[se]||[];for(let je of this._renderableTiles){if(this.pool.isFull()&&(tu(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(je),je.rtt[se]){let yt=this.pool.getObjectForId(je.rtt[se].id);if(yt.stamp===je.rtt[se].stamp){this.pool.useObject(yt);continue}}let it=this.pool.getOrCreateFreeObject();this.pool.useObject(it),this.pool.stampObject(it),je.rtt[se]={id:it.id,stamp:it.stamp},Q.context.bindFramebuffer.set(it.fbo.framebuffer),Q.context.clear({color:a.aM.transparent,stencil:0}),Q.currentStencilSource=void 0;for(let yt=0;yt{le.touchstart=le.dragStart,le.touchmoveWindow=le.dragMove,le.touchend=le.dragEnd},ia={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ka{constructor(w,B,Q=!1){this.mousedown=qe=>{this.startMouse(a.e({},qe,{ctrlKey:!0,preventDefault:()=>qe.preventDefault()}),c.mousePos(this.element,qe)),c.addEventListener(window,"mousemove",this.mousemove),c.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=qe=>{this.moveMouse(qe,c.mousePos(this.element,qe))},this.mouseup=qe=>{this.mouseRotate.dragEnd(qe),this.mousePitch&&this.mousePitch.dragEnd(qe),this.offTemp()},this.touchstart=qe=>{qe.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.startTouch(qe,this._startPos),c.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.addEventListener(window,"touchend",this.touchend))},this.touchmove=qe=>{qe.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.moveTouch(qe,this._lastPos))},this.touchend=qe=>{qe.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let ee=w.dragRotate._mouseRotate.getClickTolerance(),se=w.dragRotate._mousePitch.getClickTolerance();this.element=B,this.mouseRotate=Dl({clickTolerance:ee,enable:!0}),this.touchRotate=(({enable:qe,clickTolerance:je,bearingDegreesPerPixelMoved:it=.8})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({bearingDelta:(Nt.x-Ot.x)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:ee,enable:!0}),this.map=w,Q&&(this.mousePitch=Ih({clickTolerance:se,enable:!0}),this.touchPitch=(({enable:qe,clickTolerance:je,pitchDegreesPerPixelMoved:it=-.5})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({pitchDelta:(Nt.y-Ot.y)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:se,enable:!0})),c.addEventListener(B,"mousedown",this.mousedown),c.addEventListener(B,"touchstart",this.touchstart,{passive:!1}),c.addEventListener(B,"touchcancel",this.reset)}startMouse(w,B){this.mouseRotate.dragStart(w,B),this.mousePitch&&this.mousePitch.dragStart(w,B),c.disableDrag()}startTouch(w,B){this.touchRotate.dragStart(w,B),this.touchPitch&&this.touchPitch.dragStart(w,B),c.disableDrag()}moveMouse(w,B){let Q=this.map,{bearingDelta:ee}=this.mouseRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.mousePitch){let{pitchDelta:se}=this.mousePitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}moveTouch(w,B){let Q=this.map,{bearingDelta:ee}=this.touchRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.touchPitch){let{pitchDelta:se}=this.touchPitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}off(){let w=this.element;c.removeEventListener(w,"mousedown",this.mousedown),c.removeEventListener(w,"touchstart",this.touchstart,{passive:!1}),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend),c.removeEventListener(w,"touchcancel",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,"mousemove",this.mousemove),c.removeEventListener(window,"mouseup",this.mouseup),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend)}}let vs;function Ko(le,w,B){let Q=new a.N(le.lng,le.lat);if(le=new a.N(le.lng,le.lat),w){let ee=new a.N(le.lng-360,le.lat),se=new a.N(le.lng+360,le.lat),qe=B.locationPoint(le).distSqr(w);B.locationPoint(ee).distSqr(w)180;){let ee=B.locationPoint(le);if(ee.x>=0&&ee.y>=0&&ee.x<=B.width&&ee.y<=B.height)break;le.lng>B.center.lng?le.lng-=360:le.lng+=360}return le.lng!==Q.lng&&B.locationPoint(le).y>B.height/2-B.getHorizon()?le:Q}let nu={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ru(le,w,B){let Q=le.classList;for(let ee in nu)Q.remove(`maplibregl-${B}-anchor-${ee}`);Q.add(`maplibregl-${B}-anchor-${w}`)}class ac extends a.E{constructor(w){if(super(),this._onKeyPress=B=>{let Q=B.code,ee=B.charCode||B.keyCode;Q!=="Space"&&Q!=="Enter"&&ee!==32&&ee!==13||this.togglePopup()},this._onMapClick=B=>{let Q=B.originalEvent.target,ee=this._element;this._popup&&(Q===ee||ee.contains(Q))&&this.togglePopup()},this._update=B=>{var Q;if(!this._map)return;let ee=this._map.loaded()&&!this._map.isMoving();((B==null?void 0:B.type)==="terrain"||(B==null?void 0:B.type)==="render"&&!ee)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Ko(this._lngLat,this._flatPos,this._map.transform):(Q=this._lngLat)===null||Q===void 0?void 0:Q.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let se="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?se=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(se=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let qe="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?qe="rotateX(0deg)":this._pitchAlignment==="map"&&(qe=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||B&&B.type!=="moveend"||(this._pos=this._pos.round()),c.setTransform(this._element,`${nu[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${qe} ${se}`),u.frameAsync(new AbortController).then(()=>{this._updateOpacity(B&&B.type==="moveend")}).catch(()=>{})},this._onMove=B=>{if(!this._isDragging){let Q=this._clickTolerance||this._map._clickTolerance;this._isDragging=B.point.dist(this._pointerdownPos)>=Q}this._isDragging&&(this._pos=B.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.k("dragstart"))),this.fire(new a.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.k("dragend")),this._state="inactive"},this._addDragHandler=B=>{this._element.contains(B.originalEvent.target)&&(B.preventDefault(),this._positionDelta=B.point.sub(this._pos).add(this._offset),this._pointerdownPos=B.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=w&&w.anchor||"center",this._color=w&&w.color||"#3FB1CE",this._scale=w&&w.scale||1,this._draggable=w&&w.draggable||!1,this._clickTolerance=w&&w.clickTolerance||0,this._subpixelPositioning=w&&w.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=w&&w.rotation||0,this._rotationAlignment=w&&w.rotationAlignment||"auto",this._pitchAlignment=w&&w.pitchAlignment&&w.pitchAlignment!=="auto"?w.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(w==null?void 0:w.opacity,w==null?void 0:w.opacityWhenCovered),w&&w.element)this._element=w.element,this._offset=a.P.convert(w&&w.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create("div");let B=c.createNS("http://www.w3.org/2000/svg","svg"),Q=41,ee=27;B.setAttributeNS(null,"display","block"),B.setAttributeNS(null,"height",`${Q}px`),B.setAttributeNS(null,"width",`${ee}px`),B.setAttributeNS(null,"viewBox",`0 0 ${ee} ${Q}`);let se=c.createNS("http://www.w3.org/2000/svg","g");se.setAttributeNS(null,"stroke","none"),se.setAttributeNS(null,"stroke-width","1"),se.setAttributeNS(null,"fill","none"),se.setAttributeNS(null,"fill-rule","evenodd");let qe=c.createNS("http://www.w3.org/2000/svg","g");qe.setAttributeNS(null,"fill-rule","nonzero");let je=c.createNS("http://www.w3.org/2000/svg","g");je.setAttributeNS(null,"transform","translate(3.0, 29.0)"),je.setAttributeNS(null,"fill","#000000");let it=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let Oe of it){let Je=c.createNS("http://www.w3.org/2000/svg","ellipse");Je.setAttributeNS(null,"opacity","0.04"),Je.setAttributeNS(null,"cx","10.5"),Je.setAttributeNS(null,"cy","5.80029008"),Je.setAttributeNS(null,"rx",Oe.rx),Je.setAttributeNS(null,"ry",Oe.ry),je.appendChild(Je)}let yt=c.createNS("http://www.w3.org/2000/svg","g");yt.setAttributeNS(null,"fill",this._color);let Ot=c.createNS("http://www.w3.org/2000/svg","path");Ot.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),yt.appendChild(Ot);let Nt=c.createNS("http://www.w3.org/2000/svg","g");Nt.setAttributeNS(null,"opacity","0.25"),Nt.setAttributeNS(null,"fill","#000000");let hr=c.createNS("http://www.w3.org/2000/svg","path");hr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),Nt.appendChild(hr);let Sr=c.createNS("http://www.w3.org/2000/svg","g");Sr.setAttributeNS(null,"transform","translate(6.0, 7.0)"),Sr.setAttributeNS(null,"fill","#FFFFFF");let he=c.createNS("http://www.w3.org/2000/svg","g");he.setAttributeNS(null,"transform","translate(8.0, 8.0)");let be=c.createNS("http://www.w3.org/2000/svg","circle");be.setAttributeNS(null,"fill","#000000"),be.setAttributeNS(null,"opacity","0.25"),be.setAttributeNS(null,"cx","5.5"),be.setAttributeNS(null,"cy","5.5"),be.setAttributeNS(null,"r","5.4999962");let Pe=c.createNS("http://www.w3.org/2000/svg","circle");Pe.setAttributeNS(null,"fill","#FFFFFF"),Pe.setAttributeNS(null,"cx","5.5"),Pe.setAttributeNS(null,"cy","5.5"),Pe.setAttributeNS(null,"r","5.4999962"),he.appendChild(be),he.appendChild(Pe),qe.appendChild(je),qe.appendChild(yt),qe.appendChild(Nt),qe.appendChild(Sr),qe.appendChild(he),B.appendChild(qe),B.setAttributeNS(null,"height",Q*this._scale+"px"),B.setAttributeNS(null,"width",ee*this._scale+"px"),this._element.appendChild(B),this._offset=a.P.convert(w&&w.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",B=>{B.preventDefault()}),this._element.addEventListener("mousedown",B=>{B.preventDefault()}),Ru(this._element,this._anchor,"marker"),w&&w.className)for(let B of w.className.split(" "))this._element.classList.add(B);this._popup=null}addTo(w){return this.remove(),this._map=w,this._element.setAttribute("aria-label",w._getUIString("Marker.Title")),w.getCanvasContainer().appendChild(this._element),w.on("move",this._update),w.on("moveend",this._update),w.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(w){return this._lngLat=a.N.convert(w),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(w){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),w){if(!("offset"in w.options)){let ee=Math.abs(13.5)/Math.SQRT2;w.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[ee,-1*(38.1-13.5+ee)],"bottom-right":[-ee,-1*(38.1-13.5+ee)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=w,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(w){return this._subpixelPositioning=w,this}getPopup(){return this._popup}togglePopup(){let w=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:w?(w.isOpen()?w.remove():(w.setLngLat(this._lngLat),w.addTo(this._map)),this):this}_updateOpacity(w=!1){var B,Q;if(!(!((B=this._map)===null||B===void 0)&&B.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(w)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let ee=this._map,se=ee.terrain.depthAtPoint(this._pos),qe=ee.terrain.getElevationForLngLatZoom(this._lngLat,ee.transform.tileZoom);if(ee.transform.lngLatToCameraDepth(this._lngLat,qe)-se<.006)return void(this._element.style.opacity=this._opacity);let je=-this._offset.y/ee.transform._pixelPerMeter,it=Math.sin(ee.getPitch()*Math.PI/180)*je,yt=ee.terrain.depthAtPoint(new a.P(this._pos.x,this._pos.y-this._offset.y)),Ot=ee.transform.lngLatToCameraDepth(this._lngLat,qe+it)-yt>.006;!((Q=this._popup)===null||Q===void 0)&&Q.isOpen()&&Ot&&this._popup.remove(),this._element.style.opacity=Ot?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(w){return this._offset=a.P.convert(w),this._update(),this}addClassName(w){this._element.classList.add(w)}removeClassName(w){this._element.classList.remove(w)}toggleClassName(w){return this._element.classList.toggle(w)}setDraggable(w){return this._draggable=!!w,this._map&&(w?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(w){return this._rotation=w||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(w){return this._rotationAlignment=w||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(w){return this._pitchAlignment=w&&w!=="auto"?w:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(w,B){return w===void 0&&B===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),w!==void 0&&(this._opacity=w),B!==void 0&&(this._opacityWhenCovered=B),this._map&&this._updateOpacity(!0),this}}let mf={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},bu=0,Kc=!1,Du={maxWidth:100,unit:"metric"};function Dc(le,w,B){let Q=B&&B.maxWidth||100,ee=le._container.clientHeight/2,se=le.unproject([0,ee]),qe=le.unproject([Q,ee]),je=se.distanceTo(qe);if(B&&B.unit==="imperial"){let it=3.2808*je;it>5280?Da(w,Q,it/5280,le._getUIString("ScaleControl.Miles")):Da(w,Q,it,le._getUIString("ScaleControl.Feet"))}else B&&B.unit==="nautical"?Da(w,Q,je/1852,le._getUIString("ScaleControl.NauticalMiles")):je>=1e3?Da(w,Q,je/1e3,le._getUIString("ScaleControl.Kilometers")):Da(w,Q,je,le._getUIString("ScaleControl.Meters"))}function Da(le,w,B,Q){let ee=function(se){let qe=Math.pow(10,`${Math.floor(se)}`.length-1),je=se/qe;return je=je>=10?10:je>=5?5:je>=3?3:je>=2?2:je>=1?1:function(it){let yt=Math.pow(10,Math.ceil(-Math.log(it)/Math.LN10));return Math.round(it*yt)/yt}(je),qe*je}(B);le.style.width=w*(ee/B)+"px",le.innerHTML=`${ee} ${Q}`}let eo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Jc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function yc(le){if(le){if(typeof le=="number"){let w=Math.round(Math.abs(le)/Math.SQRT2);return{center:new a.P(0,0),top:new a.P(0,le),"top-left":new a.P(w,w),"top-right":new a.P(-w,w),bottom:new a.P(0,-le),"bottom-left":new a.P(w,-w),"bottom-right":new a.P(-w,-w),left:new a.P(le,0),right:new a.P(-le,0)}}if(le instanceof a.P||Array.isArray(le)){let w=a.P.convert(le);return{center:w,top:w,"top-left":w,"top-right":w,bottom:w,"bottom-left":w,"bottom-right":w,left:w,right:w}}return{center:a.P.convert(le.center||[0,0]),top:a.P.convert(le.top||[0,0]),"top-left":a.P.convert(le["top-left"]||[0,0]),"top-right":a.P.convert(le["top-right"]||[0,0]),bottom:a.P.convert(le.bottom||[0,0]),"bottom-left":a.P.convert(le["bottom-left"]||[0,0]),"bottom-right":a.P.convert(le["bottom-right"]||[0,0]),left:a.P.convert(le.left||[0,0]),right:a.P.convert(le.right||[0,0])}}return yc(new a.P(0,0))}let _c=o;i.AJAXError=a.bh,i.Evented=a.E,i.LngLat=a.N,i.MercatorCoordinate=a.Z,i.Point=a.P,i.addProtocol=a.bi,i.config=a.a,i.removeProtocol=a.bj,i.AttributionControl=qa,i.BoxZoomHandler=xu,i.CanvasSource=Ct,i.CooperativeGesturesHandler=qi,i.DoubleClickZoomHandler=fi,i.DragPanHandler=Xi,i.DragRotateHandler=hn,i.EdgeInsets=ic,i.FullscreenControl=class extends a.E{constructor(le={}){super(),this._onFullscreenChange=()=>{var w;let B=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((w=B==null?void 0:B.shadowRoot)===null||w===void 0)&&w.fullscreenElement;)B=B.shadowRoot.fullscreenElement;B===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,le&&le.container&&(le.container instanceof HTMLElement?this._container=le.container:a.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(le){return this._map=le,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let le=this._fullscreenButton=c.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);c.create("span","maplibregl-ctrl-icon",le).setAttribute("aria-hidden","true"),le.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let le=this._getTitle();this._fullscreenButton.setAttribute("aria-label",le),this._fullscreenButton.title=le}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new a.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},i.GeoJSONSource=rt,i.GeolocateControl=class extends a.E{constructor(le){super(),this._onSuccess=w=>{if(this._map){if(this._isOutOfMapMaxBounds(w))return this._setErrorState(),this.fire(new a.k("outofmaxbounds",w)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=w,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(w),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(w),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.k("geolocate",w)),this._finish()}},this._updateCamera=w=>{let B=new a.N(w.coords.longitude,w.coords.latitude),Q=w.coords.accuracy,ee=this._map.getBearing(),se=a.e({bearing:ee},this.options.fitBoundsOptions),qe=ce.fromLngLat(B,Q);this._map.fitBounds(qe,se,{geolocateSource:!0})},this._updateMarker=w=>{if(w){let B=new a.N(w.coords.longitude,w.coords.latitude);this._accuracyCircleMarker.setLngLat(B).addTo(this._map),this._userLocationDotMarker.setLngLat(B).addTo(this._map),this._accuracy=w.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=w=>{if(this._map){if(this.options.trackUserLocation)if(w.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(w.code===3&&Kc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.k("error",w)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",w=>w.preventDefault()),this._geolocateButton=c.create("button","maplibregl-ctrl-geolocate",this._container),c.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=w=>{if(this._map){if(w===!1){a.w("Geolocation support is not available so the GeolocateControl will be disabled.");let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}else{let B=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=c.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ac({element:this._dotElement}),this._circleElement=c.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ac({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",B=>{B.geolocateSource||this._watchState!=="ACTIVE_LOCK"||B.originalEvent&&B.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.k("trackuserlocationend")),this.fire(new a.k("userlocationlostfocus")))})}},this.options=a.e({},mf,le)}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return a._(this,arguments,void 0,function*(w=!1){if(vs!==void 0&&!w)return vs;if(window.navigator.permissions===void 0)return vs=!!window.navigator.geolocation,vs;try{vs=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch(B){vs=!!window.navigator.geolocation}return vs})}().then(w=>this._finishSetupUI(w)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,bu=0,Kc=!1}_isOutOfMapMaxBounds(le){let w=this._map.getMaxBounds(),B=le.coords;return w&&(B.longitudew.getEast()||B.latitudew.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let le=this._map.getBounds(),w=le.getSouthEast(),B=le.getNorthEast(),Q=w.distanceTo(B),ee=Math.ceil(this._accuracy/(Q/this._map._container.clientHeight)*2);this._circleElement.style.width=`${ee}px`,this._circleElement.style.height=`${ee}px`}trigger(){if(!this._setup)return a.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":bu--,Kc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.k("trackuserlocationstart")),this.fire(new a.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let le;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),bu++,bu>1?(le={maximumAge:6e5,timeout:0},Kc=!0):(le=this.options.positionOptions,Kc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,le)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},i.Hash=gd,i.ImageSource=Rt,i.KeyboardHandler=Bt,i.LngLatBounds=ce,i.LogoControl=Cn,i.Map=class extends Ta{constructor(le){a.bf.mark(a.bg.create);let w=Object.assign(Object.assign({},Gs),le);if(w.minZoom!=null&&w.maxZoom!=null&&w.minZoom>w.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(w.minPitch!=null&&w.maxPitch!=null&&w.minPitch>w.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(w.minPitch!=null&&w.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(w.maxPitch!=null&&w.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Qs(w.minZoom,w.maxZoom,w.minPitch,w.maxPitch,w.renderWorldCopies),{bearingSnap:w.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new sn,this._controls=[],this._mapId=a.a4(),this._contextLost=B=>{B.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new a.k("webglcontextlost",{originalEvent:B}))},this._contextRestored=B=>{this._setupPainter(),this.resize(),this._update(),this.fire(new a.k("webglcontextrestored",{originalEvent:B}))},this._onMapScroll=B=>{if(B.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=w.interactive,this._maxTileCacheSize=w.maxTileCacheSize,this._maxTileCacheZoomLevels=w.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=w.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=w.preserveDrawingBuffer===!0,this._antialias=w.antialias===!0,this._trackResize=w.trackResize===!0,this._bearingSnap=w.bearingSnap,this._refreshExpiredTiles=w.refreshExpiredTiles===!0,this._fadeDuration=w.fadeDuration,this._crossSourceCollisions=w.crossSourceCollisions===!0,this._collectResourceTiming=w.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Bo),w.locale),this._clickTolerance=w.clickTolerance,this._overridePixelRatio=w.pixelRatio,this._maxCanvasSize=w.maxCanvasSize,this.transformCameraUpdate=w.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=w.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=p.addThrottleControl(()=>this.isMoving()),this._requestManager=new E(w.transformRequest),typeof w.container=="string"){if(this._container=document.getElementById(w.container),!this._container)throw new Error(`Container '${w.container}' not found.`)}else{if(!(w.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=w.container}if(w.maxBounds&&this.setMaxBounds(w.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window!="undefined"){addEventListener("online",this._onWindowOnline,!1);let B=!1,Q=Qh(ee=>{this._trackResize&&!this._removed&&(this.resize(ee),this.redraw())},50);this._resizeObserver=new ResizeObserver(ee=>{B?Q(ee):B=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Ma(this,w),this._hash=w.hash&&new gd(typeof w.hash=="string"&&w.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:w.center,zoom:w.zoom,bearing:w.bearing,pitch:w.pitch}),w.bounds&&(this.resize(),this.fitBounds(w.bounds,a.e({},w.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=w.localIdeographFontFamily,this._validateStyle=w.validateStyle,w.style&&this.setStyle(w.style,{localIdeographFontFamily:w.localIdeographFontFamily}),w.attributionControl&&this.addControl(new qa(typeof w.attributionControl=="boolean"?void 0:w.attributionControl)),w.maplibreLogo&&this.addControl(new Cn,w.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",B=>{this._update(B.dataType==="style"),this.fire(new a.k(`${B.dataType}data`,B))}),this.on("dataloading",B=>{this.fire(new a.k(`${B.dataType}dataloading`,B))}),this.on("dataabort",B=>{this.fire(new a.k("sourcedataabort",B))})}_getMapId(){return this._mapId}addControl(le,w){if(w===void 0&&(w=le.getDefaultPosition?le.getDefaultPosition():"top-right"),!le||!le.onAdd)return this.fire(new a.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let B=le.onAdd(this);this._controls.push(le);let Q=this._controlPositions[w];return w.indexOf("bottom")!==-1?Q.insertBefore(B,Q.firstChild):Q.appendChild(B),this}removeControl(le){if(!le||!le.onRemove)return this.fire(new a.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let w=this._controls.indexOf(le);return w>-1&&this._controls.splice(w,1),le.onRemove(this),this}hasControl(le){return this._controls.indexOf(le)>-1}calculateCameraOptionsFromTo(le,w,B,Q){return Q==null&&this.terrain&&(Q=this.terrain.getElevationForLngLatZoom(B,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(le,w,B,Q)}resize(le){var w;let B=this._containerDimensions(),Q=B[0],ee=B[1],se=this._getClampedPixelRatio(Q,ee);if(this._resizeCanvas(Q,ee,se),this.painter.resize(Q,ee,se),this.painter.overLimit()){let je=this.painter.context.gl;this._maxCanvasSize=[je.drawingBufferWidth,je.drawingBufferHeight];let it=this._getClampedPixelRatio(Q,ee);this._resizeCanvas(Q,ee,it),this.painter.resize(Q,ee,it)}this.transform.resize(Q,ee),(w=this._requestedCameraState)===null||w===void 0||w.resize(Q,ee);let qe=!this._moving;return qe&&(this.stop(),this.fire(new a.k("movestart",le)).fire(new a.k("move",le))),this.fire(new a.k("resize",le)),qe&&this.fire(new a.k("moveend",le)),this}_getClampedPixelRatio(le,w){let{0:B,1:Q}=this._maxCanvasSize,ee=this.getPixelRatio(),se=le*ee,qe=w*ee;return Math.min(se>B?B/se:1,qe>Q?Q/qe:1)*ee}getPixelRatio(){var le;return(le=this._overridePixelRatio)!==null&&le!==void 0?le:devicePixelRatio}setPixelRatio(le){this._overridePixelRatio=le,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(le){return this.transform.setMaxBounds(ce.convert(le)),this._update()}setMinZoom(le){if((le=le==null?-2:le)>=-2&&le<=this.transform.maxZoom)return this.transform.minZoom=le,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=le,this._update(),this.getZoom()>le&&this.setZoom(le),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(le){if((le=le==null?0:le)<0)throw new Error("minPitch must be greater than or equal to 0");if(le>=0&&le<=this.transform.maxPitch)return this.transform.minPitch=le,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(le>=this.transform.minPitch)return this.transform.maxPitch=le,this._update(),this.getPitch()>le&&this.setPitch(le),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(le){return this.transform.renderWorldCopies=le,this._update()}project(le){return this.transform.locationPoint(a.N.convert(le),this.style&&this.terrain)}unproject(le){return this.transform.pointLocation(a.P.convert(le),this.terrain)}isMoving(){var le;return this._moving||((le=this.handlers)===null||le===void 0?void 0:le.isMoving())}isZooming(){var le;return this._zooming||((le=this.handlers)===null||le===void 0?void 0:le.isZooming())}isRotating(){var le;return this._rotating||((le=this.handlers)===null||le===void 0?void 0:le.isRotating())}_createDelegatedListener(le,w,B){if(le==="mouseenter"||le==="mouseover"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:se=>{let qe=w.filter(it=>this.getLayer(it)),je=qe.length!==0?this.queryRenderedFeatures(se.point,{layers:qe}):[];je.length?Q||(Q=!0,B.call(this,new ru(le,this,se.originalEvent,{features:je}))):Q=!1},mouseout:()=>{Q=!1}}}}if(le==="mouseleave"||le==="mouseout"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:qe=>{let je=w.filter(it=>this.getLayer(it));(je.length!==0?this.queryRenderedFeatures(qe.point,{layers:je}):[]).length?Q=!0:Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))},mouseout:qe=>{Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))}}}}{let Q=ee=>{let se=w.filter(je=>this.getLayer(je)),qe=se.length!==0?this.queryRenderedFeatures(ee.point,{layers:se}):[];qe.length&&(ee.features=qe,B.call(this,ee),delete ee.features)};return{layers:w,listener:B,delegates:{[le]:Q}}}}_saveDelegatedListener(le,w){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[le]=this._delegatedListeners[le]||[],this._delegatedListeners[le].push(w)}_removeDelegatedListener(le,w,B){if(!this._delegatedListeners||!this._delegatedListeners[le])return;let Q=this._delegatedListeners[le];for(let ee=0;eew.includes(qe))){for(let qe in se.delegates)this.off(qe,se.delegates[qe]);return void Q.splice(ee,1)}}}on(le,w,B){if(B===void 0)return super.on(le,w);let Q=this._createDelegatedListener(le,typeof w=="string"?[w]:w,B);this._saveDelegatedListener(le,Q);for(let ee in Q.delegates)this.on(ee,Q.delegates[ee]);return this}once(le,w,B){if(B===void 0)return super.once(le,w);let Q=typeof w=="string"?[w]:w,ee=this._createDelegatedListener(le,Q,B);for(let se in ee.delegates){let qe=ee.delegates[se];ee.delegates[se]=(...je)=>{this._removeDelegatedListener(le,Q,B),qe(...je)}}this._saveDelegatedListener(le,ee);for(let se in ee.delegates)this.once(se,ee.delegates[se]);return this}off(le,w,B){return B===void 0?super.off(le,w):(this._removeDelegatedListener(le,typeof w=="string"?[w]:w,B),this)}queryRenderedFeatures(le,w){if(!this.style)return[];let B,Q=le instanceof a.P||Array.isArray(le),ee=Q?le:[[0,0],[this.transform.width,this.transform.height]];if(w=w||(Q?{}:le)||{},ee instanceof a.P||typeof ee[0]=="number")B=[a.P.convert(ee)];else{let se=a.P.convert(ee[0]),qe=a.P.convert(ee[1]);B=[se,new a.P(qe.x,se.y),qe,new a.P(se.x,qe.y),se]}return this.style.queryRenderedFeatures(B,w,this.transform)}querySourceFeatures(le,w){return this.style.querySourceFeatures(le,w)}setStyle(le,w){return(w=a.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},w)).diff!==!1&&w.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&le?(this._diffStyle(le,w),this):(this._localIdeographFontFamily=w.localIdeographFontFamily,this._updateStyle(le,w))}setTransformRequest(le){return this._requestManager.setTransformRequest(le),this}_getUIString(le){let w=this._locale[le];if(w==null)throw new Error(`Missing UI string '${le}'`);return w}_updateStyle(le,w){if(w.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(le,w));let B=this.style&&w.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!le)),le?(this.style=new Ha(this,w||{}),this.style.setEventedParent(this,{style:this.style}),typeof le=="string"?this.style.loadURL(le,w,B):this.style.loadJSON(le,w,B),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ha(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(le,w){if(typeof le=="string"){let B=this._requestManager.transformRequest(le,"Style");a.h(B,new AbortController).then(Q=>{this._updateDiff(Q.data,w)}).catch(Q=>{Q&&this.fire(new a.j(Q))})}else typeof le=="object"&&this._updateDiff(le,w)}_updateDiff(le,w){try{this.style.setState(le,w)&&this._update(!0)}catch(B){a.w(`Unable to perform style diff: ${B.message||B.error||B}. Rebuilding the style from scratch.`),this._updateStyle(le,w)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.w("There is no style added to the map.")}addSource(le,w){return this._lazyInitEmptyStyle(),this.style.addSource(le,w),this._update(!0)}isSourceLoaded(le){let w=this.style&&this.style.sourceCaches[le];if(w!==void 0)return w.loaded();this.fire(new a.j(new Error(`There is no source with ID '${le}'`)))}setTerrain(le){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),le){let w=this.style.sourceCaches[le.source];if(!w)throw new Error(`cannot load terrain, because there exists no source with ID: ${le.source}`);this.terrain===null&&w.reload();for(let B in this.style._layers){let Q=this.style._layers[B];Q.type==="hillshade"&&Q.source===le.source&&a.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Xo(this.painter,w,le),this.painter.renderToTexture=new ys(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=B=>{B.dataType==="style"?this.terrain.sourceCache.freeRtt():B.dataType==="source"&&B.tile&&(B.sourceId!==le.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(B.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new a.k("terrain",{terrain:le})),this}getTerrain(){var le,w;return(w=(le=this.terrain)===null||le===void 0?void 0:le.options)!==null&&w!==void 0?w:null}areTilesLoaded(){let le=this.style&&this.style.sourceCaches;for(let w in le){let B=le[w]._tiles;for(let Q in B){let ee=B[Q];if(ee.state!=="loaded"&&ee.state!=="errored")return!1}}return!0}removeSource(le){return this.style.removeSource(le),this._update(!0)}getSource(le){return this.style.getSource(le)}addImage(le,w,B={}){let{pixelRatio:Q=1,sdf:ee=!1,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt}=B;if(this._lazyInitEmptyStyle(),!(w instanceof HTMLImageElement||a.b(w))){if(w.width===void 0||w.height===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:Ot,height:Nt,data:hr}=w,Sr=w;return this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},new Uint8Array(hr)),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0,userImage:Sr}),Sr.onAdd&&Sr.onAdd(this,le),this}}{let{width:Ot,height:Nt,data:hr}=u.getImageData(w);this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},hr),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0})}}updateImage(le,w){let B=this.style.getImage(le);if(!B)return this.fire(new a.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let Q=w instanceof HTMLImageElement||a.b(w)?u.getImageData(w):w,{width:ee,height:se,data:qe}=Q;if(ee===void 0||se===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(ee!==B.data.width||se!==B.data.height)return this.fire(new a.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let je=!(w instanceof HTMLImageElement||a.b(w));return B.data.replace(qe,je),this.style.updateImage(le,B),this}getImage(le){return this.style.getImage(le)}hasImage(le){return le?!!this.style.getImage(le):(this.fire(new a.j(new Error("Missing required image id"))),!1)}removeImage(le){this.style.removeImage(le)}loadImage(le){return p.getImage(this._requestManager.transformRequest(le,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(le,w){return this._lazyInitEmptyStyle(),this.style.addLayer(le,w),this._update(!0)}moveLayer(le,w){return this.style.moveLayer(le,w),this._update(!0)}removeLayer(le){return this.style.removeLayer(le),this._update(!0)}getLayer(le){return this.style.getLayer(le)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(le,w,B){return this.style.setLayerZoomRange(le,w,B),this._update(!0)}setFilter(le,w,B={}){return this.style.setFilter(le,w,B),this._update(!0)}getFilter(le){return this.style.getFilter(le)}setPaintProperty(le,w,B,Q={}){return this.style.setPaintProperty(le,w,B,Q),this._update(!0)}getPaintProperty(le,w){return this.style.getPaintProperty(le,w)}setLayoutProperty(le,w,B,Q={}){return this.style.setLayoutProperty(le,w,B,Q),this._update(!0)}getLayoutProperty(le,w){return this.style.getLayoutProperty(le,w)}setGlyphs(le,w={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(le,w),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(le,w,B={}){return this._lazyInitEmptyStyle(),this.style.addSprite(le,w,B,Q=>{Q||this._update(!0)}),this}removeSprite(le){return this._lazyInitEmptyStyle(),this.style.removeSprite(le),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(le,w={}){return this._lazyInitEmptyStyle(),this.style.setSprite(le,w,B=>{B||this._update(!0)}),this}setLight(le,w={}){return this._lazyInitEmptyStyle(),this.style.setLight(le,w),this._update(!0)}getLight(){return this.style.getLight()}setSky(le){return this._lazyInitEmptyStyle(),this.style.setSky(le),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(le,w){return this.style.setFeatureState(le,w),this._update()}removeFeatureState(le,w){return this.style.removeFeatureState(le,w),this._update()}getFeatureState(le){return this.style.getFeatureState(le)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let le=0,w=0;return this._container&&(le=this._container.clientWidth||400,w=this._container.clientHeight||300),[le,w]}_setupContainer(){let le=this._container;le.classList.add("maplibregl-map");let w=this._canvasContainer=c.create("div","maplibregl-canvas-container",le);this._interactive&&w.classList.add("maplibregl-interactive"),this._canvas=c.create("canvas","maplibregl-canvas",w),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let B=this._containerDimensions(),Q=this._getClampedPixelRatio(B[0],B[1]);this._resizeCanvas(B[0],B[1],Q);let ee=this._controlContainer=c.create("div","maplibregl-control-container",le),se=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(qe=>{se[qe]=c.create("div",`maplibregl-ctrl-${qe} `,ee)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(le,w,B){this._canvas.width=Math.floor(B*le),this._canvas.height=Math.floor(B*w),this._canvas.style.width=`${le}px`,this._canvas.style.height=`${w}px`}_setupPainter(){let le={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},w=null;this._canvas.addEventListener("webglcontextcreationerror",Q=>{w={requestedAttributes:le},Q&&(w.statusMessage=Q.statusMessage,w.type=Q.type)},{once:!0});let B=this._canvas.getContext("webgl2",le)||this._canvas.getContext("webgl",le);if(!B){let Q="Failed to initialize WebGL";throw w?(w.message=Q,new Error(JSON.stringify(w))):new Error(Q)}this.painter=new Lc(B,this.transform),f.testSupport(B)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(le){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||le,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(le){return this._update(),this._renderTaskQueue.add(le)}_cancelRenderFrame(le){this._renderTaskQueue.remove(le)}_render(le){let w=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(le),this._removed)return;let B=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let ee=this.transform.zoom,se=u.now();this.style.zoomHistory.update(ee,se);let qe=new a.z(ee,{now:se,fadeDuration:w,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),je=qe.crossFadingFactor();je===1&&je===this._crossFadingFactor||(B=!0,this._crossFadingFactor=je),this.style.update(qe)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,w,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:w,showPadding:this.showPadding}),this.fire(new a.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.bf.mark(a.bg.load),this.fire(new a.k("load"))),this.style&&(this.style.hasTransitions()||B)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let Q=this._sourcesDirty||this._styleDirty||this._placementDirty;return Q||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.k("idle")),!this._loaded||this._fullyLoaded||Q||(this._fullyLoaded=!0,a.bf.mark(a.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var le;this._hash&&this._hash.remove();for(let B of this._controls)B.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window!="undefined"&&removeEventListener("online",this._onWindowOnline,!1),p.removeThrottleControl(this._imageQueueHandle),(le=this._resizeObserver)===null||le===void 0||le.disconnect();let w=this.painter.context.gl.getExtension("WEBGL_lose_context");w!=null&&w.loseContext&&w.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),a.bf.clearMetrics(),this._removed=!0,this.fire(new a.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(le=>{a.bf.frame(le),this._frameRequest=null,this._render(le)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(le){this._showTileBoundaries!==le&&(this._showTileBoundaries=le,this._update())}get showPadding(){return!!this._showPadding}set showPadding(le){this._showPadding!==le&&(this._showPadding=le,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(le){this._showCollisionBoxes!==le&&(this._showCollisionBoxes=le,le?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(le){this._showOverdrawInspector!==le&&(this._showOverdrawInspector=le,this._update())}get repaint(){return!!this._repaint}set repaint(le){this._repaint!==le&&(this._repaint=le,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(le){this._vertices=le,this._update()}get version(){return yl}getCameraTargetElevation(){return this.transform.elevation}},i.MapMouseEvent=ru,i.MapTouchEvent=vf,i.MapWheelEvent=md,i.Marker=ac,i.NavigationControl=class{constructor(le){this._updateZoomButtons=()=>{let w=this._map.getZoom(),B=w===this._map.getMaxZoom(),Q=w===this._map.getMinZoom();this._zoomInButton.disabled=B,this._zoomOutButton.disabled=Q,this._zoomInButton.setAttribute("aria-disabled",B.toString()),this._zoomOutButton.setAttribute("aria-disabled",Q.toString())},this._rotateCompassArrow=()=>{let w=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=w},this._setButtonTitle=(w,B)=>{let Q=this._map._getUIString(`NavigationControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)},this.options=a.e({},ia,le),this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",w=>w.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",w=>this._map.zoomIn({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",w=>this._map.zoomOut({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",w=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:w}):this._map.resetNorth({},{originalEvent:w})}),this._compassIcon=c.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(le){return this._map=le,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ka(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(le,w){let B=c.create("button",le,this._container);return B.type="button",B.addEventListener("click",w),B}},i.Popup=class extends a.E{constructor(le){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new a.k("close"))),this),this._onMouseUp=w=>{this._update(w.point)},this._onMouseMove=w=>{this._update(w.point)},this._onDrag=w=>{this._update(w.point)},this._update=w=>{var B;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create("div","maplibregl-popup",this._map.getContainer()),this._tip=c.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let je of this.options.className.split(" "))this._container.classList.add(je);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Ko(this._lngLat,this._flatPos,this._map.transform):(B=this._lngLat)===null||B===void 0?void 0:B.wrap(),this._trackPointer&&!w)return;let Q=this._flatPos=this._pos=this._trackPointer&&w?w:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&w?w:this._map.transform.locationPoint(this._lngLat));let ee=this.options.anchor,se=yc(this.options.offset);if(!ee){let je=this._container.offsetWidth,it=this._container.offsetHeight,yt;yt=Q.y+se.bottom.ythis._map.transform.height-it?["bottom"]:[],Q.xthis._map.transform.width-je/2&&yt.push("right"),ee=yt.length===0?"bottom":yt.join("-")}let qe=Q.add(se[ee]);this.options.subpixelPositioning||(qe=qe.round()),c.setTransform(this._container,`${nu[ee]} translate(${qe.x}px,${qe.y}px)`),Ru(this._container,ee,"popup")},this._onClose=()=>{this.remove()},this.options=a.e(Object.create(eo),le)}addTo(le){return this._map&&this.remove(),this._map=le,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(le){return this._lngLat=a.N.convert(le),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(le){return this.setDOMContent(document.createTextNode(le))}setHTML(le){let w=document.createDocumentFragment(),B=document.createElement("body"),Q;for(B.innerHTML=le;Q=B.firstChild,Q;)w.appendChild(Q);return this.setDOMContent(w)}getMaxWidth(){var le;return(le=this._container)===null||le===void 0?void 0:le.style.maxWidth}setMaxWidth(le){return this.options.maxWidth=le,this._update(),this}setDOMContent(le){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(le),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(le){return this._container&&this._container.classList.add(le),this}removeClassName(le){return this._container&&this._container.classList.remove(le),this}setOffset(le){return this.options.offset=le,this._update(),this}toggleClassName(le){if(this._container)return this._container.classList.toggle(le)}setSubpixelPositioning(le){this.options.subpixelPositioning=le}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let le=this._container.querySelector(Jc);le&&le.focus()}},i.RasterDEMTileSource=qt,i.RasterTileSource=ct,i.ScaleControl=class{constructor(le){this._onMove=()=>{Dc(this._map,this._container,this.options)},this.setUnit=w=>{this.options.unit=w,Dc(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Du),le)}getDefaultPosition(){return"bottom-left"}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-scale",le.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},i.ScrollZoomHandler=Ur,i.Style=Ha,i.TerrainControl=class{constructor(le){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=le}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=c.create("button","maplibregl-ctrl-terrain",this._container),c.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},i.TwoFingersTouchPitchHandler=gf,i.TwoFingersTouchRotateHandler=Yc,i.TwoFingersTouchZoomHandler=iu,i.TwoFingersTouchZoomRotateHandler=Ti,i.VectorTileSource=nt,i.VideoSource=kt,i.addSourceType=(le,w)=>a._(void 0,void 0,void 0,function*(){if(xr(le))throw new Error(`A source type called "${le}" already exists.`);((B,Q)=>{Yt[B]=Q})(le,w)}),i.clearPrewarmedResources=function(){let le=ge;le&&(le.isPreloaded()&&le.numActive()===1?(le.release(_e),ge=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.getMaxParallelImageRequests=function(){return a.a.MAX_PARALLEL_IMAGE_REQUESTS},i.getRTLTextPluginStatus=function(){return bt().getRTLTextPluginStatus()},i.getVersion=function(){return _c},i.getWorkerCount=function(){return Me.workerCount},i.getWorkerUrl=function(){return a.a.WORKER_URL},i.importScriptInWorkers=function(le){return Ae().broadcast("IS",le)},i.prewarm=function(){Te().acquire(_e)},i.setMaxParallelImageRequests=function(le){a.a.MAX_PARALLEL_IMAGE_REQUESTS=le},i.setRTLTextPlugin=function(le,w){return bt().setRTLTextPlugin(le,w)},i.setWorkerCount=function(le){Me.workerCount=le},i.setWorkerUrl=function(le){a.a.WORKER_URL=le}});var n=e;return n})});var KHe=ye((Z1r,YHe)=>{"use strict";var iw=Mr(),gjt=Pl().sanitizeHTML,mjt=fJ(),WHe=wx();function ZHe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=WHe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ag=ZHe.prototype;ag.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=n7(t)};ag.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ag.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ag.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ag.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ag.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ag.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!n7(e)){var r=yjt(e);t.addSource(this.idSource,r)}};ag.findFollowingMapLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function XHe(e){var t={},r={};switch(e.type){case"circle":iw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":iw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":iw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=mjt(n.textposition,n.iconsize);iw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),iw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":iw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function yjt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=gjt(e.sourceattribution)),n}YHe.exports=function(t,r,n){var i=new ZHe(t,r);return i.update(n),i}});var nGe=ye((X1r,iGe)=>{"use strict";var mJ=jHe(),yJ=Mr(),QHe=nx(),JHe=ba(),_jt=Qa(),xjt=gv(),a7=Nc(),eGe=Sg(),bjt=eGe.drawMode,wjt=eGe.selectMode,Tjt=wf().prepSelect,Ajt=wf().clearOutline,Sjt=wf().clearSelectionsCache,Mjt=wf().selectOnClick,nw=wx(),Ejt=KHe();function tGe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Sh=tGe.prototype;Sh.plot=function(e,t,r){var n=this,i;n.map?i=new Promise(function(a,o){n.updateMap(e,t,a,o)}):i=new Promise(function(a,o){n.createMap(e,t,a,o)}),r.push(i)};Sh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=rGe(a.style),s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new mJ.Map({container:i.div,style:o.style,center:_J(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new mJ.AttributionControl({compact:!0})),c={};u.on("styleimagemissing",function(h){var d=h.id;if(!c[d]&&d.includes("-15")){c[d]=!0;var v=new Image(15,15);v.onload=function(){u.addImage(d,v)},v.crossOrigin="Anonymous",v.src="https://unpkg.com/maki@2.1.0/icons/"+d+".svg"}}),u.setTransformRequest(function(h){return h=h.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:h}}),u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var f=[];f.push(new Promise(function(h){u.once("load",h)})),f=f.concat(QHe.fetchTraceGeoData(e)),Promise.all(f).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=rGe(o.style);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(QHe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&Mjt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&a7.click(n,l.originalEvent)}}};Sh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=yJ.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),wjt(a)||bjt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){Tjt(l,u,c,t.dragOptions,a)},xjt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Sh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Sh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var xJ=Mr(),Cjt=C_(),Ljt=Zd(),aGe=Ok();oGe.exports=function(t,r,n){Cjt(t,r,n,{type:"map",attributes:aGe,handleDefaults:Pjt,partition:"y"})};function Pjt(e,t,r){r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var n=r("bounds.west"),i=r("bounds.east"),a=r("bounds.south"),o=r("bounds.north");(n===void 0||i===void 0||a===void 0||o===void 0)&&delete t.bounds,Ljt(e,t,{name:"layers",handleItemDefaults:Ijt}),t._input=e}function Ijt(e,t){function r(l,u){return xJ.coerce(e,t,aGe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",xJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),xJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var s7=ye(l0=>{"use strict";var o7=Mr(),lGe=o7.strTranslate,Rjt=o7.strScale,Djt=kd().getSubplotCalcData,zjt=Zp(),Fjt=xa(),uGe=ao(),qjt=Pl(),Ojt=nGe(),Tx="map";l0.name=Tx;l0.attr="subplot";l0.idRoot=Tx;l0.idRegex=l0.attrRegex=o7.counterRegex(Tx);l0.attributes={subplot:{valType:"subplotid",dflt:"map",editType:"calc"}};l0.layoutAttributes=Ok();l0.supplyLayoutDefaults=sGe();l0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[Tx],a=0;ax/2){var b=f.split("|").join("
");d.text(b).attr("data-unformatted",b).call(qjt.convertToTspans,e),v=uGe.bBox(d.node())}d.attr("transform",lGe(-3,-v.height+8)),h.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var p=1;v.width+6>x&&(p=x/(v.width+6));var E=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];h.attr("transform",lGe(E[0],E[1])+Rjt(p))}};l0.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[Tx],n=0;n{"use strict";cGe.exports={attributes:$F(),supplyDefaults:THe(),colorbar:Kd(),formatLabels:cJ(),calc:lz(),plot:qHe(),hoverPoints:i7().hoverPoints,eventData:UHe(),selectPoints:HHe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermap",basePlotModule:s7(),categories:["map","gl","symbols","showLegend","scatter-like"],meta:{}}});var dGe=ye(($1r,hGe)=>{"use strict";hGe.exports=fGe()});var bJ=ye((Q1r,vGe)=>{"use strict";var d1=K5(),Bjt=Jl(),Njt=Wo().hovertemplateAttrs,Ujt=vl(),Ax=no().extendFlat;vGe.exports=Ax({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Ax({},d1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:d1.text,hovertext:d1.hovertext,marker:{line:{color:Ax({},d1.marker.line.color,{editType:"plot"}),width:Ax({},d1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Ax({},d1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Ax({},d1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Ax({},d1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:d1.hoverinfo,hovertemplate:Njt({},{keys:["properties"]}),showlegend:Ax({},Ujt.showlegend,{dflt:!1})},Bjt("",{cLetter:"z",editTypeOverride:"calc"}))});var gGe=ye((e_r,pGe)=>{"use strict";var Vk=Mr(),Vjt=Uh(),Hjt=bJ();pGe.exports=function(t,r,n,i){function a(c,f){return Vk.coerce(t,r,Hjt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!Vk.isArrayOrTypedArray(o)||!o.length||!Vk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||Vk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),Vjt(t,r,i,a,{prefix:"",cLetter:"z"}),Vk.coerceSelectionMarkerOpacity(r,a)}});var wJ=ye((t_r,_Ge)=>{"use strict";var Gjt=uo(),v1=Mr(),jjt=Mu(),Wjt=ao(),Zjt=rx().makeBlank,mGe=nx();function Xjt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:Zjt()};if(!r)return a;var o=mGe.extractTraceFeature(e);if(!o)return a;var s=jjt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;v1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return Gjt(k)?+v1.constrain(k,0,1):0});var f;v1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;v1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var bGe=wJ().convert,Yjt=wJ().convertOnSelect,xGe=wx().traceLayerPrefix;function wGe(e,t){this.type="choroplethmap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",xGe+t+"-fill"],["line",xGe+t+"-line"]],this.below=null}var MA=wGe.prototype;MA.update=function(e){this._update(bGe(e)),e[0].trace._glTrace=this};MA.updateOnSelect=function(e){this._update(Yjt(e))};MA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};MA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};TGe.exports=function(t,r){var n=r[0].trace,i=new wGe(t,n.uid),a=i.sourceId,o=bGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var MGe=ye((i_r,SGe)=>{"use strict";SGe.exports={attributes:bJ(),supplyDefaults:gGe(),colorbar:M_(),calc:Lz(),plot:AGe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";EGe.exports=MGe()});var AJ=ye((a_r,LGe)=>{"use strict";var Kjt=Jl(),Jjt=Wo().hovertemplateAttrs,CGe=vl(),l7=$F(),TJ=no().extendFlat;LGe.exports=TJ({lon:l7.lon,lat:l7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:l7.text,hovertext:l7.hovertext,hoverinfo:TJ({},CGe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:Jjt(),showlegend:TJ({},CGe.showlegend,{dflt:!1})},Kjt("",{cLetter:"z",editTypeOverride:"calc"}))});var IGe=ye((o_r,PGe)=>{"use strict";var $jt=Mr(),Qjt=Uh(),eWt=AJ();PGe.exports=function(t,r,n,i){function a(u,c){return $jt.coerce(t,r,eWt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),Qjt(t,r,i,a,{prefix:"",cLetter:"z"})}});var zGe=ye((s_r,DGe)=>{"use strict";var SJ=uo(),tWt=Mr().isArrayOrTypedArray,MJ=es().BADNUM,rWt=zv(),RGe=Mr()._;DGe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=tWt(a)&&a.length,s=0;s{"use strict";var iWt=uo(),EJ=Mr(),FGe=va(),qGe=Mu(),OGe=es().BADNUM,nWt=rx().makeBlank;BGe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:nWt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=EJ.isArrayOrTypedArray(l)&&l.length,f=EJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=qGe.extractOpts(r),p=b.reversescale?qGe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=FGe.opacity(E)<1?E:FGe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var UGe=NGe(),aWt=wx().traceLayerPrefix;function VGe(e,t){this.type="densitymap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",aWt+t+"-heatmap"]],this.below=null}var u7=VGe.prototype;u7.update=function(e){var t=this.subplot,r=this.layerList,n=UGe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};u7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};HGe.exports=function(t,r){var n=r[0].trace,i=new VGe(t,n.uid),a=i.sourceId,o=UGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var WGe=ye((c_r,jGe)=>{"use strict";var oWt=Qa(),sWt=i7().hoverPoints,lWt=i7().getExtraText;jGe.exports=function(t,r,n){var i=sWt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=oWt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=lWt(s,l,o[0].t.labels),[a]}}});var XGe=ye((f_r,ZGe)=>{"use strict";ZGe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var KGe=ye((h_r,YGe)=>{"use strict";YGe.exports={attributes:AJ(),supplyDefaults:IGe(),colorbar:M_(),formatLabels:cJ(),calc:zGe(),plot:GGe(),hoverPoints:WGe(),eventData:XGe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";JGe.exports=KGe()});var CJ=ye((p_r,rje)=>{"use strict";var uWt=Su(),cWt=vl(),QGe=dh(),kJ=i3(),fWt=Ju().attributes,eje=Wo().hovertemplateAttrs,hWt=Jl(),dWt=Vs().templatedArray,vWt=Oc().descriptionOnlyNumbers,tje=no().extendFlat,pWt=Bu().overrideAll,v_r=rje.exports=pWt({hoverinfo:tje({},cWt.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:kJ.hoverlabel,domain:fWt({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:vWt("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:uWt({autoShadowDflt:!0}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),align:{valType:"enumerated",values:["justify","left","right","center"],dflt:"justify"}},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},hovercolor:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),colorscales:dWt("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:tje(hWt().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")});var sje=ye((g_r,oje)=>{"use strict";var EA=Mr(),c7=CJ(),gWt=va(),ije=id(),mWt=Ju().defaults,nje=oM(),aje=Vs(),yWt=Zd();oje.exports=function(t,r,n,i){function a(A,L){return EA.coerce(t,r,c7,A,L)}var o=EA.extendDeep(i.hoverlabel,t.hoverlabel),s=t.node,l=aje.newContainer(r,"node");function u(A,L){return EA.coerce(s,l,c7.node,A,L)}u("label"),u("groups"),u("x"),u("y"),u("pad"),u("thickness"),u("line.color"),u("line.width"),u("hoverinfo",t.hoverinfo),nje(s,l,u,o),u("hovertemplate"),u("align");var c=i.colorway,f=function(A){return c[A%c.length]};u("color",l.label.map(function(A,L){return gWt.addOpacity(f(L),.8)})),u("customdata");var h=t.link||{},d=aje.newContainer(r,"link");function v(A,L){return EA.coerce(h,d,c7.link,A,L)}v("label"),v("arrowlen"),v("source"),v("target"),v("value"),v("line.color"),v("line.width"),v("hoverinfo",t.hoverinfo),nje(h,d,v,o),v("hovertemplate");var x=ije(i.paper_bgcolor).getLuminance()<.333,b=x?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)",p=v("color",b);function E(A){var L=ije(A);if(!L.isValid())return A;var _=L.getAlpha();return _<=.8?L.setAlpha(_+.2):L=x?L.brighten():L.darken(),L.toRgbString()}v("hovercolor",Array.isArray(p)?p.map(E):E(p)),v("customdata"),yWt(h,d,{name:"colorscales",handleItemDefaults:_Wt}),mWt(r,i,a),a("orientation"),a("valueformat"),a("valuesuffix");var k;l.x.length&&l.y.length&&(k="freeform"),a("arrangement",k),EA.coerceFont(a,"textfont",i.font,{autoShadowDflt:!0}),r._length=null};function _Wt(e,t){function r(n,i){return EA.coerce(e,t,c7.link.colorscales,n,i)}r("label"),r("cmin"),r("cmax"),r("colorscale")}});var LJ=ye((m_r,lje)=>{"use strict";lje.exports=xWt;function xWt(e){for(var t=e.length,r=new Array(t),n=new Array(t),i=new Array(t),a=new Array(t),o=new Array(t),s=new Array(t),l=0;l0;){b=E[E.length-1];var k=e[b];if(a[b]=0&&s[b].push(o[L])}a[b]=A}else{if(n[b]===r[b]){for(var _=[],C=[],M=0,A=p.length-1;A>=0;--A){var g=p[A];if(i[g]=!1,_.push(g),C.push(s[g]),M+=s[g].length,o[g]=c.length,g===b){p.length=A;break}}c.push(_);for(var P=new Array(M),A=0;A{"use strict";var bWt=LJ(),kA=Mr(),wWt=Km().wrap,Hk=kA.isArrayOrTypedArray,uje=kA.isIndex,cje=Mu();function TWt(e){var t=e.node,r=e.link,n=[],i=Hk(r.color),a=Hk(r.hovercolor),o=Hk(r.customdata),s={},l={},u=r.colorscales.length,c;for(c=0;cv&&(v=r.source[c]),r.target[c]>v&&(v=r.target[c]);var x=v+1;e.node._count=x;var b,p=e.node.groups,E={};for(c=0;c0&&uje(M,x)&&uje(g,x)&&!(E.hasOwnProperty(M)&&E.hasOwnProperty(g)&&E[M]===E[g])){E.hasOwnProperty(g)&&(g=E[g]),E.hasOwnProperty(M)&&(M=E[M]),M=+M,g=+g,s[M]=s[g]=!0;var P="";r.label&&r.label[c]&&(P=r.label[c]);var T=null;P&&l.hasOwnProperty(P)&&(T=l[P]),n.push({pointNumber:c,label:P,color:i?r.color[c]:r.color,hovercolor:a?r.hovercolor[c]:r.hovercolor,customdata:o?r.customdata[c]:r.customdata,concentrationscale:T,source:M,target:g,value:+C}),_.source.push(M),_.target.push(g)}}var F=x+p.length,q=Hk(t.color),V=Hk(t.customdata),H=[];for(c=0;cx-1,childrenNodes:[],pointNumber:c,label:X,color:q?t.color[c]:t.color,customdata:V?t.customdata[c]:t.customdata})}var G=!1;return AWt(F,_.source,_.target)&&(G=!0),{circular:G,links:n,nodes:H,groups:p,groupLookup:E}}function AWt(e,t,r){for(var n=kA.init2dArray(e,0),i=0;i1})}fje.exports=function(t,r){var n=TWt(r);return wWt({circular:n.circular,_nodes:n.nodes,_links:n.links,_groups:n.groups,_groupLookup:n.groupLookup})}});var vje=ye((f7,dje)=>{(function(e,t){typeof f7=="object"&&typeof dje!="undefined"?t(f7):(e=e||self,t(e.d3=e.d3||{}))})(f7,function(e){"use strict";function t(C){var M=+this._x.call(null,C),g=+this._y.call(null,C);return r(this.cover(M,g),M,g,C)}function r(C,M,g,P){if(isNaN(M)||isNaN(g))return C;var T,F=C._root,q={data:P},V=C._x0,H=C._y0,X=C._x1,G=C._y1,N,W,re,ae,_e,Me,ke,ge;if(!F)return C._root=q,C;for(;F.length;)if((_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W,T=F,!(F=F[ke=Me<<1|_e]))return T[ke]=q,C;if(re=+C._x.call(null,F.data),ae=+C._y.call(null,F.data),M===re&&g===ae)return q.next=F,T?T[ke]=q:C._root=q,C;do T=T?T[ke]=new Array(4):C._root=new Array(4),(_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W;while((ke=Me<<1|_e)===(ge=(ae>=W)<<1|re>=N));return T[ge]=F,T[ke]=q,C}function n(C){var M,g,P=C.length,T,F,q=new Array(P),V=new Array(P),H=1/0,X=1/0,G=-1/0,N=-1/0;for(g=0;gG&&(G=T),FN&&(N=F));if(H>G||X>N)return this;for(this.cover(H,X).cover(G,N),g=0;gC||C>=T||P>M||M>=F;)switch(X=(MG||(V=ae.y0)>N||(H=ae.x1)=ke)<<1|C>=Me)&&(ae=W[W.length-1],W[W.length-1]=W[W.length-1-_e],W[W.length-1-_e]=ae)}else{var ge=C-+this._x.call(null,re.data),ie=M-+this._y.call(null,re.data),Te=ge*ge+ie*ie;if(Te=(W=(q+H)/2))?q=W:H=W,(_e=N>=(re=(V+X)/2))?V=re:X=re,M=g,!(g=g[Me=_e<<1|ae]))return this;if(!g.length)break;(M[Me+1&3]||M[Me+2&3]||M[Me+3&3])&&(P=M,ke=Me)}for(;g.data!==C;)if(T=g,!(g=g.next))return this;return(F=g.next)&&delete g.next,T?(F?T.next=F:delete T.next,this):M?(F?M[Me]=F:delete M[Me],(g=M[0]||M[1]||M[2]||M[3])&&g===(M[3]||M[2]||M[1]||M[0])&&!g.length&&(P?P[ke]=g:this._root=g),this):(this._root=F,this)}function c(C){for(var M=0,g=C.length;M{(function(e,t){t(typeof h7=="object"&&typeof pje!="undefined"?h7:e.d3=e.d3||{})})(h7,function(e){"use strict";var t="$";function r(){}r.prototype=n.prototype={constructor:r,has:function(x){return t+x in this},get:function(x){return this[t+x]},set:function(x,b){return this[t+x]=b,this},remove:function(x){var b=t+x;return b in this&&delete this[b]},clear:function(){for(var x in this)x[0]===t&&delete this[x]},keys:function(){var x=[];for(var b in this)b[0]===t&&x.push(b.slice(1));return x},values:function(){var x=[];for(var b in this)b[0]===t&&x.push(this[b]);return x},entries:function(){var x=[];for(var b in this)b[0]===t&&x.push({key:b.slice(1),value:this[b]});return x},size:function(){var x=0;for(var b in this)b[0]===t&&++x;return x},empty:function(){for(var x in this)if(x[0]===t)return!1;return!0},each:function(x){for(var b in this)b[0]===t&&x(this[b],b.slice(1),this)}};function n(x,b){var p=new r;if(x instanceof r)x.each(function(_,C){p.set(C,_)});else if(Array.isArray(x)){var E=-1,k=x.length,A;if(b==null)for(;++E=x.length)return p!=null&&_.sort(p),E!=null?E(_):_;for(var P=-1,T=_.length,F=x[C++],q,V,H=n(),X,G=M();++Px.length)return _;var M,g=b[C-1];return E!=null&&C>=x.length?M=_.entries():(M=[],_.each(function(P,T){M.push({key:T,values:L(P,C)})})),g!=null?M.sort(function(P,T){return g(P.key,T.key)}):M}return k={object:function(_){return A(_,0,a,o)},map:function(_){return A(_,0,s,l)},entries:function(_){return L(A(_,0,s,l),0)},key:function(_){return x.push(_),k},sortKeys:function(_){return b[x.length-1]=_,k},sortValues:function(_){return p=_,k},rollup:function(_){return E=_,k}}}function a(){return{}}function o(x,b,p){x[b]=p}function s(){return n()}function l(x,b,p){x.set(b,p)}function u(){}var c=n.prototype;u.prototype=f.prototype={constructor:u,has:c.has,add:function(x){return x+="",this[t+x]=x,this},remove:c.remove,clear:c.clear,values:c.keys,size:c.size,empty:c.empty,each:c.each};function f(x,b){var p=new u;if(x instanceof u)x.each(function(A){p.add(A)});else if(x){var E=-1,k=x.length;if(b==null)for(;++E{(function(e,t){typeof v7=="object"&&typeof gje!="undefined"?t(v7):(e=e||self,t(e.d3=e.d3||{}))})(v7,function(e){"use strict";var t={value:function(){}};function r(){for(var s=0,l=arguments.length,u={},c;s=0&&(c=u.slice(f+1),u=u.slice(0,f)),u&&!l.hasOwnProperty(u))throw new Error("unknown type: "+u);return{type:u,name:c}})}n.prototype=r.prototype={constructor:n,on:function(s,l){var u=this._,c=i(s+"",u),f,h=-1,d=c.length;if(arguments.length<2){for(;++h0)for(var u=new Array(f),c=0,f,h;c{(function(e,t){typeof p7=="object"&&typeof yje!="undefined"?t(p7):(e=e||self,t(e.d3=e.d3||{}))})(p7,function(e){"use strict";var t=0,r=0,n=0,i=1e3,a,o,s=0,l=0,u=0,c=typeof performance=="object"&&performance.now?performance:Date,f=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(C){setTimeout(C,17)};function h(){return l||(f(d),l=c.now()+u)}function d(){l=0}function v(){this._call=this._time=this._next=null}v.prototype=x.prototype={constructor:v,restart:function(C,M,g){if(typeof C!="function")throw new TypeError("callback is not a function");g=(g==null?h():+g)+(M==null?0:+M),!this._next&&o!==this&&(o?o._next=this:a=this,o=this),this._call=C,this._time=g,A()},stop:function(){this._call&&(this._call=null,this._time=1/0,A())}};function x(C,M,g){var P=new v;return P.restart(C,M,g),P}function b(){h(),++t;for(var C=a,M;C;)(M=l-C._time)>=0&&C._call.call(null,M),C=C._next;--t}function p(){l=(s=c.now())+u,t=r=0;try{b()}finally{t=0,k(),l=0}}function E(){var C=c.now(),M=C-s;M>i&&(u-=M,s=C)}function k(){for(var C,M=a,g,P=1/0;M;)M._call?(P>M._time&&(P=M._time),C=M,M=M._next):(g=M._next,M._next=null,M=C?C._next=g:a=g);o=C,A(P)}function A(C){if(!t){r&&(r=clearTimeout(r));var M=C-l;M>24?(C<1/0&&(r=setTimeout(p,C-c.now()-u)),n&&(n=clearInterval(n))):(n||(s=c.now(),n=setInterval(E,i)),t=1,f(p))}}function L(C,M,g){var P=new v;return M=M==null?0:+M,P.restart(function(T){P.stop(),C(T+M)},M,g),P}function _(C,M,g){var P=new v,T=M;return M==null?(P.restart(C,M,g),P):(M=+M,g=g==null?h():+g,P.restart(function F(q){q+=T,P.restart(F,T+=M,g),C(q)},M,g),P)}e.interval=_,e.now=h,e.timeout=L,e.timer=x,e.timerFlush=b,Object.defineProperty(e,"__esModule",{value:!0})})});var bje=ye((g7,xje)=>{(function(e,t){typeof g7=="object"&&typeof xje!="undefined"?t(g7,vje(),d7(),mje(),_je()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3)})(g7,function(e,t,r,n,i){"use strict";function a(C,M){var g;C==null&&(C=0),M==null&&(M=0);function P(){var T,F=g.length,q,V=0,H=0;for(T=0;TN.index){var Re=W-ze.x-ze.vx,ce=re-ze.y-ze.vy,Ge=Re*Re+ce*ce;GeW+me||Eere+me||AeH.r&&(H.r=H[X].r)}function V(){if(M){var H,X=M.length,G;for(g=new Array(X),H=0;H1?(_e==null?V.remove(ae):V.set(ae,re(_e)),M):V.get(ae)},find:function(ae,_e,Me){var ke=0,ge=C.length,ie,Te,Ee,Ae,ze;for(Me==null?Me=1/0:Me*=Me,ke=0;ke1?(X.on(ae,_e),M):X.on(ae)}}}function k(){var C,M,g,P=o(-30),T,F=1,q=1/0,V=.81;function H(W){var re,ae=C.length,_e=t.quadtree(C,v,x).visitAfter(G);for(g=W,re=0;re=q)return;(W.data!==M||W.next)&&(Me===0&&(Me=s(),ie+=Me*Me),ke===0&&(ke=s(),ie+=ke*ke),ie{(function(e,t){typeof m7=="object"&&typeof wje!="undefined"?t(m7):(e=e||self,t(e.d3=e.d3||{}))})(m7,function(e){"use strict";var t=Math.PI,r=2*t,n=1e-6,i=r-n;function a(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function o(){return new a}a.prototype=o.prototype={constructor:a,moveTo:function(s,l){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(s,l){this._+="L"+(this._x1=+s)+","+(this._y1=+l)},quadraticCurveTo:function(s,l,u,c){this._+="Q"+ +s+","+ +l+","+(this._x1=+u)+","+(this._y1=+c)},bezierCurveTo:function(s,l,u,c,f,h){this._+="C"+ +s+","+ +l+","+ +u+","+ +c+","+(this._x1=+f)+","+(this._y1=+h)},arcTo:function(s,l,u,c,f){s=+s,l=+l,u=+u,c=+c,f=+f;var h=this._x1,d=this._y1,v=u-s,x=c-l,b=h-s,p=d-l,E=b*b+p*p;if(f<0)throw new Error("negative radius: "+f);if(this._x1===null)this._+="M"+(this._x1=s)+","+(this._y1=l);else if(E>n)if(!(Math.abs(p*v-x*b)>n)||!f)this._+="L"+(this._x1=s)+","+(this._y1=l);else{var k=u-h,A=c-d,L=v*v+x*x,_=k*k+A*A,C=Math.sqrt(L),M=Math.sqrt(E),g=f*Math.tan((t-Math.acos((L+E-_)/(2*C*M)))/2),P=g/M,T=g/C;Math.abs(P-1)>n&&(this._+="L"+(s+P*b)+","+(l+P*p)),this._+="A"+f+","+f+",0,0,"+ +(p*k>b*A)+","+(this._x1=s+T*v)+","+(this._y1=l+T*x)}},arc:function(s,l,u,c,f,h){s=+s,l=+l,u=+u,h=!!h;var d=u*Math.cos(c),v=u*Math.sin(c),x=s+d,b=l+v,p=1^h,E=h?c-f:f-c;if(u<0)throw new Error("negative radius: "+u);this._x1===null?this._+="M"+x+","+b:(Math.abs(this._x1-x)>n||Math.abs(this._y1-b)>n)&&(this._+="L"+x+","+b),u&&(E<0&&(E=E%r+r),E>i?this._+="A"+u+","+u+",0,1,"+p+","+(s-d)+","+(l-v)+"A"+u+","+u+",0,1,"+p+","+(this._x1=x)+","+(this._y1=b):E>n&&(this._+="A"+u+","+u+",0,"+ +(E>=t)+","+p+","+(this._x1=s+u*Math.cos(f))+","+(this._y1=l+u*Math.sin(f))))},rect:function(s,l,u,c){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)+"h"+ +u+"v"+ +c+"h"+-u+"Z"},toString:function(){return this._}},e.path=o,Object.defineProperty(e,"__esModule",{value:!0})})});var PJ=ye((y7,Aje)=>{(function(e,t){typeof y7=="object"&&typeof Aje!="undefined"?t(y7,Tje()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(y7,function(e,t){"use strict";function r(_t){return function(){return _t}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,u=Math.sqrt,c=1e-12,f=Math.PI,h=f/2,d=2*f;function v(_t){return _t>1?0:_t<-1?f:Math.acos(_t)}function x(_t){return _t>=1?h:_t<=-1?-h:Math.asin(_t)}function b(_t){return _t.innerRadius}function p(_t){return _t.outerRadius}function E(_t){return _t.startAngle}function k(_t){return _t.endAngle}function A(_t){return _t&&_t.padAngle}function L(_t,br,Hr,ti,zi,Yi,an,hi){var Ji=Hr-_t,ua=ti-br,Fn=an-zi,Sa=hi-Yi,go=Sa*Ji-Fn*ua;if(!(go*goQl*Ql+Hu*Hu&&(Cs=Ys,ml=Hs),{cx:Cs,cy:ml,x01:-Fn,y01:-Sa,x11:Cs*(zi/wl-1),y11:ml*(zi/wl-1)}}function C(){var _t=b,br=p,Hr=r(0),ti=null,zi=E,Yi=k,an=A,hi=null;function Ji(){var ua,Fn,Sa=+_t.apply(this,arguments),go=+br.apply(this,arguments),Oo=zi.apply(this,arguments)-h,ho=Yi.apply(this,arguments)-h,Mo=n(ho-Oo),xo=ho>Oo;if(hi||(hi=ua=t.path()),goc))hi.moveTo(0,0);else if(Mo>d-c)hi.moveTo(go*a(Oo),go*l(Oo)),hi.arc(0,0,go,Oo,ho,!xo),Sa>c&&(hi.moveTo(Sa*a(ho),Sa*l(ho)),hi.arc(0,0,Sa,ho,Oo,xo));else{var zs=Oo,ks=ho,Zs=Oo,Xs=ho,wl=Mo,os=Mo,cl=an.apply(this,arguments)/2,Cs=cl>c&&(ti?+ti.apply(this,arguments):u(Sa*Sa+go*go)),ml=s(n(go-Sa)/2,+Hr.apply(this,arguments)),Ys=ml,Hs=ml,Eo,fs;if(Cs>c){var Ql=x(Cs/Sa*l(cl)),Hu=x(Cs/go*l(cl));(wl-=Ql*2)>c?(Ql*=xo?1:-1,Zs+=Ql,Xs-=Ql):(wl=0,Zs=Xs=(Oo+ho)/2),(os-=Hu*2)>c?(Hu*=xo?1:-1,zs+=Hu,ks-=Hu):(os=0,zs=ks=(Oo+ho)/2)}var fc=go*a(zs),ms=go*l(zs),on=Sa*a(Xs),fa=Sa*l(Xs);if(ml>c){var Qu=go*a(ks),Rl=go*l(ks),vo=Sa*a(Zs),Zl=Sa*l(Zs),Ks;if(Moc?Hs>c?(Eo=_(vo,Zl,fc,ms,go,Hs,xo),fs=_(Qu,Rl,on,fa,go,Hs,xo),hi.moveTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Hsc)||!(wl>c)?hi.lineTo(on,fa):Ys>c?(Eo=_(on,fa,Qu,Rl,Sa,-Ys,xo),fs=_(fc,ms,vo,Zl,Sa,-Ys,xo),hi.lineTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Ys=go;--Oo)hi.point(ks[Oo],Zs[Oo]);hi.lineEnd(),hi.areaEnd()}xo&&(ks[Sa]=+_t(Mo,Sa,Fn),Zs[Sa]=+Hr(Mo,Sa,Fn),hi.point(br?+br(Mo,Sa,Fn):ks[Sa],ti?+ti(Mo,Sa,Fn):Zs[Sa]))}if(zs)return hi=null,zs+""||null}function ua(){return F().defined(zi).curve(an).context(Yi)}return Ji.x=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),br=null,Ji):_t},Ji.x0=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),Ji):_t},Ji.x1=function(Fn){return arguments.length?(br=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):br},Ji.y=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),ti=null,Ji):Hr},Ji.y0=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),Ji):Hr},Ji.y1=function(Fn){return arguments.length?(ti=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):ti},Ji.lineX0=Ji.lineY0=function(){return ua().x(_t).y(Hr)},Ji.lineY1=function(){return ua().x(_t).y(ti)},Ji.lineX1=function(){return ua().x(br).y(Hr)},Ji.defined=function(Fn){return arguments.length?(zi=typeof Fn=="function"?Fn:r(!!Fn),Ji):zi},Ji.curve=function(Fn){return arguments.length?(an=Fn,Yi!=null&&(hi=an(Yi)),Ji):an},Ji.context=function(Fn){return arguments.length?(Fn==null?Yi=hi=null:hi=an(Yi=Fn),Ji):Yi},Ji}function V(_t,br){return br<_t?-1:br>_t?1:br>=_t?0:NaN}function H(_t){return _t}function X(){var _t=H,br=V,Hr=null,ti=r(0),zi=r(d),Yi=r(0);function an(hi){var Ji,ua=hi.length,Fn,Sa,go=0,Oo=new Array(ua),ho=new Array(ua),Mo=+ti.apply(this,arguments),xo=Math.min(d,Math.max(-d,zi.apply(this,arguments)-Mo)),zs,ks=Math.min(Math.abs(xo)/ua,Yi.apply(this,arguments)),Zs=ks*(xo<0?-1:1),Xs;for(Ji=0;Ji0&&(go+=Xs);for(br!=null?Oo.sort(function(wl,os){return br(ho[wl],ho[os])}):Hr!=null&&Oo.sort(function(wl,os){return Hr(hi[wl],hi[os])}),Ji=0,Sa=go?(xo-ua*Zs)/go:0;Ji0?Xs*Sa:0)+Zs,ho[Fn]={data:hi[Fn],index:Ji,value:Xs,startAngle:Mo,endAngle:zs,padAngle:ks};return ho}return an.value=function(hi){return arguments.length?(_t=typeof hi=="function"?hi:r(+hi),an):_t},an.sortValues=function(hi){return arguments.length?(br=hi,Hr=null,an):br},an.sort=function(hi){return arguments.length?(Hr=hi,br=null,an):Hr},an.startAngle=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.endAngle=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.padAngle=function(hi){return arguments.length?(Yi=typeof hi=="function"?hi:r(+hi),an):Yi},an}var G=W(g);function N(_t){this._curve=_t}N.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(_t,br){this._curve.point(br*Math.sin(_t),br*-Math.cos(_t))}};function W(_t){function br(Hr){return new N(_t(Hr))}return br._curve=_t,br}function re(_t){var br=_t.curve;return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t.curve=function(Hr){return arguments.length?br(W(Hr)):br()._curve},_t}function ae(){return re(F().curve(G))}function _e(){var _t=q().curve(G),br=_t.curve,Hr=_t.lineX0,ti=_t.lineX1,zi=_t.lineY0,Yi=_t.lineY1;return _t.angle=_t.x,delete _t.x,_t.startAngle=_t.x0,delete _t.x0,_t.endAngle=_t.x1,delete _t.x1,_t.radius=_t.y,delete _t.y,_t.innerRadius=_t.y0,delete _t.y0,_t.outerRadius=_t.y1,delete _t.y1,_t.lineStartAngle=function(){return re(Hr())},delete _t.lineX0,_t.lineEndAngle=function(){return re(ti())},delete _t.lineX1,_t.lineInnerRadius=function(){return re(zi())},delete _t.lineY0,_t.lineOuterRadius=function(){return re(Yi())},delete _t.lineY1,_t.curve=function(an){return arguments.length?br(W(an)):br()._curve},_t}function Me(_t,br){return[(br=+br)*Math.cos(_t-=Math.PI/2),br*Math.sin(_t)]}var ke=Array.prototype.slice;function ge(_t){return _t.source}function ie(_t){return _t.target}function Te(_t){var br=ge,Hr=ie,ti=P,zi=T,Yi=null;function an(){var hi,Ji=ke.call(arguments),ua=br.apply(this,Ji),Fn=Hr.apply(this,Ji);if(Yi||(Yi=hi=t.path()),_t(Yi,+ti.apply(this,(Ji[0]=ua,Ji)),+zi.apply(this,Ji),+ti.apply(this,(Ji[0]=Fn,Ji)),+zi.apply(this,Ji)),hi)return Yi=null,hi+""||null}return an.source=function(hi){return arguments.length?(br=hi,an):br},an.target=function(hi){return arguments.length?(Hr=hi,an):Hr},an.x=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.y=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.context=function(hi){return arguments.length?(Yi=hi==null?null:hi,an):Yi},an}function Ee(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br=(br+ti)/2,Hr,br,zi,ti,zi)}function Ae(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br,Hr=(Hr+zi)/2,ti,Hr,ti,zi)}function ze(_t,br,Hr,ti,zi){var Yi=Me(br,Hr),an=Me(br,Hr=(Hr+zi)/2),hi=Me(ti,Hr),Ji=Me(ti,zi);_t.moveTo(Yi[0],Yi[1]),_t.bezierCurveTo(an[0],an[1],hi[0],hi[1],Ji[0],Ji[1])}function Ce(){return Te(Ee)}function me(){return Te(Ae)}function Re(){var _t=Te(ze);return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t}var ce={draw:function(_t,br){var Hr=Math.sqrt(br/f);_t.moveTo(Hr,0),_t.arc(0,0,Hr,0,d)}},Ge={draw:function(_t,br){var Hr=Math.sqrt(br/5)/2;_t.moveTo(-3*Hr,-Hr),_t.lineTo(-Hr,-Hr),_t.lineTo(-Hr,-3*Hr),_t.lineTo(Hr,-3*Hr),_t.lineTo(Hr,-Hr),_t.lineTo(3*Hr,-Hr),_t.lineTo(3*Hr,Hr),_t.lineTo(Hr,Hr),_t.lineTo(Hr,3*Hr),_t.lineTo(-Hr,3*Hr),_t.lineTo(-Hr,Hr),_t.lineTo(-3*Hr,Hr),_t.closePath()}},nt=Math.sqrt(1/3),ct=nt*2,qt={draw:function(_t,br){var Hr=Math.sqrt(br/ct),ti=Hr*nt;_t.moveTo(0,-Hr),_t.lineTo(ti,0),_t.lineTo(0,Hr),_t.lineTo(-ti,0),_t.closePath()}},rt=.8908130915292852,ot=Math.sin(f/10)/Math.sin(7*f/10),Rt=Math.sin(d/10)*ot,kt=-Math.cos(d/10)*ot,Ct={draw:function(_t,br){var Hr=Math.sqrt(br*rt),ti=Rt*Hr,zi=kt*Hr;_t.moveTo(0,-Hr),_t.lineTo(ti,zi);for(var Yi=1;Yi<5;++Yi){var an=d*Yi/5,hi=Math.cos(an),Ji=Math.sin(an);_t.lineTo(Ji*Hr,-hi*Hr),_t.lineTo(hi*ti-Ji*zi,Ji*ti+hi*zi)}_t.closePath()}},Yt={draw:function(_t,br){var Hr=Math.sqrt(br),ti=-Hr/2;_t.rect(ti,ti,Hr,Hr)}},xr=Math.sqrt(3),er={draw:function(_t,br){var Hr=-Math.sqrt(br/(xr*3));_t.moveTo(0,Hr*2),_t.lineTo(-xr*Hr,-Hr),_t.lineTo(xr*Hr,-Hr),_t.closePath()}},Ke=-.5,xt=Math.sqrt(3)/2,bt=1/Math.sqrt(12),Lt=(bt/2+1)*3,St={draw:function(_t,br){var Hr=Math.sqrt(br/Lt),ti=Hr/2,zi=Hr*bt,Yi=ti,an=Hr*bt+Hr,hi=-Yi,Ji=an;_t.moveTo(ti,zi),_t.lineTo(Yi,an),_t.lineTo(hi,Ji),_t.lineTo(Ke*ti-xt*zi,xt*ti+Ke*zi),_t.lineTo(Ke*Yi-xt*an,xt*Yi+Ke*an),_t.lineTo(Ke*hi-xt*Ji,xt*hi+Ke*Ji),_t.lineTo(Ke*ti+xt*zi,Ke*zi-xt*ti),_t.lineTo(Ke*Yi+xt*an,Ke*an-xt*Yi),_t.lineTo(Ke*hi+xt*Ji,Ke*Ji-xt*hi),_t.closePath()}},Et=[ce,Ge,qt,Yt,Ct,er,St];function dt(){var _t=r(ce),br=r(64),Hr=null;function ti(){var zi;if(Hr||(Hr=zi=t.path()),_t.apply(this,arguments).draw(Hr,+br.apply(this,arguments)),zi)return Hr=null,zi+""||null}return ti.type=function(zi){return arguments.length?(_t=typeof zi=="function"?zi:r(zi),ti):_t},ti.size=function(zi){return arguments.length?(br=typeof zi=="function"?zi:r(+zi),ti):br},ti.context=function(zi){return arguments.length?(Hr=zi==null?null:zi,ti):Hr},ti}function Ht(){}function $t(_t,br,Hr){_t._context.bezierCurveTo((2*_t._x0+_t._x1)/3,(2*_t._y0+_t._y1)/3,(_t._x0+2*_t._x1)/3,(_t._y0+2*_t._y1)/3,(_t._x0+4*_t._x1+br)/6,(_t._y0+4*_t._y1+Hr)/6)}function fr(_t){this._context=_t}fr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:$t(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function _r(_t){return new fr(_t)}function Br(_t){this._context=_t}Br.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x2=_t,this._y2=br;break;case 1:this._point=2,this._x3=_t,this._y3=br;break;case 2:this._point=3,this._x4=_t,this._y4=br,this._context.moveTo((this._x0+4*this._x1+_t)/6,(this._y0+4*this._y1+br)/6);break;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function Or(_t){return new Br(_t)}function Nr(_t){this._context=_t}Nr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var Hr=(this._x0+4*this._x1+_t)/6,ti=(this._y0+4*this._y1+br)/6;this._line?this._context.lineTo(Hr,ti):this._context.moveTo(Hr,ti);break;case 3:this._point=4;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function ut(_t){return new Nr(_t)}function Ne(_t,br){this._basis=new fr(_t),this._beta=br}Ne.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length-1;if(Hr>0)for(var ti=_t[0],zi=br[0],Yi=_t[Hr]-ti,an=br[Hr]-zi,hi=-1,Ji;++hi<=Hr;)Ji=hi/Hr,this._basis.point(this._beta*_t[hi]+(1-this._beta)*(ti+Ji*Yi),this._beta*br[hi]+(1-this._beta)*(zi+Ji*an));this._x=this._y=null,this._basis.lineEnd()},point:function(_t,br){this._x.push(+_t),this._y.push(+br)}};var Ye=function _t(br){function Hr(ti){return br===1?new fr(ti):new Ne(ti,br)}return Hr.beta=function(ti){return _t(+ti)},Hr}(.85);function Ve(_t,br,Hr){_t._context.bezierCurveTo(_t._x1+_t._k*(_t._x2-_t._x0),_t._y1+_t._k*(_t._y2-_t._y0),_t._x2+_t._k*(_t._x1-br),_t._y2+_t._k*(_t._y1-Hr),_t._x2,_t._y2)}function Xe(_t,br){this._context=_t,this._k=(1-br)/6}Xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ve(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2,this._x1=_t,this._y1=br;break;case 2:this._point=3;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ht=function _t(br){function Hr(ti){return new Xe(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Le(_t,br){this._context=_t,this._k=(1-br)/6}Le.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var xe=function _t(br){function Hr(ti){return new Le(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Se(_t,br){this._context=_t,this._k=(1-br)/6}Se.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var lt=function _t(br){function Hr(ti){return new Se(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Gt(_t,br,Hr){var ti=_t._x1,zi=_t._y1,Yi=_t._x2,an=_t._y2;if(_t._l01_a>c){var hi=2*_t._l01_2a+3*_t._l01_a*_t._l12_a+_t._l12_2a,Ji=3*_t._l01_a*(_t._l01_a+_t._l12_a);ti=(ti*hi-_t._x0*_t._l12_2a+_t._x2*_t._l01_2a)/Ji,zi=(zi*hi-_t._y0*_t._l12_2a+_t._y2*_t._l01_2a)/Ji}if(_t._l23_a>c){var ua=2*_t._l23_2a+3*_t._l23_a*_t._l12_a+_t._l12_2a,Fn=3*_t._l23_a*(_t._l23_a+_t._l12_a);Yi=(Yi*ua+_t._x1*_t._l23_2a-br*_t._l12_2a)/Fn,an=(an*ua+_t._y1*_t._l23_2a-Hr*_t._l12_2a)/Fn}_t._context.bezierCurveTo(ti,zi,Yi,an,_t._x2,_t._y2)}function Vt(_t,br){this._context=_t,this._alpha=br}Vt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ar=function _t(br){function Hr(ti){return br?new Vt(ti,br):new Xe(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function Qr(_t,br){this._context=_t,this._alpha=br}Qr.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ai=function _t(br){function Hr(ti){return br?new Qr(ti,br):new Le(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function jr(_t,br){this._context=_t,this._alpha=br}jr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ri=function _t(br){function Hr(ti){return br?new jr(ti,br):new Se(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function bi(_t){this._context=_t}bi.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(_t,br){_t=+_t,br=+br,this._point?this._context.lineTo(_t,br):(this._point=1,this._context.moveTo(_t,br))}};function nn(_t){return new bi(_t)}function Wi(_t){return _t<0?-1:1}function Ni(_t,br,Hr){var ti=_t._x1-_t._x0,zi=br-_t._x1,Yi=(_t._y1-_t._y0)/(ti||zi<0&&-0),an=(Hr-_t._y1)/(zi||ti<0&&-0),hi=(Yi*zi+an*ti)/(ti+zi);return(Wi(Yi)+Wi(an))*Math.min(Math.abs(Yi),Math.abs(an),.5*Math.abs(hi))||0}function _n(_t,br){var Hr=_t._x1-_t._x0;return Hr?(3*(_t._y1-_t._y0)/Hr-br)/2:br}function $i(_t,br,Hr){var ti=_t._x0,zi=_t._y0,Yi=_t._x1,an=_t._y1,hi=(Yi-ti)/3;_t._context.bezierCurveTo(ti+hi,zi+hi*br,Yi-hi,an-hi*Hr,Yi,an)}function zn(_t){this._context=_t}zn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$i(this,this._t0,_n(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){var Hr=NaN;if(_t=+_t,br=+br,!(_t===this._x1&&br===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,$i(this,_n(this,Hr=Ni(this,_t,br)),Hr);break;default:$i(this,this._t0,Hr=Ni(this,_t,br));break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br,this._t0=Hr}}};function Wn(_t){this._context=new It(_t)}(Wn.prototype=Object.create(zn.prototype)).point=function(_t,br){zn.prototype.point.call(this,br,_t)};function It(_t){this._context=_t}It.prototype={moveTo:function(_t,br){this._context.moveTo(br,_t)},closePath:function(){this._context.closePath()},lineTo:function(_t,br){this._context.lineTo(br,_t)},bezierCurveTo:function(_t,br,Hr,ti,zi,Yi){this._context.bezierCurveTo(br,_t,ti,Hr,Yi,zi)}};function ft(_t){return new zn(_t)}function jt(_t){return new Wn(_t)}function Zt(_t){this._context=_t}Zt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length;if(Hr)if(this._line?this._context.lineTo(_t[0],br[0]):this._context.moveTo(_t[0],br[0]),Hr===2)this._context.lineTo(_t[1],br[1]);else for(var ti=yr(_t),zi=yr(br),Yi=0,an=1;an=0;--br)zi[br]=(an[br]-zi[br+1])/Yi[br];for(Yi[Hr-1]=(_t[Hr]+zi[Hr-1])/2,br=0;br=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,br),this._context.lineTo(_t,br);else{var Hr=this._x*(1-this._t)+_t*this._t;this._context.lineTo(Hr,this._y),this._context.lineTo(Hr,br)}break}}this._x=_t,this._y=br}};function Vr(_t){return new Zr(_t,.5)}function gi(_t){return new Zr(_t,0)}function Si(_t){return new Zr(_t,1)}function Mi(_t,br){if((an=_t.length)>1)for(var Hr=1,ti,zi,Yi=_t[br[0]],an,hi=Yi.length;Hr=0;)Hr[br]=br;return Hr}function Gi(_t,br){return _t[br]}function Ki(){var _t=r([]),br=Pi,Hr=Mi,ti=Gi;function zi(Yi){var an=_t.apply(this,arguments),hi,Ji=Yi.length,ua=an.length,Fn=new Array(ua),Sa;for(hi=0;hi0){for(var Hr,ti,zi=0,Yi=_t[0].length,an;zi0)for(var Hr,ti=0,zi,Yi,an,hi,Ji,ua=_t[br[0]].length;ti0?(zi[0]=an,zi[1]=an+=Yi):Yi<0?(zi[1]=hi,zi[0]=hi+=Yi):(zi[0]=0,zi[1]=Yi)}function la(_t,br){if((zi=_t.length)>0){for(var Hr=0,ti=_t[br[0]],zi,Yi=ti.length;Hr0)||!((Yi=(zi=_t[br[0]]).length)>0))){for(var Hr=0,ti=1,zi,Yi,an;tiYi&&(Yi=zi,Hr=br);return Hr}function oa(_t){var br=_t.map(Sn);return Pi(_t).sort(function(Hr,ti){return br[Hr]-br[ti]})}function Sn(_t){for(var br=0,Hr=-1,ti=_t.length,zi;++Hr{(function(e,t){typeof _7=="object"&&typeof Sje!="undefined"?t(_7,$E(),d7(),PJ()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3)})(_7,function(e,t,r,n){"use strict";function i(g){return g.target.depth}function a(g){return g.depth}function o(g,P){return P-1-g.height}function s(g,P){return g.sourceLinks.length?g.depth:P-1}function l(g){return g.targetLinks.length?g.depth:g.sourceLinks.length?t.min(g.sourceLinks,i)-1:0}function u(g){return function(){return g}}function c(g,P){return h(g.source,P.source)||g.index-P.index}function f(g,P){return h(g.target,P.target)||g.index-P.index}function h(g,P){return g.y0-P.y0}function d(g){return g.value}function v(g){return(g.y0+g.y1)/2}function x(g){return v(g.source)*g.value}function b(g){return v(g.target)*g.value}function p(g){return g.index}function E(g){return g.nodes}function k(g){return g.links}function A(g,P){var T=g.get(P);if(!T)throw new Error("missing: "+P);return T}var L=function(){var g=0,P=0,T=1,F=1,q=24,V=8,H=p,X=s,G=E,N=k,W=32,re=2/3;function ae(){var Te={nodes:G.apply(null,arguments),links:N.apply(null,arguments)};return _e(Te),Me(Te),ke(Te),ge(Te,W),ie(Te),Te}ae.update=function(Te){return ie(Te),Te},ae.nodeId=function(Te){return arguments.length?(H=typeof Te=="function"?Te:u(Te),ae):H},ae.nodeAlign=function(Te){return arguments.length?(X=typeof Te=="function"?Te:u(Te),ae):X},ae.nodeWidth=function(Te){return arguments.length?(q=+Te,ae):q},ae.nodePadding=function(Te){return arguments.length?(V=+Te,ae):V},ae.nodes=function(Te){return arguments.length?(G=typeof Te=="function"?Te:u(Te),ae):G},ae.links=function(Te){return arguments.length?(N=typeof Te=="function"?Te:u(Te),ae):N},ae.size=function(Te){return arguments.length?(g=P=0,T=+Te[0],F=+Te[1],ae):[T-g,F-P]},ae.extent=function(Te){return arguments.length?(g=+Te[0][0],T=+Te[1][0],P=+Te[0][1],F=+Te[1][1],ae):[[g,P],[T,F]]},ae.iterations=function(Te){return arguments.length?(W=+Te,ae):W};function _e(Te){Te.nodes.forEach(function(Ae,ze){Ae.index=ze,Ae.sourceLinks=[],Ae.targetLinks=[]});var Ee=r.map(Te.nodes,H);Te.links.forEach(function(Ae,ze){Ae.index=ze;var Ce=Ae.source,me=Ae.target;typeof Ce!="object"&&(Ce=Ae.source=A(Ee,Ce)),typeof me!="object"&&(me=Ae.target=A(Ee,me)),Ce.sourceLinks.push(Ae),me.targetLinks.push(Ae)})}function Me(Te){Te.nodes.forEach(function(Ee){Ee.value=Math.max(t.sum(Ee.sourceLinks,d),t.sum(Ee.targetLinks,d))})}function ke(Te){var Ee,Ae,ze;for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.depth=ze,me.sourceLinks.forEach(function(Re){Ae.indexOf(Re.target)<0&&Ae.push(Re.target)})});for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.height=ze,me.targetLinks.forEach(function(Re){Ae.indexOf(Re.source)<0&&Ae.push(Re.source)})});var Ce=(T-g-q)/(ze-1);Te.nodes.forEach(function(me){me.x1=(me.x0=g+Math.max(0,Math.min(ze-1,Math.floor(X.call(null,me,ze))))*Ce)+q})}function ge(Te){var Ee=r.nest().key(function(Ge){return Ge.x0}).sortKeys(t.ascending).entries(Te.nodes).map(function(Ge){return Ge.values});Ce(),ce();for(var Ae=1,ze=W;ze>0;--ze)Re(Ae*=.99),ce(),me(Ae),ce();function Ce(){var Ge=t.max(Ee,function(qt){return qt.length}),nt=re*(F-P)/(Ge-1);V>nt&&(V=nt);var ct=t.min(Ee,function(qt){return(F-P-(qt.length-1)*V)/t.sum(qt,d)});Ee.forEach(function(qt){qt.forEach(function(rt,ot){rt.y1=(rt.y0=ot)+rt.value*ct})}),Te.links.forEach(function(qt){qt.width=qt.value*ct})}function me(Ge){Ee.forEach(function(nt){nt.forEach(function(ct){if(ct.targetLinks.length){var qt=(t.sum(ct.targetLinks,x)/t.sum(ct.targetLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function Re(Ge){Ee.slice().reverse().forEach(function(nt){nt.forEach(function(ct){if(ct.sourceLinks.length){var qt=(t.sum(ct.sourceLinks,b)/t.sum(ct.sourceLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function ce(){Ee.forEach(function(Ge){var nt,ct,qt=P,rt=Ge.length,ot;for(Ge.sort(h),ot=0;ot0&&(nt.y0+=ct,nt.y1+=ct),qt=nt.y1+V;if(ct=qt-V-F,ct>0)for(qt=nt.y0-=ct,nt.y1-=ct,ot=rt-2;ot>=0;--ot)nt=Ge[ot],ct=nt.y1+V-qt,ct>0&&(nt.y0-=ct,nt.y1-=ct),qt=nt.y0})}}function ie(Te){Te.nodes.forEach(function(Ee){Ee.sourceLinks.sort(f),Ee.targetLinks.sort(c)}),Te.nodes.forEach(function(Ee){var Ae=Ee.y0,ze=Ae;Ee.sourceLinks.forEach(function(Ce){Ce.y0=Ae+Ce.width/2,Ae+=Ce.width}),Ee.targetLinks.forEach(function(Ce){Ce.y1=ze+Ce.width/2,ze+=Ce.width})})}return ae};function _(g){return[g.source.x1,g.y0]}function C(g){return[g.target.x0,g.y1]}var M=function(){return n.linkHorizontal().source(_).target(C)};e.sankey=L,e.sankeyCenter=l,e.sankeyLeft=a,e.sankeyRight=o,e.sankeyJustify=s,e.sankeyLinkHorizontal=M,Object.defineProperty(e,"__esModule",{value:!0})})});var kje=ye((__r,Eje)=>{var SWt=LJ();Eje.exports=function(t,r){var n=[],i=[],a=[],o={},s=[],l;function u(k){a[k]=!1,o.hasOwnProperty(k)&&Object.keys(o[k]).forEach(function(A){delete o[k][A],a[A]&&u(A)})}function c(k){var A=!1;i.push(k),a[k]=!0;var L,_;for(L=0;L=k})}function d(k){h(k);for(var A=t,L=SWt(A),_=L.components.filter(function(q){return q.length>1}),C=1/0,M,g=0;g<_.length;g++)for(var P=0;P<_[g].length;P++)_[g][P]{(function(e,t){typeof x7=="object"&&typeof Cje!="undefined"?t(x7,$E(),d7(),PJ(),kje()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,null)})(x7,function(e,t,r,n,i){"use strict";i=i&&i.hasOwnProperty("default")?i.default:i;function a(rt){return rt.target.depth}function o(rt){return rt.depth}function s(rt,ot){return ot-1-rt.height}function l(rt,ot){return rt.sourceLinks.length?rt.depth:ot-1}function u(rt){return rt.targetLinks.length?rt.depth:rt.sourceLinks.length?t.min(rt.sourceLinks,a)-1:0}function c(rt){return function(){return rt}}var f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(rt){return typeof rt}:function(rt){return rt&&typeof Symbol=="function"&&rt.constructor===Symbol&&rt!==Symbol.prototype?"symbol":typeof rt};function h(rt,ot){return v(rt.source,ot.source)||rt.index-ot.index}function d(rt,ot){return v(rt.target,ot.target)||rt.index-ot.index}function v(rt,ot){return rt.partOfCycle===ot.partOfCycle?rt.y0-ot.y0:rt.circularLinkType==="top"||ot.circularLinkType==="bottom"?-1:1}function x(rt){return rt.value}function b(rt){return(rt.y0+rt.y1)/2}function p(rt){return b(rt.source)}function E(rt){return b(rt.target)}function k(rt){return rt.index}function A(rt){return rt.nodes}function L(rt){return rt.links}function _(rt,ot){var Rt=rt.get(ot);if(!Rt)throw new Error("missing: "+ot);return Rt}function C(rt,ot){return ot(rt)}var M=25,g=10,P=.3;function T(){var rt=0,ot=0,Rt=1,kt=1,Ct=24,Yt,xr=k,er=l,Ke=A,xt=L,bt=32,Lt=2,St,Et=null;function dt(){var ut={nodes:Ke.apply(null,arguments),links:xt.apply(null,arguments)};Ht(ut),F(ut,xr,Et),$t(ut),Br(ut),q(ut,xr),Or(ut,bt,xr),Nr(ut);for(var Ne=4,Ye=0;Ye0?Ne+M+g:Ne,Ye=Ye>0?Ye+M+g:Ye,Ve=Ve>0?Ve+M+g:Ve,Xe=Xe>0?Xe+M+g:Xe,{top:Ne,bottom:Ye,left:Xe,right:Ve}}function _r(ut,Ne){var Ye=t.max(ut.nodes,function(lt){return lt.column}),Ve=Rt-rt,Xe=kt-ot,ht=Ve+Ne.right+Ne.left,Le=Xe+Ne.top+Ne.bottom,xe=Ve/ht,Se=Xe/Le;return rt=rt*xe+Ne.left,Rt=Ne.right==0?Rt:Rt*xe,ot=ot*Se+Ne.top,kt=kt*Se,ut.nodes.forEach(function(lt){lt.x0=rt+lt.column*((Rt-rt-Ct)/Ye),lt.x1=lt.x0+Ct}),Se}function Br(ut){var Ne,Ye,Ve;for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.depth=Ve,Xe.sourceLinks.forEach(function(ht){Ye.indexOf(ht.target)<0&&!ht.circular&&Ye.push(ht.target)})});for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.height=Ve,Xe.targetLinks.forEach(function(ht){Ye.indexOf(ht.source)<0&&!ht.circular&&Ye.push(ht.source)})});ut.nodes.forEach(function(Xe){Xe.column=Math.floor(er.call(null,Xe,Ve))})}function Or(ut,Ne,Ye){var Ve=r.nest().key(function(lt){return lt.column}).sortKeys(t.ascending).entries(ut.nodes).map(function(lt){return lt.values});Le(Ye),Se();for(var Xe=1,ht=Ne;ht>0;--ht)xe(Xe*=.99,Ye),Se();function Le(lt){if(St){var Gt=1/0;Ve.forEach(function(ai){var jr=kt*St/(ai.length+1);Gt=jr0))if(ai==0&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else if(ai==Vt-1&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else{var bi=0,nn=t.mean(jr.sourceLinks,E),Wi=t.mean(jr.targetLinks,p);nn&&Wi?bi=(nn+Wi)/2:bi=nn||Wi;var Ni=(bi-b(jr))*lt;jr.y0+=Ni,jr.y1+=Ni}})})}function Se(){Ve.forEach(function(lt){var Gt,Vt,ar=ot,Qr=lt.length,ai;for(lt.sort(v),ai=0;ai0&&(Gt.y0+=Vt,Gt.y1+=Vt),ar=Gt.y1+Yt;if(Vt=ar-Yt-kt,Vt>0)for(ar=Gt.y0-=Vt,Gt.y1-=Vt,ai=Qr-2;ai>=0;--ai)Gt=lt[ai],Vt=Gt.y1+Yt-ar,Vt>0&&(Gt.y0-=Vt,Gt.y1-=Vt),ar=Gt.y0})}}function Nr(ut){ut.nodes.forEach(function(Ne){Ne.sourceLinks.sort(d),Ne.targetLinks.sort(h)}),ut.nodes.forEach(function(Ne){var Ye=Ne.y0,Ve=Ye,Xe=Ne.y1,ht=Xe;Ne.sourceLinks.forEach(function(Le){Le.circular?(Le.y0=Xe-Le.width/2,Xe=Xe-Le.width):(Le.y0=Ye+Le.width/2,Ye+=Le.width)}),Ne.targetLinks.forEach(function(Le){Le.circular?(Le.y1=ht-Le.width/2,ht=ht-Le.width):(Le.y1=Ve+Le.width/2,Ve+=Le.width)})})}return dt}function F(rt,ot,Rt){var kt=0;if(Rt===null){for(var Ct=[],Yt=0;Ytot.source.column)}function X(rt,ot){var Rt=0;rt.sourceLinks.forEach(function(Ct){Rt=Ct.circular&&!ct(Ct,ot)?Rt+1:Rt});var kt=0;return rt.targetLinks.forEach(function(Ct){kt=Ct.circular&&!ct(Ct,ot)?kt+1:kt}),Rt+kt}function G(rt){var ot=rt.source.sourceLinks,Rt=0;ot.forEach(function(Yt){Rt=Yt.circular?Rt+1:Rt});var kt=rt.target.targetLinks,Ct=0;return kt.forEach(function(Yt){Ct=Yt.circular?Ct+1:Ct}),!(Rt>1||Ct>1)}function N(rt,ot,Rt){return rt.sort(ae),rt.forEach(function(kt,Ct){var Yt=0;if(ct(kt,Rt)&&G(kt))kt.circularPathData.verticalBuffer=Yt+kt.width/2;else{var xr=0;for(xr;xrYt?er:Yt}kt.circularPathData.verticalBuffer=Yt+kt.width/2}}),rt}function W(rt,ot,Rt,kt){var Ct=5,Yt=t.min(rt.links,function(Ke){return Ke.source.y0});rt.links.forEach(function(Ke){Ke.circular&&(Ke.circularPathData={})});var xr=rt.links.filter(function(Ke){return Ke.circularLinkType=="top"});N(xr,ot,kt);var er=rt.links.filter(function(Ke){return Ke.circularLinkType=="bottom"});N(er,ot,kt),rt.links.forEach(function(Ke){if(Ke.circular){if(Ke.circularPathData.arcRadius=Ke.width+g,Ke.circularPathData.leftNodeBuffer=Ct,Ke.circularPathData.rightNodeBuffer=Ct,Ke.circularPathData.sourceWidth=Ke.source.x1-Ke.source.x0,Ke.circularPathData.sourceX=Ke.source.x0+Ke.circularPathData.sourceWidth,Ke.circularPathData.targetX=Ke.target.x0,Ke.circularPathData.sourceY=Ke.y0,Ke.circularPathData.targetY=Ke.y1,ct(Ke,kt)&&G(Ke))Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2,Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2,Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Ke.source.y1+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Ke.source.y0-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius);else{var xt=Ke.source.column,bt=Ke.circularLinkType,Lt=rt.links.filter(function(dt){return dt.source.column==xt&&dt.circularLinkType==bt});Ke.circularLinkType=="bottom"?Lt.sort(Me):Lt.sort(_e);var St=0;Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),xt=Ke.target.column,Lt=rt.links.filter(function(dt){return dt.target.column==xt&&dt.circularLinkType==bt}),Ke.circularLinkType=="bottom"?Lt.sort(ge):Lt.sort(ke),St=0,Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Math.max(Rt,Ke.source.y1,Ke.target.y1)+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Yt-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius)}Ke.circularPathData.leftInnerExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightInnerExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightNodeBuffer,Ke.circularPathData.leftFullExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftLargeArcRadius+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightFullExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightLargeArcRadius-Ke.circularPathData.rightNodeBuffer}if(Ke.circular)Ke.path=re(Ke);else{var Et=n.linkHorizontal().source(function(dt){var Ht=dt.source.x0+(dt.source.x1-dt.source.x0),$t=dt.y0;return[Ht,$t]}).target(function(dt){var Ht=dt.target.x0,$t=dt.y1;return[Ht,$t]});Ke.path=Et(Ke)}})}function re(rt){var ot="";return rt.circularLinkType=="top"?ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 0 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY-rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 0 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 0 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY-rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 0 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY:ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 1 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY+rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 1 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 1 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY+rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 1 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY,ot}function ae(rt,ot){return ie(rt)==ie(ot)?rt.circularLinkType=="bottom"?Me(rt,ot):_e(rt,ot):ie(ot)-ie(rt)}function _e(rt,ot){return rt.y0-ot.y0}function Me(rt,ot){return ot.y0-rt.y0}function ke(rt,ot){return rt.y1-ot.y1}function ge(rt,ot){return ot.y1-rt.y1}function ie(rt){return rt.target.column-rt.source.column}function Te(rt){return rt.target.x0-rt.source.x1}function Ee(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1+kt:rt.y1-kt;return Ct}function Ae(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1-kt:rt.y1+kt;return Ct}function ze(rt,ot,Rt,kt){rt.links.forEach(function(Ct){if(!Ct.circular&&Ct.target.column-Ct.source.column>1){var Yt=Ct.source.column+1,xr=Ct.target.column-1,er=1,Ke=xr-Yt+1;for(er=1;Yt<=xr;Yt++,er++)rt.nodes.forEach(function(xt){if(xt.column==Yt){var bt=er/(Ke+1),Lt=Math.pow(1-bt,3),St=3*bt*Math.pow(1-bt,2),Et=3*Math.pow(bt,2)*(1-bt),dt=Math.pow(bt,3),Ht=Lt*Ct.y0+St*Ct.y0+Et*Ct.y1+dt*Ct.y1,$t=Ht-Ct.width/2,fr=Ht+Ct.width/2,_r;$t>xt.y0&&$txt.y0&&frxt.y1&&me(Br,_r,ot,Rt)})):$txt.y1&&(_r=fr-xt.y0+10,xt=me(xt,_r,ot,Rt),rt.nodes.forEach(function(Br){C(Br,kt)==C(xt,kt)||Br.column!=xt.column||Br.y0xt.y1&&me(Br,_r,ot,Rt)}))}})}})}function Ce(rt,ot){return rt.y0>ot.y0&&rt.y0ot.y0&&rt.y1ot.y1}function me(rt,ot,Rt,kt){return rt.y0+ot>=Rt&&rt.y1+ot<=kt&&(rt.y0=rt.y0+ot,rt.y1=rt.y1+ot,rt.targetLinks.forEach(function(Ct){Ct.y1=Ct.y1+ot}),rt.sourceLinks.forEach(function(Ct){Ct.y0=Ct.y0+ot})),rt}function Re(rt,ot,Rt,kt){rt.nodes.forEach(function(Ct){kt&&Ct.y+(Ct.y1-Ct.y0)>ot&&(Ct.y=Ct.y-(Ct.y+(Ct.y1-Ct.y0)-ot));var Yt=rt.links.filter(function(Ke){return C(Ke.source,Rt)==C(Ct,Rt)}),xr=Yt.length;xr>1&&Yt.sort(function(Ke,xt){if(!Ke.circular&&!xt.circular){if(Ke.target.column==xt.target.column)return Ke.y1-xt.y1;if(Ge(Ke,xt)){if(Ke.target.column>xt.target.column){var bt=Ae(xt,Ke);return Ke.y1-bt}if(xt.target.column>Ke.target.column){var Lt=Ae(Ke,xt);return Lt-xt.y1}}else return Ke.y1-xt.y1}if(Ke.circular&&!xt.circular)return Ke.circularLinkType=="top"?-1:1;if(xt.circular&&!Ke.circular)return xt.circularLinkType=="top"?1:-1;if(Ke.circular&&xt.circular)return Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="top"?Ke.target.column===xt.target.column?Ke.target.y1-xt.target.y1:xt.target.column-Ke.target.column:Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="bottom"?Ke.target.column===xt.target.column?xt.target.y1-Ke.target.y1:Ke.target.column-xt.target.column:Ke.circularLinkType=="top"?-1:1});var er=Ct.y0;Yt.forEach(function(Ke){Ke.y0=er+Ke.width/2,er=er+Ke.width}),Yt.forEach(function(Ke,xt){if(Ke.circularLinkType=="bottom"){var bt=xt+1,Lt=0;for(bt;bt1&&Ct.sort(function(er,Ke){if(!er.circular&&!Ke.circular){if(er.source.column==Ke.source.column)return er.y0-Ke.y0;if(Ge(er,Ke)){if(Ke.source.column0?"up":"down"}function ct(rt,ot){return C(rt.source,ot)==C(rt.target,ot)}function qt(rt,ot,Rt){var kt=rt.nodes,Ct=rt.links,Yt=!1,xr=!1;if(Ct.forEach(function(St){St.circularLinkType=="top"?Yt=!0:St.circularLinkType=="bottom"&&(xr=!0)}),Yt==!1||xr==!1){var er=t.min(kt,function(St){return St.y0}),Ke=t.max(kt,function(St){return St.y1}),xt=Ke-er,bt=Rt-ot,Lt=bt/xt;kt.forEach(function(St){var Et=(St.y1-St.y0)*Lt;St.y0=(St.y0-er)*Lt,St.y1=St.y0+Et}),Ct.forEach(function(St){St.y0=(St.y0-er)*Lt,St.y1=(St.y1-er)*Lt,St.width=St.width*Lt})}}e.sankeyCircular=T,e.sankeyCenter=u,e.sankeyLeft=o,e.sankeyRight=s,e.sankeyJustify=l,Object.defineProperty(e,"__esModule",{value:!0})})});var IJ=ye((x_r,Pje)=>{"use strict";Pje.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}});var Gje=ye((b_r,Hje)=>{"use strict";var Ije=bje(),MWt=(R2(),B1(I2)).interpolateNumber,CA=xa(),Gk=Mje(),EWt=Lje(),pu=IJ(),LA=id(),aw=va(),kWt=ao(),p1=Mr(),zJ=p1.strTranslate,CWt=p1.strRotate,FJ=Km(),jk=FJ.keyFun,b7=FJ.repeat,Oje=FJ.unwrap,Rje=Pl(),LWt=ba(),Bje=Nh(),PWt=Bje.CAP_SHIFT,IWt=Bje.LINE_SPACING,RWt=3;function DWt(e,t,r){var n=Oje(t),i=n.trace,a=i.domain,o=i.orientation==="h",s=i.node.pad,l=i.node.thickness,u={justify:Gk.sankeyJustify,left:Gk.sankeyLeft,right:Gk.sankeyRight,center:Gk.sankeyCenter}[i.node.align],c=e.width*(a.x[1]-a.x[0]),f=e.height*(a.y[1]-a.y[0]),h=n._nodes,d=n._links,v=n.circular,x;v?x=EWt.sankeyCircular().circularLinkGap(0):x=Gk.sankey(),x.iterations(pu.sankeyIterations).size(o?[c,f]:[f,c]).nodeWidth(l).nodePadding(s).nodeId(function(V){return V.pointNumber}).nodeAlign(u).nodes(h).links(d);var b=x();x.nodePadding()=N||(G=N-X.y0,G>1e-6&&(X.y0+=G,X.y1+=G)),N=X.y1+s})}function P(V){var H=V.map(function(_e,Me){return{x0:_e.x0,index:Me}}).sort(function(_e,Me){return _e.x0-Me.x0}),X=[],G=-1,N,W=-1/0,re;for(p=0;pW+l&&(G+=1,N=ae.x0),W=ae.x0,X[G]||(X[G]=[]),X[G].push(ae),re=N-ae.x0,ae.x0+=re,ae.x1+=re}return X}if(i.node.x.length&&i.node.y.length){for(p=0;p0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-t)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-t)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-t)+" "+i.verticalRightInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-t)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-t-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-t-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-t+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:a?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-t-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:r+=" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-t)+" "+(i.targetY+n)+" L "+(i.targetX-t)+" "+(i.targetY+n)+(t>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}function qJ(){var e=.5;function t(r){var n=r.linkArrowLength;if(r.link.circular)return FWt(r.link,n);var i=Math.abs((r.link.target.x0-r.link.source.x1)/2);n>i&&(n=i);var a=r.link.source.x1,o=r.link.target.x0-n,s=MWt(a,o),l=s(e),u=s(1-e),c=r.link.y0-r.link.width/2,f=r.link.y0+r.link.width/2,h=r.link.y1-r.link.width/2,d=r.link.y1+r.link.width/2,v="M"+a+","+c,x="C"+l+","+c+" "+u+","+h+" "+o+","+h,b="C"+u+","+d+" "+l+","+f+" "+a+","+f,p=n>0?"L"+(o+n)+","+(h+r.link.width/2):"";return p+="L"+o+","+d,v+x+p+b+"Z"}return t}function qWt(e,t){var r=LA(t.color),n=pu.nodePadAcross,i=e.nodePad/2;t.dx=t.x1-t.x0,t.dy=t.y1-t.y0;var a=t.dx,o=Math.max(.5,t.dy),s="node_"+t.pointNumber;return t.group&&(s=p1.randstr()),t.trace=e.trace,t.curveNumber=e.trace.index,{index:t.pointNumber,key:s,partOfGroup:t.partOfGroup||!1,group:t.group,traceId:e.key,trace:e.trace,node:t,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:e.horizontal?t.dy/2+1:t.dx/2+1,left:t.originalLayer===1,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:aw.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,graph:e.graph,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,s].join("_"),interactionState:e.interactionState,figure:e}}function DJ(e){e.attr("transform",function(t){return zJ(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function OWt(e){e.call(DJ)}function Nje(e,t){e.call(OWt),t.attr("d",qJ())}function Dje(e){e.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function RJ(e){return e.link.width>1||e.linkLineWidth>0}function zje(e){var t=zJ(e.translateX,e.translateY);return t+(e.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function Fje(e,t,r){e.on(".basic",null).on("mouseover.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.hover(this,n,t),n.interactionState.hovered=[this,n])}).on("mousemove.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.follow(this,n),n.interactionState.hovered=[this,n])}).on("mouseout.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.unhover(this,n,t),n.interactionState.hovered=!1)}).on("click.basic",function(n){n.interactionState.hovered&&(r.unhover(this,n,t),n.interactionState.hovered=!1),!n.interactionState.dragInProgress&&!n.partOfGroup&&r.select(this,n,t)})}function BWt(e,t,r,n){var i=CA.behavior.drag().origin(function(a){return{x:a.node.x0+a.visibleWidth/2,y:a.node.y0+a.visibleHeight/2}}).on("dragstart",function(a){if(a.arrangement!=="fixed"&&(p1.ensureSingle(n._fullLayout._infolayer,"g","dragcover",function(s){n._fullLayout._dragCover=s}),p1.raiseToTop(this),a.interactionState.dragInProgress=a.node,qje(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),a.arrangement==="snap")){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):NWt(e,o,a,n),UWt(e,t,a,o,n)}}).on("drag",function(a){if(a.arrangement!=="fixed"){var o=CA.event.x,s=CA.event.y;a.arrangement==="snap"?(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2,a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2):(a.arrangement==="freeform"&&(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2),s=Math.max(0,Math.min(a.size-a.visibleHeight/2,s)),a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2),qje(a.node),a.arrangement!=="snap"&&(a.sankey.update(a.graph),Nje(e.filter(Vje(a)),t))}}).on("dragend",function(a){if(a.arrangement!=="fixed"){a.interactionState.dragInProgress=!1;for(var o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,Uje(r,i)}})}function VWt(e,t,r,n){return function(){for(var a=0,o=0;o0&&n.forceLayouts[t].alpha(0)}}function Uje(e,t){for(var r=[],n=[],i=0;i{"use strict";var Zv=xa(),BJ=Mr(),w7=BJ.numberFormat,WWt=Gje(),PA=Nc(),ZWt=va(),Sx=IJ().cn,Wk=BJ._;function jje(e){return e!==""}function IA(e,t){return e.filter(function(r){return r.key===t.traceId})}function Wje(e,t){Zv.select(e).select("path").style("fill-opacity",t),Zv.select(e).select("rect").style("fill-opacity",t)}function Zje(e){Zv.select(e).select("text.name").style("fill","black")}function Xje(e){return function(t){return e.node.sourceLinks.indexOf(t.link)!==-1||e.node.targetLinks.indexOf(t.link)!==-1}}function Yje(e){return function(t){return t.node.sourceLinks.indexOf(e.link)!==-1||t.node.targetLinks.indexOf(e.link)!==-1}}function Kje(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call(Jje.bind(0,t,r,!1))}function OJ(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call($je.bind(0,t,r,!1))}function Jje(e,t,r,n){n.style("fill",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverHue}).style("fill-opacity",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverHue}).style("fill-opacity",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverAlpha})}),r&&IA(t,e).selectAll("."+Sx.sankeyNode).filter(Yje(e)).call(Kje)}function $je(e,t,r,n){n.style("fill",function(i){return i.tinyColorHue}).style("fill-opacity",function(i){return i.tinyColorAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){return o.tinyColorHue}).style("fill-opacity",function(o){return o.tinyColorAlpha})}),r&&IA(t,e).selectAll(Sx.sankeyNode).filter(Yje(e)).call(OJ)}function lf(e,t){var r=e.hoverlabel||{},n=BJ.nestedProperty(r,t).get();return Array.isArray(n)?!1:n}Qje.exports=function(t,r){for(var n=t._fullLayout,i=n._paper,a=n._size,o=0;o"),color:lf(C,"bgcolor")||ZWt.addOpacity(F.color,1),borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:Zv.event.x"),color:lf(C,"bgcolor")||_.tinyColorHue,borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:"left",hovertemplate:C.hovertemplate,hovertemplateLabels:V,eventData:[_.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});Wje(G,.85),Zje(G)}}},A=function(L,_,C){t._fullLayout.hovermode!==!1&&(Zv.select(L).call(OJ,_,C),_.node.trace.node.hoverinfo!=="skip"&&(_.node.fullData=_.node.trace,t.emit("plotly_unhover",{event:Zv.event,points:[_.node]})),PA.loneUnhover(n._hoverlayer.node()))};WWt(t,i,r,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{linkEvents:{hover:u,follow:x,unhover:b,select:l},nodeEvents:{hover:E,follow:k,unhover:A,select:p}})}});var eWe=ye(ow=>{"use strict";var XWt=Bu().overrideAll,YWt=kd().getModuleCalcData,KWt=NJ(),JWt=N1(),$Wt=Tg(),QWt=gv(),eZt=wf().prepSelect,UJ=Mr(),tZt=ba(),T7="sankey";ow.name=T7;ow.baseLayoutAttrOverrides=XWt({hoverlabel:JWt.hoverlabel},"plot","nested");ow.plot=function(e){var t=YWt(e.calcdata,T7)[0];KWt(e,t),ow.updateFx(e)};ow.clean=function(e,t,r,n){var i=n._has&&n._has(T7),a=t._has&&t._has(T7);i&&!a&&(n._paperdiv.selectAll(".sankey").remove(),n._paperdiv.selectAll(".bgsankey").remove())};ow.updateFx=function(e){for(var t=0;t{"use strict";tWe.exports=function(t,r){for(var n=t.cd,i=[],a=n[0].trace,o=a._sankey.graph.nodes,s=0;s{"use strict";iWe.exports={attributes:CJ(),supplyDefaults:sje(),calc:hje(),plot:NJ(),moduleType:"trace",name:"sankey",basePlotModule:eWe(),selectPoints:rWe(),categories:["noOpacity"],meta:{}}});var oWe=ye((M_r,aWe)=>{"use strict";aWe.exports=nWe()});var lWe=ye(RA=>{"use strict";var sWe=Xu();RA.name="indicator";RA.plot=function(e,t,r,n){sWe.plotBasePlot(RA.name,e,t,r,n)};RA.clean=function(e,t,r,n){sWe.cleanBasePlot(RA.name,e,t,r,n)}});var HJ=ye((k_r,vWe)=>{"use strict";var Mx=no().extendFlat,cWe=no().extendDeep,iZt=Bu().overrideAll,fWe=Su(),hWe=dh(),nZt=Ju().attributes,Sf=Cd(),aZt=Vs().templatedArray,A7=HT(),uWe=Oc().descriptionOnlyNumbers,VJ=fWe({editType:"plot",colorEditType:"plot"}),Zk={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},dWe={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},oZt=aZt("step",cWe({},Zk,{range:dWe}));vWe.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:nZt({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:Mx({},VJ,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:uWe("value")},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:uWe("value")},increasing:{symbol:{valType:"string",dflt:A7.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:A7.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:cWe({},Zk,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:iZt({range:dWe,visible:Mx({},Sf.visible,{dflt:!0}),tickmode:Sf.minor.tickmode,nticks:Sf.nticks,tick0:Sf.tick0,dtick:Sf.dtick,tickvals:Sf.tickvals,ticktext:Sf.ticktext,ticks:Mx({},Sf.ticks,{dflt:"outside"}),ticklen:Sf.ticklen,tickwidth:Sf.tickwidth,tickcolor:Sf.tickcolor,ticklabelstep:Sf.ticklabelstep,showticklabels:Sf.showticklabels,labelalias:Sf.labelalias,tickfont:fWe({}),tickangle:Sf.tickangle,tickformat:Sf.tickformat,tickformatstops:Sf.tickformatstops,tickprefix:Sf.tickprefix,showtickprefix:Sf.showtickprefix,ticksuffix:Sf.ticksuffix,showticksuffix:Sf.showticksuffix,separatethousands:Sf.separatethousands,exponentformat:Sf.exponentformat,minexponent:Sf.minexponent,showexponent:Sf.showexponent,editType:"plot"},"plot"),steps:oZt,threshold:{line:{color:Mx({},Zk.line.color,{}),width:Mx({},Zk.line.width,{dflt:1}),editType:"plot"},thickness:Mx({},Zk.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}});var GJ=ye((C_r,pWe)=>{"use strict";pWe.exports={defaultNumberFontSize:80,bulletNumberDomainSize:.25,bulletPadding:.025,innerRadius:.75,valueThickness:.5,titlePadding:5,horizontalPadding:10}});var yWe=ye((L_r,mWe)=>{"use strict";var ey=Mr(),M7=HJ(),sZt=Ju().defaults,gWe=Vs(),lZt=Zd(),S7=GJ(),uZt=xb(),cZt=T3(),fZt=t_(),hZt=r_();function dZt(e,t,r,n){function i(_,C){return ey.coerce(e,t,M7,_,C)}sZt(t,n,i),i("mode"),t._hasNumber=t.mode.indexOf("number")!==-1,t._hasDelta=t.mode.indexOf("delta")!==-1,t._hasGauge=t.mode.indexOf("gauge")!==-1;var a=i("value");t._range=[0,typeof a=="number"?1.5*a:1];var o=new Array(2),s;if(t._hasNumber){i("number.valueformat");var l=ey.extendFlat({},n.font);l.size=void 0,ey.coerceFont(i,"number.font",l),t.number.font.size===void 0&&(t.number.font.size=S7.defaultNumberFontSize,o[0]=!0),i("number.prefix"),i("number.suffix"),s=t.number.font.size}var u;if(t._hasDelta){var c=ey.extendFlat({},n.font);c.size=void 0,ey.coerceFont(i,"delta.font",c),t.delta.font.size===void 0&&(t.delta.font.size=(t._hasNumber?.5:1)*(s||S7.defaultNumberFontSize),o[1]=!0),i("delta.reference",t.value),i("delta.relative"),i("delta.valueformat",t.delta.relative?"2%":""),i("delta.increasing.symbol"),i("delta.increasing.color"),i("delta.decreasing.symbol"),i("delta.decreasing.color"),i("delta.position"),i("delta.prefix"),i("delta.suffix"),u=t.delta.font.size}t._scaleNumbers=(!t._hasNumber||o[0])&&(!t._hasDelta||o[1])||!1;var f=ey.extendFlat({},n.font);f.size=.25*(s||u||S7.defaultNumberFontSize),ey.coerceFont(i,"title.font",f),i("title.text");var h,d,v,x;function b(_,C){return ey.coerce(h,d,M7.gauge,_,C)}function p(_,C){return ey.coerce(v,x,M7.gauge.axis,_,C)}if(t._hasGauge){h=e.gauge,h||(h={}),d=gWe.newContainer(t,"gauge"),b("shape");var E=t._isBullet=t.gauge.shape==="bullet";E||i("title.align","center");var k=t._isAngular=t.gauge.shape==="angular";k||i("align","center"),b("bgcolor",n.paper_bgcolor),b("borderwidth"),b("bordercolor"),b("bar.color"),b("bar.line.color"),b("bar.line.width");var A=S7.valueThickness*(t.gauge.shape==="bullet"?.5:1);b("bar.thickness",A),lZt(h,d,{name:"steps",handleItemDefaults:vZt}),b("threshold.value"),b("threshold.thickness"),b("threshold.line.width"),b("threshold.line.color"),v={},h&&(v=h.axis||{}),x=gWe.newContainer(d,"axis"),p("visible"),t._range=p("range",t._range);var L={font:n.font,noAutotickangles:!0,outerTicks:!0,noTicklabelshift:!0,noTicklabelstandoff:!0};uZt(v,x,p,"linear"),hZt(v,x,p,"linear",L),fZt(v,x,p,"linear",L),cZt(v,x,p,L)}else i("title.align","center"),i("align","center"),t._isAngular=t._isBullet=!1;t._length=null}function vZt(e,t){function r(n,i){return ey.coerce(e,t,M7.gauge.steps,n,i)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}mWe.exports={supplyDefaults:dZt}});var xWe=ye((P_r,_We)=>{"use strict";function pZt(e,t){var r=[],n=t.value;typeof t._lastValue!="number"&&(t._lastValue=t.value);var i=t._lastValue,a=i;return t._hasDelta&&typeof t.delta.reference=="number"&&(a=t.delta.reference),r[0]={y:n,lastY:i,delta:n-a,relativeDelta:(n-a)/a},r}_We.exports={calc:pZt}});var MWe=ye((I_r,SWe)=>{"use strict";var fw=xa(),gZt=(R2(),B1(I2)).interpolate,bWe=(R2(),B1(I2)).interpolateNumber,Ex=Mr(),mZt=Ex.strScale,Yk=Ex.strTranslate,yZt=Ex.rad2deg,_Zt=Nh().MID_SHIFT,cw=ao(),sw=GJ(),k7=Pl(),av=Qa(),xZt=JM(),bZt=iI(),wZt=Cd(),DA=va(),jJ={left:"start",center:"middle",right:"end"},lw={left:0,center:.5,right:1},wWe=/[yzafpnµmkMGTPEZY]/;function Kk(e){return e&&e.duration>0}SWe.exports=function(t,r,n,i){var a=t._fullLayout,o;Kk(n)&&i&&(o=i()),Ex.makeTraceGroups(a._indicatorlayer,r,"trace").each(function(s){var l=s[0],u=l.trace,c=fw.select(this),f=u._hasGauge,h=u._isAngular,d=u._isBullet,v=u.domain,x={w:a._size.w*(v.x[1]-v.x[0]),h:a._size.h*(v.y[1]-v.y[0]),l:a._size.l+a._size.w*v.x[0],r:a._size.r+a._size.w*(1-v.x[1]),t:a._size.t+a._size.h*(1-v.y[1]),b:a._size.b+a._size.h*v.y[0]},b=x.l+x.w/2,p=x.t+x.h/2,E=Math.min(x.w/2,x.h),k=sw.innerRadius*E,A,L,_,C=u.align||"center";if(L=p,!f)A=x.l+lw[C]*x.w,_=function(G){return TWe(G,x.w,x.h)};else if(h&&(A=b,L=p+E/2,_=function(G){return EZt(G,.9*k)}),d){var M=sw.bulletPadding,g=1-sw.bulletNumberDomainSize+M;A=x.l+(g+(1-g)*lw[C])*x.w,_=function(G){return TWe(G,(sw.bulletNumberDomainSize-M)*x.w,x.h)}}SZt(t,c,s,{numbersX:A,numbersY:L,numbersScaler:_,transitionOpts:n,onComplete:o});var P,T;f&&(P={range:u.gauge.axis.range,color:u.gauge.bgcolor,line:{color:u.gauge.bordercolor,width:0},thickness:1},T={range:u.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:u.gauge.bordercolor,width:u.gauge.borderwidth},thickness:1});var F=c.selectAll("g.angular").data(h?s:[]);F.exit().remove();var q=c.selectAll("g.angularaxis").data(h?s:[]);q.exit().remove(),h&&AZt(t,c,s,{radius:E,innerRadius:k,gauge:F,layer:q,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var V=c.selectAll("g.bullet").data(d?s:[]);V.exit().remove();var H=c.selectAll("g.bulletaxis").data(d?s:[]);H.exit().remove(),d&&TZt(t,c,s,{gauge:V,layer:H,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var X=c.selectAll("text.title").data(s);X.exit().remove(),X.enter().append("text").classed("title",!0),X.attr("text-anchor",function(){return d?jJ.right:jJ[u.title.align]}).text(u.title.text).call(cw.font,u.title.font).call(k7.convertToTspans,t),X.attr("transform",function(){var G=x.l+x.w*lw[u.title.align],N,W=sw.titlePadding,re=cw.bBox(X.node());if(f){if(h)if(u.gauge.axis.visible){var ae=cw.bBox(q.node());N=ae.top-W-re.bottom}else N=x.t+x.h/2-E/2-re.bottom-W;d&&(N=L-(re.top+re.bottom)/2,G=x.l-sw.bulletPadding*x.w)}else N=u._numbersTop-W-re.bottom;return Yk(G,N)})})};function TZt(e,t,r,n){var i=r[0].trace,a=n.gauge,o=n.layer,s=n.gaugeBg,l=n.gaugeOutline,u=n.size,c=i.domain,f=n.transitionOpts,h=n.onComplete,d,v,x,b,p;a.enter().append("g").classed("bullet",!0),a.attr("transform",Yk(u.l,u.t)),o.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),o.selectAll("g.xbulletaxistick,path,text").remove();var E=u.h,k=i.gauge.bar.thickness*E,A=c.x[0],L=c.x[0]+(c.x[1]-c.x[0])*(i._hasNumber||i._hasDelta?1-sw.bulletNumberDomainSize:1);d=Xk(e,i.gauge.axis),d._id="xbulletaxis",d.domain=[A,L],d.setScale(),v=av.calcTicks(d),x=av.makeTransTickFn(d),b=av.getTickSigns(d)[2],p=u.t+u.h,d.visible&&(av.drawTicks(e,d,{vals:d.ticks==="inside"?av.clipEnds(d,v):v,layer:o,path:av.makeTickPath(d,p,b),transFn:x}),av.drawLabels(e,d,{vals:v,layer:o,transFn:x,labelFns:av.makeLabelFns(d,p)}));function _(q){q.attr("width",function(V){return Math.max(0,d.c2p(V.range[1])-d.c2p(V.range[0]))}).attr("x",function(V){return d.c2p(V.range[0])}).attr("y",function(V){return .5*(1-V.thickness)*E}).attr("height",function(V){return V.thickness*E})}var C=[s].concat(i.gauge.steps),M=a.selectAll("g.bg-bullet").data(C);M.enter().append("g").classed("bg-bullet",!0).append("rect"),M.select("rect").call(_).call(uw),M.exit().remove();var g=a.selectAll("g.value-bullet").data([i.gauge.bar]);g.enter().append("g").classed("value-bullet",!0).append("rect"),g.select("rect").attr("height",k).attr("y",(E-k)/2).call(uw),Kk(f)?g.select("rect").transition().duration(f.duration).ease(f.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).attr("width",Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y)))):g.select("rect").attr("width",typeof r[0].y=="number"?Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y))):0),g.exit().remove();var P=r.filter(function(){return i.gauge.threshold.value||i.gauge.threshold.value===0}),T=a.selectAll("g.threshold-bullet").data(P);T.enter().append("g").classed("threshold-bullet",!0).append("line"),T.select("line").attr("x1",d.c2p(i.gauge.threshold.value)).attr("x2",d.c2p(i.gauge.threshold.value)).attr("y1",(1-i.gauge.threshold.thickness)/2*E).attr("y2",(1-(1-i.gauge.threshold.thickness)/2)*E).call(DA.stroke,i.gauge.threshold.line.color).style("stroke-width",i.gauge.threshold.line.width),T.exit().remove();var F=a.selectAll("g.gauge-outline").data([l]);F.enter().append("g").classed("gauge-outline",!0).append("rect"),F.select("rect").call(_).call(uw),F.exit().remove()}function AZt(e,t,r,n){var i=r[0].trace,a=n.size,o=n.radius,s=n.innerRadius,l=n.gaugeBg,u=n.gaugeOutline,c=[a.l+a.w/2,a.t+a.h/2+o/2],f=n.gauge,h=n.layer,d=n.transitionOpts,v=n.onComplete,x=Math.PI/2;function b(_e){var Me=i.gauge.axis.range[0],ke=i.gauge.axis.range[1],ge=(_e-Me)/(ke-Me)*Math.PI-x;return ge<-x?-x:ge>x?x:ge}function p(_e){return fw.svg.arc().innerRadius((s+o)/2-_e/2*(o-s)).outerRadius((s+o)/2+_e/2*(o-s)).startAngle(-x)}function E(_e){_e.attr("d",function(Me){return p(Me.thickness).startAngle(b(Me.range[0])).endAngle(b(Me.range[1]))()})}var k,A,L,_;f.enter().append("g").classed("angular",!0),f.attr("transform",Yk(c[0],c[1])),h.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),h.selectAll("g.xangularaxistick,path,text").remove(),k=Xk(e,i.gauge.axis),k.type="linear",k.range=i.gauge.axis.range,k._id="xangularaxis",k.ticklabeloverflow="allow",k.setScale();var C=function(_e){return(k.range[0]-_e.x)/(k.range[1]-k.range[0])*Math.PI+Math.PI},M={},g=av.makeLabelFns(k,0),P=g.labelStandoff;M.xFn=function(_e){var Me=C(_e);return Math.cos(Me)*P},M.yFn=function(_e){var Me=C(_e),ke=Math.sin(Me)>0?.2:1;return-Math.sin(Me)*(P+_e.fontSize*ke)+Math.abs(Math.cos(Me))*(_e.fontSize*_Zt)},M.anchorFn=function(_e){var Me=C(_e),ke=Math.cos(Me);return Math.abs(ke)<.1?"middle":ke>0?"start":"end"},M.heightFn=function(_e,Me,ke){var ge=C(_e);return-.5*(1+Math.sin(ge))*ke};var T=function(_e){return Yk(c[0]+o*Math.cos(_e),c[1]-o*Math.sin(_e))};L=function(_e){return T(C(_e))};var F=function(_e){var Me=C(_e);return T(Me)+"rotate("+-yZt(Me)+")"};if(A=av.calcTicks(k),_=av.getTickSigns(k)[2],k.visible){_=k.ticks==="inside"?-1:1;var q=(k.linewidth||1)/2;av.drawTicks(e,k,{vals:A,layer:h,path:"M"+_*q+",0h"+_*k.ticklen,transFn:F}),av.drawLabels(e,k,{vals:A,layer:h,transFn:L,labelFns:M})}var V=[l].concat(i.gauge.steps),H=f.selectAll("g.bg-arc").data(V);H.enter().append("g").classed("bg-arc",!0).append("path"),H.select("path").call(E).call(uw),H.exit().remove();var X=p(i.gauge.bar.thickness),G=f.selectAll("g.value-arc").data([i.gauge.bar]);G.enter().append("g").classed("value-arc",!0).append("path");var N=G.select("path");Kk(d)?(N.transition().duration(d.duration).ease(d.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).attrTween("d",MZt(X,b(r[0].lastY),b(r[0].y))),i._lastValue=r[0].y):N.attr("d",typeof r[0].y=="number"?X.endAngle(b(r[0].y)):"M0,0Z"),N.call(uw),G.exit().remove(),V=[];var W=i.gauge.threshold.value;(W||W===0)&&V.push({range:[W,W],color:i.gauge.threshold.color,line:{color:i.gauge.threshold.line.color,width:i.gauge.threshold.line.width},thickness:i.gauge.threshold.thickness});var re=f.selectAll("g.threshold-arc").data(V);re.enter().append("g").classed("threshold-arc",!0).append("path"),re.select("path").call(E).call(uw),re.exit().remove();var ae=f.selectAll("g.gauge-outline").data([u]);ae.enter().append("g").classed("gauge-outline",!0).append("path"),ae.select("path").call(E).call(uw),ae.exit().remove()}function SZt(e,t,r,n){var i=r[0].trace,a=n.numbersX,o=n.numbersY,s=i.align||"center",l=jJ[s],u=n.transitionOpts,c=n.onComplete,f=Ex.ensureSingle(t,"g","numbers"),h,d,v,x=[];i._hasNumber&&x.push("number"),i._hasDelta&&(x.push("delta"),i.delta.position==="left"&&x.reverse());var b=f.selectAll("text").data(x);b.enter().append("text"),b.attr("text-anchor",function(){return l}).attr("class",function(T){return T}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),b.exit().remove();function p(T,F,q,V){if(T.match("s")&&q>=0!=V>=0&&!F(q).slice(-1).match(wWe)&&!F(V).slice(-1).match(wWe)){var H=T.slice().replace("s","f").replace(/\d+/,function(G){return parseInt(G)-1}),X=Xk(e,{tickformat:H});return function(G){return Math.abs(G)<1?av.tickText(X,G).text:F(G)}}else return F}function E(){var T=Xk(e,{tickformat:i.number.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(G){return av.tickText(T,G).text},q=i.number.suffix,V=i.number.prefix,H=f.select("text.number");function X(){var G=typeof r[0].y=="number"?V+F(r[0].y)+q:"-";H.text(G).call(cw.font,i.number.font).call(k7.convertToTspans,e)}return Kk(u)?H.transition().duration(u.duration).ease(u.easing).each("end",function(){X(),c&&c()}).each("interrupt",function(){X(),c&&c()}).attrTween("text",function(){var G=fw.select(this),N=bWe(r[0].lastY,r[0].y);i._lastValue=r[0].y;var W=p(i.number.valueformat,F,r[0].lastY,r[0].y);return function(re){G.text(V+W(N(re))+q)}}):X(),h=AWe(V+F(r[0].y)+q,i.number.font,l,e),H}function k(){var T=Xk(e,{tickformat:i.delta.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(re){return av.tickText(T,re).text},q=i.delta.suffix,V=i.delta.prefix,H=function(re){var ae=i.delta.relative?re.relativeDelta:re.delta;return ae},X=function(re,ae){return re===0||typeof re!="number"||isNaN(re)?"-":(re>0?i.delta.increasing.symbol:i.delta.decreasing.symbol)+V+ae(re)+q},G=function(re){return re.delta>=0?i.delta.increasing.color:i.delta.decreasing.color};i._deltaLastValue===void 0&&(i._deltaLastValue=H(r[0]));var N=f.select("text.delta");N.call(cw.font,i.delta.font).call(DA.fill,G({delta:i._deltaLastValue}));function W(){N.text(X(H(r[0]),F)).call(DA.fill,G(r[0])).call(k7.convertToTspans,e)}return Kk(u)?N.transition().duration(u.duration).ease(u.easing).tween("text",function(){var re=fw.select(this),ae=H(r[0]),_e=i._deltaLastValue,Me=p(i.delta.valueformat,F,_e,ae),ke=bWe(_e,ae);return i._deltaLastValue=ae,function(ge){re.text(X(ke(ge),Me)),re.call(DA.fill,G({delta:ke(ge)}))}}).each("end",function(){W(),c&&c()}).each("interrupt",function(){W(),c&&c()}):W(),d=AWe(X(H(r[0]),F),i.delta.font,l,e),N}var A=i.mode+i.align,L;if(i._hasDelta&&(L=k(),A+=i.delta.position+i.delta.font.size+i.delta.font.family+i.delta.valueformat,A+=i.delta.increasing.symbol+i.delta.decreasing.symbol,v=d),i._hasNumber&&(E(),A+=i.number.font.size+i.number.font.family+i.number.valueformat+i.number.suffix+i.number.prefix,v=h),i._hasDelta&&i._hasNumber){var _=[(h.left+h.right)/2,(h.top+h.bottom)/2],C=[(d.left+d.right)/2,(d.top+d.bottom)/2],M,g,P=.75*i.delta.font.size;i.delta.position==="left"&&(M=E7(i,"deltaPos",0,-1*(h.width*lw[i.align]+d.width*(1-lw[i.align])+P),A,Math.min),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:d.left+M,right:h.right,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="right"&&(M=E7(i,"deltaPos",0,h.width*(1-lw[i.align])+d.width*lw[i.align]+P,A,Math.max),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:h.left,right:d.right+M,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="bottom"&&(M=null,g=d.height,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height,bottom:h.bottom+d.height}),i.delta.position==="top"&&(M=null,g=h.top,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height-d.height,bottom:h.bottom}),L.attr({dx:M,dy:g})}(i._hasNumber||i._hasDelta)&&f.attr("transform",function(){var T=n.numbersScaler(v);A+=T[2];var F=E7(i,"numbersScale",1,T[0],A,Math.min),q;i._scaleNumbers||(F=1),i._isAngular?q=o-F*v.bottom:q=o-F*(v.top+v.bottom)/2,i._numbersTop=F*v.top+q;var V=v[s];s==="center"&&(V=(v.left+v.right)/2);var H=a-F*V;return H=E7(i,"numbersTranslate",0,H,A,Math.max),Yk(H,q)+mZt(F)})}function uw(e){e.each(function(t){DA.stroke(fw.select(this),t.line.color)}).each(function(t){DA.fill(fw.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function MZt(e,t,r){return function(){var n=gZt(t,r);return function(i){return e.endAngle(n(i))()}}}function Xk(e,t,r){var n=e._fullLayout,i=Ex.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},t),a={type:"linear",_id:"x"+t._id},o={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function s(l,u){return Ex.coerce(i,a,wZt,l,u)}return xZt(i,a,s,o,n),bZt(i,a,s,o),a}function TWe(e,t,r){var n=Math.min(t/e.width,r/e.height);return[n,e,t+"x"+r]}function EZt(e,t){var r=Math.sqrt(e.width/2*(e.width/2)+e.height*e.height),n=t/r;return[n,e,t]}function AWe(e,t,r,n){var i=document.createElementNS("http://www.w3.org/2000/svg","text"),a=fw.select(i);return a.text(e).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",e).call(k7.convertToTspans,n).call(cw.font,t),cw.bBox(a.node())}function E7(e,t,r,n,i,a){var o="_cache"+t;e[o]&&e[o].key===i||(e[o]={key:i,value:r});var s=Ex.aggNums(a,null,[e[o].value,n],2);return e[o].value=s,s}});var kWe=ye((R_r,EWe)=>{"use strict";EWe.exports={moduleType:"trace",name:"indicator",basePlotModule:lWe(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:HJ(),supplyDefaults:yWe().supplyDefaults,calc:xWe().calc,plot:MWe(),meta:{}}});var LWe=ye((D_r,CWe)=>{"use strict";CWe.exports=kWe()});var WJ=ye((F_r,DWe)=>{"use strict";var PWe=Nb(),C7=no().extendFlat,kZt=Bu().overrideAll,IWe=Su(),CZt=Ju().attributes,RWe=Oc().descriptionOnlyNumbers,z_r=DWe.exports=kZt({domain:CZt({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))}},"calc","from-root")});var FWe=ye((q_r,zWe)=>{"use strict";var ZJ=Mr(),LZt=WJ(),PZt=Ju().defaults;function IZt(e,t){for(var r=e.columnorder||[],n=e.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(l,u){return l-u}),o=i.map(function(l){return a.indexOf(l)}),s=o.length;s{"use strict";var RZt=Km().wrap;qWe.exports=function(){return RZt({})}});var XJ=ye((B_r,BWe)=>{"use strict";BWe.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}});var XWe=ye((N_r,ZWe)=>{"use strict";var NWe=XJ(),KJ=no().extendFlat,DZt=uo(),zZt=vv().isTypedArray,L7=vv().isArrayOrTypedArray;ZWe.exports=function(t,r){var n=YJ(r.cells.values),i=function(g){return g.slice(r.header.values.length,g.length)},a=YJ(r.header.values);a.length&&!a[0].length&&(a[0]=[""],a=YJ(a));var o=a.concat(i(n).map(function(){return WWe((a[0]||[""]).length)})),s=r.domain,l=Math.floor(t._fullLayout._size.w*(s.x[1]-s.x[0])),u=Math.floor(t._fullLayout._size.h*(s.y[1]-s.y[0])),c=r.header.values.length?o[0].map(function(){return r.header.height}):[NWe.emptyHeaderHeight],f=n.length?n[0].map(function(){return r.cells.height}):[],h=c.reduce(UWe,0),d=u-h,v=d+NWe.uplift,x=GWe(f,v),b=GWe(c,h),p=HWe(b,[]),E=HWe(x,p),k={},A=r._fullInput.columnorder;L7(A)&&(A=Array.from(A)),A=A.concat(i(n.map(function(g,P){return P})));var L=o.map(function(g,P){var T=L7(r.columnwidth)?r.columnwidth[Math.min(P,r.columnwidth.length-1)]:r.columnwidth;return DZt(T)?Number(T):1}),_=L.reduce(UWe,0);L=L.map(function(g){return g/_*l});var C=Math.max(JJ(r.header.line.width),JJ(r.cells.line.width)),M={key:r.uid+t._context.staticPlot,translateX:s.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-s.y[1]),size:t._fullLayout._size,width:l,maxLineWidth:C,height:u,columnOrder:A,groupHeight:u,rowBlocks:E,headerRowBlocks:p,scrollY:0,cells:KJ({},r.cells,{values:n}),headerCells:KJ({},r.header,{values:o}),gdColumns:o.map(function(g){return g[0]}),gdColumnsOriginalOrder:o.map(function(g){return g[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:o.map(function(g,P){var T=k[g];k[g]=(T||0)+1;var F=g+"__"+k[g];return{key:F,label:g,specIndex:P,xIndex:A[P],xScale:VWe,x:void 0,calcdata:void 0,columnWidth:L[P]}})};return M.columns.forEach(function(g){g.calcdata=M,g.x=VWe(g)}),M};function JJ(e){if(L7(e)){for(var t=0,r=0;r=t||u===e.length-1)&&(r[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=jWe(),i+=a,s=u+1,a=0);return r}function jWe(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}});var YWe=ye($J=>{"use strict";var P7=no().extendFlat;$J.splitToPanels=function(e){var t=[0,0],r=P7({},e,{key:"header",type:"header",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!0,values:e.calcdata.headerCells.values[e.specIndex],rowBlocks:e.calcdata.headerRowBlocks,calcdata:P7({},e.calcdata,{cells:e.calcdata.headerCells})}),n=P7({},e,{key:"cells1",type:"cells",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks}),i=P7({},e,{key:"cells2",type:"cells",page:1,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks});return[n,i,r]};$J.splitToCells=function(e){var t=FZt(e);return(e.values||[]).slice(t[0],t[1]).map(function(r,n){var i=typeof r=="string"&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:n+i,key:t[0]+n,column:e,calcdata:e.calcdata,page:e.page,rowBlocks:e.rowBlocks,value:r}})};function FZt(e){var t=e.rowBlocks[e.page],r=t?t.rows[0].rowIndex:0,n=t?r+t.rows.length:0;return[r,n]}});var l$=ye((V_r,oZe)=>{"use strict";var Ia=XJ(),Mc=xa(),QJ=Mr(),qZt=QJ.numberFormat,gu=Km(),e$=ao(),OZt=Pl(),BZt=Mr().raiseToTop,og=Mr().strTranslate,NZt=Mr().cancelTransition,UZt=XWe(),rZe=YWe(),KWe=va();oZe.exports=function(t,r){var n=!t._context.staticPlot,i=t._fullLayout._paper.selectAll("."+Ia.cn.table).data(r.map(function(E){var k=gu.unwrap(E),A=k.trace;return UZt(t,A)}),gu.keyFun);i.exit().remove(),i.enter().append("g").classed(Ia.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),i.attr("width",function(E){return E.width+E.size.l+E.size.r}).attr("height",function(E){return E.height+E.size.t+E.size.b}).attr("transform",function(E){return og(E.translateX,E.translateY)});var a=i.selectAll("."+Ia.cn.tableControlView).data(gu.repeat,gu.keyFun),o=a.enter().append("g").classed(Ia.cn.tableControlView,!0).style("box-sizing","content-box");if(n){var s="onwheel"in document?"wheel":"mousewheel";o.on("mousemove",function(E){a.filter(function(k){return E===k}).call(Jk,t)}).on(s,function(E){if(!E.scrollbarState.wheeling){E.scrollbarState.wheeling=!0;var k=E.scrollY+Mc.event.deltaY,A=R7(t,a,null,k)(E);A||(Mc.event.stopPropagation(),Mc.event.preventDefault()),E.scrollbarState.wheeling=!1}}).call(Jk,t,!0)}a.attr("transform",function(E){return og(E.size.l,E.size.t)});var l=a.selectAll("."+Ia.cn.scrollBackground).data(gu.repeat,gu.keyFun);l.enter().append("rect").classed(Ia.cn.scrollBackground,!0).attr("fill","none"),l.attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),a.each(function(E){e$.setClipUrl(Mc.select(this),JWe(t,E),t)});var u=a.selectAll("."+Ia.cn.yColumn).data(function(E){return E.columns},gu.keyFun);u.enter().append("g").classed(Ia.cn.yColumn,!0),u.exit().remove(),u.attr("transform",function(E){return og(E.x,0)}),n&&u.call(Mc.behavior.drag().origin(function(E){var k=Mc.select(this);return eZe(k,E,-Ia.uplift),BZt(this),E.calcdata.columnDragInProgress=!0,Jk(a.filter(function(A){return E.calcdata.key===A.key}),t),E}).on("drag",function(E){var k=Mc.select(this),A=function(C){return(E===C?Mc.event.x:C.x)+C.columnWidth/2};E.x=Math.max(-Ia.overdrag,Math.min(E.calcdata.width+Ia.overdrag-E.columnWidth,Mc.event.x));var L=iZe(u).filter(function(C){return C.calcdata.key===E.calcdata.key}),_=L.sort(function(C,M){return A(C)-A(M)});_.forEach(function(C,M){C.xIndex=M,C.x=E===C?C.x:C.xScale(C)}),u.filter(function(C){return E!==C}).transition().ease(Ia.transitionEase).duration(Ia.transitionDuration).attr("transform",function(C){return og(C.x,0)}),k.call(NZt).attr("transform",og(E.x,-Ia.uplift))}).on("dragend",function(E){var k=Mc.select(this),A=E.calcdata;E.x=E.xScale(E),E.calcdata.columnDragInProgress=!1,eZe(k,E,0),JZt(t,A,A.columns.map(function(L){return L.xIndex}))})),u.each(function(E){e$.setClipUrl(Mc.select(this),$We(t,E),t)});var c=u.selectAll("."+Ia.cn.columnBlock).data(rZe.splitToPanels,gu.keyFun);c.enter().append("g").classed(Ia.cn.columnBlock,!0).attr("id",function(E){return E.key}),c.style("cursor",function(E){return E.dragHandle?"ew-resize":E.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var f=c.filter($Zt),h=c.filter(a$);n&&h.call(Mc.behavior.drag().origin(function(E){return Mc.event.stopPropagation(),E}).on("drag",R7(t,a,-1)).on("dragend",function(){})),t$(t,a,f,c),t$(t,a,h,c);var d=a.selectAll("."+Ia.cn.scrollAreaClip).data(gu.repeat,gu.keyFun);d.enter().append("clipPath").classed(Ia.cn.scrollAreaClip,!0).attr("id",function(E){return JWe(t,E)});var v=d.selectAll("."+Ia.cn.scrollAreaClipRect).data(gu.repeat,gu.keyFun);v.enter().append("rect").classed(Ia.cn.scrollAreaClipRect,!0).attr("x",-Ia.overdrag).attr("y",-Ia.uplift).attr("fill","none"),v.attr("width",function(E){return E.width+2*Ia.overdrag}).attr("height",function(E){return E.height+Ia.uplift});var x=u.selectAll("."+Ia.cn.columnBoundary).data(gu.repeat,gu.keyFun);x.enter().append("g").classed(Ia.cn.columnBoundary,!0);var b=u.selectAll("."+Ia.cn.columnBoundaryClippath).data(gu.repeat,gu.keyFun);b.enter().append("clipPath").classed(Ia.cn.columnBoundaryClippath,!0),b.attr("id",function(E){return $We(t,E)});var p=b.selectAll("."+Ia.cn.columnBoundaryRect).data(gu.repeat,gu.keyFun);p.enter().append("rect").classed(Ia.cn.columnBoundaryRect,!0).attr("fill","none"),p.attr("width",function(E){return E.columnWidth+2*I7(E)}).attr("height",function(E){return E.calcdata.height+2*I7(E)+Ia.uplift}).attr("x",function(E){return-I7(E)}).attr("y",function(E){return-I7(E)}),o$(null,h,a)};function I7(e){return Math.ceil(e.calcdata.maxLineWidth/2)}function JWe(e,t){return"clip"+e._fullLayout._uid+"_scrollAreaBottomClip_"+t.key}function $We(e,t){return"clip"+e._fullLayout._uid+"_columnBoundaryClippath_"+t.calcdata.key+"_"+t.specIndex}function iZe(e){return[].concat.apply([],e.map(function(t){return t})).map(function(t){return t.__data__})}function Jk(e,t,r){function n(u){var c=u.rowBlocks;return i$(c,c.length-1)+(c.length?D7(c[c.length-1],1/0):1)}var i=e.selectAll("."+Ia.cn.scrollbarKit).data(gu.repeat,gu.keyFun);i.enter().append("g").classed(Ia.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),i.each(function(u){var c=u.scrollbarState;c.totalHeight=n(u),c.scrollableAreaHeight=u.groupHeight-r$(u),c.currentlyVisibleHeight=Math.min(c.totalHeight,c.scrollableAreaHeight),c.ratio=c.currentlyVisibleHeight/c.totalHeight,c.barLength=Math.max(c.ratio*c.currentlyVisibleHeight,Ia.goldenRatio*Ia.scrollbarWidth),c.barWiggleRoom=c.currentlyVisibleHeight-c.barLength,c.wiggleRoom=Math.max(0,c.totalHeight-c.scrollableAreaHeight),c.topY=c.barWiggleRoom===0?0:u.scrollY/c.wiggleRoom*c.barWiggleRoom,c.bottomY=c.topY+c.barLength,c.dragMultiplier=c.wiggleRoom/c.barWiggleRoom}).attr("transform",function(u){var c=u.width+Ia.scrollbarWidth/2+Ia.scrollbarOffset;return og(c,r$(u))});var a=i.selectAll("."+Ia.cn.scrollbar).data(gu.repeat,gu.keyFun);a.enter().append("g").classed(Ia.cn.scrollbar,!0);var o=a.selectAll("."+Ia.cn.scrollbarSlider).data(gu.repeat,gu.keyFun);o.enter().append("g").classed(Ia.cn.scrollbarSlider,!0),o.attr("transform",function(u){return og(0,u.scrollbarState.topY||0)});var s=o.selectAll("."+Ia.cn.scrollbarGlyph).data(gu.repeat,gu.keyFun);s.enter().append("line").classed(Ia.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",Ia.scrollbarWidth).attr("stroke-linecap","round").attr("y1",Ia.scrollbarWidth/2),s.attr("y2",function(u){return u.scrollbarState.barLength-Ia.scrollbarWidth/2}).attr("stroke-opacity",function(u){return u.columnDragInProgress||!u.scrollbarState.barWiggleRoom||r?0:.4}),s.transition().delay(0).duration(0),s.transition().delay(Ia.scrollbarHideDelay).duration(Ia.scrollbarHideDuration).attr("stroke-opacity",0);var l=a.selectAll("."+Ia.cn.scrollbarCaptureZone).data(gu.repeat,gu.keyFun);l.enter().append("line").classed(Ia.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",Ia.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(u){var c=Mc.event.y,f=this.getBoundingClientRect(),h=u.scrollbarState,d=c-f.top,v=Mc.scale.linear().domain([0,h.scrollableAreaHeight]).range([0,h.totalHeight]).clamp(!0);h.topY<=d&&d<=h.bottomY||R7(t,e,null,v(d-h.barLength/2))(u)}).call(Mc.behavior.drag().origin(function(u){return Mc.event.stopPropagation(),u.scrollbarState.scrollbarScrollInProgress=!0,u}).on("drag",R7(t,e)).on("dragend",function(){})),l.attr("y2",function(u){return u.scrollbarState.scrollableAreaHeight}),t._context.staticPlot&&(s.remove(),l.remove())}function t$(e,t,r,n){var i=VZt(r),a=HZt(i);ZZt(a);var o=GZt(a);YZt(o);var s=WZt(a),l=jZt(s);XZt(l),nZe(l,t,n,e),s$(a)}function VZt(e){var t=e.selectAll("."+Ia.cn.columnCells).data(gu.repeat,gu.keyFun);return t.enter().append("g").classed(Ia.cn.columnCells,!0),t.exit().remove(),t}function HZt(e){var t=e.selectAll("."+Ia.cn.columnCell).data(rZe.splitToCells,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.columnCell,!0),t.exit().remove(),t}function GZt(e){var t=e.selectAll("."+Ia.cn.cellRect).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("rect").classed(Ia.cn.cellRect,!0),t}function jZt(e){var t=e.selectAll("."+Ia.cn.cellText).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("text").classed(Ia.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){Mc.event.stopPropagation()}),t}function WZt(e){var t=e.selectAll("."+Ia.cn.cellTextHolder).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),t}function ZZt(e){e.each(function(t,r){var n=t.calcdata.cells.font,i=t.column.specIndex,a={size:Xv(n.size,i,r),color:Xv(n.color,i,r),family:Xv(n.family,i,r),weight:Xv(n.weight,i,r),style:Xv(n.style,i,r),variant:Xv(n.variant,i,r),textcase:Xv(n.textcase,i,r),lineposition:Xv(n.lineposition,i,r),shadow:Xv(n.shadow,i,r)};t.rowNumber=t.key,t.align=Xv(t.calcdata.cells.align,i,r),t.cellBorderWidth=Xv(t.calcdata.cells.line.width,i,r),t.font=a})}function XZt(e){e.each(function(t){e$.font(Mc.select(this),t.font)})}function YZt(e){e.attr("width",function(t){return t.column.columnWidth}).attr("stroke-width",function(t){return t.cellBorderWidth}).each(function(t){var r=Mc.select(this);KWe.stroke(r,Xv(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),KWe.fill(r,Xv(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}function nZe(e,t,r,n){e.text(function(i){var a=i.column.specIndex,o=i.rowNumber,s=i.value,l=typeof s=="string",u=l&&s.match(/
/i),c=!l||u;i.mayHaveMarkup=l&&s.match(/[<&>]/);var f=KZt(s);i.latex=f;var h=f?"":Xv(i.calcdata.cells.prefix,a,o)||"",d=f?"":Xv(i.calcdata.cells.suffix,a,o)||"",v=f?null:Xv(i.calcdata.cells.format,a,o)||null,x=h+(v?qZt(v)(i.value):i.value)+d,b;i.wrappingNeeded=!i.wrapped&&!c&&!f&&(b=QWe(x)),i.cellHeightMayIncrease=u||f||i.mayHaveMarkup||(b===void 0?QWe(x):b),i.needsConvertToTspans=i.mayHaveMarkup||i.wrappingNeeded||i.latex;var p;if(i.wrappingNeeded){var E=Ia.wrapSplitCharacter===" "?x.replace(/i&&n.push(a),i+=l}return n}function o$(e,t,r){var n=iZe(t)[0];if(n!==void 0){var i=n.rowBlocks,a=n.calcdata,o=i$(i,i.length),s=n.calcdata.groupHeight-r$(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),u=QZt(i,l,s);u.length===1&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),t.each(function(c,f){c.page=u[f],c.scrollY=l}),t.attr("transform",function(c){var f=i$(c.rowBlocks,c.page)-c.scrollY;return og(0,f)}),e&&(tZe(e,r,t,u,n.prevPages,n,0),tZe(e,r,t,u,n.prevPages,n,1),Jk(r,e))}}function R7(e,t,r,n){return function(a){var o=a.calcdata?a.calcdata:a,s=t.filter(function(f){return o.key===f.key}),l=r||o.scrollbarState.dragMultiplier,u=o.scrollY;o.scrollY=n===void 0?o.scrollY+l*Mc.event.dy:n;var c=s.selectAll("."+Ia.cn.yColumn).selectAll("."+Ia.cn.columnBlock).filter(a$);return o$(e,c,s),o.scrollY===u}}function tZe(e,t,r,n,i,a,o){var s=n[o]!==i[o];s&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var l=r.filter(function(u,c){return c===o&&n[c]!==i[c]});t$(e,t,l,r),i[o]=n[o]}))}function eXt(e,t,r,n){return function(){var a=Mc.select(t.parentNode);a.each(function(o){var s=o.fragments;a.selectAll("tspan.line").each(function(x,b){s[b].width=this.getComputedTextLength()});var l=s[s.length-1].width,u=s.slice(0,-1),c=[],f,h,d=0,v=o.column.columnWidth-2*Ia.cellPad;for(o.value="";u.length;)f=u.shift(),h=f.width+l,d+h>v&&(o.value+=c.join(Ia.wrapSpacer)+Ia.lineBreaker,c=[],d=0),c.push(f.text),d+=h;d&&(o.value+=c.join(Ia.wrapSpacer)),o.wrapped=!0}),a.selectAll("tspan.line").remove(),nZe(a.select("."+Ia.cn.cellText),r,e,n),Mc.select(t.parentNode.parentNode).call(s$)}}function tXt(e,t,r,n,i){return function(){if(!i.settledY){var o=Mc.select(t.parentNode),s=n$(i),l=i.key-s.firstRowIndex,u=s.rows[l].rowHeight,c=i.cellHeightMayIncrease?t.parentNode.getBoundingClientRect().height+2*Ia.cellPad:u,f=Math.max(c,u),h=f-s.rows[l].rowHeight;h&&(s.rows[l].rowHeight=f,e.selectAll("."+Ia.cn.columnCell).call(s$),o$(null,e.filter(a$),0),Jk(r,n,!0)),o.attr("transform",function(){var d=this,v=d.parentNode,x=v.getBoundingClientRect(),b=Mc.select(d.parentNode).select("."+Ia.cn.cellRect).node().getBoundingClientRect(),p=d.transform.baseVal.consolidate(),E=b.top-x.top+(p?p.matrix.f:Ia.cellPad);return og(aZe(i,Mc.select(d.parentNode).select("."+Ia.cn.cellTextHolder).node().getBoundingClientRect().width),E)}),i.settledY=!0}}}function aZe(e,t){switch(e.align){case"left":return Ia.cellPad;case"right":return e.column.columnWidth-(t||0)-Ia.cellPad;case"center":return(e.column.columnWidth-(t||0))/2;default:return Ia.cellPad}}function s$(e){e.attr("transform",function(t){var r=t.rowBlocks[0].auxiliaryBlocks.reduce(function(o,s){return o+D7(s,1/0)},0),n=n$(t),i=D7(n,t.key),a=i+r;return og(0,a)}).selectAll("."+Ia.cn.cellRect).attr("height",function(t){return iXt(n$(t),t.key).rowHeight})}function i$(e,t){for(var r=0,n=t-1;n>=0;n--)r+=rXt(e[n]);return r}function D7(e,t){for(var r=0,n=0;n{"use strict";var nXt=kd().getModuleCalcData,aXt=l$(),z7="table";F7.name=z7;F7.plot=function(e){var t=nXt(e.calcdata,z7)[0];t.length&&aXt(e,t)};F7.clean=function(e,t,r,n){var i=n._has&&n._has(z7),a=t._has&&t._has(z7);i&&!a&&n._paperdiv.selectAll(".table").remove()}});var uZe=ye((G_r,lZe)=>{"use strict";lZe.exports={attributes:WJ(),supplyDefaults:FWe(),calc:OWe(),plot:l$(),moduleType:"trace",name:"table",basePlotModule:sZe(),categories:["noOpacity"],meta:{}}});var fZe=ye((j_r,cZe)=>{"use strict";cZe.exports=uZe()});var gZe=ye((W_r,pZe)=>{"use strict";var hZe=Su(),dZe=dh(),u$=Cd(),oXt=Oc().descriptionWithDates,sXt=Bu().overrideAll,vZe=Ed().dash,c$=no().extendFlat;pZe.exports={color:{valType:"color",editType:"calc"},smoothing:{valType:"number",dflt:1,min:0,max:1.3,editType:"calc"},title:{text:{valType:"string",dflt:"",editType:"calc"},font:hZe({editType:"calc"}),offset:{valType:"number",dflt:10,editType:"calc"},editType:"calc"},type:{valType:"enumerated",values:["-","linear","date","category"],dflt:"-",editType:"calc"},autotypenumbers:u$.autotypenumbers,autorange:{valType:"enumerated",values:[!0,!1,"reversed"],dflt:!0,editType:"calc"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"calc"},range:{valType:"info_array",editType:"calc",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}]},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},cheatertype:{valType:"enumerated",values:["index","value"],dflt:"value",editType:"calc"},tickmode:{valType:"enumerated",values:["linear","array"],dflt:"array",editType:"calc"},nticks:{valType:"integer",min:0,dflt:0,editType:"calc"},tickvals:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},showticklabels:{valType:"enumerated",values:["start","end","both","none"],dflt:"start",editType:"calc"},labelalias:c$({},u$.labelalias,{editType:"calc"}),tickfont:hZe({editType:"calc"}),tickangle:{valType:"angle",dflt:"auto",editType:"calc"},tickprefix:{valType:"string",dflt:"",editType:"calc"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},ticksuffix:{valType:"string",dflt:"",editType:"calc"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"calc"},minexponent:{valType:"number",dflt:3,min:0,editType:"calc"},separatethousands:{valType:"boolean",dflt:!1,editType:"calc"},tickformat:{valType:"string",dflt:"",editType:"calc",description:oXt("tick label")},tickformatstops:sXt(u$.tickformatstops,"calc","from-root"),categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},labelpadding:{valType:"integer",dflt:10,editType:"calc"},labelprefix:{valType:"string",editType:"calc"},labelsuffix:{valType:"string",dflt:"",editType:"calc"},showline:{valType:"boolean",dflt:!1,editType:"calc"},linecolor:{valType:"color",dflt:dZe.defaultLine,editType:"calc"},linewidth:{valType:"number",min:0,dflt:1,editType:"calc"},gridcolor:{valType:"color",editType:"calc"},gridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},griddash:c$({},vZe,{editType:"calc"}),showgrid:{valType:"boolean",dflt:!0,editType:"calc"},minorgridcount:{valType:"integer",min:0,dflt:0,editType:"calc"},minorgridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},minorgriddash:c$({},vZe,{editType:"calc"}),minorgridcolor:{valType:"color",dflt:dZe.lightLine,editType:"calc"},startline:{valType:"boolean",editType:"calc"},startlinecolor:{valType:"color",editType:"calc"},startlinewidth:{valType:"number",dflt:1,editType:"calc"},endline:{valType:"boolean",editType:"calc"},endlinewidth:{valType:"number",dflt:1,editType:"calc"},endlinecolor:{valType:"color",editType:"calc"},tick0:{valType:"number",min:0,dflt:0,editType:"calc"},dtick:{valType:"number",min:0,dflt:1,editType:"calc"},arraytick0:{valType:"integer",min:0,dflt:0,editType:"calc"},arraydtick:{valType:"integer",min:1,dflt:1,editType:"calc"},editType:"calc"}});var O7=ye((Z_r,_Ze)=>{"use strict";var lXt=Su(),mZe=gZe(),yZe=dh(),q7=lXt({editType:"calc"}),uXt=Uc().zorder;q7.family.dflt='"Open Sans", verdana, arial, sans-serif';q7.size.dflt=12;q7.color.dflt=yZe.defaultLine;_Ze.exports={carpet:{valType:"string",editType:"calc"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},a:{valType:"data_array",editType:"calc"},a0:{valType:"number",dflt:0,editType:"calc"},da:{valType:"number",dflt:1,editType:"calc"},b:{valType:"data_array",editType:"calc"},b0:{valType:"number",dflt:0,editType:"calc"},db:{valType:"number",dflt:1,editType:"calc"},cheaterslope:{valType:"number",dflt:1,editType:"calc"},aaxis:mZe,baxis:mZe,font:q7,color:{valType:"color",dflt:yZe.defaultLine,editType:"plot"},zorder:uXt}});var wZe=ye((X_r,bZe)=>{"use strict";var xZe=Mr().isArray1D;bZe.exports=function(t,r,n){var i=n("x"),a=i&&i.length,o=n("y"),s=o&&o.length;if(!a&&!s)return!1;if(r._cheater=!i,(!a||xZe(i))&&(!s||xZe(o))){var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),r.a&&r.a.length&&(l=Math.min(l,r.a.length)),r.b&&r.b.length&&(l=Math.min(l,r.b.length)),r._length=l}else r._length=null;return!0}});var SZe=ye((Y_r,AZe)=>{"use strict";var cXt=O7(),TZe=va().addOpacity,fXt=ba(),$k=Mr(),hXt=xb(),dXt=t_(),vXt=r_(),pXt=eI(),gXt=ym(),mXt=L3();AZe.exports=function(t,r,n){var i=n.letter,a=n.font||{},o=cXt[i+"axis"];function s(g,P){return $k.coerce(t,r,o,g,P)}function l(g,P){return $k.coerce2(t,r,o,g,P)}n.name&&(r._name=n.name,r._id=n.name),s("autotypenumbers",n.autotypenumbersDflt);var u=s("type");if(u==="-"&&(n.data&&yXt(r,n.data),r.type==="-"?r.type="linear":u=t.type=r.type),s("smoothing"),s("cheatertype"),s("showticklabels"),s("labelprefix",i+" = "),s("labelsuffix"),s("showtickprefix"),s("showticksuffix"),s("separatethousands"),s("tickformat"),s("exponentformat"),s("minexponent"),s("showexponent"),s("categoryorder"),s("tickmode"),s("tickvals"),s("ticktext"),s("tick0"),s("dtick"),r.tickmode==="array"&&(s("arraytick0"),s("arraydtick")),s("labelpadding"),r._hovertitle=i,u==="date"){var c=fXt.getComponentMethod("calendars","handleDefaults");c(t,r,"calendar",n.calendar)}gXt(r,n.fullLayout),r.c2p=$k.identity;var f=s("color",n.dfltColor),h=f===t.color?f:a.color,d=s("title.text");d&&($k.coerceFont(s,"title.font",a,{overrideDflt:{size:$k.bigFont(a.size),color:h}}),s("title.offset")),s("tickangle");var v=s("autorange",!r.isValidRange(t.range));v&&s("rangemode"),s("range"),r.cleanRange(),s("fixedrange"),hXt(t,r,s,u),vXt(t,r,s,u,n),dXt(t,r,s,u,n),pXt(t,r,s,{data:n.data,dataAttr:i});var x=l("gridcolor",TZe(f,.3)),b=l("gridwidth"),p=l("griddash"),E=s("showgrid");E||(delete r.gridcolor,delete r.gridwidth,delete r.griddash);var k=l("startlinecolor",f),A=l("startlinewidth",b),L=s("startline",r.showgrid||!!k||!!A);L||(delete r.startlinecolor,delete r.startlinewidth);var _=l("endlinecolor",f),C=l("endlinewidth",b),M=s("endline",r.showgrid||!!_||!!C);return M||(delete r.endlinecolor,delete r.endlinewidth),E?(s("minorgridcount"),s("minorgridwidth",b),s("minorgriddash",p),s("minorgridcolor",TZe(x,.06)),r.minorgridcount||(delete r.minorgridwidth,delete r.minorgriddash,delete r.minorgridcolor)):(delete r.gridcolor,delete r.gridwidth,delete r.griddash),r.showticklabels==="none"&&(delete r.tickfont,delete r.tickangle,delete r.showexponent,delete r.exponentformat,delete r.minexponent,delete r.tickformat,delete r.showticksuffix,delete r.showtickprefix),r.showticksuffix||delete r.ticksuffix,r.showtickprefix||delete r.tickprefix,s("tickmode"),r};function yXt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i=n+"calendar",a=e[i];e.type=mXt(t,a,{autotypenumbers:e.autotypenumbers})}}});var EZe=ye((K_r,MZe)=>{"use strict";var _Xt=SZe(),xXt=Vs();MZe.exports=function(t,r,n,i,a){var o=i("a");o||(i("da"),i("a0"));var s=i("b");s||(i("db"),i("b0")),bXt(t,r,n,a)};function bXt(e,t,r,n){var i=["aaxis","baxis"];i.forEach(function(a){var o=a.charAt(0),s=e[a]||{},l=xXt.newContainer(t,a),u={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,noTicklabelstep:!0,tickfont:"x",id:o+"axis",letter:o,font:t.font,name:a,data:e[o],calendar:t.calendar,dfltColor:n,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};_Xt(s,l,u),l._categories=l._categories||[],!e[a]&&s.type!=="-"&&(e[a]={type:s.type})})}});var LZe=ye((J_r,CZe)=>{"use strict";var kZe=Mr(),wXt=wZe(),TXt=EZe(),AXt=O7(),SXt=dh();CZe.exports=function(t,r,n,i){function a(l,u){return kZe.coerce(t,r,AXt,l,u)}r._clipPathId="clip"+r.uid+"carpet";var o=a("color",SXt.defaultLine);if(kZe.coerceFont(a,"font",i.font),a("carpet"),TXt(t,r,i,a,o),!r.a||!r.b){r.visible=!1;return}r.a.length<3&&(r.aaxis.smoothing=0),r.b.length<3&&(r.baxis.smoothing=0);var s=wXt(t,r,a);s||(r.visible=!1),r._cheater&&a("cheaterslope"),a("zorder")}});var f$=ye(($_r,PZe)=>{"use strict";var MXt=Mr().isArrayOrTypedArray;PZe.exports=function(t,r,n){var i;for(MXt(t)?t.length>r.length&&(t=t.slice(0,r.length)):t=[],i=0;i{"use strict";IZe.exports=function(t,r,n){if(t.length===0)return"";var i,a=[],o=n?3:1;for(i=0;i{"use strict";RZe.exports=function(t,r,n,i,a,o){var s=a[0]*t.dpdx(r),l=a[1]*t.dpdy(n),u=1,c=1;if(o){var f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),d=(a[0]*o[0]+a[1]*o[1])/f/h;c=Math.max(0,d)}var v=Math.atan2(l,s)*180/Math.PI;return v<-90?(v+=180,u=-u):v>90&&(v-=180,u=-u),{angle:v,flip:u,p:t.c2p(i,r,n),offsetMultplier:c}}});var VZe=ye((txr,UZe)=>{"use strict";var V7=xa(),B7=ao(),N7=f$(),qZe=h$(),Qk=DZe(),d$=Pl(),Up=Mr(),OZe=Up.strRotate,U7=Up.strTranslate,BZe=Nh();UZe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=r.xaxis,s=r.yaxis,l=t._fullLayout,u=l._clips;Up.makeTraceGroups(i,n,"trace").each(function(c){var f=V7.select(this),h=c[0],d=h.trace,v=d.aaxis,x=d.baxis,b=Up.ensureSingle(f,"g","minorlayer"),p=Up.ensureSingle(f,"g","majorlayer"),E=Up.ensureSingle(f,"g","boundarylayer"),k=Up.ensureSingle(f,"g","labellayer");f.style("opacity",d.opacity),zA(o,s,p,v,"a",v._gridlines,!0,a),zA(o,s,p,x,"b",x._gridlines,!0,a),zA(o,s,b,v,"a",v._minorgridlines,!0,a),zA(o,s,b,x,"b",x._minorgridlines,!0,a),zA(o,s,E,v,"a-boundary",v._boundarylines,a),zA(o,s,E,x,"b-boundary",x._boundarylines,a);var A=zZe(t,o,s,d,h,k,v._labels,"a-label"),L=zZe(t,o,s,d,h,k,x._labels,"b-label");kXt(t,k,d,h,o,s,A,L),EXt(d,h,u,o,s)})};function EXt(e,t,r,n,i){var a,o,s,l,u=r.select("#"+e._clipPathId);u.size()||(u=r.append("clipPath").classed("carpetclip",!0));var c=Up.ensureSingle(u,"path","carpetboundary"),f=t.clipsegments,h=[];for(l=0;l0?"start":"end","data-notex":1}).call(B7.font,f.font).text(f.text).call(d$.convertToTspans,e),p=B7.bBox(this);b.attr("transform",U7(d.p[0],d.p[1])+OZe(d.angle)+U7(f.axis.labelpadding*x,p.height*.3)),u=Math.max(u,p.width+f.axis.labelpadding)}),l.exit().remove(),c.maxExtent=u,c}function kXt(e,t,r,n,i,a,o,s){var l,u,c,f,h=Up.aggNums(Math.min,null,r.a),d=Up.aggNums(Math.max,null,r.a),v=Up.aggNums(Math.min,null,r.b),x=Up.aggNums(Math.max,null,r.b);l=.5*(h+d),u=v,c=r.ab2xy(l,u,!0),f=r.dxyda_rough(l,u),o.angle===void 0&&Up.extendFlat(o,Qk(r,i,a,c,r.dxydb_rough(l,u))),FZe(e,t,r,n,c,f,r.aaxis,i,a,o,"a-title"),l=h,u=.5*(v+x),c=r.ab2xy(l,u,!0),f=r.dxydb_rough(l,u),s.angle===void 0&&Up.extendFlat(s,Qk(r,i,a,c,r.dxyda_rough(l,u))),FZe(e,t,r,n,c,f,r.baxis,i,a,s,"b-title")}var NZe=BZe.LINE_SPACING,CXt=(1-BZe.MID_SHIFT)/NZe+1;function FZe(e,t,r,n,i,a,o,s,l,u,c){var f=[];o.title.text&&f.push(o.title.text);var h=t.selectAll("text."+c).data(f),d=u.maxExtent;h.enter().append("text").classed(c,!0),h.each(function(){var v=Qk(r,s,l,i,a);["start","both"].indexOf(o.showticklabels)===-1&&(d=0);var x=o.title.font.size;d+=x+o.title.offset;var b=u.angle+(u.flip<0?180:0),p=(b-v.angle+450)%360,E=p>90&&p<270,k=V7.select(this);k.text(o.title.text).call(d$.convertToTspans,e),E&&(d=(-d$.lineCount(k)+CXt)*NZe*x-d),k.attr("transform",U7(v.p[0],v.p[1])+OZe(v.angle)+U7(0,d)).attr("text-anchor","middle").call(B7.font,o.title.font)}),h.exit().remove()}});var GZe=ye((rxr,HZe)=>{"use strict";var H7=Mr().isArrayOrTypedArray;HZe.exports=function(e,t,r){var n,i,a,o,s,l,u=[],c=H7(e)?e.length:e,f=H7(t)?t.length:t,h=H7(e)?e:null,d=H7(t)?t:null;h&&(a=(h.length-1)/(h[h.length-1]-h[0])/(c-1)),d&&(o=(d.length-1)/(d[d.length-1]-d[0])/(f-1));var v,x=1/0,b=-1/0;for(i=0;i{"use strict";var jZe=Mr().isArrayOrTypedArray;ZZe.exports=function(e){return WZe(e,0)};function WZe(e,t){if(!jZe(e)||t>=10)return null;for(var r=1/0,n=-1/0,i=e.length,a=0;a{"use strict";var LXt=Qa(),kx=no().extendFlat;YZe.exports=function(t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p,E=t["_"+r],k=t[r+"axis"],A=k._gridlines=[],L=k._minorgridlines=[],_=k._boundarylines=[],C=t["_"+n],M=t[n+"axis"];k.tickmode==="array"&&(k.tickvals=E.slice());var g=t._xctrl,P=t._yctrl,T=g[0].length,F=g.length,q=t._a.length,V=t._b.length;LXt.prepTicks(k),k.tickmode==="array"&&delete k.tickvals;var H=k.smoothing?3:1;function X(N){var W,re,ae,_e,Me,ke,ge,ie,Te,Ee,Ae,ze,Ce=[],me=[],Re={};if(r==="b")for(re=t.b2j(N),ae=Math.floor(Math.max(0,Math.min(V-2,re))),_e=re-ae,Re.length=V,Re.crossLength=q,Re.xy=function(ce){return t.evalxy([],ce,re)},Re.dxy=function(ce,Ge){return t.dxydi([],ce,ae,Ge,_e)},W=0;W0&&(Te=t.dxydi([],W-1,ae,0,_e),Ce.push(Me[0]+Te[0]/3),me.push(Me[1]+Te[1]/3),Ee=t.dxydi([],W-1,ae,1,_e),Ce.push(ie[0]-Ee[0]/3),me.push(ie[1]-Ee[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;else for(W=t.a2i(N),ke=Math.floor(Math.max(0,Math.min(q-2,W))),ge=W-ke,Re.length=q,Re.crossLength=V,Re.xy=function(ce){return t.evalxy([],W,ce)},Re.dxy=function(ce,Ge){return t.dxydj([],ke,ce,ge,Ge)},re=0;re0&&(Ae=t.dxydj([],ke,re-1,ge,0),Ce.push(Me[0]+Ae[0]/3),me.push(Me[1]+Ae[1]/3),ze=t.dxydj([],ke,re-1,ge,1),Ce.push(ie[0]-ze[0]/3),me.push(ie[1]-ze[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;return Re.axisLetter=r,Re.axis=k,Re.crossAxis=M,Re.value=N,Re.constvar=n,Re.index=f,Re.x=Ce,Re.y=me,Re.smoothing=M.smoothing,Re}function G(N){var W,re,ae,_e,Me,ke=[],ge=[],ie={};if(ie.length=E.length,ie.crossLength=C.length,r==="b")for(ae=Math.max(0,Math.min(V-2,N)),Me=Math.min(1,Math.max(0,N-ae)),ie.xy=function(Te){return t.evalxy([],Te,N)},ie.dxy=function(Te,Ee){return t.dxydi([],Te,ae,Ee,Me)},W=0;WE.length-1)&&A.push(kx(G(a),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u;fE.length-1)&&!(v<0||v>E.length-1))for(x=E[o],b=E[v],i=0;iE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash})));k.startline&&_.push(kx(G(0),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(G(E.length-1),{color:k.endlinecolor,width:k.endlinewidth}))}else{for(s=5e-15,l=[Math.floor((E[E.length-1]-k.tick0)/k.dtick*(1+s)),Math.ceil((E[0]-k.tick0)/k.dtick/(1+s))].sort(function(N,W){return N-W}),u=l[0],c=l[1],f=u;f<=c;f++)h=k.tick0+k.dtick*f,A.push(kx(X(h),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u-1;fE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash}));k.startline&&_.push(kx(X(E[0]),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(X(E[E.length-1]),{color:k.endlinecolor,width:k.endlinewidth}))}}});var eXe=ye((axr,QZe)=>{"use strict";var JZe=Qa(),$Ze=no().extendFlat;QZe.exports=function(t,r){var n,i,a,o,s,l=r._labels=[],u=r._gridlines;for(n=0;n{"use strict";tXe.exports=function(t,r,n,i){var a,o,s,l=[],u=!!n.smoothing,c=!!i.smoothing,f=t[0].length-1,h=t.length-1;for(a=0,o=[],s=[];a<=f;a++)o[a]=t[0][a],s[a]=r[0][a];for(l.push({x:o,y:s,bicubic:u}),a=0,o=[],s=[];a<=h;a++)o[a]=t[a][f],s[a]=r[a][f];for(l.push({x:o,y:s,bicubic:c}),a=f,o=[],s=[];a>=0;a--)o[f-a]=t[h][a],s[f-a]=r[h][a];for(l.push({x:o,y:s,bicubic:u}),a=h,o=[],s=[];a>=0;a--)o[h-a]=t[a][0],s[h-a]=r[a][0];return l.push({x:o,y:s,bicubic:c}),l}});var nXe=ye((sxr,iXe)=>{"use strict";var PXt=Mr();iXe.exports=function(t,r,n){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(ae,_e){var Me=0,ke,ge=0;return ae>0&&(ke=t[_e][ae-1])!==void 0&&(ge++,Me+=ke),ae0&&(ke=t[_e-1][ae])!==void 0&&(ge++,Me+=ke),_e0&&a0&&iM);return PXt.log("Smoother converged to",g,"after",T,"iterations"),t}});var oXe=ye((lxr,aXe)=>{"use strict";aXe.exports={RELATIVE_CULL_TOLERANCE:1e-6}});var uXe=ye((uxr,lXe)=>{"use strict";var sXe=.5;lXe.exports=function(t,r,n,i){var a=t[0]-r[0],o=t[1]-r[1],s=n[0]-r[0],l=n[1]-r[1],u=Math.pow(a*a+o*o,sXe/2),c=Math.pow(s*s+l*l,sXe/2),f=(c*c*a-u*u*s)*i,h=(c*c*o-u*u*l)*i,d=c*(u+c)*3,v=u*(u+c)*3;return[[r[0]+(d&&f/d),r[1]+(d&&h/d)],[r[0]-(v&&f/v),r[1]-(v&&h/v)]]}});var fXe=ye((cxr,cXe)=>{"use strict";var v$=uXe(),G7=Mr().ensureArray;function FA(e,t,r){var n=-.5*r[0]+1.5*t[0],i=-.5*r[1]+1.5*t[1];return[(2*n+e[0])/3,(2*i+e[1])/3]}cXe.exports=function(t,r,n,i,a,o){var s,l,u,c,f,h,d,v,x,b,p=n[0].length,E=n.length,k=a?3*p-2:p,A=o?3*E-2:E;for(t=G7(t,A),r=G7(r,A),u=0;u{"use strict";hXe.exports=function(e,t,r,n,i){var a=t-2,o=r-2;return n&&i?function(s,l,u){s||(s=[]);var c,f,h,d,v,x,b=Math.max(0,Math.min(Math.floor(l),a)),p=Math.max(0,Math.min(Math.floor(u),o)),E=Math.max(0,Math.min(1,l-b)),k=Math.max(0,Math.min(1,u-p));b*=3,p*=3;var A=E*E,L=A*E,_=1-E,C=_*_,M=C*_,g=k*k,P=g*k,T=1-k,F=T*T,q=F*T;for(x=0;x{"use strict";vXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=1-o,b=x*x,p=x*o*2,E=-3*b,k=3*(b-p),A=3*(p-v),L=3*v,_=s*s,C=_*s,M=1-s,g=M*M,P=g*M;for(d=0;d{"use strict";gXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=v*o,b=1-o,p=b*b,E=p*b,k=s*s,A=1-s,L=A*A,_=A*s*2,C=-3*L,M=3*(L-_),g=3*(_-k),P=3*k;for(d=0;d{"use strict";var yXe=oXe(),_Xe=k6().findBin,IXt=fXe(),RXt=dXe(),DXt=pXe(),zXt=mXe();xXe.exports=function(t){var r=t._a,n=t._b,i=r.length,a=n.length,o=t.aaxis,s=t.baxis,l=r[0],u=r[i-1],c=n[0],f=n[a-1],h=r[r.length-1]-r[0],d=n[n.length-1]-n[0],v=h*yXe.RELATIVE_CULL_TOLERANCE,x=d*yXe.RELATIVE_CULL_TOLERANCE;l-=v,u+=v,c-=x,f+=x,t.isVisible=function(b,p){return b>l&&bc&&pu||pf},t.setScale=function(){var b=t._x,p=t._y,E=IXt(t._xctrl,t._yctrl,b,p,o.smoothing,s.smoothing);t._xctrl=E[0],t._yctrl=E[1],t.evalxy=RXt([t._xctrl,t._yctrl],i,a,o.smoothing,s.smoothing),t.dxydi=DXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing),t.dxydj=zXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing)},t.i2a=function(b){var p=Math.max(0,Math.floor(b[0]),i-2),E=b[0]-p;return(1-E)*r[p]+E*r[p+1]},t.j2b=function(b){var p=Math.max(0,Math.floor(b[1]),i-2),E=b[1]-p;return(1-E)*n[p]+E*n[p+1]},t.ij2ab=function(b){return[t.i2a(b[0]),t.j2b(b[1])]},t.a2i=function(b){var p=Math.max(0,Math.min(_Xe(b,r),i-2)),E=r[p],k=r[p+1];return Math.max(0,Math.min(i-1,p+(b-E)/(k-E)))},t.b2j=function(b){var p=Math.max(0,Math.min(_Xe(b,n),a-2)),E=n[p],k=n[p+1];return Math.max(0,Math.min(a-1,p+(b-E)/(k-E)))},t.ab2ij=function(b){return[t.a2i(b[0]),t.b2j(b[1])]},t.i2c=function(b,p){return t.evalxy([],b,p)},t.ab2xy=function(b,p,E){if(!E&&(br[i-1]|pn[a-1]))return[!1,!1];var k=t.a2i(b),A=t.b2j(p),L=t.evalxy([],k,A);if(E){var _=0,C=0,M=[],g,P,T,F;br[i-1]?(g=i-2,P=1,_=(b-r[i-1])/(r[i-1]-r[i-2])):(g=Math.max(0,Math.min(i-2,Math.floor(k))),P=k-g),pn[a-1]?(T=a-2,F=1,C=(p-n[a-1])/(n[a-1]-n[a-2])):(T=Math.max(0,Math.min(a-2,Math.floor(A))),F=A-T),_&&(t.dxydi(M,g,T,P,F),L[0]+=M[0]*_,L[1]+=M[1]*_),C&&(t.dxydj(M,g,T,P,F),L[0]+=M[0]*C,L[1]+=M[1]*C)}return L},t.c2p=function(b,p,E){return[p.c2p(b[0]),E.c2p(b[1])]},t.p2x=function(b,p,E){return[p.p2c(b[0]),E.p2c(b[1])]},t.dadi=function(b){var p=Math.max(0,Math.min(r.length-2,b));return r[p+1]-r[p]},t.dbdj=function(b){var p=Math.max(0,Math.min(n.length-2,b));return n[p+1]-n[p]},t.dxyda=function(b,p,E,k){var A=t.dxydi(null,b,p,E,k),L=t.dadi(b,E);return[A[0]/L,A[1]/L]},t.dxydb=function(b,p,E,k){var A=t.dxydj(null,b,p,E,k),L=t.dbdj(p,k);return[A[0]/L,A[1]/L]},t.dxyda_rough=function(b,p,E){var k=h*(E||.1),A=t.ab2xy(b+k,p,!0),L=t.ab2xy(b-k,p,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dxydb_rough=function(b,p,E){var k=d*(E||.1),A=t.ab2xy(b,p+k,!0),L=t.ab2xy(b,p-k,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dpdx=function(b){return b._m},t.dpdy=function(b){return b._m}}});var CXe=ye((pxr,kXe)=>{"use strict";var j7=Qa(),wXe=Mr().isArray1D,FXt=GZe(),TXe=XZe(),AXe=KZe(),SXe=eXe(),qXt=rXe(),MXe=QI(),EXe=nXe(),OXt=JI(),BXt=bXe();kXe.exports=function(t,r){var n=j7.getFromId(t,r.xaxis),i=j7.getFromId(t,r.yaxis),a=r.aaxis,o=r.baxis,s=r.x,l=r.y,u=[];s&&wXe(s)&&u.push("x"),l&&wXe(l)&&u.push("y"),u.length&&OXt(r,a,o,"a","b",u);var c=r._a=r._a||r.a,f=r._b=r._b||r.b;s=r._x||r.x,l=r._y||r.y;var h={};if(r._cheater){var d=a.cheatertype==="index"?c.length:c,v=o.cheatertype==="index"?f.length:f;s=FXt(d,v,r.cheaterslope)}r._x=s=MXe(s),r._y=l=MXe(l),EXe(s,c,f),EXe(l,c,f),BXt(r),r.setScale();var x=TXe(s),b=TXe(l),p=.5*(x[1]-x[0]),E=.5*(x[1]+x[0]),k=.5*(b[1]-b[0]),A=.5*(b[1]+b[0]),L=1.3;return x=[E-p*L,E+p*L],b=[A-k*L,A+k*L],r._extremes[n._id]=j7.findExtremes(n,x,{padded:!0}),r._extremes[i._id]=j7.findExtremes(i,b,{padded:!0}),AXe(r,"a","b"),AXe(r,"b","a"),SXe(r,a),SXe(r,o),h.clipsegments=qXt(r._xctrl,r._yctrl,a,o),h.x=s,h.y=l,h.a=c,h.b=f,[h]}});var PXe=ye((gxr,LXe)=>{"use strict";LXe.exports={attributes:O7(),supplyDefaults:LZe(),plot:VZe(),calc:CXe(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}});var RXe=ye((mxr,IXe)=>{"use strict";IXe.exports=PXe()});var p$=ye((yxr,zXe)=>{"use strict";var NXt=Eg(),u0=Uc(),UXt=vl(),VXt=Wo().hovertemplateAttrs,HXt=Wo().texttemplateAttrs,DXe=Jl(),Cx=no().extendFlat,sg=u0.marker,qA=u0.line,GXt=sg.line;zXe.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:Cx({},u0.mode,{dflt:"markers"}),text:Cx({},u0.text,{}),texttemplate:HXt({editType:"plot"},{keys:["a","b","text"]}),hovertext:Cx({},u0.hovertext,{}),line:{color:qA.color,width:qA.width,dash:qA.dash,backoff:qA.backoff,shape:Cx({},qA.shape,{values:["linear","spline"]}),smoothing:qA.smoothing,editType:"calc"},connectgaps:u0.connectgaps,fill:Cx({},u0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:NXt(),marker:Cx({symbol:sg.symbol,opacity:sg.opacity,maxdisplayed:sg.maxdisplayed,angle:sg.angle,angleref:sg.angleref,standoff:sg.standoff,size:sg.size,sizeref:sg.sizeref,sizemin:sg.sizemin,sizemode:sg.sizemode,line:Cx({width:GXt.width,editType:"calc"},DXe("marker.line")),gradient:sg.gradient,editType:"calc"},DXe("marker")),textfont:u0.textfont,textposition:u0.textposition,selected:u0.selected,unselected:u0.unselected,hoverinfo:Cx({},UXt.hoverinfo,{flags:["a","b","text","name"]}),hoveron:u0.hoveron,hovertemplate:VXt(),zorder:u0.zorder}});var BXe=ye((_xr,OXe)=>{"use strict";var FXe=Mr(),jXt=Sm(),OA=lu(),WXt=$p(),ZXt=R0(),qXe=J3(),XXt=D0(),YXt=Ig(),KXt=p$();OXe.exports=function(t,r,n,i){function a(h,d){return FXe.coerce(t,r,KXt,h,d)}a("carpet"),r.xaxis="x",r.yaxis="y";var o=a("a"),s=a("b"),l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("text"),a("texttemplate"),a("hovertext");var u=l{"use strict";NXe.exports=function(t,r){var n={},i=r._carpet,a=i.ab2ij([t.a,t.b]),o=Math.floor(a[0]),s=a[0]-o,l=Math.floor(a[1]),u=a[1]-l,c=i.evalxy([],o,l,s,u);return n.yLabel=c[1].toFixed(3),n}});var W7=ye((bxr,VXe)=>{"use strict";VXe.exports=function(e,t){for(var r=e._fullData.length,n,i=0;i{"use strict";var HXe=uo(),JXt=z0(),$Xt=km(),QXt=F0(),eYt=q0().calcMarkerSize,tYt=W7();GXe.exports=function(t,r){var n=r._carpetTrace=tYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){var i;r.xaxis=n.xaxis,r.yaxis=n.yaxis;var a=r._length,o=new Array(a),s,l,u=!1;for(i=0;i{"use strict";var rYt=iT(),WXe=Qa(),iYt=ao();ZXe.exports=function(t,r,n,i){var a,o,s,l=n[0][0].carpet,u=WXe.getFromId(t,l.xaxis||"x"),c=WXe.getFromId(t,l.yaxis||"y"),f={xaxis:u,yaxis:c,plot:r.plot};for(a=0;a{"use strict";var nYt=sT(),aYt=Mr().fillText;YXe.exports=function(t,r,n,i){var a=nYt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,d=h._carpet,v=h._module.formatLabels(f,h);o.yLabel=v.yLabel,delete o.text;var x=[];function b(k,A){var L;k.labelprefix&&k.labelprefix.length>0?L=k.labelprefix.replace(/ = $/,""):L=k._hovertitle,x.push(L+": "+A.toFixed(3)+k.labelsuffix)}if(!h.hovertemplate){var p=f.hi||h.hoverinfo,E=p.split("+");E.indexOf("all")!==-1&&(E=["a","b","text"]),E.indexOf("a")!==-1&&b(d.aaxis,f.a),E.indexOf("b")!==-1&&b(d.baxis,f.b),x.push("y: "+o.yLabel),E.indexOf("text")!==-1&&aYt(f,h,x),o.extraText=x.join("
")}return a}});var $Xe=ye((Sxr,JXe)=>{"use strict";JXe.exports=function(t,r,n,i,a){var o=i[a];return t.a=o.a,t.b=o.b,t.y=o.y,t}});var eYe=ye((Mxr,QXe)=>{"use strict";QXe.exports={attributes:p$(),supplyDefaults:BXe(),colorbar:Kd(),formatLabels:UXe(),calc:jXe(),plot:XXe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:KXe(),selectPoints:lT(),eventData:$Xe(),moduleType:"trace",name:"scattercarpet",basePlotModule:Jf(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}});var rYe=ye((Exr,tYe)=>{"use strict";tYe.exports=eYe()});var g$=ye((kxr,iYe)=>{"use strict";var lg=ET(),g1=T4(),oYt=Jl(),sYt=no().extendFlat,ty=g1.contours;iYe.exports=sYt({carpet:{valType:"string",editType:"calc"},z:lg.z,a:lg.x,a0:lg.x0,da:lg.dx,b:lg.y,b0:lg.y0,db:lg.dy,text:lg.text,hovertext:lg.hovertext,transpose:lg.transpose,atype:lg.xtype,btype:lg.ytype,fillcolor:g1.fillcolor,autocontour:g1.autocontour,ncontours:g1.ncontours,contours:{type:ty.type,start:ty.start,end:ty.end,size:ty.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:ty.showlines,showlabels:ty.showlabels,labelfont:ty.labelfont,labelformat:ty.labelformat,operation:ty.operation,value:ty.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:g1.line.color,width:g1.line.width,dash:g1.line.dash,smoothing:g1.line.smoothing,editType:"plot"},zorder:g1.zorder},oYt("",{cLetter:"z",autoColorDflt:!1}))});var m$=ye((Cxr,oYe)=>{"use strict";var nYe=Mr(),lYt=XI(),aYe=g$(),uYt=yH(),cYt=y8(),fYt=_8();oYe.exports=function(t,r,n,i){function a(u,c){return nYe.coerce(t,r,aYe,u,c)}function o(u){return nYe.coerce2(t,r,aYe,u)}if(a("carpet"),t.a&&t.b){var s=lYt(t,r,a,i,"a","b");if(!s){r.visible=!1;return}a("text");var l=a("contours.type")==="constraint";l?uYt(t,r,a,i,n,{hasHover:!1}):(cYt(t,r,a,o),fYt(t,r,a,i,{hasHover:!1}))}else r._defaultColor=n,r._length=null;a("zorder")}});var cYe=ye((Lxr,uYe)=>{"use strict";var hYt=zv(),sYe=Mr(),dYt=JI(),vYt=QI(),pYt=e8(),gYt=t8(),lYe=VV(),mYt=m$(),yYt=W7(),_Yt=oH();uYe.exports=function(t,r){var n=r._carpetTrace=yYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){if(!r.a||!r.b){var i=t.data[n.index],a=t.data[r.index];a.a||(a.a=i.a),a.b||(a.b=i.b),mYt(a,r,r._defaultColor,t._fullLayout)}var o=xYt(t,r);return _Yt(r,r._z),o}};function xYt(e,t){var r=t._carpetTrace,n=r.aaxis,i=r.baxis,a,o,s,l,u,c,f;n._minDtick=0,i._minDtick=0,sYe.isArray1D(t.z)&&dYt(t,n,i,"a","b",["z"]),a=t._a=t._a||t.a,l=t._b=t._b||t.b,a=a?n.makeCalcdata(t,"_a"):[],l=l?i.makeCalcdata(t,"_b"):[],o=t.a0||0,s=t.da||1,u=t.b0||0,c=t.db||1,f=t._z=vYt(t._z||t.z,t.transpose),t._emptypoints=gYt(f),pYt(f,t._emptypoints);var h=sYe.maxRowLength(f),d=t.xtype==="scaled"?"":a,v=lYe(t,d,o,s,h,n),x=t.ytype==="scaled"?"":l,b=lYe(t,x,u,c,f.length,i),p={a:v,b,z:f};return t.contours.type==="levels"&&t.contours.coloring!=="none"&&hYt(e,t,{vals:f,containerStr:"",cLetter:"z"}),[p]}});var hYe=ye((Pxr,fYe)=>{"use strict";var bYt=Mr().isArrayOrTypedArray;fYe.exports=function(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p=bYt(r)?"a":"b",E=p==="a"?e.aaxis:e.baxis,k=E.smoothing,A=p==="a"?e.a2i:e.b2j,L=p==="a"?r:n,_=p==="a"?n:r,C=p==="a"?t.a.length:t.b.length,M=p==="a"?t.b.length:t.a.length,g=Math.floor(p==="a"?e.b2j(_):e.a2i(_)),P=p==="a"?function(_e){return e.evalxy([],_e,g)}:function(_e){return e.evalxy([],g,_e)};k&&(o=Math.max(0,Math.min(M-2,g)),s=g-o,a=p==="a"?function(_e,Me){return e.dxydi([],_e,o,Me,s)}:function(_e,Me){return e.dxydj([],o,_e,s,Me)});var T=A(L[0]),F=A(L[1]),q=T0?Math.floor:Math.ceil,X=q>0?Math.ceil:Math.floor,G=q>0?Math.min:Math.max,N=q>0?Math.max:Math.min,W=H(T+V),re=X(F-V);c=P(T);var ae=[[c]];for(i=W;i*q{"use strict";var X7=xa(),Y7=f$(),mYe=h$(),eC=ao(),m1=Mr(),wYt=lH(),TYt=uH(),hw=w8(),Z7=S4(),AYt=dH(),SYt=hH(),MYt=vH(),EYt=W7(),dYe=hYe();yYe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;m1.makeTraceGroups(i,n,"contour").each(function(s){var l=X7.select(this),u=s[0],c=u.trace,f=c._carpetTrace=EYt(t,c),h=t.calcdata[f.index][0];if(!f.visible||f.visible==="legendonly")return;var d=u.a,v=u.b,x=c.contours,b=SYt(x,r,u),p=x.type==="constraint",E=x._operation,k=p?E==="="?"lines":"fill":x.coloring;function A(H){var X=f.ab2xy(H[0],H[1],!0);return[a.c2p(X[0]),o.c2p(X[1])]}var L=[[d[0],v[v.length-1]],[d[d.length-1],v[v.length-1]],[d[d.length-1],v[0]],[d[0],v[0]]];wYt(b);var _=(d[d.length-1]-d[0])*1e-8,C=(v[v.length-1]-v[0])*1e-8;TYt(b,_,C);var M=b;x.type==="constraint"&&(M=AYt(b,E)),kYt(b,A);var g,P,T,F,q=[];for(F=h.clipsegments.length-1;F>=0;F--)g=h.clipsegments[F],P=Y7([],g.x,a.c2p),T=Y7([],g.y,o.c2p),P.reverse(),T.reverse(),q.push(mYe(P,T,g.bicubic));var V="M"+q.join("L")+"Z";PYt(l,h.clipsegments,a,o,p,k),IYt(c,l,a,o,M,L,A,f,h,k,V),CYt(l,b,t,u,x,r,f),eC.setClipUrl(l,f._clipPathId,t)})};function kYt(e,t){var r,n,i,a,o,s,l,u,c;for(r=0;rb&&(n.max=b),n.len=n.max-n.min}function vYe(e,t,r){var n=e.getPointAtLength(t),i=e.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function pYe(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]);return[e[0]/t,e[1]/t]}function gYe(e,t){var r=Math.abs(e[0]*t[0]+e[1]*t[1]),n=Math.sqrt(1-r*r);return n/r}function PYt(e,t,r,n,i,a){var o,s,l,u,c=m1.ensureSingle(e,"g","contourbg"),f=c.selectAll("path").data(a==="fill"&&!i?[0]:[]);f.enter().append("path"),f.exit().remove();var h=[];for(u=0;u=0&&(d=P,x=b):Math.abs(h[1]-d[1])=0&&(d=P,x=b):m1.log("endpt to newendpt is not vert. or horz.",h,d,P)}if(x>=0)break;u+=M(h,d),h=d}if(x===t.edgepaths.length){m1.log("unclosed perimeter path");break}l=x,f=c.indexOf(l)===-1,f&&(l=c[0],u+=M(h,d)+"Z",h=null)}for(l=0;l{"use strict";xYe.exports={attributes:g$(),supplyDefaults:m$(),colorbar:S8(),calc:cYe(),plot:_Ye(),style:A8(),moduleType:"trace",name:"contourcarpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}});var TYe=ye((Dxr,wYe)=>{"use strict";wYe.exports=bYe()});var J7=ye((zxr,kYe)=>{"use strict";var K7=Mr().extendFlat,tC=Uc(),AYe=Oc().axisHoverFormat,MYe=Ed().dash,DYt=i3(),EYe=HT(),zYt=EYe.INCREASING.COLOR,FYt=EYe.DECREASING.COLOR,y$=tC.line;function SYe(e){return{line:{color:K7({},y$.color,{dflt:e}),width:y$.width,dash:MYe,editType:"style"},editType:"style"}}kYe.exports={xperiod:tC.xperiod,xperiod0:tC.xperiod0,xperiodalignment:tC.xperiodalignment,xhoverformat:AYe("x"),yhoverformat:AYe("y"),x:{valType:"data_array",editType:"calc+clearAxisTypes"},open:{valType:"data_array",editType:"calc"},high:{valType:"data_array",editType:"calc"},low:{valType:"data_array",editType:"calc"},close:{valType:"data_array",editType:"calc"},line:{width:K7({},y$.width,{}),dash:K7({},MYe,{}),editType:"style"},increasing:SYe(zYt),decreasing:SYe(FYt),text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},tickwidth:{valType:"number",min:0,max:.5,dflt:.3,editType:"calc"},hoverlabel:K7({},DYt.hoverlabel,{split:{valType:"boolean",dflt:!1,editType:"style"}}),zorder:tC.zorder}});var _$=ye((Fxr,CYe)=>{"use strict";var qYt=ba(),OYt=Mr();CYe.exports=function(t,r,n,i){var a=n("x"),o=n("open"),s=n("high"),l=n("low"),u=n("close");n("hoverlabel.split");var c=qYt.getComponentMethod("calendars","handleTraceDefaults");if(c(t,r,["x"],i),!!(o&&s&&l&&u)){var f=Math.min(o.length,s.length,l.length,u.length);return a&&(f=Math.min(f,OYt.minRowLength(a))),r._length=f,f}}});var IYe=ye((qxr,PYe)=>{"use strict";var BYt=Mr(),NYt=_$(),UYt=Pg(),VYt=J7();PYe.exports=function(t,r,n,i){function a(s,l){return BYt.coerce(t,r,VYt,s,l)}var o=NYt(t,r,a,i);if(!o){r.visible=!1;return}UYt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),a("line.dash"),LYe(t,r,a,"increasing"),LYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("tickwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function LYe(e,t,r,n){r(n+".line.color"),r(n+".line.width",t.line.width),r(n+".line.dash",t.line.dash)}});var x$=ye((Oxr,DYe)=>{"use strict";var BA=Mr(),$7=BA._,Q7=Qa(),HYt=Rg(),rC=es().BADNUM;function GYt(e,t){var r=Q7.getFromId(e,t.xaxis),n=Q7.getFromId(e,t.yaxis),i=WYt(e,r,t),a=t._minDiff;t._minDiff=null;var o=t._origX;t._origX=null;var s=t._xcalc;t._xcalc=null;var l=RYe(e,t,o,s,n,jYt);return t._extremes[r._id]=Q7.findExtremes(r,s,{vpad:a/2}),l.length?(BA.extendFlat(l[0].t,{wHover:a/2,tickLen:i}),l):[{t:{empty:!0}}]}function jYt(e,t,r,n){return{o:e,h:t,l:r,c:n}}function RYe(e,t,r,n,i,a){for(var o=i.makeCalcdata(t,"open"),s=i.makeCalcdata(t,"high"),l=i.makeCalcdata(t,"low"),u=i.makeCalcdata(t,"close"),c=BA.isArrayOrTypedArray(t.text),f=BA.isArrayOrTypedArray(t.hovertext),h=!0,d=null,v=!!t.xperiodalignment,x=[],b=0;bd):h=L>E,d=L;var _=a(E,k,A,L);_.pos=p,_.yc=(E+L)/2,_.i=b,_.dir=h?"increasing":"decreasing",_.x=_.pos,_.y=[A,k],v&&(_.orig_p=r[b]),c&&(_.tx=t.text[b]),f&&(_.htx=t.hovertext[b]),x.push(_)}else x.push({pos:p,empty:!0})}return t._extremes[i._id]=Q7.findExtremes(i,BA.concat(l,s),{padded:!0}),x.length&&(x[0].t={labels:{open:$7(e,"open:")+" ",high:$7(e,"high:")+" ",low:$7(e,"low:")+" ",close:$7(e,"close:")+" "}}),x}function WYt(e,t,r){var n=r._minDiff;if(!n){var i=e._fullData,a=[];n=1/0;var o;for(o=0;o{"use strict";var ZYt=xa(),zYe=Mr();FYe.exports=function(t,r,n,i){var a=r.yaxis,o=r.xaxis,s=!!o.rangebreaks;zYe.makeTraceGroups(i,n,"trace ohlc").each(function(l){var u=ZYt.select(this),c=l[0],f=c.t,h=c.trace;if(h.visible!==!0||f.empty){u.remove();return}var d=f.tickLen,v=u.selectAll("path").data(zYe.identity);v.enter().append("path"),v.exit().remove(),v.attr("d",function(x){if(x.empty)return"M0,0Z";var b=o.c2p(x.pos-d,!0),p=o.c2p(x.pos+d,!0),E=s?(b+p)/2:o.c2p(x.pos,!0),k=a.c2p(x.o,!0),A=a.c2p(x.h,!0),L=a.c2p(x.l,!0),_=a.c2p(x.c,!0);return"M"+b+","+k+"H"+E+"M"+E+","+A+"V"+L+"M"+p+","+_+"H"+E})})}});var BYe=ye((Nxr,OYe)=>{"use strict";var b$=xa(),XYt=ao(),YYt=va();OYe.exports=function(t,r,n){var i=n||b$.select(t).selectAll("g.ohlclayer").selectAll("g.trace");i.style("opacity",function(a){return a[0].trace.opacity}),i.each(function(a){var o=a[0].trace;b$.select(this).selectAll("path").each(function(s){if(!s.empty){var l=o[s.dir].line;b$.select(this).style("fill","none").call(YYt.stroke,l.color).call(XYt.dashLine,l.dash,l.width).style("opacity",o.selectedpoints&&!s.selected?.3:1)}})})}});var T$=ye((Uxr,GYe)=>{"use strict";var w$=Qa(),KYt=Mr(),e9=Nc(),JYt=va(),$Yt=Mr().fillText,NYe=HT(),QYt={increasing:NYe.INCREASING.SYMBOL,decreasing:NYe.DECREASING.SYMBOL};function eKt(e,t,r,n){var i=e.cd,a=i[0].trace;return a.hoverlabel.split?VYe(e,t,r,n):HYe(e,t,r,n)}function UYe(e,t,r,n){var i=e.cd,a=e.xa,o=i[0].trace,s=i[0].t,l=o.type,u=l==="ohlc"?"l":"min",c=l==="ohlc"?"h":"max",f,h,d=s.bPos||0,v=function(P){return P.pos+d-t},x=s.bdPos||s.tickLen,b=s.wHover,p=Math.min(1,x/Math.abs(a.r2c(a.range[1])-a.r2c(a.range[0])));f=e.maxHoverDistance-p,h=e.maxSpikeDistance-p;function E(P){var T=v(P);return e9.inbox(T-b,T+b,f)}function k(P){var T=P[u],F=P[c];return T===F||e9.inbox(T-r,F-r,f)}function A(P){return(E(P)+k(P))/2}var L=e9.getDistanceFunction(n,E,k,A);if(e9.getClosest(i,L,e),e.index===!1)return null;var _=i[e.index];if(_.empty)return null;var C=_.dir,M=o[C],g=M.line.color;return JYt.opacity(g)&&M.line.width?e.color=g:e.color=M.fillcolor,e.x0=a.c2p(_.pos+d-x,!0),e.x1=a.c2p(_.pos+d+x,!0),e.xLabelVal=_.orig_p!==void 0?_.orig_p:_.pos,e.spikeDistance=A(_)*h/f,e.xSpike=a.c2p(_.pos,!0),e}function VYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=[],u=UYe(e,t,r,n);if(!u)return[];var c=u.index,f=i[c],h=f.hi||o.hoverinfo,d=h.split("+"),v=h==="all",x=v||d.indexOf("y")!==-1;if(!x)return[];for(var b=["high","open","close","low"],p={},E=0;E"+s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat)):(_=KYt.extendFlat({},u),_.y0=_.y1=L,_.yLabelVal=A,_.yLabel=s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat),_.name="",l.push(_),p[A]=_)}return l}function HYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=UYe(e,t,r,n);if(!l)return[];var u=l.index,c=i[u],f=l.index=c.i,h=c.dir;function d(A){return s.labels[A]+w$.hoverLabelText(a,o[A][f],o.yhoverformat)}var v=c.hi||o.hoverinfo,x=v.split("+"),b=v==="all",p=b||x.indexOf("y")!==-1,E=b||x.indexOf("text")!==-1,k=p?[d("open"),d("high"),d("low"),d("close")+" "+QYt[h]]:[];return E&&$Yt(c,o,k),l.extraText=k.join("
"),l.y0=l.y1=a.c2p(c.yc,!0),[l]}GYe.exports={hoverPoints:eKt,hoverSplit:VYe,hoverOnPoints:HYe}});var A$=ye((Vxr,jYe)=>{"use strict";jYe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l=n[0].t.bPos||0;if(r===!1)for(s=0;s{"use strict";WYe.exports={moduleType:"trace",name:"ohlc",basePlotModule:Jf(),categories:["cartesian","svg","showLegend"],meta:{},attributes:J7(),supplyDefaults:IYe(),calc:x$().calc,plot:qYe(),style:BYe(),hoverPoints:T$().hoverPoints,selectPoints:A$()}});var YYe=ye((Gxr,XYe)=>{"use strict";XYe.exports=ZYe()});var M$=ye((jxr,$Ye)=>{"use strict";var S$=Mr().extendFlat,KYe=Oc().axisHoverFormat,c0=J7(),NA=v4();function JYe(e){return{line:{color:S$({},NA.line.color,{dflt:e}),width:NA.line.width,editType:"style"},fillcolor:NA.fillcolor,editType:"style"}}$Ye.exports={xperiod:c0.xperiod,xperiod0:c0.xperiod0,xperiodalignment:c0.xperiodalignment,xhoverformat:KYe("x"),yhoverformat:KYe("y"),x:c0.x,open:c0.open,high:c0.high,low:c0.low,close:c0.close,line:{width:S$({},NA.line.width,{}),editType:"style"},increasing:JYe(c0.increasing.line.color.dflt),decreasing:JYe(c0.decreasing.line.color.dflt),text:c0.text,hovertext:c0.hovertext,whiskerwidth:S$({},NA.whiskerwidth,{dflt:0}),hoverlabel:c0.hoverlabel,zorder:NA.zorder}});var tKe=ye((Wxr,eKe)=>{"use strict";var tKt=Mr(),rKt=va(),iKt=_$(),nKt=Pg(),aKt=M$();eKe.exports=function(t,r,n,i){function a(s,l){return tKt.coerce(t,r,aKt,s,l)}var o=iKt(t,r,a,i);if(!o){r.visible=!1;return}nKt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),QYe(t,r,a,"increasing"),QYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("whiskerwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function QYe(e,t,r,n){var i=r(n+".line.color");r(n+".line.width",t.line.width),r(n+".fillcolor",rKt.addOpacity(i,.5))}});var aKe=ye((Zxr,nKe)=>{"use strict";var rKe=Mr(),iKe=Qa(),oKt=Rg(),sKt=x$().calcCommon;nKe.exports=function(e,t){var r=e._fullLayout,n=iKe.getFromId(e,t.xaxis),i=iKe.getFromId(e,t.yaxis),a=n.makeCalcdata(t,"x"),o=oKt(t,n,"x",a).vals,s=sKt(e,t,a,o,i,lKt);return s.length?(rKe.extendFlat(s[0].t,{num:r._numBoxes,dPos:rKe.distinctVals(o).minDiff/2,posLetter:"x",valLetter:"y"}),r._numBoxes++,s):[{t:{empty:!0}}]};function lKt(e,t,r,n){return{min:r,q1:Math.min(e,n),med:n,q3:Math.max(e,n),max:t}}});var sKe=ye((Xxr,oKe)=>{"use strict";oKe.exports={moduleType:"trace",name:"candlestick",basePlotModule:Jf(),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:M$(),layoutAttributes:p4(),supplyLayoutDefaults:VI().supplyLayoutDefaults,crossTraceCalc:GI().crossTraceCalc,supplyDefaults:tKe(),calc:aKe(),plot:jI().plot,layerName:"boxlayer",style:WI().style,hoverPoints:T$().hoverPoints,selectPoints:A$()}});var uKe=ye((Yxr,lKe)=>{"use strict";lKe.exports=sKe()});var k$=ye((Kxr,cKe)=>{"use strict";var r9=Mr(),uKt=ym(),t9=r9.deg2rad,E$=r9.rad2deg;cKe.exports=function(t,r,n){switch(uKt(t,n),t._id){case"x":case"radialaxis":cKt(t,r);break;case"angularaxis":dKt(t,r);break}};function cKt(e,t){var r=t._subplot;e.setGeometry=function(){var n=e._rl[0],i=e._rl[1],a=r.innerRadius,o=(r.radius-a)/(i-n),s=a/o,l=n>i?function(u){return u<=0}:function(u){return u>=0};e.c2g=function(u){var c=e.c2l(u)-n;return(l(c)?c:0)+s},e.g2c=function(u){return e.l2c(u+n-s)},e.g2p=function(u){return u*o},e.c2p=function(u){return e.g2p(e.c2g(u))}}}function fKt(e,t){return t==="degrees"?t9(e):e}function hKt(e,t){return t==="degrees"?E$(e):e}function dKt(e,t){var r=e.type;if(r==="linear"){var n=e.d2c,i=e.c2d;e.d2c=function(a,o){return fKt(n(a),o)},e.c2d=function(a,o){return i(hKt(a,o))}}e.makeCalcdata=function(a,o){var s=a[o],l=a._length,u,c,f=function(b){return e.d2c(b,a.thetaunit)};if(s)for(u=new Array(l),c=0;c{"use strict";fKe.exports={attr:"subplot",name:"polar",axisNames:["angularaxis","radialaxis"],axisName2dataArray:{angularaxis:"theta",radialaxis:"r"},layerNames:["draglayer","plotbg","backplot","angular-grid","radial-grid","frontplot","angular-line","radial-line","angular-axis","radial-axis"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}});var a9=ye(($xr,gKe)=>{"use strict";var dw=Mr(),hKe=wM().tester,C$=dw.findIndexOfMin,vKe=dw.isAngleInsideSector,vKt=dw.angleDelta,dKe=dw.angleDist;function pKt(e,t,r,n,i){if(!vKe(t,n))return!1;var a,o;r[0]0?o:1/0},n=C$(t,r),i=dw.mod(n+1,t.length);return[t[n],t[i]]}function n9(e){return Math.abs(e)>1e-10?e:0}function L$(e,t,r){t=t||0,r=r||0;for(var n=e.length,i=new Array(n),a=0;a{"use strict";function mKe(e){return e<0?-1:e>0?1:0}function VA(e){var t=e[0],r=e[1];if(!isFinite(t)||!isFinite(r))return[1,0];var n=(t+1)*(t+1)+r*r;return[(t*t+r*r-1)/n,2*r/n]}function HA(e,t){var r=t[0],n=t[1];return[r*e.radius+e.cx,-n*e.radius+e.cy]}function yKe(e,t){return t*e.radius}function TKt(e,t,r,n){var i=HA(e,VA([r,t])),a=i[0],o=i[1],s=HA(e,VA([n,t])),l=s[0],u=s[1];if(t===0)return["M"+a+","+o,"L"+l+","+u].join(" ");var c=yKe(e,1/Math.abs(t));return["M"+a+","+o,"A"+c+","+c+" 0 0,"+(t<0?1:0)+" "+l+","+u].join(" ")}function AKt(e,t,r,n){var i=yKe(e,1/(t+1)),a=HA(e,VA([t,r])),o=a[0],s=a[1],l=HA(e,VA([t,n])),u=l[0],c=l[1];if(mKe(r)!==mKe(n)){var f=HA(e,VA([t,0])),h=f[0],d=f[1];return["M"+o+","+s,"A"+i+","+i+" 0 0,"+(0{"use strict";var vw=xa(),SKt=id(),gw=ba(),cc=Mr(),ry=cc.strRotate,dd=cc.strTranslate,I$=va(),iC=ao(),MKt=Xu(),dp=Qa(),EKt=ym(),kKt=k$(),CKt=wg().doAutoRange,y1=DN(),l9=gv(),xKe=Nc(),LKt=Mb(),PKt=wf().prepSelect,IKt=wf().selectOnClick,R$=wf().clearOutline,bKe=Tg(),wKe=lM(),TKe=gM().redrawReglTraces,RKt=Nh().MID_SHIFT,Lx=i9(),_1=a9(),u9=P$(),o9=u9.smith,DKt=u9.reactanceArc,zKt=u9.resistanceArc,s9=u9.smithTransform,FKt=cc._,AKe=cc.mod,Px=cc.deg2rad,pw=cc.rad2deg;function SKe(e,t,r){this.isSmith=r||!1,this.id=t,this.gd=e,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var n=e._fullLayout,i="clip"+n._uid+t;this.clipIds.forTraces=i+"-for-traces",this.clipPaths.forTraces=n._clips.append("clipPath").attr("id",this.clipIds.forTraces),this.clipPaths.forTraces.append("path"),this.framework=n["_"+(r?"smith":"polar")+"layer"].append("g").attr("class",t),this.getHole=function(a){return this.isSmith?0:a.hole},this.getSector=function(a){return this.isSmith?[0,360]:a.sector},this.getRadial=function(a){return this.isSmith?a.realaxis:a.radialaxis},this.getAngular=function(a){return this.isSmith?a.imaginaryaxis:a.angularaxis},r||(this.radialTickLayout=null,this.angularTickLayout=null)}var Fd=SKe.prototype;kKe.exports=function(t,r,n){return new SKe(t,r,n)};Fd.plot=function(e,t){for(var r=this,n=t[r.id],i=!1,a=0;ab?(p=u,E=u*b,L=(c-E)/i.h/2,k=[s[0],s[1]],A=[l[0]+L,l[1]-L]):(p=c/b,E=c,L=(u-p)/i.w/2,k=[s[0]+L,s[1]-L],A=[l[0],l[1]]),r.xLength2=p,r.yLength2=E,r.xDomain2=k,r.yDomain2=A;var _=r.xOffset2=i.l+i.w*k[0],C=r.yOffset2=i.t+i.h*(1-A[1]),M=r.radius=p/d,g=r.innerRadius=r.getHole(t)*M,P=r.cx=_-M*h[0],T=r.cy=C+M*h[3],F=r.cxx=P-_,q=r.cyy=T-C,V=a.side,H;V==="counterclockwise"?(H=V,V="top"):V==="clockwise"&&(H=V,V="bottom"),r.radialAxis=r.mockAxis(e,t,a,{_id:"x",side:V,_trueSide:H,domain:[g/i.w,M/i.w]}),r.angularAxis=r.mockAxis(e,t,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(e,t),r.updateAngularAxis(e,t),r.updateRadialAxis(e,t),r.updateRadialAxisTitle(e,t),r.xaxis=r.mockCartesianAxis(e,t,{_id:"x",domain:k}),r.yaxis=r.mockCartesianAxis(e,t,{_id:"y",domain:A});var X=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",X).attr("transform",dd(F,q)),n.frontplot.attr("transform",dd(_,C)).call(iC.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",X).attr("transform",dd(P,T)).call(I$.fill,t.bgcolor)};Fd.mockAxis=function(e,t,r,n){var i=cc.extendFlat({},r,n);return kKt(i,t,e),i};Fd.mockCartesianAxis=function(e,t,r){var n=this,i=n.isSmith,a=r._id,o=cc.extendFlat({type:"linear"},r);EKt(o,e);var s={x:[0,2],y:[1,3]};return o.setRange=function(){var l=n.sectorBBox,u=s[a],c=n.radialAxis._rl,f=(c[1]-c[0])/(1-n.getHole(t));o.range=[l[u[0]]*f,l[u[1]]*f]},o.isPtWithinRange=a==="x"&&!i?function(l){return n.isPtInside(l)}:function(){return!0},o.setRange(),o.setScale(),o};Fd.doAutoRange=function(e,t){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(t);CKt(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],i.minallowed!==void 0){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(i.maxallowed!==void 0){var l=i.r2l(i.maxallowed);i._rl[0]90&&c<=270&&(f.tickangle=180);var v=d?function(M){var g=s9(r,o9([M.x,0]));return dd(g[0]-s,g[1]-l)}:function(M){return dd(f.l2p(M.x)+o,0)},x=d?function(M){return zKt(r,M.x,-1/0,1/0)}:function(M){return r.pathArc(f.r2p(M.x)+o)},b=MKe(u);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),h){f.setScale();var p=0,E=d?(f.tickvals||[]).filter(function(M){return M>=0}).map(function(M){return dp.tickText(f,M,!0,!1)}):dp.calcTicks(f),k=d?E:dp.clipEnds(f,E),A=dp.getTickSigns(f)[2];d&&((f.ticks==="top"&&f.side==="bottom"||f.ticks==="bottom"&&f.side==="top")&&(A=-A),f.ticks==="top"&&f.side==="top"&&(p=-f.ticklen),f.ticks==="bottom"&&f.side==="bottom"&&(p=f.ticklen)),dp.drawTicks(n,f,{vals:E,layer:i["radial-axis"],path:dp.makeTickPath(f,0,A),transFn:v,crisp:!1}),dp.drawGrid(n,f,{vals:k,layer:i["radial-grid"],path:x,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,f,{vals:E,layer:i["radial-axis"],transFn:v,labelFns:dp.makeLabelFns(f,p)})}var L=r.radialAxisAngle=r.vangles?pw(EKe(Px(u.angle),r.vangles)):u.angle,_=dd(s,l),C=_+ry(-L);nC(i["radial-axis"],h&&(u.showticklabels||u.ticks),{transform:C}),nC(i["radial-grid"],h&&u.showgrid,{transform:d?"":_}),nC(i["radial-line"].select("line"),h&&u.showline,{x1:d?-a:o,y1:0,x2:a,y2:0,transform:C}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateRadialAxisTitle=function(e,t,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(t),u=n.id+"title",c=0;if(l.title){var f=iC.bBox(n.layers["radial-axis"].node()).height,h=l.title.font.size,d=l.side;c=d==="top"?h:d==="counterclockwise"?-(f+h*.4):f+h*.8}var v=r!==void 0?r:n.radialAxisAngle,x=Px(v),b=Math.cos(x),p=Math.sin(x),E=o+a/2*b+c*p,k=s-a/2*p+c*b;n.layers["radial-axis-title"]=LKt.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:FKt(i,"Click to enter radial axis title"),attributes:{x:E,y:k,"text-anchor":"middle"},transform:{rotate:-v}})}};Fd.updateAngularAxis=function(e,t){var r=this,n=r.gd,i=r.layers,a=r.radius,o=r.innerRadius,s=r.cx,l=r.cy,u=r.getAngular(t),c=r.angularAxis,f=r.isSmith;f||(r.fillViewInitialKey("angularaxis.rotation",u.rotation),c.setGeometry(),c.setScale());var h=f?function(g){var P=s9(r,o9([0,g.x]));return Math.atan2(P[0]-s,P[1]-l)-Math.PI/2}:function(g){return c.t2g(g.x)};c.type==="linear"&&c.thetaunit==="radians"&&(c.tick0=pw(c.tick0),c.dtick=pw(c.dtick));var d=function(g){return dd(s+a*Math.cos(g),l-a*Math.sin(g))},v=f?function(g){var P=s9(r,o9([0,g.x]));return dd(P[0],P[1])}:function(g){return d(h(g))},x=f?function(g){var P=s9(r,o9([0,g.x])),T=Math.atan2(P[0]-s,P[1]-l)-Math.PI/2;return dd(P[0],P[1])+ry(-pw(T))}:function(g){var P=h(g);return d(P)+ry(-pw(P))},b=f?function(g){return DKt(r,g.x,0,1/0)}:function(g){var P=h(g),T=Math.cos(P),F=Math.sin(P);return"M"+[s+o*T,l-o*F]+"L"+[s+a*T,l-a*F]},p=dp.makeLabelFns(c,0),E=p.labelStandoff,k={};k.xFn=function(g){var P=h(g);return Math.cos(P)*E},k.yFn=function(g){var P=h(g),T=Math.sin(P)>0?.2:1;return-Math.sin(P)*(E+g.fontSize*T)+Math.abs(Math.cos(P))*(g.fontSize*RKt)},k.anchorFn=function(g){var P=h(g),T=Math.cos(P);return Math.abs(T)<.1?"middle":T>0?"start":"end"},k.heightFn=function(g,P,T){var F=h(g);return-.5*(1+Math.sin(F))*T};var A=MKe(u);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+c._id+"tick").remove(),r.angularTickLayout=A);var L=f?[1/0].concat(c.tickvals||[]).map(function(g){return dp.tickText(c,g,!0,!1)}):dp.calcTicks(c);f&&(L[0].text="\u221E",L[0].fontSize*=1.75);var _;if(t.gridshape==="linear"?(_=L.map(h),cc.angleDelta(_[0],_[1])<0&&(_=_.slice().reverse())):_=null,r.vangles=_,c.type==="category"&&(L=L.filter(function(g){return cc.isAngleInsideSector(h(g),r.sectorInRad)})),c.visible){var C=c.ticks==="inside"?-1:1,M=(c.linewidth||1)/2;dp.drawTicks(n,c,{vals:L,layer:i["angular-axis"],path:"M"+C*M+",0h"+C*c.ticklen,transFn:x,crisp:!1}),dp.drawGrid(n,c,{vals:L,layer:i["angular-grid"],path:b,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,c,{vals:L,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:v,labelFns:k})}nC(i["angular-line"].select("path"),u.showline,{d:r.pathSubplot(),transform:dd(s,l)}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateFx=function(e,t){if(!this.gd._context.staticPlot){var r=!this.isSmith;r&&(this.updateAngularDrag(e),this.updateRadialDrag(e,t,0),this.updateRadialDrag(e,t,1)),this.updateHoverAndMainDrag(e)}};Fd.updateHoverAndMainDrag=function(e){var t=this,r=t.isSmith,n=t.gd,i=t.layers,a=e._zoomlayer,o=Lx.MINZOOM,s=Lx.OFFEDGE,l=t.radius,u=t.innerRadius,c=t.cx,f=t.cy,h=t.cxx,d=t.cyy,v=t.sectorInRad,x=t.vangles,b=t.radialAxis,p=_1.clampTiny,E=_1.findXYatLength,k=_1.findEnclosingVertexAngles,A=Lx.cornerHalfWidth,L=Lx.cornerLen/2,_,C,M=y1.makeDragger(i,"path","maindrag",e.dragmode===!1?"none":"crosshair");vw.select(M).attr("d",t.pathSubplot()).attr("transform",dd(c,f)),M.onmousemove=function(ce){xKe.hover(n,ce,t.id),n._fullLayout._lasthover=M,n._fullLayout._hoversubplot=t.id},M.onmouseout=function(ce){n._dragging||l9.unhover(n,ce)};var g={element:M,gd:n,subplot:t.id,plotinfo:{id:t.id,xaxis:t.xaxis,yaxis:t.yaxis},xaxes:[t.xaxis],yaxes:[t.yaxis]},P,T,F,q,V,H,X,G,N;function W(ce,Ge){return Math.sqrt(ce*ce+Ge*Ge)}function re(ce,Ge){return W(ce-h,Ge-d)}function ae(ce,Ge){return Math.atan2(d-Ge,ce-h)}function _e(ce,Ge){return[ce*Math.cos(Ge),ce*Math.sin(-Ge)]}function Me(ce,Ge){if(ce===0)return t.pathSector(2*A);var nt=L/ce,ct=Ge-nt,qt=Ge+nt,rt=Math.max(0,Math.min(ce,l)),ot=rt-A,Rt=rt+A;return"M"+_e(ot,ct)+"A"+[ot,ot]+" 0,0,0 "+_e(ot,qt)+"L"+_e(Rt,qt)+"A"+[Rt,Rt]+" 0,0,1 "+_e(Rt,ct)+"Z"}function ke(ce,Ge,nt){if(ce===0)return t.pathSector(2*A);var ct=_e(ce,Ge),qt=_e(ce,nt),rt=p((ct[0]+qt[0])/2),ot=p((ct[1]+qt[1])/2),Rt,kt;if(rt&&ot){var Ct=ot/rt,Yt=-1/Ct,xr=E(A,Ct,rt,ot);Rt=E(L,Yt,xr[0][0],xr[0][1]),kt=E(L,Yt,xr[1][0],xr[1][1])}else{var er,Ke;ot?(er=L,Ke=A):(er=A,Ke=L),Rt=[[rt-er,ot-Ke],[rt+er,ot-Ke]],kt=[[rt-er,ot+Ke],[rt+er,ot+Ke]]}return"M"+Rt.join("L")+"L"+kt.reverse().join("L")+"Z"}function ge(){F=null,q=null,V=t.pathSubplot(),H=!1;var ce=n._fullLayout[t.id];X=SKt(ce.bgcolor).getLuminance(),G=y1.makeZoombox(a,X,c,f,V),G.attr("fill-rule","evenodd"),N=y1.makeCorners(a,c,f),R$(n)}function ie(ce,Ge){return Ge=Math.max(Math.min(Ge,l),u),ceo?(ce-1&&ce===1&&IKt(Ge,n,[t.xaxis],[t.yaxis],t.id,g),nt.indexOf("event")>-1&&xKe.click(n,Ge,t.id)}g.prepFn=function(ce,Ge,nt){var ct=n._fullLayout.dragmode,qt=M.getBoundingClientRect();n._fullLayout._calcInverseTransform(n);var rt=n._fullLayout._invTransform;_=n._fullLayout._invScaleX,C=n._fullLayout._invScaleY;var ot=cc.apply3DTransform(rt)(Ge-qt.left,nt-qt.top);if(P=ot[0],T=ot[1],x){var Rt=_1.findPolygonOffset(l,v[0],v[1],x);P+=h+Rt[0],T+=d+Rt[1]}switch(ct){case"zoom":g.clickFn=Re,r||(x?g.moveFn=ze:g.moveFn=Ee,g.doneFn=Ce,ge(ce,Ge,nt));break;case"select":case"lasso":PKt(ce,Ge,nt,g,ct);break}},l9.init(g)};Fd.updateRadialDrag=function(e,t,r){var n=this,i=n.gd,a=n.layers,o=n.radius,s=n.innerRadius,l=n.cx,u=n.cy,c=n.radialAxis,f=Lx.radialDragBoxSize,h=f/2;if(!c.visible)return;var d=Px(n.radialAxisAngle),v=c._rl,x=v[0],b=v[1],p=v[r],E=.75*(v[1]-v[0])/(1-n.getHole(t))/o,k,A,L;r?(k=l+(o+h)*Math.cos(d),A=u-(o+h)*Math.sin(d),L="radialdrag"):(k=l+(s-h)*Math.cos(d),A=u-(s-h)*Math.sin(d),L="radialdrag-inner");var _=y1.makeRectDragger(a,L,"crosshair",-h,-h,f,f),C={element:_,gd:i};e.dragmode===!1&&(C.dragmode=!1),nC(vw.select(_),c.visible&&s0!=(r?P>x:P=90||i>90&&a>=450?d=1:s<=0&&u<=0?d=0:d=Math.max(s,u),i<=180&&a>=180||i>180&&a>=540?c=-1:o>=0&&l>=0?c=0:c=Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?f=-1:s>=0&&u>=0?f=0:f=Math.min(s,u),a>=360?h=1:o<=0&&l<=0?h=0:h=Math.max(o,l),[c,f,h,d]}function EKe(e,t){var r=function(i){return cc.angleDist(e,i)},n=cc.findIndexOfMin(t,r);return t[n]}function nC(e,t,r){return t?(e.attr("display",null),e.attr(r)):e&&e.attr("display","none"),e}});var z$=ye((tbr,DKe)=>{"use strict";var OKt=dh(),Yo=Cd(),BKt=Ju().attributes,f0=Mr().extendFlat,CKe=Bu().overrideAll,LKe=CKe({color:Yo.color,showline:f0({},Yo.showline,{dflt:!0}),linecolor:Yo.linecolor,linewidth:Yo.linewidth,showgrid:f0({},Yo.showgrid,{dflt:!0}),gridcolor:Yo.gridcolor,gridwidth:Yo.gridwidth,griddash:Yo.griddash},"plot","from-root"),PKe=CKe({tickmode:Yo.minor.tickmode,nticks:Yo.nticks,tick0:Yo.tick0,dtick:Yo.dtick,tickvals:Yo.tickvals,ticktext:Yo.ticktext,ticks:Yo.ticks,ticklen:Yo.ticklen,tickwidth:Yo.tickwidth,tickcolor:Yo.tickcolor,ticklabelstep:Yo.ticklabelstep,showticklabels:Yo.showticklabels,labelalias:Yo.labelalias,showtickprefix:Yo.showtickprefix,tickprefix:Yo.tickprefix,showticksuffix:Yo.showticksuffix,ticksuffix:Yo.ticksuffix,showexponent:Yo.showexponent,exponentformat:Yo.exponentformat,minexponent:Yo.minexponent,separatethousands:Yo.separatethousands,tickfont:Yo.tickfont,tickangle:Yo.tickangle,tickformat:Yo.tickformat,tickformatstops:Yo.tickformatstops,layer:Yo.layer},"plot","from-root"),IKe={visible:f0({},Yo.visible,{dflt:!0}),type:f0({},Yo.type,{values:["-","linear","log","date","category"]}),autotypenumbers:Yo.autotypenumbers,autorangeoptions:{minallowed:Yo.autorangeoptions.minallowed,maxallowed:Yo.autorangeoptions.maxallowed,clipmin:Yo.autorangeoptions.clipmin,clipmax:Yo.autorangeoptions.clipmax,include:Yo.autorangeoptions.include,editType:"plot"},autorange:f0({},Yo.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:f0({},Yo.minallowed,{editType:"plot"}),maxallowed:f0({},Yo.maxallowed,{editType:"plot"}),range:f0({},Yo.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:Yo.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:f0({},Yo.title.text,{editType:"plot",dflt:""}),font:f0({},Yo.title.font,{editType:"plot"}),editType:"plot"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(IKe,LKe,PKe);var RKe={visible:f0({},Yo.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:Yo.autotypenumbers,categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(RKe,LKe,PKe);DKe.exports={domain:BKt({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:OKt.background},radialaxis:IKe,angularaxis:RKe,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var OKe=ye((rbr,qKe)=>{"use strict";var c9=Mr(),NKt=va(),UKt=Vs(),VKt=C_(),HKt=kd().getSubplotData,GKt=xb(),jKt=T3(),WKt=t_(),ZKt=r_(),XKt=eI(),YKt=YM(),KKt=hB(),JKt=L3(),FKe=z$(),$Kt=k$(),f9=i9(),zKe=f9.axisNames;function QKt(e,t,r,n){var i=r("bgcolor");n.bgColor=NKt.combine(i,n.paper_bgcolor);var a=r("sector");r("hole");var o=HKt(n.fullData,f9.name,n.id),s=n.layoutOut,l;function u(G,N){return r(l+"."+G,N)}for(var c=0;c{"use strict";var tJt=kd().getSubplotCalcData,rJt=Mr().counterRegex,iJt=D$(),NKe=i9(),UKe=NKe.attr,mw=NKe.name,BKe=rJt(mw),VKe={};VKe[UKe]={valType:"subplotid",dflt:mw,editType:"calc"};function nJt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[mw],i=0;i{"use strict";var oJt=Wo().hovertemplateAttrs,sJt=Wo().texttemplateAttrs,d9=no().extendFlat,lJt=Eg(),h0=Uc(),uJt=vl(),GA=h0.line;GKe.exports={mode:h0.mode,r:{valType:"data_array",editType:"calc+clearAxisTypes"},theta:{valType:"data_array",editType:"calc+clearAxisTypes"},r0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dr:{valType:"number",dflt:1,editType:"calc"},theta0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dtheta:{valType:"number",editType:"calc"},thetaunit:{valType:"enumerated",values:["radians","degrees","gradians"],dflt:"degrees",editType:"calc+clearAxisTypes"},text:h0.text,texttemplate:sJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:h0.hovertext,line:{color:GA.color,width:GA.width,dash:GA.dash,backoff:GA.backoff,shape:d9({},GA.shape,{values:["linear","spline"]}),smoothing:GA.smoothing,editType:"calc"},connectgaps:h0.connectgaps,marker:h0.marker,cliponaxis:d9({},h0.cliponaxis,{dflt:!1}),textposition:h0.textposition,textfont:h0.textfont,fill:d9({},h0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:lJt(),hoverinfo:d9({},uJt.hoverinfo,{flags:["r","theta","text","name"]}),hoveron:h0.hoveron,hovertemplate:oJt(),selected:h0.selected,unselected:h0.unselected}});var p9=ye((abr,ZKe)=>{"use strict";var v9=Mr(),jA=lu(),cJt=$p(),fJt=R0(),jKe=J3(),hJt=D0(),dJt=Ig(),vJt=Sm().PTS_LINESONLY,pJt=aC();function gJt(e,t,r,n){function i(s,l){return v9.coerce(e,t,pJt,s,l)}var a=WKe(e,t,n,i);if(!a){t.visible=!1;return}i("thetaunit"),i("mode",a{"use strict";var mJt=Mr(),XKe=Qa();YKe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o,s;a?(o=a.radialAxis,s=a.angularAxis):(a=n[r.subplot],o=a.radialaxis,s=a.angularaxis);var l=o.c2l(t.r);i.rLabel=XKe.tickText(o,l,!0).text;var u=s.thetaunit==="degrees"?mJt.rad2deg(t.theta):t.theta;return i.thetaLabel=XKe.tickText(s,u,!0).text,i}});var $Ke=ye((sbr,JKe)=>{"use strict";var KKe=uo(),yJt=es().BADNUM,_Jt=Qa(),xJt=z0(),bJt=km(),wJt=F0(),TJt=q0().calcMarkerSize;JKe.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=a.makeCalcdata(r,"r"),l=o.makeCalcdata(r,"theta"),u=r._length,c=new Array(u),f=0;f{"use strict";var AJt=iT(),QKe=es().BADNUM;eJe.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=r.radialAxis,u=r.angularAxis,c=0;c{"use strict";var SJt=sT();function MJt(e,t,r,n){var i=SJt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,rJe(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function rJe(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="r",a._hovertitle="\u03B8";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.rLabel=s.rLabel,n.thetaLabel=s.thetaLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["r","theta","text"]),f.indexOf("r")!==-1&&c(i,n.rLabel),f.indexOf("theta")!==-1&&c(a,n.thetaLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}iJe.exports={hoverPoints:MJt,makeHoverPointText:rJe}});var aJe=ye((cbr,nJe)=>{"use strict";nJe.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:h9(),categories:["polar","symbols","showLegend","scatter-like"],attributes:aC(),supplyDefaults:p9().supplyDefaults,colorbar:Kd(),formatLabels:g9(),calc:$Ke(),plot:tJe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:m9().hoverPoints,selectPoints:lT(),meta:{}}});var sJe=ye((fbr,oJe)=>{"use strict";oJe.exports=aJe()});var F$=ye((hbr,lJe)=>{"use strict";var Vp=aC(),x1=tk(),EJt=Wo().texttemplateAttrs;lJe.exports={mode:Vp.mode,r:Vp.r,theta:Vp.theta,r0:Vp.r0,dr:Vp.dr,theta0:Vp.theta0,dtheta:Vp.dtheta,thetaunit:Vp.thetaunit,text:Vp.text,texttemplate:EJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:Vp.hovertext,hovertemplate:Vp.hovertemplate,line:{color:x1.line.color,width:x1.line.width,dash:x1.line.dash,editType:"calc"},connectgaps:x1.connectgaps,marker:x1.marker,fill:x1.fill,fillcolor:x1.fillcolor,textposition:x1.textposition,textfont:x1.textfont,hoverinfo:Vp.hoverinfo,selected:Vp.selected,unselected:Vp.unselected}});var fJe=ye((dbr,cJe)=>{"use strict";var uJe=Mr(),q$=lu(),kJt=p9().handleRThetaDefaults,CJt=$p(),LJt=R0(),PJt=D0(),IJt=Ig(),RJt=Sm().PTS_LINESONLY,DJt=F$();cJe.exports=function(t,r,n,i){function a(s,l){return uJe.coerce(t,r,DJt,s,l)}var o=kJt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("mode",o{"use strict";var zJt=g9();hJe.exports=function(t,r,n){var i=t.i;return"r"in t||(t.r=r._r[i]),"theta"in t||(t.theta=r._theta[i]),zJt(t,r,n)}});var pJe=ye((pbr,vJe)=>{"use strict";var FJt=z0(),qJt=q0().calcMarkerSize,OJt=Y2(),BJt=Qa(),NJt=sx().TOO_MANY_POINTS;vJe.exports=function(t,r){var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=r._r=a.makeCalcdata(r,"r"),l=r._theta=o.makeCalcdata(r,"theta"),u=r._length,c={};u{"use strict";var UJt=zz(),VJt=m9().makeHoverPointText;function HJt(e,t,r,n){var i=e.cd,a=i[0].t,o=a.r,s=a.theta,l=UJt.hoverPoints(e,t,r,n);if(!(!l||l[0].index===!1)){var u=l[0];if(u.index===void 0)return l;var c=e.subplot,f=u.cd[u.index],h=u.trace;if(f.r=o[u.index],f.theta=s[u.index],!!c.isPtInside(f))return u.xLabelVal=void 0,u.yLabelVal=void 0,VJt(f,h,c,u),l}}gJe.exports={hoverPoints:HJt}});var _Je=ye((mbr,yJe)=>{"use strict";yJe.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:h9(),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:F$(),supplyDefaults:fJe(),colorbar:Kd(),formatLabels:dJe(),calc:pJe(),hoverPoints:mJe().hoverPoints,selectPoints:KX(),meta:{}}});var xJe=ye((ybr,O$)=>{"use strict";var GJt=Oz(),jJt=uo(),WJt=QY(),ZJt=ZX(),y9=Y2(),_9=Mr(),XJt=sx().TOO_MANY_POINTS,YJt={};O$.exports=function(t,r,n){if(n.length){var i=r.radialAxis,a=r.angularAxis,o=ZJt(t,r);return n.forEach(function(s){if(!(!s||!s[0]||!s[0].trace)){var l=s[0],u=l.trace,c=l.t,f=u._length,h=c.r,d=c.theta,v=c.opts,x,b=h.slice(),p=d.slice();for(x=0;x=XJt&&(v.marker.cluster=c.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=E),v.line&&E.length>1&&_9.extendFlat(v.line,y9.linePositions(t,u,E)),v.text&&(_9.extendFlat(v.text,{positions:E},y9.textPosition(t,u,v.text,v.marker)),_9.extendFlat(v.textSel,{positions:E},y9.textPosition(t,u,v.text,v.markerSel)),_9.extendFlat(v.textUnsel,{positions:E},y9.textPosition(t,u,v.text,v.markerUnsel))),v.fill&&!o.fill2d&&(o.fill2d=!0),v.marker&&!o.scatter2d&&(o.scatter2d=!0),v.line&&!o.line2d&&(o.line2d=!0),v.text&&!o.glText&&(o.glText=!0),o.lineOptions.push(v.line),o.fillOptions.push(v.fill),o.markerOptions.push(v.marker),o.markerSelectedOptions.push(v.markerSel),o.markerUnselectedOptions.push(v.markerUnsel),o.textOptions.push(v.text),o.textSelectedOptions.push(v.textSel),o.textUnselectedOptions.push(v.textUnsel),o.selectBatch.push([]),o.unselectBatch.push([]),c.x=k,c.y=A,c.rawx=k,c.rawy=A,c.r=h,c.theta=d,c.positions=E,c._scene=o,c.index=o.count,o.count++}}),WJt(t,r,n)}};O$.exports.reglPrecompiled=YJt});var TJe=ye((_br,wJe)=>{"use strict";var bJe=_Je();bJe.plot=xJe();wJe.exports=bJe});var SJe=ye((xbr,AJe)=>{"use strict";AJe.exports=TJe()});var B$=ye((bbr,MJe)=>{"use strict";var KJt=Wo().hovertemplateAttrs,WA=no().extendFlat,Ix=aC(),Rx=Lm();MJe.exports={r:Ix.r,theta:Ix.theta,r0:Ix.r0,dr:Ix.dr,theta0:Ix.theta0,dtheta:Ix.dtheta,thetaunit:Ix.thetaunit,base:WA({},Rx.base,{}),offset:WA({},Rx.offset,{}),width:WA({},Rx.width,{}),text:WA({},Rx.text,{}),hovertext:WA({},Rx.hovertext,{}),marker:JJt(),hoverinfo:Ix.hoverinfo,hovertemplate:KJt(),selected:Rx.selected,unselected:Rx.unselected};function JJt(){var e=WA({},Rx.marker);return delete e.cornerradius,e}});var N$=ye((wbr,EJe)=>{"use strict";EJe.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}});var LJe=ye((Tbr,CJe)=>{"use strict";var kJe=Mr(),$Jt=p9().handleRThetaDefaults,QJt=FI(),e$t=B$();CJe.exports=function(t,r,n,i){function a(s,l){return kJe.coerce(t,r,e$t,s,l)}var o=$Jt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("base"),a("offset"),a("width"),a("text"),a("hovertext"),a("hovertemplate"),QJt(t,r,a,n,i),kJe.coerceSelectionMarkerOpacity(r,a)}});var IJe=ye((Abr,PJe)=>{"use strict";var t$t=Mr(),r$t=N$();PJe.exports=function(e,t,r){var n={},i;function a(l,u){return t$t.coerce(e[i]||{},t[i],r$t,l,u)}for(var o=0;o{"use strict";var RJe=Dv().hasColorscale,DJe=zv(),i$t=Mr().isArrayOrTypedArray,n$t=c4(),a$t=Gb().setGroupPositions,o$t=F0(),s$t=ba().traceIs,l$t=Mr().extendFlat;function u$t(e,t){for(var r=e._fullLayout,n=t.subplot,i=r[n].radialaxis,a=r[n].angularaxis,o=i.makeCalcdata(t,"r"),s=a.makeCalcdata(t,"theta"),l=t._length,u=new Array(l),c=o,f=s,h=0;h{"use strict";var FJe=xa(),x9=uo(),ZA=Mr(),f$t=ao(),V$=a9();qJe.exports=function(t,r,n){var i=t._context.staticPlot,a=r.xaxis,o=r.yaxis,s=r.radialAxis,l=r.angularAxis,u=h$t(r),c=r.layers.frontplot.select("g.barlayer");ZA.makeTraceGroups(c,n,"trace bars").each(function(){var f=FJe.select(this),h=ZA.ensureSingle(f,"g","points"),d=h.selectAll("g.point").data(ZA.identity);d.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),d.exit().remove(),d.each(function(v){var x=FJe.select(this),b=v.rp0=s.c2p(v.s0),p=v.rp1=s.c2p(v.s1),E=v.thetag0=l.c2g(v.p0),k=v.thetag1=l.c2g(v.p1),A;if(!x9(b)||!x9(p)||!x9(E)||!x9(k)||b===p||E===k)A="M0,0Z";else{var L=s.c2g(v.s1),_=(E+k)/2;v.ct=[a.c2p(L*Math.cos(_)),o.c2p(L*Math.sin(_))],A=u(b,p,E,k)}ZA.ensureSingle(x,"path").attr("d",A)}),f$t.setClipUrl(f,r._hasClipOnAxisFalse?r.clipIds.forTraces:null,t)})};function h$t(e){var t=e.cxx,r=e.cyy;return e.vangles?function(n,i,a,o){var s,l;ZA.angleDelta(a,o)>0?(s=a,l=o):(s=o,l=a);var u=V$.findEnclosingVertexAngles(s,e.vangles)[0],c=V$.findEnclosingVertexAngles(l,e.vangles)[1],f=[u,(s+l)/2,c];return V$.pathPolygonAnnulus(n,i,s,l,f,t,r)}:function(n,i,a,o){return ZA.pathAnnulus(n,i,a,o,t,r)}}});var NJe=ye((Ebr,BJe)=>{"use strict";var d$t=Nc(),H$=Mr(),v$t=TT().getTraceColor,p$t=H$.fillText,g$t=m9().makeHoverPointText,m$t=a9().isPtInsidePolygon;BJe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s=o.radialAxis,l=o.angularAxis,u=o.vangles,c=u?m$t:H$.isPtInsideSector,f=t.maxHoverDistance,h=l._period||2*Math.PI,d=Math.abs(s.g2p(Math.sqrt(r*r+n*n))),v=Math.atan2(n,r);s.range[0]>s.range[1]&&(v+=Math.PI);var x=function(k){return c(d,v,[k.rp0,k.rp1],[k.thetag0,k.thetag1],u)?f+Math.min(1,Math.abs(k.thetag1-k.thetag0)/h)-1+(k.rp1-d)/(k.rp1-k.rp0)-1:1/0};if(d$t.getClosest(i,x,t),t.index!==!1){var b=t.index,p=i[b];t.x0=t.x1=p.ct[0],t.y0=t.y1=p.ct[1];var E=H$.extendFlat({},p,{r:p.s,theta:p.p});return p$t(p,a,t),g$t(E,a,o,t),t.hovertemplate=a.hovertemplate,t.color=v$t(a,p),t.xLabelVal=t.yLabelVal=void 0,p.s<0&&(t.idealAlign="left"),[t]}}});var VJe=ye((kbr,UJe)=>{"use strict";UJe.exports={moduleType:"trace",name:"barpolar",basePlotModule:h9(),categories:["polar","bar","showLegend"],attributes:B$(),layoutAttributes:N$(),supplyDefaults:LJe(),supplyLayoutDefaults:IJe(),calc:U$().calc,crossTraceCalc:U$().crossTraceCalc,plot:OJe(),colorbar:Kd(),formatLabels:g9(),style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:NJe(),selectPoints:AT(),meta:{}}});var GJe=ye((Cbr,HJe)=>{"use strict";HJe.exports=VJe()});var G$=ye((Lbr,jJe)=>{"use strict";jJe.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}});var j$=ye((Pbr,YJe)=>{"use strict";var y$t=dh(),Mf=Cd(),_$t=Ju().attributes,Dx=Mr().extendFlat,WJe=Bu().overrideAll,ZJe=WJe({color:Mf.color,showline:Dx({},Mf.showline,{dflt:!0}),linecolor:Mf.linecolor,linewidth:Mf.linewidth,showgrid:Dx({},Mf.showgrid,{dflt:!0}),gridcolor:Mf.gridcolor,gridwidth:Mf.gridwidth,griddash:Mf.griddash},"plot","from-root"),XJe=WJe({ticklen:Mf.ticklen,tickwidth:Dx({},Mf.tickwidth,{dflt:2}),tickcolor:Mf.tickcolor,showticklabels:Mf.showticklabels,labelalias:Mf.labelalias,showtickprefix:Mf.showtickprefix,tickprefix:Mf.tickprefix,showticksuffix:Mf.showticksuffix,ticksuffix:Mf.ticksuffix,tickfont:Mf.tickfont,tickformat:Mf.tickformat,hoverformat:Mf.hoverformat,layer:Mf.layer},"plot","from-root"),x$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:Dx({},Mf.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},ZJe,XJe),b$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:Mf.ticks,editType:"calc"},ZJe,XJe);YJe.exports={domain:_$t({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:y$t.background},realaxis:x$t,imaginaryaxis:b$t,editType:"calc"}});var $Je=ye((Ibr,JJe)=>{"use strict";var XA=Mr(),w$t=va(),T$t=Vs(),A$t=C_(),S$t=kd().getSubplotData,M$t=r_(),E$t=t_(),k$t=YM(),C$t=ym(),YA=j$(),W$=G$(),KJe=W$.axisNames,L$t=I$t(function(e){return XA.isTypedArray(e)&&(e=Array.from(e)),e.slice().reverse().map(function(t){return-t}).concat([0]).concat(e)},String);function P$t(e,t,r,n){var i=r("bgcolor");n.bgColor=w$t.combine(i,n.paper_bgcolor);var a=S$t(n.fullData,W$.name,n.id),o=n.layoutOut,s;function l(L,_){return r(s+"."+L,_)}for(var u=0;u{"use strict";var R$t=kd().getSubplotCalcData,D$t=Mr().counterRegex,z$t=D$(),e$e=G$(),t$e=e$e.attr,yw=e$e.name,QJe=D$t(yw),r$e={};r$e[t$e]={valType:"subplotid",dflt:yw,editType:"calc"};function F$t(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[yw],i=0;i{"use strict";var O$t=Wo().hovertemplateAttrs,B$t=Wo().texttemplateAttrs,b9=no().extendFlat,N$t=Eg(),d0=Uc(),U$t=vl(),KA=d0.line;a$e.exports={mode:d0.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:d0.text,texttemplate:B$t({editType:"plot"},{keys:["real","imag","text"]}),hovertext:d0.hovertext,line:{color:KA.color,width:KA.width,dash:KA.dash,backoff:KA.backoff,shape:b9({},KA.shape,{values:["linear","spline"]}),smoothing:KA.smoothing,editType:"calc"},connectgaps:d0.connectgaps,marker:d0.marker,cliponaxis:b9({},d0.cliponaxis,{dflt:!1}),textposition:d0.textposition,textfont:d0.textfont,fill:b9({},d0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:N$t(),hoverinfo:b9({},U$t.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:d0.hoveron,hovertemplate:O$t(),selected:d0.selected,unselected:d0.unselected}});var l$e=ye((zbr,s$e)=>{"use strict";var w9=Mr(),JA=lu(),V$t=$p(),H$t=R0(),o$e=J3(),G$t=D0(),j$t=Ig(),W$t=Sm().PTS_LINESONLY,Z$t=Z$();s$e.exports=function(t,r,n,i){function a(l,u){return w9.coerce(t,r,Z$t,l,u)}var o=X$t(t,r,i,a);if(!o){r.visible=!1;return}a("mode",o{"use strict";var u$e=Qa();c$e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.realLabel=u$e.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=u$e.tickText(a.angularAxis,t.imag,!0).text,i}});var v$e=ye((qbr,d$e)=>{"use strict";var h$e=uo(),Y$t=es().BADNUM,K$t=z0(),J$t=km(),$$t=F0(),Q$t=q0().calcMarkerSize;d$e.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].realaxis,o=n[i].imaginaryaxis,s=a.makeCalcdata(r,"real"),l=o.makeCalcdata(r,"imag"),u=r._length,c=new Array(u),f=0;f{"use strict";var eQt=iT(),p$e=es().BADNUM,tQt=P$(),rQt=tQt.smith;g$e.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=0;l{"use strict";var iQt=sT();function nQt(e,t,r,n){var i=iQt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,y$e(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function y$e(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="real",a._hovertitle="imag";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.realLabel=s.realLabel,n.imagLabel=s.imagLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["real","imag","text"]),f.indexOf("real")!==-1&&c(i,n.realLabel),f.indexOf("imag")!==-1&&c(a,n.imagLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}_$e.exports={hoverPoints:nQt,makeHoverPointText:y$e}});var w$e=ye((Nbr,b$e)=>{"use strict";b$e.exports={moduleType:"trace",name:"scattersmith",basePlotModule:n$e(),categories:["smith","symbols","showLegend","scatter-like"],attributes:Z$(),supplyDefaults:l$e(),colorbar:Kd(),formatLabels:f$e(),calc:v$e(),plot:m$e(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:x$e().hoverPoints,selectPoints:lT(),meta:{}}});var A$e=ye((Ubr,T$e)=>{"use strict";T$e.exports=w$e()});var Sv=ye((Vbr,M$e)=>{var A9=bh();function S$e(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}A9(S$e.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var r=this._localCals[e+"-"+t];if(!r&&this.calendars[e]&&(r=new this.calendars[e](t),this._localCals[e+"-"+t]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return r},newDate:function(e,t,r,n,i){return n=(e!=null&&e.year?e.calendar():typeof n=="string"?this.instance(n,i):n)||this.instance(),n.newDate(e,t,r)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,function(r){return e[r]})}},substituteChineseDigits:function(e,t){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(a===0?"":e[a]+t[i])+n,i++,r=Math.floor(r/10)}return n.indexOf(e[1]+t[1])===0&&(n=n.substr(1)),n||e[0]}}});function X$(e,t,r,n){if(this._calendar=e,this._year=t,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function T9(e,t){return e=""+e,"000000".substring(0,t-e.length)+e}A9(X$.prototype,{newDate:function(e,t,r){return this._calendar.newDate(e==null?this:e,t,r)},year:function(e){return arguments.length===0?this._year:this.set(e,"y")},month:function(e){return arguments.length===0?this._month:this.set(e,"m")},day:function(e){return arguments.length===0?this._day:this.set(e,"d")},date:function(e,t,r){if(!this._calendar.isValid(e,t,r))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(Es.local.differentCalendars||Es.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return t===0?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+T9(Math.abs(this.year()),4)+"-"+T9(this.month(),2)+"-"+T9(this.day(),2)}});function Y$(){this.shortYearCutoff="+10"}A9(Y$.prototype,{_validateLevel:0,newDate:function(e,t,r){return e==null?this.today():(e.year&&(this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),r=e.day(),t=e.month(),e=e.year()),new X$(this,e,t,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return t.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+T9(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var r=this._validate(e,t,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(e,t){var r=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,r,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth),r},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(e,t,r){return this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),{}},add:function(e,t,r){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,r),t,r)},_add:function(e,t,r){if(this._validateLevel++,r==="d"||r==="w"){var n=e.toJD()+t*(r==="w"?this.daysInWeek():1),i=e.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=e.year()+(r==="y"?t:0),o=e.monthOfYear()+(r==="m"?t:0),i=e.day(),s=function(c){for(;of-1+c.minMonth;)a++,o-=f,f=c.monthsInYear(a)};r==="y"?(e.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):r==="m"&&(s(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var l=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,l}catch(u){throw this._validateLevel--,u}},_correctAdd:function(e,t,r,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(t[0]===0||e.year()>0!=t[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;t=this._add(e,r*i[0]+a*i[1],i[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,r){this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);var n=r==="y"?t:e.year(),i=r==="m"?t:e.month(),a=r==="d"?t:e.day();return(r==="y"||r==="m")&&(a=Math.min(a,this.daysInMonth(n,i))),e.date(n,i,a)},isValid:function(e,t,r){this._validateLevel++;var n=this.hasYearZero||e!==0;if(n){var i=this.newDate(e,t,this.minDay);n=t>=this.minMonth&&t-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var Es=M$e.exports=new S$e;Es.cdate=X$;Es.baseCalendar=Y$;Es.calendars.gregorian=K$});var E$e=ye(()=>{var J$=bh(),qd=Sv();J$(qd.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"});qd.local=qd.regionalOptions[""];J$(qd.cdate.prototype,{formatDate:function(e,t){return typeof e!="string"&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}});J$(qd.baseCalendar.prototype,{UNIX_EPOCH:qd.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:qd.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,r){if(typeof e!="string"&&(r=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw qd.local.invalidFormat||qd.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat,r=r||{};for(var n=r.dayNamesShort||this.local.dayNamesShort,i=r.dayNames||this.local.dayNames,a=r.monthNumbers||this.local.monthNumbers,o=r.monthNamesShort||this.local.monthNamesShort,s=r.monthNames||this.local.monthNames,l=r.calculateWeek||this.local.calculateWeek,u=function(A,L){for(var _=1;k+_1},c=function(A,L,_,C){var M=""+L;if(u(A,C))for(;M.length<_;)M="0"+M;return M},f=function(A,L,_,C){return u(A)?C[L]:_[L]},h=this,d=function(A){return typeof a=="function"?a.call(h,A,u("m")):b(c("m",A.month(),2))},v=function(A,L){return L?typeof s=="function"?s.call(h,A):s[A.month()-h.minMonth]:typeof o=="function"?o.call(h,A):o[A.month()-h.minMonth]},x=this.local.digits,b=function(A){return r.localNumbers&&x?x(A):A},p="",E=!1,k=0;k1},E=function(F,q){var V=p(F,q),H=[2,3,V?4:2,V?4:2,10,11,20]["oyYJ@!".indexOf(F)+1],X=new RegExp("^-?\\d{1,"+H+"}"),G=t.substring(M).match(X);if(!G)throw(qd.local.missingNumberAt||qd.regionalOptions[""].missingNumberAt).replace(/\{0\}/,M);return M+=G[0].length,parseInt(G[0],10)},k=this,A=function(){if(typeof s=="function"){p("m");var F=s.call(k,t.substring(M));return M+=F.length,F}return E("m")},L=function(F,q,V,H){for(var X=p(F,H)?V:q,G=0;G-1){h=1,d=v;for(var T=this.daysInMonth(f,h);d>T;T=this.daysInMonth(f,h))h++,d-=T}return c>-1?this.fromJD(c):this.newDate(f,h,d)},determineDate:function(e,t,r,n,i){r&&typeof r!="object"&&(i=n,n=r,r=null),typeof n!="string"&&(i=n,n="");var a=this,o=function(s){try{return a.parseDate(n,s,i)}catch(f){}s=s.toLowerCase();for(var l=(s.match(/^c/)&&r?r.newDate():null)||a.today(),u=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,c=u.exec(s);c;)l.add(parseInt(c[1],10),c[2]||"d"),c=u.exec(s);return l};return t=t?t.newDate():null,e=e==null?t:typeof e=="string"?o(e):typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?t:a.today().add(e,"d"):a.newDate(e),e}})});var k$e=ye(()=>{var zx=Sv(),aQt=bh(),$$=zx.instance();function S9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}S9.prototype=new zx.baseCalendar;aQt(S9.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(e,t){if(typeof e=="string"){var r=e.match(sQt);return r?r[0]:""}var n=this._validateYear(e),i=e.month(),a=""+this.toChineseMonth(n,i);return t&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(e){if(typeof e=="string"){var t=e.match(lQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},monthNamesShort:function(e){if(typeof e=="string"){var t=e.match(uQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},parseMonth:function(e,t){e=this._validateYear(e);var r=parseInt(t),n;if(isNaN(r))t[0]==="\u95F0"&&(n=!0,t=t.substring(1)),t[t.length-1]==="\u6708"&&(t=t.substring(0,t.length-1)),r=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(t);else{var i=t[t.length-1];n=i==="i"||i==="I"}var a=this.toMonthIndex(e,r,n);return a},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(e,t){if(e.year&&(e=e.year()),typeof e!="number"||e<1888||e>2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,r){var n=this.intercalaryMonth(e),i=r&&t!==n;if(i||t<1||t>12)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a;return n?!r&&t<=n?a=t-1:a=t:a=t-1,a},toChineseMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e),n=r?12:11;if(t<0||t>n)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var i;return r?t>13;return r},isIntercalaryMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e);return!!r&&r===t},leapYear:function(e){return this.intercalaryMonth(e)!==0},weekOfYear:function(e,t,r){var n=this._validateYear(e,zx.local.invalidyear),i=qx[n-qx[0]],a=i>>9&4095,o=i>>5&15,s=i&31,l;l=$$.newDate(a,o,s),l.add(4-(l.dayOfWeek()||7),"d");var u=this.toJD(e,t,r)-l.toJD();return 1+Math.floor(u/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var r=Fx[e-Fx[0]],n=r>>13,i=n?12:11;if(t>i)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a=r&1<<12-t?30:29;return a},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,a,r,zx.local.invalidDate);e=this._validateYear(n.year()),t=n.month(),r=n.day();var i=this.isIntercalaryMonth(e,t),a=this.toChineseMonth(e,t),o=fQt(e,a,r,i);return $$.toJD(o.year,o.month,o.day)},fromJD:function(e){var t=$$.fromJD(e),r=cQt(t.year(),t.month(),t.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(e){var t=e.match(oQt),r=this._validateYear(+t[1]),n=+t[2],i=!!t[3],a=this.toMonthIndex(r,n,i),o=+t[4];return this.newDate(r,a,o)},add:function(e,t,r){var n=e.year(),i=e.month(),a=this.isIntercalaryMonth(n,i),o=this.toChineseMonth(n,i),s=Object.getPrototypeOf(S9.prototype).add.call(this,e,t,r);if(r==="y"){var l=s.year(),u=s.month(),c=this.isIntercalaryMonth(l,o),f=a&&c?this.toMonthIndex(l,o,!0):this.toMonthIndex(l,o,!1);f!==u&&s.month(f)}return s}});var oQt=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,sQt=/^\d?\d[iI]?/m,lQt=/^闰?十?[一二三四五六七八九]?月/m,uQt=/^闰?十?[一二三四五六七八九]?/m;zx.calendars.chinese=S9;var Fx=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],qx=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function cQt(e,t,r,n){var i,a;if(typeof e=="object")i=e,a=t||{};else{var o=typeof e=="number"&&e>=1888&&e<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s=typeof t=="number"&&t>=1&&t<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l=typeof r=="number"&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:e,month:t,day:r},a=n||{}}var u=qx[i.year-qx[0]],c=i.year<<9|i.month<<5|i.day;a.year=c>=u?i.year:i.year-1,u=qx[a.year-qx[0]];var f=u>>9&4095,h=u>>5&15,d=u&31,v,x=new Date(f,h-1,d),b=new Date(i.year,i.month-1,i.day);v=Math.round((b-x)/(24*3600*1e3));var p=Fx[a.year-Fx[0]],E;for(E=0;E<13;E++){var k=p&1<<12-E?30:29;if(v>13;return!A||E=1888&&e<=2111;if(!s)throw new Error("Lunar year outside range 1888-2111");var l=typeof t=="number"&&t>=1&&t<=12;if(!l)throw new Error("Lunar month outside range 1 - 12");var u=typeof r=="number"&&r>=1&&r<=30;if(!u)throw new Error("Lunar day outside range 1 - 30");var c;typeof n=="object"?(c=!1,a=n):(c=!!n,a=i||{}),o={year:e,month:t,day:r,isIntercalary:c}}var f;f=o.day-1;var h=Fx[o.year-Fx[0]],d=h>>13,v;d&&(o.month>d||o.isIntercalary)?v=o.month:v=o.month-1;for(var x=0;x>9&4095,k=p>>5&15,A=p&31,L=new Date(E,k-1,A+f);return a.year=L.getFullYear(),a.month=1+L.getMonth(),a.day=L.getDate(),a}});var C$e=ye(()=>{var _w=Sv(),hQt=bh();function Q$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}Q$.prototype=new _w.baseCalendar;hQt(Q$.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,_w.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,_w.local.invalidYear||_w.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,_w.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,_w.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});_w.calendars.coptic=Q$});var L$e=ye(()=>{var b1=Sv(),dQt=bh();function eQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}eQ.prototype=new b1.baseCalendar;dQt(eQ.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),!1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),13},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),400},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,b1.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return(n.day()+1)%8},weekDay:function(e,t,r){var n=this.dayOfWeek(e,t,r);return n>=2&&n<=6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return{century:vQt[Math.floor((n.year()-1)/100)+1]||""}},toJD:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return e=n.year()+(n.year()<0?1:0),t=n.month(),r=n.day(),r+(t>1?16:0)+(t>2?(t-2)*32:0)+(e-1)*400+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=(t-1)*400,e+=e>15?16:0;var r=Math.floor(e/32)+1,n=e-(r-1)*32+1;return this.newDate(t<=0?t-1:t,r,n)}});var vQt={20:"Fruitbat",21:"Anchovy"};b1.calendars.discworld=eQ});var P$e=ye(()=>{var xw=Sv(),pQt=bh();function tQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}tQ.prototype=new xw.baseCalendar;pQt(tQ.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,xw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,xw.local.invalidYear||xw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,xw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,xw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});xw.calendars.ethiopian=tQ});var I$e=ye(()=>{var Ox=Sv(),gQt=bh();function rQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}rQ.prototype=new Ox.baseCalendar;gQt(rQ.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return e=e<0?e+1:e,M9(e*7+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return e=t.year(),this.toJD(e===-1?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,Ox.local.invalidMonth),t===12&&this.leapYear(e)||t===8&&M9(this.daysInYear(e),10)===5?30:t===9&&M9(this.daysInYear(e),10)===3?29:this.daysPerMonth[t-1]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);return{yearType:(this.leapYear(n)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(n)%10-3]}},toJD:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e<=0?e+1:e,a=this.jdEpoch+this._delay1(i)+this._delay2(i)+r+1;if(t<7){for(var o=7;o<=this.monthsInYear(e);o++)a+=this.daysInMonth(e,o);for(var o=1;o=this.toJD(t===-1?1:t+1,7,1);)t++;for(var r=ethis.toJD(t,r,this.daysInMonth(t,r));)r++;var n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});function M9(e,t){return e-t*Math.floor(e/t)}Ox.calendars.hebrew=rQ});var R$e=ye(()=>{var oC=Sv(),mQt=bh();function iQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}iQ.prototype=new oC.baseCalendar;mQt(iQ.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,oC.local.invalidYear);return(t.year()*11+14)%30<11},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,oC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,oC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e=e<=0?e+1:e,r+Math.ceil(29.5*(t-1))+(e-1)*354+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var r=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});oC.calendars.islamic=iQ});var D$e=ye(()=>{var sC=Sv(),yQt=bh();function nQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}nQ.prototype=new sC.baseCalendar;yQt(nQ.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,sC.local.invalidYear),r=t.year()<0?t.year()+1:t.year();return r%4===0},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,sC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,sC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+r-1524.5},fromJD:function(e){var t=Math.floor(e+.5),r=t+1524,n=Math.floor((r-122.1)/365.25),i=Math.floor(365.25*n),a=Math.floor((r-i)/30.6001),o=a-Math.floor(a<14?1:13),s=n-Math.floor(o>2?4716:4715),l=r-i-Math.floor(30.6001*a);return s<=0&&s--,this.newDate(s,o,l)}});sC.calendars.julian=nQ});var F$e=ye(()=>{var ug=Sv(),_Qt=bh();function oQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}oQ.prototype=new ug.baseCalendar;_Qt(oQ.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),!1},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear);e=t.year();var r=Math.floor(e/400);e=e%400,e+=e<0?400:0;var n=Math.floor(e/20);return r+"."+n+"."+e%20},forYear:function(e){if(e=e.split("."),e.length<3)throw"Invalid Mayan year";for(var t=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";t=t*20+n}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),18},weekOfYear:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,ug.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()},weekDay:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),!0},extraInfo:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate),i=n.toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){e-=this.jdEpoch;var t=aQ(e+8+17*20,365);return[Math.floor(t/20)+1,aQ(t,20)]},_toTzolkin:function(e){return e-=this.jdEpoch,[z$e(e+20,20),z$e(e+4,13)]},toJD:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()+n.month()*20+n.year()*360+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e=e%360,e+=e<0?360:0;var r=Math.floor(e/20),n=e%20;return this.newDate(t,r,n)}});function aQ(e,t){return e-t*Math.floor(e/t)}function z$e(e,t){return aQ(e-1,t)+1}ug.calendars.mayan=oQ});var O$e=ye(()=>{var bw=Sv(),xQt=bh();function sQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}sQ.prototype=new bw.baseCalendar;var q$e=bw.instance("gregorian");xQt(sQ.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,bw.local.invalidYear||bw.regionalOptions[""].invalidYear);return q$e.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,bw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,bw.local.invalidMonth),i=n.year();i<0&&i++;for(var a=n.day(),o=1;o=this.toJD(t+1,1,1);)t++;for(var r=e-Math.floor(this.toJD(t,1,1)+.5)+1,n=1;r>this.daysInMonth(t,n);)r-=this.daysInMonth(t,n),n++;return this.newDate(t,n,r)}});bw.calendars.nanakshahi=sQ});var B$e=ye(()=>{var ww=Sv(),bQt=bh();function lQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}lQ.prototype=new ww.baseCalendar;bQt(lQ.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ww.local.invalidYear);if(e=t.year(),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,ww.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined"?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},toJD:function(e,t,r){var n=this._validate(e,t,r,ww.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=ww.instance(),a=0,o=t,s=e;this._createMissingCalendarData(e);var l=e-(o>9||o===9&&r>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(t!==9&&(a=r,o--);o!==9;)o<=0&&(o=12,s--),a+=this.NEPALI_CALENDAR_DATA[s][o],o--;return t===9?(a+=r-this.NEPALI_CALENDAR_DATA[s][0],a<0&&(a+=i.daysInYear(l))):a+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(l,1,1).add(a,"d").toJD()},fromJD:function(e){var t=ww.instance(),r=t.fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)o++,o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var r=e-1;r{var $A=Sv(),wQt=bh();function E9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}E9.prototype=new $A.baseCalendar;wQt(E9.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Ch\xE6harshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Ch\xE6","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,$A.local.invalidYear);return((t.year()-(t.year()>0?474:473))%2820+474+38)*682%2816<682},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-((n.dayOfWeek()+1)%7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,$A.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,$A.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e-(e>=0?474:473),a=474+uQ(i,2820);return r+(t<=7?(t-1)*31:(t-1)*30+6)+Math.floor((a*682-110)/2816)+(a-1)*365+Math.floor(i/2820)*1029983+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=e-this.toJD(475,1,1),r=Math.floor(t/1029983),n=uQ(t,1029983),i=2820;if(n!==1029982){var a=Math.floor(n/366),o=uQ(n,366);i=Math.floor((2134*a+2816*o+2815)/1028522)+a+1}var s=i+2820*r+474;s=s<=0?s-1:s;var l=e-this.toJD(s,1,1)+1,u=l<=186?Math.ceil(l/31):Math.ceil((l-6)/30),c=e-this.toJD(s,u,1)+1;return this.newDate(s,u,c)}});function uQ(e,t){return e-t*Math.floor(e/t)}$A.calendars.persian=E9;$A.calendars.jalali=E9});var U$e=ye(()=>{var Tw=Sv(),TQt=bh(),k9=Tw.instance();function cQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}cQ.prototype=new Tw.baseCalendar;TQt(cQ.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Tw.local.invalidYear),r=this._t2gYear(t.year());return k9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Tw.local.invalidYear),i=this._t2gYear(n.year());return k9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Tw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Tw.local.invalidDate),i=this._t2gYear(n.year());return k9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=k9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}});Tw.calendars.taiwan=cQ});var V$e=ye(()=>{var Aw=Sv(),AQt=bh(),C9=Aw.instance();function fQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}fQ.prototype=new Aw.baseCalendar;AQt(fQ.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Aw.local.invalidYear),r=this._t2gYear(t.year());return C9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Aw.local.invalidYear),i=this._t2gYear(n.year());return C9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Aw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Aw.local.invalidDate),i=this._t2gYear(n.year());return C9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=C9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}});Aw.calendars.thai=fQ});var H$e=ye(()=>{var Sw=Sv(),SQt=bh();function hQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}hQ.prototype=new Sw.baseCalendar;SQt(hQ.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Sw.local.invalidYear);return this.daysInYear(t.year())===355},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,r=1;r<=12;r++)t+=this.daysInMonth(e,r);return t},daysInMonth:function(e,t){for(var r=this._validate(e,t,this.minDay,Sw.local.invalidMonth),n=r.toJD()-24e5+.5,i=0,a=0;an)return Bx[i]-Bx[i-1];i++}return 30},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,Sw.local.invalidDate),i=12*(n.year()-1)+n.month()-15292,a=n.day()+Bx[i-1]-1;return a+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,r=0,n=0;nt);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),o=a+1,s=i-12*a,l=t-Bx[r-1]+1;return this.newDate(o,s,l)},isValid:function(e,t,r){var n=Sw.baseCalendar.prototype.isValid.apply(this,arguments);return n&&(e=e.year!=null?e.year:e,n=e>=1276&&e<=1500),n},_validate:function(e,t,r,n){var i=Sw.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw n.replace(/\{0\}/,this.local.name);return i}});Sw.calendars.ummalqura=hQ;var Bx=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]});var j$e=ye((_2r,G$e)=>{"use strict";G$e.exports=Sv();E$e();k$e();C$e();L$e();P$e();I$e();R$e();D$e();F$e();O$e();B$e();N$e();U$e();V$e();H$e()});var $$e=ye((x2r,J$e)=>{"use strict";var Z$e=j$e(),lC=Mr(),X$e=es(),MQt=X$e.EPOCHJD,EQt=X$e.ONEDAY,pQ={valType:"enumerated",values:lC.sortObjectKeys(Z$e.calendars),editType:"calc",dflt:"gregorian"},Y$e=function(e,t,r,n){var i={};return i[r]=pQ,lC.coerce(e,t,i,r,n)},kQt=function(e,t,r,n){for(var i=0;i{"use strict";Q$e.exports=$$e()});var DQt=ye((w2r,rQe)=>{var tQe=Wme();tQe.register([Xye(),z1e(),Z_e(),dxe(),Mxe(),wbe(),zbe(),b2e(),K2e(),Pwe(),m3e(),j4e(),REe(),TCe(),c6e(),N6e(),uLe(),RPe(),$Pe(),gIe(),kIe(),VIe(),i8e(),_8e(),WRe(),hDe(),EOe(),EBe(),qNe(),lUe(),mVe(),IVe(),rHe(),dGe(),kGe(),$Ge(),oWe(),LWe(),fZe(),RXe(),rYe(),TYe(),YYe(),uKe(),sJe(),SJe(),GJe(),A$e(),eQe()]);rQe.exports=tQe});return DQt();})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! + * pad-left + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT license. + */ +/*! + * repeat-string + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! Bundled license information: + +native-promise-only/lib/npo.src.js: + (*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org + *) + +polybooljs/index.js: + (* + * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc + * @license MIT + * @preserve Project Home: https://github.com/voidqk/polybooljs + *) + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +assert/build/internal/util/comparisons.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +maplibre-gl/dist/maplibre-gl.js: + (** + * MapLibre GL JS + * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.7.1/LICENSE.txt + *) +*/ + +window.Plotly = Plotly; +return Plotly; +}));
+ + diff --git a/pixi.lock b/pixi.lock index bada652ec8..a4e9273c82 100644 --- a/pixi.lock +++ b/pixi.lock @@ -218,6 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -476,6 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -718,6 +720,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -952,6 +955,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -1239,6 +1243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -1510,6 +1515,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -1764,6 +1770,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -2010,6 +2017,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -2286,6 +2294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -2549,6 +2558,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -2796,6 +2806,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -3035,6 +3046,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -3316,6 +3328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -3574,6 +3587,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -3815,6 +3829,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -4048,6 +4063,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -4324,6 +4340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -4582,6 +4599,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -4823,6 +4841,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -5056,6 +5075,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -5331,6 +5351,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -5590,6 +5611,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -5832,6 +5854,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -6066,6 +6089,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -6341,6 +6365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -6636,6 +6661,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -6900,6 +6926,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -7139,6 +7166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh5737063_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -7408,6 +7436,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -9362,8 +9391,8 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev184+gd0fe6233c.d20250721 - sha256: e41722d0b5a33a03690f6ef1575e822225b42690f6110d3ea72ede8f8939d5a8 + version: 0.7.1.dev535+g18c403c1b.d20250723 + sha256: f1c50ee4113d5524d34abe12998995f1f0ce30bb377618f3b7badc667f812cb1 requires_dist: - dags>=0.4.1 - ipywidgets @@ -17358,6 +17387,17 @@ packages: requires_dist: - pyreadline3 ; sys_platform == 'win32' requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda + sha256: 090023bddd40d83468ef86573976af8c514f64119b2bd814ee63a838a542720a + md5: 959484a66b4b76befcddc4fa97c95567 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=hash-mapping + size: 37554 + timestamp: 1733589854804 - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 md5: 9190dd0a23d925f7602f9628b3aed511 diff --git a/pyproject.toml b/pyproject.toml index 0f6d1b2913..524954a5ba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -119,6 +119,7 @@ pytest-xdist = "*" python = ">=3.11,<3.14" pyyaml = "*" snakeviz = ">=2.2.2" +tabulate = "*" toml = "*" # Development Dependencies (pypi) @@ -192,6 +193,9 @@ tests-jax = "pytest --backend=jax" [tool.pixi.feature.mypy.tasks] mypy = "mypy --ignore-missing-imports" +[tool.pixi.feature.docs.tasks] +docs = "sphinx-build -T -b html docs docs/_build/html" + # Environments # -------------------------------------------------------------------------------------- diff --git a/interface-prototype.ipynb b/sandbox/interface-playground.ipynb similarity index 59% rename from interface-prototype.ipynb rename to sandbox/interface-playground.ipynb index 45699302ec..d8214d2c9b 100644 --- a/interface-prototype.ipynb +++ b/sandbox/interface-playground.ipynb @@ -6,14 +6,12 @@ "metadata": {}, "outputs": [], "source": [ - "from pathlib import Path\n", - "\n", "import pandas as pd\n", "\n", - "from ttsim import main\n", - "from ttsim.tt_dag_elements import ScalarParam\n", + "from gettsim import InputData, MainTarget, TTTargets, main\n", "\n", - "GETTSIM_ROOT = Path.cwd() / \"src\" / \"_gettsim\"" + "# Please ignore the import location for now; will be from gettsim in the future\n", + "from ttsim.tt_dag_elements import ScalarParam" ] }, { @@ -23,8 +21,7 @@ "# Prototypes of GETTSIM's new interface\n", "\n", "[GEP 7](https://gettsim--855.org.readthedocs.build/en/855/geps/gep-07.html) discusses\n", - "the principles of the new interface. This notebook demonstrates two candidates for\n", - "GETTIM's new interface. We would like to get your feedback on which one you prefer.\n", + "the principles of the new interface. This notebook allows you to play around with it.\n", "\n", "In this notebook, we compute income taxes and social security contributions for example\n", "data.\n", @@ -34,10 +31,11 @@ "This notebook requires to have GETTSIM installed in its current development version.\n", "\n", "To do this:\n", + "\n", "1. Clone the GETTSIM repository.\n", - "2. Install the [pixi package manager](https://pixi.sh/latest/) on your system.\n", - "3. `cd` into the GETTSIM repository and run `git checkout inputs-for-main`.\n", - "4. Run `pixi run jupyter-notebook` and select the `interface-prototype.ipynb` notebook.\n", + "2. [Install](https://pixi.sh/latest/#installation) the pixi package manager on your system.\n", + "3. In your shell, navigate (cd) to the GETTSIM repository and run `git checkout gep-07`.\n", + "4. Start the notebook with `pixi run jupyter-notebook` and open `interface-playground.ipynb`.\n", "\n", "If you have trouble with the setup, please reach out." ] @@ -46,10 +44,106 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Creating the Data\n", + "## Creating the Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first step in GETTSIM's new workflow is to define the targets you're interested in.\n", + "The key sequences of the nested dictionary below are the paths GETTSIM will use as\n", + "targets. For instance, via the path `einkommensteuer` and `betrag_m_sn`, we request the\n", + "amount of income tax to be paid monthly at the Steuernummer level. *Note: Of course, the\n", + "income tax is paid annually, but GETTSIM will do the conversion for you.*\n", "\n", - "First, we create some example data. Here, we use a pandas DataFrame with column names\n", - "that are different from the ones GETTSIM expects." + "The values on the lowest level of the dictionaries (called leaves) will be used as the\n", + "column names of the resulting DataFrame. Here, `income_tax_m` will be the name of the\n", + "column containing the income tax results.\n", + "\n", + "In this example, we are interested in the income tax and the social insurance\n", + "contributions paid when being in regular employment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "TT_TARGETS = {\n", + " \"einkommensteuer\": {\"betrag_m_sn\": \"income_tax_m\"},\n", + " \"sozialversicherung\": {\n", + " \"pflege\": {\n", + " \"beitrag\": {\n", + " \"betrag_versicherter_m\": \"long_term_care_insurance_contribution_m\"\n", + " }\n", + " },\n", + " \"kranken\": {\n", + " \"beitrag\": {\"betrag_versicherter_m\": \"health_insurance_contribution_m\"}\n", + " },\n", + " \"rente\": {\n", + " \"beitrag\": {\"betrag_versicherter_m\": \"pension_insurance_contribution_m\"}\n", + " },\n", + " \"arbeitslosen\": {\n", + " \"beitrag\": {\n", + " \"betrag_versicherter_m\": \"unemployment_insurance_contribution_m\"\n", + " }\n", + " },\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we need to find out which input data we actually need to calculate the targets we\n", + "are interested in. We can do this by specifying a template as the `main_target` of\n", + "`gettsim.main`.\n", + "\n", + "Because we are interested social insurance contributions paid when being in regular\n", + "employment, we are not interested in retirees or households dependent on social\n", + "assistance. We can override these transfers when requesting the template. This removes\n", + "the input data needed to compute these transfers from the template." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "main(\n", + " main_target=MainTarget.templates.input_data_dtypes,\n", + " policy_date_str=\"2025-01-01\",\n", + " tt_targets=TTTargets(\n", + " tree=TT_TARGETS,\n", + " ),\n", + " input_data=InputData.tree(\n", + " {\n", + " \"p_id\": pd.Series([0]),\n", + " \"sozialversicherung\": {\n", + " \"rente\": {\n", + " \"altersrente\": {\"betrag_m\": pd.Series([0])},\n", + " },\n", + " \"arbeitslosen\": {\"betrag_m\": pd.Series([0])},\n", + " },\n", + " \"wohngeld\": {\"betrag_m_wthh\": pd.Series([0])},\n", + " \"kinderzuschlag\": {\"betrag_m_bg\": pd.Series([0])},\n", + " \"elterngeld\": {\"betrag_m\": pd.Series([0])},\n", + " \"arbeitslosengeld_2\": {\"betrag_m_bg\": pd.Series([0])},\n", + " }\n", + " ),\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we create some example data. Here, we use a pandas DataFrame with column names that are different from the ones GETTSIM expects." ] }, { @@ -58,7 +152,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Some example data as a standard pandas DataFrame\n", "DATA = pd.DataFrame(\n", " {\n", " \"age\": [30, 30, 10],\n", @@ -75,7 +168,6 @@ " \"income_from_forest_and_agriculture\": [0, 0, 0],\n", " \"income_from_capital\": [500, 0, 0],\n", " \"income_from_other_sources\": [0, 0, 0],\n", - " \"pension_income\": [0, 0, 0],\n", " \"contribution_to_private_pension_insurance\": [0, 0, 0],\n", " \"childcare_expenses\": [0, 0, 0],\n", " \"person_that_pays_childcare_expenses\": [-1, -1, 0],\n", @@ -90,12 +182,6 @@ " \"parent_id_2\": [-1, -1, 1],\n", " \"in_training\": [False, False, False],\n", " \"id_recipient_child_allowance\": [-1, -1, 0],\n", - " \"wohngeld\": [0, 0, 0],\n", - " \"kinderzuschlag\": [0, 0, 0],\n", - " \"elterngeld\": [0, 0, 0],\n", - " \"alg1\": [0, 0, 0],\n", - " \"old_age_pension_income\": [0, 0, 0],\n", - " \"bürgergeld\": [0, 0, 0],\n", " }\n", ")" ] @@ -104,14 +190,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The first step in GETTSIM's new workflow is to define the targets you're interested in.\n", - "The keys of the nested dictionary below are the paths GETTSIM will use as targets. For\n", - "instance, via the keys `einkommensteuer` and `betrag_m_sn`, we request the income tax as\n", - "a target.\n", + "Next, we define a mapping from GETTSIM's expected input structure to your data. Note\n", + "that the paths are the union of the input_data for `main` and the result from calling it\n", + "above. Just the leaves are different; we have replaced the dtype hints by the column\n", + "names in the data. \n", "\n", - "The values on the lowest level of the dictionaries will be used as the column names of\n", - "the resulting DataFrame. Here, `income_tax_y` will be the name of the column containing\n", - "the income tax results." + "In practice, you would probably want to save the template above to disk (e.g. as a yaml\n", + "file) and edit it there. Then you can read in the file and use its content as the\n", + "mapper." ] }, { @@ -120,45 +206,7 @@ "metadata": {}, "outputs": [], "source": [ - "TARGETS_TREE = {\n", - " \"einkommensteuer\": {\"betrag_y_sn\": \"income_tax_y\"},\n", - " \"sozialversicherung\": {\n", - " \"pflege\": {\n", - " \"beitrag\": {\n", - " \"betrag_versicherter_m\": \"long_term_care_insurance_contribution_m\"\n", - " }\n", - " },\n", - " \"kranken\": {\n", - " \"beitrag\": {\"betrag_versicherter_m\": \"health_insurance_contribution_m\"}\n", - " },\n", - " \"rente\": {\n", - " \"beitrag\": {\"betrag_versicherter_m\": \"pension_insurance_contribution_m\"}\n", - " },\n", - " \"arbeitslosen\": {\n", - " \"beitrag\": {\n", - " \"betrag_versicherter_m\": \"unemployment_insurance_contribution_m\"\n", - " }\n", - " },\n", - " },\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we define a mapping from GETTSIM's expected input structure to your data. As\n", - "above, we map the paths GETTSIM uses to the columns of your data. (We will provide\n", - "templates for this, so you won't have to type the paths manually.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "TREE_TO_DF_MAPPER = {\n", + "MAPPER = {\n", " \"alter\": \"age\",\n", " \"arbeitsstunden_w\": \"working_hours\",\n", " \"behinderungsgrad\": \"disability_grade\",\n", @@ -168,7 +216,7 @@ " \"wohnort_ost\": \"east_germany\",\n", " \"einkommensteuer\": {\n", " \"einkünfte\": {\n", - " \"ist_selbstständig\": \"self_employed\",\n", + " \"ist_hauptberuflich_selbstständig\": \"self_employed\",\n", " \"aus_gewerbebetrieb\": {\"betrag_m\": \"income_from_self_employment\"},\n", " \"aus_vermietung_und_verpachtung\": {\"betrag_m\": \"income_from_rent\"},\n", " \"aus_nichtselbstständiger_arbeit\": {\n", @@ -181,7 +229,11 @@ " \"aus_kapitalvermögen\": {\"kapitalerträge_m\": \"income_from_capital\"},\n", " \"sonstige\": {\n", " \"alle_weiteren_m\": \"income_from_other_sources\",\n", - " \"betrag_m\": \"pension_income\",\n", + " \"rente\": {\n", + " \"betriebliche_altersvorsorge_m\": 0.0,\n", + " \"geförderte_private_vorsorge_m\": 0.0,\n", + " \"sonstige_private_vorsorge_m\": 0.0,\n", + " },\n", " },\n", " },\n", " \"abzüge\": {\n", @@ -192,11 +244,14 @@ " \"gemeinsam_veranlagt\": \"joint_taxation\",\n", " },\n", " \"sozialversicherung\": {\n", - " \"arbeitslosen\": {\"betrag_m\": \"alg1\"},\n", + " \"arbeitslosen\": {\"betrag_m\": 0.0},\n", " \"rente\": {\n", - " \"private_rente_betrag_m\": \"amount_private_pension_income\",\n", + " \"jahr_renteneintritt\": 0,\n", " \"altersrente\": {\n", - " \"betrag_m\": \"old_age_pension_income\",\n", + " \"betrag_m\": 0.0,\n", + " },\n", + " \"erwerbsminderung\": {\n", + " \"betrag_m\": 0.0,\n", " },\n", " },\n", " \"kranken\": {\n", @@ -212,16 +267,16 @@ " \"p_id_elternteil_2\": \"parent_id_2\",\n", " },\n", " \"wohngeld\": {\n", - " \"betrag_m_wthh\": \"wohngeld\",\n", + " \"betrag_m_wthh\": 0.0,\n", " },\n", " \"kinderzuschlag\": {\n", - " \"betrag_m_bg\": \"kinderzuschlag\",\n", + " \"betrag_m_bg\": 0.0,\n", " },\n", " \"elterngeld\": {\n", - " \"betrag_m\": \"elterngeld\",\n", + " \"betrag_m\": 0.0,\n", " },\n", " \"arbeitslosengeld_2\": {\n", - " \"betrag_m_bg\": \"bürgergeld\",\n", + " \"betrag_m_bg\": 0.0,\n", " },\n", " \"kindergeld\": {\n", " \"in_ausbildung\": \"in_training\",\n", @@ -230,15 +285,37 @@ "}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Note: When writing and reading the template to your disk, don't forget to allow for\n", + "unicode characters. This is important because many transfers have Umlaute in their\n", + "names. An example could look like this:\n", + "\n", + "```python\n", + "import yaml\n", + "\n", + "# Write the template to your disk...\n", + "with PATH_FOR_TEMPLATE.open(\"w\") as f:\n", + " yaml.dump(TEMPLATE, f, allow_unicode=True)\n", + "\n", + "# Edit the leafs in the template and then read it back in\n", + "with PATH_FOR_TEMPLATE.open(\"r\") as f:\n", + " MAPPER = {yaml.load(f, allow_unicode=True)}\n", + "```" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using GETTSIM's interface\n", "\n", - "Just as for taxes and transfers, GETTSIM's infrastructure is a DAG. GETTSIM's interface\n", - "is a function that allows you to interact with this DAG. This comes with the\n", - "advantages GETTSIM's users already know from the taxes and transfers part:\n", + "Just as for taxes and transfers, GETTSIM's `main` function is powered by a DAG. This\n", + "comes with the advantages that seasoned GETTSIM users already know from the taxes and\n", + "transfers part:\n", "- Users can select any part of the DAG as a target. This means that users can access\n", " any intermediate objects.\n", "- Users can feed any part of the DAG as input. This means that users can overwrite\n", @@ -251,15 +328,7 @@ "data. In a second example, we manipulate the policy environment to see why the interface\n", "DAG is useful.\n", "\n", - "### One-stop-shop: Computing taxes and transfers with GETTSIM\n", - "\n", - "Now we can compute taxes and transfers. For this, we need to call the `main` function.\n", - "`main` takes two input arguments:\n", - "- `inputs`: a nested dictionary of the inputs you're passing to GETTSIM.\n", - "- `output_names`: a list of the outputs you want to get from GETTSIM.\n", - "\n", - "`inputs` can be specified as a nested dictionary (see below) or as strings, separating\n", - "nesting levels with `__` (e.g. `\"input_data__df_with_mapper_df\"`).\n", + "### Simple computation of taxes and transfers\n", "\n", "Let's calculate taxes and transfers first:" ] @@ -271,53 +340,20 @@ "outputs": [], "source": [ "result = main(\n", - " inputs={\n", - " \"policy_date_str\": \"2025-01-01\",\n", - " \"input_data\": {\n", - " \"df_and_mapper\": {\n", - " \"df\": DATA,\n", - " \"mapper\": TREE_TO_DF_MAPPER,\n", - " },\n", - " },\n", - " \"targets\": {\n", - " \"tree\": TARGETS_TREE,\n", - " },\n", - " \"orig_policy_objects\": {\n", - " \"root\": GETTSIM_ROOT\n", - " }, # don't worry about this, will be gone in the future\n", - " },\n", - " output_names=[\"results__df_with_mapper\"],\n", - ")[\"results__df_with_mapper\"]\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.df_and_mapper(\n", + " df=DATA,\n", + " mapper=MAPPER,\n", + " ),\n", + " main_target=MainTarget.results.df_with_mapper,\n", + " tt_targets=TTTargets(\n", + " tree=TT_TARGETS,\n", + " ),\n", + " include_warn_nodes=False,\n", + ")\n", "result.T" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Input data can also be specified directly as a tree:\n", - "\n", - "```python\n", - "result = main(\n", - " inputs={\n", - " \"input_data\": {\n", - " \"tree\": INPUT_TREE,\n", - " },\n", - " ...\n", - "```\n", - "\n", - "Or as a DataFrame with MultiIndex columns:\n", - "\n", - "```python\n", - "result = main(\n", - " inputs={\n", - " \"input_data\": {\n", - " \"df_with_nested_columns\": DF_WITH_NESTED_COLUMNS,\n", - " },\n", - " ...\n", - "```" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -335,14 +371,9 @@ "outputs": [], "source": [ "policy_environment = main(\n", - " inputs={\n", - " \"policy_date_str\": \"2025-01-01\",\n", - " \"orig_policy_objects\": {\n", - " \"root\": GETTSIM_ROOT\n", - " }, # don't worry about this, will be gone in the future\n", - " },\n", - " output_names=[\"policy_environment\"],\n", - ")[\"policy_environment\"]" + " policy_date_str=\"2025-01-01\",\n", + " main_target=MainTarget.policy_environment,\n", + ")" ] }, { @@ -368,8 +399,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We replace the `ScalarParam` object with a new one. Then, we add this parameter to the\n", - "new policy environment." + "We get the current `value` of the `ScalarParam` out. We then inject a new `ScalarParam` object into the same place of `policy_environment`:" ] }, { @@ -381,28 +411,16 @@ "old_beitragssatz = policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\n", " \"beitragssatz\"\n", "]\n", - "new_beitragssatz = ScalarParam( # don't worry too much about this, will get easier\n", - " leaf_name=old_beitragssatz.leaf_name,\n", - " start_date=old_beitragssatz.start_date,\n", - " end_date=old_beitragssatz.end_date,\n", - " value=old_beitragssatz.value + 0.01,\n", - " unit=old_beitragssatz.unit,\n", - " description=old_beitragssatz.description,\n", - " name=old_beitragssatz.name,\n", - " reference_period=old_beitragssatz.reference_period,\n", - ")\n", - "\n", - "modified_policy_environment = policy_environment.copy()\n", - "modified_policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\n", - " \"beitragssatz\"\n", - "] = new_beitragssatz" + "policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"] = (\n", + " ScalarParam(value=old_beitragssatz.value + 0.01)\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now we can compute taxes and transfers using the modified policy environment." + "Now we can compute taxes and transfers with the increased contribution rate:" ] }, { @@ -412,21 +430,18 @@ "outputs": [], "source": [ "result = main(\n", - " inputs={\n", - " \"policy_date_str\": \"2025-01-01\",\n", - " \"input_data\": {\n", - " \"df_and_mapper\": {\n", - " \"df\": DATA,\n", - " \"mapper\": TREE_TO_DF_MAPPER,\n", - " },\n", - " },\n", - " \"targets\": {\n", - " \"tree\": TARGETS_TREE,\n", - " },\n", - " \"policy_environment\": policy_environment,\n", - " },\n", - " output_names=[\"results__df_with_mapper\"],\n", - ")[\"results__df_with_mapper\"]\n", + " main_target=MainTarget.results.df_with_mapper,\n", + " policy_date_str=\"2025-01-01\",\n", + " policy_environment=policy_environment,\n", + " input_data=InputData.df_and_mapper(\n", + " df=DATA,\n", + " mapper=MAPPER,\n", + " ),\n", + " tt_targets=TTTargets(\n", + " tree=TT_TARGETS,\n", + " ),\n", + " include_warn_nodes=False,\n", + ")\n", "result.T" ] }, diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py index 211d6f85ba..1c07cfca7d 100644 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ b/src/ttsim/interface_dag_elements/warn_if.py @@ -50,7 +50,7 @@ def functions_and_data_columns_overlap( that appears in the list above. Turn off warnings by setting `include_warn_nodes=False` in `main`. - If you want to be selective about warnings, include these + If you want to be selective about warnings, include these among the `main_targets`. """, ) @@ -66,7 +66,7 @@ def functions_and_data_columns_overlap( each column that appears in the list above. Turn off warnings by setting `include_warn_nodes=False` in `main`. - If you want to be selective about warnings, include these + If you want to be selective about warnings, include these among the `main_targets`. """, ) From ad1d40e347f11a2f15c45cd8a01aaea8b5577097 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Wed, 23 Jul 2025 19:17:35 +0200 Subject: [PATCH 099/109] Remove explicitly adding group ID to template, see issue #1051. --- src/ttsim/interface_dag_elements/templates.py | 7 ------- tests/ttsim/interface_dag_elements/test_templates.py | 1 - 2 files changed, 8 deletions(-) diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py index 0c8c98cc6d..1afad23030 100644 --- a/src/ttsim/interface_dag_elements/templates.py +++ b/src/ttsim/interface_dag_elements/templates.py @@ -94,13 +94,6 @@ def input_data_dtypes( policy_inputs[base_name].data_type ) - # Also add the ID of the grouped variable if grouping exists - grouping = match.group("grouping") - if grouping: - grouping_id = f"{grouping}_id" - if grouping_id not in cleaned_qname_dtype_tree: - cleaned_qname_dtype_tree[grouping_id] = "IntColumn" - elif qn in policy_inputs: # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | # IntColumn | BoolColumn' with the actual dtype found in the policy diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py index bb61ab4881..6e1ae43cfb 100644 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ b/tests/ttsim/interface_dag_elements/test_templates.py @@ -213,5 +213,4 @@ def test_template_all_outputs_no_input_for_root_of_derived_function(backend, xnp assert actual == { "a": {"inp2": "FloatColumn"}, "inp1": "IntColumn", - "kin_id": "IntColumn", } From be0530175204f25b44fb1d110f3ae051af10a2a5 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Thu, 24 Jul 2025 14:35:01 +0200 Subject: [PATCH 100/109] Continue. --- .../modify_taxes_and_transfers.ipynb | 457 ++++++++++++++++-- 1 file changed, 423 insertions(+), 34 deletions(-) diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modify_taxes_and_transfers.ipynb index 54e7a5f12a..fbf65f1e75 100644 --- a/docs/how_to_guides/modify_taxes_and_transfers.ipynb +++ b/docs/how_to_guides/modify_taxes_and_transfers.ipynb @@ -9,8 +9,10 @@ "source": [ "from pathlib import Path\n", "\n", + "import numpy as np\n", + "\n", "from gettsim import main\n", - "from ttsim import MainTarget\n", + "from ttsim import InputData, MainTarget, copy_environment\n", "\n", "GETTSIM_ROOT = Path.cwd().parent.parent / \"src\" / \"_gettsim\"" ] @@ -27,7 +29,8 @@ "changes of certain parameters of the tax and transfer system, to the introduction of\n", "large-scale reforms, is a common use case.\n", "\n", - "This tutorial showcases how to modify taxes and transfers when using GETTSIM.\n", + "This tutorial showcases how to modify the calculation of taxes and transfers when using\n", + "GETTSIM.\n", "\n", "Here, we focus on small reforms to the means-tested social welfare benefits for\n", "the unemployed (German: Bürgergeld; until 2022: Arbeitslosengeld II). We pick this\n", @@ -42,21 +45,36 @@ "source": [ "## Status Quo\n", "\n", - "The heart of GETTSIM's tax and transfer implementation is the `policy_date`-specific\n", - "`policy_environment`. The `policy_environment` holds all the parameters and functions\n", - "necessary to compute the taxes and transfers for a given policy date. The\n", - "`policy_environment` is a nested dictionary with strings as keys and `TTSIM-objects`\n", - "as values.\n", + "Before modifying taxes and transfers, it's important to understand how GETTSIM\n", + "represents the current tax and transfer system. The core of GETTSIM's implementation is\n", + "the **policy environment** - a comprehensive data structure that contains everything\n", + "needed to compute taxes and transfers for a specific date.\n", + "\n", + "### What is a Policy Environment?\n", + "\n", + "A policy environment is a nested dictionary that holds all the parameters and functions\n", + "needed to calculate taxes and transfers for a given policy date. Think of it as a\n", + "complete snapshot of the tax and transfer system at a particular point in time.\n", + "\n", + "### The Three Types of Objects\n", + "\n", + "The policy environment contains three main categories of objects:\n", + "\n", + "1. **Column Objects** (`ColumnObjects`): These work with data columns - either input\n", + " data you provide or results computed by previous functions. They handle the actual\n", + " calculations and data processing.\n", "\n", - "The `policy_environment` has 3 broad types of objects (with many subclasses):\n", - "- Objects that operate on columns of data, either provided by the user or computed by\n", - " previous functions. We call those `ColumnObjects`.\n", - "- Objects that contain parameters. We call those `ParamObject`s.\n", - "- Objects that process parameters in a way such that they can be used by the\n", - " `ColumnObjects`. We call those `ParamFunction`s.\n", + "2. **Parameter Objects** (`ParamObjects`): These store the parameters and constants\n", + " used in calculations, such as tax rates, benefit amounts, or thresholds.\n", "\n", - "The first step when modifying taxes and transfers is to create the current policy\n", - "environment." + "3. **Parameter Functions** (`ParamFunctions`): These process and prepare parameters\n", + " so they can be used by the column objects. They handle parameter transformations\n", + " and validations.\n", + "\n", + "### Getting Started\n", + "\n", + "The first step in modifying taxes and transfers is to create the base policy\n", + "environment for the date you want to work with." ] }, { @@ -73,60 +91,431 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "We also create some input data in order to verify how our modifications to the policy\n", + "environment affect the output. The following input data is required to compute the\n", + "amount of social welfare benefits (i.e. `('arbeitslosengeld_2', 'betrag_m_bg')`) when\n", + "assuming parental leave benefits (i.e. `('elterngeld', 'betrag_m')`), pensions\n", + "(i.e. `('sozialversicherung', 'rente', 'altersrente', 'betrag_m')`,\n", + "`('sozialversicherung', 'rente', 'erwerbsminderung', 'betrag_m')`), and unemployment\n", + "benefits (i.e. `('sozialversicherung', 'arbeitslosen', 'betrag_m')`) are fixed at some\n", + "value." + ] + }, { "cell_type": "code", "execution_count": null, - "id": "4", + "id": "5", "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", + "INPUT_DATA_TREE = {\n", + " \"alter\": np.array([40, 40, 5]),\n", + " \"alter_monate\": np.array([480, 480, 60]),\n", + " \"arbeitslosengeld_2\": {\n", + " \"bezug_im_vorjahr\": np.array([False, False, False]),\n", + " \"eigenbedarf_gedeckt\": np.array([False, False, False]),\n", + " \"p_id_einstandspartner\": np.array([1, 0, -1]),\n", + " },\n", + " \"arbeitsstunden_w\": np.array([20, 0, 0]),\n", + " \"behinderungsgrad\": np.array([0, 0, 0]),\n", + " \"einkommensteuer\": {\n", + " \"abzüge\": {\n", + " \"beitrag_private_rentenversicherung_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"kinderbetreuungskosten_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"p_id_kinderbetreuungskostenträger\": np.array([-1, -1, 0]),\n", + " },\n", + " \"einkünfte\": {\n", + " \"aus_forst_und_landwirtschaft\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"aus_gewerbebetrieb\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"aus_kapitalvermögen\": {\"kapitalerträge_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"aus_nichtselbstständiger_arbeit\": {\n", + " \"bruttolohn_m\": np.array([1500.0, 0.0, 0.0])\n", + " },\n", + " \"aus_selbstständiger_arbeit\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"aus_vermietung_und_verpachtung\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"ist_hauptberuflich_selbstständig\": np.array([False, False, False]),\n", + " \"sonstige\": {\n", + " \"alle_weiteren_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"rente\": {\n", + " \"betriebliche_altersvorsorge_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"geförderte_private_vorsorge_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"sonstige_private_vorsorge_m\": np.array([0.0, 0.0, 0.0]),\n", + " },\n", + " },\n", + " },\n", + " \"gemeinsam_veranlagt\": np.array([True, True, False]),\n", + " },\n", + " \"elterngeld\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"familie\": {\n", + " \"alleinerziehend\": np.array([False, False, False]),\n", + " \"p_id_ehepartner\": np.array([1, 0, -1]),\n", + " \"p_id_elternteil_1\": np.array([-1, -1, 0]),\n", + " \"p_id_elternteil_2\": np.array([-1, -1, 1]),\n", + " },\n", + " \"geburtsjahr\": np.array([1985, 1985, 2020]),\n", + " \"hh_id\": np.array([0, 0, 0]),\n", + " \"kindergeld\": {\n", + " \"in_ausbildung\": np.array([False, False, False]),\n", + " \"p_id_empfänger\": np.array([-1, -1, 0]),\n", + " },\n", + " \"p_id\": np.array([0, 1, 2]),\n", + " \"sozialversicherung\": {\n", + " \"arbeitslosen\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"kranken\": {\"beitrag\": {\"privat_versichert\": np.array([False, False, False])}},\n", + " \"pflege\": {\"beitrag\": {\"hat_kinder\": np.array([True, True, False])}},\n", + " \"rente\": {\n", + " \"altersrente\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"bezieht_rente\": np.array([False, False, False]),\n", + " \"erwerbsminderung\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"jahr_renteneintritt\": np.array([2060, 2060, 2090]),\n", + " },\n", + " },\n", + " \"unterhalt\": {\"tatsächlich_erhaltener_betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"vermögen\": np.array([0.0, 0.0, 0.0]),\n", + " \"wohnen\": {\n", + " \"bewohnt_eigentum_hh\": np.array([False, False, False]),\n", + " \"bruttokaltmiete_m_hh\": np.array([600.0, 600.0, 600.0]),\n", + " \"heizkosten_m_hh\": np.array([60.0, 60.0, 60.0]),\n", + " \"wohnfläche_hh\": np.array([50.0, 50.0, 50.0]),\n", + " },\n", + " \"wohngeld\": {\"mietstufe_hh\": np.array([4, 4, 4])},\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "The status quo is the following:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## Modifying Parameters\n", + "\n", + "GETTSIM's parameters are stored in different objects depending on their type. If you\n", + "modify the parameters in the `policy_environment`, you will encounter the following\n", + "objects:\n", + "\n", + "1. **ScalarParam**: A scalar parameter, i.e. a parameter that is a single number.\n", + "2. **DictParam**: A parameter that is a flat dictionary with homogeneous keys and values\n", + " (i.e. all keys and values are of the same type).\n", + "3. **ConsecutiveIntLookupTableParam**: A lookup table that stores values and assigns a\n", + " consecutive integer index to each value.\n", + "4. **PiecewisePolynomialParam**: A piecewise polynomial parameter, i.e. a parameter that\n", + " describes a piecewise polynomial function.\n", + "5. **RawParam**: A parameter that does not fit into the other categories. For these\n", + " parameters, we need `ParamFunction`s to process them (see next section).\n", + "\n", + "Any of those parameter classes has the following attributes:\n", + "- `leaf_name`: The leaf name of the parameter in GETTSIM's policy environment.\n", + "- `start_date`: The date from which the parameter is valid (if applicable).\n", + "- `end_date`: The date until which the parameter is valid (if applicable).\n", + "- `unit`: The unit of the parameter (if applicable).\n", + "- `reference_period`: The period over which the parameter is valid (if applicable).\n", + "- `name`: The name of the parameter.\n", + "- `description`: A more elaborate description of the parameter.\n", + "- `value`: The value of the parameter.\n", + "- `note`: Some notes (if applicable).\n", + "- `reference`: A legal reference.\n", + "\n", + "When modifying parameters, you will mostly care about the `value` attribute.\n", + "\n", + "### Scalar Parameters\n", + "\n", + "Scalar parameters are the simplest type of parameters. They are represented by the\n", + "`ScalarParam` class. They are stored as a single number in the `policy_environment`.\n", + "\n", + "Let's take a look at the `kindersofortzuschlag` parameter. This parameter increases the\n", + "transfer to children by a fixed amount.\n", + "\n", + "As you can see the `kindersofortzuschlag` parameter is a `ScalarParam` object and its\n", + "value is 25€ in the status quo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"].value" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "Let's increase the parameter.\n", + "\n", + "#### Step 1: Create a copy of the status quo policy environment. \n", + "\n", + "This is good practice to avoid inplace modifications of the original policy environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "higher_kindersofortzuschlag_policy_environment = copy_environment(\n", + " status_quo_environment\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "#### Step 2: Create the new parameter.\n", + "\n", + "Create a new `ScalarParam` object. To do this, we first import the `ScalarParam` class\n", + "from GETTSIM and then instantiate it with the new value.\n", + "\n", + "**Tip**: You don't have to specify all attributes of the `ScalarParam` class. Only the\n", + "value attribute is required." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "from ttsim.tt_dag_elements.param_objects import ScalarParam\n", "\n", + "new_kindersofortzuschlag = ScalarParam(value=40)" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "#### Step 3: Replace the old parameter with the new one in the new policy environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "higher_kindersofortzuschlag_policy_environment[\"arbeitslosengeld_2\"][\n", + " \"kindersofortzuschlag\"\n", + "] = new_kindersofortzuschlag" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "Let's call GETTSIM with the modified policy environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ "main(\n", - " main_target=MainTarget.templates.input_data_dtypes,\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", - " input_data={\n", - " \"tree\": {\n", - " \"p_id\": np.array([1]),\n", - " \"arbeitslosengeld_2\": {\n", - " \"bruttoeinkommen_m\": np.array([0.0]),\n", - " },\n", - " }\n", - " },\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + " policy_environment=higher_kindersofortzuschlag_policy_environment,\n", + " include_warn_nodes=False,\n", ")" ] }, { "cell_type": "markdown", - "id": "5", + "id": "19", + "metadata": {}, + "source": [ + "### Dict Parameters\n", + "\n", + "Dict parameters are parameters that are a flat dictionary with homogeneous keys and\n", + "values. They are represented by the `DictParam` class. They are stored as a flat\n", + "dictionary in the `policy_environment`.\n", + "\n", + "Let's take a look at the `berechtigte_wohnfläche_miete` parameter. This parameter\n", + "contains the amount of the admissible housing size for each type of housing.\n", + "\n", + "As you can see the `berechtigte_wohnfläche_miete` parameter is a `DictParam` object and\n", + "its value is a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", "metadata": {}, + "outputs": [], "source": [ - "### UThe " + "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"].value" ] }, { "cell_type": "markdown", - "id": "6", + "id": "22", "metadata": {}, "source": [ - "## Replacing/Adding Parameters" + "Let's modify the parameter by decreasing the " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "higher_kindersofortzuschlag_policy_environment = copy_environment(\n", + " status_quo_environment\n", + ")" ] }, { "cell_type": "markdown", - "id": "7", + "id": "24", + "metadata": {}, + "source": [ + "#### Step 2: Create the new parameter.\n", + "\n", + "Create a new `ScalarParam` object. To do this, we first import the `ScalarParam` class\n", + "from GETTSIM and then instantiate it with the new value.\n", + "\n", + "**Tip**: You don't have to specify all attributes of the `ScalarParam` class. Only the\n", + "value attribute is required." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", "metadata": {}, + "outputs": [], "source": [ - "## Replacing/Adding Functions" + "from ttsim.tt_dag_elements.param_objects import ScalarParam\n", + "\n", + "new_kindersofortzuschlag = ScalarParam(value=40)" ] }, { "cell_type": "markdown", - "id": "8", + "id": "26", + "metadata": {}, + "source": [ + "#### Step 3: Replace the old parameter with the new one in the new policy environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "higher_kindersofortzuschlag_policy_environment[\"arbeitslosengeld_2\"][\n", + " \"kindersofortzuschlag\"\n", + "] = new_kindersofortzuschlag" + ] + }, + { + "cell_type": "markdown", + "id": "28", + "metadata": {}, + "source": [ + "Let's call GETTSIM with the modified policy environment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + " policy_environment=higher_kindersofortzuschlag_policy_environment,\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "30", + "metadata": {}, + "source": [ + "## Modifying Parameter Functions" + ] + }, + { + "cell_type": "markdown", + "id": "31", "metadata": {}, "source": [ - "## " + "## Modifying Column Objects" ] } ], From ae759f4ad4cb8109d7c40af2ee2c99538f4ed8ee Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Thu, 24 Jul 2025 16:22:24 +0200 Subject: [PATCH 101/109] Extract TTSIM (#1052) In sync with [TTSIM PR 1](https://github.com/ttsim-dev/ttsim/pull/1), this leaves just GETTSIM in here. Also includes the renamings in [TTSIM PR 3](https://github.com/ttsim-dev/ttsim/pull/3), which are on PyPI as 1.0a1 Fixes #1003. --- .pre-commit-config.yaml | 4 +- CITATION | 2 +- README.md | 10 +- conftest.py | 1 - docs/conf.py | 4 +- docs/geps/gep-00.md | 6 +- docs/geps/gep-01.md | 8 +- docs/geps/gep-02.md | 2 +- docs/geps/gep-03.md | 6 +- docs/geps/gep-04.md | 10 +- docs/geps/gep-05.md | 11 +- docs/geps/gep-06.md | 24 +- docs/geps/gep-07.md | 5 +- {src/ttsim => docs/geps}/params-schema.json | 1 + docs/gettsim_developer/how-to-contribute.md | 16 +- docs/gettsim_developer/how-to-maintain.md | 9 +- docs/index.md | 2 +- .../calculating_elterngeld.ipynb | 2 +- pixi.lock | 932 +++++----- pyproject.toml | 67 +- sandbox/check-autocomplete.ipynb | 92 - sandbox/interface-playground.ipynb | 6 +- sandbox/plots.ipynb | 2 +- .../arbeitslosengeld_2/aggregations.py | 6 +- .../arbeitslosengeld_2/arbeitslosengeld_2.py | 4 +- src/_gettsim/arbeitslosengeld_2/einkommen.py | 7 +- .../freibetr\303\244ge_verm\303\266gen.py" | 8 +- src/_gettsim/arbeitslosengeld_2/inputs.py | 4 +- .../kindergeld\303\274bertrag.py" | 9 +- .../kosten_der_unterkunft.yaml | 8 +- .../arbeitslosengeld_2/regelbedarf.py | 4 +- .../abgeltungssteuer/abgeltungssteuer.py | 4 +- .../abz\303\274ge/alleinerziehend.py" | 2 +- .../einkommensteuer/abz\303\274ge/alter.py" | 4 +- .../abz\303\274ge/behinderung.py" | 4 +- .../einkommensteuer/abz\303\274ge/betrag.py" | 2 +- .../einkommensteuer/abz\303\274ge/inputs.py" | 2 +- .../abz\303\274ge/sonderausgaben.py" | 2 +- .../abz\303\274ge/vorsorge.py" | 11 +- src/_gettsim/einkommensteuer/einkommen.py | 2 +- .../einkommensteuer/einkommensteuer.py | 15 +- .../aus_forst_und_landwirtschaft/inputs.py" | 2 +- .../aus_gewerbebetrieb/inputs.py" | 2 +- .../aus_kapitalverm\303\266gen.py" | 2 +- .../aus_kapitalverm\303\266gen/inputs.py" | 2 +- ...aus_nichtselbstst\303\244ndiger_arbeit.py" | 2 +- .../inputs.py" | 2 +- .../inputs.py" | 2 +- .../aus_vermietung_und_verpachtung/inputs.py" | 2 +- .../eink\303\274nfte/eink\303\274nfte.py" | 2 +- .../eink\303\274nfte/inputs.py" | 2 +- .../eink\303\274nfte/sonstige/inputs.py" | 2 +- .../sonstige/rente/inputs.py" | 2 +- .../eink\303\274nfte/sonstige/rente/rente.py" | 2 +- .../eink\303\274nfte/sonstige/sonstige.py" | 2 +- src/_gettsim/einkommensteuer/inputs.py | 2 +- .../einkommensteuer/kinderfreibetrag.py | 2 +- .../zu_versteuerndes_einkommen.py | 2 +- src/_gettsim/elterngeld/einkommen.py | 4 +- src/_gettsim/elterngeld/elterngeld.py | 6 +- src/_gettsim/elterngeld/geschwisterbonus.py | 2 +- src/_gettsim/elterngeld/inputs.py | 2 +- src/_gettsim/erziehungsgeld/erziehungsgeld.py | 4 +- src/_gettsim/erziehungsgeld/inputs.py | 2 +- src/_gettsim/familie/familie.py | 9 +- src/_gettsim/familie/inputs.py | 2 +- src/_gettsim/grundsicherung/aggregations.py | 8 +- src/_gettsim/grundsicherung/bedarfe.py | 4 +- .../grundsicherung/im_alter/einkommen.py | 4 +- .../grundsicherung/im_alter/im_alter.py | 8 +- src/_gettsim/hh_characteristics.py | 2 +- src/_gettsim/ids.py | 10 +- src/_gettsim/individual_characteristics.py | 2 +- src/_gettsim/inputs.py | 4 +- src/_gettsim/kinderbonus/kinderbonus.py | 2 +- src/_gettsim/kindergeld/inputs.py | 2 +- src/_gettsim/kindergeld/kindergeld.py | 6 +- src/_gettsim/kinderzuschlag/einkommen.py | 10 +- src/_gettsim/kinderzuschlag/kinderzuschlag.py | 4 +- src/_gettsim/lohnsteuer/einkommen.py | 2 +- src/_gettsim/lohnsteuer/inputs.py | 2 +- src/_gettsim/lohnsteuer/lohnsteuer.py | 4 +- .../solidarit\303\244tszuschlag.py" | 2 +- .../arbeitslosen/arbeitslosengeld.py | 4 +- .../arbeitslosen/beitrag/beitrag.py | 2 +- .../sozialversicherung/arbeitslosen/inputs.py | 2 +- .../sozialversicherung/beitr\303\244ge.py" | 2 +- .../kranken/beitrag/beitrag.py | 2 +- .../kranken/beitrag/beitragssatz.py | 2 +- .../kranken/beitrag/einkommen.py | 2 +- .../kranken/beitrag/inputs.py | 2 +- src/_gettsim/sozialversicherung/midijob.py | 2 +- src/_gettsim/sozialversicherung/minijob.py | 2 +- .../pflege/beitrag/beitrag.py | 2 +- .../pflege/beitrag/beitragssatz.py | 2 +- .../pflege/beitrag/inputs.py | 2 +- .../regul\303\244r_besch\303\244ftigt.py" | 2 +- .../rente/alter_bei_renteneintritt.py | 2 +- .../rente/altersrente/altersgrenzen.py | 2 +- .../rente/altersrente/altersrente.py | 2 +- .../besonders_langj\303\244hrig.py" | 2 +- .../f\303\274r_frauen/f\303\274r_frauen.py" | 2 +- .../altersrente/f\303\274r_frauen/inputs.py" | 2 +- .../altersrente/hinzuverdienstgrenzen.py | 8 +- .../rente/altersrente/inputs.py | 2 +- .../langj\303\244hrig/langj\303\244hrig.py" | 2 +- .../regelaltersrente/regelaltersrente.py | 2 +- .../wegen_arbeitslosigkeit/inputs.py | 2 +- .../wegen_arbeitslosigkeit.py | 2 +- .../rente/beitrag/beitrag.py | 2 +- .../sozialversicherung/rente/entgeltpunkte.py | 2 +- .../rente/erwerbsminderung/altersgrenze.yaml | 2 +- .../erwerbsminderung/erwerbsminderung.py | 6 +- .../rente/erwerbsminderung/inputs.py | 2 +- .../rente/grundrente/grundrente.py | 2 +- .../rente/grundrente/inputs.py | 2 +- .../sozialversicherung/rente/inputs.py | 2 +- .../sozialversicherung/rente/wartezeit.py | 2 +- src/_gettsim/unterhalt/inputs.py | 2 +- src/_gettsim/unterhalt/unterhalt.py | 2 +- .../unterhaltsvorschuss.py | 9 +- .../vorrangpr\303\274fungen.py" | 2 +- src/_gettsim/wohnen/inputs.py | 2 +- src/_gettsim/wohngeld/einkommen.py | 4 +- src/_gettsim/wohngeld/inputs.py | 2 +- src/_gettsim/wohngeld/miete.py | 2 +- src/_gettsim/wohngeld/voraussetzungen.py | 2 +- src/_gettsim/wohngeld/wohngeld.py | 6 +- src/_gettsim_tests/test_jittability.py | 9 +- src/_gettsim_tests/test_plot_dag.py | 8 +- src/_gettsim_tests/test_policy.py | 7 +- src/_gettsim_tests/test_templates.py | 4 +- src/gettsim/__init__.py | 89 +- .../tt}/__init__.py | 40 +- src/ttsim/__init__.py | 29 - src/ttsim/copy_environment.py | 70 - src/ttsim/interface_dag.py | 590 ------ src/ttsim/interface_dag_elements/__init__.py | 171 -- .../automatically_added_functions.py | 677 ------- src/ttsim/interface_dag_elements/backend.py | 47 - .../interface_dag_elements/data_converters.py | 175 -- src/ttsim/interface_dag_elements/dates.py | 76 - src/ttsim/interface_dag_elements/fail_if.py | 943 ---------- .../interface_dag_elements/input_data.py | 121 -- .../interface_node_objects.py | 391 ---- src/ttsim/interface_dag_elements/labels.py | 218 --- .../interface_dag_elements/num_segments.py | 21 - .../orig_policy_objects.py | 165 -- .../policy_environment.py | 293 --- .../interface_dag_elements/processed_data.py | 63 - .../interface_dag_elements/raw_results.py | 58 - src/ttsim/interface_dag_elements/results.py | 92 - src/ttsim/interface_dag_elements/shared.py | 332 ---- .../specialized_environment.py | 380 ---- src/ttsim/interface_dag_elements/templates.py | 107 -- .../interface_dag_elements/tt_targets.py | 43 - src/ttsim/interface_dag_elements/typing.py | 114 -- src/ttsim/interface_dag_elements/warn_if.py | 116 -- src/ttsim/main_args.py | 170 -- src/ttsim/plot_dag.py | 609 ------- src/ttsim/stale_code_storage.py | 147 -- src/ttsim/testing_utils.py | 297 --- src/ttsim/tt_dag_elements/aggregation.py | 500 ----- src/ttsim/tt_dag_elements/aggregation_jax.py | 202 -- .../tt_dag_elements/aggregation_numpy.py | 283 --- .../column_objects_param_function.py | 943 ---------- src/ttsim/tt_dag_elements/param_objects.py | 346 ---- .../tt_dag_elements/piecewise_polynomial.py | 410 ----- src/ttsim/tt_dag_elements/rounding.py | 73 - src/ttsim/tt_dag_elements/shared.py | 93 - src/ttsim/tt_dag_elements/typing.py | 20 - src/ttsim/tt_dag_elements/vectorization.py | 548 ------ tests/ttsim/__init__ .py | 0 .../test_automatically_added_functions.py | 430 ----- .../test_data_converters.py | 268 --- .../interface_dag_elements/test_failures.py | 1617 ----------------- .../interface_dag_elements/test_labels.py | 45 - .../test_orig_policy_objects.py | 52 - .../test_policy_environment.py | 231 --- .../test_processed_data.py | 66 - .../interface_dag_elements/test_shared.py | 292 --- .../test_specialized_environment.py | 868 --------- .../interface_dag_elements/test_templates.py | 216 --- .../interface_dag_elements/test_warnings.py | 126 -- tests/ttsim/mettsim/__init__.py | 0 tests/ttsim/mettsim/demographics.py | 10 - tests/ttsim/mettsim/group_by_ids.py | 98 - .../ttsim/mettsim/housing_benefits/amount.py | 15 - .../housing_benefits/assistance_rate.yaml | 13 - .../eligibility/eligibility.py | 82 - .../eligibility/eligibility.yaml | 39 - .../mettsim/housing_benefits/income/income.py | 21 - tests/ttsim/mettsim/inputs.py | 48 - .../orc_hunting_bounty/orc_hunting_bounty.py | 58 - .../orc_hunting_bounty.yaml | 16 - tests/ttsim/mettsim/payroll_tax/amount.py | 56 - .../child_tax_credit/child_tax_credit.py | 63 - .../child_tax_credit/child_tax_credit.yaml | 14 - .../payroll_tax/child_tax_credit/inputs.py | 8 - .../mettsim/payroll_tax/income/amount.py | 11 - .../mettsim/payroll_tax/income/deductions.py | 11 - .../payroll_tax/income/deductions.yaml | 13 - .../mettsim/payroll_tax/income/inputs.py | 10 - .../mettsim/payroll_tax/payroll_tax.yaml | 57 - .../mettsim/property_tax/acre_size_cap.yaml | 27 - tests/ttsim/mettsim/property_tax/amount.py | 54 - .../mettsim/property_tax/tax_schedule.yaml | 24 - .../group_by_ids/2025-01-01/group_by_ids.yaml | 45 - .../amount_no_children_high_income.yaml | 54 - .../amount_no_children_low_income.yaml | 54 - .../amount_with_children_high_income.yaml | 67 - .../amount_with_children_low_income.yaml | 67 - .../amount_no_children_high_income.yaml | 60 - .../amount_no_children_low_income.yaml | 60 - .../amount_with_children_high_income.yaml | 75 - .../amount_with_children_low_income.yaml | 75 - .../2025-01-01/amount_with_many_children.yaml | 105 -- .../orc_hunting_bounty/1900-01-01/amount.yaml | 31 - .../2025-01-01/amount_no_children.yaml | 69 - .../amount_no_children_high_wealth.yaml | 69 - .../amount_no_children_noble_parents.yaml | 69 - .../2025-01-01/amount_with_children.yaml | 83 - ..._children_inputs_need_to_be_converted.yaml | 87 - .../2025-01-01/amount_with_many_children.yaml | 117 -- ...eductions_param_overwritten_by_column.yaml | 30 - .../property_tax/2000-01-01/acre_size.yaml | 23 - .../acre_size_capped_via_evaluation_year.yaml | 35 - tests/ttsim/mettsim_tests/test_mettsim.py | 126 -- tests/ttsim/test_copy_environment.py | 188 -- tests/ttsim/test_end_to_end.py | 201 -- tests/ttsim/test_import_version.py | 16 - tests/ttsim/test_interface_dag.py | 454 ----- tests/ttsim/test_plot_dag.py | 284 --- tests/ttsim/tt_dag_elements/__init__.py | 0 .../test_aggregation_functions.py | 642 ------- .../test_piecewise_polynomial.py | 101 - tests/ttsim/tt_dag_elements/test_rounding.py | 269 --- tests/ttsim/tt_dag_elements/test_shared.py | 72 - .../tt_dag_elements/test_ttsim_objects.py | 306 ---- .../tt_dag_elements/test_vectorization.py | 854 --------- 240 files changed, 850 insertions(+), 20563 deletions(-) rename {src/ttsim => docs/geps}/params-schema.json (94%) delete mode 100644 sandbox/check-autocomplete.ipynb rename src/{ttsim/tt_dag_elements => gettsim/tt}/__init__.py (83%) delete mode 100644 src/ttsim/__init__.py delete mode 100644 src/ttsim/copy_environment.py delete mode 100644 src/ttsim/interface_dag.py delete mode 100644 src/ttsim/interface_dag_elements/__init__.py delete mode 100644 src/ttsim/interface_dag_elements/automatically_added_functions.py delete mode 100644 src/ttsim/interface_dag_elements/backend.py delete mode 100644 src/ttsim/interface_dag_elements/data_converters.py delete mode 100644 src/ttsim/interface_dag_elements/dates.py delete mode 100644 src/ttsim/interface_dag_elements/fail_if.py delete mode 100644 src/ttsim/interface_dag_elements/input_data.py delete mode 100644 src/ttsim/interface_dag_elements/interface_node_objects.py delete mode 100644 src/ttsim/interface_dag_elements/labels.py delete mode 100644 src/ttsim/interface_dag_elements/num_segments.py delete mode 100644 src/ttsim/interface_dag_elements/orig_policy_objects.py delete mode 100644 src/ttsim/interface_dag_elements/policy_environment.py delete mode 100644 src/ttsim/interface_dag_elements/processed_data.py delete mode 100644 src/ttsim/interface_dag_elements/raw_results.py delete mode 100644 src/ttsim/interface_dag_elements/results.py delete mode 100644 src/ttsim/interface_dag_elements/shared.py delete mode 100644 src/ttsim/interface_dag_elements/specialized_environment.py delete mode 100644 src/ttsim/interface_dag_elements/templates.py delete mode 100644 src/ttsim/interface_dag_elements/tt_targets.py delete mode 100644 src/ttsim/interface_dag_elements/typing.py delete mode 100644 src/ttsim/interface_dag_elements/warn_if.py delete mode 100644 src/ttsim/main_args.py delete mode 100644 src/ttsim/plot_dag.py delete mode 100644 src/ttsim/stale_code_storage.py delete mode 100644 src/ttsim/testing_utils.py delete mode 100644 src/ttsim/tt_dag_elements/aggregation.py delete mode 100644 src/ttsim/tt_dag_elements/aggregation_jax.py delete mode 100644 src/ttsim/tt_dag_elements/aggregation_numpy.py delete mode 100644 src/ttsim/tt_dag_elements/column_objects_param_function.py delete mode 100644 src/ttsim/tt_dag_elements/param_objects.py delete mode 100644 src/ttsim/tt_dag_elements/piecewise_polynomial.py delete mode 100644 src/ttsim/tt_dag_elements/rounding.py delete mode 100644 src/ttsim/tt_dag_elements/shared.py delete mode 100644 src/ttsim/tt_dag_elements/typing.py delete mode 100644 src/ttsim/tt_dag_elements/vectorization.py delete mode 100644 tests/ttsim/__init__ .py delete mode 100644 tests/ttsim/interface_dag_elements/test_automatically_added_functions.py delete mode 100644 tests/ttsim/interface_dag_elements/test_data_converters.py delete mode 100644 tests/ttsim/interface_dag_elements/test_failures.py delete mode 100644 tests/ttsim/interface_dag_elements/test_labels.py delete mode 100644 tests/ttsim/interface_dag_elements/test_orig_policy_objects.py delete mode 100644 tests/ttsim/interface_dag_elements/test_policy_environment.py delete mode 100644 tests/ttsim/interface_dag_elements/test_processed_data.py delete mode 100644 tests/ttsim/interface_dag_elements/test_shared.py delete mode 100644 tests/ttsim/interface_dag_elements/test_specialized_environment.py delete mode 100644 tests/ttsim/interface_dag_elements/test_templates.py delete mode 100644 tests/ttsim/interface_dag_elements/test_warnings.py delete mode 100644 tests/ttsim/mettsim/__init__.py delete mode 100644 tests/ttsim/mettsim/demographics.py delete mode 100644 tests/ttsim/mettsim/group_by_ids.py delete mode 100644 tests/ttsim/mettsim/housing_benefits/amount.py delete mode 100644 tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml delete mode 100644 tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py delete mode 100644 tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml delete mode 100644 tests/ttsim/mettsim/housing_benefits/income/income.py delete mode 100644 tests/ttsim/mettsim/inputs.py delete mode 100644 tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py delete mode 100644 tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml delete mode 100644 tests/ttsim/mettsim/payroll_tax/amount.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml delete mode 100644 tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/income/amount.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/income/deductions.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/income/deductions.yaml delete mode 100644 tests/ttsim/mettsim/payroll_tax/income/inputs.py delete mode 100644 tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml delete mode 100644 tests/ttsim/mettsim/property_tax/acre_size_cap.yaml delete mode 100644 tests/ttsim/mettsim/property_tax/amount.py delete mode 100644 tests/ttsim/mettsim/property_tax/tax_schedule.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml delete mode 100644 tests/ttsim/mettsim_tests/test_mettsim.py delete mode 100644 tests/ttsim/test_copy_environment.py delete mode 100644 tests/ttsim/test_end_to_end.py delete mode 100644 tests/ttsim/test_import_version.py delete mode 100644 tests/ttsim/test_interface_dag.py delete mode 100644 tests/ttsim/test_plot_dag.py delete mode 100644 tests/ttsim/tt_dag_elements/__init__.py delete mode 100644 tests/ttsim/tt_dag_elements/test_aggregation_functions.py delete mode 100644 tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py delete mode 100644 tests/ttsim/tt_dag_elements/test_rounding.py delete mode 100644 tests/ttsim/tt_dag_elements/test_shared.py delete mode 100644 tests/ttsim/tt_dag_elements/test_ttsim_objects.py delete mode 100644 tests/ttsim/tt_dag_elements/test_vectorization.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5829bad3d2..6760769e48 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -108,8 +108,8 @@ repos: name: Validate JSON/YAML files against schema entry: check-jsonschema language: python - files: ^(tests/ttsim/mettsim|src/_gettsim)/.*\.(yaml|yml)$ + files: ^src/_gettsim/.*\.(yaml|yml)$ args: - - --schemafile=src/ttsim/params-schema.json + - --schemafile=docs/geps/params-schema.json ci: autoupdate_schedule: monthly diff --git a/CITATION b/CITATION index 010e818460..143a968846 100644 --- a/CITATION +++ b/CITATION @@ -2,5 +2,5 @@ Title = {{The German Taxes and Transfers SIMulator}}, Author = {{GETTSIM team}}, Year = {2022}, - Url = {https://github.com/iza-institute-of-labor-economics/gettsim} + Url = {https://github.com/ttsim-dev/gettsim} } diff --git a/README.md b/README.md index 0b4547677f..15451180f3 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,18 @@ ![PyPI - Version](https://img.shields.io/pypi/v/gettsim) [![image](https://img.shields.io/conda/vn/conda-forge/gettsim.svg)](https://anaconda.org/conda-forge/gettsim) [![image](https://img.shields.io/conda/pn/conda-forge/gettsim.svg)](https://anaconda.org/conda-forge/gettsim) -[![main](https://github.com/iza-institute-of-labor-economics/gettsim/actions/workflows/main.yaml/badge.svg)](https://github.com/iza-institute-of-labor-economics/gettsim/actions/workflows/main.yaml) -[![image](https://codecov.io/gh/iza-institute-of-labor-economics/gettsim/branch/main/graph/badge.svg)](https://codecov.io/gh/iza-institute-of-labor-economics/gettsim) +[![main](https://github.com/ttsim-dev/gettsim/actions/workflows/main.yaml/badge.svg)](https://github.com/ttsim-dev/gettsim/actions/workflows/main.yaml) +[![image](https://codecov.io/gh/ttsim-dev/gettsim/branch/main/graph/badge.svg)](https://codecov.io/gh/ttsim-dev/gettsim) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) -[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/iza-institute-of-labor-economics/gettsim/main.svg)](https://results.pre-commit.ci/latest/github/iza-institute-of-labor-economics/gettsim/main) -[![image](https://img.shields.io/github/contributors/iza-institute-of-labor-economics/gettsim.svg)](https://github.com/iza-institute-of-labor-economics/gettsim/graphs/contributors) +[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ttsim-dev/gettsim/main.svg)](https://results.pre-commit.ci/latest/github/ttsim-dev/gettsim/main) +[![image](https://img.shields.io/github/contributors/ttsim-dev/gettsim.svg)](https://github.com/ttsim-dev/gettsim/graphs/contributors) [![image](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![image](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://gettsim.zulipchat.com)



-
+ GETTSIM
diff --git a/conftest.py b/conftest.py index af4b279eb4..51598c8fe6 100644 --- a/conftest.py +++ b/conftest.py @@ -3,7 +3,6 @@ from typing import TYPE_CHECKING import pytest - from ttsim.interface_dag_elements.backend import dnp as ttsim_dnp from ttsim.interface_dag_elements.backend import xnp as ttsim_xnp diff --git a/docs/conf.py b/docs/conf.py index 53be2a516d..cd224233b8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -82,7 +82,7 @@ extlinks = { "ghuser": ("https://github.com/%s", "@%s"), "gh": ( - "https://github.com/iza-institute-of-labor-economics/gettsim/pull/%s", + "https://github.com/ttsim-dev/gettsim/pull/%s", "#%s", ), } @@ -108,7 +108,7 @@ html_logo = "_static/images/gettsim_logo.svg" html_theme_options = { - "github_url": "https://github.com/iza-institute-of-labor-economics/gettsim", + "github_url": "https://github.com/ttsim-dev/gettsim", } # Add any paths that contain custom static files (such as style sheets) here, relative diff --git a/docs/geps/gep-00.md b/docs/geps/gep-00.md index a7ad8c40c3..1d66faadbe 100644 --- a/docs/geps/gep-00.md +++ b/docs/geps/gep-00.md @@ -239,14 +239,14 @@ This document has been placed in the public domain. [^id3]: This historical record is available by the normal git commands for retrieving older revisions, and can also be browsed on - [GitHub](https://github.com/iza-institute-of-labor-economics/gettsim/tree/main/docs/geps). + [GitHub](https://github.com/ttsim-dev/gettsim/tree/main/docs/geps). [^id4]: The URL for viewing GEPs on the web is . [#geps]: https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs -[github pull request]: https://github.com/iza-institute-of-labor-economics/gettsim/pulls -[repository]: https://github.com/iza-institute-of-labor-economics/gettsim +[github pull request]: https://github.com/ttsim-dev/gettsim/pulls +[repository]: https://github.com/ttsim-dev/gettsim [restructuredtext]: http://docutils.sourceforge.net/rst.html [restructuredtextprimer]: http://www.sphinx-doc.org/en/stable/rest.html [sphinx]: http://www.sphinx-doc.org/en/stable/ diff --git a/docs/geps/gep-01.md b/docs/geps/gep-01.md index 793e842ef7..d9d616518d 100644 --- a/docs/geps/gep-01.md +++ b/docs/geps/gep-01.md @@ -186,16 +186,16 @@ for that. Quoting from there: The below refers to older versions of the GEP; it has been updated because `GEP-6 ` made much of the original content obsolete. -- GitHub PR: +- GitHub PR: - Discussion on provisional acceptance: - GitHub PR for first update (character limits, time and unit identifiers, DAG - adjustments): + adjustments): - GitHub PR for second update (concatenated column names, dealing with conflicting objectives, names for columns vs parameters): - + - GitHub PR for third update (changes because of `GEP-6 `): - + ## Copyright diff --git a/docs/geps/gep-02.md b/docs/geps/gep-02.md index 573c5bc160..bff4a58029 100644 --- a/docs/geps/gep-02.md +++ b/docs/geps/gep-02.md @@ -160,7 +160,7 @@ taxes and transfers became too difficult. - Zulip stream for [GEP 2](https://gettsim.zulipchat.com/#narrow/stream/309998-GEPs/topic/GEP.2001/near/189539859). - GitHub PR for update (changes because of `GEP-6 `): - + ## Copyright diff --git a/docs/geps/gep-03.md b/docs/geps/gep-03.md index d7a5dcbe3d..8cf94a4add 100644 --- a/docs/geps/gep-03.md +++ b/docs/geps/gep-03.md @@ -656,10 +656,10 @@ the parameter (see the previous section), the following types are possible: ## Discussion -- +- - - GitHub PR for update (changes because of `GEP-6 `): - + ## Copyright @@ -667,5 +667,5 @@ This document has been placed in the public domain. ## Appendix: json-schema for the yaml files -```{literalinclude} ../../src/ttsim/params-schema.json +```{literalinclude} ./params-schema.json ``` diff --git a/docs/geps/gep-04.md b/docs/geps/gep-04.md index 6f50adf0fd..5dab0ae49a 100644 --- a/docs/geps/gep-04.md +++ b/docs/geps/gep-04.md @@ -232,7 +232,7 @@ For example, we may need the number of adult household members. The following co `household_characteristics.py` does this: ```python -from ttsim import AggType, agg_by_group_function +from gettsim.tt import AggType, agg_by_group_function @agg_by_group_function(agg_type=AggType.SUM) @@ -273,7 +273,7 @@ a node `kindergeld__betrag_m_bg` containing the Bedarfsgemeinschaft-level sum of graph will be `kindergeld__betrag_m` and `bg_id`. This is the same as specifying: ```python -from ttsim import AggType, agg_by_group_function +from gettsim.tt import AggType, agg_by_group_function @agg_by_group_function(agg_type=AggType.SUM) @@ -305,7 +305,7 @@ values in `source` should be ascribed to. The key `agg` gives the aggregation me For example, in the `kindergeld` namespace, we could have: ```python -from ttsim import AggType, agg_by_p_id_function +from gettsim.tt import AggType, agg_by_p_id_function @agg_by_p_id_function(agg_type=AggType.SUM) @@ -370,10 +370,10 @@ computational advantages. ## Discussion -- +- - - GitHub PR for update (changes because of `GEP-6 `): - + ## Copyright diff --git a/docs/geps/gep-05.md b/docs/geps/gep-05.md index b69fc04893..673bd39886 100644 --- a/docs/geps/gep-05.md +++ b/docs/geps/gep-05.md @@ -50,7 +50,7 @@ The snippet is taken from `sozialversicherung/rente/grundrente/grundrente.py`, w contains the following code: ```python -from ttsim import policy_function, RoundingSpec, RoundingDirection +from gettsim.tt import policy_function, RoundingSpec, RoundingDirection @policy_function( @@ -101,13 +101,12 @@ parameter files) for the following reason: ## Discussion - Zulip: -- PR: -- PR Implementation: - +- PR: +- PR Implementation: - GitHub PR for update (changes because of `GEP-6 `): - + - Github PR changing to a RoundingSpec class rather than parameters specified in the - yaml files: + yaml files: ## Copyright diff --git a/docs/geps/gep-06.md b/docs/geps/gep-06.md index 072908b808..2e09ea5e13 100644 --- a/docs/geps/gep-06.md +++ b/docs/geps/gep-06.md @@ -42,10 +42,10 @@ in at least three directions: sufficient context — in the examples above, those would be Arbeitslosengeld 2, Erziehungsgeld, and Kinderzuschlag. 1. Handling functions that change over the years is not robust (examples in - [Issue 449](https://github.com/iza-institute-of-labor-economics/gettsim/issues/449)). + [Issue 449](https://github.com/ttsim-dev/gettsim/issues/449)). 1. Parameters files do not handle cases well when functions expect parameters in a different form than the law specifies them (example: - [Issue 444](https://github.com/iza-institute-of-labor-economics/gettsim/issues/444)). + [Issue 444](https://github.com/ttsim-dev/gettsim/issues/444)). These issues severely limit the development of GETTSIM. We have been spending far too much time finding names that adhere to our self-imposed character limits. Functions with @@ -264,17 +264,17 @@ There have been various discussions and preliminary implementations of some part this GEP: - Pull requests: - - [#787](https://github.com/iza-institute-of-labor-economics/gettsim/pulls/787) Model - classes for policy functions and policy environments - - [#720](https://github.com/iza-institute-of-labor-economics/gettsim/pulls/720) - Combined decorator for policy information, - - [#638](https://github.com/iza-institute-of-labor-economics/gettsim/pulls/638) Don’t - use functions in compute_taxes_and_transfers that are not active - - [#804](https://github.com/iza-institute-of-labor-economics/gettsim/pulls/804) - Namespaces for policy functions + - [#787](https://github.com/ttsim-dev/gettsim/pulls/787) Model classes for policy + functions and policy environments + - [#720](https://github.com/ttsim-dev/gettsim/pulls/720) Combined decorator for policy + information, + - [#638](https://github.com/ttsim-dev/gettsim/pulls/638) Don’t use functions in + compute_taxes_and_transfers that are not active + - [#804](https://github.com/ttsim-dev/gettsim/pulls/804) Namespaces for policy + functions - Issues: - - [#781](https://github.com/iza-institute-of-labor-economics/gettsim/issues/781): - Summary of interface discussion from 2024 GETTSIM workshop + - [#781](https://github.com/ttsim-dev/gettsim/issues/781): Summary of interface + discussion from 2024 GETTSIM workshop - [Zulip](https://gettsim.zulipchat.com/#narrow/channel/309998-GEPs/topic/GEP.2006) ## Copyright diff --git a/docs/geps/gep-07.md b/docs/geps/gep-07.md index 144dd09293..b70f3dd201 100644 --- a/docs/geps/gep-07.md +++ b/docs/geps/gep-07.md @@ -399,9 +399,8 @@ structure of GETTSIM described in [GEP 6](gep-06). ## Discussion -- **ENH: Interface, 2024 edition · Issue #781 · iza-institute-of-labor-economics/gettsim - \- Part 1**. - [https://github.com](https://github.com/iza-institute-of-labor-economics/gettsim/issues/781) +- **ENH: Interface, 2024 edition · Issue #781 · ttsim-dev/gettsim - Part 1**. + [https://github.com](https://github.com/ttsim-dev/gettsim/issues/781) ## Copyright diff --git a/src/ttsim/params-schema.json b/docs/geps/params-schema.json similarity index 94% rename from src/ttsim/params-schema.json rename to docs/geps/params-schema.json index ef1d680e78..b039e7f217 100644 --- a/src/ttsim/params-schema.json +++ b/docs/geps/params-schema.json @@ -1,4 +1,5 @@ { + "$comment": "If you change this file, always change it in both locations: 1. ttsim/src/ttsim/params-schema.json 2. gettsim/docs/geps/params-schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "patternProperties": { diff --git a/docs/gettsim_developer/how-to-contribute.md b/docs/gettsim_developer/how-to-contribute.md index 627fcf6fdd..e055497c40 100644 --- a/docs/gettsim_developer/how-to-contribute.md +++ b/docs/gettsim_developer/how-to-contribute.md @@ -4,13 +4,13 @@ Contributions are always welcome. Everything ranging from small extensions of th documentation to implementing new features is appreciated. Of course, the bigger the change the more it is necessary to reach out to us in advance for an discussion. You can start an discussion by -[posting an issue](https://github.com/iza-institute-of-labor-economics/gettsim/issues/new/choose) -which can be a bug report or a feature request or something else. +[posting an issue](https://github.com/ttsim-dev/gettsim/issues/new/choose) which can be +a bug report or a feature request or something else. To get acquainted with the code base, you can also check out the [documentation](https://gettsim.readthedocs.io/en/latest/) or our -[issue tracker](https://github.com/iza-institute-of-labor-economics/gettsim/issues) for -some immediate and clearly defined tasks. +[issue tracker](https://github.com/ttsim-dev/gettsim/issues) for some immediate and +clearly defined tasks. To contribute to the project, adhere to the following process. @@ -27,15 +27,13 @@ To contribute to the project, adhere to the following process. Thus, you can clone the repository directly using ```shell-session - $ git clone https://github.com/iza-institute-of-labor-economics/gettsim + $ git clone https://github.com/ttsim-dev/gettsim ``` As a newcomer or infrequent contributor, you must first create a fork of GETTSIM which is a copy of the repository into your account where you have unlimited access. Go to - the - [Github page of GETTSIM](https://github.com/iza-institute-of-labor-economics/gettsim) - and click on the fork button in the upper right corner. Then, clone your fork onto - your disk with + the [Github page of GETTSIM](https://github.com/ttsim-dev/gettsim) and click on the + fork button in the upper right corner. Then, clone your fork onto your disk with ```shell-session $ git clone https://github.com//gettsim diff --git a/docs/gettsim_developer/how-to-maintain.md b/docs/gettsim_developer/how-to-maintain.md index 4594cfb1a1..c4ee499ecd 100644 --- a/docs/gettsim_developer/how-to-maintain.md +++ b/docs/gettsim_developer/how-to-maintain.md @@ -30,8 +30,8 @@ The branching model for GETTSIM is very simple. To release a new major or minor version of GETTSIM, do the following. 1. To start the release process for any new version, e.g., `0.2`, first - [create a new milestone](https://github.com/iza-institute-of-labor-economics/gettsim/milestones/new) - on Github. Set the name to the version number (format is `v[major].[minor]`, in this + [create a new milestone](https://github.com/ttsim-dev/gettsim/milestones/new) on + Github. Set the name to the version number (format is `v[major].[minor]`, in this example: `v0.2`) to collect issues and PRs. A consensus among developers determines the scope of the new release. Note that @@ -48,9 +48,8 @@ To release a new major or minor version of GETTSIM, do the following. 1. Create a maintenance branch `[major].[minor]`, i.e., `0.2` in this example. -1. Go to the - [page for releases](https://github.com/iza-institute-of-labor-economics/gettsim/releases) - and draft a new release. +1. Go to the [page for releases](https://github.com/ttsim-dev/gettsim/releases) and + draft a new release. - Set both a new tag and the release title to `vX.Y.Z`. - Add the release notes. These should include the most important changes in a diff --git a/docs/index.md b/docs/index.md index 211e9e2bf0..9b0f5ae44e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,7 +17,7 @@ accomplish specific tasks with GETTSIM. caption: Links hidden: true --- -gettsim on Github +gettsim on Github ``` ```{toctree} diff --git a/outdated_docs/how-to-guides/calculating_elterngeld.ipynb b/outdated_docs/how-to-guides/calculating_elterngeld.ipynb index f2f50ccf2b..c2161b42e1 100644 --- a/outdated_docs/how-to-guides/calculating_elterngeld.ipynb +++ b/outdated_docs/how-to-guides/calculating_elterngeld.ipynb @@ -47,7 +47,7 @@ "\n", "> **Note**: The Elterngeld implementation in GETTSIM does currently not consider income\n", "> from self-employment or other sources. See\n", - "> [this](https://github.com/iza-institute-of-labor-economics/gettsim/issues/613) issue.\n", + "> [this](https://github.com/ttsim-dev/gettsim/issues/613) issue.\n", "\n", "So let's assume that income from dependent employment is the only source of income. If\n", "you have only annual income data (and thus cannot compute gross income 12 months before\n", diff --git a/pixi.lock b/pixi.lock index a4e9273c82..8bd785cdbc 100644 --- a/pixi.lock +++ b/pixi.lock @@ -60,7 +60,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -69,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -133,7 +133,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -168,7 +168,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -205,7 +205,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -234,7 +234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -268,7 +268,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -276,6 +276,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -328,7 +329,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -337,7 +338,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -388,7 +389,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -396,7 +397,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -426,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -464,7 +465,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -493,7 +494,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -510,7 +511,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -518,6 +519,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -570,7 +572,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -579,7 +581,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -639,7 +641,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -669,7 +671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -707,7 +709,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -736,7 +738,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -753,7 +755,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -761,6 +763,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -818,7 +821,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -875,7 +878,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -905,7 +908,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -942,7 +945,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -973,10 +976,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1003,7 +1006,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl @@ -1012,6 +1015,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ docs: @@ -1075,7 +1079,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -1084,7 +1088,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1148,7 +1152,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -1190,7 +1194,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1228,7 +1232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -1259,7 +1263,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -1293,7 +1297,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -1301,6 +1305,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -1354,7 +1359,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -1363,7 +1368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1414,7 +1419,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -1423,7 +1428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -1461,7 +1466,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1500,7 +1505,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -1531,7 +1536,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1548,7 +1553,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -1556,6 +1561,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -1609,7 +1615,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -1618,7 +1624,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -1678,7 +1684,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -1716,7 +1722,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -1755,7 +1761,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -1786,7 +1792,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1803,7 +1809,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -1811,6 +1817,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -1869,7 +1876,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -1926,7 +1933,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -1964,7 +1971,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2002,7 +2009,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -2035,10 +2042,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2065,7 +2072,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl @@ -2074,6 +2081,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ mypy: @@ -2136,7 +2144,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -2145,7 +2153,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2209,7 +2217,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -2244,7 +2252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2281,7 +2289,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -2310,7 +2318,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -2346,7 +2354,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -2355,6 +2363,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -2409,7 +2418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -2418,7 +2427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2469,7 +2478,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -2477,7 +2486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -2507,7 +2516,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2545,7 +2554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -2574,7 +2583,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2593,7 +2602,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -2602,6 +2611,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -2656,7 +2666,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -2665,7 +2675,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2725,7 +2735,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -2755,7 +2765,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -2793,7 +2803,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -2822,7 +2832,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -2841,7 +2851,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -2850,6 +2860,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -2909,7 +2920,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -2966,7 +2977,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -2996,7 +3007,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3033,7 +3044,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -3064,10 +3075,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3096,7 +3107,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl @@ -3106,6 +3117,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -3170,7 +3182,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -3179,7 +3191,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3243,7 +3255,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -3278,7 +3290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3315,7 +3327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py311hdae7d1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -3344,7 +3356,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311hd18a35c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -3378,7 +3390,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/6e/3721bf455834a4cfef1ecd9410666ec1d5708b32f01f57da7c10c2297e09/optree-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/67/4f/d22f79a3c56dde563c4fbc12eebf9224a1b87af5e4ec61beb11f9b3eb499/orjson-3.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -3386,6 +3398,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -3438,7 +3451,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -3447,7 +3460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3498,7 +3511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -3506,7 +3519,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -3536,7 +3549,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3574,7 +3587,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py311hd1a56c6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -3603,7 +3616,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311hf2f7c97_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3620,7 +3633,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/2c/9cf4bf8054b9e91ff9189b250e410e0b586530dcfaae28eab8904759888b/optree-0.16.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -3628,6 +3641,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -3680,7 +3694,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -3689,7 +3703,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -3748,7 +3762,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -3778,7 +3792,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -3816,7 +3830,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py311hf245fc6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -3845,7 +3859,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311h2c37856_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -3862,7 +3876,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ad/25/276ba4dae7cb5a53f9b4b24bace4db9ff93b06f62f9fa93add225244637e/optree-0.16.0-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/f9/2c/0b71a763f0f5130aa2631ef79e2cd84d361294665acccbb12b7a9813194e/orjson-3.11.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -3870,6 +3884,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -3927,7 +3942,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -3983,7 +3998,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -4013,7 +4028,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4050,7 +4065,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py311hf51aa87_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -4081,10 +4096,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py311h3257749_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4111,7 +4126,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a2/24/f29c7c819402b342020622304092a1607d6e8e8ede76610a3075663a19a7/optree-0.16.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/94/3e/afd5e284db9387023803553061ea05c785c36fe7845e4fe25912424b343f/orjson-3.11.0-cp311-cp311-win_amd64.whl @@ -4120,6 +4135,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/01/85/b52f24859237b4e9d523d5655796d911ba3d46e242eb1959c45b6af5aedd/simplejson-3.20.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py312: @@ -4182,7 +4198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -4191,7 +4207,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4255,7 +4271,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -4290,7 +4306,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4327,7 +4343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py312h680f630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -4356,7 +4372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -4390,7 +4406,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e5/33/48ac6749986e440838990a16beb830ddc1c30d8dba150a030a53377abf77/optree-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2b/e4/cf23c3f4231d2a9a043940ab045f799f84a6df1b4fb6c9b4412cdc3ebf8c/orjson-3.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -4398,6 +4414,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -4450,7 +4467,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -4459,7 +4476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4510,7 +4527,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -4518,7 +4535,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -4548,7 +4565,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4586,7 +4603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py312haba3716_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -4615,7 +4632,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4632,7 +4649,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/08/c18e47472189bf9901ce98678f958bda15ec2f39803fea83cdf88b2f8a67/optree-0.16.0-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -4640,6 +4657,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -4692,7 +4710,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -4701,7 +4719,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -4760,7 +4778,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -4790,7 +4808,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -4828,7 +4846,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py312hd3c0895_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -4857,7 +4875,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -4874,7 +4892,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/73/d106c9d4ffcd24086504539bfb333ba0fec60664b0c4b59ce6b86268c684/optree-0.16.0-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/92/c9/241e304fb1e58ea70b720f1a9e5349c6bb7735ffac401ef1b94f422edd6d/orjson-3.11.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -4882,6 +4900,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -4939,7 +4958,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -4995,7 +5014,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -5025,7 +5044,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5062,7 +5081,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py312hdabe01f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -5093,10 +5112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5123,7 +5142,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4e/9e/d485bff9dee0efa90883bb54590dd8b18067ae3ea34c34a7b91d30cd5d1d/optree-0.16.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/82/ba/ef25e3e223f452a01eac6a5b38d05c152d037508dcbf87ad2858cbb7d82e/orjson-3.11.0-cp312-cp312-win_amd64.whl @@ -5132,6 +5151,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313: @@ -5194,7 +5214,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -5203,7 +5223,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -5267,7 +5287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -5301,7 +5321,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5338,7 +5358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -5367,7 +5387,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -5401,7 +5421,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f8/4e/ef43582ef3e3dfd2a39bc3106fa543364fde1ba58489841120219da6e22f/orjson-3.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -5409,6 +5429,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -5461,7 +5482,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.2-hf8faeaf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda @@ -5470,7 +5491,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -5521,7 +5542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda @@ -5530,7 +5551,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda @@ -5560,7 +5581,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5598,7 +5619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py313hb35714d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -5627,7 +5648,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5644,7 +5665,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/e9/8abe32635c32b23e4dc8aaa93746229557046f01e2ecbf3cf8b776995a12/optree-0.16.0-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -5652,6 +5673,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -5704,7 +5726,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -5713,7 +5735,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -5773,7 +5795,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -5803,7 +5825,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -5841,7 +5863,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -5870,7 +5892,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -5887,7 +5909,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/31/63/82d9b6b48624009d230bc6038e54778af8f84dfd54402f9504f477c5cfd5/orjson-3.11.0-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl @@ -5895,6 +5917,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -5952,7 +5975,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -6009,7 +6032,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -6039,7 +6062,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6076,7 +6099,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -6107,10 +6130,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -6137,7 +6160,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/85/3f/544938dcfb7337d85ee1e43d7685cf8f3bfd452e0b15a32fe70cb4ca5094/orjson-3.11.0-cp313-cp313-win_amd64.whl @@ -6146,6 +6169,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-cuda: @@ -6208,7 +6232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -6217,7 +6241,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -6281,7 +6305,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -6315,7 +6339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6352,7 +6376,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -6381,7 +6405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -6412,15 +6436,15 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/2b/96/53928ad62ecddbf76f4c413025fdeab5a90adf7fbd970d800162399e504a/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/ef/1fe3c10c27199fbaf593ee7c53226e4eae057d505207707cd815a8ee0764/jax_cuda12_pjrt-0.7.0-py3-none-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/0d/c2/0f5698d4ececeff3cf0e9802b1f58f137adea83562cfa735591436978a49/jax_cuda12_plugin-0.7.0-cp313-cp313-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c7/83/7ba260095e98a5004af4fdb4315010c445441473cac41afdb973bf212deb/jaxlib-0.7.0-cp313-cp313-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl @@ -6442,6 +6466,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-jax: @@ -6504,7 +6529,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-h5888daf_0.conda @@ -6513,7 +6538,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -6577,7 +6602,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -6611,7 +6636,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6648,7 +6673,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.26.0-py313h4b2b08d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -6677,7 +6702,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda @@ -6708,13 +6733,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/83/7ba260095e98a5004af4fdb4315010c445441473cac41afdb973bf212deb/jaxlib-0.7.0-cp313-cp313-manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/ef/dc43196b9d49b2c587daf0ab450af36968d83d59332c9f256db12b666672/optree-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -6724,6 +6749,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -6776,7 +6802,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -6785,7 +6811,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -6845,7 +6871,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -6875,7 +6901,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -6913,7 +6939,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -6942,7 +6968,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -6956,13 +6982,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/59/5da0b3cd10f024aaf430707d43d129a36ccd4db240f67561b2386efcf440/jaxlib-0.7.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl @@ -6972,6 +6998,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -7029,7 +7056,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -7086,7 +7113,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda @@ -7116,7 +7143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -7153,7 +7180,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.26.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -7184,10 +7211,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -7211,13 +7238,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/0f/aaf5b2e5b4e8bf7171bc8e96508a3c8c04601b31c399c965b9929d7f2f01/jaxlib-0.7.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/40/e5/1f61f454101da963d8da10864291141d27e43ff7a305aa8d708990e41cba/optree-0.16.0-cp313-cp313-win_amd64.whl @@ -7228,6 +7255,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-metal: @@ -7286,7 +7314,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.2-h1dc7a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gprof2dot-2024.6.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda @@ -7295,7 +7323,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -7355,7 +7383,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda @@ -7385,7 +7413,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.2.0-pyha770c72_0.conda @@ -7423,7 +7451,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.26.0-py313hf3ab51e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda @@ -7452,7 +7480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -7466,14 +7494,14 @@ environments: - pypi: https://files.pythonhosted.org/packages/e7/da/38f4a19fadd86416551871fa1cc385df61b0f54656e1def4892c148cfd8f/choreographer-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/47/85/048b6f1779f0d46f594122b1c73e016500098560b570fd81c5b5578a4d47/dags-0.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/f5/ee39c6e92acc742c052f137b47c210cd0a1b72dcd3f98495528bb4d27761/flatten_dict-0.4.2-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/82/59/5da0b3cd10f024aaf430707d43d129a36ccd4db240f67561b2386efcf440/jaxlib-0.7.0-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/0e/853df00cac4823eaa8f35114d0d0ad1e2ec6b8243ce4acf5f8ac5235c517/kaleido-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/df/e51691ab004d74fa25b751527d041ad1b4d84ee86cbcb8630ab0d7d5188e/logistro-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl - - pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8b/70/3b8d96e14c182e606d83402e27b364b50a34a992b7c4ac419de2deed3609/optree-0.16.0-cp313-cp313-macosx_11_0_arm64.whl @@ -7483,6 +7511,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl - pypi: ./ @@ -7915,7 +7944,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/babel?source=compressed-mapping + - pkg:pypi/babel?source=hash-mapping size: 6938256 timestamp: 1738490268466 - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda @@ -8720,7 +8749,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=compressed-mapping + - pkg:pypi/coverage?source=hash-mapping size: 408935 timestamp: 1751548907734 - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.9.2-py312h05f76fc_0.conda @@ -8929,7 +8958,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/debugpy?source=compressed-mapping + - pkg:pypi/debugpy?source=hash-mapping size: 2749019 timestamp: 1752827125812 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.15-py313hab38a8b_0.conda @@ -9330,50 +9359,51 @@ packages: purls: [] size: 64567 timestamp: 1604417122064 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb - md5: 201db6c2d9a3c5e46573ac4cb2e92f4f +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h7b179bb_1.conda + sha256: 3258e4112d52f376d98cd645a3c8d44af28bf0fc4bcae92231ad7a1e14694c2a + md5: c050572442da94589ef8fe2f7ffbaa0d depends: - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libglib >=2.84.2,<3.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 528149 - timestamp: 1715782983957 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 - md5: ee186d2e8db4605030753dc05025d4a0 + size: 571494 + timestamp: 1753107104994 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h8ff8e49_1.conda + sha256: 23c7ca39607cb5cb334c31d2a282125c528b84210f8f672e9319e6f68e3c4c55 + md5: 168c1030975b23daf63e52ba797dac10 depends: - __osx >=10.13 - - libglib >=2.80.2,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 + - libglib >=2.84.2,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 516815 - timestamp: 1715783154558 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 - md5: 151309a7e1eb57a3c2ab8088a1d74f3e + size: 550143 + timestamp: 1753107311465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h0094380_1.conda + sha256: 16988daf12fae1e00d6a3f43f339b9b37b76e1f1e7751eee77c5ce4a6d921913 + md5: 98f8d2a25d6e88eb1ab5e6d172ff0630 depends: - __osx >=11.0 - - libglib >=2.80.2,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 + - libglib >=2.84.2,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libpng >=1.6.50,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 509570 - timestamp: 1715783199780 + size: 543651 + timestamp: 1753107556056 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 md5: 49c36fcad2e9af6b91e91f2ce5be8ebd @@ -9391,22 +9421,10 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev535+g18c403c1b.d20250723 - sha256: f1c50ee4113d5524d34abe12998995f1f0ce30bb377618f3b7badc667f812cb1 + version: 0.7.1.dev195+g500e291ef.d20250724 + sha256: 964dc3ae839aab71261de7fe6978a3975732e6e89a6d27c634d416de4c1f1e0c requires_dist: - - dags>=0.4.1 - - ipywidgets - - networkx>=3.5 - - numpy - - numpy-groupies - - openpyxl - - optree>=0.16.0 - - pandas - - plotly>=6.2.0 - - pygments - - pygraphviz - - pytest - - pyyaml + - ttsim-backend requires_python: '>=3.11' editable: true - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda @@ -9754,79 +9772,79 @@ packages: - pkg:pypi/h2?source=hash-mapping size: 53888 timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - sha256: 5bd0f3674808862838d6e2efc0b3075e561c34309c5c2f4c976f7f1f57c91112 - md5: 0e6e192d4b3d95708ad192d957cf3163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.3.2-hbb57e21_0.conda + sha256: 43f55e45db9c38bb2e120056075539160a9ef6823c4838b47fcd350ba68e8793 + md5: 3fd3a7b746952a47579b8ba5dd20dbe8 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - freetype - graphite2 - icu >=75.1,<76.0a0 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libgcc >=13 - - libglib >=2.84.1,<3.0a0 - - libstdcxx >=13 + - libgcc >=14 + - libglib >=2.84.2,<3.0a0 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1730226 - timestamp: 1747091044218 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - sha256: ed21d2e7ebe6f77154b7b851dfd0c9e5d4b8c590badb54ca4094cee1cf9ad470 - md5: ecd1e793e20518bf438a0d5070465ecb + size: 1802972 + timestamp: 1753107252406 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.3.2-hb258ee5_0.conda + sha256: e508f7ab1057e09b64db770ce63c39bf96bf3048270c6dd1cfe9633a66752943 + md5: eb6fefcaca86c224f7e5a634d4c5040c depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - freetype - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.7.0,<3.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 + - libglib >=2.84.2,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1470019 - timestamp: 1747091292339 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - sha256: 244e4071229aa3b824dd2a9814c0e8b4c2b40dfb28914ec2247bf27c5c681584 - md5: 12f4520f618ff6e398a2c8e0bed1e580 + size: 1497334 + timestamp: 1753107340392 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.3.2-hcb8449c_0.conda + sha256: ac2842ee6410d2df263b40608a486adc9bcda42112172863cb4349183d28c3a6 + md5: 1b35efe0fecb125816460e66ff42961c depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - freetype - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.7.0,<3.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 + - libglib >=2.84.2,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1395282 - timestamp: 1747091793921 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.2.1-h8796e6f_0.conda - sha256: 26e09e2b43d498523c08c58ea485c883478b74e2fb664c0321089e5c10318d32 - md5: bccea58fbf7910ce868b084f27ffe8bd + size: 1417023 + timestamp: 1753107665621 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.3.2-h8796e6f_0.conda + sha256: dd18029b71709edfce147592387c90e6e24b2adaa995620a0adaf89893c5815f + md5: c28aee9025d2bb086e03bb6b0eab23a3 depends: - cairo >=1.18.4,<2.0a0 - freetype - graphite2 - icu >=75.1,<76.0a0 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 + - libglib >=2.84.2,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -9834,8 +9852,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1126103 - timestamp: 1747093237683 + size: 1135115 + timestamp: 1753107637902 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 md5: bbf6f174dcd3254e19a2f5d2295ce808 @@ -10144,7 +10162,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/ipython?source=compressed-mapping + - pkg:pypi/ipython?source=hash-mapping size: 628259 timestamp: 1751465044469 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda @@ -10187,42 +10205,46 @@ packages: - pkg:pypi/isoduration?source=hash-mapping size: 19832 timestamp: 1733493720346 -- pypi: https://files.pythonhosted.org/packages/31/a8/97ef0cbb7a17143ace2643d600a7b80d6705b2266fc31078229e406bdef2/jax-0.6.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/ad/de/3092df5073cd9c07c01b10612fc541538b74b02184fac90e3beada20f758/jax-0.7.0-py3-none-any.whl name: jax - version: 0.6.2 - sha256: bb24a82dc60ccf704dcaf6dbd07d04957f68a6c686db19630dd75260d1fb788c + version: 0.7.0 + sha256: 62833036cbaf4641d66ae94c61c0446890a91b2c0d153946583a0ebe04877a76 requires_dist: - - jaxlib<=0.6.2,>=0.6.2 + - jaxlib<=0.7.0,>=0.7.0 - ml-dtypes>=0.5.0 - numpy>=1.26 - opt-einsum - scipy>=1.12 - - jaxlib==0.6.2 ; extra == 'minimum-jaxlib' - - jaxlib==0.6.1 ; extra == 'ci' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'tpu' - - libtpu==0.0.17.* ; extra == 'tpu' + - jaxlib==0.7.0 ; extra == 'minimum-jaxlib' + - jaxlib==0.6.2 ; extra == 'ci' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'tpu' + - libtpu==0.0.19.* ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.2,>=0.6.2 ; extra == 'cuda12' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.2,>=0.6.2 ; extra == 'cuda12-local' - - jaxlib<=0.6.2,>=0.6.2 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.2,>=0.6.2 ; extra == 'rocm' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.7.0,>=0.7.0 ; extra == 'cuda' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.7.0,>=0.7.0 ; extra == 'cuda12' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'cuda13' + - jax-cuda13-plugin[with-cuda]<=0.7.0,>=0.7.0 ; extra == 'cuda13' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.7.0,>=0.7.0 ; extra == 'cuda12-local' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'cuda13-local' + - jax-cuda13-plugin<=0.7.0,>=0.7.0 ; extra == 'cuda13-local' + - jaxlib<=0.7.0,>=0.7.0 ; extra == 'rocm' + - jax-rocm60-plugin<=0.7.0,>=0.7.0 ; extra == 'rocm' - kubernetes ; extra == 'k8s' - xprof ; extra == 'xprof' - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/9c/8e/21c21b4335fce1c022c339da5e6b6249c246ad062e924d28fb0eda4bcef0/jax_cuda12_pjrt-0.6.2-py3-none-manylinux2014_x86_64.whl + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/49/ef/1fe3c10c27199fbaf593ee7c53226e4eae057d505207707cd815a8ee0764/jax_cuda12_pjrt-0.7.0-py3-none-manylinux2014_x86_64.whl name: jax-cuda12-pjrt - version: 0.6.2 - sha256: 8cd9ead7948ea2c778a508fef5d1159e8b7abf4fccc7037c3fe1dbfcd95012dc -- pypi: https://files.pythonhosted.org/packages/2b/96/53928ad62ecddbf76f4c413025fdeab5a90adf7fbd970d800162399e504a/jax_cuda12_plugin-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + version: 0.7.0 + sha256: 742cc260d697771cb883084398748a007d233286aa3fe5fc152a74c073d59a24 +- pypi: https://files.pythonhosted.org/packages/0d/c2/0f5698d4ececeff3cf0e9802b1f58f137adea83562cfa735591436978a49/jax_cuda12_plugin-0.7.0-cp313-cp313-manylinux2014_x86_64.whl name: jax-cuda12-plugin - version: 0.6.2 - sha256: db4c6103c912d8cd1adf94c34d313bb4760ca7f01c897ca7cd62e65f27994199 + version: 0.7.0 + sha256: bfde0db714b2ad5fe9e86c1f6d2e60c7d4d980d015029858208828abcd8274cf requires_dist: - - jax-cuda12-pjrt==0.6.2 + - jax-cuda12-pjrt==0.7.0 - nvidia-cublas-cu12>=12.1.3.1 ; extra == 'with-cuda' - nvidia-cuda-cupti-cu12>=12.1.105 ; extra == 'with-cuda' - nvidia-cuda-nvcc-cu12>=12.6.85 ; extra == 'with-cuda' @@ -10235,7 +10257,7 @@ packages: - nvidia-nvjitlink-cu12>=12.1.105 ; extra == 'with-cuda' - nvidia-cuda-nvrtc-cu12>=12.1.55 ; extra == 'with-cuda' - nvidia-nvshmem-cu12>=3.2.5 ; extra == 'with-cuda' - requires_python: '>=3.10' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/09/dc/6d8fbfc29d902251cf333414cf7dcfaf4b252a9920c881354584ed36270d/jax_metal-0.1.1-py3-none-macosx_13_0_arm64.whl name: jax-metal version: 0.1.1 @@ -10245,33 +10267,33 @@ packages: - six>=1.15.0 - jaxlib>=0.4.34 - jax>=0.4.34 -- pypi: https://files.pythonhosted.org/packages/06/b9/ea50792ee0333dba764e06c305fe098bce1cb938dcb66fbe2fc47ef5dd02/jaxlib-0.6.2-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/3d/0f/aaf5b2e5b4e8bf7171bc8e96508a3c8c04601b31c399c965b9929d7f2f01/jaxlib-0.7.0-cp313-cp313-win_amd64.whl name: jaxlib - version: 0.6.2 - sha256: b977604cd36c74b174d25ed685017379468138eb747d865f75e466cb273c801d + version: 0.7.0 + sha256: 996b53c6b200ff95e5991d51ec01f095733323867596826ffbc0c560bb27f5ee requires_dist: - scipy>=1.12 - numpy>=1.26 - ml-dtypes>=0.5.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/34/16/e93f0184b80a4e1ad38c6998aa3a2f7569c0b0152cbae39f7572393eda04/jaxlib-0.6.2-cp313-cp313-manylinux2014_x86_64.whl + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/82/59/5da0b3cd10f024aaf430707d43d129a36ccd4db240f67561b2386efcf440/jaxlib-0.7.0-cp313-cp313-macosx_11_0_arm64.whl name: jaxlib - version: 0.6.2 - sha256: f94163f14c8fd3ba93ae14b631abacf14cb031bba0b59138869984b4d10375f8 + version: 0.7.0 + sha256: 3a8f329f054d2e08093cd5a4af9328cce12c3b5fab4bda5e2c5cdadc63b5ed2d requires_dist: - scipy>=1.12 - numpy>=1.26 - ml-dtypes>=0.5.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/af/38/bed4279c2a3407820ed8bcd72dbad43c330ada35f88fafe9952b35abf785/jaxlib-0.6.2-cp313-cp313-macosx_11_0_arm64.whl + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/c7/83/7ba260095e98a5004af4fdb4315010c445441473cac41afdb973bf212deb/jaxlib-0.7.0-cp313-cp313-manylinux2014_x86_64.whl name: jaxlib - version: 0.6.2 - sha256: bff67b188133ce1f0111c7b163ac321fd646b59ed221ea489063e2e0f85cb967 + version: 0.7.0 + sha256: df31664a53c13a9263bca0e8c39e0380a0ccae0b1c125376df63a480d9cb2087 requires_dist: - scipy>=1.12 - numpy>=1.26 - ml-dtypes>=0.5.0 - requires_python: '>=3.10' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/c9/b9/281e10e2d967ea5e481683eaec99f55ac5a61085ee60551c36942ef32bef/jaxtyping-0.3.2-py3-none-any.whl name: jaxtyping version: 0.3.2 @@ -10478,6 +10500,7 @@ packages: - rpds-py >=0.7.1 - python license: MIT + license_family: MIT purls: - pkg:pypi/jsonschema?source=compressed-mapping size: 81493 @@ -10510,6 +10533,7 @@ packages: - uri-template - webcolors >=24.6.0 license: MIT + license_family: MIT purls: [] size: 4744 timestamp: 1752925388185 @@ -10522,6 +10546,7 @@ packages: - python >=3.9 - python license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/jupyter-lsp?source=compressed-mapping size: 58416 @@ -11617,16 +11642,16 @@ packages: purls: [] size: 638142 timestamp: 1740128665984 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - sha256: 33828b83c29f4fcee0ae5f740b5e4660bee3793df8c9079e279284604858c0ac - md5: 27e7ef1f0d8c47ae5acd6e0e15c08f8d +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda + sha256: 8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe122 + md5: a8e54eefc65645193c46e8b180f62d22 depends: - __osx >=10.13 - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 97550 - timestamp: 1751558234755 + size: 96909 + timestamp: 1753343977382 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a md5: 5103f6a6b210a3912faf8d7db516918c @@ -12032,49 +12057,51 @@ packages: purls: [] size: 202344 timestamp: 1716828757533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_0.conda - sha256: 10891c917031d27c546d397f22e09c449c6c10782f2c0a069f361a502d286f3c - md5: 4fe4c3b7ce84cda6508b6d78f0ce72e3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.3-hee844dc_1.conda + sha256: 8c4faf560815a6d6b5edadc019f76d22a45171eaa707a1f1d1898ceda74b2e3f + md5: 18d2ac95b507ada9ca159a6bd73255f7 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=14 - libzlib >=1.3.1,<2.0a0 - license: Unlicense + license: blessing purls: [] - size: 935794 - timestamp: 1752825101149 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h39a8b3b_0.conda - sha256: a87f01c56d9a4b0418e5aa2877399ab8992dc56c0457d5d6ce6369f8eef06c8d - md5: 41e1a78df514ac69dd9d22a804d51310 + size: 936339 + timestamp: 1753262589168 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.3-h875aaf5_1.conda + sha256: 3a585d1ddf823a3d7b033196d4aa769971922a984b0735ba741f3cc756a2e576 + md5: 10de0664b3e6f560c7707890aca8174c depends: - __osx >=10.13 + - icu >=75.1,<76.0a0 - libzlib >=1.3.1,<2.0a0 - license: Unlicense + license: blessing purls: [] - size: 980097 - timestamp: 1752825255099 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-hf8de324_0.conda - sha256: d5bfc49bf5f68318830dfc359739386e32413a873072fc78994ced6af3fd08df - md5: 4366ba8a8b7a283aaaca877597be65df + size: 984580 + timestamp: 1753262751819 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.3-h4237e3c_1.conda + sha256: 248ba9622ee91c3ae1266f7b69143adf5031e1f2d94b6d02423e192e47531697 + md5: 6d034f4604ac104a1256204af7d1a534 depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libzlib >=1.3.1,<2.0a0 - license: Unlicense + license: blessing purls: [] - size: 899228 - timestamp: 1752825238869 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_0.conda - sha256: 126208598efd31adf60ee7e66db848a5a081143fb6cd470640712d15f95f123b - md5: c93ed8c395dc41956fe29c5470dea103 + size: 902818 + timestamp: 1753262833682 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.3-hf5d6505_1.conda + sha256: 9bf199ca8b388d8585c53432949524767532f84a5a881f1cef4808d0e7a3f95a + md5: 8b63428047c82a0b853aa348fe56071c depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - license: Unlicense + license: blessing purls: [] - size: 1287892 - timestamp: 1752825177322 + size: 1287590 + timestamp: 1753262771829 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 md5: 6d11a5edae89fe413c0569f16d308f5a @@ -12822,10 +12849,10 @@ packages: - pkg:pypi/myst-parser?source=hash-mapping size: 73074 timestamp: 1739381945342 -- pypi: https://files.pythonhosted.org/packages/c0/15/278693412221859a0159719878e51a79812a189edceef2fe325160a8e661/narwhals-1.47.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/75/72/5406044d4c251f3d8f78cec05b74839d0332d34c9e94b59120f3697ecf48/narwhals-1.48.0-py3-none-any.whl name: narwhals - version: 1.47.1 - sha256: b9f2b2557aba054231361a00f6fcabc5017e338575e810e82155eb34e38ace93 + version: 1.48.0 + sha256: 2bbddc3adeed0c5b15ead8fe61f1d5e459f00c1d2fa60921e52a0f9bdc06077d requires_dist: - cudf>=24.10.0 ; extra == 'cudf' - dask[dataframe]>=2024.8 ; extra == 'dask' @@ -13196,7 +13223,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=compressed-mapping + - pkg:pypi/numpy?source=hash-mapping size: 6651591 timestamp: 1752612968284 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h674b998_1.conda @@ -14903,7 +14930,7 @@ packages: - python >=3.9 license: ISC purls: - - pkg:pypi/pexpect?source=compressed-mapping + - pkg:pypi/pexpect?source=hash-mapping size: 53561 timestamp: 1733302019362 - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda @@ -14917,52 +14944,52 @@ packages: - pkg:pypi/pickleshare?source=hash-mapping size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d - md5: 39b4228a867772d610c02e06f939a5b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h537e5f6_0.conda + sha256: f1a4bed536f8860b4e67fcd17662884dfa364e515c195c6d2e41dbf70f19263b + md5: b0674781beef9e302a17c330213ec41a depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] - size: 402222 - timestamp: 1749552884791 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 - md5: e1e0595633f79ce40f3fba9a337a155b + size: 410140 + timestamp: 1753105399719 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h6f2c7e4_0.conda + sha256: 50b797e4c2a731a34dc14cef69126c1cfd1027fa0f6e2da91f2cef163c719297 + md5: fdef1ec0a7e469700857c69c320cfaa5 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=19 license: MIT license_family: MIT purls: [] - size: 345091 - timestamp: 1749552991974 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 - md5: 0587a57e200568a71982173c07684423 + size: 344815 + timestamp: 1753105513614 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h2c80e29_0.conda + sha256: e3cc5e23d08f36d0f5e61c1dda4f77186c02000d85ab270a975597e739ea3d1b + md5: d0b56a7fe83936833d95a3edba82f636 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 license: MIT license_family: MIT purls: [] - size: 214660 - timestamp: 1749553221709 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e - md5: 2566a45fb15e2f540eff14261f1242af + size: 216603 + timestamp: 1753105703306 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-hc614b68_0.conda + sha256: 7fef7c34463fb509b69e87c61d867d0271b670662e01035a0f0e00c6041ef325 + md5: 04170282e8afb5a5e0d7168b0840f91b depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: MIT license_family: MIT purls: [] - size: 476515 - timestamp: 1749553103224 + size: 481255 + timestamp: 1753105512175 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3 md5: 424844562f5d337077b445ec6b1398a7 @@ -16737,6 +16764,7 @@ packages: - lark >=1.2.2 - python license: MIT + license_family: MIT purls: - pkg:pypi/rfc3987-syntax?source=hash-mapping size: 22913 @@ -16796,7 +16824,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/rpds-py?source=compressed-mapping + - pkg:pypi/rpds-py?source=hash-mapping size: 388125 timestamp: 1751467685278 - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.26.0-py311hd1a56c6_0.conda @@ -17187,17 +17215,18 @@ packages: version: 3.20.1 sha256: 1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb requires_python: '>=2.5,!=3.0.*,!=3.1.*,!=3.2.*' -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d + md5: 3339e3b65d58accf4ca4fb8748ab16b3 depends: - python >=3.9 + - python license: MIT license_family: MIT purls: - - pkg:pypi/six?source=hash-mapping - size: 16385 - timestamp: 1733381032766 + - pkg:pypi/six?source=compressed-mapping + size: 18455 + timestamp: 1753199211006 - conda: https://conda.anaconda.org/conda-forge/noarch/snakeviz-2.2.2-pyhd8ed1ab_1.conda sha256: 833326122c18887b338262c13365cb146b6702c79d72da74a1c6b8af4c50e162 md5: 421b7a950e384949ca1b0f04f0751ce0 @@ -17712,6 +17741,25 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110051 timestamp: 1733367480074 +- pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + name: ttsim-backend + version: 1.0a1 + sha256: 7d7446faeb90d980dd0b50ba0f7d1fbd441bf5a8c76b08c1911fb719b992d78f + requires_dist: + - dags>=0.4.1 + - ipywidgets + - networkx>=3.5 + - numpy + - numpy-groupies + - openpyxl + - optree>=0.16.0 + - pandas + - plotly>=6.2.0 + - pygments + - pygraphviz + - pytest + - pyyaml + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20250708-pyhd8ed1ab_0.conda sha256: 843bbc8e763a96b2b4ea568cf7918b6027853d03b5d8810ab77aaa9af472a6e2 md5: b6d4c200582ead6427f49a189e2c6d65 @@ -17996,33 +18044,33 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 101735 timestamp: 1750271478254 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_28.conda - sha256: f0eb16aa1f3de1e408f1114d1f407489ea141853cef3655005ff042dc4b1fb1c - md5: db018bf64624649a6cac827533c7971e +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_30.conda + sha256: 8e16a8c3270d88735234a8097d45efea02b49751800c83b6fd5f2167a3828f52 + md5: 76b6febe6dea7991df4c86f826f396c5 depends: - - vc14_runtime >=14.44.35208 + - vc14_runtime >=14.42.34433 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17900 - timestamp: 1752820828309 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_28.conda - sha256: 389363ea52734bc59178a6c581500d3721b005614e8230519fc53429a5508428 - md5: c5dbb7fee79868438261a74498fb6082 + size: 17962 + timestamp: 1753139853244 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_30.conda + sha256: 2958ef637509d69ea496b091dc579f1bf38687575b65744e73d157cfe56c9eca + md5: fa6802b52e903c42f882ecd67731e10a depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.44.35208.* *_28 + - vs2015_runtime 14.44.35208.* *_30 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 756360 - timestamp: 1752820824303 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - sha256: 763dc774200b2eebdf5437b112834c5455a1dd1c9b605340696950277ff36729 - md5: c0600c1b374efa7a1ff444befee108ca + size: 754911 + timestamp: 1753139843755 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.32.0-pyhd8ed1ab_0.conda + sha256: 7a6eb58af8aa022202ca9f29aa6278f8718780a190de90280498ffd482f23e3e + md5: 3d6c6f6498c5fb6587dc03ff9541feeb depends: - distlib >=0.3.7,<1 - filelock >=3.12.2,<4 @@ -18032,18 +18080,18 @@ packages: license_family: MIT purls: - pkg:pypi/virtualenv?source=hash-mapping - size: 4133755 - timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_28.conda - sha256: b1fea228c631dbd329f5fe5c985077b6e7d77a4f7b9d36022ba6879b9a0b8439 - md5: 1ad7cfc5889b28538c889700731ce9fd + size: 4135484 + timestamp: 1753096346652 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_30.conda + sha256: 99785cef95465045eb10b4e72ae9c2c4e25626a676b859c51af01ab3b92e7ef0 + md5: 1a877c8c882c297656e4bea2c0d55adc depends: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD purls: [] - size: 17846 - timestamp: 1752820828662 + size: 17888 + timestamp: 1753139847915 - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl name: wadler-lindig version: 0.1.7 diff --git a/pyproject.toml b/pyproject.toml index 524954a5ba..8609e6bc37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,29 +40,15 @@ classifiers = [ ] # Dependencies and requirements requires-python = ">=3.11" -dependencies = [ - "dags>=0.4.1", - "ipywidgets", - "networkx>=3.5", - "numpy-groupies", - "numpy", - "openpyxl", - "optree>=0.16.0", - "pandas", - "plotly>=6.2.0", - "pygments", - "pygraphviz", - "pytest", - "pyyaml", -] +dependencies = ["ttsim-backend"] [project.urls] -Repository = "https://github.com/iza-institute-of-labor-economics/gettsim" +Repository = "https://github.com/ttsim-dev/gettsim" Changelog = "https://gettsim.readthedocs.io/en/stable/changes.html" Documentation = "https://gettsim.readthedocs.io" -Github = "https://github.com/iza-institute-of-labor-economics/gettsim" -Tracker = "https://github.com/iza-institute-of-labor-economics/gettsim/issues" +Github = "https://github.com/ttsim-dev/gettsim" +Tracker = "https://github.com/ttsim-dev/gettsim/issues" # ====================================================================================== @@ -246,8 +232,12 @@ exclude = [] [tool.ruff.lint.per-file-ignores] "conftest.py" = ["ANN"] "docs/*" = ["INP001", "T201"] -# Cannot have default values in test functions with fixtures -- not an issue here. -"src/gettsim/__init__.py" = ["PT028"] + +"src/gettsim/__init__.py" = [ + "PLW0127", # Re-export things for tab-completion explicitly. + "PT028", # Cannot have default values in test functions with fixtures -- not an issue here. +] + # Mostly things vectorization can't handle "src/_gettsim/*" = ["E501", "PLR1714", "PLR1716", "E721", "SIM108", "RET"] # Lohnsteuerklassen and age groups are fine to hard-code. @@ -255,20 +245,8 @@ exclude = [] "src/_gettsim/familie/familie.py" = ["PLR2004"] # All tests return None and use asserts "src/_gettsim_tests/**/*.py" = ["ANN", "S101"] -# Long lines. -"src/ttsim/interface_dag_elements/specialized_environment.py" = ["E501"] -"src/ttsim/interface_dag_elements/fail_if.py" = ["E501"] -# Mostly things vectorization can't handle -"tests/ttsim/mettsim/**/*.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] -"tests/ttsim/tt_dag_elements/test_vectorization.py" = ["PLR1714", "PLR1716", "E721", "SIM108", "RET"] -# All tests return None and use asserts -"tests/ttsim/**/*.py" = ["ANN", "INP001", "PLR2004", "S101"] -# Long lines. -"tests/ttsim/interface_dag_elements/test_failures.py" = ["E501"] # TODO: remove once ported nicely -"src/ttsim/stale_code_storage.py" = ["ALL"] "outdated_docs/**/*.ipynb" = ["ALL"] -"src/_gettsim_tests/test_docs.py" = ["ALL"] [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -292,32 +270,14 @@ disallow_empty_bodies = false disable_error_code = ["overload-cannot-match"] [[tool.mypy.overrides]] -module = [ - "conftest", - "src.ttsim.stale_code_storage", - "src._gettsim_tests.test_docs", -] +module = ["conftest"] disallow_untyped_defs = false ignore_errors = true - -[[tool.mypy.overrides]] -module = ["tests.*",] -disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter source code. - [[tool.mypy.overrides]] module = ["src._gettsim_tests.*",] disable_error_code = ["no-untyped-def"] # All tests return None, don't clutter source code. -[[tool.mypy.overrides]] -module = ["src.ttsim.main_args",] -disable_error_code = ["no-redef"] # Instantiate dataclass with same name as elements. - - -[tool.check-manifest] -ignore = ["src/_gettsim/_version.py"] - - # ====================================================================================== # pytest configuration @@ -343,10 +303,7 @@ markers = [ "skipif_numpy: skip test if backend is numpy" ] norecursedirs = ["docs"] -testpaths = [ - "src/_gettsim_tests", - "tests/ttsim", -] +testpaths = ["src/_gettsim_tests"] # ====================================================================================== # yamlfix configuration diff --git a/sandbox/check-autocomplete.ipynb b/sandbox/check-autocomplete.ipynb deleted file mode 100644 index 2e13e29a4c..0000000000 --- a/sandbox/check-autocomplete.ipynb +++ /dev/null @@ -1,92 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "from ttsim import IDEs" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x = IDEs()\n", - "x.input_data.df_and_mapper.df = pd.DataFrame()\n", - "x.input_data.df_and_mapper.mapper = {}\n", - "x.policy_date_str = \"2025-01-01\"\n", - "x.backend = \"numpy\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "x.input_data.tree = {\"a\": [1, 2, 3]}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/sandbox/interface-playground.ipynb b/sandbox/interface-playground.ipynb index d8214d2c9b..0b7c5ebc57 100644 --- a/sandbox/interface-playground.ipynb +++ b/sandbox/interface-playground.ipynb @@ -8,10 +8,8 @@ "source": [ "import pandas as pd\n", "\n", - "from gettsim import InputData, MainTarget, TTTargets, main\n", - "\n", "# Please ignore the import location for now; will be from gettsim in the future\n", - "from ttsim.tt_dag_elements import ScalarParam" + "from gettsim import InputData, MainTarget, TTTargets, main, tt" ] }, { @@ -412,7 +410,7 @@ " \"beitragssatz\"\n", "]\n", "policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"] = (\n", - " ScalarParam(value=old_beitragssatz.value + 0.01)\n", + " tt.ScalarParam(value=old_beitragssatz.value + 0.01)\n", ")" ] }, diff --git a/sandbox/plots.ipynb b/sandbox/plots.ipynb index 29f3fcdb8b..dd3ca15727 100644 --- a/sandbox/plots.ipynb +++ b/sandbox/plots.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "outputs": [], "source": [ - "from ttsim.plot_dag import plot_interface_dag\n", + "from gettsim.plot_dag import plot_interface_dag\n", "\n", "plot_interface_dag()" ] diff --git a/src/_gettsim/arbeitslosengeld_2/aggregations.py b/src/_gettsim/arbeitslosengeld_2/aggregations.py index b0cb417f37..6c63bfdc06 100644 --- a/src/_gettsim/arbeitslosengeld_2/aggregations.py +++ b/src/_gettsim/arbeitslosengeld_2/aggregations.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, agg_by_group_function, join, @@ -12,7 +12,9 @@ ) if TYPE_CHECKING: - from ttsim.tt_dag_elements.typing import BoolColumn, IntColumn, ModuleType + from types import ModuleType + + from gettsim.typing import BoolColumn, IntColumn @policy_function(start_date="2005-01-01") diff --git a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py index 8129bd93a2..491e76f9d9 100644 --- a/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py +++ b/src/_gettsim/arbeitslosengeld_2/arbeitslosengeld_2.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(start_date="2005-01-01") @@ -22,7 +22,7 @@ def betrag_m_bg( # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is # resolved, remove the `volljährige_alle_rentenbezieher_hh` condition. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + # https://github.com/ttsim-dev/gettsim/issues/703 if ( vorrangprüfungen__wohngeld_vorrang_vor_arbeitslosengeld_2_bg or vorrangprüfungen__kinderzuschlag_vorrang_vor_arbeitslosengeld_2_bg diff --git a/src/_gettsim/arbeitslosengeld_2/einkommen.py b/src/_gettsim/arbeitslosengeld_2/einkommen.py index 97ea632704..79418d1cdd 100644 --- a/src/_gettsim/arbeitslosengeld_2/einkommen.py +++ b/src/_gettsim/arbeitslosengeld_2/einkommen.py @@ -4,9 +4,10 @@ from typing import TYPE_CHECKING -from ttsim.interface_dag_elements.shared import upsert_tree -from ttsim.tt_dag_elements import ( +from gettsim import upsert_tree +from gettsim.tt import ( PiecewisePolynomialParamValue, + RawParam, get_piecewise_parameters, param_function, piecewise_polynomial, @@ -16,8 +17,6 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import RawParam - @policy_function(start_date="2005-01-01") def anzurechnendes_einkommen_m( diff --git "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" index 35e742990c..f4c7deadcf 100644 --- "a/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" +++ "b/src/_gettsim/arbeitslosengeld_2/freibetr\303\244ge_verm\303\266gen.py" @@ -2,11 +2,11 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 +# https://github.com/ttsim-dev/gettsim/issues/1009 @policy_function(start_date="2005-01-01", end_date="2022-12-31") def grundfreibetrag_vermögen( ist_kind_in_bedarfsgemeinschaft: bool, @@ -31,9 +31,9 @@ def grundfreibetrag_vermögen( # TODO(@MImmesberger): Parameter should be defined as a piecewise_constant. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/911 +# https://github.com/ttsim-dev/gettsim/issues/911 # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 +# https://github.com/ttsim-dev/gettsim/issues/1009 @policy_function(start_date="2005-01-01", end_date="2022-12-31") def maximaler_grundfreibetrag_vermögen( geburtsjahr: int, diff --git a/src/_gettsim/arbeitslosengeld_2/inputs.py b/src/_gettsim/arbeitslosengeld_2/inputs.py index bf33d757de..125e3c8193 100644 --- a/src/_gettsim/arbeitslosengeld_2/inputs.py +++ b/src/_gettsim/arbeitslosengeld_2/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import FKType, policy_input +from gettsim.tt import FKType, policy_input @policy_input(start_date="2023-01-01") @@ -12,7 +12,7 @@ def bezug_im_vorjahr() -> bool: # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt once # Bedarfsgemeinschaften are fully endogenous -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 +# https://github.com/ttsim-dev/gettsim/issues/763 @policy_input(start_date="2005-01-01") def eigenbedarf_gedeckt() -> bool: """Needs according to SGB II are covered by own income.""" diff --git "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" index d86d980e77..f7d13d138a 100644 --- "a/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" +++ "b/src/_gettsim/arbeitslosengeld_2/kindergeld\303\274bertrag.py" @@ -4,12 +4,17 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import AggType, agg_by_p_id_function, join, policy_function +from gettsim.tt import ( + AggType, + agg_by_p_id_function, + join, + policy_function, +) if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import BoolColumn, FloatColumn, IntColumn + from gettsim.typing import BoolColumn, FloatColumn, IntColumn @agg_by_p_id_function(start_date="2005-01-01", agg_type=AggType.SUM) diff --git a/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml b/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml index a925c43ee4..7d6d444cb0 100644 --- a/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml +++ b/src/_gettsim/arbeitslosengeld_2/kosten_der_unterkunft.yaml @@ -10,14 +10,14 @@ mietobergrenze_pro_qm: für ALG2 berechtigt zu sein. Diese Grenze ist nicht konkret im Gesetz festgehalten, sondern wird als Faustregel von den Arbeitsargenturen verwendet. Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe - Issue https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + Issue https://github.com/ttsim-dev/gettsim/issues/782. en: >- § 22 SGB II The rent per square meter must not exceed a reasonable amount in order to remain eligible for ALG2. This limit is not specifically laid down in the law, but is a rule of thumb used by the employment agencies. This is only an approximation. The regional parameters are unknown, see Issue - https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + https://github.com/ttsim-dev/gettsim/issues/782. unit: Euros / Square Meter reference_period: Month type: scalar @@ -32,12 +32,12 @@ berechtigte_wohnfläche_miete: Eine Mietwohnung darf für einen Single 45 Quadratmeter (+15 für jede weitere Person) groß sein. Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe - Issue https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + Issue https://github.com/ttsim-dev/gettsim/issues/782. en: >- A rental apartment may be 45 square meters for a single person (+15 for each additional person). This is only an approximation. The regional parameters are unknown, see Issue - https://github.com/iza-institute-of-labor-economics/gettsim/issues/782. + https://github.com/ttsim-dev/gettsim/issues/782. unit: Square Meters reference_period: null type: dict diff --git a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py index 8aef7275f5..051761aa8d 100644 --- a/src/_gettsim/arbeitslosengeld_2/regelbedarf.py +++ b/src/_gettsim/arbeitslosengeld_2/regelbedarf.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( ConsecutiveIntLookupTableParamValue, get_consecutive_int_lookup_table_param_value, param_function, @@ -16,7 +16,7 @@ from types import ModuleType from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen - from ttsim.tt_dag_elements import RawParam + from gettsim.tt import RawParam @policy_function(start_date="2005-01-01") diff --git a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py index f91d7c489e..5e1d4fd995 100644 --- a/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py +++ b/src/_gettsim/einkommensteuer/abgeltungssteuer/abgeltungssteuer.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(start_date="2009-01-01") @@ -21,7 +21,7 @@ def zu_versteuerndes_kapitaleinkommen_y_sn( TODO(@MImmesberger): Find out whether Sparerpauschbetrag is transferable to partner with same sn_id. - https://github.com/iza-institute-of-labor-economics/gettsim/issues/843 + https://github.com/ttsim-dev/gettsim/issues/843 """ out = ( diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" index f965941fc6..b6f3edc8de 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alleinerziehend.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="2014-12-31", leaf_name="alleinerziehend_betrag_y") diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" index b3a227b820..623fe9174c 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/alter.py" @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( get_consecutive_int_lookup_table_param_value, param_function, policy_function, @@ -13,7 +13,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue + from gettsim.tt import ConsecutiveIntLookupTableParamValue @policy_function(end_date="2004-12-31", leaf_name="altersfreibetrag_y") diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" index 08394fac4b..1974b7b7f4 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/behinderung.py" @@ -4,12 +4,12 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import piecewise_polynomial, policy_function +from gettsim.tt import piecewise_polynomial, policy_function if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements import PiecewisePolynomialParam + from gettsim.tt import PiecewisePolynomialParam @policy_function() diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" index f139dd483e..c12fffe202 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/betrag.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" index 70970b01b8..b9974ea262 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" index 37d17874cc..5aa96eb35b 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/sonderausgaben.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, RoundingSpec, agg_by_p_id_function, diff --git "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" index 6c2dbf4a77..a69ce352b2 100644 --- "a/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" +++ "b/src/_gettsim/einkommensteuer/abz\303\274ge/vorsorge.py" @@ -2,14 +2,17 @@ from typing import TYPE_CHECKING, Any -from ttsim.tt_dag_elements import RoundingSpec, piecewise_polynomial, policy_function -from ttsim.tt_dag_elements.column_objects_param_function import param_function +from gettsim.tt import ( + PiecewisePolynomialParamValue, + RoundingSpec, + param_function, + piecewise_polynomial, + policy_function, +) if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements.param_objects import PiecewisePolynomialParamValue - @policy_function( end_date="2004-12-31", diff --git a/src/_gettsim/einkommensteuer/einkommen.py b/src/_gettsim/einkommensteuer/einkommen.py index e6e7468634..dc7333a171 100644 --- a/src/_gettsim/einkommensteuer/einkommen.py +++ b/src/_gettsim/einkommensteuer/einkommen.py @@ -6,7 +6,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/einkommensteuer/einkommensteuer.py b/src/_gettsim/einkommensteuer/einkommensteuer.py index 7e0236eb81..36c27b8281 100644 --- a/src/_gettsim/einkommensteuer/einkommensteuer.py +++ b/src/_gettsim/einkommensteuer/einkommensteuer.py @@ -6,27 +6,24 @@ import optree -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, + ConsecutiveIntLookupTableParamValue, PiecewisePolynomialParamValue, + RawParam, RoundingSpec, agg_by_group_function, agg_by_p_id_function, + get_piecewise_parameters, + get_piecewise_thresholds, param_function, piecewise_polynomial, policy_function, ) -from ttsim.tt_dag_elements.piecewise_polynomial import ( - check_and_get_thresholds, - get_piecewise_parameters, -) if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import RawParam - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue - @agg_by_group_function(agg_type=AggType.COUNT) def anzahl_personen_sn(sn_id: int) -> int: @@ -248,7 +245,7 @@ def parameter_einkommensteuertarif( ) # Check and extract lower thresholds. - lower_thresholds, upper_thresholds = check_and_get_thresholds( + lower_thresholds, upper_thresholds = get_piecewise_thresholds( leaf_name="parameter_einkommensteuertarif", parameter_dict=expanded, xnp=xnp, diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" index c0d1bc53b3..00e6c5e1c9 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_forst_und_landwirtschaft/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" index 52d4eb22db..a2d0dd1310 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_gewerbebetrieb/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" index f31755a030..3a6038c0ba 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/aus_kapitalverm\303\266gen.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="2008-12-31", leaf_name="betrag_y") diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" index 2f9b60fb92..beddd693e9 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_kapitalverm\303\266gen/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" index e6c026f31f..cd76cd0ec2 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/aus_nichtselbstst\303\244ndiger_arbeit.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="1999-03-31", leaf_name="betrag_y") diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" index 04870b4412..876e5b74ba 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_nichtselbstst\303\244ndiger_arbeit/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" index 994b04672d..c179faba93 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_selbstst\303\244ndiger_arbeit/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" index 2546550f91..dde90b5ff3 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/aus_vermietung_und_verpachtung/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" index ee57f9e3cc..74d3d2a108 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/eink\303\274nfte.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="2008-12-31", leaf_name="gesamtbetrag_der_einkünfte_y") diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" index 923824d73c..852680363f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" index 0258e4ff1d..996d834025 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" index 514d83cef8..1311ba9a5f 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" index b2a4953b9c..453ccac843 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/rente/rente.py" @@ -7,7 +7,7 @@ if TYPE_CHECKING: from types import ModuleType -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( PiecewisePolynomialParamValue, piecewise_polynomial, policy_function, diff --git "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" index b0212e071f..7d094d27aa 100644 --- "a/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" +++ "b/src/_gettsim/einkommensteuer/eink\303\274nfte/sonstige/sonstige.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/einkommensteuer/inputs.py b/src/_gettsim/einkommensteuer/inputs.py index 1bd3dbb102..0e9a16d547 100644 --- a/src/_gettsim/einkommensteuer/inputs.py +++ b/src/_gettsim/einkommensteuer/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/einkommensteuer/kinderfreibetrag.py b/src/_gettsim/einkommensteuer/kinderfreibetrag.py index ded854cad8..e17fd2212e 100644 --- a/src/_gettsim/einkommensteuer/kinderfreibetrag.py +++ b/src/_gettsim/einkommensteuer/kinderfreibetrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, agg_by_p_id_function, param_function, diff --git a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py index feb6540ceb..8af18c339d 100644 --- a/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py +++ b/src/_gettsim/einkommensteuer/zu_versteuerndes_einkommen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from gettsim.tt import RoundingSpec, policy_function @policy_function( diff --git a/src/_gettsim/elterngeld/einkommen.py b/src/_gettsim/elterngeld/einkommen.py index e728d5cf56..d0a9953f07 100644 --- a/src/_gettsim/elterngeld/einkommen.py +++ b/src/_gettsim/elterngeld/einkommen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from gettsim.tt import RoundingSpec, policy_function @policy_function(start_date="2007-01-01") @@ -14,7 +14,7 @@ def anzurechnendes_nettoeinkommen_m( """Income that reduces the Elterngeld claim.""" # TODO(@MImmesberger): In this case, lohnsteuer__betrag_m should be calculated # without taking into account adaptions to the standard care insurance rate. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/792 + # https://github.com/ttsim-dev/gettsim/issues/792 return ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m - lohnsteuer__betrag_m diff --git a/src/_gettsim/elterngeld/elterngeld.py b/src/_gettsim/elterngeld/elterngeld.py index 2f880e7e72..c7ff5721ec 100644 --- a/src/_gettsim/elterngeld/elterngeld.py +++ b/src/_gettsim/elterngeld/elterngeld.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, RoundingSpec, agg_by_group_function, @@ -30,7 +30,7 @@ def ist_leistungsbegründendes_kind( """ # TODO(@MImmesberger): This age threshold is not correct once we account for # Elterngeld plus (currently not implemented). - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/151 + # https://github.com/ttsim-dev/gettsim/issues/151 return ( alter_monate <= max_bezugsmonate["basismonate"] + max_bezugsmonate["partnermonate"] @@ -261,7 +261,7 @@ def lohnersatzanteil( # TODO(@MImmesberger): Elterngeld is considered as SGB II income since 2011. Also, there # is a 300€ Freibetrag under some conditions since 2011. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/549 +# https://github.com/ttsim-dev/gettsim/issues/549 @policy_function(start_date="2007-01-01") def anrechenbarer_betrag_m( betrag_m: float, diff --git a/src/_gettsim/elterngeld/geschwisterbonus.py b/src/_gettsim/elterngeld/geschwisterbonus.py index eaa4b240fa..572d07ea18 100644 --- a/src/_gettsim/elterngeld/geschwisterbonus.py +++ b/src/_gettsim/elterngeld/geschwisterbonus.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(start_date="2007-01-01") diff --git a/src/_gettsim/elterngeld/inputs.py b/src/_gettsim/elterngeld/inputs.py index 53ef29ef92..d0c9a93af8 100644 --- a/src/_gettsim/elterngeld/inputs.py +++ b/src/_gettsim/elterngeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/erziehungsgeld/erziehungsgeld.py b/src/_gettsim/erziehungsgeld/erziehungsgeld.py index 8b264fdc7b..d3ecd4fe54 100644 --- a/src/_gettsim/erziehungsgeld/erziehungsgeld.py +++ b/src/_gettsim/erziehungsgeld/erziehungsgeld.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import Any, Literal -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, RoundingSpec, agg_by_group_function, @@ -86,7 +86,7 @@ def erziehungsgeld_kind_ohne_budgetsatz_m() -> NotImplementedError: raise NotImplementedError( """ Erziehungsgeld is not implemented yet prior to 2004, see - https://github.com/iza-institute-of-labor-economics/gettsim/issues/673 + https://github.com/ttsim-dev/gettsim/issues/673 """, ) diff --git a/src/_gettsim/erziehungsgeld/inputs.py b/src/_gettsim/erziehungsgeld/inputs.py index 26e2591839..902ecdbe4d 100644 --- a/src/_gettsim/erziehungsgeld/inputs.py +++ b/src/_gettsim/erziehungsgeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import FKType, policy_input +from gettsim.tt import FKType, policy_input @policy_input(end_date="2008-12-31") diff --git a/src/_gettsim/familie/familie.py b/src/_gettsim/familie/familie.py index 0eb50feece..2f45c4a8ee 100644 --- a/src/_gettsim/familie/familie.py +++ b/src/_gettsim/familie/familie.py @@ -8,12 +8,17 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import AggType, agg_by_group_function, join, policy_function +from gettsim.tt import ( + AggType, + agg_by_group_function, + join, + policy_function, +) if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements.typing import BoolColumn, IntColumn + from gettsim.typing import BoolColumn, IntColumn @policy_function(vectorization_strategy="not_required") diff --git a/src/_gettsim/familie/inputs.py b/src/_gettsim/familie/inputs.py index 2626076ad5..69258d65ed 100644 --- a/src/_gettsim/familie/inputs.py +++ b/src/_gettsim/familie/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import AggType, FKType, agg_by_group_function, policy_input +from gettsim.tt import AggType, FKType, agg_by_group_function, policy_input @policy_input() diff --git a/src/_gettsim/grundsicherung/aggregations.py b/src/_gettsim/grundsicherung/aggregations.py index dd0c44f770..9564656d1b 100644 --- a/src/_gettsim/grundsicherung/aggregations.py +++ b/src/_gettsim/grundsicherung/aggregations.py @@ -2,10 +2,10 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function +from gettsim.tt import AggType, agg_by_group_function, policy_function if TYPE_CHECKING: - from ttsim.tt_dag_elements import BoolColumn, IntColumn + from gettsim.typing import BoolColumn, IntColumn @policy_function(vectorization_strategy="not_required") @@ -17,7 +17,7 @@ def ist_kind_in_einstandsgemeinschaft(alter: IntColumn) -> BoolColumn: # TODO(@MImmesberger): This assumes that parents are part of the minor's (SGB XII) # Einstandsgemeinschaft. This is not necessarily true. Rewrite once we refactor SGB # XII. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 + # https://github.com/ttsim-dev/gettsim/issues/738 return alter <= 17 # noqa: PLR2004 @@ -33,7 +33,7 @@ def ist_erwachsener_in_einstandsgemeinschaft( # TODO(@MImmesberger): This assumes that parents are part of the minor's # Einstandsgemeinschaft. This is not necessarily true. Rewrite once we refactor SGB # XII. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/738 + # https://github.com/ttsim-dev/gettsim/issues/738 return not ist_kind_in_einstandsgemeinschaft diff --git a/src/_gettsim/grundsicherung/bedarfe.py b/src/_gettsim/grundsicherung/bedarfe.py index 24e5d95a3e..8946eadba6 100644 --- a/src/_gettsim/grundsicherung/bedarfe.py +++ b/src/_gettsim/grundsicherung/bedarfe.py @@ -4,10 +4,10 @@ from typing import TYPE_CHECKING from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen -from ttsim.tt_dag_elements import param_function +from gettsim.tt import param_function if TYPE_CHECKING: - from ttsim.tt_dag_elements import RawParam + from gettsim.tt import RawParam @dataclass(frozen=True) diff --git a/src/_gettsim/grundsicherung/im_alter/einkommen.py b/src/_gettsim/grundsicherung/im_alter/einkommen.py index 4a91c354a1..8d7e3d1a08 100644 --- a/src/_gettsim/grundsicherung/im_alter/einkommen.py +++ b/src/_gettsim/grundsicherung/im_alter/einkommen.py @@ -4,13 +4,13 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import piecewise_polynomial, policy_function +from gettsim.tt import piecewise_polynomial, policy_function if TYPE_CHECKING: from types import ModuleType from _gettsim.grundsicherung.bedarfe import Regelbedarfsstufen - from ttsim.tt_dag_elements import PiecewisePolynomialParam + from gettsim.tt import PiecewisePolynomialParam @policy_function() diff --git a/src/_gettsim/grundsicherung/im_alter/im_alter.py b/src/_gettsim/grundsicherung/im_alter/im_alter.py index 2e2c2856a4..0b86d93343 100644 --- a/src/_gettsim/grundsicherung/im_alter/im_alter.py +++ b/src/_gettsim/grundsicherung/im_alter/im_alter.py @@ -9,7 +9,7 @@ Regelbedarfsstufen, ) -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() @@ -34,17 +34,17 @@ def betrag_m_eg( """ # TODO(@ChristianZimpelmann): Treatment of Bedarfsgemeinschaften with both retirees # and unemployed job seekers probably incorrect - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + # https://github.com/ttsim-dev/gettsim/issues/703 # TODO(@MImmesberger): Check which variable is the correct Regelbedarf in place of # `arbeitslosengeld_2__regelbedarf_m_bg` - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/702 + # https://github.com/ttsim-dev/gettsim/issues/702 # TODO (@MImmesberger): Remove `grundsicherung__anzahl_kinder_eg == # grundsicherung__anzahl_personen_eg` condition once # `volljährige_alle_rentenbezieher_hh`` is replaced by a more accurate # variable. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/696 + # https://github.com/ttsim-dev/gettsim/issues/696 # Wealth check # Only pay Grundsicherung im Alter if all adults are retired (see docstring) diff --git a/src/_gettsim/hh_characteristics.py b/src/_gettsim/hh_characteristics.py index 2432b38502..e52cb5acba 100644 --- a/src/_gettsim/hh_characteristics.py +++ b/src/_gettsim/hh_characteristics.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function +from gettsim.tt import AggType, agg_by_group_function, policy_function @agg_by_group_function(agg_type=AggType.SUM) diff --git a/src/_gettsim/ids.py b/src/_gettsim/ids.py index a2e00d6729..bb5def0f96 100644 --- a/src/_gettsim/ids.py +++ b/src/_gettsim/ids.py @@ -4,12 +4,12 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import group_creation_function, policy_input +from gettsim.tt import group_creation_function, policy_input if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn + from gettsim.typing import BoolColumn, IntColumn @policy_input() @@ -123,7 +123,7 @@ def _assign_parents_fg_id( ) -> IntColumn: """Return the fg_id of the child's parents.""" # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + # https://github.com/ttsim-dev/gettsim/issues/668 return xnp.where( (p_id_elternteil_loc >= 0) @@ -152,10 +152,10 @@ def bg_id( offset = xnp.max(fg_id) + 1 # TODO(@MImmesberger): Remove input variable eigenbedarf_gedeckt # once Bedarfsgemeinschaften are fully endogenous - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/763 + # https://github.com/ttsim-dev/gettsim/issues/763 # TODO(@MImmesberger): Remove hard-coded number - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/668 + # https://github.com/ttsim-dev/gettsim/issues/668 return xnp.where( (arbeitslosengeld_2__eigenbedarf_gedeckt) * (alter < 25), # noqa: PLR2004 offset + p_id, diff --git a/src/_gettsim/individual_characteristics.py b/src/_gettsim/individual_characteristics.py index 138f56e88a..9a381cd6f4 100644 --- a/src/_gettsim/individual_characteristics.py +++ b/src/_gettsim/individual_characteristics.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/inputs.py b/src/_gettsim/inputs.py index 240c8eb9ad..749df972a4 100644 --- a/src/_gettsim/inputs.py +++ b/src/_gettsim/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() @@ -11,7 +11,7 @@ def alter() -> int: # TODO(@MImmesberger): Remove once evaluation date is available. -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/211 +# https://github.com/ttsim-dev/gettsim/issues/211 @policy_input() def alter_monate() -> int: """Age in months.""" diff --git a/src/_gettsim/kinderbonus/kinderbonus.py b/src/_gettsim/kinderbonus/kinderbonus.py index b09b986a08..4c2ee6b6fb 100644 --- a/src/_gettsim/kinderbonus/kinderbonus.py +++ b/src/_gettsim/kinderbonus/kinderbonus.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(start_date="2020-01-01", end_date="2021-12-31") diff --git a/src/_gettsim/kindergeld/inputs.py b/src/_gettsim/kindergeld/inputs.py index db5cc5d0ac..ac13b15478 100644 --- a/src/_gettsim/kindergeld/inputs.py +++ b/src/_gettsim/kindergeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import FKType, policy_input +from gettsim.tt import FKType, policy_input @policy_input() diff --git a/src/_gettsim/kindergeld/kindergeld.py b/src/_gettsim/kindergeld/kindergeld.py index 8c4ede5dbc..2f3c4d7347 100644 --- a/src/_gettsim/kindergeld/kindergeld.py +++ b/src/_gettsim/kindergeld/kindergeld.py @@ -4,8 +4,9 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, + ConsecutiveIntLookupTableParamValue, agg_by_p_id_function, get_consecutive_int_lookup_table_param_value, join, @@ -16,8 +17,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue + from gettsim.typing import BoolColumn, IntColumn @agg_by_p_id_function(agg_type=AggType.SUM) diff --git a/src/_gettsim/kinderzuschlag/einkommen.py b/src/_gettsim/kinderzuschlag/einkommen.py index c2b9fc6260..f03367c3a5 100644 --- a/src/_gettsim/kinderzuschlag/einkommen.py +++ b/src/_gettsim/kinderzuschlag/einkommen.py @@ -10,7 +10,7 @@ ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, ExistenzminimumNachAufwendungenOhneBildungUndTeilhabe, ) -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, RoundingSpec, agg_by_group_function, @@ -19,7 +19,7 @@ ) if TYPE_CHECKING: - from ttsim.tt_dag_elements import RawParam + from gettsim.tt import RawParam @agg_by_group_function(start_date="2005-01-01", agg_type=AggType.SUM) @@ -38,7 +38,7 @@ def bruttoeinkommen_eltern_m( benefit is met. """ # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + # https://github.com/ttsim-dev/gettsim/issues/1009 if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__bruttoeinkommen_m else: @@ -61,7 +61,7 @@ def nettoeinkommen_eltern_m_mit_grober_rundung( other deductions) for calculation of child benefit. """ # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + # https://github.com/ttsim-dev/gettsim/issues/1009 if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m else: @@ -82,7 +82,7 @@ def nettoeinkommen_eltern_m_mit_genauer_rundung( other deductions) for calculation of child benefit. """ # TODO(@MImmesberger): Treatment of children who live in their own BG may be wrong here. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/1009 + # https://github.com/ttsim-dev/gettsim/issues/1009 if arbeitslosengeld_2__hat_kind_in_gleicher_bedarfsgemeinschaft: out = arbeitslosengeld_2__nettoeinkommen_nach_abzug_freibetrag_m else: diff --git a/src/_gettsim/kinderzuschlag/kinderzuschlag.py b/src/_gettsim/kinderzuschlag/kinderzuschlag.py index e3d73759fa..22db20e646 100644 --- a/src/_gettsim/kinderzuschlag/kinderzuschlag.py +++ b/src/_gettsim/kinderzuschlag/kinderzuschlag.py @@ -4,13 +4,13 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import param_function, policy_function +from gettsim.tt import param_function, policy_function if TYPE_CHECKING: from _gettsim.param_types import ( ExistenzminimumNachAufwendungenMitBildungUndTeilhabe, ) - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue + from gettsim.tt import ConsecutiveIntLookupTableParamValue @param_function(start_date="2021-01-01", end_date="2022-12-31", leaf_name="satz") diff --git a/src/_gettsim/lohnsteuer/einkommen.py b/src/_gettsim/lohnsteuer/einkommen.py index 57a2702699..40512a6813 100644 --- a/src/_gettsim/lohnsteuer/einkommen.py +++ b/src/_gettsim/lohnsteuer/einkommen.py @@ -7,7 +7,7 @@ if TYPE_CHECKING: from types import ModuleType -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( PiecewisePolynomialParamValue, RoundingSpec, param_function, diff --git a/src/_gettsim/lohnsteuer/inputs.py b/src/_gettsim/lohnsteuer/inputs.py index 1b9e9adc47..cc3464c7df 100644 --- a/src/_gettsim/lohnsteuer/inputs.py +++ b/src/_gettsim/lohnsteuer/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/lohnsteuer/lohnsteuer.py b/src/_gettsim/lohnsteuer/lohnsteuer.py index 702bd01c9b..d07e72d1ff 100644 --- a/src/_gettsim/lohnsteuer/lohnsteuer.py +++ b/src/_gettsim/lohnsteuer/lohnsteuer.py @@ -6,7 +6,7 @@ import numpy -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( PiecewisePolynomialParamValue, param_function, piecewise_polynomial, @@ -16,7 +16,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import FloatColumn + from gettsim.typing import FloatColumn def basis_für_klassen_5_6( diff --git "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" index 3bb96420f6..39d02b1652 100644 --- "a/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" +++ "b/src/_gettsim/solidarit\303\244tszuschlag/solidarit\303\244tszuschlag.py" @@ -7,7 +7,7 @@ if TYPE_CHECKING: from types import ModuleType -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( PiecewisePolynomialParamValue, piecewise_polynomial, policy_function, diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py index 2947f0e3b7..d0a2e9898a 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/arbeitslosengeld.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( get_consecutive_int_lookup_table_param_value, param_function, policy_function, @@ -13,7 +13,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.tt_dag_elements import ( + from gettsim.tt import ( ConsecutiveIntLookupTableParamValue, ) diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py index 3fa89ded14..9cfceec834 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="1999-03-31", leaf_name="betrag_versicherter_m") diff --git a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py index c50a6125e2..48b18e324b 100644 --- a/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py +++ b/src/_gettsim/sozialversicherung/arbeitslosen/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" index 1f7a168d8e..e33a47dcca 100644 --- "a/src/_gettsim/sozialversicherung/beitr\303\244ge.py" +++ "b/src/_gettsim/sozialversicherung/beitr\303\244ge.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py index 4e214e298b..6464b83d79 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function( diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py index e7db3415ce..33610ba2fc 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/beitragssatz.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import param_function, policy_function +from gettsim.tt import param_function, policy_function @param_function(end_date="2005-06-30") diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py index fe0d2bfe22..e9804c68fd 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/einkommen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="1999-03-31", leaf_name="einkommen_m") diff --git a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py index e3051a86e6..4872d5351e 100644 --- a/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/kranken/beitrag/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/sozialversicherung/midijob.py b/src/_gettsim/sozialversicherung/midijob.py index c64b1ebb8e..987e9b5476 100644 --- a/src/_gettsim/sozialversicherung/midijob.py +++ b/src/_gettsim/sozialversicherung/midijob.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import param_function, policy_function +from gettsim.tt import param_function, policy_function @policy_function(start_date="2003-04-01") diff --git a/src/_gettsim/sozialversicherung/minijob.py b/src/_gettsim/sozialversicherung/minijob.py index 3682698b5f..d41b4aa204 100644 --- a/src/_gettsim/sozialversicherung/minijob.py +++ b/src/_gettsim/sozialversicherung/minijob.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from gettsim.tt import RoundingSpec, policy_function @policy_function() diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py index 5217f5da64..d080108fd0 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function( diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py index 9547062427..51df505a2d 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/beitragssatz.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, agg_by_p_id_function, param_function, diff --git a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py index d4230e91fe..dd6ced948b 100644 --- a/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py +++ b/src/_gettsim/sozialversicherung/pflege/beitrag/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" index 2ed4b4e58c..2c4e1834a2 100644 --- "a/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" +++ "b/src/_gettsim/sozialversicherung/regul\303\244r_besch\303\244ftigt.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="2003-03-31", leaf_name="regulär_beschäftigt") diff --git a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py index 3fdba002f2..c16b3a9c71 100644 --- a/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py +++ b/src/_gettsim/sozialversicherung/rente/alter_bei_renteneintritt.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py index da43c958a0..7dd9a44314 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersgrenzen.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function if TYPE_CHECKING: from types import ModuleType diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py index d3a7448272..74f4e2980e 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/altersrente.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from gettsim.tt import RoundingSpec, policy_function @policy_function( diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" index a662ecb679..9456aca974 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/besonders_langj\303\244hrig/besonders_langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function +from gettsim.tt import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" index e9b27b1355..62a1c38072 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/f\303\274r_frauen.py" @@ -5,7 +5,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function +from gettsim.tt import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" index a010412eeb..60c3bdcfa6 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/f\303\274r_frauen/inputs.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input(end_date="2017-12-31") diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py index 0be5a7cf8c..0d3018ba54 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/hinzuverdienstgrenzen.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim.tt_dag_elements import RoundingSpec, policy_function +from gettsim.tt import RoundingSpec, policy_function @policy_function( @@ -24,7 +24,7 @@ def bruttorente_m_mit_harter_hinzuverdienstgrenze( If earnings are above an earnings limit, the pension is fully deducted. """ # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + # https://github.com/ttsim-dev/gettsim/issues/781 if (alter >= regelaltersrente__altersgrenze) or ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m <= hinzuverdienstgrenze_m @@ -59,7 +59,7 @@ def bruttorente_m_mit_hinzuverdienstdeckel( years, the pension is fully deducted (Hinzuverdienstdeckel). """ # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + # https://github.com/ttsim-dev/gettsim/issues/781 if ( differenz_bruttolohn_hinzuverdienstdeckel_m > 0 and alter <= regelaltersrente__altersgrenze @@ -93,7 +93,7 @@ def zahlbetrag_ohne_deckel_m( (Hinzuverdienstdeckel). """ # TODO (@MImmesberger): Use age with monthly precision. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/781 + # https://github.com/ttsim-dev/gettsim/issues/781 # No deduction because of age or low earnings if (alter >= regelaltersrente__altersgrenze) or ( einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__bruttolohn_m diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py index 4ebdce1736..3da4c681fa 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" index b5958bea55..f35c0fcba7 100644 --- "a/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" +++ "b/src/_gettsim/sozialversicherung/rente/altersrente/langj\303\244hrig/langj\303\244hrig.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function +from gettsim.tt import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py index 0cf9a78ecd..254cdea1b2 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/regelaltersrente/regelaltersrente.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function +from gettsim.tt import ConsecutiveIntLookupTableParamValue, policy_function @policy_function(start_date="2007-04-20", end_date="2030-12-31") diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py index 749aea7c92..26894e9780 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input(end_date="2017-12-31") diff --git a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py index f300a8d597..81010a1bdf 100644 --- a/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py +++ b/src/_gettsim/sozialversicherung/rente/altersrente/wegen_arbeitslosigkeit/wegen_arbeitslosigkeit.py @@ -9,7 +9,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, policy_function +from gettsim.tt import ConsecutiveIntLookupTableParamValue, policy_function @policy_function( diff --git a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py index fc33baf2f4..aa74131503 100644 --- a/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py +++ b/src/_gettsim/sozialversicherung/rente/beitrag/beitrag.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="1999-03-31", leaf_name="betrag_versicherter_m") diff --git a/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py index e261629ca9..0184dcc15c 100644 --- a/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py +++ b/src/_gettsim/sozialversicherung/rente/entgeltpunkte.py @@ -1,6 +1,6 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function(end_date="2023-06-30") diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml index 89dd77004d..f11ccba0a8 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/altersgrenze.yaml @@ -113,7 +113,7 @@ altersgrenze_gestaffelt: months: 0 altersgrenze_langjährig_versichert: # TODO(@MImmesberger): Probably delete this. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/838 + # https://github.com/ttsim-dev/gettsim/issues/838 name: de: Altersgrenze für langjährige Versicherte en: Statutory retirement age for long-term insured persons diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py index 048fcb6076..8d5ed3dd29 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/erwerbsminderung.py @@ -4,10 +4,10 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function if TYPE_CHECKING: - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue + from gettsim.tt import ConsecutiveIntLookupTableParamValue @policy_function(start_date="2001-01-01", end_date="2023-06-30", leaf_name="betrag_m") @@ -325,7 +325,7 @@ def zugangsfaktor_mit_gestaffelter_altersgrenze( # TODO(@MImmesberger): Reuse Altersrente Wartezeiten for Erwerbsminderungsrente -# https://github.com/iza-institute-of-labor-economics/gettsim/issues/838 +# https://github.com/ttsim-dev/gettsim/issues/838 @policy_function(start_date="2001-01-01") def wartezeit_langjährig_versichert_erfüllt( sozialversicherung__rente__pflichtbeitragsmonate: float, diff --git a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py index ca264511f5..8ae399bb9f 100644 --- a/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/erwerbsminderung/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py index e906801426..efc5b929e8 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/grundrente.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( PiecewisePolynomialParamValue, RoundingSpec, piecewise_polynomial, diff --git a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py index a2fbbb76cf..c5cc1bd91c 100644 --- a/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/grundrente/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input(start_date="2021-01-01") diff --git a/src/_gettsim/sozialversicherung/rente/inputs.py b/src/_gettsim/sozialversicherung/rente/inputs.py index f8ab37012c..23ec5a51bd 100644 --- a/src/_gettsim/sozialversicherung/rente/inputs.py +++ b/src/_gettsim/sozialversicherung/rente/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/sozialversicherung/rente/wartezeit.py b/src/_gettsim/sozialversicherung/rente/wartezeit.py index 2a277e54ce..eff100b803 100644 --- a/src/_gettsim/sozialversicherung/rente/wartezeit.py +++ b/src/_gettsim/sozialversicherung/rente/wartezeit.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/unterhalt/inputs.py b/src/_gettsim/unterhalt/inputs.py index 16be46cfa8..54de541bf6 100644 --- a/src/_gettsim/unterhalt/inputs.py +++ b/src/_gettsim/unterhalt/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/unterhalt/unterhalt.py b/src/_gettsim/unterhalt/unterhalt.py index 6c6a6382ab..cb02e81d33 100644 --- a/src/_gettsim/unterhalt/unterhalt.py +++ b/src/_gettsim/unterhalt/unterhalt.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function() diff --git a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py index ee67d177c6..1912ec8ccb 100644 --- a/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py +++ b/src/_gettsim/unterhaltsvorschuss/unterhaltsvorschuss.py @@ -5,8 +5,10 @@ from typing import TYPE_CHECKING from _gettsim.param_types import Altersgrenzen, SatzMitAltersgrenzen -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, + ConsecutiveIntLookupTableParamValue, + RawParam, RoundingSpec, agg_by_p_id_function, join, @@ -17,8 +19,7 @@ if TYPE_CHECKING: from types import ModuleType - from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn - from ttsim.tt_dag_elements import ConsecutiveIntLookupTableParamValue, RawParam + from gettsim.typing import BoolColumn, IntColumn @agg_by_p_id_function(agg_type=AggType.SUM) @@ -145,7 +146,7 @@ def unterhaltsvorschuss_anspruch_m_2009_bis_2014( """ # TODO(@MImmesberger): Remove explicit parameter conversion. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/575 + # https://github.com/ttsim-dev/gettsim/issues/575 sächliches_existenzmininmum = einkommensteuer__parameter_kinderfreibetrag[ "sächliches_existenzminimum" ] diff --git "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" index bbeae1f513..781de2ca17 100644 --- "a/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" +++ "b/src/_gettsim/vorrangpr\303\274fungen/vorrangpr\303\274fungen.py" @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import AggType, agg_by_group_function, policy_function +from gettsim.tt import AggType, agg_by_group_function, policy_function @agg_by_group_function(agg_type=AggType.ANY) diff --git a/src/_gettsim/wohnen/inputs.py b/src/_gettsim/wohnen/inputs.py index d95a7b63eb..fec02cf65c 100644 --- a/src/_gettsim/wohnen/inputs.py +++ b/src/_gettsim/wohnen/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input(end_date="2008-12-31") diff --git a/src/_gettsim/wohngeld/einkommen.py b/src/_gettsim/wohngeld/einkommen.py index ccfca1127b..c07389df1b 100644 --- a/src/_gettsim/wohngeld/einkommen.py +++ b/src/_gettsim/wohngeld/einkommen.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, ConsecutiveIntLookupTableParamValue, PiecewisePolynomialParamValue, @@ -193,7 +193,7 @@ def einkommen_vor_freibetrag_m_mit_elterngeld( """ # TODO(@MImmesberger): Find out whether unterhalt__tatsächlich_erhaltener_betrag_m and # unterhaltsvorschuss__betrag_m are counted as income for Wohngeld income check. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/357 + # https://github.com/ttsim-dev/gettsim/issues/357 einkommen = ( einkommensteuer__einkünfte__aus_selbstständiger_arbeit__betrag_m + einkommensteuer__einkünfte__aus_nichtselbstständiger_arbeit__einnahmen_nach_abzug_werbungskosten_m diff --git a/src/_gettsim/wohngeld/inputs.py b/src/_gettsim/wohngeld/inputs.py index 544f5ccd52..f5b01f016b 100644 --- a/src/_gettsim/wohngeld/inputs.py +++ b/src/_gettsim/wohngeld/inputs.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_input +from gettsim.tt import policy_input @policy_input() diff --git a/src/_gettsim/wohngeld/miete.py b/src/_gettsim/wohngeld/miete.py index 1b6a4226db..03276ff953 100644 --- a/src/_gettsim/wohngeld/miete.py +++ b/src/_gettsim/wohngeld/miete.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( ConsecutiveIntLookupTableParamValue, get_consecutive_int_lookup_table_param_value, param_function, diff --git a/src/_gettsim/wohngeld/voraussetzungen.py b/src/_gettsim/wohngeld/voraussetzungen.py index 8724d293d9..295510f4db 100644 --- a/src/_gettsim/wohngeld/voraussetzungen.py +++ b/src/_gettsim/wohngeld/voraussetzungen.py @@ -2,7 +2,7 @@ from __future__ import annotations -from ttsim.tt_dag_elements import policy_function +from gettsim.tt import policy_function @policy_function( diff --git a/src/_gettsim/wohngeld/wohngeld.py b/src/_gettsim/wohngeld/wohngeld.py index 194057b284..785efe3d3f 100644 --- a/src/_gettsim/wohngeld/wohngeld.py +++ b/src/_gettsim/wohngeld/wohngeld.py @@ -21,7 +21,7 @@ from dataclasses import dataclass from typing import TYPE_CHECKING -from ttsim.tt_dag_elements import ( +from gettsim.tt import ( AggType, RoundingSpec, agg_by_group_function, @@ -51,14 +51,14 @@ def betrag_m_wthh( """Housing benefit after wealth and priority checks.""" # TODO (@MImmesberger): This implementation may be only an approximation of the # actual rules for individuals that are on the margin of the priority check. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/752 + # https://github.com/ttsim-dev/gettsim/issues/752 # TODO (@MImmesberger): No interaction between Wohngeld/ALG2 and Grundsicherung im # Alter (SGB XII) is implemented yet. We assume for now that households with only # retirees are eligible for Grundsicherung im Alter but not for ALG2/Wohngeld. All # other households are not eligible for SGB XII, but SGB II / Wohngeld. Once this is # resolved, remove the `volljährige_alle_rentenbezieher_hh` condition. - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/703 + # https://github.com/ttsim-dev/gettsim/issues/703 if not volljährige_alle_rentenbezieher_hh and ( vorrangprüfungen__wohngeld_vorrang_wthh diff --git a/src/_gettsim_tests/test_jittability.py b/src/_gettsim_tests/test_jittability.py index fbc08e6c27..34ca97c13c 100644 --- a/src/_gettsim_tests/test_jittability.py +++ b/src/_gettsim_tests/test_jittability.py @@ -10,14 +10,11 @@ import pytest from dags import get_free_arguments -from gettsim import main -from ttsim import MainTarget -from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction +from gettsim import MainTarget, main +from gettsim.tt import ColumnFunction if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - SpecEnvWithPartialledParamsAndScalars, - ) + from gettsim.typing import SpecEnvWithPartialledParamsAndScalars def get_orig_gettsim_column_functions() -> list[ColumnFunction]: diff --git a/src/_gettsim_tests/test_plot_dag.py b/src/_gettsim_tests/test_plot_dag.py index 211f1d374a..442790603f 100644 --- a/src/_gettsim_tests/test_plot_dag.py +++ b/src/_gettsim_tests/test_plot_dag.py @@ -1,16 +1,11 @@ from __future__ import annotations -from pathlib import Path - -from ttsim.plot_dag import plot_tt_dag - -GETTSIM_ROOT = Path(__file__).parent.parent / "_gettsim" +from gettsim import plot_tt_dag def test_gettsim_policy_environment_dag_with_params(): plot_tt_dag( policy_date_str="2025-01-01", - root=GETTSIM_ROOT, include_params=True, title="GETTSIM Policy Environment DAG with parameters", show_node_description=True, @@ -20,7 +15,6 @@ def test_gettsim_policy_environment_dag_with_params(): def test_gettsim_policy_environment_dag_without_params(): plot_tt_dag( policy_date_str="2025-01-01", - root=GETTSIM_ROOT, include_params=False, title="GETTSIM Policy Environment DAG without parameters", show_node_description=True, diff --git a/src/_gettsim_tests/test_policy.py b/src/_gettsim_tests/test_policy.py index c81ca14ed2..ac74fe86b6 100644 --- a/src/_gettsim_tests/test_policy.py +++ b/src/_gettsim_tests/test_policy.py @@ -7,9 +7,6 @@ import dags.tree as dt import numpy import pytest - -from gettsim import main -from ttsim import MainTarget from ttsim.testing_utils import ( PolicyTest, check_env_completeness, @@ -17,10 +14,12 @@ load_policy_test_data, ) +from gettsim import MainTarget, main + if TYPE_CHECKING: import datetime - from ttsim.interface_dag_elements.typing import ( + from gettsim.typing import ( OrigPolicyObjects, ) diff --git a/src/_gettsim_tests/test_templates.py b/src/_gettsim_tests/test_templates.py index 3b213a1763..0e86b7f9ad 100644 --- a/src/_gettsim_tests/test_templates.py +++ b/src/_gettsim_tests/test_templates.py @@ -1,13 +1,13 @@ from __future__ import annotations import dags.tree as dt - -from gettsim import main from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS from ttsim.interface_dag_elements.shared import ( get_re_pattern_for_all_time_units_and_groupings, ) +from gettsim import main + def test_template_all_outputs_no_inputs(backend): res = main( diff --git a/src/gettsim/__init__.py b/src/gettsim/__init__.py index d9ff64756a..01487136b7 100644 --- a/src/gettsim/__init__.py +++ b/src/gettsim/__init__.py @@ -6,19 +6,19 @@ # Import the version from _version.py which is dynamically created by # setuptools-scm upon installing the project with pip. # Do not put it under version control! - from _gettsim._version import version as __version__ + from _gettsim._version import __version__, __version_tuple__, version, version_tuple except ImportError: __version__ = "unknown" - + __version_tuple__ = ("unknown", "unknown", "unknown") + version = "unknown" + version_tuple = ("unknown", "unknown", "unknown") from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING, Any, Literal import pytest - -import ttsim -from _gettsim_tests import TEST_DIR +import ttsim as _ttsim from ttsim import ( InputData, Labels, @@ -27,14 +27,23 @@ Results, SpecializedEnvironment, TTTargets, + __version__, + __version_tuple__, + copy_environment, merge_trees, + upsert_tree, ) +from _gettsim_tests import TEST_DIR + if TYPE_CHECKING: import datetime from collections.abc import Iterable - from ttsim.interface_dag_elements.typing import ( + import plotly.graph_objects as go + from ttsim import typing + from ttsim.plot_dag import NodeSelector + from ttsim.typing import ( DashedISOString, FlatColumnObjectsParamFunctions, FlatOrigParamSpecs, @@ -43,13 +52,28 @@ QNameData, ) + typing = typing + +InputData = InputData +Labels = Labels +MainTarget = MainTarget +RawResults = RawResults +Results = Results +SpecializedEnvironment = SpecializedEnvironment +TTTargets = TTTargets +__version__ = __version__ +__version_tuple__ = __version_tuple__ +copy_environment = copy_environment +merge_trees = merge_trees +upsert_tree = upsert_tree + def test(backend: Literal["numpy", "jax"] = "numpy") -> None: pytest.main([str(TEST_DIR), "--backend", backend]) @dataclass(frozen=True) -class OrigPolicyObjects(ttsim.main_args.MainArg): +class OrigPolicyObjects(_ttsim.main_args.MainArg): column_objects_and_param_functions: FlatColumnObjectsParamFunctions | None = None param_specs: FlatOrigParamSpecs | None = None @@ -77,11 +101,45 @@ def main( labels: Labels | None = None, ) -> dict[str, Any]: if orig_policy_objects is None: - orig_policy_objects = ttsim.main_args.OrigPolicyObjects( + orig_policy_objects = _ttsim.main_args.OrigPolicyObjects( root=Path(__file__).parent.parent / "_gettsim" ) - return ttsim.main(**locals()) + return _ttsim.main(**locals()) + + +def plot_interface_dag( + include_fail_and_warn_nodes: bool = True, + show_node_description: bool = False, + output_path: Path | None = None, +) -> go.Figure: + return _ttsim.plot_interface_dag( + include_fail_and_warn_nodes=include_fail_and_warn_nodes, + show_node_description=show_node_description, + output_path=output_path, + remove_orig_policy_objects__root=True, + ) + + +def plot_tt_dag( + policy_date_str: str, + node_selector: NodeSelector | None = None, + title: str = "", + include_params: bool = True, + include_other_objects: bool = False, + show_node_description: bool = False, + output_path: Path | None = None, +) -> go.Figure: + return _ttsim.plot_tt_dag( + policy_date_str=policy_date_str, + root=Path(__file__).parent.parent / "_gettsim", + node_selector=node_selector, + title=title, + include_params=include_params, + include_other_objects=include_other_objects, + show_node_description=show_node_description, + output_path=output_path, + ) __all__ = [ @@ -93,12 +151,15 @@ def main( "Results", "SpecializedEnvironment", "TTTargets", + "__version__", + "__version_tuple__", + "copy_environment", "main", "merge_trees", -] - - -__all__ = [ - "__version__", + "plot_interface_dag", + "plot_tt_dag", "test", + "upsert_tree", + "version", + "version_tuple", ] diff --git a/src/ttsim/tt_dag_elements/__init__.py b/src/gettsim/tt/__init__.py similarity index 83% rename from src/ttsim/tt_dag_elements/__init__.py rename to src/gettsim/tt/__init__.py index e8a1a3b53b..ebe3736466 100644 --- a/src/ttsim/tt_dag_elements/__init__.py +++ b/src/gettsim/tt/__init__.py @@ -1,41 +1,38 @@ -from ttsim.tt_dag_elements.aggregation import AggType -from ttsim.tt_dag_elements.column_objects_param_function import ( +from ttsim.tt import ( AggByGroupFunction, AggByPIDFunction, + AggType, ColumnFunction, ColumnObject, - FKType, - GroupCreationFunction, - ParamFunction, - PolicyFunction, - PolicyInput, - TimeConversionFunction, - agg_by_group_function, - agg_by_p_id_function, - group_creation_function, - param_function, - policy_function, - policy_input, -) -from ttsim.tt_dag_elements.param_objects import ( ConsecutiveIntLookupTableParam, ConsecutiveIntLookupTableParamValue, DictParam, + FKType, + GroupCreationFunction, + ParamFunction, ParamObject, PiecewisePolynomialParam, PiecewisePolynomialParamValue, + PolicyFunction, + PolicyInput, RawParam, + RoundingSpec, ScalarParam, + TimeConversionFunction, + agg_by_group_function, + agg_by_p_id_function, get_consecutive_int_lookup_table_param_value, get_month_based_phase_inout_of_age_thresholds_param_value, - get_year_based_phase_inout_of_age_thresholds_param_value, -) -from ttsim.tt_dag_elements.piecewise_polynomial import ( get_piecewise_parameters, + get_piecewise_thresholds, + get_year_based_phase_inout_of_age_thresholds_param_value, + group_creation_function, + join, + param_function, piecewise_polynomial, + policy_function, + policy_input, ) -from ttsim.tt_dag_elements.rounding import RoundingSpec -from ttsim.tt_dag_elements.shared import join __all__ = [ "AggByGroupFunction", @@ -63,6 +60,7 @@ "get_consecutive_int_lookup_table_param_value", "get_month_based_phase_inout_of_age_thresholds_param_value", "get_piecewise_parameters", + "get_piecewise_thresholds", "get_year_based_phase_inout_of_age_thresholds_param_value", "group_creation_function", "join", diff --git a/src/ttsim/__init__.py b/src/ttsim/__init__.py deleted file mode 100644 index c960c3bdd5..0000000000 --- a/src/ttsim/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -from ttsim.copy_environment import copy_environment -from ttsim.interface_dag import main -from ttsim.interface_dag_elements import MainTarget -from ttsim.interface_dag_elements.shared import merge_trees -from ttsim.main_args import ( - InputData, - Labels, - OrigPolicyObjects, - RawResults, - Results, - SpecializedEnvironment, - TTTargets, -) - -__all__ = [ - "InputData", - "Labels", - "MainTarget", - "OrigPolicyObjects", - "RawResults", - "Results", - "SpecializedEnvironment", - "TTTargets", - "copy_environment", - "main", - "merge_trees", -] diff --git a/src/ttsim/copy_environment.py b/src/ttsim/copy_environment.py deleted file mode 100644 index c01740ea84..0000000000 --- a/src/ttsim/copy_environment.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Utility function for copying policy environments and other tree structures.""" - -from __future__ import annotations - -from copy import copy -from typing import TYPE_CHECKING, TypeAlias, overload - -import optree - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - PolicyEnvironment, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithPartialledParamsAndScalars, - SpecEnvWithProcessedParamsAndScalars, - ) - - SomeEnv: TypeAlias = ( - PolicyEnvironment - | SpecEnvWithoutTreeLogicAndWithDerivedFunctions - | SpecEnvWithProcessedParamsAndScalars - | SpecEnvWithPartialledParamsAndScalars - ) - - -@overload -def copy_environment(env: PolicyEnvironment) -> PolicyEnvironment: ... - - -@overload -def copy_environment( - env: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, -) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: ... - - -@overload -def copy_environment( - env: SpecEnvWithProcessedParamsAndScalars, -) -> SpecEnvWithProcessedParamsAndScalars: ... - - -@overload -def copy_environment( - env: SpecEnvWithPartialledParamsAndScalars, -) -> SpecEnvWithPartialledParamsAndScalars: ... - - -def copy_environment(env: SomeEnv) -> SomeEnv: - """Create a copy of a policy environment or other tree structure. - - This function creates a copy of nested tree structures that may contain objects - that cannot be deep-copied due to unpickleable elements such as function objects. - - The function uses optree.tree_map with shallow copy to create independent copies - of the tree structure while preserving references to functions and other objects - that don't need to be copied. - - Parameters - ---------- - env - The environment to copy. Can be a PolicyEnvironment or any of the - specialized environment types (SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithProcessedParamsAndScalars, SpecEnvWithPartialledParamsAndScalars). - - Returns - ------- - A copy of *env*, which is a deep copy for all practical purposes. - - """ - return optree.tree_map(copy, env) diff --git a/src/ttsim/interface_dag.py b/src/ttsim/interface_dag.py deleted file mode 100644 index 4cc06cf404..0000000000 --- a/src/ttsim/interface_dag.py +++ /dev/null @@ -1,590 +0,0 @@ -from __future__ import annotations - -import inspect -import re -from contextlib import suppress -from pathlib import Path -from typing import TYPE_CHECKING, Any, Literal - -import dags -import dags.tree as dt -import networkx as nx -import optree - -from ttsim.interface_dag_elements import MainTarget, MainTargetABC -from ttsim.interface_dag_elements.fail_if import ( - format_errors_and_warnings, - format_list_linewise, -) -from ttsim.interface_dag_elements.interface_node_objects import ( - FailFunction, - InputDependentInterfaceFunction, - InterfaceFunction, - InterfaceInput, - WarnFunction, -) -from ttsim.interface_dag_elements.orig_policy_objects import load_module -from ttsim.main_args import MainArg - -if TYPE_CHECKING: - import datetime - from collections.abc import Iterable - - from ttsim.interface_dag_elements.typing import ( - DashedISOString, - FlatInterfaceObjects, - NestedTargetDict, - PolicyEnvironment, - QNameData, - UnorderedQNames, - ) - from ttsim.main_args import ( - InputData, - Labels, - OrigPolicyObjects, - RawResults, - Results, - SpecializedEnvironment, - TTTargets, - ) - - -def main( - *, - main_target: str | tuple[str, ...] | NestedTargetDict | None = None, - main_targets: Iterable[str | tuple[str, ...]] | None = None, - policy_date_str: DashedISOString | None = None, - input_data: InputData | None = None, - tt_targets: TTTargets | None = None, - rounding: bool = True, - backend: Literal["numpy", "jax"] = "numpy", - evaluation_date_str: DashedISOString | None = None, - include_fail_nodes: bool = True, - include_warn_nodes: bool = True, - orig_policy_objects: OrigPolicyObjects | None = None, - raw_results: RawResults | None = None, - results: Results | None = None, - specialized_environment: SpecializedEnvironment | None = None, - policy_environment: PolicyEnvironment | None = None, - processed_data: QNameData | None = None, - policy_date: datetime.date | None = None, - evaluation_date: datetime.date | None = None, - labels: Labels | None = None, -) -> dict[str, Any]: - """ - Main function that processes the inputs and returns the outputs. - """ - input_qnames = _harmonize_inputs(locals()) - if main_target is not None: - if main_targets is not None: - raise ValueError( - "Either `main_target` or `main_targets` must be provided, but not both." - ) - main_target = _harmonize_main_target(main_target) - main_targets = [main_target] - elif main_targets is not None: - main_targets = _harmonize_main_targets(main_targets) - - # If requesting an input template, we do not require any data. - if not any(re.match("(input|processed)_data", s) for s in input_qnames): - input_qnames["processed_data"] = {} - input_qnames["processed_data_columns"] = None - - flat_interface_objects = load_flat_interface_functions_and_inputs() - nodes = _resolve_dynamic_interface_objects_to_static_nodes( - flat_interface_objects=flat_interface_objects, - input_qnames=list(input_qnames), - ) - - _fail_if_requested_nodes_cannot_be_found( - main_targets=main_targets, # type: ignore[arg-type] - nodes=nodes, - ) - - functions = { - qn: n - for qn, n in nodes.items() - if isinstance(n, InterfaceFunction) and qn not in input_qnames - } - - main_targets = include_fail_or_warn_nodes( - functions=functions, - explicit_main_targets=main_targets, # type: ignore[arg-type] - include_fail_nodes=include_fail_nodes, - include_warn_nodes=include_warn_nodes, - ) - - dag = dags.create_dag( - functions=functions, - targets=main_targets, - ) - - _fail_if_root_nodes_of_interface_dag_are_missing( - dag=dag, - input_qnames=input_qnames, - flat_interface_objects=flat_interface_objects, - ) - - def lexsort_key(x: str) -> int: - return 0 if x.startswith("fail_if") else 1 - - if main_target: - f = dags.concatenate_functions( - dag=dag, - functions=functions, - targets=main_target, - enforce_signature=False, - set_annotations=True, - lexsort_key=lexsort_key, - ) - return f(**input_qnames) - f = dags.concatenate_functions( - dag=dag, - functions=functions, - targets=main_targets, - return_type="dict", - enforce_signature=False, - set_annotations=True, - lexsort_key=lexsort_key, - ) - return dt.unflatten_from_qnames(f(**input_qnames)) - - -def _harmonize_inputs(inputs: dict[str, Any]) -> dict[str, Any]: - expected_structure = MainTarget.to_dict() - # Remove existing top-level elements that are None, these will be calculated. - dict_inputs = { - k: v.to_dict() if isinstance(v, MainArg) else v - for k, v in inputs.items() - if v is not None and k in expected_structure - } - qname_inputs = {} - # Special treatment for orig_policy_objects.root because we do not list it in - # `MainTarget` so as not to confuse users of GETTSIM, where it is set. - if ( - dict_inputs.get("orig_policy_objects") - and "root" in dict_inputs["orig_policy_objects"] - ): - qname_inputs["orig_policy_objects__root"] = dict_inputs[ - "orig_policy_objects" - ].pop("root") - - _fail_if_input_structure_is_invalid( - user_treedef=optree.tree_flatten(dict_inputs, none_is_leaf=True)[1], # type: ignore[arg-type] - expected_treedef=optree.tree_flatten(expected_structure, none_is_leaf=True)[1], - ) - for acc in optree.tree_accessors(expected_structure, none_is_leaf=True): - qname = dt.qname_from_tree_path(acc.path) - with suppress(KeyError, TypeError): - qname_inputs[qname] = acc(dict_inputs) - return {k: v for k, v in qname_inputs.items() if v is not None} - - -def _fail_if_input_structure_is_invalid( - user_treedef: optree.PyTreeDef, - expected_treedef: optree.PyTreeDef, -) -> None: - """ - Recursively check that all keys/paths in user_treedef are valid. - - Raise ValueError if - - any invalid keys/paths are found. - - if the user input is not a dict where a dict is expected. - """ - - def check( - user_spec: optree.PyTreeDef, - expected_spec: optree.PyTreeDef, - path: tuple[str, ...], - ) -> list[tuple[str, ...]]: - invalid = [] - # If a dict is expected but user_spec is not a dict, mark as invalid - if ( - expected_spec.kind == optree.PyTreeKind.DICT - and user_spec.kind != optree.PyTreeKind.DICT - ): - invalid.append(path) - return invalid - if user_spec.kind == expected_spec.kind == optree.PyTreeKind.DICT: - # This level of the expected pytree as a dict. - expected_map = dict( - zip(expected_spec.entries(), expected_spec.children(), strict=False) - ) - # Loop over the actually provided pytree. - for k, child in zip( - user_spec.entries(), user_spec.children(), strict=False - ): - if k not in expected_map: - invalid.append((*path, k)) - else: - invalid.extend( - check( - user_spec=child, - expected_spec=expected_map[k], - path=(*path, k), - ) - ) - return invalid - - invalid_paths = check( - user_spec=user_treedef, expected_spec=expected_treedef, path=() - ) - if invalid_paths: - raise ValueError( - "Invalid inputs for main(): the following keys/paths are not valid:\n" - + "\n".join(str(p) for p in invalid_paths) - + "\nPlease use only the documented structure for main()." - ) - - -def _harmonize_main_target( - main_target: str | tuple[str, ...] | NestedTargetDict, -) -> str: - msg = ( - "`main_target` must be a single qualified name, a tuple, or a dict with " - "one element. If in doubt, use `MainTarget` and tab-complete. If you want to " - "output multiple elements, use `main_targets` instead." - ) - if isinstance(main_target, tuple): - return dt.qname_from_tree_path(main_target) - if isinstance(main_target, dict): - if len(optree.tree_flatten(main_target, none_is_leaf=True)[0]) > 1: # type: ignore[arg-type] - raise ValueError(msg) - return dt.qnames(main_target)[0] - if isinstance(main_target, str): - return main_target - if isinstance(main_target, type(MainTargetABC)): - raise TypeError( - "`main_target` must be an atomic element of `MainTarget`, got: " - f"`{main_target.__name__}`. Best use an IDE and tab-complete until you " - "have reached the end of a path." - ) - raise ValueError(msg) - - -def _harmonize_main_targets( - main_targets: Iterable[str | tuple[str, ...]] | NestedTargetDict, -) -> list[str]: - if isinstance(main_targets, dict): - out = dt.qnames(main_targets) - elif isinstance(main_targets[0], tuple): # type: ignore[index] - out = [dt.qname_from_tree_path(tp) for tp in main_targets] - else: - out = list(main_targets) - - for i in out: - if isinstance(i, type(MainTargetABC)): - raise TypeError( - "Elements of `main_targets` must be atomic elements of `MainTarget`, " - f"got: `{i.__name__}`. Best use an IDE and tab-complete until you " - "have reached the end of a path." - ) - - return out - - -def _resolve_dynamic_interface_objects_to_static_nodes( - flat_interface_objects: FlatInterfaceObjects, - input_qnames: list[str], -) -> dict[str, InterfaceFunction | InterfaceInput]: - """Resolve dynamic interface objects to static nodes. - - Make InputDependentInterfaceFunctions static by checking the input data and picking - among the functions with the same leaf name the one that satisfies the include - condition. - - Fail if multiple functions with the same leaf name satisfy the include condition. - - Parameters - ---------- - flat_interface_objects - The interface objects to resolve. - input_qnames - The input qnames to check the include conditions against. - - Returns - ------- - A dictionary of static interface objects. - - """ - static_nodes: dict[str, InterfaceFunction | InterfaceInput] = {} - path_to_idif: dict[tuple[str, ...], list[InputDependentInterfaceFunction]] = {} - for orig_p, orig_object in flat_interface_objects.items(): - if isinstance(orig_object, InputDependentInterfaceFunction): - new_path = (*orig_p[:-1], orig_object.leaf_name) - if new_path not in path_to_idif: - path_to_idif[new_path] = [] - path_to_idif[new_path].append(orig_object) - else: - static_nodes[dt.qname_from_tree_path(orig_p)] = orig_object - - for p, functions in path_to_idif.items(): - functions_satisfying_include_condition = [ - f for f in functions if f.include_condition_satisfied(input_qnames) - ] - _fail_if_multiple_functions_satisfy_include_condition( - funcs=functions_satisfying_include_condition, - path=p, - ) - if functions_satisfying_include_condition: - static_nodes[dt.qname_from_tree_path(p)] = ( - functions_satisfying_include_condition[0] - ) - return static_nodes - - -def _fail_if_multiple_functions_satisfy_include_condition( - funcs: list[InputDependentInterfaceFunction], - path: tuple[str, ...], -) -> None: - """Fail if multiple functions satisfy the include condition.""" - if len(funcs) > 1: - func_names = "\n".join(f.original_function_name for f in funcs) - msg = ( - f"Multiple InputDependentInterfaceFunctions with the path {path} " - "satisfy their include conditions:\n\n" - f"{func_names}\n\n" - "Put differently, there are multiple ways to build a specific target. " - "Make sure the input data you provide satisfies only one of the include " - "conditions." - ) - raise ValueError(msg) - - -def include_fail_or_warn_nodes( - functions: dict[str, InterfaceFunction], - explicit_main_targets: list[str] | None, - include_fail_nodes: bool, - include_warn_nodes: bool, -) -> list[str] | None: - """Extend main targets with failures and warnings that can be computed. - - FailFunctions and WarnFunctions which are included explicitly among the main targets - are treated like regular functions. - - """ - # If main_targets are None, all failures and warnings are included, anyhow. - if explicit_main_targets is None: - return explicit_main_targets - - fail_functions = { - p: n - for p, n in functions.items() - if isinstance(n, FailFunction) - and p not in explicit_main_targets - and include_fail_nodes - } - warn_functions = { - p: n - for p, n in functions.items() - if isinstance(n, WarnFunction) - and p not in explicit_main_targets - and include_warn_nodes - } - fail_or_warn_nodes = {**fail_functions, **warn_functions} - initial_dag = dags.create_dag( - functions={ - p: n - for p, n in functions.items() - if p - not in { - **fail_functions, - **warn_functions, - } - }, - targets=explicit_main_targets, - ) - all_main_targets = explicit_main_targets.copy() - - for p, n in fail_or_warn_nodes.items(): - args = inspect.signature(n).parameters - if n.include_if_all_elements_present or n.include_if_any_element_present: - # all(()) evaluates to True, so include first bit - all_cond = n.include_if_all_elements_present and all( - a in initial_dag for a in n.include_if_all_elements_present - ) - any_cond = any(a in initial_dag for a in n.include_if_any_element_present) - check = all_cond or any_cond - else: - check = all(a in initial_dag for a in args) - if check: - all_main_targets.append(p) - return all_main_targets - - -def load_flat_interface_functions_and_inputs() -> FlatInterfaceObjects: - """Load the collection of functions and inputs from the current directory.""" - orig_functions = _load_orig_functions() - return _remove_tree_logic_from_functions_in_collection( - orig_functions=orig_functions, - top_level_namespace={ - (*path[:-1], func.leaf_name)[0] for path, func in orig_functions.items() - }, - ) - - -def _load_orig_functions() -> dict[tuple[str, ...], InterfaceFunction | InterfaceInput]: - """ - Load the interface functions and inputs from the current directory. - - """ - root = Path(__file__).parent / "interface_dag_elements" - paths = [ - p for p in root.rglob("*.py") if p.name not in ["__init__.py", "typing.py"] - ] - flat_functions: dict[ - tuple[str, ...], - InterfaceFunction | InterfaceInput | FailFunction | WarnFunction, - ] = {} - for path in paths: - module = load_module(path=path, root=root) - for qname, obj in inspect.getmembers(module): - # If nesting happens (e.g., df+mapper), we need to be consistent. - tree_path = dt.tree_path_from_qname(qname) - if isinstance(obj, InterfaceFunction | InterfaceInput): - if obj.in_top_level_namespace: - flat_functions[tree_path] = obj - else: - flat_functions[(str(module.__name__), *tree_path)] = obj - - return flat_functions - - -def _remove_tree_logic_from_functions_in_collection( - orig_functions: dict[tuple[str, ...], InterfaceFunction | InterfaceInput], - top_level_namespace: UnorderedQNames, -) -> FlatInterfaceObjects: - """Map paths to column objects / param functions without tree logic.""" - return { - path: obj.remove_tree_logic( - tree_path=path, - top_level_namespace=top_level_namespace, - ) - for path, obj in orig_functions.items() - } - - -def _fail_if_root_nodes_of_interface_dag_are_missing( - dag: dags.DiGraph, - input_qnames: dict[str, Any], - flat_interface_objects: FlatInterfaceObjects, -) -> None: - """Fail if root nodes are missing.""" - root_nodes = nx.subgraph_view( - dag, - filter_node=lambda n: dag.in_degree(n) == 0, - ).nodes - missing_nodes = [node for node in root_nodes if node not in input_qnames] - - missing_dynamic_nodes: dict[ - tuple[str, ...], list[InputDependentInterfaceFunction] - ] = {} - for p, f in flat_interface_objects.items(): - if isinstance(f, InputDependentInterfaceFunction): - new_path = (*p[:-1], f.leaf_name) - if ( - dt.qname_from_tree_path(new_path) in missing_nodes - and new_path not in missing_dynamic_nodes - ): - missing_dynamic_nodes[new_path] = [f] - elif new_path in missing_dynamic_nodes: - missing_dynamic_nodes[new_path].append(f) - - if missing_nodes: - msg = ( - "The following arguments to `main` are missing for computing the " - "desired output:\n" - + format_list_linewise( - [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes] - ) - ) - if missing_dynamic_nodes: - msg += _msg_for_missing_dynamic_nodes(missing_dynamic_nodes) - raise ValueError(msg) - - -def _msg_for_missing_dynamic_nodes( - paths_to_dynamic_nodes: dict[ - tuple[str, ...], list[InputDependentInterfaceFunction] - ], -) -> str: - """List the include conditions of dynamic nodes to provide them along the missing - nodes error message.""" - msg_nodes = [] - for p, dynamic_nodes in paths_to_dynamic_nodes.items(): - include_conditions_for_this_path: list[str] = [] - for f in dynamic_nodes: - conditions: list[str] = [] - if f.include_if_all_inputs_present: - paths = [ - dt.tree_path_from_qname(qn) - for qn in f.include_if_all_inputs_present - ] - conditions.append(f"All of: {paths}") - if f.include_if_any_input_present: - paths = [ - dt.tree_path_from_qname(qn) for qn in f.include_if_any_input_present - ] - conditions.append(f"Any of: {paths}") - if conditions: - include_conditions_for_this_path.append( - " or\n ".join(conditions) - ) - if include_conditions_for_this_path: - formatted_string = ( - f"{p}:\n Provide one of the following:\n " - + "\n ".join(include_conditions_for_this_path) - ) - msg_nodes.append(formatted_string) - - return ( - "\n\nNote that the following missing nodes can also be provided via " - "the following inputs:\n" - "\n".join(msg_nodes) - ) - - -def _fail_if_requested_nodes_cannot_be_found( - main_targets: list[str] | None, - nodes: dict[str, InterfaceFunction | InterfaceInput], -) -> None: - """Fail if some qname is not among nodes.""" - all_nodes = set(nodes.keys()) - interface_function_names = { - p for p, n in nodes.items() if isinstance(n, InterfaceFunction) - } - fail_or_warn_functions = { - p: n for p, n in nodes.items() if isinstance(n, (FailFunction, WarnFunction)) - } - - # main targets not in interface functions - if main_targets is not None: - missing_main_targets = set(main_targets) - set(interface_function_names) - else: - missing_main_targets = set() - - # Qnames from include condtions of fail_or_warn functions not in nodes - for n in fail_or_warn_functions.values(): - ns: set[str] = { - *n.include_if_all_elements_present, - *n.include_if_any_element_present, - } - missing_main_targets_from_include_conditions = ns - all_nodes - - if missing_main_targets or missing_main_targets_from_include_conditions: - if missing_main_targets: - msg = format_errors_and_warnings( - "The following output names for the interface DAG are not among the " - "interface functions or inputs:\n" - ) + format_list_linewise(sorted(missing_main_targets)) - else: - msg = "" - if missing_main_targets_from_include_conditions: - msg += format_errors_and_warnings( - "\n\nThe following elements specified in some include condition of " - "`fail_or_warn_function`s are not among the interface functions or " - "inputs:\n" - ) + format_list_linewise( - sorted(missing_main_targets_from_include_conditions) - ) - raise ValueError(msg) diff --git a/src/ttsim/interface_dag_elements/__init__.py b/src/ttsim/interface_dag_elements/__init__.py deleted file mode 100644 index 845362afe0..0000000000 --- a/src/ttsim/interface_dag_elements/__init__.py +++ /dev/null @@ -1,171 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass, field -from typing import Any - - -@dataclass(frozen=True) -class MainTargetABC: - @classmethod - def to_dict(cls) -> dict[str, Any]: - return { - k: v.to_dict() if isinstance(v, type(MainTargetABC)) else v - for k, v in cls.__dict__.items() - if not k.startswith("_") - } - - def __post_init__(self) -> None: - raise NotImplementedError("Do not instantiate this class directly.") - - -@dataclass(frozen=True) -class WarnIf(MainTargetABC): - functions_and_data_columns_overlap: str = ( - "warn_if__functions_and_data_columns_overlap" - ) - evaluation_date_set_in_multiple_places: str = ( - "warn_if__evaluation_date_set_in_multiple_places" - ) - - -@dataclass(frozen=True) -class FailIf(MainTargetABC): - active_periods_overlap: str = "fail_if__active_periods_overlap" - any_paths_are_invalid: str = "fail_if__any_paths_are_invalid" - backend_has_changed: str = "fail_if__backend_has_changed" - environment_is_invalid: str = "fail_if__environment_is_invalid" - foreign_keys_are_invalid_in_data: str = "fail_if__foreign_keys_are_invalid_in_data" - group_ids_are_outside_top_level_namespace: str = ( - "fail_if__group_ids_are_outside_top_level_namespace" - ) - group_variables_are_not_constant_within_groups: str = ( - "fail_if__group_variables_are_not_constant_within_groups" - ) - input_data_is_invalid: str = "fail_if__input_data_is_invalid" - input_data_tree_is_invalid: str = "fail_if__input_data_tree_is_invalid" - input_df_has_bool_or_numeric_column_names: str = ( - "fail_if__input_df_has_bool_or_numeric_column_names" - ) - input_df_mapper_columns_missing_in_df: str = ( - "fail_if__input_df_mapper_columns_missing_in_df" - ) - input_df_mapper_has_incorrect_format: str = ( - "fail_if__input_df_mapper_has_incorrect_format" - ) - non_convertible_objects_in_results_tree: str = ( - "fail_if__non_convertible_objects_in_results_tree" - ) - param_function_depends_on_column_objects: str = ( - "fail_if__param_function_depends_on_column_objects" - ) - paths_are_missing_in_targets_tree_mapper: str = ( - "fail_if__paths_are_missing_in_targets_tree_mapper" - ) - tt_root_nodes_are_missing: str = "fail_if__tt_root_nodes_are_missing" - targets_are_not_in_specialized_environment_or_data: str = ( - "fail_if__targets_are_not_in_specialized_environment_or_data" - ) - targets_tree_is_invalid: str = "fail_if__targets_tree_is_invalid" - - -@dataclass(frozen=True) -class Results(MainTargetABC): - df_with_mapper: str = "results__df_with_mapper" - df_with_nested_columns: str = "results__df_with_nested_columns" - tree: str = "results__tree" - - -@dataclass(frozen=True) -class RawResults(MainTargetABC): - columns: str = "raw_results__columns" - combined: str = "raw_results__combined" - from_input_data: str = "raw_results__from_input_data" - params: str = "raw_results__params" - - -@dataclass(frozen=True) -class SpecializedEnvironment(MainTargetABC): - without_tree_logic_and_with_derived_functions: str = ( - "specialized_environment__without_tree_logic_and_with_derived_functions" - ) - with_processed_params_and_scalars: str = ( - "specialized_environment__with_processed_params_and_scalars" - ) - with_partialled_params_and_scalars: str = ( - "specialized_environment__with_partialled_params_and_scalars" - ) - tax_transfer_dag: str = "specialized_environment__tax_transfer_dag" - tax_transfer_function: str = "specialized_environment__tax_transfer_function" - - -@dataclass(frozen=True) -class Targets(MainTargetABC): - qname: str = "tt_targets__qname" - tree: str = "tt_targets__tree" - - -@dataclass(frozen=True) -class Labels(MainTargetABC): - column_targets: str = "labels__column_targets" - grouping_levels: str = "labels__grouping_levels" - input_data_targets: str = "labels__input_data_targets" - param_targets: str = "labels__param_targets" - processed_data_columns: str = "labels__processed_data_columns" - input_columns: str = "labels__input_columns" - root_nodes: str = "labels__root_nodes" - top_level_namespace: str = "labels__top_level_namespace" - - -@dataclass(frozen=True) -class DfAndMapper(MainTargetABC): - df: str = "input_data__df_and_mapper__df" - mapper: str = "input_data__df_and_mapper__mapper" - - -@dataclass(frozen=True) -class InputData(MainTargetABC): - df_and_mapper: type[DfAndMapper] = field(default=DfAndMapper) - df_with_nested_columns: str = "input_data__df_with_nested_columns" - flat: str = "input_data__flat" - tree: str = "input_data__tree" - - -@dataclass(frozen=True) -class OrigPolicyObjects(MainTargetABC): - column_objects_and_param_functions: str = ( - "orig_policy_objects__column_objects_and_param_functions" - ) - param_specs: str = "orig_policy_objects__param_specs" - # Do not include root here, will be pre-defined in user-facing implementations. - - -@dataclass(frozen=True) -class Templates(MainTargetABC): - input_data_dtypes: str = "templates__input_data_dtypes" - - -@dataclass(frozen=True) -class MainTarget(MainTargetABC): - results: type[Results] = field(default=Results) - templates: type[Templates] = field(default=Templates) - policy_environment: str = "policy_environment" - specialized_environment: type[SpecializedEnvironment] = field( - default=SpecializedEnvironment - ) - orig_policy_objects: type[OrigPolicyObjects] = field(default=OrigPolicyObjects) - processed_data: str = "processed_data" - raw_results: type[RawResults] = field(default=RawResults) - labels: type[Labels] = field(default=Labels) - input_data: type[InputData] = field(default=InputData) - tt_targets: type[Targets] = field(default=Targets) - num_segments: str = "num_segments" - backend: str = "backend" - evaluation_date_str: str = "evaluation_date_str" - evaluation_date: str = "evaluation_date" - policy_date_str: str = "policy_date_str" - policy_date: str = "policy_date" - xnp: str = "xnp" - dnp: str = "dnp" - rounding: str = "rounding" - warn_if: type[WarnIf] = field(default=WarnIf) - fail_if: type[FailIf] = field(default=FailIf) diff --git a/src/ttsim/interface_dag_elements/automatically_added_functions.py b/src/ttsim/interface_dag_elements/automatically_added_functions.py deleted file mode 100644 index 4b60bc6d6c..0000000000 --- a/src/ttsim/interface_dag_elements/automatically_added_functions.py +++ /dev/null @@ -1,677 +0,0 @@ -from __future__ import annotations - -import inspect -from typing import TYPE_CHECKING, overload - -import dags.tree as dt -from dags import get_free_arguments, rename_arguments - -from ttsim.interface_dag_elements.shared import ( - get_base_name_and_grouping_suffix, - get_re_pattern_for_all_time_units_and_groupings, - get_re_pattern_for_specific_time_units_and_groupings, - group_pattern, -) -from ttsim.tt_dag_elements.aggregation import grouped_sum -from ttsim.tt_dag_elements.column_objects_param_function import ( - DEFAULT_END_DATE, - DEFAULT_START_DATE, - AggByGroupFunction, - ColumnFunction, - ColumnObject, - ParamFunction, - TimeConversionFunction, -) -from ttsim.tt_dag_elements.param_objects import ScalarParam - -if TYPE_CHECKING: - import re - from collections.abc import Callable - - from ttsim.interface_dag_elements.typing import ( - BoolColumn, - FloatColumn, - IntColumn, - OrderedQNames, - QNamePolicyEnvironment, - UnorderedQNames, - ) - - -TIME_UNIT_LABELS = { - "y": "Year", - "q": "Quarter", - "m": "Month", - "w": "Week", - "d": "Day", -} - -_Q_PER_Y = 4 -_M_PER_Y = 12 -_W_PER_Y = 365.25 / 7 -_D_PER_Y = 365.25 - - -def fail_if_multiple_time_units_for_same_base_name_and_group( - base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], -) -> None: - invalid = { - b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 - } - if invalid: - raise ValueError(f"Multiple time units for base names: {invalid}") - - -def y_to_q(value: float) -> float: - """ - Converts yearly to quarterly values. - - Parameters - ---------- - value - Yearly value to be converted to quarterly value. - - Returns - ------- - Quarterly value. - """ - return value / _Q_PER_Y - - -def y_to_m(value: float) -> float: - """ - Converts yearly to monthly values. - - Parameters - ---------- - value - Yearly value to be converted to monthly value. - - Returns - ------- - Monthly value. - """ - return value / _M_PER_Y - - -def y_to_w(value: float) -> float: - """ - Converts yearly to weekly values. - - Parameters - ---------- - value - Yearly value to be converted to weekly value. - - Returns - ------- - Weekly value. - """ - return value / _W_PER_Y - - -def y_to_d(value: float) -> float: - """ - Converts yearly to daily values. - - Parameters - ---------- - value - Yearly value to be converted to daily value. - - Returns - ------- - Daily value. - """ - return value / _D_PER_Y - - -def q_to_y(value: float) -> float: - """ - Converts quarterly to yearly values. - - Parameters - ---------- - value - Quarterly value to be converted to yearly value. - - Returns - ------- - Yearly value. - """ - return value * _Q_PER_Y - - -def q_to_m(value: float) -> float: - """ - Converts quarterly to monthly values. - - Parameters - ---------- - value - Quarterly value to be converted to monthly value. - - Returns - ------- - Monthly value. - """ - return value * _M_PER_Y / _Q_PER_Y - - -def q_to_w(value: float) -> float: - """ - Converts quarterly to weekly values. - - Parameters - ---------- - value - Quarterly value to be converted to weekly value. - - Returns - ------- - Weekly value. - """ - return value * _Q_PER_Y / _W_PER_Y - - -def q_to_d(value: float) -> float: - """ - Converts quarterly to daily values. - - Parameters - ---------- - value - Quarterly value to be converted to daily value. - - Returns - ------- - Daily value. - """ - return value * _Q_PER_Y / _D_PER_Y - - -def m_to_y(value: float) -> float: - """ - Converts monthly to yearly values. - - Parameters - ---------- - value - Monthly value to be converted to yearly value. - - Returns - ------- - Yearly value. - """ - return value * _M_PER_Y - - -def m_to_q(value: float) -> float: - """ - Converts monthly to quarterly values. - - Parameters - ---------- - value - Monthly value to be converted to quarterly value. - - Returns - ------- - Quarterly value. - """ - return value * _M_PER_Y / _Q_PER_Y - - -def m_to_w(value: float) -> float: - """ - Converts monthly to weekly values. - - Parameters - ---------- - value - Monthly value to be converted to weekly value. - - Returns - ------- - Weekly value. - """ - return value * _M_PER_Y / _W_PER_Y - - -def m_to_d(value: float) -> float: - """ - Converts monthly to daily values. - - Parameters - ---------- - value - Monthly value to be converted to daily value. - - Returns - ------- - Daily value. - """ - return value * _M_PER_Y / _D_PER_Y - - -def w_to_y(value: float) -> float: - """ - Converts weekly to yearly values. - - Parameters - ---------- - value - Weekly value to be converted to yearly value. - - Returns - ------- - Yearly value. - """ - return value * _W_PER_Y - - -def w_to_q(value: float) -> float: - """ - Converts weekly to quarterly values. - - Parameters - ---------- - value - Weekly value to be converted to quarterly value. - - Returns - ------- - Quarterly value. - """ - return value * _W_PER_Y / _Q_PER_Y - - -def w_to_m(value: float) -> float: - """ - Converts weekly to monthly values. - - Parameters - ---------- - value - Weekly value to be converted to monthly value. - - Returns - ------- - Monthly value. - """ - return value * _W_PER_Y / _M_PER_Y - - -def w_to_d(value: float) -> float: - """ - Converts weekly to daily values. - - Parameters - ---------- - value - Weekly value to be converted to daily value. - - Returns - ------- - Daily value. - """ - return value * _W_PER_Y / _D_PER_Y - - -def d_to_y(value: float) -> float: - """ - Converts daily to yearly values. - - Parameters - ---------- - value - Daily value to be converted to yearly value. - - Returns - ------- - Yearly value. - """ - return value * _D_PER_Y - - -def d_to_m(value: float) -> float: - """ - Converts daily to monthly values. - - Parameters - ---------- - value - Daily value to be converted to monthly value. - - Returns - ------- - Monthly value. - """ - return value * _D_PER_Y / _M_PER_Y - - -def d_to_q(value: float) -> float: - """ - Converts daily to quarterly values. - - Parameters - ---------- - value - Daily value to be converted to quarterly value. - - Returns - ------- - Quarterly value. - """ - return value * _D_PER_Y / _Q_PER_Y - - -def d_to_w(value: float) -> float: - """ - Converts daily to weekly values. - - Parameters - ---------- - value - Daily value to be converted to weekly value. - - Returns - ------- - Weekly value. - """ - return value * _D_PER_Y / _W_PER_Y - - -_time_conversion_functions = { - "y_to_m": y_to_m, - "y_to_q": y_to_q, - "y_to_w": y_to_w, - "y_to_d": y_to_d, - "q_to_y": q_to_y, - "q_to_m": q_to_m, - "q_to_w": q_to_w, - "q_to_d": q_to_d, - "m_to_y": m_to_y, - "m_to_q": m_to_q, - "m_to_w": m_to_w, - "m_to_d": m_to_d, - "w_to_y": w_to_y, - "w_to_q": w_to_q, - "w_to_m": w_to_m, - "w_to_d": w_to_d, - "d_to_y": d_to_y, - "d_to_m": d_to_m, - "d_to_q": d_to_q, - "d_to_w": d_to_w, -} - - -def _convertibles( - qname_policy_environment: QNamePolicyEnvironment, -) -> dict[str, ColumnObject | ParamFunction | ScalarParam]: - return { - qn: e - for qn, e in qname_policy_environment.items() - if isinstance(e, (ColumnObject, ScalarParam)) - or ( - isinstance(e, ParamFunction) - and e.function.__annotations__["return"] in {"float", "int"} - ) - } - - -def create_time_conversion_functions( - qname_policy_environment: QNamePolicyEnvironment, - input_columns: UnorderedQNames, - grouping_levels: OrderedQNames, -) -> UnorderedQNames: - """ - Create functions converting elements of the policy environment to other time units. - - Convertible elements are column objects, scalar parameters and param functions - returning a scalar (see function *_convertibles*) - - The time unit of a function is determined by a naming convention: - - * Functions referring to yearly values end with "_y", or "_y_x" where "x" is a - grouping level. - * Functions referring to monthly values end with "_m", or "_m_x" where "x" is a - grouping level. - * Functions referring to weekly values end with "_w", or "_w_x" where "x" is a - grouping level. - * Functions referring to daily values end with "_d", or "_d_x" where "x" is a - grouping level. - - Unless the corresponding function already exists, the following will be created: - - * For functions referring to yearly values, create monthly, weekly and daily - functions. - * For functions referring to monthly values, create yearly, weekly and daily - functions. - * For functions referring to weekly values, create yearly, monthly and daily - functions. - * For functions referring to daily values, create yearly, monthly and weekly - functions. - - Parameters - ---------- - functions - The functions dict with qualified function names as keys and functions as - values. - input_columns - The names of the input columns, represented by qualified names. - grouping_levels - The grouping levels. - - Returns - ------- - The functions dict with the new time conversion functions. - """ - time_units = tuple(TIME_UNIT_LABELS) - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - grouping_levels=grouping_levels, - time_units=time_units, - ) - # Map base name and grouping suffix to time conversion inputs. - bngs_to_time_conversion_inputs = {} - bngs_to_variations = {} - for qname, element in _convertibles(qname_policy_environment).items(): - match = pattern_all.fullmatch(qname) - # We must not find multiple time units for the same base name and group. - bngs = get_base_name_and_grouping_suffix(match) - if match.group("time_unit"): - if bngs not in bngs_to_variations: - bngs_to_variations[bngs] = [qname] - else: - bngs_to_variations[bngs].append(qname) - bngs_to_time_conversion_inputs[bngs] = { - "base_name": bngs[0], - "qname_source": qname, - "element": element, - "time_unit": match.group("time_unit"), - "grouping_suffix": bngs[1], - "time_units": time_units, - } - - fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - - converted_elements: dict[str, ColumnObject] = {} - for bngs, inputs in bngs_to_time_conversion_inputs.items(): - for col_name in input_columns: - # If base_name is in provided data, base time conversions on that. - if pattern_specific := get_re_pattern_for_specific_time_units_and_groupings( - base_name=bngs[0], - all_time_units=time_units, - grouping_levels=grouping_levels, - ).fullmatch(col_name): - inputs["qname_source"] = col_name - inputs["time_unit"] = pattern_specific.group("time_unit") - break - - variations = _create_one_set_of_time_conversion_functions(**inputs) - converted_elements = {**converted_elements, **variations} - - return converted_elements - - -def _create_one_set_of_time_conversion_functions( - base_name: str, - qname_source: str, - element: ColumnObject, - time_unit: str, - grouping_suffix: str, - time_units: OrderedQNames, -) -> dict[str, TimeConversionFunction]: - result: dict[str, TimeConversionFunction] = {} - dependencies = ( - set(inspect.signature(element).parameters) - if isinstance(element, ColumnFunction) - else set() - ) - - for target_time_unit in [tu for tu in time_units if tu != time_unit]: - new_name = f"{base_name}_{target_time_unit}{grouping_suffix}" - - # Without the following check, we could create cycles in the DAG: Consider a - # hard-coded function `var_y` that takes `var_m` as an input, assuming it - # to be provided in the input data. If we create a function `var_m`, which - # would take `var_y` as input, we create a cycle. If `var_m` is actually - # provided as an input, `var_m` would be overwritten, removing the cycle. - # However, if `var_m` is not provided as an input, an error message would - # be shown that a cycle between `var_y` and `var_m` was detected. This - # hides the actual problem, which is that `var_m` is not provided as an - # input. - if new_name in dependencies: - continue - - result[new_name] = TimeConversionFunction( - leaf_name=dt.tree_path_from_qname(new_name)[-1], - function=_create_function_for_time_unit( - source=qname_source, - converter=_time_conversion_functions[ - f"{time_unit}_to_{target_time_unit}" - ], - ), - source=qname_source, - start_date=element.start_date, - end_date=element.end_date, - description=( - f"Time conversion of {dt.tree_path_from_qname(qname_source)} " - f"from {time_unit} to {target_time_unit}" - ), - ) - - return result - - -def _create_function_for_time_unit( - source: str, - converter: Callable[[float], float], -) -> Callable[[BoolColumn | FloatColumn | IntColumn], FloatColumn]: - @overload - @rename_arguments(mapper={"x": source}) - def func(x: FloatColumn) -> FloatColumn: ... - - @overload - @rename_arguments(mapper={"x": source}) - def func(x: IntColumn) -> FloatColumn: ... - - @overload - @rename_arguments(mapper={"x": source}) - def func(x: BoolColumn) -> FloatColumn: ... - - @rename_arguments(mapper={"x": source}) - def func(x: FloatColumn | IntColumn | BoolColumn) -> FloatColumn: - return converter(x) - - return func # type: ignore[has-type] - - -def create_agg_by_group_functions( - column_functions: dict[str, ColumnFunction], - input_columns: UnorderedQNames, - tt_targets: OrderedQNames, - grouping_levels: OrderedQNames, - # backend: Literal["numpy", "jax"], -) -> UnorderedQNames: - gp = group_pattern(grouping_levels) - all_functions_and_data = { - **column_functions, - **dict.fromkeys(input_columns), - } - potential_agg_by_group_function_names = { - # Targets that end with a grouping suffix are potential aggregation targets. - *[t for t in tt_targets if gp.match(t)], - *_get_potential_agg_by_group_function_names_from_function_arguments( - functions=column_functions, - group_pattern=gp, - ), - } - # We will only aggregate from individual-level objects. - potential_agg_by_group_sources = { - qn: o for qn, o in all_functions_and_data.items() if not gp.match(qn) - } - # Exclude objects that have been explicitly provided. - - agg_by_group_function_names = { - t - for t in potential_agg_by_group_function_names - if t not in all_functions_and_data - } - out = {} - for abgfn in agg_by_group_function_names: - match = gp.match(abgfn) - base_name_with_time_unit = match.group("base_name_with_time_unit") - if base_name_with_time_unit in potential_agg_by_group_sources: - # Check if the aggregation target is already a dependency of the source - # function to avoid creating cycles in the DAG. Consider a function `x` that - # takes `x_hh` as an input, assuming it to be provided in the input data. If - # we create a function `x_hh`, which would aggregate `x` by household, we - # create a cycle. If `x_hh` is actually provided as an input, `x_hh` would - # be overwritten, removing the cycle. However, if `x_hh` is not provided as - # an input, an error message would be shown that a cycle between `x` and - # `x_hh` was detected. This hides the actual problem, which is that `x_hh` - # is not provided as an input. - source_function = column_functions.get(base_name_with_time_unit) - if source_function and abgfn in get_free_arguments(source_function): - continue - - group_id = f"{match.group('group')}_id" - mapper = {"group_id": group_id, "column": base_name_with_time_unit} - agg_func = rename_arguments( - func=grouped_sum, - mapper=mapper, - ) - out[abgfn] = AggByGroupFunction( - leaf_name=dt.tree_path_from_qname(abgfn)[-1], - function=agg_func, - start_date=DEFAULT_START_DATE, - end_date=DEFAULT_END_DATE, - description=( - f"Automatic sum aggregation of " - f"{dt.tree_path_from_qname(base_name_with_time_unit)} by " - f"{match.group('group')} ID." - ), - ) - return out - - -def _get_potential_agg_by_group_function_names_from_function_arguments( - functions: UnorderedQNames, - group_pattern: re.Pattern[str], -) -> UnorderedQNames: - """Get potential aggregation function names from function arguments. - - Parameters - ---------- - functions - Dictionary containing functions to build the DAG. - - Returns - ------- - Set of potential aggregation targets. - """ - all_names = { - name for func in functions.values() for name in get_free_arguments(func) - } - return {n for n in all_names if group_pattern.match(n)} diff --git a/src/ttsim/interface_dag_elements/backend.py b/src/ttsim/interface_dag_elements/backend.py deleted file mode 100644 index cb6d0b74ba..0000000000 --- a/src/ttsim/interface_dag_elements/backend.py +++ /dev/null @@ -1,47 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Literal - -if TYPE_CHECKING: - from types import ModuleType -import numpy - -from ttsim.interface_dag_elements.interface_node_objects import ( - interface_function, - interface_input, -) - - -@interface_input(in_top_level_namespace=True) -def backend() -> Literal["numpy", "jax"]: - """The computing backend to use for the taxes and transfers function.""" - - -@interface_function(in_top_level_namespace=True) -def xnp(backend: Literal["numpy", "jax"]) -> ModuleType: - """ - Return the backend for numerical operations (either NumPy or jax). - """ - if backend == "numpy": - xnp = numpy - elif backend == "jax": - import jax # noqa: PLC0415 - - xnp = jax.numpy - else: - raise ValueError(f"Unsupported backend: {backend}. Choose 'numpy' or 'jax'.") - return xnp - - -@interface_function(in_top_level_namespace=True) -def dnp(backend: Literal["numpy", "jax"]) -> ModuleType: - """ - Return the backend for datetime objects (either NumPy or jax-datetime) - """ - if backend == "numpy": - dnp = numpy - elif backend == "jax": - # import jax_datetime # noqa: ERA001 - - dnp = numpy # jax_datetime - return dnp diff --git a/src/ttsim/interface_dag_elements/data_converters.py b/src/ttsim/interface_dag_elements/data_converters.py deleted file mode 100644 index a16a587269..0000000000 --- a/src/ttsim/interface_dag_elements/data_converters.py +++ /dev/null @@ -1,175 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any - -import dags.tree as dt -import pandas as pd - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - FlatData, - NestedData, - NestedInputsMapper, - NestedStrings, - QNameData, - ) - - -def _get_p_id_index(data_with_p_id: NestedData | QNameData | FlatData) -> pd.Index: - if "p_id" in data_with_p_id: - return pd.Index(data_with_p_id["p_id"], name="p_id") - if ("p_id",) in data_with_p_id: - return pd.Index(data_with_p_id[("p_id",)], name="p_id") - raise ValueError("No p_id found in data_with_p_id") - - -def nested_data_to_df_with_nested_columns( - nested_data_to_convert: NestedData, - data_with_p_id: NestedData | QNameData | FlatData, -) -> pd.DataFrame: - """Convert a nested data structure to a DataFrame. - - Args: - nested_data_to_convert: - A nested data structure. - data_with_p_id: - Some data structure with a "p_id" column. - - Returns - ------- - A DataFrame. - """ - flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) - - p_id_index = _get_p_id_index(data_with_p_id) - - return pd.DataFrame( - flat_data_to_convert, - index=p_id_index, - ) - - -def nested_data_to_df_with_mapped_columns( - nested_data_to_convert: NestedData, - nested_outputs_df_column_names: NestedStrings, - data_with_p_id: NestedData | QNameData | FlatData, -) -> pd.DataFrame: - """Convert a nested data structure to a DataFrame. - - Args: - nested_data_to_convert: - A nested data structure. - nested_outputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - data_with_p_id: - Some data structure with a "p_id" column. - - Returns - ------- - A DataFrame. - """ - flat_data_to_convert = dt.flatten_to_tree_paths(nested_data_to_convert) - flat_df_columns = dt.flatten_to_tree_paths(nested_outputs_df_column_names) - p_id_index = _get_p_id_index(data_with_p_id) - - return pd.DataFrame( - {flat_df_columns[path]: data for path, data in flat_data_to_convert.items()}, - index=p_id_index, - ) - - -def df_with_mapped_columns_to_flat_data( - mapper: NestedInputsMapper, - df: pd.DataFrame, - xnp: ModuleType, -) -> FlatData: - """Transform a pandas DataFrame to a flattened data structure. - ` - Args - ---- - inputs_tree_to_df_columns: - A nested dictionary that defines the structure of the inputs tree. The - elements of the tree paths are strings. Leaves can be: - - - Strings that reference column names in the DataFrame. - - Numeric or boolean values (which will be broadcasted to match the - DataFrame length) - df: - The pandas DataFrame containing the source data. - - Returns - ------- - A flattened data structure containing the data organized according to the - mapping definition. - - Examples - -------- - >>> df = pd.DataFrame({ - ... "a": [1, 2, 3], - ... "b": [4, 5, 6], - ... "c": [7, 8, 9], - ... }) - >>> inputs_tree_to_df_columns = { - ... "n1": { - ... "n2": "a", - ... "n3": "b", - ... }, - ... "n4": 3, - ... } - >>> result = create_data_tree( - ... inputs_tree_to_df_columns=inputs_tree_to_df_columns, - ... df=df, - ... ) - >>> result - { - ("n1", "n2"): np.array([1, 2, 3]), - ("n1", "n3"): np.array([4, 5, 6]), - ("n4",): np.array([3, 3, 3]), - } - - - """ - path_to_array = {} - for path, mapper_value in dt.flatten_to_tree_paths(mapper).items(): - if xnp.isscalar(mapper_value) and not isinstance(mapper_value, str): - path_to_array[path] = xnp.asarray([mapper_value] * len(df)) - else: - path_to_array[path] = xnp.asarray(df[mapper_value]) - - return path_to_array - - -def df_with_nested_columns_to_flat_data( - df: pd.DataFrame, - xnp: ModuleType, -) -> FlatData: - """Convert a DataFrame with nested columns to a flattened data structure. - - Args: - df: - The pandas DataFrame with nested columns. - xnp: - The numpy module. - - Returns - ------- - A flattened data structure. - - Examples - -------- - >>> df = pd.DataFrame({("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}) - >>> result = df_with_nested_columns_to_flat_data(df, xnp=np) - >>> result - {("a", "b"): np.array([1, 2, 3]), ("c",): np.array([4, 5, 6])} - """ - return { - _remove_nan_from_keys(key): xnp.asarray(value) - for key, value in df.to_dict(orient="list").items() - } - - -def _remove_nan_from_keys(path: tuple[str | Any, ...]) -> tuple[str, ...]: - """Remove nan string from string tuples.""" - return tuple(el for el in path if not pd.isna(el)) diff --git a/src/ttsim/interface_dag_elements/dates.py b/src/ttsim/interface_dag_elements/dates.py deleted file mode 100644 index 2e83d81b1a..0000000000 --- a/src/ttsim/interface_dag_elements/dates.py +++ /dev/null @@ -1,76 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Literal - -from ttsim.interface_dag_elements.interface_node_objects import ( - input_dependent_interface_function, - interface_function, - interface_input, -) -from ttsim.interface_dag_elements.shared import to_datetime - -if TYPE_CHECKING: - import datetime - - from ttsim.interface_dag_elements.typing import DashedISOString - - -@interface_input(in_top_level_namespace=True) -def policy_date_str() -> DashedISOString: - """The date to be used as policy date in YYYY-MM-DD format. - - Will also be used as evaluation date in case that is neither provided as an argument - to `main` nor as part of the input data / parameters. - """ - - -@interface_input(in_top_level_namespace=True) -def evaluation_date_str() -> DashedISOString: - """The date to be used as evaluation date in YYYY-MM-DD format. - - Will be overridden by values for year / month / day found in the input data or - parameters. - """ - - -@interface_function(in_top_level_namespace=True) -def policy_date(policy_date_str: DashedISOString) -> datetime.date: - """The date to be used as policy date. - - Will also be used as evaluation date in case that is neither provided as an argument - to `main` nor as part of the input data / parameters. - """ - return to_datetime(policy_date_str) - - -@input_dependent_interface_function( - include_if_no_input_present=["evaluation_date_str"], - leaf_name="evaluation_date", - in_top_level_namespace=True, -) -def evaluation_date_use_other_info( - backend: Literal["numpy", "jax"], # noqa: ARG001 -) -> datetime.date | None: - """The date to be used as evaluation date in YYYY-MM-DD format. - - Will be overridden by values for year / month / day found in the input data or - parameters. - - *Developer note:* The backend is needed to get some parent in here, else it will be - counted as a root node and thus trigger - `_fail_if_root_nodes_of_interface_dag_are_missing`. - - """ - return None - - -@input_dependent_interface_function( - include_if_all_inputs_present=["evaluation_date_str"], - leaf_name="evaluation_date", - in_top_level_namespace=True, -) -def evaluation_date_from_evaluation_date_str( - evaluation_date_str: DashedISOString, -) -> datetime.date | None: - """The date to be used as evaluation date.""" - return to_datetime(evaluation_date_str) diff --git a/src/ttsim/interface_dag_elements/fail_if.py b/src/ttsim/interface_dag_elements/fail_if.py deleted file mode 100644 index a74143260c..0000000000 --- a/src/ttsim/interface_dag_elements/fail_if.py +++ /dev/null @@ -1,943 +0,0 @@ -from __future__ import annotations - -import datetime -import functools -import itertools -import textwrap -from dataclasses import dataclass -from types import ModuleType -from typing import TYPE_CHECKING, Any, Literal - -import dags.tree as dt -import networkx as nx -import numpy -import optree -import pandas as pd -from dags import get_free_arguments - -try: - import jax -except ImportError: - jax = None - - -from ttsim.interface_dag_elements.interface_node_objects import fail_function -from ttsim.interface_dag_elements.shared import get_name_of_group_by_id -from ttsim.tt_dag_elements.column_objects_param_function import ( - DEFAULT_END_DATE, - ColumnFunction, - ColumnObject, - FKType, - ParamFunction, - PolicyInput, -) -from ttsim.tt_dag_elements.param_objects import ( - PLACEHOLDER_FIELD, - PLACEHOLDER_VALUE, - ParamObject, -) - -if TYPE_CHECKING: - from collections.abc import Callable - - from ttsim.interface_dag_elements.input_data import FlatData - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - NestedData, - NestedInputsMapper, - NestedStrings, - NestedTargetDict, - OrderedQNames, - OrigParamSpec, - PolicyEnvironment, - QNameData, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithPartialledParamsAndScalars, - UnorderedQNames, - ) - - -class KeyErrorMessage(str): - """Subclass str to allow for line breaks in KeyError messages.""" - - __slots__ = () - - def __repr__(self) -> str: - return str(self) - - -class ConflictingActivePeriodsError(Exception): - def __init__( - self, - affected_column_objects: list[ColumnObject], - path: OrderedQNames, - overlap_start: datetime.date, - overlap_end: datetime.date, - ) -> None: - self.affected_column_objects = affected_column_objects - self.path = path - self.overlap_start = overlap_start - self.overlap_end = overlap_end - - def __str__(self) -> str: - overlapping_objects = [ - obj.__getattribute__("original_function_name") - for obj in self.affected_column_objects - if obj - ] - return f""" - Functions with path - - {self.path} - - have overlapping start and end dates. The following functions are affected: - - { - ''' - '''.join(overlapping_objects) - } - - Overlap from {self.overlap_start} to {self.overlap_end}.""" - - -@dataclass(frozen=True) -class _ParamWithActivePeriod(ParamObject): - """A ParamObject object which mimics a ColumnObject regarding active periods. - - Only used here for checking overlap. - """ - - original_function_name: str = PLACEHOLDER_FIELD - - def __post_init__(self) -> None: - if self.original_function_name is PLACEHOLDER_VALUE: - raise ValueError( - "'original_function_name' field must be specified for _ParamWithActivePeriod" - ) - - -def assert_valid_ttsim_pytree( - tree: Any, # noqa: ANN401 - leaf_checker: Callable[..., Any], - tree_name: str, -) -> None: - """ - Recursively assert that a pytree meets the following conditions: - - The tree is a dictionary. - - All keys are strings. - - All leaves satisfy a provided condition (leaf_checker). - - Parameters - ---------- - tree : Any - The tree to validate. - leaf_checker : Callable[..., Any] - A function that takes a leaf and returns True if it is valid. - tree_name : str - The name of the tree (used for error messages). - - Raises - ------ - TypeError - If any branch or leaf does not meet the expected requirements. - """ - - def _assert_valid_ttsim_pytree(subtree: Any, current_key: tuple[str, ...]) -> None: # noqa: ANN401 - def format_key_path(key_tuple: tuple[str, ...]) -> str: - return "".join(f"[{k}]" for k in key_tuple) - - if not isinstance(subtree, dict): - path_str = format_key_path(current_key) - msg = format_errors_and_warnings( - f"{tree_name}{path_str} must be a dict, got {type(subtree)}.", - ) - raise TypeError(msg) - - for key, value in subtree.items(): - new_key_path = (*current_key, key) - if not isinstance(key, str): - msg = format_errors_and_warnings( - f"Key {key} in {tree_name}{format_key_path(current_key)} must be a " - f"string but got {type(key)}.", - ) - raise TypeError(msg) - if isinstance(value, dict): - _assert_valid_ttsim_pytree(value, new_key_path) - else: - if not leaf_checker(value): - msg = format_errors_and_warnings( - f"Leaf at {tree_name}{format_key_path(new_key_path)} is " - f"invalid: got {value} of type {type(value)}.", - ) - raise TypeError(msg) - - _assert_valid_ttsim_pytree(tree, current_key=()) - - -@fail_function() -def active_periods_overlap( - orig_policy_objects__column_objects_and_param_functions: FlatColumnObjectsParamFunctions, - orig_policy_objects__param_specs: FlatOrigParamSpecs, -) -> None: - """Fail because active periods of objects / parameters overlap. - - Checks that objects or parameters with the same tree path / qualified name are not - active at the same time. - - Raises - ------ - ConflictingActivePeriodsError - If multiple objects and/or parameters with the same leaf name are active at the - same time. - """ - # Create mapping from leaf names to objects. - overlap_checker: dict[ - tuple[str, ...], - list[ColumnObject | ParamFunction | _ParamWithActivePeriod], - ] = {} - for ( - orig_path, - obj, - ) in orig_policy_objects__column_objects_and_param_functions.items(): - path = (*orig_path[:-2], obj.leaf_name) - if path in overlap_checker: - overlap_checker[path].append(obj) - else: - overlap_checker[path] = [obj] - - for orig_path, obj in orig_policy_objects__param_specs.items(): - path = (*orig_path[:-2], orig_path[-1]) - if path in overlap_checker: - overlap_checker[path].extend( - _param_with_active_periods(param_spec=obj, leaf_name=orig_path[-1]), - ) - else: - overlap_checker[path] = _param_with_active_periods( - param_spec=obj, - leaf_name=orig_path[-1], - ) - - # Check for overlapping start and end dates for time-dependent functions. - for path, objects in overlap_checker.items(): - active_period = [(f.start_date, f.end_date) for f in objects] - for (start1, end1), (start2, end2) in itertools.combinations(active_period, 2): - if start1 <= end2 and start2 <= end1: - raise ConflictingActivePeriodsError( - affected_column_objects=objects, - path=path, - overlap_start=max(start1, start2), - overlap_end=min(end1, end2), - ) - - -@fail_function() -def any_paths_are_invalid( - policy_environment: PolicyEnvironment, - input_data__tree: NestedData, - tt_targets__tree: NestedTargetDict | NestedStrings, - labels__top_level_namespace: UnorderedQNames, -) -> None: - """Thin wrapper around `dt.fail_if_paths_are_invalid`.""" - return dt.fail_if_paths_are_invalid( - functions=policy_environment, - data_tree=input_data__tree, - targets=tt_targets__tree, - top_level_namespace=labels__top_level_namespace, - ) - - -@fail_function(include_if_all_elements_present=["results__df_with_mapper"]) -def paths_are_missing_in_targets_tree_mapper( - results__tree: NestedData, - tt_targets__tree: NestedStrings, -) -> None: - """Fail if the data paths are missing in the paths to column names.""" - paths_in_data = dt.flatten_to_tree_paths(results__tree) - paths_in_mapper = dt.flatten_to_tree_paths(tt_targets__tree) - missing_paths = [str(p) for p in paths_in_mapper if p not in paths_in_data] - if missing_paths: - msg = ( - format_errors_and_warnings( - "Converting the nested data to a DataFrame failed because the following " - "paths are not mapped to a column name: " - ) - + f"\n{format_list_linewise(list(missing_paths))}", - ) - raise ValueError(msg) - - -@fail_function() -def input_data_tree_is_invalid( - input_data__tree: NestedData, backend: Literal["numpy", "jax"], xnp: ModuleType -) -> None: - """Validate the basic structure of the input data tree.""" - valid_leaf_types = (pd.Series, numpy.ndarray, xnp.ndarray) - if backend == "numpy" and jax is not None: - valid_leaf_types = (*valid_leaf_types, jax.numpy.ndarray) - assert_valid_ttsim_pytree( - tree=input_data__tree, - leaf_checker=lambda leaf: isinstance(leaf, valid_leaf_types), - tree_name="input_data__tree", - ) - - -@fail_function(include_if_any_element_present=["input_data__flat"]) -def input_data_is_invalid(input_data__flat: FlatData) -> None: - """Fail if the input data is invalid. - - Fails if: - - The `p_id` column is missing. - - The `p_id` column has non-integer values. - - The `p_id` column has non-unique values. - - The input arrays have different lengths. - """ - p_id = input_data__flat.get(("p_id",), None) - if p_id is None: - raise ValueError("The input data must contain the `p_id` column.") - - dtype_normalized = str(p_id.dtype).lower() - if "int" not in dtype_normalized: - msg = format_errors_and_warnings( - f"The `p_id` column must be of integer dtype. Got: {p_id.dtype}." - ) - raise ValueError(msg) - - # Check for non-unique p_ids - p_id_counts: dict[int, int] = {} - # Need the map because Jax loop items are 1-element arrays. - for i in map(int, p_id): - if i in p_id_counts: - p_id_counts[i] += 1 - else: - p_id_counts[i] = 1 - - non_unique_p_ids = [i for i, count in p_id_counts.items() if count > 1] - - if non_unique_p_ids: - message = ( - "The following `p_id`s are not unique in the input data:\n\n" - f"{non_unique_p_ids}\n\n" - ) - raise ValueError(message) - - len_p_id_array = len(input_data__flat[("p_id",)]) - faulty_arrays: list[str] = [] - for key, arr in input_data__flat.items(): - if len(arr) != len_p_id_array: - faulty_arrays.append(key) - if faulty_arrays: - formatted_faulty_paths = "\n".join(f" - {p}" for p in faulty_arrays) - msg = format_errors_and_warnings( - "The lengths of the following columns do not match the length of the `p_id`" - f" column:\n{formatted_faulty_paths}" - ) - raise ValueError(msg) - - -@fail_function() -def environment_is_invalid( - policy_environment: PolicyEnvironment, -) -> None: - """Validate that the environment is a pytree with supported types.""" - assert_valid_ttsim_pytree( - tree=policy_environment, - leaf_checker=lambda leaf: isinstance( - leaf, - ColumnObject | ParamFunction | ParamObject | ModuleType, - ) - or (isinstance(leaf, str) and leaf in ["numpy", "jax"]), - tree_name="policy_environment", - ) - - -@fail_function() -def foreign_keys_are_invalid_in_data( - labels__root_nodes: UnorderedQNames, - input_data__flat: FlatData, - specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, -) -> None: - """ - Check that all foreign keys are valid. - - Foreign keys must point to an existing `p_id` in the input data and must not refer - to the `p_id` of the same row. - - We test this only in the columns that are actually used, not in some `p_id_xxx` - column that may be present in the data. - """ - valid_ids = set(input_data__flat[("p_id",)].tolist()) | {-1} - relevant_objects = { - k: v - for k, v in specialized_environment__without_tree_logic_and_with_derived_functions.items() - if isinstance(v, PolicyInput | ColumnFunction) - } - - for fk_name, fk in relevant_objects.items(): - if fk.foreign_key_type == FKType.IRRELEVANT: - continue - if fk_name in labels__root_nodes: - path = dt.tree_path_from_qname(fk_name) - # Referenced `p_id` must exist in the input data - if not all(i in valid_ids for i in input_data__flat[path].tolist()): - message = format_errors_and_warnings( - f""" - For {path}, the following are not a valid p_id in the input - data: {[i for i in input_data__flat[path] if i not in valid_ids]}. - """, - ) - raise ValueError(message) - - if fk.foreign_key_type == FKType.MUST_NOT_POINT_TO_SELF: - equal_to_pid_in_same_row = [ - i - for i, j in zip( - input_data__flat[path].tolist(), - input_data__flat[("p_id",)].tolist(), - strict=False, - ) - if i == j - ] - if any(equal_to_pid_in_same_row): - message = format_errors_and_warnings( - f""" - For {path}, the following are equal to the p_id in the same - row: {equal_to_pid_in_same_row}. - """, - ) - raise ValueError(message) - - -@fail_function() -def group_ids_are_outside_top_level_namespace( - policy_environment: PolicyEnvironment, -) -> None: - """Fail if group ids are outside the top level namespace.""" - group_ids_outside_top_level_namespace = { - tree_path - for tree_path in dt.flatten_to_tree_paths(policy_environment) - if len(tree_path) > 1 and tree_path[-1].endswith("_id") - } - if group_ids_outside_top_level_namespace: - raise ValueError( - "Group identifiers must live in the top-level namespace. Got:\n\n" - f"{group_ids_outside_top_level_namespace}\n\n" - "To fix this error, move the group identifiers to the top-level namespace.", - ) - - -@fail_function() -def group_variables_are_not_constant_within_groups( - labels__grouping_levels: OrderedQNames, - labels__root_nodes: UnorderedQNames, - processed_data: QNameData, -) -> None: - """ - Check that group variables are constant within each group. - - Parameters - ---------- - data - Dictionary of data. - grouping_levels - The grouping levels available in the policy environment. - """ - faulty_data_columns = [] - - for name in labels__root_nodes: - group_by_id = get_name_of_group_by_id( - target_name=name, - grouping_levels=labels__grouping_levels, - ) - if group_by_id in processed_data: - group_by_id_series = pd.Series(processed_data[group_by_id]) - leaf_series = pd.Series(processed_data[name]) - unique_counts = leaf_series.groupby(group_by_id_series).nunique( - dropna=False, - ) - if not (unique_counts == 1).all(): - faulty_data_columns.append(name) - - if faulty_data_columns: - formatted = format_list_linewise(faulty_data_columns) - msg = format_errors_and_warnings( - f"""The following data inputs do not have a unique value within - each group defined by the provided grouping IDs: - - {formatted} - - To fix this error, assign the same value to each group. - """, - ) - raise ValueError(msg) - - -@fail_function( - include_if_any_element_present=[ - "results__df_with_mapper", - "results__df_with_nested_columns", - ] -) -def non_convertible_objects_in_results_tree( - processed_data: QNameData, - results__tree: NestedData, - backend: Literal["numpy", "jax"], - xnp: ModuleType, -) -> None: - """Fail if results should be converted to a DataFrame but cannot.""" - _numeric_types = ( - int, - float, - bool, - numpy.integer, - numpy.floating, - numpy.bool_, - xnp.integer, - xnp.floating, - xnp.bool_, - ) - _array_types = (numpy.ndarray, xnp.ndarray) - if backend == "numpy" and jax is not None: - _numeric_types = ( - *_numeric_types, - jax.numpy.integer, - jax.numpy.floating, - jax.numpy.bool_, - ) - _array_types = (*_array_types, jax.numpy.ndarray) - - expected_object_length = len(next(iter(processed_data.values()))) - - paths_with_incorrect_types: list[str] = [] - paths_with_incorrect_length: list[str] = [] - for path, column_data in dt.flatten_to_tree_paths(results__tree).items(): - if isinstance(column_data, _array_types): - if len(column_data) not in {1, expected_object_length}: - paths_with_incorrect_length.append(str(path)) - elif isinstance(column_data, _numeric_types): - continue - else: - paths_with_incorrect_types.append(str(path)) - - if paths_with_incorrect_types: - msg = ( - format_errors_and_warnings( - "The data contains objects that cannot be cast to a pandas.DataFrame " - "column. Make sure that the requested targets return scalars or arrays of " - "scalars only. The following paths contain incompatible objects: " - ) - + f"\n{format_list_linewise(paths_with_incorrect_types)}" - ) - raise TypeError(msg) - if paths_with_incorrect_length: - msg = ( - format_errors_and_warnings( - "The data contains paths that don't have the same length as the input data " - "and are not scalars. The following paths are faulty: " - ) - + f"\n{format_list_linewise(paths_with_incorrect_length)}" - ) - raise ValueError(msg) - - -@fail_function() -def input_df_has_bool_or_numeric_column_names( - input_data__df_and_mapper__df: pd.DataFrame, -) -> None: - """Fail if the DataFrame has bool or numeric column names.""" - common_msg = format_errors_and_warnings( - """DataFrame column names cannot be booleans or numbers. This restriction - prevents ambiguity between actual column references and values intended for - broadcasting (i.e., just supplying a single value applying to all rows). - """, - ) - bool_column_names = [ - col for col in input_data__df_and_mapper__df.columns if isinstance(col, bool) - ] - numeric_column_names = [ - col - for col in input_data__df_and_mapper__df.columns - if isinstance(col, (int, float)) or (isinstance(col, str) and col.isnumeric()) - ] - - if bool_column_names or numeric_column_names: - msg = format_errors_and_warnings( - f""" - {common_msg} - - Boolean column names: {bool_column_names}. - Numeric column names: {numeric_column_names}. - """, - ) - raise ValueError(msg) - - -@fail_function() -def input_df_mapper_columns_missing_in_df( - input_data__df_and_mapper__df: pd.DataFrame, - input_data__df_and_mapper__mapper: NestedInputsMapper, -) -> None: - """Fail if the input mapper specifies columns that are not in the input dataframe. - - Parameters - ---------- - input_data__df_and_mapper__df - The input dataframe. - input_data__df_and_mapper__mapper - The input mapper. - xnp - The numpy module. - """ - mapper_vals = dt.flatten_to_qnames(input_data__df_and_mapper__mapper).values() - expected_cols_in_df = [v for v in mapper_vals if isinstance(v, str)] - missing_cols_in_df = [ - v for v in expected_cols_in_df if v not in input_data__df_and_mapper__df.columns - ] - if missing_cols_in_df: - msg = format_errors_and_warnings( - "Some column names in the input mapper are not present in the input " - f"DataFrame. The following columns are missing: {missing_cols_in_df}.", - ) - raise ValueError(msg) - - -@fail_function() -def input_df_mapper_has_incorrect_format( - input_data__df_and_mapper__mapper: NestedInputsMapper, - xnp: ModuleType, -) -> None: - """Fail if the input mapper has an incorrect format. - - Fails if: - - The input mapper is not a valid TTSIM pytree. - - The input mapper has non-string paths. - """ - if not isinstance(input_data__df_and_mapper__mapper, dict): - msg = format_errors_and_warnings( - """The inputs tree to column mapping must be a (nested) dictionary. Call - `dags.tree.create_tree_with_input_types` to create a template.""", - ) - raise TypeError(msg) - - non_string_paths = [ - str(path) - for path in optree.tree_paths( - input_data__df_and_mapper__mapper, # type: ignore[arg-type] - none_is_leaf=True, - ) - if not all(isinstance(part, str) for part in path) - ] - if non_string_paths: - msg = format_errors_and_warnings( - f"""All path elements of `MainArgs.input_data.df_and_mapper.mapper` must be - strings. Found the following paths that contain non-string elements: - - {format_list_linewise(non_string_paths)} - - Note that you can use `main(main_target=MainTarget.templates.input_data_dtypes)` - to create a template. - """, - ) - raise TypeError(msg) - - incorrect_types = { - k: type(v) - for k, v in dt.flatten_to_qnames(input_data__df_and_mapper__mapper).items() - if not xnp.isscalar(v) and not isinstance(v, str) - } - if incorrect_types: - formatted_incorrect_types = "\n".join( - f" - {k}: {v.__name__}" for k, v in incorrect_types.items() - ) - msg = format_errors_and_warnings( - f"""Values of the input tree to column mapping must be strings, integers, - floats, or Booleans. - Found the following incorrect types: - - {formatted_incorrect_types} - """, - ) - raise TypeError(msg) - - -@fail_function() -def backend_has_changed( - specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, - backend: Literal["numpy", "jax"], -) -> None: - """Fail if the backend has changed.""" - if backend == "numpy": - return - - issues = "" - for func in specialized_environment__with_partialled_params_and_scalars.values(): - if isinstance(func, functools.partial): - for argname, arg in func.keywords.items(): - if isinstance(arg, numpy.ndarray) or any( - isinstance(getattr(arg, attr), numpy.ndarray) for attr in dir(arg) - ): - issues += f" {dt.tree_path_from_qname(argname)}\n" - if issues: - raise ValueError( - "Backend has changed from numpy to jax.\n\n" - f"Found numpy arrays in:\n\n{issues}" - ) - - -@fail_function() -def tt_root_nodes_are_missing( - specialized_environment__tax_transfer_dag: nx.DiGraph, - specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, - processed_data: QNameData, - labels__grouping_levels: OrderedQNames, -) -> None: - """Fail if root nodes are missing. - - Parameters - ---------- - specialized_environment__tax_transfer_dag - The DAG of taxes and transfers functions. - specialized_environment__with_partialled_params_and_scalars - The specialized environment with partialled params and scalars. - processed_data - The processed data to be used as an input to the taxes & transfers function. - labels__grouping_levels - The grouping levels available in the policy environment. - - Raises - ------ - ValueError - If root nodes are missing. - """ - - if not processed_data: - raise ValueError( - "For computing results, you need to pass data. " - "You can do this by passing a suitable `input_data=InputData.[x]` argument " - "to `main`." - ) - # Obtain root nodes - root_nodes = nx.subgraph_view( - specialized_environment__tax_transfer_dag, - filter_node=lambda n: specialized_environment__tax_transfer_dag.in_degree(n) - == 0, - ).nodes - - missing_nodes = [ - node - for node in root_nodes - if node not in processed_data - # Catches policy functions which do not take arguments. - and node not in specialized_environment__with_partialled_params_and_scalars - ] - - if missing_nodes: - grouping_levels_in_missing_nodes = tuple( - lvl - for lvl in labels__grouping_levels - if any(qn.endswith(lvl) for qn in missing_nodes) - ) - formatted_missing_nodes = format_list_linewise( - [str(dt.tree_path_from_qname(mn)) for mn in missing_nodes], - ) - msg = f"The following data columns are missing.\n{formatted_missing_nodes}" - if grouping_levels_in_missing_nodes: - msg += ( - "\n\nNote that the missing nodes contain columns that are grouped by " - f"the following grouping levels: {grouping_levels_in_missing_nodes}. " - "In some cases, it may be useful to pass the individual-level columns " - "instead, in which case the aggregation will be handled automatically." - ) - raise ValueError(msg) - - -@fail_function() -def targets_are_not_in_specialized_environment_or_data( - specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - labels__processed_data_columns: UnorderedQNames, - tt_targets__qname: OrderedQNames, -) -> None: - """Fail if some target is not among functions. - - Parameters - ---------- - functions - Dictionary containing functions to build the DAG. - labels__processed_data_columns - The columns which are available in the data tree. - tt_targets__qname - The taxes & transfers targets which should be computed. They limit the DAG in - the way that only ancestors of these nodes need to be considered. - - Raises - ------ - ValueError - Raised if any member of `tt_targets` is not among functions. - - """ - missing_targets = [ - str(dt.tree_path_from_qname(n)) - for n in tt_targets__qname - if n - not in specialized_environment__without_tree_logic_and_with_derived_functions - and n not in labels__processed_data_columns - ] - if missing_targets: - formatted = format_list_linewise(missing_targets) - msg = f"The following targets have no corresponding function:\n\n{formatted}" - raise ValueError(msg) - - -@fail_function() -def targets_tree_is_invalid(tt_targets__tree: NestedTargetDict | NestedStrings) -> None: - """ - Validate that the targets tree is a dictionary with string keys and None leaves. - """ - assert_valid_ttsim_pytree( - tree=tt_targets__tree, - leaf_checker=lambda leaf: isinstance(leaf, (None | str)), - tree_name="tt_targets__tree", - ) - - -def format_errors_and_warnings(text: str, width: int = 79) -> str: - """Format our own exception messages and warnings by dedenting paragraphs and - wrapping at the specified width. Mainly required because of messages are written as - part of indented blocks in our source code. - - Parameters - ---------- - text : str - The text which can include multiple paragraphs separated by two newlines. - width : int - The text will be wrapped by `width` characters. - - Returns - ------- - Correctly dedented, wrapped text. - - """ - text = text.lstrip("\n") - paragraphs = text.split("\n\n") - wrapped_paragraphs = [] - for paragraph in paragraphs: - dedented_paragraph = textwrap.dedent(paragraph) - wrapped_paragraph = textwrap.fill(dedented_paragraph, width=width) - wrapped_paragraphs.append(wrapped_paragraph) - - return "\n\n".join(wrapped_paragraphs) - - -def format_list_linewise(some_list: list[Any]) -> str: # type: ignore[type-arg, unused-ignore] - formatted_list = '",\n "'.join(some_list) - return textwrap.dedent( - """ - [ - "{formatted_list}", - ] - """, - ).format(formatted_list=formatted_list) - - -def _param_with_active_periods( - param_spec: OrigParamSpec, - leaf_name: str, -) -> list[_ParamWithActivePeriod]: - """Return parameter with active periods.""" - - def _remove_note_and_reference(entry: dict[str | int, Any]) -> dict[str | int, Any]: - """Remove note and reference from a parameter specification.""" - entry.pop("note", None) - entry.pop("reference", None) - return entry - - relevant = sorted( - [key for key in param_spec if isinstance(key, datetime.date)], - reverse=True, - ) - if not relevant: - raise ValueError(f"No relevant dates found for {param_spec}") - - params_header = { - "name": param_spec["name"], - "description": param_spec["description"], - "unit": param_spec["unit"], - "reference_period": param_spec["reference_period"], - } - out = [] - start_date: datetime.date | None = None - end_date = DEFAULT_END_DATE - for date in relevant: - if _remove_note_and_reference(param_spec[date]): - start_date = date - else: - if start_date: - out.append( - _ParamWithActivePeriod( - leaf_name=leaf_name, - start_date=start_date, - end_date=end_date, - original_function_name=leaf_name, - **params_header, - ), - ) - start_date = None - end_date = date - datetime.timedelta(days=1) - if start_date: - out.append( - _ParamWithActivePeriod( - leaf_name=leaf_name, - original_function_name=leaf_name, - start_date=start_date, - end_date=end_date, - **params_header, - ), - ) - - return out - - -@fail_function() -def param_function_depends_on_column_objects( - specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, -) -> None: - """Fail if any ParamFunction depends on ColumnObject arguments. - - Parameters - ---------- - specialized_environment__without_tree_logic_and_with_derived_functions - The specialized environment containing all functions and objects. - - Raises - ------ - ValueError - If any ParamFunction has ColumnObject arguments. - """ - param_functions = { - name: obj - for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() - if isinstance(obj, ParamFunction) - } - - column_objects = { - name: obj - for name, obj in specialized_environment__without_tree_logic_and_with_derived_functions.items() - if isinstance(obj, ColumnObject) - } - - violations = "" - for param_func_name, param_func in param_functions.items(): - func_args = set(get_free_arguments(param_func.function)) - - for arg in func_args: - if arg in column_objects: - violations += f" `{param_func_name}` depends on `{arg}`\n" - - if violations: - msg = ( - "ParamFunctions must not depend on ColumnObjects. The following " - f"violations were found:\n\n{violations}\n" - "ParamFunctions may only depend on parameters and scalars, not on " - "ColumnObjects." - ) - raise ValueError(msg) diff --git a/src/ttsim/interface_dag_elements/input_data.py b/src/ttsim/interface_dag_elements/input_data.py deleted file mode 100644 index adbcd44efb..0000000000 --- a/src/ttsim/interface_dag_elements/input_data.py +++ /dev/null @@ -1,121 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.data_converters import ( - df_with_mapped_columns_to_flat_data, - df_with_nested_columns_to_flat_data, -) -from ttsim.interface_dag_elements.interface_node_objects import ( - input_dependent_interface_function, - interface_input, -) - -if TYPE_CHECKING: - from types import ModuleType - - import pandas as pd - - from ttsim.interface_dag_elements.typing import ( - FlatData, - NestedData, - NestedInputsMapper, - ) - - -@interface_input(leaf_name="df") -def df_and_mapper__df() -> pd.DataFrame: - pass - - -@interface_input(leaf_name="mapper") -def df_and_mapper__mapper() -> NestedInputsMapper: - pass - - -@interface_input() -def df_with_nested_columns() -> pd.DataFrame: - pass - - -@interface_input() -def tree() -> NestedData: - pass - - -@input_dependent_interface_function( - include_if_all_inputs_present=[ - "input_data__df_and_mapper__df", - "input_data__df_and_mapper__mapper", - ], - leaf_name="flat", -) -def flat_from_df_and_mapper( - df_and_mapper__df: pd.DataFrame, - df_and_mapper__mapper: NestedInputsMapper, - xnp: ModuleType, -) -> FlatData: - """The input DataFrame as a flattened data structure. - - Args: - df_and_mapper__df: - The input DataFrame. - df_and_mapper__mapper: - Dictionary mapping tree paths to column names. - - Returns - ------- - Flattened data structure. - """ - return df_with_mapped_columns_to_flat_data( - df=df_and_mapper__df, - mapper=df_and_mapper__mapper, - xnp=xnp, - ) - - -@input_dependent_interface_function( - include_if_all_inputs_present=["input_data__df_with_nested_columns"], - leaf_name="flat", -) -def flat_from_df_with_nested_columns( - df_with_nested_columns: pd.DataFrame, - xnp: ModuleType, -) -> FlatData: - """The input DataFrame as a flattened data structure. - - Args: - df_with_nested_columns: - The input DataFrame with nested column names. - - Returns - ------- - Flattened data structure. - """ - return df_with_nested_columns_to_flat_data( - df=df_with_nested_columns, - xnp=xnp, - ) - - -@input_dependent_interface_function( - include_if_all_inputs_present=["input_data__tree"], - leaf_name="flat", -) -def flat_from_tree(tree: NestedData, xnp: ModuleType) -> FlatData: # noqa: ARG001 - """The input DataFrame as a flattened data structure. - - Args: - tree: - The input tree. - xnp: - The backend to use, just put here so that fail_if.input_data_tree_is_invalid - runs before this. - - Returns - ------- - Flattened data structure. - """ - return dt.flatten_to_tree_paths(tree) diff --git a/src/ttsim/interface_dag_elements/interface_node_objects.py b/src/ttsim/interface_dag_elements/interface_node_objects.py deleted file mode 100644 index af64c58626..0000000000 --- a/src/ttsim/interface_dag_elements/interface_node_objects.py +++ /dev/null @@ -1,391 +0,0 @@ -from __future__ import annotations - -import inspect -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any, Generic, ParamSpec, TypeVar - -import dags.tree as dt - -if TYPE_CHECKING: - from collections.abc import Callable, Iterable - - from ttsim.interface_dag_elements.typing import UnorderedQNames - - -FunArgTypes = ParamSpec("FunArgTypes") -ReturnType = TypeVar("ReturnType") - - -@dataclass(frozen=True) -class InterfaceNodeObject: - """Base class for all objects operating on columns of data. - - Examples - -------- - - PolicyInputs - - PolicyFunctions - - GroupCreationFunctions - - AggByGroupFunctions - - AggByPIDFunctions - - TimeConversionFunctions - - Parameters are not ColumnObjectParamFunctions. - - """ - - leaf_name: str - in_top_level_namespace: bool - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> InterfaceNodeObject: - """Remove tree logic from the function and update the function signature.""" - raise NotImplementedError("Subclasses must implement this method.") - - -@dataclass(frozen=True) -class InterfaceInput(InterfaceNodeObject): - """A dummy function representing an input node.""" - - return_type: type - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], # noqa: ARG002 - top_level_namespace: UnorderedQNames, # noqa: ARG002 - ) -> InterfaceInput: - return self - - -def interface_input( - leaf_name: str | None = None, - in_top_level_namespace: bool = False, -) -> Callable[[Callable[..., Any]], InterfaceInput]: - """ - Decorator that makes a (dummy) function an `InterfaceInput`. - - Returns - ------- - A decorator that returns an InterfaceInput object. - """ - - def inner(func: Callable[..., Any]) -> InterfaceInput: - return InterfaceInput( - leaf_name=leaf_name if leaf_name else func.__name__, - in_top_level_namespace=in_top_level_namespace, - return_type=func.__annotations__["return"], - ) - - return inner - - -def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable[..., Any]) -> None: - """Update a frozen wrapper dataclass to look like the wrapped function. - - This is necessary because the wrapper is a frozen dataclass, so we cannot - use the `functools.update_wrapper` function or `self.__signature__ = ...` - assignments in the `__post_init__` method. - - Args: - wrapper: The wrapper dataclass to update. - wrapped: The function to update the wrapper to. - - """ - object.__setattr__(wrapper, "__signature__", inspect.signature(wrapped)) - - WRAPPER_ASSIGNMENTS = ( # noqa: N806 - "__globals__", - "__closure__", - "__doc__", - "__name__", - "__QName__", - "__module__", - "__annotations__", - "__type_params__", - ) - for attr in WRAPPER_ASSIGNMENTS: - if hasattr(wrapped, attr): - object.__setattr__(wrapper, attr, getattr(wrapped, attr)) - - getattr(wrapper, "__dict__", {}).update(getattr(wrapped, "__dict__", {})) - - -@dataclass(frozen=True) -class InterfaceFunction(InterfaceNodeObject, Generic[FunArgTypes, ReturnType]): - """ - Base class for all functions operating on columns of data. - """ - - function: Callable[FunArgTypes, ReturnType] - - def __post_init__(self) -> None: - # Expose the signature of the wrapped function for dependency resolution - _frozen_safe_update_wrapper(self, self.function) - - def __call__( - self, - *args: FunArgTypes.args, - **kwargs: FunArgTypes.kwargs, - ) -> ReturnType: - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> UnorderedQNames: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - @property - def original_function_name(self) -> str: - """The name of the wrapped function.""" - return self.function.__name__ - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> InterfaceFunction: # type: ignore[type-arg] - """Remove tree logic from the function and update the function signature.""" - return InterfaceFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - in_top_level_namespace=self.in_top_level_namespace, - ) - - -def interface_function( - *, - leaf_name: str | None = None, - in_top_level_namespace: bool = False, -) -> Callable[[Callable[..., Any]], InterfaceFunction[..., Any]]: - """ - Decorator that makes an `InterfaceFunction` from a function. - - Parameters - ---------- - leaf_name - The name that should be used as the PolicyFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. - in_top_level_namespace: - Whether the function is in the top-level namespace of the interface-DAG. - - Returns - ------- - A decorator that returns an InterfaceFunction object. - """ - - def inner(func: Callable[..., Any]) -> InterfaceFunction: # type: ignore[type-arg] - return InterfaceFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - in_top_level_namespace=in_top_level_namespace, - ) - - return inner - - -@dataclass(frozen=True) -class InputDependentInterfaceFunction(InterfaceFunction[FunArgTypes, ReturnType]): - """A function that dynamically changes its behavior based on which InterfaceInput - nodes are given by the user.""" - - include_if_any_input_present: Iterable[str] - include_if_all_inputs_present: Iterable[str] - include_if_no_input_present: Iterable[str] - - def __post_init__(self) -> None: - super().__post_init__() - if ( - not self.include_if_all_inputs_present - and not self.include_if_any_input_present - and not self.include_if_no_input_present - ): - raise ValueError( - "At least one of `include_if_all_inputs_present`, " - "`include_if_any_input_present`, or `include_if_no_input_present` " - "must be specified." - ) - - def include_condition_satisfied(self, input_names: Iterable[str]) -> bool: - """Check if the input names match the include condition.""" - # all(()) evaluates to True, so include first bit - all_cond = self.include_if_all_inputs_present and all( - i in input_names for i in self.include_if_all_inputs_present - ) - any_cond = any(i in input_names for i in self.include_if_any_input_present) - no_cond = bool(self.include_if_no_input_present) and not any( - i in input_names for i in self.include_if_no_input_present - ) - return all_cond or any_cond or no_cond - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> InputDependentInterfaceFunction: # type: ignore[type-arg] - """Remove tree logic from the function and update the function signature.""" - return InputDependentInterfaceFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - in_top_level_namespace=self.in_top_level_namespace, - include_if_any_input_present=self.include_if_any_input_present, - include_if_all_inputs_present=self.include_if_all_inputs_present, - include_if_no_input_present=self.include_if_no_input_present, - ) - - -def input_dependent_interface_function( - *, - include_if_any_input_present: Iterable[str] = (), - include_if_all_inputs_present: Iterable[str] = (), - include_if_no_input_present: Iterable[str] = (), - leaf_name: str | None = None, - in_top_level_namespace: bool = False, -) -> Callable[ - [Callable[..., Any]], InputDependentInterfaceFunction[FunArgTypes, ReturnType] -]: - """ - Decorator that makes an `InputDependentInterfaceFunction` from a function. - - Parameters - ---------- - include_if_any_input_present - List of input names that must be present for the function to be used if any of - the inputs are present. - include_if_all_inputs_present - List of input names that must be present for the function to be used if all of - the inputs are present. - include_if_no_input_present - List of input names that must not be present for the function to be used if no - inputs are present. - leaf_name - The name that should be used as the function's leaf name in the DAG. If omitted, - we use the name of the function as defined. - in_top_level_namespace - Whether the function is in the top-level namespace of the interface-DAG. - - Returns - ------- - A decorator that returns an InputDependentInterfaceFunction object. - """ - - def inner( - func: Callable[..., Any], - ) -> InputDependentInterfaceFunction[FunArgTypes, ReturnType]: - return InputDependentInterfaceFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - in_top_level_namespace=in_top_level_namespace, - include_if_any_input_present=include_if_any_input_present, - include_if_all_inputs_present=include_if_all_inputs_present, - include_if_no_input_present=include_if_no_input_present, - ) - - return inner - - -@dataclass(frozen=True) -class FailFunction(InterfaceFunction): # type: ignore[type-arg] - """An interface function that fails under certain conditions.""" - - include_if_any_element_present: Iterable[str] - include_if_all_elements_present: Iterable[str] - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> FailFunction: - """Remove tree logic from the function and update the function signature.""" - return FailFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - in_top_level_namespace=self.in_top_level_namespace, - include_if_any_element_present=self.include_if_any_element_present, - include_if_all_elements_present=self.include_if_all_elements_present, - ) - - -def fail_function( - *, - include_if_any_element_present: Iterable[str] = (), - include_if_all_elements_present: Iterable[str] = (), - leaf_name: str | None = None, - in_top_level_namespace: bool = False, -) -> Callable[[Callable[..., Any]], FailFunction]: - """ - Decorator that makes a `FailFunction` from a function. - """ - - def inner(func: Callable[..., Any]) -> FailFunction: - return FailFunction( - include_if_any_element_present=include_if_any_element_present, - include_if_all_elements_present=include_if_all_elements_present, - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - in_top_level_namespace=in_top_level_namespace, - ) - - return inner - - -@dataclass(frozen=True) -class WarnFunction(InterfaceFunction): # type: ignore[type-arg] - """An interface function that warns under certain conditions.""" - - include_if_any_element_present: Iterable[str] - include_if_all_elements_present: Iterable[str] - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> WarnFunction: - """Remove tree logic from the function and update the function signature.""" - return WarnFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - in_top_level_namespace=self.in_top_level_namespace, - include_if_any_element_present=self.include_if_any_element_present, - include_if_all_elements_present=self.include_if_all_elements_present, - ) - - -def warn_function( - *, - include_if_any_element_present: Iterable[str] = (), - include_if_all_elements_present: Iterable[str] = (), - leaf_name: str | None = None, - in_top_level_namespace: bool = False, -) -> Callable[[Callable[..., Any]], WarnFunction]: - """ - Decorator that makes a `WarnFunction` from a function. - """ - - def inner(func: Callable[..., Any]) -> WarnFunction: - return WarnFunction( - include_if_any_element_present=include_if_any_element_present, - include_if_all_elements_present=include_if_all_elements_present, - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - in_top_level_namespace=in_top_level_namespace, - ) - - return inner diff --git a/src/ttsim/interface_dag_elements/labels.py b/src/ttsim/interface_dag_elements/labels.py deleted file mode 100644 index 3d0480b4c3..0000000000 --- a/src/ttsim/interface_dag_elements/labels.py +++ /dev/null @@ -1,218 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt -import networkx as nx - -from ttsim.interface_dag_elements.automatically_added_functions import ( - TIME_UNIT_LABELS, -) -from ttsim.interface_dag_elements.interface_node_objects import interface_function -from ttsim.interface_dag_elements.shared import ( - get_base_name_and_grouping_suffix, - get_re_pattern_for_all_time_units_and_groupings, - group_pattern, -) -from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - OrderedQNames, - PolicyEnvironment, - QNameData, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithPartialledParamsAndScalars, - UnorderedQNames, - ) - - -@interface_function() -def grouping_levels( - policy_environment: PolicyEnvironment, -) -> OrderedQNames: - """The grouping levels of the policy environment.""" - return tuple( - name.rsplit("_", 1)[0] - for name in policy_environment - if name.endswith("_id") and name != "p_id" - ) - - -@interface_function() -def top_level_namespace( - policy_environment: PolicyEnvironment, - grouping_levels: OrderedQNames, -) -> UnorderedQNames: - """Get the top level namespace. - - Parameters - ---------- - policy_environment: - The policy environment. - - - Returns - ------- - top_level_namespace: - The top level namespace. - """ - time_units = tuple(TIME_UNIT_LABELS) - direct_top_level_names = set(policy_environment) - - # Do not create variations for lower-level namespaces. - top_level_objects_for_variations = direct_top_level_names - { - k for k, v in policy_environment.items() if isinstance(v, dict) - } - - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - time_units=time_units, - grouping_levels=grouping_levels, - ) - bngs_to_variations = {} - all_top_level_names = direct_top_level_names.copy() - for name in top_level_objects_for_variations: - match = pattern_all.fullmatch(name) - # We must not find multiple time units for the same base name and group. - bngs = get_base_name_and_grouping_suffix(match) - if match.group("time_unit"): - if bngs not in bngs_to_variations: - bngs_to_variations[bngs] = [name] - else: - bngs_to_variations[bngs].append(name) - for time_unit in time_units: - all_top_level_names.add(f"{bngs[0]}_{time_unit}{bngs[1]}") - fail_if_multiple_time_units_for_same_base_name_and_group(bngs_to_variations) - - gp = group_pattern(grouping_levels) - potential_base_names = {n for n in all_top_level_names if not gp.match(n)} - - for name in potential_base_names: - for g in grouping_levels: - all_top_level_names.add(f"{name}_{g}") - - # Add config variables that are not part of the policy environment. - return all_top_level_names.union( - { - "xnp", - "dnp", - "num_segments", - "backend", - "evaluation_year", - "evaluation_month", - "evaluation_day", - } - ) - - -@interface_function() -def processed_data_columns(processed_data: QNameData) -> UnorderedQNames: - """The (qualified) column names in the processed data.""" - return set(processed_data.keys()) - - -@interface_function() -def input_columns( - processed_data_columns: UnorderedQNames, - policy_environment: PolicyEnvironment, -) -> UnorderedQNames: - """The (qualified) column names in the processed data or policy environment. - - Parameters - ---------- - processed_data_columns: - The column names in the processed data. - policy_environment: - The policy environment. The qualified names of the PolicyInput elements will - be returned if the processed_data_columns are empty. - - Returns - ------- - input_columns: - The (qualified) column names in the processed data or policy environment. - """ - if not processed_data_columns: - return { - k - for k, v in dt.flatten_to_qnames(policy_environment).items() - if isinstance(v, PolicyInput) - } - return processed_data_columns - - -@interface_function() -def root_nodes( - specialized_environment__tax_transfer_dag: nx.DiGraph, - processed_data_columns: UnorderedQNames, -) -> UnorderedQNames: - """Names of the columns in `processed_data` required for the tax transfer function. - - Parameters - ---------- - specialized_environment__tax_transfer_dag: - The tax transfer DAG. - processed_data: - The processed data. - - Returns - ------- - The names of the columns in `processed_data` required for the tax transfer function. - - """ - # Obtain root nodes - root_nodes = nx.subgraph_view( - specialized_environment__tax_transfer_dag, - filter_node=lambda n: specialized_environment__tax_transfer_dag.in_degree(n) - == 0, - ).nodes - - # Restrict the passed data to the subset that is actually used. - return {k for k in processed_data_columns if k in root_nodes} - - -def fail_if_multiple_time_units_for_same_base_name_and_group( - base_names_and_groups_to_variations: dict[tuple[str, str], list[str]], -) -> None: - invalid = { - b: q for b, q in base_names_and_groups_to_variations.items() if len(q) > 1 - } - if invalid: - raise ValueError(f"Multiple time units for base names: {invalid}") - - -@interface_function() -def column_targets( - specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, # noqa: E501 - tt_targets__qname: OrderedQNames, -) -> OrderedQNames: - """All targets that are column functions.""" - return [ - t - for t in tt_targets__qname - if t in specialized_environment__with_partialled_params_and_scalars - ] - - -@interface_function() -def param_targets( - specialized_environment__without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, # noqa: E501 - tt_targets__qname: OrderedQNames, - column_targets: OrderedQNames, -) -> OrderedQNames: - possible_targets = set(tt_targets__qname) - set(column_targets) - return [ - t - for t in tt_targets__qname - if t in possible_targets - and t in specialized_environment__without_tree_logic_and_with_derived_functions - ] - - -@interface_function() -def input_data_targets( - tt_targets__qname: OrderedQNames, - column_targets: OrderedQNames, - param_targets: OrderedQNames, -) -> OrderedQNames: - possible_targets = set(tt_targets__qname) - set(column_targets) - set(param_targets) - return [t for t in tt_targets__qname if t in possible_targets] diff --git a/src/ttsim/interface_dag_elements/num_segments.py b/src/ttsim/interface_dag_elements/num_segments.py deleted file mode 100644 index f96f0dadee..0000000000 --- a/src/ttsim/interface_dag_elements/num_segments.py +++ /dev/null @@ -1,21 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from ttsim.interface_dag_elements.interface_node_objects import interface_function - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import QNameData - - -@interface_function(in_top_level_namespace=True) -def num_segments(processed_data: QNameData) -> int: - """The number of segments for segment sums in jax. - - After processing the data, we know that the number of ids is at most the length of - the data. - """ - if processed_data: - return len(next(iter(processed_data.values()))) - # Leave at a recognisable value; just used in jittability tests. - return 11111 diff --git a/src/ttsim/interface_dag_elements/orig_policy_objects.py b/src/ttsim/interface_dag_elements/orig_policy_objects.py deleted file mode 100644 index 9e225e7614..0000000000 --- a/src/ttsim/interface_dag_elements/orig_policy_objects.py +++ /dev/null @@ -1,165 +0,0 @@ -from __future__ import annotations - -import importlib.util -import inspect -import sys -from typing import TYPE_CHECKING, Literal - -import yaml - -from ttsim.interface_dag_elements.interface_node_objects import ( - interface_function, - interface_input, -) -from ttsim.tt_dag_elements.column_objects_param_function import ( - ColumnObject, - ParamFunction, -) - -if TYPE_CHECKING: - from pathlib import Path - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - OrigParamSpec, - ) - - -@interface_input() -def root() -> Path: - """The root directory of the policy environment's elements.""" - - -@interface_function() -def column_objects_and_param_functions( - root: Path, -) -> FlatColumnObjectsParamFunctions: - """ - Load the original ColumnObjectParamFunctions dictionary from the resource directory. - - "Original" means: - - Module names are not removed from the path. - - The last path element is the ColumnObject's original name, not the leaf name. - - Parameters - ---------- - root: - The resource directory to load the ColumnObjectParamFunctions dictionary from. - """ - return { - k: v - for path in _find_files_recursively(root=root, suffix=".py") - for k, v in _tree_path_to_orig_column_objects_params_functions( - path=path, - root=root, - ).items() - } - - -@interface_function() -def param_specs(root: Path) -> FlatOrigParamSpecs: - """ - Load the original contents of yaml files found in *root*. - - "Original" means: - - Module names are not removed from the path. - - The outermost key in each yaml file becomes the leaf name of the tree path. - Beyond that, the contents of the yaml files are not parsed. - - Parameters - ---------- - root: - The resource directory to load the parameter specifications from. - """ - return { - k: v - for path in _find_files_recursively(root=root, suffix=".yaml") - for k, v in _tree_path_to_orig_yaml_object(path=path, root=root).items() - } - - -def _find_files_recursively(root: Path, suffix: Literal[".py", ".yaml"]) -> list[Path]: - """ - Find all files with *suffix* in *root* and its subdirectories. - - Parameters - ---------- - root: - The path from which to start the search for Python files. - suffix: - The suffix of files to look for. - - Returns - ------- - Absolute paths to all discovered files with *suffix*. - """ - names_to_exclude = {"__init__.py"} - return [ - file for file in root.rglob(f"*{suffix}") if file.name not in names_to_exclude - ] - - -def _tree_path_to_orig_column_objects_params_functions( - path: Path, - root: Path, -) -> FlatColumnObjectsParamFunctions: - """Extract all active PolicyFunctions and GroupByFunctions from a module. - - Parameters - ---------- - path - The path to the module from which to extract the active functions. - root - The path to the directory that contains the functions. - - Returns - ------- - A flat tree of ColumnObjectParamFunctions. - """ - module = load_module(path=path, root=root) - tree_path = path.relative_to(root).parts - return { - (*tree_path, name): obj - for name, obj in inspect.getmembers(module) - if isinstance(obj, ColumnObject | ParamFunction) - } - - -def load_module(path: Path, root: Path) -> ModuleType: - name = path.relative_to(root).with_suffix("").as_posix().replace("/", ".") - spec = importlib.util.spec_from_file_location(name=name, location=path) - # Assert that spec is not None and spec.loader is not None, required for mypy - _msg = f"Could not load module spec for {path}, {root}" - if spec is None: - raise ImportError(_msg) - if spec.loader is None: - raise ImportError(_msg) - module = importlib.util.module_from_spec(spec) - sys.modules[name] = module - spec.loader.exec_module(module) - - return module - - -def _tree_path_to_orig_yaml_object(path: Path, root: Path) -> FlatOrigParamSpecs: - """Extract all active PolicyFunctions and GroupByFunctions from a module. - - Parameters - ---------- - path - The path to the yaml file from which to extract parameter specifications. - root - The path to the policy environment's root directory. - - Returns - ------- - A flat tree of yaml contents. - """ - raw_contents: dict[str, OrigParamSpec] = yaml.load( - path.read_text(encoding="utf-8"), - Loader=yaml.CSafeLoader, - ) - tree_path = path.relative_to(root).parts - return {(*tree_path, name): obj for name, obj in raw_contents.items()} diff --git a/src/ttsim/interface_dag_elements/policy_environment.py b/src/ttsim/interface_dag_elements/policy_environment.py deleted file mode 100644 index 114faa77a6..0000000000 --- a/src/ttsim/interface_dag_elements/policy_environment.py +++ /dev/null @@ -1,293 +0,0 @@ -from __future__ import annotations - -import copy -import datetime -from typing import TYPE_CHECKING, Any - -import dags.tree as dt -import numpy - -from ttsim.interface_dag_elements.interface_node_objects import interface_function -from ttsim.interface_dag_elements.shared import ( - merge_trees, - upsert_tree, -) -from ttsim.tt_dag_elements import ( - ConsecutiveIntLookupTableParam, - DictParam, - ParamObject, - PiecewisePolynomialParam, - PolicyInput, - RawParam, - ScalarParam, - get_consecutive_int_lookup_table_param_value, - get_month_based_phase_inout_of_age_thresholds_param_value, - get_year_based_phase_inout_of_age_thresholds_param_value, -) -from ttsim.tt_dag_elements.column_objects_param_function import ( - DEFAULT_END_DATE, -) -from ttsim.tt_dag_elements.piecewise_polynomial import get_piecewise_parameters - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - NestedColumnObjectsParamFunctions, - NestedParamObjects, - OrigParamSpec, - PolicyEnvironment, - ) - - -@interface_function(in_top_level_namespace=True) -def policy_environment( - orig_policy_objects__column_objects_and_param_functions: FlatColumnObjectsParamFunctions, # noqa: E501 - orig_policy_objects__param_specs: FlatOrigParamSpecs, - policy_date: datetime.date, - xnp: ModuleType, -) -> PolicyEnvironment: - """ - Set up the policy environment for a particular date. - - Parameters - ---------- - root - The directory to load the policy environment from. - date - The date for which the policy system is set up. An integer is - interpreted as the year. - xnp - The numpy-like module to use for computations. - - Returns - ------- - The policy environment for the specified date. - """ - return { - "policy_year": ScalarParam( - value=policy_date.year, - start_date=policy_date, - end_date=policy_date, - ), - "policy_month": ScalarParam( - value=policy_date.month, start_date=policy_date, end_date=policy_date - ), - "policy_day": ScalarParam( - value=policy_date.day, start_date=policy_date, end_date=policy_date - ), - "evaluation_year": PolicyInput( - leaf_name="evaluation_year", - data_type=int, - start_date=policy_date, - end_date=policy_date, - description="The evaluation year, will typically be set via `main`.", - ), - "evaluation_month": PolicyInput( - leaf_name="evaluation_month", - data_type=int, - start_date=policy_date, - end_date=policy_date, - description="The evaluation month, will typically be set via `main`.", - ), - "evaluation_day": PolicyInput( - leaf_name="evaluation_day", - data_type=int, - start_date=policy_date, - end_date=policy_date, - description="The evaluation day, will typically be set via `main`.", - ), - **merge_trees( - left=_active_column_objects_and_param_functions( - orig=orig_policy_objects__column_objects_and_param_functions, - policy_date=policy_date, - ), - right=_active_param_objects( - orig=orig_policy_objects__param_specs, - policy_date=policy_date, - xnp=xnp, - ), - ), - } - - -def _active_column_objects_and_param_functions( - orig: FlatColumnObjectsParamFunctions, - policy_date: datetime.date, -) -> NestedColumnObjectsParamFunctions: - """ - Traverse `root` and return all ColumnObjectParamFunctions for a given date. - - Parameters - ---------- - root: - The directory to traverse. - policy_date: - The date for which policy objects should be loaded. - - Returns - ------- - A tree of active ColumnObjectParamFunctions. - """ - flat_objects_tree = { - (*orig_path[:-2], obj.leaf_name): obj - for orig_path, obj in orig.items() - if obj.is_active(policy_date) - } - - return dt.unflatten_from_tree_paths(flat_objects_tree) - - -def _active_param_objects( - orig: FlatOrigParamSpecs, - policy_date: datetime.date, - xnp: ModuleType, -) -> NestedParamObjects: - """Parse the original yaml tree.""" - flat_tree_with_params = {} - for orig_path, orig_params_spec in orig.items(): - path_to_keep = orig_path[:-2] - leaf_name = orig_path[-1] - param = _get_one_param( - leaf_name=leaf_name, - spec=orig_params_spec, - policy_date=policy_date, - xnp=xnp, - ) - if param is not None: - flat_tree_with_params[(*path_to_keep, leaf_name)] = param - if orig_params_spec.get("add_jahresanfang", False): - date_jan1 = policy_date.replace(month=1, day=1) - leaf_name_jan1 = f"{leaf_name}_jahresanfang" - param = _get_one_param( - leaf_name=leaf_name_jan1, - spec=orig_params_spec, - policy_date=date_jan1, - xnp=xnp, - ) - if param is not None: - flat_tree_with_params[(*path_to_keep, leaf_name_jan1)] = param - return dt.unflatten_from_tree_paths(flat_tree_with_params) - - -def _get_one_param( # noqa: PLR0911 - leaf_name: str, - spec: OrigParamSpec, - policy_date: datetime.date, - xnp: ModuleType, -) -> ParamObject: - """Parse the original specification found in the yaml tree to a ParamObject.""" - cleaned_spec = _clean_one_param_spec( - leaf_name=leaf_name, spec=spec, policy_date=policy_date - ) - - if cleaned_spec is None: - return None - if spec["type"] == "scalar": - return ScalarParam(**cleaned_spec) - if spec["type"] == "dict": - return DictParam(**cleaned_spec) - if spec["type"].startswith("piecewise_"): - cleaned_spec["value"] = get_piecewise_parameters( - leaf_name=leaf_name, - func_type=spec["type"], - parameter_dict=cleaned_spec["value"], - xnp=xnp, - ) - return PiecewisePolynomialParam(**cleaned_spec) - if spec["type"] == "consecutive_int_lookup_table": - cleaned_spec["value"] = get_consecutive_int_lookup_table_param_value( - raw=cleaned_spec["value"], - xnp=xnp, - ) - return ConsecutiveIntLookupTableParam(**cleaned_spec) - if spec["type"] == "month_based_phase_inout_of_age_thresholds": - cleaned_spec["value"] = ( - get_month_based_phase_inout_of_age_thresholds_param_value( - raw=cleaned_spec["value"], - xnp=xnp, - ) - ) - return ConsecutiveIntLookupTableParam(**cleaned_spec) - if spec["type"] == "year_based_phase_inout_of_age_thresholds": - cleaned_spec["value"] = ( - get_year_based_phase_inout_of_age_thresholds_param_value( - raw=cleaned_spec["value"], - xnp=xnp, - ) - ) - return ConsecutiveIntLookupTableParam(**cleaned_spec) - if spec["type"] == "require_converter": - return RawParam(**cleaned_spec) - raise ValueError(f"Unknown parameter type: {spec['type']} for {leaf_name}") - - -def _clean_one_param_spec( - leaf_name: str, - spec: OrigParamSpec, - policy_date: datetime.date, -) -> dict[str, Any] | None: - """Prepare the specification of one parameter for creating a ParamObject.""" - policy_dates = numpy.sort([key for key in spec if isinstance(key, datetime.date)]) - idx = numpy.searchsorted(policy_dates, policy_date, side="right") # type: ignore[call-overload] - if idx == 0: - return None - - out: dict[str, Any] = {} - out["leaf_name"] = leaf_name - out["start_date"] = policy_dates[idx - 1] - out["end_date"] = ( - policy_dates[idx] - datetime.timedelta(days=1) - if len(policy_dates) > idx - else DEFAULT_END_DATE - ) - out["unit"] = spec.get("unit", None) - out["reference_period"] = spec.get("reference_period", None) - out["name"] = spec["name"] - out["description"] = spec["description"] - current_spec = copy.deepcopy(spec[policy_dates[idx - 1]]) - out["note"] = current_spec.pop("note", None) - out["reference"] = current_spec.pop("reference", None) - if len(current_spec) == 0: - return None - if len(current_spec) == 1 and "updates_previous" in current_spec: - raise ValueError( - f"'updates_previous' cannot be specified as the only element, found{spec}", - ) - # Parameter ceased to exist - if spec["type"] == "scalar": - if "updates_previous" in current_spec: - raise ValueError( - "'updates_previous' cannot be specified for scalar parameters" - ) - out["value"] = current_spec["value"] - else: - out["value"] = _get_param_value([spec[d] for d in policy_dates[:idx]]) - return out - - -def _get_param_value( - relevant_specs: list[dict[str | int, Any]], -) -> dict[str | int, Any]: - """Get the value of a parameter. - - Implementation is a recursion in order to handle the 'updates_previous' machinery. - - """ - current_spec = relevant_specs[-1].copy() - updates_previous = current_spec.pop("updates_previous", False) - current_spec.pop("note", None) - current_spec.pop("reference", None) - if updates_previous: - if len(relevant_specs) <= 1: - raise ValueError( - "'updates_previous' cannot be missing in the initial spec, found " - f"{relevant_specs}" - ) - return upsert_tree( - base=_get_param_value(relevant_specs=relevant_specs[:-1]), - to_upsert=current_spec, - ) - return current_spec diff --git a/src/ttsim/interface_dag_elements/processed_data.py b/src/ttsim/interface_dag_elements/processed_data.py deleted file mode 100644 index 9ec2060639..0000000000 --- a/src/ttsim/interface_dag_elements/processed_data.py +++ /dev/null @@ -1,63 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.interface_node_objects import interface_function -from ttsim.tt_dag_elements.column_objects_param_function import reorder_ids - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import FlatData, QNameData - - -@interface_function(in_top_level_namespace=True) -def processed_data(input_data__flat: FlatData, xnp: ModuleType) -> QNameData: - """Process the data for use in the taxes and transfers function. - - Replace id's by consecutive integers starting at zero. - The Jax-based backend will work correctly only with these transformed indices. - They will be transformed back when converting raw results to results. - - Args: - input_data__tree: - The input data provided by the user. - - Returns - ------- - A DataFrame. - """ - - orig_p_ids = xnp.asarray(input_data__flat[("p_id",)]) - internal_p_ids = reorder_ids(ids=orig_p_ids, xnp=xnp) - sort_indices = xnp.argsort(orig_p_ids) - sorted_orig_ids = orig_p_ids[sort_indices] - sorted_internal_ids = internal_p_ids[sort_indices] - - processed_input_data = {"p_id": internal_p_ids} - for path, data in input_data__flat.items(): - qname = dt.qname_from_tree_path(path) - if path == ("p_id",): - continue - if path[-1].endswith("_id"): - processed_input_data[qname] = reorder_ids(ids=xnp.asarray(data), xnp=xnp) - elif path[-1].startswith("p_id_"): - data_array = xnp.asarray(data) - # Second line makes sure out-of-bounds ids don't raise an error. Any garbage - # that is actually used will be checked inside - # fail_if.foreign_keys_are_invalid_in_data, so don't worry here. - insert_positions = xnp.minimum( - xnp.searchsorted(sorted_orig_ids, data_array), - len(sorted_orig_ids) - 1, - ) - variable_with_new_ids = xnp.where( - sorted_orig_ids[insert_positions] == data_array, - sorted_internal_ids[insert_positions], - data_array, - ) - processed_input_data[qname] = variable_with_new_ids - else: - processed_input_data[qname] = xnp.asarray(data) - return processed_input_data diff --git a/src/ttsim/interface_dag_elements/raw_results.py b/src/ttsim/interface_dag_elements/raw_results.py deleted file mode 100644 index a841b84ab6..0000000000 --- a/src/ttsim/interface_dag_elements/raw_results.py +++ /dev/null @@ -1,58 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from ttsim.interface_dag_elements.interface_node_objects import interface_function - -if TYPE_CHECKING: - from collections.abc import Callable - - from ttsim.interface_dag_elements.typing import ( - OrderedQNames, - QNameData, - SpecEnvWithProcessedParamsAndScalars, - UnorderedQNames, - ) - - -@interface_function() -def columns( - labels__root_nodes: UnorderedQNames, - processed_data: QNameData, - specialized_environment__tax_transfer_function: Callable[[QNameData], QNameData], -) -> QNameData: - return specialized_environment__tax_transfer_function( - {k: v for k, v in processed_data.items() if k in labels__root_nodes}, - ) - - -@interface_function() -def params( - labels__param_targets: OrderedQNames, - specialized_environment__with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars, # noqa: E501 -) -> QNameData: - return { - pt: specialized_environment__with_processed_params_and_scalars[pt] - for pt in labels__param_targets - } - - -@interface_function() -def from_input_data( - labels__input_data_targets: OrderedQNames, - processed_data: QNameData, -) -> QNameData: - return {ot: processed_data[ot] for ot in labels__input_data_targets} - - -@interface_function() -def combined( - columns: QNameData, - params: QNameData, - from_input_data: QNameData, -) -> QNameData: - return { - **columns, - **params, - **from_input_data, - } diff --git a/src/ttsim/interface_dag_elements/results.py b/src/ttsim/interface_dag_elements/results.py deleted file mode 100644 index b4ebb7ee01..0000000000 --- a/src/ttsim/interface_dag_elements/results.py +++ /dev/null @@ -1,92 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.data_converters import ( - nested_data_to_df_with_mapped_columns, - nested_data_to_df_with_nested_columns, -) -from ttsim.interface_dag_elements.interface_node_objects import interface_function - -if TYPE_CHECKING: - import pandas as pd - - from ttsim.interface_dag_elements.typing import ( - FlatData, - NestedData, - NestedStrings, - QNameData, - ) - - -@interface_function() -def tree(raw_results__combined: QNameData, input_data__flat: FlatData) -> NestedData: - """The combined results as a tree. - - The transformed id's are converted back to their original values. - - """ - out = {} - for k in raw_results__combined: - path = dt.tree_path_from_qname(k) - if path in input_data__flat and ( - path[-1].endswith("_id") or path[-1].startswith("p_id_") - ): - out[k] = input_data__flat[path] - else: - out[k] = raw_results__combined[k] - return dt.unflatten_from_qnames(out) - - -@interface_function() -def df_with_mapper( - tree: NestedData, - input_data__flat: FlatData, - tt_targets__tree: NestedStrings, -) -> pd.DataFrame: - """The results DataFrame with mapped column names. - - Args: - tree: - The results of a TTSIM run. - input_data__tree: - The data tree of the TTSIM run. - nested_outputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - - Returns - ------- - A DataFrame. - """ - return nested_data_to_df_with_mapped_columns( - nested_data_to_convert=tree, - nested_outputs_df_column_names=tt_targets__tree, - data_with_p_id=input_data__flat, - ) - - -@interface_function() -def df_with_nested_columns( - tree: NestedData, - input_data__flat: FlatData, -) -> pd.DataFrame: - """The results DataFrame with nested column names corresponding to tree paths.. - - Args: - tree: - The results of a TTSIM run. - input_data__tree: - The data tree of the TTSIM run. - nested_outputs_df_column_names: - A tree that maps paths (sequence of keys) to data columns names. - - Returns - ------- - A DataFrame with a hierarchical index in the column dimension. - """ - return nested_data_to_df_with_nested_columns( - nested_data_to_convert=tree, - data_with_p_id=input_data__flat, - ) diff --git a/src/ttsim/interface_dag_elements/shared.py b/src/ttsim/interface_dag_elements/shared.py deleted file mode 100644 index 1f319ae136..0000000000 --- a/src/ttsim/interface_dag_elements/shared.py +++ /dev/null @@ -1,332 +0,0 @@ -from __future__ import annotations - -import datetime -import re -from typing import TYPE_CHECKING, Any - -import dags.tree as dt -import optree - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - DashedISOString, - NestedColumnObjectsParamFunctions, - NestedData, - OrderedQNames, - ) - - -_DASHED_ISO_DATE_REGEX = re.compile(r"\d{4}-\d{2}-\d{2}") - - -def to_datetime(date: datetime.date | DashedISOString) -> datetime.date: - if isinstance(date, datetime.date): - return date - if isinstance(date, str) and _DASHED_ISO_DATE_REGEX.fullmatch(date): - return datetime.date.fromisoformat(date) - raise ValueError( - f"Date {date} neither matches the format YYYY-MM-DD nor is a datetime.date.", - ) - - -def get_re_pattern_for_all_time_units_and_groupings( - time_units: OrderedQNames, - grouping_levels: OrderedQNames, -) -> re.Pattern[str]: - """Get a regex pattern for time units and grouping_levels. - - The pattern matches strings in any of these formats: - - (may contain underscores) - - _ - - _ - - __ - - Parameters - ---------- - time_units - The supported time units. - grouping_levels - The supported grouping levels. - - Returns - ------- - pattern - The regex pattern. - """ - re_units = "".join(time_units) - re_groupings = "|".join(grouping_levels) - return re.compile( - f"(?P.*?)" - f"(?:_(?P[{re_units}]))?" - f"(?:_(?P{re_groupings}))?" - f"$", - ) - - -def group_pattern(grouping_levels: OrderedQNames) -> re.Pattern[str]: - return re.compile( - f"(?P.*)_(?P{'|'.join(grouping_levels)})$", - ) - - -def get_re_pattern_for_specific_time_units_and_groupings( - base_name: str, - all_time_units: OrderedQNames, - grouping_levels: OrderedQNames, -) -> re.Pattern[str]: - """Get a regex for a specific base name with optional time unit and aggregation. - - The pattern matches strings in any of these formats: - - - - _ - - _ - - __ - - Parameters - ---------- - base_name - The specific base name to match. - time_units - The supported time units. - grouping_levels - The supported grouping levels. - - Returns - ------- - pattern - The regex pattern. - """ - re_units = "".join(all_time_units) - re_groupings = "|".join(grouping_levels) - return re.compile( - f"(?P{re.escape(base_name)})" - f"(?:_(?P[{re_units}]))?" - f"(?:_(?P{re_groupings}))?" - f"$", - ) - - -def get_base_name_and_grouping_suffix(match: re.Match[str]) -> tuple[str, str]: - return ( - match.group("base_name"), - f"_{match.group('grouping')}" if match.group("grouping") else "", - ) - - -def create_tree_from_path_and_value( - path: tuple[str], - value: Any = None, # noqa: ANN401 -) -> dict[str, Any]: - """Create a nested dict with 'path' as keys and 'value' as leaf. - - Almost the same as `dt.unflatten_from_tree_paths({path: value})`, except that - it can also deal with an empty tuple as the path and a dictionary as the value. - - Example: - Input: - path = ("a", "b", "c") - value = None - Result: - {"a": {"b": {"c": None}}} - - Parameters - ---------- - path - The path to create the tree structure from. - value (Optional) - The value to insert into the tree structure. - - Returns - ------- - The tree structure. - """ - nested_dict = value - for entry in reversed(path): - nested_dict = {entry: nested_dict} - return nested_dict - - -def merge_trees(left: dict[str, Any], right: dict[str, Any]) -> dict[str, Any]: - """ - Merge two pytrees, raising an error if a path is present in both trees. - - Parameters - ---------- - left - The first tree to be merged. - right - The second tree to be merged. - - Returns - ------- - The merged pytree. - """ - if set(optree.tree_paths(left)) & set(optree.tree_paths(right)): # type: ignore[arg-type] - raise ValueError("Conflicting paths in trees to merge.") - - return upsert_tree(base=left, to_upsert=right) - - -def upsert_tree(base: dict[str, Any], to_upsert: dict[str, Any]) -> dict[str, Any]: - """ - Upsert a tree into another tree for trees defined by dictionaries only. - - Note: In case of conflicting trees, the to_upsert takes precedence. - - Example: - Input: - base = {"a": {"b": {"c": None}}} - to_upsert = {"a": {"b": {"d": None}}} - Output: - {"a": {"b": {"c": None, "d": None}}} - - Parameters - ---------- - base - The base dictionary. - to_upsert - The dictionary to update the base dictionary. - - Returns - ------- - The merged dictionary. - """ - result = base.copy() - - for key, value in to_upsert.items(): - base_value = result.get(key) - if key in result and isinstance(base_value, dict) and isinstance(value, dict): - result[key] = upsert_tree(base=base_value, to_upsert=value) - else: - result[key] = value - - return result - - -def upsert_path_and_value( - base: dict[str, Any], - path_to_upsert: tuple[str], - value_to_upsert: Any = None, # noqa: ANN401 -) -> dict[str, Any]: - """Update tree with a path and value. - - The path is a list of strings that represent the keys in the nested dictionary. If - the path does not exist, it will be created. If the path already exists, the value - will be updated. - """ - to_upsert = create_tree_from_path_and_value( - path=path_to_upsert, - value=value_to_upsert, - ) - return upsert_tree(base=base, to_upsert=to_upsert) - - -def insert_path_and_value( - base: dict[str, Any], - path_to_insert: tuple[str], - value_to_insert: Any = None, # noqa: ANN401 -) -> dict[str, Any]: - """Insert a path and value into a tree. - - The path is a list of strings that represent the keys in the nested dictionary. The - path must not exist in base. - """ - to_insert = create_tree_from_path_and_value( - path=path_to_insert, - value=value_to_insert, - ) - return merge_trees(left=base, right=to_insert) - - -def partition_tree_by_reference_tree( - tree_to_partition: NestedColumnObjectsParamFunctions | NestedData, - reference_tree: NestedColumnObjectsParamFunctions | NestedData, -) -> tuple[ - NestedColumnObjectsParamFunctions | NestedData, - NestedColumnObjectsParamFunctions | NestedData, -]: - """ - Partition a tree into two based on the presence of its paths in a reference tree. - - Parameters - ---------- - tree_to_partition - The tree to be partitioned. - reference_tree - The reference tree used to determine the partitioning. - - Returns - ------- - A tuple containing: - - The first tree with leaves present in both trees. - - The second tree with leaves absent in the reference tree. - """ - ref_paths = set(dt.tree_paths(reference_tree)) - flat = dt.flatten_to_tree_paths(tree_to_partition) - intersection = dt.unflatten_from_tree_paths( - {path: leaf for path, leaf in flat.items() if path in ref_paths}, - ) - difference = dt.unflatten_from_tree_paths( - {path: leaf for path, leaf in flat.items() if path not in ref_paths}, - ) - - return intersection, difference - - -def partition_by_reference_dict( - to_partition: dict[str, Any], - reference_dict: dict[str, Any], -) -> tuple[dict[str, Any], dict[str, Any]]: - """Partition a dictionary into two based on the presence of its keys in a reference - dictionary. - - Parameters - ---------- - to_partition - The dictionary to be partitioned. - reference_dict - The reference dictionary used to determine the partitioning. - - Returns - ------- - A tuple containing: - - The first dictionary with keys present in both dictionaries. - - The second dictionary with keys absent in the reference dictionary. - """ - intersection = {k: v for k, v in to_partition.items() if k in reference_dict} - difference = {k: v for k, v in to_partition.items() if k not in reference_dict} - return intersection, difference - - -def remove_group_suffix(col: str, grouping_levels: OrderedQNames) -> str: - out = col - for g in grouping_levels: - out = out.removesuffix(f"_{g}") - - return out - - -def get_name_of_group_by_id( - target_name: str, - grouping_levels: OrderedQNames, -) -> str | None: - """Get the group-by-identifier name for some target. - - The group-by-identifier is the name of the group identifier that is embedded in the - name of the target. E.g., "income_kin" has "kin_id" as its group-by-identifier. - - Parameters - ---------- - target_name - The name of the target. - grouping_levels - The supported grouping levels. - - Returns - ------- - The group-by-identifier, or an empty tuple if it is an individual-level variable. - """ - for g in grouping_levels: - if target_name.endswith(f"_{g}"): - return f"{g}_id" - return None diff --git a/src/ttsim/interface_dag_elements/specialized_environment.py b/src/ttsim/interface_dag_elements/specialized_environment.py deleted file mode 100644 index 777f1c226a..0000000000 --- a/src/ttsim/interface_dag_elements/specialized_environment.py +++ /dev/null @@ -1,380 +0,0 @@ -from __future__ import annotations - -import functools -from typing import TYPE_CHECKING, Literal - -import dags.tree as dt -from dags import concatenate_functions, create_dag, get_free_arguments - -from ttsim.interface_dag_elements.automatically_added_functions import ( - create_agg_by_group_functions, - create_time_conversion_functions, -) -from ttsim.interface_dag_elements.interface_node_objects import ( - interface_function, - interface_input, -) -from ttsim.interface_dag_elements.shared import merge_trees -from ttsim.tt_dag_elements.column_objects_param_function import ( - ColumnFunction, - ColumnObject, - ParamFunction, - PolicyInput, -) -from ttsim.tt_dag_elements.param_objects import ParamObject, RawParam - -if TYPE_CHECKING: - import datetime - from collections.abc import Callable - from types import ModuleType - - import networkx as nx - - from ttsim.interface_dag_elements.typing import ( - OrderedQNames, - PolicyEnvironment, - QNameData, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithPartialledParamsAndScalars, - SpecEnvWithProcessedParamsAndScalars, - UnorderedQNames, - ) - - -@interface_input(in_top_level_namespace=True) -def rounding() -> bool: - """Whether to apply rounding to policy functions.""" - - -@interface_function() -def without_tree_logic_and_with_derived_functions( - policy_environment: PolicyEnvironment, - tt_targets__qname: OrderedQNames, - labels__input_columns: UnorderedQNames, - labels__top_level_namespace: UnorderedQNames, - labels__grouping_levels: OrderedQNames, -) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: - """Return a flat policy environment with derived functions. - - Two steps: - 1. Remove all tree logic from the policy environment. - 2. Add derived functions to the policy environment. - - """ - qname_env_without_tree_logic = _remove_tree_logic_from_policy_environment( - qname_env=dt.flatten_to_qnames(policy_environment), - labels__top_level_namespace=labels__top_level_namespace, - ) - return _add_derived_functions( - qname_env_without_tree_logic=qname_env_without_tree_logic, - tt_targets=tt_targets__qname, - input_columns=labels__input_columns, - grouping_levels=labels__grouping_levels, - ) - - -def _remove_tree_logic_from_policy_environment( - qname_env: dict[str, ColumnObject | ParamFunction | ParamObject], - labels__top_level_namespace: UnorderedQNames, -) -> dict[str, ColumnObject | ParamFunction | ParamObject]: - """Map qualified names to column objects / param functions without tree logic.""" - out = {} - for name, obj in qname_env.items(): - if hasattr(obj, "remove_tree_logic"): - out[name] = obj.remove_tree_logic( - tree_path=dt.tree_path_from_qname(name), - top_level_namespace=labels__top_level_namespace, - ) - else: - out[name] = obj - return out - - -def _add_derived_functions( - qname_env_without_tree_logic: dict[str, ColumnObject | ParamFunction | ParamObject], - tt_targets: OrderedQNames, - input_columns: UnorderedQNames, - grouping_levels: OrderedQNames, -) -> SpecEnvWithoutTreeLogicAndWithDerivedFunctions: - """Return a mapping of qualified names to functions operating on columns. - - Anything that is not a ColumnFunction is filtered out (e.g., ParamFunctions, - PolicyInputs). - - Derived functions are time converted functions and aggregation functions (aggregate - by p_id or by group). - - Check that all targets have a corresponding function in the functions tree or can - be taken from the data. - - Parameters - ---------- - column_objects_param_functions - Dict with qualified function names as keys and functions with qualified - arguments as values. - tt_targets - The list of targets with qualified names. - data - Dict with qualified data names as keys and arrays as values. - labels__top_level_namespace - Set of top-level namespaces. - - Returns - ------- - The specialized environment with derived functions (aggregations and time - conversions), and without tree logic, i.e. absolute qualified names in all keys - and function arguments. - - """ - # Create functions for different time units - time_conversion_functions = create_time_conversion_functions( - qname_policy_environment=qname_env_without_tree_logic, - input_columns=input_columns, - grouping_levels=grouping_levels, - ) - column_functions = { - k: v - for k, v in { - **qname_env_without_tree_logic, - **time_conversion_functions, - }.items() - if isinstance(v, ColumnFunction) - } - - # Create aggregation functions by group. - aggregate_by_group_functions = create_agg_by_group_functions( - column_functions=column_functions, - input_columns=input_columns, - tt_targets=tt_targets, - grouping_levels=grouping_levels, - ) - return { - **qname_env_without_tree_logic, - **time_conversion_functions, - **aggregate_by_group_functions, - } - - -@interface_function() -def with_processed_params_and_scalars( - without_tree_logic_and_with_derived_functions: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - processed_data: QNameData, - backend: Literal["numpy", "jax"], - xnp: ModuleType, - dnp: ModuleType, - evaluation_date: datetime.date | None, -) -> SpecEnvWithProcessedParamsAndScalars: - """Process the parameters and param functions, remove RawParams from the tree. - - Parameters - ---------- - without_tree_logic_and_with_derived_functions - The specialized environment without tree logic, i.e. absolute qualified names in - all keys and function arguments and with derived functions (aggregations and - time conversions). - processed_data - The processed data. - backend - The backend to use for computations. - xnp - The numpy-like module to use for computations. - dnp - The numpy-like module to use for datetime objects. - evaluation_date - The date for which the policy system is set up. An integer is interpreted as the - year. - - Returns - ------- - The specialized environment with processed parameters and scalars. Input nodes that - come in via the processed data are removed from the environment. Evaluation year / - month / day are added if not present. - """ - - all_nodes = {} - for n, f in without_tree_logic_and_with_derived_functions.items(): - if n in processed_data: - # Put scalars into the policy environment. - if isinstance(processed_data[n], int | float | bool): - all_nodes[n] = processed_data[n] - # Else, remove the node. Will be an input of the taxes-transfers function. - else: - # Leave nodes not in the data what they are. - all_nodes[n] = f - - must_set_evaluation_date = ( - # Never need to do anything if the evaluation date is set in the data. - "evaluation_year" not in processed_data - and ( - # PolicyInput as a placeholder - isinstance(all_nodes.get("evaluation_year"), PolicyInput) - # No evaluation_year in the environment (can happen in tests). - or "evaluation_year" not in all_nodes - ) - ) - if must_set_evaluation_date: - if evaluation_date is None: - all_nodes["evaluation_year"] = all_nodes["policy_year"] - all_nodes["evaluation_month"] = all_nodes["policy_month"] - all_nodes["evaluation_day"] = all_nodes["policy_day"] - else: - all_nodes["evaluation_year"] = evaluation_date.year - all_nodes["evaluation_month"] = evaluation_date.month - all_nodes["evaluation_day"] = evaluation_date.day - - params = {k: v for k, v in all_nodes.items() if isinstance(v, ParamObject)} - scalars = {k: v for k, v in all_nodes.items() if isinstance(v, float | int | bool)} - param_functions = { - k: v for k, v in all_nodes.items() if isinstance(v, ParamFunction) - } - # Construct a function for the processing of all params. - process = concatenate_functions( - functions=param_functions, - targets=None, - return_type="dict", - aggregator=None, - enforce_signature=False, - set_annotations=False, - ) - # Call the processing function. - processed_param_functions = process( - **{k: v.value for k, v in params.items()}, - **scalars, - xnp=xnp, - dnp=dnp, - backend=backend, - ) - processed_params = merge_trees( - left={k: v.value for k, v in params.items() if not isinstance(v, RawParam)}, - right=processed_param_functions, - ) - return { - **{k: v for k, v in all_nodes.items() if not isinstance(v, RawParam)}, - **processed_params, - } - - -@interface_function() -def with_partialled_params_and_scalars( - with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars, - rounding: bool, - num_segments: int, - backend: Literal["numpy", "jax"], - xnp: ModuleType, - dnp: ModuleType, -) -> SpecEnvWithPartialledParamsAndScalars: - """Partial parameters to functions such that they disappear from the DAG. - - Parameters - ---------- - with_processed_params_and_scalars - The tree with qualified names as keys and column objects or processed - parameters / scalars as values. - rounding - Whether to apply rounding to functions. - num_segments - The number of segments for segment sums in jax. - backend - The backend to use for computations. - xnp - The numpy-like module to use for computations. - dnp - The numpy-like module to use for datetime objects. - evaluation_date - The date for which the policy system is set up. An integer is - interpreted as the year. - - Returns - ------- - Tree with column functions that depend on columns only. - - """ - column_functions = { - k: v - for k, v in with_processed_params_and_scalars.items() - if isinstance(v, ColumnFunction) - } - all_partial_params = { - **{ - k: v - for k, v in with_processed_params_and_scalars.items() - if not isinstance(v, ColumnObject) - }, - "num_segments": num_segments, - "backend": backend, - "xnp": xnp, - "dnp": dnp, - } - - processed_functions = {} - for name, col_func in column_functions.items(): - vect_col_func = ( - col_func.vectorize(backend=backend, xnp=xnp) - if hasattr(col_func, "vectorize") - else col_func - ) - rounded_col_func = ( - _apply_rounding(vect_col_func, xnp) if rounding else vect_col_func - ) - partial_params_of_this_column_function = { - arg: all_partial_params[arg] - for arg in get_free_arguments(rounded_col_func) - if arg in all_partial_params - } - if partial_params_of_this_column_function: - processed_functions[name] = functools.partial( - rounded_col_func, **partial_params_of_this_column_function - ) - else: - processed_functions[name] = rounded_col_func - - return processed_functions - - -def _apply_rounding(element: ColumnFunction, xnp: ModuleType) -> ColumnFunction: - return ( - element.rounding_spec.apply_rounding(element, xnp=xnp) - if getattr(element, "rounding_spec", False) - else element - ) - - -@interface_function() -def tax_transfer_dag( - with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, - labels__column_targets: OrderedQNames, -) -> nx.DiGraph: - """Thin wrapper around `create_dag`.""" - return create_dag( - functions=with_partialled_params_and_scalars, - targets=labels__column_targets, - ) - - -@interface_function() -def tax_transfer_function( - tax_transfer_dag: nx.DiGraph, - with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, - labels__column_targets: OrderedQNames, - backend: Literal["numpy", "jax"], -) -> Callable[[QNameData], QNameData]: - """Returns a function that takes a dictionary of arrays and unpacks them as keyword arguments.""" - ttf_with_keyword_args = concatenate_functions( - dag=tax_transfer_dag, - functions=with_partialled_params_and_scalars, - targets=list(labels__column_targets), - return_type="dict", - aggregator=None, - enforce_signature=True, - set_annotations=True, - ) - - if backend == "jax": - import jax # noqa: PLC0415 - - ttf_with_keyword_args = jax.jit(ttf_with_keyword_args) - - def wrapper(processed_data: QNameData) -> QNameData: - return ttf_with_keyword_args(**processed_data) - - return wrapper diff --git a/src/ttsim/interface_dag_elements/templates.py b/src/ttsim/interface_dag_elements/templates.py deleted file mode 100644 index 1afad23030..0000000000 --- a/src/ttsim/interface_dag_elements/templates.py +++ /dev/null @@ -1,107 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.automatically_added_functions import TIME_UNIT_LABELS -from ttsim.interface_dag_elements.interface_node_objects import interface_function -from ttsim.interface_dag_elements.shared import ( - get_re_pattern_for_all_time_units_and_groupings, -) -from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput -from ttsim.tt_dag_elements.vectorization import scalar_type_to_array_type - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - NestedInputStructureDict, - OrderedQNames, - PolicyEnvironment, - SpecEnvWithPartialledParamsAndScalars, - UnorderedQNames, - ) - - -@interface_function() -def input_data_dtypes( - specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, # noqa: E501 - policy_environment: PolicyEnvironment, - tt_targets__qname: OrderedQNames, - labels__grouping_levels: OrderedQNames, - labels__top_level_namespace: UnorderedQNames, -) -> NestedInputStructureDict: - """ - A template of the required input data and their expected types. - - Parameters - ---------- - specialized_environment__with_partialled_params_and_scalars - The specialized environment with partialled parameters and scalars. - policy_environment - The policy environment containing functions and parameters. - tt_targets__qname - Ordered qualified names of the targets. - labels__grouping_levels - Ordered qualified names of grouping levels. - labels__top_level_namespace - Unordered qualified names of the top-level namespace. - - Returns - ------- - NestedInputStructureDict - A nested dictionary mapping input paths to their data types. - """ - base_dtype_tree = dt.create_tree_with_input_types( - functions=dt.unflatten_from_qnames( - specialized_environment__with_partialled_params_and_scalars, - ), - targets=tt_targets__qname, - top_level_inputs=labels__top_level_namespace, - ) - - qname_policy_env = dt.flatten_to_qnames(policy_environment) - qname_dtype_tree = dt.flatten_to_qnames(base_dtype_tree) - policy_inputs = { - k: v for k, v in qname_policy_env.items() if isinstance(v, PolicyInput) - } - - cleaned_qname_dtype_tree: dict[str, str] = {} - - pattern_all = get_re_pattern_for_all_time_units_and_groupings( - time_units=list(TIME_UNIT_LABELS), - grouping_levels=labels__grouping_levels, - ) - - for qn, derived_dtype_in_base in qname_dtype_tree.items(): - if qn in {"evaluation_year", "evaluation_month", "evaluation_day"}: - continue - - match = pattern_all.fullmatch(qn) - base_name = match.group("base_name") - if ( - base_name not in qname_dtype_tree - and base_name not in cleaned_qname_dtype_tree - and base_name in policy_inputs - ): - # If some input data is provided, we create aggregation functions - # automatically only if the source node is part of the input data. Hence, if - # the user provides incomplete input data (i.e. some policy inputs are - # missing) and those policy inputs are sources of automatic aggregation - # functions, dt.create_tree_with_input_types will return the name of the - # aggregation function as root node. The policy input is not in the output. - # We take care of this here. - cleaned_qname_dtype_tree[base_name] = scalar_type_to_array_type( - policy_inputs[base_name].data_type - ) - - elif qn in policy_inputs: - # Replace dtypes of PolicyInputs that have the generic type 'FloatColumn | - # IntColumn | BoolColumn' with the actual dtype found in the policy - # environment. - cleaned_qname_dtype_tree[qn] = scalar_type_to_array_type( - policy_inputs[qn].data_type - ) - else: - cleaned_qname_dtype_tree[qn] = derived_dtype_in_base - - return dt.unflatten_from_qnames(cleaned_qname_dtype_tree) diff --git a/src/ttsim/interface_dag_elements/tt_targets.py b/src/ttsim/interface_dag_elements/tt_targets.py deleted file mode 100644 index 667ed883fb..0000000000 --- a/src/ttsim/interface_dag_elements/tt_targets.py +++ /dev/null @@ -1,43 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.interface_node_objects import ( - interface_function, -) -from ttsim.tt_dag_elements.column_objects_param_function import ColumnFunction - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - NestedStrings, - NestedTargetDict, - OrderedQNames, - PolicyEnvironment, - ) - - -@interface_function() -def tree(policy_environment: PolicyEnvironment) -> NestedTargetDict | NestedStrings: - """Targets as a tree. Will typically be provided by the user. - - If requesting `df_with_mapper` as a main target, the leaves must be the desired - column names. - - If not provided, the targets will be inferred from the policy environment (i.e., - use all ColumnFunctions in the policy environment). - """ - return dt.unflatten_from_tree_paths( - { - k: None - for k, v in dt.flatten_to_tree_paths(policy_environment).items() - if isinstance(v, ColumnFunction) - } - ) - - -@interface_function() -def qname(tree: NestedTargetDict | NestedStrings) -> OrderedQNames: - """Targets in their qualified name-representation.""" - return dt.flatten_to_qnames(tree) diff --git a/src/ttsim/interface_dag_elements/typing.py b/src/ttsim/interface_dag_elements/typing.py deleted file mode 100644 index 1b07fdd7e6..0000000000 --- a/src/ttsim/interface_dag_elements/typing.py +++ /dev/null @@ -1,114 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Literal, NewType, TypeAlias, TypeVar - -from jaxtyping import Array, Bool, Float, Int - -BoolColumn: TypeAlias = Bool[Array, " n_obs"] -IntColumn: TypeAlias = Int[Array, " n_obs"] -FloatColumn: TypeAlias = Float[Array, " n_obs"] - - -if TYPE_CHECKING: - # Make these available for import from other modules. - import datetime - from collections.abc import Iterable, Mapping - - OrigParamSpec = ( - # Header - dict[str, str | None | dict[Literal["de", "en"], str | None]] - | - # Parameters at one point in time - dict[ - datetime.date, - dict[Literal["note", "reference"] | str | int, Any], # noqa: PYI051 - ] - ) - DashedISOString = NewType("DashedISOString", str) - """A string representing a date in the format 'YYYY-MM-DD'.""" - - from dags.tree.typing import ( # noqa: F401 - NestedInputStructureDict, - NestedTargetDict, - ) - - from ttsim.interface_dag_elements import ( - InterfaceFunction, - InterfaceInput, - ) - - FlatInterfaceObjects = Mapping[ - tuple[str, ...], InterfaceFunction | InterfaceInput | "FlatInterfaceObjects" - ] - """Flattened tree of interface objects.""" - - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - # Possible leaves of the various trees. - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - from ttsim.tt_dag_elements import ( - ColumnFunction, - ColumnObject, - ParamFunction, - ParamObject, - PolicyInput, - ) - - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - # Tree-like data structures for input, processing, and output; including metadata. - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - NestedData = Mapping[str, FloatColumn | IntColumn | BoolColumn | "NestedData"] - """Tree mapping TTSIM paths to 1d arrays.""" - FlatData = Mapping[tuple[str, ...], FloatColumn | IntColumn | BoolColumn] - """Flattened tree mapping TTSIM paths to 1d arrays.""" - NestedInputsMapper = Mapping[str, str | bool | int | float | "NestedInputsMapper"] - """Tree mapping TTSIM paths to df columns or constants.""" - QNameData = Mapping[str, FloatColumn | IntColumn | BoolColumn] - """Mapping of qualified name paths to 1d arrays.""" - QNameStrings = Iterable[str] - """A list, tuple, or set of qualified names.""" - - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - # Collections of names etc. - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - NestedStrings = Mapping[str, str | "NestedStrings"] - """Tree mapping TTSIM paths to df columns or type hints.""" - UnorderedQNames = set[str] - """A set of qualified names.""" - OrderedQNames = TypeVar("OrderedQNames", tuple[str, ...], list[str]) - """A tuple or a list of qualified names.""" - - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - # Tree-like data structures for policy objects - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - NestedPolicyInputs = Mapping[str, PolicyInput | "NestedPolicyInputs"] - """Tree of policy inputs.""" - FlatColumnObjects = Mapping[str, ColumnObject] - """Flat mapping of paths to column objects.""" - FlatColumnObjectsParamFunctions = Mapping[ - tuple[str, ...], - ColumnObject | ParamFunction, - ] - """Flat mapping of paths to column objects or param functions.""" - NestedColumnObjectsParamFunctions = Mapping[ - str, - ColumnObject | ParamFunction | "NestedColumnObjectsParamFunctions", - ] - """Tree of column objects or param functions.""" - FlatOrigParamSpecs = dict[tuple[str, ...], OrigParamSpec] - """Flat mapping of paths to yaml contents; the leaf name is also the last element of the key.""" # noqa: E501 - NestedParamObjects = Mapping[str, ParamObject | "NestedParamObjects"] - """Tree with param objects.""" - PolicyEnvironment = Mapping[ - str, - ColumnObject | ParamFunction | ParamObject | "PolicyEnvironment", - ] - """Tree of column objects, param functions, and param objects.""" - SpecEnvWithoutTreeLogicAndWithDerivedFunctions = Mapping[ - str, - ColumnObject | ParamFunction | ParamObject | int | float | bool, - ] - """Map qualified names to column objects, param functions, param objects, or scalars from processed data.""" # noqa: E501 - SpecEnvWithProcessedParamsAndScalars = Mapping[str, ColumnObject | Any] - """Map qualified names to column objects and anything that comes out of processing the params.""" # noqa: E501 - SpecEnvWithPartialledParamsAndScalars = Mapping[str, ColumnFunction] - """Map qualified names to column functions that depend on columns only.""" diff --git a/src/ttsim/interface_dag_elements/warn_if.py b/src/ttsim/interface_dag_elements/warn_if.py deleted file mode 100644 index 1c07cfca7d..0000000000 --- a/src/ttsim/interface_dag_elements/warn_if.py +++ /dev/null @@ -1,116 +0,0 @@ -from __future__ import annotations - -import warnings -from typing import TYPE_CHECKING - -import dags.tree as dt - -from ttsim.interface_dag_elements.fail_if import ( - format_errors_and_warnings, - format_list_linewise, -) -from ttsim.interface_dag_elements.interface_node_objects import warn_function -from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput - -if TYPE_CHECKING: - import datetime - - from ttsim.interface_dag_elements.typing import ( - PolicyEnvironment, - QNameData, - UnorderedQNames, - ) - - -@warn_function() -def functions_and_data_columns_overlap( - policy_environment: PolicyEnvironment, - labels__processed_data_columns: UnorderedQNames, -) -> None: - """Warn if functions are overridden by data.""" - flat_policy_environment = dt.flatten_to_qnames(policy_environment) - overridden_elements = sorted( - { - col - for col in labels__processed_data_columns - if col in flat_policy_environment - and not isinstance(flat_policy_environment.get(col), PolicyInput) - }, - ) - if n_cols := len(overridden_elements) > 0: - if n_cols == 1: - intro = format_errors_and_warnings("Your data provides the column:") - explanation = format_errors_and_warnings( - """ - This is already present among the hard-coded functions of the taxes and - transfers system. If you want this data column to be used instead of - calculating it within TTSIM you need not do anything. If you want this - data column to be calculated by hard-coded functions, remove it from the - *data* you pass to TTSIM. You need to pick one option for each column - that appears in the list above. - - Turn off warnings by setting `include_warn_nodes=False` in `main`. - If you want to be selective about warnings, include these among the - `main_targets`. - """, - ) - else: - intro = format_errors_and_warnings("Your data provides the columns:") - explanation = format_errors_and_warnings( - """ - These are already present among the hard-coded functions of the taxes - and transfers system. If you want a data column to be used instead of - calculating it within TTSIM you do not need to do anything. If you - want data columns to be calculated by hard-coded functions, remove them - from the *data* you pass to TTSIM. You need to pick one option for - each column that appears in the list above. - - Turn off warnings by setting `include_warn_nodes=False` in `main`. - If you want to be selective about warnings, include these among the - `main_targets`. - """, - ) - msg = f"{intro}\n{format_list_linewise(overridden_elements)}\n{explanation}" - warnings.warn(UserWarning(msg), stacklevel=2) - - -@warn_function( - include_if_all_elements_present=[ - "specialized_environment__with_processed_params_and_scalars" - ] -) -def evaluation_date_set_in_multiple_places( - policy_environment: PolicyEnvironment, - processed_data: QNameData, - evaluation_date: datetime.date | None, -) -> None: - """Warn if more than one of the following hold true: - - `evaluation_date` is passed as an argument to `main` - - `evaluation_year` is present in the policy environment and it is not a PolicyInput - - `evaluation_year` is part of the data - - """ - conditions = { - "`evaluation_date` passed as argument to `main`": evaluation_date is not None, - "`evaluation_year` is set in the policy environment": ( - "evaluation_year" in policy_environment - and not isinstance(policy_environment["evaluation_year"], PolicyInput) - ), - "`evaluation_year` is present in the data": "evaluation_year" in processed_data, - } - if sum(conditions.values()) > 1: - nicely_formatted_conditions = "\n".join( - [f"- {k}" for k, v in conditions.items() if v] - ) - msg = f""" -You have specified the evaluation date in more than one way: - -{nicely_formatted_conditions} - -The last of these will be used. - -Note that this warnings function does not check for `evaluation_month` -and `evaluation_day`, never set them anywhere without also setting -`evaluation_year`. -""" - warnings.warn(UserWarning(msg), stacklevel=2) diff --git a/src/ttsim/main_args.py b/src/ttsim/main_args.py deleted file mode 100644 index f07063d768..0000000000 --- a/src/ttsim/main_args.py +++ /dev/null @@ -1,170 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any - -if TYPE_CHECKING: - from collections.abc import Callable - from pathlib import Path - - import networkx as nx - import pandas as pd - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatData, - FlatOrigParamSpecs, - NestedData, - NestedStrings, - OrderedQNames, - QNameData, - QNameStrings, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - SpecEnvWithPartialledParamsAndScalars, - SpecEnvWithProcessedParamsAndScalars, - UnorderedQNames, - ) - - -@dataclass(frozen=True) -class MainArg: - def to_dict(self) -> dict[str, Any]: - return self.__dict__ - - -@dataclass(frozen=True) -class DfAndMapper: - df: pd.DataFrame - """A dataframe with arbitrary columns.""" - mapper: NestedStrings - """A nested dictionary mapping expected inputs to column names in df.""" - - def to_dict(self) -> dict[str, Any]: - return self.__dict__ - - -@dataclass(frozen=True) -class InputData(MainArg): - df_and_mapper: DfAndMapper | None - df_with_nested_columns: pd.DataFrame | None - tree: NestedData | None - flat: FlatData | None - qname: QNameData | None - - def __init__(self, *args: Any, **kwargs: Any): # noqa: ANN401, ARG002, ANN204 - raise RuntimeError("Use any of the class methods to instantiate this class.") - - @classmethod - def df_and_mapper(cls, df: pd.DataFrame, mapper: NestedStrings) -> InputData: - """A df with arbitrary columns and a nested dictionary mapping expected inputs to column names in this df.""" # noqa: E501 - obj = object.__new__(cls) - object.__setattr__(obj, "df_and_mapper", DfAndMapper(df=df, mapper=mapper)) - object.__setattr__(obj, "df_with_nested_columns", None) - object.__setattr__(obj, "tree", None) - object.__setattr__(obj, "flat", None) - object.__setattr__(obj, "qname", None) - return obj - - @classmethod - def df_with_nested_columns(cls, df_with_nested_columns: pd.DataFrame) -> InputData: - """A df with a MultiIndex in the column dimension, elements correspond to expected tree paths.""" # noqa: E501 - obj = object.__new__(cls) - object.__setattr__(obj, "df_and_mapper", None) - object.__setattr__(obj, "df_with_nested_columns", df_with_nested_columns) - object.__setattr__(obj, "tree", None) - object.__setattr__(obj, "flat", None) - object.__setattr__(obj, "qname", None) - return obj - - @classmethod - def tree(cls, tree: NestedData) -> InputData: - """A nested dictionary mapping expected input names to vectors of data.""" - obj = object.__new__(cls) - object.__setattr__(obj, "df_and_mapper", None) - object.__setattr__(obj, "df_with_nested_columns", None) - object.__setattr__(obj, "tree", tree) - object.__setattr__(obj, "flat", None) - object.__setattr__(obj, "qname", None) - return obj - - @classmethod - def flat(cls, flat: FlatData) -> InputData: - """A dictionary mapping tree paths to vectors of data.""" - obj = object.__new__(cls) - object.__setattr__(obj, "df_and_mapper", None) - object.__setattr__(obj, "df_with_nested_columns", None) - object.__setattr__(obj, "tree", None) - object.__setattr__(obj, "flat", flat) - object.__setattr__(obj, "qname", None) - return obj - - @classmethod - def qname(cls, qname: QNameData) -> InputData: - """A dictionary mapping qualified names to vectors of data.""" - obj = object.__new__(cls) - object.__setattr__(obj, "df_and_mapper", None) - object.__setattr__(obj, "df_with_nested_columns", None) - object.__setattr__(obj, "tree", None) - object.__setattr__(obj, "flat", None) - object.__setattr__(obj, "qname", qname) - return obj - - def to_dict(self) -> dict[str, Any]: - if self.df_and_mapper is not None: - return {"df_and_mapper": self.df_and_mapper.to_dict()} - return {k: v for k, v in self.__dict__.items() if v is not None} - - -@dataclass(frozen=True) -class OrigPolicyObjects(MainArg): - root: Path | None = None - column_objects_and_param_functions: FlatColumnObjectsParamFunctions | None = None - param_specs: FlatOrigParamSpecs | None = None - - -@dataclass(frozen=True) -class Labels(MainArg): - column_targets: OrderedQNames | None = None - grouping_levels: OrderedQNames | None = None - input_data_targets: OrderedQNames | None = None - param_targets: OrderedQNames | None = None - processed_data_columns: UnorderedQNames | None = None - input_columns: UnorderedQNames | None = None - root_nodes: UnorderedQNames | None = None - top_level_namespace: UnorderedQNames | None = None - - -@dataclass(frozen=True) -class RawResults(MainArg): - columns: QNameData | None = None - params: QNameData | None = None - from_input_data: QNameData | None = None - combined: QNameData | None = None - - -@dataclass(frozen=True) -class Results(MainArg): - df_with_mapper: pd.DataFrame | None = None - df_with_nested_columns: pd.DataFrame | None = None - tree: NestedData | None = None - - -@dataclass(frozen=True) -class TTTargets(MainArg): - qname: QNameStrings | None = None - tree: NestedStrings | None = None - - -@dataclass(frozen=True) -class SpecializedEnvironment(MainArg): - without_tree_logic_and_with_derived_functions: ( - SpecEnvWithoutTreeLogicAndWithDerivedFunctions | None - ) = None - with_processed_params_and_scalars: SpecEnvWithProcessedParamsAndScalars | None = ( - None - ) - with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars | None = ( - None - ) - tax_transfer_dag: nx.DiGraph | None = None - tax_transfer_function: Callable[[QNameData], QNameData] | None = None diff --git a/src/ttsim/plot_dag.py b/src/ttsim/plot_dag.py deleted file mode 100644 index af4f2a0e83..0000000000 --- a/src/ttsim/plot_dag.py +++ /dev/null @@ -1,609 +0,0 @@ -from __future__ import annotations - -import colorsys -import copy -import inspect -import textwrap -from dataclasses import dataclass -from typing import TYPE_CHECKING, Any, Literal, overload - -import dags -import dags.tree as dt -import networkx as nx -import numpy -import plotly.graph_objects as go - -from ttsim import main -from ttsim.interface_dag import load_flat_interface_functions_and_inputs -from ttsim.interface_dag_elements.interface_node_objects import ( - FailFunction, - InputDependentInterfaceFunction, - InterfaceFunction, - InterfaceInput, - WarnFunction, - interface_function, -) -from ttsim.tt_dag_elements import ( - ColumnFunction, - ParamFunction, - ParamObject, - PolicyFunction, - PolicyInput, - param_function, - policy_function, -) - -if TYPE_CHECKING: - from collections.abc import Callable - from pathlib import Path - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - PolicyEnvironment, - SpecEnvWithoutTreeLogicAndWithDerivedFunctions, - ) - - -@dataclass(frozen=True) -class NodeSelector: - """Select nodes from the DAG.""" - - node_paths: list[tuple[str, ...]] - type: Literal["neighbors", "descendants", "ancestors", "nodes"] - order: int | None = None - - -@dataclass(frozen=True) -class _QNameNodeSelector: - """Select nodes from the DAG.""" - - qnames: list[str] - type: Literal["neighbors", "descendants", "ancestors", "nodes"] - order: int | None = None - - -@dataclass(frozen=True) -class NodeMetaData: - description: str - namespace: str - - -def plot_tt_dag( - policy_date_str: str, - root: Path, - node_selector: NodeSelector | None = None, - title: str = "", - include_params: bool = True, - include_other_objects: bool = False, - show_node_description: bool = False, - output_path: Path | None = None, -) -> go.Figure: - """Plot the TT DAG. - - Parameters - ---------- - policy_date_str - The date string. - root - The root path. - node_selector - The node selector. Default is None, i.e. the entire DAG is plotted. - title - The title of the plot. - include_params - Include param functions when plotting the DAG. - include_other_objects - Include backend policy inputs when plotting the DAG. Most users will not want - this. - show_node_description - Show a description of the node when hovering over it. - output_path - If provided, the figure is written to the path. - - Returns - ------- - The figure. - """ - environment = main( - main_target="policy_environment", - policy_date_str=policy_date_str, - orig_policy_objects={"root": root}, - backend="numpy", - ) - - if node_selector: - qname_node_selector = _QNameNodeSelector( - qnames=[dt.qname_from_tree_path(qn) for qn in node_selector.node_paths], - type=node_selector.type, - order=node_selector.order, - ) - else: - qname_node_selector = None - - dag_with_node_metadata = _get_tt_dag_with_node_metadata( - environment=environment, - node_selector=qname_node_selector, - include_params=include_params, - include_other_objects=include_other_objects, - ) - # Remove backend, xnp, dnp, and num_segments from the TT DAG. - dag_with_node_metadata.remove_nodes_from( - [ - "backend", - "xnp", - "dnp", - "num_segments", - ] - ) - fig = _plot_dag( - dag=dag_with_node_metadata, - title=title, - show_node_description=show_node_description, - ) - if output_path: - fig.write_html(output_path) - - return fig - - -def plot_interface_dag( - include_fail_and_warn_nodes: bool = True, - show_node_description: bool = False, - output_path: Path | None = None, -) -> go.Figure: - """Plot the full interface DAG.""" - interface_functions_and_inputs = load_flat_interface_functions_and_inputs() - nodes_without_idifs = { - dt.qname_from_tree_path(p): dummy_callable(n) if not callable(n) else n - for p, n in interface_functions_and_inputs.items() - if not isinstance(n, InputDependentInterfaceFunction) - } - if not include_fail_and_warn_nodes: - nodes_without_idifs = { - qn: n - for qn, n in nodes_without_idifs.items() - if not isinstance(n, (FailFunction, WarnFunction)) - } - - dag = dags.create_dag(functions=nodes_without_idifs, targets=None) - - # Add edges manually for InputDependentInterfaceFunction - input_dependent_interface_functions = { - qn: n - for qn, n in interface_functions_and_inputs.items() - if isinstance(n, InputDependentInterfaceFunction) - } - qnames_of_idif_to_their_ancestors = _qnames_of_idif_to_their_ancestors( - input_dependent_interface_functions - ) - for qn, ancestors in qnames_of_idif_to_their_ancestors.items(): - for ancestor in ancestors: - dag.add_edge(ancestor, qn) - - for node_name in dag.nodes(): - interface_object = nodes_without_idifs.get(node_name) - if interface_object: - f = ( - interface_object.function - if hasattr(interface_object, "function") - else interface_object - ) - description = inspect.getdoc(f) - namespace = node_name.split("__")[0] if "__" in node_name else "top-level" - dag.nodes[node_name]["node_metadata"] = NodeMetaData( - description=description or "No description available.", - namespace=namespace, - ) - - fig = _plot_dag( - dag=dag, - title="Full Interface DAG", - show_node_description=show_node_description, - ) - - if output_path: - fig.write_html(output_path) - - return fig - - -def _qnames_of_idif_to_their_ancestors( - input_dependent_interface_functions: dict[ - tuple[str, ...], InputDependentInterfaceFunction - ], -) -> dict[str, list[str]]: - """Get the qnames of the input dependent interface functions to their ancestors.""" - idif_qname_to_idif_inputs: dict[str, list[str]] = {} - for orig_p, orig_object in input_dependent_interface_functions.items(): - qname = dt.qname_from_tree_path((*orig_p[:-1], orig_object.leaf_name)) - if qname not in idif_qname_to_idif_inputs: - idif_qname_to_idif_inputs[qname] = [] - ancestors = set(orig_object.include_if_all_inputs_present) | set( - orig_object.include_if_any_input_present - ) - idif_qname_to_idif_inputs[qname].extend(list(ancestors)) - return idif_qname_to_idif_inputs - - -def _get_tt_dag_with_node_metadata( - environment: PolicyEnvironment, - node_selector: _QNameNodeSelector | None = None, - include_params: bool = True, - include_other_objects: bool = False, -) -> nx.DiGraph: - """Get the TT DAG to plot.""" - qname_environment = dt.flatten_to_qnames(environment) - qnames_to_plot = list(qname_environment) - if node_selector: - # Node selector might contain derived functions that are not in qnames_to_plot - qnames_to_plot.extend(node_selector.qnames) - - qnames_policy_inputs = [ - k - for k, v in qname_environment.items() - if isinstance(v, PolicyInput) and k in qnames_to_plot - ] - env = main( - main_target="specialized_environment__without_tree_logic_and_with_derived_functions", - policy_environment=environment, - labels={"processed_data_columns": qnames_policy_inputs}, - tt_targets={"qname": qnames_to_plot}, - backend="numpy", - ) - - all_nodes = { - qn: dummy_callable(n) if not callable(n) else n for qn, n in env.items() - } - - complete_dag = dags.create_dag(functions=all_nodes, targets=qnames_to_plot) - - if node_selector is None: - selected_dag = complete_dag - else: - selected_dag = _create_dag_with_selected_nodes( - complete_dag=complete_dag, - node_selector=node_selector, - ) - - if not include_params: - selected_dag.remove_nodes_from( - [qn for qn, v in env.items() if isinstance(v, (ParamObject, ParamFunction))] - ) - if not include_other_objects: - selected_dag.remove_nodes_from( - [ - qn - for qn, n in env.items() - if not isinstance(n, (ColumnFunction, ParamFunction, ParamObject)) - ] - ) - - node_descriptions = _get_node_descriptions(env) - # Add Node Metadata to DAG - for qn in all_nodes: - if qn not in selected_dag.nodes(): - continue - description = node_descriptions[qn] - node_namespace = qn.split("__")[0] if "__" in qn else "top-level" - selected_dag.nodes[qn]["node_metadata"] = NodeMetaData( - description=description, - namespace=node_namespace, - ) - - return selected_dag - - -def _get_node_descriptions( - env: SpecEnvWithoutTreeLogicAndWithDerivedFunctions, -) -> dict[str, str]: - """Get the descriptions of the nodes in the environment.""" - out = {} - for qn, n in env.items(): - descr = None - if hasattr(n, "description"): - if isinstance(n.description, str): - descr = n.description - elif ( - isinstance(n.description, dict) - and "en" in n.description - and n.description["en"] is not None - ): - descr = n.description["en"] - if not descr: - descr = "No description available." - # Wrap description at 79 characters - descr = textwrap.fill(descr, width=79) - out[qn] = descr - return out - - -@overload -def dummy_callable(obj: PolicyInput) -> PolicyFunction: ... - - -@overload -def dummy_callable(obj: ParamObject) -> ParamFunction: ... - - -@overload -def dummy_callable(obj: InterfaceInput) -> InterfaceFunction: ... - - -def dummy_callable(obj: ModuleType | str | float | bool) -> Callable[[], Any]: - """Dummy callable, for plotting and checking DAG completeness.""" - - def dummy(): # type: ignore[no-untyped-def] # noqa: ANN202 - pass - - if isinstance(obj, PolicyInput): - return policy_function( - leaf_name=obj.leaf_name, - start_date=obj.start_date, - end_date=obj.end_date, - foreign_key_type=obj.foreign_key_type, - )(dummy) - if isinstance(obj, ParamObject): - return param_function( - leaf_name=obj.leaf_name, - start_date=obj.start_date, - end_date=obj.end_date, - )(dummy) - if isinstance(obj, InterfaceInput): - return interface_function( - leaf_name=obj.leaf_name, - in_top_level_namespace=obj.in_top_level_namespace, - )(dummy) - return dummy - - -def _create_dag_with_selected_nodes( - complete_dag: nx.DiGraph, - node_selector: _QNameNodeSelector, -) -> nx.DiGraph: - """Select nodes based on the node selector.""" - selected_nodes: set[str] = set() - if node_selector.type == "nodes": - selected_nodes.update(node_selector.qnames) - elif node_selector.type == "ancestors": - for node in node_selector.qnames: - selected_nodes.update( - _kth_order_predecessors(complete_dag, node, order=node_selector.order) - if node_selector.order - else list(nx.ancestors(complete_dag, node)) - ) - elif node_selector.type == "descendants": - for node in node_selector.qnames: - selected_nodes.update( - _kth_order_successors(complete_dag, node, order=node_selector.order) - if node_selector.order - else list(nx.descendants(complete_dag, node)) - ) - elif node_selector.type == "neighbors": - order = node_selector.order or 1 - for node in node_selector.qnames: - selected_nodes.update(_kth_order_neighbors(complete_dag, node, order=order)) - else: - msg = ( - f"Invalid node selector type: {node_selector.type}. " - "Choose one of 'nodes', 'ancestors', 'descendants', or 'neighbors'." - ) - raise ValueError(msg) - - dag_copy = copy.deepcopy(complete_dag) - dag_copy.remove_nodes_from(set(complete_dag.nodes) - set(selected_nodes)) - return dag_copy - - -def _plot_dag( - dag: nx.DiGraph, - title: str, - show_node_description: bool, -) -> go.Figure: - """Plot the DAG.""" - nice_dag = nx.relabel_nodes( - dag, {qn: qn.replace("__", "
") for qn in dag.nodes()} - ) - - pos = nx.nx_agraph.pygraphviz_layout(nice_dag, prog="dot", args="-Grankdir=LR") - # Create edge traces with arrows - edge_traces = [] - annotations = [] - - for edge in nice_dag.edges(): - x0, y0 = pos[edge[0]] - x1, y1 = pos[edge[1]] - - # Calculate the direction vector - dx = x1 - x0 - dy = y1 - y0 - length = numpy.sqrt(dx**2 + dy**2) - - if length > 0: - # Normalize the direction vector - dx = dx / length - dy = dy / length - - # Calculate start and end points with symmetric offsets - offset = 50 # Offset in pygraphviz coordinate units - x0 = x0 + dx * offset - y0 = y0 + dy * offset - x1 = x1 - dx * offset - y1 = y1 - dy * offset - - # Create the edge line - edge_trace = go.Scatter( - x=[x0, x1], - y=[y0, y1], - line={"width": 1.5, "color": "#888"}, - hoverinfo="none", - mode="lines", - ) - edge_traces.append(edge_trace) - - # Add arrow using Plotly annotation - annotations.append( - { - "x": x1, - "y": y1, - "ax": x0, - "ay": y0, - "xref": "x", - "yref": "y", - "axref": "x", - "ayref": "y", - "arrowhead": 2, - "arrowsize": 1.25, - "arrowwidth": 2, - "arrowcolor": "#888", - "showarrow": True, - "text": "", - } - ) - - # Create node trace - node_x = [] - node_y = [] - node_text = [] - node_colors = [] - - # Create namespace to color mapping with unique colors - top_level_namespaces = { - dag.nodes[node]["node_metadata"].namespace - for node in dag.nodes() - if "node_metadata" in dag.nodes[node] - } - n_namespaces = len(top_level_namespaces) - namespace_colors = { - namespace: hsl_to_hex(hue=i / n_namespaces, saturation=0.7, lightness=0.5) - for i, namespace in enumerate(sorted(top_level_namespaces)) - } - - for node in nice_dag.nodes(): - metadata: NodeMetaData = nice_dag.nodes[node]["node_metadata"] - - x, y = pos[node] - node_x.append(x) - node_y.append(y) - node_text.append( - node + "

" + metadata.description.replace("\n", "
") - if show_node_description - else node - ) - - node_color = ( - "#1f77b4" # blue - if metadata.namespace == "top-level" - else namespace_colors[metadata.namespace] - ) - node_colors.append(node_color) - - node_trace = go.Scatter( - x=node_x, - y=node_y, - mode="markers", - hoverinfo="text", - text=node_text, - hoverlabel={ - "bgcolor": "white", - "font": {"color": "black"}, - "bordercolor": "lightgray", - }, - marker={ - "showscale": False, - "color": node_colors, - "size": 25, - "line": {"width": 2, "color": "white"}, - }, - ) - - # Create the figure with specified canvas size - return go.Figure( - data=[*edge_traces, node_trace], - layout=go.Layout( - title={"text": title, "font": {"size": 16}}, - showlegend=False, - hovermode="closest", - margin={"b": 40, "l": 40, "r": 40, "t": 60}, - width=1800, - height=1200, - annotations=annotations, - xaxis={ - "showgrid": False, - "zeroline": False, - "showticklabels": False, - }, - yaxis={ - "showgrid": False, - "zeroline": False, - "showticklabels": False, - }, - ), - ) - - -def _kth_order_neighbors( - dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None -) -> set[str]: - base = base or set() - base.add(node) - if order >= 1: - for predecessor in dag.predecessors(node): - base.update( - _kth_order_predecessors(dag, predecessor, order=order - 1, base=base) - ) - for successor in dag.successors(node): - base.update( - _kth_order_successors(dag, successor, order=order - 1, base=base) - ) - return base - - -def _kth_order_predecessors( - dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None -) -> set[str]: - base = base or set() - base.add(node) - if order >= 1: - for predecessor in dag.predecessors(node): - base.update( - _kth_order_predecessors(dag, predecessor, order=order - 1, base=base) - ) - return base - - -def _kth_order_successors( - dag: nx.DiGraph, node: str, order: int, base: set[str] | None = None -) -> set[str]: - base = base or set() - base.add(node) - if order >= 1: - for successor in dag.successors(node): - base.update( - _kth_order_successors(dag, successor, order=order - 1, base=base) - ) - return base - - -def hsl_to_hex(hue: float, saturation: float, lightness: float) -> str: - """Convert HSL color values to hexadecimal color code. - - Parameters - ---------- - hue : float - Hue value between 0 and 1, representing the position on the color wheel - (0 = red, 0.33 = green, 0.66 = blue, 1 = red again) - saturation : float - Saturation value between 0 and 1, representing color intensity - (0 = grayscale, 1 = fully saturated) - lightness : float - Lightness value between 0 and 1, representing brightness - (0 = black, 0.5 = normal, 1 = white) - - Returns - ------- - str - Hexadecimal color code in the format '#RRGGBB' - """ - - rgb = colorsys.hls_to_rgb(h=hue, l=lightness, s=saturation) - return f"#{int(rgb[0] * 255):02x}{int(rgb[1] * 255):02x}{int(rgb[2] * 255):02x}" diff --git a/src/ttsim/stale_code_storage.py b/src/ttsim/stale_code_storage.py deleted file mode 100644 index 1d86d307e3..0000000000 --- a/src/ttsim/stale_code_storage.py +++ /dev/null @@ -1,147 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any - -import optree - -from ttsim.tt_dag_elements import ( - ColumnObject, - ParamFunction, - ParamObject, - policy_function, -) - -if TYPE_CHECKING: - from collections.abc import Callable, Mapping - - NestedAnyTTSIMObject = Mapping[ - str, - ColumnObject - | ParamFunction - | ParamObject - | int - | float - | bool - | BoolColumn - | IntColumn - | FloatColumn - | DatetimeColumn - | "NestedAnyTTSIMObject", - ] - NestedAny = Mapping[str, Any | "NestedAnyTTSIMObject"] - """Tree mapping TTSIM paths to any type of TTSIM object.""" - - -def _convert_plain_functions_to_policy_functions( - tree: NestedAny, -) -> NestedAnyTTSIMObject: - """Convert all plain functions in a tree to PolicyFunctions. - - Convenience function if users do not want to apply decorators in modifications of - the taxes and transfers system. - - Parameters - ---------- - tree - The tree of functions to convert. - - Returns - ------- - converted_tree - The converted tree. - - """ - converted: NestedAnyTTSIMObject = optree.tree_map( - lambda leaf: _convert_to_policy_function_if_callable(leaf), - tree, # type: ignore[arg-type] - ) # type: ignore[assignment] - return converted - - -def _convert_to_policy_function_if_callable( - obj: ColumnObject | ParamFunction | Callable[..., Any] | Any, -) -> ColumnObject: - """Convert a Callable to a PolicyFunction if it is not already a ColumnObject or - ParamFunction. If it is not a Callable, return it unchanged. - - Parameters - ---------- - obj - The object to convert. - - Returns - ------- - converted_object - The converted object. - - """ - if isinstance(obj, (ColumnObject, ParamFunction)) or not callable(obj): - converted_object = obj - else: - converted_object = policy_function(leaf_name=obj.__name__)(obj) - - return converted_object - - -@interface_function() -def name_of_last_branch_element_is_not_the_functions_leaf_name( - functions_tree: NestedColumnObjectsParamFunctions, -) -> None: - """Raise error if a PolicyFunction does not have the same leaf name as the last - branch element of the tree path. - """ - - for tree_path, function in dt.flatten_to_tree_paths(functions_tree).items(): - if tree_path[-1] != function.leaf_name: - raise KeyError( - f""" - The name of the last branch element of the functions tree must be the - same as the leaf name of the PolicyFunction. The tree path {tree_path} - is not compatible with the PolicyFunction {function.leaf_name}. - """ - ) - - -@pytest.mark.parametrize( - "functions_tree", - [ - {"foo": policy_function(leaf_name="bar")(return_one)}, - ], -) -def test_fail_if_name_of_last_branch_element_is_not_the_functions_leaf_name( - functions_tree: NestedColumnObjectsParamFunctions, -): - with pytest.raises(KeyError): - name_of_last_branch_element_is_not_the_functions_leaf_name(functions_tree) - - -def check_series_has_expected_type( - series: pd.Series, internal_type: numpy.dtype, dnp: ModuleType -) -> bool: - """Checks whether used series has already expected internal type. - - Currently not used, but might become useful again. - - Parameters - ---------- - series: pandas.Series or pandas.DataFrame or dict of pandas.Series - Data provided by the user. - internal_type: TypeVar - One of the types used by TTSIM. - - Returns - ------- - Bool - - """ - if ( - (internal_type == float) & (is_float_dtype(series)) - or (internal_type == int) & (is_integer_dtype(series)) - or (internal_type == bool) & (is_bool_dtype(series)) - or (internal_type == dnp.datetime64) & (is_datetime64_any_dtype(series)) - ): - out = True - else: - out = False - - return out diff --git a/src/ttsim/testing_utils.py b/src/ttsim/testing_utils.py deleted file mode 100644 index a719712200..0000000000 --- a/src/ttsim/testing_utils.py +++ /dev/null @@ -1,297 +0,0 @@ -from __future__ import annotations - -import inspect -from functools import lru_cache -from typing import TYPE_CHECKING, Literal - -import dags -import dags.tree as dt -import optree -import pandas as pd -import yaml - -from ttsim import main, merge_trees -from ttsim.interface_dag_elements.data_converters import ( - nested_data_to_df_with_nested_columns, -) -from ttsim.interface_dag_elements.fail_if import format_list_linewise -from ttsim.interface_dag_elements.shared import to_datetime -from ttsim.plot_dag import dummy_callable -from ttsim.tt_dag_elements.column_objects_param_function import PolicyInput - -# Set display options to show all columns without truncation -pd.set_option("display.max_columns", None) -pd.set_option("display.width", None) - -if TYPE_CHECKING: - import datetime - from pathlib import Path - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - NestedData, - NestedInputStructureDict, - PolicyEnvironment, - ) - - -@lru_cache(maxsize=100) -def cached_policy_environment( - policy_date: datetime.date, - root: Path, - backend: Literal["numpy", "jax"], -) -> PolicyEnvironment: - return main( - main_target="policy_environment", - policy_date=policy_date, - orig_policy_objects={"root": root}, - backend=backend, - include_fail_nodes=True, - include_warn_nodes=False, - ) - - -class PolicyTest: - """A class for a single policy test.""" - - __slots__ = ( - "expected_output_tree", - "info", - "input_tree", - "path", - "policy_date", - "test_dir", - "xnp", - ) - - def __init__( - self, - info: NestedData, - input_tree: NestedData, - expected_output_tree: NestedData, - path: Path, - policy_date: datetime.date, - test_dir: Path, - xnp: ModuleType, - ) -> None: - self.info = info - self.input_tree = optree.tree_map(xnp.array, input_tree) - self.expected_output_tree = expected_output_tree - self.path = path - self.policy_date = policy_date - self.test_dir = test_dir - self.xnp = xnp - - @property - def target_structure(self) -> NestedInputStructureDict: - flat_target_structure = dict.fromkeys( - dt.flatten_to_tree_paths(self.expected_output_tree), - ) - return dt.unflatten_from_tree_paths(flat_target_structure) - - @property - def name(self) -> str: - return self.path.relative_to(self.test_dir / "test_data").as_posix() - - -def execute_test( - test: PolicyTest, - root: Path, - backend: Literal["numpy", "jax"], -) -> None: - environment = cached_policy_environment( - policy_date=test.policy_date, root=root, backend=backend - ) - if test.target_structure: - result_df = main( - main_target="results__df_with_nested_columns", - input_data={"tree": test.input_tree}, - policy_environment=environment, - policy_date=test.policy_date, - tt_targets={"tree": test.target_structure}, - rounding=True, - backend=backend, - include_fail_nodes=False, - include_warn_nodes=False, - ) - - if test.expected_output_tree: - expected_df = nested_data_to_df_with_nested_columns( - nested_data_to_convert=test.expected_output_tree, - data_with_p_id=test.input_tree, - ) - try: - pd.testing.assert_frame_equal( - result_df.sort_index(axis="columns"), - expected_df.sort_index(axis="columns"), - atol=test.info["precision_atol"], - check_dtype=False, - ) - except AssertionError as e: - assert set(result_df.columns) == set(expected_df.columns) # noqa: S101 - cols_with_differences = [] - for col in expected_df.columns: - try: - pd.testing.assert_series_equal( - result_df[col], - expected_df[col], - atol=test.info["precision_atol"], - check_dtype=False, - ) - except AssertionError: - cols_with_differences.append(col) - raise AssertionError( - f"""actual != expected in columns: {cols_with_differences}. - -actual[cols_with_differences]: - -{result_df[cols_with_differences]} - -expected[cols_with_differences]: - -{expected_df[cols_with_differences]} -""", - ) from e - - -def load_policy_test_data( - test_dir: Path, - policy_name: str, - xnp: ModuleType, -) -> dict[str, PolicyTest]: - """Load all tests found by recursively searching - - test_dir / "test_data" / policy_name - - for yaml files. - - If policy_name is empty, all tests found in test_dir / "test_data" are loaded. - """ - out = {} - for path_to_yaml in (test_dir / "test_data" / policy_name).glob("**/*.yaml"): - if _is_skipped(path_to_yaml): - continue - - with path_to_yaml.open("r", encoding="utf-8") as file: - raw_test_data: NestedData = yaml.safe_load(file) - - this_test = _get_policy_test_from_raw_test_data( - test_dir=test_dir, - raw_test_data=raw_test_data, - path_to_yaml=path_to_yaml, - xnp=xnp, - ) - out[this_test.name] = this_test - - return out - - -def _is_skipped(test_file: Path) -> bool: - return "skip" in test_file.stem or "skip" in test_file.parent.name - - -def _get_policy_test_from_raw_test_data( - test_dir: Path, - path_to_yaml: Path, - raw_test_data: NestedData, - xnp: ModuleType, -) -> PolicyTest: - """Get a list of PolicyTest objects from raw test data. - - Args: - raw_test_data: The raw test data. - path_to_yaml: The path to the YAML file. - - Returns - ------- - A list of PolicyTest objects. - """ - test_info: NestedData = raw_test_data.get("info", {}) - input_tree: NestedData = dt.unflatten_from_tree_paths( - { - k: xnp.array(v) - for k, v in dt.flatten_to_tree_paths( - merge_trees( - left=raw_test_data["inputs"].get("provided", {}), - right=raw_test_data["inputs"].get("assumed", {}), - ), - ).items() - }, - ) - - expected_output_tree: NestedData = dt.unflatten_from_tree_paths( - { - k: xnp.array(v) - for k, v in dt.flatten_to_tree_paths( - raw_test_data.get("outputs", {}), - ).items() - }, - ) - - policy_date: datetime.date = to_datetime(path_to_yaml.parent.name) - - return PolicyTest( - info=test_info, - input_tree=input_tree, - expected_output_tree=expected_output_tree, - path=path_to_yaml, - policy_date=policy_date, - test_dir=test_dir, - xnp=xnp, - ) - - -def check_env_completeness( - name: str, - policy_date: datetime.date, - orig_policy_objects: dict[ - str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs - ], -) -> None: - environment = main( - main_target="policy_environment", - policy_date=policy_date, - backend="numpy", - orig_policy_objects=orig_policy_objects, - ) - qname_environment = dt.flatten_to_qnames(environment) - qnames_policy_inputs = [ - k for k, v in qname_environment.items() if isinstance(v, PolicyInput) - ] - qname_env_with_derived_functions = main( - main_target="specialized_environment__without_tree_logic_and_with_derived_functions", - policy_environment=environment, - labels={"processed_data_columns": qnames_policy_inputs}, - tt_targets={"qname": list(qname_environment)}, - backend="numpy", - ) - all_nodes = { - qn: dummy_callable(n) if not callable(n) else n - for qn, n in qname_env_with_derived_functions.items() - } - f = dags.concatenate_functions( - functions=all_nodes, - targets=list(qname_env_with_derived_functions.keys()), - return_type="dict", - enforce_signature=False, - set_annotations=False, - ) - args = set(inspect.signature(f).parameters) - { - "backend", - "xnp", - "dnp", - "num_segments", - "evaluation_year", - "evaluation_month", - "evaluation_day", - } - if args: - raise ValueError( - f"{name}'s full DAG should include all root nodes but the following inputs " - "are missing in the specialized policy environment:" - f"\n\n{format_list_linewise(args)}\n\n" - "Please add corresponding elements. Typically, these will be " - "`@policy_input()`s or parameters in the yaml files." - ) diff --git a/src/ttsim/tt_dag_elements/aggregation.py b/src/ttsim/tt_dag_elements/aggregation.py deleted file mode 100644 index 20fb25f843..0000000000 --- a/src/ttsim/tt_dag_elements/aggregation.py +++ /dev/null @@ -1,500 +0,0 @@ -from __future__ import annotations - -from enum import StrEnum -from typing import TYPE_CHECKING, Literal, overload - -from ttsim.tt_dag_elements import aggregation_jax, aggregation_numpy - -if TYPE_CHECKING: - from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn - - -class AggType(StrEnum): - """ - Enum for aggregation types. - """ - - COUNT = "count" - SUM = "sum" - MEAN = "mean" - MAX = "max" - MIN = "min" - ANY = "any" - ALL = "all" - - -# The signature of the functions must be the same in both modules, except that all JAX -# functions have the additional `num_segments` argument. -def grouped_count( - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: - if backend == "numpy": - return aggregation_numpy.grouped_count(group_id) - return aggregation_jax.grouped_count(group_id, num_segments) - - -@overload -def grouped_sum( - column: FloatColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def grouped_sum( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -@overload -def grouped_sum( - column: BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def grouped_sum( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.grouped_sum(column, group_id) - return aggregation_jax.grouped_sum(column, group_id, num_segments) - - -@overload -def grouped_mean( - column: FloatColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... -@overload -def grouped_mean( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... -@overload -def grouped_mean( - column: BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... -def grouped_mean( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: - if backend == "numpy": - return aggregation_numpy.grouped_mean(column, group_id) - return aggregation_jax.grouped_mean(column, group_id, num_segments) - - -@overload -def grouped_max( - column: FloatColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def grouped_max( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def grouped_max( - column: FloatColumn | IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.grouped_max(column, group_id) - return aggregation_jax.grouped_max(column, group_id, num_segments) - - -@overload -def grouped_min( - column: FloatColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def grouped_min( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def grouped_min( - column: FloatColumn | IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.grouped_min(column, group_id) - return aggregation_jax.grouped_min(column, group_id, num_segments) - - -@overload -def grouped_any( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -@overload -def grouped_any( - column: BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -def grouped_any( - column: IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: - if backend == "numpy": - return aggregation_numpy.grouped_any(column, group_id) - return aggregation_jax.grouped_any(column, group_id, num_segments) - - -@overload -def grouped_all( - column: IntColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -@overload -def grouped_all( - column: BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -def grouped_all( - column: IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: - if backend == "numpy": - return aggregation_numpy.grouped_all(column, group_id) - return aggregation_jax.grouped_all(column, group_id, num_segments) - - -def count_by_p_id( - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: - if backend == "numpy": - return aggregation_numpy.count_by_p_id(p_id_to_aggregate_by, p_id_to_store_by) - return aggregation_jax.count_by_p_id( - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def sum_by_p_id( - column: FloatColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... -@overload -def sum_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -@overload -def sum_by_p_id( - column: BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def sum_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.sum_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.sum_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def mean_by_p_id( - column: FloatColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def mean_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def mean_by_p_id( - column: BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -def mean_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: - if backend == "numpy": - return aggregation_numpy.mean_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.mean_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def max_by_p_id( - column: FloatColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def max_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def max_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.max_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.max_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def min_by_p_id( - column: FloatColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn: ... - - -@overload -def min_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -def min_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> FloatColumn | IntColumn: - if backend == "numpy": - return aggregation_numpy.min_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.min_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def any_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -@overload -def any_by_p_id( - column: BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -def any_by_p_id( - column: IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: - if backend == "numpy": - return aggregation_numpy.any_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.any_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) - - -@overload -def all_by_p_id( - column: IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> IntColumn: ... - - -@overload -def all_by_p_id( - column: BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: ... - - -def all_by_p_id( - column: IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> BoolColumn: - if backend == "numpy": - return aggregation_numpy.all_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - ) - return aggregation_jax.all_by_p_id( - column, - p_id_to_aggregate_by, - p_id_to_store_by, - num_segments, - ) diff --git a/src/ttsim/tt_dag_elements/aggregation_jax.py b/src/ttsim/tt_dag_elements/aggregation_jax.py deleted file mode 100644 index ff0566fea0..0000000000 --- a/src/ttsim/tt_dag_elements/aggregation_jax.py +++ /dev/null @@ -1,202 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -try: - import jax.numpy as jnp - from jax.ops import segment_max, segment_min, segment_sum -except ImportError: - pass - -if TYPE_CHECKING: - from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn - - -def grouped_count(group_id: IntColumn, num_segments: int) -> jnp.ndarray: - out_grouped = segment_sum( - data=jnp.ones(len(group_id), dtype=jnp.int32), - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def grouped_sum( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, -) -> FloatColumn | IntColumn: - if column.dtype in ["bool"]: - column = column.astype(int) - - out_grouped = segment_sum( - data=column, - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def grouped_mean( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, - num_segments: int, -) -> FloatColumn: - if column.dtype in ["bool"]: - column = column.astype(int) - sum_grouped = segment_sum( - data=column, - segment_ids=group_id, - num_segments=num_segments, - ) - sizes = segment_sum( - data=jnp.ones(len(column)), - segment_ids=group_id, - num_segments=num_segments, - ) - mean_grouped = sum_grouped / sizes - return mean_grouped[group_id] - - -def grouped_max( - column: FloatColumn | IntColumn, - group_id: IntColumn, - num_segments: int, -) -> FloatColumn | IntColumn: - out_grouped = segment_max( - data=column, - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def grouped_min( - column: FloatColumn | IntColumn, - group_id: IntColumn, - num_segments: int, -) -> FloatColumn | IntColumn: - out_grouped = segment_min( - data=column, - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def grouped_any( - column: BoolColumn | IntColumn, - group_id: IntColumn, - num_segments: int, -) -> BoolColumn: - # Convert to boolean if necessary - if jnp.issubdtype(column.dtype, jnp.integer): - my_col = column.astype("bool") - else: - my_col = column - - out_grouped = segment_max( - data=my_col, - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def grouped_all( - column: BoolColumn | IntColumn, - group_id: IntColumn, - num_segments: int, -) -> BoolColumn: - # Convert to boolean if necessary - if jnp.issubdtype(column.dtype, jnp.integer): - column = column.astype("bool") - - out_grouped = segment_min( - data=column, - segment_ids=group_id, - num_segments=num_segments, - ) - return out_grouped[group_id] - - -def count_by_p_id( - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> IntColumn: - raise NotImplementedError - - -def sum_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, # noqa: ARG001 -) -> FloatColumn | IntColumn: - if column.dtype == bool: - column = column.astype(int) - - # Build an index mapping from p_id values to positions in p_id_to_store_by. - sorted_idx = jnp.argsort(p_id_to_store_by) - sorted_store = p_id_to_store_by[sorted_idx] - - # For every element in p_id_to_aggregate_by (even negatives), - # use searchsorted to get its candidate index in sorted_store. - candidate = jnp.searchsorted(sorted_store, p_id_to_aggregate_by) - candidate_idx = sorted_idx[candidate] - - # For invalid (negative) IDs, force a dummy index (0) that will be masked out. - mapped_index = jnp.where(p_id_to_aggregate_by >= 0, candidate_idx, 0) - - # Only valid entries contribute to the sum. - contributions = jnp.where(p_id_to_aggregate_by >= 0, column, 0) - - # Scatter-add the contributions to the output array. - out = jnp.zeros_like(p_id_to_store_by, dtype=column.dtype) - return out.at[mapped_index].add(contributions) - - -def mean_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> FloatColumn: - raise NotImplementedError - - -def max_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> FloatColumn | IntColumn: - raise NotImplementedError - - -def min_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> FloatColumn | IntColumn: - raise NotImplementedError - - -def any_by_p_id( - column: BoolColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> BoolColumn: - raise NotImplementedError - - -def all_by_p_id( - column: BoolColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, - num_segments: int, -) -> BoolColumn: - raise NotImplementedError diff --git a/src/ttsim/tt_dag_elements/aggregation_numpy.py b/src/ttsim/tt_dag_elements/aggregation_numpy.py deleted file mode 100644 index 31afc2ba19..0000000000 --- a/src/ttsim/tt_dag_elements/aggregation_numpy.py +++ /dev/null @@ -1,283 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import numpy -import numpy_groupies as npg - -if TYPE_CHECKING: - from ttsim.tt_dag_elements.typing import BoolColumn, FloatColumn, IntColumn - - -def grouped_count(group_id: IntColumn) -> IntColumn: - fail_if_dtype_not_int(group_id, agg_func="grouped_count") - out_grouped = npg.aggregate( - group_id, - numpy.ones(len(group_id), dtype=int), - func="sum", - fill_value=0, - ) - - return out_grouped[group_id] - - -def grouped_sum( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_sum") - fail_if_dtype_not_int(group_id, agg_func="grouped_sum") - if column.dtype == bool: - column = column.astype(int) - out_grouped = npg.aggregate(group_id, column, func="sum", fill_value=0) - - # Expand to individual level - return out_grouped[group_id] - - -def grouped_mean( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, -) -> FloatColumn: - fail_if_dtype_not_numeric_or_boolean(column, agg_func="grouped_mean") - fail_if_dtype_not_int(group_id, agg_func="grouped_mean") - - out_grouped = npg.aggregate(group_id, column, func="mean", fill_value=0) - - # Expand to individual level - return out_grouped[group_id] - - -def grouped_max( - column: FloatColumn | IntColumn | BoolColumn, - group_id: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_max") - fail_if_dtype_not_int(group_id, agg_func="grouped_max") - - # For datetime, convert to integer (as numpy_groupies can handle datetime only if - # numba is installed) - if numpy.issubdtype(column.dtype, numpy.datetime64): - dtype = column.dtype - float_col = column.astype("datetime64[D]").astype(int) - - out_grouped_float = npg.aggregate(group_id, float_col, func="max") - - out_grouped = out_grouped_float.astype("datetime64[D]").astype(dtype) - - # Expand to individual level - out = out_grouped[group_id] - - else: - out_grouped = npg.aggregate(group_id, column, func="max") - - # Expand to individual level - out = out_grouped[group_id] - return out - - -def grouped_min( - column: FloatColumn | IntColumn, - group_id: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_datetime(column, agg_func="grouped_min") - fail_if_dtype_not_int(group_id, agg_func="grouped_min") - - # For datetime, convert to integer (as numpy_groupies can handle datetime only if - # numba is installed) - - if numpy.issubdtype(column.dtype, numpy.datetime64) or numpy.issubdtype( - column.dtype, - numpy.timedelta64, - ): - dtype = column.dtype - float_col = column.astype("datetime64[D]").astype(int) - - out_grouped_float = npg.aggregate(group_id, float_col, func="min") - - out_grouped = out_grouped_float.astype("datetime64[D]").astype(dtype) - - # Expand to individual level - out = out_grouped[group_id] - - else: - out_grouped = npg.aggregate(group_id, column, func="min") - - # Expand to individual level - out = out_grouped[group_id] - return out - - -def grouped_any(column: BoolColumn | IntColumn, group_id: IntColumn) -> BoolColumn: - fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_any") - fail_if_dtype_not_int(group_id, agg_func="grouped_any") - - out_grouped = npg.aggregate(group_id, column, func="any", fill_value=0) - - # Expand to individual level - return out_grouped[group_id] - - -def grouped_all(column: BoolColumn | IntColumn, group_id: IntColumn) -> BoolColumn: - fail_if_dtype_not_boolean_or_int(column, agg_func="grouped_all") - fail_if_dtype_not_int(group_id, agg_func="grouped_all") - - out_grouped = npg.aggregate(group_id, column, func="all", fill_value=0) - - # Expand to individual level - return out_grouped[group_id] - - -def count_by_p_id( - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> IntColumn: - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="count_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="count_by_p_id") - - raise NotImplementedError - - -def sum_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_boolean(column, agg_func="sum_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="sum_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="sum_by_p_id") - - if column.dtype in ["bool"]: - column = column.astype(int) - out = numpy.zeros_like(p_id_to_store_by, dtype=column.dtype) - - map_p_id_to_position = {p_id: iloc for iloc, p_id in enumerate(p_id_to_store_by)} - - for iloc, id_receiver in enumerate(p_id_to_aggregate_by): - if id_receiver >= 0: - out[map_p_id_to_position[id_receiver]] += column[iloc] - return out - - -def mean_by_p_id( - column: FloatColumn | IntColumn | BoolColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> FloatColumn: - fail_if_dtype_not_numeric_or_boolean(column, agg_func="mean_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="mean_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="mean_by_p_id") - raise NotImplementedError - - -def max_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_datetime(column, agg_func="max_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="max_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="max_by_p_id") - raise NotImplementedError - - -def min_by_p_id( - column: FloatColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> FloatColumn | IntColumn: - fail_if_dtype_not_numeric_or_datetime(column, agg_func="min_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="min_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="min_by_p_id") - raise NotImplementedError - - -def any_by_p_id( - column: BoolColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> BoolColumn: - fail_if_dtype_not_boolean_or_int(column, agg_func="any_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="any_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="any_by_p_id") - raise NotImplementedError - - -def all_by_p_id( - column: BoolColumn | IntColumn, - p_id_to_aggregate_by: IntColumn, - p_id_to_store_by: IntColumn, -) -> BoolColumn: - fail_if_dtype_not_boolean_or_int(column, agg_func="all_by_p_id") - fail_if_dtype_not_int(p_id_to_store_by, agg_func="all_by_p_id") - fail_if_dtype_not_int(p_id_to_aggregate_by, agg_func="all_by_p_id") - raise NotImplementedError - - -def fail_if_dtype_not_numeric( - column: FloatColumn | IntColumn | BoolColumn, - agg_func: str, -) -> None: - if not numpy.issubdtype(column.dtype, numpy.number): - raise TypeError( - f"Aggregation function {agg_func} was applied to a column " - f"with dtype {column.dtype}. Allowed are only numerical dtypes.", - ) - - -def fail_if_dtype_not_float( - column: FloatColumn | IntColumn | BoolColumn, - agg_func: str, -) -> None: - if not numpy.issubdtype(column.dtype, numpy.floating): - raise TypeError( - f"Aggregation function {agg_func} was applied to a column " - f"with dtype {column.dtype}. Allowed is only float.", - ) - - -def fail_if_dtype_not_int(p_id_to_aggregate_by: IntColumn, agg_func: str) -> None: - if not numpy.issubdtype(p_id_to_aggregate_by.dtype, numpy.integer): - raise TypeError( - f"The dtype of id columns must be integer. Aggregation function {agg_func} " - f"was applied to a id columns that has dtype {p_id_to_aggregate_by.dtype}.", - ) - - -def fail_if_dtype_not_numeric_or_boolean( - column: FloatColumn | IntColumn | BoolColumn, - agg_func: str, -) -> None: - if not (numpy.issubdtype(column.dtype, numpy.number) or column.dtype == "bool"): - raise TypeError( - f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only numerical or Boolean dtypes.", - ) - - -def fail_if_dtype_not_numeric_or_datetime( - column: FloatColumn | IntColumn | BoolColumn, - agg_func: str, -) -> None: - if not ( - numpy.issubdtype(column.dtype, numpy.number) - or numpy.issubdtype(column.dtype, numpy.datetime64) - ): - raise TypeError( - f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only numerical or datetime dtypes.", - ) - - -def fail_if_dtype_not_boolean_or_int( - column: BoolColumn | IntColumn, - agg_func: str, -) -> None: - if not ( - numpy.issubdtype(column.dtype, numpy.integer) - or numpy.issubdtype(column.dtype, numpy.bool_) - ): - raise TypeError( - f"Aggregation function {agg_func} was applied to a column with dtype " - f"{column.dtype}. Allowed are only Boolean and int dtypes.", - ) diff --git a/src/ttsim/tt_dag_elements/column_objects_param_function.py b/src/ttsim/tt_dag_elements/column_objects_param_function.py deleted file mode 100644 index c5321aa8c2..0000000000 --- a/src/ttsim/tt_dag_elements/column_objects_param_function.py +++ /dev/null @@ -1,943 +0,0 @@ -from __future__ import annotations - -import datetime -import functools -import inspect -from dataclasses import dataclass -from enum import StrEnum -from typing import TYPE_CHECKING, Any, Generic, Literal, ParamSpec, TypeVar - -import dags.tree as dt -from dags import rename_arguments - -from ttsim.interface_dag_elements.shared import to_datetime -from ttsim.tt_dag_elements.aggregation import ( - AggType, - all_by_p_id, - any_by_p_id, - count_by_p_id, - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, - max_by_p_id, - mean_by_p_id, - min_by_p_id, - sum_by_p_id, -) -from ttsim.tt_dag_elements.rounding import RoundingSpec -from ttsim.tt_dag_elements.vectorization import vectorize_function - -if TYPE_CHECKING: - from collections.abc import Callable - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - DashedISOString, - IntColumn, - UnorderedQNames, - ) - -FunArgTypes = ParamSpec("FunArgTypes") -ReturnType = TypeVar("ReturnType") - -DEFAULT_START_DATE = datetime.date(1900, 1, 1) -DEFAULT_END_DATE = datetime.date(2099, 12, 31) - - -class FKType(StrEnum): - """ - Enum for foreign key types. - """ - - IRRELEVANT = "irrelevant" - MAY_POINT_TO_SELF = "may point to self" - MUST_NOT_POINT_TO_SELF = "must not point to self" - - -@dataclass(frozen=True) -class ColumnObject: - """Base class for all objects operating on columns of data. - - Examples - -------- - - PolicyInputs - - PolicyFunctions - - GroupCreationFunctions - - AggByGroupFunctions - - AggByPIDFunctions - - TimeConversionFunctions - - Parameters are not ColumnObjectParamFunctions. - - """ - - leaf_name: str - start_date: datetime.date - end_date: datetime.date - description: str - - def is_active(self, policy_date: datetime.date) -> bool: - """Check if the function is active at a given date.""" - return self.start_date <= policy_date <= self.end_date - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> ColumnObject: - """Remove tree logic from the function and update the function signature.""" - raise NotImplementedError("Subclasses must implement this method.") - - -@dataclass(frozen=True) -class PolicyInput(ColumnObject): - """ - A dummy function representing an input variable. - - Parameters - ---------- - data_type: - The data type of the input variable. - start_date: - The date from which the input is relevant / active (inclusive). - end_date: - The date until which the input is relevant / active (inclusive). - foreign_key_type: - Whether this is a foreign key and, if so, whether it may point to itself. - """ - - data_type: type[float | int | bool] - foreign_key_type: FKType = FKType.IRRELEVANT - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], # noqa: ARG002 - top_level_namespace: UnorderedQNames, # noqa: ARG002 - ) -> PolicyInput: - return self - - -def policy_input( - *, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - foreign_key_type: FKType = FKType.IRRELEVANT, -) -> Callable[[Callable[..., Any]], PolicyInput]: - """ - Decorator that makes a (dummy) function a `PolicyInput`. - - **Dates active (start_date, end_date):** - - Specifies that a PolicyInput is only active between two dates, `start` and `end`. - - **Rounding spec (params_key_for_rounding):** - - Adds the location of the rounding specification to a PolicyInput. - - Parameters - ---------- - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - - Returns - ------- - A decorator that returns a PolicyInput object. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def inner(func: Callable[..., Any]) -> PolicyInput: - return PolicyInput( - leaf_name=func.__name__, - data_type=func.__annotations__["return"], - start_date=start_date, - end_date=end_date, - foreign_key_type=foreign_key_type, - description=str(inspect.getdoc(func)), - ) - - return inner - - -def _frozen_safe_update_wrapper(wrapper: object, wrapped: Callable[..., Any]) -> None: - """Update a frozen wrapper dataclass to look like the wrapped function. - - This is necessary because the wrapper is a frozen dataclass, so we cannot - use the `functools.update_wrapper` function or `self.__signature__ = ...` - assignments in the `__post_init__` method. - - Args: - wrapper: The wrapper dataclass to update. - wrapped: The function to update the wrapper to. - - """ - object.__setattr__(wrapper, "__signature__", inspect.signature(wrapped)) - - WRAPPER_ASSIGNMENTS = ( # noqa: N806 - "__globals__", - "__closure__", - "__code__", - "__doc__", - "__name__", - "__QName__", - "__module__", - "__annotations__", - "__type_params__", - ) - for attr in WRAPPER_ASSIGNMENTS: - if hasattr(wrapped, attr): - object.__setattr__(wrapper, attr, getattr(wrapped, attr)) - - getattr(wrapper, "__dict__", {}).update(getattr(wrapped, "__dict__", {})) - - -@dataclass(frozen=True) -class ColumnFunction(ColumnObject, Generic[FunArgTypes, ReturnType]): - """ - Base class for all functions operating on columns of data. - """ - - function: Callable[FunArgTypes, ReturnType] - rounding_spec: RoundingSpec | None = None - foreign_key_type: FKType = FKType.IRRELEVANT - - def __post_init__(self) -> None: - _fail_if_rounding_has_wrong_type(self.rounding_spec) - # Expose the signature of the wrapped function for dependency resolution - _frozen_safe_update_wrapper(self, self.function) - - def __call__( - self, - *args: FunArgTypes.args, - **kwargs: FunArgTypes.kwargs, - ) -> ReturnType: - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> UnorderedQNames: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - @property - def original_function_name(self) -> str: - """The name of the wrapped function.""" - return self.function.__name__ - - def is_active(self, policy_date: datetime.date) -> bool: - """Check if the function is active at a given date.""" - return self.start_date <= policy_date <= self.end_date - - -def _fail_if_rounding_has_wrong_type(rounding_spec: RoundingSpec | None) -> None: - """Check if rounding_spec has the correct type. - - Parameters - ---------- - rounding_spec - The rounding specification to check. - - Raises - ------ - TypeError - If rounding_spec is not a RoundingSpec or None. - """ - if not isinstance(rounding_spec, RoundingSpec | None): - raise TypeError( - f"`rounding_spec` must be a `RoundingSpec` or `None`, got {rounding_spec}" - ) - - -@dataclass(frozen=True) -class PolicyFunction(ColumnFunction): # type: ignore[type-arg] - """ - Computes a column based on at least one input column and/or parameters. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function that is called when the PolicyFunction is evaluated. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - rounding_spec: - The rounding specification. - """ - - vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize" - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> PolicyFunction: - """Remove tree logic from the function and update the function signature.""" - - function_without_tree_logic = dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ) - # All functions that will be vectorized require the globals attribute to be - # the same as for the initially defined function, since otherwise global - # variables or imported functions cannot be found after vectorization. - # This is not done by dt.one_function_without_tree_logic, so we do it here. - function_without_tree_logic.__globals__.update(self.function.__globals__) - - return PolicyFunction( - leaf_name=self.leaf_name, - function=function_without_tree_logic, - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - vectorization_strategy=self.vectorization_strategy, - ) - - def vectorize(self, backend: str, xnp: ModuleType) -> PolicyFunction: - func = ( - self.function - if self.vectorization_strategy == "not_required" - else vectorize_function( - self.function, - vectorization_strategy=self.vectorization_strategy, - backend=backend, - xnp=xnp, - ) - ) - return PolicyFunction( - leaf_name=self.leaf_name, - function=func, - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - vectorization_strategy="not_required", - ) - - -def policy_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - rounding_spec: RoundingSpec | None = None, - vectorization_strategy: Literal["loop", "vectorize", "not_required"] = "vectorize", - foreign_key_type: FKType = FKType.IRRELEVANT, -) -> Callable[[Callable[..., Any]], PolicyFunction]: - """ - Decorator that makes a `PolicyFunction` from a function. - - PolicyFunctions are typically defined on scalars, but work on data columns (i.e., - arrays of the same length as `p_id`). TTSIM will handle this (see - `vectorization_strategy` below). Use `param_function` / `ParamFunction` for - functions that convert the parameters of the taxes and transfers system, which do - not require any columns from the data. - - Parameters - ---------- - leaf_name - The name that should be used as the PolicyFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - rounding_spec - The specification to be used for rounding. - vectorization_strategy: - Whether and how the function should be vectorized. Typically, functions will be - defined on scalars and will be vectorized by TTSIM. Stick to the default of - 'vectorize'. Exceptions: 'loop' for constructs that cannot be vectorized by - numpy or jax; 'not_required' if the function works natively with arrays (e.g., - joining two columns). - foreign_key_type: - Whether this is a foreign key and, if so, whether it may point to itself. - - Returns - ------- - A decorator that returns a PolicyFunction object. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def inner(func: Callable[..., Any]) -> PolicyFunction: - return PolicyFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - start_date=start_date, - end_date=end_date, - description=str(inspect.getdoc(func)), - rounding_spec=rounding_spec, - foreign_key_type=foreign_key_type, - vectorization_strategy=vectorization_strategy, - ) - - return inner - - -def reorder_ids(ids: IntColumn, xnp: ModuleType) -> IntColumn: - """Make ID's consecutively numbered. - - Takes the given IDs and replaces them by consecutive numbers - starting at 0. - - [43,44,70,50] -> [0,1,3,2] - - """ - sorting = xnp.argsort(ids) - ids_sorted = ids[sorting] - index_after_sort = xnp.arange(ids.shape[0])[sorting] - - # Look for difference from previous entry in sorted array - diff_to_prev = xnp.where(xnp.diff(ids_sorted) >= 1, 1, 0) - - # Sum up all differences to get new id - consecutive_ids = xnp.concatenate((xnp.asarray([0]), xnp.cumsum(diff_to_prev))) - - return consecutive_ids[xnp.argsort(index_after_sort)] - - -@dataclass(frozen=True) -class GroupCreationFunction(ColumnFunction): # type: ignore[type-arg] - """ - A function that computes endogenous group_by IDs. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function calculating the group_by IDs. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - """ - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> GroupCreationFunction: - """Remove tree logic from the function and update the function signature.""" - return GroupCreationFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - ) - - -def group_creation_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - reorder: bool = True, -) -> Callable[[Callable[..., Any]], GroupCreationFunction]: - """ - Decorator that creates a group_by function from a function. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - reorder: - Whether the created Group ID's should be reordered to be - consecutively numbered starting from 0. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def decorator(func: Callable[..., Any]) -> GroupCreationFunction: - _leaf_name = func.__name__ if leaf_name is None else leaf_name - func_with_reorder = lambda **kwargs: reorder_ids( # noqa: E731 - ids=func(**kwargs), - xnp=kwargs["xnp"], - ) - functools.update_wrapper(func_with_reorder, func) - - return GroupCreationFunction( - leaf_name=_leaf_name, - function=func_with_reorder if reorder else func, - start_date=start_date, - end_date=end_date, - description=str(inspect.getdoc(func)), - ) - - return decorator - - -@dataclass(frozen=True) -class AggByGroupFunction(ColumnFunction): # type: ignore[type-arg] - """ - A function that is an aggregation of another column by some group id. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function performing the aggregation. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - params_key_for_rounding: - The key in the params dictionary that should be used for rounding. - skip_vectorization: - Whether the function should be vectorized. - orig_location: - The original location of the function, or "automatically generated". - """ - - # Default value is necessary because we have defaults in the superclass. - orig_location: str = "automatically generated" - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> AggByGroupFunction: - """Remove tree logic from the function and update the function signature.""" - return AggByGroupFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - orig_location=self.orig_location, - ) - - -def agg_by_group_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - agg_type: AggType, -) -> Callable[[Callable[..., Any]], AggByGroupFunction]: - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - agg_registry = { - AggType.SUM: grouped_sum, - AggType.MEAN: grouped_mean, - AggType.MAX: grouped_max, - AggType.MIN: grouped_min, - AggType.ANY: grouped_any, - AggType.ALL: grouped_all, - AggType.COUNT: grouped_count, - } - - def inner(func: Callable[..., Any]) -> AggByGroupFunction: - orig_location = f"{func.__module__}.{func.__name__}" - args = set(inspect.signature(func).parameters) - group_ids = {p for p in args if p.endswith("_id")} - _fail_if_group_id_is_invalid(group_ids, orig_location) - group_id = group_ids.pop() - other_args = args - {group_id, "num_segments", "backend"} - if agg_type == AggType.COUNT: - _fail_if_other_arg_is_present(other_args, orig_location) - mapper = {"group_id": group_id} - else: - _fail_if_other_arg_is_invalid(other_args, orig_location) - mapper = {"group_id": group_id, "column": other_args.pop()} - agg_func = rename_arguments( - func=agg_registry[agg_type], - mapper=mapper, - ) - return AggByGroupFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=agg_func, - start_date=start_date, - end_date=end_date, - description=str(inspect.getdoc(func)), - foreign_key_type=FKType.IRRELEVANT, - orig_location=f"{func.__module__}.{func.__name__}", - ) - - return inner - - -def _fail_if_group_id_is_invalid( - group_ids: UnorderedQNames, - orig_location: str, -) -> None: - if len(group_ids) != 1: - raise ValueError( - "Require exactly one group identifier ending with '_id' for " - "aggregation by group. Got " - f"{', '.join(group_ids) if group_ids else 'nothing'} in {orig_location}.", - ) - - -def _fail_if_other_arg_is_present( - other_args: UnorderedQNames, - orig_location: str, -) -> None: - if other_args: - raise ValueError( - "There must be no argument besides identifiers for counting. Got: " - f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}.", - ) - - -def _fail_if_other_arg_is_invalid( - other_args: UnorderedQNames, - orig_location: str, -) -> None: - if len(other_args) != 1: - raise ValueError( - "There must be exactly one argument besides identifiers, num_segments, and " - "backend for aggregations. Got: " - f"{', '.join(other_args) if other_args else 'nothing'} in {orig_location}.", - ) - - -@dataclass(frozen=True) -class AggByPIDFunction(ColumnFunction): # type: ignore[type-arg] - """ - A function that is an aggregation of another column by some group id. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function performing the aggregation. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - params_key_for_rounding: - The key in the params dictionary that should be used for rounding. - skip_vectorization: - Whether the function should be vectorized. - orig_location: - The original location of the function, or "automatically generated". - """ - - # Default value is necessary because we have defaults in the superclass. - orig_location: str = "automatically generated" - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> AggByGroupFunction: - """Remove tree logic from the function and update the function signature.""" - return AggByGroupFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - orig_location=self.orig_location, - ) - - -def agg_by_p_id_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, - agg_type: AggType, -) -> Callable[[Callable[..., Any]], AggByPIDFunction]: - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - agg_registry = { - AggType.SUM: sum_by_p_id, - AggType.MEAN: mean_by_p_id, - AggType.MAX: max_by_p_id, - AggType.MIN: min_by_p_id, - AggType.ANY: any_by_p_id, - AggType.ALL: all_by_p_id, - AggType.COUNT: count_by_p_id, - } - - def inner(func: Callable[..., Any]) -> AggByPIDFunction: - orig_location = f"{func.__module__}.{func.__name__}" - args = set(inspect.signature(func).parameters) - other_p_ids = { - p - for p in args - if any(e.startswith("p_id_") for e in dt.tree_path_from_qname(p)) - } - other_args = args - {*other_p_ids, "p_id", "num_segments", "backend"} - _fail_if_p_id_is_not_present(args, orig_location) - _fail_if_other_p_id_is_invalid(other_p_ids, orig_location) - if agg_type == AggType.COUNT: - _fail_if_other_arg_is_present(other_args, orig_location) - mapper = { - "p_id_to_aggregate_by": other_p_ids.pop(), - "p_id_to_store_by": "p_id", - "num_segments": "num_segments", - "backend": "backend", - } - else: - _fail_if_other_arg_is_invalid(other_args, orig_location) - mapper = { - "column": other_args.pop(), - "p_id_to_aggregate_by": other_p_ids.pop(), - "p_id_to_store_by": "p_id", - "num_segments": "num_segments", - "backend": "backend", - } - agg_func = rename_arguments( - func=agg_registry[agg_type], - mapper=mapper, - ) - return AggByPIDFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=agg_func, - start_date=start_date, - end_date=end_date, - description=str(inspect.getdoc(func)), - foreign_key_type=FKType.IRRELEVANT, - orig_location=f"{func.__module__}.{func.__name__}", - ) - - return inner - - -def _fail_if_p_id_is_not_present(args: UnorderedQNames, orig_location: str) -> None: - if "p_id" not in args: - raise ValueError( - "The function must have the argument named 'p_id' for aggregation by p_id. " - f"Got {', '.join(args) if args else 'nothing'} in {orig_location}.", - ) - - -def _fail_if_other_p_id_is_invalid( - other_p_ids: UnorderedQNames, - orig_location: str, -) -> None: - if len(other_p_ids) != 1: - raise ValueError( - "Require exactly one identifier starting with 'p_id_' for " - "aggregation by p_id. Got: " - f"{', '.join(other_p_ids) if other_p_ids else 'nothing'} in {orig_location}.", # noqa: E501 - ) - - -@dataclass(frozen=True) -class TimeConversionFunction(ColumnFunction): # type: ignore[type-arg] - """ - A function that is a time conversion of another function. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the functions tree. - function: - The function performing the time conversion. - source: - The name of the source function or data column. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - """ - - source: str | None = None - - def __post_init__(self) -> None: - if self.source is None: - raise ValueError("The source must be specified.") - super().__post_init__() - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> TimeConversionFunction: - """Remove tree logic from the function and update the function signature.""" - return TimeConversionFunction( - source=self.source, - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - rounding_spec=self.rounding_spec, - foreign_key_type=self.foreign_key_type, - ) - - -def _convert_and_validate_dates( - start_date: datetime.date | DashedISOString, - end_date: datetime.date | DashedISOString, -) -> tuple[datetime.date, datetime.date]: - """Convert and validate date strings to datetime.date objects. - - Parameters - ---------- - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - - Returns - ------- - tuple[datetime.date, datetime.date] - The converted and validated start and end dates. - """ - start_date = to_datetime(start_date) - end_date = to_datetime(end_date) - - if start_date > end_date: - raise ValueError( - f"The start date {start_date} must be before the end date {end_date}.", - ) - - return start_date, end_date - - -@dataclass(frozen=True) -class ParamFunction(Generic[FunArgTypes, ReturnType]): - """ - Compute a scalar or custom object from parameters of the taxes and transfers system. - - Parameters - ---------- - leaf_name: - The leaf name of the function in the objects tree. - start_date: - The date from which the function is active (inclusive). - end_date: - The date until which the function is active (inclusive). - function: - The function that is called when the ParamFunction is evaluated. - """ - - leaf_name: str - start_date: datetime.date - end_date: datetime.date - function: Callable[FunArgTypes, ReturnType] - description: str - - def __post_init__(self) -> None: - # Expose the signature of the wrapped function for dependency resolution - _frozen_safe_update_wrapper(self, self.function) - - def __call__( - self, - *args: FunArgTypes.args, - **kwargs: FunArgTypes.kwargs, - ) -> ReturnType: - return self.function(*args, **kwargs) - - @property - def dependencies(self) -> UnorderedQNames: - """The names of input variables that the function depends on.""" - return set(inspect.signature(self).parameters) - - @property - def original_function_name(self) -> str: - """The name of the wrapped function.""" - return self.function.__name__ - - def is_active(self, policy_date: datetime.date) -> bool: - """Check if the function is active at a given date.""" - return self.start_date <= policy_date <= self.end_date - - def remove_tree_logic( - self, - tree_path: tuple[str, ...], - top_level_namespace: UnorderedQNames, - ) -> ParamFunction: # type: ignore[type-arg] - """Remove tree logic from the function and update the function signature.""" - return ParamFunction( - leaf_name=self.leaf_name, - function=dt.one_function_without_tree_logic( - function=self.function, - tree_path=tree_path, - top_level_namespace=top_level_namespace, - ), - start_date=self.start_date, - end_date=self.end_date, - description=self.description, - ) - - -# Never returns a column, require precise annotation -def param_function( - *, - leaf_name: str | None = None, - start_date: str | datetime.date = DEFAULT_START_DATE, - end_date: str | datetime.date = DEFAULT_END_DATE, -) -> Callable[[Callable[..., Any]], ParamFunction[..., Any]]: - """ - Decorator that makes a `ParamFunction` from a function. - - ParamFunctions convert complex parameters (i.e., anything that is not a scalar, a - flat homogenous dictionary, or a set of parameters of a piecewise polynomial - function) to custom representations. They must not use any data columns (i.e., - arrays of the same length as `p_id`). Use `policy_function` / `PolicyFunction` for - functions that operate on data columns. - - As a consequence, the arguments of the decorated function must be found in the - params tree. They are typically defined as outermost keys in the yaml files with - parameters of the taxes and transfers system. - - Parameters - ---------- - leaf_name - The name that should be used as the ParamFunction's leaf name in the DAG. If - omitted, we use the name of the function as defined. - start_date - The start date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - end_date - The end date (inclusive) in the format YYYY-MM-DD (part of ISO 8601). - - Returns - ------- - A decorator that returns a ParamFunction object. - """ - start_date, end_date = _convert_and_validate_dates(start_date, end_date) - - def inner(func: Callable[..., Any]) -> ParamFunction: # type: ignore[type-arg] - return ParamFunction( - leaf_name=leaf_name if leaf_name else func.__name__, - function=func, - start_date=start_date, - end_date=end_date, - description=str(inspect.getdoc(func)), - ) - - return inner diff --git a/src/ttsim/tt_dag_elements/param_objects.py b/src/ttsim/tt_dag_elements/param_objects.py deleted file mode 100644 index 00f0e306ec..0000000000 --- a/src/ttsim/tt_dag_elements/param_objects.py +++ /dev/null @@ -1,346 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass, field -from typing import TYPE_CHECKING, Any, Literal - -PLACEHOLDER_VALUE = object() -PLACEHOLDER_FIELD = field(default_factory=lambda: PLACEHOLDER_VALUE) - -if TYPE_CHECKING: - import datetime - from types import ModuleType - - from jaxtyping import Array, Bool, Float, Int - - from ttsim.tt_dag_elements.typing import NestedLookupDict - - -@dataclass(frozen=True) -class ParamObject: - """ - Abstract base class for all types of parameters. - """ - - leaf_name: str | None = None - start_date: datetime.date | None = None - end_date: datetime.date | None = None - unit: ( - None - | Literal[ - "Euros", - "DM", - "Share", - "Percent", - "Years", - "Months", - "Hours", - "Square Meters", - "Euros / Square Meter", - ] - ) = None - reference_period: None | Literal["Year", "Quarter", "Month", "Week", "Day"] = None - name: dict[Literal["de", "en"], str] | None = None - description: dict[Literal["de", "en"], str] | None = None - - def __post_init__(self) -> None: - if self.value is PLACEHOLDER_VALUE: # type: ignore[attr-defined] - raise ValueError( - "'value' field must be specified for any type of 'ParamObject'" - ) - - -@dataclass(frozen=True) -class ScalarParam(ParamObject): - """ - A scalar parameter directly read from a YAML file. - """ - - value: bool | int | float = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class DictParam(ParamObject): - """ - A parameter directly read from a YAML file that is a flat dictionary. - """ - - value: ( - dict[str, int] - | dict[str, float] - | dict[str, bool] - | dict[int, int] - | dict[int, float] - | dict[int, bool] - ) = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None - - def __post_init__(self) -> None: - super().__post_init__() - if any(x in self.value for x in ["note", "reference"]): - raise ValueError( - "'note' and 'reference' cannot be keys in the value dictionary" - ) - - -@dataclass(frozen=True) -class PiecewisePolynomialParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. - - Its value is a PiecewisePolynomialParamValue object, i.e., it contains the - parameters for calling `piecewise_polynomial`. - """ - - value: PiecewisePolynomialParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None - - -@dataclass(frozen=True) -class ConsecutiveIntLookupTableParam(ParamObject): - """A parameter with its contents read and converted from a YAML file. - - Its value is a ConsecutiveIntLookupTableParamValue object, i.e., it contains the - parameters for calling `lookup_table`. - """ - - value: ConsecutiveIntLookupTableParamValue = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None - - -class ConsecutiveIntLookupTableParamValue: - """The `value` for ConsecutiveIntLookupTable.""" - - __slots__ = ( - "bases_to_subtract", - "lookup_multipliers", - "values_to_look_up", - "xnp", - ) - - bases_to_subtract: Int[Array, "n_rows n_cols"] - lookup_multipliers: Int[Array, "n_rows n_cols"] - values_to_look_up: ( - Float[Array, "n_rows n_cols"] - | Int[Array, "n_rows n_cols"] - | Bool[Array, "n_rows n_cols"] - ) - xnp: ModuleType - - def __init__( - self, - xnp: ModuleType, - values_to_look_up: Float[Array, "n_rows n_cols"] - | Int[Array, "n_rows n_cols"] - | Bool[Array, "n_rows n_cols"], - bases_to_subtract: Int[Array, "n_rows n_cols"], - ) -> None: - self.xnp = xnp - self.values_to_look_up = values_to_look_up.flatten() - self.bases_to_subtract = xnp.expand_dims(bases_to_subtract, axis=1) - self.lookup_multipliers = xnp.concatenate( - [ - (xnp.cumprod(xnp.asarray(values_to_look_up.shape)[::-1])[::-1])[1:], - xnp.asarray([1]), - ] - ) - - def look_up( - self: ConsecutiveIntLookupTableParamValue, *args: int - ) -> float | int | bool: - index = self.xnp.asarray(args) - corrected_index = self.xnp.dot( - (index - self.bases_to_subtract).T, self.lookup_multipliers - ) - return self.values_to_look_up[corrected_index] - - -@dataclass(frozen=True) -class RawParam(ParamObject): - """ - A parameter directly read from a YAML file that is an arbitrarily nested - dictionary. - """ - - value: dict[str | int, Any] = PLACEHOLDER_FIELD # type: ignore[assignment] - note: str | None = None - reference: str | None = None - - def __post_init__(self) -> None: - super().__post_init__() - if any(x in self.value for x in ["note", "reference"]): - raise ValueError( - "'note' and 'reference' cannot be keys in the value dictionary" - ) - - -@dataclass(frozen=True) -class PiecewisePolynomialParamValue: - """The parameters expected by `piecewise_polynomial`. - - thresholds: - Thresholds defining the pieces / different segments on the real line. - intercepts: - Intercepts of the polynomial on each segment. - rates: - Slope and higher-order coefficients of the polynomial on each segment. - """ - - thresholds: Float[Array, " n_segments"] - intercepts: Float[Array, " n_segments"] - rates: Float[Array, " n_segments"] - - -def get_consecutive_int_lookup_table_param_value( - raw: NestedLookupDict, - xnp: ModuleType, -) -> ConsecutiveIntLookupTableParamValue: - """Get the parameters for a N-dimensional lookup table.""" - bases_to_substract = {} - - # Function is recursive to step through all levels of dict - def process_level( - i: int, level_i_dict: NestedLookupDict - ) -> Float[Array, "n_rows n_cols"]: - sorted_keys = sorted(level_i_dict.keys()) - bases_to_substract[i] = min(xnp.asarray(sorted_keys)) - if isinstance(level_i_dict[sorted_keys[0]], dict): - return xnp.concatenate( - [ - xnp.expand_dims(process_level(i + 1, level_i_dict[key]), axis=0) - for key in level_i_dict - ] - ) - return xnp.asarray([level_i_dict[k] for k in sorted_keys]) - - values = process_level(0, raw) - return ConsecutiveIntLookupTableParamValue( - xnp=xnp, - values_to_look_up=values, - bases_to_subtract=xnp.asarray( - [bases_to_substract[key] for key in sorted(bases_to_substract.keys())] - ), - ) - - -def _year_fraction(r: dict[Literal["years", "months"], int]) -> float: - return r["years"] + r["months"] / 12 - - -def get_month_based_phase_inout_of_age_thresholds_param_value( - raw: dict[str | int, Any], - xnp: ModuleType, -) -> ConsecutiveIntLookupTableParamValue: - """Get the parameters for month-based phase-in/phase-out of age thresholds. - - Fills up months for which no parameters are given with the last given value. - """ - - def _m_since_ad(y: int, m: int) -> int: - return y * 12 + (m - 1) - - def _fill_phase_inout( - raw: dict[int, dict[int, dict[Literal["years", "months"], int]]], - first_m_since_ad_phase_inout: int, - last_m_since_ad_phase_inout: int, - ) -> dict[int, float]: - lookup_table = {} - for y, m_dict in raw.items(): - for m, v in m_dict.items(): - lookup_table[_m_since_ad(y=y, m=m)] = _year_fraction(v) - for m in range(first_m_since_ad_phase_inout, last_m_since_ad_phase_inout): - if m not in lookup_table: - lookup_table[m] = lookup_table[m - 1] - return lookup_table - - first_m_since_ad_to_consider = _m_since_ad(y=raw.pop("first_year_to_consider"), m=1) - last_m_since_ad_to_consider = _m_since_ad(y=raw.pop("last_year_to_consider"), m=12) - if not all(isinstance(k, int) for k in raw): - raise ValueError("All keys must be integers") - first_year_phase_inout: int = min(raw.keys()) # type: ignore[assignment] - first_month_phase_inout: int = min(raw[first_year_phase_inout].keys()) - first_m_since_ad_phase_inout = _m_since_ad( - y=first_year_phase_inout, - m=first_month_phase_inout, - ) - last_year_phase_inout: int = max(raw.keys()) # type: ignore[assignment] - last_month_phase_inout: int = max(raw[last_year_phase_inout].keys()) - last_m_since_ad_phase_inout = _m_since_ad( - y=last_year_phase_inout, - m=last_month_phase_inout, - ) - if first_m_since_ad_to_consider > first_m_since_ad_phase_inout: - raise ValueError( - "`first_m_since_ad_to_consider` must be less than or equal to " - "`first_m_since_ad_phase_inout`." - ) - if last_m_since_ad_to_consider < last_m_since_ad_phase_inout: - raise ValueError( - "`last_m_since_ad_to_consider` must be greater than or equal to " - "`last_m_since_ad_phase_inout`." - ) - before_phase_inout: dict[int, float] = { - b_m: _year_fraction(raw[first_year_phase_inout][first_month_phase_inout]) - for b_m in range(first_m_since_ad_to_consider, first_m_since_ad_phase_inout) - } - during_phase_inout: dict[int, float] = _fill_phase_inout( - raw=raw, # type: ignore[arg-type] - first_m_since_ad_phase_inout=first_m_since_ad_phase_inout, - last_m_since_ad_phase_inout=last_m_since_ad_phase_inout, - ) - after_phase_inout: dict[int, float] = { - b_m: _year_fraction(raw[last_year_phase_inout][last_month_phase_inout]) - for b_m in range( - last_m_since_ad_phase_inout + 1, - last_m_since_ad_to_consider + 1, - ) - } - return get_consecutive_int_lookup_table_param_value( - raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, - xnp=xnp, - ) - - -def get_year_based_phase_inout_of_age_thresholds_param_value( - raw: dict[str | int, Any], - xnp: ModuleType, -) -> ConsecutiveIntLookupTableParamValue: - """Get the parameters for year-based phase-in/phase-out of age thresholds. - - Requires all years to be given. - """ - first_year_to_consider = raw.pop("first_year_to_consider") - last_year_to_consider = raw.pop("last_year_to_consider") - if not all(isinstance(k, int) for k in raw): - raise ValueError("All keys must be integers") - first_year_phase_inout: int = sorted(raw)[0] # type: ignore[assignment] - last_year_phase_inout: int = sorted(raw)[-1] # type: ignore[assignment] - if first_year_to_consider > first_year_phase_inout: - raise ValueError( - "`first_year_to_consider` must be less than or equal to " - "`first_year_phase_inout`." - ) - if last_year_to_consider < last_year_phase_inout: - raise ValueError( - "`last_year_to_consider` must be greater than or equal to " - "`last_year_phase_inout`." - ) - before_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[first_year_phase_inout]) - for b_y in range(first_year_to_consider, first_year_phase_inout) - } - during_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[b_y]) # type: ignore[misc] - for b_y in raw - } - after_phase_inout: dict[int, float] = { - b_y: _year_fraction(raw[last_year_phase_inout]) - for b_y in range(last_year_phase_inout + 1, last_year_to_consider + 1) - } - return get_consecutive_int_lookup_table_param_value( - raw={**before_phase_inout, **during_phase_inout, **after_phase_inout}, - xnp=xnp, - ) diff --git a/src/ttsim/tt_dag_elements/piecewise_polynomial.py b/src/ttsim/tt_dag_elements/piecewise_polynomial.py deleted file mode 100644 index 879d594c7e..0000000000 --- a/src/ttsim/tt_dag_elements/piecewise_polynomial.py +++ /dev/null @@ -1,410 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING, Literal, get_args - -import numpy - -from ttsim.tt_dag_elements.param_objects import PiecewisePolynomialParamValue - -if TYPE_CHECKING: - from types import ModuleType - - from jaxtyping import Array, Float - -FUNC_TYPES = Literal[ - "piecewise_constant", - "piecewise_linear", - "piecewise_quadratic", - "piecewise_cubic", -] - - -@dataclass(frozen=True) -class RatesOptions: - required_keys: tuple[Literal["rate_linear", "rate_quadratic", "rate_cubic"], ...] - rates_size: int - - -OPTIONS_REGISTRY = { - "piecewise_constant": RatesOptions( - required_keys=(), - rates_size=1, - ), - "piecewise_linear": RatesOptions( - required_keys=("rate_linear",), - rates_size=1, - ), - "piecewise_quadratic": RatesOptions( - required_keys=("rate_linear", "rate_quadratic"), - rates_size=2, - ), - "piecewise_cubic": RatesOptions( - required_keys=("rate_linear", "rate_quadratic", "rate_cubic"), - rates_size=3, - ), -} - -if set(OPTIONS_REGISTRY.keys()) != set(get_args(FUNC_TYPES)): - raise ValueError("Keys in OPTIONS_REGISTRY must match FUNC_TYPES") - - -def piecewise_polynomial( - x: Float[Array, " n_pp_values"], - parameters: PiecewisePolynomialParamValue, - xnp: ModuleType, - rates_multiplier: Float[Array, " n_segments"] | float = 1.0, -) -> Float[Array, " n_pp_values"]: - """Calculate value of the piecewise function at `x`. If the first interval begins - at -inf the polynomial of that interval can only have slope of 0. Requesting a - value outside of the provided thresholds will lead to undefined behaviour. - - Parameters - ---------- - x: - Array with values at which the piecewise polynomial is to be calculated. - parameters: - Thresholds defining the pieces and coefficients on each piece. - xnp: - The backend module to use for calculations. - rates_multiplier: - Multiplier to create individual or scaled rates. - - Returns - ------- - out: - The value of `x` under the piecewise function. - - """ - order = parameters.rates.shape[0] - # Get interval of requested value - selected_bin = xnp.searchsorted(parameters.thresholds, x, side="right") - 1 - coefficients = parameters.rates[:, selected_bin].T - # Calculate distance from x to lower threshold - increment_to_calc = xnp.where( - parameters.thresholds[selected_bin] == -xnp.inf, - 0, - x - parameters.thresholds[selected_bin], - ) - # Evaluate polynomial at x - return rates_multiplier * ( - parameters.intercepts[selected_bin] - + ( - ((increment_to_calc.reshape(-1, 1)) ** xnp.arange(1, order + 1, 1)) - * (coefficients) - ).sum(axis=1) - ) - - -def get_piecewise_parameters( - leaf_name: str, - func_type: FUNC_TYPES, - parameter_dict: dict[int, dict[str, float]], - xnp: ModuleType, -) -> PiecewisePolynomialParamValue: - """Create the objects for piecewise polynomial. - - Parameters - ---------- - parameter_dict - leaf_name - func_type - - Returns - ------- - - """ - # Check if keys are consecutive numbers and starting at 0. - if sorted(parameter_dict) != list(range(len(parameter_dict))): - raise ValueError( - f"The keys of {leaf_name} do not start with 0 or are not consecutive" - f" numbers.", - ) - - # Extract lower thresholds. - lower_thresholds, upper_thresholds, thresholds = check_and_get_thresholds( - leaf_name=leaf_name, - parameter_dict=parameter_dict, - xnp=xnp, - ) - - # Create and fill rates-array - rates = _check_and_get_rates( - parameter_dict=parameter_dict, - leaf_name=leaf_name, - func_type=func_type, - xnp=xnp, - ) - # Create and fill intercept-array - intercepts = _check_and_get_intercepts( - parameter_dict=parameter_dict, - leaf_name=leaf_name, - lower_thresholds=lower_thresholds, - upper_thresholds=upper_thresholds, - rates=rates, - xnp=xnp, - ) - return PiecewisePolynomialParamValue( - thresholds=thresholds, - rates=rates, - intercepts=intercepts, - ) - - -def check_and_get_thresholds( # noqa: C901 - leaf_name: str, - parameter_dict: dict[int, dict[str, float]], - xnp: ModuleType, -) -> tuple[ - Float[Array, " n_segments"], - Float[Array, " n_segments"], - Float[Array, " n_segments"], -]: - """Check and transfer raw threshold data. - - Transfer and check raw threshold data, which needs to be specified in a - piecewise_polynomial layout in the yaml file. - - Parameters - ---------- - parameter_dict - leaf_name - keys - xnp : ModuleType - The numpy module to use for calculations. - - Returns - ------- - - """ - keys = sorted(parameter_dict.keys()) - lower_thresholds = numpy.zeros(len(parameter_dict)) - upper_thresholds = numpy.zeros(len(parameter_dict)) - - # Check if lowest threshold exists. - if "lower_threshold" not in parameter_dict[0]: - raise ValueError( - f"The first piece of {leaf_name} needs to contain a lower_threshold value.", - ) - lower_thresholds[0] = parameter_dict[0]["lower_threshold"] - - # Check if highest upper_threshold exists. - if "upper_threshold" not in parameter_dict[keys[-1]]: - raise ValueError( - f"The last piece of {leaf_name} needs to contain an upper_threshold value.", - ) - upper_thresholds[keys[-1]] = parameter_dict[keys[-1]]["upper_threshold"] - - # Check if the function is defined on the complete real line - if (upper_thresholds[keys[-1]] != numpy.inf) | (lower_thresholds[0] != -numpy.inf): - raise ValueError(f"{leaf_name} needs to be defined on the entire real line.") - - for interval in keys[1:]: - if "lower_threshold" in parameter_dict[interval]: - lower_thresholds[interval] = parameter_dict[interval]["lower_threshold"] - elif "upper_threshold" in parameter_dict[interval - 1]: - lower_thresholds[interval] = parameter_dict[interval - 1]["upper_threshold"] - else: - raise ValueError( - f"In {interval} of {leaf_name} is no lower upper threshold or an upper" - f" in the piece before.", - ) - - for interval in keys[:-1]: - if "upper_threshold" in parameter_dict[interval]: - upper_thresholds[interval] = parameter_dict[interval]["upper_threshold"] - elif "lower_threshold" in parameter_dict[interval + 1]: - upper_thresholds[interval] = parameter_dict[interval + 1]["lower_threshold"] - else: - raise ValueError( - f"In {interval} of {leaf_name} is no upper threshold or a lower" - f" threshold in the piece after.", - ) - - if not numpy.allclose(lower_thresholds[1:], upper_thresholds[:-1]): - raise ValueError( - f"The lower and upper thresholds of {leaf_name} have to coincide", - ) - thresholds = sorted([lower_thresholds[0], *upper_thresholds]) - return ( - xnp.array(lower_thresholds), - xnp.array(upper_thresholds), - xnp.array(thresholds), - ) - - -def _check_and_get_rates( - leaf_name: str, - func_type: FUNC_TYPES, - parameter_dict: dict[int, dict[str, float]], - xnp: ModuleType, -) -> Float[Array, " n_segments"]: - """Check and transfer raw rates data. - - Transfer and check raw rates data, which needs to be specified in a - piecewise_polynomial layout in the yaml file. - - Parameters - ---------- - parameter_dict - leaf_name - keys - func_type - xnp : ModuleType - The numpy module to use for calculations. - - Returns - ------- - - """ - keys = sorted(parameter_dict.keys()) - rates = numpy.zeros((OPTIONS_REGISTRY[func_type].rates_size, len(keys))) - for i, rate_type in enumerate(OPTIONS_REGISTRY[func_type].required_keys): - for interval in keys: - if rate_type in parameter_dict[interval]: - rates[i, interval] = parameter_dict[interval][rate_type] - else: - raise ValueError( - f"In interval {interval} of {leaf_name}, {rate_type} is missing.", - ) - return xnp.array(rates) - - -def _check_and_get_intercepts( - leaf_name: str, - parameter_dict: dict[int, dict[str, float]], - lower_thresholds: Float[Array, " n_segments"], - upper_thresholds: Float[Array, " n_segments"], - rates: Float[Array, " n_segments"], - xnp: ModuleType, -) -> Float[Array, " n_segments"]: - """Check and transfer raw intercept data. If necessary create intercepts. - - Transfer and check raw rates data, which needs to be specified in a - piecewise_polynomial layout in the yaml file. - """ - keys = sorted(parameter_dict.keys()) - intercepts = numpy.zeros(len(keys)) - count_intercepts_supplied = 1 - - if "intercept_at_lower_threshold" not in parameter_dict[0]: - raise ValueError(f"The first piece of {leaf_name} needs an intercept.") - intercepts[0] = parameter_dict[0]["intercept_at_lower_threshold"] - # Check if all intercepts are supplied. - for interval in keys[1:]: - if "intercept_at_lower_threshold" in parameter_dict[interval]: - count_intercepts_supplied += 1 - intercepts[interval] = parameter_dict[interval][ - "intercept_at_lower_threshold" - ] - if (count_intercepts_supplied > 1) & (count_intercepts_supplied != len(keys)): - raise ValueError( - "More than one, but not all intercepts are supplied. " - "The dictionaries should contain either only the lowest intercept " - "or all intercepts.", - ) - if count_intercepts_supplied == len(keys): - pass - - else: - intercepts = _create_intercepts( - lower_thresholds, - upper_thresholds, - rates, - intercepts[0], - xnp=xnp, - ) - return xnp.array(intercepts) - - -def _create_intercepts( - lower_thresholds: Float[Array, " n_segments"], - upper_thresholds: Float[Array, " n_segments"], - rates: Float[Array, " n_segments"], - intercept_at_lowest_threshold: float, - xnp: ModuleType, -) -> Float[Array, " n_segments"]: - """Create intercepts from raw data. - - Parameters - ---------- - lower_thresholds: - The lower thresholds defining the intervals - - upper_thresholds: - The upper thresholds defining the intervals - - rates: - The slope in the interval below the corresponding element of *upper_thresholds*. - - intercept_at_lowest_threshold: - Intercept at the lowest threshold - - xnp: ModuleType - The module to use for calculations. - - Returns - ------- - - """ - intercepts = numpy.full_like(upper_thresholds, numpy.nan) - intercepts[0] = intercept_at_lowest_threshold - for i, up_thr in enumerate(upper_thresholds[:-1]): - intercepts[i + 1] = _calculate_one_intercept( - x=up_thr, - lower_thresholds=lower_thresholds, - upper_thresholds=upper_thresholds, - rates=rates, - intercepts=intercepts, - ) - return xnp.array(intercepts) - - -def _calculate_one_intercept( - x: float, - lower_thresholds: Float[Array, " n_segments"], - upper_thresholds: Float[Array, " n_segments"], - rates: Float[Array, " n_segments"], - intercepts: Float[Array, " n_segments"], -) -> float: - """Calculate the intercept for the segment `x` lies in. - - Parameters - ---------- - x - The value that the function is applied to. - lower_thresholds - A one-dimensional array containing lower thresholds of each interval. - upper_thresholds - A one-dimensional array containing upper thresholds each interval. - rates - A two-dimensional array where columns are interval sections and rows correspond - to the nth polynomial. - intercepts - The intercepts at the lower threshold of each interval. - - Returns - ------- - out - The value of `x` under the piecewise function. - - """ - # Check if value lies within the defined range. - if (x < lower_thresholds[0]) or (x > upper_thresholds[-1]) or numpy.isnan(x): - return numpy.nan - index_interval = numpy.searchsorted(upper_thresholds, x, side="left") - intercept_interval = intercepts[index_interval] - - # Select threshold and calculate corresponding increment into interval - lower_threshold_interval = lower_thresholds[index_interval] - - if lower_threshold_interval == -numpy.inf: - return intercept_interval - - increment_to_calc = x - lower_threshold_interval - - out = intercept_interval - for pol in range(1, rates.shape[0] + 1): - out += rates[pol - 1, index_interval] * (increment_to_calc**pol) - - return out diff --git a/src/ttsim/tt_dag_elements/rounding.py b/src/ttsim/tt_dag_elements/rounding.py deleted file mode 100644 index 1a9e6cd801..0000000000 --- a/src/ttsim/tt_dag_elements/rounding.py +++ /dev/null @@ -1,73 +0,0 @@ -from __future__ import annotations - -import functools -from dataclasses import dataclass -from typing import TYPE_CHECKING, Literal, ParamSpec, get_args - -if TYPE_CHECKING: - from collections.abc import Callable - from types import ModuleType - - from ttsim.interface_dag_elements.typing import FloatColumn - - -ROUNDING_DIRECTION = Literal["up", "down", "nearest"] - -P = ParamSpec("P") - - -@dataclass -class RoundingSpec: - base: int | float - direction: ROUNDING_DIRECTION - to_add_after_rounding: int | float = 0 - reference: str | None = None - - def __post_init__(self) -> None: - """Validate the types of base and to_add_after_rounding.""" - if type(self.base) not in [int, float]: - raise ValueError(f"base needs to be a number, got {self.base!r}") - valid_directions = get_args(ROUNDING_DIRECTION) - if self.direction not in valid_directions: - raise ValueError( - f"`direction` must be one of {valid_directions}, " - f"got {self.direction!r}", - ) - if type(self.to_add_after_rounding) not in [int, float]: - raise ValueError( - f"Additive part must be a number, got {self.to_add_after_rounding!r}", - ) - - def apply_rounding( - self, - func: Callable[P, FloatColumn], - xnp: ModuleType, - ) -> Callable[P, FloatColumn]: - """Decorator to round the output of a function. - - Parameters - ---------- - func - Function to be rounded. - xnp - The computing module to use. - - Returns - ------- - Function with rounding applied. - """ - - @functools.wraps(func) - def wrapper(*args: P.args, **kwargs: P.kwargs) -> FloatColumn: - out = func(*args, **kwargs) - - if self.direction == "up": - rounded_out = self.base * xnp.ceil(out / self.base) - elif self.direction == "down": - rounded_out = self.base * xnp.floor(out / self.base) - elif self.direction == "nearest": - rounded_out = self.base * (xnp.asarray(out) / self.base).round() - - return rounded_out + self.to_add_after_rounding - - return wrapper diff --git a/src/ttsim/tt_dag_elements/shared.py b/src/ttsim/tt_dag_elements/shared.py deleted file mode 100644 index 8337600415..0000000000 --- a/src/ttsim/tt_dag_elements/shared.py +++ /dev/null @@ -1,93 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, overload - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import BoolColumn, FloatColumn, IntColumn - - -@overload -def join( - foreign_key: IntColumn, - primary_key: IntColumn, - target: FloatColumn, - value_if_foreign_key_is_missing: float | bool, - xnp: ModuleType, -) -> FloatColumn: ... - - -@overload -def join( - foreign_key: IntColumn, - primary_key: IntColumn, - target: IntColumn, - value_if_foreign_key_is_missing: float | bool, - xnp: ModuleType, -) -> IntColumn: ... - - -@overload -def join( - foreign_key: IntColumn, - primary_key: IntColumn, - target: BoolColumn, - value_if_foreign_key_is_missing: float | bool, - xnp: ModuleType, -) -> BoolColumn: ... - - -def join( - foreign_key: IntColumn, - primary_key: IntColumn, - target: FloatColumn | IntColumn | BoolColumn, - value_if_foreign_key_is_missing: float | bool, - xnp: ModuleType, -) -> FloatColumn | IntColumn | BoolColumn: - """ - Given a foreign key, find the corresponding primary key, and return the target at - the same index as the primary key. When using Jax, does not work on String Arrays. - - Parameters - ---------- - foreign_key: - The foreign keys. - primary_key: - The primary keys. - target: - The targets, in the same order as the primary keys. - value_if_foreign_key_is_missing: - The value to return if no matching primary key is found. - xnp: - The numpy module to use for calculations. - - Returns - ------- - The joined array. - """ - # For each foreign key and for each primary key, check if they match - matches_foreign_key = foreign_key[:, None] == primary_key - - # For each foreign key, add a column with True at the end, to later fall back to - # the value for unresolved foreign keys - padded_matches_foreign_key = xnp.pad( - matches_foreign_key, - ((0, 0), (0, 1)), - "constant", - constant_values=True, - ) - - # For each foreign key, compute the index of the first matching primary key - indices = xnp.argmax(padded_matches_foreign_key, axis=1) - - # Add the value for unresolved foreign keys at the end of the target array - padded_targets = xnp.pad( - target, - (0, 1), - "constant", - constant_values=value_if_foreign_key_is_missing, - ) - - # Return the target at the index of the first matching primary key - return padded_targets.take(indices) diff --git a/src/ttsim/tt_dag_elements/typing.py b/src/ttsim/tt_dag_elements/typing.py deleted file mode 100644 index 66486f5ad6..0000000000 --- a/src/ttsim/tt_dag_elements/typing.py +++ /dev/null @@ -1,20 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Literal, NewType, TypeAlias - -if TYPE_CHECKING: - import datetime - - NestedLookupDict: TypeAlias = dict[int, float | int | bool | "NestedLookupDict"] - OrigParamSpec = ( - # Header - dict[str, str | None | dict[Literal["de", "en"], str | None]] - | - # Parameters at one point in time - dict[ - datetime.date, - dict[Literal["note", "reference"] | str | int, Any], # noqa: PYI051 - ] - ) - DashedISOString = NewType("DashedISOString", str) - """A string representing a date in the format 'YYYY-MM-DD'.""" diff --git a/src/ttsim/tt_dag_elements/vectorization.py b/src/ttsim/tt_dag_elements/vectorization.py deleted file mode 100644 index 3c0d041933..0000000000 --- a/src/ttsim/tt_dag_elements/vectorization.py +++ /dev/null @@ -1,548 +0,0 @@ -from __future__ import annotations - -import ast -import functools -import inspect -import textwrap -import types -from importlib import import_module -from types import ModuleType -from typing import TYPE_CHECKING, Any, Literal, cast - -import numpy -from dags.signature import rename_arguments - -if TYPE_CHECKING: - from collections.abc import Callable - from types import ModuleType - - -BACKEND_TO_MODULE = {"jax": "jax.numpy", "numpy": "numpy"} - - -def vectorize_function( - func: Callable[..., Any], - vectorization_strategy: Literal["loop", "vectorize"], - backend: Literal["numpy", "jax"], - xnp: ModuleType, -) -> Callable[..., Any]: - """Returns a new PolicyFunction with the function attribute vectorized. - - Args: - policy_function: PolicyFunction to vectorize. - vectorization_strategy: Strategy to use for vectorization. - backend: Backend to use for vectorization. - xnp: Module to use for vectorization. - - Returns - ------- - New PolicyFunction with the function attribute vectorized. - - Raises - ------ - ValueError: If the vectorization strategy is not supported. - TranslateToVectorizableError: If the function cannot be vectorized. - - """ - - vectorized: Callable[..., Any] - if vectorization_strategy == "loop": - assigned = ( - "__signature__", - "__globals__", - "__closure__", - *functools.WRAPPER_ASSIGNMENTS, - ) - vectorized = functools.wraps(func, assigned=assigned)(numpy.vectorize(func)) - elif vectorization_strategy == "vectorize": - vectorized = _make_vectorizable(func, backend=backend, xnp=xnp) - else: - raise ValueError( - f"Vectorization strategy {vectorization_strategy} is not supported. " - "Use 'loop' or 'vectorize'.", - ) - - # Update annotations and signature to reflect that the inputs are now expected to be - # arrays. - vectorized.__signature__ = _create_vectorized_signature(func) # type: ignore[attr-defined] - vectorized.__annotations__ = _create_vectorized_annotations(func) - - return vectorized - - -def _make_vectorizable( - func: Callable[..., Any], - backend: str, - xnp: ModuleType, -) -> Callable[..., Any]: - """Redefine function to be vectorizable given backend. - - Args: - func: Function. - backend: Backend library. Currently supported backends are 'jax' and 'numpy'. - Array module must export function `where` that behaves as `numpy.where`. - - Returns - ------- - New function with altered ast. - """ - if _is_lambda_function(func): - raise TranslateToVectorizableError( - "Lambda functions are not supported for vectorization. Please define a " - "named function and use that.", - ) - - module = _module_from_backend(backend) - tree = _make_vectorizable_ast(func, module=module, xnp=xnp) - - # recreate scope of function, add array library - scope = dict(func.__globals__) - if func.__closure__: - closure_vars = func.__code__.co_freevars - closure_cells = [c.cell_contents for c in func.__closure__] - scope.update(dict(zip(closure_vars, closure_cells, strict=False))) - - scope[module] = import_module(module) - - # execute new ast - compiled = compile(tree, "", "exec") - exec(compiled, scope) # noqa: S102 - - # assign created function - new_func = scope[func.__name__] - _vectorized = functools.wraps(func)(new_func) - - # For functions whose argument names are renamed dynamically, we need to match the - # argument names, since the vectorization works on the AST level, which is not - # affected by the original renaming. This assumes that the argument ordering is - # the same in the function and its AST. - _original_args = _args_from_func_ast(_func_to_ast(func)) - _args_name_mapper = dict( - zip( - _original_args, - list(inspect.signature(func).parameters), - strict=False, - ) - ) - return rename_arguments(_vectorized, mapper=_args_name_mapper) - - -def make_vectorizable_source( - func: Callable[..., Any], - backend: str, - xnp: ModuleType, -) -> str: - """Redefine function source to be vectorizable given backend. - - Args: - func: Function. - backend: Backend library. See dict `BACKEND_TO_MODULE` for currently supported - backends. Array module must export function `where` that behaves as - `numpy.where`. - - Returns - ------- - Source code of new function with altered ast. - """ - if _is_lambda_function(func): - raise TranslateToVectorizableError( - "Lambda functions are not supported for vectorization. Please define a " - "named function and use that.", - ) - - module = _module_from_backend(backend) - tree = _make_vectorizable_ast(func, module=module, xnp=xnp) - return ast.unparse(tree) - - -def _make_vectorizable_ast( - func: Callable[..., Any], - module: str, - xnp: ModuleType, -) -> ast.Module: - """Change if statement to where call in the ast of func and return new ast. - - Args: - func: Function. - module: Module which exports the function `where` that behaves as `numpy.where`. - - Returns - ------- - AST of new function with altered ast. - """ - tree = _func_to_ast(func) - - # get function location for error messages - func_loc = f"{func.__module__}/{func.__name__}" - - # transform tree nodes - new_tree = Transformer(module, func_loc, xnp).visit(tree) - return ast.fix_missing_locations(new_tree) - - -def _func_to_ast(func: Callable[..., Any]) -> ast.Module: - source = inspect.getsource(func) - source_dedented = textwrap.dedent(source) - source_without_decorators = _remove_decorator_lines(source_dedented) - return ast.parse(source_without_decorators) - - -def _args_from_func_ast(func_ast: ast.Module) -> list[str]: - """Get function arguments from function ast.""" - return [arg.arg for arg in func_ast.body[0].args.args] # type: ignore[attr-defined] - - -def _remove_decorator_lines(source: str) -> str: - """Removes leading decorator lines from function source code.""" - if source.startswith("def "): - return source - return "def " + source.split("\ndef ")[1] - - -# ====================================================================================== -# Transformation class -# ====================================================================================== - - -class Transformer(ast.NodeTransformer): - def __init__(self, module: str, func_loc: str, xnp: ModuleType) -> None: - self.module = module - self.func_loc = func_loc - self.xnp = xnp - - def visit_Call(self, node: ast.Call) -> ast.AST: # noqa: N802 - # Forbid type-conversion calls - forbidden_type_conversions = {"float", "int", "bool", "complex", "str"} - if hasattr(node.func, "id") and node.func.id in forbidden_type_conversions: - msg = ( - f"Forbidden type conversion '{node.func.id}' detected in function. " - f"Type conversions like float(), int(), bool(), complex(), str() are " - f"not allowed in vectorized functions.\n\nFunction: {self.func_loc}\n\n" - f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" - ) - raise TranslateToVectorizableError(msg) - self.generic_visit(node) - return _call_to_call_from_module( - node, - module=self.module, - func_loc=self.func_loc, - xnp=self.xnp, - ) - - def visit_AugAssign(self, node: ast.AugAssign) -> ast.AST: # noqa: N802 - # Forbid any augmented assignment (+=, -=, *=, /=, etc.) - msg = ( - "Augmented assignment is not allowed in vectorized functions. " - "Operations like +=, -=, *=, /=, etc. are forbidden.\n\n" - f"Function: {self.func_loc}\n\n" - f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n" - ) - raise TranslateToVectorizableError(msg) - - def visit_UnaryOp(self, node: ast.UnaryOp) -> ast.UnaryOp | ast.Call: # noqa: N802 - if isinstance(node.op, ast.Not): - return _not_to_call(node, module=self.module) - return node - - def visit_BoolOp(self, node: ast.BoolOp) -> ast.Call: # noqa: N802 - self.generic_visit(node) - return _boolop_to_call(node, module=self.module) - - def visit_If( # noqa: N802 - self, - node: ast.If, - ) -> ast.Call | ast.Return | ast.Assign | ast.AugAssign: - self.generic_visit(node) - call = _if_to_call(node, module=self.module, func_loc=self.func_loc) - out: ast.Call | ast.Return | ast.Assign | ast.AugAssign - if isinstance(node.body[0], ast.Return): - out = ast.Return(call) - elif isinstance(node.body[0], (ast.Assign, ast.AugAssign)): - out = node.body[0] - out.value = call - else: - out = call - return out - - def visit_IfExp(self, node: ast.IfExp) -> ast.AST: # noqa: N802 - self.generic_visit(node) - return _ifexp_to_call(node, module=self.module) - - -# ====================================================================================== -# Transformation functions on node level -# ====================================================================================== - - -def _not_to_call(node: ast.UnaryOp, module: str) -> ast.Call: - """Transform negation operation to Call.""" - return ast.Call( - func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr="logical_not", - ctx=ast.Load(), - ), - args=[node.operand], - keywords=[], - ) - - -def _if_to_call(node: ast.If, module: str, func_loc: str) -> ast.Call: - """Transform If statement to Call.""" - args = [node.test, node.body[0].value] # type: ignore[attr-defined] - - if len(node.orelse) > 1 or len(node.body) > 1: - msg = _too_many_operations_error_message(node, func_loc=func_loc) - raise TranslateToVectorizableError(msg) - if node.orelse == []: - if isinstance(node.body[0], ast.Return): - msg = _return_and_no_else_error_message(node.body[0], func_loc=func_loc) - raise TranslateToVectorizableError(msg) - if hasattr(node.body[0], "targets"): - name = ast.Name(id=node.body[0].targets[0].id, ctx=ast.Load()) - else: - name = ast.Name(id=node.body[0].target.id, ctx=ast.Load()) # type: ignore[attr-defined] - args.append(name) - elif isinstance(node.orelse[0], ast.Return): - args.append(node.orelse[0].value) - elif isinstance(node.orelse[0], ast.If): - call_if = _if_to_call(node.orelse[0], module=module, func_loc=func_loc) - args.append(call_if) - elif isinstance(node.orelse[0], (ast.Assign, ast.AugAssign)): - if isinstance(node.orelse[0].value, ast.IfExp): - call_ifexp = _ifexp_to_call(node.orelse[0].value, module=module) - args.append(call_ifexp) - else: - args.append(node.orelse[0].value) - else: - msg = _disallowed_operation_error_message(node.orelse[0], func_loc=func_loc) - raise TranslateToVectorizableError(msg) - - return ast.Call( - func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr="where", - ctx=ast.Load(), - ), - args=args, - keywords=[], - ) - - -def _ifexp_to_call(node: ast.IfExp, module: str) -> ast.Call: - """Transform IfExp expression to Call.""" - args = [node.test, node.body] - - if isinstance(node.orelse, ast.IfExp): - call_ifexp = _ifexp_to_call(node.orelse, module=module) - args.append(call_ifexp) - else: - args.append(node.orelse) - - return ast.Call( - func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr="where", - ctx=ast.Load(), - ), - args=args, - keywords=[], - ) - - -def _boolop_to_call(node: ast.BoolOp, module: str) -> ast.Call: - """Transform BoolOp operation to Call.""" - operation = {ast.And: "logical_and", ast.Or: "logical_or"}[type(node.op)] - - def _constructor(left: ast.Call | ast.expr, right: ast.Call | ast.expr) -> ast.Call: - """Construct calls of the form `module.logical_(and|or)(left, right)`.""" - return ast.Call( - func=ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr=operation, - ctx=ast.Load(), - ), - args=[left, right], - keywords=[], - ) - - values: list[ast.Call | ast.expr] = [ - _boolop_to_call(v, module=module) if isinstance(v, ast.BoolOp) else v - for v in node.values - ] - - return cast("ast.Call", functools.reduce(_constructor, values)) - - -def _call_to_call_from_module( - node: ast.Call, - module: str, - func_loc: str, - xnp: ModuleType, -) -> ast.AST: - """Transform built-in Calls to Calls from module.""" - to_transform = ("sum", "any", "all", "max", "min") - - transform_node = hasattr(node.func, "id") and node.func.id in to_transform - - if not transform_node: - return node - - func_id = node.func.id # type: ignore[attr-defined] - call = node - args = node.args - - if len(args) == 1: - if type(args) not in (list, tuple, xnp.ndarray): - raise TranslateToVectorizableError( - f"Argument of function {func_id} is not a list, tuple, or valid array." - f"\n\nFunction: {func_loc}\n\n" - f"Problematic source code: \n\n{_node_to_formatted_source(node)}\n", - ) - - call.func = ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr=func_id, - ctx=ast.Load(), - ) - elif func_id in ("max", "min") and len(args) == 2: # noqa: PLR2004 - attr = func_id + "imum" # max -> maximum, min -> minimum - call.func = ast.Attribute( - value=ast.Name(id=module, ctx=ast.Load()), - attr=attr, - ctx=ast.Load(), - ) - else: - msg = _too_many_arguments_call_error_message(node, func_loc=func_loc) - raise TranslateToVectorizableError(msg) - - return call - - -# ====================================================================================== -# Transformation errors and checks -# ====================================================================================== - - -def _is_lambda_function(obj: object) -> bool: - return isinstance(obj, types.FunctionType) and obj.__name__ == "" - - -class TranslateToVectorizableError(ValueError): - """Error when function cannot be translated into vectorizable compatible format.""" - - -def _too_many_arguments_call_error_message(node: ast.Call, func_loc: str) -> str: - source = _node_to_formatted_source(node) - _func_name = node.func.id # type: ignore[attr-defined] - return ( - "\n\n" - f"The function {_func_name} is called with too many arguments. Please only use " - "one iterable argument for (`sum`, `any`, `all`, `max`, `min`) or two " - "arguments for (`max`, `min`)." - f"\n\nFunction: {func_loc}\n\n" - "Problematic source code (after transformations that were possible, if any):" - f"\n\n{source}\n" - ) - - -def _return_and_no_else_error_message(node: ast.Return, func_loc: str) -> str: - source = _node_to_formatted_source(node) - return ( - "\n\n" - "The if-clause body is a return statement, while the else clause is missing.\n" - "Please swap the return statement for an assignment or add an else-clause." - f"\n\nFunction: {func_loc}\n\n" - "Problematic source code (after transformations that were possible, if any):" - f"\n\n{source}\n" - ) - - -def _too_many_operations_error_message(node: ast.If, func_loc: str) -> str: - source = _node_to_formatted_source(node) - return ( - "\n\n" - "An if statement is performing multiple operations, which is forbidden.\n" - "Please only perform one operation in the body of an if-elif-else statement." - f"\n\nFunction: {func_loc}\n\n" - "Problematic source code (after transformations that were possible, if any):" - f"\n\n{source}\n" - ) - - -def _disallowed_operation_error_message(node: ast.AST, func_loc: str) -> str: - source = _node_to_formatted_source(node) - return ( - "\n\n" - f"An if-elif-else clause body is of type {type(node)}, which is forbidden.\n" - "Allowed types are the following:\n\n" - "ast.If : Another if-else-elif clause\n" - "ast.IfExp : A one-line if-else statement. Example: 1 if flag else 0\n" - "ast.Assign : An assignment. Example: x = 3\n" - "ast.Return : A return statement. Example: return out" - f"\n\nFunction: {func_loc}\n\n" - "Problematic source code (after transformations that were possible, if any):" - f"\n\n{source}\n" - ) - - -def _node_to_formatted_source(node: ast.AST) -> str: - source = ast.unparse(node) - return " > " + source[:-1].replace("\n", "\n > ") - - -def _module_from_backend(backend: str) -> str: - if backend in BACKEND_TO_MODULE: - return BACKEND_TO_MODULE[backend] - - raise NotImplementedError( - f"Argument 'backend' is {backend} but must be in {BACKEND_TO_MODULE.keys()}.", - ) - - -# ====================================================================================== -# Signature and annotations -# ====================================================================================== - - -def _create_vectorized_signature(func: Callable[..., Any]) -> inspect.Signature: - """Create a signature for the vectorized function.""" - parameters = [ - inspect.Parameter( - name=param.name, - kind=param.kind, - default=param.default, - annotation=scalar_type_to_array_type(param.annotation), - ) - for param in inspect.signature(func).parameters.values() - ] - return_annotation = scalar_type_to_array_type( - inspect.signature(func).return_annotation - ) - return inspect.Signature(parameters=parameters, return_annotation=return_annotation) - - -def _create_vectorized_annotations(func: Callable[..., Any]) -> dict[str, Any]: - """Create annotations for the vectorized function.""" - parameters_and_return = ["return", *inspect.signature(func).parameters] - annotations = inspect.get_annotations(func) - return { - name: scalar_type_to_array_type( - # If no annotation is available, we assume it is a numerical scalar type, - # which is converted to an array type. - annotations.get(name, "IntColumn | FloatColumn | BoolColumn"), - ) - for name in parameters_and_return - } - - -def scalar_type_to_array_type(orig_type: Literal["int", "float", "bool"]) -> str: - """Convert a scalar type to the corresponding array type.""" - registry = { - "int": "IntColumn", - "float": "FloatColumn", - "bool": "BoolColumn", - } - if orig_type in registry: - return registry[orig_type] - return orig_type diff --git a/tests/ttsim/__init__ .py b/tests/ttsim/__init__ .py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py b/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py deleted file mode 100644 index 3952f31498..0000000000 --- a/tests/ttsim/interface_dag_elements/test_automatically_added_functions.py +++ /dev/null @@ -1,430 +0,0 @@ -from __future__ import annotations - -import inspect - -import pytest - -from ttsim.interface_dag_elements.automatically_added_functions import ( - _create_function_for_time_unit, - create_agg_by_group_functions, - create_time_conversion_functions, - d_to_m, - d_to_q, - d_to_w, - d_to_y, - m_to_d, - m_to_q, - m_to_w, - m_to_y, - q_to_d, - q_to_m, - q_to_w, - q_to_y, - w_to_d, - w_to_m, - w_to_q, - w_to_y, - y_to_d, - y_to_m, - y_to_q, - y_to_w, -) -from ttsim.tt_dag_elements import policy_function - - -def return_one() -> int: - return 1 - - -def return_x_kin(x_kin: int) -> int: - return x_kin - - -def return_n1__x_kin(n1__x_kin: int) -> int: - return n1__x_kin - - -@pytest.mark.parametrize( - ("yearly_value", "quarterly_value"), - [ - (0, 0), - (12, 3), - ], -) -def test_y_to_q(yearly_value: float, quarterly_value: float) -> None: - assert y_to_q(yearly_value) == quarterly_value - - -@pytest.mark.parametrize( - ("yearly_value", "monthly_value"), - [ - (0, 0), - (12, 1), - ], -) -def test_y_to_m(yearly_value: float, monthly_value: float) -> None: - assert y_to_m(yearly_value) == monthly_value - - -@pytest.mark.parametrize( - ("yearly_value", "weekly_value"), - [ - (0, 0), - (365.25, 7), - ], -) -def test_y_to_w(yearly_value: float, weekly_value: float) -> None: - assert y_to_w(yearly_value) == weekly_value - - -@pytest.mark.parametrize( - ("yearly_value", "daily_value"), - [ - (0, 0), - (365.25, 1), - ], -) -def test_y_to_d(yearly_value: float, daily_value: float) -> None: - assert y_to_d(yearly_value) == daily_value - - -@pytest.mark.parametrize( - ("quarterly_value", "yearly_value"), - [ - (0, 0), - (1, 4), - ], -) -def test_q_to_y(quarterly_value: float, yearly_value: float) -> None: - assert q_to_y(quarterly_value) == yearly_value - - -@pytest.mark.parametrize( - ("quarterly_value", "monthly_value"), - [ - (0, 0), - (1, 3), - ], -) -def test_q_to_m(quarterly_value: float, monthly_value: float) -> None: - assert q_to_m(quarterly_value) == monthly_value - - -@pytest.mark.parametrize( - ("quarterly_value", "weekly_value"), - [ - (0, 0), - (365.25 / 7 / 4, 1), - ], -) -def test_q_to_w(quarterly_value: float, weekly_value: float) -> None: - assert q_to_w(quarterly_value) == weekly_value - - -@pytest.mark.parametrize( - ("quarterly_value", "daily_value"), - [ - (0, 0), - (365.25 / 4, 1), - ], -) -def test_q_to_d(quarterly_value: float, daily_value: float) -> None: - assert q_to_d(quarterly_value) == daily_value - - -@pytest.mark.parametrize( - ("monthly_value", "yearly_value"), - [ - (0, 0), - (1, 12), - ], -) -def test_m_to_y(monthly_value: float, yearly_value: float) -> None: - assert m_to_y(monthly_value) == yearly_value - - -@pytest.mark.parametrize( - ("monthly_value", "quarterly_value"), - [ - (0, 0), - (1, 3), - ], -) -def test_m_to_q(monthly_value: float, quarterly_value: float) -> None: - assert m_to_q(monthly_value) == quarterly_value - - -@pytest.mark.parametrize( - ("monthly_value", "weekly_value"), - [ - (0, 0), - (365.25, 84), - ], -) -def test_m_to_w(monthly_value: float, weekly_value: float) -> None: - assert m_to_w(monthly_value) == weekly_value - - -@pytest.mark.parametrize( - ("monthly_value", "daily_value"), - [ - (0, 0), - (365.25, 12), - ], -) -def test_m_to_d(monthly_value: float, daily_value: float) -> None: - assert m_to_d(monthly_value) == daily_value - - -@pytest.mark.parametrize( - ("weekly_value", "yearly_value"), - [ - (0, 0), - (7, 365.25), - ], -) -def test_w_to_y(weekly_value: float, yearly_value: float) -> None: - assert w_to_y(weekly_value) == yearly_value - - -@pytest.mark.parametrize( - ("weekly_value", "monthly_value"), - [ - (0, 0), - (84, 365.25), - ], -) -def test_w_to_m(weekly_value: float, monthly_value: float) -> None: - assert w_to_m(weekly_value) == monthly_value - - -@pytest.mark.parametrize( - ("weekly_value", "quarterly_value"), - [ - (0, 0), - (7, 365.25 / 4), - ], -) -def test_w_to_q(weekly_value: float, quarterly_value: float) -> None: - assert w_to_q(weekly_value) == quarterly_value - - -@pytest.mark.parametrize( - ("weekly_value", "daily_value"), - [ - (0, 0), - (7, 1), - ], -) -def test_w_to_d(weekly_value: float, daily_value: float) -> None: - assert w_to_d(weekly_value) == daily_value - - -@pytest.mark.parametrize( - ("daily_value", "yearly_value"), - [ - (0, 0), - (1, 365.25), - ], -) -def test_d_to_y(daily_value: float, yearly_value: float) -> None: - assert d_to_y(daily_value) == yearly_value - - -@pytest.mark.parametrize( - ("daily_value", "quarterly_value"), - [ - (0, 0), - (1, 365.25 / 4), - ], -) -def test_d_to_q(daily_value: float, quarterly_value: float) -> None: - assert d_to_q(daily_value) == quarterly_value - - -@pytest.mark.parametrize( - ("daily_value", "monthly_value"), - [ - (0, 0), - (12, 365.25), - ], -) -def test_d_to_m(daily_value: float, monthly_value: float) -> None: - assert d_to_m(daily_value) == monthly_value - - -@pytest.mark.parametrize( - ("daily_value", "weekly_value"), - [ - (0, 0), - (1, 7), - ], -) -def test_d_to_w(daily_value: float, weekly_value: float) -> None: - assert d_to_w(daily_value) == weekly_value - - -class TestCreateFunctionsForTimeUnits: - @pytest.mark.parametrize( - ("name", "expected"), - [ - ("test_y", ["test_m", "test_q", "test_w", "test_d"]), - ("test_y_kin", ["test_m_kin", "test_q_kin", "test_w_kin", "test_d_kin"]), - ("test_y_sn", ["test_m_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), - ("test_q", ["test_y", "test_m", "test_w", "test_d"]), - ("test_q_kin", ["test_y_kin", "test_m_kin", "test_w_kin", "test_d_kin"]), - ("test_q_sn", ["test_y_sn", "test_m_sn", "test_w_sn", "test_d_sn"]), - ("test_m", ["test_y", "test_q", "test_w", "test_d"]), - ("test_m_kin", ["test_y_kin", "test_q_kin", "test_w_kin", "test_d_kin"]), - ("test_m_sn", ["test_y_sn", "test_q_sn", "test_w_sn", "test_d_sn"]), - ("test_w", ["test_y", "test_m", "test_q", "test_d"]), - ("test_w_kin", ["test_y_kin", "test_m_kin", "test_q_kin", "test_d_kin"]), - ("test_w_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_d_sn"]), - ("test_d", ["test_y", "test_m", "test_q", "test_w"]), - ("test_d_kin", ["test_y_kin", "test_m_kin", "test_q_kin", "test_w_kin"]), - ("test_d_sn", ["test_y_sn", "test_m_sn", "test_q_sn", "test_w_sn"]), - ], - ) - def test_should_create_functions_for_other_time_units_for_functions( - self, - name: str, - expected: list[str], - ) -> None: - time_conversion_functions = create_time_conversion_functions( - qname_policy_environment={ - name: policy_function(leaf_name=name)(return_one), - }, - input_columns=set(), - grouping_levels=("sn", "kin"), - ) - - for expected_name in expected: - assert expected_name in time_conversion_functions - - def test_should_not_create_functions_automatically_that_exist_already(self) -> None: - time_conversion_functions = create_time_conversion_functions( - qname_policy_environment={ - "test1_d": policy_function(leaf_name="test1_d")(return_one), - }, - input_columns={"test2_y"}, - grouping_levels=("sn", "kin"), - ) - - assert "test1_d" not in time_conversion_functions - assert "test2_y" not in time_conversion_functions - - def test_should_overwrite_functions_with_data_cols_that_only_differ_in_time_period( - self, - ) -> None: - time_conversion_functions = create_time_conversion_functions( - qname_policy_environment={ - "test_d": policy_function(leaf_name="test_d")(return_one), - }, - input_columns={"test_y"}, - grouping_levels=("sn", "kin"), - ) - - assert "test_d" in time_conversion_functions - - -class TestCreateFunctionForTimeUnit: - def test_should_rename_parameter(self): - function = _create_function_for_time_unit("test", d_to_m) - - parameter_spec = inspect.getfullargspec(function) - assert parameter_spec.args == ["test"] - - def test_should_not_set_info_if_none(self): - function = _create_function_for_time_unit("test", d_to_m) - - assert not hasattr(function, "__info__") - - def test_should_apply_converter(self): - function = _create_function_for_time_unit("test", d_to_w) - - assert function(1) == 7 - - -def test_time_conversions_should_not_create_cycle(): - # Check for: - # https://github.com/iza-institute-of-labor-economics/gettsim/issues/621 - def x(test_m: int) -> int: - return test_m - - time_conversion_functions = create_time_conversion_functions( - qname_policy_environment={"test_d": policy_function(leaf_name="test_d")(x)}, - input_columns=set(), - grouping_levels=(), - ) - - assert "test_m" not in time_conversion_functions - - -def test_grouping_functions_should_not_create_cycle(): - @policy_function() - def x(x_hh: int) -> int: - return x_hh - - @policy_function() - def some_other_function_requiring_x_hh(x_hh: int) -> int: - return x_hh - - grouping_functions = create_agg_by_group_functions( - column_functions={ - "x": x, - "some_other_function_requiring_x_hh": some_other_function_requiring_x_hh, - }, - input_columns=set(), - tt_targets=("some_other_function_requiring_x_hh",), - grouping_levels=("hh",), - ) - - assert "x_hh" not in grouping_functions - - -@pytest.mark.parametrize( - ( - "column_functions", - "tt_targets", - "input_columns", - "expected", - ), - [ - ( - {"foo": policy_function(leaf_name="foo")(return_x_kin)}, - {}, - {"x"}, - ("x_kin"), - ), - ( - {"n2__foo": policy_function(leaf_name="foo")(return_n1__x_kin)}, - {}, - {"n1__x"}, - ("n1__x_kin"), - ), - ( - {}, - {"x_kin": None}, - {"x"}, - ("x_kin"), - ), - ], -) -def test_derived_aggregation_functions_are_in_correct_namespace( - column_functions, - tt_targets, - input_columns, - expected, -): - """Test that the derived aggregation functions are in the correct namespace. - - The namespace of the derived aggregation functions should be the same as the - namespace of the function that is being aggregated. - """ - result = create_agg_by_group_functions( - column_functions=column_functions, - input_columns=input_columns, - tt_targets=tt_targets, - grouping_levels=("kin",), - ) - assert expected in result diff --git a/tests/ttsim/interface_dag_elements/test_data_converters.py b/tests/ttsim/interface_dag_elements/test_data_converters.py deleted file mode 100644 index 88f66a4080..0000000000 --- a/tests/ttsim/interface_dag_elements/test_data_converters.py +++ /dev/null @@ -1,268 +0,0 @@ -from __future__ import annotations - -import datetime - -import numpy -import pandas as pd -import pytest -from numpy.testing import assert_array_equal - -from ttsim import ( - main, -) -from ttsim.interface_dag_elements.data_converters import ( - df_with_mapped_columns_to_flat_data, - df_with_nested_columns_to_flat_data, - nested_data_to_df_with_mapped_columns, -) -from ttsim.tt_dag_elements import ( - ScalarParam, - param_function, - policy_function, -) - -_GENERIC_PARAM_SPEC = { - "start_date": "2024-01-01", - "end_date": "2024-12-31", - "unit": None, - "reference_period": None, - "name": { - "de": "generic_param", - "en": "generic_param", - }, - "description": { - "de": "generic_param", - "en": "generic_param", - }, -} - - -@policy_function() -def int_policy_function() -> int: - return 1 - - -@param_function() -def int_param_function() -> int: - return 1 - - -_SOME_SCALAR_PARAM = ScalarParam( - leaf_name="some_scalar_param", - value=1, - **_GENERIC_PARAM_SPEC, -) - - -@pytest.fixture -def minimal_data_tree(): - return { - "hh_id": numpy.array([1, 2, 3]), - "p_id": numpy.array([1, 2, 3]), - } - - -@pytest.mark.parametrize( - ( - "inputs_tree_to_df_columns", - "df", - "expected", - ), - [ - ( - { - "n1": { - "n2": "a", - }, - }, - pd.DataFrame({"a": [1, 2, 3]}), - {("n1", "n2"): pd.Series([1, 2, 3])}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": "b", - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {("n1", "n2"): pd.Series([1, 2, 3]), ("n3",): pd.Series([4, 5, 6])}, - ), - ( - { - "n1": { - "n2": "a", - }, - "n3": 3, - }, - pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}), - {("n1", "n2"): pd.Series([1, 2, 3]), ("n3",): pd.Series([3, 3, 3])}, - ), - ], -) -def test_df_with_mapped_columns_to_flat_data( - inputs_tree_to_df_columns, - df, - expected, -): - result = df_with_mapped_columns_to_flat_data( - mapper=inputs_tree_to_df_columns, - df=df, - xnp=numpy, - ) - - assert set(result.keys()) == set(expected.keys()) - for key in result: - pd.testing.assert_series_equal( - pd.Series(result[key]), - expected[key], - check_names=False, - ) - - -@pytest.mark.parametrize( - ( - "environment", - "tt_targets__tree", - "expected_output", - ), - [ - # Two policy functions - ( - { - "some_policy_function": int_policy_function, - "another_policy_function": int_policy_function, - }, - { - "some_policy_function": "res1", - "another_policy_function": "res2", - }, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One policy function - ( - { - "some_policy_function": int_policy_function, - }, - { - "some_policy_function": "res1", - }, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One param function - ( - { - "some_param_function": int_param_function, - }, - { - "some_param_function": "res1", - }, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One param function and one policy function - ( - { - "some_param_function": int_param_function, - "some_policy_function": int_policy_function, - }, - { - "some_param_function": "res1", - "some_policy_function": "res2", - }, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One scalar param - ( - { - "some_scalar_param": _SOME_SCALAR_PARAM, - }, - {"some_scalar_param": "res1"}, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - # One scalar param and one policy function - ( - { - "some_scalar_param": _SOME_SCALAR_PARAM, - "some_policy_function": int_policy_function, - }, - { - "some_scalar_param": "res1", - "some_policy_function": "res2", - }, - pd.DataFrame( - {"res1": numpy.array([1, 1, 1]), "res2": numpy.array([1, 1, 1])}, - index=pd.Index([1, 2, 3], name="p_id"), - ), - ), - ], -) -def test_nested_data_to_dataframe( - environment, - minimal_data_tree, - tt_targets__tree, - expected_output, - backend, -): - results__tree = main( - main_target="results__tree", - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - ) - result_df = nested_data_to_df_with_mapped_columns( - nested_data_to_convert=results__tree, - nested_outputs_df_column_names=tt_targets__tree, - data_with_p_id=minimal_data_tree, - ) - pd.testing.assert_frame_equal( - result_df, - expected_output, - check_like=True, - check_dtype=False, - check_index_type=False, - ) - - -@pytest.mark.parametrize( - ( - "df", - "expected", - ), - [ - ( - pd.DataFrame({("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}), - {("a", "b"): [1, 2, 3], ("c",): [4, 5, 6]}, - ), - ( - pd.DataFrame({("a", "b"): [1, 2, 3], ("b",): [4, 5, 6]}), - {("a", "b"): [1, 2, 3], ("b",): [4, 5, 6]}, - ), - ], -) -def test_df_with_nested_columns_to_flat_data(df, expected): - result = df_with_nested_columns_to_flat_data( - df=df, - xnp=numpy, - ) - - assert set(result.keys()) == set(expected.keys()) - for key in result: - assert_array_equal(result[key], expected[key]) diff --git a/tests/ttsim/interface_dag_elements/test_failures.py b/tests/ttsim/interface_dag_elements/test_failures.py deleted file mode 100644 index 3f4a6a56b3..0000000000 --- a/tests/ttsim/interface_dag_elements/test_failures.py +++ /dev/null @@ -1,1617 +0,0 @@ -from __future__ import annotations - -import copy -import datetime -import re -from pathlib import Path -from typing import TYPE_CHECKING, Literal - -import dags.tree as dt -import numpy -import pandas as pd -import pytest - -try: - import jax -except ImportError: - jax = None - -from ttsim import InputData, MainTarget, OrigPolicyObjects, TTTargets, main -from ttsim.interface_dag_elements.fail_if import ( - ConflictingActivePeriodsError, - _param_with_active_periods, - _ParamWithActivePeriod, - active_periods_overlap, - assert_valid_ttsim_pytree, - environment_is_invalid, - foreign_keys_are_invalid_in_data, - group_ids_are_outside_top_level_namespace, - group_variables_are_not_constant_within_groups, - input_data_is_invalid, - input_df_has_bool_or_numeric_column_names, - input_df_mapper_columns_missing_in_df, - input_df_mapper_has_incorrect_format, - param_function_depends_on_column_objects, - paths_are_missing_in_targets_tree_mapper, - targets_are_not_in_specialized_environment_or_data, -) -from ttsim.tt_dag_elements import ( - ConsecutiveIntLookupTableParam, - ConsecutiveIntLookupTableParamValue, - DictParam, - PiecewisePolynomialParam, - PiecewisePolynomialParamValue, - group_creation_function, - param_function, - policy_function, - policy_input, -) - -if TYPE_CHECKING: - from types import ModuleType - - from jaxtyping import Array, Float - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - OrigParamSpec, - PolicyEnvironment, - ) - -METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" - -_GENERIC_PARAM_HEADER = { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, -} -_GENERIC_PARAM_SPEC = { - "start_date": "2024-01-01", - "end_date": "2024-12-31", - **_GENERIC_PARAM_HEADER, -} - -_SOME_CONSECUTIVE_INT_LOOKUP_TABLE_PARAM = ConsecutiveIntLookupTableParam( - leaf_name="some_consecutive_int_nd_lookup_table_param", - value=ConsecutiveIntLookupTableParamValue( - bases_to_subtract=numpy.array([1]), - xnp=numpy, - values_to_look_up=numpy.array([1, 2, 3]), - ), - **_GENERIC_PARAM_SPEC, -) - -_SOME_DICT_PARAM = DictParam( - leaf_name="some_dict_param", - value={"a": 1, "b": 2}, - **_GENERIC_PARAM_SPEC, -) - - -_SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( - leaf_name="some_piecewise_polynomial_param", - value=PiecewisePolynomialParamValue( - thresholds=numpy.array([1, 2, 3]), - intercepts=numpy.array([1, 2, 3]), - rates=numpy.array([1, 2, 3]), - ), - **_GENERIC_PARAM_SPEC, -) - - -@pytest.fixture -def minimal_data_tree(): - return { - "hh_id": numpy.array([1, 2, 3]), - "p_id": numpy.array([1, 2, 3]), - } - - -def identity(x: int) -> int: - return x - - -def return_one() -> int: - return 1 - - -def return_two() -> int: - return 2 - - -def return_three() -> int: - return 3 - - -@group_creation_function() -def fam_id() -> int: - pass - - -@pytest.fixture(scope="module") -def minimal_input_data(): - n_individuals = 5 - return { - "p_id": pd.Series(numpy.arange(n_individuals), name="p_id"), - "fam_id": pd.Series(numpy.arange(n_individuals), name="fam_id"), - } - - -def mettsim_environment(backend) -> PolicyEnvironment: - return main( - main_target="policy_environment", - orig_policy_objects={"root": Path(__file__).parent.parent / "mettsim"}, - policy_date=datetime.date(2025, 1, 1), - backend=backend, - ) - - -def some_x(x): - return x - - -@param_function() -def some_param_func_returning_array_of_length_2(xnp: ModuleType) -> Float[Array, 2]: - return xnp.array([1, 2]) - - -@param_function() -def some_param_func_returning_list_of_length_2() -> list[int]: - return [1, 2] - - -@pytest.mark.parametrize( - ("tree", "leaf_checker", "err_substr"), - [ - ( - {"a": 1, "b": 2}, - lambda leaf: leaf is None, - "Leaf at tree[a] is invalid: got 1 of type .", - ), - ( - {"a": None, "b": {"c": None, "d": 1}}, - lambda leaf: leaf is None, - "Leaf at tree[b][d] is invalid: got 1 of type .", - ), - ( - [1, 2, 3], - lambda leaf: leaf is None, - "tree must be a dict, got .", - ), - ( - {1: 2}, - lambda leaf: leaf is None, - "Key 1 in tree must be a string but got .", - ), - ], -) -def test_assert_valid_ttsim_pytree(tree, leaf_checker, err_substr): - with pytest.raises(TypeError, match=re.escape(err_substr)): - assert_valid_ttsim_pytree( - tree=tree, - leaf_checker=leaf_checker, - tree_name="tree", - ) - - -@pytest.mark.parametrize( - ("orig_tree_with_column_objects_and_param_functions", "orig_tree_with_params"), - [ - # Same global module, no overlapping periods, no name clashes. - ( - { - ("c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - { - ("c", "g"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 1}, - }, - }, - ), - # Same submodule, overlapping periods, different leaf names so no name clashes. - ( - { - ("x", "c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("x", "c", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="g", - )(identity), - }, - { - ("x", "c", "h"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 2}, - }, - }, - ), - # Different submodules, no overlapping periods, no name clashes. - ( - { - ("x", "c", "f"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - )(identity), - ("x", "d", "f"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - )(identity), - }, - { - ("x", "c", "g"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 3}, - }, - }, - ), - # Different paths, overlapping periods, same names but no clashes. - ( - { - ("x", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("y", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - { - ("z", "a", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 4}, - }, - }, - ), - # Different yaml files, no name clashes because of different names. - ( - {}, - { - ("x", "a", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 5}, - }, - ("x", "b", "g"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 6}, - }, - }, - ), - # Same leaf names across functions / parameters, but no overlapping periods. - ( - { - ("c", "a"): policy_function( - start_date="2012-01-01", - end_date="2015-12-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - { - ("c", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/foo", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - }, - }, - ), - # Different periods specified in different files. - ( - {}, - { - ("c", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - }, - ("d", "f"): { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/foo", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - }, - }, - ), - ], -) -def test_fail_if_active_periods_overlap_passes( - orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, - orig_tree_with_params: FlatOrigParamSpecs, -): - active_periods_overlap( - orig_tree_with_column_objects_and_param_functions, - orig_tree_with_params, - ) - - -@pytest.mark.parametrize( - ("orig_tree_with_column_objects_and_param_functions", "orig_tree_with_params"), - [ - # Exact overlap. - ( - { - ("a",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - {}, - ), - # Active period for "a" is subset of "b". - ( - { - ("a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("b"): policy_function( - start_date="2021-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - }, - {}, - ), - # Some overlap. - ( - { - ("a",): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("b",): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - {}, - ), - # Same as before, but defined in different modules. - ( - { - ("c", "a"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - leaf_name="f", - )(identity), - ("d", "b"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - }, - {}, - ), - # Same as before, but defined in different modules without leaf name. - ( - { - ("c", "f"): policy_function( - start_date="2023-01-02", - end_date="2023-02-01", - )(identity), - ("d", "f"): policy_function( - start_date="2022-01-01", - end_date="2023-01-31", - )(identity), - }, - {}, - ), - # Same global module, no overlap in functions, name clashes leaf name / yaml. - ( - { - ("c", "a"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("c", "b"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - { - ("c", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 1}, - }, - }, - ), - # Same paths, no overlap in functions, name clashes leaf name / yaml. - ( - { - ("x", "a", "b"): policy_function( - start_date="2023-01-01", - end_date="2023-01-31", - leaf_name="f", - )(identity), - ("x", "a", "c"): policy_function( - start_date="2023-02-01", - end_date="2023-02-28", - leaf_name="f", - )(identity), - }, - { - ("x", "a", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 2}, - }, - }, - ), - # Same paths, name clashes within params from different yaml files. - ( - {}, - { - ("x", "a", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 3}, - }, - ("x", "b", "f"): { # type: ignore[misc] - **_GENERIC_PARAM_HEADER, - datetime.date(2023, 1, 1): {"value": 4}, - }, - }, - ), - ], -) -def test_fail_if_active_periods_overlap_raises( - orig_tree_with_column_objects_and_param_functions: FlatColumnObjectsParamFunctions, - orig_tree_with_params: FlatOrigParamSpecs, -): - with pytest.raises(ConflictingActivePeriodsError): - active_periods_overlap( - orig_tree_with_column_objects_and_param_functions, - orig_tree_with_params, - ) - - -@pytest.mark.parametrize( - ( - "environment", - "tt_targets__tree", - ), - [ - ( - { - "some_dict_param": _SOME_DICT_PARAM, - }, - {"some_dict_param": "res1"}, - ), - ], -) -def test_fail_if_data_paths_are_missing_in_paths_to_mapped_column_names( - environment, - tt_targets__tree, - minimal_data_tree, - backend, -): - results__tree = main( - main_target="results__tree", - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - ) - with pytest.raises( - ValueError, - match="are not mapped to a column name", - ): - paths_are_missing_in_targets_tree_mapper( - results__tree=results__tree, - tt_targets__tree=tt_targets__tree, - ) - - -def test_fail_if_foreign_keys_are_invalid_in_data_allow_minus_one_as_foreign_key( - backend, -): - flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) - data = { - ("p_id",): pd.Series([1, 2, 3]), - ("p_id_spouse",): pd.Series([-1, 1, 2]), - } - - foreign_keys_are_invalid_in_data( - labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, - input_data__flat=data, - specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, - ) - - -def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_non_existing_p_id( - backend, -): - flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) - data = { - ("p_id",): pd.Series([1, 2, 3]), - ("p_id_spouse",): pd.Series([0, 1, 2]), - } - - with pytest.raises(ValueError, match=r"not a valid p_id in the\sinput data"): - foreign_keys_are_invalid_in_data( - labels__root_nodes={ - dt.qname_from_tree_path(n) for n in data if n != ("p_id",) - }, - input_data__flat=data, - specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, - ) - - -def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_allowed( - backend, -): - flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) - data = { - ("p_id",): pd.Series([1, 2, 3]), - ("p_id_child_",): pd.Series([1, 3, 3]), - } - - foreign_keys_are_invalid_in_data( - labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, - input_data__flat=data, - specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, - ) - - -def test_fail_if_foreign_keys_are_invalid_in_data_when_foreign_key_points_to_same_row_if_not_allowed( - backend, -): - flat_objects_tree = dt.flatten_to_qnames(mettsim_environment(backend)) - data = { - ("p_id",): pd.Series([1, 2, 3]), - ("child_tax_credit__p_id_recipient",): pd.Series([1, 3, 3]), - } - - foreign_keys_are_invalid_in_data( - labels__root_nodes={dt.qname_from_tree_path(n) for n in data if n != ("p_id",)}, - input_data__flat=data, - specialized_environment__without_tree_logic_and_with_derived_functions=flat_objects_tree, - ) - - -def test_fail_if_group_ids_are_outside_top_level_namespace(): - with pytest.raises( - ValueError, - match="Group identifiers must live in the top-level namespace. Got:", - ): - group_ids_are_outside_top_level_namespace({"n1": {"fam_id": fam_id}}) - - -def test_fail_if_group_variables_are_not_constant_within_groups(): - data = { - "p_id": numpy.array([0, 1, 2]), - "foo_kin": numpy.array([1, 2, 2]), - "kin_id": numpy.array([1, 1, 2]), - } - with pytest.raises( - ValueError, - match="The following data inputs do not have a unique value within", - ): - group_variables_are_not_constant_within_groups( - labels__grouping_levels=("kin",), - labels__root_nodes={n for n in data if n != "p_id"}, - processed_data=data, - ) - - -@pytest.mark.parametrize( - "df", - [ - pd.DataFrame({True: [1, 2]}), - pd.DataFrame({1: [1, 2]}), - ], -) -def test_fail_if_input_df_has_bool_or_numeric_column_names(df): - with pytest.raises( - ValueError, - match="DataFrame column names cannot be booleans or numbers.", - ): - input_df_has_bool_or_numeric_column_names(df) - - -@pytest.mark.parametrize( - ( - "input_data__df_and_mapper__mapper", - "expected_error_message", - ), - [ - ( - [], - "The inputs tree to column mapping must be a \\(nested\\) dictionary.", - ), - ( - { - "n1": { - "n2": pd.Series([1, 2, 3]), - }, - }, - "n1__n2: Series", - ), - ( - { - "n1": { - "n2": None, - }, - }, - "n1__n2: NoneType", - ), - ( - { - "n1": { - True: 2, - }, - }, - "All path elements of `", - ), - ], -) -def test_fail_if_input_df_mapper_has_incorrect_format( - input_data__df_and_mapper__mapper, - expected_error_message, - xnp: ModuleType, -): - with pytest.raises(TypeError, match=expected_error_message): - input_df_mapper_has_incorrect_format(input_data__df_and_mapper__mapper, xnp=xnp) - - -@pytest.mark.parametrize( - ( - "environment", - "tt_targets__tree", - "match", - ), - [ - ( - { - "some_piecewise_polynomial_param": _SOME_PIECEWISE_POLYNOMIAL_PARAM, - }, - {"some_piecewise_polynomial_param": "res1"}, - "The data contains objects that cannot be cast to a pandas.DataFrame", - ), - ( - { - "some_consecutive_int_lookup_table_param": ( - _SOME_CONSECUTIVE_INT_LOOKUP_TABLE_PARAM - ), - }, - {"some_consecutive_int_lookup_table_param": "res1"}, - "The data contains objects that cannot be cast to a pandas.DataFrame", - ), - ( - { - "some_param_func_returning_list_of_length_2": some_param_func_returning_list_of_length_2, - }, - {"some_param_func_returning_list_of_length_2": "res1"}, - "The data contains objects that cannot be cast to a pandas.DataFrame", - ), - ], -) -def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_type( - environment, - tt_targets__tree, - minimal_data_tree, - match, - backend, -): - with pytest.raises(TypeError, match=match): - main( - main_target=MainTarget.results.df_with_nested_columns, - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - ) - - -@pytest.mark.parametrize( - ( - "environment", - "tt_targets__tree", - "match", - ), - [ - ( - { - "some_param_func_returning_array_of_length_2": some_param_func_returning_array_of_length_2, - }, - {"some_param_func_returning_array_of_length_2": "res1"}, - "The data contains paths that don't have the same length", - ), - ], -) -def test_fail_if_non_convertible_objects_in_results_tree_because_of_object_length( - environment, - tt_targets__tree, - minimal_data_tree, - match, - backend, -): - with pytest.raises(ValueError, match=match): - main( - main_target=MainTarget.results.df_with_nested_columns, - input_data={"tree": minimal_data_tree}, - policy_environment=environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - ) - - -def test_fail_if_p_id_does_not_exist(xnp): - data = {("fam_id",): xnp.array([1, 2, 3])} - - with pytest.raises( - ValueError, - match="The input data must contain the `p_id` column.", - ): - input_data_is_invalid(data) - - -def test_fail_if_p_id_is_missing_via_main(backend): - data = {"fam_id": pd.Series([1, 2, 3], name="fam_id")} - with pytest.raises( - ValueError, - match="The input data must contain the `p_id` column.", - ): - main( - main_target="fail_if__input_data_is_invalid", - input_data={"tree": data}, - policy_environment={}, - tt_targets={"tree": {}}, - evaluation_date=datetime.date(2025, 1, 1), - rounding=False, - backend=backend, - ) - - -def test_fail_if_p_id_is_not_unique(xnp): - data = {("p_id",): xnp.array([1, 1, 3, 4])} - - with pytest.raises( - ValueError, - match="The following `p_id`s are not unique in the input data", - ): - input_data_is_invalid(data) - - -def test_fail_if_p_id_is_not_unique_via_main(minimal_input_data, backend): - data = copy.deepcopy(minimal_input_data) - data["p_id"][:] = 1 - - with pytest.raises( - ValueError, - match="The following `p_id`s are not unique in the input data", - ): - main( - main_target="fail_if__input_data_is_invalid", - input_data={"tree": data}, - policy_environment={}, - tt_targets={"tree": {}}, - policy_date=datetime.date(2025, 1, 1), - rounding=False, - backend=backend, - ) - - -@pytest.mark.parametrize( - "data", - [ - {("p_id",): numpy.array([1, "2", 3])}, - {("p_id",): numpy.array([1, 2, 3.0])}, - {("p_id",): pd.Series([1, 2, 3.0])}, - {("p_id",): pd.Series([1, "2", 3.0])}, - ], -) -def test_fail_if_p_id_is_not_int(data): - with pytest.raises( - ValueError, - match="The `p_id` column must be of integer dtype.", - ): - input_data_is_invalid(data) - - -@pytest.mark.parametrize( - "data", - [ - {("p_id",): numpy.array([1, 2, 3])}, - {("p_id",): pd.Series([1, 2, 3])}, - ], -) -def test_p_id_can_be_specified_as_series_and_numpy_array(data): - input_data_is_invalid(data) - - -@pytest.mark.skipif_numpy -def test_p_id_can_be_specified_as_jax_array(xnp): - data = {("p_id",): xnp.array([1, 2, 3])} - input_data_is_invalid(data) - - -def test_fail_if_input_data_has_different_lengths(backend): - data = {"p_id": numpy.arange(4), "a": numpy.arange(8)} - with pytest.raises( - ValueError, - match="The lengths of the following columns do not match the length of the", - ): - main( - main_target="fail_if__input_data_is_invalid", - input_data={"tree": data}, - policy_environment={}, - tt_targets={"tree": {}}, - evaluation_date=datetime.date(2025, 1, 1), - rounding=False, - backend=backend, - ) - - -def test_fail_if_tt_root_nodes_are_missing_via_main(minimal_input_data, backend): - def b(a): - return a - - def c(b): - return b - - policy_environment = { - "b": policy_function(leaf_name="b")(b), - "c": policy_function(leaf_name="c")(c), - } - - with pytest.raises( - ValueError, - match="The following data columns are missing", - ): - main( - main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], - input_data={"tree": minimal_input_data}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"c": None}}, - rounding=False, - backend=backend, - ) - - -def test_fail_if_tt_root_nodes_are_missing_asks_for_individual_level_columns( - minimal_input_data, backend -): - @policy_function() - def b(a_fam): - return a_fam - - @policy_input() - def a() -> int: - pass - - policy_environment = { - "fam_id": fam_id, - "a": a, - "b": b, - } - - with pytest.raises( - ValueError, - match="Note that the missing nodes contain columns that are grouped by ", - ): - main( - main_targets=["results__tree", "fail_if__tt_root_nodes_are_missing"], - input_data={"tree": minimal_input_data}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"b": None}}, - include_warn_nodes=False, - include_fail_nodes=False, - rounding=False, - backend=backend, - ) - - -@pytest.mark.parametrize( - ( - "policy_environment", - "tt_targets", - "labels__processed_data_columns", - "expected_error_match", - ), - [ - ({"foo": some_x}, {"bar": None}, set(), "('bar',)"), - ({"foo__baz": some_x}, {"foo__bar": None}, set(), "('foo', 'bar')"), - ({"foo": some_x}, {"bar": None}, {"spam"}, "('bar',)"), - ({"foo__baz": some_x}, {"foo__bar": None}, {"spam"}, "('foo', 'bar')"), - ], -) -def test_fail_if_targets_are_not_in_specialized_environment_or_data( - policy_environment, - tt_targets, - labels__processed_data_columns, - expected_error_match, -): - with pytest.raises( - ValueError, - match="The following targets have no corresponding function", - ) as e: - targets_are_not_in_specialized_environment_or_data( - specialized_environment__without_tree_logic_and_with_derived_functions=dt.flatten_to_qnames( - policy_environment - ), - tt_targets__qname=tt_targets, - labels__processed_data_columns=labels__processed_data_columns, - ) - assert expected_error_match in str(e.value) - - -def test_fail_if_targets_are_not_in_specialized_environment_or_data_via_main( - minimal_input_data, - backend, -): - with pytest.raises( - ValueError, - match="The following targets have no corresponding function", - ): - main( - main_target="fail_if__targets_are_not_in_specialized_environment_or_data", - input_data={"tree": minimal_input_data}, - policy_environment={}, - tt_targets={"tree": {"unknown_target": None}}, - evaluation_date=datetime.date(2025, 1, 1), - rounding=False, - backend=backend, - ) - - -@pytest.mark.parametrize( - ("param_spec", "leaf_name", "expected"), - [ - ( - { - "name": {"de": "spam", "en": "spam"}, - "description": {"de": "spam", "en": "spam"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"note": "completely empty"}, - }, - "spam", - [], - ), - ( - { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - }, - "foo", - [ - _ParamWithActivePeriod( - leaf_name="foo", - original_function_name="foo", - start_date=datetime.date(1984, 1, 1), - end_date=datetime.date(2099, 12, 31), - **_GENERIC_PARAM_HEADER, - ), - ], - ), - ( - { - "name": {"de": "foo", "en": "foo"}, - "description": {"de": "foo", "en": "foo"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"note": "stop"}, - }, - "foo", - [ - _ParamWithActivePeriod( - leaf_name="foo", - original_function_name="foo", - start_date=datetime.date(1984, 1, 1), - end_date=datetime.date(1984, 12, 31), - **_GENERIC_PARAM_HEADER, - ), - ], - ), - ( - { - "name": {"de": "bar", "en": "bar"}, - "description": {"de": "bar", "en": "bar"}, - "unit": None, - "reference_period": None, - "type": "scalar", - datetime.date(1984, 1, 1): {"value": 1}, - datetime.date(1985, 1, 1): {"value": 3}, - datetime.date(1995, 1, 1): {"value": 5}, - datetime.date(2012, 1, 1): {"note": "more complex, see function"}, - datetime.date(2016, 1, 1): {"value": 10}, - datetime.date(2023, 2, 1): { - "note": "more complex, see function", - "reference": "https://example.com/bar", - }, - datetime.date(2023, 3, 1): { - "value": 13, - "note": "Complex didn't last long.", - }, - }, - "bar", - [ - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(2023, 3, 1), - end_date=datetime.date(2099, 12, 31), - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(2016, 1, 1), - end_date=datetime.date(2023, 1, 31), - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - _ParamWithActivePeriod( - leaf_name="bar", - original_function_name="bar", - start_date=datetime.date(1984, 1, 1), - end_date=datetime.date(2011, 12, 31), - name={"de": "bar", "en": "bar"}, - description={"de": "bar", "en": "bar"}, - unit=None, - reference_period=None, - ), - ], - ), - ], -) -def test_ttsim_param_with_active_periods( - param_spec: OrigParamSpec, - leaf_name: str, - expected: list[_ParamWithActivePeriod], -): - actual = _param_with_active_periods( - param_spec=param_spec, - leaf_name=leaf_name, - ) - assert actual == expected - - -def test_fail_if_input_df_mapper_columns_missing_in_df(): - df = pd.DataFrame({"a": [1]}) - mapper = {"b": "a", "c": "d", "e": 1, "f": 1.5, "g": True, "h": "i"} - with pytest.raises( - ValueError, - match=r"The following columns are missing: \['d', 'i'\]", - ): - input_df_mapper_columns_missing_in_df( - input_data__df_and_mapper__df=df, - input_data__df_and_mapper__mapper=mapper, - ) - - -def test_fail_if_input_df_mapper_columns_missing_in_df_via_main( - backend: Literal["jax", "numpy"], -): - df = pd.DataFrame({"a": [1]}) - mapper = {"b": "a", "c": "d", "e": 1, "f": 1.5, "g": True, "h": "i"} - with pytest.raises( - ValueError, - match=r"The following columns are missing: \['d', 'i'\]", - ): - main( - input_data=InputData.df_and_mapper(df=df, mapper=mapper), - main_target=MainTarget.results.df_with_mapper, - orig_policy_objects={"root": METTSIM_ROOT}, - tt_targets=TTTargets(qname={"d": None}), - policy_date_str="2025-01-01", - backend=backend, - ) - - -@pytest.mark.parametrize( - ( - "tt_targets__tree", - "match", - ), - [ - ( - { - 1: None, - "number_of_individuals_kin": None, - }, - "Key 1 in tt_targets__tree must be a string but", - ), - ( - { - "number_of_individuals_kin": 1, - }, - r"Leaf at tt_targets__tree\[number_of_individuals_kin\] is invalid", - ), - ( - ["number_of_individuals_kin"], - "tt_targets__tree must be a dict, got", - ), - ( - "number_of_individuals_kin", - "tt_targets__tree must be a dict, got", - ), - ], -) -def test_invalid_tt_targets_tree( - tt_targets__tree, - match, - backend: Literal["jax", "numpy"], - xnp: ModuleType, - minimal_data_tree, -): - with pytest.raises(TypeError, match=match): - main( - main_target=MainTarget.results.df_with_nested_columns, - backend=backend, - input_data=InputData.tree( - tree={ - **minimal_data_tree, - "kin_id": xnp.array([0, 1, 2]), - } - ), - orig_policy_objects={"root": METTSIM_ROOT}, - policy_date_str="2025-01-01", - tt_targets={"tree": tt_targets__tree}, - ) - - -@pytest.mark.parametrize( - ( - "input_data_tree", - "match", - ), - [ - ( - { - "number_of_individuals_kin": [1], - }, - r"Leaf at input_data__tree\[number_of_individuals_kin\] is invalid", - ), - ( - {"number_of_individuals_kin": "1"}, - r"Leaf at input_data__tree\[number_of_individuals_kin\] is invalid", - ), - ], -) -def test_invalid_input_data_tree_via_main( - input_data_tree, match, backend: Literal["jax", "numpy"], xnp: ModuleType -): - input_data_tree_with_p_id = { - **input_data_tree, - "p_id": xnp.array([2]), - } - with pytest.raises(TypeError, match=match): - main( - main_target=MainTarget.results.df_with_nested_columns, - backend=backend, - input_data=InputData.tree(tree=input_data_tree_with_p_id), - orig_policy_objects={"root": METTSIM_ROOT}, - policy_date_str="2025-01-01", - ) - - -@pytest.mark.parametrize( - ( - "policy_environment", - "match", - ), - [ - ( - { - "invalid_leaf": 42, - }, - r"Leaf at policy_environment\[invalid_leaf\] is invalid", - ), - ( - { - "nested": { - "invalid_leaf": "not_allowed_string", - }, - }, - r"Leaf at policy_environment\[nested\]\[invalid_leaf\] is invalid", - ), - ( - { - "nested": { - "another_invalid": [1, 2, 3], - }, - }, - r"Leaf at policy_environment\[nested\]\[another_invalid\] is invalid", - ), - ( - { - "nested": { - "yet_another": {"dict": "not_allowed"}, - }, - }, - r"Leaf at policy_environment\[nested\]\[yet_another\]\[dict\] is invalid", - ), - ( - { - 1: "valid_string", - }, - "Key 1 in policy_environment must be a string but", - ), - ( - ["not_a_dict"], - "policy_environment must be a dict, got", - ), - ], -) -def test_fail_if_environment_is_invalid(policy_environment, match): - with pytest.raises(TypeError, match=match): - environment_is_invalid(policy_environment) - - -@pytest.mark.parametrize( - "policy_environment", - [ - # Valid environment with policy functions - { - "valid_func": policy_function(leaf_name="valid_func")(identity), - "another_func": policy_function(leaf_name="another_func")(return_one), - }, - # Valid environment with param functions - { - "valid_param": some_param_func_returning_array_of_length_2, - "another_param": some_param_func_returning_list_of_length_2, - }, - # Valid environment with param objects - { - "valid_param_obj": _SOME_DICT_PARAM, - "another_param_obj": _SOME_PIECEWISE_POLYNOMIAL_PARAM, - }, - # Valid environment with module types - { - "numpy_module": numpy, - "jax_string": "jax", - "numpy_string": "numpy", - }, - # Valid environment with nested structure - { - "nested": { - "valid_func": policy_function(leaf_name="nested_func")(identity), - "valid_param": some_param_func_returning_array_of_length_2, - }, - "top_level": _SOME_DICT_PARAM, - }, - # Valid environment with mixed types - { - "func": policy_function(leaf_name="func")(identity), - "param": some_param_func_returning_array_of_length_2, - "param_obj": _SOME_DICT_PARAM, - "module": numpy, - "backend": "jax", - }, - ], -) -def test_environment_is_invalid_passes(policy_environment): - """Test that valid environments pass the validation.""" - environment_is_invalid(policy_environment) - - -def test_invalid_input_data_as_object_via_main(backend: Literal["jax", "numpy"]): - with pytest.raises(TypeError, match="input_data__tree must be a dict, got"): - main( - main_target=MainTarget.results.df_with_nested_columns, - backend=backend, - input_data=InputData.tree(tree=object()), - orig_policy_objects={"root": METTSIM_ROOT}, - policy_date_str="2025-01-01", - ) - - -@pytest.mark.parametrize( - "main_target", - [ - MainTarget.specialized_environment.tax_transfer_function, - MainTarget.raw_results.columns, - ], -) -def test_raise_tt_root_nodes_are_missing_without_input_data( - main_target: MainTarget, - backend: Literal["jax", "numpy"], -): - with pytest.raises( - ValueError, match="For computing results, you need to pass data. " - ): - main( - policy_date_str="2025-01-01", - main_target=main_target, - backend=backend, - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - -def test_raise_some_error_without_input_data( - backend: Literal["jax", "numpy"], -): - with pytest.raises( - ValueError, - match=( - "For computing results, you need to pass data. " - "|" - "The following arguments to `main` are missing" - ), - ): - main( - policy_date_str="2025-01-01", - main_target=MainTarget.results.df_with_mapper, - backend=backend, - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - -@pytest.mark.skipif(jax is None, reason="Jax is not installed") -def test_backend_has_changed_from_jax_to_numpy_passes(): - policy_environment = main( - main_target=MainTarget.policy_environment, - policy_date_str="2000-01-01", - orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), - backend="jax", - ) - input_data = InputData.tree( - tree={ - "p_id": jax.numpy.array([0, 1, 2]), # type: ignore[union-attr] - "property_tax": { - "acre_size_in_hectares": jax.numpy.array([5, 20, 200]), # type: ignore[union-attr] - }, - } - ) - main( - main_target=MainTarget.results.df_with_nested_columns, - input_data=input_data, - policy_environment=policy_environment, - tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), - backend="numpy", - ) - - -@pytest.mark.skipif(jax is None, reason="Jax is not installed") -def test_backend_has_changed_from_numpy_for_processed_data_to_jax_passes(): - input_data = InputData.tree( - tree={ - "p_id": numpy.array([0, 1, 2]), - "property_tax": { - "acre_size_in_hectares": numpy.array([5, 20, 200]), - }, - } - ) - processed_data = main( - main_target=MainTarget.processed_data, - backend="numpy", - input_data=input_data, - ) - main( - main_target=MainTarget.results.df_with_nested_columns, - policy_date_str="2000-01-01", - orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), - input_data=input_data, - processed_data=processed_data, - tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), - backend="jax", - ) - - -@pytest.mark.skipif(jax is None, reason="Jax is not installed") -def test_backend_has_changed_from_numpy_for_policy_environment_to_jax_raises( - xnp: ModuleType, -): - policy_environment = main( - main_target=MainTarget.policy_environment, - policy_date_str="2000-01-01", - orig_policy_objects=OrigPolicyObjects(root=METTSIM_ROOT), - backend="numpy", - ) - input_data = InputData.tree( - tree={ - "p_id": xnp.array([0, 1, 2]), - "property_tax": { - "acre_size_in_hectares": xnp.array([5, 20, 200]), - }, - } - ) - with pytest.raises(ValueError, match="Backend has changed"): - main( - main_target=MainTarget.results.df_with_nested_columns, - input_data=input_data, - policy_environment=policy_environment, - tt_targets=TTTargets(tree={"property_tax": {"amount_y": None}}), - backend="jax", - ) - - -@param_function() -def valid_param_function(x: int) -> int: - """A valid param function that only depends on parameters.""" - return x * 2 - - -@param_function() -def invalid_param_function(some_policy_function: int) -> int: - """An invalid param function that depends on a column object.""" - return some_policy_function * 2 - - -@policy_function() -def some_policy_function(x: int) -> int: - """A policy function for testing.""" - return x + 1 - - -@policy_input() -def some_policy_input() -> int: - """A policy input for testing.""" - - -@pytest.mark.parametrize( - "specialized_environment", - [ - # Valid environment with only param functions and no dependencies - { - "valid_param": valid_param_function, - }, - # Valid environment with param functions and column objects but no dependencies - { - "valid_param": valid_param_function, - "some_policy_function": some_policy_function, - }, - # Valid environment with mixed types but no violations - { - "valid_param": valid_param_function, - "some_policy_function": some_policy_function, - "policy_input": some_policy_input, - "some_scalar": 42, - "some_dict_param": _SOME_DICT_PARAM, - }, - ], -) -def test_param_function_depends_on_column_objects_passes(specialized_environment): - """Test that valid environments pass the validation.""" - param_function_depends_on_column_objects(specialized_environment) - - -@pytest.mark.parametrize( - ("specialized_environment", "expected_error_match"), - [ - ( - { - "invalid_param": invalid_param_function, - "some_policy_function": some_policy_function, - }, - "`invalid_param` depends on `some_policy_function`", - ), - ( - { - "invalid_param": invalid_param_function, - "some_policy_function": some_policy_input, - }, - "`invalid_param` depends on `some_policy_function`", - ), - ( - { - "valid_param": valid_param_function, - "invalid_param": invalid_param_function, - "some_policy_function": some_policy_function, - }, - "`invalid_param` depends on `some_policy_function`", - ), - ], -) -def test_param_function_depends_on_column_objects_raises( - specialized_environment, expected_error_match -): - """Test that invalid environments raise the expected error.""" - with pytest.raises(ValueError, match=expected_error_match): - param_function_depends_on_column_objects(specialized_environment) - - -def test_param_function_depends_on_column_objects_via_main( - backend: Literal["jax", "numpy"], - xnp: ModuleType, -): - """Test that the param_function_depends_on_column_objects check works via main.""" - - with pytest.raises( - ValueError, - match="`invalid_param` depends on `some_policy_function`", - ): - main( - policy_date_str="2025-01-01", - main_target=MainTarget.results.df_with_mapper, - tt_targets={ - "tree": { - "invalid_param": None, - }, - }, - input_data={ - "tree": { - "p_id": xnp.array([1, 2, 3]), - "x": xnp.array([1, 2, 3]), - }, - }, - backend=backend, - policy_environment={ - "invalid_param": invalid_param_function, - "some_policy_function": some_policy_function, - }, - ) diff --git a/tests/ttsim/interface_dag_elements/test_labels.py b/tests/ttsim/interface_dag_elements/test_labels.py deleted file mode 100644 index 4dd6299298..0000000000 --- a/tests/ttsim/interface_dag_elements/test_labels.py +++ /dev/null @@ -1,45 +0,0 @@ -from __future__ import annotations - -import pytest - -from ttsim.interface_dag_elements.labels import grouping_levels, top_level_namespace -from ttsim.tt_dag_elements import policy_function, policy_input - - -def identity(x: int) -> int: - return x - - -@policy_input() -def fam_id() -> int: - pass - - -@pytest.mark.parametrize( - ( - "policy_environment", - "expected", - ), - [ - ( - { - "foo_m": policy_function(leaf_name="foo_m")(identity), - "fam_id": fam_id, - }, - {"foo_m", "foo_y", "foo_m_fam", "foo_y_fam"}, - ), - ( - { - "foo": policy_function(leaf_name="foo")(identity), - "fam_id": fam_id, - }, - {"foo", "foo_fam"}, - ), - ], -) -def test_get_top_level_namespace(policy_environment, expected): - result = top_level_namespace( - policy_environment=policy_environment, - grouping_levels=grouping_levels(policy_environment), - ) - assert all(name in result for name in expected) diff --git a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py b/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py deleted file mode 100644 index fcb4475fc6..0000000000 --- a/tests/ttsim/interface_dag_elements/test_orig_policy_objects.py +++ /dev/null @@ -1,52 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -import pytest - -from ttsim.interface_dag_elements.orig_policy_objects import ( - _find_files_recursively, - load_module, -) -from ttsim.tt_dag_elements.param_objects import ( - ConsecutiveIntLookupTableParam, - DictParam, - PiecewisePolynomialParam, - RawParam, - ScalarParam, -) - -METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" - - -def test_load_path(): - assert load_module( - path=METTSIM_ROOT / "payroll_tax" / "amount.py", - root=METTSIM_ROOT, - ) - - -def test_dont_load_init_py(): - """Don't load __init__.py files as sources for PolicyFunctions and - AggregationSpecs. - """ - all_files = _find_files_recursively(root=METTSIM_ROOT, suffix=".py") - assert "__init__.py" not in [file.name for file in all_files] - - -@pytest.mark.parametrize( - "param_object", - [ - ScalarParam, - DictParam, - PiecewisePolynomialParam, - ConsecutiveIntLookupTableParam, - RawParam, - ], -) -def test_param_object_requires_value(param_object): - with pytest.raises( - ValueError, - match="'value' field must be specified for any type of 'ParamObject'", - ): - param_object() diff --git a/tests/ttsim/interface_dag_elements/test_policy_environment.py b/tests/ttsim/interface_dag_elements/test_policy_environment.py deleted file mode 100644 index 71241355cc..0000000000 --- a/tests/ttsim/interface_dag_elements/test_policy_environment.py +++ /dev/null @@ -1,231 +0,0 @@ -"""Some tests for the policy_environment module.""" - -from __future__ import annotations - -import datetime -from pathlib import Path -from typing import TYPE_CHECKING - -import optree -import pandas as pd -import pytest - -from ttsim import main -from ttsim.interface_dag_elements.orig_policy_objects import ( - column_objects_and_param_functions, -) -from ttsim.interface_dag_elements.policy_environment import ( - _active_column_objects_and_param_functions, - _active_param_objects, - _get_param_value, -) -from ttsim.tt_dag_elements import ScalarParam, policy_function - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import ( - NestedColumnObjectsParamFunctions, - ) - -METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" - - -@pytest.fixture(scope="module") -def some_params_spec_with_updates_previous(): - return [ - { - "a": 1, - "b": 2, - }, - { - "updates_previous": True, - "b": 4, - }, - ] - - -@pytest.fixture(scope="module") -def some_int_param(): - return ScalarParam( - value=1, - leaf_name="some_int_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_int_param", - description="Some int param", - unit=None, - reference_period=None, - note=None, - reference=None, - ) - - -def test_add_jahresanfang(xnp: ModuleType): - spec = { - "name": {"de": "Test", "en": "Check"}, - "description": {"de": "Nichts zu sehen", "en": "Nothing to do"}, - "type": "scalar", - "add_jahresanfang": True, - datetime.date(2020, 1, 1): {"value": 1}, - datetime.date(2020, 7, 1): {"value": 2}, - } - _active_ttsim_tree_with_params = _active_param_objects( - orig={("spam.yaml", "foo"): spec}, - policy_date=pd.to_datetime("2020-07-01").date(), - xnp=xnp, - ) - assert _active_ttsim_tree_with_params["foo"].value == 2 - assert _active_ttsim_tree_with_params["foo_jahresanfang"].value == 1 - - -def test_input_is_recognized_as_potential_group_id(backend): - assert "kin" in main( - main_target="labels__grouping_levels", - orig_policy_objects={"root": METTSIM_ROOT}, - policy_date=datetime.date(2020, 1, 1), - backend=backend, - ) - - -def test_p_id_not_recognized_as_potential_group_id(backend): - assert "p" not in main( - main_target="labels__grouping_levels", - orig_policy_objects={"root": METTSIM_ROOT}, - policy_date=datetime.date(2020, 1, 1), - backend=backend, - ) - - -@pytest.mark.parametrize( - ("date_string", "expected"), - [ - ("2023-01-20", datetime.date(2023, 1, 20)), - ], -) -def test_start_date_valid(date_string: str, expected: datetime.date): - @policy_function(start_date=date_string) - def test_func(): - pass - - assert test_func.start_date == expected - - -@pytest.mark.parametrize( - "date_string", - [ - "20230120", - "20.1.2023", - "20th January 2023", - ], -) -def test_start_date_invalid(date_string: str): - with pytest.raises( - ValueError, - match="neither matches the format YYYY-MM-DD nor is a datetime.date", - ): - - @policy_function(start_date=date_string) - def test_func(): - pass - - -def test_start_date_missing(): - @policy_function() - def test_func(): - pass - - assert test_func.start_date == datetime.date(1900, 1, 1) - - -@pytest.mark.parametrize( - ("date_string", "expected"), - [ - ("2023-01-20", datetime.date(2023, 1, 20)), - ], -) -def test_end_date_valid(date_string: str, expected: datetime.date): - @policy_function(end_date=date_string) - def test_func(): - pass - - assert test_func.end_date == expected - - -@pytest.mark.parametrize( - "date_string", - [ - "20230120", - "20.1.2023", - "20th January 2023", - ], -) -def test_end_date_invalid(date_string: str): - with pytest.raises( - ValueError, - match="neither matches the format YYYY-MM-DD nor is a datetime.date", - ): - - @policy_function(end_date=date_string) - def test_func(): - pass - - -def test_end_date_missing(): - @policy_function() - def test_func(): - pass - - assert test_func.end_date == datetime.date(2099, 12, 31) - - -def test_active_period_is_empty(): - with pytest.raises(ValueError, match="must be before the end date"): - - @policy_function(start_date="2023-01-20", end_date="2023-01-19") - def test_func(): - pass - - -@pytest.mark.parametrize( - ("tree", "last_day", "function_name_last_day", "function_name_next_day"), - [ - ( - {"housing_benefits": {"eligibility": {"requirement_fulfilled_fam": None}}}, - datetime.date(2019, 12, 31), - "requirement_fulfilled_fam_not_considering_children", - "requirement_fulfilled_fam_considering_children", - ), - ], -) -def test_active_tree_with_column_objects_and_param_functions( - tree: NestedColumnObjectsParamFunctions, - last_day: datetime.date, - function_name_last_day: str, - function_name_next_day: str, -): - orig = column_objects_and_param_functions(root=METTSIM_ROOT) - functions_last_day = _active_column_objects_and_param_functions( - orig=orig, - policy_date=last_day, - ) - functions_next_day = _active_column_objects_and_param_functions( - orig=orig, - policy_date=last_day + datetime.timedelta(days=1), - ) - - accessor = optree.tree_accessors(tree, none_is_leaf=True)[0] - - assert accessor(functions_last_day).__name__ == function_name_last_day - assert accessor(functions_next_day).__name__ == function_name_next_day - - -def test_get_params_contents_with_updated_previous( - some_params_spec_with_updates_previous, -): - params_contents = _get_param_value(some_params_spec_with_updates_previous) - expected = { - "a": 1, - "b": 4, - } - assert params_contents == expected diff --git a/tests/ttsim/interface_dag_elements/test_processed_data.py b/tests/ttsim/interface_dag_elements/test_processed_data.py deleted file mode 100644 index 534fbd1516..0000000000 --- a/tests/ttsim/interface_dag_elements/test_processed_data.py +++ /dev/null @@ -1,66 +0,0 @@ -from __future__ import annotations - -import numpy -import pandas as pd -import pytest - -from ttsim.interface_dag_elements.processed_data import processed_data - - -@pytest.fixture -def input_data__flat(): - return { - ("p_id",): numpy.array([5, 333, 7, 2]), - ("hh_id",): numpy.array([55555, 7, 3, 55555]), - ("n0", "p_id_whatever"): numpy.array([-1, 333, 5, -1]), - } - - -def test_processed_data(input_data__flat, xnp): - expected = { - "p_id": xnp.array([1, 3, 2, 0]), - "hh_id": xnp.array([2, 1, 0, 2]), - "n0__p_id_whatever": xnp.array([-1, 3, 1, -1]), - } - pd.testing.assert_frame_equal( - pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), - pd.DataFrame(expected), - ) - - -def test_processed_data_foreign_key_out_of_bounds(xnp): - # Add out-of-bounds numbers (-5, 999), in foreign key. Should be unchanged, error - # will be raised in `fail_if.foreign_keys_are_invalid_in_data`. - input_data__flat = { - ("p_id",): numpy.array([5, 333, 7, 2]), - ("hh_id",): numpy.array([55555, 7, 3, 55555]), - ("n0", "p_id_whatever"): numpy.array([-1, 333, -5, 999]), - } - expected = { - "p_id": xnp.array([1, 3, 2, 0]), - "hh_id": xnp.array([2, 1, 0, 2]), - "n0__p_id_whatever": xnp.array([-1, 3, -5, 999]), # -5, 999 preserved unchanged - } - pd.testing.assert_frame_equal( - pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), - pd.DataFrame(expected), - ) - - -def test_processed_data_foreign_key_inside_bounds(xnp): - # Add non-existent foreign key (22). Should be unchanged, error will be raised in - # `fail_if.foreign_keys_are_invalid_in_data`. - input_data__flat = { - ("p_id",): numpy.array([5, 333, 7, 2]), - ("hh_id",): numpy.array([55555, 7, 4444, 55555]), - ("n0", "p_id_whatever"): numpy.array([-1, 333, 3, -1]), - } - expected = { - "p_id": xnp.array([1, 3, 2, 0]), - "hh_id": xnp.array([2, 0, 1, 2]), - "n0__p_id_whatever": xnp.array([-1, 3, 3, -1]), - } - pd.testing.assert_frame_equal( - pd.DataFrame(processed_data(input_data__flat=input_data__flat, xnp=xnp)), - pd.DataFrame(expected), - ) diff --git a/tests/ttsim/interface_dag_elements/test_shared.py b/tests/ttsim/interface_dag_elements/test_shared.py deleted file mode 100644 index 22e2ecc50a..0000000000 --- a/tests/ttsim/interface_dag_elements/test_shared.py +++ /dev/null @@ -1,292 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass - -import pytest - -from ttsim.interface_dag_elements.shared import ( - create_tree_from_path_and_value, - get_name_of_group_by_id, - get_re_pattern_for_all_time_units_and_groupings, - get_re_pattern_for_specific_time_units_and_groupings, - insert_path_and_value, - merge_trees, - partition_tree_by_reference_tree, - to_datetime, - upsert_path_and_value, - upsert_tree, -) - - -@dataclass -class SampleDataClass: - a: int - - -def test_leap_year_correctly_handled(): - to_datetime(date="2020-02-29") - - -def test_fail_if_invalid_date(): - with pytest.raises(ValueError, match="day is out of range for month"): - to_datetime(date="2020-02-30") - - -@pytest.mark.parametrize( - ("base", "path_to_upsert", "value_to_upsert", "expected"), - [ - ({}, ["a"], 1, {"a": 1}), - ({"a": 1}, ["a"], 2, {"a": 2}), - ({}, ["a", "b"], 2, {"a": {"b": 2}}), - ({"a": {"b": 1}}, ["a", "c"], 2, {"a": {"b": 1, "c": 2}}), - ], -) -def test_upsert_path_and_value(base, path_to_upsert, value_to_upsert, expected): - result = upsert_path_and_value( - base=base, - path_to_upsert=path_to_upsert, - value_to_upsert=value_to_upsert, - ) - assert result == expected - - -@pytest.mark.parametrize( - ("base", "path_to_insert", "value_to_insert", "expected"), - [ - ({}, ("a",), 1, {"a": 1}), - ({"a": 1}, ("b",), 2, {"a": 1, "b": 2}), - ], -) -def test_insert_path_and_value(base, path_to_insert, value_to_insert, expected): - result = insert_path_and_value( - base=base, - path_to_insert=path_to_insert, - value_to_insert=value_to_insert, - ) - assert result == expected - - -@pytest.mark.parametrize( - ("base", "path_to_insert", "value_to_insert"), - [ - ({"a": 1}, ("a",), 2), - ], -) -def test_insert_path_and_value_invalid(base, path_to_insert, value_to_insert): - with pytest.raises(ValueError, match="Conflicting paths in trees to merge."): - insert_path_and_value( - base=base, - path_to_insert=path_to_insert, - value_to_insert=value_to_insert, - ) - - -@pytest.mark.parametrize( - ("paths", "expected"), - [ - ("a", {"a": None}), - (("a", "b"), {"a": {"b": None}}), - (("a", "b", "c"), {"a": {"b": {"c": None}}}), - ], -) -def test_create_tree_from_path_and_value(paths, expected): - assert create_tree_from_path_and_value(paths) == expected - - -@pytest.mark.parametrize( - ("paths", "value", "expected"), - [ - ((), {"a": None}, {"a": None}), - ((), {"a": 1}, {"a": 1}), - ], -) -def test_create_tree_from_path_and_value_if_path_is_empty(paths, value, expected): - assert create_tree_from_path_and_value(paths, value) == expected - - -@pytest.mark.parametrize( - ("left", "right", "expected"), - [ - ({}, {"a": 1}, {"a": 1}), - ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), - ({"a": {"b": 1}}, {"a": {"c": 2}}, {"a": {"b": 1, "c": 2}}), - ({"a": {"b": 1}}, {"a": 3}, {"a": 3}), - ({"a": 3}, {"a": {"b": 1}}, {"a": {"b": 1}}), - ({"a": SampleDataClass(a=1)}, {}, {"a": SampleDataClass(a=1)}), - ], -) -def test_merge_trees_valid(left, right, expected): - assert merge_trees(left=left, right=right) == expected - - -@pytest.mark.parametrize( - ("left", "right"), - [({"a": 1}, {"a": 2}), ({"a": 1}, {"a": 1}), ({"a": {"b": 1}}, {"a": {"b": 5}})], -) -def test_merge_trees_invalid(left, right): - with pytest.raises(ValueError, match="Conflicting paths in trees to merge."): - merge_trees(left=left, right=right) - - -@pytest.mark.parametrize( - ("base_dict", "update_dict", "expected"), - [ - ({}, {"a": 1}, {"a": 1}), - ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), - ({"a": 1}, {"a": 2}, {"a": 2}), - ({"a": {"b": 1}}, {"a": {"c": 2}}, {"a": {"b": 1, "c": 2}}), - ({"a": {"b": 1}}, {"a": 3}, {"a": 3}), - ({"a": 3}, {"a": {"b": 1}}, {"a": {"b": 1}}), - ({"a": SampleDataClass(a=1)}, {}, {"a": SampleDataClass(a=1)}), - ], -) -def test_upsert_tree(base_dict, update_dict, expected): - assert upsert_tree(base=base_dict, to_upsert=update_dict) == expected - - -@pytest.mark.parametrize( - ("tree_to_partition", "reference_tree", "expected"), - [ - ( - { - "a": { - "b": 1, - "c": 1, - }, - "b": 1, - }, - { - "a": { - "b": 1, - }, - "b": 1, - }, - ( - {"a": {"b": 1}, "b": 1}, - {"a": {"c": 1}}, - ), - ), - ( - { - "a": { - "c": 1, - }, - }, - {}, - ( - {}, - {"a": {"c": 1}}, - ), - ), - ( - { - "a": { - "b": None, - "c": None, - }, - "b": None, - }, - { - "a": { - "b": None, - }, - "b": None, - }, - ( - {"a": {"b": None}, "b": None}, - {"a": {"c": None}}, - ), - ), - ], -) -def test_partition_tree_by_reference_tree(tree_to_partition, reference_tree, expected): - in_reference_tree, not_in_reference_tree = partition_tree_by_reference_tree( - tree_to_partition=tree_to_partition, - reference_tree=reference_tree, - ) - - assert in_reference_tree == expected[0] - assert not_in_reference_tree == expected[1] - - -@pytest.mark.parametrize( - ("target_name", "expected"), - [ - (("namespace1__foo"), None), - (("foo_kin"), "kin_id"), - (("namespace1__foo_kin"), "kin_id"), - (("namespace1__foo_fam"), "fam_id"), - ], -) -def test_get_name_of_group_by_id(target_name, expected): - assert ( - get_name_of_group_by_id( - target_name=target_name, - grouping_levels=("kin", "fam"), - ) - == expected - ) - - -@pytest.mark.parametrize( - ( - "func_name", - "time_units", - "grouping_levels", - "expected_base_name", - "expected_time_unit", - "expected_grouping", - ), - [ - ("foo", ("m", "y"), ["kin"], "foo", None, None), - ("foo_m_kin", ("m", "y"), ["kin"], "foo", "m", "kin"), - ("foo_y_kin", ("m", "y"), ["kin"], "foo", "y", "kin"), - ("foo_m", ("m", "y"), ["kin"], "foo", "m", None), - ("foo_y", ("m", "y"), ["kin"], "foo", "y", None), - ("foo_kin", ("m", "y"), ["kin"], "foo", None, "kin"), - ("foo_kin_bar", ("m", "y"), ["kin"], "foo_kin_bar", None, None), - ], -) -def test_get_re_pattern_for_time_units_and_groupings( - func_name, - time_units, - grouping_levels, - expected_base_name, - expected_time_unit, - expected_grouping, -): - result = get_re_pattern_for_all_time_units_and_groupings( - time_units=time_units, - grouping_levels=grouping_levels, - ) - match = result.fullmatch(func_name) - assert match.group("base_name") == expected_base_name - assert match.group("time_unit") == expected_time_unit - assert match.group("grouping") == expected_grouping - - -@pytest.mark.parametrize( - ( - "base_name", - "time_units", - "grouping_levels", - "expected_match", - ), - [ - ("foo", ["m", "y"], ["kin"], "foo_m_kin"), - ("foo", ["m", "y"], ["kin", "x"], "foo_m"), - ("foo", ["m", "y"], ["kin", "x"], "foo_kin"), - ], -) -def test_get_re_pattern_for_some_base_name( - base_name, - time_units, - grouping_levels, - expected_match, -): - re_pattern = get_re_pattern_for_specific_time_units_and_groupings( - base_name=base_name, - all_time_units=time_units, - grouping_levels=grouping_levels, - ) - assert re_pattern.fullmatch(expected_match) diff --git a/tests/ttsim/interface_dag_elements/test_specialized_environment.py b/tests/ttsim/interface_dag_elements/test_specialized_environment.py deleted file mode 100644 index 97740fe761..0000000000 --- a/tests/ttsim/interface_dag_elements/test_specialized_environment.py +++ /dev/null @@ -1,868 +0,0 @@ -from __future__ import annotations - -import datetime -from dataclasses import dataclass -from pathlib import Path -from typing import TYPE_CHECKING, Literal - -import dags.tree as dt -import numpy -import pandas as pd -import pytest - -from ttsim import main, merge_trees -from ttsim.interface_dag_elements.specialized_environment import ( - with_partialled_params_and_scalars, - with_processed_params_and_scalars, -) -from ttsim.tt_dag_elements import ( - AggType, - DictParam, - PiecewisePolynomialParam, - PiecewisePolynomialParamValue, - RawParam, - ScalarParam, - agg_by_group_function, - agg_by_p_id_function, - param_function, - policy_function, - policy_input, -) - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import ( - FloatColumn, - IntColumn, - PolicyEnvironment, - ) - - -@policy_input() -def p_id() -> int: - pass - - -@policy_input() -def p_id_someone_else() -> int: - pass - - -@policy_input() -def fam_id() -> int: - pass - - -@policy_input() -def betrag_m() -> float: - pass - - -@policy_function(vectorization_strategy="vectorize") -def identity(x: int) -> int: - return x - - -@policy_function(vectorization_strategy="vectorize") -def identity_plus_one(identity: int) -> int: - return identity + 1 - - -@policy_function(vectorization_strategy="vectorize") -def some_func(p_id: int) -> int: - return p_id - - -@policy_function(vectorization_strategy="vectorize") -def another_func(some_func: int) -> int: - return some_func - - -@param_function() -def some_scalar_params_func(some_int_param: int) -> int: - return some_int_param - - -@policy_function(vectorization_strategy="vectorize") -def some_policy_func_taking_scalar_params_func( - some_scalar_params_func: int, -) -> int: - return some_scalar_params_func - - -@dataclass(frozen=True) -class ConvertedParam: - some_float_param: float - some_bool_param: bool - - -@param_function() -def some_converting_params_func( - raw_param_spec: RawParam, -) -> ConvertedParam: - return ConvertedParam( - some_float_param=raw_param_spec["some_float_param"], - some_bool_param=raw_param_spec["some_bool_param"], - ) - - -@param_function() -def some_param_function_taking_scalar( - some_int_scalar: int, - some_float_scalar: float, - some_bool_scalar: bool, -) -> float: - return some_int_scalar + some_float_scalar + int(some_bool_scalar) - - -@policy_function(vectorization_strategy="vectorize") -def some_policy_function_taking_int_param(some_int_param: int) -> float: - return some_int_param - - -SOME_RAW_PARAM = RawParam( - value={ - "some_float_param": 1, - "some_bool_param": False, - }, - leaf_name="raw_param_spec", - start_date="2025-01-01", - end_date="2025-12-31", - name="raw_param_spec", - description="Some raw param spec", - unit=None, - reference_period=None, - note=None, - reference=None, -) - - -SOME_INT_PARAM = ScalarParam( - value=1, - leaf_name="some_int_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_int_param", - description="Some int param", - unit=None, - reference_period=None, - note=None, - reference=None, -) - - -SOME_DICT_PARAM = DictParam( - value={"a": 1, "b": False}, - leaf_name="some_dict_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_dict_param", - description="Some dict param", - unit=None, - reference_period=None, - note=None, - reference=None, -) - - -SOME_PIECEWISE_POLYNOMIAL_PARAM = PiecewisePolynomialParam( - value=PiecewisePolynomialParamValue( - thresholds=[1, 2, 3], - intercepts=[1, 2, 3], - rates=[1, 2, 3], - ), - leaf_name="some_piecewise_polynomial_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_piecewise_polynomial_param", - description="Some piecewise polynomial param", - unit=None, - reference_period=None, - note=None, - reference=None, -) - - -@pytest.fixture(scope="module") -def minimal_input_data(): - n_individuals = 5 - return { - "p_id": numpy.arange(n_individuals), - "fam_id": numpy.arange(n_individuals), - } - - -@pytest.fixture(scope="module") -def minimal_input_data_shared_fam(): - n_individuals = 3 - return { - "p_id": numpy.arange(n_individuals), - "fam_id": numpy.array([0, 0, 1]), - "p_id_someone_else": numpy.array([1, 0, -1]), - } - - -@agg_by_group_function(agg_type=AggType.SUM) -def foo_fam(foo: int, fam_id: int) -> int: - pass - - -@pytest.fixture(scope="module") -def mettsim_environment() -> PolicyEnvironment: - return main( - inputs={ - "orig_policy_objects__root": Path(__file__).parent.parent / "mettsim", - "date": datetime.date(2025, 1, 1), - }, - output_names=["policy_environment"], - )["policy_environment"] - - -# Create a function which is used by some tests below -@policy_function(vectorization_strategy="vectorize") -def func_before_partial(arg_1, some_param): - return arg_1 + some_param - - -@pytest.fixture -@policy_function(leaf_name="foo", vectorization_strategy="vectorize") -def function_with_bool_return(x: bool) -> bool: - return x - - -@policy_input() -def x() -> int: - pass - - -@policy_input() -def x_f() -> float: - pass - - -@policy_input() -def x_b() -> bool: - pass - - -@policy_input() -def kin_id() -> int: - pass - - -@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) -def y_kin(kin_id: int, x: int) -> int: - pass - - -@agg_by_group_function(leaf_name="y_kin", agg_type=AggType.SUM) -def y_kin_namespaced_input(kin_id: int, inputs__x: int) -> int: - pass - - -@pytest.fixture -@policy_function(leaf_name="bar", vectorization_strategy="vectorize") -def function_with_int_return(x: int) -> int: - return x - - -@pytest.fixture -@policy_function(leaf_name="baz", vectorization_strategy="vectorize") -def function_with_float_return(x: int) -> float: - return x - - -def some_x(x: int) -> int: - return x - - -def return_x_kin(x_kin: int) -> int: - return x_kin - - -def return_y_kin(y_kin: int) -> int: - return y_kin - - -def return_n1__x_kin(n1__x_kin: int) -> int: - return n1__x_kin - - -@pytest.mark.parametrize( - ( - "policy_environment", - "tt_targets__tree", - "input_data__tree", - ), - [ - ( - # Aggregations derived from simple function arguments - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function(vectorization_strategy="vectorize")( - return_n1__x_kin - ), - "x": x, - }, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ( - # Aggregations derived from namespaced function arguments - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function(vectorization_strategy="vectorize")( - return_x_kin - ), - "x": x, - }, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ( - # Aggregations derived from target - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function(vectorization_strategy="vectorize")(some_x), - "x": x, - }, - }, - {"n1": {"f_kin": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ( - # Explicit aggregation via objects tree with leaf name input - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function(vectorization_strategy="vectorize")(some_x), - "x": x, - }, - "y_kin": y_kin, - }, - {"n1": {"f": None}}, - { - "n1": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ( - # Explicit aggregation via objects tree with namespaced input - { - "kin_id": kin_id, - "p_id": p_id, - "n1": { - "f": policy_function( - leaf_name="f", - vectorization_strategy="vectorize", - )(return_y_kin), - "y_kin": y_kin_namespaced_input, - }, - "inputs": {"x": x}, - }, - {"n1": {"f": None}}, - { - "inputs": {"x": pd.Series([1, 1, 1])}, - "kin_id": pd.Series([0, 0, 0]), - "p_id": pd.Series([0, 1, 2]), - }, - ), - ], -) -def test_create_agg_by_group_functions( - policy_environment, - tt_targets__tree, - input_data__tree, - backend, -): - main( - main_target="results__tree", - policy_environment=policy_environment, - input_data={"tree": input_data__tree}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - rounding=False, - backend=backend, - ) - - -def test_output_is_tree(minimal_input_data, backend, xnp): - policy_environment = { - "p_id": p_id, - "module": {"some_func": some_func}, - } - - out = main( - main_target="results__tree", - policy_environment=policy_environment, - input_data={"tree": minimal_input_data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"module": {"some_func": None}}}, - rounding=False, - backend=backend, - ) - - assert isinstance(out, dict) - assert "some_func" in out["module"] - assert isinstance(out["module"]["some_func"], xnp.ndarray) - - -def test_params_target_is_allowed(minimal_input_data): - policy_environment = { - "p_id": p_id, - "module": {"some_func": some_func}, - "some_param": ScalarParam( - value=1, - leaf_name="some_param", - start_date="2025-01-01", - end_date="2025-12-31", - unit="Euros", - reference_period="Year", - name={"de": "Ein Parameter", "en": "Some parameter"}, - description={"de": "Ein Parameter", "en": "Some parameter"}, - note=None, - reference=None, - ), - } - - out = main( - main_target="results__tree", - policy_environment=policy_environment, - input_data={"tree": minimal_input_data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"some_param": None, "module": {"some_func": None}}}, - rounding=False, - backend="numpy", - ) - - assert isinstance(out, dict) - assert "some_param" in out - assert out["some_param"] == 1 - - -def test_function_without_data_dependency_is_not_mistaken_for_data( - minimal_input_data, - backend, - xnp, -): - @policy_function(leaf_name="a", vectorization_strategy="not_required") - def a() -> IntColumn: - return xnp.array(minimal_input_data["p_id"]) - - @policy_function(leaf_name="b") - def b(a: int) -> int: - return a - - policy_environment = { - "a": a, - "b": b, - } - results__tree = main( - main_target="results__tree", - policy_environment=policy_environment, - input_data={"tree": minimal_input_data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"b": None}}, - rounding=False, - backend=backend, - ) - numpy.testing.assert_array_almost_equal( - results__tree["b"], - xnp.array(minimal_input_data["p_id"]), - ) - - -def test_partial_params_to_functions(xnp, dnp, backend): - # Partial function produces correct result - func_after_partial = with_partialled_params_and_scalars( - with_processed_params_and_scalars={ - "some_func": func_before_partial, - "some_param": SOME_INT_PARAM.value, - }, - num_segments=1, - dnp=dnp, - rounding=False, - xnp=xnp, - backend=backend, - )["some_func"] - - assert func_after_partial(2) == 3 - - -def test_partial_params_to_functions_removes_argument(xnp, dnp, backend): - func_after_partial = with_partialled_params_and_scalars( - with_processed_params_and_scalars={ - "some_func": func_before_partial, - "some_param": SOME_INT_PARAM.value, - }, - num_segments=1, - rounding=False, - xnp=xnp, - dnp=dnp, - backend=backend, - )["some_func"] - - # Fails if params is added to partial function - with pytest.raises( - TypeError, - match=("got multiple values for argument "), - ): - func_after_partial(2, 1) - - # No error for original function - func_before_partial(2, 1) - - -def test_user_provided_aggregate_by_group_specs(backend): - data = { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "fam_id": pd.Series([1, 1, 2], name="fam_id"), - "module_name": {"betrag_m": pd.Series([100, 100, 100], name="betrag_m")}, - } - - policy_environment = { - "p_id": p_id, - "fam_id": fam_id, - "module_name": {"betrag_m": betrag_m}, - } - - expected = pd.Series([200, 200, 100], index=pd.Index(data["p_id"], name="p_id")) - - actual = main( - main_target="results__df_with_nested_columns", - policy_environment=policy_environment, - input_data={"tree": data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"module_name": {"betrag_m_fam": None}}}, - rounding=False, - backend=backend, - ) - - pd.testing.assert_series_equal( - actual[("module_name", "betrag_m_fam")], - expected, - check_names=False, - check_dtype=False, - ) - - -def test_user_provided_aggregation(backend): - data = { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "fam_id": pd.Series([1, 1, 2], name="fam_id"), - "module_name": {"betrag_m": pd.Series([200, 100, 100], name="betrag_m")}, - } - # Double up, then take max fam_id - expected = pd.Series([400, 400, 200], index=pd.Index(data["p_id"], name="p_id")) - - @policy_function(vectorization_strategy="vectorize") - def betrag_m_double(betrag_m: float) -> float: - return 2 * betrag_m - - @agg_by_group_function(agg_type=AggType.MAX) - def betrag_m_double_fam(betrag_m_double: float, fam_id: int) -> float: - pass - - policy_environment = { - "p_id": p_id, - "fam_id": fam_id, - "module_name": { - "betrag_m_double": betrag_m_double, - "betrag_m_double_fam": betrag_m_double_fam, - }, - } - - actual = main( - main_target="results__df_with_nested_columns", - policy_environment=policy_environment, - input_data={"tree": data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"module_name": {"betrag_m_double_fam": None}}}, - rounding=False, - backend=backend, - ) - - pd.testing.assert_series_equal( - actual[("module_name", "betrag_m_double_fam")], - expected, - check_names=False, - check_dtype=False, - ) - - -def test_user_provided_aggregation_with_time_conversion(backend): - data = { - "p_id": pd.Series([1, 2, 3], name="p_id"), - "fam_id": pd.Series([1, 1, 2], name="fam_id"), - "module_name": { - "betrag_m": pd.Series([200, 100, 100], name="betrag_m"), - }, - } - - # Double up, convert to quarter, then take max fam_id - expected = pd.Series( - [400 * 12, 400 * 12, 200 * 12], - index=pd.Index(data["p_id"], name="p_id"), - ) - - @policy_function(vectorization_strategy="vectorize") - def betrag_double_m(betrag_m: float) -> float: - return 2 * betrag_m - - @agg_by_group_function(agg_type=AggType.MAX) - def max_betrag_double_m_fam(betrag_double_m: float, fam_id: int) -> float: - pass - - policy_environment = { - "p_id": p_id, - "fam_id": fam_id, - "module_name": { - "betrag_double_m": betrag_double_m, - "max_betrag_double_m_fam": max_betrag_double_m_fam, - }, - } - - actual = main( - main_target="results__df_with_nested_columns", - policy_environment=policy_environment, - input_data={"tree": data}, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"module_name": {"max_betrag_double_y_fam": None}}}, - rounding=False, - backend=backend, - ) - - pd.testing.assert_series_equal( - actual[("module_name", "max_betrag_double_y_fam")], - expected, - check_names=False, - check_dtype=False, - ) - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def sum_source_by_p_id_someone_else( - source: int, - p_id: int, - p_id_someone_else: int, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> int: - pass - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def sum_source_m_by_p_id_someone_else( - source_m: int, - p_id: int, - p_id_someone_else: int, - num_segments: int, - backend: Literal["numpy", "jax"], -) -> int: - pass - - -@pytest.mark.parametrize( - ("agg_functions", "leaf_name", "target_tree", "expected"), - [ - ( - { - "module": { - "sum_source_by_p_id_someone_else": sum_source_by_p_id_someone_else, - }, - }, - "source", - {"module": {"sum_source_by_p_id_someone_else": None}}, - pd.Series([200, 100, 0], index=pd.Index([0, 1, 2], name="p_id")), - ), - ( - { - "module": { - "sum_source_m_by_p_id_someone_else": sum_source_m_by_p_id_someone_else, # noqa: E501 - }, - }, - "source_m", - {"module": {"sum_source_m_by_p_id_someone_else": None}}, - pd.Series([200, 100, 0], index=pd.Index([0, 1, 2], name="p_id")), - ), - ], -) -def test_user_provided_aggregate_by_p_id_specs( - agg_functions, - leaf_name, - target_tree, - expected, - minimal_input_data_shared_fam, - backend, - xnp, -): - @policy_function(leaf_name=leaf_name, vectorization_strategy="not_required") - def source() -> FloatColumn: - return xnp.array([100, 200, 300]) - - policy_environment = merge_trees( - agg_functions, - { - "module": {leaf_name: source}, - "p_id": p_id, - "p_id_someone_else": p_id_someone_else, - }, - ) - - actual = main( - main_target="results__df_with_nested_columns", - input_data={"tree": minimal_input_data_shared_fam}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": target_tree}, - rounding=False, - backend=backend, - ) - - pd.testing.assert_series_equal( - actual[("module", next(iter(target_tree["module"].keys())))], - expected, - check_names=False, - check_dtype=False, - ) - - -def test_policy_environment_with_params_and_scalars_is_processed(xnp, dnp, backend): - policy_environment = { - "raw_param_spec": SOME_RAW_PARAM, - "some_int_param": SOME_INT_PARAM, - "some_dict_param": SOME_DICT_PARAM, - "some_piecewise_polynomial_param": SOME_PIECEWISE_POLYNOMIAL_PARAM, - "some_int_scalar": 1, - "some_float_scalar": 2.0, - "some_bool_scalar": True, - "some_scalar_params_func": some_scalar_params_func, - "some_converting_params_func": some_converting_params_func, - "some_param_function_taking_scalar": some_param_function_taking_scalar, - } - actual = with_processed_params_and_scalars( - without_tree_logic_and_with_derived_functions=policy_environment, - processed_data={"x": xnp.array([1, 2, 3])}, - backend=backend, - xnp=xnp, - dnp=dnp, - evaluation_date=datetime.date(2024, 1, 1), - ) - expected = { - "some_converting_params_func": ConvertedParam( - some_float_param=1, - some_bool_param=False, - ), - "some_scalar_params_func": 1, - "some_int_param": SOME_INT_PARAM.value, - "some_dict_param": SOME_DICT_PARAM.value, - "some_piecewise_polynomial_param": SOME_PIECEWISE_POLYNOMIAL_PARAM.value, - "some_int_scalar": 1, - "some_float_scalar": 2.0, - "some_bool_scalar": True, - "some_param_function_taking_scalar": 4.0, - "evaluation_year": 2024, - "evaluation_month": 1, - "evaluation_day": 1, - } - assert actual == expected - - -@pytest.mark.parametrize( - ( - "nested_policy_environment", - "overriding_data", - "tt_targets__tree", - "expected_output", - ), - [ - # Overwriting policy function - ( - { - "identity": identity, - "identity_plus_one": identity_plus_one, - }, - { - "identity": numpy.array([1, 2, 3, 4, 5]), - }, - {"identity_plus_one": None}, - {"identity_plus_one": numpy.array([2, 3, 4, 5, 6])}, - ), - # Overwriting parameter - ( - { - "some_int_param": SOME_INT_PARAM, - "some_policy_function_taking_int_param": some_policy_function_taking_int_param, # noqa: E501 - }, - { - "some_int_param": numpy.array([1, 2, 3, 4, 5]), - }, - {"some_policy_function_taking_int_param": None}, - {"some_policy_function_taking_int_param": numpy.array([1, 2, 3, 4, 5])}, - ), - # Overwriting parameter function - ( - { - "some_int_param": SOME_INT_PARAM, - "some_scalar_params_func": some_policy_function_taking_int_param, - "some_policy_func_taking_scalar_params_func": some_policy_func_taking_scalar_params_func, # noqa: E501 - }, - { - "some_scalar_params_func": numpy.array([1, 2, 3, 4, 5]), - }, - {"some_policy_func_taking_scalar_params_func": None}, - { - "some_policy_func_taking_scalar_params_func": numpy.array( - [1, 2, 3, 4, 5], - ), - }, - ), - ], -) -def test_can_override_ttsim_objects_with_data( - nested_policy_environment, - overriding_data, - tt_targets__tree, - expected_output, - minimal_input_data, - backend, -): - actual = main( - main_target="results__tree", - input_data={"tree": {**minimal_input_data, **overriding_data}}, - policy_environment=nested_policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": tt_targets__tree}, - include_warn_nodes=False, - include_fail_nodes=False, - rounding=False, - backend=backend, - ) - - flat_actual = dt.flatten_to_tree_paths(actual) - flat_expected = dt.flatten_to_tree_paths(expected_output) - - assert flat_actual.keys() == flat_expected.keys() - for key in flat_expected: - numpy.testing.assert_array_almost_equal(flat_actual[key], flat_expected[key]) diff --git a/tests/ttsim/interface_dag_elements/test_templates.py b/tests/ttsim/interface_dag_elements/test_templates.py deleted file mode 100644 index 6e1ae43cfb..0000000000 --- a/tests/ttsim/interface_dag_elements/test_templates.py +++ /dev/null @@ -1,216 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -import numpy - -from ttsim import main -from ttsim.testing_utils import ( - load_policy_test_data, -) -from ttsim.tt_dag_elements.column_objects_param_function import ( - policy_function, - policy_input, -) -from ttsim.tt_dag_elements.param_objects import DictParam, ScalarParam - -METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" - -TEST_DIR = Path(__file__).parent - -POLICY_TEST_IDS_AND_CASES = load_policy_test_data( - test_dir=TEST_DIR, - policy_name="", - xnp=numpy, -) - - -p1 = ScalarParam( - value=1, - leaf_name="some_int_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_int_param", - description="Some int param", - unit=None, - reference_period=None, - note=None, - reference=None, -) - -p2 = DictParam( - value={"a": 1, "b": 2}, - leaf_name="some_dict_param", - start_date="2025-01-01", - end_date="2025-12-31", - name="some_dict_param", - description="Some dict param", - unit=None, - reference_period=None, - note=None, - reference=None, -) - - -@policy_input() -def kin_id() -> int: - pass - - -@policy_input() -def inp1() -> int: - pass - - -@policy_input() -def inp2() -> float: - pass - - -@policy_function() -def x(inp1_kin: int, p1: int, p2: dict[str, int]) -> int: - return inp1_kin + p1 + p2["a"] + p2["b"] - - -@policy_function() -def y(inp2: float, p2: dict[str, int]) -> float: - return inp2 + p2["b"] - - -@policy_function() -def z(a__x: int, a__y: float) -> float: - return a__x + a__y - - -def test_template_all_outputs_no_inputs(backend): - actual = main( - main_target="templates__input_data_dtypes", - policy_environment={ - "kin_id": kin_id, - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - rounding=True, - evaluation_date_str="2025-01-01", - backend=backend, - ) - assert actual == { - "a": {"inp2": "FloatColumn"}, - "inp1": "IntColumn", - "kin_id": "IntColumn", - } - - -def test_template_all_outputs_with_inputs(backend, xnp): - actual = main( - main_target="templates__input_data_dtypes", - input_data={ - "tree": { - "p_id": xnp.array([4, 5, 6]), - "a": { - "inp2": xnp.array([1, 2, 3]), - }, - "inp1": xnp.array([0, 1, 2]), - } - }, - policy_environment={ - "kin_id": kin_id, - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - rounding=True, - evaluation_date_str="2025-01-01", - backend=backend, - ) - assert actual == { - "a": {"inp2": "FloatColumn"}, - "inp1": "IntColumn", - "kin_id": "IntColumn", - } - - -def test_template_output_y_no_inputs(backend): - actual = main( - main_target="templates__input_data_dtypes", - tt_targets={"tree": {"a": {"y": None}}}, - policy_environment={ - "kin_id": kin_id, - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - rounding=True, - evaluation_date_str="2025-01-01", - backend=backend, - ) - assert actual == {"a": {"inp2": "FloatColumn"}} - - -def test_template_output_x_with_inputs(backend, xnp): - actual = main( - main_target="templates__input_data_dtypes", - input_data={ - "tree": { - "p_id": xnp.array([4, 5, 6]), - "a": { - "inp2": xnp.array([1, 2, 3]), - }, - "inp1": xnp.array([0, 1, 2]), - } - }, - tt_targets={"tree": {"a": {"x": None}}}, - policy_environment={ - "kin_id": kin_id, - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - rounding=True, - evaluation_date_str="2025-01-01", - backend=backend, - ) - assert actual == {"inp1": "IntColumn", "kin_id": "IntColumn"} - - -def test_template_all_outputs_no_input_for_root_of_derived_function(backend, xnp): - actual = main( - main_target="templates__input_data_dtypes", - input_data={ - "tree": { - "p_id": xnp.array([4, 5, 6]), - "a": { - "inp2": xnp.array([1, 2, 3]), - }, - } - }, - policy_environment={ - "kin_id": kin_id, - "inp1": inp1, - "p1": p1, - "a": {"inp2": inp2, "x": x, "y": y, "p2": p2}, - "b": { - "z": z, - }, - }, - rounding=True, - evaluation_date_str="2025-01-01", - backend=backend, - ) - assert actual == { - "a": {"inp2": "FloatColumn"}, - "inp1": "IntColumn", - } diff --git a/tests/ttsim/interface_dag_elements/test_warnings.py b/tests/ttsim/interface_dag_elements/test_warnings.py deleted file mode 100644 index 0b930cad6d..0000000000 --- a/tests/ttsim/interface_dag_elements/test_warnings.py +++ /dev/null @@ -1,126 +0,0 @@ -from __future__ import annotations - -import datetime -import warnings - -import pandas as pd -import pytest - -from ttsim import main -from ttsim.interface_dag_elements import MainTarget -from ttsim.tt_dag_elements.column_objects_param_function import policy_function -from ttsim.tt_dag_elements.param_objects import ScalarParam - - -@policy_function() -def some_func(p_id: int) -> int: - return p_id - - -@policy_function() -def another_func(some_func: int) -> int: - return some_func - - -def test_warn_if_functions_and_data_columns_overlap(backend): - with pytest.warns(match="Your data provides the column:"): - main( - main_target="warn_if__functions_and_data_columns_overlap", - input_data={ - "tree": { - "p_id": pd.Series([0]), - "some_func": pd.Series([1]), - } - }, - policy_environment={ - "some_func": some_func, - "some_target": another_func, - }, - tt_targets={"tree": {"some_target": None}}, - evaluation_date=datetime.date(2025, 1, 1), - rounding=False, - include_fail_nodes=False, - backend=backend, - ) - - -def test_warn_if_functions_and_columns_overlap_no_warning_if_no_overlap(backend): - with warnings.catch_warnings(record=True) as w: - warnings.simplefilter("always") - main( - main_target="warn_if__functions_and_data_columns_overlap", - input_data={ - "tree": { - "p_id": pd.Series([0]), - "x": pd.Series([1]), - } - }, - policy_environment={"some_func": some_func}, - tt_targets={"tree": {"some_func": None}}, - policy_date=datetime.date(2025, 1, 1), - rounding=False, - include_fail_nodes=False, - backend=backend, - ) - assert not w, f"Expected no warning, but got at least: {w[0].message}" - - -def test_warn_if_evaluation_date_set_in_multiple_places(backend): - policy_environment = { - "policy_year": ScalarParam(value=2025), - "policy_month": ScalarParam(value=1), - "policy_day": ScalarParam(value=1), - "evaluation_year": ScalarParam(value=2025), - "evaluation_month": ScalarParam(value=1), - "evaluation_day": ScalarParam(value=1), - "some_func": some_func, - "some_target": another_func, - } - with pytest.warns(match="You have specified the evaluation date in more than one"): - main( - main_target="warn_if__evaluation_date_set_in_multiple_places", - policy_environment=policy_environment, - evaluation_date=datetime.date(2025, 1, 1), - backend=backend, - ) - - -def test_warn_if_evaluation_date_set_in_multiple_places_implicitly_added(backend, xnp): - policy_environment = { - "policy_year": ScalarParam(value=2025), - "policy_month": ScalarParam(value=1), - "policy_day": ScalarParam(value=1), - "evaluation_year": ScalarParam(value=2025), - "evaluation_month": ScalarParam(value=1), - "evaluation_day": ScalarParam(value=1), - "some_func": some_func, - "some_target": another_func, - } - with pytest.warns(match="You have specified the evaluation date in more than one"): - main( - main_target=MainTarget.raw_results.columns, - policy_environment=policy_environment, - evaluation_date=datetime.date(2025, 1, 1), - processed_data={"p_id": xnp.array([0])}, - backend=backend, - ) - - -def test_do_not_need_to_warn_if_evaluation_date_is_set_only_once(backend, xnp): - policy_environment = { - "policy_year": ScalarParam(value=2025), - "policy_month": ScalarParam(value=1), - "policy_day": ScalarParam(value=1), - "some_func": some_func, - "some_target": another_func, - } - with warnings.catch_warnings(record=True) as w: - warnings.simplefilter("always") - main( - main_target=MainTarget.raw_results.columns, - policy_environment=policy_environment, - evaluation_date=datetime.date(2025, 1, 1), - processed_data={"p_id": xnp.array([0])}, - backend=backend, - ) - assert not w, f"Expected no warning, but got at least: {w[0].message}" diff --git a/tests/ttsim/mettsim/__init__.py b/tests/ttsim/mettsim/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/ttsim/mettsim/demographics.py b/tests/ttsim/mettsim/demographics.py deleted file mode 100644 index 3955bb9d5c..0000000000 --- a/tests/ttsim/mettsim/demographics.py +++ /dev/null @@ -1,10 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import AggType, agg_by_group_function - - -@agg_by_group_function(agg_type=AggType.COUNT) -def number_of_individuals_kin( - kin_id: int, # noqa: ARG001 -) -> int: - return 1 diff --git a/tests/ttsim/mettsim/group_by_ids.py b/tests/ttsim/mettsim/group_by_ids.py deleted file mode 100644 index 0fd158f49a..0000000000 --- a/tests/ttsim/mettsim/group_by_ids.py +++ /dev/null @@ -1,98 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from ttsim.tt_dag_elements import group_creation_function - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import IntColumn - - -@group_creation_function() -def sp_id(p_id: IntColumn, p_id_spouse: IntColumn, xnp: ModuleType) -> IntColumn: - """ - Compute the spouse (sp) group ID for each person. - """ - n = xnp.max(p_id) - p_id_spouse = xnp.where(p_id_spouse < 0, p_id, p_id_spouse) - return xnp.maximum(p_id, p_id_spouse) + xnp.minimum(p_id, p_id_spouse) * n - - -@group_creation_function() -def fam_id( - p_id_spouse: IntColumn, - p_id: IntColumn, - age: IntColumn, - p_id_parent_1: IntColumn, - p_id_parent_2: IntColumn, - xnp: ModuleType, -) -> IntColumn: - """ - Compute the family ID for each person. - """ - n = xnp.max(p_id) + 1 - - # Sort all arrays according to p_id to make the id equal location in array - sorting = xnp.argsort(p_id) - index_after_sort = xnp.argsort(xnp.arange(p_id.shape[0])[sorting]) - sorted_p_id = p_id[sorting] - sorted_age = age[sorting] - sorted_p_id_parent_1 = p_id_parent_1[sorting] - sorted_p_id_parent_2 = p_id_parent_2[sorting] - sorted_p_id_spouse = p_id_spouse[sorting] - - children = xnp.isin(sorted_p_id, sorted_p_id_parent_1) | xnp.isin( - sorted_p_id, sorted_p_id_parent_2 - ) - - # Assign the same fam_id to everybody who has a spouse, - # otherwise create a new one from p_id - out = xnp.where( - sorted_p_id_spouse < 0, - sorted_p_id + sorted_p_id * n, - xnp.maximum(sorted_p_id, sorted_p_id_spouse) - + xnp.minimum(sorted_p_id, sorted_p_id_spouse) * n, - ) - - out = _assign_parents_fam_id( - fam_id=out, - p_id=sorted_p_id, - p_id_parent_loc=sorted_p_id_parent_1, - age=sorted_age, - children=children, - n=n, - xnp=xnp, - ) - out = _assign_parents_fam_id( - fam_id=out, - p_id=sorted_p_id, - p_id_parent_loc=sorted_p_id_parent_2, - age=sorted_age, - children=children, - n=n, - xnp=xnp, - ) - - return out[index_after_sort] - - -def _assign_parents_fam_id( - fam_id: IntColumn, - p_id: IntColumn, - p_id_parent_loc: IntColumn, - age: IntColumn, - children: IntColumn, - n: int, - xnp: ModuleType, -) -> IntColumn: - """Return the fam_id of the child's parents.""" - return xnp.where( - (fam_id == p_id + p_id * n) - * (p_id_parent_loc >= 0) - * (age < 25) - * (1 - children), - fam_id[p_id_parent_loc], - fam_id, - ) diff --git a/tests/ttsim/mettsim/housing_benefits/amount.py b/tests/ttsim/mettsim/housing_benefits/amount.py deleted file mode 100644 index 81a74c29ed..0000000000 --- a/tests/ttsim/mettsim/housing_benefits/amount.py +++ /dev/null @@ -1,15 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import policy_function - - -@policy_function(vectorization_strategy="vectorize") -def amount_m_fam( - eligibility__requirement_fulfilled_fam: bool, - income__amount_m_fam: float, - assistance_rate: float, -) -> float: - if eligibility__requirement_fulfilled_fam: - return income__amount_m_fam * assistance_rate - else: - return 0 diff --git a/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml b/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml deleted file mode 100644 index 5fc025379d..0000000000 --- a/tests/ttsim/mettsim/housing_benefits/assistance_rate.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -assistance_rate: - name: - de: Unterstützungssatz - en: Assistance rate - description: - de: In Mittelerde passiert immer noch nichts. - en: Still nothing happens in Middle Earth. - unit: null - reference_period: null - type: scalar - 1900-01-01: - value: 0.5 diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py deleted file mode 100644 index 3c7919e5fa..0000000000 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Eligibility for housing benefits. - -Policy regime until 2019: - - Requirement is fulfilled if income of spouses is below subsistence income - - Subsistence income is calculated per spouse - -Policy regime starting in 2020: - - Requirement is fulfilled if income of family is below subsistence income - - Subsistence income is calculated per spouse and child -""" - -from __future__ import annotations - -from ttsim.tt_dag_elements import ( - AggType, - agg_by_group_function, - policy_function, -) - - -@agg_by_group_function(agg_type=AggType.SUM, end_date="2019-12-31") -def number_of_adults_fam(fam_id: int, adult: bool) -> int: - """The number of adults in the family.""" - - -@agg_by_group_function(agg_type=AggType.COUNT) -def number_of_individuals_fam(fam_id: int) -> int: - """The number of individuals in the family.""" - - -@policy_function( - end_date="2019-12-31", - leaf_name="requirement_fulfilled_fam", -) -def requirement_fulfilled_fam_not_considering_children( - housing_benefits__income__amount_m_fam: float, - number_of_adults_fam: int, - subsistence_income_level: dict[str, float], -) -> bool: - return ( - housing_benefits__income__amount_m_fam - < subsistence_income_level["per_spouse"] * number_of_adults_fam - ) - - -@policy_function( - start_date="2020-01-01", - leaf_name="requirement_fulfilled_fam", -) -def requirement_fulfilled_fam_considering_children( - housing_benefits__income__amount_m_fam: float, - number_of_family_members_considered_fam: int, - subsistence_income_level: dict[str, float], -) -> bool: - return housing_benefits__income__amount_m_fam < ( - subsistence_income_level["per_individual"] - * number_of_family_members_considered_fam - ) - - -@policy_function(start_date="2020-01-01", vectorization_strategy="vectorize") -def number_of_family_members_considered_fam( - number_of_individuals_fam: int, - max_number_of_family_members: int, -) -> int: - return min(number_of_individuals_fam, max_number_of_family_members) - - -@policy_function(vectorization_strategy="vectorize") -def child( - age: int, - max_age_children: int, -) -> bool: - return age <= max_age_children - - -@policy_function(vectorization_strategy="vectorize") -def adult( - age: int, - max_age_children: int, -) -> bool: - return age > max_age_children diff --git a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml b/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml deleted file mode 100644 index 323e0642f9..0000000000 --- a/tests/ttsim/mettsim/housing_benefits/eligibility/eligibility.yaml +++ /dev/null @@ -1,39 +0,0 @@ ---- -subsistence_income_level: - name: - de: Anspruchsvoraussetzung Einkommen pro Partner/Person - en: Eligibility income per spouse/person - description: - de: Dict, da es sich über die Jahre ändert, aber der Paramtername gleich bleibt. - en: Dict, because it changes over time, but the parameter name remains the same. - unit: Euros - reference_period: Month - type: dict - 1900-01-01: - per_spouse: 500.0 - 2020-01-01: - per_individual: 500.0 -max_number_of_family_members: - name: - de: Maximalzahl der zu berücksichtigenden Personen - en: Maximum number of persons to consider - description: - de: Erst nach Reform 2020 relevant. - en: Only relevant after 2020 reform. - unit: null - reference_period: null - type: scalar - 2020-01-01: - value: 4 -max_age_children: - name: - de: Maximalalter der Kinder - en: Maximum age of children - description: - de: In Mittelerde passiert nichts, niemals. - en: In Middle Earth nothing happens, ever. - unit: Years - reference_period: null - type: scalar - 1900-01-01: - value: 18 diff --git a/tests/ttsim/mettsim/housing_benefits/income/income.py b/tests/ttsim/mettsim/housing_benefits/income/income.py deleted file mode 100644 index 6edc2dad14..0000000000 --- a/tests/ttsim/mettsim/housing_benefits/income/income.py +++ /dev/null @@ -1,21 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import RoundingSpec, policy_function - - -@policy_function( - rounding_spec=RoundingSpec( - base=1, - direction="down", - reference="§ 4 Gondorian Housing Benefit Law", - ), -) -def amount_m( - payroll_tax__income__gross_wage_m: float, - payroll_tax__amount_m: float, - housing_benefits__eligibility__child: bool, -) -> float: - if housing_benefits__eligibility__child: - return 0.0 - else: - return payroll_tax__income__gross_wage_m - payroll_tax__amount_m diff --git a/tests/ttsim/mettsim/inputs.py b/tests/ttsim/mettsim/inputs.py deleted file mode 100644 index dd32cd939d..0000000000 --- a/tests/ttsim/mettsim/inputs.py +++ /dev/null @@ -1,48 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import AggType, FKType, agg_by_group_function, policy_input - - -@policy_input() -def p_id() -> int: - """Person ID, always required by TTSIM.""" - - -@policy_input() -def kin_id() -> int: - """Kinstead ID.""" - - -@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) -def p_id_parent_1() -> int: - """Identifier of the first parent.""" - - -@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) -def p_id_parent_2() -> int: - """Identifier of the second parent.""" - - -@policy_input(foreign_key_type=FKType.MUST_NOT_POINT_TO_SELF) -def p_id_spouse() -> int: - """Identifier of married partner.""" - - -@policy_input() -def age() -> int: - """Age of the person.""" - - -@policy_input() -def parent_is_noble() -> bool: - """Whether at least one parent is noble.""" - - -@agg_by_group_function(agg_type=AggType.ANY) -def parent_is_noble_fam(parent_is_noble: bool, fam_id: int) -> bool: - pass - - -@policy_input() -def wealth() -> float: - """Wealth of the person.""" diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py deleted file mode 100644 index 7039d2bd0a..0000000000 --- a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.py +++ /dev/null @@ -1,58 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING - -from ttsim.tt_dag_elements import param_function, policy_function, policy_input - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import RawParam - - -@dataclass(frozen=True) -class BountyPerLargeOrc: - noble_hunter: float - peasant_hunter: float - - -@dataclass(frozen=True) -class BountyPerOrc: - small_orc: int - large_orc: BountyPerLargeOrc - - -@param_function() -def bounty_per_orc(raw_bounties_per_orc: RawParam) -> BountyPerOrc: - return BountyPerOrc( - small_orc=raw_bounties_per_orc["small_orc"], - large_orc=BountyPerLargeOrc( - noble_hunter=raw_bounties_per_orc["large_orc"]["noble_hunter"], - peasant_hunter=raw_bounties_per_orc["large_orc"]["peasant_hunter"], - ), - ) - - -@policy_input() -def small_orcs_hunted() -> int: - """The number of small orcs hunted.""" - - -@policy_input() -def large_orcs_hunted() -> int: - """The number of large orcs hunted.""" - - -@policy_function(vectorization_strategy="vectorize") -def amount( - small_orcs_hunted: int, - large_orcs_hunted: int, - parent_is_noble: bool, - bounty_per_orc: BountyPerOrc, -) -> float: - """Orc-hunting bounty.""" - bounty_small_orcs = bounty_per_orc.small_orc * small_orcs_hunted - if parent_is_noble: - bounty_large_orcs = bounty_per_orc.large_orc.noble_hunter * large_orcs_hunted - else: - bounty_large_orcs = bounty_per_orc.large_orc.peasant_hunter * large_orcs_hunted - return bounty_small_orcs + bounty_large_orcs diff --git a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml b/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml deleted file mode 100644 index 5640b03dec..0000000000 --- a/tests/ttsim/mettsim/orc_hunting_bounty/orc_hunting_bounty.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -raw_bounties_per_orc: - name: - de: Belohnung für das Jagen von Orks (tot oder lebendig) - en: Bounty for orc hunting (dead or alive) - description: - de: Test für den Typ require_converter - en: Test the require_converter type - unit: Euros - reference_period: null - type: require_converter - 1900-01-01: - small_orc: 100 - large_orc: - peasant_hunter: 200 - noble_hunter: 100 diff --git a/tests/ttsim/mettsim/payroll_tax/amount.py b/tests/ttsim/mettsim/payroll_tax/amount.py deleted file mode 100644 index f8b5fd11eb..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/amount.py +++ /dev/null @@ -1,56 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from types import ModuleType - -from ttsim.tt_dag_elements import ( - PiecewisePolynomialParamValue, - piecewise_polynomial, - policy_function, -) - - -@policy_function(vectorization_strategy="vectorize") -def amount_y( - amount_standard_y: float, - amount_reduced_y: float, - parent_is_noble_fam: bool, - wealth_fam: float, - wealth_threshold_for_reduced_tax_rate: float, -) -> float: - if parent_is_noble_fam: - return 0.0 - elif wealth_fam >= wealth_threshold_for_reduced_tax_rate: - return amount_reduced_y - else: - return amount_standard_y - - -@policy_function(vectorization_strategy="vectorize") -def amount_standard_y( - income__amount_y: float, - tax_schedule_standard: PiecewisePolynomialParamValue, - xnp: ModuleType, -) -> float: - """Payroll tax amount for the standard tax schedule.""" - return piecewise_polynomial( - x=income__amount_y, - parameters=tax_schedule_standard, - xnp=xnp, - ) - - -@policy_function(vectorization_strategy="vectorize") -def amount_reduced_y( - income__amount_y: float, - tax_schedule_reduced: PiecewisePolynomialParamValue, - xnp: ModuleType, -) -> float: - """Payroll tax amount for the reduced tax schedule.""" - return piecewise_polynomial( - x=income__amount_y, - parameters=tax_schedule_reduced, - xnp=xnp, - ) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py deleted file mode 100644 index 0d5e559977..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.py +++ /dev/null @@ -1,63 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -from ttsim.tt_dag_elements import ( - AggType, - agg_by_p_id_function, - join, - policy_function, -) - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import BoolColumn, IntColumn - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def amount_y( - p_id: int, - p_id_recipient: int, - claim_of_child_y: float, -) -> float: - """The amount of child tax credit at the recipient level.""" - - -@policy_function() -def claim_of_child_y( - child_eligible: bool, - schedule: dict[str, float], -) -> float: - if child_eligible: - return schedule["child_amount_y"] - else: - return 0 - - -@policy_function() -def child_eligible( - age: int, - schedule: dict[str, float], - in_same_household_as_recipient: bool, -) -> bool: - return age <= schedule["max_age"] and in_same_household_as_recipient - - -@policy_function(vectorization_strategy="not_required") -def in_same_household_as_recipient( - p_id: IntColumn, - kin_id: IntColumn, - p_id_recipient: IntColumn, - xnp: ModuleType, -) -> BoolColumn: - return ( - join( - foreign_key=p_id_recipient, - primary_key=p_id, - target=kin_id, - value_if_foreign_key_is_missing=-1, - xnp=xnp, - ) - == kin_id - ) diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml deleted file mode 100644 index a3fee6c3b7..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/child_tax_credit.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -schedule: - name: - de: Kinderfreibetrag - en: Child tax credit - description: - de: In Mittelerde passiert nichts. - en: In Middle Earth nothing happens. - unit: Euros - reference_period: Year - type: dict - 1900-01-01: - child_amount_y: 100.0 - max_age: 18 diff --git a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py b/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py deleted file mode 100644 index f93d891b4b..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/child_tax_credit/inputs.py +++ /dev/null @@ -1,8 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import FKType, policy_input - - -@policy_input(foreign_key_type=FKType.MAY_POINT_TO_SELF) -def p_id_recipient() -> int: - """Identifier of the recipient of the child tax credit.""" diff --git a/tests/ttsim/mettsim/payroll_tax/income/amount.py b/tests/ttsim/mettsim/payroll_tax/income/amount.py deleted file mode 100644 index 652a41c33b..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/income/amount.py +++ /dev/null @@ -1,11 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import policy_function - - -@policy_function(vectorization_strategy="vectorize") -def amount_y( - gross_wage_y: float, - deductions_y: float, -) -> float: - return max(gross_wage_y - deductions_y, 0.0) diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.py b/tests/ttsim/mettsim/payroll_tax/income/deductions.py deleted file mode 100644 index 601c01c7bc..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.py +++ /dev/null @@ -1,11 +0,0 @@ -from __future__ import annotations - -from ttsim.tt_dag_elements import policy_function - - -@policy_function(vectorization_strategy="vectorize") -def deductions_y( - payroll_tax__child_tax_credit__amount_y: float, - lump_sum_deduction_y: float, -) -> float: - return lump_sum_deduction_y + payroll_tax__child_tax_credit__amount_y diff --git a/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml b/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml deleted file mode 100644 index 5a0ce39d78..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/income/deductions.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -lump_sum_deduction_y: - name: - de: Lohnsteuerpauschalabzug - en: Lump sum deduction for payroll tax - description: - de: Lohnsteuerpauschalabzug - en: Lump sum deduction for payroll tax - unit: Euros - reference_period: Year - type: scalar - 1900-01-01: - value: 100.0 diff --git a/tests/ttsim/mettsim/payroll_tax/income/inputs.py b/tests/ttsim/mettsim/payroll_tax/income/inputs.py deleted file mode 100644 index 7ea02d6b29..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/income/inputs.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Input columns.""" - -from __future__ import annotations - -from ttsim.tt_dag_elements import policy_input - - -@policy_input() -def gross_wage_y() -> float: - """Annual gross wage.""" diff --git a/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml b/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml deleted file mode 100644 index b436ea6453..0000000000 --- a/tests/ttsim/mettsim/payroll_tax/payroll_tax.yaml +++ /dev/null @@ -1,57 +0,0 @@ ---- -wealth_threshold_for_reduced_tax_rate: - name: - de: Vermögensschwelle, bis zu der der niedrigere Steuersatz gilt - en: Wealth threshold below which the lower tax rate applies - description: - de: Umgekehrte Bennenung schiene sinnvoll. - en: The reverse naming would seem more sensible. - unit: Euros - reference_period: null - type: scalar - 1900-01-01: - value: 50000 -tax_schedule_standard: - name: - de: Standard Lohnsteuersatz - en: Standard payroll tax schedule - description: - de: Für Angehörige von Familien mit niedrigem Vermögen - en: For member of families with low wealth - unit: Euros - reference_period: Year - type: piecewise_linear - 1900-01-01: - 0: - lower_threshold: -inf - upper_threshold: 0 - rate_linear: 0.0 - intercept_at_lower_threshold: 0 - 1: - upper_threshold: 100 - rate_linear: 0.1 - 2: - upper_threshold: inf - rate_linear: 0.3 -tax_schedule_reduced: - name: - de: Lohnsteuersatz - en: Payroll tax schedule - description: - de: Für Angehörige von Familien mit hohem Vermögen - en: For member of families with high wealth - unit: Euros - reference_period: Year - type: piecewise_linear - 1900-01-01: - 0: - lower_threshold: -inf - upper_threshold: 0 - rate_linear: 0 - intercept_at_lower_threshold: 0 - 1: - upper_threshold: 100 - rate_linear: 0.1 - 2: - upper_threshold: inf - rate_linear: 0.15 diff --git a/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml b/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml deleted file mode 100644 index 85d92dcf58..0000000000 --- a/tests/ttsim/mettsim/property_tax/acre_size_cap.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -year_from_which_cap_is_applied: - name: - de: Jahr, ab dem steuerlich berücksichtigte Größe des Ackers begrenzt wird - en: Year from which the acre size is capped - description: - de: >- - Jahr, ab dem steuerlich berücksichtigte Größe des Ackers begrenzt wird. - en: Year from which the acre size is capped. - unit: null - reference_period: null - type: scalar - 1900-01-01: - value: 2020 -cap_in_hectares: - name: - de: Größe des berücksichtigten Ackers - en: Acre size, from which the tax is capped - description: - de: >- - Größe des berücksichtigten Ackers. - en: Acre size, from which the tax is capped. - unit: null - reference_period: null - type: scalar - 1900-01-01: - value: 50.0 diff --git a/tests/ttsim/mettsim/property_tax/amount.py b/tests/ttsim/mettsim/property_tax/amount.py deleted file mode 100644 index 44d5eaf038..0000000000 --- a/tests/ttsim/mettsim/property_tax/amount.py +++ /dev/null @@ -1,54 +0,0 @@ -"""Property tax. - -Three tax brackets: - - No acre - - small acre - - large acre -""" - -from __future__ import annotations - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from types import ModuleType - -from ttsim.tt_dag_elements import ( - PiecewisePolynomialParamValue, - piecewise_polynomial, - policy_function, - policy_input, -) - - -@policy_input() -def acre_size_in_hectares() -> float: - """The size of the acre in hectares.""" - - -@policy_function(vectorization_strategy="vectorize") -def amount_y( - acre_size_in_hectares_after_cap: float, - tax_schedule: PiecewisePolynomialParamValue, - xnp: ModuleType, -) -> float: - """Property tax amount for the standard tax schedule.""" - return piecewise_polynomial( - x=acre_size_in_hectares_after_cap, - parameters=tax_schedule, - xnp=xnp, - ) - - -@policy_function() -def acre_size_in_hectares_after_cap( - acre_size_in_hectares: float, - cap_in_hectares: float, - year_from_which_cap_is_applied: int, - evaluation_year: int, -) -> float: - """The size of the acre in hectares after the cap is applied.""" - if evaluation_year < year_from_which_cap_is_applied: - return acre_size_in_hectares - else: - return min(acre_size_in_hectares, cap_in_hectares) diff --git a/tests/ttsim/mettsim/property_tax/tax_schedule.yaml b/tests/ttsim/mettsim/property_tax/tax_schedule.yaml deleted file mode 100644 index defc7d52a0..0000000000 --- a/tests/ttsim/mettsim/property_tax/tax_schedule.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -tax_schedule: - name: - de: Vermögenssteuer auf Landbesitz - en: Wealth tax on land - description: - de: >- - Vermögenssteuer auf Landbesitz. Bemisst sich an Größe des landwirtschaftlich - nutzbaren Landes in Hektar. - en: Wealth tax on land. Depends on size of arable land in hectares. - unit: Euros - reference_period: null - type: piecewise_constant - 1900-01-01: - 0: - lower_threshold: -inf - intercept_at_lower_threshold: 0 - 1: - lower_threshold: 10 - intercept_at_lower_threshold: 1000 - 2: - lower_threshold: 100 - upper_threshold: inf - intercept_at_lower_threshold: 10000 diff --git a/tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml b/tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml deleted file mode 100644 index ee4c534aad..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/group_by_ids/2025-01-01/group_by_ids.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - gross_wage_y: - - 10000 - - 0 - - 0 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 -outputs: - fam_id: - - 0 - - 0 - - 0 - sp_id: - - 0 - - 0 - - 1 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml deleted file mode 100644 index e4804a0e76..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_high_income.yaml +++ /dev/null @@ -1,54 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_m: - - 1500 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 0.0 - - 0.0 - eligibility: - requirement_fulfilled_fam: - - false - - false - income: - amount_m: - - 1054.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml deleted file mode 100644 index 51a013e23b..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_no_children_low_income.yaml +++ /dev/null @@ -1,54 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_m: - - 800 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 282.0 - - 282.0 - eligibility: - requirement_fulfilled_fam: - - true - - true - income: - amount_m: - - 564.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml deleted file mode 100644 index d9835301a3..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_high_income.yaml +++ /dev/null @@ -1,67 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_m: - - 1500 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 0.0 - - 0.0 - - 0.0 - eligibility: - requirement_fulfilled_fam: - - false - - false - - false - income: - amount_m: - - 1056.0 - - 0.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml deleted file mode 100644 index 763eec0dd6..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2000-01-01/amount_with_children_low_income.yaml +++ /dev/null @@ -1,67 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_m: - - 800 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 283.0 - - 283.0 - - 283.0 - eligibility: - requirement_fulfilled_fam: - - true - - true - - true - income: - amount_m: - - 566.0 - - 0.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml deleted file mode 100644 index 8c33de3318..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_high_income.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_m: - - 1500 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 0.0 - - 0.0 - eligibility: - number_of_family_members_considered_fam: - - 2 - - 2 - number_of_individuals_fam: - - 2 - - 2 - requirement_fulfilled_fam: - - false - - false - income: - amount_m: - - 1054.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml deleted file mode 100644 index 99e35c3e5c..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_no_children_low_income.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_m: - - 800 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 282.0 - - 282.0 - eligibility: - number_of_family_members_considered_fam: - - 2 - - 2 - number_of_individuals_fam: - - 2 - - 2 - requirement_fulfilled_fam: - - true - - true - income: - amount_m: - - 564.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml deleted file mode 100644 index 05924b8221..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_high_income.yaml +++ /dev/null @@ -1,75 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_m: - - 1500 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 528.0 - - 528.0 - - 528.0 - eligibility: - number_of_family_members_considered_fam: - - 3 - - 3 - - 3 - number_of_individuals_fam: - - 3 - - 3 - - 3 - requirement_fulfilled_fam: - - true - - true - - true - income: - amount_m: - - 1056.0 - - 0.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml deleted file mode 100644 index 8ab89ee200..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_children_low_income.yaml +++ /dev/null @@ -1,75 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 0 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_m: - - 800 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 283.0 - - 283.0 - - 283.0 - eligibility: - number_of_family_members_considered_fam: - - 3 - - 3 - - 3 - number_of_individuals_fam: - - 3 - - 3 - - 3 - requirement_fulfilled_fam: - - true - - true - - true - income: - amount_m: - - 566.0 - - 0.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml deleted file mode 100644 index 503e1ef30e..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/housing_benefits/2025-01-01/amount_with_many_children.yaml +++ /dev/null @@ -1,105 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - - 10 - - 10 - kin_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - p_id_parent_1: - - -1 - - -1 - - 0 - - 0 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - - 1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - - -1 - - -1 - parent_is_noble: - - false - - false - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - - 0 - - 0 - income: - gross_wage_y: - - 10000 - - 0 - - 0 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 -outputs: - housing_benefits: - amount_m_fam: - - 297.5 - - 297.5 - - 297.5 - - 297.5 - - 297.5 - eligibility: - number_of_family_members_considered_fam: - - 4 - - 4 - - 4 - - 4 - - 4 - number_of_individuals_fam: - - 5 - - 5 - - 5 - - 5 - - 5 - requirement_fulfilled_fam: - - true - - true - - true - - true - - true - income: - amount_m: - - 595.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 diff --git a/tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml b/tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml deleted file mode 100644 index 3bad299280..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/orc_hunting_bounty/1900-01-01/amount.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - orc_hunting_bounty: - large_orcs_hunted: - - 0 - - 2 - - 1 - small_orcs_hunted: - - 2 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - parent_is_noble: - - false - - false - - true -outputs: - orc_hunting_bounty: - amount: - - 200.0 - - 400.0 - - 100.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml deleted file mode 100644 index 230e71ae37..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_y: - - 10000 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - payroll_tax: - amount_y: - - 2950.0 - - 0.0 - child_tax_credit: - child_eligible: - - false - - false - claim_of_child_y: - - 0.0 - - 0.0 - in_same_household_as_recipient: - - false - - false - income: - amount_y: - - 9900.0 - - 0.0 - amount_y_sp: - - 9900.0 - - 9900.0 - deductions_y: - - 100.0 - - 100.0 - deductions_y_sp: - - 200.0 - - 200.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml deleted file mode 100644 index d1dbac9449..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_high_wealth.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble: - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_y: - - 10000 - - 0 - wealth: - - 100000.0 - - 100000.0 -outputs: - payroll_tax: - amount_y: - - 1480.0 - - 0.0 - child_tax_credit: - child_eligible: - - false - - false - claim_of_child_y: - - 0.0 - - 0.0 - in_same_household_as_recipient: - - false - - false - income: - amount_y: - - 9900 - - 0.0 - amount_y_sp: - - 9900 - - 9900 - deductions_y: - - 100 - - 100.0 - deductions_y_sp: - - 200 - - 200.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml deleted file mode 100644 index b8201dedbf..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_no_children_noble_parents.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - kin_id: - - 0 - - 0 - p_id: - - 0 - - 1 - p_id_parent_1: - - -1 - - -1 - p_id_parent_2: - - -1 - - -1 - p_id_spouse: - - 1 - - 0 - parent_is_noble_fam: - - true - - true - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - income: - gross_wage_y: - - 10000 - - 0 - wealth: - - 0.0 - - 0.0 -outputs: - payroll_tax: - amount_y: - - 0.0 - - 0.0 - child_tax_credit: - child_eligible: - - false - - false - claim_of_child_y: - - 0.0 - - 0.0 - in_same_household_as_recipient: - - false - - false - income: - amount_y: - - 9900 - - 0.0 - amount_y_sp: - - 9900 - - 9900 - deductions_y: - - 100 - - 100.0 - deductions_y_sp: - - 200 - - 200.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml deleted file mode 100644 index a945718673..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_y: - - 10000 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - payroll_tax: - amount_y: - - 2920.0 - - 0.0 - - 0.0 - child_tax_credit: - amount_m: - - 8.333333 - - 0.0 - - 0.0 - child_eligible: - - false - - false - - true - claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - in_same_household_as_recipient: - - false - - false - - true - income: - amount_y: - - 9800 - - 0.0 - - 0.0 - deductions_y: - - 200 - - 100.0 - - 100.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml deleted file mode 100644 index 5f5ca4515a..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_children_inputs_need_to_be_converted.yaml +++ /dev/null @@ -1,87 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - kin_id: - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - p_id_parent_1: - - -1 - - -1 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - parent_is_noble: - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - income: - gross_wage_m: - - 833.333333 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 -outputs: - payroll_tax: - amount_y: - - 2920.0 - - 0.0 - - 0.0 - child_tax_credit: - amount_m: - - 8.333333 - - 0.0 - - 0.0 - child_eligible: - - false - - false - - true - claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - in_same_household_as_recipient: - - false - - false - - true - income: - amount_y: - - 9800 - - 0.0 - - 0.0 - amount_y_sp: - - 9800 - - 9800 - - 0.0 - deductions_y: - - 200 - - 100.0 - - 100.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml deleted file mode 100644 index 1ff0068d95..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/amount_with_many_children.yaml +++ /dev/null @@ -1,117 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - age: - - 30 - - 30 - - 10 - - 10 - - 10 - kin_id: - - 0 - - 0 - - 0 - - 0 - - 0 - p_id: - - 0 - - 1 - - 2 - - 3 - - 4 - p_id_parent_1: - - -1 - - -1 - - 0 - - 0 - - 0 - p_id_parent_2: - - -1 - - -1 - - 1 - - 1 - - 1 - p_id_spouse: - - 1 - - 0 - - -1 - - -1 - - -1 - parent_is_noble: - - false - - false - - false - - false - - false - payroll_tax: - child_tax_credit: - p_id_recipient: - - -1 - - -1 - - 0 - - 0 - - 0 - income: - gross_wage_y: - - 10000 - - 0 - - 0 - - 0 - - 0 - wealth: - - 0.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 -outputs: - payroll_tax: - amount_y: - - 2860.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - child_tax_credit: - amount_m: - - 25.0 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - child_eligible: - - false - - false - - true - - true - - true - claim_of_child_y: - - 0.0 - - 0.0 - - 100.0 - - 100.0 - - 100.0 - in_same_household_as_recipient: - - false - - false - - true - - true - - true - income: - amount_y: - - 9600 - - 0.0 - - 0.0 - - 0.0 - - 0.0 - deductions_y: - - 400 - - 100.0 - - 100.0 - - 100.0 - - 100.0 diff --git a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml b/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml deleted file mode 100644 index 1202ee4386..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/payroll_tax/2025-01-01/deductions_param_overwritten_by_column.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -info: - note: Scalar parameter `lump_sum_deduction_y` is overwritten by a column. - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - p_id: - - 0 - - 1 - - 2 - payroll_tax: - child_tax_credit: - amount_y: - - 0.0 - - 0.0 - - 0.0 - income: - lump_sum_deduction_y: - - 100.0 - - 200.0 - - 300.0 -outputs: - payroll_tax: - income: - deductions_y: - - 100.0 - - 200.0 - - 300.0 diff --git a/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml b/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml deleted file mode 100644 index d8aac0b655..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - p_id: - - 0 - - 1 - - 2 - property_tax: - acre_size_in_hectares: - - 5 - - 20 - - 200 -outputs: - property_tax: - amount_y: - - 0.0 - - 1000.0 - - 10000.0 diff --git a/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml b/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml deleted file mode 100644 index 5c253c31b4..0000000000 --- a/tests/ttsim/mettsim_tests/test_data/property_tax/2000-01-01/acre_size_capped_via_evaluation_year.yaml +++ /dev/null @@ -1,35 +0,0 @@ ---- -info: - note: '' - precision_atol: 0.01 - source: '' -inputs: - assumed: {} - provided: - p_id: - - 0 - - 1 - - 2 - property_tax: - acre_size_in_hectares: - - 5 - - 20 - - 200 - evaluation_year: - - 2020 - - 2020 - - 2020 - evaluation_month: - - 1 - - 1 - - 1 - evaluation_day: - - 1 - - 1 - - 1 -outputs: - property_tax: - amount_y: - - 0.0 - - 1000.0 - - 1000.0 diff --git a/tests/ttsim/mettsim_tests/test_mettsim.py b/tests/ttsim/mettsim_tests/test_mettsim.py deleted file mode 100644 index 4c993fd048..0000000000 --- a/tests/ttsim/mettsim_tests/test_mettsim.py +++ /dev/null @@ -1,126 +0,0 @@ -from __future__ import annotations - -from datetime import timedelta -from pathlib import Path -from typing import TYPE_CHECKING, Literal - -import numpy -import pytest - -from ttsim import main -from ttsim.main_args import InputData -from ttsim.plot_dag import ( - plot_tt_dag, -) -from ttsim.testing_utils import ( - PolicyTest, - check_env_completeness, - execute_test, - load_policy_test_data, -) - -if TYPE_CHECKING: - import datetime - - from ttsim.interface_dag_elements.typing import ( - FlatColumnObjectsParamFunctions, - FlatOrigParamSpecs, - ) - -METTSIM_ROOT = Path(__file__).parent.parent / "mettsim" - - -POLICY_TEST_IDS_AND_CASES = load_policy_test_data( - test_dir=Path(__file__).parent.parent / "mettsim_tests", - policy_name="", - xnp=numpy, -) - - -def get_orig_mettsim_objects() -> dict[ - str, FlatColumnObjectsParamFunctions | FlatOrigParamSpecs -]: - return main( - main_targets=[ - "orig_policy_objects__column_objects_and_param_functions", - "orig_policy_objects__param_specs", - ], - orig_policy_objects={"root": METTSIM_ROOT}, - )["orig_policy_objects"] - - -def dates_in_orig_mettsim_objects() -> list[datetime.date]: - orig_objects = get_orig_mettsim_objects() - start_dates = { - v.start_date - for v in orig_objects["column_objects_and_param_functions"].values() - } - end_dates = { - v.end_date + timedelta(days=1) - for v in orig_objects["column_objects_and_param_functions"].values() - } - return sorted(start_dates | end_dates) - - -@pytest.fixture -def orig_mettsim_objects(): - return get_orig_mettsim_objects() - - -@pytest.mark.parametrize( - "test", - POLICY_TEST_IDS_AND_CASES.values(), - ids=POLICY_TEST_IDS_AND_CASES.keys(), -) -def test_mettsim(test: PolicyTest, backend: Literal["numpy", "jax"]): - execute_test(test=test, root=METTSIM_ROOT, backend=backend) - - -def test_mettsim_policy_environment_dag_with_params(): - plot_tt_dag( - policy_date_str="2020-01-01", - root=METTSIM_ROOT, - include_params=True, - title="METTSIM Policy Environment DAG with parameters", - show_node_description=True, - ) - - -def test_mettsim_policy_environment_dag_without_params(): - plot_tt_dag( - policy_date_str="2020-01-01", - root=METTSIM_ROOT, - include_params=False, - title="METTSIM Policy Environment DAG without parameters", - show_node_description=True, - ) - - -@pytest.mark.parametrize( - "date", - dates_in_orig_mettsim_objects(), - ids=lambda x: x.isoformat(), -) -def test_mettsim_policy_environment_is_complete(orig_mettsim_objects, date): - """Test that METTSIM's policy environment contains all root nodes of its DAG.""" - check_env_completeness( - name="METTSIM", - policy_date=date, - orig_policy_objects=orig_mettsim_objects, - ) - - -def test_fail_functions_are_executed_with_priority(backend: Literal["numpy", "jax"]): - data = {("p_id",): numpy.array([0, 1, 2, 3])} - with pytest.raises( - ValueError, - match=r"The following data columns are missing.", - ): - main( - main_target="results__tree", - policy_date_str="2020-01-01", - input_data=InputData.flat(data), - orig_policy_objects={"root": METTSIM_ROOT}, - tt_targets={"tree": {"property_tax": {"amount_y": None}}}, - backend=backend, - ) diff --git a/tests/ttsim/test_copy_environment.py b/tests/ttsim/test_copy_environment.py deleted file mode 100644 index 48520c51f7..0000000000 --- a/tests/ttsim/test_copy_environment.py +++ /dev/null @@ -1,188 +0,0 @@ -from __future__ import annotations - -from copy import deepcopy -from pathlib import Path -from typing import TYPE_CHECKING, Any - -import optree -import pytest - -from ttsim import copy_environment, main -from ttsim.interface_dag_elements import MainTarget -from ttsim.tt_dag_elements.param_objects import RawParam, ScalarParam - -if TYPE_CHECKING: - from ttsim.interface_dag_elements.typing import PolicyEnvironment - - -METTSIM_ROOT = Path(__file__).parent / "mettsim" - - -def test_copy_single_scalar_param(): - """Copy a ScalarParam and verify content equality but object independence.""" - original = ScalarParam(value=0.186) - copied = copy_environment(original) - - # Content should be identical - assert copied.value == original.value - assert copied.leaf_name == original.leaf_name - - # But objects should be independent - assert copied is not original - - -def test_copy_nested_dict_with_params(): - """Copy nested dictionary with parameters and verify structural preservation.""" - original = { - "level1": { - "level2": { - "param1": ScalarParam(value=0.5), - "param2": ScalarParam(value=1.0), - } - } - } - - copied = copy_environment(original) - - # Structure should be preserved - assert "level1" in copied - assert "level2" in copied["level1"] - assert "param1" in copied["level1"]["level2"] - assert "param2" in copied["level1"]["level2"] - - # Values should be preserved - assert copied["level1"]["level2"]["param1"].value == 0.5 - assert copied["level1"]["level2"]["param2"].value == 1.0 - - # Modifications to copy should not affect original - copied["level1"]["level2"]["param1"] = ScalarParam(value=2.0) - assert original["level1"]["level2"]["param1"].value == 0.5 - assert copied["level1"]["level2"]["param1"].value == 2.0 - - -def test_copy_full_policy_environment(): - """Copy complete policy environment and verify independence of nested parameters.""" - # Load policy environment (mettsim) - policy_env = main( - main_target=MainTarget.policy_environment, - policy_date_str="2025-01-01", - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - copied_env = copy_environment(policy_env) - - # Verify skeletons (tree structure) are identical - assert set(optree.tree_paths(policy_env)) == set(optree.tree_paths(copied_env)) - - # Get reference to nested parameter in both versions - original_param = policy_env["orc_hunting_bounty"]["raw_bounties_per_orc"] - copied_param = copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"] - - # Values should be equal initially - assert copied_param.value == original_param.value - - # Modify copy - should not affect original - copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"] = RawParam( - value={ - "small_orc": 500, - "large_orc": {"peasant_hunter": 500, "noble_hunter": 500}, - } - ) - - assert ( - policy_env["orc_hunting_bounty"]["raw_bounties_per_orc"].value - == original_param.value - ) - assert copied_env["orc_hunting_bounty"]["raw_bounties_per_orc"].value == { - "small_orc": 500, - "large_orc": {"peasant_hunter": 500, "noble_hunter": 500}, - } - - -def test_deepcopy_fails_on_policy_environment(): - """Verify copy.deepcopy fails on policy environments due to unpickleable objects.""" - policy_env = main( - main_target=MainTarget.policy_environment, - policy_date_str="2025-01-01", - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - with pytest.raises((TypeError, AttributeError)) as excinfo: - deepcopy(policy_env) - - # Should be a pickling-related error - error_message = str(excinfo.value).lower() - assert any(word in error_message for word in ["pickle", "module"]) - - -def test_copy_environment_works_where_deepcopy_fails(): - """Verify copy_environment succeeds on objects that break copy.deepcopy.""" - policy_env = main( - main_target=MainTarget.policy_environment, - policy_date_str="2025-01-01", - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - # Confirm deepcopy fails - with pytest.raises((TypeError, AttributeError)): - deepcopy(policy_env) - - # But copy_environment should work - copied_env = copy_environment(policy_env) - assert set(optree.tree_paths(policy_env)) == set(optree.tree_paths(copied_env)) - assert isinstance(copied_env, dict) - assert len(copied_env) > 0 - - -def test_copy_empty_dict(): - """Copy empty dictionary and verify independence.""" - original: dict[str, Any] = {} - copied = copy_environment(original) - - assert copied == {} - assert copied is not original - - -def test_copy_mixed_data_types(): - """Copy dictionary with various data types and verify all are handled correctly.""" - original: dict[str, Any] = { - "scalar": ScalarParam(value=42), - "string": "hello", - "number": 123, - "list": [1, 2, 3], - "nested": { - "param": ScalarParam(value=3.14), - "bool": True, - }, - } - - copied = copy_environment(original) - - # All types should be preserved - assert copied["scalar"].value == 42 - assert copied["string"] == "hello" - assert copied["number"] == 123 - assert copied["list"] == [1, 2, 3] - assert copied["nested"]["param"].value == 3.14 - assert copied["nested"]["bool"] is True - - # Modifications should be independent - copied["nested"]["param"] = ScalarParam(value=2.71) - assert original["nested"]["param"].value == 3.14 - assert copied["nested"]["param"].value == 2.71 - - -def test_policy_environment_type_inference(): - """Verify type hints work correctly for PolicyEnvironment input/output (mettsim).""" - policy_env = main( - main_target=MainTarget.policy_environment, - policy_date_str="2025-01-01", - orig_policy_objects={"root": METTSIM_ROOT}, - ) - - # Type checker should infer PolicyEnvironment -> PolicyEnvironment - copied_env: PolicyEnvironment = copy_environment(policy_env) - - # Function should work correctly - assert isinstance(copied_env, dict) - assert "payroll_tax" in copied_env diff --git a/tests/ttsim/test_end_to_end.py b/tests/ttsim/test_end_to_end.py deleted file mode 100644 index e426835e25..0000000000 --- a/tests/ttsim/test_end_to_end.py +++ /dev/null @@ -1,201 +0,0 @@ -from __future__ import annotations - -from pathlib import Path -from typing import TYPE_CHECKING - -import dags.tree as dt -import pandas as pd -import pytest - -from ttsim import InputData, MainTarget, TTTargets, main -from ttsim.tt_dag_elements.column_objects_param_function import policy_function - -if TYPE_CHECKING: - from types import ModuleType - from typing import Literal - - -DF_WITH_NESTED_COLUMNS = pd.DataFrame( - { - ("age",): [30, 30, 10], - ("kin_id",): [0, 0, 0], - ("p_id",): [0, 1, 2], - ("p_id_parent_1",): [-1, -1, 0], - ("p_id_parent_2",): [-1, -1, 1], - ("p_id_spouse",): [1, 0, -1], - ("parent_is_noble",): [False, False, False], - ("wealth",): [0.0, 0.0, 0.0], - ("payroll_tax", "child_tax_credit", "p_id_recipient"): [-1, -1, 0], - ("payroll_tax", "income", "gross_wage_y"): [10000, 0, 0], - }, -) - - -DF_FOR_MAPPER = pd.DataFrame( - { - "age": [30, 30, 10], - "kin_id": [0, 0, 0], - "p_id": [0, 1, 2], - "parent_1": [-1, -1, 0], - "parent_2": [-1, -1, 1], - "spouse": [1, 0, -1], - "parent_is_noble": [False, False, False], - "child_tax_credit_recipient": [-1, -1, 0], - "gross_wage_y": [10000, 0, 0], - "wealth": [0.0, 0.0, 0.0], - }, -) - - -INPUT_DF_MAPPER = { - "age": "age", - "kin_id": "kin_id", - "p_id": "p_id", - "p_id_parent_1": "parent_1", - "p_id_parent_2": "parent_2", - "p_id_spouse": "spouse", - "parent_is_noble": "parent_is_noble", - "wealth": "wealth", - "payroll_tax": { - "child_tax_credit": { - "p_id_recipient": "child_tax_credit_recipient", - }, - "income": { - "gross_wage_y": "gross_wage_y", - }, - }, -} - - -TARGETS_TREE = { - "payroll_tax": { - "amount_y": "payroll_tax_amount_y", - "child_tax_credit": { - "amount_m": "payroll_tax_child_tax_credit_amount_m", - }, - }, -} - - -EXPECTED_TT_RESULTS = pd.DataFrame( - { - "payroll_tax_amount_y": [2920.0, 0.0, 0.0], - "payroll_tax_child_tax_credit_amount_m": [8.333333, 0.0, 0.0], - }, - index=pd.Index([0, 1, 2], name="p_id"), -) - - -@pytest.mark.parametrize( - "input_data_arg", - [ - # Correct way to do it - InputData.df_and_mapper(df=DF_FOR_MAPPER, mapper=INPUT_DF_MAPPER), - InputData.df_with_nested_columns(DF_WITH_NESTED_COLUMNS), - # May or may not continue to work. - {"df_and_mapper": {"df": DF_FOR_MAPPER, "mapper": INPUT_DF_MAPPER}}, - {"df_with_nested_columns": DF_WITH_NESTED_COLUMNS}, - ], -) -def test_end_to_end(input_data_arg, backend: Literal["numpy", "jax"]): - result = main( - main_target=(MainTarget.results.df_with_mapper), - input_data=input_data_arg, - tt_targets=TTTargets(tree=TARGETS_TREE), - policy_date_str="2025-01-01", - rounding=False, - orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, - backend=backend, - ) - pd.testing.assert_frame_equal( - EXPECTED_TT_RESULTS, - result, - check_dtype=False, - check_index_type=False, - ) - - -def test_can_create_input_template(backend: Literal["numpy", "jax"]): - result_template = main( - main_target=MainTarget.templates.input_data_dtypes, - policy_date_str="2025-01-01", - orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, - backend=backend, - tt_targets=TTTargets(tree=TARGETS_TREE), - ) - flat_result_template = dt.flatten_to_tree_paths(result_template) - flat_expected = dt.flatten_to_tree_paths(INPUT_DF_MAPPER) - assert flat_result_template.keys() == flat_expected.keys() - - -def test_modify_evaluation_date_after_creating_policy_environment( - backend: Literal["numpy", "jax"], - xnp: ModuleType, -): - policy_environment = main( - main_target=MainTarget.policy_environment, - policy_date_str="2000-01-01", - orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, - backend=backend, - ) - input_data = InputData.tree( - tree={ - "p_id": xnp.array([0, 1, 2]), - "property_tax": { - "acre_size_in_hectares": xnp.array([5, 20, 200]), - }, - } - ) - result = main( - main_target=MainTarget.results.df_with_mapper, - policy_environment=policy_environment, - # acre_size_in_hectares capped starting in 2020 - evaluation_date_str="2020-01-01", - input_data=input_data, - tt_targets=TTTargets( - tree={"property_tax": {"amount_y": "property_tax_amount_y"}} - ), - backend=backend, - ) - expected = pd.DataFrame( - { - "property_tax_amount_y": [0.0, 1000.0, 1000.0], - }, - index=pd.Index([0, 1, 2], name="p_id"), - ) - pd.testing.assert_frame_equal( - expected, result, check_dtype=False, check_index_type=False - ) - - -def test_different_evaluation_dates_across_data_rows( - backend: Literal["numpy", "jax"], xnp: ModuleType -): - @policy_function() - def f(evaluation_year: int) -> int: - return evaluation_year - - result = main( - main_target=MainTarget.results.df_with_nested_columns, - policy_environment={ - "f": f, - }, - input_data=InputData.tree( - tree={ - "p_id": xnp.array([1, 2, 3]), - "evaluation_year": xnp.array([2020, 2021, 2022]), - } - ), - tt_targets=TTTargets(tree={"f": None}), - backend=backend, - ) - - expected = pd.DataFrame( - { - ("f",): [2020, 2021, 2022], - }, - index=pd.Index([1, 2, 3], name="p_id"), - ) - pd.testing.assert_frame_equal( - expected, result, check_dtype=False, check_index_type=False - ) diff --git a/tests/ttsim/test_import_version.py b/tests/ttsim/test_import_version.py deleted file mode 100644 index 7e946d6ee6..0000000000 --- a/tests/ttsim/test_import_version.py +++ /dev/null @@ -1,16 +0,0 @@ -from __future__ import annotations - -import sys - -import pytest - -import ttsim - - -@pytest.mark.xfail(reason="Requires own package.") -def test_import(): - assert hasattr(ttsim, "__version__") - - -def test_python_version(): - assert sys.version_info >= (3, 11) diff --git a/tests/ttsim/test_interface_dag.py b/tests/ttsim/test_interface_dag.py deleted file mode 100644 index 3967cb88e0..0000000000 --- a/tests/ttsim/test_interface_dag.py +++ /dev/null @@ -1,454 +0,0 @@ -from __future__ import annotations - -import inspect - -import dags -import dags.tree as dt -import optree -import pytest - -from ttsim import InputData, OrigPolicyObjects, TTTargets -from ttsim.interface_dag import ( - _fail_if_input_structure_is_invalid, - _fail_if_requested_nodes_cannot_be_found, - _fail_if_root_nodes_of_interface_dag_are_missing, - _harmonize_inputs, - _harmonize_main_target, - _harmonize_main_targets, - _resolve_dynamic_interface_objects_to_static_nodes, - load_flat_interface_functions_and_inputs, -) -from ttsim.interface_dag_elements import MainTarget -from ttsim.interface_dag_elements.fail_if import format_list_linewise -from ttsim.interface_dag_elements.interface_node_objects import ( - fail_function, - input_dependent_interface_function, - interface_function, -) -from ttsim.plot_dag import dummy_callable -from ttsim.tt_dag_elements.column_objects_param_function import policy_function - - -@interface_function(leaf_name="interface_function_a") -def interface_function_a(a: int) -> int: - return a - - -@interface_function(leaf_name="interface_function_b") -def interface_function_b(b: int) -> int: - return b - - -@interface_function(leaf_name="interface_function_c") -def interface_function_c(interface_function_a: int, interface_function_b: int) -> int: - return interface_function_a + interface_function_b - - -@fail_function( - include_if_all_elements_present=["a"], - include_if_any_element_present=["b"], -) -def some_fail_function() -> None: - pass - - -@input_dependent_interface_function( - leaf_name="some_idif", - include_if_all_inputs_present=["input_1"], -) -def some_idif_require_input_1(input_1: int) -> int: - return input_1 - - -@input_dependent_interface_function( - leaf_name="some_idif", - include_if_all_inputs_present=["input_2", "n1__input_2"], -) -def some_idif_require_input_2_and_n1__input_2(input_2: int, n1__input_2: int) -> int: - return input_2 + n1__input_2 - - -@input_dependent_interface_function( - leaf_name="some_idif_with_conflicting_conditions", - include_if_all_inputs_present=["input_1"], -) -def some_idif_with_conflicting_conditions_require_input_1(input_1: int) -> int: - return input_1 - - -@input_dependent_interface_function( - leaf_name="some_idif_with_conflicting_conditions", - include_if_any_input_present=["input_1", "n1__input_2"], -) -def some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2( - input_1: int, n1__input_2: int -) -> int: - return input_1 + n1__input_2 - - -@input_dependent_interface_function( - include_if_any_input_present=["input_1"], - include_if_all_inputs_present=["input_2", "input_3"], -) -def a() -> int: - return 1 - - -@policy_function() -def e(c: int, d: float) -> float: - return c + d - - -def test_load_flat_interface_functions_and_inputs() -> None: - load_flat_interface_functions_and_inputs() - - -def test_interface_dag_is_complete() -> None: - # This will keep only one of possibly many InputDependentInterfaceFunctions. Here, - # we only care about some function with a leaf name, not the precise content. - nodes = { - dt.qname_from_tree_path((*p[:-1], f.leaf_name)): f - for p, f in load_flat_interface_functions_and_inputs().items() - } - - nodes_with_dummy_callables = { - qn: dummy_callable(n) if not callable(n) else n for qn, n in nodes.items() - } - f = dags.concatenate_functions( - functions=nodes_with_dummy_callables, - targets=None, - return_type="dict", - enforce_signature=False, - set_annotations=False, - ) - args = inspect.signature(f).parameters - if args: - raise ValueError( - "The full interface DAG should include all root nodes but requires inputs:" - f"\n\n{format_list_linewise(args.keys())}" - ) - - -def test_main_target_class_is_complete() -> None: - # This will keep only one of possibly many InputDependentInterfaceFunctions. Here, - # we only care about some function with a leaf name, not the precise content. - nodes = { - (*p[:-1], f.leaf_name) - for p, f in load_flat_interface_functions_and_inputs().items() - } - - # We do include the root path in MainTarget because it will be pre-defined in - # user-facing implementations. - nodes -= { - ( - "orig_policy_objects", - "root", - ), - } - - main_target_elements = set(dt.tree_paths(MainTarget.to_dict())) - - assert nodes == main_target_elements - - -@pytest.mark.parametrize( - ("main_targets", "nodes", "error_match"), - [ - ( - ["a"], - { - dt.qname_from_tree_path(p): n - for p, n in load_flat_interface_functions_and_inputs().items() - }, - r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"a"', - ), - ( - ["input_data"], - { - dt.qname_from_tree_path(p): n - for p, n in load_flat_interface_functions_and_inputs().items() - }, - r'output\snames[\s\S]+interface\sfunctions\sor\sinputs:[\s\S]+"input_data"', - ), - ( - [], - { - **{ - dt.qname_from_tree_path(p): n - for p, n in load_flat_interface_functions_and_inputs().items() - }, - "some_fail_function": some_fail_function, - }, - r'include\scondition[\s\S]+functions or inputs:[\s\S]+"a",\s+"b"', - ), - ], -) -def test_fail_if_requested_nodes_cannot_be_found( - main_targets, nodes, error_match -) -> None: - with pytest.raises(ValueError, match=error_match): - _fail_if_requested_nodes_cannot_be_found( - main_targets=main_targets, - nodes=nodes, - ) - - -def test_harmonize_inputs_main_args_input(): - x = { - "input_data": InputData.df_and_mapper( - df={"cannot use df because comparison fails"}, - mapper={"c": "a", "d": "b", "p_id": "p_id"}, - ), - "tt_targets": TTTargets(tree={"e": "f"}), - "policy_date_str": "2025-01-01", - "backend": "numpy", - "rounding": True, - "orig_policy_objects": OrigPolicyObjects( - column_objects_and_param_functions={("x.py", "e"): e}, - param_specs={}, - ), - } - harmonized = _harmonize_inputs(inputs=x) - - assert harmonized == { - "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, - "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - "tt_targets__tree": {"e": "f"}, - "policy_date_str": "2025-01-01", - "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, - "orig_policy_objects__param_specs": {}, - "backend": "numpy", - "rounding": True, - } - - -def test_harmonize_inputs_tree_input(): - x = { - "input_data": { - "df_and_mapper": { - "df": {"cannot use df because comparison fails"}, - "mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - } - }, - "tt_targets": {"tree": {"e": "f"}}, - "policy_date_str": "2025-01-01", - "backend": "numpy", - "rounding": True, - "orig_policy_objects": { - "column_objects_and_param_functions": {("x.py", "e"): e}, - "param_specs": {}, - }, - } - harmonized = _harmonize_inputs(inputs=x) - - assert harmonized == { - "input_data__df_and_mapper__df": {"cannot use df because comparison fails"}, - "input_data__df_and_mapper__mapper": {"c": "a", "d": "b", "p_id": "p_id"}, - "tt_targets__tree": {"e": "f"}, - "policy_date_str": "2025-01-01", - "orig_policy_objects__column_objects_and_param_functions": {("x.py", "e"): e}, - "orig_policy_objects__param_specs": {}, - "backend": "numpy", - "rounding": True, - } - - -@pytest.mark.parametrize( - ("main_target", "expected"), - [ - ("a__b", "a__b"), - (("a", "b"), "a__b"), - ({"a": {"b": None}}, "a__b"), - ], -) -def test_harmonize_main_target(main_target, expected): - harmonized = _harmonize_main_target(main_target=main_target) - - assert harmonized == expected - - -@pytest.mark.parametrize( - "dict_inputs", - [ - {"input_data": {"df_and_mapper": None}}, - {"input_data": {"not_around": None}}, - {"not_around": None}, - ], -) -def test_fail_if_input_structure_is_invalid(dict_inputs): - with pytest.raises(ValueError, match="Invalid inputs for main()"): - _fail_if_input_structure_is_invalid( - user_treedef=optree.tree_flatten(dict_inputs)[1], - expected_treedef=optree.tree_flatten(MainTarget.to_dict())[1], - ) - - -@pytest.mark.parametrize( - "main_target", - [ - ["a", "b"], - {"a": {"b": None}, "c": None}, - {"a": {"b": None, "c": None}}, - ], -) -def test_harmonize_main_target_fails_for_multiple_elements(main_target): - with pytest.raises( - ValueError, match="must be a single qualified name, a tuple, or a dict" - ): - _harmonize_main_target(main_target=main_target) - - -@pytest.mark.parametrize( - ("main_targets", "expected"), - [ - (["a__b"], ["a__b"]), - ([("a", "b")], ["a__b"]), - ({"a": {"b": None}}, ["a__b"]), - ], -) -def test_harmonize_main_targets(main_targets, expected): - harmonized = _harmonize_main_targets(main_targets=main_targets) - - assert harmonized == expected - - -@pytest.mark.parametrize( - ( - "flat_interface_objects", - "input_qnames", - "expected_function_name", - ), - [ - ( - { - ("some_idif_require_input_1",): some_idif_require_input_1, - ( - "some_idif_require_input_2_and_n1__input_2", - ): some_idif_require_input_2_and_n1__input_2, - }, - ["input_2", "n1__input_2"], - "some_idif_require_input_2_and_n1__input_2", - ), - ( - { - ("some_idif_require_input_1",): some_idif_require_input_1, - ( - "some_idif_require_input_2_and_n1__input_2", - ): some_idif_require_input_2_and_n1__input_2, - }, - ["input_1"], - "some_idif_require_input_1", - ), - ( - { - ("some_idif_require_input_1",): some_idif_require_input_1, - ( - "some_idif_require_input_2_and_n1__input_2", - ): some_idif_require_input_2_and_n1__input_2, - }, - ["input_2", "n1__input_2", "input_3"], - "some_idif_require_input_2_and_n1__input_2", - ), - ], -) -def test_resolve_dynamic_interface_objects_to_static_nodes_returns_correct_function( - flat_interface_objects, input_qnames, expected_function_name -): - static_func = next( - iter( - _resolve_dynamic_interface_objects_to_static_nodes( - flat_interface_objects=flat_interface_objects, - input_qnames=input_qnames, - ).values() - ) - ) - assert static_func.original_function_name == expected_function_name - - -def test_resolve_dynamic_interface_objects_to_static_nodes_with_conflicting_conditions(): # noqa: E501 - match = r"Multiple InputDependentInterfaceFunctions" - with pytest.raises(ValueError, match=match): - _resolve_dynamic_interface_objects_to_static_nodes( - flat_interface_objects={ - ( - "some_idif_with_conflicting_conditions_require_input_1", - ): some_idif_with_conflicting_conditions_require_input_1, - ( - "some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2", - ): some_idif_with_conflicting_conditions_require_input_1_or_n1__input_2, - }, - input_qnames=["input_1", "n1__input_2"], - ) - - -def test_fail_if_root_nodes_of_interface_dag_are_missing_without_missing_dynamic_nodes(): # noqa: E501 - flat_interface_objects = { - ("interface_function_a",): interface_function_a, - ("interface_function_b",): interface_function_b, - ("interface_function_c",): interface_function_c, - } - dag = dags.create_dag( - functions={ - dt.qname_from_tree_path(p): f for p, f in flat_interface_objects.items() - }, - targets=None, - ) - - with pytest.raises( - ValueError, - match=(r"The following arguments to `main` are missing for computing the"), - ): - _fail_if_root_nodes_of_interface_dag_are_missing( - dag=dag, - input_qnames=["a"], - flat_interface_objects=flat_interface_objects, - ) - - -def test_fail_if_root_nodes_of_interface_dag_are_missing_with_missing_dynamic_nodes(): - flat_interface_objects = { - ("a",): a, - ("interface_function_a",): interface_function_a, - } - dag = dags.create_dag( - functions={ - "interface_function_a": interface_function_a, - }, - targets=None, - ) - - with pytest.raises( - ValueError, - match=( - r"All of: \[\('input_2',\), \('input_3',\)\] or\n Any of: \[\('input_1',\)\]" # noqa: E501 - ), - ): - _fail_if_root_nodes_of_interface_dag_are_missing( - dag=dag, - input_qnames=[], - flat_interface_objects=flat_interface_objects, - ) - - -def test_fail_if_root_nodes_of_interface_dag_are_missing_dynamic_node_as_target(): - flat_interface_objects = { - ("some_idif_require_input_1",): some_idif_require_input_1, - } - dag = dags.create_dag( - functions={ - "some_idif_require_input_1": some_idif_require_input_1, - }, - targets=["some_idif_require_input_1"], - ) - - with pytest.raises( - ValueError, - match=( - r"(?!.*Note that the following missing nodes can also be provided via the following input).*" # noqa: E501 - ), - ): - _fail_if_root_nodes_of_interface_dag_are_missing( - dag=dag, - input_qnames=[], - flat_interface_objects=flat_interface_objects, - ) diff --git a/tests/ttsim/test_plot_dag.py b/tests/ttsim/test_plot_dag.py deleted file mode 100644 index 11991f7210..0000000000 --- a/tests/ttsim/test_plot_dag.py +++ /dev/null @@ -1,284 +0,0 @@ -from __future__ import annotations - -from pathlib import Path - -import pytest - -from ttsim.interface_dag import main -from ttsim.plot_dag import ( - _get_tt_dag_with_node_metadata, - _QNameNodeSelector, - plot_interface_dag, -) -from ttsim.tt_dag_elements import ( - ScalarParam, - param_function, - policy_function, -) - -SOME_PARAM_OBJECT = ScalarParam( - value=111, - leaf_name="some_param", - start_date="2025-01-01", - end_date="2025-12-31", - unit=None, - reference_period="", - name="", - description="", -) - - -@param_function( - start_date="2025-01-01", - end_date="2025-12-31", -) -def some_param_function(): - return 1 - - -@policy_function( - start_date="2025-01-01", - end_date="2025-12-31", -) -def some_policy_function(): - return 1 - - -@pytest.mark.parametrize( - "include_fail_and_warn_nodes", - [ - True, - False, - ], -) -def test_plot_full_interface_dag(include_fail_and_warn_nodes): - plot_interface_dag(include_fail_and_warn_nodes=include_fail_and_warn_nodes) - - -@pytest.mark.parametrize( - ( - "node_selector", - "expected_nodes", - ), - [ - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_y"], - type="ancestors", - order=1, - ), - [ - "payroll_tax__amount_y", - "payroll_tax__amount_standard_y", - "payroll_tax__amount_reduced_y", - "parent_is_noble_fam", - "wealth_fam", - "payroll_tax__wealth_threshold_for_reduced_tax_rate", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="ancestors", - order=1, - ), - [ - "payroll_tax__amount_m", - "payroll_tax__amount_y", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="ancestors", - order=2, - ), - [ - "payroll_tax__amount_m", - "payroll_tax__amount_y", - "payroll_tax__amount_standard_y", - "payroll_tax__amount_reduced_y", - "parent_is_noble_fam", - "wealth_fam", - "payroll_tax__wealth_threshold_for_reduced_tax_rate", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m", "property_tax__amount_m"], - type="ancestors", - order=1, - ), - [ - "payroll_tax__amount_m", - "payroll_tax__amount_y", - "property_tax__amount_m", - "property_tax__amount_y", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_y"], - type="neighbors", - order=1, - ), - [ - "payroll_tax__amount_m", - "payroll_tax__amount_y", - "payroll_tax__amount_standard_y", - "payroll_tax__amount_reduced_y", - "parent_is_noble_fam", - "wealth_fam", - "payroll_tax__wealth_threshold_for_reduced_tax_rate", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="neighbors", - order=1, - ), - [ - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - "payroll_tax__amount_y", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="neighbors", - order=2, - ), - [ - "housing_benefits__income__amount_m_fam", - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - "payroll_tax__amount_y", - "payroll_tax__amount_standard_y", - "payroll_tax__amount_reduced_y", - "parent_is_noble_fam", - "wealth_fam", - "payroll_tax__wealth_threshold_for_reduced_tax_rate", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m", "property_tax__amount_m"], - type="neighbors", - order=1, - ), - [ - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - "payroll_tax__amount_y", - "property_tax__amount_m", - "property_tax__amount_y", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_y"], - type="descendants", - order=1, - ), - [ - "payroll_tax__amount_m", - "payroll_tax__amount_y", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="descendants", - order=1, - ), - [ - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m"], - type="descendants", - order=2, - ), - [ - "housing_benefits__income__amount_m_fam", - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m", "property_tax__amount_m"], - type="descendants", - order=1, - ), - [ - "housing_benefits__income__amount_m", - "payroll_tax__amount_m", - "property_tax__amount_m", - ], - ), - ( - _QNameNodeSelector( - qnames=["payroll_tax__amount_m", "property_tax__amount_m"], - type="nodes", - ), - [ - "payroll_tax__amount_m", - "property_tax__amount_m", - ], - ), - ], -) -def test_node_selector(node_selector, expected_nodes): - environment = main( - main_target="policy_environment", - policy_date_str="2025-01-01", - orig_policy_objects={"root": Path(__file__).parent / "mettsim"}, - backend="numpy", - ) - dag = _get_tt_dag_with_node_metadata( - environment=environment, - node_selector=node_selector, - include_params=True, - ) - assert set(dag.nodes()) == set(expected_nodes) - - -@pytest.mark.parametrize( - ( - "include_params", - "expected_nodes", - ), - [ - ( - True, - [ - "some_param", - "some_param_function", - "some_policy_function", - ], - ), - ( - False, - [ - "some_policy_function", - ], - ), - ], -) -def test_params_are_removed_from_dag(include_params, expected_nodes): - environment = { - "some_param": SOME_PARAM_OBJECT, - "some_param_function": some_param_function, - "some_policy_function": some_policy_function, - } - dag = _get_tt_dag_with_node_metadata( - environment=environment, - include_params=include_params, - ) - assert set(dag.nodes()) == set(expected_nodes) diff --git a/tests/ttsim/tt_dag_elements/__init__.py b/tests/ttsim/tt_dag_elements/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/ttsim/tt_dag_elements/test_aggregation_functions.py b/tests/ttsim/tt_dag_elements/test_aggregation_functions.py deleted file mode 100644 index 870185dcbf..0000000000 --- a/tests/ttsim/tt_dag_elements/test_aggregation_functions.py +++ /dev/null @@ -1,642 +0,0 @@ -from __future__ import annotations - -import copy - -import numpy -import pytest - -try: - import jax_datetime - - my_datetime = jax_datetime.to_datetime -except ImportError: - my_datetime = lambda x: x # noqa: E731 - - -from ttsim.tt_dag_elements.aggregation import ( - grouped_all, - grouped_any, - grouped_count, - grouped_max, - grouped_mean, - grouped_min, - grouped_sum, - sum_by_p_id, -) - - -def parameterize_based_on_dict(test_cases, keys_of_test_cases=None): - """Apply pytest.mark.parametrize based on a dictionary.""" - test_cases = copy.copy(test_cases) - if keys_of_test_cases: - # Only use requested keys - test_cases = { - k: { - k_inner: v_inner - for k_inner, v_inner in v.items() - if k_inner in keys_of_test_cases - } - for k, v in test_cases.items() - if all(e in v for e in keys_of_test_cases) - } - - # Return parametrization - return pytest.mark.parametrize( - argnames=(argnames := sorted({k for v in test_cases.values() for k in v})), - argvalues=[[v.get(k) for k in argnames] for v in test_cases.values()], - ids=test_cases.keys(), - ) - - -test_grouped_specs = { - "constant_column": { - "column_to_aggregate": numpy.array([1, 1, 1, 1, 1]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "expected_res_count": numpy.array([2, 2, 3, 3, 3]), - "expected_res_sum": numpy.array([2, 2, 3, 3, 3]), - "expected_res_max": numpy.array([1, 1, 1, 1, 1]), - "expected_res_min": numpy.array([1, 1, 1, 1, 1]), - "expected_res_any": numpy.array([True, True, True, True, True]), - "expected_res_all": numpy.array([True, True, True, True, True]), - }, - "constant_column_group_id_unsorted": { - "column_to_aggregate": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "group_id": numpy.array([0, 1, 0, 1, 0]), - "expected_res_count": numpy.array([3, 2, 3, 2, 3]), - "expected_res_sum": numpy.array([3.0, 2.0, 3.0, 2.0, 3.0]), - "expected_res_mean": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "expected_res_max": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), - "expected_res_min": numpy.array([1.0, 1.0, 1.0, 1.0, 1.0]), - }, - "int_column": { - "column_to_aggregate": numpy.array([0, 1, 2, 3, 4]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "expected_res_sum": numpy.array([1, 1, 9, 9, 9]), - "expected_res_mean": numpy.array([0.5, 0.5, 3, 3, 3]), - "expected_res_max": numpy.array([1, 1, 4, 4, 4]), - "expected_res_min": numpy.array([0, 0, 2, 2, 2]), - "expected_res_any": numpy.array([True, True, True, True, True]), - "expected_res_all": numpy.array([False, False, True, True, True]), - }, - "unique_group_ids_with_gaps": { - "column_to_aggregate": numpy.array([0.0, 1.0, 2.0, 3.0, 4.0]), - "group_id": numpy.array([0, 0, 3, 3, 3]), - "expected_res_count": numpy.array([2, 2, 3, 3, 3]), - "expected_res_sum": numpy.array([1.0, 1.0, 9.0, 9.0, 9.0]), - "expected_res_mean": numpy.array([0.5, 0.5, 3.0, 3.0, 3.0]), - "expected_res_max": numpy.array([1.0, 1.0, 4.0, 4.0, 4.0]), - "expected_res_min": numpy.array([0.0, 0.0, 2.0, 2.0, 2.0]), - }, - "float_column": { - "column_to_aggregate": numpy.array([0.0, 1.5, 2.0, 3.0, 4.0]), - "group_id": numpy.array([0, 0, 3, 3, 3]), - "expected_res_sum": numpy.array([1.5, 1.5, 9.0, 9.0, 9.0]), - "expected_res_mean": numpy.array([0.75, 0.75, 3.0, 3.0, 3.0]), - "expected_res_max": numpy.array([1.5, 1.5, 4.0, 4.0, 4.0]), - "expected_res_min": numpy.array([0.0, 0.0, 2.0, 2.0, 2.0]), - }, - "more_than_two_groups": { - "column_to_aggregate": numpy.array([0.0, 1.0, 2.0, 3.0, 4.0]), - "group_id": numpy.array([1, 0, 1, 1, 3]), - "expected_res_count": numpy.array([3, 1, 3, 3, 1]), - "expected_res_sum": numpy.array([5.0, 1.0, 5.0, 5.0, 4.0]), - "expected_res_mean": numpy.array([5.0 / 3.0, 1.0, 5.0 / 3.0, 5.0 / 3.0, 4.0]), - "expected_res_max": numpy.array([3.0, 1.0, 3.0, 3.0, 4.0]), - "expected_res_min": numpy.array([0.0, 1.0, 0.0, 0.0, 4.0]), - }, - "bool_column": { - "column_to_aggregate": numpy.array([True, False, True, False, False]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "expected_res_any": numpy.array([True, True, True, True, True]), - "expected_res_all": numpy.array([False, False, False, False, False]), - "expected_res_sum": numpy.array([1, 1, 1, 1, 1]), - "expected_res_mean": numpy.array([0.5, 0.5, 1 / 3, 1 / 3, 1 / 3]), - }, - "group_id_unsorted_bool": { - "column_to_aggregate": numpy.array([True, False, True, True, True]), - "group_id": numpy.array([0, 1, 0, 1, 0]), - "expected_res_any": numpy.array([True, True, True, True, True]), - "expected_res_all": numpy.array([True, False, True, False, True]), - "expected_res_sum": numpy.array([3, 1, 3, 1, 3]), - }, - "unique_group_ids_with_gaps_bool": { - "column_to_aggregate": numpy.array([True, False, False, False, False]), - "group_id": numpy.array([0, 0, 3, 3, 3]), - "expected_res_any": numpy.array([True, True, False, False, False]), - "expected_res_all": numpy.array([False, False, False, False, False]), - "expected_res_sum": numpy.array([1, 1, 0, 0, 0]), - }, - "sum_by_p_id_float": { - "column_to_aggregate": numpy.array([10.0, 20.0, 30.0, 40.0, 50.0]), - "p_id_to_aggregate_by": numpy.array([-1, -1, 8, 8, 10]), - "p_id_to_store_by": numpy.array([7, 8, 9, 10, 11]), - "expected_res": numpy.array([0.0, 70.0, 0.0, 50.0, 0.0]), - "expected_type": numpy.floating, - }, - "sum_by_p_id_int": { - "column_to_aggregate": numpy.array([10, 20, 30, 40, 50]), - "p_id_to_aggregate_by": numpy.array([-1, -1, 8, 8, 10]), - "p_id_to_store_by": numpy.array([7, 8, 9, 10, 11]), - "expected_res": numpy.array([0, 70, 0, 50, 0]), - "expected_type": numpy.integer, - }, -} - -test_grouped_raises_specs = { - "dtype_boolean": { - "column_to_aggregate": numpy.array([True, True, True, False, False]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "error_max": TypeError, - "error_min": TypeError, - "exception_match": "grouped_", - }, - "float_group_id": { - "column_to_aggregate": numpy.array([0, 1, 2, 3, 4]), - "group_id": numpy.array([0, 0, 3.5, 3.5, 3.5]), - "p_id_to_store_by": numpy.array([0, 1, 2, 3, 4]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_max": TypeError, - "error_min": TypeError, - "error_sum_by_p_id": TypeError, - "exception_match": "The dtype of id columns must be integer.", - }, - "dtype_float": { - "column_to_aggregate": numpy.array([1.5, 2, 3.5, 4, 5]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", - }, - "float_group_id_bool": { - "column_to_aggregate": numpy.array([True, True, True, False, False]), - "group_id": numpy.array([0, 0, 3.5, 3.5, 3.5]), - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "The dtype of id columns must be integer.", - }, -} -test_grouped_specs["datetime"] = { - "column_to_aggregate": numpy.array( - [ - numpy.datetime64("2000"), - numpy.datetime64("2001"), - numpy.datetime64("2002"), - numpy.datetime64("2003"), - numpy.datetime64("2004"), - ], - ), - "group_id": numpy.array([1, 0, 1, 1, 1]), - "expected_res_max": numpy.array( - [ - numpy.datetime64("2004"), - numpy.datetime64("2001"), - numpy.datetime64("2004"), - numpy.datetime64("2004"), - numpy.datetime64("2004"), - ], - ), - "expected_res_min": numpy.array( - [ - numpy.datetime64("2000"), - numpy.datetime64("2001"), - numpy.datetime64("2000"), - numpy.datetime64("2000"), - numpy.datetime64("2000"), - ], - ), -} - -test_grouped_raises_specs["dtype_string"] = { - "column_to_aggregate": numpy.array(["0", "1", "2", "3", "4"]), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_max": TypeError, - "error_min": TypeError, - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", -} -test_grouped_raises_specs["datetime"] = { - "column_to_aggregate": numpy.array( - [ - numpy.datetime64("2000"), - numpy.datetime64("2001"), - numpy.datetime64("2002"), - numpy.datetime64("2003"), - numpy.datetime64("2004"), - ], - ), - "group_id": numpy.array([0, 0, 1, 1, 1]), - "error_sum": TypeError, - "error_mean": TypeError, - "error_any": TypeError, - "error_all": TypeError, - "exception_match": "grouped_", -} - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=["group_id", "expected_res_count"], -) -def test_grouped_count(group_id, expected_res_count, backend): - result = grouped_count( - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_count) - - -def _run_agg_by_group(agg_func, column_to_aggregate, group_id, backend): - return agg_func( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_sum", - ], -) -def test_grouped_sum(column_to_aggregate, group_id, expected_res_sum, backend): - result = _run_agg_by_group( - agg_func=grouped_sum, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_sum) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_mean", - ], -) -def test_grouped_mean(column_to_aggregate, group_id, expected_res_mean, backend): - result = _run_agg_by_group( - agg_func=grouped_mean, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_mean) - - -@parameterize_based_on_dict( - {k: v for k, v in test_grouped_specs.items() if "datetime" not in k}, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_max", - ], -) -def test_grouped_max(column_to_aggregate, group_id, expected_res_max, backend): - result = _run_agg_by_group( - agg_func=grouped_max, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_equal(result, expected_res_max) - - -@pytest.mark.skipif_jax -@parameterize_based_on_dict( - {k: v for k, v in test_grouped_specs.items() if "datetime" in k}, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_max", - ], -) -def test_grouped_max_datetime(column_to_aggregate, group_id, expected_res_max, backend): - result = _run_agg_by_group( - agg_func=grouped_max, - column_to_aggregate=my_datetime(column_to_aggregate), - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_equal(result, expected_res_max) - - -@parameterize_based_on_dict( - {k: v for k, v in test_grouped_specs.items() if "datetime" not in k}, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_min", - ], -) -def test_grouped_min(column_to_aggregate, group_id, expected_res_min, backend): - result = _run_agg_by_group( - agg_func=grouped_min, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_equal(result, expected_res_min) - - -@pytest.mark.skipif_jax -@parameterize_based_on_dict( - {k: v for k, v in test_grouped_specs.items() if "datetime" in k}, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_min", - ], -) -def test_grouped_min_datetime(column_to_aggregate, group_id, expected_res_min, backend): - result = _run_agg_by_group( - agg_func=grouped_min, - column_to_aggregate=my_datetime(column_to_aggregate), - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_equal(result, expected_res_min) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_any", - ], -) -def test_grouped_any(column_to_aggregate, group_id, expected_res_any, backend): - result = _run_agg_by_group( - agg_func=grouped_any, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_any) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "expected_res_all", - ], -) -def test_grouped_all(column_to_aggregate, group_id, expected_res_all, backend): - result = _run_agg_by_group( - agg_func=grouped_all, - column_to_aggregate=column_to_aggregate, - group_id=group_id, - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res_all) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_sum", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_sum_raises( - column_to_aggregate, - group_id, - error_sum, - exception_match, - backend, -): - with pytest.raises( - error_sum, - match=exception_match, - ): - grouped_sum( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_mean", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_mean_raises( - column_to_aggregate, - group_id, - error_mean, - exception_match, - backend, -): - with pytest.raises( - error_mean, - match=exception_match, - ): - grouped_mean( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_max", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_max_raises( - column_to_aggregate, - group_id, - error_max, - exception_match, - backend, -): - with pytest.raises( - error_max, - match=exception_match, - ): - grouped_max( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_min", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_min_raises( - column_to_aggregate, - group_id, - error_min, - exception_match, - backend, -): - with pytest.raises( - error_min, - match=exception_match, - ): - grouped_min( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_any", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_any_raises( - column_to_aggregate, - group_id, - error_any, - exception_match, - backend, -): - with pytest.raises( - error_any, - match=exception_match, - ): - grouped_any( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "error_all", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_grouped_all_raises( - column_to_aggregate, - group_id, - error_all, - exception_match, - backend, -): - with pytest.raises( - error_all, - match=exception_match, - ): - grouped_all( - column=column_to_aggregate, - group_id=group_id, - num_segments=len(group_id), - backend=backend, - ) - - -@parameterize_based_on_dict( - test_grouped_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "p_id_to_aggregate_by", - "p_id_to_store_by", - "expected_res", - "expected_type", - ], -) -def test_sum_by_p_id( - column_to_aggregate, - p_id_to_aggregate_by, - p_id_to_store_by, - expected_res, - expected_type, - backend, -): - result = sum_by_p_id( - column=column_to_aggregate, - p_id_to_aggregate_by=p_id_to_aggregate_by, - p_id_to_store_by=p_id_to_store_by, - num_segments=len(p_id_to_aggregate_by), - backend=backend, - ) - numpy.testing.assert_array_almost_equal(result, expected_res) - assert numpy.issubdtype(result.dtype.type, expected_type), ( - "The dtype of the result is not as expected." - ) - - -@parameterize_based_on_dict( - test_grouped_raises_specs, - keys_of_test_cases=[ - "column_to_aggregate", - "group_id", - "p_id_to_store_by", - "error_sum_by_p_id", - "exception_match", - ], -) -@pytest.mark.skipif_jax -def test_sum_by_p_id_raises( - column_to_aggregate, - group_id, - p_id_to_store_by, - error_sum_by_p_id, - exception_match, - backend, -): - with pytest.raises( - error_sum_by_p_id, - match=exception_match, - ): - sum_by_p_id( - column=column_to_aggregate, - p_id_to_aggregate_by=group_id, - p_id_to_store_by=p_id_to_store_by, - num_segments=len(group_id), - backend=backend, - ) diff --git a/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py b/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py deleted file mode 100644 index e2610c56ec..0000000000 --- a/tests/ttsim/tt_dag_elements/test_piecewise_polynomial.py +++ /dev/null @@ -1,101 +0,0 @@ -""" -Tests for `piecewise_polynomial` -""" - -from __future__ import annotations - -from typing import TYPE_CHECKING - -import numpy -import pytest - -if TYPE_CHECKING: - from types import ModuleType - - -from ttsim.tt_dag_elements.piecewise_polynomial import ( - PiecewisePolynomialParamValue, - get_piecewise_parameters, - piecewise_polynomial, -) - - -@pytest.fixture -def parameters(xnp: ModuleType): - return PiecewisePolynomialParamValue( - thresholds=xnp.array([-xnp.inf, 9168.0, 14254.0, 55960.0, 265326.0, xnp.inf]), - rates=xnp.array( - [ - [ - 0.00000000e00, - 1.40000000e-01, - 2.39700000e-01, - 4.20000000e-01, - 4.50000000e-01, - ], - [ - 0.00000000e00, - 9.80141565e-06, - 2.16155949e-06, - 0.00000000e00, - 0.00000000e00, - ], - ], - ), - intercepts=xnp.array([0.0, 0.0, 965.5771, 14722.3012, 102656.0212]), - ) - - -def test_get_piecewise_parameters_all_intercepts_supplied(xnp: ModuleType): - parameter_dict = { - 0: { - "lower_threshold": "-inf", - "upper_threshold": 2005, - "rate_linear": 0, - "intercept_at_lower_threshold": 0.27, - }, - 1: { - "lower_threshold": 2005, - "upper_threshold": 2021, - "rate_linear": 0.02, - "intercept_at_lower_threshold": 0.5, - }, - 2: { - "lower_threshold": 2021, - "upper_threshold": 2041, - "rate_linear": 0.01, - "intercept_at_lower_threshold": 0.8, - }, - 3: { - "lower_threshold": 2041, - "upper_threshold": "inf", - "rate_linear": 0, - "intercept_at_lower_threshold": 1, - }, - } - - actual = get_piecewise_parameters( - leaf_name="test", - func_type="piecewise_linear", - parameter_dict=parameter_dict, - xnp=xnp, - ) - expected = xnp.array([0.27, 0.5, 0.8, 1]) - - numpy.testing.assert_allclose(actual.intercepts, expected, atol=1e-7) - - -def test_piecewise_polynomial( - parameters: PiecewisePolynomialParamValue, - xnp: ModuleType, -): - x = xnp.array([-1_000, 1_000, 10_000, 30_000, 100_000, 1_000_000]) - expected = xnp.array([0.0, 0.0, 246.53, 10551.65, 66438.2, 866518.64]) - - actual = piecewise_polynomial( - x=x, - parameters=parameters, - rates_multiplier=2, - xnp=xnp, - ) - numpy.testing.assert_allclose(xnp.array(actual), expected, atol=0.01) diff --git a/tests/ttsim/tt_dag_elements/test_rounding.py b/tests/ttsim/tt_dag_elements/test_rounding.py deleted file mode 100644 index 42feb586c8..0000000000 --- a/tests/ttsim/tt_dag_elements/test_rounding.py +++ /dev/null @@ -1,269 +0,0 @@ -from __future__ import annotations - -import datetime - -import numpy -import pandas as pd -import pytest -from pandas._testing import assert_series_equal - -from ttsim import main -from ttsim.tt_dag_elements import ( - RoundingSpec, - policy_function, - policy_input, -) - - -@policy_input() -def x() -> int: - pass - - -@policy_input() -def p_id() -> int: - pass - - -rounding_specs_and_exp_results = [ - ( - RoundingSpec(base=1, direction="up"), - numpy.array([100.24, 100.78]), - numpy.array([101.0, 101.0]), - ), - ( - RoundingSpec(base=1, direction="down"), - numpy.array([100.24, 100.78]), - numpy.array([100.0, 100.0]), - ), - ( - RoundingSpec(base=1, direction="nearest"), - numpy.array([100.24, 100.78]), - numpy.array([100.0, 101.0]), - ), - ( - RoundingSpec(base=5, direction="up"), - numpy.array([100.24, 100.78]), - numpy.array([105.0, 105.0]), - ), - ( - RoundingSpec(base=0.1, direction="down"), - numpy.array([100.24, 100.78]), - numpy.array([100.2, 100.7]), - ), - ( - RoundingSpec(base=0.001, direction="nearest"), - numpy.array([100.24, 100.78]), - numpy.array([100.24, 100.78]), - ), - ( - RoundingSpec(base=1, direction="up", to_add_after_rounding=10), - numpy.array([100.24, 100.78]), - numpy.array([111.0, 111.0]), - ), - ( - RoundingSpec(base=1, direction="down", to_add_after_rounding=10), - numpy.array([100.24, 100.78]), - numpy.array([110.0, 110.0]), - ), - ( - RoundingSpec(base=1, direction="nearest", to_add_after_rounding=10), - numpy.array([100.24, 100.78]), - numpy.array([110.0, 111.0]), - ), -] - - -def test_decorator(): - rs = RoundingSpec(base=1, direction="up") - - @policy_function(rounding_spec=rs) - def test_func(): - return 0 - - assert test_func.rounding_spec == rs - - -def test_malformed_rounding_specs(): - with pytest.raises(TypeError): - - @policy_function(rounding_spec={"base": 1, "direction": "updsf"}) - def test_func(): - return 0 - - -@pytest.mark.parametrize( - ("rounding_spec", "input_values", "exp_output"), - rounding_specs_and_exp_results, -) -def test_rounding(rounding_spec, input_values, exp_output, backend): - """Check if rounding is correct.""" - - # Define function that should be rounded - @policy_function(rounding_spec=rounding_spec) - def test_func(x): - return x - - input_data__tree = { - "p_id": numpy.array([1, 2]), - "namespace": {"x": numpy.array(input_values)}, - } - policy_environment = {"namespace": {"test_func": test_func, "x": x}, "p_id": p_id} - - results__tree = main( - main_target="results__tree", - input_data={"tree": input_data__tree}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"namespace": {"test_func": None}}}, - rounding=True, - include_fail_nodes=False, - include_warn_nodes=False, - backend=backend, - ) - assert_series_equal( - pd.Series(results__tree["namespace"]["test_func"]), - pd.Series(exp_output), - check_names=False, - check_dtype=False, - ) - - -def test_rounding_with_time_conversion(backend, xnp): - """Check if rounding is correct for time-converted functions.""" - - # Define function that should be rounded - @policy_function(rounding_spec=RoundingSpec(base=1, direction="down")) - def test_func_m(x: float) -> float: - return x - - data = { - "p_id": xnp.array([1, 2]), - "x": xnp.array([1.2, 1.5]), - } - - policy_environment = { - "test_func_m": test_func_m, - "x": x, - "p_id": p_id, - } - - results__tree = main( - main_target="results__tree", - input_data={"tree": data}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"test_func_y": None}}, - rounding=True, - include_fail_nodes=False, - include_warn_nodes=False, - backend=backend, - ) - assert_series_equal( - pd.Series(results__tree["test_func_y"]), - pd.Series([12.0, 12.0]), - check_names=False, - check_dtype=False, - ) - - -@pytest.mark.parametrize( - ("rounding_spec", "input_values_exp_output", "ignore_since_no_rounding"), - rounding_specs_and_exp_results, -) -def test_no_rounding( - rounding_spec, - input_values_exp_output, - ignore_since_no_rounding, # noqa: ARG001 - backend, -): - # Define function that should be rounded - @policy_function(rounding_spec=rounding_spec) - def test_func(x): - return x - - data = {"p_id": numpy.array([1, 2])} - data["x"] = numpy.array(input_values_exp_output) - policy_environment = { - "test_func": test_func, - "x": x, - "p_id": p_id, - } - - results__tree = main( - main_target="results__tree", - input_data={"tree": data}, - policy_environment=policy_environment, - evaluation_date=datetime.date(2024, 1, 1), - tt_targets={"tree": {"test_func": None}}, - include_fail_nodes=False, - include_warn_nodes=False, - rounding=False, - backend=backend, - ) - assert_series_equal( - pd.Series(results__tree["test_func"]), - pd.Series(input_values_exp_output), - check_names=False, - check_dtype=False, - ) - - -@pytest.mark.parametrize( - ("rounding_spec", "input_values", "exp_output"), - rounding_specs_and_exp_results, -) -def test_rounding_callable(rounding_spec, input_values, exp_output, xnp): - """Check if callable is rounded correctly.""" - - def test_func(income): - return income - - func_with_rounding = rounding_spec.apply_rounding(test_func, xnp=xnp) - - assert_series_equal( - pd.Series(func_with_rounding(input_values)), - pd.Series(exp_output), - check_names=False, - check_dtype=False, - ) - - -@pytest.mark.parametrize( - ("rounding_spec", "input_values", "exp_output"), - rounding_specs_and_exp_results, -) -def test_rounding_spec(rounding_spec, input_values, exp_output, xnp): - """Test RoundingSpec directly.""" - - def test_func(income): - return income - - rounded_func = rounding_spec.apply_rounding(test_func, xnp=xnp) - result = rounded_func(input_values) - - assert_series_equal( - pd.Series(result), - pd.Series(exp_output), - check_names=False, - check_dtype=False, - ) - - -@pytest.mark.parametrize( - ("base", "direction", "to_add_after_rounding", "match"), - [ - (1, "upper", 0, "`direction` must be one of"), - (5, "closest", 0, "`direction` must be one of"), - ("0.1", "down", 0, "base needs to be a number"), - (5, "up", "0", "Additive part must be a number"), - ], -) -def test_rounding_spec_validation(base, direction, to_add_after_rounding, match): - """Test validation of RoundingSpec parameters.""" - with pytest.raises(ValueError, match=match): - RoundingSpec( - base=base, - direction=direction, - to_add_after_rounding=to_add_after_rounding, - ) diff --git a/tests/ttsim/tt_dag_elements/test_shared.py b/tests/ttsim/tt_dag_elements/test_shared.py deleted file mode 100644 index 245750bbdd..0000000000 --- a/tests/ttsim/tt_dag_elements/test_shared.py +++ /dev/null @@ -1,72 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -import numpy -import pytest - -from ttsim.tt_dag_elements import join - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import IntColumn - - -@pytest.mark.parametrize( - ( - "foreign_key", - "primary_key", - "target", - "value_if_foreign_key_is_missing", - "expected", - ), - [ - ( - numpy.array([1, 2, 3]), - numpy.array([1, 2, 3]), - numpy.array([1, 2, 3]), - 4, - numpy.array([1, 2, 3]), - ), - ( - numpy.array([3, 2, 1]), - numpy.array([1, 2, 3]), - numpy.array([1, 2, 3]), - 4, - numpy.array([3, 2, 1]), - ), - ( - numpy.array([1, 1, 1]), - numpy.array([1, 2, 3]), - numpy.array([1, 2, 3]), - 4, - numpy.array([1, 1, 1]), - ), - ( - numpy.array([-1]), - numpy.array([1]), - numpy.array([1]), - 4, - numpy.array([4]), - ), - ], -) -def test_join( - foreign_key: IntColumn, - primary_key: IntColumn, - target: IntColumn, - value_if_foreign_key_is_missing: int, - expected: IntColumn, - xnp: ModuleType, -): - assert numpy.array_equal( - join( - foreign_key=xnp.asarray(foreign_key), - primary_key=xnp.asarray(primary_key), - target=xnp.asarray(target), - value_if_foreign_key_is_missing=value_if_foreign_key_is_missing, - xnp=xnp, - ), - expected, - ) diff --git a/tests/ttsim/tt_dag_elements/test_ttsim_objects.py b/tests/ttsim/tt_dag_elements/test_ttsim_objects.py deleted file mode 100644 index f1b2f2406c..0000000000 --- a/tests/ttsim/tt_dag_elements/test_ttsim_objects.py +++ /dev/null @@ -1,306 +0,0 @@ -from __future__ import annotations - -import inspect - -import pytest - -from ttsim.tt_dag_elements import ( - AggType, - PolicyFunction, - PolicyInput, - agg_by_group_function, - agg_by_p_id_function, - policy_function, - policy_input, -) -from ttsim.tt_dag_elements.column_objects_param_function import ( - ParamFunction, - param_function, -) - -# ====================================================================================== -# PolicyFunction and policy_function -# ====================================================================================== - - -@policy_function() -def simple_policy_function(x): - return x - - -@policy_function(leaf_name="simple_policy_function") -def policy_function_with_different_leaf_name(x): - return x - - -@policy_function(start_date="2007-01-01", end_date="2011-12-31") -def policy_function_with_dates(x): - return x - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_different_leaf_name, - ], -) -def test_policy_function_type(function): - assert isinstance(function, PolicyFunction) - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_function, - policy_function_with_different_leaf_name, - ], -) -def test_policy_function_name(function): - assert function.leaf_name == "simple_policy_function" - - -def test_policy_function_with_dates(): - assert str(policy_function_with_dates.start_date) == "2007-01-01" - assert str(policy_function_with_dates.end_date) == "2011-12-31" - - -# ====================================================================================== -# ParamFunction and param_function -# ====================================================================================== - - -@param_function() -def simple_param_function(x): - return x - - -@param_function(leaf_name="simple_param_function") -def param_function_with_different_leaf_name(x): - return x - - -@param_function(start_date="2007-01-01", end_date="2011-12-31") -def param_function_with_dates(x): - return x - - -@pytest.mark.parametrize( - "function", - [ - simple_param_function, - param_function_with_different_leaf_name, - ], -) -def test_param_function_type(function): - assert isinstance(function, ParamFunction) - - -@pytest.mark.parametrize( - "function", - [ - simple_param_function, - param_function_with_different_leaf_name, - ], -) -def test_param_function_name(function): - assert function.leaf_name == "simple_param_function" - - -def test_param_function_with_dates(): - assert str(param_function_with_dates.start_date) == "2007-01-01" - assert str(param_function_with_dates.end_date) == "2011-12-31" - - -# ====================================================================================== -# PolicyInput and policy_input -# ====================================================================================== - - -@policy_input() -def simple_policy_input() -> float: - pass - - -@policy_input(start_date="2007-01-01", end_date="2011-12-31") -def policy_input_with_dates() -> float: - pass - - -@pytest.mark.parametrize( - "function", - [ - simple_policy_input, - policy_input_with_dates, - ], -) -def test_policy_input_type(function): - assert isinstance(function, PolicyInput) - - -def test_policy_input_with_dates(): - assert str(policy_input_with_dates.start_date) == "2007-01-01" - assert str(policy_input_with_dates.end_date) == "2011-12-31" - - -# ====================================================================================== -# AggByGroupFunction and agg_by_group_function -# ====================================================================================== - - -@agg_by_group_function(agg_type=AggType.COUNT) -def aggregate_by_group_count(group_id): - pass - - -@agg_by_group_function(agg_type=AggType.SUM) -def aggregate_by_group_sum(group_id, source): - pass - - -@pytest.mark.parametrize( - ( - "function", - "expected_group_id", - "expected_other_arg", - ), - [ - (aggregate_by_group_count, "group_id", None), - (aggregate_by_group_sum, "group_id", "source"), - ], -) -def test_agg_by_group_function_type(function, expected_group_id, expected_other_arg): - args = inspect.signature(function).parameters - assert expected_group_id in args - if expected_other_arg: - assert expected_other_arg in args - - -def test_agg_by_group_count_other_arg_present(): - match = "There must be no argument besides identifiers" - with pytest.raises(ValueError, match=match): - - @agg_by_group_function(agg_type=AggType.COUNT) - def aggregate_by_group_count_other_arg_present(group_id, wrong_arg): - pass - - -def test_agg_by_group_sum_wrong_amount_of_args(): - match = "There must be exactly one argument besides identifiers" - with pytest.raises(ValueError, match=match): - - @agg_by_group_function(agg_type=AggType.SUM) - def aggregate_by_group_sum_no_arg_present(group_id): - pass - - with pytest.raises(ValueError, match=match): - - @agg_by_group_function(agg_type=AggType.SUM) - def aggregate_by_group_sum_multiple_args_present(group_id, arg, another_arg): - pass - - -def test_wrong_number_of_group_ids_present(): - match = "Require exactly one group identifier ending with '_id'" - with pytest.raises(ValueError, match=match): - - @agg_by_group_function(agg_type=AggType.COUNT) - def aggregate_by_group_count_multiple_group_ids_present( - group_id, - another_group_id, - ): - pass - - with pytest.raises(ValueError, match=match): - - @agg_by_group_function(agg_type=AggType.COUNT) - def aggregate_by_group_count_no_group_id_present(): - pass - - -# ====================================================================================== -# AggByPIDFunction and agg_by_p_id_function -# ====================================================================================== - - -@agg_by_p_id_function(agg_type=AggType.COUNT) -def aggregate_by_p_id_count(p_id, p_id_specifier): - pass - - -@agg_by_p_id_function(agg_type=AggType.SUM) -def aggregate_by_p_id_sum(p_id, p_id_specifier, column): - pass - - -@pytest.mark.parametrize( - ( - "function", - "expected_foreign_p_id", - "expected_other_arg", - ), - [ - (aggregate_by_p_id_count, "p_id", None), - (aggregate_by_p_id_sum, "p_id", "column"), - ], -) -def test_agg_by_p_id_function_type(function, expected_foreign_p_id, expected_other_arg): - args = inspect.signature(function).parameters - assert expected_foreign_p_id in args - if expected_other_arg: - assert expected_other_arg in args - - -def test_agg_by_p_id_count_other_arg_present(): - match = "There must be no argument besides identifiers" - with pytest.raises(ValueError, match=match): - - @agg_by_p_id_function(agg_type=AggType.COUNT) - def aggregate_by_p_id_count_other_arg_present(p_id, p_id_specifier, wrong_arg): - pass - - -def test_agg_by_p_id_sum_no_arg_present(): - match = "There must be exactly one argument besides identifiers" - with pytest.raises(ValueError, match=match): - - @agg_by_p_id_function(agg_type=AggType.SUM) - def aggregate_by_p_id_sum_no_arg_present(p_id, p_id_specifier): - pass - - -def test_agg_by_p_id_sum_multiple_args_present(): - match = "There must be exactly one argument besides identifiers" - with pytest.raises(ValueError, match=match): - - @agg_by_p_id_function(agg_type=AggType.SUM) - def aggregate_by_p_id_sum_multiple_args_present( - p_id, - p_id_specifier, - arg, - another_arg, - ): - pass - - -def test_agg_by_p_id_multiple_other_p_ids_present(): - match = "Require exactly one identifier starting with 'p_id_' for" - with pytest.raises(ValueError, match=match): - - @agg_by_p_id_function(agg_type=AggType.SUM) - def aggregate_by_p_id_multiple_other_p_ids_present( - p_id, - p_id_specifier_one, - p_id_specifier_two, - ): - pass - - -def test_agg_by_p_id_sum_with_all_missing_p_ids(backend, xnp): - aggregate_by_p_id_sum( - p_id=xnp.array([180]), - p_id_specifier=xnp.array([-1]), - column=xnp.array([0]), - num_segments=1, - backend=backend, - ) diff --git a/tests/ttsim/tt_dag_elements/test_vectorization.py b/tests/ttsim/tt_dag_elements/test_vectorization.py deleted file mode 100644 index 834e695f0a..0000000000 --- a/tests/ttsim/tt_dag_elements/test_vectorization.py +++ /dev/null @@ -1,854 +0,0 @@ -from __future__ import annotations - -import datetime -import functools -import inspect -import string -from pathlib import Path -from typing import TYPE_CHECKING - -import dags.tree as dt -import numpy -import pytest -from numpy.testing import assert_array_equal - -from ttsim.interface_dag_elements.orig_policy_objects import ( - column_objects_and_param_functions, -) -from ttsim.interface_dag_elements.policy_environment import ( - _active_column_objects_and_param_functions, -) -from ttsim.tt_dag_elements import ( - GroupCreationFunction, - PolicyInput, - policy_function, -) -from ttsim.tt_dag_elements.column_objects_param_function import ( - AggByGroupFunction, - AggByPIDFunction, -) -from ttsim.tt_dag_elements.vectorization import ( - TranslateToVectorizableError, - _is_lambda_function, - _make_vectorizable, - make_vectorizable_source, - vectorize_function, -) - -if TYPE_CHECKING: - from types import ModuleType - - from ttsim.interface_dag_elements.typing import IntColumn - -# ====================================================================================== -# String comparison -# ====================================================================================== - - -def string_equal(s1, s2): - remove = string.punctuation + string.whitespace - mapping = {ord(c): None for c in remove} - return s1.translate(mapping) == s2.translate(mapping) - - -def test_compare_str(): - assert string_equal("This ! is a test.", "This is a test") - assert not string_equal("This is a test", "This is not a test") - - -# ====================================================================================== -# Test functions (no error) -# ====================================================================================== - - -def f0(x): - if x < 0: - return 0 - else: - return 1 - - -def f0_exp(x): - return numpy.where(x < 0, 0, 1) - - -def f1(x): - if x < 0: - out = 0 - else: - out = 1 - return out - - -def f1_exp(x): - out = numpy.where(x < 0, 0, 1) - return out - - -def f2(x): - return 0 if x < 0 else 1 - - -def f2_exp(x): - return numpy.where(x < 0, 0, 1) - - -def f3(x): - out = 1 - if x < 0: - out = 0 - return out - - -def f3_exp(x): - out = 1 - out = numpy.where(x < 0, 0, out) - return out - - -def f4(x): - if x < 0: - out = -1 - elif x > 0: - out = 1 - else: - out = 0 - return out - - -def f4_exp(x): - out = numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) - return out - - -def f5(flag, another_flag): - if flag and not another_flag: - out = 1 - else: - out = 0 - return out - - -def f5_exp(flag, another_flag): - out = numpy.where(numpy.logical_and(flag, numpy.logical_not(another_flag)), 1, 0) - return out - - -def f6(x): - out = 0 if x < 0 else 1 - return out - - -def f6_exp(x): - out = numpy.where(x < 0, 0, 1) - return out - - -def f7(x): - return -1 if x < 0 else (1 if x > 0 else 0) - - -def f7_exp(x): - return numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) - - -# expect no change since there is no if-clause and no [and|or] statement. -def f8(x): - y = numpy.sum(x) - z = numpy.prod(x) - return y * z - - -def f9(x): - flag = (x < 0) and (x > -1) - another_flag = (x < 0) or (x > -1) - return flag and not another_flag - - -def f9_exp(x): - flag = numpy.logical_and(x < 0, x > -1) - another_flag = numpy.logical_or(x < 0, x > -1) - return numpy.logical_and(flag, numpy.logical_not(another_flag)) - - -def f10(x): - if x < 0: - out = -1 - else: - out = 1 if x > 0 else 0 - return out - - -def f10_exp(x): - out = numpy.where(x < 0, -1, numpy.where(x > 0, 1, 0)) - return out - - -def f11(x): - a = x < 0 - b = x > 0 - c = x != 0 - d = True - return ((a and b) or c) and d - - -def f11_exp(x): - a = x < 0 - b = x > 0 - c = x != 0 - d = True - return numpy.logical_and(numpy.logical_or(numpy.logical_and(a, b), c), d) - - -def f12(x): - a = x < 0 - b = x > 0 - c = x != 0 - d = True - return (a and b and c) or d - - -def f12_exp(x): - a = x < 0 - b = x > 0 - c = x != 0 - d = True - return numpy.logical_or(numpy.logical_and(numpy.logical_and(a, b), c), d) - - -def f13(x): - return min(x, 0) - - -def f13_exp(x): - return numpy.minimum(x, 0) - - -def f14(x): - a = x < 0 - b = x // 2 - return any((a, b)) - - -def f14_exp(x): - a = x < 0 - b = x // 2 - return numpy.any((a, b)) - - -x = numpy.arange(-10, 10) -rng = numpy.random.default_rng(seed=0) -flag = rng.binomial(1, 0.25, size=100) -another_flag = rng.binomial(1, 0.75, size=100) - - -TEST_CASES = [ - (f0, f0_exp, (x,)), - (f1, f1_exp, (x,)), - (f2, f2_exp, (x,)), - (f3, f3_exp, (x,)), - (f4, f4_exp, (x,)), - (f5, f5_exp, (flag, another_flag)), - (f6, f6_exp, (x,)), - (f7, f7_exp, (x,)), - (f8, f8, (x,)), - (f9, f9_exp, (x,)), - (f10, f10_exp, (x,)), - (f11, f11_exp, (x,)), - (f12, f12_exp, (x,)), - (f13, f13_exp, (x,)), - (f14, f14_exp, (x,)), -] - - -# ====================================================================================== -# Tests (no error) -# ====================================================================================== - - -@pytest.mark.parametrize(("func", "expected", "args"), TEST_CASES) -def test_change_if_to_where_source(func, expected, args): # noqa: ARG001 - exp = inspect.getsource(expected) - exp = exp.replace("_exp", "") - got = make_vectorizable_source(func, backend="numpy", xnp=numpy) - assert string_equal(exp, got) - - -@pytest.mark.parametrize(("func", "expected", "args"), TEST_CASES) -def test_change_if_to_where_wrapper(func, expected, args): - got_func = _make_vectorizable(func, backend="numpy", xnp=numpy) - got = got_func(*args) - exp = expected(*args) - assert_array_equal(got, exp) - - -# ====================================================================================== -# Test correct error raising -# ====================================================================================== - - -def g1(x): - # function with multiple operations in the if-clause - a = 0 - b = 1 - if x < 0: - a = 1 - b = 0 - return a + b - - -def g2(x): - # function with illegal operations in the if-clause - if x < 0: - print(x) # noqa: T201 - else: - print(not x) # noqa: T201 - - -def g3(x): - # return statement in if-body but no else clause - if x < 0: - return 0 - return 1 - - -def g4(x): - # max with three arguments - return max(x, 0, 1) - - -def test_notimplemented_error(): - with pytest.raises(NotImplementedError): - _make_vectorizable(f0, backend="dask", xnp=numpy) - - -@pytest.mark.parametrize("func", [g1, g2, g3, g4]) -def test_disallowed_operation_source(func): - with pytest.raises(TranslateToVectorizableError): - make_vectorizable_source(func, backend="numpy", xnp=numpy) - - -@pytest.mark.parametrize("func", [g1, g2, g3, g4]) -def test_disallowed_operation_wrapper(func): - with pytest.raises(TranslateToVectorizableError): - _make_vectorizable(func, backend="numpy", xnp=numpy) - - -# ====================================================================================== -# Test that functions defined in METTSIM can be made vectorizable -# ====================================================================================== - - -for year in range(1990, 2023): - - @pytest.mark.parametrize( - ("funcname", "func"), - ( - (funcname, pf.function) - for funcname, pf in dt.flatten_to_tree_paths( - _active_column_objects_and_param_functions( - orig=column_objects_and_param_functions( - root=Path(__file__).parent.parent / "mettsim" - ), - policy_date=datetime.date(year=year, month=1, day=1), - ), - ).items() - if not isinstance( - pf, - GroupCreationFunction - | AggByGroupFunction - | AggByPIDFunction - | PolicyInput, - ) - ), - ) - def test_convertible(funcname, func, backend, xnp): # noqa: ARG001 - # Leave funcname for debugging purposes. - _make_vectorizable(func, backend=backend, xnp=xnp) - - -# ====================================================================================== -# Test that vectorized functions defined in METTSIM can be called with array input -# ====================================================================================== - - -def test_housing_benefits_amount_m_fam(backend, xnp): - """Test housing benefits amount function with conditional logic.""" - # Test original function on scalar input - # ============================================================================== - eligibility__requirement_fulfilled_fam = True - income__amount_m_fam = 1000.0 - assistance_rate = 0.8 - - from tests.ttsim.mettsim.housing_benefits.amount import ( # noqa: PLC0415 - amount_m_fam, - ) - - exp = amount_m_fam.function( - eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, - income__amount_m_fam=income__amount_m_fam, - assistance_rate=assistance_rate, - ) - assert exp == 800.0 - - exp_false = amount_m_fam.function( - eligibility__requirement_fulfilled_fam=False, - income__amount_m_fam=income__amount_m_fam, - assistance_rate=assistance_rate, - ) - assert exp_false == 0.0 - - # Create array inputs and assert that original function raises error - # ============================================================================== - shape = (10, 2) - eligibility__requirement_fulfilled_fam = xnp.full(shape, True) # noqa: FBT003 - income__amount_m_fam = xnp.full(shape, income__amount_m_fam) - assistance_rate = xnp.full(shape, assistance_rate) - - with pytest.raises(ValueError, match="truth value of an array with more than"): - amount_m_fam.function( - eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, - income__amount_m_fam=income__amount_m_fam, - assistance_rate=assistance_rate, - ) - - # Call converted function on array input and test result - # ============================================================================== - converted = _make_vectorizable( - amount_m_fam.function, - backend=backend, - xnp=xnp, - ) - got = converted( - eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, - income__amount_m_fam=income__amount_m_fam, - assistance_rate=assistance_rate, - ) - assert_array_equal(got, xnp.full(shape, exp)) - - # Test mixed eligibility - eligibility__requirement_fulfilled_fam = xnp.array([[True, False], [False, True]]) - income__amount_m_fam = xnp.array([[1000.0, 1000.0], [1000.0, 1000.0]]) - assistance_rate = xnp.array([[0.8, 0.8], [0.8, 0.8]]) - - got_mixed = converted( - eligibility__requirement_fulfilled_fam=eligibility__requirement_fulfilled_fam, - income__amount_m_fam=income__amount_m_fam, - assistance_rate=assistance_rate, - ) - expected_mixed = xnp.array([[800.0, 0.0], [0.0, 800.0]]) - assert_array_equal(got_mixed, expected_mixed) - - -def test_payroll_tax_amount_y(backend, xnp): - """Test payroll tax amount function with multiple conditional logic.""" - # Test original function on scalar input - # ============================================================================== - amount_standard_y = 1000.0 - amount_reduced_y = 800.0 - parent_is_noble_fam = False - wealth_fam = 30000.0 # Below threshold - wealth_threshold_for_reduced_tax_rate = 40000.0 - - from tests.ttsim.mettsim.payroll_tax.amount import amount_y # noqa: PLC0415 - - exp_standard = amount_y.function( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=parent_is_noble_fam, - wealth_fam=wealth_fam, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - assert exp_standard == 1000.0 - - exp_reduced = amount_y.function( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=parent_is_noble_fam, - wealth_fam=60000.0, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - assert exp_reduced == 800.0 - - exp_noble = amount_y.function( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=True, - wealth_fam=wealth_fam, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - assert exp_noble == 0.0 - - # Create array inputs and assert that original function raises error - # ============================================================================== - shape = (10, 2) - amount_standard_y = xnp.full(shape, amount_standard_y) - amount_reduced_y = xnp.full(shape, amount_reduced_y) - parent_is_noble_fam = xnp.full(shape, parent_is_noble_fam) - wealth_fam = xnp.full(shape, wealth_fam) - wealth_threshold_for_reduced_tax_rate = xnp.full( - shape, wealth_threshold_for_reduced_tax_rate - ) - - with pytest.raises(ValueError, match="truth value of an array with more than"): - amount_y.function( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=parent_is_noble_fam, - wealth_fam=wealth_fam, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - - # Call converted function on array input and test result - # ============================================================================== - converted = _make_vectorizable( - amount_y.function, - backend=backend, - xnp=xnp, - ) - got = converted( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=parent_is_noble_fam, - wealth_fam=wealth_fam, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - assert_array_equal(got, xnp.full(shape, exp_standard)) - - # Test mixed conditions - parent_is_noble_fam = xnp.array([[True, False], [False, True]]) - wealth_fam = xnp.array([[30000.0, 60000.0], [30000.0, 70000.0]]) - amount_standard_y = xnp.array([[1000.0, 1000.0], [1000.0, 1000.0]]) - amount_reduced_y = xnp.array([[800.0, 800.0], [800.0, 800.0]]) - wealth_threshold_for_reduced_tax_rate = xnp.array( - [[40000.0, 40000.0], [40000.0, 40000.0]] - ) - - got_mixed = converted( - amount_standard_y=amount_standard_y, - amount_reduced_y=amount_reduced_y, - parent_is_noble_fam=parent_is_noble_fam, - wealth_fam=wealth_fam, - wealth_threshold_for_reduced_tax_rate=wealth_threshold_for_reduced_tax_rate, - ) - # Expected: noble=0, reduced=800, standard=1000, noble=0 - expected_mixed = xnp.array([[0.0, 800.0], [1000.0, 0.0]]) - assert_array_equal(got_mixed, expected_mixed) - - -def test_orc_hunting_bounty_amount(backend, xnp): - """Test orc hunting bounty function with conditional logic.""" - # Test original function on scalar input - # ============================================================================== - small_orcs_hunted = 5 - large_orcs_hunted = 2 - parent_is_noble = True - bounty_per_orc = type( - "BountyPerOrc", - (), - { - "small_orc": 10, - "large_orc": type( - "BountyPerLargeOrc", (), {"noble_hunter": 50, "peasant_hunter": 30} - )(), - }, - )() - - from tests.ttsim.mettsim.orc_hunting_bounty.orc_hunting_bounty import ( # noqa: PLC0415 - amount, - ) - - exp_noble = amount.function( - small_orcs_hunted=small_orcs_hunted, - large_orcs_hunted=large_orcs_hunted, - parent_is_noble=parent_is_noble, - bounty_per_orc=bounty_per_orc, - ) - assert exp_noble == 150.0 # 5*10 + 2*50 - - exp_peasant = amount.function( - small_orcs_hunted=small_orcs_hunted, - large_orcs_hunted=large_orcs_hunted, - parent_is_noble=False, - bounty_per_orc=bounty_per_orc, - ) - assert exp_peasant == 110.0 # 5*10 + 2*30 - - # Create array inputs and assert that original function raises error - # ============================================================================== - shape = (10, 2) - small_orcs_hunted = xnp.full(shape, small_orcs_hunted) - large_orcs_hunted = xnp.full(shape, large_orcs_hunted) - parent_is_noble = xnp.full(shape, parent_is_noble) - - with pytest.raises(ValueError, match="truth value of an array with more than"): - amount.function( - small_orcs_hunted=small_orcs_hunted, - large_orcs_hunted=large_orcs_hunted, - parent_is_noble=parent_is_noble, - bounty_per_orc=bounty_per_orc, - ) - - # Call converted function on array input and test result - # ============================================================================== - converted = _make_vectorizable( - amount.function, - backend=backend, - xnp=xnp, - ) - got = converted( - small_orcs_hunted=small_orcs_hunted, - large_orcs_hunted=large_orcs_hunted, - parent_is_noble=parent_is_noble, - bounty_per_orc=bounty_per_orc, - ) - assert_array_equal(got, xnp.full(shape, exp_noble)) - - # Test mixed noble/peasant conditions - parent_is_noble = xnp.array([[True, False], [False, True]]) - small_orcs_hunted = xnp.array([[5, 5], [5, 5]]) - large_orcs_hunted = xnp.array([[2, 2], [2, 2]]) - - got_mixed = converted( - small_orcs_hunted=small_orcs_hunted, - large_orcs_hunted=large_orcs_hunted, - parent_is_noble=parent_is_noble, - bounty_per_orc=bounty_per_orc, - ) - # Expected: noble=150, peasant=110, peasant=110, noble=150 - expected_mixed = xnp.array([[150.0, 110.0], [110.0, 150.0]]) - assert_array_equal(got_mixed, expected_mixed) - - -# ====================================================================================== -# Lambda functions -# ====================================================================================== - - -def test_is_lambda_function_true(): - assert _is_lambda_function(lambda x: x) - - -def test_is_lambda_function_wrapped(): - def decorator(func): - @functools.wraps(func) - def wrapper(*args, **kwargs): - return func(*args, **kwargs) - - return wrapper - - assert _is_lambda_function(decorator(lambda x: x)) - - -def test_is_lambda_function_false(): - def f(x): - return x - - assert not _is_lambda_function(f) - - -def test_is_lambda_function_non_function_input(): - assert not _is_lambda_function(42) - assert not _is_lambda_function("not a function") - assert not _is_lambda_function([1, 2, 3]) - assert not _is_lambda_function({1: "a", 2: "b"}) - assert not _is_lambda_function(None) - - -def test_lambda_functions_disallowed_make_vectorizable(xnp): - with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - _make_vectorizable(lambda x: x, backend="numpy", xnp=xnp) - - -def test_lambda_functions_disallowed_make_vectorizable_source(xnp): - with pytest.raises(TranslateToVectorizableError, match="Lambda functions are not"): - make_vectorizable_source(lambda x: x, backend="numpy", xnp=xnp) - - -# ====================================================================================== -# Policy functions -# ====================================================================================== - - -def test_make_vectorizable_policy_func(backend, xnp): - @policy_function() - def alter_bis_24(alter: int) -> bool: - return alter <= 24 - - vectorized = alter_bis_24.vectorize(backend=backend, xnp=xnp) - - got = vectorized(xnp.array([20, 25, 30])) - exp = xnp.array([True, False, False]) - assert_array_equal(got, exp) - - -# ====================================================================================== -# Dags functions -# ====================================================================================== - - -def test_make_vectorizable_nested_func(): - def f_a(x: int) -> int: - return x - - def f_b(a: int) -> int: - return a + 2 - - def f_manual(x: int) -> int: - return f_b(f_a(x)) - - vectorized = _make_vectorizable(f_manual, backend="numpy", xnp=numpy) - got = vectorized(numpy.array([1, 2, 3])) - exp = numpy.array([3, 4, 5]) - assert_array_equal(got, exp) - - -@policy_function() -def scalar_func(x: int) -> int: - if x < 0: - return 0 - else: - return x * 2 - - -@policy_function(vectorization_strategy="not_required") -def already_vectorized_func(x: IntColumn, xnp: ModuleType) -> IntColumn: - return xnp.where(x < 0, 0, x * 2) - - -def test_loop_vectorize_scalar_func(backend, xnp): - fun = vectorize_function( - scalar_func.function, - vectorization_strategy="loop", - backend=backend, - xnp=numpy, - ) - assert numpy.array_equal(fun(xnp.array([-1, 0, 2, 3])), xnp.array([0, 0, 4, 6])) - - -def test_vectorize_scalar_func(backend, xnp): - fun = vectorize_function( - scalar_func.function, - vectorization_strategy="vectorize", - backend=backend, - xnp=numpy, - ) - assert numpy.array_equal(fun(xnp.array([-1, 0, 2, 3])), xnp.array([0, 0, 4, 6])) - - -def test_already_vectorized_func(xnp): - assert numpy.array_equal( - already_vectorized_func(xnp.array([-1, 0, 2, 3]), xnp), - xnp.array([0, 0, 4, 6]), - ) - - -def test_vectorize_function_annotations(backend, xnp): - def f(a, x: int, y: float, z: bool, p1: str, p2: dict[str, float]) -> float: # noqa: ARG001 - return 1.0 - - vectorized = vectorize_function( - f, - vectorization_strategy="vectorize", - backend=backend, - xnp=xnp, - ) - - expected_annotations = { - "a": "IntColumn | FloatColumn | BoolColumn", - "x": "IntColumn", - "y": "FloatColumn", - "z": "BoolColumn", - "p1": "str", - "p2": "dict[str, float]", - "return": "FloatColumn", - } - assert inspect.get_annotations(vectorized) == expected_annotations - - -# ====================================================================================== -# Test forbidden type conversions and augmented assignments -# ====================================================================================== - - -def forbidden_type_conversion_float(x): - return float(x) - - -def forbidden_type_conversion_int(x): - return int(x) - - -def forbidden_type_conversion_bool(x): - return bool(x) - - -def forbidden_type_conversion_complex(x): - return complex(x) - - -def forbidden_type_conversion_str(x): - return str(x) - - -def forbidden_augassign_add(x): - y = x - y += 1 - return y - - -def forbidden_augassign_sub(x): - y = x - y -= 1 - return y - - -def forbidden_augassign_mult(x): - y = x - y *= 2 - return y - - -def forbidden_augassign_div(x): - y = x - y /= 2 - return y - - -@pytest.mark.parametrize( - "func", - [ - forbidden_type_conversion_float, - forbidden_type_conversion_int, - forbidden_type_conversion_bool, - forbidden_type_conversion_complex, - forbidden_type_conversion_str, - ], -) -def test_forbidden_type_conversions_raise(func, xnp): - """Test that forbidden type conversions raise the correct error.""" - with pytest.raises(TranslateToVectorizableError, match="Forbidden type conversion"): - _make_vectorizable(func, backend="numpy", xnp=xnp) - with pytest.raises(TranslateToVectorizableError, match="Forbidden type conversion"): - make_vectorizable_source(func, backend="numpy", xnp=xnp) - - -@pytest.mark.parametrize( - "func", - [ - forbidden_augassign_add, - forbidden_augassign_sub, - forbidden_augassign_mult, - forbidden_augassign_div, - ], -) -def test_forbidden_augassign_raise(func, xnp): - """Test that augmented assignments raise the correct error.""" - with pytest.raises( - TranslateToVectorizableError, match="Augmented assignment is not allowed" - ): - _make_vectorizable(func, backend="numpy", xnp=xnp) - with pytest.raises( - TranslateToVectorizableError, match="Augmented assignment is not allowed" - ): - make_vectorizable_source(func, backend="numpy", xnp=xnp) From df63e7d4eafbf222fbc23a0c425abfcf1b456f35 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Thu, 24 Jul 2025 16:26:42 +0200 Subject: [PATCH 102/109] Changelog. --- CHANGES.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 981ac9d9b1..6a457c625c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,12 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`804` The PR that has been collecting all changes over the past 7 months, which + have been listed individually. + +- {gh}`1052` Remove what has been extracted to TTSIM, add dependency on ttsim-backend + ({ghuser}`hmgaudecker`) + - {gh}`1050` Allow input template creation when path to root node traverses an automatically created function ({ghuser}`MImmesberger`) From 8c5ed2f2cc720c75d6b56890e081c3da4e589438 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Thu, 24 Jul 2025 18:21:04 +0200 Subject: [PATCH 103/109] Continue. --- .../modify_taxes_and_transfers.ipynb | 697 ++++++++++++++++-- 1 file changed, 632 insertions(+), 65 deletions(-) diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modify_taxes_and_transfers.ipynb index fbf65f1e75..9dd57d2555 100644 --- a/docs/how_to_guides/modify_taxes_and_transfers.ipynb +++ b/docs/how_to_guides/modify_taxes_and_transfers.ipynb @@ -2,19 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "0", "metadata": {}, "outputs": [], "source": [ - "from pathlib import Path\n", - "\n", "import numpy as np\n", - "\n", - "from gettsim import main\n", - "from ttsim import InputData, MainTarget, copy_environment\n", - "\n", - "GETTSIM_ROOT = Path.cwd().parent.parent / \"src\" / \"_gettsim\"" + "from gettsim import main, InputData, MainTarget, copy_environment" ] }, { @@ -32,10 +26,10 @@ "This tutorial showcases how to modify the calculation of taxes and transfers when using\n", "GETTSIM.\n", "\n", - "Here, we focus on small reforms to the means-tested social welfare benefits for\n", + "Here, we focus mainly on small reforms to the means-tested social welfare benefits for\n", "the unemployed (German: Bürgergeld; until 2022: Arbeitslosengeld II). We pick this\n", - "example because Bürgergeld is a fairly complex system that uses the entire range of\n", - "objects TTSIM offers." + "example because Bürgergeld is a fairly complex system that uses (almost) the entire\n", + "range of objects TTSIM offers." ] }, { @@ -79,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "3", "metadata": {}, "outputs": [], @@ -109,6 +103,64 @@ { "cell_type": "code", "execution_count": null, + "id": "5772e295", + "metadata": {}, + "outputs": [ + { + "ename": "MissingFunctionsError", + "evalue": "The following targets have no corresponding function:\n\n[\n \"wohngeld__betrag_m_wthh\",\n]\n", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mMissingFunctionsError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[8]\u001b[39m\u001b[32m, line 21\u001b[39m\n\u001b[32m 1\u001b[39m inp = {\n\u001b[32m 2\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mp_id\u001b[39m\u001b[33m\"\u001b[39m: np.array([\u001b[32m0\u001b[39m]),\n\u001b[32m 3\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mwohngeld\u001b[39m\u001b[33m\"\u001b[39m: {\u001b[33m\"\u001b[39m\u001b[33mbetrag_m_wthh\u001b[39m\u001b[33m\"\u001b[39m: np.array([\u001b[32m0.0\u001b[39m])},\n\u001b[32m (...)\u001b[39m\u001b[32m 18\u001b[39m \u001b[38;5;66;03m#},\u001b[39;00m\n\u001b[32m 19\u001b[39m }\n\u001b[32m---> \u001b[39m\u001b[32m21\u001b[39m \u001b[43mmain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 22\u001b[39m \u001b[43m \u001b[49m\u001b[43mmain_target\u001b[49m\u001b[43m=\u001b[49m\u001b[43mMainTarget\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtemplates\u001b[49m\u001b[43m.\u001b[49m\u001b[43minput_data_dtypes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 23\u001b[39m \u001b[43m \u001b[49m\u001b[43mpolicy_date_str\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43m2025-01-01\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 24\u001b[39m \u001b[43m \u001b[49m\u001b[43minput_data\u001b[49m\u001b[43m=\u001b[49m\u001b[43mInputData\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtree\u001b[49m\u001b[43m(\u001b[49m\u001b[43minp\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 25\u001b[39m \u001b[43m \u001b[49m\u001b[43minclude_warn_nodes\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 26\u001b[39m \u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/src/gettsim/__init__.py:108\u001b[39m, in \u001b[36mmain\u001b[39m\u001b[34m(main_target, main_targets, policy_date_str, input_data, tt_targets, rounding, backend, evaluation_date_str, include_fail_nodes, include_warn_nodes, orig_policy_objects, raw_results, results, specialized_environment, policy_environment, processed_data, policy_date, evaluation_date, labels)\u001b[39m\n\u001b[32m 103\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m orig_policy_objects \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 104\u001b[39m orig_policy_objects = _ttsim.main_args.OrigPolicyObjects(\n\u001b[32m 105\u001b[39m root=Path(\u001b[34m__file__\u001b[39m).parent.parent / \u001b[33m\"\u001b[39m\u001b[33m_gettsim\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 106\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m108\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_ttsim\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[38;5;28;43mlocals\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/main.py:141\u001b[39m, in \u001b[36mmain\u001b[39m\u001b[34m(main_target, main_targets, policy_date_str, input_data, tt_targets, rounding, backend, evaluation_date_str, include_fail_nodes, include_warn_nodes, tt_function_set_annotations, orig_policy_objects, raw_results, results, specialized_environment, policy_environment, processed_data, policy_date, evaluation_date, labels)\u001b[39m\n\u001b[32m 132\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m main_target:\n\u001b[32m 133\u001b[39m f = dags.concatenate_functions(\n\u001b[32m 134\u001b[39m dag=dag,\n\u001b[32m 135\u001b[39m functions=functions,\n\u001b[32m (...)\u001b[39m\u001b[32m 139\u001b[39m lexsort_key=lexsort_key,\n\u001b[32m 140\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m141\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43minput_qnames\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 142\u001b[39m f = dags.concatenate_functions(\n\u001b[32m 143\u001b[39m dag=dag,\n\u001b[32m 144\u001b[39m functions=functions,\n\u001b[32m (...)\u001b[39m\u001b[32m 149\u001b[39m lexsort_key=lexsort_key,\n\u001b[32m 150\u001b[39m )\n\u001b[32m 151\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m dt.unflatten_from_qnames(f(**input_qnames))\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/output.py:25\u001b[39m, in \u001b[36msingle_output..wrapper_single_output\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 23\u001b[39m \u001b[38;5;129m@functools\u001b[39m.wraps(func)\n\u001b[32m 24\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mwrapper_single_output\u001b[39m(*args: P.args, **kwargs: P.kwargs) -> T:\n\u001b[32m---> \u001b[39m\u001b[32m25\u001b[39m raw = \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 26\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m raw[\u001b[32m0\u001b[39m]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/signature.py:139\u001b[39m, in \u001b[36mwith_signature..decorator_with_signature..wrapper_with_signature\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 135\u001b[39m _fail_if_duplicated_arguments(present_args, present_kwargs, funcname)\n\u001b[32m 136\u001b[39m _fail_if_invalid_keyword_arguments(\n\u001b[32m 137\u001b[39m present_kwargs, valid_kwargs, funcname\n\u001b[32m 138\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m139\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:611\u001b[39m, in \u001b[36m_create_concatenated_function..concatenated\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 609\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m name, info \u001b[38;5;129;01min\u001b[39;00m execution_info.items():\n\u001b[32m 610\u001b[39m func_kwargs = {arg: results[arg] \u001b[38;5;28;01mfor\u001b[39;00m arg \u001b[38;5;129;01min\u001b[39;00m info.arguments}\n\u001b[32m--> \u001b[39m\u001b[32m611\u001b[39m result = \u001b[43minfo\u001b[49m\u001b[43m.\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mfunc_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 612\u001b[39m results[name] = result\n\u001b[32m 614\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(results[target] \u001b[38;5;28;01mfor\u001b[39;00m target \u001b[38;5;129;01min\u001b[39;00m targets)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/interface_dag_elements/interface_node_objects.py:132\u001b[39m, in \u001b[36mInterfaceFunction.__call__\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 127\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__call__\u001b[39m(\n\u001b[32m 128\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 129\u001b[39m *args: FunArgTypes.args,\n\u001b[32m 130\u001b[39m **kwargs: FunArgTypes.kwargs,\n\u001b[32m 131\u001b[39m ) -> ReturnType:\n\u001b[32m--> \u001b[39m\u001b[32m132\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/signature.py:250\u001b[39m, in \u001b[36mrename_arguments..decorator_rename_arguments..wrapper_rename_arguments\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 248\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m mapper \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mapper:\n\u001b[32m 249\u001b[39m internal_kwargs[name] = value\n\u001b[32m--> \u001b[39m\u001b[32m250\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43minternal_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/interface_dag_elements/templates.py:54\u001b[39m, in \u001b[36minput_data_dtypes\u001b[39m\u001b[34m(specialized_environment__with_partialled_params_and_scalars, policy_environment, tt_targets__qname, labels__grouping_levels, labels__top_level_namespace)\u001b[39m\n\u001b[32m 25\u001b[39m \u001b[38;5;129m@interface_function\u001b[39m()\n\u001b[32m 26\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34minput_data_dtypes\u001b[39m(\n\u001b[32m 27\u001b[39m specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, \u001b[38;5;66;03m# noqa: E501\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 31\u001b[39m labels__top_level_namespace: UnorderedQNames,\n\u001b[32m 32\u001b[39m ) -> NestedInputStructureDict:\n\u001b[32m 33\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 34\u001b[39m \u001b[33;03m A template of the required input data and their expected types.\u001b[39;00m\n\u001b[32m 35\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 52\u001b[39m \u001b[33;03m A nested dictionary mapping input paths to their data types.\u001b[39;00m\n\u001b[32m 53\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m54\u001b[39m base_dtype_tree = \u001b[43mdt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcreate_tree_with_input_types\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 55\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdt\u001b[49m\u001b[43m.\u001b[49m\u001b[43munflatten_from_qnames\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 56\u001b[39m \u001b[43m \u001b[49m\u001b[43mspecialized_environment__with_partialled_params_and_scalars\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 57\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 58\u001b[39m \u001b[43m \u001b[49m\u001b[43mtargets\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtt_targets__qname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 59\u001b[39m \u001b[43m \u001b[49m\u001b[43mtop_level_inputs\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlabels__top_level_namespace\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 60\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 62\u001b[39m qname_policy_env = dt.flatten_to_qnames(policy_environment)\n\u001b[32m 63\u001b[39m qname_dtype_tree = dt.flatten_to_qnames(base_dtype_tree)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/tree/dag_tree.py:78\u001b[39m, in \u001b[36mcreate_tree_with_input_types\u001b[39m\u001b[34m(functions, targets, top_level_inputs)\u001b[39m\n\u001b[32m 69\u001b[39m fail_if_paths_are_invalid(\n\u001b[32m 70\u001b[39m functions=functions,\n\u001b[32m 71\u001b[39m abs_qnames_functions=functions_for_flat_dags,\n\u001b[32m 72\u001b[39m targets=targets,\n\u001b[32m 73\u001b[39m top_level_namespace=top_level_namespace,\n\u001b[32m 74\u001b[39m )\n\u001b[32m 76\u001b[39m targets_qnames = qnames(targets) \u001b[38;5;28;01mif\u001b[39;00m targets \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m78\u001b[39m _functions, _targets = \u001b[43mharmonize_and_check_functions_and_targets\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 79\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[43m=\u001b[49m\u001b[43mfunctions_for_flat_dags\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 80\u001b[39m \u001b[43m \u001b[49m\u001b[43mtargets\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtargets_qnames\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 81\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 83\u001b[39m dag = create_dag(\n\u001b[32m 84\u001b[39m functions=_functions,\n\u001b[32m 85\u001b[39m targets=_targets,\n\u001b[32m 86\u001b[39m )\n\u001b[32m 87\u001b[39m arglist = create_arguments_of_concatenated_function(functions=_functions, dag=dag)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:390\u001b[39m, in \u001b[36mharmonize_and_check_functions_and_targets\u001b[39m\u001b[34m(functions, targets)\u001b[39m\n\u001b[32m 388\u001b[39m targets_harmonized = _harmonize_targets(targets, \u001b[38;5;28mlist\u001b[39m(functions_harmonized))\n\u001b[32m 389\u001b[39m _fail_if_targets_have_wrong_types(targets_harmonized)\n\u001b[32m--> \u001b[39m\u001b[32m390\u001b[39m \u001b[43m_fail_if_functions_are_missing\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunctions_harmonized\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtargets_harmonized\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 392\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m functions_harmonized, targets_harmonized\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:434\u001b[39m, in \u001b[36m_fail_if_functions_are_missing\u001b[39m\u001b[34m(functions, targets)\u001b[39m\n\u001b[32m 432\u001b[39m formatted = format_list_linewise(\u001b[38;5;28mlist\u001b[39m(targets_not_in_functions))\n\u001b[32m 433\u001b[39m msg = \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mThe following targets have no corresponding function:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mformatted\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m434\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m MissingFunctionsError(msg)\n", + "\u001b[31mMissingFunctionsError\u001b[39m: The following targets have no corresponding function:\n\n[\n \"wohngeld__betrag_m_wthh\",\n]\n" + ] + } + ], + "source": [ + "inp = {\n", + " \"p_id\": np.array([0]),\n", + " \"wohngeld\": {\"betrag_m_wthh\": np.array([0.0])},\n", + " #\"arbeitslosengeld_2\": {\"betrag_m_bg\": np.array([0.0])},\n", + " #\"elterngeld\": {\"betrag_m\": np.array([0.0])},\n", + " #\"sozialversicherung\": {\n", + " # \"arbeitslosen\": {\n", + " # \"betrag_m\": np.array([0.0])\n", + " # },\n", + " # \"rente\": {\n", + " # \"altersrente\": {\n", + " # \"betrag_m\": np.array([0.0])\n", + " # },\n", + " # \"erwerbsminderung\": {\n", + " # \"betrag_m\": np.array([0.0])\n", + " # },\n", + " # },\n", + " #},\n", + "}\n", + "\n", + "main(\n", + " main_target=MainTarget.templates.input_data_dtypes,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(inp),\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, "id": "5", "metadata": {}, "outputs": [], @@ -117,7 +169,7 @@ " \"alter\": np.array([40, 40, 5]),\n", " \"alter_monate\": np.array([480, 480, 60]),\n", " \"arbeitslosengeld_2\": {\n", - " \"bezug_im_vorjahr\": np.array([False, False, False]),\n", + " \"bezug_im_vorjahr\": np.array([True, True, True]),\n", " \"eigenbedarf_gedeckt\": np.array([False, False, False]),\n", " \"p_id_einstandspartner\": np.array([1, 0, -1]),\n", " },\n", @@ -197,10 +249,77 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "7", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
arbeitslosengeld_2
betrag_m_bg
p_id
0790.916898
1790.916898
2790.916898
\n", + "
" + ], + "text/plain": [ + " arbeitslosengeld_2\n", + " betrag_m_bg\n", + "p_id \n", + "0 790.916898\n", + "1 790.916898\n", + "2 790.916898" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", @@ -260,20 +379,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "9", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ScalarParam(leaf_name='kindersofortzuschlag', start_date=datetime.date(2025, 1, 1), end_date=datetime.date(2099, 12, 31), unit='Euros', reference_period='Month', name={'de': 'Kindersofortzuschlag für Arbeitslosengeld II', 'en': 'Instant surcharge for children for unemployment benefit'}, description={'de': '§ 72 SGB II Kinder, Jugendliche und junge Erwachsene, die Anspruch auf Arbeitslosengeld II oder Sozialgeld haben (Regelbedarfsstufen 3, 4, 5, 6), erhalten einen Sofortzuschlag von 20€.', 'en': '§ 72 SGB II Children, adolescents and young adults who are entitled to unemployment benefits or social benefits (Regelbedarfsstufen 3, 4, 5, 6) receive an instant surcharge of 20 Euro.'}, value=25, note=None, reference=None)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "10", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "25" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"].value" ] @@ -292,12 +433,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "12", "metadata": {}, "outputs": [], "source": [ - "higher_kindersofortzuschlag_policy_environment = copy_environment(\n", + "higher_kindersofortzuschlag_pe = copy_environment(\n", " status_quo_environment\n", ")" ] @@ -318,12 +459,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "14", "metadata": {}, "outputs": [], "source": [ - "from ttsim.tt_dag_elements.param_objects import ScalarParam\n", + "from gettsim.tt import ScalarParam\n", "\n", "new_kindersofortzuschlag = ScalarParam(value=40)" ] @@ -338,12 +479,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "id": "16", "metadata": {}, "outputs": [], "source": [ - "higher_kindersofortzuschlag_policy_environment[\"arbeitslosengeld_2\"][\n", + "higher_kindersofortzuschlag_pe[\"arbeitslosengeld_2\"][\n", " \"kindersofortzuschlag\"\n", "] = new_kindersofortzuschlag" ] @@ -358,17 +499,84 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "18", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
arbeitslosengeld_2
betrag_m_bg
p_id
0805.916898
1805.916898
2805.916898
\n", + "
" + ], + "text/plain": [ + " arbeitslosengeld_2\n", + " betrag_m_bg\n", + "p_id \n", + "0 805.916898\n", + "1 805.916898\n", + "2 805.916898" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", " input_data=InputData.tree(INPUT_DATA_TREE),\n", " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", - " policy_environment=higher_kindersofortzuschlag_policy_environment,\n", + " policy_environment=higher_kindersofortzuschlag_pe,\n", " include_warn_nodes=False,\n", ")" ] @@ -385,7 +593,8 @@ "dictionary in the `policy_environment`.\n", "\n", "Let's take a look at the `berechtigte_wohnfläche_miete` parameter. This parameter\n", - "contains the amount of the admissible housing size for each type of housing.\n", + "contains the amount of the admissible housing size in square meters for recipients of\n", + "social welfare benefits.\n", "\n", "As you can see the `berechtigte_wohnfläche_miete` parameter is a `DictParam` object and\n", "its value is a dictionary." @@ -393,20 +602,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "20", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "DictParam(leaf_name='berechtigte_wohnfläche_miete', start_date=datetime.date(2005, 1, 1), end_date=datetime.date(2099, 12, 31), unit='Square Meters', reference_period=None, name={'de': 'Berechtigte Mietwohnfläche für ALG2-Empfänger*innen', 'en': 'Living rental space eligible for ALG2-recipients'}, description={'de': 'Eine Mietwohnung darf für einen Single 45 Quadratmeter (+15 für jede weitere Person) groß sein. Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe Issue https://github.com/ttsim-dev/gettsim/issues/782.', 'en': 'A rental apartment may be 45 square meters for a single person (+15 for each additional person). This is only an approximation. The regional parameters are unknown, see Issue https://github.com/ttsim-dev/gettsim/issues/782.'}, value={'single': 45, 'je_weitere_person': 15}, note=None, reference=None)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "id": "21", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'single': 45, 'je_weitere_person': 15}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"].value" ] @@ -416,92 +647,422 @@ "id": "22", "metadata": {}, "source": [ - "Let's modify the parameter by decreasing the " + "Let's modify the parameter by decreasing admissible household size for a single person.\n", + "We follow the same steps as in the previous section." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "23", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
arbeitslosengeld_2
betrag_m_bg
p_id
0740.916898
1740.916898
2740.916898
\n", + "
" + ], + "text/plain": [ + " arbeitslosengeld_2\n", + " betrag_m_bg\n", + "p_id \n", + "0 740.916898\n", + "1 740.916898\n", + "2 740.916898" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "higher_kindersofortzuschlag_policy_environment = copy_environment(\n", + "from gettsim.tt import DictParam\n", + "\n", + "new_berechtigte_wohnfläche_miete = DictParam(\n", + " value={\n", + " \"single\": 15,\n", + " \"je_weitere_person\": 15,\n", + " },\n", + ")\n", + "\n", + "lower_berechtigte_wohnfläche_miete_pe = copy_environment(\n", " status_quo_environment\n", + ")\n", + "\n", + "lower_berechtigte_wohnfläche_miete_pe[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"] = new_berechtigte_wohnfläche_miete\n", + "\n", + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + " policy_environment=lower_berechtigte_wohnfläche_miete_pe,\n", + " include_warn_nodes=False,\n", ")" ] }, { "cell_type": "markdown", - "id": "24", + "id": "54e7ddf6", "metadata": {}, "source": [ - "#### Step 2: Create the new parameter.\n", + "### Consecutive Int Lookup Table Parameters\n", "\n", - "Create a new `ScalarParam` object. To do this, we first import the `ScalarParam` class\n", - "from GETTSIM and then instantiate it with the new value.\n", + "Consecutive Int Lookup Table Parameters are one-dimensional arrays. GETTSIM uses then\n", + "whenever a parameter is a function of a single integer variable (like age in months,\n", + "number of household members, etc.).\n", "\n", - "**Tip**: You don't have to specify all attributes of the `ScalarParam` class. Only the\n", - "value attribute is required." + "There are very few parameters of this type in GETTSIM's policy environment; most of them\n", + "are created via `param_function`s.\n", + "\n", + "Let's step out of the social welfare benefits example for this parameter and look at\n", + "pension benefits. Here, usage of `ConsecutiveIntLookupTableParam` is more common. In\n", + "particular, we'll look at the normal retirement age parameter, which is a function of\n", + "the birth year." ] }, { "cell_type": "code", - "execution_count": null, - "id": "25", + "execution_count": 77, + "id": "500f8c9b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ConsecutiveIntLookupTableParam(leaf_name='altersgrenze_gestaffelt', start_date=datetime.date(2007, 4, 20), end_date=datetime.date(2030, 12, 31), unit='Years', reference_period=None, name={'de': 'Gestaffeltes Eintrittsalter für Regelaltersrente nach Geburtsjahr', 'en': 'Staggered normal retirement age (NRA) for Regelaltersrente by birth year'}, description={'de': '§ 35 Satz 2 SGB VI Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher oder niedriger, sofern keine Sonderregelungen gelten.', 'en': '§ 35 Satz 2 SGB VI Normal retirement age from which pension can be received. If retirement benefits are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement is higher or lower unless special regulations apply.'}, value=, note=None, reference=None)" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "from ttsim.tt_dag_elements.param_objects import ScalarParam\n", - "\n", - "new_kindersofortzuschlag = ScalarParam(value=40)" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "16919d94", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value" ] }, { "cell_type": "markdown", - "id": "26", + "id": "4d8ba53b", "metadata": {}, "source": [ - "#### Step 3: Replace the old parameter with the new one in the new policy environment" + "The `ConsecutiveIntLookupTableParamValue` has the following attributes:\n", + "- `values_to_look_up`: an array of values\n", + "- `bases_to_subtract`: the base value to subtract when indexing into\n", + " `values_to_look_up`. For example, when setting this to `10`, indexing the\n", + " `ConsecutiveIntLookupTableParamValue` at `12` returns the value at indes `12 - 10 =\n", + " 2`.\n", + "\n", + "In this example here, one could look up the parameter value at `1900` via the `look_up´\n", + "method to get the first value of the array:" ] }, { "cell_type": "code", "execution_count": null, - "id": "27", + "id": "b0059231", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1900]])" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "higher_kindersofortzuschlag_policy_environment[\"arbeitslosengeld_2\"][\n", - " \"kindersofortzuschlag\"\n", - "] = new_kindersofortzuschlag" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.bases_to_subtract" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "126dc738", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65. , 65. , 65. ,\n", + " 65. , 65. , 65.08333333, 65.16666667, 65.25 ,\n", + " 65.33333333, 65.41666667, 65.5 , 65.58333333, 65.66666667,\n", + " 65.75 , 65.83333333, 65.91666667, 66. , 66.16666667,\n", + " 66.33333333, 66.5 , 66.66666667, 66.83333333, 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. , 67. , 67. , 67. ,\n", + " 67. , 67. ])" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.values_to_look_up" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "0f76b300", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([65.])" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.look_up(1900)" ] }, { "cell_type": "markdown", - "id": "28", + "id": "cd1b82aa", "metadata": {}, "source": [ - "Let's call GETTSIM with the modified policy environment." + "Let's create a modified version with a steeper increase in the normal retirement age." ] }, { "cell_type": "code", - "execution_count": null, - "id": "29", + "execution_count": 83, + "id": "6fd17142", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sozialversicherung
rente
altersrente
regelaltersrente
altersgrenze
p_id
065.0
165.5
266.0
366.5
467.0
\n", + "
" + ], + "text/plain": [ + " sozialversicherung\n", + " rente\n", + " altersrente\n", + " regelaltersrente\n", + " altersgrenze\n", + "p_id \n", + "0 65.0\n", + "1 65.5\n", + "2 66.0\n", + "3 66.5\n", + "4 67.0" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "from gettsim.tt import ConsecutiveIntLookupTableParam, ConsecutiveIntLookupTableParamValue\n", + "\n", + "increased_nra_by_birth_year = ConsecutiveIntLookupTableParam(\n", + " value=ConsecutiveIntLookupTableParamValue(\n", + " values_to_look_up=np.array([65.0] * 45 + [65.5, 66.0, 66.5, 67.0] + [67.0] * 51),\n", + " bases_to_subtract=np.array([1900]),\n", + " xnp=np,\n", + " ),\n", + ")\n", + "\n", + "increased_nra_by_birth_year_pe = copy_environment(status_quo_environment)\n", + "increased_nra_by_birth_year_pe[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"] = increased_nra_by_birth_year\n", + "\n", "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", - " input_data=InputData.tree(INPUT_DATA_TREE),\n", - " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", - " policy_environment=higher_kindersofortzuschlag_policy_environment,\n", + " input_data=InputData.tree({\n", + " \"geburtsjahr\": np.array([1944, 1945, 1946, 1947, 1948]),\n", + " \"p_id\": np.array([0, 1, 2, 3, 4])\n", + " }),\n", + " tt_targets={\"tree\": {\"sozialversicherung\": {\"rente\": {\"altersrente\": {\"regelaltersrente\": {\"altersgrenze\": None}}}}}},\n", + " policy_environment=increased_nra_by_birth_year_pe,\n", " include_warn_nodes=False,\n", ")" ] }, + { + "cell_type": "markdown", + "id": "45b6e543", + "metadata": {}, + "source": [ + "### Piecewise Polynomial Parameters\n", + "\n", + "Piecewise polynomial parameters specify a continuous polynomial (first to third degree)\n", + "on the real line. GETTSIM uses them whenever a parameter is a function of a continuous\n", + "variable (like income, age, etc.).\n", + "\n" + ] + }, { "cell_type": "markdown", "id": "30", @@ -520,6 +1081,11 @@ } ], "metadata": { + "kernelspec": { + "display_name": "default", + "language": "python", + "name": "python3" + }, "language_info": { "codemirror_mode": { "name": "ipython", @@ -529,7 +1095,8 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" + "pygments_lexer": "ipython3", + "version": "3.13.5" } }, "nbformat": 4, From 8e4069ef5c9bd12560e5c92de20bd0f51fb6d2be Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Thu, 24 Jul 2025 21:40:06 +0200 Subject: [PATCH 104/109] Finish notebook for now. --- .../modify_taxes_and_transfers.ipynb | 1190 ++++++++--------- pixi.lock | 4 +- pyproject.toml | 2 + 3 files changed, 567 insertions(+), 629 deletions(-) diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modify_taxes_and_transfers.ipynb index 9dd57d2555..5f0a19cea1 100644 --- a/docs/how_to_guides/modify_taxes_and_transfers.ipynb +++ b/docs/how_to_guides/modify_taxes_and_transfers.ipynb @@ -2,13 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "0", "metadata": {}, "outputs": [], "source": [ + "from __future__ import annotations\n", + "\n", "import numpy as np\n", - "from gettsim import main, InputData, MainTarget, copy_environment" + "\n", + "from gettsim import InputData, MainTarget, copy_environment, main" ] }, { @@ -26,10 +29,9 @@ "This tutorial showcases how to modify the calculation of taxes and transfers when using\n", "GETTSIM.\n", "\n", - "Here, we focus mainly on small reforms to the means-tested social welfare benefits for\n", - "the unemployed (German: Bürgergeld; until 2022: Arbeitslosengeld II). We pick this\n", - "example because Bürgergeld is a fairly complex system that uses (almost) the entire\n", - "range of objects TTSIM offers." + "Here, we focus mainly on small reforms to the calculation of income taxes. We pick this\n", + "example because it is a fairly complex system that uses (almost) the entire range of\n", + "objects TTSIM offers." ] }, { @@ -41,8 +43,7 @@ "\n", "Before modifying taxes and transfers, it's important to understand how GETTSIM\n", "represents the current tax and transfer system. The core of GETTSIM's implementation is\n", - "the **policy environment** - a comprehensive data structure that contains everything\n", - "needed to compute taxes and transfers for a specific date.\n", + "the **policy environment**.\n", "\n", "### What is a Policy Environment?\n", "\n", @@ -61,9 +62,8 @@ "2. **Parameter Objects** (`ParamObjects`): These store the parameters and constants\n", " used in calculations, such as tax rates, benefit amounts, or thresholds.\n", "\n", - "3. **Parameter Functions** (`ParamFunctions`): These process and prepare parameters\n", - " so they can be used by the column objects. They handle parameter transformations\n", - " and validations.\n", + "3. **Parameter Functions** (`ParamFunctions`): These process parameters such that they\n", + " are ready to be used by the column objects.\n", "\n", "### Getting Started\n", "\n", @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "3", "metadata": {}, "outputs": [], @@ -90,95 +90,29 @@ "id": "4", "metadata": {}, "source": [ - "We also create some input data in order to verify how our modifications to the policy\n", - "environment affect the output. The following input data is required to compute the\n", - "amount of social welfare benefits (i.e. `('arbeitslosengeld_2', 'betrag_m_bg')`) when\n", - "assuming parental leave benefits (i.e. `('elterngeld', 'betrag_m')`), pensions\n", - "(i.e. `('sozialversicherung', 'rente', 'altersrente', 'betrag_m')`,\n", - "`('sozialversicherung', 'rente', 'erwerbsminderung', 'betrag_m')`), and unemployment\n", - "benefits (i.e. `('sozialversicherung', 'arbeitslosen', 'betrag_m')`) are fixed at some\n", - "value." + "We also create some input data in order to verify how our modifications affect the\n", + "output. The following input data is required to compute the amount of income tax when\n", + "assuming parental leave benefits (i.e. `('elterngeld', 'betrag_m')`), pensions (i.e.\n", + "`('sozialversicherung', 'rente', 'altersrente', 'betrag_m')`, `('sozialversicherung',\n", + "'rente', 'erwerbsminderung', 'betrag_m')`) and unemployment benefits (i.e.\n", + "`('sozialversicherung', 'arbeitslosen', 'betrag_m')`) are fixed at some value." ] }, { "cell_type": "code", "execution_count": null, - "id": "5772e295", - "metadata": {}, - "outputs": [ - { - "ename": "MissingFunctionsError", - "evalue": "The following targets have no corresponding function:\n\n[\n \"wohngeld__betrag_m_wthh\",\n]\n", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mMissingFunctionsError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[8]\u001b[39m\u001b[32m, line 21\u001b[39m\n\u001b[32m 1\u001b[39m inp = {\n\u001b[32m 2\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mp_id\u001b[39m\u001b[33m\"\u001b[39m: np.array([\u001b[32m0\u001b[39m]),\n\u001b[32m 3\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mwohngeld\u001b[39m\u001b[33m\"\u001b[39m: {\u001b[33m\"\u001b[39m\u001b[33mbetrag_m_wthh\u001b[39m\u001b[33m\"\u001b[39m: np.array([\u001b[32m0.0\u001b[39m])},\n\u001b[32m (...)\u001b[39m\u001b[32m 18\u001b[39m \u001b[38;5;66;03m#},\u001b[39;00m\n\u001b[32m 19\u001b[39m }\n\u001b[32m---> \u001b[39m\u001b[32m21\u001b[39m \u001b[43mmain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 22\u001b[39m \u001b[43m \u001b[49m\u001b[43mmain_target\u001b[49m\u001b[43m=\u001b[49m\u001b[43mMainTarget\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtemplates\u001b[49m\u001b[43m.\u001b[49m\u001b[43minput_data_dtypes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 23\u001b[39m \u001b[43m \u001b[49m\u001b[43mpolicy_date_str\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43m2025-01-01\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 24\u001b[39m \u001b[43m \u001b[49m\u001b[43minput_data\u001b[49m\u001b[43m=\u001b[49m\u001b[43mInputData\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtree\u001b[49m\u001b[43m(\u001b[49m\u001b[43minp\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 25\u001b[39m \u001b[43m \u001b[49m\u001b[43minclude_warn_nodes\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 26\u001b[39m \u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/src/gettsim/__init__.py:108\u001b[39m, in \u001b[36mmain\u001b[39m\u001b[34m(main_target, main_targets, policy_date_str, input_data, tt_targets, rounding, backend, evaluation_date_str, include_fail_nodes, include_warn_nodes, orig_policy_objects, raw_results, results, specialized_environment, policy_environment, processed_data, policy_date, evaluation_date, labels)\u001b[39m\n\u001b[32m 103\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m orig_policy_objects \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 104\u001b[39m orig_policy_objects = _ttsim.main_args.OrigPolicyObjects(\n\u001b[32m 105\u001b[39m root=Path(\u001b[34m__file__\u001b[39m).parent.parent / \u001b[33m\"\u001b[39m\u001b[33m_gettsim\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 106\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m108\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_ttsim\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[38;5;28;43mlocals\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/main.py:141\u001b[39m, in \u001b[36mmain\u001b[39m\u001b[34m(main_target, main_targets, policy_date_str, input_data, tt_targets, rounding, backend, evaluation_date_str, include_fail_nodes, include_warn_nodes, tt_function_set_annotations, orig_policy_objects, raw_results, results, specialized_environment, policy_environment, processed_data, policy_date, evaluation_date, labels)\u001b[39m\n\u001b[32m 132\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m main_target:\n\u001b[32m 133\u001b[39m f = dags.concatenate_functions(\n\u001b[32m 134\u001b[39m dag=dag,\n\u001b[32m 135\u001b[39m functions=functions,\n\u001b[32m (...)\u001b[39m\u001b[32m 139\u001b[39m lexsort_key=lexsort_key,\n\u001b[32m 140\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m141\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43minput_qnames\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 142\u001b[39m f = dags.concatenate_functions(\n\u001b[32m 143\u001b[39m dag=dag,\n\u001b[32m 144\u001b[39m functions=functions,\n\u001b[32m (...)\u001b[39m\u001b[32m 149\u001b[39m lexsort_key=lexsort_key,\n\u001b[32m 150\u001b[39m )\n\u001b[32m 151\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m dt.unflatten_from_qnames(f(**input_qnames))\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/output.py:25\u001b[39m, in \u001b[36msingle_output..wrapper_single_output\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 23\u001b[39m \u001b[38;5;129m@functools\u001b[39m.wraps(func)\n\u001b[32m 24\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mwrapper_single_output\u001b[39m(*args: P.args, **kwargs: P.kwargs) -> T:\n\u001b[32m---> \u001b[39m\u001b[32m25\u001b[39m raw = \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 26\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m raw[\u001b[32m0\u001b[39m]\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/signature.py:139\u001b[39m, in \u001b[36mwith_signature..decorator_with_signature..wrapper_with_signature\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 135\u001b[39m _fail_if_duplicated_arguments(present_args, present_kwargs, funcname)\n\u001b[32m 136\u001b[39m _fail_if_invalid_keyword_arguments(\n\u001b[32m 137\u001b[39m present_kwargs, valid_kwargs, funcname\n\u001b[32m 138\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m139\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:611\u001b[39m, in \u001b[36m_create_concatenated_function..concatenated\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 609\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m name, info \u001b[38;5;129;01min\u001b[39;00m execution_info.items():\n\u001b[32m 610\u001b[39m func_kwargs = {arg: results[arg] \u001b[38;5;28;01mfor\u001b[39;00m arg \u001b[38;5;129;01min\u001b[39;00m info.arguments}\n\u001b[32m--> \u001b[39m\u001b[32m611\u001b[39m result = \u001b[43minfo\u001b[49m\u001b[43m.\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mfunc_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 612\u001b[39m results[name] = result\n\u001b[32m 614\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mtuple\u001b[39m(results[target] \u001b[38;5;28;01mfor\u001b[39;00m target \u001b[38;5;129;01min\u001b[39;00m targets)\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/interface_dag_elements/interface_node_objects.py:132\u001b[39m, in \u001b[36mInterfaceFunction.__call__\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 127\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__call__\u001b[39m(\n\u001b[32m 128\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 129\u001b[39m *args: FunArgTypes.args,\n\u001b[32m 130\u001b[39m **kwargs: FunArgTypes.kwargs,\n\u001b[32m 131\u001b[39m ) -> ReturnType:\n\u001b[32m--> \u001b[39m\u001b[32m132\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfunction\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/signature.py:250\u001b[39m, in \u001b[36mrename_arguments..decorator_rename_arguments..wrapper_rename_arguments\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 248\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m mapper \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mapper:\n\u001b[32m 249\u001b[39m internal_kwargs[name] = value\n\u001b[32m--> \u001b[39m\u001b[32m250\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43minternal_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/ttsim/interface_dag_elements/templates.py:54\u001b[39m, in \u001b[36minput_data_dtypes\u001b[39m\u001b[34m(specialized_environment__with_partialled_params_and_scalars, policy_environment, tt_targets__qname, labels__grouping_levels, labels__top_level_namespace)\u001b[39m\n\u001b[32m 25\u001b[39m \u001b[38;5;129m@interface_function\u001b[39m()\n\u001b[32m 26\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34minput_data_dtypes\u001b[39m(\n\u001b[32m 27\u001b[39m specialized_environment__with_partialled_params_and_scalars: SpecEnvWithPartialledParamsAndScalars, \u001b[38;5;66;03m# noqa: E501\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 31\u001b[39m labels__top_level_namespace: UnorderedQNames,\n\u001b[32m 32\u001b[39m ) -> NestedInputStructureDict:\n\u001b[32m 33\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 34\u001b[39m \u001b[33;03m A template of the required input data and their expected types.\u001b[39;00m\n\u001b[32m 35\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 52\u001b[39m \u001b[33;03m A nested dictionary mapping input paths to their data types.\u001b[39;00m\n\u001b[32m 53\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m54\u001b[39m base_dtype_tree = \u001b[43mdt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcreate_tree_with_input_types\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 55\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdt\u001b[49m\u001b[43m.\u001b[49m\u001b[43munflatten_from_qnames\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 56\u001b[39m \u001b[43m \u001b[49m\u001b[43mspecialized_environment__with_partialled_params_and_scalars\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 57\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 58\u001b[39m \u001b[43m \u001b[49m\u001b[43mtargets\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtt_targets__qname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 59\u001b[39m \u001b[43m \u001b[49m\u001b[43mtop_level_inputs\u001b[49m\u001b[43m=\u001b[49m\u001b[43mlabels__top_level_namespace\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 60\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 62\u001b[39m qname_policy_env = dt.flatten_to_qnames(policy_environment)\n\u001b[32m 63\u001b[39m qname_dtype_tree = dt.flatten_to_qnames(base_dtype_tree)\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/tree/dag_tree.py:78\u001b[39m, in \u001b[36mcreate_tree_with_input_types\u001b[39m\u001b[34m(functions, targets, top_level_inputs)\u001b[39m\n\u001b[32m 69\u001b[39m fail_if_paths_are_invalid(\n\u001b[32m 70\u001b[39m functions=functions,\n\u001b[32m 71\u001b[39m abs_qnames_functions=functions_for_flat_dags,\n\u001b[32m 72\u001b[39m targets=targets,\n\u001b[32m 73\u001b[39m top_level_namespace=top_level_namespace,\n\u001b[32m 74\u001b[39m )\n\u001b[32m 76\u001b[39m targets_qnames = qnames(targets) \u001b[38;5;28;01mif\u001b[39;00m targets \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m78\u001b[39m _functions, _targets = \u001b[43mharmonize_and_check_functions_and_targets\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 79\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunctions\u001b[49m\u001b[43m=\u001b[49m\u001b[43mfunctions_for_flat_dags\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 80\u001b[39m \u001b[43m \u001b[49m\u001b[43mtargets\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtargets_qnames\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 81\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 83\u001b[39m dag = create_dag(\n\u001b[32m 84\u001b[39m functions=_functions,\n\u001b[32m 85\u001b[39m targets=_targets,\n\u001b[32m 86\u001b[39m )\n\u001b[32m 87\u001b[39m arglist = create_arguments_of_concatenated_function(functions=_functions, dag=dag)\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:390\u001b[39m, in \u001b[36mharmonize_and_check_functions_and_targets\u001b[39m\u001b[34m(functions, targets)\u001b[39m\n\u001b[32m 388\u001b[39m targets_harmonized = _harmonize_targets(targets, \u001b[38;5;28mlist\u001b[39m(functions_harmonized))\n\u001b[32m 389\u001b[39m _fail_if_targets_have_wrong_types(targets_harmonized)\n\u001b[32m--> \u001b[39m\u001b[32m390\u001b[39m \u001b[43m_fail_if_functions_are_missing\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunctions_harmonized\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtargets_harmonized\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 392\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m functions_harmonized, targets_harmonized\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/GitHub/gettsim/.pixi/envs/default/lib/python3.13/site-packages/dags/dag.py:434\u001b[39m, in \u001b[36m_fail_if_functions_are_missing\u001b[39m\u001b[34m(functions, targets)\u001b[39m\n\u001b[32m 432\u001b[39m formatted = format_list_linewise(\u001b[38;5;28mlist\u001b[39m(targets_not_in_functions))\n\u001b[32m 433\u001b[39m msg = \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mThe following targets have no corresponding function:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mformatted\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m--> \u001b[39m\u001b[32m434\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m MissingFunctionsError(msg)\n", - "\u001b[31mMissingFunctionsError\u001b[39m: The following targets have no corresponding function:\n\n[\n \"wohngeld__betrag_m_wthh\",\n]\n" - ] - } - ], - "source": [ - "inp = {\n", - " \"p_id\": np.array([0]),\n", - " \"wohngeld\": {\"betrag_m_wthh\": np.array([0.0])},\n", - " #\"arbeitslosengeld_2\": {\"betrag_m_bg\": np.array([0.0])},\n", - " #\"elterngeld\": {\"betrag_m\": np.array([0.0])},\n", - " #\"sozialversicherung\": {\n", - " # \"arbeitslosen\": {\n", - " # \"betrag_m\": np.array([0.0])\n", - " # },\n", - " # \"rente\": {\n", - " # \"altersrente\": {\n", - " # \"betrag_m\": np.array([0.0])\n", - " # },\n", - " # \"erwerbsminderung\": {\n", - " # \"betrag_m\": np.array([0.0])\n", - " # },\n", - " # },\n", - " #},\n", - "}\n", - "\n", - "main(\n", - " main_target=MainTarget.templates.input_data_dtypes,\n", - " policy_date_str=\"2025-01-01\",\n", - " input_data=InputData.tree(inp),\n", - " include_warn_nodes=False,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, "id": "5", "metadata": {}, "outputs": [], "source": [ "INPUT_DATA_TREE = {\n", " \"alter\": np.array([40, 40, 5]),\n", - " \"alter_monate\": np.array([480, 480, 60]),\n", - " \"arbeitslosengeld_2\": {\n", - " \"bezug_im_vorjahr\": np.array([True, True, True]),\n", - " \"eigenbedarf_gedeckt\": np.array([False, False, False]),\n", - " \"p_id_einstandspartner\": np.array([1, 0, -1]),\n", - " },\n", - " \"arbeitsstunden_w\": np.array([20, 0, 0]),\n", - " \"behinderungsgrad\": np.array([0, 0, 0]),\n", + " \"arbeitsstunden_w\": np.array([40, 40, 0]),\n", + " \"behinderungsgrad\": np.array([0, 60, 0]),\n", " \"einkommensteuer\": {\n", " \"abzüge\": {\n", - " \"beitrag_private_rentenversicherung_m\": np.array([0.0, 0.0, 0.0]),\n", - " \"kinderbetreuungskosten_m\": np.array([0.0, 0.0, 0.0]),\n", + " \"beitrag_private_rentenversicherung_m\": np.array([120, 120, 0]),\n", + " \"kinderbetreuungskosten_m\": np.array([0.0, 0.0, 120.0]),\n", " \"p_id_kinderbetreuungskostenträger\": np.array([-1, -1, 0]),\n", " },\n", " \"einkünfte\": {\n", @@ -186,7 +120,7 @@ " \"aus_gewerbebetrieb\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", " \"aus_kapitalvermögen\": {\"kapitalerträge_m\": np.array([0.0, 0.0, 0.0])},\n", " \"aus_nichtselbstständiger_arbeit\": {\n", - " \"bruttolohn_m\": np.array([1500.0, 0.0, 0.0])\n", + " \"bruttolohn_m\": np.array([6000.0, 4000.0, 0.0])\n", " },\n", " \"aus_selbstständiger_arbeit\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", " \"aus_vermietung_und_verpachtung\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", @@ -202,7 +136,9 @@ " },\n", " \"gemeinsam_veranlagt\": np.array([True, True, False]),\n", " },\n", - " \"elterngeld\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", + " \"arbeitslosengeld_2\": {\n", + " \"p_id_einstandspartner\": np.array([1, 0, -1])\n", + " }, # not required for ESt, but we need it later\n", " \"familie\": {\n", " \"alleinerziehend\": np.array([False, False, False]),\n", " \"p_id_ehepartner\": np.array([1, 0, -1]),\n", @@ -210,32 +146,21 @@ " \"p_id_elternteil_2\": np.array([-1, -1, 1]),\n", " },\n", " \"geburtsjahr\": np.array([1985, 1985, 2020]),\n", - " \"hh_id\": np.array([0, 0, 0]),\n", " \"kindergeld\": {\n", " \"in_ausbildung\": np.array([False, False, False]),\n", " \"p_id_empfänger\": np.array([-1, -1, 0]),\n", " },\n", " \"p_id\": np.array([0, 1, 2]),\n", + " \"hh_id\": np.array([0, 0, 0]),\n", " \"sozialversicherung\": {\n", - " \"arbeitslosen\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", " \"kranken\": {\"beitrag\": {\"privat_versichert\": np.array([False, False, False])}},\n", " \"pflege\": {\"beitrag\": {\"hat_kinder\": np.array([True, True, False])}},\n", " \"rente\": {\n", " \"altersrente\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", - " \"bezieht_rente\": np.array([False, False, False]),\n", " \"erwerbsminderung\": {\"betrag_m\": np.array([0.0, 0.0, 0.0])},\n", " \"jahr_renteneintritt\": np.array([2060, 2060, 2090]),\n", " },\n", " },\n", - " \"unterhalt\": {\"tatsächlich_erhaltener_betrag_m\": np.array([0.0, 0.0, 0.0])},\n", - " \"vermögen\": np.array([0.0, 0.0, 0.0]),\n", - " \"wohnen\": {\n", - " \"bewohnt_eigentum_hh\": np.array([False, False, False]),\n", - " \"bruttokaltmiete_m_hh\": np.array([600.0, 600.0, 600.0]),\n", - " \"heizkosten_m_hh\": np.array([60.0, 60.0, 60.0]),\n", - " \"wohnfläche_hh\": np.array([50.0, 50.0, 50.0]),\n", - " },\n", - " \"wohngeld\": {\"mietstufe_hh\": np.array([4, 4, 4])},\n", "}" ] }, @@ -249,83 +174,16 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "7", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
arbeitslosengeld_2
betrag_m_bg
p_id
0790.916898
1790.916898
2790.916898
\n", - "
" - ], - "text/plain": [ - " arbeitslosengeld_2\n", - " betrag_m_bg\n", - "p_id \n", - "0 790.916898\n", - "1 790.916898\n", - "2 790.916898" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", " input_data=InputData.tree(INPUT_DATA_TREE),\n", - " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", " include_warn_nodes=False,\n", ")" ] @@ -337,9 +195,9 @@ "source": [ "## Modifying Parameters\n", "\n", - "GETTSIM's parameters are stored in different objects depending on their type. If you\n", - "modify the parameters in the `policy_environment`, you will encounter the following\n", - "objects:\n", + "GETTSIM's parameters are stored in different objects depending on the form they are\n", + "specified in the law. If you modify the parameters in the `policy_environment`, you will\n", + "encounter the following objects:\n", "\n", "1. **ScalarParam**: A scalar parameter, i.e. a parameter that is a single number.\n", "2. **DictParam**: A parameter that is a flat dictionary with homogeneous keys and values\n", @@ -351,7 +209,7 @@ "5. **RawParam**: A parameter that does not fit into the other categories. For these\n", " parameters, we need `ParamFunction`s to process them (see next section).\n", "\n", - "Any of those parameter classes has the following attributes:\n", + "All of those parameter classes have the following attributes:\n", "- `leaf_name`: The leaf name of the parameter in GETTSIM's policy environment.\n", "- `start_date`: The date from which the parameter is valid (if applicable).\n", "- `end_date`: The date until which the parameter is valid (if applicable).\n", @@ -368,55 +226,37 @@ "### Scalar Parameters\n", "\n", "Scalar parameters are the simplest type of parameters. They are represented by the\n", - "`ScalarParam` class. They are stored as a single number in the `policy_environment`.\n", + "`ScalarParam` class.\n", "\n", - "Let's take a look at the `kindersofortzuschlag` parameter. This parameter increases the\n", - "transfer to children by a fixed amount.\n", + "Let's take a look at the `arbeitnehmerpauschbetrag` parameter, a flat deduction applied\n", + "to income from regular employment.\n", "\n", - "As you can see the `kindersofortzuschlag` parameter is a `ScalarParam` object and its\n", - "value is 25€ in the status quo." + "As you can see the `arbeitnehmerpauschbetrag` parameter is a `ScalarParam` object and\n", + "its value is 1230€ in the status quo." ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "9", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ScalarParam(leaf_name='kindersofortzuschlag', start_date=datetime.date(2025, 1, 1), end_date=datetime.date(2099, 12, 31), unit='Euros', reference_period='Month', name={'de': 'Kindersofortzuschlag für Arbeitslosengeld II', 'en': 'Instant surcharge for children for unemployment benefit'}, description={'de': '§ 72 SGB II Kinder, Jugendliche und junge Erwachsene, die Anspruch auf Arbeitslosengeld II oder Sozialgeld haben (Regelbedarfsstufen 3, 4, 5, 6), erhalten einen Sofortzuschlag von 20€.', 'en': '§ 72 SGB II Children, adolescents and young adults who are entitled to unemployment benefits or social benefits (Regelbedarfsstufen 3, 4, 5, 6) receive an instant surcharge of 20 Euro.'}, value=25, note=None, reference=None)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"]" + "status_quo_environment[\"einkommensteuer\"][\"einkünfte\"][\n", + " \"aus_nichtselbstständiger_arbeit\"\n", + "][\"arbeitnehmerpauschbetrag\"]" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "id": "10", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "25" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"arbeitslosengeld_2\"][\"kindersofortzuschlag\"].value" + "status_quo_environment[\"einkommensteuer\"][\"einkünfte\"][\n", + " \"aus_nichtselbstständiger_arbeit\"\n", + "][\"arbeitnehmerpauschbetrag\"].value" ] }, { @@ -433,14 +273,12 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "id": "12", "metadata": {}, "outputs": [], "source": [ - "higher_kindersofortzuschlag_pe = copy_environment(\n", - " status_quo_environment\n", - ")" + "higher_arbeitnehmerpauschbetrag_pe = copy_environment(status_quo_environment)" ] }, { @@ -453,20 +291,20 @@ "Create a new `ScalarParam` object. To do this, we first import the `ScalarParam` class\n", "from GETTSIM and then instantiate it with the new value.\n", "\n", - "**Tip**: You don't have to specify all attributes of the `ScalarParam` class. Only the\n", + "**Note**: You don't have to specify all attributes of the `ScalarParam` class. Only the\n", "value attribute is required." ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "14", "metadata": {}, "outputs": [], "source": [ "from gettsim.tt import ScalarParam\n", "\n", - "new_kindersofortzuschlag = ScalarParam(value=40)" + "higher_arbeitnehmerpauschbetrag = ScalarParam(value=1600)" ] }, { @@ -479,14 +317,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "16", "metadata": {}, "outputs": [], "source": [ - "higher_kindersofortzuschlag_pe[\"arbeitslosengeld_2\"][\n", - " \"kindersofortzuschlag\"\n", - "] = new_kindersofortzuschlag" + "higher_arbeitnehmerpauschbetrag_pe[\"einkommensteuer\"][\"einkünfte\"][\n", + " \"aus_nichtselbstständiger_arbeit\"\n", + "][\"arbeitnehmerpauschbetrag\"] = higher_arbeitnehmerpauschbetrag" ] }, { @@ -499,84 +337,17 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "18", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
arbeitslosengeld_2
betrag_m_bg
p_id
0805.916898
1805.916898
2805.916898
\n", - "
" - ], - "text/plain": [ - " arbeitslosengeld_2\n", - " betrag_m_bg\n", - "p_id \n", - "0 805.916898\n", - "1 805.916898\n", - "2 805.916898" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", " input_data=InputData.tree(INPUT_DATA_TREE),\n", - " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", - " policy_environment=higher_kindersofortzuschlag_pe,\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=higher_arbeitnehmerpauschbetrag_pe,\n", " include_warn_nodes=False,\n", ")" ] @@ -592,54 +363,31 @@ "values. They are represented by the `DictParam` class. They are stored as a flat\n", "dictionary in the `policy_environment`.\n", "\n", - "Let's take a look at the `berechtigte_wohnfläche_miete` parameter. This parameter\n", - "contains the amount of the admissible housing size in square meters for recipients of\n", - "social welfare benefits.\n", + "Let's take a look at the `parameter_kinderfreibetrag` parameter. This parameter\n", + "contains tax deductions for parents of young children.\n", "\n", - "As you can see the `berechtigte_wohnfläche_miete` parameter is a `DictParam` object and\n", + "As you can see the `parameter_kinderfreibetrag` parameter is a `DictParam` object and\n", "its value is a dictionary." ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "20", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "DictParam(leaf_name='berechtigte_wohnfläche_miete', start_date=datetime.date(2005, 1, 1), end_date=datetime.date(2099, 12, 31), unit='Square Meters', reference_period=None, name={'de': 'Berechtigte Mietwohnfläche für ALG2-Empfänger*innen', 'en': 'Living rental space eligible for ALG2-recipients'}, description={'de': 'Eine Mietwohnung darf für einen Single 45 Quadratmeter (+15 für jede weitere Person) groß sein. Dies ist nur eine Approximation. Die regionalen Parameter sind unbekannt, siehe Issue https://github.com/ttsim-dev/gettsim/issues/782.', 'en': 'A rental apartment may be 45 square meters for a single person (+15 for each additional person). This is only an approximation. The regional parameters are unknown, see Issue https://github.com/ttsim-dev/gettsim/issues/782.'}, value={'single': 45, 'je_weitere_person': 15}, note=None, reference=None)" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"]" + "status_quo_environment[\"einkommensteuer\"][\"parameter_kinderfreibetrag\"]" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "21", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'single': 45, 'je_weitere_person': 15}" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"].value" + "status_quo_environment[\"einkommensteuer\"][\"parameter_kinderfreibetrag\"].value" ] }, { @@ -647,112 +395,48 @@ "id": "22", "metadata": {}, "source": [ - "Let's modify the parameter by decreasing admissible household size for a single person.\n", + "Let's modify the parameter by increasing the \"sächliches Existenzminimum\" for children.\n", "We follow the same steps as in the previous section." ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "id": "23", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
arbeitslosengeld_2
betrag_m_bg
p_id
0740.916898
1740.916898
2740.916898
\n", - "
" - ], - "text/plain": [ - " arbeitslosengeld_2\n", - " betrag_m_bg\n", - "p_id \n", - "0 740.916898\n", - "1 740.916898\n", - "2 740.916898" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from gettsim.tt import DictParam\n", "\n", - "new_berechtigte_wohnfläche_miete = DictParam(\n", + "# Step 1: Create a copy of the status quo policy environment.\n", + "higher_kinderfreibetrag_pe = copy_environment(status_quo_environment)\n", + "\n", + "# Step 2: Create a new parameter `parameter_kinderfreibetrag`\n", + "higher_kinderfreibetrag = DictParam(\n", " value={\n", - " \"single\": 15,\n", - " \"je_weitere_person\": 15,\n", + " \"betreuung_erziehung_ausbildung\": 1464,\n", + " \"sächliches_existenzminimum\": 4000,\n", " },\n", ")\n", "\n", - "lower_berechtigte_wohnfläche_miete_pe = copy_environment(\n", - " status_quo_environment\n", + "# Step 3: Insert the new parameter into the copied policy environment\n", + "higher_kinderfreibetrag_pe[\"einkommensteuer\"][\"parameter_kinderfreibetrag\"] = (\n", + " higher_kinderfreibetrag\n", ")\n", "\n", - "lower_berechtigte_wohnfläche_miete_pe[\"arbeitslosengeld_2\"][\"berechtigte_wohnfläche_miete\"] = new_berechtigte_wohnfläche_miete\n", - "\n", "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", " input_data=InputData.tree(INPUT_DATA_TREE),\n", - " tt_targets={\"tree\": {\"arbeitslosengeld_2\": {\"betrag_m_bg\": None}}},\n", - " policy_environment=lower_berechtigte_wohnfläche_miete_pe,\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=higher_kinderfreibetrag_pe,\n", " include_warn_nodes=False,\n", ")" ] }, { "cell_type": "markdown", - "id": "54e7ddf6", + "id": "24", "metadata": {}, "source": [ "### Consecutive Int Lookup Table Parameters\n", @@ -764,57 +448,47 @@ "There are very few parameters of this type in GETTSIM's policy environment; most of them\n", "are created via `param_function`s.\n", "\n", - "Let's step out of the social welfare benefits example for this parameter and look at\n", - "pension benefits. Here, usage of `ConsecutiveIntLookupTableParam` is more common. In\n", - "particular, we'll look at the normal retirement age parameter, which is a function of\n", - "the birth year." + "Let's look at pension benefits for this example (there are no\n", + "`ConsecutiveIntLookupTableParam`s in the `policy_environment` for the income tax\n", + "system). In particular, we'll look at the normal retirement age parameter, which is a\n", + "function of the birth year." ] }, { "cell_type": "code", - "execution_count": 77, - "id": "500f8c9b", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"]" + ] + }, + { + "cell_type": "markdown", + "id": "26", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ConsecutiveIntLookupTableParam(leaf_name='altersgrenze_gestaffelt', start_date=datetime.date(2007, 4, 20), end_date=datetime.date(2030, 12, 31), unit='Years', reference_period=None, name={'de': 'Gestaffeltes Eintrittsalter für Regelaltersrente nach Geburtsjahr', 'en': 'Staggered normal retirement age (NRA) for Regelaltersrente by birth year'}, description={'de': '§ 35 Satz 2 SGB VI Regelaltersgrenze ab der Renteneintritt möglich ist. Wenn früher oder später in Rente gegangen wird, wird der Zugangsfaktor und damit der Rentenanspruch höher oder niedriger, sofern keine Sonderregelungen gelten.', 'en': '§ 35 Satz 2 SGB VI Normal retirement age from which pension can be received. If retirement benefits are claimed earlier or later, the Zugangsfaktor and thus the pension entitlement is higher or lower unless special regulations apply.'}, value=, note=None, reference=None)" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"]" + "The `value` attribute of `ConsecutiveIntLookupTableParam` stores a `ConsecutiveIntLookupTableParamValue` object:" ] }, { "cell_type": "code", - "execution_count": 78, - "id": "16919d94", + "execution_count": null, + "id": "27", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"].value" ] }, { "cell_type": "markdown", - "id": "4d8ba53b", + "id": "28", "metadata": {}, "source": [ "The `ConsecutiveIntLookupTableParamValue` has the following attributes:\n", @@ -824,102 +498,49 @@ " `ConsecutiveIntLookupTableParamValue` at `12` returns the value at indes `12 - 10 =\n", " 2`.\n", "\n", - "In this example here, one could look up the parameter value at `1900` via the `look_up´\n", + "In this example, one could look up the parameter value at `1900` via the `look_up´\n", "method to get the first value of the array:" ] }, { "cell_type": "code", "execution_count": null, - "id": "b0059231", + "id": "29", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1900]])" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.bases_to_subtract" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"].value.bases_to_subtract" ] }, { "cell_type": "code", - "execution_count": 80, - "id": "126dc738", + "execution_count": null, + "id": "30", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65. , 65. , 65. ,\n", - " 65. , 65. , 65.08333333, 65.16666667, 65.25 ,\n", - " 65.33333333, 65.41666667, 65.5 , 65.58333333, 65.66666667,\n", - " 65.75 , 65.83333333, 65.91666667, 66. , 66.16666667,\n", - " 66.33333333, 66.5 , 66.66666667, 66.83333333, 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. , 67. , 67. , 67. ,\n", - " 67. , 67. ])" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.values_to_look_up" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"].value.values_to_look_up" ] }, { "cell_type": "code", - "execution_count": 81, - "id": "0f76b300", + "execution_count": null, + "id": "31", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([65.])" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"].value.look_up(1900)" + "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"].value.look_up(1900)" ] }, { "cell_type": "markdown", - "id": "cd1b82aa", + "id": "32", "metadata": {}, "source": [ "Let's create a modified version with a steeper increase in the normal retirement age." @@ -927,124 +548,51 @@ }, { "cell_type": "code", - "execution_count": 83, - "id": "6fd17142", + "execution_count": null, + "id": "33", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
sozialversicherung
rente
altersrente
regelaltersrente
altersgrenze
p_id
065.0
165.5
266.0
366.5
467.0
\n", - "
" - ], - "text/plain": [ - " sozialversicherung\n", - " rente\n", - " altersrente\n", - " regelaltersrente\n", - " altersgrenze\n", - "p_id \n", - "0 65.0\n", - "1 65.5\n", - "2 66.0\n", - "3 66.5\n", - "4 67.0" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "from gettsim.tt import ConsecutiveIntLookupTableParam, ConsecutiveIntLookupTableParamValue\n", + "from gettsim.tt import (\n", + " ConsecutiveIntLookupTableParam,\n", + " ConsecutiveIntLookupTableParamValue,\n", + ")\n", "\n", + "# Step 1: Create a copy of the status quo policy environment.\n", + "increased_nra_by_birth_year_pe = copy_environment(status_quo_environment)\n", + "\n", + "# Step 2: Create a new parameter `altersgrenze_gestaffelt`\n", "increased_nra_by_birth_year = ConsecutiveIntLookupTableParam(\n", " value=ConsecutiveIntLookupTableParamValue(\n", - " values_to_look_up=np.array([65.0] * 45 + [65.5, 66.0, 66.5, 67.0] + [67.0] * 51),\n", + " values_to_look_up=np.array(\n", + " [65.0] * 45 + [65.5, 66.0, 66.5, 67.0] + [67.0] * 51\n", + " ),\n", " bases_to_subtract=np.array([1900]),\n", " xnp=np,\n", " ),\n", ")\n", "\n", - "increased_nra_by_birth_year_pe = copy_environment(status_quo_environment)\n", - "increased_nra_by_birth_year_pe[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\"regelaltersrente\"][\"altersgrenze_gestaffelt\"] = increased_nra_by_birth_year\n", + "# Step 3: Insert the new parameter into the copied policy environment\n", + "increased_nra_by_birth_year_pe[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + "][\"altersgrenze_gestaffelt\"] = increased_nra_by_birth_year\n", "\n", "main(\n", " main_target=MainTarget.results.df_with_nested_columns,\n", " policy_date_str=\"2025-01-01\",\n", - " input_data=InputData.tree({\n", - " \"geburtsjahr\": np.array([1944, 1945, 1946, 1947, 1948]),\n", - " \"p_id\": np.array([0, 1, 2, 3, 4])\n", - " }),\n", - " tt_targets={\"tree\": {\"sozialversicherung\": {\"rente\": {\"altersrente\": {\"regelaltersrente\": {\"altersgrenze\": None}}}}}},\n", + " input_data=InputData.tree(\n", + " {\n", + " \"geburtsjahr\": np.array([1944, 1945, 1946, 1947, 1948]),\n", + " \"p_id\": np.array([0, 1, 2, 3, 4]),\n", + " }\n", + " ),\n", + " tt_targets={\n", + " \"tree\": {\n", + " \"sozialversicherung\": {\n", + " \"rente\": {\"altersrente\": {\"regelaltersrente\": {\"altersgrenze\": None}}}\n", + " }\n", + " }\n", + " },\n", " policy_environment=increased_nra_by_birth_year_pe,\n", " include_warn_nodes=False,\n", ")" @@ -1052,7 +600,7 @@ }, { "cell_type": "markdown", - "id": "45b6e543", + "id": "34", "metadata": {}, "source": [ "### Piecewise Polynomial Parameters\n", @@ -1060,32 +608,421 @@ "Piecewise polynomial parameters specify a continuous polynomial (first to third degree)\n", "on the real line. GETTSIM uses them whenever a parameter is a function of a continuous\n", "variable (like income, age, etc.).\n", - "\n" + "\n", + "Let's take a look at `parameter_behindertenpauschbetrag`, a tax deduction for disabled\n", + "individuals. The deduction is a function of the degree of disability (between 0 and\n", + "100)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"einkommensteuer\"][\"abzüge\"][\"parameter_behindertenpauschbetrag\"]" ] }, { "cell_type": "markdown", - "id": "30", + "id": "36", + "metadata": {}, + "source": [ + "The `value` attribute of `PiecewisePolynomialParam` stores a `PiecewisePolynomialParamValue` object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37", "metadata": {}, + "outputs": [], "source": [ - "## Modifying Parameter Functions" + "status_quo_environment[\"einkommensteuer\"][\"abzüge\"][\n", + " \"parameter_behindertenpauschbetrag\"\n", + "].value" ] }, { "cell_type": "markdown", - "id": "31", + "id": "38", + "metadata": {}, + "source": [ + "The `PiecewisePolynomialParamValue` class is used to represent the values of a piecewise\n", + "polynomial parameter. It has the following attributes:\n", + "\n", + "- `thresholds`: An array of thresholds at which rates change or intercepts apply.\n", + "- `intercepts`: A list of intercepts at each threshold.\n", + "- `rates`: A list of rates at each threshold.\n", + "\n", + "In this example, `rates` are always 0, i.e. it is a piecewise constant function. Let's\n", + "change the schedule such that any disability degree above the level of 30% gets a flat\n", + "deduction of 3000€.\n", + "\n", + "**Note:** Piecewise polynomial parameters must **always** be defined on the real line.\n", + "This means that the first threshold must be `-np.inf` and the last threshold must be\n", + "`np.inf`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39", + "metadata": {}, + "outputs": [], + "source": [ + "from gettsim.tt import PiecewisePolynomialParam, PiecewisePolynomialParamValue\n", + "\n", + "increased_behindertenpauschbetrag = PiecewisePolynomialParam(\n", + " value=PiecewisePolynomialParamValue(\n", + " thresholds=np.array([-np.inf, 0.5, np.inf]),\n", + " intercepts=np.array([0.0, 3000.0]),\n", + " rates=np.array([[0.0, 0.0]]),\n", + " ),\n", + ")\n", + "\n", + "increased_behindertenpauschbetrag_pe = copy_environment(status_quo_environment)\n", + "increased_behindertenpauschbetrag_pe[\"einkommensteuer\"][\"abzüge\"][\n", + " \"parameter_behindertenpauschbetrag\"\n", + "] = increased_behindertenpauschbetrag\n", + "\n", + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=increased_behindertenpauschbetrag_pe,\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "40", + "metadata": {}, + "source": [ + "### Raw params\n", + "\n", + "Raw parameters are parameters that are stored in a way that doesn't fit into the other\n", + "categories. `RawParam`s need to be processed via a `ParamFunction` to make them usable\n", + "for standard `ColumnFunction`s (see next section).\n", + "\n", + "Because of this, `RawParam`s may come in very different shapes. One example is the\n", + "income tax tariff. GETTSIM stores it as it is reported in the law. To receive the shape\n", + "we need to wrap it in a `PiecewisePolynomialParam`, some post-processing is needed to\n", + "convert it to the shape we need.\n", + "\n", + "Let's take a look at the `raw_parameter_einkommensteuertarif` parameter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"einkommensteuer\"][\"raw_parameter_einkommensteuertarif\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"einkommensteuer\"][\"raw_parameter_einkommensteuertarif\"].value" + ] + }, + { + "cell_type": "markdown", + "id": "43", + "metadata": {}, + "source": [ + "We modify it by increasing the income exempt from any income tax (upper threshold of the\n", + "first bracket) from 12096€ to 14000€." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44", + "metadata": {}, + "outputs": [], + "source": [ + "from gettsim.tt import RawParam\n", + "\n", + "# Step 1: Create a copy of the status quo policy environment.\n", + "increased_tax_exemption_pe = copy_environment(status_quo_environment)\n", + "\n", + "# Step 2: Create the new parameter.\n", + "increased_tax_exemption = RawParam(\n", + " value={\n", + " 0: {\n", + " \"lower_threshold\": \"-inf\",\n", + " \"upper_threshold\": 14000,\n", + " \"rate_linear\": 0,\n", + " \"rate_quadratic\": 0,\n", + " \"intercept_at_lower_threshold\": 0,\n", + " },\n", + " 1: {\"upper_threshold\": 17443, \"rate_linear\": 0.14},\n", + " 2: {\"upper_threshold\": 68480, \"rate_linear\": 0.2397},\n", + " 3: {\"upper_threshold\": 277825, \"rate_linear\": 0.42, \"rate_quadratic\": 0},\n", + " 4: {\"upper_threshold\": \"inf\", \"rate_linear\": 0.45, \"rate_quadratic\": 0},\n", + " }\n", + ")\n", + "\n", + "# Step 3: Insert the new parameter into the copied policy environment\n", + "increased_tax_exemption_pe[\"einkommensteuer\"][\"raw_parameter_einkommensteuertarif\"] = (\n", + " increased_tax_exemption\n", + ")\n", + "\n", + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=increased_tax_exemption_pe,\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "45", + "metadata": {}, + "source": [ + "## Modifying Parameter Functions\n", + "\n", + "Parameter functions process parameters. Often, they process `RawParam`s to make them\n", + "usable for standard `ColumnFunction`s, but they can also be used to modify the standard\n", + "parameters described above. Parameter functions must not depend on `ColumnFunction`s.\n", + "\n", + "Let's take a look at the `kinderfreibetrag_pro_kind_y` parameter. It is created via a\n", + "`ParamFunction` by summing up the values of the `parameter_kinderfreibetrag` parameter\n", + "dictionary.\n", + "\n", + "```python\n", + "@param_function()\n", + "def kinderfreibetrag_pro_kind_y(parameter_kinderfreibetrag: dict[str, float]) -> float:\n", + " return sum(parameter_kinderfreibetrag.values())\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46", + "metadata": {}, + "outputs": [], + "source": [ + "status_quo_environment[\"einkommensteuer\"][\"kinderfreibetrag_pro_kind_y\"]" + ] + }, + { + "cell_type": "markdown", + "id": "47", + "metadata": {}, + "source": [ + "Let's look at a reform that modifies the tax deduction for children by adding the\n", + "\"Bildung und Teilhabe\" bonus of the \"Kinderzuschlag\" to it. This effectively increases\n", + "the tax deduction for parents with children by 348€ per child. \n", + "\n", + "Instead of rewriting the underlying parameters (strictly speaking, the parameters\n", + "themselves are not affected by this reform), we can use a `ParamFunction` to modify the\n", + "tax deduction for children only.\n", + "\n", + "The original function looks like this:\n", + "\n", + "```python\n", + "@param_function()\n", + "def kinderfreibetrag_pro_kind_y(\n", + " parameter_kinderfreibetrag: dict[str, float],\n", + ") -> float:\n", + " return sum(parameter_kinderfreibetrag.values())\n", + "```\n", + "\n", + "This is our modified version:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48", + "metadata": {}, + "outputs": [], + "source": [ + "from gettsim.tt import param_function\n", + "\n", + "\n", + "@param_function()\n", + "def kinderfreibetrag_pro_kind_y(\n", + " parameter_kinderfreibetrag: dict[str, float],\n", + " kinderzuschlag__parameter_existenzminimum: dict[str, float],\n", + ") -> float:\n", + " return (\n", + " sum(parameter_kinderfreibetrag.values())\n", + " + kinderzuschlag__parameter_existenzminimum[\"bildung_und_teilhabe\"][\"kind\"]\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "49", "metadata": {}, "source": [ - "## Modifying Column Objects" + "As before, we create a copy of the status quo environment and replace the old function\n", + "with the new one." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50", + "metadata": {}, + "outputs": [], + "source": [ + "bildung_und_teilhabe_tax_deductible_pe = copy_environment(status_quo_environment)\n", + "bildung_und_teilhabe_tax_deductible_pe[\"einkommensteuer\"][\n", + " \"kinderfreibetrag_pro_kind_y\"\n", + "] = kinderfreibetrag_pro_kind_y\n", + "\n", + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=bildung_und_teilhabe_tax_deductible_pe,\n", + " include_warn_nodes=False,\n", + ")" ] + }, + { + "cell_type": "markdown", + "id": "51", + "metadata": {}, + "source": [ + "## Modifying Column Objects\n", + "\n", + "`ColumnObject`s are objects that operate on columns of data. The policy environment\n", + "contains three types of `ColumnObject`s:\n", + "\n", + "- `PolicyFunction`s: The most common type of `ColumnObject`. They perform the standard\n", + " tax and transfer calculations on the individual (or group) level.\n", + "- `GroupCreationFunction`s: These are used to create grouping IDs for individuals (e.g.\n", + " Bedarfsgemeinschaften or Ehegemeinschaften).\n", + "- `AggByGroupFunction`s: These functions aggregate the results of `PolicyFunction`s\n", + " by group (e.g. aggregate a transfer from the individual level to the level of a\n", + " Bedarfsgemeinschaft).\n", + "- `AggByPIDFunction`s: These functions aggregate the results of `PolicyFunction`s by\n", + " person (e.g. aggregate a transfer from the individual level to the level of one\n", + " specific parent).\n", + "- `PolicyInput`s: These are placeholders for the basic inputs of the tax and transfer\n", + " system, delivering information about the input type. If you add new inputs when\n", + " modifying the policy environemnt **and** want to create input data templates (via\n", + " `MainTarget.templates.input_data_dtypes`), you should add a `PolicyInput` for each new\n", + " input variable. Else, you can safely ignore them.\n", + "\n", + "\n", + "Here, we look at how to modify `PolicyFunction`s. If you want to specify aggregation\n", + "functions, take a look at [GEP\n", + "2](https://gettsim.readthedocs.io/en/stable/geps/gep-04.html).\n", + "\n", + "### Policy Functions\n", + "\n", + "`PolicyFunction`s are usually written to operate on rows of the input data. They can\n", + "take any parameter or other `ColumnObject` as inputs.\n", + "\n", + "**Note**: Some `PolicyFunction`s operate on columns of input data. Their decorator will\n", + "contain the term `vectorization_strategy=\"not_required\"`.\n", + "\n", + "Let's take a look at the tax deduction for children again. We look at a reform that\n", + "abolishes the tax deduction for families with less than 2 children.\n", + "\n", + "This is the original function:\n", + "\n", + "```python\n", + "@policy_function()\n", + "def kinderfreibetrag_y(\n", + " anzahl_kinderfreibeträge: int,\n", + " kinderfreibetrag_pro_kind_y: float,\n", + ") -> float:\n", + " \"\"\"Individual child allowance.\"\"\"\n", + " return kinderfreibetrag_pro_kind_y * anzahl_kinderfreibeträge\n", + "```\n", + "\n", + "To do this, we do, as above, the following steps:\n", + "1. Create a copy of the status quo environment\n", + "2. Create a new parameter `min_anzahl_kinder_für_kinderfreibetrag`\n", + "3. Create a new `PolicyFunction` that modifies the tax deduction for children based on\n", + " the new parameter\n", + "4. Insert the new parameter and function into the copy of the status quo environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52", + "metadata": {}, + "outputs": [], + "source": [ + "# Step 1: Create a copy of the status quo environment\n", + "tax_deduction_only_for_at_least_two_children_pe = copy_environment(\n", + " status_quo_environment\n", + ")\n", + "\n", + "# Step 2: Create a new parameter `min_anzahl_kinder_für_kinderfreibetrag`\n", + "from gettsim.tt import ScalarParam\n", + "\n", + "min_anzahl_kinder_für_kinderfreibetrag = ScalarParam(value=2)\n", + "\n", + "# Step 3: Create a new `PolicyFunction` that modifies the tax deduction for children\n", + "# based on the new parameter\n", + "from gettsim.tt import policy_function\n", + "\n", + "\n", + "@policy_function()\n", + "def kinderfreibetrag_y(\n", + " anzahl_kinderfreibeträge: int,\n", + " kinderfreibetrag_pro_kind_y: float,\n", + " familie__anzahl_kinder_fg: int,\n", + " min_anzahl_kinder_für_kinderfreibetrag: int,\n", + ") -> float:\n", + " \"\"\"Individual child allowance.\"\"\"\n", + " if familie__anzahl_kinder_fg >= min_anzahl_kinder_für_kinderfreibetrag:\n", + " return kinderfreibetrag_pro_kind_y * anzahl_kinderfreibeträge\n", + " return 0.0\n", + "\n", + "\n", + "# Step 4: Add the new parameter and function to the policy environment\n", + "tax_deduction_only_for_at_least_two_children_pe[\"einkommensteuer\"][\n", + " \"kinderfreibetrag_y\"\n", + "] = kinderfreibetrag_y\n", + "tax_deduction_only_for_at_least_two_children_pe[\"einkommensteuer\"][\n", + " \"min_anzahl_kinder_für_kinderfreibetrag\"\n", + "] = min_anzahl_kinder_für_kinderfreibetrag\n", + "\n", + "\n", + "main(\n", + " main_target=MainTarget.results.df_with_nested_columns,\n", + " policy_date_str=\"2025-01-01\",\n", + " input_data=InputData.tree(INPUT_DATA_TREE),\n", + " tt_targets={\"tree\": {\"einkommensteuer\": {\"betrag_y_sn\": None}}},\n", + " policy_environment=tax_deduction_only_for_at_least_two_children_pe,\n", + " include_warn_nodes=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "53", + "metadata": {}, + "source": [] } ], "metadata": { - "kernelspec": { - "display_name": "default", - "language": "python", - "name": "python3" - }, "language_info": { "codemirror_mode": { "name": "ipython", @@ -1095,8 +1032,7 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.5" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/pixi.lock b/pixi.lock index 8bd785cdbc..25bc0719fd 100644 --- a/pixi.lock +++ b/pixi.lock @@ -9421,8 +9421,8 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev195+g500e291ef.d20250724 - sha256: 964dc3ae839aab71261de7fe6978a3975732e6e89a6d27c634d416de4c1f1e0c + version: 0.7.1.dev193+g8c5ed2f2.d20250724 + sha256: 6451c41d47a4e19d10d4f886fe0f3bf4a8d6620ea439d39d59fde9742bbd5a5c requires_dist: - ttsim-backend requires_python: '>=3.11' diff --git a/pyproject.toml b/pyproject.toml index 8609e6bc37..9d195e79ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -245,6 +245,8 @@ exclude = [] "src/_gettsim/familie/familie.py" = ["PLR2004"] # All tests return None and use asserts "src/_gettsim_tests/**/*.py" = ["ANN", "S101"] +# Imports not at top of cell for didactic reasons +"docs/how_to_guides/modify_taxes_and_transfers.ipynb" = ["E402"] # TODO: remove once ported nicely "outdated_docs/**/*.ipynb" = ["ALL"] From af6735d77bf5d85238f14011a328861bb0b41e01 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Fri, 25 Jul 2025 07:00:26 +0200 Subject: [PATCH 105/109] Use 'get_consecutive_int_lookup_table_param_value' instead of creating object by hand. --- .../modify_taxes_and_transfers.ipynb | 158 +++++++++--------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modify_taxes_and_transfers.ipynb index 5f0a19cea1..db0f150e54 100644 --- a/docs/how_to_guides/modify_taxes_and_transfers.ipynb +++ b/docs/how_to_guides/modify_taxes_and_transfers.ipynb @@ -62,8 +62,8 @@ "2. **Parameter Objects** (`ParamObjects`): These store the parameters and constants\n", " used in calculations, such as tax rates, benefit amounts, or thresholds.\n", "\n", - "3. **Parameter Functions** (`ParamFunctions`): These process parameters such that they\n", - " are ready to be used by the column objects.\n", + "3. **Parameter Functions** (`ParamFunctions`): These process parameters which cannot be\n", + " used directly by the column objects.\n", "\n", "### Getting Started\n", "\n", @@ -268,7 +268,8 @@ "\n", "#### Step 1: Create a copy of the status quo policy environment. \n", "\n", - "This is good practice to avoid inplace modifications of the original policy environment." + "This is good practice to avoid in-place modifications of the original policy\n", + "environment." ] }, { @@ -441,17 +442,30 @@ "source": [ "### Consecutive Int Lookup Table Parameters\n", "\n", - "Consecutive Int Lookup Table Parameters are one-dimensional arrays. GETTSIM uses then\n", - "whenever a parameter is a function of a single integer variable (like age in months,\n", - "number of household members, etc.).\n", + "In many cases, we need to look up values in a table, for which we tend to use\n", + "dictionaries. E.g., the increase in the normal retirement age for the 1940s cohort would\n", + "look like this:\n", "\n", - "There are very few parameters of this type in GETTSIM's policy environment; most of them\n", - "are created via `param_function`s.\n", - "\n", - "Let's look at pension benefits for this example (there are no\n", - "`ConsecutiveIntLookupTableParam`s in the `policy_environment` for the income tax\n", - "system). In particular, we'll look at the normal retirement age parameter, which is a\n", - "function of the birth year." + "```python\n", + "{\n", + " 1940: 65,\n", + " 1941: 65,\n", + " 1942: 65,\n", + " 1943: 65,\n", + " 1944: 65,\n", + " 1945: 65,\n", + " 1946: 65,\n", + " 1947: 65.08333333,\n", + " 1948: 65.16666667,\n", + " 1949: 65.25,\n", + "}\n", + "``` \n", + "\n", + "For all its efficiency, our alternative computing engine Jax does not support such lookup tables. \n", + "We thus construct our own version, which only works for consecutive integer values\n", + "(i.e., the dictionary keys could not be `red`, `blue`, `green`, or `1`, `7`, `9`, etc.).\n", + "\n", + "Let's look at the implementation." ] }, { @@ -491,15 +505,7 @@ "id": "28", "metadata": {}, "source": [ - "The `ConsecutiveIntLookupTableParamValue` has the following attributes:\n", - "- `values_to_look_up`: an array of values\n", - "- `bases_to_subtract`: the base value to subtract when indexing into\n", - " `values_to_look_up`. For example, when setting this to `10`, indexing the\n", - " `ConsecutiveIntLookupTableParamValue` at `12` returns the value at indes `12 - 10 =\n", - " 2`.\n", - "\n", - "In this example, one could look up the parameter value at `1900` via the `look_up´\n", - "method to get the first value of the array:" + "This object has a `look_up` method, which returns the value for the given key." ] }, { @@ -509,21 +515,24 @@ "metadata": {}, "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", - " \"regelaltersrente\"\n", - "][\"altersgrenze_gestaffelt\"].value.bases_to_subtract" + "for i in range(1940, 1950):\n", + " print(\n", + " i,\n", + " status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", + " \"regelaltersrente\"\n", + " ][\"altersgrenze_gestaffelt\"].value.look_up(i),\n", + " )" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "30", "metadata": {}, - "outputs": [], "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", - " \"regelaltersrente\"\n", - "][\"altersgrenze_gestaffelt\"].value.values_to_look_up" + "Let's create a modified version with a steeper increase in the normal retirement age.\n", + "\n", + "In order to instantiate a `ConsecutiveIntLookupTableParamValue`, we have a function\n", + "`get_consecutive_int_lookup_table_param_value` that takes a dictionary as above:" ] }, { @@ -532,30 +541,10 @@ "id": "31", "metadata": {}, "outputs": [], - "source": [ - "status_quo_environment[\"sozialversicherung\"][\"rente\"][\"altersrente\"][\n", - " \"regelaltersrente\"\n", - "][\"altersgrenze_gestaffelt\"].value.look_up(1900)" - ] - }, - { - "cell_type": "markdown", - "id": "32", - "metadata": {}, - "source": [ - "Let's create a modified version with a steeper increase in the normal retirement age." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "33", - "metadata": {}, - "outputs": [], "source": [ "from gettsim.tt import (\n", " ConsecutiveIntLookupTableParam,\n", - " ConsecutiveIntLookupTableParamValue,\n", + " get_consecutive_int_lookup_table_param_value,\n", ")\n", "\n", "# Step 1: Create a copy of the status quo policy environment.\n", @@ -563,11 +552,19 @@ "\n", "# Step 2: Create a new parameter `altersgrenze_gestaffelt`\n", "increased_nra_by_birth_year = ConsecutiveIntLookupTableParam(\n", - " value=ConsecutiveIntLookupTableParamValue(\n", - " values_to_look_up=np.array(\n", - " [65.0] * 45 + [65.5, 66.0, 66.5, 67.0] + [67.0] * 51\n", - " ),\n", - " bases_to_subtract=np.array([1900]),\n", + " value=get_consecutive_int_lookup_table_param_value(\n", + " raw={\n", + " 1940: 65,\n", + " 1941: 65,\n", + " 1942: 65,\n", + " 1943: 65,\n", + " 1944: 65,\n", + " 1945: 65.5,\n", + " 1946: 66,\n", + " 1947: 66.5,\n", + " 1948: 67,\n", + " 1949: 67,\n", + " },\n", " xnp=np,\n", " ),\n", ")\n", @@ -588,6 +585,7 @@ " ),\n", " tt_targets={\n", " \"tree\": {\n", + " # \"geburtsjahr\": None,\n", " \"sozialversicherung\": {\n", " \"rente\": {\"altersrente\": {\"regelaltersrente\": {\"altersgrenze\": None}}}\n", " }\n", @@ -600,7 +598,7 @@ }, { "cell_type": "markdown", - "id": "34", + "id": "32", "metadata": {}, "source": [ "### Piecewise Polynomial Parameters\n", @@ -617,7 +615,7 @@ { "cell_type": "code", "execution_count": null, - "id": "35", + "id": "33", "metadata": {}, "outputs": [], "source": [ @@ -626,7 +624,7 @@ }, { "cell_type": "markdown", - "id": "36", + "id": "34", "metadata": {}, "source": [ "The `value` attribute of `PiecewisePolynomialParam` stores a `PiecewisePolynomialParamValue` object:" @@ -635,7 +633,7 @@ { "cell_type": "code", "execution_count": null, - "id": "37", + "id": "35", "metadata": {}, "outputs": [], "source": [ @@ -646,7 +644,7 @@ }, { "cell_type": "markdown", - "id": "38", + "id": "36", "metadata": {}, "source": [ "The `PiecewisePolynomialParamValue` class is used to represent the values of a piecewise\n", @@ -668,7 +666,7 @@ { "cell_type": "code", "execution_count": null, - "id": "39", + "id": "37", "metadata": {}, "outputs": [], "source": [ @@ -699,7 +697,7 @@ }, { "cell_type": "markdown", - "id": "40", + "id": "38", "metadata": {}, "source": [ "### Raw params\n", @@ -719,7 +717,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41", + "id": "39", "metadata": {}, "outputs": [], "source": [ @@ -729,7 +727,7 @@ { "cell_type": "code", "execution_count": null, - "id": "42", + "id": "40", "metadata": {}, "outputs": [], "source": [ @@ -738,7 +736,7 @@ }, { "cell_type": "markdown", - "id": "43", + "id": "41", "metadata": {}, "source": [ "We modify it by increasing the income exempt from any income tax (upper threshold of the\n", @@ -748,7 +746,7 @@ { "cell_type": "code", "execution_count": null, - "id": "44", + "id": "42", "metadata": {}, "outputs": [], "source": [ @@ -791,7 +789,7 @@ }, { "cell_type": "markdown", - "id": "45", + "id": "43", "metadata": {}, "source": [ "## Modifying Parameter Functions\n", @@ -814,7 +812,7 @@ { "cell_type": "code", "execution_count": null, - "id": "46", + "id": "44", "metadata": {}, "outputs": [], "source": [ @@ -823,7 +821,7 @@ }, { "cell_type": "markdown", - "id": "47", + "id": "45", "metadata": {}, "source": [ "Let's look at a reform that modifies the tax deduction for children by adding the\n", @@ -850,7 +848,7 @@ { "cell_type": "code", "execution_count": null, - "id": "48", + "id": "46", "metadata": {}, "outputs": [], "source": [ @@ -870,7 +868,7 @@ }, { "cell_type": "markdown", - "id": "49", + "id": "47", "metadata": {}, "source": [ "As before, we create a copy of the status quo environment and replace the old function\n", @@ -880,7 +878,7 @@ { "cell_type": "code", "execution_count": null, - "id": "50", + "id": "48", "metadata": {}, "outputs": [], "source": [ @@ -901,7 +899,7 @@ }, { "cell_type": "markdown", - "id": "51", + "id": "49", "metadata": {}, "source": [ "## Modifying Column Objects\n", @@ -964,7 +962,7 @@ { "cell_type": "code", "execution_count": null, - "id": "52", + "id": "50", "metadata": {}, "outputs": [], "source": [ @@ -992,8 +990,10 @@ ") -> float:\n", " \"\"\"Individual child allowance.\"\"\"\n", " if familie__anzahl_kinder_fg >= min_anzahl_kinder_für_kinderfreibetrag:\n", - " return kinderfreibetrag_pro_kind_y * anzahl_kinderfreibeträge\n", - " return 0.0\n", + " out = kinderfreibetrag_pro_kind_y * anzahl_kinderfreibeträge\n", + " else:\n", + " out = 0.0\n", + " return out\n", "\n", "\n", "# Step 4: Add the new parameter and function to the policy environment\n", @@ -1017,7 +1017,7 @@ }, { "cell_type": "markdown", - "id": "53", + "id": "51", "metadata": {}, "source": [] } From 24733e2afb3e0df262fe58894dd0ac5367b07eba Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Fri, 25 Jul 2025 10:55:41 +0200 Subject: [PATCH 106/109] Review comments, need to comment geburtsjahr back in once TTSIM is ready. --- docs/how_to_guides/index.md | 7 +++ ...odifications_of_policy_environments.ipynb} | 46 ++++++++++++------- pyproject.toml | 2 +- 3 files changed, 37 insertions(+), 18 deletions(-) rename docs/how_to_guides/{modify_taxes_and_transfers.ipynb => modifications_of_policy_environments.ipynb} (95%) diff --git a/docs/how_to_guides/index.md b/docs/how_to_guides/index.md index 84e1b24afb..113cf84963 100644 --- a/docs/how_to_guides/index.md +++ b/docs/how_to_guides/index.md @@ -4,3 +4,10 @@ How-to guides provide detailed explanations on how to accomplish specific tasks with GETTSIM. + +```{toctree} +--- +maxdepth: 1 +--- +modifications_of_policy_environments +``` diff --git a/docs/how_to_guides/modify_taxes_and_transfers.ipynb b/docs/how_to_guides/modifications_of_policy_environments.ipynb similarity index 95% rename from docs/how_to_guides/modify_taxes_and_transfers.ipynb rename to docs/how_to_guides/modifications_of_policy_environments.ipynb index db0f150e54..d96d39029e 100644 --- a/docs/how_to_guides/modify_taxes_and_transfers.ipynb +++ b/docs/how_to_guides/modifications_of_policy_environments.ipynb @@ -19,7 +19,7 @@ "id": "1", "metadata": {}, "source": [ - "# Modifying Taxes and Transfers\n", + "# Taxes & Transfers Objects and Modifications of the Policy Environment\n", "\n", "GETTSIM's design allows you to go beyond the depiction of the current (or historical)\n", "tax and transfer system. Analyzing counterfactual reform scenarios, ranging from small\n", @@ -647,20 +647,21 @@ "id": "36", "metadata": {}, "source": [ - "The `PiecewisePolynomialParamValue` class is used to represent the values of a piecewise\n", - "polynomial parameter. It has the following attributes:\n", + "Let's change the schedule such that any disability degree above the level of 50% gets a\n", + "flat deduction of 3000€.\n", "\n", - "- `thresholds`: An array of thresholds at which rates change or intercepts apply.\n", - "- `intercepts`: A list of intercepts at each threshold.\n", - "- `rates`: A list of rates at each threshold.\n", + "In order to instantiate a `PiecewisePolynomialParamValue`, we have a function\n", + "`get_piecewise_parameters` that takes a configuration dictionary and processes it. Here,\n", + "we define a `piecewise_constant` function on the real line with two pieces:\n", "\n", - "In this example, `rates` are always 0, i.e. it is a piecewise constant function. Let's\n", - "change the schedule such that any disability degree above the level of 30% gets a flat\n", - "deduction of 3000€.\n", + "- `0`: `-inf` to `0` with `0` as intercept\n", + "- `1`: `0` to `inf` with `3000` as intercept\n", "\n", "**Note:** Piecewise polynomial parameters must **always** be defined on the real line.\n", - "This means that the first threshold must be `-np.inf` and the last threshold must be\n", - "`np.inf`." + "**Note:** It can be complex to build the `parameter_dict` for\n", + "`get_piecewise_parameters`. For more complex schedules, take a look at the tutorial on\n", + "piecewise polynomial functions [not available yet, add link eventually; in the mean\n", + "time, look at the implementation in GETTSIM's parameter yamls (or ask for help)]." ] }, { @@ -670,14 +671,25 @@ "metadata": {}, "outputs": [], "source": [ - "from gettsim.tt import PiecewisePolynomialParam, PiecewisePolynomialParamValue\n", + "from gettsim.tt import PiecewisePolynomialParam, get_piecewise_parameters\n", "\n", "increased_behindertenpauschbetrag = PiecewisePolynomialParam(\n", - " value=PiecewisePolynomialParamValue(\n", - " thresholds=np.array([-np.inf, 0.5, np.inf]),\n", - " intercepts=np.array([0.0, 3000.0]),\n", - " rates=np.array([[0.0, 0.0]]),\n", - " ),\n", + " value=get_piecewise_parameters(\n", + " func_type=\"piecewise_constant\",\n", + " parameter_dict={\n", + " 0: {\n", + " \"lower_threshold\": \"-inf\",\n", + " \"intercept_at_lower_threshold\": 0,\n", + " },\n", + " 1: {\n", + " \"lower_threshold\": 0.5,\n", + " \"upper_threshold\": \"inf\",\n", + " \"intercept_at_lower_threshold\": 3000.0,\n", + " },\n", + " },\n", + " leaf_name=\"parameter_behindertenpauschbetrag\",\n", + " xnp=np,\n", + " )\n", ")\n", "\n", "increased_behindertenpauschbetrag_pe = copy_environment(status_quo_environment)\n", diff --git a/pyproject.toml b/pyproject.toml index 9d195e79ed..67a157a533 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -246,7 +246,7 @@ exclude = [] # All tests return None and use asserts "src/_gettsim_tests/**/*.py" = ["ANN", "S101"] # Imports not at top of cell for didactic reasons -"docs/how_to_guides/modify_taxes_and_transfers.ipynb" = ["E402"] +"docs/how_to_guides/modifications_of_policy_environments.ipynb" = ["E402"] # TODO: remove once ported nicely "outdated_docs/**/*.ipynb" = ["ALL"] From 7e7135c233791a3e47fba196282b00f8645073f3 Mon Sep 17 00:00:00 2001 From: Marvin Immesberger Date: Fri, 25 Jul 2025 10:55:41 +0200 Subject: [PATCH 107/109] Use ttsim-backend from PyPI, comment in 'geburtsjahr'. --- ...modifications_of_policy_environments.ipynb | 4 +- pixi.lock | 69 +++++++++---------- pyproject.toml | 3 +- 3 files changed, 37 insertions(+), 39 deletions(-) diff --git a/docs/how_to_guides/modifications_of_policy_environments.ipynb b/docs/how_to_guides/modifications_of_policy_environments.ipynb index d96d39029e..dec0ab8536 100644 --- a/docs/how_to_guides/modifications_of_policy_environments.ipynb +++ b/docs/how_to_guides/modifications_of_policy_environments.ipynb @@ -585,10 +585,10 @@ " ),\n", " tt_targets={\n", " \"tree\": {\n", - " # \"geburtsjahr\": None,\n", + " \"geburtsjahr\": None,\n", " \"sozialversicherung\": {\n", " \"rente\": {\"altersrente\": {\"regelaltersrente\": {\"altersgrenze\": None}}}\n", - " }\n", + " },\n", " }\n", " },\n", " policy_environment=increased_nra_by_birth_year_pe,\n", diff --git a/pixi.lock b/pixi.lock index fb10a604e7..316aa5d4da 100644 --- a/pixi.lock +++ b/pixi.lock @@ -276,7 +276,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -520,7 +520,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -764,7 +764,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -1016,7 +1016,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ docs: @@ -1306,7 +1306,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -1562,7 +1562,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -1818,7 +1818,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -2082,7 +2082,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ mypy: @@ -2364,7 +2364,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -2613,7 +2613,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -2862,7 +2862,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -3119,7 +3119,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/c1/ba/e205cd11c1c7183b23c97e4bcd1de7bc0633e2e867601c32ecfc6ad42675/types_pytz-2025.2.0.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl @@ -3400,7 +3400,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/33/d3e0779d5c58245e7370c98eb969275af6b7a4a5aec3b97cbf85f09ad328/simplejson-3.20.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -3643,7 +3643,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/71/c7/1970916e0c51794fff89f76da2f632aaf0b259b87753c88a8c409623d3e1/simplejson-3.20.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -3886,7 +3886,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/0d/98cc5909180463f1d75fac7180de62d4cdb4e82c4fef276b9e591979372c/simplejson-3.20.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -4137,7 +4137,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/01/85/b52f24859237b4e9d523d5655796d911ba3d46e242eb1959c45b6af5aedd/simplejson-3.20.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py312: @@ -4416,7 +4416,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -4659,7 +4659,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -4902,7 +4902,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -5153,7 +5153,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313: @@ -5431,7 +5431,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-64: @@ -5675,7 +5675,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -5919,7 +5919,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ed/20/f2b7ac96a91cc5f70d81320adad24cc41bf52013508d649b1481db225780/plotly-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -6171,7 +6171,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-cuda: @@ -6468,7 +6468,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-jax: @@ -6751,7 +6751,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ osx-arm64: @@ -7000,7 +7000,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ win-64: @@ -7257,7 +7257,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: ./ py313-metal: @@ -7513,7 +7513,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/65/44/bb509c3d2c0b5a87e7a5af1d5917a402a32ff026f777a6d7cb6990746cbb/tabcompleter-1.4.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl + - pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba - pypi: https://files.pythonhosted.org/packages/8d/96/04e7b441807b26b794da5b11e59ed7f83b2cf8af202bd7eba8ad2fa6046e/wadler_lindig-0.1.7-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl - pypi: ./ @@ -9423,10 +9423,8 @@ packages: timestamp: 1750744808182 - pypi: ./ name: gettsim - version: 0.7.1.dev194+g8e4069ef.d20250724 - sha256: 6451c41d47a4e19d10d4f886fe0f3bf4a8d6620ea439d39d59fde9742bbd5a5c - requires_dist: - - ttsim-backend + version: 0.7.1.dev198+g24733e2af.d20250725 + sha256: 7b2bf0abe790c3334fd5fe0df40f61ea125bb90481effa08023b59414e55903d requires_python: '>=3.11' editable: true - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.2-h4833e2c_0.conda @@ -17743,10 +17741,9 @@ packages: - pkg:pypi/traitlets?source=hash-mapping size: 110051 timestamp: 1733367480074 -- pypi: https://files.pythonhosted.org/packages/6f/58/a2b7922cd228104130c1236937d5171c52baecddac68b917a65b35cd1843/ttsim_backend-1.0a1-py3-none-any.whl +- pypi: git+https://github.com/ttsim-dev/ttsim.git?branch=main#e10fd6d189dfed950ac48862e7e1f1a7b7493dba name: ttsim-backend - version: 1.0a1 - sha256: 7d7446faeb90d980dd0b50ba0f7d1fbd441bf5a8c76b08c1911fb719b992d78f + version: 1.0a2.dev8+ge10fd6d1 requires_dist: - dags>=0.4.1 - ipywidgets diff --git a/pyproject.toml b/pyproject.toml index 67a157a533..a2c54c3c1a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ classifiers = [ ] # Dependencies and requirements requires-python = ">=3.11" -dependencies = ["ttsim-backend"] +# dependencies = ["ttsim-backend"] [project.urls] @@ -112,6 +112,7 @@ toml = "*" # -------------------------------------------------------------------------------------- [tool.pixi.pypi-dependencies] +ttsim-backend = { git = "https://github.com/ttsim-dev/ttsim.git", branch = "main" } gettsim = {path = ".", editable = true} jaxtyping = ">=0.3.2" kaleido = ">=1.0.0" From 8dacd671a07c2b8b9ff36965b69873be1473de9b Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Fri, 25 Jul 2025 15:13:53 +0200 Subject: [PATCH 108/109] Move interface playground to docs (tutorial / simple example). --- docs/gettsim_developer/hh_concepts.md | 26 ++-- ...modifications_of_policy_environments.ipynb | 36 +++--- docs/tutorials/index.md | 7 ++ .../tutorials/simple_example.ipynb | 113 ++++++++---------- 4 files changed, 90 insertions(+), 92 deletions(-) rename sandbox/interface-playground.ipynb => docs/tutorials/simple_example.ipynb (85%) diff --git a/docs/gettsim_developer/hh_concepts.md b/docs/gettsim_developer/hh_concepts.md index 41ebe84170..0a9c0d58a5 100644 --- a/docs/gettsim_developer/hh_concepts.md +++ b/docs/gettsim_developer/hh_concepts.md @@ -59,65 +59,65 @@ The units are: ## Kindergeld -#### Description +### Description - Only one parent receives child allowances (specified via `kindergeld__p_id_empfänger`) - Relevant for alimony payment of the other parent, if separate -#### Pointers +### Pointers - `kindergeld__p_id_empfänger` (exogenous) ## Kinderzuschlag -#### Description +### Description - Paid out on Bedarfsgemeinschaft level - Parents outside of Bedarfsgemeinschaft (e.g. not in the same household) are not considered (besides of Unterhalts(vorschuss)zahlungen) -#### Aggregation unit +### Aggregation unit - `arbeitslosengeld_2__bg_id` (endogenous) -#### Pointers +### Pointers - `arbeitslosengeld_2__p_id_einstandspartner`, `familie__p_id_elternteil_1`, `familie__p_id_elternteil_2` (exogenous) ## Elterngeld -#### Description +### Description - Parents and their children - Number of months parents can claim Elterngeld is capped (both individually and sum over parents). -#### Pointers +### Pointers - `familie__p_id_elternteil_1`, `familie__p_id_elternteil_2` (exogenous) ## Unterhalt / Unterhaltsvorschuss -#### Description +### Description - Parents and their children - Parents necessarily in different households (different `hh_id`) -#### Pointers +### Pointers - `kindergeld__p_id_empfänger` (exogenous) ## Pflegeversicherung -#### Description +### Description - Contribution depends on the number of children and their ages (since July 2023) - Parents and their children - Can be in different households - No reference to age categories of children -#### Pointers +### Pointers - `familie__p_id_elternteil_1`, `familie__p_id_elternteil_2` (exogenous) @@ -125,7 +125,7 @@ The units are: ### Grundrente -#### Description +### Description - Couples that are married or in a civil union @@ -144,7 +144,7 @@ The units are: - Couples that were married or in a civil union - Not implemented yet -#### Aggregation unit +### Aggregation unit - `familie__ehe_id` (endogenous) diff --git a/docs/how_to_guides/modifications_of_policy_environments.ipynb b/docs/how_to_guides/modifications_of_policy_environments.ipynb index dec0ab8536..f0622123bd 100644 --- a/docs/how_to_guides/modifications_of_policy_environments.ipynb +++ b/docs/how_to_guides/modifications_of_policy_environments.ipynb @@ -1,22 +1,8 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "0", - "metadata": {}, - "outputs": [], - "source": [ - "from __future__ import annotations\n", - "\n", - "import numpy as np\n", - "\n", - "from gettsim import InputData, MainTarget, copy_environment, main" - ] - }, { "cell_type": "markdown", - "id": "1", + "id": "0", "metadata": {}, "source": [ "# Taxes & Transfers Objects and Modifications of the Policy Environment\n", @@ -36,7 +22,7 @@ }, { "cell_type": "markdown", - "id": "2", + "id": "1", "metadata": {}, "source": [ "## Status Quo\n", @@ -67,8 +53,22 @@ "\n", "### Getting Started\n", "\n", - "The first step in modifying taxes and transfers is to create the base policy\n", - "environment for the date you want to work with." + "After the standard imports, the first step in modifying taxes and transfers is to create\n", + "the base policy environment for the date you want to work with." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import annotations\n", + "\n", + "import numpy as np\n", + "\n", + "from gettsim import InputData, MainTarget, copy_environment, main" ] }, { diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 3f4487c28c..e8371d0235 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -3,3 +3,10 @@ # Tutorials Tutorials help you to get started with GETTSIM. + +```{toctree} +--- +maxdepth: 1 +--- +simple_example +``` diff --git a/sandbox/interface-playground.ipynb b/docs/tutorials/simple_example.ipynb similarity index 85% rename from sandbox/interface-playground.ipynb rename to docs/tutorials/simple_example.ipynb index 0b7c5ebc57..f3b3d93e9b 100644 --- a/sandbox/interface-playground.ipynb +++ b/docs/tutorials/simple_example.ipynb @@ -1,41 +1,24 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "import pandas as pd\n", + "# Introductory example\n", "\n", - "# Please ignore the import location for now; will be from gettsim in the future\n", - "from gettsim import InputData, MainTarget, TTTargets, main, tt" + "In this notebook, we compute income taxes and social security contributions for example\n", + "data." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ - "# Prototypes of GETTSIM's new interface\n", - "\n", - "[GEP 7](https://gettsim--855.org.readthedocs.build/en/855/geps/gep-07.html) discusses\n", - "the principles of the new interface. This notebook allows you to play around with it.\n", - "\n", - "In this notebook, we compute income taxes and social security contributions for example\n", - "data.\n", - "\n", - "## Setup\n", - "\n", - "This notebook requires to have GETTSIM installed in its current development version.\n", - "\n", - "To do this:\n", - "\n", - "1. Clone the GETTSIM repository.\n", - "2. [Install](https://pixi.sh/latest/#installation) the pixi package manager on your system.\n", - "3. In your shell, navigate (cd) to the GETTSIM repository and run `git checkout gep-07`.\n", - "4. Start the notebook with `pixi run jupyter-notebook` and open `interface-playground.ipynb`.\n", + "import pandas as pd\n", "\n", - "If you have trouble with the setup, please reach out." + "from gettsim import InputData, MainTarget, TTTargets, copy_environment, main, tt" ] }, { @@ -53,7 +36,8 @@ "The key sequences of the nested dictionary below are the paths GETTSIM will use as\n", "targets. For instance, via the path `einkommensteuer` and `betrag_m_sn`, we request the\n", "amount of income tax to be paid monthly at the Steuernummer level. *Note: Of course, the\n", - "income tax is paid annually, but GETTSIM will do the conversion for you.*\n", + "income tax is paid annually and calculated at that level, but GETTSIM will do the\n", + "conversion for you.*\n", "\n", "The values on the lowest level of the dictionaries (called leaves) will be used as the\n", "column names of the resulting DataFrame. Here, `income_tax_m` will be the name of the\n", @@ -101,7 +85,7 @@ "`gettsim.main`.\n", "\n", "Because we are interested social insurance contributions paid when being in regular\n", - "employment, we are not interested in retirees or households dependent on social\n", + "employment, we are not interested in retirees or households which depend on social\n", "assistance. We can override these transfers when requesting the template. This removes\n", "the input data needed to compute these transfers from the template." ] @@ -115,9 +99,7 @@ "main(\n", " main_target=MainTarget.templates.input_data_dtypes,\n", " policy_date_str=\"2025-01-01\",\n", - " tt_targets=TTTargets(\n", - " tree=TT_TARGETS,\n", - " ),\n", + " tt_targets=TTTargets(tree=TT_TARGETS),\n", " input_data=InputData.tree(\n", " {\n", " \"p_id\": pd.Series([0]),\n", @@ -190,12 +172,10 @@ "source": [ "Next, we define a mapping from GETTSIM's expected input structure to your data. Note\n", "that the paths are the union of the input_data for `main` and the result from calling it\n", - "above. Just the leaves are different; we have replaced the dtype hints by the column\n", - "names in the data. \n", + "above (with `main_target=MainTarget.templates.input_data_dtypes`). \n", "\n", - "In practice, you would probably want to save the template above to disk (e.g. as a yaml\n", - "file) and edit it there. Then you can read in the file and use its content as the\n", - "mapper." + "Just the leaves are different; we have replaced the dtype hints by the column names in\n", + "the data." ] }, { @@ -235,7 +215,9 @@ " },\n", " },\n", " \"abzüge\": {\n", - " \"beitrag_private_rentenversicherung_m\": \"contribution_to_private_pension_insurance\", # noqa: E501\n", + " \"beitrag_private_rentenversicherung_m\": (\n", + " \"contribution_to_private_pension_insurance\"\n", + " ),\n", " \"kinderbetreuungskosten_m\": \"childcare_expenses\",\n", " \"p_id_kinderbetreuungskostenträger\": \"person_that_pays_childcare_expenses\",\n", " },\n", @@ -287,6 +269,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "In practice, you would probably want to save the template above to disk (e.g. as a yaml\n", + "file) and edit it there. Then you can read in the file and use its content as the\n", + "mapper.\n", "\n", "Note: When writing and reading the template to your disk, don't forget to allow for\n", "unicode characters. This is important because many transfers have Umlaute in their\n", @@ -309,11 +294,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Using GETTSIM's interface\n", + "## Calculating taxes and transfers\n", "\n", "Just as for taxes and transfers, GETTSIM's `main` function is powered by a DAG. This\n", - "comes with the advantages that seasoned GETTSIM users already know from the taxes and\n", - "transfers part:\n", + "comes with the advantages that seasoned GETTSIM users already know from the DAG\n", + "representing the taxes and transfers system:\n", "- Users can select any part of the DAG as a target. This means that users can access\n", " any intermediate objects.\n", "- Users can feed any part of the DAG as input. This means that users can overwrite\n", @@ -326,7 +311,7 @@ "data. In a second example, we manipulate the policy environment to see why the interface\n", "DAG is useful.\n", "\n", - "### Simple computation of taxes and transfers\n", + "### Simple computation\n", "\n", "Let's calculate taxes and transfers first:" ] @@ -344,9 +329,7 @@ " mapper=MAPPER,\n", " ),\n", " main_target=MainTarget.results.df_with_mapper,\n", - " tt_targets=TTTargets(\n", - " tree=TT_TARGETS,\n", - " ),\n", + " tt_targets=TTTargets(tree=TT_TARGETS),\n", " include_warn_nodes=False,\n", ")\n", "result.T" @@ -359,7 +342,7 @@ "### Manipulating the policy environment\n", "\n", "First, we obtain the policy environment for the policy date we're interested in. Similar\n", - "to above, we have to call the `main` function." + "to above, we call the `main` function." ] }, { @@ -368,7 +351,7 @@ "metadata": {}, "outputs": [], "source": [ - "policy_environment = main(\n", + "status_quo = main(\n", " policy_date_str=\"2025-01-01\",\n", " main_target=MainTarget.policy_environment,\n", ")" @@ -378,8 +361,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we slightly modify the policy environment. In this simple example, we increase the\n", - "contribution rate of the public pension insurance by 1 percentage point.\n", + "Let us modify the policy environment by increasing the contribution rate of the public\n", + "pension insurance by 1 percentage point. \n", + "\n", + "The first step is to create a copy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "increased_rate = copy_environment(status_quo)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", "The contribution rate is a `ScalarParam` object:" ] @@ -390,7 +390,7 @@ "metadata": {}, "outputs": [], "source": [ - "type(policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"])" + "type(status_quo[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"])" ] }, { @@ -406,10 +406,8 @@ "metadata": {}, "outputs": [], "source": [ - "old_beitragssatz = policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\n", - " \"beitragssatz\"\n", - "]\n", - "policy_environment[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"] = (\n", + "old_beitragssatz = status_quo[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"]\n", + "increased_rate[\"sozialversicherung\"][\"rente\"][\"beitrag\"][\"beitragssatz\"] = (\n", " tt.ScalarParam(value=old_beitragssatz.value + 0.01)\n", ")" ] @@ -430,7 +428,7 @@ "result = main(\n", " main_target=MainTarget.results.df_with_mapper,\n", " policy_date_str=\"2025-01-01\",\n", - " policy_environment=policy_environment,\n", + " policy_environment=increased_rate,\n", " input_data=InputData.df_and_mapper(\n", " df=DATA,\n", " mapper=MAPPER,\n", @@ -442,13 +440,6 @@ ")\n", "result.T" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 056cfb4bbdb956322e510ebaa476ffd1b703f283 Mon Sep 17 00:00:00 2001 From: Hans-Martin von Gaudecker Date: Fri, 25 Jul 2025 15:16:06 +0200 Subject: [PATCH 109/109] Changelog. --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 6a457c625c..65adc84e38 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,9 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi ## Unpublished +- {gh}`1054` DOC: Simple example and comprehensive how-to notebook + ({ghuser}`MImmesberger`) + - {gh}`804` The PR that has been collecting all changes over the past 7 months, which have been listed individually.